From 42a2e60f865056b255663251bb8781a322bd063e Mon Sep 17 00:00:00 2001 From: Elizabeth Engelman <4752801+elizabethengelman@users.noreply.github.com> Date: Thu, 30 May 2024 16:55:52 -0400 Subject: [PATCH 1/5] Add other model's .elf files --- ...stellarNanosApp.elf => stellarNanoSApp.elf} | Bin .../test_fixtures/apps/stellarNanoSPApp.elf | Bin 0 -> 181632 bytes .../test_fixtures/apps/stellarNanoXApp.elf | Bin 0 -> 181984 bytes 3 files changed, 0 insertions(+), 0 deletions(-) rename cmd/crates/stellar-ledger/tests/test_fixtures/apps/{stellarNanosApp.elf => stellarNanoSApp.elf} (100%) mode change 100755 => 100644 create mode 100755 cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanoSPApp.elf create mode 100755 cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanoXApp.elf diff --git a/cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanosApp.elf b/cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanoSApp.elf old mode 100755 new mode 100644 similarity index 100% rename from cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanosApp.elf rename to cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanoSApp.elf diff --git a/cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanoSPApp.elf b/cmd/crates/stellar-ledger/tests/test_fixtures/apps/stellarNanoSPApp.elf new file mode 100755 index 0000000000000000000000000000000000000000..86daedbe13413198f604a09efeefc3847d98beee GIT binary patch literal 181632 zcmeFad3aPs)(2eo_L{x300{)Rov?I=Eg&km44tOANmL{tDp7omd*e27ouD{&5H+Is z1~&pTD((@NNrRb5gb;LeMje^y1e^htv3=DEA+uCiCbv6D_xC$>I}6VHyx;fN_t)il zI(=_-ol~cNb?VePwejGRi&ROH*w892j5(7u=8*VR8dDr?iYoCvT6i2|mZF>kDQhj~Z1Xxgl56DZ3u?U88*A2Ae^&Eh zb@E#Ij^wqhD7XEBiR-H*rMi^iqcux4VRv>1bDB2q@0K!4YGikI$n2gHvb)a@S>4`_ z+M4d&`)UsDW_(?AX?WSmuRZ3bwxa#Xm%q`dF zwo6W_k?{@DGs3ksB|IPpit;)>tnu=IDKI0a<01b9fp&nhUC=)(>jj!DT1^?8!j6UwTr*wf>SIO4&@(%Jr1|5{r95^<749Hra&8G zycy*m4E6@DmX9ps@nYU4xu<)SNcktllPT*PTJQ` zdaYmPYgUi_Z0RiDvGm#I@b7yqX3O;Ss5xd?G&^cLY37s7Gq1{7DHVsin9|_g)6Sfk zD|uVVD~!$R)|O-k^VQ@T@?oa59n~JLS2wCQl}%;SUiT(aCzP9YL`U*P`9LHjc3Y6ky2f{-v3yxrPJ%*?0uoVcDS`1&B#}{&6^xD`@dhE zT3zdx=2|;_{+GNBlq-zdRfom{duT;s zpl^cij!~0U=0DgiW#{@n9X~^j_uU%z1Yh>cJr7Hpy`}@#qHYcCFI6?QH8tm`sMoyb z$G_&a9%6pkXIC@TA~lJB*w2*LkV{gU+RSR2>hZtiSI1YEa_}!>tXE3?q-n2v0YovvXl74^H<(FQbC!d+4Nw-*ehV_xFeqQ~LE(_?GQgLaO z%G+4`#+MlLuD1J1Y96ZDSCeEeIVN9Ia?Iqk`=}gmu4nbQwU?}2S@UeopKBIbo#xVG zro~&{iZoagk$?G06#7nYNa9=@A2v58@xN>7^=Zl)l@;DGCHsO8 zy4iJ?sQ39k=#~{pajNHl`X)^&P}I5Vm8zX@h}5+vK{q{1n)R6p)$i9%F?9r&sR!kXkGQ1i|w_KpBkgv6eT4cBU$V6+{hd^Gz3OsKR>!I?NVhNQEGs!) zx4g{fUCmDISnh)U)WjvVes@~0UDW=aeyaWaMD6FZRLFgYmK~N+``fhCdcSIMu22ir zeckM)^hP@$8)<2MUR%I&-?Z~D;#A)iqP|3Tsg~a8LVY(!+rW|Pn@9D1*v_*f6*6O5 zb4FQ>&(41q2ck8W0%^0^xk-~08J37~iJ3NU(qxATX^d^sOb)4W*-1wU<2MZmo78^m z9#PMd7n+Ke)u|S>g$??Z3m~-yRlH(gI=B~^Ul6az0<3*6@Jp5X> z(xuMLi}$fuV-QqKzG?`O3u9Fxg^<#5%4v-EeIN4#13RUJU3_d{64j-aC`*p}m*>3W z&6VCHJd5KlAfCj>Mq7GWh8!~Ul)yj&yGt+WvE{4)a$V-7dM%doG<+JZ4c}DSY8^8=FWq_As8Zhq%hBnLpRhT=$0P4QLB#eo~f))~eWbK7Biw z`<4z#jH--Z5DNdhWRqo^1|bG zmKV-`+vQYHlhqNwO6|BRqL)3?P7084#8w5(YPM+am67c`8Q;}k0Qr;H3th-VcQrFVg_`SLKvqB1 zoa$KL%9x$kwrI`YXs@o!!>BvP#rT_nH2e()(p@V<7MF()1isPgu9uV~&C0;j%=nCc z#uaEwRTXetzXiD`t^Y>z`_>@$U(t)q7CWDz(T6D)`(D#N1B~|mFSO4c)m6;RxNSWH zjag7i>lyz`G{6UI?fkXD9WHZ+owwuL!%x;Sel*JXH~94wp5Kp}LJg%0FxLJlD!J_K za!-lF&I>fg+oL^Q-)P@oCn;BXcK+%h<9~>*arvt}{0G$Iqs1hhjei}d zk6D3i)fdBR@xc-4T53tU=31)PPLx}R^52DYmnEdD7Sg?jU$#QJdi?r2o^KhJE-);e zjUR|JUJdCEmX-MeYbBQjy~Dx+Ynjc{`)uv!O9@pAP_+Qn0Jz-~)lt1ylzvz3#}^T% znS`m;#%m#UZJa4feXk2l|10`uVCol`UL~ZyLeO0fd1gVbOCWXsfR5=HA@v3LNQYz|=K(v2=@q%bo)eAzhmjaN?X5;fA*?i#n zhW1(2Qs7xO_?KbH973`*Az3oY3`YXo3d!D0NcIW7J$x|0cy9zPj$dPV{%vHawGTyx zTHD5FK(bFFJzWnjHLHYVNc)~`4>t8)FXK&G(9R03cYUCJuOuJp(87*|u>6$gsIm`f zOsOknGeIBNg1;X_a{BFaMy>t1c&pb!jwT>m=MC`R2JHN*goHm66233;(C<{%W-X-D z?%a%=ZzVV#Dh4-&wDR0wL+L6iTi&UC=IBJ~NDV%V5p@t;q~e$G_Yg*t2O@Wc7+)Ew z?zHnllx0F6I3M5s4vde$rrd7h4ft(lqyW54k;&lQ*{@6Z zcYKcn@3G*W7RdnbZf&T|V%kWJmxKPF+TXkE@Mg*esDu%mT}VqEu=C^rd#jC0gOZ}P z^`Z9j2TqFo#mH}Af9tX+HvY{3!@u)jw`NL={c=2mk7Y)@U}KUiIV8I>JCf1M76$G7 zaKBj)DwNigH zv$V2>G~OX+P0Z28L>k3Ojy735Tg2}U{O*s@h-h{=+I)};{vK;;PE|h%THuGj>GzCp zI#v5%>Y?dnkm1gx9taAXofpjwe$g#SCF8A#*@`{n>oH#1!kiP!CM_*c%Y5aU#R01y zolsthewU|74!IanT;GQIm;TW#%d||(i1<5`%=22ZF#DVd?hIU;eMs%Cas4hLd4aNH?jTZ02 zny>#l)LV2~>O<9~W|TgEx6Yq>Aw}C&RSLY|Pv6&l-v4fzS;nT(=vuC^s-iMP^i^)O zv7KK$_>H!G`>kr~I~dbkM00lRQTVzu+2ujYoHIhn4S24y^JsJd5Z@Xf8>T!bqRI99 zyHjsWe=go9#hGjTK^ayg8LblQI}xu5QtQ|?=1M;Z|2MkbD?z(YXl>xiT%U)mVGn-4 zEB^bg4B`3O$YVlOfnRx8BMp5LSQ3teAC0fNjy=(It4gK+ZBXPjCx`6(^#u2i1b0ts zYLlbQk326!LTZ)Uqc(n1KgBjrHp%bIUiOXlUemIZb$7FAX}vc4GA<=Qi19szIYF~$ zz=glR0r&YVu+!q28EV)~DeI!C^)`OVzydtK9jT9?^SF`@29!;jjZxamkrH(UzW*F4 zR;~QS{tEp4Wxtu9r^Wj`aXVibZ4?OH0~zOo_IIJ|a4K+}4_q(C7_vrdLwru9GJYLK z;cGxw7f&Z_HrX)Vvv%sIEXdds@SxbV+u*U-`E{dEC`^=4B2Xx6m8Sipi%^&h6gZ+J zJO5+E#=nc&`CXATmwbSb`8HDJmt9#QvnwTJa{Z$t>}Sr}Yw(vZ*1q-ET?0QZLT`7& z|M-=7dJ-*qID{FY0_cxoE|bJJOB1NZ;gC9JO3I{tVt?X7Z#Yg zH|hyG*WjJmd1xTfgE8Omlcs7!kabOLs#!H_=~r8x-QR7xbfsoZ&C%q1>kh`dw2I)o zf+O8li52eeW?s_{Grw&xz$JLA_NFGxV>C3~rkd3%C$-LV{jaYn#&>vNfotBO@ESY+ zY9QM+>yV|_!RA5|JKu|6rXKosjitAo<>39-_~HZ*4krX~}V037bOWM#*Z~eRW64 z@%-f_h>))6Sa$L?@pLJkUSIB6&0G~7MHh>l$3rFFRd({3O&hiK<5-;9E=^%m z6hzv(zfQVpcV`{Kyw%hcl}))Y2<^IMiY%S$J2vKe^_XSand-@|54+jQwxiV^j0o-p zG*^YWm9+Adr7~YLuoeg&>CbVcb|#g}{7LctMSrEs+^L8;2gZ|HWWF5ZBbBvrBV&g) zGf^M!>hZxOL_v&S+hX_CYxg_qwRP~6=UXT8-5IS9x@uC(*ZO4c9Tc_YV_RG`Ng`$8pahFcsrFKtAM3v!dK9Z??EWVi zyZtG~R^tP`D$k2ZjtqBuyXArld~#2%R94l}9%z$!2W(dhXln4$n#Wy?zIAH*+VquRvfZ2<}KO3T`opkwI+zN~N>{%+AGW=ad{yeUT(`W3Z6HKBY3-jq)J zuP!##rD~Xu#tf)O<||qVXInfTe@r3F92Yy_+2%zk(y~a)H6#YB+ekY+um}etG|F3< z9To|aIHb7&{Kee1Gv4=BoIHf;wjsHRZ*_A9aYK6C#X{9>sTX^kBnfi1jpo08VmMJ_@JpD1AfAPd+y1X_aZ`m$Hf`JK3b5N4q{D4nU z8%xc-IjqvzSekPYrJ7k|DJUEi?N?|{M+!LAm69JuKC>M)H%p|eIW9{ly(>=X9-5tz zxdrV)c6W3gsclcJC;7A`Gs}yXnbn*E;!N7(kLI{aJ7Etz@F7YR-;KEvX5uGzG-*y2 zM&GOROwD!Gwcx4P^Nm&=fX%-`DNtYq>=N@Y2Zzri9`sGfP{80P6#MOnOF}`k0_IwT zJ*X!xIdc`CnIF~ag3oDBu;;W*j#?Ty6)8+T1}(iL-uL^xGC$DoQjc}X{H3Vgzo;&+ zppQ+(Fli~Xma~F9jMC-45=~JgcwbA}N7}$aefT1o&+ez1^+$4CX`&Cm5vBJNkxHOt z6{R^~5$jRf?NMsC3m#$Y#YfR6?Tqb7*nt}a&0+9JMc>*MHJ^HYg_&O)bp>?}d%)qR z;IK3y=SJ}OLC~j^C&7*^5%jH~w}bxor_o&ky15Cu9q4aIKv&%?^U3|$p)W8eKItO+ zVrOVF`nWmK$DakCIcRD4;e1zA+3gOGEgu6*p@~u+!LJH_wc^)TqlbcezmE4cw`Gjt zaTju>b*8|kO%_zQ2t4cpk80G$4ypbo#`-%pF?Qz@j6I9*T@N$%E66v5Z9vd26}-qk zMk0jmk{@CFKd=z{1h0Q?fUox$V|OKy->;NU0ye)9G&8{CjLv-U_*%Rdg2xPCCH1?5 zc|t0h-)(D??)#usS{H0(Ki>{5{KTX9SWOL{LgJ|cPlv>ltJQq!jS30tJ?wt;!i23p zqs;QXdL>BwPfrCm4!~<1-_)3oOx!fg|J=Jb`{4YSq{nkSJA8vU50pH?;ewz zBCpi)$^zmn^Q)qj&H4jJTTCPUzWE`>9;$YCfWvN0uhaj)23-PuYHEH8-e1Y_CXce(AIvSwEzc3S z*trwDrgn}2F7dv71Igjcvh3mCvhmwEw80-D@HEik=9&_}^o|SThmHR!#uT?&S>U?V z3`;5Vcc4q>wP(S1lleL!e>ciDWiWOR`somk<56cD?}`uM_%!543>`lm$91T|6@o_r zcr@cP0eq;xmPY>f{%YfG;5pP^ztTqft0GE#7rzem*Uz<){(5BhNPo5QUkJIVzm^KQ zo)&VA^w(m@l`iD^0R8JjwC@l2HbK7KXrn#Nx*d`P?LFW{cIY8(wEfE1Bk_O4^|tx2 zma$J!uOV!n5OkG72I}V)@xJ^=*!*+1#6ORdj#)up3mN`3ipR}@=IjIyiGLR-eCPa# z$LHX&L-6=8z}RKr5g)~)Oz;>p%;N*WBke~#c7R8n;PG?tI1?E3frqZA5`R$8oQUaq zD)Cpvdrxe%o=ygbn-W-@10KJIo-{R|U4G_LiC-=99{_z7FbryvJFR1Gxx@n^{rBLr zvUB#Z#kzhsyU*gv!EDJy%(zTL1U3he*n$vqm2^x4)eVB`ZBQ-jECkheT}4Q}LZrTg z)Y+ZWk$R|WGE$d`)aQ^|*qM*i{axdb>JzDtBQ>`(2dN)+jYaB0ks3g1T4y#=f76wP z)Y&5S9;C{hwEFaRm&8xR^fr$^$k=*(UIbPb0{7SO{UYq+7JN^^cQ?Ls@OuQ`eqcJ; z!B{DL%1&_b{h{xUFu|n|30*|X8$Mo!xx^O|$Hq2v|RjFG0%Ln)*C?HQoXOtfJ;>X64sS08E0D$fM9T~MzBbuNul zo~6EmT&ColX~DdXiFIl_@OjsfT~k?rSa*eKhl%$M<_0A`Ic|l$l=%09)J_%9|2@sg z<#urV2Jr}HNx;$8De;qo`shj?(1up@f02I<mY|!QC`TJrP6enML^%%wt0rOFB>uF>Z%dT(U&9#DSo#tu9!!+84Em;* zLpD+3KNEC4@SaJ&uG8du77fI1*nZ(A^K(vjw{O<FcArx-jw)Q=yhIaCUO>toEwlcvvXmMX@^TqD>U)h z0~I0`qPz@wP2jRTWVW9$zQ&{{{3(XzRDp53d^-(tXCQ zpuAX=UjrI=GnmiF3(Byu@xE(YuvXBLBKoDSbLR_Q!33}O!0YCOem8k^UM|6_5A9iU zyk!)x^ZtX^IKk`j1g|~d<@*sYS@3##E$ka+aYp1C`yae|5i8mF4GCT!fmc6b@geV- z>iBg(VY~}{72fx-T(Lgh{^L6SLGW6X;Pp9peeok+zZSgi5xhd9czyOCyj~N$@)Eob zg4eHp#H(KLYONu;4vpgV>VNQhQ1ChdAD-IrYw&vPN4#zpynYT|%TB&Aj90Ah=ioI@ zv}1MinDT7sRHfjxAG{`l*Y}=jxis@I&woLX_2yXa@VnrR)^KNauqLGE=F(+SJCQy}93GV@5DlB(4= z$Iw% zYmF_EhN^-yn*^<{wS@&q1JV0VXX%yL2ZG3Zi3XX~e^M&hpi zp)s!sl3oegg$Y_r2qwmB-A2t7^sgo8yRc7(`m_Bs`g1{_m!SU?Ws~h**IZCO8Tyzh z=pP3CnLyp@nNWT`=3uAgib#1?pkI=#JQzEp23l&ZEXX+vWB#>Nx53EKAo+)r1icsW z(iqTFOdT4IVkLf2zga}Fg!hweHrO^D`{NjkLL#0f+xsWre-3owPqBD>$cOn@L^=xv zp1Ke7abyUSJ>b>>4!=sox;D^Lotm1{%TrOOHw5hj&}KlUw>^~wPSMLG{(;a^is)%Y zFxK}jxI7``*mN&rFjK=k9u_zCgx#=b`@;smD5MO0jUDdmE{0rbWm$O}`HIYi|L zm7~*L!~OD(%0ii+8YqJ==!nXVGQTiJeqnZ$=GG;CNW_|J?$Y}{)^LTd+9BezCE$_* zoEl36EngQOLHJJ8>3uGntf-m_r?(*rvk}XC1 zSov3oIlZWp)l(pRyeBp2pZ3WvCwk2ik>d?Sp>wI$o`p4Og;U{WZ_;v^?q`!XC-btn zec10Ck3KfOllt5=L0t#xEcktv-c)AVkp}GN#z#CI6LOQMvofN4I@nz%)*Gn5Z3T|2 z(GDGVjQA>Pz{852FS<`#a9VvQ>|s2Th;1JSo$mXQZ;$;XhtTXtA$X>CrefZhdTMH+gcaivX_kS0OM?Ci^e5d%V|=rqwSbn! z_C}1Yn-jW6rOpS{I#Gusun)RzV%UF4b?!l|NbwcZ%-iq<4(e>RHNbQ*02X#bIjBWplgE@;VLW&8)kCRSc4>WLN7 zxXh;w$78X+I@B{H;@96n-l2BUinp7PdXJw(Xit*%82;Bn8U5PT^uO@qtUp^k? zQM_*DPSDN(Eo|Lt6Lzdfu5|bgSt0xGY}hOd%PC&#bA(5plZ7qQ)6HQ>p2$;KVCDTH z=GIpi$eJ{uq8E6{)1PH*i{2mG6t~X@3g~*fcetnRk>g0k0!WKjXnmKv;>w- zsKdHujC2?+JXe{p(`Q`y81S?Tp7(&KQ`dEB6CYax9gJlGz0`{t|3c)s4tZ$2wU)pu zldJM73$Iz7Gf(E@6YahZB|d=?4~iIc+D{pK@HUzU%`DGAIr|a2S$PR~FX4dC`pBG#Uc_897)ZwOu!z$+O$roP7h#Jb_w zo_h5z&}~l8{bbml>3aK^pdEx)oCMm(f&04&U!N#vg7R)5e;L|+NN;~CXubnYYA3B* zk^R9sHs2l_u|FB0ygX6nm#F)Ytjh)M$Dq~cY8YQWDt?ajT?M*x6LgcIZ@QnO+r2Xc z?HhWzynB#*9rTvrx>6gT5BdoSdfTl-^g8C*g8os^=ZOBMtnvi0&K&axQ-(dHiLJJB zXqL!%Ct~p41K6*Vh<9H>`>h9l4}1>VO*%VPm52#reH&Y_ z3dd!^u^b$agX3o+-aPvj#NgmJgzIkwud~4`4ZL8R6ZSv`LL+|C=ZHyn2>KnUANg>5 z68+&7K|d}b3&vsc0?ngmut<*4yj};d4T9IRXkVR|j@1K#S1;m8!isp2^`>=9i+O0= zVwmX|Jq|nwZdWC+$^=&WxS0e0gYioRzfZw0Pw-1CH~S94`#7lWRmkf;FwV+PX@%r> zo1snE$vK+y3UDqKa?*JI7Ic3C>b(y2P6O}hf;X-IXA0g)<SL%Rx`N z@W10fn%7|8-yq9Jg4d>-hj{7uw+UWz!R!CRf5Iq~2K(B`LUrX3U5;XQ!eef+=s zt=M^8>9S()2W+iIQO984UEsAm!Rsf`S&q5$0Bo6ob1{P6(Q!`sLTFYT(Vi8n z-Z?J67-6=<%G3A~>XxyepfYk!*j?ktD06pzc-NfrnHU>>FJ!nB6w5ki)~xZH#EP4h zcC;o|+(Zn|PhwUr|G@d-spXR|qIK%EK6BVvo}YMTJR7}ub|-VX{FSuFDwB3FP|1o@ z<`-%9U9^rd*!R2Gc-bX}S9|tC9LSL>1wjS7l$MN~IX!A#!a?8g7hkFGM#}Hvo(RAvB`k~&R07-YO5S`$o$j26s8Gwh)W*s%7A_f_q7b+GT|7|oqCu8Q)fLnq#a zPV7dz+=9=#=DhN;h%D$t0O9{G$}K>-HZf;oaV2B_m0j$!aA7su;Ymf?PwlUU-F+DI z33jn}Lgp7}p5b|r!M?eBVL|#&pw6kHOxh>WeB;nO$RkZTn5}|!6!p9pY_jU9s~`<~$LD4fe$c^;&(Eh>sT~`d}03y6`h(mlfw9 zQaiE}Gfk$jqby6zDltADeRFJQYFS2N)tmAEfhMPQR^?I8NWOr^sG**r_p9Fn!PgRH zeSZVm5T7oz+bx(^C?AZ+hsLNaB7RCit+Eq-(#yks(#yh6!WtJm-JyAc!M<(atgrts z0#CAWREN7U<5se(+k;j9s$d$*P6=P*&kO41{a2#g;!)*JLb(GX z_MV1%Ux_k573J#V!wC^H-Xvo1lH(O6uuD;izc(BskgXd;?D$n8_6&i?HQ0wm*xd`c zTZ8P>D=T&6GDAAgKMJ1b3!V)7X3G*fOT7NFN0)RuMx0=RXVvvsLlZL5d;;vQpq~hO z@~2kAAKEn>M-q=_$n$i9wi5dOSVA5@@bj*^#-F)3Gn6W#%E!RT!Zi_9!e4|W`ur7f zc`6}^9g^It&rPhs`X=P4M%}7Ow<|vhW|li(0adhxg&zc;G0rG5^s-H zBx+a^vl1Le4zGBhd!> zP9};Kr{+=&MiHZZG3E8IP<-V+=Fjvg1r~mS&T9-sIcQnT-e7lLqBVyt9abINMn>Ai zJiQ7Xf;>z2j{IU1V{mn;f^l%&`#N8mXT=QuUYaEx)|)oktBD>-J9&Xf)heeiXI{Bq zluIKJC~ijmEPT>lqC)*^=r^lbQ7zmpv=M!eBD4DH(w}nXUGBN&7`hcsMbOU1bajn7 z8Rx}moXw9Hh1k|s@AN};HmTRla@!Sdk`#5I?{@8IkiFPqYf)`O>GqfWURCk49w~XD zS^?^8ZB_7h8ryCO&cRuW5>Q>KIfD8Ld;MHKD;Vgzv&GSD_bngK3dgHky{6EH)tBV6 znObP*^u41^Yfe*Xe|kPnBjXf5&(g|*SleKpU@EvN)eCTLy0KJ4YiMn$m|a$?>1rs`?Pp*kSNLC()u=5BXPQ4{}t^YvxeLgscz$9Qb@ut^ebTkR@`1o#cUJ-W$%`Zr2pF(YaBkobKVE!BNKJd1H<39(N z0&m%s543IA)uVRMzWofR1*?jVu!M8*8*tu*&dI!qljclW7~G)EVjHyC?4xcw+kP#z zK`!?C&ot5AwY69+?ujY8a**PX&AqdbN@?GsjT}hJMcV8{+FxRUAj%Raq-ro%Z0>d8 z89vjXIYj0CH_q$)se{^xwa>!1cs4$9eN84Id;Q?#(DP^urMfOCxh5b&$Za>d(mGrM z?J)Sea3;&{+g{b^SBe{}NLCpqGR;7mN;p3b-bgd|rb;*CtV(`iysrdjmrsS*Hp-J+ zy+>~Yr&;aqYr(7m<8KX`oi6BK0FkNGZKWDa8mxluIiR(9gA4GK4=sduJ3yMIa~LW6F9Rtk zd)8nw%BB-|X$g6=N6AZ?irvqIEzZspf(&O!PuK4N>>uej<`M^1q0C&A{-wy{8twzP zi#&Uf=kEhY6M0@7$PMXweO9aiY4bt1cc2|{jzUwkg6n7Hz8FG%|Yr+ zq`DHR>j%QSW*}`o(uxylH3Rj#^zmkC|169*mfrJl1f5#oVce%N4O%)EEwiY9a%iq! zap(VN*@|4{E?{X@NHi)d%+J(K%~ zdQWe3sP}vy{c-P^+-wpf&0nH3L#Bq3NwPcTfNPh@H4ZjcLd@*!AS~j2&kW>+^`|fT z$;t$SY%A_g!m2y&Hi>&$(-Oa)?Ds(5F%O1$*mz$^jEf94HRDv|h_%@sg?(voRWoZ6 z`Y2}hqb`xZWz;x2t9zh?ZV!p~T{h?s+MzqtpDLh7be{*~Kaa}bk?hj%AR4H(_vTyK z^g66;ezfxqZ&D|25kdZs;TJR@&3=}2Hr+w=M&b^lf!YyiDx)b0X>72zH(@sg!+8_Z zaNQoP8}?y*(NZxkS>VN-2@8_~OPL9aIUZV;jAnA$qW0Ke7)gQGKkS-|p$xdotEg zBBxssbF@y3jlB{7aBqG;VhiaOl;OPQ>G{8pv;fP`BHNLhka;_jfxI*#y%9;qQ?8J0 zy%^crBcp8!5tT28VdQ~2J zRFSYCo1)>w2yt!XY(mH}&h5T;A=b&x!#dfbkjd@EJzz^h7Izu$0lP3{b6<=*!IopB zOmZusWIUy~SB6sEt3qk+D?{n-{|aSbblgtFXKp=|ecp&WNgXpH;%&{+3P zA)GDa=SMIC4Cp8`eiq(7is20>`*9{*jH5I0H$LH2;Ak zqBxT<&7WSbVCPyfZoT;ma~vt<#VWm<`N5d%WVl;I!T~X?=2h#S`e#DRsv&1}+wnUX zld;yt;cxH9Oj*fsvnNN*ykcCgd2?-$PJ=mfWt z>7Ckp-*Aeq0Tl02grc?%*$zKq#nJCB@%|H73SDD%@220+Y9(%4-`Ash%4Zl}6=i?rr zjhKD5O37GLf2<;Db>?Dgh~8O2GVVOGF=seuX(diTT4+`Qk-wS$757`{cluNo*nLin zP)qx(ppPOCG*Y?=vl-${>ybgyz6+1bjMkU?Y0XERg{1YPY=lDVRxv2$otT;1h!1PQ z`BrgzlfBi%7e_7SOkvKnN@EBb(s^zzvV-E%aiY)p9# zc37e}sE)E!%*`;X6(>2(d=G9NGV}Gw6|kk1rHfpvkjvVuuymYOe|s<)R&u>n?XdPmB zGxv}T997|N4L2i55=y^4V#4fkyzjXnU7pPnr51yL6h=~VVac*nstKabF6`H z1P$GkK&7O$N~Ni{2cT+*3!TGNfJ`y(~O` zDV@TV79`;>(a1JYE2Dcyu)~V69uGq< zR=aWIBx&J?>ucBRtuqg^qtqwp1h9m^w>k9mUyHjrMyI^FTW`nK+>tZ5q(^j9$Q|wf z?|r1Hc@p~D#!INrK`QycYH5bMW5sHzXc}tF%yb)?*)z7hV8vM6^&u&ATA5kMhrW$v zl|8K8u9U$>S76;Jzaj&tWtG)bPgTvt6Li>*CpkFp(U)&Hvw>i#03y;M-1P<-;2Q)vm3j<~q zcGz0Fbt3mP)S96ES-T}gLhc*2x?uYM*&3Al7Tm|Cb0o=S{;&6S%!hD(=l=uFf##ea z;Vk1m(G{zoYR$lk6yCP==dl z<|4|Wc9NgcZZFRBt%nwUx>I)N!Ar`=yp^ME0<0M`=inwq8ew1P9}C(1%jvYJ-G`Im z7^M$rjjd$a#)dOb%Ujo*P0?qzbXg!@w%?oZjcWM*e_uVj7FdrrGU zvxbv!%;_PzL) zDwZLA$uYCfu1U9kbiy+KysPY*`NB|_NnumYpBn7vocf)8d{8*c6qX!!%F@C;?F~Dt+sri&9Wzh;DYuzt z?_7UuiRst9@kO7s-@+!U()?2gq~c>;3ul}M%<0C5jZK?y|4&*k=IT|f9n4jVOreKX zKfY3$7wJN(#p$HT=#TMD+B95#Qs^vD7Zh&NrX%2u_Wf(1Bp+?(+@LLRH1)=d3E^an zgAU9S9@troymXsVyzi5CJ*8zhr9F|-Fr4!1cDlXt7fr7hO*rtd-==zIjXTsFgap<) z^+w#+d3Qcp*efD6%0fRYfXvMA#Z6O8DYAtgU;T=ZmnjpP1TH>?`y<^IQ;I*^`K;G^ zc%A?0JZbLBs~^&)DyOaR8J0$r zSW9>Q9MP13O?_H5;pPFk_+!+ypmTvb3HRliv156|&IO8#f(`GBl*wdDb zI~yvh7vycn-39geUi`94o2i<@3o#FC=I?0e;p9sxS1nnfYuTpi=4YC6U&zO*!q3qj zHo3eo+V}lHT`;e~4Vp7lR*zJM$RKVH7vYxBXx|r!-bQ|94)!we=FQ^n%j<$;U!+@6 z78Xnd`hUkR2D%Z2?&-6I=Ym%zVF`Wt26K3s@JIi5y2HbCyM9FX`Tt4xyJ5O5KcZ_L zrhBWY_{DVfaGq)IX0PMW7_3}arPmAcA#GF418J?e-G=JOw#55>5~upj5OO}9s9!GX zXO&b@zaK<-STo{RC(6rC)b9|=%LbjURanD-FJ4}hdtj56&fY;Ex7U>WbJQbRSwJb6 zq;AqOnCVvwa606#@dfG>CzX$tIDfovUVK;=mOP5nU0B*S*<1B`zeHdp` zS01ymNue>brek(#p_+`fBNH!*WvC3Ez^gqa5?0K3v2@3!(wW^|@At|X*$2|gJ-G3S ztngP_#gdfHj4*Cp?yR0vg1XNOKD1go2R7+kvPdQ%U?-17v5B6?+OIFeI&Uxti(@(x z@7pP?490*d9`E%%k~C|IbgryP7wUH5m3DyByrn5$&AV`ndJfKF=195Y@9dG-v;!H9 zIZhM5Hl8z6Igrz6ebdBmj~@yi=}vZ7fA#sF5K&zx&1J`Ly$eW;Ge4Elm~=so^FHiy zZ^zAuwu2dB7U#_f?&j*m*bFJh0q+M(PR6e;r!gsCHPw6-lxC!bYubPp0$6k(imV-?KO16>;g~~BOh*W;D_Sdz4p#x%=Z#q z2j0#Dl^&t8_9kFa-E38JFtdUCN<&#?l#hJkL-BC1$!7f`V>snc@rGbEQc{LfeurqX z7%BGQlr|Ax>)iX6z=!uT_FIfmXG14Omy4cX5p z5t*}jcHEb2RdZp5sb4VXGCmU{|Lo+;j+t#zN0NKamoLFerMj$#q+TiI>SK>rn?jGP z*6`!16t-wmV0Z7hjLW|+#%;`c-&!}2D*6_ivy2zZucL?Mwxfs17A-~D-D}M-w`2U= zzKq*atZGWHBz@LZHtB;Cs>}+X_F6mtzIyiRf3BRl5?XS`zq|aoN4m$Z#5%$Pxu&=X zYdo5i7wMW^WX7l~VGW=_wWDX)(XL}VrG|RM^J%?F@;J=#eGtRE=CJl0gmxt*wC9g8 zy+`Obu>HD3_-JDN)`F4$m0rbsN&eL{|9xO&4VP^53}N#=+CzF2+B<|F)?RDUHm5wr z_=ENq+<~5oo&(<~g*>OEdZwh}W5*}C{Ri_%_;~;lAgzt*Q0lI#zI(J^3lA=d#p|>PtOXC+V@K+^Al+t9Ivqd)#N4%g7DaJ?j1TaPn5kZ3@j(Gh3x| zS@_O;Y1%XDv}2N#@m0XY96-}qu)wU4UiLcIr?NlDy-jmGCVdb%(9=igPS1@~h z($lHWO@HjWy0!LI_GGoG=kkmN?N`|UcHd6#nX2hfop)w?8fLZ|dnIOe&FpM}MbB+- z>9u9d?x4T+_N&#ZHMrMwfNjy=U+zhkO}MKit$}Vhy}P!h*PMadXlql%`>nNQT$T=Y zo0|@*CilD!=lzmcQc{9B^4x3k%dUsS8yFX67%ErItUvO`(( zUc{`hEwA(}F}-%N+xK%{Qz`flC~MeL$8u+=^j3wpA|Knlc0!(ShPpreC2na4Uz_qc zIE0D*ySizQ*|+AlXQ;`~|9irf6Li@>?`2Z5uTI@`^dgqFjX5nn=_U)>!1PqoHuFis*Va_X5 z%jSo6R;kNDJv)-}LfTfne4?51Sh_ED>y;C{zV9b&I-1WY-xcb;hAKaUxw~jf_%7H>LaS;N zTC0Z9I^2&o8%FC>yb)U6ix>I`ucp%P>PC=$<36{Kux4ADO3}miL6+*5?;Fa&p0f3% z%6bmzoTgIcG5YYujOx-T&B?W`&{E)?GLHY6lvdda8tmy7Ne}RmIbX@|hsp40ZYV9eE*2Hje_oIeeO#JMKZvQ?$1NVZ>$DTeD z&LCq<(P*B(EdAo2o|rtp2D-}pfnez*E9OHgH1ld2BgSjYzumh)J&qj%bUT}gXSRsd zwsvhL;xT;a9tt*P@$rQgNW2`rig$mvc|MNk79h=ps6`9xq+O*n2EE>NL~9A`?;h*K zZ<76~q^Ij}ds3xm`7zl%Rn2LisBVYf@E+!Iv7fH?NcSA)diA~N2L7(9d2Y|fI<9$0Vd5pz$vv~Q=~SGB}^q$WJ{Hs*z#ZI7tZS<<|9U5(aXsQWcv zcp1-NtJ>2s50w%>iW}qEnwHXs)Udy$)WRoQSnEZ2^+7c=r~=euIWO#wyUFoejDyvty+?N#NL}~w{A;%(cWWX#lCv4SCx(w zgny>q6Rg{5+sZbNebZdOAWzzywG|pNW^>*ZI4gNDZVB5P*wYK~e@V#vhxn2194nP% z?n#05x21c$*G-QiN%-rK((uUd^EFZtiv*f4u`%=6g|l)og8>LE8k ze*V1%8yYY-P)YODlDq{-8`Pw!X$?wiQbU74#~ntiOKNUb!=a!hfsu~QLdf}53}J!}l zy7r=i8hSzh-2~i280($jMLc?50LaiBWj)FLl9t?118iClt&9=qNYkwoCWNgo5+#+* zaKboQ)b$Y1S+7yqer-$w8)-TrW1XNQbGc@2U|UKdbxEE_lm#CF$W%?j+*`6q-Q6o? z>}dyAC3EXrm?@KbSjw0Nd2Z%rX~CHK&;B-6^Z>G`k2G!a%d;jQYKq9)n3^(TyjWenSSr}z!3Zu@sFm;}o?(`4IMayJ4AiG2 z#RSb;tg`xW-W*k$D)||4NcTA+M*?Z~Tv6seCxf-JoJQa+WQnfy^79&-RtJS4s z`xcarN$9BL%W0@CT@2deZIp*7ao084Ta<=dB&$nl7eP`DtQ2lfwqljR!ZLZ4s&<7kZ&cVQH`CUnpY z2IJUa7N%$tH-Z-AglXrKdjPkRir?6g!E*+W&8O3;Irx@LgkW@r1EC%Y*B6qJI!VUVP$ z?VO-YyR~}uv3=Tmi1MmSiBACQw0K2VH;R~~A_`jQICZdgI;IQW{QW3QD{EmgR z_i(8f&YTa(*vIEo>r17xy1V{&nzJKVM+ObbkBsF0dsh?w|DHyR8T53b={?*kB`F_u zPnDk08j*K0T8QpmPY&IIwM}ZD$&qv*PEW5#lM+vlM$KWeu2ipHQ7_udTMxuO4Q^90 zQ!~{xYf*^t?{G^p-JTyW9Gr8AFq9n_v-CfBr% zgWcnB!)Ws1r19V0P>a^ItLt}`h~2I;`Z2o!u9@K4g8N0VA5LRyJPEF5aD4+iaTK)< z{CWiHxsVIq&ck$HZ$~gqU|I#8BRt=PT;>Fxo;76&E*5av&@Y3FTOj*4A(!m>3FNXt zu9U;c;}7D0Quv>1p4v$}Z9l>@c7;S|hqnh`T7wz!<8r?v>(16%Z|Z@AS_7-aOa>5w z7e#9-`=TFd4Hdblg`%2fWrYaQ8$?YiwSE54HSrGDq#Gv$+M~~C+ZlEeLmxKaiL^r3 zJ0|qbqbS!ZH=1VA?@ieA;MQEI+s9~27i?>>CY{NrTf~(&C=`Eyxq~E>oQwj7|UFuv*h&f7S_Xg6~Qr7c9N9iK$HMki0DzHas1#a7+93DUPdfh%ezsIn{`IgCHN~M1GKooUb zM>C}LrQ?x`+6SHM?g;L?ISmxFGwS^a_L(?wnh3u!*S|xaTUa=7v&^fa63xXj=%Y%u ziMfu2j@7ZEu8?k}6k(?re--ppT42rZp>6o~|5kkO^S6s{wr02Z_N@60dahZmt8=w} zQkUC`-h}ouW5*e-rs01V*>h>Cu?Z0 zf;>B~Q|CZCYqL8h?J|iRw(tu$rPSn|5c*&z?O^B}r2cYaRlIN4pbTvx?zD!=c++mW zrKGA#7Ic(%&mjFz9z!Q-DqBCRlZui%pl6Dy2s=EA%pF**QA;%Y92sp{zgwCp!R}6J z9nwa|WBC6n(y%f)Rb8T`W_*DjvnvD6`oB`j*UIiGhft>IzZ$fA8Dw9ijR)@JvFiRe^*ZVi7)8;3KKO1o*Im)-5iOMxp}Nc9 zv5(Qo&UvWmp0<(yjq(rp|L;r%-azu&3)j-q`oKo~FL?C-<$VySE_E~qu&W0Dj}1^} zPMUFN{KFRA9y>~jrx^cma)hwQ&cgQtK;)JE%s~d7S#46uN+GLT2k=IFhkYx!po5@xe5-p|v6FDf=LaAI9Z$rPuS{~n7K(?KK z)xww=|0`!X*56EJ^jBEH_Gj`KtH&pdu{}K^HOf2+4o|eLYc?s^5p8Bumrb)^)erYS z;|3aA#U{;+kEx1rOGHxW|CrO?{~z|=J}#wtC6S9>5jS?0qz2cKdT zmHTt;neAM0?A*WKANTKmy?!s|#b)Ncuk~=PYp=(>*IJugp!Wd3%MMUjzc?tYuavMt z_V%)g2znk$?lpQPJQLndXM!H402{rTE&~#wCzcS8R%GqcL}Pq{LyGon(i-I!sv$Ix zc?!Iv0>^kQ#xpVo4~9E(fS-_mdL_0OvZXX@6>QlFPpY?xtxj>wRjdT zNdt6+nrre!eUdJR{Hr!_`nSXXl3V`E|BL_io&4+4d_6sFC@E5!GbUMIDTT||qzgI| zS{!C;N{5%z4vJkp&|XriGw@%7e5(;CM~dw}*lWZ&54~p?J@KGalLazyP8KIZ$dB-G z`jO!$1n;g0Lx0c!zaQW_#Jc>#AAWfXiWffcU*igc>?F4eB`&zo(;EW4gevzi!M&d1 zq8=b!J?!-a-?-NJ@1f|cg^YgFJ6^v%h#euqQ>_~uJMq3cjE^PVLGLihPBVfGSf!4> zw?PP95}p_Qhr96qaCZjJIpiqMCggbdms-zVS7w?S$(G#^4)#fo3Tp~RKiQ-_OI*{@ z9dDEH#QVMK_v0;+*ws%?@x$|u0eJQzwVrRMRghjrdSejn@9!z97HE~XU6}1C3wVw} z?=;e40qtKgmqEXGrK>OA(e~0!^o10{>^kMQDIBw!JJh~7l_U+*^BJb+fdJA|qv)w| z={cO~sezvN{YKBtik`kkkN>Tn%Mo^)jKafp+gBe&Sq^mqX{tQp29345A9bNY2n_F zL!XM87<2JD+U~#VpN83*c+IVEBymn`L$YkGYGZa9c?rBQ{JUK@~sK) znnK>Jz+pnJRqg*X*oSdX=tpCw{*I%&x~1Zt`L*CinklwIT3hQ~8?|4YTcMfi&?ahz zdpB*ccpMk!s_1U0pByVSQk^d0pm|3+<^7M6tLKV&ka+e*ZpGuywvMhnxwG%ZyI4B* z?V>gQy{^%^B;z%`E5>_6y=&K6yuW)cbgf1E9r;ENxl=qoN<2lo+%X(lYhPP~yXzRO zw@Al3Py?fW-Oc0M)q%YW5a0Kh>8+$q4yfH&yTPJ8PIKw>cy>YS;Oqw|Z(#32B|W&C zU^Y&&)0;8SXItOV@OEh^t=q&*9SQFNk&hQG!Hh2tjpkgH=A~MBSmc*P%R-5VJB%fJ zEd9UxAasw#{~P(-YB{TLQ%J8yO+3~Cg!i$#{7Grm-gttfu&lg06z>3Cl8RIYxTWg8K zl@AwEYy5RP?(x6p5F$*8Tf*HCJ2V^w4NWM4^j;3ks^6DT)3B>5l-yNWdVCX(w=df@ z_Z5B{(!Eh0?%T9-_p{1%UWs!u%83;F23%e`O=D(Zq~CIjIRxK&mrjzc+Jv;xJ3sEh z99_D`c%RfR$AQqv-BQBCg7C&MPoa&)4sbWckV}|51opx{#O?cQ9l2|FLwBPTucdjz zvJ|(W`pW5J=re*mq}ET`aX+FKza{(bPm0K%<`Aq|Ydz3jXK~In*45gorC43{d5lM) z1MC>=(!svhJGI85Yt-HP@6|*r3$!gAZAl#x{=avV%83TWSjIucxqk2V{l3bKMXE10 zSp2bHgV44Vc_~*ltd{ZwT~QkC)Z<+{)L*CcdZGQ2l^Lp1LPy)Tx9WyFZYJ!~-a3Eu zriAz?PV$5I+8MnuLqr-QpR*w6ufT|uRzKq$^6CoB^R@KmIcgWF?;C&J2f6f!GnWbv z%w%lTd!cr2z*{G2?nZ;-TV*cmCwMcT^BTmA!~SuYCr$O?W9`^y1v3pL%vs!F42YHw zrdn+medMi<2GU5;m*T+;w+{5&-0>(OpU_kOre60am=8<3A4IrLy?$=*#@u@;deO{E z(#t#5J8dy`1!*{QXP5-ZC%3|R)fLVN==d``%vCLeDi)Lgk?gPtZAW zE=8l$L%dM>=g}%4;Yio33f_#7~kWdeSFJLt|~R zX|$tB4elIbWv=Ln{6cZ1A)o35Rz2#agepr?6Xm+=RjzY^k+EXq#E=1aYHtsdTALko zJ|sovUJ9wb+sOD4v;jIrAr0*xa=3G8byoJSG~^x-Z2%c$zQy(Lw!z z9s=*4!C}XKd^HyT#=iJ(Q2xg>^-;B_UCkywCZD`wcnA@I; z)Kz1Aq?2q)NZ}aYPEl%7T601A&Ks!ey!(c^P?JWsby{}&!6#5|q|{a#f$k%>saBuz zj<#PYJYfi<`Zn?dT=Pja_5RqeK)&E3{FD)m)EaWVG{j@Qwy_X*bfgo)xTr<*)E&DL zP$~khuAmu|SozWD@Y|Y+GubzM@T?7UR>Cv!+)-DjefrPI_Z=4l@4?JH&v+l~L!6S_ z3v)<4@N`auW#Q=p%{DRO-G4tg$|8MEjI5;l$rByaZyJ^2Gvxl1Q%$1fk10Oqd_9tr z1CDE7qF@h;8T}JCt_IS?`~9@b<{_|3Q1S z1v*z@U9PhX;(gSt-Jo$sgTvj-Tyo@7p!u9$ypMdqMBc6(61P3MiT_B{=&I${3Q(B&4C|n`C}Z9VzQ;Fx?^s_a zg$d&)UUxL+Rz|%&yC!T&uRd7_Ptv`7&eZeh?lqQP$8&0=*c^LK;i}#=cfSFw8s$9PER1H0%#sV#LbjQ>R6kDdlgcb8FDfAf~k)IW<2NQV6|q<;1|636Z

F+dB9qDtH6HEo{ZKzMNkWUj}m(2dz|o7zSD$G`JRvN zA>Pvj7i&bvX_2a%AldB#v9*pQJG4f3grOFF@EY9MwAf26)#}{`jB+gS3BtV(+2#>O zZ<%cSP#la%p!&WK>feS+U8E7^)qv*_;mC(Qnu2Z0suQfDyV*9No&M|E1Dvhp;{E$6 z$2iB{`UCWSLAu&E+j_oFZ%%an_J5z=>+1aN`M!s-qwP-}q=P!fw(sqe=6y~UhbqNl zx}&DWjv}~!gSZDGZb&50IPz~txM%ijqWYZZZW9C2te){Sax&vxRelKnX4}+j=u=1e zp764zS*I>0sm`h?$J=PJqUB~=+g0jsQoJ;-r?`DEYkZ|K2s^aC_+B?>3D{LS!3QNp zV11ZpSk(gW)KqI)<>Qq}XXS9rK3raN&~#A>wAi&a4K$Kk-`z)H(PwjSvfmw49)v&E zocD>0#u!;2nO6B&rTMHJHmtEHo&t4`yrW5q8jO;i+A*vpM6u!8!u6;)N`5p*v-x0tM1EpH^Z-YI$?&B#`rK(MHw~2<>{imz7JAbU_e$H^zUn}! ziPEAq)E}UCFjK9O-67HQVsAiQH~*L0K!g% zOxFVa2jaY^sa4=^v^H~L&I^`Ma;Xs!GjnuN6sFIYngP4oFJ01{OVWJSM|aTFYBw3- zUhhh~V{d>>8kljpsti}h6FDVQ!V5L#WZ7NTV3G6!l8X4a`iZHLcj$PeKgZtCx``rqSgw%TKV>gmIXFq%4cHpz?RP)+In#N`&U*h7Z*RbPc>$oH6X{( z%1OLi7qbEF4%v>`Z`bo|Gw>#1)a%#3gCDddb-I=ZZiO`qeNNH3=9*@+xN_}5(q{dx zj<&zvaO(Ou^i#3Uu5h2l-n!9_J~igw`~~Y<{@sM9$wty2?;EzyI{SDowNcBy!kUL0 z8P^_fm0zNHbW6Vz!>k!zO{Jc5zoKv`Zo9*?j(*oUCzUmO4!w zo{^)R#NQ;HMC30hVOq>j6OlhQ$}JSqH+Ux0|GKk%7>)0NO}%m7yFM}sZJrlu_}7)4 zcES~^szlwG6w>62dFLH%*KXQVB4K?m;XJQzT8}G|@31?hy56>&OW*tUK0VDC97e9O zo3g`P8bH^IX2-QSuZfm=gOeO>Q}#K}dnDL*E9cfxdF^+@1L2`>fZx4t$oL<0!(D$- z{%P&#=-&eaja^t6wjkhrtXDuH{Nt zFT2d7hEMhM3Z(xt)ZQ4YPYT9-juk0=cfIY<+6{%8mV5EW>J^o!&(?qM$Vd6`6>Bis z!?)HHW*UUrqqXIRX-LAsp|}@DbL23;3pvJD*eh*sOOeCT){MqZDyG)Q>}gn&>MK!A z@@b{_Vyd@mEW?_J8{f937WQAcdj|SD&tV=2zD3pUu~Cr+#~N4d9%q~35IGd4xnEWb zeTxVwMY}+9XflqK)|Q&W8YlSCd960AC8VRRKjz=yjh%2u5)l#Os%2x8r*%=ve;OlR zU#En**uL0=Cz1n|^N2}rPCj*lzWbvE@s;r;P2bz$tIxu-Oew5iS}LBgo#_v`@$ubG zU4_18_vpyTgQLTw7b(PbyASoFcY7dT-tZ^g^{IU+6u;Ec-l<3#rC5qh#eYwd3hew5 z@y=;E;*Hak?;3E;1^N#<9DX?HIf@u93FvTv%u2Z=8rXUBwGF~DFcJYB-FuwzKp=U}u^lMuu>5)D)ZIn(b4`d&* z$78#&v)@D!k?PQxye8tmUiokIRIU*9hdSCGJ_rlBY@^z;s-CR$SiOi0coH);t1ufN z3bX#IqOkUZdUlJi@5Q}ZjQOhqwrkhNR#H7bqe|Qnxocpgrm?lRG|E)zI6Wab^56vI zcv>%sdg=PUb6)V1Ty^38*4~L$&y;~tKQx&`(CYXa(L)u3q__Zwlo+2P#fd>f20I#G zxe)8=GqlH-0|zHHMh^~c96C6%2`*xyqenOSRNAn{wLDsCER2qC(mp2*>e;fgHP-X) zv%a3XgRw^6bB}vUqc!JJG(A%gj&I{>-;^E>X-Ii=U$~YB^-k&0Py1wW;gQp}!95$N z5AM~NH`v&iKRCLva4=>?+e57@NOJf?PIO#5V#95aHv|kTqUMTU0HV#XPvA&I^raq+;7H(>8@JU-?@k#YOQDxD7Nn_W4E4z_+;jW%nn)b`}7Wss! zPil%zc|M9agf^ItG&dlWuSMmOuchx%hMKUq2}X0JSEcVuCt&7+v4~cI3VJT|?~YoU z%YZY|dTMJ=gB^RNKYAUOZM2K#_Z?5r{d!HyUb;&w+h_-vZ{cQ`gohF?e=kuR)zPrK z_5jL1`pDh3cy03A;ikKQ!-+mC)QjcZ>+m8klygWoq@esQk#S%))@ zR}e=&R9sQ-)U6Qip6%#pR{cE$-f&A-jiT#g9ol;8$5%jK_-ie9h4l#hJ%_M(8p`2! zB|TVirJ)+(6?F(4|{ckz5KT9RBT0dAJE~W*b1*Z^VVZc2)WiV zc@Mm8lx+D3njb;?tYgk^qsdn^nYN@D$9!orBxPChQl7+j>4c^G%l3+FD-A8o$b-HlN1~8fGkJ`$q`_rJKQ!~16OPY1GT|9V8vsO>$lXk3a z&G3GaX3$}d>);7ZYb~2nW}V!9ZN;UeU576irI$?dHO=)cCL?C1bWh4S8=;iD{izXdCj8^HyuYKF(jW$# zT3@iQ>yvRdaPl*|rLev2H!u3P2WAfROFk=-z1rp0?UwG)#=}Ft(2)>>8d~zkwe{X^ z(VX0m`c1TcVYj3VK`P+0)xTXoO|*NpS zhb|bs9yfVhlP-r}^SXY+wAPe|JXN;+WG5z_Iuk{>;RedaLo zd-a^ZM_s$TIXO8!<>M6jOV6f>$=c&m!v1rzw(y*vzZhE5*r#s+T!lj)k856SpPNKj z|0LLP;keUu?U4(FbWL*+nomAtinu1OK>M~Wrr@Mqut~HZtP+5JqXm|^fai`%E`S!y znt0}+STn8>Yufv~i5zkBf`5BJc=A~}S!(yX_=d%)JMvC~bo>p=fD`7FH~W~+3iF`T zakzVZ?dR$~1?Myx$=E-|?{vOZPDoS!pZZxIQ(zr-S{^;y`pM7R(dHCbOHa!Qv#p=u ze}VN;ND8bc5yr`%X-uNshv$GezS`F##V4gV+MzQbvCl`D_4eaFlm#=Mt~}_Ml946` z#G&cTpnPR}ymiuB2Q|MI577KN zcYu7Qq0Dq~UP%5OyW3kY2&6L6xHU)pJ=T_+;}sU3^L5C^_6rvdojW9D^|2lFLW}xx z?)wK{x#A!H@|BpfC)=-F*@(mT>(1Gt-6Pg?anICxtW>RUzjQ&ys=Mgadic)jv%CHJ zh26N5Cl_#QBuEUs`9O9AO+3B zgQ!R15$}B$&|}r_oxMvMqick26R~Q1qKIj0n%+lBKzkD|m*VVT5#8Q&<+O(Sw#sh< zq|gc<+~%h*;b+&B3jcvlb8!ojb zwrXxlLw?tNKDoC`KQ}B$NbtHYLhW9ynlBFhkWlJrpkS1+dH9>u@X6uLL(r#Hb4(0x zz-~Cor?WmsT<$|#`iJ;y@@jkM`T4C`x!mscJMJ&Ty)Dq9!(A3ZZq#%|yx80jRvjUA zKA(v5Ez(VBJYmkaA1zP(>yP8#%Nz8?f&_)XY03QZlCtu`qEchz z)YJ)+le1<`Or8-XZYQ^zv&~UrQqg?l)Pe=Z^n&~c3(AZWa!YaZthB6TQGpm(Zj2n5 zKWt!rl*lM8D9f!VDw%K0UR+urthp7r#=CQi7Zxb~&GSkY&aW_9#4s_npu(6^ocmz8 zm{gEov~Zp=yRfXFys)G=U)YKsEM!P7DIAemRxrf8u%b|y%gYNYM0Q#3{PNs9icAa~ z8eJ~#F=tIqojd_S&(9YWz0nLQ^qW*r_8>tX#V#xh=ao`Q78cCUE4Xcf(^IEROSPtE z&zO~&k&zyS0G*DFlNZi|hldLCDugY!yiiOndT@Tx{0FfoV76^mR`T5$NoGrWvPda_ zg-aHeA^6n!^9#zdE5+oDY-95L+}Xti`NC{TvL>fYu%)I=OrJD4BXdgD)a+?@-!py2 zy}7gV@(boXSXlJX+~RrjOG+1%l~*iW^l;_kC9!ew!$*v~b5z3U!NWvSSwU`vJ3&Up znAv3u%PWlOMe_?>c6A#2)^#J@UDwV6JLH!eaYe<*p|L}UE81C$%1euL7el{+<-$_% zAYE=}E^r8g|i}H&q78^55N{WrCR*_OxGEYoTpX9tc z#-x&bGW@&}_<`5?B0Fo^)a>-s$;q>l(#`i+%t;exB~K=ES%tNryrO8nl5Ip%aY1gG zD+QSgXBQXc87CGjMhc6Ik?Rl->6jj$bC5th;nZ@LS ziibjA*vZ;xmwNqZpGoO9E7`;aMmQKGK-MiC*_utIqxYz#abcKDc)O^Z8pl@ zeAK4yOf)MyW7Z^d>f~%3v(i(|melmr?9}9`g6iIqGFU_@p1l4w-nxz`BdGnvz}OM_ zLk7miJO3H!*O*)X#L%HbMN(nzd{oL#1GuVY%5}<#k}|S3+5^-?D8XXNLS%F$*ZoJ` zp;SLq;bx&q6s{VpAfJLto{tOm`&AgK1*LvKmE)=?)XPX!jLUMAFA)@P0cInc6}WO( zc>(H6S5jC8q{e}As#+({BlW4#GMZVFXpEelTV8PI2zT3Rey~8v<+rXl6k$~f)kuqq z3LX|Qn5xMOz1rrAsma;KjLhuRjLB2gLh_%rpK|6lwc@Qp$P}aWD@~n9T3A+AFu$UB zF=~^7a^w7x3S;@g($bQ$3S+*r>7aHZPpNCs#^<|AwyRcf8pj2$i>?^NB7Uc|-Z#Hw ze!=}pt?RrNu2#<(k|o1B!*ndj?urSEY}PSdO-t>O8Ab=Lt1yDSd$3mNaux zQpU8&*(mt8N~g2)QdDk4Lz}-Q2JM#||8+eVQBA;Rx&7-0(S$fRN^f zX*iz35!|o2VFr$?IO0N^8y4c&kK+c8yZS?BY;Je~#}7CLhBf2ib900K#pZ@F+Y#og z%?@duI8XY}C+wBxhRaCz{fN`X&L?+@GshK{9dX`+ zG*Xs{_!;Ql$6j@xmr&gDJ<-*z0CIO=iWHGs;8^1v&w!=G^NNY@jP zDT?CX+${HRI`<3mgPJF_e{{`8YSz<$fRH{tCw_9M^I9 z;d~;FVjPrS3KR3_l`&_>rLhAeHokQ68CyinyD|Q2Uh6MUo_^Tp*B?ji%-%2$cMi`>Ia$2aH@$snsNbdGet+-iZit&xYk2Ww@tx0qo_Or8j}3WWtj?{? zTh@K`Xv6Be4E_^dxtbeWQu`Of(vX!c!{Mg?>Ri9W@NkR({(fGW8`8b|ojKh$Kbvdt z!~pwn?6G6;?U`e6#Lj8^`@}yTcnP~c8WIy9o%87F!{5Ji*EjDx(j4n|IJWX7CDw5z zwWB_+T#kQ+4-e&xdj9ieZ=XDmuQ}hmGp{xd3f1|gdCF(p_wUU6KGsjA*qkRmpL6L%@tj9%e@s|D{xHS(wlkTR694+* z>A3QDp8sy=oRR-3_3C?gP9i>Y4(C0;Zsnnz*yRTQ!=;9sE2H<#RbNjls*ul>VEK3EXq**(_q*G2E2tW3Prk<%h=xzKxcuHn(=KhJAj z_m^>Sg=8FlXP#fIl9I#qkNoxRf8x|X-yuQY@9^ar^39F;KYsttzrPvfry2LnKj&P6 z4mXAmFG+l&|IdB%{Jh}s8;`u_KmYiL;otoH((+@mnuq(Y$$MV|bwB~kQqHhpVUwh z~Jz7lj9wRDz#)_U%iK6!yv*;CV6NdOnIHrPUfOGI& z04~ON8IHwbM4(-a=)FP=idrQm^j<3lg{>34;x>rBxzC8+=2zhMk2rS0?Yr>*A&$fN zeH6!EMR1?Li{ONl_}zl@r$tECdC|x6D~_A+<0gx=(eFtKQ3s`jF-PF;GwIGgUrM9G|1J%R z`WmwDAv-0FHJ?FP7a(s#*d2&hEB6}iEBA~GkS7H6l6yt>ma#5ENPgZOMzLHReXF@) zJIe61X_-;4YS)`q=)!Lfs5-LTsyEBtx3qy~CF7LmGfn^vdOEe{F`r!O2EWv{;a6-KR@{)L2_ zU7zp}ZBmuVsMl%bs?abaKJ-&s9vWsc#)cYACX=zhsljAkQC*`C>!`vrzi~1ikMz%h zBrG%mD~6=Ik`R_9ak+^+>k*Y!2|wH!$+*xkh;tu6K(YRPMUJK~o_CsJ{WN~Drsa6) zz2s@gF?dSdp_oM{8+EN!W}W^*(1yS)OPcMmsDEJwh6(#X#Wn~{pv`F3jhDS6GVT2l zXc+y&e+Qz}8%=g0Y4r_W{ViJWpvcTRQ`L%U$3djb;UQOK#l*92(3wYy3!F4 zfb@(rV+o9ZEUar9zZ}=Zd1)l4j*6n%aBX+VBLWv*Z`KAx)*;!4>S81O9KgNGFs|&;=eQ=(Ou0py2-C|)CQesQ2Y&2J z7k;@USrQY>`uLgiXaL94k4-|UX|m+)X(_UDC5DH(_-kW5g|)FMc=u>qW_cO zqTkXHBG@-c^c-%*ktTe{W{SaM?-6?g9}sJNbHqEoxx$b(TlB@Kwr}>s_^!gSPV_B% z7T>SqcpC?%6Xkt|<9|fTfFE(37GuYr6ZZ|ci0@xT?};}=zkQxk$dZ0iNPdhIQl237 zD^8L6&YUXsNq;~Jef&WwbXld;Gh~g_bNX7Ge+uX8q|l8!aQ=NMbmgZ~-|VlY&_AAn z|Ep5pJP*0|y#aFQvJg3B$zZwvjxloIvJAQJL-)&l^B$6WB`uN-X^+aivew9b$8M0% zcyE?{gP)btlAf3SmcD}T-S~b_o;dLnS(kNOPJ8HE*>~<4dC-7g4Le$Ij4<8k2+b4{FlVN;Q+q7HiUy)@afmdIGX7 z8pG^YG`jo#q%llg+jC%4z%b3mjn=@Y9`ev$7#?`^i7XA~;)MqeLX#Q)8kGsJFsrrF zD{Q5HjNUIf{HobFta^=p%+Ts*vf{gkS*rDe20ob;Kj_uV`Y{rg(ni(Pn)Tfi&9Q^z zHMVf$GVM>%)85EFD8}i0R)t@DY{jggyQTy^(u^F1jt>>vRpW+L_p(%uuWn7!eTahK zyK33i%wKx>tg=j-X2oa3lq|pGz*Us-9EVqT8$2y~>TBs+r|j62_K{_rGh2_#2ujY- zYgN)4i35{|Rv*%jaTdj`N=%974L0l6Onuy^5l?2NMJ4OP!n{`=T5q##jfm5&Fm?|J zw^U|qj2ImjZmphxs4M&iq@upjj2OM5 z*J`IYdCD{`Y3voYEj}%6+O&U%C$9~P3WPFKw3CC9H)!yysfSj20KZWuXKd`1RCzHx z+pUeiAyeB9HUZ1Ger3<$S|$FG!TA-teR)V@rx z5A|g<;*Mw^^bxw_=p}mi^cO*4MiJB}0)3e~#DsvsqS||iDDW97s(pqD>}`&|#Rwdu zag4)}g#LyN-x)ZvaZtbJ0UUYg%M_w7^N_eBe4dyPxB%bfqGveDXVy~0y9#}hS{xhU ze>2>_gku|i@4!)yzSg@UC~`mK)Wec;(rP+*}H6#EduD8=uE=*v8e{>q~`R-!LcgX0NlWZ={AzgZd>_B_tNgucr* zY0T&y2&*39?2+yadmr&1lzK%RM*M$~CIlWs*k4FKtS__a-R6ddy%^J?tnI{i(EjEI zde-M17JwNs;o-uwuESf}DtT*y#h?zcQ1_InO6RS;1sik?9^FR^*`W6j3Ge7e?C`Fe z@c50oMK!_i6bLC)gy8)5Ip3XlEcq|#TaFjJ@M8YjmxR!G?iLS=RS#oaj^kAvdvSb( z<8L^A!f^#hpk|VoDpEwYh{K)YSoqio&4h$K=S2;E(DS-zVHE{pkth;*_)Zn`MFqag z#2k^UoS7h|;jC4Z!)+#xr3h;{dee8}{|F`2AtGKRiP2(|7@}}2&a1y-@oNOaxl@e9 zF#^XZ<@YG~!OR_e$d=CZV3i|&ZO76-Jb4y%A_&hw?@66JZK_3aqWr5C=(+#D)Ojhi zOUARqSm+q9XhAwz@SF4;p~&!HSeW64&JKaDqj1&=A946UQt_LN-%gFO?sIN)!(tr! zA99ap3l=puRN-*ziit^!n;X<47{9-R+ymFe8;9zy8-7PIrt_*F`X+yYSXzM7re|UT zG9_7(HIi22t@YQW<4Wa=2bJq(&`ib^n=eWP?x^F)6vbj8u9}aAt~{j#i*j-8(YvH? zd?cx}b)DytcV!cnxXKOj-gtT|BR9*pauCSt)VX; zY$SxROcMT4S-{E@VZwi6`nZPf%5M)z#`AHys?HCWMdF@?hrHx>h*Km-wWw0`wzLQpI4w4uFrpw_wYjceqa87I(;7c(INn|4E#IguUq&^j#L{vOt#wx-8ITfi4SlS)j`TT^8uFK$iu& zEYM|vE(>&7pvwYX7U;4-mj${k&}D%x3v^ka%K}{%=(0eU1-dNIWq~dWbXlOw0$mp9 zvOt#wx-8ITfi4SlS)j`TT^8uFK$iu&EYM|vE(>&7pvwYX7U;4-mj${k&}D%x3v^ka z%K}{%`2Up!uy_94g0eBj^mMB+E*=}>#|d+BDQ&2aU5&Aw?;_{+=c-KE=K+g@JFqdx zGJn5r*m=bHIr232WW~>E{`x;?QhbuX@YkDtCn(<&e3O-Lt8W_4!VT>u!NV|stvCvw zX>OqKGAWD+w|5%>c`1&~aQh3kF0lAVRC}+|t@c{uS>y4TcCF@d`46;$xpN%E+i}>R zYi{uT9r;n5Uk$nTcjUj|{M!E_*CFCRKu&w!+%En|$T$BN|2D|CK(4!u{}7xjgnS$1 z)A4QbH&lDB@>s21qp6`3caARz?l;5T_2;o~F@7ic>#BdxT?5>OY-v_r|CsV$-2DP~ zcf#EWglG93cccgHX7do--R@eGJQniJkduy`^`^X#3HeUQQ}EmDudmjw(yabH-Iu}b zMYxTI+uzfP;@Jjw^cjRhwZ;70`6cD?+2*VX$=S0enc6TMiw=!tpLg`1|dLpP^TGIrm#~x*;Zeju7g8L=yID zaeq|#9403_svnXM2W*$z{u96njPFt%g84Y2y5@ZMGd->SW?G57Cxk{5o#0x=W5KrWZn**ett`F-u#GY0 z?|kOo1pk$cDZke+PJw(g<8<(AjI+Rd7*pHuA>#+YM;PaW8yVB}7A!rKA5Dy@{A^-O zW4sakESUCNBKd3J*BQSD-V3IBjO1T{4}z)9 zCjJNbBd}Ute+4%&_t-M=)lw@HLjywl7U4Ssl>}YC zEasld&o&l5*|UW)*>gLK&$;=LJ3O*yIt!2NISH($m+U!}almcTw~YBGeWx=f{p^g5 zo&1ygrlwe^$vwq?naTHbl2dwS2D|k=2DxLPo4*7H4RZ6>U@PMvz&VVm zkGh`mzsY|uxBn~PolJfm{4HaR2JtiY0Y~29_8$PYGB$v>Fzyfjfbk%(DbnqK2)Kpu z2(Tf_EguWcVfvcEnM`g2*D}rkA7gwscxJRay!*j*jPt>#7|#Vq4tBdQ1KSxd2Jc~P z2dBrl-LC;(X8NuJ*D(1e@Daw(gF}Y6{l5%8#&`$VZ>U>d4>mD=7rdVFhu}uWAAz;Q z-2RV&6B&OA{s8YoLAJw35+}hGOx^y=*u?7W6ALn-O z1Kz?o0DOwE0h}H0cHf`mOy7avZA=~m{+97@aL{nK|1sc9#%6F0V;lG=;|#E2gxmk! z;6ldtgSRuz2VZ797i{e9_P+pZ9qHyu@D|3)!M`wG4UW9i?S37&g7GHs5ysDh^`qSG zUk1-)yaT+MaXt71<9EUNOy2|G)&zHWN5G|{-TWE&6yxJy+Zea}BzOw~xBN7? zmNB-c7urO({0i8{_&RtCV~q!x>FW(X!Q|N9Rz%$84zCy3&Nvi&p7B6%Y#+D#!Qf?# zseReR>gPDf{qW8prTC!yi~{drd>2@RxaCP;E8|pf4dV>3wx8SmG_Z~Fec%?xx!{OU zxBCad`HZRki|px^&x3qBlb3_fGhPgi#e0p^^ehJ(jBZ{9u4Vip7RG16N0`3<21l~?`U*IQaXWY!V+kFtos7M}M;ROF`my{*{l7*QUpKfv z#@q){$BnhueZdCC;ox+}QQ&;WvEa>&M}g}Zj{~1#oD9CsI2|0z+It#L7<;+xITdmn zliv&8&Nvs`z_<{c!}zy1ZT zW%4WF?ToL38yM3|OO7)30XH%Z0H0uN0RMw=fAD$6gTPvoJN-kzJsFPx$1olX9>>@M z&SIPjp3XQE{1D@Nz@>~I06)sO09?zs7`%ybId~i6CFGvj(+;j@@-^Uh82!1yWf zr;N9NPcVK3Y-Ii49pGb({{+^Dxb3$WoXxlp)!&w2xBPv`H!=Aka1iVN{slap@#kO% z<1fLnq3-Zbf-4w*58lW4C-8N~=fH{m-Tp6tryJc&_xlrBf2gkV4+rNneG|Zbtp7U>Y-MZ(pJJQ_ z4q^S@OmH^iyTO+k&jgQP{nOdtLdJz)JLCD_J&Y^BkqyrKt$5*yp!<_IQ2(NsEB9mR z{-nn^_x;)xaQ{3w&?SEc{3dvii+6&*1grOp4}njE)%&@B2VVk5xZIxu_d@wsS@;Su z7OdVs4hE-!;Y`sd8ax%O>Ng&IA6V6g?nie=_^Lb`@_9^N1YQnS!+#XK4jkeN|4Hx; zu))RK!H2+Vcn83rFg^}$Vtg8W60GWb9sDEX02tz*U^RTYU*3z^YY^lfCU<(qf_s5` zy7b8e4`K2G@OZFl?xc;00jS9$$c$GyW004y>l1?&lAN zzN)<)kUs^v`aGapHz8gHUrCmGZ8gS!yF zYCn2@Fb%ARN6!ytF{bASMPSuFk0ZQCz@aYvUINqmh^;Q(173&mM68Sd295*Ibnyi+ zy~9{_uZ5y-V!WbqIQRnC+jh zcSHZV(#3xRzl#318va%A707d3^4=&2tH7l$P6X4ttxYbT1b$(xJG|N89f|JrtpL+| zt<~`BzzZ>6QT;c9_kz=1;kAP$j7KtEJg5ik1-7|(GI$Djri&MW>7ChX_)mdHVmzXT z_dfUv+?!nP&x5NVSHm|1p?(9a;akD|?cZS!w*a7|<+E?{@1qTa}jO(k)M}WJr>zxHYgXeK zikjYguId{Hp2zgh0lx~4b@_iBOz%Ed-Tx8%1MH{r|A2cVzpL&$z;OuQ20z05>w2R;WIPi5Pq?pe#g_yAe2hE%Qg9XeFRK23 z02hG~ta82gfNuZBsm*0>+um@O`Tfie(_z!^#Sa@r}lUR7W!M&OM zI9OuxYv5f>-Vg8Be3r>=;Llln`QW`QJvHD%(67#wzOCR~+@Djg$06_zrvE>{|Abt% zj~s&b4E5tCm;Ye!71Vzw7Y_$Nh5B0M4DjE;*)I74@DHqhUk8q2_0gN)8LYnl4BQ*_ zUA4=9GdLLKOAY@Tcp9!}rAr>%5Bi}zmb!QtxMI8W`cQv#47dp8G0`QT3cd^d>qr;R z1*;#L4?xc|9ZAg%&U2EW=L7mwH{0QU=Oj0;23JgWvjHA|Mt?)~pMW2Co85d5_+J(` zn^4aDSbX6Q6Ws3KfIO1%C(v&h(~ri- zGnu>|?$@$Gwz-+}xDV;b)|7=HkHEW5rm-mPT(XUI=6E`&b2nLafB4NP!A2-qMp2ow=7}I$8WyW8@{c*;xBK{LBei|?Pr@O=Z8t$!(X*^ud@@os^ z#~9B;cv&nz(s($C<>#N_K9=!$@G{0U9*)g$$A1xW6XP<3U&+F!@p2ZEJK+9a#x#DO z&G;tdWsGS&y@Ih89r0SmG``-**az~>jA^`G$5;>f8;oiE{VCIz#^3c!-V^TkF{bf& z1LF|Lk20q5c_ZU+$iHSx?xHJohYEP4B(1=RGK2s{2ClXRyD@i@_@QU=-JSd&fxME*>3Mez<7X+LDemwn{9-1j`hFQ>s?TZ} zAL$g|-#hV7;8qs?IdDXlJH89x>5P^6k<2|kKiwAQy8z)CU`MJihJp8E zJ{=IG5ec2rL-W)8?sn@(`S};7FQrdA%`K<&1u>@d6*H#v*_eMyUnXPfFD+y4DZQ;s zPU&?pru6EVdrGf?F{O73+}FV!rFSa$5y(}}?UdeSop@s>rt)}#+2c9Li|=!%pXL|o zX1bZ?@02p8`7tewX?~00ez$v?-%`Pt=Cd4QO!HZE54hb^e>G&5n+?z}gy~2295=%) zr}AZId_Uy-7*ly`Wla6i$a~%XmGZ}!`lFi}Q-8FDG4(%7nSH3dwlMvu|G9<9slTab z_M!e|C1ZM?cZxCfCqtNhD8B^W`BiRZiYU7 zkgM(gB(U0k9qN>Ssr+u6?T(M?>yUgm)BNW`##DZPnd6oxz<)MNKjp9UOiuahY?0eN z<)6fd+)Vi=n=$2|2N+ZS$!ARCnMI5#Kdoj=`KOjKjbEN)O!=vfF^yl|VEhU6-_Gno z*Dr>ppRQLaW4d0O8B_ak7s4~(Tebf*Fq|n&{hL`}^?FeMrU0z=&!~U%Fqrpm)-dfb!i>km`=gz%|NnI2Q=Rx?Czg$f*!7|It%p%1)cfG@ zPE2;#hxnbYoc){3xo)QNU&(lg(dm-@Q+VWm8Ivb~w=<^vw!7FJ9_6?6d2YTRa^rkA zQ+<}nnDXP@j440f%UH>ej43~@XH5BNGh@n6FEgh4YA0jLUtcr*slI4sO!?~?W6EDc zS^B6xn8}#(+XjS>Xl~`VXTj?Ar~LK`W6E!DGWVm6@aX!e_TB@z^OW;?9b-)Pu3zAm zlf6$dCVPKT=9ZJae`QSe^ecDEseA`9rt)oMOyxV0G3A$#61RUU??aiK?Ax={Ehqa< zXH4b!2xF>`&od_bk6`H``_Exa_U?xGxV?kHYJE%g4r6k%cNADH?^M2rF`i&VfUb{f z{}GToPdV*>H)BfQLyReXix^Y-Y8g}do?}eu+s2sE^E_D1FEn0!m2tKa4qPA7kNP`D zn131%9IbHcOXC6ELO0WRAeJ$;CpFBy0pZoN@F+huGCAcRJ@ZfHGl4PXr+mhgpXwM> zerjY)`RQMbDL)-!@l$^CS>)EA?ENj1lf4a0KeBfuV=ABP8IygR5FZT_)b`-t;1Cy6 ze(^FJoL!{u#dm)-QIu{{U=cOyiAZEPNVo zG%_|o9>kdHFCEj5@|z!H%5Ra3DZf=Sru?;uG3BRij43}QviOwyr%X=m!x6@GfAlNH zbbs^|W4a%DnK9k()N=cPYZ?F92syJ4^;d%!Q~u3o`ceI0XH50ow~Q%2Ygzn95&jqZ zn;SObJoP{S4$gV6xnZ}9FM>aSJkZ76!f-$Bedqmla^DwhhCJLQj|N{s_-cRWF7Rcz zH@W0#;J-0>9=IBEHT-h$DkgsnJmLdqd7}7U274g=YWVMhgBhOy2O+!!SA0K!e`4X? z06z^mhHVH<65XKqQ%pVx{2b)eA0zpA@T*Mz0C+p(ln+V15WJVkp8$Wvcsn?q>9Ysi z0H*qZ{C^BqKWcrPkMuatNrK9M!xA^sdZ+ZIZl?7_M;X(4oo&n9avHBjKH_E?k7hHb z@#rSTRK9Cj{4_q@&g3*cJ<6EM>oMk@%IkH;G`<+Y^f$nL1e2R2)c;IQ<@E?->dzfx zOzlG^ORv%%FsAZa$ik=ke><}WjW1)E{xrVKVNB!6EsSYAxs$Onzm74L&r^)4Jg#T) zQ+aG;OyyCq^iX^9IsB7d)b`{jusR<2ALNfB_>XkS&w-~Py>=IC2M945;i=F6`heAs znx7&cbzgsq=Q7hb>Nf7DGxwAqsu`325sdS|GZ`mz3eVPwkHGyg=AOciP`RxP7l;2D&KC1s`GN%0358)x$TlsGw zSndBdz`#%G~>PO9g=_}p#Bzwd%{VDyKOg;|& zr+~>Fm521(gxA2_)Ai6+|2F(WCa3U^Fuw0L;n|sg3U41{y1wTblU_lLDg0{2bUltR zp4%zDrJZ3+on$GZRx~kI`LKTR#$wKU;PIPF`vaxyr>gD+KE?p;y-la z&5Q#O-ZsWTVD&@gExZ%QcVcTNrvAY(79QoV?TpEuA26oz(_4&FJB4=y@)jni`ql85 zJ3ml=<_Ke|Z_hKP{G?m!c2DCI?c;8y^_-cEQ^7Us+;Upa*}|Cee`bwaPWkUBV*})0 zF?~(QUlB|ns;`eRrt!mN#*{xDjA{Jf$Mh%rr7@=Q!e+*FKU&Aqqs-4|Oy%_y(~ssS z)Uou@e1l&Y&m4&P8;mLc&t&PP{QnhWY7bf%Q+YT8|I|%U`y-dYYWbLr@I^y&1I&or zE{Vm&t`FtE)t#8~gW(Tu`%``h+2Cf%4>K84eNoBW)BOeAdbfMpuOpE$T|dFx)Abv{ z!lU{jgvrUC%NV~3u3=mTj$q-FeQb<3B7J^+-TPC#b({3&Y;x;M`V}*M-h+D&*pJ39 zWWPUygBgF(DLlHLZ)f3=ed-xg_!W#3z}1Yu>J%Q;M-5E=Gx#WDl7GRtwUd9^f5PyT zJALhtXEUbt^2->@gHT^HruE@R8GA$iEn_`c`?Nd!Uf@W^pH zPxd;_(nt0>#hBL9>X>_44;jK4;m0zj{B@c6r}c!>nVi-K7Bl_~Y-crj6Dw{E_uc~HD>!-Fc zruySmFoIR;56VwFnLOEy`_*8&4zetXFDLz$$^8-LJ|r6BX%~}wlIK6;&L8i>e*qYm zSqbl>PE77;pFxQ6kwgr_D{?V~XM?@f57l4fp7t7ao|D9P2=7@i?dwABvu@*__83&% z=iWw6dkm`b(%Z;sk3m&#zm1&s7*yp?+(u4&465?F+sJ8;K~=u}HgeiyP?b~v;{5Y& ze)~4=X^%nG{Rg*^)82xr{L|aWX-`2_{?%>dw3nbNr|Yq-6VqOTs{Fg#_@})DRr%@L z$Z7vTRZiiDyx`^wo!qyBV<4ye9Dw}ee+T*#;2;-=fJcCPyEqPPXY%pjd?wEZ*E4wm zcoUO90&ZdQ_245+{svh8qC5V*;LA+@7jPt#e+iBNqgqz<{~2sz@=M@ECijZO^H3)5 z3C;$q>5Bo^G5L6KHIvT(H!^u4cn_053LYt%8{(l)Andso{2;i|#m|A)c{tZ6kbEDw z3B1Q8|0{TvC&r&>=SluOxIpI|j}l)7-{0MNy@)%&qb2A3apG=Km@kg}?&%7zA9xLz z>_hSx@DpI_{}7MuRUUbj!P+)WV zoZa0A&WnA{neHZzAIL*dG2jIweh`t68;B4wkwhcvgbPuVAR$Vwf(&pk-1vy$qCw%J z$^BQYs=aIPv%3fT`=)#UwN|aFTJ_vjb632>%Ga%ko|DLCjaupG5y5xM|nBZ-bwM zXFcBUoqQh6;}hUpJ%648e;&E)Ux>W{xDWd@1HH11 zJnZuKN%)6vzT(L_>`8e)1wRYZ91VXCW`pm^(+Cjx-@@zhkCQ(RZ-TWy?pN3gpSI+R zCy%iD{~JCN`GMBni*Vtgy?ZqNlEQz$w;aBA&o>E{^1YFYzLxa|ZZdone8HQN@|_Id zuwD0WME?x zPsPgbgFkgV<+bJe8hqOcS3G$la`DeM;3tks{QYD21;GMi5 zZDu|e-v4xFb^Ni`rgs!P4DYb~+wgOg&)Ity{1SYem2ZR}^~%2kzLod0mX$Z)QPP+C zlJu^D&qlu0@}2M#_|w_{I{Yf{gRZ@NAAT7oyC(jN@CBqN=N)42U^?0|kN*pNI_=Hn zZvd`)`Fj^U>b1{J@C}?7NqZD~=i~4n zP~Wcne+0h){ol3vUx#0SsRonY58y{BpX*OA!uK4R^zUE6OBmk=tp1YU!5^gO{BsC= z5B_uG@lo(ql-K$5t?+Y{$K}5WKYmV<-n-$;&r9-u0ema{+1bAYKIUTjH|e*X~uK5{po{3SepVUpfM@R6{K{~h?<#9wFaJqzDT`8Qd9 z4L-&5$8mj(FJ5}5z?Z)-@n1juk|*B;KXLxvJ(pU0=fbz6-?3bRuO+`bEYHEuk=~7# zuZHVyPW=4|_&(}ugOz_8ejI;pxBNx;B=k31{x&?ZE}4IyfzQ~mch9($zXX3~ebW99 zVju6SpEfk6Y0D5dn_9ahm9ole=2+o2JuF+xRC5 zlfNr07vaY}f3Jrh-IC<*V)zU2iB|su@N4*It>s(bU-J0_SAU;}k7WM8(8|9JzjC*Z zukt?gf8hTMABbFdDULe%oF>a+E^`)2IDexwb$KWAPzX9*|(*Fc}&-;`0&u8ExKbWldz63vV zbuu3O9lY$?q`sbpw=mzl-Hgs_-2nEf!zv#)IfsgU*9d;)Dm-gkxm$$$-eop(d^uKq)+hOTH!W-fBu&b|W_)OT<&&S}? zJpI3fZ<^5 zT>G1a|J_UPWAJ744=4Zc@ReTtuflU)dAJy*e8cdeo_r^~zZbs_ zKXOgd|E`43yf^Xh9q<6`{P{3^n#VtdPxSQP@^1S7j>Ny4;F>3&hAUqDkH8mt{O9my zPyZSCpq+`mL)OwBkuSIP|J(4Fyz;Gs?}c6ch46Ph`L*yjJ^4NGp;Hiw>!okNFR&hESTpJU6MXWQ6MsAd55O`$NdNg6e0e2# zUpSbB>rbcl?)i_U8vkwZPpZj!q6puL{thc2fp@ar{vHM;{rAGBBVTXRpAq>dllFBz zd@a1(%5Q`3#{X|!s`>c}eBu40d<=e&_o441m-nHk;N8eiv-&Th<&%7Sq6UrKGDigg->cE`5%Jc2k&p?8{q(U`I&&vfnEQrz!#C;xmJG` zz6t-VwfrIYY0_iZHs!qqJ|4Nt&zL-;j#z}ov2{1SYy z{p>L?d7fT%^trKF4Lb_wwV4q2=8ytgGGNEd>iuRR(?Jl z(mz~#sl!*n7a|vbT@4SRe~{I`2|jE#(Z35m1$O#hf)9XQ`}%wMX|MnN06xf*{~NsI z?5X+{gRF za_hfu!Y^Ny_;)XS5&S7@?=|>o>|bK_PoQJma%Ga-P;w{_cRUy(TIDU&F`1Eo<*F_+{9Y?|Jwt%J1s$x6Y>j!uMMJ{Bi zSboSp{y4O7mgP4XKDe;K@&SeqDU1t0tnnp(p_OZYI-(F+mi!!9cw^!BEFWq3u);N# z)&Ajy8!i8qk-wqv2bK>ud{E)DmJc(0VBtRa_dm3E4_J`%gRjE3di;pdzv4-eA3=Zp zJNRh&uj7A&ufHvsPre6#iT&yWQIP)qEPU8UlK1`B;OFQcu6>`lnf8AD-aU7tFa2vZ zd=c_F%NN5hkRQjpMW6onb}PRD9=s{(Kexln=#Q6J`MvN>weMCOz{P)s- zeq6Ya$ZvtWHz(uAo$%klq9y+M9Q>HaKZcj#{}ZhICD`AOU9z=MSdHAZ--BSkf1Ute zhTM%GC&B)CUSEcX;oDhXO8rWHHo}Fa{NqQ;caAVen)2%i1m|b?VqvfRGw^XR)(L3{q%nZ`~9J?g8!|qQ&>?cbxMU5lkIk4{ph-#8w)GS&3Zj-h$NisP6ty_ zsU8;e|IJ&`DMiy^Crv@4MSVVQ!tMEbr!>jmnRX}AC;eNPuFbb*+AGS1QmfJp zTBWERM$p?kD^?aN)po1YDbJXY$x=J)FN&zLqA2pdf&>i?5j0tC8PQ~SYRX0LTWOSx zs`)h_yh?tpmS1ZM+jj2QJhpXoeXwEY){z}!+qMQP3scRgUg~HngM}z8RWvh$gfC~P$wZE^BUsZptg0d1gsSx~A} zqOdLQwZY=$mQ+h=5~WhT*)=s}rR~{LE66&N$T+UQurWx)QP}B5jbK-)*2Rh@QZQnZ zuH;Hgbvsp4w_a@p+Fm-^=qfAvR#F-AhuV-oRD}GY4&=`o^G7wL)(DeolRv5`l_jK# zMO7)P3ftErE2>ISRaC@DkBIs$sbaq>_N(H6stl;gfT|3r%7Ch9*q|y7s^XvxRK-D6 zT%{_jRArT_tWuR#s-m!36<4d`YE@iqWvV!&DnqI=q$)$IGNdZ@w<@kt#Wkw9Miti> zm7@B-sJ<_%?~CgDqWWGvT2$W`)%Qj9eNla1RNoh^rux39zAvipi|TtTQr{QV_xuN? zQWHh>eNla1RNoiX_eJ%6QGH)j-&_0Y`=a{3sJ<@_nljp?O+htDO;Hon^fWn5O%v0! zG$~Cf@r$o<;R>QGHxg9~affMUza?nsj6mEvl!B>gl3-x~QHms;7(U>7sgCE2yacE~>wa z>hGfZyQuyys=tfs@1pv9`3#k?9143#=`ht*Jkv<`$R-|u03R;mx=_wMXwxq`hsV(U_LTXETkdTe8 zwzRH`(wUHHl^3N`38@w7TtaF^I+>7K(axq7)342;UxrT>G1@BnWfT=MwzTTB=CtCp z-n7EBzO=fuwzRUeuC%JOrnI88p0sAPMzkih2GsNFarLx%SUsyAHHA<|ssq(=>M(Vb zI!GO(4pB$ofUToD&f7MAHvdocmeGlvwFqs$cWKC+krSA=Tw+?u(ac*gG4teT<}I0+ zoN_dC7j=2-S~_WObf&nRz`PPM)#YgBm57NfM>DTPOlUcpc_m`H?bW2|<^<-Ih_;)f znO7p(caCOWiRc44nt3InpX6xfm59F7tI1@Z6PQ;bCj1=Dyb`e}$kEIz(Hi?Y6qL$k zSy~76khjm=z@QSgJJp7H%~?pHQ>xZtS*_Nb<-Mod?&JgorFNU8eYsglQcEHPrEX`Y z8C9>y6&jn($XT5Xr>l*iE$%1(4mv_TPIkuY$ zRFzKC#VGTdF&(DM;D_N7DREG%Uf!)%s-5|u)oj*m(Mow%7L76a8^o9j<07PTRIApj zvA@f;QnenK-{$p+H`kI^_65X&Rg)bC>$-(Bt<%FwT6cD`RKCoMYuLWL^#m`LJ&o9- zk)K0Vo{F0FI1S$JJG}2{+s+ToW-ApXug#ZLqbE}t^F4Bx>5N{Bj!@kd(lBeapedUh z`&6Kr&hJ}^x8|go+f4T+X3}-WO`X^tJQ%5>t-OfRjl1JO?UO1?DPwUaKffW9QFyA(k@0PI^e z?)i(Trs{JcJqE(X^k%D_nMzcebrqg5{C(O&8Czi)J$*>;J zRN`5twm{s|VsEV!#nXcm+3qpTHrE0gjcz?FYJ{EHW)zR*4Ysp`b|-APJTzOOZhQvm z9-9r%+GW#shOOXv*#*ZSLsf_Qx*ReRI@61&9K5)Jew(6haYdzlVed8rNiRLWNggQ zH0xPrnnur3Wgp72gmziYE^K9W-E7Hu0}H^g6a`G7)A3xHFU|H+Piv++Jri_hSX0k5 zYjICmP+>7k&3YJAnsOMBmMs?Fbn=`^u-#DKZWfkjrV-EY*1$sk%4vq} zAgs4|ftqYq;kE1+U>@2^mp4>bpFPxn!EjYdQ^n%RFQ`i~v z50liTaru2wY67LTwap1*XU?sslY^*2tJ|hCHj@yhP%_Zlol@+o<$9baJCX~|; zb_sP?QFjyVzNYRTnms|?C)E8xv#Tfv51kcq@W5}QFNY1C6>`|XZ}Y6Xth&3ZyQ;dI zs=KJVd#bypx?8IIqq;Au`=RWEx}CeR^}+U?>o$*#1e=B@Hu=FjMkjV?pq>S@ZYWjQ z0`iE>MvthfW-T2sFGtpT;@ILekWB*)e`{4H3OSMNR^1UH?`+exbVy^;g|K$%It4kL zV{cwg@67K3F=7-FeZO|BT{-@)mF5Gxt|Iw@EW%{M5(9n=If-|v$)Tu;vY=vqsxH)? za!PiG3hRa^Mpq34!<)Bn8eTWL!||4F>w_J`>o$*a25(9%e}Yn@%Hg><$>3D8(UHSi z1MxY3w>?=2%H=A*>TZEebDpN>wB=$ice^ic>+g-ZIrB zk8*@=QnZ0mN?JZ=cBX>l7=vdvz4@)->@{;+-L?q@DwP4YK}D+ zvZhMqFehi5*+m;$pX5wAM{&#W)}0%MM|SKS9~}=Sc8rg0-Kf^Llp0-(%eG#W6L0(Y zw)Hzlb_5$HQn9v2%}Tf2$%!x#M%7X+M{pkZb0*eFqQS)I_}K7fXRtfRRLg#5*kH5K zv|$^dqlg(j3TdUF+Nj#MB_}YQmdgxb)F{A%qa*`+^wB4K_-d{T%Syh&5HQDD2Cg;s?*%LPiYoWZ~wR$K-xg zi)%%sUTp`wfL7>3>}>jm(jIGNJlL8{7r2$hG`o8rQv7hbRF-QyJj(!HtG4Az5M<_9 z9_7+cosC}^d_mIy#CPR6bB%`)XjfQPW&p3Znr3A`6V`ZFX0~Kd5!G34QV}2#?VGvm zh)0r^WjxermYXuLHASu2#x!sFgwM^-lq6hcxGnbySf|Ln3I1^Q zQL9c)m&(qnKtn$EcuEo_XI_BgRVI*^f`#W7Xi#V|; zrt2;H(3(HJ-RX+o2(~tPQfuu_R4bd?Wai0afTu>;JdFfZCMjlZdI=TTWKHJ>&7~=r ztaj?S*s7G9)6=yuO<9$w*>2ZM?9aG3E+C^=Vev58EYXkRG`*mVayTES%40@Y3#U3R zHF?g6BlCh}b7LT*z!Sad|bmp?GHzrL#mCf{7bAz$J$h={Wx`H5Xo;2Qpg3qma zA8B7cqOErz*)?P9OxC>S?qblz_+(gUH?-T*HKSVC@S{qbb<5v!siAT0`ncRA)zn&9 z?pc~NQo*E>=FAeiJLJUeFr=|}qa=4UV##jMWtB-z<7dKM@oSapu6nZ)bJqpf4VxK8 zA#*7+==QA=BOB$~rMX zPeLxJa@kg1z?cgf)14WWPPOd#iuG2h8U>A}yvH|ZW3id;y$qx^DwTFguPVk7(?gLA zy|rdz`qFyKjKXA~>5A3hn3Uxw6_0x>rgZG$2T7^Os=N?NLkK%!p%cwJ7fJh0u{5oX z;zEXLtjUR)xhkm>Lo&gz2U&IVf|)a9ViDi7WMO(1_W<2F^Gp5KE^KA`X-2XSO-0wZ z(Mp!heNVHY8Oj9WZh&ftltQYD_Z{~-Y_Jt#`T8ywA0mtY{yoOEqPJ%)6BdH^nq#hMf;>0DG_;eb+dUCUJYqvpQXU*Mid9bSfbD&OPOL`X-ROfi0qE3=IoC2D;TYP3Ln5kWKV;%9P1-lM#3o_Xi z$VjY1^FwJ|Q>CtE*{k%-D#BEtTXJY;(gk3~sA>JQ1u9AJNCz#>Bq)&^xhqMluC|*E zGaZE{P%E{@9-Fsx!4z*nVb}<|EqO0DYw}iemNk?tz)TY`D>2zelwmCOww!cgdr#Y4 zf6u#ZY{zgj513KZyKC%Z$yH+Sr98(4vP_9ebUw4cX?`_!)miOvqg))oUPMR!qQ;z1 zk(E@VQlj6p_bcm4DUI7YFrX7h5LUP?+PB8*@-ou1N-3BeyAwOjW+#%tfbljSP<631 zl;YO>kmMvDg=9Sxtecpi@lDIR-ApAcWNZrc?i^juou$jge8zJ-t+{Ig@@^W{*>|?5 zLT(Fep)>QqP2OsNL6;U*VX#lwEHzCf#$obOkkr#89W$D@Yqmm@3;88oh+4&CBWUn22Aa_7@FlAu(sVo$j)VdAGk7uJs}UtE?S(d0IrlOE%}C9)p{O~>;C zU7liFsaog_U06R=hWv=>GAyFw+Dfb%r?BNQZa5!brt297xnm!+x3ivWUhdV z$>Xx^Qz4~*6Ad?B8f#k?y(PO!`R0;1U0i^=z8KhsLpyih4J zDhn1OPjA68wgKBX*)=ks?1qE9zHri#T>eM_qdA`;(%T^R2v>I`W~&wU(M>G5ejb#o5jVC1dnTHMn=2%q zo^Ann0cH=J@z!kp>#Y;sujCqvDzOC{m=yFZ&Fq=8Hsf_JtDr&V#BJO5(XGM6@Yac7 z^!y#;!|S$fULW-JZ9ks_7deni#GA)9ZrTy_t;!LNk8a$#d3apou~8B662&`x5;tQy zPsKBzCr%|HMPAT&TIiWg3sMI4rb(wZ8bw@TaWugm<$Ae|zg+R+gf2`bbE~3^|Jf8y*sYitVJX2 zCbvh-Rhc;JAnz#MaD1*OsHd3Lo?lYGlzJ&f%_Ny6cjBwD2GKZFGI_CK+qzssNd&NwmlO{6GhwT_q)xjH@(U`mUqhccTxZX=~qC>OTg+Z&`sf=#-X{<9PsMojb z(E&qdXG--)YS9KZ;kX54xx*bEil;=o@@pJSnqaJfzTAy)-W-vu(Z+`7qOo>1gklk6 z*nV$_iA+$I{nQbsvPwnnkfS2`bY9q^Ow68=bDre_kiv+$l`+|D>q(ruqS0xh>JB5d z!@1jHhD@8wbRlVoG`ehPe9cTRI@$KB?(l+$nGW+>t5r){tPP;Vbkp>4(KLfIC5(6h zlh1M@bY)`rH6Qlyg4m5SXI`QrJ98X}@O?pMH_>XPL$SPaj_ac=jLd>Hb1x|luT*8M zXD2TXk!;y}FL4-W3heywSyg9_06CJ1*_~ra0M*4ijAzEIh1?NnN4S{6w3y@UWi@rPFbQNho>ngu}u{h%PYlXuM6beAXimi8FKPR zgdRt>@M99F{&)Ge*5gZZJyn)UU*pC_Cpa@NUF0%{4vTn1l3q zxM3HY<51n8=RwOQS8X_{=a81VZkD+(B1-8p%Q)aF%4j-QqZyg`lJj7Hun=Wd1IZ{) znf&_(F3WP@)!;kZQWy53P_`S{PIWUvN}AcRq0Sn+XeInLjf}6;HOMUtnOF55>cqJt z!H7&o@<5Hty^#2%n9sHES{akv%Mq%zXQE2ApQo-~-KkUu%n@w*5)-G#CfHm-$_zDp zADFpC7u!}$ol&>L4p;f*V7jnN#U@beiwu}fl|H3+j!EPP0RNU zzMdcXo>2L>$|%eC5H8{S1r3;A@;#vPBj4{S-?=E?>&eeQu6VBN;5(3<_ z$c{%(eCmFjtVMu(7TI$2?AK8mRVTYTqxTNMY!k x-jxl$`;zciFf6u@;NQ>rr)`f1epW{K&l!Q;N?XE9+mVy@4Qmx>YiMaZytI|P>i3+PkuAre@B97d_t*II zktJQtJ@?$_oO|v$=ia$<|0PRBj^kM3k7sU1-#GSB?*hE{{+wrwXQlh z@!2F!{`!C^V)ECD%w?b55jfT0QLxzKv_EZst8xB%{YA zSv}`VW>0l^OEdF)E!^A8+zZ1@J}_7tInUwc7e}akPWTwEpV{|7fXz5x;&vF?*d{*Y zFWFMfbu#(c!TFH~np?{3qO+#OW5=~=H7zsq!Vd=6%u;FDQEsPt{W{;e>Q9fpkwSGo z8?-Bwd0fprCduaCRFx6A6&R#Owgi|5c(kgu=<44L@e$t7$+yLfU0pqo+{D;$H`m6> zKd)h)s*_yBd6w6FGe6)wW$&{P-^|Lb(+~Jc-h0Bwz0b`lc;7fD?Sm(L=J!~8%lcg2 zC0Nh9v&axJIeu06y4ND!KP^j)d8d^by%vA-Vz!>!-?--1qL2Cy`1tpjgX{3GnJGHN z;htX6agwo7w9B_zMCM>K@}wfsHY58KE1xYs=S%J5+aK~-Pc0NZB9l+YP;=FtMYD>( z=zq?~^)bh24~Lg8&=SZh*rt>OmvD~Y5?*{Duufo(4xjPFWq}SKcdE6K%CowCfd>M6 zp%2Eu9~;twTLQI3=Dx*&r+tP~TN=3tb6A5?L3PQt>a3n%ce-d4y@96#Vu4|{>0L*F zRhlFwzY#OyI(K7QgvsqOcjKXe(RsXPo6mTP6>kV^^RZKh8V$3#Q_K+rcfkpCEE*j% z=p2ce6gmNg()}^RFAfE)8YOF0f|4bPQdf7LXai3yup#iBK(BDTV1^ivHpZFTA{}PW z1Xc-#zOM&b!NJpwT|HghxnfOVYv4e^vp(}F7T79S#VKN?m?nR7@L3=CE^~B&zpkE> zC*|&kx~7V({2w(ov6j^q8Fm1%cNdCf5wz9$OfTn{BF+=f6__VqdZfs(?dp7hj z=4;3{dxh%e6ytVbYjZZgUFdDL3M82t;mS?f#-dGS=4XWco67iX`v;q{?cN4vUWco# zLPv87?-kx{t`@Q|_IwQr71Re6(83rq6CGbewcu}Ne2efX%3FlDo3qU=f^E~Kn+o|p z;jvAH#y;WrrWErkT$^L7srL%LU~maxu&*m$%n(gtPN&0}Cja+<<#`9NN*O-%(1S%QO=(Y+9~mi*nDLpd+8J)Fa|Yh$?wn3?yb z%8_A*%PlSvP5W%}=3(Z}4yVdjk5~?G^YLM#);OZJ_{xB#v*p{&&4(RgA<(kPEhD|+ zo4_oqn-~4_SgB)%QOa$8r+#(GRYkFWx2vV0*J6;~y1&K6*SvjKmLlwZHZnDGp=f-{3_J#hvqEe)w=28T6ce3W9!>O{U_5Y(`v(kU69~sW>bOZ4P1Lm>*7c2c|=zoxBY+D{zWoGSlm zh&4BfCRbgMxgHG~O8+a!l^VRML9W&4;6sMC6bEM@>-N-$v8#pb%jb;A-A{FKttPR2 zgOv}l3(n#^Xu0* zpWwDAr5B7cw@oYEV$bW0M^B@~EVUeEk!(Mce>pM@+*7U0TAz^j0)Loj&5gUAZnS$W z#>5b%f0>1&7RjT`hC@>Kki0{QvrLmH&Iut69pgThS|$ zHt`omsY@x%`1Nt&cLii8u8LKN>5*D7#lG^=;|-iAH(VjoH>=-j; zC$4T_m5t##ab-P|Z-G5K7n~5~!>%=)&+dRW|8>yeULB@VuifF~k9bSt(GK8#p>id2 za%-ymzv$0XG&)s|#YvW_@;~ELqjZ8^+fd6Y8AXzMsyq-sbo6k)!~ea0zxbft;dhNm zZ0#sXELHwAetO+uhnI5+j#39S`Z;it9yZC34nNt?cY2*nK4`gbpGZ+*4%61!t?#B zBQuu!#fR)OYKgOb@k;2hr{3e|@jplD&pq*gNIkzRUcTZpJB{OqFy_utPR5CEwwM4G#6q=mXjnhxB0G;Ogdj(c;TO%PjPoeYuL8BOG{B&9K zI;#E6(^T(6Xe$dhon9*5xb6mp(#gSBmwe=RD3q=}{h=}vTQ+fS6Oi!QTQ)HZJDK^( z@0Kq^8=Y&Owu;BO!0UMu(SHH-=SbsxJ_|m7xxCX(e9n##jX?b^WBvVT zfckp{X#7;6!NMOaTt2FBc`B*DTR`U(zgyw5@3b;r0@RaNKHh`>FMr(Rz9RgR{~U3- zxInPUzaOI4ZyYQ%ef6DoYNLEG*eF#ztzf$MW2(7Fsk!rGzxZ^mS2#KS*m}0N<;rb7 zcH+^GQ{@{6j$oEal^?)6leXZh_NC0u4tTF3OY!#lEl1&xoG3y$vwz@vVC~j*elAO3 zGt5%^60#VzqRqbQsOI=Omfu&SiD)%b#xkRCL zvSQ2n-%Rhliukwye3WW@T&(ahU%94N;o(t@hl(*Cd}rYyeAVhC9_~OR|8zPP zex-`!M|fw_2e>MF79{UN`TrHk>;)^Y^Vm-P z(YX%4m?g|D_RmXCtj$@;9NU(#nJhf#^d9`530}N*sf;N)Ri%7O)~V^IZI~NWiR3AL zDp9T>ovO7bbZUxHMtaRp(y2Oo_^RwAow^h~se#prorsVQNfFYaU&BTRC&=K<2xc6GUz^;6cP9N9*W7r94A%Dj-?it< zfpH0Z*k3uA*ww#oP5{hP3f%$_{{ZX9d*e;<86R9aS%`mp~B z(EM|}KC(dJAma3{Wo{GfMy>sLbFI}TzlEz4*5N$NXvuud0bf%!zUJY5`Xs&z{~!3e zX#!sy_}UBq0_{1g8-C*=o5-E8$qjLvd?kDsE}SC266YMT9=h@&Tz@)z>FxDoMl zR}T+rx5ocii1E-p1^965nMNtc+%hW>K!jZ$l?uVfCJ+&0kF1B<(+t7nb9zwPD_)0j7Qidmod)mUE}0Mk9}ZL(Y;kzm7GK(_a(HX2gsny7 z7yKs1+y*J2{BDY*!uMnHl31{ZIg6Jq7dNgd@K*^gTzBa}a9vALaFtNI5gwmW$|oB5 zlo!rlidkYk56>2{lP5KdKCTJ&Y&q%xPZtbOuBL944JExbiPE_Pkbc1OVjS`4o_I@--2G&ihcZAF87tlXjC!};V$ zg?s6(@O4thHVpsS%sJZPXS@+nv5UV|P5d z7;-K?iRer`W>4!JjeY>%a*9NszQCuflQy|&v`M5$kEq-{8W1VMJ1&_b6aO;7E#m#i-o{F_mv}N2SdbLiO(;N)QZ#U zwhM1t)Bk?;18m%XW!9RrO!;^_*CpCVqQF-3F4$&VO&93C{QP~}>VzNu&( z8X1?!Gb5@*Qo>xtU-}8HjuBf(MpO;lfY;APFe?tHyZIA@;JT5<0PoJ0jP6v);Qm`U z5&(Z2@L#?-b~>s_1H;R4k8L&qxU&ue4`Jx-SiqYsFlo&Nt{>DI) zxX4w7n9TzIEt0b-0PQ$9#ED)SbI4j<)D=XwVH>qs{?Io~yNtUGyIKOyd(20e%wvS6 zN*N0*9p?6VF1C|vGaNx~RjwQ2$}jOkCy;GCc{14Dj@kjS5qvlYo@=T?3#r4be4%^p zsYp|*Y#PpS&pZ_nv#J)k=Hj>i9$M%wJ9QeI)K=vp*7)sEj=SiT^PWS2n~)iN3w-8D z&U+nAH;LAHOzy?^bSXvt^RQ!q1(>F-G-Iq=tD3|{)cr?{D|d?m`p_%3Xz>?MHfgOj zXpLYLWWC&r zVY{pC<#ms(EnnVZeC(s0~zm7uB2_W@T(AQJMx_;SaBKl|ow2qSqd2h4`9X zn9Cy@^9w`=&Tz9`pw>J^;k;UJ1LqcCWmnj9{R`J_x38L;Dj&sF8R04Zg=mxJi)wpj z-S)MJ*_*sgbzZ)Pg*o)wjuA#WSOgukAfA=*BK_^edox~7RmnNxm;HH-^^GYW?gVql$VAG}D5IFJ;FD3iX)#Ip zgTY*PI%a6EJ-5n+vUMoy8(il$^f@5)^cZG9e~SG1kUEyiHz1CFjj_vm$?jv$L$7&c z!J8MSM9eg%n!U}Kqr;eMuo8g0w0uj9azxZ8;y;Z3J!YUWW)$5ko<+=GAw<^m?h8&- zAlKp*Du}D{N@!yUd|lAjZ}*GSY8NA0M)90Wm{HK&%$z3K2{}-PML?ScRHw{^D}1Qq zLSJ%fFG0p7Ro*#RDU=p0RBBjJBUh?wZef|Y-n!N%ZyaQDaV*wDWvN=(je{I4|F$Ku z9s_#4aftYS5Hg^C-~2PiKKKb^zeL}UD*d;RMqi%kF~4W3yHwmOY-igAe`AYM_p+f= zsMoI5rT*Ie6@tCakMVF@xp%$E)y97h`Celf^P7Y`S@5+MigaJyL_Wb3U>EBlPFd^R zW^c(hU;2lO0uGD?qx?OLek1x$czf6Xqo2Y5VeK)jwD9tiBe9-h@JxF1yU}?3%SsjN z48@nvSkZe$3$w0;mn+43mWx5V*J+bIacIXHD?EwYoW6$DMZS6tIm>wT*?4eO46>s> zP+y29^&<^AzTWk5g@z4Yh)TsAXU;FyScr=2frhI}9;hc84`?(JSg16}yL2jcI3Dea z8zUv!XDMC;EvOcXF73Ts<dDB3y+o<@V4kvd}zww^7-(C=(=B%68;~Qmwe%o;!D)%P8N4StL)&Kw0uAB29=#kB`QB8qYDK zj$hoOT<;eD)Ne&ErVWyg{t2X!5Z3kA!TCU{awJn6# zHZJ3=?hGXcNLYto$8y~n3U1@p;pee+z|yMlb?<1FVjn&j7`G4Kc!javZpIGS7~2ee z$yMx4o`&IfK{3BC9a+G1c$kLcInC=_%f&nFx#zH5T-#-?Htre0DE~>BLsOJCE*;(6 zV?r?GK4KXR0@ zcYny(g=rKU8O1UMe-#0n+y#mY(Jz`;oEoRkf#U2wLD6uEQi>IxuNuKB+1<=j5au>x z{VUAf$B+kiAmU@5tgu^oPYYKm@7C}_C(YbO#3wWgDLSHgYGkylhdBN3e$td(F`6?! z$BSf0@;e8-ehgi?BAu}>@FISv`<-hY$PZX+Owx440(rovF;b>{o~|Hnlb50&=k%4( zNN=t#;XMU?1!%btmVdR7JCAE#SL%jMehm_HNr!Lx^d_6g*BGU|x|QDJHC#;&R+{3` zn})l33|N)QP$=hCP0{cu0UnmV4DiiG=zl!=J6vf(4;BDt(mm35>Pw;@@p%0HXMTh^ z6m#%T(4VKWfj?en%JYlS$@1(U9Ur$(53BNIN%H&=a^mk`+;-$lrg!`-^nR8^Z<9jL zDxX5!o#6FG(EB57&m!=Drr%+c4}s!Dzr!Z)21W8auvRkE1wFPxi^l2Yf!crcfbaV;uFjOfoU>q7o`l&ShDZih z`J$vg&VPxqH}JX_H2-h52IGHZvaM-Fmi|mzgB%a8Jk!=}#+9nA$sbC#H5mW6`b=B% zi;;0#b3d*p{y#!2osjua*n^)zhkk?iPhVs#9sQs=AlWwC?!X$dpK~t$vsu#+)m`zW+HMw4-q`&IF@PkW@`1GMZKE7O4R!pIe(&9rTx;5U(W5D zg1x#W#n^#*l81|L}YCc^Z7^VE4nAd-9SzO`H5RP_<(g zcL^ErXqm$lGKLJHGd)|w5uX2WfB)EG1d864@%L}HGOmabA-8me%EZFDsU{ns*aV< z5RnfXxjk?qKLxqVuPJfSx%S+1vD>Gu5BfRwUI2tqp7qqstq zp>s4L!}!2g$?(q@=l4T?fBCK|!{of74f)^6zQzwhpZs^M%^;>D-%v`5Lr=mE9fn>^ zwnckED|3=vHprV0RjKh^x@L(wHG0o$1XDWF|va6W7 zlYAx0sgWINRQQK2U7N6_2Dt)=CE7#82L6LudkOpT`)4P&H#9Qd-m72Pp8G8A{T&&f ziR~@a+WU#tzvbVd_9$OX(Xdf6C_Q{bY0-loW}c;QDf0g)(Y)HXI@m|%Tvuwqp2|dP zX|RvfJ8ppV{mn#M7_Vny`R$~>k$pZJmMQYMPr;J8OG?KzyP~FM;PerM<-b^}^HC-uIMM zhjH2c5xcOMyhxKB#dxYWF;&q^WNy$_QC}u<#q+TDk5#5fmmoK`G2q7Ruz0u%>tUXH zYlJ*!)u&96hqS1f$r)G~Cb{Ot{)oO1*5tcvg-=wEF?^ui==DcvhmFnv1#8Z+qlk^qQw8kKGia>L`K2jx5zKW<)pq`gz;B~F);=2^T96< z9h!mf2hczAM=F%u8qJQmpm!U%ytvO*+t_fuU~p%G%Y1M-4O}h=2Lj|vC9S%!7m~?u z!LLUfyQ+Vq+9k*zJZJW)GN={DM{g(EAZ;6s)+o6Vi|k6u8({aZ(*JD5GtJTZ|93=~ zxqYed$5PMYkKvvQd9F5QMx%lfVO!+rD9r~n_7eK@GhltDAC@Bbg7)M&+<>(`LV^6S z(dcd9)QH~ydX#7p-7dVS|K9*jn!_j4-T4)Ctx0r!8r`SI=qBu?8}k*>9fdBGP0)n^ z=q~Il_D>h4!R8;!pQd?Sx5Tb}-)(QLg!{Fy!XJnS!r$7PV8L7OG;f?6=zR8J{I z&O(Hq3m+F*`hXWZH7VPdp=J9F$o7p!zd1PClcx0l@Aza!|Cdd`l z5=o{&C)606#@;CeEW^)v@+9^q#bAuSTEN z8MkSA=Ei&5es!!(#`bEoH94j-$VWk49c$lKqCty%i$*(v?Jp0IZ{LAfuwq&D`U>>i zAQui_Z!fF8K`2{688tulew1nBuoCUe@0->9MSy>?3OhJbPl?^LXm;?I)iojX8l$R=Qs z3w~*=k>5f*C&u!^eT?M*_wjM3t}HbW9wpW$`;fr50=i4%m~47-?hre7K=*(1@eRtl zyqY^4jm{XLIL(6HE^Sd^n3HBMWU6sM)gE6~z4ee)2f%^Qo;<|m;ho6NWPW16p&WzJ2+A_%30b|-JZXb)%Qm`(+&h5~mG&QT0 zqO8kLMU<9yt{SHqMw=`Wy*dHFU+qW0`(J|RC zPmzD4#M%(Vgq(vxb}1UC+KSDJXKs<-pO7PX4m8h}BS?|I3!48qM_`cutm)iH^w&y` zz#>2Y6*+=3jP1!fay#0X`XBQU2Kg1VkD z_?Z%eChV~XdfWy+?nVE$?_}&2=*%40XX>j<;Y(d#PLW%{*FsoSX9HFO1%n6PJ?@?4 zJ@D>5Gs7*Kcdur6dAWW>_3l*a%elJB>xh|{xxe~iJ+EZ&cG}MW0O16}jH;idm(THmMhGOKG zQGaO6k{u*oegPR|?@-qwlXcB1_ku2TZTU0n)%_5Dk>XU^wfDvFq4gA{I>eFa--d&V zl;6?TnG?R>bGs(nZL7Q+H2<^R=H*k$c%v9`Bzlp?`+*qoD`~tZY-~4VGF{W1gM22chDOyXnprtRA zmLApO<%AB}LX1U$7vVoqw^yT`?60t+nMpDj9U?6;%j=asBxJAwSds5TbXESzF49=6 z0NpcvpQYk;_S^-uhnK-7H7U|iwfncAPSThSzDd6mW0S_^0_Y+6t&`jMC*sBb+{SrH zZ5+_r7{;1#vhPD}w4)!?2F23(itV*){dfayIIxCVA<)>LE-b_fMphjwE5+!4Gj_M) z86S$xpRlvbh24pRV=+AJ|Inz?yPqksG3i^vCoRF4NW}1hvY$@fD`k}*M!VC{?sS3L zrgf7knm@ihruyU8D^dJ%(YE5>V=E`T{L`^<_$(rF6ELOy|J2{NG@FrVdmiSV$@)-- zcE3s=EJ{41`cnT^;&8LPWdCLthm!wQRvQ$=RDJlB66czsMU(Ym{}W%O51%83 z{LlI@C#j8HS{wgF{CK85WTGFW51XM6$$2KLO!2?k#@Y9CkY*2S`GAq=Cj*<6QS*k@ z2FafE?b^rHF+WAoH8qE2l^+M~sn{>*Xh`hbwa7b%IouCI9tYWydk{IBl-I2bE$5@XkYX!7t+2l!qr;r{_!LCf&LuOKTnY8o}&MnXn`cLC};|T4o zY}RNz#W8jd`cD{4+-qW$7lF%(YyDPvj*?NKNOvUqnX*=Gmi<~Dfq1%YCu1cTV;_QU zuzPP;b={VRhXl?e;Cz!slEHH!c>GrQLM0}>P#bwBv~v@pLfTi@8Tc$fp54BI3nQMp zKMnBmd%*Z&sY;pu=V>)QM-;oNZ|2>f1q?6HPA4nw1)!ZyYF3N(IayI}oxAwNMG=?M z7VUgPzE}B7doajy9S4=!eVxcYtA3>o?W=y}BZvi^Qohp5I|mA|s-30OOxV2VQFBTk z@n=8|gTp*T_oS*h3=TOA19BL=JU8|}c4L_3R}rHV-U*#}5%~NOx_vV+{|ukc#r&{E z(GyySS3M)z4MIHLg_g?ta{VqLm%JmVsnytOXk`J~VLEPQ4M#A~W6Wk^r)~3Mi+meS zJ7}@+zoVIoLq?jUl|5iq_I#P;pq4YB{q_l--oQARhqWvVeEQcQJF*ulCnXvu^T0_3 zIB^KMwbwzzOt_offqlZZaJG{1&aSN%4q<<=RbG!MG*j6NOm_v)ZUoxJeLFBUORAsz z4&rNb>EHX!K*uvo`e@bgN$m3_UApK|)lcr4v_HX$`}%X;g_t#6!qeDqf94K_iO6_> zj7iDfjzpit9tHBz&GO%rxH!@OBanwv83RTUdpR3;w*_~QXNL2YzEQ5i7*W>%)SRAG zJ^~K%!2#{mOYDBM%1qy`3mYBuI96_a)&mj^sPFJ?`;6O2`{Qxxxc|IZ`R^z!tznjE=K>lx{H)` z#p#kAcOaPGv0h-SDUbxkI#Dl4=PpDmv<~aTcrd)PuGD$~kF_1z$9*VpI>6PWNtw{7 z)X39;j{~+EWHaTf(IS)c@t>^CaP$LZo!g9EB!0;CTS>YfdJOx}zz6xTUEPHWFJ+Pd zUYs~-$S$dKa)Of>V##8S69>jAjkPC`hsco{aaVP!!iO!g0X2z>O$rx2{3necj&^8V z#1Ip%1rK*5@o_Ei7y%FWDtsjNVBZ}piX*pT#1WUf;Qni z1iCdyfa4S$rEewDcd%BLKssNVD9>$5JL5=m@-(zyQ7rdxbP-x$@1Olo)f|e(_&nzbx2y zJ=uP7xTi5;zlNi?Als0zU&jY%EW0%xlI_>04`WaBZ{u+~C#git$EhnO(Rdi=e#DrI zxo1m;J;sigeU+yS727O02TV#Se!0di4n=34{m!6lvGMO@MuS$vqzsL7TbxPNFU`lkU_K{4T>fD?SV!55W&0y@CGf<+kaTHOpJ zsh>^Qzjm?G&l!Z{wkm`bi}-E6H1yJ?^|A*wi^e#}ip&+QbKO8c59nv1P2%$VxW=Yk zQ?)@YJAyJMU4Z+#Vw#Nm2U>6^9O+m*`fu=!8E=7liqk*Hj^MF#9Oufc$+L!>ju$OAE<=bwzy{m*npg6RN13wPvIyy&y`affM7UJ;=p-C1Nh@X!7i z75#y%9kloF}|39p_}CUlzG~m@D(4CKp;5 zq&s`#(WgLp5$@@34!#<6e?9Q^&aZR(=SC<(qZOvF;ffc)ty`)Tv*yhZXU!*ntO}*i zptKmJ0!nAkr%V-xSE!v23o%(z>ghorc62QV1bWMp&>MZ0j{DCvMY0;(E~iY~kestL(` zAAJ~?9BEt{>g_zEUYb&`Evepy8B zQ%KTdqv$EAx93mjZ4bVw{ieKqVx0X2^vB29*J$=r#+f<_heuRf;S>do>3FmjyqP4o zHY&?T&0-bCoN5!@bK{ur3BxjJu6BJ6ycWSy*4)`+t> zO)1MjSqjRss+f}t=4$-+4HN&Hp|QEpJUUBpYQb~9loOSKY=KS;bYX;FK8Wbb-r1<0 zx)_A^P=C{4AySGtTOkx*v~jA13@#q;p}{2(vA?o|hH`8cQCmR;?S^CX9H+G8I8*(iEM!7dYqP zo1lDK3j|4@RI3qI^eJIA>hRn6h*PP-KA_ccYL`!-Mtf1lsU4X>t@JF^&QqunH!5#) zK#l6FyxCC0A~`heegM=G+$1#eaa=#HWB-HPr>c=EuNNx_S)?qDf{fTYK_OwgZMgYp z(_%UyGCD*(W8sG*IMof7)jGdMv#ftXy?bD9b5WW#|01pQ4=4?yvrq;UQpfyrw9?}!y%MD}QR<#QS1bJ~N>`wC0ZOap)BP1h;Rh&PEb)iw^B#pKWD(kN z-f4v&Li7Xh0_w_(T8#MED84&d*E43-)14d>b06GaWHBDHV)});>&@m z0N3gj+}C|}^P`qb_*j|6Pt}}{y0@Y()?C^b3SEuZpW#^8Scwx97oS6SQdfzD$*n_l zg34&mP%IvQ0lTI5;I##>oAFwM*Ts1K81u*Ys9vtvtnpFphE^s<^5h-; zTwIqJ)kU~&;;6nK=f4;*J0Wum8C6LJ;K5bk1eX&uKaxjfgg0e!mxfhO=x;-X5%tr* z;UD2nU5xy^FjaZ#Mwg%XSo_@S&FAM7_|c3 zgcqgylhBB<5lB88jS=$Mu2<^UD=4^wCig{{!O}6$=L1(4aIJzDb4l2$jiFBmFNh>Q ze~dmXl+<}?<8W03c__uE{2t{q$41@sq0-14(R!Y$uW#YE68v_4F?d^m<*rcw&T=<=xjcVEVP^OOGdUU(df;d%Ix8(k`yJS%bbbG>Boti?Id4T!c!oy0la%4PRm#MgaF*vA(iBg&ly)o6ZHA-AZsfRn| z404X5F&*~|kdBu^^0G2kZ-BQ$x~9&!s~|Pf3e_73;T!4NO6AJG;hRPJr=}HejoG_| zuEnE6iZ4E{IhCl9(43Pe$>Lx(fkwU#jmnj#2Pn(pa4m!`{aB4U#59Ta8K`A1WBx*v z?11l6VMW}8vy`BBgVFD*`Uoo+>xu2eIiOf;qP<`6%UX@0O8=BA&8<^$Do3U?6T2gg zIJ5J+pfpD+LzdFqF}H12f6D2Vx7c$G+N2Xy#%Hbql9vCUs>OB`%y)$E{ z;qYjbe4}*CJTh!#8th|1*x1Q+#G|WGemsm=7~UD})-ra|ynF{r|1B9idDMIbpJmv3 z-u)-(^L~rpBv;@b0V8rKbk2v8OTlMa=h%i<*)6osn|!&U=tIis<3mwo0^|YgH-D&! z@`#}>l2VS6qt98!JFC|mM%K*>{%;b!rGwE!utS;3oj(k}rTNVftCF|1D(Bo<{6kU8 zpdk_vy@;P~8e-TVl7%cW<#On3U222QSZ(PxD7Cn6a5xjNrH692<7ISCpjsB|F2HFb z$Lw~$t-8}&>a7s;XRhr8z+v9YV8&@f75z1Axzu$3A2I2~{oPsl2 zXziT(_2fWM!Sgp*3-R2JbB(`=b1?AE?!>*Q=tJCLlDp$4PquU?^E@~*&hu?!JQslH z&E2UutIUD+u{P7pl?S}si&a7T9vPhroK13eobEe`M|Z;t_KI$_`^Me0?vbeX4(dUZ zyxa>OrQVyPbY_`J{`aU_?{36_y`qfu8>)x%;>IwFb)UbS_Tb-IUb|lL;c(&utxS>b zagL$rXT#S-I1lYL+G1x8|C*s_WOzkn4z!nBUt7YhX|dlny%#kvMka)XhN9tNI(^P6 zq+GF`dDk+xSEbf5593vppAGu8-F};Edjp-SWB9O0DYr!m@op0YzxDDhIK`(HdGZpe z_o%lhw|1%6SWmosXE+CA+tHBb^3|*qxW^tX@jU<@9x%#v12OD6Ag+(C;lQ~8&qh#7 z)Nc~Lse9qxh0Z0;!l5&(pl3LPWi!rTA$k2@$BfErL2cosCmOgJrQy{LT%{vyuU#g> z0MrY$w+Xj8IoIv=w>iI6KS#*(U$8n4=hb?hW_kV)PNizdtqs)YLZVeS(kiPuTCR&( zB6TMQg$T!$snj~NB zAH#`+B>h&*91AdVRY}i*jPZ;Ij9Vr@h+oo_Uly;iBCcTaJt!$r>SPY3|pq46waooH9pK#CWrd2JQkW-rr-1!-Kz@1fQ zYioM9Ia%4_dcxgTKW>W%TLacYlCd3(-k@Y_vcS)o*b=V02IKJ?fMb_(t|Ier;Wuh1 zLtIjevsZ=N%8J(?5enAy9px)=$9-j0c$s*MPy{*VV(ri@|8tmRJrx!aR@3DKqQ3`9 zQ^Ps_e4KfF3%E~Q`G?_DT&Y_B+y%6n>kY_ua}ce?HVzB&bBxS*Y1Eo7V8 zGG1@k8g$_)1ltYUGd49;2U+p&`VH`SP4cCq+gLh!WnIf1Fm%+~YfG@-VE?fa|B_czDBw=3U&g70*SIWnV;=PH++cqQPSx%d>D>67wAzSYpl zg_acEp!g-ufo41t#2Vb-GdQf?xdD~W#~OaD@LA?G9I3B&2xZ7xy?u12&+@L}`zM6E z0Mp;(TGQz;;*hbZD+P^!P7+xMSj29pEj*O&ie8G(D~$a z8m39)zt6D#ZIHxD6A(Ku(iw`S`v$#vGrnVS9JtRNBOoQi9z(mC+y^WV5mIbfmU) zAj;rFW=i&U7UDWRkpFye|0--krC17%zZju01|QIo3;74(q2*#Mu^E|CF*3P}T*@j0 z{G42+{#-?W;?efF2`eC^C4U~Jx>;XQ_YY|M%({1v)s_BZ-Q#De+b~x5^|88g_xHOp z#Hy#>wI45P^<|zSYrq|T4xD#^0%GbtTqk)FrQr60IB`1z@*t$fd&(acaXsx0NtXol zlt&HHta!9^ti^Yg76~QNs@h5#eL|!}%*9Gvc88(W_!4uz7F+}`eIQsJSXk_EnPk|r z-G+89REBY&axhyt%aoqe@mLo!TH?Z*>3B8}-)8De6Z2rb9*bihD(A#SHEt#idL7vN>vzu4e1_-2qhI5ZNbJD zJU3|u*16ZVK5tQubQ+S)MYt*A`)SPaD4jtF56_ zzo{ctAPOmUcP}<6Yn&gR%tU6`dA;$`dvLgzX@jx-AMD!c4efQMH5afh)0jbt8h{xayX~D@Vp?_${)753@E>R z)P$@Vaec#p1v5Z;UsW^Zhsd8+%PR&buSQom2aqYlSf&{w1!(;P@eF0{DQj*;Ev(+7 zmWn|tFtGNKb)uR^eB=5kYfn!l`Z2JedXyXLwIGuNZ;P&rM^9mXMLxx1`CZmn*>6ym zCk0VP_YJDoy@|3^sS0JZ6G1I|U7MTLHjLnny8-u8WB$4bdXn58?K)BG98zdgd$hAg zE!(ZoruJyxqFVO&1lj`luLsUggFgHo@ePYH++s1EOoc8OBUb$9A{P8tS1-)+YcaL= zsy6nDuY(^W>K|9+w4;md;M!X{R)e#=E9bvAMND0k z<}sdHQ*;<71m}sCNSy+_b zS|H*%TGE3Jjted;x@Knd#G^@j4dm`!U0KTWgm4yc^ZicF%SxxTnml$feMf;Ph{d99 zckUh*J{WO4#$?JZ1xpWYMbM+)7!H4vbHaeUN?99(evRI?j5v< zk!{!|H#?(s<%vgp%inc8mes*puXBC@xf)8DynQe;6tw2FN!y*> zYA8Kma6XpqR3jKT?@GfK zT$hFasbRJFm`ccU|q+{y-sq-El;~ z+R#&Hmj8Jh{Zd=F-Hu-m-WM@fvhYyEQu(Iz_-RXJo|t}+Nf+UadFRzehwJLbCbru$ ziwmb7SY4QV&?J|{ej715vJ@^d!3BN?7vEs-7ru&|MEY)=n+h(n6fRQs{JapqD}1CM z)P6bm%r%bfRNk-f@zw-OWNxLP~pKL6&IU`|1*+ z`1Cc7CTnQ=_OV|N?kkk+z7lIY)y`~pTx|`hEpI9O&fP$u^@w2YpkERkJ*5JLh9;|9Rk^2+nj3z_#qp5FJ;i10&K$$77#t!*TS}a}OAHr5!NtGVPgi zz%q+T8BZNA%sFsXA?mkI>9BY>DWd~BF*|B~8Liu~|0liUW+CeUJ#CH2ZO9O3gVQ?6 zgSjIuq)OBASb8XH*C*TNi7C4)wx_l-=ag21!xEAU&7qw3l7ftO>%N~0m<4v5+xbvh zyCGz0H-=2DsqGIOO>g&r?hUcbj;~+s1cznYZ3l7>zF^Nj_(I_y3v-@&zcAye*9G=c z!>^3HrtCGfJ#f@2X2EA+cs`Z|xX?ILN0||KA?7J|b=pdt-G8CO2n*LDuxZPS?kq`@EYplQS=mVUUIaRQ3&nq8hl^4EI!;oiom;(PJQL^K--UhP zcx7SN4=Xe6G~!v3{7yU(?NYXbPAF%xIo5L2jOPLLii@hqH~D^7QLDABu4|J(Uko{$I_Z_)zI?UCLrTh@6^-pq=E z?Dm|F%zej&oYstv6kDt;&70m)YpTsm+xKe$9;Z1aGj-qbf|R-WV%|PB<02^+|4koO z3SS&uC3GM!w<+Sr=W3wVd8OFPpPN-0w2spJgC#mJ8gly9lT9=VLr! zJ_~d%`NF(BgZN)4#Z%eu@8vv+EH%ciW3Ok@V1-sCH2+$4lBzf|Px&Vp>R+wbhp z4$TmvN8h*Swm;xY{V;1^+I*qCKv*r9+PC`7{UD`1J5&IxpS3RsnxC~JOEQF}K#vQ* z&+RZHRylOk7|K2vw67A*7lnOB?DDrnD2B1NXCIu4y;w&1ijhUI@CEzq?N=2o_B9FH z?3TS#4+#Bv9XJ^V^VcFgeGz_v5*KB+w;Z(_|J_e|lvhW(w6DwFCcsN_YAg9u+c+ny zC@9EnW0f|MeK1d)xz)oD`|zRD zMPfEAH@wx|`MU~Q&EXV$UM)?<|B~?H2)&;}d;50V+bB61_{3ZODG%Br!m z6MHF8@5SN#19|Y$S;*M#L#fbFiYvdPP*Z8x+Z}=rPskKH3UK}I;dHcP##2I=d#%Rt zTu8}WsBkY~x7r>%TJQ;co8`c@g;Uz+g5EvDY>%~lW1&Ul_p1EfK1>wy4xTF!w?$#% zyF%lGYEzDcIJsK8&ZYE6Xy0N_@I&0J7{;?Vz`I&rE}*}AA3%Spx7h2a^mdCq(bt9O zYlgyoD*mq;!`t5eu${P{FLAK`<9N>lm6Bn$EC0Ya-t!dHa)yaQ-oZJ*+f?{fc(b$M z{qG_4U*VY$ou~Bi^C6WQcD{jQdplp4K>H6vnF_yY_CxTxA?Gn$$sDtNu zhAdBg0<39nG0JZa@ye+A40x;j{&dEut34P0C<}U%QQZy7Gd2vc9k;;ZQ_Qo z?ifnO+Ekc~^dd`&;m637L1B{XAv` zC!VLg6h1z85)nrvQqz0XihRh$YzyqfZ@cnr#^=j7ejK#fo(XOUt~v0hjrAQ*Z@hM+ zBWO6xx8kV`A!~3t_ETKmLAu4{eM46qyl+jjeM!+;lqmE2(7N_l*Su!Ga&M09zk-h{ z`L)_kXsV0DNM`ajaI-wbw=WBI+S99+hA!QSQ{_XfeG&L#3SS2B6$4)@(4ULh1K{h| zT{!n7$i2kME(k6e>({lQg!+5xLbd4I60L6^VcmDUZ_5-K4=FU(>@UyYU+liUJnfF# z%Wdb}{?Cn<@BioR_4{Ahc-j7MZCt&7!NxCxM}r%KlUtgtwUp+V*jDFR+Im=N%a+E! zc(i3>3-%$O!L?PRWj=$}*0a#s23lby_T^iRB36P!tim#VE@ogR|8da#0@vOdP7A-uyNTiHyw;W~%vo{ADh0zwm3|=;`_jT72YIqGW3ai1bf9B! z$%_J>MMJvQF-S6D?U#lEMZjtg$%THwp8m7+?+N4_ChO~6pfOQj{~1e`sj9C#6@K^^ zUk*;j_;Q7dOM$^edC@-MGj-$Hv+{7xBp!}VsH^h8aWrNq_m_!0jiHk{4S0?S_VW)K zJI%qDmA&|UIX4^rsWgS-X7dt1dsaBB+*>3HG^;VJF>~!f$gnC{`x2`VupfbB`0s(` zI}M%7LZ22b4H-Kx4dK+Y5dFf*-vAdGC(%+f@&n=ecEjPi=Iwau@^*oPwD`ypcs6kd zjhtTbV#b5N6J5okS>ewz#@{aoteuYp%`LB~99D31&?<2_2OQ4vhO;VqiIHe^ zI|fYct3#H~RUzBCD|cHvSD+uu&<_v#k*f3q94Y-+-)>3jhkL9amudYlq94CTKlqpK z*?9iOO)U#s5*qkw@#+qER`L}C<2rc7KtcyQi<5Pb$r9zL#_XPI8_WuA*q2Eob-qI9 z(mlMQMVStN$f8*pCVzhtCBi%PD`}-qpfyhCk+ae%SLwX8`asXdGkY8>z6?GMlRt`$ z_xPh&qQ{>qJtq3)#WnpiJ z5qAw@r#DvUu#PFdebkPUdz2FOdGG2oC0K>{V8x2J>}$$Q>tA-(GMwW(bPV}OKhF6& zhUW$vcJsUW7pz#(GRUuva=VQcw1bnE(?*wy{r1=$%(n1OcQKV1M!ADIwKvp%Z5gL-hQZpEv_6s~s(@%NbaG<$2FL=B&h+l=DZc zK$*sWT8vgd=^1Vx2y_M=W8MPXXIn_I#v{0^9kcVO2wKh|8x?-hIxzTKRP=fCe2wmw+5Y5OKqY0X_^)s8(#R~@X~G?#mj zL&P>P^i72lR`TzPM?W9ECBj!aPgva3G-|3XTOC8oLm(Rsr zQl+fST8=!zE`FzBhq28Bf9nxM^Ot~*Lz`;u8D7T@Fa?j*(aIH@QzJw7mDzNgKYRy1UZc%dqFxjy+{g?76)Pdu~~HalgqO zkp4gR-UKYFBkLcodvDVl2n~YXh8Au&iwz1k;sR>47r3k{A|@D30s`6^mlo9ElGrF3 z+$Km&;ufQ38I#FO91=2_Ow6<~$*9@7)tMKwn8qw*-brRUlbL`D^!KaVjS^$t_x--- zd%x#z$r}Z9`-ZKin$9sthr*gs=@ERC{3N@_i-G#4t zT9WkqeHl%Go7y;Er3Cd~C5T~L1~Dw!If82bNl02!n5kqJbf)ONxsa3@hFgCHLu0ue z@ocy;?Ew?t#EU5=t(cUFv#1tB7S`wbXq*h*dF^%yme9g=5-yQMja~`<8nYXB(myO~ zVMG?3l)qiIbq(M&#qTia2A{{PT z%q3EoDZF$XLawS9)PX;S+ql@Y@bgOCA1v@Q^p-nIlFjozMz zX=r+SCMpwM4Zr|*$7NxyANny$;{tcMvEDru7_h|~f-mn}{uh;a;$JY7!OX_ya-(5$ z`M0QBl3_>rMVni6O!{vVjpMRI0 zqc49`un9SBxD0+WU|n~a#qZk73?Nv0IYel`>|Lv0r(#w7hmf0#;>&j7&TDt=jwOkrGH}|p|6wGp$cWvUjIF{#~ZEWhDI6X#Iyf)0(fRRHy+q`tN9P-jKvoE_Kc{rXI)>WZYC2!wyc-?5dz1+Jl9lu5~!$h@h zhGw++vGQ^_ zmtk1qjmsYB&9@b3cP$;@RYV znm*m1bcS(JIzh1>Kn{lgb|LM*^%~br> zLG5`$D*4E|$rzEH>!#rMrOpSWlzOSxXYrOTN7h|N|IgwZx9Zm~SWkT?w;ox4S@JOt z9_$?GC&!?CcT4$Jtvf2EJo#YfI)fD73`$tF{;1@)!r!^xuz}{7YcO#_ZFeQJ-SZXXA3(ieuiE3cbD{5c3z{hfZAgtNy__k%v#!(^nNJfi9x#%?aLT7 zv|UO&+X8LjF7Bi-dI7$z^d<)1l%2BuG*s4!n+i>Z3ESFO-@R97imzzRyM~OD z;arW`Lky|nP+;G;SKr4ibp!Blos95u7fF7%@LkLtbe_&ay4SS@dPiBv^T~DcWaT59 z+XQHoY4mR)2IrgA<0?1>Dx6bVBry8S@??j>J3v1UucK{Sy*}i5CK+i*Dj$oJN6F6d zDzs`SAIPO$$|a-cH|W_H;a8V7Ym4-G!-2z zYl(XoW?bUl4#~7%YiEr7X5O!LkE5kGdG#9>NSHu8uj5wc?b`B01{B!|I`sx5H%Y49 zD6ahai?tG#Qrvt4G2bkwSX3DA0#3~a{ffR?>V+N(Xt70WG*Bu}w0emK zn_&xqgZ&iX%3Lac3JwW+Kmcw{=?jEqd8(0jIOc`F%u(|4&4t=xK@AKT>Dl&+A*o5{ z>6}LIoPFmP1-n!ak=U9vkh3n z`b<|Q0A3Z}hIV386FuWF4u|qd`g!yBXerHqYCaiFZxe88HRs^VaI2v!HV<;x`qaSw3$;x8$#(Rq^IQ*X9LkSFAjF%W@!cy7k?Av~SnNvNf^ zFOqO24CnAgnA>NUE*6z_3PI^$C?5=X{&|lQ_x@5mr}^Q2Z?v46*XyZVrwsRlN8vV? z(sJVEgiz$bCeALO!>bEZn~u>LGKrr1aK5j4=qfF+-gyev99$xWkLF3o0AweSvK(ui zC+F)8wC!Q-1=bYEDBRy$Tq1tP&)YSmByh?r2(P`hNYjmj87DtGl z125#rw!?PLcQ2&qbX4LVa;N_81<04m&Tl`SJDrX#^-ddB2#kA^^#N(+>)a@V9u~$b z)^BCnSzCx6vO0R|$FjXVuqxhu-?=tfTDa%TMk3vKUZ{2Inz5TOg-Shw1gJ zqx7AtLi9&gQHX~WshjA!WK&NV^0I1`1)H%~dHDX_J4<(#=?E;t^>^Rxr_!MVc(obp zT9p9V>vHZ;y|*+_l@1uTZ z?@mc({W+u3!(nHa+aIv+Q=m8BIRt0e{_e^BL{Jq{i6O>!rk{?%S$u(^xhzET742$l z)1dtda03JK$5^IyI|DroXZvI5;pe~~qq6aQKcj~ho`jV}20B7GaR2??Vg2CNfwpOQ z^RE8xi^zqh@0awOVSgY=1|E~lp=zjvyel+CjT1eN21Zopu&HCuQws|m_DpoA4LO&7 zHp%F9G=xHaM-6#$Ic{|JL558anN5Sy0Pg2754fg?xu;L-znm1X=c~+d{q+boaRQHv(`zAe?Von|lSw`Y}yq6s*K=(HA_9)^6_=skVQhMI( z$j9yDu*5*6sb!F-J~;6LMvCtp&^QNLCYTk@6TzlF69f>S5@n~1c>PmnaFn}ggiJBsW0h@9bHN<3TY z$Y%io)qN2V#|h}E%$7oYX(A*OGc>{WS_)3E!kuj=DC2`ZR-|VVC}ZLp-Ph7x#J5gG zwZmvC3fW7yNJX_}$Q<3(ykl=y0{?V+_Q{f!{p>8Q-SKLP#7!iEF`xhn8baYj#h zl$lq;y#e1lS5-mZ(W^4AQ((-ru0v4|DlNL@INhHsq!Mrr0^N=&;!ER5GV>^xp6?Fu zI|(3+a0_-P?r{ipXRhN?l^)i2H|$P8%6Xq`KX>4GK66MpZkg`$E|ZTegVRo-hBJ&KoF!OOFobPr28j$e$p8g_OSx`DXxkvT@@y&G)M= zie)C;L`nHGJ?#N_3E+)$j~Au<&=1wfkK*kyRTs^1JyqY{Td4iEdJ`ZezAvs$@RCPKdW`#Z+z+1$ngM+`-1hey zE3~8cn(bR5;fNdK@r800-@i%@t*#sqtQk3Uqizd=b#uYi)Q!5iV5jegb$kD+iAwKy z0KZ_Wr#MXeJ%GPvL0BLxOc7t2K$5w1j9ICN$0KKj+a%%5-rnmNJz<%IZO{Z+MMuqm z3*<&^6%X?a2F!JwU{mECXNZ}9NpG&8GTDKA zo$W;pbbrsJMYy>%jXNYQ(ydC1ax2q@f)^I;q1L>Hdg%Te8vfhR@1%Bv1%qQ#m%OrqXac_&4g6hFn0vBJBS2ttY?(> zVp~XRAv9=;pbJ|JUDy)n!cNDoHXd=zb`{plB$fA=(F3sKb8oztNF%iW8Y>DLm}gt^ zW4-hn@22s>-L54=q!jc%Iy#c%l#_t(-EQ-}#Oqwb`Z}*MB6F-cpZ>DVB<=6+ubPSR zZpqFqu)q8FeG4n;`I*0aUmpt_b%7FEP$o1l zDp{lne0{o)mRWy={yLyv=WIXQ%%rJ32MwF%bGUyIswJQ1#7ik@>l_pS z1LQ+-OR>j}eBvZXDBQQs$9HvbKL5h%H2@0%Y{#Ycra98FMAHu)1ji5w4)^u+6f+c3 ze|ma2)Q{HaldE)|3E;YF?MBe=5TopT;M)gRS3=G^sw1tTGI6L`7&XLmmK?<#bgqJ= zDcminiZ&Wejp3HZvnI+(bbg0FL z+o=2&J+D+>F^aUuU{~x%-+FuKH|P*xzXGlaFr1!P?9s~%)>0Z~fCL5c{k3NxJmh*f z@%>v0<*;7EKB$x}EX4`|`vja5binDb7G(7&9gMyaS_!$1nHWtna7H&{{8Ia6%b<-o zdL<`(6rf_K?==~62jNF6$yqCoufz#W?#+7#Q)Ji2_ zgarqI>ax;$(E3m;wFBPVm1aG&@+}94I^{Y_Q6o8G$6hTEQ{~K`6@|nb0?j(czR?h4 zW(?1nVbifv5MMhn&?YzXao!@I@2~t+KD%wq5ArDx)hJJ1M7%QWf!T(QSkEv*vsq(y zFN>ZKYsfSDut=b1}I8qP2PfSVMOSu$cxd zrMX#GnxvSt_OwR_>c3yg542BOZ$A&32p(D*L)VX9Rbr@<%5t-i26g1i(3Y!a5OV9d zh9AY9g}BakHkI>GO<~4&5B3anKhTGLz60Tcht`4Bo5Ab;jXzwnfaqLHEn2Yx;~R^$ zPC%<65ogkiK;f0x-6`~qa~i>u*}jr1a#j>L>C8^|sFm2`za`}>6F2L*WOEAD=ka%+ z@24~=;D1l@k45Nx(747d5nNk9H}^V>LxM0e(0_FxJOCpn!8rd1Fmiy=i#5v)7-NDk zhDtDo+!Dq!Lt%4YP&yf@MP1_Znb4&e^zOiW_@MWio8A}TT|MY~%KYzkp-Rn%}_S{T+P-JYW6XmIks^PFvtN+ai^3{;n0=iS~c!&p1p zY($vRK(+9r5EdeZwIZz5K(*PG2vel}8S&Z>)@GpkJ^pTb$Kc;NLdbN2X%Y8LqI^62 zblos~`V7&by#Q==L9f*W4#~+%rpi)PAd=B>?p%DKJg>H1s%J%DBOnbuclQ-4-%D{D zoPM0!tMNwtTY<&??iS4MX05-w8c*0!0KQV(xD#c*i8B8V2MTb#?QaJ>>Ot>Y@eW$* zONA6P1Dk)t-H|vq+R1O5Ul<>jSZwR$RZB=}82DgE`E&fxU9CHz;pI6U$& z;?|tlZw)!uN+4^VpaMVSd+;1JC#X)cg4#Nt&ls7D6zk}2IiP9o+!0ud(m2Q4amM8j zlr7w{>==~&6#qG&w2ShZri;%3j@F&k@ef;-pFD|Q*(bE@LX=EUGUfZwd_$$OsW$aM zx!9}kQ0;)t%ZrR4^HSTFeyqhH3)e>H0GdVvSe^zf1nm&(4wv{`W%J9>4zq2S`KToX z>*W%$ihqaSw=-_nKI|m6ky#a-;hb%^mF-Ys#2)Y01k0!Uiu2l~IrD-Gvs^R)B$gk9{Ir1R8&H~->JvS&m5L96bQqzSL#Ipm{*SVffC_vnVY z&*|jQ*%|AkG3WAUo0Q%=bz_|p&xn7gi9qfa+P9D^=#ko<+9dFIzb5H}JK9I!Od$l2 zOaLTCw>=0+6d;LNLedi`XOKd*i%ru4k~lzhXlGIu$p~||kuq&mLX^E#7v`>uk41S= zkP3dkX^8hxvRa#-kZ%75?d~}7Nc;#u76-`6;?FjL2MtYi+NQJ}!h}kjR^pL_^QI-g z-MI~x3^?crH(OIWCW=WDg$ayrXn&@CQgbWWRuN*SEg9NR(!mw8Gd?-2Q3}{k_MC9q zRnza!J(f>eO!k~+n#-|#GbEzvnh*5{-z`x0K8%5$_Dr;XF6#Umz+QDcx)%N7@=AM;Sr*&u;{Q7_08@(Eb(j`waq(EH<@+KO_cZH?@kE9;A~gnbPn3f z*MAi_u{hT+^HSS}41Qq?7&9Hno)c>IPISFr3U8Mz!-+~yl+Nt z5^#=|Ig3~F7xY*Imb>+G&`oQpS05rh-;>TN2FB~5Lf9LZcy-`u!3s;LTP{KTYn+Eg zVy{GVdegub?Z4M)s1~BN^kY5ML$sC#;G_BcF__OYfblWdm-`*g1p0%zn8mO*|b$Gca1BT`Ieb3AKwbWr;=R?^Ie z>>%lj-5b-%`HjhBbTW1T(ZCq7*B~Z=i%Zg{xZl)%iF;ca-;`cXr1rqgI%t6JW-@X* zMg!(-U;(|eHeV{I5&LFye52J2u4g~2R=Bj0IIT6qGW7@A-}8mraXQd4MI1fOsZT&! z0o+6?2YgzXQkt_N(>$yoB9*wEx;OO=Wl=NZz0g^=zhNh>qfNy+r#=cPWZrQ6()1Ls z$6!V4(lX-c%+rR(Qf7l%B`*w5BOTjxZ{o}>&_?}1+N^Z?{Vi#PoF9$5v9bs$8b#>^ zku(xR#3aFPidd*eQO(i zn3oWGrB@Bf4y4uXtJFxN=4ENb!VajkHXS@>2gZ=Udn(|Sx#g!RoTo9b(OI3^iDX*C zMYd(6WN#^C0}=jY^LH2YGT_{qb@VJu4}0zcZflPQg__ax%gPZYAryPGN)wNeJe7#!@SJ1b4oBD=E(b^#YyTCSjHOB4`-j zTq#H1GVEXixex1M_a4h1=;vdmfwq6O&tm5!ETcAKX`8RcIC8ejq><<|s8{*B{}WUu z&}USSUI}cV*043A+7yQKfxr6gx{wx`+hIRuWjcuPpqGr1fo}=B@X$LA@meTF;wgsb zSAe_f`{UJY9{2GGlSD`ew#Xjk9$_C-L-%G8xR1j{RqO3q_1>+}Yr<*I?xniV+LU`? z^S!Um7|}7lfnv~I;O!C5R8gItEKU?v`@i&rct?xSj+A~?`(u!Pi#6;V8O=VSc0UTr zY>$WRs*l>%O?N|=%*#FzvKKvgh#3#TPQ|ym46A$XJ*UZaX4C28qBT5NJDXRVNdtQot zw+mlj>4Xuec7LG#=xR<4+!RtdcRE%j_ds4Dzn-zDif!Ta{!vy6`60yqZfd`d~^W(7g|n^G|&0FcVjg;c%IXw$|foW_9{br zv7jih1dcX(>k3^nQ2h#=9|!yM*EpkPphqXiNQcEVg)>~JIBjUY-oq4jN4uI*9$3f< zgPouZtx0^>l!WoA#X7(U%QKk^RxbGM0&~10h>LX1@EPWF%q6(P7<6+!ld6E+o{E3p z0IO|f#HWF6Gm`obDXg&JxzzuJPsuOVTO0%QK+_&Y=L4LfN4sshhppkBBv{O%=i5y@ z<$Jyli9UVVyW{9wZ9!W=3IV$!`rX{{obd{1qFKt1(w!UqJoXwHP2@Z$Jy+Rm)>S$y?OU*(^mo4w?105( zv|I>I#Qxna_S2C#6tvdd04+t2FhRd=qpq_H6l|}jtE#!#8i~?IT?ypUiP=f!rZze# zoFP~dP(G8s!Gik&YMlilgSR~RX?t)lF$Jk!$k~v9KN0>3LH`K&CkFk);h!4xN5Wqe z^oPQ~Jm?RBzfSVA1^zC!P?=B2gLr2EW*cniSj#zBovJ8pGg-l*bctSRuR!e!4iP!X z1NNMdiB|MTc!ddb*g;^{*S*sU9E}sjV-pWIC~=ZW?Z30I+8P2|w#4|Q$0QDcm7$Z4 zMu)}0I5O)MIMJl{BbacG<7-q3#~ZU9*$+759jki4ABS{1&WU{Fi?)?RL)GKsHl!+i}NXufs;Lad`+sl%Bn#!%0;$=jDDRE>!8 zG6*}owhBB~CEwH7*fwd~ZYziVHexm+ZsO!k-z0R7c&_an-_&*#n$>T`KG)V@ckzsG zYj5^;BcHv=*>+_c?8brr^hzD9N=Z4svdye}1?dCrbLm^~F>vCTTwEmnxq_ZKJ?oUU z7%PvBIEwa}4>g%~wv-4kqr5HnmaX2-v)$eMs%j5#I&O;dGsS+OJ27S^d-oU0{51SUIR-8OR4< zwByeK-WlCvG~|YWL)|LP{UsL4kDx0qCGSFC>(S3z$R8)7&jru0g6ZODp22FfzdQXZ z{Z(I$DoEwGt)-__G|d1n=lBU~!A;5ccMDfxX)NgH;g|L;2-i@*;O~CcF9R$CJR41W zY!RfB_*1Znp*54WG6~b5`)N$^#7Mbd^)sTs`y6Ntm#XWCC@21nx?PejWGZwyw0HVe_Pk>Qta3yBC) zo&X(FW7Jr9Ie2^OqRssNhWXITI?DT#*m1z9^9HfVNyqj@9dH3Vm4Lhu&Hr=ct!cM{ z#~L|59JfitrjBw)@eenY0k_Zbn$+>ISUb_pr)I;dZIOpb8-saanty>eAn&!^UNd%k z-eN_g0+U+3vSq{n(bK~qlgB*(?gGA%@v{S1$GT^7R zUoBx@*J7iz+c|obq{s_0%AcuxX5~U>R~7NaUE>NeN{zf&2`Ykq)d0VL3u5WWzi@$C zVFVPVO5R#YX&(J{95Q9F0EE(R$Br#p(mAIV$m!a1I=CCmuXP5x)2qKK*uTP@U~HuP z$KLLLTvbB0$^nkyB&^+Fy#>1H-o*qqq)0{#W(s;D4+0k7OsV)8W*#FGO@WnzWs|NwF-b%DsJu9i#cD zwPf#C4&oF0i2m7?E&9bPjVrw)D2=3ePU)i>`-Ng*3u!IsZ);Exx4cuM&opaf#Iw^2 znO*lbFV_m$2VX5(T#Xs=L5vzILkroEK0x7%yyByHe3weQ-43qlW3ort)<|ePY%Jss z#6Xfq3r&Yi;5704&AYEnw)fw#xkqjJevWy04f5jlZENf8?(wJK-OBH4s{{7Ld!J}C zipFdwW_WV(oOgyeTUcD^D0lFi9a^;o=R%Mv>01O&G~H>1_d$wb4&77H^wmgDd`qt0 zk6jwQ=RL6Qil#DceKW-h$ovMN59!MWSK&Bl!9HNVyq~~kBQbvC`4Y8(mDf2cZS%?k zC-cPb<>b#>5X08j&_;JA*!2E+Gg?OOamZI+K<>~UBHG54@KLP-r@uP`GOJT*E2RW% zb+~&uV+GhG%rt77lFHBQ9MReukDMu$MrLm)!KeW;yZ{ogG~Sa%6Nx z1Rg1#saTbz7CGl1H;#eNi8akHVW$n!bJAO51L(ia;86$)Gx*bxJBsO|u>#@45T^xl zTTWhd&=?y9mu(u)8aTw6qmM44Ut+L+q~BOW52QUQJWB8GHWSuSLLUdHXoxw%*+yqD zN*$i+4FLvNdu8w+>ZQ_V2YM+DpktZh*LpD3K7&0{hs1L_+8ZXFBNW5<3HXq{++N3B zF-BzvPA<)g0tVwjx}6EBprzLa* zq_ybznSfJ2dTQp>>uo0;p6jP=#Mg6;?%UAU*8($am0T5W<|P^0O&cT{6qr{wp)Pb@ zro02HmkJs&O6K0%%(U=!*g)`BNHZI0u?SAWw9Jt-MIHnfq(FR=H>U)2h0}W2{bro7 zj0LBc>Sd4aDVE|nu@W7HUdxgweu!}mdgdgrUVBEu3|k3gphq@a>k&$&p~tx6MRu<_ zVJcnCS8Q(Ek23(Q%_|z)CZ|G+?EGY5OItRe39o48Eh8-GB^OUdKDaV}rDElu9A^Eo z{22&)llSUm&@Fo7su|Qw+SkDnEx6Jnr(rHR&2N&ll{fJt3)H2m3TFRqYZf?c>IyyH z&+=sr3F15RsqDB=e700w!R|YgutS0b^H4=|TaJ+&BIk4TyV~f!_9Sk(p>j$u`6Wr- zin2I$sY4r4)Lg2ZYt|`eNwTe2kuk9Lp!BjMsoW%`^a_*}0+$Vmy#RgEf#%JJtAVq_ z(X+#)aJ27e3J$TUqw@oeN8`}A{q19l3&pb)86~Q@BsCSX*|06x%C@9WpDAw8R*smQ zLM6BE^rsc%RH)Qx;@UZo0d-_oR5}t18!CtzVu%&O%7l`&71>B1<(>>_0*uMI1-KIp zqizKAIPc|yFq|zNUZ5^l&+0#sV;n9rk24o@QW!dd5&NW;og1YtT1nKn+s; z?0yCCfSJ23j+ynW_GGEN_+&+)?qsP;Yu2|&e4v4P&^l54rtLuMeY_o#v~D>hmPzs# zr6I+gaFB?ylciZv(!KhpjWcsC=0A@Tq?8 zQAZrjOE(2+>}XFjTae6^F8H*wO7(Cn^rr+xGLO zNs88x7Ny7@@N@|c^~NW$4^Zt>k5IL$?DE}z>MBT!aaW}A?&>tXyC!Y4`!UQ3Op85j zh}!{)@_J~99P&1#HDi^f@FojGy)Dvra%hj25ttU$US@=9H?b>Qu(N2|8e@lP@9Mq&<>YWHUu0Icx*}j*0C}iWHXu)V3zJMnQhp%43k>$(uNB4bwkY?v zSmhnm;*4TnVZ35@i1>9EtTh-F2N=jn5bqTma^K6fgrdf-Hl#OlkA-;D$I@Z@ju}b6 zoaI~Nhoq@G7{jdC9o7)H`niz3Zdiz=y+m{3Xlz))-l&6h3Y^m4DZ!%gDkU3FzAF^_ z>#u?bHedbh={W)U+b^z!h#Pez{cDfx@fR>FjuF+*vWHBPm4pxavczxVzSF`^e>(9r zdjIw%Nm1<|IzsjEJ8hA6cGTUlG6}7XQSwJ{+Lw5C{yZH?yXL8gm$#4%c5kX1dX#%# zL7v%SqmD`Juz@GJSAIx&;4YqI-0qe?${6pss1S!Wm{f}0u#Y=G~u#9y~i9n4f^U-`h7?TobomD|?h=#JZclR08MO1H`@YOA6Ok#Fk63 zX*AIC$P4{n{vLZftB ztU1<^|M-bZE}TOZsR}n)xelD*p7(eE!>=e*6g69A=UZ?FYmTMsK+3lveTL`;hsRYE3!vl~{59y@&bKk?+Nhk%7GyMxgh;{KLQVL?DEf-n;PL)6V=#af&UV zw*h|Ye~6xKagZ0^4Xx1vn&xA~8N(1ZknRa7-8+6)8aNHsO$wO#U<`X*@NqT z2lC#GyaVMoN###R*x)?#{LVI7+7_wZDBKT9@p2?M2bW<&h)WD*Xc>dUlcd%-D3wjq z!?Ygitwn4N^eHq4ReK^1D))q=orj>E!_dx>9W&_J26{~f9RtmY4N&!>cFvSP`u?we zYT@jDT$h0JA3b|L-BY>@)eh@D=Q;HbYwme2bcfY=o(tPy9dh1p zP_a?3Qa^h>DoVxHy6IQ#dB_o|Pr=8We}{9$mRUAS{vDFvCi#mcKaI_t50(6mpc zGQhJ^$fCohh3yl$um@~+*%sNVZ5y@Y!amm?6rTnM)R{Ps-7CJCTP)gavuw#>6J)iy z6T*^YPid+2j6lL(YZ3Q})ZWz{;tVlQyd-+tWn}a5A*2=IJFKRTbnp~PF>AScQVA-F zE&d;RvSRm&!sG*D)`dI8*=QZBm_X<=p1fe4)PcF)v)(&Td@AmQ1ugzzgBN?VL}>Is z%p~54SoCSdlRRwnZnA!Gao}qhECn)dUFBVs1Qy%5<5MKqj*7nmd{$9NJP=zZerUFc zLrIai-8`J2RNFwQZ(h&EhW5SazNR=RR*7{=wQapp6vMs0vNE2d*07GJVjs6KLXviw z1@v`l5hn?wSK%e~4C~~KmE1t);>oN}b=FwB?QKLRe zA@_){o3p^H&&P8tal(Whl>s=|^`!Op9nLNaFVP>sUBlG!He>kE%(QNnLJ!2I5mDT4 zP9)!%bH$;y!TFy5P(aJ1kOQ%o%wxz)qA32(yilA>vTSF&z^}ntox{Fe(Ic2xuM!*@ z7932MsM9lvaWIw#`_^HaoH(`QQ!8`gRFY36%VCe=yql-EC*xR_!5<0!`Pw%hA4U=g zg`N0tHwYO*SQ1K1B!_^P&`cE#euQ24A&U%2=&CEaS*+5_bK;dT)na!Y+CSw^__VsgUgR z&lBTfG5UaCOD|N2v&2Sor5H-+Q%(K=?#(JMet}^$pSdFKQH-Py*MO^rxiN*-WUlxN zGxKPb$fW$jTqQye2DgV@RNSr%x80*eD6lci`vNfH8LPU3Vkzx;Cg&;sF61P4zhL!U zWO5{INc|x;%={<=hgFx%)#AryV92ODJ{m{v5}!w3)`-spv4HcoS@+=Nf#@kF%G?|Y zL;F-%k63<)(F=efv%~|j7tPp}@2(P?%~)6MLrrbhYud4$o+@Dv#o#+heO$uK^IgBS zeg_Pz5``3IZT zfvXFPTuz2#}i{876yZBDMiKrNV_g%f6`eT(U zhW7kzePLvZUVyKxcZ%L#Nqt#;J-XCNYDFcZkM^=6^VzByg}Cwi!)@Mdnx; zag5~R4l=s9&$ao5H0{&Z#6pFZ`VL>qEu0oheFv^B*H4S}XVSEfTr(FsMe1w0Hn~uy zrM?~4Y@!hRG0DyS9PS9@J7sadB-6C)#C>}Def_mfqKj1PN^?PR85a+!Y?Hs+ag7*? z#YhqtyH6Zl{0HkSOW4R_Yl8Vja!C6k`JQJI)zj|C{e!j4GB$AnBj)=CP(IdV?LAh?);ssKvt$zv#&M&sbZ|+s$p@57)&XKLf5V^Q zZwHhLH-UUoA~`#MzV1KE4_U8xWN24#8VUXC^K^IJ9v?!!?usSfgT4mf#NFfH;RlPxZ!SmLggaV@|X4} zP*csgPb+U-zsR4cAFZ9i{F(&&Yk>WC66_&lv!cjd4w!S@@3+C;mVx!6Z>HRKp2^B^ z3`L)CqsLtI8`S0)HpZ4Fi?KzF9)EEp(M+4Bn##N+#*9hdgqJZ2rW6h@wBw< zqkb7@o%r%fvsqQA8!=`UU14+l--dRrqvr=MPuG2@sl8tZ${yx8w~l9=c)5yuG~jQqC7edSStu4eR1;35B-($fV>nQ}?$ zORO^8%p_{Ph$PO`i8}OT)_&_S_rLk)#rNj-@^6)s^nZIQW0`Ei8wv$jfKvY4lsuTX01J+%-)=KlBRsM! ztv$3T@TQdBl)<-e-H>d`qA9O=_*k5(639CUR{^WPzrWv!KY~9jS?Pm>IXMRjclmwO zvWbp_)3Hv-g$ozL@t}@@oAUl8S1ug9B+MMzqv&;g=bJ)Jp{4(1{8co*lljuMGCNz* zOX8ghANT&r&TNOAzh(YU4dhQF_MZeiKJHzTtng zMZ>Myrv~w9(S*22Hd*A&)*a*?AQ4Vl&aL9_k>Z=s{tAIXMZLOgh5yudJsbM5zPm;H zzlr!|wQE+~TPw_VtXN*ZqORV)*dZ8a7v|5%E4!ySZ*D5N)%RRWxh0iMU%XtHUAs~! zsjXR5TPNgKIf%vKs9Uk7mL!`d)R5$Q!I)e#Cb=e+%yiV&RjpdQV!2Sh)=^7xt5#JB zw^uD)T`Of`S+-*J@>PNrlltu1Rf4#*YEeCzUR$$x^)jK{URPUhU$L}?6f9n3AM{FN z(tJp1U2VE$^(s5D)YsRpBIR{e%j>JEX<;NeBdwm?VJVwYI3pifFRvlAc)^0N0CIY5 z-6Hx@O-m=%)yo{TI;(4!SJ&RM)+L3r<`m`@me0MXbmq*GRAd;4EX-KF3<;LhR<9xj zRrPiiu zE3w>Rwb+X9$(uo&E0^Tf)~{N;TtXXSTUuLH7py_)>IF*|R}00pYf;0cOM!YQhazJT zk1V9TVW6Q08nwm}MRrZ>?s{2R)3}MwE z+(eG39S~hY$?HgbtKo*0DV$E*yCdiem z)zi@yM0X65GL%_XTU|>>S+KRFp&AU6P;5}US;&mqRrjr^yO#vI7CpbJYVlG^1Ar*y zwGFF+U1C|d3cVfZ5gYBYrPwgiA!lqzCFX$vP+C=AkCFw79Ky_n3(-kZ8|T%G9X~!Z zC(v;CzSV3DTgwB|z9^<&~upJL)Xd50IIkBpdWj0mV2GpmSgNK2Q|HcME8`>yl1+la7H=YJtc(} zYhg)Yd12mcLTT@cI<$y1JO|TX;d(z}jDY%KS{PT8o@^Q$_z|dY()Aybk&!`c_NwI| z%7F$5l4go^QoxEj+S-^8K#4Gd$*k2tbP4NzL^~w%LkVsfNFoVRtlAoyRo-%R*iVx% zkOhf8faC-T#XvVw5)*7WikHZ0@C>j3XjU7aU}4$$Of6nr{q36?=q zqF`K5RbM+{+>Hs=vZz+V^6NbgKn9T#N|DwquDy?p76$d#pgEV!&MOyYmX;UJoH2V~ zko=hXNg=nOiq{9>Ai!w-rKyhCR@c?lE?>2DEvQLty|8@6DxrS0!?B`nl~5CyI_Nx6 zEzw%c@ioDb9i$3@#tFUzJ6&oJEBT4hI&b-k<+XQ7R5#EU!C5bmlXYh9T%mBbkT<=w zd@g3$AkhaR)?;p_G%r`8d1L^!q&2`TN1DZEn>lAjIR^gq(HU60EUp(Y(blXDU|!+$ z>2u1Z>7A}G1W+{)l)%J9Y%7*8TwJ$|NQ)p4kg7UL@vl!e!GV`dB-klFQG})I5V}_T zB<_+cU3ba#2wWfBTO%&HV&d_HdnDnK>kGK?!X;NDoK}CywHPkbaLKg~?yqn;iI-g4 z;QkD!O~!Y)-@~a=F1hBy30V8hym-lV^e~;n$B~!CeaZFSvzJ`i2r~uKv?>83Xa0|#ZBqn4W=_8-5p4C3{NBK zNYj0eZyyKKeRESf*+&65DgpCzXct;X9m1mFXgRMT-M`?Hg7KVa3mx)LMqOyT<_6=@ zxDzg*{m-FqP-f+z@Dca?uw5I1d9|R-rKlqEsNqv653^;toaBp59YJ%rZf$~G!##sN1I9YM_6+(elOq*gFgvw9Go3)FWjx_ z^d`b7T=dTi7_7j%e7G~uVJ|l5n|{HKcr@N_wdN)VPC z%;Srj;@1S@4;~X65Vk59-whbQhUHltWa#HIP|9q?< zsrh%K!ykMmft^utO8xz36Q8ddk~3v#hu8bfq1!$kUNa%9TD-V)eQ3$G_3>ffWrh94 zAHioX+{quhxOBpS_olpi+uMBg`&+AaR&R*dn!|6sjStU%@=BFy#m+zR>vfyGS%{Oc zwJPis61+=aknYRPRl10X36(?k?yKVE*l3?Jz56aw%PaXF)57k*6u)rd38shPr%ZWZ z;R9W#K7IMNk6yn2k}2$zso@E!)Tt|WPJFvzBYybTPgYJm@ZN?OFMf^3!jE2Fwlfm| z?Huvl#V^0T`0kh0cGwJ z-dp%x$I^ul?EEZy#1{kA{BFtzhq^NBUq0~3^9#rS-Jys(wQvgl7M`j;uxs9bo9o%33kyp@c8vs>2kB_)$ppf%o3-%=+ldCpNwd zd(LqWR{wzmxNmow(CBZQ-i|n!xhA}NCkL3bvbaC-r+%OL<%)HoebA!l9BrHWR)t1%u!7utJIUpu+%9; zJIO+Zrxg%>>~y%sPEz!{$nebFB(CZ) zqP0AUxW9t?E#m$T>0gIC1^;Qd4@gYxUr0>$Mfkl4?;^UguSu-+d$@k2ku$MnVT^Xt zFlKn#2xfSu0e&N%V;J4s@r>4DX84=}xS7nbwA-0ssq>g&IhD+C<09sl%B74lbQzPK zxt!t0u3{#pu0ylyb7r#TugL3LeD6lyev~U?hi8Sd!!je;{K(<#@H8z8 zZXfLIs{D{VCEiajxm*~-bLNz$J}ql8Z&Dii6C2;eHIf!qrJSNxsnojcf`Zg|rF^$? zTZ^o)W$ZKfX)0*WHR+m#P0DDKFsr~4GIr<8Ic2R$g;A<)NrkOX$&^av#^`7ReZaM{ zia59@-Gn;SPZ_52Yv>j_~S&0fVujm+XxSTwR8 zy_2vSTwXuM%tUD#eO#jq88`M0#Sit(nKK8l1phNnmL|>OqoZ~g7?lHoy-bve%Q9^# zGj5@+otPOVG=_~W&~HhKDoi>e8(JbX2u)@-`Y;JGq6nql_e7~NT75sj_|X?4GZT5R z9+8o#&r}Pz%i&N%H=CzzM4tq@h6%tZ0V*@dBAAdQbiBqQi!>fawND;4C53IvHAEI# zTWL{S8>MtP38!F z6M915^W|Vg<^|r3YwmMv$#SEj(R(k zcKk+$u};ahXc7Xg)@!g@4O3+725X~jDrKOLNJQV!KL%|mBeXz`^)y54yFE$0B`+yj zR!Cd-@#>wjBSLi3rc#aCYEfQK7Q|qK?zXKmHSKTxZGcVlT2lyp6RKVVNHXR9v?|Qq zny@gLCE~IQWo+UC#ab5JZLt^(hUn;MWtCA}fDx0M8n#)ZWRA2novbXd>aTxB4Y`CS zp-GS>@U%9_OCxJ!g3Uw=u;J$8G^4A}W=1R(nYj70 znb?xMnfM)xnD`A1%rM=9%&>~>2!90Ohne`+XA%AfCVul-Ca(NLCjM8SBmEU7t~!L( z-WkcpZ_u&2b)(pXXD6|7bu-zxC3mrL)l1mnwlyqY^Z+}&>_Ike@^1F8s=aJz%s#fr zc7P3A|0JGmc)rRO7oTC3W#`zUB_Fe)_x_blN&KE2S$36GSIap0C=EAbZ46gjoCKH7 zmDEq*O4jFc1zEGX!pU>FiIXZ3zKAO-a&R;1)^bI*2f3mp58>NEj$iO3r=0f!#}~iK z-8=LYH+ueCoQl%e$RYid#^!#3byO#4Y+jtu`h@jLq3ng|QypAlOw6)*<>d>)RVsOM zYUCKMwKX^DktHFrZ?mFKKUBss1-XW(6ik_8pP^$yq0h~2Q0O;nCTYU*3|B0|n5G9c zlQNnfD;pc3w>D`~k{>P`oAUI(G?N$^OH!M6S~L+;ET$Cp!2*M@LH0%3oaf5_NTw>) zTMYl)w&|Ye+h#@Ie+d|cg%2IJTc(a_8g6Zv*5tD(U&lZQ-Lm0G=~u(mTdZ^D}N`j%zAcD(OcH30kobvGdgdkMmF%K5$JnVUPjYN&7{Ck zJR+4e#j?8~_eiNG^K8? z#6r;9h!cC_Exz1Y(YM7%c4|J)n-#q_(`sj)>x zbLRZRkheWLH44DYlFf+D+s(n}87gD$h95L}X6tZU!#@p%@L32}97!q+<09ugTb9?P zOw~RdMc-{2E+Nt|_0c^AV<}lkG~^n_Zf5R5e$n?2tYu=Tn^k+I2+a*1$fScD~F@&n!Dku zv6iu8EwhA-G%O?eQ7iGRC&LUFpJnS&?iQ>`cEYtH{a(a>0`4jJpM^V)wbt)QwDI@& zPS-eZlDMKX2tNlHFCwgy#Flm8`7OS66{CT^An&seNW^jPPNWMT}X8NkfM zq>f{T>vNcAl(#X8(5YC1Ov5_GhV@7xo+WsP4s+`5%*32|cwfLoN7unPmL|gg=3`%TvsxoM(~Oapdz7GeQ3cl>bL&c+x49 z|0gCt>RsghJ_G5G>uZ_kzq;h=_!4_sjI}rM9Q~h{T=dMZu69vPZ3%QM$YZ0)xW5by zyfZhwvp2nS*WXq8NQN*51Cby0tC%BC(Fi;R8MseB+SM z1Tr3O9Na|7KM`plv5P<27lHaHrG4NrqQst%A%_V)cfX@>#+=z!DT?&dg!WbZ--LNR zpv%JJkoU9-Mfyxd?`~#!Qglyu>gi(aB^r4bLS{|EsRuQr}5X{ksS}twn%?ucTbo>zFBxd|F z)Qi91c3<*`Ff7j2X-@|J27k*2pCg1__mkgC@m-;jLly<9`8TCkIs*ZUNI66|fBO6X z7w|>=7v)ppuEQTmAW7-`N&Nd?hYu5m`oDq? z<0JVN_;I6uD!I>z==P2{f*#ps=>GQgEzeHRL*1NGcs47 zTX=#^%4r+@(Xi5;%&=)GU%ZnxRg?GZ+V{Pt^tnyb$DTO5d;TWwliU}l{o#R+wIT6O zu6zAcV&eDK z)=d&hN^*tFv5*1JB$lNPDmxAVK1i;u2}t@5e3N(+*c|!6q}>o6Hsm_5VuTC(S!|ss zZ{z0g0>Uy+UUI$rgYT@Ao_;gK9XkaX7d$QD(M=&+WLvoh*{4lL0T(~(t zEz1ix`t1PxKUJ3P7G*^voeuEz{0VIXza?DRgj)RwCK@jn@nokVd-vbOTT0vTe-LjE z;zc7K<;7V4i*jE>yrlm@exD=WXvCxK^HcRm!nZK6K(Z0fjrcdUmC&r*rr0hYj3a?Q z;gK#E>6B+LxhSvP5+2sXZJ{mo2hzNTG{9guW}mz}ovRRC#x69CtEw6|&QuHKmGLnVx|5s(_11DuwF8)DLp-{odRz*Vt z#Y9|&1r}2S0RdfPWfw(5huNKBcVu>Vn4N{iKZ!T&f*({Y?4n|#7Yn^uSm?zY)>_!5 zd#TW{(15V;MrDSD1^x8;`#$H-oM+yh#qNGSEb~3jbDnd~bN;^PoO!p`X}wPGbx!PD zX&t3MI;3~(oe%68iPaI7I;f8A?Xn@g*lP_xBL6g4-7CmNKdbaF3hL~_zw<#gyiw_2 z3SXjFis*kt|0)ms@AI=s>DQH!A5!u;$Ukyy$X^3|{4s%>;IkBG;VTs{fWM@8A-r4h zt+4-*{7E}rqtX-mRf>84UhzltrTlA^T=KVBvBW>1c%{Vd9rFKxu=^2vU-iKM-e1F& zzVv_pBXX&~9ZD|w-*H^9UjbJux#VxB;%~z5DVF>WR`EB%{zuaLt_S}2>GwarG`(Fa z{?E(kZ;I#-RQ%gA`YZaB+TWq{|6WFaW#3Z$Z7TjLs>4YBKLL*)5cJQ44=b+5{-6_s z{8PwxDINx|?;qqB!iN-B5Py@(kF=L9isR@{)#<_gPYL#AGN zVa1nW&;R)P+NSJFd13=YdQzSZilsbNYCMqg3{vr>J?&F0`5pYRU{CVfPuY|F%DcME zf3aS%$z}4lOX*8`n-rV$6xT=Mi~e7ge0~}E%^wfxFOSHjKUJO@sOGbqFpMnpb7WjO)S;;Hm4T{IYyA)pr54tGCpA1h` zTm!FDTnFz|d;^@T4Dpk2^~k`@@CwCkaMkHS-U07Z^4mln5ArWae8qQ*d{mI%53fcIQqPQ`zKcPsugTs&4R29=KRj?kkgtXdiXVk51_k*O@Gd2nwQlX@LH=!co8td~ zhfECe7vZIfx4{P#{}is76!d=%uUEVWeoOIwc>Ls`{|ERsmEU*ZxmN`FVfdip4@7@T zkRQ)Lc}VezaBgal4}^CqJ_DXTEy&M-_bEOfzU0avuY}hr9t-bR`MnfAtmKp6*;j@5 zSHW8p&x9|j3G(aV^=Af7z_GIe%luMR5jc%}os!Ron?D)k3*a4!7r}!E2l?%APVpDu z_Y^OO>(37Q_rU|t3H$)OMDfG$PQ^>f{#z=)k0BrOsSy9`a6$3Y@K(j&hIb4J`p?7l zLj!*gUZ?ma_>kiNh9{jH^k0ToDgFg~K=B@Un3|t{4cDF*;vaz5DdtLk?2zI^aQ(2L z|95zU;u!A~8hCz?9}oBYbl`q)PVp)5F2xn_jthc5ujz@cRr&oCTsb_*&xe;Nz6jo+ zcr<)a@n_&cYW}XE{Ccs`s{ zoQJn4UJUP3yaXPu=KFt!-&6U$2d+`_Rq$rT55v0^KMt=}>xCyJzMB6xid^x(!-o`q zSM=3-;3asS;_dJpHUIw%96H7d+=7p$FdhR zP|g3`wTopHbDb=w)3$O2wn#!-_A4r;ZElbppIv@l^ON z#WUbb)ck)fyi)Ov@P5T9xLVEs^Wn{E{$2ntQ}RxDx8ghCf?6+p5w1|{fqUST;#Ke= z#Sg<%)%^cByixI!a7@kjye=?StGEGiA2oi;-*()s^8W(7PU&xj-&6eGaI;!3yaMk~ z{2Dw=tq1nOD-{10KB)L@xLK_a-i7xm=CyONYPB9X_5|94njibZYm~e{98>FoPr!2& zp9ODGJQVJ&)(gYodc~vQrD}a}G2CCR2PVL46ilIhP?3U%x|6_5~ls{ zaPhwZzsvkQ+wnelI`gsTQ$7-lJppg_>A?@8FY6x3{|&IbN5b1*3?E@W^Zc*yH0CSM zKZWHz6P|x1a>oB=XYa4Dyo18aD|k&_ug?aa3_pXum)`)(J1{)w;P+{d-rha%ld$*K zH(`1Ah1dTnd_Vd1`hSDv9U5L<(T{UT+K>0grSLm2H}g&TQ}A-w$G=;c`lxZ`*$Cft z#on$Jj=uvRH#yk<75oU}Z`R2_fCs=U9G`PyEGF;osBt_B?qED!=6EXn{FR}6&9JLlSdldKM@Go=u-mXq3uY%t}?s*O@?*;MpZ-vKA4E7#_ z-yptE?-lqFCI4Tz*QC&XK7BIj(O$Q?^!RF4tcCTJ_vcOUtFZU?ZScooZ~sA9-fgnl z#oqw;rM+)){1PnhMe+9c!Yzy^KK}oMFJwIN_D}Cm{Ui73SHrWYuS!?nli(AXf95*- z3AhFJ{=5^uhWhaF*T6SYUa$Xe@bk3SAuj$F_;;)qcR1b&_ho*$#PK0m-tFS;eS-V& z&oZ9+_RPyi)tK;8{A z$(8?n_>ZbTUj>h2edzTU!4D$$={*H^T*CWSoW0+|d(ijwbLj=zrSYtpUlsL;TPzSQ=PqWaNpDTE~4XWVE-fM zJ+j~3yLNAv4eJ$?{iDij1J6T$$L9jee#*8vfn`5s>5YL=kIktGEazFf6wAE2|LP!@ z^R44&1eWLbsfy+KxWCF@mIRh5mgmtf#d+k170dJAm}`RlPULG8%k$Q+RsQ68>(@&D zdGtrj4Dsdprbh8nxu73BLBf0O+6o*v@MdOuzt zcn$hX6wCU*OY!5#_bQg>f!?!1{PoCdRej6zz(&R2KtAlcpx;D(#;g3u^TAC@z6t&B zE0*VjV`hi={~>b4^1N`;^+7Jr3*!}cq5pZsGS1CY>C5xPua*3V=vUtm?8)=OPSt+5 zBmc8v>9_qocmeURR`F$hzeVvv$BuW>Uw;R$ zQ~ba1YqUp}iDv!Pk5|sWKzz@q!xJd~xlVoo{2AIyrQ=KC-w^*C$5+Ar$Di+RR{d4> zmj~Xox6A7EijjP5t&&Us*rNE_GWM!ee6crG@lxV%RxI|1C>HzGiksjX#m$lQZi%p* z&u>eF{LA@#Y;NG?=vOP2^X!32U-o~ODwh21R_V+5wO_G}S38t`HQYzpm-4)&^rinE zQY`IvkcuzuZvqbSG@;hDZ;Wv4{`cL>Z&bvYA*w~IpdF1@~P-7@hHF{eb z0!#V!DVFjbQY_`GQSmF#AFSk3zTt{xeri_wQr@jfF6G^!SjxL!v6T0)Vkz&1@M`p= zynlc**kAAXNTj?2PeOn;3svhAr*emS4aW&+32?|*aPYIup_%iy;ZPlAWc5Bk!7 zW9h(GB44KDweWt$*Gl|s(4Pa>v;?leTz{2c@$cq&K`#C2tfs&+|KFro`qx8>Wj*k7 z#aR+Kr8&fx^}tlcdE`qK%X(m&V(G6tRsLlD&nbV({J%=^Qh1Q^pUm&e6wCa6P_fMC z!<4^dzFw_Z=I4Wo8}MJH^5=TwwaTB;{(7tWk@4gv#nK*I70dkedBxH`?^P`0%Lr8; z&7^<(%e=>uaG9Sv;Z1wO{?BsQ|493k@wd5SZC=LVIY_+yi@FXewvv6Od+N^fPPJdZ|rLxle$!k@<8 zDwQ7@uXf)O@+bE*hTR%i`s*gea{k-rwjjS9o}^gDx8cg3oJX!uav9%pN?w8f9F-sG zZv`cn{FJ#{jFB^Wj}PPl1uxlRQ9)(@z*w`FaBEb`A~kj zzpzWOj7QD42f2*zl}axD7<@;N%lYgQ#o~{ZDn0Q>m5ML@f4h=P|6i%(WFp?^1GU|AUu={7QRYs^rpscPoA~V($x-Z-a_2{+Od!*5h*(Oa6x_ z{&U2hwBOjBAwS};jY|I*-r?ncq`!;2x6+sV_gCCEqA&KhDY?}5s^uX)dHy`0So+It zD}r3^3++%W{b%q!K`!lOiDJ1=vP-et*XVz5(3krax7`<5+Sl5pf#rV1MkSZ~6^9hd z{8qm*=$}e?S1XqKsJ|=7rGKteT!BA^D1S(MT&?6XzO7OIkp4RC?qE;mx3$V2(tmd; zmiD|`*_ZY_T=_$uUsouW=hfYcrT-67{*w9ZTE+6bno=y!qbrqvH>9@ST6@B4NaFYCadoK!8 zo=cp)H{lauzn}BJ@N1;+x&I&(-H-II!4V!A;qej1eX%vle`Y;<|K2WZvR6#n!wrhB zDii-EC71a3DxL#>>r26&%*V}N4lM2U>Q#Ydy>_o+X}_x!XDev$ilsfTQ7rTM4^{e2 z@IJ*dpZ{L5w2#3me=@&ctN6My<$YbHC*?h;Sjzi9{}Re05XQl84M1eWqFR4n8De#O%MPf_Vhd2diGVDO^PKy-&ZX8 zd0lZnV&BXc4~6o``fuRFf#vyoj$(QKUZPm$zwIi11?e4B>50DwDSh#8O0l$`Ws0T! ztXG^z{&U4rAAMAMQvP!lOZjh5EamT1EbVEh;?GC?u{^?Gim>==(3(>J^m!z(_-D4_ zuM$6}cpbb%@l)_h#qzwjRS6@1SC7kF_d) zG9EN5mj2(RSlZ`XiZ{|e&i%vQt}hWT&u`y_H^bj@{5m`k=9tRJ--Rpw$lm~PeC(N= zm;B!DA4>dFV0r&vf8;VB4u!{~Ki=ubVR=uWmtO_%ek<7j94zk^^zsGp65@Zv#lIVt z_u6^+qp-Z+&T|)>#a^}3{}C+jB=qt(;kS{~tZaGU4kbV7EcSbm%lt3pIS;-|$@z1C z9QXzKjqn3Xz6gFo@k)4|%Fi13Bvqbo!2ZYV-vITG?(MQ+e7}zNyJKx&S?|t%EU>J1 zw=0(Q?wZGgT-LjT|242YKh`Lg_3aA9(!V=Z`sV(ylFRybo8qNpbcfQH{@PpRSJtz& ziYugGN?-bGy^>3R-Kp3-e=3&odyXovtY>#Bmi{_h*_ZX~TICN}uMSc9m-Xpv#j-wK zrC8Rd>lHU)|2Ab``rA&$(%<^1{C4b~=6wo`wDr$H#n<5AMge zhuFGMf8xLGDnA3t=vOLzsn0ozC4N7};;(AOgCq7TBP{dNI;Ai6Qi>-;^lKyB5aE1; zzYyUEA}r~@^+fQ8tS5GUJ+RD=hZM_v*Kd80i$7+6EwHrTC5ol}##H-MSSjnZm%vEw}FUu55d+D$AWqcm4cs=D`j{Y*jrTx4N_xsb{u6?kKPk(?1 zpieQ4{G)^U;C_7jsd+M#SIX00`9tzwtK{bn=DZp9_Nrk2@TLm7cWkK}ui7=d5BGZ*z)eyj`VO#@ii=rTiO|eQDpj6-)abtn{CclxJInUykq_ z@Go6?r2YRDUZTn;yduJ@BfKuc8za0W!rLOeQ}Gef+Z*A15&lVpcSQL65#Ac%=OVm0 z!cRqbLxjH?;k6O|QiNAU_=^!>EK}`p*!hKb-XToe{qOdPyXG8UGI|eX+k)v5eQd70dJ9PZUpx*pu?~ z*%&ucprOMgA6Sf0NQep|(-zmDG&SiWDi`nkaJ{i*|s z#hi^&Oc3GWXF{%IE&j*(JANU`ErM=fH{bBIF%|R~bS^ZV~3Jf1q z8=O|WGh(kAz4gkT_-ChLvA;&~rSJyDuSe|3_`hGt-$MSDVv+w@b0ofe zKm3yKhVu0~hyJ5jzR$W|v3wtOx8gqNA5wfW-0yqAo_xP^h~iU`S1Udfo~w8WyiD;0 z@LI)jc%R~NaI7n&Hy*A~EdCv)@+bcNtMZ5Vw~vx9p<@hJdjmul&)7e3;^!;Y$=RfNKdc~Ha|1LZR68q)yEAMF&ZPEWG`WM3T-Z|0#eHr`mZZ@Ni{*f|rc_*8f_xY6l zB)`3X3Bb=e-!wtGWzn4 zHLqV^MlSDF^YVr=a(RcEmuJh!<$Y;hF6}S1y_DtsXkLB<`Jf*M?kHnV-k0X}?9 zwUVDx@Mk650`G7<9)9gO+y6y=6a4Yx?e`gkJK&e$!}MR_yWk)7;cuh5_z%GYPOF49pZoVJiecXT%Jorekyz+ za__%S!MS5@d3`0{TNw~LHg+LA4*43VKLvgtmSI%l-vpmc{cd)ghc9IPBke`xE8%;d zw*B!O_?z&9ieHAGP<#L$s{Hvk_^00t^?wYGoP~YwkD>6ZQa+^J_#^305@x+4 zYZl>pxC8e7OTqFtfjf~)dFR0~cYjxSG2AhpB)&=`&W4SP4@dy zqTly?9w(LmD&PUCeCNV1&k6l;6#NGEWd4@;li^2B4gIYazB9SEYps(v!bckTyWNg& zh4;&ThAZC+_`slBUME||9}mD4?s-l8^)x&V``-UM;J(zK=U3qu`trB7kGJ{R3s2^G zTHa$N`TITmO#je7j=)FYT9==`Jn&ws>US_aU6ubr_*W~wA_)f~_`~N|Bg5u*Ypg*Ymoen>M+_%TU z@NulCJ&%N+Q04n9eBHgFKTLx&Uk&479sCC4<#?B$Iq;eAR>x`h$&ZKjb0_>a+MCbs zeZsU4@1J$>eDr1gCiT$;PoqBT9q)l3r2LZ{AB0aN{(8sn!@ZafsvRFg$32bmdjIu< zU&6m1aq@xi)5v}M_$2&>^3MqP?2m=^dO7@LBJ}?ma3USzXW$1J50*OnIe27tZ`WYj zuaxI@c=;#7{B;kk=aWZZJ)b-c?;*czlbQJcCGmf3zfULjUV*1I2Y>w!JRlYPe+Zsj z5%|OlY5$~OJKugk4=*LY z_*>#HhtHoM`tu`jqABF}8}K{G$2)sJgqPnO=DSzmGvTb0{|5df@xA^*_%6zSxs!jC ziSA>ttmnl)!{CQidgI^)8GHUH@`>;-lzcY){5<G}5eWq88rfggv@roQGm{ion(@Td3xR``9`x97d^iC2g6{0aW$O#A&r$xp9~VzC!% zL;F4rUaq(jJ_5`0o9JHx-&hmsuU_KU@9jFv$(!KcTodxM1pdKw!M_i~=fmEgPr=Vz z8~Xnb;FGW4+ZA{AUV$$nzux|D;RNwhPJVnP;}z+TcYH2Nd!!wvahB*0+@SFJK z9LEdbV`uX>uO0srd|GB3C*||?R}cT?bD?~#@T;(w-wTh$-@bi60Y7$Q7_YtuzW_J;{KEZTx8tQe z5B(MH1NT8Le9EX;Y`l_x8m?CIE8t4SP4Hl)e-AwLrZC=r3qJf>NbjfcTW~*@-a&W? z@$GokD|SK^>rrLzEVx;vHx8bw_3<#`r_z5Me(douAAA!&^7Sy^Zi9dPWEekR zhtK}Eu>SfZd_MDyZ-4&_zYJG9f1WX#@po?E&%p1JzHc8B;c@GNy;*P?u66M<@U~wD z|J(|9!M;B3hc_$U0Iyg2+u_H^&+*RQAK+ccE1ZAdhijF7e+H6Cu=oFY@MDj ze=@$_30Eokm*6d`J#2(GD1HTAr`pdEc$Jb5rDFFe`?c^PC0_vVSNs)tx3VVB& zAL#7=34Txcr{BfwPr%;Zh48CuL;YP0zXAL8#uWI;e+}c+Y`99L*8)!`JzxL-4EIy= zHSh%bhnGJGuU7IO!z*E5o&)eQ#eF_QdsF%s!Y!(N*T6%RJPi+0@o$HJ^i=47E8+S* z!M_{f8rY}56P~2_eYi^LUvLTipXVd*-`Vg|C0_*Jrs6*Y7ZiUVPAUCA!EY*iXK()PMHz-?-M{v>=He1ns3f-hpdcempo!FMSAU%}(H z@jUD1(*y83tViiqrvLl}9{>B`kJx9aPq;U7=}#Yn-_M8f_yTxA2kQg3zcUd&ad8-r z>)@g7%-_dY`zg_9y*=qT%eTVMVsENTf4T7YLiwM9--HJ{`3rCt{yGbLlAqnM{4M(( zq%Zt8SpMerPRb`da6I+*EAHPp9t%%;Gw`+Wh68~Y!SeUIr9DdgRj~Z+ZqHA{@^`#F zZ-bA!)A~!s&z`C}-#+-n+roP3@9>4U+V^#c{s|LU4g9|`NRA#lrsVSFA9{{XIV`JD>O-xu%gcs6|G;h?_= z9=ay*gRuNfa=(86IxK&ie5H&39K86UP~R`Xzrfx(PQDvH`%B?@>md9r`8mnSkDW~Y zz=IqQf`190>NpPHNBY%{FN1rtf3_2r=kY7y1ad!K*29@E@9p{@r{4^JoAjS^d^_Bi z{GR1_1^kZk&x7!cRiS-+9exn*?ew36AAuPrP5=2md>`!Bi$8;}BR${#{|A1R^n82& zD|{YY<>L3gg8EST82~?^(mNX-N&bd8{c89>DeviyuY>;pk8wO7egpRN(L(qg?9FuY zyWopfv)|_0^Oxb@{!7T;<2A@cO_4?<*e?;!v*TwLQ@Nj4ED)=2Gzft(P&|hwWGylG~Yn7|d zd*Cyl-`lmz#eW389=Y#t--dfVW5+9*e|Eq_S&#bmcmRI&(ZGL)`>qY+{Yle^kKE_~ zlkn||FM?lvjPqod{&@HS?EChTgs+GFczz4K;*WMbmHBoh{A1+fUHm8E>8$VPI{rR< z_J%M&{0v?I`}Xq&eB!#`zjxu`Z`=FSV*kV|k+c5k58tJK&dLpWpl7J@{{u%m3rB{E&Ux`$uCN9G_sgZ|qse z#~J=e>_y?f*!)QTb~?GV*8#DUV{bSfX85Go?;Q^?+%NVQ$JYLdG5-gito`F-$Je09 z&qw$-Al4_=-*G>~C&UK9ud4ZQh>_p&y2R;Ee?A}1(O*4Z1mC`WZa_*ST|nee-?AJ1Fh0rU_4Gx6``!;P?2XXMEEwR|0nqU&0+ld z0DhPL=;x=Cr=w4QB-q$H3x0w5y}#r0;HT-|zP={HN4{Y z&V>J>cr$$ce}(K_}M0q>T^%#YZ+$;9{m z;{GWd{M#$GFe1MV_J41!KNAwQ& z{t_F(-;yiDMx>I3WNbu3dwXm|V_Qp0x>dr`4INF1dHG~ZI%fZ#-H1Xm-;^$tQlhn+ zLL!s$I>}tFL_yg7!OWnNNo3Ot(^((DpUW$WBOHk%LCwkbW*wy|pUgF98Y#krnbSuk z3x#~9p`(z7+ZVSKk`4Ud++N7rPxk*-6dOkwNv=KJno8u;xwh7J$!&A8HI+>#@LS{jL^74ir`sj7E?DxM zlkz1SP)fG6b(o?$Y5SsNE)mTdkx6<~Y)T@C^XWoIzBREhneD)eO(bT-CSA#unCd8G zjHguD6V~yCVy#wE94YT8``>8$AGIWb@BducGs>H2I+^WQ_ zO5Cbg(I~4p%8^wZWfezR#VV^(WmT%IN|jZqvMM%gv{f8!6-T>3t2o*!jtt53+NxArm1?U}ZB?qRiu-L9$63X3R&ktF9A{MG*7tGi z`*@{MiB}qxxb?mDXx#cfZharOzK>hq$F1+hqJCXH$-1?qBwkfq5 zx4w^C-^Z=*-)I%ecbxq*|)xrTi?g6@8hFw0qk#6P@AMp(I#lqv&q@iY+^Po zo0Lt-CSg;s30V8KYHiKhinaA>tJT)3$%3s@Tcx%}ZH10CS+mt?YtvSytxH>#MrE9- zNL!D#8f`5~B{CdTno(|Kr5zC~%}6)0(u{Q@E8U1;Rb)7k@x!W&v??R5iWSAJV%(8c zj9bOHRUBniMp>0nR%Mh`8D&*$Sd~?*vWitM&?;70#nDz}v{e~xRYqHt(N@L67^^tO zDvq&=W1P$?jq7(YW<}-1DubFwP`EU)}^gVqf%{Z$=0K-Mq7)v5^WvY zDzr6dE0FrTdUE}BGiF}JUl5)?xz4Qw63NC!nG6#xY1UX}0~4uqdm+!mBi-6qv|AErRSIoBMk5P@rgUi;bQms?5+|~m z1s$1Grm#4XYirB8q9w~&IckiC|3i#<>0%K|a+J-qWQzXgFT`hB66UvA@UU`AsU1- z%ZEm@RT8CKn{Tul-7*z1-%ai_9ns6t5i$$YG|X%^(I%_+4^^O;qwbi4Or7b6JDWKIdo8eOL3+W&oZ?o#63Bl zhLic?^x#FVdo=N2+Ji=GM@v-Hnl3DA%NNJ;R<>&r?S*vC=b7V3m`>&sOrcH1xw5=8+DnyIbEc^|QD|mO-Q1Qf z_LLqKj%KN?C7npM$@X2ydoi!gL3$J$#RWmRkw9h2Jb@e~(Fr!ow(NAqJ#MCB;fq@X?3YEgEy_@P*?MAkzSSFyV}O38}O(q&b0^D#Vd7BaNp(zT}wGAmDE zZ%l9hT9+2fuSF#jD6OsC?64O){dziV9rF(Qb~ zZ0E>t*|g+0TcrGECz9VrDjSxC5wdN_ZzGirLq3~u*)S}OkgY;~n-JL~ER0}F&~GhF zo0O=Xb$QLSiHWHb>Za=8`pI?mHqahbFzY8%?5`+dH$)MRZp)SiES6&xyThMj_nk+6 zPA#$-hIu&w=*ajjd7ikMvZW!d4L*dGM~7FCjrA&tXaa+d_NTKY$1>UE;)GiXkz`Dk zO)|xZ0Ubk5hpLWUrWAIexRz#c#H>_|0|@ClqW4@!Lpcr;5*J z!;1~y%O})L9#fT=P*Xc~!sV0eJx`x8DN#S+@|wwCTb+(``L;q^BilNr>RQ_hnR$yjU+QR`AIrCM$ipU6(LPNf z&03aitrq%UroFATyN*1AvpR~=W%IZ!6eZTt-jGT(HfH$MBIj|6+w!Jq7Zoz|yu3LR zRJB$in@=zBN*N?Y5I>3_J};4J$(ar!ALZ!Hr04>v2id3Pw`pJO&rVD%%Cw@AXkxc3 z5T-lW8kDKHF`wbAFdt;Hw5J}*i55}N*i=S}nLLQ+3zLW)n^kxDq{QVj>I9rA6EtyN zQ;<(I2aa`xd{k?asn(zvSlhCp*K{yq%*&*W5u5Imbit)#{89`o6G16Z0;@T#l|g%6 zvN2sIXEp32PMZ{RX1R>w^a)qbx?;k_`dKq4&rH?^~5~g#R=S43tgCGa6>3nN4E9wlUZ5@R~LxVKGfO52}u^X2Lv_`R^ zTS!zRqLAa!Sq8e0C?T}nGC@4S7YeejPG+;R)0t>s@Zl7=TiirCo0ccs_U;l{JLTJY zjwvGu*9S;F)1KfFJVhU3Z&w>C^;jG6&7_xUTbORN%!JsIYctO_&FL(=1*{YpR77 zh;FErGl9IM6&ZTFhs4?>T3b8A7W*D}vU4$04naV(1U994eq|CO%Y}~iVsJ|%_beFD z(~SieyO3<3Uo^$w#^)(wK*l-7)sILar~CU-j0osDVpG!|=L+%64A@-Ks{9Mmv}%VaInx|`QoP|5Ue$sVD`?HOv^ zMUbN%RNS$goR_kCbBj1RujG6nDnt;1x~I zTt{@IG7H-?qY~}&Gr0txD-$fi=uh+x+Uj6KG=%8QcuR$0P3MTcHV-Hfugq{6)@cc~{&UoUeL zsYDv?BNcNU}jj}U2Bz?k1< z)=4+oy(b(YcMIh~n;EaQsnBet^Kx$Pz`8s(BwE{KzouR5ENVcuD>E@Q4nN7$*n=e)?$KfopX$AN?WlG0sO(K+vtjZ&fw2E{=EEMuQj93>* zKPX{obyLKJOgC7QlTmYt%}#J(+GMXe^B1GH+@a!bNtl!#WS2MM? z<>kDATF-KGk1W$;*dR1l@njJvpAAiD36I852dX0WZgo+ z&3Z+AX)KuKjOZ41!~+i8s>d%!WmhO7agHt@N~4>X?66r@jUlpfG8O9=Sav~gm%kCC zrdQBLs62Z|G?C*>iW2#eKNVWLJQ$nlENud9WoOxA^~*JkSX0!1jP8CF$1!%gHPMk{ z;hB!HbHRO!MJy@hVa0xum8oepW{E0W%w}sqZ_9*!@2;@=`@iL`j=Jf=WWtQX>f)%E zg?phYnKIttPop;Elk``!^=*E&E^J{L%spH24I5o%QHmPVjrB~rz?GXO)3fnGYbwde z!TyJ=zol?~%gTVAq7vy8HvvbEQ-g*~9ITFFrU3qI*XFvAm*GT)d_P{>$*j7BbBn7b zgT--7)?tau>*{ExP4awWW+s+QE`^qkPCBo@bs^W5nI7B(>MxYYGkm^<6AE{J=r>Dy zx?Pd*%LHqHVVky?V!8;7gV+O==28rkho?|&4RqoBVz*X|wQ+ShX_w^AG42YK-6<{& zW2?dis7p#Eie_`#>BwihyJQ1g!WOz6$jRZ575S=@kp&NOKALS~F<^ye@ai;kf(_s) z#EE#AG&iOaTHM~j;6ib&ve}S!ALUAxJ#Nw^=n#97ap`QF(8!LatTp_bS0-hY`|S*W;aZpv$u%bvY@Lma+pAMWO&4BO8f-mnj9JH$W3$VY zE96~NeI=?)P>H?r^K}57O?iq9jb_Vi!<)ea&BtDJvw=!zML|K>pqR2Xre#*^}9>T>)iOj9! zy2Vl9M~hR;R8K~W3f;36Ny3~g+2v#?6SZz;Fj>QPv(QZ#&8b}rn+;W+zkK>;cBZmYLZcb&Krcwr#GVTSzO5Kv{A7wm>VFB@J70 z3>B=gJ=>i_Y1^_H5Ec5{4KhtMu;OFkli_Bo{F|gYN2~*&-x{0C?B!33`f!NZKbFp?Oc3Q3^400*B*si_@+uh=q z&wkHp|6rmeRZ`4fq{DQ#RZgK>8G2GOX_k2FsG9$H>ZOH|1wFG3kF`{cA5(ordFD~S z_-yWbMo%(dz@y2FW&2R2VzE9{)3-LIC_(l>txTp%g+AA2D3-;yxWj;~w~LTZ+o4bb zi~(9Sk4X(29?6JVCa^eI8}$x3jftx3z@oaFFU0e*nD+%J6YR6zgQ)21qsc$aeo32= zudkYCbiegMxuan|Q*P$q~vM0Sd# zoNBwlNlibn8wxH&o*3Q7(k&hr7}=ubj~*-6W-F_XJdc*;Z!&Hm3>pIuj3Ea=*zc$(1FOf<4AF z+wd&bc)p7&*dTM*H=}m))rq+luP4RU!|; z=E$KK$^yu2g|RCsJ2Z0rS?(ug^5!B&i5g>kBWDG9bGgjtRpPVd&CVbv)>*P!5~US$ zWuw_GX}Qg1H_nu5E%SEzb!VX^CKT0o*h?$y}~Z-wmSe4d+hp6WOem?ZAk0d@9r ziwTmObd%E4q(c>XO1dyLlM2`5O0TUY5Qn>W_KI9Yqtsj-uf51w>oqlr8M$=p13Gf02|?Mcau}R< zbw#>$g|^_@x{h|7>#Wtv9-ndjOncGNCNh(6J+ol34!)u-Kh0l1v|=K3bG=Hju0XR` zh(V`aNKLNQG_5dC(B21iXLxj$!aS=#F`K`FJ#H=|IxcXPkm6aQUFjMJLlZ1&pf4A* zymKeYcT|iG<)Ufr(GZG7j0x_QD<(2QQP!y=F3Bpsu9q`g`I>Y(N10fhO3wK#_Yf^i zG}pfx+S=`Lu)hmdXhT&tOXaqJ?Qs6msv*zPcaLdX`mP)*>V@`ieVhtv9ZeSGH;FmIU6prKTwtcs*5cGWyU;e z*lEVxx(o`kx>o|fZOB<`_e+}YiI7Q_`(qrl7Izu#s!|RW<9K_o4;HQT)aPG~dJqgc+j?DrgcyxJO6x;cqm z;9{|Y>j>@U0(tZocYTEa^!Bl zLMR{H_GT>8N@9F%zqqPlSDROZ6<-Bbd{3BsFtO!>kL_M(X8)5zVE4%=vSjG2;yoe> zc`I5XEx-MxA#)3dp~?1ezGA{^%zZ_|2Kjp-zJzj9FESqZyAI|GO!2;ox&`7Cjv|uL zfgaV#8w{GcvZ~Ch#5#spT+~ZQ8wNc8Oto|YAS$>h-L$Tp@lcka2wG6 zXTxj^n})3`n-ta4t)nN>Wdfx!x$N_*0xn@QsLxg= z@-z6SQ>w(?Zfo2`^Z6SV(d*ayn3#J-rP1>?q@4b<2nL`h@6Gf-UdAhQOZ3h}Pu|z+ zf4tre1o+P)I}bhamH+Xwn+forMK+>`{M{bW8-<>Z=Re;Y(W^pF-aqSqyxvy{@SjCC zxrh8c6Va Date: Thu, 30 May 2024 17:58:52 -0400 Subject: [PATCH 2/5] Update emulator_tests to test with different ledger models --- .../tests/test/emulator_tests.rs | 123 ++++++++++++------ .../stellar-ledger/tests/utils/speculos.rs | 24 +++- 2 files changed, 105 insertions(+), 42 deletions(-) diff --git a/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs b/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs index eca77fc2bd..368510acb6 100644 --- a/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs +++ b/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs @@ -33,15 +33,29 @@ mod test_helpers { } } -use test_helpers::test::{emulator_http_transport::EmulatorHttpTransport, speculos::Speculos}; +use test_helpers::test::{ + emulator_http_transport::EmulatorHttpTransport, + speculos::{Args, Speculos}, +}; #[tokio::test] -async fn test_get_public_key() { +async fn test_get_public_key_for_different_ledger_devices() { + let device_models = ["nanos", "nanox", "nanosp"]; + for device_model in device_models.iter() { + let args = Args { + ledger_device_model: device_model.to_string(), + }; + println!("Running test_get_public_key for {device_model}"); + test_get_public_key(args).await; + } +} + +async fn test_get_public_key(image_args: Args) { let docker = clients::Cli::default(); - let node = docker.run(Speculos::new()); + let args = image_args.clone(); + let node = docker.run((Speculos::new(), args)); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); - wait_for_emulator_start_text(ui_host_port).await; let ledger = ledger(host_port); @@ -65,12 +79,22 @@ async fn test_get_public_key() { } #[tokio::test] -async fn test_get_app_configuration() { +async fn test_get_app_configuration_for_different_ledger_devices() { + let device_models = ["nanos", "nanox", "nanosp"]; + for device_model in device_models.iter() { + let args = Args { + ledger_device_model: device_model.to_string(), + }; + println!("Running test_get_app_configuration for {device_model}"); + test_get_app_configuration(args).await; + } +} + +async fn test_get_app_configuration(image_args: Args) { let docker = clients::Cli::default(); - let node = docker.run(Speculos::new()); + let node = docker.run((Speculos::new(), image_args.clone())); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); - wait_for_emulator_start_text(ui_host_port).await; let ledger = ledger(host_port); @@ -90,12 +114,22 @@ async fn test_get_app_configuration() { } #[tokio::test] -async fn test_sign_tx() { +async fn test_sign_tx_for_different_ledger_devices() { + let device_models = ["nanos", "nanox", "nanosp"]; + for device_model in device_models.iter() { + let args = Args { + ledger_device_model: device_model.to_string(), + }; + println!("Running test_sign_tx for {device_model}"); + test_sign_tx(args).await; + } +} + +async fn test_sign_tx(image_args: Args) { let docker = clients::Cli::default(); - let node = docker.run(Speculos::new()); + let node = docker.run((Speculos::new(), image_args.clone())); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); - wait_for_emulator_start_text(ui_host_port).await; let ledger = Arc::new(ledger(host_port)); @@ -156,7 +190,8 @@ async fn test_sign_tx() { let ledger = Arc::clone(&ledger); async move { ledger.sign_transaction(path, tx, test_network_hash()).await } }); - let approve = tokio::task::spawn(approve_tx_signature(ui_host_port)); + let args = image_args.clone(); + let approve = tokio::task::spawn(approve_tx_signature(ui_host_port, args.ledger_device_model)); let result = sign.await.unwrap(); let _ = approve.await.unwrap(); @@ -176,12 +211,22 @@ async fn test_sign_tx() { } #[tokio::test] -async fn test_sign_tx_hash_when_hash_signing_is_not_enabled() { +async fn test_sign_tx_hash_when_hash_signing_is_not_enabled_for_different_ledger_devices() { + let device_models = ["nanos", "nanox", "nanosp"]; + for device_model in device_models.iter() { + let args = Args { + ledger_device_model: device_model.to_string(), + }; + println!("Running test_sign_tx_hash_when_hash_signing_is_not_enabled for {device_model}"); + test_sign_tx_hash_when_hash_signing_is_not_enabled(args).await; + } +} + +async fn test_sign_tx_hash_when_hash_signing_is_not_enabled(image_args: Args) { let docker = clients::Cli::default(); - let node = docker.run(Speculos::new()); + let node = docker.run((Speculos::new(), image_args.clone())); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); - wait_for_emulator_start_text(ui_host_port).await; let ledger = ledger(host_port); @@ -202,9 +247,20 @@ async fn test_sign_tx_hash_when_hash_signing_is_not_enabled() { } #[tokio::test] -async fn test_sign_tx_hash_when_hash_signing_is_enabled() { +async fn test_sign_tx_hash_when_hash_signing_is_enabled_for_different_ledger_devices() { + let device_models = ["nanos", "nanosp", "nanox"]; + for device_model in device_models.iter() { + let args = Args { + ledger_device_model: device_model.to_string(), + }; + println!("Running test_sign_tx_hash_when_hash_signing_is_enabled for {device_model}"); + test_sign_tx_hash_when_hash_signing_is_enabled(args).await; + } +} + +async fn test_sign_tx_hash_when_hash_signing_is_enabled(image_args: Args) { let docker = clients::Cli::default(); - let node = docker.run(Speculos::new()); + let node = docker.run((Speculos::new(), image_args.clone())); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); @@ -231,7 +287,11 @@ async fn test_sign_tx_hash_when_hash_signing_is_enabled() { let ledger = Arc::clone(&ledger); async move { ledger.sign_transaction_hash(path, &test_hash).await } }); - let approve = tokio::task::spawn(approve_tx_hash_signature(ui_host_port)); + let args = image_args.clone(); + let approve = tokio::task::spawn(approve_tx_hash_signature( + ui_host_port, + args.ledger_device_model, + )); let response = sign.await.unwrap(); let _ = approve.await.unwrap(); @@ -334,32 +394,19 @@ async fn get_emulator_events(ui_host_port: u16) -> Vec { resp.events } -async fn approve_tx_hash_signature(ui_host_port: u16) { - for _ in 0..10 { +async fn approve_tx_hash_signature(ui_host_port: u16, device_model: String) { + let number_of_right_clicks = if device_model == "nanos" { 10 } else { 6 }; + for _ in 0..number_of_right_clicks { click(ui_host_port, "button/right").await; } click(ui_host_port, "button/both").await; } -async fn approve_tx_signature(ui_host_port: u16) { - let mut map = HashMap::new(); - map.insert("action", "press-and-release"); - - let client = reqwest::Client::new(); - for _ in 0..17 { - client - .post(format!("http://localhost:{ui_host_port}/button/right")) - .json(&map) - .send() - .await - .unwrap(); +async fn approve_tx_signature(ui_host_port: u16, device_model: String) { + let number_of_right_clicks = if device_model == "nanos" { 17 } else { 11 }; + for _ in 0..number_of_right_clicks { + click(ui_host_port, "button/right").await; } - - client - .post(format!("http://localhost:{ui_host_port}/button/both")) - .json(&map) - .send() - .await - .unwrap(); + click(ui_host_port, "button/both").await; } diff --git a/cmd/crates/stellar-ledger/tests/utils/speculos.rs b/cmd/crates/stellar-ledger/tests/utils/speculos.rs index 52dc506851..caccdfc389 100644 --- a/cmd/crates/stellar-ledger/tests/utils/speculos.rs +++ b/cmd/crates/stellar-ledger/tests/utils/speculos.rs @@ -43,13 +43,29 @@ impl Speculos { } } -#[derive(Debug, Default, Clone)] -pub struct Args; +#[derive(Debug, Clone)] +pub struct Args { + pub ledger_device_model: String, +} + +impl Default for Args { + fn default() -> Self { + Self { + ledger_device_model: "nanos".to_string(), + } + } +} impl ImageArgs for Args { fn into_iterator(self) -> Box> { - let container_elf_path = format!("{DEFAULT_APP_PATH}/stellarNanosApp.elf"); - let command_string = format!("/home/zondax/speculos/speculos.py --log-level speculos:DEBUG --color JADE_GREEN --display headless -s {TEST_SEED_PHRASE} -m nanos {container_elf_path}"); + let device_model = self.ledger_device_model.clone(); + let container_elf_path = match device_model.as_str() { + "nanos" => format!("{DEFAULT_APP_PATH}/stellarNanoSApp.elf"), + "nanosp" => format!("{DEFAULT_APP_PATH}/stellarNanoSPApp.elf"), + "nanox" => format!("{DEFAULT_APP_PATH}/stellarNanoXApp.elf"), + _ => panic!("Unsupported device model"), + }; + let command_string = format!("/home/zondax/speculos/speculos.py --log-level speculos:DEBUG --color JADE_GREEN --display headless -s {TEST_SEED_PHRASE} -m {device_model} {container_elf_path}"); Box::new(vec![command_string].into_iter()) } } From f4c593f7c20da7d59e5fe2f33d508b6ff7e4614d Mon Sep 17 00:00:00 2001 From: Elizabeth Engelman <4752801+elizabethengelman@users.noreply.github.com> Date: Mon, 3 Jun 2024 15:35:09 -0400 Subject: [PATCH 3/5] Increase timeout in emulator_http_transport --- .../stellar-ledger/tests/utils/emulator_http_transport.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/crates/stellar-ledger/tests/utils/emulator_http_transport.rs b/cmd/crates/stellar-ledger/tests/utils/emulator_http_transport.rs index 66454254ca..c90c28d920 100644 --- a/cmd/crates/stellar-ledger/tests/utils/emulator_http_transport.rs +++ b/cmd/crates/stellar-ledger/tests/utils/emulator_http_transport.rs @@ -72,7 +72,7 @@ impl Exchange for EmulatorHttpTransport { let resp: Response = HttpClient::new() .post(&self.url) .headers(headers) - .timeout(Duration::from_secs(20)) + .timeout(Duration::from_secs(25)) .json(&request) .send() .await From 93afad14fca6fa5a210767e4721b4b3cf06e6149 Mon Sep 17 00:00:00 2001 From: Elizabeth Engelman <4752801+elizabethengelman@users.noreply.github.com> Date: Mon, 3 Jun 2024 16:12:13 -0400 Subject: [PATCH 4/5] Use test_case crate to parameterize emulator tests --- Cargo.lock | 34 ++++++ cmd/crates/stellar-ledger/Cargo.toml | 1 + .../tests/test/emulator_tests.rs | 106 +++++++----------- 3 files changed, 75 insertions(+), 66 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2172171c53..a5ff33c99e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5033,6 +5033,7 @@ dependencies = [ "stellar-rpc-client", "stellar-strkey 0.0.8", "stellar-xdr", + "test-case", "testcontainers", "thiserror", "tokio", @@ -5285,6 +5286,39 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", + "test-case-core", +] + [[package]] name = "test_custom_account" version = "21.0.0-rc.1" diff --git a/cmd/crates/stellar-ledger/Cargo.toml b/cmd/crates/stellar-ledger/Cargo.toml index 89676db08c..8fa593a5af 100644 --- a/cmd/crates/stellar-ledger/Cargo.toml +++ b/cmd/crates/stellar-ledger/Cargo.toml @@ -49,6 +49,7 @@ once_cell = "1.19.0" pretty_assertions = "1.2.1" serial_test = "3.0.0" httpmock = "0.7.0-rc.1" +test-case = "*" [features] diff --git a/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs b/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs index 368510acb6..d5a1e6424b 100644 --- a/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs +++ b/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs @@ -33,26 +33,21 @@ mod test_helpers { } } +use test_case::test_case; use test_helpers::test::{ emulator_http_transport::EmulatorHttpTransport, speculos::{Args, Speculos}, }; +#[test_case("nanos".to_string() ; "when the device is NanoS")] +#[test_case("nanox".to_string() ; "when the device is NanoX")] +#[test_case("nanosp".to_string() ; "when the device is NanoS Plus")] #[tokio::test] -async fn test_get_public_key_for_different_ledger_devices() { - let device_models = ["nanos", "nanox", "nanosp"]; - for device_model in device_models.iter() { - let args = Args { - ledger_device_model: device_model.to_string(), - }; - println!("Running test_get_public_key for {device_model}"); - test_get_public_key(args).await; - } -} - -async fn test_get_public_key(image_args: Args) { +async fn test_get_public_key(ledger_device_model: String) { + let args = Args { + ledger_device_model, + }; let docker = clients::Cli::default(); - let args = image_args.clone(); let node = docker.run((Speculos::new(), args)); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); @@ -78,21 +73,16 @@ async fn test_get_public_key(image_args: Args) { node.stop(); } +#[test_case("nanos".to_string() ; "when the device is NanoS")] +#[test_case("nanox".to_string() ; "when the device is NanoX")] +#[test_case("nanosp".to_string() ; "when the device is NanoS Plus")] #[tokio::test] -async fn test_get_app_configuration_for_different_ledger_devices() { - let device_models = ["nanos", "nanox", "nanosp"]; - for device_model in device_models.iter() { - let args = Args { - ledger_device_model: device_model.to_string(), - }; - println!("Running test_get_app_configuration for {device_model}"); - test_get_app_configuration(args).await; - } -} - -async fn test_get_app_configuration(image_args: Args) { +async fn test_get_app_configuration(ledger_device_model: String) { + let args = Args { + ledger_device_model, + }; let docker = clients::Cli::default(); - let node = docker.run((Speculos::new(), image_args.clone())); + let node = docker.run((Speculos::new(), args)); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); wait_for_emulator_start_text(ui_host_port).await; @@ -113,21 +103,16 @@ async fn test_get_app_configuration(image_args: Args) { node.stop(); } +#[test_case("nanos".to_string() ; "when the device is NanoS")] +#[test_case("nanox".to_string() ; "when the device is NanoX")] +#[test_case("nanosp".to_string() ; "when the device is NanoS Plus")] #[tokio::test] -async fn test_sign_tx_for_different_ledger_devices() { - let device_models = ["nanos", "nanox", "nanosp"]; - for device_model in device_models.iter() { - let args = Args { - ledger_device_model: device_model.to_string(), - }; - println!("Running test_sign_tx for {device_model}"); - test_sign_tx(args).await; - } -} - -async fn test_sign_tx(image_args: Args) { +async fn test_sign_tx(ledger_device_model: String) { + let args = Args { + ledger_device_model, + }; let docker = clients::Cli::default(); - let node = docker.run((Speculos::new(), image_args.clone())); + let node = docker.run((Speculos::new(), args.clone())); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); wait_for_emulator_start_text(ui_host_port).await; @@ -190,7 +175,6 @@ async fn test_sign_tx(image_args: Args) { let ledger = Arc::clone(&ledger); async move { ledger.sign_transaction(path, tx, test_network_hash()).await } }); - let args = image_args.clone(); let approve = tokio::task::spawn(approve_tx_signature(ui_host_port, args.ledger_device_model)); let result = sign.await.unwrap(); @@ -210,21 +194,17 @@ async fn test_sign_tx(image_args: Args) { node.stop(); } +#[test_case("nanos".to_string() ; "when the device is NanoS")] +#[test_case("nanox".to_string() ; "when the device is NanoX")] +#[test_case("nanosp".to_string() ; "when the device is NanoS Plus")] #[tokio::test] -async fn test_sign_tx_hash_when_hash_signing_is_not_enabled_for_different_ledger_devices() { - let device_models = ["nanos", "nanox", "nanosp"]; - for device_model in device_models.iter() { - let args = Args { - ledger_device_model: device_model.to_string(), - }; - println!("Running test_sign_tx_hash_when_hash_signing_is_not_enabled for {device_model}"); - test_sign_tx_hash_when_hash_signing_is_not_enabled(args).await; - } -} +async fn test_sign_tx_hash_when_hash_signing_is_not_enabled(ledger_device_model: String) { + let args = Args { + ledger_device_model, + }; -async fn test_sign_tx_hash_when_hash_signing_is_not_enabled(image_args: Args) { let docker = clients::Cli::default(); - let node = docker.run((Speculos::new(), image_args.clone())); + let node = docker.run((Speculos::new(), args)); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); wait_for_emulator_start_text(ui_host_port).await; @@ -246,21 +226,16 @@ async fn test_sign_tx_hash_when_hash_signing_is_not_enabled(image_args: Args) { node.stop(); } +#[test_case("nanos".to_string() ; "when the device is NanoS")] +#[test_case("nanox".to_string() ; "when the device is NanoX")] +#[test_case("nanosp".to_string() ; "when the device is NanoS Plus")] #[tokio::test] -async fn test_sign_tx_hash_when_hash_signing_is_enabled_for_different_ledger_devices() { - let device_models = ["nanos", "nanosp", "nanox"]; - for device_model in device_models.iter() { - let args = Args { - ledger_device_model: device_model.to_string(), - }; - println!("Running test_sign_tx_hash_when_hash_signing_is_enabled for {device_model}"); - test_sign_tx_hash_when_hash_signing_is_enabled(args).await; - } -} - -async fn test_sign_tx_hash_when_hash_signing_is_enabled(image_args: Args) { +async fn test_sign_tx_hash_when_hash_signing_is_enabled(ledger_device_model: String) { + let args = Args { + ledger_device_model, + }; let docker = clients::Cli::default(); - let node = docker.run((Speculos::new(), image_args.clone())); + let node = docker.run((Speculos::new(), args.clone())); let host_port = node.get_host_port_ipv4(9998); let ui_host_port: u16 = node.get_host_port_ipv4(5000); @@ -287,7 +262,6 @@ async fn test_sign_tx_hash_when_hash_signing_is_enabled(image_args: Args) { let ledger = Arc::clone(&ledger); async move { ledger.sign_transaction_hash(path, &test_hash).await } }); - let args = image_args.clone(); let approve = tokio::task::spawn(approve_tx_hash_signature( ui_host_port, args.ledger_device_model, From 87119c39521c2814857a577701f2f963c49cc5f5 Mon Sep 17 00:00:00 2001 From: Elizabeth Engelman <4752801+elizabethengelman@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:12:39 -0400 Subject: [PATCH 5/5] Wait again before checking if the emulator is ready --- cmd/crates/stellar-ledger/tests/test/emulator_tests.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs b/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs index d5a1e6424b..a1243befe8 100644 --- a/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs +++ b/cmd/crates/stellar-ledger/tests/test/emulator_tests.rs @@ -352,6 +352,7 @@ async fn wait_for_emulator_start_text(ui_host_port: u16) { if events.iter().any(|event| event.text == "is ready") { ready = true; } + sleep(Duration::from_secs(1)).await; } }