diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..925eded --- /dev/null +++ b/build.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ivy.xml b/ivy.xml new file mode 100644 index 0000000..eb44764 --- /dev/null +++ b/ivy.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/ivy/ivy.jar b/ivy/ivy.jar new file mode 100644 index 0000000000000000000000000000000000000000..6882e9009fb9f6d1c939b1287eded5e7d4daff18 GIT binary patch literal 1214376 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 z zWUnsX=0U){wewL1sY~2=J|0ru`NVS@T}x$wGBudIkFJ?-m11tbu>o>yjBuH1SmcXn zihgdV+UDr7^oql#+om#|PjzDPMcaSCOY&|~%jhhT(}H99%BI+B)Ld7C7UiLn%-y26 z*+ZF1S+igTQIEZ(tE+mRyRUK|!dus|UebzXOZ7FwbY|~{sQPePqSaS&f#L6op$|IA zU37Zg)at>ZUaV)bD>+m{uxltWPqvM(`8`z(!YXLUxOv)k`B|ld zZe#h7W_h)WQa@PW@DUNJOPFU+7TY*NNJHR92+21XuN<+YJRuTXE80TVJQ_mIaJE3z zlpnV{IEg>5_-=>BKjdjsd(wLVgV(zVjP%576`|~s3G5Co}p9~S&VIVYVnCH*u? z9fsms>wV-i@%A(c&z1iE%JbXJNpzmg18(8g3fyWgQb$`Og5REOqTr#(3=0I8ncr!Cc59@vsSkZ!)8hlF%$&%+bagf!=Lej|*6( zavKMJB4`SJYd`GeglYUG7SJ~Wj+miRRaC$<*{Ok=p(zG((3T|Q7Q32c;=<~oE3D@= za$laa7MB*Zxqn-)M1bH=Dys8eO!xAzxzXPkmU2X z*Dcpp)Yo1Y2fS*yk&;!&(cl}$T3H2li*YI<&(K2WZ!|5%0dTEVxU?ncM%E#Y^od^% zYtYOYcthNEA((euadHOqPucn_Z&<7ms;k0I=wH7FSfo_m$_{aOIe&ST25Blzm8q2_ zaa^0qxkw;wiNXP!?D`G7+xon7~0iJzI@J+OvvZB4@e z9{05{HU8J>AWH328QC1imo3&tLtOGkm45z~<==NDLtb{tGX@o;UZW8b7~w=p9Y( z0s~}Es+mwdOdqH*#|&iZnHZotEENtIN{tvpFmeZ}-k);g90dZR@(AXG-f}Rh*6_3qsO%umvE_Bi`I+TB+trmh>FsTXMvX4CK!!? zyf@!fF9Cs*L>$UQ7uE?YyN?#XLsT)kVRq>j-b}hHcycg@@o&(-_gF zMl}58f}sT&73NKg<%Nkn2VUPWrUS;!%Lf<@TmT)Lpz9I+av=IPqz?*h+{wf$g`st; zLaenW6&B+Be8`Nl*?t)wgY~sY32{{In@AY(poqxus-G39eU0Jcsc{aXgB9+w zL+4ame=?A)B51i%CCOY2-E<@tkO@)kc5NATOtG4SJYy={A-qgZ;)6uG!Yg%)qFjDmuE( z&DCpTZO13eaqi!!TfA>&mKj%V%9%Jp*kcX**9|qX=>|%E?U*-Z`#7$SbOa+#Raz4n ze|mKhMGuBv5wO6KTQuJ;nb4e6K1?d!W@1GjFzsdF;Xc#kNG@Hl%h{sshGQEEmw-8@ zIF5)r$5?%$=Tw9|HYB264(Y~9k2=1$XPaXihD+^KH;!Mdh$raHdOOG~)E8&!dBC&D zWFyUzArRdYxHMc(V|A*XEdiP!NRo~zZ;Iqev^`S8d*1jI>$nBYvO7^GngbDYZ&b+8iCTGI&4BHT%zTBMkmk41nsb8 zx92dS(&SSGO}-`RSlz|;v;B@{sR?Y%b(GancjpQgC#(N8j>}Is zS8R(h;KedNs+?ml7d$4^Cgk!>6IC_uZ;45`v z48x641>)_*ExEgYnnP1pu<*)vR(8lJ{{`_ff_JPwl>qL`NRQqA@37ZD7-99?)OX;& zVXwXKwjSAkAKGn94FUgA0sgD{Q`1(*R>jyPha`~+)-GHLuvlATYhjZplPa5uN6KIm zAWejF$L>P_-;kh5@(zGCxDLQO3 zL#149(==3V=1bEmjYTl;d+7THU@6TSjlptTjpAP#s3#-VFSOZiddxEY+287x&S__q z*1zYrzSWNI7wMP(-o-cTEgYJv=~2^Jn+jiH3*~f~s(?GMwa_ zxmV424D6*Bw!^KFe7V!&KJHXqN|uInNpF4|+6Ds@M;o1IM!X9!lM+3&{3 zuh8f%4+o`ttt;L`_C6anr{YU_MHKmX777Y>LG`eC&Z}4v5!|tXR$i|UMAQL1xyZA>%5_f3v@`|@mx^0EzkY! ze4#9AJ+L+Go#9F^MEwxzba>iAM})lfJZ0`OOMCQ0H!WAZ@?e}e%c&Y54j zgBNpncd;xkmo*#B zv0Qdt9B1|+AlR|DjlOxh_>nh=9PN%T=$ahjmTees4K$8#uOpOuI7@4IhlkD{t$rB$ zF+TH9Q~bjG+1Cc^)H(22>kqE1JS}k+?|9r(a6Y)`y+*#usCd%=G5n~ z!agf#c3uR0ND5L>@Q!h2u|n3pToj3(cg*L&$O^MFG|xjgx!=bvXhU9h@R3_;=yFPz zQ`olsC+DkLc7dNMe%_2VE6l<)xDYwV0z+%evY#wR@u$Nf6*BaO$geMk2ck*Gc2SSu zu+B+}?OxDh%L&75zo)uitQ&(Z8Uw-`PCEGJ2zwa0R~XPFV+uOO6T+Jj6GN!v3^7># zkUQ9&5l@-Jki;_f6l(-=TX~AM$laddKsI z8z)jTaqit81Y1(mH2kF)tvM26V`(19}TJ&A;Pw?n!U0K;} zf$?#1iP;b+iBrT{eKI3!Mdqkiv|$o_{A{UhTeg`;L;C4C@GDV?@v2UCC!07u8Cl7+ zsZ-mivavYWgLsX3Lt9#1=dY@!n{M;eG{tq6zX9eeXhpFXrkf6tM4~C*KMF-1wSoDR z>lkKLJ}TNnWL;-EAxzrs;bP_Cp)m2CEDjS*KQ~P-bCZ{vz;fxN;j2?{k^HmteLHj2 zWCqu=89IxTniGs(2z^H<*l#A-#!-=^l*sz)6B!VoiV|FUsFnCv4ow&V*NjNE#2UA? z%(cz%J-xfMNQx6$_8Ji_TxN`mq4owt^JiGjaDb1K^4V+GuLz~uMf4{rg%QkQn{bQM zZ(abZVJ|@I@@YfjFdfPR6n+BrUQ85=3xwP}dJLiBJEbmjiq$Y?`KH|EC>U;wZcT7^ zu?sCIe6{z`Viu&WWKG?ihNN%dW9+Krq>Fm!EM7|N z`7wIgORB)0$Cm48z0)Xd!be^J=3_!;i%&^z$OD^OKLdo4J<7s+y{T8aa!+e-FHyEvu>$|KaN zLy-aW#&W%u2cR2EBV4-~N0RHcJe!sQO{OXhp$JKEqKhgKHY!$-k9-w7g3(nD7r@q{ zOXZbSb!N5ABWvsK;sYH}OSkG^*Nmjx85DnQ)}29=VxEIFZKQlTI#~w5NozP>>kZ$k zwHBnk^G)*CNR#9a1U`bxse@Z`m425F4CemQ{awCW9?8$6=wd3^qOyG$>cS^JQfq9V z`r1~Qw!x8Bi3MgeCK|_*pw-=4j$|1;3L;Ls3Rg#uudsP9RwP6RWkdJkqoe!})Tx*M zMjq^|ujkZpC?<6{Y5$yvPvM5}lX&MbLxvV;T^otLs_pnZWVGcm&YxY_~(Z;x~JtHj5|lliWO+ zRZFu3`_wu%_D7rxj_u;%Z#O4!`A2SL^EEuvonA8tMge}6$9egB&<{SYU%wITL)CCw zW0r_z&$}A=HX5(~z~SZl%L#M1&qWp;qt)jL%HCmAMHeKn7+8D43URGEpk|%AI8RpP zy-^{l1NYF!UJ!F5q|?1tks9N_`1>w`Wn&D3JfPf&9`u#2{s5Xu@P!V`qZ$w+;9TMO z5hj2OzX8(E@Y9++fC*H_fC3f-z=mqzm`}<+ zbc;<2GfWB-GS&PGbD2Pw}8qWCAbDd0_ zcK2l6#GXoQHlJ_Ru1!RLnk{5VcZSI#)D*1)N6F}=3^s>3uvL$cCpvEr7APM!Ft_OB z*yDOI-$1a7O^)=HMn8E?kR>20=Rh<5xU`>Dig`N`pq&W7F5*U4c{AuJepl)A>@xkU zwa)FR-Rb#z18rS}AD>Mv4>xmt-#%HZkFq(aU}%>|1R#ga;rX*<0d7hFCwd!6u8lU6 zd(U2N^m3QY9!-ctjGKdd-=3~Huweyls$}0DkFZ62{SPO8AEV{j64w{;8AoE-h;)Bl7iZCVooC#kQDevow!SewlseFS6@ZN^A+^LI8Id4~0R zv&r3>a#bv6P@oYnJIRAI(=b!U|jMeko{WsM;`@1bp^6$?F-^twC()eGD=OQ(2rv){H&lo$U zAfa9oGC0~I_S$SvFeys~TLtnTfr$z*mdX~~5mg*U-eaSV;Kd6q(+_zIzZLM_5{{=E zr)AQ25zSsmKTv0NB_(-;AQkXB&1dFT?Rq|@@y2HK-|spM5~HPpk^ZUc?6i`2l(*Q3$` zTZV*jUQQ__aen=gV%exgqnRQ5X|BS#%M(4^u}SB^#{oOoO|DB;jTGS}_07aBeoRTi zl&tHnt642CvoX%NFPeXZhafvkjDRRnM^<6#B^xk>qzG*J7+!8fVtk2_Y|CGuT2zwk zwRif@S0=ULC#8NNnRgN!Y7Q;Gi0wT5Skp$GLhex5Ek#A$-m4DsqUs)a1}2BMwJ3MJ z9!yoc&h#g(fh-;TBQ}*UZr-24*9b5=n6-Q`uQ!xePLCtF8lB8^1=l?&KLvG0PJ44 z1%E0%C$FE#LF8RC8hNwiI3nmL^LIavTMEG&cC1^TIa;jmw#_Dtf76D1jBH~F`Q=yT znN2UH6!;x~|A_Am%Vo^X)yBjbPy)qD+W-ab3Y-c*NM3TH$97dE}$v{K3=0^(7#psrl%KKR9W5 zUqQ+m2e*ECcLxd={Wh(8yxSg8P@kV?^L!jcd!wXzLg^yrakbZwhv667mf}i@vD+UV zwfHH%5Du5%#d^jedbsi<6Nx$*ph;O|3e*qQjY+X$qofYhC{u5L<|A$QT zr3-AW(NbD!VFOqeCj~u!%dHAf0<9|sZ~E1^a-5*kZ&lBJWsC6U>vJaaF%SO<`JrXL zHe1GAw9U29Q{sF1khMudLs+`curcy2<8gJ(b2asOzm4w)%;A6Sg41V#4z~{sZ;UmZ z*jieEi!7-#e~U(UPBL@ij;-!&!Z=o6!BxH69^&TgY#i}pfhK3pUU;A~Mi)bNPd8_K z-;gdmlc#6Kmw)yqF9!VvG1Dh&kR0oR9 zUxv!ul2pkh$4Q4A15u*z%^YlPL^Y>yy&;CWMosE|KC|u^b2(9!vx5WR1$PbTe=?Z6 z1%oq9R^-XGUZ(6iS~K9T4m_%_sQCtli?k$g6O%PxyPi(3;a zHR4a_@?x{HZojiK(mbO2QME4R;m5G<@xfYR&4GIU-F{I3KL!dXW(b8s^DQPCGw$}o zL3YIcSf^xOTH6W6pP$WsnX!}*FiL8`BTcK}l9*mp+OUz}I2%m%*rKqcAaqF~_5R#9 zFfR}+Dljy=)xBfI5lNBB0sC($ zpZLiZe@Dyi=w>5KsW`N=M~satx}HN%$j-`{1rytzU4(#muC0uzQ7qy!iX_(PT6f5# zt&kaH8}C8aw91a{86=@tAB(%qgL{LEi2S3)kS4OWZgP>dOA?!^uieGaRO_J>0%geZ z_8J!moriiZ*321vSxSgD7-q-VBQ;OwEu-HbpmdEA-QwIkoj0_pc1e`Y_g%7=rdMqy zbRM`I7!?x4mF%@BVv+WtSH`i){F19XW90gy?Mlhhzpnmw=@e9s>+Ah|3;dCR4}rcx z-BfEQv3MW$OX$Q=E+Cn8i!$!Ekc$47b zrs`&e?SjfZc9tw7qTunYB}wLF2CXCyn*N9&O^L`QPVJzHyjh9pm4LR?(L4N}jq)7C ze8ryO75S?pKSIT|oTjOpTesszvY_hBSPRt^VG~XjMI()!K(*g-{0FQ;rH#rJMy2lF z{5{Fk9KH@Z!(bq0uY;y$7X*RNl(2(^G!m zx2?&GcoRvX=UDdZXW#3$uJh;h)NP+LO&}Ndk=W!DO0wFiSa_oj{I1rFJ~%z!`B3@S zUE@2})|9$)lZ%6)M<&~y$7m+kv6aga*_Hi~k~;Naa}#g1VLpD_;bW7Hy^&)FYVEe@ zblcQA{ox;&ZlkTr!-ANh8W*)uaGzU;1DlhsgR$wYp?!*&&*QDJbH*3TA5px$JA&Zw zWA15S-30rHpT6-^yyH8JnEH3S4*Y1f`CuI5I~;+?Fmg;U^-<*S?nsv4B_>%Zx2Tx% zWA0kR%##9VJ!b_ zdre&q719k45aG0c_S>6OcJd<(4~{C)DXe5fSpDnKc&n?VTv`CbTur=UNdnSD`NMxI zLZ$(!8iRC@Q7)`3O-+_&L}F>b=5b;HV#YG8ve6nxa5i2?1hCFfzjt?l#ecTpNn&WV zawEzPHQK8%6Nlt9B8jyw6|>tQt18l>Oa#&I&7dzQ)rQTsUeZ1B7*$1@w!pVp z8^t1yUxcYh#mQY^HjiOqJ3A1IJhI?RjU1nFW<@n$1s!%9M!K}Jz69Dt#<_d*N8|D2 zNv{VrJN!K)MPgK}OO|3~8*YVb)|$SG<%q{>DM^dBw1+sK2d_y)EPWwCu|c8~lvRZ@ zyeh_urd@)SjpcPASst=RtH2ngKt=}3$3qU}KfIgan%13h&e7Qw)2H)2w{i#lvP`BV zCZe6^6q$O+2H?bi(wZ&L#Y|;>>V&7Ka7WZvzHxb=e1RBU8}t{{&N(}og~8WTx`EA7 zyx=9A(gqa9598Z z1WB+QSZEO`AdN@R-R}N{^8K~!p@&I170QnCj=--p3#Qu_J4c1U(kKyu@@RpX*wvKY zPe)&y>crSW$uQ4&aENvaqO7{hQ|Sx4vwEi`D`1=P$qU@BZiiz14gZD>*DbEo z3qkEh{F~48TeDC9MqLW`Ris5I3d*Z+DtE`u`th2hWCtJSGu%&+B!5+{I=bT9Cd-fd z1)ljc^`4E>j+>jH0Ww3$o;@>PV9PaygDo~~P8mi1R?!;;x*FO425d_c7#eztfPH9} ztV&pRsFF1%auNMCVIlNXdR!5#LjL> z9NN49a-Ir%W*G(->{5LJdtQF8!3KqbmmzVQk!*KWzV|}1qT-F#W4YvXqJRrwVxYuy zAz>SmQWm2~V4oDnUts0Xs0L)(jQ&j4oZGz5xpCCy3BizJn5OHO_>L2^*b{_8mpdSO zuu@}?55nMCmNct(&i6mc7XRCGFsiCW8g$zV8aPYIc#x1+uZjPX1XF z{#pDNkGdQ&)iKhVBb|oZm%&tF)m+(~x5JI@B}=CAv1Xoy@!RPf$w*r`*Yhx&TEk8? zrAEZ-c-h1)b0@_{_6hC79(^h~^u&SN3@X>e`-L~@>6`@I{&JQN$M&QjU#|nsu{(Ea!+2ArSJv67# z2!R(x7QZZ4P|5{6BbcP7rn(FoDc9$fWzk1Ogf~vk2fH1j90!=EkQ>0KAQWircc=7c z5nJ{O*`aju=oG$*a`5m@mKTsRww}!t%hj8%sSNcmtdi2NVtt!EhlF< za&yiZ9?abc9XD{mHv=PMeC7SQ3p+kS4G3_oO`E|sSt?PK8|*!JOXyAVBsG>fJ(dW+ zgg9THcyn!gh@w}{CPqERE&E-wP~R;#^M-YH4e*0!J~sb@3HITl35;IkaO;$&sgFhD zBGE9PhFkcqgG7Ui@DkD4J2U34iAhs*P@5u`%J10psH=lJ$_%#RwD5 zfMb>b@pLYvoiP~igxa1i3-lS6AiWP`OwJf`onVr2L0Sm42x~RUW2+R4Vd4s~Dvp2% zPB2+ao^qBzsyleQJ7T6Ne!?ECHL6`df*m1gvSFr5%;h}HgH(e<6AM0fp-ZdSn*VuW z_6p@?-{U;r1_kag9oMaG8N64adhPPnZe}*0i&t7*?4I$)a*$20SPn>#u0J*7_;59m z7NS-W_Kib7&kB`IKUsh03O(x%a?q>2Ou4^QS`_lUb0e}^6!W}>2*iD)qm*<~EfS+_ zR*+blP>IJ++!GN>&0;@OeC&f_Qp*FU`in1nDDGb$ehQ{T}bwLhG(e;caMuN}U2~RJ+fc$HU?g^?2 zIYE@}bs;$MVJJiG%fAVXAY_sp>?NQRA(WLxcE4(qTf^lL1hTq+{dXMTAFYfN>1m*Q zI3OTPav&h$e+wS|t8V)b5THrR!yS9+8)h)A>eSO84;CiK3>=I{oj`!-BaB;-3y5@D zlyd?$q^-IH)1+>s9)T0LI2~J>$M&2{NtjP*R)|xcXG@w7*;4n!f9Qty6x7x_nY>!q zeH@qTZvL8FXSds$yzWY8x69%4xoQ*V`vG+6UJD+wQ^6Ep!}!_`GhiR!v2AcCOSWxv zXM^_v=jW3;_MGPZdkjA9J#H*f#&_^wM8>!OphU)Z*vXG>fPN>{@CDV)7dK=(Xt%}i z1^3w(KZHMMH`dUd3dYZ9_&4cGB&c7qA!HWBz_y7yR?hD9_P`Ci?HA>Mk$Vd17wJIH zE+=M=cpSn2MqD0j4y-Y%=0I-H5>sUWGD&zIgA|kG;^J%=jWI2iVI{P2R}}1u1XNvk zD6x#0B!_m$BZqi@8=e9w`zX z?7n6YPHM0Nr{G`;1J8J=x&($PZ57kSFh*js%v##uz)fq=CDX-m{0C1x{(8SVTgx$n z<`45QH ziEGuhQZ#wX(>(W{Y}R>U0HP4F8B^*!V!x)(Vl7VJnv893%}RxQdj@lc&AFyg5RG<& zlZi4>TcO#)0T*F|@C4i`nSsZ5LpbVLvk}Nlq=Z-jl3|^x?o=3!4$i1nb8$ z5ew8O8MAbt&t&yj`}wIP5h${mXPkyf3v)#g@&JTWi1QjauwcKg*;;)=Mm$;K5;2z` zVJ$kAZ_K(UO zC#^E6Ca=e6J*2u~ZODZ+qHk55)HdwkHX9`w77e{PS^6bd&$yaq$rdilCyAa9*9Bd{%xj>^l8?Bf&if;M1FIS)OlN?4 zhUvSHz04!l_F>27_z1TJS0rkV1lCd3%WkWUMs)TBhi7{fwC%*gbk>li3V@`NY^GMw z^llnc)4{q_36yq2wcJ^tns-MW2{a<@z&f9%>Qa~}c%Y}z ziiieRV0|=+XoLxE{46cN(#wmxe=h}-33bHVAc_R=HnQ+kYl|J85YeDH)W%$PBQNM* z*B~7+Z75n{Hn^Aibl}S@E*`^7p8b&Ej6FdW7uX0K+h+rX6NpZ2Pn^hzp}s?qh@FN* z6mWbmkP<9QMl54Zw#?9$BN-AtWP$=m@y)>26$f430Yh^A_KKk=2}QnXz5}TAxk$8x zPrmmrmD!ghfe~+@k{3+L`tqC`MZDg{&j)!NT7S}!IgZHewr6XTv2BTsEZbri`WS7V zLyEjs3HNVJT~5NnIqH=j`?C#LH;6My5>xMjtId`fpt~aXyU+a!0|>XEY(TW!*lri^ zkZsWHl0rQhlmyW$+$dd$YV2W`XLAxK)8ya<{hTk>>Q1K8#9&SERKjIxprVySZB~W5 zgKHX5L)Ow-f`wYFQWRFUlquRA#{x-0T{=8`OHE`IH)~rC zpIGY8GewN{1aETwDp6Tip+`X#&wBTUH+0>soIlL_;wR`hBM+p#k%KD^(B47YT~z{C zv8T2z_#Vib)RXBNi&5ve zRI55g)JJ3Ub4&|n3U4~2Ezht?2&bY*L8vv$bus#6&urSHU<1@n?^GeKNsu-fQ~Yq+cr~9%_tL@JA$P;92zk4 zdq(^`=gqu&%5gI?GlZ1vjjo~{)-=^wA?-dKQw^M8bt-otJsI|y$y8KSu=)VwERo?| zT?liTbHt$6&wXwQ^5lbsjzqeGSGlRKJp1Y93|Bw8M8<~Z9A{}wr0YD-$a&@x>GFP` z^Y~GfYVENn^z)>Z#kK`iDjpB7@8-Ub)m!575wqLbeDqG6! zFs*iphThRL)t%2-J1aW(g^5`!I$3IA^Qq(DJ_SIp=-c;Pnfz}T%9Bt)adXzi+iO`e zcCLEXCCW2&@q#oViBgZ(5`A@N)_f$l(5PD*yWr^(>6Yi_^!=4iPuva45_PfKYV?+5 zCyHmq>L0p5eA4b%HP5sqSG$!uhp%EAA8odaT(AzIW&j(tHznl^{%~)9I3L;O!G#RYzS9qd^C*f638j!^$UDF-qU z0rJSEkK>|`>v;k8=;Ht9%G_dln;NJNEROvJxa=9&;}7~M_J{wXmp>2u63ZO^C@b)2 zrnf(f`!9oJ`Z)H#AeJ{kg5ke{sDaw_fZ7(&B?{0bzVFiU?$6@s&w>y)3?;w>JgWWu z3lIOvJFq)7KLS}jf_sQjOVnQ)z@zK$E_v$9r-cAPFkQ~P^UI+JHc9ot3IO4$67>ld z>gy%0eaj5Es$Xw|ptLvpN%l=OrGQ)s$rV_A)~`ktp#EhDY~L38xHxo)3i>#&cmJSH zfj!W|F5tL8;88DcVY3u=6SY_1w&m@qhE9QLasmJqP@7uoYb|};svZHr$G>wKf7F^j zE)sI|4NBk&Szzn<9Bb@6gHE5|`q?e|0IWX!myXhpQP_S~{2MT&C*Zb4^wEz`fqp%L zb%@a?C;>P~0{lWKvflOpC{$wB!kuUpgUM5yseujJIg0Jjx=|juOr9*U<;;QdXwi(w zO0Cc(jL1p)dMsQuVH!tIJT!$pm-ffHQB1j(t<&+k(R4X=*LK;uQK6D`k?c{2lbB&5 zD?BtCT@M_sd~w6uoPt`D8Bm(&EEmv}Lqm_kU7b$gt%7@_qX32)%FSjJD_ed|689yx}XUQU<~LOgBJ;%Q#sV;j?*>XhNpGoCCz z@*my^f8x@iEl5K>9$5w>^GQ(`T_Kue!G^WW48&)LSTY$IVRAe{=`JADs?46n?`p5; zAi&C)f2a=j&h(~l9PH-v=)AjHa6z3vi#PzYIS0W7I-+nvnyHJQP&i*3I#Fi|D{6g+ zO?yQFT=Cdsd(D>VQ)fRP4tBwCZai9(258~CE=qW;PvbHIK`WC}C#WsS;;S0Vs;2rJ z|1@(hx%L0}@hFGk(9?X)1p^Y5Uv*N*=P2jI0RM47xTP&*kAW7ZXiiWcC@NGf;bZ}< z=UhoVd3KDlw2ZdM9vaIFq{@M%fuI3P@2pkc3sM2H3_cvm_$A8`Yt;SQ$oJ=HEAn)& z?rcm)9`v&S{uLPPvmiKqps+htJgJmfRthccWV|^&_-zO#Dd&G|Q7aa&Le zf$!gNW1;D*MK=3q4&+4fh2$pixX$RwkGiToVoh%32{q>OL))nOlA7|ODGlI7K(<$z zydcsqi|ipWOmX3yfK9Wj1!LI%2-)uvWzQ?s$|u>17s&cTsSz4G0RG+>DDOgxes50h zJ>I5xMsb7}DxcWQ;0+$rk={sCw7^J*=>#}FDNOndD!6HgnP=z%P^LcLv77igYdz8cr#l%FOwBK_&<8*^p}I$ zpx36XGxfT`XdsXWh6Dj2JyO6u0wLT=Ujhv@Qh8|r72iwo zOJ2lYqI~(CI0rBHe6?D`^f;aG+tbGB_qn;tr^Ed7ZhHbBXe9*R#d)tW!tS)R@05b; z#s(2S(p_Y*fCx|d78h4Bt9oSrr8?sJlwt7vFBg`nw~)AU-(N{Y`EYlwK}0J_B}8}dMkHHp-!Dx^&4iy8mX0Kl8qVCKj%h|(BZCX zjqEC&WqY(>E@hR>d*6aq+_rKV;hpB@NIuQyE|g&zoHKZg%6R&KKVvFnznevxvcX(b z+1Sf-+jcS-v*!j0>CL$doU2_X9U{><0ZM`<9OhhQjMGvqLWRQ?GQwcv2%J$SPLx>Z zcvCv-4dkx~Z3C{>cJPE+>oKzp0yY^G*0X`I?Qfn!>B zlVm+pJ|t-jcuNgV8@y0Oc)TJVmJgopKGP|q`WIZ&R&;Pp3zwVd(O`2vn%9htzsWI zF4CUu=}HjX(pj`$KG76&CZ>h!(bJBk2ZJo#C>7u|13A`2$iN22H8&Ht6|^V zqq}I>P?^rTspkZ{Zb`AzqRMPQ+Fy0%GbWvnObPdTPtOM|-`PNl5+TOY>vDz(`)@T} z6jFi0?$b08rKU<}R$`eBPMUWT?84pIEJtJqPC{k@h8Li0d)Bh|6=O52%@3iDt7)wj zM^&pjgExY2vt+T>t3?Lne(t76Hv`PGw;E^V7i!E+u@!bHRMuzo9QC#55j@*C8VnTd zyf%lLbJw9q6x>gAtzqBttaH*kx1RtH3ECa1zhF1~XQ(xlVdk?Z(n|^-F%>c88s#W-q}1*X z#SCULqBV%~n}|ujb`A56hffjaH&1t$Sf~*X9ulkVC>1TuucV zEM&mKO@Vfy1l`rz8OB2Y+w>HZdDHj2kbFDlv$iq$=ZF;d9gWIb!IJGAx}rV71yDJ(LIe%qFF&1;rFODt(xlD;kyQM8i~;gj zIM*w_+0Aj}W`I^S3yj|eT2u=d@kA}ZE&MQUUn?_)8yIm#JwI9C_gveuaJ-smTc|vq znj(m6^GyB4RDqd2T1BygRbgrQWz)he-Ak)}?nW5IA=#o4wA#KIUyDL>{9oIR z)0&Cc0Nabh(W@ArAAx_v6b2kNdGZJU{9U8ZZ#IT|WNq!)e>eIih6EN4DC`c2aeI@# z#RXA-g>8lY3t6!f$x(~5Mc^ISyQ~_pEggr~e_a8z9ogaYLZ4^H=}o+=4((lt^!_8@ z0qOG!>gG9jI~2dSYhpJO!Y{kGB6;U8B$L347j^G;XdvG^Ar9OQ@+Y(VF#4QMP~=Nu zs5D%)?d?u?6tVw(&M)o4E@P~zA(h#W)q)318bTyU1d&A0l-}o1Bu!P%~_)uJ{M3TuAm~_NKz)cobfUg@jv^+E2+tu z1b>H8A*^B|yjoGjKOTy7DiG;Ilh=1=jY_^{l?#}t3mlyD^d5>-^Q(&;I8z`Z4@`t@ zFhrkEg!2gf7Nj)9sdW$0xn=k2aC&O)-LB1v#Y1Ltj zZhuK)(|xN$EwLK)U&>JGiS!}!1mE!wNZGn}xj8e0-$K0j8SIM5Y>c5(@5(WQL{2OD zJEYbqmtuh8N zbthHK7LsQVVW-R%*>5k`O3BcC-W?~%u-+LK6$>S_ln2I-%oZi`mDTR)c*0qCoL77I zt#I@PAbNvlos-fxP}FY~opLpdUwR{f?jVWoiLY;HGtV}jGIMXZS%>}5pR&H462a!dX->E8 z{Wsg`X!7&%`PvW2{TD4RNLpt=rhDP!^EgU!x|FfjfH5wX8Ox-Vd%mHZI6m1zn!2yx z2r5naTmqb~f6m$H&QIK#+R9yV*cnVDx*F&ZnN!s5{o;Ymj5b1_^(xu99BWn!dOAJn zdjD&N!eX1{6lRvGSX*SHz6J<~CX)^$*3xSTzr*BIQsn)wPp=rn8nGkS(Lp zJL^{-1v1mw?uuM z!nIp5zZ9f{I7L>YcxrnvLkyXiqGvvNGjaI$L|C6##o^|vy@981CaOP1c<56=_iu(Fg~MHv^-lhAfwjt5GHB~BB&xk-|lQF3UT zT6V$5D&DSoKH~-JxyrndMQCO%fY>;b#3nt163a3M0orqEM8@XD7r@s9Ow8 z__##;*j&OY4&WWCqR;*C2$k^)kn6&&i84)Wyme%vqp4@3*$WTgBHU$q9^`P`EJ0=V zxbWttQ7)%uuUO2+K4t!l;Ao}68|#pNG&q+FJW7;t$mMUAoXG^uUG4J?;S%#@GVz9S z5b7y)|2(xqy9L$X1&pW5%fM4Qo#psoA3b!q{a4uk({h`#Nec`5mZ!)64t=5ji?A2| zX6}=Gi}wE4f#RQUWDV`@O-=q|D=1RZl?MJt47$1+kYZZoBYYT$+1QQVjp1(qj@cD^ zUP#PE-BEGSLq!pQ_x9tX^yG>}L<8}`vFB*RX$JS|eElB!7n7^?U~Ni3xC?Y9S~G^s z(9Zxu?dxw9<~JReEVC2oB~CMmED6#9DB((Xd)e9YWipFmx@3zeaN1q{TQz-lFS=`e zCw;NkMvD+#Ooju%{#Y3X)DqfwwhFI{({!ltoSDRO5|VGzOrQWlt@j4x1sc?ZW8tZ7Zis=L~$ZmXi4aG81k?9q1qS9^ZX@b+fjuVXkyn>HW@DDH6kPt z#V8{s(LcqLgfpWf(((*flnil1nX^Na4Ni0#fV5KpVw^Gm#E ztIIHL@QX==5qq9ONSZVY>*|E?25vo2nsY1_8RG7Z?y0~SM>ke)}0o_P(J^p&}t(}+V9x|PHDmP6GmkTEgi5RaYQvo4%wG^rJ zaJxt;CQh0eYAQ4pFDbhkE&wmh#$aQ}k&Wus>5ucyO*FJXJr|r^)r^hj;F;X!eiy9h zKX^B^w$8vEmW$T>6wD;rb9pjuHDlSZ#-uma=E7HWD>1klmWwU&ts%&g1n4DOkknfmE} zk5Q%$zuhtf;q6~H^*rn^CX2tjz852cMG=}wvEyGmS%Lrueu5vtKZ-6(DOAR9{Z2}x z(0Jhky5u1++Dba4R|3^LuZ+U@*Zo!c6I1e3oE-M^yq zGyAIo-!9iu?w_9sovBCSZq{Wp;c{?EUj2*IECkAN$#3CTbh#QqG31mG{sy+NbE(*_ zyMQC(R<0!Bh6kC{i9hAKGksJz|7L5`N9PCI4Go-=>>-ipS2%f)5-U~!HUIbb-TATo*NZN^(D1;-) z>Ktot$qP+?JEo!OZz9RYMXgmEY{!blp^iV6 zPaZpkU$qB@7=kKHc;%AE3FSp%k>pbD(8;-JVZ`DWw-0LsJ+h%dtP#!}?zrXCv+|M# zEp?#My#?LtksiJUc`)Yf{#&&Fv!lC6zu=^PNBhWkA@}c{m;Wo;Mcs|9T}=KpR-K)q zZHFw5GV-;*&V>!q$B|m(CKbL91Wl{{Q%IO@aZwIIFib+iVlO*QHoK`qPkfB}1HwD3 zyIE;nB6@LI%9~=*$+aZruyVbT{&*7S_v;iV^Oxr9=HKlvAbVH<*&YsAO)ICn!AO;+#phlY}Rmuzc_d|qD1q1h(LEcty|G%lHPzG zy!SF-64Jy~ORl91R4He}5dETMjC4tlz~Evu_fzXN$#v#&!yw0(Vw$Ig8)deMWNwE(LomY=Xk5!#P2$EH|U2uP?))S8x8rz_k>Dj>1s0Mb`1B-5z3Jy)# z?sdF)C##c8vElfy)=J2r_%i4ELHzgWGFR*3yDHN=6b|>R*a%;XNqYjM(i_2!)Kw_Af9{H z)5$cp54{=V)dy_Kx~(gA^>SU4nN1Z3EFq@PvmNeJ_!WPD!CkxmdLy7-wrh|1jqB)? zIYTf2Rk8pylIa0?P2P&Xs0;Ot1{6B|B9x_J4EpYL{>R{q;hH#MO5pJ=5FZmlv z4?%7H*~nu`?!MKcRsDDlEt`-zOf6+7NMywnvYRmJqiFtEbJCxh>R~P}5CEM9y5R<; zz{>N%H%EwXPowTI^P-=c?BOl|2!K)p-B1HlU}eW36}+LW@;~ngDX8_o zh&B~Qk(g0%^G4U_=@~vn*nWQ?g2w_(kZ>@rcBS+Or5V z^TLwDiPGyGAe{CQ3b55H7k@aat&M98|By>=2<7N9G&QIH3Sr&@GUk88>JS(QLz8%h zx9kkVet11k(u zEND^4HTLr7d~;IDC0;ECX_q4oTrnm|ujy}bBCb3+(*K|N{8vCZQ37%fv5;gSf^2|Fk`(TV^nzzlt_H2kioU@E`evfHki+Vi%dmak(+Ik z$aVkTim3v8Tjn-8oUrp&qfF{ki1I0IxmF`=xs^6EZJi$H2I@4~HmzrxYYuu#tMPc# zZO7g5)3Y1XHyZ?LxP4{2q+N$u{)Dl|&hyzn{!$tJ>Kr*VqT z`dsQDUJZ)w@0ttYEaM(ROr})3vDve2$IH$tM~<4-bEuL0WE^pyqB)hbNCx(3vuy9- z;yike>b8;lt8&5YM%a$MgP{n@Yf?<-N8-Ec{gdHGj%q?g@lclRd1t~t1jG^0;a(<~ zvI$qSlP@RB=}0x$)t54s84R;eHzX>wJ@**V@Plz@T%8G=Pv4ZUuXq@@TC1txy z{vd7-jf4;`u|f1GPPnz2&5_b!3&L)07BjXpjwlBenxBe;so+&3f=I zla8gG`qSU38@;sa+J*kb+;J#Mjdm?KVlun z%NwflxEq6Gs=Df_i9;Tp*+bf+=8Q#?jZDnrlT^mU^l`4w1LugM{{5EB&^o?879{?T zy2%P^N7DY>U(e+*-pQh1s^3F(tv6cnP%=3XPCkGU)hXR@ML?&oY3GaHC5_parPCmu zQ`R5%o@jscdYtE@kcmqcFW8zTmqsz%DmvIalWsrdP!Qn1u{WiidONJyi3*UZ+Bv?sk;pr$X1ParhvFD;MJ)p|$`Vxf;P*7g4F9m!SH~KBC&U7 zFubm0cP3K9h?P^sQFeL_%AuocmfXhJp&ZIgvG%SDY{xa9{*Vq~WBPB=y7`X&q-UQ$ zjwf2jw*RVD?qFWR;q8(q4TSVWYn`&c2M}eM7aZRZSJyv+x_t=<9>$aGbB|NSqF}0a z2lK>UVxqmMlgtpW?*7=^nI!N^NO)!O=4Ky=u>FAkuQd9PJ5kUOh_%x<^wIh4fA#O( z+C<%*9Sx10#T@Nyl z@NF$MyN~CkKt{U7u&9tM2NBfkMsmLvc!gbe56bybLPiumDaAd1Py6dRBe8#e5U`FSVdUTT1H$YK|9iCWs zY}>YN+qP}nc5=cK+dQ#tTPL=Y&f8Caqx!m?OlW!D;78Dv$OfQ>HO_|#re&9UBBbEzW}r>%@?Gc0lf!asd1gZM=q#P;D1W_`QB@FjkpA9~Y^G{}fLJk$IoiqX56_5MK>^9^&bV))^Y z(W{6%6MDOWn1=vEv`Pg?!>YC(0L*sK(e%}Y^aD!u%1=Nd6_Qy(hGxBh>m`gOvV`Vw z(n1X*#b(K)A(hb5MPrh-)#_Qw|Rf62xm*bA2vB^j*UQtPzFEu9PO1#?1 zXT^=W3L70yzX@h@G3#7Gz(ZAf^pU+g+w@(*IYno0|V3k#AG!H{( zT}vf~OIc&Tepc}K$)Q@E92Fu;gTb``}vn09~p%uLpm4iQk z#{QYM~6COE`liDuo-?608rkgj;s~K;x-;hD2+hKBn(&g*!|t1D`7dz@<9eBw8>V zaLrGRkc4ZJ&xM_W3Au~2#nZ5b8x|6Dos=cquwDAH;o3#LF!@sP>?H7~FjHpby{&(-bNO%Se-XsS0o z#r+&+O+&qUl7llfUORhjO9;J>hIrPcjB4UN`Q<;^;64jY=P75VlS@ z3d?W`=A6k)%C{K>M+KP1aUe+dCji&OVxoBMGw>=VL3>YqtjZ(y3d|!{bt0A$)8gOj zrE8dbrxUvG;t9)1NrC!?(D3R%0dyX{k#HNO{NIy+N3Cl9S-J2 z9&}-5{Vt)310`wB9L|w1Jn7E&0}(D`ZnWuOWzLMEv7L$Jt^z|&+W@21W56_$kR=Z} z3T&x=eD+8~pOm)I+Zi(*nBFLY7|;-xJYO! zs~lxhXBy)m({k{OrBP1ATI|2$Jp0 z+@<(#xp|4X`}9K5X{*liS-U9i9e2jNx&8b$XOipiYGLqWa;7I}q{{HJ$*Nq>q*FbUqxSZ?Gal=Ch3C`e zesejjeMdF)VnZV6K>K9w8`P<9NJ-U00<+9Hxer!R7GZZBD}CK_lOQ$=uB-DLugn?< zPXbx7+gHeC=l1+^9##0oeB@dYZ`63~o6fNF{_3OwjbjvjL84LmSZxMzGi}uQuQ$ii zl*6qUznoOB8m5H;?-J@>kLTC5i?DmMnZ^apEvFh*(J;3i?Cx~mG|t^{m%&dfmo+XD z9<4fwr))g|P0p=%sD^*m4;Up69nCZE%mV58-?Ta1IO zA6exM+RV&u)@I#yQ#$F7LJ`MnH2Ndkii-{4RhHP{O|pf@Hyl>@f&o)pY{BsagJv01 zZ{morWtAs(X^LPPb_VS*va7MCZJ7R}NCOLDD+h2@;P!*rAGvn><5AK`bl4lFFbDXDUE{DyBi!0cW7GcY&*F=;C(3=valoR~J{pu@nJj&Db=s z$s)vET!jFd8c2O5$ZPb!|Ek)Pt;J4&n2td`$-m}TTw#o5OVE%cB9IV|{O7>XR;J^E z(wYD2DVBQ7HSLSy_@`IC@NHgG_w+$%$`2t?=_-|9Egi)^wFIh<=-beAm^}w^dkCI@$OwuU!Mza<{wiuT{}h zx-Q_d;+w12x!cX|hMT)-L3jQ2HQpf_yF1stLlwAl-N$$HiA)f9hLq^uWY28Yh=*DUV2Wdn(nQY{NG~@R1|)pC({>2IIVUnEOzvOIhte zcRudj1or>)?}DL*$KM_(E}CxGx6HJtgyl zBWF6pHbmO8Eo#EIn%}rkGzs^xlJVd=e3imGPS{#JwI zJY~0{I+y^&p}tGHlR1Xp+yH})%Vz%K4+}g9Ibti@f1$5>~4s*A%-X zl`4Y96(uzRE}dRwN63n$gO1#@lXucC!6T=?^pDr@&3`$;=X(5r`2j2Yly@%+lLC2$ zR<|_zPqn)kJyPVKSonpt_i!&^*729ynm*JzVZj-{Q8Rms^3y&@+|Nx~?kRn;)Y_nM zUtsMS1Y#>KH)iJ2SYN!+7f#ASCnKy9i=5XFR}Eq3pB|I?ewze8_WoZ6A^I+~5XT?# zcmEHhi{if(!Ne@>Oq5LBES)Xw?f%nZrKVXcZ;1UUVMFMc1tEiQvk3w@(#pnkL?pJB zZ6rr&2^rFip-F6(A*9$y#GWQ=py}{H!}V1uu+$XtP?brHI~}2w+}sPbBjS{ zM@up18ESq}gkA>cM?r$=4EC_5=%7dx-~eo znQ1+H5TwP^U3)bzD(OkWME|Ch7D~uH=Yxse7MQHBQGa)$G`S?sh!JnqD4pYuWZYZ# zA1u|jn{_Lq*H~_gM#m*GBS`+rzz^^i3^Gc&6&RIaH*40aR+RML?Hevr+yN9cIE~YDtLja>9^t#<81=Nk zp>+PZ6#^MQ9xFJ&siWu|3G?IsdSwWphGo~z(Al6%>3Zf-XM^z~rW*(`CD(dq7VK7I zbQP9Av>_KP0C4V?g-f?-ouQscFm4i>R$C*dxfwJOnqUyi4lK$QU*GEV!+`Vek`CA^ zrdmT*lvg&t(VgeWC)ZUHz~}}Q5QKLH@n%3j-AV}w_5qi<6iG2f$Jd8^_3QLXy!e`eUYtA@ddG#MN= zITh5OmnI8UB-0y8c^Jer6W64BYyK(J7>=I``dU;=vsEpuX2~M)X}x=@%6Dsj`ZwDU zz_A}b6S2p+`E^)+%H_ zHK8Aa|Z z8=(+du$W-93(-UemIz!BFY)-6k^q!%6qitf0`g7;l8Nva=Ukz6u_izGVGV*)yjM?f z?U2wRZmD_i4W4JXvpv#Aq&uGQSG2qR*6a~>p=j`S1g{^E`a{81uC!VgWBAR%rW2eLPlVStj-{s?WHZq zc0u)B%)E!()-wq6L$%&t={L}>Xd;(3h8yNPy}NQPEx)^Dm9!roTM1t<`C@l6N=XFY z`rR{9AsU$H0zdPctT!0*_y3^}{nzhs7c_RPnIC-!jR**c;J@9rB<;-X|Fd0{Xu){k zEV+KoTv?enao-6O7#l*MF=%LM16m^MOh*jXKuk>5ULr3^Jes(ZhV?G1%*{=sNqz-E zAxdD~{RU1dEohQkVCh;>(;*;?+yczA*xuXRTM2KM*sgbhKICMsEnQg^k6t}%K5w@_ z^L%;hJ#T-0^jGG4q5VC2sKJoo(Tq3bDcJ{|=ckob%sQCQNigFXp88|N5!tJF6BA`_ z9C5&jny+??2|hEz0FfWN=ltRW`^Q1+^ouR5cK~Mo#~GlXavV+drT0cZbc68X1p6J~ zAGMc%n~KpBRXf(dVtR$`=!5)SxT}xqLmei4QygV4{f%qcQ@QUw|D6r=;tswOZwRFa z*v2n=DG0(Zf2ohkhm6UOO3N>QL3s7h%=%Wj)u;N>4&zt97>5s%xU)*oNACbsB@dma(z4F%8kqa%+rg zMcdLWYs=g$_N#w1z|ejLLPW+mKXsm&+jS$w-k)h7HrunmpYPXV!O6p7-JD@uoa?FP zpCWgcDt2xQMikRghZ;wBravXkZuCFGJx6Pam+bB$^EsJ6@kv@nCA(IBK7plGrVOEx zS!2eODqD7LZEhs<)N(`U{_8k>;M`@l;zR0ie`AS_)L!OG)Ul26EYBpYW#vg-A{7TL z14|NFRTZoHctb4wj6SX;^I0 zUX*~?#;A6tVv%v>%Ad-$%uEcgerDTc2QId=Ou-2}#(D0Rr$-z)OwJKv?j2&sm;t#F zw5@6E)M#1Mn(`b3W>_~nS_XK0J(aa$c<;nu8cfLUCc1}>561hUajc9+!+!eGz8wgy z>1AMZE4RpQF5>gmu7M7`+7+)x%>ljqxqDCGgY1&s49pg5yF_WyJT}|`v`!hC=ewAz z5kWP4!~BFX|85*L0LmlRb?r%=@p)3Os**Ykti7nD=9-`~?0UOFeth_G5#3=5|vja^x&7OIq0Q%D+su6*`NLyhbjt>G#tQ!@P^5|q)J zlnTZnDEh1{lWiVKE()wjE(4Zu@AMTEWKT_q+SwypB4Vf1kU(d+sYHmEcTdKso_z|j zOt!!+mh03hG|jRpN6o?oyj!n8F1DsP6|1_C4h~_TFjj2=tA!}qS{}RIjnj{1Q_^0+ zqFPLSZV9@2p)7lux=FAIuS2ZBnzbX&i*;RM#d=XZ8|B}M1+yy>T}F=%;_;H0u)Cpy zf>BR%Lh1qOo(2^BvZCC^U;?L=i7pHznI`3GW=)8g_USLn7AN@86E>VgID7KR{0bDy zrr<~m@=GF`(RfqbPlx_G+llE$*9oc)08Sk+cy!$;&Y0$F*BSAHwRzB`smX#E+YqT( z2KG9&vB-dJ&;^~<0j$k)SMgjdlRHG*sLokRjXk}m{=nt7()L`gkY3SNkT=4mDMGV% z`_Z`CX)IQE9`8VX#qIY zn){n|Ax?7D>1}OIf2gQIh$rR*V{P^mg+r;%&TX{ulY@TGmI;NkU=?Mvdckz77PMNr zgxD#bs>RwB{h-!6FIvRhxY29eBz;h@8qRe=M-O>Y617YpZPO-^ zSf+fC!{jpNZ290Vq$b)}I@QBmY3~R77UUZ#?U|NoZ`+a`*YqKDpj)n2;%Hc*mUkWvoDNGM=8tx`3CDT4L_H>s$Rf zIjz7Zwamd{IGb(WG=ZtPKS{4xFUXutr^^OmZWca%{&#JwCoP{7eFcBTu>?7JmQ|Et z>U3R`+;FN!gReV*GUiw}=^2}{hn%E>R3@i^4}8HMs>Rx15yF#|;22HrPZIGYd#QV5 z8^hJb`y5<6!FS6S6N+X>Fd(GIJ8Se7}^>1;faC zeRJ!6AL$9hObX?veSU*Iz%-wO&h~PV*-YyviM4_0QR0e#?u71X3Wk?OQec+6U25f{ z9n^U8jntECJ~9TO`TDAnGQZfs$RH~E=iNi|U`lTt;{a zEPKpX-*Is<>0X7kUAidii+Y?p8&qFCHrd?Me88(GpC0yV`e_t-^0Vwqwf~uF1k(P* zE0|gL2-sXv@Ct;d%1ioa=;7{{jU}89_K+B?_b6go7tS>>OJHdZwwx zzM#CZl@BV_@poR;u>;=10WYr0EkbG0QC3qD`|S%-lojit`b}=uo&5@sLK1d^>Gw}- zU9v{I{qk<3<6DK>RlV7HZrQ%9D>HP08G1Ay{O9@5MtpQb46*H+;N9{J4~NjwPBGs}>q*u6hUo|{J$4%{$?b{mL--2dtUMIR-e zJRBhdo5;fsjr6s_-kO!te4(?(ri6;_POjk2x|y%E9+fj)Y30H~xjOv2H3(pL zPX+{YS_Ijd<`XCaOneC&pn(+40xjSmoLI0T<=_p`o_0AP64MY);sl7zXrtQ#1lN$i z3YS6JBR!vFfd}sbH!&eelwe3uArET|2okjjgeRGKz!N%s39b)mU?Zy%1{M|3dYLsv ze0P$FjIv3z7#gAua9LZCZM6P{>cwwE; z@S%}*_S)j0-%d~^*;vQ50jm50-2mwq zd~u?&>1d9bBh78~p(9oHj!4zEBZ)pW{A2pk1ENi;PE9LHs&smKjV~PPbr^mD_y*&328db80RSe(BPA0WNc-%cc+iH>KU}^RrdvIdn#*3_+*z)E8@A~>3NQ- zE8ndSEHW8qpC@Yw=h>ZlbyH&{r*C&YZ8#}5&~(-HTT>)ZyYzi3}) zr#K1UW^vebvrcubdLmi_Nx(rgbN5l^ukHz@UXF~rX=V+x#_Tv#Uxh&sUA(~<$BTd| z0I!NLr+*%3ojt{J1@dwoxouq7y;wVC%)+w5N`0`3*H7o~H$q8+pwO;tK*h9vL`k36_^(Kj>uLRy zCNgnH!sA!>!7A=P?!}(J?i`S%_a_{S_{8qc=x(aRpY>uk>KQ&6URf&>eRE%+>+Ckm z3i|!2SoT+m6f)OWj;HpX>@>kzBaD{;*mA0{2YfRIDeQZWU((yRy|1*(sMc|+U{YP2 zR}kZ5n6H6_vXz5ynAJ=sO%(~A4`os#dbs%<;$L9V?Y;r_UI=%zmxK>ava2(V&%4Ar z#$PBSKiEoi|G4xU^cUW^#He`3WB;7xUF4L0V;7+KF~5fbGw4Y6=t-4dEk#A!q67P(uGs8mbqBnNl@Xp6PNoCcA<12;2Xy=;6e`FroV8U zy9yD0pcYjWsawGMPq{^fX_eu}?=#k95PB^82313{+?9pXKJS%%u!sKQiaGwjLvBX! z%>PV(0KqAk|1Tq#q@A;ip^eRd`oU)PcW)GPR6p{yDLXPyLTmsO3OA}{KcK;b7EY1? zDpCaGC;R{sCFe#yHaj-W#GH*-)vc(#p;b|>R-n~fEvj8L%LWq^ghngWysTE)vhDxq zk2sT=J7s!DD}PfjpEv2wo&KD2?Q@dT{gA(44qP?VYf|+iiTL#3utsI0R`dy#S~M&kC+K>NZs?bnF8~=g zi3hvSnMsZL!;NeZZe5FulZY^-X6mRPhltVo=1G!zAQ@cxEl%Fw7yU7WurW1=oFWl>6G z7$yT~t;;^d$UYR~sx!+rl=GOnUall-BG7-XOfqy?`zy`V@ki98w2{)lj}vRUV7R)h zkm4r}dn6E9u6Y$YOh0^n<-7sSLwH;DMLt2*X*^tFARHO39#g$@fix_}H6ol#efZLdnQzt1bB|Ik^l6Jr; z>(7krnS9yoT@c^h)?L{>3Y$9)P$^oZaxaju!Z}lF@I{~96vdvw+)J%rXQOtf$~pWA zvS^V9w+&^sHs$bL5Ugaleqa)c+0ug)&*`U;@dibiF(l`w3S(vxbSQ( zsV<0q?P6RMgn!@yW{&a!#;@u?oJCrdfy7y3ni==Z#nlj&nH7Z$MLwU##mruYxq-#3 zc@d2p|00sjEuzMNH;b5~ zau>&sY|pZR===9#6I(?uw%Fm&Oql*^HvJ7+PrC7f28`#^)?e)eUhLb4D<8(zhJ62; zUDKTSU36%_NOhE^M#4)I$Upu|e_D8V*efxWS8~d^72wi;uc^6th)h|qDYl7d&cr-I zb7?40LlISfM`QdD zrFwzWQ@+vesxd&${^ka^-<1XL9l=NG3gxGILH?pC&{B{lS^U+gE$(I!k?&W{m{pH6 z@*8^i`0cL>xcvd{*GK3-3ufByD3Xzv9io@cAb*3_Al+5kf&;P*qGd%_kqMIr7VwD| zNYj`g9HqnX)S{XKpgC3QbF+pTbS28I5)*l~?_}q(J8CsqDCwaSP?YGDFUmmFhy_V0 zjpmfQP*Y|$clP}9_dny72Rhr-sEeY4D@rAc&!(&kP${WBecfL3x-*YgZ?7mjcvK6h zmcBmg6}CZCq-EOoRF`^^_8GN5rkYoaWWHk4sdA##c?Nyi{;Bs(v$gco5Pb`tqh9fBdf5C?VYi#x|N z(=-y??s43qHEQRFLlVaag-4Yvm$4B=l z=E8}{gGVO50bL2VQOV-El?f~d>V8|GD&`}v;b|-BFv#hnC`ycloVqQxii{BCdW*&nXy z{BGXw69kU$GCO!$zCll<+p+n@eq3ryk@FsBBto|u9stwZSrQ_0p5yq1Ry4!68Ue`I zgt-u@ARXcUR*%2DjHg3tSmhcCQ2;f?1_-2-x#a>6__^&R&J_FDUa(gXv>d^q=?o_T z%=FxFKTKJ4sHIYx@R8xS!`y@6)Z!jeinj#%e23H^>V12Kh>mJgO;127bKAfD*qDgN zoc?_rD>6l2l$ArM6REONS6kpOZy#N0Xl&Q7F!DH2h6H7e4%sa<<2U~b5T47Edabe2~U(Tx0y-yZ>Pw15sh5Yc@gn^3VSw$AMaLpCWDl*R4dR9)B zIe(&-w4cGuSw}a49XFCbH#)eHAG3xuWIO(CyLs^p{m3rj=_OP1XoH^{&5m%s+GlYa zr*7=OqxwxT!R3*`r@0DOh5XqUE=y1C7FOdrXXD=~0^$rH;trBI;pleG?tFe$%fi*x_umoNr;^X zy(Yi6z~_vun9ktpvsMK`;N97ZJcFATvd)uAA87tDtZ|FS#7AG5It)ONfX9c6>c~#O z&mpAZA*G6$5xN(FBciOc+`A2seTKG`63jPVu=3&(BtSr%2^O{4|M6*uhX_;z|B$)@ zVWR_8AOd-Wc;eB3=l_9XB7r0Z3*aGxFb)bF5+o20-g_Vsu)hgBK?kaU2l5btIaOjv zs3MLg58kUF5zz7>Dq}ns7;N$rgE3LXy(=J&HV)qFAQ51Hw8_KpDq%m2-U|_=tr9m2 z63`>gM2iMAz2l8R2GT%*j6nrnAcJZGz?`x?rcr?B_dx4I)f;&{Sj|HPaBi1q5I{UL zJ$~fa`7`}k>W9(s-{N{mAY)Oy4NQ=SfZHxDuu-xdVq+l!Q$d1SsKA)$z!dPnE!BoZ1fAkbqbmPlZ*5mF+N zWC37A(NVdXWR@8&@msvYK?HP=R5fka6Tv2xKC~B`rwS{{w+Oo_c zM%h-L>OUOI)*X8JGpB$WCKC@|(=u?{>Oxw|E0Wydv@@znjhVRq>XlC99XOI5&YqQD z?ssL=^Wq-*#SO;eW7Ez>0Jlc#51h5BK?*@<&^^qKgM8Q~QdnTn)LzhyJ4pz?iK4fv zZr8<86rP6oSPrwaX~)OFQ$aJEk=Y;yYcn+%H?85bvH3_=lh}`tm1aeVR~^IACY@>= zhf76bdkxKj@tD-=(MXedeS{;ROa+@lIf@kQU^s6SP!L%d&WZb~9eh6sw+>{Hrsg2r z8S78K)+Hjn;K}1-*BNFUYaZMtDQ_5N-3`v6fJV!6i{Vjcl}OFARv5WqkI6%oc3&$u zH>bRE6WjAC@r%yBntPu!Wu|x0Xti(?Z`AmEC&V*`b(mGHNm;@5Xfd zm+Yz%gY%jr3Us6CA2R)G6y4dvOxA{S;g;mW+!Ch{G?6V?&kpa9xek&|>99bKp)((A zZYW$6B|7M(f9dC*&MOVOxp^#WZOw~72_(q-TA4vEm4mi;=`R(+XL@Z ze1ADnd0!Oz`z;bzl{j1?kjdIdxQy1st5rB(JC&&T`bVhv`hGp#lt<0nw8zl5eJc&A zzi17!Q?VUrLrt|-Spv|aUESWrnbWVh;k;;8ikt)_TkA}DH<-%#0P%O;rlVefn8mE;5w)!Muu1~#Fb^0e20%zw1o<;F!O#d>1i%` zCM<0gx}M5~3T(vah6Kc#o^QhV`DhPEL4nEPdj`a!uAL{Azg+^{P&0 zMOVm{ThMw zAS6x=pbBUSCqRS}IH444LpEr_5{V1qk!RbY3gAHt;-LkR6cWh)6iC581^1|#Ie3C9 z;V2rRgfB|5KIA;@uk!dH9$7YT>VT$Df_P}b6pB$`!cjHG2mm;z1lx={&>5^C9&*s4 zm>`o-!pIOovtj~a17;0S61-qbq%W(8FD{{eJ9JOeta`kIGTfZ(TE8r>U}$+*tTkGK z9&cotbA#SU4z50zZrv58mI{3YipsywaKgy_SpKXBvB}`J!?~o1e4JnOTcktLB zPLk2ylN+4|>E@j3NZZQXW*_yv5e~B60RWA4DRp)c^&QH$YFnXyzs3W3j-~OOTBG5b zD2*&V)xn&>+Z@XM)(Kbk7J6Dqw|?FAcGyGt;vd55U%4YdR<=>>?K_>JXZj?-w1GtM zlsfCMR0PUBKT4Ya)7h3tBD_9B3!RClVoH>zUy)`6W2xAf#Xl#=Cn)KgWa}}#9-`Ke zUrsSEuk?Wf6v967SkouU{g(Gr`-XUXN4flLz%6P+mgasUUIq=$uZ8>uU3Cywg?Jxlfnodo79y{oF6v$ILk!)Y z{n8jCJ<>Lyi;F{k#go39o4pJk-1>sJl575?Ywh~_{crF8KW-Aq@SE%PCu%bOliK|6 z0XwpW)}}ub?nwT3KKnl(x7gJG8QTn-d1$evY*GYfGjN*D`ea- zwLl-YYwTn>^S=uw10eIifPN?rJGTgHr%|pWTxW7}U+0)lo3!?Re|&%gH73Lh;^Yk$ zK;+GzVvac{p_9-{9!nfcqM>Lg8Dt8!*=Uoq{yLiyuC6Ipoua7(UtycP!wD`k>l_X& z?SxI?YQ-I3n%n#N?ZOP%4hQYnUBMaWXyAYir#3Yts+9`7VT|ZV9mdQ!VPLb+Fj1kl z@BpnI>m|G-qrO$f-qJ+eV~lHDu2EpvfqI3-wSEk@;DC-9WB#=_ftE;Ye@QIvw7~GX zk$eDXb#GQmT}Y(Stwdwp_}wlM1_@QZ;t`wuzPX4E3&1WNyX46YK4{!L5+z?(vr^3L zJfA{?H))tB? zNwQ$_gf6mMUm^c-7y;7=z@i~pLBY@|zZ;;a-D={I8N%7^MuDXb5M}g+Chipsg9k(< z=7l=%5WX}wI}S?MxMvK|-s5H<9*YX%6TTT>Q(u|t7oEhm4k$RMt_F%NN>cf#Lj&%D zZ6pP+#sr1@5^x{7&OzqM1;|PW4EZGlp_3AWLp}*aAG)qVl28aVDJ2FG?tZQ&2a9|V z;LqKc!$?R4$VdvJ@Q<2Pj{0&&>_bo%h+l)u(+iZA5Ge9PrUy-q3Kse$Kzqf|5m*8j z?&lwhCaj|4k0zoV0`qhMF*#kC+685t)^`NVK8F}SC7yV~8t1|ERJGiF_IDJbl?c_6!S^tcX*LN77GVP9Q+aaBOw>DWIHdDrF;n&$r`q;O9y?O;(NH=dxk*P z9F(W3)_R%yi8(GR{+OITqZZ2eSA7g??R~bW7{CGH$UvYDmVSUaMr=m5>liK+DWOE=q9238B z^EGQ`L}4p^R~Iyc(`fj((?LrVuDPw!C3A`;Lb=kPNEF zrozlI+$dD7(`CHyV#&QnaItsbEs64kg3IOCYM*YDpPKigbz;L`z|{#Z$at6eN^jwf zr_kn$tj$hD`Yi$a^~n?b2Kw-_p4&6HrCTGswECYrc%56~hTDO1f+5L-bY($2SqMtG zpo_%gC4GT$%!tsDOfztp%&0F$n_av?`v1MZ{#Vza`g<3L7WT)Ri2wi6cK_GX_|KB4 z*6{X0Swj7?YZ$X(O9m4X5a>e{yc0l2L<|n%A&Mm70fp2!uj7US?c_e6q#;qORIP00 zd#igg)ZUT8S1Sn(#TZgwvZ}0JSGy2CFS7Dg)xPYUcQ!LiUK=Cf@%uEM>2|*6Jn=i( zbiU$s&;NMY?glE2Vnxac%{5&O(3NqLabsQ^C>HPUMv{ORrcZv)*qkw;Plm|gq1Y>c zthjOD#OsSE<-rnU#Y?-4`%=2UeHnW!w z@FU$@K@zEFjyY-H8aWJQ@Ef?a*Ic?L`QQuE>KZko550weq7T27!l(_q%?jZcV?gEh zymGzj?(1f6eYi_ga7PImX|2tbmF9>Oc?&a^-D+B5iE8a;Z%sPi*;r83(~H;-}T3QYE#d3F{SVwAFM|rEC>q zoehkZ*p(xxhgd_iFB`b9n%OM#jxLpUF2gA?fSuxDNG%yjZN~nsQX9qeb4s>G<>s`L zT!yL^y8vvNnU9+g&lG5DHd-ZO+z$4^*JB!K<`SKZwb;{n!C3~ zviK&4cxqYvoze9`o0twI=5+K6LQc=_MyEZGGB@6PX)uF=#sRaQk-sPCgSgS?af==v zJdWzdzu?se;Zkj`V9vQ3oJQetP8*WWl&I)gUw@m1ah`iB+l&LJUz{A@NO+i>BZxN8 z6tKIN-&Tq0QAv@4nZ1`BbQBCLc@br+7{8j#$7*ErHk8>1xIoP#xw3IpYt^%nt`%TY zvetWW*Q*6s}sB&3VPCSzRrWi2{IEqhL*V;MbLJXjZi4#OeA>$8~& zD?o>Oz(pyf4}>55i`)2JAiQ@LhT(*-J1Wu`TvW>sO%ZlVBzm=;w#(ry)kRQAitJl28fm_6CNB9yX<95Z6N7u) ztTHQ$qzH9p5v@4uh|-E`58ZMo|H~o;BP~r`ML6yZfs!(ap&5fJKE6-EC`| z+Q-n8K^z%3D$F1`5Zfe)JTPI@T!fCn=c+vAy8r2UZNwqO6?ECA+!Yt+i(J_4RN<)C z%WYK`KGEi7mL=H4OclxhWwOjF{>@i*VC;PN2%HNxt)h`5AVWe{rmUU1YASINRUMdx zW3KQ_8xW(U3rrRh|KUH$LUl%l z8aFD?Ac-W?%#mY@94gctMs3po&^B-g$D|Dbwma44$QZt7FD?Exzz$^_sP-Uf(wKfu zWYCy51dU0NRj!V7SfmeH1v&~JGYqNT_;4R7^3{|9tTc}!E1{Yp%G%m8%Alx#%E1%? zQ2Ij+HV0-|xdSC*IR&^&sZzt!GNhmBMY${~F-JOiC9=|zBWEhP?tfvdC0w0xd@EHZ zoTSzR3j2DxWYdFj6HbnWRK9HGXqIwbH@2nG;MUj)g#8@Z%&O9vimZMB?xV`UnPB&?v$eGwoy4k~)(=8}!Cj z5JbRmg8$^?d-8dKpT=u(F%PL22?*sOzRZU8#nz`_KO{W;=z$^w1OBu6@fda; z*maGF@_HfG54dOti;o<9@PL7-K{dM4QrR_c2Bk1dJJb1L1zi1N2~>P6KO4oF5>-`Y zs`#?>hWGNAmRADCN7h@qIjJP!QCcMk_gFf>SCleiEGcabc#QwSakdq3u4Qw&7USG{ zh(97%TB``R&_nc!xxJn1_^n#^4LQ%%^Z|a-rcd~77RD$2HADQw50)A_7HnJxYz|Bz zj?~Lqram|W*IDvI3$C!+*lT%+tJj`7+PH|bckDgGHEy-+#0BlEB`iFdU-6_U#bYS) zV;AXO4J9HQk`a0=(52YZv-G7ecI`yk4sH0dGYPL=BH#ixEPRACq#mCQm73=UIWcCT z>*vsk($e{r%wb|qt1+rX9pRlFO)N$`le%~!3iDw?H0ICV2!9lOmWyn3uvzYf{{*N!AK<)$>ya+-0eVaV#%} zE=X(aw?tI{{tYZ{_Dtcg8PA7!r^obyAox7`jknq%^XOh!=i@!q! zAN0i`kk7xdbYVrS^mD|+Ih`*LoNpXe9tzELA4j(^9)a>_UjvCf3=qUtP8h;4oiVZp z5{Ec(me&9JfZ1%~#q7jcYiIVND|T?lmFFc4)Wg3I{*zp^|1AeU!g?`$2%&X;RvD+V z=uL_hmUP2}cP*!uznd7r`AHN%3%@}hU56pQVH-wAX=mSuvf}KlDEc5O;Q=*p%cN^o zJ1hE(Wp?1Y@10MwBfz{(GS)h3Y`>s;2QS$ht$mC4`VP9Wz)WFgrab7ID`(?{IE%G% zko^QNSG3()=1zU9BTvpWa>(Z{ZueV1Ld*(sEVgZI4Qcb_N}?29d2G@0&`|Cjr}V^u z$o6jxj+qiOb$D`FX70e)BFiyDINM$dj$BD?JLjbKgyU-P0vIiKVFCI*rx)7Aa6b;( zt~mqJjg_VA-(133wh{0AB1Y$!j>)CqKhh8mNrIvhexILJk;~ijMN8h(O$Q= z>e3yox9XCe%+C56h;zz=)@%Pk<2?z}>%JtsFg=YCkpOxCwKk~edV_cxv=mJnvlC<8Mr#i-jBN!=RIQhli&|ef(a2l(?sQ;XYU9-Z>r#246=4o6GD8gb zy|Jv?>o&E9%Ja|q%T#Vl`OcJ;;;JUklRTSjnHOI}l><4>27Gy_RBQhglr;1(0yLxv zH@QI1<$BEo^0S@N3HABkNoO#*)k}ihnHZ<#sVdSi`w>1k~`#IHp^e@ap~t$+>IvSlc6^rXD-oOSc9shposG za*K08OT^6Ur-)Rk{Jb5}E^XAerI#99oMZmD1O6j!KZKg~c_0Rf-@W)B++s)vGbGf* zQ&?wuHOg9LAhrT`L`hdgNupW~er^Z{(ui&eCNvIu!=#B3UO;q*(3V;hPnSnnk?@W# zZf`h3;_GI6J))c$K!mz+3y?O9s&qVaxYS$WtTGzzS_V0b8bLGv;ccNC#x(a|ENiT0 z8jIpIh(TFbgQ-aw>)OYnSr2>3XdKekFZ@Dh2*$y_B!^=X^J4ys)}S9w9`lD`O^+DK zNWA+7QdUGFG|qDnWq#k+#r8$?qtKh-c58d2!j}XyLU_X63&TA2tRw=HK~gxY(5&=6 z9@{gl!~a4iXP9tVcB^LnH(#%rZ-|54{C<@zZ4fuV(%~ zY#w)G>>l+Wi+cy#|835rVDIem-|}`9Luc#%YU+EmpgdGWAL_g^CS=IsNMKKa0`_In zNkk9@!5z}FB#`5sp{j039)<8>nGJVjNIG+=J9o&bC?GvV5Yggc0Xq=oT^INlm6x?+ zwY9aKdY3(uYR}%zN5^oW-@9LZ2p_8I?&{y2m7SGc`=59Nq7fj{x(db8*b~WdQA~7`y2Dit`xMnj zD~Iiv*Tam{d^-`w9e#l*WB2Yn%<@M@fiV9#5-KFO7}g`mIq%5jJ}Y3v_E5>?j!P}! zvu^^Ko*YcUm6>xmqWYRLl#c_wc-AAFvo)@VvCWpb9BWZdJMK`kZ->F?bi$+3`_iLG zbv~mR>5mIztESRFI5Enc9I+qe%r7u>K-^JPoUKF-2ptjC6)OEcOpzQ(HnS)F5&vcAMJYNVfG`{8H#XS@i~&r62E^y0fFGbv#J*QsUGPS?PYHMaDbN zayny?T>}y9PPbXv?YVt8?d|IkZ5)ooQ=7x}cE?7{7~1V?lW=W}uH4G*46fwLwldoz zOKhdB%&zRp-07WR72bFr1nO>$L03)#%k7&1uU&gyTSHfFbjWmDQGeUlZu=o{J%9#Q z5TV$K+N;z-wSZF!1Ux*C12t6O=<~woYA6vSXW;(8mKS)a2=;SVj36|K!`qsCU{jf%}`7daLh zdOFG{V#~)=GiKTq6f=;#Oe^fH$WW9446ZIBDPlsx0*`PCtOAd3PV;mWJyZAj&vXy6e5@^NyV0X)n_Re!~9(J%i35L zP@yOg#gt3%MRaQ=*5E{%rs*gPM&r_uU$&$(sdZLS3sohQ6Jm{}!%XR|3tZrdT{;n} zkDXqrvCWNcwPww)RM%V6z>(O6Qh-t!^~@9p1t|7rB3NR@6^X^3wS=bx<`tIUgX-u3 z%`hz8wU>`{%cESv7Q#>llFNJ(0&LYaT-8hvMN=sbjv7fz4M{bV-AcG>qi@yo-)QgR zG)(-KfAFWOT@r*BBo$BIE$FOV5(|x%;;xREUoFB#QYKBfU-b>z=dw#(t8YtS7OFw^D;3wLuK!w5@XUNl};x`PUi~OquM4Ts3im^CD-?=I#BhK>*5Bmr=9BYD}Mb@!&UiNUF zB!!0%U2-&|n%bb`lqq`-S1~rK=cblwVmWi0bP3H&?>8vNppF|SxfE2+lqO3(BvH16 zYsu2U(=WPMyVGB%BYC!+!l02PS@x!CP8HBpQCmh*I>O&plT0m9R&5MMgYL$tCM&vE zYNaGRck1Mnj!>ZAT%hiW55#wKkS-YWg6>5Ttm5CfzgoWV4F-_!3Vz zVAv4v8ptsT#T+bA4CRo7eee?=CcPztAWV8d=B3UHM2QoKM#45TatT-h-!8Rd zLo3ayWx9^-;>LO~J9=alC7`pGgZ9KEl&77%L@FG|BxLqjtySd_^nfbfdsi7PVZTsW zRZB*AU82!r%~n-gmM+zfCM#66iNbkQ%;1D8*4M<1q1sEHn2@rxoGBZri9;P)s1-J- zv0b7-t|H0l((f?f!F`=FJa=#b%RDU1^#+U~dSy9JE_o1}s$lg7j+yv?=aJf1<_8&v zd%WQs3{>4^M)!@JS`fTRWgR|)nvis;>l6)S%=I*cuQK$cMPH;Kc?wNvONn-@2K=VuYKY>Gvdzk{5xDIB8taDM2!7;=tg89ZQ9u} zVTuQ$?F$JRQc^$?5P*pH7+AAo5S(7^i={uDh6sLf*P;Qyg%t_X`xl>#i=KRM3Vx5= z9X;0)WHq|kefM|c+`S<(w^PdHv4Q0G2>uN0DxB{=i^gg#XFr@&F zjq45#OMhh5bo9MfuO3|Tz7o14!qn@+Dfc&mi$o-pnSUmq_`l=t z>p>xn;bcjMRJBk-(@MeJ6!zX6Dv_T`W2AF&5g`8UC;;S6h1dce`6S#@Nug&NhZ9sM z6Kt41`vsp3sYtq#silc>(HrQXGcG1n5N;kQytfZ|rYVmn5~U~88Zf$y?d80SVy~y^ zhQ{t9XeMZybT2{~3auerZ*&1eWl9A!Xo7=;u4$xgOTwv;#Nz1A-`KK;w~mp8LI{}6isu2Fy7g2tWVP6r;N+x->nT?MZjS)#N{mP;DHFmpjW zUG!TshfC_LLk3?x?8S46<9x&rF8KE(uFuI?|7G(IUnoxafQ`ekJXRrT7gMJ{Cn4!O z7$fBf6D2R-3;ZzOjb>^v(%&6z;+I(^2ztULur0Nb_RX81N~XA^&kCvjYRf7WSzvFE zpMS0tid+(7D^FsV1UMlFk{_CJ*9ZfI?%dDeNT&Wq^Oi4-Nisfu$6 z%~iZMAc@~UEV=Z=yhb!D-vyOAI9*0WE=amdv0z&)d)QkpSE3)50m1a)XWU;5Z%c%h zu>`Tx3Sq>8=W6i?CA%%BFyVGBPNAAE(*(R)+-g?dyOf6cPLZ>^o7360mHMkyRTGk~ z4IV7sQ}UG9|7>|B`fV_G+u1cWaKCF>cjopo}20 z#aUdd<*m;YZpqd>t?vr$7DKtssUq@uqHK%oTNn1o<+GEbZ~^^ObZ5J`#EfKX5P#a8R@b~F zh^h`Obd{e1QAyKzz|`~o8_~l=>IqRDGmJi*)e-aC;e6-3O>lNTKtU&CbDXeL7+&Jr zi(>Wi$mqrr2Nq|~4Cw3^a$hDA>HTHFn;l!PcJ!@U(Lc6B@2>lvp|>4NpUvo7-FjJ{ zwxR8VuAz8mge~gcSFGn8v2Wc`_qKsPf|ogWmTlt=LcwFb%4>hzLLe(&?_a*HZt?Bo z_s7jaGhx>TuN}^t0|UiBFe{mk^htB6myWI$;a{sTz7Y8q=Xz&5@He_fy}l|R1^!Y5 zYx%$r`H5CVlI-LH`sqL*hS0DfmI~0!<*w+_0aTa>&IU|N{VM4&e=Uovi-I8bfP52n z^I?xto{rhN>=BNxC1lg7(;u0^HBD|!xHdpgjl0z?%w? z<_3`Kb6$Z}@D))NF_TX5!X^08K54sKCA6{~k*rV_P870po1`QrV zW=>CRPEX!Q^s8tqMTKOKBUMm2`eoB;blrQMw>7LysKL8^Y-Ng%?3eLMP?Y5BJq%s5 z@#cP8xi88UgGk3%A}spMgWTMCB&-+i;$g+z+7|gu5R}gI<>F0H1gsVEzr1Y!q))dv zU5qCb!T97nXd@}$Qs_Vv*~c}ga~H*&1pf^Dmt8}sbW%vAEt`3j6#pdN7tm?TAS}uJ zWnIupm}!x7{Mtte6w_YfvxN8`hkT;ohCyqW8^JW~jzF$zuD|Et!O-M(8Dtc~R6OVS zDazG*CteuoOsl{T|NoQB^d-csiJl3QG9bz|z}sMg?+q(t^l8)=N3NJjrWUtAwmUO0 zTWo+9JSjg!Xd8f9(C~n^i7l!>nr5)QoqZY0W(Sr1Oz0ncV6Ymdzb z?q=A%K$gn?TFJd#`vR`3*soq28}xdCLPElCje5r4SBdp14Sk3>5jakY(L;s{20v|O zknr5eL#y*wZW7zzqY_Rx#dT=fFk7y?wg-OuK09it4XRLRzx_UEJxVVa(fr!JBo9_@ znd_Q|G|uKW-8M{L(C%WWyX58`!kzfShJYnrx5VXaK`#Bklo-Q%G|Afe=Cod8vkYbz zxOIh+xy=dJ&yGTi?H;<{FuY2xuy$Q*;LB1m{AK_!Py)Yve?=f7ooy8Z+dR!cmGN)# zx~!zuBaSn%V`|iTy`tu4^E1&GOyJ)opfBhxJ#dQ?Y^- zq5is1pk&tHQz->>X;x>(!XXCpC)|)E>dH5D16IDNW=iV5sVX_oxYyLxcB1@qUMR9} z+Hg{^f7kvouDd(B3DGYuviTJO^cHXM8`O7CA9&nGSHkLJpgBH<2p9qV6i!mXM`;3S z>CyxeNAe8ncR|U9WGu`Mz@Y1|Tt_*bBswj<<6^5RQ9FX*$h^VSf? z)lttzeNvGflO3p~bJ{r$&#%d%If?I2Hhs~Ku@yr?5U{g978idk74;L+eBnU$v=_c! ziEWf7n78j4VX@);rM$f8sK$lLD^(9G7F=bMwUh zn~Sc`HDXk(dOuRQb#I({f8_BD1Jv0Nh(t_3A9-f~6`cCjH+3i_U;{!5gN-C^!TpIS zzu$o6%#jFfyKf_~m`zxCxkcg)*MvveIyT^|l}3{F=W0nNrO9Ff>aD~sIp?OSf-p?O zvZz^rk&-&BwH@z)0RwvOmz~QXkjnsKvLPtC04aJPLDvxK6;#U_M5=+lg%HAUJwbNF zzkMBCAZtf}PE^nvy#b{RT*#&)$JHp(9c*fUmIn0gz63`!-&Mfz8U}T613gI`u6(GE zC?=!WuV-7P29()gWWyJpc64Y_bpbqwRx$@Zwo7S*tX z13>RQ8YeX<22t|)V}lAf@F(v?8izsC1N_p%Pz!drzT6Y%%GJg5Huz`{QUe1I zh-*cv{)HQb_ikva9JU^S{LIG(9pTJ9owj`)XbG~*8!>8`@m?uVisQUTDh_vkzVrxH z2%Q}^MI14M5Q;2H4d z_0~fFqi_lGEWC)05G#uv%+ub1N==8zGx8*VYkSTyh&Y$?j~ZWzYTAO@h~^%^NEHap z2%u>JeJEj#H#7s3A;&K^0(Fc4J*1E##$ieHBag4H2=JHzjwII7!N#w_)N? zX#;$$;fm|9#;JgjXMs(sejRa31KgP7ms174jNyjuz>&!Tw3_}~Wl@YKOtz;CSB75bcC!sm%Lra|L{j z1%N0OaBFi55MmzuS6l@Km2)l=0N9`P$avs zN0icl9-16^w#`qhsezsv_W&C`F#VytKaG(&qjYCO#`U-Vdk*hEVXMTlgKX=c9A4f} zpq1tSc>ST^YGh;SY(erru1IGELl+lQr~d)NDNRU$Fk*f&>5j%0)kt6ZA@Ve%;oe39 z0u?BzD0<9C*ThCGCyGOQQv!)R?tc0FLco8L9OhrNDv8`9{T^%!IXeHhkJQhmhF7dO zNf-i#Bh8kIbp^kwRUU5G>NnxN1>?E&B-fIt=p07aMNM4sim7xg6-4Me$AK zHu&}6XmAv4Bbyp#>la2+Eng$g3%zJQ*2>pXKNqiDCVtcaQ|nSmc^Rt9iN!-XQ)R{l z?;0E{Ixbg}*+ed*WDhrx!VI|(*z_l0cd!$mxbIUccVsKRTijwQzbebUUTh_Hy;0p{ zO}kJ5J3kbQ%fhTW7YN>HUXHsrG4N(2f>jyB2KoJQkRjl4IUM%pKqM6AsgkAqhYOH#Ir?t}yPI-3Ud*h@_@=oZXaDlto>qUJ z{_gvPHb8e5D=11Afri1ZB|#bkUe!6Cg7E1WO^zpAq2lO0 z^I{ER)hMyUR;#jQAZL)Od3iQlZ~f%Th^=kO$+rVn3o%He8G}AS%^rsvIJQ?p6>YO} zx=l5vV{e-*ZJV8Joe*}Xp6;FCiOLIc3Jw!l2{hb+sg_kM5P42KOxK$?>$Oh|U|f4t z0hPxpwl-66$&syEdD1ZGfNzjFdB_`wP6upKcXx+5d9L?Jy_Qr4KDyvV6#WEg8jjVn z*m9~y<$$WprXD6NE2Qpd2GWF*bXx+Qg(nIz3m3wzIIrA7-3(V!7`njF9ggKb4Octl z3|5Bb_dM-9S_32SxW{0lW0pnrK=hXknA+MvyBjk54l{4Lg1L}pAxxC*oLkyC%)NZv>C8E##teDN4k1@4Qnt5h8T;hk z&pCo6@lYf##~(<8nnPXjZ~zb}ifvqW`^Io>XxYA{81v#SO1;)j%hUevRhfPxP1pgK zSY5c}-arAD8-8c5_FxsAs6Lf-3B@HZBB8}7lDqMcXc_F8CVqlOz4C#^Ak@L?XHi)~ zu*R5SQi)muyBC=D0u)U`O1~w{JTMCOJn!^V-Nf&JYsAl0if=umk4y|d2$Kidj6%l3 zcXvj|h09-s6EQ4horsT_qp9)^F>_o4Q6T9RDO>_jJX8^L2`6riCgXHn0^{N(Rp>VX z)K6IijqAWNVfUbIKWbNRwF|YVz+1`f+2H&EyS}8(oDpkaPH`@bYH%p?`#s|YvS;2&Z4~km>OCW-x`et|%B9Jj3dM63kM4?A*ROXjcgy+8n zw4_E39uk9nj#k!et17N;ujsb9Zg0C)ZR@&kTY1lVyYoFbkqiCa+$A~9^}g*m{rdU+ z*k-+-r-sCT86bZRBCrpfiq`-7ikl$lxeFn9$VsKo_>6!AMlm@sOdKQ0ll+w=#E(Sp z%tt0F^C=UVK_MfRp3FpPtTbz)!3gfakpxYz=A=1d5=>w>x~O5=LLh!{&WAga!tBGb z5oZ3ua5luqhdX6^=)GH2_Q!LY zgdlf__Y__6CwZP7efswfm|rhk|L~^n@18ne_Q6;M$4nf?z6-xzbQ;4J8U5_t5RLeh z%t3udhvxK*8B#jIQ>jp7ux_b>;}Bb2DUP zWb;G=Ct7(k2J=R+B)zM9qq?7_^p9_QsFcoB@t?3&$9LJ*@3!tYTmI@XSDqP2dcE5b zobETg;0H3|3irzW;tl~>GFIZy{N`b!Oh)F)%u+L=WZJXy@C!3_sd&(XQ7P8aEGwnB zB%gfOl#Qy;LMt27a$d``h7@Ha=&r+r-15*p=4QR^X0Rv}UObq^7UV_9%O2l|rRESb zCE1s`;P-uxYLo%#1teBUDk&l@mD}ZL(aHv;qW3UzToD*nX8e*DPb+rGl&Xr9V%1dc zaj!%#mZi!p$-xpxU0)q>3RjXR4~tg(y67ZfH?9kHZ3#TX5qm6|NFn&=B%E0zpZ z`pBeK*3el27;j|wgFw5Od?HxpW)T%Q>xAC)jhe6t)Zlz(JB28apwTizVinW<9IQC8 z76$Ef1vI2etWazi_j!`Vr}W(H*m!krLq<(&Gae!4l$HxdTRnMqh^&erI0B29u;nwO z<+%rUb*(zFQN;^|Z8DAE%YU4QWXO>-SJ=dM z7zO>|%H3)1!?Dp1(@IH1B$G_CgH1V<*+7!A36*eVy`_TlOk2qRxe5d_+qMn|#|ec>DkmM$`E;G`D2kVB(@ccc zi|+us=t0wp)js}?i#?Z_b4c7;Kt*+RTU=1cir{yOrXQcRt%h`X{cKZ{Oo%p)B{EWa zaXbKKrGs?PQ5dG=L$g=+P8ou%$LvAPYVwxtDSSA)6`Nc!>`7ugA|{!lRs&J)1j#n*Srbh$o>j2bav7&mS?9&7Yhu(k9un#_Zpvmh-sQ}%=QpVd53wW zX285v+Ry8N)8S-BkOeE;a;OzR>re;0x#tJg%IxVs0Z+!A!83kDNQN*(3|(s;<6b|y znXxr_L`RmD&NFF3oWz~6HFLzbb}@qUvme=AvIpKBA#*f454|H}b&vj;8@Ll9)s zeN--z5QXjr_Z|tZ;2vqGahD!FR9tjx$Kv&3Nqlh#?rHE~!0}=*9QJ+=M~7O-z$5V$ zWOQVx$gC;@)lM9!$A+=;YLsRU#M6p@;VQ3@6?taxly0V9tEv*bfI(&uzRjmWuAW%Y z7j9Z-Vznz;zFUHty!E9iRFW-AoPD%lz(SB?&Q`(CoRxco9V7T z=U8@g(m=|c?w7GW(+9DVdKIY8SV;=OA#b<5g@(S(OdKTghj=ELu^;wUb4v&pTp_1i z$+r5G`Yn4Xm@dp*x~A%>I*XG8B^-Go*Fv5tL%$Y< zK+z83PW1-h6A>TUxGBeQr+j1JI~Wm1^MQ5uzIO!sEieJ;Ht-M99MJ9WuVSxNz z9QtN|`pMWsY@qC?`tpv?mX(8!WOe=cVDL&fxCa-8Cm$KygGUtVag47t&VLwRd7SAP zUWuIP8&1p}@&fSY5+8H0O*^`Ug0}`j+t=#bWc!@dGnC|2y z^Zn?%z<~NaD_I?}N2$WIxy|3PyHiLM`E%fbpq=q^J|RrQ;_lx_C4~c{-;q-kmQ4hb zvK7ND^tm>-k|YPA|MV#F-dI|0^O`zQvcVp%sC`XsrC)@t{KlwedLhw*DbX-}5+X%( z>?sI`+;#t6Cjt-tK@-|QF5-v|IsdG|_HlHk%Ly2$nN=?2^~JKq5$FcA) zSO`AKl~*v{$c%P(IcAxhqjl=T{P5lPfaszXa>zF~y|EMuJQ|xa+XJ}h_|~G!Iyl{D z@#2{&$#2}Y&ivkY`s&jv)@HFP4_OEeFWT~?icaxN|2vhEsCx>~khUCg3FJo;glUlr z-q10Vdm&|E7GcUPNFbJR<+FyxF)r= zcTRr(l@q^ibJllRFRZn^2@5RN#u^>ED6zb^RS# z#4b7=zEO)IlJ{}h)JrRU3*3XI!_>Ttt z`{Vdv16UjXETDX7o=@K(4us!V^;0p0TO^a*BA#Uw>`@PNiaWHE-Xa}fH!V|t4XSkQ zg8p7Rbx{x?9>Xi%pdJSm`bZ>qiM%uL7^TH+dhAO#*Y^T~ei1g*{qnnGx@V-UoZ3Y2BOB3CO;0u{mVVt}{^x%NrXbV||FADa5g3(^ zN*8LC4pn4`9v#G~07J`wL>J;*5JPe@#9|S~`3BD;ScD3J@`;#RjJz*iFTU3kE`^W+ z=8B$dO7^%JqdsRMZ40Iv8?Vs66*rMC!S9s-rApW}TlpgRu576q;&zy#$pO8CWmTUcM~$DiC4pd)O&L<0!11ccPbxdo8#$P4i3!#+{f5!xge zXPk~QKJ7?AtUZ87%-HP|$f*qIp;0GotmYER+pnW`MrhTsqjqtt^JQ&9wf54k;4;PK z3qQYVqvq0b;aLV=_ca3aOSz)qaci`-c+^j|x15JPeu$-%A0pm+xKK|TBtx2s=Z^)j zk_V(1k>K-z9T#Rrt~;dMtHNBg6ERO_h=U9E{-tGb8dPvf>pFJtQaY+qQsRq@J}I&Y+{zw zb!=J=<=Q9Kz)!E#g~sLurZ=27ZSC`{yHt}T>0FnLJGgVQJ~(o4+lO-(Sw|4hq|xpa z9T?#^A; z5X(zWJW=#Rm2T3{t|)eu$5}5R`$0SH*09A`81NSu0t;}%68*~cu`M`&P~sTVRfLNy z%B5I?MTD)C%3KpIW~3u>hTsC6J&VCkZA+-n1k{rI#$dz=*>t? z2y#sZxic!-47)d41_P#SO>==S7eWodFzD+sY1;K`W~mwuAu}{B1{pInZF^Ei*fi~v zfoN`v%RjxdwK|Q0?WnP!xN8B}{>Oz+E6-*J0a37)bF({Fr#ctRQAo;ds84hLRE7{a zOI3M_Z{ZVS^+}Z66QYZAX4HHhnBy-(L1aIe+LFRG;2}XnrTr#=q-X*duPc199?XhH zz1xIcI#)@4=N@PIF0|+}*dL*Pj5{TM?Xf_9%y+afy}CK}1D*ZP(+StBnhwIQ1Hay8 z87Ifu2b~8W@t-2zKC+1r_S8}J2^6aTq3{au6^D)SF9sd1GT``uqz#F?D1KvTfDtUx zzW)e;?DxUn@V0>a$}Y#qT|RzGF}`BqIeZJRZqi%$>JL_>Ly$8N@Cgw31dHB5QQd*1 z8t|p=JJ5_JaKQc<1(F+u&JHDZAj=K4<$zY-v*`X6)DAYbCx;sqcgV37b$HK^8$v%9 zzS;o3JF4|bD%T%(M*9L$J;rYoR0c%uCDky`3@n_>$Ps~Waq2NUQ6LL&NlRc@u!(zJPXgORg!eh z59BkEMg&XrC?~KRxp5sL+4a+t?@hchD@^T$yfe~ILQ8FruW_&Lyyh7vafZCY>*G7T z`s}DP#0B7pUUd=nEPbx&X-wS(mBX-GvZR>D33eR>gCT&V2aeXxK>e)>g)90L{F&|+ z^0?b4iPEr|5^ky4DDrvxAadnOYNP`W*3KhNv_pn`Z(kzdV+Wuv7Vsm7IB*6z2LSeQ z1zKSM--KXFN8k&TU=QA$@kH$Ls-PyW@BjozK%PXv+qQs_5+HB#KM%0LMn8v~FwlFD zj(U?e2Co3)D##OmNbPqbUFCWY#XHDTUrA8ZcF?LM#BVZv(FSj{OG`BN6O9o$Z#4W# zEuNF#``#+x;aym43U<_mrx)N}lm~hLpDp<}tEP*apY(L}&uIQfdjMqbWKM7BU}$V% zN^j}rNpEQ9LNDp&sbuP4@8t6ThNgdJF3bGnn_1o6G&0Bzpe7n9WK;eyYrhmhlQocm z1qlHwh9?Qpa%KnJP$aE4tt+})h^V$TnH!zTi5iv7tzcEHEv`c~u2svG%bl+CR^O*R z>`4=Mz-O;5pL;uhZ=7zvv%Oor!^HXi-Uo@W(2~m^GvOE1YwtUyICTg`N~O>pMhbN% zi%T&|MS>LHwZ92eh*R^3l^9viYEZ%}DMlxysz=@{$;2BKq9zrm(x?YZ>rp_ zq)9ZWM4|^Y$uJP;50l?Hg{ZfmacOQ*W!0&8qUBNKRq6U9M)i^9kXPXzu?{+pj~HSt ziH=*F+GQzNx;qY!l#NF#qs3M>D-HK1a-+s}aNHcoy>rPPgW@QWl$<%;b5*QXZO!l! zB`uP@Fl zI8X|qSGVLnD{3Dc!O`(4>F<$hZ{HYMrSPd4#8KtaX5)yeQ}#%bI=y!lvTK@LeT1X3 z-^W4iRUCFn8r(&aLTj9IN9)zxzhylBSrU{8tT36U9B>u)CehP-UfXn8N9&4A7r zI3d9^dek~vG@y~yN172nyunbGPmF&Pc_HIj;9)}>-a;Cfb1l=INXd>XUwCyBE@hdo zq5$n!df=hni1IsVqBs}m9yt1JJ6&%MO9qr1wv@@btJZ|%LLZeeajlx60O$UUtA~&V zhkkig(s+ZY{|SOSsK9NTKy&pFVFaafH}E(v_+N|}OcF8pngwLgY_tN41!hvcU1EzJ z@`~(5v|Ed)(P(k-4wgI#dCgfk9jkVfY_b0Y3z0DBV{oXy)p-Qz=CcV2s6rEQgM<_O zT1~DOun7}AK6qV86cJ-jMU`<(t_Hde@m3eci15G})PRUc@AYiAi8rVZLGp||L+TTI z^<_i9fv|d3u8tX=rsng~m9R6``8?9HFa%g4>>rc`j>>pd>U{P;Jl&C~9R=pqm=#bd z%iggt%R=!M&1eO4m^NvJzwZ%AsaPAmlfxaWOPCQiq+klR6V!W@%B%7l2g7Sw(ZpGq z_$GtD6hx_*U(Oa7tk3gLEJox13_AD-w&7n$1>%#7(iotfD)dfDqDO0{ST?ZH=*{6R zaEBm8A0IRWhOZun*4IxHLE#i$IIV1~bWYmVY^#+QxeZJOv+$W`EKOQKxDr(9uAnK1 z-&Xx)XNc`=f|zix+ABD3*h}U~z0)h_F{8mYpN453b&OLv{hh{vfZHgg&n+ciM4nF! zkWZ8CCAc3sGL;+ow*-xG$zXYvR}RQv86|(S>9=D2rQP~!#>yfI zrd-Bu_*AGpcL|nHA~+j@C7*|9B{82r&B}#wZBn&{Ye>&!*bauDko^Oi89i1MYPmj< z?`Wl=Z~dm;Ory1u9UkW5L6!uZe~K)bPN-Zf@$yBO`g1~r!K^xl zoa3qk916B-CY3E08X@EGkiFjP9c(FX6f@|gTrb@1GOR&}t`G2& z$6hcj<|QlT8#+9Z zeRGZ|{34*t<0;ckjXs-fEceO+xya=%-6gefU#GW1?GrWH);M{zjlns*I6x`u=)BQ!<~tu!Jw%)>>UBy-{k!Pv2G?$M3x;F8FY_bTMZt08CA$xn~- z*}skO91hG_k2esMY+tv?+p$xxr;8aIN;J`{d8~^L`N?P+#yvN@S}^)a4Qic=zI;Ms zS&ySUafbU@q*2@q;vP*frkngicC@GITJ?+533wBcheqjyFbk`K;gdL~%`tEAA2z~V z8TPLHChHfYt@(qAOq=`%cgW4uhfs)ZD((A$7F=CE&=v3N1QkpW4OxO2&{B8X9Mf z%4WN3mxdgzpP+oHChA?nNBU&y0NWGkk()9-o>7$U65og;jXitwy4I^wb66PXXVExf zppw1yK`O#V?RGFMd&_U9pD>hu758!*RBP^*pA6qp`{FEq$ppd-6R@b*yyAbRs`aTq zabkW??OC%A{W(p<|;BaDI3Tz-@ElLGM6+%vBu%4p)H2Qs+y2Mg{N+z!6`-~EQpMyQpQ48HKmfe_1S2t^{8CxIK)x0C z(^&j6^ylAH4eebnaI2e^hp;5!7R#rVCoz#A+}m*1tYuXH%B)tmm)+&D_~m@lOzkMV z$;NyS+FO3I^%dRev-+j&3fDvY^^&n`f&P{~e0>KA;a_?qzE2={+(r9>SU9A|d}RG9 zbI><&j~qt?p{;qxXb#~=;*93xLvLPQmtq3nHU@eeGl`;Pu9L>gr7fE#G<;e7mynRM zVD)MLCA0sh1-EcB8CT4xy|07XZF0hp>q@%BOG}P!7lQ89O+M^|8-YIP%n@#OQhU#% zz9{7$Z4zg&+aN8#&DPARrJ5H>pWcZeQ6KIlvSq@}S(y)GUEzmu)1MF}3-urZWD$-v zVIaeFksz!*IM7w;{YS4nn56lf+vYmg`qeEeWn`u`&RmL17y318Bdu2<)%2AxYFYjg zS}dkIEoQ`8E`aGz;%YeS@;8XV%y*eAu4H9ue+Yuf#L)5AOSGnNif5c-b{<|(jZ3${ zt=I|mEfQYY;2oT@%y%96#kexk4S$S^a3C28@1bTKAbA&WYbuCWS4+nGH0%u3;WYN#)Ye{78DV)hQlrW* zdz)Pf%shxk7m__y*Y_^NE@up1h6D(5i@j&qNAE9>rW^8`V`lIBq3QoNJkKyZ!?C*) z<)^)bU03R_6b$r`Ouz0e((Mm(=GMT)wa)3uu^;OZ#n!-WS&v#NJBrTJj!a!|u$75k zV1_Kpo?|p1827*MS5{qGG%s?z4AQNOi5`}EdgWk!J1lG6aNicD1$>BKRf5Q+@Fec$W8ji{@~9I0tAGBB%=ByjYl5xI!0iMi-@#_<;vSL4%O zE3o3+Vg}@Fcqc5aJp}(&xD?=Dqq?fa)UvimkpeBo_1yO+42A zgSIV+kF8t0;q^9@xfU#%@X4Bv%2=Kw$iCv;kA3;OFsK6St1-7t$v46>y=Booa{<=m zHSL%C0$bT1&u;cOR@K~}Zg%|)z#Y3fbuCc2$v1llQevT#s~&_J$QR`RUE4C?kU2b8 z>WmJTq7>J|nx9Na6K(39tgUOkv_8{n+Ob$&U4JI)+OetY+sXYMq-$S*GxI_A7YD<6 ziOv%nP^vBQB_ndF)(K}y-&>d*g`V(dRUWLj+qU@4sVzY|Qs`a9_omRc_`Oxx(V9QS zrf9)ic5+wT6Ood_ToHe!Oo%H~%7QRu(a{Bn)!2q|J63U~P>w&JpwO%{=%(5Ir6{$* zXE(0=Dwky*xT%TN*wN4HUe~3q#{=H%blgUNhK&j*xHz+?s^NqrX;8vCRaQ`o$ZP#A zm!*bS;WS;~!$O3u0?@9VBuK?COOXmPgPHRopmhU~ zcSc)xpu(*Lup?M;0Dl3*3lI}FdLrBrZZ)SnCctQ-@jfWlOFx4)!JZ3veZTrOWnF-7 zI5R5rhX|pzlE;NVGj0P&;{txqc$|-(25HC}E5 z$f`GcWDu}x4EO||We~SG)`{HViQfg1cjzz7}3b54YbGEn>75B9OJI+>|WgL(EfI6;Il4H}N1>m0A{8 zW>ZX9uGF%#<8EBh-4<6S)PG+C3%h#JB+y{t>#;~)u3WdV*Ri(evBCh816qY zZmQ~D(apP|O5>zl^YeD~tTfJCZ^$Wan`FT{FAIV=LzLJwhdP)eTe=_@a^>+`p-NQU>y+>#|RMni12d_slYBx@Lh;Jdt=+^ku;y;_8e$37G!G zdqs9eb8q}*Zi{ytqY~l-6Z_YFDsCPnrrmB2=B9Nn|fb|bKG8G0|d|qxN zL@jZ2ZfK2BU1dgX+^07fzd*bomP%hBZoY2d)P626EZ5QEI~BhzIr$5=60AI^u-Lab zpV57GEfd1NG*ydpF0%n*SAOhB3GhcLiE;B>gR`B9Kx_-iX(0P97xm>w1 zU^nS>;`G$Lk|Egsmm?V3*BRA$$L97SI#h$4)^0ZVBlVUyaE3#8bhYN+qP}nw)V2!`|ER(d%GXb zy$>^~r&yF6iL0`@9Uy2Y=$ruVsHPj-~GL(j087P{!0U>C{1^{Dy@_1aGS zt|YIH1{_gisGnm;4=8ahL3Hjwu|XQdAyJY+v?}#kWDcAw_MkIoQc(94NrH8tv!=oZn`XWF~uA zDn@hJi!gVhnsCsvr=^NTM4M-nWjF`JC&JV>N@E{R_uH0;lHBtHni{wLS5@_*2XPL-~e^MZStE zwx!_dC4OZ!l(J{-LR4@m4u#CbfU=*R$O4x$~+7MC1Z#3hIgT%i#Tw z$lCEB3#eufai)E+>CQNQz|{O;;&uXMj&C7kL%x!G!UpFuAbuiN#a;DEIFgbd1*f3+ z7aMt6n}=af0%yHSp{Ih-c#NctnD`}sfhq$DbH9;4mfM!^_@jk1kklNR z3786-mtyJ}uEfS?*J9^#?1Doy*WgB5g2K97|CsGS2(CkhXTlmsAtO|~f)ttpztj0| z^T5Q*vc=r$nJsyQ~57Id5kFT*IEbIxg0N@(AcZ9<$aS- zHZ$j8%La5E^KY-KEgCO5eu9PH3KFG3+dk@py>m~0Kl&4xL3DnxTmuaU5w+TPCge>- zS9uz{-O3M=>Y&}{ztXg$->#r@&C|` zTQs5dRaP>7evM6Uj2%5-L2wmtNF>Is00JyQP=F+?A<_weEL|k%Ci;!ZW_tpL#YL+$ zM$pZp*43_xN}d%JCxS8d;P1XG)oN__c3QV~Y}$5qI<;G0K5u(6WNdGOgLj@CW;2|A z9`kPfa({EXU)sp?2n#j8B>nk{ewEJqP(Q5vA1=aKev$L5F2eJE)C9IJocNJFP5I9x z^XOy5vFcd(EKvAAOX%;M1U`g9Rsc{J5Z@W8{7s$x$L=)VIpq%W^Txozm5ner6I$sbTc@2&mW(?z+GW+>k^xenk1u$N;-%e7 zSxOd@DW3%Vr#grP9@~`;AUp}P$C^N9tTAU0$;zad)ek%XwFp3<-F*rD0_2f%%cPY_ zpUfnh`sbjbJrMIM?ld2~8V03-nuT0z_AUA8Q+zf3|Fs$d)YeSL{)Ry;pS zA$H0gr~-1yx7wVoVBB{wRi-Hhu~>m@doXETojsQ5kX80+PRdgr z6hPM^?!WFvmAMGV;ZQbjrQ9yCCr`?hVHHPaQz>qerHF;1W&+@mBv7sqgX=$@vR^rtpKeJ51|J7lVCm=zHEJs!r(bAQOZTD;pnXFs2R4pZmZ8ecIOA{yqz8i zXhk#0GBr`bn6XHds!G&QIxgj;Vz*UXD(SqN8OaJb{1;lRSG_^a1+iW41U8dk#>&Q! z%Z4IXHWTjHCVuYp-#JE@SjxhSxmUU3A2Y{S^GKd zVx`^X?$RQOFDsJ8D%d~opqToe=E7oWBNW!+&0vtZZwy^DG05e~tNzTfLoU{^o3 zeuk*r-^C0bASl?BdY73@w~QN8mkJOlz22jhBw@>WDxej#*ghdsZG$CPoYGCA*J+4G2@&c+iwK zV_Hw`jkyeqx)EXYr^z&%b_lG9xwa-2E1mnFTP`!>BDJHt)7rl*AT7gv)PHHQIAMew zUs^`}hkrxA-F1>(8CQgDRYTI*dP2qw3-z~2eT*{%9GbK=&!z&J(<(^RR^DBT4MG&) z@7l$^tZ8G8!eM2Df3B#q%3)e23AFDwz5h?*zVqf%M?aD>gC)Dk1hqnM*l~JV7PzH1{s_Xa^MJ@4W#LSwt%$8WT zl-jboa%bXel?yTp+tgFEO~_Y~Y_(#hbL#5g%0-*OktM_CQPoY-qx*Pzp zk{#!+N%eczkUF(@tWm-?sCyRmxIc?{QD#v%g09fg$-zdR?W~#RiGSBHcUKEZ2d}wg zP|<*n(Q4#dd7lcT)+Ql!l?6iTRNuLF2c9H|Fk9*7>N#xNX;ZebtQIo|vl1&9jA34< zFxZ$4H4clY{ul*g7e&;g39lqV*)0#+7ci)x#jzGThP#EfjTRbIhadt}tc$6jA7HL> zG7s+4R5ADWHrm0RwOUXXDWes=p$f-clHsu>9)P~|;A$2>Jb$T%*eSe=?N;2$QteH* zF{s8?PwR7;a9~?z=5zF_mRt=(zTDYReP_B=bZ6O#qy1&SiY(s^q*kxrDY#ox`Qf@% z@PHq>etFP=@)JI>duUVX&AJ`9zSgzTc-S}@rMfCrd*AY|n|!_hrsD74Q+)60mOr_@ ze^pH8Y+qM3)7xNbzf^e_^p!XWQ}qq@%U`@b2Ts8k6{c5elM1WA=ERYtkK8W3^G(4& z8gtMzJM&1{&1cUb<60U_e38ux{zdi%h}DZY)HXF@6Nav4$Q9?zl?U7*)%V}5jl@js6`k9-%Yog*Go2&W?EDr8^ z7fsPCY)e3=QuWQ)ReO&Qo{&E;8&7O!Yz}UZnhY~}q<$(GtgHOO>Z`rOrs|Wtt^7hW zax)HY3!l7&D0TxK@_H(jqFSzI)kyV%~aK#Wf)DkE5L9U$nhva8#hyQY1SEQ=lS&2T1u3% zO`6LCR9E?>;e&PnJUq?}w%tD+`iTIx`~4B(=5Sx_)W&84b${RQ5l-1R%0UdWQtN8w z#ahD^ovn-P(5)&lwkq|{;MHLDsj#RL z#lma{6<3Qk4{8tSZANxW@uteV)a8OFEHrl;t$(5%Ijuan2j4qztahcXb}aAr-3_m9 ztsM8wK^;{Tt^WI|w99Kq8-3TGF?L627mc(08v-1Mb!YB>n_!N7;}wV3CBw`wXBn>; zU91@~uq91rAHko-SsF6r<)UG^Q!qOQE&@%|iIt%${XEv9$Yj`KyUtK77aI#w7@c;j zVAaz5D_HC*;RX9#fA~RLmWfY*d1D4Ub{$q8a(q=!*};YtSFj#(NwvMuS*p)mU|8bk zR!kCx<%CzePA$`h+mtKjXh`Q?Tc=cDs=XGp3z>d;+Fl*|pm5T}r)-!V*M;ko@B1uCXHOp(FpDca9KS#k+)}x2W;dU^5PQxW z4OuBpslpuz%rZ;J>t>YlCwkPs^qpb=-Y*VyFJ9)z6N~I^!G^~Z&dh+H>Tdj6l3%=B zjgru$V5as7Jv3zx3w-uj*q6nJ5M?k2t!!CYMP;RcN_r`CB~VW@01C7)Xo0_McBv?b z%d#$40}BcSC9gA?a^~!0G@9FxINbdCKM=nlgDL&YNGE@Lb6Dz$GCi$cobudF2`Wbk z7{~xi4)PaKCd-QJk`$kW%b7OV%#8aAA64B$IIRuefYU%ek?ivT7>p2JbU)qkMJekX zAK0tK0r3}SO)IV=J8F@Rq;6%9aBbmHgCo<*5|3p*^M!Zx>cJlDvJm~4<{ z4fGz62f4zr3&``5ki0Tr4%)m46Ux8-yM`0y;fiKr?;`^g--{Q{Al>i%yE;i30#Vp`iQVX#C=f!}#HyVip}D?;=(E zxBXET)=+OW1LV#lPl(s3H&1w*L>M(f;$^NmMQFD4&o4s1@wC!(YgX~B2DiO4yQ$06 z9~xEhqlKHm_%6zD9!|^-hG-nkh`;R!8)nSq&J=e{<#(3HMc4+}UitN5`k7+}*=73a z!VEK243pXn;TTUs_Fma!^MY?Z_?&KZ<+-621!7w$OrBt&hE61}0=b-tSp@i9@C!}x zBfu!HnPM-8UytV=caJ78&pt+<~mGaRs&KhdEidw6}6q}tDtm)^a#(m9zkJ;h` zk40pQN>=h^=QvW3^aB0pfM+L03WHTonYfK(!jQhz*0<1_A_{ur zA0I-iXE2(i$3rOzsExgZLTtyl2=#o@OBS6p#$bD-gT7HsNbaz{-&}@&VTaeV;%{uG z`+_jM&>>%Whu7f`j&6xBeD$UD>?Yz9e7!~~wwT2>Y_Ubf!WbUXi`Hh`Df4YiVczYf zdN75hQhPOio($Ibs28C3CgSfNhA1rZ3x!q8EiNO!nXXut#n1W07#}6o7MM7do4Y|5 zXjY@@rTssoraI3Z%fNq782n5f)6Er4f}b-;^ZGr(FB{xNtcjoj8`#;%GrE?Tr~? zok5)0j=&l%b>yLf_DPi0gWs|+XMYX(nb$Rm={(6ft2(RKKJ{;<3BpN!8vmHqn%y@E z@+S1;K^D)Vb7G821TQ~ncrsJ}uvw9Pu~y4eA(tWNoN|G`W1^HJP%2cK}TGK zaWmo3JApokzeclfLKcGw%uWCv|4VAVpTO_Ao~W8VLZ#x7?CNbvze}*^HnMo+vCh2$ z2=4lOZ>Jnw1CR1A^<^~)e!xFA413~C6#cSn_01=d(RoW2e%%xV_5uH&S@vR#)5$t? z0Duzy|0!Sk-;mh<&X;OI{%^12*{sZN)`T+zoC#?JTD+2NW27rfCk9g#I*E- zJ`?iU3`lwFzk(O7npRM4%bJ}c7f}<4z`|CcmXy_+C`0WuI!ia3DxD|pe`ZH%-Q8jR z&+mt+jxEmrohse+y775D_JZew0bm~P;5#1zqxZ%}XVM%#mLZGEpfOk+H>OM?Bm3`C z15FtX)jqmqAU}huq9fVRw)UH zGDBg)+^{og_W<}(gP>sak9-_#j89QM7(?#IP;U$|)loP)=gIYviqXI=jy9da@aP@B z^bkc%Bc_*ecSiPMXvMMMU`c!y{h;Wc?3;K8^0KaUZ;?@HjrS71FACr3u(X4d>X%5N zFAm?piInJjD%&>_;ICx(x>2ikciN+`=HN94@wKMdxpDWPX!glBO-%l?AhoaV=q{7( zp-MZ$Q2OyVQOwuI{xsw6j3xTdJG8Gzc)O9hk2|Y37t_yB_`Zm}#QUx7)v-Tq6Ykt) zdj^i+?0XZ(wL;z4w+7FzOdDe(pB!#|(eQ8f{H4Y`1V;SQxW)nCKJF0kQ*Q`mEKgw_ zC*jd?4F2LK-ZG=NlW)A3_-Xg$(PJcEz0vaHZzNeS;7C97;A{KJOn7N`;!Hp5;A;oU zNPM(M%uIY&LuYp$H_zlqKg-}<9!PFSbLn5%pB@2D^dEO1y~7=P4DY1uUy)Aq%pM^V zRWiCp4_0J-1`pa`U)+#-X?L(7ZeeJOh>_Z@pk6^PTGh6oDcI$FC{eBiZ!;ef44ay3 zso_=&a+b=5_p|ycOF@vdXrdJ7u^~y-#reE=(V?9P$L*U{7h*-rN!IY-$lH~o#9GNr z?WhIi)EJV@V(K6*5=?R~k-Ml{4QzN<(N&#tBgM6Bpu#$qRxFKC{Uol>2ubvUA1<^7 z&q{)kRk*{`Jt3VCc!I>E*Oi+=3{>FHiyAbAU_~HaB4HcYE=xtD$i-{YJI$l4iJ}xF zCJhpGom^;S*Sb~9IAZpqhQ*!f^TDm`ZY&OFRI1blE#fhuE9Mf)kd6@>W=sX5ms%{m zg1D2HvkD}br)uXQN+skkYr%w%`m^nLRR{#BhpX zXfn=!Ym|^1w=#B;4WVO(rWAFehVG>nBbxE1ZA_0MX7(m-M~f`lstMV&RwAmbh|R7g zIq{7K?wb<&m9%X^W@Gk~a45SXU@D+$_}f;l1KVBF(QKtXO*xq;kZzkc;8lTJ=d^-2W-YOei)6HGB zUYnI_oDHOvy4>u=7G66;KbC9FqK_KF#Ug=$wP^Ck#9m}YWam=9m>BI=Z3ugm`+zU@DBF|v$z4=;{*myWs3WVwO%MUMWE@=<)iLA?NP+!pm;&I zRCl~&amWMg2N;8**qzG)9WK_d>0>4y1nC6imSsIW`4<89r{~qM)g}4z>cA-bph!U= z$iSpUo}hpg4AzxKgt7s z0}h~OgAT#UP6{LxM60kk(n-y8CaHXbG;ArDrQqgmtkIRC!VNcgmpOxT{cyAks0^-S z{#c4#E9OFG;6za~G;=*D$xX&AsSqGDKEsj-1(n;|i(z9vo}7BBll#tcQ6R~ita#^it*RW#E_5`Ldd;;8F`PoF@4rOpLjP9Na3PWd|3L=>%k4o9wl^*~^F4A#|)#xpGJyNoGyA;EwWc zjdpmt)hfdzY;|pofpqT2<4Y4d#LZ7nA~k5TEKwAv zq(^hY$t5Lo(hK^h{wUhgwgcRfF8jy|s828^M&ud~+UM10=A%9IbLBo|9KwiBBQ>Ei zichBu^N3EPL!)HF%~2HQN&=%Ec(@iKjiy`SO46td6EOzKV_8b+)uTFXWF_PVKDv9P z4LV3>SA>rkMwEnuRjq|CcKrrt*AQ9n$%+(dNQI38pbg0tMmWSYA61@k&;y76LkNdk z(nkCNP+@m~0BKpJW6yW1%;s^P7v0T_#=2rcgpME8-CP3Bab^(*E~f35YA3~vTL!1V zDJ6v!A7Rp3d@V?#fuy9xSc9D;%(v+AqiuUy}F6G=rk>mU() z3|}#fA<`PrlB`x9_FO0phczq$;z!IvY0%6r>TfcP0_sDwLUj*1KM!4p5u>*J{<4_1bVhD%!``W4$(vWHW)+i%|a>>)>v0etH&g7*I!xf)4&p$G#s> z*y4j7QV#p|z&H@vkMKtp8TIe92k46rgqScDFeZvmCSjYOea$=GVk+cF z75Ee!YIKwRi|O8te!zj1lY6a0=l$DLZn%dZar=o}98WAdspL|c+bhH5f*d>WBb&4r z(H=NdAn)Hh>zD(7rnn0*Y%fo-$EK->bWJ0^Wb4?GHf6$3ELAVZG>gob@=oF_Fdexj z#%L@vaEu3}zVp7$-X%?e{xmQb+GJ6`k$mnA@PYA;`+Mm9`6GSgeWuHK{392`dFR&kDhIyYU71=jyw@zGk>jmx}P#mTmQ(ks;jR zBEDTt=)ez8;>>eRkuNjj>dl}#mEzBbWN zJ594aK1eHDrd~abvZEOMU3&RLUXs0|h$G=YfI4V_h?_0^4}`B>zY}ooGZS{|wSTX$ zK|!Un&DIbv^nFIv+Y(mYYX0hk7pb3dSgD+nGQaXv%^|D7UFCS+ge6UnBw~~1FtVVX zJ7T?hUpFUCTS)mal48Suz{uphfDuc!v;+;s)pT6Zd={*))r@kl z$guonAdS6B+DpOSvOsW-(!`c=Ug)tlf8Cr%jl0$_4h_49OX^5SUf&gs0nlQ%<5~hE zz`{T}^Yz6`T3-3PHk^Ii+l2cHMow(D_gfPOovMhH6XU2f_tZOD&A{a9E)*=Bk&6*{O|$bLH&~qysqp4P>=K) zqQEo4ch#u9!5hw|{7Gr#Pc1STBW2&Tef!~Bb z%JkYkDXh?X0ua3ikKDKsvGKRq2kb9-xNXq=*A$2Skj&j64MnLzbf5o+AK}-Ze0iLx^KdcUy#bs!SE`c)Y|84tNAt z%bPb3ae_o#i9y71`Ro7*R|0NHQ*}IoR}BH*ONiorxMQV%=2IsyC4F#5&WS$>;Nv@J z@p(hgskNfXP{0yUWLv5_l5*avu~hP6Dd4)rxS^^!_BcsXe5F;mV^4{X>3>}R(^K~B zG5UmSCDZ4x#|41sO2Ezq^sYKe0PGLJ9lt};L=GRnMHAKiw;jOe1@ui+oS=?_ULX&5 zJWcX6l}F&F4Q;<_wiD{QvsbFKH&uMiDz#RR8&0YL{xT~z=p%+1VFd1&EwO_aKK>gm zevj)zJHaRO)*0l1+su!;5x67G_~isJvGMELMLa6HUi%nOoWPDl+c+3kf`0;M8n}3` zaXc#)4b!S^+(4Y5&#iS_gF9Ya;&g#W0Iz}O0eq1ZMrX!Zg;`y(tJ1lV{vHHM)?QAgX3riE7DwFR%@k#xJN3 zUX4FyIdAro{8aguh>}zAQg5>82mda%;78}}O#k_$xHoV`ezNSxMCk#l!jCoX!*8HZ zvL?%~F(HF=sS!%lYDvkcfXC~o|~e$B$>52k@3l^c*>sK4)eKS9;aJ6Ohpy? zUFrF9Qi{){@|%^i{DdGrN_6Fit4PC`rBr_uD>osC0oi~a)Yh1fnm=&N^0*Hqu?v2? zw&OB8|+zW$$Yqv+Pjfu#sf!SvH~OERqS*MD2ywZ%QRoMdRc*LbI*I`&hFo zzJCj)hWhQrkg|+0p2;I_Q*;xbO|P?P){Zy!5BFooDOxhxGS8Pw`u?7VvX;FV6x%f@ z{mEC>RxM3`@2lQX{Vj$L)Yq8;i2BGr2K<=*_9DDCRh6YXiVBtFfEpI0_4Kp9(>0#G zt|!FUd8dH+Y+dz>UVI?5vOS_G{C1FpAOq-i>LE(-C9g>?O0Wf&`y8j#D?D0JwVtdX zI4ai?+`0(`y^(i`N?nOQc9gB&P)N@q5S_@nGMo_mVh2i18q+&Q2lR;-ho3`F+UMQa z6v<`5ri@Dwl_D9os+gr3=~TB^O2VbaZPDg#k3H9GYZ1OH7V6ojTSJ-8@V<t=LBHUcTuS#pQ*hu^t7@kN}WOOle34F9gCq@jUE8O@-X}37|!FSQ{&W5&wn`M8Li&n_2)nL zLs>hZZqv{w*m8Nfs zsHp{YueHL=J+mBm)XBOBS_^S6u)@|ojx?H28FpPO!Ep3J8miqX@3b9}Thm!TxfGvq z0cq>-4c^iruitv6659bXx|vu%(hWxMYSZ8DL3Vkym1(yd)qNFiU-AK>cjyblf0h}X z;wd{g$xV54hzreo7P(W-we8+)0(A;uAz!Y%!Sb|@m5ThNGZND_z4W4A?!DDKSWp;(!M<-y}eePtSm{kMAwsuwGU%fA8iqRAs_%g<;FE$+9;=KGFQJ3q?H@vyEz%`DK*(4vA{ zh+#W<^o`JhUZRo#d`@Ym}tb(oq49g=@0f19~SFd3dQ6d6& z{3uqyGAAH;J%C40Aa@%0I3Ki_4%oN^)R+kn(*x$q6l01##84got(^^YuaVfB3jE+0 zW)KrII0j9~?gS*V=w(QPd%VmdfhP%gF$?e_1e`XW8Mo%7#mHlKLCcIod&&y@!KrZ- z+M~K<4v1-LAwl{&_A8M%eq%QFk0tm66QBnvd^~X~@tgw)(UTCBh+7ciy`_yZT9 z2Qhqn7%jmgPMK-8kLAxkgmLfVa&!~$J2c?C6&^vHmU5H7N&U|+!2hH7|A!|T^1G6f z{m-Pj_U|G8AIz#wb}o)aCQc-b|E2kdM9V@AG9ZNPy`gJ&%_EoZZ=Pd<6i^T35`-4; zC#z&?jIaE02Y@FX?Q}T9#_MJu@}67!2GkD|5r7yD=CHD@IW^K`Hb`*&nQq-%w<+Ng z4QI0ZGf=w>#5~w(;Z#v8g-$ayD{Yef^}YEQl7OUwaU0LlgjRd-YbddWse?y{YBje0 z3wV%9AMDK%1FRs1;l>LECyd(wY4Hj6{~WNG)64PvA6eP(AD~z4|Hpv;Kn_9%PA31k z;rP$Q!gkiyCPvN{cDCw{2KM$Qj{h}(iSm~1k^lnl)t^7uX|0sujy6Kdne9kfP`iN$ zmI&oUhXMHy-KeoOql@f9@Z*+yHQ! zeN^n%h@IxdQM33i&D+~=4WkMy#i*=YF|fW>;5#s)%t<;jXWJ!U_|s>1$7yoTB}{d| z>=>k{C9qHt?;@m&ThPs7vT0ra zfHR_c8>&px+ji1r!sxqeRtp;Fd3DIlN{(gnhSo?EV0;PYb}Oj0w2WMZwH^WR)q>bJ z7#G=~!vp=zAG!PMXF^ngP9c*yswrn^YLwyNGdlz=@y{~Il&qzeF%u}YC?s-xVRaK9 zT1VHA=v~$z5$dhqEET%rSDoRT4)x9Hy2M&V>H+^kInV&4jHmFD&J@;-f8!f~oLl%5 z!2~{KT%`h>_(Qcp5a&~kfUPjfRXc-;r`Xc-I5=m&uAa>QBZxqU;O+z@?GjW;GvM?< zs*QV-8~FYG{M;0|cTUCjkYMeM+y>#mmL0U!(G$e_z#2&vtV8OT!&CqCf3+xzd}|x> zg8={}!T|t~{(tYK|K2KT@9N0vC}Vx}AY?GaKvXr-q(CbO^ZSch1BL$PiXfnsBXq73 zc*geW5zNR0u6wUOEuXeta(?w^%?BE@72g&7PyFY8i+P*7>>0rb$VFxR$1`4bH{a7c zr@a$-zh58N{&HUgMX*augW=Ni#wz-ynXa=DxH>d0j9I8nnvBfD)3`E>B*XT)FsT3= zNI00!;ZdSWqd2D{)&*dc*>wY;JVc@5q&#E?4wzT}d;+lUO546tgG)%c33t`e1c!h; zYSc1yRztc{-1oWkdvtZZ%| zLOeMIoXK^E>7}+^QkoIA2GRm^6YMF7X7LezgG^@Q{7mH_yU6wzN<`E>?;nFOEyH}n z*X1RoOsCb*uruXOmLlpg7vt$h7NgBmPh%2N!C0t~x zDn{kBMxKicPviM*@)~_LI{USQ1PL^gReWjG)Rq4B4gSXksnl`$GA8Rf8cd2yhlo++ zGE)&xTCr>;VmZR6-33{e*2_C+rVz@Qt7z}l=k`6S=tvmKa7`&l#4A&*$ailTjvbnKT<9SXK zMFuf0A2+x`#0M}&QU4Cwh6eq%K|;)CK|L?$K)n=55A2*P&PVZq0&`UBBZ#9$?*|7a zVW{4vx}Rs7*m=@Q%SIqjyJO!4V1xf+i_h{yFf|v zr`?A`sIH2F<{da4tfE8p4y$WAsgvatlu)$OS6npkRE!S(c_A$;6+vw^Z-QKEWxWg* z9D|XA>LK7noyJ^2Rk>sBMI35_>K!6ASbBxwmZ+pAM{PbbO;mwhf|PsEUp#Hdw*+6& zuR8!4Q~k`IzbwMjAX^|M-S#CAfZ3|s5`%&c#}V`7t<@@vfG&gEoznIWf;ma-_*wl7)8*X%gP%RD|4 zC`@$){rpLFzlu#Vuh?m!r+l*mdZ?*uaqn+r>I#)Jl@mS!7t@_{-)=G+bqn(VseSH5 zBeN%c{qz{2E2K^e>Gd!2A`y zFBd0(wI0<)&^ucG?a^FBLTPL@bRAU=^&36;!cuIaMC-#9NJ4GV5~&fmn!a#nZnzrr zJ#181gmwhRW9vfbhVRf7zNHiB<=>6^$8vF`y>YCD^7sYe6~F;Lb^qlkeyXJR*1?O{ zwk1pjDu~k`0FwTw(y84NXMmS3RxaMKJ;tJ%Y8aPzTLE&Lv6I+-jPdUQ*ETES7yl`T z>dov#_t%Hxdx`S&()Ni(C#6Kui(|k~kH<$qHXpA4$g?^+pI>2kuYC3<3)FXC1sL^3 zW!O@=w$S%55ms#5FJQ>3)ux4pbf1g*{5V7RHc*;vI{G0QHnUZ=R1cg+I;bAKi=F9Rw?*dR4v~hWTp@9WOQ)yJfwhQl zKmV6K;~w$BP8}8ipcLxO|adxyYaW(m`11LoU(i>;Rv!knUy0b4aHk+V9H^7=mJAG;ocf1 zFXE46Tk2TaU@jegKTd*G;)LU{O?MNeF38P-iy4mmwUq9BsPHR`&n zB2klqsEGrK$k z_2(8>mut(;`qrXDeoa_?`%ySsWr<^Lf^3V{Ms=<$?36Vb1##xpWvisb8;Rx&j?8m= zs{!1@Svw<_ZgDurk!hwtSo#bm{w&t1qEHQM<(5(F!DWt`7`aG>cR8=sDXE%QkNC)gW%4N_WJtZ z$8$lJo0K`)iaa?YaFvhXZfaG|gh%u}Z!fr^oP$wew6xIDEXGXB zFg)TtvB645Hd$wS^WZXSXL88xLg+KwQp*^mWtYXJtCgA)P7bf*hR5(Y-o`MiC}bkm zzbkpOB}l8;k)EuI^c2if^HwVubBi>^o91w7oNie-cRgjk1d;7kahj|ZYZ`KS?bh7J zp!^c3g{znGjE2<}>zBqQ%NPtU?zBx#8R1O|v!JlOiYwCt?GWE+{?y?5YYi=Y$VdX+ zKlN2;OjgotRxuYDa8~tI{<=!z2^Xv?Q#jY8E=pH2I^wWpV^uhE7Im&1xZN(rKk>y1 z+rl8vEOF>M%F>p*`z$IgsT0m%E-n_|G*Hq{Don^;9$=1kdPp)80Z6r+z{>W)p&O4* zGNB$rf)NO8prXba|75sjRdYnK57sbt9y2P+qY;{ynAKYi&DydYnN#YB*Q=n=4O>%^ z;|7}x>v@GkUbR`dt1h43MAvzeLRFlhb|~o5NW|^x!O@xRVHqEpHdT&5SI}dSXhWG1 zhB@;b2Hx;6mC7-PkkzVXftc*~0=mr%=Ee-eS_gHyz1!LCe*gA2q9L4>MlmuAkK_r! zDY@Dyt)Qz`GSy81Y);&)MB1Xvgp^)%1y0GC)t*~fsuKG@uFhdnS?5f0mULyMLZqyq z85N5s&LL7+7qC<|1=OmYk-HM>3{^xhmqH~q%hii)t72OgVN&W#St^zVIaDoB>!LPP zcm+FDa^Zq;P&ZgS)r&3BN1i5krUyN-u8v!97n{CBEym4=>WB6)aaGHLIZ)S%6;Ur# z&GIF-mx>nrxcfk9HkseDf=1?2UMqD<^tdYLv{cU%8z~5d7bt60?Z{)0)N@Pr8xWpV zQehWhDYnV|dm@=a-&7?gdYD)W7V#XgD~rLZ;|doLxT+3q=NdjgzLiR9%P`1c6NX|~ zgmRN{hmp>j`JI>NFn!3{mi>oQd zf8^wAk8GQ3DJ9eQt`^)i_yaV(t4uRfvy6-0mgV7`fXH?TXJoV*p*rU)A76M-<@brH z@RE`-lSsJ9JecTIy`Xn07q`v{UQKDaOJlfoOX4E8FQW-r$Gr%vIbK-<>)EpP>rUEt zxL!#)BeRR3cEluf_5r8eauNA3Hi&6WOI;-7A2$$Al24c;ra1qS9Ga%J%BV9Rw`V%) zTwL-GlFT^1iHxw4;R9n2-Y_pI_zGLn5z~)nW$>J8g=|;e(+knj<0LfkJteyVK{@CJ zbZ(gKT503RrtvP~8$SLmnKA9FcI?gmH9^m4S*n5SnVi121G+9fvNX*^HokWj`;HlQegM|Jw4diwq#|Sb4{Whz4dxx`l2EJG# z0UZdcj(3;)p*j2+*rGT3+5>%3!I%vkyK92&U3MTGVneGrdty@Nsse8thXdlmRCnA% z_(VEo8MkYfA691LP)T{BKJdTjddKL>q9|Q76|-X7wr$(CZL5-0PIzM5ww;P?+fKz! zDtYO?eMjFr-tAv!jd8~Qwb!0&&2N5yW9MV$zvkAzG`a2))cfL||JP5KR@^tVB6a`~ z=Nf1(czxCi=dJ1&a)aK>@1?(<;wIg*EJuGic1)-wh3#`Y1=$prqp8Hr!=tao zX(AUh{zMJ#d=~#3^HbkPQ?+f)Gqlyj`M@@e0jqg(1~p1zYbQH7{M|Sc|D5WVFp{0Q z&3Kk#8X@UxX=tFv45KeBIzjMI+%)~IN~<}ug+X8Bm}cC=mp)`?{_>7rXZrNP?v{ z6GSQIUxfl7VdxK1$Wo4-=cFA2oS{O@KXe6x(CN&IXL9|JX>q(dXkwSV^+=+9q zVw-{9dgBY@e9O$z{yC@|h@ZA*W@NDld|PRfsI?V_!6KAQmZ0SV+By9td<+u@chd;o zdiAESqDmx`NadR-#yL|FoOFR0x_52!x_Zr2cXZpQwJkY)?5I{(iHN0j_O{7#;Jr;W zv481oN38YaS8?=l_<@|r0>8=cip5iSVHgY8WA!NwzAze_vV%B+wz`&VTQuk&!H=Bn ziE5`3Tbm-uTTX6|nfh#hA9hras}u{DQLtx;ND^d!KXeX5#w$}eKNN5EFfi){>uczh z5z?7TP&`skDFur=fkkk5{`VloDLnB6@^VO?3k1Qky|`<9>X5zUjiWU&*E#qDqY!Nb zYsol^V;94w@2?yEw!*tp*3UhBws2l+aLrPX5SutpolC@T+3hwjJ3X z}%sPKkCT4%&7arFDeJ%O%NQ%_o)klOdvjOV?7S#3~WpFcj3ulMP6AB8`d zulLpcumghy#mP;l8&bbVEbR0L;Qv^uk$tG8ZUj#Ze>1yc3xtOSn^@mE3F$v@UtUzo zxjjFKqww?lt4I9fpV=4k{@dMJ^mHEC{EV3&s;fNx(Kp-wZ{nuEnu>7~k$DD;6|Dvx z?JDfnDV#W2F$Me1sEjyvx3&b^g_#ia2;i6IO_0-v#2q4bYZx{WnKa=OZO$(cLdP5T zXf-F?>Rk8R=AHG_9==0q0sJS%{XhDE9!9AL7_Pxz)NuBvZ>$+mUs>N+<2 zPx5xXCr@MyqZL!Mv^1OQrg;~K3Mg;lg(8M!XpT0(e?o0t0HzTxvvG@kH`Qtm8||(q zst(aH0+v-19@b=&_{L)PZP{&ZTB{WH-;_NvYp)m#)Nk7|*sXlqV4fW#?EE0l_*f8$ zd^CS+mA8cZHVK?n4-t%{Vg-bn_W;CSa8h7YL`2QPb{*MeeL9m1D%kNyK3mOm*qW=*ZR5Nz9{a;O4wKj|q z+KGFBqK>uXfYBf*Xiy*AsMKW*nOt38zY!cUs037snca=BMklGYadYRk=r2<|N{_6; zhy&W5@B>yDg@dA1E|Cab!g4U+#&G!pt@S*I!#sz=ev|Y9EAYKL(85x(GCqC_l=prn z(C<3n>pjrm_3ug!WdZvKcXp5L&i#Vn``J5>`aI&{Ehi6f9?^zMI*>NDci}ATp+g~1 zQ7~aS*8SmMh{BiD7g=@g=>z0HwbIho)-CluK&)Xg{F-urk@u3`rk!d5{pZR!W?IJu?w zIsvh6HHp*rp}P<`wJTmB!TABaRPiCNAx^}*HsFu z>*Ns+@5|X274PfCwuzZ7oafV|UGjjd$9sm7(7*g(?;ekj2J36gb+v`9mU;K%LH@kF z&rA>YLQkPdNnqJ;-`*pc>Ew=P<$$P75*QuQZ1zqiF)LrI>W?Z<9G_c{HidFlA! zKPlwrl2r{s?kP0y;GCG~7gcg=t!qcevAE#ChKk2kDl;uCXnvGUjz=~E zCWtaJG-g&eYntWa$KYnjN|7XHeja5pkE(OJ^A9sGIPo5uF<#?uIt~vOANw+*Pd%o$ zySYq8vo?F_GTK_qulZH-*DCtktMSyd07@G3PDHRye_30k(MSlpgq-w$yD!DD=^j`x zq{y4yo!Qy8p0Ay|ft1jsC?E*e-q+m0UYzS0TTwZOpCxz_EvgZbTgWeGG=ssfAf~bb zCYh747|aS^!CjzLbr;k?7^M^ew0-2OEn=9T%t#?Nm~GH0hm!NRL@nzR4?qIcXP@cc z+^(TyRt{*QYrY zkPmtk>7$-n1efN-j+A@g0lY{e`|m>7?2Q8@A^Y`a&6trt%RSK{TPxh!9dw-GUd2@G z<;0UzpbA!g(_prxco0OUW5a+)IPvn1kQ*;6=+i|wYjR{WH@*%mQ27m~y8u`;f!Z6L zjOh47v|nFxt^hswo{)dH`lxGUdQPh$ zf*v+)s-r9b@|~9|LUZM@8Yyb~XIs3!NT1>C-%9Gc(t$T;m~-Bd6*iKT!%?xT|(dw0j|z9fiGTS=yc0 zP8HAC1xFA#u#r3F8*|oFq{z1V7n3ji;5@WgZEu*U?!${p(EGgBCyR0Jg(*iM3(JYp ztR}dNddU}_?|(?mNJr_$p1Y`|Z{XlX90!M#q{EUF=Z!}|p_Uu5VJX5>v%KcH0L^%C zI2-Bvh!)=T%a&a&>V6SM?iu}5CTtoGfs%~m5<(;Z6o+`HaiYjs)}vtaI)F0R>WDfV zhgP5sIk-T^x{U9#S$_Cs_i0aKXPpH1nff6OMPU75Al#>4w%9!pg(N(_NS{t;!^u=r zXezsN-7CT_4j!Fx%EEmK&vj&b0rN}D6|}kuJ5{$sqz`96tT;7bL%;$ATkaMO<-MN< zg!G6Ra-3rM3+pHrKvUOF1dG0`arK2nd`K}NBXW=ca6-!62nuihVbp(2f!?EypQSrw z#L=1D&_7i55n^!Dk_Zcu@(J`4iU-IPBfht{Bd>_Gt%lv zh(C3-d*w`CF3dP*9dfO7?s(!LGq=aVIk&iCeONa#gL1LZtvS}Z||j44Vj#7f?gkXpw* zOPUw(HluEG$OG-Y37@?3HcHY~4%Jy-nEP0i>|X=IUv=N9 z(#pNkolEH(s-_lefJYp|<5Cl)3%1VV!`3t}t%hW!>mbnicoF-9njL1RKEC{(MUt#% zX#F1N)|Tfz2+J4|9e<|=qZK=*S08GqwKXwm`A?!=r1IFLZ6DS)dkDU5rzekql-8aA(xjI|lN^Crl(%maLlrBpcRM{0kWzjqf8T z-m@bZqF%+~1N9d#i-!7VsWIlr;`pD_}-z@hZ6H z=KrzIKuzNmzJJcj`@>uzf%rCJ-KT8h6LbE=CkgkQRV3cvk##;|?Q8@?aNzdMzse~x zXZ&qg;2JaUbKNfNO_w?nIaVox+SEY%L6RL31GrK$3!Vlh9l{B(iSh2K>DPI2+UF4r z4w|Et3Uq`$&4anI^8<2b7Mf+Ch^2TC?{-9URo1=cmxsaBY@hidt1{0FcHa+?>}{?1 zA5?+flzB1g{9bG=uhRi>8sRCR@-GI}I{7|^_1F#)6Df_am1xE|ly1%8;niMkZ_8RJ zt?FYUzS6sVZp)h5q~ag@t2!%Mu4}8ldZv+?35G4RbbL^IBFs(u;UcJKX5lziSf(&# zXCU+9DE+bXtWvC;G>jT1ygk046+TMkSK#>KVrn3NCmyVQpkXs0+yejvfc={Mtq16N zwPcn3!j{Y)2U_PqsxG&zWpRbMyt2lr(g$wwx6y}wNxi#dI77V346=7vE&<~2#7a8% zqH!HDBYc%3Z>f|msbm-_gQV7!C#nd)w7FWc3X~dr{7X-_I>M_2jk#_^>p~P;f>KI5 z?^?Ax)Fl9Dz7zPi-)EHDkI&?=6NDIBlN!V?j`|C)$&kMU9}kD6^vxyOA2!! z6})>DBUJBLa`4B`HbdrV*i$%;*^n0$44#Q*{1!GI1zexqd*D>5bun!?80NYvsQq$R zV$*HtF$(Sv2p>3lVFkm8s_h>zGIt(4bnfeP(iivRjVVUc*F;qG-n~|h?NbUGIBq)J z3Yf`oew`wSI<9zbQ*$L2wyI3I4b1O$vS;~1s|{-0=lTpe?ojHUO70^P9rlH=?E#Iq zxsCjRl&$K0e^=OY3&Le5_Dod5xz_rWy>*vBca&ilHM2|B8px{N&MRf$88l{}g9rVg z``)eb>DsZc+VC0lVE3|rF7Tdt+Lw6JJkhGjuGXs28yl*1WygrV7NnKN|D+Qp=x+rV z#ch4vg}N7&3W%3ETFYFoW37d5CtXbmUQ1WLroGiKjU#|49@&dkoF%!bBiN?mt8Faf z;%nuObZ|x6`nDxO30xVFr@Q7Co>|Y@w(-5MxUsI-KiK2g0mdLOGw)WFt& zR^u=IMW5_JI-<=!jz3TTnT`*5PgG)3&h?=5Mu1;!+QvTc-3`l8Q*h7&sOuB zmM}>kBzE8sHgp$RqQUyu6M6@?r+%)FuoihF`{iU-RNEIzmnV6NWrdhsFclOt%i83g z#Z!+dDAkx#XwUS=H&#$|V~>$H#_ zZJm{)>al-mgSJ&#()0B9TnxR@xpn}ty%Mfxyi}xLljupd_@UJhBPq32>PKdwHr-Wz z;xBK21L71$$#efw z7YU)Wn1D%?9&qau(LTQS3@@VKB}E%p;nispT!UB2kJ^M;U0GG}X43?^qGf*DT-@J( zH@QQ^w^N`)L}!7Q+1{`2%*liPO#8FlAXBd!&TU6|9`rgh?-U%tK$#@(NwFrMyK2FY z!wPxEBWPt~*YzwG#328V{5xL@QXBKf{!2O+yZadLNB@G2k|<>2fnK#wrw0l*!VT!W z7cq7hv>B!f{z|75LzDDpeL_U}^oYxIY|28&PAgJ%N)_+lh2uMuCC6;4!9!6E9-Njc zgA~N}K5@79!a+w~89hr{NjTBi|l);vNlgQM*No0ioBT}Sc{9jB%pr)=T?h^W^L<-xT7kq>q z9-0bL>!8OaG>TLi9*Pr6NFOt?0;qI5@Ti`@z6zO@bVNG8iMVOjrFVyM&%`QU{?|BM z7e>B*rMHz~2L@u-{UBVGc%aaR$`(^y+>&{Fsh!cds@@#0n zgj)fTnN~Qpnb>HV1WQR@|Bt=lP_$4vE2=&X<>lFE;`q(V{<%8v8aqC8bOib|G#8~I zHP|q=rtu!^?;uH(=khkgp<1@8K_ytk(KlP-UStnu7yj5%PV3Bgw4U>QgdV3b? zsg_4gs&5XbT2?`@*&4HC6*Ws{Rl<>dNmsQ$V|B~=Kod{v4ox~(as=_hnms)FKP`_w zsw;Lp*{6J_E1-5wFx;EHC7Wduus-Ha~Q{%gfBuWP}dspkD^G(qwSxy@xa-LwtFF`$3*@8qt-6CTs6mNai6|bh?E;?l+*N+T1#DmUDl-09zAQ58TBF7g!YD2tn`u?Y4lPUc|4tS#=KgdizPsxx$yeI$g))?bGG{17M(74 zL(A2M{Cn(qDjEyAwL+b4;4o7Yz`a^>K;BigJI^hCXV-c9wzZ{NA34yRK&5q(G8N43 zLS?J7opxq+6l7sfNgJ!AA<$7}X{mj5S+r-yKY+h-3;PY_X2h)23k%DNwbp^1U#zNP zW5-WhH&TqZTD40zE;I>-ju|(y5S|R>jPWeyFxtGyGl)Q zt}9=JMhI^y@d@`y1?Jzvc|N0iPfwF+sBPWxMqnV)#SOcH(dR5X(^*fDb;B}y5-zZd zL2>hw8F?C17vPHRa5E5>dD>j_|E~G8{VhFbiTU~y;zFZ^Kes<;Dq(t&9DHT6GnMXn zpKGOeCENFEAAho6M!x?mBwwjXKkzgO+fs|>MwP&DmTk-ZycHgw32u9BQ8fo&ii>XA zAb86(#$PG&C`2(PQ$-g0{I9D7mblwGpW+`P4X&49gK)g?vrv_oOXdN5rc%DIjb_81 z$WMz;N)ovQoqjmZu(*wOD=4+QIZOoQOu#PcA~yVK)}Q8rzp4{DQz9LM35 zSufUR(}Jz~l;-J!tU}r#Z7ge@6G5+ruQ`h_N zKYoHeOM*%-gJFk*H<02;H4uz4tiv;ani0YK!PN><^q9~hOGa9Lot26FHB=S1fodOC zwfcLBWC4kjT0-++{o#u-^={!b{VO3>)$5A7Y0_j&z}T{mjWBoE=FWP3xs&=WmRTX^x_9R@ugt znAS&5c`sdW{nH-Bn>~?lO?{|1caH_)RgB^mn?dtsAWy$d{hP0N?$V1O`xSu_MD97DBU!AXCA)o#!b7HXsz+g-M|Kk%`i4ucW%}0 zl;VWJM&ULcQpejwwT}_v173+wf}PCU!2dqw{zF%=yvN=P2?_$T4F&>2@&7*M~^X3Asrc4 z=WVs7ijtyXLrPv(T|5HjT0UFdyQB{9e3u)NEVuoirT~*a2U=wCj}A!>_5`ladaEpv zA3;;1))Nz2@OG3C)Gs}lK6fw!IqqP7_rHn1=y*`!@AVnc!Upmv6HK@7t&7)zdRMtO zgR1v-%#1VLKL)0I54TTQiU|@0_z&vkW>iWF3B7u_4u6PqRDJzrx71Xt;VL zht1!Ys!=&F%h$WmU~ ziBwrdIINeJ(=D5~^Nt=yaR57$s%P;jhsCyxWukE@eneikJX|-7U)gmF5DAP8Uhw8s zE<@ow?XAdDIM6q-Dxzt2{tz>V@GNKU$JQd}#A(+Z@F~$OG~h4Z^h6WP%fqWn>P@?< zntwK^XupN}zju;gck>ea_fDFF_#YK2O2($P#+K&)v7xLTEdPu3nDCzp4Zzn_zBFFg z@1i8uVsNXUaR^R73d)GoMJke1#FVc&V~*@H*W>?!-)ayA3F+N{@S&M3b4Z`_1aD7X zMxW&Vv*_v#_d+eU17ux@S9)JHkQkYilSEIt#k7kNyWy}18lCPG0kwSu%{1-El1st>yBC-lK7A&X8(KSJE4PtlVdr zSH5$a2{tp#gQrSuDnrUF2Z+TZO4oDzdeNcGZ0%VAhy72ly2f~L6Pu_9&d{oLa)FGX zTJ~&-UU1u8hbjklp(J#wng3Kxle@i2q}Z=5NHMyHqzWC8aUr%v;t0b^CE=T~FAVpt ze(f3T(O975opv+V~-&CZpr zVuK#ELTU)x1zEBz-XelbIWuahyYoi?${cg727IitEMaK?bg@n*CkK6bI=q+Yk(#20 zGLrE?hHSg!JgLH=xtD~!R|l>kv&b48f4RS+EQIH*4?g-PL1^AN&VyvM*(}Zt?{{KJ zCwLK7ke(v=*r0F@S@5P5TDPdwy87Z1rFh_H(4t6)QAql4g$pD#nI@Nib9F7zWu`qBAn?cxO zcGX|tbN8AT_I|#I5SaKxCna!2XgUs_Wc!dh#ku)J7!$5n9G0MMMWN%R`=snCawmEz zP2T>qU7OlU)kQL%T_yOfH5q2yMW#G=7sG1T!tDOsl*!Ks?ZMajGrI>5{9WWhv5{}N zg`R=$H<9>4G;qK^QoYv-Yf6WgK^>hkSCmQagm?0=Y=HGg#{qVCZhnwT>hkE~qza>I z+=AR>&L2m!Hs|ehwSH~bSx!9VrYivW@(0x)k3e_RNDP=kX>iUcGKHF5$*zBv|Loxe zF*2u2nt|7-T8_IO-5pV_w?5*EvRYLEZ?m^^a*^^=JgJj39QPq0Zf!oF>z&k4b!*CPeeWWtdv$MDn%w4^@jPq} zC_bIFfH`pa@b)5HBP{IHm9wgye=*JUM}oQ+K6X=0Ek&>#lWB)|#x|2wkDy!x3-CEC zv}r6a2e?p%TQP?X*yWI<&(^C>_PA}HUtZXmq-ULxWXnDdP6ZBwJp8Tnh(1g}dqlu-gP?>1H@fmU!YX!9>6>Esb+<@6LiJ+8K4AxP)T7GKT#*nESt#o2 z%-%>GvDFbuS;{Z#f{BgIf!1<)bZ~I50EfM;EsJsxXbfMfId}cb7h^x<+HMn!Y$8Y0 z=fK?*yo8?7s;XJT4R=j+w0Jg*4}sWpvuTfnawU}QeAt>W%OiTQxLz(CL}8P5W|Q14 z&aS$mZelPZ_dC+IVwDvTL?G=Q!{R2eswlb>ctG*&jIv0T06b1QA(r%vKe<|Tp!PsJ zI5sHnLKb#};Cvl1;Fq9nn`FOg_f>@4O(ENXziV7hl23-z@7vC*RN%Lv3wqH1_VI~6 z8vHEa@y`Ct$ddU=OIN%A2q1y;2yW(&vDKb6+=>RVK7697$=!i|`Ek6v-mFfPlr#!G!VILuYNt4?)eaeVRlY^CtG`v%#> z&LtVa#1~^qdhXY_B8K-8LZbzxeguo{DIA}ms3r8g@FO|%^r?bQz4Ur(zHa`-p}JRa zy|zWLv?RL{Ph#>==yS@#il->-4lt^fUhtCQ*D=p+xUdH(N;ncf5Op1vtgu^Td<9|P zV`@c6-vGuAeCXHbe-z$je-rCpz3=xaEIQYTJFB}lGfo%lo1fG=BUbA`N^`-dUn9_` zl%juj3JzQqB}7dARUVKf*rf4i%vkhpf)lOb+8aM#6%Gz)^EWZ_@Mu^-YjfCM*8;{op^U^yI|9kL>RXeS-7?Yf9`qI4-egzY+{l&Y1~ya;SHgp7B#w{(fL1weZqP#`6& zCWht-PEw;TEFUDNQqiPT92^cyMMFas6^Y9m44w5gHIX@XSgafoT(;+7q#cvH*>lGI!tnH@`s2#hzxO+svej2@zM+|fHR*G@# zbdI8fGV)?k?W=>A#+ER1R0H_4Y*IhP`S(KI z-}qw(><;S_;QbNi?$PzQif8;8b~7OI0sTDgvbC%|^?`zm8f>MEBR}vltwoJo?KOUrj16P>Ir7c0Y`WT2gtL=`0ZQ8aK03I4G2E z0He|1$D9!vLCjkQFdP|n_Abc6H<9H|6H>I#i&VcxyG^;TnFo()Fx_ZWEA@24LTqNP z^%2LU<4>z{ETp-;eaHS*Uz$jBA&i)dJ1k*Ey5YS7TLJ$H;f}OcXLMV0B~$G%cD(bv ztM^~n5wp!dfVQjacwQv!@-(Jav~P17v5tKylI8B{RpSf#W=;~YCyRW$^~w^@r?YH% z&-al*Z<0MJfX~3GHH^0H!~+C7_H83Efw@_=R$6^?z=p>FqlkLkmu|RhEHjh9IUPf2 zS3ozXakOC5EBhB$_bd3^WJ+X2YWz56t94BrT6_yPX&;(_AYcyc&ZQ5%AUUP5@#aW)y22}WogP+9epuKmMkG52(-@a%>X+~+%veSJ7$pQJmY z#)#_pUe~T??3Mhg>=&sm*hrdR?yi$KDl!MFJP~X9SV{lK{y)OzU-wdkm~SMemcMx= zj7-l3^ic}BG;~@7IzN(@=-g<8RHZi@22FfY=P<6$S<+-i6vZgiS6RlY9&{FF4sBLM zJI1tm$I!7wjwXuGr^s$uCl4gpGQwwJC`gPiN9n>1PUu`K!YQhLBv!W3%F1n#d2nkk zkEe;<4hEMyMK*FvYC8_~kJpTu@eUq*X-vXty!lqUT&*D~i2WNr6E0sMKTBwo0u>r) z&m(7znce<&mzDRl$U8$rUKGX*q+ayHgPCfQiI6q7F{=NLd4aB5xdLVqEETpwJ z)Mb(|Us#yuLCN>3o2d(Ju(6)+9+Occ|8af}aa?{bD#VlNf+hi7u z$N5>fhoD!v*XyM^KzSpLumTf&6oW`d;qK8)VhwafpsOD9VH+#q#nN5Cj6h6NOt^38 z*v4v9UBNNjzO>h*^NKKrwMCZI!Ha+u9gay+qN`zjC}s#1&F-raTddPrYEA^U{Hvkz zoS)I1ipBBY3oyxa)XSRnHBAJExb9RUAmqt(s^l|parZvdSZv~woQ)=RD_65@ba1L_ zlpc}suZ5{!z>Uc^HmQ|GuKlC;Imw;fyS#ZL)xED7qbBTXQO#zVBH?Nw|NSHGYGHoJ zhbvRTI3lm-{%45M$l@=w+TVafI}OrNd_dHWccx^VApEmI;=4bdtTY0flU{VWRwTAo z(A4If3X2oL^aHYJF*KwZD_DC2yH2?@Fsep?y5Qf)PM17r*a-9l+osUwRx} zP}a;5v45c~G9Y7hzepCdHds9$LWMove+(aEt31kEe&`=mniq#7O6 z+@>{xg;gaa$=v3?vt)3~E z7tpP;+`+zSV#99NRb&>*5+Rl2;+Yn$`swe>IjuPrvbr3Z-r#=mmEQoBM87BMu~8iK zCN!f1N435Lf~yoI@xBOhukTqWQ4=)rZ+UG4F(+pGaY=-NE|9)p`pt$rx#?gbYGB%e z!~~xl;GExS>D!e7*L^Doxu94h{8-tsl3H>MZXls^I6+r!qD$K3N_f&XljzO?@_-+k zB#JIR)S^!+ec3Sz-kDsjk-A}*Y1~$l*^ni%k}Rfh%>IsB?A#>Soi3);O}_NvPxtRL zCdI3RH88$zLUpg%W&I&7TS|WvbD-tnB9H z=0>?cul=S&VZ*O2^mF)v1`P8G2sky`lnM^EGLNRRN2bNKHZAv6pT!-E)}rn# ztHD#tMGRs&>ygywBy#FJ{`dDSysQ}`dYuc?O_@-EHawiMC3cOzcu`;OPqgocw;z>_ z6?L$vx8a4+ihBzw(Gr#HCo9Xh$XWEn5?}k+pNAW*@!!8Pj3{tLDc#8d~`A-1aO)&?+W_X|_UAXtyLvADLc1E0W z1XsSEv-|(>Z&CTa-WyfgYOH-jf5_kCQnCM`OZ&dwD;c|eqsR_Y=62s6Eo6!=)|S=| z#&*IkZq^pYrfv$x_U0PKcJBYBi0;k~1i z^O>T!#oAhOIIPifX6h%{~Ei*E&OS#vCITp&??olEa!m=si#DS%?o=ai)KKcZ_|Se|aC7kh3iGx!O#vP99CYR`5R`=8}Q4Kb6@laE#A_@wA(^9yD&3-%*Y=guRn93GpT zStX|Kw{51Q$Xcg5_OyODj;-?zK!Fg3pY91O$o$nK@8*M8crkj8hCk;5}yS4QxdWWX=_S-+`s4idxbM+ zoY2X?Fw1jnaKoHybH-U_l^2pcd}U_Lu>Mq&J4gNedA*D;xqi%$E+gyvngj_mb-X)S ze-if*a}>(RB)FU|ETs!@QR>7D-q#juBSygg-&x z8Xq<9-XY8RC}0g&l}=H|&th*5KTqgDSUNyZM8zEQj&qDO{`1EgAv>yzl#m#N&5Lel zGD%=}?70E0?TC3;A52wdxF6g=A#rdMz`V_Hz=eV~t;%eElx&b}^6&>ZI~%jLL{zXP z+iD(NZ6-F#hPld2Nfrr_Uv(i-r7;pE8@#brUn7pfJ~u=u8(-`KtikLJiGj*Z13>ep z;!kkI*=CA71@^>H$&%8fe8{s6Zi2?L98xnbTNhv@Ju9EYAupHBZg2p0+Qtj)gsp2V ztd*?`=*iX<^^DfVIQzCEqnY=V(#T(Lnh;gOH%h+F(%DfMU_Oqj%zB_CO4ez4?WEhj zglzFeG@TTXy>J@c>DqZU%6rJ2-(eQ%*Q{GY+CEe1Kab5z2bU7_lmaTQDUah@d@u`C zJC;{1GlNB`(oLc`+Lbf!_I(|$uM4sKg!ZHrACm(Jm2juW)zbmz zI#dK6eAG9%Ie<2l<8dH}q@F(?$;xjb3xRC;6)bC7B}8>ZSils#xe3d8-!np6uzxcU zYDu>bBsI}cX`QuHm$Y!aKn71ox-8L9e!bO9*xm)B!fw3ak_DQA$}_jbp2{XiXrR#V ze(t2u3>PXy_LE&W2tRJM-=OH+Y5>q=ZmRrW2_b@LHz!Kyuxdwn0hc-kqD>G>zeWcr zC6ve|lu2uL9h}jBI3vgom1+?Sh-&GL*xYh2M={BN(~bmfj|?myyMmq|VFLQgdn`(PNU*K9|2q!QZ{)>y02iEew-fM@rMeMvBRi8N{3 zdu#iXNN}(0?p)MM#%IZ&xeu~69B?F>oA(B(Fs~s|nUxZ&0a0C{Y?ZyjbYi46Tb__2 zGNCAoFD$=8b$qOhJAF_?n?^Z{Z{tAnGA?vgKczhR1u{{af3*vZF{zt2!Y}U)e!L|s z$I9$Yha=wI#z&#Eck4}e1-~M3r`1s0b17Q3w>~f#W~*yui?H$@!!T`nc2xh;nx9he z3K{v5;_`&g5qXV_E@+hdf-E_x$VDD7Y<&wi9ck#SusP^`i^~wcGU6gETVi2D+tVZ4wiSUs2oEwK3qw&S>r7&G^5O zq5tdX_+P`LDQy@(+@s_`M>=bX`4=)7BxbS0{*QTY-UZ$Ntyv$KB7}*V&1+-LIE$Vr~?Kw{uGm9kBtT-=GTub^ztT7uJJs$S2V* zp?_1D{Z?^e@y zg1t$l!pPY+wu>HYpJGhz*4KFS>tv!%=BWwGFDR~Kc2^@r6K>VQsk6`4iMKy5jgh5o zV7D346UVRKPK%^e+w#UIgfZSb6+U&mPFRCu+$kOYIvLf_;RYR25@GxBz~Krxk{R0v z;R@BC; zyxach2$RE;S-r_2!U4EUUNF|v(Y)ryx7M0g-bS4~X;wH^^{-=Yt+`}vy_VB(-dfng zRMK){e3-)bTz7kJb-8KW;KIsarJ<#`d&)p}t7m^-BU42CJ3k$0Pj8FMoBeoKUj`u; zq};|1%;q>V@|B!;rMCxGr=GmDve&doW7b+gx3wEMcbmnL+}arWRYKRW0&Rtn-@8^6sP3gt+< zWPKd%=$|5e#ij*|pzq1m$;u+$95kUO3H-yv@JxWBvcd_3z)C*Ukc1jmfFmIJWt1MH zL$Q$t;eqO+EP=9pnwnlxp3Ut#vGaaxSWdE?4%H1t-eEds=fj&bwam)&R=fsF|K3ne zYs%!L|1=`*u6pOuLL@1P3{9rvC?lD;mHDHLv+lMiUWQoH734h!hCR?Ps9RUk%1xf5 z-`r%44ue%?^w3PmI}KRCCWCq0c!Q5*vVM0Zl~fwuyk_;BjJm1+{NxZJXzsnCdw?yy zapl!O*#eBvMXJtYW~WeE;PL!{Ql>q^+)w*2)Mk2Vj_xp(G$SPa!}m}&y=ju7Byl97 z&9AOivs;D32s-Nk zituEdQ4(-TR9hwWd=?Eyx>iq(!Nhbg#VY>?47fFG>=w=LIt~h_`e03QUza;zt5FHu zw(%*I9;}1=DaM|c+(}HSL#3+ggoZSRmo7pxCvctbSbO0E;Qj=liRWZo5@%XURx2b zaVuL-b9tYer=7W;8XDF{>?G=|Tu0Q^GPiMma3V#i8CKjL4P-1y8^N&sKP^Sq;UdM^ z6XZ||&7G?7M+qp@HN7?n%4yip84(0ib<&raQ$DLZjeuM^0^^DdJ7`YtOsOt?G6n*4 zguN=#d-b_Vi(R?xK3?~L-m%UXn`}X&J9fY7v6b7$@D7OmwlU6|M~c8WN48f{zr-=l zi3f}x^-anxO!;BfxvC1&(Z0(%W}cGSSBpf)14PkyU9z%M{uGl%hsyttw0Df|^lP?7 zgN|+6w$rg~Cmq}B*tXTN^NVfUw$rg~oczze?|Anf_v~}exMz&#!}EPr%~h*v)|?LV z`37cM?CJE5k3o}Nl+UhMmy9Q59tHuP+_tbbCj=6Z!8`^JMgf_U)AOk^ZHbpNFZ795 zhq1@+iiuadR_Vp)kKBp;LmVgX4vGAN{Ah4nJW~D9C(h38L3)Y5@4U%<6Rt3}Je{|! zZuxxtEDj+zQ$&cDC_*oB&c)enwwCa4YMgnsK|DHml3>7zO4ZK^BH@V8&V{9g$@xce z5_adw`F|Jz=S-*Z4&<=C7_?5shF_TDa1eu75AY`v?23aitqV=CzcBf1>{C2Dk$-PU z$@nPgc}L`!0>UYfod5nLI*83vv7ZHb7MBi~-R{HXE933|_VmVl`g=-Grs9@X#SFSif=5$}3pM zS+54Lg*Z_Rf4`M#Fckr=OK_~Mm3w<&%v*KQUV&r1`qN`pMFU$_x7;d9G|^7n2i@Ic z?DeR+J5RH`YZOVx$zo04;!GsE2B=zA6@QF7%S1+d6$)1UPu_!8zbYX2=LyD!;@CG~E2R%+&gV zO5EmFcf_MzUkDt#y7tNzjITiNX9NI5q*(SE42%1;`PAc{=LKLcWYEd(x~NaPil?1v zM`QHI-yuo;=(rW}Q2+e0%h?ifaQq!bZbz*Gv#c2uj8<@BEIIrtjB0&ABs5wQAN|hS zVl;KbHY(ud)k2C0?YA_lvL!WECk|`D&z~raAp~yuprA}#M#f5H_49C|(6fKs+T&#_ zT{=tylzjCW>)mBee0ZlRu_bn;yqbJj$&roT&j&nG9imxXknA&?1Oti-|Qj6#*PS z+A|@nc!@~Twfy2D^2tcdOQC2ZUk}z>v?n@6x2&jeH6JcjzWh$JEh*TSLB2*s?kq5L zWkm*23$0GLoxzuliWTt=Irb+>(tH{1_z>=J?he_~d@1epqF-d)?-&m`j=nuCyUFbM zVD7Z<4xJdg>FoG0?huY9kLIbAe1Z8yrMw>&3PlHEV)dI4Sr&`7wMhp%FfvO?$uzNUwZC+r$;E z6q8D{?B;DDWue<*`NCax9l9q;Leg=j6Z_agN0(LmMV;dtH;FtF zWL0v1_EEKh z{8X+9iGIK@Xw}H@O+$BH6v6!q{TlEI+Azb%FFR=i<$*9m41)uo0dew^r1&@6WRDx( z#I6Um;8b=bZzqs}Io9nBb;~E&NWH`U(vRCC)sb`#674O}BTt~!TgCnH{@hzQ{jOlt zX9C7Dj$^&5+)dup%fH~Sq}6$ETw>BUh=-R zm?s|oH8e{$<;CF@wbAiKrG<-MOlBkcKyPcm3_t(fQrPvg;z({g)eW`4dd`CBuu7Y< zx?TtyWw%_&g?K1vfNJ8E89$5m%eyEd3oR?7L1rZGZ!k>DK$sZ=x0|71$gG}y?QZ~# z7k_)P%3%EH?04Q}Y{bu9{H0*LwgmBjy#NFU$4%MLAJU0vDjTQ=1G-E@4>-mwZbZvM z!}!Z2bGGyM45Z4l40gP~!KX8-@~xl5QnEh;()Dk^q?~x77Fvrmny*e;4oMwi7D}!(X9`UwGD^+F>#beYSc5Xg)aTw|EM#5DL%Y z9S`#Nvak3bKfSl1_BOAJx`A~WN?igT6<6kk+~$}}Y@`(#d=!z-qOmzjxB zA5z+L$O4z5(=VP2aMjr;78+J{R&qB(7&OBj>vY^L$3VwE+BEfgu(O6;*aw!B>M;N~ zB2GI+AG-2Ae0vC-JFf}92#>!7A%6m5MsxZICCj0^A$=B~b;Gy8-@B>+%!cX$-Kl_E zSyK`j@*RTWaq2A?NLq#(o8el8)Ee|IVXvYN_ySzvzqjG$KfJhjEWwad)UmEFi!B;W zRQsJp;dRxbM?G-u!#@5>h;PgB#+Gkk=G#F;Z5I66V4aQJL#~7~B{c_>$NdP`3Ba`c z5gA(6o+mQJ$)e$y6!#iZW`=M=Ur3rsaH(X7M}kYsC025vF*tB01B=#){wE|s%Zj3E zLiGwSKiIL#(HNzbp6dcJI7pUDA||&mx0ZtA+5LD@`Ji(C7GaS?tn)SPVX|P^YS0O< z`-AR1@YrPK2_Y`WN5X85rXk@I#biA;F5D-A_)>LEkYD`i1*R>;Cw$`p+i|ISr=(kK z`-$6e)^11FuIHBz#6-?9!ae!tmZ6yTQD3PMtr^F1eJnXAh(Qc%}I1;X8KKWShY(&xwebC%rd3us(@ZL#8A__)Cuitb~f$uYu`5P#Zaer-1$}o^bUCob()VvY4nx(a+zAExZ*t9_RmLkKXmaWWYy9tMmoeP@6KGEU?IjrtZ zwt?JF*lqAXcnAr0QXN>-OizJTZw{y&>yK0a+B72fHAi*LA}9MU6PoD-`BVsJv08Vg zrat+Yr?x3CycDwC761@iga6X7i#v+|I&{^vaA$zz#@%SxDm-YOR#3;ISOTYFsETs(d_OG_Wg3SX~7#(T6Tor3qL;#1=FX z@Mw9?EUg7(1UfH%NeTa?#4_AJ(&J8lGl$Q<w^ht?Fw%;39VTc%xMmKTcdFvonQ7tH2p^PKoIJ1c1OybtQ9 z{N3g~t*?rO3(37ptu8KB!vKAZbA}OyxGkVQk|fp=-f@i|d>2Jy$Tkt<`_@Ypih$yy(+Is9^Ky!E^W?9wr(c{28-~)zwH2hl z@Y8j{Ki5;$*5*&DXsE?US=8AG?c!mgcr(NXwUAWJDSxmbs9JJoRbjD8-yL|{MXb!B z3TOPHwxEtz(^Ia)mPl$v$ZC|z5jjBPfuEZyp;Er_dC;Ndn|3GoslL;g?B`P%^lE3U z8&G0(eW-gp;N?smWxDeBgXQ1t(0?Xrnot5bo8Mf=G>HGDwe!E)p(^H%CI-g;(FZL` zT34D^Kn?lY3`r@rkmm9TP(wV13J3^5=L!q;KXD_1)#J`HUV|i+k-)mC%v2nA+Xa1A zh_Nana;?c@+tQOmqE2IwpZq!q0V!^Y5{AzRi-!{Pw-?VwwaK|0gOB@+RKmO z3Dc^4mL(Y;rRi)By8WzN-5ah=7b_u}G)_=R;`LVCs{AWdp}EDb`{?)bO+6Cg@a^yi z-1AH8)7lSRwUt8-FCJiawc_&8EMfTiWQaTt4X3?LH|fwA+8|b6;wH!Evb3Ce&e1{a zUp1SIV0&IX?DUt39X4#|fX}s^U5XFj={o-aA6SvviXARB)O(^yie}9r4Q5)+6v-5- z6bmqSSjv&w3PV}_`>{WyGrwObAft4>hs!M6WIs)LQ?EWL_lBbr+j4G+m+1=1$u8%W zWoLOXARVmC$>uY-#keKf(YP`0RiS0W`nZI)5kH0A5JMyqArnmrck%Z|4AV%oZ!ml5 zmQy`0+%FVZhbdqNl~9!Y)_)N1r}Tg>)2)wPZ@9TY{MHpp$QRo@HIKtLNPHxEC5Ij) z_W%K!Kh9IZrw0wuhTne&lDwKb4f2#< z9Q{8Vq5MN5{S)cNefrG?cKs&&lm0iu0vS6qdHa9Zz)t^>9>MY2cJqw5gR#rSCpOKt zuwy3HQK77h=s}3Q_VW!eLJ`=q7ZGk58wFCS+pKe3Y_tZ*12UI9WnN8CF*Na|?N&;vULlU*nM2R#4LXPJFp zr1WrVxV;XR+mVHYc~FaqZlidX?N}{gg+O7|o_3?wSDT|nQZ;|wr=G3ur1HfW?aiP8 z=E=HTimQqS9*hQQMxNVnJ!Pd4K6(G^moQdJG2zyZ%rjNzgn~~L$!O?0a|}IJ6oMwD zlJy)Y&i$b%t6~6D2y+>irL2mnbF#CI*zySp`h_uc!Yi55blH@7#p-s?`OtQgQJ#YN1XG1f6#U%}nj5%6H(b@zRE3-RHq=t}pB zjLO+4#r7DS7vPvBKLh2{5=mo841%c{ER;5K+rz_Dt}KgYw3P+D#e-pE4`yLQISHAM z?S;|ihNDNje>ku~PGmrr)!r|K(sw&d$-s;F~M{-_pj%<@y;Bai7p2 zi#oO&Kpb|WTQMBIRoDGNi;_9pdQl4yNtP>js&|5ZAQSY66D?5za{UnFzvt*Y*$?E^ zcJd5BO^UbigGr$l1XL4lX%CFUaqEh;b?vYx$&1*+rt&$`A$bCWw=FKZsfQ{HB!*(3 zcoC)KQH~D~>9whV(H>A6Y@Lm;YbD3UuD^Ng2?SP7bonS)P~~fNmXPc&3n|4i$~bds z@*p7>$vaXFV6jC9B1t@|-@7B#8U=e|?hoaDy)Z7;2bCt2_f2zjD6Qo_EC$z4cEavP z$uWQM56h~KQ=ks~9X*qLI?qz-$4DSziN4%3{zkz5`C7{~c%k@+9aH+f79U1GqL@9u za)}Nr?d#iyjUJ!ZeVL7#rX6TVpqj~Ckg4nW!&74I1JwzN3ns^~i=+pL2oYbzU*+vaBUH^bVuQHe&NC?Ljel3Cw_85$tIC#R0YIe+FiE1a_Cs-4A!N2f$@QagF zf7Pow5*0cEol$_uAB_8Lvf$idG|j&gbL{2nh2>B(1}Yy8Uo9$_+-y9vs~CL9)(TM7 z4N1=QJa*xw*dHUxotp+>u;%8WMmDHVAfVH)*~)r;*MP!mlG(@FdT$;?%cuhvE=GVp zv5xRVF@I%Nc^856&05BRn_d1ZWHncV2PWbq-b9jPH{`M^ZLF~*ZllpMrT@jFX#|EN znq-|+Yu#6S!mMtyF+kcsho)+p#(C7F%fHWe!Nj8Tw-bZa*m>Z|A}22wR=HJrARogZ zeCdpv&6WnAKjB+Mjm&D14m%M?(W(6Qca|VusWXF08=6rJ{x0Ty>W_J)xJD|c5tiGs zKB^TCXyg__cD%r+cp|GO7{(Z=9(^rbAzLKVxNf*;nOUyQOPWUc_+JcJ2D=c*1kxoE zU5v%i_)!csjq(q1m*^2i_!G7-uxfc4OGIbzq0=bplM}h)Bl>8+YeF=w^^xQidsu|B zhX>frRlqf0eN!zh%ySHJO_=cJ^@e|Hksyg9P)fxh`eIIJzWk>hlYd6g2QaBGy5H=j z)9(cZ`u`@twW}LMyWMf0|-khcI}S9GsmOYENZ;S)U0LIE$4Unc?P~Mty~S1^;dR z%|S#PX%srzd9>v@)q3Q0#Pj>*EN9yXf-&ffcq?uOBgBtm^;!+Ho)c$?Z-Q;sQBR0B z%88R9FQ<~B#=sxWu73AhrpBPbP_B>1x@#hY23Z9vQf5L@BO#Z`A^l|{R8fD+ERRJJ zqn218b3A)$Dsvn<%v5c`$`VkD{jyM@yA=Ii{=G5eu7o|B>vXGELV@~z4 z)?SvWxuj%us8m#1l)_4*z9ikGDHq*}jwtE7;>WA zB&%|Bl6*6RMJ=lb`~&o^)67p_C7Zk==J^qunIf8`EpMITM_~?j3K&7`-48$A8K@h9 z%vQT8E7xMRi_IHgesZRwT5N=vp^uwSd2*4JpAW`iwyk4D!UMPFjl-Q%w4jpB{bLD>Rdd zvx3YfrMOCpT*ML{D;IhDaG}G#wok`7LsE@9A`Fnqndj1sc|@@!anWnZ`~9d$Vt}zi z?KQ;s4Vh6%e>i(Yy42NmR3w8r+jJ5=>P^^O|7DhH83UiQlp6wM`DFH#ERsL!#OGQ` z4Q1k!!R;1DLBWpKC?Yw?4p|tNR(3wytOAw-t_${@JsHbZJeUT*MKShqQR<4bDp60! zPM@eU_zQ3rl_Xih=q0v)C@iTSu9PBX!YPd}^$7r1RbFiEYQS17v&ESU$^`R{-W{U!t_ zAjEV#zCo|PTaqlt(6M7^+lp!5S{wZ{(Rp!9t$764l-1Vv-fL@+Y$vBdm65I{@d8%IQBv>16|A!iV&zHj7u~Li{slW0 zv3NcDPv_8h*AT^ZMy$htmCh|2{$QGwSAbJW1J-H0Y(>Ag!h|g11-l|KTx{9k_z>gdtV4mTzyTtK- zy9Y2)gkukITgWR%bT0fVF^~0^CP3ggiQVig($rhTFet37F4@WLc#?7v3=j8*faD2# zT6!D=EGEZiPeyT5VeCLO?BKgRdwYcABWn6okO;0t*92p_g><)q)NS}2{`z-G@K5<) zM%_Kx@LkgFe3t~Q|68CI{s*o_?0(x?+Zh=Dm*+s1lCCt)w|YV1q^VJY8qS}ASW7q! ziKad9*Oh$KNcl*la-)&;E8BH))KRDk8+DE4Qi}ch6V|a={d#7<##eyI{rd zg;NCzHz@q=AKAU1#d`vbHAW$Q5Llzmp}m%kv6#1>r$KUu-dN#*y-!tP-Pg7fS%7K~ zeEb`YQ*NundF6CQXMC*glE3_Lp=M<&ibBX^KjU9fKGrKAtr;jOe((O$uFoaFdGON` zCx0^#z?d2x=TwPQAr0y#cEd#* z!Ioc+(jmwOX-?RHPRY_Cz*cZadB(EdDRg-hRH&ap^SkHqM@LvHmfLbE817T$k^>Aw z`Xjdg5}c^F7hS;&&xgp*Rxz`AsS1KGDvPc1LjNKvvU200qy$-zPIrNDc1?Lb_O#^g ze@DSTE1?*!N>*Rrg<%oo|4|gknm8L68#o*M*C#V_Hbwns56Ny)peL7(%YSfr`kHo=KV>)YqkzusM4 zTef|DK0*ArG^7PU4*w#CQaEV%iLU)5yNjAYPB&qmR&~qkivX!LTH13t)P|OT|@E*nc5-1#q=DP3n%`*6+3LXfwc8CQ_-UMA$ZF zb6HI_lRADyjY!YwvVcYDunxe*JJ+_2zGx1rGpbvncjC%gpQ_p3&jxYorOAk~!YbxO zA4#FhG5EbwE}X;D6e^?De@k;Dn=yG%y+l6wM)4(kNqwT*NPi@2Z`XV`utM#%PfDEm zhVJOO9EaEEIj;8`u@TfrVM3C)T9J93&|>u5_|xD-Mt*bM>yFb3CG2>cT_M<`1U ziaoWzSmo&6mvT32%T=)@IrHUf>OcypE^jn^u`wyoskpR8jj$)^7Jz!!6D1N+@6!#l zB~j~$)3}i{lx<#)3Oj=c=JtO?&&EDhx6fMe^~-;ju3#7JM z=#YJlNnzHMD2mwO9=4A$Vym|s2{TlY7Z@F-uMeVyAh`V^AH3>bTjUFVmjQ3K)IR2y zM2vI7@QiOpN6ajdj;ePA3INpQ=nOv_p za(nzHQ zUOg2d;zr1H zxqI;^)tx1AGq$?A(&%!Hlpl#wo@un3R;HJ0L@VpcF9@Li z1cjk<(aZ(e!%#tYO$BSF#71TmBTGxOUidM%lURRI0}FpqoR$BMn)3nHB|sd`m+`#< z->mCgUxoa~+4g9Q^bM~(3gd4F0nMMpDE=7dvKV;D$CxRiGefus6O?uqS*1o-4buuaH@*fC5< zd>ib*{C+M`K1N60h|#ieY`G2osI%|kgr{zyD+5LU&QB}}@0`5u1gPVmSS%CE{iP?j zY93q3q2g5-Vttdx8?^JOTGZS&Ho=nn;ls?yH19DBN<<;6FFC!>}^-R+e zdWqEMuE=$r#@sjhY(f@qwSH5&!Y62$0i^7=p-}Loe`Wf6VL{1<&MM;5wDkArgv@cF z!tGv*;Q~aIukMPA`JPRn?{n@c>|6%yPYOnsDDXFP7%7v$d|_)qEe z>af8*^NkVc-ww_E|Jx80F)=l8v36E6vA1)waJF-F|DUy(tby&f_>beitf{kZuTZ!U4MW?=jS6T8%Iu7ahnQ zBN73>H)o3_wJ3vmVn@0?C|@4#6xSdM-=tkwwkoGb_m{j3j^B<^1dpZm}_4QgeGTb|Z!?55HVSnB$A zv#QqB`e~q5&U^*;H#&C^%N^cY3ar{!*j4RKI8~qIO(RQGe_OrZfBZXG{=q9IhWKl? z??B;!1_Dz1zX%qgZ^qI zF$%}1h1A~|1rY>NZyG+-WQ37riYy>SRqF+<>+Lj96~q$Yb>B;1vU)UOO5~?jt7W^G z&DVVS+4lB_&-eZ1%nm4`hWU8lK@EFrdZ9ZPE|m;}I!3~QI%nQQ5oqy49^f#4#e3q{?A zgB5hwGY`+bx2ly;hyk9K>B4)L8~+!EV0d0@Uu9_R^o-utUTlkn=ONuXlCzeVVdT{B2WIBjcMw7_xL6Dqr`gmk*~sult}b&+d7bzGvrC)!KeyPlM@ zHB&9{X?q7Hlj}lBsojdR2>r2L1Ipt=p#mbf_pHbSQbC)+8gGxOrp|{Iq{BAI%AUv3 zCN3nANATwS`a-}xEx&P_mfIw}@J&UwBu}ZPDP<-Y1X(t0!t}%>p7eA4MQdIR1S~gJ zVYzWNRmsjzGDbYjn4QanYNK#qSpN6zbIX?7f^U!CtbAOt1ID3iy9vcDbTn>Fv5-&S z4t`=Q+gt<&td=M}E*zGb=p#5iOEFa>Srwt_aFTfEJ($*BWlyFj?_DJv%6&QfoCOJJ;_m(t zX;;iPxp~r8T|RU<+|?NBdt}*T&jw!K)LpsDRdfeymyBpCrA&klYVTHq^nCOMdTA@> zbJLfm(Nvp`UX{7Gb;($IuwYiDg!+5(64J>e(z%55xQb#P2BA;ZH44D|tBKZTkt)il zwU0SM**kE?ZSc=RUzO7j)~0czNwM;#VAl&Gy}V9aZW1)u9TyYka@>*;QpJoy*7u)W zQi+*ZTcMA5LwBTqo^p?Ja!nqfwA2ye;46R03c0;pu&W$lbztW88roQxbT?7we4 z1xGtq3*&!5Ri%oy^1J}*Cp%qGihZrVD5|K4%{W;Yq#+VRF3SX}gVv5egqcuViiyyi zt&OBH zsxK+Z6fjFU#JB~IheA!Rx}nH4IMbBqYtVxK8>^TlMtdeY-@w*EH;Kk$mKrVS;zSf` zCN;}zbT4v)MOX12uQ?-?96t7~s|E(Y|CxXjz}1SK?Wp}hw+koFIPsZb!A-v`dqRJ! zE;f2w-*M~~kVFF`=(buD9Y9N%P`>hs{uC@3mBYxkbOHV*}yDY&q;OKOI z*#TB>+!T}B7d>B+4ku*VT!7i9N`*P*zD1qmvDI| z*cOgy!rVNxI1e<7`qCn8&>PJH&dDv;P_JK@SLr5==cW)52I$GRmw1ahlPE@gFQLFEhG!5mmB;MVOk_YGqRIpo$kZ z<6_`+qJ0&XZ9;G9+Yg71)m>id{a+zY#iQjzgdg=JxdtL(@h;)js^_VCCCajF8i=2?h?|0KKjPZNd!G!z9$ z5D2Kf90=&=|NqSSk7vrHH-x^5D*AEjfr%bDLubznZUnLt7?ObkAuAMl9vCC4g9JFH z1Pe=^=5pQHT6;jJp)jZvNWP(FuZynk+1goK(_&+L+u7@MYxRUNGm4P&*H?=BQ|Iri z)}zdSMktw{SL4cG-a7_BoGLt{lk9iuE}vS=>jS@*UvQkg=LfePg^_)eZMTYZes4VA z(SLM^^Iy%^cPpNNau~f|*?tmzjSTV^Q{=P|CHhLCeeNFS+)TTC%D24)*mfH~)*>T|!*i`oZh9@o{aDy|x%2GmGC3mR}#|6R;guM*=(Z$6>=0mqN4#tHY9q2}4dP z=)yWh1`ZP4vt;_*o@_!2Rr*n*&dDQvppsOJgyXP>DZO$f`G_H3E4Fb?(1}I%mn~tw zatUD=#ZMaIZazDA^}roP+}t}EM{r8X%8@K7l%;#%R3i4Z4B*`OMDMc28Z@&+ve6mSBD(>%aZtYLGBs3Se|1u3dtq< zS9ia#4OxDKwgF*VH|?QC^Ddl41r0Uxw2? zGLLuW#+Pz>J%>p3K`U0%>h=K~bEbhmwl^tmQ9iaMIn8BzJZ)~vWLpKc+Y~-u(LQ`L zgWD$&n_iTB`E$ecH{tYri-Y_dw8AZ6kJHXKTuetfwl~4gb7WnP;nglT(SO_rnr&~g zp0n3JB1@nBLoUQmFSgsB5uk?Uo$t0$Z|Z-f8r!~jh!?HExhQWl2Dl47TO7D=aa zyOJcjgp-@r%Q#32)4GnTaNtnQD;%3}6Mccg=Sa=5K zOn`M^Tr@@0St%2Z!|A0rZxy%_e8gJ!4Q!hfVv3iI<@Pak@$<%O+i**ybLfYax6KKb z!eLJ{D#Cdq6tZ&1!$~h0@0-v1~Qz&E}?= z+A4C1>}PRUnbPaV$jl7H&6N(Ub*BUc+@EsbtMW<3>AW^ZC8*f)oHAyg#XfPmz6HKn_)-L+H}gsRoh?<%}V7Q**g2qu-gpVJy79RcM_u8 ztmjNvupQk4q?=ldN67l=SI2U%jD0UMmJVC}6_l-{ZS*bY+lF4reRXq#{S~)XFwN7I zt`LGjh`>LnIaJse8dJpZD$InxW8wFLHuNExk#}Cz27-;@z>+*G4OFh)B znk+8PAF45p05mRsoiS8Caa7S}Vc0^kSK&?*x=1M-QJ&kuGF&e=gJZg#KPry{##3Y& zs?*Sc<7~QVekq{1pEi_cs&QG_PS#PGD4WV?vsZh~vVvFOmN2&j_l7#4F@BHIiX&DQICq2EWsQDhJYl<}vOShJx%e=7%<*tFSg!&^~ayS*e3b1zK?= zEwMNLkh*v(IukNHFU{ZL%&;{b3+dJXnz$F}TJCC+pIS)+>Ow6oK6~Dl7W{>`OwNvVjdfVF_hu zwXeyk!;fJC;;x37Y6d4|EEVWdRD4}J205UMp|NXMiJ-2oPB^Ccp~6Z9JZc5W%GxL* zy@3icu@ly^xd2$#c&SifR1yA>&gAmBQFnT)sj4Vs?7D#szm(eaLk)Z>RSUQ8G(GtM z4ej7AC0U*B4~NZI1)%Isp>#kzOHU<5eX=^69YLJ$)_SPo#VI~H9zuEC5|b1U%NjO> zf)VkB1bt^m&H_;2Uk1qz4$#6$fzSecjGuuP(#bY{zJh(G5N>KCn7FATa`ArqQvwy3%~gDjHHe=h)RFpegOU8I7-AU^DP zD?Y&Dt*KE-t7cIz_Ny-B!?j`2T^+yE9u-SZk^bMK|}c!#9y-Y>yZ}5cgr12+@@Ikdp-QFh(Wcw0^MRyS-vV2w`Qs?UDXl(9Z zUhUxcyjopt6(-sLg+ut&=|e{)U?Tq(tNM9!LxHp9cgob%%&7Qad8WpQi4G%R!7_v} z2~5g_ST{t@mVwTSG43O3xR;nZj|llTTHfTzW|oVqjbwzMxEx5i_1=|ub|Nz1&7ogA7;*r~O8M6W})K!r!4EsV!5+Y_X{5@-{Zc!+5g zB>Pgj0`sD8cEjN;#T z#p?(foS!+h-2H%E`|x}&U%Ui#f)ezo1ns^ecD|;pn#5mDi&n@+2f!q01<0+BronR$ za1TYp>`siQsNCmQd(P;lN~7c!N_5Gj%&iGgwZ(fye9;UJ z#ctf!Uf2Bg_(bUiS;EA)wQ;B{j0X{1=Cw1hX^B>5MIqtCZnq?ZPymlxXEQjbrrJhF z-wf4~^S%Y!e4=(V(FOQzA^O&(F`uB12g=COSiAFB$uE@4^Ah>`Sc$#Drw-hCo>PU4 z44&Pd-2EPVvGE|U>~+!R{x7F-)MYxSf&BOqS)ya;IA^!w^JWsWEsn|28>|=}XE^NZ+7H)3>c+e( zl*LwP6?H|Z4_``Zh|Ig=qR@F5hNAMsjdlIb*6=!mNDwlyg0K>wkUL5MDozJLayg@qQ7bu)&Tc1LZDQiLGT`cpj8TFWoW zjrIt`DkJG}Gf}IIC54hCnn@9=xgK4NgUPf2ZH{)AZ!Pr+7CBXNZW2q;sO&iA^hBC2 z?JD+r5gt(|&vrX~jr>W$6$5zpLtUs#(QE(1O`O5YTQQaElqJ)Qfqc#svqMUsWc*n^ z4-)C^T0+m1s7poHhIV7;?g30jjZd0~&B}o%aadEbhWyQfnL8b?X3Be*5M-m7$iZOI z1_Ns2D@c9&kFVucQz4G>Gjd4q$h`t@!XZxAJ3-@U-SVPn9oVS0rI14jM=}1ormeMt zB!YV7Du9Ka)disLHJS4$M4e5fyvQ?~8Ll`Bf3A{^iYOO+eK=dB`8QMknH_9MlB%{= z+sgjw-22?%_-yu4l@@nEDIs(u#yVF_5!vLFP+)IUJ&pqap+cRTE%gzM6{jK#Kj!#G zj5Y9Qk1Ni(;A31bpNSpjIoD%H@0RHm=DD0}YOkI_HMV1x&Q$^qY^!2+m`vnjG~CwM zmQcjLB>4J}t@CIioIA85{8V1Z$JWXkKHsMQHJX4!xzwy0iK#uI5Fh8{)G+3 z*zM*(XR}#2T5EC=_MR|^2|CNi-e{F1HAQokMxHAN7|!zRS)hyFAM7i8VLhs9A$7BsX&hKj94+Bz z;rBaiN0e|0YBAxhUA5_cIDB%0P17JHf(Q=ki`xq95)!vy2f0rq{Sz(>sAJ%RAx<$#l1_fw4t% zctJhMw{o~LGzxcXFje&KsYF*P+HjB9YJ0wi)B2oRhV9pd+E18X$P6s|opqCO>nn-$ zt()HzwKup=OyA62!CvqNs=S@sS3i!8{fFi38Ek7P#CJAJFI~q_qV-jr5e97>TqU^A zAKO+V@b1OZ#ANM|$E19#JK{HiVFM7beA!a%2j7B5eq?;{wgkix{m*KA69~cuEAy>c zg`Nn#-UD&5W5cj7obnv|1p6rTt;;)n?sN&Ze~UE`Zm#+GJnb*kwq*#{`J|n*8{PB1Z3yj@| zK#V1lS{Wzpm#=TOwn>`naH;OLy`-u~uL-^I^;yx!S0u+iRKnOaz^(nkD#q75EvO3( z%lehrC!}R@sZ`fCu%ObGm$ zUd>XyN8)Dhe#Gm8lX`fK`6Yn*adYF5?uMU-f~RsU?}e;qY=)oE2f7e1`8xrs2Q^lmvDZa+w2VRRS-?&d0sC$WY#6Epq5`UDMg~?q zr`dhBM2|O^g@8FbI|Qj%xAU(|_sokO-k~d&CBs~{1HH<;T0vxC9F`Y--k|5f9C(pLU+<%k z*9yGTev77jfV{fF48n6~5i5Mh38YJ8a)^jf2uWS&gu(@`UW-r)Fo&jW?B@RD^;&+? zCKVA$I*oW;CR>!wD8ML=h;73b-&Q`dE#z?$VGb)Nrmj1zaABg57C!qO74~=9qAnM+ zkYkmzGkCLq;Kyq|N!eOUvKx26i$I!eTh)Enu=!4xp8>M~>#pNdWe};Zc z#pN!}^0oKtTTAJKF`1z<;w^(JsBo6gHI|)KsFGc!KSd^t0WTmR3qQjuWrvuG+TzH{ zMwj6cCcnThCM_xJnOWK5xGzmHF+_Kb$LS#$=oQHI%k9w8y(Sa(nqD*aNzfCLS>n#j zFJ>OFg?y;~HLH6b!}mz!Ztz;`2Jgh@LGDrgYd7Y5>jEQ+XD*@CQje05*6$?B|TK>bwkC?LGOsoS?2w@e-JXs*a)J$i^gqZ4_z-RiG@v8%w3R^rw2z(ZQ z{5KgFJw}qWg=KXuG5o|7u4ks^VAB+m#g5MW!qU!Mxr~7v)`vVVk`BBL)m!kmxu>`8 zhFHWtR6Mq1)%y051A| zGqaZLpJ{OSolMARWiXc2ijt(iOL&YH zs!|xfma9Oeg$LCtY(vS~^a=nL(h5UHtKDbEVbSS$&cHT`o84VW5lz6dGqUpWQR9vb z!+?RMeR@AX&s^EXv1t~YrS$27l`;Xl8SlH*>1R(t-}dq`jpPg!QnxOPbZttY&2uTE z9JOQ#X%W}5HkYF4XO5PyC-x&E%`f5($|~eP4-kg}hrn3Vbm}e?+1i1s?R5yur(KR= zZZbJQgn=!H4mt(Jwx06+=y zrVfxYL&1w$Vgn>?lJmhNa27bpcPs|eO*-UR5%3dMmqS`aE7_XBVRzXSw1aLBoIX5+ ztW0Y=nvh{UfY37#^g|!A4#S_pw@P6^*JLrgwY0!YEw@|-e|wojqUcdx>F zUkM!ph%Urrp5y?w$^tvA0z1L%t)1+An4crIW5ojNt%YbrO2eOI(OO$-1$tzGCS1` zCZTF`_`qG&g&Z&*o@~#&QiqTcThp-4NIF|f@~u}T@SL%VXsrIbGUk{-!z~w%ISyyO z#Z~VEu4)_3PNu9Bg-I1gq63_VBA)W6c7vrZ_t3{Zhu_QH4#h4@H5cePsmi0I$>dcF z=l?EkPcu+r@UWEPnZuepR8G`#lGGAKXKXI5wJ}O6z_VygW7p5K0*p z&cu>I2;EPQ^X#@izZ}=0r9u7TtiHqOU2LB{u|ZCz%tt*-1JOP_+ymVu5obbe0p zf4d8r`wW35|Ngi1lNuUkPhi`Zl=gWP^Ir3E8JfoRA zztF042Icz{qN}5q;_HIPny|v`*D!M!uLBhn{x<)PTRp~lSaut6 z4(_@-@*yeM3~0_Mih&?P`rOA95vzt@ayUDZ!pIg|2?jd5E0OQxPH!Wa6HLZE=VQ7J z`EE8{UYLqJJtrd*>4ILw! z9)Uw>U}zZgd;_B?IYdPGfC;e|=j^*DT?tKNr!%fUOuyZ@)Ch;n;ry?u0Y)p8R`i{5 z=$1IE?Om!W8I%h|r2Rwnk9(J;YJnW_u#EsdUcq(wkRN6E?8Xbh(zC}Bx$DVq@N~{W zZU>_)a8|y4!@s;F%x9gW%(=+T`->7 zXtXj$gzi?ZxoosYc^}WaVo1H~*tA`Kt(Gu>o7C&z%iCKnuN>A{?qSU2D>p1Nxl58PII-uW8?eBT?_rJ=;r%+l z5kf=6g6bTvtq)42lIct~A70IA>n#6HxMiDf^rTjFh~J$HX{aDY-k0D`gO39xXqtOr zS);nkh0^`CNT}8?!xFE$1pts)f}@v0m$EFlkkros=JF-4gm!S-9D>$HnZ{*KSp_*i zu^9t68FuaY!P@<(E4$yyY{Rcmdqj&CXESSYF9uOL6QxL#v=`n{otHnuF3%hSEs3Vj)L)p0t){7Un|-;?Iiyc z^td82Y$4jbNiIl;U`dlstChi20$13*n7jd9**M!<<^l7G&Rr18P9=QC1^2O z^hyA(2&34d+p>Xbxccmb9;mvFV+4-NA*=iUQl8#blNp(m;uOBMHM&>}o=S?BGZ(9f z4)N&N2>YOO74^iSjFO%Q-xaRx5L*!vv#zF}3?4$xTqvH6N@tDOVoIdt)PMcvCwZJ- zPTZ<3zS!$9b$0xT21+UhVA7oT+^>#Kmy+nsgs_5J9L1mMAvS}NMM~%X-TyA+7xNkC zC~fH}XRKqu&{bJkL(xSwXG~r0(1VneHi$Lqc@Zqzk3u3cMzWSuUt&>m`E{IhnH7&a zh1amn!?uE?MMT&_t;!-&@$}*CP!QbnvY|P5@?>f!UDUbx@$ya&J``CaEATM2uWZNdDnPNcUD2+u$-Bt~L6)h{TX)W0>jRSh>!!kA@{w=)p3EH)d?c$3v z)qltPMDq28m`ei!1XCLb&FP0~e2Yr})o=he2jwcHCv>ZjZ1%74eY{7)(97s>9m zXPi8QZCNOcx&IdeIK8#L?*Ll}WE{`*SCrb>1!iSqWgWAGFNUpeHY!R>U}s(#t|C;# zMt|6Y&u^0b>u`rRUP!o*#Qa~f{)+4>y9)YGCc6TpSOg`Ke}c4=%@N|koE=vO8c@#V zX{&esirYAK$ST6i#S$qviF?QJ*sEd}z(!b#N1KM~l!E+!&)C3A*v223vfMj7QsV zZF|O|e$q0{RDN2h=--g57p$unt*aNVs~3o? z7qP3C)TXVTnVtGS+18OUoi=2T$o(a9CRvLJyH?`kYkq}JX3MHgIQoB*g%(v?#&#ME zleCJz$G_fju)r_;z8;EbO9HFIo_ONGY!u3#9OQj6yOHIxevUpDKPhCnkir%_DOQ8_ zye@p8RijA<1`+cQe8N_3G1Lohrm&XaAYA-fLBJF5cF$cg8d$&&v%~J_*nhi<<#TTe zyxLuWRAyR)p)AX(+`uy#j2QMn0C6J)dsGB^P-S%YQcry!!KiZt6ltcDO$5VL)a&Dm z1>S^G)TP6%NrPI&tcS+Dh){QgsXX{Npnet(36dBFpU6=N%M~Jga`+?Iv?9E*Gfrix zr}+w`%@R%>Blm5Z_J5Gj#S0mQdsEWI=W_mbLF&z~-~5Xjde{uQw`xjw7uyzQULV$l zi5@?@M_e#WbVo;Yrwc3$pcUqgjU1~}7v>F%9OK(3W}-ohk421^Ln3Gx6g+@_Dh8wW z^RaY)Bp`aTWp67%uz4dS*$Y(Y+AwgZd6~_l_r_ys^}xBodqREJB)l}(uCr6Ifq#c% z2|sGNUhl1-dk^3vi@GYY+@g)-j5Bv`QJ`SwmPY^Ek8J98t zo+N;&k_f4mR(EO;Rcw0V%LLahEeaXJQ|WRsBc1(*WsB+C(F9!-4(wyQ=&pP^WqDPe*19-=+N@*m9u- zjI3{elK^84ig=E=8Arm*NB^%XdKiOGeb94w;`Lt`qu_#=*r12j44`ZFB5&FxcAz-n zi<>rMY4Hph%rrk{iAa`_L?9E!2v|zOoId;xk`$d`7&Ad?#k}cBUG*`R9Fa^xZL_*i zBk;9^>>Dbac_^mJuvdTdo@x)Kwjp#|gxkPWCl@>qwE&i6AqmaIhQiIV{H^g&Ah9gR zri~;<_G-i1rn$vE1y-5J!E1J$+FDV~u5~h8BNB=kPyeQq1?dq1ta|}HR=m4)1^GTQ4#RbHCijX%@0f;aD7pPpG&~bDym7Ekw}A^>d+Dg8 zMvJ`0Qw7DGi@1y_B@b{34%~v)KH3JFEcE#7M)*$_5mhK1fI*GKP?oIlK|G;hvbZoR z5+n588V*Sjr{qyL96$qdJ_k9{6}F(80tm2<_LCvJ3d{yAHu``gpLMK)hEmX@JlfV~ z%>n0WlN5$p{r;Tos4r_<_Q7YykN}M)xbQl4%QHSLmbxxVu-7H1ZN^5b8|x@ z^6vo19DWa4c>^f~$+2ZFTVxz#1yKit^cE8`hv2b*{S9Te3KXFg4+`(&K?YZYq^2bH z&lGm!WOZYQw}7bNeo1P@X)>4(m0^v^c(-O~1;sNWrW_HKH5ZDw)xw2MKkY8Yh`@DO zwRLX_{F06d)xU@uh01>!_=Fwo*=JihKf$lZ4e2O1gH_SJ8~Or~ha;xvwpkykGfa4xI9p>h@ym+6mDQdes5YfrT=r=R0p11I-bAI}R9tpUBD=tdpl z+X&a6Zw2WErL3taZm|@BMp8DCB3DMjBwnx!cZF8DShRGhKr;J=d3r|=u~%)*#uF9J zur?p3JLc&y+7^`&EJV}W1nLk8k1f8O}<#k{Cq13BbB zV0c~Ef$&TFgwbYnrkfQLVDr#Ko^jsR^`(DDQjAiRUU4_T>X8C}`Y7vUblm!FU05{O z&>iCrS{=~-Lg+NQ?dm__!Cgbxv%lRYu7$E^dV@l*jqaG`4q!cD{%Q0b(0syY5B32& z&X@9Gdo zQ+P_t7KJ;fdx7Q2PH^e)a1$-Q$FRvON8dYbjZ6Fr&}bKxMD=$^j3C_I@hPRU>_i`qC9VEJ$;=h?f&;t!x9K1Aqoz>e7{HXcN<4B5g=@CN-x&(nV@r-<^2k zRi|Cdp&~vkCG}DB-$-VaR4{nvf(3iS;mjNl;PAp9-M-E!M~icm(H}0p&Ra^VPnc1_ zmMC)MmWx_a@`-9d0!1eMwHjN1x)6w`uoF=~T{~|ifvo41%r}bH$Q=5ub|_dob=gqUGS)&t_EHHw&Z(zl@aSUv(KCcG?k&;ohdpY#+h1CF9?dHmT;loQ+BSat)b=b;`R{r< zs6bZHSLzRVYsDKKY3-#wHVXhc@j_IqEdJ9`Vdc{Kd<)Dit>j8Jb4RP*>D&WivzUMk z8JsdF$;Z#G&QCtKHGj*d(ZttcKF$S_<3XL(cml0)0S%gm;o;`lK(i; z06`B}w+DtN^UxlnHu$y+j_mdq&a9e{U#-9A)^CF?(Bm64_T13AT-UZNx4vd?+NWi> zRznZ!?cdM$$cU9nI|_fPxToa;(O>O$VE=M@kInk|-Y}>4`%Z%2Y}faHShI%aPR8t` z*Aeu_vD`(fL-z(%@256wyc}AS_a^X+vo-eKRIX2cU_FubrudB28g1WW$CbF|OmM|j zWX{uUhBw*m3-lz{?mpi^*LgGc!uxLAZo?I|W%K#3^4&uu8MH&m^t+qysvJnyk*FJ?^X!3 z1Y0S>)CeT$uz>BDOJ*JT!>(_m^i?1nm$LRVbPnVeP-{;xEU3JZZ=3-5AycYK=P7Hc zwjhGz*S=?s(Q?8qD$-?|S*`D@9Itr*ycn2^XY|>cs3--Lo;4UUy)3i@p0joVn19B* z_?3ntzlam=5)$Y;;Y6>4QtuM#5F$q>8Qs;%gzX}MBay?XNUsSo`+ir`J35kORn?gF z)4BL0SvZ@N(+KIjH~c+o=V+j1_!W7b$KrurJ?>>L!|O-*am_yL`y2UHj6uUbZJe*) z;!CM)_q$Kxoq27HFEsJ?RpUdd&CeGs^{zHQ+86rrgKI5#7XR=&fczEy2I(7-cjwz6 z>wD-=zedHc6n`}>Pu+leZ`cq#i4%SAQfI9`oVC$&#;7=ZAkAuURPH>`HN_B8De83u zsR;}p-=(|AoI%$l;xr=(>E0Kl!aFRCZWEr!&230u6#@H|MOmm3rmgar&9bHufwH7U zf7N-@vdZy3Bp4cjHhy$Y7^HFgIEEelc&I{Q&KF^DX#@=h5#vGUt{F5A*%NODca;1h z948#o45P$Q7(3R~`BSe7G>=h@t=nIka{`XK9-!b0XA#)JN6WN3RA)_96(2_P5HN_i zIxzNcSo)79{NV8Qp~`x@c-80OK)0&(C&X_$SgnIr_0io9*tLh}RU?(vw8Wu?v$fYs zljC+5!P?CU(uc0@P7qx^!x|vI(AQ;_Mfk}!XzZ9_frK(Rz`F79!37Kz+d|oYSMOnO zQ?_(tC0HUA=Z5kjQ?|?l;W$pt_v!b$5uwi+f>=0#s@|tfxZh^-A*Hl~m*U8)u0vX_ zP7Dtx;z;Rxq8P|ZC9;Wo(C1$%Fm?)&*#>c-2Y#EMV| z`)1i+6nV1>b@ODMlTfI2-0>mrx!|H{{hOK&r9R;>VtI;srOr@cmP&*@YDX96EbYHyR}k;?e3{>PEDV94QnZpJ0(wuu z4Ow(c3r;WXs$HC**G~0^(iu#D@7f!_q+UC6-3kKEIx#D6PpZQ9EJu9Ci^g({7mQmM z4p5wbr{^Jr-~Gk-O`54GvA{B$8lfgO{8LT7hL#B``Qk^8J*+#yf z+>WkjIIL*l85b~-H4P(GtWiO~k!aj7l-M0v4A~{${4jl@RS(l?!a7NknHGISkZGd8 zI4wC=cfo^rL9|H(HZ2cz*3!faekea?As2I0H_j`UQhcN!Z%vg5=~sSit0(F& zMt(SBe*a^U<1F0AuJf&{l^qwpV(=msTM^M0Ru&)I^&^%Yr|xpQaTrHZ8&J%kk{TjM zp{@4))Ky6%t@cYhfJ~vX4LIzXnxnQ3i0rwxNp1qMg>mh=I-s9D{yS;12_6-}{*bT^ zOa+rIHiS51*OaJ-etZWq4f{tU$2|rf9;)8so|YWJW1Z!mB!duJ4^^M466s?d|3b{A zz&$*J=xdl7UaC-MQ-vXOv505Wo}|@0idr4`A{Y zOYDnl40)R$|CUy=?>QzkJO}^B@1d-v-@awIqxEcLT-qFBtE@U%{=kB+d`2WQ*-cI8 z>5N#0S_tD-;ooM8E7fs@b%$E^bOq&Pq4dIbE93wn3bnY@e=LP?rr$0~iKp zY`d`RY#{El?5vgslEGr&FBz0i2Me9R!63cY&$@u#H{qj51u58@J~`MswS*>04kKZ1 z7Z0>0L$@d^rV5s4|MT&z{+Bjo%vx`>w$*To@#qbHl3y$oHz;4lf$Kg&D%qHHq2}>) zxFk1Oo1Yc?vkEAN5>xt#cs+u8EzX8rq_r{spcTasf6l9GM zY0!$bi$A@RD+#yM8g+71cKtVarUMecHPl?Cez2*8T_|pa7mSo@f?Lbzv1?u41G^{? zCfW>_2IDZWy8?KFFzFCL!-9(|30R7m9%J0Xz}*H&me`GWU0Vte;++o8)~_>FSYvZw z-6s>p?uq`9StH#*;$jzb=-5}L2sg}#2X1kve?lL+?|vi{j{~G+0wkR{EKez=UylPu zd&j`8ga?N{#%Q061I;!*Zr_;&>^AODr}CC36BBxQC;rl!HI(sc>elD3dSNda1Td<_X*$X_dDP zBCY)Ri&SK=>B+U?B;fm!vhClU?>T5DIiIKya&_RA&XH`aX?PM^Keaq{d^ZLL&TsQIdt{-zZPSU(|Fxx^|LOx;4G9T@-@GoX5ir9N0yNZ;>*)D|WxVv`o zT_x&>f)s~BYTuz?;EHQ4ekvaGk-a#Ytc7F+NKIbQgFf?GLZDmGup5%<w%OGNL z67*tN(!;nhoHcUFm|3L-xqaO_L1+N&W!-c^B-0>eux>hhC&k6^vlz6EUlECO*i6{S zu8A@P8*L^L6DJ<6-{S1dgpzqBhIutS=tv1N00kO3KSJx`a z775VGk;IjLwD_B=KuCpMP1eF`5t0LnHmRuso9>47h2Jr%Bi} zI*3Y}!)Y*@s`O87C)0nJdcVdRe9^1pjhGynS^J5VJviV5OE40XGY`kTU&z`(x-X|T zs}wrbX-B%(4W(smW5}`fvi8SkrZG{gJKDi=v=#qxcX{3=oju(?C{%EjHtIfwpP1km zrxJ(vyJROf$|X5IMdO9^lm)k!Wtkn-(ej1PP7Q3oYU#Tt@jqTmn-ffMZ)yq6v^HBN zo{lRcWt9&FtJ*QiFy}p?4(_3Vh*2TGt zS8}h<8ymO2D&j_{jZXZS;TaSh(vi05D@XUj+g?xn5eRoAHgJ=1$L2~WQ2Vg4T80yqVL$(2vYk!7T{aQ4sY_Rg89Zc-G#t+Y+k{< z33`KO4vcRz&u&fO^8Zc=mA+4LOO-d)5ts}KZ0SBJ0y&nNQevf#G z*z1XR!cPU<;XX8SM;3R=TVgpQ@00W|`mdz;gmT9!chWuLIn!!m&>n?dX?kRAx1EQ} zT|&Bpy$P%LcJ)`ihpFP9(?mL3RE~!>hJKqwa4BwKjCZn(x?7|x6PJ5*>vUJ~xIZ?r zpS#Qzn%zX`kk_5TZTTi~PhzY%C4Tbh9V3VOmq1LM*P;1q5x3%(g6d@H0n%&K!=%|E z_$#_c!iQiEU2oFy82W+8+7VQ{m@ctiiraYa#OUGq%Y)2og|}1>{dP+3xZA<=olf-l za}&yIPYN~Poah*Q^ZcEWO~i*Fb*i4F(*Zev`?b79;crQH)a*>3+40_^;sJaIVihp> zpkQ0bcJ&=N^^SKBD*3yzc~E20c^WvjK5;KZ>8JA(iT3FAuqU_|BHgZyx@2NtzC`nw z$g^qj&tqb-L8Rq^Sm*v=Z|qK3$D$#$jaQ$OVqduDoA+CdloyniTih;OCK1luspA{e zI4Z~2c*}4SnW){*WatFCD+9KBxF{T^18DmQ&AW*u(L9J=&i6M!J zc!}L;!#qb#n8O%#**MqcOHhMTphd_5r0QvC6+kp?5f#ta>2J(riuN2(!OjT2A^Z{b zW2W6bFNU1?{yDm)th`&m?FZr)McXn`jBsfgT4DI;%f9L#ho0u#Bv*m@w}}AP6?tX; z_YQR@|pfFkN%s|r-qYr9`QGr#2xtqm2U`;JD0GLY##G3 zruqB#z`OUz?3cVXNjq|X%mjtJ`=8R~{3G(c8vq}WWi_zj%!s)}Tv2;oZVFDa%=NYN z>h>w!>ZvV$YpehgJthCR5~c#DCHa!7ziUei2zW*9HaGT6le(Q-Qu4PtWMdwWLPf@!SYc7hF?n2~lTR%6iCi zk^0SGVIRD6AG|V=XxVo<-@e~5n)~6aZGbj1FR&T8-5C;9#!e)%-)v(a-{hrIN@dmM zmoBI;6o(xL7=~1C1l*QI=bD{)ruYY*sF;oI11FDrb~cT!8F}O?V0_>-wqL!w$CQ?T z*=Wt{P1k-AERc~CQW%=0=JFzn)!Vh?^-TIcS=A)hCqH@IhoK;m**T@TkudXf<-yLn zca)g1<_kA8&4&}fKDIIbmZC(8(HhZ+8i##fkBtsjjnhii2bDy`xk$=tekDsPpZ<-xtc1X zkwbQy1J29|XXZ#f%j5&>nBW$1B>~Ci`>zc-mzlv-K?EzhvyJW&l3YXM(0u{Oft`L% zK^JAtECw=uwpEXWQ_Ej=yBX$fn#;E%@5d093qy2a8$JhJJ@cNPvh&QyX||ca)mp?$ zumxSAEx%xA1u?2|p;a_t|CmSaxB(2?6ts{;Ze`GhIeo|T+4XV7u`;IV{*BXh#vWSx zM;S?5d5Hj#rZ%i6bFHg9_qW-QZP=%DaszGzS$MU=bf!kv9e~`^uAI{=n55~ED?Vz^ zo>5(KHINakNj8RRf@$1=YgdW8PA!{u|KA}8|Ka#XcU`9*f2ghDAMNe`lG<{zvv&DU zq+_oVO! zy5(+UXtfs%zaxa%yN={*xewO4er?yo;WguZ|2ev9_p4=&s&81wssit>?bra-%44ZY z&&^?b7zEt~+-{^0ARNi#(Icag zy-^qriVTjDWd!}~CB=C00BzlM+#w5gi1hF8L?qeNzKX3)Gu5mQBUL-;=60_0om(5J@LeDJ_+9>XS!~7}X0s zU`lVn(&a3S(ye2#{GZ#TSLF7IYId+LqT6DyozhyJ(j*&iF=rqf#3)!M(PiVf0y01S ztdI6Fha4i*dH%78H7S6xEj~io#)F1#ZJf?c6m#X4QA44N-(IlqeG%QlL~ZA#({}iztt@Kk$P06rj=$R(OmdNpne1 z?-yae$CHf(-~RIbz0^yXK}oPMeS>(2J#)S$iJ}#TN-yW(yv%lees_JgE$;n(y{G>* z_`(w5G$vBF7SyO7v4hv^i_y>2yB)hwH&7hg_COF3TR#yh_mU@ChbF)q0h|^^v`Qf| z9}ud&U|c0OAA*CACz2;t*DoRzf;o(-uDy7aA&Y`)J>gDcBsGEzc}%XPv>%zic{cPi zzEl_^zP$Xqp^7v8hwSAp%Cd~q6fru* zorh7jpnK>8Tw~Fhxf^NekrLZ|6M%lU9>!-@|1(5;m9>JbFlIBo(S>U==9| zU`^Q;P|4k7hqAeccKP+Om5;(C)!+Ie8z7ANyWL>g>2hApnzK8V#ILLfHc$h(!*YXr z1<1R02jZh_2die{MWTQ9MPy)%IzWEwDIi@-%gn=4ZxDiuYix3E9uCXJ7BKC^qLN~- zjl-c97^4<9*nPz^{lJ8r-PB;pm7(Nd9{S~4*7)>Y4f=GBw;f5`CKbBun2wp0>YumR zX*d4Q{=kQ|O%3lT8%?@MV%0hnx%k;ckH_VUsD!JSFE7{m)f^#*E{8UOf0#C7Nt`Tw z#y$V3Tl#wOc~PUIY?2^K_8~9z0Q$kfCF(2Nz0wq~Ao49ZZhtF#rnT)k(gXTbk+{Gi z%+$>yTNa5EX_kQ0aI|GUE-biZJ}oS`mGGMmCh<>8Vf+XX@QFZDU&govS372j%CL*S zlsh)U6}{ILbO6yD>ILt7Z{Qf7D0whM!Wm=8sn%6OpM{%`2fOxOzJk&&&zO*O1jp}P z_&+?=9dMDu)GW@}mCm)eGcTTbx8f`-8@g4y!r!bJPX!SX%bCVbm1Gh2EI%LASwE04 z)`##2aClcBw!nXyWaDHmzv43u$tAktArLGckkjEv9J$iO3vFi6;gm++PTzSx;2Pxm#0S1doM~qIxdv%D zBaqn}fD-;1)8!p1kn4(z5?H5ru>_(xxvYMK{%gNCJwnUlNnPcED$k#bKMQ!)@s5L! z`<*j-c{Z<@0LXUYCr(%pZFZSKIL>qXe-m|BQ|_qDG0!5p?GOH;>G{(;hCe|UW5ZRW zL}BS`ry8jv>4%_TfaXB9Ck8nv9N230Qr8D@eR6HR_d2apKI%HIGV+=DCH~6$&<%Un zosdo~n@Zvw2V@7IdybCl*XKx!4F6}O>3>q`(iTq6Cbs{JE$de3mjq!%$Zl$0))YYa7T{sudM1e|O%?>Z zX2e`gN~1}qB70fVmmu3vDxED~Bi5(zQD(EUW|701o72uL$wdg1ZJmYXkAb*krjVsIT-O5_dQgf$83g-;}{5j z?6h{D=X>zp_Q0tllemUl^T1Vs&V+j2y^ATu@#9qHZxLMS?Ad8CWIWET#VES{-6zdC z6wv$nprqRFhphxv4A^fB{?-s;AR!E(q7JZqZSuNoS0eQnL;Jm zMyw2&Kv@_DYLIBKIQ|{$KbY~PY1_4b!htINzVUiHk?>He|BFbaL|v4Z@M(8C+G_ui zd(B+`M{*TErY*RI_V~bnN^lKjW74q8W}SSKydeVsHiRqFV9D7d)Qfg^LU;RdK)mg; zZvHWN1EC&$Toy^xR>cbskDV2RiRWq(Tn==;j&smERIEPCl1RdME~?Ui;FMtSO&wCs zE;m++@ajQF;s#Hs(|r^89C_dw}L1sGi&}8pF7^}p2`NYk8VI2D8Nt2L&x2sGFTE+W(Jo~82apjMJ zMWjfl3J%S6*dBZJ%FI+a3Vi^$YX|Jbv9&aRBjQM8R_m;$I%^}aO0*S>t8Y6en9`)U z^ZUG0-i<9p-GMl&3iKn{7n<^Rv{-6dLq$EnTmJa>`;W5tm@ANyvEJgi&Yri>tDOVZ zbr`aJ$ZM0{uRn?%(!|Bq=0#1(cN$q6YBfs29(R!-#@Y1ZunaRjDoG6V*e^C z^iA4-z9jRHQ~y0R({=BaYxn*7+`0|qyfgYM!@dGaZm%h*{uh;lsPzoEIR^S*P>>VQ z3nOJnxn)O;a zY~!0*O3e(hWE3I$lLDqv;f0n8kr3riq}W{LDvgdalN($Gmu23G9Z2|=sKq6_p>RRk z{@Yz=$Bay~B#UU-vyiB?f@tazs;70KSe{Cx<3OR1^e_raLM`F!PONZDve=<4o29T) zmcLnAj7l==A()2}gI#B30v9|f#P%iu8!){=Isz)hOnH`FZY;}5DY9i9s1lSV!_#AB z%+U@Ts*gd-Tq+?5g(ZxoBkk)Oib#~FeqwtbFGRp39l|?;(jggw^_Uf>ROIM`Uw04s zWkjpx4#P(dj)y25JeaePQ*+&jEa4*!OfaFWH7+|t-chC2%X74l_ec~lp9fuxT8JrS z%?+Buun|=K759XDXjC~Ogm_GdI1JH6$RsdotmtT&_VuZq;VZ56FSeSpss`=K0KBC} zP8~g=QkH6EPQYq@viKcTazpiB5fzN4_VPAPwGx@=1|Jd7V;@Wm<^|KJP62$+u)TLM z6HJ>nvO-LQknC?IKTzq;D72;tc7GsDpA*xtBnudU!;UCycbx%jrmZ0@Ch*&Ws8WZ- z-8EAm@_n1G!MeeD0i_3F<0;l~A3aY~QR9O;5LCtLxv2P+eL@xZ^~SC-Uby}_X8;_B z0&0V4bQ2o9%zfN=JH-mot`H9)X6sE2##Z7jFK^sUepKvDeUzNN(nzU#UW6i?n7}Qw zw`@7PwXsGmem%5a9G~PiG?j&n75Qu82o5|Zr`ze|3zDA1i{=R1i|T+IQ_rXk;Wx`} zIX(uQ^%&{T>n9xsCZG6GiU>CjG1lDHe`{l@Dj2L#Uuy28*auURI-Lo#8r0D?1_Bz>8`|i#x>VT%uq@`|&Er*D7@dP7 zp;oZKOM8x$6e(+zkgfH`=VW?-L#XfT-B8^jUse6zZ3cM=(L*D5e-{`epU4tMI!-Dg z6=kx`lr9E!btfgEu<^3-Q9P7^$lucv{^PvFls9DD11!zY_uChaeIL3N%YXtMB6c(R z%upvb=&Q{*#@M{U$`Hp>?*4A*S>j07nP$bMss~rR>IZnRr_6nb@Gv0MMMz zof^Q8Ey%Q);1GI#v(0Y{ft?9g7OG^MoBi?X7j`SWr36F|3NiG>tccXDgm{&i>j)ki z4-#=d?{uHbuU+eVnMcj7`BOO?awYGC^*Pm_HX+-q>I_A1g)SX*oXXy`iE#V;xwf#e zvYYB#-G}x37K~m4`|;xqea%oy1BVU~J`He05xU_@3+bY{OL^G+%)(;TaY@#o%v>;d z9%_kHyV(VkD(YZok!sLq=gVXBVsOO(3?2u&7D-|eqn{LI3Ss_ zwXhSt|Im)^VQsQTk3px!iNPy+3b)8z7jU#)Hkj70AS^sNdB<{D@Sa#3%w^rtC8XBb z+C#)HE|}KDX>Tws+vL8T7+mCcV_f7}!S>@d;W&zQzbH@IWB<81y1|0ES+6tk9I)?@ zHV7r*FbE1TMu2Ax=w^}G%*LgdNu)YCGlx^YDL#yHhTboQ)3c*pxHeB}*%R9J2X}#? zH=u3$do;XDjG{lZO@usd4`~HSEj7m-*T~ZfA&PJ0*0<5g4>J&) zie+XmQ5T#ps@o^ZL15LG3GpdHiz6VT`gG7EBK)JsAc0wu_;ZQujw$qzm=(E!wv@mT zg40~!(OmG*{{K++jlq$>-L?}=Y}>YN+qP{R6WeyuF(%2xwryJzJDKR_f8KNMi#qSQ z_k8K<>i*DGyPp27_3XX&T2`WrGGgTpYOOutT!IAk&I7yLQaXZ$LZ7b5>)wdZ@P7xY zzvygm=)vjlFM#s>qO=_UE1>#kH(uAcy1!x_LqDlW1BDQgprN^GaEvCQBqXY}%CWN? z<$6`aX@_AC7co4(;X&<^5DA0nRb3^0w10MW@$&&~?2rtS3?dr-?y!}ibI!7tBJ9we zs-oB61n39L-c8kPpp;asQtC$?n?6;OfGVT9vT0X})z!TjNR8&!xXrJ5?JnDK94lGd z>-@}pb#?zS0+IAujfNgw{TpSNvP7}^e8}2T9GT9IdAzH&+m0H+?sKh*`;A_b$M(OfpSshRip%M57;hUV`&aeEx+!ge55*;H;#|6&jW`Omf`S|M0&$>JAd8?Wc4BrOXWSg;ZP(g=W5xlbm#mP>Y;{5kJ@e>u zRjjf9DEca^oJr`9~H!d^b$66kTZ0o3L@5)eJ$YN$6w@>Lj z7_sqi>RD6%a1>41BN#MPiQ7!Fh2FJkxoLe5@3uilG+S3Xg=?Nh zjBSTdL*=B`S1SbBJ>XxwsFxS!xUh+L-SIx8KCMLp{;J?i`p+MZ2a?4kYoM0Jn-aw5 zw*TN4{U5Da>|jaLFS0KK_w5_||5!lK|+ZE^kG={ie1TQpBekP9WW{?DkAFJO+MZ` z2oGPyahV41@O~0J-wS%VyIHg4+@u%9>FD{ydCv4Zqx)sC|NGt9)i*JRQf&BL87OTB zwh(8Iydkv?lFT&GyGRQ?)Jf~YRst+p7U#lQQDvEc(wV3R%ZZ|7F-$QmbVo@RGvE}K zKL!y)a`~A=rfDJh#Ho5{Seu|7pjMCzm~9>PyKu1#(Q<2Yl8Y6YdPfzC`Ur6cBtJ5>Q4F;a3mzZ3Ea2PDU@rE?*R&%kMq0hm(2Qb!Tuu<}h zRL&cmfXNJ&q>Nv#li74YQ`yywM+e$JsRh7(n!q6_Z>yY$Wtx5ZxBxAa@bOQ-JHs+}2;t*m8MI)gz z#aWa%>aapk{ZTm&JvZurAqeMtvnb0|3Bd}Fkpe@*)QbAFv`X0^jOMFNH^d6%ot5vR zx%e;A=QkQB+Z;&KU=Q1+QPQ&2B=Lc_;js!Ys;|CC9jEM93xT1PoSL7XRyG_m6~!b+3F+j zUm_b#O4(uU=ly}P^lCo0ubzeMq0T|{nO8&E%y#S*s(xqjAbz+LO688_ zx$-p(9F+%J7)rFUP_H7-^i20T(BhGFhlh;w_<=O=GD=4vJF#1-AS~F` zE}5-<)=x?ge0J0gq^so`7o}cC8S3Y6_*Bmj&8K2ouB7$_x#{gAu4_fR;V$J;Lr^Hf z;%XaWzo}g3ODx)^blarFPnZ@j_u-=pY$rq}fhcXIi1AF-a1S zs8{UK?#X&)LryC>rLnq4!U13wJsmqo1@)Ua?caBzf+R|xIZBIpc`f(SrXjige z$HUCmgwl+7sf>92`0MO=Q!w)JCACk62h{$U4U`ug6C>o|{juvWV!~atakD~QmEU!Q5qy&0uj2Ji8JWVCvFb+fZ49iKS`{g zO@pB*Y({QB;Y9}L$Xv!eN+I$n0*bQ|WT~Z|Xh-SAhW1cV1Kz^pEaCXxAxfeFVa^U# zU5dy;C7lp&g0a^WqM#Y|SjBz5ngTKXxF5h0L}gN}SpHLSc@0Yxm2IueWu@#4QH&Qo zI4jbXMIQ3bPUISHKm0&(GtQ-+{QRK0Ne)k#FTf{^gX=Wo6SnjC(nvP2N^AUQxGRh@ zH+q8MGZuGwL+&p8{Y4bKeI&gRNPoPC9ZJ$W|9+sT&F`KJ`_Ff8kJW%l6JQ5y$&CV# zH^%zs;Ew0y^G_KpRL0^vAnKH6E z%I7BOD(oncJ(b3~MLFzlon&QWP#n}=0MD=QiZe}iY-uKjs{_6S_cvj`J_F`4`F}Bk z0j6C3w0_EWH}Se7BO#qE#LG-|{^d;mHg#t9`S$vCy)C}>rT)%9I#NwBWuVo2K_Qfm zn5_xsUZ}u;+mCZ(tkGix*Rp7vltt!CPSNBYxMT6-9Wpfi%v^W+-Y0JU=JCbVS9;lJ`qwY8PLbQG$wFH%(c_=UFBOs0Q(cEqrcupCsM8M^H&2EML^2V1mR>a|`biHE zo1t3Br#nN69E*{JCrc`0)>|V<_ZWVWh{((aUCMpggikw@ON>zor?2NW2%ouls+!wo zaVw`@wiVKJKA2*{{DP1j|GteF0bPvtvdom*Lt03$)oQwV>)H8c=az$=8^8YMDN2`t z2RMn3(v0Kw;*4NaswAbU_;O;~>{X!}%*T(o^N*TyX#?0gEo83Nbpk)h6onGdBFN-| z3L5_qXBORNe705owcb-#Iy8WZdbR6|dbL*->5Ngp#eV9|F!{}qt&%9Vfklgzg1Jqb zfCCB!mD2&tn(CH%4e-L>g zk*v0wj&xzEmmq-*!0y&>~=ll zY*6gCV$$Y+G*BjHp`6i{U?vv0_RCG4Sw{i~_oZOp4k&~F&Q*GYAfl)R)J~H==#H~8a+Ht!zlc=iyAYC^81gm`N)%Wtn-V7OzCrD^tH#{j2{A#FF!Ea^d|SA!hhmld7Wm2$1G8upVZhr%>UGf?7>3eA z-1bN9XXr4)4GDyCXnyW6t<=^q$^ix74OyocNk=HtFHdQNouX%aAZa#Mm1;aCALT1) z*G3^igpw$|M>UZ(Rmh4)w5bZP@r99WWj!mtY%WMHG4@0;V(axNK2e*p zWap0lpXt0^Ubm9qSNGZRD+lv`rt|-O7T4dNX_KmxcF2qfcwbInz#(XJN?HOqNzj+P zkg^bJJdrKe7 z=LpFd3(#?*Za|d*oLx#bD2@{?1zH1YmOe+UojS9+_g!VD9pXQam9X0K&jC$)*$V5+ zL?}qT!)*o32F=P)`5zA@?&_ygt?@LIe?+>ZY!Kecu=S6wyA^4m1t!D*|g$y!a8 zEC(XmmF*gnnwK_6hnc1!VyUP5=8!w?#jN3Yace~nx9)1D|6T2$ zwL#UGj;D_DB`9Ph%Kq3hUPc!(s%63ydl+OOuNd?tvKUXUL?^JCnGMXbK}RIH5NbcgyFdbFepw<>V1U8`q$MQTh2~vI0k2yh zmzMH#uVRU$s~{E(mvqw`K&v)j#`w?q2JK zJ~f5Z;c|MLCEdhV(1F+Me3q3><$J&>LS_Ggw#j7L4}--c&-RO7VRL|6a7BA zggY$pv<7qIHvc=O62!`>0gt`uBAQ%QI&Pkzm9#6kd3>%@OzUdG-omu3$z@%}cHS8p zCMFl_R_G>H$#4x?dQCtlHSOPBlO~8vQ^( zm`}Q6dP}w7`fcQ?-%C;@PaS2OlTsOX($#$G4l#JG<_Mkr`e$iFAvqr~hb0ErEyPF} zwNh^F2qIdEUEzzFKv(HJ#vSlqPZC$u;P3nYD%CF!=3T0K*8f#tj_7(F)}^ z6sRtVe;z>bOD6PW#~7EATmI=u#0hffwnA=r8!>p38XHL{+nebS*it~J;kUkb=YT4LP)K|u9hjAj5nzQQ8qQdJ%_|3ws zrZjDdp`M7^(DE}{l!KxO720GYAcP2R^cf2-ii5})LfjNbSZ&BL8{x(klYW<^A9XN5 zt6(jQvdqK>q*TO5d8ql?7I8b_hDmPR18f`BQEaGEXZq>dH&oL&iUpBB{zmvM+;C6A zh~3o7%i}|Yl{Z6)RyPXHq)k~&=}<1JM3#Kb*lbRVh-#lkZ-0^#lYi)p$d70r_DyAI z`r4U_05z9dSQsp^a+A2BRo@O=Gtl^o5}~le%v#1{{fO||3*>UR`T5Fa8ggAA3K*CH}>{Hp{El!wq$Qng%imGChWGZhy`1tApI>dVXdBo$vD zMn8Po771N9!?+p_I^Ig*D?n0%8&am;rls_HY^Gdd3bt_()kyliBGxp{{Drh-ZHBJZ zSpFYCdvaOvQd?6b8%9%H+k$w{STDuasp*6H4|mO~G9Kqo7ntoJY9qX->%+}x+BEP8 zDHuX6rA)9#DyoWuQHiRpuY3#3{=GfX_KB!|(~au=$V1mU({gS}SAoWLN;rxNV}OJc zkaR57<&M$Yq`KR&GgxL5M~abx5ow?Fgi0jJwRUJ&n8|@Y#X*!t=hHaA?w&?hAxqU8 z^^ik1&GL!4;AbZaneg2Td~$yKV0^Yi^%KZFQrAH-@b7QSqcaDXMqA5LXAn0|;@%O` zu^CyIl71XoCDGrm{x|^a)~)FMr?F1)lEN~7(Eo|B2{s;(LL8}t{+RE zpgWOf-!6`U<#hO1LL~>-(((>pG}Nl0FCXWd^TI}#qBHBoTYfq?pg`=4m9PtIld2vQ zjf|@_9x~Ysf$pOkJwE`Df1E=%koBA`K@yT@5C=BH{3u3hn5guwL=c!2 ze0QWN$gr@(PBp^Zd2GQvdTb%IGvnM!V&3PEqRI?&nCia9c!LciWVt1aq7vgr1cvmV zx8#{J&#XrPBdI{~M?-2QcL45v5J!{>??R&_q6|#(MpP9UtOX@faz--@^wS;DRDsrD zr>Fz5?=BD5T$quQOsFq2^+3Awu*d1A)JcG#Qk7ze;sWw!cmN$rx`cF1Ae2!F5>96c z9v#kqM#J-XHHF)eQc`vWR$fA8+J=-N-K~t>!;J{26^#y;S{&^>w**iTA;r2oMRlbb zkd#S)ItuHmBoOr;5z1iqwLcnA0v+wsltABS9km4=x+fiqG3l`X5Z3$&}Dv zStb%UA(df?r7R$va9JK1m*OBw+SS}}?}ym~dv6eD+}R_A(b4t9b+L)C(wCMk7Aq&? zW=9VBEg|dtVGx=!O-W&o2gr^}W5BE;e8Ry?F4yIws0Xok)qmKi2+C{)WA!irwTrkB?b`zOT8A{f$A%*WE?0zHYe+j)6y+CHZA`S(;JGqzR1`(qr)vY- zmJv$AoL{#&vx~&-T0zkf?ph%`Tv)O{nwb_Z*jG7ol)flJILspiY~?*Yi_Zf}MCWnM zHpP|{(Lce&tvOQZc@5-4;iv`^G$5=z6|rA7vXRdRwInEw8@FjfJoL2rcRGN8{zOF z->Wr9w(R|!%4;Y=aDRJ$=j{d3_f1@2i7>K*5Xap++vguR>tD)~X7JOf=C4Ane<|Jn zU5KEGsg0$ZsT2Kw#!4%=8rfJnTYL>wM3nvt2DbV7?mt;<(xx1;AjOAI!(> z$HaGMPjPwQ-0D=t!Qjt4f*-!cf$%_HtK>gwk*{?krrX-#L#b?KgoC1Sa}~tBIOd(B zFUDzVUZyJyhK*TWr5O#vx{_U27@rGNsDub7dbtn@8%v6zoFQtime^CpZ60^vpV^cp z3AV2TCI)<#kRZ-i&^T=625_<{;&^GHtL1X)Zu1q^)P*XYi^Zgds4z!z8{UMhu_VPw z3#5s2ER%e~$q<@8(?E~r9T8C=&$rpMFE3F`j+4ikw>Kec!4Lu9YIoZ0?A2k%nJFh; z(+6zDPiyct&SMO2K2Wd=2%sKIJ>S{D^tPOS0!uH0`ToXNJOSO3`|&PXkenEvczsZx zZ~c2}@(;mJ1_Jj}=qfhyXjJX=!#qNTLwlxvZufv?&PS4~pr_w=(BXG`9=Xd}gf#_I z*2X?S&^Cb=+%4MQ{b>^x(YG0$ALXyT5Ifkr6ux^~BTAEAZuk$`{UOz9-J~>|3*6>AL-QhxGSqK_7>O&dKfG zSU-kBx?Oim>E3dx{EmjEZ=USlKt2@hK84Ia4|@5(yjI@O**{P}$@;s;x5Sy=!h$|k zuIr#b4~K-_q!C}`DnWSY=5A|eP z7-i581!JN?VTm$n(lARKv5A05gNhwD(WuxdI|tqP6`e}`t4}noA;tm_Rij{$B2)=U zC(JC%yJm)fW*bYo_B-gtpiH-Np1b`_s4iFyeTm4cG_|a<*?(DV{l2V;*4GlVz@`;% zadI3|+Dgo^+l{=yM3$xsk&5lEH`PQuDs=_VCgM8Q-I)d@`W%MLMYEJ$dcrLyBZt?= zXrefgkHDt#E9zLX zY|f^v;QRs-3}E1VJ(!cYK$Jq>LX2jvoHZB{Q0*mRjDp&3o9R_$hkF&SxYrv@xVHp5 zfEP!iNiL=<6g7-wwz-I#U}n8!qPtT`iVKKFmNv1OK- zEwO$luC5aaL))6|;G||`=3f2I*htqfHD~rwz+E+ntywn#ydG0+T)$c2j(&$KuL12S z5R6UBoqSTV;+PFPDiyiFdM!5-9TAj$?tYFO?URMck`$ff^06%7V4>TW7{0cMSk4@z z>$E#gi)D)n_S}G*eWoAl@H5`zQ(9n@iZxa!;%tn9XCcN^x z)FGMWy!HXRWfj?%Ok%ACMuWH+&8`Ul#i{Xk><)|V4Ezjr%7F5Y>;UGT(r zRB%U$g6}Dv=E%E2f+hn}T6i&#AiTb=^^K}L-fOAp{B)N4a&Q#iRAIngR(L#i% zLaJfZBf&ipHmZ(iCl2HV?EW4$27pmuC?k)Qk3g+=kGqZiOk`$G%M%cT$iJeFD zWJKQT(3nT$tg%;+G<|-P^%XmtDhzES!5piw2r#B-4hBDy|IQn2buHl^!J43;T0u)b zsT~_!2+g0JS``Ikm4`40D-1WR?rpGPsME9}kmV9rh8vvAHqTU3Z4S*!HqV=*v)Mn$HT{{5eW6XERE+C5A|$G)!+K7)UPr zk-}JJ4Y^qL%jO98!aZ~V(-HkVf?=v$L|abDeDrj8#X|Ds_h4RH0P`}<0`tMyJmpgi z--Ht=RktT& z)Gpi`hDt)+Db+tvzN&!bQ`i(G7bO55rkANl(jOHs>F67_he{VIvr^MXxX#MC20HgDOEjAU-M$qcQID~n1e`r=iW;OE6B$FOI_#tf9e*0-ZjX+(F6$yPrn9Cu4mti&5pEi*z^|6*L+T_a1#)~Qol$wxUp zIpt>LpR)+EPf_To#GEbTutTKpj_|rLJ~OGhj?cN{(W~5U)MgC56`4W@MEa_7+=lIS zgfu+j#M~yv9R>qeM3>4;15p-r0y^uIp-9cyil&)l?9*9^v`EMs!Y1doVA{M_jQ7bv z6Kl5VW*9QsYqJ*C(XXOMEu>~BZO2V^{R>tT}rQ`0;IoLpxq9qYpK>$DV}z1}-OKbB4lo zJ_SSFF+s#fc%{>CZ)}C<$XyC6)}hgH1$j`?V(v-EMAjDh1sCT-U0qzgk=EoB*cnAD zj!CWO5mv9xY%QGKw$2G+3Sv4r^K2VGWYGRD{&Z%i5Ppy37p58lvVW zaa8N;$aU|x4@1CR`3%|4x+-jC(nNIx4g8d8Nq5_pK}9Smb@lSAeAQXFins0;`A>7{ zL9lYKUVnBcY7>C3JHQ*=uj$O&AM@)%vXqW!tlm-3#$3KPfw0oX@|;I|h?wtW2rtz4 ziKv@(zd=5TD({DP_LpK?iY~j0|G@R4xJt+=#kmaPT(1jy$BW6rA>=^igs~dgaxh4V>LRvg6GwxO|IuY>FtIc*X^5>e-uImG?Iu{MZ%II) zcC0kD@=tmv4VdIk&w@cKG5X*y&QffdM(w6Q!{I!ALf<_lG{vZ(gSi9Qf@oAEc`JeW z{dCJ~?8R8vD&L0vOG1ZaOOpmQwnh~5T9ct#s$Dw6?ed6nd9`J3vx$(`=O&rCNTXSO zrr>G^S4_c@AG)#fUV;NfCfL(jUKTOAsL{#skqpL%9z#0_H&KAf`P5pK2=V+YV#~nh zXetID6U+xSwANL)hlKZNxt_I7B6#;;z6>S(HuwS4PL+fS6sI{1k1n;fgqNdl$&w>S zrx!$xPw6P-xC5u1D^K#piVJJwQ0x-$(~X1G0)vBB%r6oJDkFEy_MlUA3C4~_Owgv# zu1enj#US&XGc*I@x1w95q|7;vc$D>b_Uit8z=>E?;eMa5@(d0*(W0?rA9xKV-Y38#KM@eP8g;HuD_N z$;|ifIJGxpf!dxp(ByH@FGEDh#*B9Ri=fz8&HKy&tjJXZ{+B&DK0_Skpa6#(O%pq) zDS?RE1DK)v0+Y1ndy+9ZM#4e$Ip{QyKqY<4Pehq3;g=e|7WbUs;mQ(*A@#l=?lka} zD%m23<$NkP1?&n()ORUd=p_ml)Y67J0vU(OX48gD`_4MkKf;E+k_~C6mkfE>46v{i ze#G#w6=G`t#MYh-B0KL-NmZF->((qMYJqldkYQ>MGl#QwqrWtcNiINry3>O+-V6u7 zCXil_9`%3#f36B)y=CBo28+ASVd{FJpxeD6fCI30t<0rbyt#6CF$P{+r9Ls8nY0fk zSqTF?k>2^t&YEqojPc<){1azaMV1!MQOG=fc`}IG?f{J(oc@dytDP zOo}VPn4QNI=)pA6qTVkTw3660A)h&~e+O+o%HOWSCdyVUhZ@=lMkDsb|p4}x2gX^orx#gG|4BSCmx zDIq8=EQ(%oZxkBH}v zkn5nb6K+ft%T=;RDGrz;kQt7}fX<&M__uQ_+c4ZjCIrTjeeV*Dm?OC&q|GV!Fs6Fc2I znLWL`ip=vGK*~Si*_y~{J%orOih9=!nRje+4w$ETNvev2I@;y(3Eb_N=r!V*Y_J+e zTN-BeKvR{mh08VejY)dTEC=UF%9dL?r)$T%mZADFpDAfd(F=DB@=Vk<@IbJ~!l|6I z!}A{POqx3kt)m~ynYJ(55$t5;f-{h|if6ZW+JawuJt0gRtK9;Z9UvvowY0^@ zywBu=T5DWo%*q?Wj#1NB7lF6GvY&63^PZXW4tl2(3(pxH+c)0k4R2ovzX-M%cActf zxb?yRclCtISEm8)6v+P9SBC-etN--xq`d!ar{SNQbzf>|sJ_3{(6d&Jb~@hQ6cLK7 zn}16woIuWTEhNvSlF)jvqT}@lN0buZfRI7Oth6!B zV8}gJ(v(gZ@*g-%cp%E1YArS3N45&16<>*gA+9<213}Ow3@%Fw{H|8BrP{ zN2}nAYMG&lr5AVugY2Ik^i6iMfo!0c%}|YHEKFYGnBCRf3Z)C2ahi3zN)*4IvE*{m zwd?i&2Tk)|O*n`Pgy!F0n&x%Hf4?O9FNKhI_{(g<`EPwUK-#o3%72KNZR)#2WmiZ9 z1RTKpZP)@~KZGC=B-98nBqRug6!uNr>oGSbYM2|M5LHxW_VU5uy&hv#wM>Ol%5U@8 zE8jrwC-C#ZEAR6Uy_p;Mnbwn}#)S2{bN$}8N?#w&w%*>Zp7_6E43G;>fG5P{gS8SY zKmdPv1qAqjBB2p`z_c=0VnvOdXrF6Dau->9J(}Fl$~a4%~){oYUa{g z91(d=mXWGXmwUN+N>y8ws4Z0TjhL1dqOg$XvrrqB?!uU+x|&LktC1sIzzNf$CRcg2 zS(q&9^b4%yFr_BVq|*L|zOO#Zw6HbQS`RNcSrvuk^;A`djg-z68;vui$h1ocBV8Op zmQhi+kDfKJFWE{dcBn3~(mYs`iBnB2)%7j2@3$T0xDXjN@(O~AMsr3fFxHu0ggyj# zF18d;psUEqGghLQp$PAHy)vr6QW7?Ll1TkwlwGbuM$$_1Wky-hS{NDZSyHek&2nG# zmiYM0NY6nfi7R-qFgs5|8n0Y3*;kw(Vc&X?#T!aLz0pQG_La74_Q3OEbsnqzPT{FS z+#WHvOp=qmY1E^OqoAYJ=|*y+A;N5K1;8fl_oDARE!QJU3x#+HY(Z6xMd{5sV@zr&t2bIgIzeQcue$L@)5F@sK$8tKt;)At9go9 zvwOqDS=YVPEEjRxt$k$1oT4n_IHxjRv$8_fO^s=-L}r z+2c|k5GMUzSuinnyN1FTSY-iJX@x5K05}t$Na!X`+6_r=VuDCsG)j~o+7BAIhLt!F zCcI%}Cb+%$XrRjy$AB#ydp)r+XlNgL&>Z$;9{*r&mo}u!N=yG1>8zwOKI_M{xbkEq zKKgaX+ti=>qfV*y6r^pvxK@z5gcrQ7cptIT<~R|5fn+}%MKlTPU6B>q!wEY|TemEyb-!j@hYLz`w=B2U zAD7RD?VB+SxkJn-$C|%$1jAVjuCR(L=diSD_yo?dfERuN)MoMG@d%z{c;7h_FPgqI z66BQJ$c~`&3e-0@E;(qkR&fsiJc4AW&T4{es49X!qD(8@z=<_Bv^slhphskQWw3Yw z@P{_bht6Lgz9Rks+2oE*gdX^z4im6`8?YboLEz=Q&8s`*AE++H-_>R^xJKM~n+)Z# zwI7>m4ZL$MDU3+S+48fBH@hWXxkcBRWM$GABF8cMqh)=U2%XC{_i?0~+=AYItzaFu zE-rD*18MK;G_PWrr_D1&CtXI)FVx31Ex1E?JEz#L)HJQR<@AMfd!|=$+Qc^#W>?6^ zt>nRGnyk^eahS0_=1-0$h$kS%i(Gk2*g;6@^_`L>@^(DvC1$alrouyB!HM$`lO%MK zG>4Fw50W?`kK$&!EQb|ulVTz#igb`X1(O^PkR*^L%3IEv^N~oV9hgQ#OK^1_A2<_^ zdg>tLBu$Ye(p$`>@sarWJ03t*#F{0-(T}PNB}Sz5x5=u@; z-^RrsxH5jdA)5VMQHp{eHB2+9NzL&#=?^?wnvs>)miHN^a&y8}MBY9;$*DYvxpKQ7 zp?Vy^cf6-K^Ty>J`okw4cef#q+ZmOqO2XrrwuZgLp{~7;-IQ{R|91fW3pX~q6A!1p z0MzOWK>ywH`+woaKTK^*9Zc;^Ozn(4l}z0%oxfn@pQku6anf?Yf?vB?LM98S!|^eP zxiQd2MnSzjkeQcb3dI+>_dG~;`(Elh^i$~dZQb+qzu`G%5so_u zk0d6~vI{-8-Ticc=ueuqX+_h9g$TxLE9BdSdbjIyUH8WD`G?uyUlo(!Bej+LTC`sO8gS73 zo8gA3o2i`(z35-BvW9ks=KnR_s#eoh|B{}6gbv6ci4iE+R(=NqIWj9;P*aQ|fKmlQ zq(JRmB7|XJGjU)NJW{FX9!}`T`E|n^;CJ2b@eGORATVBrfFRqno``-!CenKl8VCk&zroU`YbEqP z5zoYA-53ei zC>xT~F)cw`ttZ)oMYM;yCRzMdP>jM$n-93E?;xNbnpa<3kkQdpP!fA1(SD`Db>k%> zNR${mbrG012fppdPFDr~-KRuQa4HpG50$N@p|wubGh98C#I$;DhCLc&?m=lfK^2;b z;4reZ=EKBXR5Ayoo3T7sQE)09h^Q+ED3zs`nXf6bl49io!rY}9f6eX{$JsHbx%14Q(D!b-O(&2VKBSHBeYKb0L*|zhWAOm+j7%gU`O1x$Z1wGfAE({pT z9t#*sk)xO|NvyGM3x+5}+Ujjz@JEeyf~2)b`3Wu0&4AV^N6H7lquw?HAsb8oqlpeCFhSH=eT&Dv&C^g<~yFW;8hya50XVnR36IhFy z+qKLjs`NXqgJ=qoK=zW0^O*Na#0stXoD2SB?MZ^BZu^*AS5V=Uq-FLjO(6`JwAB{M zHISZya0jfo?b?u-QfNKrDnSAselo0-U&Xc$OB|9j*{n~lVtu@&Hn{MMOV)VSyYZ0+NN-2;!Pp9a_LD$wjh`f6-jF> zJ_3KtRqy&}oVGXqLUAv**$gZ51cd%uAm1}inGvrXexcpc5eYQV8)f#>uZ&9zrfZ-qpWB$(RJHEn?MXSNc{W=q-`tw zXyV^#|Iq}o$s25sshxInkIRzQDCh<1*iX3O`$mAS#*7L-BFfL}s$@W~C~!W@QyO+-%tMS}fIOMNYOkHk6bv6FLB58Q2#BIDUc+2rj(c8i@`-S?!~ zt&=_W*ilaj&@yOP?t2M!!06S5F~?m0Q}o0x>-yX+hCOH-^@{7G*nNkT(45obuCg1t zKf5{Xe_XaICKmwgraZz2MI&X1TkwS7brbX+jq0SALlCobmN783vkJ@wEd3t z4UP2+Ydc3u?MXfEDbg1Rq!#H)+(PBP8A{wT<-GcWR?}zzH-sfdXWH}~v6#?rd zRkrA|cZN{$l4q17!akva(+`T5tJI&se@AlVFI<8zOXht3Lh;D2{iuJZS@|0-iCNlw z?E#ybNV<9cvr|xt^19u;00QrsPIgpMvXFE@6U#5cCS{GSC=WpuA*O2q)$$J84N_Or z^ASg)2jyqz_%Z~ZFZl|Jk((_l1R`rBOM|!DbVdg9)f2vcH;_lLAqZL1@3OrbsCC(U zhuR1%H<|OyldP6$1?V4^RKyt!FdZD2&Wwm3!edDzArkUSH_&)3g<*iD7D`=eBF-_A5*F+v(6phecuSVoravK*U&lW^*V*^1*+ zz0t!XAcyxwa2&qYqbdGJg7bBN{)6NEmjM0cZ{!A)j0C=yqA3!%MgS>V)w)pw1rd5N z9Qv}!RpL7ajAS+qSaqZKh24|Y)8f)v?qfDqWA6O?#~Ob{=~EYGAHw&_kDjd8t@fw( zZEtta-8}!#XXGBNw>@$0Jt`zW6#~5&v=cuV!}Ku3Tr8gG?+!?#--hCE=UFbqzn5w- z`HtL@3@3HKgXQuJ_H)$A{B&6hWA@{TY2f4O-*)EXIqP@!{}|w{RZPriF&-om{(f+Y3D|9UGj^u9^w*f5lV}t91vRc>Rgh5Rl?hyO6mAj|}my$*;?%=;+{>26=i6 zP2!y2(i&;}Vhm7A8`ZQSNt`2xU6wq3?nC{LSJ(~a4S=Gk9M_La7b}Xh@Qa`&p9CYQlagprxWDN>`%ozF8uCFlZt{} zI%{*KMsxCqjV4W1>3_h*A3SP`E+`Idy&PP;a@Mk-P>go5XX}a8Iz6@4|4@8%2zZnH zsYbqJXqm7gi?U!PhO8QH7qN@fq|ZR)4s6sY-Qx{>x(VzFTOt36r6?$S2ZV|b=@T7A zMF;5+9-mMlO}e`8AVhaOLM=U-_F3}S&@>cI?(R@H z3GRUa!3uYGcXx;2?(XjHkRTuTyWKOld*1Gz`N5*nlXVAm`u zGYHLZqQDL*Q%Ye#bU^A@U)rS9dVWIhfbH}p0o$9@Ic%Nl;!yNO%z|Gb(>bo=FkJ7* zxL0g~Q6ih~;wGEJRKkKAC#N1n^*q2}&g{IqO?PO9QHzO>{NQ)kWpw%z?syI5mWQe? zk*Y3s98t>WSF0SbQZ8EnT~`qCJhtM3(vnz8rDA_DbXlr!CEzKDd-Fu*^6s$57}bl? zQtOhRtu*Qih5-&5&&KeIP4i^>{s-?ZdLAnw^JzlV?cit-Sl}Z?f@&7N-H#4vvtY17 zYJRe3vc(@t+|V?ziZAsLYUEf*GT1=sMJBksaI*e?i2kt_w2l+GC4q%L$4XE2EKM$1e&eS9K@0p1sK% zL%9IFg(t`q-RdH|1teg9Y!E-J3~C6~9Iqgm);lC2N4|=j%v@DzPu#lGrT>PY3?uaB zSuB~I@|vFlKBM#_J^#^Zn<@e&kXvcA-v;%Q$hbv3!=fbgL#@uyaPrb3{A}F%x zmVk#)i1q*kobyeK6s!G=S`c9`uE%*c^+KkMS>by&WI4E zs8fTty2Y;feZ@PZcw8h&C@0~W+=lrQMY1Q4A5=w&YWmEU#4gA5ql-6)B>6PZh$R}` zvRqg1EZ9;8!UzBByF&4JaS|+Hh{aEXI|b9M2V6=39S4T)qbN~P$THjzjP_~&3|UlM z0#|%z=_30yA;VTpAjv#`+$O8lo56wz8a-Ad|Ecc`i-v6~(72fhR8Ib?S{l{a22}vvVB2rG?Q>A<3C zV?0peeiw7HP?iu`zsyH18%fn#Kg;H~6kJW~W6X^(fHf~|e2|S!*qmXJgQ>THAp_Wx zeW>zoJ#3LT_7fV@$e3dK1y^xVHrE&`f9a3aZpVj_>Vd~+m%q+ZQo{%}X{Y{u1NNG* zat^=7q?Lh-os@U4;Y<}$gvBxEb)b)a0298S0^HHEe6pktZO$PZOI5BUG;g;AITCPn zC(U0)K;s)Fa>gz<1i=HvoR^Db?tE)3IKZ@zP4Sv3JV3BI$5gpPNTugZNsNo>yb68w z#pQEe1J_suPCxIZ^OpPk4Kk43XVzMLdRfPzw5KTlw`kdrC*JDay==U|3B%3b`z6s)6F5`|gEhg}Y6Kt0< z5?OD|ODysUG8)_h1%GQ)`y4uFID@5-Lal~2kcgRPB9AAQSCGyZDX7GwmFD;DL1K+- z8c#U(86)*2t@Jf6))fe~Gr&i0bcX;_QosLqRh`y#O9-sCF;L}6Jz5!;k~jB3rU``J zM<|52U}*w3bi}lR5H^iNS?LzkW$@oD?~jJ3SxVmB+qwd01RT5K^|l>RYstamoM=p)ptq^Y~8L58SryowOg? z933rScW&VWCw%LhR}|3ZWwn8RoyMBdGAL@(sL?hfiglv!fiWCE>Nt!{*;YK4- zmGmXpW_0qIQhza-e8o*x%OMx2iPqU#Dz^x!PZY6T6P|=zr$f@OO7tt0Bg(SVaHdMZ zmkGZe5s#d$91bJrXDDuu$!6mIU85>Ll7f+>*65tTTKB&Z0XXW#j-eW`MGQz-^=x zAv&{jW))-JW8FzPQOi~zNsh3@hM`9~DmBEk*KC^tSA|X&;v}ElNwt@PZA49aJX3}Y zW3x0Qe78LYl7Q=q?NixQulx8dtW4&rDJ}1P)F!lU(8Hy`UiKo}tkuB>L?hK1 zlU%uYSrv}t#85r~1$tl@H;(m;>|BG#PS%}l z$Vtv9Q8(-}vOyiaYQrLqf-~UP7ShV#1u>Ige(utE$oAo43;wWB`?TFkjN4zo_hdIT z#W4o%iSHlkd_fD1nz7t%vg~#Zy;&?l*j<*qo5mJ(+C)CvH=3G`NHa*o=b&$%D=M6? zZkTC;@H{hCUUhHMo5~37Z}HGJwm!pmp{w76!?w^$TTaUGTdXSMkk(-#*7*i>W#&Je zLfAg^_4;*qu34rg?soKDv5Ww37$%V2xl0&fJa<^T8@C3nA2)Zci3j??xlH#*9`WRr zrRF|!06k5SsP&k6!LPBhx9b)Qp^18UDyqpEEm=b9}B| zAty1tIwr2hWK|5BJNf`jOg?H*LhKaeNvMDh_OS)?D25mV$CNd_tXwA{VVMMY!!)08 z<7a4TsdWwseX;9%ZU@+xschqkqqgb+z57G5bPB%rmbg?466Xt;XEwE6Ht6@|8ps&6 z0>ol zF09%{?A2*FF>_b%k(ubR+kzRM6w?^8fxDy%mh3)*ptw;~QFfGGM%TaD)-nV1D+ z%=mb^RO=FCH80H?$Zrhfv6P42uu@!AaJt$%T9Hi>boPHC$0=J?*=vgE?0!{ienJ9z zTSApq0@v7{J&AQtS*S=CRWu!0PZ=jHZ8F5gHrVFx<$&p(EPi(;F70p3?k0-t0SKJ| z>1sH9@*PH7Gz-)4o;z#o1Gr^XoVd$wxvw+O<7GakKo=)fveYj>0u8 zzSZ5)&of2m@a(EBg;h`cY+qm!tW%f*y43)!b~Mmeu*ya0g^Da1z>zV&J7yAm#h^uC z5Lft|Vl^V^;)igCBc3S%>02B(L<&^NSSP3hW>6^h07hD0B-?s7_i7*cbNGl$3L z;$cZA(V1#`u9E{nRvee59{duwWO1uxaPaoG)(*34skCYp2`rrFP%MjbzkR1;(-S3% zC4HJg&wEI*r%UnP+p!4ypQ9o7e-n`6@a&QbU(x&vYHO!~^I+ipH7 zO-WVYs|H%Fp_K4WcJd*%>Kkelzuf#~cIJyNHmLv`VMM_keUgyX=1me#QmU3H`puNpXgq6XttnNEwH!wBV-p*A@AjKo(Y8}9t%l9@ zn1DwT!4(9FRu9czFn}+d=Ke2VB1eSdliLIw?iA&X50ZjSwz4{IceC_62K%H)*uKM5Nab-f{N#?xy4(u~Mb(!bK)g1=lS*<{X862d>_WD*or~`@ZN|^=lFf{%>u1JCoKY5C=fMj4eraU zu#2h;k;Mgzhbv3}VH)dVRT$}f%O@dKqfQdT&%3WeWm z0tm5U2bIge@DYGavYQ5&rb_WdT1eX(zIz#(tkK@<=>KNJ=~3?VHp~2$w|`U{mCXnz z(oKh&O|}IqJDr@rLR&+5#J@-94dJLR@M(+dBAQG5njjf1DTg%_J)IT1n_RO=_CYI+ zd_JLe`h5rQ%-s{8Xke>AD zwOB6sNEHrN$BWg2Lf*`miB9hq1VdbU0?yc`AFdL1gpIo_g*(?&`_)loK&1f>skTUA z)W+&OV=Xu_0@vMFAylGmQUY43?_p{LUzM8~62r;Px6ue@95!Z^VtyyEbru@y^c3Qr zv-U2)e-#7G9*dNkCP(bek18L+H*yTv84Wr5O*-^gk61cDtsVFr)HO|9-j^IK$d&@t zT$-u1Bga59Ww4w~trYt#wss5qHhWiQ5@INUp6i#-QCsen-hDUCIBO}8pV8GyQ5ifo zS|ZGsQl;tF4gzSq#Xtruj4_?I<1OZ#1UAcjMUOcs?yt4CFK3ws#t^xeqrBZ)j!V{H zZbP-OttzG6dnaS=$-i~fm$pzHDvh{T5*YJVmHK=1P?+d$<;HYY5#(B9r|4Q-Y%#jONtG_`Po)kzR-Y_F%g+}MQ)vtE5Yvr2zILMvw&0Ks0wLkOE-(n zXtt@d0^5LYM+B}S+@hYj&3CCJJn)V>NiGLp00fL_5Cu5){_DW*WF260ZAW<&e?MYp zJncIb>%dzc1T8{;i(28tHxMWXDG(>Y8cR54cr2={;-2v@J(~cjm?Jpk;6;7NmRKXN>=ORr(KXitt2C7Yte}y?W z|470TqD6)F>VKd|`!1m5S==a^UI{x8O-3=rH3$WWmB_M(a5aIdCr?4?;(v&iah4o~ zR)|>(J`}5|{%#Es41>;2JL^Km#OwKk7>Y}wb4d_j*#-)|y=91I6a5`!0_{xUtB4sU zxkImAISrpKg5Q((LY-(7>upHId4*oB`%1mttV;60YvgT|l#M{2I4u>{$UH5sJd_)4 zMYSbLmbThMO&*yqg{v{3>g3GRGTdmtuTGM_*t100lq8cbL%HlGh0{S7dBoo)JUziB z=US|h3t#_MkTN*wj%Qq_?;{?LJv+=*?+|QL5ZwpnpxFa)ZXBaYg@mPI(bfCl^c&pl z5@O+s)NBY_ysOjS0WV#rl8oy>~aIVFe7K7>oAx`J3JffZfuqZFs?H|fdk zP61kHO={Z`CvlTWDG6^Ks!8C1X64Oyg9E(bEqzP7C_Z zz^7NlZWH=47uk5{R?s0UdhcrVbd-~I!_E8U^$P9h$78~I+RLiyA1oaFkD>3kK?B0l zSzJckekz`_Z8Tt)oIMzkxzRcGPNb>v@EB?GaJV1(yXc`%#&p#>SZqhv0T@^M#dQIq zcEruNde`pa&uLW@0reEe?@E3d z5V;W=5ch8*HRWQMla90yRMuqm`q>|oszLS_{E|wx&G+{ zAJY9txOhDO3#hq2mXV6Bq_5u`y~8+Ti&i?brYx1LlqzO54_C*(A>8>i3WKbq#Tzqbm=u;-ZV zm&XJEZ%1AFK+0zhoyww??`5Pr!{8XHC7&Or-Jc%-b6t-%XX^=mQfk;t|7pm?%8WT6Yatc0ZF6n`~6ix zTXNkgzyGPk@3`GbmGl10+V8Dok^f!bP;mk}IQ=`EqN<}ZBZ&UmKu;EDSM3|Zxtjqc zjf|pbz@TVLp=(h)VD?am{hu>!9X< zx3$yj?Ge@xN{ql*%gMM6TrWv6w3u`un6HeEI+o{GO_H$CK;7~g-4ov&Q|T6th*|5S zSuAnmUBp7u*-e(o#n2$UvOZAkZcOBUjrHRB&-W87`WRXyuunW6P-J3GZ|E%{5bIdx5>#ls5n*NCX=8zf) zXt%T7^Lp5!Xc7&-#GBr$rj=oa?K^IBySZ*Q#E9mTaC_8BVTEw6z0fhMQ z@NJj69XL8@T-jZfkR&oI`pKH}JJBPtYcMq7kXe5?$XNwgM9E`|&orw0;0s76Cw65V zOyj)a%&qn7K4rsBZ^7R+NHcrr{<0gika0Y`xlzeez8{m_i61On%Nnr1hOpX|=7Vp8 zcPP>cI)K`*HZ(+GWNTxq@`nU*7@zMj>Qzq28@FYWe8QI?%(`P{ z(+;#C0QsN{e-5F<_6xA5GX#4$nk_l#2Iqq?lA7x`IzkbX?29Q;QR9|;y`!;S#-OP< zoDmzoU$p4U4(G{2Nl_y1fgMj)KR6OSh{k6B^%ocTgLKk3oIAz5y8z2O>HJqWK>v(( zc7F<@F#ZLn|83g#FA22oZ=DJTPh|;zX(eQ$AW0nyMjB>jb}~6?*aFm@NruIwm1LP_ zvn0!XrS8w~68_WiGMqND=xA84A9f5bD~rsB1qGSJIc(1PHP^#FiwNbU%y;`mp@NNGhSN5GcG{f#=Jfl@-5l@+?Ss>&EM zc~1bSW>33n?Ol4pt)7#%8i1uCec=;T!VfP)7-& zSD|`7(ibC5KAEN7Pb6lb0B>tB3?Q5V6M(=Lx+hEIl(*u#SW)iVuV`T3H6*TvxGUH~ zR5o|dE)g7EU>TsfV&^Hp2q)j~JA2qx1W0Mu;<3)yYtynR07p30*Fp}#)jo2oEBW_` z;%n=LeIV9TEc^@6JoBo!T$0&bA^NfqSHRK?3vV`c9h2Auk4WTaAJ{ZMD0dHkC?!yOQO@``fRblTP(wK{fo+TB+PYUpM218^2deq_VX=1Ad=E_b)$%3q#eqCG|@}Il9Gl z@1XDFO#77lwo!ou%!qw1g42qP*CTgwG?-l#SMzYTHzC1PmHQTPP4hedUd@MZ@Y5`B z4JwPQi$~F;52{DUj9t8)YCGzo_93)U$JnQay+K8mH0q8xIqEvb3`>nE&rF4N14tfK zfK_U?tGWkInz38DZF0+WX-GKJq<;M+f42hdos7>)u1?-d@kLadPtN_Uv~gvbubh_4 z5rxJr?etoV568iMKF0a+FDZ6qxxIj#d8*cy4%&I`-#N`}?AN>cyLY9%I5lb*2@yJ6 zu|zK&6a|B0!n47(yE&y;6#dWkv4tHGS7#jN&YpLUB4|%aUo6dfY#}gAeVG6*`+PtM zJKb)y2;#II?0zKt1A8B12rL!1;p!h^5$2ESJ4kf)d;_8AA^0PjTbg~i7}kN$1y$op z-O_M)_^FSvz-^~F^Co*1U~%&X2W|w8G%IoSlsp4^4|2Ra_pkQ6l$Hul+o313p?cC5 zZq;j{Bd!r2mwl0G6&wE$(1p!wotG@;OTim~K2)T59?BODx)EHllR}Ghj^^))!S-y< zzm}}R_oZ(?j1%;|T*F?DPXZdZ1(2)Pw$dHtFBbE(3aWO^m&8a<*1~2ea?F=@eYcmO+*ZF=OPqP(2tto`PWQb&01dZ@x>$(1+Cn zNKsW1W#F3kcGn-IJf4x;0k+XBRMv`_=_6qTBwv{t9bZW2b<%=2f7)FWjH5oMw%u>i zl%ow!^N2?eL}$-@fUry@!%%rle&vKHQ2NR5uEDA~;HgV`(wso^9CRY+Z?j1`Z51_C zNhwUxBkC_3q3$o6AXU>Q)uF=;w~WAQ`R13=8DV-So)|!dZ;Mmc!~E>4!)#KT`plJ( zHednZo|4lKBVTDE5RvaVBKaIi9x0~2llhn3z&}7YpAfG4+&kz#d-u(MUoZN*U;YCS z`=3tQr!w-cHjU2TD4T*@fFul0A1Srp5 z%LtqRBd*>Af5h$hU~eAtDLxRnN|1EvK|j;u`*{4pOd=A|$FiL-2#LoqRmy#PG!@AE ztb28`EyJeEDdtFxu(v@>wWf0W`B!?$yCv68ukHDqOQo*T? zT$gWG{Et?aExZ$%tX#@Y;FE_fviu1NgV~0DFPn51k5Y*2^)^Vy2ge6T-1q0-Kk!F8 zOXDwdDZ~Y-VREOtpY#^o{Av#S?m;G`b0tVw;%V1Da@=552IELzJ!|8&sB&I>N?tPg zmDGiLiS}T}XcL-;boJ?|?@Lh_mgTyP6Nh2s^wZFof_Ps#SXaYWG!_5w&Z{wi!>Fw0 z+YEJ8xTd>Q62Aaax75ffWBR>SJR;1UXKJe?MxlSa0gpDV1q^(#N_q9myr@ACa;g9Q zXFyoh{qOS~gv!*<9Sv{SKdVB}o^L*=a7Dru2o)u0A&eC5%r>SCGxh>1Yjuy98@fH* za)mf;>oNTvlH7Gj4&2Ib5OsH6DfYRSv4Qru2w7p{hCaz57AWR2PC<^EM(kpBqhG)T zIu%*;pW*&7mZzFEhS|K^3*CRLF*^LI-}VP|`P&kZ=znbo{RO;?smo}fOQ64gA-rXp zfwD&T!_DoNn1EqJ6;_RsG-TTZP3o60z1aaA zM7h=oq9pk$qvdSFLv7b@7O_m)_U$b|j?raOpypVi_}HEQ7VJiSYPY7gfhVQiIvg700or}#$@d{g zS`KUKX1)>$6LzG`=@xL5L9q!0>*KBMT{U%4e6~{wcFG3bbRr>+pkP~IQuYFxcVIUX z#0EtS@G)za)oDRY(OP3YN&mTJnN~3>x#@Y@JsOUwa~Gs9w_0PeJM)``hfK$B%dO|m zugfJzh;XHdD;Ni3;3_x7D@{>R-5$PC?KxoSkWL#LeYCjAFT}SbWeg68p@(CE**W#<1zvw~H5D&fE5do`?0Cn%{`7IcAC}*9EBOfKk+;>Qj)`sJ^F&#z3JL6o$Z2b~|>`2U4&(ovlym!t3 zP{N9_2rt!=zORL?){8*jSU4YYFiPC@_CyO_1Qb}8YxyQ-LS*0&Vd$kvG^BO^tO+k! zii%tu-yy@3yI_izC{$XEu;7x3G-GUUu{=J`<$?kUXy;qV51B=p96t>D{@6kf|2%aJ zUZZGXlfdTk&F~UKIsbJOYC6B;6pDqMekIW}yh4sDKT)!?$4Y8M$`WnOHp+ZaRLE)slZ1Sn~=ENli$6CFXy^7A`_H>4v!W2+7Z-z}xhLwJAtulG*1Y-Oryi zFWhCu=)^B<&$9EehcSag=XA(Y2ZO0%)8DQY#A3ptBglqCC}POav}$IRtZob^>G*3= zA8xSKHS*dp^Hp@9&YS?`x)JFr)sFjGfj3q;H-aYYk0}4`%zsSViH_3VAiO*COzG5wPl^mQzF5c>@Z_KL6_LdlwCTi}i+4gTYXVHAr=@1x zpVWAAg9IMIzh6>vXUKtrnTZ>+)V3b1IIi8KKR>^`K>tu`Q)WUJp#^q<7UxZFVC3DbZKs2l*jm9WrA!Jt1e5-Lf{bSItS>(7WhFs5oocCXgp= zPSo^hkLL>-j(NJ5(@ZQ<>dR|NbFoRlyEQf|lc9JmqL9=1H0!c5>|iJtxYyq!t#*#Ih0bT#&DjGoJk zmpx4jb72mA;^5-Iba$Acejga2#HFYhR47dbiHz;ny%`Ed`;pxQVmGZmR0kBgQa8|n zvVFj6Y{Yp}P8J>mbs5RPWX;7=8CMIfl}sP*eE!F~^0~SVZ805Aq_vKpJW4m4IdlSw z1&rieF2`QXVb2@;MO~@AutRPf`Z5g^^2=)ON|8u}am4HOXyjm;GYS~CvA27x~)_8{tLwVgXw>HYLpOo_b}V{D;@&>miqkN!~R{a%vW1ces44Lqk+K=eL}S% zS^o)7jEsq*`0)x%Y3j%7?wodw2=>>d@YJ=qXP?(__22}7$B$ldrV|vz)HRA=@g-{l z?Q7=l<4)$U&o6g)Ke-x=4*Ml(TbN1+kEqu(%=eXtR-YD@!Y)U~W;N(P5Et^Sk0b;dQhQ7KBO`O5WCEVBh9_{6;&6W@^ z=TO0nAgkMWw{NGI!r(yltWK?_oxxa7aPX;EfT;HIwd~H^L46{W_I0CDGA%a%=%G`O z_PnnJHhc953(@Lc_jIP|g=w)4`PuZp=Ub?Ta_Y*-ja}SAiQ5eEe6#s!>8rQTtl`a7 zHaLc22ba0mR;LMy?fP(BTuq~a6n5lFs0li2Y3fT#??+*O$;JfGdrlnKPKIXBpb+sX zIRz-u#sZ(~@Qe?~;5j8pK~KAvPZ50bvnPS=oNJN~-fLJZRs58c88Z1_y{oj1rAZ=2 z-1?{d^dn>rLk)e5QE(y-+)%n?BFNje-NNYxSk$@J4daawXaQ-nvb-2tB$@|{f}rfu z^>mKji1TC{Kab1^seLYvtB?@2jRu0X;WLLeHL~E8Lh-B3GV3lTx9`Ww#kjKsOeQ74 zl=9wS02H19j82T!LjZV6^aDRBsgP#uDm zabamCPn_v!lqzllo?BN#h$ut3v8Z+aq`4QK@ei9Uo0dl5+g!^VdR#7dPGVV+MI;dI zhfp*dii?BUL8PkL!;iwnw;xlKgYAy-gg;M>UJ}q#gUNkHQTn9)u^g_K=94}Y>^jzK z1V?;yQ&a_69FVswlzlN946S2H3qkd=)ZkdnT|PHFgR`jZV=q&X%W5zCYB!9{%-uI= z8~_kQs!aqAQ@lEoO<*egdw31SNNTt9aG)&$GWZQWxx`>&+$XsX=UBI%+ZT?jU)_Sa zjUl$`zkfSus)k;)oiKKfe2f>fC@M*&8Im%hm-SBYoJm(+iXm9QKSmjqwGwdc1j;gOp-Bt%I_T7V1 z$8KXYTeSWh@Z!&9Hf$-UBunWe5Ic}pwcJBhagLCDx z7_l2k4a4W*@ZpwnDa%g&JnheBmk-W#IA5&ehbCU?NXIm$q+pV*PbA3(x~X)Kgg$>( z;s>Qy%M1#eadXxb#tL6E`rY_JO2uXd&sGa8`evgaokCBIhc87>R*b%>_f#$DX0C1? zN1vxkda0_byiCY7o`HQVsK(9mmH4Q?<@|%wg30PF(+t$#$@raS93%&CoUzy;BiDPi z)%80qO8#@=u6!wXvEhgYWrye2o1hqAHTS(r)GF$W%@3~{b{`fbfp5y>yUc3Er9J_6 zJ8*QX&j^gGZM~{Z&aiLY_0Z^8!BCnxO|lvqiaj*@Lz9&LAaF1~a&(4Nq4Yy*GYNNw z)IR(InDoN$Oer&#t8mGDM#vuCM%oO=w zh3WsF3IDrTJ*F}ukN)0-a>Y-shMW>on$0>#CI}6HkNt?S6`cg2`!U*a*n%_6re^Kz zO!+<1V6!`^Y7_jKN<@v9ZyP+vN|w^oHeH~wWPIq%b^|H$1Kp-Q-UAxjRaQVUCLwA{ z>ImLffB84Rvb@1OoDl1aI-GkLG}?J|ecaDcT0{QTV%BxuGLLKvjW$#!3^V+gEj-BI z)Di2c{dc;}FnFtnx$*ia_!n`7+B4aUo$2n&X;?8sLT8UwS8j&qR4#?f)s1q`8=9sA z8ur_d`H3LD(y9mODBRa?jX8KHu0^blai!E3zhmE{CPE*%&O-R^){Tr_3_Ncm1_-ir zq9vZzGwogf*=0%`Wc@c8S$~kSe_v^@SdznY^=@}9k4!+-Wg|CgjI~Zn+=4UU=m>J& zpbwTr_8_8_)LYM48b<;z5=KTtI`MMf;UzQAVBahK>dias3b4@q28V2BM_`=Y&|QM^ z<@<6I%DR*w)YjKs@*4v8tD4^!;S=l^X1&6YX5bI7{UV%ie!;M-V8=G7jXeU@t$y-j z@=O7(TUOoe?wLo%|7`<*jJ@4&>_O?i+rY_tVV?W{Yy*FZ3gyZ&GQ#gWDE$wtG9%L* z^(RLVC=lYvW~sAcpj3|V1u4o3SCezKL-Tq#?OX6)N>j}mu)@Sq*j$xQ<4+wuqX!GW zp?{#op)E=h`x@b=+FLP;YHN(~h;&@hQTVQOAKf&V$IVo-n0#Hf=ihQ807jCFoCM}8W?G(2J67sRQ^(6c0r;y^+WiFfqHgCtl4`@$w=_61LymhF@| zjj{Ek$n5ku+7%WiT~E}Plj`c-@auTYgGX8~coBD#-78rWDA+h``NTy~_OAT;XQ^6{f8%Wa%oE!X>hjspaX2YUIEUU#jel44Z|TX~+dG%X7vhjBQ!#EYnWin`ZU9b=$(0`rdf3oV$Pd zX?MG4!5y<4{UJs^YJpuY{8Cen-!Q6JG%p7DhDC_2Ou%jD0}gtYkN_mhu-0XS*=Tgm zRN<*I)7_8#j2{RY*-noUgA)S{6UnmRKWF_)omM}(QFsg-=!c>>T=@tPlO+*imMX;V zGt7@F;1@||HIh@5wZ&MxA15_JBDM~>2Z$NQ4}Kj))s74rBu4VLz-67K5Ui#0A3Nwi ze&YP^SNwy8y3zDHJiI$y|2qr)PmcFLU-7T6r}|Z4#t_|Wc)lDjy{D_mO#-C>j5cJ` zlxiD$DB&Xtg~9V|x#_Ic*|baOFYssfUtPV_SMT@5ytjy$Gal9gOm6+KYjJWWUuOi*jN4H;%+(cDRcKg|ji*|zApX(MRp`=VG<3>U}bX(^CuFC|vk`=VG z{mRMsNy$C8p1r<8i~VlWQMNPz19@aA;lwh*HE&J_^g+s&JH>oC;X}4$iQ3ST+{~mD zJxq{xyvA5fd-=Cr+y^U#Qda|_l#3zMWhVNW+z?w8@|EIZZI#jt?2@JTCY1GnB3{FK zNo+-FD?S0X^-R7tB>(SUe9cDLinnq**t>>x2zOb~_o-pksd7Y0wcI-9yV3=wr}elP zJ=9<0Te_ATOSNAl9c2q1!h|k*ogmAe=Cel=T-E7qk6wJg-Gd6Sthgw`&GvHE;E+oj zoMqz&JaMs@zRcDad_6R+6(Tdv*q;SVoY|7B&rGPJG_;~2M>Q|@7NMIi6Q1%#Nn^D( zw0CU}iI+y&uV@WH9PMp^2N5pQ7k)WSvT7LG@-fvcj4QTmU4Q58VK`R9*aQAyWE7^d z%*^4zOc^7K-S9ZvRx?Fp1QW_w|vRu|JhvOA7k71640*W58TqOLwv`9)SKhqRh`8$1bz z1qn*RPzyshA5cmC@S0%loI<}tM%e5inwnZf;J$xN)JEe@p+w&fs>j*4@F@|a;*pzc zIV<@t$_B9q50(kVCbHTzPCcj>NC@d8$$;P+AY^yBqj*_hds$;!#f7hXi7@^+jfgPg zb%a;uP#OQ1>FqzfsQ@%I_w_vQ(&{>y-vu4e7HB8u$AU~eVSTo;}S zL3Lp%ZM7$6DPn0UOw2}4wrFiH{o~TTfnl7vCN6ryY`AiZ@+W{j0O|RI7kbaS);*ax zWX#m4<%5fD=9>9K-siVpFGwFsi+GdzLcozq5zXwJ(-OX#X^rg2)q1XV=`;bYIB(o| zBXz_LT&sLsDeUkra7R4Em)WL&e_Lf9POxuE?Pz|?&73dEg@jgc%}j? z7g-@mtlV08)Pcq?01L{U#CvQOSCY)Ai9|K3i^f!ToX@E2u`=2Cb7EDLMy9tWthq>P zpJmI5(9SE%*CbQe>Ixniz#QVc`7CyLvuvigx%NJ*s%>1Wuo7sqynm~K% z_!W6RY+Ii2!0%rHoD<7dpk{NTwR1lC zG&5zhmAZ@LV%RfwYsbmEuM>yEo%iV~FucFp3odu`3PX)Pd?}~O>iSM~OWfn+%_1Mc z!kN2D1Ox@t!KZ1va6|!nAPDIbTr4g@>DUegD0O>&;38}CG>^kaC1y>MrfOyFG`uDG zId&^=3a@b&2${sE)HH3Vv~O=48+BZuV5y$FYAO}af)#B@eKCBLUBOVtBu2&jNuEn9z z4B~6~l!Hwp3QYT$HFb$6BpZEAI(7-ary-=CsVStMmc+dS=DByzct9gby%^}1P}z)= z?2JZ`6@9l5(wM8RY_nNG&3u2|kZ+#rT=yd&S} zf>mLk-B5r6vnNTZub2)` zxjywP2jGI642X@64`u$P-c#Hg`{`oIS@sHlz(6KC`&wEmw|BrhK4uA7r#=pDq zUov9+`(DC~BD&Z4e7oZC3NpF@@Q0J>BrFUG6>bjfkR2@R_n!)D?l>9^2~KMspEr>%C2%Irpr(|;O?vP?C)JM1w&%+ zu+RYLq-8jQ$t|@KBFw;=AqbhN*cBE5&21-YvL~Z7nRY5{I%Z3EO*&r~JRbL$BHjEqQWdOpflwZ+4-mEvH(9jkJg?}u8<-K7nXKO@Z!XFUOx5WNjWCDC zimmQOcGtXxbw?;2C9M~ot;d;Sun@gxisG9d=4sT1Vuo8yOWiHL2_Ng_ZfC-jc#yLp z5%a#zSykpGf6>4%#oW{fjv>>wjx&FZ44f66hkNiSr9^cvcv~ulP;0_AILGz(1}M_E zAXJVTgl36($2ZX>f0YD^^)QLEl^MzP7?;iT&+62d*vX?UPF_N!!t%{k1z00Y2##dU z>d0&LAabyW8HEMit>}Yp?}$Cd)E6vCOip%D!?YUO6*_xlGOhAK6UE%6?wxDxg3Ix> zZT?0{vmymF>9sFxnLy3ihjJDD)7uz;62D_F({iZXi;eai6eIpfNF)o8HXmi;GZlmX zOGI|sPL6(_B@lETL)_v|aywZE9&9FYL4~gEYtOX$>5TM<+1(a9)SxTul$%7nA-t%1 z7G#uXq#})XWh+@1&87^ltkSw1=Md2~@$nKO-IDC6O~DW;%P2*8T+x?}zt#zD97u4J zL>5^u&$HS~|0$}#E_F~+3N;*JnqZaONI51CprJyUbhC6=bwRBE+_j5>ku> zL7)w)cwB*qFSLhWZFU!{kH)XR81)~ysnCBY{SUkj`JSKt6V3ixZu%R~{+9`=TzTjZ zML|!5L5k3vqNJuZyDsJ{BVQSqO|jh%AP?5MNwYKxIlrq~zGSz{cY19+_5nJVOk9q# z{;ss-Vfy9%^%`yy=0wS42L?#)I|nn5Eqpia98av$x z+!7Z-b>3j%s^x59)k2}CM6})*(6MDL;bs*#mX5hFJwn+Rbu{#`r?0WJPqGOFgX|0^ z1-4MYJXG+#gb-vBFu;cs;hpVEyo>_AV`(VqIp2$HTaw+-_vrGKBUGd^l6YkyhlyNo z6HOFMX%~C^H7|B+7y5-&Tj!~AV~a>1pBH9&1035SNhImJf6a$)7osSnc!k3l*}l8R z9ykr&mtj9+ky0t~D3Pp?-Oyk|8U_T(qQRc2!Xa^Y#6kxjdlH||_x@5l`-3X8HpSL? zyuYLO`#bXf?|9cgyyIUYRQ-Di4eY&yrUrrE1ubw{Zy!h%fwu!@Yy?9=Q51~LQ86sr zmy%7MAN2_S8cB@Ac>m#CQys@ENBS6KN;@OMS=#Yit3L+KP*&Rl;Bgm&#te1ZNv zDgJ0pa8D8<^2T>xA!^`~uWk-}+NXS#gdr`W`qka}%ZY(E0l8)G3~Ee!ia4BEBUW1X zc3BQs@r@PL#+~4@s4Lv*%A5swVUoCIM}|a9`@2uQadnZ{bZ$=4E63Voui+ieon57pC^S>dxAX@9;F zJhCf4$9BuKCRn{lNLH9Y?AbH#~1n8XmA8g;W&<0gpXW#lj)nEgnGzvt3oS zV^YT(BYsMJF%DO?^O#d_%qzFUmFPI%RbaXLD5)7t1$96*Yk9mbvC1JQld505ax0xO zFSX8DTRKvwW?`wXxZkIYV<2$~KzpODTw^HG}B>LvKij5#U@{ORqG`da*pEE+f zLRMltdO~_{b`h0W^bo1-L|#$Cy{d}+?0aM-9?L8}>~B#^QhEh4ij8;_W!-`b_mG(RG>k_#Er&jrsOQGTF%}{zgOQtQY%5CVD0B`6^lg}tkA5I>Hf?9$zc){a;|=p35nAGA7}3rW?9#5 z>1Kv)+qP}nwr$(CZQHhO+qRJzapJ4J>ugm0r|LOZYhJH8M;{%nw-m|>&#W;b4r}jeAuvi zf2POYZ~;sxYRybgtqpAm&)hp}_CXzW0jHlHD*ZosNv+BL}%yv1-W>n!GH6~h(< z-G4mx@qEmWE_8(R0U#J`S!AF^Br0xNPV-?ho?c89q>j{w2_+nJUwzUH9v-VZan!b6 zNNuUTs>+RTim~9Ou_P$^`0`w~L;#;L9ZOu8VDz;lgiys{%1FT}?Rqq*kZVVyKvnDE zQ41gZPv+#K1rEbQiYZ$yv8JWZ3k4aloi5;Bzxz&m~(C`*ZbOG|vhinDe^81Lrb`xRU17tumf@`MY?Xwt&dY21?` zbw>OBo9P(n@DR*J2BHRDDH)9?W-Dgo)P!2~`R$eqbp!;HGd3id(Lv}&aM>x4ZInzJ z{FK37l}H-Z@{F=)5*-nH(+ksRCFyluG{aL5RQ;9a?4i1JYgzY{kz-^Ij&x;n%ox@1 zP%9Qr)Xip1F&fMkg)Y%6iy#9pxtCja^7i)N%u(GwEevCsELKWndGjJ0Me`;dGWpaP z+Om}DGNT#fn-M@BP@6~}u4Ybv*2ge;O!`71O(KfmgU+y|q@rxmE%I@*KcZ=gEC&{# z#~Y>OdW|k`SaROG6T$1;%thQK~#;wGGu572y6(=$cbc{mnOm~%`+7+q!;9aW6Yhh zZsgB&qIalWZVs`8Zu3Q6RAU+~kCWmm*PlTv3+Mkn`H8?T2x4$k!L1~3WllFfwF*l0iM=`^-iZ73t9tTwYFfv?nRcvzUq4Md;i z6wUihNFj0BkOI|}Xxwp_wJs=dI|DqVjfqTnQ-62^kza01pLJ&QAnsY$M?bFX%1+t< zlU_lpv{#X$xtG$6MTlBe{QT%nw@Qf;XIHg6n~hP*azk3RCf3FGcHHf2S49s=v)WR& z+KzT^);<-c)(`B9XX7|?+-@Dh?n6jEuW}<9ZZJzfg?(hv!}o$5TxrHmg|(12MY;tY zSwmMmMsj9NRttZUh{zbr5fdA%R#DF-Lv2j_9bIY$NFy_bcbP3=GJ&GHG0c-LNqWu) zdV)`%&zDX{b146mAy<<4FK z_h$9o%!f3}faBtM5^-g#p8A^b125`9Z`Kvah(ha}9t(1`txt%N2O9)-6bg^fqUaOG zS*$wx3WAr^Xki{d$9Gw`*Q9wI49$LO%hJxCbb>VKa@ir#ZIw)>xqS>r{2=b}wckL} zuA*fAeEVa3eA&P#SCoW-%BL*oIfiebE5 zT(waB*~wB*<6!fqhM(9pptrfp4%Gcm%*eUVvk zqW8?Q^)y%KtgR|G)b9}{j5VzF(QeJEFzScZjA7y(esud6K$2fA$(6Z_q^ z_BJYDoK*H}=+VTPK`94V*%%Tk`y~iw1mOl!{qwqUzVuSfQVDeYRyr&4&UDVK>tz$e zA!nY@39s zM3`1~=AS!`oM|M~0wr)Jr(YwDT)^_Z45FXZ> z#)PIaD*$K%4RTx<%~xLj-AiaDLtdO7FWvp_ZRaQlQ!OK!5M^gw%D@kX;i|806FFkj z7!`bh+6oh0Oq~uB*!q zqVK5&9wEMLEwTZcTe3rzHheG~ErTxmQ_%3 zT?v1)5%#BM#qW`^6XFL>Rf?~54P;f0_P+Oo}xXa-ObX0OW2B^uD z>>G81@xxnSlPof)iKnW{ZQXQRZw&(NVvR0_njV`Bz(JKhJ=CTSK{l<^3RqjFTx>G{ zp$ze&^se-(ES?5jVh*fKe_~ctLsW8h#;^=z?%)Wt4E3T`R7(}9OlyXI-|)Ux zRQqONnZoM>!(3b=ay9dj4(oZpVq`mo3TSo^&F+<{Jx*5isP46K#8?HsbS}2W(Buhm zW^D5jQ{6OD=W~_X56M$~{m^*&U~0Ljm|_kmjFu zZ4|Tsb-Y+uujHiE;eU<0vP73E6qVaf9-;2n7;UQ1skAiT!l+tg&K6#ye(_vvn|^JH zvUM62=w>`K^!RHIW#qh;2%VKhdmQ88+pRO2;iFmmxZ3FA8SFiCh{+K;yV*`^K4x%> zh+<|(XoL~y5Gq@{fC*Ij*VK*=r15w=uwSITaD2Cjm0>#Cqp&yJ9ET%z8R|;LW|qc8 zE|kKqAYA&vL&R^;d@Ft=yPsr44}GV9yp|laLN&Wz+pF{D?%i9~FgdL!(GEhIzgJC; z5whcZE8K&mW8}3)y|Rto?2e?8uFA6i!#pU98aA|Y?OBx*ziPD?O-sSdcAQ;F4Aofh zgbH7F4E#Qp^*HfCJtsF=7x~-9Ctqc280}@dI`6k5zJ|06~jN>Lj z`~Q{|Z`%Kcy~`l!9)8!pVyQnWbc2J@!u)%HgWskMAO&Z0NTP33f2vYK&EBLG6e? z=w3b?Vyp5xG0cl^`uDfVh>y3Y&u>4$H5ffYzv*8sXjDXJHS-qhqJw(`R$LK1dkSSi zu36&B3XvEaL|R4!K72VZKV&TT1d7S&u@PB%!DV4&*b#ANkY(6@>UqIQJ z`h1xd21vMDZ*kAB(XPH197&>{sZkkZ(v17`B4(Jp2ip<2fu?@N%?Ru{!<=-d==Wa| zP`PV|M66O&xoJ~hkef!|kgNIrr>#fTpO?uT1K&>Z(=jst(L(+!L&pF1GXD#TDmnRo zG_yy)w>zA-CkD~*APT_7RN^YgCKwYz@%h69#D-8yq5x8poXsbfWREa)^X%#A=UYj9 z$PU}L8ALS+JRN7f*-roXzHWJL?)vt81KHtLiZ|&gganXwxld%0gD-+l-Q840u}?kj z2mnNGoe*;+))C>IZ+Oh>(@(Q^m&+6)&d2es6 z;1r8aAN#Hkks_U4aClKtUafkqGH$Fgk1rm~&Iv7yuTLQvY1kIssNq7psCCwpk+1MRTRUIz}O5WyVRdcruxfbg)>=BM01 zYI-DzX8C>XF5ddREL`A8_pBfBEb)e-paCCC`u?6~{Dw%)xa#!9~`3F=311^OyiUwE2Y@NJf@M{uJ zK{$|%zyQw=qBvE$Hr?{(vMPxoxr`(>`KFCblj70@YN`MwI!?fwgR)4mIkVjH2I#-0<9D>oaV9Z7&E zP8Kp7<$`zoO=J=RIWhjNSQ7hvHexLM{B-zuSDzCQq*{`(cnW9(R}yjYetd{=a13~- zS!W`I|4?6rfL%vYBa%$VGU zV`eLq=WTdAHG4|E;)F6pN_^vl`sj|cWDI>Wd1p+zb1By9&QXq$$K_>&x?WU{kjLg0 zV|0M}7DEcdCQ2;minSR&e}x#vkJaxgDxg?gFE10$6!6vIzXvrYjB? zd&zuG`nkB3#RbjXhAr|`GDUmzd|vydvf^Bmj+=sZLu?a8UY>Qd6zFrVF&+EsfO@@~ zg_1-T#@)J5==aW;vooyH2YgIR+YObQF>|AKCHsaIZcUT5MXqH1@rpyP52TRYs#Xq_ zyYLWYY}EL68!1RwTNzl2^nh$; z?TVX>=6!68hBGt{54FKeLDk!np$uA>UOd~coaKo`ZH;Edge1dSVwbsU!KEhdM!EVF zmdu-%e$n-dhnOz&3_aZ3GDkVD5kERt9oCv#MD6{WwpQ3Lpl8Bh7Oy^L1xD^jyn{AA z@z7}T>82}QTx z)Ne?!fU@-@9P;2Oxm67hD}< zzldt%ebR~wtJL4JUM*hU!Zs_mR;!DkY)~a`B8{ z@M`MYk5o>W!tWvK&1rymq~qvZ7k>E(O09e{?s(|TF3B&FVxC}D%%<7~-uf<{;-Gxz zQ|#El*j45y*>&gZr?@w#WY9`gDpas-Vwrasldr~76YpT@y)YMVvDGBGW)M!dQW3jn zeRocONmBnMwNPRG&tc-9;hdo2K-%|@{?#4wUlYInb(j#hF|=|vG8T6GA3q8|!Q|fp zMzM;eE21!(4~cjqzIHxR7=&1)nRF{PWEmKezufOia6IZ`3XXA`MQU*tD;7TZTi3t9 zADC}>r)zc;qOd;CqV8TMtVQM+MOd@uCMVvf*`_(KEStUG?|)@~dEOZ!2(ne~cM}n? zwZf1~mFsIjpC)3NAhg8|32R9lFw~GuF9YqU4m1Pt$Z=-zDm6;s)t(3de0u8dXMkv~ z&r%r6Lpyfc(ba}rVn|rfSeBXDC8G7QGbJ(U|qtCjU829HkjR1Q<*ci8v#7)dhW-e5H%8X~(NfLMNaoPlf zTvjf;TGu8d^4xR%ZbawA9MDCa(=wtjMK;NamR zgv+#}*3=VRDPJqSJnp)dp7aXO_^Q&3D@H$Om$0EQ{K^_+!}_KTNztZslUa7DDZoE#d?uAT{LC@>}N&ttBR zDAlW2<*88I3FsX`L@`X4QX!=>!0M_lAe;$~h$aooD}8KzRFB*WIs>hH?joGfQVp=x z`H@4KqBr0wNasJzwR0Uo-g<+4l^6rD+;_OxshPc8kJ$>uLQP74=y_P?a#Fcm4*lyYOCWa32EthImh*10{TGQusYV)Bs4S*lWL|4|$&A5Aeie;`i_sIE57$i;A=6 z1SzCRgFI9+n5YYcl+i@K1TIXUgl?m`geXjz?yksup}AaZofUoIBJ6iu)AV@*p4l++ zU_-#F;jD)DU64DX*d(6=@Sobp|;_e%>_fd^R_0)kQU*l*ywedW8V}hEfqesmSTa; zh1vpaq2#z|4YCIC)%!%y3ERVWxvNEV?0|OkgnY#A+6o_Rr~e#%+VpK|tJ?VS8? zLhQdAH2zya4VK^h8JNRmJ81ID(;OVb?(s`R+47(d2LUblb)6}$W3MC_OLk}j^qvIb z?unwCQtACHw2YIQ}SlwJ|6!4VoyU@J`gjy*R^v- zaqUQtcmwIcuIr#`exz7=v~ak|oC-x@^b8jZa1J536-_5b#4bIgb+&KJaki$*QzOYEjKBNkU!)=j6|F9!-GahU)Ijr-C`M5}nC5o~xqy73Z&wsaAF zx?9y)B(2i*<~mGieWccQGMWI4{yYaJi`I{)ZOaAEELZPxuL8nkYp=a5<-ut7H9t5w zw(MY%wDVN(++*5st_{{u}XQu%>i8kk#|JGuY+^{1%*ZxDf2^20jhvV#b!jTGa)fC4;t4Dk#m z382iqO(zd>)KW%g4#nfrH(I;GaH5Z!ScV+VYU6s@1o0d7n;*B58Ft4XbGt9VKCYF6 zwpxN9 zrGm1^gt{QtvAkpJ%ue>nvQ_u&ef55O$_{zPDes!dk$f8tn$=2~_0~3>6X!)_=2`pa zEW_LIh+B*tyQ^`SH7&1q!l!9$1?X08!LXz?hx(hS{( zpmKct>ib0v_sIj~K@C?*pXAM*M_7_takh{nVFApq9UNEYtr4QZINRRlUCtM^LdG(B zXiBwZJJdslvzU;|wvs*a!Hr{HSym3Uxg}% zF6sIum%a<#`Wu2Tyl;m7J5zYwJ#-?+OX8Txop|U8f%xeBurqDv0md=# zA7ICf1ES$#qhUDNcrBg)#;xIQ1*d2f+U28d3qdc8e%<1x2=W|?K-nU+3`Vkw;p$ri zwJQ{JG`Ir^^z;G%64QtHbqMm~;rJ8;0^kCe#4Q~$>ehfq7(TKpjOGD$K$siSa zB%b$DXVQhAPAqVjV3Pf;!_uWTzO}^RIvj4~S=wW#h5504D|qiP>)G#T9e&m1(TcW> z+;J6p>;e@Xo`NiRw?Wq#dgWp}8J6Us>T@*s;|=SxC&&%+vw~FTx)q7*aZmXBKA9n_ zPp|+Te!3Ee>GRI8Yp>rDC(47aq;J)_C<=$rMhz6H%sM>Cre&mANkW#~jDvt!Pv}V7%GF5+UHY8b^&NO@&NG{EAV*>X~F_MxCQIOy!(ux(0!<+6Wvy1t&ZF zBB(TXg}O&nO;Lh5V})%B1~Szblcxxk!R=-RWYoBjX4Hr2D@OPl(dT7x;*&@}cE6dI*{+336aB zi-d5wHh=xw9hj;VbW#As--5>KmXh>u7}If!e~dFAEU*j|cBREsdijATOT&tI*@*kU zU;2O-5ID_|xc2uZl1-`<2ecTP7ukboazX-P1KdsP)G@6bu)cWpawP7&GlchZnuyCv z8~T`M=zvOA5?V{UWLsB`lmA5NbtB#?jaj=J9Ulg1PmsqqJ;zub@0Y-c`wmF)h}RUS zQ zMoi!#M$+crPU2Yld|53Pb81knm_J{Z1cU}E8V-L;GaJ)~!zBqXmXwn+l%Fgf+^ir5uM5^cx1~Bd9sw&4l^|aUW-g9)FU5KFg>~1DGUS2xZ7zA%fh|xIU}3GslpFm zQ?TrrAe-9D3}dPh7TGA?lk6zmx0o5sDR1GwJQv6gp9eAu_0;{p6`H*( zBS{5~vUe(r579}G7_C!gMmHZOAvHAvijCCR+fOJdVZ<4>QDIqA7pZ~}sEHXg`vdl9 zKv67bVYMWZJcf_ZS9l0*%tZnwOxU^&%(AZVsD=%w@7n-;=iZwM$r_C&t1UM-HLfG^ zzj-PkR&*UKr}uL-#rj2R^G8=ucl4aU_XS#YWlQ?+YSJ(S8S;ea$j=})vT!UEy|R^& zD@rvfhqF1DopY!)H#;;t)OwB+#}e$t&|TxfxK$KRf&=mlS=gqe4WK+@zDbtvdl^EI zage|R_Iv$=19Xm3od|l5u-=Jx$89Z5vi}U&B1-^ADol#R=!8Jp_^@V&G#FwDXKGJ3 z?=ypph-pS-8A%<#A)cf{q+X-M; z8gi!6@vG?oWQwTq1854URb#cn&zQDj6u9HAvgBvWfdOR_Yt3Ksk?MQ2`$F2}%Lvce zfV_F21LScb`5^NM+fyErVUB0Kj1Oze)oW&?o7;+@+9Xd*8b2YGH*gj<ZY^BtDupSGi zRR}~N*qA+aT1NaOjtKPUAF-=ts+&g{!zi0zBlI}9i!_og3YL6vq1&-pM}6qBM&&s%-lACUQ{S0L=m`nD^+kXC2@7 zp6ujJk|vMf$OBt7w%`Q~L+~qs@ujbMK=ttOjLalhN3i;A^(~Ftu@(D)-kb+~+0Bgl z=rzVbXH1tPf^X&%M#_{^s407>6*sv{K{ zrY{=cpOQN;Vw~feQ8o`P5xcmI4tdJP8B(vA5r;JKM$Hiiv|Phlu@@C%19qyz%M@<- zU4wPRd+K;@c-`2m@HY=*SuA&Q<_G2k_J=SjuDrDRv{cGe1ornPpt222hB~DCGJCij zMKZ4;`LtOI(ESa8{Zs7V!kCo5!2`7H5Rd#PcwC)wZ^)qg6!#&Ha5?r}d~Q?o4!lsH z`+WJwiZKJ8G_$9SF#}$a#zCEJnn$x$cbH|I0S2r0ckD~?iUNP4^?ha%A=0&N8C-V^ zYPu3d)f*eq*(2Ap;_Tk$Ce_pu{7;*ibrjJuT_52*8o^!%rk1=A9o3KS#K@?yvih2Z z-Q<_v0HC!5FPH{=#S;?Xg&DcUR zD={BYDFmU7%sk8UKRP5+2woJHh4aCwP*TG)yY8gQ>g@qmDe)qu^u*z3^vS=)$k;v1 zNbrB%G6vz&3E>*x`1~-lp;Pu-sRnlMIo`P^-(aP}cnxrQ1_0j>bB;b5-xy`~Xc_n> z(SqOxGYPQ64sganyn#>_pjNoJgdr}9riF_Vyo>NrKfQKMU<`r``F~S02poWP(^GXn zRV9=k(v}R0x_RfEUhCH?Md`2WmqmXaaK+A^Vr5bz`$+kG1VO#2YQ^@(hw_ko|IrRW z$zsg5yGh|XI^gak2ka$=>RplLH+&J{R>~eY`xaXgQ3H20WZBU++lTq&)77)9?g1Mh-=8BIB|jWRZkvTeSrF_3XZt^8 zumAiV$)0_q=09VO-v5uqxBtW6A?jf3Z1?Ylo3gs%&*sdRO%nON)MNR@ELOP3;3Rlq(3xoR@Jtq$C^-j2OwN4*)+skAl~ z^`-DA^E0q%jY0ZHmO4#`!Mvju_vMwclioVm!PJO@hmS+8sMf&{$oik;h>_ zu;m?sz!tWK1qswjJ47Wv{gD7dyu}fK(1H{ZusllR0K!f~ge25GbGrYjRVF}Pl!N+6 z#ykeWg}S47R@InYMZX*JK0VQDGWTh^(^;DnO0ENi%{&%jL)|7ziUnT*8wcG)J+e5m zAy%q=FkxsVl=U;avVAmRtbIr|{_}oXpK}Nzv{s-Y0;|&2QQAOLgeDg7)=67nC)O+7 zU_EZA($=Y)Uno{A-Jo5|{ELy;w{EwQZ%7j+w1(sK)qEZgV``}s#Vm?NLNlX+yfuOG zeL}@TQLzKF7;c`&OxPvHP_g-?qPO=;x%yLx0zQX>a>AUTMwoY+yVH0bMMH3>MZqLT ziZBSjBk|x9({90rAyXpro^$tVkG$k-2I~ak3FK_=E4M_zHKaH-lYsMsNevwX_k`X3 zw`o;%jvs>_Pc52CdrjWAgUG%xsjcxtJ5|T|Ax>c|_qN0g_%%V(Egxz1rdY>sVCg5B zrx$OK%j<8jW9)E<4m0cf*cSuD7krtTmc%Anx>1-bpg-F*S0ttmq~J&!xA;cou2o{OYWAc``bJ)KHd?UC^*RwpEC8VeligHmW+|VN}+>uVDk|?MRS*efJ#q^geD!?&(wd!Q1QM2b;ng)o#d8SBA1uW&Fsu@+?pgoBpl2+5M>uHwI6p(!dFZd=B zC8w*M(W@eyQ(ZzTeYD${;mN97Srz9?2-XyqVKG|PP@bjDE3>sbZ$KAz9#}JKnpln0 zV3%BuKwC`8F{b&1CSJ2nuf$0TMlYS(h*}KFP}3NqSdEUHblVUmI^ma9F&_Z54=OJdS?2tXA}8{k@d^KQ>z7kOJ9W&NvW8&d5HCd zM4&x@ZuI3-{TKx|UPbIeT{!Tc3;cjz7N*TiW8kM8vxIhr07gOI;s*OgmkPVfne8JB zBZNZ|!J7}%2CPFUL))N78E(?rChG%~5ntIX-qH>cy(a8&Er0B0$A?U@e!$H!wDlu) zhhf^2a$FkEPLm`|xY7E)t40fGzJ#u-M97yw%~N0K*7C&)`5!qJOQy(KG_z~{QGXQR zzy=zs0?~WBzx-_IHO1Bn<)E)U#wF@x8Dww4TFWs#sv@C{~aLfzfJg70-%mHXmhz~AP zA=+-QS}kV^Hc?x?kR70oWE|841)^BJq?J^$PC!8Kr)g=KzYr|!e<7oC#hB?tF8REk zC}Q-n)FGTBn(kBBWe%a>Bxw(kAxem$_2RrzyfpT0hdJzQ9!$|Z&kW7L$wN%pT0)!r zcl8%;j z$$NE#A{HS38Q1hPPaSfgaF}z+I=exmxI-C0085QzMOx>8T%S8*pq^(IH$p0ngJ*sG zr+np~_R_YQUkcNY$HN}tzup@AUoU7OV-tO6tN$iL7*@4*L{vudY58ZWh>=mmM{dAB z&ti^QCRc^0;J(_DvJe0a+%n#>-LMWlUP7B!kk=Q5n>COAcaPR?1eQaCg5g5cc}x!jZppwo<3Cw)`Ps6GukLn ztW-luW12y{sXa3YAn=M53Q8n_Y|ltRlfMvqh<2T^QbAfwK0G6XiQyVVChtsr+spw7 zp>+LNW13$6+865?p!|mbK9&r>qnmm-}MyFK!A+{KaQ2z^yseN7};u|taXuKwBD1O!{-a3nVC~D!I*2$4$Lp<^{{k2?I+n-0>QF;9GnrqSTIB zxn)T~t{Q(wR$3zYxzUH2k>X*=NBl)*(>(b&5*GLwIWB=vG~CvdBxBgZ7JAc>QbN$r~{+g z$@63K7$o_ic>l>Txuyi?OgX?QLmSB}&Sc4LV6Prq&p%3I+8S`pLAh9`uFzLw)X1s6 zopbN@8b<00P({8Pv4qeOr6iuoRR-UdT@N3fXcBc)em~RF#ILb|n|mZ?TJ*>*FAL$R zvGl5;xrK+GgjhO9@LbXGN4R*iFio*uo|2#b(=@~KSfy>Jow}-GgA`rOFN*B4uh)a>>V4jx>~55t9?W<_EQ5?gQG5Et=Hx3mO(bx`Z(t<0E(g66~8mibGt) zjAD#G<;cX8;cxUBBv^H1mN?LR2&nr)uoOq!`DdB55JEiO+_rL_I4sk-|IMHe>JylN zK}v!QuOAiuBWQt7Qws$X@HQLX98y;}j{l3wFO85r7BMisOSRwEd66QRyTXllh&Xks zK!1MGgA-kb8F6wWi|mR?bfd*Uwu=t{VEm!!44Om%opNknbsonERS=wk_00d-(kNN$ zKH@qo8Vk3whJsNB-oB6P?36Vm%z{^ywv4xtk>B_Z=_W#CHChp`;D(u~N!- zjV--jq9Lxqcc2POOF}17ACEz6h~r{%h?dL|bfVWVf>|tLhNUZJMk)pgc}-;AJn%}s z`bzyky~x-+<=R2d5PO6W=;7}aj;2+j&_ke><#5G?LLMtTVHp3QR`m0j3T)ZsO&Bn1 zo;sT~NqTc{9sxu|D4WzofngsjvQ-HGYBt3E?~kLNZo9?vrweVOxALUa0m6w=lRG;| z;PV2X?Po~|l>w7+hL2L@`!gu;7>x$T?m^M8^K2PwU4GQx zO}qlzf>zkte2Tsu-Z+~J>F!LWoG10%+h{s11=(eU>Ugh&O`uX5>X4dt(9>k_%9&zH zW5-O_yXYJFjRalZF^;rdIP)>Y`P3n+gaBaR(WzYFPpp2PCN|>-jTas zmwca&Y`A$ZQS@!ny}Eq_?DzWSxRZ=HOG9ml|KJ2$Lf_;YDCp}$AQbG=7+K`?x& zOte4#8*r#+G;_B1XV4e-!%LR^zfLs&{WAIwBkTXEjuZNSg>(Owa#pKcsv@eweOu#P zA)pK)!&50YsU-RhX#fLR0uxYU)FID7RJ(|?)S)%Bt>>+UdYkRaezyF*LH$WElgOT% zMt#g@&wb~8i%J<;>4TiPLvcLu7#&Y{(mylX8593J&(ik(UJJw(IO~&SmaS!)?m`~eY#WHAWT=^N z6CLS92oR^toDnyZn!14Wpt?;@QY4V-Z*Ra5?#XvO7&>(ZHY=*z}6@r zMqRP761S^KT$4N-hy5#ecZ3neSY&n@Nl{`fglOrqeCd~RIeT`ibBzS*$O310>7GSO zo%x1c7X{xyzTMHjggnVAVZjsTShDE-qd&d;w=xm-K8l*`K*cYi6v9NE6Dy_}Y*pXc zzY??LG0I$|_)HeZ*G2SZ4&uS9azxlylESb%iFNwLOdnR7x>9NEp{)lL(aoerU9|^* zUS$QCph{PRKFHZp9cfp?i4-7kq)Z;?2*{*#6$gY~RR&ST_9VG`ir{f`-*>|K2aH}c zhZzxsXiD}_;OM$#ZwaWn`26h-qzc2UZy^BBQuc+KtGTkJ&=fGfUA3aat#2{`OZ>TX z(zRlgmNknM1c#o;h-k@lPrc7IL4Y*62kK?n<3XSzR$P)X(@kjjq7xVRqiKnA-7Hv@ z7PYqlHj2|$kewhwqk5ZHz}9*rVmXBXDv4B4YBORyg2x?`h8AwGW`Z+qzEJI0Ty|)U zfbRUWN708%r<~m)$*YO03aZL6UC*x>l?FU3o!an9wYNeQh}pf10PK$l`zhFxOz_S6 zZVP}hp)nm=xu+R%b2rRmH;TxRO{>m-{C}s$Rwe@iZJwnHf&Nu77l2Y8DqlShjf&OO zu)A>T=alTK95RQ3Q!P*RoRfUQtNseXWw z7qD}IOJV_N4E4JrCF2Gm&9^pbK!+EqlWOTcijb5deF(*@soi? zl58(N^O%zfejd*FfUF{(4?86Id!-=O!A9c_>NwJ8Ykn6l`#D}}u-WNU=O8L{(26F{ zc-S|2j#t-To!k&-L~NW#rj&h?;+SBrB}&wrtvMkyZY`4!nj|=P6WW3?mNlsj7XKxy1f zt_z|Y*)*Paa*beL)k<5W64tdo`fHn~5t&DGf=9Q{9G1`7#&8pHPKZ6Dl9(^iwJw|E zi{4uFcdVmKxH)H}1NCHQM8kwbn*cl+UV(6=!*;G*lQgRtRh$+dra7dUtDr`iACr0r z6S++H8|{A;hUg6zoWfxL`h_C>Bi;G`e^>nXJEEHt+)ZhD`E*NtXX>aP8Yt}-gP%Z} zI2c}@5FWU{SWpo0Zy9#&e$#8kKdUFIFvUGLYNzgeC$-G`04IBY<_42KC&L+%oow4$47 z>hXo`X;sIqEyM;h+%b( z1AN-zO?9WInYX-RGo`n*Ca0YtbZ+}@JN3YJ^7dfSCZcJ&z-?XpQGL@wTKB5CTrgQ% z9UVadcdi0Rwg%=}?=EAp?wTNPhj2Oflu>Plt)bpYX}TiG-^(FK4pBgNre{6d+E@K~ z4^O?jUVLnD_D)W>xW=Rr552=YVI3dASbO!-HnHzaLAw$|dWUrHKQVIJ2%%jMXnXb?3cKHnuNWjXt%`E78HPwJW4WG=BK21oC~ZE}uQ2c!1L zfqk<M_qBU$hx`uLWxLab`I8|29kKk^*5+$)+PD2ZBlG*vd6(@@ zv*bHS(2qb49ss}F>LjZmSs2*yM2eOytJ^_`-~D|GxEL&lJr!sL!~w%FeCAS-9Lm+SelNs$wg2`m-} zCj5#TtOiGJ7KlOu0Gg@Z*0>H|O&7hYc1;d0 zJh%b?nLeX5uZXKIqTOK@TouRy6_^0uXBAYK_?&Mk@r6Fb zZiakL9Vb;ju72Yp@Dfc)KQ+7-f@x)hV=w>Nm-tGEB*jJhE_>dl+=yKc4}gk!Wk}0&7_xQg}=hywO{tj0Y(* zq^{-i;4&>y5n84YHU4_oLO>{oumF~D$u&92<;%O`EtN)_LcA>Tp+VU^eo9_{h)$IX z-%9!{iAM1a%KM<4Hu3W2D>pnp)8MkumdZ#^K0&c8r+~lqLNCC)uKt68^BEqnXR8u~ zh}u>#oUSKQFQKJJ3M5sch}~;M%ivA2tb-mQY@W1X>S=1eq=u0!d}T?wkYTfyK6J6Q zhFc@1i$sw$^Vc;625UV|lu#gYy&iG=^ch)1sF>+r1O|VD48*yB1-}=_g5doS=<)LZ zhqHHV&IIhbL_4-^+ji2i*|9pdJGN~*xnmo5Y}>YNqfb9?O`Z3gnVPDp`Ep%XMQkPG>@0HCBJx5Yt&i|cFvK4bWyn(8vSNDJ z_ETtSQhJ3SeJY%Lp&};z)JGJo97ed**s7BKF$mCYTYWx)wG>4Hd;^x3{C`+BE82K8a3H!LIa|&VKq~I2pTgGb4=gDzLXQdh8men!l z7S#eGmpn=3Y4*#Nk}s(pfk#bD%|U!3f3g3@lj9jLe@-I)`m{?bW*-F5xddQm$PHE{ zQqKuGUQV#XfE@z>dD7rUiV6*Z!HEVD9yWYSk93GEG#E~h>$kUND%q+&le`3zF!|gc z(H6uwW0OxiIEmm&!6wik_G~T{$tv0Q-eG1|i>8Ge5F3OTkYbs=5c+kr!hEuPN}p~8 zx%&&Cxm5uRK`HbWNHFa`L!+LLJ$;YehPreH5^a)_+7Sga{0Oug?s7nzOklXn2+I*s z`N8dvrER4+HsvyvB=Q>?g8c1s$J41}Sw*};bZK5Z*R4pkxix4H&LlihGlAh#VB>B8 zmXa|QocwB^VK?I+0uce=6qzHDcGy8xBBZGMYg-Kzl=OXs3Q=`p9Y+1_GRh4Ch~$yS zHSNLssvg`!`IIhpO6wJ_j`7rvYO^hPTy#40y1k~29bYOnd)(6TEw%s$=`k@=ZtNu* zu~9BK0jhGQeaJo+x;z(%Xg6A?_U_d4(Q6)Vmf!Zw24g0;`1N%Xd{=uJC0e4tBU#q_ zgpKM8=PfKZa5mGQo7GNA9Xh*-CAif&hAqCN8W9%Q!vN@^dk$vVKLYyo^CstL-b+~8 z*nZ8W`j2nf(O0M$J>Y>g11gm28n#v}b2MV9ga|H(u85JGTB90G3cCu*rQzbpp**H} z#uHhl zAxCiCZ~MuzQOG)XF+>Z9We?$ zvORA>yrnP_6fqbRBvNdQ0%d%5f9RGMV5OB|?`|Vs>rHmSUsw00 zKo4w0x22ORx#YJHt88gX+KERZa9S8%jki4fvBzW5KX6cx5Mml3vG?IVj^X5F4<=)& zovFOLNgHuF07T+4ecYC5n!giE1j`Wa4BH5kqptQIRl$zz*+-rNB6AC{ zW-hA31uGn)x+hS&J=G~n(BrGnc(7x7|)sn@}+x(>mN*SAYN)e=Y` z9ofNhrB~M}FksMHN#Qtw|f?H7CBO}A~ zO(>4E5w0}`j-eQ1uqa?0ylt!*1=3R9-;z5b+CGhqP(YLJ)JFapGEqB(y|IOZ z!>mXr)jO#|>O*B~%`C z#`uU55ua2Vl6$_hAM~I_96^CzP!x(2O@AX;0y|LPQR55Q65{zMudN97kw6iz;3g6* z-R!;G6d%IJuZ+|xNLSUvE<1@AqsihT36Ci#F6^wYYb8}S=C6vq53SsHjG8C9sW1@F zXBodHh%Avi@gD)u0duQTjHcZAb%xF~%Oc_2chaZ42JvG>Gb*T2iYwCTj%kbpE%oW+ zhitQRb^C+SQO8Fk97z~e?nDr0W!v0PUQ(4sYra`AaNjZ}KC!AbQ`%bie z*s;{3!3}W|bH^aS8!owJ<)-JYZvbJ=@LHItxG`m~U^#7c!;9NnC!?AvjvC>U(_KhB-sx{p0Qt~BNtA{>Fh*`7}G$A&FACtj-O5i;u zOo9lw{0xpxH_*zWuHb~+ustNyU_S%QceVN_ocT-VNPK@FI)Ln&_0(e6Nb#>iB;Q9B z^c-rxO`-TT5`dqeK57bZ;<_leY{FVLs3m~UldW9Wo8JWGvd>1{I}8=#2W%5|>=ce3 zedKfb0ASfy_8jpWw&7gtT1O0VcHn(lMS5Szxm)}BchGhxT|6(L06VC0f0&9|fByA} zCnT~60AZg61>1n+cOovdHHgQ@-URPJ>W`+v52q zc29dXsl^DbrwwcE4Oi!00F4rG?O(K;*SezeSeM6L^PSIkO_HEcTt6HvK?~^93E+OY z3X+TKlK*&O4qtaV1%WGXg_alyQG%Z^V5AQlstfd_BLS~8Kv3JX*o0a# z>EbXUA)&2f4A3y-=!8SKg{cze61&5<7&NUztPO?iBxD@G+jHtfs7c0L`e6xf4EdRA zGYoTsQgyNiah^~;SRL(YqeJc0Lv{pvD(v8^_-q#-3pqQ}?%#~y9k=d9! zV0s(-eSehZ{jC!JS^U$NW|ygJ%+M9btS&Gco7!7zPx}wCju%QgT()PgWGzN`w80g-B*>(Co!g zKR{PR8Q)b}9@g+eyNA5^7p=1-te#he7^;L&&`*6i-r2f6#^@(rAEPIzR=A9|`R+o~ znB(r^fo4R*i#bfTS1sBb=9*WKr}~;#k|$@xI}`6Y96KCH*o@HXJm|u&`tMXJukIL% zhFWg*u)&aqm-Z&@(2rC^HL!8EUA0<&UvU;BhXZuLIqCR*0mfSzceCGeolU-Zf$^W?>;54-}q05jv*i)2}j!x#YZZ;Vew#hZ-{?r z8@y4VMb{ip!JJN4N-JREz$%0SetSk>96rx~f0I3KAgP4Ov}v&?+%VU@{A@5PYxG!A zm-@hgj^5ajX=Of^kp0(O9iEu|p@&?kU_wJYSzTs?uJCG(To z(xXyBLD;yM0KELNsBV+W4|^AIK56FSHOW2(ab)&T6>^c+N@zcq8io((GD00!y2U#1 z>dc?j>(<_hISHXnVv1OLj4#e}3GQDXd#IR~%ES!wW?h-TWBvCX=Qa2ql<3qvR*k7r zi;ouTb59!lx2`eEs8)GVp%l}krVn#tgLm5oR5&aNL1jIO9crzdUZ^t_iX3pA_o^&U zlDI=j32q!e0atj( zt%@U(KIQeu#1LYq2!3zn-~&*(GgKqW*gfVInkz!_PWz6d*d5*bRu@}_&mT&#I6etd zs8s6P?KRqUn2*}>6Utkm+z5pt{%nqo1*mI0rw37ZkkN7se3{g)B_?$weuQ=a{2KW&~KN-mZ$a)X^sC+V_AJ|SH zh8t=uS|_Fsaa;jKt;@l06qYCW5`B-~dgUFeG`5e)dDDRTpMUIypf1((t$c*U{#0KET*A#46f;F1=01jK)(B)7 ziLtR$3S02rIf+p4WDml-qeWbsVTZT&Qg^0IesHqhY`~10vEDEYyZ#3MQlbE?8Pc1` zn%;4C&#&66C(25pC@Dtz8!%B~y=8OODmySn9KabVZu6gCDlD~foY-kz6t31Wni>z- z!r*273Ow=4Zm&A}GWAlrkQd&vMwC$*&wn=(B3NVtkL1z0EOhS%uy^1vZoxJ-I#sWs z2Ql%120dBKka!f}FBAyK*Ja4nQOMnDx*6dal9_@u!(9TiWQql5@m>;9pZmBQ7RP`@ znDGKkgOU_`XyHZM$szTv4us9=pNA-8{YIjfQN_BN!VmRALnPCzalh#2SJ&k)+>b!F zT4d-KLSHS(#zybo!jz_b+6+mv=$pbi^Gq-I1e$KoT+^;5$Iscbc!H|2@`(RQDBejbMuWFAg5;2oAcRZ1d5#>EAy(ddoqYz(?%s5mBcp~-d@V|XgyJL8} zE6{;Ucq;IE?)JMQ$d-9qFP)< znj!|m8t`hiGB6ZTYUrj|69XczJRMarBJ_B=+L7z_KQ! za=IAW+Z3;QH)|C+UVx^*%XM5E7@khz{hJhbsZ7@L5>5R?Qol0F#T7ZQ)2%ewlfK&Q z3=7+(_Fwo&9SaqV8s03)zoVo+6Qw>Q|LdKhiRb>e_>9WXBfkrcmFkqBVp%idKKNhgsUzRE&WR^iZy@G6?9R84moJA)qx|xLhLOSRJUH?HI-blk_8^^6E z>K!ANoff>R3xT`;9qj&t=u zh#X%MB_PHqx+pouh(EVF5Bqu+t^A;2I^@cZ>*~m-weRaXe|hbAWg^&F3-r%aNlKsm zEL%ObAnaR2SQyuw!n8S@x4V0zYdrVdm#D2n1Ha`SQ>(>?KpvIVl5VQ{l%;s~6zf>7 zLNjWc^6$KnR68O?nDy$c%R?ceD=Q5E!tSqqOrU(K*|*J=J9pORr7Oq=ag3K+y#I!R z8)kg3zmq~7Ho`ziTyQ3YhY|e0c>7iA>ClTIaG;i4@RSkiCfRgA*jbyXTxgCFEk5eP zZrx~*xwv2_eaXN^0kR-ETd_*2atkXWJ$Jx^84wLpMzMKdidkf$$&d}geY(~*9?JUB zqX<;gbi}cMa60aQJfj?+G$@IOmF5P&f`pxoZVu^Tp8D-+?BHXHCd|$V6Da1`Uy|l< zYDO$wC_?+scl6&v4Zmpw{1G2i&q-zWmt!V)j-*RA%_#_F{t3$Io8AvS;@0zj1AowV zm3fhI!!%p#mK?8`YiW_|RaVs@c&$#0sEQ9MD0;QJ@NX3I z!kR#o0^E{t+;oXA9HZvGK7&Xco5arF7&x8iXIW4$W(W9z7Xdc-kreZ%GLALV!T{g* zlRa)v@K=9&MN09FpY@yp90Al?N=iqou4X3@d24qw+6Z2=3gD81#v_WTMk9LKLV6wU zQsruc@8Gj!(FeUFme z5fFuj3JSVa1Qqu;m?Te&+Ey>Qs!~}~3e|5^aRl*B_O$*)dBMq1yrf6wT5wr@DtL31O>SZ)ltSJ#gVw1mV>q3V~8u z97wXEhIa_;eA5ttjT$vr_oA4lT>OY3*GT3b@YdCYpZh<82BW5=Clx6ikrIHdV5n{v z&@3}Fun~ZH2<=TSW;Q#`1}76bNt7%$_h@J>iD0o zW&htT`2V@K<$s*#{4XXnIlngS7JecNWCgDV|0GEcl?5PZaG_&vE5#s#LZSAqrb&QCAng_+H@XHVONfAIt+(Z5tnqBWyeBi(=hm7H<5|!vaqv#JwepzJ~=xuS`*8LW{d2k2bvd z<2@DON$;E9rHKoC04dF-)0sR6=)Levxl!-J)AU8yU6XX7 z?wcFvn@&zVE&gP32T=};k9}gjIZ!vpY#Wx@*mF2yy<`HT>EIQ=)1*UBqKcm(aZrBB z4U1pPMT|tHq>q(*K5s3GXO5@)9+q&;tni0WKnU_WoZX@2H4$PYiecxNkFATw2=-oW z?|3tVd}tF-&slOoXhKw@q)J_+a%Yb~Ru4TDEn7E=l@*K z{?FYU{@)66HnlVP^FK58#mRcV&@`||{$^b^kW}RxXd^G~Ur-iAsn$oTkb!4$zJiw7 zc4;?+Ib^$VHFg*lt#qAg%*xt#-WBA~xRm`WS@|ONg@59q%0N!!_%)ny*eN)3^O<+T zWB%9c?+c>8^k=#RmRqwK>{wjZCMaz4B{DW}ERjf+zQZbQC1Z$-v$}zZ`J()0 zQ8$xsxd8vlbCMbxQS-C|Z?bJgShme~E!LvIpzd*SyN+SynReL;-Jw>b2GR?Yb3|K+m)< zvg@1`g)HPkunCOuI7U2Vp+`!8j<*!s-Zkl{t`7g!>JVy~U#HR9PPL56qPtC)XRg4r zJ=ExN&MHJaCncS=@uT*V8jvcewJEsHz;WS~ju@`Y_ERE6KzurVO>^suf3m}FPRAT1 z4*M?2?AaXjw(hk0jp5?=tr>4{;#Le9x#RT9vU@S6l$znhF|+M-BQ1=fen#VR^<%?t zxN)0+C?|q1)qN)DDahEp*Z?LL8v`+RNoEh}Rr!6=Ei47YU#U4;nl#c!0(Wz8PTEE)%pV?U)^Y6}m5Q1? zDh@|~S&R)-h3|AH3r^o(x@}SF4#F>#tc08-7WEL`nB+)LuTB$~&?-Eq27cwNzLCQ; z!uva3q2D8*YG^xMs`AyoP@_*s%D#{(z|U~DHpinmglE}gzR`-g6i-g{781#(P$*!< zHX4rszHltviWL@N*y5TAzO$Dkf|pu(22fd>Pq~rshIwd#_U7Vt2&fqqp}$vgJ2cQR zVZroh<8vybb7H~dVW_V02LJC)@E>8IJY@pO$^R{u{10EV|28!H|6z$NHA0#QUX2|! zeJ22yq+dSrzp%t-b2ZDkufBS!oz@S6DFz&ss8^E2?8@JQ4B$_HwK+X`iGSn$_wESK zKkU|uI|c)4#fo~bJxYykrK-`iIW-6m(T*25q~udzWSYzBed`%P=#&s?@Y~7dHUTOk z)jK&@OU!kYZ@nx4T8`^ck#vC?ufly&vOiw-p|u~o{Ghu3(d%X?U^hbC$vF{MAYk>1Sk89AO4ews$}dCFjrt4t^PGRTA%a8jR0RG-9kf%gp=C&M2a8b zJ_^S~VznV%0`{h@g_+s-N1%?!C0jVh@Xh4=!G<}0UBaF%xjoBevu}%+agTN2;IC=o z-kNuL&UZRAwC_}9n%Ukn*#*!&-7;n|3r(2#Eg?q}Rv>z}ap&a9wW|ZK8`IoXk zU{G6#8_MCwkRcN@xYwlJEt=VU~p;jADw+LxAFuGiIdted@-tSGGNpIN5C6!SlV}8Oa6rcf1!wf_99ijC~5cUZ9YdsW zGU16Nhtj88FTCimqJ52g|Bv5{CE~g>P9LLu6|!S@Z06gRKo$AlXS40E=ap| zFNJqQ+QoFo)ATZdlVBW1$&`#QKf`Z!o`2?G5Bb#24yF*U+VJZRrQI+`7H;la`M%ar z);LC43pj*gpJ1+7?tA_x$q8@J?%S8_x84546ycqKW0cP3coU;}05C?U)p{SX708A~ zi0bAsxV29hw@P;H67{jU@7wy?4K@P&eq zc0WRNZ_4CX!Zq=>r!0Rtfx+;}AF#8YfBZoww=m;AtnucA z`P+9otqV7I6#DWAF$?>ViTy4!bOQVDvaY+_XQIbFUEFIk_h?-0NhH@`R@*+qookJ| zWakCSO~gyvguVNd??iQw-5p=+YcGSKbJR}95Ygs7nfzx0iT7nd+F+hLKyYuOH1m~h z=Wjto&vC!?zJ2Cv2jzF)!sjovzxTa(O(wzf=9}-?<)49bpIkz|V`;Uo4QWh&9i#qQ z?OV5kBYFR{W}IVysIE=+cD$pAa`cL2B3ckP`%@XHgS+rfOH<;UbUJ~bDeCF82bVE{ zwMF(|(oN}QNg9{u^>89M*@2s=pw*iuBLBQ(f+C_$-_+cIX}DQnQB^~~ie0saP77ym z%UBsPEMkf1Ew9RnjK_i-DtyurZJt0tUb_=xo06gg9fzDRnwrlD7NQn3Q-Se1*3T4G;UrIe?t#6bT%n?a-nvrm z5`hQ+?!BKmU>VRH%Unw#WOuBUifj8O))j%((Ck1J1258Pj(J$r2i)l8#A<*hy{_yZ z6D~;OJ0*BS74sw<0=e^FMT}~-mfBpkZoe+;phrYv=G@aIIMNunycVPcnz~B5%a;vk z7^Fq1QK}Fq0~@EF_yfgOw1LSKlE|~&d!r>v^x4o$B@Pt3+q2JN^xS;H1)TsIlt`WE zLVKQb9a9tIM|6QyPkD>mFi2Q6b6DTAeF!mImTO3)Zg{V8*2slb8W`rEt1*zB?a{|nN2%PhNQpha3 zrmgIN8;`hosRySLN{MUS$=y?yr*N9Y<*s_{KogS77Sa9*ymOG3`89pPsmR*3Gncd? z8Sy=AQAHB6!Voqz0oel9dCeVPvw!X1lRN1jX}Px-xqeostty-!TSMlx$e%O(@+KK@scx2hbWs#!Un@S8|w}oVp5* zqJlS=?1(~74K+*ZB_d2tToEL5RxPGwm)YtK0mr~(3>(%I&LR-8-qkQ-AroVf$C-h+ zf>-Pg4CeHH8uTr|CG0J|QV@4Sc25)4y*-SnDLpYUn5=$?Wty}Aa!u(9nk}qbJxf|% zSz1yTTcpRp*4A{S4#iMgW2LcW z7fc8HgXnNaC3Hy^gQNjhBm@89SytL≥CG1#JTCxP=S2RA)II6QUrgh(gLms z{>UE*>?YR4?)D?flg!%sVTJL3VIp}ydl;r1 zIW|RVsF;yyU3Wz0>d*2DghtIW#-^?++Vp&!A|< z1QtFud`Fc~My9B#!ZS=%tJF1tJ&|GraO>(A#*_gaMb6Kwq5Sjs3M`uDCKnv5QXp&p z5k$d!yh@75JAPVyQh~BQHP38W`C+L5n*_g}PZvS}j2@OVo+QrnX4C%aWX-_YAnge@ zreJq)s>Pquz6JGtHWZzfc_0-;EN9c>Lt;u7ww^d8voom1NM%v9TtMI;glgsq!`H%RFD^)8=R{i=OhZB>e&BN;8TSix0MREy6L3 zUZ7V%t5t@0Ty;NCw>xZn;N9uMFEg3{UNggy+&6ZaGV#rc~83$qQOEFTX(&2@Hum0fJsl}AA`KxG8(6h&`yUAm41uF<8cPn&?l`2v`r!?W3r%rt-GPN*|Y zCSlCjA8qH@AZjX;hL)av;DBW;sGOAK?7`o1286mnM9?8egUA&h6dA@fdm+{Yq+DOs&7L%joPw|9#x7^z{B>nSrhTlgonRru zVm)RfKRss(A?qMCxpcSk+D>_L?v$HdJArltO0ctgbUrijgxLz|a6y3S#Dusg?uQwN zI=L{UWETU#MC|X&tXe!0@knIEsz1gkF$!9%*R0Dx`XYX8%>#|JfmveA&(1M|f+bM- zJ?X}KY^+ZuS|JKU;ALp9UjPa|>j*A8HJhBGxvBcQhrPl|R=wQ6AsD(#!HL@pQ#NX# zc^GwZMY7eAdE@sJtAb>)-QF~P&DOegH#D*Ag$(TPjn`&xZ_NvIOJAsL{I6kGYg+BzypzumowvGNF3 zKDTNjc_|Br?yfCT|FUf`&>USrJDw<7XlCv$Tquk9jilm8i z0e4f5`Ykr>sHZmi$`P)LWSe>oS!Z^nLpwjl3km+tfK?NtVp8daQ`bLxji4&w)0{Il zcCE^Z_{}nDC+IAxR#VOC`6IKneCbR9T4}_O+J|Z#ordS8v(opGsw{;Vmr|z-Rry@N zL^^r#cQ<+ETG2$c4gPfEhVv)9(2Ao_R+^Qxf?CzXMT6Egu>pdi%7&EQ2u6O$8g>*X z`bK4C6Dp&pu#6{VTBtdpX>p3k_Vp5_iwEY$#Ks+>o^Mp!A5I)Fk63;zLz$UIH@#e{ zv8La|Gb@J*divqcR9=4donlF8=T2#za!F|yulb)Xl(n-*DfhGlL_frFk(+oB957MgY{sK%>S|@&d zyz@EF={(LI<=iv26qyL$P(q}=5J%s*n)Q+lG3ud5cGGisIeXOV#+yY)XJQm{2vl~E z!7J6FiWz0dxZ1)q$Ssf2rLArgP9t;MFyKZkBx>q0qsC@!$YyG-0m9i=N9QAuPgTx( zX@d?WL^f1TvN>I7w9bw>vmZFiw~*LJ&`27peXKH#Snez7`Vj!MiNb=LsBgmx`UG$I z`RjDp>FU_xIw1Wptj?0fg12 z@1HnJ|(0AG0H5ynkU*{Ogq7^pgFG__juIkSd|ru^Nfg$&!?4_(z z<4vPGQl=*HGpOd2o72{6Q`HcF_u)gt0?W{Ao(h4Kze52t3eUgq=be+n?QLYrf`kZM zjqo|ub6Tuj-9D6bk(SD#!d@G!&I=QijvYDSp8OY%9Z&4+m4-hd(M0cn>p_mTaKoh1 zSSjPFZMSIAc!8V^gN6eW`d(arb1AcsM3<6GU)En3ZOrk3>*+YH>urX?E2hI4B-TAk z16g&Ut*TUnh$D(r(7$5PIL(SFJ%}yO_pIMH@XjaHITrcSo)J0{U@6Q99iw*ZcJb-2 z_bTPf(ahiQ=WT2iy28JN_|)vuG>#$H3Jzj{Z5jB1TxAvyGG5#lti&x#1GP2Y1;@KK^cc_Sj)NtA@vQK=DX~zv7 zoux6$X%LE>T>9~CRI3`Z==s*k=wI?4mQ163!BY>G=(Rwqj z;q7;%)kPE=$Tb=$0VCh}8WN-cO>rOQn&;FL=eN2)xIL0ZKNYT=rdrsb2g{17X0%kb z0+=sO6Y5hCV*a=sTf!Ns$~OU&Z4HtM_q;XNd&|#9ohtl>N(`!aoh8uT#^VRd7ID%M z(^VvQ99c&~o&`8gLZOnB%A*MfGDp{0TrMSk{XxXZ|-Z_V{inJ~B=o0c) zSRX_uHI-{!Nw74M{&{_{zpS<97M5JSkCAATr?d?{DFJ@5r zTyWi+k>w7j@OmjeNbnIY1>`%==I4(D_%*>zB%sC<-I4i|D`jkPrQKsM>rfaze%Qgk zsw;fxIk3 z_V_3gJ|78hDZ?5!F`}ul=U~as{`49c5+_k)5hHO9{9FYc01$qX!w9$AhjNegt0#uo zMp6ip8j(*bNAITeEGGKPN;jILklpXni+2;>n;+mOeKtyk0)MwjcmH-J?m=_@<&H@W znJdngE$^Nys_mKEU%u*ZW2jPNgJR4&-(LiJf}1`%6dV!O^horLiLHiVL6#7_Rg~?8 zVP>l&l3;)rZD{w7nFd*QC20}l@9(2jkvpP2V_N*kjabf+t8=uO*;{=8DkgafLeoVur< zX-YX|ln!c-ImMbzJb7nHZ-=URRPsuPFzaSY!Z$Gxk-NjI1m1BaQ4b?3`0m zc<>gSiY-dR=>pxZdVkr*jdFN|*&1BkXA+_C$s{V&*c zK&=6il>-xE$cGf;&B)lTkFMMc#-lI7=MU>Wl1)&rJ9u~OnGnfa8F%#BP#<@uCPO~{ z&>3OAZuq!^i(Bw-%-li6U7Alk{%Vs?$W!qLMK#u3dCllPkHvW@*_BM!w-XZ(V2Zr2 z1+Zb3husN%dIU{+zlZa~lKmfk|I`N5BN|XJnxp`hr4Kb|bVq~^NUKP5Z~|&~jZB9* z4;Xa=Wu-s#N$hzs(&lV__nnyBr8PGU0B4<5K)^V_^lcNCEJ4kveKrK z7`A$_%7auiCqj!X?Z=ChEz^ve1(j-=@~%Lg@4^o>L^bH{wuwqCVaVX-RmAbEY zZ`MQM_63sh*pmeF7k)a3Y1io$wT4PzCzuhK_3BL&af!qN^;{S>$cU9IOn|5?^+aW+z1ogf9I;u<8zY4M6avkP`~{VaB9$5UGu*U^-AUGsaAq^ZW<>221<$zBh+GW7Z$I!ReG(&WPL$GdpIlm&Dbf}b431yrX?LIf1VKA7nIRIm}!K8k*?fsF04QK;y~FW zvu94QZvrt_$F#0OobUb|6kr|=$k6!H0avA5boLTUW%5F0-3C_Y!5q%e(^i&1J1$AA z0g6MFAhF~;DqrqMla$1U1;?x)P`gfqf5Jt@Ob1JWi;}ey#LE|?Hr?`_MXgU}Y(xHU zvyutPF;BZB!dl@hni8^3u$0tnwt>ucA>3P8j(kUqQw})S{*~bv9e4CVsF{+oEBwgm z=|-nLVt8g!1{t!rp~hRC!K#JP{#P%YumXg!Thuv@-eDQP#{A-Kz z+&?K)4G*H(yrD(dd~NZbNdBIy88o zQDu>pJF?A_zeP#QcE3PxIw2i?$f`9AVH(b?^gMsaBkJ2bF%#qgXuW$vY+kEPlLLmg z70^eP`@N|Jh?adI6?E(_e>vdMykA9s5Oe^#lbzqDX=>)_yG=6yOUakc>!lX@Q$@b` zt?>7yz%DI)F1(-)?cM7wrJpplI{#MM`ZsUyA+A8@=AEo9*q6&EtV_!PuQg=;v-YGx z2YV;Rg;<9`A6!M*awk_0RL9&mjrnvYS^@*A6qYsK}dn+>*UCesZm#~qG4LCmNTh?F*ym0oR?hM-mp9yDxNS;w8kF9XUAee{F*3I|WbC?*wySg3w*OWTzhK%umed zkyb<4Zm@@2z4_S}1B7lQmscI_Og95OUug6FoBxNicMP&E%DP1FP4lL0+qQAjwr$(C zZQHhO+qUiOtXJ=QRnd4|-4SO;oImHsnS0E!)|zXMIdn<91jQccHbTAgFs~3+!n1$e zbI`m3ynUBXzKFk|w+6fWac;5;wz6{}d4@4Rnu++uNBt&ASPp|u8BvlU8S9YgekQ&Y z9b&?$-?)!uO5)YF1y)Efb4t-=lH>Jw9Yeo@CF7x*au7?gdBl{J^^o~LTI<+u$UAo$>WE+N~qk|Uqn{71umCrzzNk4^S6{?37mN;o>ba*w!RLSYZl!uohAJx)EjIO z6%8}$AwM~LDs26s=3WG_--?o!z9i~9rJJ<)Ibo#<#h8AS%Yft=969VXiKeP3$y+ImDr>~X(Kqeu5>AB_is zAF-JynL3|qded21If2qP0I>`DC79?Nft|C?N1BJd07hEz zXLBS|gKU5}cK5d}03H(>BOQ|6Ama!EgN{!MIN+cKD)CVdsqF7UJ?ezeS6a;sFb1JQ z=+{-`Wutxl6{!)JeAEwH#Y2&=c_V~Z>(o50%!l{s^}0A5jLX}LS8u%rlAHHz^h*e< zZk>ky4X;^~X?lPF3Fy)~Q_;pkJn21oEc!XV_Z&O|8id7x2&7Dd0?>si_`P{VV$>Qx zBj3i58P%0PG?hh#E^IRp)v%g8<3OF*Z(%u=D{2P5)P2UcA`rXya=yn4144+#m~yKl z_lTaT^OJRj<&dUj$}m0C45QVTgo;c?ydU6$bXc*~?C^KG{9fWLG2Xwm6-K%PXwv63 zb%gi5vZkshq#-}@#HLW;cRuHOV(tKM&^x~ieT2-WFQUH?Ek9RELcvb05Z^+DQKg>g z@Qv^mFglj7Q?~ght0$lb{~jD^^=6Z$dLVgQ;WN%o)Yy40b%_u&G_M(uEyopV%T&zN zdeuy{df__7sAaB>=6%HFL2D&w%MZ-Xl2Gnz&y#$NJ%D!?WlK;_J3W9~vlhisFo0%X zr-*f(YV@e4{@oBNphj`dqyC%(m{N}lsTdP9NG8Cy<{+peM~I~Wi>2V;Gw=x=;Xv#r zf`dcGH^-jfJunjy+{(|P2@R2DoqmE|2Q{aMYmI_!?LrWInE)cV!+^l%use8=h}t*_ z8M&^&zixd9ghMlbeG~GUUxs-i@#HdYttQ}f4d3nFZho~^q(E$r`R+>en6so++mI4- zBmo-GObW%}mm3o!4C&BMoHnu;Qd{xhy{+zl%g7o{au20?cI-peFNeH+egQ>Tx)v>b z1?zira`E37OwTmDvY(@WZoW`&Cr|*`2C&ZFyD#rtLv|@f+9JYu&Z?DtAIhp;msctC zN7bWg8SFbJHSOBR%t&V2`H#J(Pms#ZAg$|85K0 z6Rq&JgoCW2`sGG3t}QgWi4&^V>m6?ANKs9mqHm$gT6d{|wa(iX#y11rtjn1;Fm1`?`@dxlD)Jw9+YxG z>%t2|v2cw;%NrV?{9Clb@%LT(M9T7dE9*5Qo}>ws5qvSkcfQ;QKjl9GyLPY=@&39X zjmKlUN>!YwVioh2_f&1i;h6U-+a9}ctpi9jM8<6+`zq<*I6%Rqb+bFcVffv&`6J%* z(nn#?&SChk-WasHUzi4WDmmo9ifA^MNI`Q3fxD3TeK$lX{vKPD-V`2<>2h*j&p3)F zu0*i36i(VHNbL>@P)d;?&6K`;c2E&<+@$edDU^V;B2j^^brW{I`6I58E>buQWV?IjKSfBqik5@JJgV4Dn5%?eb_ zLN&2+KHSAUM3jZH1M*Tc?lFeHQO*2?lL15>l+qK-9_Oh>yo&V40Fq8ZGu*H<4Rdfm zhNju)`TN(u8aMyZ`&$Gnb%ONM`+NTLi2fgp?z8!6|2MSKcl}?@cTJ3){Bhw#43vg5 zM*Qx{ZgB#ItaL{}K$4IMA;zarF4P!`%gs#qpPWRi z+A4=-AA!6RC+F~i-MyHtAb8`EX-t3()AJ0aMG2gFW7C|NF`r_l)$T=7WJJ& z)+|$hB;wqWBI@;h^WFAck=o{LTbCWo<%+T?A+=t0K*WL#XX~pQdLF%%KgIXv#))A% z@l3T&9#B|dh!Yv1C1kmbnvwT4b7To|W%lZaaF7y#$5cR72nOsoNge8EAexTaBC({v zF77n@wn+XJ`hSdj2TGx2(FFLB@B9cbc>ga#|KB&vRw|lHBk&=10*>hM@xj*Yy$>Qc z`lCuF42ZgzAb14434JhL{JD&|v|wPcJkh@Q=jp*Q?8ubD5l5*=u&6WUu%BkLpO!NA z{(gOh{H3&82)f{}2&3gvBdpUlFo|4khh~Sy2!ZE|#M6vX4sWQ4oWO?k2m-A)XiD_Q z9PaDSDapG6*fO{a|MdX*4v_HY2Dfj-Ou8YlIDZnD1o)>UU1=bkV?~NUd9{SC>6445 z3EX(m=9-U_=ASicVx>)rV-{odI7Pu4G;vErgu8^fB2jS+3K*f%qLf}TNu90f&lN5` zM`41CK;+0iuNfyYUH7=hq3h#^=mH9wVw-siPaZ?oP6vqO_f*A}Arrc95AV6flAvla z`PHhtOt%B$*lswX%_x=xxL``!m5X2_LF10*m~-CHvQVVUV{1p^SwlQHv*^L+2MOu{ zhwlVL8bObyM0Gw8S*inf(IG1>7;F_7+s;QANik1M;*+Y=Ez>-X!hDW^wYhdUvlK|S{fZcGIDW6{uc ztG~^xoUtL9_musw-szS58eI2*z#?{-AoO1%C!=&1X#e<}^ac!$|6%w;qC2*S6s(LT z)gLivPJ3=Mwd)vuU!!9SXQeXHCmAe`Y~5=a?z~gg?~Z)k4;T)!8{0pOoZV9=v|UL7 zN`ai+$8Z4zIPea3@b5mo|7iEd|J%J$@B>-y|4Y{R7jz{J4NP?%eon~x7P|KKg;8{W z{CHu7zDeuM4v{VzY%edNYUfm3{2ZPA#C?b;Vs>UJIemiZ{X&(L*ar>n7`{Kfy)~?V zC82_Y`Qq^zSX7Xw+N4@$Mi-JNaMw0C5;WdZG8mU76z*T=e89(+mC!#t2 z+`N^-a>mr5gp7k2hT?^PlI5O)kWjCX5&Yfv_Q%Bd`8>m~j9#zb9KaXIHN`pSA;U_& zw%)XVS97ZxTyY=9MHtBtl17>NwvcHU-dmaTx@2rfo5~T7x0qDxrE8UJ7H~GCk=;t^ zPEKsbRz*nGsAjdyku8*LzMQ3y(2w;a4}(FhnHUaVOjQAkN=Ji)xnunNcgF&T<}wG^ zHKh@bczUT8iQmKIhj4^@JwQ8CsYYu2;;E94|5HJlXH4%u%%Fpc zLvV9^{Dw{-dj`>|u{qIZ1Ay{>OS_eA>XNChOR6*9nPGeU!Wm<2S2aY4;Ce8Bm;QcT zpRRs}`NbM+h4iOvMt25$mIo|+O`29#3XKZ_70T_iwiXYiHpc#dT-DZ;@=h6nl3)$= zgIc}vT7#aIs2rRffe6(?jad{6gN*YM&7riHpU_W)KiK1}at=?mq2%OfGXKxUKDqGl zPR+9SS9x9Oh9Y9*17_u&=$Cru7Xlh7%N&C|E03I2h?E*qaVBIRxKIbPTTx%(q+F|? zi^LwRK7^kdIi=WRsj6CNGdaKA^!!%??Gq*R_|9JTHKbSg>yRVJ<)itvHZrMa;BSBU zf_$Z-V16{8mdtv9#Rv|Wag|`gjk+R+>|8)~a9};W$Va#gGO1>S zWTs&KT9P11yFQ>|j?vb=qxUZrJyd)s zI@}0^TM~6PDt8R!Qdp(>*QvGu#oPy>AFGw6C2-^IEXj$>JJLq7$jN*c0o2BbN>i|T z((VujtxWmQ4ukOWG9=y4V07`)OtKEg4|`&XG>&3&=@*->uqRJ|Tz_Fi*fy}VfURMU zlYa-)KlVIHQJ}@fKgsR$liUpd@!yv))i<=V|9^e>5@j{T0r(KP_RGqf3R68x_=I3e zJteM%X!xY{V3KC`TmGz%v{CGnKU71+P8B+xRWcpZQujrgd6G?s&TDL+ujXQ4|`qe(m!P>4$`Fbr7-JA-X1RW zIv)sg|7mxT4(Z3)mec!Oq=|K-8z^YQAz~#rU+{`#0^Jq>!7Sz~(inD$RqQm&RuB5H zJRv%Xyb2A-P7D=1oD8u#o(hur${@MolQHesy-%nfno*t#DWC1{b9*!??k;gAtyq^Y zJn8hkEIbDzXnX#*ib9=pnim@~mwt!Du74wff4~+MZI{RJ#|?t_&#zz1|M7d16#TE_ z!9Nk(spS464@Uf^IxtlE4Y(pKbh{V?9MPzByNVA}2!Nl1*ie~nFj$zbxv?QwbE$mt zd?N8}Vw{$naJt_;^&sHrHnnLGPpK|`83D-lyk$TAnmNpMOz8dfcwhZ%YQLP-2q8s$ zM++X}D0PE}*8ndRK_x<;EEEVi_1lq^034wc zknJE9F^=}80npq9Ie7Hk4O9EZY*1EVMv0OXHPd#Zv7#&YI2%p1zAkZ+qbin)J+RL3 z=L(MOIt`=Gw!S`&VV9wbEaXRREfbTbx=i7=GX_uQ_L*G!Y%Y zTp8SEe%Cq_p~+$?zoBsR(dfC6{`6@Bf^)ae$v`%b@?`FsM<($M{oX$I$NN4gvMEU| z2X{3$i%Gzx2{|H6l^)AI&Fz%`DA7?LxsDG@%p@%5Xq;_);@r;#p=~D(uOLYADApi> zaCKtPn@Qfg8d<qcxR<``;-I}obibmkUr2sMo*zoW-A;eW3XowD$$_O}$3QX!^`$-Wkr?CLeID5{ zn%9G88K}BSuPk{yaQ=Y`QhrVIX%yq;)oH#mlBh{G>B){YTsxryhxD)QF1xz`$A|A! z)=0E_cId6uw@WcgC3;e!B!7WW(2(e@nECs!9=;9gxl4pHo zL+xkd2SHnaMmBvSVw^D*(>H82F71Y6g$g>yncR`;Q1Y1;4W!S*mEg=(E)&+4N6(-! z`y@?Yi;54`rCyWdyABhq*%a$1IHt4|-e}KWb29K#SvSEgF>EbSLK7`9OYlp{6dg=1 z55{M3SX&?+i5zV(GP|Ldr8Pa!OS9Wv6QUNPgI`LZ70DWQ$=w=a$=w3iZBnPi(88pz1*P! z?j={ZDyuV?Z1XdJ2+9Ssz7}#p472gy+7xJ^+J-%O_RNul@pL<#7s-ywj``!qZ3=Mt z%*Qhz!Zc$sSxKr7oES-bSW?Z2T(*Isz$}nx9Z3ERoEV-vwx3c$CLPPTjYVKMWnu>^ zg81Q=&%wGBv^^{R%{Or@nKJA#@we}emPAy|iDn=Aa>oTD$=^Ol0!uZPHP}3JD+RE* zG>)}^L!r`LfD_Zfn1XRY*8?*T^PM{9!?EN}lZ@$}NS5ENS?;;zb`iMwf#P4>NFtQi$Q#)>F+nuK<*vf>;gjT! z?wpwwYE?IG?SJ#~rnwfF{lx<2I)(X>pzUu_qjWE6n}+uyJ)8vL7*s?& zl*_r-o~4m4L1CkaUq|Ub+)s8q&5q10zaOQHJp%Sx5w82*1@JX1>JnnB(kZSInFh|mYyLAT)v+!2|SfS}rJUm~`=YCJoeHq^pL2N5!5*8Ugw9tEX1xw5>AL6w+ z)>6dUPuWF@?h9uPiPl@+IubFLQE~c5H}266uhc%d&YZi7V*r7sBo9x!`V^D5leR)} z83KCIb4y#bIG1P?d8jQ<#`I3f5IOr7FDaH_KUo`E%^urBuy>uNM(oyd~x8fJL-U}{d~jJMqxlvFZ`?~BKy86wi; zX}0<%KuyJNoielIs{eA#y(TC{S$Em690PPDu(L<^wRfps_xH@aT#V&Ee%j~km*#@kB zXMA0x*=W#1qUcYTqOCPOh9vXGjc|z2pibC&XzZzmfIY_LMXu>4?4}+2&By@sI$YK+ zF?c-k+(ynx_!4?Ox9Yt9@U{8O##XG-Y2a^a2+6rh;-=W@q;H4F4MUsnkTZxIr&%Ly z#<8Q-QBZwtV34S6Z-)@vo@hj|KAnh+G~8=S$|JAs)=3XXzu*4yHt63|JuENh=n_8u z=J79Zju1sRu5Uf}P#f(2Wj(6D2JCIJZuo=hWpF#dlEIF5=y#D?#9W}O5T=Y>0J{i2 zu&v;?#%`EDcwIof2tUBD;J5tob-}L?xP7w0QFLNsjJ>dpULYyqsQar^daYA>fsSs# zyoMW*Ui`N{!43O{Z%}r(RjqzH%5;IV;Hvl&Ye38crm67HA=y!$z5hiK@;?-Th5Abc z`-dVnek^5W{$q-eb~3cHGc_>$m(|z*s;E<`cq)g$2m56dUqh_g3Wv9a!sc^$2O!7> zESZBCPX5}wiq$VON^QkV+T|O)gYbe<4it^^wLrezlU#eT3X~U@hp&RT$-P6XeNP!8@PPg?C$?nDksl#X;TCIUl=E^n_b3ULOitb-8AeiGC=MsslVI>!r8FKWhL&z-FzMRY3md zmaJA`#O^sXcGA8zULXAxsUOKs(-x$YN!CEL7>lJC10$$)$g#GyFgtU z-(0_fj?O%343}F^=_If+7s;(~skL8DW^+;5PgfPY6=-~PNxe?)OFd0Lzms}l3qPNi zykQlspv+vqIt&gzt`9rLq67taE}Bn23E5wR$YTnSgyMM|l8K@x2f)O5mZ?Qn>A z@K$2V{5GgtHYcR;CXrr{;10J>JitLj!Pk`V1Au)j{D|C{F%dsugL-$V^ zq&+eeHN3ITZZzw z+1zY*cbdM^dR;u{`2x71!#1`BNrYmYxVH_D2IlUXvE>lIlR|d3jc$Bbr4(KRKs!94M?b4+mdO6(-cFXzM+;bZH z7R#QUS#o0_BNW3!V+hH2^owuf^6H|+H}v|33)(6vkqRN3c8C1vB#akVHb+|)cexvi z&CQJlB^YBK11$=omks-M%=~R8SYR_`(<|hv)Tr|R@fWVCk#BI8nM62>=ehO8@IB9^b^{0 z@QjaUz8Z8Nttu`Nk78cn32iE#iGL}ifp~;|l)kXAd^(q$2L8*nZ0I|Kor*`GS|_}>?RsPbhH~hTx6@_jW()Y4P6& z+FNru>G;`j`ffD5{SUuxf7bKgiu&7Ywn}FPoIGfTSfK%?Sd*(G-S3>aG2S#z40`1F zv?)XV2#ibc=nsa&j25euF-=|~WjG%vK&+WQ)g)XQKop-lmA*R|fW2lsFQdFSlfF9+ zJS}vvAE^;DFxgByj%y7 zvam@``!BCvWu+o16?qdW3{q%bqvK!XI@CB=<`U0ti_7-UkZ+%PG@b?qCZ{ur;>+PL z+03u0O~+oQs2vFosOK#EYuAsd*5i!H?eC8#4j--;yfF5R=$%L~YQbCLtuXw6a61#> zS^rXDIW*Nec1pG^7Dr_N~R+tf=S12f*2k#6nzgIzJdD!O1#(>2x$> z(sDdD4a(_)iMZ5JRWkQmGje%K_0m?orZ|#pN$8ilPV_!|!*q6c>|BPt68WXPP8}3T zvHDUSO>A;XRwF!p(-t`G^1xkH`&o&@$vz3Q4YKvXRK-j}CA1Asnf~B#RXq#rCdefd zL#r|JZ06!S&QNF+1|x3EB+K2-ew*G5d1n~b<4pU;f%X{3!P%SrZ^U|cIok^lvjIvj zEr_(x7K=Zu4Xlc`6~LoIpGHiK539iIr^`0Gvc8q1xs64*u}PFi7WgagtiA`|0v5f3 z2xfpB=4x$X+2coKHS6gDoxT^Urr2UNWCx<;;Nk4i$doJB5_{IW@`@hKD5no5Xkw<& z7%o$+XwMjfp73RYZ!4X~VAi2RW?Yfq^ssUSy4@rKz;wg;#u~MxhKjydF3AgogZ6@& zjp_oNJ!YqpWDX*?qQAp-v8XeXq*{X_5j+GPvESf3ZPV9t+%ol|Q4T_E<5#Wt#EZ&W z{^Fj$!mFk*HDU)}423yp4${?=4Ci6E!y3fY0KEMqW9YU<4w+RA?cr~&3Y*FAA(BVp zcg^IZkns%;sK0l`i)*3Sap71VlW3ZhMhaWWRe7|YraP`zG*46H`t=WEE zwP{bXFn&V98)^AecKm|s+B%PxEX>36?v*FT5eQa~-__J+huVX8D6afEhe-5wp0L@U zwb@NdRVqrt1OoThX|pK&YJEbRa%?57jJ8ZAIik`z)o8GxWddYyV8lXUfmp6G%#5Hh zb%B12(AF>1LWer-q%}~bnRbhCe|vfaG-Yo;!rd>HhDT;C8b6Xi3(*v+j5HvQGtgyh z^l;EVlLg+}dpWzL-S=&#vWiEBg`ZQ};l4ZUiO2%sWs^LBBzZ=x%3nhSNty}|zAMz` zBq^Gs$OekGJy-=yq$X=Cxqjn%|9toy6+h@v&^5w1&M-;_Mlp2Guch5kKwCs^cV(`Q zz*&|q;I?5Jc94O(J|b6AaT?4rg5FwxVjcX*SYy}3{?d(=UsT3Q!Kg+;d-|OzkznUT z(;~COUuyZdzSdIF!WqZf-6B}r+NoJ7d7~AGtLdCL>j_cc_F9b*UZYI3&AjGfn$#xf zdJ`{c=5-I^&`moPrxkrHlJC$$@(`Q{&7I3olT&#XX<@o@X4&)e zq5q-X|LryH%^16=o1;X#tkk=y$cw<8w#2)&=&K-({rTUlFaL3&K^9}^FZi=rBZc|( zi}HWFVf*K#v;X4oL}gQFgkvPHp*YSu&aDGf0O+V5vL-?d*`%ZuUcG=HqfME0Cc2oo zTFw!_*$C9g9>PM^v?9qlBh$7))AR;O0TeeW+};>FsWq>?jE3wtf48@e>j=Zu2=@#a zujTix_l;v}bnmb2Zch*$maj5BZV+H#x(w?bn_M{JFufYR6aUIQL;=L6miCgq&^$~5 z0*%`0kX<>%_q-O&et@cwPX@imim>Z}ncwPA%K0xU4y8?F;PcwvlyyL$ka2#?nwylF*V7 zWGiy{lXQ1O{6|26(8GCK!s9KRlynCr))mKI3D4PtB4EV%$qySHv1A%;aignIv1DuZ zNb&Ej6D1nZ)3Tnd=F@0>*?xu*iedFZ429EaK{@?Xr$-G}hyzP#gn}H9ANe{Sa*|LvxIq&c~2Y!D%cTbZ9l8ZgG6BGyJ}{iodH^ zsFfVztvSphBd4=i?5=q45_ZgXl?7MK+k=LA>$nM{|PE;J?gmZs6zz;|_inQP-(l^JK~ zhQl_Cn_m|DmmoG9?%LM!surRqeC4-^`$vrg`LoSOlauKU=*2q?j-m}i;NzqxU0%bZ zBVKHvszDFmI70ig=IO#bmA$kEY40SXZ}sN2V?y-SmUUa z%}`DFQA5b79@?kjotKW@#>5%sh15NN06Va9937B)PcR! zQ1&ZDsRGVON+uL|(W*ot_r>?uEj0NF7l zC}m6UCmotfMf&oqu3jrjC%R%yvy!@#mNW4xdaC0P@7*`zlV_Sp^5bjTc-`Kr=;B=6 zr07;H1<~%djZU(X&~!p%uC-?$fR|xy<~D@q$2u?)41WJLCb0JIvlJF~pVBP;L0TZi z@#oisS>pX~*KVN&gkvMdkdLAufemPU3Gkd#>V#Bo{QJzWHROq_VP z^^(%eHg?;FAw2-qtH4etDBHm!+_!w|TTeA8Tkg0vXeLLL+0=EDmOzzju3hD#1)@sQsd-7o&9o>hz7QO(Yu0dPTFE%m+vTL@_vd8 zwZDjnPlf1JjLKR+#HwNf$C)%F6o0sW8}V?j#^{vv5q$3rg++UJ}2D}?QRM5 zbrM-XI$dw_J{zgvJQtf=T<*gF&NccPIu?yd3L<~=ishVO{`E$7h0)B*@r<|)=CVoO z2ZzZbwVxfB%jG(~!Dg;Qinkpd7lC?%2KgjbKP6%MH2ft!8dX$h*Bx13m(QgMd{?)P z8@)N;l(tS6r^UaF?`EFMSqF7Ej!D`akV%m;w@c(uOn`ZnV@y>v{hEE!y`uj$N&K0O zE-{=VE+IQMRY!Lt5Z}32La$D;zwU+d7eLfA!iLimv=c}F9U2Wt7ne8?dsjlqMhboE z->0JgqkK{^FcbFMJNKNy}fWIN#9;2YO$hwyUbfDnsSU=(d_Fr*bB4Gja95ekS2fe&^*^ z{brkv&YO#yi<+9tB8!feT*q4+Eb*g~=>T6Zhwa<R>oVc&|=eHkr)VVu+ ztjBk73SLD_y9g$E{@zc|eS|Y^Cmv}RzOwXwYGHRpdq3~+c#!sbi`@gJzUIPszR;}R zY;%8r@gyC27rchTe1~U`^-X)cuzBGHXeI2@bhap~yd+M1tc8Ea_gZ(LKJ7(Fe0GDq zsHYwr5q&64bxha;WyK#6nQjQuC+`ylCueBcxsG1q!64vP!>p4grxIjC-QS7ks?ujr zb+Wl8NZS|Qx}Px9Ai0#zhzs#sWF;TDm!?GTv!T)4%<FJHdi-#8TV%fbQ}RjMrIBX z=H^s(Hs)4!)>}DSnyVjotvx-xEg8{N;!jvt@~oJ4x25frl~=A$9v`DpLKWiAmJu`c zzKF@2_eVWw@!Jjs6)Y7)D__dXlTo4VR|ZZ}O=dbazOTVFFf(4KvF>AqJVOaJ24VB7 z>T|9t7ZNXAc~z3zok=Jl@Z&M$lE&;Evh*4;7FSlJIsYsyMe6Kz!r!<3DNL`?oY z=B4kOoAJryPg_9TCr&ldlHl0P+16sgIcwf^AZB2}jqD>?P%)5^L^BI71)S(P#W27f zC${p*W?Qo%FI_51(OQ-f!ywG)B-65zZsBmcn6C&Jv ze&tLWceb7TSSB!wxc&~uZ)QZD!S|G;v0Aq5HPCD8Z*xtx^PD8Q6E#361>dH{Aj0A^ z)b|W8M$dX2S|*U@R;PHr7>6!GxRuBg;~00%I$B{BHh^DB6)?#VwaiS;KH^KVh@)$4 z-3m_s6o6r!wihr>-`Z|P=Fj{qvs>DSz;EX?s@@a2J{iO!7hNi|l)*_M z!U&`YBPlqV`TVrNCwdi;(%wa2yx@Vrq*CdRv$-=&scchN-^9rBoFo6alqKac*nWs} zW{L(>YIw%OKG{@-2D~Vij)8@UDw{IkmcoXP4{f?-y7F2jI1CCY$Z(asF!W(WL4X)v z5H^O3u;d_-IY(R2isO-VtmV6mb#>N~r9XN}{_+Md9um8G#@ zS#sZni!2!-A{2h13={U#40_;I&a$gXCI7hzm+mT%umEG(W9jUg!S;*~viKs5vpM*F zTKEN0(GF+UA*zmwJg(*h@BpG~f~c9lga}I_uQVrYcrgH=93ODQF3@({5`riyl96E! zjh$FHaKY1>M%fHV*)Et8du??xQDW20^FG(yySV8V%_L~SYmQ&=4IZ#ETC|yIyI*_kgG?qrN67hUU^T3_;kcBpT{3@r zDW97=Vn&}S%%x&UY#O3j5pv+utQSlp`GW8zL=fEV%8NVwT6BR z=l+4a;KY(Yp*~YMVYPgYDU(5Qq*x%BM}KrHkc&P8yDtLYHG49x;hu|gPOP8OAx%t?s89TX|Na!ObNS_xb=Xy{cjCGSym zqDNw#JQU;2Mcrl_JOudYphAX`s0#kM2O$oS#hhk7nsd>kKSsSG{jT)@N0&LV+Dpe$ zARRO_4#9gW0M{H{Onbv07>_DL`f2Ehswi8Tk(FJPT}4~-pj7GFuwqxxYHBn}OT4SZ zute^|65)t)?C9E$#4^M>WLkI0<}W^JKzva*FZ$i2Nt;`&ieS@Dgy90^i!dET`91g8 zr&TrRcCf18h&zNH{cr|T>SmrsaP0#$TuN!P;p*r>Mjr=PL~ETEOcuQNdtXRcB_56U z{B6+ygM^?HncO?jcmr`v($tOkkdJG^?#!+{6ewH>Y?@R~9c?gP^j^)xIR>z$oCXa? zY{bpqazLA{9!Sb0Yu0_A2@wdA&Ghm(VhW}FalyFz{wOKYSdk(?HJ(_-SptuuwQ&4* zJHC$Hrmp0A5<&%=h+ar(b+c+F-qu_lCAh^|`(U+(o$ZA_T4isYDMZy@rZkdVQxex8 zg!6?j(8VqQ4X7gw=)N(bkNgk@FzJv|PN zXL=iQcD2Rc(h`@F}B#lIIkl3(fTWj1*T*t{GcQP= zEcg#ug|}_zU9pskUt4<6{J}czQXU{{=xu#hv<;%dG=_0#&KU$Cb8!5O&RfpzTonFG4JAI48@z2q|S0-TY z2X(w1MmFq6ALF5ni(B0>{Y3Q)zIsWxfZMg#{KpHC34n%?tl(#R$t^e~=f;Dpm49+A zY4El`(InDxj51x=pmOXsYFm^m-zs98UtE7K9c62T4`6WLbVQHxJ`|7qg$KJs?5O){ zYtsq(R+Tq2vj2_kJ8m@g9u|(C5%hZ4 z40VSz3Td$O2ixugp$8UZIGa>;%O99XTUF@L1xSdOSVI2ZCE zSugP393I3E#H2`k&akkY?m1M2Q-4KH(na_3*5NBzI=pmUM{Pr^uA$d!wx}NMVRjEd zXcuhITSKH0Bj>z%~*{^86pGt>dcx2m z-CERE#I1w3Z`_&oas|XQ%$OKRgOYh{1^cO9^?)}dV}+mkf`rA5lx1HS ze<_mFNb@*da%kQ$arZCNp1?BgxJ_Xs%Fd%TI-hOZ(;8)Cau*?RGNP_}MCy*?R;!~R z2?C>1y+nYKF|EUj-iclso>~voUvjS=AoC7C%eXVM;hIh|4>U)@1m}~?@sjD?2!gWK zh)g!H^!j$NNu=ajb$n+6=a#RoFs_V*uuLQBb@_dAC-8cAk)BR;<&o`?4`dFZ6k^kd zTna8u#=E=y+`n@Qb|rvFJ>r3+Irs_loE5oxAeuhRY9ad#V07fY>!#pW#XgD#4Yuqa z8P$EE`x5)$SFJTjl`invb5vKq;u;3m_KsgdoVJ46768=T!bq-NYJag(5YcjeHo zY@oW0C9*~zrV`nSw+U{s$fAWa57%^$))o>zEC{$zD#&T>Q#ysURHDdOx_3;@Nw}*q z5Hn3-<+IA{L;d_vIb2LTGip33O1yag?mF?2>3FvY9c5docAS*_%Jv|lql4!HMstYo z^DV9aYs?}0da-*Ay`}Fyv&W`KCAaPUe`*#%RC7>a0g z7o@@O^WJHqD6yo#uA&h4-6W)vDT27H2g3yED%UI{pUH)0)7RJ(tBW7whI4TTcrD=i z_6uhYxkFTaly99h+pIL8Xz`oT_o_D5yiW@&XL%v*FFQs!`3PPabd@RU7p%yjK%RR*Z+o;Fw1 zRE`xv)y`l}d^<)aS3av39RV8B-%);%nvkfxh$uYKVbz){sE@}ZgoW|Ng?i#IVXjO- z$ZFn0iYqsG$j{CF6Ib|y^x9!Fl(_VbR-A^3<>Vs1LDIVa{ zX?TzQl=3IxfBmBQPm2eR7KZl!Y`$nzHh0EQM%vUDNB^5e7?oC#grG)ZrKuj54=YAy zn<40!F%VhFYXKjJyjIJYG>pwf9w{+VK64k8E3n{kD?SCWeoq{xrqAlG-rES}`QEA)upEfF;S!vt0 zZQHhO+rD+WPuxD;aZlf;6|o;z?7gSP{DuJ{N3VI`$gKmDm(b-;VYocl9F#C@&hr7w z{>K_2e@MvS3_`@-gV7a?j~7!Y!`=jSH!*IS%AG3Mw$U216!bEj{27Z!r*(#!mk7fn z)$J9#Q*oELpp)wi6IiyN*E*ty>9j<0!-1HC3_(jPGWK+d^F^v2>(Hj|<7xuAV!^D*Jw@H+*W*3G*GvfwI_mvYVd@e+s(|OODm7KmAGr z$b4>enXDpOBr~mP6Rja7P0((uv|~bYDGgwb3%X6diEm>76N)>uaBJBTOCJA^4uACQ zi9kTx=|zX98morg`1r{x6T36Vq?SFaK7BDPxM0?Dxm=qrrIj0ut*X6u(?XjCiMIrU zEVAA}MxFBMrP5t!u=pJtS_zvM-j2eZEZk0iZSb#al{*`_oxUz?@H^W&X5wHH>h6j? zPtJmUCb*rE18Se#J=*NqTj5BW)@s2j^Vhi7GP5N()q$A1!r&6d>U|5inOz+?`+SW> zGf{jM-ikfmX$v>_87ntndCFClnHRjHFeqTI5cgs_cT%oWL*NK%y~WzV4z|xK@*2+Tm%X@=5;BVr-m@7KO!SHAR83lN)380IJp^Pe3(J z%1SzRvO5dvc%#cl(u;okDK?tQ30kxivv03WlybAzVx|e+;o+e84+73* zc)4;(k(gav!nCfZOv^ZLtoBar4WgQSQKY}_iXeSasGF6QHhkCof{Ad`L;dH_@bHv0 zn{>dMKOc=XDzsR1hEY`eVmR4JZm3y6maE$NhkTKrjV{LnPB-G7!#B`<+*V@k2e1F#wVCNAu z15oWY$#gVt9e9p4#Fp1EY;>ej|dkmCQ3zo;`;$r+-5Ze zZC!{U=Tt8q-00R<^d?dI_58diW(%TdR!3dtd2Oqav46$3JM6xmUd%{QS7<|zQO#78 zkVJIXlS0}-Ry^wVP4$sFm+~7P3R!(995i~JqF}u%QU+?K*zceVG#!BrdihjnL!y?O z``|8Ty9bNLh#@-YKW|2cJH*?IgM8h!H=An_7>R(Ij#27Yd-DUByo3}VT>1HhlGBle z$15xkr)=Ec6eL_CzR0|K`SV_j(R+B90A~kB?qTl7dkNTGT~2Z={0b3X@&e^T=de9N zTz$L&t8=VxGMk@p*q`*yE=M@n2f8CIpDdOh%1yG(US(h7`ecg`wXr83qBfI+UFfyL z1)>gNTIl*E4GovEWsjiMxxfQ626{$KZ8X{uWJ6t$p1iLeBOITR;up{6!r!qyzvmBr z$7TIK(EALMJy69uP_%?M4mi{+dX^jOO7Uzbec{Kd*xe?H*(akfrrwlq(|KizM&YE| zIMucGg~zD5!(ixPfrr=-S=3IRmDIB}3grlC=bYS226N6CDlJ$%KxRXBvN(@uqivF= z#&RkQV^!;WoF>8!SA_JWY;(iV*Sq%GFcH%;_W23VxZ`LJ?`g3445<4?5&eV#d}`l2 z&~)*ImPU4^^=wn7-P!XIX(F2W6!-VTYHxW0PFh1MxsiCTux?@0F=n-Q0=|`99A0%v z!MN9)o_CJ*MAng;a}Y5fLRXAGTcCw2boi;biqn+mvQSNJv2Xs7QXu~KwBYgXAsOVK zUds>$2#EUsH!ZL?G`2D{1JIj0+gK;5ZP;#zA$oJ{`lfOsBq>P3W|nZ5D-L0Zl#)Os z&l92r8i`hq+DOnhbTsCpe!XO`k&$uJE4_&7ggJ3J9Zyyc&(Pa3pcCxq&Sea3;CQ@z zKTSRQ%LOYw?j4Du>eAB>M5Gibx2qM67MxoCarE(G^TyCJYK`ZJORha0Zbj^Eul_C6iwBZWTI9;>sAqsFg`; z{)iQ&k#x}&)uolkI`l0~)@XCG|6|vPb@AwO963|lL1N9?g$@F8qV*IIz_%|7-M#01 zkNy#q3zT@ut9S<~-pG=ZK#c@w%5}n+;jd+bK4|~G)rIA+$n^@oT1wcpo04wc#UThJ za;ayD&i(1YgNku0l*Mim6+8V|vi4#7bv}ILohEH1xN@R}Rol58R|-UpZY3}^l$>$u zc_a!1s|`9m;k>(LQxRxe0$zg%A4?)_86+gz1w8ssk##F+5R$4CF7jK~r zpuwt$3Rg5rTP99QJomJaQj;N*&7*Bu0WkxKLLGOv(7gF5?M71e^90q>Fg=VsEN3JsMD_w<(9Zkt_$rCa66Lve z@j)Rm;3B$V9e(Zy$vzuwtC zo|-5k6vw56!D#>id46=Bz}u@Z|BP_fu<#I}fCtHC0~}=~uUb95^A5XU0$Z2epvMc* z|NaOutK$X4a(j?(HBw4T3)>>+m-xY$PLkeEKwA|Ql=^_%F2+TUR`iZ-c|e`sFQsVj z;*vC>h%uAZsg8Rg*(!oFgd?9P*!C8x4}XH zme)u(C~5?3Zr#A$&N7p=>2j_L594s zslw!+Z_56iy1UH_7_ZnT;w{Pb58f+E=nwu-2ra2&RQ?z8w)l<>Td@aLxv_}JC;51SZ3W*m1Ly=`Vpkb0LWOM;@M}+VyjIGbE$1T zq)txef(zD7Qn?wtm->|xt|{kxd!k#q(J<9Q4T0d=7Vd@GI~3vAUK{Y{_g*cmdQbc(~yoog)L zv1887CZBvh+eaH`z*p#V8{C^Llddy$%qW#I*ao1a_L9#trVSgZEg60R`VZXAbqhb?FN zpiT4-0<(N6#(K@`dT=q!c8g?Bky-qS2TX|^Zmh$yZu3@m@E-C&4J+2S97FK$xmaTC zIf6%$FWgDtog4$q^ygm#Y8*RkMZk0xqP}xGiv|2ya}0fLs_Q8Cmm43yw38Qo(}M1f z19~QZ{>u{ae=M405ag>){#*Wz{U>n${}H!4IU72=I58;ykK;eZ?eV%+ivp;@J8Ln6 z*Tq|ZY*u2bzuIdp0;6|}=5YiOlRXrvRy)?5B}y*I<0sKS<@G2veldIke^cINN^Y*R z`Tsi3#M*wyKAAimnX%ge<{h$yuz^jP?I+P|_Okw1MKUk4EC+ipkaj6L6e$Yht!tA^ zI04a3(8@X-Pp3sgGy~a&Nx=3borOh^D|-d}ksIoYlYF|f=3ai&X3OU6pjAsyPQuw% z525okg!VH}JPK2}QT56zYI`R&vJ}P zZ#)lvF{aFPhYMC}33tqiaMSIt zCmUguJPe^C-Kcl_s3>B0sc5WldE5^W)s5J!ll|23|DmB1(^;Um{|7a``jGCYs65>u$Q05f|38WWY1>2P;EHpcK*iBT(B0rjxa zEF*UYNQv<)C%?8Kc0AN~jm@w+>ccRjv**r{^&X&Ywqt_9MYKdipWoeXRhX4Jl>yAM_P z$)P)c@X6g#JBxaa9$JRJ;@uKuH+j20#>7tOeg^R~9hM#<$4>Gd&%bhwFy6_9BS(35 z)mw;QF2Q|elDuOobE7(!$OiWGtufN8=E!$cvOQKz$4~3DtFQ#Ht!n$81;0ToXv#Gjo`X&A*_&=?7;YY(T>yg{7bWX zkU4lG%@udRF)i$>7|_mx>fDIiV@h$gpj>}lYBDZ&wpP$?9A40?y^6=0HYEEa{;O)m zPeM>P!XUM(WFct0%C7B?_nfRwOviBM-gTMDcz^P`dzo3kHQ)mO8_am~cyfX1wXgr#Lm#R+Pk;&r92|z|af+my%(LZ!LGnVo zl4XmH8QfO>;(R2j1$jLKrAhw1^%7UGHf*=Gm8*|I@55GVTJrlU63P#kb-9M}VYp z)2PU7w7nDTc?Y+)OyNy?ZG*_XmG!WW>`OQLBZY}o6TRrwh^s*R2)PHYHqFIJO}$TUZcWy zEG5E%cJ^MdzX|g?gML$ou2l1XXl`>`td&%PsKMDC;DJduvt6|5_=Lt!X?~zK?C9jy z2LCn`7|Qu4m=kCFM6*-Lg5>>{v3p0i3;NQ_s7=p)NJC!<1~BQQ@JkFgW2rd$1)ic8 zZkXk|(`o+fs^Y~DQx7Xq=X;ju^jYdrErnUs%zYlKREGvRd;BwOH*k z7N1r8;>|aE7|sKpyUP^z){m`)ja4xtn@6{`94QGb}$6%VX-@+c&7Dfs+WAABlTYMtQYr~;p=m%Y1#g})(ZDg+LF_N zKYe&IOhwrhr;c=9m9amoqR!!W8@FA{k#;0+>YgB>K`t8yRf<|)IzhpC&kcPzqA;RwU}FUG6h>vBQ__Qr44b2}~;5UTlHzbjt)K=Qu6r;1MZ%U)oh<2Bcraf|-*Q++4k?`C9+Gs9O zKL-?$Hw8TzcsTr$lysz%q>_noBuT4q3yWP`TiZg#@AuL{S zMZ7Yef`h8Jm4|OjZ-FyXPeprkWZBR^6M>eXp&4S#pyS|3W?e{okwEAXRa8CU2el>Npt&3YoF24~Y@cYMrr*)H*YU%WMfv9rQ)Q@d@wM&W=KmUBY`sZG6|ECqaXa5S(eOhq+K^m%BqScu8#&pR zIz6&33g_a)FxaFTqBhh~?QIohWS1XsGe$DjAlz1go7+nz8RXrHM%Vi9% zA?;5S53&U&KNDiZE`+?o7Y%q7hh7}h{G)R@W3;U-sO{=$`*}iyIbSuTu8f~B19v6` z*vFjOxo4N?W$!(5HseX(x*U*g(k@Gn*nswdzA#3zTvEQ&dv1lWZ^lfy{Z$|^v2zOz zxifTpL^{4#WT^aQ*bH`AVa&+?A+-2=&;!ncR|d`9937NbmXBmW6TLgO#RSd0^3s-PhBAh5*czUO~63H~FsW!N_2 z4nqY3LS+8$X9xB!M%ETi<_rq|^Axo;v#|Y7rco0&lo#sK+s+I7*yOYv$S)Au6c|eK zz*-$*dP+wsU}8+$(h(CDD42{b&ITOFbr0>TWRGS4{Lp2$<%C$oBuhT6&YOm1?F-#1 z@umKs4^z_`6BOjjABY}~8}FO08;_l*ZPS@;T?C+BP9`-!t6gOd>!6v|HywWl)KNcq zz-xTZkJ2v9Yr5yp@i7iqchHT=tDfIaF9Pga9MNy8Tm99ET5tScBIkL#!=f8ZA)alU zhj$A5*^_)Nf#Dzld&*#ZrPQf0V4YnlASniRP#>cjl*am4A5@IE5pLx@5D>cpP+iRM z@eZ{hLmGn>A(Wh`AyjUN@2yzVq++9-O2Yx}?})ZyOt%VP5p^Q{bNIAFOwh?hRJ-<% zp7yxWDfa##3!!+a!6@!eqR>CEa*obg2%E zz?%1wu~Op49nvBv$aM1l!ske}D*0)>Cc4%b^;e{o=}WlzL$L3LZDtNmjcuB5s!$;g z=LRl8r*_)mp5y;BowQw+z`Wnp3a%VrwYF$nr%<>olG;jWx%l4XLDwqw5`vBW)mNJL zadDu!7uz=6Gx|LpwirzOZe+Hg@=MijmZT1vE`RA9T*yIv|k508CC@q$1T+{ zg9=5$g#xK=mQqZwg@>@vx~^~dMEw*Tixn<5UQt4?QNd>Z?M93GJQE%~;K3+n4}rZ* z-1I%f6ksw<@5mF3zWiY7WGVTlaFFtfmweC>eN|dW@psG{Wk4jidm>8xe8ci9jSCBQ zG|RZAg(oBg^1k5mFr15FPuV|UaCV*1ba1ZT&8+Lt`8kqfz?=jeRol&Zv=Q;4c7t?& zl80_%A9rgaqX|%BznL(x$E1EL7uRLF~bu~COl>l4Zk|oXOWKk_D%N(r!)a*<~s<}uD zu}EkBndaZx9wDuI6ppjoMINxPXqoDd5F`acgn= zs<_mI`lIx>WcQGhhunm`%AsJCQC6*Yl7xRPn?nfou!@c2QQBabqV@N}KeMywDI4Pj zWD2wrFpN&?z%NjkRkNJoI#F$6M?Gd4`!3x}h;Wz&u`Mi0zUH%n(=@&ZRH-U2h%k?p zj4h5T!r6#PS%8hXC$CMyf(C{vpr+j!C~!=ryK!!w;>OAy$5bF5L3!h1$&+;1V!I1bREYLxCQH>J2;In4JIn$Q=##otLg#fGdL za2Pt}hOSyw`!7^Gf&W3IqdF@jhca$W(d_!PRXgEYO5J!keE0Y8HaikBI^5hiwuLE@ zxpUS;g!(;IH~prNuT4b$t;g=uqixvZ^oJ%Y93ApDX}JX};?$5xOM!!FiFmv$#pZj} znF}fDlVU$Ci5$dPTEY?Z|NR@|=(eg}6(U^dsGlTfzojmtrqJKMS-$V>))RoS*uIU=gBRxgYQv8|bTe zXXqu;FRtnZ`%}KZV;>V9(;%iJl7wqTdnAjN(@UZ16@CenGi*lcr8abO>&|_b=zn5) zjD3#-rLS-&s`n5d&Tv3Odsl(nUA%ws3hv*7LQ;JaXs*HKVZoOXfU>Oe$8g8tcs+Nn?TXQj(_LJ*tSNKmK0VVjaCdeGAeryS2{;9&5)W0#VIC9l; zc-qMN4#Y7K=5Mv}b=^h9qNJr1G9i$|bT*NycjBL6YA(6}g}6B64rctYpmXNSQu?|v z437S8b5$7ppk4x%J!Gy#g!Z&hGYaAoYR54H z5qu704rcy*=oW=h?4S~qanwFlH^I{QQFT$^w8T>~50c0$&DmrT0!h^J{F>8}aN_1z zemUl*y#>+pz6&%;|H*1t-*veu#2R zK?kA8L1{9FT55Qt0u={Jy>P~+2OOpRV$De~llpWQC8V0&0GecxFlw;~C1R3cLfkrE zFDK%qEJGS$%CqMnYLaZ)O05c~w0-L1%k+{Zr(CiShHDL(6lc8~XMnmUwf8UiD*T2# zUTj^R`Kk_o7x7VpDbpUBO0@D>uA4G2|K=Zk$KS|t=Rl8Iu(`PI{F z^(LLKjEPL>zIjeGrGN-^m%dIB!7^$~Q~b4kF_z+$I0o>8U_tQOKoDb5O59^lHlm^r zDZBY=BNC16+0;&vsGB>Izp9$5X>|&;)0ffb$)boeT~qLbG1KiW;wwx^BE-8g!V$k# z6o4fLMD*FJ%BamW3~FQ!sW+CX6AC~YzMMt$_3`sI^hhO)vR(foz+%ZmZJ{<#RNNYF z!7MdAVbkHu1!Kj>3|W}V07vFLnDi%^u56n1^y6mQh>w#VpYM6l*QWrOBD0YvECcZ= ziZ(F(kg_&x&;7_}q$o_D^(OS{`TAy?Iuj(CazZjHC3`CPEOb~;myVtb1lzg>?@RFU zEg&qMjOU7yoa3&uLc^YEMBWxf(4B{;$HDN_?mb06NK=b|^b|2{e~Jy3jDoLHs75lj z6&v^j#Wx@8my5^|mtAL-c@m$u7aPoiy(-$RUNpDe4`VG-z7Jysg-fQ9yQ;UFhb7k{ zeSV(Hl!&SpbcvbGghMyA$gigAcizIorR%#NqsEh0-Q-KzZOyG6rJ;l%J#aj{HDJys zg!j&KO;u1%5BF&)5mX4))-t>dR!^s|L$gr_4j}|s;z*T?+Q!hLEHF+(Odu0AIXH(J z#^NTlGrz9F61;terKtc!10KRzNbs(8G4Y)t%0|ppmVAxl*RP_(d`{(A1aHT96dtxL zOF0W!GMjLpw2IUv%t0dTYL|~z8$N~(k{>4h0MYeu&7qGe_ALW(=rpwUz9a0P!+mE8 zG}p&n+uiewUWF`MrwjO3uqOexQ6^!WE95wkTGR-w*(*a! z0WjB%FZ-2#2SE7Sx>{@&`3OWg3)i9^Mt6R@{|L}u4+t;Gtjo#_GsCv7$=Ilw5XvWR z-0cdo5;e_GBND;X%*gqh6eLn>F*_MP#|-4U6fe_+Y0L+y)_a!f!?d}NJnYlZqfrh(1LoS>6=-o#KpV?T<6KNNC^*=q zh?yq*Q9I7-AxOBPa?0R7kp-0dT#i^-Bi+0seRr|nt?PStnVlQxWI zV&Kd0897qm)@L9!_frP`-MFB)2@+nIO>7c$K$evRnL3R&mvS}kjRFqpGfvN=6}XRS z(oofz+ND@T|G+%CX`SM%wfEW!L{G)Mb>o|249g2~-=bsW%5Co3qv^ULRHAfJU5zq>xG&A9$%Yc4CxtR9jMdeUTPCz=s_#p?;<#E>h}Wn4F-Gc!J^jM<*cC~qzH5>lnos{ z2=eNcWu#Jwt?oELX|IqupFT%hH64Vu2AMKSDbk2ENb8HIt0nv*O(Az>aH@# zAhgL)X(e{))@xC>3`+8URKg;hs**GM5CzF-x)0pq?eI zLNwiSRr=Wx1@edPOO%c%8tig1I&cr(X_)s0)#9u7g7X5i8$rqqE$p&(0?A?6wn`ih zkTZeMqXX=@9NfZEfl{F1su82?$=>GK_K8~kIJe3111>@juJ*lKx0euXo!@fDTp%|O zxv_1XRC}+gxnC2|5}pNqzsvpI*!>e5)?x9h2Xr%V1;MpnSK%+sES&2?Wr*7w{t^+sRNTG`N@owp%muxYxe?uvzZ0tU`pX;_bCW0L6nC^vOh5CAiEG>j&BFWJ zb|*Vz4eisosO`E+$nGQYm>%m|h5WOe;C%7F9yiLn=Xx*cALGMg_bL-2fjT)0G8Vrn z&LGc=IOkTPU91IYm0w^gHI_5|*4LU14SLdwL=TxcVb@ z=nUxk+>`fM@%mnchC)vke)FkZZAvfAz++0W>&VpYG8)~P-ycK2)03}C-G3&Gy|~Qa9W7`C-IUu#puNQwJqaw|JU}WW=Wb&tY%$<}F)Q@+pqBA5Hq+%VB9Xd#fWr^DH$#GwU|Q zboDYllV>05r+$MU_c+20rOB< zlXWSM;`uiyHsq@};>!>cJ}}N%1;7b8yvLX-Y~e-kT`{V`m4`2CgfcNk{M(!gt7 z(8TZw_ek-EL`eXCjvxJ7vTGAo)yvx94ysd9Kgb}%9`BQH=Ig(ZA^!vakF#YQu<>so zYx#dMxA_0;YAOSqoh@w5{!e5am)lzN-muJI?kQaBbJvZo4sY)}|ho*CCy_K?`gWPtlLAy?QqpK|R zqIg2^uB)zS`i;3|dGINVhLj^yiD_i$8h!6QMc>6Q=m%s_FxLKA`Jrs9Rx0rAH(M8M zU80Upb(f(GA?!Hp1OWs|Kcu+8nz0HQk<1^i=->avOzA)F%U=JrTId%LP%9h|5aWL{ z$o@a>OWxl3AJywWFRCa}+6hM#@vkR9b0+CihOiDU+Fe9Rh@FTR1WFF~WbZF773ZH& zIH-yzv2;Q!RUR5Jg56$Vc-(%!e*|+N2zUXsywC`0_)j1oRMD5~(Rwqp3I&I=?6a)v z@8S~ApYM~I9-v*)R4mLO91Bdp7s<-lR!O6zLF_PXQhq{*j6v=&IAntO*U-T%(oNa^ z5$wZOE8PoQb=jGQtz__nqYu*+)^yVf+e$ZjtECysSQ}T%>McMfmm6sx-@=7GT)g=< zE1!12TyMoeU9kfc-DyJ0?&HosCsTb{^S{ z)yB4?`sR~Xu^EVf!gkXHFseouxOusiKLo9j&tY;ruZ*354ww0V1K1FEa&{H#DRYku_J-4(L~3TaX9RoT*96j&`r1g3M=vNgfB~5JRP5bh3_i zQG2#~w95!{o#hIrWlCoXQ_*-M7u%@Dh}@FZX!_rHvx`N>=Iih< zsrlmW^+ij_eh>ETra}tRv{M22_fSSj9nuObNx7g(R7md-CDF2MMPg?+6pq#R8vRXP zF~Uq#CGW92@rl#c`yiReY@D@X2=l6QC+&JOpyLB|5_qKIS#Fcd$-@vO;j$_rkhXmp@y+pvo#~`##CNl0D1yx767-ak z^UPz-@g{<@@$hk8!E!m`u`B|WLUb2SI+r=nM(b~M$6?bXpsmw5Kz)TB*uSdPUHyq=TGeX|Dr@i>|AZF?F>zn z{>S70sk};3|8PQ4Mg4A;OkmYrXI0o<{p;^NhZ;_qs4k&R`wT3r9TZ+G+kBQxic^oX zjUX!M^?P=1jsVq+wjg`#C*H{btoZH z0?tL#_qd}S<_%RhAQ{%Aq$Q_zz=lGXM5kIVqn)RnRv`qPg4>D!TxK5K(MCAoXP(^o zLtwaf4koAYweI(+B2>HIlGAM8?{bfH4I0=zT;ic~Y_^Uabl7ep?_OL*i?n~hXTie3 z{&5ZJ4*>b(Lz&m4N{v;zGZ2}fEOYDl3ov9WI#ZG&NJiGw{3||wI-ZKU1lIUmn&ze; zB|YcBRhrp_7+H?Rm8xRA7Kj@;ro~!N=)#5qd&CPlRb-mj8jn0{eu2Z5?Ec|1klaa) zY^fsUOa&FL4~SP;B&@M$pf1jqCR3q8pCjX|fHJQSnjW=aD}dlZ$4ux@R;EX;wAT=D z!7meDCLAQZxWZJdglkWd6JeD7+?g0tzd%I*eWPI?6!7PnTC}r z@M88w$Z^ydr|g`j%6jJ#S$fQv?d&keSLV9rYwQY@-d$5Y4qJHn*$w zD_dNB3J64m`7Eu+rrWFS_$H&2uC}yH-@F%9RCFRF&RFa|Mmg3&5{JVx2XzZ%d;u#+ zTPU}UhQw;^SJEU|&X`n0^v-W?qK79U%n)wwy4$jG8|2*bm$v@dbCPuF6J$%Cm*Ga zZ`>Z3QaA0Bo67Sa?_~vN)qyDSVk#*NZp*L$9&ay>`4jY81Gww~Q^-}J3g*gu{c|>B zIXXb33YBr;GmF?chjHOB>+scZdotsCZNMQ+Be&2yGq!hB10wbpV8Nc1U3TDY_I6cr z9)V))pGil5#2*!71U=FzsRaZELkxq-R0LhodYhR%h$uFN?N`hr1n5|L;kKQ>NU{OA zkpjD(PSYQbi#jr;UfHoLv%zB}1)-r80)qh3zn}|W6NXo#NO#CcCpGp^we?&ogTvYe zPPwT5o=ieLbV862Ht~Cn+~U>=Nc3pi4V<49&3invnvnWxkopcY`@BXt-4XTiH9-MB zt>`WbrM1iZq;HwjiZHf9#ox^BSLf$VMxszOY9J9fS#|ISXc?IvRajvg_~j5?e?)NA zh)c#O6#XS~98kch-+XY0;c1YTl1Gs~F4eTc%nu7v2pw5dwtzR7)wL$PrjsQ|eWCM$ z&2P7HcUHs^Ddrw|lJPP`lX^UYw;|8FuohpxjyoN}C%$OR`2*G=ibuvJBb~rME5dcu ze`2h*ZDr%Ow4APU_n`KcWsPjMJ-<3z3>hQf9$Z%aq2p613sTOoI)!Q`RmWG^NFDH8 z?Lm8X$-n!n@*gMB=2=3CGKha0)7{%_Y{D;eHJ&w_Rf>Lxdv((*n)s}6-CA)b53Fa= z)W=v3rlkgMxMRqTBnB`|IbMX8@uY#eM}RA|o(IZgLnwOVzvvXt^P zxqk6hzA?Q0OZ+*!&7COcH8KqU9E7{Ozxxit4m`Tx`@SOk#3Fo>uEMGb} zQ<&Coxk&>361EO%=^yfF;U)s`k|9X5IDcOwzRwdH7LH|GRXqb%u53HBH*B_+`CB^Hude^>Y}gk4JZ$lBxCW=O29n2t-e9qPFi8k-Bt+z8-O~z9oZq#&2hsKOA0jM1QUde)4|kigp$VydHfY#iO>L6v4Xa1}tD@_)Y2OSC0zTE}s>DdmdJ=j$nJT z(a)`(6o5T8r${>h@Kjo5uE)K3qe?!^`DZBm)}hxJl@A`g8bwB5oB&i!ca=)nQ%)wg zR=n!PCvTL!4*(6qfwv+rVD+)Bpdv3MeVu+7_qgE*Z|AUBs9R(L^@n+->OE?PmGLnb zM@IqE|urvS-GN%f_7#ViWoLd!RvkbWP7uM~*v>ygXqCH8? z!yTY=8-ko3W4*zv(~o0(o_ehZN@owU(*`+xin(!g_Pl_uQ!|)Gsx7KzG`fmxa~hA? zc|6{R**axUis2?!RTpGJF3Q!y3r%@WAl1UglXngS7B1N1J<7nuoO2aL9<$HSjT4W} z-;iW2Ar!WFKg=K`-J+QSJ8hHiPJ=;N^rL%Lff5sL=-pqpOoViq;-)_@v5$4jD@9H; zzt41XHwv9VMs&Z9R9Sbs07Z-$ACK9eXYzvGiH&_45+^{6)_Tw**cCJ2P6V2?nCsLv z5WG&RMO_q@ma<{AY4DwxiBW|oiDhbtP|b8d)*6OF5HFeME|X5%lQga0L*JKjZ4rSG zmXK$`Z=%?Z*D}yZL#dM$&B=~g+R54-sPm>_538Nvb=>C~W0~6%(I9`md*tlAT z&}q0rJwd|i5MuGXpXo#&zHpwuYc@VtmWAj)HKa7kSfjOh{7JL|?PAF)Rb8!ZfHfMH zo=mbf35a2vyCo@p;)z&LuU_%Pdt_qSHQs8%FGD~gOL+?SD~G%5Na8rUZ25U}-kuz7 z!cklzp=Wl09FD0_@q#Bfa-4niN!q`^RsWvphG<$j1;_2AU;gyjnP3>k^p^U`j?J1E zDefeikE8UT>|=DK)a0BiU>RLy6boi6yJ&(?(Sy8Nz+S(+J7rw>W3Y$PG48_n7^HP0 z`U#?cnAq(K_>P2z3G`6Amlsfy0w-`+vPo*6_ZORTBo9`$fGPJS^F)E6Bv!_x91^w~ zdj+jx9H3DxJJkZ`RfN~rvUlD|PQxd56Rn|<&9H)6QAM3$is32^eqVZnbr*tI6upQ` zbDnjmK(SyX9JRg`Kslel+%E(Z!8YJE>9Jzio@#4Cr^~DQO&v%k-Sup%znaaIv3pL?@uUa+fkkEmS~|yv^kzhNWyu^@7Y}(nq{k<1zob1oHllE2tiW~ z97d*mAU=fXs&SMRPD(n%Cd44u@>pj$P70%yVeT&e=M9B&mp=%aur54uKHjul9SYJ= zOxmP!Fd@7|D4$;wH){RDhNZo*)=t(Ioh55zf|Cq=N1n`t<5`{Yq9pYm68kusiG{!AalLif27*R@Un7;}=&hQsE z@&~`lAG5@w*ucKIk+T`+==;CJOj!q!>;ThjZnW#Pi~x=zPfyXBC#gMEh<88zB-CX$ z^`!%my76!XRq_s1?wvscW=Z`;F0%b%7yNxtZh}H#ZUj)KZq34JnEL%scMri5{RcYi z9{H1(1;ec0y)DeTyg`&z3mAu+8?OP}JM=s^yTaJM5+^+F0w)L)1G?P4fj7&q_*pka zd$5GzF;QV6<{BVv(*#E!tlz2AFAs)MzoWUy&}Sf5apXt(F;S#cc0c|~yge@o!@g?4?U_EtR+e^peNz(@jq*3|BlgRsyzk$*5_{jQvjxjSL? z(K(@bmCO=Yk-u$oKS0bSx3<%M;Wy}O zbRKtyBvM(TDMN)t=`(#=Bdwck9`>J=uOEwSfAi!BTm|v!6dzG%d5Yes6#paR96B-c z%v&7P2Iih@xjwl>ER$ykHl0?~HdT7-!THtA;5goM+P)E;$}r}8`AklMD|Fg*n{=gnqP zg4__klpi4wxeiy58A52@BA`_^&-rYvhXv_84vxq5($X)xL$dj}VN+V|HAjF2&K2ea%~#jVJLo9vk>%cQ5lvZR<$*SjWKUvU2hh zk#G_Q;SsO}(V1HXKX5zvf<^;-3=t}8gEbM&Ls}ZEIUU}H>vdaRSCv)C*>m)LIT-=w z$!sP@Xq!7fWN$GZt;unuWJbJ~8G86)g1Xz$+I89iq5JHV1ET!usoVg@=Gf>|tr{Jg zx`SZ*r`H_e3~r|KTTS4uME%+vPYQJgj402NcoW%8Tm-H@9PyaU1RTvdinR78zS3G} zXqGE*x(q+9bNORpUs%v;oBcfCPde4LrIp=T;2vFe=JnvpYiE+y^xLg@S{?WLGziik zONwKtwNrr**d&0d+W$k^J4I&#Md^YSR4T66wr$(CZQHhOR&3{wZQHhOXVTMm)^yLh zJ@YVc=XtMv&R*x+AC9|{^_ng&1pLd^q%@1%opP@ru2?vbQ4p(hE=BA@V)Bf`w3iI0pxpPVl( zEG$mXEH)Qm#WY#_$TFqPG+>Jn@}kLG++8(z&}niMhOCry1^?^`f@zC=BH(X6lG~S z39*-2ZGWELLS4NpKWAYfI;yG2DnZQbFMqfAvRR;{vHu*E;G>o8NI7Jz z6mbjbphzfPFm6U;T`0UDz`P*Bza~&&MyV}v>BR1=*OX|}fA&a1`oQ0oEw&j>RCxs& zNZ?FL*0PYjv!mh~5cG%g`k!F2mKX7onVW0j(eJw$`Bk=LM!-HlZh<*Az`5l3o?!;G;iR3F?`sr^W2as`?C?oCvj#)#a_E}T$s>_h2q;YbL7S1kuY<`N>17vl)B2fcbEMC%e z7ws$cFUYgX0H9NVTgnVQf`PMv{&iVJ1&Ed*jL`5(90FRFV&@|W*0>$s+5y8C`_rl# z-N>O^BKLMT1X!J5E_D!cjlZDvE5Jl)18}+ca{bhh{Z9Ek#MGBfB9&<`?(}c)1aOLE zHKZapN6UW&JuSq{j;+~i9OiE>8Ga5Fv_G+HSo27?2n8p+*tGO>>)q>=gUt0!Q6-jI zKLHJpko5q!GF167f!dV#Z{O$T4bIFum=(c$nE!s(%uC(; zbwV*4oZiAa&c5h(Nt_8j&49fJP zu;k=k4rM$QQxb@Oe21IhBd9ff>8quGjk^iJD?NR%s+H0HTGo--Ei`?!s+G|GdfJg0 zJ8N%w&zO?ytTr~jZ;HzH0X^j$Bq59{;asv^9(=XT*eR6O)&U;LvctN(9@DEE)4vY4 za^jx$2o-i^c+-XmYny4}xlXXY&S7P1*}J7*t3`ynMzw^gJc6Hrk1rr)pT)vpW-~Up zlLQio&H`4z0yazyT}>6$J2<6QP|2AV+@Gn~w@Vp!fV^`Fcajk;BTv- zE0nCCD1QZ?94I2bDMVbtm4aBh_RnVhb^Z*r{Z~)JSMvNs6nw^(LoeI9AEQ=((->+V z2oqh!=Hbv0HSh5ozfV(duLN$_RPXT^ZWk49R~2sedYV5d^~6{*NVBp~juxm9EZ*au zO&g!8(Rra$L}yvD@lXxhXoVuPDN3=uVl<7p|sq<~J|gHM3gdu^3!On%%<_ zTt0u9S|rIIS25@z-MM8{#V1y|C9?a*#oIgt%E4}A9z4lj{@Ug7_Q`JrpUKQ)fVcan zH#x#z8lY-V+eA3f7pWHnUKDw*nx?i}()kFMd4p7m{Bwgzunnd6g8J|V$1(VYW*y@^2+E&>0BhPUwzgTrgr6>I<%&hQ^U|1vGNaD5eV-R747d(RgIXqT;$>FLLdIwKW;VzH ze_#ctBZ+-f8Je{~BYxk~f=^`=TCjrO=F?)Ra`~&0s%JC6P%C3&H_aPCa|)_mAT^5* zNXsW~#&<2=QQ%CkVeU5Rv`OH6^pFf}MoCV_t+uniL{#E(cq7H*#YBlpKOfRJ{pT$R zFG0w?^K4?}?sf1W=-*SwugC51>$d3N5RAh3!LlQU!kzm^u4i!ovoMNjPHUUbW0UW_ zA<%qp(iXaY!m}k1>Ru6Ws1eqM3eMwSJ|3B22_^6-=vNlsmh_`PU63#OQ#K%CC5Xw- z_MI2t1j_#@ZFeBd_QF}zs({qPJCvMS;<#geQm_iMFJZd1(j5 z2-_?SeB_Kg#P*2Ndo4+~J?m;10ug-m?MOSbm?Li*p~sQh2Zb{#*W^uG}QvwG)$!BPLa z{m4%)sw<)}k`IY^yL5eF4bmBu0#u9nnvFRjUatjt3fP<4(iQ{!J={E(q> zt|6{@wjIS76C9y7Ru6KhpPh|~R+=H0lN~$rN5?yAX{FwG!qx4#^*!=0JpA4JKdTQ~ zHrh&>4(!u3mmIPcq(|*W*wH{)h>3eLuT{AG5&sLETt+XaB}zF8XB6V z*@AMFzNF)L3tjNZbr@0`Pb7r=sV22NrMy|D63d1-oIz9y$U~XPx~%w-W|zv7&vK6q zS1a2GnL~8%tQzOfN8u-4kk9#xEHg}Wmx+d~glOJE8Z4%0bF9JgknS(sqHGm|>kf4c zeR^X+V3*M65r#U$xc@-0s>8=EC59l+=rmpSWEfpDb>Y+@PPW9j-s1MF_b-U*n4@2k z*z0cp^nZRgFB-$FD~q?(Eg{_4ztuQEaTthnJ(>lKBqeR{GZ{;}{{6KQ6+3_4>m)NUqVA#H#0mkLr# z?$1qz@k41P%Y*f=obI(p#`r~7a=C(CysgkjHP@M;568<;vu_^z=y>6h+582sDP%De zS(ZBlZJMU+zo3k`DZiCzoCa_(QimjJL*hXMN8T~D%v_q6KqflbXXisj&r*v73RduF z%v;5Kg}O+B&qJbR@PKCegv>nQ_jMEAQJxC8r51L4`#r<;s%PaT>okx~st0q1KcA~v z1|ch`b>k;^M06=3f9hLd4`%e?O_5jLW_V*uRu`W@6imBol@@G~V4m75X=sczFC+`oKY*}SIW&!_wb0it>71|-P|k}; zOb~l8bD(KH;GGqcfy<1f_=Xzux&1GMm;b<}?Im5Ps(^p;1Aa&x|C0sa|KlO}uND=_ zN}7uEa&TWVwh;K>Ns&lMP+^U~Ay8Y*C`XF2^@~CNBAeV$7n(y9i%TOe;O+%}1IwL8 zO`Npzj@ipMA zge8T!U*(3Y?fA$C_z?q*6XZxbIf)NI!J7l2hr|`BIE9#fiE*nSD+0zOdYz#wvP{6O zuIZ$XtV=3Om6bUckoR8-@>gT3**q3qw2bF{Y}1=Gs9MU;7fXdGE^Mrfpn^ASa_|#0 z*T+m*A&j8M?Nrg;5PYA-ui_(M+Qle1?n8=fJ(EE;-K%iYx@a^NC%G5t-8Q5`HUtYq zIwfMX&Ex1Qn+(2aPvbLU(S(+}j4q{#G^s@<%uF2f^#aaQA)AiPJf?Q;JZuzY9f8pW z)8b}BebArj@pg)$kSoW+^!bMHz|cf$Fs;*zbyOyqOD>e1#wUGd9?C6OPz1lVna_2~ z3OS+ar#&p?x83Sixwgo7fCTSySp{qSjpu`yW#=C>st(c{%M&CL zQPA6}4==E=PBT0yom&UPzNQo>*Rs!TkqQ%SPy95h&QNZp0Ud)&j3xAv*ABGa82F$s zCJ=)!4&JzyZ~WW$h)k?#I0{JxWPCaji@geo+i+|}WPbYf&u~PXV#tDK1ref1kE}9; zSB~}r?Xy$#0kb5>q~&@CP^REM!g$UxGp683Sy}jAjPS)m2POm#4nX?fz6nANM}-7Adim;EkI%qSy8j$`*OWz{Q9-@29_?3#xp`u;-m+_!*#!m+ zg+`N!K88kl|L+l~@YDI@g}W?$KQyoNpE1b$KTwzcSLaI`JLwzgJL&&l>7)PKk*J_4 zi$sscy-5j8SUVyt+&Yk|9)+|YX%atR=B0rT)ZgEgoZhwoy)In>waa_!7alb5A4%b3 zH-L7F4Qw&GM5i~vG3W6^<8rr;4$w-Eg&#vsOhJ&Tjas=uYXou#pRuPx+KU_sbmgGj zya+&9v``v5@*z=zxZmhLlMO}7{OSx$&{)wqY16xeTaQX^EWn1e+8$<4?!hq59K@VqftdKc z*SL7rRuP=tTQdSwGFZ&j!W`FTH2YVMUD7VoTd@DTJ^tfiw0-7gVE75F+#&k)KU(+v zulD%g?C1a*Fm8&=?mn^9r)zfrAVZJ{|6f1^k}M2J;B^q>D{#;(L}`4OD=7Hd>%i)F zM63Q*n;9(HzRN|L_0(3DiB^=Bq8tgxfr-S@qM2Wn<8O&f)~UtTb2O4|Rp#vg%jHGy z?t%(S@h+04_lI7d;|<5|`|RiUZ-l&iM5~G(!=-l|-28Its7@knylwER=Z-V<{)kA!wiiUc=qdAoYZ^~M(Xf!O`S z6dIW=6tqx&|Ln>?Wbvq+h=DnDN`|DESfVPijj;hjQZK`-77)Qj(J3@2fRx@+F#6c6e6X-F8^F97=SyK+1@SgA_fUVIQcnULJ=U8e|8v0)>wy-(veZotjAP`MOh?AX{D;>3(et!d_c zq-9C2Si(+4sr$n8E|ZS8%p!J~CLuV9AZY-;YLTVVMF=04CJ|z&G({)Y4TIuUW=fqP z3u7Ux1uArN{Y_h%CWOHL*Ieigcd{Yn@@is=DWZM?o->>5CQ0*0@rP5hLR6-M&-7#A z^kiN3>}i_?B|%A{+z=FD)d05JJykX<&B37?y^MLCH4*Ok?_Y}&saahi3sWHC1o|Hg6W$h z@?#K7=H0Rs)EEWRx>{}!tJ;<#+XS8yME}_>LhBtR%9M4O*c%<;-t)|2qf*0!BTi13 z0`3<~$z9y5%L-EdBDt#N?BK|&M<++Yno_q9mt&F@)yX z7|eY@Io_d|A7Malsg~>b>Ut0%Hk7iOH%UOgbKtWknU`xQo9>YrFl^Yi!J1i;A*pL~NVHU5`f(MQhPHA>d(YfS_|mxuiA2 zf{fy&0&AK@vmIwpKgkweKRlL6&tzjDE&aup;jsD}R8ESRXxlTVH8d}j$=0vKbLZ4W zTx@ZaKa$fMye1m~l}!hXF}Kz4tJH(sZaRfAWt@|W%_Dkz4sRN$VATg*h)ZQW>~;SN zLG3F9Npr6d!ZPMYikxpG8e9f`@KNq9Mhxi~F&r%g2U+oorJbhfz4Y349}fG`-TWH= zx3YH7F^kS=4)Kwkq#Oyv?7%8#73$W$cG~s&WFMf+7r4Rbj{D3R=Ljr7>6phIR11BJY~X%;IDnawRQA zfXp>_Rb%KKZgo)=YLSFSng7PW6H7G&V%{<>-jq#6YI(O&rG$}?abKp^=R)cl_<3Vj z<-@sGY!~DruvFV(H?6LIZM3-=X5q^jO9SdLw_wH&FMWdbbQ}yB4R%WRG4qci?zeYV3N~+E?-SNO$Hb5 zF)z}kQ*&ZZjt}Lm&U~WxYwpeeP`rZOg!b)5%Av~L#ub0Utj^oI++4|Qj4kGK5$Cgk zoh0KaWav&Dx&D1scDMr9<}*H#ciVCU+Pc57H@8!F##v01{645BLE`z#xZr>TNc^Re z7qKtnRttMS6GB-FVQB}W+TPLzbh%RHUp1n8`s=*be^er!ka6&3sqzZzzFtPg0_EtG_e9m-lKT*+xnC3gRdo@q`jC$HI zwX0?7sKVx7IB8pR^tTepXJ3s^bS}~(c(~RM3#P9-p7&7o;goXXL;oF;*t%x&g+{@X z&9-tQ<9Nix0V@*Oqb!~n@;SfklnLb?|DRBhw{(?Z%ig5sv{c88(^Bg>grjcz4<06yCTg|Fb67@nJ`$Lqo|d zqR$5qQwSzErT}%-zS-T5Oe_cE?O5UD8GvlqtQ`&D0WE2Mq4`Lxql3u@OPFDhUT|)V zHfXKEK5mCl!c=J7l8vgm*WCJavzhtw&iSIPsSghWf1{vn(%SSVvhmWnakA#m`%Pd| zldT7ms+4Ui+{UMu*(#}nKxNXp>4CUZO#gKh+nm4oWRB}4OXdHU} zbaCk$Q}@m%%t^R?Rih1RDdu(CKBlx9Rq`NWD*6zGCIA z6p>VveAg4;BzpVjp%C(pr&L+H?66}zEsQ)z414)t^>ld_N;!y@VkC#d9L&1b5w!i{OlW z-#&u>nw-1bghk2@<<$u3$fClgdvb2Yvvb#&ESc=RAAUi^oMve+e=U?yO-s$M*dTeA#W6~Y5WuY-FzF3 z2Rbi&=Ux0g`$w=$J?5=`2QKcvw&{Al?P2I$VZG zmj9CN{Z$XvF$TFIT)M%vJjDLTM@n|3E6)wqp3N*(kzY@@?G;zHC~v{?(x(OuS|oB>qHV5JXe48QIV)I*B%yCR3vKqZ+zf z)R#e8k}bN~msMP2FIi$TRKtz6MsDw|d!Fl0ukYJeNXkAD`o9L=slhZoG$>wklg!`g5;=Kf|Z z?e`yIJi93`1d-ypDGwvMhfF!lCvpmKu*joeO~*?@OO~;)&0|8pMd-pqZxRD9VFIY( zxpp;a@H>gOkFLP}VmM(m9k@0WwCUunbaXNR1s{nW_*V`M<2ymsih z;n1oIz_GrB)I5?UI3)-?I!?+YHIfi8k6ol7%H>?F%g{A%=_?PLfz9G@H?9&MIm3^O z1rH;Uf5P;q#^Ip&%IglL&-ZuH8pI|hKfnVGNLx(0e zAr~;G{xi3F)I{a6-sS%r(H#kzDnqSL8}YeTDtcMO9?c`hG%b%d0AtR+D!J4yD~a5Y zd{N<^TC>2)aUBI;S~BJ6P*`(vv&}|b?9^>B&O@)&8X?5LJg&kZlT}MSLP8}aiB{g4 z!AOyGgG*(z0OMeG<@=%}9Olyx(uMW$0ypH#icn(f8aOpeZc=GkJ}5$3pZ=jF;&fhw zjwXk-1+yHcMCw{mE0BZa6f3VpRT{>-J&z_j2PZ4iPA}sNIbkHK>(97X&=bp=W6qX+ zX#rUzj|L^qTCfi^U$$&ui(AhP0=5%K@T_fERqU)K|8xh)JE%7Oh2&9{~K!e|9LU~^IBAC zK)5L_JAcJ8G1@YDfHUGn_4Md9fQ!>vrC3AIMfQLb;epro##|0hBr=&W5l%;e_Qhm2 z(MSs@G}~a5xLlIBAgm2V_c9}>l?l!dinozQCtgXW(41y8tr{NlUU#a465@ydlYQR& zVL+MwWO5yEy$>93c|9`!vOJijc-T?If7q+{--gITNKL*oxAsxZ+@3#r2E2k;>ntBJ zF1}Flp!VVJ#R|L_eu%^QV)W(iP77kad%@|>q;}7w(qgy~25ESeVdxI&V!Twq9ql^6 z`BqJL%kOPlTwe#gyyJcK{yon9EAc*z_a&aI3$a(>Pc3U@AChzf!0W0O`DmbcNyYn8 z9{kW`e%i%cd~y8iBW7(p31aq7XUPWWizqg*sTtBe4Q=}sYn zBDx$ragD1`8swDhP7=rOhANe*kmY+W-PsZAV`e7Sl!)h>@n_oAV*{9(epJQm! z(6GXWr%~9>?)lopl}apxhNknQ{G7babr)K(`9(V8p5?W z7zbKkZAd#$>)tPvrjQp7A>_ANNfg32OnT=ZdBNNhhx8$3YPco_H*;dv+nk6luunKm zOkp*K6AFVk=jbWjSH_4QHVNMxIw63WauUSZg!H^Hcmu{f7HN|-&WEJuBp!uav!Yf% z*@qC(iSg40#U{u=vt4ipvBwg0T^LQU-g<>_w?Dnpg|bYlI-4uCZBB#{Z_P^PId_Du zJhM2U!Ez`EZ-5h1=y85q7SmMb$NFsY%yzV7M;jx23Jqm$tKc=38#o)z2iYWvnK{mr zAY)<>5~q!RoRigO-Or^Qb(PGZLzhhR2jzdF=*`5ZE-ScAb(c+iR^%hrhtsC11;nfb*U$1c4y z-L+iVvtZWPE|ynb*mG{3jzGaask2AmKg?1VJ(2!N6J0&Q8z-&`$8pKcz5<10h+Hw_ z-(<#TI_$u7b*Efl2^`&(fVISl&8|9UH+HTB26EM^)n_<7hb(HOQX<1_gMs&}8a?pe z8&XQFmvwVougn^(%Io^b(9IJ|C+{4RG5*8wwA43b+!h3Diwmt@mzF(AqupQogJPnzpJw2#U%5^lNc zJ)SMX3$mm+R4`?}!0}M273vpJ2{#jZyG%tm(vR4TS&zLTOhK5WuChwCYG2V64koFr zjtD3josJokxvcZKHj^x6$%T783(X_Y8z)+^9LjK2by5q_*qT`ejpLAGxoBW7RaO2P zZZ`ML+`#vnYjX4*%Mc5c(^i5$4&8_r){Z!KHIGb$l>g&=PaQf_hg z&RwvP=zz6Ea16QU3iL|ny6Z3Z1j!GM?4K)89j8X2|QqN!TwYDw56I*V=P%rov^0b+;rj zgmH!=R8&YnvC6iBxNZVVXmv=|$|mJOrL!98*Mih9rFJ1k;*ZHXF{ThnXk!!F(CZPC z!A6VYSCknUrC-6BSjpJra*=LlqcXlrzbs42Ud?H&SLduSfi-uOs5MAPmYbo2nDVwk zS6Pjnc{F$fIR5siG*bQXqzSe{-jL5Y0$J56T*hc59Jb;_9^FPFXmu*wo^mQ-^oHm5 zvtU1w9#$4^*jcg%bra{FGNQ;~$q2xVu({-Xf&;P4nn_nUJeoqrJvpDobsF8r8gm=f za0<414mrH5JI@JqV~S~KGF`i(S8;)%UwA`Psq>c#$#@)DPZuM3Wa|Fc@la{$A73X! zq_8O!v-TE48Cm8TY!~_%rMKTNT%2u46V}+^>o>EhL$Na0@MtkMRw2&CruLZ; z7*Ommq%G_a*`2dp55av(TWXu@XU_k51tAjH+9)YM)C7SB66g`TBzT*a=y>Y>VL{=4 z4XF3LOdJ?ab-*#Cr{<$;c%aIX<95~Am-4>sH&aYUP6wYvR1tx)+`W>cnhtQ@&jOHe z>8fgY6joE4g5Be<_2^@Xp|NtROUDktmCct-ykS3={pC^*g@Y)~%pc?wc zTw_~N%;ayMHPQrARLR4AEW3X<2wrnB`=Ra=okY8k`FmCO-DA+TL`8h_Vs5fo7KX`@CSXdNrQu~yUfnxOoq6OH*mfh(E$Spl>OQDUSd8Fs=f%dqYe1&Fhjn@Nne0r?W zsE265ZRBczvhI3&xmnul2{+_Pk9yq?{DCES4iPdt?KqT}buXFq7}l;y(7D)zBy2iQT0G}XXEuZ&i*ZUp#Zc-;WtDenkxc0DOwzOsyB)v z&3?-C2We=@K+nd64Vac;!v|6M1vJ|oBAPAKnJqTjE&b*T1>_R>=mfm~imTyJS%7&g z?w!d0#rjXvq?0Y_(mpD918y@z7%~g);f8e2wygAdZSIY)AK%3Oh+>eo;A_;M^0%+X z)L_ilg*uGi6>#FTC>Jp7dEe*~-<1XHPOVT0Iq0eh@+xzv5obII|8MB5pE92UUX|zX>NF4xUgb+A2oB1{#hX0V`i?>>i;O9WQfsuPFK> zkLmXa>N&g@v?)YmFV`D$jLJ-X?C$a{rVN&M7X1m$E#5ZeYvnSy#Y5cI^6CSJ4c4H~ z(epY-c09@QEkez)0;>^@MIo$ydhBccuW{o%L+62H_1fZ`^iLw@CA;}o(5mX4Y01XQ zzPeokV)AeL=wEAg{{lugoeS$6K>wg$h0^TW5ib;G-Vq<$q+|^xcr*w!0;_(F`02l!o4*v@i+%{&mF)9j-fA$&JrAkvta<$%~F zHL)cWfs@Q$7d@Q+=(<9OPq?%GeA%z9kAFj%VRf2sel*vKu5w2w|I!k{ULs?MCo~54 zzhndbhjoq-zg&0253~dG!$A@K{{!*-ck7|xSbkU_emG%YbZEm~>e^YX-hgbeuxM?} zu>maSh>vyrpmv(fQzZ^IO{Dp{JYtH}!V z_!!a8K}MF8sdoydyG$E)`jVG|X2jBBhgKhbWY%uuTb2c5qv}fubj>ml>LU*W0?VlJ z8pD0wU4y=G`ZogMQW(Tbp^POtbnnsB)+&yAUC*q=(s)b(`EuzQK_nWqp)P4K1G4}9 zho5`tvUT)R54E4V(EpEh`9D?BwEq_o=f8OhCCApu0Q19zeESFX-y<1VHR9!gL{~!; z1&J6s`wIwmV_~W}ZpC%(L&q8$3+#ft$PKU;GB8b%Fy2ply|UhSZh8T=2vYJPlm2+& zGC@50OI!00DYbV(^m^{3<1-OvX3U;hTWmz;kT9@EvMr4YacZ7@&Wxk75N-%v97)hR zchHTYSRywtj-^K>_LYkI$RaK^+%hz0nLG#Wq^r`f$TmH&eK&M_F9yTz=83d?h0^AE zhsC&c{h8qxrlAcy82yuQp8v)Pvrx^$k2|NdBMDmwj0&uikFWg#wJXL_GoDQhFY^D7qKUh>%h($IFCYF%ZwN1?#l@FaNruExNxz_9AfN$O z`00L?0%}ZF2x7p%0eCcm4EP|4Qd#N0JLe@ss*pSM_f-al!dfO_igOle$5x+i;W zU4f39jeAvm{vf+5*rOu5a=viW*kxQ_747j*_#Es!x8sF2&rZf-e*mFAFs*+OVK&|7 zDp;Gc_{M!t1OsyCFKNoTlO}PGVrMQ3lrCIuUAFiE+^}1x0sJIAx@<2xsL=GbKBqge zt$JwPlcUeGkM;rgL5aNLtgBwoUH0Z?`#LC7tdWfZhWWzvFj4M|*Ycd!fI|6T6QNYUba0+h25FFqsB2VZT&S zCw6UHU)Ddet-fe{V{5&(dwK18y}t4yzoWmiaeRdUv1LyXi(m1RyocX~^t_ID(-23f zpjVQp->BbXzdc`iuw-_fBB(A%wZLVJ+Jo>NN=KX{a8~n6PJ}1#OGjM8xAOfgytDFYV@Tid zyZSDXKCun_1fiWG1W>c6!FH7*d)cz{!!Z8l?V(YG%th)4jo5{v?IICs*9LcIP)7`s zWtqtf2$M5E%=8#Lab{@5^5eq~&qdbB(8v6Wbq#}X;*F0GSHcplB~`SBWF~VBE2E*8 zmJ;oSV+7y0Rm$QUB(qTFpD|UiPEnk2iC~wZUnZAvig1^aKSj7744{%HF3-*%B1ciE z5oWX9BT7}HN@*ETuxCIXxBKzM2X=szo*i~-?;}^4dsGTlI}Cue$Czyniz zu_Wa7r%ar2>4o$mKUFd75DC9LhtIZeflipKkKIPiWc@(6*gM`X4D6F(8u=iLmsTIW#GSLNkd)Ped=DhH!P@c>_ zU<`Xz_&%<^2Wd~dSnUu|0g-NLMp9j5GCaS3UfPnQV^xHjYSNFo2bS6*zi|M^I^V9D zwYOw7G{~|y?^3d|i`2|Ma0zQK$}%pHub$G97|~wZk{RKtH9>qOoJoA;81WNk^)8;j zmbEv`GzCIL$7>&!i?EPQbNlZlUGhWg!U3|LcTZm-CRCgq$39$i(8gm)M);5PG>$;o z{NQnfF5F{g=}BRLRKg1}a;!Z4An{Z9aG6_x2bcJu;_9C2-txnfdFV>)lN8p!J#-4# zwiT&cD&+3G_2W{voCwrXx1XD#aLY;IBReRm)FGvEs~-9S^7ugr;}D1Q9Uh^2@}!(m zMQYbHU|INGGat#Tc#B%%){npCRELq}r9$|1hG2^iymDx5FvnRKc0CvQ9H;gL-szTW zBPxFj#N3*d<1Gg0mcMl^c?nxMGz@(i!2jy~r)MLqyf_h|4mFhqs5QAlkEBSU$!=%~ z@o%@Na_w}Lk{rNAL%gfHwZ>`~!3=*9kXA$=;jkST*HcoaYcz>!Ue#RR!Q9u~<|t-C zyVKvdqpRIwHK}vYj+U;AWW0zJ`jEElgB~iGxBe0D_$JzhUj_Zb0&Ma1p!R*`*u1M& z+g3p=y_%#~nHz0;_*xI(S{cZt$V{`hvCpDIf)PT8l+43qI{IP<8d_trf}LvsyXmqP zYb>G=D(GVs*2BJsw{Z|vh+_3ubWVcS!0$?5!RlnwYGK~7iU#1rxHdihdN<9eLX#2; z-FFU8gCEZn>|F%XC4>wQ*X&tuG?~bX26UNB;;Cxe2`b{9RNdnjTNP!P*n*4pY8J4p zDBUh985qJ(H~w4d+o9R!~h~XGZTx4V6D10J22+ zinw(&t!qsTt&4jwizF-CSKeGUVhQf07Xp+{9|p*IYdB88d4YTxH2VF%F0qVRm3ir% zHAmw01M~hk1}9D7Ez#l0r@>sZl{gf2Sw!wmniqR*1v@KEu!k_&fwgg*p)+HN$6Fci zL_L}_#KqNlRYilPyBgxd_t?@?bgCaHsKvZs56_o)Chq6w?h2-2ubd+YwS;v_Nd@ty z5DLp&14A$LAQb;Lm@S*UT?$x*Te<{dZqs$#_KtNq zBd&TseM`RE;WxlIEZs>ZbL_|^dmEHv#DJo={J9CVF&;~Q7>{$m2jdd>+Jg4C7!kuN zcyW0Y8II@{gt=8R!yDjZi?=F+gu0&2sY!Ws7hf1M>BGG* zQh66jh%^`CbuzaRc4fds@Fll=Q%xaFEQ^R=g6oJ_Gq<&6f1-3&Lct-5J|1-k3(p0W z{cG)C1mC~ru;HoE(Rn3?S z4&Rm~%()oSNgpQEu4s56n_n`P`G?^puJ#%UrWpYb1i+A_2%EI{{C&9y;ryE&+5&C! z6>dtXD9jF0co>C^K=fwf?U(Rm zz7y4jLyh9WwDs!oIhJd}V~9r-ki|GvRqEo3nb@hEa~Z$t*NwO|V$1|qYuJcw(y7~| z|29YplkL?!FC}EfkXpv)WQcl_3x@2?{wx@8XUV$S*uuu!IYxa$nHp_ z^5$*3iY$_ZL)Ag+heuBv40umfv8L{ZLPlfLQ(Jo9*hFq&r9-J^hqBIsV7NcHkrNh%j()M%A!%=7T zj@%C%ezEFStyBllTFLNT8?4LC_goO#+)f>eHX~}cIllGJ%5jh5=2%uwn_nA{M2ycf zKG=_nJx31K2`jCl5yTj0w1SY7tjQ~&#nD7@U6O))X+WoD#=(@zl;HRaO4Z3JROrWu z1IyfRh^gIcWaZR}&T?zM+b6c8yNR-|wjd$7wr5m2fJ#G3=w#q2En_9O4BYM9U2(d0 zzeypQ(kv$9nCv0ALVBpbh>jZ2k#mDE4p9&n_V8 z2@>!cFNJyOFnKp_q}j8cYi$+uikLIEq5X%V%)S=1!%}PJfVevC@ z_#LeWyqHqcx^GSnnS(Xr;M0*eh0{~JD0#5nyeE1@cw_UCS<*2)^NMdzL{5x>72<7> z)KJ>8Pnft~x?79Q5O2R{ibzvi(~-5E6j?p&ksHW-OPh#ygzN9l0=jBR)FN{sZ(~q! z$K{7Ocfy)ovL)J}JNt`s@TS|D1hQj5D`vR}pEDH>N6o3ToG}|#GXYooT<<*G`$-vK zA|0rOxp_|QPZlIbQzGLtPcfL35khB1_hG}5;1u=d)H0Wf<BH{|#rLY;o>yUsedr@Vj0APd@+7Ui@- z20C()1UwA&mwC<9l~-2bi_l<^Q!giE7&JWOEn1FI9SMqa=rr_A(A(mUk#|EMaK*g7 zYHb@MksjP4sJ1{~3C@`{_@0ZT|{m@<`&7kaiHuT&qK#@qYTc zqF&uY)LB4Sp}tQ7K@Z9=!y73tG-wKL{GY@-8Mp9X%mc3bzx_Pbi|}E@?8HpOVx;$k zE93g~F&e>$^2M`H(X^DBjWfI2!gmhbL2dPa&upT;_6co%6SeAj{$ze9W~L}GIUVPZ zZ7QoRAyX4($sCKOv0?k!7&wUp|TtM3Bkq#!)S;bN#$Zbh({pSQh@m?cQ;Rmdvax~> z8t_d>a-UvkW_8E>Xm+y!sFjfLj1W9E^^DMBi}-N82%`PFF=ZpC$93HJ^>VB zUOk7g9aHEY(vNHK0qcs|p7uA(u^dBGg!9FW%}`N}K3o2{5XER*T7rrbO2zPI-?>8= zqEkJHFM{C+%`>Y%U55hm3dM0AGlJnzjb&Q%bp^=LPd#T;m>?=GPbJzMK^i5E|DJ5j zWkUBu4s*5#$r|S7G&QocM1WySDD_I@o{3L7Mh@~B?qOYHxzY^snfwWALnJY*%nn6D z09J_rGmT;M7sR?B4#-Iz({iQ|xj$u$WMzKKj2xq&vJz;ndD%x&+Qf0}BrwBoI=a6? z5z6%k?F!@3AA{sTvT{r%Fq`BE&8CuLUb9`n-6khx@>iZpLhpr^8RRTnYl?z?f%jU| z$E$~f;n1U{e>3bEidVVfOOL?z`MHi?4y{grg6YwwWjvA~hje6+`Q=;70`rRbYg^y8 z&IK(ilYDUYV>5rTQXU`;Z)}L%xPzCUvsMJUX}Fh@m) z8DS$DOI!I8mI5ecUc2)$*p`w|2*WOcYTK+AwylvML|B$OVFKH+6<;=n0HU#=RYH2ERL-tSeMYdP<*YYega|>Aeguw9>#< zWLbdS#hDACR?S0!uc@zID*wAgUcN0?C})2bu_TNSu}d~(kRgKKQ$H>!g`2i zAdYk23%VA{hQta{6fqRR#QaX3Go>vhE8o(EmKmYt=A49W87Ft%4;b&=ZT+8jJ)zwIdG`?yf??fb@mj=@ zhigPT!i;YKyz%|UcG5USZz3*pQ>@}rEl809f))ZGw4|pYx?|*YjBbQ3?Mk}HOx@|e zUw1LQV57L_zS#tH1Z^%9C~4!9FdiY@iOAQKl%;c;rynbhPJ^&Sj2|}AZ2s96+uU&w)3Kc8ybJb>?UCJ!zk4!6P4-0|C$>TG>o1>+XLuuRH#dI(4oys#Hz4y`Wp<#MM^{(xu-ATdt zVw61=GgVQV(v(+fH#Rq(2qRD6Nopltm-WrjO*cO-Zcri{|Za1**%oYCtz?;5KS0WjZ@^xts(lHmWnAXPm_5bnLee zeRP@`dTP1o^xTd=u_9$HkpWs@r!pfMbNcAJK@V?y&6GdZ*lHvlgj3GQrE0d=!7c!P zQBW|Hy+(jvGozTQ4H+INxCm2-vxE4cJ2aciCb^ZZke}o4g4U zB(}bl*P!HR5e4bC&=7nS>Qk8BE&uTM+0k4d3R!)#Ez7oMNQ|}(&)-}RggA$P5Nvvi zO}QlZAe_$!vDV@i0XI`!RB*y)bec71U>a;CI1zY4#VtCyT+{cMWh?KQ%fR>ch%J6ltOHq zgJ3`QI%dB(*!#&qYbkG7mBM_Wd!Mp}h?RRkC{h>?6v8ueEz@!f|@6qHW>4|5y<|{|IGM5HR1dAlDi4og@hxeKNM@-MT zne0>P_SdZT6-?7S)yBw^tF{6s4f68N%{Ivn7#7H4vAXrYkI0VE`yXG2Q?_*Y39uU-hKxy zhr6lL5j6k1(3XR9-;G(kw+Pn7`^$LR@-8%WuB=U_r3b_=;fqBdZ7elt zCH{OBaV0pAW;z)_Z37qBt)gyr&>0zE9=5F-_VSPhWB&xe$DDBRr^)ByDDQ{5eQl*; zom5YRC`|8&2Sa&a?Edb9bI5Bf-P1giYiToI!6dIB-QzFz|%?FWr6I-j(CI82ED6# za!bQ}voua;_7$J-1YF@{RGw)uGx_YctoV(T(!-_va+L4UJHQlic*^s;e@?<87ro_E zpCX059Z5Us*(NL#4N_5NaVlR=kn1mq9jjEzy0ea+EW75$wqd&so)6}RW|gduFWIme z0Wu?PAahO`)r+Z2Eo?4m$hbmagE zg&L(|bbOC{@ou8`hyFj3s@d_8_?0mY&6>vhXu11gdouy@7C+S4OJ2h%iLVQT)^NQC z1Yy}gX7JgTbxHA-92FSw0j#o{POj>%8NM9&IzlWfw2gyshIbmqVHVqHaeTQt_)tZ> z=UL5cx;}wJ_+F-}Rzovv=Y_42;%nZ<^V0yrlc-XuA6J1C5~GQjw`lHCwOX27LXp+S zywhG|2g%l)%2pRoo%mnx9+&0@gyJ_~9f!20(4)e0;%ZJUbyxJ;tT!TKdXUyerT_-I zBLP27T>yaWncE609<8EUn5nwje{e1rn0iqc8$$sX8&k6itMHIzmI2Kr7oN@hS}cvK z&fJ>1(|VZ;&)S~cvbwDG_Y2Q}K(#P;oiW-0N2nbiD8yf2_O4=J^>N)jDo*|@FpU9M zAyJ4G#tQpAEV7>Q4VYSW7A{qm`phOEgQJ^JT=m}5c9<=DFlZpU=s?YM0A6<7uX+HW zdgwrVQf8xT>Tv!)ngmm{{W~P2ELV!dQk4j+8I?Mrv+b2SGqnH(Z}uf8gP&`1doAyN z5pcP(_F3L{SD`;7Bo*a$5=kG=;@@E2jR-4**8;^6<#db|_2qW0<#wuyLk`vd9!r@g zE$pcGM#2*3w&?PT8?eA`LIj39;pFJuSdsO-!55=fp#==mpZs8{r-mN5M}4M458mjo zXyniz>F_krqUO-(Ie(Z&r?&vsg{!J}pa$dl1|LP62ged!$w#Di$f@Cz60YSN!6ol2 z%($L}_A%yQO+E?KR`1@;8O8(B7&h^_Zq=&JS z+4%@6wujnXtt$G9|B0Y}felMIj`**@<FKDhJ&T?D*-zN>dO3#pJPGtpnNtQ3XJ zi$y8_MUqW?%CAR4Wm*G!d`QLbk=oopa#de}oowqbCRZtgr>VSzB(y1Uu@a1Nyj)^M z_Y2lh&G?fYT3+G7kwZkf+z>_z^6hPi{D#4>bCM&`bR&~p-@QEVQJ{*7*|KTC$FSfj zuaWgaHlXttt*gvlB)fh;yvv^N3eD##>e zq@#F1VHMWIiQf!9a1Cz}e;5WoA2T5aq)CPVCqKDt&J4h|qV;a(^oWTy5~EJx_Mf z*22XOz?hwwv8Swk*>=#IFf9YP9iC96XU?q=^sRo7t(f{70~32XEb!Nc3VS{+XgGcP zJ0#{HKC#uNsOu21^{TlUn6slreZ1E}q%X=hlwB~nM;v?q+hDUdx_x{<#N5N#{>LvE z_k>>*-&wu@zB{>nxdE8E@cFySbeOuRa$}gdAxV%WXeX64gvje0z?22DOZ&PPw(Sux{0ij3ZEO0b^#qdqCmGVQ zvP3IS%!V>@|NDpura~&a#&xZW)!rHOiWFF(K!f4%GMJ3)j^f%&9OW@D8gtZZPd{;rjEKl-jMIf+o%oD08nPIceUfRYcq&l3 zO*oU6s9*4YQaG}f)~y`}IarTK8M(=h%eb{)pluMEvQbiUTO${?-4!c39CF$PIgPzA zcg?6{mv!x8Cg1$X6IQNo#W8Kur7wDBOXCP{*(dLBy-Nt9bz2dzExB8ZK+k50t*vuc zas!%e+Ga#;3HN4BjFOt|-roROFgjZ0Xhk>3Vstw(+Qs^EQVUhGNKK4?|Ylxj>fD}+$SsD0&D zkc)N3_Fx(@Kn@gJgQ~gIJXo9bv1{Y1eFs%=aQbW?1f*6qb%32A4(~jcel+uC*oG!_ zpR(n+X|o`Dl_HJZKqgjTU8R+&0NrDe7o=L+Zp`kX(*pmlu^R|4Ky zFm?mT$-y%E{0!bD#H2|l+lmDUsgN=97XvESW|ARbjA*4Xd}0__Gw7Qk5PDz_`vfob zs@WlHp^6|2KpGbe9B7N4X+W(A&?}f}a_SpUr8A5wM1|~uKEXVd0kg$lKy@9E?Wi#} z4HaX`;&zdfNRBjP9hi(|bWF_MCY)>}?m|*L)^OH#VK`h#dphuGufu~;l`6EC{Hj?+ z+qLOKXI2b6Bg_*rcbQ@Ya%3~Coc3YXz!Zt29l|k2={3*n**&<6@v*B*W<q^ zjNw!V;+(Z z+ZU#2+Tsa5?g#Js;__R(IQTGNU5|c}RErZ22!;iJtn%tMIxoLL0T_(6%9y)>+eI5L93`18hHFofq8( z1YGHy>RD4ma7+KxB!FMf5jXQw&8cpMS9&x3xM5k1vR44--57Xjka77tN))a{3o_>} zH;%3&nUjO%A0*gJ3^=@!&mI#aG*vGNpg1w8Y!=ik36vZOF551~{^To8K&ud?|36 z_XSlFBa{LRMLX9X?AkZUj9kVmd?PAvSKHwXJ<7WFDba2t z21UvaEyOI#zJU%3o7<6nC1Up(z0vvlisp|2c)^G~&z{x(1jb&#pbzd0%$?&n58M_a z`Qi;+2~k;N{+Vpa%8H#oZ5lHKjABUkgtan$)S@obO7<#gDgD<$%{=QR1VN_wa~0xK zo)fp4oUDMY8>!4Y4=88IBL@ndbB7EnAN*ZMet|38qQ^AESH@jbJe7lRJ@0xJ(+IqW zD6Wt7L?zUjx3YB8R^DQcQ(UMg>Dc4XdnEQJBCyUySnsYozhdI zvRhLo1Eccg^=uOzb2J|1uw!qJhrVe#sD~R5(!-AY1axoTXODe{j&>{E(7`5h<)$Z{ z_*+9po2ye+27FCg#HTN{q8zGRnv$LM+0F>#H=1c_rCG16$oRqENVv*yXZS z$j&1^@RV68PmaJB+u}f|z#lG%kr$iv5rIA`F1Vw6O|fCzTuS_l7+UB{;!B)VRb#1U zK_CPvwXwIb(lI%|O+iN{^UFDIb%30NWz)aitG6hK_4#{ zNa&0Gueo7^od>jd$C)G-gvpB|d%%Q0CFlR#4K#DuRIS_rGF^yq9~Yc(<-=@N3P_wM zWxZkDV9_*OI*ppOQngNybO-n;-&8^OB9sv-%BWA5DwQPRG*lcN7|m!rV%)q9ih+Lf zJ@3r%JbWP04uFoyme?1l| zeHOx+oSq!;GE-wEoIf-0jtZf(@l|FbzFv*x*{vUo`w*0UsPL(Qvsql-tOrH+Dv zhAFER$Fq%Dqj$B?w=QUh+aI+Of%Kl#*b<(kW?ivPBECeOP@f!H^+N`Ib_Ja)Ax9ya zuR)zLjhasv{DOXHx#nG!0wQjxL>!pKS#-D7N`qSTW=`3L4W@+vVGB~B(>U#K&JNs7 z*#7bw&&c`p-3IH}tk*WQV)jvpn@6Rj3;tpgF=PXWh4 zp;y|zO3i(DgD}mlx3PhtLNRLJn<(;@>e7i*KHP3FrVs7I3wQb`n-EJc0O~{39&!(; z_m|A+x~MXX{wr; zISUtx6AZh;x33o99m$jL8j6LBS^6)1$Q?8X)Bw|cSGb2yn@A7XzVyF$u_=AsR<`{z z(_VBl06lmzn!N7a(S}4VeX6>obe;iYn9(k5Niw#M!V zU!!ZsNjC8cp^5%0!~xtbTO)RZ5$!n8zTlcMUGo9kz$#z5Yh$-zP4990gg*e^c?A2S zJ&T5%h~^FZuG3(ZJ{4{Oc4ohd4aLB=sumDntWS$54xjxXMENWK{124YV1LQCN>L#_ z@egVF_dDYi`IL7QTcnCoxg4c^Q5RV0TPIY&)L8H%Em}ao+ir9M?VC0U1l6RGh~P-( zyWt$)kkCW9BW#Z>oC!V|zSsd!zA&8eW(O+1K+BKm1~`ATqD~y>A&Vv+yM*KPH0O<$ zaKYAk8P*Ba?rA>bO4rM3_Us{VIQNuL#-HgI=NH(CN(MTP=B`Pa1?hx%e}SQo{i2hG z_fu0SjDMF4Hr=kgc#eQKXhl~ItHuD_2KWxA_V&s#wzQNq15NLkQjq*)Yd_|&QY(H0 zvo7fF^`KjRkUt;U5L(*k8@;hYAKmnU{LtRta!s(qj09VSYM_n@8pE0$s$1uBgEB%H zV~bNTuldfDEn`HxHUu{zH%7#QTK|#*5uX^f715MT^tKB1h%HMi)+!fsUs7xX>!~OS zzc!Pa`>6#^y*=fL&;4TnoT5|u1wh`DXcpJ$1O8%y9%4zMi|SLi37M>Wpy%N(C~RX& zQLos~ghXD<@FS`e%k|poCzAJ!`qE-o1+Xsn){gK`oUga(WNgv7X1sX)0o_m-{v~Y< ztD71ki4#j(b@6_&V|qCYwu|5yZ9n!UC(e0;qv<#{iX`FM>peT;-0Na>4R}dP_v&C` z_P^~qu|h9Uf7dKUA?B)&+brYVC3kd3*V)SC4!abI?f`JL`WST}{*3_^zlcp=HV7Z_Ue*HiNPwgeH z)`l=fG9(vl7O$(|%(4_lIc(Owo!J@$xh}2@nXqY|u1wFHE!O3y? zy+%tBPP;$v6XJD}&!fIf7r+Q$S-u!xL`r}j5GQDiw~YL&muyCvByO+|YdFH{i0gWn z1H!i$7zdBc8HP*THW#yS6U0F7m);sBeMXQyr`4|SKNd<+h^8FAQ_uet;5mHniW%ko`*y+6ZG{&`|{Al1#KI!4MjYEY?KD zT_<{076ED9!Vs|vDQR7kAti^Zv|)1Cxm9IKzb)cWqbz;cm*k`#Zdm&zBYm_7d6`>j z>5jW09u6_;P2K@9j|}xO#E?RdT2}Sr7364;h_k{?KhTo&IpYotn(5F>HIT!Ev?i}1 zL4E=!{e@G5PTKjrCP)VshC8b3Ze5i%vobHgPK@9BNLHV}9)D$+uyJg3ra*xP^E`@`7FN9kzWHj4X zPB^Q}6?$lVi{_blqrGEeq@mhTqcg2TwS3uVeY_E4ZkV2qPU-!pSvaI+w` z*hs_>^a+{Dp+_!6stdU{$xE6AB^j4{5HqR}&ji-wh5`hTqi;A0Kk z1@;sowf3BMYC6w8V60;z&+0bC6K_?0TFfTi71bIG8D+nun17w?Qeu0JU%z`y}&VGZCh4V!=Bxga9>>r~_9XM@s^0g)P@U4EX(T z`HgIQQ02nt4h76o{WoWEi6?n?;X0h;e-2W9i6Uo!vzk?Z>NFl7GgBIRN=+k!qI``+ zC)enjrF4pe;w~0sSJFr+boWSwL2L0ilVnd!#~>R$Y&*i9N7ts5Bu#OF8JNs1xSZ#b zl4&Ah&IU9KpR za*x@fs$ohFpF$C@>kHo2Zb%}c4iHPu7O)P5-WV{)&|!kL^+Xkm>1bmvvkhEuC&JEW z4xP=&Ty_S*h+lgdYkLr|Md8yn}7b#2intthwTvk9B^PySs){-G*DW z%+~*HL$SyjCMGDOCns9We=QN|oC={L`LwAiu0wtkjr>M;3aHBFe}7kO8e~h&4{L2l zKgdhlSYkT0B03m&HiNr8<73V14{p$Ws%|}^c#b(XBX*-h!*=i1`e^_&Q{5T_qxxU| zoFWS0Z9(jz$O}oxzfpOCz!4Y(uKnuw@>>%R)=?Bq@9HVRF~igb*m!kMrhy{rF(=M> zX9DQPt|}Ce0u-^TiOnB`u0aGFhw8gxafbd-NLivRQAqE^Sf$UhrW^ z8B}C$dS_L0O79%A`aj9sd?#G*D!emgPH7{%cUvEwc?V0KOdL7+PO?61aEA?q(49fwIRn3# zo)GPZ0;bydXPQe}B^KHHK{)0>JfJ;hz^p*Jw@nfgYT)><2_d2yhM;+NLU|8x$PsS` z#P4yV5%7j$c=|EDQ1fgonmJlKxJN=6#W^Jictfb~XW7YVss3actyeicKfJ?BH?P%O zG8DxxMD64bI9yx5v5v)awf&hw|t_F8|@n@Usn;)QJi;#=h&3BA*47H6AE z07hYrnns}MnQ1Ys>+r771<0C|V~yM1-^|PCx>x_q+HlIp#JL*}-lq?yQz|3F_y)^v z(YM8&9$#T@X=;$jl|~)DzH#Qs3uH;DB}bc5yGvh-+|Y z_Sdo`{b`tTj!((3rJ1FsicfaHHLJboQBZA_Tk$yK^@xr~x0!*v9KP9Q3fMja%s zmP;a`S4-90WH2F**Q;C%8#^$k3^CA4&h)s_^K5d?uP5s*^|1SME@O;6_J=#}|4rK{qT%N29rX}^0c`3&e z#yK=_V}|r#x7d<8b`uV_lh{=LpN|G1eGuh+IPBV%>)Cc#B0C>Uwj<}!7*c*)wSR&m zX>?LkzV=M$xufltWNFfBmCCvR{Tk$enR@!{o|QYWVJ@%{&D3`*X;FEOjO>YMNzFv9 z%(9=P=%X{LIpQYn(lFcXE11Z*}6cZZ_MqlKh`mVm^d}c26 zWixUiOKX%lOIau<5k@7OO}W{S<$fL z-FT8h0(Aa8eUifDs+GJmccg3+@|6jb8oAm+zi9=_f-5W6d3G4IKy7q>VvG8ybbS$M zPhVk2-v%PZ9u_?<+Qqty`5N(@#2>|GXkjBFyJd6gxTYVGiH}){Nbe(2`*Bq-IQ{i( zYb!RwtUMcB_foxcX^ye2BLUWZ{L@mt@WKeNb>k$ewkD*_^=@Mij$K#V+2hmmAD53l zncoF6gQ|~{GURJK98|8Er|p)8aaE7Rt-y%g;dm0d;q?w`SC6yqXsGQ$=UUt)mRqglBuCy3Ya%sKnY#iQiCX8l2nRJ3U=fSeD6`d zY9_~H%bspbA2uR>pKMhxjhQGo)&?!$!0>d#u+6TCA=P`(ku_eLAfX@!|1PoyX{objOCwKLOpRuJ=W(Td`fvDr@1|%NZ z>Y;b*66v(&RT-jH`z=W4*huG{aLP1-b4?}2EHdTEva6MY3u`b_=H#1Q{??q6%+yJv zp18ppdA4cl>PMxfi^Tu^_?Ouefi~| z{35aZGMy3eg%Q4kVh24NzNfG>@jPn)4wMTUB|`zf!<@{Ee%S0I57kI6G(r2KAK0F> ztyLpGiGw9sbSc_b4Igni18K=pU4kQqrOA36IW#2y(|MeNr*(;l|kd1^yqc=6_^| zd8$rLfB#|1vi@Pp82@jwLqTf;BP(kQC+GhLF#T1&mPJy4=V{w+mC}Grw&Sx`2yms) z5f%Zh)+~&W5FrX3Lie+7Ycp}UPP}e~xZRg}lS6`vAm#OkGs*7Kf}*tw^pjr9a4K^$ zoyqCAJ3L*z1yGfjHG&QSG;W}lRzTNDM=`K1uFn*O1jS$r=_Q%6!LVYy8EdCH%#C(I z*c3Nl3i*V_ShQHNnS9bkr?vBhenc6yIU5NuxN+FNz`iIwblg6s8NIRpwm7xlthk2( zD;c)2_3S2{fez|6%E=C`YBlI-s!`=jbif()I$7Fa-7SoTUZ3chXK>y$XMMt%ZOMe8 z%-m|uOjR>{OXo_9{>^a~b@WXW*nqszZpifR`tF(7Ruf%5If#t4SnCS4ig2PM_wZ7U zDsayYJ>FF+o{wg2Z$sHwHl+2Nv4KJII*ki4A%A##nrTEP4_hVe?18qi&F&Pvl6}br zU@CUYZnb(KOKraseq$67P_;)O0XB@ore7SG+5;LiZWrp%sdGvT_^WUS02ksR zY;jSMR_Ymh!6%erAl{N`xqZf7d$Dv*9l<0dSfdnN*{u>U7F%#fXQhwMk?`EzDR*cb zemX=XjtLIltx*)%5w7M)io9h?l#HAF<;8h&X6GIK14j&xR78Y~wD|a~JS+Fg9h2Y< z8BOXFab?2klkc9`U5OK9A*D0aEQsb{(*Y%smCz|}&J;nLnD-6YWNcOeL=Oi6h2BTV zIF=B|t+HwlD)j^^DIoJP1;~rIkscS^`EU2M#{~sk z5P$2>+m(Sp{B?z1B^tk{_h3on#*;`LIBF4p5G3Y6AgvQiM6*aV8y~0dK$e(!9mknK z?N#X^c>X|lblv-7QE>1lNQ0y=u}=sv7AhOUUV3jIfNb1EYz*6gxw^nxQmCX(;IS#y z_kRhx|3i$=JyKKO_!kJP@Bjd8|F>WeGO)Hbadaa7@ALnW`qZ@CkXBKCL@_P?-Jv$o z1hGi8u<{zM3BV8p>Mr&m64KEH>4NRe?$sDqfEtWN2|*T%!CPk}tE_BeB{mx^XF|9e zEtcU~%hVqOLU&H4^=8FK(x%ZE zM0_SDSL+?pJxA&p=ZP8=>KKcZr#N0CG#nX1ij92m(B$%EI9aG4wW7v$Q?MMt33|)fKpEVd&=98U`+$orhB3i9x?8zP%H%6Dl?mKD2n`@dl`6*q^$xl|CS(?qWGm^IRJ>N5;R zh5X|i35eskY}i`fpMuLdjTl?*vY`S2yxP=^*q}w)t>n8XkfRL~B?Hwd7`ZuEB}{T{ z-OE`b@-T~23|243!wlLFit&;j=Tzv!<5TIEYs2FKi<2UO{)Ugg^?}9WUjb6I9*7cJ zV-}zgd_LS1e?qg(S%buny9E^=AD#}WqMr~6nbWJM(nGD@M-oLYMNSCYxKJ9U@pSH^6MVI1|+riH+rs;KKB-++%f@?Azen?rGr2{n_v0+!_3ww0>AH zf2)bz-3Q)(5`w`ye?!kZYY!!|rhaxQIppMBzQ^EQy$AKJ+lPb1{d=2Qa)_V1dMAbx z<{&((5N+|MIGRUaeTXbecYnG4CxcJa>GdKq09AxYeSf?LW!T+sN4PpKe_hu}*MJ>d=1N>U5PXoN$CArw5ee8-|d~j(`)6rDldG^(I4%dz%Z6W}7W8)R`+J#xJQA_joM? zEVe6uL5``WX3$9ZnVr>;je$qt*Q-8>4EK@y?#PzE7Q|4b7UU#c8=_gE1JPaOrb*+S zy!S*l+lh61(F-c#X&2#EgP$>QzK84VrVGNSZlhqQf8^{&-K$#Y`$ej`glp+#ZDuFS z+>@tt>+PpkWovVO%)uYE$$S`YK32f_fWmr&_XC$O$Y+ZOzX9%HiO3y5&X7*S`C$s6 zMLB?EFR3I(V4O^fO2gBlB*&*2`S|19f7q{_jF3V0i}JoMVvjZRU9KMe1B{03vq$uj zrW(cAvqPI-3xw?G95xcQUbdfazQ_MLDidlAemDZlJT=Vo@9YOOj~Mr$u}A#wEYm9y zd!Rye!+!2?Tp+ZI16kO2;--6_4fh@^u07Y(n(??yKa=~)scSIT!ICSWF(BNXDh;im z{x1tZdYa}aG30jB-luA~*IFBGrOMT?xpI}7Z-FQWD*2fD^GSl20QtFI`Zh^zOQFO%Rm&yN|`4+N__XuE2-4QH7-%)oq{!8jkE1gCwGt(H(wYejjxeM6X3 zVfa9h*u&tbZy?!FV>(^CQp8N2p0Az<13eF{6s)=;r8V_F(-1!1Ode}3WNNt#Gw<4w zx7NNlj8X@V#!ydVx)8!oipO?zLb|+rXEHC7=LM4DCrB6F8VCjMKML8)i&QvRfRmc| z4W6iW!2l8Zg0UX1RQri`bh;-zwqJPvQ#=00e9tX;Ba zNe4NX7H9S5hQ+q(_$WoEtbHnkQL8pL+sj7Yp76SJB*M|^ z)<%K8N7LrSH0I=H?^G5ziM(|@jQsRo59Q|M1kUEx*zVQtMrZfV;c*`r^3(n!Tt^34n>nk@atYdw$DbD?#9QSeG;j2H2??8^1JHQ7Q(`zBD ztUfM)Z~E_Nw>#KuV>#dB8gTbDhwf{4AR6+QNZ((1xUiUX{|)R2^o9@v9$dBqpkY7` zT)T}m)EH7!QKD-g5gM!~+`m0s2#~977dlR$-OXdj{94%w=5z4uwIrCA<*Qv!eV#?U zOHB>D@G%(A3`DpvujtRyJXmS-j2oA^XpzB)kD!!PP8$j>iLvVBapaZ|BGD$>IhWCE z79XATG0Dxs5O~Qfml1=gW@o2;}Cq9Ub;-X~Z=}ASuzo!FCdI0s5dC)l9eJQkK^~ZY79DkvSY1x?MMF56X*ybWwT#LAOdxfBNO45 zc9T^1KV%zqQjR`dTBl{EfE0;t0rk9P^S5UOy@}&c(L)tf>O8d5)dIIo+;rP zhHD$`;_RkaN|Hz4$^JuOf-SA5xGBQE9gZyw-p-@|25jIlc2>XbGlJyW#C7P66JYNeX(>`gy zdjXxX5uIwJ!myiNbhxBl8v#jKfgn4QJ(Zf4l+rMfk~HcNnIYt4SXo86Pz^z)vK*Bq zvRp+ZC%rV%bA(-IN`6@S2~zpg7BB!oD7Mji8!X5vrzmleN6%Xbfq1WODmT-qQdC_% zD*}H_y6t&N2x?L{U7D*A2RYZ-asn$n6?-<>?4OgLoud+Hd00eQ5BS}(&*6l%f z0V9vrG=udR^k4@#jokR>+ws4De-6Q6+v7VICpe&V&O9s2gy4sb%Gfy@-tiiO$y|i5+(Hn%i?dQkY0}jRYE6@ldgFOw96h+K zaf6G|_Px6YQ{&dg*ac6~{sT@5k}i^l&er%!lr~v{TfEE{R#SIdGB(}lYxvp zrJJVc7)4mr?V#|0+6 zj_>BNJKzlD%0}LQw6q)S8wH?8r

pjn|OF#ZquwPR+KD(5oL8q?H`~1dQ)zD$KI~H0JnSt5||(J?sL>kt*PD@;{8w zKe&+OKS;7O%nl}cDv&k7HdLs%jPh!ay?kjkN(`!eL?N^qYxe`2j;4YKa%lnBGVpLn z{x2F}xq)eHYC6!=@yTv(X1v~qlaoK!Yk*8yC7>+^w$*Z|>I1$VWNRQ9fxGXfKiByq}K zU@IjHR&12&jZB`X_>Sje$PtgUMgO(_sBVU9$a1zNeU5~cXJ+38I!{2}TwfYH$_mT|a# zwFJrC&R0tuajy>@8O@;-DI(tJsiSsrk4fj)+0n;0NScjKU=%;2)<&ouVhV%7y7!pJ zYUgplJm4Q)Cyo8{X(w5@FIpJ6Ns~l4bHC>pfvL?Ci0&O>WnE*Ih^>>&xJI-qZE6jE zi)a=hd(+~7i?U_-0sjv=?RQfqjPG-#_TORJAI?2hs++$ZNq-gFbkx!Yh}EJcm#a<_cD z@1~yD-+tcRVSF&<#UH?ofUv`9HU3`hp8yI8i@-~Ztyy1ZV>}cxW9aUwc|Mpxq_e)K zcNwb7_SPO#WW^7_tRSG;MAn9YLpij-1n1q@we5>zZ#TkZqgmz#0N4Hhj%w|Hpc*p} z)r`^sW&aMU4PQ62{vFj|dEnH^)`}`Atd+y7MP;m#T=7i43RuX8I_rZIKK@D;#y#p4G#0opD9rw42H0}1HH>MnXuZ^ zhRHDK$#rG1)0iEQv@lrGS{%2BsPS7p!Xy^60r|#h+0-ME2@Po1+=Vy-lYIhZGtb#!?OZ%Vxq)b(wiXO zbNOi!$!rwmM+k4;`Zk6G__85?&{R-A4Oim^stWlAo!T@2d)e?`M0ZJ9RNeE~tCZZVZvEE8!u49h3D!=H5 zjtnvgO3*7oWG4I#JvlTa+04zn)0sEb`2F?a4e|?nPO<~^ljf%R!xyzpA!tNA-hN|s zcpN#LoMGmJhF z(tBsAKe(`gR?EK2H{Q`%6upKI??vs&;2pm^-&U@dZqXc@jh;&O0puy0iF!56B!l|4 zaw^XDjSI~R$%8b`-T_(uh*5Dsc7(jCPTGwFpUmH@;5qx7^9O6)@JLTxS4XVsNSey= zN^0PPJM5QOA41_R0+~!m>wUFMb@O_m9tB%67d*y4-ibLOmCCYF^ykCEg`$03@D2nZ zLdNHgi}bww9FRf;>x}G)&mapFED~*IpS#$TZM2*gmzPNIk}rf9SJcpF{gvvXSv*rC zitA)J*J}~rk^@=;6MGw__G=>FKUcG@%-sLn+GUNjL-0k;-t^;66ZxoT1kJHnmON2`F}L)e$K2n1 zc~lL6mS&&c>9Tb5G+-K+1k`lUlJ%*UF>-CfAeb^fy?n9s(Ys^^3fLts5rhRIbNdSi zj{^yM5lyqiRFOTecgb6LdREi7&(9~fTCNPbKXQhoN+7(Lwc8g%g0FbA#(XSi$6xiZ zDHvAFa8P@IR0gkULr4m)BA6W^;ZTC5ab4>;~eYRrSJK1Y6aoTk_i!Xkt8wBcM~ zRR-@sIOWX8F5-e^%gVb$UG}|dbf*A-$=BMwe%c&+T3Q5N`e^|(?3X`^zm99L9P!W^d?goUOO zOQxzXoZe;@dCe{**Nq7;84#o@?lvrDIUS1-W1(b{=<*neJo%9bI;N zbC_NWs~SanN`J14IEBVUU{4$3vnC8VI}IQ(IW;W;wwUK$tFTQ*{ppb3+XQ5HCgBLB z@@NwA>`0TuCywUzPiK*THxw%%Jzr0OjYJr*Wcyzwb^miiAp*P;Y9eN1YHMou&kNPj z3VqU`KuMj-*>H6QI+*6$mm63$>~Fj4hY#>%)h~)vU8|8;l34 z9>}YfV+OvhvgBpCWTaNv`k<~T_^ee19O|5kIgf&z&K-|Evi8 zDN6IKf)7t!lvqaC;!|xPH6Xl`uh)+0$Di)h{4Qi(H(+&lfd5kAKmV61)|L(mc4AIW z_D&+e9X%s}vGpIUpCXey@Ly)Zk6^`oh>!b(`1J$KBy5}_Q~>pmRG6Ew`f&J7_PLCU zPjmp}HDypuo_~NXkm{>Q-<+v=Lj0hSMyU$(64YP&6jar4Cn3ys7TuU_Ev(Er+G)2m zH=2DX%-M~`pw5kP&KGLVaN{(Fqs~bR%+gkNtDRwPnH-y>XZP*S`tRD@RT|aVp;}RL zS!P$@nP@x53a+o80tU;Dl1P!r19Km7D{~l9jJW&93^#hbvRjuQrWR&Ef+F9|sX_Xo zM3mxl{fX}`CLw6=L=XIe@S<4MwMfp5YAU<`lxBbb!r7HnfEwC|58d4V7n1aU49CCz zt}bn8AJuQ)1k9PoWXTx>$w8n&m<34z$WY>7;9x{wz)&9bY_lgjNdpID)6#2ORXa+X zs=irq)P9?%Ys&v9{b5d9L%T!U*1F=Gc2m`bdC%k7vft*#`^MAZRAwrc)b&g9Hp9`T z`*zn+*8A!uGw)jsWRJKg%X3SS>XZ@$QFAy> zol#n%Bgt(W0&VByYD7EKp1HEU_IjFhVbo@Z)7?oCC!o($n3Tln3A@3rlI+6}X~49Nk7(S9>H8^Q84N5(ygqq7``+IA zF?{YFS-yGT@Aem?r&! z4HY2UU%=lwJMh)--kiw2nLFt0pU6#Ca`*TlPeAtUEd1#Gd^i6LPVhOtM|Irb(68=N zV=&Ym`nf#yihigCl-V$+@$%-n3%`420FuuqtgOC?0y~m6`egmV!^@KrKm0_ByowHg zIkBovk-Dga*9UWNNe}-*56vJ$mOP;89AL=IS)wMNR+l<1g42M+rwVKVI|Im z?<5117PzJp5nOBFY(rgom`Kng+&OAwC~nXadCOcV)0aqOJCnzOXZ5nYE-S+ApP;m8VZ?cCZI_~uaY z9fP-UB1Dr2(vjf@ZUz{Kmkyv&i&`1Z1dEZ{NfPKiN{9`u;g~yhzcJF~=E^V`Het!L zFq&xka{_-H#u4}OX06(n=-yPQXz4 z8pC3gE}1A^b**pQS)a-$R4`D9Lwbe}N}KHF4vRVlyzIF%!bCXiSExw_U=n;j0zO5u zRT@+y3mAXqq)*UHT~{d{Az5v?l{6}Q(^I*Vi)5-AORN_;tt&7{5;r$D&{m+jLwz7C zxNb~}PeaY_#~MZXGrVS#aWctfGy?H)?$vT_BOp-tEK65?OfNGsHQ>@VJ%&bG{sB* zEj;E|4&;w@$k0V1lD{O4Tz|zM)XzVh#urKcxW^}fb@G1ob)+3AlMN;Mk-rfA_$rhD zVy}KJX(WQ5o}-s%qMPpK6xd)^nKHN9Pb4ezFiE3wK{agbLRv>P(5=ZK-3DpL=KevC z(Rk8FsFkjv3w;PVjioq`PJo?(zvYa_6{Hpq0m>B=pjFIFb5V>&`TU$x*EFEh-hjKv zU-jipA}IRSzNl=Ql5qIYt}6n{rXS+}aCVMSwsc9KFWYwAvTfV8ZQHkO+qz}jwr$(D zZrPrCx_hSkUH#5Gy=I-v4=308a58i69T7YJ@e2o`=QLm@qw*iVRow-25h~N=4ARh0 zs=3@yM}az>Oep6Iu%8u4GlC4*UrPhKe8SNhN}^xnb+nL(R^_zS111TAwTy>wp=3I(wXWX!LHQE%j1l{X*nexe`usPOo6?tZbB z_XH4!M)#=Eydt^F&+L4sd&pRPgYaI@R#<$3PZsYkK1mep&Qj*iVfON5(RhUiSbU`R z!)WWi&@eEb+RD#dA3_CUHH!L8U&>Z$CbHn@iD&KJNWObLXDH-z!URa6EzcgsnyS5Abgr z#Mh;6KE$xT(sG}!<(NMydVbC6+^f{4A;#7EXL>)VZkh*K3wVO%Q$U8h^I!BnjKaY8 zl-|rdlN3YRb-)jP5-ODg=Skn75STmwS}OqSgm=3OM?KdMll+-$4fsyh=?r)SzxX{c32%cs#eb* zq`Eyrmo`Jw#~Ns*7K;Yv9vi5!e8=j!+|#psr}}Ifw!5}tUXR2Qc{?>tdhP54${tqK zKM?h5Lvw0H!*=ah^SW23gR_K?Z|bWT^oa7FO?Z&1gg^L$uZc__L<8tpp1Pi(l^c?% z?O{hNrLWG+V))ClvX)92Tv{axF8}!d^6r~iSxDp4%*0)G|R413JkS*9BXE%S+*Pz zjkGCTjAa?raxXOwzs@|3lbo2P!|q{+6l1U#qdw|B$op<^z}-=%f2vgmU%ArZd?s7u zN#VNC=Vr+D{0v$70v1JUvi*wPhJ?2&0ly%{auW#tP&&{zH#R3#q`J$hiJx$UYO$SP zQZdWiOzO(cig(n=2z#)JH8YKN~_$!`BK?cGBZ<5$}T)33z$D2)@j{`=p#BEpia)o1t=C7CZ0URVcDmNlmJ# zdYQp3s6UeYXa!WShCQ#;bFjvzZ>7#QPjwQpA~y-N!%qa~mC3hkPl-6~y65%eOHPzx zeGzu|5$E}+uTq=IoFr@h{hN#R<+n%0OXt*2L#3LWT;`oRrxB-0>fGOLay&C+DOD7w zW;d+oB9*00>&eT&?1Q<2w|fvfw&fLKfJS(Fjx$huO8O=IphFn9#MsziM5 z2sFjMz|9{rpGQk$aY})FcZ=B8&`{o)qxw#9A1>KEGIRL8uY`1ON2#&A-c)}(GGYe`Ilj=M&|0RG z=qnT4*<}mTV-_%q;RgFKqi`^yht-Q~lpe;^?Z5JqSJc=>lB|KrF~)e$g)} zf$Wt7Yo;dP2Ss^Cwc_8BsGDknrI#tfiX;v%06PnVLQi9RNGlx$p-mZKwcwCUjx9`$ ziF{(6EGF4l#+#sKWlWW=7&M-);W*rLscYjr}Wr?nVcDVwt z<6#^@VeCp;7FNWyscCsA!AB2~(}FI`7e-hnQ4pKqH!822l{4!J>Y-*zi`-;|_$Vqt zuq;MmX~t0g7Q@XJ#`i0z7P4u>b2$Rb2rbW;b4rn!c`43Gq~ zT>)y!!+KM3%N0z^+%x4j-BNG-MP865c%cjMUyr>Mi$42{mV7^a+zcmU+ z`lcRCi@d;6yNfh^!^LMymj%kcNm#FEray20C`rYA5l`79EE)I}Ulbf8Gdo1K8Nd41 zBLXg-q8q|k+{=Lr9C1l9;Q<~T(+KQwB5RX)@O&^&FlG=#Nv>(oN97MDh&Sbc`MSjjb<6B9;5x?4Q^pE?8f#guA`L}gp3uM9 z4zo1MqE2y7ep)PSOj8%IX?ZrRYoKW4Z*nMH^Qey^Jh%mY)9(A}pBOzRT?S4YlICLP zIrgcXa|%7z{EfMpy=)y^Zj?%~$;{!hG^w{a)IcL)?ka1yOzj~$6T}vya)&HmV>YH&SYWTnXOU3~QTzR- zA?KUXCsKmpbvgs553fvvoM8XQu~6oE&S#ZgDDwc<%$sXLlPc8Iy>&b@2QLG-k}v1J zc!UIfah0zI5zvoN7+gGAKAU7%b zuGHx0-=lwq%KA{A)HSVZv{TWT)Vx9$+VTpov3J}+yM^6=8Ll%R7IYHvuEUk6|j zmR|v2Jp>_!An4$VJV>wUo-(b&8`P1F$d3jvi%edxA!1+yC^cYZJ(t2;Dy#Pi;29Ob z2h~pxc6SBf*$WzA$8J~|x65`piSza7SN=nV5_%Q(Uspjd&Q<3ep-SWQNJG-{q?j<< zCn4X6{JfF%cVJdqehAr#g!pvwhjbg5oZ5kXpK{rGE$E}OY}B=~&8WAD6W>%9K_;P8 zF2HR-KR2LVAAomm#{0<8S-S5ZeFQSzPbrz5@_;ffj#Uc!urQ{3qfq5rBV#%CJx}ph zxx&k9@mUBoboE0*aq;39cm72A6*DL76ZiXtVB@i%Z@!=}q6myC1#410Vfkuqe2ev? zZ@zw3HZ+&Kc7Xz?dEPOiJPv;*lWJc=>=%pg|Q-T=PLxPcmSkf9`YE}&jV3k7bq;`b><@W;I`;Msp$!tvT%f*uB3xgP?@(;UB+<8Xyr_At%>48mTp2*{}$i=BPo?}Pnp~H(c_-Mmag(~{iuyq6u zfTqOwQnb^Sj3P%f-0aX>sdh%{q{~y!gK6!kve2~8rbcd_{t2dwJiI2X&e)xkc9n#f#qg$mWAnGS!nZlazgmAEz8b;F+(Zz)6u*|AbHhvVNA{C|OFE_!aeB(>wB z=TE%VQ zJz3XZ(JWv5`{9_bSd=uJR@)%icIbUyI zC*Hxvrk><3kuu?gWJ7@3LHi47g>WK-#2JrgFq!fWT@wLK(`rkwsG4ddM1>s<`**cp zP`it&K@JqcyP2)nJ+;~ve#7cP`((o?KxW!w*jb=yp1J1$i zK$Ncd{BM#4I?g|8uBykMZQBR*+9n3!P zmtI-btw|b+wR!W$KY`f%T<1c|v{1 zG2;IIFIlO-G6wnsJNNA087Z7^F)I20BtiO{Qd;GEv-a;>v%xA`e}gG)87FR8HzNRP zK`o-yRY3|XHbwI*u7B?(hg<;w`Ou6ZH8&8aPle=p+YhJnKL2^1FFSC)_g{HM5*DqX za~)>;g3tZwAZoVg#KvD_Y)R_%xVgjgl(qA+x~2E|c?k}nrVuw5OaM7RC~DlwKukzG z5J-SYiKM-`YnWuj*5*19OFaC{*e4PZ>40bfiLC9dB?^$ZNlLVj>(fI+NM$HF$Q;OK zkObqE)Q1a2#{g00C}3tjg+=1s-rQ8J#bL8WOq@n@!r~;+0MpG20_wF;%BVe_Qe~)I zVg4e+V`;q;ol+q}q}c$=#95)C;vL_}E+iIAH|(;o%4pqHtFI+mHcF2(zCG96R9coC zF$adh7ag=BYXn0rrxwv?ryTpP8C1y_ChAhH+8j>IbUIG&-ptZ)Y&<_0U(y?^BwDP{ zgb4(TO%_Z|;Gmm6cE}xQ$DKVTZQ^J#e-y0k$jjEko+!m6es*>vw4|bA#_mQrscvH= z)H0eZw^MfNu`#BrOTJRs$!l=!*^HBF6^E}n8;u7>-^f>x*hqb0yKLam>;VGGl%_%- z>H!KpN})cO5MV+b?ylAcrHWd)#{+tG036b7#>-e-hR(udfoi4YIVO8`_z+=}Bn7jT zj)XcxevcNDv7+Sy6m##$hVPh5gf zLtqmZ7HTossf?H{xAr1W>a>34Fwv!1l%G1PAV>ZH)F7T{wg-A_$>j8jq89BnDA71E z-AErKXeIN^)_2V~J$D}ZrOoWd>`OeeKq={lCF1`2)Z6XQtVej}(krX|ql_8G9g^}%MN9`+Z4xY3I)16j* zu?$~hQ2dN^;1OeC7fD(zfxI&~w#^!tZio(#z zQ-$B95P?_9EUOx{_lt$GK%75)>jN5ejjOjXq8Vh9-l>B-E~(KfARIZdLtbU0D$y= zT76Va9GxueZ2!LYB&*ukVXL6|korU$B`mwlAA|l*X(oDuMJ%EfESv_dfP!EUyscxaR&Q{uNPQniaL@4;fCJ{Ax{1QFxnc^K{(CIRY%=UNr zFY>1xudB8b?vt#OoEta3pDyUVbT=ai(_+8&0$|VwT2Y2O!%~S(M+8A2wIL4N5Icj0 z5UPV5SORFZBX>bdg> z+~+IP9+N`ILaz9_ea(yo0>2tn=$Y>)(@>47>oS-u?>wum!+@!3Qqk`-D6HHT>{2J& zLk5^sZ8)mb9)6CAXIhfHa(qS~UTc|*g)*pvC4-chddlXnYjh%Pd%tE3? z#rRX5x@Sr9)ygGM5mYlR(q#k1hn-th@=glDky+b~15TRFvY$2IY+f}JP zWH_|V8ygA?%;m-@g|Fz*M~Wn@HZj=o{E#mfrPYYm+-A3eI?1n&XHZz0ZQ*K}VT}+e zKpUcGU+fdMG{Qm{VoHnKB4csZ#)i&A9Kxzj#2fdUf-0UlZ))FTkQ(^3Zp$K1uoES4 zxSV$~?JufLYeVe!MDguCSHKxQz=GoqD#2oGxJ^QaS(a5F3es&GG0mSoOo0y1A|Nvz zVof25ATs1)qJsZ2+vYB}Eywzr%pAEEMlmDSB4a2cxT$p%y}_22s@{nk(G4S{ z8i3Iyb8IaCEb0f8!rzAN0xHCEG=K4}*+-291!ITKc(|tpPv1 zwTL|o!5MdGiOKs3D3<83iY^w5~Uh)wLv)MjG zEI9>9cF}9-C_qWch4f-#hmAgXLWmexxi;Tt=P{1b4hwJY`afeqLWH%E6R`& zlKNsKmu2^?DuP!FHuM8d7p$+{#>z+%U|#gWk*$*&V!&+dTpsTJ7N7@rOvSXME`ACU zX!B8Q1KKzx%pzxm!ya$!XxAt-S-+yq%#YO6M`~`+NUz~?!wwyw1T0-{h8 zvVX>Hr493PO9f=Be$&pVJutvfwwOsE_c)V?lkO!?waslOO9pBe6 z63{gbs%bnlng=~F`lD1H26%jwM43<8wF>&&1zj75^ML{Qb$r?a@ysgr75nLye9d=1 z19gbat9MI_Ot_v=eR=(+KQ1m}DjlMxirEL|)fS z`g%;?ap>c(2aHiSn z)Fzb|Q-FA;i=M+7+MhrK+2fJsyp{Xwc)dj^gt&*jcZdBm8}|(VPmkT*T#r!wjDP(73Z{TR)Z0Gn7HHy;2-{^q{Y3vNLdO`Oh;+mQX?0J`gI^~ii-sF}j zXjO!BsK`b|F`KQ9S>ivT^m;>JfixkB2Qy*?H|wfUAQaoLH`|=>PbSmPb9=hKTO@>^ zP%5J&gcX$jDoj{X8I)I*N1SFtTtkS=(^u+46LS1&bY0~xWsAjRjHbnRG}_&WQE;NG zX&v!isbDMx4{gziFoUJ3v16!p3VE*HYWUy*YjfANj4x}mBWK>K^-^`RUu*7U+IBrP zuHMVov~ZX~^KmABLwC*1o448ok=Fu;7guG)L#avd!Yk#F93i;OV@!&~|WwwZ)J zaSl(ot}uT5ewHYk{?VotFrY3i+>99$iA3L4AQf8Z+dbSQ!?2)N*wgF3`tq33NCM43+{` zNt|Kwy@FWi)ptP%8LewMeWKO}JYCAAayF=3zg4cGgPh-@6&;jzO~XNR|xYNfTM#5d#~F1+#! z&+)Oj2TPth%$K8gb|3>$G^08R`n$#@x8M)EjtgkTAc;WdGGSx3A2$6L?2TF-HhFFw zf)>XrX|U`c_+C&&?{L{=U_!ZnWx4&O^nt)Z6ifIHA^G6}0C@icM^4ee*35+XALH_G zU;bW+`}cvFt!87brH1KayFVD?lv!+%P$bjRPNaj&Rn|~^zFv)cQIFPHe6}2AEU^-c zeL~t@=5(>jrm=2o6kPT8sgG^6X4au1Y?!$$(O8CN6Nq1G=*u4_;l~dF5{CZ+0U{^} zg!}5I$$LfFQn=7-`mfL1O(*`y%RL{y56mxMIu!$4ut10dKl!I|d-^aTcIw6WAK*eE zc|VXaQu^+Vi2de%l*gmQkYpMO;==wQiFClUZp%fJz}%A=jY}pV3p^MxMxbIKiF`9o zdpt<{g9E?MnRR{e`D1z44+ehJUOfaH__-V({>4Et(06?DxU#V-ui9%ejnR-|05AH1 zQ)2?JOGL5R9fek2`TXUh?{!a6&?}Ed>ttynSJ9E-jt`NrK5#1~;rdh_BVvFj8W@Img}Mfpv!y;4W1H^CoWOu$&IPZWoh!6 zoMz0LQ~|lHn%OH9pfzNR?vgQs%_fG_!qyQU_d&B!%rPu}i}l_-AX#54I2mbl5{qFp zgy52-0iFpg?4lb9B9=|rQ`R4rHhP@+_1&h`2EBsEtMLk?wTIk99ceKeL7@epVVguE zB1tFy@HG=?pRThp>;6p}iN#b8qek88^U5`B7iYtc7}v%#bCJQ=nzOL|b4L3U*FW<& z-<3zP-xTctB~H8{BjuV#t|$#@kq!)5)1~UOsC0XCg;9vLaW{pV)|d~%bIAC)*o(nB z=eUTRK_$+d6ayYZ&YZpmPS;2SE{Dt*+C0zNSY2uWtwO$%1KRlQ$PSjEYBXQm9RzT$ zo6eA7s)N!4(C@ZrnS?c}Fxjdhc!huDD?+Be>{R46CHA`W7=W(ZsybmQ*Ve3-X(eF~ ztcj6KW4ud^0z+;@S`sRj$MPl13bSnNXAG0+B%O`i4L(PTQc;|@$>Gq^u#FLQDgguM zWuVl!jx0?GEsWh5@w)A`*W;uYQERPBX2fNXPKxch@p>G=tC<-wl`N|{Hk)cKrH0N5 z@3!zWeB;9!@*wgRiH#$f&Fb964i^m1s}PY%bi9;T6;p)^VU zV{>rESaiYkyf_Vl`qCoOUBL`Sn_sSX8VRA>U+e-zsxbjU-v>YrH^V`d!=dAOn^6#8AOBQ>|o<)E9d8kJ%8 z7m+Y=45wUzopitaVQiOsv>F>@82yQhG(ld;t8mm*Pd&=2QBCGIw4+;?lKLxiKM=8V+Y&wg;{OX_9?1^S^|Hu-F6(~qG}~e1_TrDa{7QPL!s(F zbx{@0ketja>)!tM1YzG6+bNz4IFMdKmYxSMeG{-A5)!^I94W>X$#g~U!f~>(yjyjG zf2Fl&Bn5>U@BaI?;&TZqC>3*74|CN7_!h z=M&hYYA;BY&&$pn83#Ppz1s$wE3kQp@392qI$GUsmQvT`X0EU%wX3@JT<7V`(O5k8 zP|2#^`kguA0z3z;K82;dHEkDc2bbq0!sg24-h0P<3aWY#DV>liA8WU#*(vR2ijkyt zI#?lnzLK_F!z8i&i^#5CSB`0KW|w~3P|;Vbt&`zOm7%Hx!7Tdj1US(bzKl_lXE4)^ z-bE1RL3g=nkzq%Pjrhy;{MAMRxvB#rP3gV-4$+WeOztNIbS?JL3GC(O*);an3#r@o z;WS&vovGV4p_6jn4Eyth86rxhWuOE_9#IqSKv1KXs=*oxkD6qVaU+NUh(OFv-q{s> z{Z(DYPG~gz3y~q-%pOs|D}%rXUf*kX$?J}*K{;`$8)e$~VM!pgFuqxGXwIg!vy)TT z;cCZh#fbG3UtUgb zJsRKLsU^kl{hA+YD>H3KHFDENQ@uFVYI(`cntE1Q{?%azW_2QnT+m#BW_7ZNxWU;p zW^=#79@)0C2TJOgDHlP1=H=cXJDDjcK`l*0nNLtD8WS(;;x+5lM!zRiy{lO-_Lx?D z!Zy6LSf}&|!S$GFy#Qa1;PV)8opGY~GHjnJ8JyE~OEHyu1HaJ*Iu~plYi_B!%`P0L zEc|A%%|&h(;FgD8U;cNFKUoBfZ_x$obOGeIuJV)5|gc z;{?0yKfmD^o50q~3mMS+h55o-hw}L^rP_bd`2}EtA%1^v+q8c7&!qZKt^GfI&a@pT zWEGT=97k47~@ZW(! zd^^|B@tlWK6ijiv=P>nt-r8N~%HMBxWHQSrjX66yU2WYRI8F0BSr_;4z21-kd^|TI zZnctzoEy5Uz_1CP`XlzEC<01{BKTqUP9b2$qY04$P=UaTA}|Sbk``+)OoGKj6Ve@? z1hk?G3;elVMAM4Fh%iipuZsm`=%5K10?>uug%vd3q+V6!b(|tHA5Vj{@?nT?Sy0VCRbLAt za|&{q+;k33N1&Sk!vd?yI>I4p6caOz@*s*g$sbHps&zag@;(4@A?KTtoFY=4=2pwf zW`s_SDxrJO&zN%g;pl^foC&Adta#A0L+m#Vy z$VZb1dUfs>qrjh;rw0ci@ub&vupmPGt~0<~O8uAjq(BHfYZ;%>N2iM3`qQlP|SIvx*}{JuE3 zo^g#=-`AOlI0lPZmSnNf_3;4?(GUynQc)e_{#&B;%C!gM5gBU)%?ajEy-bqW$Fo?s zupK8w`U-t61r2;qux4eZP~2ML;a4M53LTo_v4oWN&a&j5H{lJ|W4_t|ErW2K*nlm= z{azKo_VP8HF5x}*bW@yfs(mT#;Pykd!f8**o_D9ns^S}~gN?|`T|@}iGd~ReEv4*k zF}I(Y$M#6B)lcmkURX2w{5>KZWLG0B*`~zfIG7&RshQGJo%YAI*l3*Er@Ipd6W@U@_EuV;a!UnsUW8%C zue!E5DOWND_W3=k?tU}*Y`s3eng0QNf31NyqcU%e+)k^9(fdOHgdCAS3k;H)H@s*f zAC;0vo%ce3MP~R49Hd%%#$~}feIN_su{ng%Wp3)n>e?0wnE$>qBMYwan<8a(pL2+p z7=Yt^#0QM)htLn4q&T@d@*g`U7JR;LP^0RpKO&)XE&@sd%aT+AWSOs@*|c6lebcxF zkw1q_tFPe*&t5E66xW_Ew*+y<_wXEg(O|@1Qi@ zg>(e0i1(+Hcb@l-NrDD{g4$ftLMFTB)d#bwUJtgIjDi{DuuA-xaybHYV4^g7KN9gC z8NirZ@z&_S- znaBa}^jx5XtH9dj4~DI>J^%^ntaj9XB(SfGfa}-Ew*uWLkA_jk5o-Mj+RwrX*yG9F z>ZOYs(>}EFTV?Z+t`BubS<@S^$8o1hpvQBkf~O{-d50=8Vo6OF!u0}XHxd!MxLJIm6TP`||5K|vUS|L{ zdoZ!kn*(l%2Ps_c&buwf;%RUl!a@&X+oCV>%e=3^lMcrV=9Za=zQgCwt_+vxmGK&L zw-tw$uuIPw@6N~MAQd%r8psL<%v36E2in9emsyNZ7f3*?5z_VmdYNC*&yYGt@-+tV zI$}w-KLo(Q%%MWfvB<^-DI|@e7+a;8S|w`;L^RTp0%bf<&QwJ-(ZgK&& zqLZby*ZfM`w-zPt8A+GZ&kdcHU{8G~A5_yaH+!{R$f_o?;A=*2D8GgQzMaTVx*Ou_ ze_>VqRdMPsB0f&?y-$<*9VGvcnGQ`0`+v={YN>s8rEvF%VaFF z8E+vwlI5?uiF(r(rp4J!KO62*r-k4kH<%yu#@VeLCc|z*mZls=42F){h<({!HJjlw z?pocR-O>e0rME9BwoId5Br@S-+}%?Oni*3wo9ohLxL&RvEW>s2hg-74XHG&5xFku} zmGX%_Ch@CINuf1s)K-H_b=_g1L3Rw!mnE|TEZLGC-@Unshc=%1#de8ml?_)e@2E6B z08?FeZab99Iajt|R=1QsU?B3leWE=Eo{=Oz@a%Y+hk7lQ|3Qj3t`t;sP`FVsr-$l$ zsHqvFl;-#zUjf2aDROf)&dk&`upQ;qPE&vkg;%Rq{rC{GMwVlIm@45Yj}ly`7>89R zc-}1(EY(8gZ3vF|JA_&BPxiJ_8dE5ASukuQqV4(mHMQmTH+&NWXnL8?U{<6daf}9eBf`4Efaj#v)~Dndt3gJF z(D1@k6j^*kEO`aw115Y~IT`$vq}{=0{bKt05qQDfUsk%o&4EH`6LxFC{CRgf^o&k5 z?ZG4*I5>2v2P>$$)h5BFBW5%fm*aqg$YyN51$N*XUL(bJH1YAtt6*1UGcjRklGSqK z#R&)CZ#ru^7~FHBoL6F9q0=N_a_9NY2UgCC^%Eit2A!B~0ZW}dJxkf6#~)MZ);i&d$3RT!p3^=UlZ$WlWDcrEQ0%YSCm@r$WEP~5R5PFg=Eh`IAr%Qi8@u&z9eaV2!zRroSg`z1o?;{c6{2Fj8)e#Ml zg9(7c5&ri6GQYl4d2H$JKB~|1@ST~TI9(7 z9M<~Ph!KnPpFAgu>Wlr&w48`@7U!b{Hlk@=V|Ox%H2vQi zDk42$-n2uUqv~s&KJdy>?m4wH0?}#PYF#7hO2m)FiZ_shMdeZ%oQi5gl!UQEzJG2C z|3&NwZp~lH`1Z-CzfYQf_s#9CUCbaptf-DF;#--F+5=jw>3BjJ8#Xix^Utn&` z9<=;$B%ZY5jqJ7bvqHU{Z9QGUtbD^C{y(uCP+&A8I3+p9IUh0h@$jKTvLC}{+KwD& z>e?yea-62)I^%MbQ(<0y&m3sRPQv=~A4_X_<}+bGiP%rP*`l0mY+l^(hq#LjFUiYd zX4vrAQ}gaU%Bwqe*OFdN#&0jyo9NGI{CgjGx8G zXP0_aYih0V7QG+k^qsyo^rF#VF0;RKeG*48#SeEw;!+@MSTkvV^{@#&R-DQB5?c@1 zKdN2YdDK}}q4O2yk@5oF2RkzxX zRℑ=dk@t34lmm(-ip)nfds(k5d2lVf$}yRNBt$|MgO=%6`<3x=r~=1=iNAnY7M4iUFjL>z&d z_oUXQrRaPUW%oH0S3F8!$PLwL9?2!>-s+Wru8&shh9r`0iW5g9iNTSMFc-8S- zH^k+QcPhJ*%Fgj69(-ZGmoyD$(&44+68vv8JNq|z_4=h|EZYX!u31n2Y0VAz0>2G~ zr5ZIb#FjChSm7?2XXaRZmuy&nBX*}zo)Of6R~V`nu|NcCK7{4?D`uU1+=}I`i?9?J z3gk>#w$-``)_Bc86 zWVl#%A%Z#gAA&nJkXB@$c5&qC^sXPK`jJ|SOU>+xQ)sA2$TfQ|A!9xZTYGzZ)nSW$ z#o-I=Muf2eF|jf~1IoiQG^=-kfSs+=SBG_wa}7f^-RK)1j{E!}od0CBhR!(uNpFq) zi%sYR#%i{YhCjW0^htLyTFYCW?aP=jU7?yOfh8VNNr^?435?v<^_3<( z4hqFEh5I{Ut&q~Tc|E!HRGDi@pDyg~<*@z9&q{z_i;xLR z<#=4ZZ#b!EYf_E&m}DjQ?njN`z;=_7EnBf_P z`VEI7d@kV!awC3NdVgkPOd$YGdj;C?M5%Oc?FI@iC|D+0z7y|e8K|%9Zx?S&mdiw zREVGhRS>jaWzoC_*-NUE|3tgQ3-%E;SoR4zBKNK}U0N*u5q5lakh)nPS*v^O2QT;` zxsz$*aUK255eN8qHWdor*1C#gUGl~%8z3@v$Pjn=4fH?X{oe>YQ35P1-|>*ZcgKVO zCSmw*7X07ey|{_By~#f^*+r^4N?IZqKCF<$#NdVebxX7J5v;@nV)M(2-Hk^Dv!wi) zP|Z!h3C#Q#BpeyZ$fDf0`1Y#UCf$qJ8du|Q*0D$QcJZ&-N@sF}fh_*OKn$#XQvtkp zPCTC0bbLO}OMn6J3Gqewh67qLL*$wc3_$3Md65yN4Jm^xSf1H~>w=DpDu3ne(>kqRQ^=e^O5T}+8xtwt` zFGDxp8~^E4P-nrBiasCq>o8FP8D?s3D8n`(>LGEl@)Dy%FV9ph%RiwZ)1$$N;Z?et z9IvNNuTR?1hzqWFCI#VSvo0}j)zB!z$c*AZ_nOC{wc}ExTQ_a$tt&I@+6Hd3QK9Z= zG?#@j%fZ|T(WRHn^qh97oF_eiiu8>HvJn|!gmkXRo1Ea zby6r5+Ux0JB(%F}1z@{yIXBUr9z#LpF+$nVtTe;tWo|A*HLot9$R>xY{ll~J`YuK% ziwDb-+%?E%xV*LMCJ0*sWLP$K*sKl6TTGF*eV)P6Nwcqc!UbaGRs0hC6qW@vWWR-gbM76z0LrrHjJUnfY~>gh!YbMHui=%Y=(t<2py|?Pz?w_ zyE*_1rcw#Iqzk#VFIteghA+`$xp<45iq7AddVzaGFfDYX=596IWC|uxV7eLVww1zN zXWtG2&+#H7cs#m^8&_u}c^taH(3_}hB1KJUwA?Do>+9;(^x~=0wrI8`YCPe6{Q(Hk z?bjh}Okn99(&<)`?VS&F;n`2YJfkFdDZWKH>|7!!OrR5v_Hk8mt9Q`B*gwzLa6P}L zfM{=Z+JoHI7A$4M4E=0Ek*s-oudWxM-Cv=)#prftItBe~v{*5pN}guBQ}jDxf5BV% zpZP!cxnamW20hO9h5N4$wwy}V*JQcPrT>AfSkrOleu~`c@s+wHxE&ymZv%3gwLKvW;sR-Lq0^f2qZpKvv2#&(@c=lPtYmHxHY;D ztZjfNLZ@1iTD?Ms;tP2}!ig=u&hvH{e;Y(U$z9G3nO{-$m9w^@u0ic9(H!1FsMK6*)&4tgIL6F6vZzMPr!;f#gO_lsMjEQ~9`8V zLhOI-_4Buo!tG?>&$kis`!-1Y|6j)FzlIXYavgt1y@vF{4yd8Rly|F;?`o#)9BLG1P_eoZ4VO|&=KU}#j6IusQjl3NMUh5hwHcXG814KQ zc4{pe8~zqi{uub@GVRYJ3sHH{#@4V z?Dzt>$9&*0mae+*_6`qF<8jp1W)H;(-Hd4bVO+hiy=tAaX~y`SE&fJ}@4ygOoiV+s zK!2mc?ixIAh-81knmVk-k&yS@DD-?NV`M&e3FEdqYGaT6I4=%HY$>o}PGf46C}%1L z%EXQFkCgZ18=wfI3u^gu7=aECy8*c?VP7C}b@H07VWs=8VVLM9Bu!1R*B;JsU_4L% zckF@d{MQ>pKtzi(I3hcwxU04+ZNl1f zLiOqXGZAE(LoSo{9j%3>2DzW((4&0>4DL~%tRxq^q#D7XFe00h5OxK^5JERlXCRqe zp)Rk^G10kH2_i!uLHbsJnn)N{&~D~ES*0b=a=2SMXX`Sv{GT}K3mo-3z0;Q% z*9y9dc=f-22}2;(4wDAM^NUC27I!R|OuDwLiNStJG6NEZ^Y!AJbT-hWp%4l@4s3F{ zeRuGCihp@{8<7LJQ@<2Ndw~&kzSmbCNQ*%kW=fNPOplR3Nn$H9!eYWQbqR>Ia-WW) zu(`Udva>_ORGskIP3xSl0yY>Q&if{0i+Sc*jP*w7;H72KoMe|m&!FYFv|@vDBTer? z2`wWkj6oA!Y6KWm(YtW9FBaP&%h_po8gf;u2-l8K(TdDh%qPxa37HvK<`Sqq(p+BN z@t5z=NK!RV_~|FkS=37e>V`4+)!v$i1Fi7^|Kd)FA( zkay`c@vj%!>RX$QColu2`()rtZkUx9_L(y~qS6kFE^big)fxOArdss&?=YPR3|%qJQCoX z<6b*Z*1jX`6=a+xg(F4J{{W-0%hu_S+whxN{4{<)uK35l@m6RwP1M?eLe>BjvhaUV z$Z7@-HvjiBK9~LT&_lges3ok%|16I#pv_y5lOqa&h)6Wj3;zvcuPQf_#;En&bk)#} zY6c{PnD-~VN&B1*g9Zf1adeBT%@ofg)9vYFbT+``JP#N&;Rb_oCNvlnY# zlm<(JY}dyZtCppW1P{i zRVsOXun2l!~?SC%#X92YX-{*eGI3)&!58@thT&oRQIryf!?5um&$M zRjigkB9EOz@Q|p(qF?XXVAjSDw2`+$P&9g#i+Ohocrd&`80=@bA%>f=hp9_+4rmus zTHFjWi&wD(wzzR$=aR8!ANUf8j1sc-0_QTVsDz*SIQI?yiY0}NXJiS!jf<;kmU~v}+WVhTh|B)x zUyTin;25hd#*LsGsjF#9)a6NH6w3P`saYpAq7_CG#L_ttM%Tz<;9C}(VIh^VeYO=A zO=Q!RW=@rc;MqGu=9W5q9Gk_oFZjuG;UNpoM=2ENz0oNSum!KefuZC3WL(3XLbhDFi1rn%c<( zcc_#fc{Ox~T!}_X$Aribbk4!=LR?!MS{z=)hz>t~^3Dp*w$hQfGOI?C6lf=R_k7Ni zR@)tjjpEM9@*$gb8-ar+zNxLmWw@t|5dxC3N$181q1kRH<6Fk^_ zGi9oj$1{edO36I#L)h|LgA|;N7d#UtaIJ0wAvl&G;0jsEBFTDl_KN@9v4GLW1`&G$x#;s}m!)rvg7^w=w4cBA58U}jdBO;(&w~PRXDQ&t@?Vsv z(0?jR=a?D*Y=;TTY`n|)+21{?i#EOqsYyVPNT|?*hZJAbJVG&&=~Ok?4SXeE!a@E` zWx$_irR#j^mll#{yZsNt%ia!3ZPn~_;!LM95S*j@mu>p>gB$IIqHFmuqA0VX7jB} zkiiCqH_Chg#PPN;E)GavRSZ@%zAbe@UuGw}>*)Rb30J>(4tXR9|80op=*Pg<2S<@^ zfd^cS@_#~Ke^527(K;420E#XdK+OY;9KYB)n9&*785o(H&{?>+)BO)s^VhN$wQw^r z{*OOyri%3+;x8YY+L5A>uO!|?B@p5auomdhXfg;i6^Z6p%p%p>YZC{g9pf%+b!{W^ zpP^mdRh;=0iI_uGFDqO5S#266*2#$P4iD?`hk!7$ru41Pw`cS($pm#NJ%(s%cFr(! zZc0OnXjo`W%|)HI6xWSNiPZ1f3-&z0u69J>IGZY~o*dMBMMzYfs&(w4k9F#O;3rL5 zlJibpC3{3c40139bUH(3DV2Qtz%~!S7U@)#*3eWr_+>E1r?as=u!1P~5%jFCtp}pp z62)4XZDTnV&DK43d9=7QN48A?uE9-Kwfm=)1Ltk)@h3Q#4f;}w?S-wU&N7>Oi%Imq z^@q+@-YcEF<{UDkXezq3m?@mxTX zFOwJ=;U@G9h4=mWdLctNFwg?i(SWevHW%)&dZGhJb_s>Hm4;cYwO>R~(~ z>0v%$W$ZMdlNbAfi=4Zbnd!{p0VJ6(bry$g~1 zN@#v%jTKwUPMUCGyzVsv@_K`fm{cGdY$zkZ#F%Dq?>0U#OIsBUH7MSusI+x7Z= zt+!8LQlS-QsP`J5Mkw-ovv_qg$EwSkclxBYBhP%=jO^m-zVS}ihW>D567A{C|~$t;J!){<14exX!!>=We3EV6le zoA~cJp`$|lSR6v8{$+#}e2BDeD&pI_;4c{j&y+A310qn)LDX|ZuEspj0jnGt#rpM@ z%?P0H{(dKS*1Q5Xb?xB(2Ixar1-ND<=AhQ_WEhc&dk48|f%P_zJ81VQ3FbeqJ4)%XF0%^d_s-x4NQ%6n~hE^v3 zu_sIbJYI3koIm-_8GdbqT8$kJChs~ryL*#H8FR%NlO@rNMVV;DW`c;e5m}rqT-0*K zRU{;_f*`F`aHlBx{( z@9*5V6Kt2BTU;NPPogigmU6tX`b77j_Bj3yEf~FfZiFFlZ$1b=er9mP1=>L-vv6Yy zf9WIe0+SmVpJVh870-sy;zv8!UnXEUr$EMZVEmN$2VUsve0_e;hHiC;bxFRDhzm;9f= zDnYK*o-AR1V0Sm|Pc-?L3~r5_UWP#Z!0&biegb#@&_&o9f@gj+`tpg=%?Dls`$?$9 zOOX5nc4zDAlJNz8W;+<`gDFHON}4Zj;S;rA>}regrAGTh4DVAdz*FW(%q^^YEK95Gg^5Ed5%s}$X1RO^zaPPg^=CRD zas@XSJ!=VJ=>Z%xs+^CaSWIf_3 zL%!-KKXc~MX=B`qId$Thq&frFs^PNfqK)Kz5$xJ-q0B`%u;}a&E7N^Ik@%QI{#FQS zgt2S=#H9Mj#mn(BDGFOM#oSGYXO3=YHnT@!wUQg+SB>PjY6F)HNJl19*2JT!u?fj0 z5mKhmLPpbhk_gsE`1)FkQ(TD`D=I{5NfIQ}@kYgwm(kui5WUe02Bv@p5eBjZbykBO zcAJUD5yj&E0*_g49)Of{?)+E|8_mb4Yv;+0>Dd6_hUkTrV0s zOiL3+;kP}U3^-4P zv-`kVa6An)Y;-KC1JLT;cokytf~Id><@gzjUW(*wEsqlczoX`1LxuO$qcAEWaPGyR z!!H&UD|u@o5)X)xH>`^$jMt?H!CVf>iY=vuqb8dTu(dgMGca7*vv`{APbBY2_9FKj zwTBnHn^p@PL~n8Mh!V$5iZcp^Y2*rO<)hK9r0z`&53G}vV_4LVIoTk9amnnGwK-Wd zOXdJBd2>immQEeAQWmLEuCor2sz>#4ln}qduL@<^rYR#;PwRsgPwJxCuaf|Im z^C>gSN`tE1#^2U0vl;h1Bdy@gEYJeKJFoI9;BFkvSP)syn%Bu{ng5bqI}(kwnYG~B zkT&<}TLsBHDbXGBc590gyHe<+NzV^!O6165cz=Eh~DE9ZEU!xKXKIEQ^|X6zhg0W zQ98WjsG3W-ppv`y6%V=UVyQF`?r2`}w8dL~L`S@tsqzR%p8|fCAo61Rn7#p#RfmLf zkVPh#u{0(1x0k%N8CXDmW|3l@yiCwN-v0eu2?-#<@6CKgTp5(@y%Q z0$Jy+SFN9AYe^N^3FPLaM8gVAlCOD(NHZzeWH!#ribq9aM|+1hZc6JMo|vbW6-IdkT&2Et(DywqTkeQ zg-Dbm7}lA((yY-@2T(rPStRjf(p&p3pA0K|Mn7Wj`N^P1NpA%{F`3$yWgE0sBmCN< zwY$xBVwHt2wBS3D9<|Y^F>Vyev|SXH9WUn(cZ{Q|Q$n7)@hnoZkUZoBWVsJLjHuX( znlxV@*T!9=JyP|R4wtiHlhLCyUWk~Hl@9vYO_HA$LuQv|SF|5@TEQD^+>xhZl>BZV zY9^gsu~AZ}cwKJM${iJ#%BBppIjA7Z?6idP%F6K7w%TO|T~MnT>4$UmjxE5kqI51) z!hCp~n7bgj%vY2tzu*mm0-iD1rLM@w0b4?sPGLv0$cudA!_6qH*(G}jwEaBQ-FThT<&Uux$v zI4)?A`~+Snua#+jRf?05tlT@xF?r?8ly3euyRJ=sEt9d+hq<=JN=*ThD~7w2^!*vUcxC%pKCudp89cb=G=*@ZM%>_o*vOB+0^AWP1bAG7jjNnULXlLTjec zRR0vQ8omLtI|HF%%u2!Z*qa+j}Qe z&tqJL8VHg4Q)pQgR&83sbF#0@;^t!6&w~tLxPH;HXPL^h;8xMY_mO|Y%|;acS-?&^ z!S0rw-}-)?jj8gi+QssVlDF3mn9~mDh7KZ5j@+vwJ-hKL^XcLj)>oZ<0muslVG=Lv z0CX8Q!brHpiwRrU>N^p6ir*JmNkY#Q50>^r1U$8R6HwEU6&9^bc>lq^R?!)@fXLWL0 zZHGw45TWD-C*g%j(cVkd84lwULhaMf^?_lQa61dZuti?QK62r~cW|2q5>1eAcb_l9i#Z)ZI4 zw$_=dBv%H>0q;T(ZSXz}ZYeT)*rvuhmmS+J@`tzD^3yCBSyC&e49>1z)xPInxcwHM zFr?nss4s_Vkh8may}~L!FizhsbnRo+xO-G5Db_Xu6^qvVfEK5x<}K~3YUjQ)Zy#Pk zmpAwRj9jz9u(4)*oZ~P8d4ZQO+d_LWzAf~mfl36>g?|VzR!QKdaaKpL# zth_pvUUJ{d!!6O&!al-CE@Lp|!EanqXEAnpC6zIHmq$vou=}rX4IJ}u210NONmhFr z%27yGNMDoOt)ERx!l8Wi! z9?%dZy>8iuC%`m#Ur(X&EFGSX-dhCGcYLN9z&3#a-b}XOi z%?CVuKH&~paGQ2BVYa{AzCz)3`=8CfuC!blK0<4Y-BjZA(Cw)uP>CfdNzES-EF}`T zH94421aDOBE@6PNZA1BF>d+co;k7TxG;Hmd+1n~L1V_5mv1JM278iIVj(NBfn)KqH@64iim!Mth49ZSQZ$i5xSL|8)+S+M<0Njy@g?<$ZrWfU z`lVm-3?4rwzUaj86=?W9)|l6pQB>*2BW27FyP#U_a_^8Y2f&kqn%oJX9x}efgn?u7 zRr5Ho?e-3M!sfX~U@$Z~eIF-GW|J!oOH;jA~6p>P7(qvNNF9e!0tc zlSk3TFvejym{vxI3Jx%S)Oec8|E1Z1M9vt_W5ZJd{Tf_TCIkv~i`{FTZ0{LL?4i-} zNS&t=m)}PqLO^Q68(he&uAijz^e({3H%r&kAotZoWBCwq1$Ri|Tz`t9xB7=2q47wt z;*Alng}MZga0!YQd59=fZlDuR0b>d?xNV_3yBPEpJx%X7nw~vr*U+S0RLv+gi^7|g z4yz7;@b`(Zf76rA_8A*WRPAQ7E$>YB`yJ4dr&>ZWH^A>4@J8D$$w8buXPYD2e?WD` ziX_Y47k{Vyk=`e~wEbob620B^HvWl+IpQ7Hs+gdjJ6>(IO0pk|n^=@FHb!tPoagVgg!ctlL}wAUNy)-R4% zFXTeLeI`U9N|w4|3(A z>bye!g9QFV#*tLg4K@R~qZj~;r~Zdb`2T~f{LjAwKpih@YiuIm;ACM6kc~^&nA-kL zAYSqJJL9>f+4CC&c|?2!APaN@3cnEUJOP=qLQ?(^FKw4%laboBGaKwDe4iV>6!E+m z^SrHhg~7JD!mmI|*nCc=7v~&@lj|IHfN1!4IDITC#@XSKnA{=@7J@wjQWA5^kG%R@&Ir*CFFQR3vRX!{X#A^;k|H6&I?%bc6Xq7Cih_&R@c!o06&+sjp*rd4pES`%GS7Ymjl z`AX&i?SYsVnjsxvcIPxL?y`Eupt~Y-rN9Mq_X)0X!W>5mkuCrBHK8BIwwYjhqM~Xa z?~&qAGDt^p%H_hzBA1`0Fc9eZVk6-;TD`KVDtTdH+A%}qm<~<{52Fj)54-Wo#ot4i zL`+T9?B50x_<2ARl*Kpb)>bzZ`BR`na1*U;)&0XO-IWM1ZNNS27mIPQTGl&Fu_=(B z3+jQ*q=wh_`zGx=nXL!+n~TB1uTHzonFOc#*9@#4Kg4| zqm4~9KuQi_7KQ;w&6a#!Te|}5>M8IeDN%n1Fl!O&$lw>K4sp?&?rt08UU#%zOgdd{LV5t6yss$x|N3s{aWR+QprK$`!fYunb_~? zW5x_3qN7R|T|v53zZ6Fwe402=A#Al{Nt{Z@emDByI5<_AmIY#+0I`CAebzvFCezN6 zr;qv=bYx98?T%z~*Z4#I&~^vW^Z8=rpPJ#AX-TfhC_uPOVq?a%}4yv-+ACJ`=$XGFt8|JzHt42eKLRRVGU}pYS=@lAEFRw1^3X{ zR^q!ze1Ql_xI;4GIzz0>rC2da)%Ml#Md9^+4Zl%0brAQs*A7;QWoFIRNiBBkbEiOx zg;ScH=g>Kd`5u-&=w!N9bOOE@5XpLOkB?8TzfO2>&G3ERj=+9tyViiPc58-H@FMEp ziKXv^l!5a%D2Pe&ul$BANE6hH5k#P7_WMK|LL&pdM_AS&D!>j%6@wM$IW@V@93y%+ z&#wjn%TA)l2nrA0068mWOD^adB`e9lXj{wSqtWkDTp}x0eu~nKHh{*h8EtCp8I+?P zqu2F1j@ySLK<$bLw2IPArswo4f;@6jsaB@OM5D8ozPF(hb*j{9FwM}gIR%-4sl(Uw z_?F3x)DbL-Vznm66$Kui94;}sqC3Q);nc4UjYbwxyv(H4zqrg`2O1D*SjvYYXKJ3r zS^11pT)3sau7$d`DP_xbWh0H>kT%@5@_RpOSSu4XaG;PS8oA5w0{dR^{@g+1Dd z^w254Aze~os9jUNX%5(4X@PbrU3+@vYzv_xH<#^#$dt= zRE+qq6BSQz@RAgYRNK^-)jVIJlm;#Hu}2euRJGQc3)-xidlDGm1f}{!G{?}lUk2LR zP1Wn-UqpsLIce5{UK#l4qT#cCR|G5%8!A*jK^G(~^`ogIk8(;6jkc7Q8Q_oAltBP6 zYh7xL{#Ki%{X(0woTgk1_&O9{(*&E63Huq+OJI9a1Nyw|*6u73?C*8kvDUGI;ghI{ zz>42)Qh7OYbV(i?_QPTy%Se)Iyn%Ns)GVn)V}+>dL!K|rQs0;JIgG3K`z%KW8Bbyd z59_W*AHp!q5&JH%_L#=RAYdBuHiuXf8OHCdF1gT4OBNH|io=J(nf4BJ zbaEr(FQ9D?k$kk@2BAffYB4RxylgA0omyaj+`qYk{R$_=PYLtdukNAGFs~RO&@!EZ zE)GoMQ@qGkI36n$#g26rEE43Xzkv<$YNBZ#QmGSbvc}@i(QKmDuwiX!V9ftr7ha&( zhLDzoxlrr=?k1`~G~1$0iGQ&#H^BN40(%t=|IKyaVWcIB5A2zC*A2ew!QtRiNLj4- zTV<=U-Y&*242}rG(3MH0ax?_)GJNwFaIc?67pVI&UuGJk5mSUTA}OQvNF@E1d?rM` z-<5b1x5Vv2qTf>S9(=JNKE#5r`&njgg=fb@;A<1b10s8qw@2$1KBNkw=kGtS(M;to z^Yhfxez;AvUFHNUOJ=YLvB0u2hm*C(xq-jd8;ivczTdM&9)wrKTCAEvT;YVXEWOOE zx}wwri$G##e4_eI5fn<@8Pi#&$5Ne#;o~_HRNeZvdU!zrmquR($dcr>^@~Iq=<~w*GIXrXMiAakYZB{G zK4<+D{ny_roYJ`9?Gt4U~cP z`L@O2vG3ADwvRivjPq>+{fSQj=9eiO4qkpvv=LJlKUG$Nn;Zjewu_7%n~3=Ur``yd zu-5{)szM~Mn%g3K*8PoC5YE;|C)Q=0W|OCwM(T?iS7$=-xQk}$m8Jt@3W7nAEZb`e`!CY6|jXR)aw}j`P zjC;Eaar?YV(ic9W;ba#Ad@Yv7hE3Ge@V3)9$x?BxMdkrmO^d??KGo{v2L_;Mh8+^+ zO-bEpGzea;uj;{XWeen}Sv`~-Izp%HC>F&W(DTj8mkH)8M|)r;RXF&D!cs$O1cPCa zn&rNZ85(u5w>IIqX{b353(L-XC*4?NMQ@0@Wl7` z7hF@NJ%ug@3li=szibPw&LSZMq$G=PlI=BPVw&}y5pQ?RCPVSwfj{LJxUyM5`{Z2I zx*lwLPVTIaZSt+ZgI!^2k&NeXhHFA{l%rLvc5@1S{A%R%G8l}N4HJk%UOA-ZWiA@q$dEjlg-ru|*}Qn? zL0BG=V9QADfy%|C`h$yjzJgCRZjy=@^k(l`CHRbG4c(CXiQK$TYZ8OR-=%TIty7u^ zE>Mk?-peDNQ%K>XN!e4PVcwaDZXs3{O~I3K+eeU!DEe!KDu&V^7%L{+W(P%3-x53D ztNoQ=5ZSn3xuBSKT+erJ#$ZI&-Hq*r$h1g2-q|X8|NW7lB&HOTiVrjszVK~L`fZ8h zbjG%d^0B+zwJ1xWt-eUC$H1e=>>VbYmUpGw2UN9PGGOvkdRBi2CS z7JU9B%8Eo|7L7OmWV!Um-Fqu70fs98|BV3d-~Su@r)Xkk;%4_34*!=&o2mBdi2`s} z3_iP{jwc9275u8%2x{yqQQIM}8RrK}k+5*)Cm{@>nR%9F6*M_X%~S_@ty)38*`P^R z-)L?vGf<{1^;IN1`S2M2L*gT+)6Au|jWnJ0ek9)UAme%Rv1991XY!2i^L=sc%S9g_ zGu+|sQ$mp3-bm!|E|a~NDlH7G5_uW9MTit6!J!35!d^;jUFi;YmZE{hazq%nrE9N1 z12X#dXphp4<$C1+1Jz**JMH(Q!Szy%$xK?a(!@`*xeXmz>{IXBd8oo2suSivm~3P=kpXbw))(sgz?7R%K|<${NlsCZ~^lvz>64@?iC3+zik z2SbcB@{ZD@coJ;7CLol#L;K+ft6g=_$ZcL`e^<~*I<7N#iFsiE!m6zHM$)m$yVQl| zUuWd*LP*&nR@iSR(>4Hkxjnse;}Ntd(lJ9QH$wj&BqDrWdj;H!ildpG>(r(kqI$x) zTbaVb^CHaU7-X64L}sdOChN<3F~6S2ZZo>SF~dp$UZ9H$zmp>!<}0l^0Pp+;F?HOG z4HKhNMRM?M`-p%oHGPEvdj z&#BvYO6gO)_xJ>CNt$UztmZIzXBNkuVyfm=RrD>D@@4F;iT%nxqO`ek5B5!AAls=u z6q^&RreKfMrqoSp$Qt15I5k_?wQY^|WDY;QJ%tXR;GP zF37S7JFmxb!N2QuSm9p4$+>r0GUM80tapm8nMzS{CVr18e?L##YrA^|*ZM7H3gfD+ zT>{xgzMAo!bx1}0W{gG!x*6C0du{4f+3<*DiE5yZ;&c;hqY5fRz2MvaynAD|D{}O! ztaq>s?Ly<3Yo$JKceY+9b6&4A?h3&g3r`tapUnuNY~h;gO#g|_py}Wh)UIJ>l*CGt z|G=jq%!W~HbswzOVhVjZqW_|f5BXap<Q>b%r&xYXIyrvQ-GU(y`;|v43tQ&wZ*3 zD_bsHTP4Hg2)lcJk(jxs(&3^pFFV0NiIEmp5x2WWysgwzT;ql%I0HL7?HgEHk~t{4 zf{3mp@+1~p=QuUuCiL2>2Emd-ZK}}$4}a}ijk3KYOZcfGD?WE*;G;mLusrbPCCFt= z?VGqpr$X-(j9gv}3xUGH>Vb*yCJ*Juq}H}~u%dwJyO|w4AI#<6&^g%0brMvT8<1U; zP^>HFP;iS!#4FTcnitB>x9uOEg>*I6`it47Y0tRfo@4e~jJoZ3P^- zh7Q4Fh{GYK*V8aYTf(>yTEe7DtpKc+u+FuRY@Oc0fW{EnXBR{dL*#7q8I_~1&^8;R z+m#OztCqQbJ2vI0XoP11VsmHkbG(8DfmPfdv9HpYt32WXV$De*`0z6$#Y4?QaU{@v z>{w4+y&IgnL_k9P)OELDNHXb~)t)E{qmu6%&ZR+%7*VmPy4dVdWGAf&!1dIzx=K*q zO;F3ZmpN(2k+T!$Q%0P|1$vA#L>fCjbcg+LaO)fH z$oL7Dy!|G&^#lvp)`;=1V-BuMD>xAwgOzn1H6+BB)7wR@J)V`{7O`ol-^_xHw>&#` zY=iLpJFRlqwCul1c%cA4VbJaoXZ^nSL^X0tW&8Zaj(cVAm!*4{| zO%Hz6i3f@^ei!ajb^R#}nNI`gj@dAjiB30q zX5W&hn|@jewSRUDys8d5hczhmqa{oO_u!|^E&DS*^bj-2G324`nSt}-=fJnIXPIi7 zz|gU@ccI*j>XkncZ`tJV(v^^7_Ay1`*^#OP^MIr_e~rx4*9U5q9(-p+PiIMjpl%)~ zj*eKY#&x7=Se&a~M^O=NlgEf0&)&gn4V-@ z8i%5$2zmHhIzOD;Zc3yO>IjDdFWtBweK=BuE8`1&%pMJfo0^*3!7p1cNXRsb_oH4r4irb#dNz7MUuC1#{+wG>s~Zq+chE&Q@5h z#TTA%G=cQ%FD18WX3MHsJJw~mVt~X(p0Y38Yp@7?&d2(j;pwhG1_1_N;n@<OUH9n2GE=^K!~5=j_u0! z%xfplY1Jl3;yXK12vv^g7utZm@t$TGlwn8Zv*_gdYcXrL8Y`9NM+rVbD2U?NPr;cQ zW60`ca?=^48+>H9<*%*tfJM*9W#e6+f+8;gOn1Z3EKCT~EquL6$@~mzck4ijXZ*o2 z2;|_x=)<_`q5NuMwvqGhz!#ae5T2(6nLVSjayK3Ohhsax(f0B}Iif$WXM6eeIv=G*K~8WpRzT>eH;mYIw$UPStLh$QYZCZuPQ|Zz$Vm=bm zgZAjF+-qH#OeCnZ0;dhUgKHiXs?3xprHG$su=|y1mBfEiXkWNxthk(V1yW&d(JLmm zTNrINyvL$C^Z0L$0gO0w$D9BeIuif||2GKuUsue(B48CAHDoaiA23#pWomrI>PWqJ z{_ldmsPZ$y78D`bpHD=;WBOZ_(E|FO6v&VAa~;wGF8rrpE{) zztY_07n)pjxb$%JmuI&YDxP00Md~+nk8f(8Q=WB11D-;zjPunSCkuxx#Xn?OjI{;a z!v({DkZC3JTv?bodSuPLybK)RjrsM5Qq5_ILkj;^q&of#WNe{Wf3|vj%Kp|I1{E)t@@> z{}~7S+ojRJ&f;b&PbtmuqkJ?Lz}6!o0F{382>S@=+(2j`zfu_%7sbXR(_LMht7wJQ%yP{W~c_K|I)2A zV1mgI&)SJfCslT(NvD1zq}{M)Ps`Z)uuQRvU>^b%`Jm7mGl@1kCmGwAya_FFlCD5+q z#1|lx`i6?jCA_A|E&GLN{<1FuB`FF)-wjyh%s8mZJo|d6Gned)PY}G}n82@UixA-f zzy0;ze<2QDh_qDk2;+Puw}rjMJnIz%E`Ij&xTkU4@%xFWfpNV$P{7-uOR(AaN> zi%Sx)QF!=~J&~KHMN3Y8hrj*PAjKaJ2{qAM>3@hd<^iw&5Zv;YNa3$_^M9xiWFmXu zdiXH{4yzRJe)bD(>u+Rg6BiKfK&o0VZ85ja+N8U&fWvR+_CNG%lctV)-F|TEeNhb| zf+2)~tWmuvz^Yuv>UCn3b662q5YHc2Nwm64qrWK>R=v=#%BX2Y;;ehlqUT;~m0n1K z7D=&^97>hmm^5}-QG|fj`c81k*g?@VA+#Q@Sy#%vSvnf}32N}>$*b#-*ox*tN%GW@@Hbre{32`mVdK* zitaC3aXDXY;C-oXuzr{+$_tS%O$hX>J_(i-xEr&QZc>^xmN12WtwKpa1O3zPDIRu( z#fIXAAU>7rFw65IH5CwF^ZupU-x`>$ni&*#j8hecySvPndl81azcmULHytJjIpf}K z*aU%5d9C;@W6hg_yDf3h6|?@Z7u_M6z;+=D1FB*>e~f+&t@E|@$D(~-Q~RERaV0MM zI@fNl{3)?|3>l%J+ag?V<%H)thrP8uZ?&gx7uDPFL$ebRhiWx0I2;Mh`o+)Dtr}A3 z@CIQ4a!g(I%c`9%_(JxBD6eCD@U{kq-o_AOR0^ooZ<$)3!oo=bv}`Tq+xnP3GmQvn_2pGM9>>(2`3Rmm_ovDD z>^P2}{NO~26_z7p4-f(BqCCj`pxVADHPaoV01}jX;jSfvl5>b`%DnW5A|YjSqMc6; zccR97)LYvi2^2bc=l8{~Z?2FP&lG)K0w=5#OJUDyL8%l!P;c)TdNGq_noAG?y5y;V0H|GsKK&EK7-Lte<@{>Yn~B0oA{(j@lYfkp_Rb zQT<;l@^5u0ZQ^EOWNYSNU}tV&^w&=ImwKvDNeeL9jPhaHcAiuVr7BQHh_28`Gv;tB z8rvU(VTmOjpl|54LfhvezCzPBC+Y+B>5H!S{jTTfOz)ZxW6CN#^k@53^&x;tWjky% z^ZEFA!0rA@$&r%6NY4WS3tyWuvO|Dp!tkrUP*@=}4#@=A5zGqs7ABPi5u#->rZ$WV z=0&u53^V9E;dc7DKWB8~hDUsi7tP)JK@>Km^M!w_RY(dDj42C*Tm6jFUJCL}9-3(9 zUZZwZ5AFN&iU9>406-*F1Uj2HA;<#pm zchlbNK)37W;$sUL)nTk*q5w3yO6sB4Xq|9_XuD$&KZVG)ng?&*eq*o8{-wan_Hra6&H{EJr=UDI6zRfz(ueqWX-|u_tf!}48;XdQ@B**x~+otRy@%%*b z-_bZ>yrC1ED}W#4%kdToGjP0^ z*IYPn-xPVluz2sEG;5`gVo;qvPuLJq-8whip4Xa|OHHfwocGh2Rswz3t8_7>B6q!M znsz^dN#Tc!$LK-1FiI=OET19L9irCl>%~r(=Er=kjt^4x5P8H_R0VR4BZaq5rjE>e zZWcQ)CO;4h};;;_M1HYe*IiM8t{Zi)zk z1$^?ujqAuY@Tj935Z(0W&hO6sm{z@GX5}=hj#30o9VQuLX2?X68mY*Ag-bZrO$K6m zbV;9kh`B%~+631+NAKjK)R=w1KQ)W2j*KfcFb-WCO;IVf6r1aqsmuz|75df0CEQo{ zPJvnBO*Ne;>7#WsrtLf7C(J_%>yqMg0;@pGhcZAoghEqxpcwZI`j1Ec$Hh>{ie6t5 z;8;8l@#TxcfBDE2OGG{;ewE3vNJ4yi!Taw<^JL-nB1&E}l)GuvnK-VWRO zA|mK?)9GZv3d8UMGP`?~!%W^9fhDRas>+LLJDpv|Nl z;()^?7Cwoc(AaL65yn$1o^&ZKu+XUH@nA6*#CI?&P}?|Q zKv8-Gsd(|ux(4z-vt=#ynTl%pxirRJgIL(GlyELT|v_s{M<@t$(*| zU_+5QIm4E&m8cznD+Yh8Qc7;|SD>>{Q-`6tr=!Nh__^HJBgtst_{et&nlQ0*je+r}wf(gWiY1IG`*8@U!fA?CsZv?h=6}xv>9l9OuC%4EG$Ya+l zyQL!*Rkutunfo)U=jEY@WSvoCRvDB>tWpdczY%QRZI?0V_8x*1ZcWb+xe1E-#wX4= z7_mCz%p|$2j0;V3$AT>Tes7&&IP90dufUJ`x(6-@U zM?}`Bjk}|%Vt;IQQ%Hu-m4d?;mWyPz7F*J&SX?Xqs7h~^D3Br=V8L1Ix1=zk7z(O` z2rn7gL%eTyP{!gMDH0DZ3npc$rA&UoeDTL%m$c1 zA36$3m1$i;ZmBph#vsa!8;UiW2d5|BYQxe~wO0$EL32ch5nQ5S%V-aUrl`#{Mtl9x z(38ZN0CxViDVH7`wI)k-&2##$)+5mHAES5ZY2aW&%hvAah;A}AHoGm1;!TZ%ilfGx z*IG;Uv0MFe2|TwXt&9Jbc5wgG({_uDGO4vOld}W^p`(`3m+4dBlFaOAtd=xHY+7|; z09V@d>5!swlWoooTKq40pC(nYDw9nNqzjqiI;(M9gncX}v|IK2YUb|LdDdZg95;Vf zWDv&lTBwuLb2q_h+{}#GmhMFTdee>C#3bYNiWs$>3_b4({e0u#>js|h^ULrPq>W6l%vVNLP{Q-YP+6?pBNs;2aCerLSR-^%{FzTvO_^2Jp?;y>03~0s673nd6=q~wQ<$sO=tQ1;szbe}o;)N4<+ue zMrR~GxrP;si3by7{kG-go`R%^dbJyn7U9brq51NRx-PoEPv$t9t=jP|!T znen%-b0{0EKrSGmVzN z(1_@z?wLj?f2ow9OwDJlxC*3My>E*ecqFTuJtYx~{zWYoMb^Zdfj_lF`VO}yCZZP zV?_Kl317j%A@%?kM^v2$&PR;;HJm%&0OM<@;%n@l&=5=mSeXcXnJDE{gzym>Kq6Yv zWDr6of-@Tfvp2Gsy$w1lt6dz)>uA~5N0#3Uxo{Hn`!RV6;Vy~qi7?zbQIWbYIF6x8 zaC$N1RZs{)MQ||>G;A;-642T4CzCH>2oh-_QuuLK-n+}(2Wg0{*dXHs2l~aXbqVDC zF785V?r1G+?icnQpC7K?=BgzZ;1%i~@L!=zg-_xQde@{U zH!!tWOyl;P6L#h137B2j zq;P*|r(E=N!G>F#Gf%I16j63M%-x~CHyO3*s=ca2eDoFkU8A+!M7Om!*;>E9(|5w@ ztKG?G2@^u3!Ad|F5qM|1OupOPh7?7qDOqJ0Z6J=+sX-kcYxN`^pmXe^H~Eb$>U#lE z2O7Syc+xu~nLezb1@4VXs|1B`=hnHmtfM-$a2i0oqdEm`_L$5`cBhrJ@R8Y$RY z5iWY*UrQl1N_II#hL2<$c6B#vFdT>J|X27$_jC>eG}?~gl2o;5rci%$J2FfkLOZC(f=RuFl1aYDz-u@y|{>ddDcf-hP zf$^FJr#*YK z{NLZs-9HIGRm1pVBkk}|sBA#z6DCvt1bJehvfoM@k@X}4R= zLqW!f)<=7=KixIyfptrb33}8Qvfw38(*1Ra=;^v3YUtC{E-8Nqkuj3+3EX%+6Kr$4>9N}cdR!4VESI?LvIZsf;t(4cdu%jQ^4Q(=a~NF&T!SJ3whPgy>3n)E3X2VkxYZk2p97e$(aykCT# ze1g*u@5WtmWv3QAw?qDWw z2U0afamUg50$vg}6C^|OS&3@X5i%?+3|(efEqnJ$l3CR~uUvM_bzFB=m$amhKZz;2 z2}R-n)=esp!DPNGUYszc9XD580zeK=9kHl#1i&LJNW<8uhB8Xt&%BKffeZtt3mUWl8T}T*DFLXX-%{uyQZe$$#Dq&4yxL*GM#EmQ@c;$_EACQqyFhFAE20givh37tGabd6cv6rGhMgu>6hmF z%H`xS2JuVJo8@eltAn5L7i?ms!v5TC%*`?wO9Gf)aVHbCEbMPuEgo~Tirf~}uiIP#^U`xd48SP`ar7VTZp@Qem0e&@dM+SO{j7?*Uj z+K=-sfbuPw&0n>6OGE1WtTo$68npdYEf=zB5p}|raA5awe~g!cU$<%|=6uyB2DR$7 zX%2uAMAw6ZU5_2s=8JApAt99&2iZv~iN0j>afw##DVEF$@!nHXV;wSJIp*tuDCh7s z=wVl`Kl;ncB*n?&t|p=u@A0R#kH08te=;ka+F;gIU`7=IRMnXNA2X|e$SQwBztnhH zDd0=DP<`^`7&%nvBVttKbze-ugaC#?(X`sNhO+aOhY;YbuiCUws4E4dUr;P~#4Y7* zPkM`0&(B+apzVOqqF+Vx5>n~A4>DyZLmp?H^+c=gq_FJ8I_|}4e2jI=Q@6Djd`;9( zf{27QWp7IKtQYHVPXw<_e5M$PE2_Q}%-;%)_$xW9H_=Mf>~_2}gq+TzcoS4>Ik@yk z5o@c+(oRfxUh5F_V0^J+Z{z0QJ@`PAGlvFjr<8pwp=y`@++1JfCS*YhBEo%i!8#O* zJWz6n*+}%SI+OxK%gH`)k!XNg6vzMLLaA8Vn*L+4{-K_yDoNYV3n0HQIsW{anZlQ( zluJj);)qhJN{%Qhfeb^H8Yo;Oh0i`Uy!qo=?4eZY@)e(6r~DI)^`$I4y(uU&fK^M;8MzX1iymUx_v zI9%wkP>qA1zf2aeMB^Wsh0=^tug=o3=3eCm)$>M^K;Q-0r$uMSJTzg29*k9sQHXB$ zMMQ4ScyP^=RSry39OsjjpNO*nFsk+Csl#hVkn?9BYCw z6{K6vLi0Koi}rVx9BX+-+7C`m;p9?@<)5<+Gs2zt;e5COn$(&omTL@^yAUhfr#&)_ zX8o!Ql92p_1|ZT5ZS^s!mREQ}ymPx#SR6zOh8}JoW%uRJFc+t>a2lJ{N!NreZN1bB zio_jaDzycHr>%2*zlv<;rG~BYEvv!@OC%HdmK;+HsrM}v_Hjiy&}|#H`U-7hHRbv? z-2WLlf5`E14P03aFmk$p1exuB5jlT9W{UsNswL+=s+PQZ`OEVw_?`+Ql#oL_1f}~& zTIe0gWu+Q1o;6kL^LL=06o1-i-3g*>gy--AIL*z>xA^t8KBY8d2L~2HprKJnVFpTq zDPuCFvoe?)d9nFL9wgPo|0+hxx4CaG$e#?9_cA5y`gfxQz#A zFm5_EB6W|VfEw?ol%no#OGSN${^LtYO;tU{;!wjvZb{x5-DX!TJ}sUnEyKR|a8{HA z8)kzD?`vD=qAeuD3Z>xZ!l>yzjls1ovo9aZ(T0!qV~?ZWKkauH)-JPV#~F+YraXef zl+K!b2t5!ZO?Obhq?_H*p7G|rxbATC+1~;$1ckz3Aj8-Q`#Z5$z7*#sUXXPY=ZHty zoj1z7V!)#{dc(#Tq!dODd|QXDxEt#wao!YtfT>PKUshWcQ6u@GVZ> zmoYzox|G}u(0Xdv(hASXwOS?$aizPXGDYsAdq&1ai%AhOcP^gSu&0}oqH}{ z<;wW|wl+Xl`e~44t0($~EA^Iix*e|PMC1FXes>rgJxo7A#53iV%@$Cb=JuFg$&2vF zyolap7(u#C?4143spN&ES>YnNfB6}*kkd0U^nS&I`HPa!e7H`+!);KyVvozRN?DV! z`xwg<_ZmcAPL%8`eUTuWjH#X|j%(D`P%5=&p^G-ju2k{2K_jS<&Vnr17W;_9;2O&b zyZf#k%d0CL?Pe9mDD1VyX9s(c%&4$C#Aw5ehe8<`D0Y)Ol0 z&$7XD`k|ERb(5rMV3Swe)pf?wBV^uaCX;Jnb{R3^Kfh;A!07AucY@u>xaF|mp?#jh z9%R&)W7m6PPnfLuJbjD?G|K3CB}OcZ`X;k@^YvdbAeRq0rVn`jcYz}2{}>~G?}w22 zKVqcjAAPXcr(YmUK)D141J@=6L5A9hxwcS~L(>H$c9PxCO;x10yD)$8{~r3P{WnK{ zo;JKaRj^2DuM6J8+(XYP&bH0EZGJz{^!~~yKNHmrA-RiOvczvwDM6MHVX&fv6bz*9 zO_CF1_Z2Zb$(FZsJnC0M{nBBBLFa4zB*Njjn??~|z0(YiXjW@AkdS^1Z10N9$zW_b_PBgMy5qN&-mnQ`QH*rUJoZT&J60Dr*?oCZ_m zq()ZTP7KN<|6wSayJ{C2cs>(Z9U({d3_hW-@U=2M_iGH;G%SIkMxoiW8|&3;t6srf zB#{%~A%=AwC6tzt(lg8MpwtFln9^db?YPE6UuR?wQ~1)89Mbi^imEd3yn_{@?hCQY zhchz^rz-%?S6L#D*mp6dj9g3@wv9DLDp@GA;IKHBN;5fZIX|kU>2ASlpKGHATSSb# z3H{;%Rv!SmWuY;s-C1HOUbsCb01JU2N(-FN13URpS_cL=>;2qVO0I{t02?y~&5 zDxE$wbB{!a=_(T?%+Aga(N=$y0{i)Xyw1GsE54xbJGn6&($V;N_^WHsm^V4MfL@@Q zn6-K>h?x8tHzy-}(zz(qD$7r7F;r4)5_xNiJ;aMS>c}~|LRO(63sq-Q1Q(ql7O}ZU z7;ZvF1lA^P87Fob+?c|m^PdM}$zD?Q7z85HqcT-F5$F$feC6+!V94 zF%>d&HZ}R{p&%1>G6lBY{rTJ8-1I6jL}!dLFOE z<~?Zpxr3gs(2k6kUZwrx-5$EwOKV|@tu&>-p2B23gel}4^ixb8gmzHAbucz(v5e<~ zZ-u#FcP9PD^NGbv!!t8iR)HfG<>lTz?vOqeRYas+E|@r~B!_T+<&Qq8<8X5pvI^_m zQR_DP5?D}I@gtc@QkckZ$pKs(LuZL0R-ffHsyhtF(k#*Z2w}|jA|0|s>4lQIs;W_u zS1DaDr6ozpH#J#%j&;INFLRqkr#~o26hU1u36Yg5o_I5*SOvvv=VW7ch|MJ>{aZsH z@@(=#eM-Q=45HZT!YVy{(bjMs3NkM+a>-DnP=Q6gMnQ_8eyMAbk^} z4&$B5gU7)dCG28f51&}>yvuTdN{<$Ho9KrLQ?u42Y=X7yWF|2>d&S1Pu6+e~n(Y~n z>QachgYRluQoZQsD+u2LuYQMgKa`G}yL+nwZ=&Zh!~}NHYv>%SXI72Q4-69jWUT(r ztB3=j?#M&B&AWtgiObr;dmKIB16d{|=Y#6lmCoa$9scf@PfZA-GnN0{p( z)-E(}sEM-pzHq_;c=ChTsU9Lk_$Vfrg?I%K<%zF&Xk{qJIDMk)sHAT)xXClo zWy8oz6KcPu!{NaWO2|CkjHFc<-hFNUDJtA$#I4i7r49}-oPv&pmYAstf5&l|^G=_t z&{+S=v&}!;mbU;eVG_t`6@dIl=-+VL|NadB*VCIS*JU>#fSgS}h=rePYXv*EFC-V#P?DxvQzE*T0N8z#SglD3nkzwMP%* z7|D=D^L%plsCy=Q4HRnN>L!Dge*SbbcRq>XJ2xE( zvQ~ms3k;G47y=&&D#XcL-i$3n*qPfEzU%v6JgojK);@!}YblTbbO04c(f`$A$w|up z*YzqGO5W^dMg zbi8v0Q23ztQ8bUOpasC$nyy5A7ixyOVtIf;!73CMDoiUDiMdE9ASG*xsQ7ypOAKni7JVBLC6wO9c0DoVw#D3L8?Ou1rVO! zIDUl_%Rri>GchqWqIQc>cv4duN_OiLs1${E+lg>5*ffEYm)xVzIntk+X$85c1lf1l zo%|+1<=HKA-BhW`NTI0jtZ>DI^kO+pSTlAgO=4I)Qlrz2iB8V-$(xe+m2<9Z+gSiJ zojJsDURt496P7t{sbd#uUhSeXSvkf>SBZou-Xum`lhsi!!9pF-wUC{LdKBy_J!yTs zyVk|SZygl`a2JA=5W1DouaXXIt?dwX&=pN`*NU z$3l{#MQ7>(fGwIG(gOEn=d)o?fnkQ$M?I$(AAJ(|f^D zi8#`!G$d;#!_=mwf0%(N%|I)4yL7gBFX|AzROKV0K-^m-Bq}F}3-*5wL(lF{2uX!o zr0X|DfGGpO>h(o4=_%D?kTU71UBT+9US&eJ4TRxUX2db!UF7P9Zt2aQoam*>DHZro z6jR7!xk$rB;tJz17w@=s6Axy=ZVhPS*wc7G9g@*zg|ornL0BWUA2F-W*z}r7&}0l9 z-SbQ_9V?{EmM34=20c2+^}jp?tkQNvkX7f^7Hl#!H(NDp91jGT9hjRmtW6C}>DNU!*P$eDY=PvEx$jF70A-O1x!wZ<>i=}`A$Xa-!JTbtd)rhhrNf;ncvXG;NyF7<}(W1PS*)^U5#8!-U> z1NA;N(2@4U0y}tal_TsXo${z7bXbDq;5&-p#B=^3E@qb_+0l2-C{act*BSQX)e~|P z$<#;G*lsM8YypTSeJxGSFw>ZNA9&R~qtJSsP}JlhX@y*TQD5;fCvrMYg5t_*`a){; z>!Gk(H~pX(@hkKPhBw}b_0BYZ3ep7_KZ+2-U0;49tnFCmS1`$)>KcNdTn#ZdTrgQX zA0y@>@{M@<3F%*te?w|Hpy@tE@m(T&!cjVA`CVRR-5`A5DyX|WKG)vb+D?2XvYB)5 z6DM-C0qhmK(al8^WL#U#2A_Kb5%5l5T=vOzajKVQIzz}a=^~I=ESxs0*cYd8-?bZeAm<;{*n#;F}p%? zPE{2GKJ%gjnjQQb4~zev`Tk8ZC{cfLM*|vNsU?wX>ft#A3}PE6E0LHObCQ)JV58Z{ zBpQRF`eRF|}LYv@sR(L^P;dbUW;Ka%<;G#_`}31-bH+d$g_EaiyG`0vWzmjJzU z4_!?(nrw)X@;er0hg;m+zEe5Z{2wm|c_4Q?k1#HP7(=c=}|puV*p9nljU-S!uX?9E}zvlkQ1fJdHU3&RKYA_k~hNYWNW(+l!?dIC7I?Al0 zEg3Y}c$W%`FU4lF(_zTpmx>7wD11P^6XIi=YW(oD-{Otmwr zelE!n5HlQbpw)yLj9@oLxi4tRlATQ4x123MoTzZp^GM4v=aI9`eL%` zgf0sRE57VdRat+$EX;h)FcLJJ2_0=FM`We@Hm5Lx&INC7bY!$d>xt=%3!o8kp9qq~ z+XBgXW`}4FGCZ7bPTHdK@|c>G=D0Lq@@5V@1+&sLs}~~!y#7)R!=vLqO?MVFQ&*%b z`NsThEW{~98hf?+xRcw<%S)nTw7}11>%mNB8udb>;mkxe)Ow}SDx^y^J`Vn9uy5_Q z=?40kBczClr?iOZ&IX`lNyxf^lUC*c<$^z0#P#eTFw%Bqi;$%*W|z;yOIKF5I?X{v zU?eU+dogoO;G-TU&80VF&FCXP@_5}DCmD0{1U_Y9;VJ|9V^{Fr9l|s@`Mf$Baa{a2 zNH7~^O}?>v_(CkI8#m&YgFg-oMJ~IDA=rM^dz4QVag+{XBhwCzBpB!l`Q{}UEjk4J zBc@B>{eA^|-_j#?)w%p)X;RY{(<0)wciK?f*5xMAQlxV;stC1nZO3`Ls~79{8sJ1?mByM^v%1u{>)jJxjn;dG zUY`~`nNK%mc`h(~qrzgxxPN_V=m}%H^g6(w$78v6bh}rqQb;h9uJSZ(rU<_*tY*#V zfMY-4y!A6KSLEaa+-4+)sWVI_xf~iEtIam*Dip?ID1&zVl6z8_?IwwQmj(0~@Biwl zKRYIANYfQ^p|Wory72iH07(`$2TQMt5fihLshHD3hP5589_T6Gmw4_YTOYfZP9B3L4~~=J!_M=qugf_y6B`}oqNX;M?0xa5eug72nPSeDyjGS zBt%CaH7Er@yP)vUFkh(yW z@4h9V4gJlbFZ`rhz}8#*3y}bhgH->OI}XB2VYYUmy{*WLtBpE$1d;!*mJibb^`jd( zj&@OT-3^7?tf%Bm``tRL2Qcm!vp6W6BypTt5F1KYO2FEr!vj;kZ#8JvuCrr|{o0-f z4CNK%umi%LNOm8;1MJ7Z-V@R#i=A5!Kv#Rx-iidjlj*SZhkHEWE+vAr%Y8P-GKS+23K{^mX)){7?QjU*dT1>ff;>?eJP*e zNAOzA1}yo$s#_JA)MO`)V^=dn7%F+cbwkhcQ4_#Kci;6(EPi<#oU?0Hdg*gIuc|fE zbgT-tEkwHUE_vdz`rh5higoKf@N^^Uj8@}b)5mDI*5OalAx$Q|4Ke8}&p|c+W+Exd zwtnlEmhe$vaWbW`{6jD5l~+Ff{N3rL{-@s0Rm4uWMB$^%(Z%=%lt2anB0vm-2xM_* zxZ;4QP?O3dnp1$|33NCW62tGmltTVglk)`kQp$jy*Y0eo%@vxIRQSJdM6+E;mE(8mbu4ARQ z(Q>NhFEj=8=IuHDB`9i_8@cW#d|8*8R{II{9R6rnQD^+@)6DkxnFGT=4nuzZcJ#eE zfo2T}VPL*|J4eymWi5Dn6h5qYmE0iMr;XX{CZ9+>9Y=X=p37v(`9X_9JEJ)eYaIPi z1o2b`dPC<_?c5q2;NG|Qz*@cuU#rlu&(cR47flPfw9**|$@TGR3k8%c~Ad(wa<^!kg` z;feh}b=*Hs9_LJwOX+~M4I5xH)xR+=ur+i6j?{Dd&k~q|p^J;Dlb!6}KL70u}_ot<6sb2q)bOt%qzvht`jgdL(~*-%%UOAuoW7DYh1Vu%*k zn6ohD#Q#AJkAZ=q3OV$PpkJY!=-SwhYr{56_ITaSJIBxo;AZ=z57ZzQ=~XAd;!x-*UnD0?B7%(qy@)ES-Y zg1YQPy>5Z`(&bya2IKI^5J6h`QJ@gVkhZ z9BVqY6&K-NWSr;3aeFK`{PcU35B%@Iv(u%-dNRNX_5uTmE@D?M5k2xI`gPApj=@ps zAk*ovHl(r6+{JNzPaW>$+vM;PoA7Uayvh{hEkDSdcOeaPFH|&^X=3?3ghsc7LZlgL zES238^QbXpQ=qyq}gCP$W1Mlg}41gXt})Q%8K@(H7RtkNFRw*$~0 z(*q*+_{l^Ceqml}1)c}hUs0vNmf`F5?!7DB!^Kn*Pntxyw zL#~XCYDP17;UgQPlXr8PFmDimaEiNO-~6NwIe08A5AFSD6#l6uoFhWuRRf_16bL{Flg!O_G%cJ_QTgmYpvhUVDDCwMHpXWegG*MXtzSpjH9@Zfjglwt9f)o@)2;rZ?kp)TWF(YhdM#(+h-PA>tH(mE>Ns-OaV7RXuM)o%+8kgDgC^|w4 z`~|k&ahok#)wj|;7%v$^X=J)OyN=K)BG&uRT3I}Ve!P?SLyv1&yw z(^1z}C_tec?wDoZG;J^MDor|Lx6|DDG37<5X0Mn~CyE~ML;u`uUw3Zy$h5+)TB-LZ z`-W48jrL?8R^xX~UULb!RT!|v+hu!dtj#sLwqOZH+bO$MJD#A`JE3j2hmbiniOgCm z8N|0yMsze2QkP9*`O&^>>$cW;m=H>w%8y*~aK3c-V3_N2*I!>ur9Zg+QjXu@XW;K- zsc<)2dHf`OGN%J4*N2LbNIt=Avi z&-(c}yu|mV+y2Qn5{Y!E6(T84B6ydogDe=aMzp9*agpg=xN!4IFf?eUnEqepjKnaL zw@K+lT)wb!RY>xa+#*NHAt%pzmfsxzC7J%S@n1lP<$}toKQCf^Ft=j}np~xvpD_|t)EMOv^n`@HY zMjLJ2+Q9vRhAR3#vk~C3ce8_kCaP~X6RTLpSUQtPSLs zy4co5OXzjh2bp-Gxa;CBOl&cNtsN-awQ4wR4--uc0rA`Cau3;ECYjXYLfONNY1A2}BfQqhoI=x1 z`Z8tt={avu)A2i=ixm(JA7n7{(!@iDWehrPDV|i+V4$JLN5TypQ1VtUGzVvSF8uE%Xh>f%8|x3hNESL5T+A3qfe60^ zITk^o#$*cwWu7oNld@57Nxz7tj(rr38&aW)X=oy$f^%qFaijvjEB;&xykH?V;ib668!2Ri0E>;O$Y6AkC6A<78{(r^!-|yO_KMttaq0?lHM5k6( zuS;r0nAc#P=b`Ml5HOe_*wSdAdU8vK1e)f6v*9&=)nn28ApSlg@}4Hm!a|j+gB)f+ zhWXS)xBKIV9f;466QMKaP5Sh1QD`#`zb5v8P~Z|3jLDje`;lVHl{~Tk(D&0Jh4h> zX;$UjN?$zbc*>E^DS2|A+MD`J7%NK94JbhVz<&l6b+2ppOIo!8*FBHAoC~4)I4snM z4>uIyX<5PUM+IEJY+v4<=C!=}6^^l38Dp~nmhjTw+^{W4cqtiVdLF>&e2NIimGPJ+ zaQP}&EV<&W63w(F5<#8t$d`mqGEHEK%C%TP$48AIjEm2D5K6F<`Z*|22kD7p+Z=-L z#>|j1_`xLDwwiIlN}o%?4Hn31W~Yt363oaSJ^|RVxsHinusTjTUP)~dX_>D zi|I?HF&Q5JGP3*+_}z@;5bOejq7)bu|E8q$k6Z6Q0Pg<=djA4;B}v+Ud?!Xel4af3 zY;3Hpo3(1%)-FV|NP4KEQZPeWYE&@qY}pXksgB7eORBfWumtJ892Ef>m^?*+b`=Q; zF{QIzFX!#F&&&HYbAW0yzQcrke%v^|I{pH~r2&XKXRY(bPW#x-sA2Xfi)x}-`te1i z@NT#e(rXT_qL)Kn!MlKEDzC{^W^buBFQhjea6(0Cr_}hQPw&^{!$P7TpjZ$jXOSWp zei+S7x~WX@E>|ik{Z_C<`*TVzg)(qMVW``=ch#z-ufxJ% zb_g6lEEL6`83}MMVM(n|1j#fdp&6%5pH@FHYvOU2CvKchc;33WojkN7?H@?^I0xg+ zk0Ql;#6BLZ6H>NF{adW2>w}NIc6M>k0K06Ny139UewBIOR$-&CZk`X++Id7n8ggFiMl){*ZGS2pegFuwWshJrUgs9zSm{#(!jTG zB}@51*UU4 z@D;rcrZZ-e*@rE0>~9`AIL%kX`gr?xy!X9=b@a>)<&qG3PabHIz69e&*cW+%}g>@vK$uT@z!hSBd*aXn~&=H28}vaGdPE|D#IR1=WZ7SK}?M|m?) zK(kge*zKqR2&u{HcNTOK3D_d+Xq1-_mX6<)WYf!C5}WtL8RZs?pfYz!Mga}ORAOJl z#(FYKzCdAn2t9X4Pk=Q(CO)~Z(3Z%EB9uxN%}VwrhfM&y{?Y^f2Sk)sX|-X1$=fxs zBq97i-z?%b_D25&L;igFR|rwnR@PQUe|JOWaNyASr9`XHj3FGvYgB+$pa89)j3$LA z1sCC!WCu9LcVeQX%(=RV?gbse(({>#3&F{-B+9uS@-Oz|9s@_V`7UFY*Yef6=2F|b zuI2XhlD`-Hig=FenPD+TPsX~vhBSieK0}ea3HQPxeZIg@PaMq%7t^KLKnhS8r&h8W zMPA~met3vR;J9IZaHvcGL$+w635W`V!X<>Y@Em_E`G(e>?eM+Y@>k77D~s+ltFPvb zth|}&m`(+?EX+}3%A-kvK^M!h6i-vGcB%2NMzbG}XF6%P2#qGDK7nm=_)}fAq;#g+ z9JYrx{$lx*K1&`hvY*kN^P~bFLUNMFhjNW$0ffWXoLps@199+KiujvU!pg; z)f!x=Ajp{N-0I#s{tDqwt>+@!v{Y>x*beFKKU?kaNnD*j8!%#x@2_98H$KZKH2&S# zx`{@}%ibS2!8VV&SI_x#f}^hLXr}P(>BML~O&m2)_T-qV?Z|XLspe+Yoh`QtcBqfM z7+z;Epzq4_Sj~;mol^d5ZlEd;(@cCDMD1I67YcTTh}xa)p$kYUu#%}-NrS5aFcv+J z?3;09N{fzb`nkrbm3{X+^Cm5qSrcwq0R0palF_6dZG_bZdnLqjhZ){-h3Sg3hvBM3 zO9Qm+L){bF1;42$&yQkpD6YHTbTciq-*1*_u^MiJqptW}Q`x*E&%{(iv-6lwRpY)D zF>mkfOio9!(=+!Z%d?#6l1F*YX3WL4)r?d02CjzBr`dzrSryu?@v?Ft_m;={o7b+Q z>K1~ub0qrx$j7~`Vfv*x5jg$TIYPP9!5+Q>uR>xq@(<+cuZqA1lJ;jvgawGgMBxaD zyHA0mC_$&;(4ylO90GfMok`*rT0}HOoVYw8?9`6@y{;YIuf$5FH- zCOuq3)PA&D>{GI&&A$7R^9&W&pvq+XUG(qth6`QPtSw(dUI{|T?@&+RN@a5eHO3Qi zL!%pVaUsnVq?x+BVHkvh@C$G&VSFmG(gK4nr>O3rb6ynaxC-*8zr*-a#Ep}UgYW&D zV0Z+QvNqgHh#-+yCqI2tm~!ZV&?TzIzMxk?-iT;YA8P2Gs8`g#+!@<2DR2bdDQ5-m z$gJzJX`QkmRQv3~@?w%ycb84@)o+S#fc2!!kynrx10WPz*V%m9EtE!Q_Y+b)pjR8C zIUc2S!E-74#e?WM@1Gp@57LaKH{#R*uNr3HRr7BOpZ~aO{!gU&`%MG%Z6Osz=FI`x zf9+MydaOs+J{zFpe?5v;OxU3pf`>~Ch|gIyv%&Eenig^Y_^~4_(2sOglva}qj{>}F zD&?26xm+vDa^E-kL01Nq2yZcOp0WX0aF)(~Eet{S5U_BZv`py!&w?*0;uoPn${ML8 zwCwXAlr@hf(_B1ujS(QnJCh6G&W?!dem`}2t))~w(m}8yD7uXnPn@AnTsI$8D@mFq z7WQhHGa6k8+72?TrcbqSsapeHHm&j*O1yugtlmizB3MZ>8d4kZ2x{u5-(EAh`P6gg zW13aA{C@FTPy5kcmlcU({}9M1tt+V`gY z)EbRW{JBld$hX)FTp7E}Viv}RG@3vLxe_=Ko2kku`MqmzyP3O>@R(%CiFk}d=YnSU$F;H)0Y^~f{^A3IAX`0(o+Gc3(SSJa9Pyoj7NUF5lg5;L$@%xse2LNW!cXvd)=xr! zZ=n6zyVdp?LrDTAhU+VgN~R+}N-<*xLIUa%&?M;gqcc(z87$Ho-3W_eSDl6%rKzTw zUFRL}n=HPneRF|RRBT@Q5jR#IC^_DmO%<5oA^l1^EL#kbvicfEm8jL)p)ysIF{Elt zCoStj+-qktFE*QGEnkt@s_fI}S<7{L+iHtx-XvB*mUz#$hvQHKtq(MUFl8_8%40o~ zu?h`2gJ;KxP6zkG^*O9y%#Z-F|Pv?=-kZhq+Go}KID2^Nlt@SL1~~uSZ@3Y za=MbpZ}N-nti%Z3(Y&J?qWMgnq3j438%sJDTjFee31FZ#t}X%N$nO8+?480ZZMUY; z?v8EScG9tJ8y(wrI<{@w=$JFMZFOvWrx*V9uJ8K(wf5czIY{PFp83?c$6ZyUhN2t} zdy7*=Vkaz?I*c0*h-YO!_%)tq%j>bN+=AU#&ToU7yE?Qs))MhHw%KSUbhIRXkEjL} z5}!l-5oV7vgAb4V_*XMtGkv;lR;yYrz^`_06ddVl_2<^B)hRL-{H1B8j4oDwNsC>? zvxXZ}i_`uZ-+w2`YcO7@+SSOTtZFkqXrNFE0xydm9rr`Zwd-9AL}8bPE(tnT(2(we zX+BRiRy^c)$&oIFU-_%SnXe#Tn;71Mt^%7{Y^=i4)}zuxg3NBfqw^3e7)Quy!rm0^+}q#8zkB>&OPiF?)6lGHbgXq~yUQzLpcbIBt-yh5_XQUx8^+)f$td>lc< zAbfp#zfD&1J{YaTrHZ@gdQWs%$ITz`*7se&QL(R9in!?#SLNyb)ZwH!a_@KX{FjaW zDgm#iK}LarxI)>ys#>XCujIm*i>%9;ozL5Ig67s9< zmU@S?Elh!`HVeYVss}D*5YYz%&_3EdaN!eteR@k(K8`>?bjN)V@m$|2CVwRAYGhV3 zvz2GnN1Mg$l6?OLzmxUaApy$q{y*B}t6-hBtk3qi`}2qTzqiT%R<(qqYGM88k%cb= zfrY`)e0;a`*E5}F*lJqli%Lnr3y|}=e*YQS8c>n;93ACsVLjmf@c{M{g_L1{0a3tn zTP4FtGR36L?;#_xU4gnuMAf{5tu?@!Rh5=nFXoAJ_+$dSWxkMD>LI&T{h5-WGE%>N z8#PtM=%hV)g};QafCz|Fd_^=- zghF>jv3QX8zGjmSGe=RS7Q{n9ZMJ$|g55^`m`d)vEez!O6Wy-OeK5fiN~&8&ZOHJD z;W4@Fk?k?L=Js&GYx8wXPjis`ckmSsV{dcN2}kE397kt2Or!O2bN_i|x5iX$$ZC6Q z--5LF+V-G!mZtH~iXacnb0{G+oW-kTU_fZ9mG4l8`7|o}Fnd+ULdl+$&FDz7nK82} zjoQA|sKb(KJiw42=GyqC@@;lYMe!i6Vv{vH6uKuK*mSM^sq$4>yWgsG@jQmy;()9b> zhLh{Adu1+7mPP6bYv@Y#jvc$r`+ zx1#!#!#V_Rozgim#SURe&*eyyVx+AQrlRU^r8*B1NhfnOKXhVE5Si9##UsBhRzPO{ zXze0JK`)wn;L*0~=#=Bvmo#UbuJsq)43n48UcLcZ*Q_>ge8oK1&FW0b-|FHIXg=Xf z7t;w6;os%Ewh7@K2G@(o;)v{a6QcL69%A&v_l&G(hP5-H{E00bWEMfD7z`dr?-61P z?!z3L$9NMb)B-Q0k9|;(z{VgobjMaHEeA^ULutq@?Dyla;W3?%@zKW@pcixlRtamR zR*gLuApqWu^sg)F?@y%SgGMbp;$5R*7hyXu!dFHqd_>=*5w-MOV%B<4-{4yW2d9cx z4wW9hHxnqIe#Zep*?$ zAva`TpQ33he=vvcSMKNR&EWhIqq{~f9o22h@q}OoBF=cKm47(PwmvW`!6vNYz~o=M zuRq`}(-gt{Ba?l6DklHI!|8Ha#`Ck-vCO$~!?y;Uacw|E7|W z|3f8XpfDqR&TL2in@aXc@T3QcT;>Fijma2$-(*YkbbXGYTI$IM2jvA};Dp`Qb0{Id z42_wkEY@_#a5JBnc>MNG%vHL1E$Y!+Yi)$Fd(dsjsG(SEv>OGIcp9)M+b%kXF#l zRchOIS+i|kWj^+$TQhdMizA>}Q$Zh!?b1+`j(%;q~wQ&fjlc zfwAi{pOYDZlY|W@AP84rcVD}O7Ck!n6(S)NW-$F#4GGeJ6*L&CgLkH(@%)4{`c!Ts zNjFY^r>8P8dEB49?W1(FM_HY&EEx>7tc%=a<*s3drEbNBpuk1I8aVaHnUY@hg)DJ} zm{Q`LGO2ZX?0%a2VA1PXX)Z?i6ZI^X3lE+;s&5GdYp1t z$x1P3ExLjiG(%OiB0v%^ZSThhrTtk*xpQ5WDx|9JR%nHMtljt_O+<3B_&A?4C;i1#k0pW2e{9w0jGU= zKp5A&!ITRzBqIn$x(KTjq_VYHJ6u;HVXUE06tsl#g|d7QIUZO>VKd>$EhGQq=0j_Q zr9J+6u+o3>Y@+}DJNREE%D?~d-#}TYy!shGgZ`08Tr*xr;+qzigFlbz;9E6Ph^9da zoHu7nkvrFDuD!#+o@vB-UWl~uM)kZCLFaYF&nbYBSsFdzIN&4xHgPWVO(MS;GOFsPLH*;cq;Su4K$#GWO82h@7xtU_WhDGZK2nV7LU zF9HN5yhQ9em+M8W#|i|Gs)Ui8ruU}VfMKsJI+85t+ygN8sZUyY(IAi0m$a|jH=jVJ zBfkg=&(>hNk2?g+<44kNd_TtRZ4m^xt$uGIIBT;3mvpU%PJOl81&|8nS^5lPC@AY) zq4;=&b7Bo74U?p3vyMskBG}{MkhT}uVoX$x(rbz=Kk`KpoJ?z2ADr7 zK?*mA>&fr9xot>>&UwvVx;kbIqsdgLRBRaP8a)GhNhU4`(JU7=`BR!Bau^f~8P(npG_W2*+j8FeeQ7ddh-W)}}8p88H{+6>D<0 z5g{?_hRn$G3bv|(q}}Y{*g>*Qo1?)Xam^o*v&|m0;zSj$L3-CdtU&~y@z3Wg2enje zZ-1;gTZ+o2o~=afW1PvH^Ou`qgUQGj7cHEfsmL8%#jkw8xsYRGLmKbY6rLJH`kXnG zPsrBrqW2jvIK`cCeiw2?YXr;}={;W$SXOLmb14Am^@DIHlL*GxqiO}+pZu^(97K2X z%@WxtwpCiBOyM|^)n;+5uyR=Sz-K~@k^O(8PufatI0a?}Fa^NAenxeC! zaJo`ahTUfOA!K4aA&X`opl6+gxI{c!o?lg-VYs{Soj*W!x=OlK9@l}MEkzM zPxCt>W#ZGtv-wjL*agZ}#hqdXiQDts2C-hD!dDP;^sXXY3qRB9C6owlhD_Cq#`p-h zn8A(UPIzwioE1j!O*(#K&D~xgsIUa13U~QN9mEBR06;vV-vQcV5yuxEQCt^Ruzr}j zarw!JOpPBX@g*m)2!T&(V|D0^=d3kEHA}EOuDTC*f_Bg(ctFQHIJ7o*_(+JfHhQBN zJ(lYZdHL3r^or(rCYo3=n@HO$XphzI{&aFvlGia0T{!O0N}^ukaC8oUV!lF&@&s#q zNRnDu58}>h=opX89~H(PWH)os&rB-_S63p0Kt?b7(S_Y#vCXm3`@-Ks_N_r&3%@F^ zB07xu+udKh4S!B+$alNen$L>O|5-KI|Nm8te~P_-W6Xj+Wb|QoODwo5st&ZTz@zG1 zjgSS@_(SxT1AZp|lQHY-)uhk?M)v%IXTE$q41e{-k9B^2UHQk`yteGeIo?;xT@Tz% z>OF?|-ip8m^#f{X-A+DZf?(mGTwVZ@>X`vxjIo#_Sfq%nYXu}-U!?( zdVuuD9lv)A%HJ5XZ@qmUldFBOky2SjVOc$w!;Dq?Y&oP!64G2J_9{dp9u1Jm|n?coH zEWA7Dx|d&p$g~YFV%j46d3%488&cBJOJhdLV9J}P$j2vwB42H~<;W6dFfB;lb6u6%am7OPQ7h*B_@tQfx#EvUkk39(OoB3=dQ~~AS?@}{n zsbcF>XRX!JWRN_vaewRHyn^F2nX`~I?URJ6@U1z>_Y!^1 zg|>6?dHcZ=bJ3-Rie~$WoTEBz4X@=$G60X>-Su#@X-KH+|-c z%Z!bmi~F3#SdLW1c{ACIBJ(=SbU&85Vd`JaK zT5|IhF@?B_S~?S;U53iVb-vAm&-5FO5vy1#7Q>-D&JAFqlQ*P|VBA?SL!z4&G%<7~ zUOkLQC)QoS+kFW42zzJY!>5FLAkd>ebLzWTk{+7ZUXNKohgd{RX4qc!?ks;qiNp(y zk_Q}!o-0t)8%WMiAo==W7a61XV@Rq5o`&3zU1=!amOw*JES0`|5nTL5!1zUgXLJ*D z=_7RL9VD-GiGAl3Hc$yLs!Vs-#jtU5{lgLR0R7QVjM5Dx$ByT)10>nQ$*AS+-QFR0 z;*kGRq=c!(*5o#a$p)g{Es`m}lgTZV;`J|d%b(g;_k%#J_Os?8eAd7JkoErWFTIkz zp0$Iqjs55SkAYkF%JX{JgQ^*vls6`Sbn|)a5XjC~sl$YJm!WTzsGKn~_Ho^@bkZ}t>;)ze@0>HT5N>nHga_&@u` zEch>9r2p?H!GC=ke?pM|JeGg!Ab+W>x?qW7d_>Zg|7tJAVR6o56OUIBceJbMqp&h4 z&J#~VZgP&(Anl37QX94KP&6y7AYKHOpn#b|h1^#$9sQ*RP0TkFz6Mmh9~$rQ$m+Tm zy2yj<%|taCMf0%qH7d%u^XYfn`|os{`wP6cC!jB2SJvoYx`ER`<$-gC;EMKHu)PB$ zEe}fQZpZ*zxdbJOh%dCG+N#$h_9a7wm}U0t`MYMN?BxbRgBekilILi9m%_t7qycn+ zwKz#pCi|~OIFrLqRCX911SV*ha9}(EZ z+poy4)>2`7_2K%Qma)xa(}QS$S&4FL)j)4rLvY}dl`*VIVY)exT1-0OV3JF1Jj$^e z`b8F0?pAKC(v5D5J<1)+I%*XD4ai^Eh0-cX>b&SIwZ)O*M`m57{R#t=N~$FlH#67e zWrzjG{&3#t)L9-8%z%oTaW{WrN_YR`bA-g%dtzQoo<$*4Kg4 z(pxAQxY+VIM8Ws1z@NzI)!jXj&juRCr3u+cu1_Cn3j@25Qfm81qAglL<{q%A{43H!M;ztm+3$`tJ42Fayt6=^<5U?1ZuhU1c#C2 zR%_bH!_Xcy_CN>dj4rX};+MH@g4>`=FCgCTa!`>gA#h&iOQLpEzzOI^%oyG-8K`$y zHpXL%*1G_#&B%7L{UeGFiLEeD^bP|e7b<^w*MJT5*lrW(#EzZs#BVU+ml+@z-q#g zIAlY$BNl-3Tl8!6^KY8_$%r3y_U*Hx)-Qb^h$q$xQrRHhB8|~BS4D;G$K6;>1PN5A z5@oKi6<%~IR5Qkt1DH6Q^mJmgwWE~s9CXzBF0L&%NV7%hzi3ry$V^xu^p5Tq??#W! z_C00<;Ie+4$MQ&*aGhVdpCs_XjGiwaBT%yGU{~Q*r@48|G?L0psA%1&1%gMYQq4U6 ze!RvH8bj1>;#imkl4%jBcf8v1na5o;O_`at;v&P;Y}$vvICo-c6^Wmt5{?!`0^S^B zx{2B+ZO>DIb6NT&;g+;j>zQ>y=~2_Ke-Y-hrVc`Cg)wJL*QzJmrOU3w)xt65u5?m5 zM1uCP`P-`3+ME0SvVMNBTKKz|a4nMkf_SaXHOwQhDn`{Kehzobmmk+OkG!sUzAgyu zxyb%#cTix*zn)b7L<(i z(!TPrF!jp3VQGOBqsS-tWhPHK6+`$CmA*ur${(94Dj=^=S()oRn5S`xx|^0@ZX;%; zlQ4s+;A;`d%w)RTjJ8^X$Iw>`Cw{GP`n--#oS+VPBqpdpY(D_syaC>Y@uQC>vb+>U zVQ%ZVJ(&`t^p~YUE}N z2kqwLUDTXnB4oxbB9J8nC*xwk48(S%ms*WVJFj5GZ5S(Oy7b+Es~sW%!qBH z#IjAay+F~PVD6x4YupDfWv@R1C$|MtxH9Z=3CLFTLMu}c-%?QFb|{?c3{1Cap3^zh zrL*RChT|~rWs(wH>f%PqI1=W-JHTRc`W?z(dG}niqs~;BODDye~FpgTRqy81hww%(rQdnbRiuovJMV5 zzC!{*Aw~~E%lcHfQ$7Wh|FHY^zn#^8Z{B~Ytp5oY{#cJO6kKYA zCl9eYThWIKs8gy;gyV;#5s6p&%3s!KU6)+byd3%BTbQ5EbZ3G6vSskY^R7Rb!+_sV z#Ou0;cS!VZZ5)hwOAI}8Y>nH){`}%~VvyUz=i{b0`zv%$^e!?faXY#wIMO&<=rF2Q zPeM!)iB{yc1~#HGaXYdoHpSJ!D2*$KS*;JCnoi=S1~!CLA3ar;gMMoC_8mH^ zz8bQPOvP*}!?t@qv|eT#t{|foCx|kYnPC;C#fkawEmY8cS(3^gZD~tds-#x%9d zvUAvk+h5ElvOM6LMimUv=xvZNh zGBvZdE5QQ0_{-Q=U9Ml#2ud=S@XX}s6YX$2pwBof$Z$k8(YVQXsoja!;;vwa&M7hs z*pQY|)0E{Di-w`n*pHB33E8{cIVUB*rR5Gbjyd%=HWMP2qgUmn7QOK-CL+2dKACJMASac}ok`+Cg>GCrwpMj+cvwy5nZW*$@ofa3t5hqLEcC~5E+AKMo6TRKn z0=vDRZ+@Q?`y@2|2mCLhRNvDrDRd}0ybTZseul=4jiZkfT%&hne=m}7w(?rr?; zY={~fLW_dIeeg~Xic&#P{rG8X4;2fKdSYjt z4|4KV#$>tCkEo!&FM9g34m69M1}LKui1_rzT8T-9E|I4B9Le$sIf8NV-~NO<47(v% zxkT{wX&)6=9T!)P0p8vt%&KC0^3M=Dax=lYB54dwirDG`NhR>mgAzqQ-$jKG#qjR0 zjlJY^VQcYScuB#4ZxFM_3biESPqmPBwA^xaaRtf@rH$+R5b%!JD}Zn9-$aP}e)$;9 zHjU$UdG=$I7;kQeE!bG&V&)kl@lug;&ZO_wAz~Yf?GcfuGY@$KN*{}C!2o@L$u%j= z9ami|?@h14f0tdWsD!-eQ|-FsTAq&d7rCSt8N%x&KchR)#UFyGHGQrcAi*^4+)%!i z1EC2(^K;6;l-}bBnC(Lik&l(#f!^`?%a!eqy-UBIpNRT%PZK}Ze@r?2SK*WSWGoc_ zFcyDRkH^*AJds^cK4iq|4P79|zkj7B?@*76DJ%#e$|b48&xL4M29c(p89pb5o|vF! zsyCZ0s}w~kyF=~IH&PTv(;tc(Cd?+xB`rDZY4fz8@nUqn(NlXnz{Nc!;|2 z=z8$D`3zz13dRMkLH)QhppxQMU>obZ?hV=%#YFnL=BN2~X)qIgVuy9Je%>4I`nz9B z2e1dL(-tpEXLMcnMJGzNW>4GO((qmNdaOJJThBgWcwI_oe2>MOc^4N?=VTDFJ<6#g zOVmd9T7=X_|Js<;M$bNCSTnUfa@da4#^f57^uq9(mh^$qjWzy(-mMxhvpIUcYcd)) z=*~Nf9k53p-F}>sb~BF9v}UD$$-a0o0}`j#C*U30VPoWAYQU* zOsWJC{=y=-o+%SmrXqzgZ$`RgGl1fit#9^vF0;T1#-a&m^`6CqqoN@3mV>cCir-Gi z!d-;sv?LdwFEV3kPZyELJyW_%Fn5wvJ4~4tUzLwXlnEF?>64a(AsZLcQ0;}7kJ8i_ zVW_kfk}eeyVA+X}eKl-i-PND#c(#NVFOeiBzRf6v^(S1=fiZ=Mj4DLGPcf6P!S!tQ zLm6EzIK$)_?G}#;fMHol+QO?JGo)27(1UnzkL>xG!ah07I0|lM|GDYU;Ou&klGC)b zu~fEXyXTZCHW6Eij9HT@(qU^216nSzCN3$!!UBos+-cRFMifhNN2c=V*y-TfxdfZy zTn(^tTzC?nl*Hy=kOZDAQb5Na_b~ZumSWZ(092Mwj4V2w8kW+8-daiw+JD^w6U`cb z+dsr8kz&+I$#N%7!e8n*+0M?-FiMeQni*|L{)_LI$Z(gqX{Crgf1Ki$)VZM|A2{~i zm`4^i9bhKz18`b9fFf9r63nOs5G(nJVayG1>PLqY#gSwhun=XEL;{I)v~!Tx8^&Xq zRnc0{wJV<1THtf6`5B?ZwHhot)QsmPCG&jwh1Y{VsfjV5!d*d-BV}48aw6+L}eqK?)j1gvK8cg2$Uy6ouLP@P6!P z91jb|k3lnxP2Fp0(oH~**o zds}xvDAdlJ@`MHFv&ZjH3QHdc22?M#jMwYA*??os^_mG6rwdBj@lX8LXVrv?VQI3C zt*mMh+(K>Hc^w{(%?uZpKDR}kV}aaXu6|EqU%Px>e=xg;o!x=)bW|zw=y9brH1D8M z+CHS;EIKGRN5LGnd^A~Xb-FQ;*&nc<({zz1R`id>-|k@GF0-(krV~OA{!oIq=e;u% zo$cisT$Rc2bUakVEn9-17qny)hK6BY@h*?YIsN5G*~N|^=mhWpdkOVouUr=r6~LOE z1GdwYs1_^}nT?VtE+_>C{ESO`kztAU+1F7r4dj~Ki%IU;p@u-tY+<)k*5a(qLXw_#I~*>HJtXp|_89LN zZUikfDwc4jE>7VSS0T#qm%3yJ&X_EYkg(=9H^f3u>yPvl<>J!o~0igj+pG8^6UGh-HGleywp zPVApV^C;yQxw#B+dC9mN_=(@%ik8{O*w19Pim31kxyZo z5!1swBe&ep5r+tA>k8F~rWQgkVcO7Tr?74YS0KNvY7|ckd2#wVp$|o^GBqy+E_2Pv zIM6ss71at&75dR4-D3FZ5b8mWjxyMgXm)_dtQ#?pYPN^X)G}o1-VyORHM-MFau4#y19m~+B!(Y(CVKoXHx5*lmjh) z68~6z6ql*mHW3BgzW?S5%QECiw6FD3m!>$N#Sgzxo{f_tXT4#2m3)m=t~(!j>Frk0 z)*P5s5J4ugS%#)qkXgb(y?CceQIuS0Y;#^Ej>2L%*CK$`f=TV5b%nhTX>sPl{rM~n z5OghvhriB>v?9+OADAdMm5NOzFfYth#y7v8XI?~%+1ng`oD*)&o2e~xo7jKE;2$Yi z*(0sEM6E#VfA04rEbvC4a4o=?P0c|?73dx!zhFqjyfcQm!tXJn)q`YnnwhuG*;wuiSn9F8rYoQJKG zJ^w>|9SJh;(|p3nzFfb&UjK4Nvgz&l42>UD2+B-Qkc*)Qg8vc{gh)CQ@7v!X~T-T*ZL6VIXI0Nqu4}4iQxr4GL>borU$f&rEU| zgQ?4yL*RT=N|(4E_p8(PVLdW+0Uwgk>hBNxPEE=H98;6-F1S{KL@p zSmLOo<)~M8LscYe#!(tsSCXI=UDHf8D(C6pOE&^-YaTmt%JDA$5XA-x(JcN_PaQu=4Az zr1DVQR&`{rP3`7KW};wcoS~Q^FzY{2quRlseE7ySSLSoV7dYa+K2J-RpU+~_?lA5J zRSQQqG zj$09wj23tuSS&e_zkl%djy%m~Llh>eUDx-7vbn==0{y&2u*L^2kTIR6;<%MO`P^hcZ~Xmb@RYCD=x;-o8C2r z!5b)}xU2^WAV^Cox+^{T2DhQS3%+M3&P$NmmEwL)?pwNCZI5AiegZ+W>A zJ5pA%vXhRon=faB#gkul)XD_80hpNZ)9}Kw@Esu_dib>b*_1$yXk z`<0@UB1*(c5sbj?G~3So814#<^=2uY#>U}T`c0;%dywe>dzjHNhvcC(v20z4pw`5^ zeJeXzL$QI9ngG@T-2h4iL>&XUqEl)UQz?k>VyGvW^NKVq_B`g|(}+|}CLDqXl03ph zqc8qh4WA6izSQErP^j{ywQ85rKM>~@6v=HqW;-ieCk%0y@*kQrODxX(LY^Sk0!aJoXix-V)p%<1OP)QzyY3!j#%@CMU zN1-;#3IymOEPdE0uoK>*EyyDN3)VcJIKZVT~ zNbKh})STl5fq8y#36^}6jk!n3iJZcV>8V@@u4g1)uzk(Pjm7PjQY^Y3@L-M{3m83r zv}_)h;%#*50J!ok8;T>MgBXHVUwifC7m9i58&d1oVY{89KC8GX0nqgx?ajl&ICjL7 zJVlWk+$(IX@23~O&x-MmL99M*WL^WDcO-Vo%@@7!RnI&Ijyusm{sp%`)FRK->Y)55 z+^j!u+5aJ6>3=!l{sFdsY!KjRj7nrg*1JBY8bQ|udxX`u^|LWRY!c%`Qjk~=(-vKc z8uGdJ7eUJ-e*fZ=aJ9Bt%dZ;gfagAOc65_*!1HkW{(AQY_LF%*Kg1x58jUR_&fS%mlF?%<_sW4DH**9_w}B{(R-y%(1<<6-7O@ zE~RE|cvx$(If*vIJzN5Jy#_P2Xzg6x`ILqBFpkO1H$vz6IUN0w^RkyR1t%EAVazDW zPfZ>C@Q$*`93`>c0!t;O+JOABW?ll~W|093m3hZrofy07_51Fb*XOn2+ z!-ArQaUsCT%gzG@O;S*Cbhno+hBhKx1!yZAiwy4}FcQNz!E=l0BO)6A|ZF#XVd zIO?W?wxETAY`t3vk6Yqa2Y#lLUZQ;}WzAVtXy>S_0Tb2~Pz)gSgy~>!jQnOk|0ShH z!`0)j@uDB~J{LUSiN5UZF^$fgMU-+xoztIJL=ZqXiLy``0QbsQj0|lTMgUJhiM?_9 zM(AYZcX>E8>R4YKr>!>TI<8&Kii-5|`%rK0xu5Rw(#}>oC7tsj_)7s95g0Q@H$dSI zyWtL_;)=SS65bpVAG*b=2)EJ>%Ssi)PRDWxxbDKoVhWT-VFGJ}V=09!Oo_Wi>?^=% zXS1)9xRb)?9>B+H3BV1A0h~rq#c=UG`kDdz5X}-!)kg*b!AoeR)!@?J{@4Kbc*UJx zTo5$2Spg4LnZZVjB~aQ4=%RHKC6_Gl1Ow-?FqE-fTD$~gGcioQN;vIm$wWn@7Kisx zZh|RIWC0;C1cWYWELnX@KVxLNVk-FvW_`D4dDWnRH@EP4)gBLl(13c(#v0Vy{|DU4s0{o5iK^(1FHZCWa{YBfGxG{ZJ@JYsl41aUDHDP8|7yCob6@uu|# z?Su~rB$!ar=imOHFqJww*Qda|GnyE4{M-aHaWwXTm)-fLWJey>joL6)P+XYZzaJa4 zhIkQQUp98vuXwvE| z`^ndop<+R6lG!z#H7ZaqGYiA2%|Ii{MvODNG4M*?#-#k*Zjjf$12q}f14lE)iqy94 z`$+4)S`TP1U#TY_{p1>H5A-6n=&7?tFrfTKkh9MLYmH|si)3-yn1ij+Gw3*5-np$l zBu6()_eFulqVU>hPH}6z$nl1#>28KMeVB9)qH5zrE^F+>deJ?k(@OiD!aykN@*wDS zspV>B-heSxBB*T}M(*vLy6M8XJ!q*BF!3?d7REd+*9QaBi>{Y))ONnqNZ-vv#-MJUm^#c`i{&LO~i{7byaGjp}^MTGgT@zODRt?()$NZyQVaTfUe0$GsUbV^RQ z79f#fn+i@P zq(-uuXaO!t1bCT30%x)V42A~G&P707fo3LAAVVY^0qq0U$qLjvfb(wo5-zQW`szdR zm)VBg35Wa*V=S@vD9pZBf1M_bX^~_4K>F89{l|zSv?enF_ZwPIdlGx z8|R;cL5WedpW*({K|Ww&kkl3J{A$OvQm0~Ke1%D+tFg^TxqGndB(bh6ptw13%6EPV zAWo%dtJ$~99}kmvpj#lbz`MXmfM(~BN7)lf0K>Y5Y7IyEsiayH+C&9XmE}f)-lUsL z_C~?Hj%NL^YWN3aK{llwJ%i&o}p`$Wg;eNrJJ5GDJMukz85Q^QQt0VKp94 z&SdG_NRwHr*JP;_CywM1>hHh) z{k;CA4&kab@AMvRjK@ur#N9YpR};~L8h6UjNE8tPavfyUuDK=rlN*;?94J39HMYhq zjk!_{^BYY;!`C!EGyfIP67ef^!QBFB^El+RK<06Ql_^p)fnk9aVyk$8cZbc{2xeT2 z)$ZWCjgE&*kNcNwhv3Ps_c4esl19W4Y*}zyf%GGnp5S1Y(a(L-1FV;j52cik~0D6kd}h9&K>mq*7nC z@Vcf3KY*{gp5J+mULN+E!5GI8 zb7QZXnSch*LZqj^I&*NR{O&X#oZGf!L|M%kGkmJ7=+d-(T0Uy*_e?2B_94%jSYoa> zqMXO}Q@h$YGgfEUO2QU1UIkA6o`Dq}UWMSg2ez&#%@60*n9L|RQ@|)sPp69*T)tQ&w*Y>Gi4{i^ z=MiZFtKO8YyK3p#=q~H2|Ou7Mool9_5 z4*?GeMT&D+HSn+tIfkSgkL4yawyaakBfK7q(F46aux~>=qn{jCx^$b96{g$odB>&z zM34?DP|*4lvYK?Hi*p?x@=@)C!Xz?};8{CXJOD&}4a09?*p*fU3VnFy5`Vvl0+jEk#Ax%5q`JV)%Y-Ns-SB)aXtagQ(Yi zN*|#~#Of?S5{0vf)4iu4wg~cYmtui1hBc{k_5t%(VPEdj8bYR#qLZHnt~5ElLxkyX z@S8g81zWsgMhF<73LM7MCep(xm!{0BAv5YfH!R~skac0IRLN90m{5X%SsQU^>K3K5 z%6(bLDE+4Bq*}Cd%Q3bxNf=*zJP&A-65oiK!!_+WYD*?Lwt-^ZX2sa|yI7q)del3^ zr&$Y02;_$bF-#>HH3F$0nKE*FH;7kc#J{L30LkAYOI8!}V{3b+QP0m%(KrNi`(Z9# zUQxHlsBV=D1_71be?Yw!wo1Jg#d&AP`ZW#N%D!cS$8>x45gP75-#PO$MFd4jdc`O* zaPZQVZ$YC@hT;Pq4|R;%OCcm?_$$Dxu1&|cVk7RZ&Ud@)0z)c&I1x1~2eeLJMeULN z{Fj>AcXj(j%SOX+%fj2Ia;MhuxU)LJMQ3vw@du4MNe+k{>;bU2ral}l=VA<|Uwh^) zA}t%kHwxer1Fl8UTjs;o%SbUDsOkQ+l2!etd{y;(?ne!VUD&#ARNsf=nz5B8*DP|; zyv7=vv~q#L#Q<^EwJa)qkTzcSIa%+pvrfR(?pCYhZND}E3|!Ja4GUlaWw)iB;*!?g zRzew7FkvBgporD^1~zkYg@;1za9x$&=S_xuu!p8oaRgDiMEquv;j5T58B@frO{8}F zhF@y;NEy@{IPftf>mH@}flH0m8Fyt?hd^lyh3dnnxO~h>k19-} z=E+jkH+d7dEmvN>;t5;MwqTt7hSeS zCQE|jxy9Q&G*|8x)qiMxuRR%(G9G9!T{4toVM>sQ+s{*Q35(ONO!oIKhM_EYDVR}A z(>&soJZWJi@zYQwkUZ|LJ6K$B`dRcnxz6gil{a)vyl6I7R?>LQ+hP?wJ-I+fYb?xQ6?8#MaM9J$-aJd2^lQB>D|G~J2|`ed*c@+ zfZ1+jV4(vyA7OEFb;{f?B&VH~F%PC;O-mqtXi0od)3k5=y#;N{&4UsZ5J?%@&A|IW z_v1LfgW2C8@-8A^HATh0SqkmXHI%OHt3XCNIj|m%}cDRkd#!Q&Vk}B&N!1J*6_@r$bI-`%l4Ip7|PwSIUA?7 zQ*PLlLUwCK~rQ&{VyfMFgIUX+9ihFWP9%H@It+UWn1(0m( zCp#uP4qxat^!+~G8TTS#y#Z`lZwQ&sS1Z6&T94^zD8jPz!%ErN@KUC*f`n7vpem=0 zDTZ4Q;yiI(r)AD!rKc%Z$Ah~LZr$zCcXV@EqOS`r7Q*bhn@DC|ea67(RpdX+CNL81 zOtgb%+qs2&vbQf7{Sl(B64u`%uy6oeyK-4}Lq-+(a9gyLIfUoV!VwAq*%!;wlRYnn ziqgcvsg<1rCDkpo0-^Pgh$eA}Qg-9Ycu1vwrOe?7Do0kZ(e1a(Zb$VuGbU{_PPZP| zZo|3QUC|y9vF%k-dbbt&`8I{qP11S|b?GaIa2$jqI@@F4_RdAdZwyk-%&vqzrO9w( z--|+Q)TNa&x1yhAUGWA&OE&8(jH9Z6k8%0pi%HNSM1aU}`L!LG;UQ>8bDdu^d)KCO zB08?F(M6yfgHs)xg7(-Zs01y@F*&Xf99=a4vGl>wy2^bXytCw(VF8JfHwWas;J2$%qYGTBtWO)^g!pU0h|4$E z1lG6c?OwKtr_JrjOXZpNfUfR`%VgKcAKrn3#6JfML1l;f*$8P|6&CC|Lr+%il$;63 zh}y%uuqKDBTvg5iWKvZKOjCY0!)H9lcjS{Nc#Qp{Ztzt(w=XH_L;-zp^7Zfp*W9$) z(9w#;9Y!Vhodg?%2iuj7KIG3N}i~$-0UK3k6~t9s$lQnA0QB_l!dLMeaPBRu4v7n3~n} ztvI0eOjGy)zu(9Xf03%y*drG7$Z~jN!tZl?Ky42#yzudb;_uvhgl_5$q2CBAeMU5{ z+;I6(nZ95)?j17$|4PVsDH&^3?BC~8i;ZWv@^i8t5}wQj@MOEE@B4T`aeYIM6FNBb zc}yz0XBF_9UdbQk&SO4iG>2huJ~)_kp&TJj-YsCI-<5w|lFrgQ7;B$#fxw>vzBlxn zLsB@mycO#bk*4)Uyk_FSZOfh z*wM`bzt&>UQH5=#xXbrqjdUDoYzyIRX;?ZZ7%Qpai$Bs|EK5Lp6#WRvU0xOdjG(vs zo*miEJw~cFV)861*l(+b>4fZyV}#15k9k9#e@W3@wIYOR!W}s@b$LhqSUIzgdCT%d zTZd+AZIB1(BP9`Bl!yT5nB<}Vo}Zf~LtUjvS*2869cc#s_)U!1l?M1r*9>zT22qY} z-Z?%qpAE?l2SGDLn$fJ6uwTV{mIUN-#``MnHs6Wms-0VBCKN)!U+(2T@fw2g#<NacFLXpIFF0?^)&}@`mP(WSUEmi&+m!zCXAn zO%0UAw%pW~6O^_?mL;*GIi!PJoX%b)HqnG{R6XcWHpwb5y>@bt z(|)YSZvW}fb_1mIV%K8#iW+ZpZ8w~WzBkMYsTL|?<@o;g zH0hQM%A&c0&b3gswF7_7Zld;z=ETLx$vM{Yj?dVCNuSW(HNNOXR@sWy(<_nIwwPWJ zJ-otmn2110k0EVdH2eLHI{i!F)IMwoi}Bsrfc)-k2>pvx%0IZ1Z(Y37cVm$^2?R|z z1ViyQC};&BFqY_d5c+`RyEO8iC;Rr_~ z2ccSrp5bmtoOQi9>^hS7`r9!l&xs6phdinco*C%Bp|#aoFB+67C0AM}0_DBa`l0JI z90$8@prulq%dC=_4(JqY@ECk#@PafObrH3sTMx{g@I6vCYG2`} zd~6Jb;diDWI-Zg~>S~0IJy|f|*cT!rkAL}@!SJeHjS{US^F758cKp;tFs0>PX-%kS z7%)f)(c7X*>KAZoGP`nUHL0@@m4nzLq3lA)M25;!)v8st!{qyu)X*(BVZ^&?s+hvp zK7q#k6)hXta4a2VFrkOmqpk@0gVRdP{S{$qG%Qgx%%!ub94&=%N`?D_B8j@sN-=Z1 z%gJF%HnVydVFWTPE8M$+Vr27oEwk|pLl`rItuUF(L?5kclgou?hZc0au}6?*(aU1L z4$QrVLHcR2EXLlHl1IuH!DP-hAI7b}#0)o~Q}d%JCX9z=eTDVqY`I0{;*Nxu+tX6+ z7V_91SwpqTrAtpXHJk7zgT2|P*1@;j>mIkiiEvEqH)uq}a zj8%;s=-DHVc<4ZNjxf7K{cR|#VGJ>d^KCKIuH(qAW(#b9U_Dw zl4Qf~v)!q0fYFB7yxWe|sHc7bEIJEzv$8u}b|A-)B#csMgivD|aYg(R*s&;YPohTt z|H+ips)l4C;+xq8{1z;5{XgUGzost#8E;AxazKnI-J&KS`1w1;x8MfGx^2d$g=8cM zFy+v0u18#{y-lYs39q2&pCSIc{oj!mlY@y110P%v{rjP*^?B2IX5@H-8z8&C0Mrzk z3M49#5}$sy6*WzZ0!V(TRDsSkaV=irm7>@Qp>6Zt@VAsi}Xi>+b2lO2c2f;%(aDXm1clQ_ZHt(XF^Lt(@d z#EKUvHTsP#xwJ^CIh6s6VWy-Mzo^Nw!v?QOfjQjLt(L{#poQ{*N%@3b|H|k7VkhF= zY!>!df1HN92%qmqMTesmQ}(`P3etPF$R#4j`-auMGh{N^UeonEMuh{4FxChcqlJ|X zvG!ST%ux&qDK;*{vW>uo(N!~!+MstJf zzYS>o)iK7zU0pf-wnlh^`~S(S|Mma-y>!I#o16Ch=l`s(t^K{-OP3rStRI7h2z5wm zsfAEySmB%&1ym#piwRFOkk^Sb1eoVHgVV-2Gr-bzEqrG~R3*qE*bvyH5tvbjph$q6T^Wc;b2ubMMb*k!qx zmN5sSrN4%Kpdhob1gzxNtXR~mmm{Wr<^t|bZDq}QWD`Y8Sl&l%tkA`FM6zVnUFR|M0r&Hgk&>i&9C7vr zw@p%Gi#R7g9?b2C=LzZ%iLBJp1JM_$(m~5mg2B$^rw?Wq`xyFxR8ot=Nd!GSpum}O zPTnFe7r!-AE+*kd%bJ~&QbXyVBndNEtW&ZuM$t$Vx=x0xrAreUImu!aTLb%Pm=kb{830|CY!z0A)J2x%KcS7ezDm4 zX}4g%O*q;z_L6VWew%T0joA_H<91Q+@?u`^17qUv5n~2(P!@s9GqXguIaU5prNDQI z0FP2u?n30TOt-D=x0Qx!ZLeJ~ohAIi;S7K#|)V_@dBhj&Jk3^6y^|B z@ND=S@!ak@uh`UTy#j9Fr!dHgMProQm& zvOahEnvYz2`bY4*vt!D8P9?0wD-~d9qOfqc*F7nGElsc~jkYvR1-o~8tA%TT_{knC1B^SJ0rkL&MM<=kwhr~{3rbGjB>=oXN#!CG*OLLNJNo1SR#v951v;FU3XmOZ4Ki<>Px zje$CX^kOC?kc40%f0ju$`3ka2Djk%TFP%rE5X=YyI?>QdetqIc;nlT4#SfOyV`2toAw?!RX6(fF0uHuSJmM9ACQepW>VR$)Zri`{d8=pNY z!N|wxDrN~NT&~I!1!+tD>R-M_R1~b7@NgSOqMKy5m#zz_Rw4UNsRg#0D7S<31KTE|Zg6Me`7CNT z__HYcPT+~~>H!QC-mNbr-q+u{;C~@Qf$K1q?0f2E^cxv`|IZTAmWf`()XdP;#zo=V zZqwAk)Xv1z&e&7d+~wcP$bUl#Z`Mm<*aO-)se;8kS|&$8J5Krgzn|Yb+z#EkY4WT_K%6Y3 zHd4!XUU5(!iHj?ZLkqqV6U6Fq!l=wKwzkN~J?u1Nj|{oyGo;W~B!Z*m{(<_IAYKpQ z1IF4CoWM+T58sl;waE#Qy|~XfFs?x=8)EJzlARFtr1CZGX$3u|QUX7ktO# zP+Sss^Lp+wdpyTob?wNhVW6!y6BW`WpD5)-GJ3TyhtOV%s`Z4(K6En()4ho5XA`D| zazBc*$^QIOkm5DAVeoTA_=`x*o1C4;FU`L658v(4jqa#up*^g}H#d1GX)&6^zcL~o} zqpcSxvnFv0j8-uUtX6S_m`tW1tHnjcrkRX>tXlAX_EFAv&9q{mA9a0W!r2`H0?>vRWZ9q|DPcy0PNMsW}ecDTb;^*~uf-(M`jg;|wFF-;6S6^HTT`yXA52*YjwiR;Q}<$!E9hjV8vg z{lz-SWi|AQ^WF7JZg&SOttg|EPEMVRuU-3?biRu^AcWfySyQRt+D(p;;E2egJw1D0 zu`uEO*Ze)z5=V@{0|2_QVKCenK&s;1ao)CGIR>qXkA3UltM7li`~4f|axIHN{~fq) z-+?Rq{}Z_1ukAnI5QJPUZA?s^{#`&(qdfIjj{jtnG#&xbf@zvfEfpa2pQY6qh$m1* zR9YuOeVpAG{#~m5DsSDXBo7fHK%f^uzB36*0>=XYABurpB}gDAnCfo!E9Z}ynfcLs zeBCxcb)fc7hqb}P$gogT9Y)8cK~`jHvRdpm!+gv9DTVGTpp;E>iq`c`m=wPgsj$;P zr~|b#_!2*|Fg(I10+*0h>Zb80Pz^~ql}UiGwlEyb+|4r}gNE@e!mzh7Abd&!riRHzW;g|vzNBOo_4qtB5GmcuARo)bH@3P& zu|(vp5N2l0AZJcKwqj-Y7cz;&zFLu`F^6c8dSPCrR3~$>VldosTK zg4R^uar#)SGjR5hr%90uVB^r?3dMr>Le~pmqi&~38h=sZ7-b@U{cLj;sLE79t?eq= zSbZKTMpKUfDE-(B_2e!rmPa(%Z$*o1=dX!hJ}95ews7e8>B|m~_k$|^Lep&#&Lp<; zR_!H{kgc;7nf!ml<6n2x;lAI@0^fMd`yasLKh*^_${TWv0vMlWnr`8)s5&zdK|vRQ zrZDV!)lx2y1`QFAVbE7$ZW>`tIcDpLH%P=j{dM^Nc$+z}3)pH)r#g<9cX?tNXSgd z)3r!mUjiX|^9zC`LYBm)p}z=nG5n|6BFj=$4m5Cwhxufhj;XjCXG>v<&uhmR76t2! zgK+nBEI(w=FsefGen31&h|*NxW_a8tLaFXl_Hv$xTiBO~qUod+IK$Y$pyJkq*Rusa zV638XvdI|XHdilv%6$GBedTSZuPWao0cICRK^=J^{Ig-fI+0$rM`p*E4N zaD#&}eA@CLujIBRT`ki&u3+!-erPk8TC4J|FYm>;4vZqf%`QYOzEJpwdRDrK^c=-9 zh{P5$Ok2N~&vc~df!1`|9Alyv6QIly?UXNP;PvA;9-|OkBZp(~LZ?On`z^+ZD%@Ff z+%)3=TxMp;18$cy$?rUKf zzk>dmcvTSs2=hp;NFqy)AV~!2xw=$3BTCc7JGRtE7$00+R~RzVPcnaV!{%Q)0DEa3 zsFMtZOnm)?M>iyo;=x*1x1odww9YLS_w6=N~_@T=1+lMp5Z3g z2r%N~tC_vNS4FUCShJyqEut-NNr8s{HV;+@3=Hxj4RExn`kzUN_i~u~nk#~wnneZi z<}WcD{ibk<1Tnj0vbZSG{qM9%CEcm~SK1`O(EI>;qGXSs`%atc7&Gw4;0{>kh9jpq z)97jX`7-!FnI4fAq+^weJ}^U^5u=yrc8u`0q38^QR;AJ>HOm~rOoE%{K8mHsT7PP|`u}Y| z++P(?v!49&U%Q<#{|AuC^6$vhwqIaC`P_7qRU6ls@YQMQGq_A(5b8>a&R;@M8c7Ia z``)qVwCpLBJt|3d$xi6#2^b0f?db;Pn5~Ku=s{I)^zQTYIz4s#Z-+RKKr0};G+*s& z+wWf3&4>C6!=Zu7@C~5Hk@b_03W4T@E!6VIqy&&@*ye&2Q68dqwOAst^#Kxvx!Q*H zG31}A_-8TzKvU|&376tj6A?em2L|Ixq*NUwl<@OLS*V8BO_)^Kh^hC(?_`neNevO_ z0vdYHSmZCFg~SQhn#Fma1VVRHrIc-l{|w?V98XN=6$=_k4wFX0_}7mD;+7MQgC{3K zj)9OXLwEb4n~=hQzI_GC<`*q#Hz2395y)CUG=JR|{LQa4QW@#VqJu>_ zp}B-cw!-Mj)`54$;)s3@bYDO2)DQ#7lR;Sl6g^!UlZ-iWIfn?^9v;_wL{nYMRx4w& z_O%^)%xtc15V_s^Fj#-?XqY11+UsS`0c%d)`k~dyjm`tKtbz<9+!(1Bl7mI(^GU zszpKHWj=xbGa{aJcf4XgWcKnKRhGq}(ruHOs5+FGwGD8q2BEl4c{BTH%V(eR|4~-| zCGNB7eWN(|2G!ShU+!P64_W^mR2z1S3<$ixwHpY_ZQIhMp=n*TNn#Q_wCI9#Q3+dU zl@#&cj$}6%Rrf^Xlq~t7NuvI7w;Mi<5+%q*6RjT^*=Nq>%>6EQ{eW*Uu<^Lsc8%7C zWZ_#KHu`YEso}1eTyiOE#?fJ>ejfn}TPKJn8X6WiZPv`!v)~VM5Rzb+7D&K_D7x{2 zY9H29Vf60&TGGlCB#IJ3x^qg-NRQSD8A+^KfSgI9QtQ}hX9#8C@$KI>Kb1pMjl>xz zVxgjEzVA?yB$;|!;M)=qnTs2BF4-3>jgPpOy_TP6U`{M!g^c&BzbW8BQdNR8rE?{5 z<;V~{!CxoARvct_fwzIlrFyzkGSwo1xkw23Q_WPcsn)_r{Uvud7s-Ljr{f|SY^0RT zWO`B>1hcTQ?(*}<821@7cScn*OcXnUTxi6{-iK&lz7II;(o>^`Kn>fHVtX6C?ud?Z zfC-X+qyB=bHs&X*+3HEG+37`En4b8T{h-xm9%iA$rTZHK9vW5@??+2XhTfo&oJ|fG^Y$l?IYxWGvX*HQ9uX}c) z#yJw*%Al@JpX#06j+XBm7n%j!sMSg?-If>XGuPGMK=hY<0KdDb8UBu0HapPsPqKCi?jz3fEE-BaLDrgHzE{_)Asp{mYvghx=j1&}koMq&%xpLY)P>=yEAYj&Q&?e@s5@c8J^{Ax-xB^`uN5ySB}VtV z6zTmI-fI4ful4`94gZHO;U5vZq&o3^qeJ0caXce|^;P^GuS79h3SSlqswC~nB2=k@ zU{w%pGrNeFC>V#kCMU`t2K!UcrW~YlFbIA}`UPqbmmG?Sw%owA?`S%w$UE+Ole6WQ z-`5AI0Olc(j0{S`&=QaN3XP0bIuQ(eu$U-Y$+gt>T1AA0M!MOHBfSho?OP9wIuD{K z6A?`vsNocv?CxSoO^f?Q=}ILfe?t~gjEMz1nhly}T7Sy!AYZ$v(01aTYL|=$dxl(P z+9gOq6L#RnUGe4kD5NSgoY1>rkV;1{zUTPmV%>x-YDKTUD|#6lcM zv2>XHVCu-|sMZdIy>f`uHFrMd3Tph>VjZtLHvtdt;+Qx0uWhB@pNbzm7>4C@!i1Y| zD~yOxhVBp{ciVBX3|dLIfMFfnoGDj(w37$|FHd5R% zkgwm{i!uiRvbmN0~=vrY~jV? zZm%$l$m)ViGBlZuulgut{e{fZ2!Vldz|#TtS?`9iVKD3&M>Q&B`w*gu#+q12*BoP* zl+DQ<65Bs=hEAskZ1h}JTOJTI;J3sdEN4CPB+xfNbx-}W_rI$wH@QS=*_p|!KsWD~ zI;77jH`(tg*jG7gPMwpc)PbR5)|}W~r1LoPW-vPPTd2FP+(W47_)O!L$a4&{2N~`A z|74I*b&_cI^BdE?-}1Tt#>)NwpmF|he8hi2Rs8b=QnCI^U&p(k+tPrN5T2jE2khuB zI4+E+%c2+|)i2Fhjvwx(A=P2aY|HpT9fP5OL5MrRB@&Y3o3{=L~6{ z?^t_NcXwX#m?}MPIVYjOc#IxDe#T(ZD>q?*4qjMLtWKUXpT}&uz!Q(Vme#~SM_wv7 zihf}5bzX)Eip2w~ub(*wgxil{P8gGtx6 z-Dk?jG%YDpkE1fnm;9W+8V8o8DAWT^Qt#FwCt@)i5m=VNB?b#)pe^tnW97ED7XW?z#QotPZx$N1GP5Kgi@J2S_ zV|!2CtCYz@2`;_JGh4DOb0(+dHdM;Sz+Wckt4o5aVY0a|9Ot2k&opOKLba(~Xk++! znaHcEdj2s$6$pbWa|d$_(N);}QBlnjJ!nQ0pTfqDNpw>*x}`2N<&1^8QBN#(O)c}M zygAAbcJwfCmqDmc1-`4IXVCL`5K9g}meEWLe8t2z#Ijm~+4}8Nx=z|bNIL0UkjvI} zhf(i}^T4{7D8AKYbDga}gCBO(Sr}$B4OfHZvY;uuxM9lZye&FU=AIH2bWvA=6}sD^ ztVJdraDA5m%$&fmR01x6D`S9~|AY*eW2jiNR0`Cv&t-&|6ff|)HLc#nPRda zQ2h=OnD3Up(!ZYe6>MD1E$u{YOl?i={>i`BBx(N@A0uB2wA${pL7QFBRA)+bs@pKb zB7m@CK_t==K1?OJ6A5cA87(3`N$6b&NU{%o?B8ppWGK^Utc42ck0-M^e>qQoY`i|c zpSuG*Gbo3L&S6zzEF6Wgv0Jx=IzqeCY&Opt{1iex9y97?nB9D6;ZgTeJZWJfEp$jN zxT=updiszt*U;7}A&SGOj29tk7=eMuCjW*b*)qmtJI4-;uPoy2VORI`Qe`V$doIZn zZ~GBt!L#Y?B%8?i>@TENbrZZO3&A_KcqTA!#;CT;B)v?haSgj+DwpoTd-gW!mX@tz z3Hhx-WlD9s_dsdZ)V*(xIk&6_NfNE9tUUoxeLv^08H{iy7r&fkG5w@enf{Q6lPtw- z8E%nFI4c#O{LQLK$76qjXQ%HIg5|bXaEb?c-ZrY~WIf9H@ZMZV-|yiXdB$R1jGoM9 zQK8jQ4IA4PIxbdHM)UhvtIM2K=SbWcdLw(LbopYzJ@V`?3K0K%Qj(AUv#@mbQbsZkn9f|~jq$YBtR?*sD1Rxz;HJsHE$>g?YLt(*6xpZ;-K zlvCU$={LFt>`dlv$f4X>&au$Rz>lWFzlQh#a6v2c1jqV>cf1M?(}0^@#%!K90uUBx zRPx?nRKkrtB=uaY-~xg^K27JDv$XFMSns?l6%YQ@PGNgZo?L=S=N3wxbEBvJqNKih z5%SA5lpeodnbhW|+}#M{JO@eLj+Nwea`7u9Z_dSxakXXxSS{)k*I2mFJe8d>!sFlk z4E_S~Vsi{5I{^Ry=r@7||1}W*Bd2$JLmH?YHh*#IlVxO$k@o&PAsBBXAcXFNh(Me} z00J2`Lh6l(N;*h{kulqw1c|WLwW@Jlsod#lYHHRJg`8EXYPMRkDp}Xc^L10Se*gZu z^sceZyYoBlbZ;>MB7FHmcDi=|b?9Txf2@6XXTI&58DUnX&hud0GdqRuDRDdW`T(WB zcO(t{0_~F#?)2(Z(IZq@mpqSt=$O){?{vR}hc$ri^)lfTo7`h`(|p$>=cPjrYywmhm)fBX)3YSZ_*vQ4I`(`CwoQ0lbGJ$s&kfrn?X{`q5h? z&vGreBO=CM<*Y}!H~w}X>^k9$oTuDVNs9Y$ zj-J>Z(yNoVDeBto9uHpi&b?$MAm%+cD=#rl9(`8mvnMO>Rv~4UD=sf(1Rln3dIult zqszswZ;IaQMf@YN*K19<`6H^2KQ&Xm{rsvuLJ+*Su8(wEPvAS&yE0p;vLklmH@iloVyeBh-=AHNJ|fWsd$Mk za3wEUsb9#RJ`@^%e(&&)zVmN>h{K1z$}=4hdw!Jl;dj2yfPJN9eeD(K_52L@qH6x4 z&Hlh=|C$m;zu5-8moNVM{)K$-m+9;m)&)DpjQrL|MtE&mE>t7G;0} zr;-yU)rx{A-l1BU_M!I)*r=)}j4FXDnOG%bx)5r|k_P-%=`iHmHMUikz|EeptV2~K z(a$tk)-i=7-ZKW*w(u(@K4DqLMZ|g2N}jmn5k))JDTPlT*CwuEg%PYX4tQJj1z6Xv z0yB)tQ3YmLRhx38Q$?$CCgCY2mG%NN>@yHyRg5zc;VH&N9pNeFMai(tYen)ZsaCEb z;hBDo#R@zxx!=&d4_#gI_p{M=d|SfwW1ZtQXpFKJF)k~jTwcPJxFMUsOM+!<97dJ3rRzj-nsBz5iRK)ww&w+S((bmi8 zYb~oQ^mUZ=w>oNTD|@UgWp!nJCpu7BYtFH%GPN>SRN1R5?G5*|N*OUQqQU!bmjV^) zQh+Di8D%T0v~-pA1N|PQtH^k6{Z0|hAq1d)o3ZGM!_7_Qw!SVf_@js+J!?8W^_zmCsgxG?`jj>H7UctYz9-O-*g}4W)%amA0-*ND=kA za;+%JIeVw|?4=(HqgL|y5Kdv^2Qhsh&lWu+8P~VwG=Z%6QbRH3gM`{bkfLX zPOjp?xH65;BNGPV?Ys?R>nJgR1M6@xESnH5mw;Udjrdh54T-eNSz(Mx1%EEubWDMMmvpd(H?l3ihG${+VOWS9zeQ;4y$?leZ@w-j${F? zS!nv>Nx;ID04v$PEHM}Z@fs>fvJ5YZDZt#*jem9SWVJsT8Ffa%i{ZnNN+2z{nA}C{ zw!lkIlf^k?JXy2=+88onc3G?ZX-ri3(v^gj2-n@5WqyNLfd^3B@bFt892JEdfHT=b zGjGcZ#zmMbsacA|Ag10BouAgb5;pteHuNZ^&yBje`zlhD_|b71!@ETRsrMon7hV>| z#bwb{<0%G_QDFv00**=s1-nqN99Y>=O=kVkTvbe;z)+x>s6e(b*Ewv3zEj$hijI|2 zwJ>`b&EQA8AvW;I@5mjXekI*4E5?PF$#S#^@br#wSL7lFk8hD)b-;cAGkGJfKv&(! zywz-y(Q8z&b1CIdNCZqWM!v#kY6K`f16P(-aTC7Z5SW_U>%!f*YT>r@GQtuwSfEYM zGq&O?sL*;@v{*-=`>X-666t8WR{Lm1KZhy67nx{zSgrsg(`97@-8=e@UAaM*0>vLK zG&A~y+}Y@!_d)*>%Xax0WKXCyO@yAf#RQ&;n?iZak0@vAY5W!oArYT<7J z6@W8>T_cM#g0t8c0nC6;yUkMt&QhYRg64P|8NFADiKt-f;RC`WR$mCtz8?~!jwK+l zI+y!62Rh*hsItFs`ajgu!}B3>!MI*Z?pSh_R9dhA^pChpz076ya3Kz4ijmdqc5AS~ z8@O=y0AD9WVd{;g$O=Qynlafs{;)DUP_kq{U*X@MzzZ zZHZRwYjbmOLx=#|@Y+vo$~a{}5ONKFYO8Lv-GY*$|3VlQ9(9hSv*P6J#Th%$raXb^ zfF8u=va-&yHUrXN-1FhFRVB|Y)g+gs6bMy9x0P4*P^`z%a2J`U8UfDfBX*7oaSWYL zWW+-i9>#`V7oN_XF&@xFO1>~#zj5?T{W)FC??A6SaNIQtrlD#)Uw6t*KtM{=CO1)& znr>C0MW$;d+pJT=aC-cZTA^0SrMy%HHd>Ztd1qj)yV&X1jp|w@rkqodDYI0qm9M%L zD66)rQdMlm+9~^n>wBVRE#q2h#d_NMkXtdWWZjo{^j0~1WC}}L%B7t{EZyL+dDhe_ zF5^n)3x*x5MM#a%DD#%g$DDDaaK7l7AS_?Jp#r#cq;^?)reJWssaW$4XeBIgZ`Q5t znpr6gx@8qy!B&|ddA$IhI1FmUAgk>xQV7ZOQDkLln>V3`kkGoX*IKPXy9@B03~7TDJBFC%s}C6YZm~QhwfHj@=pFuUH!rtnYU--S7hb9+KUbih^=dtZE1({7Ad}a z))}5_-I#IvYRwh%(jOhWJ0v|TC-RtB>k^f4@akJYWnKy*#q;IJN8S(@M-vTpf}bM6 zxN2;$RgGLhfZ7WTd2g9-9ThEA_PvJg>Q)PRDKc-vux=Ox5MKO*CH!2t$sE^e+aS5- z!V%j_@XWYpaK^)O3=Ady>1P`Zns%r%@*F2IIb$oj8RNocuH*wZ9j*>#TPeI_2^6Rm z8Zq&ar)?x1_0>7kU|AGZ;| zrtZK$D1H9=aFxFWM^t{2pncW?gt=;dPR&WQE#NO>`+Sai{gQk6BU)c8VP6j1&8GPo zmEp%B>R+;5lgqG_v=;`CEfZ+`WPuq*?O-PvBOYfjJ{T2hJ~)SEe=Q^&zk~ktU9&r$l?&~&iHdMEd3WR0$TgSaPQt!pGTTLo6DbuJfgsrFrqg8 znI^Pm#{(lqe-fOth0J7-g@p|?sNoKP;+h#SL*q;MVPiE5-wIf6oLk|^T@41j&E!bz z1ukuA?8g-pYUI^mv5w z1F5~?_5{=@IDs=j+aqzVtr^F}ZJxe{73*t#>}9lN3NKHuZEexG>{iO^WwjtqQ^4;N+jGUbzqrNvMS`kU z>6>apq_wxMhalQ@oiGb0Ubq#Q5TU=Btk#yBn*cBu!qJ5_sEV6y%18nR9HFotDPD`S882a0VkUP zFDCrW>{WZ77MvMWC=1xPo&{+>nE)lScj?XBy9w)Ed84P-$8ugRX_|nwEZ^uoe^Dnh zQgVX^H3=#NbiM&t&Xev=_^xO+9U*>6QOs1{M+Ilfk}ITd~-dd3_t3e5pX4Luy9h$vwk z|2@LEJm-l0W2PJ@h<#?Hp0F0!n^e0;riCEkwPoXmPkx;A@yZ^LgFlyBktq=6>DuAM z-K;-x@P1mf_huqB?oCrFh!=rKY&eb?VPopQrADfpo|=AnDY)eE&-0c}R)GRdQIEtw zX$lf$pdU=n+Xe?L+nog$1QMVeAULWnNSV}#YCfaho3LVlwU-dDM>e@bnBcSFNzwq8 zl02m(X2~{)MV-gD0>C zmUi&>RC?n^WBMJVt}_q9b&4;)!z?Fdif+AP_S6yKGMG@k;KCYPRT(vJIyOjxkh#+K zF4!_Y53-nh$GZD0GHgrNT;7;E4$tt8H^qFdZ|@p$ik1^Kb7vHsvqO$+G@-UWg&IQ( zRTm@9T8xvXTXlmRkrokmO9iTeEZaV}29>%wO}cXH4+E0O2O!b4-sTypJ0Z0;Wf<^J z^;$dA>e4_%ql9kpIL9$z+*ggvHg&=)df$CgS7MT_4)~wIIa`V-B!Z9;dx$}^!v6jd z;zmV$6`UGXT*ZUZ(7a{JaNKb-M{!|lf*ySu!AS;Ib9pIkjD^B_&AyZdr=v4f;ruQu zgvyIWT(;B;vDaw6hD2p$?0hEyvw}_`$tt)^QISPc4+{>0vwUxzuL*FM;>Y-xnLknK z#pxWSQj5wYF~c7z(dW6m&>OZV$hj^7zn#SGGEai*X~^S3Ggx=b7}OTFh|83cnBU5D zNpIn5hB&HO&L3e3)HQxFHC7hG;iS4CVrG2%iZM6-wt-BiAOKg?le?oscAJZIf?(B?oF<7{KQ!#MCp9JH#?8Q;4EeC_oC*lTo)S>wLtL#m zo(+uLGWB%6z8-)kDS}S>6>X4kTCv)-wGq6ipprj-th8CpjjvmkE{He2CV-(=ci27j zxM-9M6PhtrG={Z{Z>_3yc2t&-)hnlP1t)v+2d3j*mZ8^d{leq0?03Kx({ys?%G4{s zNB$wHd{XuR#@HQ6FUn7xr_(I(>d-C{@Qm`t?nS=lhuq_z@zjmF{gwNK+yC78K%Ly} z)GWO6C-wKj_46t4pHE!h^4(89+s)?Qh*S6ne2-5=)?YPOu7g)~9&m#_OV2eoRhB?PTq43ZDz`vnH0}j)_%;c|7VJ9`8NyCF4u-pm$H1 zz$~S%=%`nv^?z8Vx$)xt?w%Gx_8M|nZXIK%@@{Cz;B)DdptG^y^<>M`PeHt5(e}F2 z^~zG3(%1sr5go3HAF_dcqAjTYkoV{Yar(;mlg*cW75)mKqx_TdiG5S@z`r8|XZ0oK z?`}aiqV07El^airIJS^te<~@{84R3xiu@MN{Guj9wJ=RjM@hROo8-2h-FtoD$5nj+ z$~4gx{+wh_9lK{E}X8R$xA` z7yhCTMw&x zw0+LTJSn_w!4igKCdNgd>xZ|?WNj^d9t;ahOaVB|%wl)K*r9uUgPpQ`SA1MZ%1L8U z)r&%{*`;1j7dGz`9J+jhER2){Bx2&!8h&N`*S^0F@LguPg(nBRpu#7IsG<1TF?+*MVt`X9ZV14SrO= z!n?RF+}7~81n1bs@6{HIUPZE+LHXK3?rd+M9B7<-G4iVBLyy{Da*mz*La3SvpB5zh z_s}g0>Fe^2-kokw%92_W&u;-MZD>>YdUSq^mZ@|w)|JtKy7sv_r7Ue=WLKVGYH3)$ zz~o^wXSamQ%@hDu1_7X{9u<|oiDt&Ed_Swoy#pm5W#feF`avpQmo^7Y-ODF;9LPR) zrpVQdDHGb~^*8D75^oDlxSBONWJ0IBkss~a>!2^tEP5T1b5|S!%{6?j@V}is`D<=G zeLycJwneF_W&7-?F@JOQ^*F(B#olK8A*r@bIDJ+i25u_1O4RQ>h3Tw-tcn5B@58f7 z<$F}JGF0fPoKJ37Q;!?VQ0J(aWd|cuBg-d8RfCz$Tn6N7Tr&64J~T(qX%1cvDl&gw z;8aKJe|fUoel9;^7Rb(0nyg!piSS`Myfb7;@nwlEn|I+$M7vW|8TqCR_~O{^T%a5g zbtjom&FD(s+d}YmmClZtymHLvvUKFGZ*1OR)n~zZ;`xq}PU?8@b9YV3)k)=d7CfNx zrbW9T_@!TA^oGqHf%8UUy8!jkotX7!XuD$7Z~t^<{+hCWaqaS-KEB!Liu0d1wgmPF zBO_SU1$FiSuY3c1v?8V35q05^Kae!J!@QABQe+RqFN9Kf07JcF)9MWmW=gs)Ywz8M zXws9c@}MfGL2#AFfRaMeI+(oS<%=o{6mI{Zdv7j~IWBAFcMGI$y`6&?Y2TT0^?{M{ z+?n*^L(6swW?$mTi4U&`;^qO~<;P#u2V6G?GG}Zx8qwB+eAxqumU^1yD&-nc7`z$o z2RKUOLfd;eat0Sg*ORxqDz4uY6?a5%g6=EtTqu-QoCid4ge(qKiHrl2;}gJycBe{@ z22LM3jN|r&;2q5I+mrFcV}NGZT^nx7T4#+ac^T|4&7(nCX6_acH+MU)PO~$0tJ;FK z#;Cd7u#h&}HsGC)69J$5mPwDs{XQmp!TMvlSTLRf$wyqllD%fPdBa zAt6DN(`C^;lih~B%qXy{)>5%1`or%`($NDk7MOpUJlJ@)h9ldKKINW_E4EeO6TP>A zE<{yF#;_-(XEbeI_5;)_gT74t6-r}J^})S|?6g5X7;bu*%O$BO($j_T;Tq&bpU##9 zT8+5I(7>%Q>BT28d5e5@kTYRs_rW^1Du?~PD`e0Bmb1fub2miRBnXwQ-cn!7t{+o; zZTeXZw+^d{-up+45=blY{L4k`zM>U;g*+T(W4C^kws_?7jVnu*eZHs&ru;nWaT1Geqb1|aiVJPfP;NEn5BNOCDB)f20NQqycYsHr8d>V-=UKB- zls(rHdZoaH7mW&cY5vEhbDb8LD@Qd0_9$Gg)e^5%eO+H_rO&+iz9TP5vuF~r~_Tc zxFB^BrVV%gB=iH@{4Yy8K+PXZ&PO!D_7u58su+P$V)Q87pf+y1LO?K%Hj%MVJ8>QK z^h=8FRG&)wnGoq_3w-HV3wa4@L{?+UL$ax&0DlnwHzb~)sr`@Y`hZ!p5&O+;Z<xRtpNdL$^&EgCOm=yl$?q1KqZ#~{s~F62lZnFxzQouP9gR4LGFyOZXehh3nw zKsPsloq*k)j-|AtT;eg5h0Cd2M3nTh5+%LUhTo*AbxBOL*bf-EOhRY(pL$zz=^IG1 zKo!iu3B(#Smfh@@6RQO#;IR6)OSj$^;~^~eXo#IiMBShZO(cl21cKP*AV6)Upedv* zcq2m-3Vc}AWeSa4L8ld!E?HbjSu2XmRbME|;!7i!7@bO`6w~HTLOGYB_VgHj{Q`Z)5u|_uKlm`H|%3GHsVXT zQ4YMB&VYZxxpyYJ5ue?7%uBb#^lf(GxKqQFkK|U5(aS?(TdB6DbxhMoC$t9Safqi7Us&eT$x%bq`1^`g>tO`Y2H*KeqAorSDt#cr2Lhq z))l5ao3sW{tMbmO#A<>D-&pPTB0-zdq$+kh^NBCWx*zHA8jNTv9ql zny#9nZ`XV8$b*?ATB67*S6F0g1ATKOomHtZ{LymjR>^?hSZZ8thNCTmg5PusHUgFC zwl{HFac1hIz@DjUQbhiwelf-h4|>kZt)P%^Q8+q5_oS-_#jHsks8R5)aAB3t66ae< z+bK_Q(J+po#6n*wg}Vj6Z-=U8@@`?D({3c5T&qgJafdjzXkwi0RMD1@6c_2Bw0(8^ zZGx?xIh%6jl1qb`id7+Nt%-_P5gd+!W!1ASVpe6(DkEB{^G@ilF*hV^7i@3>&l(q- zJ&2U}L%L~c==Ij(j&N$2^wzQx<(QmFh3DoSChfSGQ*yT;^hi9 z(7AFz=RmxgY|Q0yQYb6Nwfhk;%X9Lc9Q}|`p2*V z`dx9%DL419nghV!vAfN)_v}sjMj6#|?uKV;>+T+!q2CqR7gunjNQa9%%@0)0uB@Oc zeOqX`=GFbgsqm+%-K?&_OFtjcd8b7UgM`^_H3sM1^Ib?8>^H~$Ik-s){Ig>~?X9a%{@|_rAg9=KWRRb~cJzEX-a~x^7btx7E*SenX?W#>W$D?o z-<6%?5iHfv^rQwm*NpiLyb&!qhTM52Yv5{`_YJS*W(Emue`#8_eWjUup2mZgOo&PhHz<31++lm1Ikn_(rFYv#dO8BqZ^Zy+*}^<>DzGzUD?s}ns?sw%nxiBYwr z*3fQoTd`BKZK?g)+#IQ$^q=+qLzc`DI5_5gw&Q)Y{z1l0$vOgL!3=Lw^8t%drE+reiU}d@qBEE_vQ41WDJ5 zlu3$2*CK>TmwZn{t+KztwEEYZlOM~(=J*u~b1u=5G`QMkJ*3*U9W2{+J*f7}BDrA) zjQJiJsqVxb99d^<{p!7OAPUc5B4NeX3o2 z)Q?&(0DaN}v5!9O9to2^^+B2GwnYeAZ!{wRlrVkj4HJ`pN+Un{0m{!`Z;-mS0koc~ zSULG%A+=BZNehy!3)zqVS(sK-K1M_6o||Rng3OdmZ+ep681 z4_j*OD0fGBpQJtkd*JP#f^4J0NPgjadnak_u;32`G2tdY86((D2gGl@)O=C@#xfj7 zIcbhw-@k$Vz7p`|$2~&!#7%vY_V|+?DA7L0)V?73X5!7?9%@kiqvj;vn5nnr=%nNG zrQe{bw?q4mE&WYL^pF1X96+mm!TzMV{&GY5&rPdJy@5mOizH-gaj&klvDFA@EaJet zw)YU)tJhzyx;=LZ|7gUcMYId=I*7n_eO_+g4D_ZI(4VSfuSlqCK#K++xb-+Q2Gxqk zvVjsQ+80QRYN&C34v%MI2k{jtZ`Xh>uWIbMv3AdP?a0%DN;e0f>4q6p<@5j!EZ|%} zez1ECVY!n#OfTrs1}R{`vfW(riyxIyQ)jz-xO?ts&F`QEUg(V3NjI;$rp6DCpDDA_-Ia1e7Z zrYH(87TNGww({W*W{yqK2f2>q(Xpbe1OXma_iv5hL)=b2IB<9~KVZNnC1@3Z7v^jW zpDo_OKDEcHWmU%bREWlU`R-P<@!_m=_UN)Ktq_|{9_#)k_0X%nT_hSdNw(Kf!#yZ3 zrXZVu|1{IrAWogdrPqc)f^4tjAC9XH7u1@A=n_}8ATo+sKUXMLTvQ`Dhy!H3)az^Y zd^q(v88BC# zQ_LN?#RE1=l%xPFLg~_wPnlRY$11|nOCv#SQ2GYoe!U}$wfLZ%SuJqs=pkp^W#r5sSk=Gtmo4C%jnmFqJ*Tc zE9`&(J7Wujei?@TRb*lotfed;D@&NW8Lgouot75|H$<$H8X#hUd`J=uFsn79SOSuX z1s1K=*ufe)R9JB*j0yh{^^jjBnC?!grZSsSS;-0;z1UinUOrYHrx8!1ip84*v9#^8 zDM=}!=)hZzmH~s1l|lN-0jgh1d>K(ZCi#-)P^P(llY7hx6FBXx1|e~P%H#!3Ol!$o zCum8Y0|T1XqoZS@ablAfGBu#FMAtHdI0P#>knnE-6gt@z&p%O37x6CdZQO@!rD;m$ z-Cx>xOTXOrFBC?eA(AlUT1~zDdf_?s#E$@bR>x~-H`4TK31xR~(6+jV{;`vpMsqCv z#S^YEG{}F0QV*P*zLnCyGDa<-tVNPSsjr?b0!=NPrRzk*jOCGNcjIa4hosIXMlFRY zXtRkQi_ibxvDVBD9aa!cVo8=0*GtTbdfntnal{3;Y$~ZyFd?3)n2hOh86q7Rs;?rj z&t_oCqO*i4k-}aWag0iOizo6nqGO~f-`vE|X7%BJhP`x4a(r-~g z{)cz`)NfQgl2DbUB*pvIZ|Jjc1HD?4|2Ra01GrY|%Wq9eT~iKNPB%|Nf>27RU(`Rb zr~PZBKEeaPL+qA45RJbx*zPmKCc8@em>zhB50E7QWq;kFj=z#= z$Wgz@f2em-B|4#gvRl{*E6c9~iMf@AeuD2L-s*zx4nC3m3ikaUgdzEr?lS;H3lN&S z#uXhY2Zwb@hyHdGO$$*B2K_3D04gW!OG=JMQJ|=SlJAR1uA>MwkWW0a)zJ>clf#s^ z^Q`X7nB{GXOnH(NEr_k4!ghWM*3X%aA6~+R=|)i?jWh==CpmX+KEIT1s}=PtE@BRg zR+8XEQ4G1GDAG}(Fa~Cgi1^7IhAYdc4NJnvB9=yRWENJ!$RdmUdrfo^nTKUWbEwQH z4_Q{97h5V*qd6bJbi7Qukht7IpKjWy5n?)t8WGlrs^&^Tbxgd{!!6XHx`@o8Gfkw` ztGG<0Af~K!Z~RuU6?GdC>;ZJXkK^g|siv6H0@JM8W2`0pqpI78X{d)GevcSrvvLTOKERFzM7|+rwjBp;760Jdcja=`FG3RCWlmSkz8$LPrcFC2xW@Ah!`b=LkG8#8`;29UfNn zLRp~N)F8d7iDmVylPkW4M0tRebF-#2FAhq{B#%`Kpyq(3baahyP12~3fHfi}y%v~H ztpS$oW0XP&OEdSRc(I`Y;yh&*tk&{YtMg_7ZvXm|Sn(61-UMB1|WE%i{5x%mLcV8i}rOjqffH=j(h0uKrOvgcFN z7@SkgUr^DVw|Km9CK8uZt2<23_w?UJ&p`HJS0EwRIuw?oiFGwvys*56U5s;1WSow_ zgGa_Vf`p_s>&UR)*+4sjk7TI_bq9|7RXAv1#6yEpAxeeARWnZ{w=$tNh@m!*cN9-YUe{C4Es$FgaPA)q&#d{|1W%`nD^ob8_z{yp86Kj3-$l-&2oD z`-K`hSIu&UR%34>JB$kic==DC#lzku7E6($4Yb?Gu;+;)J)fed5a|-_W@2uV!x&96 z^kPL^RJE5KGRCspy@z~a5{8OoX)GJBaqbc(scuyB=E(ZF` zkGGyDO^y*=c3I~+ZrVNnnw=IDmHG`ut#;bN+SZ=2)avxL`spfbTZ0ca9kpX*bp%G( zuYF;e`&yrh3x0l_%*et*nB&idDud}Z4SpRJ7`rCLllS!8)ktvr`|R&Wz-4DY`~8Zds+*riA%}=GK!aCi2(?Be{)< z`wFV<^=Ypnt%E*o7hLViC*+f^sv251v zJwui9^|Zu`CmY0AP%pdl{Sxoh%}Rwk##i0!p>oTZm-uR&M@$)w6^;S1^)wqx>0_dH zUhx)<`tL|-!y?fYFgNhP4#?W^Db*Q?4%s=YVigMIi2=5or)E}X$ILnuv)*ZoB_gpY z8wZ5(IxRgb(rUyg=n-32ubJEoYlS5`J%FNb^>8NnGovqxy&U|%|9z>BAHfQ&lNHkL+Bxx3?P#E51)?oEh)v)EmECsi$pGxOnJ-^J~VzlbcBwHIePWD~qQ z9}-sO0~g))k#itoNf52Y<%_R;o@Na=bJ}>r6dZ)nvxKRd!?-5#j!h6f+vwt)2L3{#sA@)km19vw;g6?{eGyY!8 z)TVI;6J#XJE7m@NS%5J&_X`H007JrEBop$$2!{-S*cG?~_LOtZu!0Y$xPp+WjSTPr zkm5o6N_-tO^SB9+YXFo!(S$O6+sd$N;_nL1J+s_^U24K3U+|)GJy)X7H;eEwvI@ud zzq+`U4HVyJ$hl+jz=aQ#2=9gCBW&?6nN6|><WHWrg8O78p@qv)$t^_MwGR{?2xn;@61ry6oITQi(1Y@Sr$TzCP@rRy0 zaZVnX-#g=W;rIdem2lQRy{g||A*T6&<*|EE=zt&@29q*@nC3cLRe=?58)F7V&0b~+ zX6#cspmC6KO>`$8?vr>h4UuEsr^LJ@FWoq1Tqfo$5@v)A7efyabDs!1Kn?O)m{@Qn z<9V_NY3FT3RAw8~3;(15edWZ1=3i4L<$?@s5LM_y&vIxAH9^6 zP;1gi8nd=hz|;~(l<-3QlT-xHOGPPbIJ%X8Q{*s$*iyQ-l!y5kfpoNh zAubWP@SHX$H^C2ZDJdjc8aj$L{yAURDvT+isG=aFt?%o`0FUe8BiNNzm?di=WSto$ zG0(=y1vmVQU~{pom>acWf)`SY_ZfUYG0nLRKiCl|**bF2?aMG>DevQ*e8*w4cIKb< zMkuxhAHmRJi;kW9y_OELOfo++J0u{FbS?{ol^qj^D``*;n6RcJ_ypS*8N5e{AHt`0 zK?u>Hl_Lt-r#YT*%PuJ2_~(rwB;wzyD;G4^k;9Le`NI(cRtSTuR?diH1Pl)M;BXNb zEScC4(l8YUxg;H2W1w+;|@5&Tks^HpRPeSoylDO z5hd9eh1nQ|V;WAN=qyrPg_1cX^r-_^4CiEyDQ0&{sV8BtJ~o;!dTdN@^v2W3#W^+r zwRbFEccN&ANjpWda*>V{R^u|mV>wt{&otV)k(Nb$!ym+P)CulYl71*}Tm6|C z9MSlpT@Ia7O1vQHB`y3A`Q!qT`j89K4GsT}T%I$&)8og391i6ipD<2C7p8t{kPF41 z4Gtf>xFsRW=O{o09#H2T&|rrX<4%5lfk=%;4_dyr?!?On%m{_7xP_zz`RG?r24Ff6 zb{&xD10xN{bRlXVs7^!rkOQW6C_Y&C!4n36{7~-$XO&hR$*I39&FwysNx$g_@D8|} z2h`^Q*p5`!L!l1Lbm7_#(A!aGgX{{STl4U3#vr%-())DXK)0jTh5+`V_J_FlwB6t@ zNAmlAKKOWp#`n5}!aD1Q3d=*pMWDUpYy-tc+&$h0j*ZB0(N_oIM)*90FGI;HfZq~4 zK=P602V;k(LBBwA5pDaL4{SW-d;$5H)A!EFxPFFN0DUa7!TOn02Ww@X_uUh~^ch(D zZDp$W+)G>@3(cTE7Et}tWzhSkOQ!cx7h-RJF0AjXF4*3xFYr8eSU~JE^1}ME^#c7f zc7xhv@dx;4lJ{}{Qr_ozqIKKX1;Woj?-T!(;xM}vVX+rA?1h4!RxdW`1%#eqFP!ng zr#cN^u>0Xd%gpab`m3yA^#jW_U2l~6E=$AS7mbQWE!V)|P*e&;u32VKY08yn!--t3 zh2@xK3foCj%dyjhX|C0+Vfk=CBh8*?b}_`+t#kC(WPo9L0Q#Primq)C>y39qj7*#3 znT=abnZAwEr2Nl;=o|6+coO@7w2CWA5^sHA`T=S~lv@Ufe-OVgl-vmb3o$u85P5$jj<RN&KJY@@(bNU7qXmWbC2}MrT4O$O(U6?^mP58kOw{=L3eqjgDK~Ani!Sr z4>Z1DVriNclP`@-b4{4>c&SWvDNLdZ=|In^Aj)ulOw~o7g%C4J(cY7NGlI!T#Dy#k z!FZT^2A*i7hZ@ZeL19d&4wE*~giut02%)G#Q36o}HD5BEqoirs0b#^u44JqmB0_HTooVvs}zdrJ(zNmNd0^g zyZKT>c9?!M-!Ju;htS!<;kUu=(LD};1K zb298%;_SI{2rU3q53Ut+bEW4N2rLK4<|C%{5c2`H8gTxRO+A~CYzI&u+-!>a+OVN@ zm^owU?g-m^d>v`MrNCqd-cCngx?$P%pwU$lk;Zm>HDg3HWg5F+_Qnt&Ng)32kkVzc z;z%!CFMDpE2vZQ$hMQ!)(Av(ng5A*{(uh4TUvE>QI`j)~Xy%98QKuS$dZe!@tzwQb zru_~J;sI6#))hW|TV4qL=%F=Uv+{Qel?(j6h#^~@rad{WuHf8ZlyGi#xB=Z<9Raw( z9Xw}M*RUzg`#`MCEZF-GKY40;x8sC8mW!X%U00eC17MzbpmAupZ8+q{=rm4zm4!jY z@Er#hgMrC&xIb9 zWhc-ng7h-l6%b!*V^=LMa6{nH@lZEJ_bx-G+lloLS;+^s(8Xa&7GX|IFRs~w1*Tb< zn-BAIZ(4vYglqB>|4+hx;GsCkSwb@T6H7<5ue4p)Wximadv?&!<~;R&?vQ6pFMo+U zg!du!iyrhz2mbrt&t9<{z}esb(a8S~Wdb9JBQN|PxWo8g_0$U5-`Q-Nxy=XPRtNw?a}X24hR4G<`CYs*kvsfjtipCO4U9?UqAz*V-s< zbakeLN`+}{k;cv>F^xIdTa)6fC3z!|=g&rEZd&C}k?)}lVojG5nMGR{zllZu)*|Ug zb)|_H{7Y|_8uW@Fb~TKn(Vw6X?sLOzCH2z*6P8(Mb9A$+@>IhcVA>mdpLxuob4E7I zRccR7u;fYm$vJsdL3bJ{C64R(E3K->%rC}{RY{Cp^OsxYC(E3l8ZVc1t3Q{WAwXHI z&J1s`YzVLmZ=t6v0wP3OL8y&QAhZiwK^nuTZ<5NeJf-WxG7rE+I7&Z=*l!`WFbiW4 zpKmd&Rc>ii=R(WQbC+*8S1s6`W;e0_^D+Mi1ex_>rRe()@+13CzM=E~?=efdd8!#Y zSsEJInEs=+xENa6nL4RE{SRhKi;A`~jws5{>^0NBqZUYrMgh0zEV% z1$5;g!cg!DgG*YWnfYi(&3(O0DkYS1X|HA~zNu%YyAIn_7FD6o1)uLn&K-B#ExP~r z2X+9aO$tL$yfns0cc8o!g@IoLtNTflfe~VUR(k+xhYwkNKK9#Se>$ngqTxn=RG@cA zVH&dcY#cq(;7tpI-MZXyyZ7LWR(LD+=%AcPmX{!Lqq=suc84P^jM5miNVfpSgYeoz zo1B5z+DmSlv3cd$mMggtvhM7VDL!v-t3y6!GAj7Q1&H zO_?_yxKkzmcJX>75h8NUN+&~RK12V&z+&L8}c8L#&2cOy*_ zyK7O)aSJ`FL+g5i!zbCaL~!^6zQKKjmhawdy+42EgBxM$Y`Ssb_OehYj2~2pY3*q zG1+LV3gkNHH-HDDk(Y)ECW`>ST!vS_m`~|I*6!I1pZVD` z8a(pG5TQ*rPxsRP2-d|hLz(pXdE-l2e8y7%UmRX|Bh}M)dAyK6+v0E9XI?@>?Kq%6 z_pF@g-B&aZU-vgxK3?N{y`!HdClFdEoKW%c3O-?hQqP!A<&!tCdSi;m?61I4PrPCi z10Xm1va9+w+()!JU@0UMZ^#3vGAAhUnL#~_I`5#sD;LHXpgdfGbdnHA4d;hX*fh3Uh>kuP0`Y}_Pdb`(fS^(5d= z>t+3)DsUVng?!)SqbgWq6qawmX1*V1c|@#+O8ufxj+uTcChA)ZxJ{I^ibo&D&ZChOGb#*!`bf13z#ob|%VCV53XWQO$y#Ev- zeSf;AknQ=J^CM0vTe!N`Yn!T?%94Y57tgtNfTE<=6*^Q-nBaG&Pq5U_-)fiFsiUi0 z9`8YNS?bh0i{w&yB+n+Ulg*+gl~wb~9$j+D9!O%%&sh@VmnyTYUHJ0MrJRE%*S|&b zN|#{rY8`XM+S2cF>eku?k2s>I(IGdg9xNZbG>+V-zAlQ~vnx79&Puyw&Q5&7Sg1=hDXm(dUCTzRLt2E7Ab!0|IMvBkqxS!@e5AU}q6eZw zs0*OkQymb5hcL0;Cd>Il+MhPCXsh%pltXh6%>=M0T6&d6N-|T-h&FN10U{Tzxe(_oE)<2M9`3oGuTYVA6^4C0wv-GMQO|kUq9K~Dx zo7<_Mf0K%>UwpILILC_RuX||0@-GVEpIE!_;oU3v8*7w-?O8jTzxcLPG$qS*cdSe0 zFIH~7L0s0Z+1e{A=TXhlR_W9Ab*pw!PqkP0Xzsd6x!x6dr}9ph`pO_{yVq&#OMnMw z6O|!tykJ6r!+L~$7&suvJZsV{zMzW*NrGe+H1Wqw)qCz8_eOUrvl~|%NE`S^f?)Gb zKRG76_&Yj7ijXJ~MkM(PI5A~HrPt;i)AovMHE(ZYb!ln0C1?UXuGhhz3Qr=;c!70b zyD4>8)^D>xYNz)Tr`w`;gRL((O@IP%Yc0FUA5H!$=UZ(|_rgTrEsJN)E_ z$W6v!!OVrAVmF$QwQXSwf>t(~mNj%Ou7(11VQ!-Wl@T2?@_>g217`GAHiPPE?jq9= zQR85oh0~u*81T&P+5-!Yj*JOKc5~ijXG$kD?x|9-7AcvJKbacM1+d`6tV`G|2D(Q#i$XcG&m z4k?yWYAUlp)iVO)O3OVPMH$T@nKFk_4lf@?T;`|W0B2b&v|)Q$t@vnpPjS%j!mR)P zSxpNvV=)yEG-RFwS|poAM6xqov~Qbq$&fP6!`Tj9#4!hraO?qapySm>64Iwh!Icrz z*UWFrSWUATCkn?7y#(mV46B)sXq`nh5$OxdcyO^!G5xEpm| zuM;c$@QDW|zr+@01M9^Rbo+QS;f-6h2U}h!9;Yh`4eNd$H7*wf2<}*of|4P90R%w4 zP%2G04DZ1q0&YFzPT&T&!|X_j9rQMc2&fA&p)%NZ`4I$tZUxnK@M1`Y4yTdFzxJkW zNvoCDXdJ?T3TgECbXPl*Pi=b(&MSd4b!-@y!2({OdV=3Tkb_XgCD?dxCfaK^=z0=X zIGDo60uBu6p8ndK94+XC?km8Pcm8>`&Yv-oTwmz@b87(-f0H!pAypN1nE8+!P@L_V zmHL`ptn+#Ms~LnL-^?$DVR`Rg30>&E!Z|XjqCTJJIyNIh1+?b6l}fY}={gehaKKv7 z%Nt)WKG!4g zBF{JrWuMffvQSxH(W5#n-k~?_?$l8G2@zkQ5exICt*YM3d&%-;6z*uLCISXBi zuULtv#ECB$|8zV?cRs$UmjBa=*UgrXP30GBaNq1+0&O28db14_u;`#5a~6Z@PujrV zDR2coGjpaB*Ho6Q%sOL5aY*Cg9u z`~!Q6?_FU2@%X|~%Ye~22n;JFbBjQ$ciJ=regq-KjgE~2{2^9P9K442$zK_h@|a)5 zKaG>}*#Cejqx>5TgVGPSW4UmlT%ez$l z2KMzI2~+(|@9RZp?MvQkS^AQ7^GnJLKx0ZC?_hs|V}2F0&`aNwS^Q7?Fuv6NCic_c zQG@kQ`Y^xTf5HXp7p|y&m-g2@)(gbXF}FRf3+2AJ`U)TWV1C#&-uS=t%UX@=Y+?MA zm%X54g%%rFqHs=87mi82HWYB8mI~$;bHfe~g~JXCe5jmey?Rr(AKgfgIn_(xsqvTUPSR zVperlOrdGct83M8TQz{1`Gr5Um_;`ZO?XUOKmOy`FtDnZ2=H=jC@canD88mU&Y zpwugsQX#{XYGqbXC5P1E0GnrydK1|A#ss0YFp_i>1LnM#ahHzBmIJ`B+3BW+D=7u zQ}-tBVmCmvwQk)Mujo9c!8Gcuvg6_TU>V^HC;cT;9%DRYG^a6fxbpV9zhO!f-b`n} zlC$Tjtih4U%_*Y>QYy;VZt@2zqh_eiSFH>>7t+-^O7*X);U^_LRI~V}QGXta%ECN_ zJFU{p89F7xF|I2gL~|glk*Q6;PFpAOmVQ2EkxN(Kw39k5<{#4_kX~Wj)g{9l4329^ z62t9tDP|+yR&`RPY@`VXrqpTwtSefxCgQ&DqO@uZ-mrG^xxB5e&y1>Q%zE8j=0ige z9QWav7jkxOxH!d?kM3BJF%9zka@U)|b0{$*B&qE9Tkpj<|Kj|M478X7Df`dnH5U`= zYxtvE4}StIIgrInU}9U)dOIpH8!Mq*9r?Opzb@Tqp5YCoHLZ9FQnl;0XTbZ~xu>sA z9AKd3Jb}JUHCiOgDPEvF74}>Ct8R0FHcv$=1j(3AP3}UvqpNU6uVtvF=qzjb1INvGGf8VNcLI=d5YUXgY&jG2_+F+aiiMEbJk~g$4w4cQfcHf36q! zRM7fP-SJ`Fpc%MZ`fB2&MW5sb>G@X2Rr}Jn zU$vp{1gnqID`In+LwZFX8O<3N(l7MByw3SL@o^CL+jCW>lbD=u5h}qa`r?~+eUC4E z1D=9aZfP;eieCj6UlXv2cNYn%wxmzID~qh*W#{g1izoFod(*owCc+4-xCBTanMIJ< zu8XZ0WQTu~y|7;vP3rCGWjCaiwR478Y$M9r+Fur8^zyAE;*NS$mJVM!dd9rXxx~*w z$OG$Uish$^%}*Bo{5|jF@sh*S%@=1kv9REK1yG$#6EXwGc3-UWU0&`=|JwBwX7SHJ zD|pT$nVC@gMIp?leO$g?7Ge>8szXzKdZ}z}_saLaWoY5ZQWgJmYVpDXw@`$(Q;uJ7 z<{6hmT=VY*YOV0{>UE`> z`+^FDh7oi{#VhBTnm5i+^YTWG8Cm*?yp^1{Q_4C<#0lRSLT+O?m9|t9ul_`FP)2Q3 zl?ouOs#MEY*}@A-Zj2jfLNihTPcqlTp4Mg2s{*`j>52w{}^u6@btu@Oj#McNeB3(#uLPWh@x1ze0hL>OP_LBm zeYy3U(Wdm!ahPA*5(KXZRdaXf%fe8J;F>PS+0b#|DEqu$&C1Bqx#CBb2UA7;68kW- zpl@<7sI}YU(u-Yl>RqAz5}?PuU<22{Glm+!ocwy++!bS)(W&z@adS{*^?)}KowX@i z&ke0y{$B#f#aSCiBLmgwsWUDK*7k41O9XUoi11q*#~Z?-GrU5&GBovI_p~|7DU18n zcO5oJ%pLHGq5*F0ifc69RgE46%ar(eO_Pwa+W>NOS6!6?Q@RK zRJjmaEQGhyg)<961}7|_U8ax@x$U8i2ra?kTG|M$ErVQXgZyfPUu*~9{Lq_|GBu$? zp{laGdG`rgwTX3%lx=wJ6kB6dZ@>6nd(ds_3-EQ!@KW3-VFkMNH_81CxVp9At;juP z$BY%3+_;gYv)jJl)9Kt^gOF7Q!tUA~N#yzGI_$z{s5&XpvtDW3?z38RfPv}8at*1Q zvDJ7bP893@mQTTaAmhl7=k-xx=L>OwXkoVLDu1f)^+`x7nZGRGAdfDdiE`8)cproO z1CE=`mF^0jzM?Y-w(TkdFZHJ}w=HlFASOQG0e(SM4n7+#VAiNr&2FhKi~~S8nkoHg z&sE($Ti%?r!u3e~*rUGrJBL-`JXfGmI>aGTR^*;Ox8H4#v@5f@Dys~>8MBu6z2J_b zr*oi9D*0SOXOPAU6mRcq=Rs&Q<*<6`x!nkc1aK!?c2LV?K5uwlm$g( zzClVFOD&Ph^20Bk^4i~o_!(~85m>^{r=dl*uV6KI1?xR_RI}>rger^=CD^+Y7pZx6 z2Gd_%gY;5rN%@d|+LuP-%!suBKEm1PDcKq@g-s|$r%mCjRFqDam!a#CK#gfnLW3jC zpgIBNC}c60Uc97!O!}Oxpz`5P>Ras}^8E?l6oY0GgQnt@LHILQLDw>3fuNk{k1PRQ zes=GGJ|p-^!tjoAe{Y-xXEFoQY6h$x`^3zZ>nDf%1PyX?cHl$b{|-0s?kCFl!Ky3M z7y9{yH*hOD{*IjRVBUTr4dFo#{9O;ATQ4-Z*Z&S5^Mib2ec!XTQNZp2^&O3UzPBy) zdk~8O&*Yqh+8cx0ovnAsTl2tseekJy)}v!(_yo@a*_k6cCrA#9l?&P9Hl*H4u)t#v zx@;kBB&o?o}`6wu;8%}weD$_yqd2`=KCRtk z;?r4r8ywEOTLfcg@GTIhSS#cqc(4NMD7-0VWm9gM%2Mnu+_drx;DS&7d)e?qVwEW! z&7dpZry(2Nq9Vwad>#Y^>8}S-?qo7TBRR3!y8?rZpdbV4gg4gC4D-1jUtCywnBOq- zg(hF1-o6%r3)(yO@7QKox>s6C7K}?5Bj0^#EeVC zEIRv)vd!T1DN%X-`9qtGGEL(5j0Zw$f0e`Wv9R+fp|2RTJ+`RtNg*23*Dfer>MPxx zm8;7jZ%v>+V!Z%wPRLg$C{<@>*&}63GWwE@FFLD3G_ASl1ZpkChTJe9TSi^*-t6{R zyCYH;a{3kBVav|vd;7^ey=b^*VEOj|m!H6EMK4pUyE z?zQH84lT};Q7~JxyUc5>PS0^0t8eD2n}B58y;aFh)2xEL6=$;Cx$@#`8|mzBwSH{1 zZ^4lt><-yFhH}i)Fv>0l*I@-LF+h<7J!%&g+8E)acSYqHP6{yvjc*{5;x7Z^j2wnB{$MEUJN z59_Aflqp4Fl~JS=y(z6QjIu&s=}md)Z4yjY0v;B^2+I^K0V5%S?~sV#dJQ!?)KTY= zItiOe;KY-+Kx-C4kjhBD2!zg*m09`~F3e^XvX^qfnK4F?57~8mRP=2+z0meJzP>hZ zxaK3m56WO>8KnU8h=s&T?N4(=J0rBaMxj$k5%7qn2(zF&_7j>a4eKTNfMecc?0!aU z)R!nLsgJPt6}sj%Iz|MH^d0xMxht5r08k)pB6I16gpvy{=m{F^jF1M51foku9Y_r@ z3L&ar^q>{!ikk=^E4~4r)Bo>4;y)F<-8G-nm4EPe4j2FciT{r|@8X z1P&1+r~F6da&}xvsqnt?e{=rk|Gs?x^8bAI`9DMSBYx?O2u@GD#XyB|qVi@a-)o}g z51k3SFw;lW5k=<^cnY@11jT@YMpLy8Dij`c60i?f7X>A0$bzP6Oa=J}hSe6~#u5B; zIBM8Kt>~km{bfp1`PZZ{)*R6zd;#h$Ih<-Iz4jFyRX6pK{a5bz8i7VCX%49!O1o(9 zywF>XM!g00(jplrRvyaSxKM;Vc)0qI<<(rC2|bRn#y%aigbd74Wz>ZnXqtf@O#)$K z7wKXSvuqDW+B|9z4@;HFK8cdPYuDr2@y>*S*Y>0{{A@RToRFfNx{1l7but{Aycn74 zw2konRyZ)@vpwb1Oh}g+LCm8@64y(S;*r0_E}7S5!GWC1nL86_A~qIVIC&u}Mrv-h zbnojEb-(9mR%A=g~B4d0qrY&>pO?HqsRX?x`tq%;k{ zEDMoXVxZ*RFipp=tslF*a)i_#zBH-H#1_k3H1!rEaj~heG$}m=xPU^1*>W5S1#xwu z9Gj{W448Q18lhv6xF7Le%Ht|mB2hSg+g9MBjTdJ{g!{tFv{0t+Y!CR;*9bgty<@l(@-F4 zwH<$kCTGO~E%jXM91>0y3f$uPE#%^GF|+Tf=$dSG%{|+$%iPGEJ{M7UzgRc4>kPAY zD9_Kh6;vIK3bWtO#!BKSGDJ8t@sS>y@(>lq%3r*v(ktfjN3ugIl1*y!LvK&Pb!5&S9Q<5f96_a)v7t?k3M>DqoXx}l)Ag3YE2kb zN>91L_-hkkjiu|B-^=m(P@OmkC^Oqx zw*_}H`xWk%J!g#dwZ(WNhkbsjucuUyyYsL&a5j&hh$yItBWv?#vSrf1Y(7}!dQtwN zFaD-_AAocgMz!Qcccp0z#e#*d1R$747BdvLcg+QxBM_( zReD$mY0*21+NGagjpSf*ipAc(CZy#R3IZ1%s{rJ9!MlxEO0u$GEl!$dcBUMeY4f|O zRtb5PwJm%3wX%hfyX-d9lKwR%)X$R1Leg^6l?M)U*;r0@R`+aA)KV~{rqOf7ZEq z#@EJ1*bdZA-rAD^Th5=ZF*^Ij31zP{{FwGmtqmSDXNXn};-vZs$E?&Ibsd1LHo#M9 z;f*tkj8S21PK~POlc;Fe6J-vr>eTA%hBjBOEhgcSPI%xfftJHIJM4L_L`^vL=2yLF za?_mU*AS{}^7R_R4btEE<2iur#@r3o-)Qs(!R^Nv z;2zGD$|vZ&TktChKj9FyA9bJ;^oRmVFg5JhnNun|sFyfM#ia@|pE02EUfO|m66zS= zC&2tf9q3&mn_@=d$}gN~?|r8&+Gy`bTPRwLVG57|kzWk!BtQr?B;@Esf*@F1iSQ~F zt}ag*wJ7iXn16jJ^Jhu0_2}9 z>3|M`Q9F_y?_-%44ldu{I>SQzkNl4%KlBlsF3w^=|BQYY6c6K{O`gPdqnz?hzI{9bz^sh_emuIoK zPz2x*S-x&W8wPP}S*5rr9-CB}w^xzZ8!0?H&NN~Snd%l`z-?*pL4|3>>kncfn29$Y ziDj3vw;ylq_x>kz{(~Zi!5A)Kzgu_;zx9Cr+fJ>2htB^k|6}B0^zWdVqN9K!^p6k( zdWRl{Mf9GYkdpU;*fo6Nk3x%XC1Y6oK{s0K^{tN1;rk-Y*mO}7))5&{GXCe|V1fw` zvqs|nAL{D>vzZL8-meU<#&5lp6?>pp2eL5u163>d$vGr6M_l#%Dpq$@_77-qR9qDY zU2O`~?352Gv@%EXsD8>Y%*DcTecI@#I^Hlk&kd>*1aR1H3yu3ezOmn@)0uYm1R^sA zeN~%3(K@&^R;muQ$D4G!C-5{ly-EyvEj7r&7@))Vj6*vPr=e$ABbWf%r5sZU`DiAE z)V~VrVqP(yID^@Zv<9%~oLA83MaY(7zvl5}x6LAA*2VgNCvwm^cB^L~&7kH{ zB~xUy!s+)+dXb@79wR5G;Z0|ek zGB{TiWAKhPNf%?~?wht(gR9u0o@?}VSwn{tNk6LUHK;ChD?P|=B-QV#dSwPmx%by_ zg<*0W7Bn%GxQjNhktQtu4z+{JS)Ka5H_=syx$FRc#HQN^i4xS|eQixp&e%_dmum+^YaOS(@WiJIZ8^m^>djq_F0;sedq(5p%aB{(rt*+{e;+7 zicQiKo9|wA8~Z~3_bCyk=P%G{D$<&z8qjpG1#{` z8No1+s({qyzFMevGra45wZ8i1zAMOgKfG(A;vd&JK${oAOJX(?=DkHM6-XTyEb9cs z*q))1&lk|C3dPL5vL)V9B`}uU4&r}e2$F}{dv%FAlzdmESsYJigFgO;_SQczbzACg zzW7^caRmDR8m9iQz4onn{=cPH(l#`3#BfJ@L7;Hb4(A;#i_|xw*hm8pl@$wy({$vZ z(vc@htS%aO;AA*DPcFmI^LY6_QGBZrdQQ1o0&@4~F!0}t7PmtX?V!?&b^$+Mrl-vP zdbfSd$^Ab*&aQwuc31Y0FUM44BG$`eAV-ATh)i%%3fpjm{UHrP5@2`J7&ns{sfzGT zTp>x+!l`7Vjl~CSAfL_{!<%9}c@ydb#F!kU1{y-bk$V6MaJe|G9%&o=BGwa*ET?z; zdTiOhv{@0D7N4t1SN=>VP{RIp%Iuj?bM_UP)_RGt^tO_B=DVz1(|27SpK+Ytp`Wgj zvtRwBev-?<5Pt!xvpEuS28i_d z+=;);iV&Z1_^LTOaFz-#AX`t=URY*Znm>=peAHW*`CYkmmPs~1v!JH1aMjlHBD&x! zgxCgl=~Zfy+`1^4JW9-=isxUT;~9*j5|`LI^cnh;Hu+XsQYxzuLTUQgmDmij6QDQd z^{hy^04SoGDz;BTEw0T>6WVDpDT=y=(S0WDx|1$Uda^bCD-?cSwn;gYvLOFw=_Q1U z{d;J9m7YnrztcmZA8iO#cjT?`F*T$Xjdy?p8egQSeEBH}`Ce2U^;ZDvwz3@?7gyfGn0NOFCf19quc-;_mGMPq z^h+Y_3My(B44zI2VW^H7zS{1xteT$%7FtXM8s=JbR|Q^RR+m2J$38Uok!WGFmo_h1 zYPfYuMAiky$j2oX5@e38DUHdJ5ea*4BL;K_xieCI_gq_q)pG}q=#H6j>zJnzL{h1WC~Rj}Y;w{v z_`!0 ze*!K;6{QNGF5Vk+l2+|luId9bN7Iql#$>+iI{;v z^i7M^#b~<}MhC!JfjJzLUeo*Etk5rHLA>e0wIs36kK(Pz{=B0&k!QNl3jJzuTw!_X!v+5CPCuANa^!t*Rl z&lY(NrqC1mTusmi%zseFKaIom3sX@2-?=OH??d~4tK{<^)banLK2?&s@sECd*q5Ae zHf9;sN#I=pBB7i}PD}OzaY4&BwL@iTqJByWkC0)7J8DfiLBURpnMlHhg4U2SW`{%- zh9E%|A&+1xvvum%XIo}zw4*TITh?eO<;7xEo~SRSwGSa8q|piJ04PJ?z2rF3+O62s zm&p4xtUHdJ6{_PZo$Xw6&&Z!B>9zD-gG})?!I?(rMxiemWe?$hoRnKQBoeWoWM&gp zYr*?#*3vuL3mG(wC(Y@Kv|_l z96}>pdfRogn=s%11#d>{E~sj`{GJck(UK4KDTLcX=jO2~p?t5w&{S|GK?DudImoqd zhZhM#Hyx~wB(>!J*sMDv=P=i6w1c_Gh}}O8G_A@!3=f*H+hTdQv(4p{$C}u{)NG-wP1WymomP3 zruP5H+6Bl;8hVJsA|~|#Q40&Qk|#4}%I=W{Kt?5J$S{ACNF5rU=~zcM_gJf) zy45c=Yo>;)RxBG=ZM9fe>9p#-tykAr6ReLeZ&82bIosP^lA;iOqK|by@jPu_y?uV& z@y$TZ_C5`%h&E+kJt-1=$m#w;OMehrbwZ`G+E zsXS_4T89Y(did)xz#a85ot_2Z410A0eE93&C5m%2^f;kyQo8IkKJ^1SKh0Q2jjOw> zZEr;7XF-!sd}=7t=SYHOwHY%OS?D4q*{jSms5?}GtG%=pM(zPFZEQ)=jBRFgkZzzbz{RGa3lRvC8CUlg?ZRnGx zY@3uXL+eQXH@(dk`MY%!3ralMLU0~O*GLN@FZ z0`qs_QPG)Vr~%2*1aoQ1$tirf4-`<73+vN8=tfXr-Goj-vy8UYrJ^U! zA8>lRlT}LG6QvjBYm;$m18_T?V7~6%ofn*83UF}+&fjxO^EMu5z&n>f4pJ1IJnTVh z_`Bgg#!ioRNOm@(Q!eDG%Pj3}nj_M|FFy3S*Y*(r2yPNfMFB7sx6`?~;mT7<)7OvA z*@#z@3ZY&u+GR?-@tyI^R$l78BJ^Zyk`qZ6!P-~^xRp{RY_&Oe+04(3MQ1;UF7*z8=FMQ#cGKSM@rf#X zu8e8ehY?@agn8lXI$2hqpbT{wW9B-N!fC;~VP5V@>^+$al5d3tX+2d^B+MEvtsIHN zut1xlUI4y`Ckp>r5cY{0?;(O4*rVu!3w^HiUJeTfB1C^IO1ovkE`jbz>lk9l$h{3K zio&2TmV^p46AKsf>zgGVI6kh~G-(SLPv(ZT*mbN&uG+IxK0ySa^KgE^cncZSUQ2z} z6(^8os;SM+XC#gw@mI7(a8iNf53|J}QX=|=##qllH_RouM^Uzwm48-~yfdM(eM z5+BvspNS4KozWx$Ia8M}L+UhzzNup$clESZEpo9&H?t zDpZCTRv%%o?p$szfx}YAtk}SqR9lGpu_#VQr+_h&!EF~ttPJW!wsj&(S{eQFv!h%x4Q(0=sj>St7nj>i{10k{H zTz`+)f?sTEN)>AR#Vg2@r4Ox~68%D-EO=!RVBR#WTu?65o<*-i`iL z-$*Ri}dPXYNyFq&-sO=B;Wd5gY7e=&lSX9dmjg@ zpx)@IIF)+Yk@XXI``7gmTaVbY z6U{bwVYNEjuj>ohGjb%|eR)0OlB<9lrJSM~d3q9Z-imer396ccU+g?TS2dV~aOjol zGkt7tpL_7$-i6pc!z~~7HcZqD|DUp(bkUflybd+iBc*9QUt&EV5*#rM^c)%0^yj#? zpJk;0%*pAB9*WGd=zIwV%4X2|WCHZY18IX#QoEiIp)O0ag~PD zry|-cO&Xyqstgk2NfFc49#>hIO{zKn$ff9t1w@fxPf4j*E1ckR`jKLy(x_^MIMox# z6^mx3h}CDs_C>_C=<+4u35Sdv! z5Fhi*(natbBWDQi+90nD>l!7m4dmth`$l8i(Dy}@<%4#BuyGJC_*pL3gMB+{bIX<> zV3%AQ>XReKk8u0I-i~!kVRMT5YU4d;PRl)EPD`E{8`qPHS~3htCexmk)0^%nJ`n|FComxf zp=>QMWg*Y8T?fYPG>~f}>7JXeh-%~+`_#6q%8BySANfh78Ec`{5<=Q|#cuFj4?f{b zaLGKO@{8dQvzV>G`pz34hLOkJPXx#;o_t%72yJ3wJZLopxsKsB1M+&JzxVq6v#T=LMG4&3++ zg6)TsRmCisOmnQG_h_$`6$eh34mpl#@AJDID?eiq(9Ej>SU5ORl>i%@p7bpxz# zLR#PjH%RIpTvxr$zi*NSw6ga@7iEJR)>gvs3~KdtM9PNGZtaxGR!#cCwUn;aT}on5 z6GTB|n1%70t}@?#16EZVT$&C9f`U=e9?JsLey3CMh8MOA2;|EL86=z*Buf@#XVx0X1nab>u7Eq2^b0uU^-xyA z5{$cVVkT_RWdw;knX2g?GG}-!Tjshh>Lkm>EqS3+Th+g)Yg_8*Ir|UWb?bO2M1KtB z@~l$EEZo;qo`*JMRBOd}DE!{`p7YCQxWxsMwuW%lQ(jvy65K8>d7DGXa=PGG`!ff0 zD;!XyK5)K2$Yx&9kiSHQ7uwSOkqh}p&`gOz;rbV}>*ork?-$fqt&z?xxYcvkD*QXX z*acnFNNY88Plh^SlUq>4WPJ%&6a|M1D3X=8kPV3V_nZd+YSUcFlLv25Cv3WEcYC1$ zlt1{H3H{P_3cXo?T#8R2>C|?ly77j~=_XKID_c00IXx>omicjRGgoAgPx7c}gaPg) zJ8UsX{b-O>C?i29^n3t75C*Sen38U)8g};8*V!9X;9ef}iJ|kWmq_l<@bU>?mw?df z%3SDFQ>qN<=fkx#KBg~vIo{7^{F`2s^7J`sZh9_YXqX4G`)pCYz|}AKT+q`i;ySp+ z-hP`vuW->Vaz%m?x1pJ^nXr8qq(Uh3tOS$P#)-(j_JFw`D|FSui@KV^kf{DSDGO_qL?oB zVed6%b9+GRfpd-M!`x{#fsQ}(dFYB%OO9WG-051C5&T9tl)kECv==dkn$kZN^ZJl9 z{;Usup+mXLAM#18pa1gzJ&1mvTlo7h=?+#fPYUgvgkbi^{hI2evjy2~i7Rismk0kz zg8R)0`nxOo`!M>uHqN^cjNf9&Rb#)uB`7~6d*x_CWQ)lBZyw|mxQP2$MB&wz2l`Y} zRxZ3MT{U_oT2i=jR5kiwh}K!#+q&_imYd%WDeT|NgI(kCU>IIr%c_Q|x+|i%qzP_e zLkQt~f@TYf=_5TCZVE)`;Kd;+Xosj4$IPSz=j=vl!M=k*IPncq0(w$E#akk)vxM>R zD7n2!L!l6nm`}CRJ|EPCyq)pDISs|6m_85m2FcvI_CWTZYs48`@+GkiP3&xSy8d3TIANF75&QTsIPi_yQ?BJw~_%K~0875$U{Ub7q=*#loR8eVTKPLGmJuhv@= zo1APw$g#nbv$D?THBEnj^d$f|{UrJe*+S1Fz0tQ^g7?6z$&GjRo&F4*-{f3@L@CQZ zWClkTZYQtM+qvGA_?4<~+oC5rdzkfoa ztu<9!ZqK-4Fg$SwjK47O!a;b!MtXPVa0<7v+!^#KgN>}9AbGnf`Hpdb>^byRmk|b^ z#oDqoNrtVk$BYxnykaKVAg)}!cqDp&mk{HdH#+~|O?yVLv%8@><1bqAfo2TdQ%=*xJFGqYPsY=TNXcD zC`D_GKm;5!o8n&o=PGf8q8wR>r8lIarZ^-moznvDz*zR6ROB4{7zCG!FVMp(*{BNwI&8nJYNBSlZh; zlYTQxm|2>;IvM@5R57u4FqQjen6R`n|993*MNR=l36;;Do6&_E6beUCDpy&Yu?*AoiE~Luf6|-935ieIX{0lseNL7!e~GO$2PcsXC_boAc?-qD7^tq;(sQ)7 zU9not!?iO6{f77G9<%p&&2D{MSISq`ryZkJT zN;x#uj|h@{Ps@C-DixWDd-(&vXu5hX$qBnwbKqWXHEa#4_ExF-hINu{DsM!4Z<0oI z=l!-K+9pp@F1juZofgOigL{XLt_Z+9Pib(#lz`1P(R_`6+oWjfYBACv2@{pyivIM~ z2qhA$iUNhAThn1Rui1o(Nl(nL?Ppw~^JW~XyPj<{46^H%`hqCR3wjh+53gWJjhb$8)w;I zenV_$m|f0>${1DTNYk|iJ<1d_T#Y*#sZOI&F0NK`7m9HF1}(B3mg}*gep`zBOFJ*P=~k?{qZ8Hj@4^K8mlCzzaS{XC>0HZw;!%wT z5sC%r*LRKCwCyk}UCG#>-U$mu>|_LgK_1vsD~Pp%22JdqeQnQ3yJnm(y|XoNXlms8 z{Qjez>NT!sDhe01EZNy=O4!YI!sZ4l{luqmifx|alCS>c zy5I=XT2F-6+`SK4?WW>cfYQdDvc8t-{B0WX%~8er5#C7hq?ZRh?4~ZY8&7l6Y}I$Z zF2(OXDAMbr1F?op~fm>^|BVIYde)GJwGt>^5|!n&$BuQcZmVY4WW zP&H(ZMJhu4!hpks!id6*!jN#89OVo@^LU6D?|EJaPD>Ad0n$o2-d560viYr}{Xof? zvja54M21}RH6XlQ%QeEiQ<;_M0{#Xv4HPx4mwo(LqIv@f;ad|L$vq{sR&Y;foNR}O z?X+=8Xq|k4m-U`H&%Y+`xxm~da{}QNgP)Dyqkv#I#_OcqC!5(rqu*mAuMgjMIaPY% zyFW)oWO-yT9)V(J+J{~H=@_Lu#TkyoBA*nGWzHn!i*4>Dgd|@JensjCf#MGxQ%pu~9pNKM%8l4(SPS?vR>h>{j_CELj{Mcsz^1$ek?Z^BDFM>@C zr76=d=v^;w96UrGNkQcSt#jWbx2J;4Lz+vr(+GM_Zm1Agf7@C!jqZ`0rDlgs0bNd0 zI)0&?^WAlhTvsbt1IP$3TyDsqp>>|D%k+t5%NqDag~)N8Q`C3hcgV$K=9QDd<~!MZ zbI1oKem1aEI+)H?<)jk`m7!GVh;37CyvCNpmf<+$>gZF*aaNtlh}S)C6aKAf-qK^q zmb*4^_$Z!in0>~##@Mhvg!-*vFdpS;L6yJbsbmwk z8M))pC5zK_7}cSV6c^nuQMt)vvui||;Nn@NWlldL+iDwH!VtwRF5&6sizE=}?uY@7X}PU)3wYAvg>gM% z!B%lT=<3dwOwM>-xs#@}sjG=0Nq!Wdm8^N6&KVp@(;qgOi_i5_U|*Cry(xM?l1SW~ zpS_7c=-pnWEW74fzzPGqyBDM^v=IxF_1w8b8Xmj!nAU%5aiv@rGrS{&A1Yyu1ZTvuU$U@Ph1~Y-oYqe7kBJ zynVR?nEr6*^Lf75h8cy6Hky8L6}4{girUX08S1Vd3sBFxp$t25&|Gc524H2Y7-fv% zOVQd~FHd)Lb7Fsw^gG+NL8H!Y=OyM9FTtGO00F#bPLi6%K;m;ow$%cRB9vmUsl-ih zS=GlDGz}GIpWhmLMozuFW(-UUloW!5x4{mx+O&rWtiT>rcgZM2`!Nt{-l0G`8Gs4) zd%f)J3$g=*Qqq<5MNr`yu2H0cnlE5IDf88Lz`HIWmX#JdJ$5-TUrSId#x@o^v-k0i z+;>W^-XW_^%27gb7!1oD{^s7c9L=4?VeBbyOd$vbB4NN&e-%Lv+ zB_@5EI}t)ae$`F!#Mde!9cPqMlD@^?e8_S4O~Oqir5e~ypilV33$r|;HGH#9Wtt)e z*BuDcIx(Jd#dOxEL0WjzjG#23o@ygEeMjU^QlmkuSVnR2S})RGoJx7YUuKm?e&Z5t zAR+SvLLed4C@&i%^*(Oe4h|WKWEKdDCnLRakn2fGLfx(ZMScSr87RMmPs-Yt(oTAj zpU60#m;xwR5CTq0gp|U|!RC`Rd*`Q;ky>ON=TJ@(qX9oVO600pUovEFRrHiGhGyV4$(=>bgJx;`t?I#rv?|DlND=N^A(2XUjcKRjp zR$}Eqore-BSk3gIiky@~{*TzZS-)c%(0KE|8QU=^J$`N7-NrE=36YdBl3FF2uBf!M zp27sy&9(BnFptHj#D}S>U~iZ;dHhVT)T}C@b#u~?HdTbfWZ8 z6ET=NFmuHQ!&%3U#Kj|d9jqrZKjv#&sJV)-*j9WZr1rzCfagg#;!?l z8wS_#JiIQXlXD-LtCvSDiMO50zDtX0CF(J!rDq(7&5OEk!Lg0)%cP55P|F{AED$S8+(ly+J@?+Lt=x)o3;KnE8jES@;h6 ziDzBixDEP+&Cc#xq0p_+`kBSwoa!`1?xFd58}FVDi+|!(_iQl=)s?3_t66P;a;2t~ zNOsGe@~!fnkOQO>$GT<9yZ03Df(;=a$X$$9icz`KN8pzd##7Kq($yN}N5Xo}YylYt zTYo-1A07sicsd-{FQ2x_^F|G7_{8QH8|5FMk)L&qukj8g*fK#|kMQ>N!EM=VT`) z34vU>5MWrpKk!ij33sAT(9DwEm;gny=5d`ugt5Lw)8C_045^m2gdn-UTUsY@u@0E$ z@PfIRDck?*wRk!pC6|JhE73m+7B_5EzMRi*6wkW(bLDkuBm}zMWsn4S{~ZS`Q{O#F z|E7+1pJVD}mjKp);2 z5SBwN0iZAZ4FwcqR+OnNmpB;ECeV+H1-UZ&zb;2!QLx3|FDO|H&z$i6l7!vdV}id0 zy5uv6f(Pnzi9im!rV|34{+Nvka@n&0^1HY(uE37G!eEtO$lovl`I{f#e_VHtg|#|* z#m8EldEjF%&uR4rI6O8G1)r9?%nj?lOWZcF!G8V^hRlD!P_S>_{OLF5-~aA_qWf>a zkb}J~y^E=>gN>1kX^E>@LLQY#mD5%iB5K#xZH9!qhLhX1UAZb3xsoE#t zr?L(ecI;p@zpU1uV(AQR6+<1g1(pyNu+#(vMltoI(kWI^CqrD2P}|ymB1>_=ghv=$ zD$RI92Dp+V^-@gg>hP*XEJPOiQpX5EW`Fyyp{}$G*>Zecm>#0CZxylaKoC&Y+ivXR z?k}52=!PHktW#)P%b*>y78ObeEjlS&B)pc$OUWJ;F~s;*{7iG8Dv?Xj#-{@T$KXo) zkc=F3H?rfi~0YE9=hDFzmRBqLZ>``z>36FA5w`A369J_MKU|IkKT=%1+xTB?F|=sDe0OxMQ_b4hh(onR7T8e@BV<|#s@KSO zuiJoWDPFE$n7QELzTv4%6Dy=eb?3*jRmG#bFP`9nZ`X!1k)sz+x6S{p_jvO@2J{u9 znA(RC*YCf@M_qG-z%^lv#^;R2^{Q5cH^}AK5h-V`Abd?Zxdi9@6f;$xnq=hLkS~ej zbq}7-0Yk1>OCj}w=!7HQ6k3Hnzlj92AyIsvte-EsLsvFj`dmQ^U|LP(p-=Otkcil= zu2d?K$ECYv{)!@97~9P2{)NX>fMjN3l~C*i@&5w<-!Z$wT9P>J`;ct)-5SOAf7~=4 zwl)lE4uJ3d^6&i5zs?UiX=nDEqKJK?o_d!v?Y#7sGWdc6Bd&6PySbU4`+vQ?F#%zvk9qT0%7%v%9hb3ay( z&@J_a&XtF5RO$^0X^d-Y#CA0RbRt6FtJ6BOK?{T(Ny^qEmX(?>NoVr)ri{Vxq|9P| z=}#5JHjxY6!8hIlu8ucJ_qAkbR!hnHxvnl7N{3VMSTq(hl4x+KEzL{!qzW2J9kUp+ zRJ`rVpW%?&b!ic8EsNTw;oN^Gn}auA!;xG4SODl$nyp$emSSc43I&abI;jPfLM1QT z~g+f&6{dt-ngir&5gvMIRqJ9aVpllVl` z%Ra-!x!}ZOz(fl{=I6`?UHj$7YO@B%6b-owRIeDHQPIrhlQq{wRUYv(eWSsq9@~q< zB+ozPA5$_eeHTHb@7cxN? z*>JnXxb1c~|8dmAc{55Y+wMsWUu1C|hjLVR%K}uOB_H88LE>W5AGa8F9uYQ0{JTmf zKjX(y2{u2m&5HN}iM}ciwO9>)M@Rb1SlSFRn#oeOvZ|GH;}B#b5$L$d-*9})xPe7P ztEszu9@1eZq+U|@LcOpcq`6_{01tF6OJX7a{J2OI2j6ZEA3Qmw%(^X;QLM5A$ zAj=%+g^8u(nIqY~ViGOBrXwGaCzLkv4A03);Yf5~rMwue1U`M?2P}(u!*NZXU7%+A zOq=q8q8VY569SR$Q)B@7`CvQGs9opEH039H&Zh_#&&{}X!x_4jPImM>y+Ob-GZ=Fn zz^;_8*)2Mb@tg})$1c-ady?Z*dO_kY%BU}}*=Px@UQ){;q_ul3V5G79Nm<7(Gyw-} zT{Nhks53B@7qj6~KqNvGqXACku{$_FrQ5qYEsWNWBNx&!+d2_ZhD8^^^E z35q$22aZHiRp~>hNwN`A+P;iy_lu<1n8Pv+C2cTg$;xO`kEsv{$z1co(lr#z^;)Ibg~3W_&L zeu*-M?;B>R9EjOi_$9G3jHe4HnQ9^>HoZvp2$$7@NFI9&Cu)ScQ~u@4u@5C(87f1$ zOY{ksfBGRAwzc3Xqq&>&C)YRP7s?rn}Fd7lQvd`hU<-^lc%< z%Qt^G@b>{t{=ahcnzlA__5fEKQ&CfA6DLat7kj6FiK>$R`$NU$I}rRkgOvR5X7TB9 z%cObaxLrkgu=O8oCFx?475k7y-;#0IhxF^kRg0-65-lqICXS&)UGII}Y|9_Ie` zr?nGW*6osA#R)gKxB(etYjr%d&OgwSio9B{SkKh+d_4mnVDPzWmbk4}&l!&Wyq{O> zAyGZk(;9URP#K$MX;eXN=S=jFDLKw_mt47h%PtzKXcZg6KkR&6lw8H~ua{xE4)B)R zoB4Lg2TaK7mT!L?(toFI9u8M26q?cGivjh?3mG3$W+@~c!Pb@F`^M!g>696Q*#5i zmxaAe+*9oso6Cc}P1aL(*>#Umn=S!EF_~Olq3{YNMXuv*a9&qI!I7e+$3P|`JWkz=U}c& z&1ck_g0zko<*Jy&182i+TE4bvno(Ks&+gCusy9OjWaL)BV^ zYMUeJ2A#tfTEE3MjUssX>O?jV(cQiCv)aOGt`6aOJd59+odgh`0wm6nm3q$qj`I1e zO{PQeUAL`{rib(H8Qnmp;~!3%*xhh$=Uw+5^3EpXV^aDJvMJn{_UiCnpwG4qH{w$w zKY1Ab^oWz0#n}Vv=^aZ?=T)TC|2s)zcSEi4q|@p#4I<&N!L;Yv(>1VUkGVHZdz0p| zfp~TOp(oNc`t$^M6G+6*I&{^xBoX$^xBX=pA#nSl5ca%E_h}QMZ1*OW_N?k-7J-k? zsqHhv=w}o`ANHIS?QbOezJ%z{GNiHja21B=^RYbg{&4_GFLy9cN-xJQ%Hj8O06~I@_fR);q6E4}c7OClH?zMaLpO7HLG|{~;?f&7 z{oa(_pmNg*e*387u#1+F=^e!I&LgEXAmA=;C4n&*NvhGfh#S0AYBeQCSis0g{5$FY3f{eDNMYKi4Z@I9V2 zi!t&&(Y2|iGgz#>@H!$AyS0I=-ds&>yPZk#KNE6xo=Ffr0Pt7k-1D?Dj~)A4Rs46> zp6ts+^D&mlibJh1-VG9tNoQEk8lqVfOuv3qSN=iQKq6^a&jKRxwnGNK>*THo9s`>( z8CcH>B5}vT$+lA`5&eGaws}N}wnH`idkgu*Ugm?PuAkPh?V(barmbCRWo>Z`vd_2R zt)xyf$s6r2vAT`H3>-J66-4%b-yFlbh7($`jk}1*y#Q5Ru?)TJL!=^qE)(6ycsvm< zZ^t?h`C#X}NtF-eFWVOqo)Y^Ko^bXkMN)8#D~YI?57l3QIQ|R|A)21oUnhCPIyMna zY$k!Oa-uVU90u$5&L$vW-5QDT8$+&tNWdxCj*Y^0r|W$mqm!~*nuu>WAUKe3eJ62$OV;t5dJ?!hL}`6r zOvv+epsOvD^qYx(4a)NGukB?$F!1QURk}VhtQv z7KvPe3C5K8Sc{o8tf=%!#=5&4Yq^b$T_oXwmRyirNk<_!GW0V}c?pe8H873k&yGH6 ze;ME62?C-%i}8|+{x!p9LP3&5!ScCF!NJH5?vSWOyJoopK}!)8JsID8R$#3YR_hMS zz`uefdinKk3r){F*wl?J6^^Da;QkT$G-o>zXp3ZRm1GC;pjp_i2I9E_s8BWcE6C{L zt`6CimWOTxr?r@fptYg>UjF-)%EAN}u-#|qI6S;`iaH8+bGIz&O}})I>1a-ao3S73VzZ$6TrV43oXurn*}+MYk<`)NVfoZfz{u;Y=T<^y zly>XHLZYHdx!2=r8iQj4x#-|%eiVd${(q#MV{@hPx28Mp*!GTX+qTuQZKGp#*s;@b zc5E9R+je%Gjyd_)nW|Ig&D7LP)$s37?%V@I);{2i$NBc7Tr*K8+}5{evu~5I!GW=$}jQ$zQ~?B&RUY0 z4GbjJWrgqcLD&wV;JYO+_x$gu7Yf9-s+lAwP#&0S#tGa*N~Qoe&+iek9ZS$mq-1dO zNjB&H*5)QO3r&0s0y8*uSoI`Gv@rx(pT3wynBO{^9iaa1g`Cxw9T&Dvs6ffJ%@w1{ z*8`-@hlze>;8H%}z3C$SCFvpD$zL3MdFiDM>`G0Z=URf!%xKn;hvWpr&LDDu-dma( z?dJ8-@Tu-?OJIHU(8a;=$uxZ}WB5nTr+k#&eg<*MoP+`9&ma&(*+ZY9>{lzrI6B1; z{L?j6hziCq84`nrXp%rU>Xyl%TMESlGr35V44vt0wvlaNI@hX(OQJwO=2XCiyjYDU z6redjy%aX6jkz#P<}uj#)J&3-^p_Qz{^WNfV|VSopPD~^l25WM!*(whwzU;#d<+|{ zFU9yTovoRSL5Empdz$T(BHW+DB#inT^*HAgvSa5B|7@ z8|4VNm=nfZdBQvQpb~QwmaLT3J6~Po+9>}fD-|@f;G=2{Cje^=xljO>6rMOE- z76-Yt*=?RnO6h89q|%*)?cO(pGko&LhEo)ZDCzZC6(X$J*9!L@%q&fT3f7$*j*>a1 zeQLZB3+xL?8tZ7XcGXg1x|RZ7_hNQbGPg}Ajr+Xh*mJi!7Bh2{@`#e?u%?+5C|UDF zf^;{+ceTGF*Byf+T{M6UL&37e+x;%yqg zt@_g^st^+!iCeys-4&-c*&g#W4s8tM_Pq#usd1xOk*w&6-ouKO99Y^jvI-LnW0h+r znQb;|6dY1z$no>`XU3g^N5~UCX}tonC9=Z zY?~~U!X`L`M13OFd=&na(4%Lefhd02XH{Doutr-Ym~@0S<*MQOyH#ofz|a zXu=TwPrTW^Xn2h!AU%xzH!DD)97stEK!n$-vhI^KY-wQBHk0~(>=5a_(}f4_F7oSV zTeDR>6S=8GBuYo7n^tXIb9b?#-0hQI3x)Fl@ILz<7xClBg3-(CQ4{hk1l7Z3)C~}Z zR)A`q9DHUOj><1gISXa44lW33xD`vTWK>Cna?=n>MSI zUpQ0c9eEn=K0R!t#HRnOZMh=CtEHQ9jRfbpCeGrehD*!_k#s7DAaXB)|OvT5uKAF9GVFWR2$aDeLqJ z=`aK5qOn#mD}?_v>h<@;UhR)Q^f`Ji>+>VcF5NZzBh#{PmW1TcwizV9`+b5kM<3-R@MM;L>jS`7FuZ>T`5tI8eT&cs2 z$hP%4d9RaDCt_G{U&iSWGO<~wmwO~MdS(hs@XKf7Dzftf8MfCh8o~0!-)_=rArea3 zA1ffVvAv-N=7#lrF^bBM+64NX0Gh)^>N$~7xahWL7tB?qy1wG6gljdMk;hKC1B04} ztT$+#3xk!{T9jL(#WB|==$?E24k^a8Ev)jhMXZ}+rWN$&?HbtVp5=BeAe#yT=bz>6 zG)(t9dg&B8 z5tz7!YQ#sY{3r!0eEuCWtFbGq&5mBYmUWkaN?)>Q4H2Cxf0pp-BeE_UaSW=94Plb2 z@X3vr&?>)2NiIL(QgTeFhgFQK4|x&yUr#|%puT*{wP zh>8joZ@e`W;xxWInOVz(bP^-xnjtvq0#|L~uzo!bKl7<1pwVBbzKi$p=_VU}!=|vD zvK$uSz)Vd+MG7?w=wS1mJvqm&!bO+ovNwx6vOXZWhoU}Hz&SqTcF>4r5W^J*W&Tt) z-GrpuJbLvFz-EzzKFYQ4p?fpBTarl|PD1YhJ5O{lf`1SJ(X=5Xgfpd--fI3lc@GxI zov&f7Y-K8DuCLHpKC_4!3J&b|wGn=FG4 zKnV^loIFcr2SIt=%3N!6owb;$AZ~&e6ZV-(~mVLyf{i*7xCClo78gJj2*)ft__ft8sQ&{tP0slW8dEc ziQ0A*Z8o`jlU$478o!u}OzZUb4yJfs5Y9x^4sQ2c=R-SDp^4T*S#z#F^CYFuJ}UIur#mQ_JbM z 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%0A5o3N7@>ZLfx$1jhZ(q#U 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�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

KY`Z9CG}8iJ}8(CsbngOD#4 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 literal 0 HcmV?d00001 diff --git a/ivysettings.xml b/ivysettings.xml new file mode 100644 index 0000000..1533819 --- /dev/null +++ b/ivysettings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/kernels/collembola.cl b/kernels/collembola.cl new file mode 100644 index 0000000..bfb53aa --- /dev/null +++ b/kernels/collembola.cl @@ -0,0 +1,123 @@ +/** + * pre-OpenCL 1.1 compatibility macros +*/ + +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_add(p, v) atom_add(p, v) + #define atomic_inc(p) atom_inc(p) +#endif + +typedef struct { + int width; + int height; + + float growthRate; + float diffusionRate; + float diffusionThreshold; + float mortalityRate; + + int speciality; +} CollemWorld; + +#define PREF_FOREST 1 +#define PREF_CULTURAL 2 +#define PREF_CITY 3 + +#define MATCH_PREFERENCE(pref, type) \ + ((pref == PREF_FOREST && (type == 6 || type == 7 || type == 8 || type == 10)) \ + || ((pref == PREF_CULTURE && (type == 3 || type == 4 || type == 5)) \ + || ((pref == PREF_CITY && (type == 1) + +/* +kernel void collembola(global int * patches, int width) +{ + const int i = get_global_id(0); + const int j = get_global_id(1); + + //patches[i * width + j] = -patches[i * width + j]; + + // Diffusion + +}*/ + +#define CELL(world, values, x, y) (values[x * world->width + y]) +#define OVERFLOW(world, values, x, y)(values[(x + 1) * (world->width + 2) + 1 + y]) + +kernel void newArrivals( + global CollemWorld *world, + global int *populations, + global int *patchesOwners, + global int *plotsPopulations, + global int *plotsSurfaces) +{ + const int i = get_global_id(0); + const int j = get_global_id(1); + + const int plotId = CELL(world, patchesOwners, i, j); + if (plotId == -1) return; + + CELL(world, populations, i, j) = + CELL(world, populations, i, j) + (world->growthRate * plotsPopulations[plotId]) / plotsSurfaces[plotId]; +} + +kernel void reproduction( + global CollemWorld *world, + global int *populations, + global int *patchesOwners, + global int *plotsPopulations) +{ + const int i = get_global_id(0); + const int j = get_global_id(1); + + const int plotId = CELL(world, patchesOwners, i, j); + if (plotId == -1) return; + + atomic_add(plotsPopulations + plotId, CELL(world, populations, i, j)); +} + +kernel void diffusion( + global CollemWorld *world, + global int *populations, + global int *overflows, + global int *newPopulations) +{ + const int i = get_global_id(0); + const int j = get_global_id(1); + + // Determine if we have something to diffuse + + /*if (CELL(world, populations, i, j) > world->diffusionThreshold) { + OVERFLOW(world, overflows, i, j) = CELL(world, populations, i, j) * world->diffusionRate; + //OVERFLOW(world, overflows, i, j) = 0; + }*/ + OVERFLOW(world, overflows, i, j) = CELL(world, populations, i, j) * world->diffusionRate; + + barrier(CLK_GLOBAL_MEM_FENCE); + + int surplus = OVERFLOW(world, overflows, i + 1, j) + OVERFLOW(world, overflows, i - 1, j) + OVERFLOW(world, overflows, i, j - 1) + OVERFLOW(world, overflows, i, j + 1); + //int surplus = 0; + + CELL(world, newPopulations, i, j) = CELL(world, populations, i, j) + surplus / 8.0 - OVERFLOW(world, overflows, i, j); + + barrier(CLK_GLOBAL_MEM_FENCE); + //CELL(world, newPopulations, i, j) = world->width * 1000 + world->height; + //CELL(world, newPopulations, i, j) = surplus; +} + +kernel void death( + global CollemWorld *world, + global int *populations, + global int *patchesType) +{ + /*const int i = get_global_id(0); + const int j = get_global_id(1); + + int patchType = CELL(world, patchesType, i, j); + + if (patchType == TYPE_ARTIFICIAL) { + CELL(world, populations, i, j) = 0; + } else if (patchType != world->speciality) { + CELL(world, populations, i, j) -= CELL(world, populations, i, j) * world->mortalityRate; + }*/ +} + diff --git a/kernels/lock.cl b/kernels/lock.cl new file mode 100644 index 0000000..b1fc3ca --- /dev/null +++ b/kernels/lock.cl @@ -0,0 +1,23 @@ +// Locking + +void lock_p(global int * lock, int id) +{ + while (atomic_cmpxchg(lock, -1, id) != id) {}; +} + +void lock_v(global int * lock, int id) +{ + atomic_xchg(lock, -1); +} + +#define LOCK_P(lock, id) while (atomic_cmpxchg(lock, -1, id) != id) {} +#define LOCK_V(lock, id) while (atomic_cmpxchg(lock, id, -1) != -1) {} + +kernel void locktest( + global int *lock, + global int *counter) +{ + LOCK_P(lock, get_global_id(0)); + *counter = *counter + 1; + LOCK_V(lock, get_global_id(0)); +} \ No newline at end of file diff --git a/kernels/mior_model.cl b/kernels/mior_model.cl new file mode 100644 index 0000000..4c95ef5 --- /dev/null +++ b/kernels/mior_model.cl @@ -0,0 +1,342 @@ +/** + * DATA STRUCTURES + */ + +typedef struct MM { + float x; + float y; + int carbone; + int dormance; +} MM; + +typedef struct OM { + float x; + float y; + int carbone; + int lock; +} OM; + +typedef struct MiorWorld { + int nbMM; + int nbOM; + int RA; + float RR; + float GR; + float K; + int width; + int minSize; + int CO2; + int lock; +} MiorWorld; + + +typedef struct RandomGen { + ulong a; + ulong b; + ulong c; +} RandomGen; + + +/** + * CONSTANTS + */ + +#define OFFER_INVALID -1 +#define OFFER_UNINIT -2 + +/** + * HELPER FUNCTIONS + */ + +// Compatibility macros for OpenCL <= 1.1 + +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_cmpxchg(p, o, v) atom_cmpxchg(p, o, v) +#endif + +// End of compatibility macros + + +#define LOCK_P(lock, id) while (atomic_cmpxchg(&(lock), -1, id) != id) {} +#define LOCK_V(lock, id) while (atomic_cmpxchg(&(lock), id, -1) != -1) {} + +// RNG + +void rng_init(RandomGen *r, long seed) +{ + r->a = seed; + r->b = 0; + r->c = 362436; +} + +unsigned long rng_rand(RandomGen *r) +{ + const long old = r->b; + r->b = r->a * 1103515245 + 12345; + r->a = (~old ^ (r->b >> 3)) - r->c++; + return r->b; +} + +float rng_rand_01(RandomGen *r) +{ + return (rng_rand(r) & 4294967295) / 4294967295.0f; +} + +void shuffle_indexes(global int * array, int size, RandomGen *r) +{ + for (int i = size - 1; i >= 1; i--) { + const int j = rng_rand_01(r) * (i + 1); + + const int t = array[j]; + array[j] = array[i]; + array[i] = t; + } +} + +void shuffle_help(global int * array, int size, RandomGen *r) +{ + for (int i = size - 1; i >= 1; i--) { + const int j = rng_rand_01(r) * (i + 1); + + const int t = array[j]; + array[j] = array[i]; + array[i] = t; + } +} + + +kernel void shuffle_test(global int * array, int size) +{ + RandomGen rng; + rng_init(&rng, 42L); + + for (int i = 0; i < size; i++) { + array[i] = i; + } + + shuffle_help(array, size, &rng); +} + +// Cleanup + +void topo_clean(global int * targets, int size) +{ + for (int i = 0; i < size; i++) { + if (targets[i] != OFFER_INVALID) { + targets[i] = OFFER_UNINIT; + } + } +} + +/** + * KERNELS + */ + +kernel void topology( + global MM *mmList, + global OM *omList, + global int *topo, + global MiorWorld *world) +{ + const int iMM = get_global_id(0); + const int iOM = get_global_id(1); + + //float dx = omList[iOM].x - mmList[iMM].x; + //float dy = omList[iOM].y - mmList[iMM].y; + //float distance = sqrt(dx * dx + dy * dy); + + //if (distance <= world->RA) { + // topo[iMM * world->nbOM + iOM] = OFFER_UNINIT; + //} else { + // topo[iMM * world->nbOM + iOM] = OFFER_INVALID; + //} + + const float dx = omList[iOM].x - mmList[iMM].x; + const float dy = omList[iOM].y - mmList[iMM].y; + const float distance = hypot(dx, dy); + + if (distance <= world->RA) { + topo[iMM * world->nbOM + iOM] = OFFER_UNINIT; + } else { + topo[iMM * world->nbOM + iOM] = OFFER_INVALID; + } +} + +int live_breath( + int iMM, + global MM * mmList, + global OM * omList, + global int * targets, + global MiorWorld * world, + global int *omIndexes) +{ + global MM * currentMM = mmList + iMM; + global OM * currentOM; + + const int totalNeed = currentMM->carbone * world->RR; + int remainingNeed = totalNeed; + const int nbOM = world->nbOM; + int i = 0, iOM = 0; + int offer, consum; + + while (i < nbOM && remainingNeed > 0) { + iOM = omIndexes[i]; + + if (targets[iOM] != OFFER_INVALID) { + currentOM = omList + iOM; + + offer = world->K * currentOM->carbone; + consum = min(offer, remainingNeed); + remainingNeed -= consum; + } + + i++; + } + + if (remainingNeed > 0) { + currentMM->dormance = 1; + } else { + currentMM->dormance = 0; + remainingNeed = totalNeed; + + i = 0; + while (i < nbOM && remainingNeed > 0) { + iOM = omIndexes[i]; + + if (targets[iOM] != OFFER_INVALID) { + currentOM = omList + iOM; + + LOCK_P(currentOM->lock, iMM); + + if (targets[iOM] != OFFER_UNINIT) { + offer = targets[iOM]; + } else { + offer = world->K * currentOM->carbone; + } + + consum = min(offer, remainingNeed); + + remainingNeed -= consum; + currentOM->carbone -= consum; + + LOCK_V(currentOM->lock, iMM); + + LOCK_P(world->lock, iMM); + world->CO2 += consum; + LOCK_V(world->lock, iMM); + + targets[iOM] = offer - consum; + } + + i++; + } + } + + return remainingNeed; +} + +int live_grow( + int iMM, + global MM * mmList, + global OM * omList, + global int * targets, + global MiorWorld * world, + global int *omIndexes) +{ + global MM * currentMM = mmList + iMM; + global OM * currentOM; + + const int totalNeed = currentMM->carbone * world->GR; + int remainingNeed = totalNeed; + const int nbOM = world->nbOM; + int i = 0, iOM = 0; + int offer, consum; + + while (i < nbOM && remainingNeed > 0) { + iOM = omIndexes[i]; + + if (targets[iOM] != OFFER_INVALID) { + currentOM = omList + iOM; + + LOCK_P(currentOM->lock, iMM); + + if (targets[iOM] != OFFER_UNINIT) { + offer = targets[iOM]; + } else { + offer = world->K * currentOM->carbone; + } + + consum = min(offer, remainingNeed); + + remainingNeed -= consum; + currentOM->carbone -= consum; + + LOCK_V(currentOM->lock, iMM); + + currentMM->carbone += consum; + } + + i++; + } + + return remainingNeed; +} + +kernel void live( + global MM *mmList, + global OM *omList, + global int *topo, + global MiorWorld *world, + global int *omIndexes, + long seed) +{ + int iMM = get_global_id(0); + global int * targets = topo + iMM * world->nbOM; + global int * indexes = omIndexes + iMM * world->nbOM; + RandomGen rng; + + for (int i = 0; i < world->nbOM; i++) { + indexes[i] = i; + } + + if (seed != 0) { + rng_init(&rng, seed + iMM); + shuffle_indexes(indexes, world->nbOM, &rng); + } + + // BREATHING + live_breath(iMM, mmList, omList, targets, world, indexes); + + if (mmList[iMM].dormance == 0) { + + // GROWTH + live_grow(iMM, mmList, omList, targets, world, indexes); + } + + // CLEANUP + topo_clean(targets, world->nbOM); +} + +kernel void autolive( + global MM *mmList, + global OM *omList, + global int *topo, + global MiorWorld *world, + global int *omIndexes, + long seed) +{ + LOCK_P(world->lock, get_global_id(0)); + int CO2 = world->CO2; + LOCK_V(world->lock, get_global_id(0)); + + int oldCO2 = -1; + + while (CO2 != oldCO2) { + live(mmList, omList, topo, world, omIndexes, seed); + + oldCO2 = CO2; + LOCK_P(world->lock, get_global_id(0)); + CO2 = world->CO2; + LOCK_V(world->lock, get_global_id(0)); + } +} diff --git a/kernels/mior_model2.cl b/kernels/mior_model2.cl new file mode 100644 index 0000000..fa600bd --- /dev/null +++ b/kernels/mior_model2.cl @@ -0,0 +1,250 @@ +/** + * DATA STRUCTURES + */ + +typedef struct MM { + float x; + float y; + int carbone; + int dormance; +} MM; + +typedef struct OM { + float x; + float y; + int carbone; + int lock; +} OM; + +typedef struct MiorWorld { + int nbMM; + int nbOM; + int RA; + float RR; + float GR; + float K; + int width; + int minSize; + int CO2; + int lock; +} MiorWorld; + + +typedef struct RandomGen { + ulong a; + ulong b; + ulong c; +} RandomGen; + +/** + * HELPER FUNCTIONS + */ + +// Compatibility macros for OpenCL <= 1.1 + +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_inc(p) atom_inc(p) + #define atomic_add(p, v) atom_add(p, v) + //#define atomic_cmpxchg(p, o, v) atom_cmpxchg(p, o, v) +#endif + +// End of compatibility macros + +//#define LOCK_P(lock, id) while (atomic_cmpxchg(&(lock), -1, id) != id) {} +//#define LOCK_V(lock, id) while (atomic_cmpxchg(&(lock), id, -1) != -1) {} +#define store_CO2(world, val) atomic_add(&(world->CO2), val) +#define val(arr, iMM, iOM) arr[iMM * world->nbOM + iOM] + +// RNG + +void rng_init(RandomGen *r, long seed) +{ + r->a = seed; + r->b = 0; + r->c = 362436; +} + +unsigned long rng_rand(RandomGen *r) +{ + const long old = r->b; + r->b = r->a * 1103515245 + 12345; + r->a = (~old ^ (r->b >> 3)) - r->c++; + return r->b; +} + +float rng_rand_01(RandomGen *r) +{ + return (rng_rand(r) & 4294967295) / 4294967295.0f; +} + +void shuffle_indexes(global int * array, int size, RandomGen *r) +{ + for (int i = size - 1; i >= 1; i--) { + const int j = rng_rand_01(r) * (i + 1); + + const int t = array[j]; + array[j] = array[i]; + array[i] = t; + } +} + +/** + * KERNELS + */ + +kernel void topology( + global MM *mmList, + global OM *omList, + global int *topo, + global MiorWorld *world, + global int *totals) +{ + const int iMM = get_global_id(0); + const int iOM = get_global_id(1); + + const float dx = omList[iOM].x - mmList[iMM].x; + const float dy = omList[iOM].y - mmList[iMM].y; + const float dist = hypot(dx, dy); + + if (dist <= world->RA) { + val(topo, iMM, iOM) = 0; + atomic_inc(totals + iOM); + } else { + val(topo, iMM, iOM) = -1; + } +} + +kernel void carbon_scatter( + global MM * mmList, + global OM * omList, + global int * topo, + global MiorWorld * world, + global int * totals) +{ + const int iOM = get_global_id(0); + const int total = totals[iOM]; + + if (total == 0) { + return; + } + + const int part = (world->K * omList[iOM].carbone) / total; + int totalCarbon = 0; + + for (int iMM = 0; iMM < world->nbMM; iMM++) { + const int offer = val(topo, iMM, iOM); + + if (offer >= 0) { + val(topo, iMM, iOM) = part; + totalCarbon += part; + } + } + + omList[iOM].carbone -= totalCarbon; +} + +kernel void carbon_reduce( + global MM * mmList, + global OM * omList, + global int * topo, + global MiorWorld * world) +{ + const int iOM = get_global_id(0); + int totalCarbon = 0; + + for (int iMM = 0; iMM < world->nbMM; iMM++) { + const int part = val(topo, iMM, iOM); + + if (part >= 0) { + val(topo, iMM, iOM) = 0; + totalCarbon += part; + } + } + + omList[iOM].carbone += totalCarbon; +} + +kernel void live( + global MM *mmList, + global OM *omList, + global int *topo, + global MiorWorld *world, + global int *omIndexes, + long seed) +{ + + int iMM = get_global_id(0); + global int * targets = topo + iMM * world->nbOM; + global int * indexes = omIndexes + iMM * world->nbOM; + RandomGen rng; + + for (int i = 0; i < world->nbOM; i++) { + indexes[i] = i; + } + + if (seed != 0) { + rng_init(&rng, seed + iMM); + shuffle_indexes(indexes, world->nbOM, &rng); + } + + + const int breathNeed = world->RR * mmList[iMM].carbone; + int remainingBreathNeed = breathNeed; + int iOM; + + // Check breath requirement + for (int i = 0; i < world->nbOM; i++) { + iOM = indexes[i]; + + if (val(topo, iMM, iOM) >= 0) { + remainingBreathNeed -= val(topo, iMM, iOM); + + if (remainingBreathNeed <= 0) { + break; + } + } + } + + // Go into dormancy if breath requirement is not met + if (remainingBreathNeed > 0) { + mmList[iMM].dormance = 1; + return; + } else { + mmList[iMM].dormance = 0; + } + + // Actual breathing and growth + remainingBreathNeed = breathNeed; + const int growthNeed = world->GR * mmList[iMM].carbone + breathNeed; + int remainingGrowthNeed = growthNeed; + int consum = 0, growth = 0; + + for (int i = 0; i < world->nbOM; i++) { + iOM = indexes[i]; + + int offer = val(topo, iMM, iOM); + + if (offer >= 0) { + // If breathing phase is not finished + if (remainingBreathNeed > 0) { + consum = min(offer, remainingBreathNeed); + atomic_add(&(world->CO2), consum); + remainingBreathNeed -= consum; + offer -= consum; + } + + consum = min(offer, remainingGrowthNeed); + remainingGrowthNeed -= consum; + growth += consum; + offer -= consum; + + val(topo, iMM, iOM) = offer; + } + + if (remainingGrowthNeed <= 0) { + break; + } + } + + mmList[iMM].carbone += growth; +} diff --git a/kernels/mior_model_csr.cl b/kernels/mior_model_csr.cl new file mode 100644 index 0000000..9e04e28 --- /dev/null +++ b/kernels/mior_model_csr.cl @@ -0,0 +1,310 @@ +/** + * pre-OpenCL 1.1 compatibility macros +*/ + +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_add(p, v) atom_add(p, v) + #define atomic_inc(p) atom_inc(p) +#endif + +/** + * DATA STRUCTURES + */ + +// Microbial colony +typedef struct MM { + float x; + float y; + int carbon; + int dormancy; +} MM; + +// Carbon deposit +typedef struct OM { + float x; + float y; + int carbon; + int lock; +} OM; + +// Environment +typedef struct MiorWorld { + int nbMM; + int nbOM; + int RA; + float RR; + float GR; + float K; + int width; + int minSize; + int CO2; + int lock; +} MiorWorld; + +/** + * HELPERS + */ + +#define CAPACITY(store) store[0] +#define NTH_LIST(store, index) (store + 1 + index * (CAPACITY(store) + 1)) +#define LIST_SIZE(list) list[0] +#define LIST_GET(list, index) list[1 + index] +#define LIST_SET(list, index, val) list[1 + index] = val +#define LIST_APPEND(list, val) LIST_SET(list, atomic_inc(list), val) + +/** + * KERNELS + */ + +/* + * Dimensions expectations + * + * Global : nbMM, nbOM + */ +kernel void topology( + global MM mmList[], + global OM omList[], + global MiorWorld * world, + global int mmCSR[], + global int omCSR[], + global int topo[]) +{ + const int iMM = get_global_id(0); + const int iOM = get_global_id(1); + + const float dist = hypot( + omList[iOM].x - mmList[iMM].x, + omList[iOM].y - mmList[iMM].y + ); + + // If the two agents can interact + if (dist <= world->RA) { + /*global int * list = NTH_LIST(omCSR, iMM); + LIST_SET(list, atomic_inc(list), 0); + + list = NTH_LIST(mmCSR, iOM); + LIST_SET(list, atomic_inc(list), 0); + */ + LIST_APPEND(NTH_LIST(omCSR, iMM), iOM); + LIST_APPEND(NTH_LIST(mmCSR, iOM), iMM); + +#ifndef NOTOPO + topo[iMM * world->nbOM + iOM] = 0; +#endif + } +} + +/** + * Dimensions expectations + * + * Global : nbOM + */ +kernel void scatter( + global OM omList[], + global MiorWorld * world, + global int mmCSR[], + global int parts[]) +{ + // Retrieve current OM index + const int iOM = get_global_id(0); + + // Retrieve list and number of accessible MM (CSR) + global int * mmIndexes = NTH_LIST(mmCSR, iOM); + const int nbIndexes = LIST_SIZE(mmIndexes); + + // Compute the carbon part to allocate to each MM + const int carbonPart = (world->K * omList[iOM].carbon) / nbIndexes; + + // Allocate parts + for (int i = 0; i < nbIndexes; i++) { + const int iMM = LIST_GET(mmIndexes, i); + parts[iMM * world->nbOM + iOM] = carbonPart; + } + + omList[iOM].carbon -= nbIndexes * carbonPart; +} + +/** + * Dimensions expectations + * + * Global : nbMM + */ +kernel void live( + global MM mmList[], + global MiorWorld * world, + global int omCSR[], + global int parts[]) +{ + // Retrieve current MM + const int iMM = get_global_id(0); + global MM * currentMM = mmList + iMM; + +#ifdef COPY_PARTS + int localParts[NBOM]; + + for (int i = 0; i < NBOM; i++) { + localParts[i] = parts[iMM * world->nbOM + i]; + } +#endif + + // Compute needs + const int breathNeed = currentMM->carbon * world->RR; + const int growthNeed = currentMM->carbon * world->GR; + + // Retrieve list and number of accessible OM (CSR) + global int * omIndexes = NTH_LIST(omCSR, iMM); + const int nbIndexes = LIST_SIZE(omIndexes); + + // BREATHING CHECK + + int i = 0; + int remainingNeed = breathNeed; + + while (remainingNeed > 0 && i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); +#ifdef COPY_PARTS + remainingNeed -= localParts[iOM]; +#else + remainingNeed -= parts[iMM * world->nbOM + iOM]; +#endif + i++; + } + + // DORMANCY CHECK + + if (remainingNeed > 0) { + currentMM->dormancy = 1; + return; + } + + // ACTUAL BREATHING + + i = 0; + remainingNeed = breathNeed; + currentMM->dormancy = 0; + + while (i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); +#ifdef COPY_PARTS + const int offer = localParts[iOM]; +#else + const int offer = parts[iMM * world->nbOM + iOM]; +#endif + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; +#ifdef COPY_PARTS + localParts[iOM] = offer - consum; +#endif + if (remainingNeed == 0) { + break; // don't increment i ! + } + + i++; + } + + // ENVIRONMENT UPDATE + + atomic_add(&(world->CO2), breathNeed); + + // GROWTH + + remainingNeed = growthNeed; + + while (remainingNeed > 0 && i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); + +#ifdef COPY_PARTS + const int offer = localParts[iOM]; +#else + const int offer = parts[iMM * world->nbOM + iOM]; +#endif + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; + +#ifdef COPY_PARTS + localParts[iOM] = offer - consum; +#endif + i++; + } + + // MM CARBON UPDATE + + currentMM->carbon += (growthNeed - remainingNeed); + + /*for (int i = 0; i < 310; i++) { + parts[iMM * world->nbOM + i] = localParts[i]; + }*/ +} + + +/** + * Dimensions expectations + * + * Global : nbOM + */ +kernel void gather( + global OM omList[], + global MiorWorld * world, + global int mmCSR[], + global int parts[]) +{ + // Retrieve current OM index + const int iOM = get_global_id(0); + + // Retrieve list and number of accessible MM (CSR) + global int * mmIndexes = NTH_LIST(mmCSR, iOM); + const int nbIndexes = LIST_SIZE(mmIndexes); + + // Update current OM carbon value + int carbon = omList[iOM].carbon; + + for (int i = 0; i < nbIndexes; i++) { + const int iMM = LIST_GET(mmIndexes, i); + carbon += parts[iMM * world->nbOM + iOM]; + } + + omList[iOM].carbon = carbon; +} + +/** + * Dimensions expectations + * + * Global : max(nbOM, nbMM) + */ +kernel void autolive( + global MM mmList[], + global OM omList[], + global MiorWorld * world, + global int mmCSR[], + global int omCSR[], + global int parts[]) +{ + const int i = get_global_id(0); + int CO2total = -1; + + while (CO2total == -1 || CO2total != world->CO2) { + if (i < world->nbOM) { + scatter(omList, world, mmCSR, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + if (i < world->nbMM) { + live(mmList, world, omCSR, parts); + } + + if (i < world->nbOM) { + gather(omList, world, mmCSR, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + //if (CO2total == world->CO2) break; + CO2total = world->CO2; + } + +} diff --git a/kernels/mior_model_multisim.cl b/kernels/mior_model_multisim.cl new file mode 100644 index 0000000..c8e6a29 --- /dev/null +++ b/kernels/mior_model_multisim.cl @@ -0,0 +1,299 @@ +/** + * pre-OpenCL 1.1 compatibility macros +*/ + +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_add(p, v) atom_add(p, v) + #define atomic_inc(p) atom_inc(p) +#endif + +/** + * DATA STRUCTURES + */ + +// Microbial colony +typedef struct MM { + float x; + float y; + int carbon; + int dormancy; +} MM; + +// Carbon deposit +typedef struct OM { + float x; + float y; + int carbon; + int lock; +} OM; + +// Environment +typedef struct MiorWorld { + int nbMM; + int nbOM; + int RA; + float RR; + float GR; + float K; + int width; + int minSize; + int CO2; + int lock; +} MiorWorld; + +/** + * HELPERS + */ + +#define CAPACITY(store) store[0] +#define NTH_LIST(store, index) (store + 1 + index * (CAPACITY(store) + 1)) +#define LIST_SIZE(list) list[0] +#define LIST_GET(list, index) list[1 + index] +#define LIST_SET(list, index, val) list[1 + index] = val +#define LIST_APPEND(list, val) LIST_SET(list, atomic_inc(list), val) + +/** + * KERNELS + */ + +/* + * Dimensions expectations + * + * Global : nbSim * nbMM, nbOM + */ +kernel void topology( + global const MM mmList[], + global const OM omList[], + global const MiorWorld * world, + global int mmCSR[], + global int omCSR[], + global int topo[]) +{ + const int iSim = get_global_id(0) / world->nbMM; + const int iMM = get_global_id(0) % world->nbMM; + const int iOM = get_global_id(1); + const int nbMM = world->nbMM; + const int nbOM = world->nbOM; + + const int mmIndex = iSim * nbMM + iMM; + const int omIndex = iSim * nbOM + iOM; + + const float dist = hypot( + omList[omIndex].x - mmList[mmIndex].x, + omList[omIndex].y - mmList[mmIndex].y + ); + + if (dist <= world->RA) { + LIST_APPEND(NTH_LIST(omCSR, mmIndex), omIndex); + LIST_APPEND(NTH_LIST(mmCSR, omIndex), mmIndex); + topo[mmIndex * nbOM + iOM] = 0; + } +} + +/** + * Dimensions expectations + * + * Global : nbSim, nbOM + */ +kernel void scatter( + global OM omList[], + global const MiorWorld * world, + global const int mmCSR[], + global int parts[]) +{ + // Retrieve current OM index + // const int iSim = get_global_id(0); + // const int iLocal = get_global_id(1); + const int iOM = get_global_id(0) * world->nbOM + get_global_id(1); + + // Retrieve list and number of accessible MM (CSR) + global const int * mmIndexes = NTH_LIST(mmCSR, iOM); + const int nbIndexes = LIST_SIZE(mmIndexes); + + // Compute the carbon part to allocate to each MM + const int carbonPart = (world->K * omList[iOM].carbon) / nbIndexes; + + // Allocate parts + for (int i = 0; i < nbIndexes; i++) { + const int iMM = LIST_GET(mmIndexes, i); + parts[iMM * world->nbOM + iOM] = carbonPart; + } + + omList[iOM].carbon -= nbIndexes * carbonPart; +} + +/** + * Dimensions expectations + * + * Global : nbSim, nbMM + */ +kernel void live( + global MM mmList[], + global MiorWorld * world, + global int omCSR[], + global int parts[]) +{ + // const int iSim = get_global_id(0); + // const int iLocal = get_global_id(1); + const int iMM = get_global_id(0) * world->nbMM + get_global_id(1); + + global MM * currentMM = mmList + iMM; + //int localParts[NBOM]; + + /* + for (int i = 0; i < 310; i++) { + localParts[i] = parts[iMM * world->nbOM + i]; + } + */ + // Compute needs + const int breathNeed = currentMM->carbon * world->RR; + const int growthNeed = currentMM->carbon * world->GR; + + // Retrieve list and number of accessible OM (CSR) + global int * omIndexes = NTH_LIST(omCSR, iMM); + const int nbIndexes = LIST_SIZE(omIndexes); + + // BREATHING CHECK + + int i = 0; + int remainingNeed = breathNeed; + + while (remainingNeed > 0 && i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); + remainingNeed -= parts[iMM * world->nbOM + iOM]; + //remainingNeed -= localParts[iOM]; + i++; + } + + // DORMANCY CHECK + + if (remainingNeed > 0) { + currentMM->dormancy = 1; + return; + } + + // ACTUAL BREATHING + + i = 0; + remainingNeed = breathNeed; + currentMM->dormancy = 0; + + while (i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); + //const int offer = localParts[iOM]; + const int offer = parts[iMM * world->nbOM + iOM]; + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; + //localParts[iOM] = offer - consum; + + if (remainingNeed == 0) { + //localParts[iOM] = offer - consum; + break; // don't increment i ! + } + + i++; + } + + // ENVIRONMENT UPDATE + + atomic_add(&(world->CO2), breathNeed); + + // GROWTH + + remainingNeed = growthNeed; + + while (remainingNeed > 0 && i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); + + const int offer = parts[iMM * world->nbOM + iOM]; + //const int offer = localParts[iOM]; + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; + //localParts[iOM] = offer - consum; + + i++; + } + + // MM CARBON UPDATE + + currentMM->carbon += (growthNeed - remainingNeed); + + /*for (int i = 0; i < 310; i++) { + parts[iMM * world->nbOM + i] = localParts[i]; + }*/ +} + + +/** + * Dimensions expectations + * + * Global : nbSim, nbOM + */ +kernel void gather( + global OM omList[], + global const MiorWorld * world, + global const int mmCSR[], + global const int parts[]) +{ + // Retrieve current OM index + // const int iSim = get_global_id(0); + // const int iLocal = get_global_id(1); + const int iOM = get_global_id(0) * world->nbOM + get_global_id(1); + + // Retrieve list and number of accessible MM (CSR) + global const int * mmIndexes = NTH_LIST(mmCSR, iOM); + const int nbIndexes = LIST_SIZE(mmIndexes); + + // Update current OM carbon value + int carbon = omList[iOM].carbon; + + for (int i = 0; i < nbIndexes; i++) { + const int iMM = LIST_GET(mmIndexes, i); + carbon += parts[iMM * world->nbOM + iOM]; + } + + omList[iOM].carbon = carbon; +} + +/** + * Dimensions expectations + * + * Global : nbSim, max(nbOM, nbMM) + */ +kernel void autolive( + global MM mmList[], + global OM omList[], + global MiorWorld * world, + global const int mmCSR[], + global const int omCSR[], + global int parts[]) +{ + const int i = get_global_id(1); + int CO2total = -1; + + while (CO2total == -1 || CO2total != world->CO2) { + if (i < world->nbOM) { + scatter(omList, world, mmCSR, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + if (i < world->nbMM) { + live(mmList, world, omCSR, parts); + } + + if (i < world->nbOM) { + gather(omList, world, mmCSR, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + //if (CO2total == world->CO2) break; + CO2total = world->CO2; + } + +} diff --git a/kernels/mior_model_multisim2.cl b/kernels/mior_model_multisim2.cl new file mode 100644 index 0000000..906c14f --- /dev/null +++ b/kernels/mior_model_multisim2.cl @@ -0,0 +1,309 @@ +/** + * pre-OpenCL 1.1 compatibility macros +*/ + +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_add(p, v) atom_add(p, v) + #define atomic_inc(p) atom_inc(p) +#endif + +/** + * DATA STRUCTURES + */ + +// Microbial colony +typedef struct MM { + float x; + float y; + int carbon; + int dormancy; +} MM; + +// Carbon deposit +typedef struct OM { + float x; + float y; + int carbon; + int lock; +} OM; + +// Environment +typedef struct MiorWorld { + int nbMM; + int nbOM; + int RA; + float RR; + float GR; + float K; + int width; + int minSize; + int CO2; + int lock; +} MiorWorld; + +/** + * HELPERS + */ + +/* +#define CAPACITY(store) store[0] +#define NTH_LIST(store, index) (store + 1 + index * (CAPACITY(store) + 1)) +#define LIST_SIZE(list) list[0] +#define LIST_GET(list, index) list[1 + index] +#define LIST_SET(list, index, val) list[1 + index] = val +#define LIST_APPEND(list, val) LIST_SET(list, atomic_inc(list), val) +*/ + +/* + * CSR representation (for 15 lists of max 10 items) + * 10 2 1 5 0 0 0 0 0 0 0 0 + * 1 5 0 0 0 0 0 0 0 0 0 + * 5 8 7 3 1 4 0 0 0 0 0 + * 0 0 0 0 0 0 0 0 0 0 0 + */ + + /* CSR Representation + */ + +/* +#define NTH_CSR(store, iSim) +#define NTH_LIST(store, index) +*/ + +#define ACCESSIBLE(topo, iMM, iOM) (topo[iMM * world->nbOM + iOM] != -1) + +/** + * KERNELS + */ + +/* + * Dimensions expectations + * + * Global : nbSim * nbMM, nbOM + */ +kernel void topology( + global const MM mmList[], + global const OM omList[], + global const MiorWorld * world, + global int topo[]) +{ + const int iSim = get_group_id(0) / world->nbMM; + const int iMM = get_global_id(0) % world->nbMM; + const int iOM = get_global_id(1); + const int nbMM = world->nbMM; + const int nbOM = world->nbOM; + + const int mmIndex = iSim * nbMM + iMM; + const int omIndex = iSim * nbOM + iOM; + + const float dist = hypot( + omList[omIndex].x - mmList[mmIndex].x, + omList[omIndex].y - mmList[mmIndex].y + ); + + if (dist <= world->RA) { + topo[mmIndex * nbOM + iOM] = 0; + } +} + +/** + * Dimensions expectations + * + * Parameters MUST already include the offset for this simulation + * Local : nbOM + */ +kernel void scatter( + global OM omList[], + global const MiorWorld * world, + global const int topo[], + global int parts[]) +{ + // Retrieve current OM index + const int iOM = get_local_id(0); + + // Number of parts distributed + int nbParts = 0; + + // Compute number of parts parts + for (int iMM = 0; iMM < world->nbMM; iMM++) { + if (ACCESSIBLE(topo, iMM, iOM)) { + nbParts ++; + } + } + + // Compute the carbon part to allocate to each MM + const int carbonPart = (world->K * omList[iOM].carbon) / nbParts; + + // Allocate parts + for (int iMM = 0; iMM < world->nbMM; iMM++) { + if (ACCESSIBLE(topo, iMM, iOM)) { + parts[iMM * world->nbOM + iOM] = carbonPart; + } + } + + omList[iOM].carbon -= nbParts * carbonPart; +} + +/** + * Dimensions expectations + * + * Parameters MUST already include the offset for this simulation + * Local : nbMM + */ +kernel void live( + global MM mmList[], + global MiorWorld * world, + global int topo[], + global int parts[]) +{ + const int iMM = get_local_id(0); + global MM * currentMM = mmList + iMM; + + // Compute needs + const int breathNeed = currentMM->carbon * world->RR; + const int growthNeed = currentMM->carbon * world->GR; + + // BREATHING CHECK + + int iOM = 0, nbOM = world->nbOM; + int remainingNeed = breathNeed; + + while (remainingNeed > 0 && iOM < nbOM) { + if (ACCESSIBLE(topo, iMM, iOM)) { + remainingNeed -= parts[iMM * world->nbOM + iOM]; + } + iOM++; + } + + // DORMANCY CHECK + + if (remainingNeed > 0) { + currentMM->dormancy = 1; + return; + } + + // ACTUAL BREATHING + + iOM = 0; + remainingNeed = breathNeed; + currentMM->dormancy = 0; + + while (iOM < nbOM) { + if (ACCESSIBLE(topo, iMM, iOM)) { + const int offer = parts[iMM * world->nbOM + iOM]; + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; + + if (remainingNeed == 0) { + break; // don't increment iOM ! + } + } + + iOM++; + } + + // ENVIRONMENT UPDATE + + atomic_add(&(world->CO2), breathNeed); + + // GROWTH + + remainingNeed = growthNeed; + + while (remainingNeed > 0 && iOM < nbOM) { + if (ACCESSIBLE(topo, iMM, iOM)) { + const int offer = parts[iMM * world->nbOM + iOM]; + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; + } + + iOM++; + } + + // MM CARBON UPDATE + + currentMM->carbon += (growthNeed - remainingNeed); +} + + +/** + * Dimensions expectations + * + * Local : nbOM + */ +kernel void gather( + global OM omList[], + global const MiorWorld * world, + global const int topo[], + global const int parts[]) +{ + // Retrieve current OM index + const int iOM = get_local_id(0); + + // Update current OM carbon value + int carbon = omList[iOM].carbon; + + for (int iMM = 0; iMM < world->nbMM; iMM++) { + if (ACCESSIBLE(topo, iMM, iOM)) { + carbon += parts[iMM * world->nbOM + iOM]; + } + } + + omList[iOM].carbon = carbon; +} + +/** + * Dimensions expectations + * + * Global : nbSim * max(nbOM, nbMM) + * Local : max(nbOM, nbOM) + */ +kernel void autolive( + global MM mmLists[], + global OM omLists[], + global MiorWorld * worldList, + global const int topoList[], + global int partsList[]) +{ + const int iSim = get_group_id(0); + const int iAgent = get_local_id(0); + const int nbMM = worldList->nbMM; + const int nbOM = worldList->nbOM; + + // Compute parameters offset of this simulation + global MM * mmList = mmLists + (iSim * nbMM); + global OM * omList = omLists + (iSim * nbOM); + global MiorWorld * world = worldList + iSim; + global const int * topo = topoList + (iSim * nbMM * nbOM); + global int * parts = partsList + (iSim * nbMM * nbOM); + + int CO2total = -1; + + //for (int i = 0; i < 1; i++) { + while (CO2total == -1 || CO2total != world->CO2) { + CO2total = world->CO2; + + if (iAgent < world->nbOM) { + scatter(omList, world, topo, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + if (iAgent < world->nbMM) { + live(mmList, world, topo, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + if (iAgent < world->nbOM) { + gather(omList, world, topo, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + } + +} diff --git a/kernels/mior_model_multisim3.cl b/kernels/mior_model_multisim3.cl new file mode 100644 index 0000000..f4a239c --- /dev/null +++ b/kernels/mior_model_multisim3.cl @@ -0,0 +1,355 @@ +/** + * pre-OpenCL 1.1 compatibility macros +*/ + +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_add(p, v) atom_add(p, v) + #define atomic_inc(p) atom_inc(p) +#endif + +/** + * DATA STRUCTURES + */ + +// Microbial colony +typedef struct MM { + float x; + float y; + int carbon; + int dormancy; +} MM; + +// Carbon deposit +typedef struct OM { + float x; + float y; + int carbon; + int lock; +} OM; + +// Environment +typedef struct MiorWorld { + int nbMM; + int nbOM; + int RA; + float RR; + float GR; + float K; + int width; + int minSize; + int CO2; + int lock; +} MiorWorld; + +/** + * HELPERS + */ + +/** + * BUFFERS FORMAT EXPECTIONS + * + * mmList : static array of nbMM MM structs + * mmList(n) : n x mmList + * + * omList : static array of nbOM OM structs + * omList(n) : n x omList + * + * world(n) : static array of n MiorWorld structs + * + * mmCSR : static array of nbOM x (nbMM + 1) integers => items are MM indexes + * mmCSR(n) : n x mmCSR + * + * omCSR : static array of nbMM x (nbOM + 1) integers => items are OM indexes + * omCSR(n) : n x omCSR + * + * topo : static array of nbOM * nbMM integers + * topo(n) : n x topo + */ + +/* STRUCTURE SIZE DEFINITIONS */ + +#define PARTS_SIZE (NB_MM * NB_OM) +#define TOPO_SIZE (NB_MM * NB_OM) +#define MMLIST_SIZE (NB_MM + 1) +#define OMLIST_SIZE (NB_OM + 1) +#define MMCSR_SIZE (NB_OM * MMLIST_SIZE) +#define OMCSR_SIZE (NB_MM * OMLIST_SIZE) + +/* HELPER FUNCTIONS */ + +#define NTH_OMLIST(omCSR, index) (omCSR + index * OMLIST_SIZE) +#define NTH_MMLIST(mmCSR, index) (mmCSR + index * MMLIST_SIZE) + +#define LIST_SIZE(list) list[0] +#define LIST_GET(list, index) list[1 + index] +#define LIST_APPEND(list, item) list[1 + atomic_inc(list)] = item + +/** + * KERNELS + */ + +/* + * Dimensions expectations + * + * //Global : nbMM, nbSim * nbOM + * //Local : 1, nbOM + * Global : nbSim * nbMM, nbOM + */ +kernel void topology( + global const MM mmList[], + global const OM omList[], + global const MiorWorld * world, + global int mmCSR[], + global int omCSR[]/*, + global int topo[]*/) +{ + const int iSim = get_global_id(0) / NB_MM; + const int iMM = get_global_id(0) % NB_MM; + const int iOM = get_global_id(1); + //const int iSim = get_group_id(1); + //const int iMM = get_global_id(0); + //const int iOM = get_local_id(1); + const int nbMM = world->nbMM; + const int nbOM = world->nbOM; + + if (iMM > nbMM || iOM > nbOM) { + return; + } + + const int mmIndex = iSim * NB_MM + iMM; + const int omIndex = iSim * NB_OM + iOM; + + const float dist = hypot( + omList[omIndex].x - mmList[mmIndex].x, + omList[omIndex].y - mmList[mmIndex].y + ); + + if (dist <= world->RA) { + LIST_APPEND(NTH_OMLIST(omCSR, mmIndex), iOM); + LIST_APPEND(NTH_MMLIST(mmCSR, omIndex), iMM); + //topo[mmIndex * nbOM + iOM] = 0; + } +} + +/** + * Dimensions expectations + * + * Global : nbSim * nbOM + * Local : nbOM + */ +void scatter( + global OM omList[], + global const MiorWorld * world, + global const int mmCSR[], + global int parts[]) +{ + // Retrieve current OM index + const int iOM = get_local_id(0); + + // Retrieve list and number of accessible MM (CSR) + global const int * const mmIndexes = NTH_MMLIST(mmCSR, iOM); + const int nbIndexes = LIST_SIZE(mmIndexes); + + // Compute the carbon part to allocate to each MM + const int carbonPart = (world->K * omList[iOM].carbon) / nbIndexes; + + // Allocate parts + for (int i = 0; i < nbIndexes; i++) { + const int iMM = LIST_GET(mmIndexes, i); + parts[iMM * world->nbOM + iOM] = carbonPart; + } + + omList[iOM].carbon -= nbIndexes * carbonPart; +} + +/** + * Dimensions expectations + * + * Global : nbSim * nbMM + * Local : nbMM + */ +void live( + global MM mmList[], + global MiorWorld * world, + global const int omCSR[], + global int parts[]) +{ + // Retrieve current MM index + const int iMM = get_local_id(0); + global MM * const currentMM = mmList + iMM; + + // Compute needs + const int breathNeed = currentMM->carbon * world->RR; + const int growthNeed = currentMM->carbon * world->GR; + + // Retrieve list and number of accessible OM (CSR) + global const int * const omIndexes = NTH_OMLIST(omCSR, iMM); + const int nbIndexes = LIST_SIZE(omIndexes); + + // BREATHING CHECK + + int i = 0; + int remainingNeed = breathNeed; + + while (remainingNeed > 0 && i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); + remainingNeed -= parts[iMM * world->nbOM + iOM]; + i++; + } + + // DORMANCY CHECK + + if (remainingNeed > 0) { + currentMM->dormancy = 1; + return; + } + + // ACTUAL BREATHING + + i = 0; + remainingNeed = breathNeed; + currentMM->dormancy = 0; + + while (i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); + const int offer = parts[iMM * world->nbOM + iOM]; + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; + + if (remainingNeed == 0) { + break; // don't increment i ! + } + + i++; + } + + // ENVIRONMENT UPDATE + + atomic_add(&(world->CO2), breathNeed); + + // GROWTH + + remainingNeed = growthNeed; + + while (remainingNeed > 0 && i < nbIndexes) { + const int iOM = LIST_GET(omIndexes, i); + + const int offer = parts[iMM * world->nbOM + iOM]; + const int consum = min(offer, remainingNeed); + + remainingNeed -= consum; + parts[iMM * world->nbOM + iOM] = offer - consum; + + i++; + } + + // MM CARBON UPDATE + + currentMM->carbon += (growthNeed - remainingNeed); +} + + +/** + * Dimensions expectations + * + * Global : nbSim * nbOM + * Local : nbOM + */ +void gather( + global OM omList[], + global const MiorWorld * world, + global const int mmCSR[], + global const int parts[]) +{ + // Retrieve current OM index + const int iOM = get_local_id(0); + + // Retrieve list and number of accessible MM (CSR) + global const int * const mmIndexes = NTH_MMLIST(mmCSR, iOM); + const int nbIndexes = LIST_SIZE(mmIndexes); + + // Update current OM carbon value + int carbon = omList[iOM].carbon; + + for (int i = 0; i < nbIndexes; i++) { + const int iMM = LIST_GET(mmIndexes, i); + carbon += parts[iMM * world->nbOM + iOM]; + } + + omList[iOM].carbon = carbon; +} + +/* + * Dimensions expectations + * + * Global : nbSim * max(nbOM, nbMM) + * Local : max(nbOM, nbOM) + */ + +kernel void simulate( + global MM allMMList[], + global OM allOMList[], + global MiorWorld allWorlds[], + global const int allMMCSR[], + global const int allOMCSR[], + global int allParts[]) +{ + const int iSim = get_group_id(0); + const int i = get_local_id(0); + + global MiorWorld * world = allWorlds + iSim; + global MM * mmList = allMMList + iSim * NB_MM; + global OM * omList = allOMList + iSim * NB_OM; + global const int * mmCSR = allMMCSR + iSim * MMCSR_SIZE; + global const int * omCSR = allOMCSR + iSim * OMCSR_SIZE; + global int * parts = allParts + iSim * PARTS_SIZE; + + //barrier(CLK_GLOBAL_MEM_FENCE); + + if (i < world->nbOM) { + scatter(omList, world, mmCSR, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + if (i < world->nbMM) { + live(mmList, world, omCSR, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); + + if (i < world->nbOM) { + gather(omList, world, mmCSR, parts); + } + + barrier(CLK_GLOBAL_MEM_FENCE); +} + + +/** + * Dimensions expectations + * + * Global : nbSim * max(nbOM, nbMM) + * Local : max(nbOM, nbMM) + */ +kernel void autolive( + global MM allMMList[], + global OM allOMList[], + global MiorWorld allWorlds[], + global const int allMMCSR[], + global const int allOMCSR[], + global int allParts[]) +{ + const int iSim = get_group_id(0); + const int i = get_local_id(0); + int CO2total = -1; + + global MiorWorld * world = allWorlds + iSim; + + while (CO2total == -1 || CO2total != world->CO2) { + CO2total = world->CO2; + simulate(allMMList, allOMList, allWorlds, allMMCSR, allOMCSR, allParts); + } +} diff --git a/kernels/plugins/axb.cl b/kernels/plugins/axb.cl new file mode 100644 index 0000000..0c1842d --- /dev/null +++ b/kernels/plugins/axb.cl @@ -0,0 +1,15 @@ +kernel void transform(global TYPE *vector, float a, float b) +{ + const int i = get_global_id(0); + + TYPE value = (TYPE) (vector[i] * a + b); + vector[i] = value; +} + +kernel void clamped_transform(global TYPE *vector, float a, float b, TYPE min, TYPE max) +{ + const int i = get_global_id(0); + + TYPE value = (TYPE) (vector[i] * a + b); + vector[i] = clamp(value, min, max); +} diff --git a/kernels/plugins/grid_search2.cl b/kernels/plugins/grid_search2.cl new file mode 100644 index 0000000..014cfd8 --- /dev/null +++ b/kernels/plugins/grid_search2.cl @@ -0,0 +1,115 @@ +#ifndef WIDTH +#error "WIDTH is not defined" +#endif + +#ifndef TYPE +#error "TYPE is not defined" +#endif + +// Assume WIDTH contains the width of the grid +#define offset(x, y) (y * WIDTH + x) + +#define grid_get(grid, x, y) (grid[offset(x, y)]) +#define grid_getp(grid, x, y) (grid + offset(x, y)) + +#define grid_xy(grid, x, y) (grid_get(grid, x, y)) + +#define grid_set(grid, x, y, v) (grid + offset(x, y) = v) +#define grid_setp(grid, x, y, v) (grid + offset(x, y) = v) + +void search_max( + global TYPE grid[], + int radius, + int x, int y, + global int *rx, global int *ry +); + +kernel void grid_search_max( + global TYPE grid[], + int radius, + global int xPos[], + global int yPos[], + global int newXPos[], + global int newYPos[] +){ + const int i = get_global_id(0); + search_max(grid, radius, xPos[i], yPos[i], newXPos + i, newYPos + i); +} + +void search_max( + global TYPE grid[], + int radius, + int x, int y, + global int *rx, global int *ry +){ + int i, j, r; + int tmp_x = x, tmp_y = y; + TYPE memo = grid_xy(grid, x, y); + + for (r = 1; r <= radius; r++) { + + j = y - r; + for (i = x - r; i < x + r; i++) { + if (i < 0 || i >= WIDTH || j < 0 || j >= HEIGHT) { + continue; + } + + TYPE value = grid_xy(grid, i, j); + + if (value > memo) { + tmp_x = i; + tmp_y = j; + memo = value; + } + } + + i = x + r; + for (j = y - r; j < y + r; j++) { + if (i < 0 || i >= WIDTH || j < 0 || j >= HEIGHT) { + continue; + } + + TYPE value = grid_xy(grid, i, j); + + if (value > memo) { + tmp_x = i; + tmp_y = j; + memo = value; + } + } + + j = y + r; + for (i = x + r; i > x - r; i--) { + if (i < 0 || i >= WIDTH || j < 0 || j >= HEIGHT) { + continue; + } + + TYPE value = grid_xy(grid, i, j); + + if (value > memo) { + tmp_x = i; + tmp_y = j; + memo = value; + } + } + + i = x - r; + for (j = y + r; j > y - r; j--) { + if (i < 0 || i >= WIDTH || j < 0 || j >= HEIGHT) { + continue; + } + + TYPE value = grid_xy(grid, i, j); + + if (value > memo) { + tmp_x = i; + tmp_y = j; + memo = value; + } + } + } + + *rx = tmp_x; + *ry = tmp_y; + return; +} diff --git a/kernels/plugins/reduce.cl b/kernels/plugins/reduce.cl new file mode 100644 index 0000000..b054566 --- /dev/null +++ b/kernels/plugins/reduce.cl @@ -0,0 +1,40 @@ +#define SUM(a, b) (a + b) +#define MUL(a, b) (a * b) +#define MIN(a, b) min(a, b) +#define MAX(a, b) max(a, b) + +__kernel +void greduce( + __global float* buffer, + __global float* result, + __local float* scratch, + __const int length) { + + int global_index = get_global_id(0); + int local_index = get_local_id(0); + + // Load data into local memory + if (global_index < length) { + scratch[local_index] = buffer[global_index]; + } else { + // Infinity is the identity element for the sum operation + scratch[local_index] = NEUTRAL; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + for(int offset = 1; offset < get_local_size(0); offset <<= 1) { + int mask = (offset << 1) - 1; + if ((local_index & mask) == 0) { + float other = scratch[local_index + offset]; + float mine = scratch[local_index]; + scratch[local_index] = OP(mine, other); + } + + barrier(CLK_LOCAL_MEM_FENCE); + } + + if (local_index == 0) { + result[get_group_id(0)] = scratch[0]; + } +} diff --git a/kernels/simple.cl b/kernels/simple.cl new file mode 100644 index 0000000..8fdfdf8 --- /dev/null +++ b/kernels/simple.cl @@ -0,0 +1,23 @@ +#if __OPENCL_VERSION__ <= CL_VERSION_1_0 + #define atomic_add(p, v) atom_add(p, v) + #define atomic_inc(p) atom_inc(p) +#endif + +kernel void double(constant int input[], global int output[]) +{ + const int i = get_global_id(0); + output[i] = input[i] * 2; +} + +#define CAPACITY(store) store[0] +#define NTH_LIST(store, index) (store + 1 + index * (CAPACITY(store) + 1)) +#define LIST_SIZE(list) list[0] +#define LIST_GET(list, index) list[1 + index] +#define LIST_SET(list, index, val) list[1 + index] = val +#define LIST_APPEND(list, val) LIST_SET(list, atomic_inc(list), val) + +kernel void fill(global int * store, int size) +{ + global int * list = NTH_LIST(store, 1); + LIST_APPEND(list, get_global_id(0)); +} diff --git a/lib/JOCL-structs-0.0.1a-alpha.jar b/lib/JOCL-structs-0.0.1a-alpha.jar new file mode 100644 index 0000000000000000000000000000000000000000..b3aebe8bf108999c19dfd3bb61ca055e9ef1a875 GIT binary patch literal 371961 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

M}&h-U%9)T4vZ5J`D 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 anr^j-4HjOpaXXPVD8#(csN*ZxP~r9ZSbOX+ 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 a^k1h5!Kev5Hy@80@0b|^5vvV~8RCBot|lq~ literal 0 HcmV?d00001 diff --git a/lib/logback.xml b/lib/logback.xml new file mode 100644 index 0000000..1cea6e0 --- /dev/null +++ b/lib/logback.xml @@ -0,0 +1,21 @@ + + + + %d [%thread] %level %logger - %m%n + + + + + System.err + + %d [%thread] %level %logger - %m%n + + + + + + + + + + diff --git a/src/Enumerable.java b/src/Enumerable.java new file mode 100644 index 0000000..daf55e6 --- /dev/null +++ b/src/Enumerable.java @@ -0,0 +1,114 @@ +import java.util.ArrayList; +import java.util.Collection; + +public class Enumerable { + + public static Collection map(Collection c, Filter f) { + ArrayList result = new ArrayList(); + + for (T e : c) { + result.add(f.apply(e)); + } + + return result; + } + + public static Collection map(T[] c, Filter f) { + ArrayList result = new ArrayList(); + + for (T e : c) { + result.add(f.apply(e)); + } + + return result; + } + + public static Collection select(Collection c, Predicate p) { + ArrayList result = new ArrayList(); + + for (T e : c) { + if (p.apply(e)) { + result.add(e); + } + } + + return result; + } + + public static Collection select(T[] c, Predicate p) { + ArrayList result = new ArrayList(); + + for (T e : c) { + if (p.apply(e)) { + result.add(e); + } + } + + return result; + } + + public static Collection reject(Collection c, Predicate p) { + ArrayList result = new ArrayList(); + + for (T e : c) { + if (! p.apply(e)) { + result.add(e); + } + } + + return result; + } + + public static Collection reject(T[] c, Predicate p) { + ArrayList result = new ArrayList(); + + for (T e : c) { + if (! p.apply(e)) { + result.add(e); + } + } + + return result; + } + + public static boolean all(Collection c, Predicate p) { + for (T e : c) { + if (! p.apply(e)) { + return false; + } + } + + return true; + } + + public static boolean all(T[] c, Predicate p) { + for (T e : c) { + if (! p.apply(e)) { + return false; + } + } + + return true; + } + + public static boolean any(Collection c, Predicate p) { + for (T e : c) { + if (p.apply(e)) { + return true; + } + } + + return false; + } + + public static boolean any(T[] c, Predicate p) { + for (T e : c) { + if (p.apply(e)) { + return true; + } + } + + return false; + } + +} diff --git a/src/Filter.java b/src/Filter.java new file mode 100644 index 0000000..158ac88 --- /dev/null +++ b/src/Filter.java @@ -0,0 +1,6 @@ + +public interface Filter { + + public U apply(T elem); + +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..22f69f6 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,11 @@ + +public class Main { + + public static void main(String[] args) { + int [] a = new int[1024]; + + for (int i = 0; i < 1024; i++) { + a[i] = i; + } + } +} diff --git a/src/MiorLauncher2.java b/src/MiorLauncher2.java new file mode 100644 index 0000000..60f547d --- /dev/null +++ b/src/MiorLauncher2.java @@ -0,0 +1,69 @@ +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMDevice; +import mior.model.MiorSimulation; +import mior.model.dist.IMiorDistribution; +import mior.model.dist.LinearDistribution; + + +public class MiorLauncher2 extends Thread { + + private final int nbExecutions; + private final MCMContext context; + private final MCMDevice device; + + public MiorLauncher2(int nbExecutions, MCMContext context, MCMDevice device) { + this.nbExecutions = nbExecutions; + this.context = context; + this.device = device; + } + + @Override + public void run() { + MiorSimulation [] simulations = new MiorSimulation[nbExecutions]; + + MCMCommandQueue queue = context.createCommandQueue(device, + MCMCommandQueueProperty.ENABLE_PROFILING, + MCMCommandQueueProperty.ENABLE_OOO_MODE + ); + + IMiorDistribution dist = new LinearDistribution(38, 310, 0.3); + + for (int i = 0; i < simulations.length; i++) { + simulations[i] = new MiorSimulation(38, 310, 100, dist); + } + + for (int i = 0; i < simulations.length; i++) { + simulations[i].execute(context, queue); + } + + queue.finish(); + } + + public static void main(String[] args) { + final int nbThreads = 10; + final Thread [] threads = new Thread[nbThreads]; + final MCMContext context = new MCMContext(); + + int nbDevices = context.getDevices().length; + + for (int i = 0; i < nbThreads; i++) { + threads[i] = new MiorLauncher2(10 , context, context.getDevices()[i % nbDevices]); + } + + for (int i = 0; i < nbThreads; i++) { + threads[i].start(); + } + + for (int i = 0; i < nbThreads; i++) { + try { + threads[i].join(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + +} diff --git a/src/Predicate.java b/src/Predicate.java new file mode 100644 index 0000000..99237ee --- /dev/null +++ b/src/Predicate.java @@ -0,0 +1,6 @@ + +public interface Predicate { + + public boolean apply(T elem); + +} diff --git a/src/collembola/CollemBuffer.java b/src/collembola/CollemBuffer.java new file mode 100644 index 0000000..bdbef1c --- /dev/null +++ b/src/collembola/CollemBuffer.java @@ -0,0 +1,59 @@ +package collembola; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.Random; + +import javax.imageio.ImageIO; + +public class CollemBuffer { + + private final int height; + private final int width; + private final int nbPlots; + + private BufferedImage image; + + public CollemBuffer(int height, int width, int nbPlots) { + this.height = height; + this.width = width; + this.nbPlots = nbPlots; + + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + + Graphics2D g2d = image.createGraphics(); + Random rng = new Random(); + + int avgHeight = (int) Math.ceil(height / Math.sqrt(nbPlots)); + int avgWidth = (int) Math.ceil(width / Math.sqrt(nbPlots)); + + for (int i = 0; i < nbPlots; i++) { + float randomX = rng.nextFloat() * height; + float randomY = rng.nextFloat() * width; + float h = rng.nextFloat() * 3 * avgHeight; + float w = rng.nextFloat() * 3 * avgWidth; + + //Ellipse2D e2d = new Ellipse2D.Double(randomX - height / 8, randomY - height / 8, height / 4, height / 4); + Shape sh = new Rectangle2D.Float(randomX - w / 2, randomY - h / 2, w, 2 * h); + g2d.setColor(new Color(rng.nextInt())); + g2d.fill(sh); + } + + try { + ImageIO.write(image, "png", new File("test.png")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + System.out.println("toto"); + new CollemBuffer(254, 254, 137); + } + +} diff --git a/src/collembola/CollemBuffer2.java b/src/collembola/CollemBuffer2.java new file mode 100644 index 0000000..6d1dc97 --- /dev/null +++ b/src/collembola/CollemBuffer2.java @@ -0,0 +1,59 @@ +package collembola; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.Random; + +import javax.imageio.ImageIO; + +public class CollemBuffer2 { + + private final int height; + private final int width; + private final int nbPlots; + + private BufferedImage image; + + public CollemBuffer2(int height, int width, int nbPlots) { + this.height = height; + this.width = width; + this.nbPlots = nbPlots; + + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + + Graphics2D g2d = image.createGraphics(); + Random rng = new Random(); + + int avgHeight = (int) Math.ceil(height / Math.sqrt(nbPlots)); + int avgWidth = (int) Math.ceil(width / Math.sqrt(nbPlots)); + + for (int i = 0; i < nbPlots; i++) { + float randomX = rng.nextFloat() * height; + float randomY = rng.nextFloat() * width; + float h = rng.nextFloat() * 3 * avgHeight; + float w = rng.nextFloat() * 3 * avgWidth; + + //Ellipse2D e2d = new Ellipse2D.Double(randomX - height / 8, randomY - height / 8, height / 4, height / 4); + Shape sh = new Rectangle2D.Float(randomX - w / 2, randomY - h / 2, w, 2 * h); + g2d.setColor(new Color(rng.nextInt())); + g2d.fill(sh); + } + + try { + ImageIO.write(image, "png", new File("test.png")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + System.out.println("toto"); + new CollemBuffer2(254, 254, 137); + } + +} diff --git a/src/collembola/CollemSimulation.java b/src/collembola/CollemSimulation.java new file mode 100644 index 0000000..35536f0 --- /dev/null +++ b/src/collembola/CollemSimulation.java @@ -0,0 +1,271 @@ +package collembola; + +import java.net.MalformedURLException; +import java.net.URL; + +import joptsimple.OptionParser; +import joptsimple.OptionSet; +import mcmas.core.MCMChrono; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.CL; +import org.jocl.Pointer; + +import collembola.model.CollemLoader; +import collembola.model.CollemModel; + +public class CollemSimulation { + + private final CollemModel model; + + private MCMContext context; + private final MCMCommandQueue queue; + private final MCMProgram program; + + //private final OCLKernel kernel; + private final MCMKernel reproduceKernel; + private final MCMKernel newArrivalsKernel; + private final MCMKernel diffuseKernel; + private final MCMKernel deathKernel; + + //private final OCLMem patchesMem; + //private final OCLMem terrainsMem; + + //private final IntBuffer patchesPopulations; + //private final IntBuffer patchesOverflows; + //private final IntBuffer patchesOwners; + //private final IntBuffer patchesTypes; + //private final IntBuffer plotsPopulations; + //private final IntBuffer plotSurface; + //private final CollemWorld world; + + private final int [] patchesPopulations; + private final int [] newPopulations; + private final int [] patchesOverflows; + private final int [] plotsPopulations; + + private final MCMMem patchesPopulationsMem; + private final MCMMem patchesOverflowsMem; + private final MCMMem patchesOwnersMem; + private final MCMMem patchesTypesMem; + + private final MCMMem newPopulationsMem; + + private final MCMMem plotsPopulationsMem; + private final MCMMem plotsSurfacesMem; + + private final MCMMem worldMem; + + public CollemSimulation(CollemModel model) { + this(model, new MCMContext()); + } + + public CollemSimulation(CollemModel model, MCMContext context) { + this.model = model; + + this.context = context; + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + //this.patchesMem = context.newBuffer().Using(model.getPatches()).b(); + //this.terrainsMem = context.newBuffer().Using(model.getTerrains()).b(); + //this.populationsMem = context.newBuffer().Using(model.getPopulations()).b(); + //this.worldMem = context.newBuffer().Using(model.getWorld()).b(); + + this.program = MCMUtils.compileFile(context, "kernels/collembola.cl", + " -DWIDTH=" + model.getWidth() + " -DHEIGHT=" + model.getHeight()); + //this.kernel = program.createKernel("collembola"); + + //this.kernel = program.createKernel("diffusion"); + this.reproduceKernel = program.createKernel("reproduction"); + this.newArrivalsKernel = program.createKernel("newArrivals"); + this.diffuseKernel = program.createKernel("diffusion"); + this.deathKernel = program.createKernel("death"); + + /*this.patchesPopulations = new int[(model.getHeight() + 2) * (model.getWidth() + 2)]; + this.newPopulations = new int[(model.getHeight() + 2) * (model.getWidth() + 2)]; + this.patchesOverflows = new int[model.getHeight() * model.getWidth()];*/ + + this.patchesPopulations = model.getPatchesPopulations(); + //this.patchesPopulations = new int[model.getHeight() * model.getWidth()]; + this.newPopulations = new int[model.getHeight() * model.getWidth()]; + this.patchesOverflows = new int[(model.getHeight() + 2) * (model.getWidth() + 2)]; + + for (int i = 0; i < model.getWorld().width; i++) { + this.patchesPopulations[model.getHeight() / 2 * model.getWidth() + i] = 100; + } + //this.patchesPopulations[8 * 8] = 1000; + //this.patchesPopulations[8 * 8] = 1000; + + this.plotsPopulations = new int[model.getPlotsSurfaces().length]; + + this.patchesPopulationsMem = context.newBuffer().Using(patchesPopulations).b(); + this.newPopulationsMem = context.newBuffer().Using(newPopulations).b(); + + this.patchesOwnersMem = context.newBuffer().Using(model.getPatchesOwners()).b(); + this.patchesTypesMem = context.newBuffer().Using(model.getPatchesTypes()).b(); + this.patchesOverflowsMem = context.newBuffer().Using(patchesOverflows).b(); + + this.plotsSurfacesMem = context.newBuffer().Using(model.getPlotsSurfaces()).b(); + this.plotsPopulationsMem = context.newBuffer().Using(plotsPopulations).b(); + this.worldMem = context.newBuffer().Using(model.getWorld()).b(); + } + + /* + public void prepare() { + int [] terrains = model.getTerrains(); + + System.out.println(Arrays.toString(model.getPopulations())); + + //kernel.setArguments(patchesMem, model.getWidth()); + kernel.setArguments(populationsMem, terrainsMem, model.getWidth(), model.getHeight()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + }*/ + + public void run() { + newArrivalsKernel.setArguments(worldMem, patchesPopulationsMem, patchesOwnersMem, plotsPopulationsMem, plotsSurfacesMem); + reproduceKernel.setArguments(worldMem, patchesPopulationsMem, patchesOwnersMem, plotsPopulationsMem); + diffuseKernel.setArguments(worldMem, patchesPopulationsMem, patchesOverflowsMem, newPopulationsMem); + deathKernel.setArguments(worldMem, patchesPopulationsMem, patchesTypesMem); + + MCMEvent newArrivalFinished, reproduceFinished, diffuseFinished, copyFinished, deathFinished; + + int i = 1; + + MCMChrono totalTime = new MCMChrono("totalTime"); + totalTime.start(); + + while (true) { + newArrivalFinished = enqueueKernel(newArrivalsKernel); + reproduceFinished = enqueueKernel(reproduceKernel, newArrivalFinished); + diffuseFinished = enqueueKernel(diffuseKernel, reproduceFinished); + copyFinished = queue.enqueueCopyBuffer(newPopulationsMem, patchesPopulationsMem, 0L, 0L, patchesPopulationsMem.getSize(), diffuseFinished); + MCMEvent.waitFor(copyFinished); + deathFinished = enqueueKernel(deathKernel, copyFinished); + + queue.blockingReadBuffer(plotsPopulationsMem, Pointer.to(plotsPopulations), 0, plotsPopulationsMem.getSize(), deathFinished); + queue.blockingReadBuffer(patchesPopulationsMem, Pointer.to(patchesPopulations), 0, patchesPopulationsMem.getSize(), deathFinished); + queue.blockingReadBuffer(patchesOverflowsMem, Pointer.to(patchesOverflows), 0, patchesOverflowsMem.getSize(), deathFinished); + /*queue.flush(); + queue.finish();*/ + + /*OCLUtils.printEventStats("newArrivals", newArrivalFinished); + OCLUtils.printEventStats("reproduction", reproduceFinished); + OCLUtils.printEventStats("diffusion", diffuseFinished); + OCLUtils.printEventStats("swapBuffers", copyFinished); + OCLUtils.printEventStats("death", deathFinished);*/ + + // FIXME + //CollemUtils.savePicture(patchesPopulations, model.getWidth(), "pop", i); + //CollemUtils.savePicture(patchesOverflows, model.getWidth() + 2, "over", i); + i++; + + if (i == 100) break; + } + + //queue.flush(); + queue.finish(); + + System.out.println("For " + i + "iterations," + totalTime.stop()); + } + + public void release() { + worldMem.release(); + + patchesOverflowsMem.release(); + patchesTypesMem.release(); + patchesOwnersMem.release(); + patchesPopulationsMem.release(); + newPopulationsMem.release(); + + plotsPopulationsMem.release(); + plotsSurfacesMem.release(); + + newArrivalsKernel.release(); + reproduceKernel.release(); + diffuseKernel.release(); + deathKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + public static void main(String[] args) throws MalformedURLException { + CollemModel model = CollemLoader.load(256, 256, new URL("file://data/site4.shp")); + model.getWorld().growthRate = 3f; + model.getWorld().diffusionThreshold = 0f; + model.getWorld().diffusionRate = 0.5f; + + OptionParser parser = new OptionParser(); + + parser.accepts("cpu", "Force OpenCL CPU mode"); + + OptionSet options = parser.parse(args); + + MCMContext context = (options.has("cpu") ? new MCMContext(CL.CL_DEVICE_TYPE_CPU) : new MCMContext()); + + //model.savePicture(); + CollemSimulation sim = new CollemSimulation(model, context); + + //System.out.println(Arrays.toString(model.getPatchesOwners())); + //CollemUtils.savePicture(model.getPatchesOwners(), model.getWidth(), "owners", 0); + //CollemUtils.savePicture(sim.patchesPopulations, model.getWidth(), "pop", 0); + sim.run(); + } + + private MCMEvent enqueueKernel(MCMKernel kernel, MCMEvent... events) { + MCMEvent e = queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }, events); + //queue.flush(); + //queue.finish();- + return e; + } + +} diff --git a/src/collembola/CollemSimulation2.java b/src/collembola/CollemSimulation2.java new file mode 100644 index 0000000..db0013a --- /dev/null +++ b/src/collembola/CollemSimulation2.java @@ -0,0 +1,291 @@ +package collembola; + +import java.net.MalformedURLException; +import java.net.URL; + +import joptsimple.OptionParser; +import joptsimple.OptionSet; +import mcmas.core.MCMChrono; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.CL; +import org.jocl.Pointer; + +import collembola.model.CollemLoader; +import collembola.model.CollemModel; +//import collembola.model.CollemUtils; + +public class CollemSimulation2 { + + private final CollemModel model; + + private MCMContext context; + private final MCMCommandQueue queue; + private final MCMProgram program; + + //private final OCLKernel kernel; + private final MCMKernel reproduceKernel; + private final MCMKernel newArrivalsKernel; + private final MCMKernel diffuseKernel; + private final MCMKernel deathKernel; + + //private final OCLMem patchesMem; + //private final OCLMem terrainsMem; + + //private final IntBuffer patchesPopulations; + //private final IntBuffer patchesOverflows; + //private final IntBuffer patchesOwners; + //private final IntBuffer patchesTypes; + //private final IntBuffer plotsPopulations; + //private final IntBuffer plotSurface; + //private final CollemWorld world; + + private final int [] patchesPopulations; + private final int [] newPopulations; + private final int [] patchesOverflows; + private final int [] plotsPopulations; + + private final MCMMem patchesPopulationsMem; + private final MCMMem patchesOverflowsMem; + private final MCMMem patchesOwnersMem; + private final MCMMem patchesTypesMem; + + private final MCMMem newPopulationsMem; + + private final MCMMem plotsPopulationsMem; + private final MCMMem plotsSurfacesMem; + + private final MCMMem worldMem; + + public CollemSimulation2(CollemModel model) { + this(model, new MCMContext()); + } + + public CollemSimulation2(CollemModel model, MCMContext context) { + this.model = model; + + this.context = context; + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + //this.patchesMem = context.newBuffer().Using(model.getPatches()).b(); + //this.terrainsMem = context.newBuffer().Using(model.getTerrains()).b(); + //this.populationsMem = context.newBuffer().Using(model.getPopulations()).b(); + //this.worldMem = context.newBuffer().Using(model.getWorld()).b(); + + this.program = MCMUtils.compileFile(context, "kernels/collembola2.cl", + " -DWIDTH=" + model.getWidth() + " -DHEIGHT=" + model.getHeight()); + //this.kernel = program.createKernel("collembola"); + + //this.kernel = program.createKernel("diffusion"); + this.reproduceKernel = program.createKernel("reproduction"); + this.newArrivalsKernel = program.createKernel("newArrivals"); + this.diffuseKernel = program.createKernel("diffusion"); + this.deathKernel = program.createKernel("death"); + + /*this.patchesPopulations = new int[(model.getHeight() + 2) * (model.getWidth() + 2)]; + this.newPopulations = new int[(model.getHeight() + 2) * (model.getWidth() + 2)]; + this.patchesOverflows = new int[model.getHeight() * model.getWidth()];*/ + + this.patchesPopulations = model.getPatchesPopulations(); + //this.patchesPopulations = new int[model.getHeight() * model.getWidth()]; + this.newPopulations = new int[model.getHeight() * model.getWidth()]; + this.patchesOverflows = new int[(model.getHeight() + 2) * (model.getWidth() + 2)]; + + for (int i = 0; i < model.getWorld().width; i++) { + this.patchesPopulations[model.getHeight() / 2 * model.getWidth() + i] = 100; + } + //this.patchesPopulations[8 * 8] = 1000; + //this.patchesPopulations[8 * 8] = 1000; + + this.plotsPopulations = new int[model.getPlotsSurfaces().length]; + + this.patchesPopulationsMem = context.newBuffer().Using(patchesPopulations).b(); + this.newPopulationsMem = context.newBuffer().Using(newPopulations).b(); + + this.patchesOwnersMem = context.newBuffer().Using(model.getPatchesOwners()).b(); + this.patchesTypesMem = context.newBuffer().Using(model.getPatchesTypes()).b(); + this.patchesOverflowsMem = context.newBuffer().Using(patchesOverflows).b(); + + this.plotsSurfacesMem = context.newBuffer().Using(model.getPlotsSurfaces()).b(); + this.plotsPopulationsMem = context.newBuffer().Using(plotsPopulations).b(); + this.worldMem = context.newBuffer().Using(model.getWorld()).b(); + } + + /* + public void prepare() { + int [] terrains = model.getTerrains(); + + System.out.println(Arrays.toString(model.getPopulations())); + + //kernel.setArguments(patchesMem, model.getWidth()); + kernel.setArguments(populationsMem, terrainsMem, model.getWidth(), model.getHeight()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + + queue.enqueueCopyBuffer(terrainsMem, populationsMem, 0, 0, terrainsMem.getSize()); + queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }); + queue.blockingReadBuffer(terrainsMem, Pointer.to(terrains), 0, terrainsMem.getSize()); + + //System.out.println(Arrays.toString(model.getPatches())); + //System.out.println(Arrays.toString(terrains)); + + System.out.println(Arrays.toString(terrains)); + }*/ + + public void run(int nbIterations) { + newArrivalsKernel.setArguments(worldMem, patchesPopulationsMem, patchesOwnersMem, plotsPopulationsMem, plotsSurfacesMem, patchesTypesMem); + reproduceKernel.setArguments(worldMem, patchesPopulationsMem, patchesOwnersMem, plotsPopulationsMem, patchesTypesMem); + diffuseKernel.setArguments(worldMem, patchesPopulationsMem, patchesOverflowsMem, newPopulationsMem, patchesTypesMem); + deathKernel.setArguments(worldMem, patchesPopulationsMem, patchesTypesMem); + + MCMEvent newArrivalFinished, reproduceFinished, diffuseFinished, copyFinished, deathFinished; + + //int i = 1; + + MCMChrono totalTime = new MCMChrono("totalTime"); + totalTime.start(); + + //System.out.println(Arrays.toString(model.getPatchesTypes())); + + for (int i = 0; i < nbIterations; i++) { + //while (true) { + newArrivalFinished = enqueueKernel(newArrivalsKernel); + reproduceFinished = enqueueKernel(reproduceKernel, newArrivalFinished); + diffuseFinished = enqueueKernel(diffuseKernel, reproduceFinished); + copyFinished = queue.enqueueCopyBuffer(newPopulationsMem, patchesPopulationsMem, 0L, 0L, patchesPopulationsMem.getSize(), diffuseFinished); + //OCLEvent.waitFor(copyFinished); + deathFinished = enqueueKernel(deathKernel, copyFinished); + + queue.blockingReadBuffer(plotsPopulationsMem, Pointer.to(plotsPopulations), 0, plotsPopulationsMem.getSize(), deathFinished); + queue.blockingReadBuffer(patchesPopulationsMem, Pointer.to(patchesPopulations), 0, patchesPopulationsMem.getSize(), deathFinished); + queue.blockingReadBuffer(patchesOverflowsMem, Pointer.to(patchesOverflows), 0, patchesOverflowsMem.getSize(), deathFinished); + /*queue.flush();*/ + /*queue.finish();*/ + + /*OCLUtils.printEventStats("newArrivals", newArrivalFinished); + OCLUtils.printEventStats("reproduction", reproduceFinished); + OCLUtils.printEventStats("diffusion", diffuseFinished); + OCLUtils.printEventStats("swapBuffers", copyFinished); + OCLUtils.printEventStats("death", deathFinished);*/ + + // TODO: Uncomment these line for population pictures + //CollemUtils.savePicture(patchesPopulations, model.getWidth(), "pop", i); + //CollemUtils.savePicture(patchesOverflows, model.getWidth() + 2, "over", i); + //i++; + + //if (i == 100) break; + } + + //queue.flush(); + queue.finish(); + + System.out.println("For " + nbIterations + " iterations, " + totalTime.stop()); + } + + public void release() { + worldMem.release(); + + patchesOverflowsMem.release(); + patchesTypesMem.release(); + patchesOwnersMem.release(); + patchesPopulationsMem.release(); + newPopulationsMem.release(); + + plotsPopulationsMem.release(); + plotsSurfacesMem.release(); + + newArrivalsKernel.release(); + reproduceKernel.release(); + diffuseKernel.release(); + deathKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + public static void main(String[] args) throws MalformedURLException { + OptionParser parser = new OptionParser(); + + parser.accepts("cpu", "Force OpenCL CPU mode"); + parser.accepts("scale", "Scale to use").withRequiredArg() + .ofType(Integer.class).defaultsTo(1); + parser.accepts("n", "Number of iterations to execute").withRequiredArg() + .ofType(Integer.class).defaultsTo(500); + + OptionSet options = parser.parse(args); + MCMContext context = null; + + if (options.has("cpu")) { + System.out.println("Forcing OpenCL CPU mode..."); + context = new MCMContext(CL.CL_DEVICE_TYPE_CPU); + } else { + context = new MCMContext(); + } + + final int nbIterations = (Integer) options.valueOf("n"); + + final int scale = (Integer) options.valueOf("scale"); + System.out.println("Using scale: " + scale); + + CollemModel model = CollemLoader.load(scale * 256, scale * 256, new URL("file://data/site4.shp")); + model.getWorld().growthRate = 3f; + model.getWorld().diffusionThreshold = 0f; + model.getWorld().diffusionRate = 0.5f; + + //model.savePicture(); + CollemSimulation2 sim = new CollemSimulation2(model, context); + + //System.out.println(Arrays.toString(model.getPatchesOwners())); + //CollemUtils.savePicture(model.getPatchesOwners(), model.getWidth(), "owners", 0); + //CollemUtils.savePicture(sim.patchesPopulations, model.getWidth(), "pop", 0); + sim.run(nbIterations); + sim.release(); + } + + private MCMEvent enqueueKernel(MCMKernel kernel, MCMEvent... events) { + MCMEvent e = queue.enqueueKernel(kernel, 2, new long[] { model.getHeight(), model.getWidth() }, events); + //queue.flush(); + //queue.finish(); + return e; + } + +} diff --git a/src/collembola/ImagePanel.java b/src/collembola/ImagePanel.java new file mode 100644 index 0000000..3210d74 --- /dev/null +++ b/src/collembola/ImagePanel.java @@ -0,0 +1,37 @@ +package collembola; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; + +import javax.swing.JPanel; + + +public class ImagePanel extends JPanel { + + private static final long serialVersionUID = 1L; + private BufferedImage img; + + public ImagePanel(BufferedImage img) { + this.img = img; + setPreferredSize(new Dimension(img.getWidth(), img.getHeight())); + //setPreferredSize(new Dimension(500, 500)); + } + + @Override + protected void paintComponent(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + double xscale = (1.0 * getWidth()) / img.getWidth(); + double yscale = (1.0 * getHeight()) / img.getHeight(); + + //g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + // RenderingHints.VALUE_ANTIALIAS_ON); + + //g2d.scale(4, 4); + g2d.scale(xscale, yscale); + g2d.drawImage(img, 0, 0, null); + } + + +} diff --git a/src/collembola/MapMain.java b/src/collembola/MapMain.java new file mode 100644 index 0000000..dafb11e --- /dev/null +++ b/src/collembola/MapMain.java @@ -0,0 +1,209 @@ +package collembola; +import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.HashMap; +import java.util.Random; + +import javax.swing.JFrame; + +import mcmas.core.MCMChrono; + +import org.geotools.data.FileDataStore; +import org.geotools.data.FileDataStoreFinder; +import org.geotools.data.shapefile.ng.ShapefileDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Point; + +public class MapMain { + + /* + public void displayLayers(File shpFile) throws IOException { + System.out.println(shpFile); + + FileDataStore store = FileDataStoreFinder.getDataStore(shpFile); + + System.out.println(shpFile.length()); + SimpleFeatureSource shapefileSource = store.getFeatureSource(); + + Style style = SLD.createPolygonStyle(Color.GREEN, null, 0.0f); + + final MapContent map = new MapContent(); + map.setTitle("Test display GIS"); + + Layer shpLayer = new FeatureLayer(shapefileSource, style); + map.addLayer(shpLayer); + + JMapFrame frame = new JMapFrame(map); + frame.setSize(800, 600); + frame.enableStatusBar(true); + frame.enableToolBar(true); + frame.setVisible(true); + }*/ + + public void displayLayers2(URL shpFile) throws IOException { + ShapefileDataStore store = new ShapefileDataStore(shpFile); + String name = store.getTypeNames()[0]; + SimpleFeatureSource source = store.getFeatureSource(name); + SimpleFeatureCollection collection = source.getFeatures(); + SimpleFeatureIterator it = collection.features(); + GeometryFactory gf = new GeometryFactory(); + + ReferencedEnvelope env = source.getBounds(); + + int pict_width = (int) Math.ceil(env.getMaxX() - env.getMinX()); + int pict_height = (int) Math.ceil(env.getMaxY() - env.getMinY()); + + System.out.println(pict_width); + System.out.println(pict_height); + + //Point [][] points = new Point[256][256]; + String [][] grid = new String[256][256]; + + HashMap colorMap = new HashMap(); + Random rng = new Random(); + + //int index = 0; + + MCMChrono ch = new MCMChrono("interections").start(); + + /* + for (int i = 0; i < points.length; i++) { + for (int j = 0; j < points[i].length; j++) { + final double xpos = transform(i + 0.5, 0, grid.length, env.getMinX(), env.getMaxX()); + final double ypos = transform(j + 0.5, 0, grid[i].length, env.getMinY(), env.getMaxY()); + points[i][j] = gf.createPoint(new Coordinate(xpos, ypos)); + } + }*/ + + while (it.hasNext()) { + //index++; + SimpleFeature f = it.next(); + //Polygon p = new Polygon(); + + //System.out.println(f.getProperty("level1")); + //System.out.println(f.getProperties()); + MultiPolygon poly = (MultiPolygon) f.getDefaultGeometry(); + //Coordinate[] c = poly.getCoordinates(); + colorMap.put(f.getID(), rng.nextInt()); + + System.out.println(f.getID()); + System.out.println(f.getAttribute("Level1")); + + //System.out.println(poly.getCentroid()); + //System.out.println(c.length); + + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[i].length; j++) { + if (grid[i][j] != null) continue; + + final double xpos = transform(i + 0.5, 0, grid.length, env.getMinX(), env.getMaxX()); + final double ypos = transform(j + 0.5, 0, grid[i].length, env.getMinY(), env.getMaxY()); + + //if (grid[i][j] != null) continue; + + //System.out.println("xpos: " + xpos); + //System.out.println("ypos: " + ypos); + Point point = gf.createPoint(new Coordinate(xpos, ypos)); + //final Point point = points[i][j]; + + if (poly.contains(point)) { + /*System.out.println("xpos: " + xpos); + System.out.println("ypos: " + ypos); + System.out.println("true");*/ + grid[i][j] = f.getID(); + } + } + } + } + + System.out.println(ch.stop()); + + ch = new MCMChrono("image generation").start(); + + BufferedImage img = new BufferedImage(grid.length, grid.length, ColorSpace.TYPE_RGB); + + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[i].length; j++) { + /*if (! colorMap.containsKey(grid[i][j])) { + colorMap.put(grid[i][j], rng.nextInt()); + }*/ + + //System.out.print("" + j + " "); + //System.out.println(grid.length - j); + Integer c = colorMap.get(grid[i][j]); + + if (c != null) + img.setRGB(i, grid.length - 1 - j, c); + //System.out.print(grid[i][j] + " "); + } + //System.out.println(); + } + + System.out.println(ch.stop()); + + //ImageIO.write(img, "png", new File("out.png")); + + System.out.println(source.getBounds()); + //BufferedImage img = new BufferedImage(20000, height, imageType) + + System.out.println(transform(128, 0, 256, 0, 1000)); + + System.out.println(img); + ImagePanel panel = new ImagePanel(img); + JFrame frame = new JFrame("MapGIS"); + frame.setContentPane(panel); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.pack(); + frame.setVisible(true); + + } + + public double transform(double n, double min1, double max1, double min2, double max2) { + final double range1 = max1 - min1; + final double range2 = max2 - min2; + + //System.out.println(range1); + //System.out.println(range2); + return ((n - min1) / range1) * range2 + min2; + } + + public static void test(String[] args) throws IOException { + File file = new File("110m_cultural\\110m_admin_0_countries.shp"); + FileDataStore store = FileDataStoreFinder.getDataStore(file); + SimpleFeatureSource featureSource = store.getFeatureSource(); + SimpleFeatureCollection c = featureSource.getFeatures(); + SimpleFeatureIterator featuresIterator = c.features(); + + while (featuresIterator.hasNext()) { + SimpleFeature o = featuresIterator.next(); + + String name = (String) o.getAttribute("NAME"); + Object geometry = o.getDefaultGeometry(); + System.out.println(name + ", " + geometry.getClass()); + } + } + + public static void main(String[] args) throws IOException { + //ClassLoader cl = ClassLoader.getSystemClassLoader(); + + //URL[] urls = ((URLClassLoader)cl).getURLs(); + + /*for(URL url: urls){ + System.out.println(url.getFile()); + }*/ + + //new MapMain().displayLayers(new File("site4.shp")); + new MapMain().displayLayers2(new URL("file://data/site4.shp")); + } +} diff --git a/src/collembola/model/CollemCell.java b/src/collembola/model/CollemCell.java new file mode 100644 index 0000000..8cbd87f --- /dev/null +++ b/src/collembola/model/CollemCell.java @@ -0,0 +1,34 @@ +package collembola.model; + +public class CollemCell { + + private int patchId; + private int terrainType; + + public CollemCell() { + this.patchId = -1; + this.terrainType = -1; + } + + public void setPatchId(int patchId) { + this.patchId = patchId; + } + + public int getPatchId() { + return patchId; + } + + public void setTerrainType(int terrainType) { + this.terrainType = terrainType; + } + + public int getTerrainType() { + return terrainType; + } + + @Override + public String toString() { + return "CollemCell(" + patchId + ", " + terrainType + ")"; + } + +} diff --git a/src/collembola/model/CollemLoader.java b/src/collembola/model/CollemLoader.java new file mode 100644 index 0000000..0a8596f --- /dev/null +++ b/src/collembola/model/CollemLoader.java @@ -0,0 +1,95 @@ +package collembola.model; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.geotools.data.shapefile.ng.ShapefileDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Point; + +public class CollemLoader { + + public static CollemModel load(int x, int y, URL shpFile) { + SimpleFeatureSource source; + SimpleFeatureCollection collection; + ReferencedEnvelope env; + + try { + ShapefileDataStore store = new ShapefileDataStore(shpFile); + store.setMemoryMapped(true); + + String name = store.getTypeNames()[0]; + source = store.getFeatureSource(name); + collection = source.getFeatures(); + env = source.getBounds(); + } catch (IOException e) { + throw new RuntimeException("Error parsing shapefile", e); + }; + + int index = 0; + System.out.println(collection.size()); + SimpleFeatureIterator it = collection.features(); + GeometryFactory gf = new GeometryFactory(); + //CollemCell[][] grid = model.getGrid(); + + CollemModel model = new CollemModel(x, y, collection.size()); + int [] plotSurfaces = model.getPlotsSurfaces(); + + try { + while (it.hasNext()) { + SimpleFeature f = it.next(); + MultiPolygon poly = (MultiPolygon) f.getDefaultGeometry(); + + //System.out.println("Rasterizing shape #" + index); + + for (int i = 0; i < x; i++) { + for (int j = 0; j < y; j++) { + //final CollemCell cell = grid[i][j]; + + if (model.getPatchOwner(i, j) != -1) continue; + + final double xpos = transform(i + 0.5, 0, x, env.getMinX(), env.getMaxX()); + final double ypos = transform(j + 0.5, 0, y, env.getMinY(), env.getMaxY()); + + Point point = gf.createPoint(new Coordinate(xpos, ypos)); + + if (poly.contains(point)) { + model.setPatchOwner(i, j, index); + model.setPatchType(i, j, (Integer) (f.getAttribute("Level1"))); + plotSurfaces[index]++; + //System.out.println("Set " + i + ", " + j + " to " + cell); + } + } + } + + index++; + } + } finally { + //it.close(); + } + + //System.out.println(model); + return model; + } + + public static double transform(double n, double min1, double max1, double min2, double max2) { + final double range1 = max1 - min1; + final double range2 = max2 - min2; + return ((n - min1) / range1) * range2 + min2; + } + + public static void main(String[] args) throws MalformedURLException { + /*CollemModel model =*/ CollemLoader.load(256, 256, new URL("file://data/site4.shp")); + //model.savePicture(); + } + +} diff --git a/src/collembola/model/CollemModel.java b/src/collembola/model/CollemModel.java new file mode 100644 index 0000000..ce16e1e --- /dev/null +++ b/src/collembola/model/CollemModel.java @@ -0,0 +1,152 @@ +package collembola.model; + +import java.util.Arrays; + +public class CollemModel { + + //private final int width; + //private final int height; + //private final int plotsTotal; + + //private CollemCell[][] grid; + private final int [] patchesPopulations; + private final int [] patchesOwners; + private final int [] patchesTypes; + + private final int [] plotsSurfaces; + + private CollemWorld world; + + public CollemModel(int height, int width, int nbPlots) { + //this.grid = new CollemCell[x][y]; + + //for (int i = 0; i < x; i++) { + // for (int j = 0; j < y; j++) { + // grid[i][j] = new CollemCell(); + // } + //} + + this.patchesPopulations = new int[height * width]; + this.patchesOwners = new int[height * width]; + this.patchesTypes = new int[height * width]; + + this.plotsSurfaces = new int[nbPlots]; + + this.world = new CollemWorld(); + this.world.height = height; + this.world.width = width; + this.world.speciality = 2; // CULTURE + + patchesPopulations[1 * width + 7] = 100; + + Arrays.fill(patchesPopulations, 0); + Arrays.fill(patchesOwners, -1); + Arrays.fill(patchesTypes, -1); + } + + public int getHeight() { + return world.height; + } + + public int getWidth() { + return world.width; + } + + /*public CollemCell[][] getGrid() { + return grid; + }*/ + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + + for (int i = 0; i < world.height; i++) { + for (int j = 0; j < world.width; j++) { + builder.append(String.format("%03d ", patchesOwners[i * world.width + j])); + } + + builder.append('\n'); + } + + return builder.toString(); + } + + /*public void savePicture() { + savePicture(0); + } + */ + /* + public void savePicture(int index) { + HashMap colorMap = new HashMap(); + Random rng = new Random(); + + BufferedImage img = new BufferedImage(world.width, world.height, ColorSpace.TYPE_RGB); + + for (int i = 0; i < world.height; i++) { + for (int j = 0; j < world.width; j++) { + final int id = patchesOwners[i * world.width + j]; + + if (! colorMap.containsKey(id)) { + colorMap.put(id, rng.nextInt()); + } + + img.setRGB(j, world.height - 1 - i, colorMap.get(id)); + } + } + + try { + ImageIO.write(img, "png", new File("data/output-" + index + ".png")); + } catch (IOException e) { + throw new RuntimeException("Error saving picture", e); + } + + }*/ + + public int getPatchPopulation(int i, int j) { + return patchesPopulations[i * world.width + j]; + } + + public void setPatchPopulation(int i, int j, int pop) { + patchesPopulations[i * world.width + j] = pop; + } + + public int getPatchOwner(int i, int j) { + return patchesOwners[i * world.width + j]; + } + + public void setPatchOwner(int i, int j, int owner) { + patchesOwners[i * world.width + j] = owner; + } + + public int getPatchType(int i, int j) { + return patchesTypes[i * world.width + j]; + } + + + public void setPatchType(int i, int j, int type) { + //System.out.println("setPatchType(" + i + "," + j + "," + type + ")"); + patchesTypes[i * world.width + j] = type; + //System.out.println(patchesTypes[i * world.width + j]); + } + + public int[] getPatchesPopulations() { + return patchesPopulations; + } + + public int[] getPatchesOwners() { + return patchesOwners; + } + + public int[] getPatchesTypes() { + return patchesTypes; + } + + public int[] getPlotsSurfaces() { + return plotsSurfaces; + } + + public CollemWorld getWorld() { + return world; + } + +} diff --git a/src/collembola/model/CollemUtils.java b/src/collembola/model/CollemUtils.java new file mode 100644 index 0000000..c43f3c2 --- /dev/null +++ b/src/collembola/model/CollemUtils.java @@ -0,0 +1,43 @@ +package collembola.model; + +import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Random; + +import javax.imageio.ImageIO; + +public class CollemUtils { + + public static void savePicture(int[] grid, int width, String prefix, int index) { + HashMap colorMap = new HashMap(); + Random rng = new Random(); + + final int height = grid.length / width; + //System.out.println(Arrays.toString(grid)); + BufferedImage img = new BufferedImage(width, height, ColorSpace.TYPE_RGB); + + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + final int id = grid[i * width + j]; + + if (! colorMap.containsKey(id)) { + colorMap.put(id, rng.nextInt()); + } + + img.setRGB(j, height - 1 - i, colorMap.get(id)); + } + } + + try { + System.out.println("Writing data/" + prefix + "-" + index + ".png ..."); + ImageIO.write(img, "png", new File("data/" + prefix + "-" + index + ".png")); + } catch (IOException e) { + throw new RuntimeException("Error saving picture", e); + } + + } + +} diff --git a/src/collembola/model/CollemWorld.java b/src/collembola/model/CollemWorld.java new file mode 100644 index 0000000..9e49484 --- /dev/null +++ b/src/collembola/model/CollemWorld.java @@ -0,0 +1,16 @@ +package collembola.model; + +import org.jocl.struct.Struct; + +public class CollemWorld extends Struct { + + public int width; + public int height; + + public float growthRate; + public float diffusionRate; + public float diffusionThreshold; + public float mortalityRate; + + int speciality; +} diff --git a/src/mcmas/api/ContextType.java b/src/mcmas/api/ContextType.java new file mode 100644 index 0000000..c8c4694 --- /dev/null +++ b/src/mcmas/api/ContextType.java @@ -0,0 +1,25 @@ +package mcmas.api; + +import org.jocl.CL; + +/** + * MCMAS context type to be obtained. + * DEFAULT: let MCMAS select a device + * ACCELERATOR: use accelerators such as Xeon Phi + * GPU; use GPU devices from NVIDIA, AMD or Intel + * ALL: use any available OpenCL device + */ +public enum ContextType { + DEFAULT (CL.CL_DEVICE_TYPE_DEFAULT), + ACCELERATOR (CL.CL_DEVICE_TYPE_ACCELERATOR), + GPU (CL.CL_DEVICE_TYPE_GPU), + CPU (CL.CL_DEVICE_TYPE_CPU), + ALL (CL.CL_DEVICE_TYPE_ALL); + + public final long value; + + private ContextType(long value) { + this.value = value; + } + +} diff --git a/src/mcmas/api/DataType.java b/src/mcmas/api/DataType.java new file mode 100644 index 0000000..3e83b26 --- /dev/null +++ b/src/mcmas/api/DataType.java @@ -0,0 +1,17 @@ +package mcmas.api; + +/** + * Enumeration for MCMAS supported native types. + */ +public enum DataType { + BYTE, + SHORT, + INT, + LONG, + FLOAT, + DOUBLE; + + public String getNativeType() { + return toString().toLowerCase(); + } +} diff --git a/src/mcmas/api/IPlugin.java b/src/mcmas/api/IPlugin.java new file mode 100644 index 0000000..72184bc --- /dev/null +++ b/src/mcmas/api/IPlugin.java @@ -0,0 +1,15 @@ +package mcmas.api; + +/** + * Base interface implemented by all MCMAS plugins. + * This contract ensures that any plugin can be constructed + * using a "newInstance" function call. + * + * @param Specific plugin class to return (used by child classes). + */ +public interface IPlugin { + + public T newInstance(); + public T newInstance(MCMASContext context); + +} diff --git a/src/mcmas/api/MCMAS.java b/src/mcmas/api/MCMAS.java new file mode 100644 index 0000000..47c56da --- /dev/null +++ b/src/mcmas/api/MCMAS.java @@ -0,0 +1,36 @@ +package mcmas.api; + +import mcmas.core.MCMCommandQueueProperty; + +/** + * Class containing most MCMAS-wide shortcuts, + * to enable use of MPI-like programmation suck as MCMAS.INT + */ +public class MCMAS { + + /** + * Shortcuts for context types + */ + + public final ContextType CPU = ContextType.CPU; + public final ContextType GPU = ContextType.GPU; + + /** + * Shortcuts for execution options + */ + + public final long ENABLE_PROFILING = MCMCommandQueueProperty.ENABLE_PROFILING.getValue(); + public final long ENABLE_OOO_MODE = MCMCommandQueueProperty.ENABLE_OOO_MODE.getValue(); + + /** + * Shortcuts for MCMAS types. + */ + + public final DataType BYTE = DataType.BYTE; + public final DataType SHORT = DataType.SHORT; + public final DataType INT = DataType.INT; + public final DataType LONG = DataType.LONG; + public final DataType FLOAT = DataType.FLOAT; + public final DataType DOUBLE = DataType.DOUBLE; + +} diff --git a/src/mcmas/api/MCMASContext.java b/src/mcmas/api/MCMASContext.java new file mode 100644 index 0000000..fb8ef68 --- /dev/null +++ b/src/mcmas/api/MCMASContext.java @@ -0,0 +1,51 @@ +package mcmas.api; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; + +/** + * A MCMASContext is a class which contains all the environement + * required to call any high-level MCMAS operation. + * + * It includes, in particular, a low level MCM context + * and command queue which can be used to call low-level operations. + * + */ +public class MCMASContext { + + private final MCMContext context; + private final MCMCommandQueue queue; + + public MCMASContext(MCMCommandQueueProperty... properties) { + this.context = new MCMContext(); + this.queue = context.createCommandQueue(properties); + } + + public MCMASContext(ContextType type, MCMCommandQueueProperty... properties) { + this.context = new MCMContext(type.value); + this.queue = context.createCommandQueue(properties); + } + + public MCMASContext(MCMContext context, MCMCommandQueue queue) { + this.context = context; + this.queue = queue; + } + + /** + * Get the MCM context included in this MCMAS context + * @return the embedded MCM context + */ + public MCMContext getContext() { + return context; + } + + /** + * Get the MCM command queue included in this MCMAS context + * @return the embedded MCM command queue + */ + public MCMCommandQueue getQueue() { + return queue; + } + +} diff --git a/src/mcmas/api/MCMASException.java b/src/mcmas/api/MCMASException.java new file mode 100644 index 0000000..38745fa --- /dev/null +++ b/src/mcmas/api/MCMASException.java @@ -0,0 +1,25 @@ +package mcmas.api; + +/** + * This exception is used to report most MCMAS-related error. + * It inherits from RuntimeException to make any error checking optional : + * if nobody catch the exception, it will interrupt the program. + * + */ +public class MCMASException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public MCMASException(String message) { + super(message); + } + + public MCMASException(Throwable cause) { + super(cause); + } + + public MCMASException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/src/mcmas/api/MCMASPlugin.java b/src/mcmas/api/MCMASPlugin.java new file mode 100644 index 0000000..1ce2c55 --- /dev/null +++ b/src/mcmas/api/MCMASPlugin.java @@ -0,0 +1,77 @@ +package mcmas.api; + +import java.io.InputStream; +import java.net.URL; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; + +/** + * This abstract class provides common methods to all MCMAS plugins. + * Otherwise, it inherits the same interface as IPlugin. + * + * @param the specific type of plugin to return + */ +public abstract class MCMASPlugin implements IPlugin { + + private final MCMASContext context; + + @Override + public T newInstance() { + return newInstance(new MCMASContext()); + } + + public MCMASContext getContext() { + return this.context; + } + + public MCMASPlugin(MCMASContext context) { + this.context = context; + } + + /** + * Get a file URL relative to the current class location. + * @param name the name of the file to look for + * @return the URL to the file, if it exists + */ + public URL getSourceURI(String name) { + return getClass().getResource(name); + } + + /** + * Get a file path relative to the current class location + * @param name the name of the file to look for + * @return the path of the file as a String, if it exists + */ + public String getSourcePath(String name) { + URL url = getSourceURI(name); + return (url == null ? null : url.getFile()); + } + + /** + * Get an InputStream corresponding to a file + * relative to the current class location. + * @param name the name of the file to look for + * @return an InputStream if the file exists, null otherwise + */ + public InputStream getSourceStream(String name) { + return getClass().getResourceAsStream(name); + } + + /** + * Get the MCMContext associated to this plugin. + * @return a MCM context + */ + public MCMContext getMCMContext() { + return getContext().getContext(); + } + + /** + * Get the MCMCommandQueue associated to this plugin. + * @return a MCM commandQueue + */ + public MCMCommandQueue getQueue() { + return getContext().getQueue(); + } + +} diff --git a/src/mcmas/core/MCM.java b/src/mcmas/core/MCM.java new file mode 100644 index 0000000..30ba152 --- /dev/null +++ b/src/mcmas/core/MCM.java @@ -0,0 +1,45 @@ +package mcmas.core; + +import org.jocl.struct.SizeofStruct; + +public class MCM { + + /** + * OCL Native data types + */ + public static final MCMType INT = MCMType.INT; + public static final MCMType LONG = MCMType.LONG; + public static final MCMType CHAR = MCMType.CHAR; + public static final MCMType MEM = MCMType.MEM; + public static final MCMType FLOAT = MCMType.FLOAT; + public static final MCMType DOUBLE = MCMType.DOUBLE; + + /** + * OCL Memory modes + */ + public static final MCMMemFlag MEM_RO = MCMMemFlag.READ_ONLY; + public static final MCMMemFlag MEM_WO = MCMMemFlag.WRITE_ONLY; + public static final MCMMemFlag MEM_RW = MCMMemFlag.READ_WRITE; + + /** + * CommandQueue options + */ + public static final MCMCommandQueueProperty OOO_MODE = MCMCommandQueueProperty.ENABLE_OOO_MODE; + public static final MCMCommandQueueProperty PROFILING = MCMCommandQueueProperty.ENABLE_PROFILING; + + /** + * OCL versions as integer constants + */ + public static final int CL_VERSION_1_0 = 100; + public static final int CL_VERSION_1_1 = 110; + public static final int CL_VERSION_1_2 = 120; + + /** + * Helper for structs + * @param a Struct subclass + * @return binary size of the C representation of this class + */ + public static int sizeof(Class klass) { + return SizeofStruct.sizeof(klass); + } +} diff --git a/src/mcmas/core/MCMBufferBuilder.java b/src/mcmas/core/MCMBufferBuilder.java new file mode 100644 index 0000000..288db7f --- /dev/null +++ b/src/mcmas/core/MCMBufferBuilder.java @@ -0,0 +1,190 @@ +package mcmas.core; + +import java.nio.Buffer; +import java.nio.ByteBuffer; + +import mcmas.utils.BuffersUtils; + +import org.jocl.CL; +import org.jocl.NativePointerObject; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_mem; +import org.jocl.struct.Buffers; +import org.jocl.struct.SizeofStruct; +import org.jocl.struct.Struct; + +public class MCMBufferBuilder { + + private long size; + private Pointer data; + private long datasize; + private boolean readonly; + private boolean local; + + private MCMContext context; + + public MCMBufferBuilder(MCMContext context) { + this.size = -1; + this.datasize = -1; + this.data = null; + this.context = context; + this.readonly = false; + this.local = false; + } + + public MCMBufferBuilder constant() { + this.readonly = true; + return this; + } + + public MCMBufferBuilder local() { + this.local = true; + return this; + } + + public MCMBufferBuilder size(long n) { + this.size = n; + return this; + } + + public MCMBufferBuilder size(MCMType type) { + return size(type.size); + } + + public MCMBufferBuilder size(long n, MCMType type) { + return size(n * type.size); + } + + public MCMBufferBuilder size(long n, Class type) { + return size(n * SizeofStruct.sizeof(type)); + } + + public MCMBufferBuilder size(Buffer data) { + return size(BuffersUtils.sizeOf(data)); + } + + public MCMBufferBuilder data(Pointer data) { + if (local) { + throw new RuntimeException("Local buffers must remain uninitialized"); + } + + if (this.data != null) { + throw new RuntimeException("Data are already associated to this buffer"); + } + + this.data = data; + return this; + } + + public MCMBufferBuilder data(long datasize, Pointer data) { + if (local) { throw new RuntimeException("Local buffers must remain uninitialized"); } + this.datasize = datasize; + this.data = data; + return this; + } + + public MCMBufferBuilder data(byte... data) { + return data(data.length * Sizeof.cl_char, Pointer.to(data)); + } + + public MCMBufferBuilder data(char... data) { + return data(data.length * Sizeof.cl_char, Pointer.to(data)); + } + + public MCMBufferBuilder data(short... data) { + return data(data.length * Sizeof.cl_short, Pointer.to(data)); + } + + public MCMBufferBuilder data(int... data) { + return data(data.length * Sizeof.cl_int, Pointer.to(data)); + } + + public MCMBufferBuilder data(long... data) { + return data(data.length * Sizeof.cl_long, Pointer.to(data)); + } + + public MCMBufferBuilder data(float... data) { + return data(data.length * Sizeof.cl_float, Pointer.to(data)); + } + + public MCMBufferBuilder data(double... data) { + return data(data.length * Sizeof.cl_double, Pointer.to(data)); + } + + public MCMBufferBuilder data(Buffer data) { + return data(BuffersUtils.sizeOf(data), Pointer.to(data)); + } + + public MCMBufferBuilder data(NativePointerObject data) { + return data(Pointer.to(data)); + } + + public MCMBufferBuilder data(NativePointerObject... data) { + return data(Pointer.to(data)); + } + + public MCMBufferBuilder data(Class type, Struct... data) { + long elemSize = SizeofStruct.sizeof(type); + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + return data(data.length * elemSize, Pointer.to(temp)); + } + + /*public OCLMemBuilder Using(Struct data) { + long elemSize = SizeofStruct.sizeof(data.getClass()); + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + return Using( elemSize, Pointer.to(temp)); + }*/ + + public MCMBufferBuilder Using(Struct... data) { + long elemSize = SizeofStruct.sizeof(data[0].getClass()); + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + return data(data.length * elemSize, Pointer.to(temp)); + } + + public MCMMem get() { + checkCoherency(); + + long flags = 0; + cl_mem mem = null; + long memsize = (size > 0 ? size : datasize); + + if (readonly) { + flags |= CL.CL_MEM_READ_ONLY; + } else { + flags |= CL.CL_MEM_READ_WRITE; + } + + if (data != null) { + flags |= CL.CL_MEM_COPY_HOST_PTR; + } + + if (!local) { + mem = MCMHelpers.createMem(context.getContext(), flags, memsize, data); + } + + MCMMem buffer = new MCMMem(mem); + buffer.setLocal(local); + buffer.setReadOnly(readonly); + + return buffer; + } + + private void checkCoherency() { + if (size < 0) { + throw new RuntimeException("A buffer cannot have a negative size: " + size); + } + + if (local && data != null) { + throw new RuntimeException("Local buffers cannot be initialized using CPU data"); + } + + if (datasize > 0 && size > datasize) { + throw new RuntimeException("The buffer size is greater than the input data size"); + } + } + +} diff --git a/src/mcmas/core/MCMChrono.java b/src/mcmas/core/MCMChrono.java new file mode 100644 index 0000000..61e4279 --- /dev/null +++ b/src/mcmas/core/MCMChrono.java @@ -0,0 +1,36 @@ +package mcmas.core; + +public class MCMChrono { + + private String tag; + private long start; + private long stop; + + public MCMChrono(String tag) { + this.tag = tag; + } + + public MCMChrono start() { + this.start = System.nanoTime(); + return this; + } + + public MCMChrono start(String tag) { + this.tag = tag; + return this.start(); + } + + public MCMChrono stop() { + this.stop = System.nanoTime(); + return this; + } + + public double getValue() { + return ((stop > start ? stop - start : 0) / 1000) / 1000.0; + } + + public String toString() { + return "[ " + tag + " ] Time (ms) : " + getValue(); + } + +} diff --git a/src/mcmas/core/MCMCommandQueue.java b/src/mcmas/core/MCMCommandQueue.java new file mode 100644 index 0000000..78494f6 --- /dev/null +++ b/src/mcmas/core/MCMCommandQueue.java @@ -0,0 +1,220 @@ +package mcmas.core; + +import java.nio.ByteBuffer; + +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.jocl.Pointer; +import org.jocl.cl_command_queue; +import org.jocl.struct.Buffers; +import org.jocl.struct.Struct; + +import static mcmas.core.MCMEvent.events_arr; + +public class MCMCommandQueue extends MCMObject { + + private final MCMContext context; + private final cl_command_queue queue; + + MCMCommandQueue(MCMContext context, MCMCommandQueueProperty... properties) { + this(context, context.getDevices()[0], properties); + } + + MCMCommandQueue(MCMContext context, MCMDevice device, MCMCommandQueueProperty... properties) { + this(context, device, MCMUtils.binaryOr(properties)); + } + + MCMCommandQueue(MCMContext context, long... properties) { + this(context, context.getDevices()[0], properties); + } + + MCMCommandQueue(MCMContext context, MCMDevice device, long... properties) { + context = Objects7.requireNonNull(context, "Can't create a command queue using a null context"); + device = Objects7.requireNonNull(device, "Can't create a command queue using a null device"); + + this.queue = MCMHelpers.createCommandQueue(context.getContext(), device.getId(), MCMUtils.binaryOr(properties)); + this.context = context; + } + + public cl_command_queue getQueue() { + return queue; + } + + public MCMContext getContext() { + return context; + } + + // READ BUFFER (BLOCKING) + + public void blockingReadBuffer(MCMMem buffer, Pointer data, long offset, long size, MCMEvent... events) { + internalReadBuffer(buffer, data, offset, size, true, events); + } + + public void blockingReadBuffer(MCMMem buffer, Struct[] data, long offset, long size, MCMEvent... events) { + ByteBuffer temp = Buffers.allocateBuffer(data); + internalReadBuffer(buffer, Pointer.to(temp), offset, size, true, events); + Buffers.readFromBuffer(temp, data); + } + + // READ BUFFER (ASYNC) + + public MCMEvent enqueueReadBuffer(MCMMem buffer, Pointer data, long offset, long size, MCMEvent... events) { + return internalReadBuffer(buffer, data, offset, size, false, events); + } + + public MCMEvent enqueueReadBuffer(MCMMem buffer, Struct[] data, long offset, long size, MCMEvent... events) { + MCMEvent newEvent; + + ByteBuffer temp = Buffers.allocateBuffer(data); + newEvent = internalReadBuffer(buffer, Pointer.to(temp), offset, size, false, events); + this.register(newEvent); + + Buffers.readFromBuffer(temp, data); + + return newEvent; + } + + // READ BUFFER (IMPLEM) + + private MCMEvent internalReadBuffer(MCMMem buffer, Pointer data, long offset, long size, boolean blocking, MCMEvent... events) { + Objects7.requireNonNull(buffer, "Can't read from a null buffer"); + + if (blocking) { + CL.clEnqueueReadBuffer(queue, buffer.getMem(), blocking, offset, size, data, events.length, events_arr(events), null); + return null; + } else { + MCMEvent newEvent = new MCMEvent(); + this.register(newEvent); + + CL.clEnqueueReadBuffer(queue, buffer.getMem(), blocking, offset, size, data, events.length, events_arr(events), newEvent.getEvent()); + return newEvent; + } + } + + // WRITE BUFFER (BLOCKING) + + public void blockingWriteBuffer(MCMMem buffer, Pointer data, long offset, long size, MCMEvent... events) { + internalWriteBuffer(buffer, data, offset, size, true, events); + } + + public void blockingWriteBuffer(MCMMem buffer, Struct[] data, long offset, long size, MCMEvent... events) { + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + + internalWriteBuffer(buffer, Pointer.to(temp), offset, size, true, events); + } + + /* + public void blockingWriteBuffer(OCLMem buffer, OCLPointer data, long offset, long size, OCLEvent... events) { + internalWriteBuffer(buffer, data, offset, size, true, events); + } + + public void blockingWriteBuffer(OCLMem buffer, OCLPointer data, OCLEvent... events) { + internalWriteBuffer(buffer, data, 0, buffer.getSize(), true, events); + }*/ + + // WRITE BUFFER (ASYNC) + + public MCMEvent enqueueWriteBuffer(MCMMem buffer, Pointer data, long offset, long size, MCMEvent... events) { + return internalWriteBuffer(buffer, data, offset, size, false, events); + } + + public MCMEvent enqueueWriteBuffer(MCMMem buffer, Struct[] data, long offset, long size, MCMEvent... events) { + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + + return internalWriteBuffer(buffer, Pointer.to(temp), offset, size, false, events); + } + + // WRITE BUFFER (IMPLEM) + + private MCMEvent internalWriteBuffer(MCMMem buffer, Pointer data, long offset, long size, boolean blocking, MCMEvent... events) { + Objects7.requireNonNull(buffer, "Can't write to a null buffer"); + + if (blocking) { + CL.clEnqueueWriteBuffer(queue, buffer.getMem(), CL.CL_FALSE, offset, size, data, events.length, events_arr(events), null); + return null; + } else { + MCMEvent newEvent = new MCMEvent(); + this.register(newEvent); + + CL.clEnqueueWriteBuffer(queue, buffer.getMem(), CL.CL_FALSE, offset, size, data, events.length, events_arr(events), newEvent.getEvent()); + return newEvent; + } + } + + // COPY BUFFERS + + public MCMEvent enqueueCopyBuffer(MCMMem src, MCMMem dest, long src_offset, long dest_offset, long size, MCMEvent... events) { + Objects7.requireNonNull(src, "Can't copy a null source buffer"); + Objects7.requireNonNull(dest, "Can't copy a null dest buffer"); + + MCMEvent newEvent = new MCMEvent(); + this.register(newEvent); + + CL.clEnqueueCopyBuffer(queue, src.getMem(), dest.getMem(), src_offset, dest_offset, size, events.length, events_arr(events), newEvent.getEvent()); + return newEvent; + } + + // SUBMIT KERNELS + + public MCMEvent enqueueKernel(MCMKernel kernel, int dim, long[] global, MCMEvent... events) { + return enqueueKernel(kernel, dim, null, global, null, events); + } + + public MCMEvent enqueueKernel(MCMKernel kernel, int dim, long[] global, long[] local, MCMEvent... events) { + return enqueueKernel(kernel, dim, null, global, local, events); + } + + public MCMEvent enqueueKernel(MCMKernel kernel, int dim, long[] global_offset, long[] global, long[] local, MCMEvent... events) { + Objects7.requireNonNull(kernel, "Can't enqueue a null kernel"); + Objects7.requireNonNull(global, "Global dimensions must be a non-null array"); + + if (global_offset != null && context.getPlatforms()[0].getSupportedVersionInt() < MCM.CL_VERSION_1_1) { + throw new IllegalArgumentException("Non-null global offset is not supported in OpenCL < 1.1"); + } + + MCMEvent newEvent = new MCMEvent(); + this.register(newEvent); + + CL.clEnqueueNDRangeKernel(queue, kernel.getKernel(), dim, global_offset, global, local, events.length, events_arr(events), newEvent.getEvent()); + return newEvent; + } + + public MCMEvent enqueue1DKernel(MCMKernel kernel, long global, MCMEvent... events) { + return enqueueKernel(kernel, 1, null, new long[] { global }, null, events); + } + + public MCMEvent enqueue1DKernel(MCMKernel kernel, long global, long local, MCMEvent... events) { + return enqueueKernel(kernel, 1, null, new long[] { global }, new long[] { local }, events); + } + + public MCMEvent enqueue1DKernel(MCMKernel kernel, long offset, long global, long local, MCMEvent... events) { + return enqueueKernel(kernel, 1, new long[] { offset }, new long[] { global }, new long[] { local }, events); + } + + public MCMEvent enqueueTask(MCMKernel kernel, MCMEvent... events) { + Objects7.requireNonNull(kernel, "Can't enqueue a null task"); + + MCMEvent newEvent = new MCMEvent(); + this.register(newEvent); + + CL.clEnqueueTask(queue, kernel.getKernel(), events.length, events_arr(events), newEvent.getEvent()); + return newEvent; + } + + public void flush() { + CL.clFlush(queue); + } + + public void finish() { + CL.clFinish(queue); + } + + @Override + protected void releaseImpl() { + CL.clReleaseCommandQueue(queue); + } + +} diff --git a/src/mcmas/core/MCMCommandQueueProperty.java b/src/mcmas/core/MCMCommandQueueProperty.java new file mode 100644 index 0000000..08eb12e --- /dev/null +++ b/src/mcmas/core/MCMCommandQueueProperty.java @@ -0,0 +1,20 @@ +package mcmas.core; + +import org.jocl.CL; + +public enum MCMCommandQueueProperty implements MCMFlag { + ENABLE_OOO_MODE (CL.CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE), + ENABLE_PROFILING (CL.CL_QUEUE_PROFILING_ENABLE); + + public final long value; + + private MCMCommandQueueProperty(long value) { + this.value = value; + } + + @Override + public long getValue() { + return value; + } + +} diff --git a/src/mcmas/core/MCMContext.java b/src/mcmas/core/MCMContext.java new file mode 100644 index 0000000..1908e6b --- /dev/null +++ b/src/mcmas/core/MCMContext.java @@ -0,0 +1,163 @@ +package mcmas.core; + +import java.nio.Buffer; + +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.jocl.Pointer; +import org.jocl.cl_context; +import org.jocl.cl_device_id; +import org.jocl.cl_image_format; +import org.jocl.cl_platform_id; + + +public class MCMContext extends MCMObject { + + private final cl_context context; + //private final static Logger logger = LoggerFactory.getLogger(OCLContext.class); + + public MCMContext() { + MCMPlatform[] platforms = MCMPlatform.getPlatforms(); + + if (platforms.length <= 0) { + throw new RuntimeException("No OpenCL plaform found"); + } + + this.context = MCMHelpers.createContextFromType(platforms[0].getId(), + CL.CL_DEVICE_TYPE_GPU, CL.CL_DEVICE_TYPE_CPU); + + if (context == null) { + throw new RuntimeException("No CPU or GPU device found"); + } + } + + public MCMContext(MCMPlatform platform) { + this(platform, CL.CL_DEVICE_TYPE_GPU, CL.CL_DEVICE_TYPE_CPU); + } + + public MCMContext(long... deviceTypes) { + MCMPlatform[] platforms = MCMPlatform.getPlatforms(); + + if (platforms.length <= 0) { + throw new RuntimeException("No OpenCL plaform found"); + } + + this.context = MCMHelpers.createContextFromType(platforms[0].getId(), deviceTypes); + + if (context == null) { + throw new RuntimeException("No OpenCL device found"); + } + } + + public MCMContext(MCMPlatform platform, long... deviceTypes) { + platform = Objects7.requireNonNull(platform, "Can't create an OpenCL context with a null platform"); + + System.out.println("platform vendor : " + platform.getInfoString(CL.CL_PLATFORM_VENDOR)); + System.out.println("platform name : " + platform.getInfoString(CL.CL_PLATFORM_NAME)); + + this.context = MCMHelpers.createContextFromType(platform.getId(), deviceTypes); + + if (context == null) { + throw new RuntimeException("No OpenCL device found"); + } + } + + public cl_context getContext() { + return context; + } + + public MCMPlatform[] getPlatforms() { + cl_platform_id[] platform_ids = MCMHelpers.getPlatforms(); + MCMPlatform[] platforms = new MCMPlatform[platform_ids.length]; + + for (int i = 0; i < platform_ids.length; i++) { + platforms[i] = new MCMPlatform(platform_ids[i]); + } + + return platforms; + } + + public MCMDevice[] getDevices() { + cl_device_id[] device_ids = MCMHelpers.getDevices(context); + MCMDevice[] devices = new MCMDevice[device_ids.length]; + for (int i = 0; i < device_ids.length; i++) { + devices[i] = new MCMDevice(device_ids[i]); + } + return devices; + } + + public MCMCommandQueue createCommandQueue(MCMCommandQueueProperty... properties) { + MCMCommandQueue q = new MCMCommandQueue(this, properties); + this.register(q); + return q; + } + + public MCMCommandQueue createCommandQueue(MCMDevice device, MCMCommandQueueProperty... properties) { + MCMCommandQueue q = new MCMCommandQueue(this, device, properties); + this.register(q); + return q; + } + + public MCMProgram createProgram(String source, String... options) { + MCMProgram p = new MCMProgram(this, source, options); + this.register(p); + return p; + } + + public MCMProgram createProgram(String source, MCMProgramOptions options) { + MCMProgram p = new MCMProgram(this, source, options.toString()); + this.register(p); + return p; + } + + public MCMProgram createProgramFromFile(String file, String... options) { + MCMProgram p = new MCMProgram(this, MCMUtils.readFileAsString(file), options); + this.register(p); + return p; + } + + public MCMProgram createProgramFromFile(String file, MCMProgramOptions options) { + MCMProgram p = new MCMProgram(this, MCMUtils.readFileAsString(file), options.toString()); + this.register(p); + return p; + } + + public MCMMemBuilder newBuffer() { + return new MCMMemBuilder(this); + } + + public MCMBufferBuilder newBuffer2() { + return new MCMBufferBuilder(this); + } + + public MCMMem createImage2d(long flags, int channelType, int width, int height) { + cl_image_format[] format = new cl_image_format[1]; + format[0].image_channel_order = CL.CL_RGBA; + format[0].image_channel_data_type = channelType; + + return new MCMMem(CL.clCreateImage2D(context, flags, format, width, height, 0, null, null)); + } + + public MCMMem createImage2d(long flags, int channelType, int width, int height, Buffer data) { + cl_image_format[] format = new cl_image_format[1]; + format[0].image_channel_order = CL.CL_RGBA; + format[0].image_channel_data_type = channelType; + + return new MCMMem(CL.clCreateImage2D(context, flags, format, width, height, 0, Pointer.to(data), null)); + } + + public MCMMem createImage2d(long flags, int channelType, int width, int height, Pointer data) { + cl_image_format[] format = new cl_image_format[1]; + format[0].image_channel_order = CL.CL_RGBA; + format[0].image_channel_data_type = channelType; + + return new MCMMem(CL.clCreateImage2D(context, flags, format, width, height, 0, data, null)); + } + + @Override + protected void releaseImpl() { + CL.clReleaseContext(context); + } + +} diff --git a/src/mcmas/core/MCMDevice.java b/src/mcmas/core/MCMDevice.java new file mode 100644 index 0000000..e743643 --- /dev/null +++ b/src/mcmas/core/MCMDevice.java @@ -0,0 +1,79 @@ +package mcmas.core; + +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_device_id; + + +public class MCMDevice { + + public static final int ADDRESS_BYTES = CL.CL_DEVICE_ADDRESS_BITS; + public static final int AVAILABLE = CL.CL_DEVICE_ADDRESS_BITS; + public static final int COMPILER_AVAILABLE = CL.CL_DEVICE_COMPILER_AVAILABLE; + + private final cl_device_id id; + + public MCMDevice(cl_device_id id) { + id = Objects7.requireNonNull(id, "Can't create a device using a null id"); + this.id = id; + } + + public cl_device_id getId() { + return id; + } + + public String getDeviceName() { + return getInfoString(CL.CL_DEVICE_NAME); + } + + private void getDeviceInfo(int param, int size, Pointer value) { + CL.clGetDeviceInfo(id, param, size, value, null); + } + + public int getInfoInt(int param) { + int[] result = new int[1]; + getDeviceInfo(param ,Sizeof.cl_int, Pointer.to(result)); + return result[0]; + } + + public long getInfoLong(int param) { + long[] result = new long[1]; + getDeviceInfo(param ,Sizeof.cl_long, Pointer.to(result)); + return result[0]; + } + + public String getInfoString(int param) { + long [] size = new long[1]; + CL.clGetDeviceInfo(id, param, 0, null, size); + + byte [] value = new byte[(int) (size[0])]; + CL.clGetDeviceInfo(id, param, size[0], Pointer.to(value), null); + + // Skip the final NULL character (value is a C string) + return new String(value, 0, Math.max(0, (int) size[0] - 1)); + } + + public String toString() { + StringBuilder b = new StringBuilder(); + + b.append(super.toString() + "\n"); + b.append(" name: " + getInfoString(CL.CL_DEVICE_NAME) + "\n"); + b.append(" vendor: " + getInfoString(CL.CL_DEVICE_VENDOR) + "\n"); + b.append(" version: " + getInfoString(CL.CL_DEVICE_VERSION) + "\n"); + b.append(" cores: " + getInfoInt(CL.CL_DEVICE_MAX_COMPUTE_UNITS) + "\n"); + b.append(" max workgroup size: " + getInfoLong(CL.CL_DEVICE_MAX_WORK_GROUP_SIZE) + "\n"); + b.append(" max dimensions: " + getInfoInt(CL.CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS) + "\n"); + b.append(" global mem size: " + getInfoLong(CL.CL_DEVICE_GLOBAL_MEM_SIZE) / 1048576 + " MB\n"); + b.append(" max alloc size: " + getInfoLong(CL.CL_DEVICE_MAX_MEM_ALLOC_SIZE) / 1048576 + " MB\n"); + b.append(" max constant size: " + getInfoLong(CL.CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE) / 1024 + " KB\n"); + b.append(" local mem size: " + getInfoLong(CL.CL_DEVICE_LOCAL_MEM_SIZE) / 1024 + " KB\n"); + b.append(" global cache size: " + getInfoLong(CL.CL_DEVICE_GLOBAL_MEM_CACHE_SIZE) / 1024 + " KB\n"); + + return b.toString(); + } + + +} diff --git a/src/mcmas/core/MCMEvent.java b/src/mcmas/core/MCMEvent.java new file mode 100644 index 0000000..cc19524 --- /dev/null +++ b/src/mcmas/core/MCMEvent.java @@ -0,0 +1,143 @@ +package mcmas.core; + +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_event; + + +public class MCMEvent extends MCMObject implements Future { + + private final cl_event event; + + public static MCMEvent createUserEvent(MCMContext context) { + context = Objects7.requireNonNull(context, "Can't create an user event using a null context"); + int v = context.getPlatforms()[0].getSupportedVersionInt(); + + if (v <= MCM.CL_VERSION_1_1) { + throw new RuntimeException("This function is not supported on OpenCL < 1.1"); + } + + return new MCMEvent(MCMHelpers.createUserEvent(context.getContext())); + } + + public MCMEvent() { + this.event = new cl_event(); + } + + private MCMEvent(cl_event e) { + e = Objects7.requireNonNull(e, "Can't create a null event"); + this.event = e; + } + + public cl_event getEvent() { + return event; + } + + public MCMEventStatus getStatus() { + int [] status = new int[1]; + CL.clGetEventInfo(event, CL.CL_EVENT_COMMAND_EXECUTION_STATUS, Sizeof.cl_int, Pointer.to(status), null); + return MCMEventStatus.wrap(status[0]); + } + + public long getProfilingInfo(MCMProfilingInfo info) { + long [] result = new long[1]; + CL.clGetEventProfilingInfo(event, info.value, Sizeof.cl_ulong, Pointer.to(result), null); + return result[0]; + } + + public long getWaitDuration() { + return getProfilingInfo(MCMProfilingInfo.COMMAND_START) - getProfilingInfo(MCMProfilingInfo.COMMAND_QUEUED); + } + + public long getExecutionDuration() { + return getProfilingInfo(MCMProfilingInfo.COMMAND_END) - getProfilingInfo(MCMProfilingInfo.COMMAND_START); + } + + protected void releaseImpl() { + CL.clReleaseEvent(event); + } + + /* + public static void waitFor(OCLEvent event) { + System.out.println("waitFor1"); + cl_event e = event.getEvent(); + CL.clWaitForEvents(1, new cl_event[] { e }); + System.out.println("waitFor2"); + }*/ + + public static void waitFor(MCMEvent... events) { + CL.clWaitForEvents(events.length, events_arr(events)); + } + + public void addListener(MCMEventStatus status, MCMEventListener listener, Object data) { + CL.clSetEventCallback(event, status.value, listener, data); + } + + public static cl_event[] events_arr(MCMEvent... events) { + if (events.length == 0) return null; + + cl_event[] array = new cl_event[events.length]; + for (int i = 0; i < events.length; i++) { + array[i] = events[i].event; + } + return array; + } + + @Override + public boolean cancel(boolean interruptIfRunning) { + return false; + } + + @Override + public Void get() throws InterruptedException, ExecutionException { + waitFor(this); + return null; + } + + @Override + public Void get(long timeout, TimeUnit unit) throws InterruptedException, + ExecutionException, TimeoutException { + // throw new UnsupportedOperationException("This feature isn't supported by OpenCL"); + + long msWaited = 0; + final long msDelay = 100; + final long msTimeout = unit.convert(timeout, TimeUnit.MILLISECONDS); + + while (msWaited <= msTimeout) { + if (isCancelled()) { + throw new CancellationException(); + } else if (isDone()) { + break; + } + + msWaited += msDelay; + Thread.sleep(msDelay); + } + + if (msWaited > msTimeout) { + throw new TimeoutException(); + } + + return null; + } + + @Override + public boolean isCancelled() { + return false; + } + + @Override + public boolean isDone() { + return getStatus() == MCMEventStatus.COMPLETE; + } + +} diff --git a/src/mcmas/core/MCMEventListener.java b/src/mcmas/core/MCMEventListener.java new file mode 100644 index 0000000..dd08cb9 --- /dev/null +++ b/src/mcmas/core/MCMEventListener.java @@ -0,0 +1,7 @@ +package mcmas.core; + +import org.jocl.EventCallbackFunction; + +public interface MCMEventListener extends EventCallbackFunction { + +} diff --git a/src/mcmas/core/MCMEventStatus.java b/src/mcmas/core/MCMEventStatus.java new file mode 100644 index 0000000..a7c9c4a --- /dev/null +++ b/src/mcmas/core/MCMEventStatus.java @@ -0,0 +1,32 @@ +package mcmas.core; + +import org.jocl.CL; + +/** + * Represents all the possible states for a MCMEvent + */ +public enum MCMEventStatus { + QUEUED (CL.CL_QUEUED), + SUBMITTED (CL.CL_SUBMITTED), + RUNNING (CL.CL_RUNNING), + COMPLETE (CL.CL_COMPLETE); + + public final int value; + + private MCMEventStatus(int value) { + this.value = value; + } + + /** + * Create a MCMEventStatus objet from a native value + * @param value value to wrap + * @return a new MCMEventStatus + */ + public static MCMEventStatus wrap(int value) { + for (MCMEventStatus status : MCMEventStatus.values()) { + if (status.value == value) return status; + } + return null; + } + +} diff --git a/src/mcmas/core/MCMFlag.java b/src/mcmas/core/MCMFlag.java new file mode 100644 index 0000000..ec591c2 --- /dev/null +++ b/src/mcmas/core/MCMFlag.java @@ -0,0 +1,13 @@ +package mcmas.core; + +/** + * Very simple interface for all bitmask-like properties in MCM. + */ +public interface MCMFlag { + + /** + * Return the native long value associated with this flag + * @return a long value + */ + public long getValue(); +} diff --git a/src/mcmas/core/MCMHelpers.java b/src/mcmas/core/MCMHelpers.java new file mode 100644 index 0000000..c124ba2 --- /dev/null +++ b/src/mcmas/core/MCMHelpers.java @@ -0,0 +1,289 @@ +package mcmas.core; + +import org.jocl.CL; +import org.jocl.CLException; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_command_queue; +import org.jocl.cl_context; +import org.jocl.cl_context_properties; +import org.jocl.cl_device_id; +import org.jocl.cl_event; +import org.jocl.cl_kernel; +import org.jocl.cl_mem; +import org.jocl.cl_platform_id; +import org.jocl.cl_program; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Package-specific helpers used to allocate native objets. + */ +class MCMHelpers { + + private final static Logger logger = LoggerFactory.getLogger(MCMHelpers.class); + + static { + CL.setExceptionsEnabled(true); + } + + /** + * Create a new cl_context object trying each of the specified devices types. + * @param properties properties for the returned context + * @param types types to try when searching for supported devices + * @return a new cl_context + */ + public static cl_context createContextFromType(cl_context_properties properties, long... types) { + cl_context context = null; + + for (long type : types) { + try { + context = CL.clCreateContextFromType(properties, type, null, null, null); + } catch (CLException e) { + logger.debug("No device of type " + type + " found."); + } + + if (context != null) { + logger.debug("Device of type " + type + " found."); + break; + } + } + + return context; + } + + /** + * Create a new cl_context from a specified platform and one or more device types. + * @param platform platform to use as support + * @param types types to try when searching for supported devices. + * @return a new cl_context + */ + public static cl_context createContextFromType(cl_platform_id platform, long... types) { + cl_context_properties properties = new cl_context_properties(); + properties.addProperty(CL.CL_CONTEXT_PLATFORM, platform); + return createContextFromType(properties, types); + } + + /** + * Create a new context from one or more device types. + * @param types types to try when searching for supported devices. + * @return a new cl_context + */ + public static cl_context createContextFromType(long... types) { + return createContextFromType((cl_context_properties) null, types); + } + + /** + * Create a new cl_event + * @return a new cl_event + */ + public static cl_event createEvent() { + return new cl_event(); + } + + /** + * Create a new cl_mem object + * @param context context to use for the allocation + * @param flags memory flags to use + * @param size size to allocate + * @param data CPU data to use for initialization (can be null). + * @return a new cl_mem object + */ + public static cl_mem createMem(cl_context context, long flags, long size, Pointer data) { + // Use host accessible PCI-E memory + /*flags |= CL.CL_MEM_ALLOC_HOST_PTR; + + // If there is already data (to PCI-E memory) + if (data != null) { + flags |= CL.CL_MEM_COPY_HOST_PTR; + }*/ + + return CL.clCreateBuffer(context, flags, size, data, null); + } + + /** + * Create a new cl_command_queue + * @param context context to use + * @param properties properties for the new queue + * @return a new cl_command_queue + */ + public static cl_command_queue createCommandQueue(cl_context context, long properties) { + return createCommandQueue(context, getDevices(context)[0], properties); + } + + /** + * Create a new cl_command_queue for a specific device + * @param context context to use + * @param device device to use + * @param properties properties for the new queue + * @return a new cl_command_queue + */ + public static cl_command_queue createCommandQueue(cl_context context, cl_device_id device, long properties) { + return CL.clCreateCommandQueue(context, device, properties, null); + } + + /** + * Create a new cl_program + * @param context context to use + * @param source source code for the program + * @param options compilation option to use to generate the program + * @return + */ + public static cl_program createProgram(cl_context context, String source, String options) { + //String buildOptions = options + " -cl-nv-verbose --ptxas-options=-v"; + String buildOptions = options; + + cl_program program = CL.clCreateProgramWithSource(context, 1, new String[] {source}, null, null); + CL.clBuildProgram(program, 0, null, buildOptions, null, null); + + return program; + } + + /** + * Create a new cl_kernel + * @param program program containing the kernel definition + * @param functionName name of the function to use as kernel + * @return + */ + public static cl_kernel createKernel(cl_program program, String functionName) { + return CL.clCreateKernel(program, functionName, null); + } + + /** + * Create a new user event + * @param context context to use + * @return a new cl_event + */ + public static cl_event createUserEvent(cl_context context) { + int [] error = new int[1]; + cl_event e = CL.clCreateUserEvent(context, error); + + if (error[0] != CL.CL_SUCCESS) { + throw new RuntimeException("Error creating a new event: " + error[0]); + } + + return e; + } + + /** + * Get the version of OpenCL supported by the platform. + * @param id platform + * @return an int array of two elements : the major and minor version digit + */ + public static int[] getSupportedOpenCLVersion(cl_platform_id id) { + int [] version = new int[2]; + + long [] bufferSize = new long[1]; + + CL.clGetPlatformInfo(id, CL.CL_PLATFORM_VERSION, 0, null, bufferSize); + + byte[] buffer = new byte[(int) bufferSize[0]]; + + CL.clGetPlatformInfo(id, CL.CL_PLATFORM_VERSION, bufferSize[0], Pointer.to(buffer), null); + + String verString = new String(buffer, 0, (int) bufferSize[0]); + + String[] token = verString.split(" ")[1].split("[.]"); + + version[0] = Integer.parseInt(token[0]); + version[1] = Integer.parseInt(token[1]); + + return version; + } + + /** + * Get the version of OpenCL supported by the platform. + * @param id + * @return an int where the first digit indicates the major version, + * and the second digit the minor version. + */ + public static int getSupportedOpenCLVersionAsInt(cl_platform_id id) { + int [] tokens = getSupportedOpenCLVersion(id); + return tokens[0] * 100 + tokens[1] * 10; + } + + /** + * Get all available local platforms. + * @return an array of platforms. + */ + public static cl_platform_id[] getPlatforms() { + int [] num = new int[1]; + CL.clGetPlatformIDs(0, null, num); + + cl_platform_id[] platforms = new cl_platform_id[num[0]]; + CL.clGetPlatformIDs(num[0], platforms, null); + + return platforms; + } + + /** + * Get all available devices for a specified platform. + * @param platform platform to use + * @param deviceType device type to search for + * @return an array of devices + */ + public static cl_device_id[] getDevices(cl_platform_id platform, long deviceType) { + int [] num = new int[1]; + CL.clGetDeviceIDs(platform, deviceType, 0, null, num); + + cl_device_id[] devices = new cl_device_id[num[0]]; + CL.clGetDeviceIDs(platform, deviceType, num[0], devices, null); + + return devices; + } + + /** + * Get all available devices for a specified context + * @param context context to use + * @return an array of devices + */ + public static cl_device_id[] getDevices(cl_context context) { + + // Get the total number of devices associated to this context + long[] size = new long[1]; + CL.clGetContextInfo(context, CL.CL_CONTEXT_DEVICES, 0, null, size); + + // Retrieve them + int numDevices = (int) size[0] / Sizeof.cl_device_id; + cl_device_id devices[] = new cl_device_id[numDevices]; + CL.clGetContextInfo(context, CL.CL_CONTEXT_DEVICES, size[0], Pointer.to(devices), null); + + return devices; + } + + /** + * Combine multiple MCMFlag objects into one long bitmask + * @param flags flags to combine + * @return a bitmask + */ + public static long binaryFlag(MCMFlag... flags) { + long value = 0; + + for (MCMFlag flag : flags) { + value |= flag.getValue(); + } + + return value; + } + + /** + * Set a particular flag in a existing bitmask + * @param value existing bitmask + * @param flag flag to set + * @return the new bitmask + */ + public static long flagSet(long value, MCMFlag flag) { + return value | flag.getValue(); + } + + /** + * Check if a particular flag is set in an existing bitmask + * @param value existing bitmask + * @param flag flag to check + * @return whether the flag is set + */ + public static boolean isFlagSet(long value, MCMFlag flag) { + return (value & flag.getValue()) != 0; + } + +} diff --git a/src/mcmas/core/MCMKernel.java b/src/mcmas/core/MCMKernel.java new file mode 100644 index 0000000..3adc390 --- /dev/null +++ b/src/mcmas/core/MCMKernel.java @@ -0,0 +1,113 @@ +package mcmas.core; + +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.jocl.CLException; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_kernel; +import org.jocl.cl_mem; + +/** + * MCM representation of an OpenCL kernel. + */ +public class MCMKernel extends MCMObject { + + private final cl_kernel kernel; + + /** + * Create a new MCMKernel from the specified program and function name. + * @param program compiled program containing the kernel + * @param name name of the function to use as kernel + */ + public MCMKernel(MCMProgram program, String name) { + program = Objects7.requireNonNull(program, "Can't create a kernel from a null program"); + this.kernel = MCMHelpers.createKernel(program.getProgram(), name); + } + + /** + * Retrieve the native cl_kernel object for interoperability with JOCL. + * @return + */ + public cl_kernel getKernel() { + return kernel; + } + + /** + * Set the arguments for kernel call in one pass. + * @param params parameters to use (MCMMem objects or primitive types) + */ + public void setArguments(Object... params) { + // Map arguments to function + for (int i = 0; i < params.length; i++) { + setArgument(i, params[i]); + } + } + + /** + * Set the argument at a particular position + * @param index index of the argument to set + * @param param value for the argument (MCMMem object or primitive type) + */ + public void setArgument(int index, Object param) { + Pointer p = null; + long size; + + if (param == null) { + throw new CLException("NULL cannot be passed to a kernel"); + } else if (param instanceof Pointer) { + p = (Pointer) param; + size = Sizeof.cl_mem; + } else if (param instanceof MCMMem) { + MCMMem buffer = (MCMMem) param; + p = (buffer.isLocal() ? null : Pointer.to(buffer.getMem())); + size = Sizeof.cl_mem; + } else if (param instanceof cl_mem) { + p = Pointer.to((cl_mem) param); + size = Sizeof.cl_mem; + } else if (param instanceof Byte) { + p = Pointer.to(new byte[] { (Byte) param }); + size = Sizeof.cl_int8; + } else if (param instanceof Short) { + p = Pointer.to(new short[] { (Short) param }); + size = Sizeof.cl_short; + } else if (param instanceof Integer) { + p = Pointer.to(new int[] { (Integer) param }); + size = Sizeof.cl_int; + } else if (param instanceof Long) { + p = Pointer.to(new long[] { (Long) param }); + size = Sizeof.cl_long; + } else if (param instanceof Float) { + p = Pointer.to(new float[] { (Float) param }); + size = Sizeof.cl_float; + } else if (param instanceof Double) { + p = Pointer.to(new double[] { (Double) param }); + size = Sizeof.cl_double; + } else { + throw new CLException("Type " + param.getClass() + + " may not be passed to a function"); + } + + CL.clSetKernelArg(kernel, index, size, p); + } + + /** + * Retrieve the number of arguments expected by the kernel. + * @return the number of arguments required + */ + public int getArgumentsNumber() { + int[] size = new int[1]; + CL.clGetKernelInfo(kernel, CL.CL_KERNEL_NUM_ARGS, Sizeof.cl_uint, Pointer.to(size), null); + return size[0]; + } + + /** + * Release the native memory associated with this object. + */ + @Override + protected void releaseImpl() { + CL.clReleaseKernel(kernel); + } + +} diff --git a/src/mcmas/core/MCMMem.java b/src/mcmas/core/MCMMem.java new file mode 100644 index 0000000..bc47ec3 --- /dev/null +++ b/src/mcmas/core/MCMMem.java @@ -0,0 +1,102 @@ +package mcmas.core; + +import org.jocl.CL; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_mem; + +/** + * MCM representation for an opaque OpenCL cl_mem memory buffer. + */ +public class MCMMem extends MCMObject { + + private boolean local; + private boolean readOnly; + private final cl_mem mem; + private long size = -1; + + /** + * Create a new MCMMem object from a native cl_mem reference. + * + * @param mem memory buffer to wrap + */ + public MCMMem(cl_mem mem) { + this.local = false; + this.mem = mem; + } + + /** + * Create a new MCMMem object from a native cl_mem reference + * with an explicit size. + * + * @param mem memory buffer to wrap + * @param size explicit size for the memory buffer + */ + public MCMMem(cl_mem mem, long size) { + this.mem = mem; + this.size = size; + } + + /** + * Mark the buffer as a local OpenCL buffer. + * This type of buffer is only usable in the kernel and must have a null + * mem attribute (i.e. it cannot be initialized). + */ + public void setLocal(boolean local) { + this.local = local; + } + + /** + * Check if the buffer is local. + */ + public boolean isLocal() { + return local; + } + + /** + * Mark the buffer as a read-only (constant) OpenCL buffer. + * This type of buffer can only be written on the CPU, not in the kernel. + */ + public void setReadOnly(boolean readOnly) { + this.readOnly = readOnly; + } + + /** + * Check if the buffer is read-only + */ + public boolean isReadOnly() { + return readOnly; + } + + /** + * Retrieve the wrapped cl_mem reference. Allows usage of MCMMem objet + * in JOCL methods. + * @return the wrapped cl_mem reference + */ + public cl_mem getMem() { + return mem; + } + + /** + * Get wrapped cl_mem memory size using an OpenCL request + * or using the cached value. + * @return the buffer size in bytes + */ + public long getSize() { + if (size == -1) { + long[] nsize = new long[1]; + CL.clGetMemObjectInfo(mem, CL.CL_MEM_SIZE, Sizeof.cl_long, Pointer.to(nsize), null); + size = nsize[0]; + } + + return size; + } + + /** + * Release the native memory associated to this object. + */ + public void releaseImpl() { + CL.clReleaseMemObject(mem); + } + +} diff --git a/src/mcmas/core/MCMMemBuilder.java b/src/mcmas/core/MCMMemBuilder.java new file mode 100644 index 0000000..758da1c --- /dev/null +++ b/src/mcmas/core/MCMMemBuilder.java @@ -0,0 +1,203 @@ +package mcmas.core; + +import java.nio.Buffer; +import java.nio.ByteBuffer; + +import mcmas.utils.BuffersUtils; + +import org.jocl.CL; +import org.jocl.NativePointerObject; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_mem; +import org.jocl.struct.Buffers; +import org.jocl.struct.SizeofStruct; +import org.jocl.struct.Struct; + +public class MCMMemBuilder { + + private long size; + private Pointer data; + private long datasize; + private boolean readonly; + private boolean local; + + private MCMContext context; + + public MCMMemBuilder(MCMContext context) { + this.size = -1; + this.datasize = -1; + this.data = null; + this.context = context; + this.readonly = false; + this.local = false; + } + + public MCMMemBuilder Constant() { + this.readonly = true; + return this; + } + + public MCMMemBuilder Local() { + this.local = true; + return this; + } + + public MCMMemBuilder Size(long n) { + this.size = n; + checkSizeCoherency(); + return this; + } + + public MCMMemBuilder Size(MCMType type) { + return Size(type.size); + } + + public MCMMemBuilder Size(long n, MCMType type) { + return Size(n * type.size); + } + + public MCMMemBuilder Size(long n, Class type) { + return Size(n * SizeofStruct.sizeof(type)); + } + + public MCMMemBuilder Size(Buffer data) { + return Size(BuffersUtils.sizeOf(data)); + } + + public MCMMemBuilder Using(Pointer data) { + if (local) { throw new RuntimeException("Local buffers must remain uninitialized"); } + this.data = data; + return this; + } + + public MCMMemBuilder Using(long datasize, Pointer data) { + if (local) { throw new RuntimeException("Local buffers must remain uninitialized"); } + this.datasize = datasize; + this.data = data; + return this; + } + + public MCMMemBuilder Using(byte... data) { + return Using(data.length * Sizeof.cl_char, Pointer.to(data)); + } + + public MCMMemBuilder Using(char... data) { + return Using(data.length * Sizeof.cl_char, Pointer.to(data)); + } + + public MCMMemBuilder Using(short... data) { + return Using(data.length * Sizeof.cl_short, Pointer.to(data)); + } + + public MCMMemBuilder Using(int... data) { + return Using(data.length * Sizeof.cl_int, Pointer.to(data)); + } + + public MCMMemBuilder Using(long... data) { + return Using(data.length * Sizeof.cl_long, Pointer.to(data)); + } + + public MCMMemBuilder Using(float... data) { + return Using(data.length * Sizeof.cl_float, Pointer.to(data)); + } + + public MCMMemBuilder Using(double... data) { + return Using(data.length * Sizeof.cl_double, Pointer.to(data)); + } + + /* + public OCLMemBuilder Using(Buffer data) { + return Using(Pointer.to(data)); + }*/ + + public MCMMemBuilder Using(Buffer data) { + return Using(BuffersUtils.sizeOf(data), Pointer.to(data)); + } + + /*public OCLMemBuilder Using(ByteBuffer data) { + return Using(data.capacity(), Pointer.to(data)); + } + + public OCLMemBuilder Using(CharBuffer data) { + return Using(data.capacity() * Sizeof.cl_char, Pointer.to(data)); + } + + public OCLMemBuilder Using(ShortBuffer data) { + return Using(data.capacity() * Sizeof.cl_short, Pointer.to(data)); + } + + public OCLMemBuilder Using(IntBuffer data) { + return Using(data.capacity() * Sizeof.cl_int, Pointer.to(data)); + } + + public OCLMemBuilder Using(LongBuffer data) { + return Using(data.capacity() * Sizeof.cl_long, Pointer.to(data)); + } + + public OCLMemBuilder Using(FloatBuffer data) { + return Using(data.capacity() * Sizeof.cl_float, Pointer.to(data)); + } + + public OCLMemBuilder Using(DoubleBuffer data) { + return Using(data.capacity() * Sizeof.cl_double, Pointer.to(data)); + }*/ + + public MCMMemBuilder Using(NativePointerObject data) { + return Using(Pointer.to(data)); + } + + public MCMMemBuilder Using(NativePointerObject... data) { + return Using(Pointer.to(data)); + } + + public MCMMemBuilder Using(Class type, Struct... data) { + long elemSize = SizeofStruct.sizeof(type); + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + return Using(data.length * elemSize, Pointer.to(temp)); + } + + /*public OCLMemBuilder Using(Struct data) { + long elemSize = SizeofStruct.sizeof(data.getClass()); + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + return Using( elemSize, Pointer.to(temp)); + }*/ + + public MCMMemBuilder Using(Struct... data) { + long elemSize = SizeofStruct.sizeof(data[0].getClass()); + ByteBuffer temp = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(temp, data); + return Using(data.length * elemSize, Pointer.to(temp)); + } + + public MCMMem b() { + long flags = 0; + cl_mem mem = null; + long asize = (size > 0 ? size : datasize); + if (readonly) { flags |= CL.CL_MEM_READ_ONLY; } + if (asize < 0) { throw new RuntimeException("No size specified"); } + if (data != null) { flags |= CL.CL_MEM_COPY_HOST_PTR; } + + // Actually allocate memory if this is not a local buffer + // (in which case mem MUST be NULL) + if (! local) { + mem = MCMHelpers.createMem(context.getContext(), flags, asize, data); + } + + MCMMem buffer = new MCMMem(mem); + buffer.setLocal(local); + buffer.setReadOnly(readonly); + context.register(buffer); + + return buffer; + } + + private void checkSizeCoherency() { + if (datasize > 0 && size > 0 && datasize > size) { + throw new RuntimeException("Size is superior to the size of the data used for initialization"); + } + } + +} diff --git a/src/mcmas/core/MCMMemFlag.java b/src/mcmas/core/MCMMemFlag.java new file mode 100644 index 0000000..799a893 --- /dev/null +++ b/src/mcmas/core/MCMMemFlag.java @@ -0,0 +1,21 @@ +package mcmas.core; + +import org.jocl.CL; + +public enum MCMMemFlag implements MCMFlag { + READ_ONLY (CL.CL_MEM_READ_ONLY), + WRITE_ONLY (CL.CL_MEM_WRITE_ONLY), + READ_WRITE (CL.CL_MEM_READ_WRITE); + + public final long value; + + private MCMMemFlag(long value) { + this.value = value; + } + + @Override + public long getValue() { + return value; + } + +} diff --git a/src/mcmas/core/MCMMemoryContext.java b/src/mcmas/core/MCMMemoryContext.java new file mode 100644 index 0000000..e78f7d5 --- /dev/null +++ b/src/mcmas/core/MCMMemoryContext.java @@ -0,0 +1,18 @@ +package mcmas.core; + +import java.util.Deque; + +public class MCMMemoryContext { + + public Deque objects; + + public void add(MCMObject object) { + objects.addFirst(object); + } + + public void releaseAllObjects() { + for (MCMObject o : objects) { + o.release(); + } + } +} diff --git a/src/mcmas/core/MCMObject.java b/src/mcmas/core/MCMObject.java new file mode 100644 index 0000000..b0c9d1f --- /dev/null +++ b/src/mcmas/core/MCMObject.java @@ -0,0 +1,38 @@ +package mcmas.core; + +public abstract class MCMObject { + + private boolean released = false; + private MCMMemoryContext memoryContext; + + public void setMemoryContext(MCMMemoryContext memoryContext) { + this.memoryContext = memoryContext; + } + + public MCMMemoryContext getMemoryContext() { + return memoryContext; + } + + public void register(MCMObject o) { + if (memoryContext != null) { + memoryContext.add(o); + o.setMemoryContext(memoryContext); + } + } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + if (! released) { + release(); + } + } + + public final void release() { + this.released = true; + releaseImpl(); + } + + protected abstract void releaseImpl(); + +} diff --git a/src/mcmas/core/MCMPlatform.java b/src/mcmas/core/MCMPlatform.java new file mode 100644 index 0000000..cf6914b --- /dev/null +++ b/src/mcmas/core/MCMPlatform.java @@ -0,0 +1,112 @@ +package mcmas.core; + +//import java.util.Arrays; + +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.cl_device_id; +import org.jocl.cl_platform_id; + + +public class MCMPlatform implements MCMRequestable { + + public final static int PROFILE = CL.CL_PLATFORM_PROFILE; + public final static int VERSION = CL.CL_PLATFORM_VERSION; + public final static int NAME = CL.CL_PLATFORM_NAME; + public final static int VENDOR = CL.CL_PLATFORM_VENDOR; + public final static int EXTENSIONS = CL.CL_PLATFORM_EXTENSIONS; + + public static MCMPlatform[] getPlatforms() { + cl_platform_id[] rawPlaforms = MCMHelpers.getPlatforms(); + MCMPlatform[] plaforms = new MCMPlatform[rawPlaforms.length]; + + for (int i = 0; i < rawPlaforms.length; i++) { + plaforms[i] = new MCMPlatform(rawPlaforms[i]); + } + + return plaforms; + } + + private cl_platform_id id; + private MCMProperties properties; + + public MCMPlatform(cl_platform_id id) { + id = Objects7.requireNonNull(id, "Can't create a null platform"); + this.id = id; + this.properties = new MCMProperties(this); + } + + public cl_platform_id getId() { + return id; + } + + public MCMDevice[] getDevices(long deviceType) { + cl_device_id[] rawDevices = MCMHelpers.getDevices(id, deviceType); + MCMDevice[] devices = new MCMDevice[rawDevices.length]; + + for (int i = 0; i < rawDevices.length; i++) { + devices[i] = new MCMDevice(rawDevices[i]); + } + + return devices; + } + + public int[] getSupportedCLVersion() { + return MCMHelpers.getSupportedOpenCLVersion(id); + } + + public int getSupportedVersionInt() { + return MCMHelpers.getSupportedOpenCLVersionAsInt(id); + } + + private void getPlatformInfo(int param, int size, Pointer value) { + CL.clGetPlatformInfo(id, param, size, value, null); + } + + public int getInfo(int param, long size, Pointer value, long[] returnSize) { + return CL.clGetPlatformInfo(id, param, size, value, returnSize); + } + + public int getInfoInt(int param) { + int[] result = new int[1]; + getPlatformInfo(param ,Sizeof.cl_int, Pointer.to(result)); + return result[0]; + } + + public long getInfoLong(int param) { + long[] result = new long[1]; + getPlatformInfo(param ,Sizeof.cl_long, Pointer.to(result)); + return result[0]; + } + + public String getInfoString(int param) { + long [] size = new long[1]; + CL.clGetPlatformInfo(id, param, 0, null, size); + + byte [] value = new byte[(int) (size[0])]; + CL.clGetPlatformInfo(id, param, size[0], Pointer.to(value), size); + + // Skip the final NULL character (value is a C string) + return new String(value, 0, Math.max(0, (int) size[0] - 1)); + } + + public MCMProperties getProperties() { + return properties; + } + + public String toString() { + StringBuilder b = new StringBuilder(); + + b.append(super.toString() + "\n"); + b.append(" name: " + getInfoString(CL.CL_PLATFORM_NAME) + "\n"); + b.append(" vendor: " + getInfoString(CL.CL_PLATFORM_VENDOR) + "\n"); + b.append(" version: " + getInfoString(CL.CL_PLATFORM_VERSION) + "\n"); + b.append(" extensions: " + getInfoString(CL.CL_PLATFORM_EXTENSIONS) + "\n"); + + return b.toString(); + } + +} diff --git a/src/mcmas/core/MCMPointer.java b/src/mcmas/core/MCMPointer.java new file mode 100644 index 0000000..1884c03 --- /dev/null +++ b/src/mcmas/core/MCMPointer.java @@ -0,0 +1,120 @@ +package mcmas.core; + +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.DoubleBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; +import java.nio.ShortBuffer; + +import org.jocl.Pointer; +import org.jocl.struct.Buffers; +import org.jocl.struct.SizeofStruct; +import org.jocl.struct.Struct; + +@Deprecated +public class MCMPointer { + + public static MCMPointer to(byte[] data) { + return to(data, false); + } + + public static MCMPointer to(byte[] data, boolean direct) { + final int size = data.length; + final ByteBuffer buffer = allocate(size, direct).put(data); + return new MCMPointer(size, buffer); + } + + public static MCMPointer to(short[] data) { + return to(data, false); + } + + public static MCMPointer to(short[] data, boolean direct) { + final int size = data.length * Short.SIZE; + final ShortBuffer buffer = allocate(size, direct).asShortBuffer().put(data); + return new MCMPointer(size, buffer); + } + + public static MCMPointer to(int[] data) { + return to(data, false); + } + + public static MCMPointer to(int[] data, boolean direct) { + final int size = data.length * Integer.SIZE; + + final IntBuffer buffer = allocate(size, direct).asIntBuffer().put(data); + return new MCMPointer(size, buffer); + } + + public static MCMPointer to(long[] data) { + return to(data, false); + } + + public static MCMPointer to(long[] data, boolean direct) { + final int size = data.length * Long.SIZE; + + final LongBuffer buffer = (direct ? allocate(size, direct).asLongBuffer().put(data) : LongBuffer.wrap(data)); + return new MCMPointer(size, buffer); + } + + public static MCMPointer to(float[] data) { + return to(data, false); + } + + public static MCMPointer to(float[] data, boolean direct) { + final int size = data.length * Float.SIZE; + final FloatBuffer buffer = allocate(size, direct).asFloatBuffer().put(data); + return new MCMPointer(size, buffer); + } + + public static MCMPointer to(double[] data) { + return to(data, false); + } + + public static MCMPointer to(double[] data, boolean direct) { + final int size = data.length * Double.SIZE; + DoubleBuffer buffer = allocate(size, direct).asDoubleBuffer().put(data); + return new MCMPointer(size, buffer); + } + + public static MCMPointer to(Struct data, boolean direct) { + final int size = SizeofStruct.sizeof(data.getClass()); + final ByteBuffer buffer = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(buffer, data); + return new MCMPointer(size, buffer); + } + + public static MCMPointer Using(Struct[] data, boolean direct) { + final int elemSize = SizeofStruct.sizeof(data.getClass().getComponentType()); + final int size = data.length * elemSize; + final ByteBuffer buffer = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(buffer, data); + return new MCMPointer(size, buffer); + } + + private static ByteBuffer allocate(int capacity, boolean direct) { + return direct ? ByteBuffer.allocateDirect(capacity) : ByteBuffer.allocate(capacity); + } + + private int size; + private Buffer buffer; + + public MCMPointer(int size, Buffer buffer) { + this.size = size; + this.buffer = buffer; + } + + public int getSize() { + return size; + } + + public Buffer getBuffer() { + return buffer; + } + + public Pointer getPointer() { + return Pointer.to(buffer); + } + +} diff --git a/src/mcmas/core/MCMProfilingInfo.java b/src/mcmas/core/MCMProfilingInfo.java new file mode 100644 index 0000000..e48bcc8 --- /dev/null +++ b/src/mcmas/core/MCMProfilingInfo.java @@ -0,0 +1,17 @@ +package mcmas.core; + +import org.jocl.CL; + +public enum MCMProfilingInfo { + COMMAND_SUBMIT(CL.CL_PROFILING_COMMAND_SUBMIT), + COMMAND_QUEUED(CL.CL_PROFILING_COMMAND_QUEUED), + COMMAND_START(CL.CL_PROFILING_COMMAND_START), + COMMAND_END(CL.CL_PROFILING_COMMAND_END); + + public final int value; + + private MCMProfilingInfo(int value) { + this.value = value; + } + +} diff --git a/src/mcmas/core/MCMProgram.java b/src/mcmas/core/MCMProgram.java new file mode 100644 index 0000000..9b35bde --- /dev/null +++ b/src/mcmas/core/MCMProgram.java @@ -0,0 +1,47 @@ +package mcmas.core; + +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.jocl.cl_program; + + +public class MCMProgram extends MCMObject { + + private final MCMContext context; + private final cl_program program; + + public MCMProgram(MCMContext context, String source, String... options) { + context = Objects7.requireNonNull(context, "Can't create a program using a null context"); + MCMProgramOptions o = new MCMProgramOptions(options); + + this.program = MCMHelpers.createProgram(context.getContext(), source, o.toString()); + this.context = context; + } + + public MCMProgram(MCMContext context, String source, MCMMemoryContext memoryContext, String... options) { + this(context, source, options); + + this.setMemoryContext(memoryContext); + } + + public cl_program getProgram() { + return program; + } + + public MCMContext getContext() { + return context; + } + + public MCMKernel createKernel(String name) { + MCMKernel k = new MCMKernel(this, name); + this.register(k); + return k; + } + + @Override + protected void releaseImpl() { + CL.clReleaseProgram(program); + } + +} diff --git a/src/mcmas/core/MCMProgramOptions.java b/src/mcmas/core/MCMProgramOptions.java new file mode 100644 index 0000000..c2ad0fa --- /dev/null +++ b/src/mcmas/core/MCMProgramOptions.java @@ -0,0 +1,77 @@ +package mcmas.core; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +public class MCMProgramOptions { + + private HashMap definitions; + private List options; + + public MCMProgramOptions(String... options) { + this.definitions = new HashMap(); + this.options = Arrays.asList(options); + } + + public void define(String key) { + this.definitions.put(key, null); + } + + public void define(String key, Object value) { + this.definitions.put(key, value); + } + + public void undefine(String key) { + this.definitions.remove(key); + } + + public void addOption(String option) { + this.options.add(option); + } + + public void removeOption(String option) { + this.options.remove(option); + } + + public void clear() { + this.definitions.clear(); + this.options.clear(); + } + + public HashMap getDefinitions() { + return this.definitions; + } + + public List getOptions() { + return this.options; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + + for (String option: options) { + builder.append(option); + builder.append(' '); + } + + for (String key : definitions.keySet()) { + Object value = definitions.get(key); + if (value == null) { + builder.append("-D"); + builder.append(key); + builder.append(' '); + } else { + builder.append("-D"); + builder.append(key); + builder.append("="); + builder.append(value); + builder.append(' '); + } + } + + return builder.toString(); + } + +} diff --git a/src/mcmas/core/MCMProperties.java b/src/mcmas/core/MCMProperties.java new file mode 100644 index 0000000..377f49a --- /dev/null +++ b/src/mcmas/core/MCMProperties.java @@ -0,0 +1,35 @@ +package mcmas.core; + +import org.jocl.Pointer; +import org.jocl.Sizeof; + +public class MCMProperties { + + private final MCMRequestable requestable; + + public MCMProperties(MCMRequestable requestable) { + this.requestable = requestable; + } + + public int getInt(int param) { + int[] result = new int[1]; + requestable.getInfo(param ,Sizeof.cl_int, Pointer.to(result), null); + return result[0]; + } + + public long getLong(int param) { + long[] result = new long[1]; + requestable.getInfo(param ,Sizeof.cl_long, Pointer.to(result), null); + return result[0]; + } + + public String getString(int param) { + long [] size = new long[1]; + requestable.getInfo(param, 0, null, size); + + byte [] value = new byte[(int) (size[0])]; + requestable.getInfo(param, size[0], Pointer.to(value), size); + + return new String(value); + } +} diff --git a/src/mcmas/core/MCMRequestable.java b/src/mcmas/core/MCMRequestable.java new file mode 100644 index 0000000..7c965f7 --- /dev/null +++ b/src/mcmas/core/MCMRequestable.java @@ -0,0 +1,9 @@ +package mcmas.core; + +import org.jocl.Pointer; + +public interface MCMRequestable { + + public int getInfo(int param, long size, Pointer value, long[] returnSize); + +} diff --git a/src/mcmas/core/MCMType.java b/src/mcmas/core/MCMType.java new file mode 100644 index 0000000..5e110f5 --- /dev/null +++ b/src/mcmas/core/MCMType.java @@ -0,0 +1,19 @@ +package mcmas.core; + +import org.jocl.Sizeof; + +public enum MCMType { + INT (Sizeof.cl_int), + LONG (Sizeof.cl_long), + MEM (Sizeof.cl_mem), + FLOAT (Sizeof.cl_float), + DOUBLE (Sizeof.cl_double), + CHAR (Sizeof.cl_char); + + public final long size; + + private MCMType(long size) { + this.size = size; + } + +} diff --git a/src/mcmas/core/MCMUtils.java b/src/mcmas/core/MCMUtils.java new file mode 100644 index 0000000..917e2bd --- /dev/null +++ b/src/mcmas/core/MCMUtils.java @@ -0,0 +1,126 @@ +package mcmas.core; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +import mcmas.api.MCMASException; +import mcmas.utils.Objects7; + +import org.jocl.CL; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +public class MCMUtils { + + private final static Logger logger = LoggerFactory.getLogger(MCMUtils.class); + + public static String readFileAsString(String filePath) { + filePath = Objects7.requireNonNull(filePath, "Can't open a null path"); + byte[] buffer = new byte[(int) new File(filePath).length()]; + FileInputStream f = null; + + try { + f = new FileInputStream(filePath); + f.read(buffer); + } catch(IOException e) { + throw new MCMASException("Invalid program: " + filePath, e); + } finally { + try { + if (f != null) { + f.close(); + } + } catch (IOException e) { + // Really nothing to do here... + } + } + + return new String(buffer); + } + + public static void printEventStats(String title, MCMEvent e) { + logger.info("waited[{}] time[{}] tag[{}]", new Object[] { + e.getWaitDuration() / 1000000, + e.getExecutionDuration() / 1000000, + title + }); + } + + public static String formatEventStats(String tag, MCMEvent e) { + return String.format("tag[%s] waited[%d] time[%d]", + tag, e.getWaitDuration() / 1000000, e.getExecutionDuration() / 1000000); + } + + public static MCMProgram compileFile(MCMContext context, String sourceFile, Object... options) { + MCMProgram program = null; + StringBuilder optionsString = new StringBuilder(); + + for (Object option : options) { + optionsString.append(option); + } + + + program = context.createProgram(MCMUtils.readFileAsString(sourceFile), optionsString.toString()); + return program; + } + + public static long binaryOr(MCMFlag... flags) { + long value = 0; + + for (MCMFlag flag : flags) { + value |= flag.getValue(); + } + + return value; + } + + public static long binaryOr(long... flags) { + long value = 0; + + for (long flag : flags) { + value |= flag; + } + + return value; + } + + public static void printInfos() { + MCMPlatform[] platforms = MCMPlatform.getPlatforms(); + + if (platforms.length == 0) { + System.out.println("No device detected"); + } + + for (MCMPlatform platform : platforms) { + MCMDevice[] devices = platform.getDevices(CL.CL_DEVICE_TYPE_ALL); + + for (int j = 0; j < devices.length; j++) { + MCMDevice device = devices[j]; + + int k = 1; + + String name = device.getInfoString(CL.CL_DEVICE_NAME); + System.out.println(String.format("%d. Device: %s", j + 1, name)); + + String device_version = device.getInfoString(CL.CL_DEVICE_VERSION); + System.out.println(String.format(" %d.%d Hardware version: %s", j + 1, k++, device_version)); + + String driver_version = device.getInfoString(CL.CL_DRIVER_VERSION); + System.out.println(String.format(" %d.%d Driver version: %s", j + 1, k++, driver_version)); + + int compute_units = device.getInfoInt(CL.CL_DEVICE_MAX_COMPUTE_UNITS); + System.out.println(String.format(" %d.%d Parallel compute units: %d", j + 1, k++, compute_units)); + + long global_memory = device.getInfoLong(CL.CL_DEVICE_GLOBAL_MEM_SIZE); + System.out.println(String.format(" %d.%d Global memory size: %d", j + 1, k++, global_memory)); + } + } + } + + public static void main(String[] args) { + printInfos(); + } + +} diff --git a/src/mcmas/core/examples/MCMCellular.java b/src/mcmas/core/examples/MCMCellular.java new file mode 100644 index 0000000..e09e3a5 --- /dev/null +++ b/src/mcmas/core/examples/MCMCellular.java @@ -0,0 +1,124 @@ +package mcmas.core.examples; +import java.util.Arrays; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; + +import org.jocl.Pointer; + + + +public class MCMCellular { + + private static final String source = + "kernel void cellular1(constant float* input, global float* output) { \n" + + " int cellHeight = get_local_size(0); \n" + + " int cellWidth = get_local_size(1); \n" + + " int cellSize = cellHeight * cellWidth; \n" + + " int i = get_global_id(0); \n" + + " int j = get_local_id(0); \n" + + " int k = get_local_id(1); \n" + + " int index = cellSize * i + cellWidth * j + k; \n" + + " if (input[index] > 0.5f) { \n" + + " output[index] = input[index] / 2; \n" + + " } else { \n" + + " output[index] = input[index] * 2; \n" + + " } \n" + + "} \n"; + + private final int nbCells; + private final int cellHeight; + private final int cellWidth; + private final float[][][] cells; + + public MCMCellular(int nbCells, int cellHeight, int cellWidth) { + this.nbCells = nbCells; + this.cellHeight = cellHeight; + this.cellWidth = cellWidth; + this.cells = new float[nbCells][][]; + + for (int i = 0; i < nbCells; i++) { + float[][] cell = new float[cellHeight][cellWidth]; + for (int j = 0; j < cellHeight; j++) { + for (int k = 0; k < cellWidth; k++) { + cell[j][k] = (float) Math.random(); + } + } + cells[i] = cell; + } + } + + @Override + public String toString() { + StringBuffer buffer = new StringBuffer(); + + for (float[][] cell : cells) { + for (float[] line : cell) { + buffer.append(Arrays.toString(line)); + buffer.append('\n'); + } + buffer.append('\n'); + } + + return new String(buffer); + } + + public void step() { + MCMContext context = new MCMContext(); + float[] data = linearize(); + MCMMem input = context.newBuffer().Using(data).Constant().b(); + // context.createBuffer(data.length, OCL.FLOAT, OCL.MEM_RO, Pointer.to(data)); + MCMMem output = context.newBuffer().Size(data.length, MCM.FLOAT).b(); + //context.createBuffer(data.length, OCL.FLOAT, OCL.MEM_RW); + + MCMCommandQueue queue = context.createCommandQueue(); + MCMProgram program = context.createProgram(source); + MCMKernel kernel = program.createKernel("cellular1"); + kernel.setArguments(input, output); + + queue.enqueueKernel(kernel, 2, new long[] {0, 0}, new long[] {nbCells, 1}, new long[] {cellHeight, cellWidth}); + //queue.enqueueCopyBuffer(output, input, 0, 0, input.getSize()); + + queue.blockingReadBuffer(output, Pointer.to(data), 0, output.getSize()); + delinearize(data); + } + + private float[] linearize() { + float[] result = new float[nbCells * cellHeight * cellWidth]; + final int cellSize = cellHeight * cellWidth; + + for (int i = 0; i < nbCells; i++) { + for (int j = 0; j < cellHeight; j++) { + for (int k = 0; k < cellWidth; k++) { + result[i * cellSize + j * cellWidth + k] = cells[i][j][k]; + } + } + } + + return result; + } + + private void delinearize(float[] data) { + final int cellSize = cellHeight * cellWidth; + + for (int i = 0; i < nbCells; i++) { + for (int j = 0; j < cellHeight; j++) { + for (int k = 0; k < cellWidth; k++) { + cells[i][j][k] = data[i * cellSize + j * cellWidth + k]; + } + } + } + } + + public static void main(String[] args) { + MCMCellular cellular = new MCMCellular(10, 10, 10); + System.out.println(cellular); + cellular.step(); + System.out.println(cellular); + } + +} diff --git a/src/mcmas/core/examples/MCMGrid.java b/src/mcmas/core/examples/MCMGrid.java new file mode 100644 index 0000000..8ac2795 --- /dev/null +++ b/src/mcmas/core/examples/MCMGrid.java @@ -0,0 +1,40 @@ +package mcmas.core.examples; +import java.util.Arrays; + +import org.jocl.struct.ArrayLength; +import org.jocl.struct.Struct; + + +public class MCMGrid extends Struct { + + public int width; + public int height; + + @ArrayLength({12, 10}) + public int[][] data; + + public MCMGrid(int width, int height) { + this.width = width; + this.height = height; + this.data = new int[height][width]; + } + + public static String toOpenCL() { + return "typedef struct \n" + + "{ \n" + + " int width; \n" + + " int height; \n" + + " int** data; \n" + + "} Grid; \n"; + } + + public String toString() { + StringBuffer buffer = new StringBuffer(); + for (int[] line : data) { + buffer.append(Arrays.toString(line)); + buffer.append('\n'); + } + return new String(buffer); + } + +} diff --git a/src/mcmas/core/examples/MCMGridMain.java b/src/mcmas/core/examples/MCMGridMain.java new file mode 100644 index 0000000..22d1b7f --- /dev/null +++ b/src/mcmas/core/examples/MCMGridMain.java @@ -0,0 +1,68 @@ +package mcmas.core.examples; +import java.nio.ByteBuffer; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; + +import org.jocl.Pointer; +import org.jocl.struct.Buffers; +import org.jocl.struct.SizeofStruct; + + + +public class MCMGridMain { + + public static final String source = + "#define TOP 50 \n" + + "kernel void test_grid( \n" + + " global Grid * grid) \n" + + "{ \n" + + " int i = get_global_id(0); \n" + + " int j = get_global_id(1); \n" + + " grid->data[i][j] = i * j; \n" + + "} \n"; + + + public static void main(String[] args) { + System.out.println(MCMGrid.toOpenCL()); + + MCMGrid grid = new MCMGrid(10, 12); + System.out.println(grid); + + int gridSize = SizeofStruct.sizeof(grid.getClass()); + ByteBuffer gridBuffer = Buffers.allocateBuffer(grid); + Buffers.writeToBuffer(gridBuffer, grid); + + MCMContext context = new MCMContext(); + //OCLMem gridMem = context.createBuffer(gridSize, OCL.MEM_RW, Pointer.to(gridBuffer)); + MCMMem gridMem = context.newBuffer().Using(gridBuffer).b(); + + MCMCommandQueue queue = context.createCommandQueue(); + MCMProgram program = context.createProgram(MCMGrid.toOpenCL() + source); + MCMKernel kernel = program.createKernel("test_grid"); + kernel.setArguments(gridMem); + + System.out.println("LAUNCH"); + + queue.enqueueKernel(kernel, 2, + new long[] { 0, 0 }, + new long[] { grid.height, grid.width }, + new long[] { 1 , 1 }); + + System.out.println("READ"); + + queue.enqueueReadBuffer(gridMem, Pointer.to(gridBuffer), 0, grid.height * grid.width * gridSize); + + System.out.println("COPY"); + + gridBuffer.rewind(); + Buffers.readFromBuffer(gridBuffer, grid); + + System.out.println("AFTER"); + System.out.println(grid); + } + +} diff --git a/src/mcmas/core/examples/MCMInit.java b/src/mcmas/core/examples/MCMInit.java new file mode 100644 index 0000000..1472c6e --- /dev/null +++ b/src/mcmas/core/examples/MCMInit.java @@ -0,0 +1,24 @@ +package mcmas.core.examples; + +import mcmas.core.MCMContext; +import mcmas.core.MCMPlatform; + +public class MCMInit { + + public static void main(String[] args) { + MCMContext context = new MCMContext(); + System.out.println(context); + System.out.println(context.getDevices().length); + + MCMPlatform[] platforms = MCMPlatform.getPlatforms(); + System.out.println(platforms.length); + + context = new MCMContext(platforms[0]); + System.out.println(platforms[0]); + System.out.println(context); + System.out.println(context.getDevices().length); + + System.out.println(context.getDevices()[0]); + } + +} diff --git a/src/mcmas/core/examples/MCMLife.java b/src/mcmas/core/examples/MCMLife.java new file mode 100644 index 0000000..8065a82 --- /dev/null +++ b/src/mcmas/core/examples/MCMLife.java @@ -0,0 +1,102 @@ +package mcmas.core.examples; +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; + +import org.jocl.Pointer; + + +public class MCMLife { + + public static final String source = + "__kernel void life( \n" + + " constant int* input, \n" + + " global int* output, \n" + + " const unsigned int height, \n" + + " const unsigned int width) \n" + + "{ \n" + + " int i = get_global_id(0); \n" + + " int rowUp = i - width; \n" + + " int rowDown = i + width; \n" + + " bool outOfBounds = (i < width); \n" + + " outOfBounds |= (i > (width * (height-1))); \n" + + " outOfBounds |= (i % width == 0); \n" + + " outOfBounds |= (i % width == width-1); \n" + + " if (outOfBounds) { output[i] = 0; return; } \n" + + " int neighbours = input[rowUp-1] + input[rowUp] + input[rowUp+1]; \n" + + " neighbours += input[i-1] + input[i+1]; \n" + + " neighbours += input[rowDown-1] + input[rowDown] + input[rowDown+1]; \n" + + " if (neighbours == 3 || (input[i] && neighbours == 2)) \n" + + " output[i] = 1; \n" + + " else \n" + + " output[i] = 0; \n" + + "} \n"; + + private int height; + private int width; + private int[] board; + + private MCMContext context; + private MCMCommandQueue queue; + private MCMKernel kernel; + private MCMMem dInput; + private MCMMem dOutput; + + public MCMLife(int height, int width) { + this.height = height; + this.width = width; + + this.board = new int[width * height]; + for (int i = 0; i < board.length; i++) { + board[i] = (Math.random() > 0.5 ? 1 : 0); + } + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(); + + this.dInput = context.newBuffer().Using(board).b(); + //context.createBuffer(board.length, OCL.INT, OCL.MEM_RO, Pointer.to(board)); + this.dOutput = context.newBuffer().Size(board.length, MCM.INT).b(); + //context.createBuffer(board.length, OCL.INT, OCL.MEM_RW); + + MCMProgram program = context.createProgram(source); + this.kernel = program.createKernel("life"); + kernel.setArguments(dInput, dOutput, height, width); + } + + public void run(int iterations) { + MCMEvent event; + + for (int i = 0; i < iterations; i++) { + event = queue.enqueue1DKernel(kernel, board.length, 1); + MCMEvent.waitFor(event); + + queue.enqueueCopyBuffer(dOutput, dInput, 0, 0, dInput.getSize()); + } + + queue.blockingReadBuffer(dOutput, Pointer.to(board), 0, dOutput.getSize()); + } + + public void print() { + for (int x = 0; x < height; x++) { + for (int y = 0; y < width; y++) { + System.out.print(board[x * height + y] == 0 ? " " : "x"); + } + System.out.println(); + } + System.out.println("---------------------------"); + } + + public static void main(String[] args) { + MCMLife game = new MCMLife(10, 20); + for (int i = 0; i < 20; i++) { + game.print(); + game.run(1); + } + } + +} diff --git a/src/mcmas/core/examples/MCMLock.java b/src/mcmas/core/examples/MCMLock.java new file mode 100644 index 0000000..cd065db --- /dev/null +++ b/src/mcmas/core/examples/MCMLock.java @@ -0,0 +1,53 @@ +package mcmas.core.examples; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; + +import org.jocl.Pointer; +import org.jocl.Sizeof; + + +public class MCMLock { + + public static void main(String[] args) throws IOException { + MCMContext context = new MCMContext(); + MCMCommandQueue queue = context.createCommandQueue(); + + MCMMem lock = context.newBuffer().Using(new int[] { -1 }).b(); + MCMMem counter = context.newBuffer().Using(new int[] { 0 }).b(); + MCMProgram program = context.createProgram(readFileAsString("lock.cl")); + MCMKernel kernel = program.createKernel("locktest"); + + kernel.setArgument(0, lock); + kernel.setArgument(1, counter); + queue.enqueue1DKernel(kernel, 100, 1); + + int output[] = new int[1]; + + queue.blockingReadBuffer(counter, Pointer.to(output), 0, Sizeof.cl_int); + + System.out.println(output[0]); + } + + private static String readFileAsString(String filePath) throws java.io.IOException{ + byte[] buffer = new byte[(int) new File(filePath).length()]; + FileInputStream f = null; + + try { + f = new FileInputStream(filePath); + f.read(buffer); + } finally { + f.close(); + }; + + return new String(buffer); + } + +} diff --git a/src/mcmas/core/examples/MCMRandom.java b/src/mcmas/core/examples/MCMRandom.java new file mode 100644 index 0000000..9d59f7a --- /dev/null +++ b/src/mcmas/core/examples/MCMRandom.java @@ -0,0 +1,69 @@ +package mcmas.core.examples; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.Date; +import java.util.concurrent.ExecutionException; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; + +import org.jocl.Pointer; + + +public class MCMRandom { + + private final static int SIZE = 50; + + public static void main(String[] args) throws IOException, InterruptedException { + MCMContext context = new MCMContext(); + MCMCommandQueue queue = context.createCommandQueue(); + MCMProgram program = context.createProgram( + readFileAsString("/home/glaville/rand.cl")); + MCMKernel kernel = program.createKernel("randtest"); + + int buffer[] = new int[SIZE]; + + for (int i = 0; i < buffer.length; i++) { + buffer[i] = i; + } + + //OCLMem bufferMem = context.createBuffer(SIZE, OCL.INT, OCL.MEM_RW, Pointer.to(buffer)); + MCMMem bufferMem = context.newBuffer().Using(buffer).b(); + + kernel.setArguments(bufferMem, SIZE, (new Date()).getTime()); + + MCMEvent e = queue.enqueue1DKernel(kernel, 1, 1); + try { + e.get(); + } catch (ExecutionException e1) { + e1.printStackTrace(); + } + + queue.blockingReadBuffer(bufferMem, Pointer.to(buffer), 0, bufferMem.getSize()); + + System.out.println(Arrays.toString(buffer)); + System.out.println(Arrays.toString(buffer)); + } + + private static String readFileAsString(String filePath) throws java.io.IOException{ + byte[] buffer = new byte[(int) new File(filePath).length()]; + FileInputStream f = null; + + try { + f = new FileInputStream(filePath); + f.read(buffer); + } finally { + f.close(); + } + + return new String(buffer); + } + +} diff --git a/src/mcmas/core/examples/MCMReduce.java b/src/mcmas/core/examples/MCMReduce.java new file mode 100644 index 0000000..3ba9b20 --- /dev/null +++ b/src/mcmas/core/examples/MCMReduce.java @@ -0,0 +1,83 @@ +package mcmas.core.examples; + +import java.util.Arrays; + +import org.jocl.Pointer; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMProgramOptions; + +public class MCMReduce { + + public static final int NB_BLOCKS = 5; + public static final int BLOCK_SIZE = 64; + + public static void test_reduce1() { + int [] data = new int[64]; + int [] results = new int[NB_BLOCKS]; + Arrays.fill(data, 1); + + MCMContext context = new MCMContext(); + MCMCommandQueue queue = context.createCommandQueue(); + + MCMProgram program = context.createProgramFromFile("kernels/reduce.cl"); + MCMKernel reducer = program.createKernel("reduce7"); + + MCMMem dataMem = context.newBuffer().Using(data).b(); + MCMMem resultMem = context.newBuffer().Size(NB_BLOCKS, MCM.INT).b(); + MCMMem sharedMem = context.newBuffer().Size(BLOCK_SIZE).Local().b(); + + reducer.setArguments(dataMem, resultMem, sharedMem, data.length); + MCMEvent finished = queue.enqueue1DKernel(reducer, NB_BLOCKS * BLOCK_SIZE, BLOCK_SIZE); + queue.blockingReadBuffer(resultMem, Pointer.to(results), 0, resultMem.getSize(), finished); + + System.out.println(Arrays.toString(data)); + System.out.println(Arrays.toString(results)); + } + + public static void test_reduce2() { + int [] data = new int[50]; + int [] results = new int[NB_BLOCKS]; + + for (int i = 0; i < data.length; i++) { + data[i] = i; + } + + //Arrays.fill(data, 1); + + MCMContext context = new MCMContext(); + MCMCommandQueue queue = context.createCommandQueue(); + + MCMProgramOptions options = new MCMProgramOptions(); + options.define("NEUTRAL", 0); + options.define("OP", "SUM"); + + System.out.println(options); + + MCMProgram program = context.createProgramFromFile("kernels/greduce.cl", options); + MCMKernel reducer = program.createKernel("greduce"); + + MCMMem dataMem = context.newBuffer().Using(data).b(); + MCMMem resultMem = context.newBuffer().Size(NB_BLOCKS, MCM.INT).b(); + MCMMem sharedMem = context.newBuffer().Size(BLOCK_SIZE).Local().b(); + + reducer.setArguments(dataMem, resultMem, sharedMem, data.length); + MCMEvent finished = queue.enqueue1DKernel(reducer, NB_BLOCKS * BLOCK_SIZE, BLOCK_SIZE); + queue.blockingReadBuffer(resultMem, Pointer.to(results), 0, resultMem.getSize(), finished); + + System.out.println(Arrays.toString(data)); + System.out.println(Arrays.toString(results)); + } + + + public static void main(String[] args) { + test_reduce2(); + } + +} diff --git a/src/mcmas/core/examples/MCMSimple.java b/src/mcmas/core/examples/MCMSimple.java new file mode 100644 index 0000000..fb34f4d --- /dev/null +++ b/src/mcmas/core/examples/MCMSimple.java @@ -0,0 +1,60 @@ +package mcmas.core.examples; + +import java.util.Arrays; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; + +import org.jocl.Pointer; +import org.jocl.Sizeof; + + +public class MCMSimple { + + public static final int SIZE = 512; + + public static final String simpleKernel = "" + + "int add(int a, int b) { \n" + + " return a + 3 * b; \n" + + "} \n" + + " \n" + + "kernel void simple(global int *c) { \n" + + " int i = get_global_id(0); \n" + + " c[i] = add(i, i); \n" + + "}"; + + public static void main(String[] args) { + MCMContext context = new MCMContext(); + MCMCommandQueue queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + MCMProgram program = context.createProgram(simpleKernel); + MCMKernel kernel = program.createKernel("simple"); + + MCMMem outputBuffer = context.newBuffer().Size(SIZE, MCM.INT).b(); + //context.createBuffer(SIZE, OCL.INT, OCL.MEM_RW); + + kernel.setArguments(outputBuffer); + MCMEvent kernelEvent = queue.enqueue1DKernel(kernel, SIZE, 1); + MCMEvent.waitFor(kernelEvent); + + int[] output = new int[SIZE]; + queue.blockingReadBuffer(outputBuffer, Pointer.to(output), 0, SIZE * Sizeof.cl_int); + + outputBuffer.release(); + kernel.release(); + program.release(); + queue.release(); + context.release(); + + System.out.println(Arrays.toString(output)); + System.out.println("Time : " + kernelEvent.getExecutionDuration()); + //System.out.println("START : " + kernelEvent.getProfilingInfo(OCLProfilingInfo.COMMAND_START)); + //System.out.println("END : " + kernelEvent.getProfilingInfo(OCLProfilingInfo.COMMAND_END)); + } + +} diff --git a/src/mcmas/core/examples/MCMTest.java b/src/mcmas/core/examples/MCMTest.java new file mode 100644 index 0000000..9d29c97 --- /dev/null +++ b/src/mcmas/core/examples/MCMTest.java @@ -0,0 +1,57 @@ +package mcmas.core.examples; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; + +public class MCMTest { + + public static final String kernelCode = + "kernel void longComputation(int a, global int * res) { \n" + + " int tmp = 0; \n" + + " for (int i = 0; i < 100 * a; i++) { \n" + + " tmp += sqrt((float) i); \n" + + " } \n" + + " int i = get_global_id(0); \n" + + " res[i] += tmp; \n" + + "}"; + + public static void main(String[] args) { + MCMContext context = new MCMContext(); + MCMCommandQueue queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING, MCMCommandQueueProperty.ENABLE_OOO_MODE); + MCMProgram program = context.createProgram(kernelCode); + + MCMKernel kernel1 = program.createKernel("longComputation"); + MCMMem output1 = context.newBuffer().Size(200000000, MCM.INT).b(); + kernel1.setArguments(10000, output1); + + MCMKernel kernel2 = program.createKernel("longComputation"); + MCMMem output2 = context.newBuffer().Size(200000000, MCM.INT).b(); + kernel2.setArguments(100, output1); + + MCMEvent kernel1Event = queue.enqueue1DKernel(kernel1, 1024, 1); + MCMEvent kernel2Event = queue.enqueue1DKernel(kernel2, 1024, 1); + MCMEvent.waitFor(kernel2Event); + MCMEvent.waitFor(kernel1Event); + + output1.release(); + kernel1.release(); + + output2.release(); + kernel2.release(); + + program.release(); + queue.release(); + context.release(); + + System.out.println("K1 Wait : " + kernel1Event.getWaitDuration()); + System.out.println("K1 Time : " + kernel1Event.getExecutionDuration()); + System.out.println("K2 Wait : " + kernel2Event.getWaitDuration()); + System.out.println("K2 Time : " + kernel2Event.getExecutionDuration()); + } +} diff --git a/src/mcmas/plugins/axb/AXBPlugin.java b/src/mcmas/plugins/axb/AXBPlugin.java new file mode 100644 index 0000000..7ef6bee --- /dev/null +++ b/src/mcmas/plugins/axb/AXBPlugin.java @@ -0,0 +1,192 @@ +package mcmas.plugins.axb; + +import java.util.Arrays; +import java.util.Random; + +import org.jocl.Pointer; +import org.perf4j.StopWatch; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import preypredator.PPGrid; +import mcmas.api.MCMASContext; +import mcmas.api.MCMASPlugin; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMProgramOptions; +import mcmas.core.MCMType; +import mcmas.core.MCMUtils; + +public class AXBPlugin extends MCMASPlugin { + + private final Logger logger = LoggerFactory.getLogger(AXBPlugin.class); + private final StopWatch watch = new Slf4JStopWatch().setNormalPriority(Slf4JStopWatch.DEBUG_LEVEL); + private final StopWatch runWatch = new Slf4JStopWatch().setNormalPriority(Slf4JStopWatch.TRACE_LEVEL); + + @Override + public AXBPlugin newInstance(MCMASContext context) { + return null; + } + + private static final String SOURCE = "kernels/plugins/axb.cl"; + + private MCMKernel kernel = null; + + public AXBPlugin(MCMASContext context) { + super(context); + } + + public void transform(int[] vector, float a, float b) { + watch.start("axb_transform"); + MCMMem vectorMem = getContext().getContext().newBuffer().Using(vector).b(); + transform("int", vectorMem, Pointer.to(vector), vector.length, a, b); + watch.stop(); + } + + public void transform(float[] vector, float a, float b) { + watch.start("axb_transform"); + MCMMem vectorMem = getContext().getContext().newBuffer().Size(vector.length, MCMType.FLOAT).b(); + transform("float", vectorMem, Pointer.to(vector), vector.length, a, b); + watch.stop(); + } + + private void transform(String type, MCMMem mem, Pointer pointer, int size, Object a, Object b) { + MCMProgramOptions options = new MCMProgramOptions(); + options.define("TYPE", type); + + MCMContext c = getContext().getContext(); + MCMCommandQueue q = getContext().getQueue(); + //OCLKernel kernel = null; + MCMProgram program = null; + MCMEvent finished = null; + + try { + runWatch.start("axb_build"); + if (kernel == null) { + c = getContext().getContext(); + + q = getContext().getQueue(); + program = c.createProgramFromFile(SOURCE, options); + + kernel = program.createKernel("transform"); + } + runWatch.stop(); + + runWatch.start("axb_kernel"); + + kernel.setArguments(mem, a, b); + finished = q.enqueue1DKernel(kernel, size); + q.blockingReadBuffer(mem, pointer, 0, mem.getSize(), finished); + + runWatch.stop(); + + logger.debug(MCMUtils.formatEventStats("axb_opencl", finished)); + } finally { + finished.release(); + mem.release(); + //kernel.release(); + + if (program != null) { + program.release(); + } + } + } + + public void clampedTransform(int[] vector, float a, int b, int min, int max) { + watch.start("axb_clamped_transform " + vector.length); + MCMMem vectorMem = getMCMContext().newBuffer().Using(vector).b(); + clampedTransform("int", vectorMem, Pointer.to(vector), vector.length, a, b, min, max); + watch.stop(); + } + + public void clampedTransform(float[] vector, float a, float b, float min, float max) { + watch.start("axb_clamped_transform"); + MCMMem vectorMem = getMCMContext().newBuffer().Using(vector).b(); + clampedTransform("float", vectorMem, Pointer.to(vector), vector.length, a, b, min, max); + watch.stop(); + } + + private void clampedTransform(String type, MCMMem mem, Pointer pointer, int size, Object a, Object b, + Object min, Object max) { + MCMProgramOptions options = new MCMProgramOptions(); + options.define("TYPE", type); + + MCMContext c = getContext().getContext(); + MCMCommandQueue q = getContext().getQueue(); + //OCLKernel kernel = null; + MCMProgram program = null; + MCMEvent finished = null; + + try { + runWatch.start("axb_build"); + if (kernel == null) { + c = getContext().getContext(); + + q = getContext().getQueue(); + program = c.createProgramFromFile(SOURCE, options); + + kernel = program.createKernel("clamped_transform"); + } + runWatch.stop(); + + runWatch.start("axb_kernel"); + + kernel.setArguments(mem, a, b, min, max); + finished = q.enqueue1DKernel(kernel, size); + q.blockingReadBuffer(mem, pointer, 0, mem.getSize(), finished); + + runWatch.stop(); + + logger.trace(MCMUtils.formatEventStats("opencl_transform", finished)); + } finally { + finished.release(); + mem.release(); + //kernel.release(); + + if (program != null) { + program.release(); + } + } + } + + public void cpu(int[] storage, float a, float b, int min, int max) { + + for (int i = 0; i < storage.length; i++) { + storage[i] = Math.max(min, Math.max(max, (int) (storage[i] * a + b))); + } + } + + public static void main(String[] args) { + StopWatch w = new Slf4JStopWatch().setNormalPriority(Slf4JStopWatch.DEBUG_LEVEL); + + MCMASContext context = new MCMASContext(MCMCommandQueueProperty.ENABLE_PROFILING); + AXBPlugin plugin = new AXBPlugin(context); + + Random rng = new Random(); + + int [] vector = new int[50000000]; + + for (int i = 0; i < vector.length; i++) { + vector[i] = rng.nextInt(20); + } + + //System.out.println(Arrays.toString(vector)); + + w.start("opencl"); + plugin.clampedTransform(vector, 2, 5, 0, 100); + System.out.println(w.stop()); + + w.start("java"); + plugin.cpu(vector, 2, 5, 0, 100); + System.out.println(w.stop()); + + //System.out.println(Arrays.toString(vector)); + } + +} diff --git a/src/mcmas/plugins/gridsearch/GridSearchPlugin.java b/src/mcmas/plugins/gridsearch/GridSearchPlugin.java new file mode 100644 index 0000000..271f3a2 --- /dev/null +++ b/src/mcmas/plugins/gridsearch/GridSearchPlugin.java @@ -0,0 +1,179 @@ +package mcmas.plugins.gridsearch; + +import java.util.Arrays; + +import org.jocl.Pointer; +import org.perf4j.StopWatch; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import preypredator.PreyPredator2; +import mcmas.api.MCMASContext; +import mcmas.api.MCMASPlugin; +import mcmas.core.MCMChrono; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMProgramOptions; +import mcmas.core.MCMUtils; +import mcmas.utils.IntMatrix; + +public class GridSearchPlugin extends MCMASPlugin { + + public static final String KERNEL_SOURCE = "kernels/plugins/grid_search2.cl"; + public static final String KERNEL_MAX = "grid_search_max"; + + private MCMKernel kernel = null; + + private final static Logger logger = LoggerFactory.getLogger(GridSearchPlugin.class); + private final StopWatch watch = new Slf4JStopWatch().setNormalPriority(Slf4JStopWatch.DEBUG_LEVEL); + private final StopWatch runWatch = new Slf4JStopWatch().setNormalPriority(Slf4JStopWatch.TRACE_LEVEL); + + @Override + public GridSearchPlugin newInstance(MCMASContext context) { + return new GridSearchPlugin(context); + } + + public GridSearchPlugin(MCMASContext context) { + super(context); + } + + public void findMaxCell(IntMatrix grid, int radius, int[] xPositions, int[] yPositions, int[] xResults, int[] yResults) { + watch.start("gridsearch_findmax"); + MCMContext c = getContext().getContext(); + MCMCommandQueue q = getContext().getQueue(); + + //OCLProgram program = null; + //OCLKernel kernel = null; + MCMMem gridMem = null; + MCMMem xPositionsMem = null; + MCMMem yPositionsMem = null; + MCMMem xResultsMem = null; + MCMMem yResultsMem = null; + + MCMProgramOptions options = new MCMProgramOptions(); + options.define("WIDTH", grid.getWidth()); + options.define("HEIGHT", grid.getHeight()); + options.define("TYPE", "int"); + + //System.out.println(options); + + MCMProgram program = null; + //OCLKernel kernel = null; + MCMEvent finished = null; + + try { + runWatch.start("gridsearch_build"); + if (kernel == null) { + program = c.createProgramFromFile(KERNEL_SOURCE, options); + kernel = program.createKernel(KERNEL_MAX); + } + runWatch.stop(); + + runWatch.start("gridsearch_kernel"); + + gridMem = c.newBuffer().Using(grid.getStorage()).b(); + xPositionsMem = c.newBuffer().Using(xPositions).b(); + yPositionsMem = c.newBuffer().Using(yPositions).b(); + xResultsMem = c.newBuffer().Size(xPositionsMem.getSize()).b(); + yResultsMem = c.newBuffer().Size(yPositionsMem.getSize()).b(); + + kernel.setArguments(gridMem, radius, xPositionsMem, yPositionsMem, xResultsMem, yResultsMem); + + finished = q.enqueue1DKernel(kernel, xPositions.length); + + q.blockingReadBuffer(xResultsMem, Pointer.to(xResults), 0, xResultsMem.getSize(), finished); + q.blockingReadBuffer(yResultsMem, Pointer.to(yResults), 0, yResultsMem.getSize(), finished); + + runWatch.stop(); + + logger.debug(MCMUtils.formatEventStats("gridsearch_opencl", finished)); + + watch.stop(); + } catch (Exception e) { + System.err.println(e); + e.printStackTrace(); + } finally { + gridMem.release(); + xPositionsMem.release(); + yPositionsMem.release(); + xResultsMem.release(); + yResultsMem.release(); + finished.release(); + //kernel.release(); + if (program != null) { + program.release(); + } + } + } + + /* + public void findNearestCellNot(float[] vector, int radius, float value, int[] xPositions, int[] yPositions, int[] xResults, int[] yResults) { + OCLContext c = getContext().getContext(); + OCLCommandQueue q = getContext().getQueue(); + + OCLProgram program = null; + OCLKernel kernel = null; + OCLMem xPositionsMem = null; + OCLMem yPositionsMem = null; + OCLMem xResultsMem = null; + OCLMem yResultsMem = null; + + try { + program = c.createProgramFromFile(SOURCE_NEAREST); + kernel = program.createKernel("search_float_nearest"); + + xPositionsMem = c.newBuffer().Using(xPositions).b(); + yPositionsMem = c.newBuffer().Using(yPositions).b(); + xResultsMem = c.newBuffer().Size(xResults.length, OCLType.FLOAT).b(); + yResultsMem = c.newBuffer().Size(yResults.length, OCLType.FLOAT).b(); + + kernel.setArguments(vector, radius, value, xPositionsMem, yPositionsMem, xResultsMem, yResultsMem); + OCLEvent finished = q.enqueue1DKernel(kernel, vector.length); + + OCLEvent r1 = q.enqueueReadBuffer(xResultsMem, Pointer.to(xResults), 0, xResultsMem.getSize(), finished); + OCLEvent r2 = q.enqueueReadBuffer(yResultsMem, Pointer.to(yResults), 0, yResultsMem.getSize(), finished); + + OCLEvent.waitFor(r1, r2); + } finally { + xPositionsMem.release(); + yPositionsMem.release(); + xResultsMem.release(); + yResultsMem.release(); + kernel.release(); + program.release(); + } + }*/ + + public static void main(String[] args) { + MCMASContext context = new MCMASContext(); + GridSearchPlugin plugin = new GridSearchPlugin(context); + + IntMatrix grid = new IntMatrix(5, 5); + int [] xPositions = new int[] { 2 }; + int [] yPositions = new int[] { 2 }; + int [] xResults = new int[1]; + int [] yResults = new int[1]; + + grid.set(2, 2, 1); + grid.set(3, 4, 7); + grid.set(4, 4, 6); + + plugin.findMaxCell(grid, 2, xPositions, yPositions, xResults, yResults); + + System.out.println("After"); + System.out.println(grid); + System.out.println(Arrays.toString(xResults)); + System.out.println(Arrays.toString(yResults)); + + for (int i = 0; i < xPositions.length; i++) { + System.out.println("Move: (" + xPositions[i] + ", " + yPositions[i] + ") => (" + + xResults[i] + ", " + yResults[i] + ")"); + } + } + +} diff --git a/src/mcmas/plugins/vectors/ReduceOperation.java b/src/mcmas/plugins/vectors/ReduceOperation.java new file mode 100644 index 0000000..b7bd38d --- /dev/null +++ b/src/mcmas/plugins/vectors/ReduceOperation.java @@ -0,0 +1,5 @@ +package mcmas.plugins.vectors; + +public enum ReduceOperation { + MIN, MAX, SUM, MUL +} diff --git a/src/mcmas/plugins/vectors/ReducePlugin.java b/src/mcmas/plugins/vectors/ReducePlugin.java new file mode 100644 index 0000000..aea74af --- /dev/null +++ b/src/mcmas/plugins/vectors/ReducePlugin.java @@ -0,0 +1,145 @@ +package mcmas.plugins.vectors; + +import java.util.Arrays; +import java.util.Random; + +import org.jocl.Pointer; + +import mcmas.api.MCMASContext; +import mcmas.api.MCMASPlugin; +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMProgramOptions; + +public class ReducePlugin extends MCMASPlugin { + + //public static final int NBLOCKS = 1; + public static final int BLOCK_SIZE = 64; + + public static final String KERNEL_NAME = "kernels/plugins/reduce.cl"; + + public static final ReduceOperation MIN = ReduceOperation.MIN; + public static final ReduceOperation MAX = ReduceOperation.MAX; + public static final ReduceOperation SUM = ReduceOperation.SUM; + public static final ReduceOperation MUL = ReduceOperation.MUL; + + @Override + public ReducePlugin newInstance(MCMASContext context) { + return new ReducePlugin(context); + } + + public ReducePlugin(MCMASContext context) { + super(context); + } + + public int reduce(int[] data, ReduceOperation operation) { + MCMContext c = getContext().getContext(); + + MCMCommandQueue q = getContext().getQueue(); + + MCMProgramOptions options = new MCMProgramOptions(); + prepareOptions(options, operation); + + System.out.println(options); + + final int NBLOCKS = (int) Math.ceil(data.length / (float) BLOCK_SIZE); + + MCMProgram program = c.createProgramFromFile(KERNEL_NAME, options); + //System.out.println(getSourcePath(KERNEL_NAME)); + // c.createProgramFromFile("kernels/greduce.cl", options); + MCMKernel reducer = program.createKernel("greduce"); + + MCMMem dataMem = c.newBuffer().Using(data).b(); + MCMMem resultMem = c.newBuffer().Size(NBLOCKS, MCM.INT).b(); + MCMMem sharedMem = c.newBuffer().Size(BLOCK_SIZE, MCM.INT).Local().b(); + + int [] result = new int[NBLOCKS]; + + reducer.setArguments(dataMem, resultMem, sharedMem, data.length); + MCMEvent finished = q.enqueue1DKernel(reducer, NBLOCKS * BLOCK_SIZE, BLOCK_SIZE); + q.blockingReadBuffer(resultMem, Pointer.to(result), 0, resultMem.getSize(), finished); + + dataMem.release(); + resultMem.release(); + + reducer.release(); + program.release(); + + System.out.println(Arrays.toString(result)); + + int t = 0; + for (int i = 0; i < NBLOCKS; i++) { + t += result[i]; + } + + return t; + } + + private void prepareOptions(MCMProgramOptions options, ReduceOperation operation) { + switch (operation) { + case MIN: + options.define("OP", "MIN"); + options.define("NEUTRAL", "INT_MAX"); + break; + case MAX: + options.define("OP", "MAX"); + options.define("NEUTRAL", "INT_MIN"); + break; + case SUM: + options.define("OP", "SUM"); + options.define("NEUTRAL", 0); + break; + case MUL: + options.define("OP", "MUL"); + options.define("NEUTRAL", 1); + break; + default: + break; + } + } + + public static void main(String[] args) { + int [] data = new int[3000]; + + int total = 0; + int total2 = 0; + + Random rng = new Random(); + + for (int i = 0; i < data.length; i++) { + data[i] = rng.nextInt(100) + 1; + total += data[i]; + } + + for (int i = 0; i < BLOCK_SIZE; i++) { + total2 += data[i]; + } + + System.out.println(Arrays.toString(data)); + System.out.println(total); + System.out.println(total2); + + MCMASContext context = new MCMASContext(); + ReducePlugin reducer = new ReducePlugin(context); + + int result = reducer.reduce(data, ReducePlugin.SUM); + System.out.println(result); + + result = reducer.reduce(data, ReducePlugin.MUL); + System.out.println(result); + + result = reducer.reduce(data, ReducePlugin.MIN); + System.out.println(result); + + result = reducer.reduce(data, ReducePlugin.MAX); + System.out.println(result); + + System.out.println(reducer.getSourceURI("example.cl")); + System.out.println(reducer.getSourceURI(ReducePlugin.KERNEL_NAME)); + } +} diff --git a/src/mcmas/plugins/vectors/kernels/reduce.cl b/src/mcmas/plugins/vectors/kernels/reduce.cl new file mode 100644 index 0000000..e9f55a6 --- /dev/null +++ b/src/mcmas/plugins/vectors/kernels/reduce.cl @@ -0,0 +1,40 @@ +#define SUM(a, b) (a + b) +#define MUL(a, b) (0) +#define MIN(a, b) min(a, b) +#define MAX(a, b) max(a, b) + +__kernel +void greduce( + __global float* buffer, + __global float* result, + __local float* scratch, + __const int length) { + + int global_index = get_global_id(0); + int local_index = get_local_gid(0); + + // Load data into local memory + if (global_index < length) { + scratch[local_index] = buffer[global_index]; + } else { + // Infinity is the identity element for the sum operation + scratch[local_index] = NEUTRAL; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + for(int offset = 1; offset < get_local_size(0); offset <<= 1) { + int mask = (offset << 1) - 1; + if ((local_index & mask) == 0) { + float other = scratch[local_index + offset]; + float mine = scratch[local_index]; + scratch[local_index] = OP(mine, other); + } + + barrier(CLK_LOCAL_MEM_FENCE); + } + + if (local_index == 0) { + result[get_group_id(0)] = scratch[0]; + } +} diff --git a/src/mcmas/utils/BuffersUtils.java b/src/mcmas/utils/BuffersUtils.java new file mode 100644 index 0000000..da72668 --- /dev/null +++ b/src/mcmas/utils/BuffersUtils.java @@ -0,0 +1,60 @@ +package mcmas.utils; + +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.DoubleBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; +import java.nio.ShortBuffer; +import java.security.InvalidParameterException; + +import org.jocl.Sizeof; + +public class BuffersUtils { + + public static long sizeOf(Buffer buffer) { + if (buffer instanceof ByteBuffer || buffer instanceof CharBuffer) { + return buffer.capacity() * Sizeof.cl_char; + } else if (buffer instanceof ShortBuffer) { + return buffer.capacity() * Sizeof.cl_short; + } else if (buffer instanceof IntBuffer) { + return buffer.capacity() * Sizeof.cl_int; + } else if (buffer instanceof LongBuffer) { + return buffer.capacity() * Sizeof.cl_long; + } else if (buffer instanceof FloatBuffer) { + return buffer.capacity() * Sizeof.cl_float; + } else if (buffer instanceof DoubleBuffer) { + return buffer.capacity() * Sizeof.cl_double; + } else { + throw new InvalidParameterException("Unknown buffer type: " + buffer.getClass()); + } + } + + public static ByteBuffer directByteBuffer(int size) { + return ByteBuffer.allocateDirect(size); + } + + public static ShortBuffer directShortBuffer(int size) { + return ByteBuffer.allocateDirect(size * Sizeof.cl_short).asShortBuffer(); + } + + public static IntBuffer directIntBuffer(int size) { + return ByteBuffer.allocateDirect(size * Sizeof.cl_int).asIntBuffer(); + } + + public static LongBuffer directLongBuffer(int size) { + return ByteBuffer.allocateDirect(size * Sizeof.cl_long).asLongBuffer(); + } + + public static FloatBuffer directFloatBuffer(int size) { + return ByteBuffer.allocateDirect(size * Sizeof.cl_float).asFloatBuffer(); + } + + public static DoubleBuffer directDoubleBuffer(int size) { + return ByteBuffer.allocateDirect(size * Sizeof.cl_double).asDoubleBuffer(); + } + + +} diff --git a/src/mcmas/utils/FloatMatrix.java b/src/mcmas/utils/FloatMatrix.java new file mode 100644 index 0000000..3b6a5b3 --- /dev/null +++ b/src/mcmas/utils/FloatMatrix.java @@ -0,0 +1,32 @@ +package mcmas.utils; + +public class FloatMatrix extends Matrix { + + private final float[] storage; + + public FloatMatrix(int width, int height) { + super(width, height); + this.storage = new float[width * height]; + } + + public float get(int i) { + return get(i, 0); + } + + public float get(int x, int y) { + return storage[y * getWidth() + x]; + } + + public void set(int i, float val) { + set(i, 0, val); + } + + public void set(int x, int y, float val) { + storage[y * getWidth() + x] = val; + } + + public float[] getStorage() { + return storage; + } + +} diff --git a/src/mcmas/utils/IntMatrix.java b/src/mcmas/utils/IntMatrix.java new file mode 100644 index 0000000..cc34a55 --- /dev/null +++ b/src/mcmas/utils/IntMatrix.java @@ -0,0 +1,46 @@ +package mcmas.utils; + +public class IntMatrix extends Matrix { + + private int[] storage; + + public IntMatrix(int width, int height) { + super(width, height); + this.storage = new int[width * height]; + } + + public int get(int i) { + return get(i, 0); + } + + public int get(int x, int y) { + return storage[offset(x, y)]; + } + + public void set(int i, int val) { + set(i, 0, val); + } + + public void set(int x, int y, int val) { + storage[offset(x, y)] = val; + } + + public int[] getStorage() { + return storage; + } + + public String toString() { + StringBuffer b = new StringBuffer(); + + for (int i = 0; i < getHeight(); i++) { + for (int j = 0; j < getWidth(); j++) { + b.append(String.format("%2d ", get(j, i))); + } + + b.append('\n'); + } + + return b.toString(); + } + +} diff --git a/src/mcmas/utils/Matrix.java b/src/mcmas/utils/Matrix.java new file mode 100644 index 0000000..7ad25d8 --- /dev/null +++ b/src/mcmas/utils/Matrix.java @@ -0,0 +1,25 @@ +package mcmas.utils; + +public class Matrix { + + private final int width; + private final int height; + + public Matrix(int width, int height) { + this.width = width; + this.height = height; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public int offset(int i, int j) { + return j * width + i; + } + +} diff --git a/src/mcmas/utils/Objects7.java b/src/mcmas/utils/Objects7.java new file mode 100644 index 0000000..bde6b62 --- /dev/null +++ b/src/mcmas/utils/Objects7.java @@ -0,0 +1,61 @@ +package mcmas.utils; + +import java.util.Arrays; +import java.util.Comparator; + +/** + * Partial backport of the new Java SE 7.0 java.utils.Objects class + * @author glaville + * + */ +public class Objects7 { + + public static boolean equals(Object a, Object b) { + if (a == null) { + return (b == null ? true : false); + } else if (b == null) { + return false; + } else { + return a.equals(b); + } + } + + public static boolean deepEquals(Object a, Object b) { + if (a.getClass().isArray() && b.getClass().isArray()) { + return Arrays.deepEquals((Object[]) a, (Object[]) b); + } else { + return equals(a, b); + } + } + + public static int hashCode(Object o) { + return (o == null ? 0 : o.hashCode()); + } + + public static int hash(Object... values) { + return Arrays.hashCode(values); + } + + public static String toString(Object obj) { + return (obj == null ? "null" : obj.toString()); + } + + public static String toString(Object obj, String nullDefault) { + return (obj == null ? nullDefault : obj.toString()); + } + + public static int compare(T a, T b, Comparator c) { + return (a == b ? 0 : c.compare(a, b)); + } + + public static T requireNonNull(T obj) { + if (obj == null) throw new NullPointerException(); + return obj; + } + + public static T requireNonNull(T obj, String message) { + if (obj == null) throw new NullPointerException(message); + return obj; + } + +} diff --git a/src/mior/MiorSimulation.java b/src/mior/MiorSimulation.java new file mode 100644 index 0000000..fccf385 --- /dev/null +++ b/src/mior/MiorSimulation.java @@ -0,0 +1,215 @@ +package mior; + +/* +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.Random; +import java.util.concurrent.ExecutionException; + +import javax.swing.JFrame; + +import mior.model.IMiorModel; + +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.struct.Buffers; +import org.jocl.struct.SizeofStruct; + +import ocl.OCL; +import ocl.OCLCommandQueue; +import ocl.OCLContext; +import ocl.OCLEvent; +import ocl.OCLKernel; +import ocl.OCLMem; +import ocl.OCLProgram; + +public class MiorModel implements IMiorModel { + + private MiorMM [] mmList; + private OCLMem mmMem; + + private MiorOM [] omList; + private OCLMem omMem; + + private int [] associations; + private OCLMem associationsMem; + + private MiorWorld world; + private OCLMem worldMem; + + private OCLContext context; + private OCLProgram program; + private OCLCommandQueue queue; + + public MiorModel() { + initializeOpenCL(); + + this.world = new MiorWorld(); + + this.worldMem = context.createBuffer(1, MiorWorld.class, OCL.MEM_RW, world); + + this.worldSize = SizeofStruct.sizeof(MiorWorld.class); + + this.associations = new int[world.nbMM * world.nbOM]; + this.associationsSize = associations.length * Sizeof.cl_int; + this.associationsMem = context.createBuffer(associations.length, OCL.INT, OCL.MEM_RW); + + initializeMM(); + initializeOM(); + + computeTopography(); + computeLive(); + + releaseOpenCL(); + } + + public void computeTopography() { + OCLKernel topographyKernel = program.createKernel("topography"); + + topographyKernel.setArguments(mmMem, omMem, associationsMem, worldMem); + + OCLEvent event = queue.enqueueKernel( + topographyKernel, 2, + new long[] { 0, 0 }, + new long[] { mmList.length, omList.length }, + new long[] { 1, 1 } + ); + + try { + event.get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsSize); + System.out.println(Arrays.toString(associations)); + System.out.println(associations.length); + } + + public void computeLive() { + OCLKernel liveKernel = program.createKernel("topography"); + + liveKernel.setArguments(mmMem, omMem, associationsMem, worldMem); + + OCLEvent event = queue.enqueue1DKernel(liveKernel, mmList.length, 1); + + try { + event.get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsSize); + System.out.println(Arrays.toString(associations)); + System.out.println(associations.length); + } + + private void initializeMM() { + Random rand = new Random(); + + this.mmList = new MiorMM[world.nbMM]; + + for (int i = 0; i < world.nbMM; i++) { + mmList[i] = new MiorMM( + rand.nextInt(world.width), + rand.nextInt(world.width) + ); + } + + this.mmBuffer = Buffers.allocateBuffer(mmList); + Buffers.writeToBuffer(mmBuffer, mmList); + + this.mmSize = mmList.length * SizeofStruct.sizeof(MiorMM.class); + this.mmMem = context.createBuffer(mmSize, OCL.MEM_RW, Pointer.to(mmBuffer)); + } + private void initializeOM() { + Random rand = new Random(); + + this.omList = new MiorOM[world.nbOM]; + + for (int i = 0; i < world.nbOM; i++) { + omList[i] = new MiorOM( + rand.nextInt(world.width), + rand.nextInt(world.width) + ); + } + + this.omBuffer = Buffers.allocateBuffer(omList); + Buffers.writeToBuffer(omBuffer, omList); + + this.omSize = omList.length * SizeofStruct.sizeof(MiorOM.class); + this.omMem = context.createBuffer(omSize, OCL.MEM_RW, Pointer.to(omBuffer)); + } + + private void initializeOpenCL() { + this.context = new OCLContext(); + this.queue = context.createCommandQueue(); + + try { + this.program = context.createProgram(readFileAsString("/home/glaville/mior.cl")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void releaseOpenCL() { + associationsMem.release(); + worldMem.release(); + mmMem.release(); + omMem.release(); + queue.release(); + context.release(); + } + + @Override + public MiorOM[] getOMList() { + return omList; + } + + @Override + public MiorMM[] getMMList() { + return mmList; + } + + @Override + public MiorWorld getWorld() { + return world; + } + + @Override + public int[] getAssociations() { + return associations; + } + + private static String readFileAsString(String filePath) throws java.io.IOException{ + byte[] buffer = new byte[(int) new File(filePath).length()]; + FileInputStream f = new FileInputStream(filePath); + f.read(buffer); + return new String(buffer); + } + +}*/ diff --git a/src/mior/MiorSimulation2.java b/src/mior/MiorSimulation2.java new file mode 100644 index 0000000..ea446c6 --- /dev/null +++ b/src/mior/MiorSimulation2.java @@ -0,0 +1,170 @@ +package mior; +/* +import java.util.Random; +import java.util.concurrent.ExecutionException; + +import javax.swing.JFrame; + +import mior.model.IMiorModel; +import mior.view.MiorCanvas; + +import org.jocl.Pointer; +import org.jocl.Sizeof; +import ocl.OCL; +import ocl.OCLCommandQueue; +import ocl.OCLContext; +import ocl.OCLEvent; +import ocl.OCLKernel; +import ocl.OCLMem; +import ocl.OCLProgram; + +public class MiorSimulation2 implements IMiorModel { + + private MiorMM [] mmList; + private StructBuffer mmBuffer; + + private MiorOM [] omList; + private StructBuffer omBuffer; + + private int [] associations; + private long associationsSize; + private OCLMem associationsMem; + + private MiorWorld world; + private StructBuffer worldBuffer; + + private OCLContext context; + private OCLCommandQueue queue; + + public MiorSimulation2() { + initializeOpenCL(); + + this.world = new MiorWorld(); + this.worldBuffer = new StructBuffer(context, world); + + this.associations = new int[world.nbMM * world.nbOM]; + this.associationsSize = associations.length * Sizeof.cl_int; + this.associationsMem = context.createBuffer(associations.length, OCL.INT, OCL.MEM_RW); + + initializeMM(); + initializeOM(); + + computeTopography(); + + releaseOpenCL(); + } + + public void computeTopography() { + OCLProgram program = context.createProgram(MiorKernel.topographyKernel); + OCLKernel topographyKernel = program.createKernel("topography"); + + topographyKernel.setArguments(mmBuffer.getMem(), omBuffer.getMem(), associationsMem, worldBuffer.getMem()); + + OCLEvent event = queue.enqueueKernel( + topographyKernel, 2, + new long[] { 0, 0 }, + new long[] { mmList.length, omList.length }, + new long[] { 1, 1 } + ); + + try { + event.get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsSize); + + /* + for (int i = 0; i < world.nbMM; i++) { + for (int j = 0; j < world.nbOM; j++) { + //System.out.print(", " + associations[i * world.nbMM + j]); + double distance = Math.sqrt(Math.pow(mmList[i].x - omList[j].x, 2) + Math.pow(mmList[i].y - omList[j].y, 2)); + + if (distance <= world.radius) { + System.out.print("."); + } + } + System.out.println(); + }*/ +/* } + + private void initializeMM() { + Random rand = new Random(); + + this.mmList = new MiorMM[world.nbMM]; + + for (int i = 0; i < world.nbMM; i++) { + mmList[i] = new MiorMM( + rand.nextInt(world.width), + rand.nextInt(world.width) + ); + } + + this.mmBuffer = new StructBuffer(context, mmList); + } + private void initializeOM() { + Random rand = new Random(); + + this.omList = new MiorOM[world.nbOM]; + + for (int i = 0; i < world.nbOM; i++) { + omList[i] = new MiorOM( + rand.nextInt(world.width), + rand.nextInt(world.width) + ); + } + + this.omBuffer = new StructBuffer(context, omList); + } + + private void initializeOpenCL() { + this.context = new OCLContext(); + this.queue = context.createCommandQueue(); + } + + private void releaseOpenCL() { + associationsMem.release(); + worldBuffer.release(); + mmBuffer.release(); + omBuffer.release(); + queue.release(); + context.release(); + } + + @Override + public MiorOM[] getOMList() { + return omList; + } + + @Override + public MiorMM[] getMMList() { + return mmList; + } + + @Override + public MiorWorld getWorld() { + return world; + } + + @Override + public int[] getAssociations() { + return associations; + } + + public static void main(String[] args) { + MiorSimulation2 simu = new MiorSimulation2(); + MiorCanvas canvas = new MiorCanvas(simu); + + JFrame frame = new JFrame("Mior CL"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setContentPane(canvas); + frame.pack(); + frame.setVisible(true); + } +} +*/ \ No newline at end of file diff --git a/src/mior/OldMiorKernel.java b/src/mior/OldMiorKernel.java new file mode 100644 index 0000000..4e575f0 --- /dev/null +++ b/src/mior/OldMiorKernel.java @@ -0,0 +1,50 @@ +package mior; + +public class OldMiorKernel { + + public final static String topographyKernel = "" + + "typedef struct { \n" + + " float x; \n" + + " float y; \n" + + " int carbone; \n" + + " int dormance; \n" + + "} MM; \n" + + + "typedef struct { \n" + + " float x; \n" + + " float y; \n" + + " int carbone; \n" + + "} OM; \n" + + + "typedef struct { \n" + + " int nbMM; \n" + + " int nbOM; \n" + + " int radius; \n" + + " float respirationRate; \n" + + " float growRate; \n" + + " float killRate; \n" + + " int width; \n" + + " int minSize; \n" + + "} MiorWorld; \n" + + + "kernel void topography( \n" + + " global MM *mmList, \n" + + " global OM *omList, \n" + + " global int *topo, \n" + + " constant MiorWorld *world) { \n" + + " int iMM = get_global_id(0); \n" + + " int iOM = get_global_id(1); \n" + + " int index = iMM * world->nbOM + iOM; \n" + + " float dx = omList[iOM].x - mmList[iMM].x; " + + " float dy = omList[iOM].y - mmList[iMM].y; \n" + + " float distance = sqrt(dx * dx + dy * dy); \n" + + " if (distance <= world->radius) { \n" + + " topo[index] = distance; \n" + + " } else { \n" + + " topo[index] = 0; \n" + + " }; //topo[index] = distance;\n" + + " \n" + + "}\n"; + + +} diff --git a/src/mior/StructBuffer.java b/src/mior/StructBuffer.java new file mode 100644 index 0000000..9b95f2b --- /dev/null +++ b/src/mior/StructBuffer.java @@ -0,0 +1,58 @@ +package mior; + +import java.nio.ByteBuffer; + +import mcmas.core.MCMContext; +import mcmas.core.MCMMem; + +import org.jocl.struct.Buffers; +import org.jocl.struct.SizeofStruct; +import org.jocl.struct.Struct; + +public class StructBuffer { + + private final T[] data; + private final ByteBuffer buffer; + private final long byteSize; + private final MCMMem mem; + + public StructBuffer(MCMContext context, T... data) { + this.data = data; + this.buffer = Buffers.allocateBuffer(data); + Buffers.writeToBuffer(buffer, data); + this.byteSize = SizeofStruct.sizeof(data[0].getClass()); + this.mem = context.newBuffer().Using(buffer).b(); + //createBuffer(byteSize, OCL.MEM_RW, Pointer.to(buffer)); + } + + public T[] getData() { + return data; + } + + public ByteBuffer getBuffer() { + return buffer; + } + + public long getByteSize() { + return byteSize; + } + + public MCMMem getMem() { + return mem; + } + + public void read() { + buffer.rewind(); + Buffers.readFromBuffer(buffer, data); + } + + public void write() { + buffer.rewind(); + Buffers.writeToBuffer(buffer, data); + } + + public void release() { + mem.release(); + } + +} diff --git a/src/mior/controler/AbstractMiorAction.java b/src/mior/controler/AbstractMiorAction.java new file mode 100644 index 0000000..e3645ce --- /dev/null +++ b/src/mior/controler/AbstractMiorAction.java @@ -0,0 +1,19 @@ +package mior.controler; + +import javax.swing.AbstractAction; + +public abstract class AbstractMiorAction extends AbstractAction { + + private static final long serialVersionUID = 1L; + private T data; + + public AbstractMiorAction(T data, String name) { + super(name); + this.data = data; + } + + public T getData() { + return data; + } + +} diff --git a/src/mior/controler/AutoLiveAction.java b/src/mior/controler/AutoLiveAction.java new file mode 100644 index 0000000..884f352 --- /dev/null +++ b/src/mior/controler/AutoLiveAction.java @@ -0,0 +1,75 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import javax.swing.SwingWorker; + +import mior.model.IMiorModel; + +public class AutoLiveAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public AutoLiveAction(IMiorModel model) { + super(model, "AutoLive"); + } + + @Override + public void actionPerformed(ActionEvent e) { + setEnabled(false); + new SwingWorker() { + + @Override + protected Object doInBackground() throws Exception { + /* + int notChangedSince = 0; + final IMiorModel model = getData(); + int oldWorldCO2 = model.getWorld().CO2; + model.doLive(); + + if (oldWorldCO2 == model.getWorld().CO2) { + model.reset(); + model.doLive(); + } + + while (notChangedSince < 2) { + if (model.getWorld().CO2 == oldWorldCO2) { + notChangedSince++; + } else { + oldWorldCO2 = model.getWorld().CO2; + notChangedSince = 0; + } + + model.doLive(); + }*/ + getData().doAutoLive(); + return null; + }; + + @Override + protected void done() { + setEnabled(true); + }; + }.execute(); + + /* + model.doLive(); + + if (oldWorldCO2 == model.getWorld().CO2) { + model.reset(); + model.doLive(); + } + + while (notChangedSince < 2) { + if (model.getWorld().CO2 == oldWorldCO2) { + notChangedSince++; + } else { + oldWorldCO2 = model.getWorld().CO2; + notChangedSince = 0; + } + + model.doLive(); + }*/ + } + +} diff --git a/src/mior/controler/ClearAction.java b/src/mior/controler/ClearAction.java new file mode 100644 index 0000000..b796130 --- /dev/null +++ b/src/mior/controler/ClearAction.java @@ -0,0 +1,20 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import mior.view.MiorGraph; + +public class ClearAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public ClearAction(MiorGraph graph) { + super(graph, "Clear charts"); + } + + @Override + public void actionPerformed(ActionEvent e) { + getData().clear(); + } + +} diff --git a/src/mior/controler/ConfigureAssociationsAction.java b/src/mior/controler/ConfigureAssociationsAction.java new file mode 100644 index 0000000..8ec8560 --- /dev/null +++ b/src/mior/controler/ConfigureAssociationsAction.java @@ -0,0 +1,23 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import javax.swing.AbstractButton; + +import mior.view.MiorCanvas; + +public class ConfigureAssociationsAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public ConfigureAssociationsAction(MiorCanvas data) { + super(data, "Show associations"); + } + + @Override + public void actionPerformed(ActionEvent e) { + AbstractButton src = (AbstractButton) e.getSource(); + getData().setAssociationsVisible(src.isSelected()); + } + +} diff --git a/src/mior/controler/ConfigureRadiusAction.java b/src/mior/controler/ConfigureRadiusAction.java new file mode 100644 index 0000000..863e8cf --- /dev/null +++ b/src/mior/controler/ConfigureRadiusAction.java @@ -0,0 +1,23 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import javax.swing.AbstractButton; + +import mior.view.MiorCanvas; + +public class ConfigureRadiusAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public ConfigureRadiusAction(MiorCanvas data) { + super(data, "Show MM radius"); + } + + @Override + public void actionPerformed(ActionEvent e) { + AbstractButton src = (AbstractButton) e.getSource(); + getData().setRadiusVisible(src.isSelected()); + } + +} diff --git a/src/mior/controler/ConfigureRandomAction.java b/src/mior/controler/ConfigureRandomAction.java new file mode 100644 index 0000000..489855a --- /dev/null +++ b/src/mior/controler/ConfigureRandomAction.java @@ -0,0 +1,42 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import javax.swing.AbstractButton; +import javax.swing.Action; + +import mior.model.IMiorModel; + +public class ConfigureRandomAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public ConfigureRandomAction(IMiorModel data) { + super(data, "Enable randomization"); + } + + @Override + public void actionPerformed(ActionEvent e) { + AbstractButton src = (AbstractButton) e.getSource(); + getData().setRandomEnabled(src.isSelected()); + } + + @Override + public Object getValue(String key) { + if (Action.SELECTED_KEY.equals(key)) { + return getData().isRandomEnabled(); + } else { + return super.getValue(key); + } + } + + @Override + public void putValue(String key, Object newValue) { + if (Action.SELECTED_KEY.equals(key)) { + getData().setRandomEnabled((Boolean) newValue); + } else { + super.putValue(key, newValue); + } + } + +} diff --git a/src/mior/controler/LiveAction.java b/src/mior/controler/LiveAction.java new file mode 100644 index 0000000..9f3cedc --- /dev/null +++ b/src/mior/controler/LiveAction.java @@ -0,0 +1,36 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import javax.swing.SwingWorker; + +import mior.model.IMiorModel; + +public class LiveAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public LiveAction(IMiorModel model) { + super(model, "Live"); + } + + @Override + public void actionPerformed(ActionEvent e) { + setEnabled(false); + new SwingWorker() { + + @Override + protected Void doInBackground() throws Exception { + getData().doLive(); + return null; + } + + @Override + protected void done() { + setEnabled(true); + }; + + }.execute(); + } + +} diff --git a/src/mior/controler/MiorLauncher.java b/src/mior/controler/MiorLauncher.java new file mode 100644 index 0000000..b32b6f6 --- /dev/null +++ b/src/mior/controler/MiorLauncher.java @@ -0,0 +1,393 @@ +package mior.controler; + + +import java.io.IOException; +import java.util.Arrays; + +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import mcmas.core.MCMChrono; +import mior.model.IMiorModel; +import mior.model.ModelFactory; +import mior.view.MiorResultWriter; +import mior.view.MiorView; +import joptsimple.OptionParser; +import joptsimple.OptionSet; + +public class MiorLauncher { + + private final ModelFactory factory; + + private int modelVersion; + private boolean topologyOnly; + private boolean guiEnabled; + private String outputFile; + private String prefix; + + private int nbRepetitions; + private int nbSimulations; + //private int nbKernels; + + private final static Logger logger = LoggerFactory.getLogger(MiorLauncher.class); + + public MiorLauncher() { + this.modelVersion = 4; + this.factory = new ModelFactory(); + this.topologyOnly = false; + this.guiEnabled = false; + this.outputFile = "output.dat"; + this.prefix = ""; + + this.nbRepetitions = 0; + //this.nbKernels = 0; + this.nbSimulations = 0; + } + + public void setTopologyOnly(boolean topologyOnly) { + this.topologyOnly = topologyOnly; + } + + public boolean isTopologyOnly() { + return topologyOnly; + } + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public int getModelVersion() { + return modelVersion; + } + + public void setModelVersion(int modelVersion) { + this.modelVersion = modelVersion; + } + + public void setBatchSize(int batchSize) { + this.nbRepetitions = batchSize; + } + + public int getBatchSize() { + return nbRepetitions; + } + + /* + public void setNbKernels(int nbKernels) { + this.nbKernels = nbKernels; + } + + public int getNbKernels() { + return nbKernels; + }*/ + + public void setTotalSize(int totalSize) { + this.nbSimulations = totalSize; + } + + public int getTotalSize() { + return nbSimulations; + } + + public String getOutputFile() { + return outputFile; + } + + public void setOutputFile(String outputFile) { + this.outputFile = outputFile; + } + + public boolean isGuiEnabled() { + return guiEnabled; + } + + public void setGuiEnabled(boolean guiEnabled) { + this.guiEnabled = guiEnabled; + } + + public ModelFactory getFactory() { + return factory; + } + + public void start(int nbMM, int nbOM, int scale) { + logger.info("Simulation size: " + nbMM + "x" + nbOM + " (scale: " + scale + ")"); + IMiorModel model = factory.createModel(nbMM, nbOM, scale, modelVersion); + model.addUpdateListener(new MiorResultWriter(outputFile)); + + if (guiEnabled) { + startGUI(model); + } + + if ((nbRepetitions < 1 || nbSimulations < 1) && !guiEnabled) { + throw new RuntimeException("No GUI and no simulation to execute"); + } + + System.err.println("# Running " + nbRepetitions + " time(s) the simulation"); + + //System.out.println(guiEnabled); + //System.out.println(nbKernels); + long [] results = new long[nbRepetitions]; + final int groupSize = getFactory().getGroupSize(); + + final int nbKernels = (nbSimulations % groupSize == 0 ? nbSimulations / groupSize : nbSimulations / groupSize + 1); + final int actualTotalSize = nbKernels * groupSize; + final double correctionFactor = (1.0d * nbSimulations) / actualTotalSize; + + System.err.println("# " + correctionFactor); + + for (int i = 0; i < nbRepetitions; i++) { + MCMChrono simChrono = new MCMChrono("Mior simulation"); + + System.err.println("# Running " + nbKernels + " times(s) a kernel of size " + groupSize + " to complete the simulation"); + simChrono.start(); + + for (int j = 0; j < nbKernels; j++) { + + if (topologyOnly) { + model.reset(); + model.doTopology(); + } else { + model.reset(); + model.doAutoLive(); + } + } + + results[i] = (long) (simChrono.stop().getValue() * correctionFactor); + } + + //System.out.println(Arrays.toString(results)); + if (nbRepetitions != 0) { + printStats(results); + } + + if (! guiEnabled) { + model.release(); + } + } + + private void startGUI(IMiorModel model) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (final Exception e) { + e.printStackTrace(); + } + + final MiorView view = new MiorView(model, "MIOR Model version: " + modelVersion); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + view.getFrame().setVisible(true); + } + + }); + } + + private void printStats(long [] rawResults) { + // Sort the results + long [] results = rawResults.clone(); //Arrays.copyOf(rawResults, rawResults.length); + Arrays.sort(results); + + // Remove the min and max if we have more than 5 values + if (results.length >= 5) { + results = Arrays.copyOfRange(results, 1, results.length - 1); + } + + // Min and max time + final long min = results[0]; + final long max = results[results.length - 1]; + + // Algebric mean + double totalTime = 0; + + for (long time : results) { + totalTime += time; + } + + final double mean = totalTime / results.length; + + // ET computation + + long totalET = 0; + + for (long time : results) { + totalET += (time - mean) * (time - mean); + } + + final double ET = Math.sqrt(totalET / results.length); + + // Display + + System.out.println("# Min Max Avg ET"); + System.out.println((prefix != null ? prefix + " " : "") + min + " " + max + " " + mean + " " + ET); + } + + public static void main(String[] args) { + final MiorLauncher simulation = new MiorLauncher(); + + OptionParser parser = new OptionParser(); + + parser.acceptsAll(Arrays.asList("o", "output"), "Output File") + .withRequiredArg().ofType(String.class) + .defaultsTo("output.dat"); + + /* + * batchSize : Number of time to repeat (and average results) the whole simulation + * totalSize : Total number of MIOR simulations to execute + * kernelSize : Total number of MIOR to execute in the same kernel (par. implementations only) + */ + + parser.acceptsAll(Arrays.asList("b", "batchSize", "r", "repeat"), + "Number of time to repeat (for stats) the whole simulation") + .withOptionalArg().ofType(Integer.class).defaultsTo(20); + + parser.acceptsAll(Arrays.asList("ts", "totalSize", "n", "nbSimulations"), + "Total number of MIOR simulations to execute") + .withRequiredArg().ofType(Integer.class).defaultsTo(0); + + parser.acceptsAll(Arrays.asList("ks", "kernelSize", "groupSize"), + "Number of simulations to execute each kernel (PAR. IMPLEMENTATIONS ONLY)") + .withRequiredArg().ofType(Integer.class); + + parser.acceptsAll(Arrays.asList("r", "random", "randomizePopulations"), + "Enable randomization of Mior models").withOptionalArg() + .ofType(Boolean.class).defaultsTo(true); + + parser.acceptsAll(Arrays.asList("c", "copy", "alwaysCopy"), + "Always copy data between GPU and CPU").withOptionalArg() + .ofType(Boolean.class).defaultsTo(true); + + parser.acceptsAll(Arrays.asList("j", "java"), + "Use the Java implementation"); + + parser.acceptsAll(Arrays.asList("s", "scale"), + "Scale the model by the given factor").withRequiredArg() + .ofType(Integer.class).defaultsTo(1); + + parser.accepts("mm", "Number of MM to use").withRequiredArg() + .ofType(Integer.class).defaultsTo(38); + + parser.accepts("om", "Number of OM to use").withRequiredArg() + .ofType(Integer.class).defaultsTo(310); + + parser.acceptsAll(Arrays.asList("v", "version"), + "Use this OpenCL implementation version").withRequiredArg() + .ofType(Integer.class).defaultsTo(5); + + parser.acceptsAll(Arrays.asList("p", "prefix"), + "Prefix to use for output").withRequiredArg() + .ofType(String.class); + + parser.acceptsAll(Arrays.asList("t", "topoOnly"), + "Execute only the topology step").withOptionalArg() + .ofType(Boolean.class).defaultsTo(false); + + parser.acceptsAll(Arrays.asList("g", "gui"), "Enable GUI") + .withOptionalArg().ofType(Boolean.class).defaultsTo(true); + + parser.acceptsAll(Arrays.asList("h", "help"), "Print this help"); + + OptionSet options = parser.parse(args); + + /** + * HELP + */ + + if (options.has("help")) { + try { + parser.printHelpOn(System.out); + return; + } catch (IOException e) { + System.err.println("Failed to print help to standard output"); + e.printStackTrace(); + } + } + + /** + * PARALLELIZATION SETTINGS + */ + + if (options.has("batchSize")) { + simulation.getFactory().setBatchModeEnabled(true); + simulation.setBatchSize((Integer) options.valueOf("batchSize")); + } + + + if (options.has("totalSize")) { + int totalSize = (Integer) options.valueOf("totalSize"); + simulation.setTotalSize(totalSize); + + if (options.has("kernelSize")) { + int kernelSize = (Integer) options.valueOf("kernelSize"); + + if (kernelSize < 1) { + throw new RuntimeException("kernelSize must be a divider of the total number of simulations (" + totalSize + ")"); + } + + //simulation.setNbKernels(totalSize % kernelSize == 0 ? totalSize / kernelSize : (totalSize / kernelSize) + 1); + simulation.getFactory().setGroupSize(kernelSize); + } else { + //simulation.setNbKernels(totalSize); + simulation.getFactory().setGroupSize(1); + } + } + + if (options.has("blockSize")) { + simulation.getFactory().setBlockSize((Integer) options.valueOf("blockSize")); + } + + if (options.has("random")) { + final boolean random = (Boolean) options.valueOf("random"); + simulation.getFactory().setRandomEnabled(random); + } + + if (options.has("alwaysCopy")) { + final boolean copy = (Boolean) options.valueOf("alwaysCopy"); + simulation.getFactory().setBatchModeEnabled(!copy); + } + + /** + * MODEL VERSION SETTINGS + */ + + if (options.has("java")) { + if (! options.has("version")) { + simulation.setModelVersion(0); + } else { + System.err.println("Error: Java and OpenCL implementation can't be used at the same time."); + System.exit(1); + } + } else { + simulation.setModelVersion((Integer) options.valueOf("version")); + } + + /** + * OTHER PARAMETERS + */ + + if (options.has("gui")) { + simulation.setGuiEnabled((Boolean) options.valueOf("gui")); + } else if (simulation.getFactory().getGroupSize() == 0) { + simulation.setGuiEnabled(true); + } + + simulation.setTopologyOnly((Boolean) options.valueOf("topoOnly")); + simulation.setOutputFile((String) options.valueOf("output")); + simulation.setPrefix((String) options.valueOf("prefix")); + + final int nbMM = (Integer) options.valueOf("mm"); + final int nbOM = (Integer) options.valueOf("om"); + final int scale = (Integer) options.valueOf("scale"); + + simulation.start(nbMM, nbOM, scale); + } + +} diff --git a/src/mior/controler/ResetAction.java b/src/mior/controler/ResetAction.java new file mode 100644 index 0000000..cd65395 --- /dev/null +++ b/src/mior/controler/ResetAction.java @@ -0,0 +1,36 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import javax.swing.SwingWorker; + +import mior.model.IMiorModel; + +public class ResetAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public ResetAction(IMiorModel model) { + super(model, "Reset"); + } + + @Override + public void actionPerformed(ActionEvent e) { + setEnabled(false); + new SwingWorker() { + + @Override + protected Void doInBackground() throws Exception { + getData().reset(); + return null; + } + + @Override + protected void done() { + setEnabled(true); + }; + + }.execute(); + } + +} diff --git a/src/mior/controler/TopoAction.java b/src/mior/controler/TopoAction.java new file mode 100644 index 0000000..a33de90 --- /dev/null +++ b/src/mior/controler/TopoAction.java @@ -0,0 +1,36 @@ +package mior.controler; + +import java.awt.event.ActionEvent; + +import javax.swing.SwingWorker; + +import mior.model.IMiorModel; + +public class TopoAction extends AbstractMiorAction { + + private static final long serialVersionUID = 1L; + + public TopoAction(IMiorModel model) { + super(model, "Topo"); + } + + @Override + public void actionPerformed(ActionEvent e) { + setEnabled(false); + new SwingWorker() { + + @Override + protected Void doInBackground() throws Exception { + getData().doTopology(); + return null; + } + + @Override + protected void done() { + setEnabled(true); + }; + + }.execute(); + } + +} diff --git a/src/mior/model/AbstractMiorModel.java b/src/mior/model/AbstractMiorModel.java new file mode 100644 index 0000000..575802f --- /dev/null +++ b/src/mior/model/AbstractMiorModel.java @@ -0,0 +1,172 @@ +package mior.model; + +import java.util.ArrayList; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public abstract class AbstractMiorModel implements IMiorModel { + + private int step; + private boolean batchModeEnabled; + private boolean randomEnabled; + private boolean topologyDone; + private boolean finished; + + private ArrayList updateListeners; + private ArrayList finishListeners; + + private final static Logger logger = LoggerFactory.getLogger(AbstractMiorModel.class); + + public AbstractMiorModel() { + this.step = 0; + this.batchModeEnabled = false; + this.randomEnabled = true; + this.finished = false; + this.updateListeners = new ArrayList(); + this.finishListeners = new ArrayList(); + } + + @Override + public final boolean isBatchModeEnabled() { + return batchModeEnabled; + } + + @Override + public final void setBatchModeEnabled(boolean b) { + this.batchModeEnabled = b; + } + + @Override + public final boolean isRandomEnabled() { + return randomEnabled; + } + + @Override + public final void setRandomEnabled(boolean b) { + this.randomEnabled = b; + } + + @Override + public int getBlockSize() { + throw new UnsupportedOperationException("Explicit block size is not supported on this implementation."); + } + + @Override + public void setBlockSize(int blockSize) { + throw new UnsupportedOperationException("Setting an explicit block size is not supported on this implementation."); + } + + @Override + public boolean isFinished() { + return finished; + } + + @Override + public final void reset() { + this.step = 0; + this.finished = false; + resetImpl(); + fireMiorUpdated(); + } + + @Override + public final int getStep() { + return step; + } + + @Override + public final void addUpdateListener(IMiorUpdateListener listener) { + updateListeners.add(listener); + } + + @Override + public final void removeUpdateListener(IMiorUpdateListener listener) { + updateListeners.remove(listener); + } + + protected final void fireMiorUpdated() { + for (IMiorUpdateListener listener : updateListeners) { + listener.onMiorModelUpdated(this); + } + } + + protected final void fireMiorFinished() { + for (IMiorFinishListener listener : finishListeners) { + listener.onMiorModelFinished(this); + } + } + + @Override + public final void doTopology() { + logger.trace("doTopology"); + + step++; + doTopologyImpl(); + this.topologyDone = true; + fireMiorUpdated(); + + logger.trace("doTopologyEnd"); + } + + @Override + public final void doLive() { + logger.trace("doLive"); + + if (! topologyDone) { + doTopology(); + } + + step ++; + doLiveImpl(); + fireMiorUpdated(); + + logger.trace("doLiveEnd"); + } + + @Override + public void doAutoLive() { + int notChangedSince = 0; + int oldWorldCO2 = getWorld().CO2; + + if (step != 0) { + doLive(); + } + + if (oldWorldCO2 == getWorld().CO2) { + reset(); + doTopology(); + doLive(); + } + + while (notChangedSince < 2) { + if (getWorld().CO2 == oldWorldCO2) { + notChangedSince++; + } else { + oldWorldCO2 = getWorld().CO2; + notChangedSince = 0; + } + + doLive(); + } + + this.finished = true; + onSimulationFinished(); + } + + @Override + public final void release() { + releaseImpl(); + } + + protected abstract void resetImpl(); + protected abstract void doTopologyImpl(); + protected abstract void doLiveImpl(); + protected abstract void releaseImpl(); + + protected void onSimulationFinished() { + fireMiorUpdated(); + fireMiorFinished(); + } +} diff --git a/src/mior/model/CPUMiorModel.java b/src/mior/model/CPUMiorModel.java new file mode 100644 index 0000000..317e4ef --- /dev/null +++ b/src/mior/model/CPUMiorModel.java @@ -0,0 +1,193 @@ +package mior.model; + +import java.util.Random; + +public class CPUMiorModel extends SimpleMiorModel { + + public final int OFFER_INVALID = -1; + public final int OFFER_UNINIT = -2; + + public CPUMiorModel(MiorWorld world) { + super(world); + } + + @Override + public void doTopologyImpl() { + int occupation = 0; + int tailleMax = 0; + + for (int iMM = 0; iMM < mmList.length; iMM++) { + int taille = 0; + + for (int iOM = 0; iOM < omList.length; iOM++) { + + final MiorMM mm = mmList[iMM]; + final MiorOM om = omList[iOM]; + final int offset = iMM * world.nbOM + iOM; + + final float dx = mm.x - om.x; + final float dy = mm.y - om.y; + + if (Math.sqrt(dx * dx + dy * dy) < world.RA) { + associations[offset] = OFFER_UNINIT; + taille++; + occupation++; + } else { + associations[offset] = OFFER_INVALID; + } + } + + tailleMax = Math.max(tailleMax, taille); + } + + final int maxCapacity = nbOM * nbMM; + final double fraction = (100.0 * occupation) / maxCapacity; + + //System.out.println("Occupation : " + occupation + "/" + maxCapacity + // + "\t(" + fraction + "%)"); + //System.out.println("Taille max : " + tailleMax + "/" + nbOM); + } + + @Override + protected void doLiveImpl() { + for (int iMM = 0; iMM < world.nbMM; iMM++) { + final int indexes[] = getOMIndexes(); + + breath(iMM, indexes); + + if (mmList[iMM].dormance == 0) { + grow(iMM, indexes); + } + } + + clean(); + } + + @Override + protected void releaseImpl() { + } + + private void breath(int iMM, int[] indexes) { + final MiorMM mm = mmList[iMM]; + final int totalNeed = (int) (mm.carbone * world.RR); + int remainingNeed = totalNeed; + + // Check if ressources seems to be available + + for (final int iOM : indexes) { + final int offset = iMM * world.nbOM + iOM; + + if (remainingNeed < 0) { + break; + } + + // System.out.println(associations[mmOffset + iOM]); + if (associations[offset] != OFFER_INVALID) { + final int offer = (int) (world.K * omList[iOM].carbone); + // System.out.println("MM(" + iMM + "): OM(" + iOM + ") offers " + // + offer + ", remaining need : " + remainingNeed); + remainingNeed -= offer; + } + } + + if (remainingNeed > 0) { + mm.dormance = 1; + } else { + mm.dormance = 0; + remainingNeed = totalNeed; + + for (final int iOM : indexes) { + if (remainingNeed < 0) { + break; + } + + final int offset = iMM * world.nbOM + iOM; + + if (associations[offset] != OFFER_INVALID) { + final MiorOM om = omList[iOM]; + int offer, consum; + + synchronized (om) { + offer = (int) (world.K * om.carbone); + consum = Math.min(offer, remainingNeed); + + remainingNeed -= consum; + om.carbone -= consum; + } + + synchronized (world) { + world.CO2 += consum; + } + + associations[offset] = offer - consum; + } + } + } + + } + + private int[] getOMIndexes() { + final Random rng = new Random(); + final int[] indexes = new int[world.nbOM]; + + for (int i = 0; i < indexes.length; i++) { + indexes[i] = i; + } + + shuffle(indexes, rng); + return indexes; + } + + private void grow(int iMM, int[] indexes) { + final MiorMM mm = mmList[iMM]; + + final int totalNeed = (int) (mm.carbone * world.GR); + int remainingNeed = totalNeed; + + for (final int iOM : indexes) { + if (remainingNeed < 0) { + break; + } + + final int omOffset = iMM * omList.length + iOM; + int offer; + + if (associations[omOffset] != OFFER_INVALID) { + final MiorOM om = omList[iOM]; + + synchronized (om) { + if (associations[omOffset] != OFFER_UNINIT) { + offer = associations[omOffset]; + } else { + offer = (int) (world.K * om.carbone); + } + + final int consum = Math.min(offer, remainingNeed); + + remainingNeed -= consum; + om.carbone -= consum; + mm.carbone += consum; + } + + } + } + } + + private void clean() { + for (int i = 0; i < associations.length; i++) { + if (associations[i] != OFFER_INVALID) { + associations[i] = OFFER_UNINIT; + } + } + } + + private void shuffle(int[] a, Random rng) { + for (int i = a.length - 1; i >= 1; i--) { + final int j = rng.nextInt(i + 1); + final int t = a[i]; + a[i] = a[j]; + a[j] = t; + } + } + +} diff --git a/src/mior/model/DynamicArray.java b/src/mior/model/DynamicArray.java new file mode 100644 index 0000000..1d2e287 --- /dev/null +++ b/src/mior/model/DynamicArray.java @@ -0,0 +1,70 @@ +package mior.model; + +import mcmas.core.MCMChrono; + +import java.util.ArrayList; +import java.util.Arrays; + + +public class DynamicArray { + + private int[] array; + private int length; + + public DynamicArray() { + this.array = new int[1024]; + } + + public void set(int index, int value) { + if (index >= array.length) { + this.array = Arrays.copyOf(array, index << 1); //nearestPowerOfTwo(index + 1)); + } + + this.length = Math.max(length, index + 1); + this.array[index] = value; + } + + public int get(int index) { + return this.array[index]; + } + + public int[] toArray() { + return Arrays.copyOf(array, length); + } + + private int nearestPowerOfTwo(int n) { + final int bitsize = Integer.SIZE; + n--; + + for (int i = 1; i <= bitsize >> 1; i <<= 1) { + n = n | (n >> i); + } + + return n + 1; + } + + public static void main(String[] args) { + MCMChrono c = new MCMChrono("ArrayList"); + + c.start(); + + ArrayList a = new ArrayList(); + + for (int i = 0; i < 10000000; i++) { + a.add(i); + } + + System.out.println(c.stop()); + + c.start(); + + DynamicArray b = new DynamicArray(); + + for (int i = 0; i < 10000000; i++) { + b.set(i, i); + } + + System.out.println(c.stop()); + } + +} diff --git a/src/mior/model/IMiorAgent.java b/src/mior/model/IMiorAgent.java new file mode 100644 index 0000000..703cacc --- /dev/null +++ b/src/mior/model/IMiorAgent.java @@ -0,0 +1,9 @@ +package mior.model; + +public interface IMiorAgent { + + public float getX(); + public float getY(); + public int getCarbone(); + +} diff --git a/src/mior/model/IMiorFinishListener.java b/src/mior/model/IMiorFinishListener.java new file mode 100644 index 0000000..1a5b594 --- /dev/null +++ b/src/mior/model/IMiorFinishListener.java @@ -0,0 +1,7 @@ +package mior.model; + +public interface IMiorFinishListener { + + public void onMiorModelFinished(IMiorModel model); + +} diff --git a/src/mior/model/IMiorMM.java b/src/mior/model/IMiorMM.java new file mode 100644 index 0000000..5e587f3 --- /dev/null +++ b/src/mior/model/IMiorMM.java @@ -0,0 +1,7 @@ +package mior.model; + +public interface IMiorMM extends IMiorAgent { + + public int getDormance(); + +} diff --git a/src/mior/model/IMiorModel.java b/src/mior/model/IMiorModel.java new file mode 100644 index 0000000..2db5a31 --- /dev/null +++ b/src/mior/model/IMiorModel.java @@ -0,0 +1,36 @@ +package mior.model; + + +public interface IMiorModel { + + public int getStep(); + public MiorWorld getWorld(); + public MiorOM[] getOMList(); + public MiorMM[] getMMList(); + //public int[] getAssociations(); + public boolean isAccessible(int iMM, int iOM); + public boolean isAccessible(int iMM, int iOM, int iSim); + + public void addUpdateListener(IMiorUpdateListener listener); + public void removeUpdateListener(IMiorUpdateListener listener); + + public void setBatchModeEnabled(boolean b); + public boolean isBatchModeEnabled(); + + public void setRandomEnabled(boolean b); + public boolean isRandomEnabled(); + + public void setBlockSize(int blockSize); + public int getBlockSize(); + + public boolean isFinished(); + public int getNbSimulations(); + + public void reset(); + public void doTopology(); + public void doLive(); + public void doAutoLive(); + + public void release(); + +} diff --git a/src/mior/model/IMiorOM.java b/src/mior/model/IMiorOM.java new file mode 100644 index 0000000..2b2c9f1 --- /dev/null +++ b/src/mior/model/IMiorOM.java @@ -0,0 +1,5 @@ +package mior.model; + +public interface IMiorOM extends IMiorAgent { + +} diff --git a/src/mior/model/IMiorUpdateListener.java b/src/mior/model/IMiorUpdateListener.java new file mode 100644 index 0000000..7dbc93d --- /dev/null +++ b/src/mior/model/IMiorUpdateListener.java @@ -0,0 +1,7 @@ +package mior.model; + +public interface IMiorUpdateListener { + + public void onMiorModelUpdated(IMiorModel model); + +} diff --git a/src/mior/model/MiorFuture.java b/src/mior/model/MiorFuture.java new file mode 100644 index 0000000..4787511 --- /dev/null +++ b/src/mior/model/MiorFuture.java @@ -0,0 +1,53 @@ +package mior.model; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import mcmas.core.MCMEvent; + + + + +public class MiorFuture implements Future { + + private final MiorSimulation simulation; + + public MiorFuture(MiorSimulation simulation) { + this.simulation = simulation; + } + + @Override + public MiorSimulation get() throws InterruptedException, ExecutionException { + MCMEvent.waitFor(simulation.copyEvents); + return null; + } + + @Override + public MiorSimulation get(long timeout, TimeUnit unit) + throws InterruptedException, ExecutionException, TimeoutException { + throw new UnsupportedOperationException(); + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + return false; + } + + @Override + public boolean isCancelled() { + return false; + } + + @Override + public boolean isDone() { + boolean done = true; + + for (int i = 0; i < simulation.copyEvents.length; i++) { + done &= simulation.copyEvents[i].isDone(); + } + + return done; + } + +} diff --git a/src/mior/model/MiorMM.java b/src/mior/model/MiorMM.java new file mode 100644 index 0000000..cb805e9 --- /dev/null +++ b/src/mior/model/MiorMM.java @@ -0,0 +1,38 @@ +package mior.model; + + +import org.jocl.struct.Struct; + +public class MiorMM extends Struct implements IMiorMM { + + public float x; + public float y; + + public int carbone = 5000; + public int dormance = 0; + + public MiorMM(float x, float y) { + this.x = x; + this.y = y; + } + + @Override + public float getX() { + return x; + } + + @Override + public float getY() { + return y; + } + + @Override + public int getCarbone() { + return carbone; + } + + public int getDormance() { + return dormance; + } + +} diff --git a/src/mior/model/MiorOM.java b/src/mior/model/MiorOM.java new file mode 100644 index 0000000..cda6428 --- /dev/null +++ b/src/mior/model/MiorOM.java @@ -0,0 +1,34 @@ +package mior.model; + + +import org.jocl.struct.Struct; + +public class MiorOM extends Struct implements IMiorOM { + + public float x; + public float y; + + public int carbone = 5000; + public int lock = -1; + + public MiorOM(float x, float y) { + this.x = x; + this.y = y; + } + + @Override + public float getX() { + return x; + } + + @Override + public float getY() { + return y; + } + + @Override + public int getCarbone() { + return carbone; + } + +} diff --git a/src/mior/model/MiorSimulation.java b/src/mior/model/MiorSimulation.java new file mode 100644 index 0000000..7220724 --- /dev/null +++ b/src/mior/model/MiorSimulation.java @@ -0,0 +1,166 @@ +package mior.model; + +import java.nio.ByteBuffer; +import java.util.Random; + +import org.jocl.Sizeof; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; +import mior.model.dist.IMiorDistribution; + +public class MiorSimulation { + + private final int nbMM; + private final int nbOM; + private final int nbSim; + + public final MiorMM[] mmList; + public final MiorOM[] omList; + public final MiorWorld[] worldList; + + public MCMEvent topoEvent; + public MCMEvent autoEvent; + public MCMEvent [] copyEvents; + + private final ByteBuffer mmCSRBuffer; + private final ByteBuffer omCSRBuffer; + private final ByteBuffer partsBuffer; + + private final static Logger logger = LoggerFactory.getLogger(MiorSimulation.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_multisim3.cl"; + public static MCMProgram program; + public static final Object programLock = new Object(); + + public MiorSimulation(int onbMM, int onbOM, int nbSim, IMiorDistribution dist) { + this.nbOM = (int) (dist.getMaxFactor() * dist.getMeanOM()); + this.nbMM = (int) (dist.getMaxFactor() * dist.getMeanMM()); + this.nbSim = nbSim; + + this.mmList = new MiorMM[nbSim * nbMM]; + this.omList = new MiorOM[nbSim * nbOM]; + this.worldList = new MiorWorld[nbSim]; + + //System.out.println("initWorld"); + MiorUtils.initWorldArray(worldList, dist); + + Random rng = new Random(); + + //System.out.println("init lists"); + for (int i = 0; i < worldList.length; i++) { + final int width = worldList[i].width; + + for (int iMM = 0; iMM < nbMM; iMM++) { + mmList[i * nbMM + iMM] = new MiorMM(rng.nextFloat() * width, rng.nextFloat() * width); + } + + for (int iOM = 0; iOM < nbOM; iOM++) { + omList[i * nbOM + iOM] = new MiorOM(rng.nextFloat() * width, rng.nextFloat() * width); + } + } + + //System.out.println("buffers"); + + this.mmCSRBuffer = this.allocateLists(nbSim * nbOM, nbMM); + this.omCSRBuffer = this.allocateLists(nbSim * nbMM, nbOM); + this.partsBuffer = this.allocateIntBuffer(nbSim * nbMM * nbOM); + + clearBuffer(mmCSRBuffer); + clearBuffer(omCSRBuffer); + clearBuffer(partsBuffer); + } + + public MiorFuture execute(MCMContext context, MCMCommandQueue queue) { + watch.start("Program compilation"); + + synchronized(programLock) { + if (program == null) { + System.out.println("compiling program"); + program = MCMUtils.compileFile(context, MODEL_SOURCE, " -DNB_MM=" + nbMM + " -DNB_OM=" + nbOM); + } + } + + System.out.println("nbMM: " + nbMM + ", nbOM: " + nbOM); + + watch.stop(); + watch.start("Kernel allocation"); + + MCMKernel topoKernel = program.createKernel("topology"); + MCMKernel autoliveKernel = program.createKernel("autolive"); + + watch.stop(); + watch.start("Memory allocation"); + + MCMMem mmMem = context.newBuffer().Using(mmList).b(); + MCMMem omMem = context.newBuffer().Using(omList).b(); + MCMMem worldsMem = context.newBuffer().Using(worldList).b(); + MCMMem mmCSRMem = context.newBuffer().Using(mmCSRBuffer).b(); + MCMMem omCSRMem = context.newBuffer().Using(omCSRBuffer).b(); + MCMMem partsMem = context.newBuffer().Using(partsBuffer).b(); + + watch.stop(); + + topoKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem); + + MCMEvent topoEvent = queue.enqueueKernel(topoKernel, 2, + new long[] { nbSim * nbMM , nbOM} // Global size + ); + + /*for (int i = 0; i < 10; i++) { + topoEvent = queue.enqueueKernel(topoKernel, 2, + new long[] { nbSim * nbMM , nbOM} // Global size + , topoEvent + ); + }*/ + + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + MCMEvent autoEvent = queue.enqueue1DKernel(autoliveKernel, nbSim * nbOM, nbOM, topoEvent); + + this.copyEvents = new MCMEvent[3]; + this.copyEvents[0] = queue.enqueueReadBuffer(mmMem, mmList, 0, mmMem.getSize(), autoEvent); + this.copyEvents[1] = queue.enqueueReadBuffer(omMem, omList, 0, omMem.getSize(), autoEvent); + this.copyEvents[2] = queue.enqueueReadBuffer(worldsMem, worldList, 0, worldsMem.getSize(), autoEvent); + //OCLEvent r4 = queue.enqueueReadBuffer(partsMem, Pointer.to(partsBuffer), 0, partsMem.getSize(), autoEvent); + + //queue.finish(); + + //OCLUtils.printEventStats("topology", topoEvent); + //OCLUtils.printEventStats("autolive", autoEvent); + + mmMem.release(); + omMem.release(); + worldsMem.release(); + mmCSRMem.release(); + omCSRMem.release(); + partsMem.release(); + autoliveKernel.release(); + topoKernel.release(); + + return new MiorFuture(this); + } + + private ByteBuffer allocateLists(int nbList, int listSize) { + return allocateIntBuffer(nbList * (listSize + 1)); + } + + private ByteBuffer allocateIntBuffer(int capacity) { + return ByteBuffer.allocate(Sizeof.cl_int * capacity); + } + + private void clearBuffer(ByteBuffer buffer) { + for (int i = 0; i < buffer.capacity(); i++) { + buffer.put(i, (byte) 0); + } + buffer.rewind(); + } +} diff --git a/src/mior/model/MiorUtils.java b/src/mior/model/MiorUtils.java new file mode 100644 index 0000000..936ca25 --- /dev/null +++ b/src/mior/model/MiorUtils.java @@ -0,0 +1,121 @@ +package mior.model; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.Random; + +import javax.imageio.ImageIO; + +import mior.model.dist.IMiorDistribution; + +public class MiorUtils { + + private static Random rand = new Random(); + + public static void initRandomMMArray(MiorMM[] mmList, int width) { + for (int i = 0; i < mmList.length; i++) { + mmList[i] = new MiorMM( + rand.nextFloat() * width, + rand.nextFloat() * width + ); + } + } + + public static void initRandomOMArray(MiorOM[] omList, int width) { + for (int i = 0; i < omList.length; i++) { + omList[i] = new MiorOM( + rand.nextFloat() * width, + rand.nextFloat() * width + ); + } + } + + @Deprecated + public static MiorMM createMM(MiorWorld world) { + return new MiorMM( + rand.nextFloat() * world.width, + rand.nextFloat() * world.width + ); + } + + @Deprecated + public static MiorOM createOM(MiorWorld world) { + return new MiorOM( + rand.nextFloat() * world.width, + rand.nextFloat() * world.width + ); + } + + @Deprecated + public static MiorMM[] allocMMArray(MiorWorld world) { + MiorMM[] mmList = new MiorMM[world.nbMM]; + initMMArray(world, mmList); + return mmList; + } + + @Deprecated + public static void initMMArray(MiorWorld world, IMiorMM [] mmList) { + for (int i = 0; i < mmList.length; i++) { + mmList[i] = createMM(world); + } + } + + @Deprecated + public static MiorOM[] allocOMArray(MiorWorld world) { + MiorOM[] omList = new MiorOM[world.nbOM]; + initOMArray(world, omList); + return omList; + } + + @Deprecated + public static void initOMArray(MiorWorld world, IMiorOM [] omList) { + for (int i = 0; i < omList.length; i++) { + omList[i] = createOM(world); + } + } + + public static void initWorldArray(MiorWorld [] worldList, IMiorDistribution dist) { + for (int i = 0; i < worldList.length; i++) { + worldList[i] = new MiorWorld(dist.getMeanMM(), dist.getMeanOM(), dist.getFactor()); + } + } + + public static int[] allocateCSRStorage(int size, int capacity) { + int [] result = new int[1 + size * (capacity + 1)]; + result[0] = capacity; + return result; + } + + public static void initAssociations(int [] associations) { + Arrays.fill(associations, -1); + } + + public static void initCSRStorage(int [] csrStorage) { + Arrays.fill(csrStorage, 1, csrStorage.length, 0); + } + + public static void saveTopoAs(IMiorModel model, File path) { + final int nbMM = model.getMMList().length; + final int nbOM = model.getOMList().length; + + BufferedImage img = new BufferedImage(nbMM, nbOM, BufferedImage.TYPE_INT_ARGB); + + for (int iMM = 0; iMM < nbMM; iMM++) { + for (int iOM = 0; iOM < nbOM; iOM++) { + if (model.isAccessible(iMM, iOM)) { + img.setRGB(iMM, iOM, 255); + } else { + img.setRGB(iMM, iOM, 0); + } + } + } + + try { + ImageIO.write(img, "png", path); + } catch (IOException e) { + System.err.println(e); + } + } +} diff --git a/src/mior/model/MiorWorld.java b/src/mior/model/MiorWorld.java new file mode 100644 index 0000000..33170f8 --- /dev/null +++ b/src/mior/model/MiorWorld.java @@ -0,0 +1,54 @@ +package mior.model; + +import org.jocl.struct.Struct; + +public class MiorWorld extends Struct { + + private final double scale; + + public int nbMM = 38; //38; //72; //38; + public int nbOM = 310; //310; //620; //310; + public int RA = 6; //400; // 150 + public float RR = 0.1f; // 0.1 + public float GR = 0.1f; // 0.1 + public float K = 0.25f; // 0.5 + + public int width = 35; //00; // 1000 + public int minSize = 0; + public int CO2 = 0; + public int lock = -1; + + public MiorWorld(int nbMM, int nbOM) { + this(nbMM, nbOM, 1); + } + + public MiorWorld(double scale) { + this(38, 310, scale); + } + + public MiorWorld(int nbMM, int nbOM, double scale) { + //System.out.println(scale); + this.scale = scale; + this.nbMM = (int) (scale * nbMM); + this.nbOM = (int) (scale * nbOM); + this.width = (int) (Math.sqrt(scale) * this.width); + //System.out.println("Created a world of " + this.nbMM + " MM, " + this.nbOM + " OM and " + this.width + " size"); + } + + public MiorWorld(MiorWorld ref) { + this.nbMM = ref.nbMM; + this.nbOM = ref.nbOM; + this.width = ref.width; + this.scale = ref.scale; + //System.out.println("Copied a world of " + this.nbMM + " MM, " + this.nbOM + " OM and " + this.width + " size"); + } + + public double getScale() { + return scale; + } + + public String toString() { + return "MiorWorld(" + nbMM + "," + nbOM + ")"; + } + +} diff --git a/src/mior/model/ModelFactory.java b/src/mior/model/ModelFactory.java new file mode 100644 index 0000000..c2294e6 --- /dev/null +++ b/src/mior/model/ModelFactory.java @@ -0,0 +1,126 @@ +package mior.model; + +import mior.model.dist.LinearDistribution; +import mior.model.dist.StaticDistribution; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ModelFactory { + + private boolean batchModeEnabled; + private boolean randomizePopulations; + private int groupSize; + private int blockSize; + + private final static Logger logger = LoggerFactory.getLogger(ModelFactory.class); + + public ModelFactory() { + this.batchModeEnabled = true; + this.randomizePopulations = false; + this.groupSize = 1; + this.blockSize = -1; + } + + public IMiorModel createModel(int nbMM, int nbOM, int scale, int modelVersion) { + final MiorWorld world = new MiorWorld(nbMM, nbOM, scale); + final IMiorModel model; + + logger.info("Using model version v" + modelVersion); + + if (modelVersion <= 5 && groupSize > 1) { + throw new UnsupportedOperationException("Mior implementation " + + modelVersion + " does not support this degree (" + + groupSize + ") of parallelism."); + } + + switch (modelVersion) { + case 0: + model = new CPUMiorModel(world); + break; + case 1: + model = new OCLMiorModel(world); + break; + case 2: + model = new OCLMiorModel2(world); + break; + case 3: + model = new OCLCSRModel(world, false); + break; + case 4: + model = new OCLCSRModel(world, true); + break; + case 5: + model = new OCLCSRModel2(world); + break; + case 6: + model = new OCLParaCSRModel2(nbMM, nbOM, groupSize); + if (blockSize != -1) model.setBlockSize(blockSize); + break; + case 7: + if (randomizePopulations) { + model = new OCLParaCSRModel3(nbMM, nbOM, groupSize, new LinearDistribution(nbMM, nbOM, 0.3)); + } else { + model = new OCLParaCSRModel3(nbMM, nbOM, groupSize, new StaticDistribution(nbMM, nbOM)); + } + if (blockSize != -1) model.setBlockSize(blockSize); + break; + case 8: + if (randomizePopulations) { + model = new OCLParaCSRModelAlt(nbMM, nbOM, groupSize, new LinearDistribution(nbMM, nbOM, 0.3)); + } else { + model = new OCLParaCSRModelAlt(nbMM, nbOM, groupSize, new StaticDistribution(nbMM, nbOM)); + } + if (blockSize != -1) model.setBlockSize(blockSize); + break; + case 9: + if (randomizePopulations) { + model = new OCLParaCSRModel4(nbMM, nbOM, groupSize, new LinearDistribution(nbMM, nbOM, 0.3)); + } else { + model = new OCLParaCSRModel4(nbMM, nbOM, groupSize, new StaticDistribution(nbMM, nbOM)); + } + if (blockSize != -1) model.setBlockSize(blockSize); + break; + default: + throw new RuntimeException("Invalid model version: " + modelVersion); + } + + model.setBatchModeEnabled(batchModeEnabled); + model.setRandomEnabled(randomizePopulations); + + return model; + } + + public void setBatchModeEnabled(boolean batchModeEnabled) { + this.batchModeEnabled = batchModeEnabled; + } + + public boolean isBatchModeEnabled() { + return batchModeEnabled; + } + + public void setRandomEnabled(boolean randomEnabled) { + this.randomizePopulations = randomEnabled; + } + + public boolean isRandomEnabled() { + return randomizePopulations; + } + + public void setBlockSize(int blockSize) { + this.blockSize = blockSize; + } + + public int getBlockSize() { + return blockSize; + } + + public void setGroupSize(int kernelSize) { + this.groupSize = kernelSize; + } + + public int getGroupSize() { + return groupSize; + } + +} diff --git a/src/mior/model/OCLCSRModel.java b/src/mior/model/OCLCSRModel.java new file mode 100644 index 0000000..a7aa0ae --- /dev/null +++ b/src/mior/model/OCLCSRModel.java @@ -0,0 +1,198 @@ +package mior.model; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.Pointer; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class OCLCSRModel extends SimpleMiorModel { + + final MCMContext context; + final MCMCommandQueue queue; + final MCMProgram program; + + final MCMKernel topoKernel; + final MCMKernel scatterKernel; + final MCMKernel liveKernel; + final MCMKernel gatherKernel; + + final MCMMem mmMem; + final MCMMem omMem; + final MCMMem worldMem; + + final MCMMem mmCSRMem; + final MCMMem omCSRMem; + final MCMMem associationsMem; + + final MCMMem partsMem; + + private final int[] mmCSR; + private final int[] omCSR; + + private final static Logger logger = LoggerFactory.getLogger(OCLCSRModel.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_csr.cl"; + + public OCLCSRModel(MiorWorld world) { + this(world, false); + } + + public OCLCSRModel(MiorWorld world, boolean copyParts) { + super(world); + + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + watch.stop(); + watch.start("Program compilation"); + + this.program = MCMUtils.compileFile(context, MODEL_SOURCE, + " -DNBMM=" + nbMM + " -DNBOM=" + nbOM + (copyParts ? " -DCOPY_PARTS" : "")); + + watch.stop(); + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.scatterKernel = program.createKernel("scatter"); + this.liveKernel = program.createKernel("live"); + this.gatherKernel = program.createKernel("gather"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.worldMem = context.newBuffer().Using(world).b(); + + this.mmCSR = MiorUtils.allocateCSRStorage(nbOM, nbMM); + this.mmCSRMem = context.newBuffer().Using(mmCSR).b(); + + this.omCSR = MiorUtils.allocateCSRStorage(nbMM, nbOM); + this.omCSRMem = context.newBuffer().Using(omCSR).b(); + + this.associationsMem = context.newBuffer().Using(associations).b(); + + this.partsMem = context.newBuffer().Size(nbMM * nbOM, MCM.INT).b(); + watch.stop(); + } + + @Override + protected void resetImpl() { + super.resetImpl(); + + MiorUtils.initCSRStorage(mmCSR); + MiorUtils.initCSRStorage(omCSR); + + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.enqueueWriteBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.enqueueWriteBuffer(worldMem, new MiorWorld[] { world }, 0, worldMem.getSize()); + queue.enqueueWriteBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.finish(); + } + + @Override + protected void doTopologyImpl() { + topoKernel.setArguments(mmMem, omMem, worldMem, mmCSRMem, omCSRMem, associationsMem); + + /*OCLEvent event = queue.enqueueKernel( + topoKernel, 2, + new long[] { 0, 0 }, + new long[] { mmList.length, omList.length }, + new long[] { 1, 1 } + );*/ + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, new long[] { nbMM, nbOM }); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + //queue.enqueueCopyBuffer(mmCSRMem, mmCSRMemConst, 0, 0, mmCSRMem.getSize()); + //queue.enqueueCopyBuffer(omCSRMem, omCSRMemConst, 0, 0, omCSRMem.getSize()); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.blockingReadBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + protected void doLiveImpl() { + // SCATTER + scatterKernel.setArguments(omMem, worldMem, mmCSRMem/*Const*/, partsMem); + MCMEvent scatteredEvent = queue.enqueue1DKernel(scatterKernel, nbOM); + + // LIVE + liveKernel.setArguments(mmMem, worldMem, omCSRMem/*Const*/, partsMem); + MCMEvent livedEvent = queue.enqueue1DKernel(liveKernel, nbMM, scatteredEvent); + + // GATHER + gatherKernel.setArguments(omMem, worldMem, mmCSRMem/*Const*/, partsMem); + MCMEvent reducedEvent = queue.enqueue1DKernel(gatherKernel, nbOM, livedEvent); + + MCMEvent.waitFor(reducedEvent); + + MCMUtils.printEventStats("scatter", scatteredEvent); + MCMUtils.printEventStats("live", livedEvent); + MCMUtils.printEventStats("reduce", reducedEvent); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + // Required to detect termination in autolive + queue.blockingReadBuffer(worldMem, new MiorWorld[] {world}, 0, worldMem.getSize()); + } + + @Override + public void releaseImpl() { + partsMem.release(); + + associationsMem.release(); + omCSRMem.release(); + mmCSRMem.release(); + + worldMem.release(); + omMem.release(); + mmMem.release(); + + gatherKernel.release(); + liveKernel.release(); + scatterKernel.release(); + topoKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + @Override + protected void onSimulationFinished() { + if (isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + super.onSimulationFinished(); + } + +} diff --git a/src/mior/model/OCLCSRModel2.java b/src/mior/model/OCLCSRModel2.java new file mode 100644 index 0000000..41993a9 --- /dev/null +++ b/src/mior/model/OCLCSRModel2.java @@ -0,0 +1,175 @@ +package mior.model; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.Pointer; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class OCLCSRModel2 extends SimpleMiorModel { + + final MCMContext context; + final MCMCommandQueue queue; + final MCMProgram program; + + final MCMKernel topoKernel; + final MCMKernel autoliveKernel; + + final MCMMem mmMem; + final MCMMem omMem; + final MCMMem worldMem; + + final MCMMem mmCSRMem; + final MCMMem omCSRMem; + final MCMMem associationsMem; + + final MCMMem partsMem; + + private final int[] mmCSR; + private final int[] omCSR; + + private final static Logger logger = LoggerFactory.getLogger(OCLCSRModel2.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_csr.cl"; + + public OCLCSRModel2(MiorWorld world) { + super(world); + + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + watch.stop(); + + watch.start("Program compilation"); + this.program = MCMUtils.compileFile(context, MODEL_SOURCE, " -DNBMM=" + nbMM + " -DNBOM=" + nbOM); + watch.stop(); + + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.autoliveKernel = program.createKernel("autolive"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.worldMem = context.newBuffer().Using(world).b(); + + this.mmCSR = MiorUtils.allocateCSRStorage(nbOM, nbMM); + this.mmCSRMem = context.newBuffer().Using(mmCSR).b(); + + this.omCSR = MiorUtils.allocateCSRStorage(nbMM, nbOM); + this.omCSRMem = context.newBuffer().Using(omCSR).b(); + + this.associationsMem = context.newBuffer().Using(associations).b(); + + this.partsMem = context.newBuffer().Size(nbMM * nbOM, MCM.INT).b(); + watch.stop(); + } + + @Override + protected void resetImpl() { + super.resetImpl(); + + MiorUtils.initCSRStorage(mmCSR); + MiorUtils.initCSRStorage(omCSR); + + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.enqueueWriteBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.enqueueWriteBuffer(worldMem, new MiorWorld[] { world }, 0, worldMem.getSize()); + queue.enqueueWriteBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.finish(); + } + + @Override + protected void doTopologyImpl() { + topoKernel.setArguments(mmMem, omMem, worldMem, mmCSRMem, omCSRMem, associationsMem); + + /* + OCLEvent event = queue.enqueueKernel( + topoKernel, 2, + new long[] { 0, 0 }, + new long[] { mmList.length, omList.length }, + new long[] { 1, 1 } + );*/ + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, new long[] { nbMM, nbOM }); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.blockingReadBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + protected void doLiveImpl() { + throw new UnsupportedOperationException(); + } + + @Override + public void releaseImpl() { + partsMem.release(); + + associationsMem.release(); + omCSRMem.release(); + mmCSRMem.release(); + + worldMem.release(); + omMem.release(); + mmMem.release(); + + autoliveKernel.release(); + topoKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + @Override + public void doAutoLive() { + reset(); + doTopology(); + + autoliveKernel.setArguments(mmMem, omMem, worldMem, mmCSRMem, omCSRMem, partsMem); + MCMEvent event = queue.enqueue1DKernel(autoliveKernel, Math.max(nbOM, nbMM)); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("autolive", event); + + onSimulationFinished(); + } + + @Override + protected void onSimulationFinished() { + if (isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(worldMem, new MiorWorld[] {world}, 0, worldMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + super.onSimulationFinished(); + } + +} diff --git a/src/mior/model/OCLMiorContext.java b/src/mior/model/OCLMiorContext.java new file mode 100644 index 0000000..0197dd4 --- /dev/null +++ b/src/mior/model/OCLMiorContext.java @@ -0,0 +1,6 @@ +package mior.model; + +public class OCLMiorContext { + + +} diff --git a/src/mior/model/OCLMiorModel.java b/src/mior/model/OCLMiorModel.java new file mode 100644 index 0000000..c4e2e5e --- /dev/null +++ b/src/mior/model/OCLMiorModel.java @@ -0,0 +1,135 @@ +package mior.model; + +import java.util.Random; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.Pointer; + + +public class OCLMiorModel extends SimpleMiorModel { + + private MCMContext context; + private MCMProgram program; + private MCMCommandQueue queue; + + private MCMKernel topoKernel; + private MCMKernel liveKernel; + + private MCMMem mmMem; + private MCMMem omMem; + private MCMMem associationsMem; + private MCMMem worldMem; + + private MCMMem omIndexesMem; + private final Random rand; + + private final static String MODEL_SOURCE = "kernels/mior_model.cl"; + + public OCLMiorModel(MiorWorld world) { + super(world); + this.rand = new Random(); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + this.program = MCMUtils.compileFile(context, MODEL_SOURCE); + + this.topoKernel = program.createKernel("topology"); + this.liveKernel = program.createKernel("live"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.associationsMem = context.newBuffer().Size(associations.length, MCM.INT).b(); + this.worldMem = context.newBuffer().Using(world).b(); + + this.omIndexesMem = context.newBuffer().Size(omList.length * mmList.length, MCM.INT).b(); + } + + + @Override + protected void resetImpl() { + super.resetImpl(); + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.enqueueWriteBuffer(worldMem, new MiorWorld[] { world }, 0, worldMem.getSize()); + } + + @Override + public void doTopologyImpl() { + topoKernel.setArguments(mmMem, omMem, associationsMem, worldMem); + + /* + OCLEvent event = queue.enqueueKernel( + topoKernel, 2, + new long[] { 0, 0 }, + new long[] { mmList.length, omList.length }, + new long[] { 1, 1 } + );*/ + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, new long[] { nbMM, nbOM }); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + public void doLiveImpl() { + if (isRandomEnabled()) { + liveKernel.setArguments(mmMem, omMem, associationsMem, worldMem, omIndexesMem, rand.nextLong()); + } else { + liveKernel.setArguments(mmMem, omMem, associationsMem, worldMem, omIndexesMem, 0L); + } + + MCMEvent event = queue.enqueue1DKernel(liveKernel, nbMM); + MCMEvent.waitFor(event); + + MCMUtils.printEventStats("live", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + queue.blockingReadBuffer(worldMem, new MiorWorld[] {world}, 0, worldMem.getSize()); + } + + @Override + protected void onSimulationFinished() { + if (isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + super.onSimulationFinished(); + } + + @Override + protected void releaseImpl() { + associationsMem.release(); + worldMem.release(); + mmMem.release(); + omMem.release(); + + liveKernel.release(); + topoKernel.release(); + program.release(); + queue.release(); + context.release(); + } + +} diff --git a/src/mior/model/OCLMiorModel2.java b/src/mior/model/OCLMiorModel2.java new file mode 100644 index 0000000..2da99a6 --- /dev/null +++ b/src/mior/model/OCLMiorModel2.java @@ -0,0 +1,204 @@ +package mior.model; + +import java.util.Arrays; +import java.util.Random; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.Pointer; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class OCLMiorModel2 extends SimpleMiorModel { + + private MCMContext context; + private MCMProgram program; + private MCMCommandQueue queue; + + private MCMKernel topoKernel; + private MCMKernel scatterKernel; + private MCMKernel liveKernel; + private MCMKernel reduceKernel; + + private MCMMem mmMem; + private MCMMem omMem; + private MCMMem associationsMem; + private MCMMem worldMem; + + private MCMMem omIndexesMem; + private MCMMem totalsMem; + + private int[] totals; + private final Random rand; + + private final static Logger logger = LoggerFactory.getLogger(OCLMiorModel2.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final String MODEL_SOURCE = "kernels/mior_model2.cl"; + + public OCLMiorModel2(MiorWorld world) { + super(world); + this.rand = new Random(); + + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + watch.stop(); + watch.start("Program compilation"); + + this.program = MCMUtils.compileFile(context, MODEL_SOURCE); + + watch.stop(); + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.scatterKernel = program.createKernel("carbon_scatter"); + this.liveKernel = program.createKernel("live"); + this.reduceKernel = program.createKernel("carbon_reduce"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.associationsMem = context.newBuffer().Using(associations).b(); + this.worldMem = context.newBuffer().Using(world).b(); + + this.omIndexesMem = context.newBuffer().Size(omList.length * mmList.length, MCM.INT).b(); + + this.totals = new int[omList.length]; + Arrays.fill(totals, 0); + + this.totalsMem = context.newBuffer().Using(totals).b(); + + watch.stop(); + } + + + @Override + protected void resetImpl() { + super.resetImpl(); + Arrays.fill(totals, 0); + + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.enqueueWriteBuffer(worldMem, new MiorWorld[] { world }, 0, worldMem.getSize()); + queue.enqueueWriteBuffer(totalsMem, Pointer.to(totals), 0, totalsMem.getSize()); + queue.finish(); + + fireMiorUpdated(); + } + + @Override + public void doTopologyImpl() { + if (topoKernel.getArgumentsNumber() == 5) { + topoKernel.setArguments(mmMem, omMem, associationsMem, worldMem, totalsMem); + } else { + topoKernel.setArguments(mmMem, omMem, associationsMem, worldMem); + } + + /* + OCLEvent event = queue.enqueueKernel( + topoKernel, 2, + new long[] { 0, 0 }, + new long[] { mmList.length, omList.length }, + new long[] { 1, 1 } + );*/ + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, new long[] { nbMM, nbOM }); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.blockingReadBuffer(totalsMem, Pointer.to(totals), 0, totalsMem.getSize()); + } + + fireMiorUpdated(); + } + + @Override + public void doLiveImpl() { + //System.out.println("doLiveImpl"); + scatterKernel.setArguments(mmMem, omMem, associationsMem, worldMem, totalsMem); + MCMEvent scatteredEvent = queue.enqueue1DKernel(scatterKernel, nbOM); + + if (isRandomEnabled()) { + liveKernel.setArguments(mmMem, omMem, associationsMem, worldMem, omIndexesMem, rand.nextLong()); + } else { + liveKernel.setArguments(mmMem, omMem, associationsMem, worldMem, omIndexesMem, 0L); + } + + //System.out.println("scattered"); + MCMEvent livedEvent = queue.enqueue1DKernel(liveKernel, nbMM, scatteredEvent); + + //System.out.println("lived"); + reduceKernel.setArguments(mmMem, omMem, associationsMem, worldMem); + MCMEvent reducedEvent = queue.enqueue1DKernel(reduceKernel, nbOM, livedEvent); + + //System.out.println("prewait"); + MCMEvent.waitFor(reducedEvent); + + //queue.finish(); + + //System.out.println("postwait"); + MCMUtils.printEventStats("scatter", scatteredEvent); + MCMUtils.printEventStats("live", livedEvent); + MCMUtils.printEventStats("reduce", reducedEvent); + + //System.out.println("post stats"); + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + //System.out.println("preread"); + + queue.blockingReadBuffer(worldMem, new MiorWorld[] {world}, 0, worldMem.getSize()); + } + + protected void onSimulationFinished() { + if (isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + super.onSimulationFinished(); + }; + + + @Override + protected void releaseImpl() { + totalsMem.release(); + omIndexesMem.release(); + + associationsMem.release(); + worldMem.release(); + mmMem.release(); + omMem.release(); + + reduceKernel.release(); + liveKernel.release(); + scatterKernel.release(); + topoKernel.release(); + program.release(); + queue.release(); + context.release(); + } +} diff --git a/src/mior/model/OCLParaCSRModel.java b/src/mior/model/OCLParaCSRModel.java new file mode 100644 index 0000000..4c56b1a --- /dev/null +++ b/src/mior/model/OCLParaCSRModel.java @@ -0,0 +1,268 @@ +package mior.model; + +import java.util.Arrays; + +import mcmas.core.MCM; +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.Pointer; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * @deprecated use {@link OCLParaCSRModel2} or {@link OCLParaCSRModel3} classes instead. + */ +public class OCLParaCSRModel extends AbstractMiorModel { + + /** + * Java view + */ + + private final int nbMM; + private final int nbOM; + + private final MiorMM [] mmList; + private final MiorOM [] omList; + private final MiorWorld [] worlds; + private final int [] associations; + + /** + * OpenCL implementation + */ + final MCMContext context; + final MCMCommandQueue queue; + final MCMProgram program; + + final MCMKernel topoKernel; + final MCMKernel autoliveKernel; + + final MCMMem mmMem; + final MCMMem omMem; + final MCMMem worldsMem; + + final MCMMem mmCSRMem; + final MCMMem omCSRMem; + final MCMMem associationsMem; + + final MCMMem partsMem; + + private final int [] mmCSR; + private final int [] omCSR; + + private final int nbSim; + + private final static Logger logger = LoggerFactory.getLogger(OCLParaCSRModel.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_multisim.cl"; + + public OCLParaCSRModel(int nbMM, int nbOM, int nbSim) { + logger.info("Launching a batch of " + nbSim + " simulations (size = " + nbMM + " MM x " + nbOM + " OM)"); + this.nbSim = nbSim; + this.nbMM = nbMM; + this.nbOM = nbOM; + + // Allocate Java MIOR structures + this.mmList = new MiorMM[nbSim * nbMM]; + this.omList = new MiorOM[nbSim * nbOM]; + this.worlds = new MiorWorld[nbSim]; + this.associations = new int[nbSim * nbMM * nbOM]; + //final Random rand = new Random(); TODO: Remove + + // Initialise models + for (int i = 0; i < nbSim; i++) { + this.worlds[i] = new MiorWorld(nbMM, nbOM); + } + + MiorUtils.initMMArray(worlds[0], mmList); + MiorUtils.initOMArray(worlds[0], omList); + + /* + + for (int i = 0; i < mmList.length; i++) { + mmList[i] = new MiorMM( + rand.nextInt(worlds[0].width), + rand.nextInt(worlds[0].width) + ); + } + + for (int i = 0; i < omList.length; i++) { + omList[i] = new MiorOM( + rand.nextInt(worlds[0].width), + rand.nextInt(worlds[0].width) + ); + }*/ + + Arrays.fill(associations, -1); + + // OpenCL allocations + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + watch.stop(); + + watch.start("Program compilation"); + this.program = MCMUtils.compileFile(context, MODEL_SOURCE); + watch.stop(); + + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.autoliveKernel = program.createKernel("autolive"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.worldsMem = context.newBuffer().Using(worlds).b(); + + this.mmCSR = allocateStorage(nbOM * nbSim, nbMM); + this.mmCSRMem = context.newBuffer().Using(mmCSR).b(); + + this.omCSR = allocateStorage(nbMM * nbSim, nbOM); + this.omCSRMem = context.newBuffer().Using(omCSR).b(); + + this.associationsMem = context.newBuffer().Using(associations).b(); + + this.partsMem = context.newBuffer().Size(associations.length, MCM.INT).b(); + watch.stop(); + } + + @Override + public int getNbSimulations() { + return nbSim; + } + + @Override + protected void resetImpl() { + Arrays.fill(mmCSR, 1, mmCSR.length, 0); + Arrays.fill(omCSR, 1, omCSR.length, 0); + Arrays.fill(associations, -1); + + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + queue.enqueueWriteBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.enqueueWriteBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.enqueueWriteBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.finish(); + } + + @Override + protected void doTopologyImpl() { + // System.out.println(topoKernel.getArgumentsNumber()); + topoKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, associationsMem); + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbSim * nbMM , nbOM} + ); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.blockingReadBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + protected void doLiveImpl() { + throw new UnsupportedOperationException(); + } + + @Override + public void doAutoLive() { + resetImpl(); + doTopologyImpl(); + + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + MCMEvent event = queue.enqueueKernel(autoliveKernel, 2, + new long[] { nbSim, Math.max(nbOM, nbMM) } + ); + + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("autolive", event); + + onSimulationFinished(); + } + + @Override + protected void onSimulationFinished() { + if (isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + + super.onSimulationFinished(); + } + + @Override + protected void releaseImpl() { + partsMem.release(); + + associationsMem.release(); + omCSRMem.release(); + mmCSRMem.release(); + + worldsMem.release(); + omMem.release(); + mmMem.release(); + + autoliveKernel.release(); + topoKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + private int[] allocateStorage(int size, int capacity) { + int [] result = new int[1 + size * (capacity + 1)]; + result[0] = capacity; + return result; + } + + @Override + public MiorWorld getWorld() { + return worlds[0]; + } + + @Override + public MiorOM[] getOMList() { + return Arrays.copyOfRange(omList, 0, nbOM); + } + + @Override + public MiorMM[] getMMList() { + return Arrays.copyOfRange(mmList, 0, nbMM); + } + + @Override + public boolean isAccessible(int iMM, int iOM) { + return associations[iMM * nbOM + iOM] != -1; + } + + @Override + public boolean isAccessible(int iMM, int iOM, int iSim) { + return associations[iSim * nbMM * nbOM + iMM * nbOM + iOM] != -1; + } + +} diff --git a/src/mior/model/OCLParaCSRModel2.java b/src/mior/model/OCLParaCSRModel2.java new file mode 100644 index 0000000..33b715c --- /dev/null +++ b/src/mior/model/OCLParaCSRModel2.java @@ -0,0 +1,268 @@ +package mior.model; + +import java.util.Arrays; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; + +import org.jocl.Pointer; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class OCLParaCSRModel2 extends AbstractMiorModel { + + /** + * Java view + */ + + private final int nbMM; + private final int nbOM; + + private final MiorMM [] mmList; + private final MiorOM [] omList; + private final MiorWorld [] worlds; + private final int [] associations; + + /** + * OpenCL implementation + */ + final MCMContext context; + final MCMCommandQueue queue; + final MCMProgram program; + + final MCMKernel topoKernel; + final MCMKernel autoliveKernel; + + final MCMMem mmMem; + final MCMMem omMem; + final MCMMem worldsMem; + + /*final OCLMem mmCSRMem; + final OCLMem omCSRMem;*/ + final MCMMem associationsMem; + + final MCMMem partsMem; + + /* + private final int [] mmCSR; + private final int [] omCSR; + */ + + private final int nbSim; + private int blockSize; + + private final static Logger logger = LoggerFactory.getLogger(OCLParaCSRModel2.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_multisim2.cl"; + + public OCLParaCSRModel2(int nbMM, int nbOM, int nbSim) { + this.nbSim = nbSim; + this.nbMM = nbMM; + this.nbOM = nbOM; + this.blockSize = Math.max(nbOM, nbMM); + + // Allocate Java MIOR structures + this.mmList = new MiorMM[nbSim * nbMM]; + this.omList = new MiorOM[nbSim * nbOM]; + this.worlds = new MiorWorld[nbSim]; + this.associations = new int[nbSim * nbMM * nbOM]; + //final Random rand = new Random(); TODO: Remove + + // Initialise models + for (int i = 0; i < nbSim; i++) { + this.worlds[i] = new MiorWorld(nbMM, nbOM); + } + + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + Arrays.fill(associations, -1); + + // OpenCL allocations + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + watch.stop(); + + watch.start("Program compilation"); + this.program = MCMUtils.compileFile(context, MODEL_SOURCE, " -DNB_MM=" + nbMM + " -DNB_OM=" + nbOM);// + " -g -O0"); + watch.stop(); + + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.autoliveKernel = program.createKernel("autolive"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.worldsMem = context.newBuffer().Using(worlds).b(); + + /*this.mmCSR = allocateStorage(nbOM * nbSim, nbMM); + this.mmCSRMem = context.newBuffer().Using(mmCSR).b(); + + this.omCSR = allocateStorage(nbMM * nbSim, nbOM); + this.omCSRMem = context.newBuffer().Using(omCSR).b(); + */ + + this.associationsMem = context.newBuffer().Using(associations).b(); + + this.partsMem = context.newBuffer().Using(new int[associations.length]).b(); + watch.stop(); + } + + @Override + public int getNbSimulations() { + return nbSim; + } + + @Override + protected void resetImpl() { + // Initialize models + for (int i = 0; i < nbSim; i++) { + this.worlds[i] = new MiorWorld(nbMM, nbOM); + } + + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + Arrays.fill(associations, -1); + + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + //queue.enqueueWriteBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + //queue.enqueueWriteBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.enqueueWriteBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.finish(); + } + + @Override + public void setBlockSize(int blockSize) { + this.blockSize = blockSize; + } + + + @Override + public int getBlockSize() { + return blockSize; + } + + @Override + protected void doTopologyImpl() { + // System.out.println(topoKernel.getArgumentsNumber()); + topoKernel.setArguments(mmMem, omMem, worldsMem, associationsMem); + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbSim * nbMM , nbOM} + ); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + //queue.blockingReadBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + //queue.blockingReadBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + protected void doLiveImpl() { + throw new UnsupportedOperationException(); + } + + @Override + public void doAutoLive() { + resetImpl(); + doTopologyImpl(); + + autoliveKernel.setArguments(mmMem, omMem, worldsMem, associationsMem, partsMem); + + /* + OCLEvent event = queue.enqueueKernel(autoliveKernel, 2, + new long[] { nbSim, Math.max(nbOM, nbMM) } + );*/ + + if (blockSize < Math.max(nbOM, nbMM)) { + throw new RuntimeException("blockSize (" + blockSize + ") is too small to execute the simulation"); + } + + //System.out.println("nbAgents: " + nbAgents); + MCMEvent event = queue.enqueue1DKernel(autoliveKernel, nbSim * blockSize, blockSize); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("autolive", event); + + onSimulationFinished(); + } + + @Override + protected void onSimulationFinished() { + //if (isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + //} + + super.onSimulationFinished(); + } + + @Override + protected void releaseImpl() { + partsMem.release(); + + associationsMem.release(); + //omCSRMem.release(); + //mmCSRMem.release(); + + worldsMem.release(); + omMem.release(); + mmMem.release(); + + autoliveKernel.release(); + topoKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + @Override + public MiorWorld getWorld() { + return worlds[0]; + } + + @Override + public MiorOM[] getOMList() { + return Arrays.copyOfRange(omList, 0, nbOM); + } + + @Override + public MiorMM[] getMMList() { + return Arrays.copyOfRange(mmList, 0, nbMM); + } + + @Override + public boolean isAccessible(int iMM, int iOM) { + return associations[iMM * nbOM + iOM] != -1; + } + + @Override + public boolean isAccessible(int iMM, int iOM, int iSim) { + return associations[iSim * nbMM * nbOM + iMM * nbOM + iOM] != -1; + } + +} diff --git a/src/mior/model/OCLParaCSRModel3.java b/src/mior/model/OCLParaCSRModel3.java new file mode 100644 index 0000000..c6e87a3 --- /dev/null +++ b/src/mior/model/OCLParaCSRModel3.java @@ -0,0 +1,313 @@ +package mior.model; + +import java.util.Arrays; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; +import mior.model.dist.IMiorDistribution; + +import org.jocl.Pointer; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class OCLParaCSRModel3 extends AbstractMiorModel { + + /** + * Java view + */ + + private final int nbMM; + private final int nbOM; + + private final MiorMM [] mmList; + private final MiorOM [] omList; + private final MiorWorld [] worlds; + //private final int [] associations; + + /** + * OpenCL implementation + */ + final MCMContext context; + final MCMCommandQueue queue; + final MCMProgram program; + + final MCMKernel topoKernel; + final MCMKernel simulateKernel; + final MCMKernel autoliveKernel; + + final MCMMem mmMem; + final MCMMem omMem; + final MCMMem worldsMem; + + final MCMMem mmCSRMem; + final MCMMem omCSRMem; + //final OCLMem associationsMem; + final MCMMem partsMem; + + private final int [] mmCSR; + private final int [] omCSR; + private final int [] parts; + + private final int nbSim; + private int blockSize; + + private final static Logger logger = LoggerFactory.getLogger(OCLParaCSRModel3.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_multisim3.cl"; + private final IMiorDistribution dist; + + public OCLParaCSRModel3(int onbMM, int onbOM, int nbSim, IMiorDistribution dist) { + this.dist = dist; + System.out.println(dist); + + //final double factor = dist.getMax() / ((double) onbOM); + this.nbOM = (int) (dist.getMaxFactor() * dist.getMeanOM()); + this.nbMM = (int) (dist.getMaxFactor() * dist.getMeanMM()); + + this.nbSim = nbSim; + //this.nbMM = NB_MM; + //this.nbOM = NB_OM; + this.blockSize = Math.max(nbOM, nbMM); + + // Allocate Java MIOR structures + this.mmList = new MiorMM[nbSim * nbMM]; + this.omList = new MiorOM[nbSim * nbOM]; + this.worlds = new MiorWorld[nbSim]; + //this.associations = new int[nbSim * nbMM * nbOM]; + this.mmCSR = allocateStorage(nbSim * nbOM, nbMM); + this.omCSR = allocateStorage(nbSim * nbMM, nbOM); + this.parts = new int[nbSim * nbMM * nbOM]; + + MiorUtils.initWorldArray(worlds, dist); + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + //Arrays.fill(associations, -1); + + // OpenCL allocations + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + watch.stop(); + + System.out.println("NB_MM: " + nbMM + ", NB_OM: " + nbOM); + watch.start("Program compilation"); + this.program = MCMUtils.compileFile(context, MODEL_SOURCE, " -DNB_MM=" + nbMM + " -DNB_OM=" + nbOM);// + " -g -O0"); + watch.stop(); + + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.simulateKernel = program.createKernel("simulate"); + this.autoliveKernel = program.createKernel("autolive"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.worldsMem = context.newBuffer().Using(worlds).b(); + //this.associationsMem = context.newBuffer().Using(associations).b(); + this.mmCSRMem = context.newBuffer().Using(mmCSR).b(); + this.omCSRMem = context.newBuffer().Using(omCSR).b(); + this.partsMem = context.newBuffer().Using(new int[parts.length]).b(); + + watch.stop(); + } + + private int[] allocateStorage(int nbList, int listSize) { + return new int[nbList * (listSize + 1)]; + } + + @Override + public void setBlockSize(int blockSize) { + this.blockSize = blockSize; + } + + @Override + public int getBlockSize() { + return blockSize; + } + + + @Override + public int getNbSimulations() { + return nbSim; + } + + @Override + protected void resetImpl() { + // Initialise models + /*for (int i = 0; i < nbSim; i++) { + this.worlds[i] = new MiorWorld(nbMM, nbOM); + }*/ + + MiorUtils.initWorldArray(worlds, dist); + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + + //Arrays.fill(associations, -1); + Arrays.fill(mmCSR, 0); + Arrays.fill(omCSR, 0); + Arrays.fill(parts, 0); + + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + //queue.enqueueWriteBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.enqueueWriteBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.enqueueWriteBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + queue.enqueueWriteBuffer(partsMem, Pointer.to(parts), 0, partsMem.getSize()); + queue.finish(); + } + + @Override + protected void doTopologyImpl() { + // System.out.println(topoKernel.getArgumentsNumber()); + topoKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem); // associationsMem + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbSim * nbMM , nbOM} // Global size + ); + + /*OCLEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbMM , nbSim * nbOM}, // Global size + new long[] { 1, nbOM } + );*/ + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.blockingReadBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + //System.out.println(Arrays.toString(mmCSR)); + //queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + protected void doLiveImpl() { + //throw new UnsupportedOperationException(); + simulateKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + if (blockSize < Math.max(nbOM, nbMM)) { + throw new RuntimeException("blockSize (" + blockSize + ") is too small to execute the simulation"); + } + + MCMEvent event = queue.enqueue1DKernel(simulateKernel, nbSim * blockSize, blockSize); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("simulate", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + System.out.println("copy"); + } + } + + @Override + public void doAutoLive() { + resetImpl(); + doTopologyImpl(); + + if (blockSize < Math.max(nbOM, nbMM)) { + throw new RuntimeException("blockSize (" + blockSize + ") is too small to execute the simulation"); + } + + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + if (! isBatchModeEnabled()) { + int CO2 = -1; + + while (CO2 == -1 || CO2 != worlds[0].CO2) { + CO2 = worlds[0].CO2; + System.out.println("CO2 = " + CO2); + doLive(); + } + + } else { + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + MCMEvent event = queue.enqueue1DKernel(autoliveKernel, nbSim * blockSize, blockSize); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("autolive", event); + } + + onSimulationFinished(); + } + + @Override + protected void onSimulationFinished() { + + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + //queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.blockingReadBuffer(partsMem, Pointer.to(parts), 0, partsMem.getSize()); + + super.onSimulationFinished(); + } + + @Override + protected void releaseImpl() { + partsMem.release(); + + omCSRMem.release(); + mmCSRMem.release(); + //associationsMem.release(); + + worldsMem.release(); + omMem.release(); + mmMem.release(); + + autoliveKernel.release(); + simulateKernel.release(); + topoKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + @Override + public MiorWorld getWorld() { + return worlds[0]; + } + + @Override + public MiorOM[] getOMList() { + return Arrays.copyOfRange(omList, 0, nbOM); + } + + @Override + public MiorMM[] getMMList() { + return Arrays.copyOfRange(mmList, 0, nbMM); + } + + @Override + public boolean isAccessible(int iMM, int iOM) { + return false; + //return associations[iMM * nbOM + iOM] != -1; + } + + @Override + public boolean isAccessible(int iMM, int iOM, int iSim) { + return false; + //return associations[iSim * nbMM * nbOM + iMM * nbOM + iOM] != -1; + } + +} diff --git a/src/mior/model/OCLParaCSRModel4.java b/src/mior/model/OCLParaCSRModel4.java new file mode 100644 index 0000000..8ce4942 --- /dev/null +++ b/src/mior/model/OCLParaCSRModel4.java @@ -0,0 +1,409 @@ +package mior.model; + +import java.util.Arrays; +import java.util.BitSet; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; +import mior.model.dist.IMiorDistribution; + +import org.jocl.Pointer; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class OCLParaCSRModel4 extends AbstractMiorModel { + + /** + * Java view + */ + + private final int nbMM; + private final int nbOM; + + private final MiorMM [] mmList; + private final MiorOM [] omList; + private final MiorWorld [] worlds; + + /** + * OpenCL implementation + */ + final MCMContext context; + final MCMCommandQueue queue; + final MCMProgram program; + + final MCMKernel topoKernel; + final MCMKernel simulateKernel; + final MCMKernel autoliveKernel; + + final MCMMem mmMem; + final MCMMem omMem; + final MCMMem worldsMem; + + final MCMMem mmOffsetsMem; + final MCMMem omOffsetsMem; + + MCMMem mmCSRMem; + MCMMem omCSRMem; + + final MCMMem partsMem; + + private final int [] mmOffsets; + private final int [] omOffsets; + + private int [] mmCSR; + private int [] omCSR; + private final int [] parts; + + private final int nbSim; + private int blockSize; + + private final static Logger logger = LoggerFactory.getLogger(OCLParaCSRModel4.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_multisim4.cl"; + private final IMiorDistribution dist; + + public OCLParaCSRModel4(int onbMM, int onbOM, int nbSim, IMiorDistribution dist) { + this.dist = dist; + System.out.println(dist); + + //final double factor = dist.getMax() / ((double) onbOM); + this.nbOM = (int) (dist.getMaxFactor() * dist.getMeanOM()); + this.nbMM = (int) (dist.getMaxFactor() * dist.getMeanMM()); + + this.nbSim = nbSim; + this.blockSize = Math.max(nbOM, nbMM); + + // Allocate Java MIOR structures + this.mmList = new MiorMM[nbSim * nbMM]; + this.omList = new MiorOM[nbSim * nbOM]; + this.worlds = new MiorWorld[nbSim]; + + this.mmOffsets = new int[nbSim * nbMM]; + this.omOffsets = new int[nbSim * nbOM]; + //this.mmCSR = allocateStorage(nbSim * nbOM, nbMM); + //this.omCSR = allocateStorage(nbSim * nbMM, nbOM); + this.parts = new int[nbSim * nbMM * nbOM]; + + MiorUtils.initWorldArray(worlds, dist); + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + + // OpenCL allocations + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue(MCMCommandQueueProperty.ENABLE_PROFILING); + + watch.stop(); + + System.out.println("NB_MM: " + nbMM + ", NB_OM: " + nbOM); + watch.start("Program compilation"); + this.program = MCMUtils.compileFile(context, MODEL_SOURCE, " -DNB_MM=" + nbMM + " -DNB_OM=" + nbOM);// + " -g -O0"); + watch.stop(); + + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.simulateKernel = program.createKernel("simulate"); + this.autoliveKernel = program.createKernel("autolive"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.worldsMem = context.newBuffer().Using(worlds).b(); + this.mmOffsetsMem = context.newBuffer().Size(nbSim * nbMM).b(); + this.omOffsetsMem = context.newBuffer().Size(nbSim * nbOM).b(); + + //this.mmCSRMem = context.newBuffer().Using(mmCSR).b(); + //this.omCSRMem = context.newBuffer().Using(omCSR).b(); + this.partsMem = context.newBuffer().Using(new int[parts.length]).b(); + + watch.stop(); + } + + /*private int[] allocateStorage(int nbList, int listSize) { + return new int[nbList * (listSize + 1)]; + }*/ + + @Override + public void setBlockSize(int blockSize) { + this.blockSize = blockSize; + } + + @Override + public int getBlockSize() { + return blockSize; + } + + + @Override + public int getNbSimulations() { + return nbSim; + } + + @Override + protected void resetImpl() { + // Initialise models + /*for (int i = 0; i < nbSim; i++) { + this.worlds[i] = new MiorWorld(nbMM, nbOM); + }*/ + + MiorUtils.initWorldArray(worlds, dist); + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + + if (mmCSR != null) Arrays.fill(mmCSR, 0); + if (omCSR != null) Arrays.fill(omCSR, 0); + Arrays.fill(parts, 0); + + queue.enqueueWriteBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.enqueueWriteBuffer(omMem, omList, 0, omMem.getSize()); + queue.enqueueWriteBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + + if (mmCSR != null) { + queue.enqueueWriteBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + } + if (omCSR != null) { + queue.enqueueWriteBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + } + queue.enqueueWriteBuffer(partsMem, Pointer.to(parts), 0, partsMem.getSize()); + queue.finish(); + } + + @Override + protected void doTopologyImpl() { + troveTopology(); + + queue.enqueueWriteBuffer(mmOffsetsMem, Pointer.to(mmOffsets), 0, mmOffsetsMem.getSize()); + queue.enqueueWriteBuffer(mmOffsetsMem, Pointer.to(mmOffsets), 0, mmOffsetsMem.getSize()); + this.mmCSRMem = context.newBuffer().Using(mmCSR).b(); + this.omCSRMem = context.newBuffer().Using(omCSR).b(); + queue.finish(); + } + + protected void doTopologyImplOld() { + // System.out.println(topoKernel.getArgumentsNumber()); + topoKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem); // associationsMem + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbSim * nbMM , nbOM} // Global size + ); + + /*OCLEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbMM , nbSim * nbOM}, // Global size + new long[] { 1, nbOM } + );*/ + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmCSRMem, Pointer.to(mmCSR), 0, mmCSRMem.getSize()); + queue.blockingReadBuffer(omCSRMem, Pointer.to(omCSR), 0, omCSRMem.getSize()); + //System.out.println(Arrays.toString(mmCSR)); + //queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + protected void doLiveImpl() { + //throw new UnsupportedOperationException(); + simulateKernel.setArguments(mmMem, omMem, worldsMem, mmOffsetsMem, omOffsetsMem, mmCSRMem, omCSRMem, partsMem); + + if (blockSize < Math.max(nbOM, nbMM)) { + throw new RuntimeException("blockSize (" + blockSize + ") is too small to execute the simulation"); + } + + MCMEvent event = queue.enqueue1DKernel(simulateKernel, nbSim * blockSize, blockSize); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("simulate", event); + + if (! isBatchModeEnabled()) { + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + System.out.println("copy"); + } + } + + @Override + public void doAutoLive() { + resetImpl(); + doTopologyImpl(); + + if (blockSize < Math.max(nbOM, nbMM)) { + throw new RuntimeException("blockSize (" + blockSize + ") is too small to execute the simulation"); + } + + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmOffsetsMem, omOffsetsMem, mmCSRMem, omCSRMem, partsMem); + + if (! isBatchModeEnabled()) { + int CO2 = -1; + + while (CO2 == -1 || CO2 != worlds[0].CO2) { + CO2 = worlds[0].CO2; + System.out.println("CO2 = " + CO2); + doLive(); + } + + } else { + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + MCMEvent event = queue.enqueue1DKernel(autoliveKernel, nbSim * blockSize, blockSize); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("autolive", event); + } + + onSimulationFinished(); + } + + @Override + protected void onSimulationFinished() { + + queue.blockingReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + queue.blockingReadBuffer(omMem, omList, 0, omMem.getSize()); + queue.blockingReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + //queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + queue.blockingReadBuffer(partsMem, Pointer.to(parts), 0, partsMem.getSize()); + + super.onSimulationFinished(); + } + + @Override + protected void releaseImpl() { + partsMem.release(); + + omCSRMem.release(); + mmCSRMem.release(); + //associationsMem.release(); + + worldsMem.release(); + omMem.release(); + mmMem.release(); + + autoliveKernel.release(); + simulateKernel.release(); + topoKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + @Override + public MiorWorld getWorld() { + return worlds[0]; + } + + @Override + public MiorOM[] getOMList() { + return Arrays.copyOfRange(omList, 0, nbOM); + } + + @Override + public MiorMM[] getMMList() { + return Arrays.copyOfRange(mmList, 0, nbMM); + } + + @Override + public boolean isAccessible(int iMM, int iOM) { + return false; + //return associations[iMM * nbOM + iOM] != -1; + } + + @Override + public boolean isAccessible(int iMM, int iOM, int iSim) { + return false; + //return associations[iSim * nbMM * nbOM + iMM * nbOM + iOM] != -1; + } + + private void troveTopology() { + //int[] mmOffsets = new int[nbSim * nbMM]; + //int[] omOffsets = new int[nbSim * nbOM]; + int[] mmSizes = new int[nbSim * nbMM]; + int[] omSizes = new int[nbSim * nbOM]; + DynamicArray mmCSR = new DynamicArray(); + DynamicArray omCSR = new DynamicArray(); + BitSet bitmap = new BitSet(); + + for (int iSim = 0; iSim < nbSim; iSim++) { + final MiorWorld world = worlds[iSim]; + + for (int iMM = 0; iMM < world.nbMM; iMM++) { + + for (int iOM = 0; iOM < world.nbOM; iOM++) { + final float dx = omList[iSim * nbOM + iOM].x - mmList[iSim * nbMM + iMM].x; + final float dy = omList[iSim * nbOM + iOM].y - mmList[iSim * nbMM + iMM].y; + final double distance = Math.sqrt(dx * dx + dy * dy); + + if (distance <= world.RA) { + mmSizes[iSim * nbMM + iMM]++; + omSizes[iSim * nbOM + iOM]++; + bitmap.set(iSim * nbOM * nbMM + iMM * nbOM + iOM); + //System.out.println("Store link " + iMM + " - " + iOM); + } + } + } + } + + for (int i = 1; i < nbSim * nbMM; i++) { + mmOffsets[i] = mmOffsets[i - 1] + mmSizes[i - 1] + 1; + mmCSR.set(mmOffsets[i], 0); + } + + for (int i = 1; i < nbSim * nbOM; i++) { + omOffsets[i] = omOffsets[i - 1] + omSizes[i - 1] + 1; + omCSR.set(omOffsets[i], 0 /*omSizes[i]*/); + } + + for (int iSim = 0; iSim < nbSim; iSim++) { + final MiorWorld world = worlds[iSim]; + + for (int iMM = 0; iMM < world.nbMM; iMM++) { + final int mmIndex = iSim * nbMM + iMM; + + for (int iOM = 0; iOM < world.nbOM; iOM++) { + final int omIndex = iSim * nbOM + iOM; + + if (bitmap.get(iSim * nbOM * nbMM + iMM * nbOM + iOM)) { + list_add(omCSR, omOffsets[omIndex], mmIndex); + list_add(mmCSR, mmOffsets[mmIndex], omIndex); + //System.out.println("Add link " + iMM + " - " + iOM); + } + } + } + } + + this.mmCSR = mmCSR.toArray(); + this.omCSR = omCSR.toArray(); + + /* + System.out.println("nbSim: " + nbSim); + System.out.println("mmSizes: " + Arrays.toString(mmSizes)); + System.out.println("mmOffsets: " + Arrays.toString(mmOffsets)); + System.out.println("mmCSR: " + Arrays.toString(this.mmCSR)); + System.out.println("omSizes: " + Arrays.toString(omSizes)); + System.out.println("omOffsets: " + Arrays.toString(omOffsets)); + System.out.println("omCSR: " + Arrays.toString(this.omCSR));*/ + } + + private void list_add(DynamicArray list, int index, int val) { + final int offset = list.get(index); + list.set(offset + 1 + index, val); + list.set(index, offset + 1); + } + +} diff --git a/src/mior/model/OCLParaCSRModelAlt.java b/src/mior/model/OCLParaCSRModelAlt.java new file mode 100644 index 0000000..90d0541 --- /dev/null +++ b/src/mior/model/OCLParaCSRModelAlt.java @@ -0,0 +1,355 @@ +package mior.model; + +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import java.util.Arrays; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; +import mior.model.dist.IMiorDistribution; + +import org.jocl.Pointer; +import org.jocl.Sizeof; +import org.jocl.struct.Buffers; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class OCLParaCSRModelAlt extends AbstractMiorModel { + + /** + * Java view + */ + + private final int nbMM; + private final int nbOM; + + private final MiorMM [] mmList; + private final MiorOM [] omList; + private final MiorWorld [] worlds; + + //private final int [] associations; + + /** + * OpenCL implementation + */ + final MCMContext context; + final MCMCommandQueue queue; + final MCMProgram program; + + final MCMKernel topoKernel; + final MCMKernel simulateKernel; + final MCMKernel autoliveKernel; + + final MCMMem mmMem; + final MCMMem omMem; + final MCMMem worldsMem; + + final MCMMem mmCSRMem; + final MCMMem omCSRMem; + //final OCLMem associationsMem; + final MCMMem partsMem; + + private final ByteBuffer mmBuffer; + private final ByteBuffer omBuffer; + private final ByteBuffer worldBuffer; + + private final ByteBuffer mmCSRBuffer; + private final ByteBuffer omCSRBuffer; + private final ByteBuffer partsBuffer; + + /*private final int [] mmCSR; + private final int [] omCSR; + private final int [] parts;*/ + + private final int nbSim; + private int blockSize; + + private final static Logger logger = LoggerFactory.getLogger(OCLParaCSRModelAlt.class); + private final Slf4JStopWatch watch = new Slf4JStopWatch(logger); + + private final static String MODEL_SOURCE = "kernels/mior_model_multisim3.cl"; + private final IMiorDistribution dist; + + public OCLParaCSRModelAlt(int onbMM, int onbOM, int nbSim, IMiorDistribution dist) { + this.dist = dist; + System.out.println(dist); + + this.nbOM = (int) (dist.getMaxFactor() * dist.getMeanOM()); + this.nbMM = (int) (dist.getMaxFactor() * dist.getMeanMM()); + + this.nbSim = nbSim; + this.blockSize = Math.max(nbOM, nbMM); + + // Allocate Java MIOR structures + this.mmList = new MiorMM[nbSim * nbMM]; + this.omList = new MiorOM[nbSim * nbOM]; + this.worlds = new MiorWorld[nbSim]; + + MiorUtils.initWorldArray(worlds, dist); + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + + this.mmBuffer = Buffers.allocateBuffer(mmList); + this.omBuffer = Buffers.allocateBuffer(omList); + this.worldBuffer = Buffers.allocateBuffer(worlds); + + this.mmCSRBuffer = this.allocateLists(nbSim * nbOM, nbMM); + this.omCSRBuffer = this.allocateLists(nbSim * nbMM, nbOM); + this.partsBuffer = this.allocateDirectIntBuffer(nbSim * nbMM * nbOM); + + // OpenCL allocations + watch.start("OpenCL setup"); + + this.context = new MCMContext(); + this.queue = context.createCommandQueue( + MCMCommandQueueProperty.ENABLE_PROFILING, + MCMCommandQueueProperty.ENABLE_OOO_MODE + ); + + watch.stop(); + + System.out.println("NB_MM: " + nbMM + ", NB_OM: " + nbOM); + watch.start("Program compilation"); + this.program = MCMUtils.compileFile(context, MODEL_SOURCE, " -DNB_MM=" + nbMM + " -DNB_OM=" + nbOM);// + " -g -O0"); + watch.stop(); + + watch.start("Kernel allocation"); + + this.topoKernel = program.createKernel("topology"); + this.simulateKernel = program.createKernel("simulate"); + this.autoliveKernel = program.createKernel("autolive"); + + watch.stop(); + watch.start("Memory allocation"); + + this.mmMem = context.newBuffer().Using(mmList).b(); + this.omMem = context.newBuffer().Using(omList).b(); + this.worldsMem = context.newBuffer().Using(worlds).b(); + //this.associationsMem = context.newBuffer().Using(associations).b(); + System.out.println(nbSim * nbOM * nbMM); + System.out.println("capa " + mmCSRBuffer.capacity()); + this.mmCSRMem = context.newBuffer().Using(mmCSRBuffer).b(); + this.omCSRMem = context.newBuffer().Using(omCSRBuffer).b(); + this.partsMem = context.newBuffer().Using(partsBuffer).b(); + + watch.stop(); + + } + + private ByteBuffer allocateLists(int nbList, int listSize) { + return allocateDirectIntBuffer(nbList * (listSize + 1)); + } + + private ByteBuffer allocateDirectIntBuffer(int capacity) { + return ByteBuffer.allocateDirect(Sizeof.cl_int * capacity); + } + + @Override + public void setBlockSize(int blockSize) { + this.blockSize = blockSize; + } + + @Override + public int getBlockSize() { + return blockSize; + } + + + @Override + public int getNbSimulations() { + return nbSim; + } + + private void clearIntBuffer(IntBuffer b) { + for (int i = 0; i < b.capacity(); i++) { + b.put(i, 0); + } + b.rewind(); + } + + @Override + protected void resetImpl() { + // Initialise models + MiorUtils.initWorldArray(worlds, dist); + MiorUtils.initRandomMMArray(mmList, worlds[0].width); + MiorUtils.initRandomOMArray(omList, worlds[0].width); + + //Arrays.fill(associations, -1); + //Arrays.fill(mmCSR, 0); + //Arrays.fill(omCSR, 0); + //Arrays.fill(parts, 0); + + Buffers.writeToBuffer(mmBuffer, mmList); mmBuffer.rewind(); + Buffers.writeToBuffer(omBuffer, omList); omBuffer.rewind(); + Buffers.writeToBuffer(worldBuffer, worlds); worldBuffer.rewind(); + + MCMEvent w1 = queue.enqueueWriteBuffer(mmMem, Pointer.to(mmBuffer), 0, mmMem.getSize()); + MCMEvent w2 = queue.enqueueWriteBuffer(omMem, Pointer.to(omBuffer), 0, omMem.getSize()); + MCMEvent w3 = queue.enqueueWriteBuffer(worldsMem, Pointer.to(worldBuffer), 0, worldsMem.getSize()); + + clearIntBuffer(mmCSRBuffer.asIntBuffer()); + clearIntBuffer(omCSRBuffer.asIntBuffer()); + clearIntBuffer(partsBuffer.asIntBuffer()); + + MCMEvent w4 = queue.enqueueWriteBuffer(mmCSRMem, Pointer.to(mmCSRBuffer), 0, mmCSRMem.getSize()); + MCMEvent w5 = queue.enqueueWriteBuffer(omCSRMem, Pointer.to(omCSRBuffer), 0, omCSRMem.getSize()); + MCMEvent w6 = queue.enqueueWriteBuffer(partsMem, Pointer.to(partsBuffer), 0, partsMem.getSize()); + MCMEvent.waitFor(w1, w2, w3, w4, w5, w6); + } + + @Override + protected void doTopologyImpl() { + // System.out.println(topoKernel.getArgumentsNumber()); + topoKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem); // associationsMem + + MCMEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbSim * nbMM , nbOM} // Global size + ); + + /*OCLEvent event = queue.enqueueKernel(topoKernel, 2, + new long[] { nbMM , nbSim * nbOM}, // Global size + new long[] { 1, nbOM } + );*/ + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("topology", event); + + if (! isBatchModeEnabled()) { + MCMEvent r1 = queue.enqueueReadBuffer(mmCSRMem, Pointer.to(mmCSRBuffer), 0, mmCSRMem.getSize()); + MCMEvent r2 = queue.enqueueReadBuffer(omCSRMem, Pointer.to(omCSRBuffer), 0, omCSRMem.getSize()); + MCMEvent.waitFor(r1, r2); + //System.out.println(Arrays.toString(mmCSR)); + //queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + } + } + + @Override + protected void doLiveImpl() { + //throw new UnsupportedOperationException(); + simulateKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + if (blockSize < Math.max(nbOM, nbMM)) { + throw new RuntimeException("blockSize (" + blockSize + ") is too small to execute the simulation"); + } + + MCMEvent event = queue.enqueue1DKernel(simulateKernel, nbSim * blockSize, blockSize); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("simulate", event); + + if (! isBatchModeEnabled()) { + MCMEvent r1 = queue.enqueueReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + MCMEvent r2 = queue.enqueueReadBuffer(omMem, omList, 0, omMem.getSize()); + MCMEvent r3 = queue.enqueueReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + MCMEvent.waitFor(r1, r2, r3); + + Buffers.readFromBuffer(mmBuffer, mmList); mmBuffer.rewind(); + Buffers.readFromBuffer(omBuffer, omList); omBuffer.rewind(); + Buffers.readFromBuffer(worldBuffer, worlds); worldBuffer.rewind(); + + System.out.println("copy"); + } + } + + @Override + public void doAutoLive() { + resetImpl(); + doTopologyImpl(); + + if (blockSize < Math.max(nbOM, nbMM)) { + throw new RuntimeException("blockSize (" + blockSize + ") is too small to execute the simulation"); + } + + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + if (! isBatchModeEnabled()) { + int CO2 = -1; + + while (CO2 == -1 || CO2 != worlds[0].CO2) { + CO2 = worlds[0].CO2; + System.out.println("CO2 = " + CO2); + doLive(); + } + + } else { + autoliveKernel.setArguments(mmMem, omMem, worldsMem, mmCSRMem, omCSRMem, partsMem); + + MCMEvent event = queue.enqueue1DKernel(autoliveKernel, nbSim * blockSize, blockSize); + + MCMEvent.waitFor(event); + MCMUtils.printEventStats("autolive", event); + } + + onSimulationFinished(); + } + + @Override + protected void onSimulationFinished() { + + MCMEvent r1 = queue.enqueueReadBuffer(mmMem, mmList, 0, mmMem.getSize()); + MCMEvent r2 = queue.enqueueReadBuffer(omMem, omList, 0, omMem.getSize()); + MCMEvent r3 = queue.enqueueReadBuffer(worldsMem, worlds, 0, worldsMem.getSize()); + //queue.blockingReadBuffer(associationsMem, Pointer.to(associations), 0, associationsMem.getSize()); + MCMEvent r4 = queue.enqueueReadBuffer(partsMem, Pointer.to(partsBuffer), 0, partsMem.getSize()); + + MCMEvent.waitFor(r1, r2, r3, r4); + super.onSimulationFinished(); + } + + @Override + protected void releaseImpl() { + partsMem.release(); + + omCSRMem.release(); + mmCSRMem.release(); + //associationsMem.release(); + + worldsMem.release(); + omMem.release(); + mmMem.release(); + + autoliveKernel.release(); + simulateKernel.release(); + topoKernel.release(); + + program.release(); + queue.release(); + context.release(); + } + + @Override + public MiorWorld getWorld() { + return worlds[0]; + } + + @Override + public MiorOM[] getOMList() { + return Arrays.copyOfRange(omList, 0, nbOM); + } + + @Override + public MiorMM[] getMMList() { + return Arrays.copyOfRange(mmList, 0, nbMM); + } + + @Override + public boolean isAccessible(int iMM, int iOM) { + return false; + //return associations[iMM * nbOM + iOM] != -1; + } + + @Override + public boolean isAccessible(int iMM, int iOM, int iSim) { + return false; + //return associations[iSim * nbMM * nbOM + iMM * nbOM + iOM] != -1; + } + +} diff --git a/src/mior/model/RandomState.java b/src/mior/model/RandomState.java new file mode 100644 index 0000000..e9f413c --- /dev/null +++ b/src/mior/model/RandomState.java @@ -0,0 +1,11 @@ +package mior.model; + +import org.jocl.struct.Struct; + +public class RandomState extends Struct { + + public long a; + public long b; + public long c; + +} diff --git a/src/mior/model/SimpleMiorModel.java b/src/mior/model/SimpleMiorModel.java new file mode 100644 index 0000000..93b48d3 --- /dev/null +++ b/src/mior/model/SimpleMiorModel.java @@ -0,0 +1,82 @@ +package mior.model; + +public abstract class SimpleMiorModel extends AbstractMiorModel { + + protected final int nbMM; + protected final int nbOM; + + protected final MiorMM [] mmList; + protected final MiorOM [] omList; + protected final int [] associations; + protected MiorWorld world; + + /*public SimpleMiorModel(int nbMM, int nbOM) { + this(nbMM, nbOM, nbMM * nbOM); + }*/ + + /* + public SimpleMiorModel(int nbMM, int nbOM, int associationsSize) { + super(); + this.nbMM = nbMM; + this.nbOM = nbOM; + this.mmList = new MiorMM[nbMM]; + this.omList = new MiorOM[nbOM]; + this.associations = new int[associationsSize]; + this.world = new MiorWorld(nbMM, nbOM); + init(nbMM, nbOM); + }*/ + + public SimpleMiorModel(MiorWorld world) { + this.world = world; + this.nbMM = world.nbMM; + this.nbOM = world.nbOM; + + this.mmList = new MiorMM[nbMM]; + this.omList = new MiorOM[nbOM]; + this.associations = new int[nbMM * nbOM]; + init(nbMM, nbOM); + } + + private void init(int nbMM, int nbOM) { + MiorUtils.initRandomMMArray(mmList, world.width); + MiorUtils.initRandomOMArray(omList, world.width); + MiorUtils.initAssociations(associations); + world = new MiorWorld(world); + } + + @Override + public final MiorMM[] getMMList() { + return mmList; + } + + @Override + public final MiorOM[] getOMList() { + return omList; + } + + @Override + public final MiorWorld getWorld() { + return world; + } + + @Override + public int getNbSimulations() { + return 1; + } + + @Override + public final boolean isAccessible(int iMM, int iOM) { + return isAccessible(iMM, iOM, 0); + } + + @Override + public boolean isAccessible(int iMM, int iOM, int iSim) { + return associations[iMM * nbOM + iOM] != -1; + } + + @Override + protected void resetImpl() { + init(world.nbMM, world.nbOM); + } + +} diff --git a/src/mior/model/async/OCLExecutionQueue.java b/src/mior/model/async/OCLExecutionQueue.java new file mode 100644 index 0000000..f16f1af --- /dev/null +++ b/src/mior/model/async/OCLExecutionQueue.java @@ -0,0 +1,5 @@ +package mior.model.async; + +public class OCLExecutionQueue { + +} diff --git a/src/mior/model/async/OCLExecutor.java b/src/mior/model/async/OCLExecutor.java new file mode 100644 index 0000000..d1d1073 --- /dev/null +++ b/src/mior/model/async/OCLExecutor.java @@ -0,0 +1,5 @@ +package mior.model.async; + +public class OCLExecutor { + +} diff --git a/src/mior/model/async/OCLTask.java b/src/mior/model/async/OCLTask.java new file mode 100644 index 0000000..14e70af --- /dev/null +++ b/src/mior/model/async/OCLTask.java @@ -0,0 +1,5 @@ +package mior.model.async; + +public class OCLTask { + +} diff --git a/src/mior/model/dist/AbstractMiorDistribution.java b/src/mior/model/dist/AbstractMiorDistribution.java new file mode 100644 index 0000000..e73a5f9 --- /dev/null +++ b/src/mior/model/dist/AbstractMiorDistribution.java @@ -0,0 +1,23 @@ +package mior.model.dist; + +public abstract class AbstractMiorDistribution implements IMiorDistribution { + + protected final int meanMM; + protected final int meanOM; + + public AbstractMiorDistribution(int meanMM, int meanOM) { + this.meanMM = meanMM; + this.meanOM = meanOM; + } + + @Override + public int getMeanMM() { + return meanMM; + } + + @Override + public int getMeanOM() { + return meanOM; + } + +} diff --git a/src/mior/model/dist/IMiorDistribution.java b/src/mior/model/dist/IMiorDistribution.java new file mode 100644 index 0000000..801c975 --- /dev/null +++ b/src/mior/model/dist/IMiorDistribution.java @@ -0,0 +1,10 @@ +package mior.model.dist; + +public interface IMiorDistribution { + + public int getMeanMM(); + public int getMeanOM(); + public double getMaxFactor(); + public double getFactor(); + +} diff --git a/src/mior/model/dist/LinearDistribution.java b/src/mior/model/dist/LinearDistribution.java new file mode 100644 index 0000000..7f6f567 --- /dev/null +++ b/src/mior/model/dist/LinearDistribution.java @@ -0,0 +1,26 @@ +package mior.model.dist; + +import java.util.Random; + +public class LinearDistribution extends AbstractMiorDistribution { + + private final double variation; + private final Random rng; + + public LinearDistribution(int meanMM, int meanOM, double variation) { + super(meanMM, meanOM); + this.variation = variation; + this.rng = new Random(); + } + + @Override + public double getFactor() { + return 1 + (2 * rng.nextFloat() - 1) * variation; + } + + @Override + public double getMaxFactor() { + return 1.0 + variation; + } + +} diff --git a/src/mior/model/dist/PoissonDistribution.java b/src/mior/model/dist/PoissonDistribution.java new file mode 100644 index 0000000..be318ad --- /dev/null +++ b/src/mior/model/dist/PoissonDistribution.java @@ -0,0 +1,36 @@ +package mior.model.dist; + +public class PoissonDistribution extends AbstractMiorDistribution { + + private final int minOM; + private final int maxOM; + private final double lambda; + + public PoissonDistribution(int meanMM, int meanOM, double variation) { + super(meanMM, meanOM); + minOM = (int) ((1.0 - variation) * meanOM); + maxOM = (int) ((1.0 + variation) * meanOM); + this.lambda = (maxOM - minOM) / 2.0; + } + + @Override + public double getFactor() { + throw new UnsupportedOperationException(); + /*final double L = Math.exp(-lambda); + int k = 0; + double p = 1; + + do { + k += 1; + p *= Math.random(); + } while (p > L); + + return (minOM + k);*/ + } + + @Override + public double getMaxFactor() { + throw new UnsupportedOperationException(); + } + +} diff --git a/src/mior/model/dist/StaticDistribution.java b/src/mior/model/dist/StaticDistribution.java new file mode 100644 index 0000000..252d414 --- /dev/null +++ b/src/mior/model/dist/StaticDistribution.java @@ -0,0 +1,19 @@ +package mior.model.dist; + +public class StaticDistribution extends AbstractMiorDistribution { + + public StaticDistribution(int meanMM, int meanOM) { + super(meanMM, meanOM); + } + + @Override + public double getFactor() { + return 1; + } + + @Override + public double getMaxFactor() { + return 1; + } + +} diff --git a/src/mior/model/dist/TestDist.java b/src/mior/model/dist/TestDist.java new file mode 100644 index 0000000..ef2541d --- /dev/null +++ b/src/mior/model/dist/TestDist.java @@ -0,0 +1,12 @@ +package mior.model.dist; + +public class TestDist { + + public static void main(String[] args) { + IMiorDistribution dist = new LinearDistribution(38, 310, 0.3); + + for (int i = 0; i < 1000; i++) { + System.out.println(dist.getFactor()); + } + } +} diff --git a/src/mior/model/multi/OCLMultiSim.java b/src/mior/model/multi/OCLMultiSim.java new file mode 100644 index 0000000..78ac9b9 --- /dev/null +++ b/src/mior/model/multi/OCLMultiSim.java @@ -0,0 +1,17 @@ +package mior.model.multi; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; + +public class OCLMultiSim implements OCLTask { + + public OCLMultiSim(int nbMM, int nbOM, int nbSim) { + } + + @Override + public void run(MCMContext context, MCMCommandQueue queue) { + + } + + +} diff --git a/src/mior/model/multi/OCLScheduler.java b/src/mior/model/multi/OCLScheduler.java new file mode 100644 index 0000000..c2b5ca1 --- /dev/null +++ b/src/mior/model/multi/OCLScheduler.java @@ -0,0 +1,27 @@ +package mior.model.multi; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMDevice; + +public class OCLScheduler { + + private MCMContext context; + private MCMDevice[] devices; + private MCMCommandQueue[] queues; + + public OCLScheduler(MCMContext context) { + this.context = context; + this.devices = context.getDevices(); + this.queues = new MCMCommandQueue[devices.length]; + + for (int i = 0; i < queues.length; i++) { + queues[i] = context.createCommandQueue(devices[i]); + } + } + + public void run(OCLTask task) { + task.run(context, queues[0]); + } + +} diff --git a/src/mior/model/multi/OCLTask.java b/src/mior/model/multi/OCLTask.java new file mode 100644 index 0000000..cb77075 --- /dev/null +++ b/src/mior/model/multi/OCLTask.java @@ -0,0 +1,10 @@ +package mior.model.multi; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; + +public interface OCLTask { + + public void run(MCMContext context, MCMCommandQueue queue); + +} diff --git a/src/mior/view/IntegerVerifier.java b/src/mior/view/IntegerVerifier.java new file mode 100644 index 0000000..f717356 --- /dev/null +++ b/src/mior/view/IntegerVerifier.java @@ -0,0 +1,19 @@ +package mior.view; + +import javax.swing.InputVerifier; +import javax.swing.JComponent; +import javax.swing.JTextField; + +public class IntegerVerifier extends InputVerifier { + + @Override + public boolean verify(JComponent input) { + JTextField field = (JTextField) input; + + + field.getText(); + + return false; + } + +} diff --git a/src/mior/view/LiveWorker.java b/src/mior/view/LiveWorker.java new file mode 100644 index 0000000..43b57a5 --- /dev/null +++ b/src/mior/view/LiveWorker.java @@ -0,0 +1,28 @@ +package mior.view; + +import javax.swing.SwingWorker; + +import mior.model.OCLMiorModel; + +public class LiveWorker extends SwingWorker { + + private OCLMiorModel model; + private MiorCanvas canvas; + + public LiveWorker(OCLMiorModel model) { + // TODO Auto-generated constructor stub + } + + @Override + protected Object doInBackground() throws Exception { + model.doLive(); + return null; + } + + @Override + protected void done() { + canvas.repaint(); + super.done(); + } + +} diff --git a/src/mior/view/MiorCanvas.java b/src/mior/view/MiorCanvas.java new file mode 100644 index 0000000..a505edb --- /dev/null +++ b/src/mior/view/MiorCanvas.java @@ -0,0 +1,190 @@ +package mior.view; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Line2D; + +import javax.swing.JPanel; + +import mior.model.IMiorModel; +import mior.model.IMiorUpdateListener; +import mior.model.MiorMM; +import mior.model.MiorOM; +import mior.model.MiorWorld; + + +public class MiorCanvas extends JPanel implements IMiorUpdateListener { + + private static final long serialVersionUID = 1L; + private IMiorModel model; + + private final Color BG_COLOR = Color.BLACK; + private final Color OM_COLOR = new Color(172, 0, 223); + private final Color MM_ACTIVE_COLOR = Color.WHITE; + private final Color MM_PASSIVE_COLOR = Color.LIGHT_GRAY; + private final Color ASSOCIATIONS_COLOR = Color.YELLOW; + + private boolean radiusVisible; + private boolean associationsVisible; + + public MiorCanvas(IMiorModel model) { + this.model = model; + model.addUpdateListener(this); + + radiusVisible = false; + associationsVisible = true; + setBackground(BG_COLOR); + + // Enable double buffering + setDoubleBuffered(true); + } + + public IMiorModel getModel() { + return model; + } + + public void setRadiusVisible(boolean radiusVisible) { + if (this.radiusVisible != radiusVisible) { + this.radiusVisible = radiusVisible; + repaint(); + } + } + + public boolean isRadiusVisible() { + return radiusVisible; + } + + public void setAssociationsVisible(boolean associationsVisible) { + if (this.associationsVisible != associationsVisible) { + this.associationsVisible = associationsVisible; + System.out.println("repaint"); + repaint(); + } + } + + public boolean isAssociationsVisible() { + return associationsVisible; + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + + if (model == null) { + return; + } + + Graphics2D g2d = (Graphics2D) g; + + // Enable antialiasing + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_BICUBIC); + + MiorWorld world = model.getWorld(); + + g2d.setStroke(new BasicStroke(2.0f)); + + double xScale = 1.0 * getWidth() / world.width; + double yScale = 1.0 * getHeight() / world.width; + + g2d.scale(xScale, yScale); + + MiorMM[] mmList = model.getMMList(); + MiorOM[] omList = model.getOMList(); + + //int [] associations = model.getAssociations(); + + //System.out.println(Arrays.toString(mmList)); + //System.out.println(Arrays.toString(omList)); + //System.out.println(Arrays.toString(associations)); + + if (associationsVisible) { + g2d.setColor(ASSOCIATIONS_COLOR); + g2d.setStroke(new BasicStroke((float) (1.0f / xScale))); + + for (int i = 0; i < mmList.length; i++) { + for (int j = 0; j < omList.length; j++) { + + if (model.isAccessible(i, j)) { + MiorMM from = mmList[i]; + MiorOM to = omList[j]; + + g2d.draw(new Line2D.Double(from.getX(), from.getY(), to.getX(), to.getY())); + } + } + } + + g2d.setStroke(new BasicStroke(2.0f)); + + /* + for (int i = 0; i < associations.length; i++) { + int iMM = i / omList.length; + int iOM = i % omList.length; + //System.out.println("len: " + mmList.length + ", i: " + i + ", iMM" + iMM + ", iOM: " + iOM); + + if (associations[i] != -1) { + MiorMM from = mmList[iMM]; + MiorOM to = omList[iOM]; + + g2d.draw(new Line2D.Double(from.getX(), from.getY(), to.getX(), to.getY())); + } + }*/ + } + + g2d.setColor(OM_COLOR); + + for (MiorOM om : omList) { + double size = om.getCarbone() / 5000.0; + double x = om.getX() - size / 2; + double y = om.getY() - size / 2; + + Shape shape = new Ellipse2D.Double(x, y, size, size); + g2d.fill(shape); + } + + for (MiorMM mm : mmList) { + double size = mm.getCarbone() / 5000.0; + double x = mm.getX() - size / 2; + double y = mm.getY() - size / 2; + + Shape shape = new Ellipse2D.Double(x, y, size, size); + + if (mm.dormance != 0) { + g2d.setColor(MM_PASSIVE_COLOR); + } else { + g2d.setColor(MM_ACTIVE_COLOR); + } + + g2d.fill(shape); + + if (radiusVisible) { + double rx = mm.getX() - world.RA; + double ry = mm.getY() - world.RA; + Shape radius = new Ellipse2D.Double(rx, ry, 2 * world.RA, 2 * world.RA); + g2d.draw(radius); + } + } + + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(900, 900); + } + + @Override + public void onMiorModelUpdated(IMiorModel model) { + this.model = model; + repaint(); + } + +} diff --git a/src/mior/view/MiorGraph.java b/src/mior/view/MiorGraph.java new file mode 100644 index 0000000..379e7fc --- /dev/null +++ b/src/mior/view/MiorGraph.java @@ -0,0 +1,118 @@ +package mior.view; + +import javax.swing.BoxLayout; +import javax.swing.JPanel; + +import mior.model.IMiorModel; +import mior.model.IMiorUpdateListener; +import mior.model.MiorMM; +import mior.model.MiorOM; + +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartPanel; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.data.category.DefaultCategoryDataset; + +public class MiorGraph extends JPanel implements IMiorUpdateListener { + + private static final long serialVersionUID = 1L; + + private final DefaultCategoryDataset data1; + private final DefaultCategoryDataset data2; + private int lastCO2 = 0; + private int step; + + public MiorGraph() { + setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); + + data1 = new DefaultCategoryDataset(); + data2 = new DefaultCategoryDataset(); + + final JFreeChart chart1 = ChartFactory.createLineChart( + "Agents numbers", + "Step", + "Value", + data1, + PlotOrientation.VERTICAL, + true, + true, + false + ); + + ChartPanel panel1 = new ChartPanel(chart1); + add(panel1); + + final JFreeChart chart2 = ChartFactory.createLineChart( + "Carbon summary", + "Step", + "Value (thousands)", + data2, + PlotOrientation.VERTICAL, + true, + true, + false + ); + + ChartPanel panel2 = new ChartPanel(chart2); + add(panel2); + + clear(); + } + + public void update(IMiorModel model) { + final String stepLabel = Integer.toString(step); + + data1.addValue(model.getWorld().nbMM, "MM", stepLabel); + + int nbActifs = 0; + int MMtotalC = 0; + int OMtotalC = 0; + final int CO2 = model.getWorld().CO2; + + for (MiorMM mm : model.getMMList()) { + MMtotalC += mm.getCarbone(); + /*if (mm.getCarbone() < 0) { + System.out.println("MM oops"); + }*/ + if (mm.dormance == 0) { + nbActifs++; + } + } + + for (MiorOM om : model.getOMList()) { + OMtotalC += om.getCarbone(); + /*if (om.getCarbone() < 0) { + System.out.println("OM oops"); + }*/ + } + + data1.addValue(nbActifs, "MM Actifs", stepLabel); + + data2.addValue(MMtotalC / 1000, "CMM", stepLabel); + data2.addValue(OMtotalC / 1000, "COM", stepLabel); + data2.addValue(CO2 / 1000, "CO2", stepLabel); + data2.addValue((CO2 + MMtotalC + OMtotalC) / 1000, "Total", stepLabel); + + // TODO : HACK FOR MULTIPLE EXECUTIONS + lastCO2 = Math.min(CO2, lastCO2); + + data2.addValue((CO2 - lastCO2) / 100, "dCO2 (x10)", stepLabel); + lastCO2 = CO2; + step++; + } + + public void clear() { + lastCO2 = 0; + step = 0; + data1.clear(); + data2.clear(); + } + + @Override + public void onMiorModelUpdated(IMiorModel model) { + update(model); + repaint(); + } +} + diff --git a/src/mior/view/MiorResultWriter.java b/src/mior/view/MiorResultWriter.java new file mode 100644 index 0000000..91574b4 --- /dev/null +++ b/src/mior/view/MiorResultWriter.java @@ -0,0 +1,79 @@ +package mior.view; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.PrintWriter; + +import mior.model.IMiorModel; +import mior.model.IMiorUpdateListener; +import mior.model.MiorMM; +import mior.model.MiorOM; + +public class MiorResultWriter implements IMiorUpdateListener { + + private int step; + private PrintWriter output; + private int lastCO2; + private int CO2; + + private static final String SSEP = "\t"; + private static final String SEP = "\t\t"; + + public MiorResultWriter(String outputPath) { + try { + output = new PrintWriter(new BufferedWriter(new FileWriter(outputPath))); + output.println("#" + SSEP + "nbMM" + SSEP + "nbMMa" + SSEP + "CMM" + SEP + "COM" + SEP + "CO2" + SEP + "Total" + SEP + "dCO2"); + } catch (Exception e) { + throw new RuntimeException("Invalid output file", e); + } + } + + @Override + public void onMiorModelUpdated(IMiorModel model) { + step++; + + int mmTotalActive = 0; + int mmTotalCarbon = 0; + int omTotalCarbon = 0; + + lastCO2 = Math.min(CO2, model.getWorld().CO2); + CO2 = model.getWorld().CO2; + + for (MiorMM mm : model.getMMList()) { + mmTotalCarbon += mm.getCarbone(); + if (mm.dormance == 0) { + mmTotalActive ++; + } + } + + for (MiorOM om : model.getOMList()) { + omTotalCarbon += om.getCarbone(); + } + + output.print(step); + output.append(SSEP); + + output.print(model.getMMList().length); + output.append(SSEP); + + output.print(mmTotalActive); + output.append(SSEP); + + output.print(mmTotalCarbon); + output.append(SEP); + + output.print(omTotalCarbon); + output.append(SEP); + + output.print(CO2); + output.append(SEP); + + output.print(mmTotalCarbon + omTotalCarbon + CO2); + output.append(SEP); + + output.println(CO2 - lastCO2); + output.flush(); + } + + +} diff --git a/src/mior/view/MiorView.java b/src/mior/view/MiorView.java new file mode 100644 index 0000000..0fce029 --- /dev/null +++ b/src/mior/view/MiorView.java @@ -0,0 +1,119 @@ +package mior.view; + +import java.awt.BorderLayout; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +import mior.controler.AutoLiveAction; +import mior.controler.ClearAction; +import mior.controler.ConfigureAssociationsAction; +import mior.controler.ConfigureRadiusAction; +import mior.controler.ConfigureRandomAction; +import mior.controler.LiveAction; +import mior.controler.ResetAction; +import mior.controler.TopoAction; +import mior.model.IMiorModel; +import mior.model.MiorWorld; +import mior.model.OCLMiorModel; + +public class MiorView { + + private IMiorModel model; + private final JFrame frame; + private final MiorCanvas canvas; + private final MiorGraph graph; + + public MiorView(IMiorModel model) { + this(model, ""); + } + + public MiorView(IMiorModel model, String suppl) { + this.frame = new JFrame("MiorCL - 0.2 [" + suppl + "]"); + this.model = model; + + this.canvas = new MiorCanvas(model); + model.addUpdateListener(canvas); + + this.graph = new MiorGraph(); + model.addUpdateListener(graph); + + buildUI(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + frame.pack(); + } + + public void setModel(IMiorModel model) { + if (model != this.model) { + model.addUpdateListener(canvas); + model.addUpdateListener(graph); + } + + this.model = model; + } + + public JFrame getFrame() { + return frame; + } + + private void buildUI() { + final JPanel mainPanel = new JPanel(new BorderLayout()); + frame.setContentPane(mainPanel); + + mainPanel.add(canvas, BorderLayout.CENTER); + mainPanel.add(graph, BorderLayout.EAST); + + final JPanel buttonPanel = new JPanel(); + mainPanel.add(buttonPanel, BorderLayout.SOUTH); + + final JButton resetButton = new JButton(new ResetAction(model)); + buttonPanel.add(resetButton); + + final JButton topoButton = new JButton(new TopoAction(model)); + buttonPanel.add(topoButton); + + final JButton liveButton = new JButton(new LiveAction(model)); + buttonPanel.add(liveButton); + + final JButton autoButton = new JButton(new AutoLiveAction(model)); + buttonPanel.add(autoButton); + + final JButton clearButton = new JButton(new ClearAction(graph)); + buttonPanel.add(clearButton); + + final JCheckBox assocCheckbox = new JCheckBox(new ConfigureAssociationsAction(canvas)); + assocCheckbox.setSelected(canvas.isAssociationsVisible()); + buttonPanel.add(assocCheckbox); + + final JCheckBox radiusCheckbox = new JCheckBox(new ConfigureRadiusAction(canvas)); + radiusCheckbox.setSelected(canvas.isRadiusVisible()); + buttonPanel.add(radiusCheckbox); + + final JCheckBox randomCheckBox = new JCheckBox(new ConfigureRandomAction(model)); + randomCheckBox.setSelected(model.isRandomEnabled()); + buttonPanel.add(randomCheckBox); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + try { + UIManager.setLookAndFeel(UIManager + .getSystemLookAndFeelClassName()); + } catch (final Exception e) { + e.printStackTrace(); + } + final MiorWorld world = new MiorWorld(1); + final IMiorModel model = new OCLMiorModel(world); + new MiorView(model); + } + + }); + } +} diff --git a/src/preypredator/OldPreyPredatorSimulation.java b/src/preypredator/OldPreyPredatorSimulation.java new file mode 100644 index 0000000..48d3253 --- /dev/null +++ b/src/preypredator/OldPreyPredatorSimulation.java @@ -0,0 +1,113 @@ +package preypredator; + +import java.nio.IntBuffer; +import java.util.Random; + +import org.jocl.Pointer; + +import mcmas.core.MCMCommandQueue; +import mcmas.core.MCMContext; +import mcmas.core.MCMEvent; +import mcmas.core.MCMKernel; +import mcmas.core.MCMMem; +import mcmas.core.MCMProgram; +import mcmas.core.MCMUtils; +import mior.model.RandomState; + +public class OldPreyPredatorSimulation { + + private final int size; + private final int nbPreys; + private final int nbPredators; + private final RandomState[] rngList; + private final PPWorld world; + + private final IntBuffer grass; + private final IntBuffer preys; + private final IntBuffer predators; + + private MCMProgram program; + private MCMKernel grassKernel; + private MCMKernel preysKernel; + private MCMKernel predatorsKernel; + + private MCMMem grassBuffer; + private MCMMem preysBuffer; + private MCMMem predatorsBuffer; + private MCMMem rngListBuffer; + private MCMMem worldBuffer; + + public OldPreyPredatorSimulation(int size, int nbPreys, int nbPredators) { + this.size = size; + this.nbPreys = nbPreys; + this.nbPredators = nbPredators; + + this.grass = IntBuffer.allocate(size * size); + this.preys = IntBuffer.allocate(size * size); + this.predators = IntBuffer.allocate(size * size); + + this.rngList = new RandomState[size * size]; + this.world = new PPWorld(); + } + + public void prepare(MCMContext context) { + this.program = MCMUtils.compileFile(context, "kernels/preypredators2.cl"); + this.grassKernel = program.createKernel("live_grass"); + this.preysKernel = program.createKernel("live_preys"); + this.predatorsKernel = program.createKernel("live_predators"); + + Random random = new Random(); + + for (int i = 0; i < size * size; i++) { + rngList[i].a = random.nextLong(); + rngList[i].b = 0; + rngList[i].c = 362436; + } + + this.grassBuffer = context.newBuffer().Using(grass).b(); + this.preysBuffer = context.newBuffer().Using(preys).b(); + this.predatorsBuffer = context.newBuffer().Using(predators).b(); + this.rngListBuffer = context.newBuffer().Using(rngList).b(); + this.worldBuffer = context.newBuffer().Using(world).b(); + + grassKernel.setArguments(grassBuffer, rngListBuffer, worldBuffer); + preysKernel.setArguments(grassBuffer, preysBuffer, rngListBuffer, worldBuffer); + predatorsKernel.setArguments(preysBuffer, predatorsBuffer, rngListBuffer, worldBuffer); + } + + public void run(MCMCommandQueue queue, int iterations) { + + MCMEvent grassFinished = queue.enqueue1DKernel(grassKernel, size * size); + MCMEvent preysFinished = queue.enqueue1DKernel(preysKernel, size * size, grassFinished); + MCMEvent predatorsFinished = queue.enqueue1DKernel(predatorsKernel, size * size, preysFinished); + } + + public MCMEvent[] copyDataOnGPU(MCMCommandQueue queue) { + MCMEvent e1 = queue.enqueueWriteBuffer(grassBuffer, Pointer.to(grass), 0, grassBuffer.getSize()); + MCMEvent e2 = queue.enqueueWriteBuffer(preysBuffer, Pointer.to(preys), 0, preysBuffer.getSize()); + MCMEvent e3 = queue.enqueueWriteBuffer(predatorsBuffer, Pointer.to(predators), 0, predatorsBuffer.getSize()); + MCMEvent e4 = queue.enqueueWriteBuffer(rngListBuffer, rngList, 0, rngListBuffer.getSize()); + MCMEvent e5 = queue.enqueueWriteBuffer(worldBuffer, new PPWorld [] { world }, 0, worldBuffer.getSize()); + + return new MCMEvent[] { e1, e2, e3, e4, e5 }; + } + + public void copyDataFromGPU(MCMCommandQueue queue) { + + } + + public void release() { + grassBuffer.release(); + preysBuffer.release(); + predatorsBuffer.release(); + rngListBuffer.release(); + worldBuffer.release(); + + predatorsKernel.release(); + preysKernel.release(); + grassKernel.release(); + program.release(); + } + + +} diff --git a/src/preypredator/PPGrid.java b/src/preypredator/PPGrid.java new file mode 100644 index 0000000..2bb9b2e --- /dev/null +++ b/src/preypredator/PPGrid.java @@ -0,0 +1,11 @@ +package preypredator; + +import mcmas.utils.IntMatrix; + +public class PPGrid extends IntMatrix { + + public PPGrid(int width, int height) { + super(width, height); + } + +} diff --git a/src/preypredator/PPRuntime.java b/src/preypredator/PPRuntime.java new file mode 100644 index 0000000..340c250 --- /dev/null +++ b/src/preypredator/PPRuntime.java @@ -0,0 +1,13 @@ +package preypredator; + +public interface PPRuntime { + + public void growGrass(PPGrid grass, float factor, int growth, int min, int max); + + public void selectMaxTarget(PPGrid grid, int radius, int[] xPositions, + int[] yPositions, int[] newXPositions, int[] newYPositions); + + public void selectNearestNonZeroTarget(PPGrid grid, int radius, int[] xPositions, + int[] yPositions, int[] newXPositions, int[] newYPositions); + +} \ No newline at end of file diff --git a/src/preypredator/PPRuntimeCPU.java b/src/preypredator/PPRuntimeCPU.java new file mode 100644 index 0000000..a6a9234 --- /dev/null +++ b/src/preypredator/PPRuntimeCPU.java @@ -0,0 +1,119 @@ +package preypredator; + +public class PPRuntimeCPU implements PPRuntime { + + @Override + public void growGrass(PPGrid grass, float factor, int growth, int min, int max) { + final int[] storage = grass.getStorage(); + + for (int i = 0; i < storage.length; i++) { + storage[i] = Math.max(min, Math.max(max, (int) (factor * storage[i] + growth))); + } + } + + @Override + public void selectMaxTarget(PPGrid grid, int radius, int[] xPositions, + int[] yPositions, int[] newXPositions, int[] newYPositions) { + + PPTargetFilter maxFilter = new PPTargetFilter() { + + private int max = Integer.MIN_VALUE; + + @Override + public boolean examineTarget(int x, int y, int value) { + if (value > max) { + this.max = value; + this.x = x; + this.y = y; + } + return false; + } + }; + + selectTarget(grid, radius, maxFilter, xPositions, yPositions, newXPositions, newYPositions); + } + + @Override + public void selectNearestNonZeroTarget(PPGrid grid, int radius, + int[] xPositions, int[] yPositions, int[] newXPositions, + int[] newYPositions) { + + PPTargetFilter nonZeroFilter = new PPTargetFilter() { + + @Override + public boolean examineTarget(int x, int y, int value) { + if (value != 0) { + this.x = x; + this.y = y; + return true; + } + + return false; + } + }; + + selectTarget(grid, radius, nonZeroFilter, xPositions, yPositions, newXPositions, newYPositions); + } + + public void selectTarget(PPGrid grid, int radius, PPTargetFilter filter, int[] xPositions, + int[] yPositions, int[] newXPositions, int[] newYPositions) { + + for (int index = 0; index < xPositions.length; index++) { + final int x = xPositions[index]; + final int y = yPositions[index]; + + int i = -1; + int j = -1; + boolean finished = false; + + for (int r = 1; r <= radius; r++) { + + j = y - r; + for (i = x - r; i < x + r; i++) { + if (i < 0 || i >= grid.getWidth() || j < 0 || j >= grid.getHeight()) { + continue; + } + + finished = filter.examineTarget(i, j, grid.get(i, j)); + if (finished) break; + } + + i = x + r; + for (j = y - r; j < y + r; j++) { + if (i < 0 || i >= grid.getWidth() || j < 0 || j >= grid.getHeight()) { + continue; + } + + finished = filter.examineTarget(i, j, grid.get(i, j)); + if (finished) break; + } + + j = y + r; + for (i = x + r; i > x - r; i--) { + if (i < 0 || i >= grid.getWidth() || j < 0 || j >= grid.getHeight()) { + continue; + } + + finished = filter.examineTarget(i, j, grid.get(i, j)); + if (finished) break; + } + + i = x - r; + for (j = y + r; j > y - r; j--) { + if (i < 0 || i >= grid.getWidth() || j < 0 || j >= grid.getHeight()) { + continue; + } + + finished = filter.examineTarget(i, j, grid.get(i, j)); + if (finished) break; + } + + if (finished) break; + } + + newXPositions[index] = filter.x; + newYPositions[index] = filter.y; + } + } + +} diff --git a/src/preypredator/PPRuntimeGPU.java b/src/preypredator/PPRuntimeGPU.java new file mode 100644 index 0000000..6f2d656 --- /dev/null +++ b/src/preypredator/PPRuntimeGPU.java @@ -0,0 +1,41 @@ +package preypredator; + +import mcmas.api.ContextType; +import mcmas.api.MCMASContext; +import mcmas.core.MCMCommandQueueProperty; +import mcmas.plugins.axb.AXBPlugin; +import mcmas.plugins.gridsearch.GridSearchPlugin; + + +public class PPRuntimeGPU implements PPRuntime { + + private final MCMASContext context; + private final AXBPlugin axbPlugin; + private final GridSearchPlugin searchPlugin; + + public PPRuntimeGPU(ContextType type) { + this.context = new MCMASContext(type, MCMCommandQueueProperty.ENABLE_PROFILING); + this.axbPlugin = new AXBPlugin(context); + this.searchPlugin = new GridSearchPlugin(context); + } + + @Override + public void growGrass(PPGrid grass, float factor, int growth, int min, int max) { + axbPlugin.clampedTransform(grass.getStorage(), factor, growth, min, max); + } + + @Override + public void selectMaxTarget(PPGrid grid, int radius, int[] xPositions, + int[] yPositions, int[] newXPositions, + int[] newYPositions) { + searchPlugin.findMaxCell(grid, radius, xPositions, yPositions, newXPositions, newYPositions); + } + + @Override + public void selectNearestNonZeroTarget(PPGrid grid, int radius, + int[] xPositions, int[] yPositions, int[] newXPositions, + int[] newYPositions) { + // TODO Auto-generated method stub + } + +} diff --git a/src/preypredator/PPTargetFilter.java b/src/preypredator/PPTargetFilter.java new file mode 100644 index 0000000..b38fe72 --- /dev/null +++ b/src/preypredator/PPTargetFilter.java @@ -0,0 +1,17 @@ +package preypredator; + +public abstract class PPTargetFilter { + + public int x; + public int y; + public boolean finished; + + public PPTargetFilter() { + this.x = -1; + this.y = -1; + this.finished = false; + } + + public abstract boolean examineTarget(int x, int y, int value); + +} diff --git a/src/preypredator/PPWorld.java b/src/preypredator/PPWorld.java new file mode 100644 index 0000000..30b95d7 --- /dev/null +++ b/src/preypredator/PPWorld.java @@ -0,0 +1,39 @@ +package preypredator; + +import org.jocl.struct.Struct; + +public class PPWorld extends Struct { + + public int worldSize; + + public float grassMin; + public float grassMax; + public float grassOrig; + public float grassFactor; + + public float preyOrig; + public float preyMax; + public float preyConsum; + + public float preyMaxEnergy; + public float preyMaxTransfer; + + public float predConsum; + public float predMaxEnergy; + public float predMaxTransfer; + + + public static final float GRASS_MIN = 0; + public static final float GRASS_MAX = 100; + public static final float GRASS_ORIG = 20; + public static final float GRASS_FACT = 1.1f; + + public static final float PREY_ORIG = 10; + public static final int PREY_RADIUS = 5; + public static final int PREY_MAX = 100; + + public static final float PRED_ORIG = 10; + public static final int PRED_RADIUS = 5; + public static final int PRED_MAX = 100; + +} diff --git a/src/preypredator/PreyPredator.java b/src/preypredator/PreyPredator.java new file mode 100644 index 0000000..dea1038 --- /dev/null +++ b/src/preypredator/PreyPredator.java @@ -0,0 +1,182 @@ +package preypredator; +import it.unimi.dsi.fastutil.ints.IntArrayList; + +import java.util.Random; + +//import mcsma.utils.IntMatrix; + +public class PreyPredator { + + public static final int WIDTH = 10; + public static final int HEIGHT = 10; + + public static final float GRASS_MIN = 0; + public static final float GRASS_MAX = 100; + public static final float GRASS_ORIG = 20; + public static final float GRASS_FACT = 1.1f; + + public static final float PREY_ORIG = 10; + public static final int PREY_RADIUS = 5; + public static final int PREY_MAX = 100; + + public static final float PRED_ORIG = 10; + public static final int PRED_RADIUS = 5; + public static final int PRED_MAX = 100; + + // Attributes + + private final float[] grass; + private final float[] preys; + private final float[] preds; + + + // Temporary buffers used in each step + + private final IntArrayList preysX; + private final IntArrayList preysY; + private final IntArrayList predsX; + private final IntArrayList predsY; + + private final PPRuntime runtime; + + public PreyPredator(int nbPreys, int nbPredators, PPRuntime runtime) { + this.grass = new float[WIDTH * HEIGHT]; + this.preys = new float[WIDTH * HEIGHT]; + this.preds = new float[WIDTH * HEIGHT]; + + initGrid(grass, 50, GRASS_ORIG); + initGrid(preys, 20, PREY_ORIG); + initGrid(preds, 10, PRED_ORIG); + + this.preysX = new IntArrayList(); + this.preysY = new IntArrayList(); + this.predsX = new IntArrayList(); + this.predsY = new IntArrayList(); + + this.runtime = runtime; + } + + public void setup() { + for (int j = 0; j < HEIGHT; j++) { + for (int i = 0; i < WIDTH; i++) { + if (preys[j * WIDTH + i] > 0) { + preysX.add(i); + preysY.add(j); + } + + if (preds[j * WIDTH + i] > 0) { + predsX.add(i); + predsY.add(j); + } + } + } + } + + public void step() { + //runtime.growGrass(grass, GRASS_FACT, GRASS_MIN, GRASS_MAX); + + for (int i = 0; i < HEIGHT; i++) { + for (int j = 0; j < WIDTH; j++) { + if (preys[i * WIDTH + j] > 0) { + preysX.add(i); + preysY.add(j); + } + + if (preds[i * WIDTH + j] > 0) { + predsX.add(i); + predsY.add(j); + } + } + } + + int[] newPreysX = new int[preysX.size()]; + int[] newPreysY = new int[preysY.size()]; + int[] newPredsX = new int[predsX.size()]; + int[] newPredsY = new int[predsY.size()]; + + + /*runtime.selectMaxTarget(preys, PREY_RADIUS, + preysX.toIntArray(), preysY.toIntArray(), + newPreysX, newPreysY); + + runtime.selectMaxTarget(preds, PRED_RADIUS, + predsX.toIntArray(), predsY.toIntArray(), + newPredsX, newPredsY); + */ + + // PREYS + + for (int i = 0; i < preysX.size(); i++) { + final int pos = preysY.get(i) * WIDTH + preysX.get(i); + final int newPos = newPreysY[i] * WIDTH + newPreysX[i]; + + // Check an eventual conflict with another prey + if (preys[newPos] > 0) { + continue; + } + + // Movement + preys[newPos] = preys[pos]; + preys[pos] = 0; + + // Eating + if (grass[newPos] >= 0) { + preys[newPos] = clamp(preys[newPos] + grass[newPos], 0, PREY_MAX); + grass[newPos] = 0; + } + + // Reproduction + if (preys[newPos] == PREY_MAX) { + preys[pos] = PREY_ORIG; + } + } + + // PREDATOR + + for (int i = 0; i < predsX.size(); i++) { + final int pos = predsY.get(i) * WIDTH + predsX.get(i); + final int newPos = newPredsY[i] * WIDTH + newPredsX[i]; + + // Check an eventual conflict with another predator + if (preds[newPos] > 0) { + continue; + } + + // Movement + preds[newPos] = preds[pos]; + preds[pos] = 0; + + // Eating + if (preys[newPos] >= 0) { + preds[newPos] = clamp(preds[newPos] + preys[newPos], 0, PRED_MAX); + preys[newPos] = 0; + } + + // Reproduction + if (preds[newPos] == PRED_MAX) { + preds[pos] = PRED_ORIG; + } + } + + } + + private void initGrid(float[] grid, int nbCells, float value) { + int remainingCells = nbCells; + Random rng = new Random(); + + while (remainingCells > 0) { + final int pos = rng.nextInt(grid.length); + + if (grid[pos] == 0) { + grid[pos] = value; + remainingCells--; + } + } + } + + // Helpers + private float clamp(float value, float min, float max) { + return Math.max(min, Math.min(value, max)); + } + +} \ No newline at end of file diff --git a/src/preypredator/PreyPredator2.java b/src/preypredator/PreyPredator2.java new file mode 100644 index 0000000..7a067e3 --- /dev/null +++ b/src/preypredator/PreyPredator2.java @@ -0,0 +1,302 @@ +package preypredator; +import it.unimi.dsi.fastutil.ints.IntArrayList; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Random; + +import org.perf4j.StopWatch; +import org.perf4j.slf4j.Slf4JStopWatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import joptsimple.OptionParser; +import joptsimple.OptionSet; +import mcmas.api.ContextType; + +public class PreyPredator2 { + + private final static Logger logger = LoggerFactory.getLogger(PreyPredator2.class); + private final StopWatch watch = new Slf4JStopWatch(); + private final StopWatch runWatch = new Slf4JStopWatch(); + + //public static final int WIDTH = 1000; + //public static final int HEIGHT = 1000; + + public static final int GRASS_MIN = 0; + public static final int GRASS_MAX = 100; + public static final int GRASS_ORIG = 20; + public static final float GRASS_FACT = 1.0f; + public static final int GRASS_GROWTH = 10; + + public static final int PREY_ORIG = 10; + //public static final int PREY_RADIUS = 20; + public static final int PREY_MAX = 50; + + public static final int PRED_ORIG = 10; + //public static final int PRED_RADIUS = 20; + public static final int PRED_MAX = 100; + + // Attributes + + private final PPGrid grass; + private final PPGrid preys; + private final PPGrid preds; + + + // Temporary buffers used in each step + + private final IntArrayList preysX; + private final IntArrayList preysY; + private final IntArrayList predsX; + private final IntArrayList predsY; + + private final int nbPreds; + private final int nbPreys; + private final int range; + private final PPRuntime runtime; + + //OCLChrono chrono = new OCLChrono("preypredator"); + + private final int size; + + public PreyPredator2(int size, int nbPreys, int nbPredators, int range, PPRuntime runtime) { + this.grass = new PPGrid(size, size); + this.preys = new PPGrid(size, size); + this.preds = new PPGrid(size, size); + + this.size = size; + this.nbPreds = nbPredators; + this.nbPreys = nbPreys; + this.range = range; + + this.preysX = new IntArrayList(); + this.preysY = new IntArrayList(); + this.predsX = new IntArrayList(); + this.predsY = new IntArrayList(); + + this.runtime = runtime; + } + + public void setup() { + watch.start("pp_setup"); + initGrid(grass.getStorage(), (int) (grass.getStorage().length * 0.8), GRASS_ORIG); + initGrid(preys.getStorage(), nbPreys, PREY_ORIG); + initGrid(preds.getStorage(), nbPreds, PRED_ORIG); + watch.stop(); + } + + public void update_positions() { + //chrono.start("update_positions"); + + preysX.clear(); + preysY.clear(); + predsX.clear(); + predsY.clear(); + + for (int j = 0; j < size; j++) { + for (int i = 0; i < size; i++) { + if (preys.get(i, j) > 0) { + preysX.add(i); + preysY.add(j); + } + + if (preds.get(i, j) > 0) { + predsX.add(i); + predsY.add(j); + } + } + } + + //System.out.println(chrono.stop()); + } + + public void step() { + watch.start("pp_step"); + //OCLChrono stepChrono = new OCLChrono("step"); + //stepChrono.start(); + + update_positions(); + + runWatch.start("pp_grass"); + runtime.growGrass(grass, GRASS_FACT, GRASS_GROWTH, GRASS_MIN, GRASS_MAX); + runWatch.stop(); + + int[] newPreysX = new int[preysX.size()]; + int[] newPreysY = new int[preysY.size()]; + int[] newPredsX = new int[predsX.size()]; + int[] newPredsY = new int[predsY.size()]; + + runWatch.start("pp_move_preys"); + if (preysX.size() > 0) { + + runtime.selectMaxTarget(grass, range, + preysX.toIntArray(), preysY.toIntArray(), + newPreysX, newPreysY); + } + runWatch.stop(); + + /* + for (int i = 0; i < preysX.size(); i++) { + System.out.println("Prey: (" + preysX.get(i) + ", " + preysY.get(i) + ") => (" + + newPreysX[i] + ", " + newPreysY[i] + ")"); + }*/ + + // PREYS + + for (int i = 0; i < preysX.size(); i++) { + final int oldPos = preys.offset(preysX.get(i), preysY.get(i)); + final int newPos = preys.offset(newPreysX[i], newPreysY[i]); + + // Check an eventual conflict with another prey + if (preys.get(newPos) > 0) { + continue; + } + + // Movement + preys.set(newPos, preys.get(oldPos)); + preys.set(oldPos, 0); + + // Eating + if (grass.get(newPos) >= 0) { + preys.set(newPos, clamp(preys.get(newPos) + grass.get(newPos), 0, PREY_MAX)); + grass.set(newPos, 0); + } + + // Reproduction + if (preys.get(newPos) == PREY_MAX) { + preys.set(oldPos, PREY_ORIG); + } + } + + runWatch.start("pp_move_preds"); + if (predsX.size() > 0) { + int [] predsXbis = predsX.toIntArray(); + int [] predsYbis = predsY.toIntArray(); + + runtime.selectMaxTarget(preys, (int) Math.round(range * 1.5), + predsXbis, predsYbis, + newPredsX, newPredsY); + } + runWatch.stop(); + + /*for (int i = 0; i < predsX.size(); i++) { + System.out.println("Pred: (" + predsX.get(i) + ", " + predsY.get(i) + ") => (" + + newPredsX[i] + ", " + newPredsY[i] + ")"); + }*/ + + // PREDATOR + + for (int i = 0; i < predsX.size(); i++) { + final int pos = predsY.get(i) * size + predsX.get(i); + final int newPos = newPredsY[i] * size + newPredsX[i]; + + // Check an eventual conflict with another predator + if (preds.get(newPos) > 0) { + continue; + } + + // Movement + preds.set(newPos, preds.get(pos)); + preds.set(pos, 0); + + // Eating + if (preys.get(newPos) >= 0) { + preds.set(newPos, clamp(preds.get(newPos) + preys.get(newPos), 0, PRED_MAX)); + preys.set(newPos, 0); + } + + // Reproduction + if (preds.get(newPos) == PRED_MAX) { + preds.set(pos, PRED_ORIG); + } + } + + /*System.out.println(grass); + System.out.println(preys);*/ + //System.out.println(preds); + //logger.info(stepChrono.stop().toString()); + watch.stop(); + } + + private void initGrid(int[] grid, int nbCells, int value) { + int remainingCells = nbCells; + Random rng = new Random(); + + while (remainingCells > 0) { + final int pos = rng.nextInt(grid.length); + + if (grid[pos] == 0) { + grid[pos] = value; + remainingCells--; + } + } + } + + // Helpers + private int clamp(int value, int min, int max) { + return Math.max(min, Math.min(value, max)); + } + + public static void main(String[] args) { + OptionParser parser = new OptionParser(); + + parser.acceptsAll(Arrays.asList("g", "gpu"), "Enable GPU context") + .withOptionalArg().ofType(Boolean.class).defaultsTo(true); + + parser.acceptsAll(Arrays.asList("h", "help"), "Print this help"); + + parser.accepts("size", "Size of the grid (side)").withRequiredArg() + .ofType(Integer.class).defaultsTo(1000); + + parser.accepts("preys", "Number of Preys to use").withRequiredArg() + .ofType(Integer.class).defaultsTo(10000); + + parser.accepts("preds", "Number of Predators to use").withRequiredArg() + .ofType(Integer.class).defaultsTo(5000); + + parser.accepts("range", "Range to use for preys (x 1.5 for predators)").withRequiredArg() + .ofType(Integer.class).defaultsTo(100); + + OptionSet options = parser.parse(args); + + if (options.has("help")) { + try { + parser.printHelpOn(System.out); + return; + } catch (IOException e) { + System.err.println("Failed to print help to standard output"); + e.printStackTrace(); + } + } + + PPRuntime runtime; + + if ((Boolean) (options.valueOf("gpu"))) { + logger.info("Use GPU Runtime"); + runtime = new PPRuntimeGPU(ContextType.ALL); + } else { + logger.info("Use CPU Runtime"); + runtime = new PPRuntimeCPU(); + } + + int size = (Integer) options.valueOf("size"); + int nbPreys = (Integer) options.valueOf("preys"); + int nbPreds = (Integer) options.valueOf("preds"); + int range = (Integer) options.valueOf("range"); + + logger.info( + "size: " + size + ", nbPreys: " + nbPreys + ", nbPreds: " + nbPreds + ", range: " + range + ); + + //PPRuntime runtime = new PPRuntimeGPU(ContextType.ALL); + //PPRuntime runtime = new PPRuntimeCPU(); + PreyPredator2 simulation = new PreyPredator2(size, nbPreys, nbPreds, range, runtime); + simulation.setup(); + + for (int i = 0; i < 50; i++) { + simulation.step(); + } + } + +} \ No newline at end of file diff --git a/src/preypredator/Test.java b/src/preypredator/Test.java new file mode 100644 index 0000000..052d004 --- /dev/null +++ b/src/preypredator/Test.java @@ -0,0 +1,40 @@ +package preypredator; + +import java.util.Random; + +public class Test { + + public static final int grassDelay = 100; + public static final int preyGain = 50; + public static final int predGain = 50; + public static final float preyRepro = 0.2f; + public static final float predRepro = 0.1f; + + public int[][] grass; + public int[][] grassCounters; + + public int[][] preys; + public int[][] preds; + + public Test() { + Random rng = new Random(); + + for (int i = 0; i < grass.length; i++) { + for (int j = 0; j < grass[i].length; j++) { + if (rng.nextBoolean()) { + grass[i][j] = 1; + grassCounters[i][j] = grassDelay; + } else { + grass[i][j] = 0; + grassCounters[i][j] = rng.nextInt(grassDelay); + } + } + } + + + } + + public static void main(String[] args) { + } + +} diff --git a/utils/bench_all.sh b/utils/bench_all.sh new file mode 100755 index 0000000..89baca6 --- /dev/null +++ b/utils/bench_all.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Ensure all files are executable +chmod +x ./utils/*.sh +chmod +x ./utils/mcmas/*.sh + +# RUN MIOR BENCH + +# One MIOR simulation, varying scales +./utils/bench_mior.sh + +# Repeat N MIOR simulations, varying scales +./utils/bench_mior_batch.sh + +# Launch N MIOR simulations at the same time +./utils/bench_mior_para.sh + +# Launch N MIOR simulations by packet +./utils/bench_mior_para_size.sh + +# RUN COLLEM BENCH +./utils/bench_collem.sh + +# RUN PREYPREDATOR BENCH +./utils/bench_preypredator.sh diff --git a/utils/bench_collem.sh b/utils/bench_collem.sh new file mode 100755 index 0000000..69fcf62 --- /dev/null +++ b/utils/bench_collem.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +RUN_COMMAND="utils/run_collem.sh" +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_collem/$BENCH_DATE" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +# Store platform informations +utils/mcmas/infos.sh $DEST_DIR + +PERFS_OUTPUT="$DEST_DIR/perf_collem_$BENCH_DATE.txt" + +for i in $(seq 1 25); do + OUTPUT="$DEST_DIR/output_collem_$BENCH_DATE_$i.txt" + echo "# $@" >> $OUTPUT + + $RUN_COMMAND -n 500 --scale $i &>> $OUTPUT + + # Filter full output to only keep performance-related informations + echo -n "$i " >> $PERFS_OUTPUT + grep 'platform name' $OUTPUT | sed -e 's/^/# /' >> $PERFS_OUTPUT + grep 'platform vendor' $OUTPUT | sed -e 's/^/# /' >> $PERFS_OUTPUT + grep 'totalTime' $OUTPUT | cut -d' ' -f10 >> $PERFS_OUTPUT +done diff --git a/utils/bench_mior.sh b/utils/bench_mior.sh new file mode 100755 index 0000000..c2a9359 --- /dev/null +++ b/utils/bench_mior.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +NB_ITERATIONS=50 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +# Store platform informations +utils/mcmas/infos.sh $DEST_DIR + +function run_cpu_sim() +{ + local scale=$1 + local data="${DEST_DIR}/data_cpu_${scale}.txt" + local output="${DEST_DIR}/results_cpu.txt" + + $RUN_COMMAND --repeat $NB_ITERATIONS --n 1 --scale $scale --output $data \ + --java --prefix $scale | tee -a $output +} + +function run_gpu_sim() +{ + local scale=$1 + local version=$2 + local data="${DEST_DIR}/data_gpu${version}_${scale}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + $RUN_COMMAND --repeat $NB_ITERATIONS --n 1 --scale $scale --output $data \ + --version $version --prefix $scale | tee -a $output +} + +function run_all_sims() +{ + local scale=$1 + + echo "## SCALE $scale ##" + + echo "== CPU ==" + run_cpu_sim $scale + + echo "== GPU v2.0 ==" + run_gpu_sim $scale 2 + + echo "== GPU v3.0 ==" + run_gpu_sim $scale 3 + + echo "== GPU v4.0 ==" + run_gpu_sim $scale 4 + + echo "== GPU v5.0 ==" + run_gpu_sim $scale 5 +} + +for scale in $(seq 1 30); do + run_all_sims $scale +done diff --git a/utils/bench_mior_batch.sh b/utils/bench_mior_batch.sh new file mode 100755 index 0000000..ca2e593 --- /dev/null +++ b/utils/bench_mior_batch.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +BATCH_SIZE=50 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_batch/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +echo $0 > $DEST_DIR/cmd + +# Store platform informations +utils/mcmas/infos.sh $DEST_DIR + +function run_cpu_sim() +{ + local scale=$1 + local data="${DEST_DIR}/data_cpu_${scale}.txt" + local output="${DEST_DIR}/results_cpu.txt" + + $RUN_COMMAND -b $BATCH_SIZE -s $scale -d $data -p $scale -j | tee -a $output +} + +function run_gpu_sim() +{ + local scale=$1 + local version=$2 + local data="${DEST_DIR}/data_gpu${version}_${scale}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + $RUN_COMMAND --repeat $BATCH_SIZE --scale $scale --output $data \ + --prefix $scale --version $version | tee -a $output +} + +function run_all_sims() +{ + local scale=$1 + + echo "## SCALE $scale ##" + + echo "== CPU ==" + run_cpu_sim $scale + + echo "== GPU v2.0 ==" + run_gpu_sim $scale 2 + + echo "== GPU v3.0 ==" + run_gpu_sim $scale 3 + + echo "== GPU v4.0 ==" + run_gpu_sim $scale 4 + + echo "== GPU v5.0 ==" + run_gpu_sim $scale 5 +} + +for scale in $(seq 1 30); do + run_all_sims $scale +done diff --git a/utils/bench_mior_para.sh b/utils/bench_mior_para.sh new file mode 100755 index 0000000..dde8646 --- /dev/null +++ b/utils/bench_mior_para.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +NB_TIMES=50 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_para/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +# Store platform informations +utils/mcmas/infos.sh $DEST_DIR + +function run_gpu_sim() +{ + local nbTimes=$1 + local nbSimulations=$2 + local version=$3 + local data="${DEST_DIR}/data_gpu${version}_${nbSimulations}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + # Run N simulations in one go (nbSimulations == kernelSize) + $RUN_COMMAND --repeat $nbTimes --nbSimulations $nbSimulations \ + --kernelSize $nbSimulations --output $data --version $version \ + --prefix $nbSimulations | tee -a $output +} + +function run_all_sims() +{ + local nbTimes=$1 + local nbSimulations=$2 + + echo "## SIZE $nbSimulations ##" + + echo "== GPU v6.0 ==" + run_gpu_sim $nbTimes $nbSimulations 6 + + echo "== GPU v7.0 ==" + run_gpu_sim $nbTimes $nbSimulations 7 + +# echo "== GPU v9.0 ==" +# run_gpu_sim $nbTimes $nbSimulations 9 +} + +for mul in $(seq 1 100); do + run_all_sims $NB_TIMES $mul +done + +touch $DEST_DIR/finished diff --git a/utils/bench_mior_para_size.sh b/utils/bench_mior_para_size.sh new file mode 100755 index 0000000..1fba72b --- /dev/null +++ b/utils/bench_mior_para_size.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +NB_TIMES=20 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_para_size/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +echo $0 > $DEST_DIR/cmd + +# Store platform informations + + +utils/mcmas/infos.sh $DEST_DIR + +function run_gpu_sim() +{ + local kernelSize=$1 + local nbSimulations=$2 + local version=$3 + local data="${DEST_DIR}/data_gpu${version}_${nbSimulations}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + # Run N simulations in (N / kernelSize) steps + $RUN_COMMAND --repeat $NB_TIMES --nbSimulations $nbSimulations \ + --kernelSize $groupSize --output $data --version $version --prefix $kernelSize >> $output +} + +function run_all_sims() +{ + local groupSize=$2 + local nbSimulations=$1 + + echo "## SIZE $nbSimulations (groupSize: $groupSize) ##" + + echo "== GPU v6.0 ==" + run_gpu_sim $groupSize $nbSimulations 6 + + echo "== GPU v7.0 ==" + run_gpu_sim $groupSize $nbSimulations 7 +} + +for groupSize in $(seq 1 10) $(seq 20 10 100); do + run_all_sims 10000 $groupSize +done + +touch $DEST_DIR/finished diff --git a/utils/bench_preypredator.sh b/utils/bench_preypredator.sh new file mode 100755 index 0000000..347e3d0 --- /dev/null +++ b/utils/bench_preypredator.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +RUN_COMMAND="utils/run_preypredator.sh" +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_pp/$BENCH_DATE" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +# Store platform informations +utils/mcmas/infos.sh $DEST_DIR + +OUTPUT_CPU="$DEST_DIR/perf_preypredator_cpu.txt" +OUTPUT_GPU="$DEST_DIR/perf_preypredator_gpu.txt" + +for i in $(seq 10 5 100); do + + echo "# $@" >> $OUTPUT_CPU + echo "# RANGE: $r" >> $OUTPUT_CPU + $RUN_COMMAND --gpu false --range $i &>> $OUTPUT_CPU + + echo "# $@" >> $OUTPUT_GPU + echo "# RANGE: $r" >> $OUTPUT_GPU + $RUN_COMMAND --gpu true --range $i &>> $OUTPUT_GPU + +done diff --git a/utils/benchs.sh b/utils/benchs.sh new file mode 100755 index 0000000..eb3f75c --- /dev/null +++ b/utils/benchs.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +BATCH_SIZE=50 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +function run_cpu_sim() +{ + local scale=$1 + local data="${DEST_DIR}/data_cpu_${scale}.txt" + local output="${DEST_DIR}/results_cpu.txt" + + $RUN_COMMAND -n $BATCH_SIZE -s $scale -o $data -j -p $scale | tee -a $output +} + +function run_gpu_sim() +{ + local scale=$1 + local version=$2 + local data="${DEST_DIR}/data_gpu${version}_${scale}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + $RUN_COMMAND -n $BATCH_SIZE -s $scale -o $data -v $version -p $scale | tee -a $output +} + +function run_all_sims() +{ + local scale=$1 + + echo "## SCALE $scale ##" + + echo "== CPU ==" + run_cpu_sim $scale + + echo "== GPU v2.0 ==" + run_gpu_sim $scale 2 + + echo "== GPU v3.0 ==" + run_gpu_sim $scale 3 + + echo "== GPU v4.0 ==" + run_gpu_sim $scale 4 + + echo "== GPU v5.0 ==" + run_gpu_sim $scale 5 +} + +for scale in $(seq 1 30); do + run_all_sims $scale +done diff --git a/utils/benchs_batch.sh b/utils/benchs_batch.sh new file mode 100644 index 0000000..29b0dce --- /dev/null +++ b/utils/benchs_batch.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +BATCH_SIZE=50 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_batch/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +function run_cpu_sim() +{ + local scale=$1 + local data="${DEST_DIR}/data_cpu_${scale}.txt" + local output="${DEST_DIR}/results_cpu.txt" + + $RUN_COMMAND -b $BATCH_SIZE -s $scale -d $data -p $scale -j | tee -a $output +} + +function run_gpu_sim() +{ + local scale=$1 + local version=$2 + local data="${DEST_DIR}/data_gpu${version}_${scale}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + $RUN_COMMAND -b $BATCH_SIZE -s $scale -d $data -p $scale -v $version | tee -a $output +} + +function run_all_sims() +{ + local scale=$1 + + echo "## SCALE $scale ##" + + echo "== CPU ==" + run_cpu_sim $scale + + echo "== GPU v2.0 ==" + run_gpu_sim $scale 2 + + echo "== GPU v3.0 ==" + run_gpu_sim $scale 3 + + echo "== GPU v4.0 ==" + run_gpu_sim $scale 4 + + echo "== GPU v5.0 ==" + run_gpu_sim $scale 5 +} + +for scale in $(seq 1 30); do + run_all_sims $scale +done diff --git a/utils/benchs_para.sh b/utils/benchs_para.sh new file mode 100755 index 0000000..2089c68 --- /dev/null +++ b/utils/benchs_para.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +BATCH_SIZE=50 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_para/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +function run_gpu_sim() +{ + local batchSize=$1 + local nbSimulations=$2 + local version=$3 + local data="${DEST_DIR}/data_gpu${version}_${nbSimulations}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + $RUN_COMMAND -b $batchSize -n $nbSimulations -o $data -v $version -p $nbSimulations | tee -a $output +} + +function run_all_sims() +{ + local batchSize=$1 + local nbSimulations=$2 + + echo "## SIZE $nbSimulations ##" + + echo "== GPU v6.0 ==" + run_gpu_sim $batchSize $nbSimulations 6 + + echo "== GPU v7.0 ==" + run_gpu_sim $batchSize $nbSimulations 7 +} + +for mul in $(seq 1 100); do + run_all_sims $BATCH_SIZE $mul +done + +touch $DEST_DIR/finished diff --git a/utils/benchs_para_size.sh b/utils/benchs_para_size.sh new file mode 100755 index 0000000..e879cd5 --- /dev/null +++ b/utils/benchs_para_size.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# BENCHMARK SETTINGS + +RUN_COMMAND=utils/run.sh +BATCH_SIZE=20 + +# ACTUAL CODE + +BENCH_DATE=$(date "+%Y%m%d_%H%M%S") +DEST_DIR="results_para_size/$BENCH_DATE" +PREFIX="" + +if [ ! -d $DEST_DIR ]; then + echo "=> Creating results directory ${DEST_DIR}" + mkdir -p $DEST_DIR +fi + +echo $0 > $DEST_DIR/cmd + +function run_gpu_sim() +{ + local totalSize=$1 + local kernelSize=$2 + local version=$3 + local data="${DEST_DIR}/data_gpu${version}_${nbSimulations}.txt" + local output="${DEST_DIR}/results_gpu${version}.txt" + + $RUN_COMMAND -b $BATCH_SIZE -n $totalSize --ks $kernelSize -o $data -v $version -p $kernelSize >> $output +} + +function run_all_sims() +{ + local batchSize=$1 + local nbSimulations=$2 + + echo "## SIZE $nbSimulations ##" + + echo "== GPU v6.0 ==" + run_gpu_sim $batchSize $nbSimulations 6 + + echo "== GPU v7.0 ==" + run_gpu_sim $batchSize $nbSimulations 7 +} + +#for mul in $(seq 1 100); do +for i in $(seq 1 10) $(seq 20 10 100); do + run_all_sims 10000 $mul +done + +touch $DEST_DIR/finished diff --git a/utils/cluster_deploy.sh b/utils/cluster_deploy.sh new file mode 100755 index 0000000..00cf589 --- /dev/null +++ b/utils/cluster_deploy.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +ant clean && ant jar +rsync -av --progress --exclude-from deploy_list . mesocomte0:WORK/OCL diff --git a/utils/cluster_results.sh b/utils/cluster_results.sh new file mode 100755 index 0000000..91447aa --- /dev/null +++ b/utils/cluster_results.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +HOST="mesoseq" +BASE="$HOST:WORK/OCL" + +rsync -avu --progress "$BASE/results" "$BASE/results_para" "$BASE/results_para_size" \ + "$BASE/results_collem" "$BASE/results_pp" cluster diff --git a/utils/debug.sh b/utils/debug.sh new file mode 100755 index 0000000..f4658dc --- /dev/null +++ b/utils/debug.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +CLASSPATH="build/jar/mcmas.jar:lib/*" + +# Make the JVM more verbose +# -verbose:gc -verbose:jni + +# Customize java.util.logging +# java -Djava.util.logging.config.file=log.properties + +# Control OpenCL profiling +# export OPENCL_PROFILE=1 +# export OPENCL_PROFILE_CONFIG=profiler_config.txt + +gdb --args java -classpath $CLASSPATH mior.controler.MiorLauncher $@ diff --git a/utils/mcmas/common.sh b/utils/mcmas/common.sh new file mode 100755 index 0000000..6509b28 --- /dev/null +++ b/utils/mcmas/common.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +CLASSPATH="build/jar/mcmas.jar:lib/*:lib/" +JAVA_OPTIONS+="-classpath $CLASSPATH" + +# Make the JVM more verbose +# JAVA_OPTIONS+=" -verbose:gc -verbose:jni" + +# Control OpenCL profiling +# export OPENCL_PROFILE=1 +# export OPENCL_PROFILE_CONFIG=profiler_config.txt + +TOTAL_MEMORY=$(free -m | grep 'Mem:' | awk '{print $2}') +JAVA_MEMORY=$(echo "0.8 * $TOTAL_MEMORY" | bc | cut -d. -f1) + +#echo $TOTAL_MEMORY +#echo $JAVA_MEMORY + +JAVA_OPTIONS+=" -Xmx${JAVA_MEMORY}m" + +JAVA="java $JAVA_OPTIONS" diff --git a/utils/mcmas/infos.sh b/utils/mcmas/infos.sh new file mode 100755 index 0000000..034cba1 --- /dev/null +++ b/utils/mcmas/infos.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +. "${BASH_SOURCE%/*}/common.sh" + +if [ $# -lt 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +DEST_DIR="$1" + +if [ ! -d $DEST_DIR ]; then + mkdir -p $DEST_DIR +fi + +cat /etc/issue > $DEST_DIR/platform_issue +uname -a > $DEST_DIR/platform_kernel +cat /proc/cpuinfo > $DEST_DIR/platform_cpuinfo +free -m > $DEST_DIR/platform_memory +$JAVA mcsma.core.OCLUtils > $DEST_DIR/platform_opencl diff --git a/utils/plot_pp.sh b/utils/plot_pp.sh new file mode 100755 index 0000000..54b23d4 --- /dev/null +++ b/utils/plot_pp.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ $# -ne 1 -o ! -d "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +RESULTS="$1" +PLOT_DIR="$(pwd)/" + +ruby "utils/pp_perfs.rb" "$RESULTS" + +cd $RESULTS +echo "Plotting performances for $RESULTS" +gnuplot $PLOT_DIR/pp_perfs.plt diff --git a/utils/plot_results.sh b/utils/plot_results.sh new file mode 100755 index 0000000..6404ce8 --- /dev/null +++ b/utils/plot_results.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +if [ $# -ne 1 -o ! -d "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +RESULTS="$1" +PLOT_DIR="$(pwd)/" + +cd $RESULTS +echo "Plotting performances for $RESULTS" +gnuplot $PLOT_DIR/mior_perfs_fr.plt + +#for model in cpu gpu2 gpu3 gpu4 gpu5; do +# for scale in $(seq 1 30); do +# input="data_${model}_${scale}.txt" +# echo "Plotting results for $input" +# gnuplot -e "call \"$PLOT_DIR/mior.plt\" \"$input\" \"${model}_${scale}\"" +# done +#done diff --git a/utils/plot_results_para.sh b/utils/plot_results_para.sh new file mode 100755 index 0000000..b863222 --- /dev/null +++ b/utils/plot_results_para.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +if [ $# -ne 1 -o ! -d "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +RESULTS="$1" +PLOT_DIR="$(pwd)" + +cd $RESULTS + +for f in results_gpu6.txt results_gpu7.txt; do + mv -v $f $f.old + grep -v PacketSize $f.old > $f +done + +echo "Plotting performances for $RESULTS" +gnuplot $PLOT_DIR/mior_perfs_para.plt + +#for model in cpu gpu2 gpu3 gpu4 gpu5; do +# for scale in $(seq 1 30); do +# input="data_${model}_${scale}.txt" +# echo "Plotting results for $input" +# gnuplot -e "call \"$PLOT_DIR/mior.plt\" \"$input\" \"${model}_${scale}\"" +# done diff --git a/utils/plot_results_para_size.sh b/utils/plot_results_para_size.sh new file mode 100755 index 0000000..c507473 --- /dev/null +++ b/utils/plot_results_para_size.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +if [ $# -ne 1 -o ! -d "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +RESULTS="$1" +PLOT_DIR="$(pwd)" + +cd $RESULTS + +for f in results_gpu6.txt results_gpu7.txt; do + mv -v $f $f.old + grep -v PacketSize $f.old > $f +done + +echo "Plotting performances for $RESULTS" +gnuplot $PLOT_DIR/mior_perfs_para_size.plt + +#for model in cpu gpu2 gpu3 gpu4 gpu5; do +# for scale in $(seq 1 30); do +# input="data_${model}_${scale}.txt" +# echo "Plotting results for $input" +# gnuplot -e "call \"$PLOT_DIR/mior.plt\" \"$input\" \"${model}_${scale}\"" +# done diff --git a/utils/pp_convert.rb b/utils/pp_convert.rb new file mode 100644 index 0000000..9a6ee8c --- /dev/null +++ b/utils/pp_convert.rb @@ -0,0 +1,28 @@ +#!/usr/bin/env ruby +# encoding: UTF-8 + +FIELDS = ["pp_grass", "pp_move_preys", "pp_move_preds", "pp_step"] + +stats = Hash.new + +ARGF.each_line do |line| + case line + when /preypredator.PreyPredator2/ + puts "# #{line}" + puts "# #{FIELDS.join(' ')}" + when /org.perf4j.TimingLogger/ + tag = line.scan(/tag\[(\w+)\]/).first[0] + time = line.scan(/time\[(\d+)\]/).first[0].to_i + + next if tag == "axb_transform" || tag =~ /^gridsearch_/ + + stats[tag] = time + + if tag == "pp_step" + puts stats.values_at(*FIELDS).join(" ") + stats.clear + end + + #puts "#{tag}: #{time}" + end +end diff --git a/utils/pp_perfs.rb b/utils/pp_perfs.rb new file mode 100644 index 0000000..526841a --- /dev/null +++ b/utils/pp_perfs.rb @@ -0,0 +1,57 @@ +#!/usr/bin/env ruby +# encoding: UTF-8 + +class String + def / other + File.join(self, other) + end +end + +def mean(values) + values.inject(:+) / values.size.to_f +end + +def parse_output(file) + values = Hash.new { |h, k| h[k] = [] } + range = 0 + + IO.foreach(file) do |line| + case line + when /range: (\d+)/ + range = $1 + when /pp_step/ + time = line.scan(/time\[(\d+)\]/).first.first.to_i + values[range] << time + end + end + + p values + + results = Hash.new + + values.each do |k, v| + p k, mean(v) + results[k] = mean(v) + end + + results +end + +unless ARGV.size == 1 + $stderr.puts "Usage: #$0 " + exit 1 +end + +DEST_DIR = ARGV.first + +cpu = parse_output(DEST_DIR / "perf_preypredator_cpu.txt") +gpu = parse_output(DEST_DIR / "perf_preypredator_gpu.txt") + +output = DEST_DIR / "perfs.txt" + +File.open(output, "w") do |out| + cpu.each_key do |key| + puts [key, cpu[key], gpu[key]].join(" ") + out.puts [key, cpu[key], gpu[key]].join(" ") + end +end diff --git a/utils/run.sh b/utils/run.sh new file mode 100755 index 0000000..6b627ae --- /dev/null +++ b/utils/run.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +source "utils/mcmas/common.sh" + +$JAVA mior.controler.MiorLauncher $@ diff --git a/utils/run_collem.sh b/utils/run_collem.sh new file mode 100755 index 0000000..4e96921 --- /dev/null +++ b/utils/run_collem.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +source "utils/mcmas/common.sh" + +$JAVA collembola.CollemSimulation2 $@ diff --git a/utils/run_preypredator.sh b/utils/run_preypredator.sh new file mode 100755 index 0000000..160bb52 --- /dev/null +++ b/utils/run_preypredator.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +CLASSPATH="build/jar/mcmas.jar:lib/*" + +LOGLEVEL=${LOGLEVEL:-INFO} + +#echo $LOGLEVEL + +if [[ `hostname` =~ "mesocomte" ]]; then + JAVA_OPTIONS="-Xmx8192m" +else + JAVA_OPTIONS="" +fi + +java $JAVA_OPTION -Dloglevel=$LOGLEVEL -Xss256m -classpath $CLASSPATH preypredator.PreyPredator2 $@

$M_OuJ)i8L2%c&j7*3E)P<5a`2$e}^gk)@4j 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�IE*;c$IF!rU z71@iZL}lsOx4&JuPt3qH4m z1zPRbs|wsuGIonWXNjW<{x8aPoA+^@u0u;p#F_==o-9`NB`hLOc$GmGR&6x%3i%%N za-^=+M7iwU7K=pur6qBfs1niqO#O7?NE5@Rk_eF*OjgywRr`#`5vcn+=xab(hM&vZ z2yK%I{p$3E?xO83H25_^oV+(vGrLqb6XO?)Qn2~suv~m@5DBK5a=3}3HXAw!nxTqzmD;zsM^i!R~?rb0_iFfh0pYBb68DDYI1} zEOh*|(tB$ns098lI=pAaVAIG*OWo0w0F-k^EiidxOv=iw>%)j9zV-8KH(~5KMfk@$ zMoJ>gB`@s}U1ay00NMGpf~pK0$Ni<*(z}p>#2z%aV)1cd1}8K;jFe|B@S@hH`B*xo z^qLsL^kc{rjG{QBm*5anXA{le!gV+moh~JJB`G-8B^*r=Q=y%@R^A>+9E0q{j{6B7 zon6~k(}MD8F@K5`{Z#n$_Z7C-CD3$%ZqhkfYPbu+jCj=h>$zydXwqC}+%kA@-pymM zHbO7~$`gv7?L#Y+n@Qugy60Eez^YV{>U$m)3U0xeu-Vi`89A29tfK1h+EisNo&7&7 z$5Klq%fir$UYd2wt1HsfD#B8J5k)dd9r?5A59UR=PEE(^y|Wjzt_Sd&H&())aziX?a(F{uXq4IZoRE&RVLOY zmyu5DKOpccp_Pu0tL`z6rX?T#Ca~*vvY@6hJecfXspd#*&D7Tm;2M$vsi5$Rk z`RHxOR3wcsrl=$Xph zP=O_y-U)>sg2jnWhBUe6sDUUtScS7b^K&>AZO$sH#yN#Fto~a%)VQ3P>r@y#FYD>i zf#K)hte)_N9w!{Q1NH8}%N)`+dPS=ASlIL>bjz6fXX#MvWCMZGOL6b(6sq}1GE2Ii zTx@qi25F(D)?}ZBl*^H{#^Ms`#)is`6aq6h;?eaVK#nw7UWV?8^*I@S$>K1TS!72A zbWy*J;j>g{vHHj8a0~76Mkbs=3yZL5W$Ias@cY!AY|LI}+zVoe-S^N0J(Ev-qKCR= zv3L5kyCfESL=1PxkZusKy&w;Lw4)L1;izQ^?MMYy48uispqKK%0LWa~LFp_VobYiJ zp>YN%8~@|-%n>OQq;AoyX$V9fLLFucR)IHYnj@@Az8P+#i;^47NE?JN0<8m`=@(;} z9t}xhmd1KMABNN{#n391n&shz5JDo7Wi-=T%7UWHd?W3=B0oCtUHVk&ux5`b&RDKm zyVR)5t-{r7n{3&{oGk&ZPsqf~7IW1gMS;srw|=E~z(T)-MTvZ3I@hS;hG8ZFEl@Cmg)Z#Bt=cQr zU`o&#AM^2!Il5(K%7~3e?h&b2lBZD|d>z1zSyTqbe*3*%5pkujK7@$e$dOK1ieoyC ziputt_t#Tk^CvCdB%*vIlCsoX zNy&Vp-g))#sQpHci%wzazL8X8vUCzw>9LnnssJT zT7r#yHy0fz2Jr$k^V9`ZCZW!7wD6EWqsR72x9eq)Z=goTZrRuiCb(5o3f6x zzuPxGz^?kxE~K5y8tvt?1BEWOI0|0Ygm-OGx_8Om>tr4YcLvDjSJ!l%;7*Sxsv;Uz zV77@3ojb!V4N%9e9K<6?=qq9N6)_kebfi&J8IrXl(l40)Ino_B8(DH^)h3k1sHDWu zourq=?2b04#L&yv7=MsmHZc04GhWM8v|by8s*lJ!7d%!ijRcKOj&=kRsZR~nJUhGc z_aY>B9ibG9$WK}UBw(j0#yc-GBYNRcmY&i|Z2v@eK*21_(x|qsvCp%>GS=+DM*V5` z7k{;GU=~bFMk-qEcd_tR%ARUirxB3Wfu$6h*wRy-F10=U^yH3=;%1QjTM~V3 zJne?@@VZ^~c6}~3jUi&H>f62S&5mE*Gs7Y1Q%yt@@vOKD@vfk^o20B)x(^YulOlqyaJW+o)UCiW(_#wL#c zS)>&wS;?UYpoZ+O?`$5c0;4Jak>7M&2ieiG^TS5&!%PB&8)(4W7;eyV)oS7w@%01j z2a$V9CQwPA^XYt%oa+}Z})X9`RlV>T$2B&#hYRG_sL*eRn;H?=jGo=}O@ z9JN(zc$QmhPJq%o5RbxDbJb%^F^qAt+eT-OKnrZLpOl&v&3{Zm~t;Xs2(L%^+TvSD$$7+QKVh(q-C8z*dJFZ{y!SMQD=z(K6h< zFFaPMNoF25gXMGbc+&sw5()9spbJwR1Y4$SbMy&6A}L1#1{bweUS_e~^f`CV*f;p( z`_>WJZYW+&qGQrxEemL<`8i^^!nIiQ~kVwz!onW+#;kDUp&M)7Iuo7Z%UoQ|9| zgD)p=^fAcaVBvNEx2{M}KX0#opZ*OmgyxX1$P5C|F}}+IA^R*zj}`(JFhRTRn&NFr z*LjA0SlEhP_oSZe{ENX`e)~AXXOZBP`Xbc*c?Kg=7bZ@zk09EbnCC;miS& zI9gP3PqQ$Ce+2mZ0wDaC$m?uC5A$t;##7D1#Kx?N-whD(oMX)4WnE*vILKRTaS+5Ytsvhn@_74QgUb0oze>J=FK#s}=0M)&XtQpEMBEW9}8_Vn}m1fKPK z2(lq}q#6n$@S@a)iEPl$uPtvS{&gN^Wno86$%697*_NPP$ulBjtr4!)bgTPoi;Zwe z?1hvHi7W~tp^3r}d{Tf@5UFU>`GX6l_Df1E*;POs0V?On3c%wH4k8?-IxAw7cQNI>yA*XG)>YqN@W}sUwJ2;zxwngFrGxWQh-VraLjLn=5pR;85&=EpFzQ z9jEK|#?ObBO*bI+c!jwTLa0__SnAvTmMHG%I7Xrr1t=rvbq6quEtH+0fPVv0MvCr< z$oLfI{c%yD1G3}pBv(yASRsBE)lMNj9+NW`?=3mgPSb1a%MB^hteF_q1MsUSuCC0e zY_j_rlUw>>Q+5~J9jbFb=Vy-ALedL6^*0#c%mNH(RMnanSr4d#7>m1<3z@W+{kT6Fz*&k+ zIE+%SVn^mKS3-`p3IC(am~C=|>{8QNZh-KGQ3ujPZMVfJ7#fCy1W3KaXX_5tyS>f;3fgB_`I$g% zP$^XcroMUY@|S^yQQ#(Qbm)2#V=R~=QH`Jwy-=AdpISpQ_IjnRc9rf3EU!yYj=nud zT3%20^t4Nef1`L7*L??WshwVl9KqxCzo3a4F~LN*fO+AXxeb9%x7$U6IO(fEQs2WZ zVDCz#Z$1!yaCkR3!&LEW!Zggaz{g=)*W?u|P$GaSh~C@8l1#w_n&FxyU9gWWIuAN+I|780UH8+~!n5J_wYzNWkBv#CfKz%VKd1 z(V|lwet&i63!jz35?KPsyO*FJsV7hrbn>qslY?N~=ul^RUD-jGuWVxciHf-D{#alI z)rp(UR`zvJ=>w<$zXIvfT#IgDhaus(;O81TV&zG+MTN^`$Q*N0m^7`LwQ3e>3Kh4- z8ZoS(w~f&{5-koCw7($!D+>Q3(Z!O@jnhB_0YPB{0nz>UdVBvP(fwzBtJbh^);7Tc zTpOntpRh?RvYB+~uR3!vpF95|q_tU0qGOZDrwyiyXk~6a4?dUXVh%^e(1s3xw54c> zh)~U=`1!F!U`U#v4&VEZx466z9CTuz`S{6&PaeHqPG;k%CDpz?|F-}6?Ed4qx$nN= zHq(8-Q5prN8JZ0YJJ1JW2jB1S2X8tc!{VbGoMzf08YBm4V+{lMW(wN0_X5g=-un^z z2hEN?8-cxLb>Sx_@d(dey&?7bvYEUY{W=3s?OS1A#_a7NryKIIUdHWxf%Kpax$xtf z=_jwKnY>wpAntw$_@otsPs!o zoVTv@Q%O5E6IT;vFBW&^EX%ab?CB@cC;)N$s!$cFHk)G@ zQ^`Qz_T+kKY8GK4*8SOC(E*(Zd!^Q7MlXoxzidug(c2aPi}M+>=tnkUv+>S{d95`o zBsR^+SL%Dw+%wE;W|&MV<+^upN74QXQwnn>8)2KwqG)M7Ln%TtllPQqdPXHRwrsXU zqIh$BY9S$YtW7*xBRNa+nN$>_*vXj`F&At@b>H52W@a!r0WU+8ds3UemBl*(IV%-S z3)iD+xVmAQTVo>+8jCdRBE{_VrH*=#ODsW^gXt7zl@ArNipR58akL}*XmBw(Iknq-Pl^~`CTq(iA4aPul>{~CH@ z8wcZfjGn`D9WP$F@s?5gDr5?yVHE|MBo!&G#%#)y_zoXYek3US;J@j{tnJIVb#lYf zL?$PRoRzty`3J`*x~QkL+!oP`>C z-dRkFusu?4IgFzUL?+sqTf#m45^5-lM&(uBgRZza>faV&b+Mnp7oc&Zj@5 z!D-7G4Y67{o%CGiwzT7A$W){RA2kED0$6A&&NXZBdG&X{wxcYC1_PM6CpyfJ)lyY^ zD?r^CwimsxM_8e)T$Y18LtcR={;CW+=@yj?@-SP}#_wh@GkH|%!)1`d1>-0!sf1hvM%+|tsa-rRW-_oljOn3Xn*j~Zg7jMXWJfQiqsvO;{AGZRz9 zg4qj?w%&0J7HEnR2n9SIZ=rC-97w#ERVklg3f9I9CEv7d`eayIa?2) zakcDA;@ymRIpdBpbL9-X%?kG`G{VfEI%BR?A9}g#j>2#t^-18-AN&LEDmpaz_%llV znjb^3?|{cYBIo>}Tz6oGOvMEVK?*T2!8gr`9s@h$xWqTtO8567u~>bQ_-GQTK#jLl zq4v%Ytd7w61`^Rx7Ez8K_^e8y%F>$j3`y|Z`6-5P&~C(QJ+f_b@fH*-Q^VsgelHvq zE!yQni!5Q4Pk=H?W>u!Dx%F`_H{``jXS{u6iNIi3uIYKTD$=koD@jfV+b8u264qT` zK`NhTbI;_U9_D#EtkiXD@_q5Ete+SvJD)g?_;(FS_h>Cww#R3eMw_@4Y|1{#kmxFM zQW}1?Gtkiw06KRzs(nqCX=6QC;RwH?C@@vYYPlr0sVJ$^#`W41zRsTSQrVRF&G0E< zF51^T=p1sSmYs-LN(Nv!dlKykMDW!7U~H(~gWbdxRl=*Gxj<9SvKv(1s;Mh@*1)jB?!c|GP%o@AcBNcNNW{3T+Y!*2M$@n& zsbD`jThuO}%_eoVbY{e^_fHs>y>UE-Q|vLvqfA^y;SV1#m_QtPDNAmvmhTE%lKk}d zqIlA6+T-)Q05t9UBTI>DAB6>Ojp^XbSJSKq>V^&~@&&ud$A!!n2Y&!O+mTsL=CtF$S1W zESp%Wref{P3G=Qjb6vh!GnfXE^W~F^B2d9yGx)Dv9%J#VV19HEoo=f3IC8xM%gL6yAEG*feXX!@$dy^G~yWbd1 z77e5+>!mAgurf%|5xl|yXG=KAu2}sfu9}N?EH;i=eBL9?lg>+rRMzBvGZfqVYbHHX z)_kr^V&;}Dk<5f6Gn0fP+JAaMvg@Dc{Vs1qy2kQXUcoREm3Z186G}(5 zN{K^nGOkX_;>-$oHr%=Afa>Kj%iT(Li+6Tah1LE(bDkPmhW(>ZyI8z=zVO%iY(g5f zD)7DyPt zP45V9SA^@w2rE-@CoBdBhPbK3{e786gm&;gO=vziiWhE(8j3)HxgZN$!1?B(wB)H& z5!^mrvc`EUY};{wgIxE5?i7^5J-DtBn@9H4u0H8I zZ{aNh%NW7YiNTSq13O)na`RTJ1#CQv!aLl#d97pXZU||d4yN|fYvbz_P$0^aCK=kzux$R zT?;?oIiPQnao>5M?-Fb~#o=$iza%vaJmMBEXNz5=Az>XMkjx^-NrWBRLh3byG^>c* zIzo@XZ!in|fJYInvJ#58NsVjFr1uvukQT5dBNDC)&TJL1hyLM)UuK&Yq$B^TCs)y| zRg`7Lli6rPE}yPhGSv?KC3*4W-b?IKJjh&B1aFiRy53VYW4BZ~sNVj$YrgZo=uS4!D8)DB&VKE^aKG$4yl3xn?(V*gdp|?W@*(I) z7gfy1@-yF_a(#;+;(rvw=Pr)UUfu@(4yC7hQj_$ND5s}>Li^>5Crqmgec%WG`I`9~ zec$AlFOD#;Zbd)!YbUlhTB_wO)t7E)E!JyC&l|+&b1av)P^fQ3KmTEZzi)XzllNj@ zFF4XjZ~2JtD*LWtj$LK)xBLbF)1X_xTJ#Oolb&RERm!(k=nduMH^oyg_}6UTOQ3pS zD#)wfezLkkaxIfddnTrgsU}sSeMP zHe?Ygb#6{?()S_lNfNiP`7 zJEEuBl{ zjpsBu#+}uS9Kfnp*;}CK!py!`6A0BCwx0&Q_AE`6j621he2U|Qyk&KqsL>xl)I--3 ze#)$IEXf^FlP)7O$GVdIJ9Rv?hw}CEn=!QBJ)X}{;TiK(){L!l;oR8Oiz;WbyceeQ zbR3Q?^|~I$2qZSSb)SPhg9xe4u~Q6UjIymKpJY^0DTYCw7neX|6GJX~!_UZ9Zg^3s z9`9EuR=R7bLH6XHim92VnACgICRdH$!ZA;c6aKIEeGcNxLT*v296Uz~>eaWDdG`pY zIfli#DfWwOc4m9`YUcSpZ`+Aytg&4VtNf{Qug&|lZyE0PH7C2A^RpiT|x(mRY*Wh}h0+CBjr z#N+V?2^BLk20EM8IPy?6)N3wlqne*AQFCsZE2=fM_O~jm=BnwcwsLGaCDbeG3zQ#t ziP_?lv127z-QsY?ZsZRhH3hC8mO zduPs>T_=?e0wxe?dSZ$xE9QgA)CP{TtXIvdwwp!z2@nEigHt-amUBlZn1ka%CUz@# z)MVWK-V9dJh+9T@ zX<123C$M?+$23uL6I?>Jj3+#KEGEF$#f_`W*cnU`n=%|5o6;BPTGJXdHelD8rVaCn z8IDz#w;Wy2%qDCamWO^=Ju>TLI5O*WcqPsi>zkZ=B(mv_p<6!^1W!qS219YALjwDl zPKmRTV4Y#bMW_1-!myH7qfp_XbmUB7pal1qb%$iW!RA?iV1y%e)qcD*o!Ol&%8c2- zwE@OTAgeb+BAixu9VPEVgVOcN_PWWK?a3(`%dXuq zLNM5**{UfHIkfyG{<@W9?iI6fFXg9W-w+Ci(Lv#sj5n+twqtB~>>&zSPQQlI&Y1pq zcLt$R+wM@~04~lbCyLy@1nN6!Kp6cNCBS7L=p;H zUxt!vjFLp*C+H4MH4u8x{(8&?N4hBgy6Crhg})6tM1DrB&%-}LK&j@ zi{CBRg^aPd{2s-I*FN@`B<_;a8v7Y{YF>;8j=oQOZV1{3JH7^%Ubc`Co(C%coM`2! zM%mllo9ku@cxf_F@^wenL{JaV(=5JTq@VI9@Qj%LVX(_^=uw;}{B$(poOetCd3G6C zQRS9Fo0ebHkYXK&E9o;yk=d0KE0~RiN9GONNfr(m7mrp%Z}AL z&#GP!d#0mv*rvg88pg>VKSO;wR3R>WY-w)L5^Vp`2*>}`^79qA5Smjh=CI7TANMJG zL3v>*kzVpX$jtXensns6o|IsS%@&S1e`g zDzVK1V&p0?;a$#yeEv4JrMWOM8rG>n=^J+yT1;9!-j8DYHhBpqeS5vM_RW^jq3p~qjxC1&f**PbxM6kC|}9pMChbb8_l;989u^xjx; zPc!1}!nGT4wC=OC7KY8V53(DG(Jf+tT~p3TT2lrmPEzIHIe2$qS1b5%i8n{tF8j+L z%E`iQBKnR0tH}U0Te(K*e}3@UwKzXSJl^N%~2a~{fr z1GivX;O=!(w#H2v4M$_w-qd{n^Q4Yh(t_~qy%&CAjTYm~#7(5VR4x_f%O?FzLv$K^ zpp|gbn^W*hf)?6rtnesfYw0-=EGJx{1@1$MGAHnsKr(mavl*cO^o=9JNcl{R_LJN8 zW>)LY&*~u1d&RF+=MV3TDS-Wxg{N*B$f80q9^yxzG>>A4bbJS(yIlx zDZkRKLpRP~-r=T8z`~y$Ez~i6!niK8c5GeJ)_1lt>;e?^tNCQ}KW>~{sb`+4(4Lvw zPc5vSmpUsaa317!+UNF}u{aJsW25^#s#ya(pG^z!QnMDXa(Z9Ri%C{U9Uvv+xCeiD z8Gj3+uJuK2OQyOe9O83*l67F4$yEH)Iy(SoIXJzu1-GQWI}otViZ$qfBgdrJUg;lb zf$!Ml3hf8Pc2^5@M{>fX0RCZdpr!Z01xzb=Z8R947iwZ0s=JtuFN~@qm+nWmc-U}B zaxI)JqREIBP7~aB-nD5_vi}wx!(h6Klim|W-~-iLPLFH7jp(<5L9IV?a-l%1;EP>m zyE&hfbDu>WXoCA8Ak13wObp|i_4FjOzPeT&B&;%FbfiIfwI@Pgr3t}KD})?x!;bxH zyF#$r(p_J(NR>jp)J%e~MH&^t&4%9Z|LDz^k|+CeBX@1yQm1-2;O5Q_wzegG^V z=OSPB)WlWhLwTr$tvqRM_@yVrsJqrXJXj@dr*}uhA01x1%!n`)a7>atu_h~+i!6zQ z$;q!sZyx|uA3)`y8tCNph`kfV`~k_Yb=^f)xW`eqLM@fiA761guw4)-z-bo?9k1C; zK)*hl2he^Zu~%X4C9U!X=|aiavbn#u^^HhXx32&YK!C)zu_;|JPG_cS>4a7f>GY&yj7$66 zN_k102G$4W`H4&GldzIIYS`5m@PT@F^5S9rB``m~sCiqlOv_lj#6KM8!WLpl`9%hp zq;2_q%u*`5mP4hx)-&=>uMfxQV)NPIur(xidC4A!IXdFB_9z&{*Fx1vf7BVK&iHTo z$Wrl{E!144qgz~A4ey?F68pISCH6479)K`16FKZ%dNoO7Ab!PT+PCyfRvIpygPa{H0x<{6m>pjCC&7%eI0PaKhSe2Od}g5kvDV>@mo zqVMU3dxA_EfK~ZN>%;_qaOq@{g-ZFuF6AbKcNQ4OVq27vR{6)v1hy}@+2o`heeyRz z=P7`T%)@z;khdLp62I-$1Y-cH2*Rd=?^45Umyiy^wjP)Nl{md2@eodmz z*i66+_h0Q*5q_yH`;~Zm?qU(mcDF~i-mnf+F1OQi3BTN&T_yy8hDH!|B=iQx`V%o* z@p5sSqMg=K$}=ZXQXn;+x9SlW)?dO37ZJ`b16(&3r)$-JFP5_-3pbphy3uL)+uV=e z*3$aqnT>HTJh3)Co5P7)rS1l!Ud@WGeQuX;d@;N{bI}+EAx+F1mjW;6lX}(>08nbO zyD~fE*ynZ*QCzOrPm%0gpAe~EJPTo5;SE042ewW6$yLLm?NEOk@Vgs;A&iL+8lWJG z(XcFpRM`#z>j4N8Y}|^SZ9Bhsz;n%-K3y*#K|X&FF0F`_yZyY{!T3barGLY6XoMe0 zkUkKwSP|qdF(f?d{O|??mkN-&!)B9&iZYOe6Si;1b2JdoW7qV|`MlA6wM!^0B_j`d zm_+vbbJq@Y4|G~23=Vn%+}XT5IE1?UN->ut~ayYPM3#|=>ao0fj217 zvkTnw-g?0ZZHm{QuncP+sj5A(FoMxrBT|0L?gH5*FJW~S_o4cNc_A01R`dHmF=hLy zrgYT@qm}@jLv$UeFA#8IPPrG~lSNCvs zNZTZ$8_og#$d|6r)+v%N>I=>RaE{^>Ne+&g_naxHVgfd+UG_0e9l^t_dOq*}@>vJw)P;CN<}9^g;J7z&&1y z{_fBO&@~X-*mXdEpz`&eq182`+?g2qTB-IS)3uLohkZb6>skPz8qo@O=cfCL0(Xai z|A}Y&RYUkSUf6qve&eB^?7oZmeeiJ0O(Ikfaz(lgQh~lBDq@DFp8{>4?B1kwExDIx+bP z%efWz&+8bHGl8IR%dv?NVXuJc$Uo!}$1w^b2g449eZ1b5bLLkq((<_pPa$)E910xg zI5k2-;?Qp|}U$Tf%DK zr?Mk|4EJNf_Ar9T_P2c7_Mu;Tmdl?f zeh)%wGFYb3O~SPYXx!oog`};Fx(g#Xup)FW#5IRh9U68M4u)7W9My+dvltJ>$-w5V z$5q0%XOK6H#1(1pm@tfD-MiOt^~aH8-;>bQ9IlWv7b(3uP_1T<6hCQmWh?LoN}1gs z(g3oiW1U_H+hLzg0H1+kkBO&@We;ypAVRw4W09~PjJ=F9ffrJ zo7Fszz}w@cGR87r8}VPM0NT?(zB3NAzTGhds}Bp?eX;Q*LHD9UJ43zfW+(=B`{1-6 zZOH_!4zrtY4xxnX4>#E%U6XNc4-{3nN4y_xss7uecwb|+FHYycLZWc(!*N=0>l4ig z*p4{0Yj7X#VOIDjqr@M-Wk`>VKKA(lpNWJ7>_;d(JGmMbb(--nIQJ4lwl5QS3Cb&K zDHR=wnf%kSW<2*A03S6zv$4~+7qC|E`8fLe0*{$MnWBKBN!zywh}DVS+xxBw#rq7c z9^0|r1j#sGVi%&_-`QllM|V3+N1Gq_Zh()#^((xE>xIjdn~r0Cq$u&aa!Tc1o`AaV zD*MCx`#(Z?mLhdLO_nwuDs7DFJD5>HR%&3Ar&_&Am#Lu_fyu6=jF6`GDs?>;u6cZQ zJZoX{S;%3wN_?#Oq)(5+1JN?*JVE}H{~RLkB}=i~DxlaD5-kUS@+Yf|Kq^6wr)Bat z94qo>bt;8aWc*9)3!~`_SPE#5LN-i6(8H&z>b)iF2-WrQs%kZHE=A%RMnW!xWDb#J zrFe^D&J!rnm@=N?L?A64+qlMMSI=@1v>k8_YnbVv9i7JMdVU{YOykH{lRJhF3a52aXp7n}u^(7OnNU zHW*GW*#)UHv6VwIaVjC@ZJBTnYRauD0^nrw?R|!5cOzq!39PB~IDA!4MJHsgBkf%+ zWh-FR*jE?4T;8m8G6=NMA`qd`mdn=*r{AZWZ}A$Nl*Yn4EQ6r%_LcCWlvzWt&7aIg zEJ3E5Wzap9vOGZ!E1*|b5lfE=Ol4ZwSOJ8a8i z2_hye_};ib8POCC24)az+^~dX5pCKkxwK`auuAQnZE*}Lu!o{~Od-$t3u7#&|}xV*t>EUoSd)hlWl%M7I! z`3I6Tn=rQmo&^kXA)d#=r$k=K6|=(V0fsRXfs01Sc$&&~p96bP$#v1D3OF+zhm8Eu zAXyqtV_8j|0I@@9xNF2-sIES|&Y?mFPFZXWjZB_nCrX56OS))-dK@riV{2({OJs@w zexW`HzWV!77BTQ``bj3gBhSdNESgTn(knlBgl)6(?@lN&%(9h6s;M z=G!@H8`bMo`0*CAy3&wOqE)<(O???vTG*j?$$DK^)5vG-T6t8JIQy{p6l0KrPT2oK z6x&glOJc6u@UZDJTg7H`Z_96chzMqY?*~h1U|u>V23{7qYyi)cPhs zq@%71l{AA}kS>4`LzLL?S+~1OXKIF>|3+yga!O8SJiuL0M|W?nXJ>B|BNS3bi!!Gc zE=gJv6PNOO0o76wUySb}4#mVSNnb7Pd!fCy}X_SV!U_ zRIN2qjRo_KKrgI;Qg@7g#vZpwFU;&{6T|7`=G30tSZ7M}z{P>6OiZUiI;oNu)*9`Q zClQoAHI`z1Ch6_TC^#JX<3rLEamMPRA|5Er;S`%rE;5!_kF$hs)FO!=acC77jZV6? z0u!A7O=OW(rDv{*_Vm<0GT!VjPO=t1EN;kB>16EpG)W@>CIh5flw%_=p`UH*Nt$TE zTXSeFo`tl5VpjePYuJ*4S7h1x5%7a za5WC0Nhhh#`m}__-<0kkQlHjyj-Uzc5)rN0NC^s%Cqde_VAObWi*k`REAC4NF==ON zL(dn}$#Xcqfz5(EurgA%E`xZ8gScVbQ{J~&?Olp$JN??8ZPgo**2#!6J`|9cj!7+6*I_ms1sjX2ufiLay0xvDa{NTt7aX?fdhQ z#S6|9(V3bC9EU9|YVQ6uz_~H`N`tqfV=AKqM3?4+4RW$Y6!$l|v8~jSY#}d6w!wua zT1}xnjRQ3Mr|&@$%SR%-lZY%ReO)nOX`L9M;1JGs7PMAWnS!je*XGT(^+{z}t@Dy6 zeTL}r1STHU6Y^*;{yjHJ@UUSmD)Ilv*gHQ*8h-oQ!DOO|ZQFKcV%xUuOl;eBI<{@w zM#r|3N#5-9-BtU%Kb>9m^z#p_x<9>o-My}h`)NuErMx9EvIADp$Lc40A+7kkFvZVo zX|R!}LvEDRG&002NS76e3ZeDjb~2?{G85v{7CFlOsN|KOJR9rngnayL7B!_s|CR;c zwul*AYMh_SMFFSn9b4tNAqlmYtekLJPdIWqY>6t1iJptAoBC9nhL_D69ne{z#9yoy zy9S-5-2zj~R6fb1Qx3txwvdWC_bItJix`+lqoRlmkU0C3o>@grP|SrzC1>2N;tD`5Pv1h#s)8_FNMUrKJ?4U0f0om|2rXwV!%8!GnRSD+{G`P z2O{n4&mqSWCfl;|ei+q~yMjqMv}J*o4D*tJWqlc-v<#2|AXie(qz2uP%`k<;mS)qL zVpM?u&nkmwU!v8WT?1qk9%WeOa1ScqziJh0?yADdG=-(Q*Kwm7s2@uQl%}XKpE22iAE-6VR)D9D;$Y?eQg!5mmzo^@2 zCRU~Cmy@K+#3by@;VeB!rv{jo%M}wAQy!V24Y`^T1GqIIq?@81=eO6U-7>rs-~^~F z&5O9y9Ax-zMUxA-AkzgrknV>LapT2ll~dG(Oy4`M6Ks+>Ta(httP$C5h)8;6G|Nvz&>Q#(Cv*9s-+57q25)sl3}F7B;XLtYi)c|er`RT zKg97iUEHh@TDZ%$5Caj^84;?G?n|*Y@NC1Fw}QIhlk7_(XNF2T{ovZ;9{0@5m}ibI z!DZD4BR`wwlrtAqK3dn6R~X-QCt}YR9|7$GTjqPQFNs=P!lU~$Q2%TyFmgQ!d#5W%)-NLfpzq6}YoLwZi^L5Ac8&r}9UG-@NzS6n2PCgO|5*YYqx z;vPeJGJSfetpQzzE`!7O>Yyw+S=g(&1feWc<}u7;u?nAMDOcSbUrjFUY(}~VKODN{ zExFHfgrHNI&!YTt(*x3zLN5Kx;xS5#&#L@*@gCse-xxZIaZuSgx;-j&X42v@r0lCu zlVON_pHSwltUD(US0`Y{j_&}O?`ji|SFN%4knz!{TvO3Azo~w2)uBRAN=FRIv3Wv~ zL%nBRIi;5J%Jfg933xM(8Pr4NIPZZDal&(KA89QBqhbYgNk~&x6fqbcoxtRRj@$-C z$EV?uC?`D0GlNSxZ=rVQmob>nu`A`Uc!d)Fw+l$Rr>22nMO*p_PTFZLd@%=&(XTxb zwl%G6SJonN9*dJYJyBqS%bjDAGWoI7RA!=-+uhZCC@g)){3(D8*jBL1JkxoUd*aw; z8H(Sdd=l7ZA2L@kEPr0=5jVKy_U(;DSP}zZ_7m`{=BAw~9c9nF3>=^B9KfPSJi|7SKZ(v;@0vI&h_sjhUSJ_t2_HQwQQ&vLhFuDjAMc0;DL(a|F^%8n& zpdxD|x*{Cw7&a>Gq#p^I!FQOtv+Lr0Tz!}c@*YHnq*K0(sPD3JJff`&y|?g>+N6C_czs>8}t)^}x6D`z^0 z!Q3D!I#4z8=PI(U^^--i7s#R@9otj^FoKDUK|aPv1MRh-+PBq1CLP^WgLY{(cp85j z08Q%qA=jVtO2)L*+H3t#=_qYn!#sNFR-|-o)cXgcQ@Co^S;NLeND8}Q!^j7j&FX4l zVKt70WHH{tn3@;AI)RArs|zxzTR6a{a7@LKa0S@YV!%!RD;n$E9#Q!F z5So!8-KAT{VWlhGtGmfxQAih*8GmPsm>)Da0V?@_s=D}yBf0X^(9HGmiQ!bT#+Ln) z`LPxNZB2@JY#bT=b*vK4dr3UVU5a?SX)?CIEWr2ZkW)+y_%qbwU}i+J{vohW!JvE~ zQBfpBXfN{mED!t=LFaTuH`uh}rk8X;DkF_Nral|vs5oY6HFM@B%QW0^vB(&x$>tj8 z?z|t8D@C=t64LxKM1%e7Kvie zQ#xij!(uiJr9?w5$uVnbhHRFA8onA6SbgpLM!K_AH<=RTUJpKu09gV?AWNZkdEb+4 zT_8t**|;T6oo+KBM|fZI#_`#pq&l?}e=6x7#1lAcWFtG_#?P>OP~#g}u_CQuB(R#y z_$2blN%z<5(YUm2dK0z^CC}xqJ|c0LF*cx)w7CYZCDc6PKLurbeFV8 zA34Wc3GiGEsgQxu`{cFrjy$!wV;0mVadOl4CBTmF}19ET2D z^zqGRv|?y2WL`i049%sNJ2Kc3U-w{-jU6l2m0t|!x2}{qJ(KaW9b`OVe0QdwBzgll z6xOqVxvPJ>)}OZ3T$NTsu-%BVHcW)ex)MX>9E|d`cmm_@&a_P_z&7(o8*97sk6e1| zGo)G!wq48DMaCu8-3p$ICWwpBv0q>YK&g`cj0i;Oh^XIzymd>o>pVPB=C0SfQDdRx@#}KIh1hySe^*-8@RM1+FWSZm6hKfUp06n*c;b zDc(wZuLi`qR^uLo5IZH(_Z`sNEmUAUO4|88IJn?sEb&v!Yp-nTvrtZ1PJQ(OcaUc@oGiqx_XtqRo-P%YHh66ZZ3vRA&v>-7 z2)Tm_#*YEpL)P_`YF(?G4C#J@K6xD{D7txnmTmDBi(GPk4?uSUC!}o_h_JL5jhB8JC=W7U(_nH?-bI$fZgb@y+b) zb;AYC9Jb9kk8JO<9rxKQDn|-PhjR zP8hN)<=l&6XF^-w?0xZ$$``qyyTB;;y+U43CQ*epPyc*e#{ zRgDzk6VpWVIA=ty3wXy5m$gig!I=e)y|&f;?oUvWupQ2VFy7%r*t9%da}guC#w`SIAd@f-d+z7ON*CG zy#XVp4Nn-NY= zkH8U3rwLd~9iv4{vkZSW^&VE+t6H#ytjeyMA!ayG9@~6dZ%P?i8s;tPJgmbx9!E|n zd;7EzW)W!zDd}o{W)}hVi%0E+t4@WcsRXjcNiDBLgoqH#bgNlqL(2o`Z_@L z&e~|@l_!W;by^%J?~U<(T3owFr{yYlJOi6(k%iA29UN{QG4+e^nCNA7Q`I9Kov{OU zZ)uxc*S0(nBO_llV@Wy@aEbVI8|l{aLaTD!SF(gcuSg!7Nmip40uEbf9jPg9xt<$i z#ucq7I-_AkIcfK)O5hf_TS+J1n)smSgUYeu+rTsDFe_neU@Vy@Pai_=Y}2Z&itrko z!>yD$Oh2y&`6Z+#Ze8yfN3KrsHh1*nCU~H!@4bYNZF$_RaAdT67YgvWl<*_P!C4Mv zecweI99x;l#b0=Av268SNqb%$bR|J}3l^?&KXLFd{?$B9`w9uCCpK<{)SmkKK(Ei= zdp7%LjxSRz(yGs4>Q4EVEv@H-If;A#oN;YTvsitVNcloZGan3pnqNL5rIW}+8&57+ z>)!pug;aa&Q96jL!#6}yOd<%Zg>C(jH%Yew6vco z_pEd$z8#@D$C)db++Zf_L8i@UVwn6UNlB42&H>_@Q{ike-H8**pJUEEC#VNHsy{92 zc@95i7V_-Wn0M>xW|yw1BL!RFX3e9&*Q7@8&0gzWdqFn{b49On)DVLOGmK*?A2wn5 zb7|~qC?7Pn%ke|DrHplRCBf!eW>i-|ED(xxptD*iJGULiZN84q-=|!7`V;4lS4)C`}i}F9$XVylL0+K`ZPuUZ1!cYv@ z*n@7CQ7H=Xp$86X-LexKA$sgxxeId1CU6Yn)op_OPb0&3s+af#IOlk%_Z**l= zXm0sGNa{u);%uI8dSBgtd%H9h-hi_QcP);~?8vVD3`|Y3_21*tG8mnuOnOm?$`T$I z%q8|XN+v^5wfHO=&#z*X_SemHw4#IYs#aaa@DFPPkE*IAP_v`pr2k~h^4g>&cBHvr z$QvB_hb*okXb#Q`vbM;B(2Qu&(vNB$oPI-y3%@}Kf`GDy@85LON)G&G1qN>+TbCx8 zN;_{nfE`7A3LbzlT(v5hm;<&SCXRp{I2AP43P%u7=_>58O02jnT7C(U_m(1T@B_)b zNG~~=d7^bZ4NjB}03EdrYN~On%1HR!5e$35J#pav%je`pO*L zeG?#R;BgmU0t#!^tEGDK?k;7aSLwu`7ca6d~82(!$7uV=753RyQ?E&an+!=F>PC@>ft2RKMn5c&VrzPH zV}Ee@LjKzPNs~I5QkbGP3#Md7ca2`^yQo$R{zkzL>(tOm$x7NdMv?yTe1n#t{pQg) zTNp><@z$;+vRy~VYWl3YYlX_MM{k5)=l>d}0&|~%SujKO*a#w)|M&LIcD3GVgk8O9 zFtq_f^}R#>nch_|l<9tXkh}8HCA{B(NjTO_-&DIPZX8oB4K1o4dXRy_*3bJ+w%`mo zw@_uWYG^C z>JWDQWH;=*FkgNgyE-pFKPATBydU}?IYIab6<>ac^_OsB@sFh6*k!@$?JK_g6uP0q zhy4v4yMcXG>PhgdPi#D(?~LE{50&4oQ1(G-xbb%0$1vZGO{3F3LBfBCxH6CEP9yng zRE-(9HCVT*#9Am<*|)tXd_ht@MC^d_gd(>Ka{CJ&)y|;q1uS%Q`y}O`LmF0YrLg%e42>=#U|9fymtO2px;4)U^ZZetYn*4H%sG%@CO? zd$jZYiqo%8TB(y74MDi-L*Gl$m9^;Vk}o@d9C0+`Sl0=KHHfutT4vZ0c|V6jh6=(= z=W7`phkPAU8m0w${BAso!3c%cbXvlmIMw#xi>#4jGPg33gm|N1w~F6lG2?WjkB4!$ zmbZtf2Z}WtSAiRL{%lVhcz-jsfU=+)eFR$39qRFGdKwkm**CT=F?3^mbc`&^m)q_v zQghovC#zeUKz>lVS&o=~0z3ceVB7b9pS|YKZ`$=qk(cRwyEDm!?Wl1n6obd7l6tlR z7;ng1P_N9>+YX^ckQaSe)FN7iDYuZ6G^5T!kx&`SE zk}#d@1EwEgNuu=8J@TpTvuTGfOyMP=qWFHfyCu8Dx1M`uFI*y!Ee0GP96kcn`dGLT zdI^$a!9t9cDst>B)={Tr#w>iv-TgJ`r)ACvK0*Q4{l|^Simdk?P5om9ZMh*|`P>}g zy)7@Cj;u}De@l&gCYv<1ySV8Ei$aqxJbEb z`7EmWD6OcPFg?+ZJ7cAH=4ZK$%Ue(fk;OcOp?KY$zZ>k#AjnW#`6Twbx2_Wk>tX7> zB7Qih%b^*=+3n+9&H87f{A3JL+^R;)L9PwdR#K}xU1+EBHeC9OD%R2jY6x68p@(0n z;4bln9@NS1{G8zd@66keQgufX*b?48l){aXHbneZ#g5xgPkM zs-I_LR|k7NHTn%UIQ`3b$yUf?CbddR3;2)nLn>yRYIF^%LGt3-5!NeD^sw>bZ8JCX z8Hp(A*+Fpf5t<|$Cs+>8%LNDWG(`vDX7jfd83rOH`M3?)Z$$A8$5U8Rl;-eGd&h$S%|4+N^E8E4NPGaRp`!Q(mD28eFc3gbRTu8Vobr~L#tl9AK~ytfy}f}1JPh>O$b z-#A1g$B&2Vw6pc+8vSFJ_uG&=qClRIdbDn{b|j5Sx*I*qv!y@_*pEOXf2ZdD*hp`# z=a-H%LAAR)iG!B?g&U$yGJLd+@S&E-l9v_q+}zRMKLx<(Q4b<$@18ej)i4=_jR$=C z!S99XajDvS%aq+xMgt>7_&e#nepF#}QoQw=9kBS2JcWEk5Th0lymr6q`(ujxToPsx zMmU5}_63SiO{19{jKB>Q4l-J!zVC$_{;0+%yp?nS*(QV^>=;t-l#3dmGX&!&BHwdm z!plWZywPw#>?S4Ow=#tBp#to+7-D}?17Hy$BL$hH9xxh)^qItx!u$>OnDnC1VNcEl z>y&Ac*$nGAb#bX>OIjKR4fY%zT31P9P+P(Z!_g-i$6qi#;yiS!qeapAVFw^&0x9PR zv;`A-)H}@BfzAbL^-I-mqAGNj^J#;_-sr{)UDgkoxBfXmPUbV@t{mu*AETiU^%hZ^i(b&* z8%mQbOt>6S9FtX22%pL(TQ=yXq^!MjD0pqMr)P$<@<<}BGsOl-a$%k(4pR6 zU!VzlNa7eH#Idp$(r?D=2-m6tOX>JUTV)u>>^*5#Yh4&+QHzG-$8XlsODANMTTn`i z$2^BmL!iU`*7*D0J;(+)OWFPy8DENIl(WGLW6CCYprk<}Es-{C59!Pv_%wV3l*mY4 zNr$iS)7giu=jiR0m0Pf!fOEoSGg5#HCrsM_dnfYI3CdR$#NpY`Nuv zm;0)wDu7?Pve>UGM!gFEXCx!E6?hcdNdK=nD1*6Q6k#g%0Cl*`LCscCT*#G3lwDf~ z;!OtGfSRGQn+i@ifl4u|>0bIhXjjL9o*gnv(P(aiXh$?Jr=wCbPSJAZ zOYD6vGz_oA)R4lfzhgl!&q|LK+FvJ`I3}+jKHSB|lpeAgb=Q%SeBeHzt`05UBUfjz z^}iQ})uy%$jNWr?mE8n=j+nZMXeIb0AI(MF*d@6|^rFBI(HkT=L60@$c)KL}4Dt*g zsmpaoo)~h)C3D>+y+y^U#d8mHhyNCe?Zy|`S`A9M2e@O+AlK{$@3D1CcKWwOwA{eo zA~5S;@0RTGeQ0*p93K9>D|hoZ!S1|)eVG5a>;pG);T$jHfsGj4CM6>uQirr001lBD zG*cqK+rtp_I2;_}0EzAc+gU*f=I`#{(sj10Mgihu5$4kac`5m{tw}fd!hDn8o);?eoF z^eo0u@5lTqPKDm1gE*xtSlc!|!O`^NApgJX4|((&`-un?PlX9Zbs>@eF6+uK>h2Op zGKBH}W?mX{CH%yJ`0ME0@Ao?W-w%Lg7m8^f-yXb#@YD^As;BU1bzV@=J}#wdEQN!G z3<&Y$pgT@$ux~7sDIE9^C>7&h=cp}MU=R?v`2(^In%$B9CQ`wj;}H*5v2YCF>MTvx zOXNx^dzKa4dcmL74)Hw?8`SiZh@(M}3>)a+6mkt`0!gkU!ukM3cVB56q}M6^dNkRP zkRP`NO+UFG(n{IT}y>e0<4QfO$nYN|(Hl*iPAh@N8E=i zL9z8uq&7j&{JT;wp`<7DZEKu7e!|kSCwc{0D^mOW5STTG!Bxo6oRTUT%KgGUmBMIg z3)v*xxXMkRoQZY8Sn|){vR8A>-x@NAAyY+#2A@8RXy?&{N$Ry;>lP{lZUnMYln-~- zl8rl8s(I>IMl|w{U)BF$^KMlr5o#RCJE}l8(p`*OsO6%a&jRen9wom;g7igUi@qO| zecTgJ(a2@YW0AC0e_jT*FxQ#}sU)sXLlvY6qT7bqK0zi=i4f>> zXHOX~HsD_m0~jS#9zA3ftM=1uL&i3tt4wjJ6=3frUxQMcSh7#mhLs!N2crEY?j%`> z-{OYoPAKVjyJNkelN&+0qs^k8={vpS%_5r_S-KO15oH)^I5cq&?*y}pSKIS;1m`EJ z=`T50dWr6Y?@8o{r2SiQLSu(9bO+C*ZHu0GsAHJlsYaXl9I5&0$Eo_QBfK-H)8MBr zxMR9a`$%*b<)_z8l?#hKNZb>9{r0X{oTki-D!vBb(�i98A;;b`z(LtC?hb$y6uT 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�KKEHJwg0B6%T&>iFEB;{6b#*ge7%0 zht0E9m*ByTl|LqPs+m^F=?*TT05h8Wcj3yQZm~9rxRZF^zA8&8D!sZEOM%poHRh-yBU}zU?DfsLJD*bIy0we|2R442t{l z8skmAwdWzf2gUUNw~kC!QPliD!NY&=%8FFgJ+V|Vd}4?!_iy@ZQ5M4HNaP{%>Wnq5 z(-RkA$!!SGK;3)m_BgCCB!?c+%|)^>-1RBn6jo<}K}TUh`w)MNYjXBZ30`^ha)0^h z_5xg^2Un@EBGxk*9VeSRws`KQzTQ9Ze&7xyhcmWpM$b(T)J^+QIZ&{n3aTN#IdDQ( zhL%hP#-e%h`;iY*prdeIgk2_LqYP8sInXt3B zg&1+prfv;3CYewMG>rqZZj^cWAYydrr3QP(_2QkikHWVY9k7v0V3FjIp`f;K7trpX z5M?&id3=`JVC`;jLbr?s1Ey>HHxf@;+R};uLY3cG3sliSEBo8D+eW09 zL%xC|X@ySPo4b`}U38Kp9Tu?_BtgHFxgH%>86nmfI_n`>fxhz8ov@_+XHeXiy5Ejk zT5w;MY~^v_x+Ge@3Yvro&6MI{{(zmym6Ln107)vvBO9cS{Izzl%aTNuO(X_Eh;C%k z1BMELF{-4^U}LL}896u#kiag@WWX<>!y2*@uykMoU4&-MUmNN*@#s)W{IZ{4t$$r~ zF+6$I(d)Qb8Mu6Yl%$+@$f+y(Ksx87MG@SHmfneJxo>Dm#BPC8AYkMB+h3k0n!J`? zU`BW(rvoV4sj3I8_PHwOycX=pToqcA6?SuBS9%5MKtR`WfAg$TP&wpTCPftuL9KKw zO)o?SD#)Z3v}0Yx+9d_E{bJ(sPYvd|r~KAowoFyL=7!lC!UmBZz}t2P<(w`0%BmBE9p0R$R<65%g2lZ%T2IKE4TzBw+YC2CDpSob$>_z|fmh4@_ z-0UTZio-cIYu!iRrH+&jt}b^ZK~rfNzHxk8ax!GT6yqQvZuQ!rPVtUPh*8p*Gnz2} z>ZL5uszE{y<>=>p!OG1t;fv+foxRIP8=Q?Y8R6ehekggT!#D3*iF}qa?|>H^Z#0Pz zw$Yu%$$#UsVwIljLinE4r7^A_eE&MXKY1F$Hpy5_3(GQZD+{eL%sKS=d%Sg~kyv}4 zVj|WZ@d~m-kC=&XUcL*`gT*Qc#dBbKCFtzyS&cBkmuefLfygskLQWGS<8{_mVYb5z zH$eAMhxhrE>+mjBgB`}tPhXh26N=u2xX*s;E;)E*V3|-UFZnv7?b3$_!=J&`Xt!ZU zkS`*G>}#=`mYPU#&}H5wTRuqbpJRf7S7Hh4B+@G##G_R_oU`$Jbd7%+F2V02g#(WE zw}w#4KbKMLy}O9l4jet9d^=HOG0VlY1K6j-}{+@}jE$Mp$k9ha6EPi+#=7uR{+tlob zq5><7LK{-sSI`fE2GZud3AjxFelWEYZ1Y3Y#=y>wo~<30_Ab}&$#zzRF275CW30HB zYmm-SRFBOI)6U+{=AG_{f@U!%IP!?SP_Q#1WDVX(0D4h|q!X)1bBefgd@dKIz6{bI ze#lW!FEIsD%0CJFhb2XK2}FiU=?RG<&j)jiMD%=hIlsfi9o*qYun5cey@c9ULy)WC zzeM96$Gx*2e_xb%fCRYOM`HUhb%kwW9b?)Qpb2-}H+6chMQE^AZ5TucikWJ{{Ns+}PyaR!;3lUerxP%l(x+Pd+ z$wpj9=79#sD$zzmEIc-kvaPQL z7&`D?cElyj`mRfA3@H3 z>+l~lz#4+CHVwkE6uVHasGJ8$4gktA2qS(YAerhXt_ zEA#%MFVY8}qoA?G))L2$uE4C`0a?*ny2dw&C$nhr%OGFx6UF2iv?kvW-$6D}9xrRD zFwpspV8h;P#;=!u{(=Hn|Mr$yv%{1IKv6{NyLVYr$x~$H;RI6VO?AyuLEhIeZP<;$ z;zayr{pL8^LLk?1=k2S2CaT*4P|>M4t2@j@9oDmzjM{)r zZQk(N+X;PdD?$F z&1|qGGmqG>OK1*tBt)fSAVz6n(E{5p`)s>a*RGzTX~6a$SG-LA0zr=U6ya33V>wlh zW{nII(`dqqzNfXuZe!?b+FkG-%XT$l&b(Of7f)-8X3|-rkMsn7Nnp&~!=^cIiHQ#f zEMD_>~<7VahAoMp)xYRcKLbKY#y!^X@P0FNo34JQJA>kwidM1!iO%8ImxH0?xY zOcKf`zoh7f%f-L7*m7~--K%xa&Rw};pU2YB+CtA%5F+i?P^AM4LS4=lALG>gg0FgicjSAqwt!Vg+OaZ zqOal$qG8An#IyubrD6BO4a+N-ec;@p3*sSoMH>27VwLK}$4lT5jyC>jE}-6Dg6PiK z?3?EOSNu@;F8aCn*_=ebA^FsfnokyWRo1DHXUq$yaT*O}=5=t>vbjrCZA7=zT4NNGtL z%1pV=rpoSBhcR6i+3RNDrlR*zcN+Ef5Q4+5{t6u3tHH-HJ37YNzN-=&X1ZWSTWCDX1ZfJ*zSu;pRMQq1bs)Al0utR!nd_ zly@RaR+JwES6@-9n7&0V5&a~Oab*)awKn2S;V;GQbXFoXfNveYkC1q!CUN=f@n<1y zwyCN3eg213Luy{@F2k9k6Z zM*{$?i6@PRUH%m_vKk6G4zk>#`7-z$DVw&!KDotZu#@4d7I#~xt*Vr+@0F#Rh^tkJ zX6M=%iL3iv|)}A9G8F^mm6Ar|8kVB&zkp6ud#H%u5yWqXwhJUap zzZpd0(LxwhumBwKiidO|3aUJP_!$<4 zLX@KH4RI?2wY(*DBP`L~5#&bd2~H{ZZXGv7^)$0KbBg)iklppw9C7ZiQ+m+|!am|+ zH{FRuiWCEG@#IONraLIAGK>#Y+3=R>=ER`|P)?vnd*yXE*YHPlx1j&}ll~)jB$S!D zhwyD1Ao}xv>dgONN&bIt^e9T(&hf!}XV8*HXC(6}j*8|n@$JU0lEVIp{S92EUx@Uv&kP@S7ef?ejM9lK0L zg&Dunq!18T>0>yGWq=WN>8zznZ?)vv+-@;vJkPQV3t0D)!(7|JI-e(f$uZtv~rA$D2iZz!>?7mz{NqO?(D1u=O}SUH!5ZOMR%`9h-%NK=Vw&xYi3?3nZ{ts_a=SF zOP&ovgvHIt?b)%3j$B@)>L(ZF+)!8=`U#$UCo2;gp~*Ke7l&x z_#4Wj9w4G7kHzMf`&zDu88Y7B&ccjM1{f_A;V|T66#K~(`t@b`!SlF#i%7>G~ukm(aTAA@QxvPo@xly2JBRAkQ^N|+{CVq-m} zSWKc^ucoFh@;=)FwYqy!pjWw z%{tb~Speve3KI4l2V6S$W!4KC?-*S;kR+|@f{p_&1y0qT33nEB-31RJX4WLZpuOl} z4q~>QPD~XR14^OzF)6M@@CW0vaus+(N^Ct`R6re~LeL02MBmCz(`uetLR^$@4K~X}oPDS3zW(7zim5nTuIyd6qhEHe=lLFgSSVbkaRBx-L+sKn zds=v|nwXL4C_YpTkKv%{)b|lo!Td)Ci7<{qQzaK(P<}@_J>4jAGJqH-OE|BTSSRxF44_~k-JfSXs7eiZ^ot>v2p(#-(2d<@;Z|6EVX|vSK6z0pF zy-7jZ>m6%IVlh3P4BR6;uBGp9!qZ*tCe)SRihDry1nk>9COQll-92sj4v1%{Ercoi zO>im=w<0+V(}oMCBL?mvL&J%GFkPvjvPEBpRFHOt(>w9_!V@lcdKG{S3BM2nY^ODO zLNp;IF{bfRmF~!$vE-weXWtUJKM^jX2OliuiVh3V;bt1HT#Z0TjMr5{j^zF`oD)}{ zeq1LBV(TOzm7YiwPK&+HIwnjWM3xG7JeeEa{gzXp-XPOm2d=oN^CM%G5iww;(LCFy z5X+2B?lE`m6okeB;<5oTlHp+*mS_|6m((RQdQNE8Qr)1?bPLt}Hxv0^iR7Q%W2E>! zVf1e#;vV_Gx5BhFaG;eHP*5;-w6${iPc~VWs<{)^0?KDLwP)f8kxM2hc3r4ksKHQN zf*kOqz#bLRpiJpSARBdJEmIR|q)Fn;a9Ca-8?ikE-YPaF@vOK9zOC z5YK~a7xwj%Z5+r;)jU0-NU;6)+|h@SJ~y>bcOhZwXmYoba1QJQK>Pl6>At&EZ@V&8 z?AjH?-VNO*rD{$rAc0~tWDhc1q4wvM>NOC`7+wBuz;kRNPvtJ*b7>(DNh>ezAZeeQ z2MbS_taz_1<#S}XvcgRm9Z$usj>F}Ik=>> z{wG1-OS_k~kF6*lh7^ShPef(FBr~zj5K@NHji1jsD$((``Ni2Kve_|LA>0|gWHXo{ zcedqf02Zjp5t~bTa<8vAU=FFRN&9@H@7T$<2<5J@+kDP( zJx+X+9aNuJ?m^M*ow%&Kf{o>_pr|))6)n!%v=y8>JQ*Sm4+Vn|h`xsr7b zSC2@o0fu(5NHfxBR%|*SM|4kQlo1ExXazb1S~&O!vXUlBZFCem-GxKNjw1P}`0wts z1^VftLT}3+W^K!tYX!~8xr7WpHVryB1>-<0DOm@hl!lF2lG?l`W6XtVdn{fq@97oB z*U?qlu_%TCgVUl6fVEosD-FwO9}%prM}>w)Fq2iw&8Th{)4a90LGG7gK)Tps!%i1%h#J0CE}9x z+6|~$T%6Ak)~wwxT5;O8u-siTGqwmv%*j1XOe&(gcJ>xXs&+S^I#KOWzB*Bry1S~# z)RRyq$!0>Wxoc}LQGhFb-nJ*E&frs6t0Wq&r37YjjmXI?C9ow;jT_249{}!#5QcY9 z7WrKXFm>$+)7?{n=@X_~>$IZ8hUft4Q?~E05Z83fQcr5Oc3_5dSWd!ai!*|C)LR&C8nRO=Y9@aOZw#Ux%O41A& z)e$|*S*!&wZIph4f)96c7o@ zNdERzYdSqm`j!4pF!!`cK|<|Lc=f z9sSE-dh{bkmDZu5l?bYIe!Uku?ZdUkKBl_ zpO~p2TO2Tn76j+^dpi%Dl~YdJ{MuNQrWCeaVGVScJa7F5f|8@}h-SWFt|pu$Y__Pxv35=}qV*i*%7Ef~IoqYu1ROT5;^ zGQALa8_%e#GhLde^;jWBXx6n@U`xKH5B+VRW{NhRuj{A^HpqjRXMPnzjiah2QD*e> z@GT>WKvCCna#G7;UzAw^4I2&a1iV8)T2|LnM!QuDS z;y9`cTSA0jL4;mN8Pg`XlP0)@o=C^fnat*pM9RYZOu>6hAuyCcq~A$Bjk!VT4B)s$ zA%68}S7x_>y;5O{q)WRk&|I~E)P26UuR=E9QhxxmwsUSOjQ{sBL za*ngKD%|wEZ_N(vgI#v};ZTwrMvN>{g#Zn zKt0$}e9{@ECzHsfJ7ZC*3f>@yjXLReu3tWo*JQ9(L;XfN3LdW4)OG)=$RdB-2| zj~JIDzqWxvHj)KpIO{2nX}W!y>L_*3s|g=d!!4o6^6VhgikYNaZC;?M(`@>EngM|M~#z%WQ)RbC~|H? zODs-5X&KN>ib12FUwB{t4XphK2YN}OO_2GvkaYgWf@uDmKK-Ba>f0>x+cuJx-^NJf z|M~R4L7=!^2>>5_@E5bWf~A$^Lb$&Gtpa7bL5u`HWOli~1a0=Li?!;k)dq?1)<{H& zKNwz52%>3%oDjS-9AiCz_3IPR<=fE(RBA{FhE%~(xuVuAZ}L}0=yxAUfc(Z8T`Kj; z5p+-!__Hw6se|*Lv-fG@YTeNbjx2h<4gxyv^)1G4ljIcUX&pa68aU=8=CHeN;ty?W;D{F zm<7Z$&j3h0oPD&1B+5!Zj)K&$v|C6Wimi+!@dE?3i_!|I6^Swti9&gLf#J4L zKmU(GxpQnfeR%tnBR-{#a@R85A&ZJZ`8~wH3g3UEcd)Y>8%e)!rR5t+=lq{<=08w# zkdG1?-zs~92g`6Sz+v8 zaHRAgHO5+`Fb45pT_nz6c%(K>HA!uWoR-*b?H{M-S82s7$l;5)6O67ih|(JDp?i%c zdfW^{zw}EF!3lJX07b=m8ea2DH#2jatvMczCR-1UF>XAJ>=&+37MoWt6uJAyHNd3! zmGPaJo<3#+Cuy%3=3Tzy^11L^1nW+vK)Gi00qf7*f!SKV`~x34P=>aHR8h1e@3}J! z?+ga@4IK2x+8uT5kdZ)Ni#U%J*Y++`c0oU_+QJ-+lwcFANx2LY@ggm}eXY31%UDxcxYXkshRfolFM*onN8{}@~AN22xYIzD0#tnV|`qsf^0*D zrJ_?2YlZp?D|+xHM-vR;70vjfv1?|O(d2U%&-~6shY=~1vPk45#XkNIkq_QPX^GzN zXAj|95dXg;eg0cy_%F}je?*5YCC%@FFFJRf5v59Ee@hs-^zR_lP+R%d!1zOfjA?-$ z>)%1hqf-1b$eR33TI#UWQlH?q9X*n`qtN7xTy)n0rqA-wrm9^;wQtjrCNA9{)kmCf zRi7VMF}y%ped&Jk9ZCIko2X-%YMU5+#voS)n?2~&(E7bS1j*1;hT=n>yLQUh)u%1R zhQhtm9sr2*X*lFm%ZE0kN)MO%6DISU_T({Q-cmIez-Bo|a{JTtZ3fEH?U-NVo<|;% zT7^%QKG-CTd)u;jYi$~GgT$F$#n zS?hNLi*!8q7+3hAq30@Gq3)bGsMiR`8|(wG12@dr9;`tVKD?^G=`7$1v3V())y)@w zpI1s+?Xk;U>M?7JCykbn`?35q_r&uu!81+9pvc*tG@C@LNupJ>Xs^Aygq!i;8 zZv4WQ_yHl1kW&KXVZh;#;j$6#a(9(5O{c$PCdxwOWBpqdwKItlmtrx-x%1%MU_KJ& z+sme7m>?BMv!crg4sRHIu?pVvN<$$i$csR09Hxe~Lj)$L9K8KVV|*~5Zq~2l99{(b z9R>tTTl?@EbjxCPu$Q2BwQ8mvfy6&uL~8rj$5IPf&;|@4X@M0Gosr2Qe$taeKvOi* z>bGgH?9z1Xwr;_D&QmAFj#@G_Vz4(TQnF1wz6LZV^e%z@>Sp*`=fU7+t#=KoWd+uJ zOszq2ICnE7wmt&&jKl8<-AP!XAO;s!HMGy33}kbQYJ(r-jQaeuW>+!#IG8FkEZ%j6 zYW6j~e{988@Hvc!;^|@jKEEk3J-ZwdS~j<$yC-y;sQcu&F+2M>vRdcjMEQi**$#OB zh^kH;_7Z*+EftUw=&kC{g_mR-pd>GlY}g|j6BAp4Trkdx)~h_(uyc8I%S-ren3eOp z8h8I|@H$4}84AE!@M|2n*_SR4H`I~e#XzE@6hVK9!=>ssC+5lW!f>_Axdp!q>VReE z;idiS0OrtA2WZAsQ6z$uqX15wu6}^>WcXOJ%SvR3`#jqNkIMA6-TKgwS$sIWu6|71 z*32DH*T9ooDBkl09==((XT)1-k|OI!sN{SYf`=f12hx;1s~HwyJaYWkzd`!{ATi~E zG;_({LfImg0<~%$aYjPEja-kKfqd8*hty>!r)lWE}77^Y#}XT6U0J^ylwi0@r!n(8}o0_ANMlAuWWaf(Ph> zV(cRJs<4LqUPLusRLw(z&p(m)rA7x5vEzaBq*$0uG^%%ue)c7ty*g@-wG|ghr(-nh z<{I@#Wn5YV`4VxE=0+}$1@kQwrm@7YL?!NwpOQy#E+jn0+f1B9lP|qU4`?$&tZ|xi zR-|{8(NJL)YE-j#nzOZ8a42}W!?Qga4*&XEKYnvMXma{lIyVhV45O_T-j?+Oki`-weJULOe z9&{eRKecl)CZ6I<9Zg@XBhvBJNd05c#whHufPBJyc{s~3T0_gI?Yi&lbTtjT0gO^H z80WMQcWfV!SbdV#m`SNd+pene2OivtSyO6*TY*Alw^@`F#cNF^mfK(NG zh$p3nJnqmp3S2#sP<0eI`jTA)TqvT+d0~hp{Ms5Y`WgX2v?R9n4`r%c$pIuTlv2(W z*jYKknYm5{cO?o6<2JC#O3r+vIOp=1tJ(BKHuDZU?x3=`_(xRcxMOjKpskI)pvV{Y zMhe}!xoVqYM!{s_X?XH{Is;8qL1|8DG%~ao63Qbe*=uUiGB(PCOb>_3JqvW7$v<}I z%tGg?&xg8zFUCZ?)+2x?HYElSlOR7*t%m$mQhIy9uZ}DIrCj=$C*lGWA6<8_Dc)sd z-#hB^J?V`RH3Kj|S}z03uN(l=1h|9MSc&=3Cb7Q@ojxbcUU&-2;GD=$bbCMZ$=Xnp zhHIX=gR)_DN*V#O@cTT`XqwT4x9HmVbv-WZ752ML^<(qX%}>V<|lsrxekkY4)g$Tmr{EAIIs! z%HJ*W@ezE={h_#Fd5hSGLEb+oNa=p(E&zGQ1#gBX3kYf=MtW&-CW2jEED6+1U&Ku0 z{`sLvW-aF;_j0nm_?aWU7L;ktMELA^HiVN8EB~Z_h^J2|qCT&EuRp#wH#X;zevTOt z_X@M0_F^AlZG+$ZW6zU|R;gBLMa29}Mz#GF=|zTafP2rJlHYnCIA8{MeBxnTq8v#h`mr28Rc6p4J` zC$)ZW#Pqx<9nyi03~Cw?zXi8~fQ# zX-Jhv<`KfE`Hn^$P4nG{oPE=VLz z?ZR}d8iLe&?iK)L5xcp?RrH>BMJ-M38RT7lQ2(ls@f4Ml(RQ-vP%M)yRKnB#^ z3T1}OAY(i0L~e+?Pux=PTxhrzTQ+Grf>b|040W)1*B&)g@*&o&!h|An${C*0a}^f> z(%Z2DJOc!$T%X}CsWaK9N6b)fkO5u1BE|U^>TX#ycotsNWo8|E`nLldyTp6L?@(VG zF|xGQItCW5Oxwn{z|kb}b2WOur?RTZ=&J((75N^_yoaR=@D1Hk*1WD^R58(Mq3Cb# zc!%5~ye(W+?rKNu&dD9h)d2>9DAbZ7mqu4 z;(hkxo-n037m~iMBejQrb5BwIK6F*>+$HJnLwEQ-^#6{({cjbgtiyjf^SEA_zJFTL zq9S1`|59{mrkz5)2BBz78lr4DL}o26>XyEA0ekZ>5}tT8St4AoA9$l|Ybpj(k!>Mq zD6N8`R! zAX9tr)UvcAaq2nC6yTRhr=-z!+U_;(39>VK5^yH_I{VN*+8L+wJ8?~gRNlT{ZmaV( zt_#oOvb6=O2vLw8G9JTvEIR18YSniLgW*$+4ELErqi!U&^IC8L>E|?TtE?kfv)3q2 zq5jD>-TAvcWiUW@cy1cXh|?YcE)P23lOGR6s#{{FSTl>EAhUY1C%a4xUyxoBV>vfY zno91VAN~Q2+!BZs!3@4ky`qg(@U*=THEu0VfV>zHRQuqs5GKhj8Ii_Y7)HVMGZR`} zzRF7kjG>Jodww|Hzy1vWUA3p^D=fwYS)>!{>LH|MMAo{PojyK1D zhBJ%Fopl{IP($?g8b)+sRGg@Vfj`2earWSmUgDPfncb@ok~&3_6Bj7h{E~rT{F)ky zkR{xR@*14MV@cBbZElc@=Y|?S@&FBUGG8f^4Ih&h4}S@lh_Yt5pEez@xVPLl994Zk zpGb3nTfkDhh-M%I>Bx;n!I0({JZ41^6J{c>cNwI?#mm_agAN3V6&RX>3WKoGZWCkG zX=TKG6^7?1vTyQ$bX9L)@Gucj4(l0Si(`){=>8l9b^PAf6p(>%pNW{G(7D~I9*;{= z_F4;xVt9e=qTElC@PgZV+6B|;DBlg?u^P0b&{4e!29B{FUxhsFn|rnAMxNVC$kShA z*h^SLNgRrNF61uaJ5iKNmnvin|NCHP9)iJoK?7N}4E{|_;9=Emlg8khhU+<6cz=t(A%T$$Tt$n^TA7`iErGGmi!Gy;fX`hfS{xbc z{w_oom(C;@W>1OCY}lk9^oTJuTWmazZts}_7y-8!abhZ>A}0iW`lX?o$jphS0PKGRuNwU%uN2?QPI=qi&w7%oP_6HI_DeDFH_2m>ePR3g2d~G=VUmkg6{`KxrT{ zzgaUhi|vUd4w$_NEZQB)glS_0T~oPBpriqrjprs~(Ky^!Qt`3IZy2j6*$XcW<;Z3+ zL^9CdgBjzTn=u>oGoh#{Af29j4fKx(zbo&8C+j}w{X!^QfWF}%Xy1btvt!0zPjYNN z&BP*lEnf~$xm3z>Ea%0kpYSL9sgm$_{|}{9{85)CdupTm@7~Nx32t)|(GsaO^kU?} z3D!(8O$2*nQY@7gQXE7M7`SbD7)|?}V9#3Nfeg$pe@21fm8dMt%OMsR+Z}5dgq2rt z4-8k*a|L06=)dd6^6~8MLN)qc76^I#hj|Ad21YuE@=E`(?QtBM)P0F9UD~a)T4Z z^dZ>y#^*)3WrU`tSBrV8Z@$O(HEs6=^F42ShZx&h7^%`_Vr9nel?Tn}(o-mZZVhJF zn!X02DSws&h_V&rw(>Eq;W6GL3&NYy&F+0#MOk3vk!CnryiFu-4d;wnYf3vF>Tgz{ zDS1`q-hEMQL0a7UVPNMJi$H#}R{hinD3A<3g%rX-;+s zpqkaH!+Em~JQ&QyfGiElv|7tOE`%2SZ#O$*Tth<4HwxZ7+C@E{a4^YGnvP`T{qTMelcUrjs zv8!Hb|APxDF~?N~<>^O^ps{k*z!D_U;sMd+Wb3Z(JU_NedUdJZT~v59v!7$Bw$OoE z7Ks>?+Fe?u_p#f292xqA72-sc6}8pW-$qAWWj9!?W!3r`Q(b_Lq3)Op+GIe33BS#l zf5SmQZN#XggqvL~J&(`<9Am9hIc{D%30)vrRA!+ciE4>GGQEQ-n2=La~JN$iCO+BUbRgKs;kDPbjz7m@QVO*2-U9rjMaV}c(FU^ zuo4QZ9;m`5VTLPRo$A~g7&1oa7rI0yQGiyS|a3{FCySux)yE}nk7k77ecXxM(z{N>$hv4$v{MtTkx8LqQ-Tn=8-g(cQ zIWt3a8=>+<+Wzqqn9C>JKlXW0}P;AGrY}P#lyVms`7&5 zY{f&pj8)BUv{3PuDVx4q{Q0!a{IA9n1E}xnX=XKyIr;}Zt?U{+n{<^NHNw{DrK6p=Ia9slc$LlXzuyU z&zs(01cSGl({Q$uUEh*SH+#eqPdYDeI<;UIFHj?x!X?IL{LEZX&o07CRLNU3+e<+x z1Sw6h5WJUkxC(SmC&AUQ$59?cHw)VPKNw5@$krKbYHQIT5{C|w4tf61WZ|y@qLMEC zCqY!+1-p(#C8=-8@g5eum_%PBujXSVus_FnWL7H@12@t)q+Y4@BqUxw@Jp?)N=aV! zl6mt_^Lp=ZcHBJO-GUi_!(tUOS{hRYelCtmt5d9HoQUN^lOQ7Qe6=op`{O=}zGLdC-L8gVw94$abL5o}{SpLAV% zY-x%Xu^+H2sCxtZOH}EG*mFZoi>-*@Y*?Zt4Mw=!ln7u|=0M1#z{$+lr{)^LW4BWu-J3!}@ zi&)8pA<`4@`<;>z&TraPp(mbhiVI8F%nrZ7OPT4X-x}rX-qO52djxplp;;RFN3&%? zx9|0=*O5L}M_*3)=(tU$ral!L$OiPeFemJQv zNr<)%rpHEb!X)Jvs}YsRPTgbl1N(M07P*URbKCV_)S#yoBlF)NqJ9E0d9wZQaaOha z|J8z$RBZorCU_AOTdKJR;Y(yzVXdTB+o#&vK5DN|BBQv3Eu=k+^>ZC6Q6$$N>R&+~ zLO$k(8SO$A=(AjjV_hg?H-|D4lE`0l&2$~$PSd_Tz5b&94sH`38yh7Uge@vJh`TQ; z#ez?J*)c?sEVAD3^tt8HnKVEZpi!Z_$w<56fY}&-ro!4)rfvl=!|$0tRa;s-tuN@R z)LtXr69u|Nw$C|ufAR!4^x34ILkz_8{H&~>`Dz1%gcz_Gv%y3J{;uEQS)M>wMJDaY z*M4p{zFwz?v755_vXCYcf?t1EXn4*BFYazzQp0TZj0VW9v`KL2T4lk8grjV8DI_>a zFJdoW%RWhsI#zqWoK?r9Y>_?r?#=9|h7+j5y55C?fnjQDK~TWjrFzmP_;k)3lpd{F z5~+ym7O4hwqRf@tAVM6LkJzLoz(QlM;VIDU@EP2|X(bT=Ryn%vW^cGrK`^3tIrUa} z@=+P0x|3uMcp`rluO%}CJ3)?b9W3Y!0tZv+Pw%I9vl7;~_cZ>Q-oS&Arq zbU`In%@GP1hA@0Yv!a94Wce?S{plj1)0QF(!c^vA?7|1Xl~2?7ya9_vp;3w}syV7R zPG1KlH}4Gx^c3$53iSdJ2Oe7a%@yy}M)eTk5Lq|rUgjb|bfviNKQ z);~J2u!w)ZDHOV)DE4CD6OFxR z&_|}SUX(%m)A1tl(r9a!NYgLSq}XDYY^l{@)mZ869}I4Psw=?5k3%TXLwW=y%>VAX z&7Z2*!`6mg*wDey$kN8r#q%!-GD=BNenA2C?R>dv9t{v!RvIddrwiH9jU5?Acx5Sw zj2d9yqODAKv{rP2{#?W2Pb0O9cqxu0Zy%CT8&WiO)OL`0k$J&=|MqrsgYkW38v<_8 z#Rg|IuQ`acQ({UQuLcfPk=_t8IU0bF(RV0rxD{n|gn+3A#4sXxU`Xb(pAhVv$pz0p zU{a}%qz8*37>R@98Asb17Z|?4EMMMm*#qGKL@a(a!>tb(&Nvpx_g|@Y)Dpj-d>Omt zfwsD8BSBWxFkW$3iUgCeEE(XeQTPD^l`&^Pk6|F!)nr419{_I zk&MC6gE?fMC{6_i788be2N7+qP`<}B-It}IYaBjg^%ZMmhvB%Dz@)sE$8<}IS~hXc zL?a`AQ#?*WsWc2(24zCS(1Nx(7AMbg1s<=1>~7YmlpatF%z=47)M?F1CA2SEQ-4zz zHPkw((w;$jj-oG}(`G&-+&?6SA1B7TT@j$}rCNP_(gW6VT`+4n&uFhpHQ2ax$gHU1K1fqmH_tWD&%Zp=pU8)?t6(!z zW3U{!3>`Kx5Ohu7b%#E~9%|S>-^6@ET%Xu+8J|($IbJjnXKiGjg{v6}S3l+@q&I#| z?Bo$;mz>kBUbC&f)2Y@jKYrBzd%gb0dymAi*ir!+zWRai;REykkedG)QGzCh4xkqQ zUx3x64g}TbSnpXH^LA_}9IG53Sp^b<2Cr59!7OcH!U8{HY=zdL9Dr38CUu5YqE#gA zeI9337_UnCKq>%B;=;2)?jZm$A-hbJdtPq2tD|Ku8hBTD;;v|-0m3k5A&ecKu3q>Y zbiDX(x!*m^ytjE^_0qlQ36l@A;tmp`phn6r-w&G=Fz`|xZ;5%;ag{4fI%L6 zxkn#d_L3=)=}B{xf^6%9hIz9snQ?EfiPgH!Cw#ROqD?wL22L42k_=Hl{I5wr!#TM734b7xCr?$a`pbVGd;$ zU-&of?p72Qb*^?!?i#{nXX27NlPM5mHqB$EQ>KqD;Po7p{nWs|zrm(K-wFOgsB;@|1vF2nLB{DZA_1<0drf+fQ{q zbtd_I>T2!FSiV4`b=gt8libR?O@DzZU0R15bUdQdBHY!?Tlte?JV14 z_mJ-6#IxVS!@JmR0n^>8vU7Qn;|kS{a10yKELO|t^JyB^`pi|4*Ya7RY0>P^1ieU< z!Y7i)dRRI#)o!l*j%31qGz^^0s6NUVYvi{({f~sXPV!o3(=5`at(7bP7?Y6bobAqN zSSGw9Dvs&ueW_g6p(awiZxS@!3xYGu7I}JrgpsO5_oT_>3#8$p@^&}zm@h>5jp3s2Hi%g)8!z#L2YBN%M6{4uh7$`@sUwRm zOa>Udo~g9SvmJPuE~hb~I9753#%+l|Wz&ZUo4@F-V{AgKk4vxf1ZDT`9xoW?|6RU{dw{zzWr@0@-O zs2W&nj$zD2waOtjmK!&$p{Y<~@)hmcj0Wzx@D9(VNe270VcSK!eS3D_Ac$zgQ$cof zI0D{90RJ=Nxly|zNt-);*BLBQ#Ff`1qB5!DmHaqMwGS=CQ0yTB<2!s#o@OpLF1#Ng z3hdyrGSe3M0c^!pJU@=9`a&%dP`djmS6a};0Uc!+5o``1{ex#G;=o~Gmgbzz4o(gG zo29!2`q_=dhKRyXtAe^BI+cd4%<~80Wj!IA{vT@$A+|aC{dZx})12#*214o%(kv>& z2*&1Ev>Q?bc*kO_Mw4DeZ&Xnu1%?+khRqSfq3Z>d;X;&`v8wwF^I%=VNwKg@RS^Sy$kSn6oy zV^PJW{o3Y<`e_eCD4|l#w)E4gbeMmS;b+A72l>=snz&J-W6x)(Qi9^>TL(d+aOO(H6%St)#u>?|aSA&6t{YDb*Mh zCqrD(h*!3elz1X22yuhZr`tJZcpUwSG4Yw8JG_Qc1VhXcdvKE8ad?i&xjiv^e0Y#h zHwed4T>a~u`wL&<98^B`D1g5N=7tCrc7S=H)TkrxBhj)wykb=QYcdF7UH$O;2iMA< z@^co?to3i@=YMyw>|faw=u-2axwF5rsw72eX^^Y!jZKnZ*}}T&f*s#R`OFJ#C}O*; zH21c2cnE z2Y_797$u9t`O{XWOhF(!@2ckumeiK8ZaZF07DMWi7A&_*HVxi%P##YyQ)1LKcor=K zc3&}vaLxB8^k3mOaQllR44JQtG6x25CyEVblyvb_wQ{5IO2EQR^!>UhBG)Wv0@BHk z?MmG;>f@`kN!M&;+GLx9Y07G)kvE_Bb|$DQGCH)@vOn+@9buN4+>m?HCw0b3HT%Y& zl>HQq(t7#_w)}_NSihc!+JM;d7O3nL`d_#WXe2~KR_3qWhrd&22}3&*8&f9|#=lUV zA{A|U6hYLt;tjVBQ~zcPt&0?xB5-t6dV`^$^0`7CBESRJMpmP6afeBV?Wz9dR%$L8 zA7;+0;xIEU7_NF%l= z&dCf18Jg7Anb^qmdfl(yVT9VhygTWVBE4$bE-1e+{jm4Z4^kZh+RmAkE(X-@%rdo5 z;;x=?3U&}?<>GS@XpOJxct87gH4hCmL&1{wW;1C3dHJovCE8Wmh`wP}G4ar6L%NuS z^p!$n8(`K*>f5+zxqj*1a}|x#p>=3m+sRve6P%q*#Okf}itY~<-8JrzE#nENkoSO_ zK9b>zQ<;X%6A4Uxj@sjvzx{}5_D&v0@zA+c(lXJpuDEW`0aTQbKGe>iP%V*fXc4FC z!gCQ)?~G6Py5lJE%(58}8x})Al;ttf;2!X|3GT~=ikXsmtJ$(y@0G=AX>6?;GUj2d zvoQv5yczdw?~CQ+iky0?b|6MUJHEPv)Gj?X>r}}neL0Ms8Z4VjYPd)u)LZPLM}QTS zbwL!QxX4lVR*9B#v1(0%BVNCGyA3yN^KhyKgjuK+?aXBC_vTlGmoH>21WIthz78Hv z83w$-n$X785FaT$GHV=B8|6G%)5XgOy^oWTjWsvPhNi@Zy!F&fL+H`tyMt{riL+Vg{bgMs~ zj72I7Qhy@A^3z5t<1DQ5NGiQK>m(Kf!<_KAGW-k+k2%A2+tm8FmZ5FQC=#{LKID31 zt1fFx67`u?avuA|kL=y%wO?w&3_5U52(8~C@Y0>IQ z#mY`o1MQ~!+7kH@G!ok7q5uUir<5Ppa={YMu=D6RQC^a*+?^)S{OBcp7~Eb zgnSVNqi5|j(r6PD%BXIjUvH*@*Ka@IZkKiK@LW}LhP$-X6TgChRqO=EyLtG{MI6on zz}&Y#&n8?LYt1V(?M6v1g%O3{03!z?T5-3maG?W4o_2XJXE?rXY-1)@cYpCa;@?V} zrcUya)k1@phPyIow+d^oRi%b3X-Ju-G=Kk?alB0zY87gry(=x;oH-wVBHU8j|BymENCQ>Q8Vp%B04J?Q*xk9i6_o6NHc4S8}mUS_e zL!x5)!YAm?xFGTqb8V%UOwyRZ^JB!xXE&K1*4gD{#;BVje zUo-n(UxTvlpS;eiEagrKE99>=C@(-Gs;O`VOJWHt77r#{2G5gbnU=^nVYeZN^VHxY zP=NUM!7uS@dR72M+Gv+=vdw(|w9WZq^Y!=hi2Mg?59>WeT!eWx^gT>5v(RKxoETQV zx;h>>4C?esEf2FD&H)iV?a6&N817#MF+=mdjvXp|MiQueS8VRQ=PMhZ(4>00ry1fA zUy66T%N=S+G4s7wH*5iYQq7nC3|f3tR+o>IcnHlML`#-PgKUNLOJoBAUUfnpkK3tk z_NayQcUmQ?Uy?nSP`Dfw_Vj{7ly1(=RI*0N23)e)JygAvT*D1#k@Ai^58mp?g&@pF z?nP7YJsKz_+EtLH_8_L(T>`BRv$MR;eXCtswJEM^Df=I-Wy^N!P*BX! znsV2a);!5Lz$ zU=Yg=v4gNMK9KZR<9(mS!kX}8(gid<&bHx~@nj4a`yqtS-z&^VZ<#GAkJ_~RQC#yZ zsOW~uHUkjrLsC?kWQyML$u=q^>nXx!XtBcgCeRse^nlxZY_G#CtM9H58OUzp?s;2T zPiaN(O$n{?eo4Z9dBLb+3^3_-Mqm0-hrJ#?TwUSg6K5apuvOg#=jDvi$zd((Nv^X* z_onY8(kB>fAw3#>UT7SK?qdqABV8vt*BNC9>OA%*BB@`@J3 z8VDD@RTAbziFI)v^2U@zpn^Ej|itR*s zZ%s*AD5+ht4z3!Pu0R2U+Elu`RF`5xJrcbvC&~v)`F-%yZd#1cB$r~D6h3nO{HB@t zblPg#hJH^EXwJ6J7!TVHQ(~_;nv=#tV=+#ouNV2;qO~HgG;c6AT#JZCg{6|==bZ;R zlql-xCNLaEa z8KViqU0}7#L$kuwPdTo3Hw%JQGPq3ExS{eeRt;<_IC(NC*2uXS>#xpIMn-t|EbHu7 z9}vsPirYj0mDfM6ZF(%v*bv%KEImZZu-^G#R9!>pc{cZbT~2RbB#su|?~@FRF)=a< zQO19dMwT&KS5&~E3PgoOqv8qW6{3y&Dt=)z3dMUTW~7ZWaRM6)k&%kJR3~=|#V^9i&cl4Og{L;@mZbVkZz#h^tR zi1snS7^y}YOHTrYY{ZA%ncPSzf^W^bQ&-0^q>zzUOHRLIp*L8I&AH2VG*jg9AN|Ol zvGEJhl%*4#szz^ddQ>svO^}lewX58pXKCx)kzlBg)@IfSRK066#OGngtue#ioz}2k zQ;oo|NZZvLV#Vp+i}!4sbJ0B})Y+bs(e8U@iX;p1 zI*eC4YP3YYXc@AnY?xG!Y#ccchu&=a*6RGG^!ZgxPa|jHFPV2$OyToz}8SntU27(9zRXaL8V$AN%T$ce_Gll8j}mn?@whYNIi zLT)@Tj9Qp)~a!Cw#bp*|X+zkSEpb8g zOcC#3#$}*l6$L*!_#RFQ%JHJ{HLcbh`Oc5fdwna{DPK=y?J<`kmDEdfr9S8s$9vZ^ z!JK>d^bws?Aazywn~Mf_iC8q%AjJr8%u?t;DEc`6FgCnhLf9j$=Q^F;e8jWdbI@_0 zlLhVq(@s*8Pm_2U<4j7#373{d>8}(bdw)^q**9mzu6R ziaP2BWc(zO*cXNF%4903(B0f7tvI7cC@EPmfPjCws|3L0)Pziq4CZydxq|-n63Rh&xHOU) z*)Di43~1;R$=yFcSW5(m{H)tgB`7syHz{9Y6x95nd)8f?o}Q$9pfghIlmh)sW>fLg zD!C&!%`^*1BAV2rnuj?fJ6ke(XjNu%WMQGf@eW`VairlCA60hb!IezJ!u`}$zXLih z?F9YF5ja++r8x1^b*Z(ddaWokZ;d*-U5#OB@lHjLqtPn0`W$Jo3qscOBazEsEu4Ge zEGCx5b|U#Hjrk@rI}NWUUFD&imNuhnogsHY8f>~Tl#VmRdZ!}MY0Ve?h003Gd4*zH zX?HT2DwX-i*P{1HD>I&^)X*6#IZ5{?J(JxRgrB_5lcsU%Jm$X!!H|pJ!a@L*Cv7% zTjiC{RXP+I)rzR~K^#IY^^>(tc9KHTb;)CgMM_(%d4xi2*K75iUBxTi(j7YK9ycKY85gWF&P#4EUd=6D zWB_lp^-nYOeX0t>-@ZHw^kFYUzj`l<4*F2-FoWmp!Gi1W<^_lwJ-{H6`pC9Eq!$s2 zyb?`R8Ds#f$~6iGIdq)cKu&V^3HuAG zh)HdChnoz_E_!bq?hj&7OTJ z=cVxzWfOl$FM)>okjq3WH!1!w7wdKw9=E_VGZ*#A5<$5!R8y;;iI!NJeP^E5ZoB1* zcB9X|aL0RmTYP+%vC7M)T)k)^;ghuIyy%LCf|OBl=6>N4?4gw7!{Xt)QM}@1nb81n_)1K<+$|KJHMiYp&IF7 zGZi~5g#_Hm&3(7tZ0 zBD7d1cbT};$K?z~knw?rAi&3C2q*O-(@Vn;%@Wck)0oMb8*Y9bFPMLrxhnPNmYp>2 z3j2)XYP0MpZ&233Jqgh@P_Wt8El}|;mqlrrIQ5Hx!}bOPY(mrUn*v*8BBi9kPEj+L z4ea8Yyf~Ponhciik+t;mud&qiIBcA7qal&BI47>*tv-^;MvNcWvGh{xd329q3nhXW zcS-fi!g62FG^Od7$Gwft?Rp&AR7$Lvh|6ZCO?RAWBkB?^82D6pjs_6{r~eBGift8|R@x`qO4 zmSHieCnN+49i^$1K<(1H*KwGw)Nf(GMmu+$?W%U0sJwA1P7AC8Iy40Lu>T(KKYLkc zl#c8oLGjK7#asIS6mNTDS6fp%7sG#zczmB73L_H0j~z$`ue}BV0}gZSFFg9u8B#Sr z11xF&a}%M^dZtM`qm#|g-)gsYULV6gA@*9&c0(9-epP`E;`l1fe9fQZH}&J~`V18D z7>64F6ImLgg0Ro*$3H6fl6$4xW4pM1oFL{P+(UlzSG%a@i7k+ax=U9NeNH9d;TGkNf*LeSBYTi z*PwPgrRgyUw8jSd#4PM7xkt;#T_H*O6|J?jGp+57;aZvI}yosX29+z6Dn!dJH^R^BQU@_kg#~EU*s9 z&=B3@{(I2>Jn~*dj5|J1z>z^3guwqL=>J850L^s&rCUO~ao#ROxeZRAi+TpWx{C(x zX)zaCW>iYpZP&8kHtLo#X@~QuNv459@bdAEVlU11Q|Y(TEE79&^KR#E`@d?;6gzDQ z@GbC#wS{}g$?)rax}T^=u{DNx;qO_0vi!t~H`M;T8V_Ivq=hn zpA9isSg|FTydMvc(l$nT69N|&zO|j`sp|3atws6ZxX*ZfyIa2A=_!kzh8CG(%Yw<)wah-&s6U%cW#DlCn;f(-t=!eDxTM z-$?JCAxr03Fkftfx$pdV+$Pne5dXeRFb;21PEvHpP#GDAG2qfWpo`C;gd5U-kBRQ| z4p1y~-YW-~K2a#$eswv`9rA%e&bNe_;_ zfVssXZC`ZoD1ln(6txbECCj%{Na-E^@7Vk^@5SpG_ap$qChC8RO{TwS5dVZtDG)a8 zDMVXn>(T5fMuj89WYC1+uUtE_nuVJ?%-o~}{F0!T2O<5w^N)L&S$=3jY|5BC`}xNX z2V@2{^6m*fjC+&|55RxIT3>WTxPh?SY4!*I2~V>d4d}q8fd>b;EPgTUt~3lYbP5R( zly84Y+GGEtkJ0|o$2kA!W9Cf)&9(;xdv2|?cZg?SZD6@AB%X6mR)I-bi1t<&xL8hU z@32-;f;9wBiXr0tMU^N07;_K<&elGo{dB_R*esl?dMF@$?1Zh==YoZ&{->4yiAP5? z>M;*PF{&m6LuE`BTaS>AObc-*nPw-MJ=2c?&0C_K)r|E$TcfjoEc=Yfj33Dugl-@4-2vSX0pqeJsX3Y!z-*-RL?tN z4+KW>o{PcZ6f}&gqupTOUpVn|SvDRKs=-&lRqUya$2KO;ixreiYx`0gXy8({;7Hi1 z%dJZs>>m0^AabdDRiUSJYMv=D!ZEAmxs@yN#{cZO3vn7@TZ&h5!9o`+jo1~&w}r5i z5Bn)XbctnF<%dGKwp`k7n4KLCrwg4WCdZ0Ym7t&>Acn47hqovY_QMEOTE8!REA|2T zS!N-Vj9~i%GfT$RW-kq$pl;JdE0cf+ufQl;OmB27&F{Elp2coZ1=_$m9s70kx0kC&Z+}zg?R?pK{Y2zRZ{Kh_8?}Bcg6PWTe zuzX(&nU~ymbK2)Vc;24`xt#aNzr*00=k26N!&RF*LfmlKZ5Ky_qq@-SCIf)jGVr4R z51)DYfAEwpdP@50F+-guoy71qd-g!ip=w^!f0BlKqF+Av}Nztplg29!S4kIALq^ zF=ywk|9|=|_aFWCZ}`M(t`*XOD( z*jUwZ9L|vrb{681;ImcD(r$c569VY~gE9Ka2o)=lwrY*9UHa`gQU0m@vNi5ecu;tF(OIu(@f1 zY|PxUC0sfbJuvlMW_8EpeNK|2Kx*YvxH?W7&8IV|qtkzw$ozxNYO%m&bC6%y8#I;q zAN}eqe^qZ)ZRLS#sJ?WCj=Lbkc2VH`Zq*T#|1hO7UO_J#Sf$~PX^^7D^N^!md;~7e zDgxCrhb*x0x8E%@vTTLy8scG0xm$Gt+8|L9qjq=q!NUXRjAz?@x99VS{)c)GY;iDm z)m!3%egU;1UYQ}r&>4`h=!|xM6&!#Cu3sKXj51K^!yo(9hPiL75qqsp^?KD5V2?^e zHOeRwn0}d{2~G{itG(`ylRZR`F1NamADHZpd;ZI20d%5{LEE9L+z>xiEedD%a@66q zoMAoQoTmafJiNPnu4TAz>vK*zBgktIiV>5UJN(HoZiRCv)WF}6&((AE3J)MLP3vr= zhlHSSzbL&9WRqsILTE)QL>{ZX3~IQnABafbxJpyt4yz*D6E_4oHTHW&i?`h z)YxUKQCgJyO=B-+!$)_T5mIcJA-81VsPEX-jzz=Y@F4hACj?g)8jn%t4FeLjl-?IE z!QnU$)5An)YtaaEIy@HZh#SXBOv}0zKnTx%Srrh1eXXH-nFRn-W34pQ?E?U0eQFG( zg}(sd3NFF|3@>>ihQx}9fYu}zxarLlC-K#Kj=WjeBJ`{#nC$?9+Jc=gYFO=NuJzN0 zK$V_k#;&pDIngCYUcG6HA4zccm#J&F*G;B}yrdn9YX@q*wGLP7@BF*`><&jpYgMRCEJb z(Ylt3f{{b+W}jEwVN%?|@N7@v+qaMIL8mvln0N06<)0#D zv=@0ewxe~_FRs2d>xT&-n$~)#(6=?$E>Cf_g@T{+V=2i_?DE+buhI6+Ug);$BVIU9*E#1;#3WmVt1M$m1;ylg0Y&jmBWuqHtt^u7m2)t?X3dwSpm*@owIcE(>b{4u+6^RY zY?eeJh>vZR8Ys-Xot+iAu)f7Z@rax*BgED=0fZr3GLQAdzPUeLQy=*j=pK1WFvyYs z7=yVVP&eY`GRiZf2+?+FjWbV8dQl8x6CNl;&dCN%b;u(=Yps09s*#?1*!nyD`9saA zdHM5LL66w&KYhfkfBj%oZIwaIL0>tkh2aOGkNQZcbrzHs3W8K$VbH*7>6J`x_gHz? zI0%nOC_nl2BOV{hUotam;HD|^KNsNMgDIyfWeJ(Z12=%D4Ko|(8yEZ_6A0#D1%=jZ z4H3YfV$D(6A72!zMHNKT!G&P}XzR*fh6FwnJAsU24*F6BRKpC_L;;X6WT-qUm!X8G z7_#(yr3T?Ulku0C_12+Sb_cXOOco8zwCjySydcw20oDlZVdr2}{_Io}{KgebF=$Qr zw{J`H7{$qYGp6WmC(!JAC{~e#=^M4L`IoYR3L~<>TXIZ%l4yc@`!vEtx9b3=nbhV~ z`kMWq=XlW0ok6DPzADr6bfqn3011d6MH1k!@yY106j*3^)@yjina`dyP&^kG@uMeG zAX#@fFxZQ&x|nQUvsOPFZLEB%JaQFI^jWBb&f^p?z~qoJfoQ@G^eA8bdPQFRbJHny zkv6O{4<3WX}9-f_t=KRkjX4-|VQZ?xb!VEx3sv<+h4pug^&I5)afDW2Q zkf*!aoLqlpItSLbsa1Ejp<6n$WSp8BxzTo6Z!bCRf~|bJU;~>eb%7xU96mxr;ZkS- zxjz1Mq9B&1@gC0n9z}Ds3k@*CF!z8ywBV#&LR&{=)6?!yc;NY!5c!sGcn;w^I=e6H}yody8N2dp|3E9se4d5#=ej?>UyjF{L8~7xA0XijyTh zR41Q-J}HRynI^8Rs4Aw%GVM& znt>;>Wg{GwRVjc|x{V5tmU&*YJ;^rxwhl+sq7Xfff6mFWaL>ES7x(*FaN zM$nSnq2n!tXUQE?{JiUWt_F0xFpHQ)H~n_}peMHX=vuTkDz8wSdk)f3U}4L=C?{6* z+dm91{;5dPNC_sEK~FOJ-|ve4MH2g4waoUHC)uTD3)+B&x!oQcNvB%!Of*xtiJTMpE9K+|W`<8b=Q565E)Wmv?{htUwdBEr zlCr~BkSxR-8|Rzn4KrsOM~_=Q?;pR0SRn^`$PbA|l3#Icsypb4!m+E!5Y`xI^~r)W zQ^jM-Z+}|#rTE=Y&z{oT2?GubO*4K)o5bT&NaPQMNk)Fq7~-U%cn}d3?1K^J`O*05 zBG-opSg2UP$L`;4k!{&^=*y*TqrV@zhcie$=d$q%aGI->1(wAQmR-UG&hbTv8E_ASxqC#_ zyIEJYV&$drpbvaov0psNhVuB8eD+y~=3Ju_|3|j;RS1mszVHIngPcJSgLcw4LJq)O z!gnKu`)^31R+N)zL@2XwYJ9^cCh#>ovhXR6>I0zZkaI>I{*MJ)EH;h`rX>ilEbAlb z0rISs#({?U+{u`9V`1~7?Cz2Cr%#6YnA0J+T*cbVQvP4*_OX}B2Mby}mPCVWGdleB z;Du$5u=xfKu)BLx>hIBnW3uNiS@CE45v&=m1cb4YNkW$mFMF25Vayew|AW!X|^ouX3;+l!rl zVIB7xtMY?HHjUY_^Y#&kKEwy$LCAXYPBjo)yk2xq6a|u3{>sGF zpVe{I@!sK1nI=p=847=q&{_!^oD$NINNA2{K}(L>7?(z8Xk6wvMPL|X5;ilV6wz)f zUV12o9=i_w;7idP{6PhaU&%qD6?s4u ziyvW|{NsyCZcf2Vngoo9huVAOfo`-bP4#Fm|+y;^7vO|Y%vK5xTxRJio;=fn}TvS zva$$w@Q5UP_|^CXvQn|q;fZCLabs4J#%qbS=Dm$(M#r7$*-J)G{YsOK=C>Majg1=m zmRRs*ocTEI&WZCx&txPIyJmp>MZ`k@TVh7Wd?lkRRRuKtWMg`k0Rjy}}c`+dc<_(IL1zSi$dWc3?_EHiy>qg93DBfk8MmN*k z^7fks=QF}MX85xU>4r7g+r>>}Z1yW%$k8^boJBdBOI=+=t~cm->rl>_6~(ue=QK$y z>?*moo9V*H=UX3cjxz14Ao9-L`uERT<%g5LUTeh7Iy%$61f5R;;F%};&FA-AG*r5y zYrje5ZR{k#u(9|Nd26veA&h@?)Ha z_AJPLIjL6N&%0j`_0rp|Xd1L^x|wU{4Ccfw)pP>tgc*X{5J2|+u~MsJWsX`Dx)ptJ zgt0f7MZSz(z7k3V$#2lKIrzF8c`)bFJo%RU7TXS3PHY3!SSK~}`3ggk@STb#!AS50 z-VcLLH|4U|>|RC4Wh&}$r5+oIP@t`~uCw`|)HN~zS3RB1yq-FW-L+dSVd|At#Ywq8 zUK>|SlR)JYCl1bAuNOnY^T5ZIp@62qoc2(eJvG|er?lJcCENV7RZ~;^7YE*E?^-j= zu}(!g)fS@#-DB6p&Zd-Ll?%#c*xsl&m}bbvt5O4LTv3H!Fzi%^X_c~J6c>LD78ZKA zYnld6_fJ?3v$+0vb^n_#dIcgEV45?udR?Ubdr5l!Ca{;MBVkL%KcMh^XE36gVeKBoalula1HKYV3?i*KP`E>=nLfqi}l zuS>6L3g~=9Uf{WPOwW)X-m6jbci{xuH?;MXk=K;j4dsUN6XL}6-JSv_b)OjWx6Aqr z=I6(;H^WS08M^I{^a0B2p4+CwS4_><;hUlAlAiFi9)Y;(qsm{^v#}Zj_G~V5`c-+R z(Y;_+900VJG}@b-ZZ$WPQLr`!7@`;bt}mb1FA@CS`}j8wW0*n^bF-Mpu+Ab5w}A!g z>|z_hFIRV%ziyO2y%$HfTHnC%O|@99UBSq0Gq1NataB!@@Y~Ywo2MH?q^A@J|3u;5 z*cX)!B8njt!(uPwQt^pCb4w?#^&Le{Fjj z({{SEi#+LNH#VCV8vpDz?n-?!U%_w?4Ke)Cs4y~MM=Tob%jfJfPVq)Lm_v-<)f)Y9 zGYI6tCGt&gog0uHoIzsuZcTci9^~eIfruElx3+r!hoAh96a7Fc)bTs0K^g#3eMSE- zKe>#hv8kQ&Kl_b}lw{>mLAwB_5GLyp^eetnAS2)=^UiLvB4IJc!&zw5Gp>837&S{S z2)CPuzR}RddR#(2=r8(#rV%0u{R5$o3aNfSEmg#vU-b0+f26%*VCH?YEgGwnj&0j^ z$F|wAZKtEBW81dvbZpzU?d0a2*>h)RpS$-t``i!tkgreGul`l5R;}d&dWA$S!(*LFFj9Mw?PoJf=a|`9v zQTZcyZas&I6WMIyLs=bgix4XVN?&LWllQ(;@Tb25=Zvo2_Af7m7D8hW@r7AW<0v>z zKchuWhZ2PizQtM$j_2pGA^26utcTjD5qAg6M{0-93f+jV z*_@BH^Yn->%^X`BMI`AR4gW*+$ZJ8pQ@;Z6)<;U^0=64k%#o5k@K54N*9$uSGuH*B z7M+ZA`5!Ye1{QOiFzgwh)(B;9YrAitU}%hf$=-2!j1Sw=x&04_#A&P$Bc7%n|H53hjEUeqze4Qz z6=K2vn-D9Rd;F*P#!UW2b{OnhEY z4{$l~-0qK~h#z&n<+2GZBV-QIoYrw_Am2LXUZj_;ilt>iZar5{%8BJ|&cAauB;nPp z99c@?-^4Mt$XQrXph%IAz$VOY`w)vROMChy2;G=pkg-ge-pMW#e=!_3ni91qDK0~D zWci&#lz+|{i7ICK#Ffa^OApHW@G{;QK3?6ve)u_Lu1(AQY&%3rfP|Cc=Rf9GWIm+Ha4 zUQ_)8JhN0nR>SbwK+uR4CCx>nUrL-|BXDSM&5P8W-C`IH1ux45&KkVSSG@f*y9F+U)gtWsf6G5>b@4hE;cxnm$ zY1i8=1KEYf7_0@3riwep)qKA7eOq1UBZh(&y<@9|o;9Z)1x#_#i$2t7Z;NhQdfd_- zZoka!Fz36L;vje1!uJcr5ziB4uPg?|B!%RoLTxqQ5oJa(j&+shQpx}`IW^++%aem% zlUmwn_{GwEgnO3T zj>DamFnboY>(MVUi&q*BJ#cB6pMA3<<*q@`Zb~A7l}+V97quT!%zb1FSCiO*tg%Jxm|NtsYaGwzKORem9%=4|crcpOg=BBu}cyz+(f`?>(kIB96Z<{!=XpS@TB z5lAUgX}uJNxC+Za1>}`vv9m^>PxDfyzOJM#gCKcME1y99Rm071Y<-%BQf!7j5wP?3 zSsN`vo*#!f6EkbxVp*=jfVD?BsGjw)i+97o>gbg1Y<;0(h6Yh9wIlLwn;nN!RV_vap| zw`R}eS1aj>N-Ju-Oq~u16DRiM^)t_ap-4UE4Je}Bqh42vD`!(a&gc}lw>N;=B1Xvd z(45v3cG*W_)`2V-)zGZ73%DdMarmz107z6I{!$OZTM&=0-?i%yuVJiTLKut8C&4F- znA)cP)p9|T9iQ}PM9$)v!XF0F9#|&Yhnjw2_Q>rZ^@v%$a&P z`YiUcjF~2HsrGXY@b;15>4syBnS)cN|D2Qmx`x46@*S;&2Lci${y%-6Y7XZAuOLZ< zy1SS5yz@sSOWq@oM{L0%IK1wajX8-sEE~k=x5hp2^0XeHy&BAG-62)(cc*_ z=?*jBy&ko_-zx_3AgiTi!J@kzf%kUZK{pjQ(dQ<+FrQq2z@H*R(mH4Csk?(Iq{jwk!aH}A$e!9s-=)&t^`j~8e z&9&?wV()J~f9OGz^Dx?TI=dA4yV$PNfJ}CpEF20EYWE6iNC4(yAz=76o$% zS~7*nOsv1iQbg^Ucz-oGgoK#N+@&xHRY1zLC|67<_tnh}K@C}@GaAVPt?o1RyHyh2 z78j4H@qd%%F&GgP=^W}aBzO|>O`x0)4=Y!VDNwY8)u5(OM~)DiJq3F< z-uDFWToFzqPS(bc;EqVCL?dtEo2RbYKY^FE$1lSC+$BjN6exe&K3 zLXLd610a_~nsH3W!s1_s1~o0RoZA*}CWRMf>{$p9T;Q~^A=!p;N^~dIz7WS`igTnw z*-qxSF(2z3=OZ6$o>vYKT}Lvg~!2eK~P(=uj+_bHu+7$qfkSoVIb2Yi!taLi}T z5Pygj(=|=Yb{I3{GzH9k&&Tm#LF-U(H{2*Tb)29SQCcApcs}yKvsr3r8TJ1ESZHI($Z>|T^@yJEPPLuCr>Ti~N^vSt1)SKd@gV^&^ z6lqiH<4R9YB4YyRH)`LDC0`TC4ufY?T~=UQMD>mlnqlIWZ^FL+y75I^v~Az@v*StQ*T6p%$5TQljHG zwzZD5(Hd-E7i+mLpP0-~o)DEH!?ILLVKfAjoikclT`vzVe55cqMjXRe0mmKekcMLS z^WMu)tmZ=5(}`qSPP#ZJ%QNqVU5$}uNQ(DsFedJ{h)=MmL0(wP46$!@+kll~d<68H zuQuBc!@ao?!8nVvi5Z%sCf=j>w|Oa7+djI{VzRr)@El!UVaC0H>JPL}`=x zoJktRR(vNGbuVan{8SXN&Vd}H(V)i$Q$cqg)>I^JNVJNV310`R;+KpY2UykYX@YM& zca$RB?m!DQYSzk}z?oO)BMzz$@4kuvr54$gD$l8ywVg2-6_Lu+j>fLn{?2w~OiCm5 zG|nP?rR5}mq%}`GrQsy8C4LEaF2izIiajMYkO-@<-NodE1CN8KN^42156Sacn%`4# zTp`Rz6fT&JCQigjNDk`iH>Ej7DvguRF^{u3*wubqFpiitJkTyInpNdYdYF{)C{Mz2 z2q2Yc=+Xm0hqvuewpEiNLbF!kG)Ls-qVNNiUMF3Ab${T)QVYrleDy{B_yBV`ktM%yC71x;9K zOVgrallQRa!ZOo+d_IyJhrzJN>)&rEx#HB$9V2~-!E>*xPu3yl0xdZKUqpJD#H}oR zk&nR^#;efkha{^&3o$Hxlpowj(;@|a2b#D>i(h{QmPyj#im7!&_*@-Sbfto4Fqx&+ zxD*|w?f|bt`$$#e$29qQdiT(tp1^8R(7yI%40rO1($M9y3s}ddc}`xVr${rqf#CIg~OfjNinz=Zq;baO1@qA$2mRv13z>=;K8`|Oxbf+Io z@j<3hd;xp0{+h(^N0#~Hr2Hl|O*Sv77PATWH`deEOkG^w{UjhxQ}WwUQ3|IG;1OyC zI!8rHB3vpr7hQwFAj(pB$k8(dOs(MGprK5vX?y+tNAcRlgmThOd?+;OKK z+}jqu%9F7Ib^rKTF@-kSu6i>Swt2PpkdjJIBPOiUoD^ecbOy%*@H>+Yv3nU_YZf`B zDWey&B-ar3lY!b`YMB_r1uFM;?#=GN;m?MxAFdX!^!k0=?0i`w4VHewpJ0b(bb*JyC^k5lsJuZ zrX@t(Nw(BUtI>tqLtCHcUEWl1A)B)^bv0cu=XIo0k!Us-YX8bNVTHB~Zv~oNUC#oc zc-9c%u@JlQrZ#hUt$oUS;)iyt$xj>3H2OYuwTNTwdJ= zs}Xl~)LHEE5JHeqPc-v4G@KWu%K&IpqyxeT*twsG+}@o^PoC*@3|&?q+wi1OGUOV+gpi}2BQKw>T(&n_A0_R;o8`}tDc>M>&t?toPH z!uX1E5PfR=u;w#%8+@?(ZO%xMAMIu}N~8|5ngieakPnfCTGl{fv&EAa6+-?1w1HY} z#hh>U?Hy{_>9yV5XS3+|PICWFapIh+K|Ok%j>Fcog!+`E2Y#9yyBdEy`MCdppwRLY zq8gEODUg885W10|&rCTdQg>qn8Ey$6de-fdsZ!*+h2XN|!7|s$zCKO-nWr87Zt;^h%H#1EM_AOh5AJo{-tDi*CylqDNH-wc z=u2{pYXaQ?@@vWg*1*H-B<)+JUf=GY_ADsZU4`*o-9;TvK7lNJKBs{GmhM~og2)>^ zuOhesR}I4i?65`A0fXX9L9PT%%2v33yQ3)=8ez!9+&C4qf?+ZFfIKHdX>KB6kwisY zW2a6^&u7_~2@m@@KHBz3qtxf9I6Ce~)Xyy^ zERs~`W%I@OWzA({#f@dWj;}QyK$c(;Dw*3!%I<)wiU)9S7H^%+7BvZ%2r?y0ylq(4 znfTMPcL9D%_PY$v{@n|%;mTt%YrbK&7YDETAtLZr%rk5~;t&mSec)|NOnpmQKg)0D zs{$h?9#n$L7Q}RVEsjy-=_!TZ(~YzO%I!XKq65_svo?s)2dGo6VKU8F=!$Q1EApI!^Kb z$`I6X_2{o;Sa9aA8F2I!kEnl53+ASI)FGG0prI%^8@%xD_Rk(>+FW$K0QZbq(az7m z%c&jNC}Y*syX>eI&6Gh8HH0Tb3)G4Gqa{3*A-R+>c%(f2n;J9c9&B|yFwmOjv4iHW zm*$=$&p!ORIpo;~^4%Ms_L+qC9d`6ZAn`&d-8YY}5|bH|Y= ze32k}?KkEV`N1!V$h0f>Oj?3X)+dl>toXHn-`64oHw=V_h*vX2O-Qy8F>@^-yjWvl zb-KDJ+pu_~hj04Jc1WOj(N_DZrJBqns0rjXwnOB=J^~f6CwX`2r!(7(4gq+)XF3Lj ziK(ucfl8Ty_RwyN#Jh%GFhNDrzUY4vTYSk@fB*Gg!(m1G`X#eu!JO;Pv+ z$MF}YmKGDZ=p+a6TLd#}lMfv+>@y*pb{X=+J;~Q8^e^7!q9sGv)EQdUnC7`^(^&g( z(9JCC4W-9RS>M-@JY-Qw+vHTXsr$WGhNN%6;vBo<&ey6M)Pp4%xlL4Hn_S)5#`B)S z^=6&pSW;zvZb9B1t56cQC^ug^!7!*+Vcsxky^=rO^+-UXWrf`P5BAN7F3TLXPWJ(< zTcicgWd0kP;XR1$ku9_8W{&%&afx?S!2^;0?JLVMY0nnC!PruglF!gx& z-K=|=7nJqfh-lRGGSBOe==G9@6EWpw`QGjrNCs{re3el`L8&~v=F$g!-J!^1@HR^h zKitPB609<9zV*~7DOFasth`=mZ9XAF=hry=ns(hnQ=c)14`{k>YS?qR<)Ze`QD_vk zUFU<#$)m8WI-zH9m))c@<_!Yax6tZqOTl;Bp;OqL9U1?{ODOp+a*TIIPuf}d6|E`a zecFecGvX|hj=h*w(ZXr;ZL!UTg z$OC{}S~kGpa;4N~bzEvNX-0TO3poGT;gobVY!%#s*`KFF*m{jeBf6G_#v`0`{* zlv|lh6gJt=-mVY+e@^~?;p&hgqNYM$fUEu&lls5&b@>aK`xo<&zXNj#u`;$_tTw=A z1MXoSAW&X1r+|gFK2pnI3kWHj;Cfogj5O5YXj~%6Da;UZuw=w{2M7rf3DO6MABM4w zQNmceMBBvF#dO2naN{;|d&!1b&CE$Q(-6zHq%pDY@yPoJ&nk(gxZBA&!yF;CE~g@yJ!c{Ws5Q=3jTUa1s&WNY&vAA$;s zv{JEe+-zGNdikOa6Z-62idLOp5JW~iGpuR|0KPgJA11A)rQFD8zw?SmOOU}6m^-i? zV85wNRm%g6bBJURNxvo8E%)Hi0LH(47o4f9ICGA4XICAvo;ymSp0Z65QVESKk}&5g ztBndBrCJ~X&Jbb9EsgDvoQ7;&JZ|6if^@uNWHEO#wS?_m#v^`INtlT1fQ~z(f~AQY zf(cm^H~8YP4YJ*J@k{rcV?+TsdGQwmZ4KRE&0Sj2wF2PP&gX# zkD{nOoz9sN8vU-S;#$6yj0v}tVRGHGxl4?Gk9 za+81~^Jp>U+b5i8Nf5IVORHT7h~N@i>djEKo(+9}CQ1{|$vnM{`r1Ui=Gp z`mby})w7=X{Ni^Zq5%Q@?-T<6B^&=u9ydeH+)a5N(?^aer3I4?5dyXk{I`e%88m1! zfq=ihfR?0#Zt1?wftu_ry_BONg zmpuL#rB|QFjT9q6f}BYn#|hW38!2zj!_M1f>MD@rC|~dz9PY53Z4XSF=xtF|j z|9J<#gHQluU_A`K{TlLN2!3}HPy7jQz=emFD#oG?%u~8uLtwId4U`GB1B(Nd3oi$8 zrHp{;#uZ%RCfZvk;03xlca;t}WNpvh&IX_xUltf>MJo?23$AWbo5AzsLpE82v3%95u#`C!Jht}nve zh#KW#nn)4P!BW=PzmrlwZ%9=<4kN%kooJZn$Y`}`YI}KrVzFd#hcVq8a}-?Jq@^j8z`EoP2D-s)QZB(A-Om$-ILd5l?Cfe_Y31 zQUB$Zogmj(n7i7#Gi`EP8lJ$^HWsL}XyUYL5;_wG3yivu5G9E%RXBEZBb`fYvp~KQ zCpAE=7h)J7f)q46*sq~4Xc4TNW3ZNs0s^pv5BO1(w$5hw!&RE4X_=DP!@`=l#a6O%8V&K;azh`M0tL*m$WWyy1PDaMW zvlBK&lZU1Dnx!fXA6+LYl5_jhg=8G2k9AH!!yGx1iG|3Tc##a*bMCI9v1}szJ}T1( z4qTd{oi|fl=rExL=lPH%;NZ9t-*s=BU?<;8gNjKL1^ zSL_;kumjg+sE?Xsru_4OX)5ZC;@g&}$VGttg%F2x*HP->P>0WPBr`PRL7UC`k zQ9H>RoJm{9bg=1I`_4$~$|c$xRF>y6Q3#J84Zy}!Te0woc^=K2W9BiU*4~s zA^lmwq$z@owE*KQkN75yM-x4E!|WMBAe*M7)2Q7r)bU(KEF_~n^6R}ZvB}) zdk7Gm-Yb2yP{!Yz&8B)VBhMjN-6h36{cH0&jq1NmCi=Z{tq2-|t%L}D|40N(X+p@i zH30^5O0{|WHUvW)q+qE zO_PJkSc_6JJ1==p7AVFqf+KiaiC(ufgRBnr;Y-TY4p*GpVxh_Loy=oTocY#(lf(!< zVVZnucJ1Jy2M!C^Fd!mH0i(QF>(37BNr|bZC!XS%C?YQA2Ao+6@ej>~&mpt}L|9oF1uY2=tnif?n8d zcr<4uwAOT2j6zh{LMrp`#T&mdbKL3d3@A=OJj^K#PXrpeO$%?Ty2_~##5NInYPkPI- zx&j%~CRn9+n6lD_W%YubBeE=5lb$Jeevuo51S5>OLo#d=BreD&J=az`FN_-DCf+ld z>QJ9b)arTwVU<|C;kDJ>fb1~wZ%%iWQ!Ms@IklTA`PrS|^HL z^FlJK#+Nh9}cBSu55npiA;axY@gZ~?zONCO*;Ylr-+v!(dL0lC4Zb)f zN?#++|ITjVUmD7PGp|&b{LAR*L$}Svk~Y*rinAG2e=P(wWEKDx!!cn~#9F&vQL}pW z)1Hv<8uBTxZ`HaN7&30`_2B)b^O5NipWYV8rTU~tpjTj41R4&VE%9ctHXtzo)xV?2 zFyjJwHw7x@7T_9+lcZJ>*tksb)=NLF=wtN_7p102nfybr4XAJa$Sm2o` zkXpT4Y6#w^-HRVJ?({l{TVaA`*=?#-H)1ZdmD=a40^k_St#fUtQ1PvHW z|NI2|XUP8AMH>wA6vKRltn};ezcZ=&Ya&&#adft`vvqJXHu`(WMBEIG|0a6!AIuSX zUb$Wd1n=*Je)49NJBC75UgFKjUppJ{Zj>67R_>AnEK-*}4wYvOX>r&$ARm++Bm~%C za4oLQ4$sSr;lIg+LmY{z3$P2*_pu4tmDD>J0@in*1Zcn}gC?H(Gz#jbhvU1un3#vB zA`%jtoMXg2$z#)_eXJB?9eLo>P%rwvVg;JvvS3oS z{GXM&$;>mM^S*vx?JrIa`F}yRvSXr`XA*F5GB^3U38KIyhwfh6*gG@rJV%lTV z*|lTtTm3cD&S_{h)Hgv5@T7LRT?{b;A_>i_pOorge^ZyZ9-G6)no4qd)YCHpkW z({PGK>V7!VRXO>%bxwqSO?bs2%V3H2P57?n>AX3`N2g8GT&(w}pP-Zu!0<=@lZC7I z$a3ucp=6G_ZTe23NRDpyakaXhMkY~}&3mXFm%#zIkV~*C_~HA##3jU-)_M2Mf=6}7 zJzhF>Z>d5CnTlRy^lg6Qk1;N?>R^Qx4{yE!hVRJ|uT0G5rlZm;tA*!aC ztm&iZWwjcW80JmzZm}lGR3uuL!{dTCES;#)=Z|~$f;X-KsqX*smj2>hK_lQ$HGahz z{7a#Y|NkV;{~^f!kFfvaWa>ZU*fW%LEa!fp@Va*G447G3mMv6i<}IkCYof#?`j>|W ziF~8=&XO58i$Bhnt_}L2!56*~=o9mecO%zPNaQQ$);GCWTXVeRj7!Vv>huAv2E1C& z)u811odVl{HDhkE<*0mjLaYK;Cmd^cDEOd=yUD08QHVsa)+*Cp9Lkjk-!`UqO^Fs` z!lcNFk`vZ7(!{9<%ed#C!aauB->H$t4t%%>p@l4+gGOJUQ%%we9G@>?=366YX>~76 zc9qk*_i&8C{*2|F)@IK+A5iSmdl8T#F!Za|7UiNRs;5PwDH4GzH zUh#1Qe*9EhJIAAlQ(9roJ(h54Wlxr7x1D`XpljWnJ|`TwGGCTzW$)PkEU$k-EUE{u zKY+i|0r(4M`L6`~{_W}if2YLX3qrxySu3^*ijR%>*X|oc=38RDLB6_RwoaJlUcq!U z1U4KB^uWMEl9WT7m5vK@8#aV*OxCLa(@6Mz0P}>hnAm67Pu$7%z@(h+dRFEZ*Ds$q zzC+H*7J9kQ=WQ_{+a6_mtzHgAn2p7$->Bf2aD+yz?V&2DO%PYW7gR$f$&1+%UGS)0 z`21x z2;=-aZQATDDzo1*4b>Y+0gjlf4!kz*A~tN`0g1y!--6aG=-P%6hSv4vLzl+|FE+Tw zSr29+O_kl34VzP&GEyh7+qKbKYhEL4+E|5b$BwbZWWn%t*=TyD81G06!(h9^b#e%V z+fY*eJT8H61YNz=oJb=0DJ1#PLY z*X)Cs-C;tYzAwH{){FUDvGYQ^a&GUQpC`ADKHlw?kfwkT8`Lz$W-i@2;d8dBp}|d7 z(+a{mOcKXSnfgVSiv}63qeett>ZCwI_e1vCaEA~GRg%Ay+8Zrj*fe)XUbKLZDu*kthgg7Jg;R#cHXKz z?9H8$2aAY`f3aMqX@)B)?1n&<7EgaqiOi4k`H^( zp1(A?xHB4@fEBo9R5PQG`2=V%jcLJRA&;mV5O{tR$6FD$!|&I0kx85rboBp04!lP0 zf5l{uMvv*js+%f-pE>o8YbU+g+(XaplmDNvx7?ogB6$P%<{Dxb} zL#FvId;`<*VSR&40)6!@g0J9u)BHdU>4BZ+4?e;ZGTz4xvLxcU{n`M|My^w^4>{}e zJ=?~$z04YsdBG7pW0b1|nx8(+lsZCKCv12hjNWjP4JP~BlK|CzQL`-1%N5?t-0!Im zZvn(E*vHRr|6W^mvO)T!zgh~)FPiU<|BKI!=zQBnskCgy6h!dWUla5NhhQk)cHso{Kz7lkOS}qPAMJrrCk?Lve1I9oEkCOocB&m@yB`T6cG*-F&#r{ex15y@A3Q z``MYH2aLMked4S~6_V^L1^WJDu-uv2+l7abj@-tSW-o!(-v%M6wE-W#TI;hJ`;pY? zW}TG#7V;}I*amLM+$|~X%DCgA3ieI3OklAo@$$n-jmf&cEi~!womS8ZJK@6>A{XK! zhsnSRsDWiyh9gOVXA0SX-GKELvMkjyPWxI550dUOu3^~B$zh(LE? zD+Yzghi9DU&9+;{S`9-z6-9m~;cFF*v_+DoFWO@@aGgwN@4{j^*Khd&e#3TrrWL*y zmQCy)B?}Ao#z&funI+F(Lq(P7+*(e`x1i{FB%~!2EOH$%R2c#@bD>=e_bTB|UZt-* z?V-Mno{!z6GVsFDV*o$GdXYz z7$O%sDsWVeEx{`IzfJb+=ZiNr1hWU_gcd1!E?;k+gb12NIja%il^V7`ee{68RB?&W ztAGJ(vSd0{1-uYh$igeIRR5+(J@76KRQ;xrtD3z^F>UO`*1y{HXD5UENr_aAuZ{*?NQ^ZH@9U)il)?M;+o)R2tudf6T ziZ_Cui$@2Evdne>7dTzsSz~dC9g@!QNZpK+Xa%g(i#yRzBd+zjG2B7^^QHdP7-nJL zi?e^t#9Ci#zyInm_P^@_{_#@(qYY5ju|@jJ&Vdh2l_CL+-=eHRQR;Y5RhPvem7pO8 zOomu|W{^@^f2_7GMJM%cnLjs*?}aEt=5OkA>;0+$W&N#bV;#&bk86&TYh#PHSzSO& zqLh9jxDsm%)%nE!#&C~cDz~}Bey>=ntSA_<32Ngjx&jx%b)W?^;IHDbyPM9WCBXMHw z=Pi>h^Nc|T;`208#id^#Zu!1lerBH0^}`WVD*o>x5k=`gSM=0VinRcozdbYM6JPI0 zwg{v0Cux`qK?4c{4ZBpy0ye54OKBhSH??ijR}-_u(fcPU3Zn;70YtsMzSfu8#bZk$ zQ7y9mI;vG~pb$?4*pyZVY1`ArF&LrxC4P2oJt#Wc({t&NhcMg74P5%(0P*f9-`6Db zPBT?Hoa+$LLDQJ64A}zs)gZY zV>d_u?nljnY$9!xwI5jnEEQj3<4W4`X9kR;fMlvnA_oTHJCvG$oq>ZFgloAeK8O>%sv zMTa&>v3rkJiC#o`o^k(~l7BU(!{^jHGG8g__LY+VlUYSZ-_Fk5#`GT<`48);zYES` z@Cr#K(T%DQeo1+i-T7NlQs_a4phb|BAxT}ix8gPlC0f^UOZ7}Lb-TGU@V(}RZ(2c% zY~{Gbws?^>4oU;&|W$jZHd^rP2GtM>79f5L0R%e5g{^Kahy-px&LmX)gR3>Y{PY*xlle^ z9|@BmmRnP4;|Ui|Zu_HbJhTu6I*%mT>U3NPo4;bPGzLGWzGN!CxFRFaii;WSdaW-M z=-IxF%yeF_b8&eqZ}EyEZK;O&M;`ZXVU5Y%poR9B9r`*gcUbS|xlnn&t?jp;ZhMYf z8A-h92n;kIlL8QR8<9e4?TITXDPf99-=7eh7($`HDOJ-_1sa2*0up?@-w|GSXm0Zk zX}(dbH(a5VL1b#E_i`ol{6REIo>R2Wg3NsHv?tIu)(g-t`_$XB;QCeNWlsU(O!mBz zaJ2GE5L3}Tqx{;XoU6veUD{p^E7K0?IfRKzC`9Av7DkfLRR>X|W#1u1zvy#^KPlXz z`#7koQZQEg98rzsdWj!o7;$E@I@6VIpu+=`QX7B~`d$Qad-rT~9Fa0tVApyS_3N{>vNce=)x70zm+%`%;>fG(9_ zkmB5a4$;k&qOQy@mWAjobmn@)Hj}p1vk9cD>%6yY6^Xyq%?xW$Fe(3Le3OHT4bO=d z*Nd^LO@1GcWKlK%G#svYskk}RZf7VYmZqMW*`O1wq5YViYA+66iCZ~gBzeW1scyd# z>Ngkz?qhAbwzd?tsgCzZT&7+Fm*Jsri}g}rFe^-v=g=l$ye7}u0wh`99hKSZ*CO-i zWrNs-q|Ig7d3a~vW|>^n6NvJp3avv?!MFGJ@W4&diIRK@$6en?fL(vqfQCtF7X2yb zJxHCgu@V(tz8gx*E+y$(HE@}Zr=hzGdTu;pVUNob7$qY_(1ZYV7{Z@0tx4ysLbq9A(&~N;7muCaM6?Y0e%Z_tk>a{LbYfv%zzS`0)YGp*!DXX5xLp2+&scN z%)KK5^AAJr8X&sdt06uj2zPLQGuUmmal|!35$8R2BZ*JHl8YtRdcYOj3e)!B<8RBU zuIzK7D@c%6@tiD>tr!nGQ1!|SgZOOcdVN^vP}ptVUks62EKx{0++>W>B>?lx+!pYA z+aSq1o|Tt>X)FFZ;bch1t-Aag0DgT900RGm0pNczF8N0lFHqG|`vMp~zPCs-rJzA2 zVU?k=HWE$&3@j;8>h}$Z2?=uKPYS-r2|3s$_oc*1`oPe4J}ftAQneaW;j&&VCufgnERSj%XTncT(eRj%AgWHOnrAK@X+oMT3yN0z{ z9(*17xK$dYJhUFeu-ZZejOar!NO!$=4xjEt=qCi}kc8;$i2$Tc`7IQeQaEjHk)F@v zQ{fhAMaq`YLXX^R2E7bStY#^VVP;5GR*3p=j~7a^_)j1sr(If^U*iZ8kH#s zH^~6gpN8LrlA>YXWwtZ~nTPdX3el-p7k9o1*09^frde7<__<#D`4RF={qR}mqOIB! zOgOvR5Y~Ex4)KHInX5M6LhPKrs_?tK>HrKv_yC=^g2Uu@evikXD3#+Sr!2r#O!}=j z*e-{?wZtZ`D1+Ja=erM!p5fvz(9s{@DgdcL4vn-W=5v1*(yYxoHhMx_q0pJKkfQ;Re5(0T4^H);w8-;4w7Ji+l18eg}sg!L1Ml( zEzsniQ|+){ggd{z{FHt?6av!bB<4ylPKAYu6)_>S=F*5bHt39}MhcS-J!f1`5a+=M zv+h12XPmI8x`Qu7WHF09XPgR}2#r!|3FkBGVZyv9*pz$NTqP}jv>BCvcr?&fA%+H& zSh+MSEu0n_+eek&EMW*;NblD~TtIQw+N`jS>;q-M_6nD-Z@Nf`Db5tZ%a_8TABh@@ zPhqR=`@cxZ%b|A&Jw+ejPai>yCkV?$@jyy-{aCE(oEV$~NITP5oSV7xAK9n;{O>?>ihWf=inP`r`O9Q{osRc z9yNwKk?*Y&JbhdRwNsaG1ZTMc95|GPHP5d;p|^0E%__`V?}&>d7Ey#;)KLu5bfAhf zA%KynwDL9ufr@Ctr7G?} zf+Wp={pzVuD_#Nv+e6Zv_sOUSwaod$AOrhA@&AaagwLW17QjoL4n2$+9gN|4zMVdO zwS|`I=DDFF_^fL;cB{R(@Q+Y%t7;<62l^=tw-VoP1ee#sH^OM9XAu11HOOSd!g8a* z_4CrwSdc&wAC2=PMHO`Osj%wv&L1od=R1SX8ySLFw)xeu0}m!B>b%WW#zKCUN-xXw z9GrkN;9nwIWbniUmQ;@HEnHQTk5?Xb`1B+rCz0%87lWpO<$Z=bwB!NxJV8d!amEpA+rSf_@;%PSV_#huq|WyJS;~A(It*EiSv+qGkrPb{bTo( z9mt$U6hVwBTmiR3+#F*Tv9B2bjY~*6%hfYN8_3k!`^Z_qC<%T zc+$67k1M>6U8G=Sp{70F$1sVtY*b=&i%2T%iGGFab)lXqHV%&%%e9k=EO&2=v!>^3 z9Y+{jHO|>8Al03JbP25Mca_c=S|PQuaTKF^9m2dToiRRIMPXe{2wYL$R$W#G%PUJH z#mTD8jy}uc9Ouql+b6XR;I6bovR1EeG&^TMfbA{PBnUV_Sg;(-@4Qu%Xtp8BkYz4^ zFA(@7VP08y`orB5j)Ik_hMGyEP~)%TDrulmiUyb2moERT0IL^Gl!4}hB9xq?ikDYq z*CdHLC#>2_)4OM`p`;qYHfL=u+CCn~>j;SikC`n#E)vtr(>rILPn>9EmSr zY#YLNK#Z*Req?+v&1z;ig6t8afvH6=^wEE?$NZ475!kzsD!0kDESrV~z0SYe!%f-l z(_O?UkHMxYIIfp&{8sggzD$1r&if6lEDZepH5+*CaS(BhASLIC18<8<;I}vyNiT<& z$B>Vp>e-NwXoM$T=-a<60sm^s(3B({P51R{w58Txj)q#WG3Gq$!mFuZq=)M9*LA0Ka zu@dr}jeU-B-f}06ef&))o7E~`Z>L5#QJSVGMsQe|E`W)O>;@te!)*k?w%)Q0HfY7t zXN2~5n@(AY*Re|z2AL}lyZoBU?=@&}AqU&8g%#^)w|SfSRa&IM8HFD5?VwV8Dx}GL z>Ul>%h~jhf754_>`q+Fv_4l5*$SbY(U8szyx)#SF?~?OweeM5;wRe8cbKmxbV?MFj z*iK{Hwr#VqZKJW-*lO6gv5iKJjV3uy=UVe!^US^X+SfYQ`@{VgeD9$T#<(->O|S}y z^BCPAl_+X_siFNv5DpzkbZ9<#(}{WE(n(3@>1FRJq@n#Zgqj;HAU{L!FT0 zaTy0xWzt3CE+pxmNkz>1eFXD+}iT-{Jc$z-k=_7y-a{u z%wHS~UXm2tOUrbKN$7q*;>)WFX^YSY1eVz+%lKpmTu5z)gl4J3822LOjK{FYL#j)P zFIKC8t&+P0=8|TN{Y=qMFbx4ipoMZ`N6SxR(!^H;qu4zp;;Yz}>>=_>RF}DiADF`9 zQ9SN>dcQhe7xk$`-Z`pk@@v4`n=)XC#OqmU z!dCF)|)1Y8C|9ips^)={XxK znXJG)FZW9q7Xlyv6RsGj@;ew4O$Jgp@c|fPx)>)}sti>o3~`t_ICJy~nhX`Dsp&4m z&Rxmz4%*L7B;9rl~z5VP|t0niz!5=+I&w9RNa`&9Vf`@CP9S+$LR9z*D+|TfDJTvI`d?8 z>4kMm!l91YG#@6S$nH*n-v&F|+73&!w#+#;_pTUNzp4fT?FA}yO^z2nwjPpqD`c}{ zWmRtYS-DtDlNElX?&hMd5w1)qUF&{Wf=x&t@+&0`#>H~&n{Kn|3r%jEV}D7+JoX0+ zx&-UBi8ZYrI#aR22cL81wh;1%z9P_uV;1I6@A_5^sOq?)64T{Rn7`jOU z=QaIhT0N<4@~}6W%o*7fJj=c95DPu)AJEwki!7Tik2NX_r3TEO=i=|^;&(L{*ccV= zNXyk@{K7Rpq+_k`Ca-&j+$$&Bug^g3HoSCRKu&ZDr$g%QbdVb~kL0{;IHJ zj-tJkYhm0X%4}SsU()xzlmUomrXPt?s2*4|KSd^rFlc9@cIcn^x~O&~k@b^+QebH% zVPbA1uL?vIyGWI2@k%|kjiv-!@)hxhoPD$;r6i#w1(fH%EZ+H@`;nsf+SY(AvZ1P7jdxr4*o8K4ADWp2HTup46>Ra?H7dv9NB?}%E zQO4A*h?+vvx)hR(SXowL8ygFL%Rg@WK5WOMPE|)^;tBb1rSok)-LD_4Jun)8@(#zv z^B{P%{Up`w=UcBeLCGQ{^zs<2Lnd(Z4hMYM)L}-`jV3#=SS%;ow6GMnO43SP?wM{k zz4WG>>GOQp&ydYQ3{|u0uX|J`AL}tL599F-(@u$l>0DQda@+cdNIC|cjzn4#2|Gfj7L^X6kTM&9}L+y+&S z?3}EYCygw{?*3w;T?pjbkm!x9?&Vg&YoV7Bec<9-n2}|6NjuIM z$5`rCk8&R?hs5Wf(-^4vk@QIM;I?~G0U&Nj!~>iD%>&b!>FGKpPX+TVX=#i1@Ljn2 zdKEwG_`b4gQ=_CrZ|0`+TnP93pFw1~x)BnXV*I>Rf<{Q{f;)Dj)4Q%BvywNfjHXQXOsUF`9)OXAFx$&h$kC=xhQ-uWC*2XoZl8)?8@XYg8%V9 z<81cl!LdIvoE+6ZTw=bz4Vw$wtp|E!#7+f42to8i`y56Z zFK4g^n58iTV11+;j+TVUvv& zIrHyrR>t562uQNLgA{B7r#PlmRHbRduW@%ZzC_uY1EgU&$H~lKzB`e*mwR7*(&g{? zGgGMtbhXrI^HgQrRO!I;xXTSGf1z2o#2C}ad9D%xv>alJS6!1L)bW$}gT~(B<>}gF zx|QkHC>vYURxHZp^Vq7Vs}f4ymaG^m#S7d(t&1%&9r>?@ zu2z6@cMZo>B9*qZ_4YWIrkYumv;lg!JaVC;M2Z*o6>gexv)jLz6MttfZ1xV!cHp0g z2kZ&{Elc^|X0Lz!iT|AN{&gO!Atf!Ehy$a*nEC`PiiBfGxmZdh0z2tixb&=8uW`f9 zy$s@)2EU~m>OW2ptto<$qpXK#ay1_MY_(4UIiW*FkedNrwRS7Hr z0rP|e(?&2P-HAsW7H*pB?Y0@mt7nN35DE#C^rFmKdrnv}!yfV79bT_%(__Ccv0440 z7Pi@B;+?d19iZdZhrBvPXpU_>6lIm_ET1TojE?>M`J0=Sw)pp3vdpk0*|iirK;Ql; zs8(qXD(Ij~DZTs8g&;?P>mYJ;#y(Bxb+**?4!~%XRNYn6u2X3Dz*!QxZkXj_OK4V0 z+aav7<|vo_$~K#RHOv4nKO26nEpD@zi39VQs!g1Qbp5cNLR+Ma;=Yl=kbu2(REuId zoCEJMc&;k_z#gUe%TnbB@bsh<@tQeegsES$=Z$p1Js0yEh0E+}yaO7)JWElabZl3&54^;T$EHDKT!*`$|)EJg2I{7N4a$^)Zq;A6tmfiCHAoo72s zEu_A^P@Nk_7(KO204n55`RCH=M71POCS86M>@W1FHA}zI3JiE%-|H2ZlXR(GU$C7j z8vio+hN@;X?!uAt9Y3c?yF1Xn5IpB%!SRrS{L^U9UA6@`dF>qjk;9gmofM&>Wa4LO z*vKXHz)eA_Otl)@Uk02R#fcbYo>+s}&(lb_xMYx)9|pD|xrAxi41Rv#1JRa{9Gej> zcK@bn9l(YxnM0i6K;#-$<5L-U$zf^Wlcl6>G6=Sh@{M>@VlaO*&>_}oy^JpedS40c zDT1s-fSUvPDexSmN5p{gSMD!S@R{19Zh$UP9Z6=I&-Q4k6TD^)p>b4x(b3RHRNyf) z(ho*Z50-f(9oXi~LIqG(c}3mulMcbkw-oEISpVWle+R|ZDXWwZGYjnn~+GCUgrpJ@Ud=+4bi)0img(3?$+mQRRsB)qj$x|T! zZ-s`66k!1rOLKpLGWMpLPa@dD+j5z@>VCVr0U{q+%Z`RSHSl;3w$3IDKh7!xc!FJI54S$TWeD!gEK5LN3dH4$j+X8Mv8hae~d0G zH00if>%8@;CjhQ3oqFeFi(}ypYq7Hj>Suim%tSL=OOm|8cidbEr<+N`loMPbMYvL= zyFMUrle`Y{Fnd-Spkl+7-ySd2=VgA9DfkHnjjjK{h&TPIgo$Iyd%cP1yLH+heZ z5Q|T#+RU54as~;z^M^HcL`qh|jpVbsooA@q;5?vQ4-T#(1S&yij6Ike=X({UL%A;k zuMG&1?5b55CtN%M7$URr?I%wkxQ9t**>jbp%)f@i&TMD`LS_$5H5l%Ce)-n`hDxc` zT-0I0O1dgbADU#*@3hG$h7P!eGp%ThY}^YpODt?vzB0^K0~d3Bf;C6COj9EE&UBv| zWhZQ1;0L$y720v}E0wMivj_m8ZSs2B9AcX{-0X8(&mif_AxY6GGd#PX$}Mya3*BO} zfAdbCz4)QnOdSfFva&Hq4@SG~PUsSz1nQPTbiIKk=q7Dml4erF%+@LeMCk z9H=*>a))L)g;Yw%lcEHSFO}CP7GRAmBU5-2rG5+tRIJKp5uZu$38#To45nXQ>K?KB z5yJgUuKl)6^MRwBzCmRiU5>5%RImt{u2SnyBHqZ0s**l|l?{dv^Xte0M1-|1@8h_pfhWXk1wAAHy+ z4)@cwwOL^~7pm7r6RC9S^tCc&-*FHb6j@W=5kuwIhrti*OOEL@#eKuhW`!`hRA_Ws4r!9NZpFGdr!|mMSI>{;rI-Lxo zzkO6l?h1g@r3>m1&{FzRA3`D}&UlA7ilGhpaqYfZnXwTT^F%|^jY86Zc&v zCx|hbZuTAIF@ny=b{D&<4k0Dq3F!f?Ggj2zIOmpq7JX8rI#D*!PnJ9QXPLZG&&0uB z4~73uTZ<6h6*RypBp6uB|ECq8f6VuPtL6V3KGar}fx`zM0cuzXgqEp_BFZ!}(IiP! z06YY8WxsMhOb>!oG60daA`=#)XCVGkt+GzBV)m23*tL6jNS!7mf3f$u`}y(OgS+4R z(-m4TGNy33h%Pu%U$_S{3cv~*kvPBuh7^0@QglEQMu-<7=~|2a+m-G>NSG85pVemy zLDL$LWjs<}MMsQ`28wkIO7QWGQhjk3MZdcvOt~YDb#$cMO0QCHu-cB7 z)a}>w)ZTPiWccWLBm)*y!puBEG%?QB3@<59n-cuO$kT4T*ZMuH9I}e7Qm78X&asvG z)t3`!`jp2P@Cp`U^r3aCXQUrmZ9H^++&B zMq$EQEN4uYeP+gfbh}NVJZ~10jgRmaS3~MAv$jV$>grFV)_ox$P5z{s)GjQ&zYk6P z0*Eenl2(PH*P+>*Z&p}vsknterztDO^Dfz8t5`hiN=Cg2tJWJQ&uBA67sp%0(ViL; z(zsGmWNg!-k;SIBG|PDOx5h0UIO+$8{4!51s!Gr*>69`0IhSRYOqP={Z_YLm${f!D znE9z}TCNe!=0-c9(eg=b%;e}*;`TsUc|(KR^>j6qQ$T5tBf1K|iG64h4YF3VCJKx# z)!Vv6c+HbIy+e(AB#6lc)$!p3k&%Xe=jxNq=%}gLStHHtk49sOsVx19g+kR;Y`lNgWR8Y5yDnKMMQM9g-{tEwy6| z;C7044}0-&j2gB|ZxK9&d1Ew7ur7&FhkzdI)ANwjXL&>;zna_h4+6O=*FUiUKgDaB zilECQYGd<=nP!CLbqra(fO)xmO8~Ks&>;OXr23FQ!!78XeLG;fV_En$2+`}p1X~T= zIHfd_@YVjdeC{qUDbb+YqnN4lDg)+aT4ELVIx3M~@;ZQfo@ggXQbP%Y#F8kUV%1@e zFuxmz%^&n%&BAX{RUmS$hBR=F+kpeBa{pbk@aMf~2j_pLZFM`~&RyWuIjsib8j|v+ zKCHsRFl5>2S#4u0q58rANtm>>7T|igI`_sbdveC3F?D8XwgHS;ns~$-yMOKzYGfvtdcaE{TSwU@m_XgY&f~bMALKi-T)}(&p~d(sIb$SjV;5p zKy7SEj{hmf*GRGV?OA-C;YX~;H+NH?4iZ)fL!G(Bj-6$7A?@=ZlS6>YY?HldNiw!J zree*q)+hr`S~err?5x)8T&bzVX^cI?&$zyy9g5Qe>yAe994;*?2`lrvr>^9r(E!Oe zn)A;>PPtY;^_@QUFnOt^vBW94+LfVn6FVAy^4QmKYMlZ@duKEU{X(`;BK|pL1mU1S zX3D&5Og*hAMl?5GX)d$gxkX~@N)M5egHEINBkK;Wi*oRfoZC5)Zj)V4^kx!Re0xnQ zIXgO;GST};#%r$zC1Wtw#O}K}%zoOQj-0_wR(zfC#FF)D2a_DHc7j6Y4M&EIrg3?3 zeb$V*+=J{q3tj{zz?^syR?W{6wiD=0Dof627hJk!8p&%&d;}B#Y_^Bf9qcVfkQSZJ zdV*XQw1uq7fg9@tITiyCRB-A?z-|njhDfHR4^Y*mzxKU z8;r~c&OZYj3^?$$mcNIx`GjA1J_-%+U@u*g`k`{Z!r4(f*5qK$VHy+{Xw6~mI3K&( zNkcfH<5=5Atqh(oOYH^NC}^~$xZU8ACscaBjGWsruGVDWC6%xZ_e|k?EUdDZr->K7 zkTGuTixb;riJR*)DjGdYk~p^DoTxwNPP9c9bd%6nD{oa?3SGZod?t~s&h!$O|2$ui zu8%+O{@%Pt`iq6GQhaHXVS>~yAcIO^!++CkZSI=oiv7-5NqhdG-o5N0!g?sfQpsV! zAiASg(_N>${DW7?$8ECiNrkyj0rC28^BuSIeGj1=bM!)uV0{npvCP`9!Zx7?ny#EJ zuqYeC!($Xa3i+bpRY%qR?+_=Xu2T*LHYFUK4UxY7{H2Y2oME64BPTF9{Gh4dV19*c zh%Ck@x&|=yhcL(7+=5GCXkUnA_bByyQd=5Y|=<(P(^J$Tx@$EkhA66nrs|7z1B8sKv|r%(QjhaTndu7ZEmYjBhs z%@-V#xNoR8%PMdU7){*NU##4nZbMb}LTVJokm$O*#C%p49;48&+P#zDWZN7?w=2kd zBMv4UMp^NdUQK$a`T3a* zMysiHXVL2OQRQV@A79UR0u9cJMj)mT)u?cne<_XJ;pF$ z9(_$i+HPf3*_2(DC}l;8Gwsbo1S+|B6ZtWa;Mi&3`vT@+p2|+l=2#+3aQY3WfALj$ zm6p)M$fQuAx*xYe7vO>nY=6}y)3EJPadFAIaGKn8ms-2UM=fw54v)L7f43c>-)S=+ z+Dr&Som|^0fv=yGUYHq5q7F{wB>-x#rN!`bXp%CN9P^ACR+!lPEq+nAK2pa;;k8xl zVk*;^liz_LsZAK=68|g{t>qNXsvYYbRwkt%r`1%fk07Vny%}K<*`*qZk6sggK&NA! zV9%>l)u-^B;a+jd=~;hzZ_Ol5NNZl$B13PkprcGDGsAGy!(y0>(Tyu$eEk$^_A5%> zEp8&8P-foDdWR~bMgo=5C*Oy2a-lk2ZQt=lsstU{UeSR(-loRFk^AOXO#k&1QOz8> zebMNQyhFGx*eatiKm9GmjM$-!XzYxZv++uxg5iotlTY=iZYdjp%SXQ`%TjGNq5!%( z0qq#Bh8NUc2=8$Hd&0d_5xEylJrR-4;+n*8019B7pDYC8*_3rwp)|eN9*t3Qy$9Dz zKn#RUKIlyVD+uMf^bO*OSCZc5-qB!2Tu2~H5;p~cWt(|ExC(Pj%Rqlq zAkM@|n|*I@EIW65#a>z*7nB|AjcsZHd^)E0` zb6AYDag5Ua$)F;i=*vh5md3aPi(?ichh6qjMGSTwdL!uzWzy}0PsX@&JyfZGguI6w z>K4FJ9kzE4`AV#~l~F_^q9Bwy2i|(>^V?qvZ0DZAzpcsBxcKcG_h zHt1F(t^}K}Zsj5XA4>!!@FprjE39vsPUBaXrc26VPZ6Yi1=MHGXnulLoCEpFs+wW` zQ^h5e`2H@D9B$vDT~>gi<0rWZ6RBZ7w1>pmdRvlMjIhmbA;ms<7gfwkS5*{V)8lnM z&$!r0lY+wEF?OPY5_GYznVMjdF;69rDd7#(G~YBTj@sDl z@xCSLZH?P(GA$QtlH?0MsT zykQ9A{R&^q2&4Muv%jE%%D~8Y3iuLX4IHm?fsyfVHR*q^EB`e3|KC)fnx4vGkcDMds;pwh+UUw9FnlbLJE5QPM9s&(Y7>;k#CuR$DJ7 z&uHA;v^%jnKs7EZE$7*1c10g13#c{8oz`ED$n>w%*7^_%zi*P=8S9J-|kF-@y0Dpb|W zeJ`3d;cHTcCk7-^l+CX}q7V*wgGO3O1mOe~+vcpyn@?8bk&o>+?iIykOeE}cH%d`1 z$AcqThX^xi`rBy6K{8TQDocS01DhyZJ{0{C=S1On(h;9dsjUw1sQQ^~geYwz=oQ+T zozy0yNQ{gK)dd>aPT%yj~k{&msXQqy6mIrpE(`!8M9|8+u$XMvk(B$$u!; zKv5g7d+@Q3+@8?YX}rfb5b651(GE9F?UEQ_t_Z8GCx0_{m3(K{`no$HrqzG6z*zaKfDsR6rvgl|&85&@D!~Nfw z*Z(1i|EmYe<_}>1dq=6%fObpjgGqeel*TQ*MK+^sLm2 zmZTUAKN0^;5%QAOcs{POhD_WU-pjhndH4O4!B!7=xzS`m91jIcn+;Jk7Xdt!GL<9ncwM-S#t$Uc?cj9? z^OkeU$)bQKK*81IRVYz4Nr3*oOA|f$y@PQ60Rr)Ze|}7e)xu|7VW`? zWs`zmm3l9u@9=Eiji%{?Rl03uC|l$7)-kuN?b2A)ueaRtH9Y2CVxQiqxtbiW z>GWgKD-$%m9q?s>Fwq(869u;~9f#F;kf(m`XIe@H_nV;4$Y@9y28XAubDPIrWT3fM z0NoFx!&FyVx|;4MqHgAI>vga zofkKrVpLenVt(0&WPDCGkER|MV>~u78}SIp1VtX$eXnv949+ima}y6~lPFQ4;u-+e zW%M^Jk0BJCn4wK9_-Uw^ryeR|f>>!af76z|EHt`^8m(2~2UX=0cu&2;Dzf$QEU?rh z?I7(lnmnjRLCp%A?gi=TEec#Jp(YaA!UxGarY8(5go~+O*=8wLrm9TX?bJCDUqQCc zz$}Q09d+jec7~ZYK?NPmn|*$fAbFjr#pot>MR7K}Ur_)04}YUZ6syfYez#f3z+&=m zdDs8tKm3yc_(L}M=C0Fm)-dgyniZv3fIa}HF9>HzPb61KoR+X1jk8*>*JwL>o)Yjr z2L0t9t<{t*Et{JZ#DmfI>=l=ui*<9qU%&1NdVNntnafGzv=Cglg)^2M6(q1QU2pqi zj61SoFx}{OfJS8Qjw>p0e?l8gpgn^q&9^&!>-)id6x=iX#R@E|-GM4l3`<{@q%@se z#g%Iqw`}2_Lkoj-UzpwL=s`P3nb;2_2BoQCN-ZeSyOk~cni$hzP_ zUDkaYEDx_Hm+} z*Xg|N``Dut6LBL!`$QNW?@#cd+I@_pA?*$ND?1sAkMlTFL39~`M!Yk1m4;81R=Vh9 zn@%Lm4vI!KI_dj`V3G+jfo!}BmlJ}RQ*8SH+n{IuX?wRtx0TG()}}3XrU+t4+9fmf z1Vrb%O!oFkTHR?ueQczXH$wH5;uZgWjk?^9w_C|lD%x}xwQ&X;42OWNnNOB6SgCNOA!2U)J!Bt&J`9Ya7*>&qxTp8kMB)!3F`S438gqD$9^TCY`$^R zLf|_tt^~z+5k6t}GY>c=&FPx?;>b#DF_lovBR1RKCitzAVNO{j)+AraV^5j6w?4c^ zWkfMfFTs9&F)Re#L-XPe++&)D5TED&;L&ir4wlx*lR;t$&X*yc#H+S`hhpxSypKL} zM-mDv%_hns*8rqkbEKP4B47WOm!p);KPv$_F)m;4`IY z|K_~Rdj~|3UleJq;;^09c)-JaXmL@r&n3w_Mkf`IX!!wR+H}{RoZH%^SI`+8COBnm z!^Om_y0O9qIP35wA@-rXage?jpGXKieEMJOFZXX3qjv?plEap4bm0ah)-MT{>Zh{| zP81vE1*Dr8znjvizshgP4Hv=wq8k@Ov0-1t`TU+_QvRNnj*a6*NrE28)YPZo?Dlf# zJ_l+4s)Ua>GP3{@hHI`!%S6x8H4WhvvLpJMg96fvxa=lDYozQvaoXs{BK_l+2iH zxH>xv_M=KL02P@5gGf|~5mdAUBsI!wYnjx$>a3%IBlWqFlZXsa7a7YB-FPt;S(PuO zy7>cZuIJ6B*RPwUB?pj2$JSWxG#<-s>3}NG8pt*w%XZoHjb@Nm7}i(Wm6Y+;F^VvF z;WjgREZ?HBB$@sjA^qY+ZbheWiTu1#*DMP&eO^u7Z*e)&DJpA~RP9G^@J&LN7x-G~ z^>g(pJ{4cwvqEAQtUxa=P;p;*jrvaob^HWYKR910A;fwdKzmkC)X+4w4u20@k^*VC@Wkp^>4IS2MGy(PnJA7-7g|J;8?ZM;vK!6 z$>mlh);ank9TZ$gE2A*5y5jpGMAaJqwbgiMaEz?D+@*m>lAd6|=jFY^FjC+5wH zqbcY)xoG6zV(#yTwJ{R&OAWh~RypYUsN-ml5dv6RcAclba8DdHmqZgXU1Jbf!*ggL?3=>m2pg#Gz540KyCpOXJu+ z*ZWUM1{Z8NQL&$XrL6HIb-1gD>ra1S-Opi)AV)HdegW@G@Y{jRT{n_cUD5$aQM!(D zFI|E;aUQjb-KMqr7WDQbKIrgX&->ZRj^$#pqGuESK)&Kf(lrnTvor^Tc%K`Zkz-ueRg^B^)BD)P*AHxZ&$wPaXWqmjGv1Qn~Z} zxrg9}^<}rb27X&PX>NAQ2fNywGlF|JwTy=9Ro+PCE~aA{hk2AZzB1A+40ynT=~(P- zR(}VhoV1ax_&Nm?t}tzY)Ru`i3n9FKo!*g%Z_AI`X9gpw)NEI`@{LQXa>?dBBd0(= z#|=U?7w}21?C_}uHp@te@xf;XD=^y;P-c;#ulx$vlS+O3u`1_%pqHpJ%L@1h2n5ht!Ez^cufnZx#7Co=M=S%`*w|nZEZisObu0 z{2PaE_-8DFSQ6>tWX-`z=IfR?QYb7Cs~@(%rURpk2AuM>>5a7JXl>px)`_~M6L8l1 zz(ygg)YRdM4w*3?$#PyH|J6qQ7E=E5yAkjJCL{Czux$KemEr$Akt_XqskU>R1%{y- z&TkML_9r2>ura44XPxvTHUOmo+F{84%r>hf{Ps5Cvaw5W_qY0%MKwMI;?7W(QmsOx zR^RtFJ`dQ(FZV`Mq-ke}mxaQ_<9f{YHVFHE65#WFS1QQyD}|Q^tk7{?$*-Np_Uj6? zhEo27HkHP_*RgBfQZIKiKtM0_<41MnUq};3G5EfmGn)zAaf&nw7&%7X3QEj768`w9 z`Req3Bo4q6>anHm?kghJm$WJEl1}a_KLAVlyvs5gElYWrHF|Y`;*FbFX5tLlx!}#s zV*3+FtRz6DndfXB|1{!TG1OHX%IK4hDf3wDbqQU1Ur;G{XziG_N$xTk!13nVBWRy{ zy&2qzf`@#`appY;xTPeUFMpvnU3_z*>q=qFNi$H_6e2*ll8Y=I4Ce?=ThrIE$~7At&`?&iA3Dl!R~L*sV5^Wgv?jPQCnfAb^kOgl5jVTFi=K9B?Q-0 z-2b4&vC($k-0dCer>-D`^cvtN@|tQ{BPJ>&N;k2>#p+`2et3MhgVKwrK9@1x+t(Eh zi4_edfA*`ISh3t-E`m4Db*i&Y{CG3BSCwtLfZR@JUqYFvxwfeR8fZ4JuB^*w#U>4JRym!HZ8T)I+Fxl$h!so7l)IsHSA6JVbnR-+BY?JMlsMK5 zix#Z&-ICn#cByi}-4em=w7n}bB@w*htZZb=q0jjEkY;yl^U=hjns^i*stt)E!Ps?0 zhUpt+tW*nd-HHjKV=LS)VPvP1a++NjN~A?GD&t6fp0~mPy7@P*MiU*u-1^>DvZxGm zqj0BDsjq(_z<(pgffx|GcEBgA06v-6e}EWEI=K9mYx!FdP#%{SVMgYwU)t3ES*4wa zhZVFCssW)9Ral~2(6hSwMRsjkyr%tg@jrXGN9Jef-E|t0C=y9Sd2{E32|)62`U^Bj zRfdcaF9H%8KZUO>Y)oogWpktS)xPUjWnL=6#Y(W1Yc4$%-ZY%0l5 zn(NA{n68A?71U#Os#rmD0~;$iVlCRtHkCM8o_rZ=chmeDhoF%bHOF>L{8|D@33_K& z*>BQ~m%$`R2{qz+b1B|5_CybCPUM7IhD|r*0>S9!J`-@Z?~Raw8((QoKUTBO|Ej(w zW_ejNVR-j-yK={T*TlJzyu1KuLwrs&yL=NdP1d)G$# zTMJKA-be6XO1mFNXE*n6*7C(Sg#jhj-rt?arU~+cP-%{ z8#i)dayBE08z=SQL$OV*8iiuqd@7*Ri3CZK1I-FTI$T=@jUvS?2?I~bS{rmj$%h_% z;TXzlQMqr!+OffljGk?D7B*A%^V5a8kJ&q&U6$r~6>r0{uQ8W@aj)Ptm!>ev9HBYH z;yWHq-OJKUj<`9((7ozrYieSv@)~1u=9Ztjjlfc}gW*p6Xh!fr6*MRGD;1O1`W^Fu z0SdUTulb@E{x-eZAn7xqSD{c1KWR1#+;=MJ_4G|MY~l7YoU;Wuaco*2XT>2Vyv`UE z`zwThrO@B+2YmzIW&8gSkH0hOU%1b|$K(H(PBZU~Rt{y5gce0Of^wt!2PLPO*bGeO zhuCYpZ7y(c8@=GXj-YR&Psl&ppeUgW0n=$FpNo0e${+EVr73O94GGQ4V6Ha-E2}0m z*{{{@>a1OpURkndE<&W!o^NyQGs{Mzn zqH+BgW^SpN2015FZ*1`OyXrQPQ+G*RlPu#94`E?m(n-JP*f0P^cy>j>q;U{1966n_ zEr98DQ>y20;b=k{$=MBj&i~b-|F?>$Xyj^Qsbb>b_~&%|FD>#o(4r4qF{^JBCTP$k z=!pTN2o)j&39ou&4ifmWS2DQcflPgO%uPJ9Oj#frQrNf;`jRJtewUkoShWLNTf%Px zNMdu{-#r)@d<9+Z-C#e_Jj)NH1+9Tibqp%< z!`YAREvt5DElUc4p8ny}M?WG-ChnTmE-1Z8)qGM&2hxW82xS^c;m;maOa|a70xoy= zJ&T5`DPmadP+KxY$swG&;v(n7yHv$Xs@F>W(H#Dmy3iz#05?)7RZFYmTKv-YGd1h! z|CqY6YERK=U~dTJv8`0DjGC&9v50ngvT_{fZ%7Pqn#-zRRMcgLHGhv?Jj^=6z8iVg zpWN+3yje>Ja0POqu;h|o3I+6Xr}|rQACM0{{Bt!FJTB;S&V#4&&wnqP<#*w2S%z-@ zkWouA;%x*fb2;PzI<68@rXtIY``8Gl%k_&3;kF7xcfUSNCiUH{$y48~1Jr&O;O~at zLQ!M#W#R2Fq5ivDYCJ(c!vLn~P~h10Zw>nY+rRP8$?Ko~Gjo@fk8%zb6?P{jmQ7Y& z)tEjBlKIuCa7y6Rf&8OnJY=-V8+AOtCokjPAc5XI;Mqf%-ApUVz8a!4L>?FO1D-9P z!|Y6luU~y2FCpTcmnTTW@!0KuB=+0k>3EttN+_JKmNQMX-Xm@VKiEC!+2j>0|LToz zC-t2Ev`TXw?3ZKIhY+lJCFs_M4CvkwQ;17zz|9zn?psiP)R>e~iNzQqzj*I|Vq~dWt0?ZP8t0wMb6H}sM?6r;{7`}& zB{*psHX2SQk?K>MRG%8M7gPCdfwN8wiAlmCr67iD-zvK-Q>^H%;$WU}RytXq76bW* zcA}i&f_x(PXCmLI2_?IrQ;X%im@U-1=t0<@JPnITwweO<06ovWSPb1F=2+Cl(ut{< z57eBLBi40y#ZYH=Isk5`%E40&l2>;zrX&a+57#+eYMC} zmIop~ivJ-As_5+CZe?orH@~B*ox_|uaJMm@@se90q_%Kp;2N{!oU(`~wc%t7nwED{Aj;7P2!mu#$; z+OJ!`K)3M;Pugs^IS*VlgWH0tz$N!S$2pZ8vgs}{8wn0)_Z!%>73|<4a3J7|$`8|* z+(^?MQDHMV=?oKuUf^Q)XNP&?_LxnN(~d9f3L6CyH$TQWIIsQCpQ{<^z509u5b@lC zCx0+a?X>G-s!O58p!uQO)0?2k9;{AZtr|5hvw!;-2BXs@9|&uf?4kluu;&dxi}sst z;__SyJ+tL+eXToQwmWWfZ$=XtCa>kmC3RrBwV)kY@Oo(}ED+N$GOg2T#t+kqNvOhl|ZH|-5>Bd100PN^-;ZbB zL&8fTR$LHv_tSxEt%Y~Dt<FmR?}w8>Q4RGx^Au$KO)*9QD73D7fyB?Ii1Y1d!R$%scQdHpMtG zXcH%u!RkdZ<)q8i6Wn%3fqhT-C>h)>nA9yAR<{B>KvpV6>4?dSUZC6s^zMW6j>?xj z`%4re)j9>7n%df|=pEUpR0P6Y^m@bs@0u1gMHe*d;p?vT70mD0`J}xf1g}Y!#3k@` z#}*YU50JGmHw2sb_mF^D$wNf$}O^wwVj^*18-EI-Ia2Mkp6|7~~6 z-%GA>AB z#Mj}snGnH1-JAJt{AC&TR1*Zc3cNhX0Q=!ScAnP|&%V7^z3P*$C;y7q-LgtU+W;mrT+}8m5q24W^ z71^Tg@OKbc@F_reriT~6;E2QfDK>b7u9+E)PSTGf$;?&)w1@h*P@KXgx<-N(A&y1T zzTu!o>*%XuCN_;8huoTe9A%pMWF4Jp21S3t6Xb|hOnJbus3BH2sG+ypgyECbInJ99 zwP|8aqYA|olecK|%r0iUYIe*$=tQu?qa*@_4=iMpGW_0lF1P@54~e}sme-gFKgYoU84cBC_wZmtA{#B@tIKMVMaXN zhGk5(NsUS;9@H&W2vbXt5q90f& za?9sbCKT~apAi^QvU5pUxnEm$p_S?>%JU~#OyhF=OD-n{UC>=8GBbw3^deP0p^9AR zBipQ0U z=M6%s>eS-^L*)K3RSXN^ku0`S-D_=Ltnd|VeopX0tT>`aw2ZhAV|e7=A7uQz(5REf zC38`{-0Cnt`Fkn%Kre=FC~lx$TZ_dGn2E z8ym0iMMlYL!1{V9Gp2w1KGw(D;*VlkCReA3%ZT5Lck>)uKpBzhOh-AEZ9dkcCRNAC zQ#i$bDaiUlI=~BPge%ny5W`fz`Yu?uY<%?1tzY8kKA}nlmjlKd4bB=d;gzg(o{8vK zJ|>||-*Qmu{FpueYm_kvLDQ$XR`+M2T+&y}`CROo)=2vy5ng-QzcRhQ$FccRAHN=8 zkB0sKRx$q!#6Pj|f2!!x?5W{@5Rb@+2~vsa^+J;%{WjRDk%U2f&9M438>i(CBzi&K z$B?vB2Y*A9n=9;w)4`ho=FGD69eBMN5)o=H~NX0xr2YFC$Z z)UOMMMvyTqjEZzQ-CIP)ec6`tMu+QRY#2#g|9U@Z??>7?Fs<`Ag4F)QvDNmB%An(i zS=jgLL#U`u>vSHqKIFC0uT#t!y2?jKh!3a%yY_IUJ>Wvs%P?gYB%oJN$2yQ&PrEExRtVi z?F!H!%`Q{ndo3$vIUd{_?$o0wjL+E?0pB#4>!S{#7UjAG7kk4Z@!4^nzsLJ*JUrF& ze>!`g9b~&T;7`60`Q8)-h-42T9TQfv$>n+|d$-r|)t-BooT^LeamKPLglIjp72|FR zq_322o8U4wXgiTDUiw_YEK=wHkq*RmeN?qPaJ+NB=}yo=Z}@@7^5J`l+SCJ8wqy(V|tP<8qn-#CS`js_tp zs9Az|i2Kp)r+MXF^)mXXN^na&(+=3@zp~NHGA|kI9wSL9-(#vt+Qd zlWqPX#wm85Ex7)Y5QWT3l>4L@k=#VX6sF1!6yu=19Nq}<-#>gX=m9I=2}DHDVEx@Y z(jBnT9Z42u49Ts})|D3&7xX8A=rE@2T;v63C6I~@(zH3ko72Gp-)87J9B8MlClncEV6G~4baU+Cx(vxRM> z{U6faGAzz)>lP&tyl{u$?he7--Q7I|ch}(V?he7F&;)n4;BLVoxZTR$-QVuh=ic+& zKKpO|taq%j=9+WNF{(u{7f}#{JUU`*sq~!mfCXZ0oeSqN3Ikvv#cx_eaZ8u&Bbbw> zWTp0VOM5=PLkOmEtZ{=j5Ti`&bJ#giHO)KFEWgz3ioB8#o!(xp3?W?*+yJZnd?QIJ z?^B5h%bE1fn#NMceT+hJ&r~X+2uruM(N{{VKO*aYbo9H`JnltnA7N68kY_0sH(F9t z^4$BXDR`1e9uya2<1nTdwxpJj1`$jt?BwPZ1lB4L&lby*#P=n^g-tX13NK{jzPpE) z57Vj*m3uy&%B?J0SQS9MYi}6rRoYc9O*Jk>#@WV@dDA}$hz+Z0QWKW zutM*9Ke3UMB$eu;p^vQUH{zwiT~O=V{RKWHobm?dmLDnyj}8~SaQy=V3QNG~Wd`j> zkyG$adoA74(^)c0#RRr4ArpKvRh37D{{Zv%g!`S*&eA>zm`)(Z{wJ^M{|%Uba`wO1 zb7NBUsUi7~*rZ>9(L5-i z4~KC_YS|xz*_N(;sn{PCIHYY(-H@UsWpM@9=6L>tV^+>Q`B#TMpi&gq#%je8vZ0Tg zwNh7zDc2`k3E9QH-xa}#r=1bMS8b}!P8TDj`~aX4XJxri3t+Axio@2S9BtGi^S{k9 zx=jALK;foeE0-wq%{3tXc#OG7_YDW#40fe;V8by~2l9-8wbIg2A|R!S?yN{|zb#AE z+_70@M(Yd4h%RTdo68D4j;EQlLAK`vBrQv~distdr7s{d@Px{1FexvXvr-rwk&L%5 zn_k6jDaO~HeW$oPn5eib(OI&WonH}3I^}-+1l?T>yDvXNE8*I8p8A4Zq~wPa+jm$g zVrs7FkLa3zh13vpvzQR6zL-Jb##_}*$=)c*P z+7EZ}<5oY#A8@L0BfXl@3!x}VZ$*%O=|hVUL_n7{HKV#dkbxFq16#53ghCd9<`#ko zE23C7Ipik`wJIK{+L%7hYl)ySn6rEjQZ11~p1GPFIf1WA zSKyyXgYU@v$dIn0-50RGn=Jl!6mu9me681<3xsUq-E$m$ zZ|Uw2B6lVBpC^e*3(aizQ(gHLkjF&Wx zi$J4&lBS9!)wv3siqrWuLzPRgprZW5jH><0&Eg0RcR4+S+~&Zj2uL~_&{={Soh#6w zT2BW%ZhsQK!>D2!<1`3$7hkZQMi(=BP|M*v(8Q?HCs{XWFtd~zGRLt}_6><)#TPoD zb_m%LZO(D>Y@F_!(rPfXsT4%mlia-OV4VJ;RM=-%8$K#Me;fQw?|8z{SdB%7qvnyE zWezs{-Q#?P^C%CppsXv)cso&U+UK*MG=g>l)zgpMqsO(E;Nz%@wJ1CwueCFTmP51YbrO(=La|AO&9r{%XO+0q1`;J43e+<$#q{&eA0vr(8; zME5`j>O6iOC*IGCcd^I&)Npo8~d_4WDX1==6B1Ev7KWz~%AJ&prxIMK6Y^A5+rO1@!_ z-kGH27kjKk)H5j{;})^VBFCc1-dsnmnhY&ZNk3B->(_#wQC)giv6Xct+4eH(y`*|= z3(%RVKE;-o`j|0-Y%iUGpBZ-%mj9GYmDwyV&Lgu*br{IBR|Se3D|A}Hj_kEXDQvX5E;=*Dq&=BT;O{7Y-`Krfr{F>W}giB@b zk-LRWqni4~mK^&#lhf;_F|{E>wH6q5%75bcXRpWhh;rw1v|vfuRip&?-HwI5I=ZcY6L< z8Q3*U+?)|3qt7LZ_^^{W=9!ERbUQQkd6D!+A0=9E+2-W4c~nDEfGh7w2+gUzruAZUsdSa^1Cp?36#OM6PB#%JB>x{Qs8{2VcLAn+}QPxMd%tfTn*hLRy3cE8u;iXcYa{`eZgW=X1{ z02H%msZW>(RqtW(InkErp)=BQ8T$O7!WH%~zPo?9;9rl*??(g5-Aw!c%{1(PvrZvn z{d4B=H^XX3@Fd8siti9Kzsx{>)n6hC_(?j#lmBj4O+0V}mp>C)>|*L=&f;Vq!}t2H z_p~)|MI3*W7#E1T`N`ke0ozJ^y4KPXusY*_WigBh9&Cw=&^p!+z_4+z(K7e zTcI5IF=uedid3JbkYzvH!Vhb`3JeD6jS`f)h)$YWwzxd2#jAZ%$mc;s+K4P3X8(H{ zMhDvfnueuYZ2R~rkTVF5xpDY(J1i!8o6U8NtmQUqe;mNwMBG{muOy$-cqw-+sfo6? z8*$d$8l2rMvAW8-D;<5(x>wr4+4^vNpyk=q))JfzZ6K6wSLRdhZSHPUhjankpcb4e zGG_Fy3y0Cr0d&;{N=ZNnXavZF3Qz{6ckjor6;)kwpNa#5{D#4F)9U?2G_m|xQ6YCXUdveY`!%PS|xYr-jK-RbFi@s1G8yf*7Q zA1H5Wktv@PWO{;w55eT3+m{qF$c+lu=zPe;K6c2Ils(TJ#f5Nle&j#qQ0l7Qq$v2{3UUul2vA#GrrH=%_hAhimP1!_Q~&G&@6YZA@MRe+uGT zv5>S4&p22?-?_kdqm79J3}hU`rMm&o;T?yw#|`z~cl1DX4Hq+-wvl40na{~zn5G?8 zd`S4bQaM`hZcSTVKAT>W9K1`m0*g>|q1wwD@}&V)vWCLc5dK^LEw-gb&dGPx)q|pL zKbg23GyjNs!%ay2PkFK28#awdjj%CGIDQ#?_9Ho@DhEFmgyCAel}li%pgEkRb2Q#W z%S|RTl&p^fPBm$JP}EQqbDOeN(kBR1@!6L47L3BolKdXB_Mfe-o!1s&^~-nfK9?43 zvG;1;1Am73Y(bqybXZbMgNv5N+{#H5@fcL9B(u`p6eLJD&Ee^-<~MLl4RZCeM;S-$ z%b4CwSDm2`Sarw_VfDd6uBR1N1@Je7YnBJRQb0-Xt3q7bO~J?@bNmP>nlw+W%xL z_dm4vKabP@MI~3PYU6|kN*CpTU9)MkA<`^^9Py$)8Z}lD)ag#Z4Bs6mb3GYc`IW%1 zc4p4ODf`58(av31uv69xfDFLlzY2KU(HOL_Gr=o1%VH*+;F?@=njCdfI6D@|{r27- zHdhCj(PyOFVBdj6xLrtQ&a@KA#^20@dUT8_Fa8+vMFq2j@Lkx)^$WZ2#A$p@A3~hCh0j^i*EBS zzJ%?-q0P^=J)5fQH)eI6U39$}nzyENCW=_=1u$zcZdtHRKkIw!#W;deDg*5sNX|zT zA6-0j?rC!X2tT+sQjHeSzNVO-c=N;H#aKo>RyeOdWy()|0?IorQ!8KN4J^Vwj$tF?mJU>4vPF)Qqwok zBd+&pTa%PH$#^~gW#$Ugtw)D~pS&9Cw3flH6@@G4Eyt3EW-!m*f(g&UenoU*zyfGO zVpr&25WVx!$b<})lG$VTBVHTp!ZeSlR}D!E zeM3X5ZE9tmL%*=z#G1I7>fvvC>PFkJhOv zjWTW+t#JW4G4cIj&9uO>@Ez7LkErg)znQ%8E}7||f-a+se<;oPLxJ_@p#0DGFUWq| z77e6_l%M(BKqn_9(<%ZVus`Fv;vcM7!H-<6oQEOgRa(` zq5kEyt{S}iv(vxQr@Ht?!f-^|3{1pjx$1#lc^eYHoUT9^h2?&S{a3W=D{H=JCY!|R zx6vFNWTvVY1)`vp!y6YOeM#E=s|RIHP|(_4T(=mKR?>$gzAB@&?ht6gV*>U*%ddTV3xhBy{1IOBf7+rVsD~2vUbH@i} zQ<>cFBc+l#BrbvJthkH5<^oKEzK9?b9CAQ;l?%dRI9&ieC(G%7gWI2#kBkav1LGA6JTn;K6LJ7i*bph% z2u&B{GpAOg0wAH7Jtn+RRPc1fH7-MlQtT*hb?~&mwb6%uOXR^!rjTP|mVux{<*Sg8 zOd;n`lx`2RQnuBZI7HG2SOgq|L_oK$`Rl7Q18X<(IR9>JtC2&yA)Vx6BYYts{$Jj% zj^R3H-N+eo)eS=0&!+)aLa(kFnyl$vLkHNuHk|MJXC3C0n^x^ z0>U6|nz&X*N*$T*r1MFZW089_lB^6|Y7+A-$KFQ~A8*TWuvz&We?&7mov{=d+8(`K z+7!jAY&BbYhecJ_8#6&nx!4Y;ZKWk=G2e(451IU*v(5CYjs1KIalP{y9Sh=7t?@X- z9yv1nznx!w{D@Fyd&Laoq-f@)wP=77z}Oc3dO&Oq9*<5T4WxLVu?~BRu^ukJqq&b- zl@tvaF%&QL}*h zfT7Qbaq7>0%rgk~h573aqB$GL2qTmWe{i~_5Z(sx^7IJ}f9<1?%W`Fs>VCHTM6!)l ziYo_3fJewEG^npuM>z;<6doAo?9iO8v*Tw#GY=p11ej#P6tIu25EROpER8HlUW_xb zyqu3Bm+nbfAT-x*N$i68BbI-s1nHAM;w{RHV#}C7 z^gBR2fGEHe;{k^_QJ|V4VS1A`_~!+<(M)DVn|vL~=&)sjore7(B%*+XsX5y8-YiCA z$J#}rv@y0s#rw8=lmLaPC5y%eM#=hfY;yynT03Bm?|rZ*RapSC{0<~IIjktb;0^*5X z2F^LNvD~D#JAm-U4L6g+09MVYzBR| zYY?^mlfAb8H{ESEC>m=Pl%SFLkpng)B?XhJ1sqCR@N+pFc)%mbq#d#heeN#0)3JHE zn$%0BJhvZ0csl@Tvk*G!qL9=MwLGIeZ zPff{sv|CL_t42X-q>r{7M0zYfa+EaMIj!D~-%}a=ut{)=5~v?f-6L$EbK~L2q`IfU z#df0g6RVuftA1`hhZ~|M4ymPM2oD8f7eE;*+rn z_9G9U^C)h`g%|7mJ=PACGqmOdVrfg;`}UIw`N#|V0cp*H4bn{pt4rN0w~;50`{_-b z9q<*bhsN>dJLk68Z$WJWQ}^nFbQidefQ)yT$ABv(V6fT!S$kA6b^4kpu{<|d7R@-vvHS~NA(Be@C{lPXKufi=j=| z*|3hA9NE6i=X=S+yJtyQ_>>qRt|R@|mzAT8x-sleK}y^xj2@`e`NQ7HWWsJ3lPp4h zgm=pLq24_bCMY9`3Pu_IELkTZFKdfE7h!no2i$0FFO&eK8)&O)iR~|q#Tgcb=PUbV zOJfxCwNcHXD*%NFos;bQG#UDOoYO~~*nVB&$H-bc0aJfSph_rKN99PWDFpW4$HcVMlS&UJy5Vsd;!(U>nI?uDzQ{TN0L;6*0Pp5B~ayKs0y%@ z3Li=(>D%`w-QBMVy7}W@cJfYunr<{em?!m!&umk4+YDG&a18P5!7_B(nxsc@UGib2%(^~#$Jp#oMSily6R6k-1+$-;4Y*2y0ODRE(20)HmPX>y*8EynF^X#2dvK z+ut;v=(hm$V=UU$o}d#*~5d#zQy$zMD}gP zXHCE6UxEnx1Fq~UeG5Gq=x>IUgMO2}WDsMzwK&9VG9?W&^;?lGxyfY|#|UWRE;y z#~jS;G$A_16Wjx@Ka$BgjxqOmh%9?ZG?$ST||zPQ|t z`98c{qWKFIi6~CviIWz<857Ut3xowgk>yci1599~xB#Kdfl6Gf%1kAOy4~+ZzK`NO z4CMtDAM1mB{8yM)LMrF1t41x&d?0GU`<3PP`YUvWl8hbTJ7g z?PF^kI2l)m-X%$eOnFXUIrgwRJ93y!tpj@98z~yQ5TN` zs9+**S^%7$7;B!M8$kN&{x8gpEweqdvnf}_gPfsdTP0;in~c?wPscejR5RXd48S%` zCQ}0L*m_w>c#LsNjp=YJNY&(UKQl{#80nCTz!zI9J_;2F{51dyxE#zHTULi;*a2j3 zy#ZO4X%8(o$z^I_AP>#iHi5{f5(S*OS`kyJF#$Z>S*2!QLIiYLNlsOHQD|0`tu5@D zNg9`r6$!Q0gony!_)1URWra8z_aP=-kvM>h(h^r^X%&pfPW~;C7hHNiWd^^rOZ_=8 zY(yh@e7Tt#*q?V|-$10EtBgIpgW!r>VoWkQV(!sKEGI*k!_+6AtJB74DOW@l4hXm0 zSc-`fcpI~SO>8Em9%OIh!aH)bENGDQlCV#CXCN(wf)Y%#2JyXa&% z$|_|RRqo2NuS-U|$qiA$X@(=8|JAhQwhF}dWM>kRN~{r2@00-XOuNDJpaDkk6# z=8WVQ+}1rqPrGHA=bA?@t&``C|%WZyw~o#~_8a+j;kZj*jeqadiHeUS_L~ zgPh2bUqgcFq*4e)1gYPU0|oE307O(_(qQ3GMR0qYHVOEN`6+sz+=8yC_ya5|72%OE zEpmGki>xZs~|noWjNyCS>n^d9U%kjC(&mY?1mi^G1-wr~AbYC%w$Y1mjkeumAC4O@(4Iv9*EL?ae`mBNboSud+bhn2&N6~Z*E!iX#Hgs*-$sj*u&wICvg znA>Jhb{JxR^%?zCPX#nRdX$N=^`v+4M9Vl*D6hB+nfh!qb>-trN}*3YNy zgl>k8-lYhE5ZxfYeOx?1ql67Ef0GXIB?X@U3VDP1;7S-sz@^$i3&bUxliO$_I>`Ym z#yYS(AAffvk@iO;MSU*D=|gcot_Qz03eBFbZwb0|8pkGI6KK zqRy0rK{}RaWj)B^N4Qr^jdc>_(nd1T$o^_tTdRP8`CPs(g8^0s{XA^c%VLxhha)<|U|lq-(U=XjGLlx@aje-SzRi zrqeGNq7J-bW8eTFu&h*W3=^#~jmUOjov{&RWuz>)b$OR&*E8M!;?WNr_SJTIlH^8- zhlF*}sB0-zf<+L**B?ygS&;OSR2C@OBbgayx8{R^K_J|-aG}`STzJ=A24VKrH2Dib z9cdEAnsk#)HFZs{IYdIto!OL_?kZMk2ebS-%aL>B3468d0$`tc!$a3;wx;#GP-&32 zV5jPv!oSnO@dNrkGMuGnn4f|fVbRl#nRTd^e@JQ(VshmB(rB+xUZOekpf%*3^xKo= z75}6?A8$APYX$Iw3vZ8cp~qiVGk)(-X*?=={Z@o4{1;To_D3r~RZnFW}gNRyiqmoAF`^XRaGM)WR?HTes4nlAUmW zghL5O`pH>myVn_?m%?rDo!j}ls4abTha!`>X+|TW2xO?8A!Di-qbSk%?`53IWKsS0 zkUOXpWU|u05oCwawnTzNre0(})1PN>oa`b$0FLWyU$R+&J20U}6^2XXU(W5D=+J%K z6zZ}Ps!yV5k9R72_Hf-ExLfdzO05;maSHIfN^~%*tCefHviJ9K%vlgXRLK(TltO`x z3b}@EoqSqQOL$cvlw;bh+*&tmv(`{KQ7ZwW%Gqd9Sp`%GE&AgSaRL!E+#u8}ul{)i zGbQW-QQdK6n~`yTu-=Qe&!(0$dLgPtk>^*1VjdblR+~Cne}t&jsnu0^k?|-fW8d5k zS&Ar&!!45OQoi2I_z~r(JL`NL6qd}o7)tBU3dUpEcTnk}$7!h}A`KP8kVFXZJMQJ5`|3)IF7q16Yu~vSSQV-Ji&C zKYP^Tr!c~JLERgt#1!$%Gqk2Tq9@(0Jt8gg6{{|X8o!-?C!7Qpj+)cCz zMcStw>^29?br&bZgG!i5OP8?6_LJYRL?@wzRSeaHKWNd*7%21%^z~ z034<-3hBdeU>GF6)aW?JF^c&Me9qKn%0(lM08KQ$be z%*Cthk&fe1Ti(nm-~bAMIie@2R{=ujgAQXY=$J z34Z8uc=l)%*xarp(5$1oy%t^3)5ES&h(b_^1$A1qXa@9*kjX_%RO)^tsRVKpK9#Yk zcbbi++q*1T4UId1_sqV*k_GcTlu6!qUW%qn_INj!BDn-(_Q0T=jY4OH6B>0>Dyz54 z`rw>6C_{$9>dcCO;;z?uMxRbznYbFvF64TEl zwI153-g4b5CE{!q9HxqT68{!+PznfU=a%^pK8=koqY`dn!|%W_h61C=?-$ww_oPD3 z$SAX6lNO**yWjP>EYyo^$0^yEh3^rk}@ z@YB}wPUhgCA$`A5rKYtq#H+z&1nPx{#|^Ulq|R567t5g3{$LleHhx|aS4X#7J?5DF zWl@nI8P}_{`LJAABI~4Zzrm*GX+C~x0TD)@CmO@3pz!PCw7}1b&jzjtIwjmzWa9y2 zjVnk|If)WrTWeG}y)9KlVV=uY2Kwy0q_L7(wcusa2UL zt)ebVO4D14agER`QK+&)9HQ?|zIpM#P$=-@m}V%9OTEepdL$%&5afLN;d;f7=Tda? z?JB*i|K|?m)(s3V?7W&=;@2%L6!j3~l!C`m`O#yD2LdZ9b;Y-HG7-)TK zt507zwhLKkjJ|TTO10{PBkP04ruiOew+)g$3-Uv&HW@Xsd+C79d=MCD1g0b(VG?Sx1HJ6v-8sSL=vMJh5JR} zrb=c%HMT3|3~p(E@$&cT_%>PD(&3h3e!R!1c+5#7Ad?GAzz3wcX3`RmyY4|Z-;}n) zbb<&z1%Uza11-cs4I*@aEqg39uX?TGqkw48fmq40369CLn#250_XzTuOQip_)PC1b zx_oQV|1C9q{2Lfrj8c`5-^NW_qXx(j*@p@+S`ki|)2i zjo?et%4@qBaq;5!Z|zMqHhAe~G^C$h6WB1XWJCDKe?5GWtk;ZeK&bmxSLui|ta~=f zreb9eu}7NkYj1R&GvYEd%x}fNLj1WVD!AEGwyZHx5`}_$xuWycN~1Wm-ueg2yp*t2 zj9JB+uVK|kkN3#U;=|aV8^8rlKwq<8l!hd%z4gw?rq9AmbxhmFJJGQTjHsg>1O|t= zU$crn^YTMuHW}8GSGtd7`CGk%*8gFKfo+L9(J!r`{ zVe19N40{;=W`>kd*GNxqo; zXuJ!X6;HNOlVM9sl`bt=1FHEko% zH;($oQmu`_SgTq22K^s2{1#8EV0%ZgfmX=k5&oHD*k5{f|HeYGhKwqj2KKA1pgB;q zFASzEjYJqGR!LE?PFu9f>KzIjhSz5vvQ#FHvA%TJ{;mzir^a)+_LF6?twyfWHMcc2 z&b7NN+qT1***E!pLqsw@;&G|7)${hd*SEVj*6WQ-gY&mvtp0`f;{9qdiD9(B0i`d; za5=j_0`NYNx=VMneyAYB`uNe7O49y4Ip&8OR7OWO$&NmhgddxhN%vYY6ydWU#!)jr zd_~py08Q4_KTT0Lj*{|Y&vFm}gVkloSghX+a*|qeFN|nn`pZgF(SZl(dFZaxE%V_8 zSiNoL;Um^xNu$4W*ndp39ygcy!H1=&1-)Zj(Z_|`^$RhZhl;^;Q=@H3BiACw*c?^w zgu|$_?wa$CCpRr@)2suk|RP3bsG zlbL2T)wBBK*VoY0mbLJ~N6m|gji#6tbuL38lU7}Cyn(we0~u$rR<>UAYdeFM6@ytY z>L)VleA*sYOGt8O6L$I?C-nvSF!&IF_qqAy%M4@dkTO6hY6~CooF$76qs_)F_!PJ2 zQp8X2bCJUxru;IW1ngI$T>L?7qQ!4meNXp_-4cM_y=7uzTJd_pd_ct;Y=7F~?qdm?cl&ue%aRF|4@j5aduX z7gZgLNaRESqfzbQk;O1zjCkU)~c@gr`dd5_ow zqrfMT88~QY;m^#ke^7aC?_$hf(_YgCH$_fd3y_dRp?&!-C0q}x||;a zK3Ew(7XIn>a%$q)taw#zmWUr)bJwJbr>HK|5I{&gJuBQ2fmQuuSffR_2v+ zaXlw~B#ZbQgZmtS`78y!`Hi~Pk16sAna*ELJ&30YW20Uq&7b$H`_>k?vHmha?~bWd z$SWQ?9D(K`tjlv4={wn*VD8QdHtNHS^KoL9jh2`*7g0aK$vbR5F^{9n$^6_otNcRi zj|(#2roh;J>RBb_WNvU{Wb6Yo*a2Tn?o+*rh(%lSGUxUSElD>FPs_|gQH-+>O_iJ* z7=G2lI4|r_3&{WUWD1s&jkldS8YJ?X1&VT5Gsohz4Zo}B4;r1TEZ`lY!g;}hF`O7( z#?UP~*2`cGEWM<9X({hPYgE1|NF_{m&(=QMAp*H#coK3V%cCGZ0OK#@dgS}6h2BPDCGA;j2#eYg1{v&w% z!*C*npbRTNpY*qDr3I?#A~#o6t1C|&#SqTS%qAT1BdB<}tYl(eLU zOBEbCBW1py#d_dIYPK5stmq|3C={+MV;gE*}LRGr1!PAP`-PeG7%V9Iu3`eHZ3TONTV2nL>Rb^p~*i4f?tcEI; zPR$IqlNaDSlLNj8RH3fQZrk0G1$O7m!Yzc+*PL?dLi%r*Ken4xkM0cQZ5>0;ozN&e zWlb+MdwF|LT;QA*h>oBp`h0k&F8cbwG1+<9>w?YDCTk0}TEns2rSRvpA8O1qoMM9fxQl!Q4}^Tkgm zlNmI8q>L~!YPg|}I9U$2iml952dCHJ*_SQNrzD;c3iiV^Pz#w}5vndAYz$1YeYI7J zAf9{Vw8zspnEZ7VksdkD=1_!Z$5VHTt-2bo0{-etHGa|i(er1ngNKULwF`{i% zG(J;PFhf;XnW!6!wK&mryq>&W1^ktku#skf5{*${#NB*FG4S6B={yHdT}~5O=?32f z{2-YEoY4!pwd1Ga=1}^4KrQ=Vqo0=DqUgQMvc}SbZ02mdGbp{E(N1|6K)I_QMBFV{ zJG0FWhdQ<-RvTMYm>Oo9vU+$$oGNzR6L=g`S3nxNkrIQi%$BY7i7j6Sr_{xgi_J1| zMiYa>=`>@=Q?UcX>+}MPq&<88bJ7Djk~m z>c~1?)h`8(scMo?ZI`MLTctG#BU(bn2Xy@|i4l(38GV#Ec`%p&y6yB342a42nc7c= z2*-fzn;ks|J>P-}&4+JH_7Hji)VNshn=n#vwbNaFIBiL7>1zm^j2tZBbF^E4UV z8j~dHq=W170<#15&x(A{dl~eI!72hV$|kP^u;T{Zoa=%Uu@&tOBFezv8oh;haTjan z(Us%3nV2FNs^Y`^3h4CIx!gy-B*{v}lvhT4z>M{rw1O70kEICDp&1dapc5hY)RfVCSg@vBl1Q5WmqWK&6++c>Rka>UX*QqSBs) z208_ph+ts!|Nr$2e>}I;t(|5;sYjU~<4pjt`NY)p^j02ZPzA{A!6_kN2wx$Hk@S6N zMh4X5$VrFGXYV4r-UR)Gz6qDo%cfg>yOVJ7BwIbYTlc-I3b;G=)w_GsP-tLXD8#%>rkIKFc(tsbsGZP@Y%x z9rbV+Z`9FIj&m=`oIZU9Wk|n??npKx<5*fFKyEn8HWd#7Jqglv!ZJr+m$8d+irp?W zx3Tdw!X#BVfVS4BzD(;&*f#7*S@^1=I?7>=J+Fz@Y^Ne{L=vyZ@(>#QWp-xPeD5V< zYbc@7c!VZdrTN&VLboun&6pb97aO)Po)GpVUDKH_G{>Yw_+^l6{Nrs!9eTqrDY7U! zpOFUxW?2R9{6p4#%Wf7D>s;2QE+S(ep|^(m&+Q==Jk|}4THG@;h3LM+#=***blVeQ zXc*1Bu2OAnCP~zoALClG11pl*JE_!6T;!V80`pS_=hA=FIs{ByLy>x_8CsT+4_wFv z%oTN#r3ZHy4O=JA6gclUi6thicYL+pmm6n(K5t{%!$7Ex+4?&Eq^3W^Ya{NYdjvhN zbi45$D&&fGxuOKO*>j#oql0TQUYj~hNRbcMvhq`tX~nx(Au|r)W$?uKF3g>;!SJY_cF9nskgg7p0(5K2&)vv zcV8880*o*QLOCOV$HFDK8*)&lY}wYmYXaQdBM)j1hZ#Bz9R5I-JDt-F?NvR3G<P<5cB9s0RJ%(Z!7NmFz*6TkY7pUpk;Wf-g6YIc3*>sCZi(>|B$4tImrSAWHO# zYF^#in0^g2uu0o>f?f{7^MxCn`ogTcy?C~4sY`*@ooScs_Q7?U`loj$(vTzybS{Yt zN4cIrC__X=l3 zHXu7AeN6TXzh`j}xCFZ-xkQ(OEob`*#fugN zyEtLg2`MwBK^?O$Tt@*vl@skAHSzGB+`7jkM7pP-z{A@+; z1?#Oas3TXrH}0G;80=;S;~_)U75oiMyW)ffmZOtfoO4Gsc*%6hUKVO%SN0R;69YvX zyCjHm*uFj$bU9uTrCukrr;mAkKw&zZl%&~|-nEdMa#xBI#a?2wffJ+QBsHpyj|Jqb z_Ph5tPSd?I?IXye6_KnR(-9->Lk~kWNUMeL%UPFT(&DKt1)})JH6i@NBq^e)JowtW z&#^hW7u>|XLd`5V4Kr*BnIYI$4WSsvzmgAssRJrTY0AqC0%@F7XM>fJtW=9yg`>Q; zXfQrubHuw}fM758( z)KFgx8y=3J?69XGg8z_t>{r}ueFO%t>V>2j5`o)nE+w2g2Ctc7Wczu?&^pYu_D%7zur0K z9D0BSTCJx(FqXdITx@4D;zGeuds|pB8=c6w=|UNzqdCVpOW>-tOGIlgANQ&3+rBGb z6Y4CBC{yJ1XTea>^|gHKHTia7Cr4DKQ1vw~)Y7W}TFswAso{J&ewD#UVh{~TBMD`J zE`S+i=C{f>V{D^~@E)2A(J^(!WHVHvmWiLyn3>uL6bLP|)lPCiR*3ZM94SX=_tYi@ zcH6_&JYA4}NV6prV^LsT&uj^uu&~==g7xw4;-O1&DARK+0G*K{s~Iji%Ko84jYXO< zNG&?(r|}l@$iUs2{#rjlzdFdXW1TI-PXTN})W%7!HPC8vYbAFZP~%(Bs9MJr;inL> zWF$Y@wFh7JN?0BMP3+m|L?>*koQ2at_h&8^_@p0?Qs|xy^t-{3N#VKqYYrsOKB)@Z z1F}4mJ_kn+CTRW`9G3~6U37)N!~aB;EZ2MTceHmA;D#u2qY-UfKo=+v22z`#Bd{xZ z0m(gBL(%u@0N({?hu{n7Bm3<$mJ~~#H~+Qpo-n}zM8^S=EOS4#L3>B2dBO5*BsviU zdVw6#AeGGmm$ZYon0|r+%tBU4JJi%Qdomg3<=205y7_0uArBgs2k`SSbpC*O{yQee z|K?%%AG$XGu7?%=#p;{3W*uu02ZHFfBX4Rlhtv)Vf~OFG#4i@h7wQ%|D@@b~pEF^- z=fVU2XH^~i+g7ECf?wdJpV2UvJ%@4sN7lw0>;{;VMa6M+uP0gn2d*w9INBLg z*brA^wMovnZaoxtZEA2|F+|~V8SQ-nr z7nbRanqiWU5Q9-G^FUx<8w zMKxdUd?igx#vZ=iS^BNR(E3EB0%7}g)=|*sN=N5X1hH)ySmOgT1m6`oN?G@@D4U&RMTzp=7ZOne$m7@rukumbpXjb-#o3i|L`m~ zkVS#Ak@!dB2|m`>Q01!1xA8SrqfVliUJ{oj+V~(2EIP9Q_^EhiNRaMDZI`Xg-EMW4r~Ug&>^}MyZKd7y)w+7~ z!l~JlQ>H|Y+|39hc*&`qP2%vyO|{>I(b3c)%UXp+ukuT^N(Fb8A!q!hGkVSo{zW$a z5(l3L>`8CpLG;QWc+o-|Xc{Q5U1o=b#=klED?+u52r$HJN*Hr8^7sBi=x(eat%-S$ z?eLT!VUJ-dzpVFyh#JzP;Hc~{T+sea%2#i5qe{T{1s`D;N1sk*y8c98ALh-D)Hgsw zc}q5+UwZ(Ls7%UEVVC3d0`bIG@E4sU26oZgg|-~(vPD>)BV(RoXptj*2v>Kqu+u~0 zu=~&4o`2*b;=&{p7Jq6i+@BMt{NLAFYSL2THg?WV|4M5AI%{Paei=Z1_$m=SWF@h# z8vvy4*`P{N*n~7by1zqq*sO`pqYaGd*rRvMa6EpZ=$_AY{XI^q&Z?@}zP-M`Ch1gu zQ*0o5=!DM0lgL(P^H{XRY(x5ni9?HA>*nx+2d+>s^Ju6hLApXdLlWvExq_FguW2p9 ztv^=8cdu*@H2Da-IpG^#I=>mO;>cc%Pd4PXwy0@VKrsXLBv4=};lS(=$t(#D)^SOX z;+ON)j$lNM;-mDDMR`Q&tM!|Moc?0b8;y<1l4e))G5Ta9Om+Fi&ZZ!u1G^7Na`4y) zVAWrQRf6oLtWW~98Zq+mlF@b3#^o;1&(7O(HIjJuQO+^o!NKQ82$=(+M;d~h1vg7I zjfTucxx@I_7}GahW?V|3p&}V|hG6K$U~s4)GPK;NQl!fmjlg|;!JH^hna>_#>~gO& zU*`zeDm2n$Po3Zz`;vj=&1tM=E`=wsxfdHP0Q!33|;CBSr#dqF@&e-kHeV;--A(p#+&rkxhidmb-G zIjocyc#&se@iM0=WkS4^+l~=WGZiXju7NsIUPYu?Yckr^x$H8{4=*n|M>z!Ll+$U) zN?-;R=wb$W7~F~?ax2Xwl_5aOHOb}~!<^fMy&E-9m&R0Em<3!3y`(P%G98S$b7t}= zyUp-iBjg!F(3+AYsM@s3ezVzc8g8h%D|@!sAwYeTnzNV;<#|Vv;%YE2Vsll{3T3Qv z@4iiQ80|(FMf*hM1_otj*BxYA>6W@HZ%^1ubJ!K$^j9irQv?rIQo=r@j)FY`E#*s1 zUkJ(v06Y-C(0Fg;9GL4l59uY{hj*{i3teWJfT?{|5*YX ztt1_9e_r2ZZUzcqE26qxkZFHC*AFyR+66@WKAib9Ll@Z-gtqd9+=m2Si;31`_&$6N z$eerdOP=I)TDTWBquq=9pcsql%x>6*cXO&Y1Q-zWE%Hi+R zrYo_}bpgtU#52Mvj*bBHMx%B=QZ3M}7Q^oPuaJTdB&l9GxYiYm^4)|G@Q+WO)v>&P0n zd=(X?8(#{tTU|siDBA9qc3Wbk-E=TKQbwApp?YUBL0p@WY^jo3D>X+}mf7S6+n!)p)D);(p|HQK`$n(b zyq9&x`1L`b#eU2yH^lCvl3~FW#6+wp*fDyDd;VI#!Rr^E8(bi{Q$Tpy_dy%Q$#G32 zF&cc{QR)rW@WJ~M&|bm~=XJRA4Z2sjhhE$^m~yT{aYG?pn-D(-CgMs6>Y@vLT(OTV zA`gB&pHsKWBaeo`G@U)b-d?K5WBQ85;O#%-LD@vMnrmi)d~C6x08L zPL+^<-|k{w5)uBUYJnD?LUtWt27Vu8e37ym30;-KwZUGK=UQ`tseZ5on1Zt7(G1$L z_||$6)Y_TigknRZ+^Js$R9y#@3wIkq9J-tKb1ltveUorqQ|(oB&10~=HtoZ_f%`!E-t$8D z9pMrnAQ~XpyA&qH7_zsQAc}ZLMl#W98drCUD7?x-FbxvyNut~MY-%IZ!S78?@O7{x zm>$A1lEBd)#wtECT>K;Fvh+POC!aVL7ELGM2o+tu#*puJE11I8B3 zUUbW8bfan%?i?^m8t$EOQhEb%?0$m_;ZT5rL=Ys7@P~;y9T7W=b2n^rG_sJ3bGlKn zh}bRVAd7%na1Ff%d;Sl*?4CV+H0iK#Rw=V=xTKrLYY+I$~W&UEZ}cJ*%g)_ALL;c`(Xd59Z8pgV%)xv6Nk zaPK_>bz3v?3Ns>E-oX)34A9>^vVUn>Reyb{JIPIGI}(pI(|jgSia)wVBvja~V#n6u z0s!P(8mPhj`uk`P?s)l_p=7z= z+048qi7X3$8%SWr3@=XoTk~XO%2>Kp%XV-}XU?}c4;lFb;ET-uNkLF7gLYTX*3>1( z)C9-mM@aA$v(FG1M?y_^2xP;)em6f%8qHOE@iz@KCnr~Yu8@U>h?z~2$&IEs!Gp`> zf>IH5jLMJq?t5774c(DA@5Uug_$ZetS$AAG6D|63!0GWDkAJJOES=IC1HyIVe$6bd zJ1c66j4;>Mv4+O`Qr;U!mX+H zNbU-1K>{@W^f&bjy`VQsvC^&@*=B7uAW(Ah_>y4?YT+#aRKlQKFm|-H zaxr!w`cLj+ia$l8ld-A$zbit8i63e_GWP=4M;Janaqyj)IawUAzkW7kc?6k~P_$SD z0eoh7dWWL)g`OuQXcLN~%E^@w&h2dSm{ZgfMXyRY z_t)4>-tzjM-W3JTE0xK3hxPos*pe~Fy7;3Mba;h}IeX|TxNsB+lfm5nmMZ!k!aop- z46|)NFQfwqOc;z989hbzgf$tFN0nQ8K6cyPpv?I9Z!@~8?|V7uVx)W-UtPC1))gbB zH$kOwllTVbv?p_NJ%7+)o2eo5xbF&Whv5g?~IwMl2>BK`sh5@a8@C!i= zyZC9Zvkksr8Pf#6VDc$qtsK!f2I!h4)QqDF9-ha0qnzHZR_hX|9lj7J~_ zfGuIAfsSr6E@-NC-V)^z!gs$&YNpq`#FoZX*+YcAo=A;MTfOF4B*!k9F3EQpJG3Q* zYxlh{^oiOf5|(BEXZP{XkR`Yi2c{M0*RO2xU%wdtPs8kAA=Rw~;ik0o$a`$Ua6L6i z80Y^hFrq&?Zn&)u*2dpYWY7SS&#qtm4xDg|Xj)2b18uRx|6PUB8K#-0j2XV3rdnXB z#-egr#j>*6x;e61yNddIyZw5~h#@`5&*yvQ?x^Seiu-w^@nf3(`RIJ&+w%;afJ4gq zX`!|Kuc&OJ^$jHNAv-NKk4K2A1m&6NITf!)<-r_9Y|F2aw#^xAuawI>%(`W;P>KdfW%I~rg&D&512&UBw9kEF5n z!)NovUh6wXh8J~rD@0)}>l;TO4rOqe{o~-3_n_qK-yhn6x;KhJnZd2`8D3_5I;Q^)=>mSJ_UM#&8#n}x`6BIpZSKf^I%SHT z_0g@+^(&ALr-r*}8 zGA9GHB#|F1N6@kC<$IOffhqkGDW>YhD1khn*9wdFV=NPJhmo)>$`^S(CAVQwiq99p zw18e1<#@lCHrudiG#q;~;!0@JT&7oNu1~|x-NXWwqNM%Qqb+(jLl0Hn#Z^9sl{NnK!J8_`4)GgNqY<>HY*SqN`?m}4KHEJ}J| zBr`lk{fg*9j7c8R;@mWn2t_DeNkHv#4Jb_f=}fafCFCKNZ&Fh`Jpr~$DS0YjtrjUr zQ2c66{265u*73YvFJ!t=xom}%) zK{z%#$xpO@($>I;ZY?csp0YjdmKd#lFl;Sm_*U*I&Btu`Eb1MvEkHW8Dg-O{+pafl z9yQircMw#QZB2_^w)N~{X-=q#TV)|Cz2u}xUmMIz79zZ>k4}%`y#yVDC8g<6BK&nT5m~U^qfu7MEZlChMJSiP8os)E;K2%d0xel$5aG zv%-y`1F%mCCe*?@mTBd5W{q!sCnGVG!0)JMZCPa=Yvcl55NV+649j4L>}v_!hUl0d zuaE&)E3wJn)uVCk*3>ZgkC`PCMAO}n6Fi%nT#rBUJw5cjV08A}^3md5caYJTXs_1< zdH`T3I61pjoeE{amm5yd;DcLuIm zoMGYB5UfEEXTa9_^kAvSqPqm>w??Y#2bF(JP5OvC}`9DIBHJQbwVq|BTwh5{i3THz;@xWHn2> zgicI`iDai5g;bRTk@hw=fT|8>6sOpmgEX3%n?R?c-vGAp;*nZY7YA~LEp{8t*#m-$zFpy=op7~A6Xr&;B8sdH^p%a&^?;*o;@pp50zE^~!I3wsj|5;PDsblA+Z z7+HdmG@A_ES~7|JO6|L(7Ia>z;zWFKb6zfy zO1Wa3N?GO_aLsF2&d$DyTfNG%RuD#6zg+Ot*=)@Jx1@5#Ak`bx=TgDCwAo9sK9#jfgva6K=W}OVGGINB`HB{}}D&9eq3#^s61*yDbOfFBc=%>&;Kk!a-}Lj_jv0VpT>G4n7>dga0v z^~EV=ihfMGWeR?|BbO?i32};JJ?@!xy~tug0tW5*De7lR&Kbors-|id?M>54rH{{} z04llJ5G7K|x^2J+N5EZ~+4w0IO41G~`PxhYO}0d{M4-T7H7%41-6<9-tET$bJhEX# zDgmRMTu$!IJML9qoN{DQEC2oSMULREadmR4A$=8Wi}j#a=x8feAs>Zg+JsfdCYT`6P&Gxoqbhel><(;+)!oY@qG z^5`~TPkB-~*LKV(JOgE&N_$9_aN!YLH@ql?Ajw{UWJQ6uI^bv>6Vk;TNV zJo=ngf51<^<&Ix}#XZk*X98&Ty+JW-{J<8*inPSrS?BS!&d#I!EqZ;*=cP#Pol}wz zB|_WCyVH3nsm-{c?ATT%%1{*a7yAnCAIUd{@O7-(N|*09uzV$Aq+xaLIEX_Lq$kbK z;V0HfE%irME`&nF}3C>-}o7atFLOiI2g4h(EPu$c}IWF`gpfkEn zC0yX9%^Ri@8;aRy?Yj#7Excclsm72KJwKARtyo>g)y)Y!VybQ9Eu63~u&4+huNcYq z``A}|(ITs(h>n2P4lk6yADZ=5)5Hv(+WO)nOy=>zEhy-#WknLQ670 zO*m9T{u;qfO_|vs4jBFtI=d9Z8q~+jLDY`uW)!nNqu@aD*uY$-HJnD{fW=&c3Eyg_ ziBMD*I@U?r^ZxLptJa#&c+w5~$!;W;o{yp9wX;e||(!gEP*iX)W0@Ee{itF&9 zSon=47{k5{4Ke5Ho6&qs?>>if?kh)=Rp_#+ZC*25BF^bvX;xOjJ|CZSqBo^O=X-T` z#_m{&y2Ntu;+T-X=;+{uVQw>Baa#h1qVzsL?|YV)u2EN)Z_@u!p+R)|)}3Et;o~hW zIJL))o=b9F56=u71Jv8?mOT7Aln>&r-vozVV%R&oR3r!8e(e59A8da13$|n3a(f`j zQH8kQ)37vXTQDT4W{g@w)KtOJ@nm{=CHtP>juc@_`H90@XB`bg!B-PLTC)679Vy(f zu%t)mN26EolL)hbdCo5OlY=iHeh*9*`KU_hYc+Hjr?x0nlOSLRkyhfuJ!G>8_nV^u3Gu{ro^5`bx{6(ZH)ZqbOQq+|*E+ z+M(Im&fj#@&$*GtveW&YXs~KaYaC%asl~9^p0e#i2k}9Kg@Nx{$Iw(ngnw&}8IljO z;tONPQdPhaQ#Z*5`JrefE}xd@h;j`fA007@vPNS@Z6KGwRWADc^Jxu}3lcK2>{76G z!0ZQ+quS8$V}$d}0K3?)&38__cWzs%EkJ)C9Wk8enAO+B$vjBqm7cB(9pu|TaCwKO z^+d7?H{M)>c*wW9&dPkgb9+Ga8qyybdw|Sb?^nm%%@VA&I#Jq_^NLqEaUN1{O5~7| z_deL)@reI1^mu~1fi}P{FuchU=BX%=cY^$c=S~p}^bz9yLpy;IDf#_-Qt9O}CFL>y zV5PfMfhW6!Jjz9+9l7Wcqs>_Q+&NVxS#m;Eqa}LM=FT`#Q-&lvoqsx&Y=T8;@#PF3N-p*rxBOKYm&)Ox|M#z znz)EL>#OHqa=(x;m3aPYWTcr+fnNjoNuVNVoApg$ptV2fc#EkOJ9h(xJkSt zNy=+%j}>BtD@1vBIAd#b?LSh-5Se+s0$wvHW;W+L0p{X11=P5 z9oZp+Ln6RXo#bJ%gq`L}tSHvSb2EF^Qf#G6dNDn+p?mBM$=#%^+G<4M}35ik^ay1W)R)PZuD#<-iSVi4C3*u#F5m{nnOH zH0Pcwnb^@t71UOh1Jjm1o@F+(&O5)|HtC4RDapiZ)@(vni;}(Gng!uwsx$O6FoyVOUAF04RC4BqM(Sb9)H@hxX{6PA~ z$Q5|lFuOEk6b0dTbryj`VT>oHzM9C&jB9&X2HH(<2^s%nV2(ZhfTbJ~ed)BSuq6>1 z*@RO{*l{`<2ca*!C8L;74ysLB(ctUg201@)#{Ia&GB=y{PcQxGlzJu`$WP+3DaTbupBABx6cgRzAxa_Zf z`0@tv3G<#Mq5sC|9pSya;PU|YMtUJj^iKQ6nzL%IQBk>|pnWN!tU=JqC8t$RjkH~aGgKBdv65z-{tVUx15qUa=jDM9!07pVIMM(_>FcY&T zA-ZB~ZyZb`xYg-mJ%zlQuVEd#{|c=3ftu!t2zVZXhiA41>d!3M5w>2~BdSZ36NRrKjM+GGWmpBR&7M~zzTpA*kcD9=v9g!#Dky|NO5+6bO_;NTw{3&pJXJp?@V0x0=H zuYMx;z2m+yzt0h3@Q%z0NOYRDuL(<5@x|wg+TrjK#zwH^a$|^@%z9?k`X3m1gm?R) z)3&)Mz_94Erp{Vl45}h!F*W1@)m6ln3vg!RQpV28py8$Ta@t+=EB?~h5z+?x2sUY* zXE0L}@JC~V;oAC!T~dFFGEH2w<;;fE&Ov3lE6ETx`OEk$=dB*^KIF($ohfr&!Whu# zVb)Gy20rgPbtr}KDTC3OO^~)8#_9$2>RCn}n-cWF&>Nb8LalD=uu>B`^c?4A?)qr8 z2Zn&6k3@-+hg$?)E-W=qS=Kwx?_FP_w`iW59Klc-Bv%QKC>tu>mg7_2)KuCE0sa(% zsLw|7hkZOd_Sps9)dbGjFG$yInJ6YDg@j(3Y6RcDB@Wz4Q46d~ZU=xNFq~!_j${GL z`O>4sa;1ajExnQS8tCDZdtLDuZA0-mwXSr@`)Tp?BD}Szr0VacNPs1CebQK!qiELt z5yWu`SuWc6=qyg2xSJ1n=O+*f;Pn%KU6vo8I%Hlhv@ScslQ$&Qhm+bf3VmAHkY_4W+{lqttR1$leH)q`QFpfI zJ}}(_yxtMQS0tR_T*r6@_a=^nk&1FG1xB~5jIsTtX0N!Xvtu)&m-MRcC9oP;fb8AA zSV**F>7Yjj8~|9Lof|8fgZP8}TcxSOzG7VUJ!P$+l=8_%HXnNKtHhtLq#FA_^5ql< zb6g_xh|b!O(u>YqsBD8BD1ZfIpG)GBMYgzGXl96Vsi#APxsXf29LoH^4nO;16Sa5( z=wDx|L7Z}9k?D(%p@66KRr{eB8EZc!CT4reGHJGCQmLv}B~nAU*AX}bainx z%L3Ci+9dNOK}yBU8w@INL1@~g)VNflLP4CNtiG!vCmSC=VTB-?nk>?&c%Vd1s5N-N zsovzn4tLF9#T~^4sHSw5GtOVzbVv*yrZns%m)}rvJ_^F9ZsU_V!tiKk#%$#5fSS6L za$<`021*DfAe`c35|gi;N^Quj@UN_d!idKh#VdufCT$C{g2Qft!_xyNGlgA{Qo|5n z4w{&cVlqq+Wo;}rpKr#wO5SLgo-&RHV0tKqE2-T;3Zlr+14M9|HNc-oIwH-psfNSv zqcCOCXo)?XtUb0=**7-+iS%9uKkVeJ0N*O$y-rL|I=K_dysp+{NIOXuEcw;1p~2Bg zoqTZpRQFf7r%v`wZPlUeDtH-aVfJmwj&J8dMqIAPg%drWZ*`^lygF`%m>hjVd)+J% zdYu5VsuTWX#bT+WAwhv|5z~y zZ61;*eR|JB!VV~VB62rSGOw-JiIlc*$_sEqTNqddH3h7ch(~0f{R+(F?iuh`lRB_ShNg(2;(R%d6XucF6bq zmEb~;`^gSudm#1J+KYWVJV)A#*!HOM#l9yach~Y2Wvh>O@BBr%Cue&H^ToO+oOdVl zRj^0dbM*M8A6#NWqAv@rIe07-zdF8yyf3tH26$0+&ReI*5a|{CSD`;LCnU{CU!^og zjUokZ4lxJu&+6-*S?rilJ2McT4$E;HEJ=*R`o{XEhnx!~!6yXL9Yc0RLX==?o)Iq@ z$~~m&51K(V-5YdIJnF3!4`i2h0md7W$%`8!_K2uu+n3+n%kL@#cwCuMFWlSuoml5{ zHaYp(lL?v}tijk5p_#yg?g-O%lqvB9RD&}S@&(b9pBd8p$}q@D*Im>Ho^F?tW*#*) zEAK3G>@>iYO9*@W2KF!iBuuo@O|^~5{SI_2(~7^%=g|cBE)-Nq6!hw+IG3KSPXed( z@XWWH@blfH8rLHs9d*+taW9}tH-UWDw)5p5@Xa@ai(|2~8bS^Cuk;-mxp^=jMjfj* z{Mh?tRvb&`C&$5Rru`?v&CO0!s)IMu9KSeGoh6%A(?VvW*M6(D4)G<~gxB3WO(0O+ zYw>IaUrgKznK;Bz+TX1^)V`H@<3*Q16Lm zvBaW5dQy08D;3!J#*`Cwx5a`7TIC1eXCy`D3aemtD_#wd=>~{ED?-pF)34k{_Jh(v z$GVQWO;G{=vw8hnZ8=XfgyAGVEAZFS+XHwPcb2zH5qmZKhYL$nKJ5#Q%&k>P-ZCj_ z1+{BNQ`4bJ@Ta+mUr9gAX~ZBfp+6I$cBc+>IzcLo!2?5{!0eWKJKEFZnBs=M`uI>B zRmXxp^Kh&#DwFX zqSj{Ck;MHC0);(kh4fHR=DQFJp>o?fGnWBpy60?gdS~dmQ?s`x8(#lp0uQVv0n=Xu zHW{!+{Znj|AV{J#kPST*_!goxb#(*sxa_ks7B1VfumXhqUG4|61#Txb4ZPs|ft{)R zU135Gvq*x}^#Hm2K$>&WJQ^={CA_;fb)$_=bOYxSjbelHmoV^F@R?)(uI+rlqA5c+ zQmqT(3}B_~@!DCdFCK#fH~=!<62%wNu=v_}3ZLlZn{y}j@1&ajTzr-u{_O)+|3}-o z`wz!A`d;bUTh0gA!l+~2e76@E??2atMlZjN2W;EJd_x8H1d$PYMUh{DVuMyT9zk#oe+<5m?G%2zKpb3;gkRcmO%=iElWs?gd-|0B66`F`3S zd`3KEL0%?OM*I*~vZq>k0*f68WC3G6`|~ffIpd5ix<@9!xGMQP7d$U2AtoG}oeaQ} zF8a{|r&+!UfD?N613;(xH`3fF9yn>`>r?P-+3UQQ$^~`5d=b2f1gaf_19n6$saIYK z{$*m}yil}$hGbaASpSruyubDWgY5N`jRy9WqXjcve|30YR|cHsNY zZ15wQlL*-l9sHI(Gb)x=(qdvgi| z*p#XIgrx-LPAm>iZ#kl<*FTEEP$FcNDR-W&T z>P)7lO2#G`CFwLU(maZ4%hllXfn8C~$gGgeMjbP!5wdfP4@}%pTWfLfz}-FH|A}ny z4;_pTP~q?64}>S+zmc2&4+xKdvyG9Jv7o-4zJa-wxsyA;jggeCp}v#3ti> zf6NEY+2~=eg5_waQ(MgEi9juaDti3l%!rAK%D9^D-q+MOsyCbu*y8X0kopS+4FTcy ziQ=2E=I1T)4Npv7T(CQum_DsP)9M0n30FdbVM3MZDP~ezpRHMOnz5NNtVZNQg=joS z#kS?zp}dc{lPG^=^`nPd;VBNwU6-g|-1EfB1k;Kd@?sCo;~p{G29k&DEZLQLgu4}P z6+=%6h$NW|@V5COj7^Vt&)0UvNgUClE4@3Af~5PlI1<0g@WEh}a9ilLQzo-v1Yf{# zbpL2Y>TSM5A8}{&-Qmc}-Q`H>d0IXJAI3UaB4pAP0W69eW>PSh=^(Mz2QoK}0(mY- zs0~y132DTqi#;2qi@7Q@#9vL6ysx)0p8p}Oy*0i@8povxq9i#*M{tEq3#Z#4ew{d& z=W=h2>(UWxIU1XR9DBCw^|P8ue1;l>gFf4Z`=6kSfAC=C>2Ba?KY_#v@&5v<_*XFf zV;v`C>}cpb2uTZ*m1P-S6h{~J@A+cxo|$S?*NkPAlXV%!8NDVq_?mX-PW?!Z!Gm5p zVpV)ZR;v+MDClz&rqi(53agqU$(rq^wh_zDfrjVa#*I94P39G}<#GQqXMuHRl`QXd z*X$O%0hn#;RcijF9&I!qo<_j|n@(p$7WoEj`KzYNf$gKEl!UWoH_OoXmJ3%f(Lrra zy*kjVbEui-2<*}=#LUGm!hj50&;0WRh$ad+q2X5aX)Im<>r3p^VYwIIk%CP?gp}mn z%!Xb7>Mlv!aA$bneRPsh%x&*U=zp;|Igcl-or|mkW!-8veB@==pX6lvs zH|Gd{tPBL8R6MeM*^}E`q?j4T`Ds z$%D|5gMw`?h_XzCE@CDy2{Hq%8!@^_uGZ;JH_AshGL3^(jOvp2>5wKvWFwtdV>FpF}mc(ZzKbdv}nr(bqxoY5gS#T_Jq7K#_) z8f0gUpf36o2C*`}*&W*imU+QdAuRx4B!dHvn?NC~A$#xfr->qp%U5@KQlbW7>FHp1 z%JSL!7#bW@7v2@|7w6i6HQL4v6qtS8v)^vJ{t zJ#bqvqrQF4=;R2%UE&0Z`Iyp-T33pdQda=`1JByHwX9^$$LCUM&;Go=OnRX^KoDz$f!`lM64u z@aui>Rn4a|1%t#|5B@-@Vc`)i(;j5|3s9{QXnc_7i)rXEI`3}E)j<6->unie8xw2%JuuRFyJBK;S+I{VA^KunPmy9mE zBf^J|&qMgb#SJiLj4i0!DD*)Fsgo=szB)oZ%MG!7#-}Ua?FXTgvThad9g`K=E~rH< zqu$VLDPAdgTq)h~*h{k3kYm>T=cM%ycxwhgPj2HUX_5V41piy`)_>uL{6iU`|5vt3 zR?wD3;{U+|(rhZEz)hrT@bbxNkYRh(-15&BjcFjNh}{HBrPf2Mn@n6Zh5H8c?nKhQ z<;{Wp2Tjys@%ZcO{vOQ_+bVTu&j%qH5oc$Y2xs>eS*7l5FFcYN z?HoE7O@i`00bjQoo1U%nw%jP~F*)V(OIS3+^~e6a_+lhKEG9_aoQHzrNs1U+??yvI zvJo?!C|+sT$Eri?LCB4y9mDIueqMQFRA+J<*fv-N*T_IqB}2*d(>>8Ej4p}$$C2c5 zW|+@TSPo_Eh%Ped>aGu?xN~aF)4{U>dT^303EJE~KE0dYfDFWbJBUG;foi*HPK+Ig zM4lj9gkhE@$HOfI22B}`*{WmpPHqHr@Tpp7gzkA}+UHm+iV@-_DKVb|7|nfYP%u~Y+j+UWCRj=m~L5x zEPGZ7#jLDM04b$V__M$&LMDp<28e{EH_&^mhIDcLizruqE@OY9G*^#3$i{%sfVV~rv^@I!oqN;V)4d-;sU1*1E|p#7uQ z1urcn2lrd5i`qDt*;%q>c z>YuJa5UMq`hI%W*V0`DICdgRygkgp3{)!jrF*+S(4IQUz%z3Tw5Yc3>CD&k8G!bF< zUbA3p6goeA$C73y6j@;ZBFNgel3`)dHtVsaLBi+2lsyp_FCPs~G>y%1JT9o>@FT0M zRPj(d?Y|J{ED=kbw|H#?Wp_sHsqO-;Zq!T?t>eX*3hPQC_?+Ox{2Ci02BBimGE>(W zsv=?`fA!Hj5lDeB%`*hU>+3W40W6_8zt=+WpFcm0_hmYomM3M4<0T@7e)l~UF%%Ws zfUZzjF-oC*ujN8FkIKGT8rcN!AWHuw+hh}V04CI|)tj+j&u2tIgQF8MEdk48iy7_2 zB6&MN5+E(KUw<8fN|5b638n9z4SYDAqmCVGvo(ZV7!uPXF_|WioXgKaAzaY?pEvX$ z4x>XtF(vHJ%|!pHH2zO-=)XnolmCZ$a}mA$CKF7Y9d+>!L92_$FJoitC!?N*{QC!O2zY4YN21ZJ2&l!MBtH#WdBYCkJev-K&48dQ-)V8K9_bIzp^yV2 zM{S3#P#&yN)&&s*qPH#&X;Q}sKSNUZUD`n~q|#l&&RV)!hG)=#OB*djBsR+E=AgZ< z$n_&m{u%`L?sd4Bxi2b}SvxR%RW@GSTnp`6Ta>FmPTo7n*oX}%+?{sI{Ng{o^z*x4+RZx z$_o1Rs}v~^ea`7Y4h^)?os1BJSjjwv%e~h+Ovr@;?C$vXR1?4^kwU*8K=XGa((?4? z#qfa%9OXxE(hGk&SLNH?OXn|c2d)Ve^9nDSF8+RCJ&yHe7R_ zLOXQklTeM3W^_Tg*ChS+Pmou*w29m%9{-;FzAvnqJ=fpvSs#Yfj5s&?dXtcYN!={Q zY4w)p95!^mu&fJRKhD89GFr+U|5bkIa`65Z|0lfY{(pqmzcurd6(wzdTA?oz8NQDEoP&1i^S!q3*>HYAMVaP6yi0IDC`H>P!*;e zu2#c*)$#4rWNYKOZtsuq>rZAuHMJWSKvkulH0&Q>rn0aWw@t>X*$)ZNB&i^=2$I@R zlpiLhY7MA65A(nAn3sPiBn|5rhd9Ku%W2Am(7hZb(}^`E)ZmfFCXxt1@kgz_vtl zosnR$*y#Tqihu#DiB{fdu?Lg>sRonmV@r7uECulM7twrH+_(NF<1EnP7>^B@1;{To zHphm5v!igU;FE&vlKJ28V|(5IPp`YeVC_WgFy4tN7eqQiL1D&9Mwr>!JJ{!ZN?|SvpEXnf@+lL18ddqptD-BviP1WvX3j^q2@5H3lv8oPdM?V~}U$Dl#?Y zo0bThuEE4^%6)DW(c7LVIHiZXTS0VOaWl+b9v*LF2QQ+;3>H0>bjS{4uE*PN~=u#`eXapl)N*|zlfMH4Z}IlFNg z#HREFWv0J>7##ZRpsy2xV%$)!^tO|NZtAp+veNYHZ|C=*9Ub1H#8b@v(3~74UH$gD z#2nn}+Ld5Sug`8T>M24yQlD4TkzTvXig#K?1TYlO-EvFF3)U-6uCPz1^x5~^ClVsZy%;;cF?c!WphF{=U%a?;ro6cm(5>;K~HouVV*yKV1I(y?vZwr$(C(Q(r0q*Jj|v2EM7 z(Xnl#!!OVI_Ivg_&e?lkoa-8+Zfex}uQlgfzZJzv7K}f|*&yOX-=T6h!3qQ9EA}Ed z5b3>FUq?HltgyIQ!_KnQqEUMg273p1DE!TxUJ?B-F{oCJWRIb%|@*>J_ zspErV@Wx%+=l*juA!0!l3U?!;5J6K?$BsRQeJl2zAr^Ymv#aOK)Leae3zsw?t;tSf|639hI>|-u*yM}p=K(?tkb46~9>0NH2iK#s=k)&%- zgL_u8!89xi|6lh;s4OIr*dX~pd|xc+pq6b&!`l;al=rXGNK)v3G^r0I0;J3mq{Qsf zD7&9zkUY3eIG+@s1WvJ zYC@nV^m`e=(fOpCUK`ZQai8JlBOeN~y1To|o#?Umb`4SZl492fiH`$i18?0_29T;^ zpNN@pF{Hxe{h=d?$e*KjX*&1b7*KgH3oG+QuXRNmnhffHZP=t+;aLC9FSI5ox-s|e z5(&}Ud{WnO{#1x=jh^x~fp5<;da7Plh3!TPxLW^xHISm{?#nyFfY8<~U}Y_-1imD# zl>3=97DrRMj>LotDkI#)Fo3ag^*ye?pqpJ{^DS9N(xZ$2miO@>J@2*tuhV_1T^F}E zQF@FRqQ#xdy%I;Yn5p*aEe?WUU)&G8$?DuAg5`gz^8cb7{9g(y zP+3+%T6uLHPUs^gmYJ{uTYxD&{oQr;C!a z?Zut_fZlM>K_-5!YqJqYhUt<_KD8{E7_70v?wW4m102z}0Y@1Cwx-uDpLfYu&}V^n zVYJ;})Xj!O>4nd3sNZMNw4}vo_d7`_(}#Ia@SOZ?BbTnZe0q*&LHnzZCLdlA{WN zQQRV3D|JmTXPWN6!OZkx0itS+Z9zkimhT-s1BR`jJ&iI&TXBT!HOJ-wm&>n(g~Bpn zY7EN7f#6ONh&lOZj`Kf%$$thA^?hFVf8aczP~X0>{ZGH7in-mFK<;j?t|Ir3*6C{f zC3F7AJ|a+kO$ApHiJugjo(>kvSynD%n`>DFg>D%EWFOb4rWTy6Z#y=<9wi8C$y>7# z(@ucga9gvO2E$nmIHsxs{3%1jUoH+|j@mDKHBs`Kaml)oFZlU!p!qFfS^WmY0)3)1 z)VK+(e?-<*l-#u*wb@Cx7a#nNhNmXSNZJ32MoXopA`cgqrp-yQ*AKlj1!y6j206!< zxC4$}u4Oyy%`1>R&WMJFZpTDL-hYrDJvyWBX>*R-HpuT+uQf9Nt6zW3V{BcYZOkVl zw|HmAr*A`G=IDm@jsde= z%8tUZF^-1#)-|57`mJfDnEHG*)Hr+#&hiT~XdF{ut5b%h`CiX$B&ICmSjQ>!8cBA` zRVc=RMgg6qb-_m_ICxwYTx-2~K8LkFcuZ)Z?t#$xcpOk-rVJP4PhIS4c1)tX2*A1} zG)8)_*~4$k>FKzO-S;;#Jmz&SK#{r9NVOk>fYnUF5IV?Rk9PEd{Oj~nNrf@)7e%u( zz28HQpNcZPjHq-DE~s*h?zz2vefFBYEACJierqQTaAizIWlgmQ-Pi}Uv3k5H4bMxo z9#+pz*WbuW_Q_GkD5bvqGUlxc52!+AmGV;FYIf`OKA~pxp==}KGrl%C)rPw}5S1Q(r@ZQ@DSd+(Z|sF~Zkh`{6d8?StU#@IYRLhrc*0TUrEFRSD>_gMVj-`|SWC zc?l1(=b7OnJ_;9CkUWEp;R?Ku{misa5h1()9INB>(s{|LDzmDM;bk7y{!T|~fhW8Z zu3e%wNo1-Ui9;eS*x;g&5~Qi5?r}Z-EypT_Dkx6HtOv_@$D{W5CAdv71hdTC21}+h z*}EHXSDofU8MKuYvyq9hJ=Xq8cb)e4-;P84Qw(U1vz^MnFg9Vx|2^@Z@Ivpes?)pDqgLnqtG_kPpk((mcQ;B#+_@B_Z5 zUn`6#ED(k?kOPf_D4H7`lN8E}P#pS@oQZb^L{?mS&=sYTHz${lSyG%l&;hMaEB5RT zMGwZ5ITEwavlh&7NY>@d<-1|;IC4i|wZt`z0qoubRMoaEvdm9W6Gxdi!>bPaP(`_3AQujHzicHouFH9z`R@)@Gqo09N!2e1-t@Oam`Gm#@4U>aH%SarkgC#QHMZ(=b;k^JuaFegTFzIVE zR1424xX>|QQQMC(tq!L@1Iem}$YCCzHkPmRgzG}Q<1TCiuP((Dxo zC>n$Cr>kF2v{g7v1f;uF8>z0?yr~*c*`Vwmu4~gN>#y-O;(rtbT3vP+n8?hdv+APF zlTg|jTNJ$F9uJqam*;eUUb3IgMy7I)v(wgLAcBW|4mV-^NPTouPYm2Rn=9E~=Ft}< zcJVGeZU_yqSRga(JxoK3;qLpxUshx4B~3bLGx|qUwIwGR)_@e^1#(F1E6^T`o{Qwz zES`EARzveZve#bNB%)AwBsPSN!=-3I%dcrz{Xq<_^Tnzv9f?%0W!-faJuE8j(teT^ zfREXhJg;O|%qp$fltjLoSARGmisnMe%FGEw3Q&WtGj%DQ((o+E0dzdJ1@eD&QN%*D{&$hUc zrJlO|>~AvtUV2J5w(#A(j_MuxJNkN>H@xuO!-QCB)h=pp%Kh+qu^jw`JBo8{f?tCt zCwoUsx79PP!1lVXhrEqed|wjzGfCDTC)j56bN!>`g&fk!KQ?j&x&-Hm--@FH`76hA z)Nj`q!w0cPk*U<75SzDktI0amP$-5aZZA=*sKZ3z_vz8tVhLZ&SVwV(H!mBsn8rFj zhOEwieH6i#Yvjerv)|4DD&g@As3Tmor|W-+XvbCU zFVcE#TYAMS#qM}|wrD-d?R3SLxD_5qoS>U3rbi&Wa=$F=Jl%klTD}h9JJQ_HEwFf& zO!xS^u-B1|mfYcgxQ&o@Dfxb(WX}T(S8V5O8sIbSn@h4h9ZaK?D+=La*!Jya_-)K-%}3a|Q%O)>?I;=!m7*#2WmdZTM<` zJMp#thQCUvfe(Qu6yx3TFIx*@xWD5K7ARX2H;=g`JA@u20(`?v7(>TQIBY;B975g- zMbq@c2>%&yJy{m-?s1nxt8@qD`^(pFPYc$fG48LE?BOueTp;)I2;X|V7uvAjAxmkH z-Yc1_33wcbZ)EhSp9hkP!=>yC?rPd{iR=d!4>g$#bNZKmg8Vd~mcJN+%BQS%?rdVe zzbvNv#99WE)sxT#5=hB1rF#aKBGm?=^eF)zH8xCjO1-?k*#!Q~U#8h4zoahZNa`P;ScP`PAV+iR0=xQ{UKwp6Z7g z$Ilr}9ZiR|*zr-T+~KxF1-f@I?F>D(oUWxjwweOb+#qeXc}TJ*J}hJG+Gmv-%vreE zx&kk>N~l*CqoIv(`#<1-zf;03!$$KC62>%Nv#Q<6vOFRLx_BHz)PGLBztWpT;1V_6ns)o|z*?2BS0D5DM`+X62ypQ= z0{oBUoB!6I@Cv6K!>I@G9ep@0TCA~AY^8R0p9E}Fzz%aR)_sK$FVYU2c*c?1 ziSdXXndOQhT_^37W&+y>u~Eo(u7QW{Kp$I;MT$w!(Ms({zyUOQGf?@j+A|#MhO=Hb zLm(0U^>`9#mXjd{`BNgNIgf@tjL(_F{7T(l@756~W_@pq3#}r1?jNp=FOf_8c149Q zEo`HJ4lHnir?k4dGpVz`ok#4Ov3);AEC!0~7WK&e;o|@BU$)CvODL&Qt`;P*dz~6% z8TNyfA z3)dq(9?u5-h%){YP7gmbCON$()%{Mi*;|#kFM%*?9jkFqV%7dAOGOaIl%g35I^29s z9&?>Kd^5^ZS?g)S`Ny<>I3^W}Sv#Z0#j1aoj2WLmtSc17Fl&3@u5<5Crn(6xxjpSt zDQ-1-v@G$=A2c-#TtHBoScPM`Hci$DZ1XSYM`wLc1SNLBrQ-;TW&bN3uz5RS&r5@?l zkqNK&mUe)n7$JxG+|9gYoNcj?Cx52j!KZ{B4rv#eG85 zW`RPP*V_B5*LR6Yb&3{9lrEm9Tk0>A6SZk9e)bzZH$&NVgtNs@WloVYw( z{W9y{-;S6$v1e$TjwJ(6g0i0G)hoVd?3ut>V3vE%Ln=EkT4= ziM5Kt2#;eevO|{WC43#ay>#pOM3_%wEs8_$Ft@duy?VaUK!_Hv0DHcX{P%U=EJDQV zW7u`Rfk|O-#64v2m|bS@7*nNQB!JgWY$PQbU4KFa8t^7Dl95I$taF8H;vLx`YifuU zMq^vs-&3LY&QrKI0&8?I`5J|jvA&ei^$y*kYiy{CV($#5>zCu&2b(x69PwG8Q7>>KrHyvTt zr|!5LUF>eu5!OnFNvPlKyhb?2AXi?KYQacseFp?5?(12DIBhAtwU_ z-JhK`)7~mhmh7Sod{pFR5z~7GGBZ40qR3=uwA~enIyz*GF7B)8i;M>i4HGJLSEF;L zD3>-Jm-*Z9uj5Kp!6bSF|u4j9$WA>(jvin>Z&Mxw=Q!X+i??kq$9%VMiBcA@zim0E0Y@FZ`ez@+Vb!xP;k%vn^spEs3z zHJMmz{|57(|twa&pPZNV23jF1duzNGE&hJP2Y&$Khs7!QD ze())qMNKyj7Gf0vJ#-$6Gxk@1=;a?2=%CV($0ds!9BzwpjeaAr;|<$+k-8J52z8Mc zjii8~$t1ND;iqP%9c)x+%S%w1G_NI9J=|(^GP@vQQ;rTlnoj;{~qSh)GDxt}j& zu4S2@bXsIzcBr?3%Cy%%VS`va@19t-roop&T-S zDA=9$lpkDK7Rlw)k5>6Eot^?p8$WvL*JkX4+e&_})2z_!tUdQGKmORHx|e3^VQ_TF z2ueF2Y2x-i7i;JGjAF6&Q@s|IP^A_fpXLL=sg@D(RK5(jQ+vbzRJswi({u*OE&|}Q zd;vlgJIMD8X+9?3mC-+UKJ3wlnac7Y#d-jrf3uL;V6;V`!aUhFIx(oQNRgRiHRsh4al*HAbrlb``?T_$!l2NJKqbM#-Xq3$v~mn<~L_1fh27`%vN-tz}B$S#%bq zCQT{%;jJWw!HE9oJlP_cZR*U56PQ#AKhVu;h0wuwxwO&B@}%g@LNK5wWL+GoM;zIu zhNtZqh*iIrV>!-7(NY)AXcUDHiYO1FICs#-YM9`V`GbNPmW7*}wDy#x z?&C$CiJ=n?4u6*!!n0vtBkjr>%Gs2yzz=adSpMb6-WR77x?J|UCh|tSO=cqJa`$=l zO2TC6Qj;^ijkV0&%Feo(m=}3?cVhf}IxzPTOQh}x?gT~kdjyqcry58jF|X~r0`rzme>@e^j9cp9j_3UyNqzAWILg4HEt zeiQB-J!Zju(-}FuC-smdL%LU07dt5EIbrpmHBW$@tD8HCRY;^e6N1*6h4@v^1c`#_ z`0YV$kDDJzub?O%G4C;SSnBWWUG^5So2W^lF>+qj;OgGnF00O`xR_<=q?991 zAiG?)&nV#2%gT&I>>}jE8i{4{+fkAxoJb;~D9tpMm_#cZlwvEEn1$CMu^GHDftWiQ zcV@qmPTt6c9(u40qL=c-sUCaeN`K0{4#D91)EL#Rwecp?A)-kyDFR%?D*8z7qpuAv z6KpyYqGetzo~}fddaNn#NFjm?m7EIsh>=uHZNv*qMW4fcLMD7l4D1cE4tmCIJA4OCWf zRf>PaZc#Xd#I!}DxLw&Yv%22oE<*-+Rq39#4-|QbQy)>1L~TU^MUn-ash6wWILs*~ z+|ED}NQHHj2|2#Mwf_pz^3)u$+J1GO^8wQF&%a0-gn>)K>`v!Eby5ZtoS0Z8bz83k zR4vj_R9UaDRm;Y6NqE`C_|8@2Yj^g0UEHUjhU)FkKXruc(S+=aRi5W!HiJkCHdUct z*vjLN9?cO%*zPi$aEU@RP@Ln5|RDatQAr|1u?nQ}S|*k2o4)eDhNnX^UY80OSUO z0LgJTfGa%61TAI`nvc%w8q4b~HZdqjgY)Z_(_4YA}(%1+W*kfE+;?*mv4kd)=J52^4!LAyJ>V zABi$yWj>f7#gj?PeAc{iBKeI@l(1TS5-bq3;u#${dq>p=8!ZZ6mAZ^^CvAZU&MW+L zY3F6xVv&rrq*!QGuDt7&G`yMNHT#%%pbQ2UTLQbOv z{p?(apFn-)kdpfSwVI{@jpiBbO?fxfTBQJ!sg7x4#c$em)AjM~#qR}G2vxC+YS-X5 z%4PBmkw|DE3qjINsPRocn-@>wOXkP|ruBI=P-j_>b%0l!;z5HZG7gZNCn*E5Irbwt zqD#s431Ft8P`~iMWWk`s#7Jkt{OXQkz%5<85>6TZ;!bA;u zFs08F(2Sa{-|8TW=bUP6Z$i>vk!?#;$M89`k{o6ZWqYaU__4&crd0&aI9oL@(_(Rg zG3N)voXJVGDj|f3#IAtEmPHWcS4`EzmN{Pl&Y{#paUd`ZCk|_AGqFpt?HE1A_tRlO z?}nl##_^?vt#TJ_bZlhH#gREit=n4U`!0(x7)t_n z-vQyC-72$;JpBbhnZkl6BhRCbQ_oR?+l)e6_2~w4MKkfK8FyLZKHSr<8BgaA>4Jt} zHPC`1O0&c}#Mqg~D3iq4 z=^+g%!mPbkJXP5IX{8a){&S{JXBhoMR;zMlIua32uIhw*rA3tmRTiw!lZQzTu3uDK ziU&1Qk@4kqJEA*3z503z$A+}J(%&@;gy95B5bW%O_KofJjXUlbArNql+z!Xs5zQ@4 zI5rWd1M?J``izyOU2NP><{4I4O%uIgKA>|J6r#`WSv-HkDjaS>vg)J@#T235GVZW- zXiD8zin3(p!j}q&GyVN;r0h17d|IqePSlE*rEua;(z2*Ssb`PCki(fLcQ=Zrkf_Ac zl5SUwmc1csP|279jrHHV<(l=W!Z?5qL{rSVVOVLI82hn5cnLW!pj$@Mh-7Z3!s4fQ z?7T=k3hOO0nvW6QVW~Qlf9EK%FHb13!rG!_XU-bWLj7^Q}Xs2t2DOyiOsVmqMFumC8 z+`x!uslH(tf!<;mf&L@7^g|dt(T#I!#U;9=>E%^zXWg9JV5=^*YxJ(K69o(t+qGQ7 z=)SZHe$s6Hpld>NWN@usGj;-Ti*V3e)Gd)$*cu7}n>JW{rP%r$_I3o}caicpN=^0D zwCSS-^68XikZio0hV&x5)7u_@txDZMj#TckXec@eBJq!$1Fh~d9C3k>WX-yzS!w{A z2z9j7q`MlH3TX7B7qe?=OG~S^!nL!or9R2cHu<3M^a(rEFtmCDf9{3!lM>DfbKje_ z=$Q@!-Dyqzc`v4zs1j^{tFl)%FiTxmW^s3g1s>NA)Rw3*q^Q^pq=LB}f~|+AduP#s z*p3bKnFx5VuZul!DQcsI+Q}2ljCpFqMVtTm#apJk3lEJpHDmnXJ6J%XlEYLQ4^cdg zg7KcVI2B@dG$<%{Kz0BJ^EVMPox#z{U5-m5Qq2$>OA;~}uhOX3qN zFs>jF*S}iU9u3KFnBrf9>g(PQx>J`{;QMd_ZiOAGJr6sNydJ~iBo@QG&>2LsTMc@< z&3oJ+F9ex_%_a5{k1b)}P$0i0OP#ThAHWnI;E*5ixbHBET_d{hK|Jmno}0qSSKvS{ zQ?S+JTN$@IbtlZ#r%1ZnNRfgfYTxDlYUp@QU#^9GntP^@_Nk3Q@x_P0nH4MNoH?k9 zpA^6Rk~@C92SO~zfCZY6vF8U%sq~&Y6aJ;kJ^m~}Mhr&H2oD%MwBCTBGU2; zr4tVp^7G%sz<;jSHYKF?Hho3BjJ{6U{ddm5zdao4|LYA={dzhGQew^G8-fV8C7;0sUIVv-_UgNLewOe` z!=jx9EKg;eyVgCe+Fo@kbbY?vqW6#`nNx+19uL(-LSo%ihOkI5|A}%QXpa+`GgLvD z>*^!B}tlpQ4fF4INO)I?}8 zxcO~fm7>0*btu5u2|v7w4pA(rj@FtWf6mlEuPr_`la5JYSbmP#awkEH<%Tk<+h%cY z6@C5G*w0Z-rw2$a@}hNDzH6c7t8#!m#7G@qU&J@|NlGw}g-IK4#_ye(*MdZ@!5w9u z_%w8etJ9#Xa+xgW8t~=tM?MPj6V;!EH*W91KxdO$trV3r1o@RK>xnB-NG5lx`%{Zu znR6jy7@yuQqQhJrFS8n^dk}2Wn{#KFx&=TG?8ZjEQyXZ_r_2Ov{lh$I^(d;ja$3fuVPyImSq>NVEzpNC6i}OS2uou3uUk}tz3$&&S zF~vCVHBj+`;4|dZtRYl@f^q_mXan(fdq`6O;aZS66u*#>mk$2jaC0B3+sSaWROf;E6of>da8 zwQC@B;vc|vkNclVxqtfX=AiS-52SD3ZYaNfWB+gZ?Emu5Am?ao_OC{&Qw!P?@4(An z&{nga7iY!OZ@aOU-VTmOLx;2{fQX}s4jWsVqpM~B80St_*}1C!$OH-s{ac6&wTgp_ zOkM<+^Q+ts#MkO%Pz02w7u*M|!%I_Hr~NLF&dp_W-}-6cQOIvsJ$H1HFUk7(Htf;0 zb#paq8j=NBqe8HV+^Y=#v)B|O+PfClP&3A{=T{GA1xUa-dbrQCgJ+Zc3t@U?}zf>#9+ zjSYlfk*UOA+e_@?YQom6iAv#eqy@w+ElsY;t;28i9jaSspzzR zv>)yr+?3B2tZ`~w)q=Hd;6BpB_SB>^hGP)8lLJKqQ#+wXdxUm@nfjUdvz|P_ot#Lf zX>R;za9$4i;Lk`WHb-TA(jVh^8WJb02^!6nW`*(c*6s?aa;%a(QU=q{-aaHMNamUA z8gVtppLazGS((0vHKD^Or6|J}9lI3}OBUD70`8`2g9{iwIw!?lO{<=|sv41*bb;*b z_Fz(Tf%AE_12x#tTXu|V^S|OhGR(AM{b=S+W0C71Cfvvx`y&gei;@$f@2sWC{d`C` zIt2KvsNdkw%$HQ5{A9=}pAOAK$I|<6S_bz!%w&w57?yFPk4Q^+%*LCdx$5kdu*XJh z%z`~87{SPWwPaqJKBTy^8dm99feOnOgie5_UbHS0FYZ>c9Y$4Y{){mvV!lqW9jg-h zG?mN&z-s)C3SQQa;=1T16|~H6cTSRk-oRbg$8Z#za`^Yh8k+Gtm^1qX9!nzXbFQgZ zuvL68<^gy(Qk!iEGB|D0Wb8VPKeNKZqB`dM_?+lPcB?Rr2FV0iHJ%Oft3Wc`?-2?r z0pPHd(00<2syoKEW4m)2tT<7HHh{?ujVSC&;ul*8ld!afSoJ-$BXAkly2fI>;y+Z? zf2g1tmJ0e~qw0El_**n7AR07esg8x-+}z8t@^#t?wD2n=XK0_55CXx9tlS674Lqr-#tYf_nJM1MKo)CQ zR?*Dw&9(Wo%`@0_`tDXPKw{oP$piz@sw7*uR*kBBpG%@(F z(r@Xic{w&Hocj>D_7XR6raIPFOtX~61=1?^GS=}NW-;qlBcbbNBa#DuZB;Oh8s zq3l)?XzS=lYjA&aRv(GYtIrPHRb1z+Q0u{RcQ#D8o$?qS<=j&<*jq)JU!9yqs3_ra zT#9|g657M{ole*7MmEGUebvlk%H-nR$=W2P-KvS7n3)dzy@Z^GMo|h`K*+t61d2w7 z;k~4k{j{)9d#w#5Z=IS-9g`OoTNrDKRsKlPSnavVJZk40(+MMu9}l4bo^nSJg-IZt0j|6PIAfG zXl#tqdbc(|Y&y;yNcSxugz{%$dfmkhJ8mP}%yKZ7zn(tU zx|t}ih&`1V&P_1vi+-l**-m{?vwDkAURiHF z*wKzqK7PJh>Nl<-%RaW~h5Fl=%N5pyetb>fz{&GCIfLM{u3s?Q9lE zsvoD~5Q)$6wmId{t=TYNJIB_POh0h`eI*!Q+G>oycO{mdHn4dd`f?qxa3c#i6a?+U&{@L8Gw_ z9bCBe=jnmlVyn~SJ*a8`FtgV6XBh7{(=I_1%Vu&!3m)Wkw2{mVRE^y6nX3EUZ5%&cxiS9n|eb2Ui*rE3hfFD>*+1k+j@an&a|m zil(N@`F(B-)&E=(fDhCuDJ@dDUKwcV?ha*jdQCHS_K_5Za&^aPa~4cW)#U)kn&djU zP}`9~lt8lEOkMX?F&$nf&p5W!k;vk9StqO8TjmF!Rvz|ZU!W(Bu_XsVT265hdi1wE zzX5+GE2)2)w}6_?WbI60FZUmzSou~Ru0$}y+A?7#_r^48MgGwG_0SSm{(xW}xlPeS zKpi$fuo0;%B^{NhhMw{M&EWvfJbvCwA+w{=7>*#@1MbD(JEhVhD@f3;die?Sgc>dD zFq17_@sG>?i7M!4Z(r9T<|ikMY)1l4r#oKh|?CZe1V@9CdM9n$Svj# zUCwwBED<)oLsa4{B_gC2mTC@1P|H0l2vZ&|=A>y(;0z+1pB$#RRRaok!i?i@wMJs< zDQfa4dmieCou;^KhLxMs<{xaPX_okw3?>dN`@e(oXXJ67YP5PTuuea4u`LO-&^#V3 zXiLNijZ9NEB%z#+LqB5l`S63EZATlFB{Xt@Pn2R#l@v=vd&{0o$L#Di1=3z4Nmh{n z35Q6rW2cVFlFM(P*_02AU_~jmJ*c%e?$%>Wi?`ST!08=5jU}0%2d-8ae9=E_+_JW5 zxw^&gY_XkQSuO5tRgE_C*h{Wpb@(3q5$%;+7rXXC4qGYN9gA#*zI%n`axYkbJa9*( zSd-Z3gr+73ye8;r;a22I^`2_Ifbv+l3$AV09Og$n0rEQ>v- z6r9ICQ=;9c>2z8e$zhetSn1@7rkbP4fV`$DCO6hB^m)?-o~tVORo3gmEu*f>0zT%t|&F8 zU;7i()_Y;Vd{1jlq@eLYo=P!snOJ;a=QP09jy|7guUQ&%% zHMp)_8C&@$9<3Uw(I|{O-OV{ULSK;r)xE&Afn|G2&je2ahU#g`iNh%w6Xa(V4Pn5;hs>4&kSes7G=(~$=gzib ziJ$zJmhd7$?p^P)|D32vc$y;rA55X*o`t#hBD6>}TA8dQpYqWePdQxcuH|(%Tr^VV~a75%w@G zvhmMlR%NR;J=m523RMdlM{AZ}J*85XVryT?O`dfL9N<@P+4>BR?)&>KT=9qc`=4TG zF6K8=g;kwsjWWQ0+gG4nTmR~%R28@~#wgG2T0rW(It zaXpH1H?J}=7Z`rbNlxL0|0({##DSKaQsJT-}L*P6M`H&V4QI_bd_XI>|O zs`KYnl65m%T)wOC`-sU<;+^^&-KBK*(7-WUu%eR&dHx|Z+)j$&h%%pz5mbGe={!sSt2F(E&&DmvZZvs;)eg7ars{g zD*s9t{tFnep^7Gn^a+o5URy%&_i`j1`N@UE6N9TweY5^Km6{}c&q0s8rJ9T?Xz50RXkzW z(lJH~SuPbVFOGx9x(4JvfX?u`jV%^MSNX$AycRmB=+W{b|FY}^MxlUvEIcN}sDQ&2 zEO6U`H*%7PswI2isU)DF)ukAdl#^)wa0lw=b0-Hz&CtudotLxY2S(rv1`-Z>NPy2? z6NwI1u4Sq#fW$o2KDc-9$nL7 zFwPz7RN3zlG{~tyqjnT&usC%gwp1Nyr4J37XdFSw+hpri_7dDgFAUNOInr& z;PYm@UT5C6#8x6aEYpB&*-Hs6-3Th(P!~^a?%tnbrTC#}`4cj9r9acxUkeq-x|Rsg z9u*N%dV=?pG&q$Gl)2%TM{LKYy)}N(ktgfCQ;i(R|4LAIxRmPAU>g$==5AH0etA`H zLfo^T0fM}@3 z(H@laA5iRi>K_h8ykc&Q8pP9#9pbUgyd=6ys^Kd?*H|XVaxi=`3z9DqnuSR6=VyyqaCbI zxFr)#os(r;S9D~RV$SR%pTj0?8rSMUs?{IlY>}|*Z;3%RX^)n~8Z^X0+_Fqu#&E)` zj(6uL)@~Der3|83eBwFe)+e$`v0-^&h43Z zTh?f7+qP}nw(X>1R8Zj^TNPJqr-F)Y+qRtwPpbFRXFuKV)z^7X@BPR91%CHfYmPPM zm}CACs`H-O!)ZSaA&7s1fBwIPYEOGRMqy`DtIyf)e_W{1N~1EM%xL^g)zdommG<4y zTU8j$>&<0QB+WQ#74A6-y>cV2MP@AGf}_b>J&0HNePsBK%3}4+u`ZX~k8%GonlE~H zLbcl^Iw+c|)EXB)mm2K+VJ1?dSIjDG^~{3Y^xK4Hjx=Wg!urL!YZqE`<^f!5I(`hQ z*sn}vAeAo+EU_Fj#Uj`2xAVZyp#qFEFXVb!bTMag2{1;~=j_w4sq+_?jvcxK>7fCg zVKO{!Oj%BcFACAdy?$S>qPO+>gP*y^)rlMm?q{iDGPMmr(bb@XKD#h<5}|n!YWG~4V&!*oNgoz^ z1Fg#S&sx04JIQ1G;;qn8UK~2#;QwofV7qX#Q1bJ`fBpRM|I;k}-wN8F4=?&>t?%a` zy_mVhU)4-WUJ-;DEwiVGgoFs>q`%Ko7$GT=G72-S7@mM>tyNZE<{`)xHa=&6xGzYs zi_qLIRi2GFc&Rs|!|O{?qMz?KACRNnyeK{$junmx=!i!Wl#>9W&6X?_tzORoXq%X@ zCr|WWdIGGRQ*yoG{1|d+XhoA!vg6_+QywPAs*PqFnX0uLQ(V{J`t+7^*J4x(hQ0m> zZo7ldtUHXLfhs-8y?O*l4LlQpmDuoFd$ZvQBsY*0GQ>+0xUHrjx~GG5Y}k2dW$9Sg zeTgQeVt8qGD#2j;(rpO@-_R(&yeWodJ5_dx1pIjHd|f%>oJnlm%I;xze%2kY6^bga z5?@!27BkI#LAWVm`$gag7|;MH2(ZC;-+@ijxOdB z=EkmW&VL<@WcBsWJXbV9+#7MN06^f+pZ@mqLN&T8CYAjpo0U)C)((rlR7i zi%cXS@4B;wu_bZ9RqTjk3J#oCFM%EZ>@234a`H3Jq;gnXKGy(;T$^?XBiGi0^+XN2 z?$<%AeTuncZFs(vH@kc~qjg_HGPt<=NlKtYzkR>9;V?AQQE!TKczKD?8-Et|Z8S4T z1-tw}5Il2RO>Hww6`@2a17T02~=I9VI3@8|Lg9a#M;X^C(~(6W6u&lp!U~OKg!V z8oOLg9ESy$O3lFih|S`rR+1srk{PGWm|a;h)mEwr^ZtN`b-Da2huGYA_OT-IxiZo9 z1}XUUd^KI}PZ=I_-HKw8M%ur047#p|@%nRlMb~`d=Ar9NrH(?=&4Ttg^D1#oG^(?Mobva-bU29I1=(i|qlhYx-xmrNQyfxH$3Mk*}tv7k4Ln1_F-57;A z5eB@ds#$v%BUA<-sn=MvTs`klLJ>BeSCLAteE5s6+^|(#oe6y{$d8aZtwePmH#mbu zs79N)%7i*0t5A46`;1YxOp-Q;qn<8fD@!_Ahnc4cM+5`(Z9a6yUTkE8fO-%(uZ%;7 zb`|BTmwEl|nntofP&XPJwX?i>s}YoKVl#29A}La}sGc;iv+${4#;My#5V`E;+iO%0 zDa)4T{G^(?R+fr8vspD)yDjKW#-3XG3-F=`J&OnKV#%)N?!$n4f=aDD0Ql)|sh>(5 z%&0+6BS2(V(cS*LbRwn`5^~_UldZco-U2%@`F3~^z{(6i+QQ0ne!zYMB8(9PHGcgP z#^(v4|ANGyIWSQFf<&0J6bj}*;Z)C?#p9n%_x{p^D3rHu?r zMaAwBrq3uL7s08L!zQyIgcb_hOrI{i68P-}^!eMDPsQ-S4T97e920_dm4c=J&gruB zaAzFhMP#+Zf5Z7D)%Sd`{h`?RT=r<^dKCI{pSL5GvUivfEUxn;p%VkaNf2n~7c4V6 zLOi0s=W0kZGD0l@&~*%~6DytxE6|QU=8gtepF2=r1MIZ{ml!wDP9yAf$2Z%|n?^uH zh!VV2G&1IC%opqI8;wQM&69NK$9}l0{VLmU3!AA8ivvuA40sHG&$J+N6Y|so z@feb3eE~W8yottM>lm}Xr%p6=xZZ51y)zKa61FaDLx(;IfSI5#^bq+$`D=xO1T8^@ zJ~4ysBsxm^Avo;`bM-M2BV}wObpnL=>>fw?ANF>3&pYn#+&C39W7ISr`ZX< zeJaHk);ePcExZzmk4VW7DLIZLVlE-H!#=ZreP=125&0EeiinKh2}l6OX@SFD8V}s; z_^jW>;vnkbu=-LE=xnKr)9-|u-mZ_uOI);q zCsEak5|H|71X(dR)tTFPW3?Vl<1agCXp@y+6?;VlW|um$7yAClR_&5!Jr;kZ>h%;8 zki|5Hx_V}CRQhDjMI`3!!y(w=vg9JZ*06FfnOBO&4%^x&Z!9K zkBma_ww#flDtI)RA}yPeoLi1rvd#jXjZm}aanixA9Jt`DnZ!PWng8nE0w`BI$MXlL zn;EGI-p}(A%%{A&2&yj8bJblw=ef5tgR|u>Gn(SHmxeX$9SM$SEb+l%ouOl|lj$Ru zDBG3LnX6~*51SB!H5`maA)R+3Jy#*+bSk&>pBDYe; ze?tHNGPG8z+J8nSBl$Jbw>RR2sUyL5_=gn=A&UC|o6aQRge9|~;k-2`$+sRfb9m^g zd<1?Bh!NZDAYP?fnXusq;##IcFr@@z39em?t&Op=PLBD#-d}+FbJGpP$#o6D!ybe6 ze2>V-Ov4)Z${dYtpB8Pbx2X;5g5kiT)pGwjVpG@^M<;ODy5`iP=`u2sYG5Cp%eZ+3 z($BBH?I6n(%()l|7q8-A8e-C7SUIZCGKq%kH@+=zPzft}(cy?AEYDMUz@bSJC&P7) zzc`HViE48fa98kE%JH}qrh6ZE70kJaiobSYWf|oiV$(T>8n6yH>A-n?sS zGeCEHqmkAJ!h8NUILE^a3F`UdiH#h+tjZ3;WL9g`jNVBQ>Af#!N$px_J&aqt&+ccE z0#gD9Hk(}6>cn(4`7EktL?%G-hB%f&(=G4Eek)wKNGnac49Y5oL%e}Q!)uu*ncHAK zWm4KaXuT7`EnM0xqL3uqiquYK$SMbh2J)QjL`f>AW8hF6w%nZ9wgQ8z$|oHdzB+F~B_BMVlqaM5zM zH;O1k;4VlbvjJ(H8V+xEw;+eVNb)%U*wx2c%M~HM(a5!Hglt(rq&lh>oCnnvG>7Vn z6(C)QxaNqQPw_^sM}Y``ov`5-d|`LM-!u7u>=l%KY<5Rqfs}1#kZ);$SbJ=?hPBXO z?2Z_oFGoEB?2|jtp<=uV^}$=U3u$pZYc_%R!-K{47-srMhLmxX4qUtk-Y!{))A-x~ zlW_%4FPVfKXVevbMA+NkQ2ytsMkRHmDF2CakWYi1`oD(qzr7^>Li&HkgIB8Q{)q>F zSAf<3Riy{xDXcbER!F4VMhk${jY_AnNq#i;unM*F$XKS2m;9Cxo_F0%_&MR1t&P)7 z1RbZq(!}V};gWTG`WTx7MB|wh8Y0U9a9kds9$RV-Ea#}owc6!z&}z2MH8W0$lhvVN z(4ZSbg;9?mvM6Y>b>3}(dK0nBuZ5p$(8qprK^fX11;dj3R* zQ!e(4a5bQH2fPe*6p?zx=q`GycCJ6@RW{hilvhrNMVUbNRxE@@o1%^OUVHKk$M^@% z?*t|l&0L>#`)b)Yg9^wfw3B$sK=$0^md7q&RBRBaFE6&TPVw#TZ7DE55+H`pV2?=O zP|=&&v4|s6d*4SV8As?^(W%DMdiKB4d9Ef^~T7Pv=w+GkwxH3knqoySbHJX2at=zr-_<=!y zVsJn2BhqL#V+uQ&=%lAtp$3)nY%ngly-GP4&Pd4bp9$0IjWGWxrde7B=xW(aAY&?cV-9nAv@$OM&0+Vdeez9*6@0!_8q*5M=XN} zESP=9AD2TD=SD`5LA*of%*zMh@Fr2t)T?Rw;RG4n^4lP{=1f^5dVSU##c}&Z0)xLo zmonDl4-pI}_CNkMS?~wHBZnQes-JTwO6AdvM< zHCV%Axo9Ugmck_URmlHfhuB6-F1FD^e9#!hIgcUrJhS~KPy6!+hsrmh52ekrZ0wTS z;CLCJ$SjwMZ0=1D2G*BF!Edk7KfH_g%tzLl?$m52G~^01(h=yBd6!+&9?%9I5fbwJX1p;hDCY#o;wmBy;y?B3v-1N5wyw@qVEk*RwO z?j9PK%6Cf1Dr^1oA5XRDgD!hCqFjRYlG~N;K}rN__=SH1> zH)A5LQi{N%5)gIB9sz@Xg?f83UpEmgE3IJ4`8zIjFqW#aWE3%YG_E3ZX-A7^4j9z7 zz-1LfI8K)i1KV$G(?x={>5IWpa2VN1akd@w@ls#S#>G>kmWP@Lg#(bGl4;6-X_Rv6 zdq&Q00GHe@G##ipppv&h10&#^_m|ze@sJ)TO%2_6e>(C^&OIY>;*~`gP z^PhZ!N77&U=C!JD zU+&aty8;zlaXd<@pmM+SuGNk!>mz2EVEnuz7AFpY*v%xO6XvHK^>9QzLwJ7_bf;LH zvB$K0^nKbTvw^VR>%UI5K zH@Z%WK&BCO!4iHrb2!fXn5&?LuTof~R_f+=Jj!D4nmWar{s zS+v%U;Xj$ypEk_!7pO()KRmix1# z`V=^@Bg|3}MRN;Hb3#G0rJ`@mq@&Gc&KNXF!V-fh`EWu=j2*Kj;-!8OE2;_y8!#$> zq$;)uVpOdOI_|Q?IdI@B>(eAVS|(22zbYxH)>_v2j&$rv(^rE zDmE{%NLpnjO|A**t`4AUMo5h(a>1#8IfyJxn4^Kk4SsP-dD@Ae6?h6ZNk8o{;;Z6ik8?LGTv0#&^=R>E&ycVBB*5SaGDm ze$W)Am*6fSjC*Ty7`@T{%|pS|pePAkH>kVY59Ugk^UQZfsegpCh9LLkRxpJb6rCu91F7@}O zdhy&cP0m%?w4O)6g_Mkb;|HkR!VB)^?kEe|VbkZoWAwVx$Ds6*&K}U9!!7UjQuNNT zVoTS{JDBH>Z_V!z>|128pm-l!OCFJKDEFug=vS@i$)3grW@8TpJG;fZ{=~z5;PRpglf)pN#ax{mle&I6Jp>2rM#*YPM5{zEfzI2#F{p!&9g=CCnIjDCao zG-wrS?jpl&V)jm#eGV?ll5}*tS<8+?ts1l-;$SI#aWt;zkN$F|xga%Kz~|7En`T>* z#?A;jJAWg7QODyzAvjbG#uo8{FCUCjHz1a#_u?D+gi_X!WdY2oNO%X+-P*UV+vL%F zBX4E7V6XV>Oeow^crM}g5!(#y?`!w~JmpvkOJ9`Jf;8{v%N6A!?nmo8*5+uus-Vx- zY1C_vVaK5faMAFDlG*BSAtn0S>LImu#vwoVA?-TWp#)#awaf5*&njxm2G@f&aeK?PJ$hT4 zN_=qQLsuookX8NOYZp+m7jSffu7&fL+9za2fl|9kn(6aSl&0Mnjy1lpHVXjZoRwjU)w2clK3{oCdEk@d5k!gH>~3yX|>mnx4}gh_m0s7Y8kPdd0XW8oTXvgFgk{ zk)F|7j(#XTQFWSp?+*tcx8%WA=|TLx0(5XR8X}&UbpI zF#@A>ZtV*7SdYNxUVWtE_5Qoi2sCqQfmq2Wyfq_`1sfC|Mb_g}_*>`-Q#KTqpsZXW zPn_J*tfGKuV$s?<*au|Pc}A&AlN){(NI41TUH0~83S-`uVrH{QMN6lcCzbE=t`oah z=eKw5hmPSJ6A7H&r1CfB32t;h(x*HBw#e{LNnT1xuUGo)SN#5TM*NH7$A1OuUzA!y z+XYP>?fol@v=08DurY})v{lo3mx90p0sN}4MLd{%aCD|yfQ?@{+m{Cu%KpsAv+$(1AG<8qB^gsb@Q^xG5POKNUr++4}H2RVI}EndXC&nC+ABG-}rPi42M1X>T8L3ALul8aNL@-$7k~ zHM=@qaph0!-kJLSQs#AnxdAzSyW;PQW5(kgU1CT# ziw?MW_9d%`>xjQ_3@-bPySujj-fYCa{v{nN|4Z&fYZ)D(aeyDOCn|rO>>b%Hl3zNi zVY(VnKG_UC>G+kRI#n;JS1rcsciRQm zcve;x%E1n8^KQy%nXMJTY3|U1-b2MBnh$ggebn9Hl38rKk$%@Zbtoai;Y`(u@W70Z zar+A1j$B-eYNcK_tM;J`dmAwBVb(u0-=+%^Jddf?7N%*Isc}tXkXZAQUQb1=p+3ky z)>pF$(=&Z~mbsrEnKzO>LLRFg#$o6yj7Oy?7e>Z@uk$<4{?v;Tqd_m~8=V;)*I8{A z%|=&-U0;?y^8ycs<~7Dd&AhH!TQn=pgoy&)2c&XsJ#*ZoBJ?HH|G1yo_bz^Nj2O*|#n1 z6=nL)`Hkv!bqoeVGe@a5rjrI0=_b#}#t%lrcjX_0Q2A%O{blG_hXbDTC1_1Yx30TK zRgYmKW)REoNeQE22bP?P_Zvzx@%|P;{n8xmoy~>~ZNYDxDL#Eq0W-i(*z6{lC~;5H zputb8Ve9Cg=-2q@&Doxc;2RP?mf#NL9pxZ{;g?liykU)j(?dV(*Yw7__ zw>gMFzi}q6zaDrBDntC-^B-8SvI1tWjD(71_~DN1mR|`QcbJ=bdq=p{4EWV`_^R*% z0?!p%kP4}Y3mHcNpAU)X%uX*`OgzhRWvScnPC`O__fuTcOD@G=Zu&vIg5X@MD;>O| z9q5?V)guJ6*3T7LS)zvcmlHw8%5TE;v0PCmPA4muKGRVwml>7ngqBGP4Rhf!bGLCb`^b|VvFo2w5SKmL!aE0xp90Fi?RkQC zZd1MnMcM_T9+ICzAFC|8jzXhGJHEtuYsFddlDc+H3W~OY`GjgsX!9yHy-tD2i^CHkS zw&TMGJw?dbE45h7k~vdG+hgv3wKJY6eRB1OC*x5~^%4)gX;g!!#rKeJc|VVr#+g)= zv^ga5)W~+xw!)I@-p)QMiPzT}#f9L1h@^cuR#AHL%qR*#g;0|8Q6&ooBzF*9Gykd=+C*Ci zwrLhKWL?2+jw)BeKf({GaIBEXIY=sf*y_5VEXG~<@i*!D4EM~_=tgQl)B9&+X4aTq=x?r;DGfTA6x^^uNiL++L^|T3g98-%32-d zjSo2$ZHqDz$`kJRj74(M_n>S^4@jDTfV@%8TdPm2ljf7*%d)a$foO=!_qwa~VyoVR zpepgFA7K(9c!XX*);W0B70TYRRu zKC=hGV>l;{;V4tO4P-H^mI)N;;1pw~5m1&do3Rd_s7E(U40&@qV2wqbl-aZDoVBAS zno#SHuG%fv8PC_H&8tAjHC7G(nq>$L_on*Filh8Ie+1r3J+dWXhfIFbd z5BGFlaGXn9l8e~KA7_J_%jZD=w%39VB~h($jc`$@r<<*l{Y~Pb(DJ)X-WJ<}m!TqGd zQf?+(b8N(4GnCk!q<8?UFJqx_l#{C(=V6nszPBh))~K zjax%+z6d^x zW%HjA*XIn@w?b&UQk*2}QoI10gjF?~mJ$G7kw?YMDoGFmD%*w|vtu>-^%UZZ3^9>j zS@tC{!-&f~_%ofkrJulnmAsT0R^OHBoNz$hPP+(_dWf21uROSsiM-MDt zai?2Hj_AcM8S+KN1XU!y6brKVi`$*d-+fCc@%#E)sajl>i)bvDhA;Nyn%nb0nUx?r zs0r#iz4eg#xw>c(H28z8j|YQ#4h)=Qq@%SSH&}z#Pui zH`o>!P6g2Aq?ZrW=ie=%lbg*y<%C8jAadHWjcQ(Nn`G@3jkGf|xN7 z7Sx9AQNzI4= zsw(O9MT;G=c?2X842fdDIHoJv_heC+K`ttHRe$d%)rZ@gQ9rBjc zcACT>aC_50R}?jwcT`lszU9$ZVpb+~DlX#`?5+pV3!LsHwJUHpQvqmsmnN=JHVx-1`4f5JuGvR-6ei~MQ(IvOSX~);B$V;4Suw#CvA&kc z+71+dTDaUMJx*dKsRmFy;3bpzjCFrvWqEC1uTb$YelGZ93Lc!*g^SN@AEXYXpnG2t zT-%@E^<5;B6{&|`Uz@=v9<&??(?nzFZL{D7S7$tyh%etc()zg`sPr~NFzibGT}Oaz z-nv~Ic zDblUBXxKR_bj|r7u?PC(I1zf_bY7Ydd1Cx&K9p>9$Ynp@M<9x?HCy(0O@y1j3pQDZVm8e9TvQjE19z~d2* zbOgm+EqB019?vWrzL7<^-w_G3B@=D!CYbmI*;7lMbipbU#_`yHd+i z>3I82ii zvq$iCZ<)lM(rHdPAlr1p+xxY~y@J+k%QJJiqVf6_``+b}7^!gf;|VOCvNa&PHjOG-b?j2EA$l%7>go*F zbPhA=M)zplDm8h_YggD85(T(D)@#jU-5j&G^u6U-lEu%NXLJ4u#^Za@bMOXw3c zv?Ndv67qZ{GA)}ITT^!~F-PmzGiF4J=(Y{cRhsu7tR<3f$1d%d3~l2@>frOblyowD z9;kcq$zWug3On5}%? z&L-O)pE9s$qreG_xAvJy$c;u)N!3#P!W$u@F6Vk-_9F%2-PU$^D2s-^8eheBX{06G z{D)C`E=zKr`PQNs(X+@bqyQ!+3Al}d0@&2RX_@{4YkZ?E5 z_lZ4*Peb1S>fRHxb}{|pZtm>$U++DYf0&bsn$}ZHoY2J_Hjre?=@6eu1_~O<6VS-e zaJ@1c6Wzz^R>vkdkn+P*1@{uCA;0+xj(EBYmFN&gF|r==x=eUXcpUh=yzkTcyH%_< zCkI8FXBp$Lid{MG24&r(1`b;Rm));)t-?Fk|uY#FH7T^ z7N40#T{F2UoGGy^>6$I`a-H#GEJ3Pny+aRM2P~!c@}Z9>Savt;#sS3Z5`wW)hGe$W ztpU?MD9y$;Ykg7HIm-1OOzY z!IouaKw6_24o_GiA*2f3{9Ers%&FgUempBkwg=ppe3uMbj@Hf6+mJ> z^frgEMmz{vN;(rV8+8iuJ1c*xVTdZ$w^J#X1sCM!&eE8yH%OYzAZ0-5FPLNf>UE-a zT3ldK*83RBApTPIHp0L(E*D@ZwZVG>t^F~)>Ozp5_%2Grt~W&m32=vK5Suy((`}jRKERF zd|mK>pY5QKrH{J!TZ_4QrWR0qt)dZ*Q2dx?n1q=6qB5gIw8@o=1 zly7!phUTbl8cuNLp}`L#zwt)TmqeA(VEnEhzUCcq$q6ryKBVrW@At*QM8VUuF9oZW z-DgB9td{asu(R+QtAnqJ5XN% zUAoAQ!`MUhY!bx=Oz=N)o7d%QAkbA?>5)_+8hjj~v&WdWgO&IG<~A!mEC4-AC1n48LIuGM$5h#%dO2jk!*fG>#xZY+Ih zCp%nS3x|ecp{B~Xx9`o$&uE93;QC&nGEj))#;Rq;R{IMMq**A4ZlYykwFJ!BuQ_7I zSN)LN4w#^I9jJ-rvdlxMb z*btL*v8Jy_^=}8?Q$*>?v<=BHB<(K!s+qCIk&zV&6oOQ%&#|Y&Cn{gBT znCdu_E@3)>-WZ1_czV|1Sj;m2fTvH4{ehQUJ^U2`EMNNdN*4(O(bo)2C+of|o4z>O zKk(EhAY$(t13E^fAZ>i=G7ucFI}D|iu$#7lPEBJBpuJ8j=Ni35NqCh`S@rGE z8&lEw`xdZ2^}XCtmGIB?srGMzC+q(U&o3yS@B~c?akG#ABvIuwG_fm%JFM*N?yC~; z%BXUJIHBvtX%^Z;XEQ^SET!L{{=f;o7XXl_z1qQcO_eN9$qPdv7j9k$5_U2Z#bbtsed*B!%u_nt(Y`0nxHz-zxS39On zQkrp7;UUrvcaJgCN1`efzl)-04>`QgFSZ33 z|I_EuY-xmA1SkujUt3gSy&_5{#PJLsbZvJj?~04$ODA~LzqP-WS|aY9xLZc6kP7fs zbPXnauj<+V_5&xIi7$uM2w=vHVqhC>1Xy89uKD6!hZ)9REgK`T4fF|jW~7r+CAo2PM<2Ay8>9oa1zp97kSnKl5K zZzB3lR<4}{z3ev&?yNWPe_o$|JP}tU&aNDv_yqcFtNlC5JKKNa^DqASY1`5MfpMwX zSJqDSxhxDgh#5SuNErq0a(3OA*X)(7=`E5=Q;r3pkNL<*gma@`eDEF2$)5{Huckhnd1$_YdY_JMn0*mHmn zy^rRof4AT63yYN%GT^h=%%4FJVDfJ_kZTT7w&8w_c=WCcGbB-R!se6_W=c<`qh-*tz59B8vU^ z><*6&WV8C`GMC=Z@OWA9+8634SZV%(dj-iMDg50yHWgZy$vxT`n(EJ-A-~=`%)NIK?O|AH4Mfz2a?ofrdV%#m`kv7( z_dFNK`Ub}7PvQ8*j8}03P9o(3@yH=BP-o)xZ+4wO%=5N;P5w_z^3Q)0G}-@xrn;`` ztPt9JN(vxFs8%iM8ld$vNjActGcFPwtnw(VH|UFOU1KD1zggs!>MOVaZxGMZ*45eN zl}8Dswb&GkXz{R_$K>#^2g6I&_+yS?C-Bg&G~W3T*^k{{fD9)wrl}Y_h*jp`ZLS2Y zYfS*a2PD6_&{(dw8L$e+te#>(QN7I|dYHFWb`n8;q1EV!eP=$1?9hFXP00snG3lqr z_KD0eHy%3I&)-QdP+qTVM#)y|Sz2z0M%v}};NP~0Ayr`M)AYbs$B;?i^OoUJk!KyV z%#a|^G7ZC^NimYbC?wS=%Q)@v9bUAbDTqK%T(weQ9 zB;Vf)A6Cn3D67XZtaLj*hMW$SIAenoQ1!!v!$W4E{vO_#20j+MNU;+KVa>X zzMeL@x?NP?@*U?b5x1AG0@_X3W>0i>U z)Y&X6Qc-le40;wX9h%Q`)XJT?^d62|txLtrXgB$mLMV3i=TSyJQ6yYJ)vyLw&q^EP zW1Td+***O9Ksog;8S@`P$UqHF8X{9;|cJT*<=&Lwb99NF0ifRyjO+7S& zlt?B|2B{7W881jLGm}#x#2?KYYsi#W-7lGo*((l@XCHtxm#w?D?!yFGf7@M)9zG6s z>6~kEUj^aSbs-hxL$ZR8NCLwMNO|fgG`^UK~iVWB>~2Zd=|x z9HWyNSShe$rY;1z5zNfwa1MntUkl=Useg3`C%Ss#3jo>nW3GojKZ!UlWy!%SBSp^* zViE~{c?CbDpsCptE>!lSc$5fDY6hz9dRVrNfy_R{6-6Ccztq-!3uW&r>MG~9#jtYt z{qQhhkSp}jCSBY8O*1mIblkhYDf2S&s=S-GhkOB3>+8s`rr>r-L!z&S(@%Q8>28*d z35_BOX?jM9Q)*!Z3sRj5B|J4uBRWCt(VN|G>JaW`aH?*WyMB&*@ciF zCd9!t|K*|OLs;`GK|L@O@&Q|8dRbk@MqiyH?>1j2=Bvfs$~ zr{sb~`Pi0hT;*3>*;89(PjL~HZVg?FPVfSHlMe!UJNYyMMLWAZjax|oMXBG?@QT)+ zI)fHIGQGuxC#*bGq1D^i+V|S#{; z(}Qa@`B*Sb@qS9fo?$-CI7Fw>CAcC6mX*ru&Ps9Oo+80wnocgFfZdnp_!(8BP7RM0 zbXzw-YC>*#SgyM34O^#Bmx4vz9;P={gKFb7(=3Gj(cB3yPyltZ<)GNSgg2@mMbEp21jTVi>= zvLyMooN0YyN6t$XAnQ|hQ1iB`t*JWrgNi`M*O2Qk&04i4gdQJ)95W8r4VLn95VwA8 z24y<6w%%xXdX3Qnt!&2hQ5PqXp8X2v>W-ev9MApdFAinVQ6O_cWu*y4B$ zl;>Qpjpwv+2vdDGzq`Ry9fpfcp?p!Mf9)R>9@PL99Kc;$Xu9~at*|g-vqkwt-PCUn z;YY!$UiD?`kZW*_`oItQ0B^M`gGJNyYlt*xXVPzVi&`sPa8{_7TiVhxTEOjmS2g*3 zWLlv9O{I124kv_PWE0#gLMP`Hx)pUK)|HIlhhv(U6-8PNg*tTukw)4cc)yB5n z*tTt>F&f)ynxr{TXWp54XRhx%*UX&r=l$<}?cds1Yp*SP)#xuErK{s$%fZ|{fJ=~C zf*ARW_M(#B>#~uJyb~{miwy2njN01PS#`DwXj~wJLi?Ne=Mq;VFZAi7#_786}WLFX+yw0#gQYR1x>hCJQ>ct}6Dn4f*F zIoy(oVM%{qZh3Q;bXo7`5q=1BOKm`_ZfV$~H@F6^=9P<{ zPFhT-<0#=n49&_<0o~Y&SrTK`@!^{T(@U^q8_K)wqA|8jFJTDr)F}y>gv5-v9D}$r z4?d?OM1cr(bY$@QEe$N~WMC**@RqgX08$j#K^r;MRPl(mH7QdAQH<063>eJhQ zQgz^X?n3iPqCyOAt?3+LVv{<0=HGLLD_KV#$1PtQFU3z6k;7^tv2`xZ43{C3JR4e@C#{8Ox^(I0GKJf44t;2c@oFhdLBjgCW>l5H2WH1 z1#ctcw6TT*Yw_mPIp%s}gym_#0!{0sn9I4jLJa|xF>KdbhDG*J^Tn$|BhxAo%Y`ia z;w15+^c1aKn#irs`b29rUmZ&$U!)$=WsIXjkhgIsQ@=0M7V6FvQ#VQf8~I?21Sa{9ADhFW4ybRuOU!)1Uc>1% z_9>e~^E|ULJXq`AnD5?>9G3%$tpqbWAe}*wp5C9K>~{dKD6!uSJXFhujio=v(k$e(gtPBG3eUuma7963q%YwYwt;%*bz881nAS5QxBKGy z@UOID?UL~60+3R41mTQ+`*_EGtfd z+PW$n+3eRi!cR7*uAq=B(`I=cp|V*wf$xIv!MQvICaf%v-k+29yxr=Q$ygk5SDd$w zbaU=HQyX4hW4HYvYhy;J`4_JtlwtVi8DpxXbcM8svZ*#C#D|)3C(B32e)$LB!E-Ak z@1yxten$ZZhj(64R!VxSj^Kl5p)C8Mx?3NjRj8`EpHd#-ySj|ZtLo7Ewe?kM#))gd zDsQhDuEBa~eWNy}hmBi*g4t^`gsRmX+Aa%sRh&z+YwXiBhK%b(2aYUNPUC4p z3%lK%D@BqiibCBAE>E^Z2$uzXVyC04K;%+=N+fflfX8*AI=!0g#*mS8Eky$6R$?=T z#!a>a;G8Nn!-L??(tP5XRop_qYa5f9e{`F0;v4hB>P_G3?iA17l=r3^rPt*kw+-+-D>qg=;9g>fzn`s9d5>pTS}>_cdeL`W@)5~w|AJbi@&HF&%)<4 zOeqVx8*5iDoJxck5@53l_T|b655z7#%_3DrQAm=@^HEkz5}Na6RSCI{O2PqeJ;kBa zKViCDL4xst?pVeiuo`_1(dSI3#;yE83@F`9LB{tw`2B$XaH2{ieXRcS8L8CpH8t$E z3uA5pEI63TeOW05*V669N=xG4vW?s|ZcBPgR%*`-RCf=M=#QA%aAZMF`*#I+kO|ijuU;z2w~5ZtsxQK$b})1=3q9f;lxW;=9F- zQ)8jE8l{DiT`GD$*cBtt=AsY!_`S=y3A^xxb#l3Ry(Mh2@mrR%by%XSxYhMg?3$>S z&0)6ev9vn9C~nZ(4VZq0GTqx!w{$XoTf^S>L&OY_NO4OqKfX+d?ec8oeTvR70;?lrXs#GBw7Rv=zqJ zar{m2M@5g6vf~2A8ZAwEGhVr*dv|Ft$<-Ic^Ysc}Jy_uG@N{S>^S>~L2B%s)2!c1#Nj9dZm{qEup5!Z`QF|Q>O4!YKpz4;IH*}MywjO?_J zSak{+F0o6j7lveoE97R-<~5e1J0KU(3E33lq&G^T;7ii#udv8Wo%C8#wye_X(l|3H zWD~8;2`xlUNqA||(9Q6X7l!^9`Mr-Wt%25KfYwp%UJ+@)$H;qA$v)yOWG%<`F~uI{ zBvpS*8WXY`Ns6)Sw6qHDU6g%St^0tLUf(oygk4$%Im-V%3vfbo!30JmWCeApKi%xIRdA{ z%p*hii#j)o|2Hu=+#wQ-eHIwb!16Si1Kg)$aqoHm@e{rm!A+NUbYLhW^1zaJussqD zqXI!1fgLj<+U%tk8SLsT`Owc{*62C_@iplsBGk9Xwh`{71CHez022#8gQVK1FV1fP z1~cnx-Ew*3mXeDn--~X@d?%r_lj~rU?Da9D zF$A+wnl6RUw;Sa&cuTAXUvBpg53L7q>xL8I9eq>ep_!=q92U z{mr1cd5@nf4Og-#O$u+Hf{}dz7KHR;uzQ;=H1-TQ1st?*ToU1qcZu-E4pQE%dS{83 z^4JsEpD(c8cV=fknAC>h-WsNnC*}Jh1v6!l@v?-JKpEf+SbCR)X=&FijHyI|m@gRT z#{V>t!msjN>wAndRofucZT-4KZnw&e?vRNYJ}8k1p-JU^!Z2ERU4AaN`c><(p4}s* z4f*kySreY?5gEV2IGxQVfC7WK08FYej7&PCAkkDOMuM+WF^PP#R$2+d-G(XZRca?^ z%8}r%*(bw*w;y*S_aAusdss3mJ<);;jMOb)q4r-5OJpsLP3@fjwomlOuq5#>-V7nz zar7D5}_vKUjWsM|6b{ z#1Omv({Vo4kNez_4!JB?fE(rwug|r7kY6KQk>)5|)z{Im##QdZMcKA?xgy0HU;f9a zfSm2B{2z)#yb@}YQ4R?`rp1JiJ)`7T^{jHB=&Sk6SX%oNuS$`KF8!M#XPhI(YSDH_7a!D(|lbxzB?m3BB3|A zeoaa$LHQw+{Mwi_uE~{`wyu^GZbPj{Z2gnbWlgPpyEZGc)h7A=Y={1zx8{GtW6L#2 zg)I;oPl5hE|5a!3S4Y2pg2f{Bv)?YN@3v5@rdrZCROnW=m74t(LY1)}hi+k_56EIQ zuiJt$YcJ}KPl{{lbdbj5XzSo+Fbu>Dqm``Mji{wrgCHtAE2^CR!)qm7Q| zw^#!|@Yz^IoNG98w)^AOpvDL)Jf)3A#*HxG`9BA}+ZI*Xv)TBR$*2e|G-v8VS5}#C z%Lm!8pB$7; zRtEgI$8(;LT`g9Tr2AQYfEt3z8jXQB!+|GYy=E$O;bP`x=_KTzqK}!Kk)EZOZ{z9a z=kl8Jk&UOVHZ8rNM$##zI<=<}e=T5trS?GcS6D#1iH5q6OK0o!kEw+e60?a+>wZ1vWgDUe`a@YB>-LoW zivH3bfafItz1xDzlI;#PBXbPNh9l4#sBeTrK0!k}&2JU$uJ{bPWiL*|%+rg6P{Q|P zv-)Gv^4(Z(RpZ0t#bSYkNIgREYE!7>i_y9QxF1D}bN;@Ln3ntEy{{LSdlpK7brs4P z-HunI;#UIA1z8Sft{qRjx3@Q#*Zn>8m50yV7^`OIAwzg0+n>6JkQOi^O*ts$)n{u& zZmK0o;qJdK3leB*ynlwLyr?ey1aV7=xe_OjEWv$4$CC`N#A3LEAjDsd=%WhzzI%L; zAyM^NfWr8|M?Xfxe0U5^PhmYKRxXbLqxkTT_ScQLJT<8;mxm~ZR3U9GceMS zJD%5s9itZSd{OsI(fr}Wh}?;vP*Gng9x?w-2?}k#k1*@}10MDV(jWBggUbmKZoH8Q zpLCs&{MH=XLV6^-8$x;n`LzaG;;+hg*lsu3e4+&KUFKbrZWf*7;=SXY#D=e8Bpwx8 za44UgzqNtp&Rsk6DvU#YV-!TW#(PB8FNV;g)Z0I$ddc@Dm`mnce1|Hcz<O8eyiTUPZFUrziXp7{v2qLIO*CM3Nki^7xZH;0R%5Zt2vLpP^l|KbQ4zd^oe#djX&`wf~ z7EOvbYtvvk%5grL_IZB;s#qcLPiGy51o1UoQEN*9QWEF~AML&uhv;BaV_U(sm68lN zi3~6gY|z|PGbBUhI&D7$88No_8k81~3@8S{DVz&7(QWO?OK3X1_rmlyH~!>Hl^{-v zuibLzvzECo1uA2zh4aQo2$wPMvq1$;!z8&;-{S908>efv(sA3{C*o`&stL)O?}zUE zTF4fyw{AyS>>&}J+}aZAvbh`TJRlftWO2JYrPpLjNcd8Db7*uStb@uWy_Q0*MKkNa zx4a(+WPf0!jdhOeTY>&Lj-bO1#LkkZd@=%9n@9ym%@e6%q zGS1cr&7F0F%@OgbOqG0wLWJqi&U3?Fhe6xBKb(~pQ|xtcF)7oLn}cr-?HAHbFiKY} zh3O=tTKE-Xjj{lAEebd^mre+ho|^FnBb+u2XFY9*LP;a#(z$~R@u(hkwek>u&Pvm% zPRQCj1$yLt*Z#@Q@#4|mX}%|dL1n-75b^Zho9{DwID?syX8Iwo)PP-2?&P5|>g)B2 z1x$Wdb~v(V2MsQY4#%C8WB02IcZnVgm8=PdlIkDiE;YdR({FkAoIX8KS4NAL|^=6+<-8zYU$dUZ9!Q+dx>@MWB zPTcokjX_s-TO-u)@^F_6Yl2+o8sCeW9{$fDiUT4z;E-Ip4Gx<^FcVs|hC}`3fp95w zNq8%*7qj2-V9{W$;oLfIZe1HTj~P*Q?4R-7eev%%W7L_C?HTva0G}-JkLjO`g*?c% zhLpp@@*Kiqo9;JLqFD1-VoeAi$VJNQmrNy>MPip|n@tFFMh5iq^l$VGFw1I3-sm;v ze@Fyc^2LdEtne#)41>;KL=Y{*eat)Mk0mbX_y(i4eL%8>1Eq0!(E(UYwd1{QMUP+X z_Z7I`wC!`P9E7bV&KobGq*5+H87`-2HbtH$ICf1`M-WrRlBS^ISBkjGL#g_cv+I@Wv-Q&bI3lKDerM`{?;9h+jO6%&bf38Q7JuQqd}UL0zTQ3$I&9 zK_PM>XJw1)ch)#RW%Bu7)GIbsiW6|a*gFI^7XMX^_g5RZf3ESAXHD2RW#0G9i@Tb5uBX-cljX zLwM13ZA*d9F)*8y6kp6^!Ezwkx;6Y7WJcKy`!O#THI`UtXSqrd(U*VcE&lpo$Xp;Q zWIonbjx_qZ#P}c=%Fc*xx-}+ft4&-Idr9JPg^{!zBQwag!pbsnEllC9V%Gm#UvysK z?Y5HzT*Oll@n#*lj)nY-kr8S1c%MrD1>=&hBXQNEb*y*%WEunqilQjA8l<<_qN4kC z)Xw$$BJ*MjGG^JUao(UJ=FjDc{oDLrx4pe0gplad+_ShzGv{YnOx@iahOx`~HPiK` z_Zq9ZXxs~?IB{_L+pho=>G&E$QxJ-q-H+32S;*>R)pJuaksu|9bwK5Foz$5L?0%p4 zC{s92P-FwE#|mL?AGw{1xbPfBF45(>JP@;5bP<>% z!zea+02qBkKXW?$k?jWFag4DBk;lh7InIRtwK9r$Fb@>= zfV!9WCKu#32=-|AiD6l{sy-Wt>l~`(;e02TAJZ67vfkxh(!L=0$9&_ri0(T`L|*&< zr@;7|G+t%h3RUP6UsH?Y^4y?k!LUw#!Jyi?*gX|?@VBqErJv-k>)eaeE@pX9%)A1h zX@N4KzTf9;PRDlPgM%*e?Ag>xrcbJWJ-$t7eBj%#Du_8iz-~qT?(~HQq#8-v&Sbn4 z<2!fWU3D#kONu5v)XoI$UcSAnmXnkR?`Wjz2_IgpX8Idwa%!1UVwWfneYEidz~&pd zH3!v?XnJX&v!}&b(BqQOq4>EhEf+!hWGj6CLQ}e;y*7PG{Ym=b1el-!^ZiagY*fOb~hDVC1Bn0LxA`7SMxPnY-< ziguPXxu{I`8PW#?s8<)KzIge;@?oDi_Lt0%rP7|hjGxk~)r5B7c6>kr>>c|QbT9wd zxJ_euYG_7(2f#Zd*7AcI2>VVESU(+~Lv`(u4@Pw6hoCB|{0tDVN>}J_$+-ViV)9vA z9ns{9F8eZD;p?UOBELGnGjsEIYX`_XH84+xtUh8NK+aGbRsR4L`5WGkZWvweS1$Pb z3bL%!x)9jpcd?1k{G7IlXj;HEbYzhzc~P1=mrm2(V^ zqu(SqQMCCsZW9!|hM8V~RByZ=V@0yx(??P&IJ=9vA(RUBGecRgNK-t;3zu+aP1Bg* z1m!hIjdP%+ur;K~<;n}&eiz~ZZ{P9_p?YC6Ij>WQD^x(i|5O6?S?glq)5GiTzwCAw z?d?G81Ir)`=zsfi#XqqDe?*u1w#tSo>aWXsvWa#<@QTJ}?M5{}DXR+gP3cJ3(dIlw z%IwD*WcrR&XsJ%AG}G5WpKn;^4(CzbFA`jSWAy$-ysg&ww+A`iz_mucwkMfizm8%B zKsNf+u}n8wu3fRfHyHMCe5~`Vc7(73f7pc$gTo@y@z&Q;I(SM+*g2F=&XwQ0^O=HC zyKZX~AC6Hf#|K}5hqMgnVO7M024@I*u6sOtNPU;yj5RvRUb!tZ^`C3M@*1m-aN2{R zI)ell?rz+JzOjFc4QDrhRo610gNlu^V^z>Q`$!VwmQ0YXey?e0BPCWn2dD%UXb}Ju z!!uY~2pDXQMkF{IsoG)seD%d+fP#~i>-j{v6reX`g?mv^GS(NvJaZ5uF_DJSI`2&s zEkA;1%w%^e`Mnw?Erd?wggvGmu4n*nF4oyRo#*6)~OxG>bR%=CH+W0ww#WTk#19d1Hb#wObMCVHIp4Q z?`!TD9dDH(#M#HYE;dO+V!7;g3AlA_pLB(yB3spKxXg3!ng_?v=6Fwq+qKK?kI6U< zBYZWtQ!JgcEE3B|7^RQ$aj*fs(lc`y`X`>NXXbbA zk%fX)Ptgw{g^vp}&L4T>ZJ#xpb|2GuoX3Zq-?RjbyBz6_k*#O^+72tJ8DycK7?x(5 z=QQfNx=vKH8z5WL#l#;I))K?r=lAS#8~G)gSlQl9_}_SCT@p+s9#w@FsH|(cZ2Y}_ zB{|5M1{vJF&X?Ycb z3FL)=?Cx8m>f;&rrXw}%x}$y`zFxD2>(1Z_d00NTr+gERKo(~b&u~kyel`DaB14Kd zgllfbD8GC5gI2~Xad1zTeZ*0Fn)DEWBGWo<5I-~K&Vd8(fMyU^@r9uQ+$R{YixBA- zIfv#I^+_T;HQXL$By4ZcJxn9)3VEAE{!K&Fg5&}x9d(GHQX9=O+2iNJ(2*38y|dmwdp|R&=ZQkl zB>c1(?m5);Bk(W_ z^1z@1;1xY0FVVKh2XMNOrTie}c`#1hG96&nZ2>^j;*_J>w3>-T*K=#aX=^;C_T6rj z?fq(VVYB%jtJarW1I2|Ms}?&|2vU?T4~r!lx+0XIdzZfQ?W{@;G7ieJraSh7WnMVvz*>B%qQ+u($nC z^#HfRH1JiCsb3%Cv`5jReWCjK8qL&g=8h%*YQDZBJP_cUecgB~QPXjzIR6 zW@jTiBedY5_r1RYV*>S4rCJzDMZd+-1?fm#l(@nQGNj2PDJq7K0TRF@341 z?6-i%fEDS$je~RcOA&qwLaEsBusJ%Swr7gDyBS$biboeKLnqPtUI?hq+2 z{(~bdF4@9dH#FjJuVAZ6l$ay%?I%L~c1BV1Av&#i0J7H&Rl8HvG0uK4$EqL=ZQcwvRRqQzxqhcLv-+^ZhAi1dKy zY~g6*DdeRMG)-l{@Q2z4!A-|X@P6&ik2EMStaD0VFIxp=@W3+$3u-<1Nb^=Nz zpnbv?w2I!#XT>FAkB=EG!0UYxRPc@|9l5RXPIzM;o4y~ZoRg|++MLbg|GJ;-XPf%* zeE6r%?Kd+GV9?-_20jUH;FI__-HQM5Bt$LEO`To-u*Ui8#~+iVzqR*&J6{7K-O@o@ zgns2ARH?0P0$hP&`Z234hQn5N%fE@YPPG2pSbN_*T~*G9k^coK2x_6h2&@C1uSvZ# zop!Hg5%}!;g77s69u3CMQgWv`LTZvKO(R}Vet>U7<62NiU&x;btFb7ThRS1`I3ZWdPCtW2G+oDSm~} zQSdRvyZhRSB8>xUao8WFQH)T|X{XG^q;^PgCU&yFpB^X{(hdN$)8pN=FI&P~;n}YR znVeORUFcnoDaQ1Pra?h4c48-Ew3$Yza;(ocL)Fm%m@wbNnBtn1(3&ljTz1ZYJSzc$J7y&D-Fq*(_shR0ti`>LM?yVE~Mxg43e7E z`yeQkv9+0g`-Q2Gb2|5K$~CD2_yNOWlht97RuIc7wjChNg42z*R)Q46l!2ui=3p4S z|7i|pXvQ$O2J;1VGd+(@%KeM0ZlPN2G&cPXO#js(b@dP&gK>yW9^%r7#|h#i71Dc=b{K{jaePjgskS*P_x(E-saSrz6D-D zqFFANBOr2{i*c^Ff6k+gv11vm?-sH0ikL^Kv3}_g zw!PKUI3|2$c5i7*X#dQN3HxLsShsH?2DU?U$yH5wqTY8GG~Uh&1?EfNSiFbX+^0sU zdJ31GA882+(J?fOIhkOfVp>PubeVU!MSjn%1d(kq+5f=|%WS$14&soOcc{}J9CoI* zR7nQ?=d8V9I^aQIum&1`DTz~RK>aSSRNbMWl92E*U6l5K83LNnXP~GuriDKsz(1b zK^QaDU00_@>iE-RFoqrFJDx3Z`RV)|atD-N*tAnRE+54&F^|F{xu2E&kvA^QxCUwI;<_%~|wETMZX=x2 z#UBshkK<#-bhK3m#2Da63}}UPvqGOx0-2Zyh3mi634eE_{A~@mc|M(hz5Pb>H*-Lx zVHO=qL&oAk-<5Q(RG{f=78j5X0Ius5-;f5v;cH?}5&GA`;TvrTZwV6xx}h$RX4NuU z0wVI9mDEg2Q-eFsM!yhs?6xy&I*4M9$K}1HJ0<%~$4z3eV=2RKRht|)C(|tF2jXFM zqVXU|dD+$wXUQQ^I`bnHyT~C8cV2+2(fcTsNmV0kJ2F&K<3D!@PbgZBok1dOhsBz5 zvqN>E3sDAohOlp+V{RQ?_&QRy-u{RkvbN7v{y&gzpp&o&HCW92(N3_ zLwJfcJQQ6Toilt~A60cffq4_R8@I$HVIm(z53c4H3JxfT?T!-qTN;3}N!>j}XkZ{M zbYI=C?wcys_f=Ya7vGurw3YMlM)xfAQh&u>{S+*=dJT4+t z5+oYT-h?yG2W?4kMpL#Nqk#`ga?2kPTiyog_Ck^GmWl~qQe41qh|Ul85{B%OI_>k| z?!oV{uTnUK7UG$>Vmv{y32n&Ha~avy=V1id)a32`DHHr|A|Vyb>y?2aPYDcp=Kn3^ zT`X-FL``i>%}re_?acp|8l`yC4WLzs-lwiwu1+^$8o3M!58a2%1ZHFvc4ONvyXJpE zyPC~@4ZN;bXXSG}WdRg>vLp+_XUq=DO>;O;Pd^`SxP5*F_L72Vu@X!X_5SM+mzb^A zUw3=^vOp2Ml-Y6_qn2Wm?4apDLmZu1 zqdwx>-837HV(KwPr6pTuGorE=w4M+&iwNw5{wgQW5SNGyN~>=tOLR&G)zyF9%pA41YBFv5Eb+sc2X0BbQASI_ zMw+ad`ywRF;6|KMc1Kpu&4V`D&!$nf9nR2!BMJFN8>q^QGqnt(9iLGB5IHIm;xYub zvxord_|>!!8E2w!xj-H_%+>NTi(jPHgxQ5DT!vmZsw0gtj>Q4V6GJ7f$#G`L7pSlM z6kEzOAUYDqL$~8*tN@k)Fog>F+0DD6-ozQR%Qjx$7w8)@)}sv@SXEZj%})gu=>7|* z%!n6CR5($yNXv(1QFaQRqs=bgv(h@x0#?k`Q|oz~B^=pz9U*!JlX)}~V&T`v$wZE9 z{8^{Z7K<++(ZzeBGV!v2jQfd3Zy~Rgr38*`&^vT5NzX{W!mj*pfd^f36qdfS<2jRU%Qc} zo