From d851519e70081568145392c5189ee3a3c81c6cdd Mon Sep 17 00:00:00 2001 From: Poor12 Date: Tue, 20 Jun 2023 15:33:57 +0800 Subject: [PATCH] add preemption proposal Signed-off-by: Poor12 --- .../scheduling/policy-preemption/README.md | 322 ++++++++++++++++++ .../policy-preemption/preemption_process.PNG | Bin 0 -> 49143 bytes .../policy-preemption/priority_update.PNG | Bin 0 -> 11537 bytes 3 files changed, 322 insertions(+) create mode 100644 docs/proposals/scheduling/policy-preemption/README.md create mode 100644 docs/proposals/scheduling/policy-preemption/preemption_process.PNG create mode 100644 docs/proposals/scheduling/policy-preemption/priority_update.PNG diff --git a/docs/proposals/scheduling/policy-preemption/README.md b/docs/proposals/scheduling/policy-preemption/README.md new file mode 100644 index 000000000000..7c0d1b087e90 --- /dev/null +++ b/docs/proposals/scheduling/policy-preemption/README.md @@ -0,0 +1,322 @@ +--- +title: PropagationPolicy Priority and Preemption + +authors: +- "@Poor12" + +reviewers: +- "@RainbowMango" +- "@GitHubxsy" +- "@chaunceyjiang" +- "@Garrybest" +- "@wangyuan249" +- "@whitewindmills" + + +creation-date: 2023-06-19 + +--- + +# PropagationPolicy Priority and Preemption + +## Summary + +Currently, `PropagationPolicy` and `ClusterPropagationPolicy` already have a notion of priority. If multiple PropagationPolicies match the workload, Karmada will select the one with the highest priority. However, the priority only takes effect during the first matching of the resource template. Once a resource template is selected by a PropagationPolicy, it can not be preempted by a subsequent PropagationPolicy even it has higher priority. + +```yaml +apiVersion: policy.karmada.io/v1alpha1 +kind: PropagationPolicy +metadata: + name: propagation-high-explicit-priority +spec: + resourceSelectors: + - apiVersion: apps/v1 + kind: Deployment + labelSelector: + matchLabels: + app: nginx + priority: 2 #priority indicates the importance of a policy + placement: + clusterAffinity: + clusterNames: + - member1 +``` + +This proposal proposes a strategy which allows policies to support preemption by priority at runtime. +Even if workloads have been propagated by a policy, they can be preempted by a high priority of policy. + +## Motivation + +Cluster administrators usually cannot foresee future expansion scenarios when configuring policies. +They will usually start with a broad policy to set the base strategy. When an application requires special configuration, +the administrator wants to provide a persionalized policy to take over the application. +At this time, it hopes that the high-priority policy can preempt the low-priority policy. + +### Goals + +- Extend the API of PropagationPolicy/ClusterPropagationPolicy to allow high-priority policies to preempt low-priority policies. +- Propose the implementation ideas for involved components, including `karmada-controller-manager`. +- Propose a solution that is compatible with previous versions. The preemption capability will be disabled by default, +upgrading the system from the previous version to the new one will not result in any changes in behavior and will not require any additional adaptation work. + +### Non-Goals + +## Proposal + +### User Stories (Optional) + +#### As a cluster administrator, I hope that the high-priority propagationPolicy can preempt the low-priority propagationPolicy. + +As a cluster administrator, I am responsible for unified management of multi-cluster scheduling policies. +Workloads are responsible for each business team. For the current businesses under the same namespace, I deploy a generic policy to match all. +At some point, I want to change the scheduling strategy of one of the businesses, so I create a higher-priority policy. +I hope that the high-priority policy can preempt the low-priority policy. + +#### As a cluster administrator, I hope that the propagationPolicy can match resources that have been matched by clusterPropagationPolicy under the same namespace. + +As a cluster administrator, I am responsible for unified management of multi-cluster scheduling policies. +Workloads are responsible for each business team. For the current business, I deploy a cpp to match all namespace-scoped resources. +At some point, I want to change the scheduling strategy of one of the businesses under one of namespaces, so I create a pp to match it only. +I hope that the propagationPolicy can match it that have been matched by clusterPropagationPolicy. + +### Risks and Mitigations + +This proposal maintains the backward compatibility, the system built with previous +versions of Karmada can be seamlessly migrated to the new version. +The previous configurations(yamls) could be applied to the new version of Karmada and +without any behavior change. + +### Notes/Constraints/Caveats (Optional) + +Ref to https://github.com/karmada-io/karmada/pull/3684#issuecomment-1645075275 + +#### Feature gate + +This feature is an experimental feature, so we add a feature gate to control the global enablement. + +#### Details about priority + +The priority based on preemption do not include implicit priority when `.spec.priority` of policies are the same. + +For example, the following two policies do not preempt. + +``` +# labelselectormatch.yaml +apiVersion: policy.karmada.io/v1alpha1 +kind: PropagationPolicy +metadata: + name: propagation-labelselectormatch +spec: + resourceSelectors: + - apiVersion: apps/v1 + kind: Deployment + labelSelector: + matchLabels: + app: nginx + placement: + clusterAffinity: + clusterNames: + - member2 +--- +# namematch.yaml +apiVersion: policy.karmada.io/v1alpha1 +kind: PropagationPolicy +metadata: + name: propagation-namematch +spec: + resourceSelectors: + - apiVersion: apps/v1 + kind: Deployment + name: nginx + placement: + clusterAffinity: + clusterNames: + - member3 +``` +And when preemption is enabled, pp will preempt cpp regardless of the priority if they both match a namespace-scoped resource. + +**Note**: pp will not preempt cluster-scoped resources which are matched by cpp because it cannot match them. + +Overall priority: high-priority pp > low-priority pp > high-priority cpp > low-priority cpp + +#### Clarify the scope of preemption + +Preemption is a dangerous operation that easily lead to unexpected consequences. And we do facing the scalability challenges during the implementation, such as we need to list all resource templates +during response to preemption. This will have a significant impact on system performance. + +Moreover, most of the user cases are that users want to use a pp to preempt a certain resource. In that case, the resource is often specific and can be specifically declared in the pp. + +``` +apiVersion: policy.karmada.io/v1alpha1 +kind: PropagationPolicy +metadata: + name: foo +spec: + resourceSelectors: + - apiVersion: apps/v1 + kind: Deployment + name: nginx +``` + +So we narrow down the scope of preemption by introducing a restriction: `for pp, the name in ResourceSelector must be specified; +for cpp, the namespace/name for namespace-scoped resources and the name for cluster-scoped resources must be specific`. + +#### Corner cases + +For the update of priority, if the priority becomes larger, the above process meets our needs. +On the contrary, assume that there are two policies which match the same resource template, one disables preemption and its priority is 5. Another one enables preemption and its priority is 4. Currently the resource template use the policy with priority 5. However when we update the priority from 5 to 3, users hope that the second policy can preempt this resource template. + +![priority_update](priority_update.PNG) + +In order to solve this problem, when the priority of the policy drops from A to B, we need to ensure that policies with priority in the range (B, A] have a preemptive trigger. + +It can be split into two sub-problems: +* How to identify changes in priority? One optional way is via updateEvent. The disadvantage is that a large amount of calculation will affect the performance of `list-watch`. Another optional way is via webhook. +The disadvantage is that we need to add an extra annotation on the policy +* How to determine which policies need to queued? One optional way is to maintain a inner map which represents the relationship of resource templates and policies. +The key might be policies which enable preemption while the value might be the matched resource templates. + +## Design Details + +### API change + +#### PropagationPolicy API change + +This proposal proposes a new field `Preemption` for determining the behavior for preempting. +By default, preemption is disabled. + +```go +type PropagationSpec struct { + // +kubebuilder:default=0 + Priority *int `json:"priority,omitempty"` + + // Preemption declares the behaviors for preempting. + // Valid options are Always and Never. + // + // +kubebuilder:default="Never" + // +kubebuilder:validation:Enum=Always;Never + // +optional + Preemption PreemptionBehavior `json:"preemption,omitempty"` +} +``` + +```go +// PreemptionBehavior describes whether and how to preempt resources that are +// claimed by lower-priority PropagationPolicy(ClusterPropagationPolicy). +// +enum +type PreemptionBehavior string + +const ( + // PreemptAlways means that preemption is allowed. + // + // If it is applied to a PropagationPolicy, it can preempt any resource as + // per Priority, regardless of whether it has been claimed by a PropagationPolicy + // or a ClusterPropagationPolicy, as long as it can match the rules defined + // in ResourceSelector. In addition, if a resource has already been claimed by a + // ClusterPropagationPolicy, the PropagationPolicy can still preempt it + // without considering Priority. + // + // If it is applied to a ClusterPropagationPolicy, it can only preempt from + // ClusterPropagationPolicy, and from PropagationPolicy is not allowed. + PreemptAlways PreemptionBehavior = "Always" + + // PreemptNever means that a PropagationPolicy(ClusterPropagationPolicy) never + // preempts resources. + PreemptNever PreemptionBehavior = "Never" +) +``` + +For example, assume that policy `nginx-propagation` has bound workload `nginx`: + +```yaml +apiVersion: policy.karmada.io/v1alpha1 +kind: PropagationPolicy +metadata: + name: nginx-propagation +spec: + resourceSelectors: + - apiVersion: apps/v1 + kind: Deployment + name: nginx + priority: 2 + placement: + clusterAffinity: + clusterNames: + - member1 + - member2 +``` + +```yaml +apiVersion: work.karmada.io/v1alpha2 +kind: ResourceBinding +metadata: + labels: + propagationpolicy.karmada.io/name: nginx-propagation + propagationpolicy.karmada.io/namespace: default + name: nginx-deployment + namespace: default +``` + +Assume that there is a high-priority policy which allows preepmtion: + +```yaml +apiVersion: policy.karmada.io/v1alpha1 +kind: PropagationPolicy +metadata: + name: nginx-propagation-preemption +spec: + resourceSelectors: + - apiVersion: apps/v1 + kind: Deployment + name: nginx + priority: 3 + preemption: Always + placement: + clusterAffinity: + clusterNames: + - member3 +``` + +`nginx-propagation-preemption` will preempt `nginx-propagation` and the deployment will be scheduled to `member3`. + +### Components change + +#### karmada-controller-manager + +Currently, when a new policy creates/updates, `detector` will first check whether existing objects are no longer matched by the current policy to handle the changes of `resourceSelectors`. If yes, clean the labels on the unmatched object. Then it will find the corresponding ResourceBinding and make sure that PropagationPolicy's updates can be synchronized to ResourceBinding. Finally, it will try to find the matched resource templates which have not been scheduled. + +To allow preemption, Karmada needs to record the mapping relationship between policies and resource templates. + +Here are some optional implementations: + +1. A inner data structure, such as `Map`. + +2. Directly record it as a label/annotation, we already have some labels to record the metadata of policy bound to the resource, such as `propagationpolicy.karmada.io/name` and `propagationpolicy.karmada.io/namespace`. + +For example, `propagationpolicy.karmada.io/priority`. + +3. Get the priority by using client-go `Get` to fetch the policy object + +Consider that we have strictly defined the resource object of preemption, getting the policy from the cache has little performance overhead. So we ended up using option 3. + +Also, we need to add a preemption logic. The overall process is shown in the picture below. + +![preemption_process](preemption_process.PNG) + +For each preemption operation, the component needs to have a corresponding metrics record. For metrics, we will record the total number of times +a resource template is preempted. And we will use events to reflect the details of each preemption operation. + +For example, preemption_counts_total{namespace=default, name=nginx} 4. + +#### karmada-webhook + +Since we have strictly defined the resource object of preemption, so the webhook should perform extra +validation work to prevent misleading configuration. + +### Test Plan + +- All current testing should be passed, no break change would be involved by this feature. +- Add new E2E tests to cover the feature, the scope should include: + * preemption between high-priority pp/cpp and low-priority pp/cpp + * preemption between pp and cpp + * preemption is disabled. diff --git a/docs/proposals/scheduling/policy-preemption/preemption_process.PNG b/docs/proposals/scheduling/policy-preemption/preemption_process.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c5e0dc36ce07a2c7a69242596e68ce8e57e088f4 GIT binary patch literal 49143 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 literal 0 HcmV?d00001 diff --git a/docs/proposals/scheduling/policy-preemption/priority_update.PNG b/docs/proposals/scheduling/policy-preemption/priority_update.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9703070971cf2586d67fd0cc2c2990c77403e5a0 GIT binary patch literal 11537 zcmd^lcT`hbx9gn$AH z(o0a0qI3dCSB&%yp#%bV#dE&*-nnDEzwWqWeD7VyU^sTxUUSVg*DSyJTl*QpSeJ+M zFed~-Joy-bHe4+p&UY zj)!^{?hwTLiSftOh$7lUkaV`bwg%G6W^Q;Bcl7h{#1h@CcWag}Qk4C{L3=UqFEA=3 z>VgaN5hfenu=~t=H3BMxp8779+*G_(CtP;yARG6$n}Ja+EQ)>Vx7-KK173a5i`%m= z#?Td0TvR#JG+!{^oYXe$M-qo29IxHDc3`w++tAabeHQ`r;pK-xP=H`C*wObr1ZD`j zpg{yb8~@MxnLBoFQ0>NzoAf&+8yyloyNPfs%+%Ma;@)ipISz2Vl#tnL`h$^8;@;7m`@?t&<`>pg^%qDp#}EPOnX&8n`#7?fR*)8gB) zDs@(nsiV*ztTs}+u zq#xB}4P|3d%hUYt5#8{eedm$F#d8^#-M&tiTg)}pn`^x+AIU|xl&n%b_rd;Bt2Q`% z_R_tRjSUG&XJv5LMiF*ZaF-X6m;2rj4ohTq7PCbnn0_n0D35%~q0oEq>PtDLcjCba zIXG;vqQ({1`M||xq}rlpW9<2Kn(zG82|TuzHoV~P*b9An39R%3MSR+1GBSm)r2eGH z#DqGvCNF6x84{Znr=FD@gtZJujmI2qoRvUpp0jIoX@1w$9*KWlCg;+xuj*@)h?%M4 zy5l5HABdp}-pPx8KlSR(1TtL_zP+eLrQl5Rj-aZqTDvu$aN1n{HNEjO@`mm)&p$6xqO{0Z zzs=V>q2XlhL+s(msHQy;_FcyLN`h_={EfrHHxfcRqLr`vFvri~Fj9?QL{+GV&rLY> zD&1&^Ol~y(s6C@CKara9VCJ3m67`i<-z`bP*w09{>xH$nyxNtAy%vtST70U=xr&Lj zr5R%x-`RJ%?$M3dofUj*TELIX#DKC==l+a&(yqVfe8of_E0^$ow)yR45@~EHHQa&N zWK?hYD5Jd~e)FQwONYiO{k|QXUv;DxZb-SgesrkT>&@7X>BRNDfAqV*%a31iog;ms z-Z#MeO4A3}b*87WI}91*~=O=xSz>;v@m+oiV z-YBYXKW&_s!7nMj>)IR|(yO?MIS~1(OeUDK*vL&voFqBu$b99^1j26Kb$=v|=d_tj zg;}&0C0dtUR!hwv-~9DSyDM&|Q2I*znQLlW{q3v65!l_WQ3q7r;&Ei%k>$0}AyeZ~ zW1CXv#LBtSLGsoD303MOtF~xT^BCvg6Vq`14tioZa%N>JJD%W z2b4Np0Cx7F3VI${Hsp3?r7d_H?csr}p|1@(Ja^mX7J6jmlR*|lJGe!Z-ZySo(#Bg9 zO0D!xaCQ;I`>_|ZzC8&|8~SzQyu4j@BcgNMJl`zQnRt(66ZUebHpjGVz=uxl>&eYY z%gZ*w7d$YJlSDRo9&mFU3prqexMA%XdvURjC3#T)cm)Wlp3$8(rJ7?1MhYXV?JV(m zw#YS}XYczeOS*|YSRe|**S<(kcu?{X`*ZsvgTq0qwMC-HmQc=Ul>(RLR#u#OAwknV zGM3|%wU!Re(`w#p(%sozs@`YEEXUcU`B;g2o3d_eigI^#n?Q-%FN0#m2h{1FX%H%H zd!o5ys}Y#R59|(H>HZ*vCG^?&8qJlB`um(!-Cq3Eb49kszIWAek?=8OOnX67PCETS zO>f+upI^^Z8P0*6J)NEGdM^L5C}uU9SKN25Bz~T2-#OPB>UH|-JoRCaO!;L=+eIP| z@AAhEHVl@blpfG@iT9+iWlS~GWu+9Qgb~cT^$Jmbb1urvSoziFCif;HXAdgfc&|`` z8w$vgN2H)fyq)?AtQ}e@{IKvTZ860fD(^j#z2iU(qN73S#x zMBu3tWg$4e+~%$30_Ko|5eOzxBTpCor%~-UB+)X)7pEkt%~JS;k^mA|+&R{@65zBs?A z&8ks)!Ms{`wox~}3i8tiFJ9Q1Ev5!|edLfz5MJLaL=2ZLIbjsn74tnT0Y?ON)0pjz_xp|gJUBY5%?w5dpyyHfBOTU|1HZr z4Wjxrzt=LGMbcAd%du~H9rBgAG_nyeBiGB+o*;2->SWf z@3XQ!2XE0A!_>$uqsza(8eQ>Zs1#XJa;K4(PF?FFQHl-xG=%-siRyRlqmtFIwIZw8 zW8Kq0&(D1WF|xQp>@M9?6bJEfA0{xzS`<6H6q%)<4jQsDR&#f$S^jdmmE`fIFzI#& zkZiboiu$0SqTxLftedxCW3{}lkyY55suEwg(x48^#<6KIPbr-h-QCdbwv+)fOv46Z zNPOaSBY52@I^V%Pnyj#BKcx`A{6!=t-~|vuCX`ZEgo+*8d+GDhx*~G)uN|f#U}~hng;Ik?8KG0 z$-uc*rP1>;JzLm5x*^}ritw4MsOrtQ9SK8qQmGDgC0=R7)Sd5wUSBNv#c;(S(Uk{mja);_#mWXvxueOEXapSUHG zzO#Tf>GZrNwOlg1jMm5!g#!=F79xrenA?WI>G_<+siApqopr7FB|OYWqR*jLPG={a z3+B8ag?))+D^5n$_P>V`oT?trIr$sy$hTj*V;Sfq0Q)`!BB+49NGi?i<9p~}@U_?1 zr)s^19yKNkr(1&A=+#c$nLuYhzacQXXY)#S^MTt&JxYV(&S0<%R3z1>n2jG{*{l#h zvnFc_&h|tsLN1nM%n2R5qzQoj!zTzP2ueAQ1YlZfFX$0;8+s<2o*w>nfb>L%sE+=b z>69gxeX`}#lV@^02k#T#l^*d>f?v!yjO%BD`1oO(y5OZ?&RYhCFBHgn=Ot!#FXM`B zx-jjlpC1*&r{ojobT4P-s>-BI;;8xliiC#4`=G9wpA!aHY1h$T+p8Bkd~B93F?6e( z5r!QFdgMQh!f)Ia@5_>P=#^@}Z}gq^sF>6cNGQS3jGy$QS1Ou+l2h3*)xCV&*6p&z z*x;v#!1)-29ou^^efs{GDl-Cm+C8K`Tl(zr{Z|Tcm`DLwK)Ef2rFtHnO?tJPZ*lU` zu;@=0=dA~<8yEPqwyYod_G1fB=!j&O7IFzeG<~rQk3*iB@M0Z- zK4fYUn_j@CKAfgj@7H9#MKg9VjgXpZu_oQLZ5dM7-zADWHd&jPN@>)^?esYkCq4Wt z<^)850gFR8Rm~Ht4ycBOZ>I|uN+FMX=#O@4h)qis+0#N4zF%>F;OlGal8>U+>?|PP ztCIBgUE)M534m~~#05&rd({VBmA|mMAJzgT94?R10EX=l+KRCCQ&ZyxemtCrkBAw4 z*>{DOlPIF4vs_+LcrRoRk0vX_2ZjY;P#tK`$e{Q5t2qmR@~z5@N%Zpd5#MCtTg$+? z_=yZW$Nv0)tzReTC$xwGW_+rvQ6gDwYP){j%ypo%c@#2Vs5I(Ve4puL7=kG$&1;N9 zRWJ2X!=Y@}fI<=f4ZC4m6P3C1-OPrdRWPRi;KOzVAu~JA%0Pb95A33oJCzHyTOenE z?&0Bd>^J}lT&Ag4p_OJQGkaXWh*HAx|vr2xX&qd9nNDX_7^)Q3qx>Ukf%KGs>@9h zMqC|gAk2~#U6Mqy9?uQj1q&O{?sqw=(O1p7Iak4+CMY<{IdzwT_s#F2#r~qZUp?>` z0ACHcIz+)tt4fbtk@OMlE(X}caoL-5s+f^v?=#VWwcG((e=m}5<2$Fo7)1|z#?Kd@ zzEN;qMjZ<_WL&#pz(y>2(3ix}X=ii76R$d7{_}6iTRZEdLUy9Ah<80>;YLyHo2}Ut zW%s{_uk7e`4x>k1fWodj+nbf61-7J-_fU-lvaSNZvzp`cFlLvT7$#_P>FT=GNNK%2 zKkWO>WkTWWg32#Ip0!)pQaow<)qN%(U7%<)-V6?KqY)Q0I_$epQ#oqm(FqJW3B052 z1a@Z|KqWrpW0GYJV~i=Oy%F=C@y@5 zQm(%-x3h%EAHZRGj1Dsp1=APMpY2;_GCGuC{5u-bd3oU*w}#Q1%+jktU~?}bBWD7q z67EFE$w1TU@T^mq^RWD$+ zml{F1EVz>BkB3o(mD8}lhj~?I&#GRi0XAj~|Bho+yYj@*zlUpAQWqvafGDy#2aHn& zK@DZ<{JYd?= zOH{&N)7-%s&V0DvlXs1=Xm7q%&eq)6=jTRT2$0QUE0!9LP``V8;!#QvhHAHfM|zM_ zl~CXy8OA+_9(oiel5$yBm*E92qqWxSgEeadU*AK&0Dww-_fAgrLbKy(h}`)8ez(Wy zujexzrx_-~s;IMN%eP(l^d2GxRk%+~*KPs#WlRI{LN4jEd976s!19~g%~n*N>e@Fg z&_8jjm;HHizqmuHOHuPw(gTo`?w5Go&Qu}NR*)t!1{TRa48VC8s`W=~9 zS*X5a$)F=1PSe*%`+}l}2u-qGXRu5H0iytfWpB+qD6Db#>y7zucOqTbxHeI=QIktc z!Tp>8g%N5yUcVBIUk?T3ro2xQk z{^=4kf_>SOwhuO6wE+KZpL=&2BT}cwt#0IIMyP5SB`cWxCf-(S{Cc_?OdX;JaEG@y zU0!<_WysU=lYe1#Fl%Z%Gp}i+QmS-neAJc<;p6SCwK=B`8etaCLqhH%zJ5Fr_IeJF zboJ^b$PFJ0lrTXaPHyR>z z;o7|wqx)de(09-5^G}d!>#j zO(zYx3`loBxkQuk6TD42fi%|>Xky+7uAF@_!y+1TJwBL|i%n|d>HmMv&S(1^HD4-R zCO7H%01V4fTsh-&=eD7O;a0u5L>c|5)Bdz51^8hXrHig2R58zO*wo6=L)UN@y3PAm zUKVcIpLuqgK(*2g(YdD+;FEqvZu9*k$i0CL-dJ^vgZSH2Ksny2x@~@l5=e2aUNA0Z}-QVclqsRSYv2cQh$zm%4;ehcGkKH_X0JfUdKXAFQ z-6$#%5j_Z34!i#Lsnkr1+_IogG6x*n(z|E${zpZz%WFNSkO?c!^SWzCtdlRVTr%65 z@~ItH$QdZ=!%PSFqBw+v2|`TMft9o1NTd?0O|LkNO_$o7{4y(<930vklP29t8=`#U z6k1y961&`ub9GC(tv(6Y&xs_6mYm!;lk`KvpT8#UG2vsiqC5BI`lQ!1tx5SrVb#p0 zWkJwLHvQe}eU=Q*4!*vJ$Ua?E{NW~E5$9!AMs?BD3Bwb+1ySOnFt^vg^mFz5_U)}S z?usU7IjgWIe|#{t4`w;@%d>v4`2kMrZbU!TPo_`IbI0t|d;cr{I6fSYP!U|kyK1jc z$j`ec$#AWZe)O_($j~YC`oX&kmG6bO6!hC+@TZT^hkDsv{I{LKEJHX_@0MPB#jvK%IejTLAw73FkNQSEe*@Ua zq3DSdgW5A)EZ63xq?O~Fw+Q=qiSv9{n3?=LpJu>y5ZpYK z-AYo;=VppoEX0r$SDk5Uh5jX#j(R&WOv{F{{vS`W;!9Z&Gj2S_4wofu(OY(iCB+?w5U<}8_68npoGU_>k!vZ8pAe4A;9E-?djVJKSFm>HPaKcb6NH>}IehWzJx~4LCN)$-kMcH zYEv-7f9#3fJ+{fA5Iqv+ZCn0umbb7^ig6xew2jQc3tc#hR{yx&a4@4F0N43I(F&P= zn``lSnV?z!A!D=RMavF2_opL{KPo=g?NckWChE=U%6?A2?WGE(|sL%1?@|}Qg zgg~yDS}WIYh3td^4VS6qbQG5;&J14$*S;5IR#*-XGTZ*}QDN#ewc1L+(i&8>Cr46J zOnQ4BsyvJ>fBrM^`*e|R2}pM?HIq3$D{D8av!oD${*6DY+*(zj#JLr^l5g4D#mDyK z$S(AfN14HbEGC}tbMrHu*dwy=+ABw#WWDBxbMM+!7^G}vrxX^?tA%LJl!1M9gxC2t z--p5z4^SJ}e84V74 zO*>ZmN8R*<6WytMTrA=Zn|v@nZmxo`q`}{GL$oIGk4tJ>DIb*+`x5SpBgxE!kK*se z)m0JksXc47Zzru)J99?c{s;}9O%0D5Gof1;YwC<|yAA4c5;9s+!wqkNp)o}&|38xF zfQ_i?RJPWW3c=14^%cTL!?%ggE)JYbtfvO!Q==Mnt=bn(BRwtwx+B_<_|{o;q1bch zu4c$liDG@Deqq2$;lVfk~KHyH}zptNJ|&iPIg`??bZhBW-{GR@a?AqdI4+c*aLWsW_3 z=ujsYbZY~&Pp1I$7|du>0cmvnD1h?efQ0;U9GPwk?)UeygO|mTkopBcW$y=U(nmnM zzhbaQyr3u0AwmHULF4ytA>#k?MM65cKEdh5i@ZlG9ZG_Ccoe!0nhB0SQftuFB{vZZ z3;Cf?76Nk(fN?HbFO3{R7p@8so@Kvf)zB+Fw`4_Hm-3FZ;e? zThZDt_A`GfKkQO)TrD2nH=CtXp&QcwcO<4LE4VD?3ZMzcPeE^sN{{jGD! zIA<7Ad+VO6Y8l3^NTD4C7em99^%MR$s^(p*yt}$mT&Rq#e(G;LlM-{sUa1)_wN>ub zrhk?R0t^B%(TyOEb`(Fh#~w4j8GQzYZQ3(5goPu`Bl_-Zo=L+>)dZ>EiJ36h(s8x2 z;GE!}@$vh*>1b0-rRuwT7#7)MpQ`AO=K-*A?c-`6GiiP2L?ifv>Q>q~#F5Pz4K zm*oSPAV3BY#Z<+8hqS<>OZoo|bd&SRxA&OIc zX5TfEbq-jQZ?1j2!&j3vXnzE%TNFdq<$^1x0&jH2u=pSZg#sGhcy6HNN^7!`Nmv-= zj82i>;P&PURS^pK!C*a3Uw?BiG@LT8y}a;Tw)UGdD|AqiadYBBoh~KZZcS2fI1Sak z1!60XsXQiP*7|kXpRJyAY&%-wK4Aq;p?g10@3DD^V&V!{!bAWTSZEkp3c@mwh2xzhZKx7M_^ZLr5CH8z*(F|b?Qu5QbW?no-`1s_*5qQQK zri}=M-G}cyqF3V~KV9P6TZ^HQ#4Av(1k(Jh*C$=_31}27aIpG^#Pq&^1t5)kWKqDA zqYm6saj~HQyYX)*c3R%cg!r!E>ET2AvOEfkcGuC?D8m=Iq4)6zA5cm~ufF^!Sk$1K zId{3SH4~l{u`p78xTH32W5C1L1ulk!7{md~$s;L7bOs>P|zuzNUtsabi>yN&afNSu~HPW<+jervfsIIl@!I0$;;c z3sAzpw!VwQI9*&QvN=hfJr*E&{(amTfhE@p!fa~TmJ^BL zf&Si-Czntn$HmM+nj#^CpVM-cHe|9Lf{3=lt43~&CK`bfSuO*=u_gDVIaHAG(cul? zQ$K>k$AYINk$(ckQv0q1hmWsFw=V>yJXrHtTw{mI8HA72@9yhK+CRFlRd$&p{e0J_ zT?Rv5Oy2A|?F{PUib}N&9(>5iu!?{wu|v?sX)M)`$p7f=TWmz8Hu32sMmWuiTN)gb zHv2Qm&2Wv+Yd+w6h`$ccJgCfYIj)Ks?u2H~L{YtGwEiV(==+>sQNiVe$uW^6IlK| z#K6fu5FXs@Th@&8InDH%v>v|YaUKRs7_MnatIrj4XYv7XxNMFZTyFl~Slm7s_ CRW$7Y literal 0 HcmV?d00001