UADVoi*{`C|9r zz4!qbI!)9H+N|maW9wuXQyh`(;BbzH? zD~(#syKh8Ir#mr}RZQf4xXW+0__BHqkaLO8mr|WJ1D&u5iWZ$yivkbUv8o9!J6DDg zJ}B@5u<>;o(~aiT(KRR@TZ(xzYR~`-SEzk?$p5RubXXJ|mj`FIdgnS01ByvrBF2A# z8jCCmWK2yfOwB~2l3iWnWipyyVd3f{Y_YcX|0p_@0mnf{6JxH>`sNsfn2CJA^+G3l z>|=MSpJ5*;-gkq(9v^vW|2D(5`Cb8R7}M0~_yfL z!Yv macluSjT7N3?Y+<;hxm`sgC>b{j0Ao`pd5;%U>LF-I#<7 zt|&Ft_okx|uo=$b2^CljbunCu0hb$RGQUya=m+Hve++VVHF|Z?6vJ1=uIfg*{;}qL z7}BXmFkOi?2+kg)sOMz2v3mbljxe(S TZPj6#T)?#J zEjX7B73yRmCeAfR)0>gy`^Blz >W+8jHwws $2u5_{brYbs66<$@r*vsTES zu=Of(CddZ7+NbeLES6T@yPkd!$#NWT3c$d5!9C7m6cZ=f=Hs;Lcqng8QZr4dZCOyx zb<~*_qk%4!q${0svLnscpvhe;x>N4vX?q#R3t1@RWsDI!)9T!P1On?lt#Pn4&w4r9 zGcM8GSV2p@EuI{*aDmB$Wr2T^0bdNSc!@AIZln^1fvE3h8;{E557n6%;x}7}#Ng{J zD&Q$swjZgdgi`^*KOKpsCsFI9>7~YGvy$rxXfVa9I$x?C+0tOPaAprW0Hf5 VL8Y>Y zWP5&}>coCablL0^mWkn_csSw&+fVEsjFPG8tNH?K&zRJHw2BO)b}ymJr{6m0Xna%u zi#nSiU{Mwm{{Q`Z+` -XHlmfk+#KR^~>te11%TroCKboVwvG-Q+-xl zA0Ax|eYIS0sXyeF H%a&S0{k^RQhdT)_T!z)c5{5Ae{{BMRrAaLEqZ_RB8 z+R;1Y@jh^ ?#as(In6v|W-D059}$qb&v=d(?`Js>&RY8Q zVYG9=kmY#Jv#YaA>6K>lkw5%rM2rh<>Ee)loU_+sm2E92)pZ!>x=$4QW9+H{p?+A% zEW%`XA->kh4e~~3laG^DLVulx=QMa(`Ws!ZkZN$(t3$k=FlZ&*E;BHGahikZFq7?> z4`M^tM9)NCmcy#U `aADgVf`oh)%Q%`dnP!7X$ zBTZ!~A_ IG~$QFh#Voh-iI&&XC0;z6nr;rTx%AFp>7uuq=>6WY?M65aNQW;b2~Ll(tTi z1O98L#bKUN9Qt>@Wfd!tUsx6(AQNe90>Y>+O}0M&lI24%YOn}+u=piXUYQi7EC4zP z^& YE&%9Gh0ZCpSt*1_UHM0Gvk92ZV7 zE-B~2iz i9aEg$pcX!$Dk>ULDfhLgZZiZ$ma?rXf`f`-_dqa#1m*E zsD40Iq7WZ4bQnffigLJatN?^1CuIl1g>Yz4sI|Z^H`vFdQ~hj<`9NJ1$06}h98>bA zkIlR%SXVm{v-EaHTVuLG)77FwoG)A&F*RTg^9P#7!y9PJ@sGMSSMI(m;B5+6c=nN< z)cO6X=GXgiUU!2areK;G7(Z%<+Qk)&+^3QzT`ktH7;ad?(OXoJf}N>txyh1cxOsQT zqX_5VBDyPEl10^73|Z8Eo^V4~KUN%Su3DOSy$Iu5qi-^H`$tofN^tzIWc)E>K_guS zR)P677EUWB_3O-582|B63>oe+A#VZC{i$y?vSEH> &F)QJ|14{oQb-!Bg_w{#IR!SuKcMQUx0!sMd@ zn~yqP>UbeS$7tnPsM*++-5oWSZG)Oyh1tr+EkI%oRExQFX!+7??a)9M6V-4lG!oM( z(2oj9olsh*hAV!i1@kfmMgDXEU?EN8!6z1D+B3~boDLnXxPnB2$Xc-@SE)};SFuv8 zd|8r!7J+PNmkbiFqr_8pR^Y#66OwiNOsYP(-b9E3Qa1#V>c HW#3{+k)0 z?6MT?E|gEG_$69S$gS1ZiXjf;k_bSb+884SMAoC(m`=wtihi&^hoFrhLDX3|IIK`u z16PX5Qaju3#z}M4%Pvx=QE9NrE>yIlh08<06mSY*oj@N@ke7uWVO4cV&PhtmS5tab z_pGl=LlM-i;dCO^7-Iu+?Bh=u1jKp{#ZqyEMY_foSq1=<&wsuBK%_SYBRl9uGiS;C z4H_LvT<(VPOy@yE0m(&>xxS`kV4_SNj4BT-g4>HED9&XmCK^QTn#!D+uVZ>MTYNC^ z;s`D~pNofERFYC_v(9@oG9ByLTNTbHirSvZWP}%|IgWuT q};caMSWX1vbV2y@}5?FwNmfm_c zNT!THmKX2AvGE%K@q7ONPyDAzP85gja#Vr!%%GISeUDAF0dG*Y9bw5rWDm#jT3xig zaGvc?-8lP^9o@Ms@CxSPxcui}bN-U5mULY+T6`oL)XBWe6F&n0mbXDvRVmyNVu}#@ zz^{|ri$dNNSoXuKeLlzkA-LpMHB-L#(?LJB^)hFCxEAG!!2G0a=1$?4;QR&ZkU(5J z(fg9=h-WTttH3;wiIO=+B?d;6sAj#eGDTmB zaZ}nFR8pXL+bGp3y%@pS#E~LF&=*nn}PB|u5m*x4DGr%q2QNGh^+81gz z84OD=B{u-_qK@^b_tW7M8-4EjM~^@73C7`MYdCcDjS5>nj|7i0rz92R0cCyH1%sqr zy$sIRm2q{gH9*C#EXJ?`lb5KmY}`CnAcdUkJx0@cqrjm+Qzg$9%;ON1RyBL_d7~jB ziCko}7anR|Iugs)4HQa{%rWcMstXcb7Eu<9!Ve*dRF*p_sngMxmXTk|fDM!i0}`!w z0E`n|#()6WG-hi6;!CQiPf{ICu9COtd{E#~t2BEHBZ;Q6sGeunmX` Bu8iwE zgQ|o^Yqk$C={x7ff^rs@BRMV$!spdRH<4&IO<80+?c*7&c3$`9IO>pUZ}nlijSFNc z|Gia!(jGswUL=MpmO=27=1oYsqZ7%FX0r1SAtxBo2*Xp87&d+*OI@lo54~ygt )g$KW;pNoYM%Zn&KZ lTIly3SZ9=er4fUTCl5hL=&_
I73PJ0n5Fa2DXi#WR6MNe4II9VC@BN-~FUS$A@%=T1Kaw{|~x2dwcw zC+{1lr&;C%62UcH4-%Q7o &A^n2^}eN&p^VlCXne2GtZEN^XiV)RV7q=3W+vqSs1SdF6|O8J!d{R z(igH>;6DvlaS(pT2iNNinoO*Wy}}G2pDd9jj1i2J+w-%ihKoer93QpEEO4Yh_@utm z(j4dy4Wb`xpfMKV0+mHIy7>s=G5Of=MeM4^>@Wk{AK1szj8;s2ATeH!>W%YI@iSQ0 zC!kdhc7IoHG|LL5AEUWTsD2(ENseJ3F({%YY>aZfA;()R1FGRW $%g z?Aao*1Ly{~8zM}`;?re9+W|U(0+D6O4tf=4EJkAm0j$cr3WzK(ql`lZl34-7Fktac zPtmrfu!;ip6rkAVk;u;rBs1M)+y7%9r_`%)s7|N=W^_*(9j?6v*A0y1fmpg0m=TQx z7lSz&JdP6>l9s#iYbpdpkj-w(O!E60YJm6oh?OIP!% <*1R+%w1uMK#GxX-et^M6w5aU2K#aPqJfV-$pwDs9Q~tBq>5GJbM8Wljo~BX}%W#KNWt3)5osAd+$V3o _|r&RsZxq4mEyaDC-XthBBFGO)Y%#eW~S{0$fJ02gV7E91~|eGy(=qviTi z393c|veUpI8CbZ^Wx#NHi44t$4RvU;#4BNi8D5$HD#!j5nmXl{!l~sswZQOc@LD6> zWd|z$(}>B_jc@>Io8_ IH^p}a=nZ*D6aoB>VvQ}u1Um^ z2MD-x4_!0t3tV+st>A{&hTu(k0lg0zzQ;e6W;Yy(bX1+(4Q5kM6x&z((r*{#rry4$ zUH|R?G~j_ZCg$0=YFEk9I+-+KAIEwbEK)W9NFmzveqyY~Qe=Ig&w`~SI+f}E1pdwm zw~%t-f&SLbIOVvw#(-R aq&qt(GwwE(0f=oobx4 zpJ90@0uXg5h3R2qj=B|r`;a7QTY3RsIwp+$fo^?B=61~S5CnCRQDXXpoNzFcdA;Ad zj7lX7-AnnSc6%M$BeMll6iDsfzbaN=lIf_qe4ED~8m$=g4AVZDQ28&TE>Pdn;jSzF zS=R&E@J;k@kQ|0sjCn-tEAzND-`7L+`f?DCZF{*zP63=jEu%r %z z^iw+&L2bR!uWNWIAxzTuRUx!Se+;vXM=TO(Cj-$v%S^=$rf%C+baXatEiW`0wl>j? z1T_8hsw%jwIVTe>YLl6o)XWRrLF%))YFgh79)u{n!4~!82SjytZHWYJvOMoQm01C? zx7J~zBl)^Kyu+IXj~6X9<;!GpilqilB=>y_43cD@jarBEGuTquGKhdy1dB>DC 4DWV1b zV#kv$7=pfd3yf76oK#g*npOdi*WajpAAkT(=B5j4Do8S<+KPlwUoic(!8{({q9;=I z<|k*O!^FULW{D9+Iq;er$Jn)RNYR26)WVT>KX_D zxTt^)wJugS=jyDH;5c}6AQB^6%fYWt9AkPXvTbM51lob9G!g{QP$owJXh7 z;Y#gme-An_$yA&vGG!)P?*-yI7||HAVbEY57&$YCUjvIwtI(AKX;(M~KQw8*Z%+0U zrQ7a=(hYSHwwwlSVFm|Z*Sd3z6e;AhQiue-7Rc|O1N~lxzsyt_-ASoAks&BX!_|j- z *~mh;>=z9=^aV_PD3ASRDPY${PS4Erd8) zJ+LEjUWGgeO|;k_$=4-0%qQi8(#Aq;-N-k%;sA_1Ql=(F7{;3dtyR$$W>ykey)4Pl z1BM#+_>4h1B-z!AxXlpqSzYZa5Cr;q0Xj`sIoX_Em_ki1rr(sLwG#6LM(fL5Fh}Nt z14j-Gj`TsEMsa}dOsO?zOM@&ENXU;z_n-;ZTma}MgN9=WcIMi|43ezhIx o1)u3yTUPzJ#~UzQdEPfmU1 zT|AGDA7^-=$E-t BEPB`N(NEctBV6XjR;sry>r6Xp?=7f-&k?ZV_1XqL$efDLYfG zb5|VGQhy#19vVCge(|Hhw@K}BWT*zS83@c67*!>aWwu(4VGTe(j07ZZY){SBB!cbO z<8Ik!@BGBpj_I s+f9D1Pp^i=FbbxykZB z4D~F3>!jZGJlO_hPJ#(X*iZr8#m%C=G6$_9D?2S?_0^-J)#@wViJTF$$B7Iex!S3I za^KP%paz^ao2a!|f;V9m6a888+@DqC{!3Rmxj6o4IiF$A4x+{X0CV(;QD$ksUq%*J z xA$e)3eZ^JwKzCN4p$~yV|pl^Yyj(q zH{xNc_R``oeg(XUB;b!+P9hSDoJFu+40XtKqrXsH*o@D$3>S(B&$+EN7HtF}RiA|) zeGK$NFX(*O0tmGo;#TR#vJRXDU~81fa+=b-s9XrFp=t{RQGn5~DqT`N+M+vzf>2H% zOxl*1!B%y1H QO=jI(T bo`xFbMzbo5YAit9KP%BN0O$s}1Q?;UiA~po#Z{puz&C0w z=7-4oLFs*KsX3W$x*-D$i_P;DC#Xt!5ZO2XJdVCbl&Eqh2ITN7=A>G+#_c-j06bZn zdBBuC^FQxODe zX$+irrOTt&o7_ 1}=dR(B?RfzzW3riB*FezuB%+dR zI`2@d7t8RN!A0W)0eqdP25!Dt>oXC?6Gev0DS{dRF=T88@Ix>Fj;9(@lYq%a6c;E& z_5#iMZts4*cCRCXTqU$V2T(z1F`A*?WavV(bbp|7i3R|8`Fg-d-E*3k>0Ba1L8%1m zO@h}65X98DfNps(S&`^?I )LOLqo+EJE9lWP8 z)(;0fd*I2o4=~BEfvHA602t+kavq3IQ$@^d*R8Bv9NR@TU=g;if_$(NsEY0WWs|!) z0O%Ta;Baeg0|AKMz)A5Z!^2#+y2;a3mR~M_ds69}*;moLjKwGbFlD_AwC?w7eK@4? z%dM5(y}KwptNnT4Y)jhtPuIQkvq=m0W 9JtcYF9;>p*ek+{M zV3g2+m`JkjjEsim0uKb33?KGBBe{!@n~OQt0!=xFuFcJ&PWBW6GrmlDU{_dq&!(<^ ze-VZhSmHRt^na)b3reBU9*_2M**VE-`FI8}m-nHcD3L#U!0?}E2tf$^7idNWE)a^! zrVN~GgzKfa5VMackxo<%SQ-RlE;Y$1nhuu88lfUql+Xk3*TsNVTwgY-B=Y>uRP5 z{1=%FTYu8ZO=e5*X7PVv@7<%?s?+^{?bxx}Gu9h2wzQ}n#TF%_l!kCgIy$wZwNOQx zwh*FJ8(S!mrXhsf+T%E#f|P1S HHZ#-`Hv*J!2>#91HTJsZ6CHoOJzd2NE{er0nu3A wrFm%Y;H zElZkfrereVPJ`=fAp;!cx>A>0C(k^ch0|SVF$qWnK4vm7lQ0{&+6hFn3G}HmVdZ^J z->GJklq0MHYXh7k_v4zpsiwaQGR7ez=Qp1nxegyn W3#yEIdikWD0z1ZAtQDmZ=^e=il1UmaeJ>%Wk)p cqF?A%UcFG6$?=EApj<9 zGvvC_Og6i|$U}pMvOzK${*IsToj*sMRH1mq=F&$N4xj8l3a=LNB{NV)>fz!a_TtT? zqE#Qk`h}+0|1Z3LC_H>BC+8B_KlAy4)1ire|E_rd$itqAPKGN$PVua|qlh2)_&>lV zZ10Jt57o $yma@KdMP6bwHo&~ETSvWctEcZPd{5Z+#?!CK+*dX2$^@;U=?8474 zx=Xh5OuR1B(ldUpLOVMR4Zh@jG~PQm^QQ!!WNs7Kd%hAVP^W#zo#i+Ges@@0>-y?* zw0GWc1OCeRiWKasXC`FxngTjSCTDbN8W*G;=Qyjqzk$TT8`6aEvow9?4tqZfYJ_7; z<&N4-E%SnYbBfWKjm_|)C#br&dmgx TBB%pfI>=b`ZVDfj}-+v{}))uVJGPE^a1m$^MW8-{J z`E2^}>!MYBFCo?a&2^&(>}q8|T$p#f6YQut>+$;&;`uN1gXB0sw`Ydmc9Nxg3_8~H zI-c*ZuuX6u4(u>W6dK}O^d6??NJ^dBl1S!xRf)uc3GC!_ vA)Y8d| z!#gv;;t|-#iLE*ea7p(Ea*5fNs8V U^&_O}cj7OA{-G=lK>s(6NDYRJ6G*9fxfrff2==lTw6+qnvm=oWAc4o9JKs?#^n zNWvz8(|Z2Dwvg}J+!Ei&_^xWG-pXzO8(u;+@w2P5%1xL0AKC=H+@wqcHTc=X{=Ts) zzGPxBE)C1YGGQ)
`_Gw2H}i7)D+LRQ5;)z(4+}acnNxHX z)bDlXr)EzUYaPjI8kURK76gVd&_7!aKW3NYCuCyXV4+2sIfup *uik*Kuy+N_pRh-#mm#w@5`+FxpVU) zRVe;?&v(XrI(3p+0na?CZr# |y9uTK00xIZR)WepG(>-AVN5B) z8jz-^f%8Ne%bdbN>Q&P&l$<#>@gj#Zr8xpmD?95l7Rr)jkcItl5UnkhNaw-cQh7$K z>Ue4+HE ACL(aK^XNB;Ct3H9hmrJ(OiZWi38I)q++RINQ>; z<@aDL1o98ZivBMRn$8D@y=o5o1*)kUowZ(F#W4muasJMnRbc<4mi6T>SpHo)(HS3} z?+<(3J^sdh)+$sRO850-Tlv^)Sktt%vq$v+c4Z=P;^}0tN&?QnyVHcmqiuB=Wp7M; z`QN?y0Q~;ud*%lQPF(46ywpQmf#++rj~a*7b)U?GJy6U~!P14AbHw5a&!S5|#kO1D zzy+tMoViV$Iq8FmR^?0DaI>+o+;9f&Yeqi?ZY0UWPK@wdc@5nKz+?L;l3@-i6=f zOgoxkwi@S(Js$pMh}baGZD+AgvoTatU~y9?nQnhr;+o}uHsf8Lkl=R?qK;>2*{P%N zf6H@sh~`H-;n)&Gs?+j@v#Z72BlphW6T;qDo}nZ~agH`PT5lXTJP%7DRlV^@Gfb7w zUETarcG;O4@5OW7cK0W`1iM0F6)D&sPkxT8dWhv#h5~Jn>5?vcV%4O1Xb>DmncIP@ zBymH{zM13sr?WWubC9)v!1`jstYk__;{K|F1&0K6koAJDpT7be*97a)tc#BKvKA^H za# 0l#QG`B6`Nw%q?`aIA z$pXdoPkCKnX=SoJHM~%xA{KDv2YjC$Pjj5{ox@UY%w57vrUD%=;GV-+W~vjpzAISs zl~aRqr|)_Yue%k%+uGVFkDDjbT6ily
>qH9=ST^}T+XTR5z&ZpeaA7>@8#)D>aW@k>VxMSj2JirFDTptH zbYNKd>gr#Z!b~#LFTf|198F`GUTI;Usi7aRoCf{*K`H+Xo0;YJ&8r?VcIR#aJFoud z<7%Jra&CNa_^D6OMkf3=cLkGm59H_vkxwzVS+Q;hakx}5aW`~O6rU) t)iV5cPw6R8x)I6KI1iXVh%NXG zkhFUM9g^LX7PBw-LVruP5laH8*X!~bQ+V`5jWwM%JMlM$qc=982$z<>UzI45J^z7I zqN#7;TRY;}@|oru>s5YNJkGP9Gczr>kWlMk%XBBMz =tev*U zO|PD<7#?g96>z=6A?l?es~u}asVuAcx{sJQF7Fr^k|t5XewmfN(f9eT)KszXupy3$ zNq|m>3MS;{&l*|Yxz)yyyHgyp*uGfC?HL{vz;PhCJxNK*NT6r>u2_qB{udL}S1(DE z^0LKa~muXz#W?liuvx8H*E#50T zdi_O`>UExhda6?-vwo*u6=>`Kdp9+6&U|tZT*1w9O}bP1CuRo0VFI_9-{ZoQm$7cl zoG2&&`(M4A|Gc^&^&La^X5j(4@y6+_u#7V~+gafOe`dMtnMk`EoEQLGafvVP{-(TR zw#b)SX{svXhjlAQFHK%BWBRr{FguspS&z@=2jT7;YCzvlYj3SQ)eqv-O-t1;hv;UE zE5l5Ipq1Q=Ms*8RhvkzgA&z_YsZFA(KVAO)o4@@Id!}yvx~up8$KMM+>06(%FMIKl z<>z$YKl|?AKHB{t^U`F|kvms$MU}aKZ@oVB{!x|U+sjbXi-y@1K1phS9;epm3D0qM zTQQJ^0&>X0aNL!0br+ V$Jq766IP~+zJ%Oo3_c;Er;}saaMy7+urEE9NaB+ zxo8IW9%H?@3>J-X6)<(yDV9?{X`yoku4=IgEZ;-nZ2O<>Mq`+7cs~?3t*$mK<$(Qo zMZ$a^gB0o><4a++&8(ybF-`s!(#>gw#jf^han&JH7=FQ~6$^uYhLnOf1e~6xK|H4; zqgu^4V0Z5+@K02u6^ye&czr?0Nj*A7Vci$ZoQS?{#&9SUp3Ayy4=>})Ux4r@IHGi; z$uJn|fr%k!of_u&$BpcxL59^Z=*6;mbAy~BS($xLu%|^4ctOPpJ`aW2M}p2*JBSsh zSTQ2A#)yK>$U~!Yi=t7N+lU^Y;woYIkn92`^36>0Rj1m-8;%J3UW-u<@=X_dmAb z;2n1^`nUh{yYEE8VRm(S9lV$6CU%K@>5PppDH(g3=zC)!wo7c(qfG0 !nRjMW}Tk->E>sXF{~dA)^D_W+UOX(P g=cyla4<+RYXvCGQCv0FFm`1 zZp-7)SMY5I&^R& ghnj5NB|;QO{e`{#f7;C1UudQrZ0eX9Oi=KMHr{4lrj9qx z mNi`eC{Mjw$Ajn8UE5a~!$V=o zC#0lagH&FXze24DF^gg$+1S)R0`x9nANXgEQ>Y*_jFe~G`TL6sf|y(5>m;)~nAJ31 zx6t7{o6R|@B^Jx<9ZZ(mHXi89)0Km3OhPK+GueLEDmM?He71K5irC@pN+;U1UVr%I zr#wuj)vKB9zCKFX7mU <61B zH7aqLy;%|Fzs(G1 =s)phRBS^)MauVM8Ig#kq zb@I>^b(Ev(GO02&maOtpn2)R^R2#twF?v@OK3J_zg*;Vh%0^SC!prA84%Ki1rf}e{ z*G>>>8#+%59c$rl1d2-8ST+6#UhZqe%g3s9M&DR2TUQcD;&}G*F$!ifC)h4JP2+Xm zd(o^Dei^hhP3>VriP_c$Jjb^7rAA$Ohksqc#{E`lHY_DU@5)>-mYc2ya>Jh510E2X z9l|P$WEmi8Xp_o9T8+^=kSFzaRoQfO37$TflWsTHwNSa@U>csjT%-W;B)j%Bi&ib> z%(}$k88Tlr6as^9!|A9;%_&$lkppZ+>hR?erG8C`3_dGoDy;=BwO85bwUSx(7yava z_F}c?&DlJjmL_)|P?$ADsr>}KI#!x($_#61Kn~TaE9F**l}7XIEeP81Ja;_|u*Ehc z>l+;Mrju=j;99C6S0w9dBuYov+!jWyIHL >zmTtk_pxo>RhL ~+!j zAgG$ArUP7YSqCf@hE#aNm{LS2R;Y%02J(1gbhIL)-72%`x(9~JgY9G)iy4-K=>8|; zX8X(bO&y*NhrHh)GT6 hJGMf3`K>a(dgItN6W1ugVmrmyX0ab zeT<|MDg0-$;pM1o$S&)u;wq>vU`5&zwyn@l<;~_AoWm-qcWMs-+NV(E^7??ynQSJ% zC&;PT dt?-CEoenLrN7utwT3KX;^NhL)1l>J+b4meEWuzCy zrgN+oJ9DaC9~kR(TQl?m+0-d64IUhlsK(h`LB@hh_Kibb@-PuxajRgB3W(o!`xiH| zM^6wx+rzeD3c|Uv2Ap3sMhm`nmIITD4Kt$5{-W4;E-gh7itTN|{f2mE_=$hdAphW$ zuQn*YdET#RVb#J{LKsn5N2ex96{@UWuBcQNv24JfA8n)o1R7mu2#kg&9A-}FgQoC2 zF6_Wz37-#KTszl#P4I#}OmyNhpB23>y7wD1{*n&0dtJea>urxcL-vb_-YO6wx5cf; z`hh8{fP3UJ49zZ=Zg!&AS7jTLD-%@|EvSwY4XP^v6+s%@9Rk|KD>U_*0sp~q-Yz1v zhFtrlOYQ0!GzJWZwJvNe5GYp<5%VcvQ^Tx=4ITpm4=Ybc9~ciQi^9Gtz#}1*K8zZ0 zui?PyBonup@u|o$rf(T3r%P$jY*RAXTD2f;*8FP7kU1`fyMRwBwj25=)3R!H2#6HC zPC?P|JnyoCfKxg`h5j>SxDsvxF4ZlUahttdX_;RcaG^yRy?s?mYg`wEaTY05IR+jj zNMYFkA$h)__GC|SAs`U|wCqf-n9)T9kMXV`8?{uP6HMQjB2;LaYFAMFKwF+m2p6hJ zSas71JAK#~aLxr9jQ*`sC
)<%1!H6jmgAx2F$u1h^u&Oyn-&yPxHlY~vEpS~t1C zuLGe^=AxAt754B@`W1$jF~XSe4>5)qK)ZYDdJf;#OCN7c1b-s-$U@!nGH;`iHX@OW zohr&%x&0)g?%z*|?Uv^xRH!SKF=`l`3UUP*IJ4)p=j)KU7EDeDo!jir*ksHB&gXRV zbU2+Zi39uZ%hP$b8R#mlXC>9{q{&s|J!2x)m^e@^CR@|8>EjAIV9gGPQ)}#I-O{f= z+IQIBvX|Pk?OW{oY-Ue^dzIEGb3VKRwO&LS=0P_Ydl%-)0Q(@{*c6# (~AklJUWEQGt!28057JIJ$n@(&vK#-@^&z1`@-ff z4gjpdJPzc(C1DTska`aH^!MO;&^_X=Mk8aCvHhoW-E2PvRFKY4Tlv-^0Bo$o?N&yj zJ%eQRAC=I&=|sp@VAEl3d7-{>F_qgQvl(S>5ukLs)jlz93@d_l9KW5Y`VMvdGV$Y6 zgqhe<-^R~;Rd^FV*e)GF_d~KJB6Er&73h&;viTOlT&C%a^PPnoSE_fu{d{!%Vtiy? zZJZ4q>&bqy9)+v0R=v|2+}ZKONvFQcZe|sP?P0$$-41Qv_*TsOok7iY;_}=FwZz45 zTCJ#Tn{+!*8 Zns|$_#yZ_$PM-lhre*Y(NxJN1=Cb9eLY!Em2+=oI(+8 zg+O!o)<$9oMAB_*cJkJ4EUF{*xd*!jzEkPhT~+OgM0hVv2=db|2*@t00dH_>cqUh@ zJ#IjU*?&?o(mjyA%PRH6p|VZAT58Q$J0IRHrT03AOTdY5r4%SfxX`*>F$Ngf+$GHD zRgITh&2T-vfykjRMAhn8Na9pNM2@!-fHV`}5B`~OK5*%Uz-2#?L9?^y<0w4fe%vcl zuU}3PKMGOmL71k4o-$sSx+sQXv}ikT%mzq=PV3095sL{XydNY5GA(cu`U)}u Jh_V6_Bpq6nw%f7`X9bt@0z<}}XjNrm7I-C!u zlTGb#5Er~V;Cvc eXr-Mr2_f^s0 z AyT ITUT!AAbx#HU+vpiZ~2eqWOlHo&uLKdVKZhqKZv)PW5>gL zLvf0o`0%nLnIFcV?%opdu?rH^^wiDOoX1-#Pt-NY-9Bdw)NMhn$BxHfG@MunfR ?ZwTto5I^Z|FiIY6#Bp}C$S7?8Wye^xSXgGN>5K0P zU7@fk1t*Ph!!JjC?yW(D?_ys^U7z5dd8I{4r!a+#J^m6x@2g72x`KA81w}R`ug9)D z6S2cTjHByL_}6gVesh5Rky)s4JUT84+S!;EFU44Qc90gEPV-MFi7S_psX2`gL^K~@ zvZ=Xmnqv32{;8tqLbsaWpUr4Tt>>I2h2uo5n8eBk5D@Ti+To~15YjH4Tl$>lp)+hZ zy5QB5Wx(`gAppP}n_xs@Hg<`eOmcVvT=c-Au$Fz__ <-GHKsOuT_KN@k; zSH2RwT5asr8bP*8v(EOBK6=AzRa8#JM10htn#A8*7n!&CKBzB*i}0ka#Vp&SBCV3% z$?7VZ#V@3)Q$5SchQpPapDd%kd-%!71-<(pyIHUpdlhy4jR$I{igm;$Q>R`AYJ(bf zN!$E%yH>BikQy;i-V80CwcOi^`%LjPJVB+wQ2BnBj=k=zkfL^9PVOf$R2;l*)m3TQ zCl?|)+O2oZpIl^jfC+uKV)%@=w|n+V$gJEh_Z6vAL9PJO+`^NiB?irWlToHU5>c_v z_s5*P@ADDVKz>))J=Kagal+3R@GSRLzN{<*z(V3l9cH4kF$lt`kJJP;m~em7UzmTq zar~30)Md{i+$3n~tCCJx15FdY%2X3{A>7(+f7FD!?6Yq*MSMtkc#-DL%aVia>90bM zN=IinXINtPQ80XEM>lc2U&-)Rp)U{5JWv1=pLE|(e6s#`5xczbPIlR$c*jx L>ZTVWC+^l#R7~dCD9^;#fCE%(JeU?p t1)=rr$;Meys3(+ubL#uGxvgb-+sv z0T8 XfKjP#e}>1OF-gGBy$;2sSy zfwr(EcHeSx=)>w*5^oeYo@^|}(L(v*r@*IL{yU8V@^+TDG3IrepP&>d%0ZQGvI*@k z!l6~Nv513wzW<@}lAaB)bh=m_5;!(N`gT6ujGA1>J}|cwvk6yFw>sk7FS&o@k@7)s zx!Rd0EbX&_8zE()feV2WW3q~gH+6 B}9h3XpKY z=0Ln_X&TqF#SOkCmbv?*h)TEsYl%x_Q>g2*ZyfShUVG;%o~wR0Ln5aqtJ=-wHb_;Z zCp=@<$oisEu6)hnxy?zSFStXaM386&lh+r>R*(%Jwp&+G0>WUA)$UYS&VeDw&AJqg zgaJvd0pm+kx4v>xO0QM`+m`f^ijAPtnf)XwJ$Ze0RL0$Q_h+_}ZD9~?i)GuxA1>6s zGkr_Z?F@kzZnC$6uZ9>jruTjuQJoLoai}Kg=0^Y?Uuo4<{2HayNhUS)<@{0=Sr!_@ zchDo-_IpRq=W;g$^#{(9I3^Gbi)E?(_OW)xTx{uCSa0*Rnm{2h7xQE^_B21bc>O|K zPCg6U^&(d?wj$ImbmtSplwI_l_`K+b=2s_!6RC@ZS~VSS6Sz>pjZIF1%`+CXd9K1( zYX)e|j{K({ibf~rb&DDm$C9&OpSm)`v6cBBR-nPE7Z@a8A$_+L)CTcQrl?#E&_g-x zeNbR@lms>9)+#)_%7)5zv~y1FF5;67;KO6g;~Ntq$_VhtLv{BAz6JI+dPKp=joF$k zUk6{NXyk)NiCF`1DJ!ZWYNjqyTEFTfgg*qiJVoDZ6UfNHs?-`D`5hkd+Z}J6y(fyM zoL4__Gdc8vO4HfX`kka9JP{HETy>y^%8tTKk8PkX?iGYU;m~i`E`OBMO8ln#1>hL? z=Y0_ocA;&u4c9V*FJ#5!pw9ITe5^v7iuM&4>O~>J$&-64_e7dp0Kr>V-m+TwFJN8D z&}?%m=WqCIbS_K?ypX-Dbj9D<5fyYni;h0LkQXK&667}o0rXDBaja#2>~f v+kN1}^ zK2&paDF$xH&4_{Ki*adWA;WH)&1KplDmG#tt`&Tqc5pISS(DPt& kLG{Gh_Gl(f6}$BqC6rwDVl<7| zc;{kF)yUZ=qQIe4B4~qGJ@T7qH0%-3xn~N;E2HS!HRhcMA7`xo$6Wx6F%WJSI LDd;fo^$A|?Z7K~W%Pe$Me?n035M|1|r zhDZb=5kGMdB*-BWaa(eVNW_n23MA3^u^5d=1R@cLMBFw4h(z38%S9vtk%-$I1fd8- zA`pqVeFPARKqTU}5kMs3b_YQy0+EQ@90Z{VL?RH0xP1f=i9jUcwh=%i;&ul?C<2j) z+Z+U;2t* s7yI6~)8w|tqdB4S+WE(!zdjqy0gKO3*NzPtw?}mzr1{{Bst58Oj-mk@i02<~ zQFQzz8hhCU>}B=Yr+>0v?5Dl{>DiM*@`EpCadt&@#^fllmrcd5MbiMpU=f2w4E8QW zVG)Hz6m|)M1PBr!40}I<1PBr!NPr|=cl@tHg1Zm@>eYYT1rRA^MtBzC+5c6>ix_OA z8V_Qyh`}NW*ajp4LlQ6~0Xv8!U`PUnBw+u$5-@~e5r+MxYo3v1+S^vekwpZAVG)K! z7#3mJMF_(p42v-AT}W9ADQh8nW0xREfFJ>a1juG?@QDLtGdEHtK&k{tl>k8k1PKr% zK#%}I0 a1PBr!NPr*#*lmI!0fGbw5+F!`AOV5|2ofMjfFQxb zHf-eDqMzJRuuFGz&mDKX`P;uZNQ6f)YgeB%_dNd7J;}H2&i!!%^A`snOSrf`nya^N zq8|I!8}3*d&Bx7OxbqKLf87_&)mzty8;-%@U9r*Jl=kOE|Jii^cr;gUomU)u3<~!r zMRQZylErsn9zVM#(w25GkcT*T{y`P4Aw+Xi+Wq$~+5bXuPBd3 +3b zb64Da?ETjR;gJub87;(Me`>J7$#a|jaTmb9cXh;gmmtQAsO=&|Z4tFa@Zc^44-lS3 zkN`n~4G0n-NN_)b1PBr!Nbnef1PBr!NPr;0od^;jNN^BA0t5*VBtTZZ?n00NK>`E` zmLN!gAi*L82@oVekN`n~#}FhykN`n~4G0n-NN_)b1PBr!NPr*#IFNvBFGThdAPWab zl>k8k1PKr%K#%}I0&u7cK>`E`5F|j506_u-2@oVekN`n~$B=~sa9IIz2=V{siGxGB z_jdgJE&$|w7gCc&5-?<$7ExPdnHIUi2;5tQ+ye8z3<=(xnaDo+tn{Oiw^D`=eqZ17 z5@Xq-Gk3mR^mWg#|FGh8|F8e!SHD>nxI0+vId0J%{Ia)>p2eMPFJ#dk?0xgtt86+c z;n=^uH>wHs`QuQ4HuIN%`&&O=hqhwzy6eRk%c8nt%)4m$eif&`B%15MzJ6`Pi>jB3 zH$`*D7SiA!Zx=g{jPQ?ldLbr(n8d<$mp_p(#3T@tKuqGtu>BLiSojGNIKUv>k_$v7 z5S2hw0#S*dlEcqO15pV?B@mVPxnCeG@l)MER02^6L?sZF_^BrRd^8Z1KvV)ziJ$ug z!V*8#4MZgnl|WPiQHh^w!p}zoQ3*sP5S943Umz^;Q{6yR0#OM>B@mVPsV4k ^UM_UgavO#8(_h=20tO2x6{^wXh|L+RG#sDUtsC7$KS z&cFYQzkb^zZ@z!mtQ+$N+GOdlYumM)X&HF&v<~_{iiY2XZ9I<;yr7!-d?)Msr>qu{ zr8T^^gAt<`pfIw2s*1lf<{RF8c5D2GQi3;yG;0t@ChH{a;LWFWQ*TA}X6bo6nCh7W z65my2Te#T%Im93biapMZ+j{p)pEN#iU2GU9e&^HSMvKa1ex@ddNb%imn_P;CzpE%O zVza>+82g%=^@?LTn}(W+7rR?IuEtr6y$_EwhUu;kW;Xqc`~SS}f!`mhvHa@XxNfVy z Zz*vo-9=!? zPK_((%RUWpN>D^7tqtqQv3@bxVU+c9T#rDKzM&Q-)NUS(C9%9xhwV9z##^0dJa=vY zjf(Jf`ty%25}-tv1L2jreW5G!L*rNq!5`Zwk~2HJeVwx$1s66NCvmdgu=f!GO2yh8 ziZ^PN5 O1-&EhK!iP&xTTXrCPPu-7~NtV{458RNrXeW>xP~(fAa&XXl+m z@~h6l-1y`?($!6z>Az7b?U^E0rP^{vK7ys>v->QSVQc#}g}gWHexyiJvCjNPanQ0k zRf!M3JHu|zs~)5k?D{Bzxv3t$v2+bw7Az=WrzCOEWrjBU<|KjFS<@$ANsVjWO-gjq zr<`?X}auJB-*~OxWTOQbJ}*(cbySXFiT-9}BPNJv8F|pee1!9J`gra9VRgH(bdD z{6Jl0x6qMK3|$$))(E9}IO9;h&f9BV!8y>@e6v~Ifs5dMf$fJh_AAMX<#n9grsbkB z+UyV}nM0fKP3|SYct?*F3fa(be2Srh2h?o1=nN{t0~h4sy!hdT*5ZGq>t3h0?wrBc zJU4vW7`(NSU#dkD<&L%6@NFeW2XV{CTSn^k>`un}w X z5}%;hS+@nQuA0J^YEzO5+6BT?>!7i^U6IGh^;m*J6=OP3+*&?uUcdU6RP$fw^rrqU zxifaZS=yRxnT@5i^8IannphA*EQ9J1`4n_6u(m9mHpdR0{d;R@t iv-4I5-<&5QZ&aV9YI678mbm)Q*c)3oTL!$btbRJne-Bkq@GxvPD%-%aHixi zPaSrD9qG}xlo=~HkN3Th#ofxf)BM_y)G8 z5Xa!M;$1~5!sl6nfSeWV& z>>~T#h~&I?9P%u=Y& OellNls3rhf`!dclxQ3<{&5GX9Hs`Xuk3v}jFX%s 0@Ve%J`c=D;G-= z4&HGG>cN-)_=h)Y!22dG-bU0mU3rWkQD_-3whKZU$BSywrAf`QeYmKCf${Zgs};xK z(LdPB(%LNpv3Soud8&1{+)-0WomB2__h!JWa6M1@zS&}3LG113N2Ip-9iJNoEq#|o zeN%W~;CLAC^#~PX;aMhD0|W&1DZj%zxtDE*%DdRwl^Efk$!`a{qdAy&$07Y9zGEqd z`X|@M+Qj2KaQ*ElV!n+-le4PY6NOGC=j`_Wf-O5Ujj~NtZ%iH@5SvjJ5oc$Cm5B0^ zVIbF!`U(CLwpQubtJvY$(KplqttIA9#dC?aWSBC65zN0E+{>>sr)-veGPFAyt2Pp@ zC9@uHIeJ2VZojK!R!h`?IHVqdYx(LOp-sJMvu27rgCZ|g?$E?Yjctj B@@#r{qk=Xktv{F8qbk6#j)^R$N+n5Mgkn4k%KJdm$w&6~ !MBM}1LHOi9wpn>68 z;}6oc>YyNz6C)rScNhbg)sD7C(+ w&jD9wT7{~1VQ{&6B$P~kHNq>2o8NT#?U&WYu0}=W zo_tMLcwxF>iVTb= =^6vSjda_n(?Jw#szU^ xA;{ z^6fwuF~)LLot?hCDuQ{x_tgePm3rLer+62DhFQwP%SV`|M?q-J^%w&AishaRdW?W? z%9Tqd+ZgLPU9+=HYE7RebCn)ayBe1B3OoNAmHinXDesNlA9Abs=)6ri#DYEfP2Q5L zOh<{nRn9D>X06-{%Sdp_ThtQ&0d|L^uTu!ES#O+QdzP%ea*hhTx?31g1W5O^vEzAO zOx70x#xBq=)`0q4tN&y`!vfB)Q3v8^ih6S3*~wzb{3CT`FGnS;Ap2V_KbDg)9C&a* zW@;^| Tw`|2*89c3$p>}DyI41Xwsc~Aa zxWOL47|*3z2h=0psTHD0fIJoS2(O!8z9=}$be-uGI@X>wHrYLHr=}K&@-xIHFGk)f zVE1*GfTD<6Sfq$Ep9|zRS =fZ$3# zYro8yF5MDC^gXzW7gc{q4~ziYORE>k%bf+s=_<{ F_0~b%I%=03 zYGVtD)p _ sde`qt>&44sufzMn;(Z}KOvUDP$RHzt0D=KZeOhKb5 zm#x*W#M5G+ZoDfGD*9%m;^c*>1fpr}O@NR&Ew2-|(ue0Y)^QQ^nOXyKWQ_2|Vig{3 zY9nXxn?aba&O`5VO%?U+RX96^;NKsW>Mo<@J8=-8mq?vqk`J+4vffHbT3{r5pEsRh z(u(@ Nm{eZd0bxpFj7{~?8MUeHNP)sz4g zzEVmxERb{+5O7DUFtF@M3Ndi(!pc`7(8jIkeQn(#^&H4wN40BmXQ~qMCOX^I>+a6O zLp!WvEveABm}x5XuOlYsns(^UjdZss8s)vYY$4xeONXmTP0++je58E#yyuY{w3&xz zj|vi1E|@mIAS$IPMEQuMueV;YTrAwqDg}lNhm^pKy^~Gk3^3XC T4L}FVDBj%Rkn)6-@;4jRC+%?lqs1gTNz;<*7Qo zQumQoZp&$c1rk*e`{ kAR}g}O04b#R3LH}$ Am2^5H+-x2+{|r zIJ8!18H^n#fud6kgvGne5psk#Yc?o0DLiMo)p25u7eEpSGM@B66Is^4S*I8Sb+OJ8 zGal|NNl7vW$L%G>`VZSdEU=g*7 5V|RKYDOr l19(e~39#qCyLWrKRQ-u_8+Yzr!Wn zrFLAU6rC=g{wm5E5n(YFl+{J2+kSNl^~Ji9u(MiJXa%N~Pw?v=U*A~Y+UN(0q>0Hh zGNG7sd&`654ysa2e5ZP$^l36L6oJ50Q7)HS2V?PGDIBqSbhB%*kHDZ-0ahrq0 A-?Ru@-66BXsW2If #`d<7$)t7%$ zp_#WV;(M23X#1??ma4UaQa?e{u2oY(BF)vE+b+NFbYCZCuL`fD4Bv^?fznmF!mF)C zsem_tng_La6GUQ}a+{zw%k>CWc&%vZ9K)@7cDH_SzI;SpO)8cf9gRegWaH7Eefe!d zkWVfA7b=-4=mgb{bG~}M34{;-$EEA>%uAcg-;GxJHZdP>$!e(yeRIju1WHR#`c4ff ze&5&Gz+H~Ml>$>(B@{ldIS?lnf)osZBpwZClHg<&2*7MJAk=(u>+ysL5lQsyclKet z_%mvCRXefzR Xpp^)iw^4wt9H_I9g*$9||U0;L;mI|#jIVhlrtx6z9D4Zkmm zNqpkpzu`wZx>mQCeKB_bw(K`HUDecOw-)g&gXofl+)>&QwA|mg*ia;xB)SkBG4gA13BE+>$K_0Rp=y8_lhM2bLI4i_3is_cxLF0KyU%R zpKEPYnDE3V>wu`xPf)5^dH7 z?l^F*aS^LQw9r6_g Ce8D6!Z(TgDxI((Y)S~8(D7Y%EOpsuQ95xdkA9<`}qUC8{mC|S1V zRu6@|zhyOhpFEz+o)v>?2Hra8iKBqQtfW?IhS&8|6kxoAt;8viD)J4Xr;U`e+1@@- zD@X5wlmXDa73vY6lM)R!+1Gq$zYe=WS(IkY6Ia?g8|*Zn8Sm;8f(H=1fMUvX#baU+ zSLMByZKiq=yDwM2Hf(WG6m=gKjg?>8z5elNtn{XSF&j+XsxA?{hyC(9wdAmQg_vyy zl^Y7nf0@ZG?3~^Mej@kP+q+v6RT3xMJ)j1!P7|{l?A X(QnVn7 ztigzR)2HVHnJhy|3hu|%ISpl9xOK$tu<5!%4NWC-+R&z4mR}6gUa(d&yEk9IR^<{% z;y)IRnhwX!ZjDL O=hM^wGTuwfE@DA zhUgj)&9=dUz+QrPGJm0EnwW8MN5n!f8<4EOw(lRj2i6A_l{B3O_jN0oP0fPa$xJa@ z+m-FbBq=I2>g_DApp*(KH6jZZAawuXRfUwOdSl%9X8(dJ_->%MZK@qpP`a=Lga^hj zW?RnCTAWTz1*? {n|2B6MvyZ5m5#*7yE+JakV2? z4kB)qAkYa5f<8Sb1;7_rHn5D5&5fY^0AzC^dCx7@HxYr%Gy3yXr}mh7mK9}2m&=BK z_cd%?jVEP-GNX9!`UY2ZRj~iv1#*^I;+5jr+zvQiF9LO_TLIA73qoLSRDN;ZGME77 z*tSESx=;k!25Z_UJFVON%0M&m{0@zp1(j24>dE;{5b({u-rP_wY=ec{AG#!6-|^Yc zv$|jS$sxs(Hu>w$2e34?q_q*0_dDx;$Qviy62biHuD_uNj4UkmpCx*w9e@mUxklgQ z zD5I}B$%`-~6vrUCy$Y8v6R)zO~YGcZOui9Aqk(5*b)=EgB z=02OWGRWV{UXQEgmv#vynDD!D7hau1D5a|OUQnWs9Qc<^JWxKjG_f;urBppEDfG&> z4lRI#N|GyQ;o+$&oBsw_pcsdm`vsJNScvio9~77KJ;UYe-^u7YvN1x${b!!=CfoIP z%b>m!PZcm}pTRX?DMa7`%er0aR(U{A1vm}tDh3o ES&qHzg|%ZqO3-?qi!$M>C${swT0$>fmD>}s>bYu>I&>db zwKsSfox~pYX+l#~aKPE?QHirlXLaR$z!`wxIhtLR;Ifte7gWopXsJI}olp^C;C}(Am4ILiMsx(@rm&3t@5w0P9=+G zbyUlPoqTHbD1Wx}01n!nRp>m@ovl5!xy?IF!dZu(+^xvV_LeBpMS|>z6&%{qSHp^P zA!-gwOoXYK+#G9XR$FifNzo@E>T-gXkYxfqkS)%_c4)J`Gm5l|#~}@0JryCXxaI7; zr?wJPycdJp?7!F8^x4G1l#^Z!XnZo-dNGOUsnKdeCHg5V%ObIEmRISUgjjD6YdWGW ztz4vEnmA+=yQ!`eTsuW{D#?Fjdh@IDzL^AVuuU3FGP*Rr5&}#u(5oeVLKJl Y5;81VY>DQOT4@pImb4eGSg)<$=7LWkC_ zY!UU9u-iMI`u9k7$oSxP)|w~R5`tPLTBNGi4mFJtt)2YOf)}qpBn_P5%P;OE!b5CJ z(TwkPw2j=pIr!w2rI@;}mq$}2yD3YN2Xcn_|@H z0$TYPpBgLmb^)z+b0zK L-NqL4Hb0BP#n}2Jl~Hk`LPY@;eg!6$~M)W%iJ4 zBI~d&a7M`LlFyO|yKDmMFwLt8wo^}KH>tAq?ZB_Z`_rSE`0>Sto04x0=|cAwYMw{x z(=hRM#)S#HWuaLA5klCqpf8bfj16zroCix;Ir=kvDV0i)TLmsESAG$wEP+sG_ep)% zA8H9LG%%mb_vHc0ESW0%Z3H`77>4uWrT 4%tT{76(JP|=nq^P^E{Z;sVMKe!qpQ gd-$2Ctq4H(88u63JkzE7mZ8xJ>onwiMIEKqbw~vfwN0t !e}7?VH*_??gyV$}eOi3y-a5#q99BibM@!jk zRa%8ZIb2Ap=sX|KT2w)}U|YK zfGb!8AtVIam`(d4Xc{N$YcIks2U?8k$|2YIVxQ;0 0m3O?|_Rmh@8^+Idy#z~mRH3CdH>e9(AfR<2tkE4Wg1C9-*MnN*DsBgR%@nBF{A z# ;i9cQejEKaSm>vAGZL+6Ts1*w-$==LhA_+m*}H@#cp z+4`h~-c9e1sxbdZ3Q)QhJRLu|f~Ux_GzJaGuUh}`RO?8uMNr_JLq9$BZrX-Kn0BBh zW{S+)*%m8GZ}BRsU>EI9&X%ClpS)q=LRitdZ$V02?Z$6;fm>89AMVZ73azDV__Qek zhk8gq1GNeUDQ2AxuT0yRNF0SVT# -xjjFyiU^VYsO1}!t>FqUh&O65I3Yt zR)mJ4VK&oWOGl1zZVS42m5I!$)aa7Jqr``-h>wZC=ffa>3%xP3%Ya=N*{zI!*La)e zeY1^Bk+oXat;K(o^29w4MvTls)0wejn0r1TZO?Ay`oO)T4n+rdEaX`jWmcE;i8N+s z #fJnZA!!mzY!?Di%Vy^f^$23{>gB9=UhO5?$>Le>Q$b; zXwy2$OqJr{5qbCWxe4_w0)HfPG6Wc6)(J6PC2+E6U;QB&q&dr|&`>V9^Rp8m8ckz$ zi25-T%XBZ6#xjG803vKAXBqd8bwD>nyVD0(=6?*BHF#dppUyeR*z@`JimhhIdrnyn zFvV?~%yZV*+s;p^4lSw-zXr%`0s setup(); + } + + + ofxImGuiParameter::Initialize(); + ctx = ImGui::GetCurrentContext(); + m_imgui_parameter.setup("Test"); + m_imgui_parameter.set_fit_window(true); + m_imgui_parameter.bind(triggerDuration.set("Trigger Duration", triggerDuration, 0, 2)); + + osc_receiver.setup(7001); +} + +//-------------------------------------------------------------- +void ofApp::update(){ + + receiveMessage(); + + + m_sp_uc_setter->update(); + if (m_sp_param_group) + { + ofParameterGroup & group =*m_sp_param_group.get(); + for (int i = 0; i < group.size(); ++i) + { + ofAbstractParameter& param = group[i]; + auto type_name = param.type(); + if (type_name != typeid(ofParameter ).name()) + continue; + string prefix = "CHANNEL_"; + int ch = ofToInt(param.getName().substr(prefix.size())); + //printf("ch=%d\n",ch); + ofParameter & param_int = param.cast (); + if (triggerTimeStamp.find(ch) == triggerTimeStamp.end()) + { + param_int = 0; + } + else + { + float stamp = ofGetElapsedTimef(); + if (stamp - triggerTimeStamp[ch] < triggerDuration) + { + param_int = 255; + } + else + { + param_int = 0; + } + } + } + } + else + { + if ((m_sp_param_group = m_sp_uc_setter->get_paramter_group())) + { + m_imgui_parameter.bind(*m_sp_param_group.get()); + ofParameterGroup & group = *m_sp_param_group.get(); + m_imgui_parameter.load(); + ofNotifyEvent(group.parameterChangedE(), group); + } + } +} + +//-------------------------------------------------------------- +void ofApp::draw(){ + //m_gui.draw(); + + + SetContex(); + ofxImGuiParameter::Draw(); +} + +//-------------------------------------------------------------- +void ofApp::keyPressed(int key){ + +} + +//-------------------------------------------------------------- +void ofApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseMoved(int x, int y){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseDragged(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void ofApp::mousePressed(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseReleased(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseEntered(int x, int y){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseExited(int x, int y){ + +} + +//-------------------------------------------------------------- +void ofApp::windowResized(int w, int h){ + +} + +//-------------------------------------------------------------- +void ofApp::gotMessage(ofMessage msg){ + +} + +//-------------------------------------------------------------- +void ofApp::dragEvent(ofDragInfo dragInfo){ + +} +void ofApp::SetContex() +{ + if (ctx ) + ImGui::SetCurrentContext(ctx); + +} +void ofApp::receiveMessage() +{ + while (osc_receiver.hasWaitingMessages()) { + ofxOscMessage m; + osc_receiver.getNextMessage(m); + + std::string msgString; + msgString = m.getAddress(); + msgString += ":"; + for (size_t i = 0; i < m.getNumArgs(); i++) { + + // get the argument type + msgString += " "; + msgString += m.getArgTypeName(i); + msgString += ":"; + + // display the argument - make sure we get the right type + if (m.getArgType(i) == OFXOSC_TYPE_INT32) { + msgString += ofToString(m.getArgAsInt32(i)); + } + else if (m.getArgType(i) == OFXOSC_TYPE_FLOAT) { + msgString += ofToString(m.getArgAsFloat(i)); + } + else if (m.getArgType(i) == OFXOSC_TYPE_STRING) { + msgString += m.getArgAsString(i); + } + else { + msgString += "unhandled argument type " + m.getArgTypeName(i); + } + } + printf("%s\n", msgString.c_str()); + + auto addr = m.getAddress(); + auto tokens = ofSplitString(addr, "/"); + + if (tokens.size() == 3 && m.getNumArgs() == 1 && m.getArgType(0) == OFXOSC_TYPE_INT32) + { + int ch = ofToInt(tokens[2]); + int i = m.getArgAsInt32(0); + if (i == 3) + { + printf("channel = %d, enter", ch); + if (triggerTimeStamp.find(ch) == triggerTimeStamp.end()) + triggerTimeStamp.insert(std::make_pair(ch, -numeric_limits ::max())); + triggerTimeStamp[ch] = ofGetElapsedTimef(); + } + } + } +} \ No newline at end of file diff --git a/of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.h b/of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.h new file mode 100644 index 0000000..2c48562 --- /dev/null +++ b/of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.h @@ -0,0 +1,36 @@ +#pragma once + +#include "ofMain.h" +#include "ofxUCSetter.h" +#include "ofxImGuiParameter.h" +#include "imgui.h" +#include "ofxOscReceiver.h" +#include