From 446b01247ed16eb4c8c0e1de17b496da90f22245 Mon Sep 17 00:00:00 2001 From: Ji Hwan KIM <125336262+jhkimqd@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:49:28 +0900 Subject: [PATCH 1/7] docs: update acl in readme (#322) Signed-off-by: Ji Hwan --- README.md | 2 +- docs/cdk-policies/01_policies.png | Bin 13956 -> 0 bytes docs/cdk-policies/02_policies.png | Bin 50908 -> 0 bytes docs/cdk-policies/03_policies.png | Bin 158547 -> 0 bytes docs/cdk-policies/04_policies.png | Bin 52780 -> 0 bytes docs/cdk-policies/doc1.md | 59 -------------------- docs/cdk-policies/doc2.md | 90 ------------------------------ 7 files changed, 1 insertion(+), 150 deletions(-) delete mode 100644 docs/cdk-policies/01_policies.png delete mode 100644 docs/cdk-policies/02_policies.png delete mode 100644 docs/cdk-policies/03_policies.png delete mode 100644 docs/cdk-policies/04_policies.png delete mode 100644 docs/cdk-policies/doc1.md delete mode 100644 docs/cdk-policies/doc2.md diff --git a/README.md b/README.md index 5fa562ae..e88033b2 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,7 @@ This section features documentation specifically designed for advanced users, ou - How to deploy [additional services](docs/additional-services.md) alongside the CDK stack, such as transaction spammer, monitoring tools, permissionless nodes etc. - How to [attach multiple CDK chains to the AggLayer](docs/attach-multiple-cdks.md). -- How to use CDK policies ([doc1](docs/cdk-policies/doc1.md) and [doc2](docs/cdk-policies/doc2.md)). +- How to use CDK [ACL](docs/acl-allowlists-blocklists.md). - How to use the different [data availability modes](docs/data-availability-modes.md). - How to [deploy the stack to an external L1](docs/deploy-using-sepolia.org) such as Sepolia. - How to [edit the zkevm contracts](docs/edit-contracts.md). diff --git a/docs/cdk-policies/01_policies.png b/docs/cdk-policies/01_policies.png deleted file mode 100644 index 975f42136bf82f05932e8ff08048a9865d709aeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13956 zcmd6O1yGgmy6;j^EWn~m;jb8UH!7)=3eq7U-JJ`ts6~h-*mKd7tN3%m0~zG|@$>izpO|=!uNP3l!=!9sGC8 z`E&69x3Z#7;0uBM<0s1J;h)F(*M9IlrGuoJgOat8gR`EUAZY=(r6K$fh2muAWRc7WtZ5cQCAP;nS_(I4mnON z-?hf4kDX-BzdHRM9jg5>MXjL7vFvTe@s(bUj9#+>4L3{4OWiu=TV@4?+Zq^+Z0{Rb zf*a>$2QOTCb0zoVd;GARr`L45sSkn7jwF9#Y4N zc~xfk`oX_f%lM1%MP?^q;uZq~gF@ne^#wPCCB1TWUd||wQdL#8)hKT*UPje84;y&0 zu(+6mwNNN4eCzAyAWK9pwj`*U8Bv+A{-WlDVSfic3l+r=}h|I`R+^S?Y|X$@eDRh1b>TKcBl&;*G&vBE!t2 z>Pr6>mnbC-YnuK{q8hpw%2i57DlG9svn!G~6k{*NuDW_9)Jif>MS^w7tV(*5_y&CU zTYS3vhOmT$;K#SVjX&?XAP*Yx-#zGm`SkzY5C6R~%_Actei+P|Z<(3F>FLZUx6Qdn zCMI`LvmNoXtx;TYD$-YtU#woaS`xs($mqH=>U^rPqrLRXB?2tIKKcmuV_% zty~=r8nlwJPqbMWPCvA;U>5he{JXC1XI>h^K-8%-=RSV^+?(PkBO^26Lv1zJD=4%0 zt1c0fO|bco&F*Vq_Xa(uf@iMlcV`RJzi0l)&P%&9;J>UXJRaZZBS{WNPb^O@>e6_eeYGlOUebtqr^5~`!CZ*#x zbYG-ld{>}wp;;j{!OyR;>Yj^MgI2i*MgHrv$M@!0R-Emb*2Ty=8PN>x^f8k1Z#D?C zMm;v#TwGoC^02$BH6%}-Jkjg^@q~bYz-E8b^!RwEN=aF{7hmjow9ny$S9>fjo}-aL zBkB>^m!_(uqGI&f*4`f1uW5aDVx+`AUAruN4cEYBF~|<<&&S!jckIar|4pT2Cg$fTy^%sr$r5YeTGD-AclYb zAxP_M?n;zaFLPpvpE@1R-c2s@I9&A=`v>0LTNJ%-b8@sJgs+b~3VTxsCJuE9)3#-j21a<%zF zmo)th{Lion+v57FWQF3=241yme+9fBrDD;dhK7wkh9gdw6qM0IxlN| zb(y+wyw~AHHT>t#AGK14dq)R5&ioBEBx0@cCx^zKYZ%>5_}6YcHQs8(_51g4<(DsQ zj}Kja(PWqp-@e^!Zf^ed>lb^WyPMm!YuDb^=_izz$HEc__SV(aebA|Jd#PpGQ8W0e0_uf6z9Ib~BQI8%y zdWdTc{PVaWQ$$fw@$l&A-u?T3YHHqn{CK53PG~@Xu>7kUGuc=7Wq~BQsBVk#a@P%) z^(H24fw^i~hnUp}Kk_RN4-c9`HnnW;0bQ>+vE#Lnhq$VFB}I|5)m6t^Y`EDUKmPGt z4~s{wZVy{;l#L$|dv9(!B(}yMZziW*6L#BL_z)jYzqPeB{rB$+P0e9_0WmSLw{PD< zuloG?v(`G#kWtS-RGNSN#J6UpIcd z70Yk?7OEef2zt&)RbR900W$=2puIIe>5kJx=hJgd)K~&rHDdo+`dEPwV~nU!a{QZ=>z03 z@80!;8s)VZ?8F}`3a=47P|ZY+65qH-55KjoEr;_snh%S`*4Eap?o^%7Iy*Z<8B1zu z(MX5T%|My+J#Lt+@r@F4W}R)1L-w?2+>@G*kMD15R884Rr7RkKL@GuOSNP}lZRmC+ zz9b#Le%*!kAM|&#wpQZPr%(J&c#1NorSFA>;eLMSVItKuhBDG>SfBt5@Y_xijC*Vl z@$m4VF4ORTeE*&xm|jf5$mmXAUmx5P`|HLlQXzD0v+-WbHo?Wk{Jd5pGLIgeIzB!Q zq~Zzq{P_m*azjG{40d(0<^mBB(#~i^+-`(5Nj!ae5qdUKkAZ=geeJjBdwii=DLs4k zDi-I)i{5v@%@WeNc;gyEaIjpy^qw-%<>$K+3EvTt7;XG*vlQK73=!6UAFL>L^jQ)^ zrdOb`H?~vRkQgF*k-IQ8U905N!h#tLwl;X43zsf2LPdT0bWJLl#x$0VgCq2-i2DmQ zHIw|mSc^hp`uFoVoVdC=WtvLHcj#;|SGv2qDLC{A;?dhtSMTBz3{H-Zkn!Z>a}J7$ zg4^UuqI8JSXsKhp01k(P={C7J--92kh-q$q3e6WP%NReHlde+{y|A!AjHa>MG8J5M zY-TgH$+INI`eJ#@=rxV%!glt2FX$1a2Ck`T6hOXWo zDR~I1ei~UWvZP!eTgFXsN8M{Hj2sskwP-cMZ3>(055! zSJ&6xVkqCA%eeiSs;ab}-Ys7e`g#lA9w@s+IagN!_nqY#*b8oM?pJwO1dtRI6iAWF zE5Xlib8&^ioOz+4;a1n7YaGLEdacHn#CUggvVJk8vT{t1`B}$TkztQ9z$)j6s0g?# zgCm&L^~;UNyiU-;v_j{+v$C?TrpFX&L7h*otgKvNM@a=zylHy<-Fmzd1*o7p;XxLo zvZ`vHVGG$)S=p47lv_eVF=q&gC;tAGiWfzD*Y7-g{raC|#dssw>E3|>g8~f!yXo_= zwwrit7!<^}oU<8TC&$P&EQfg+v;Y46o9n(~H8MIH)WA4EUf`mYtmSb!+ES>vinmx%!TtqDopqf7Jq(Jx&4e#?8zaju43(j63%<^f;`taQkq>q<{ty({~G2IE+b=x6GiNonlaI zRYXK2$Wp$6&Be`aYJT1y7OJw6j)Ww{XrMG(XFv$RQT3ZMB};|FGEbf)K(m3X3zdft z=g~cV{rX22ZFpE%4}N@V;`h7y`@g!nx-7=ZvA0~Hd*W7BLa-J|>FI$Pnnj$3%{Sn{ zH60%v1bNj2FB`q7-x>MPldTvhSO=HCaPi{QTvwvhFB7WFC8Sfx$z4uJNPzL&4MP+b zR={J|CU0jIx?v5x6Z8+BF)_QNXRE~ueGz1nbaO7Vxq-Lq`6Gib@toYk)=t=9f=%pDTpPa*dpP_R7UKR$ZHD=Hv?9r#Q(wrHG&Ib(gQ|9?Fo0ll z>+DzxX!2E^oOt<0Y~FEXGQzk4>?ZgbLE}(=G-95yaL!8YS6J-ybTTsNlr~|p0pxmJvue^`G__5XPFHN35f?9 zeUFvZs>fR$y5-}?j{`*ym+x?JbeUMf;Eb$UoO&7&)6v}gy|k1HUJa0Tez+*>s#8UI zIfbCZujhrP5#!rS!<1Y`fmh{V{WJ?L5&&6fmpM`9MdKR^ihibL;Io9>TYM|(?%cfj z4XbSD<>fUoo~7>27lw9MBE!^0mfRkoCt|Ho__93OjD6{4ir#xi`TC@Tp*duk=Qxdp z)kLLTL)#GVT$pr(&B@7;i{ktM6mPle#M7#LP0B!5Q*1=DXKL;EV1-(29KADI4%HzS z$^Pa^*qyZ&-Q!QrW3ImR$E&`UrB>!JMot4N{uCB=kD1w`Kiz^eD)0oarLBE|nAoas z4-*jZD>aotP_R_pMOIeU02p1{xnDZL6|CgPLc0eC&X}Z?q)}RE2y(Ifp^=dk%asRK z^})2}cyq<`DQRg2bpfRHD{v?{;Y@Q~XHs~L%{3$-;0|8O?Kq!Pmc96TXL(dggwN70 zmdvZ5RK2{SBF2$$s3sU4uA-no%o~$Yx7-S_wY#&kIz=hjyWaL0oHm%e4SGa$?&^71 zkFM}1C50(MN&vn6z?7_RzXvd$pF_y#?hTI|`-{CO1@o>Frg9F0}&(-qiVB$qKU3I>wVHXciC_(Dm^*4B2uv&z73q4yp@;eeu|qMFn& zCzuv@ZryrAZCxIU$6E*s3;TtH@QF^a(dc%4iW73?blWsZQiyB*{f-csH$b)L=1gGF zcK@Bv0L~dJ=JmC)QKq}6=ic4BHvyjP?z*%Z*{3ZyhzP;tK`Ix{C}<;Vx+hz@Ea7>+ z?+Y~wEhtS*O>67xuTfE%rP~^)s;Ja&bcn5FFF_}TD~_4anh2(u0|X#Wa0N`blsYg2 z@cxcmWHrozl+4UK+}xkxHl99x8psZv?>F4s{CJfZV24?_0u1LX)YP(BIu-nO(|+Qz zjerR#g`Aj?UqcI4R#AcXeF`L6Qc|*>nZBg*7c6!EGtHW>^zBo-^g7=vbN8;bZIK$r zx@<@~iEu}iezK2yR#WJ{JL$W(*`r9iZ&h`;F011@LyFr;TJ+49GS?7Bk+JEtURM;J zWDg_wmYw|(p?4+rvrfD8ifLI{v#`B`7KLOhW1O6v2wJ^$>(*s@(O789pW@@K-+%6Z zpAC~O*LA}P>XcH{gCAEPl<2%N27ILOVA&bk+Vt$~b$a>^zpIR((HH=Tfe`~J&h91Q zY28b7UWc}#2Y4>ufq7`pYK0b2Yh~zr8-=OAe!W^ADPh*F97&L^H7h{gV7X#P$2UsR zN&bvv&z3mwam&wH85tF3IHC284FR{!y8vMk)FL4*4M?`rf+Y-okOv6t@bHj=$Lt35 zCEj{I?czci&?Tt(tl+Yo4s*}ygQ%r}T>;ie*R9e?i_l4ygE?q<98s2StsoeWt-;WV zTi0?ikcFjvNL5n5VXf<1@Zq68Ill*|=Mim$Ru)S$u63O+%gK?gWpp$SiYfqu3F6_2 zg~IYfczsJtQ(N28CJ8?|IXRrEl=SrS?`K=f%gb$SZGq#Li_?YG>HqHO3CqpRRqzVd zSo~wynDrh;{?)5jBed7cDwxSG0T%=w`Y|G6VA9-Li|9_+1$ugV0Jp3{HBDo71JMmL zfFnSw`|{-rmGS}s?b?nHs}v&HeF?ry$DrNUcbRU%46b)I`8fz-|6hNxwd{B#Dk@5= z9b%P&;K%8i8Am&LiPDfAudk!nmsd*uqF1nUX--xJh@$A%lb=>6F6dM7laY_FD9oIp z`>1taucJNlZ6nWYnCithX$KWQ$VlLkZK=-wPkk9^&-C__Q8na@0=2MucsNEWS>d^w z+93AjwRs2a(z=@Q@v6Ku8+rG+1Yfmcn_Hj_C{#JYxktXaM9%84UmzK)H&yHJakMo6 zRr&SH1J(6OU;4rWEl@A%0ai@{(^{ye3UCN!9hjQL;c9wQl%fRe?-=Dpxvx|d<)!_@ zFe+E&dE^596qp1q#=24u8d9t%x->8Cww?Ukwcj-syojb}Rk>#bN5D5Gh8jgkLWiG@ z_Lp&XSgF{V0&FfNb*^a4?Ey&0aoV>-&7~sF(}Cn=1OfvJP}`?3UnK49?3f0gN|dI7 zmUwEli7EcBgP+znSppK^!Mv73was51V2f=TK`=ukVg=mf=_X1B5Z8=={ zTv>VgnbYdTZ#eK_p`niq4Q~UUVq#{#3J8FP97UPw1h>8R_;QNuHx6A_v z|A~Z7TiZONHckyM3tsB4U%&oHPVOnP)-_;m{Qx6xce|)c9+(pf{u*HKwHr4ifI#hy zpB(8{?){}s^pKG`55)!i;W{OyKTw0hLNeGGXo!A6L54t}J+}H(Gg9-4iugdg5Yp4r zLxK8+2v1Nua|2oQLe9&tLD@wCAO~ir2$ws1_N>K7ao404=nOx8{yeo>N3NSc8Fk&X zER<22)1>nzZU^>|{Z%#UTaIBroiG`zR^#E`#;LoktVsaAKp%SX;zgv0J1;yH0~6D1 z?!YA?qL~%16CnUDQv4)DL_ZbdMO$M9!VsZO_hf&7xBOb($94m@;rz67sNFD zsOliTF&PsRle7g9^L}O!8Tf(UcRboA>Ue zU`s%FM8Rtshj2+TRt&{t8aOzg0&qgfYe8|av%&;_V;qkzd^zC0jWzZU4mJW6;4+f9e65_;n5zily1jg8f2 z1*d~_|ImYYieZsN?{C7Oe*-Z67%GgCJ{*MGboD%+kr6GJU~rC1o$#Q$@8a`10?SI_ zB#7=!Ux%FmHTN>D;AXC)f{e^J*hb*%8v|9xeF=-xfcn5mAoB(xjCyhw2q=PfC@7#o z`qk{=%|C;uX6y6l-8tL2&Rg&te_$7bmOu<;*2q8aec}3@`~|J;M_XAH+f={+ zAL87%3I=oxTEbaSa?#vP35TEWDM6L}tvp!f(qK(XO?BCyPX-a29JKbJVaLlCFHTo~yd@sJ1mLJj7Bu9n%Kg-wCC%}DG88?4AqzQ-d^KWt`=5U(=pVC`3|9Asb02kskXrS6HCwmp zXFqXSclQgFFUh>PFENMXf^uTnZ8o-!UsdQ>|HcCS$v+>2H#^0pu827=(*V~{V-Dwy zn|((j`VCZfrg)D}z#)JiAlm$0X69))1(%TGfK8FwgZn$p4$L1c4ZE%lH+T14HC4jG<*%iEa>QAtJZDmRqJKvB6t1QuDXD%?MOC!{ zO7@9@LK1+H8)RhHsHrh+MoN4bEhR+fh1LcX^)GZM4)gwWjxj}`_`IceG|i!FA}0oD z1tRN${!Jm~DGV-+G5i&Dw;qZ#!#u2a{i&pgQiUGVDh68l--(#qoumEzeSP444{Zg0 z{`?7Bp`@!j{(?com?uBG83#0&sMxv{C~ zH)z-f4Z#H^ebUorrHh$mD3|4uS+yK}N#8iW2M;h{ks|#7Hhgz@{8$QfACM|}l6pZ? zyGBX*#L)0(QiN=B*F-n#eKxj`=x8b}ctg+8B%nu_w$klK(Pz$GuC}n+o3YJNxdBEp zSylMK1Ex-h$1{GyxIOdJNo+qLl^BN1FlhK&OYC9$L zD+u`3N3oSTukiNgo8D()@&zsVhBwewgM%db7*sJXScr8f12;Q6upsD{?~80)fd&?o zOB6gDk5TbM+_wVoaqHgAK#X;^Cm_B>}l;P~KTaAdEx!!_8k(MG^0DfOIoMPCW>n5>u?vvhKAUG##-ezEU zyT9)S+|dqe9>5zi$K0G*Zyf?0_y-=E1MDpO=R7O|JvT1wnEhbfu4Raq=Jt z0b|J2%F>utOFYtr?n70_!X0%+o$O>1N z0`mgOV}5h zRPBW^_Z1PuYgShN%u!beJ~oI2xqx0V=K^57F>d~fk<63?i~H4Bx$EI(vKX@cV9o&i zf&)GY+NM!o>PxWaI4lOUTM7p&_Ws69PfxEV(jOsil7XZy+z6;$iil|n#FREz9jt@# z{r)1Czfr~%ycUsNq;Qa102sT%vDD~ex!%`VXz^4H{z7`}d#7GC|4?Pb&MOep5ymxoMRuw!P zw1k$*Z8*Vd*{@E4A9!0fe6HYrTl#@GZqc@%#NEkE1iVXtypR^KU7v2^tzgrFZdC@5gWFchzz#Av7wea2Vw2)P ziFj7DLS){wLQW2LmJ$*_Zkw%rTpR<@;|V}IcJ?b^e;64VVU$QEC4Ow&b7>?^OHZGM z-U|T3xp@l&zd39k6WlP^Sva=A0Kdip2&`ld?r$xsS9zk7wY@--dHwqJGj(d#42TjoWF0=|qN_cu0*Y1s(3954LB(9tG-E0r{NKR*+~BDh#}5I$YB# zAu}@*xU^kc@$x%qI1(Yk>*rC3g6eg&s2hZ?I$E;cJ6iEl1WgVZ?Z4lije99?n+rx6 z#D4DHy*r0bmEnT~0zq{Hy;pkYExR|1o`DU3Q?u2W5nt?<1L|``#Kyt+37z*XaUTb% zEr}o0>#M7%38?Kjt?QxY9ggEuU64=!jtsNU8grls{^5V7vVIPaq9L~d)`k@5SDv1p zV4T@Q5XNbFqzUn`r#N7k0bhi$moEfG;EV#L%>nxiu0`9d5W`CZ8d86zHpbVN5FySm znSnS%%Ytmp0~ie!Yl5IrUZ&;^grEqtKLFxjA+5#^;?z4M_9UR%0;PTN>{&IO;=LtnFIl*ov@Gz7Ye+m-&)kuZhNDCPUN}gN z>)`2SoAxA;h2*F)kJvWQj(8p{fpqB$)T9z1d^n3{Jz&@269T{dKM;CA?2_-27}ioT zZtff2AWk@!bs{Q?$j*p3XbgZ1VOwyEi?Z+y*ct|idxDVONLY#GVjM9%vZ;y5x7^%M zot@7hJ_V?GvSMc}F+IKYEw=n8p7;5Z>MO(SrtH}!1pWk~c!YQP#2Be3JX%0tJwTh!*S}=sq&pMcc_EQ-f!QY zMxItqZn|*T3YS^7Tx#;_>iqcu^lEXerga6WHwaZucJi^-Fi8Mj*{n}L5k1~D011>M zN-mIs<1G>-17RL8iqXhcSxE_Hf&oY^2=3_Z@1Fu+3otXBdj0*)`L@!06yyMaJrTz6 zT7FMW4e<6xRc>WiU!|jKho92EmA0|T=6K1=$oOt+aR8=$5TIhPHMsX1hH*f>&b(Ua zO+iR9GT?!=_;Q*LWZniS2B693GUXq*2~;G%Ed!hqWPpPnP*g_Tjh2t%JnPM4-fvSw z#Fzc*_i54Hi8H>O(8^xH@dgckec~NSu36vxZ#i4rfabsr{s1AeV9?BUw%t0!PJ}r) zI4nj>zksB10NN#zH$ehbz(rl5#UYa#nhSTZIwZtE9X9}_0I7V$!VnR01$G|=_Q%Q5 z_(>Zm<}_C95`x{1V)eKepwTrz`$U|fwU*qpMNlbFU}$kfyHHb64dxnRy4t`fHU3Nw z8axDa5NZdTK{a|GcoWFzu@Joh)&2a%i)Kz4AU|XqwNXJ`p&%uuw=`6M0)fha_vGLw zq+!@0p2nmQ`wCzVjMp>IG&GvmXIdcIBquFKN({{-=%yf~20^(7-uDVz6395Iq^sG! z%wikW)X<;;lWz*VQJ%+y+=b1R;CDSVIByliVNj3Ce%*8pd_UB$tSsZEPqz{Bg(6;@ zgm&TshZpp`T3Aqda7Tk<)OXyT6A|2(FatGAWO)&pjZ^dG9Xshe=B=Om#?o|+3?_g5Xk2c zgfl1;!2>49SF<*5l@RbeYq!<3<2=OJ?xAh zy@Mw?*)C`8=2fdkM$$^}XRG9YjwYasD!s15et`SU0$ zLi9GsA=o`U{d+)58KsqdW;~vSMK17@sCIms90*Pp`SMbRW zpoQQ0radwW3iadT^q9J-E1myh_Bj?>Dq^M#0tCvU1Qh?d>Qj|mD zqP`&BWy;@ZR#r}qfJ)VytVE+!Yjt&d+X$qy_s~AD#_?;uVuuNNX}zZ4*NKA&3l0z? zGjkyH64d<%53oSCkUABOgm7CRj+Jj~u&pg))X~n_na{J(xy2zI7$#&lWr6ga`&X6_ zqIZG?3f&^YN1HuxG)O?1gP^m(e@XzwrG-n3kg`1H0y!I(lKho{g(V2$rbzbinVMQ7 zB)>X$1rD;>HfX77_=OlspT8MF7u08uPYT1fNPu ze&87G2m3)ux*ZAXLMudS4fNj&7cTtx@go~V4u!NZ2Q)H)JBtxrV=aVO$XZ2(OkG{Q ze5+p*hAx!09Zc^%$Pru1rL?uR-M)W60HRmm-wx;vkeOmwxr#SouDk~CA0Wrtph1ZC zdT@mh_=xJJ%_g4obx{I83|$0W#D8fz&Lc z18^pG!SsAnUto#HFK&;x&c+ch25|QcacD6t_1%8k5G!Dh=;v)9__~5a+9xN2d-wz> zD+CRq&t3p1WMK5PCv*u&?^!BxkzA6;d0a7V5U6;EMB}Qfs~@Dspm}8>N(U#7_yAOG z5X{F(3GGo$=Y*+ddzK+#i%{D3HGn4we=r<{zy1fzSM8vZ?)}6#{qcg zxJ;ha@mQ18@!T^+Fxd9;C?+|X3B&|OFf71j-hjlq01cP*m@slNB!U6rLkEDzH}xC} zFbcq83H|cLv5&5*5g=gn7+P9NO2>{W5?yNIyav=lugg zFPLSNl$79;P|CMKes@m)P5mQRdBU>rFJE$OaZ&(ck=Txa?bLgXjvqBgIQo-`1Yf!- z=&Juqc7RwUqJ)Ba9u9UgNH@Ph`(Sm=L}V0zt{d=2k)S+)Tkxhnv!_G!AP}sAa7fkq z8mMGw)B$8{MesI={Z{2-Fuv7u^v`w(Z?wLo#@#;s>LPsVW8?4<(GZ?u+X`izZalfP zga9etm>}RVDs6YxHa2R2?LnRseC@1eWhG4A<7dyV0NDl?ge(idw(}Kw`tj6_3Q&HC zvlQ9b*Z>|2cpaDLe2aFlran&QuxMB7Ea78-P6>1YMklm7>&!Xp8;@}D4CgOhsxd17 zVa8vDC3+CzieS$`SOo{mGHRC~X`63niu>+>Tds0jx;B8u_~t7>UyTt{h8$s*$%2J> zZ(pA+3?A8Vu-n;>TX$!)D70Yg1g+6A41DtO@gY+^w9Ep{+$e)OLP<-@qwbCLkBl3_ z)6qL%Tsb(Ag4poR!C##PR6;xSv(^6_=6KgQVztlL-yurV(|2RxnB1x_OkvDOAA`_C zW-{^-pKhW(7oOG4Si5s~)K081O@ljOB}60KrC;M&?Gwtod)F@vA)i8FU>NOGq%&=gU@ERe^k-Mxr$8NsSqWjenD`OD)V@tSnLb^NXykAZQT-XO$X)Szcn`b4W5pJw8%_>0z`n!b5#i z@G*n2gfDZMo5BJ7ivzb3cx5rZXf~zRU;<)hV{2_f>uBU)Vq)WHZtHaQvzzbxBauHU>Q2HACI(J_Y;6cs z{#cuQJ3&C07?@bjf`bScSk5z(2pBofvpWeWPFuq$3C`1sE;7Ggu$@O{5il~HH3tze zF`oYoE5o}R0RbTZkrWYBamzXfnmK7NC6~QqdsafDDGYO>#DhQ`%7m*FNE~F*YPqak z>c{fdnw5A0AMZ8qJYFBpT0C+}*Q{N~@ZMHZj3ukHC^Y<02WSq%1Q-a8vV<3S?+T#> zeo*wcgZu4&EGD2U?#x5IoqJAh9-Y%7BO@Ej$iRM@+t~cd>+13uKSO#-qtN~dDiF}2 z#xxC)BH=Ij@RFA_-*tNE(6+S;2kRsl1g+#kS#$uc!uVje#_w!@+5bL2wrwg(de_sv z+o9Eq6lmstaHYFfV3~hrtpC4S-E^Ai2V5fo-O^bSIAR_bn9ERqY&#VRE835Rsek&K z#w|sswCoQz0n5b!VJiO2a{BcFnCL2Szt%`TK43IefBqK>%uHJ0HpL})72xv9()F=h zuuSsFn<4*MmhIm|gJ}^r&n96Js)v}TE)c(s2l{8YprFUL)pm(TX8UHC?5CGswgGM3HdT63u~`eOpNsY=-U+< zjz0|qhAsC#eLg`9v-o%H8u`5L{?I(!HlJHyr0xYf=|DxE1^X*~`q*CHIT{7<%eO>r zXrbVsNw_qO9`hvO4P<^%l<=Ar`HfD|d#7}S5n|*5Mkvv$MoMgdUwnD{FEabiZKDiQ z@RpfMnn~=S?nAkc(bKUY;bmLzW`lMotf#T_*0t7t#_c!uxt z2rupg%lvOep9iMm0TUHhcv>e}xOao&zDyLObqsK+d$!MW`YTe|ho_pzf~7B8T`p#Z ztpz4XE@;JI?p9YfUf;Ywi`7`HGGK+Sad$}2$D=h0H9*@o6)UpY;|N%+bV zQZ7HZb>lwEMz?F%=bhy~R7r*N^-}{>-JqfMs+G1K9B&;*?n5uYOoz&t#|fUn*mMO& zz{NBEVUaR~`gN$ys*#_V6Ffg4>%+6|Pyf@`RTQo(7ruwX9%`_K2TK`NacEEqx7XCK z%RD@#)~>NK`3L!J<00{OrMaj&Yf}F_IvczapeH56@j^rx-1fgUF*jCx{^BjWvg=Xk`(1JAR<(%c7|V z7cHqf(Q%<~xM_gZw@?{Zp)U&!0?7@^6qO#*Gfzjs%hsZUKs>+4mb`8V5->CU8Jv0g z8eEgsGZDgjg_pC|6wt3u?%eSeu7`iZAk?^Zte&{?yuEj>nd~>QWJt~WiamMrvUcUz zT49?*RhaPfEbnHJoqaO7+d8_rgYWAYb*ZmLss2$Il91LIW#XP*R7!%3f+bc~oHO-# zkP1j6l8dA@A%5a9ofWlGyWH{X@(7%vN{PyL$9BKZX@&phu|Dm% z=K8uH)$lNTklsVg-{*by&e=i@m6Y(1|IG1qYwYj76O8@TI8P%QUh!b(ZbnZyWg#9M zn^7Q7K8mfgoid2f8cg5BQ2tt;U1=~v;gp2x7v-v7t5Qde_V2=L*E}n)Xq8$Sa70yg zVrb;{gPyF?azEZ#(?B=EU87ejtla_C^SS;3QR^b##i^38d{c<;U>3mC$Tmzk`LWY| zeHxtJ+N)Bq#5eJTry~cZ>h(T{v9iUKYF(jw;Fdn|e*4+Q=b_tuBr4#c>dJZlC!g+h zTI>=y)xgY+3LdA4KcPl%U!9*QxDdij6Lmf8hP-F3qBcLdPRTuI-(qIJ_H%7mK8%oQ zJ$%FB@xK1h&@L}_a*+)CjH=b?6V+@qqm=g?6}daW+I3^HBmfMshZdIv`!~t%y6Z;6(xSsLRdy*g(J`{fqnYrK?|y#eWAQ0%O7`+1YT zm4%22bSMGNYTSWIn6g!J#vRBg4*M43-?O`CI#cO!lA9?N%jrO=ZYTz#DNRWl?dWTB ze3Z8Ej};`%TQ8~gwe+i^13|viNKb1Qq}65_sk2K%W$ysdn6Ek^fnnqgbo?e@+)M>< z)j>&{zO=fbuFm^`$!fKilCX(GCf%f)W=~d>h`y&dO;L|(wGstv%svdkwm9XEMw$FU z%phJI7mpdv<>{Ex^B^IC?dpBRy`FBGZN7{S-5jLKbG?C?)&0Smn=++8gTw$DIl%KV zbQr0BAA3q-)TeXaX$^<9b69_1A=fK}X8t|>0Gv;E8%He(<~KglQbkDws6mKfahSJP zZaGOsPtOa~L*}>2QQj|sUT-&O%j9>)kZ7K>RF@x#V7)$1(k^=G^rbw0>7SwT!FMcNxjBI z@eSwqxwT>=8&TSlPsQ_-s?}BxAxN5zxquBUNiPq+Gn);`p@lxL=Seed^YqcvTEwnh z`>wBji-HfR2!%S*s_mRB66Cv3y&D_*B_7+5iT-NOEDSsixge^vH)73NhmiD*_uIVG zoTbt%frpANhvP`TR|SzO)3;TLSY?;8m_GWCkPQ=*>^~K}2?|d#I$g~8t^+ADJrSMZ z`KKz(gf7hWj|_&&4eHG{+^#xnQ#iHWVj8L4D+lo#wtRmBFz-nCslW&sU)FCX+=%qv zTsJ!z`rNVqIljE=H{Yr7dzTHhi{`q3EBe6NczIBBbd~lVfd{v8r!)|bwdt#Bz8?cO z)2Ktd`~K-GIw&8j0`I3LiifN;UW_%t@@6!ZWV}I+-0vMLTS=XVNa|Z)rV5mM6@rVJ zEnaIMF)UfE6ePp0yS5YNeXFtZThS>aO*>TtM+=Rz8#H5!3Wa93AWAR=jWg8nWCNZ( zRaY(7S;klFEc6+$$O>R=j=FTT)Uhpb;Cf7@3@?BP_2?ksm6Z|ndY`18RJQLB$^QO) zL2*rYk~Z>9L~*Ta^z~PX^qgu7PzL2yoqM{?M?r-lB#j>A0fGLViuT6pV&E4kiM4{l9Vp5=V5NyN!>*=A@# zCRHT_j9~u8d5w;zYYK#%RT_990b*Ltw1-8gLK7NQn&^`wg^rwPRFKqOL1tGH4<%t~ zcsj3U^@fsrH5fT&S`h=xLm`?J+%7?T7_~FgGoi3h#B7|A#nel6M05QEjcVlM^#iN? znr5745vP~}1BM91WR%fK=G+wwNIA~bQ=jfcx$loA@bk}0*i!eu@O=Bvg5tdAy?~hr zkJ+W|%6-_`lM!o|Mn@SURVC_+{EvugzK;--PIAQYnm>=8vP%s{CyK=SoJ##@>#I7S z{@|^o@fdN!TW}JO`}nw17bNB^B&+vg_JX?Ce*K z5UIT=>b&;dp{eCp)+BgEzGn#*|;T z{X{tXNKN1ZI^lg>VrmSpM)s+bfuS{i+8b!_AMkDGh$yt!KqF70Q5`s2km092)4u6? z#ypT5$eUOJfI> zV1otl%-j9hYB)bLy)=GMXnS{NioyRpNoI%&gLU>B$<=8}#3;Wq!n^y8@{L>b7^`vA zy0j@jA)$aO=VgYu$_{#dSqM6jue9Alo3J6Xp_Z@6YL#z&yhY6;%TMzNeDmuVz^m-V zM`A`QjSKqMbkgUZGNrU@B1HlPD;PY;+dC*mqry$Ox0>f;S&9f1^YmPQ7>n;kcFN%X zI9D`0c)TNbyV)29G<;F9AEMhcu+X`y6iV|?1#Ri^bE;PcW^CI`tUlfB=gg^G-5U^v z@3t5@qdkKgzcW>q(j{ry>eBu4M~2TQ8z~AMc*aQQgG+-IXpz|6QtfT#)2LYQz$1&! z;c#YmiR{~tEp3coWX*rsTFM+>k_+=VqSf(^p55E;+9)nmY{)RSdpSB8QG*u2 z`O0}gv}US{q1seA?>}&s|FdsD?iHu<&HMU*&({zP$Cj>xJaqc^M2o~N;`|RQWrs?U zxox!032fOYMul+e)q1L1{;8UfA&kw6VRoE^TcS7XAXRu9wvz;;Q$N08f>C0F?hLIw z;XXLr?W&j4@atiUzAc#PwssGg#-YUQ>Twe@iba}>pBTlCKjlX<(b6C|EtCBP?2l zNaIO-w(%PHFdd!OJ)c?WJ&F1V?RXEFfF;+|%V=d*$8t=FfUKUJ;4;kwcM8j;mji@! z6<+DJr>*yd3_jA`EdN~;a$|fpju8(8T!_WXZSoi9QPP8GVQEdwqvY%M>oGq2hAO$+ zm)aLTzTSl>kpj_@!xt`=Oj$f-Alg`OXTI*(vxR(mE+B_D>5}swYbw|`TdX1D4WlHV z@1NlL%Kgm1=LKf3OE3$yn^S)#7&S&g7pQTfKoVB7h4a z5f9p@TK*XFR{Hga@9D=^eJy$mSWxsm>CN+)ehn+`t}FisTE`H_g4gC1$B-I%Cq$75 zBviO!B91Yr51k&wxJjqeT&Q4{o@0`*&cV>XfBLY3TDIQ|9usq&C5;(+xXCk1aie%Z z13 zg_eeD=PcPyP5Lmzl7UU;!)I73wZnB4GEGYPfx!+pS7Z?BJ1e3abF|fR0}S;i4v2Z+wV4rK@ll|$$|p)WKr+qIVdCh2Ofx< zaOoiV0TrDBl2u5gYw!RAozFL$$7-JCt5IkKqBArWPa7tI6hsOImj`tZkab)VFX88WQv|Wr!KO^`~Iv2EKjK`w;j|EwR-=7E%-ow z+wzI@K46~UN27qgp;k*Ye55#-oU^?-YoUu_gg5urVNpw+)z%puaj#gQFePGw(P*Mc z9lu9KCK9gKk~I(XzJGL@TUnKm9YCAR=ICjP310+7%9&WyT8v8v$jcaW7{F7TCI&b? z%q%F$o2-D#0eA&9&R|iSNJG}0anuuYMWuvLcODT{ShNGZom`ve7H36tRI$vu_+%fR zca(QqKOp!`&2EGC^^AG%b6;!`US4>sgMW6vQ+7}Xbk0B*>FhCxAJo~*X{H>R#vvZ` zm$V*Vm=_#sGM2^y4zy*bir8@{kjjnCiW9SvL>!br8RHE&aDUTO1h7rZYALg-MabFT zpGD43^)pq4)EjS9TWK^VMLkOZOh*LdsUOfxviLVxqw9Z@C#m12h<<^I_vQ#P(L@cUMcZ&uX0{t76H(X){rb25p+tWZHf_6 z$IA`D60F%KF9v{Y`)4_vl_#E&W)WuC#p?z9&0VJ}Q?{vc(!F%=uW=1{Zzu`dGLqUY zfr^#H%HoUXAum<5DuM0B^IZM2zI-lt;0LEWzfasbV(@WOOT+n?!{oE}iZW56}jo?b%NzaLt$FM>D!2AK|zp70$QbA6CDRc?|L?Hcp5P%4z@Yv=HV!}?ns7wOs_Q= z4n|>89W+bN(4f5uh)!O;C#iqOh+&_I{wu^>Cw1l?}Jv?GLQ z*d+HVnQBSpT|P5AA0P&R4nWMzeZTgjn>w%uYnTKGs(Ev?+|0`2|FZT0CkuTYj-8|l z@$NC~RSO-#ll%O{cW*R~_^3mk%I1GZ;!aSpTe@DE^6A;Mx3t%J+W28muwDL@c%-I< zq{*!J@h1P$ucv~fOgQzSH>GF}TJ6qH|JjYtob0QN@qt3nqi#FirXyHy3;7*_`rIj z8Cj;~<;`#=;7HGXeGyEQgK654pz3_bcmC|tPLL7P1{Vc!6cA@ESDUJEO6a+g%c`bQ z^7$s9U|1Zd-|Rz=`(SbiPV=)@0e&%TJ!3%PBMxzA`0ut1cDCIJgm;>k-``VQR@DWL>n=#gi&1rLl zlrOukeX}0Mc>ATf^$woZL`TYIzmD7$(TOj&&<1x&k1Avw{Jo9ojxw4DS3^$&hM^k$ zqe6r_&b|{kgrmTT@PR`TBC`0u=OnMv@^%yQvvj09u@hQLh`gI12KI>QX`;r4=+tbs zJNIkddl$^Ki6PP~162n%74HkaUG^8XWh>~eV4T^#RpM$*?C9qS_WQuS!}pUvxdC1v#Vp|-PSct zO1hi=DagSE{RtU{!67@kv*x^?@c71Gaizb54CK19$z631w)on)b{K6XyA#Em2aS*u z@-u4Pj->hJG(Zf7c32@FpYCNmD9laM)IF|RG`J2~(afy4g6mIc^tyA1ZM(+BG1ka! ze4I~mcPxzU#vW;^K#i9)T&}t}JojqPOH0*+3y9`LW)o-u^bdt$$rOg2Qle*n@}21{ z;gIAkq|(eb|H#hIPZ^+&r?0y_F$sZ7sL_V<@$&w;95SFu2RGK>HQilZU~#L zk+p(WlcXOey+5`$O&Hxw=|~i36DypZYMR>Gj*R#bmhH{_&UE$(B>)cut71Krv z>zGLiDh#98-5X~(son!Qq1^q45n6V^Id*fW>eS{BMZM)tGZgA~l&b5&H|=n!T+0Lm zycU%5%}3^)stPo%)Vm4Ox&CdMvTvfQQy1<$6O;6{&HZw?ccY7aH_khgLGU>1Yl}&> zd1a8eqi%KJ5Pq477j2|hmocA6N^WW(=0q1=9v+tzqovGsqNnL?9Eo`vRai3_%^-uW z)_uDa4V8Np$GF$Fr73ZFd3Wi(rHx_~uFMx9KSIjR8asW!aQ|wlb@cKIBGq%UNX@WE z;QySg?$=C`gpZ|Ax61!MM1q>^?#04E8HGWw@PnTxlbc;~dM$X_1^E5eBH;1*Qi(%Cs>v>$2|UD&MyyCF{FauHNv zE9G&k+a+ng32$pymT#K6E~X~WFRV0xjV^EMLk9(qW)NfYus1b3`)qq&{%~i-!2bFdZ&w@Xk4BL4hdGbxq=t;&ufc)Kq|zhO z@O?!bBda$&@-80%sWB~b_Cl(=r`E;w`N7RKc&|Fp&0!==vqp85psYl>Z@C?zgT5br z)Ss}@--P3Jk=aW2aeqBY6Q34ssmumP04|!4lsG+15~KOGKx7DMZv)L-_JKvV{n24g zWh+PwH9{dgJX$E<^>3^(x!IO)YS#Rb22MG0#{m>x>nqGA%`IoL$;ft%xGmu(Nu2P) zxu+REYhty*gv^&cSCT{uY@mtK(r}Crs zg;IX$P1L?_KZd-OxsUnDLkixZ!M@p12eJOpWl_}qbjJM<27XCa4T)JA+My0+T2q<= zd(pK9I)d(@&K`)OEXKzfvnR7VggKDXHyO%~SS)Z=%zwL>|7-m?Nsq+uGd&Uj+I|d& zlq08^v}C^G5I&nua-9j&c#`YB5c*S_7C87XL#V1(M$;6!M7fwahUWwi`=zB$o#E#v zf}nIeS9@Ggpn`n}Cn7A^9~~xn| zuGQ}UX#sSp2J{GEbRIV%;ek(W{sl`O!l5qUBVB~WkvWGR*jlT{#|x0*GDO4^Mi305 zbbI+`mwBHUxrzs_xs_XPP?;#D8d#hnM4=w$<+Y{dg`r(te7{)HB59MZ)4-5_S(J6x z01W*LZNDT!+HuOu{}cc_@LP}rnAxJE_8Dk|dU6`lOS{d4JD-0Ykx8x;rheGf+ZT@Q zWF2+rzLHaT(Ac@-5kh`~vU27Y??4k^wQBY!|Dki93~FmDBl(*GVZUW!rkRDt*UFRNMhk6kMnXo zIe|r@ka5}3RL&jt!$S_cSGK1n0t#CdFdA8n9`<&Jr{s|Wnt6^iyvSm19(t5$-za$e>$tUO+*Y%+L@_u-;d4& zqWL8Oo#ffmos7Z`OI%nC6%>YBA9NSBJpvOaVBDxiQpUWeE{((44}q1{NwqG%z4-;d zJji)GWr9MqPI9Z-b;zGTe0f6-uhLDVP2L>o>!{cK8A$8@D3j>{mDvQp(wG(-`DTnj z@F~8s^gdkZSw8^*y+UqD$-3R1pp^52cN z)mM(j718qCT|lUxqL$5^wOSwW)!>~0mTalQTlo5$N&b_c(-bm~wV{<>m&q90^HuTyW;Jc|(=F5_i7L4r!nIe@@E%B1sGShjlo@ z%_e5$`HiuviHm&AVCpSMEb-ifsGDl-Ds({6nOt~A7dg-fL(4Xw;PqrrlON{CPETuP3?U9^oht2gHTDDG&EtyK+`n7;xL~r`8V?=z;m) z(V`GULi>UB_%Jow@oT)B4^UB?uR%>Bil)A|3x!eq*UeYP(lTE*v7Zu@lr9~NIdMNN z2^K!O%Ye<3h>Palzy3uy_oX;B2ca{I;ADX^O$uHdQXT&kSTm!C>N0x(b{p`q0O zSfr(quOl+XU+QwpEu3(C`=K?7Yc+O%jHWih*!6gJFn88gwZx@t>y5eWc2bJ)kfYZV zFRW)u#_v(z`UoBg=c>w>>cQ67L#bfsFcSU}fZYuN6dIY3e_CGuOD7dU^)VI)|8_YL z^7*zt;Lmpf{atzzJz4vT-pW13y4(2AEd0258*!ydLuPCAej(JoNh~Gc*ejm#c{lld z02+FbDXIw}4QHBtGhyD>A=wiMetfepMY|%K-5s+_Bln~T?6!zd{C1g_G4d0DUP{hm zpXgXLMX3L{EAU>P;a=VE_B`_P6EwL0y;y|G4^Yr~+(0*jczBq$K=P0){jO8PT&ol= zo4fh6U@z16bl4%G7B-4518d6d+5XhQ={=2;vOpr?p-sv?RvIG>Wx< zJB*apb3?lv^z2u%v#UF9HS}_?zYXG!J}!D4VeC)5AN7{W@qFOZT%^@#$VjD#xcCC1 zM-o#@Hj`J$upZp=Sp^E$NkY$dxiDe6qztK}entsXL2biRY4$BpDfG%vSXfSyYl_j8 z3xc(;`@?dR7yOfpQL_CRU=r-srQN&tU@)_&kT4cu;2|D%9prDD#-_5-87SiA%TD;x zLSRz+(0E^Z$dnv^Q@zEflovR+sL_LiXt^~o%H7zet4rNKQf=)GX5SI$+PO7(Ye@{y zt}*hz3U9uzq;Z-R_*}A>F-O7p2XL) zI#N*EY6vI5{jFi*^EvR2D3LsYCJ=I5{v7@=ex~Cn5?eZuf8H2_C`%7qt)t!O%`l&m z9O~K)%(_NVvf;6i;&Yb+H%3UMk7lia)21!<&e4Od{MdQae&&4e+lpHb5@T~*Dx(w@b zsF}CeFDVb3HnGxZN*x-iH8KG{fLqMKd zsi73-eZhCJ1cvvag7V7#^AR8a=`N;!LwVw4YSZLtsmXD*BfL%s&&vrn9$KP0xc18p ztlI|w%o+2jW_Df-{Slj*^QtiPQv7u1&BL6M3x$>`Hq{~Jc8BjXG;*^zAlgi??gXo< z;8mXbV2KM!8Xr&`e{Os47|6*Idyu{<{9|K4ni*FZVEZ-j zVY~+RSlm)idI0NNb^E~xya={o9@%wjzpfCEoRJN82kp`)2Voo+rYe9~iaQmzS~bUkko_Tbq=IVyBAX1b?@2j5nT89Ijq0 z9j?A`8f@Idj{BeO*?YhV-M7eHkM!c2Klu!26NUg1(-|?>haG0-_U>HDLH!NqF{RIu z-Jdw0OST(RCFc|+kufzmQcRU<wke3yOfX?Q+Ov43oGrzF|4ZH9#3L-JGG6Ei|-VO$bXf6j8 z=Y&tJB8REW^KyU)QJu-fZh3Z#-Bh7gm@2qKT?FvzywoM*4%M(MnHqy$N!ugcaslq| z11w`_3`RtBYjMlhma{%o8RJw z#ROv%0#AyUci|XWsw-vz3XaCBgAU(MOv^pf7eut3s^zpRPWAjI``7CMtfFi+NvdID z?H`jL!*<;aHWd*AT12Wjce?yLA~wM|^q2^IG2RvH74#WSM~yx?(_3 zMG4;W$}McDnIv|6DnCD1zLvrEn4|lC_Rb@jncl-Wt$ZKxTj6&);B}%ZP|p!AJ3&He z1uvd>k$(Pqh*A}yfH*7K*VFPcZYu}nWhSz)G@ec;p+Qbg#Nngxxf4HFwt~>?92K9_farR zNx(niT)(QJI#gN$z+evvnXP4E{3SbHzyzL<6ZHRpqaNd#pz?z)F4V2pXM-(KAx_9;gDfUF{Xfe2C;T>E;Kxg~dXTv8nXaWr-i2_VW^H3M-FBbdJR<|Q0adlh^Cw0ue4=vNZeNXV5S!zGBAeMxbet@Qs`LH42!+=k|s0uPSP@ofL*FeWrx zs+q_C>4)+s=1hk?VCtJeaX!PZL@9N>wTKRVo}hPiEH--&*k*pT_K3OS|C^*>Kz=m2 zHq7?{pZd-+f!dNop3@!-)+q3}`u7>&z*JCA2`WMX9{cXcFYgtZ%GW9I#$t)E z;t_}8>wuX!AZD%tpiF zRo2mQOK0kY*NhAS7x&!jf~(-@eO7wvOf_cH!9GIU!mGTVjyIzk5jZa^Ec$u4c-pt@XLAxnLXlV%q!HdLX?N83<{>b*q?xYp# z?au1YC(|i-;pQXDb7LB<)O8)DVtKHDo zZRH<_$zNI4MpIQ{xkM5~@;dmIJnvI6(-d~u6dB)z>v`tZN}tTQga*v5XUw3+IJVSH z(`uL_W|K`-Qf2vGJLVYzfl4`A*+ zsg4!Xs{D$xyBnF_&Ku&O`L{m-BR0jk`B5F5@^F%dE#LSh(m@_nyK=5GEwMknoiu~L zE-UVSR%qq(?A9X@vzUJh>~zetiP=$R{k2+2$)_ZH6K+)Hz01w>8#CN6!enmajPtfq zc#a0Wl%lOVm9`P#+jDTJ26{OGH{I>$msfTz4o|l!w6xhmGw%6vl4$FQ)ND!Vv#BpRy^khm z;7@AonjXB>v)UP5-)NYj*v88d{+*cvB#O!6b5!7q%wem5n3Ew1%2{Mn?dD_!vpq(CiILH*a~MoMe>8uQC!A&3O5WCT7v)B+j8ld zEC%q^EMb;BS@`3AaQdI$(lBw|YPF*#y8NWoo07k zeR~nq(0X*)Cn2Hdk!zJUyq^iNIh%9+?p)5o_mNPo^vqnEX|3yq_Hwk2 zFz#OM@}PJrW}0IlYwqZO@)F|SWk+r&#Rv~+dOh>}j&ZqA=FwSeZv!+B@4IUl&qOkE zy9o)BkDjW7a0Vq<2WkkdSv_M}w5O&I9^^u@MjAet;<2y$^Nxp&OqS0K+nkg0GWB!Q zMq5C0bwBURPCMKd>BqS>`X0J}R#=Ikm+dx7H0mrKMmhHE?6XyZMW94H33lL`zzPZ1 zH^L>ouk| zgXRmI;V1^eZvl~I?sl+0ozKk<+UrmA-lC|ioMiLB5C32?_JR77wyWFi**ZV=5aH+{ z_Xo3NRGW@SZZ?cKeKjO9@{utcLid&5E={_J#~8VFPbwGA_NxwQ0&6DCX-9`%3jKhG z?0(*0)d4HK>R3xVLeRC?fsHv~etofRJ1())MK$jL`AYeym#SU6-D{t`+EQ2Sz4$=| zTlzpHkK`NyxJcsFUl0CbnwS>5`<}URsUNV^=b*}~4!3;>j^;H>uwGHSy~cQr<}gxU zWfkm6@wrdN+$O~j=F&np|1uEY-^K}r1cu*EZ%?zBJ@0C>) zV!-jmqg3SI*Zqet%GG@HlHzb4OW)i~KlxGUN^j}6}hKT|B(1y}=AhNW90ccKO z%t99T7SB)N!hh+B(gmOle&`y*i(2pRF{jtVsL(f@DG7*=M=0TI)y98FhF zcD6a=O}=DC(46zqw&vNmPSRn>`mqtcgUOtsSQ#l;_fta0!UJdbzv4Eso!)ThsuLT4 zwbye$4M>Vh{i!rPxRMs}*}Ukwce=!pIX;pg?+ zRC(HjA-msEgYI{Y<39g#53P=G-pmJF7XBeF7ew9aEnr}TKy6Al&+)>v7wucnIR^Rl zTBr643~5ZQzW@D7Zkzyw7=!F7N~kfEiv# zK!ZL=Vm~wIV_xT$X4<8D?P|nG>KG%&7N0rD$c_8+BIhFpWE@^0 z0nC6f=jru~#3F#as-9R!zvgDdewFg%iPM_`8C9vl3p!<5tH}N$t*BCG*Tvrgqll+G z0hwDq8b^GJGx`%Y_?Tg8ODap~v(N4kE_(BfprOo(*+Cj|!E?pU+-ljVQJ5fYr+UTy zP7>;Hw3mjgUtnpF|KqTc?{38KPbzQd^!1LS9kcokyy{VeUHTrB?1qTSqJ!0M{tElD zghOS$36A|1fO-D;Fho)|SI;1M&QXs^e3=lb>7E=Lz&-wBLXaV)J*0Cd9xQ?s3}u`^ zJAof{w}r3AdvhZHy!L4Qlb+KdKdU4L?=^&k%#s4hUb^kBJXD=Cu?YMpT-Mh+Le>{k z)ciYIm3Dms+6!e+I@n? zsV9!Twh)Ad5M6z{xXsG8Sm$Rc6@#b<5?$Uvt&$pKY{WfY^R&6Gb*|D=+p?&S1l^fhP$9_WsSzND1Vh921#gpI`yaxkgaBiyavaWR zypf~C^o(ozu4Q1AE>eKPo#pB zlIcS553@Lzhrh5l5-3FT$chuK_~iaDs7|wdG$OuEqvlFPu}7^7D9_FBn1^ze1HJrL z?di1~Qsa-V-R!lKO_H`yDSu#m3pI<6N~z7d9;oI<^6_33=+X7pPYRAzD80v)3^C9X z=8zSpv>))Tg`rBXXE59droxFxYD)GxKi6U@Gx^HfY^F?ri|Mb&eFQN}+7J13chnLW z&;ma9hV>UPUNaewH+Q+`TBrxGI@}X0i_un*iVAZu8tCpp!qv!06wqqLM#u!AR20UwJ4%)xwU;h32qPtJ$Ei*4j`?i*b&o~a-*zbc zA7k-ehx~A!q;6Gi0U|c{55%LWMDh?*n_c_OjP&1c&u5-h7KPj+h+G!AI>a zNq^6m%@{R8#7SAf9HCPp-0amuxMJ41_HP7f_mUFHUAxDStTcR z70z5VHnY(y4tL9ruPfIcxxqNX7xqX}aT9!Up;u^e5SQy)L!Ld!S4kSDAi(^`Kvd3_Ax0B&;1kSvfn z)8Vsm4g{N9qA{nFT19qC$Ab8;XojN)(~W7*~ZvH9i6ZC+KC zXWwjZshzEo%|9&e`waf|jKIH_JVigvLLrzIM&}iDZNY{Q(HYlL>%?C=QWjl1B0VfxivMdL;8 zNV+z>^E{6Cf%e^CGI|UTG_!EYi%_1-0zXVX0xiwR*nO2wapb6_YU7r9gxzl&9e-sI z2fqg9f$<4e*X(+NJ861eerL|RTD8)6Vcz?EU7F$6z{R;UxD^UWsCt>(H>#U&)?L4# zSSD29th>Ll1(a7jg01Fg=Sh9gG&?OqIP&Z?%|mcb*Ax7s=672N6KShgXKt_NxT}I| z1NDv51{x^9^7?Cxog+q20^08_C*@o)8PeWteBFCYuZw$r)aEOw*RLHBZA4msFO(jO zC80HToB10i5Cx(_EWRm1Ztg*V(9(oY8IH$sE&($+usv-?`fEHEFH6b5cW*vSs}xwtSmxhBlq6!FcVjNnnxmvCQek61tpc94 z#e||@S(p!#sw}Wl>6#&aVeCkPyGDzR^vl`L{68%KUr$9xr$IV62V2GddpCRaLUL#aN=T2!dOYr$af^;d#sfrSvK^+7nzV}EDg+jdJ zI4cKh{8%#M&4x)!(Hgt>4bPI<@79}rUmQWi-K-tgz*RbbTDn*h&KU}8wKfGMcIPf7 zHEQ63_%}^E{qlB&0HWp2Xx(W1W5qG3OK71GAOP# zOw++35Zv9}-QC^Y-3jgx+}(q_LvV-S-nbJ8?lkT+%lFOB&Q#6r_K#Ctr>m>=z2C>~ z>m*Mg#x+wzQMm9_v-K4e*(0W?!com<+lxLJ91NsY4sgv7)V9UL`x+M3*i!|*yl+Ue zRu0t}NR3#fr7DnM*A>pGQIISrN@Nt9T3#f(X==>XF_7r0L>lx4@Aq)1Gpst8$XIFI zOZ$_4iqo4J)DnE9m;RD|CARS&R=R#4l)znR^L$Bh^ ziLU2FJLJ3**)i%5^9y_iJe-X#-CRA*9*h|r0BM+P)u!?0uZd#lJedpzO zHXOC_!gwDsyMx_lT#u3x6V$?*)!ul2iwMg@{(N|~hncrCF_hNe=}EDk+dI}HIV;~D zWfIeSh|SzHo0MgrWpMHVuPYf$8nxl2qNpra?FqYRPWy9)&33 zwDdzml0~!Za$Uow8%L)SSL-dm9^&xayAgy*XxU<{ft{u0t(NlS=zq>5ItwE}aFnh~ z)iHRVjoPdG)y13he4Q8gHf<_~kEX}G zYi9zjU|`?ng=4{-^?r`4F@Q%6y)vhXLay=PsKIKKuc_%Z0LW#u6~5Ny^ib4L8bqZu)L~APFmluwkJVidP>f6F%emxn9rVw|_dwDhNq3E0wWA!~w2=?53iWc| z^US>37q1YA@E5QZj8)i3{W4>^g=4%FI^{vAIhBF9Ba{n~(=vsT6~LZ3FVrtw z7IXLf&Y)X|Xs8?P+O2NA4L9{B^$jZiR`896wcgvuYbcv)HMuUq8S-xOMr4b=bhx#~ z26@B7p>Sf_>yK~Ehr|W~L`WrJ_ zynX}v<&GL{=7kTZ&*VPVm+Y1nd%fC+;t6V#Tsj&~8NlcqPCDFn0GRJ6G6 z_+3EijGg8iGG;9Aj*b5&Kc6xZNSK)fY(4c_DPzhV@+n0f>k1sC?ZMCUZXD0LnWBqW zYck4|O%hVxQ6}Fs8kB3Z^HMTiDWbW~%W9VJg&_O4$J52B-8IpK#i}>i^%sU$y_}3m zkO)%Yb%As1R@7$u6;-t?s&ZANAd|vQPf&_<$k#$M%MXT$vCH2(G*G77(~^T@+c554 z1)eQ^xWXjZ*X|(s)<0Qv@@afbRSBpUYX@vA z-qZrll6Vz~{=UV=cm9mh@nhQdH5T*$>s%hr5-?Ih;cioW$yy^aYCL~aKbWdA$W=wM zSQFEk>fKZ+((a^PaWC=;{p@dWarTc4Y_ug>q7)!0gHE#jG}so#6yuH3F{~yUBAO`b zPd3DO_T)Ue%#RcB!JQ0|+mCaPxK(`k*5GTXuP3#Ww#8@Xt>X#k0gRPXVSv@);U(5JvM3Nc>YoUob_~Ly6Xz)!eLK zrbH%Jbqs$I?>RzksB2+Qm3B+Ich(2AA&Zyreeifm7F+J_u`U$6HUf^dvveR&wz(Q! zq-ZAtN*Z5y!kC#PWmhTF4rZ$9{S7Ua`nVdbtFb+G(@ApI_qZ5!U#kTLi%;%2<3Eyq z*8MuSqSWjzXnc#Hr32+gwFqg@tTO&ms3&$QVUyr}FsfT~Tp zApP~R*pbhc=T0GNAp(w$$5UW*?`)wvy$9hX=E1c{LrlteygPT))7<%85-*71%!6!>3Y>!8=$??@j{#*Zp3?2_vkH*Z z<$-SNGx&vWzj?~+Z$H^DOV@k#Tbjk%e%tRgvC3a^`{&JavYrYYoOnt(0CwnUtM2?> zD}JPotDtgJ79b;`{t^F9ae}&v+hB-I@UL!;8XEa4<2H5Cg_YY?H9cv!p4&Os9mrBO z@poDEuj6%qIbBLyz>9^Uv_hU6d?kWuWCa;m_imwTC-+e&(5Y zVW~6T$-JI}1-Vcf5pj#!zwyA2*ghXW3OGx!7i9PC?*0fY2s_{P=}>w;rc!(x4|kWc z(g-jcBr7Bo{Fz3Wyd403HCrB#?yxyK*I4$Bbs0k&<(L~6@z<+%Hdb~5`Ll(Nv*nkO z2(G_z0y(AE9L1K>b3`(m2rfw2FVwsqd5+(dNp(Q8@AQc7Ta4ciR-GvY^vRsJ1d?`^ zF?rp;ghhtg=^%3k_+_6vi$`oed6K0K>wBybsjXuYZl;dJI-!4S_O7FUTl_3wI&D_n zyeJkV_S(|H?*@;a#G?KjUZx_l&`4!d{LW6ecXbfOh9L7S7A4&v6fpFu5M!ST;WBY8 zkxxZz(L)?rGk|~8nZ7kzx@&s^T!)^D(s8rqDNRWy%>mMVfmIfRDm2?JiiNEH`rha} zP`I#w5M|a^ZB$&keh(DPO{a~Vz`K1F$<2F!o3>u6pi`^M7lrx-OL_Y?c+w< zI~UbG>0ZiGKuNb>x5(pb{$}&nd8(nCcfze1A&B&MuQbVBs3fogkj6z|?MYK|)TIbe z6o+sSHRe~XQrRv_#^gGT01q~W>g|p!(T3twLX?YWW#Yi)b$mLabJQ_5{NY%g=`sUA5g-cjy~R z+076acm6hq8^OeslDso#lM>NBR9)UqA1=Eh<6KE?HF5iGhIJ3J5s|FxCfrL-(<3x!|_RaDyzJgVs)GRkV0n;mxN@YukqDRE4;7;wwDy{ym; zXbXZMA~e2EXiF>zPYis`rKb2yD(ceDTrceZj_GQVtf4idLea zSoWCCIPIbEyEzG?@z|?G-+W{X=xmI7$P>Y@N{f7ApWk)J)aM&&2DtiN^;cf6V9Q+) z6+GhS`*j4@_`3X}HJR%Apn9|K_l~aGz)`;_L1!!^-ijs_2KG%I`6_Ndd6aIATr(v! zzC61RRav601SIs0*YBG;Qz#gSA)_n$S(4nc73XB9-l^as1pq1mQQz27T1~MY8NTjr z^(*3@;o4kWTCIZFDpRY#(U6boUsw@Hjp7Ktb-PWdrIkHFt~gNhhDUT-6#aszG>1%4HIuaj z#+1^5CHJ!5;&T0CsWk`8P-SEze^-eW?NnuX zp~|2(V9LpW{fe2DRZ{I71WV=l?m@5RS##>IPRJ+fJrftAq{+jYXmM1UN;X|*IBF+= zAni*{MBxFJ-L`g&<52()rKbE@w58eKw?uYu2k^MnMidF;J70&p>xfu8f{g<{d(7NL z+Q05O50zfxcnK(AxOMnQ4AXWpN{6$+u!$yqMFe0Q^^&LrjuZ_wSZ_ECDRI2xR~}7) zidd9jAqzGkGIu5;c(&SeE@Wu?3pu~s^^zjy*=Cz=QQB?!lj#mhM6Yu;@MwyJGVC`5 z=KrpmkbGfhE1ZiWrwCPkI1JoNIHDwPgNc4VG!_VJqcFqdZ1eN;keAj`TD%0hw#tnifH?yABSsv9ewKBW+Q!c-Djhj3Yp!b{c z@VERe9Tjpzn)c>x>hebuk|ZfMqf2PLv_(Z{Ei4_|ouPf%hpzJKXy8bje!PUD3Kntz zRYVqqs(K^fr%6VWsi-yBmKrHM|WT&qHEC6VMeSkAGF zYN}j8&_?E4uy1C#VRq!(brZ!57hKG$jhx0Z__Jb&YM94@On%jLfhJPH^FzfyblH{Y z>P4$X4JbU%$MZZ_J{7p*=pu#@iYh8^3C4o9j)6uLC)z{g@pIB%i)ok$l%CN^xLfD| zC7uN(+Jc&vET%p&G-E41I#Muu(08WVtO)46=erA{@-}uy)g)owKpW4?IIeffNe=oP zn0Rx9oe}&MX`K?yAea$$Z6;WdFdwiZW(fMVc(JOA#`S%slUu!zP4|%j=&uLV#3bW* zecE4C?d@X)r*H#nbDA#NFOFuR3YRA@BQN?I#JmxuG()wOyXv0XU$$@#T6oRLys6a< z8pjl~bwsG-N-dr<3XFX;`p9%m;m_N#`{16l7Py114+}`3YBM)h3yvH&=r7xJ#t=QL zH3r%_eP10M%ojVzzq;8F@dJVm$RXkARdnbL^4<4f?n!W!x(BO`3_GsP3sB`$yN7MG zLdaw$;_-dqL7A-VFShYlp!|pLg}znNY9#!;6BvCqZp|L@lZ@K)O)_j9b@w&3*&}IO zxC$Ki2xkqD@Mx7fC))8wslMMbjb28j1X69d?i?9=AN4@9&&)_p(`57H$W?KxQ{bk5 z7N^k(Kmc5KTrye32nmoN^lYq%vEYt@2xP$TQ$@$$W;TR-}HLuFv_0c->>W)Fs!;{ zqlg&|JN@7*an867pUEbFTvT6BRf?J9F`oJ{c8Ps8{_x@TA-XZj4Oy!jr zGPS>nru=5h-%QW|J#TZs`Cs``(Fs%$ukPQdkT1*#EoXP?XU&F-*0+O2^uiw)xk>JI zXO`}{%kVGURBWnsb1WsOc;{~)!g28%cQSp72Xw{F05xf9^w43rVEclfISz~ACM8N% z6==}wZZALGdF|d8%4`Zx76Xfuo=RNa*LR3T)+I%5r8nh>J_JLax0bqPy<)B zU&9dN=Jx-nV7 zK=J@S>q2rQT${-^)*!Rcevl)t-lw&!Q~o+jlS|P#avg%{`nE_vy-r_V#1eJR#N+${ znI3^{c3UYhP{>~(x4ETxcHS*(9k1v{MRxmxDnO$#@%eeJglZV=6J98th@&xwP4MYm zZb}RP`BfH>w=eJA<(qvPK368z{WhcU$ze+$_O2X~3P-g^j-)Mj*!wK(Jn^xTQ$a4Mb+#S08Zi!2szBd6sM)YoC zL)-h<6TjPo<1ck75h!_E|EE-dB6Oup)R4qFT!XGMzSy06+k(E9%*nG_PN%k1z0|>i zHSZ0llgCj~R=TLFD7}hFp?1i0#S8O$k3sXYe%aHTOniQQv6C#tLt)^^oYeCX(@kFt zR+Hm}>Q~m3NVq1``G^xcr-H^ObeMqA>qROoNyLY5!@8!jVE;`dsYLCt7`pTU<^RZA?SHB(*#IVVY?(I-hZ%S>GN zLwZ>(%R}s}&<{xT^jt}g$)q>b{brwBbP=jMeLM(p=g~T^ttT@6%$C!&c;5Y@?ej5a zlfn5tj7@50Ha|z$z9cvCuW_(Cj2OiGog2HVp2qOOZj*k+aVGDY5bM-0&WW+V#65p< z0l?Z`c^eg)wAuilE)ZYDX9io1Z>7__uCaa3EPPQ&-We-<7glru+G$bNklC9)iu(a%E3D=8Ik-;soG$J6jSDN6eoWhPF$Py4*{l29ZDh zkSu>aCjtCPAFcWhP9aW;T5Xytv;*WEw7rW^NvffctysYtKgue_Pd(SI%0_j(t) zUFUh$s=>vcLIkUtv4!^hh#+bpkrg3g+_?z!ib@IaN*k_5Ym)sr&=%fx?Gr0MC2Wx?EFIEFKh zuNSzc{Y;kWBPaJ>Dz(9?6p&53u8WJ8c-@x-|6ygz-WlfpY$ISFfj5PRM5zS#&H0TQ zdz-8DXMWFnKdcnlG}lHo@L$x} z|2S-uq#lER-OJSixBE7n>h|O$Vsi-Jl*?P%hgZt0fvi=5oCn?t8?*+#j*QTH>V|2z zm^+7q@T1M=TkqhpVlMmgFoGpkZu~sNIYaK5&%bc0|9Oy)CvGfA6o>jP;_3|N5TLJ( z3I_-0BQGDjVbt2%3O>8KdfbQmKcDtrXEt}KT@Aqge_U=o0yC5UA2s{;3^shz|M>L( z?L@$c_J3iy6T?m6hAp$sbpPuu{O3JLLdrl4deY_Vf$c4^bU6Ga->2vL$Az-jvyK15 z{60hs%S=nSdRpe+B@3bU-}_u19Z4N^sr}^IXh%)lLUEy?);{rl<6Ad#9d+}bSSXSs zjS~ChBWPIagIkaBb0yR6r3eUz*k=0j@pD4Zgv@VULH+nc|cNln(#wONe!0_on7)Wjohav2Z8yGV= zRrDLm7osVf%=`rGWwe#Jdg`J#FWh9T33?^Kt)Cq{#_5b$}FoP5<+v{BOAbp8w zSXSPLGfQS}H3X9E-GF^XQ(0$Y_$u~mGKP>TK9u=?&H_vhL>@WOmYnR=$`-^ig^agb zyoa%a&(=Yg{(3&KTFWAcX7w;pZb8M&mesbW?TA@vq&#_i>jN6}%IuO3A^~v0N`+kZ z3B5ezi-@|R4luN(bF?O6ksxF*!NwG3g+Mx)Ee9-23$b6CTUBL$S|yvSM;U^+nfTj( zz}l|f-WoO4JDm0*MH>y3ZL~I88iI4W4|tFpSXI=9LJ;}?)+){A-oz*vYPc^KGP7#j zAhRQMRtFvizWWGWfSMWl$7^~YO*|N6e)DRkxWxsPx%zz$PvTeMT$w?EcMI-aDF&7l zgeG^oq3Lne5eo^1M%hMQ7WD1#8wEb0z*N0t%3Js?AF*hwX}XT~v^DTA2^K2yz9{2S zz9HE+nY~us(DKhHZqkpG& zL@%v*?2&wjfcSzUBVXe3$1&2lsK@~}oU)~q3xed?^J=k9f_!A%X7ydj`}+He!ZsxY z(jR`2H98(N#og~zQAmCWunGvkJfVpi5)VhQwb{Q7eEIhJ z{@fci;Sg$1>{{R4??F2!YX~=7^h) zDI`Zqy!$Mi$Mg#2bgz>~_!3I*{VZ}BKw#A5kpC{oc*xu*@?{t=$Ug8bndnyIQuF50 zFFBXzpK#^dtgds^M44l_2HnFi<^i%jnb~IRr?L73qPGH~tI2^Hj;=)dm@n+> za?v(99(`F+de_XK>HiN{4d$LPz%$p(W?Lk7Q$!&pqzFrxy)R|n7#Aq5jqz@iUuLF& z-O(51-C7Q{Z7m%d%wYoe_{I$VN@Td-RMihO^dH%Y1C5cH_xJEWUXhCO>-ZI-CO3!j z1ttow%JrFec61pl)d_C601qRS>Z#^-Y2{Yt+zCR1k-<^W#dccDWn_Hvw|hNeF_ru& z6)yiFNRI>iitn^s{haPIiKvGh=!`X5{Q*_x#>mRn3i_3JmfnVm3(z(Oi_0F{{JooG z;I8UlaiWqcT-*FCnU5foTHkTwqfNtWf8DP8Oa3>*0-v$eZctHXZH3kVZ#xa|6QmRFmu_6 zm-22aO0;{yeet*@I9yvMV( zCK8YiCj1>&)ZSF`g>kUdb|S*oh#QZr(8#~k#>^LWp4{hCqz`)v0wAhW;PPaUYeQ4I z=<}_czW8S@%Z+mT?UG`AGeC$!Hf6!KSXSq+OhG$eM?`!33ygeqhOH6vqpf7hpbUFNPQHn@=Qg-!hb1$&ev%9Hiy!n)KuSB-;D7r;w^oRx?CHiu6yTb-?ily? z*bUR6BPMqe6^?Vb@uu*#;%S(OXW`;du4H&78Meerkoaga;5UqadRYW(A_Y^H%j4P8 zPqNqZdS{l;Hn(sL7x+BriA0D}=JIe6K~){>Q;R-=Xa0~EgW`q@%*xT+I_VgbAsr5o8m}+r!#J`m({o`3AkSx$- zIa$IaeyQ@QrxaZ&?L@hToN;r2pldk^kH>^-#%)%Y=WPoMU9c@P{EySk+VBI*Xu^h# zQ{}-;DRkb`m9%hAm=2Z<>C{`e&rn(dX{Ho7G6 zT0wy9bA=EqPVG*1MgX99Vr-(i&Q~!*8F!(4OF+e5Rg6vLUg-6zc3vcTk z3JluHJSx%yT>~zwc}U8l9I4YbcNH+)p#3I@sNPu5i9U<((Ia7o&mg3 zMC@Z<=`i+>U71gG#udp*mYh$uUqooI?4YS+j4E{ zralvuUcEEQ7S`);%+rUo5z7|~HzMZ34rvywuva#HLD44{>A7bfw!R-JcR zEuyCjNSF9Aa+|_ZeQV(@J!fU(!yPl0ywW^zz4!Fh?UjEz0I~T^Qg{R}#X05hY=6># z7~PqnQh@hVf(I0N){R@vRY;TrUos&V40_6WOgUmIS#S7ayOJsU%ve93Y4>pnpL{bT zI79c2O7uec_^&1)0Z^06!6@gy-u{9U2A0>fCy)F6DDEN>V234f3*VUJei^1Z7g(4M zw&H5E4d3SHx^6A7ZG8eQ#+f2L zcp+=^*sO5>T&8|!&pDKTxAZ8jpq_i)9}N)66>80a)b&rS7TSYVv=|gaYG@&bp7W0K z2X;?$X|P`6t$cbqBw-+VI}g|Bo@!=DBay3j-#P@xeiy*tSo_~~*0G|9O5|b(jiq}P`v{Md&(}I@DP=BKHQv0c8ISL;%Ay77-jM^Uze%ZO~k2EcSymMbF>gaMl zC^mPT_Siqi?>X>FbDZ3#Y^dp-=_8szhL-#E=?$xIw;HZ>%F3TmuiUx9eETu*`eXCx z(5ad8;p6b=yzT*Cc>)L6B&>|f7w`npS_(~ahjRM(j@S2If~r){?Y&X=n+T}sa_N<- z5M_y7x3?kGJADFbsmVPwnvC~VK+&mL@5l^$)*&BVh0~NgKC>>W+GmeI$|)$aYXqW+ z*R@AnWc9-u6z?tSb>BIo2narTeVpFj?KPY|Q8Im5WM=|%H%X%kei+^e6S0PTBvd`;M%#p5kvg4Jyr6I3!@yFb%irPfSe3Vw5 zJ@$l1=lXVO*Y6%H2zN$lAogeyjFr*+xQSf=KV}isfui#qXOl+e?Pnkr><{hNQk}x` zC*VOUV36yBk!dSYh^RX$>$nMc-Ob-cD{*N!#ncS=M4$-?mF$K`PbQpo6P5>^!$1rL z$|Pl|zxO|O=bHzTIBcO)UnDcs%Vf%ZT;BS9*Swigo1rTmjzB$NWZO#I*@l=w0w`{R zH)2^XsUKpj=5~F7o}{VE+%5QSg!0Ho@)PxNQLHwsQ_^W$Dkog< zEadLq?zjS$BdOUOepK!cyKodKg`K5$hU(oY>ynJ|K0} zX_CxzbMWS0RH{^YVw?Rpy1qBEz_+T2X-5XEba73AJ91B^=wVhyUX4%MW`nj^RIC!2 z(;RN|vj5vlAh7>WI3)#te#=<~iU7-1<7%Y*6eTN5wuIe^^Gj}q*OB~2$%=cX8CJvX zXC9qx;%Okq0$oiIv!p04Pin&>gOHwA;4)6ORdS4S_x-w!i4w~|8XpT~x2o?M`e?X4{p>L_ugZ4$*J{Rz ze7VRgb5nn%IPw=~{L`L#?y{_o4j*5#nM!C{&8GQcGHn7c<$&v0l;>J^{A6m&Cbd`A z3q6$1oIH7iGxzr2qvS`_&wUUtfBT=({|P?gYKL z@LtX(_z$bQQ-6tG`W>n)Q|Y0Y{j~TNL*;71p9NoTl+G0J-A7(6(0pV^a3q41{BB(% z(#NR&C{D}=DK4(ZI%|iTH2R5~jXf4Fz+!ktOX#q=4|dUO3ym#@31+c9v0!HYZZ>QR zvxuSKp54}r5@Ayl^Xq}G(Q@y`GxyB z1VqhZZY9BuWl;|r%ac*;7F}cCCUP~Zi<@#t_$4qHDqLQ_|Ak6`JhI$e_k~|v!9pP3 z`y^AGI;O35Px+aPUH%HCpNCEd|6=hB0Dt79t)9Z@=?Y6?31X5&xasq12KZ6! zX$SBp=Ogk!u2p4ijqp&Ubs>VDvJ>Z&Z) zU{Q0p6B97nJ?xN$Ln&z(6D!ky9PgAVc*roCzTBbIsV@e=aG@N>-f^mFt%zCyi4iGa zeeH2^#!a+CMWrWn2?P71pYHQ{j&`D%O|0h4 z96w7F1V{bDJkZ%Y}^}^KlUA_RN+xYq;F!-$GeT7GEgC^p5LE-&>uH( zU1!$cG?qATJmwqwH{Lo>8sHVwb|$aKlPu0+tFk6XU9|^Uh^q9y^q(+0yeDBtykZlb z#wXeBX=>AF27x{1my}n-q3`FY1^4HJT9YH#KZY7D|LY8{Pz^1+vPr`afID(I=3Q77+DR1uewAX9vZ=$J()(w zVlB-bD4E^ufH0*!_Al?oKc1OrZjvj6euQ@C6TO8|S+Y8PP4yU0&(J%Z=#$Gqdg1%v zpY|?oep0U5JQ&7vdGj@X7V*CLi5msq^ff9BN}QKzx~%H>W;1UBJA}g%FT0T*)=ly( z-r22ec|CRHCGNA&Gb?q*edkaaAwrHcOek65$`RUs>A3QKE>hy)9Zl70X==+qrB{Ex zqe_I};mKAKA_IGF0tjun3tRhAov=OodUCd6u!7tkQ1ZC2AtZ+87*+mVg%_otC{pZD#h_r=EOvwUAId5iq6t3Gl+KFwK-Z!&=`l(AW zb-zB8>TkVej=Tt181^eaUTH8D4`h54uWq)9#9XalYbxynPIWvER*}odmutp%H#{dD z^|2ccomW!$#@%{M1lLt2+PZ{xj8)Lyxl-*&+4(d3@xI~|6_o@RQozGv(pGlpXeZ=! z%xTdyl$5XOcWs?kRQzuiCOQ&5`UHSfj=Gj0jD-owZ@cw8}cDj_} zrer(A&YRFTA=GDde(iu*2zwW0fw1`9)@ZsNn4pH)$jN1I$xumisJgAIxdtUGPuRg? zqqAY`xf>7!u=2k=ni%)j2NOo_<;;k?E&7rh-#F;!+itg>0?o7M zkI6jRaN2Ox?i4^yi)%1UbmioPZ?U_esFk!(CrkjuWNq7?oREfkiC(+CoWoH}F1I{% zu9uuSsP_hj_@lSz1I1C2N5ZB0MhTuxs1G4IH`}6``rd-CT@lf2o;v_m^38@n!`0S6 zV~98NpM7ei{vvMdW81>s#!$5gB$*JlDAwmBm zY|Y+dgvTs^i7cQudv{8y9mztb|1IkU(XAz-6f(zkf~fxfkjM9ug<8 z6B@m}E>4XZjb$SF3}gp9GzbP|5T$VRC1S1cT)XE$|0F_S|DcdFyg4ibQPo)_&7i4RyFkFhIe^{4t#mUA?XOTtTed6v`qWF9H(i{3U-2~ zn)>1Bqn6bVSiP|xq&i|%Fax{2`~;An+13w890A0zeQxzk^R`5* zG$^|NA{ss=*j09ZPfuP}#&pt_OvY%=V}0m;0F!VGud(ll`2{51&>zO8ikO@u4!bn=I$Hz- zb@{?vqGUJcOH2OY^mg|&R05DMZhqsSw-@4ISUrBKe3tZ=`C$rD&j^ENXU#O(fG|ARm$ls3qO@(+3WYu3`?le|U&6d#yClLM!iZ@9oJ=ez+WJ~Bq zr&b3pc%m}qh9cyzKmVMEew(%uNvC_dU^o;_qnbIW7L*fR_Il)6W^d)cM`*K(C}Ng9 z%kuO($z5pnIW>&B_&Rj$D7!T!U}vg~Q*a)Wz)kUNfB@Vzj5{^kR$gT7&A$iHod@pC zh`%r0*2HNlqiHrU9_ein`f{Y9O4wG}ndrfp?Es<@+A3CylE>p@DXmUyHT~bA>-|*# z-;~atWb*yvM*Y$=c(Ol}9DO{&b?%!(yz}}j-9yUgDyM=(@kBi-Y8 ze(^{!Rn+w>V{&RJg||9w`*e&%!0*|9i=*e@^PA6vaM!o)$53+4T@Z8`Ixj%ENsiytp+Sl%VqPk*<|jSoQsf!9r*@8^2{j%#n3HJ{s5YCBir zn{mN2)A&ttSZa6vqSus~fR*K_W4gzh0mrcZX_7`GQmA>uS(cPGY9aBR%1^}Z!J`8L!JOWtuK&-FZiMe3NvpF31v+=L;MKGA`ShPD&nhZ3Ebw73a3_fQ{_A-Yl= zOLa0oQ87hUhkOH5&C?kb+hM^of=%L>|3;W5YnYS+v9U)dPA{DzX#Wg1Vr zZ%WQ?N`YgqjSHi5E}=6CU6`C{)|ia)h~N2yL6juyLo zVU=)hS86fTgN8$U^gBrxpO;v4oK7AOn4e~CT3n|@bvI{-E34#U3@kqfJ()fDb>ypI zT*Mv|rz*3y2@IQ67dvMDn5q&~;v!5TX5y$#d{aI$w33=eK~(plLCOl4MFY*|+w8jf zRkXOgC^t+3A`%0ENM0_J;HsoGndneUrew4<83!Aedxh@fD|b%j=Bo~*BP&ndo$@P2 zkh=VV5T9wzw)&^bUV2{4=6w%N=lL7cWD;wy`IB1U*$nW;hYg}`2I(6aba*3XoIi%0N}uYUKU zmD;8(p|?E*oMn*U>e%o?n)P+ZzNNUC24tl2p}>_Ii1gaQ@cDS)o74Mv`m6Q5;1<58 zO}D7BII2!qj82Oq22_IxtQtD}W#CUht5IXu{ABSko3J?JQ4-Y(3Xqd`$y)FYI#6&< zu#|9;cGMTr#Kwku&m~u|NW0mk^hhZpf;R-U@E?ecXxf?W=lrE?m7P_VKMFJ7!6M$6i+-Y6~V}f9a({(2B234G#0`1gR%g&o(i!d?$4Cc>YuJ1L1`c}m_imKl(_9T&aUIeCOQKqSm>#Ho{ z$3ww3mT%~|qP{BYxMN!#FYy%nj$zyqajs}7Fo_v8}br6;1`gtCf7l>URYd%>%1$de?(V)Kcaak2UJ14>iG zdWW=;A%nW3>PePeCu;}rr!fR0RdXgDs%!0Tc5Yq18anA~p z2g7^Peyu`p9C}zxbaTIpe+ghGIS-?k=5nq)w}pByo-xy9zV(ui?nXaHd9VXD7yo%r z(^#ODX(Ymr$iE-u>yAXaX9V=z*CRAN`Et(jjQc;|xDWT??w37Ava_@1n!j1r zTx-rL&#+11YQF$*H7DePero?7dcit%mOE$ z_@h^GIlX^rZ{ZdWlsuJVc1p;6Y z^~99LW44k+y11C9ujd$)_7i%{QN9ou@R1H?dO)tV*k6N{k{l(hD5SZcP$BfNXoOeQH8l^M(MeKBIGXV6w%u#0{BF5+G`Iz)Ei)mGm0+pq$S&n>@5_sqgRiF{rHc(SSrU?t#Rm4? zF3sf*lF3Rhk5Arcn%rdd@SPi|cyPDMDE1l!o62Nsd+96Atq>faLtJ~hS81kBERk3j z%smj-@@rXm7UO7mz|Nl;h^0F5%(i|O(e}9}q~qubehj_hSE@@HsQ`jb`@7nkzL`2IjLMky)#bw9()V!Sef{_k6=7IbG*R-^-j5 znGTzhA>S)Le>4sJc$#PHw>86-QD$_kVYFB&W_94ODjspSYu1R8o<^lfbT25>v%#=K19DPVi|cbT?b_w(YN zQ?V6c(-V=5(pqOPIPj2jmdw&Y;;h%$k&@;0{O6!^dc{Q+mFEHUx1RaD)y5rupRW=h z*BguPYQ}DxuHXgLg*GrO3?xt~0urvfwaH;%VJp%L_vMEQJ723X?%~DPAB@+3;kNBC zxB~&A;r`$0ge|b7Ehu70H*5h>`R+21`@~M6%ll+yq3t9Lf4?>G(^Rp@&pI7jISCp_ zPqXK=K-%C}2y`Fy<@5Ea*2%R3OrPKrUVogr1I;X_gN=k(>nE|PEAuy;oQVp_`^KN$ zXcR8^kZZHg-VMJTa9_CYWbSVYw0|5a@P&23AEfO3Ag{^}K@)K{>?0$N>mH=9OubAn zGZ)TWO)n}3_Q=23d`*sU ztw6r#KAEf4neqO5*pt(X?V20Zo-(H=kEH|mE&;zQ1&|n#k3}k`Qm|+}+sHV>FJrB< zi`B`l7wd~bR6^?)9lwqWPWhh(rFxcPB`p;X=W}*`MHDf%QQG5|=HI@3yvwpIkRmz; zWRR{sbSAYb$jL2=3#DMvcf;kr5rQCl3N)$#H}h3g&8PZrQ)`lQrS^zdCJL)Us#WG6ydv>PQsNm5C*&Cp%*Am?i z3bu*USo~AN_GKPC<1){z9`Y?4207Mj z@u)RZ@|fGDI6WVtrP2-9dJ=ZWBB-dB{_VtS*VAu}jk9+dZa&_-zsj|M8QD}%6Jt)~ zE{$KNkj5A^u-GHcREb1m$W$ACv<8M=-cqbt8{%Hv7<>_H$@A^CtsfsxaPo$r%Ui#N z43vjb9C4c8kMPmUUXqFv2FoP&r%=vIeZ?J^`9{2B7Y8PYQ2|Aa#li5rGV^k-5G5?_ zp4H_}ZyhW&a-C8v6*!s3Tari<7h@x_vQYmr#eQSB71kc8XN2+R@((@=&Zcy`VHB*z zTsbRntJ#*lR0xoWSLLJekzw;CFjeFFve*CRE9%0L-wlE%3z{r?7LX(p?u!#8!m6iVb32LCb2t~g;lGIyC>k)l6ZhjDbfDz-|oV7%@bZS4{q_jNDthfA6_lRCQG)+Xc~Ib z20i)qGCgb=BamKdFeca6%pTy>TaD!YtB6-~$%wZKZ>)QTDd5Ir6DKtskI#NB*N)~( zoRP;@KcBaY85Eo%=|#uk3-jXVNqY$+)xxFM4@Ae^RQb7e#Fs`M6};k0XL*nJ8Q#sO zEi7Fs!Ykizs+&lreku3$=}Wr>f#-S6OuD$`K1+a=_?0EFVx z{;nGXp>hI_p*-h$me@L!hdPSnus=QrMv4A`J#%t7RTH&&jtwSZLBF?JaXM;%a{j%@ z>5JIqh#mV&iEXuh?^^b3Uvtl@^4p`Yyo(&h73&ZU#{}tYgjJlt#)eLHJH$44@WU6c zuNXxK_D|4VAT@zg5sSkL@1*B)(~Y2Diq#?Bm1 zuD3^h@pL$zhIPz?Uzq!FP?_pZE7OH%>de zIxHEr)=n;NrXT~aM+8H6R3v}r8~-uC_y*97OyhF!~U0d%rAXd(w7K_85k z7#1NGoD0qmswX#ox@XhyWOfwuysz1uMWOc;#-W?VA8?*FZy4&hzo3xOCTrXcxX*M< z>^_6^WEBcg;iIQ6i;=XoKWpgKSN8Y+3Qei>x|7>K`$K5n;B0EM zxA!kd-Ilx}j+5{SzHL-kpWH?qYMmaJk5EjuR6-dJ(v>Zjy=aC?tvl0SIO;y^Vb_{! z83GNUvPZ0M=}G(FHpHB0?uRohVr|n*Z5kRDtlVNcCW3a)G5J*1;~?J#=?8Pt_w zUZ$$m$>A{RUS~nw`8pDZ8p`tn=+j-AhgmFiZo-k1EEniWg%=wMJm%m|K3)Qw2GW*J z%|m8(Mi)D5S`_T_Rj?}?{%a?#{C@1);LA3A0h6>J`H@ew<;_i#!&4Mv`|M7q%S0FU zLRrPV<3mfBb+RLxF=1|s+`Dnojg~eq$e07Lo-ygdQJ1s`&j;@Z)*6@w7tpI34d_n1 zyTk_@HQPQzPq?QlJoL>nI~mWR7S*)Ui%^_2c^o814er8%whpe%2PZC6K5p05L78gu z(;6Y>vFr}dS@ywe1y#MAB4ZF8w1U@XXmMPkePmQ{)w{+fv;*&=E#$Kvj+*DyE8Oy)WU4JL#{S3(OIVGRH zwDr(LjOXQg$(2xe?8XVJ4cGham(HDBK%xSAi;2>FVKBX9MIYolznn zoy|7Kg;SO^QUk%|Sm)QPirr&VS_^KHhrOA%H6HM5-514^2Tqs$wz8DaYfnPXwMUP7 zLEA|@Jvv|4%o-?g3A7}*>u(4(cZIo0UP-tPpt;A1G=EcpO~JJu6$b=sNY7Qoi_gL+hzP2QO~vdaqG$~$@E#BCnl#I*TkP%xALO16(hZ}a zKPp;cF7@h}LWU;Ojk~;ddQ={u6wGONn#R)lvt)(@=k5R#v(KrEOGVo_4mF zv5T0c!qs>!=WnX^;C#3UZ)=a58NYJ|rn+gsw=`L_vq$`7iz7plX{Vano1w9WrNU!7 zN!Y0mq_N6rAeA<-3D^I*nITF;VM{XfyL9eIRH0tDCIRz{$)Uvex}88)jwzr zKz9Zf3N}J@=M}?6$Z(ZJKz;`fh%UNXuStl{xaC?PM4|g|px#tK zdd%HZQ5K{t>W!6RRPF!XGVAL$YH449%{=k2j^{ z=Wh)x-PwtGuUx!jYnq1BH^^<|Zgb7|gw^WgU7%C^KWnwb#4X6g6X58jDmJapJw*Th z@GMw_ZT;FWIx`s8KCJK?hYO5PZTnqr;MrG(A4sH~LZv^+>?%m)a4pznb_fwxBd7jl zgFYGJMtYZ4JoXWP& zm>s#VxJErccWPr4DE!Cje5MUF^j~`iNL8K0fnHY+Tb4QAiVNJ14?s$rh4Pc1JLO^_he#4{?z|6aIap+hmf`hB^M(> z=D4&fK+)p;?HrcjgH7W1v6AkCE!z50s{t;V<6sy|9L2aXnd1iWnG>My%0sn!vrBA3q}MxCSC5IAdLN2bGU^%Gv|&Z zX5V~|N|h%r_Fq0BgPol@0qckSJN?rbBe<~@gjMx`;FfaY){ae zqp@GqX@rJkHqGwqqqtsZ*;%LP`OM-7cT$c>rJ{&$aD7nx!Kb*SL@_QRwf zXJnq*A7+q`Qr2Nf3(tE{iK*g0e`O17!P}FY0f*ij6Ba$^o_15Du>AWcTM5R)Rk@P- z4F#wbMadH5A7WvLq6PCA`B+vNbjY8sAH+FNzQTc=ON{{NVUGg@3iT!K@5f zrmTu`7x=S(t2Qln-LQ zJ@6w-EJ`|&m#3^Z>}9|z=VWykDmu0Vyj_($7j#H{uskHSA43c)2mmI%wq%yqv4Pw!|(yUz-e!}y!F#l^wYF6uI z>9wsLNRMwYjihx|l1laTnDbj78MWv^I@xJAC(GJ+yh?11ms<<)MD_FYXBMh&9PR_N z(KLzyr(UIBlvAmSpesmyh29hC^&152X&#-bs1*_bn))Xw&<-$=$CtzQNw>2ay6n2K z=QMSok`BxKCc77JEc7-Z{#%;gF?$j1>)Ecc*5IriUGv`5$8k;1MC-O!$Lg2&c+z7T zzvb@BSuEqB-gieA7v`1}eqzER7B5gA>@}5qE1cHN7+-h+S5GzQx|u z6`HWMScgF{f4F@Hcb|vqmn=y3R*$Zu|o5tk7ifk7wtgJU;v>Bz~T4u(n z){lhQi*^bQo%`P>`i$(OS94eniXkRqp`24gHeT+x*o##374t$1SC+1VF5O_Sd@#rE z!RI?IT~o8B*y(5B_%Jle+-qs!l|Hr0mz_WIUG&pV#A4o`dgP8|;YgeB31 zEw(f=0NqZ}9m_}!ZuFDdQCHu&n#1}rQpdc-1hp5T)7O!eZ|I~tGH08U5zxXWR?h0N zRAUBDrMis74CwN2ryAtpcB4%)^z4vD6?JQTM9(ZFJY3S2nnYjaH~C?mTLdD^^|aAS zv3H{m(0+hxz|sia{LM}5f6?-=;NjVWg3Q6UxrwW5+j82@!JRN;M%HH(I@pHIXNoo1 zUpAN5Q=ZA%5LHvHFw&5E9&80*j&>KzH|$*wdJ@Iuf&TksMQP|G%GW1y1l`}#M4Y?^ z@$bKWU3AN>&KN!3GwBrkOIH^XK{hXz*dItHXrjCh|6vfjkLJ2x_`2|x+vQ4bQGia_ z#xaW<0>HA7?aZamyj|TSsO4+Mkj3eMNz7ZWGqcK^M}V1e8T#R_&__?Rdn5WI2Y+Tt z9i8HP?FGlOppS0&LbiNp#%U>zca=#|uxGT>QEr-c*AMU~Xs{ zU!=;(`nj91CmIlW+!UxXscYkde&0$4l^vYby^f|uI`|9LjyzlNLx^t#UaIs^`}w_3 z(n>X?1LI9p8@l&D-Mg<{9PG?JB>;W(FqnL$Yeo`26Q?q;j=pYjBX))cg-S#GX~#4G zexbI7+(X|lJG8hj%wzk(lU3#W(^khG=*>C@b9|Kd)JdBK7`2etJYepqFm?3cFl`GN zu$E*X>heOImh&#@Z+AcO)~ofy=~Oq-ZSo;kg<-o~veRP*?&p*bz6Z>(l|X$SJ$^TX zILhy3-u$_tye(CCFnno8`u>FxH4>FIY>1u4Nr@Rwu3iOO4gc`4$qX#@@?vR_ zQ^Ww>a8hOYw^Ypqx2j>~8krW=@`HS*Eb9&x^L?`|HhK-4cLL2H@|RqCyR4bZrh4uh z3s?yHqGcqf<_+bOouLn@JaU74g-MsT0_v|Vw+kU#pQ3zv9l+_D`_?KwXi7D9p^V;( z>9O(&-Qh~7frH|w=imVtEZ_GRt30y<`@pqWXQuR6vdZ$7EsO;+M9iMzxjM+(q%Vu> znkZP-yl6K)&uDcewJ2Sc=3Hvk(e%UahXC#fszf@2Z@K^ZZqxAr#bqnOtlL1GGtUP1 z_^*!;lmysu$aZ5~J=(P(*TbIYDf`tzp{E#^u4VZH46fy2u9KN_5)cv7oG@sNIfo zkNCJ~fB{|iQ^Feo!($5p33f5y>6TYay9>_W_bKE0RH|ITA6TxBZVtGZbQRyKHlPOH z%5u%mMG0N`y4ZBitRC;?=`l1~`G1DIkc=NFG5FMdb*$K;$m-A;c?s|^z*Q#ug5H}vQAE^&Y8uvIj9V3hKnFV*&E_o z`o1m7_pj`hY*cKo7BCt1N65uxpYB&NDs~6 zN4j0*1zqPM(-rAZ=AGY~8n?OMNnIimuM53p5_{ruzn1hI)~-?A@g4o`lfDtw2yb}B ze+YX0y&2YDl{GJjPQ})ri&aI{G`Vr_bH|nW?#dXov?K$9#E-TueZ$eh z`3<^d$G(eBuylXE7gBMi`n}IAEH&IiRSS0InBL?|`!_}QgaP5Tp2VsmaMA|s!e`QO zbZ3c<%#(SqELl}E=cp_gx)I*uAPdfbkuEi67GWxj5Ns)zr{#=+R>NOCmZK}L$n!UQ z=Py(mw(FXp^X|UbI!0BEq(;QN1$emun|a{xlg2W&YFGc4t&3y?0X<95{Yks)9&@lE zZ(sem^@U9j!SESmRWClHgXH5_|-iL4L`DaOXev?V1au~)qt8;*GC>FEL( zJ2y7ppjA(EGdk9}`WWukbN$Jh+~ivn6m$Uu6H}+}OXvIQSiKG}`4=ybd0zl!^?8nX zOEyHUTEl-3+Qc@W1YuC!J?&(cBp>nYT(R_4P30f(=0TWs$Z~m%bggi*+6#k)r^^3a z_CmQ$_dLGX(1@akIvbI$Hu-NW*w|7&;eB%)&J(~RU%_P$JpoCNL{K`;2e2m+%XMUd z{X8dZ2wy3G;7{_U_;b;j^AI@##$oB|4tO__Zf?7=(JssaY;4o(NpUvMwV%CJVT(K2 zu08&3#`WnC|0@+}L5$id>#p#@CD62`EK{j2e4`foYbF`=)0u~DI`;(k(|@io!D@L& zz_&E%%5*$(Qt=A!t5;%GoNOZIeg?y>;jjhi*n`P$j0&TJKWZwyeBR%Ty{CSjdMmn! z=ROS3abKtPimjAo5M2fuJN=6N_bfpB*(?fvm;I%JcdXm8+78!{wZ@xUk8t*JEJN-* zAN_LKGJg5dy2YOvQucVJ5jw3jq2)M1gnyH1y1z#M_Q1!8J1nU27$)sDVm%W}*!PnF zu5MYrxxR7|*hy5rMB-J^G_W8`B!w=;P;~e0V)(XP%?EA>f&dI7dp@b$CH())T%R`2 z4M%yEq0Fa2cwfTp%xc}))@01s*hKsSq>e82uQ6+0T)Hp6)C5qoM-lgt1)O>LxNVHP zlOE3Yfp@3M+#wI=!?NasZz)&_#RD#O?Jirhn8*Ut+& z|MKPUyZwW)Xw!dD`1d{jj^>*lQ1Qq!iROmLZ+%>yA7-a#>2dGb3f2VCF}H%2O!M zs@m)v)Ru%L_)>Qd1ap&FdnW8~U$dkx+B9+Jo}rQ2#T=cE_`btzPj&H&+Kgn(Ah}O6 z%VLDP`PEmla*(6A|K)Ais}Vq@uMwxqd$qTdpMq5xu2;?-h}HKa!LD6izjQzq@>Ge8!G zy{?VE?C(vr+IS|mA5cP9o4iTN;a_QR>iPQ-ZW+DLl&sVAF&hp{4A(swDP~}j z&0dEMieinhw_m0uLe4<{v(cR0i$GtA7U%EC$t&0tA<_`q_GF>LuIz)RAL!4 zpW?B0^;yVDXS>Z#lK1-Tt*vRF8vqGD$FZo^*FqCb)9UDRR)2wuWfEeLl>f^Y3S-6_ zj&bG3>vusrKA$okQGE$Cc;D*l9Ff?on;;}We3mIS+(&KzYWk26JVTrprK?p|@qrf`aZlW?a%2w|>mn_}n8u%peWTNFJYwB+jxv?Rj!$&lC6mx+hU_w(!3% zV@r@BbYu^p_dkWrZrub}(w(L#b})(Z{)&?3D8(T;XhmV;bAVE6>^@{;=!xm=fdKY2 z$f_-Fd5Fb^{S!ED-fL?8kDC3?S9iwXdW{=0c4{(vPWB^eL;pfC{`tVG7Lx;DLMK?$60LB1k#| zEN?k*GG`9Xyy*Y$@Ck6L^u@-!!9bG&DY0+y@=`y)SU&m#9rbIQPAaTM*{;ojg;Y9$ zVBF{>&tOTM`~$7c@^d*f+|_h3q5Fa7)(tQ+o6Eoog%R7-o3%tR4os`n{)d_i9FR#R zEqYC^x_qabUG5w6r^5!-y$zCSC>0*iuZ&qIz{hZa-^qmy#$yUUq)2aw;_M{p5 z<@=mmx>{LZp+K8Y{(}Lc{-UBHVx0HYi^jF#8ghN}`gOl!_J1Bx{*a`!82+DuM5xJ7 zr{4Wv=uz|u5jy_sP5tw85v|bw+a&4#SK5_1I{$xqjR<|}xky?aZjkoMcn=u%v?3yY zefn}3_=iF0l$1#2u(mLG+ku^u6qTz;L>|C1M7Yg0w5NS2HX`CoU)W7ti1a0Xuw>nI zpR{)yZ8>7!Vo5eEBP&?HF_TFKHvRRK?@1&u@U|53H3K>Q_}riQSX0=w)FT*iUj&p*FpS8`_yC1pzb!mz3V%i zuTv_YY)Z>|Wjj1DC76pKe5s1BNYDTjee!4I(!;N;CCD;fRgzzMED%*S1_J1OG(zZ< z#P#0EzgfJwhu1*#NrzdY)1FbNLwECL8I_b|n_NtrW8t_B(w(Zz|K4|Y+?z&IY`@r* ziQa#r!aeCE*k$w`@8bT5=u7E88m;fmFhM2rk#NqVX{xr`kj|0?r4LDcZSrmFUC^`% zBDt_3YV{gw9||{aH_>C{6FHz9nVj|_K$*GhjvpTJz1|(XV8C^G-1VBR4BLv)J-@qf z>eEJ%B`%RB_r?gd51$FJq#42xybG=rA8ZEzLz?u+?UZuusqWVaJ#X=~ja~+yR zwB!ue8dX-oL*k3W$F3rYBIK}jS7<2sArUiCe<*jj9&S*U_bxn37h~F)zmrqYeY{QJl&42lQ#aDz2^dyNjCeYOVUePrHd?`*(F#ux4RN$mG5wh z|85%rsIQs3&P{h_)uil16An7Sqsfe+O(nr&K`cJJb4_pdSb9YrM00_Yd4+fUhP3_1 zUVqWc5yb2!Tl1o0`_Ztb0GKp2M*g1Z`>e`*B5~C}XsqYn-#_XPWhlpwG6F4X@)z+2 zZ7;2S0V&@zQOD&pR2jIF)z~8h>xCXLP;@w^t00n@RIeF=^{77_(5ix&610tsSqgf&~z&(57N)$B8W{*~^%^(JL z169KWJ+=VW`yihs9&47e+wf$L7~UnvB@d9*Zy^b=2jED=EeGnK7Rhfa(FyC72KjIJ zmIc*a7U9(~*HIGRp|R6M9dsv824!GiUT0+gr4s75tK}C72 z?WSbJeEu=Qxp@#P3m4yx_0*EA`F>nq9mtA`#7J%?`#p8OqaCvkNbcSUJq;X z57sf|SLJjxLHxh>asvI~gR!|LN==kS_ZqJQnR*=^TGdZH_t>)3=%DZAKk4C9+d6z9 zgufq}+&&zgm@o& zux46o&#}Fo%yQ|swAy#Nc|q6K_K zD8$hAmY>;;nZZr{DZYe|m*(3$cWnW5`sE=OIiYL2A-dK8pYon7tP3DGmV}0b5>Md+ z$&GHJV~w&$RcY#$v$J=Wh=UjGV!8-8PeU0(4z0sjgVIRl)WlvQZ9r~84@i^|Q}#KV z5G(ra=m_=vtSI2A++GU-gP#V?clZGdRU1)+U06?jvQA0b&A^YuPJEkysIvAx0lo(` z!Xy_&MiP|#F$Xz;>-dmJ5_$yb46SWgo;aNK+?^6=VxCLYw$nZ%1t~&c`P&hW7~=$> zeu@nkLfg})`xQDVx5s=5294m#iJQk+Y+$1dV+miEb`d2&9(hd$an-+U#YJD!2Sswg z){=llE_c1jZuDw}g-^SofA|>;W`a|31Nz0RBTLvu{Kk|-LRF8SSgI}p%y}22;5LpO zcWI*OZ<}X1rR={aPWz=>QblXCcfaCcc}u@V+c%!?i7xVo6-{AR2>Hp|d=XjULB`iq z^|PvfOmSaL6+vYZT#3NsQvv6DF%>+k-t4lttq#W}#@@F?oN!hrrkWH-In7WQ`FzSL zbr}`IS$eGeGldRCt~*WHtXb>Iz<~~U^ng4(GCi8al7pT#TAb{{8T3gmdOxdyj-jcf zmq_lUJaiTYz$Ugp)u7$)!-Vm%=bijQvWZ(-#iAT7M(Fa8E$P`u*JyKgP0sK#(|3`K z_vvr`JjF8Hg0H=hsRz*>2^cZEb`VLQmZb%j;yal54|gJd&v$hL>Pq^j)gtuXvg{-1Z_1} zLxXyNWndK0q>To2bl_qwhM2ZfRoDufRWYKT?-q-5qYok2+b5~9Lpab5yl`mbEQxN1Db_7g@k*kbI^=9`(&F()2v2<5MqXlxZVl$YN3TsH*P;t88s6!1d0+TaF!M5Et$1|qsJOs zlXuZjsx}D6u@7B+ldUpe3bHZ^VN3gaf|57#06H_+mU71@9=hQ1qZx1D^m(y)5MD;o z3=57`CflEpT1jIjHpQhfSzAwlyF^C;|JbDXWxf&Q{m7@;!DNXuU(QWHR_tU9cP^~p zEeVlCQMy!+?aE)wD%Mx`(I1F`v<>Bt!VNLl6l>A10Z|s0?u0dQMtjyO_ZSS|X_U1}jbWEFWIX)lRY*DSCtDWu_RmR@z1(uzI4x+2WUc~Ti>#0jDXEmLL z_2yY3JmmSk+1euEVfXhYWmGv=Gb%*gh2=}#Pn3aUY)D51+5`L)=j}Up<4r$WuZyf$ zRaha_K*j?>0_3hMY=y;AxBKPV;r$l z9f_B^GFj>dmazj-p}`pdYk~ei7yKiM7nF``L|i&lib1t-!pTmRh$yNb1m<~ZiJUuhS&Lc zj|U601^7Xjl@<;-8w{4{K+?@NA`mXFidD)aRZ=?XkKeKCK5V4K} z-{oj@H5rM?te*A>g7a?4jG*!UD_4KGM~WsI2`3HASQ~H;YrN_;Y}`wTI?3KXnJ~L2 z3-P=@3xJ(4@S>q#1rm{-y!%hN>IZd8s%gW^ID<;N9J5Q7R;KgH%_mOL6UP29N9i~0 zGc-wDvU>k`{A-knlN?`uC63u7kZE*L$r20QVAK*OOHvNg?^SDxez6wB24Kd=R>$MV zJrmx}++xqNFSH${BM!`imY$YzQigZ5eFu))JsMYruxtgp&YQ4)r}G1vC7h1I=MLZ1by)a(8$BKw>SIV>SrmJdfPiX-ZN|2moieyUR{~axG!LyBl7pWrIcFPg~dcg z9x(X>YUH*VFs&_b^#sQ7XW6}^g~CDwUy+-!Fh4yvkzw0^3P9BJy0N5sPXyP$)&)1t zVO{OlL$PsNpx^fYfNg4&|1j)Xi*2ddVJ!4gaXLQoN;(U{M&-e;m`0u^-bkK7*g(Ep z%e7LN%@Se1E}yYpmGKfH9{079w(1{gRLje~n;OGcy<;=raPHJ5(ZPOM6)5=|{fVeB zWUHbi-r*V5t==Zx!(9DS;3pl(siy6Wh4P{9KW0)1t54LnXKy1y(0xg7?53Zr_-WTwp*X=8{{8p6dd;V{-bMHd1 zpO=w00lOj2WuDS4ajUd;fVcR2Etghp8^KMwH#2h0V()%<#*v++7fDjw(Oqfb!JoCv zOSS$mn$W}ukXYV4m2AD)f|v0=i0~+m0~(a&B4bxJz5Gb=ry;!aW_WoUSfM8KAc(^< zpp1CJuB40fBhp3C+@t2dcuBDdWwD|({9Lp_h zz5o-LAx`;=_cTP79gal0z0AXET@Lbxk0l0P(fw}QQ)*@Z6Ggq_^y;S=O=I-RmOZeC zf~}#|h@4?uy<0s8|Hq32$QO9vhwG^xP40?!CJiXM&Rk(nR()HiAkNt+(487;Gjds^ zV*A?$G)3c{6M5>VHTbdeVbl|IM!lh2uMZz_UV{(e2t008)S?A}*NWFd6bO`B!3K*R z-Mv%t`}J|v6bP}I%Wli$#&K(J-QLlKx^6_0-qPYi&xCBIXQ z3MwfoZ*EPTrz*i6V%zt~BdPii%~1<0`|gUVs6OxAa(=*DxW`6hUE!uhpQH58+8BJg5{T!M-_Au^X|W10Fl{x&`6a7?+!R(CIqL@P4_HOrF&U^V0* zi#V55Ja6lw9#j8*Z+5_i?zaOdyy!&^eysAZ6#vS!WK{_zlxzMTf|xbBt*INx0Q+PI^h)&KL)?c+{#2i zO4!a%zXc4I=&z-pxd^UA4jO&f0@bzDy>2zH&W{A)VepA7{NNfy@!>Wr?%vosTzDzB z6}K;aZUP}m!oc)4PlA1ZTb|K04!TeP%nl@|P?5hT5IGEH6>`x-1Ohs4nMDB$NucC0 zb>*ucK#>cDKMVgS+PFhW^U5irnJJHLT`A^^4v3a2s82@1_&IM%s09ih0~6&yx2k_B zoyeNk=~~(=i6;z)tMBuiETH^T*DB?KIX4)N(0oU)mK5y<-jS#hww+^OHaU;N7ia+b zXlSi<=yYfRt=VfbYYJR(fuF-z26%QTL%5R6@r{smI4JorAuw50px++#ag*=2=dO*W zmJ@FloNnbu@~(^ZPpl{Ttf#c%@$xN;9USs6$RlT?{A`i_CApCO@FE29TvdMG-VF?p z<^mbw915gboBG>v9Ik2U2iNSDx7>M;iPH?5AZ=)Z;?}^;-jwrH{$ezlOoP`-2eq`W z*4_|d8c0EV8SKtpUR zLG?`i#00`2^UdQHO?1S(oFt3i&Dlc|EIei9`{{En8P8BbTkt07xF)jc|dF>6>8mHH?KG0yiqJhimo zjZ2~^4~P)xlqaamhyp}(!;6POYe0|IW+_0^eB3I|9GBRC%bdJ?6($cKTMRDzvoOkK z#l`O_iR~)A9IeBWY6-ATA*EQl-?>#MW!!y=5&LP=(emw95hU3$012C``EHr_{Nb0< ziYzQ$j;DJaL^}DDOqmDx%$#O?Ys^~5BM~xL!6!ooONnjlaBmlaVH<$HIDFJ8o}m)h zSi?li{Y3hA==W3jc|%1UQh~I1ZN(GKC&6kIZc*w=Ve#CL^mp5q`%)Um_T~$j=ApF? zT!TLbMg_SLF`|s36GQwtqPa+tl7k*Zl&q#$gha;H$-9^?E0<|QnW7MIgn&DWtPKoT z@|QH?>My&LNV79xLcS_y&WIV3qA$?=%50`|ChBbmb>RJN+9Pk0F#-+3;4}!3p$vBB z5856wDlSQnsJ2?%KbJAyPborF34%je@T|@kSM7o?#YV$<@$d*I)s-I^%my%R?qJ*} z1R7UxDG!B#xx7B+E_ZBJzG948E-0c|HH;Y4prGH#Ti8Bi~~crl&_qE*?lAS+w)oU zP{{TG4WH1gne35nn`GJUvkxSxJu(L@iF-e==9>Ane!Zmj^&RHRIe{^pGN0&WJNdJ@ zmcYs>E-+=8{We8A{8HY%hO=z%X{%Dyw*2Gk^}CJbmu1vNhm<6#q{sk1GKNptl$)+^ zOwg6D@wU#54_!(Lmo!POsFCb+yvdKk%`>bz^PDs;uthRrx z|D}B9NgJeK0<%#jxPKVzE-}l(3K}&9u1rmZX}7WmQ#YinO$}xPY!|_>exxS(EW{yTg%Tu!AV1*E)<0;4jiZJWG4b1akbo znV%F#(otn6N;hc}x|nxko3V|ksUd>Y$JEU)p9Oxzy5~)HFXQ*xW$1LRoLD1ESQe92>)eq zmm}b(u8r&@$jWrFH5=kVw-Kd?6^WtuR9F2j+GL{agb#_-2*?@OwqCzq08_oqf9 zy&26^T;E}_@wuOXCqhqoUq@IL`Id)@Z`tGM+$}n{Q|_~8US;d;OWtV7>=TQ$Ti;c^6R6vyv)6E=T*T~M^`qW0iB)Mz zD7*2#al`)h15n&d2*f<6?MwjViqhC?Po?Cup3V51t(gKT>rA7His)ub&xm0o^QSA* zU+c%Qx2!8Ah_A1U+lGo8+g}6i>i=eT1i23+v#0<3rXob%M81apLf(h8G9KCv5|jf? z@6zuDHa%XsDg_cNgEJ(`Hd}iMRy?+ET8lE~TZeU6sUkxn z%w@(&Kic<*ED4t3?cWDId_VkXDE^P%e{kz8NNsT#U$LF&LVn3*kH?duPdXPw&tEK1X&HGBpNHAV(N@BMK2r zeX+OWz*?~|dJ zKoD6v%hw^;kRhXKGBLX%`ZfG&6D79i$Iv!J2Q>xV!QZ6ch5NQpm`q<%?U?;TcLc|( zm=FU|@CFv?i1pH?YucLM)$>Z^5-wrvB zSX!~MdGI{P5lUwk;#7{ePyFD)pW`T_w40%(WrAxk2R0iDb@h8BDrCMTj&(g5p%2+a o#(ywT_hsf2$pZfM)_!5h8ZQ+egUVU@@o<;=Qyt}!$JTHE4`I*Y11E7_SkyBRo|fSB3Z*_hBe89ADm*gBcpIbZ$k;rsrPh=sDcv#_IyfwP63 zErGIyjmh^Q2nZ7c6U$j}5CH?rd1ev;Bj>%LhpkUV zusje|LKNK}V5gr`@o2U zo_+=O|CmGyCt)b+SNor<{#z6p#oR9S|B(3qy#^ZPD1C?{%Hwf4@Z#7E;18Lp9+W?q^1j7@qSE>$r*lD+9l5K$_WjH(KE{DQq z>2J-NMl6JG%N(>yliWq{x?omBFiA>972jQtdwVKgQj;cNqjGKwgCjPD5;dzz4ot{U+x_8oG%%((|&)@2BV2lGDyA#>>7fC0Ak^tD8#h>e~T6KYJmA!f$KBUe>il9 z3PkBj3k=q$2tI+g7%%KU{Ykm9JF}ekvd}QjOWIzM&}*8QYC+J{ddU}F#Ruc#L|sjZ z6yd1LD`KZou&Q;-3tZMv|I`ke)KU=pAKQZ)L_~gGvSC?OJ2q8Ad!!s;&+zvNIeWsT zhtG;|&@ikBdnwT_S1-=-72|CF`zTxq8=o*xl%knp=vA--k6uh|`?J~0{_=hp9gFD6 zDgr5Ow9Y(TPfYIp?km-Vh?pxU;?3ppt#rb}miO2edb+Te3NED4u_*#dvMh$dK>;^z z*`{RestbL4e|R+sgET&vsu$8jaiW*sL>JiKKGw}3_2o@`pBDJuCnE!D&#Iug#MJXy zYk`#3zf2M)lYX5cijY2$1gEDJLNMWFME);>t`;g=w=E5pQ^>ZHCg3>}rCt@v+5mZL z-k?+waH@p9xO|jv%Z>zkjtOcO@DGpNen99ANLPLa>@ZBQ!+H$h_V5HUCG2M}T)c|s z@GlSwFKi#HD{1&`6Q66x2TiUcRa)J%X6-hxZy)NbY~!ei74O97-kf7`D`nqcR=Y>~ zJzpTU2kI2-Kg43mIc_1Ppcp5nr^skK|JqIQ5GK0DJm~Gh-vs zN8;)l_M6`B(LGu(GZ6U-;wquIW!vt3oE$9To(v0jWLX$(Y6xBFcq1sLMV5KZU*K<+ zVYAs5(3L`hoRvFgqec@o%Bu;jUh*ubqE~YGgdt7FmARTK2w(=1UHa{yr3`2cKSfs0 zF5Aa^?>F`%wd2E%D;cHv>tJ{zrAVd*_7%bG^IGp^zwM-TMcGh|zZV`)Qwl}J`}q#I zvWztHxLoSUGhyuO;k%8&YqxP{sOq_B&v|c|Pxv|`_NgOZN6d}`Hq*qHL9e$XB}^Vz z4r?azD}FYdgnX^Ex-z@F!L5DYc6#^7tL0A`inwzTa>wHNrIAfquRkA`R;GDn#X;XH za#p!{&Mkt9`W{pBmM=7RM1sAHvOxQkfHdaYwqGjm;YDl7dI}<_Hyu5MDUUqtOemgd zmn~zhPRPi#%tPnW2zt*eIbWFu#F11uePg#&%;ifKbRiM3J&oq@D-QX5Qh*)B?;3Vc zku`Rbgqi)!0=4Kl{%s20qY;34JmwE`+QTGPx~K;weKoN7K8hmtb~h-pT1BT_M9*=^}E^$3vTJC9dB zvFl8g%h(ga0kjriPrm$cz^fc!V#U0=^8}XvpkdCdk&`IHtGG)-)1|BHMrTB&#ND$a zD>>pWRO54wUreXh^CxqrWV3sB@!4@ZoRA=dKSX5V^^%!{v`6T6r*{w;{@_aL*03AC zM#yGvs7UFGlB)f3E(zjIU(KqEMRnE(h$&i?w%GkKoxJ{}o@D$T%Wyj=Ept@VdiP`^ zHqr(_1VGUEX7(6%&Ex9(CfQuFPR`*e&hO74p3r6q4&QeAJj^~mytxNe{Hb`JUa8)5 z+peJR3IOY1&KQ^wTH0s~j2Q>__^OiUTxLpV7bJ9CC4RrIOCESdLdn;c)*Q;-mL|J| z@7cYWtLEG?&XiQYgP7)PO`=dicqU#ebrefmeRniU%3&|bT0K=UI-J2ay3Y^O9Bp2l zwKcm^zy;TPr|qDscAG1EH1E@ycOjMc+d$Q#5*>%ChF=9_KsIECw}>O;rt~MUuD5=S z@#%UUDp9q2Ptvt~-^ZUO1L+^{r3gWTsE%hX$l<<++wLD5EWi_*oN?&D^eLtN`+USR zG@~_Ck(c<5=X+I0XSd>IXeh`QI#Zn(r>%07SB$PL2o#I$I0>NyyC7ZG?+Dp&pGFIa zvyKE|(Hxg5)5G}O0>SO3%Wfy;x@m!UGE@!Cm&#r%FY8&;E1#{EBc&X>>#LRfSk8cv zL@NlIa4!pJ3?1V3YQoEok;?w$V;F=iVCK0sM&%UG_ znP^VK_e{rnJW>Q!+GO2`yX}4YN&)eng$j)Z%^&2x+X{!@-QSgeiLI)MY-Cz&|4lr6 z1Qyoh%4Rtrr0v8yzEuRbx+vwn4MqlgJ2M8 zG<$2a(Pji&#s&u5^K#e!AkE=lam=o(Z#kfjVWTxD^h`$6(x)=BuP@aRmZv*n3qF&k@XMJ8p_o1I&g)QEMk z;c@q^?LCs;zT62ad;yE2w?9&gTgqb$2^L9xj^4LQWxZh5G2X1a!|ub(0joQdYs*vx;yRaGkt-T z@Np{B@v6+xNH)R+4AqT}Y$f!qy*?Bj-U{Gtfd0|GNg5xEyYFPVj$lHr#fe8(D76wV zJxKyKWdHJaIv_&yVu~O(m4M@Rpj8!kn~(vvzX$g`rTavPK3oCjfC;+hk|E_%f?D69 z1?;oaX+(jKg z?rDqH)O>pq`Ec+1G~LQQ9D>vpa&ZQ4Z=t7Te`f{(ZIGiypy|c==603Sg6t#q6dR`A zC(Q4iu;@S*R6VQam-FG(ePC|EnyobSf-+Fq8Ezu?qdhXD#&`M-Up0o4;WeYp{aH50 z4(~{OdtD&QkkD!p3JLD2dkcb7dvFWgcd9!E&2y+KXWhc4RZK$?RsQopGKCY&(wlLR zGFMTDH6NiXGlG5_U^vFNG2)imksYZC=-1e8bnXdEOZ6@b0@NHdzg-#%XW)|Zq;ltW zrxl)b_nY^%QAIV?N1<1Z3ZtEfkBIyp;WX^NE zDJ~vhD^$fZd+`CS^B@&bu}25loq$ua2cnrZu}lohhcX0tFJMC_FB+*vdAbh_+?+VE zimx-4_>f)Iv)XF>XMuly#B%4cW*c3Z4U_SJ(+tpdWCHMY#OpN>QtFa3q2TT`M}v@+ zHJL-VKBM}s=m56M72b~Bi`3S3)K#*J+MNo+iTu7D#ZXCW_Tf@Q~(rC0u+|qxWZHWG83B&Rc-^{v>+(`hZ#`L*RJiPMB0?te+ zC%>%O6~qS@EjddyZoj2ZC#ZBq9;D! zLiz}o)E624;-16nfzLA5=iimz3;*+a&kLsCho0}y_WSbJ(AVAg_RXs}IERvB4s{iD z?=f9`5Gd4W#ZrQ;Blg}YyzfZ<5ad$%?r%6B_YoU+WU{%XN+Qk`E?xE7n1jfxvqHPA zDSM0!eoIiT9QOqy8O`_e>kxUU-Y9-D!k)DBC%Y! zJn7(GM`QO=_*6UNeKk@{s+VI;1jXJyC`@|!K>cnn?!g+^u};?8j*guCX?|^jURJ2= z-zDdihGjaZBX4djP*x{OQAB1IYz?N?i@FP%`u6O}tIiwNc^{Dp$*&1UsSQup%2+3S zeT?$M$kZ>NfQDu4=$v-0wU7JWzGHm!O_gEyC-yIVeBDb?@jQ{5qa3Y<)@rd5niSgb z>!8l6o$*anKF6X*h3+@%YM8UX-!)^h@o&b5kc`fFv(I_Gn?&;FczheN2@5WhjKepf>7jB(p*^;WsV>oQjM z7PR&cO8NAW$&7=@ey(DEw^@{brbC*g^^Fi&H=v22{W@Hm%g(2<<}9q*UoWM&RD)JL z*pmj?w|=g(45Aqw1H&>X2W?+fZkAau$zq{u*xAykdkw#0IBG?qCR7!aXTS|=bpREA z05?fu(urT&4CD|6%wSU_{=8_Fh?kDa$P6%nxLliRE~l{;jT3z*R7j|*d=&_nthbth zL#wGQT)!EdJ8{|qN?8O&BK{##Lpc2{5cCU_>;Dn$T0vk^Ou(g~5BiGjf(37(oP4%# zOOo!0x+mUu^mL}|Tl}_x^5cHt?0E3<230Y@9@{w@XI&NSgxX4VtccNp?%ssa!~|oq$Rd0S&JF_lGQ36_BM|UiT`Ct(~tSCAVxy z2V$<=F9h>kjr&H`~^?X0;%$)tl79w59%v z=jHcwkArX4tl-&ML0fy)(Wzt1v|`l|19Gy?LxQG`9HF~#~ubq3{!pfqcx;#KhFSp2Z@0t>FFt@fD!9h?!^u_Ux5rQROjp@|IEljJ>Rz` zSj3AHGZQ5(rJ%|vB?m;scbwJhN}<*S*loTe9TjKqZq2k3KW=0LR&N0-d!5CiVLeiz zLz>HPPtCHL%ANDkYRag8zw-x_YB`o{M&>LzUCOtBvaD*Gl5&f-MrIiiNLm7d?`8{8 zx?Kuk8c#O9_dA9-LT06&>^+|kK;<_S4d`^YPcZ(KjG%Br%g6T&AYa8%dn^>SYK7O- znNQdK^xUph#F*)3%pnT8aUvFQpd4m)e(B$0eIm}9U(`6RZ;oxq{j_;un649j3vE4- zb96Iu&0QZj>9dUDF+5_(W=ZSvA5VUtkI(AVhnWjVUdo^dthnMofF3&pT!iCeP5r^2o#7@=5_68m6n)|SyY+awbQc#a zC(f|-y#dG>SJel>^w++Zc8;?Kx=hz;!HE>&L?jax*So2oc8}48fWmqXnbMi=427`g&{+E1j`R7v!Zyc)Wgj zX8Z@Jdvm}1`iL8SF9|u$)j*1R5c_ul72zX{&~h%9qn#=#<&6@*%a*jO%avi(>ivlU z4wqfrJw2@!ZMobkL?kgeWuj>M`=l&5rF+e`#0Rz^rP5tE3=k3cdOm8$S{8Z04egc^Y44w=h zJR+f@OOM(>c^!{+7!?1*LR$YfI#Ugid$!iV0U{(K;dEd;QQ62^nK{Rse;jd{%*{zeIt-1rl6+Gw%>`3lQ1lmQIqChb=l_ zh2>VwM*jlnw*&80{Tjy@JOCSeGckF?C;vj-46(-?5jIU>d=c`8@A-oor~IymMv(}r z?QA`^j&m{Ox;%!KC|-0hoQ5i=NGWO{Lrko*Lsauk<*Q}CNwr${LO?oFP;pOEzCoy8 zg5IJL&nNQ9(QjgZoQMIi)n~*_cUOb2-F?YuH`*Bu&Q5NK#3jtCce{knm(>N*7t?QK zetvawB`N~g~dh9CrgaC+%<257p)vX04h>x%0pNASF(zboLC@UdH`4zmGJ*j zq&2j?#E=F-&xBfWUXM!lw6TiU8l%S>xrEZw(w2$;Y_uXxa3ygxy>~inSbpww1lcp&g2|m|^)n^>#T_kWF#R=>%F2q z(U?=}Q_IEAYX-82Ppi%zf>vw2Oc`+MPI&ra76Z++rnFC0N>YUFq838M5S6>2O4+#4 zQ1pqp>QY&*s`PjnAf`*(7Kn$e(fyfq?wY}Bx`N|`nd1-9Kky_@ zT04ALmy~8_oPwzeLC(|^u(sr*Ud{n-Zg-8%h9l;8GM4ICE@i*pd$A+hDZb-KDb}v^ z)vfe}N0{$k3*Dw+{5yXWCv?~^iuHc+l_uCj;T^el)L4532 z*dIy}{(0mzqTk8W0U6LEAPX?Bo5wXN`9dmA1rFTkV?b~1o}sHCvDGBpbyu%LfJZ zzNUIjRkve-&^vQwUelsB6v2yV0nf5f%VVsbE&_-mG1}CN`5$v>Klx1oQnOP2Zd59f zEl#?BnYNMW{w0+wIP+(@t7JZ0)M_w8f4hGYhhu%=P;|?lwuo(k&|ua9wX%YWyfa9? zzS{~S%v49mTtaiSSx-yixuR9rl)W8v6YE2x3w%L(U+rr400|l5I4a$nBn8mYs-UeV z+CPK~D`Wlm^u$a;txk+2K_^WRgq(M182d&^SkrGeEB?BWU@HY*2FQ(agQ_ zOs&(s(Io-7iL1Y>iiNFlW@%CQt2Tg^D!6ijSl= zX446}t_83h_fl;Y=)9m?TwVsgi6*V-$~BATUt3at6Mn^TzYcspK7IbdTH--VqO8Lf+r6FQt_9g+ajQ$sl;L*2ijR#|NxPrVA`Z33 zOX6*`u^#&ZKj}=S<92O{2$Q}FViIUY&Wcz$ddJ8}%sJp3oa@yW|b8C?)! zc%b^r87!-X)`43qyqLu`kF#RKf+%UAm;tnx23MGh`cTa3jT1kH34G|rTECf0@k}4LSF=5O;4d+mv8uIRhIJ-gZFzUa< zNz@i_3axMn`*$O?#3QT@ehHv0XDEe@%agUQKxt&me*K5ctaR(ws8-q6B0%|N1Bk`0 z+jlfzp(+LsI2Pt@Tv(o8m=)I3!w<}e7(|mZ)<%;2$+|#KA-;aj*zD&V(vDqLW>L`9 zfuD*L!ps*~xd1^U)SJ^BPwuNP%=3h0_FhECH0Fz8xpC}>aqZ16_4P|Mc2YM-{J$a% zt+7K9=rN2o-R>Mps;F>u*`@(kWA2>&%X1MDwZsTYBK@oLaoJ3%)r03GrNoHD@!Q7# zTx4t5);cUKL=x{POfDbq24$FSlxD-GuzJtT54iNT> zmJ{a|Ie@mt19nIth;Ze#VAn$85btKOX3NFiZ6(#j@%OHtC30@WAODCNro8_ z&!Tu+&!r>g=IzV%*W_};Ov+Rqf_;tCajeD zaPl56`p9fhR##Yd`t9*U;%wwsS<;u1x77?o!MsA3l)G8!n!28`aS2>B@mblYyMI+4 zBEL8-()OYVHhg??KBwfSZF(4(Y<)Ax?KFbQJ`rkqo(a)C^LiQ*f8fdp?L^rFU9icU zd5gWThX|Q^TEg8~GgRRDMvB)`IcKYXqSZI^4;=kM&4*X)dZO*VKf7>Q9zRj!Xs(Pt z-h<>e-kM@+e7dCxa5<{82YWU!n|_3($d;M06Lg8kn+~z_?nu# zYqQQ+?I&aW4OH~cnQyYdlsK&yu8&U35Yo-Xh&s$J&x%|mGs)p_jhtBe5q3Ij%3bcC zF99?#^YuqprW&^AUY=SWo!aJg9Gv!kbqy+0~_+<_46{fZ8=oQE;RG!+Yha+D(gwtv*g_jV(*K2FY^Vb)l!#|*;jkleUmIc7EfO=ak#GZ zoOcXS^9yJpSTz+&bWgVWDN2RC+tJ9kEUaAck-ky-3Fq~VM!GSn>X#J4pO2gQAvbRu zGyl?D!TP%yWnMDBvbXWiFrPMSlfKd8O)m;(snKA#TOzWL7YDhA(gLy)yAVH@i)BJHySe>E`lMazPZ(^_Xw5h zCSB=mfh)$`T^s}<9g49n;4JWUD(ljRPVVw42*3*Y2TyTy@}_*BNH9neuvl1huZywZ zK;IXX+P_RC(Je{1bmw*zCnww$!?%leofn&A=cCub;XKmfKiDm0vMRR=2?<7|i*OjU zH8r}v*t9)ZRwIr@DBna;TCD9>HXgP2K5T15GFBW&s#U9d+QrpIiz7^)O%pYq9 z7sr|AqV>|&E(bm1N@i{G!fAzCA@a9Hh}XwOtR-wQ!vAqokvz)>HpAtjN$nyMAY{Eq zLxn}a`@Mw@akH8E{3Dj&f?-r5@mFnub145d?cBt)EB}${R)-eI6govnY+UE;=6$Qhl+?DvGkWsMRtL3M?G8is|y@xv>x&xv9z)?qlMwq0Aa zV92Cn6P{cA1WK;j(5}$wKZ~5p)P%uBvfS#(RjuqtRpcHI%XaotcD~UD?c8MJ8f7nA z&Y<@yH;deQ^#}Z$k|9*J05b%DGQ&-+p1N}s`FV!e#cJZh>pH@5pmQTlmOVyDqqL-H zzsQRsU$!hvV5V$4$&7)cHyB++I z0ir1rI?#~Y(eV8{QuGf!P~ruOK!@u21lN?4y-x`+lX}J0-X8Hp1X`~!u2&XL2Y+_^ zItzqrP4l(@5p9s-+Je2?jC4Zq=7g|*czTxamta!Fx2XB>o1EjLa8}7BPR)<}`BHB~ zxLQ_U&zm`OPVUAb`6(9Dh95@9R)iDAy_=q+gnAm8p-*ooI$>mQ(Baa4>O0j|rs-^} z-AT1vi&LYUGsu4J$NIS+!vld6Z{&BXV;fq7&3HPYlJHB8{;7pkL*LcUc!ClJ#`$@~ zr~HLqcH2v;u$SAo9<;gCf@LBzzij;w{YU&d3R71f5xlOw;_d1N2Oc?-c8ymy4w5<# zdpWqJbLVBc{x_6v0e&Y@1R2|amq@5TA=s_|*6IzFwnybfJTPdx`&*?B`PvWKpI=8gX4<7w_~mJ<@Ym zGtvXB8C`YcuNw_VwylQlgYuR5jOigTy4V~rDT?7f&SS;hduWlLWjeo15^KjdnJVa(Ezns8DlD7&f8Ht5xUwaYF-{M6=Bl8c24W0-45_{m{iIIrls zg&ZQMFD21VC!Um{C?VMTW*=B_%J5b*ab>FYFqX~0bFMoQUW!p5MqWz5L^js2gN5gW zP*$G%iFvSgxxDIQgMjN#YepV>wbGXjZ$qSudK{>7?qP-Bq?9#}AY7%*<(D&e8>wAp zn^$EP7XRU|U`;}^)z|O$Xq2Og%-?~7`7?FJuN5m5F3kQGnt3SMO#O?ZZeTbHGLUaW zR_Ddx@#-^82jBZ&Xs+L2_;?k}2|otA1nwkvr8TCuW5W!mp&N$0-^+yGw4llwnjENJf5p{4_>(B zqykVP)EV$<1z(fCl(HwJLlrvbUyoU!Oz*IrNaO7t&2iQNyBRgl4C)4Frt|#B=~8g8 zbJ(VL>Scj}!o4~zvW0#}qWEy|49ALOeTJAlt}_{&9<>X&uo5ejtyl8yr$@y_qN@y) zQ00SyGE#UIc3rul?8Pxt)A{)?^30587#uxOb9Z9N%;cUfL8Au<3^MpwgW4x50(BhW z^3!CbM1P5=AFaPxK#Hm&ln_2?As=?PWz!p27?0X)mf04id@P2YFiW8!6E*tdyD|sE z1VT1?2%a#GC*E!1aHxNv(2-A!=y7ywldR>{$S6-Ggl&y~RWzD!1gGnWB#nc&ulg z6ajt>*BgdEXm-Lvj)vN5r1Nf(JU9G(goM7R z4myX8Iy_Ql($qmUM2z&Pi!}BtiM8QYjXD)KR1>0SWy{Yhcc_=GK-VQ>F?}QgWp2q} zEqDDJvddEb;m>J46F*5O1$ou*Qki-ld8eum81b`_nR01O6Kn!_^ zc|1e)X4k4OdGU~r=mDW#Oyt1e3Z>AzYzcYhNgu8@IsaO2`>4n>>M$uu(ha5DBWX2; zXT!dzo9^U%_oVKMOC~k1<%S7D0sOpMM_4)mim|kOrObo4X?t9~t{cWSKL`3YHfRg2 zD?(TS{DZZemQ{8}hs+uxs;8UN)&qGc14T+>bUL%m5*L~nc;Pfd_1AyQjV^zx z^J0LDF;dNY7^I+o@flJ{j`8sn3Ey}7V)#6>N7K;H_s8Xq)&*tk-Ix#T^)kyp8e zJ`qi!TkYTc8drqGK{0n3P>a>z%C*{H-1?%pxWJ{gq*wfcUWMLuiJ zp8FvSjhz%xsw{&wH$~uMjv{uZQgy?Ui(htI zxeR8R7FhbMT4 z<6}N(vtHnuSNAbraK|izkN(DT+`D6$lwQ)qmj11FnSGpjRHe6{d2{Et&|iyvcmHPr zZ1KnQVO6v4$Edp8OI(NkfYlUc_ZytUE^3WKgwhjHni!6ed|LieT{@aIPquua!0^W(V$;N}!w3&6(A<^&G z3?NYTO8FRfrpDi9VU((Nh5SS68bZO>_Lq!>TS5}niP;(@#gvet8X6M!4Q*HM<(f2~ zknHKbD*kRZFy_v~60u^r#%#0R+OQHzh+-u%)nS+!jE4J@jlRn%B85QIQ?(OU|tv1q7lHvT$#VCu{Bpqsrf&^N+JwscBnY3l*T>hidt`JIJ4 z27ljJqbv5EfN-jEy%+%%`7mBEctGXp`nvq&qp@}k0(pjAi4*|Oz>ycI^mmkHmnAEJ zdF-StR!pnnYR27ZbY>@S{g~$8!DxrrH0IW4c5q5ldK#8|{grwLcT(Nzxkl$VVP076iYw>VQ?d$B-jlBa)1Z57aTjk-5 z9h^)ZM0U|ZGuj%9go1#G2oho5>RpcF2QiJ27;#rkHe0R`x5)nT)y?3o_N9ig5C^nI zhQ*%H;4c$2-GQIeeE$;6!MgT&u0CtjUfO# zmrEQF#Ejf)LmywM8<+KVH)abfJIe19PV&C1t?hVT6m7iM?D`y>Fpe{7A>ZDNGJZ>nKPlu-oS(9a3P?71Jf74x> z)a0`}MV;dF7r!Ncd-u@HzrVxoB(-Z*KWHOAnCCy!$$d&SYu#;+&jR`G)3$okm%pOB zOWsgnYWN6?jYo~%rmLvpm&8Q_;_)4>^M5e5|rLSN6p{;NJ3`m zIt`^fm_hhnX{`r zNx}_F{J2Tj&vWhs3&o5o#XSd|NO35;Msw~k6&N{=<{VnwkZAZl3l%nEPK0Xy zP)gK)5lYkf*+!V|+)ZyymI%xvDp1!>+v^s|UsTjwY9=sw9&&o_b9rGH;xuH<{*)u= z{Q!)TA)tjxF8EZ`7A)7bj&NA6a`dn{$-~7mahR5qcZPx`5tQ zN6UMgaA_1UjPIy+6N&W5a`+~!1cylwPyzIXR*p{c3f*vvn_TOa?C9F9rfv_l%vM{d zQ#MpG+dS5}>I-Ec5XI(B#XVf}BK5lb!ap@wdg%)RJ}!;DpR2*wu_%YE`Gjz z*1_ih4mNOk-p*-_)h9{pwt7!%a)C24Z)T<8Ms{7|u1n07j!=~z)EY<*-hEY2_!KuN z=;XV6X&RI14U_W>`cPROFC^3;Kh0+ct+)2}-IPPMN)#j}#z`&ZKRAY?yUek%6O@CN zhQhnZ1HF{UWLj#!dx=YhfXsKhAxb35^&|hs$$wo4c@T zZIq*W?3|eHi69_l4lKeTS52H!up_5+QBiIxw%_*iP5C8&Us-61^-^Z{>*%{-S^xy7 zOyQiWz$cF9Gk({@N3I*|6d%VXThT9+@+hH&L)E5Ev$k}(8OD10Qu_T$)Ah{5{sLyT zmmq%6A7;u^#&z70zN#)C_$=xZlTkI7!m3> z;Zr*7{WVYg_b)|hwc3$$K4Wz+%LH?*-@jq#}KotU2&Hg zN?irljHoPboEBOk@3Ur)r~iaS+kaJ&P@wRE0QBaMbwChRUC;|#G8A}I3qyxO{n)sF z1z2p|W;4hq>sPB!?6qUutqlN9wU^B3Ad_8J?;v7vFu~9RlkF5;N`efWh;~n~!$vhC zCQpT7;dBaL22$tYe5&Ca6&#LvspN2sJ_@Jpw-d~j^O0J7!O!4$hr5pmcnCs5c?=4E zMUcWE%Me>9(W4--^N(%j$O5+Xrqg}&?2k88GPpdCvF8{y`opEvCv0N3r*BV4f-%f@ z&dvOG&e0Kz(CLg`>JMqCWr+Jo7={lV<_jY!G~eOqJ6)qnf}Q8h(JrvCa9sJ_?ggjb zZ?2yAS6^V87!F1=DM6&uz>YjdYg$_7s{NHv)4nfVl$kxHGHQ__5id9g^Tw8D`SLf> z11LOib5=%OG*nVY(x+`Tu|;Y#&~7kJDLb%YwNOerCgLP_qv+`y8u###^iYKrrwz(J{b-2RR`1kW>{J;Foo|S#(crIM=m!%Y0*->E(+sQdo42X!e=00| zq!zcv3jM+up|FnbUdVcJn99G7jdTd3!#R4g^k5yWq`(}hf#ehRvxT?5_hgvx z}Q#_RQsnUt+6Ud?ceCI=<$im zpHXH^(#V^r0IOhMZ@KFs?S+zzNYH#hG%w#|fgV48DCTy&#b*h1^?!7bcASk*X; zIDtx(QXZIa!`LQacXin;FaStM5;;_Ud-+jF(rBe~W!N1bVN-Lahb{@%i=v}SFU{O5*Wz;9^v==ruU7p0?n}&1k=K3edElU&14*;q{Z*X1j~cQ z7>_Yqqzelt_rHnJNQwKv7w1YfAB8a4u#QXnv8?6Nt{Bf)Z%RlDk~dgRJ2KA6c|T8l z*oTY64gF}Ne&VOP0ZM_Zy?3t~r`p-z7=nUlzDvCm`h_p9kwy29Qc2`DFQRWD1co7~5F(U0Pa zOD!WILMk>YfmJs~4vt&>I{ozeT(GH)_)H5d*~3GbvyEud$c>5gY)|wOnA`fkPF;mM z^`lqk3z@fJ{?Ef1fv#D%Wa^yfwLV1w2iFx8y)@dyhiUI)VdzMx`b{e}pEN7Aa?@^q z)OechP8a~l{SPX+WTdolJAX#{|7yp3a5~kf0pf&-@ADNW##;lI=FcE?C?TL5o?m>D z2PWmOug5Ty^9x;afEVan#YIjTON7Gzoy^UJI`Qhx&-@3l$!oMqxiy0LF4Q12v=?!> z6+@-L^G$25C1F4n_EH;|CJ*2Sbv{`EAGk~~N8RgczKs^%7WV&)C{R?-9|elI7arTh z5G!3LTYUD#aOolcBH@mYa3Xd!7;Wsj_MeA_7zBMnGW|GNR2ZW8U}pEUX7Yf;gS&-p z*ogOSQXP{DOe!~pOUuRX{<&{wUhsGE#Mg%o!+HsGZc|PdF+UFHY;=3QYTi+0*bx>9 z3M7+&F?Uvh`sZX6_hN-6S<(K5e=h=$#%}p6#X7aRLkBre6UeYJhOhO2CR6JP)uB&^T)!)Ipo7h?{?hE#~qrDirXx%0v(iDqao9)aUIsaL&#C_F>z z{(%U+%Fy8Sa)(QMmy^J>gO6ztw3~02;xB_K3t#rq3#1h!DD?#N$T`<^Cli-MU?8q- zamy=1*J7wo&(&#O%dL_pHGj6tq!?zW*x;fs+wdx)kUo4%;f%?%u#i>HP!n8q6b2Zn zCna?QKcJrIuVk4>XyoA3|K$Q8T}U3~Kj|E86p!|)gU2js4YzI5D=F3m@_+137Nsfg zsnrmk&08tU5MlHS8v#`MDh&uze;RvU%$-!07wBk-R2CrgIAfN1S(awBtWR=ft1K2i zgws)wyzEPr1C?%I)SSv3|FTL~LRi6xuA)sPzj8PurU)Cvh{OG+YE!?BIX^k>5AR@n}|h8f_8v> z=AhuJ-7(Y})+zQ7Tak0>iEfom7Q~r-&cY0!^4{E22$#ol!09lzN#Eg6P5M8Kopn$g z&Xed9f(8%nZV3c;+29Zy5*!wHUu@Cf?(PmDxVw9RT`af+cXxmL{oUQ~-CeyuUe#8u z)z-}RbWhK8_k4zk5UHKoVejotjKc?#&5`S0w^P%C-}!l*E`)fe>s>#qb1BLpWlVua z8sATZFoK^?!RLXmn&Dr6yZT&gF3G5tGyhf?az4pl(#pRDT~B-#Va&=8A?3GOP?t%} z=ltf9sHDW3f4K6^6@fB_^Mt||mZe2JK(9!;G`F75PWF=xtg~4nzELMl%~lh^qCfs8 z4@_-DM3NHhxw9_`Nrqkt6pGFK_H3b9TcNMG=6i%9vM{<@uv1))vIzqu`9b9xCGq0o z|7m_q98(F@q9s*T(A@_$+4(W?rMl|(6G*=nE~l(X?bH0=*#9GHLg~#{vdOLBZPEYq zUaZZG1rUto|L7kpS+L*FUb!4ER;fkj{pV{uhL<1s`eXdJFNYgPajF#e5Mg-RwF*ul zE}nH3d{p^QrHP6f<^;spKYPV=y|~^haMtStF2X#Q|6JvLgZ=W)O}e*1sYj$n!iUM( zi|LMWI%sti#KG7P45{$HG{i{?u9VKM=l_X{5IvxJ8A1yz;vT!pW>pj|$9whA#v}SP zPG|PrMDK>RwU9r|p&S5aiLTIsnWV5tFcr32*KzdigGA7oKZe4uqnIKDq&N$Nh<4;| z{wDY-hLv!74my}vViU1BbI9?;WOJGjr$yN?$}3*@`<~>>sR}^~hdeH>yFM0Hms(NX zs-(i`)>;f>C)H7#Yt=n%$PPve)#+y%2sl{K;I`9W`ql z_{4aAxKMLK$VzIJJ=90vq06Ty3RGctT{qZQcm;T#5|Ph2((iS;D7w9i$^;?CrGoGa z7)O5dYuD21bY`C)xtqJXo`Q1jLA+zD9d&LUI7dWFn?$4WFhq!nch={_3pi{O0m&_FQs7lwLn254-6EKRKAMZzS&mqcY=~}M=VJat zaQ2H{og2+h$qFOrAgww3)ZX9T`&QZ7SZ)z--OpuxHH@ec$mS!#176xbH-nFA0Zy7N z{rBn-mR!mz+~=ZF8iHBDvYGVAqa!o}P7C6B-C|#TDi1420w5!(L!ABTwb2b}5Xyei z(%rAqT$?tsG@n)uw1PWYyvm5B}y7hyV1+zujLA>th zlKemq#W`t@_jIEWrQ1yYhO+5{JZ4YEh?W#VZM3r4-ImoK;^)SW^D^)0+JGEa(inaz1n{5D=J*v8SENo<1+_P< zX7Raj>ObP6vn?t*mK(h%dSE%_A=*3aV-qDHu0g5UyBhoAgP1iwj+Rjxh#a*w5F~MG zpXH*DYXPoge)>~&UunNwe(^AC4BbwSvV;(~EDRNGe8TaLDSyc0+M1_$U9ZqXw=r3u z=vu1Tzgk$yk7kw~QiZ5CNg2n~G^Y{<%3ZSENWmf5hB+$WOi&zus_U%BI|& zgJX+G52tfuE7Zvla>($AEC#aMtP$3lhfkFfWWc~}tBQl)c32YEk*!A_oAl`Pxa72| zG_5w~I`Pb?I*?+=p1-u)&E{6Ii`ktvikPqFh+u3Q`g9OzYO^tEeiLixf{6XDsDvr& z`UEGdI&xg-B>;)>JxI9Z$Qq+HjCngUMs_HTCJ|j=_uJk^o4bSfMnBE)HS9pL8{jaX ztJ~z~5urIfkZ@T;RIB2WPnN}p6LYm8@Fz(l)`0{|X9NxKH42;K&DuQ}D=4;iJM{2bX~_ArH~+yzIz1+l{HB8Tr^v zTKsZ2=YDErVC$(PGhBPAnoToasW={a#YTC&zD(thqxIa)x!f{*61n>*$9HTNl7`=w zJ|5%>Pai$_?nrp{WT2Q{)<;V{ljz6!I=Z_t=B@?om@A3umGlQx(UZ60fPo>%wDB8l zE^G4E96UqFG*%_4AS99Xo$Oc}1LxH2*A$do>;@YgIU0J1y_`E-4HfUpip6)76uq0F z_?iHuCR4VC*A zb_((L#eM@MhT=YMO1C$Z`9(56((Lkg?p@LrmJ`6osnrj+RGQv^N(;>(C+Igwm!QHr zl!_90j;X-Qm-lbpdZbd?Jn7|38q67fxj`0`_t2pPKe?e3*3UM-tk_R!qqE;{`T$I( zme@;4Y!R=w7q6Sl-rD&8r1Srxx!K{TpYXd%A^+5g>=3=$i9k$quirBv z5SdQs+m|8IqpvvFxVDSq6%o#^YikPP-?^_@vaT>NIL!{`#i+yN#_0f`f(;b-++dQ; zEO=>O?>L2JB76Xj&}A{J*zON{-IWZN3nKHfYR0H~-hGkj#Iw0r)J8b6;piJv6feOk z&`95qUm+kQXf>xBi%NP@V#V5SRq~8OOMZ6aD%GI8-vGY6g#?^djhbnpf9TP7n-=a6 z+ct{au8Qo%2eU=b2O?tbnt7T~1&Eo-&YyFlg6%D)O8GkD-$$Q!Y_7>nSZk@uOKm*Y zt29+XL4(;;Xe^=Cskl>WN4g%z_U_x6fat=wKdcF>oTq2%>TpVSGTpy|Vmt2*U!42& zoOx!am$|#E-<9_mN(|7&5#sbG-M%LK^3NQX&}7TEDs>ID-7^U_3cVlyFk0L88rVyw zpj&ENU_T?#6oiGHA#tI*a?0TvRJAJjd&8XfLkUt`=jP*6$UxG!*;^y2!dgZ_KdhA& zovO|LM;Lm+4i74|Q~5ZLTSYUba?trgvo@n7GTR*Y?v%`6AjUPeFhtp5DU10NI0=++ zV-~n=yPo~%)Z$wnlN^kwE%-=8%sJuT8!9W$z#?*$&dUAx^?q*?b^3^WhN=CO;mKW( zldMCW&sk6y{_Oi(DLK2O zxj2AIII})K3739x5vcSgOhx5EOX-i>kn-%p}v!<#f=#~v$ zGCozWKmLetcZUHKSsak#^vl|5sNAHyBj7O^$?;T~K;c@U{u+&KSkqh zU0A^-+NrlT&#_K!azE|dJ`24#%lOFZhV+WCemG$oNPVW*ai1o3E!l$)34$}Y zApo6yd*lLVl(#=hMGi*bHrX3{wg-o54jR9Tgk67ExFS*SHA;|`eV_Mq{W^FGQTUjS znS6HLgBWh7Fz``qq~lroX~?DF+g!sWpxCf31P3pLFKQV!$GU8Iwy)>-jQe`iux%Hm zq7bh~xSr1dm&NR-@eURdyUFFW%{Z_tdn@=C`~BQ*Th_d&i+mWdnQn%B-EB4A5o+B? zLqJ|LyXV8O<(QdT;_l)RzeCu@uORQhfmMK>3t(WH!{*qgZEW<+l50SURabM2jKt;H@wFvNPDr&RF=$yWPz(XBN0O-fpQ zC@GD~q?}3vf|&-vBHP^Gj3!$27IoMj#In124V=#_l4*Q`4zn)@cr%Mo1pq`q_Ifpl6{*$Umcmo0m5d$-=6)0l) zX^d{ZSECjszkZR>@b73(*j;^B*@q(hIiFV@k(tFt4rB?h_fIOsbH6L+7h7t;5tj@-$kt*s_}^sF`FVjRUtrE^eiWR?6$ONJ+(n5!H$!IE*9*_?v{;cYi{L zAfW}{!>+{~HIi;B=lntKLuM^DzSt%wQzX>+RRxsT2s*tuNO74yP336gyMGyC2Cv&) z^l}B_i|M*jIVL>dr4U9)1yHySjvi@H(49Vq6SPrm;UqMMrq++-aEC_4 zh!-sR4h<6OWqNM{*^qL!{Lq=^gSv^c{HhlavLm-6P^>5kfjT4*AaSwfrJ8*D~1CMY92zjnHBb7OcmYq~UV(D*!> zVXbxeqRWcH>BwW0HEu26iGos#aqQ18b~Wt05>z4>=q7jS%X%gYx1?ga&<&P3(H^X0 z&LF3NEitHbT(OjiP2?vZ&OMvM%s9Pj)17!jM>2bD4M0GFFIu`a2_gF?3O@c6h@*zA zi}99^t1B`l#)EO%E>&39>rvyW_|TAiHBG5rlJZJ7jnK2~eHq{+pk#yO5Hz)G<@s?@plP46|c6TO(B z!eFi@?dQNDW@%`C_Y1KG7Y9=>vT%5m?!BBxXNnuWZ-E%IpkY;U)Yt!uN9z&{NvFE(=ZAOeq>j^TVh3 zS{qWkn_@palXD)UV6sptk*sh@3;GM+fE1qQfTNW=A{@(}&ga^kS%Hb)s@TkF0RYFw z6VbjnUD)yRSuHf(5=L~j`MF1YL6xO+8@XG#MLZ94w7b}5C+_q~YTC@%^uu%13&gHzEDPooJ;3fkf`gSkyL z`f`U-b!_#9X7oj--WaxYyRN$M?&wZ$NPSY?m1@rm|M2mha9kQ<4!+mGmL7g|8ta{r z*b)*3l{%RGl(2{lY!>eW6&n+8zHNa<@>-z zgO(6ng&vbXd3764jjcPf#J>&rcAuIngZp;utx zWQ8X>rl*6IKekH6rm`Z(;AsZDLE@8=mufZq*;iQAQ&_TESOUIyCr`WzVoPK}R&x5x zr6b;LX*lpa59RhP@>>bQW}4^OzvwaHrj@P_=#IJ<$doaf+$sP8k>Lxhrk>0 z3VPx1^c8j|J4tI*Djxxl!W7a%!_mE(66XAmYcHuBzBV4tLk{frFIN=J)kbu3s2~}o zNIDKK!m`Si=pc%sss_Ks^if?QmrTy@dLY-QKILbX)w>1$8@zH8(@E-DPSwx|v;lIH zw?mBL?}VKjxK(t#)8aX8?J|$qT#)p)N(R8?+D-nwN4Q2by(pNNJ%h*r@7|%Ip-rqU zNqSm;su)ixZKGPGC^*XM+TAT0)l`j@Gy6*IIEftyuQkaXP?Pu8qixZmyrS^xNEY(V zxw)y-j?h}9-~P2G?YhavNYY0jY|;>32R?e;rxg}LVdRIVsa5!(iWS|A?iFm5tzAs3 zX_ad>r5Ay<3j3w8@ogkIhX{%H@(POl7Jtj(=45%rlmS}jAT4e_irZnP<$4{F`I7tn zlEK(UID`d#Xjd-NlZz7G$9TU+BP_3c11yB^iC>l7{3@1ss%=z=9oKmX_X{dsI0&MT zcmFO(-QEU-GODjRqL!-rS=Ku`pNi0TEqi8(e)hiSPWp6W9H&6zx>8Xtc*RQE?kcfC zXnOh_3Dnn?@5yJLQj3=j#bD^S69=J9uT6`}dE=SxDmfk)344<#L38hiGumOpz~Mu9BK1rW;5W z!7t`3P4k_ugs=LQRzt`Qjj-VOD&wjAg0_se!dy!qaik_L5PttJVR2Vk)L^o2Vf5HQ(CHnUE~Msw}H`@#|M;&X%(lsyL_9wf|YD!(6aP z!s==#(L7?-Rwnb@xiAgaOvBi4cI52bltnqE4gtLRcI+=;;ny9~I3AJsYvtk1E${^ z&_8G9i+!OPg^YScUutzOeqXz0`*NH|8`$9uNwfteZK}b~CRT9y- zBLEwBe$UFxWKn2GlXit&Rp1#0kq;5r(Ts8+Wa=m{uvwDY>00`OAMNdr!NT1mD#%JY z^g#w4RG;1_ZDszGljFkf_9~@wh}GxMFyz>p>9;)XM~NZAlajIuzw`?uNaj^6tKcI4 z^#efF*AP`_j)jVWJNu{dr*um;9*+JmK!RhIajw}pRW&WCgpwP0?d(sefGcaCLz0)n zl-{*Sm50f)MCo!fun&FMWZrx~<1?AUx0LMlVZY69&Pw)SUR4xdC6b@darBq|ype*v zc;h!GB(?rf! z)ERAFH<^qR2N-v85~}YCF`D4e4tuLJTpze%<46(96GI7|XVcM~`{oIA{pjHRjp5BQ zWV^b6Ro}cuCr4Ut0p|hZaiMW_?H54(%?&Y;EnuE9Bkubkv41~}aS~g)Jt6qE(vU~7 ze{O%s0dFt&idd_*_WinTdtk`;owpSQ0@uZ zPPq3JwyoUbSK-sh=up!ieI>PICsK*%c<;+*qk3H&kjvn_LH+hEjAvo?D|)GqT;9UR zII{MF->&5UcH+NviP~UNHJmYW>P5$%u*W;ka5l)vTSam3{H>El!ll_gTy|)Ybe+)`^DYgUw zeq8xmJ_{zMqGx(7%@1-ZpSj;IE-t>Yu(C>@LuC4Y%Nf==GmFcWH~&rD{=0ngl-)zL z&%Xc9kN*8G93lMw^Go+2GgO)xp0$eqEuGF4O%ovr3EQ2ZuGSDzR6Z+_t&*;Jr8cI` zk^eM-@NO|0yA>LtPR^YEJ<8wukI;4}JLgW4qEtA~ix29!Cb5aQa;N8W_xVOPof%ih zk`l2E9{dsUII_qvrdd0YCNJ;WwYSy$HnRU0ilAUx_`t7hlYaM>3`-= zJ>>!u9Wzsr8q3W`n51;-=WU<%SWjui-ENoI!-20=?apTIl^I3K@VJeMQ9@^D6}XZy z%Dx-kFJ~$!D<2&(82yc>Wx`M-#qsdpQAEw-xjCFhyK@aTD>Lu3iLTjQ$u|l)@QyMY z)T29n2@}s#zBCe;xno?;e`+%#)n>H(#8YD^`7f4sFk+ry@cyY?K}%lp!SB(;q(rs3 z0v^k++h#S;ufF*BU-j1%6PHV*qM+Qg%y+@@z{D`gH_>Kazb>VfrI(YZ%cv_N%CZ~6 zTVe!1wp!T!%xlfdh(qYuW3HAgNl3|1)NMwWdax)f`+Jdu5xiRj^qbB8BGyNqBI+sy zH))vn&+i@tEK943TWj3ZO&!1wf^xL(}l+H%?6=V`SfbM^7W{^P{jluw1DH*BT38|>FF`5O~L^tK4#v_JA@CPP|hE)#(i>s`83^=zwvsI|u&bjsSy8ei6?@J&ZpX4>fP!u4bdSmjF~J zdS!qOQCUspMU?D;BUYjN2D#@#z>ZrHq+gF|UroJccOB=adCsyt?M)Rt?h1L*Qu~e* z$>&EOfk_kWS*8ipZdv{zuj%GKHklqJ-4#! z2-K1Op1#A=BskT`34RG(+g)8M2kiT?L=1Q6!jW6;bj(b{RGchn&3nkbHVR%3w_PS( zfKzZBVGP(L`Qkm-Qwd;oaJ_azJnC#&r}^|Hi#ZHcD$+OAl5O70uL{PqewXAuZ6}qC z50Im#+_?V&NqP2fdSF(<^cG8Qf1-5jf>gCMLVa=wE;ZLEe{4j3X$1I`#@v5&6TEj5 z899#Vop>`%SXgoK;rqC77H#lRU>s4^Mf5Pu8~s-7jdx7-&uD z+B-u!8n)!KZ^H<9ZKb zPD>|(d7D`#pH~*s+~7^%Oyr}VRBxr&>~1hrCjmG7N3X@s*Jotwi-1g?;l1L@O7rzQ zrx@gNc1sgF=>q6lZKlyG3bpYqr%(-h4_E+_$o!*O1Czn}xnjA~m|H7uHq0>qTTvnv z@%UxhjsJZ9+nAKTUohZ$D1}c~%Iha~%aftc-QGu|6%;9p`Gn-ltlfmL$CWDgHWQ2u zb6I$Op;y~(9q;6l5Z+HOSwPeUkv3zILlRWVRb==lBMtAAwovVX8}3O6^{oX>i2j4d zP4ZfEXl{rE&JJPfgW=R>>jG458_C=c9(-R3a60hm9Mx+iLrwHiuu2-cKY8be4;YP2 zX>V8c@nY0Cxopech`E9P-HuG_rF(`>?I!zK6ppQx=~HD+ny$@xdGnN6!GtEG(l!nL(*aCmB9tyyTI0w1o32%cY&YRE2T3bvs_3&g`cQAZ?g&-t>F!0Xgmj8 zJ3)`ys>j6ZL2jVe;P*b>KUbpE;+Wh>crw1c+4+m7NZu-u5^`_sJX5v_fq6EZx(poq zc8N3FCS@#PslHO^UHQRMHIkC!B~7U2%^RhYuQ^&z)SQZE@3bXEnuO08muf4?Gfa#k zuclPjzJPR)Is&|Bt{$66nd!(chnctWEbiody`uZPV=x=$uZ5m|l!Y2$sQNmyp2FZ4 zt>giJVKn8_=7=Q?1{@eKc}4tI4@ zWbU3@>1F|VY1Da0;)ib!U-*13?kyj`T(PfJxDUrh#P>>+)5_%Zjt@~_KYN4!VpD*1 z$CC2C=Z$o7yVo2A%D+tAZV0Xrm~f`8k2=`p8F6|MpQQ0XBa&#kyDPk!D*xlYCj(^- z-^-RCm!(#a;Tw>MZu+}2m*B{#>sgi{PXd9kjI=|g9K%jVD8YQ)Gysj(=Py$*R{cWLe)Tkt5@nG@fAuTilmaRnx zzpuaHBiSx^88#_Tt^z(WJ+?0G=j7h#IdcK?>YI}pUY<~rLr|~oOqu2GBU=|`3uxqW zu=~qfgSOY<_ucgJIVrCxnn@&0DqO&s@qm}b1)`gw>tR#A_I5^uqJT(%ol zKtG?T2sO-sznr1W_G@7k_ZUn|VtC!756KnplO0lNsQ;%mDJ*jnpH&i+Hd7E7u z^I}8EcVHD|&~y2;4SGI~l2U*#N=rB7J}1kP9EG_I$;WzY#!4XKo>I5+vKW&e*X}{K zk6+Sb1LLfR=+Ix=m8bPlkh>Dg7*g3DTg5-SuAApJNN2+az1p}Ir#X5-XKaLHF71Un z{EqKdT5fo9*MI}0nl(87b9bgjyJ^t2`T}d{Fbg6R0V4(T+~dS=f3|@~(tExTMI@NA z^ZnPV-o$9s;I_bX7{iqwdfE<7j3%PZ1L5C75QY6JVgMT-InY&n_wZg`D13(qc6Z!s z=7J*Kj}Y4vHFBxsdyBfJmyF}5T+&{c<9IL6}2-;N%tZsf2 z{S8L<^Qi>Tb7|e(KSFvxd>lk#KeD1cY=Tylvb$ofhTwhzH;K2~+KY`kpW9evegPgc zH6G|ht`tuGH7meYc;{5x)v+pxNz5OlsEA@91p9dmapFdWwNnt@|L5_Dnfw_m~ z!x2k)&NgpMl!8lrfvBgoAR>wdvj36YiFNAR_0bapjp)m}7{6MjyR-I^!#TR#0X1d9 zLuW3jcjgeTmX(Ed3!(9};N#`E;(`HuWvo}C>z8?I9E)So$`^S`zN`vN;eJRjpTr#9 zO~*AoP-B!2x?*DC0FQ%}ni_0wzgZ^|K`C~We!07Y6(CM-VsJIRD=;OAOy=!mLZfp+ zo%+{cHy8`#@FTCg>Xq4|oE==g(i~iLuSGi$XgoJaxMx??`73ZbB*vk#(-%=ty+UHU z(rCIBZ_Atxhk!g%k}whja}pL2vj)ApZqWEy$ykz~H)o5*LQPO(dT8aOiW3$QO-l`n zSxWYik`y*|gnim3;B(x9-zMW6mnxUoW;WiA_j2NxmI=q8p`G_<=NSItOCe0gGBfwh z;iMnsS8LU+vRqq0*WEN(zqNrg`4;e{>$ddb@2%t!%Rf6LYBi*S?N2^0ZaK;nGC?!| z!>F;`TnB6|BFjQrIxG@AMVV^66;i|Ms*u^m(Zo!^NEqt%71Tti9J_FbnOcxD;0gxu zH8Ki)--Kh*kPDnHP+UxxTev+TNQ_zf_-nv!Q`#5IK-AiX6r=L=;JaPKIh|QoL|1(| z1X#cMMmFZ7_;TZWCbf_2QA}6+2z|*EW)k2#xWA(CfutnZq(L8qIu&pxMmkPm7Tf|I zUn4v|dfir9(AnfyPU2kK{gI1y^Yr)e=qsjJY5~{LBd^c33SPF|$VDU253qL3`~WGi zk!$Rg5ng*bQBcIRF`7nu)plLB4*PBReEdmMJyzUGm#=4$@i}W87FgOj^TYY(s&wt` zzt?bEEhtE6NbH>L5kLT7ES^K6I0brVgN0nl*0vCSkc-|d>dd#d#+LV6h*i+{J(F?$ zNd&z(v(~j4{uTtd;}Jd3aAVxEi_GM!$vSpWn{a(s-d=b4T-O%3(b_gLK08V6G#oYe z(}t8+q;_MsEavhL5Z+1%fKUg4l@RL>PncVJ@R65pf@o?FNMJ^|b?-ukazk|Xr&4i1 zerSQ>8h!1lt=(PRN5q|`Zqj^h6AX6!9=_Z$%oK`PK3~PoiZslGo(!w)-*wgwr&} zy~=ubu+RJ%&Fw^+@KeM7{gew13_L zW{Lumwr97}gE7_N>`)8HviuSfaW}Ah(@!?@S_M!&IedJjj=!o$E+HqbnBfI`zHXsi zEs*B>c6Uoi?~RxgF7oN`6u;9(bFBH?a?>=;4nCG>T$V)6`z*~nvv%t0s7&=1`|IqD zH27)OE1!9@?|WADJlA`p>0w|;oJ-DY^qRNUv6)*Mst(5?g-3i_%8+pe*0t6Aks<6M z!C)5KhQNW~gT6pJizcg}vD08hb_b=_` zLuUt%WNYavSznhT-Jz!OV2HO6&3YAdRR6{li|cgXeRE}g0oVX z>^oG>IIgwc*X}&(<_^`p)RZiw;RmvjIcIw&q==kX&mS6h!FhKsUE1&Zq1Wu8sa!8m z+_jq#ZkP&tH#$}Y^$O+`IP^lDdp9|?@N-6{Tn_o321mUdYDT?PZAXj_Z*=_;Qaj8S z+HUi2C3{*X%vm?sf!jrrxQ@G=F|~Amq6z0%JSC_XMn8<`^IV$WZy=cuqFqayk)9ZP zF^ct8lA&1M+=5qQO>U-UWVG$ox)QbmkzdJZkbyKsIL%=;vft{)`b$CZJ zanDHGeGU7E1qPRfa`B}+nw7trL^`P z%Y82%g_H?*7E5`hfFN}4aXqwXOZXru?37F~BZ-N?`wa|f^G~(`S!lexQ_Him_ODn4 z#flCR)clh7v_S{R)oySf~BfRaQ#h_YV7$*K45SJ6-u`9Yyskuly6{@+QzTkY3(;1ec0 z@edAR_u-KA<{@B{=ZLCX!Sm!{$2W!z0jp_z&XFKszK;s?eJD*4I?WN`F0L-Jmq%4M zYYtqZnXCL7+eUC7#IGyeM&dUTaj1L8rSxtB6EXE47ZvvKPUh$1eGkyxhzG2ednMP{ zzRUr9(K8a+JAJrB`Gac=AGnV0fn&|4-9X$9Yd$z;;1o{V=cdXm6c)+pB^bWT!jX3 z1nX+JU`T`%ku6mK+VvHijlU#vFHL5U!#--~+gb81LyQT4L2Iv$Zj0%t9;{!>+|@Vb3d@e31n-`Oog2BQ9g3o7 z{knN${S^1&+uTjmKByaR?0wwcoLk*8fK`Vn+R#>d2AWf7eyzv<+LNt^o9USlkHX(c zY4-fQto2v-h#RS@`t`Qz!qRe1f~+kI8JA)UZ4^F$-*U-T$MeC478Rl!1lxPa0SQ5(NzUgRHPN{H(M*Fhxiv z>;XHA>y~zqqBO->B+R)d@WSzWrx-TWrW8oe#sDy`PF8!gV({|yZ;Vs`W7i$Z+M=X9 z@Yaav<_>Hp5Zv-#+Yz|;4zvF5r+!nAGPUvPgy01hZ+%;txjcmT20kw1qS@3D%>Z`K zR;oRQ85V$N&6(=H8CR^R}ZrVm7xc z5cAdDIeFyvYE0yWd#~dO&%UcIW@Gj+fKiNN{$bDUUQrZ2oja`J)^_s_Wn3TSh5on`W5ce^A?-)ll&xI7QQo;2t$?4#X3Ni~8@fc-&I06anl(jp@+qcBn zGAV)yg-yM#E-3hv1uOTkaECT@PBvfkz!LJ`pA$EbN``jZM^L?@Fry%@0_X|w3b}NJ z@g@U(SuXT61#`ZJ4cb|bkmj|~(44CEx-R4~_f?j<-zfyE?Wrgiuo9g+cQJKuV|8ep zP?yP_n(rZ0XeN$+Bf>W)Tk9T`=suUBoyeSG3CI1KUF$xmy%`c#b;&jHWRQE$s&x^c zlH(uQnq%X;p0+Sw)4iXf3vMyZerg-@QucUW7;RV8_u@lxx<&MTxYeQpd%+b0FV5_G zG~^1a*&yJ|OHK5FZJ+ivSNzaW)8)s%+WFjUQLfQGUa1S6nwG4~V+WeM8KVJoNPO!% zq0$SQ$32jIPI~bG@zfvqO@3|m<1~xZl%P*;_WYx3-rAVrkkKLWpl&0~LAa?T=845k z-Z65>u^=S5JgQ#@J{3bi$+vI+W+6=hJ9+2^>4e_;Y4W^S^mIGM{e1g*#uF@bResg- zN`2b(g6^nvO1V;rqjg87e;1SSv(q7Ys*z3IMo%G}EOOOJ#A{nGd_`Vs!HEDyG_-m{ zyuM()kSy%uj%eB89PgduJ2E10eN&}jF=Dga;qQPxHYw2Qwg3HwS3a6n%0lFY{?x?e ztivVFVqH!%=~aYocSuquS)Rv!ya&7@$-2Ad6NV}0U9%tT$$-M9Ir`$(X*dG(3PIDu ziq96!REPABml4Zm*qhtd@5q-6C|*9Wu5I}bJ=P8G9lEZq_Jn`I*cLE zH!#v;XhFY#QdwZO`0Ho72lu5;ps4RLmHung-xfeehNP>g%sK{7N!I%2qNVF3<_#y; zfV7!wNO4N!tg@5k4;O1OY;BGR)PjY%4YOT4&9`zOT~QYx3c)X7@Mqw))`!}iwyqlU z>djK~W)@zwDE382`#^+!R`K}s+1DctN{E}>f$PZvVF-kBJEsH6G;$l@PH;;+L;9G$ zF&nmNgQ08qYVAw81I;m4D-X`D&mNEHTpvG|cD7_MENR0ZYd}t35xI9F&6-I4c44Hd zRd4m~u*)M#L!|6)a9PAtA+&SQSY&iGeY6;zsWOW8m=yfXeKV(Mb?QJe0HiSf6D^bs zW=8vc8K6c*V}F5|v)R{U^^q9ug40=I{sT|dQ~cx|*pn9-$_w?I zO|aY8N1(pJrP1K4lomjGx z%Kn%cDg<3#kCx$V*EfrWf5;r{R?+D#(jTd~2#zH^ao@pKm$F0#Mee+_KerrUj>x2r z-zEvq+^rzV$`o;)JcVF?nX9U5i;3bd+oJv${L?x`0GZl2Ul;YrcnmSv|Eay>R(#d_I_ItgfKM|p^gilL((NJu01o9wnO%78Ab1c`zDMbLITj(7 z&WaY(EEv{r$T~gJ5)aq=v7oeXehNB5WH^BBoCYkA@CaB{RbA75wVDY$O1B*J1)4GB zIefx=-h;Y3*|uY*g!y_-s;XCW$hwg;IK6zraF6|jrsh}~>4SqMT4+wE6q}OWm^d(5 zi4a>{;N{ZOrBXbpB_8$ZewsQzG}Y@RF8TMb?;{XF+c6Qy$+JPYi3Rb)?`CEG1Fwj+ zY-yFowFb@EwU#6k)W|=lyW$H&)}x`G44k?>el#w8@?QeufQjsr0BabBP*;g;tVV=* zRMF{gM9jit50cm2y^rE|S2ipEiQeJWYup&y&=#tNR5kBxOCfqueGe&Y1Vc#2Li8dH z>CX#Qa*pR*hNnCLXaDZqgvI7n-iMSd%)Gy=rpd}W{+B9LU>B_ zr@JO6v6~Rcft$N&9BRJU7UxgsV;n$zSl*dO=3i=yqIHeVnnPpiGjdk)GMfYbMKhkd z|Md9n4z_wC13X%0mi&j>;?C)LCzm(#DnA)?-?OG&#D|u*<^VU@S&!!Z_h4E((lrV} z+AVw$N@!Pg%C4P&9p9YSt;2fU4$8Lf$Nfw%izFZL5YJH+Q@-7vv&NXb?C7s-Hn(W@}4cEw6uKaEwVz} zNj3U3DkN2AaSjmLRtFK&o#{gsdq?9T#C>(Z2uyppaeE!nU zx!mnD>!)>zp?VMIL;h8o(Ba{3qSK5koW2W}Lm^)QjxnMmI{`H{H#2kzEOGj*P^?q?2#_*%$;!a{b=CIXx7IWZR|4hfLjd4-cwJaz3YEp8}1hn@Gr&!gH zNkyizzs11MdZ9_FY;k|x6`t9pS!%Clq@88ysQCFOvb4i|x0i5DeUh|$e z-m5G!+cim(d$WAWtLJ*jtLy_Q>4@GPCvI1d#DF$%zS0Zz#K!%|*k_>rm&;yMuQ_q> z=H@>dZ=XYB{GS?s57YQe%cnL5uNwlVP4l&(g|?gJ`fGM3$1I#QM|*?2o;O#(58HG& zS}uV5^HfyUW6kbcxeu3{Yumd4wTIBott5`i#BNiOL*tjNo&C8Z0xwD2AW5c5IS2_8 z({U!SsJ^K7xNU87mRV3JdiOU4gnf9SYyK+f>KM{i*XB4#wSL8*s* zt6%wLrQxVUF?BbSrs&4_|Et` zUE+@>rFvNE^_jX$bYH7JcH+w^x)y@mPL=6Qxk1J~`03;Vi`o{Pl-lpGi4+PE$^5(! zZih`F__sAydVFF~16dV#>FCI|KAQGWycUgwbWmn#PClo|K^>{d_^oVLLNP!f$deqN z3adC^=N;?$#_k_ZM#SHz8r@@V!b#(8DcJP#!K}XHa~x}#iTJmzL*P>^S_?{Q>M*Q{ zorkPyJte!bp3egI?apX~McaFxUJXXrZss~z>ypgl^$w*^Rxtbzbkl?F(Oo{govXK? zx9WZxf^jSDHohkt|NIyJsT{DnF6m|A3Ob4MHLJeXKWQ;#KX;8n*;(Ks+P5kkO_mq? z`KB)727@;%5eonm5AH&~bN6Yyzko}F-SJvS{+op2cKDaQ`#mYqrCdDVy6R;NNM^|+ zzrD7y5z%!f_jJ_9_c))O(I7(4P$_P=Ov2{FcJ`FQ1->U^-4IASpLZ`D?07rFYB`qT zd+R2G>~sLtpS?HTX7ZEyGBfnltuSAu#d;SW3Ku?=_4~krDbKmsp5@`492`lGSF)g! zICg3z7x|W3*K;H>v?;<m;)j)Hvu8Hc)yGsjM#>lmhaum`U6jy8XR$YWz0&q!+M~`c=wkKaonh` z=GCE$OJ(Lq_qrz%j?`*wnwmZXc9bUDu8+KZ_pIEb$dnkBZw^9jhiObp3PY$^uhLeC zYY%s-r28J!#5JKjCYY|pLJ{^l89Mc_8kZwD?AeFodjsVD>Ah;p1Z925EF z_-&!=R_gxK$l59)Rb@JO#>GW-6QIVjr#X|Z-eiZ8<|kS~ZqitJydDdmR`k}VQu1JE zc<@wG^5L&5A0wH<3t*6!dQwx##P&4<<6*mR-)WFuD)IGU;&fLi{un&Cr9=Cs>)J-up`B$;!*v&Ua^iQ+3JR-10p$$8F>D9QP2zI7;|Z3UDph^*kQwFj0S z?ju$&>jcUbx*zd;pWmId#mja{GfUq$W;VW&9FuIDsWPQ+Qdj-^;Aaxy)8l(_RH7TF z_E-VV4*)3hgWr_1v0ip#Nba0w0P*z1^=E(cQR7S?UKl}PsP6V}MH5V# z-<|Z);_-~#skRykQW;lzwH$KS^3HqwAy&L16%Sr0+e)}k=)7fD&9XXC9`j>`0k56k zT(n32c?|5>C5YW-9^5b+{6uo^B<$p(Ag0f;Af;2D1l&yA$MR*~;+5sd`1ooB>Ak1R zPpK$ee!}?Y~?$TDx(^0$*(59ieO~;&&Bsw%6BL?r{hhavF>DA3JOA5SQ^L2Kko!_HH>p7d5uYxMJXsaGl{8-5auqzIxVS8n za%YrdL7)xW&g)(eS~8I|NE;J{mw!uP+D94s-ETJ5i@zN`^;Kdnb5Dw@nj@*~b+d=y z)}bD>+ZLRe-;kevvn)i?+1~pSz_0hoI(6lWy6Pup=9ce(R3! z&FhEqx9u!Z5OZqNnD@@vmJVOGg2QN-2maRe>}+P7(4-jtC z3(I{l$9F8l0Grr+9;UD04@_SA(MpM@bJdr#N$;IR(J<~eXb}zW2{a&}-ERQ%0{*ni z6)fR--@uzFo<+BRI5P5yJMy-Cwg-6#*bDJI)IBLTrDuG+BDMuol z>X|2%D-it~wu4n~$0O9sOj_5rYM*D0esg~Hc^4s`|7Ab8V@Lqre#~Cu0!Ue}gTX71 z1D_1e-{^v0u)eTuj^S~9W%%|+YhKqfru~mIyxMDr!Ik=K*uB+K1a{+ZawMmJf=->l z7MkAoe%-bVz{w)#O0Lao9M416DkNsz_l-U2Id$fJ(aP0d`GIxZk*2rT@zU5WSA?21 zmt!>2_1>GqaAPIf&|i4b;+)#sMX_*f|SHWq?t_!5Gmb5S4tpy zf++!whF@HG`bk|DiU3CPiu3BH!SnZa4|xOZU=O&(xu)o^((WFU*8#}zM45u24oMTR zos)^3Fj;H=JhKO0^xMdu-qJLXUduZrD%ylqK7HsuiN+;B=J#(m`suDu42NpT@fTJy zzpH41RrUO3{FS(3)0Etn&ELwFW=}A>7AsQjHe~cLm8`uA_S{F(8|&4L*?*(R%~lk& zdOwW*lWQ;8kTMD*>R>#&@8 z+_UFzb6mW9U{XQXPTSu}F+&yQMC|`Zx z-?C==19&zueK?=K9IG801Z1Cl=T9yKl~G>wO+L z!5b|-4K32YGUjh&_nGOxLt@}<8oY&ZmeOtsJ8SWdf~ykI8Mbw@g@cG@|BAj0VECWC zKS)9-_&gAOY^YSgXm0&=)-wO7f}{z;U>jEib$(<`=8Ga^p~ogwsQ5RJ_wJw za$}wi!Z!9c)Fgb(&H*$shYmL@$)L4%-@WAso)34taz zgq+14$LMas>2n7l*tadq{v&oZ6bT!ni6GNBA$4<~jI542e%kte_s~WjF6t=Np-za^&b8l2ro%Jd$vb3y}hC-RN% zV@1!a6xMm6lU+ zg-k!l@5N>wcLTAJh4uEjnt0AplXDS=BDvFafxI2Ah6Y5FS<(&kLW{2OIY|vWEvW?k zMCv`1Nq3Ia6=7%JO53g5sXHtQxH6;3pZYAXhb61YVrmZlQaX^_P)l7ImQ|nOT{KB^ z%kh=?X2tdINe!k2=g&SMQ*IGl;AIN4*G9%-MSK8&M@Tob3|00F?P8jsxwb}K@_fs` zAWrd}foy6s_igpRXWFB~-S&cqbKDRc=eCI6k5~&>rKpUGfxJ5y@W!89an4tU+?im& z>zJD{g<*1Dko7X|*JShb=9}hy+Zck6BVlk4+B3o7CLb=-rMEnTEoZVcTm&=G6Bg1_ zlb1`P7RY%c;70{Lp4k@Q>#DmSM%A0Pm4OXSrgZk9^#M+9{m7+YKG|w^Rr=P?(gEjs zS4X44mWm&is5FN5;lvY_DUD_husXIv$ zMC6rDK-3U>@Sy3Xr~I{I*a~{N7PLM_6^E@5f;=k~>9)VdYu*SZ%LtNmyWh`hEUKHd zKcjwVvCztxLHI(X<-u~Di^O5}?AISqR#(85zfb}{oIN7NfQi|QF$XIViX@RqJNY>D zu{$c$w@Ue&E9yNjZ|n-HcB%2m)vGXEM7m}Dojh{5kFC_}VSQj0!{}&YN7Ub1;pRn0 z_aBlC!Snh4j;YH-gKYfeiv+)t1qtRCKE5fTTQM(_Y3-;q4~PB!?(;d)BNH8ohqPwK z)l@JFajjd3t8|+}N#lvn@!tlza!Aa9x~6I|#`{Oz^>S;t=mZw^1Xi8R@b9MWyK~aK zaVNiiCnP88=r5}K(t5G2s`T}<1NgYRlvdLp~J)QSq^OsaKtG9;RiRajj~pQF>qn5^+i;p~))8D;0~tAmTo3&HY|xs>~n zPS>-PO!3&Aqgu^wHs5YZ;dPAqxB${2@nu*1f;;<-P)ATb9FD@&b0Xy58JXhl7jC{V zJbOo4z5yu*o-O@hUZ1V1)e#*HrH&nl$ht8s$dX2OU+7+Wa5(cwuAvoNuTTqTR>du_ zB#-_UzgVaS)-}^8C4?KlOS6KNv5ugnL9xH0@6OzF|D3()YGx^z!%I?_FLM?%8f+dZ z#3$&#l>5kM!h0ZdGjrW^eVVy+=(HLjdu4Zfbw5?58s1iY888eUl4x6Y{afv`(w8n3 z%9A=eMI$l9ja>_BmJ86f->OfKK&U(an7t%()aqZ3)mNQbc=vJPnpR!^{V+D}HG?!0 zu!WBDZB;MJ1~;41g_`}|H9MUcIoBA=!*Ttp`p7e z^k6zBJ%(`dAqMYOiyEk>7KkpbuAB6J^Ae-B1b;a*3)!#27$+Y((9xmg(8r-)<6odf zaFxSK!)Gl=xa(x>$_AjB<%h;=pNBOBrWA>wEW;zhiwOZuv0Za58$1dcBpzPGGoLu2 zrC~L6u;_QD=e(}Ye6y4AGk9XrD`Y&G(6c*s+J`>~I>=(cXA0?9jl6-_FH}`mGa4>bE`tVmvmoNUqhvV;##2l};37JTw+U-h# zweX8?peC9=^1XB|-MnByE1+vKj6AMDyx+5Vm=z?g1%B_fhMZUPFcD`N=!gj8cAc{n zMi5|AR!4kn1ov^) z$K$}t)a{7?(j+Pivs{f@A$+`F zzU~mI544;v!Y7FRuD39LejW+Pehk=ryD>fGX7IU-KaH;C!_|U<#$8cL10CKaUkaDFYAXklUxn3OW}8m z${Os-i~hmU)1cJ}KUNBTz~R9>Jb{-z3>HQGYw`FtkO5Ut0- zgxY>ZE3&iU`kjMsD(y-@+v?AU;lJ5cc}?0PR%`{nw&FV+wH^r1@?JK?1fm`ISVVfk z1GQy0RGI^;b{{h2tF0&~vWC7ckZwPTYGM^N3{YYTWsD+cuS~5sC!lI>##O`9;-#n0 z50y?6#7QLzM5zD08_iMUJ*nfc^5>S~=UC_bY!_=`XoF+h$W>2osYN9)-Q2@Z=*Ul8 zx>YFdX5I*DCL6$_FPp9oEAsez-ZT-G60tq#WDMG9xEatu4j36h*6Y(hA?7^5*-J?` z^IgEt*=Q>lBb(>4qP+^O7L_1(9S~idH;9&Q?Mqqm7n}G8J9ox=HaiQIcKN?9u(7di zG(Q#+ra2@!oS$^Fwzg)H%imr)F2waK6P;Ckdi`8?h)BE@OM$pAqr9Nny_bv)9SfSP zHWw1%UXP{O4?0zPjt7>V5Fcv-d}G`96+CnE5!Ge|2yhRi^?E-eQ!0^%D)L!x9|z~t zn2l%TZq;KS3>CfmY+_iZh88T68-@%DgDZC`b*RF_k6-FB zYWz+#0(xfLZEQ8$-)y*DW5K%Vy1zCh-MUhXC=~KGe~Oiyw&XxiQSEl_eabCrNgJ?& zNO+i%`;sM&p38u@n{zfdr12e_Y4w|3ZtEbd;vTQIFHR`fqX>rK5`!)C)a|oeQ1-%> z^SjX6!f(^WXrbJ?ZyCoND>-cCa7}~s?V=XHz_@XQhn}I4sf|wJIuR}^8e!bBviDhc zt3?6hb93rC^8D|qsoxn%soH>kivP00SGvnit89*#*45!E+Hzzz;S~zXKG{EmCf0pE z@ec4v`o^(eJ|`UY0JvIW$OMLrG?EYxSI3;s3|=Z?fxz)W34xEeh2tQY5a4v4OOA6cM@*D*Di@4K9G>ZG)9?oD77p4 z9=wK^%CwtqO2^!FKVbLYyT2-wEA?{q>M-@28r5uUjgOhoW!Sd8i}l{)K#;Mns#^^_>TxMpf#_TZ zr>|f$NurXC-w8$u>5>Vhf!5anN;V42+;c+OUmNtpa35u;{K=AA&&8lP=jkcIh-jkprdeECR@rMrL41(lwXez4 zenSvKK}q4n7~j?9KchwP{_oqr;UbAV^Pw%CnbLzq{HGCNey}MHtyHBX(xt+^j_wz; zG$#=s3QCQ;y|RMG1JdjljYd{ry`*aY<8MIsE0%2IW!xX~h%dQmyR3Psko(h8#Ex2V zuD?xSnO6>7;&dLf2fA!au<^BlyW8(BpYzsRAL#-6uQ8MraDnHoHwp8cRSgT`UFHCw zHc=ibh8-kBQ$`>Wu+?&%GQ_zD-aFA~fFstGwe`m%s8V0*j#_eA_N-JeNe$E<_Mp)t z_j}j?_y5N|TNs_%CpF<6f7Hou-9#!&804Z%C}J6v@9BHfPbFzsnu{xjPd_HOOc@_W z`R^aCFcLcBN^itdsXo5&_F&K{!+M6E4m5i0Vqp^F;!3Ji6rJxD75{s}?|(S>t&%C6 zXvg?HazHueEs8bTGCZtzV`JrN9pF{wL%E7TeM`jyuj(8WERm(B9~nM9uX8%R7kav9 zj;r^PLP*sInai(o_7~^$szMe z+4#Rx@xQk5zkcz5jp6_Iej#rMW~ykZ&x0y8Dm34DX*WN@uY%qiBU+Q=raW>6Fx`uY6E&oo0*C2m z0&x1D>DsD*_fq0;CZHYZw%X1g>MQKxoN6HV6m)m(fEP!O+_z<%_>C}l_lZT4r()^{ zdwr%x|KRUA@BFJBRulZqV|fRU2UdhLo%t4>03yvxWp-wfEZdKYOu~9e`(rpAPv6oY zGu6#B8Nw@Ky&7h$i+`?-1yc@Z%Jx;Tb3gmVx|DCBGf5E}$Wuxz=wm{e&_k;fWpF)) zp`@rcZv*40K4D)$#9$ZMZmJ{I$TK-#_Qd=`3GbFPaY)Iy2m9fpbnV`A=TwevrRB{} z*)7FURfVsAutY}HDyH~>kK9RWS%QgzgIG9txbzf@B z-S2a*P?#~U7N2mc-{FG@ijy3=%O#_#vM*5KLwQbq|It3ee=j!i)_Iu;BKT)iHg8rq z0Waj;XvUSLkp%G+(jy~{7_>meYgIYCV)8(Gt7(Z6ZDKj{&^kb09yOPnRNT>eUkhfj z*WF=IqJPe{RS2W36ghC=N&mSBjjHtMe0Sv<)T1qIF!xT-VXjV3!ND%Ka%tO95-}W| z<$SeuYn-jdnj(_BYa34pjZ4NwL4CC-SfnJe>(J$CM}~_Vuen#5SP+Y89BspJGZJ^1 zKJ?C((PtK%Db4($#? z=ozE!0S70@v>=ezi+pit55L>;zTh#He?@j^4#WH?xUkbbT2tZsr6$ux=!oOH2XxF)<= z{i&>MH3G=-+Z(5oIdfVGXK(b98s~;Vj7-FB`iQ!){n)jA=)ijMlfV>a<(oO`k{0jV z@gf#JDAFajQNP1m;3kZK;jp;Sn`g9Rek?BD;ySHtB9MxeiNAcQNs4y+BrZ%d#W9tr z`Pyl(lBCkx4(;kUUsW50y0+>1Ab5z;OM2hzCoGDOceS2x{!Zn>bnvmHzq9rNp1b@@5 zEpM-PDME9y65-U#T1%gMIubqiw>8~HZ^+ruheWpQO^g=eS*a_ONo*`YQekc)Cfdqp zPT0}Hi;0^}ct#0L+cJcn!eZ-LaHjDUA0I|?b;0^4Bg1;n-dWzRmBoqYd)7=0FJ%r zk~82Ss0DUgs0lytz`l8?A-nhtDWd>9d@RtA=>BtEJB7~KUU~(_{d72_c-xWhV~HMMXr7{^FCtG^lLsqD(wKg_; zgkp^h4%q}p^DF6M~<*5u)HK}YPA7z{@(pCYV&x=q>p)<<{P6u6$s_9XXqCJseNxO-RqggGmjIS zMUq$Vhbq2WHY%`EHeVjm1w-d2G(EQ1Sms7#rkASUoDN+!VNkbUZ(l3q$5>1hH+}#J zrayC(B4({i9>*Q9U2YLdqfBF8xZZ`8^|AWMMkj>(?b(-PH4aP@#nQW_Q`Xw6;kOrO>lg6C(B?@ZSxcNPx(_+;IA$oWlQB0irt`EABZ zcSNt{^aZuwB{{1OgWVBN9u|0fWS18(9sU@ZuKwvOfu?jK!n53e@~I}cBzGv{=`SZP zz%PAG=Stdv_>K(UiOT(RMkewa^6%MKL@*DFut}j5q*8xXyN7IBC=z0JTXVqM!%Yn+i+2zctvLhNKMd%%-*Pd|@f<5Ow2faRnRt8#RnF{#7O zmZH}hY&J^UcSA{Fd-1N)R4D^G=a|mdB%3KKM%xH-AXTup%@A^7h50YH6LYk%`{#B_ z)l0l=Yyb{vdx~2A*WDI@<1P{8I26pTey*8b+g&UR2-d{FZZaCV6fC#}O?Ov*Wz4)2 zYT_^GNMzPH9eh9Md?_3e&t3{m_jpOeh1P|PPT z1;eHDqN{bz8|*JCBka&yoo>~d)(bwd8}PxOFOPTXZ00I~u)C~DBwLD(juS(`i#EGB zyNw@Zx$LqP`v7RPZ~{`V4prZnlK29C2|cC5j5mFV$x1qsx0^nvmWCy~T@(rI4bRg`d5nI)14|)CJ2`=;1BeuA$7R*5zQGJF9{x?ZWcCm`I~gK>G63#71%Rx! zU>{u%ul3H)-?+oy=ScyIK*;ff8v4LYuz{#cij=^b*@e6q7*}8gdOJnGBb=Gk0 z_xq(SDLf;d-t20ukwxmC<}e)&#}p9IXZP|XfTTX`O)hY18e#o7>fo9mg@1F zn|Pq6R8!N_Bc|J(1fd-=^Vc@Yrujk8m25Og~`q9?hA(kxR>n1o` zyR+gpZ_UEH&uP;Eq(Np4{mJ2rTV;1PVEn-Y>Kwgp#C}Bbd?JKrJc#Q-S`HtpMzJO< z>$)%rX`5W_@{0n*-h%y8D_skxT5V||TOp&{iZtb?+@Oyd0USx=?ZFzjj(u66{0~j$ za!T&Xs{-#RzO=B$BG)?ield!QHrz_GS}$uUT?@2^@jn^#y7)*# zy3%;NoGm=O=5BnSCNKXl|Gb$+1&cG9uSuwOk*M1SSA(@R2*-m;9RMUokS;9nSmo$%%PXGF$cJqVX zi{MmzKEd%Wq3575yD!*F>DnX0-sJ>doZk_4i&U*ni+#*D2&Q3v+0Go>Tu>um(zP6 z`Hg!PCbL#g{NMXKBZIUS5j)ijvsqK;IjgGSG2EOYSw!*iKNhNBV*y$Thu_33 z==CSBbeM|j<5h>?U30;qUYBQO@I6p6}mKHn*hCo@s%;IbbVKP7!@$e<<< zYv7szCXbC8j!q-8w&0Ej!(FXwvHC;`Yo+VU?uFQ_eRxYL=~;ARFzJBEA>IkBz=u7w z{(Pqf6^~2(Qj{Ix3URfNfvu+kVz9mq;OnlMx4na5pCkRbpZknSiSuc8 z%kx5Huc@-&wn4}3+>4qi{ctUr!J|3r5*C<@)YJH!)YQjAOiOpTFw^<}h&AFJKFj=T z1&LH)m2EcXNoR|o$6vZl+Fo;j1fMvYnHMwK|^5e4Nx85~D?H(MaxT zh?yd)@_3YW>=4&!1>WxNGC##xiiyxX0gL{nj zaH<@`jwY6#tjr;Tj+|N`SLxLvoC_c1EaHA=+*mBL)jnxtcP0L?YhSs5v%e+sVU|?qK z!}^n(^xk6wiT^-h$q5AZ2y>p6%R=C9zQ_l}OiA-bjoQGdI1u~q!_u+ewh8Hpxcrm9Iki`gQ<`l;=kTrL4i zk7CmEA{npG*}DZ+v7(M*#Bc9F!L9ouHO3?Xw+nx+ZdraqVJL3jTLgAwXP4d%RVW8` zad(-I()h7~8dBWP_}RKc)>l~%XC~C#guaRh;Zv21PQ-^yMv3^b!`e6QdnEZ{_FgMv zy}W~*eGu}4pHlJIofb4pgqL02Nrzt3=jpycQN5j+{@9zv209k$q#QAFXEn1YJ)flT zbgSf`d7TGalMnh`RkrlNB?<+a1KR~sexgi$sV}nKBTEIH+U!>P)zPcquzL8@WX8HbBQ7qO(XH)1+>#Mhd4Z)Vz9V-7^!$AJS!O6JO5%GebFI6b7 zPs`BzHVtyzXK5~OQ)Nr%@n+uhQ@yM)aF(ziO*m!`wZ|LTJOnvk$xp`aSYH2CT8NiO zoz3)0pe7idA{wu|Tp-BsaX_3nhAC^Ulp-dzA5%@S6;!R$ftztp4avbd*oK-JH6!!K zzvT79qIyk7*+DA{n|)pfI-YCxHz<@NT_S6__|6JBwDB&qT$WoZD^UwLv`b}C(Im;I zFPvGnAmKbe8@JFA%r{8pW@--sp*&j`RrJdPMvh`rC>1fEk&W>dWjOAe@}HY&p9O>= z^st)^hk~A2ud1XJW` z1DoHE2LR{K&p!!PjPI{x=j$tcAT$20jNL#@PWhCgCx&E&X=S^{89#orLkN5CGH~rf zquKpqwy#TcL=#?iGLYEH89PO6f{FjK?g_93@gNRjYm>Y`E4i;!3 zA*UfNwVzP{ttVr53ag^*!OYthl((<&l0oOp!gj>c?8zk$E+j68vzu2NarkoSRNu-4 z5h1H$Z3)Dzl2k+ad@0(oG|Ol|Idms|-%2rtoR|=LEhKxjnl<%y%wp`haI_6zalqd; zLUqH{P39pM$Z>z%0?5Ls+I;Z#MSaQ#;sbz7kxZ5$i@`vivt%A;&r(&Rb6U0mHNx5xsTTEuVFu;5??{|g>7&wtiHA0$Qxc+CmtT@i7Ud5tUTc8PViO^llb?>G z-L@ZuWZyVS;Wc43M)Vy-u&XWqc8d$~I=?-5$#N1pfFv8<+7YAmq{a8XP=gasZQ0NK z`l8IVel;Tr@ayijp!nOQywH$eshCE9Gs~^WuKeyfAU}cA56KF6SFYbtVf$GmClo~ zLGUi7`Qw;HK|pF5t*Kik$7AQRFqJS;oA$H07(q!RXM5zXXch!B0A)iZBg;kq_Qd}V zv!ZHU`E6>L5tYCVv*P6@s3AU_tU5cPJzrb<9T{ZojyOMnImTW6=iQXTxao@(wh_CO z7MP|nQR&X7QgfGC=fuPWyKBp|gPBX!WZ1rtlrOH`xT7m`__$Uhtg|4#-@gnqx9wZR zLbBTV$sg)%GeQ zVKOjqz9nrh*5ow*{l^JjPO70OEUUEt zDO&);8L%!PZqYGU7RrAnsD`kRbW8ASX9OERko{g+rSCFew_@)k^?LgJO3kii#Ft}k zI3Heis4I6HWRw!d41(9kFQ9q@TNq4fj|XmPgnFGNmZ|uwQ!U988YYm z%Dk&7{^LNGoc2YhFXSd(>7DW$nzwTb`7BI|NhPY8raMX_0+e$2A(HOx$hplIrkWd;;zYB*mHryixb<@q2jFxf>rf- zlNh_7YX`~FDUHP`sn^Y#%qxB@!t9$wia_x%K4yjAvRE0ti03s;*Bcf>jeYR6%X|sW zXdk>b*vt9Oy!EcXU02#84-$lNr zmb5}|_lZl~Ja55TOZ&G-II=a02Hpk*v8djeVaGJ zhpR9+VzqJlcv{ILnQULrtaB)fF}Oma->Gpc$!EFcpV6o7CeM$vFf<4z_qZ1vd9Upj zPalb_9M|o5r?O-Y6r3Wv>T zR-m@uHZZkCSd9JolD$tY^B{9he{e(g$M@}(Nk8{IShi`WT+4X@@R8{h&tOWbGO~tV zI=SAp>MkT)BHHir#`pSOw!8%bzdNvkIvc{Br>dRJE+en@{jj)VrPcfGI^6c?*?)5ZZZLY-D?e#6no%kTbgVnT8F4+J za`r)Dm($MAf{OOSM_vXZ?pg^9w1<-UwI^-U_?B6({<*ObmHbSt8erzZx=G*m>|{Vs zH0ve>f-4V?WDacUj!?<5#v9NF>8uQE;tZ~sfC~ZXi>7_q58;Cbz~7gOWeled(tmI( zX{~Y1voRw(w{%J3CvhnVy`d+9JPc*_tB2ijaXN!nVrNHfm2*Gk-Y6qZ1UbwKD>sJI zdrx0Mra#Kkb)C*Mdp|4?mJ~SH^U>>@w38I6WEXsugtSP^eAHthNBT~1=iQi23-POr zVI={U*`XvPXyy8BVKoRTUWIlOV3Ts#}|D_C4)i z;z@j}a`VTsbqAl5ItEQn_>Vxr79DCFh^aLU6Q07m=89DttPdY2ZhK4x%WL5J=Sq9mjf?#=VW>W96 zfO3n1(93$it9yTKD^;uPDT$9%tB1AyIVIE?l+BJ3<(JQ@R)3`4odMdodO7Vj4{Ds5 zOAcjVue@*0r}ghc-9dkqYbv=n7W(G>>Ia)`o)-nB86Q)oCuw*nJtPv6-6{1jNN4;} z`em5c@u}i@*aOO2ZW%K}3&oOrYM4io4y4di0M&GrH`S~ME6O~6dUr76;$iU&(?g4r zpR=b%!WX1$NB-lOU9(v-Q5R!cE!P@vp(=BJrx^*)hA4ry%H4gg;VaEWVk$W8^wo^A z`W042J?b>JcE#c7R))v0qhGv6Gr3DcKU?D#726g4gYQu2nz&?@zE?G_j zRtVwT%#ly-s2~)PUhyrIr9Qmm0de8)40&JV5|Xc=?nR>Y>>b`18^(ZkuqFOgd!L2r zSpU>xhKVMM-0lq3+60?N-w*IDUY_;z_H_|}4XXA~#r8zaLffKdFR^zKS{9urtt4Ua znxwz0>=jpHI~UfxcbU1pWg_!3j8+=5d{IRrldOV53fcYWiq~2{Rw`OZ-w5Wcgzu9@ zTqV~YAzS^kbTpbp4yjsgf^O`3#0hs-o}YP*X~z5Wuxq*(Dyuo9f2;SN;BSCRRr_mouF;UKJ7%gRkyaATgrF3b|*zBV)j_#*}2{ zWMJdq{-o#21J;)1JUxZH(3n#XCc^TzS%29_8kgRfGudLAm`-1B!E}$m_iIQZ!Z!9u zm@{HLE-vjY^|~jUP8Sqzj@oVXkZGIG=6e~_1;;$~%;OVW@^O`Y8J+<0LB=`%589&& z1|z~zqv{)%CLIcDh}97j-&g~% zIDG|;#P4_S&kRft)+%?BQoHoY?73Ul2F$K2@$SNN^J(s_4zr(al^n6YEX>&F6&38H ztkuU1+mim++2B(V5yP6B6E@xR-27BwPvFSBTg$3PLJ*-vQmuk2tZELQITHDkl(oDx z4CnJYN6dlPiKGJ_dM?PoERg#-EuO}J!@1}Lv;)_c-isC^-K(Y0IRm=rVEJuqG!S>> zAwYgySg;jrJ3|^YN%XM}>jyVWLT{5)!S~rU?0@GoO`G(`8cV0(Mnr%wMCfPJhvQ~x zDz7~a%UZ5xxh=3%H|pKmJu~l<{}R{!C%}Ga-Kjhs8T7AzQA%vpd@E$8G(@(P@wLy~ zSyNQB);!&0Jx>h7-Rqb}jm1e7w6C%FFzMeW4QPn0mihC45tez~!^;j=TJgJy;_0-M za0j}XLDa39{6+BeXnnRrU4=lno3!V0bxVB5> zEoDz)O2_+Zndd~?g&ZV~*|niD1Jd4`tivL%-M>oorJ_sd$ddq>bDMxzX@ALDy{xru zq^#v?CUNKai9Wd|EnM&ZU5~Q1Hwu{2kC6 z$@7~(U}Si-;DKj4RWH5XOWoH%ZIjTLb)RB^q&IKlJ1=m%Ho~_Gui31cYe>RVYvMTd zS@@u&zAbaoJAfp1wie$#_%3_6_^TA8MQY}wZi{OMyXFJ0hFT7iqs0sZO(tFhI3W}f z@l;xx=(6ikKle*zg2n}}(8FLYVZjBqVlRPlDvzq>QZ#K^A4CU*EvA?#+x8OqaCAOC zC;OC!IP^5q(EE@)%f+E>Y0RnFNwv}J%G+3I$B*T!Tq633(%3Nhx6FA*|K7E5m=JGI zhvAE$qVUyds=9@G?N>W^ z@zDjy2r0M#8~gx6>xoFBTS255MNoHZ3uYHZDN2RF__n!g0QzMR1N6eKlgC+ zxL2|fMDY7{UItkf725pF>+YmL=5X~9*?VmmSm13{EY!(UUY{cyWyHU`pVS@(@@8nO zoyi>QNahl`oJmM2WSkO1?yN{&&<#jlMADkXsp%?~(yWORFXa*uuohy@foG5i5}k48 zSWQ=d-oeF;0c_lTcP6{b*;Pfj?R<3eE2*WW9a1k;erc#Aj4-^xYjJ&P*4}&zetkY9 zsbsQRB5C`h*cE;LMxeO>zQ5hlYDeC#l^8Op*Q&gNOYLo~(h&0PQL88IypIVwGu{P&qL`Vn-A@OP#8-NZaGh{Iw~`{MN|F#8dbo%d3R0}1YR>$u#5&`vvxYN?1I!B& z)9fYekT5y=7K1x~?KStoZ^T|m^C`N^T~R!&p+b}=N&N5|?88j^mH7{Mx0>~)$K&f| ze~Xlt9{)Zp>b)0V5#%If0Kvt%3~O_;FWj=bF*gC4ks?j+{x4*gcwuGDpRB#F;K3`C zQ>y%*4CkxO>(ICrw+hO(4HXHS8GXqOXM6I53EGJWPB=NZpmq5Z@*G12Y4ZDctgeRaGPA60{dbO z>p435+1eO0v<-3cDntaiPpdf_VI8$z+uWZ4ZqW^{&tJYcz|}HPwX|OusC~Lq=#B4$ z1vrozY@Qbsri-;TG|Y~ADapL5+v0% ze6b+RUl}WvO?{WL$-phVsJA^I`|4__8y-_bSw)M2a+QxoQn-62-1J)9ExGToIwDau z5v?C3@;V~1zwYs^I;F71;jJ-q{Oph=zQbcB3Z_e{)$}}?p&*E*NqvNYll;fI3e$km z&9j+&CiN37z)dMhsoSJmJ%xtv+c$o76f2eO^0u0mP!1-_rY{cdTrc*zp)dt3I=F3# z2;TU+3m7>ySBm%`ii_H@7ViCxL<@Xjp0bQ)f42M=62%uUJ{veA*A~Mwc-Vw{zp~wa z{H361cW~&l7%f5p@?}%m6Y0WC`=Y6@#jf{VJQb!Ktp^H0f+(bMp~pXWC(QAwS?I<| zAF%5*d)D=-d3CSB9u-QKcxtPZy^fW5Wp2_24Ow4^8=lAR7#11$^f!z$-63h?OG{*O zW3RX=5(WV8J-8fq_OB21#j_#kHMqxAxEBlzlQ)qvwRQ=SO!48e^CFNa7$R48eQ(oLDLI zh>PJ-8Szq@9u*naHXN|A zQO)%FSTbE(ywbK^YKoJY$gkgjMw8VNWmm5x}g zSP~Jljc;L{`OtJ1{%pAeFqh>Tb#m-7eF=%~D?+?x>YHlxG#Jji3vz*~NzbJPt>_EY3!Zt z{reXoIJ&amxH$qpU|e*tOqCJir@cepRst5djHw1jKTlq0Nmj5%_LX%7tk&MTEZx|O0o*Ogm*Vse{l2i07z*(0 zyOg#1r&Yqdj9_p4FRTQ)KhJpWK{t0R)Ay`uY)uq`Mu#aA7D)PJ%$jA>vw5#I>ZR5t zF}OT1$%=rT;yZ&4>bsKX)F#Q|{oHu$jKh!St+#p*&5Z(Ujn;Ud3$E07-`iM}WW3NN zCcrp15bF+TeM&bteWAJG(&SI5YpOUr7p<*ELiGQ;#wen6xF{YP${mK-Ye%~hkQDvv-)W4aK7Ef0FBsi*JwaM{jXz}%kPRJqZgA?xNNu%1dXmJ@?GVufEC6D$C&SUzj-Dc&gSMF%AxpU|zZP5m$T;Z^h zdJ96K5o$g{sPoZ5@jw(V`T9%FXKD3;A!8_a7Pb6iB6L`i-@+A?L22xQI+n(!D_I^) z%1iNr6$Utu&|al^oc2(WdE!)*ddD1!a^EZ~v?(0=x^kb`qcqnCLY8h*6N({E5rsEv zc4Ev&y?q_oE+lv*F_hYjMeTup%@FM5>(hAedA#efAR8GRs)KZ+m1sG-Hzq>n0r>!Z zU~(NT<`CK-W_l%s*G5~fWQ^zcVX2Lu2v4*1j$xwaD*{VKt(Oq&+&GaLZ4EoY&rlaX zPCryGs3YXczspdpF&Q=Xu{-~Z?DjrzxrJvy-@WrCz<;x?SNYO!d3!+7O0As_GU^ZH z1FfY+BPs*57(EPTcrpcKjJMy3yox+rk9RwPvT3hkR`?<$N}_olXOwkyXOdQqCcVGD zy(lqE<>moo!uw7gI6w3^WW!Sv8VVK(bZx>K3-N|t0z4QLjMB3Wq z9i)Ck%-Xm5)}uZM;*%8t$~lXi6=G+cH{^C%W~SxJ$mi&W_68n^uR@^HqoZ?D?L*3D zzT{RXuNtBQI>)UCEkQBsiEqP|=)1&=r3M#Tw?kFP&-!s(lEPWJ$PD>xt$ z_D3*qLKYROARScShw2Kps%xv`_kIuY)VfXBWO({^21|nypC7C*9Nhy`loZsxy$h+| ziUC5F(e9Hhp?xcu1FK5~hd*z&kJLoITQHV}-1;#!@Y>+S=ZEEv0D6{L*j7KNJasG8 zKc7XjcXL_-iJS!j!Cg;)R=@ZC5p1g7^QH2B0t(` z_SN8;o3LQtov*8YH63DnrFsuPnpNX$p)`Eq<8f#X&tCcv$eg+$d}O{mt2xka;T@_7 zi}3Jdri&? zJD7E=xVm?e$0LY6@Y)MYTZH|q$I6Az?<>Eall&70qJS{U~(z@l*Llg?0u1_M?Tk*Dz{efzChu3#AZa@+{xbN`*ITuZTpF?Q%P7cjkB13_I z+W5N^=BT6)X07K(Amq$9bVwg;4srrkw^c-|^ny z>~7qrsjY{qQO-e>s36^X5CNL>>In2Y%ac!r6e-NiMRv9Y#gMM^5Q1=J28K&H5u^GS z$DLsXWN^>fqC4(uzcLTKtVqhn*sdI>sW-Tn2)%i6C4FVfO~C>Fj`$;9{v%i>5_x+ z#4BE=(8*QtDpsMlcxT|^qxfZ>fh$wQ(6tHFm{_zrMyo!6j8b}ft>G1gR!<+uNY(3r zqF#fLY3Z7`Y{_z_?JaKkDkBePq*MeHRT8o(;@)!0=e6E5p>i(Pek&!4C*sY|On8?X z8ZbojQjq)IX?Q8?8i5JNo9s1;4m+Y2gitf#L+ZR*t0w{9+4WuT?fFRcujQA91>nFd zPxu`Nuu(WgrvCk>mq82xQE%$jXvN;xuk`gh5)x#9182_1_-lQNhL$^vn}^y@RNo?r zTyDVSUI%}g;WIpTy14^ddau^{)KN*%N zmOUo(L_wB>P7-R5w^>hpp_ zz}AXiQZ>{(EIUj&ksIPewJ{2Rs+3Iv9W&&1{!61YGs;}+Oj7zLLUp&e*;zw!gSDQl z=3EDfH0&b_S*I5ibte|ys}-j}m3#iK}zGW*#noZmkk zLej{rRmqXzWhL7q8N71UnA4t87DJrA_xnw=Yd|&AUcN`rxGs3R9l2GBwLnz6p;Q408mifW?ID|##r&>{B+3-&i};DAKB6tTl`m!; z+uA3dl5KI8?8Y*p^ons9OVn=iv);=2D*LQQ)i)JsQ@VuD9?J?BpeivSF?tukDd@O=|Q;5>MW1Z~=AR?;&C<<7`_2ogzkr_rZk z<sA!~$AM1r(xR~eJHa^p#<-d8}L-YwSfPpN!%j!^^Q z#(PwH5wN3^1&4&;wBg%N%+2xD+Bi7iiE7Za>g(6k@{E1bRg@ZdiU}c7)q}!EM56YK znI5tLn`>ivCEB$~A+tru2`AX+t?+K%{bEBMUR{zTzYY1sYn{Bjd*{1oI5_56cH}?2 zd-gNyXRLoOK)g9KnnI(>$bf)z)qlYq?*QjBQMM>}i9J?jj&HiV7gG!l7k6@6{XlF6 zp<{jH&p}Oc?mjlHuIx4|g{eeESANW;zb;0XYI=7#3g0~O{FvO9O^gKSdPqdIf<#p3 zo^5O1eQ+^MkNc$TY+XrvceEneh#sjB{QWDFOOJ`A@s7=JCYZ`p+t->eqTJF06G5x> zvu+F0`s+fV&**~lM=lNz0vEof8o)$f6iT?kauY&myKjoQ%t2h35|RmHFX+QT7jSzx zD{YBQj|6xKpR_=YV=@gL@3uoE?s)00kc{=}A+0L22%Jxvn&|J`+%EXZ|<`Qva7Qti_G zpLzg)zi*)B1(*LZN;oo`QV!!kQtv5}2-^M_1$oNw4nl>3QlQwshgel% zYxy58z<-a~Kb-b*)rO$;)}FeBfjCi2DVsC@;+4fY@%?%E5yJ@YoH9b-?B)R!$<$OZ zb;-~AS|}v<-7`ixvzU$H6S{w0^REoY(7*0fVCV&b@<$7DjDSzR7UGM4)euQWCMu;- zBQj!?{+Szl`s#$^S|NFXDg+@|KWoM6IoA>6w0VdXzHvwROn>ZsIr@NWz@lFO)x)_B zE?>-j&$2>GQ2Xt&JzeL1!55JDaWTrsYyOwCT*M@e%W#0Fzaj_W6zPuegU>yz9B+be zH(x?_SbKPFL1A2tAR+>jX;ODY`eA+BS6lq1e?QW&FL~a<{O%{}2fc3ED!V2a)(qkh z*PVoKOng?LjE?%Bm2Ny40b?)6AX{4NaBa{itktou=hKR);o{bzS-qcY^lA zv`|`Fmxur;%&AURla!2q5v*TdLQB`>Vn;iRNhdNHe6zZ%gXd(^*6lK%g1=5icVSC< zZ9-gi(CGQo0AbkT)a2&Oey+g$$3MgCKFMwig6K`AvTPST0wC5U4nm~JdKH-@<9(oIoIk4tMvq%eDuNrToX&`HziEFKV0{e;L_w-% zjZK0B&W^*J!v$kp%DZoopGRCNI(y7m%+Kl+HzXT5^&V@8IHEIw?|?3Zs5}Rr|E$-B zt^~%iV80_%HT*J<(ra^LLq76bc)v_2Nw$X(xOhsve@R(9&pZ8SoOCtPYa_OOXpfXX z)NV}s4vE8$R{Lk2b-bCb&5L7D900>zN9+aGP}uEiG1^VpeMLa%oHJWy@me$B1XaEp zd-#~4q~ANm#S&zH-L&@4Lc}}ZF!*j0Wq>c0S~@#X+1sL7tqf26t(JS*8EI*Makrqt z(H@$s6T!Pm?ry!6@Bt87VzIvZ{sR?zDt2IQ7qRhjXVzYp^9`%#Njv z7kA<~K900QM7O&TZiW7@KMZ@r;JX-~w%`hNPTsOepd|blH!JUBij#tQDo}Ctnk2)L zTX2_=%jN}4gWYnq1@&i_?~Hyaj|Pca93V;p6!|6HRe+k7JEh9x#FuMAO(q$>)f_Ssd2D?jv;@7D8dfPX?=F3v)o8xGd^6V!{^Puh;D z%J;`lx0z=6m8isl?{ICV%Pj_Ou?e0SUyq0hrP~y}7L#8J2-?uBi3PrF%#U|W;I2+f z0e-Z07U2wd6mRVBOU=*L{j~CbXik?AgF7!@GMrw((5Pr~I=brT-B^dtWt~ z>n3f-qbqI4k@m)Ck&2d9wnFmLWt$xo>?cc_iiAw_WhqQCQ+VPdLCotXIDX{R$FAT4H2 z&H#EQ>#F&Zx{F7{9ZuJ1KFVL>?!8?(V|UT^b`W~6tvj2Z28#I^q4C`{A#wvJ_H?xG z+3>4}y%=OR*~l9fEjK(rq?nQg2@g@c^qbNb$)+9|dN^YR$E1l9Ck{<6d8XOJ8kWm(+^zklL`(N{j zs>Zf!t1HT*Y4Ee8j%uDpQO@G6iUA7U>ogo?|JWtNhbTNYH;7~j%J6Fq(R&GMeS#RP zuXb1Cs!s6qP#kTR&ntX zX`WjjHgCS(_V^x^@hR>8gzy9SPJFE~8p9L2qLhvN8)?CcAws}re*LZCEqk_t~S7GJ0{uQEHY zpP~}(b3TfUxr`YjEF?VMDlzs-!qA$eUIfinE-^M5d_=_}$-{23HRW|FYVe=rw4MHQ zH=*bvB4{HnB@tUcpfYsKzk~&6;%D}4fwEVD3yuoPPcrHqRyUNz^PN9V3xL1!S|=2*Bc*(roz_B!u1Y)Z)EFo;hfzhP7jy7M6HgVW?hrw*$7}$q*o_Oo*050 zYqlDOa+y_>W7*HGfSxv4Q*Xoq(+SrrZZuxL7iT+ko ziblADv-^Sv9!q*mOHX@?OY$XWjAl1a1+RUH_ zaS28m5IbbyV%9f+jDvo+Q5_aJ6ArasJ;91SO;GTQ}ufD%QH$e@Q>~R!@eWv5NEcnN5P*BX{XHhHaO^xV&0l1DIDC`7C_0 zqE9h3F)8Z7Of!#4h)IJ8)QPA!)S#1^EaBTYNjo0-{BDgp! zD#=eh?=0C*Pj<%=S|9n<@YXA~5fzF@>$Y8iL}~;uN&F_WJcA6|yu;IFAw;!>;+G6? zJHFJ%8g@Dg{bm5Sd@Y=$@3nZtF=vPq!=jJ{UD?hM3ziP-NCw6)!)W<{+ti4Xb~{01 z#+la5egBisZ7gKKo}HYn{)`qE+Z9iaF5+tEHixeAspVNEr~sULUbRkhUL?5*3dBt{f-1V@| z4F3Y$kciYWx}U?6$rNo@U?O3F40%ybjoUPZmo91@pk&%V<6XD$09}*HHc-TK} zf1#2MI-Vq=MJMLZUG4I+2H7sJoi?8F*vixQ@kGeTGjzSqSsj$P?|0?;iAD|3RfJQr zIa)lH)Evfaa{;+)^fhtr<9-wOi%$`2>^aw|FBCgxu;dr*OjseBwv*ZJXzm@B$=i2W z@C3!a_tYUrf#YPjKVi{rb{|fT3LgzHi!ml3ezvknkX3!gAZdoX#|#gI%7@-ZMzC{5 z42KLgTCFRxgkKmpps;xDXs7Q12FuofHWbe=>4v$FX(QddXxi`LY~SX>41LAc&MuVC zK=UNetx*$Q=2^|Qk?68Jo&57B@_NxL7F|^|Il=nu<=$eN7u*)SH)%0{PL4o~VoxnO z%&O)k7?n;W&=F-X)0*;8Vt8SHXH^COVrd+j#O4&IuuD< zCCS>~%th|>k$WbcRIy);jb`p9_x<8Y#2R@nB@hE&ghx_9_LgHKoTwW1W@CpYN`m-% zlsuOwrUYaS<424q#fRHtpA&5+o}I39|4{p!CbjW4@-W{SO#OO$f2_O2e;-|>i3f9n zYUoB7>bydNC~KocHS%o5-qNfT&iF!EdkA1p!8_Qf-keN0p+*@I5YmBY01L?8>U&;?V9d^r`~qv5^4l#_xqQ`xj)6Z-gwRbr19utKslx*& zmIxtr2j%4z@~RbN4eA!<6Ymp)=zDe97x<4(ZplpC$4{vhK%0vekS6HvOk#YL&B@0*WqJFh{M8mu}xI;1m` zF9ldU_enkvKT8%n6~WsGH74ittCjY=TVCG2B^?^aKI-RAup-2n$;}t ziI!qs60QZ&NFhVX@VVmJ8PkAu&PuD{$q|iV?qVIM-dKs}eype2?)i|_<#(zzBU$!3 zvVp1$=abmRJVhIMm=T6DJ7=W|E~7M(Ds~f`CG1|YzKD_}kbX>cblq6DY?{JC=f$`e z64?*<4jS1<5fqIe;gLh>n`*(Up|&?#9UyYL~G+@ihUM)k71e-Q^&{R z^D=m+VMli4>%rgjgAO_y%{A{jR$MAKVLD&3`RQJ~J~hbht?|iuiW6}~Zs|J2yPw$c0iw!E4AIR_`sF#q_qFkG2dJ;Ps z!6U0zW5ls5TCeDOi+$k1?JkOEt7yzs{tW4->UmM0&U>au`gKuL)@$UrSd)ST^KX3` z)e9r$-1`ptJ2uaLIitZK)l2oumZ)o7*x}WP&DTZQv9R*$X4~Hm$iCwL<@)(soP8tdfc}G5{=-Gd0WSjdD`B3OknC-+ zxomJ$yq9~}M?%5N$+@w%SDz7vn<24mV^%?{vSt$=*=7>^=ih|uvjzJH@*}n_FNm`@ zKWukgITtK;(dmvm)>KvhV)VK_*Q{{3BAc^C>ga!>)OLpCp1;OrzNJPT8dkhR9S zF>{4eUf|%93vNHwK*EQj<*sQhLL^R7zWw}!|App+z1Op7CHgn7QqRgCsLD6+ zvhK_#66zDP8V5w$c%DpTgQvG2LZ_w}lBV5^f_vhVsinhhIDp9$Ey5Zib_Fvh^Xw5` zhZYHbXorP*b)vl4rCHJHn)>-gr5OhEJ?mJEB0|96FErc!S63~rKW$E%qyBF~wvW6c z1$|3GGwkJicn#R9&segLip^FJ20WvlR~_D{-9u{4ku<$ut&koV9vv4WP%>ghhGlrnwo3`PN%2yV7r|I6_IAZ3ffHAvRtP&l1%eX0G%_eDo^QNziY^1jjuSDliEIcaRTwM~pev3J z^f0vaSfg?A`AwqSWkKEEo|@g}<$m7NmCEuvmMX^#hGOR3H*|fe0*4p3P$B%N4XA@a z94FER)f_^8a@kugFj4r*m%k|gy)16DEU#6(lB$3oxF=NB^~TMqh#{lYPg7AJN?7_M)QT6*p!V}DSf;S{u) zNpMk=(6S?epKn5u)S$h+R#X#|RJ5<}KkZrDQ*e^vLX}kzDlsV@cs^de5r1m@`K}iv zBv;vwgoMzhuWW2=C{9f?z)f=2>kld6Bsxw{!w3lWLEEACWqjnnBL#i-<=X@_B>lEu+vyyrX9>zJgJyWMkOYd|g8D^e{zvD&cP^szO&oEpllaxiU|`I@o}Q^T!*B@BIz zD^OLt^-ap_iTr~#V_ZX93O@^LO_aMg{FMUWpa4bFRk0YnZ1__n4^_7tQcG)ZCq&>g zOw6urPEOm%wnL@4bnBuP*8pxN+-iphSvFo*T-m5}$xVBc&(_aF-O?s}PRS~BH+iwU zs;6BhT0UVn$9MUG-ZYaZbc13SCD!v2DTNFq{pv$@PggFyj~kG)7h878$d*Flv^68v zCg2QgiWx)UHzlby_oAil&ad8hjSjY9tmvFSkrN|Y?(50gex(oAU#+wi5p6*aKUhb*GfSpDF};dbvG_a#5oB<0%1y;I&Y z$narcL^9(MUsi$Pc6+OD0xtUczk*Nj*bfuDoX4oD{W4LsGo^E_bb^flkzw7&sKR3D ztoNh0-&ru5!506TyZgVQQx>u8VV~u@I4i%fuosLx=}zqZ){FmoitQh0L`%!%hP=O$ zlT8-O_u-E4zSlzo1dvbDnB@msXFXgqQQFclmU z!0d++nRN26i%#RZn&i8Bp4OQ3B62%14fx@M`s>d3_9Z|ip}F}lRt*YLviNZ6Sk(pF zXn1_QcCl8yw;KhMRS5=UF?u9J2#E=T zq2?xT^t$I_`~87F-sq!l0wgP|VPb zPoq>;P)A*T_1<%V(cO@#^kOOrC_XY4BrUi+Dtw9C#8q|PZZ_i^DJ$z867`6q!L%&%j z`1Dn}Q|??9D?WABs`lrV-?EH*{;b>Ka%@abUg|{q6qk~|{byDs_;+y&=dhs*VKK2q ze8TgWv@>B?k!?VwIi2*sDqsEH7h%HPR9WK0I{3$?K}I2?(p|ftgw0XS)Lvh4$c!68 zmHW=aRxiTv$r5FB+zIqUq~F+6m&OZdh~M(yl|_O0YobSA6IB0_88#TmAMx7vh1u{Axydh1iT(D24 zhS31<8u^M}y`ZF|qvxhg!O76T7rhhHa5at9;`S5BsapJ1;%@V$ z!xn87(zm@Q;FC{|RUrrYG}8pUz-JpL8DTnK!PfyX$w?ah0`DWsMaYq|?v6f5Y zo?EP0dMrw{>+0>M!Eu!rPQVsFvG~Ir)f?i!zy77vC6TSWQKnac5_JLGq^PpyOFI zlc@o%u|0~zf*dtG2M=Lc?pR{n0*~VJqr%ZED=Mh0%_W_VI8yAC`BuZes^U+N zZVB194Kt+9806{U|ffFKV|w)XFG!$`hvIe|8mC`Ee-YMs4=y{A?kMDsWZFeuwQGJHcXUEY<(v0tCl4a@DFGVDsPk<7p$CINQl| zn9iK@zc^mCai}Uc`?71nequwj4i8ItZXO!v1LAW&Ti)2ONFiMyv(e5Fh|4`_JLhb_ zzFJhr28=!KI3~b<_R};f z-vDX~4v}2;{yyZ~%S1fx1$gWr?nqO(||+I=ZU`#B{5qX*Q2e0=VoSCo6~ zVU4Q92^1EAi=81Zc~D=2tKJW67c)lJ{d#c$9yMqp+O}FL!Sjzwym8y^$qjK8$Dg<& zb4kv+lcMP+1Kc~3=ruq|1q*1Li`Hq-rlqpbZp-kJaZ*5wh1IUK%%+Y6cMKp+=17#?!L2oR^oi*qiI4Z2fFUWkDL2}vdYDtDN%{ZiDs@w$9 znIxiir6}xzMhP{xI7Jh_L!Cwcf<9*MQM%)^;R;N2)-QFfc{g1eewdQe7(WN5f5^o! z8gpC~sWsht$;y^3tlV8EX`+xAUZYMMML?dfW7yal)1;KK&w)ZG5d56*Bb&ESN+U*u zEIlXNJI@M|>h`d*7!C5hoFlomNu>XiWfi6X5FC!O?7V%%$k)mcLKIy%v+(gG#JXgk zNY7YsSlQVr$8|?tJE%X`?1SQ?jHaJ!PJ_O&pd$B7ljp$Xk47B8|MGe7m(qQxwC&)) zz(PHCj>u`Qs^1~?x?r9mUGGY1ix!8&Y-0fMr-;}WpLjL0c2xwXV*b>n!!b^TZ5C!< z`#W=ge%6=0s5up7#8-*O<}n@nG|ypwSlix~jD}^Rz(M;noFm8hceahk#Dtwh>SOyW z9t#YBgdP$Ecu;uQ8od9Qgy(XNy@Vk!VF>0z5gd-??L7Q-yWsT^d{9@|uBDLp{X-3z zth*A6h1ErzX%9UM*Z$tg#LTF`$U>{yfj}=km*Zv&M}(o9cx+kvf&=+`e_u3LTt%%b zy^U^?D#K4W~%3m8V)R7D@AGEnY1v6fo)4uBprk%^D zp$x5o!p=Px^#=4WFVCZzSzAT*X1k6(PZVH;b~g?+!AZg~7s?ND=p@0)f@414ks6ya zs3H?ipZ;i3OGSRR#w*FHw(PmLEd@seWPs7xJ)&@d^dT1w$2zIqmvEWgLEL0Ke5G=(1TxZWrc~R0^!L($EX8&_wOD4 ztWWv+@?sqQYryWsYG~&}cKQ-f%(ml^hyi<4%C~dx6WsfP#d+aUNb^Z*kArs<0xhxC zU6U7X=-U@Cky7|q)EC-EMI>jo@WkH7M0n^|pH|XL&b_k|$LyIJ`ZN(^aLLG3Ja4B% z>VTkG=zd<#0So{;*lqQ`_4Gp;RO^nvsS5N&+4reW4ex{vM0q=ho+pm!cNfJPu1;F6 z=CbMaoth76*Kve6)(0@fb&tf3n2rT{c&>U#7f~IpAbG!AI9yJ{J|)(sQ= z1IIY<6l0LG-Y}26tMF8eT4;}HLxge^)q`2)?>6E=rGw2@&HL{UH`xzqDdJ*^cCk32 z89RA+XZuuEi5a3t|Dkm0`m$DSc)zR8*~SxdaQ;fJ;5s9e1A8c+(Anw?4t}ZH!nZ>j z$HPpQc;=H)>HWMBkSs_Cszzk~I9ECd>>!k1eg#Vdw!Nf56 z_EI&t!RJt!iAC|lNn5TU>y1Icu_@r6d~MA>yZV$4NXhf!e|lXzrDuqLZROqfOe4*(u?3{ zhJAHzCn(6i?wMeAOTJSX(b7`a*++~4J*d8fcYzc8Vr5(Et*?TW_#cJc*fi`O&?H{( zvvetR{LX7Jx$UX`tg9pieb>1;I?O^4N||=|0-jk$BjEpE*<9xq+d_XW6OhDW-J_3pQP%tPg`kRew)9<-~Lzrl0up=PrA&* zvBle&_JXgt6dYYzm;KcXi46@zZU;}+nGkJ9XB+u7MMrc6b53%ArwI4#9AtBO znxguFfzVB~&!4gG%?N{6yv89sC z@qen_WLLBw|8MhQTyd;=@);bMgk2K7e63LP#j{Ew4>-le@~=x_9nT`@SVd!=L*G?F ztp!J#g<~Lcf|ie(;n+;~$*z596lebaQ!rLrTM zwk)I3grUCDRB+z6`NG04J>ZyL4#I&!?A6GdI%fRQ%=$#CvqVo5WN9ej^t`JFGA#R| z{F;)OIs=Ln{?y|gR02>|6%r^bRa%Lj;5wN1oJ=+eh*)qGQM7l*LKme?KR@MFq;kCq zVtSp_pNhJMA||(dhwk6l?xiJb7j*2!JnQPisB7<&df9|I_}046!K$Db+IN7*B;-Ur zyZbm$0cBr|jYe2$H~i{N=6~S9p&kswAHR0|{Na(_)Sl<|8jLrbI4CLN@0=~ZZs67>j3Y$}--1TC+=pD+TIPE-ixoR1Mu2WHR2w zjQG+y%lHDC(U_LOdql8`?qt&EaZ?b1S%d6|0?22B*}Lq%AtKS?mZ16U4Yff^@G{47 zFhhdd!DAjyq+}{kSbE$ClBCmYj@e;7^TftZ$$lrt7m&0%uOkWSGa45unQV-_&TR-F zYYfeZn{g%X$&bBva%Xpg3wyeG2-3M6|A%E+-TOaoRiQ^;kX}`{?zU-6Fs0z|?l+4j z?;B1%>IF6uwv>QHsD!01UF{1J!9<1s1MnrmIl*-CYRn0NUG^Ez` zoXpc#OvE0KnnbHrzlI;Grtkf?$MtGxorvE(8rb7rNM(6LRpIlc#WexR!z?_ivnd)QyJ@}z`jEh8L0AAKo__G5VF$kcF@D{1{pQohP;AfYt=W8How6E~S5 zq(|01VS8zNU}0DwZCGR-u^^l2DWYUMg#4aCx2kj`=}iQYY&#iX(`Uv z{QP_}yZ<1%FQme3pZ%MkPFwx`$-mrp`0;{r0e`W!|2g_8^E&>`VK<9W{j1Bu9|xE8 zoB!a#r~M-O55D}c3g&-s>bG7${STVEOVa;wIfH@|IM4CZi0R_HYMHg;vSdRGl9wO$ zI7X%w_~riaux?y_S`o&v*mJ+%pukgGAw4pbNP5^W_dMwtJ+RjpZgk;0>run2;4x3V z8DBm=^7cI5p{Kjl6dz?O}8e`%f{d)`HRI*}+F?$YfTcX(;BXTA3Yh6izlNz$WH z-YZ~6V)kS9taEl_U$~9UeNy}^!QXwUP}AR$l>q5lLpHEn;8>8>)n_2F79wr>U&Os- zRGV$L?^{X>rA1nxxV2Cy?rtqDR;)may9IZ*K(PYF9RjqtySqD~ltOTK0s#U92!xYo z$@|FK>zsA=*kkN5@*!U`a$j=KYhLp==YJMoj5Ub-Il0cQ%*UBnHs90feU{g5w#Y-U zP*;?5pFmu!0i>iW(}QkyYYxxMcWp1@<_F!8=%BB43{kYI6i+g$sS+O)!X!J_DvjrL}n{{nQd zzHI<=jBPn0@3=O@8UB4b(Ad$td_n13JdiP3FqmZm*=O_JE)tj{!5lY-`fu^$|HdC{ z|I283=!q|tWr6&%{)XcF*o@=|c4Jego^Sknk1;jrVtSy&RD$HDdi~Y~1^%gSkz#Rg ze(x7lQ~pV zRuwoE&b?g;4T;E(Sosl^JEl&dC7&QfgWMr$*6SB@#*XTZS}GU>zE`7*hO6xt%ciN9 zH5%}}%DlMaTiA*F^y*^qUm}0JGJ%zf;G=>wQqFb1V|$XqU`wHfjHMJQ-ldYg6XMg= zl&p;kDnTqGf=0CtAZM7eeqOcBy*7EXO?IQJ>+v#Hiq+W@tdRDXE>UTHJ@t|DZsbM; zQ|>4(Yz4`66H~!=GE`O}tW5_Uc5I4HCPMeiP-n`@pu1N)VU_BTOmIn9_FA}7v!{c1 zrzJr@fnT%_yq#<|xD^av&VZ?DEMSITm9@Z(-Psg-)`raocif#$?tGFWoHQr0?cDx+ zgUlG2kCP5+yjkavA71$YT3&Fk8F#-^sTE&{3XGaQe^%*#w?k!5lXQB9m|B>WGoO2V zv0cFPtE5TO3|u`gbXmH@cKeG3y$#77fWNzwG(U^%T9$A0T*;tTZL$H z98qHrB0(7vHJXdPh3Nf?Z#=z9F_sA3`9Dr^=nIPmT(flf~O{_d&=r@-W0 zzT{e*39ZG5x4Zqk%GUCXje$_w-yYp!Jha?G+MbfvkBGn?*NDO><~RH(W-z#26KC@C zilSphr6Kz%j(Ppj4))45N2THOi|A{_5n3rd3M(}lmTi2yJLZ)#CX`DFdwJDpG*u%cUHEd~Z903GV|=4O`y7PNvSIp9 z%Mq96p1|v?&p=vkbbcyLJU&X#`YKDPlE}t00A)lgPR;&XQ&UYtXC(h<(j@@IhP=5O zhugG~X;8xMCLB&I4uxETL9CufoY|%!L}d-_zB_k*L6Z|x;(L)=^(Ddik=t=;@$Yjc z%!*pm6t==VVeJWLTefQ`>H}@Hr(Kl$Kh~he%U(X5&zDR)Sp^Qm`RT1N7LIfjRP7n9 znB^I++nYd)?v??|7mU^{%Iep~%+INb#@~#tE=wX^Xhz(=U14MQ$J}9~MmIKYqNl+f zz#EcEO~bv^w3bZCtASqPZ|s8f9(GAlYV#cMthUVv_tbouv7y3 zTZhTz`Dke@Ml6~YA>{1+wJd+ACqbw&@1kn=k0pmwB$0Sxo1-A5L){Atk;s%hnfvCY zfkaH{154L}i=H4NJki;toi0WFvGud1-!UDe;J;dHo(+4UW4HXu%^ysX1q4qe={>lxC%hH&g2sKfwiPUa3N6VyLVN`-FX%TBT zWybZYs^~Tvi>`{jvXeb}RDe=O+uFFgfQM;u(Yl$WMPv@-=DjLw(Gw?Qn2~bs(KNyM z>*{bVQ2Jm_ea74|Smkm!i=|@t#W+vP?{00 zsaV>28g8+A;hnRwXi)_;x|yV61FVQ5tsZ4<4i)Qo_ufNgAXyw}9_~&0=xIJr5n+6! zRE}R#(o%hTKh;9y%FDp=D7*cy_G)11@C^%Q3%pyBJ{Qa7BC5 zVXPQzd9LcUYPbC1t5_d`#MTU1bB~dPddo*xkJs}sWghdlyMbRv8A`$T@Vn01dEgB@H^LN^SD@^W82=GUeb77yx1Nj4^S$CQ^7h>jL6Z9z0U3M%7jY>&Y(sS?fR0ryM0O!71r3)+1+TT zk!BWVD~#;!CWh0+p3Jiov|M@1j4(@o@IfQ~PJ=(i;yh97dt)N4Kb&jEQ{|W671ZIMG!Mrhdyn~q4#(1+1>5PM}aBM89>3@&Um zTjR0q(Fb@P6mr&fdY`Fv+4BgBjXzOIj5WE|Zi7pZq_mHvsj{kMSdr(Y-4pmRAd+4n zN`tm_UD{27cyn=%ZbjCDE4L_`{Xt#!1;+&9<6pqYLC3OrqDc5d{2G`)=up@m*S0Ln zrR^#=8~zq8faL_0H=SFGfu|u!;)~j)w-~QTmIp6#hAtmZ({BG{*Q;Golw(-FS49rp z3$Nf<{jr+0a~b5bvtcVT#A)Cg1b<5g-7_A-Dm0FbCG(mbNYDT4YqqV=^pbmc{`%>G z`k376FDFp8-;T6( zWz8t^w-y2!Fhl7tI2Ur%J_f$we$%E1Kk9<3q0u()I_xK0gvqrQaXTd{Lbo`RC&p8d zY3iU?)rG(gF=mXHL_6#h%G8C%IpuMO#w`mzO@T`Rg|8S7!zZtLK940U2~Uz@%wHV? zB+XZLt4NKCqD~R`>g8wXdtF@9m%%JOl?a@MY4DFme4cUny9DQ}wz%qVyy|d@#{`;TrdurrDV!xS$uphBTOBqF=x-~Ue@Q2Uoy26^jyO2~B4pH&;TaQP%lp(%{W6CvLfXf~ zt%K^Jf;JVcwl=xd5GcyYMZHCfAt z<#0!_Ipv^I22OeFtjuvTDPotDvfI+XKsw44+!%oDJQiDkzf=&$W;NK!U(sLJ=u|d} zak;}0G{`Ff60zQ5&A$6&SjL1)R^YW|$2Qurzm@n8tCts8nMOq?OrfT&gg3PU|HQZ> zXND?3&UrzsAFGS$aVCI>LOC64+G6-A3Av~qvKgiih0#XOD+n1gmqyT!3hT0)gNkTH zhZN&6hbPG!7}IQMw`y%1prv?~1Tk-2nbpY1sUkunu{wlS5-ko5UXkqBT)uQ@zhuEN z^aVXHR;I#%&mJGc%YaoWp)O3q?sbV9fDA@0sauj%_doW6B4IpHjvJeZs7O7aNHJS9 zHL&00;Ve9Qy+^Sx*B-C5DP;u7iVY-fx4TWa8w*9&5r0KhK<5dNv zSJ6+-l#5mR&U~ZlsMhjc7WZ(zRDJ#-Pr*_c&rmiqp+i(`TbQi$7 z@?pyEkF_3k%U8D4@}Ny)1Yl)k`vvOvqf>xGDG~4l+M|MNcfC(1%pV1C)UGQM=e!Uv4$qpqNw@@7|1 z0(Hi0mc@E%%rD%lcY_ZquJI%6{-;;_n)}{wYI~hH>*4ObGyc_sWew9sGqNfcqbUf(e611>^ z)$aUK-JG#{eVFv}Z2f^^FXM0T;B3D;JeDtwl{oI2*!m<4Lb#w|jCfqMzj~if{&C*Z zt6HJT9)wA0X{4^9>~*Y5 ztjL=tWe){rirPskTLFjXCEA)D5H1HEM|_B?cUfE&UTAJW(kLcbKw3uxzZZDuSIG{( zQ;kbohqkMS3?^2uyoLMqW{^7%=4U=N62NG{RJ7|>f)?JcpcDd`z?nzbORGQDq|$LuZ1#d|vBu5u<% zI_EWcFhKLYx%i-j)YwAz?`GG6TSF6%e<@D3)#3w=O+*1%tnt*s6s4D(ZIir$N}9K& zpzw)s#!ylZPvin5j1x18iN|LMa$ow@H+XL&0L6^F&9RoGjl)|@2TKGyQf(CEW zG^N8{Jj66!rL~pb+ZVS@xH(UGmMNib(N;_yRP14T7(RVfvsYZ+s>fu0qE?f1IYOLD zzToK$cwvAE{ULI3v%5oOmmP?=_s;E;hO9viS6e?DYx*iIs4z9ZKMq+h{z=JvDV6!G zw*0RfuW5Lr!jYY6Bxe+wK5Xj=RcDLN{$Oi4Ikz|#OMNv0HCITT`yB4@*~j)8d0my` zrp~M8V5^Zsz3!Z~e?cTUt>^b`ZP@@T*AB-Fz^$$gClZhTE;(C@H=QK4xPzY{t?-t6VLK|Gl~$XV{~CB_Jn{>j7E z$FQB@)|$#RZl7D8#%*6Ev!WwBS!H7k&G_A?SZtLOEqBiPfpr`fgcVX`if$6F1>iVHf!x0HDR0^Mo5y zkcq2==eX|;g_xUtdWARvsd;uy8Sz4xRpe!_H*WZ034aSt@=R3_xr7!YjRXt5Ut*-u z`w>mt%{>uo;=#UqFdWG%kz}?~FG<_%8u}!TX;kRR(c19g!#-E@oebB~dEUjD51M>r zN(R*-@qML{B1AlLQIv3nH4BRL9AuUVsWYVg$=8^-_w4EgCJEEP5r7l-qcmDU3yX?C zLH6u1%10-??BjLPfH=mo*@5}rrPu+y+!?NSW^P{+X(gm%9;PyvA)x@R=MDklQsZm% zzf}a*IP@k^;#+5P0c$VrP@M4T!I=bF$z?h|$3o)R1irVrUkb05vLfT?7LU1s5ZaUc zu;e&z-f%PAiIlYVz%W`ZS=ADcFOid7l0be1b^6=tFZ!-AOCth$N^^U=Jf#*`3t7Iw z=EJ7ZQS{;Y1d_uuXG4uznT5jIeur;klzdEFJ9^xxJYj6NlP>kEahxY(4PR3AC{Krt z3M$MG2x+kd)&>YXZyk}}IAj+MJ7RtbJfXxy++cfI049q%MX^vh*jG1TsYR?=4bgns zL|%gqk-widEhv*xze3N$Y((5eNbB%9nUFe(%SvtJEcZ`&b<-#Me(%1`GIFR;g%_up z<$DX=!5vO>iGnmCqfzI{opR$jr3p_zxf!uW_Ub$qi2G# zlGk^QPBwkU35XUHX_NegRt`qS)EfeEHFU^-};aAfbR2E{=2#EI{lOdIGj($6Y^R)*| z-EVxPtlIhyuS5xPVhEqlp_1t2A)iVciIBZZe1+gsRbP-<`5M(rEo)+(oa~eAMApZt zCsjeuBkIOL^?h?0TT5aOHtU*o8<6V;Ssnywm(CjSc&k{G3ey^{$PhkhT#9Lx6!~&U zmx2$JGl!*$ek=<00Q!A3=d@)UN539flIwWuzc^lk{XnLWt()paB+#sA2QKCY@g=0fif(e< z=2QWoqWD6zGC8r+gvsOX4Lh!@WDmxl;S6MpOX<$pwAB?xpSb_5^HDxMC0KX5Su4~^ zU+;4){8(j6{m@jBbbk}7E4h}GAifd2R&Ap)22PpoA2z%py6CDEt7gW|HeUTORN$$7 zad}ACJjM`9)5UiWx9#enN%GFSlc<14Yoxm6hfM{6>rPou^vTSF)!l!P%Ib-sglK7) zg0YdimMwj0xyV_cy7-I0>T1i>taKtO3DtLys)ty!B&o_w1^n-Uh6MVVhjn~2AH6Q< zN20UWef60VCPp8!YAMVOvs~j67*t}%EQCx2AAh8!jv_@ja1vjZ^bQAiA8@)-9F^oj zZL#}at;WFD+|vH|N86V7SHZU}^B;931Kmo8&M9W;Q)c0(t)B?=5T*1`W06v2=UuH= zhwn%VdP5ctd$zc^%bo^xbLi}|Fr&9wyDW?4LH4HY+`BqMp^>#Iya&CE%8l4DOy0IK zSi6Uo1s6S5(bTiO8L;F@9#>XyiZt?S17x%NQi!-`pl{7}ol6O~_az@$UTb+^Bp|vP zHg0%2zx=_QNw{roSw}fJE2o;43QfTqDN}m8@bP{vEO&(@Aia=Dnw~p~I}bL58VC3Ht7UCPhGaP?>iI0~PnV3x(b{jzk(H~qe1ir|8JLv3gE8^;1`Z3x+7M%-|JDs^R^`V8*eY^y-3u+6xD4}NUSJ+rzC#mLLbF`e*QJR zgfG(EVA(JF=m3BH?{~ilRW&se%)0t|jGw=M^X2}HxjsY7S-EUb_WWIIZKy2g|0aX} z-$UZUfU^Z9Nw3m|DywOe$1cC*PJJAM!ydUePA+~_nC^c95>=Nd*W4j$* zNMmF*!gZeCxwhkw^Rh)9Ecf8Bx_PX)z$*3=zO6JMOv1Y zZb~U(ziZep0w0$Ai9ntEamSC(t9RD`UY2jg7>#r>>-5DY^0#S1sU-*riR3>FGl)*f z>bvzays#_VALDR}lrk^2*-^cg|N`?`fpQ z1xko4P!v^Mel?XgS#UVcr*PoNpz(>& zFReX}^6wpLAhYB!MX**neRqH3_GxEk=1-_cZYp!%klqVVbSD43)O?%_e%ocIXM0Xe zb<85Q6LVh}(!ncpuD|Q~P%f9~L+q*4d~1Gnb;+?7=`1-*fSbA|gmuu@!SrZfprH$sSz#~ z2ub+qvbFuFT*te?7~fz2MzcA^RHbTqR}1W`v(N$i)0F1UE}z48be*Vq`Sz5dJpCGS zW#h2q?X+s9uKJ$`wi(sGjC-G)pPygjjl$9s*!JXSZ6Ul2R6^%^zu)-=xT9Vci#&ZZ z(D#oO!&<(nx78)=>MMXR`bSSInUgQQpy2$?1BIL7^PNn>fWt8GnKF}9mRFV(&GiWB zTo$F5k^LXQ8^P|6%z$`p9In*De&T>XH}Y=EzoIWr2&z0>Q*#uMO~gX=;Mp3a28T-n z`opM%{o+dYtxIh7Ev;enP7Ku&)ZeXEf?eT}ef;reD8t%s4(UHhRYo~V_WO=bStk9ZFj_o_$YQHNZ zSLKkb(w?@+K)co_S+|0}&WtZFPcMX$G>o3dF1BHSF%-}Q&K%h@$dMbS7WMGne)Qdvm zv_Y(&R-)yb*_1+edrWmRly(l{et>ibMA2UL@%WilHifAi&X4pELxNc`6?I+AKFzxZo!(M%xM3zXZe- zp#>I~E%%>jcY0C3ihMl$m|>Oo-I+(D8gLJHkicI~+t2ZaoY?{kftt&Pe>|Ga{6I}C ziK4yaj4?#AYCteL5FVY|>$^Lr)g?rw{`$J%n>o+R3_8B%czK!S_Yv*5ncxxpq=n`d z=7wDFe;E0o(EMAxWS#grH`M zQbnVr4+Lx6t+>6kG2++7gsL8)9~Cks4e()&s(%g=as{<8J9LQl^{emT*w4y+F^-Q* z2?}Gx8bB7Y#x3SN9Lv^xC|u8 zPD&>&WV){`AjQ6F!9Lg38{%Z4+|EE%eOvo-|(*h+2HBaTVHFMNHj#QbLXX8zQU25 zQ}0i7DPLd@y>$Mjlpp3`eASwo zq}$+plSF$w5`KY$JW|vhROj>!{cL5L63*|0Bz$y9_{eNqy-g@B+LWotbYDHXJj>pj zUCxn=%z%~#bHHA7|Md+q5Vh4RkM3#4rfai)(Z6xgp8%Q#hY7|4R5TSUB1O+p^o<5p zAU_zi@P%hQeWCRp9_FP(MW|rRm$O~*iqZ%LYNB9A4eZaKm$bYv6nQgm#5nm7rP2F+ z1%C#ah8XPWj?Zh4Co4}w%C(!&iga&9I5Kl{I)dKzs$Ac^VgoDnSuuWWgL_FpkalQA zI;V3*(bAX^Ob57z)aH-EMkD%#l!si^yRTP9*V4OfI;Lq#a{Zt#lUmc^pF49Fy+l3N zMq6J;M24z1C>3>PhF&v@AVaG`G`>za4|rN^zAk6&c%1J!@UoA!#;R16MY>hAKLtd{Rxr7W+Uel zNYV(yOBj_Us{x zx+4UgUSu|H99O4vCyP&@I;(?@+f`mJ&tP{o>*@Z&PXw!8h!S4le?Hu9U0Hc|>sd-o zX&-;z;JR?yBB<|1EFSM(q>(Q2a#YyRV$y9>_NGyD;wfm=2XCs2MzqL;&p&`npOm{z zS-N28{|97N?NOti4uAV+v^s8BQNn3r%mRK}D#z7LQ*1gB$yr_L4V6gi<)igV(~P+= z!jS24o?$y(>|q>yGj?qrUw{5$rZAOkR*QP@YR<#J46%12#UAj~Z^;i5999dK;|G8d zvQiej8RiOV1GKMCBAJ;Z*Z{VO%r)2P)U5tpA<ot; zocme#3K%_2F?@=bQMoOT^OO|Ni1Ocna=;`_L2G;1URjnc1DolNen_0r($U7vT+0DX z(D9qtZg~ka-6@chSTTA|Joay8w~13GD4Q>;$f?Nsu*T|?#IC!f)WkRlx0m{J7o6!4 zL*0S9Y6s|cM~D)^l7G4)JPBAG7GM?)fG}4TPL_8H0R>}3d1w)vsO(QHT!O2RIU$pk znbdIY&N022vf*f`k~PBV^nAs+1*x1G!>hO@yR+Mf(aQkXBa9!IBNp&?!jY~Rat3D> zDmyDJQ|4|!o%Ow-;{PPX4}9j7!TV(eEv%>P7A8F58^q*C2j)WYUlVGb#jiS;eJ6u) zsW@oE_uyI`huj^f^^!(*T@P$SOD?JrJ+AIt9e5_L`isQ~+B99NXjVk_$JeJMA#qf6 zSEmKPvE&2I6ua<4D%!rSIqLD_fBuK_#gm{&$1TV9n(nFo2SK@jBuW9ro4q{GGRrrq zPamxo?2C+o!HKiyqjFiYYlA+c?nzFUws+g zP}`K3D!04@XIB(tMS~^4pY)I9Xa~uP#YRpprfrp6R?|Fa@75`w2sJoxVn=7?JLR|~ zGHsddP2I(HdU@vn8*%EXcanh1DhF)9LOKCRf2Q|cT=M|U4vNUWP44p@qsBE}RajAn zmI@h{B78*mQ?lRmD04}!$kbm_N_o=c?;9p;zHxR9&6D4rm%W0{Q?gon`g!8!C=h`K zst;1qsJo@xs+C^-f&(56e`*Y9w6AYUb!ORruJ7tE4DQN69!M z?7)0zgQ8>En>40l zP#2b{29adtEGg~VZfR17N%BCx;S$JRv9@$@^~2 zIlxbL(73hIWM@t4=``iPS%4O4&>u{<$$|nhN9AeJUuKvB0M2Xm26@c(&KYxLi78FA zurs77Kh|Vp+WU#ol7oE0m{MlZF?vr_u{WHEFNVl=U|&dAT>oq~)`IL(O+9?$e!KcU z(dxhGvicKmS#m4k9)-J)y%C25jw{LLX8pokAe>E(&d9~Bh1qGRK!O#o1o1%%d!vS8 z=>=J&&?FhTbOV3S$EpPT%JcwT*pjkA9XmeMQyo)wSB*~ zKoSEjQHj}&D!s_i_%FkxxQxaPtHS90Pf%Oy3;Rh)T*$L;WNR2{#jvlolED`Fb%h)!_*O#k*DOH>Y2#@Y=Hp)IU2hKVcrKz_9dx|}Xh7DWdKeK99J6q9& zD`RRJz3`9}&o);u*us|N%y;|MZ9J)iqJdGhW0Jg#o^*36Tn3uiSGS7n*3fkuuPWll zn!Q0b)eb7f-)D|%FRk9)-)-@>GDP1yt$zP`g-#n|2v3&w0GtKpt}*b6-r}e6leYTL z>1Vo1Cn)pMXDG_D%>zuM=38McJ~IZD>26zb)yB(aD!p!rG&T&jL2Iv#wodP185LBT zC}k00W^}uR3C#&Fo9>ZCX9u!y2`K}x^5Bb-SvaUS_R#V1bAwP+LpY-lw9^ppE0JyWh!RPTD{7A*if^uH1e%q-W~J|BJYtHkI7Vtd;3HFB00eD^!ndX}{mHFHMFX>)zkTN*M#(U1qLDrF2f_oWPXVGGe zAP`SjUzy>Wj&h=O3a>!I-0^Io7M0|9lyTr6Sk&%b!W(xI^_V!jFXHWS--#3IzPZ{9 zxcv8Av~A2DIuN6TJi$yvECd9WqWc)Nu_CttWAiUKc2evmPpXG^nD{;+p6!Ud#5&b-sTZro&h{%iovdTDY1_{VBAQWe5cYY`~5$C zK7lK-VMlQ!B5?|U85(wj>>Sgi)m8Do@vM#s6wMC+O;UD_>1Z$T5H9kqRs{% zyHASq9AN|Mi=(pt(>np7PW=)av}ehhcF+w3MI*nqiv7mDktR63$_znc;d1v6lCJ@6 zZOZ?gAd|$z#Mygxc6Rsp`1zx*j@$a37}-CmeBCg{how+?}aQv{<_-1)<|4TPqS8!M*s;Y)cCpI?^t(=z{14lnq}N z&%x2{Zvr5EUHFq{M;@23&eDy2X%VGg9yiRulVV@0U?F&RYHgFj}?)K~eiH;Wv)oN6?o1M}8pr2p(rV56;eE1c7h7tS+grLic)7$mqoB6UxdId48#(lm3h;jNCyRUCm&5 zOhX5hP6IoRk;#;oz2xA21(D8jyh!x{L=N!K{J9^)CTaY0SPvJjVoFS3A|DS=ZBG4t zhN~qZT+G}TQ)@RM1gHVf zx9Jn0g5{*qFE?gl1%Z2~3Gs1C_WlxH!f6lImr`l5gO;9Cv6UOU22)tK%1wV1h>TD> z5y1s@nDID2c?~jruR7`bcxNji<9QeC8wrk}`UT2Lr*gk2!7GEtL@AoGm&*y6AU`^i zZ?t?P7j;9$qqgoy5tsJU&b;zu12XZ;XS|!|nAF|~-ov2CHa~)Js&U#!3Z(Ci&ULU* zrWo^n)F0`NAbXHKMJ8F@%wghp7pFo2`4Z;2R;|SLnkA>G=xa`n)Gx^_11nGY@w>|% zbS(}bQBa^R`a#N!z?_nHWa z-XO?9_lEl#-wUzdva%b}%GBO5h!}$$m*Z=d&|dwd#LUBhrUy4p5^Wp_$40c7N-3`; zTVmQ}S*>VO+ra+?&aLd4{nm=6_4#`7L{`|hCD3TLZ|`FDRkH77|TSd*hQ<94j7I1lTSC7vas2TAlcFuh|Kqx}sUujG zSNmtS;UC||WCZ#4OTG$j&zWTEkGFOTHnE!UOe7>jPb0qVaJpC}N`x(v4*(Dj5ckG`@IUSD_AG(Rt zbK6&-=VDPH+RN5wT~$M<+nRC})3kt+;U&-D?p?-zOwXo3(^VHFVK92faP`N!=h!5H zKblre!Q~Yv0Ba@ew%{wn8;GGk9dT;|nno(d1&Y4P4(Y$jd(~vz6w}c1f#bI;m)XR7 zAF4~<$IR&|@--`w^kQ#Re8fK|)w_-<23e3!$f# z?1JQ%*IH-CwPJO2G(=T*z>6bMk%|rFvm3-R{u|6)te-=|L=WTwaK_{rq~kv1$(aww z@6mOVFHF=rxVs~uUO;GvxP!$GNccc-<7BK>Jgd6QmK9qq&;*?Jfd0{ay040xR1|(N z)T9#O56YAK4-Qv$sBY=`N=r-arw=Pu$_=fS_!12Y%POKI67X7k-&%U&I&llIjFxT< z20xYhisa-9%-78_hTmw}VrnkBMIE(BxdShmWm#Ja%S9Uc^2J)Vj7eV2apTQ%m*ye_ zoDYwcC00C=3Z6OSFxF&WRYG4sGO1H)yzQqwLEQPrN6SNeZ55eg;E+2j{%0%!%7}c# zWmqG}PyPa6xygjq_)OspHxtiO^VP5^{+0udYFO3$Ooi>p6bBZJrkrb0vJ5 zFp(Yxsb&*QHkyiM)q(8UwGFIINSZsSJ~^uX4yZi{l{FRMOd98f&uEONxi+7Lbm74m?5Y(}sWb`;l#k)$&x(>nGEhyrtm-cZu1 z24fqO=a*ZFVs`;&6n9;x#ZS-d_yb3y=Yw-F>qqiWW~%JnFy^@5;$~(|F1b$YnXLe_ zT`nz{=*P)I$KV@wv`f-!3wKc-97 zRhs~lJ)e6g1yPxq{k_1O^e;U)PBC^?nvY%tr}AJ7i{0G9YF`LDUP^&-Od>NU5+uL% zp;}i?&&RWvE0rB*h;ELPlKQmU>nGh@^|7U;Rf!V=U8>n^ofG>PxObkVxA#$AJ|fhoP#+tCb!{UTW`x3#Xpj} z;kg!r&vK+TJUROA#S6BLM2_a1d>$|6Qy+x92MQLyWgatZ3D|t$G)dQ*MCT*K%`8k@ zw*1~^PgUY>my&}&nm(03+&{bcP)wNDu1zHl=fdabBD*gv&G*YqlvV%xk2k(F$hU0K z5a2kN(2!t)TykQ9Edl0XIzN}{Y_Wes|8GkYOqSvF(3f4lm?53`P2s`1eaA_)CC2KJ zb-{G%H4b{&h=|_|6zpiF5P$s=-MS@$>|B&JmZlVnPi;hT&sc<*JeD&$bje`8EmV1Z zl-aZYU}EhAARf8ZvMk+Stq&E`l9N`TjbM+j^Rn@BRmZ>)c#ecJd0JcHbc)aK0w$*- zrc1ux^G2|PsoIqzv!_+di>dNYMeWp)7 z9ut7&v@R=6hiCdW+`UY)qX>M)yeWAmltD7^%re^KWJ;I$wtoTSKxvSpxzvkpHN z%uNN20iEf0DuI1&K+-d_gP=*s#OC1MC%uUhQ<9jrODY>RSRVPzYSOMt$1+DA^g@O5@28voi zRPP6v63Ctf%X1T@SEr|-c%nIh2*$7ynd~j5X_!o1?Ie6+NhaMBI9_*R|9gkxjGSo_ zrmuB6+I9s-XcfI_@ z4ufQt4vWDX+*kgBd6{@@JNABnk$>%-TJ+w*3_8lg`ej*EoCN=d-cn;))|-Sh+Ju4f z811dWoOc^a_$wDj?=7v@GX$;ou9ppuJwx&M+XA8#Vm>-o`A4YTun3WsF|Jeu92Fe> zgk2q0ocbUpkFe~i?qXL2&fp0!PI|Tacpa|n-3=dKP74-|`)#ddb;&RBVRP>eUAGu% z-oBX;v%qHk&hNMuSy?S{C$15kAwNFa@3c-&t2;iy+JbddrZCY zm|0n!MRw+EBXKH8gjC--&sFinMH*`0%HLXk5|-g^T47RveZTD5A&xoa;dd5Z$=Jb3 zx3){UJd2bP32Ptua7{mP`ti&2ht%cgkF(oRve6J+U+bLk>-`Kp;rf`$4U?)xn)rKa zHmkFPt;1K#V%F{*gOHRAth_tBoZ^mnN{Ef;N#R5SK=UKDOIr4cFr@PO1B2BYzi%D> zjN-~somtNZsT%HfrAegIRb8Ww=0~ZPeFD@qS*LUMyYs`D&tX8HU(TMyy4Bsl1-*-xK55`y{R{=eF-Q3=K+5UQZtdTTQffy-#!`X*ZdRUda1UTQ-XkXd+??TE z*lGCd@DIyg{ArzpgK-$D{k=lGCDODptnBdx#K{)IJ@KW^gt6M_h0{h8YqSa-^BzuC zKd?NamWkDu1LcuIvz3Toli+6w^eoL@CuR-A@Ia{wF7cYEzo)A`t*K)EK5e+UUat0- zv+?^6qYr5c6{f+DVuh1#gz+8rr%dpn%ok4E4ouSMdbpWNOqOSGl31RzYX002?r+_< z64bvRCEG2$w}`#(Et=ACnfOHF<+=5yngDy$nb^m*5{ngGAQ_<^wOnp(K`05WA$9#V zeH#kCQswgTsZrO8?h|3hc_dvZ;Tv1f)J}@#yM5EMbKW^8Yga$T$ujRXZCH*E!Drc( z^=#CY-376-$>dV{Sm=&GJjpH&*zdF(C%xcsEg?;;qhQ}7AtO3s%J(`0XsT&ND)QL+ z@@1A*cEn0vO~Mhv%65kvEE$?=wXtN06@@q|_|e_#b9TWBVm{4!SQ`B7`5uym&pInR z4tL*!etvGq*|(Jz9`nbk8~oHnOvYgSQ?525q0>aYC-$8lS6ub^-R9kr$W68-yX@7W zq_0eIryE{mQ1F@JFSU624_{yW+G7~Ar|&Wu$g^zn_CYJ97yLM)z?NKkSG^+JG9GNs zX115(wVBsXXixA4W>whS@XaO!Amr2#Od_drgY|ygWVx+*bL_(lMls?rrToVF=o(h0 z+0MKB)F-2JRSf}i!^-!O3q>97@eZ95a!v=hvl6e+59(@7JXcFE_9Rq?e`f-6y%@Jq zAv}1sUvI0-_d~`kfx14Uq*XWm69^rHW?HZyD%)*hK^z|#0u}Nn9TPr}{i|1WrQdbCp-IU2jxMKDM_;W(~8k zWl-fkFSF?HnadjpCbFH}JG9MdXiJUUnZM;+$9tYCz05}WnBrWMLp`@ywNfwFt^aY4 z67$%wljEX_4uD@Q&=Z#Yro17TM-t)Re$JxFl1)cH9=tEdME@bbPKLJ)w8j>kzrzg# zv;EO(6p!G=>!06dAWE75Y&)gKViwLH$7fa}SpJ$^O)E)16*Ve!1$1j z&BB<4$nON^vFlJookv-|&&_#i1b3ooe0$D)bDg#+#NQzCchLOB>$ZQ*OixliJ~K_*;MD+ z4|*uZzNNVHuVW;Id0}cjlKET}wT~}_dx8E03sVUHKfJwlR9wsQ1{y*F z0RjYf4er661b252?gV#-;O_1c90u3m&fpT+$TKdaAw<&NqR2E(7tAa1wgkV`GhJhoN^@1r8nVg_wvFHafW_ zUN|FyG6mb?q}zAYzr4INVp^&7ug8(NpZj#Loh>YRCZ+@xFepDwVq#Z^PnX!k)C%ta z%pc?F+I@Q9CGELmB3(+P;Y5!375YC-^w4to+5A!zD3{q8O1chMun zKKJnBUU%F?S+@8-X%fm4xAmC#%;|^JftXT)UyYCetUI;aJ=m1HWdzP&`4isV0{fqp>YEK zxR!J)ICD3gBC&P!C7&&GXRr{_hz|Y>+^B)BGt(Xr=|0y$xKmDzC)x@8X%Mm|eNXd0 z2gRdGD(3aD2v}Y#&&pmYMSso8ejT6Y14@bV<|xfXJgPF!_-EZ=w*RSil(W4*?`eGd z*FY+rC$ zBiEKoZfB;}9#BDfUgq;AZ_;QaITI%~pmI`0W$>U(<_%DD)W6_^G)lPZQ|>hSDP3o$ zzi`e52T<84#!n|@^7aMpJ@<6vEwQqGs0&GIM zSSigZZYVT4llBLsjZY>c???w*(`(8AmIes=s0Tf6O;nqImbxa+10SyWQQGhN-3Joq8DbZ^V0x%Ie4n@df`)9#nqe}pbGuroU29<&oZbS1k8(#8G() z4o3&Y*!r4G{!w9FNyKW9+Z!6pxM{Rc+4Q(qJbfwN*-_4fk57gPsqCwfMt2Znhe%=l z46qVs%g>p1J7F@lkvlUW?BTVo8v+XGDy^J~)&pXn-%79jWAvgGobR0Njz+)OK;?XB z;SHZ{mi=7Ze1{DibuT-{$sL)bWP1V3*1q=WkI19h?}1l)r_+>333}tvI=pZ@-sUPpT$dPd6e`OfF7LmpiF7M;)C zH7xoy6l~=Lc)D{t7aL=5*)y(#rdT?P5mPV(N2Z?V-T8KQL2<=c>k^~ycChYlpOblt zW%M~1ueE6vj?dcq>QG-5{TK=8<{gmqle_Ao4|YKO9t@u+y+OC!5E*ya$hnjUt*Xdj zV`^LnC*q>e{PGd$ee}(1?#MkPd%Lj_x^E@w@f@{VJlsBa`%Hz_S?OWqCOAL=K*~3j zffdIj#+$@@ub<-eJk=iaRMtO67TbOVRgSZ#;T@KAs7QFtn{m*f*_AccQmlsgN6o4B zCfkBzdoZ9eX`xAnblMY(=S(-S>B9_VNhoRGz0JJYBrOGXw1;2hp|&9Gq8Uk0Qug#O zc5g@>YC3!zOOvfD%@L*iVA%y+wBh!u^zf-xr_0i>@7j5#pWe5{XiZ8#c$o~|B}F=Z ziuAj`7JC49Kl} zFfoJ6CfpKrh%&K#ChRGqswC1&*JQxW7G-7=7vikcZ$t+^l%h|%-pWKA-kO{3*^LT_ zrb4_(PSI!=M$7kH_tb%JVNg&pWh9-E4r1Ar9b1NP&&PvJQ}^vg3{&?IjR&8$zPfhe z&5kQA=($J(e=D%L%mHsqYioQKiucPMuTp=)U|2nX_n@(k9kP;Ot}SD?sSK`YLdM8j z`VOc|wpOV>qS+Hxz;cXx5}ZFLEFwbbo(FBkZspRz+FaV~oS(?{X`|$ZiWK_Xqdy)3 z`lWUmAoO}tt}m?wAeF>QxovLHb&tUply8P6V%-hcmgW?v+YmrDVF3CMEbp~SK-BkX zx5!23zl6@!kDGb#N9}36T@o4!BCYgLf+Qd-_3>6d^eh;wnTPT6-UBwobB83(ibBv- zVA%3y$=*h{qMhEZyADVz891nTdxm;P#ZM+ znja}UxW88+N_?Lks6N`0eWv7+jVz5mB%`KY0BGqs#Wb4lf32nP&xAALLL1bsP9T3= z-Kkh1ztg7E`t~;$;IYM0R(&LXg!I#-%sB|yj@%hBAWfj>!mm%r_;TBM`*I7mYuGo!W4{SlK0Fu-QTK^J+gl8eR~;XRO7sa zR)EBtr#Wxdc}`x{=@wE7w|h-=#49jrc9PF#zdtWvYI;AxfPd6)k$I;45X_?zND@CyEA?O15>;4?QR%Hj4Wn7!r+Q;- z6n|VMs0qCnrCTTkn?PLK_~e^Rm?mYAf(R%zsD;^z02)j_RPeTwZh(@plFMw*UY9ED zl)%xcf7s)imOEYV9%mF)e@~dH@XU`}(VSs#dnV%)xPg77hDo0ARLHdodzi-Ma&-|B zUWqxk?RZ^=P!TxNi?i>Ax5IV{cMxKl~JV=}LJ5r8q_LCsjvjYw7M zZtEv8{R|uaV99yarDg=alVG-1MV;sULh8FZPyxxM{cYdxJAX<(*5&bKSx7zAK3}~y zzuI@qco9{LH|#1<ve+{&_v`nA>4kFj1m!wd<6_ZjDhNs)^X! zoRrK_uR{z?T%V!wFJIJys_)(iwo!k>lN|OW@?cW6cn>h;Qkb+$#8P0ULpFsq=CGJ# zM*Fk~NWrk({2pD7cY?*gH+}pjE1M{42z6+AZ0##(7iCp#e&39!!>~WZKA{?2v8Ua% zy8+$);@5V=1}tl-NG9~nV{>>Y`zXDg zGK(YdCrY|6z}7VPdF*`{0kXjBfsvoy!9P+4c>8%?-m`>)(;!P-4AA&n=UOfY!LHiN zHI+$O=2OIqZ^>CR?XeVEYEx$MxacJiUf!rrbZ4uk{(c+hLLdrwlQxoR`CZ91;c7_q+ z8GP}l+C8`W;z&I&FH6@4!)#V}Et+Qc^0=~Mx!V23(@RHP&Qh*0<7m3w1>30iuKN;w zgeILH0@gMcnceo~%BGlrJmrbUA8oqFhNelPhUPf*nxrTe*r^%{C5;xroyDt?8;>vX zpa**1X6|IF^x>R|%*yF`MWJxEsD1snSD3izo^N2@Q;8uupzc14XzCinW&A@`Lz@77Gy1J#^Imrr|Z(C$XC@@od0?7IlBOJ+CH zu?Pd;SDUcZqdw?iX7XwSAwrTc+0)49-S3H=Zq@E`dz(2UQSn9`R25`%P;!aAs{@LdqJ49#ZO(+bPU{&->?1^VgD_ zMc$iU!LU_MnI$viSQ-5+BGIb7;jZT`8zP}SqHK!A(^cm8=B7Qv=Y}o2e}}zN_&!7F zRjZG=_yo2-h-wIayI#>TlBZLBFRn=z_+b-j19V&fTb=X43c17Mbia~!Y(B9Vwp|sm z0qxl9i;L+zRhJy1ni`f@3sTr?sucW5;e{OMUKRxC!Cy^5L9%FOi1;sCM5hc%&{vI# z4iDjL_B&G_j~8m9wm&1-(Q?%6_u6u?ubwnkx{rHakT0e(#t{|h%VtT*?khySry8)Q ze1~*(D`QfY=Few|X-D&!QPY)>R_(r|ih5z%q@>r#7`35s?$*C}PV{`W@$Q}k_MCdC zm;2;Rnv=GUHS3(R{3Jdw>BS3n(sxx&D6vzSD4u=~1X3rcs50#hekE$6-8pZv3Xqb`q!i>KO-)QQn;!E* z@*vHmzBKtdlW~v$$NA_h7CTSA9A&Znm6;QFF+2h={~Xzam*kS$>&xhkKh}$>f(Nhn z+SeK2eU>RDy|1}CButi24)~^=bKKo~Y3sbU*gd=1pO{M5D5u7iARzbE=--~jxoghr zj>-=2Q=C@)8qKc-*=Eq=v6DIs+gu8eiGP{f$U2$lw^E>wsG|{lZ=3gZpcAri@%*nRsaPR*7(4A)r*toA4 zg_PZ(cD3lWG8u4{t(>!{RGi^`=&owbjasrHC@$3xlOyS}56c^>Oe@RXwqEOsUvyR$ zDeeTLpFZ1Q^%-)GI!GQu_v-|MBbfj2I#-v3PBU4^t-mZh@iXO2&du#+LSy(Je}Q)9 zfr$r9c#M~#j$h1!iISr4HqiYsPu4pbUoX#kUWV({-pYbzAvpVd})Q3j-~T3L2x*R-#^g? zAA3cuI_KxF4=#1jz0LK;`Y|);Y5>iP(4RRwd&j9dJ|bg1Bm-oC6CtM~wesgU zXfX4{;w*aosJ`UZGMt+Ak4MLkJb|Q_*$@V=S;tDMoOo8QA?&5|B@?(7LId%F-rX_~ z*DaUoUrCE_k0p2R07gXTwID-QcT`nS(3b4a^M6R&kKdKZS-bcV}!oA zU}}vYndRIvduwu(7=1;iX9)T3%nYScYlG~?3_5h~gFVrjXxA7A=j`@Ye?jTiJEr|x z%+{+=29L#eh}SUfS2is$Z=sxi(a@Z($N?Ne9!oQZ;jGS>D2?L?OMF3_!;d}#c&5*L zM#@_p7l3RVVpT*kdKS3LLcFa7m3-8ObqT`M9jorS*F za=r3gi-r|PzIvRvT-~>hg?UUfG=&-$LSMV-8P0Vm?DpXF0q2XpS%u2|_4le3V6y4+KTknUtI_(&>;jcwn%^ zn~1hgHgMX*8NwtmO+E#(9k{I$e;*StG?DL&uE{Je%P>#>2lKu7%(o7zq}k4MxgJMv zjJS3X^z4we+Xi@>N9^^OM{3iQ8$I~Q!jl9x`Lr~7=cd>Y$or?Zx}UFSt4y~0~Mpaz~M6x#gtjrdUrClJIY&g3ZS624}>ira0mMXb-9dFa-WI+i<6mF)>pJjSP- z!**)lIwm~6XW;g4(nrS;FoSiNzF)VlMjy%YRdfYn*Za+8h+D+~+{K3B$D6Y{f^tQD7JQnI~BCqgDWWpBxO<$6ke zgfUl*cYk4MOhO{>%Y{&{TZ8$u_W`R2KdKitI}oos=N=aFZY9p_m7Su@C;!B@wFz?) z#$Rz;@9}Q|AUoO-1d;l}YUhEq>XL>GEkqrvu1T_DVKl3Yr;@2(4CnX7rUNnK8W3Zj zodMQ5ems8D%#(y-4o`fLOLW$`o1~~Y8wC<4W}#0bj^C6Zad~jKNqp3_ZiuV(rX9(b zrfLZvekQWZu@EOUa6t?f;2CY}bPZ8g`mh+yE4n)CLWQ5QB5S)n(@3fQ@QfjxO4m#O zg5;B_)4x+@JX3!o_?haHIoGI!gTZxHu&T#4-gv|NPQM_ditV8a9NyWrt`kU+kaV7d zgL!#q!EgO!vDg?9i+EDAJeB7=YRT9gmF3g!AQpbe@sZ2>uO++hF0$^VOazoiD#Bp6 zwYe!QKSYJ7Z$4Q+BTABgTm^{lRaO+3%sh<}D66pLn~LU^*clbTI#k-g^&lSVuG4v zwKovXKKZT8|5uW%c4_3qAm^rGPjza}i7N`_Fl^C<>bs#d8UI_4^pO)IP)l$s%jV-D zs~*p2>ToX4aAXPccO8NL2&Jt`S{@u>^Su+4JMDV=E^v9vofS1HG2yQ8Mg z5r`^K?MEBrtjXbkrwtX7b)r2>zf4H#!ZJbwR=on+*L_V)-EgrT?Ti)lnZ zld>=^$}G&yj`DzrMZO<0YC_3`SMRmCLA#fpH!`u&&dl~%93d!|$fDN}2-8ZL>vlBc zAAg1cS^X#0geK<;xYN+yE4Tt7zlO#{aFcm367P;Qvtw!R?y4f1YyRRVr8OD^(E75{ z$8-NI_T_jXNiJ|v_?tAQ+b3wO_``(n`nMzUK&4N*ylcJMR)i)rQ}mDQ7L>k%efe? z?ex&f+eyzYbdS!}k;UQhNtd@cDo7J5wc$RGG9Tsm+f(1#u`7#o89BtofXKQA_QIng zg$wQF7yGYx9Q7Xk8=V*L$9Ju|N8$a(m3O(72F|FT6yPGixnudTrQxLwbZ$x7Ze0v? zZn)3`&qiA`0@E?jm6#OF0in1znurd<=wA;bq5R-5OcT(6ziI^ar%2h!B5#UpB)R1r z8fufjp65!;!v<6mK@a@+Iu8)-nRIcZ-R5b#lBemiconPhwtNUznMPBL+GEu{*-#0m z?%mZ<5)!AeL)Yg4gI*& zr~QopC)aN|M+30;N_Z2nmv*W+-VPL4g5Br73 z3&bU?3mO=85;XEd6^JVlsVmDoVF_j!=Fw*$K512Nv`~D{9wqaUX zslUFPC4*B-aHOO)5`vOGnI9E{M_ZrrE>O$n=*SsaV#QlA9=Od)TDl73gE{SUVX|>f z5|}V;bY=WSzRcrt)?5+`aony>k6pJvQfD?MN|#CYZU$?3UafI5Q?cm?Anx(6Cl{Kk zH+jOjX$1frtrzjk5Fq(_`d(A(QgMa!VIzQ$4i?j6SeNZ#3zCFN{FBXMpg9J~Zq ztD&&c?%2R)*IF8p7jDYs(Hs^vIXC`*NBy*|N5z*Z*452x&m14}9+70QG^g49;Lxn_ zM@Ld=nAS2~hv3)>8me?}VKHjSD|e#V#KwU-_0v*FBrshpO@f4pE%VK^@h~Xi;4okA zXkd0)NK7ky&uhe1-mx&G_B*Hs7CM4vpse`t4J21WOu*u0YIeMYradG+*R}9^blrJ! zdRA0Qh#rH(_S>~*K=eiAzKgFe4RYr=u*#@L|D4yPxDRck+OQG!Yhg5~lA)#LkE$iP zH62+GEqD>0c|rawUvEK1)8@9PDe6B(EQ^hRr+4>@j=S`ulpH((ckg&e*b&_II0zt8 zQcbcy*>r=iTDvLGCj4no^Ip!6A1A&%`qO;0AB2c;)EpmY>pk+)#2t+>g2lu`pCulQ z2v`*}RYEjY1KQtB;MhcR+hLpTMpUH=9d-2GqwO6?hLF=N%gXB$Ls4+Ful!LoP0{U= zf}>J*UD5nEhz`fb|J zSs^hgNX@xI?N-QI3&(ycf7VSLt_Fk|1od!Tr3X%z^IALE+B1!oZPNU?QhoB zCtejXfAZG;L|Oj>(udUGJbtnLuP^?D?nzA0;qD-Q{r_Iy3oZG&<6qaF`^NcJ{qKd4 z`*?H6)@lFG{ed5lss8_LcG$C%mKX%x_vNtLlX=S^1gS(HI6(Ph8st*=ubyp@L#+vj z6``xzc=+?Om?5s~U7reyDAA7IlYDl9)Myg)a^m7B(>j_z?~q-8rNaQXf^0xuY_cmpYT0>96A9Qtw};I23Y9fQx5qEsCPTzCE&?>}F( zi4j8Zhk`t(+Z8hpL3dl=OR4iAy&$SpY-~9LjU`Z>4!8MA=DqAY0 z%3cgLX0&I`C$bo`9}%hYH5G*Qf6sg0LsU)8cGgAnS2XBPW$N|1G;QvI97pKQ=44AK z4_XvfN1u2!Yx0gWEM`>FoR+LY6*jUUESsw$qg{?LuxEZ5ip=N)qs%{wQqSY|wGHU% zFHOC9J>Ug)dxevpWvHV_49^WpIy!!_Ckn!_UKcl5eHc(r#|Wb)_Nxb47hPrZ=QiDb zq59uWJd^!7itcqVQC@B78K-0UCVL*9Ud^H4Rv)YXFD9|Xuc}`mBOW1Q996`$%gj+L zKcT}yw7Wk_kup)|xFnzL__PgeEUjv?v7L|M)jN8fGP?5ie8<)O*(zkJUO@Nb6(uWAnZO|QNx`jh+$IlA7Mp#~m#=>qDi zkCcBy2wRoAob}3RW6M(VQTY$^w;aOqzS(DpS|L;{19L~6aEoTbP??}2V4`xA3$j$; z|0(>xwE1=klGsV}-H7_ni@wX0L|m}~z7K%Bjl+{%Kt8ewUy6D2=-h$4O-UGEGPC!B#P~%>|&xg4mJ_0H0LNL>bVlPMP}! zDrI8-^r$GmB51eY-GU~J%V!fmQOEEl0nJ3;i*B3_K8fA{RIY50>1<^opaUUaB+M1%(@APT&&PVl?0O=tFLv^3ds@6$@-~3C2 zt7eD!mAN27RNuV)D>e)VgWKd|uC@MUf-()}xv&xiBVg3on}m9c@$9NTwWb9fhp5Y0 z%f$>c!N@@h9t#c?r(dJ=|EnQh91XrzY*FNLoxN!H3hJ;G-^>1DP7aW<(E8wL_I&Za z7I5CM+=|Cd8@otE2*qv@8pM@$)rQ%y!`Wuk>uN^U+v~ZE__@I$3IKzoh_g_LqJP9?-IXrCSJHFi2>PFt_FMbuokL1PJCG;hNT4ia7k8=6iE`4rO|Ay`P$l{J z7W+1p#ksAit1Y;PxM}96$6bZ#?;Lw$vRJ|w^wGk|!`=ehgttz7jOFU1W2(6PoEWVQ zbqjFb61a#F6q0lNumt7FaTp@L??xdMu`=L|t;8+mDPmu+)b{cpa^Gar)jt}?d{RpTeY>CHRkpyJ^aHjKI+Nyhc+sH%nN08GtsT+ zNOJF7%vqV4pUdA6R*@DK^LcDdWt99d5o z+vU{-cj{5t)}7fsntQ)AQcikSpfAO#KVBfQo5JL$Y-u#mWkM5SAWI=y%R)+>amszG zzumR*zHDt*zJ4fefdn^*b+)(+>|RHd%AI8lxH-GgVTuf_*hf~aKKp*$fmY(s3e|X` z<7pTp*G8o9*mAE$5LiFVxn)Labf>l4tf1OAvlj8Z-zDPGo^-OE*ZfS@T-JCo^FW7h zkD32r6PWTRXX?`U56)D?k@V`h!U>Wfubj-}^qeTsD=0F7D`v(@sUB^Qh}*S=zH8Zi zbIW`+SU{e>3#a^sZjST!#J^5G{b}4b!FXKTrm|oAN*!Nge74=&9I&mnG^=*eW?k#j z^##ErdD;8ILlChywu^>MyC2R9H|QB1<6uT3j-+ zhjqQ`KkO6q&jUJk89m0}JfPsab5lC1%&{u|ktZe$k<(((S+J)PbNyxEkRzk?ueH-f ziE;>ShGnIBk~)yP2Ldp6zO3ThP)x78dH;J%zUD^>ni-(xX7wPNx9AFIer?SjeIwS7 zf_2i1VkF{p3-PgKl|EkGy6G9z7@VV=IVEOnXm5F{3a7mj*8uuF97&H8at}_j%$FQw zY(95EvCgI84Bu`>&Bt}h3N2d{G38qLX}*p#+47Y2(s}w9V?~`*B!0$&f?rim zr@3KzTmf6ySR}Dv27NFfwtQ{baj8QnTc4XV?O@4h+vX9mgeFj|KdSBJwV#ECz@$Z& z)!YJziS{uqw6lZXUE1SxZRv~GTr@ae&2Vy5Tg%CRWunRTKTb5L6D4{Rpgy`BI@I#; zAnJaAy-J;C%=i*R4+ zsk5Wf->m-*k@KjzsAcUQ4NnK?mccB+-E`!%0xTzbc>d)+tc5`7C6^JM!Vs53sivHD z5GJN10xz047RqjC6kWd&4KS<}bkxV&Bu8;E1y=7bTDf}DUUrM|YA)nAMuoSo?QZhJ zN^sqej%15@%aS4i{QFY-4o#;AGoRtAUd~ysg+#x&M zI=pOv?6Wp_UNT)6Wa*kfhYmP1dJv_e6hbeRqKhCAGmD*@3VR!uXb0-%&d9Lv;QP%JpN-QO z5LR3LBkHvmHW>I$(ia{J z(|@a%K{z+Pii)FIR&o$3r5?fJ+WsJKNB zwoiB_@3ms^jF#>7vDNFKpLcIapBnrnjRf(b(3Tfj8y@!SRFqwh@=@71vIAo|2p)5% zRTbPCGtQ3jH_0|>Ar`k-w94qQU->nJ!v(2w3t4)m_p`uZS89riAU88{xKUz`6}dn* z;(&~ZSLmNlAu&LEamkQ>&2gLFu>z1*a?|qR;z+(I!_Fkerw)hDwD}pI%Wk(?;&m2q zrNw{V(Q*^ECni%{Tm+gV{`?^L-RgWcjpoOdaP6nQaYMh(cV%3DZ!Zn_c#P|jXlT+X z>Hy|-4^3t8%?s<+dnLxa&FmR;E29oD_O|fg$+Bg+Or{8!X;HljEXv zG3#+$k+SV}g*MlBjnL0mfIZ4XcjM7E-~=r*>FbdAhUau-H^^-@CE3yvmxw4itOjA3 zg5oY0oK=P0Rz)m3dV?-DTDv2D$YF@x=;jK+CcKJc_spJeK#xJ+EK|TJ-x%r*et1{g zO3T&qf~&)wv+!3a#jV>K;$|Z=vl)=knk>mr*v;dc><#rlrbRU!4U@=nnC(-kPZMqg zMIN|Bzke09ekJDWZAhc~7P7WZ2Uo4rc5wfnovxivWE`)0@%grxXYBdM1|Xb>3V~6% zR~Atf!Rb<+g6lT#5i|TdCHmf~2Phww;tV`;71p}ji7MKZ3coizc@o#zdN}gm3h4EB zdJf7Lt0Tw1LjpU8W>!Z91BHeSTz4;vt(W^vhmU8Eryi!0CK7Wti*Z5LZTeQ2hK5YN zZv=@yz<-7NVD^hO_nu86nM^Ku&D_V@Esj;@5qMhH*&vri0hADwm`b9jcq1sj5b$ZR z6^d~%oNlC+e5AI#FG*L-tH|5^X(ac-V)4o)$f$ZknBo(=hrxr!~ zo>zJ3t;tn6=Yd?-VHJ#gBU)H1Bg@^s!qg zBkyz6CE2F99q|fEgO}3mvjw-r<;Lnb;S{-(yw>b(YZ47d%}hAB0e4M}gcS+kgQ`Vt17H1AQP`0KiH*J1e61 zWh0j*fHd!mjpI@)n3~YLC1wr0Al*LzZ7&5hls#}OZeGS#L8E2y*&yttE-5io6F7L_1-02=7KZu~CyAMl-6zc9cUq^_hS>|=*mWOsu5=xWbqLLP5H&Jp zi0gicp(;1|b$r-0PcE@n5Hl5~*!_x_xbcRWU(us>{{6&+4lt}JfYNhyfI@rJX&y-U zB*j8!@{kwJ^nBJ?>~h)tU`&bR>9;B)umu~vcbU4xm`6vLpJT!8P!{!zSaPxhB;kFw z{rxMjXsjXXFNv97_0rJN61~|!7$nocdoN9Ezxpup)T1F2#^GrZb`DUx=eU6i3p3+5mI7)fAb}6#?R)ao(*uHiP3g3 zx<%*K?DyQG-RYqJ;;cGfWo(Mv8^^Ux7EfjXrEvJ_@s{-xbf|ZEY#4n$;&PM4sm=#| zL~>|&IyXzFHTg3uz`R@C--!7ODJE)x68=6&-$e=9mhpv+v9md}A*)MGq$OGB=t!d@ zH!(~3Gbv@TFofC*a{z{RJY5o!+G=fUKSb2^GJdOdLx?>)k|8-Yi0~uD0r8T8phdBV z8luM=^X1r^@7FA&xO!Zgq&c+K@VDRVy_&i@)*iTMbdHzYRg#a9vtcIl`Xta|zTJb{?G z#hf$$)agI|7i?ur4M|c;C5)zx1%4nN>)6e7^f@c}TkYe>4#;G=&k(~XKNXVNh9GXC z1DpIjDyu%CygJ}3*J?Ek86lGT-I}PP=Up+hBx6e=tW72PY;*W-ruFg3VPTbk3|(W$ zg@n_LD*6XxU#hW=S>VO6^FaIWTOHXmjMmfj1!c&;euz`j9!uD?D0<(ZF*5*C5!eZi zuF5}>E?4}o%l+fud%~J|?$~8nWOvQ9geoT{%O_+Dkzz7U%=duXD_Ct;dbMbeGyss4 zAB!4*-!BCBZg(^l4eCDyMW&{hOA&rIN|u@StqzO$FIhsqclW`+ll!*V4`2C4hv`@?fDvm5u;Xe61weyJ#@cp4boLl2z#YbPF=jTM^g0jss09KvVyJStG z&~-1ia|?FFLtx*6{IADx)At~G_SE)0b*b5!*jrVbDz!al>+R*Lzye2ye|KM^=i-OwPL9|;_HXnUY#tH&cb@&6NcW;u>x6z)B?Xu>_LvDkv4^{Dh-F@&L z&v`u^w9=mre2I%ZeHL;4+?6n*!C5hp{vsLIpW!I>(Y8WI?66L6QRecy6D!fJ8E=}@ zg9Y}LAokxcn)$XTdt(U@$>CFfQUWVTQivx z7JM4^tNP~?S)@YGTF>qK_MJQPOLf=9K5ZuB*W^K5!mu}hMq`Adc{0cuIoF z`&XfM^SXgahMJ7qSB7(9nU^kTN0)}_maapWmlSC$SiUcSc+FaoNx$ zsmFmNqL836qfREl@yhh@_({5Yy%o6(-$xhp-<>!J;BJLp6DChy@fK**)fAEaHnX)Q zS;F5LczDUUQ(C5WvE3sl-`VQ3FI$^7a@rQH#ZXG@<`^7fw8|Ohwng@;gP@ACSB|LRSsqwGT^SUZ^5wuCzMUUTVhO1y| zyN;K{bP9rPa*##&`buF&ZZB%g%JPH+TdmJcsgybbmW-BhCkoa+q~lpAsj*n@xOceu zsRL;DSZv+n~;*&Ajc9b z9j~F*(iYiEA;ZXqUxXY(x+GQH?L{`N760b9q7O5eny=%@^PaNXaPc0WEOsLZJbdc( zY>e;uxT1b8ZPWCkizzq$kuGhFzHzL0rVA<40m*+Xn;8+5V`L-XnF#Yh`fRIoJW*D*y zyN&*QOlJI%t@`*dAGGkB?HQecm%Br(CWrGNWvpIVu)%Ky8GdcLLD)gkN4_;QYCT=o z*ub)!;jAx5dty!nNf*G7%Ncm%CtX}pu-`tO74IlpYRe+vvrmZ*23e2NhojM!8+MIl zn}87?%~z|_Fh-6vnmdBBkgq6y3&U|YBgl`DEY1#+$!=+Fp5v+i*$aP_RGdr#e?=lg zbPxUN)H|N&+2NxDmLAYaZQMlAJAznuumGXTWGYDQyynKm?Kv5E_7rB~E^yZRyW>-X z+_cbZ;0|<@53fRvQ1^-4w~XSpbA2Kn9wi7?4g{tob~6ebN|8VYCk_HeCkP@ly5CT+ z^c+87>BtKy@DeLjAvvr&ifbEJ&Cx|s!TSX$3 z^o^+vQxt3oZo_vduk)`Ja>0zcsh^JJpITg-bSqHOkd3f`k@bN69&>2)_)BfE<3=TG zyvpPzk!YjelA(YUr`QT~;^}^B0|v50e*9#R^v~l8P#}5zcTs+TKNdGr#1DOK;JZj0 zKUqRXv=Ndl0_GSDx*+~Y;|hrTKrAD+<$NO|#!bNEJmJ*DV#$tXSlsxaln7cJYSH5x z?ex4ANmD|3^NEHb9q4Ad|NPG*$PS)4PyB4<)UXbyE~jdTnPrV(xT_5jEti;!5Bp22 z)>{w;5Lq;!nloI3)Mz`X57OpVy zezBnK5xd}Tp;Ef}{eDoUNHN!0P)CC*Hxi=f0I)rdOJo2^Z7V1-VTb58&yS$(X3E{2 zl$dHekB5IuhGl?=r93iud^c(B{tZ?Xf^SF`BICK{v>ld}to6n`qwU7$H*cDyn-3hG zR%Mczn^~h>>11sbFs2!rljOX?swUY+s06Bv>$^vch87y253nRT`orYf@=1%GjxMl| zZCSsU=K?zWU$qau?g963cvzDNI#Smi(8++HVOUdL4AQ=QKl=KgBf)lT0BtXS$7mGTfAw)1?+iNta%nX46!`8Te&8PP=K^~ z#`o}BR`#W!HamK;FBQbUg+*8$s!$fw;337 zn$lr7a|*AkqbY)N_wARDb1zHF>{W3_A568cSxwZ4+7*P?K#6p2cW|oC_?L(It3Jrr z0$}!bj@7=3@FGQg0r15b%8yEh2YC1)WabybOeW4K1-2Sy2NT;5#W{IV8W>Iioq98J zOKId!`}Y)z0k$N+dzQa>1>5oY_JQ*Lrt@_Bm*uX*7afePOTz+W=jqA0(FPe?fQ1`v zK$PX93*agCMW`ptP5aXesfkSL=YuBvynsjZwdSB}%Orr62s8m@dO6bZPDOENPrsUF z3cn>T8%E#uz{iJ{+o`FApZ!HNHZLO{%}huIiW#m3HerYY_mp6#XKjWIuE>^9m4syU z*z9;>%pwVb{jWY^csz}^CeMdEFQnm#qoxk{Ix(>vaHrIXwrS{(v_=tb< zHli&iP6Lqo;dQ~{d|NzdQunvzBg=#`v{}bPmotzQS^asA?|oyXA$M7w96+VNIZB;C9$@GZA3m_kSp4_g+)Mbx zekQ||TNKCiZiu?lMAD8;31*4z(D1f2`=V!He$uHSnMz_<5$e39&$ATN6r3-cbQFdjo0RFacWccSE@On>~CuN%XtO9quggh5>x(n z;#XS9BX2LYCN}#4Egq1{V`7H#(4)x&=i-Mzam}f0jIa?dfj+5k$5Ax1Y6ND7g z$3LnFf9|rZ>#+jDo%8t`){@FyQ#HIXX(;Dn<-R_u9rBk1tc;RPDT4jg)YU~U_YMqT zi(%5?Fw?`mzG`ExSUzerOno=F?xW8@z-5_%$~9y4va5m3mBo*rb4SIB*fKaiIhdn2 z@O~slbm4-2pvxVtIxzN2;D;W@T1R|*N=RWb)nD-k!!fSPcvjA%FMAiFxs(cC5#fr30$Pq(GF5Ls zuJjZxs4Wdph~+CzFN~gY7vR6ep7c;u=9c$dL|luHnNgpx zI_o@_xFvDb!E(-rk;=G@t7jWEF6s8+E>{J26o;Pl)SwXg^2mUfq^P-+x$s{I>{NuN z4uWG%Z`N^M?R;@g+I&LgwW7vr3GG~P<|{(4^5i~830P=tM{``i9fHW9nEb!Jsr)LO7EckYw~%r%OmhWpV+!8cpb z5?0u7Lv$rigLK~CsLx8EHRFWKhf%KVkWwC{EdV<&7ty&#RF10I{z1D%^hyx_)?p&+8=>7voJ%OHR%1z$bk6>u|Kc=y6Wn{4#J)q4vNT_RRu# zsBv_lQQNqF(mge4x0*gUR|h+$Omgg)?s$kZH@8p=>op^X%pRcy`AN9Sk5Gd9Q|w+o zq9-{x2hDu7&481!sC~@Tdu9gB*Zrjr729tLwln~TmjEZRqHsKC;K!vV!*3@%pd!HY zubrC4(d-otTsi6`9HWlcFEx|#3;dV`aLPAQvtNk*WO2$_r0$kCNWA2x9JWeFW+(NE*d> z+5gs}x&8oR#1+{DcSZX|xjLE&TMXM6I%|k7b;ol%*YrHFGPv_0KjDcr)>9yH&hY04 zjns)@4^&!Q(*&@Vj=A$)qTvay;HZ((S2S1rNpFP8N%RB{RUdVbK8KDz5xC+XsoUHl zs>64rIRNpU z&P;!f*IA}`>_>|&M_W_fd%lTa;-sE)$7);0DmCoElIR3VRoxC4%Uu^9 zo~J=r%|)J|uGKwJCWQ7(>hIq7f}X$mtOeKq;eRL1p(lMxH{>vN!DsE> zOvRe7hVCrLw=(#R70Kaw$#u$$4O<_OS@6jq1y&>*RbmycRV&bJaX?!4wk$< zK>?|a#i=*?Css}x*f*xLL;LwjpB`>oS@H)N-j|WW!~1ZH6iedv;z}Cf>)UsM`(7fB zt2buY>#6<-s?goEz`^mjOzUf|cD(V{}lWzI1^q=r|=|7ig@PY!M zGi7`>zv*^?Vc(Ey8$PBRVUg(KpBX~En~)L*>hE-u9;kL==z51K9HfZst}Y4f_Q$>R z@2UP!haN85A1_^)Xb zW3@Gc_L|GpLR)XeL-zQJ(NmpEoBH|}=f{9f)oHBY)(!@*{SQ@pSl5Wa>~rAdOjS^L z(x)|Z>k4y~1-T6|_8PynVyd1F%AF`>9P)(uuqfw#>PN~CV_}ucvdjjd_E4z`!>1Pu zX;SKzE>Zy@uD$DNVOswXOz@tj)uU-2KB|IUbKb-kZ1)RJy|XC?QnIsJv|YW~pt8`J zH@$exAlHPTSdKH^p@UQJ`3SOhWN@S;vGy{J(ae)=NS8Yd5`HDz=h>j5u|XfxRSD78 z*95!i2FYZBK+$VNp){M&RUjRT(8Npb5fS4xLSL5>`gk2yr@3Xm$abCkG`9fl`=ir6 z;MX(#o8Dp(vJYO(`G|W2Bm4Gqr1sSesjr=L9S~_2=F{s^aAr-pbCU>Z1wUv3WVreR zXo3d+QT~4}qxcEI`McJFVp}Ka_|shM*qXkEDcUNqHTelr@O@gwjuV`MeTs{8zvO?p z6;c&^vN^>53O<7ex$gozY3r}j*#3~2Fa!Di=he*BQ`6e77CSn|gZ173u>k9YqZgek z+zhsk+1;LhHyApZRK|dmJv9GSE^2vfLB8S=c<*fAqf#qq*g-u(10BG3$={zg&1tJW zRWvi1?=6i?*Nk>~3a2CyvhetT(Zvfg8Z*Q^go&&-?wU%TKwvgowRM63#T8O zg1g1xr;&21(E(X^@^%F+a$wp!02n7i97W2;NJH7#0)yGj%z&ZY$*?X1}c_nDa_FD z#G;DzcdT9(M=!%t>gohTi?=;5AqcC~8@dGipVep1_k#QsUUN zLC+1Cgmk3xM0lV#^2gSvmXqt2T&aM@j18VUXG`+&9kQO=+?+V}&wtjGkk9VelEUs!|=<>(n9z1yKLK}X+I!1<6uc>7mHje~|G;FiPEP29gilUqoTt70T z1M6$-TduKG1?HHX1a#%NiEN-k_zYTHy#+wrT9+!T__63O-@C`^vd)!P21ziDMTCs; zvffMk)_bXDN|^EB!P6LY0u?Id@>{IS{v>KDU>vrFN#hr1IQM#n_~bhFCk~5=#BJd^ z{STw(Hf}xzib?@!itA3K8Kb!#M@fp5e<c0Zw7%<(p9jJ&UG@)Qr(Cexrfo`R zFtY9o%}A}8t?8-zdZ8)m)gfinQ*tU?-=-+Li9FJ$+;i@MlmBQ*ON1UF(9{>LbhZ(g z7=%iMh}M`Sy`k3Zdu@zD;*fxPU)~fb1rJj+K4>LSP>r_)95O2%ZvYO4`A(w!61Al) z02dy`6;+gNFNG+g#Y_t_s@yrT0q5=PKyf>*K{K{g(cQhvlXX@M1?;-*{l@E`+#A`g z*knT2MrGvIla-3v$+P{AR%PEJVgfqhI)feg;NWB+goFhiP-Q(|Uyqe?T#cNgt1cC^ zXWvh$D6^YLZxZ(^4f$sWVMgFVr*bUSJuRQGveF}7uryhF+)KleW`w%R?CUWSnjOt` z5BFTZ1Glv)z#(m*&=5!0Pq5g8Yg0b%E?%0uQ_-3R;Wj&FxN_my1q|?aEZ9SFT9A>ErD8zE(Jx&Z{$daVEhg ze+*X;UdB8TR^L}EZf<tW?Ud2rdTv4H-; zV{5HvJo^g%N=t#GKkI;ocPYHV!KtSaK${6W};u>0)6J>mm2DLS+qNK`nij$Hs2CL5~Mg^->dOMX~0Z+mEduZ z$ye~9XHD2CXv*r1MSCgTc$%i}sKjqR8D4kJZ)Lz*ZFG6PdgTQFS-BNBOuOSQC*|eg zzXpTB(|~I^^BL^GHx|r~Y3^WpSYS3bhfLx?mK>8AZx7yMIN$zs%xwM;MKB!XUiW3n z{sS&HrX@f0hZ-mzXIHnQ(3Xv;$@~jG@1V#BC#s3?U_3%c#XCQ`RxX{aoG*@2VDKL6 zcv)82zNyl8tAb92nZ>c#$JaKi@3d!UzVgy#s=zd-0>GrTU3Et(?^Bh=2|8|W;{a-+ z+a5@l6~Kp3Y%A*&G*=$a@MA_jG#d^EdQw^0>9JCFyr5n?Fc+65y_9e^kIy07IBSg` z-If!#zoZz{4+?l4mH252ugu4a-<{fE^jNB7u7A@dbPxiYE(r%vYk_?B3grO-8DX) z30&{ra?nWMP}b6XqNa9{!Kb3}-RqZo0?^UwlhI@ohu2^v#nQcm<{iX&gGbUupCSUX znVDsq!#d?jmL_UIjI}4XSaz@4mcAU6+t#+}17$5#%P>U0St+ClMIdIx?)XVyJ?&A4 z>Y(n&x3Jz-oT{g&a4-PTT$Z^RnCVeZe|JPdA2G-jry&^D4)U0Jg!NR^$^yKx(KB3p zQeN@$XW=GPLviZ!Qs>79@5s0^?9qb)=Gn5XN*69jq`AjHPTItUY7KfIy1Ooe7-6h> zM|4&PxRz90SenXpH^Z;;o!WezVy5xxAj0-SpC0d#+rK*t#2eMCo={V>ql4law@+2_iQTD+_^labI3WZUXgDIE0 z-2LepnF{Z=E7`N!S+Mdw@18@#%D;0J;gs=~b|`E>Qk@l@1$0V@6?psNf$LnO{x>nw zRW@xG(*u_3>gqSbHSdmtT=)cG`KI%jRJfkL!j+$XmKFl_{LEV`e*8gnwlA@|9X!jJ z)AE6!x6#TXcvwcEf^Yveo!1;}qsj!zz#q`C0y;@+?YK%FNY@-*IN6^vb_m{0`B}uJH}m#M zt$7_rs=|rsSUtv+EMlDdg~xwY=0Ry(FFNr(-p$C!Ls}^erfmaEC%*`fjD%f&y+bve zH)U(S*ZKQK|6P%ByobW)(n+V)vVsHx-dNB-&DbW7OPF$Zc*$L^zOIM3Jr<8gE$hO-ZuT7sGkJui=+a-V|Q&c zXyyAd_2FU@ZAM6+UjDC5$3ObRz>K8hqo0d{(o~6qchCR&uFQJKA8XhD!*IwSXCRop z++uO)<;v(_{xKQ;uX;9|55k2~^!yep_}-@s+SGDCT1@ZO zZC4@Lfhr699^q2&kj|k#5>~-$Ps&25Z_zZ?bxysz6~_9IGbQg z;)InYgezWF5Do@Yw#Elor#vSi9S~hsPdBEjelem<6SPpaQr21ge7Zzab|J6jsdxw~zw z_ODt_RfcejJ%41SkpDNWg&)$6(~f85Uireunv*7U6D!o(D%tVV13oP5&!wMDoP_+J z>OFOnAN?)@C7%5QWjf%^-WB1oUBbOdXigG-&syn(-k-9yU>G!{r~G% zf9zJkZzGIS^?StD)|cr5USrL?zi>`$k33;t4p)UQt0oY?7ccbBstfTt zLn-gFgHVb?V!Q za#(wrNrz8FL=BL&8Yn~3z;!^xw+;tj{?>Z`Ny=xiiebA}5&}ge)j+y^E1o`qGZKs-k$u9N_K6lU$|7q~= zf9Mha-^STL%^LpklmUs*g>!8ntqi4{^lA=VPurvvrz7CDCs3Bs*wJjHLV8w5Vq-()tW#0iT~oI{hD);L~c>h)}z-62~=2^n>{E_ zGXHb)HW}9SH>&uztev~f9*oM`$&<8Hem~3eEe*JC%hTmE8U>y&1cU^ zV1KUO<(6}%c1GC!seMYEeFi_dh6Tq=_ZfUiI^)#9WA~;yv(?zHIt_1q>5j}b?-n8k zcNv*9*=n94*wZM6`{;_j#Yc~qjQy0_WBmzK9#sy4+GT4PFRHGr9d7YolKi6=g{w2- zVL%1HgPAGhB37EV_Df33PW&%ed2D&nl!OKm8WB{)|Hf%MeiM9kkSXLEswsHa2N1Y~)}Mlt4p ziVn>NQs6{c<8BLr<|s~d?@~9BvW`Fkk-rLrj*mCE$^R_f;vf7D5UKYBiu6B@jlGGF z9UHe_++3uY;9YNBd3B5GeLCHpGol9c zu>2o>GQ+2EKPz0)SvE?<%$EBMl?>oAym-%?6nmPA|oRS&+qIQfhUHB9P1?^yO(%ZSxgr? znYRpS+iZ=WscERH2?R^r5{pRjoC-hsw#nmg)qdpPD2bh{={^-$l_x5Pl-+3UfakZ# zCd&1qwIGdsBqDw%VJ7xpq#^GH$bWaa0;ovp;W%FCul%(}^p61ek8@f7-(c=Po^mF$ z%vG!?4ZJj9&crVN7(i;JfL}c^+Wocl43qT=7f4+n#Hsy<*{p&yLaw;Oc-CtZf>*^=T?^2JycW6;B{hWydyFb-EoOdXV?M*T`Ja?8=e9s6G<;JFhr%A4L(D?X!ldQht$C947Vm%IK%aV)Gd9%UX}*Yc4KwzzgiYhuMqQhz zq$}v-(xF1-x@gAh)bOTTkwB7&@cfkz0hix=K7&7TbQo+{5fccDk~`W6-lL*9e>%Kv zckCc*cm2k&ZWo(|Lc0XPPCv!D3ys@$A<^__W!ac0?Gz~rN5kebRid|J-fgA_iaJzs zUAPey%y=Q?8KN~P$nb%|8MApHp$372vptqHk+Smh&@tPj|8DKJOqTzf@&-Pp6dLR#(2sR)b2I%0 zj<^+>ijLOfh3g|`0^?i*HfKOOzsC0r-KNrzk*y|L_cDt`mLfrk@o95Ye&xh;U8G^Q zoKUFeBwK*aPx8+Bb8l&GiK(PWKL~G6Gt%NV)&%EZ2cFa$*3AijLp=uW0}W4?P|lJp%v^CSwCm!6CS z=3&|xCzZV>S~-3tyEY#Qjo@O_irnP(^%}=&+2#Foa-eCp;r@%M zllDr5;2Z8n(nW6hSt;3xfA{O(7G6+iyb>flo%6bznq8w8WYm~rxlNukc*{2sC9Xw4O&m%D)0_P%He$bMyA8P}{#|*iT-ba?aMs#00GjI{#+lm7t)YAKM^I zCwYsvPFAk?2ApGFQCdS?F}SGz`Wz>I8$x3nGJ;%=Qp$1+v|-Emdx@N$ApZHfL^!Tz z{hol*u$|R-k$MN|LR;b@*iCTgx#y!yg0+E`77LQNZ$bS($@$ASin-1yU(@b-oWuJ0 z>T8Hw{oNr}hA%GQ=Z9GSPv!T||2z~6G^i*2d4y$fgShtB5mD;Ljf+1IU*Br-X8(DF z)p+msC#8{mFpc-?!v_KX{*)2+b{{D0G8b~v9sR?jAI?z9TKV`f zzD-Ab@2>}Uc6L(Bs?ZRH(mOgi z5dhj%lMc~{Dz}%m**dUD% zb}ly~O^|#;zu2;?=SKSnx7F1>WLsO#mAfQaG+itM(OCz09+hs3xiL7Bl}u;rqXU_9 z{m70@FJE1)3WPvh{nO*BlNNi_hCy-V+eeNi!#OiX6>fMosxmQh8GPF4Z!(m%*L!>A zv+?H2n;UP-`bsPd|gD7{yL3 z^m}QN#<*vB9vlY62)a%Xr3`y67Q=C}=>0j_!HTc9*$@py8{m<2FBepYfmtw#&K z-w~NvnfKB^xz1#9#$my}R{mkau10!>TOcDyRgEs@;^mMlYi=q^le+Y#Q|D?nCavSw zL6s8|LxwVn4ax>8AbAhm! z)dQ)@cUQDPMy*TRP|k4qGd7EHgOY}d`vSN5d|@zZv`%ptC?n!)h@hM=Xh6kCwg`1- z<55`HK#TJ?An`*zI+MSH#Yj;u1zyawprEq*(6J68+U(*)Ct+g0jt(nFTL^$yat6)YAyTvxMpsm$?#b7S-5ftp1qw;`!Bc4wbO z9E1@io*29-?yX&jAYK=X$2X%d?<1FdT(!1HJ71@iVT#Sz>=MX z$UMW;Du&)aHdNYYPTFqiAo)yBw#htEExFX-)er&fGKp*=1Ff>gpyk zDu#xs^pN~~>(R%xpm-E|V0jK>j66yC7Nm}amE!6u`8RJGGh1)KVny5)MO_ajvz+7p znqfa<91Q0aZbwH)i$^fK}B@eNU1Hx_H_Q2A6^am-QrlPIo+P!?M459;?LwzqKAKJSKj zS)B5lc$xCY8n5qhzQF~A1k`N>Qej-oz$flrH$Cd=trR`?Lr+h;t?ail7n!BE+a2zj zqt7SiQwiiOya}@oIMpnJ8tfmd5a~9@Z}1#b>~s|rJj-qfCCTkwJK2mAsUFSEf1!-I zyJz-8&3tJ6#52$WXsHV<>Z0OTaDjU#hvRfd7-aad4pv|D?e!M^oZ)*gGfc#Z*j*of zVLYcn8QQ|KYy6gGpb5%;wwv<=|_5HXmPYqAjlzd z;LUidfI2byeY9S7e;}>qDVDrP68!j)*bQ=b$%fd>w_jyKl$VWl%?X04b+R<0*vpvc zWlVgxwyRH>#Z`v6+UB>{)0dsN04`xwFF#tDD?Eb`{j`uK8PKIc4tAnLGT$5gxJFNhD8FgUYCF`S<+uwKV_iML(r@QSavSxkh%P4ipoE>5JVgr^(rCafw zGJ)p7F92Im{;9$=a9T!PRDP%Cx1%_etPSRwB_-FacnCTQ&8FNd^2>PL+ zA$;vtjUrVT&@KLmK)mSEpyO)FeRbzn+4iCO6!|86wEKW*&k`ehB86j$_n!^>cK}h- zH#Wv^nT%ez5?OYjrWKR^(2vRaab=O6T|^|9Cdy1&y)H(nCLd7e@i;HJ&nED{mb$xx z3tJY_>?kqo&|(98WCW&YBUYaoA}_`Zlq*qF7pT2@%O`uvi{ESRrSO>FrA}B9g!ZLB zwGG4OkL3R^B~Sn8!~dV;YtYW=u%0gFpSFlaL=jgk{Q4!41}Z6Gvi31Q+52qIWoqQg z8(z&~;d?(-2kRCNaV_VZY=^48V)kwFkE>sQee}iK_SoRp;Xh}h5r2#y<`{Hk+I2rE zKiS5MNQ`9wYQ?Br_uMLvv%5u$L^|Z;)I147nwIR9>^+0>j4KF4s#MEbtUre^JQ!3sA1jRS6;m(ev3T_SN^&t> zlDO8#!Sy)Ecc#274OZ>9Y;jes0dFU3FQn7+EQQxTeVi{pRfzG59`0ZvKELZKk;NQp z{CGAa%?eUT)ONvQZ%N-BUZ-DsrtwvHSwFJDz})BPSu_F~8cENn6yW*n$aL#!Hs4(6 zL{yRyu(ZfMTaB;(c20D*T8O6xfL#t`CJi3S+(mq->?aBh3r(+2xy>MeU%_QFLI*>( zqLyqN%lU6aD`u&Z9K!mji5oON@7|n*u*nS=F{dpIxI1o`?`=$!yv?>G(--%>Ab{aNl`CkV5MY5QK3G0QLg?;_MDnv$t;TA>KjO8e`*~G$6Kuw@j*!6AHr4= z$!EJL5-lTFVhA@^J3=IBiEuihD zRjac^#!oMUg=POGjnN~sKCJ4o@zQiGdDgLnd$&VS^@|oJ&kZwOm-8d?s$*M1Q$lJM z8ox8Sg|}oMH+Ui<5;Je8f*zaKD(Cw?t-HdPW&!UYLAUFwwp~1sQ~xzkejoFB2l%JpTSz2C^!(502IC*_OkULUrImt* zzrNQ}T_Q6xgl5sPi7&mwdv4Wbemqmz<>csFbmNL9K%PGKE@1ap>4k>3^NV*u`fhvs zS6mHM2*Zbn2Z+3wc4pnQXQ%tF(Sq=HtaZOS_VffCm9;EiQ~h1N$KY$APQPms%3G1w zSJYs+RWs8a%n(=}7xww_UT)VFLgv9VRmN;?qBq^jHI$TyQu?-MT8gDY;Z?s2Y&lp= zjOsP8hsNvRx#z+3bWd5RTxAKt8Lh4Zce+2Pk8iFPm}$PHZBzL+Nwr!)?k{iZkIBsQ z@t=dPy2_R<=BJd?CT{V}A>k}6Z+g(b3RV78-J7I^@6vZu3zm`nI>Mzwni)2=r6R}9 zm8ok1`Mj5m8cnlbcxB8`PRoodA2QW!j)z^l-(aa>DqXVrIT!%VPw}xP%h$0wfWpki zB6G5>*40~g?$KH$Y{3s4(0jlFxYCY<3CS;q_l3Tz*SjE1IVZSg1CJktek`bA+-~(S zGE_A;ou7~02(mZ+v}X5+MSvV#1Z{P+)~r_ZgYBn+J#GACugjB}#2r2PFkgrCo$ry2 zf{-gDUH+w8*Wj(4okz*^7tf!QQ86`zfAZ-JG#)SFl)B%bve8aUdCz9xA$1I;W|mw@ zCgIZJJTEfV+SQY)B0dB4&dR*pP0~-qLyo-`6?We-kSpC>0}eJySG--9tJpwSFhUnH z!H~&>zvGZyv74gkg-YJNU7H5B&T#*=H3^*5+}uu3T643cjEb)AR4&2qh~s#$U`hCk zRxA#l|DP2M|Acuan2Hz%t05OHcraPT1W{ywXh*^E~gH0U9#T?TXt&!l&`nYHO+#K6{ zqVk`EaIlET?i=TOJyTj|Rt;z%s`B{lj9+v(SQ0Uq|3b2Y>+@D}ONoV5es!}Y;iVrG z9dckQq#vu~6YapTbeu99WtnWbPUH^_U-%vo*n{XyYif~sR$7R?b`E;YV{`s0rTI;5 z2h%r(rG7u$*=x4DBGb#e7JUf85_6ftt)hX5+wd@PTIAlPp)qJSIOEcgI(T_BQ%a5G z)>f5C#u^$;_?gXlkz$2_Wc?@vRR zJw7lTa-bYBWn>w8KqIqREX@2vHkLeS?*c9jXP`xtIx3#i$SkQ?kCf$pPAx-{UI$Yd zpP~$eti3yy5eUdL7m)hsebq7B;6xB*XyD>Itoj-$A2Vh8;j`d}EWZZ(< zi^h^|oJ#L?5WtXV7`Y;V}a{S0gG6sm8w^$BWvN)`F zA?tS4DzkpGTdk9imJV*Yw2L|S&lljXID3FlAR~_gCgS&bX1|qXE*aw;L7$^xrLamq zuWfI2liamP1N1g>d=EjTMu2hPP4lF!qH8sAo_!SwKM2Rdk|?&#eC#eLIB4NR8ee8m zvgH{@J?P-0mA@!!vCma$q7ncKwDqFB(m3Px(^jxJs+w!k>;X;slvb4r6h{QE3$Rq+ zHuX(JYi-Rqa6i|)%H*)JUa{%WJ|a9iBkf^X=Nmmo9D%_}dgLC#{TaIs5)63v)%>1} zR9i-mA@`?1k2N(0^t>XQl5>05Lx2U9n`{pCqHWj~EtWt03WS&^8 z4;{x^tLkS<5H6ZhqMTG7GF zTimIf(Xq1YBI4XH*5V9-AP!QMfz0by|<&PH)0uvT$fCg0y!q?I2 zjH1#iXb_23g+aPHYnv))Ae1FfBDU^nTKWgTPyrelN{*uA(NWc;s7o%ms<^8)K2 zuR9*EW(ysJF)MkcP1*8mRigE*CMxC0tTX$g*85f2Ms{Y)3bJhmU#Ba#_9M+y>^Z3i zc#2DAb|*KSw|rxE#@4;^qk3?xHPiTdGb}U;7PWdoDva0Tn_Y}B_X$@5DREW@d??-}W9mwkaFny;d$ z##E9ZI%E9TeOpYtXq*izH99xA9B5afeDzP1P7k% zxuGR`6zazEiK(dvrkZjh4Jx^91^`RzVBJ2S0COHEha4E^oP#?_Vg#gq=Y7uwB~KyH zThpEC79K4-K)#M-bwJs15PF0svQlR#E8h!~6{V;gX||JXZ*_!e_F!!o!#njLY{q1K z$FxCm+xgVgfku&*)f#JGzLk}0>sC5!5UV*nr;GTZ5B`d?^7{f2JnURYk`>d>Jeob& zx<86;rKl&8D^+K}Y5?izP3s}^p=myJmN9H18FWF_my8kEXK-Mnd5<2bUMWB1T}S7v zys;AN=H;A%HgJci#Q9d6`7q0|++M#)$4dnP@KB=_3yeIZs?<^Qobm_#a0?mKy=60r zYg!n38Q`sY5cf50fvvCI^6G8A?rL_&C*mVJU&oZ9e`fNHH>6BV76=)bh%QTm1Ox?b zP`1(v@DPNKLQbU{%D63}VF~kyaAQnL>g){3E0iSdx!qS=1{k(*XBoUkKCLcEgvcIz zKN~e<<}!zLo3pK&<4%8*pvW_#H`t~mI+)N9HP|oA{V-`ar^R7oRIOy!mtMT+F=)x5 z{VMWa?^ymY_^xhFO?E(W;&NkOxBy@%CE=Qsev1pe=A)qmf!qP4r=45%mRrqMxjdP= z^s(?G$5P&`g{_P6B2LQG>!SG`U5}rX)7k0(gj12Us>cG3^&eNyo%?7Nd@x>a;RhB>S2k3p?%K7c9dE|&yu_vF$}(cH z+O9&bZlHUv$UdanDu*yu0-PH?2&}VraB$4I`jR8)LrjS>U z-V_a7pL>8aI53v&8^cnmGmrt*bkUQTa9J_znPrgKnloEgRkF~wecKreTYR-25fN69 z7U&U~t5e{(?Uj78)$Vf()@|x%HIcj&4)iJvSV(8-Gt6SgV2K*3BP3g)CYEM#Kt|U+MV;;dY%6F+-oQHDqq|efx)+y?_zy%P%y9O z`|t37<{{_a*j70OWGgcUH6zU2kn?%Rg$(h&(5h7#(OfqS^DL1jKrYv_oIL6A8h?PA z!L``wJV86M*~wySK>JU&2RzM#^8~Lpiu@WofOV}$XwzO?R$82j(i=dxe`Ce(PTmou z8rh>_QVn1(Ig}C|f@VBGXEk>YPQgyzl+Fv>b!6cxI(ZL9THd{PvddQKzHJ_9($w}~ zrvR9D?xML8;@t?WS1PJ1!|5vL^=GIJz%s-!+KwE2-Vc~}vg}hF4&<`BLJ5Fs3GZ)s zR?>;uwt5yDA-R`Uq->Ug2)naf1N|8-d`c&s%ZAyy)Q@^ej5HBu0y!a27lrjii=i(@ z>jO7N`KbJ4sgIT1+#KVY4^!9CTT#eFpsjNJ00pXi#iiOh+pJF<)?ey_%gLaboJ7u^ zFp`dPLJD}u%FC+QnS#Z0-PzfC%hfF#A~-*@iW_@>jYbDWg`Rm-^Hm;6!Wvt*xJFpK+hn5%=&jHLU#`NJE0>%77{ z8e_7kp`IP}CL_R{`?FW;Wyr=#dHzgCCPH`iaRh=loC@PkRu#uMnD{5N7);5q=Twl+?i%+GU9^JP3nnU|bY02cGMrfq8ZXH+6Ni2NIMD@8zAT0H~QA@LK* zkU5eNL;-b`?h>7FA--zu3W?iB^z8%Sp?!^=$q{^HhkEa_kY2C^3Dh;QbgD$wr!8N5 z?=V?{f#IWyYVPepOD)lB!UT%DF8U`<4{J81!=`NHx66g*SH}{NmT=b(!Y%RAHloG% z0=hM%_$pTUx8OCmG$U$)W9N@Q3R`;V5{1F5bVClG3D_Sxsy>TVh1X!!Ufm}EbY9I- z@Y8cqgyQh#aF+mhq@Y7pQRSbAUQ2Ifxl9;V3c^^#!I!jpmK(}Md*8P^F);yH)?KBw z?Mv=ZZISUW*Fu_%|uAIFP zrx7HxM)+-1Za_Zr_QM*bL>|@wx0WZA2P;{MfLwJ|sSs9YP|=kri{oJ=vy6TFD`T^U z25pCIFw=Q?~#uTg%HUZIj!6hLz_6b|F)*~n~H|p@4OK%vd2Eg^p zQBkEg5Uaf<2=XC5-W9TF2Ipeq< z-;?>n>$|b;-<9JOk8vHJyd}25)UmMzMu4aF%7B8#|VMOoZ z=1FtUwLZ_E--fEG%{NNUc0zMoFe6$_8G|FxjM~PzKGCQ87A?x-tFa|_`cCJo)(=Y( zrab4H@z!6Y-uKu7C0MPD>?LY4)-9<|BPJpa+T6424)T4-9lu37m&^&WV5(QtJKgXu zK3%F$nqBy6m9J{mm5!=x%w1DxxghdoBz4K#rl`9>M#lQJ&0E&4mqdqdm%#z(mK5ljh?iiRzu+r%%jVl{< zoP586apab+36lFl9aFd! zs!6{@)w=)#u(8Chaz+-L2W`bq^VR;=ch6_;{oZ%?hAnc&wQJYN@?R5T7O)#$h5%3M zmTahD*-s$%$<*t#x;>KKX;^u+S!P&F;0N2`+nrC{Rqb5tdW=8v({X?DoAXC9ruGe`4HfmZ^HYbT$IM&4fZSTtOs084`=PNa!i5L;$l9f!@mU@n z4vSRW4zAv0K~HwW11>s^?a78HTpo{H!0{s7Z5hmmYmIW9z+L6%-uLyJe(I#CC82cF ziZWyxJi@gP`$Os0og{9_i?wN7=G%Sq`y%L9EG+CvI%l(6$~H;EEx2w$$-; zC%*t^wA67!_cbrZ!8A|N!!T$iXZxFu$h66ecxv2rVh0tPTbb!h41J6t9ZY`LQ~*k4 zmE+oj&w=Xh0C%N%x}&9#uxe!rzP$doldK1-;gL7iBRkC65ro;P5Jim+rKMg*zh_V( zl-_70sKBRbJ5tal!47WRkr{G?OHrk!?idpjaN zCh1{;YBDtGyl%X?O>G8(g+#!1G4y`P)Q)+5M$42uET!&%kP!0Xr6g#uU;wx;ikvKL z(;FFpM9ipZxwpu&F}16kr%0(g`)MKWFRi?9KGMAkzzOr zz(F>~Z}YIzJ!!)gi9SA8!lS-C1NYn6d=s8My9^}i>bx3xUy-ox3-0N}NaeMY>#j+= zS;0e=L%TwLojWR#Ce=9zb`iu2=GAVS<-@9*EYMGb8ps5%-D1%k^Tx~+?QQC#G87bS z$v>2d*aK!H)@rB6l2X1TY?a+;LujPdWXKLkDd>{iVCe=+w~VQqC?zjtX1y=jqBiffCN;_gtPP`ng(cM0xJf#Sto ziUcU`PH=}%q~># zA82R4bQ35)k#AL|J)TMjJX@^Gb)W`+(>@@$8pSY-i6oiBU67J6LP;Qp2xnQdu5SRU zAP(n`9l8kM8%5JsD4a);dr{j)aztyf8rC)|;w8u0=QPYS%65BqSKIaVRS__pIV_n~ zEnK{ds0(p$Q)4e0uqZ%FVd&ktt^n2T32H0xCig5(vA%2*Q*SE$vS<@|o`HVaAW(WU zO+h1Z8mX-A8G9@Dpq;jwH9I~`7jd{4=x0F2g1p--x}p-S-et|JUJ}pUcZ{&Kt=hp4 zc*&-&^;4nH&#%W;tZ+s{OkIELM@GZD0SX}JA7z-h-}umK>ZREm_e(8zK!R2{$=9(2 zvWs#dm2xx6cyw}}kx>1n7tiV?apY!xQ5h|l{W5_AC78?}3Q)8XpMmBwH0R1z!~{Z2 zXPk#lP!Tts7orhi(;ewVlyQM>J=r6N?%2l)fAo$Be9GwMvIs18ZtdEDs?<% z0CzVC(Jx{*a*;EE5w!j{cDnm?J~{+{=ZB{KBIUP&TtL zOiu-kN-jm}4!jj5zevp8q-=mydwRVOBt1W;$=pp>?`@3E(zNH!_BC6LxWfJAKWj|( zs&BJ*7*Gk(%pHP31s~^Sd^(Q&SB_2RF&f2#eCLbDB8~<0Tm@Gi%%S0P@_Myv$F=in zOlq(GXCN!C^fN&2Q{G;cUw;Esl*cMtA1B)UT9tlw@Mru(P<=&Tg2MkQL)NEV-t-2R z0IEJGvLPHLnvM(ZwkM(wXcL{mAgy*m%MlyxgK|h=npBHBCKW#Gu8X?6t+j27JFHJi zIUxU0IpS(?A%d>U%t9RqP^ z!{60z*Qm5s4Gb9Wwo(0#yoOj;~Sh9fn^YareF7DuHJTG!7efz@Rw*6eNB- z^PKO-Ytc9ng}?l#-d@zG(OJBZDo~7n<3(4?1#oVztm-%9Q=O=~)_mC))jCB6C7le; zGQkkSE}Fw3ol+&e=xqVU^34{A&mp`Fv@fu_J5RqHM>b<1B}n(AI_u!<_1ER~hWJoH zDU}idTB@d93jZ#Zt&RcUX51=btO@>Y|3v8Zg*c66-O$W?j~uHwYu?>X!Q;HXY~9-_ z&xY&NK-V`sW?iXP<64WE0-~qAfQy~o%0lI~1yq}H=4S1gdo~Ax?J2@c72ei8`A^KD z*g;5dqiHAbB^iqK%>Ypb{5C>~>KLOqf zb$_!I$ROM67b$zZAmM9me*@cJQ8lp4qB zj>tMM9#>oU18q=;Q?n{GY>qr}KOU+sH!YgCoYY@MR~qQu^a+Nb){EU;VE5`gHs!W&3FK9gJ$NWAF(0!Q&0x1(2rJ2xkA#J9&T zue+ztRaXs)8ra#Y>d`Z*9Eg*Uew&ZybITL#?9$Ap@zf;yg)@uGC)nszCGevO2D&*}UH6obnGu zeiPgY2dND`#h!E9PW+|ov-SCut(selweT)jGaZxD0G`E+#c2JOfKGLWt@~TdFUGrF zFA3+Vo~BqY&!4DgvSLr(t8xYCS7Rxyi}3*G_EoowDe>8JxJnZ8QxNu3cTt2IV&-CS zPW{4^{q-Tx<*c02{##d>x>WWFs@w8wL4&SY{sSuKtK4{{KyjA=)=7)cPg$o($l>5j z8M5j`8t6>3kolO!XU$T*iL}YGjy9cDnGW74(sF(wIb}Z80fbcXkZ3@`uB06;FEd8v zW89mLgobVAY(xTcEA)rGE?6-8Z`a17WGvQzbJOKjKkn4NoydPa@P*yI!F~8^ow;yw z`b(~l5<-Ixh)u`78|So&Kclm!g40fWW;q%Cw?majUI8PJ%>n-T_{yQ4L!fg{)*Q2EyLXr4irVw2%jhbbMKKUWl(4(cttOl+e}!4B=3oC=tPwRI zI&I5aD@MaPb-LWPIfk`NO?I1>K{2&Xz;el zWK`hTe$ue}ZuuqQ(^riFS5)ZhIljVx`R^FUNhaEpdb;}lF8>1qO{*Vr>1JzYsf*h% z+%@-4rCz=SS6ckpy!<0k)Is1JoW(K6;A(t1pQQ_~!J*8*_1UPhT{ECG`pI&{s*%+? zW#tHN-aCYTfR@z#HtHAc{_T_#o5)0YxArc-#|jtpwg0x>vieK1E`Hg-F_B~MLkEAq zHp5^OgOV4Cod>j}wfoM5ng_#>(X6{3bzrOhp+X|_`LYmCa))h+hko7>zW($R5UTUe z?x6 zj3l?O1xTRDQtx)h==M#0y&_IVbxQz}Z8BxR;@}+yA9$#O+KqyP(TK!S9sRBFg%;gx ziP;3@vX7)7`Yb(CPM+G2rCY1TaJjkh?bKXV>Y&e@e&yG`>nBnJT&Sq7T1h?5zqfhm zpwAFo2b*j{M(1Od6#~$ynfB3S+rjdSJ70C5jZZnP+v#@mn(+7O7P6#hvk}i}`pp>|&-U zA;vIK4QN)iFUT20I+2ITK4q`$1cf-@|7vy9lqEQtKl}BYE5Qm3AHytNH_X!Ar3yVX z79DzqYWnCq=$hjXp4pEZ$~|7ZyYxe!C|!08)+4wMALVn`n5U4uQi+Yi0@V{4W)A$}!4nXkv(N_fdP<$;&kCFde z?i(XETO({vLiY+rrykt*ML!_;*0NOw^`+a|$Ch9(#WQU$a8cuR^ZNAdz_V>JFY|?M zTJbWQ(6slsWjkA{b1@#hc9*{@ZN81YT{Ue(jHzFRJLu-vh7%@F$X-U|b(X3z_(L-o z%Zzdyh>^+}Iy=KN;g!+7ha&%*K{RM_Pjt>d&W7Agu*svBSsF0;nricCOe2^-n0BWf zHU;s%>1xkB(Jbg)1GP@Gd8I(#CQmWEL)bBm#|x;M>$~bskoq$^!#8Q`8fP0HTI2nz zB1wWXHqX7cJMKPkEpR9#?i-cUAX47U*?fiz*$fSC-c$$vO8tAc*Vhgc%yzF)R(#*H zMT4_A!v(z}*s6d^Re$l#LE)hWatv(?1{uZM5C7=HM0ChtLx>vj&#}ljaI;saW^q;` zJ2u#_=p()v^|k(hF37{sizY1dVuUWB+CSx^2em}3D0=<)s1twy@$XBsldpXz{mmATEMj_g*w%Q^P|k(cVob^xC8xeDYS4Dk;iab88_ z-fOz2FA)2<^y6`dzMrIjjrE-I9e0RvvYcuG)0v^(xtWBW?>yN5D#i2I7q*15cF<|l z+FyG8DYzlMC;P$k1gywM&x5<^6}z{-k4UUGa``;K!;xt9d3b^9Nc^68pjM*%>t7q|KcUCvFMmEmH5}>kTLr?d)I+$yfI=l*miq(Z;35hir(S&m4u9}pJR2I z3h`-s?|u+x*6wogkObv)rlCN{1K`b=mKTFi8jLf3=wjUBY`j_6y~D_xCIV#`Y0Q4HO-qX4gu=m)bt{S=B08DML1n2+u_RmBzZC$QE+*R_Jk?d}#NAmpxrCaxk4 z<#Y|@xp5*A9x1!ra|oVTy`w!(dr%cm9I?Hv&{0*%&lsRoV|jpqz`?oM?)7fwgS4)N ziIF8LuvueT9b!Og4Lt^{eLK>h5I|M_OmaJ=OW{YvcB?Voer>eDynxMe?Z}xvH|?cA zFC}6Z_+GK!7k7Dyr~M%9`|#sBi{kVV<|(g8h0ah5KF;74)yjM8-+niT5Q{jx?6Q3! z*e5KvX2YM$54lJ5YhtoXRatyLe>6zA?RCO_m>)~%mLY<#!xHADBB)S=Xj|c0DFIi9CJ!6X?ov>0?BYME?R02%$QfPY3 zJ10Ut53)Mg#|^kPVf2z~X_6~?-ywuWT;tuO zbQ$Lvx4alO>d5sK*; zI?#m$uZ>RJ;A_wcB6_cEC^PKAP=OdDV6YdeLNAiT7f;R((r5V66O#Mh(Z~{J7py*v zv5um>l~i#|m-YDYQhBC-J+3E9XLveR&)eMnPh$jk9&Cs3=!pLcl_DL5xG@GF*c6|S zn_T&yOTs$Pg0O&&G=^QOQyt^<+AV-z6pN-8z-PFjJYaFvC`KUAo(8b++h{?Dz~KmF zUsmE#Gz2^sue$Va*(9~!^BioYp|Z_3)@wIGxxSYw+*fg^FbXYk*gH2vTw8rMU^+ro zP=m0^Ysa&5d_Q*5&F_Yo6b*4U8O*EO50Qg*Lu%#`Bi0Xdvv4HO`a9BUDrxG=10ugG z=Hq6q+Yz$xj8K>t`9wy0nBBDR+k-xQl(^7G(}TAM1(xvdmkvq~Yu=oalmF)F|E3M? z({f2Kyo}b)IifdRlDUH$kvN&dXbGq#mA2m5a)01>ECf7alkG{< zv!%s8Jj(bk@rV-YaLdNouTYBwG6#J<9N^L)qvsUuT}H36ENiB(*}$%~{@Bk<@oL&y z+`1l08K>`DV)=AaUSl{+z> zhHPJ4WBSr?6r$gMuq3Tz4*Fy;681h7M3*grv^Vl`lsD>=3^)sSB>y z$D68N?RDg+_8YeGn*i+oFG}+a6 zMaac{JLHfxWLBuC0xp*5aO>OAW+uYTP|WN6v8)LltVsR~uO!WzP(n!!4ffjo09~ZQ zac*t(@*OjwG9+a;l3W8&oYnTEy$+8YIvki7$Vz?tY#CiQGQ1RfIG75)!r0r)T&&mv zYD44!2ZVieBl1(Eu>Q#S^0~u~1H~3$#e+(%-UgUcHP5a}(GwNGHva6<{5$=Q-=$%paY8%HJ;`t-&FM)n^lpYKt16BN*3Urj$pV(9r?c(c1`*D*qHgwlwuV zdS?0J3Jvcc?1Zm_sn~>6y=SEuFi7hh1c)A@g)$zPV;hU^%48{Y;1nQ*!B3f zG4E`28T)pi(6#Cqe~S$|fhay-p0|;n0m7ltAy<8wl6I__t~#n zuVKkMR#36V@@ZSP{?+zQZ4O)656Lt}doM`{R_MMM-+-XfoOX~O8!r4?+{|llCXxM= zqz1bl^}Y>!2FId=?~bTxeRf{$FlTB{7{PZyo&CFWJ^F5gN@l;?lrmc8d)t)Rvx2rnd;IWG;c%I)zKPjV7KH{R@tgS8DWyWgD92Ie|$yST# zGTt|XZYCfj(|_94hXFqW)T-=vYdc`pHv`N$CXds~KKRW+{Li z79S>)Diw~pQP3$bj2!$CDn}=f2Q!}UeRu-)H1)FN17s!vCJj3U+Yhu_P|<7NvWZen zu|h{jTt{yrJb)}kM1Rz>rp;8mPe__>B%_?4EzH9fyba7KSr+EGF!ON@!!NJog*OJo zHry_V-%&Wer8>01d-n@hMqk_+XZ8~K>h}2d^RyWms>*J<$t-EBmA>QBKQW_b7Z|KK z>x+w8;?Xd2Adh704>pVw2T}VT&OsL~JpD5souSYp~wm1Z>f)zm^^kQ^4xgU1bJ(+ko09w1 zYi=*}{YC7qeCeNOFy1;ixIN^=GZp8VAGMK1zLI<+<z)jZsONmosE{(i*$a-D2%pVl8>@-Jm@Hs`X} zNTUe$&19kt9qt_%j};s5**R3H`R)3ro_95v$a-t|q_FVrA+!qq?r~Tat$E};RHahCT^hS+edTSD!QV`{)16#>Cj;iS5zBoa^0vftSFw?S(j zR0=_q7Cs~Q%}iV{^#X4|YiwNzQdqjCqW#=qZ9He_==#wSEJ=#9+0M;B)8;~NkWCRW zrd(((6mCI|6tCKxTQ4dB)u#5nduHX?)va|ND=2ji?xg@N*Gwf!Rca)OP`}E!` zT)q3Cs>qZaB_2NU89ubWXAmXU57JS}mQeddFGUqWq$DHraA)ywd$j6C0D>O)f;7{T zvNj6*Z5OjWb#;MfNsgpWy@>fKZp4Stk>s1C%P1PLs)dDL8iAsaOS{r@ zGw8L|&oeqqn61o< zeXkKMe*>wH4rSr|y1XJ20q&)sQ221be&T1!_H4-2^>>wRT;PRo94v~#>gpjWr}l8j z;$puDzCPrGV<3B;NIhh&IZ#;oScwk3;AS8p8B!w1y-Fk;thbJOZRAPVNw>G|(r!|t z73wH-0=c(A`X$}o^nJ-4QYVl#malSW2vn>9;$%Ktb0!xi?&zobLRYtv+3!mn`pEks zzW_hJZb$6(CwpHnR*0lZo#m}*lcZN>9a%IW*MWy%yhvwU{#n(h=cVEU8G}EGG5b6W z?6g*iJ~otx*0ALr%Y$p&vo~kM97(ypcRLj&CfI&}&vEIPrgs*3LSHc?Xn^mGDkv|^ zaegc0t;5nD-i`TP&*atCiyCiw2Yt_AH+mkAdp!nP>we%%)o674O^9%OU6yKw$6zL% zk1sXU2(RX87zOw?B5ytTH6hUCw;GCx3yo^erkP}}THgZ=Cg+;iN{y98ON{4j_HwIz zR^a)$e{(Tyw~1el>ERj(zS=Cz22jPJEb4zZQ1uB)OU9$T+)FPmEUZK>8l8|UxSR+S z_$0%XH43*&;(%3RY=9e}BwY0BeCXhy=v) zln{Rbg}=dA$UvC_@DLJhr5WcdCME52WV#HWFR~kAo_BpOe26OI!OhM3z-;#rs<80K z=-b~?6Ho2l7!bI)xOjU#B((#(JAvV3?~8?eFa4Ac&c(63E}4gnD_ZqzRIF75y^}C< zyeHv0xs8ezm}qdneE!$s213r>^!8s$0l z;qVlwuP3=^>qw43pUN<1Z+r7^f7v2^Vg0MYq`H?-P7xl4XJd~L%Y?ulVTwLlXl>2iopOi^wQky z*89{dx(&sqt$P1`3Q4KeRjrSTjw}B2Kq2auRly2FV~kYf6G^)Gz80O@G?r#VeM*Ze zd)xZi4wfs8D~J2&B7e+_H@X?%QfHB#13X60W8R(pYD1%e|FtKv zb6@Ub|Iwf8j2sLWv-O%sAR`YdrFNbdq1&!4gXM)PVE4^01hHPERXRaK4=Ok(X~hPv zzg<7!lfH8koLSL}$5(j)!CLlqN}mS+K||2pfiis zKQ3>L+_6In5*^V0UZ zmQtQ%&P0|F;WdmQbA5S+#g>|gqURkO)wfs*6;l|{NOQn-szcZ0IucLdh z-V>g8KZC=YL+~|~lL6NEb@B?$JqkR0%AfLeiJE@i&Xjr5?Cc`G)y?B*2Ir_9rkTe@ zi1+&SD!Ch;GiP*a9dG7CBx441WEh_uGCyXDt}(NSWP-8QGw8Rvt_l(ltspsqE6Jb^ErZ*?M4?N!%#OnT1|Mdz{ZJd^zBlT51}MpyLairVv76J!}` zgTzq63CGChb?g1Ua@}g}cq@Qvj8hVvhQEm{B_D|C&0b3z31*(msiYVT{q;#f2YKny zXe~$qGb-@oKMv+V+MD@=kDdP5ipA@)uV1pUgU#q@=je-H69DokH+Xm~aqQ;7%smaK zDgGl7MsvnGmHKTjY7pWNfFdCge-7zvu!U;cGBVo2BZRhzY=Y)ACMTij;J!j&bS=>OQzb;FqHbe>yc->1TXi3*v=fli8*wNLt#l$>;LGgs$CjRTSdAoAcvdupkJ4NMUo+eQuZT z#Wx+9?_=*99G5&73VtH}@PyoyA!vjKj-6kAYd6VX!NND!{XK^15B9}z_fZ>XAjMGB zp?2phk{Lx~WGKSvAPwLGbhj_mK%KOI(i}GlLsnD-*mTI{9(H> ztUWT=ng=)i9tQ3_c%FFX0sVc@JMWGE3;kp-^&520Rgj z;D7-ohO_Vc?3q;A9M;&JYA)-8GCltiVN*ym*}p{?Ps@60-YoN)5) zM)JDFqT?oqNIy+!^KttUetX`tDhiAWyZc9l8A%exXVj!CvCa5Gm-(GGu47>igY7wV zZzVixVQtJhVuJg*&wACNEMX(?6}KeZ04@_FF+ti(1!=~HkdP1)x~#-R-ZfCHbxP{B%byzcO;?E|hV(YD@*$6)y~V(IFd`Od^ghv|8w(PfEx7GvGAH zobX)WTIaX}c9(eov5>$MhtJnA?hk$w+2s8kx$j9Ei2X!TLa7~_oR(DlmLKtwY2~yr zWJW9kg=qrrY8Lva>54DUg}x&%I4&o4dok7JjZ3tRRBPHtcPw_i6=W9j4{*N+UH5?d zdq!6Vi{SRUVE5BmS8M3V6c|V}vv@nKJDrV_S{-6g?blyyr$Qj1e&U^Dur0}sSMU_J z6I_hD*`%1YKfzp%D0tYotxnKvh#C{ALD{xbe(LcL9Buxy7559jjw#PUA^!c!cuGZf zj^sPgF1^PRWv-X)BZ?kye5=dGbF0D2!$wtWj&(&Hr;Imz76OD&p|o#Vl8dfCxOXLK z4QXzt7tRf~%)iHGj~6jj4*Yk5?%EJE1GwAvuqn^7Q7T>hC82a5w*x6C&*l;AiMmpX~WUKjLMCq|0q}qwx zy**e7X}{?;mwU0GMF5a=ehk?kYuRm=+Tj8)#vt|y!8BsM~h_#3BnPKO`aRk*RDC;5z=D(=I*J?6NmP+aY!@eZ4@POVI%KMm~P zf`7)m&2yk^{#FmAm~dYdP_8Lor5C?+V@H=s*uVYTQm*~|A9nPl76y;(U=AMjpo;ql zldDE})4y_sj2Hp8?%GoXOOv(vDj{?!wJQz!J6HJ3?C-cCWJct+wKX9j;ZdFyqm->c z-d1_E-Y}PwSxcQZ;t0x(_{y5Xk@I-`FVoJ9EpwT(iRk<8X9MfnnU!H1=%E&~LEaaN zWEplKFm$}LzcumcL6zII8HMm_LVtg8Vj4eff^lfe?LbAVo#^4oij1BCwgt)DY;(i! z{dy;vfrR7)l^%Ys1R$0sp+H3Z7oVBy--Cy?5|df?wP{2{bd<6 zQUv%LJ=W_L^@)D>GZiP~zU&bSynYhkS>f8Pw&V?c)W{;N+L#c-{zPV+y$Ovui08sj zWI}?|w1dLjLfZAD_-?n>TBI$M=97-Nq!cZmE#+Yzk}6fxprE0OhJiU{#ip!ZI3zUT z-54&!2R^)II7v|h>srGJoAr07YEh$zL5W4E0JaziVU2ESNy>-p_hO zeXQ`>Rx}!J^Y%w1J12NI22h>7tZF4j%vt=Y5ajebqhQj)aU9RK*=Kw*PgGD3^m%-o z`w9M=rbC1;iG`HWSTrd;@IH^v?juRDg?qydJN1e6M&k4cxh(^Y-uYtHMa!^3Q&{D* z*IqUCk-wte9_TLZUxhNfCI$Ei>WuIRhuSTz1H=d82*KP=gu-&#mww2z-HL07?N@3} zUQPcj(A&1|`4Y}At1H+VH^)`Khgyh=+_GRM-&9PA70S%N5tqJ=mjj*`m}G!=hl zIuLibjsXA@=j{cmj?A>tB(|^48NatG0+Q*fTH*&spZ>~P+CL9v<4ygx67Tq>5~OdP?R@p(?T&YKj;l#oCqQM2OU^!azp{&O;p?*Y}jAX@J8`b#g(hy z^~vw&z9~!UAbU*mevD4<<~`Nwuk9($rerJoQLC&$4v#CbCjB&nf4oQUSCygZyrsS> z=jvFbUu>w3Uf_6qs@9BCF)@fC>RW@p%Z#ZLWhcxbGs>H9%a@8OPt9IVWojXB)4roh zZZ1x#YxkkpVY>ksW+nwT_jNq*^e4XiC;eIVclz_a%*)dO+l^B_7$0I0#Tp~PGj5#- zxB7+K`(G@8Rf1pNd#uEnMDAAVREvF4WzfVkn9uc9>gyNTI0+E(9dCH=sY2g6JqMq_ zf(ezf=~o~Rn?+D;3J0D00HDs_%6quj>!_pZD$x^pS$*KWmcYS2`MsAPk6P8R4(L15 zw!inFY=0y@na~e()By{&y#h5xv_hBPr7m}WKjn33^4x8W>bv`Q`0dJplAkd-56O{b6gO#pZI!b*+A%+}+VD<5 zb12DPFF`KZWbNFXdvh?{U3)MS+*CZI_=;~LHaM6lEnxKWhme zQ%^Ocj#%#b<6P~Jq&8oRkz+35&d6$0XM2a*=JGN_VPK*Q$l&1aOTFn(C9pH5V8v)V zlx`2k?zE{Z!$7yUl2>rW!Cl~?O%^qb>Bx5Ih!PR?T`?vB+b=lx;E_0@dTzx7^_FyU z{1pdJ>gSSRPMbg>|gS&GPlrv3vQE1f~l8 zrXU^UzLyz8O}B6$kW!RRO0rv6o*vLk~>?v(GR7% zA^g?KS&i(?elp+1dku>{|B=|osrIco>}kOyrJHcitEoU2m^+PMy{phJnPYLcLt?`% zXDZ#b0IIL8AwHO8at4LnG?2np$pG{9Jzx#k+|8Ea&$Ce2;cKUl*t*s(SjE9IB0H{} z;Gfl0Rn;6FsAnmou7Of~lw8ipeTPkVf1W2IxCkIjvB+C! zp4^rWZM!TsY_&*ilKM{1^kvXUZKgrTf0ok6XOH83C6&2;qsi>qP<<65v()^(oM5m_IseCNxH0?_hKv47)KzOY$bNS z_{TX~2_5IKJv4}*!sOJN{-{w6uA5mPT0F;*)cH5{T3%%q%*fV7b708@a44+r0NB}> z(N^c0EgF!{6|XfVxTR29+XNRZ!IX9-0+kXy@Y40c*jh>j0gKE@=dHNu>M$nzLoWM& z*2n`hNQXD+I|Bon2O1h0#F_L&|2Y!$R z4n@`f*S?vIR1W$cL(CA@!Sw9S@Mi{rf*2LU`;dcfX%>0u{}_WGu#6~#PR3L0eJ?mI zSv=I7_c-oOA*`7sPSjFyHWiB=Qt+JTrH96OJil>Y{KsQTsHHT()Dqt(_sPmO7q|zi z54u1nUTR9+K8WU}A@7c9jIZ17l{%+mX}4DaejlE|D1VWclf$nTH^Waf4@MP)wU*wc z3H-Jp{`WO0I*G9T3ZqZf%Q&75e?I$yoRm7t3Z2-KKvsfNQI3p>+14%&U(1Lhg;;Sy ztIBl3srkJ20D;}3EhdUdjk?0uS@#h_3b*SjY2R1ad80`PB}Y>~?Mr9)A5@U!7q+Fx z8~P_bvY;VOll=E@Ch%}a1eOMmWhoiTy#B3RiH#cS1EOe4fei&HA19$HMQ`u1S-h*L z;aQ@DF$1V?YDB8}3i%N>w_?FG*;zMX7kJe>fjH@ZTydJVi&wJ3lA!ZeJRu8E@}@Ro zOjdHE@Ru7VqFHGdl1q4s||ti^UUYgTjRkD$?k^uR-USV@~4`HucM6z zSL0n}l^JnJ?|^^>G=wv1OqZTBB8&=V;cp@y_nrNZR96`M{v5}uakS&#Q&ExU>Gfy} zu0E>?xSZ)IWAEF-tEuk&PCD0{gL|P3?Ud$B9m8(ht#L@a$W#S=^{_N=62J`ZASaAh zBP#C&g9Z$BWkLv*C@HT`k#CpoFTgDTnU|Iuyn>YrDkHhN4Pu@D@mov`+S5AH(&oRo zN3`p*sY|d@^L{;oxzqrmzaC1=QTrk2=dik+5h3=MXZo|jrOj0b64z?kQ8J9ks5`S!Aw4%m#>G_JnJ1won^{xkiPk~+8wuZ#k9jm3 z_Mw1o1y`o6FWhF7IvE+}7Qm!z@(32@7tMW)Q*-iW4kAn}@u!QsMrw0BF&UXB=9Zl8 zu}t+=KXOi(Bt;)$I@z{~Sv%Mi)OMwg*40y^Zr^Ml|5PyP z8(N(OmoK%(bpM0pZb{N!WcNYG2Qy4Xnv8A-&cMWvUx(SYh47EDSBYncyR~Sp_ZeY7 zpMDYPtmD=w@Wp+feJI|rMkb!myFHW~!CvPGT!nwkHAssirXvvx9O06DYt>S$Xa2?V>8JX{ z5F-I>PS+!ClAk_If!nHa28Q5N`zMxPi9WH?sj60rbp6{d^18Nx^k#{MoXc% z7v?kLlCGNkt}nqXnOM|G=<2X-GNmr4oh~3q!<&{G%_lY*DmMD@g9}b8c7|K7NPpPQ zdu2hLmajT($E>va*)q~lyC@~bLi&W5kbw#v-((uDj>(^yUl3yul%&TMa405gq7&+! zEuf=H?tjkmmNWJiX|n~Uv#g6DKmQ{&*?f{I7g7(95&Nz*3Vg$wm7$f28JCsR&5`So0Gv9mOsA{C~$-$M1hK9!N33W@M zX{3rWOJ{k=FRTKoyFuLpQOf;aRYh%832Y8I*X&OcoNW~IB$6)3pMqCb?N0s7NjYhsdV}b6FGxPFqrvAnbNelLH4k(6^@aNu zqi{rH$-kaksV0*|%v^Ar&CG}gZ10NSTlB^9`B##5`M}+uy5?Hi6oe+v#h-N}^Wf(r zedVh)?`~|R8=%Rf;%V*E}y~oM2&Sl$8(*KzK(NN-TcEDzy_s{FW zJs0U6+q*3lI^)!#?u3RI{AZr7chRX?Rr49m+1nI7#(?>O`0F_ktmw7+yGbWvSZtAh z%|boRJc&RODz_u+*7{M+o{e~439Mu2E@`d->SoANdzRn^aeI+<;wwubdzE~NBxEkz z@zW$3#NVw(aep_eOF>oR_%3tR*rB5R{HnHfzYG!?_3xB)4YaMi8E+9;0l8B!fzTm9 zEMn0nlq0CNXz2amv7S!a{$Tg(DVK0W0OHA2N~4h!=j#lSX2AB(*sy;57Y^|mzI5@G z@)XAtkoipz!KdonEqN0q})$e(s9#PFkBEt=^O6Gxt z;Y5e!H?6l1Wi#2kl_0vbUB5~5An!mEJ>b|Y_xor=IV)Tz~ZEn8r=@I z4AoubpKr#iH9yv_9%J;sTxD0_4-E!|7j|4k?;`i4OO3hS5mruAhCc3N!Ic#(p9kaZ zxaNlyR(Ewr_=j{pxZC0DK(x<`1TdvbsfHbD=McNV*WTkJy5iGJiiZS3HQ0EaDc|Mi zf(?BVI{iaC9~ii2ub{EhaH35!C@MN!U(ph?8;OYJK_?*!XvF^UKLqop6ZbtnSf3Oe z^OtwqWFn!Lw+fTwGdwUgt(O}KE5Y~S<^H~MH79b?u5*KqtNrZ}BOHrS=TDz-4j+@| z(Bx|IqnkwHZ~&C-{Cf>*XVIVYL|mM2~FGvGWDqph;q@F@=ap3;}_+fhB1)nbl*& zQKK&MAg5X6xA^65nMfTeceM~4osxI9U)D7B#89NC3S1t7B|kIPfn1Cc-xBLUNd|-~ z$1`{eeyZ)ESiP$QFL;``*?q~%c&3wl(%oHfe9d`fK)VP3#wi~Kp0dP}c`V{h@o39c zs5q}I(mPpDKToWkH>plO%zs^lm%PZ4j!rB03;3*$$`6pn*Cwv=B`$Qz->!xI*&?gOCP?%`3HdV^MP-vK7OX@f(h z5V-Bl*;H-(J_b_+NSoAJdxAI9ad)ZKO&P(o@^39EeZ(j5s4GtRTx(?n*cd&m5YtWV z@Xqs%CfTY1sTZD;=tuC)fg~6O1_kf7>t*C^^{;0Pp8MumF7B}DOTtNH3FtQV_J3ie zs-IZJ%v&&f$?c)D-pyJ3lA!|Rsw-{~6aQtX85F)0{@$$m?namL;Sc)|qP))?xcCec z5$h|6Gk$9yMRD9*JLJs5lv!h-4BI}WHQo3BkHBTb;sDz(r>w&7;EA{}8>e3|#E$*8?|UxNw#yu)qL2YP;S{XO z{OHs0sBiz3-HC49PL+v5pNJ&tTEc_2mD-1talzGK-V&|*xJ?X@ksmg8yk(nu-PZm@ zg49SzE1p~5QNQqJV0{&F#^>duuNA8EP6e?CYa8=Ni!+!~eyqT!>z;=wH(LaoJiv)- zQBN$$|K-jv^@f)}P>(7n=vgSa%6Mbls%pS@!coFirwWSAS3pEiT+wNSLo` z>}z(3O*=d%hxk#tIT|lvivvBxWMvMHg?(1*F)>W9+(|tpYg57^H(QXlS^`5-Hxfgh z0||V-SkK7V&3lgQH?na!0k4{+Qo-3efYW6u>VhkvhP^{u6)jzl8ddtqU)kN2HO5ud z?GcbjpOzIza`xn7kIfTwUMkpALI3`X-)ff~ax;$nbs&y}3P4hC^(Elmw~3DKb&I5; z%j8WJQ+^9B(wTxwS0=pwFL+gv@i%zon@5~q_ESzlH2S|+?Qk;h zzhE9n_nTvU$#hcHh95K?CIH_g*j@yQH7UUjQ z?b$INOesZ*;|!-WKis(fJ@J;5;zNE};xEY6wBiJFpTtxGCvTnaSo_?2ca0>={~=I# z3(}S2VK?JF--o}S5zeNcFD6Y8mxqCUmY^F{GrGkrCKpxf&ir+)!c5a4ROXw;4&eaeD zY#lyp+%U8W8ObUs1~mU0G3nS8CN{eBx=2=YDPt41lW@Ut1rk0#i~So_>G7C2Xp@#h z()G1H`1iDRVWYqtl8PE75v^Ry^X8kbWyuzPs7W}#5r)Abh9s~sCpp{+SW$)~$TIMz zF5Id4VZ`k}Bt%I4%=lwWgBQY2wPu84%brkl2{w`o)h;^+3frA72Y$v^Bw1U5N_ zoRCl#;gd5A5Q7)scNf6zd7z3XuP-5^LP-QC?I zAl=NskV6a|!_Mck`&EB?_Uzf+v(I1mJZJ7R_j&HU?|Qx7?+f}~^Q8{(98b6_kcQh# z@M5JdaYr@|%^aEQgP^fwK!?-)oRM<7XVr9QVH4lH5!>*RKcW;=(>ywj%{GAtDVSn} zp$M5JybpVETk5$22vFqhO3e$jLcB<(TTbP$(#K%ryc-8staTO@*)*W^^aO?GY-Q(t zBIEn&=?!(h2T+8%X$46cB9^2M-PBl4E_sC+ti^T z0Z8GFff`&kS_VFibxvo7t$0%LPSM!Z@hzE|f9-R^eeX?LHiN}yjiJM$6*VPGp`Rr* z)|W*pc_ie8BM%moVVf!jDA;HKgk^i3jnKsG<8+D9(=m}MM%)G@-6C7^Mk&v$;=4MlBa5Z?z9N3?W*St5$K zpaRE`j=bkEFfYFo3*f$Z29;y_-ZCj0Yq91o^Nb)xZUtF>lP7G%Xf(a0um(2nP&@rW zMN?JLPo6AG4BJYBT$c3exdQx|%?sl*6}QVr1^j)~4z1-g;MOZDA6dlsfw?r2HySy2 z2~n5<@Th&zkyN)M78~g$#8=c;d$A*n?+XtNSOW|QVTu%FU5Kjq1QC278ya*q?j1E< zG(zyogHooJz%>0C5}NOLpoY5vl#$8bgy&Qf`@nE8=eNQtL|TW5&Gaj|y#-EFwV|wJ zxhPta{in5=Yi0bgp8$eZQzNCk@`LR{%kyC`g{%1E&FR$KZw#aWhKg^9EkZBc3OV(K zgLQeRmb)^zxq+q<4+^=%uP*KdYxp!&bv0#5K;7#x^lXfNVVl{k<>WrWT5vU>t27fE zcY5Y@>`4#d#e}wwgonDYfxokKfBctBrF8zF$p%E65ta2;f2k+816WhDK!AgVYO}=% zJQd+T0=Z_MZ!n|6zPCr)iLs90TOGMoUu1Nw6Lo{c>L@d|c>0cKT4~1bhrP7wxwzUB zgbEtDpfj^Y2Hk4p{gZ6);$QswuA~2tqQ+0VeOE7EG~K)2uwn(PxlkvuGfkbKgMw(T zLV_RA6}>WXO>_R#@V|u`1!`uUpCxcb>o88erLw*H&g`FXAUuLqCz+o$J8gKv)`9pS ziYrq6xsOyeH6)OBSboNxU5B57;w7&rX~Ie1KM;$k${3>Ioa4fWY|xdA1mCc5>>S50 z`whW>A;L(&chzz)USlaFVJ?bvbf}R!*L{|JbBx#!YOUTFRMHkDWx4FnzzlvnD$h&6 zsO!TZjXY4Ky9*mrV2Y&w^kMqt?xvBMhsaPpVVV>v2AeVlx8vwn6YI@iF-FIWTQXke zV3t-kv>yD={4FR>=ZfNTYI0okWBe>x2ZP!pXeH`M;-)BJ&dGIAiexg-Xr6LKxH|Qa zO}R5FYhX*b(CxYm?j9D-5enl~E`|lmJgW4nv5)W@! z#RYW+H#V{V0WQ=sF=H8C@Gra9HcYLoC@m(@@7me@C=-*p)I2{}A0@l*1}THA94DR> zS`@}*lE}D!!VV?*A8U{S84SiW0ID|9RkQ3!8su#l6*2GMM(z(yeS8;A>I# z2EYIKl_XrJ-dwB(+x2}+?5hO_yd#f^l?4S!2SP%N0(}vm_~F1|<*!Nc2B6~vS|E#l z`zPRMpm`x39@$QJt@pOQQ*Q1Smj$$A9inx2F3a~!yL!{JS|3C6YYb?0Uh;mZZPw#x zYs4?k5gY4u#u+p(a0gPfs# zZUj-mw3E7R{uhiA70>CkB7*(3yd39aad9!0;+H?N6WJOpbG$h}pcO(4G2}eCT16&) z>HW3GkWDN!bl<-m1ElsUeEolYhq7Oe<3C)0|Fq@Z!{0?;} zb>m&kDv3Ke!sU#5(Znys08nWqh3h}PksiAHzeccvH~whjjSFlrytlJ^_4H}W>Y}uZ z4tDQmr8Bs#ls#$yKd$e3purhow6bPDD^-L96#jFWo4@1eLB>zacRBuNltRYHAip^` za5vKEcpZM)vQ?0RoQy#MZIieWT4udo?Ib(h*wLw<+o>WV76|9oH1+q?R3cm8H1 z=V<)Z{n?bc(|W+oI)<9UBOVxZ_Wn>$|0wiQuk(F#miSG{P3qRiH)Cx62oRMDek0FE1Y3`sMAF&%cfXca ztwx?@bB!mvSDL!;grxPK?o{m;+jKSW#8Q}VZmw~mjL7Ul@?0f7YwwbzkFanQ%R2=zjZ?61MRIyH6+`|9x8AXD5gyIdL` z#zPKyuEelgW5y3k8bKD0{{Xp6&f4?b&T*k{G6YBn}V*?(@8)a ziuE_VJ(%bMA09NBRCSHO7Q^Onh7!k7;ct9RwSg3!vvuhJ0qC?t?vy@m$yd5a zK|`kX>wa~`4@1ji3y93igwk(1C#k-9`zWr<+$@TdqzJ<-Dq6i^ad`^1y8}y`$8z!n z7}`6Gg`}5d70b3viB2s#G%Uhw%H5a{W7 zXH|jrXNKeOxoiX39i+*{4|^~ayeJb~m-xvy#)qkwO+LOHgO2Mr1RVZEx4k&&n?1`# znUynMsC6%o_ATS&PEFhGG@kOeXGSOXLyP*QcsxO~;LzzcII7gc*%?Pe<9g^UP~Knf zAMib=CLI0@+SqE;LOnwkiazHr9$3QuYZdrs6ipRTrqt?W(gP94o66k|G($P@(R-() z*Hp5^w!9-p`k2-03ShNbgl>0gj4U7R9*${Fh`*?(Us-V>27 zK>M(aqxco}%tIoqp|iK2z)nIErITiyjCg^8Br;KlS)1F=+AO`&StMj-CI|UZDo)N$ zjYEZQ!0t_N1K^9XCtVfGzd#g`@JVXV=X{@a{|T2x=0+dvt)FXB{WY8k-ex^Q&&(}n zRZMluccwH9oV1{x9fD<))NOrNb(YS4KyDa(xdB+7?Z}2}vgD{gdpo!Z^Scz+PbTf7 zoJ0O|$%BIfcT~0~aT9S`h%JET^An)7Nsd|Bpf!yT?za8m8WDg1@6SIrF~8$KDu~SM zHset?dXq^gfr!HTlq2wt0Z)uARv{F1QD$hT#(fF)L%*Dvy5itsy<edY^7>eGL11^q3smwt}h(i#`Ut)f?D; zvZZdhNEhzp(%j9PRRLL9d9~^Cut9!>${!KCD~KCSR}33iV2pcQ@HT-GlQ{vX|c z!5T2;o?)T8_7Y(-?{1NX86rXLzQ79k<3(c;f>dr%9PqG-tKmZovVb8MrB%-ryLE~b z`5@Fvn+|Q+sU(I=KGx06wtJ^I9uJ|NZ~9Oc8X7=qN6^M3OoczRQlCDS?B($pgo}~C zHhX@#;JMc2jkwZ(>;ow&2qkZ6XG2k45}WWTmy<42ww_RdV$b^BbB}rBOmk3%yd~^8 zz0`}!yF_yFF$ZYddXq@&OWI#~Q;y)#p=vSKEVLvUK}}-0k7fDjrM`5*sFBF@7l_!e zt~6S!omy0apo(~e_>4u&*>0$vM7TpoU(1L?IUB(>Bm_Qo ztfkUY5ZJarQ$lz1OFj(1IJmXemmFUUkw``}AUYm7QsY8a8GQDfD6{qM4*bUyka{;? znNGSm#vrJ6LMI4bCead#T)kv2OiWgto|OK1g11Q_xs~cX-g>j@bz^<;lJ?BG-58h9 zEt_V9RN9s6qarjdIMbR`cL|$l0-SQPn1wF4^br@a7zlYROlW_xoNc<$HqJ+8mWak)4YgLvVKIar!UF)u z>#;^I`n_8V`{l~mp$hhw6YJD&LsZ8p2_U!jYC>W9tYg6;DS;<*s4pIiTiX3N+%o&i zi&!!XY49mq?hTCP=iH1Ygh=aRz(-vR5gp||7Iaw>qhsu6S$QCF#oMdMcAO0rCCczI- z_+NkKn$uj6Jl?aJeMH9&!ueKSg}q21X{#jG#26JmH^DLI>Joh z`q(TVCDmCssMX8=^5_#qp2vX|IVV{in>m1(UTp~`zB?zxRAC&6{2w`nY(Wr~%LiD0 zMEO6h!7|mgzd{Xkt2; z&6{;>!${{dJb&BeZyN;gQTsh;*CNIvLgWr~(xw~rinmIpGg*gT%DOc$&|N$m(5BRF z3$jsqG~=Q6HGuMWpVh|=M3+J$pM-tg&%fIv-v)+>0q~^I3=O0OnemYqiHcgn>Ty9TJL3ciPTQsn&M z-@U&N!M}W=zw)GdYQtr_sxT~U30Fi%I7HvUH_9yN|)qT?qo=1r-H&_ptlTHgMTBUgqy5v_!b@kN4c3D*_R#N|xd7;h1}v zK3;iHQ%26}6qu@D$>NtTb7Jb^H3>97NXWdu!4+KeD}qA$5BNwrVJzTI7&p(;FV8T@ zn0A`JxshJ&ne{2G9jDAz3kXN3R8=Zg7A46i5&!sM_qDDjdh)ylKk|iXVcAwvLE5LM z7Djr^$*nq9bd68uM1N(?gR;8`GAnEg7p1sVED{?Pz*l0-9V{h&C2>)#DWWCg0@jK(E4j6II9Pz7#`0&ZLfCP!Q|l)wKpX zYrCqC-kocq*r>dnC7xAaMFFXiI}3g=dPkSgx$n`d1b>d;;^+=2oZ#tft)Ju9-1;Cl zt75M!C_5MHf^naMg(YktQ_v%2_51IE`!eeQd>$Zo1ucliVMd=T3u7N;x<%XqRIul1 zdp27Mof7@^5EV>kHqJ5$J1w?e`ULdufbHkQ%g<0K*Z08hEhpsJPea-aG+_Q29rpvP zRae`~xIQjcRrUw2uH7%^Tr+WJ55Ac^qV}ouB<{FsF{-Xop7R+4WyDsuRq~_oQ>sn1 zHvjld(~WB}J$h`!oF)@+ZY2^2YlLCqxN6>ZU_oF7Kirja5hd-SsV~Ruf%gQi}spLmdsMBu5+Jf_V;TwWu58W zVELdbJdA5=`_!_qcvD7BA;dtCgFq#?@dZh^PihywiniEYYT5@LHu$>c?eychNR@*& zZOm)7zXt*Z0H1Q(0Qx<}Qk@ou@#DW+5Tc zBZrLl)l@no^0A69$AJe=zXX5(^yGwqE0x0z)ve>2qGM6*?Ep%THfMs@bzPlEB4tdI zW$IDtbJxOxFWe3fSCW5kizNUCu5Ylz^Fu_Y;zVv}w}}p1TVy^``b$WH@SKt79j#L* zEWfoX2XjDEq-F*Y#;a~t`DCs>HhCDHIOA!Yr#3h)OS@p>%pl(BCVpakKXNF*k(eEc zoQm11XYsP`r?4bFJ;j4JiVTlb^bF+j*ppqpq(b`gz_xE}8=N8Ea0f?jDQmzKbgaIC zNznVW3#EDkitem2GY~6HpG~D7p}k&5^l)IjzScv0HnfL3)`uhlFUc{4=Op2M&xY+5 zt9l3qNm6867md3ofky?0;G5}=BOO^l&TQ1&8R`Ne{iOT)-2yBV=X^ZKEKb zyB=@x^(fyQMpKlr7mMw(S95m1v;=#ww^9;wNxG~J)5VssXk6nv&c z5iw^4CZ$k~b?LN)UaVXvav%Jho_yQzRLLwXCY<`Yf#J8i=Q*W|J#$oSbVK-{(&-Y$ z_Dep@4Es*S^Ao7o>-oScKMi|5&^hYV%Fot3AA+W%eN5mtFA zO#tb(2aVTh3BowuRDPB`>=+}S{nUmMxJ4s&bAU;1SBEO;wPH$SY1jd%MB091P2D}t zhB!RJEtROuE@I4-BeW}E8t;7?P2^tFeb^#|bWop+A65E`V@-d!6+Arn-fa~eo;^AY zrJ@@`&EDS>Y2d&Ltvdc-Z*g}X8C-9}$LZ3mi$XLZ=%#(UZ6?yRA!z7-7kd@ifv`ht zoDq%=g^`#hS$>(kTf9aN%TtC_c=ZnL=0(uQt~jCC&){Xi*0r`F7dNdWyv{WByq76? ze4K%nGo2#^ZDgH(GDB%)-=Y+Guo}GoM4u+~bj2~2`wm}|?R~EV1GN3Nkw244klykI zNQ6Js3wz&K^oH+XT`eH6I;lU%f;+6f^ZY~QW*J~k$J=ikNgkfvyF7Zc-99L#ydH>^ z-41Sa1v(>Ae;%@EgH~2MM#fL}n0j0G1ezSg3v6S4%jA0sX2HLaHS&TNrfn|T9}g}F8n3%i zXR;`V`8o!+swwTCtT!p2Y!F0x?KXX;6MW*SET}hgxVE9lx5?X%5uu#9rZFMNrt$0N z9E^4@V}X=86A~V&4Nu5{4`=3Q)UA=|131xrm>@zur}_3_5HQ99CsL8cH3w5u^; zE+SV8*rQQ39Q8TrK^IqfjV-H^|23F+vpi3_U3h7YfACM_z_RG9X*{M>79vC1Nw3nL z5`=x1^9SW=&vM)Yp8O;+<>C&*c5s#HX{z~!a|z)cEa0}X(N2GtXMvxQBwNZ@AmNZD zEoDw(f3u4e-?@0)DjwPKF;@z)JjMWZ@Ah~UW0pNz6w+GEmEumLzHyHXlKZKoC|p27 zl@~fGiYKmxo|v)BwBn>;r%`k8YKq|v1-9}MNxx!xSL9CIz6K{+A^Y)rs;1BmWEF5$B!In@%`KnZNk5;v%eA*frb87&Zjhs7DXEEwpz7mTD zzqQ(Xs()O@-u{8J`l2V3D#Bg`ieHgM4`0&h8k>T{>%N-MQOzJ-75?msB23|0Nff0N z=30z8s?A`dmLEC7M9>1s{nz%7>$p6dyon{r7H50j@TQ^!F0_^2n2U%9_@5++I{Ojo zX?N5_=;;*)x$}Q;wpB(idVIls^O>sJQdcCII~+Y0WC3CaET4pC2SuOpU{KFLARv&B z3T$4B!#(WcRcph^DwJI}&3%SnQl31?$9td!>|3ceNR;##cmMQt`N@Zs}_XJfd4{KsRne>YVcD{EABg2Wwcxw_wUe3^SBqTKcq4 z&fgtd#$<171&`LPAh7{yJNOt@GaB@LFw5DpWVdtur&iHZ(^g#_w6g>2o%p*#zO*gj zHPX`$-ME}nA5BhfRF2O?dpVPGUf~nv3nAA8j-xP-Yf|O7IZ^A0kn+|$)5@J63w?(x zxABw6qKjLuEg_9ma1WNLqJz2-4-fJHkTI3)@9=J%(>G)gz)#fQ8#~;&X_-U&E^#rs zVYOk-jpbra zB4u(9zI}0Ca}8iqcKqeoKa9aiuK2fm@yoJ`9#by~OT$^b5Tu1tWR-e?RqLXjMvsln z!qU#4lu(9I1me|%o}Z88ekF^&nUSe|7Vmu#i{A22g{+miFoT?O%XFUsWICc3COIZ~ zGI)3vHNg0%@m(?rregzdw?uVtVyL0%7@8q@KmD9*5UxKQpFuCg)y;M6F4iSJKA9&o zqZ~2NMMEu!KcHwx{absivh@@no!yjcCVF*?Jo(ks=AZcn1qG{0R!TyniajIw#5Fxg zkWQQE7)bE`x-}CKVckjdD&WB}(VH)Y)voC>x8X>&?F+tQe$94ZIiAR&pv{&r&?M+z zoU<#Z%$DHlGg|{wi(tmsWnMQQrL_av`abN(QE3REI6P$Q)*@1#iA{-Hk1;&~XmS@p zSlb;Nvy_=W6Oip;`Pl#_Cx9i9#@3>W+Xl)RBg5C_MYJA%52iIVFjL76dKuPXIY=4unQ^xI;GbEFmu)tDTs zj*yW0|G3(LAs_4~rxxT=D7@47SqVXSM#SGmhO3%?25ZPHJV;gw-@OnZ;La+5tG`Wn zJmYq2jqaU|3?=r={vBdB+@W+ylHOPfO?!cVeW^A(|1EQ8JAmh6ZnM-NJ$!NQvIN`9 z$qb+3V}&W%p%ZJ-00u!CXbN-=$j)`616eA?&_1ucW>-^nvn%;Zc!4rPoPSsTiM3;uI?|pE2ehBa47+2WP$&d2EG_RK%3=4byxxOkS=6;_qMV>DxK;n2Imt zsFgumP`G@xzFV`KZVNO@U%uK4lF*n5F7%V*x( z;qy#dZOo1tJ*%=2XidpeaaDjo4v&^@6PbN5Lkl4m{l!*kWLBtr2GTczzRMw9>pGEM z#|#0(IkyvXg$6Lm=-}Qo&`Ey|f>a!6B4(3<$;+vL3tT}(WIn~)N+3)_J7u-6ePn;n>FiTD}kI57@v9U7{#2`=X6V`E;sVsc8A6q z7Q{TSpf%}gjYf7dr6bHr#O%uw+ltT{EoUnzEk`3rQ<#}Er=iFV zo$5*k``%7S)VU#{b3G`#*EKQR5r)C69tl`?>2eM8iI`k zCu{=B!j_{9njuXQq=%UBzxL_u4KdiRZA2iqL-P%AB-i|PSA2zbA)c=3QwfRc z_3Ri~R9)RndNnVlOZg1GRVh#b`t+zi%L=}DSX~6Wz7lY0D%Y$NG8k96!5{g&C+B6e z?*3WV0PJpn)z7K4a1M9@3`6CaqGWi)u;pxZ{`YfE%UF`Rs{A^HH5?dRMy2yM$)_yYsBpvGj>sw)8z ztm~lm2*9VV=NZxMK&EqHf=aAQc#gE6-#?mE^~gkHU|R>s;E|F_q%P9TEe{t=671jk zQtY*}vA%IS6*2}>pzZbsYKrcq0_)$ zIl}K;KG2qBi9WQ)R0>54okB%8E~K-my1-uh@CWqX-0>>RBga=!dSDDWO^srHm)0y|qg~u*msyS?CMI4>N(z-3 z_06skj~glxxMYI9KXOE!5BPTVz70{PL>1kMWQfndb&*H8jpj*Hpf{IB1|P=yL9wcb zXe~{F*}t$LUQazj#lcg4A9CBmLI4+^wf zL~z!xOg6|HRaOfB;1O`w<`Z)ki~Y4+6$}i<`s+Fl7W(Tramc6nb%Jyel~ITNGGAEp z@UMGZR|#!bH3v&q4-;n#Fe`h9pB9WRX3iEC_Ab^Au2&FUf?t!wZPc}0#hfinTx}fe zNz`qAT6}eafw8f$ah!z&ldy1{XC{%b0?xDBNoY=+!)Zy*(~2%KzXrI@qq0aiIL{h` z|1(@4-V%U40R~0_CL=DQ?wNJo;o+*kl)nAkcBO$umlx+kMfMGSJRS3oc>E|pukpNb zqsPz(ktqS0C}`;*th9DjGE~rFg7?Bm_w;z4rGyo_kf`Sj`Z&@KUARd zz%)r0=)sCMuLw?1vFtbgZCq`<`aJ@3wOd{P^rJ8`GJ0f6^u(eB%;I%-o06yv43%Xx>D+!n^Y1xI8NCZHiI}2TY(FlX= zbK91p6Xv&lk1BTHmBqR5rk(Vzh54v$zSJn|c(H*|x0I4Fc;hfG3}M{mo6S0F7RD^Z zG|00l4(9JS;I*o|;jY2?tuQAScKJ0`8Kd;6G|ZKGCAOZOwm-H}#E60Htb=|cdHwbW zQy(`(Z0i13tu$WmpN9u?K`sW2L2-qsYVFxRl8d)i(Qwwrc{m74)p)mlJ0ys5Z;3fF5DtgtF_hpmGQZq4f zfQeCW0%CpUZk|c6{kqqSukzD$H#5$HaF^2QbJ+4B%3IzdS4Ya|o|x%lk}~o7(<7BUa6%+&jDcuzq_!3`g9R ztNK&CAB2IHtGIa+Z72PV^!dIa$KC&?K^S3fVHJmoq4@Rczo4MQRyw*fUfkB6Fk6xQ zOhJ9^+p#!eh#&`&P`|$JZsX2rxldp6yR@LUUU_+NM{ZT!#j>a^8Df}98Ps&P9nL5c zwscy;`bI>Nv@1#ZUz`TUSP6n=*Dc%Hj(Zkp{aXcb4XVZnng4Qvcc^6Ut?YkPO^9vS zQ$a4XLry{l2q3?O#eEF)YVu4Io%$9SlAoe_IoD}&H#-z|qSMqglv z%#I={>^f8Q{>*H7rc7-CbAuM%UDR=t1BX6BkCv9xPvv9EcL_gsxTQ|u+>%8Xgnsah zc*$w2#wl3pvN_G51?%BGo#*-wEG70k)D%}9UBX8`E37dR*_M7S}`7 z{-xh3s$L)c*;J8FG9#FeDBOBdE;N)%>^uB1YWR6;B(vQ}{GLSk2N>H9-EYtk^?Ci} zfeHoc^W#3xV?rGv+5>YXAGg)FvDG>G4w79Q-_R6$AcXc?kl@mSi>~^wo?f}f-uOuG zj&nm|Xd~MvJZk)0SWgt$O$!K+Je)4pNgpl+rESh2G2TQ^iS?*58y!fPDI(p?Zx1YPmvb}RN?C4Ss-=Nyfp2pWGT=X7U^ zQ-)j!J+pdH(9YQg5geXheIoet2oa{H$)2Bro_fgTA__8M{U5+zb*<_Q7Rm{j+0%_S zx0a-)&K}!gWvfq_!UP%TC5TstyN+<(_d^T8RL?*MqY_nI?yNaVg#!y@?#bMSVo1hq;ACc{M*QoT==6SBbHtu$*4>)SCOr zwPod`V6y`7goK_&wg>+wL7!1RN2Ml4^6{G%Uonf1O}11thOFSVOP&qhp8l?%X(fGz;QOgc#yh5&(F@p?pB?UlFcDI|sgh2QfPaE` zzg(B;(m{*!Bt)7{y)*7iVH;Zjr$42{Bs;-X&d+oc^Y!bWIh%3YfDix_LYse}RPa&F z?V3^@=Z0VpE8h!TFd$)EgU_?yU`nXdK=3kU{_FP~$Qg;er>{ncw(!vX%U38f&R{;l z$amcC9EY;?{QI^tQRfqjELC6-C0ARfLP!J+zOl$+{k_9{7x-zr$#{{or%;m~%o%(A z)+ZOC3RUMXex@-A%bsaObT@nZl7vxVxS)mXHzP$HS(ageqODKbyz~*xJ*DK51AVRE$(nY;zo0~XT4O&0G9XPN4$92!q>H(z zy73Yr-FX7KOx4tg^7EISFRzOiuKT>*9mb}UPn^1DlY@WT~oGzC~G%lDt)Re z5B-W&Z?`_`!TdGd-DJP{EP?TSTeWNlEOGP7A{qc%+_V?@Mv#>O$Py2P47=PKn36kGg zlz^P!T3zY`%7)gKBDXe(C70oe2s{z}&|kCH=gKI5jnrWIC}5=3&-O-9scfa*Q@;9Mdvcp`JDvphCG^2n(YxctMe zwld|Oie$o}sQ3`^oz{>LOQO-6V%io53gF}3Q=j+!J9|H5Ci1hAk zEa4*=ES&qDSe>8Q6??4zXbNf^v`tD@zr9n+u}oLX8^lq|x&d%5V8F)-71kHH8>s?D%J2m8*oWv4%0D_?GBUjT9xi9$Ta<% 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

In$k%bsntb@qJ>6l0lB# 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 psql -h localhost -d pool_db -U pool_user -p -c "INSERT INTO pool.blocked (addr, block_reason) VALUES ('', NULL) ON CONFLICT DO NOTHING" -``` - -After some time (a few seconds with the default Kurtosis configuration) the network will block that address from making entering the pool_db completely. - -![image](02_policies.png) - -This can be undone by deleting the address from the `pool.blocked` table or using the below `psql` command: - -``` -PGPASSWORD= psql -h localhost -d pool_db -U pool_user -p -c "DELETE FROM pool.blocked WHERE addr = ''" - -``` - -![image](03_policies.png) - -## Access Control List (ACL) -Adding addresses to the ACL will do the opposite of the policy. In this example where `send_tx` and `deploy` are set to `false`, adding addresses to the ACL will block them - similar to adding addresses to the blocklist. - -``` -PGPASSWORD= psql -h localhost -d pool_db -U pool_user -p -c "INSERT INTO pool.acl (address, policy) VALUES ('', '') ON CONFLICT DO NOTHING" -``` - -![image](04_policies.png) - -``` -PGPASSWORD= psql -h localhost -d pool_db -U pool_user -p -c "DELETE FROM pool.acl WHERE address = '' AND policy = '') ON CONFLICT DO NOTHING" -``` - -## Allowlisting Addresses -According to the docs - *"Allowlisting: The process of explicitly allowing addresses to perform certain actions."* -The terms allowlists and whitelists are used interchangeably in this context - with the documentation referring them as "allowlists", and the DB referring them as "whitelisted" - -However, as of the latest tagged [release](https://github.com/0xPolygon/cdk-validium-node/releases/tag/v0.6.4%2Bcdk.2), there seems to be no references to `pool.whitelisted` being used in the code. This seems to align with the tests where adding/removing addresses to `pool.whitelisted` did not seem to have any changes in the behaviour. \ No newline at end of file diff --git a/docs/cdk-policies/doc2.md b/docs/cdk-policies/doc2.md deleted file mode 100644 index 727e5404..00000000 --- a/docs/cdk-policies/doc2.md +++ /dev/null @@ -1,90 +0,0 @@ -# Manage allowlists, and more, with policies - -!!! important - Policies are currently only available in validium mode. - -Managing allowlists, denylists, and ACLs is done with policies. - -## Policy overview - -A **policy** is a set of rules that govern what actions are allowed or denied in the transaction pool. - -- **Fine-grained control**: Developers can specify policies at a granular level, allowing or denying specific actions for specific addresses. -- **Dynamic updates**: Policies and ACLs can be updated on-the-fly without requiring a node restart. -- **Database-backed**: All policy data is stored in a PostgreSQL database. -- **Extensible**: New policies can be easily added to the system. - -## Validium node - -### Policies - -Currently, there are two defined policies: - -- **SendTx**: governs whether an address may send transactions to the pool. -- **Deploy**: governs whether an address may deploy a contract. - -The CDK validium node offers policy management features that include allowlisting[^1], denylisting[^2], and access control lists (ACLs)[^3]. These features are beneficial for validium-based app-chains that require fine-grained control over transaction pools. - -### Code definitions - -- **Policy management**: [`cmd/policy.go`](https://github.com/0xPolygon/cdk-validium-node/blob/5399f8859af9ffb0eb693bf395e1f09b53b154de/cmd/policy.go) contains the core logic of policy management. -- **Policy definitions**: [`pool/policy.go`](https://github.com/0xPolygon/cdk-validium-node/blob/5399f8859af9ffb0eb693bf395e1f09b53b154de/pool/policy.go) contains structs and utility functions for policies and ACLs. -- **Data**: [`pgpoolstorage/policy.go`](https://github.com/0xPolygon/cdk-validium-node/blob/5399f8859af9ffb0eb693bf395e1f09b53b154de/pool/policy.go) interacts with the data layer (PostgreSQL database) to store and retrieve policy and ACL data. -- **Policy interface**: [`pool/interfaces.go`](https://github.com/0xPolygon/cdk-validium-node/blob/5399f8859af9ffb0eb693bf395e1f09b53b154de/pool/interfaces.go#L42) contains a `policy` interface which defines the methods that policies must implement. - -### How to use a policy - -| Command name | Description | Flags & parameters | -|--------------|-------------------------------------------------------|--------------------------------------------------------------------------------------------------------| -| `policy add` | Add address(es) to a policy exclusion list | `--policy` (or `-p`): Policy name
`--csv`: CSV file with addresses | -| `policy remove` | Remove address(es) from a policy exclusion list | `--policy` (or `-p`): Policy name
`--csv`: CSV file with addresses to remove | -| `policy clear` | Clear all addresses from a policy's exclusion list | `--policy` (or `-p`): Policy name | -| `policy describe` | Describe the default actions for the policies or a specific policy | `--policy` (or `-p`): Policy name (optional)
`--no-header`: Omit header in output (optional) | -| `policy update` | Update the default action for a policy | `--policy` (or `-p`): Policy name
`--allow`: Set policy to 'allow'
`--deny`: Set policy to 'deny' | - -!!! note - The examples demonstrate a `deploy` policy. - -#### Add addresses - -To add one or more addresses to a specific policy, you can use the `policy add` command. If you have a CSV file containing the addresses, you can use the --csv` flag. - -```bash -docker exec -it cdk-validium-aggregator /app/cdk-validium-node policy add --policy deploy 0xAddress1 -``` - -#### Remove addresses - -To remove addresses from a policy, you can use the `policy remove` command. - -```bash -# Remove a single address from the 'deploy' policy -docker exec -it cdk-validium-aggregator /app/cdk-validium-node policy remove --policy deploy 0xAddress1 - -# Remove multiple addresses from the 'deploy' policy using a CSV file -docker exec -it cdk-validium-aggregator /app/cdk-validium-node policy remove --policy deploy --csv addresses.csv -``` - -#### Clear all addresses - -To remove all addresses from a policy's ACL, you can use the `policy clear` command. - -```bash -docker exec -it cdk-validium-aggregator /app/cdk-validium-node policy clear --policy deploy -``` - -#### Get information about a policy - -To get information about a specific policy or all policies, you can use the `policy describe` command. - -```bash -# Describe a specific policy -docker exec -it cdk-validium-aggregator /app/cdk-validium-node policy describe --policy deploy - -# Describe all policies -docker exec -it cdk-validium-aggregator /app/cdk-validium-node policy describe -``` - -[^1]: **Allowlisting**: The process of explicitly allowing addresses to perform certain actions. -[^2]: **Denylisting**: The process of explicitly denying addresses from performing certain actions. -[^3]: **ACL (access control list)**: A list of addresses that are exceptions to a given policy. From ba2d95cf692b99dc1a3d44d5db5e561569280d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Vincent?= <28714795+leovct@users.noreply.github.com> Date: Fri, 18 Oct 2024 09:20:16 +0200 Subject: [PATCH 2/7] fix: dockerfiles (#318) * fix: python3 installation * fix: install `python3` * fix: also install python3 here * test: pipx * fix: build polycli with version flags * fix: polycli build dir * fix: revert build change since it's not supported :( * chore: bump toolbox version * chore: use pipx in zkevm-contracts also * chore: nit * docs: nit --- docker/README.md | 6 +++--- docker/toolbox.Dockerfile | 9 +++++---- docker/zkevm-contracts.Dockerfile | 9 +++++---- docs/trigger-a-reorg/network-helper.Dockerfile | 4 ++-- src/package_io/constants.star | 2 +- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/docker/README.md b/docker/README.md index 61072843..a36e787d 100644 --- a/docker/README.md +++ b/docker/README.md @@ -84,7 +84,7 @@ This image contains all the npm dependencies and zkevm contracts compiled for a Build the `zkevm-contracts` image. ```bash -version="v9.0.0-rc.2-pp" +version="v9.0.0-rc.2-pp-fork.12" docker build . \ --tag local/zkevm-contracts:$version \ --build-arg ZKEVM_CONTRACTS_BRANCH=$version \ @@ -96,8 +96,8 @@ Check the size of the image. ```bash $ docker images --filter "reference=local/zkevm-contracts" -REPOSITORY TAG IMAGE ID CREATED SIZE -local/zkevm-contracts v9.0.0-rc.2-pp bdf8225cfa77 7 minutes ago 2.54GB +REPOSITORY TAG IMAGE ID CREATED SIZE +local/zkevm-contracts v9.0.0-rc.2-pp-fork.12 bdf8225cfa77 7 minutes ago 2.54GB ``` (Optional) Push image to the Docker Hub. diff --git a/docker/toolbox.Dockerfile b/docker/toolbox.Dockerfile index 0d7ea22c..26fea5e8 100644 --- a/docker/toolbox.Dockerfile +++ b/docker/toolbox.Dockerfile @@ -2,14 +2,14 @@ FROM golang:1.21 AS polycli-builder ARG POLYCLI_VERSION WORKDIR /opt/polygon-cli RUN git clone --branch ${POLYCLI_VERSION} https://github.com/maticnetwork/polygon-cli.git . \ - && go build -o polycli main.go + && make build FROM ubuntu:24.04 LABEL author="devtools@polygon.technology" LABEL description="Blockchain toolbox" -COPY --from=polycli-builder /opt/polygon-cli/polycli /usr/bin/polycli +COPY --from=polycli-builder /opt/polygon-cli/out/polycli /usr/bin/polycli COPY --from=polycli-builder /opt/polygon-cli/bindings /opt/bindings # WARNING (DL3008): Pin versions in apt get install. # WARNING (DL3013): Pin versions in pip. @@ -17,10 +17,11 @@ COPY --from=polycli-builder /opt/polygon-cli/bindings /opt/bindings # WARNING (SC1091): (Sourced) file not included in mock. # hadolint ignore=DL3008,DL3013,DL4006,SC1091 RUN apt-get update \ - && apt-get install --no-install-recommends --yes curl git jq python3-pip \ + && apt-get install --yes --no-install-recommends curl git jq pipx \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ - && pip3 install --no-cache-dir yq \ + && pipx ensurepath \ + && pipx install yq \ && curl --silent --location --proto "=https" https://foundry.paradigm.xyz | bash \ && /root/.foundry/bin/foundryup \ && cp /root/.foundry/bin/* /usr/local/bin diff --git a/docker/zkevm-contracts.Dockerfile b/docker/zkevm-contracts.Dockerfile index 28b95fbe..92ea5622 100644 --- a/docker/zkevm-contracts.Dockerfile +++ b/docker/zkevm-contracts.Dockerfile @@ -2,7 +2,7 @@ FROM golang:1.21 AS polycli-builder ARG POLYCLI_VERSION WORKDIR /opt/polygon-cli RUN git clone --branch ${POLYCLI_VERSION} https://github.com/maticnetwork/polygon-cli.git . \ - && go build -o polycli main.go + && make build FROM node:22-bookworm @@ -19,17 +19,18 @@ RUN git clone https://github.com/0xPolygonHermez/zkevm-contracts . \ && npx hardhat compile # STEP 2: Install tools. -COPY --from=polycli-builder /opt/polygon-cli/polycli /usr/bin/polycli +COPY --from=polycli-builder /opt/polygon-cli/out/polycli /usr/bin/polycli WORKDIR /opt # WARNING (DL3008): Pin versions in apt get install. # WARNING (DL3013): Pin versions in pip. # WARNING (DL4006): Set the SHELL option -o pipefail before RUN with a pipe in it # hadolint ignore=DL3008,DL3013,DL4006 RUN apt-get update \ - && apt-get install --no-install-recommends --yes jq python3-pip \ + && apt-get install --yes --no-install-recommends curl git jq pipx \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ - && pip3 install --break-system-packages --no-cache-dir yq \ + && pipx ensurepath \ + && pipx install yq \ && curl --silent --location --proto "=https" https://foundry.paradigm.xyz | bash \ && /root/.foundry/bin/foundryup \ && cp /root/.foundry/bin/* /usr/local/bin diff --git a/docs/trigger-a-reorg/network-helper.Dockerfile b/docs/trigger-a-reorg/network-helper.Dockerfile index b47943e4..0a5c3324 100644 --- a/docs/trigger-a-reorg/network-helper.Dockerfile +++ b/docs/trigger-a-reorg/network-helper.Dockerfile @@ -1,9 +1,9 @@ FROM golang:1.21 AS polycli-builder WORKDIR /opt/polygon-cli RUN git clone https://github.com/maticnetwork/polygon-cli.git . \ - && CGO_ENABLED=0 go build -o polycli main.go + && make build FROM nicolaka/netshoot:v0.12 LABEL author="devtools@polygon.technology" LABEL description="Helper image to debug network issues" -COPY --from=polycli-builder /opt/polygon-cli/polycli /usr/local/bin/polycli +COPY --from=polycli-builder /opt/polygon-cli/out/polycli /usr/local/bin/polycli diff --git a/src/package_io/constants.star b/src/package_io/constants.star index 4ddb4539..936d23f2 100644 --- a/src/package_io/constants.star +++ b/src/package_io/constants.star @@ -16,4 +16,4 @@ SEQUENCER_NAME = struct( ZKEVM="zkevm-node-sequencer", ) -TX_SPAMMER_IMG = "leovct/toolbox:0.0.4" +TX_SPAMMER_IMG = "leovct/toolbox:0.0.5" From 8ff35fafaeb1cc645d691ed9c766724797a11414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Vincent?= <28714795+leovct@users.noreply.github.com> Date: Sun, 20 Oct 2024 13:12:15 +0200 Subject: [PATCH 3/7] ci: add external l1 deploy test (#320) * ci: add external l1 deploy test * test * test 2 * Revert "test 2" This reverts commit af6e72cdfae6ea0230af69f15d47a148903ac456. * Revert "test" This reverts commit a2f3769389b497c14161f3ec22060311a7cbcbf9. * docs: update sepolia deployment docs and provide config file * test * fix: typo * docs: retrieve `zkevm_l2_admin_private_key` from test file --- .../external-l1/deploy-cdk-to-sepolia.yml | 43 ++++++++++ .github/tests/external-l1/deploy-local-l1.yml | 8 ++ .github/workflows/deploy.yml | 47 ++++++++--- docs/deploy-using-sepolia.org | 81 +++++++++---------- 4 files changed, 128 insertions(+), 51 deletions(-) create mode 100644 .github/tests/external-l1/deploy-cdk-to-sepolia.yml create mode 100644 .github/tests/external-l1/deploy-local-l1.yml diff --git a/.github/tests/external-l1/deploy-cdk-to-sepolia.yml b/.github/tests/external-l1/deploy-cdk-to-sepolia.yml new file mode 100644 index 00000000..07148170 --- /dev/null +++ b/.github/tests/external-l1/deploy-cdk-to-sepolia.yml @@ -0,0 +1,43 @@ +deployment_stages: + # Disable local L1. + deploy_l1: false + +args: + ## L1 Config + l1_chain_id: 11155111 + # TODO: Create another mnemonic seed phrase for running the contract deployment on L1. + l1_preallocated_mnemonic: CHANGE_ME + # TODO: Adjust the amount of ETH you want to spend on this deployment. + l1_funding_amount: 5ether + # TODO: Configure the L1 RPC URLs to be valid Sepolia endpoints. + l1_rpc_url: CHANGE_ME + l1_ws_url: CHANGE_ME + + ## L2 Config + # TODO: Create a new mnemonic seed phrase to derive L2 application keys. + zkevm_l2_sequencer_address: CHANGE_ME + zkevm_l2_sequencer_private_key: CHANGE_ME + + zkevm_l2_aggregator_address: CHANGE_ME + zkevm_l2_aggregator_private_key: CHANGE_ME + + zkevm_l2_claimtxmanager_address: CHANGE_ME + zkevm_l2_claimtxmanager_private_key: CHANGE_ME + + zkevm_l2_timelock_address: CHANGE_ME + zkevm_l2_timelock_private_key: CHANGE_ME + + zkevm_l2_admin_address: CHANGE_ME + zkevm_l2_admin_private_key: CHANGE_ME + + zkevm_l2_loadtest_address: CHANGE_ME + zkevm_l2_loadtest_private_key: CHANGE_ME + + zkevm_l2_agglayer_address: CHANGE_ME + zkevm_l2_agglayer_private_key: CHANGE_ME + + zkevm_l2_dac_address: CHANGE_ME + zkevm_l2_dac_private_key: CHANGE_ME + + zkevm_l2_proofsigner_address: CHANGE_ME + zkevm_l2_proofsigner_private_key: CHANGE_ME diff --git a/.github/tests/external-l1/deploy-local-l1.yml b/.github/tests/external-l1/deploy-local-l1.yml new file mode 100644 index 00000000..50be6cd1 --- /dev/null +++ b/.github/tests/external-l1/deploy-local-l1.yml @@ -0,0 +1,8 @@ +deployment_stages: + deploy_l1: true + deploy_zkevm_contracts_on_l1: false + deploy_databases: false + deploy_cdk_central_environment: false + deploy_cdk_bridge_infra: false + deploy_agglayer: false + deploy_cdk_erigon_node: false diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 56c8c9d5..b4c6bbd1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -266,16 +266,6 @@ jobs: - name: Inspect enclave run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} - - name: Check if there is any stopped service - run: | - if kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} | grep STOPPED ; then - echo "It looks like there is a stopped service in the enclave. Something must have halted" - kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} - kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' \ - | while read -r container; do echo "Printing logs for $container"; docker logs --tail 50 "$container"; done - exit 1 - fi - - name: Monitor verified batches of the first L2 chain (CDK Erigon Permissionless RPC) working-directory: .github/scripts run: | @@ -300,3 +290,40 @@ jobs: with: name: dump_attach_ckds_${{ github.run_id }} path: ./dump + + deploy_to_external_l1: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + + - name: Install Kurtosis CDK tools + uses: ./.github/actions/setup-kurtosis-cdk + + - name: Deploy L1 chain + run: kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/external-l1/deploy-local-l1.yml . + + - name: Deploy to local L1 chain + run: | + kurtosis run --enclave=${{ env.ENCLAVE_NAME }} . '{"deployment_stages": {"deploy_l1": false}}' + + - name: Inspect enclave + run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} + + - name: Monitor verified batches + working-directory: .github/scripts + run: | + ./monitor-verified-batches.sh \ + --enclave ${{ env.ENCLAVE_NAME }} \ + --rpc-url "$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 rpc)" + + - name: Dump enclave logs + if: failure() + run: kurtosis dump ./dump + + - name: Upload logs + if: failure() + uses: actions/upload-artifact@v4 + with: + name: dump_attach_ckds_${{ github.run_id }} + path: ./dump diff --git a/docs/deploy-using-sepolia.org b/docs/deploy-using-sepolia.org index 2199a8ab..0372b398 100644 --- a/docs/deploy-using-sepolia.org +++ b/docs/deploy-using-sepolia.org @@ -8,12 +8,11 @@ order to deploy to [[https://sepolia.etherscan.io/][Sepolia]]. ** Disable Local L1 The first thing we should do is make sure that Kurtosis doesn't bother -doing the L1 deployment. We're going to use ~sed~ to carry this out, -but you can also modify the ~input_parser.star~ file directly. - -#+begin_src bash -sed -i 's/"deploy_l1": True/"deploy_l1": False/' input_parser.star -#+end_src +doing the L1 deployment. In order to achive this, you need to set +~deployment_stages.deploy_l1~ to ~false~. You can use the handy +configuration file we provide, [[../.github/tests/external-l1/deploy-cdk-to-sepolia.yml]], +with all the necessary configuration for deploying to Sepolia. Or +you can also modify the ~input_parser.star~ file directly. This will stop Kurtosis from using spinning up the L1 [[https://github.com/kurtosis-tech/ethereum-package][Ethereum package]]. Since we're using Sepolia, there will be no need. @@ -35,8 +34,9 @@ sed -i 's/"salt": "0x.*",/"salt": "0x'$(xxd -p < /dev/random | tr -d "\n" | hea By default, the CDK package has some hard coded keys. This is fine for local testing, but if you run on Sepolia, you're likely to get your -funds stolen even if it's inadvertent. First, let's create a new -mnemonic seed phrase to derive our application keys. +funds stolen even if it's inadvertent! + +First, let's create a new mnemonic seed phrase to derive our application keys. #+begin_src bash :exports both verbatim :results output example cast wallet new-mnemonic @@ -55,47 +55,47 @@ Private key: 0x2a109c981f2fd6614f6cfbd40461cc9605904e5d4139f106a0f8759aa194b94e #+end_example Great! Now we have a new seed phrase to use. Now, we'll take that seed -phrase and write generate the settings for ~input_parser.star~. +phrase and derive application keys. #+begin_src bash :exports both verbatim :results output example seed="film crazy inform bind stomach weather cruel hold quarter stage country purpose" polycli wallet inspect --mnemonic "$seed" --addresses 9 | \ jq -r '.Addresses[] | [.ETHAddress, .HexPrivateKey] | @tsv' | \ - awk 'BEGIN{split("sequencer,aggregator,claimtxmanager,timelock,admin,loadtest,agglayer,dac,proofsigner",roles,",")} {print "\"zkevm_l2_" roles[NR] "_address\": \"" $1 "\","; print "\"zkevm_l2_" roles[NR] "_private_key\": \"0x" $2 "\",\n"}' + awk 'BEGIN{split("sequencer,aggregator,claimtxmanager,timelock,admin,loadtest,agglayer,dac,proofsigner",roles,",")} {print "zkevm_l2_" roles[NR] "_address: \"" $1 "\""; print "zkevm_l2_" roles[NR] "_private_key: \"0x" $2 "\"\n"}' #+end_src #+RESULTS: #+begin_example -"zkevm_l2_sequencer_address": "0x5996602860Da5b232429A007Ffc29Fe334993143", -"zkevm_l2_sequencer_private_key": "0x2a109c981f2fd6614f6cfbd40461cc9605904e5d4139f106a0f8759aa194b94e", +zkevm_l2_sequencer_address: "0x5996602860Da5b232429A007Ffc29Fe334993143" +zkevm_l2_sequencer_private_key: "0x2a109c981f2fd6614f6cfbd40461cc9605904e5d4139f106a0f8759aa194b94e" -"zkevm_l2_aggregator_address": "0x25697f040f8EE9145452b115F36aEd35a12d32AD", -"zkevm_l2_aggregator_private_key": "0xedab8a45bea025ec96808a63368ad2c8099b85944965c26256f987ff9ad712f4", +zkevm_l2_aggregator_address: "0x25697f040f8EE9145452b115F36aEd35a12d32AD" +zkevm_l2_aggregator_private_key: "0xedab8a45bea025ec96808a63368ad2c8099b85944965c26256f987ff9ad712f4" -"zkevm_l2_claimtxmanager_address": "0xc8273E02E94598F39e8Ec8867902D4807917A165", -"zkevm_l2_claimtxmanager_private_key": "0x216a4646ea3dd753f799b7eb7d7f8fe57b96c01c1fcd5eec496d888f5a7677cd", +zkevm_l2_claimtxmanager_address: "0xc8273E02E94598F39e8Ec8867902D4807917A165" +zkevm_l2_claimtxmanager_private_key: "0x216a4646ea3dd753f799b7eb7d7f8fe57b96c01c1fcd5eec496d888f5a7677cd" -"zkevm_l2_timelock_address": "0x187aA720B98E064cCaCd1533be1B664D7F93F032", -"zkevm_l2_timelock_private_key": "0xa0e35402da2dcebb8a33b89806d043bb5785a6a04aa5d9cf47f0950d88668c65", +zkevm_l2_timelock_address: "0x187aA720B98E064cCaCd1533be1B664D7F93F032" +zkevm_l2_timelock_private_key: "0xa0e35402da2dcebb8a33b89806d043bb5785a6a04aa5d9cf47f0950d88668c65" -"zkevm_l2_admin_address": "0x87Ae0E9416ca1497c4AdDE7E1057D4E29f1714Cf", -"zkevm_l2_admin_private_key": "0x69659a88bd0950e4914f69aaa867e258ff39bc6274d1576a23c477c65987e31f", +zkevm_l2_admin_address: "0x87Ae0E9416ca1497c4AdDE7E1057D4E29f1714Cf" +zkevm_l2_admin_private_key: "0x69659a88bd0950e4914f69aaa867e258ff39bc6274d1576a23c477c65987e31f" -"zkevm_l2_loadtest_address": "0x1D9842c503A98cF53AE44808572d15B8C40B2967", -"zkevm_l2_loadtest_private_key": "0x23db51713f401984ea6331ccce3a9b3b98996838ccec43d4de828c3b501e07de", +zkevm_l2_loadtest_address: "0x1D9842c503A98cF53AE44808572d15B8C40B2967" +zkevm_l2_loadtest_private_key: "0x23db51713f401984ea6331ccce3a9b3b98996838ccec43d4de828c3b501e07de" -"zkevm_l2_agglayer_address": "0x61773f7fca22cF7fb960DEDC6aEd0FE795018837", -"zkevm_l2_agglayer_private_key": "0xf44263cc5699fe3889f892834885111164eb1bea1c9f16322c5577165c578ae4", +zkevm_l2_agglayer_address: "0x61773f7fca22cF7fb960DEDC6aEd0FE795018837" +zkevm_l2_agglayer_private_key: "0xf44263cc5699fe3889f892834885111164eb1bea1c9f16322c5577165c578ae4" -"zkevm_l2_dac_address": "0x9150404Cc4d66673b1598dA00a9AC6ce1df53582", -"zkevm_l2_dac_private_key": "0xc1345e1b9680c8623df4f74d4b4f7bc8d9a5bebfebde34786e2146d30b1c68c0", +zkevm_l2_dac_address: "0x9150404Cc4d66673b1598dA00a9AC6ce1df53582" +zkevm_l2_dac_private_key: "0xc1345e1b9680c8623df4f74d4b4f7bc8d9a5bebfebde34786e2146d30b1c68c0" -"zkevm_l2_proofsigner_address": "0xad36D8a17e14B2420229b77664AB905C813AD573", -"zkevm_l2_proofsigner_private_key": "0x7e60d7b0924128bd629b5942ad7d5610c71794e9a00eb0e2c7b0bb5ba633bf94", +zkevm_l2_proofsigner_address: "0xad36D8a17e14B2420229b77664AB905C813AD573" +zkevm_l2_proofsigner_private_key: "0x7e60d7b0924128bd629b5942ad7d5610c71794e9a00eb0e2c7b0bb5ba633bf94" #+end_example We're going to take these generated values and place them into the -[[../input_parser.star]] file. Each one of these settings should already exist +[[../.github/tests/external-l1/deploy-cdk-to-sepolia.yml]] file. Each one of these settings should already exist and you're simply replacing the keys that are already in this file. ** L1 Configuration @@ -124,7 +124,8 @@ We'll take that mnemonic and configure ~l1_preallocated_mnemonic~ with this value. #+begin_src bash -sed -i 's/"l1_preallocated_mnemonic": ".*"/"l1_preallocated_mnemonic": "wash shoe curve captain invest aunt farm quality bomb aunt sunny arm"/' input_parser.star +mnemonic="wash shoe curve captain invest aunt farm quality bomb aunt sunny arm" +yq -Y --in-place --arg m "$mnemonic" '.args.l1_preallocated_mnemonic = $m' .github/tests/external-l1/deploy-cdk-to-sepolia.yml #+end_src This account is used for two things. It sends funds to the accounts @@ -132,20 +133,18 @@ that need funds on L1 (e.g. sequencer, aggregator, admin). This account also does the contract deployment. Accordingly, *we'll need to send funds to this account*. +We have already configured the L1 chain identifier to match Sepolia's chain +identifier in the configuration file: ~l1_chain_id: 11155111~ and the +amount of funds allocated to this deployment: ~l1_funding_amount: 5ether~. + There are a few other values we need to configure for L1. #+begin_src bash -# We need to update the chain id to Sepolia -sed -i 's/"l1_chain_id": .*,/"l1_chain_id": 11155111,/' input_parser.star - -# We need to reduce the amount of funds we'll allocate on Sepolia since we probalby don't have infinite money -sed -i 's/"l1_funding_amount": ".*"/"l1_funding_amount": "5ether"/' input_parser.star - -# The L1 RPC and WS urls need to change to be valid Sepolia endpoints -sed -i 's#"l1_rpc_url": ".*"#"l1_rpc_url": "https://YOUR-SEPOLIA-RPC.invalid"#' input_parser.star -sed -i 's#"l1_ws_url": ".*"#"l1_ws_url": "wss://YOUR-SEPOLIA-RPC.invalid"#' input_parser.star +# The L1 HTTP RPC and WS urls need to change to be valid Sepolia endpoints. +yq -Y --in-place '.args.l1_rpc_url = "https://YOUR-SEPOLIA-RPC"' .github/tests/external-l1/deploy-cdk-to-sepolia.yml +yq -Y --in-place '.args.l1_ws_url = "wss://YOUR-SEPOLIA-RPC"' .github/tests/external-l1/deploy-cdk-to-sepolia.yml -# We need to alter the finality time for erigon otherwise we'll need to wait for the contract deployment to finalize +# We need to alter the finality time for erigon otherwise we'll need to wait for the contract deployment to finalize. sed -i 's/zkevm.l1-highest-block-type: finalized/zkevm.l1-highest-block-type: latest/' templates/cdk-erigon/config.yml #+end_src @@ -169,7 +168,7 @@ progressing as expected. #+begin_src bash rpc_url=$(kurtosis port print cdk cdk-erigon-node-001 rpc) -zkevm_l2_admin_private_key="0x69659a88bd0950e4914f69aaa867e258ff39bc6274d1576a23c477c65987e31f" +zkevm_l2_admin_private_key="$(yq '.args.zkevm_l2_admin_private_key' .github/tests/external-l1/deploy-cdk-to-sepolia.yml)" # You might have to change this value! cast rpc --rpc-url $rpc_url zkevm_batchNumber cast rpc --rpc-url $rpc_url zkevm_virtualBatchNumber From ce8d2eec7bcc28e73fc0554a7658e671b9487774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Vincent?= <28714795+leovct@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:29:34 +0200 Subject: [PATCH 4/7] feat: improve sanity check script (#293) * feat: compare sequencer and rpc values * feat: get rollup type map * chore: nit * feat: add rollup type (validium or rollup) * feat: retrieve consensus type from any contract without needing to hardcode consensus contract addresses * feat: compare l2 rpc batch info and l1 contract * feat: add batch verification gap * chore: lint * chore: log script config * chore: add more logs * feat: get dac members * chore: clean up * fix: dac part * feat: log dac committe hash * feat: log if sequencer is allowed to bypass the dac * feat: format dac data * feat: compare rpc and ds results * fix: lint * chore: nit * chore: nit * chore: clean up * feat: check if all services are running * chore: check variables * chore: clean up * chore: clean up --- scripts/.gitignore | 1 + scripts/sanity-check.sh | 577 ++++++++++++++++++++++++++++++++++------ 2 files changed, 495 insertions(+), 83 deletions(-) create mode 100644 scripts/.gitignore diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 00000000..2dcf32e8 --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1 @@ +datastreamer.toml diff --git a/scripts/sanity-check.sh b/scripts/sanity-check.sh index 2e890ef6..320a607e 100755 --- a/scripts/sanity-check.sh +++ b/scripts/sanity-check.sh @@ -1,108 +1,519 @@ #!/bin/bash -# Sanity checks to do +# The goals of this script is to test and validate the operational status of the CDK environment. + +# TODO: Sanity checks to add: # - Log check -# - All contianers running -# - Matching values from rpc and sequencer -# - Matching values from rpc and data stream -# - Is this a validium or a rollup -# - Dac Committe Members -# - Batch verification gap - -# Local -l1_rpc_url=$(kurtosis port print cdk el-1-geth-lighthouse rpc) -l2_rpc_url=$(kurtosis port print cdk cdk-erigon-sequencer-001 rpc) +# - ✅ All containers running +# - ✅ Matching values from rpc and sequencer +# - ✅ Matching values from rpc and data stream +# - ✅ Is this a validium or a rollup +# - ✅ Dac Committe Members +# - ✅ Batch verification gap + +check_variable() { + local var_name="$1" + local var_value="${!var_name}" + if [ -z "$var_value" ]; then + echo "Error: $var_name is not defined" + exit 1 + fi +} + +#################################################################################################### +# ____ ___ _ _ _____ ___ ____ +# / ___/ _ \| \ | | ___|_ _/ ___| +# | | | | | | \| | |_ | | | _ +# | |__| |_| | |\ | _| | | |_| | +# \____\___/|_| \_|_| |___\____| +# +#################################################################################################### + +# LOCAL KURTOSIS-CDK +enclave="cdk" +l1_rpc_url="$(kurtosis port print "$enclave" el-1-geth-lighthouse rpc)" +l2_sequencer_url="$(kurtosis port print "$enclave" cdk-erigon-sequencer-001 rpc)" +l2_datastreamer_url="$(kurtosis port print "$enclave" cdk-erigon-sequencer-001 data-streamer | sed 's|datastream://||')" +l2_rpc_url="$(kurtosis port print "$enclave" cdk-erigon-node-001 rpc)" rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" rollup_id=1 -# Xavi -# l1_rpc_url=$(kurtosis port print erigon-18-4 el-1-geth-lighthouse rpc) -# l2_rpc_url=$(kurtosis port print erigon-18-4 sequencer001 sequencer8123) +# LOCAL KURTOSIS-CDK-ERIGON (XAVI) +# enclave="erigon-18-4" +# l1_rpc_url="$(kurtosis port print "$enclave" el-1-geth-lighthouse rpc)" +# l2_sequencer_url="$(kurtosis port print "$enclave" sequencer001 sequencer8123)" +# l2_datastreamer_url="$(kurtosis port print "$enclave" sequencer001 sequencer6900)" +# l2_rpc_url="$(kurtosis port print "$enclave" rpc001 rpc8123)" # rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" # rollup_id=1 # BALI # l1_rpc_url="https://rpc2.sepolia.org" -# l2_rpc_url="https://rpc.internal.zkevm-rpc.com" +# l2_sequencer_url="https://rpc.internal.zkevm-rpc.com" +# TODO: l2_datastreamer_url +# TODO: l2_rpc_url # rollup_manager_addr="0xe2ef6215adc132df6913c8dd16487abf118d1764" # rollup_id=1 # CARDONA # l1_rpc_url="https://rpc2.sepolia.org" -# l2_rpc_url="https://rpc.cardona.zkevm-rpc.com" +# l2_sequencer_url="https://rpc.cardona.zkevm-rpc.com" +# l2_datastreamer_url="datastream.cardona.zkevm-rpc.com:6900" +# l2_rpc_url="https://etherscan.cardona.zkevm-rpc.com" # rollup_manager_addr="0x32d33D5137a7cFFb54c5Bf8371172bcEc5f310ff" -# rollup_id=1 +# rollup_id=1 # rollup +# rollup_id=2 # validium -sig_rollup_id_to_data='rollupIDToRollupData(uint32)(address,uint64,address,uint64,bytes32,uint64,uint64,uint64,uint64,uint64,uint64,uint8)' -sig_get_sequenced_batches='getRollupSequencedBatches(uint32,uint64)(bytes32,uint64,uint64)' -sig_get_stateroot='getRollupBatchNumToStateRoot(uint32,uint64)(bytes32)' +# Check if all required variables are defined. +check_variable "l1_rpc_url" +check_variable "l2_sequencer_url" +check_variable "l2_datastreamer_url" +check_variable "l2_rpc_url" +check_variable "rollup_manager_addr" +check_variable "rollup_id" + +# Log config. +echo "Running sanity check script with config:" +echo -e "- L1 RPC URL:\t\t\t$l1_rpc_url" +echo -e "- L2 Sequencer URL:\t\t$l2_sequencer_url" +echo -e "- L2 Datastreamer URL:\t\t$l2_datastreamer_url" +echo -e "- L2 RPC URL:\t\t\t$l2_rpc_url" +echo -e "- Rollup Manager Address:\t$rollup_manager_addr" +echo -e "- Rollup ID:\t\t\t$rollup_id" + +# Update datastreamer config. +# shellcheck disable=SC2016 +tomlq -Y --toml-output --in-place --arg l2_datastreamer_url "$l2_datastreamer_url" '.Online.URI = $l2_datastreamer_url' scripts/datastreamer.toml + +#################################################################################################### +# _____ _ _ _ _ ____ _____ ___ ___ _ _ ____ +# | ___| | | | \ | |/ ___|_ _|_ _/ _ \| \ | / ___| +# | |_ | | | | \| | | | | | | | | | \| \___ \ +# | _| | |_| | |\ | |___ | | | | |_| | |\ |___) | +# |_| \___/|_| \_|\____| |_| |___\___/|_| \_|____/ +# +#################################################################################################### + +function fetch_l2_batch_info_from_rpc() { + local rpc_url="$1" + local batch_number="$2" + cast rpc --rpc-url "$rpc_url" zkevm_getBatchByNumber "$batch_number" | + jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)' +} + +function fetch_l2_batch_info_from_datastream() { + local batch_number="$1" + local result + result="$(zkevm-datastreamer decode-batch --cfg scripts/datastreamer.toml --batch "$batch_number" --json | jq -s '. | last')" + jq -n \ + --argjson result "$result" \ + '{ + localExitRoot: $result["Local Exit Root"], + stateRoot: $result["State Root"] + }' +} + +function fetch_l1_batch_info() { + local batch_number="$1" + + local sig_get_sequenced_batches='getRollupSequencedBatches(uint32,uint64)(bytes32,uint64,uint64)' + local batch_data + batch_data=$(cast call --json --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_sequenced_batches" "$rollup_id" "$batch_number") + + local sig_get_stateroot='getRollupBatchNumToStateRoot(uint32,uint64)(bytes32)' + local batch_state_root + batch_state_root=$(cast call --json --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_stateroot" "$rollup_id" "$batch_number") + + local timestamp + timestamp="$(printf '0x%x\n' "$(echo "$batch_data" | jq -r '.[1]')")" + + jq --null-input \ + --argjson batch_data "$batch_data" \ + --argjson batch_state_root "$batch_state_root" \ + --arg timestamp "$timestamp" \ + '{ + accInputHash: $batch_data[0], + timestamp: $timestamp, + previousLastBatchSequenced: $batch_data[2], + stateRoot: $batch_state_root[0] + }' +} + +function compare_json_full_match() { + _compare_json "$1" "$2" "$3" "$4" false +} -rollup_data_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_rollup_id_to_data" "$rollup_id") +function compare_json_partial_match() { + _compare_json "$1" "$2" "$3" "$4" true +} + +function _compare_json() { + local name1="$1" + local json1="$2" + local name2="$3" + local json2="$4" + local partial_check="${5:-false}" + + # Get all keys from both JSON objects. + local keys + keys=$(echo "$json1 $json2" | jq -r 'keys[]' | sort -u) + + # Function to compare fields. + compare_field() { + local field="$1" + local value1 + value1=$(echo "$json1" | jq -r ".$field // \"\"") + local value2 + value2=$(echo "$json2" | jq -r ".$field // \"\"") + + if [[ "$partial_check" == true ]] && { [[ "$value1" == "" ]] || [[ "$value2" == "" ]]; }; then + return + fi + + if [[ "$value1" != "$value2" ]]; then + different=true + echo -e "❌ $field mismatch:" + echo -e "- $name1:\t$value1" + echo -e "- $name2:\t$value2" + echo + fi + } + + # Compare all fields. + local different=false + for key in $keys; do + compare_field "$key" + done + + if [[ "$different" == false ]]; then + echo -e "✅ The JSON objects are the same." + return 0 + else + echo -e "❌ The JSON objects are not the same." + return 1 + fi +} + +# Check if there are any stopped services. +if [[ "$enclave" != "" ]]; then + echo " +#################################################################################################### +# _ ___ _ ____ _____ ___ ____ ___ ____ +# | |/ / | | | _ \_ _/ _ \/ ___|_ _/ ___| +# | ' /| | | | |_) || || | | \___ \| |\___ \ +# | . \| |_| | _ < | || |_| |___) | | ___) | +# |_|\_\\___/|_| \_\|_| \___/|____/___|____/ +# +#################################################################################################### +" + stopped_services="$(kurtosis enclave inspect "$enclave" | grep STOPPED)" + if [[ -n "$stopped_services" ]]; then + echo "🚨 It looks like there is at least one stopped service in the enclave... Something must have halted..." + echo "$stopped_services" + echo + + kurtosis enclave inspect "$enclave" --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' \ + | while read -r container; do echo "Printing logs for $container"; docker logs --tail 50 "$container"; done + exit 1 + else + echo "✅ All services are running." + fi +fi + +# Fetch rollup data. +# shellcheck disable=SC2028 +echo ' +#################################################################################################### +# ____ ___ _ _ _ _ ____ ____ _ _____ _ +# | _ \ / _ \| | | | | | | | _ \ | _ \ / \|_ _|/ \ +# | |_) | | | | | | | | | | | |_) | | | | |/ _ \ | | / _ \ +# | _ <| |_| | |___| |__| |_| | __/ | |_| / ___ \| |/ ___ \ +# |_| \_\\___/|_____|_____\___/|_| |____/_/ \_\_/_/ \_\ +# +#################################################################################################### +' + +echo "Fetching rollup data..." +sig_rollup_id_to_data='rollupIDToRollupData(uint32)(address,uint64,address,uint64,bytes32,uint64,uint64,uint64,uint64,uint64,uint64,uint8)' +rollup_data_json=$(cast call --json --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_rollup_id_to_data" "$rollup_id") rollup_contract=$(echo "$rollup_data_json" | jq -r '.[0]') -chain_id=$(echo "$rollup_data_json" | jq -r '.[1]') -verifier=$(echo "$rollup_data_json" | jq -r '.[2]') -fork_id=$(echo "$rollup_data_json" | jq -r '.[3]') -last_local_exit_root=$(echo "$rollup_data_json" | jq -r '.[4]') -last_batch_sequenced=$(echo "$rollup_data_json" | jq -r '.[5]') +last_virtualized_batch=$(echo "$rollup_data_json" | jq -r '.[5]') last_verified_batch=$(echo "$rollup_data_json" | jq -r '.[6]') -last_pending_state=$(echo "$rollup_data_json" | jq -r '.[7]') -last_pending_state_consolidated=$(echo "$rollup_data_json" | jq -r '.[8]') -last_verified_batch_before_upgrade=$(echo "$rollup_data_json" | jq -r '.[9]') rollup_type_id=$(echo "$rollup_data_json" | jq -r '.[10]') -rollup_compatibility_id=$(echo "$rollup_data_json" | jq -r '.[11]') - -latest_batch_number=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_batchNumber | jq -r '.') - -echo "Rollup Contract: $rollup_contract" -echo "Chain ID: $chain_id" -echo "Verifier Address: $verifier" -echo "Fork ID: $fork_id" -echo "Last LER: $last_local_exit_root" -echo "Last Sequenced Batch: $last_batch_sequenced" -echo "Last Verified Batch: $last_verified_batch" -echo "Last Pending State: $last_pending_state" -echo "Last Pending State Consolidated: $last_pending_state_consolidated" -echo "Last Verified Batch Before Upgrade: $last_verified_batch_before_upgrade" -echo "Rollup Type ID: $rollup_type_id" -echo "Rollup Compatibility ID: $rollup_compatibility_id" - -simple_batch_info=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_getBatchByNumber "$latest_batch_number" | jq '.') -simple_simple_batch=$(echo "$simple_batch_info" | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') -echo "$simple_simple_batch" | jq '.' - -virtual_batch_info=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_getBatchByNumber "$(printf "0x%x" "$last_batch_sequenced")" | jq '.') -simple_virtual_batch=$(echo "$virtual_batch_info" | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') -echo "$simple_virtual_batch" | jq '.' - -verified_batch_info=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_getBatchByNumber "$(printf "0x%x" "$last_verified_batch")" | jq '.') -simple_verifed_batch=$(echo "$verified_batch_info" | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') -echo "$simple_verifed_batch" | jq '.' - -sequenced_batch_data_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_sequenced_batches" "$rollup_id" "$last_batch_sequenced") -sequenced_batch_sr_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_stateroot" "$rollup_id" "$last_batch_sequenced") - -seq_acc_input_hash=$(echo "$sequenced_batch_data_json" | jq -r '.[0]') -sequenced_timestamp=$(echo "$sequenced_batch_data_json" | jq -r '.[1]') -seq_previous_last_batch_sequenced=$(echo "$sequenced_batch_data_json" | jq -r '.[2]') -seq_state_root=$(echo "$sequenced_batch_sr_json" | jq -r '.[0]') - -echo "Batch $last_batch_sequenced accInputHash: $seq_acc_input_hash" -echo "Batch $last_batch_sequenced sequencedTimestamp: $sequenced_timestamp" -echo "Batch $last_batch_sequenced previousLastBatchSequenced: $seq_previous_last_batch_sequenced" -echo "Batch $last_batch_sequenced stateRoot: $seq_state_root" - -verified_batch_data_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_sequenced_batches" "$rollup_id" "$last_verified_batch") -verified_batch_sr_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_stateroot" "$rollup_id" "$last_verified_batch") - -verified_acc_input_hash=$(echo "$verified_batch_data_json" | jq -r '.[0]') -verified_timestamp=$(echo "$verified_batch_data_json" | jq -r '.[1]') -verif_previous_last_batch_sequenced=$(echo "$verified_batch_data_json" | jq -r '.[2]') -verif_state_root=$(echo "$verified_batch_sr_json" | jq -r '.[0]') - -echo "Batch $last_verified_batch accInputHash: $verified_acc_input_hash" -echo "Batch $last_verified_batch sequencedTimestamp: $verified_timestamp" -echo "Batch $last_verified_batch previousLastBatchSequenced: $verif_previous_last_batch_sequenced" -echo "Batch $last_verified_batch stateRoot: $verif_state_root" +jq -n --argjson rollup_data "$rollup_data_json" \ + '{ + rollupContract: $rollup_data[0], + chainId: $rollup_data[1], + verifierAddress: $rollup_data[2], + forkId: $rollup_data[3], + lastLocalExitRoot: $rollup_data[4], + lastSequencedBatch: $rollup_data[5], + lastVerifiedBatch: $rollup_data[6], + lastPendingState: $rollup_data[7], + lastPendingStateConsolidated: $rollup_data[8], + lastVerifiedBatchBeforeUpgrade: $rollup_data[9], + rollupTypeId: $rollup_data[10], + rollupCompatibilityId: $rollup_data[11] +}' + +echo -e "\nFetching rollup type data..." +sig_rollup_type_map='rollupTypeMap(uint32)(address,address,uint64,uint8,bool,bytes32)' +rollup_type_map=$(cast call --json --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_rollup_type_map" "$rollup_type_id") + +jq -n \ + --argjson rollup_type_map "$rollup_type_map" \ + '{ + consensusImplementation: $rollup_type_map[0], + verifier: $rollup_type_map[1], + forkID: $rollup_type_map[2], + rollupCompatibilityID: $rollup_type_map[3], + obsolete: $rollup_type_map[4], + genesis: $rollup_type_map[5] + }' + +consensus_type="" +da_protocol_addr="" +result=$(cast call --json --rpc-url "$l1_rpc_url" "$rollup_contract" "dataAvailabilityProtocol()(address)" 2>&1) +# shellcheck disable=SC2181 +if [ $? -eq 0 ]; then + consensus_type="validium" + da_protocol_addr="$(echo "$result" | jq -r '.[0]')" +else + consensus_type="rollup" +fi +echo -e "\nConsensus type: $consensus_type" + +if [[ "$consensus_type" == "validium" ]]; then + echo ' +#################################################################################################### +# ____ _ ____ +# | _ \ / \ / ___| +# | | | |/ _ \| | +# | |_| / ___ \ |___ +# |____/_/ \_\____| +# +#################################################################################################### +' + + echo "Fetching DAC data..." + + sequencerAllowedToBypassDAC="$(cast call --json --rpc-url "$l1_rpc_url" "$rollup_contract" "isSequenceWithDataAvailabilityAllowed()(bool)" | jq -r '.[0]')" + requiredAmountOfSignatures="$(cast call --json --rpc-url "$l1_rpc_url" "$da_protocol_addr" "requiredAmountOfSignatures()(uint256)" | jq -r '.[0]')" + committeeHash="$(cast call --json --rpc-url "$l1_rpc_url" "$da_protocol_addr" "committeeHash()(bytes32)" | jq -r '.[0]')" + members="$(cast call --json --rpc-url "$l1_rpc_url" "$da_protocol_addr" "getAmountOfMembers()(uint256)" | jq -r '.[0]')" + + jq -n \ + --arg dataAvailabilityProtocol "$da_protocol_addr" \ + --arg sequencerAllowedToBypassDAC "$sequencerAllowedToBypassDAC" \ + --arg requiredAmountOfSignatures "$requiredAmountOfSignatures" \ + --arg committeeHash "$committeeHash" \ + --arg members "$members" \ + '{ + dataAvailabilityProtocol: $dataAvailabilityProtocol, + isSequenceWithDataAvailabilityAllowed: $sequencerAllowedToBypassDAC, + requiredAmountOfSignatures: $requiredAmountOfSignatures, + committeeHash: $committeeHash, + members: $members + }' + + echo -e "\nMembers:" + for ((i = 0; i < "$members"; i++)); do + member_info="$(cast call --json --rpc-url "$l1_rpc_url" "$da_protocol_addr" "members(uint256)(string,address)" "$i")" + jq -n \ + --arg i "$i" \ + --argjson member_info "$member_info" \ + '{ + id: $i, + url: $member_info[0], + address: $member_info[1], + }' + done +fi + +# shellcheck disable=SC2028 +echo ' +#################################################################################################### +# _____ ____ _ _ ____ _____ _____ ____ ____ _ _____ ____ _ _ +# |_ _| _ \| | | / ___|_ _| ____| _ \ | __ ) / \|_ _/ ___| | | | +# | | | |_) | | | \___ \ | | | _| | | | | | _ \ / _ \ | || | | |_| | +# | | | _ <| |_| |___) || | | |___| |_| | | |_) / ___ \| || |___| _ | +# |_| |_| \_\\___/|____/ |_| |_____|____/ |____/_/ \_\_| \____|_| |_| +# +#################################################################################################### +' + +# Fetch batch numbers. +echo "Fetching last batch numbers L2 sequencer and L2 RPC..." +sequencer_latest_batch_number="$(cast rpc --rpc-url "$l2_sequencer_url" zkevm_batchNumber | jq -r '.')" +rpc_latest_batch_number="$(cast rpc --rpc-url "$l2_rpc_url" zkevm_batchNumber | jq -r '.')" +echo "- SEQUENCER: $((sequencer_latest_batch_number))" +echo "- RPC: $((rpc_latest_batch_number))" + +if [[ "$((sequencer_latest_batch_number))" -eq "$((rpc_latest_batch_number))" ]]; then + echo -e "\n✅ Batch numbers match." +else + echo -e "\n❌ Batch number mismatch:" + echo "- l2_sequencer: $sequencer_latest_batch_number" + echo "- l2_rpc: $rpc_latest_batch_number" +fi + +# Fetch batch data. +echo -e "\nFetching data from L2 sequencer..." +sequencer_trusted_batch_info="$(fetch_l2_batch_info_from_rpc "$l2_sequencer_url" "$sequencer_latest_batch_number")" +echo "Batch: $((sequencer_latest_batch_number))" +echo "$sequencer_trusted_batch_info" | jq '.' + +echo -e "\nFetching data from L2 RPC..." +rpc_trusted_batch_info="$(fetch_l2_batch_info_from_rpc "$l2_rpc_url" "$rpc_latest_batch_number")" +echo "Batch: $((rpc_latest_batch_number))" +echo "$rpc_trusted_batch_info" | jq '.' + +# Compare batch data (only if they match). +if [[ "$((sequencer_latest_batch_number))" -eq "$((rpc_latest_batch_number))" ]]; then + echo -e "\nComparing L2 sequencer and L2 RPC..." + compare_json_full_match \ + "l2_sequencer" "$sequencer_trusted_batch_info" \ + "l2_rpc" "$rpc_trusted_batch_info" +fi + +# shellcheck disable=SC2028 +echo ' +#################################################################################################### +# __ _____ ____ _____ _ _ _ _ ___ __________ ____ ____ _ _____ ____ _ _ +# \ \ / /_ _| _ \_ _| | | | / \ | | |_ _|__ / ____| _ \ | __ ) / \|_ _/ ___| | | | +# \ \ / / | || |_) || | | | | |/ _ \ | | | | / /| _| | | | | | _ \ / _ \ | || | | |_| | +# \ V / | || _ < | | | |_| / ___ \| |___ | | / /_| |___| |_| | | |_) / ___ \| || |___| _ | +# \_/ |___|_| \_\|_| \___/_/ \_\_____|___/____|_____|____/ |____/_/ \_\_| \____|_| |_| +# +#################################################################################################### +' + +echo "Batch: $((last_virtualized_batch))" + +# Fetch batch data. +echo -e "\nFetching data from L2 RPC..." +l2_rpc_virtualized_batch_info="$(fetch_l2_batch_info_from_rpc "$l2_rpc_url" "$(printf "0x%x" "$last_virtualized_batch")")" +echo "$l2_rpc_virtualized_batch_info" | jq '.' + +echo -e "\nFetching data from L2 sequencer..." +l2_sequencer_virtualized_batch_info="$(fetch_l2_batch_info_from_rpc "$l2_sequencer_url" "$(printf "0x%x" "$last_virtualized_batch")")" +echo "$l2_sequencer_virtualized_batch_info" | jq '.' + +echo -e "\nFetching data from L2 datastreamer..." +l2_datastreamer_virtualized_batch_info="$(fetch_l2_batch_info_from_datastream "$((last_virtualized_batch))")" +echo "$l2_datastreamer_virtualized_batch_info" | jq '.' + +echo -e "\nFetching data from L1 RollupManager contract..." +l1_virtualized_batch_info="$(fetch_l1_batch_info "$last_virtualized_batch")" +echo "$l1_virtualized_batch_info" | jq '.' + +# Compare batch data. +echo -e "\nComparing L2 sequencer and L2 RPC..." +compare_json_full_match \ + "l2_sequencer" "$l2_sequencer_virtualized_batch_info" \ + "l2_rpc" "$l2_rpc_virtualized_batch_info" + +echo -e "\nComparing L2 datastreamer and L2 rpc..." +compare_json_partial_match \ + "l2_datastreamer" "$l2_datastreamer_virtualized_batch_info" \ + "l2_rpc" "$l2_rpc_virtualized_batch_info" + +echo -e "\nComparing L2 sequencer and L1 contracts..." +compare_json_partial_match \ + "l2_sequencer" "$l2_sequencer_virtualized_batch_info" \ + "l1_contract" "$l1_virtualized_batch_info" + +echo -e "\nComparing L2 RPC and L1 contracts..." +compare_json_partial_match \ + "l2_rpc" "$l2_rpc_virtualized_batch_info" \ + "l1_contract" "$l1_virtualized_batch_info" + +# shellcheck disable=SC2028 +echo ' +#################################################################################################### +# __ _______ ____ ___ _____ ___ _____ ____ ____ _ _____ ____ _ _ +# \ \ / / ____| _ \|_ _| ___|_ _| ____| _ \ | __ ) / \|_ _/ ___| | | | +# \ \ / /| _| | |_) || || |_ | || _| | | | | | _ \ / _ \ | || | | |_| | +# \ V / | |___| _ < | || _| | || |___| |_| | | |_) / ___ \| || |___| _ | +# \_/ |_____|_| \_\___|_| |___|_____|____/ |____/_/ \_\_| \____|_| |_| +# +#################################################################################################### +' + +echo "Batch: $((last_verified_batch))" + +# Fetch batch data. +echo -e "\nFetching data from L2 RPC..." +l2_rpc_verified_batch_info="$(fetch_l2_batch_info_from_rpc "$l2_rpc_url" "$(printf "0x%x" "$last_verified_batch")")" +echo "$l2_rpc_verified_batch_info" | jq '.' + +echo -e "\nFetching data from L2 sequencer..." +l2_sequencer_verified_batch_info="$(fetch_l2_batch_info_from_rpc "$l2_sequencer_url" "$(printf "0x%x" "$last_verified_batch")")" +echo "$l2_sequencer_verified_batch_info" | jq '.' + +echo -e "\nFetching data from L2 datastreamer..." +l2_datastreamer_verified_batch_info="$(fetch_l2_batch_info_from_datastream "$((last_verified_batch))")" +echo "$l2_datastreamer_verified_batch_info" | jq '.' + +echo -e "\nFetching data from L1 RollupManager contract..." +l1_verified_batch_info="$(fetch_l1_batch_info "$last_verified_batch")" +echo "$l1_verified_batch_info" | jq '.' + +# Compare batch data. +echo -e "\nComparing L2 sequencer and L2 RPC..." +compare_json_full_match \ + "l2_sequencer" "$l2_sequencer_verified_batch_info" \ + "l2_rpc" "$l2_rpc_verified_batch_info" + +echo -e "\nComparing L2 datastreamer and L2 rpc..." +compare_json_partial_match \ + "l2_datastreamer" "$l2_datastreamer_verified_batch_info" \ + "l2_rpc" "$l2_rpc_verified_batch_info" + +echo -e "\nComparing L2 sequencer and L1 contracts..." +compare_json_partial_match \ + "l2_sequencer" "$l2_sequencer_verified_batch_info" \ + "l1_contract" "$l1_verified_batch_info" + +echo -e "\nComparing L2 RPC and L1 contracts..." +compare_json_partial_match \ + "l2_rpc" "$l2_rpc_verified_batch_info" \ + "l1_contract" "$l1_verified_batch_info" + +# shellcheck disable=SC2028 +echo ' +#################################################################################################### +# ____ _ _____ ____ _ _ ____ _ ____ +# | __ ) / \|_ _/ ___| | | | / ___| / \ | _ \ +# | _ \ / _ \ | || | | |_| | | | _ / _ \ | |_) | +# | |_) / ___ \| || |___| _ | | |_| |/ ___ \| __/ +# |____/_/ \_\_| \____|_| |_| \____/_/ \_\_| +# +#################################################################################################### +' + +sequencer_latest_trusted_batch_number="$(cast rpc --rpc-url "$l2_sequencer_url" zkevm_batchNumber | jq -r '.')" +sequencer_latest_virtualized_batch_number="$(cast rpc --rpc-url "$l2_sequencer_url" zkevm_virtualBatchNumber | jq -r '.')" +sequencer_latest_verified_batch_number="$(cast rpc --rpc-url "$l2_sequencer_url" zkevm_verifiedBatchNumber | jq -r '.')" +sequencer_virtualized_to_trusted_gap="$(($((sequencer_latest_trusted_batch_number)) - $((sequencer_latest_virtualized_batch_number))))" +sequencer_verified_to_trusted_gap="$(($((sequencer_latest_trusted_batch_number)) - $((sequencer_latest_verified_batch_number))))" +echo "L2 Sequencer" +echo -e "- Trusted:\t$((sequencer_latest_trusted_batch_number))" +echo -e "- Virtual:\t$((sequencer_latest_virtualized_batch_number)) ($sequencer_virtualized_to_trusted_gap)" +echo -e "- Verified:\t$((sequencer_latest_verified_batch_number)) ($sequencer_verified_to_trusted_gap)" + +rpc_latest_trusted_batch_number="$(cast rpc --rpc-url "$l2_rpc_url" zkevm_batchNumber | jq -r '.')" +rpc_latest_virtualized_batch_number="$(cast rpc --rpc-url "$l2_rpc_url" zkevm_virtualBatchNumber | jq -r '.')" +rpc_latest_verified_batch_number="$(cast rpc --rpc-url "$l2_rpc_url" zkevm_verifiedBatchNumber | jq -r '.')" +rpc_virtualized_to_trusted_gap="$(($((rpc_latest_trusted_batch_number)) - $((rpc_latest_virtualized_batch_number))))" +rpc_verified_to_trusted_gap="$(($((rpc_latest_trusted_batch_number)) - $((rpc_latest_verified_batch_number))))" +echo -e "\nL2 RPC" +echo -e "- Trusted:\t$((rpc_latest_trusted_batch_number))" +echo -e "- Virtual:\t$((rpc_latest_virtualized_batch_number)) ($rpc_virtualized_to_trusted_gap)" +echo -e "- Verified:\t$((rpc_latest_verified_batch_number)) ($rpc_verified_to_trusted_gap)" +echo -e "\nL1 RollupManager Contract" +echo -e "- Virtual:\t$last_virtualized_batch" +echo -e "- Verified:\t$last_verified_batch" From 38a979aecfebbcce28c5583f5ad354954c4a49b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Vincent?= <28714795+leovct@users.noreply.github.com> Date: Tue, 22 Oct 2024 15:46:35 +0200 Subject: [PATCH 5/7] ci: log in to the docker hub when possible (#312) * ci: docker hub login * test * fix: docker secrets issues * fix: security build * chore: disable steps if secrets are not defined * chore: clean up * chore: merge latest changes --- .github/workflows/deploy.yml | 60 ++++++++++++++++++++++++++++ .github/workflows/nightly.yml | 18 ++++++++- .github/workflows/security-build.yml | 6 ++- 3 files changed, 82 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b4c6bbd1..e5e8491e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,6 +22,18 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.DOCKERHUB_USERNAME && env.DOCKERHUB_TOKEN }} + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Install Kurtosis CDK tools uses: ./.github/actions/setup-kurtosis-cdk @@ -81,6 +93,18 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.DOCKERHUB_USERNAME && env.DOCKERHUB_TOKEN }} + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Install Kurtosis CDK tools uses: ./.github/actions/setup-kurtosis-cdk @@ -149,6 +173,18 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.DOCKERHUB_USERNAME && env.DOCKERHUB_TOKEN }} + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Install Kurtosis CDK tools uses: ./.github/actions/setup-kurtosis-cdk @@ -240,6 +276,18 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.DOCKERHUB_USERNAME && env.DOCKERHUB_TOKEN }} + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Install Kurtosis CDK tools uses: ./.github/actions/setup-kurtosis-cdk @@ -297,6 +345,18 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.DOCKERHUB_USERNAME && env.DOCKERHUB_TOKEN }} + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Install Kurtosis CDK tools uses: ./.github/actions/setup-kurtosis-cdk diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 84502fdc..eda80c3a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -16,12 +16,23 @@ env: jobs: # Deploy a standalone zkevm permisionless node against Cardona Sepolia Tesnet. cardona-sepolia-testnet-pless-zkevm-node: - #if: github.repository == '0xPolygon/kurtosis-cdk' # Prevent this job to run on forks. runs-on: ubuntu-latest timeout-minutes: 20 steps: - uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.DOCKERHUB_USERNAME && env.DOCKERHUB_TOKEN }} + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Install Kurtosis CDK tools uses: ./.github/actions/setup-kurtosis-cdk @@ -29,6 +40,11 @@ jobs: run: | yq -Y --in-place '.args.l1_rpc_url = "${{ secrets.ALCHEMY_SEPOLIA_RPC_URL }}"' ./.github/tests/pless-zkevm-node/cardona-sepolia-testnet-pless-zkevm-node.yml kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/pless-zkevm-node/cardona-sepolia-testnet-pless-zkevm-node.yml --show-enclave-inspect=false . + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.ALCHEMY_SEPOLIA_RPC_URL}} + env: + ALCHEMY_SEPOLIA_RPC_URL: ${{ secrets.ALCHEMY_SEPOLIA_RPC_URL }} - name: Inspect enclave run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} diff --git a/.github/workflows/security-build.yml b/.github/workflows/security-build.yml index 0a9c8298..7edc5250 100644 --- a/.github/workflows/security-build.yml +++ b/.github/workflows/security-build.yml @@ -10,7 +10,6 @@ jobs: sonarcloud: runs-on: ubuntu-latest timeout-minutes: 5 - if: github.repository == '0xPolygon/kurtosis-cdk' # Prevent this job to run on forks. steps: - uses: actions/checkout@v4 with: @@ -21,3 +20,8 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # This step will only execute if the necessary secrets are available, preventing failures + # on pull requests from forked repositories. + if: ${{ env.SONAR_TOKEN}} + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From ad85a6460403d9f59e010b6217f98f5ccb2b1ed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Vincent?= <28714795+leovct@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:34:26 +0200 Subject: [PATCH 6/7] ci: fix security build job (#328) * ci: fix security build job * chore: run job on PRs --- .github/workflows/security-build.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/security-build.yml b/.github/workflows/security-build.yml index 7edc5250..60550880 100644 --- a/.github/workflows/security-build.yml +++ b/.github/workflows/security-build.yml @@ -3,7 +3,7 @@ name: Security Build on: push: branches: [main] - #pull_request: + pull_request: workflow_dispatch: jobs: @@ -17,11 +17,9 @@ jobs: fetch-depth: 0 - uses: sonarsource/sonarcloud-github-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # This step will only execute if the necessary secrets are available, preventing failures # on pull requests from forked repositories. if: ${{ env.SONAR_TOKEN}} env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From cecf43b53441f760fe0cd0fc7046e354f3948f8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Vincent?= <28714795+leovct@users.noreply.github.com> Date: Wed, 23 Oct 2024 12:44:14 +0200 Subject: [PATCH 7/7] ci: test combinations check (#330) * ci: test combinations check * fix: typo * ci: rename jobs * chore: update test combinations * fix: install yq * test * Revert "test" This reverts commit 15a39e78e8ebb5197ec86ceaeef0b79972391b3f. --- .../fork11-legacy-zkevm-stack-rollup.yml | 6 ++--- .../fork11-new-cdk-stack-cdk-validium.yml | 6 ++--- .../fork11-new-cdk-stack-rollup.yml | 6 ++--- .../fork12-new-cdk-stack-cdk-validium.yml | 4 +-- .../fork12-new-cdk-stack-rollup.yml | 4 +-- .../fork9-legacy-zkevm-stack-cdk-validium.yml | 6 ++--- .../fork9-legacy-zkevm-stack-rollup.yml | 6 ++--- .../fork9-new-cdk-stack-cdk-validium.yml | 6 ++--- .../fork9-new-cdk-stack-rollup.yml | 6 ++--- .github/workflows/lint.yml | 27 ++++++++++++++++++- 10 files changed, 51 insertions(+), 26 deletions(-) diff --git a/.github/tests/combinations/fork11-legacy-zkevm-stack-rollup.yml b/.github/tests/combinations/fork11-legacy-zkevm-stack-rollup.yml index bacc089c..1e53ce40 100644 --- a/.github/tests/combinations/fork11-legacy-zkevm-stack-rollup.yml +++ b/.github/tests/combinations/fork11-legacy-zkevm-stack-rollup.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v7.0.0-rc.2-fork.11 - zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.2-fork.11 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:acceptance-2.0.0-beta26-0f01107 - zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11-RC1 + zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.3-fork.11 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11 additional_services: - tx_spammer data_availability_mode: rollup diff --git a/.github/tests/combinations/fork11-new-cdk-stack-cdk-validium.yml b/.github/tests/combinations/fork11-new-cdk-stack-cdk-validium.yml index 3f82861b..b8f1e5f1 100644 --- a/.github/tests/combinations/fork11-new-cdk-stack-cdk-validium.yml +++ b/.github/tests/combinations/fork11-new-cdk-stack-cdk-validium.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v7.0.0-rc.2-fork.11 - zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.2-fork.11 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:acceptance-2.0.0-beta26-0f01107 - zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11-RC1 + zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.3-fork.11 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11 additional_services: - tx_spammer data_availability_mode: cdk-validium diff --git a/.github/tests/combinations/fork11-new-cdk-stack-rollup.yml b/.github/tests/combinations/fork11-new-cdk-stack-rollup.yml index bb8d502a..fcfeb95b 100644 --- a/.github/tests/combinations/fork11-new-cdk-stack-rollup.yml +++ b/.github/tests/combinations/fork11-new-cdk-stack-rollup.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v7.0.0-rc.2-fork.11 - zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.2-fork.11 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:acceptance-2.0.0-beta26-0f01107 - zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11-RC1 + zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.3-fork.11 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11 additional_services: - tx_spammer data_availability_mode: rollup diff --git a/.github/tests/combinations/fork12-new-cdk-stack-cdk-validium.yml b/.github/tests/combinations/fork12-new-cdk-stack-cdk-validium.yml index a994e010..6631dc08 100644 --- a/.github/tests/combinations/fork12-new-cdk-stack-cdk-validium.yml +++ b/.github/tests/combinations/fork12-new-cdk-stack-cdk-validium.yml @@ -1,7 +1,7 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.4-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC12-fork.12 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:0948e33 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC13-fork.12 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d additional_services: - tx_spammer data_availability_mode: cdk-validium diff --git a/.github/tests/combinations/fork12-new-cdk-stack-rollup.yml b/.github/tests/combinations/fork12-new-cdk-stack-rollup.yml index 07ac0e67..ba5382bc 100644 --- a/.github/tests/combinations/fork12-new-cdk-stack-rollup.yml +++ b/.github/tests/combinations/fork12-new-cdk-stack-rollup.yml @@ -1,7 +1,7 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.4-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC12-fork.12 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:0948e33 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC13-fork.12 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d additional_services: - tx_spammer data_availability_mode: rollup diff --git a/.github/tests/combinations/fork9-legacy-zkevm-stack-cdk-validium.yml b/.github/tests/combinations/fork9-legacy-zkevm-stack-cdk-validium.yml index 0cebb44c..1328e659 100644 --- a/.github/tests/combinations/fork9-legacy-zkevm-stack-cdk-validium.yml +++ b/.github/tests/combinations/fork9-legacy-zkevm-stack-cdk-validium.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v6.0.0-rc.1-fork.9 - zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.6 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:0948e33 - zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 + zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.7 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk additional_services: - pless_zkevm_node diff --git a/.github/tests/combinations/fork9-legacy-zkevm-stack-rollup.yml b/.github/tests/combinations/fork9-legacy-zkevm-stack-rollup.yml index e78fb3a4..9796eed0 100644 --- a/.github/tests/combinations/fork9-legacy-zkevm-stack-rollup.yml +++ b/.github/tests/combinations/fork9-legacy-zkevm-stack-rollup.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v6.0.0-rc.1-fork.9 - zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.6 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:0948e33 - zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 + zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.7 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk additional_services: - pless_zkevm_node diff --git a/.github/tests/combinations/fork9-new-cdk-stack-cdk-validium.yml b/.github/tests/combinations/fork9-new-cdk-stack-cdk-validium.yml index 43905b8d..4cef7c1c 100644 --- a/.github/tests/combinations/fork9-new-cdk-stack-cdk-validium.yml +++ b/.github/tests/combinations/fork9-new-cdk-stack-cdk-validium.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v6.0.0-rc.1-fork.9 - zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.6 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:0948e33 - zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 + zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.7 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk additional_services: - pless_zkevm_node diff --git a/.github/tests/combinations/fork9-new-cdk-stack-rollup.yml b/.github/tests/combinations/fork9-new-cdk-stack-rollup.yml index d469af88..c01592f0 100644 --- a/.github/tests/combinations/fork9-new-cdk-stack-rollup.yml +++ b/.github/tests/combinations/fork9-new-cdk-stack-rollup.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v6.0.0-rc.1-fork.9 - zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.6 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:0948e33 - zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 + zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.7 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:ab3013d + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk additional_services: - pless_zkevm_node diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e616040b..e4e782eb 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,7 +14,7 @@ env: KURTOSIS_VERSION: 0.90.1 jobs: - check: + lint: runs-on: ubuntu-latest timeout-minutes: 5 steps: @@ -51,3 +51,28 @@ jobs: - name: Run shellcheck run: find . -type f -name '*.sh' | sort | xargs -I {} shellcheck {} + + check-test-combinations: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install yq + run: | + pip3 install yq + yq --version + + - name: Generate test combinations + working-directory: .github/tests + run: ./combine-ymls.sh + + - name: Check if test combinations are up to date + run: | + if [[ -n $(git status --porcelain) ]]; then + echo "❌ Error: Test combinations are not up to date. Please run \`./combine-ymls.sh\`." + git status --porcelain + git diff + exit 1 + else + echo "✅ Test combinations are up to date." + fi