From 21913ec0bf0d9f7e468ca47a4995374306d3e305 Mon Sep 17 00:00:00 2001 From: Arjun Komath Date: Sun, 31 May 2026 16:21:40 +1000 Subject: [PATCH 1/9] Fix inngest health checks --- compose.dev.yml | 4 ++-- deployment/compose.postgres.yml | 4 ++-- deployment/compose.production.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/compose.dev.yml b/compose.dev.yml index 8143b70..9e4d18a 100644 --- a/compose.dev.yml +++ b/compose.dev.yml @@ -61,11 +61,11 @@ services: - "8289:8289" command: inngest dev -u http://host.docker.internal:3000/api/inngest healthcheck: - test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8288/health"] + test: ["CMD", "inngest", "alpha", "doctor", "healthcheck"] interval: 30s timeout: 10s retries: 3 - start_period: 30s + start_period: 40s restart: unless-stopped volumes: diff --git a/deployment/compose.postgres.yml b/deployment/compose.postgres.yml index 3c8d0dd..e334274 100644 --- a/deployment/compose.postgres.yml +++ b/deployment/compose.postgres.yml @@ -196,11 +196,11 @@ services: web: condition: service_healthy healthcheck: - test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8288/health"] + test: ["CMD", "inngest", "alpha", "doctor", "healthcheck"] interval: 30s timeout: 10s retries: 3 - start_period: 30s + start_period: 40s restart: unless-stopped volumes: diff --git a/deployment/compose.production.yml b/deployment/compose.production.yml index e95a9b5..ed0e073 100644 --- a/deployment/compose.production.yml +++ b/deployment/compose.production.yml @@ -175,11 +175,11 @@ services: web: condition: service_healthy healthcheck: - test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8288/health"] + test: ["CMD", "inngest", "alpha", "doctor", "healthcheck"] interval: 30s timeout: 10s retries: 3 - start_period: 30s + start_period: 40s restart: unless-stopped volumes: From 1ac3c6781047d0a696b4a45250d0a4488904f321 Mon Sep 17 00:00:00 2001 From: Arjun Komath Date: Mon, 1 Jun 2026 20:17:41 +1000 Subject: [PATCH 2/9] Update font --- web/app/fonts/IoskeleyMono-Regular.woff2 | Bin 0 -> 314060 bytes web/app/fonts/Lilex.woff2 | Bin 93688 -> 0 bytes web/app/globals.css | 4 ++-- web/app/layout.tsx | 9 +++++---- 4 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 web/app/fonts/IoskeleyMono-Regular.woff2 delete mode 100644 web/app/fonts/Lilex.woff2 diff --git a/web/app/fonts/IoskeleyMono-Regular.woff2 b/web/app/fonts/IoskeleyMono-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a9351a9272723416cc8c58a4582aa4bf12f41a0e GIT binary patch literal 314060 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ÅmES9F1d3i)q^lILUNG)u9jmf-~RgI5#D2qRm8aFSUE<`b)RlcE@G3 z?72(#p`8BlBcH4wW_`ihbYmT};aJSpjnBrMt9Y2Tc{F*xS(b|;6G2u6CMR?I#e=u| zHT!Su211Y>z8$ooXGy@EGEI_A1}5b5`fa^vkuBEJRi&fPwrCg$D#tzE#|{*L3vV1qVTE|n_+Y2XhEwM{!U_^sfX zT>|1jd>ohKZhRK6k`2bdoV@PVc413q(cG0s@@!tu2l>1}c}l@XjBnV|-BPsi{W|L2 zp{U2Jc^>7@%w;4=ZntH0A)={18d(=PnCm$-I=wE(FYnEY{=MNfiXs#s-v8kkb8K@` zO>g#(0&UHKy#4l!{_0~dU;FLbj{MH_)$7{Q91W+&M7(0N%+b3y?>?C)!#a2srd>5_ zDEGtd!NhcX@QkmX5X|{%p8#G{v2iX@E|}i^RS1-K=5@m#!fSmI?nYN$hUbrM_TW8l z=YV&4m1p^pd%2Zsxs-D`m18-SeYucrIguk-RrZufJFoLMKl3#o^EQ`rKBsd$hqFJs zvppxXJ_oZmi~o&V|0z^IdLO=(PUK9QhmQ2AEB)BUF?QKc2OKU9-{kOXF*o>j-=oZ9y21H|1Ob|3y6{c z1eu9BI;()ND^Jno=Kr=jc!EhgcqsvK=6cwIIgbXfnT9%2R_hG zDMzs`SfF!LvI z7EIDj-R^O(``qsV4|>SM9)Y3Y=LZB7pwM@Di7RwCuW^H+$M*r|I?Tp`X(9kiK(xQc zqDhL1T;R2EMxXI0u78^zw=Hu%`H@I6gREU{-()@NIt{|FPi?Vmg?YE$f5}EngHLUV zVn;>4J^sl7SF!^>wWX>Pm&5){T5T@59C+J^Pn-o@&lC#|(6eB&t&T;ZeO#0}tUL5uR!O6B1Ddc$&3D9? z1y}?Efj}S-2!v(v)&IQoD7v!36i@m8Z%DT&0olqCF)UjQy=xNT+$rTGv538K5dIjooF zDj}LjeBqSG$d{i`W|5*qixDeMvI511J0wC@^0>?g4wf&5&Msa;ME!^ieBM!oeYg<_%D^0|7UTmZSyjk&~|re z%joU5ZiTjyGfQ*z9ivC#KX=leMd-Tw=~=)ncjsOLZkwQ&f&b3ZRrOp9q=iv-kE(KtluF%E*{-4`%Lia?soFd-be38G4DJoMJK-n9*!1& zhF;2_awK}1CpenLT#O5n=Z)E^ZCxq?8e0P|idn6J|J_axhgZMtnLttoppX6wKza>%pfTagsfD# zXT$1)V|3J1}1Vn>|jr!!XNz-O2;8`nQ zg(_C5=98D0GBq^uCyA1rp8MC}BukZ!rc<|G{azb1Y}9xrveK2QY>g&Jm?$v>){~{A zTtEC@QEi1-pH8doNk)Zz!-DLN&}RM>{1TCI93 z8Z~Rx9uzrh^q`#8tX8$FMQt?il}LA=zrrvs>K|=!#0J1CY5=L20l4C0RhuePE;8hd zC!Bb}foGb2{zy!02#jP>5ou(QMGkosP(%r3R8U0?bu`dK3vGXBTn_!gJXNejnFk)L zP^Ctl1xqw^VfLz0jq22(tx`%Wqb#5SXGz*0{vXPbCtrafBgT{{HD$&erTJ`Bpdyv1 zObaEXNR%#NSKn9svh+P7aJGIrKA?m{nLt-DpzT{DmCgfSkGA&=l%31s46fMchddWEO}$<^zmTTmSZSs2_hHyTXE zsv{e^M}EeD+&C`W8mosqjMWrpVBFVB)*i#Q&M46tBXq_Tn{Vk;keJ?u4_WE`tF<9m z@skq}LI@$utD$fk9EBBCOwz&MOms;QUh4$QQ94@7SQgpu$f~y|s~iV4DiRbwZ&|m?kONcovfZ z@WJce7V$`3t`anfxGNUG%zZ0$>I6%+vF2J4#srqhZ+UJzpm&<3-9Hxv>n%W3vYQic zmn84io}4dxqxzpF(wSz@S$p-t(#t=!=hHJ0l-3w|a>qJLzt|yh#yE1?B)DVQ`9rv( zr_8b@<93$r*R*V*{unr_;qTnG0t5L{gz@r`Qr50T0nd8vbtE$ht2^J~Nq*J#wC`o^ z@HZ|ORE@F_k~sW!>7vN}?YkQ4xBRRXpqRg^>PAevwBOvY^)Au!%|*14Y}u>w9^={& zl*tJzi{kV^0|Y+y?#N{dRIox6Dy(qAD@CbFSN3QoHez0f>i)sR`niT{4ekh|!d)+3 zVdhOVyr=9&X*FinBiAZY(TY)=lG2u@npQc=6+!tbP%*4HCDYA_ZRhp@@|ML6SBrvK z9aRUS4RNAOLBz1c_=PCRJt^C1&|_5O@MGa3j7Bdf%ua4r0M3-jl_6(Gl&t{4T6!(8 zm%dV186d$|J!YTMeJW9z%2lE27Jw$w)DQ|}WKi@2e}&LWR$9#=u#(|J4CEyRmD68- zXu_C=fReKT%j2M9;Z7x<+X-FO#nnm)G z+(FH3LO>H#C>42t1{7Il4YTDj6(fP|yiI_7!-9v+2XBXtVm4PY1EonkAly*+iAS>O zxl!?(*G`=Dmr{5fnT}F=h4Bu7tTAfRn=yI|96I*!`U=YX8`N#-gqj#jv%>da$$NFwax8bRA{LLU$Y(9solJ2hWf#uQ+J$^0lXN8j|~yO68VjiLZxLbWr1YC!?# zweFtn8Q5eCrUQ>Gm)GfDR37CeRDE;06)}47(p(6A)Ir#^!p+!u`9uc!g%B&EEDr|G zBg>WarP$vbFV^Vho^oEAdUUT!4e6UI0IBvV?(qYMN}vwV^6iYhWkpc?yY_aVAiYZe zi?Um80oRFw@qIK7ujxzH3K4_XH(%xFl3TFw&g;b{d*+<-pgp_!iK`naSC((gZX<|s zD`&ncX8(KFXS?hgd#}KNOJ5G<%77w&_tj@-fD*X!u6Lju6MosLXOCU6o!ZT?(|Kstx{SYT<)!QL-wI2u#qenL>zL2B#kag};7gZM%D+RcH*Rw$+`jhG zm8&Vka-zT4h?On!(X8)a-%(ei>yhs()q05_UVD=72x$9QtQ^&W7vZ)R;d&VS9_kV; z{9A1cKu~E`M>#_-Dh`iS5jXHeu|+Y~6eu{6FlgRMQu9uv5i)feH;dC`AmIS76+Rbx zY_Rw}P~_WwBSH@ZBm{JQP?~c_*pSQl%4WSr3J>o6GYfG!@6d&Gs(~I_gkK+QyC%EKEC zlgeM};hJJ4d)|qi14b?%<-8^$+(3khpfYVj=E+Txz$GmL#LvAeWop2WOGQARA1c!( z!GfsSKV&@9SAG_DdFr6se$UOa{hH~M9MYJqFVi0HGX97y7b*G!Bs;K!?r+Y0JHbJM z5B7B)KZad#+_$sa%qY9s&7sCP%;BPxF&lI5=D<GEMW2b?&UreiVYX;_(SE|dd zRJQ}0cA}#HvW23Z7LHD_P;{zAqBATK{r6kZqSl3YLeXioaCEwbqSwr^Jkw#nF0Roy z(_Q0ci>>yA*X;L|-w7g{1Y|+38*Unh8=>GJQVoq!YLPOEiuHI}eg~024K8d515mV~ zea_#^-U2Xv5PG5LfhKMUh+!}z5JsVx2Tk&!K9g zQCQNKB4yOH9~R3fiQqjD=bpQ{ zjw#`STIq-2l{4Y7O>~>B#*NWc_M6nxrqdotTE1(XdU_aVkr58FHlP70h5Dl;>W9iu zUsQ@pPy!XBI4VLhREP>ppJCEdq;2N`k%`E@yA`7FlNJ5ygDofr0JpmYg`PKTboc?ow<{@?)&&xyAWl& zpbqPrq78afqJ3*lU=J2XNe+{?c;ao>qZOnJDY3pSZ2uK9d@FfkVFIAc5VY{qgb?9` zEWSHmYw2W{Cj}dV=0rY~A|Di+Uq3`Gs1nl26u?4~Oc#U%`kbcTW^xPQMVX_<`~;5U zzH4R>=1O9Ei%wNvX%ua-7)nyHyjV!E-B4$}WPK3)gs4s})btYk+04MG2jn{?+G_^Bs z>M1oWT}LE`*tN+A15F|@)XJLPT=|InZARk3DYv5m$NM(PVjj3N^8+W1O9-_vL=L6y zKV89gN2^yG(j$m}eKjE*{#&tyMUG>MUcW3D3a5ze>Um@HuZP-@iWb-a6fHrKcS>G} zE`S+<-e2dE;%(%oS8Njh`!IhCn1$5(&ZfSTv;@?771S6QNV;qxNR1Rr zwAoiXv)%Mt)xpr%8K9TC2I`%9M_<12HFgd4(sOBV2`3$`8e)VV7)BL>p&?CK#e9u=iP}UqU z9EQQL8bfQ!{hdQa?OE8bX@cpx8Ul;Ui536a1{67LL9@jY#_q)0`ET-ii4cU~r3*lC zkHA%)C1}~B=?c@JPD@1_Y(UXw1hePI0v%_d1)8C`gC_1*ni#H33##@BCeCRM&&enT zNItWPXXA)T6$bhFjmfI*8KxtT=D7Dr3L3K%oozD%>r;?NUh(2Mk<=g>nxP4rI%whk zi7h2WPwkcuHk1}j$z?V)USkvuBt4FihIvjFEm z2KeG$>>WL-ti&t_RXhk)!#`Q1nhDV(EjCgn9&N9_k#YVa*XiY??0)>FKDlVRT`N5otny2*Vy( zd#OMYg??Bu9-OrS14IANzsL?ZN5lSp7XCGA57SEEExd$()L%ivPHLiB;73dQq*J*W znBC=fCp8iyP+Puo(nwYX{Ichy1{wzZ@{*I9c^fMXh*00qupe$m{57QF8y^Sb7a0`j zYyA8xbUQfzx`D~T)JQ$gx5cj>HN7MK3hnTj`JVh^ZaGHVvam45G19}T`Q%vU$|cA6 zIU+4x7|e8~^5Z=~55dbMk*{8>lnJ}yDmw;fqx%Xow)G3OG}DQULB^RS72T?YOf5eN z{+tB7!V-~?QPR*ev2t+xmEQqWQ?9vGWv2rp@l-Y-Rci~v_GN@l)Yt(Ac#uE^18i_1 zfY<<|X`q4@2AE;{(gq&w?&XvBk!W9X5maRK^;xr3C=wP5#oj}i zNGNp%%3T1ZQovQhy!G%w5`1)x>{SN~s>yZ@WQRt!+jX+jCbAB@5^wCrY`2B@X(j<$ z$X2ann>MmXJ4|y>bnI_NU^@k4cgQ|HWEFO2n>=EhWwITz*gB8ddjHVNu?KC9J!vcK zMcZI++7kQlR>|dU_aASEXUuZ!k6~l~%w8wC%89wE6>`-p;%fGatKDm^ZW0=I6*_$a zl@6#-1(j-{N*z?IhdNDAuNfM&K%-V@(gv+Mp-mUG>wykmp-Ue~4M4X+=rsZ|G|mvsGD4e-(LNL8W{OUkp=;*I%K|;K#C2Jr ze;n{|oG>CT_+8vFIv$u97w^Txhao6Rf*;$BpWBO-?ZcV^u`vO56olRFM_IurPl&@E zz_CJ5Q6_3L^OJIz-zI1NTIe9qOc57oudCh$8g8t~W}0uQ)i&C0uft9{@2cA#dhRW` z1%uSoy_J@3)iPkg4daZo7Uiakpq9UK?iz$}(Z@h8@*VwcJYInWIQ5+RggWE{vc+B3xB$bbk*q^(zU0PChI-^xDQcC*Pm`E-DtAGdctW`-J`d$H#kr>sEMI(Fw_?l4b+bSR>QK z<}J3+Kdb%u-e1|uk0bi8{NQPg{$w3p^w0-3IxXc7{wNReA$_8>%+%j^{yx6-pK@C3 zQ3E<+Kt~R!KqI;V8LM33Cbwvn8h_qL2;F?}L;OU6$V$}mrXb#_?!aU&;ZiQ+au!{O zb$mn&o0GBh=+EC(c#gf5$`aRbPB1al_6Ywh`2+DAc)Vn z$Lzda17ejWm`1$1HPZZu!6%n;8kr#>lRz;>AX?dtq~X=M!Sf{wmuyO@XN^XZ6lseI z#6XTiG2m7Ipm`AiCzE1oIglkso`OXNLR>yqrZGgFfkVOe~ZVv>ZQ40`;0DIY1-0%5lqPlRu_q8(>F1c?Dt7=M0YFf!s?{^eDawwxg zr>Css5ONeE2>cYLXp+#;Muf)yWuq^XYbAbkx00uKe-SF}MRy|?G+p0!s^M7>5tEWj zWI;e46*TGPEE+h(XXlVu@^tV1?S3D+7Ov8T^mQj{n<9facm#y37*IeJExI{H-8qB; zg$Rk*h%xO4%9-qVrR)gq4y9G4AL!Y`JPuGI2>alEE45|%_gBfo^=HY$pY7>hbka>P z77Q5_QA1lGr0Ks2Q`iPk`a3IFxl=LaR!07*j@JSU$LH6*WW{qa7JzK5;)^b|R(&G- zzv|N&Zi2JI3$OeCP;U~r@5f_!eQK`v#+G@5z-eEfkyoZ*pNB_Y>=N1BYcp6Ffn|L# z$|ez*-Fu@>OJIEO&&1;d>V0>nURnafduQKxfk3V=&&-RH;m-R@e6Qv;`@Uq|mowopvbLGaJkFufmKtW(i-X3_n% z$OU&8K#zg`Hf00@QqD0dw)u01^93=I!3Y2*ETo zWU~%|JyI5&Gt)e;a~&^sD-Xfyy7_ozC=I)Ec-nrz-*j&Oyzy?)LHa%@hit<_JJ{5>N(2um$4guY?%Rb@B@6jqTtX4i<`F}P{u)fYQ7v(2N!6hU(M5B{Ilpzj)z$D z*5h19(xIi)QnRC-VSDkZNio#h$kKYaR6s?4Y^o{wLbIGgG8^RaIozl6qAndh67v0r zzX+vN{)Ob|$(?n$Y`*EfY0APo^jn9^^n3VQhfBm={;k2q^?iVKE>D{AR-tzhi(Rt% zN$SpB^jmjP8g?J@--&oYF%#0Iw-;Mf_^K)&_r3MjymkFqVMUq(vozh3Y`p`Om=;1k z5XmU>BI?XcMs&jOd&|&AQsB)oHl|PHBs=J;Sw!rZYwU-TOL*0A4-m${hMf5eaqn6WJTU{AB z)L2u^z4s5V1GeU582IsVDC*v^Juw&Tq-W7ume;(nm z8QDa}C<@Xt!Zx#5m(AFY-MuTyP?N2&(S9dwRaQ`Nf(8^YA%ql0_()NvL6>uu+z6h; zGv)n0B57ok&qJzdpx2No^EMnfap_HnY5^jMb7s76(aI#dJOzuDt6ZaQ!_K;BrPoAv zd$4i->p2!$YNd5H+hOlQi!Z&xs`0$H(PmrZbL}Ci1LO%cTr=>drfd&KsLfc9-z`-p zt?jc;9GPbu#So4R5ffXYUQ2~l7wdyo#Le;EIyG~t3j3V&_5|hQ|tmVFM zw@-f$0*aw1DnLziAO3XxbpQRvTwtDpHU=n*wsjNm^c@{=g>8;Qt200GUfqlvc2N@i zT3>n@H8#SjOT)Dcmdx6aUCz~8n3yL5z4CCB>F?F@5l_J?p1#)7dP<}qa;^v zfKPQxJ#_p(@EbpJjGy_%KV_{H3Z2?=JOR#0Q%lS*4IR!nGrV`Wnv&`Eqs&vQzV3c` z^Y#Yi??fiQP5E~)9Vm&u=3tQR7ZS3S8ySEbvS!Tz& zk3H`nyux0NOSTUMH_BSTrp9 z`9Fz#VrOAt(ykJ%V=pG#(v|~?&*ggtH_X#|3RLpPMo$84i%k2u`HRzYDo$l6IqiA@ zxfR>;ORH7AD37a|wVi7-Q(vMt zn1D%`f@#0*z==0lAXxDFZM;dRxYGoM!UFYCHi7G_HiLF-c$mm zxu)D}{W4{t={027j0%;idcW@ukL);LP@rH6r)(ubi2xyLxPR&KlwEcQBB4BDkPX?A z9og#)-N7e4d7M67wF$*x4_G}0w!%fx>r_)i?OIew9O9E8lOrzoA3x^f+tu$$4zx9x zHaLGi{jes(aWJ;{*K$kZ%KX-R=3K1EQK(38af48{gmUO!1!dubv`M1zYg}r&N_{ROyWM@7I)nbuQCF=afUkybkCCX7x%LIE}2#TQ{#s(kgD{iuKKY8X>3@Spj8uQtDhE$#K$ zl?7Uz?w;QFas4L?GU7FoSLg>qPxuqLL?NZ6e5n8`l8T}VsA1G_YBW_x&BvGGEAY+u z7W@+54Zc2*14WQ%n9!w6Zo;`2DS#;NPz1YimtFzG=aW)no?T|+iO{FV6=_kPgP;7d~AO1Qt z9vTvX#v6)tVBPpQZ}R=AC4%ZpuaHqt(J`>FNy(W-ff7{^3xS#>P#hIP1yZ}>$_ z;3GLwL|4owpAyPZp2pIVvF^!IR;L>(xJ%>SA7@9ezGQc8QpCJUy}3co0d_HunGFO$m@Kj|5-RZ!)u zXg*^rRR%orlq9M6X0(01An4j{VNl_pcmDuey?tK4U*6xGvEp_J(Ez^Rg#e58S4sLY zHPJFmhGq%?sIQ~v_Pk5~93aX1cd&U`Ap%=?ayrXP2gnXA zg(c2EU6Ga~-7IhlFZ38J=>@#H3_brZKgg`tDCeety98jMiw8H_U}NOSl7^{fn&u>? z5-PK@tEyg(m=U$y(!!R^CGUt&E#i-R%vEmd-kj#5&bRqKKj%cw$z77mio}URRHBh2 zsgqIZgb_tDsU_eL0pb#Fz{4a{7(UMjGl(B#)U>9)Y zp0s5srPMMf8}bP;#Dgb`913ZroeoBr1BF1r#skm?OQmWN|8DnbenKa2S_zu76l2AF z3MnQcO)cuvRNe|!yfT!p5|yb+k3`eFWa*MvwpvpYkKYs(W~ww#2c2hW?*M@jNDP)p zrrw{^JhQh2<5`v!+gcM%HOuyPF~o3F%rM^qi)>4hO&+DZPS2X79On|_DW{UB zQKim?JATq+%f!c|(dqW~#fF<&L;hf1m&oX{`iM<8ul6q`T7v0nD${tHO^XRmNRlRP z9bc!^7k2*c8@wNRW8R7vb$9}q*SyCDqCssK!pYH4wAeGP)oXV<&5@KTJ$JWgp;&XN zf3#A;db2jZU_S;)9vMcy6|5AbkRP^8wp=y7s!ONxQdx($QG8GBgRXR~+q=Iyv-5F& zmv77AoXG{bS0L*mb~`3T8l;eu@S;g6O#l=KT*PG*2pB+(DQsSma+II~8(S=R2WU8Ew$$WfTM)`2x3ozyLIh6~%m!T7q)rrC{?) z-(NX5;X7@+e!|cBTRyM3!Hegf`cT(=(zaJ{0bwwV66KdI3{_zu%mChzbP$6a%&-b+ z$U~#S8jNcK(^-T4(iAgoX`NjdX4IwI23l%@T3eDih2-#)Kh15*sGyp4T*u!Ma>9^X zzEPshUBm^w`fyy?GI3PK)VLzH#c8bKEm9H0%@uj1|4F(bQIRfHX(r7Bd&j71UM;DQ z?%bY3XdvUwdh1s8`C^4Py{fi+t93W_#=fVq%QW?P*$qH7%uhq4QFbO8+yw9_r0cR*R*Ns z00skgn6jA%zRBdQU_NW_SAgg*iUu+{V( zzQ0i3^W%)OaWuBZ##k9Mqq+V94b(rWoBVI6*{FU&O-f9NjgAV!1!w%@_{v^#P23`` zk!#@QakVO?!QK1z|9%U`=6kcv(FR$x01VVOw306r+-={A1KzUKPeGRsofVjc>w8BR z(>LGJS6N%FyL{Pn-*;^C@^r(Ii-uV`PE3DYqW?aMH~x1#0hu~J&2+8Eep*W%^|d93 zQAeJ73fh>XDAIpQ(pn$Yw)|O&YH$9ZzS9Yv$?N<*1WLN*H+M>}y$j?cqx zydMtXSf21Er^n^wagkQiWUTxroIfuc+|0*@yIew4>7%aSY8tE)U6Yoz$p}`<q>i^x+MQ_BY=;}vDz^tW z0??y!AKWK^XB8IdL))}b@k94dqtf`cbP?sGN9oGL_LzI&V_A2cIB{k% zI{_vc;cKEEPfgaGWeV0kp;}KT<1h8eU?n#72om%iWyH)y=Im5*;NT`FPHwsHzFIEg z+?J@*kZzOyn6C990h@M6+Vh2+V<&W+IxoFHasW>-MfZs=Kp&tFeTR+#g9?nen1KX@ z9ccK^Dhas6(d9@<6=~P7-O4TaktL^=JXQYGqK5jdzK*m&BRUr5jyoFZ#sE=gnOP;HP zq8QZ;z14JN0P4{)o~^BCt&vU;BCt$!ZDP#aCBE))P4zP8LISE1MusKIqJrRGZFLDu z$sL;T6z^0Bd?h-eIkAX$OkJSCfhNrxv@(JtMoqY9(vhuO@(osX+zK>H{H1hsW%ohp zkG~HFj2tk9V@eq(9!?;EKm#ur7ea(+5_W+%371e^c2%HjuA{l(hEOt5+%S|X`k8gb ztjl7>iMzKuUhQ$C3BgOUz1xfyE3$NAYE^bjL$Qg zxen311=W@;tF&!Ly;okT@j7p$b|0?87x6ylR-b>V%fpxU6}KOIS4lldFKO3|)28nc z)SddY&kS%?p2!oFnx8qa7dWvT7W1Yfv)}6Q0QGL>Kn%cy1?n{$cMu>CqAu`xCD}aq zaV{m`^;LmnqkJ~xHg!R?az`ei;*A-;3C8l*_$5@L3>cZom)BoQ5cjg|=lQ14aq_!) z)zj1lsz(wRjjOZybsnj&x24&$FWr$ZGGCuo&Md&dNNysmhzW@VX=HK~P$)4~%a*MH z_8bjvR}O!K2M;3xpl!h-8C9N&?YSxqUTM?jy%8fm>~S65#+*4{_dI9*5sMamvX;J* zPtO)Tv*pNko_D@_;iWI$*2e)+KIe;=_?i>>RzJq*Uzr_aU@fVC=VjWZGlpUe8M(li zCrLqqY3xKD$c~-FG1LMs$sK!X$plV`QUuj%IBPS)#iSX5X785VHDysZMHfq1It#Iy z9fW%BIhI%6fgRpGh#o%r$iPYdxcDsrMnWG$Fkxnl4I5Lu5txz?BhJi)NOcshM_y7W zP?Af9iUR6%6*6^C1uNF7*|E2RBaB*c5_Lc?Y>N&@w&&0a8T z*!Y-p5U$M=ACM0i7%E{`__|6(I1QQvwA~?Gy4>gX61|vo;#tNL3J#E^Jk~~Q-TNQE z#Da@6?HQq%kN>#udQ02;pxL**26{i3{hs-10Tnukn;5aEco1|V5@FOdqNGX_BU27Y zjV;)=x+u*Rx3zj?T93ahRo`C+{nW_*83;%aMg(IyEEdN(hSvsEPCJYjOY& z9IvabA$%49<#Uin;M9aRlK$)KCJyq1Rm0VhA+6fcfNM_6*;DONxSpN=fTM{I?AX=9 zUq61+$Uh%`jc>An49K3}>@kxcI?UhOaU!dtj@a${RgRejS)#ZA!|D zJzua2i9}nOvP%5pE1sTk90%74LTQriu}A5e;B(Ml2GkDbe-K;-Po6Gd2&jwa+a_|F zx^lh)qKD@&IMxX(YC>cs*lMp~CpnvN2HRZSY1r}S4=w%&A-*tRP=5Uj^skmN9M9UfltiV<1tb_spk`F>_uL75U+e>>64!(<2RjqfzWKNNaXB$6u?k_0=NVh15A7a zFgz9j0KkFia{K#^MR(b2nMgwLe|{Hei%Ml$k|rU@Pl`;kUy1v`fZ;S$Q7@V^W%ru5H->UY*YP3<1DpcYCzcB z78{VqErGbqfz}l5Q#e4vGG+0MR=gWaDGwEvs@S1?iI2m@CJkB^5p)hL8v|^QO*Bd|dX6??92B>4fjH@5DBNE>4frA4L?FkL&Be4R& zoh3LyjOg~mmpjmzrJh?@f-iq7HEda$;sE6^H-2uN<4U&Vbi8~-K&th4z|^?IhL%;b zCt~QlUa*`ycB4VF38FSGpY0Z;CP!nJdJ0>lAfj@b%@W9i{Zassv2dJ|U7?Li(R_L$ z15`_;g(YTuIHyTEh>i%|AFw@zTHDOoHPk2Sn49{+1sYLbyy@@zqPGQnpK_JOR1g8s zMUH33ts*?9a3>U3i8Dv{7cCb3-Q8)3!+941$WU7LdA|Jp=sA9C@#4Bg(I#%ogZZAb ze`5}a8)z)Ip6j@<-A-p%`RcZ{vBW*LP$LXprl+$F>mON*#stlmIs>Xq@p>b#8m4m6 z{hZSWeS2jp>T{*UnYJJ@6YYy;+BJJNBh^{OhNWkbQl5F@++=GmY;flsM*VpPFUi_i z!2|>q3WxxtaHCLOWmn(kV-chEaJ7u$mU^eH@VPA~NBu)DX(g)UNW>$R$~q z`}Ld%Hf|X-eQ@Nb795*Fp>4V<#;PmlQQbq8Z#VX+DKH|#>%3s>Y3>s33m~4w78tQ8 zvuxiDL-qG-IVD=*v%A0TrPqhF9sE$J+^{e&`8f`n#%X{a`5LK(OQ&bX9SrEy{pE&5 z#SHX^AT@e`X zMGZcoPH_+C8fj^35(FDdDJ3yavLB2{t_XZ1H z=scD04PqS39&p15n7b-`F6u3OhwU**}_YPV#kuw7$j`6MD8tt^)q6YqdVbfoJn~Mt!o3m|vf&Sw*LNodT zgSX&7TW~9rXn3Jc`7?`vUyVjJ`_~Si1yFq%a>P{)Jn;b^n&g<@7@}}+%eU~Q+b+I| zFizJSDl}MMDe3lN9dG~M>1|L0ga!*)50|MaK*56?AR#$;=VDv227?m+(b3g~hBgWL z)nb$Eb*i3HzCn*P6}QNs4Xuhn?ElR8zKnctb6|fE^dmOeJ=9Mvxc;z)s+uqE~fK``!Ux zXji_2xpz{R$89iz5C|tn`@Sj!BOWZFcYG$L^pLF?>QaS^6Mq-lENtr#>Ye^n8M z^PApH`qTGpZLNzc*_B> z`J=c4MM5YZSH&1_x_XV$M9loWz)!605>jM+fi-jau}ih%PgF4x;v+E-8yIg?F@xHN zzxT@a0e%ix6)GZjTQPLn!9Ok;W;<=EsS@B1_&G80ZnN)}9s)Z(jq4MB;}mt1xAr4- zqscvF=q2z74M2V9(;{ldqRHahLt|LpU}iOTtPhj zAAQBlKr9?zSipSN^D0&S1yvc@FHPKQ}C)S7t#LJ1vh@HsRq70rQM+T z{VEAoks&=1crfq?={O%xLWgj446gq?uWR8~F|Mv(@|aJ9Gx%)J8pSwWhT(ZCobJn| zOfv5_l-XuB|7J1USTC1wKS+UBU%zX>wQDlek4%+bt-_N$n_tDl{bS{ER7z)lK=IHe z$kAF|6Y@2Bf6V3zcMjfFD$mhyp?(n}R`B6gDfEY8VpK;E+LKu$qIwCUkT} z=ae4EyFHWZ6aZ@>8npPHR5160SalsO&zN3^XmKuOpXI2fW*dIWPbb{}B;4opM82yl zzAeJjG~q#YYziyoF^XpO^SzK9(Xyvc(`j63o~d0o#`SuA+ilJ=1%PxW@1(Rw?f1n- z_20wy(3nzPsHU%$T1%a8CEaE$`)rP6vojH;IG6s-Yw6sz&;FOu|1n|D&!4MX!!Pl) z2-m9M1@BTCog5$Ev~6gmq~-j)3Bxok)3OMmWF`A*$+6t@v+TNKOzb%4>nq)L-DW6d z-SRCBC^ooWPj&B2eXe`q)$sZziuUge8Doxf-kQ*W(z+}e3n+@B*6TGP3N(hIw!7A@ zE2u%K(My0sT7>>9+BhyV5gULqT22F)Ac7N(3ci}X`U+OGf6@cVnJTx0aY3uM4F6p5KA^n6veFRAL+~N_1EsMPOZJZvbLGG zWnWITkz2;zy5DRlo!d0cNlr4?o4Q_$)|RQYFZ}XSmTBRX^HH&QU6pNAzFY2!li4!2 zMOo}pcaEzdDB;jKKDJm`i#a{y+GY_hj?z?GrsB59jt@sGI~vV<(h;C$EO=0vqO!bJ`gpvf~hyh-Bn0cT8Mpah0n|E%ZF_ zX_$q`j&4(5Ypusc$F(AqG z@T?%(0mR56m6jk~V7-ws;A(;C8?C`Fo*X8mQL4vi@1!(^TS^uyt^R4!GSswXCh*UX zXL^KII^Y4G@LizAr6NB$BIFvl|;(2>P zRshlfl_wtMvGQT83im7?xE|i{35>yEpFl&jCa_+>oWN=U^&Dyet9V%_^{7yuAaeD$LPhb9Nc z1pyKv^CCCK>?r*<=jCs>Eb{O^eV+n}zr%&6Z&&a%(1opl0#6sVjP zVZy2oy!{6Btocw_E19Iuuqjn080t|D75GYdX~X;u42J~{Y_~;Oaz@;w-tkmZF3p;G z1BUxF%NfKcmT0{hCN!tiL%whpy;Y=jU*^05btP3ll2%}Kwj2iB!JZK*YLMKLQhg&_ zhI(ydfXuUiISwBM7l8)xp=j6J!FwdHptA216X47Co4(r!;FS=v?f~^y;|Odw&u_>2 zkt@-;(@5`JD!ij=bZME5TyGon855c?_6Bvy1$J&%vOVIS@<<%q5}3hZ9U)!MKX@T^ zzesQ0zg&EWM-RJi{QY`=RPTNtGucw14qfRifI5-n_f%Hp3tZ;2y26uo32=R~Y~ko~ zusz;@4#973N2w$2%Om1MEemOsO_6!kiM?!4XlHn0Hjp6 z$eIW=C>CDLah7421wmuYMM0o?LEtZ4{^aHz0fNIIFw#nigqGI2w^}CpYCEgnd#A=e zBj-v{17%kU79ZXx+}u_003W~(p#n%M?K@ADLf%ol5g|{3ZLe2zH-}9CixMT(kK6+A zF-!F&;R(5h{)4uzb9_nevu2?XA`RA_*C0=LQpUC3%hK9Dg~UITSlwrg3RB-P9aF7c ztt+>B7!7rnmE+Jeos~3UsMnHuWl#42&)+Ha3=v;EgUbXb9e`UDCu(}~-@~MsN(5xS zY1P*6cFW~%G*=(KJCR|`;6Q?8V>xCMkipP9mrlo!L)lwR8?6?n&l^gIULH~6Xz-rq zsT1`EfKV-DlW9hK+_3D!ViyJsija-YkG(}6-}>q2+V;j$KZ=!QiR!^Tc%}!4cEcAIc$ZwUu%&+4x{CgBO^dMDk3&7L~FU zXPV7Q7A;g+@B(puVMCL!WA;gQtP!t|bnl%hbNS4P22yvC3t%qSGAM=q0f$m;m**E3 z^Iy910F+XXEFLgcq8{tsQuj`Dk3Q%|hp59wx9qUFori6Bu6b9|aNax)hhE~%yyH4$ z#w!?;Y>!auvMft>5rwD2{q!Q8dR>Pa07#%dZQSLZH~id+t=Q(*kyXcO>km%5g$>~;2^&+OG zBPdO9r1oOfD1>bG>jd=%^@+^RHG+@ifRP$?`kdhrykk2P(ul>IFenkR@^&DHfaCN! zhxBr}rG0=aOgtU#Ph*kA!VbUy(i05Vcz7(bt2Eb|+-8_&l8~eS&3{-i?4j)Ses?%< z@%!(8Lw>2(`|DP3n_sQ{tG9OlJNY{v*{jjVe~BWSaQcH@Z`3>Oy%6_xSZtfCa3)Sa z8eVL|trNbw|Dp?O=7V>>>S9L@mxISRyM%*ymH>2|%14C@jZ6IWenIU0J>OY8Po3op zkMfbbRa93d=YP<^VZ$A{m>idHDA;Sa@L5y30~Z*)F|c;@r^OfLZ$GH}r^E2OFTU9O z+^f&M{YBaP%sVY6q_Ha8u@sRtTkoAhMd= zW^Z5Tl(g;G&LCVQMOah2P&&B|FDjV%>fmfl118iiOamrEw|3|I9ct2aVp)qyp?~kR z9u;eFJ$juG1^<3${aPA)R$o`^w{AYG zH~7ZwXUti0qz8=Az-yWQIAp0o?V@g6)^aY=QYgansL#BXfkQ&Zth=J8)Y8z>Ji+>5 zxUc96BolDEn8&<`nP)jEfbRkTH9*bL6EkXq&(9w;pnTOEPkVTQHB+Skdl%ezwa_DJ zEy>c&h4!bS)&n5oui4sE?>$AByn z1yDxi)LB%t$9g%)5|;qv2pWnp!ZYH%Pp_}{`=?KTbNBSoN3Yhqrf9lmdwcyW1Bc8~-_ud2A>#%x19-`ZGMxKIAdjf|w^Jml=5gz-3+lB+NX#M3ui9D;Xo?2xgD zJW(I7@FHO#<$=2NZ)?8I^`8e179nKuqiR zlmgRnKX3}`y#USx><%Da<~#>IYfVSH9TPzO;rGA4u`1r&tWX||wSrnWP8J?z6B`rS zKI;n^TXBZ9>`&V`3SzNCA~6&ysDp40CrR*7DUU@^v>|bIsFf0`I$Dx`3<$ z73by&Ygj@7tMVub9xavf%7&z1M4`56fsf8e5;=Q9lv=ueB^u|tWhYfv*^A0Ka(8d%H0&rjmVS)OwM9%Ugb_-^2 zCAcX91E9gnnjOj5&Gevoc8ju03!tsx9Q=T25TxU<m0VDb9=N=3CX-9+v8pVV)j)2SaqNky33{$T(Wav!j>4Ptg5X}Q z5{pTM4nPASti0nOD_AwIE67|jf%RibLqvhRsp23Q*527^){{W4DT+Ck0Nn=ai&j5D zCelcvdwLVXHL2Fsta#9VJt8+_0Yz4c#L4r@o1X&Rqizf)=#O6hrHMX9k=_R?(RVMt9im*O5}g#kp=;+D(j&L|DF)5`>KsP zY-e0HYw9&0+s|7@30bF~y{-xKRo+yIes~ymlEc2#eNagcETQ!WK+vPsq7FTX4nrO| zS58Q4L^=?f3%C!|CAh{Bl}5~)O2H~Pi)>Pd8v0dn>Y8YlZ%2ka;GA!uqO7_EO_03l zat3H-a0FDPpbD*8?&H3r-F(ct6;mV&zu~0kNAhsTESyfVD2d|*&u%P9SyA?g$=nmZCwap}b~(|8}9q3IbKM^!*fvomS%d+pUmV zRwAP6bXoT!XIBg~;xZ1kR` zL6KvvMmDAl=TlJx^w%8a;_cuy+3;v!01&!I_Y{7F6HQ*LDT-aZeK_xh*;C4;{uAuW zuNd4!buw~vj~-Ltl$5tTofkHGX3SKUDJk;Fhq9riO-6G)Sr&__9Lg#M1BC+b3{NJL z>GUS-w}osEg}rIDIoX9!pwtdd+Pnm-Dorkd*dA1*3C#&j003}0I1Ob~W$u!WeZTUb zThB|E7@>w9r|)%*sBZLE7J<_J$*EEdJ`3RZU5e|eiCYla3(sI)0K6b9l5+AHau<@R zKVlbO&5o)H^XD6YXIZ`JaX!N8#8@WJcoUR9#@NBk&x~r?1~WTHIchbBO&vrPLh8%L zyFBlc3QaITs=-M_+Qp|sQU~+1afKYpZO~h#MBw1~TMn;{%@U5^ECrBW8K+^&y54CL zr9$lpFFoqBAe_sU@ucmNiHghB8C!2@7B7H0=fw$DslC=I9`;iX4?QwZjR zCM38J$4Ub#I}3||G~d@y3#tgH*$n86z_8``DG;G)0__->4%c|vz6KS<^a1hb!8Q>7 zX>d7SMBUAdZq7cKZR3QgcWIYyUXw?*F-{npnjwTY$RrH1y!9R)XJ9$xc3%v@#zb}WxLVCMij+c{@rlvf%AjD_^j=Ot{pezHT)nqX#ezZAVx3nnv>L zGA}nqDOE8z;ygaEr;2__5#hMY@g?2&PF@1T&KDG2{&P zn+G75ZydRB3M*~RJJLOem6catOaTA|*vl<7K$8SLvn{sP)x;q+SrMUDmfmd$QfhX8 zpWBlj9dRZTWI@&rSrI`hWtlukk?okuUYhDv;&jv1Ox(E|i3=GM_7aw(9QHL*g1f;f zgY?z;^^WyzvkYTpH@)aEMyVdHlF)r zaKP6}DU}kg_`)w_ub{@%rPkiV-aAhcI_IG%;%HLDxo{l@)YF%}J_GN)H$63Oo+x^b zMI6Y%z{7k!ZX)(;S_Hwoa%=4sy?7lU72UaE6>ri4nJK0J zMSX#o6W$|Jx_;$`EEq*M=)KuqkG}iuZ-0ZfDNFnqT=gyKpn^JxZ8=SXwifL%(1s}} zRGkX1n38l7A*Lrvx^OBH{1R z@pgs;6@pE?_h+6T!E8s20X$X<On3V>>D%Fl`nG9XBuf>1 zXk!Wn0&pOP5Sd0giHzaO!QQKL3#fsufCevXb}YqZb%SQ(mSvYp(7EN{2Sg!A7mmW5 zYnox&50A8$4a+zfq1G3xsK_-8V#{x(OLX>R!DaVk9aT|%P54n7j6<<`BqJLSymX!W z=5qv;0}bTtK^a;i@e%0-n;ZtcpL83#XjhvgM${(&$GjI(7p!_TzpR;wV`a&eq%rE3CeXZib_4m~=SDVZ)2ta!)p zp8HY~`6J}&KH~&E5(JAOX)mBqDlf{E0e)yRy!g6${dL)VtIoT@z%eHqr<$!!if7n0 zaGF)K1_U8z+D=la8li{w!>!yp65i^xN(S-ON~tCC@;R!hRNbhgmrUy=BFI#=rUj)d zT;U2=xS}Bh7T}7EY<}U{i_Gw2)CP@K4;?^{Z&X$D>J0d8Hvo*=9-i;u@5{?#FzBm3 zNSc%ln8h!SJ=6tpeRxP6FSbgd&Pc)RIBbNF`MJRd2EW*zM^zNvUs??*q)H0o@R+92 zUI7J^2l){4BNW>cr{dG!9-EBRKK@aqU?MmFgv_e5YAWSq=iue(ETD3P7aud^B)66f zActJdA%{FYpL{Xtte;gwV2;6QL}1}in7HSR{vk`8B~TYSK)~=70D4vp;Rn3}_%6Vq zfLDN|2VMd2y7-);!`%qEL=rjd?Cy-q>%+dI_K=o1@lVNhova5{Sm z5T>AZ0dlN4t>#WU6nj2ZkfIlBfpceKkt}*UrM6;H1Ka0>vH8&XmEZb8``Otks=0h* zhCg5!wpX`nzBYf;dQHNOV!j7GWGa6%;~h~N{)ITJdE3S&HJC4^)$9c3;uE8}=)Dv-tZQ8> zF@q#BT7YcRb$x$4LBhIZxv-A^FO9A8=Fm#XpVqOAKHpcTD!~bJdi*q$ zTO8@*^rZloGk^wc*ZQ?h&2s%2e$Tw~ztmV2& zoMzRm+aeUB-6q(nLk`f?>&#{oj>crUysZhs@1^Y#KpFLDQHA`fDAFMqILY&=1Z%L9 z1qm2>STy#^c*2cwg;)<<J2Q;M~X^_+}|gcHyMtYh;Z zW(t5_srX1u?npdM-iVjCw`h~kif{-9|FFo1kVs9;>R96Bqi5RKN6?GV zpKWtv=y`Cmod67^+%Xz$&ySgk5badS01RXOEd6~+4uhPvSf|sg89wPoo~=9GZUE7W zmQ{5L9jIxyJ(!@)yG}hI-NL^nKocLj5Y*PWMJhPbk-9FWqMS79qpUYZ`*AWEb7Q*r6iiv3T=dkf$@23i+#K7b zy~kkitJN--UDi5vY8;huwR`alZqAh~H|kk5pF@)zK?KulbVAR3-#9Ko)>QkD=xAv^ zpJf82{)Aa(bZI#aE>h{D2*WmV;8BXbBHtOTe$@?S?eg~AadIxy?khXKy5{Bun7aRW zc{2vXwEhe(BZyeaMYCUNZMU`Vh(6rJ?J_errzR^Y->yM=-$=FF?fAGfUd(GF?jY-; z(LNWl+?X;?@lwoyVHD34{R8fd>H(Eh`4l!s&C_Yt&9>e&x-o$J$*6u>aUjM*`A}xl z=3DYFRUyAz$x;Y#k;FWiSFdC)hg*4h8^@PKvw33Yl`nM>l5oG%4Mg<32(*b~D)fC* zbls3>vraIDHWiEPy^zEQs=^c~^;l6Y1J@WfUK>hZ3=!&8FGJT3aY;8&kyG7b6Ui{f zWh{7w))FOBUNbUdB~V*1wKj)V)1dhaV<+CffG-{W3Q%qtCqs$j#;Nun1}x$x*GhT1 z>I+uXF5@xhMm?HCE0rR`4SkPZ+#?m^Sk}pyMRB-WqNk?z@zYC#C-v%nA z$qksc?Xne(dzKYNSA%xCGk|`ujJjB^x67I$`5`6H#bG(5NJLr(>q0Qnxsj5l`Kg6= zqN28J;jv@Kni6<}6b`?DDR0hM1Ek3bz}<{_LT&M9sLGYnYcS5ly7$k2T2bmEfd*%4griyCgio z&(>AErfR%-43l8VjL~issXy4oDWmGK2@QXCvR&RjmrHs*x5;&t-{Et_a!#8~`6tu~ zz`%u-O9T)geWR_2-<#l>pGRhp5uWKp%6Cu{l-5#jM z;rQjXnQC=Zr~Dz6pIAZf5U+GXavSGwrFEV00Q(Qo%MfG8QeXaB9C;E%MMFV)9)CrT(8%&wm(@f;y8eY@e^Q`8Dm?=V!fv8X7iKjA+QlQ z?4N+iL>n02U*I%>u;fW&h+%mZLib!bv4x$pw%JI6@}UG)H_VW{+}~VsxHv%bE7y`P z1Ug#lKo5LfSm!~)mm$Bt(}C&4R&Ur=FPoyed2P>KTxM$5`GL?Uyp)vLcqW<+e5p#O z!VPJAbd1F#O;1{vvG53ZAf;jjyp^!%R_b=!U77hbh;Ru?j1}g-AK>s-h;X9zj!A>N zL?f4)X4yPSLg$ekMRWdrlRR`-ReuFhWt<+!0^ShG?NoOC;yCf?@>p;1nS*#rc%} zh%M`PueL4dlTW=$(I&#>LAi{_mw9{?EjS$AOe64Q(tS5bb62{yhhYfLw14^fC6TUR zjAu`b1S&E{_)Ug-c`o;pf{|hv!scKkxHMg47obI7XM`XXE)g3)8|v!wfEk$O31nR* z0{(!fcy0|5H0!Qm@THc+BL$TK()_}%oHS3GFLNQ_SjpoK%BDxiM6WgRn&L=_HyBpA zITbK4#5-s^k8?HW++-8R9LuX1H6|EDQwJYVC+j4C`SI~@IorEgkQoQmXqq*={W)?0 z-rEZ_w<^BoQy8Jx=z@R5^|`5xZ;}MHeVAp<)hNTQUdal%_I1nHm)>PN2oWYP^7PZ* zih^ezEcP1hFjG`GBXRVTQtx~)BsbEuTFM>Q4N2YiK(V8s^nNYbnjq{Zj75Ck1{zTQ zgOe8Kk?q$Q`N@Zr%!^+VME{gJ{B&hL)WXRc!Ua_$!3Vn!+;p9<$lFvUy7T5~p{uaZ z@LCGv*w-J@{v={tRd<`4N8(YO!D@1V1=l5pPwsV*xd6hCGmAEkMJe?oP|l+Wxj!>SO&jd(D#`C z0KUO>jsqvxi|DPXkGdU+lw<#Vw4%G%1s}1@CwpoeQ7Y^LeDuumIGT((!;+u46e=XB zeYBJ06s02=LPacE@^#gagda_-94*EJiH!u7Fl7D5D-?v&HSR=>}g4Rto zSsKfO>tmQ>@zQl_kU&DJ%fpQ0{pCz)f`Qm97p-qbBPd~KBFY^()l3@$%7?uSo>D2tg`|V^9akd0m5^!JQ&5i z=8+wNJ`arW1(74aRfWvv6`w3sYWt3j(| zE80licIs?P@L@0LZw;-lm8HxI+|nM5UsRCGWRj!`8_)P9GBlnf@4k7k6=L8G^9T z7SS2D&|o|-MR|-^3%%$*cV}$JAr8f<>BHLPEy8qz5&`}$(3%ta?_K0!#O>-NKVoxw zG6xv57cE6LtW;^u;3jl~oLoMls6Y{K3g`j8*2c|)ZsWzl`3!7f@aB67uj^bc^;bWuM$Wz$OcjiQ&3P7oW%x)n zC+@Udy+%IiHB2rgr|oV&O?s4y$yHH0AsdMA;cVUB_;k7Tu{|tUyXPQ)e~%8lACUre z#z_oX4+xxQBPW{K3*{Bi_BjP*$PKcwyia6@e~L1eK3&PHhDjXD=!vDF>TiX2-fj>km`z%r$F zv74ob<6s|&y{1Y9T=K9ouZgBhcQx1^M`#^!uIhFTplh?ubP{B^?dy0YSf%;x6G50E z+U`S|Y@)n9o_L!pgprZ?f#^p&XCqrjUA;*m?)Tn3Qgyng&M3d44~c9#0x&Ix#F;5_ zLqx)PwqgLETg%H!)ID(!UYb=mFkPZ4c6m4>kQaa&RYB{Bs4NhJKHMS2UO!a-?PFjH z*LHX4RTJ%u`${_!O(h|s%C1WABrrA43@I4~!c?doiS#T>IyOZt8{2u%kR}z&lTl#i z>!g{13`rc_(R?pS(#K)^d^)Ysr$dN`^Bf1L+UvTT^W6^hdZeEppWaSHd_JJ<{SrU< zimKypyI!gp=1*k0@Y=kXsuZa@jwHg};%H^sU(bAhyLYV}(-L5XBKK?TBlgY|A!zD6 zXmoFwqHAYOPN9~MnX8srbHFC6<+5^cy8G>gg>=2+pUQhz$LuUgv$xZZWV+suuWr<} z`gnH$7iKvDKvm#h<)Xw|eNqOl;+l>g=7x&mU|EP>w>5WcaMLG3P;p&A<{6s}Euj57 z2I>IwO4rq%_Dq&2envOzPbzf*7<^c)j;X9@{oQ(gDAz<_^P`ffk2i39Sc7yxz5~B2 z^fgJ5K#0jjvXuizH5;0X9(V-ZqM(P)sVQb^uq{vs(4}b+w3zWQk2r8Tc=VLpgqZ+` zFP!8@JtW%O1ZJtD@F4H%kvM*z)2o7ZJyp&)O3Fz%i=#^O0vyX`PC_8m&yq7x)><3< zBeupYyIq?qM4X95VvXDq^rUx6YgWOvBliSNUN1!Sm|Lyw8p^W)HsH!MZH#X5H4mw? z|KsCa0F=wYoWP;*Xmb%sQXb>B9Ng6(HSb9 zfb5jrjLXnGO$LB1qBhuT5$QB~rZ)2uKZITdEJ3yOF5EJ70ylL9Ec_grnUO|mDV3jlvofL=_8M#sl_B=H&W3=Ky9e7>%(h1R(5KP8V zk{l-yasw>LYxkA5cgToOzPKjG?X|e?hdT5QPn{B+y$2UemhB}(b3D6#K50LRUCh&P zn4}^37Utl6RW?^@T&LlTh-_$#kr-sM-l#>#wrUqVbKNh0rDQMQC}5@#wroALTkw2f z^x`hRp=k6EOVxXDl}QGbBTRbqhS3HR6a+-OSvi?DTiELiCoBLu5zcq}ZEs8Or-*!xfSvH@_=tM< zpF!Qt=muMo0)(19G&L_*v7j~)&LN8<2q#;x+(;y$0IxiKRxE-J;B9r(!2Uo$Z6LvUddgE7J2 zRrAUsy%t5+yriizR{Z;~2Sn|}MRNGX;sM!xRM(jW<9=4*#^Ar2i9p3Q#NV~ATdwZD z-LSTw|DMR@EnuU*-UtTZk(0T^#yWFwvOm6;s1#g^KFLoC3A?b~E0s^CqGr0-rdN8g z$CqgjKY~`8yrHnON3)d^E9h*Ap~%|bB-I0~-8A4u`6Jrk#-*{^Sq3j2N3pXl*D}|0 zqb0tTOu-=VT4$N=#~auDj_^o;{0NCWkcX); z*vVBk_QUYer{bBkb}&M~i3$s$!Wpo*$=TzX31+yzswOvlx!*e7dzic=xlJzazNrqF z|8jH{h;hXS;}j7xtN18?QzCWCt+#XBD>_=vb`{wEx7_2t`RYIPds6-t#)l;jP2gAs zjt^;x1XeXBCB!QhztB`t{5IO61RXRQ?M;b}MAOrx)Iz@Pn?*H2ibtE5^WV zHoiUBFQ;?4+?9FO_%Oz5s_c4iljrx1e<%M#M#2r%-@f$6j0Dq=@SAb{6Y*2EB!AU% zJ&PM#8HW)}dmcp$POu8}vmx;M+w4`TSrIEVebQ`Z$sQo#0;vEQ@#$N~QOI;n|B-kH zV-yAZqOP6%3JQnxS7q3u%$>l4J{o|9Ds7MF_`AtGGED9st zZoYeipD#EJa+&(fjT|q94&n&tzs7SXoO?Eu?e!eOM}P5EKKX)h6*%MB)~`rX4W$j+ zP9P8}-(zfZ0JKPS>|Q2t6@I1iRst0#^0uA=^OUa=EM}T2%)awnKi>c?F#iHJW8 zVa~rgn^kmsQYk*Pskpi+rqq+$)@2`k((M?S`qpEvsS7RExt6-68m$Z zw%T|yeur2}C)cK7QL5PCY;56#aH$sXFZfF=IdU2;;enM~H@|~)Dw?YCl$#wU=vPx+ z1sjWU!##87#^QKyS?dm2r5Zen6P{$n+$m;Ihoo!Z#sK83XC*L`QtC`R(h;X<5qruw zrl~k0&05aUnQC)PBk$5_kFjPmk5t1B2r?;VwsIp|&~H+%pQ&1|P!9>105IKLly3|K>C)0tQ5~f=3QbQE&eDY> ztnKZsbgR6e#i!232_(9Qq`$Ic%lmzoJkeZP6M-5ZQ`74$hG^t(HbUHsM-6Y&t{Wvx zHFKvcmLE)RG@6Qor9zSIioT_>YLQ*rG0|zEj-LM*9#QoK4_%RSdnI>S=*25^V$!;? zm9pdIEGc0EZt+deX87d49YYF%U@6{^2-p61*mv@TD}aU(B}jUQy?={*v%P~X<@q3+`^CO z;u@+8L9RAT$$h-4FW3eRS^MZ=*eSctjM)%&NLE90{ACGp3^OC@Gl3JZn z#-M2u9Y$-U$xM+Y>N+LT@gbi#zumX=8F(uXlxS+tmQFo#+aH2cY$&3`DWVm+fbJ$K z_Bx}sl?-$BJ#si|F=tnxY^X$V-|C>J2Aqq^p}>Q8t}q=ok{_m30rMDBMC<(N9OJ$+vnw4_SEiAL$xDX&< z8|*T^K<+?7g$SeKNGj=nh<1|KE|mLHUV?Ky9}R>f8oRZn09ZAQMzbcwc?S~Uib2Us zeVQgG%Y?vyVhJLSK!*p^6`i>g=us02zaI0uelHa#KKW;T7KA@2@O?|`r`+bbjy50LCf^+79x1%r6{J){W{Za{cZeZ_NxiuTWp5Ob4gS~ zE}QS&(P8BMj2~P&22}VKoe`@QIWe zP(V4UyA(~5|H#yf3s^|KBgb5t^4HE`8RQ%qI*>V+&puEJG2Oo-wTRXOlV2xAaQ4H8 z*XvK)@W~iPsW-XJ< zP)&Z&m9fM6PzEe)?f0b{>qJd?=NLzEsIbwg-{;mD1_xD-c^n9sPku(HGV3*(SSamH z2CSEqj2zEdiPZ2baD&yXA#RnXrmmx~pw1Q1P#z}Dl^sXjyI0ls8V2rmG9%J< zC7>PdY03OJrOX2*>$^v0$9BA|K~8|vlX-AiO|Qt$?-rIzs#hh!Dq?w>4GK+2Ik>i? zfVyGt(S~8!0EIV2+r{m*^f82N&3+K~-j9&le z#dLu-MBovyD0xFaOu7&iv}Y%pPcE~ z|M|9?rAWsw#oXrD;p_OD7k45ydHMRK`;|5n+q>xR;+SDSm29Kh%|iLM1k?EvS;eNj zrX8E`;ZdEJo;<-WrvHTBZVPA*746}A<+_g`95nuSqZDnV8SoNUW(E2PkwCjwBf6iq z%c^V;*=N?c+HnFBBR0U!_`dlW^t2uoAy?+g-fGeMSys+$|1bkaTfY?c!vTFh5DT9S`uM!4_1?<0YRo+`Gjg-qX$e$a@48 zrZeWMjb)Q0O_d6&{GC{4g^Ux!TQyWyEwDVZvOuTX2s;~Di zGeda8h^lL+Phxw$QTnqoL>!Y9B6YQ{1PRCxivLkS6}ln=8VeZw>1u#qWYzL9CQEpW zEAz^%X335GCtHRP+lN}xWsvTRnQK(#0}o+3k&C!@fTOn{w~m4e*V&dKcp;8RH)tu_ z1AGffHNi+0cHp-QfzrJwn6(6+McmRyj*F_9E}gvPrYC3;5-CSOQAwnzggQDIeEW)e z@YvWM4@zF1IFJ@3u5QhI2)Y9McmQ^KG^*;+cWnUe7bLM=0tt^(koF!owz>zmB{D4t zW-E&9DZ@#cQNz;y*gjm`8YrCM2Z%O#1ozT;+`L?{(*-OHGH740W}bEB8DxDl-8>2g z#$~Xy^vx}=WhJrnMdLQY>-IaBP}1h3tYf-{bu2B1tth$?9N)*`=o%*+?6E|}-hwWF z*DLL0gBx4tFCQ`v$`OK99X8BVbzOY)up$u?)>$-a(#exjNLr?|U_g^3Y>Z@I{6+K1 zlfHJVAStP;A#ZZnA|9$hjHs<#vUn7?pNkV>Twxhmlw5R5MF9h`#0t@({)E3Z)oO*+ zVH-_jYY}+-WbG1e>AXabbU+U_F*q+nB8u@mj|IKRK$9q@NL*_aX_rHVc#gql{c?V2 zzv4+nYI|}zO53<=5IvfrNNv0ugOCNAr!eE`j9;b8==52+Ofn52AJva$@X^BeuVT6@ zsi?L;G8c;{1-h=2A}fPl45FkzSlPAW)7&P;-j`*oxJ>JaG^sfw#2o^@gd1P(#2q%# zp}G;T7cc>Z`}~Mgb`*pbZiK?_#`Qw4W?LH)2LfyhClbpn1O?t2G|t4b2VP)+najN# z8aJ?lWod5n5jCXNQdk0KmPsO&c(+Rb!L1m29i7`~G96^D)k|o98aF?DswH<_;dD3> z$K-7Z5;x^ib5&h{xxphj^TmzGpsUi}1rVS}HyU(5&Ip;IhO~#pNalz0>7uM!t=P`I zxQkaaq}VMe&qci%MYnAlu4WyDHT(+BEZ3A8@`TIIHnjrO+mV<9{Gx6?brTjPk=#kX zpxE2x>?=w4Bz=@Feadcm-O0pb6i$cf! z!-*oh?H#r6+ou;b0K5BiT;h>eq?Nkp6c}i+!}>&2NDEG6xLLzk;LAZjhpkj1F9xT6 z;)Ljz3yRp6UG@)X=scbhlx|m~(&mbd$lnSiv~B%^-G+ET5-|iNHkeh4U85|Ku+|cu z-~{Ol+l|48R;#ffXd^#b%m@QB+(7x51)fMb;1VQY-OKYBZscHv8ZC1BO1Vo&1`sRs zz)*kmi))Pv$yFG zB;8WR@)PN-X|vM;8REDh=a>sJUOOFu#8EYbDZq4G^AgNi%Um#z%5~DPIgLGP^0bAf zVLgo^lA<;M*M5-?CXvvPBGT5uigp^m)Y9N@BWP`l^Rx^$@ntYK?ep}?i|T#aSp;ib z42m)BKGwBBq;>8rg8V!2nb2U&!Xs&y5_FT&aN-$ko*Q3u;~(akT#|b&pS+|Gxs)B} zzfzg;!ZSiPPKRo>Esy1kUZ=wW;c$d?eqjhklqoVZ3X_VOj}KE1A2D1>P-Jc zn@RjUY+n^D?3$h88N}~>nO^4{?HM^reC-;6rM-64{?ej)hrA#4%YrSvU}uWc02u>} zE$%P#fTey_0kx24+B`i1%r6t)fUQ17hi3%ANcYWSh{kFz?_=@WNs+GU*KzOPb?r}A z{I0jUWjdHQCbmrFdy|<3ByUXZ*Dq~8*}LilkD=ht_tXCS0sUO-ruew;|CRIl_=#)1 ze3S1TdzMPueu2%&%hw$tnahhC3MgoVtf^v(fH?av*G?$05oNXF}RD`pi}ul zlW^q^HW2psdJRC`uyEMbdWyFja7ei90m6q54TAL)ly5lrwzMKeuYEPozc||=S*n;{ zkqnqs0h$z(KZM7*Lh!Q)cE3;tr#JaKTLIZs=T!HmGd(F##d>nlUS;)MMjOvMFX`67F^P zpS=gnV3i7)nl)f5?;xrff%U(3e#%>M2d>hwS(+BiL%9fhsQ}epGy%n|NrAmvjLbf0;1av-9>UO!hD$D!h@;>wPm=z>UT$&s|WghV^wP2s7*# zFYhd85-mfOj2l{zlv~Z_dP!tAkc;xLb;_+V%(wqGM-_7;dYy}Lx77Xs$5>kSvH*rZ zw3+QahNG@pSJA%PGm3@C;f=@cMgFxtA=OjyYbZ&7JlO`(CD)iFqSS!(-1mBpQ#4o_ zIniQ`$5COGuvTHB1;~3QSXxYV*G+Uo7YdpR8-CdbE(m4k@^Ei)1_jLj)&qO*&n7l6 zaxMBR4WMl^l7moTr+K%*^WH>j3)B-U7!&cL#qk)5F*d&g)?Kj0YjH!=DViE3vF#;7 zU+r8DL6wVxdZ~Z61?ftVU7$WuOdEk#ENAQcn?!S5o8EQ>0!7n!SflWAXyd%jo>3ij zZXu<9**TV+oELJET1V2A*V~2*N49KDS$26S3DPt*n?Ux2=Ul}(T>mMjPEYJTUmge8 zvkYlsnhHK6i{T@)lFm~b&6JXcNnVG%vsaH9bYxsH-eildJeWEF%>{Yn>C!{~Yq#|b z?JC%?LC&nv57KmlAjC#7CP8b`FD*yD@$@z^Y{JiRT->_pxJhc9V2!DRNs0hDbwx#Q zaB;VZwWR7fi*^%198F=N%!vSm!KTw5wN9-KbfJ=m8*J!Cd_r{MGl~Et_nQSyq`eIH z&ja)X*HH2=5jQlOe_Bjdg*c|pogox7fsGC@B+)12GEsh+?}M7Y19OJ~E)SBQ{qim; z4~8_^TypK*%{oP;2M!i7o6zx|Szw;{<<6Pf5=}&Ef+&Ob6BG2Yp^8@C2We~T%zPDRPp*ww)59w1;s-0C7+AM3BT+(^N*u5m z9dSi!P6P8z>9QybPK3HIZ7RVGq>iXabk9@}15e}k)%U9XGg<7lxJMx>hxZ!H2Rib9 z9)M}LKi#*?SM9FtX$7ur9&`*tDweu$6JiQgv?D0^rSdEOb^$iY7PJsPRI^K(6A2e% z)$Fj42hWMJL*XR4Rk%QIv63Zk4F?c5U{DyXI8J*QI*19=__Sz0BtC0F!`c&SWOSV| z6VVDHmMT&mxzx=?giv7AQH_h19^6g&bn|DU!5Z?axcnr53oWdGR_NTv;?4dont~w; zMpRDOCPl@L3gQXPX75Dz<}DgPsM%}25TGum)iG*_-<=jXoDX|x31hv;rfCvy!e~5egT;kCZl19CyyJE`WX|v25(^C9Rk)-2J8rO%xD%R$S zXgo}-6IX?!Dr{(9(oUQ0iEUeL)(q;wxOGaZWy+b3SmsxyS=MR;6VdVYCyrzfPnNZW zmh7AYS1kpJ1F)0Ib~T*<5jD@izmZfs;;c}*j*i1=-Bnr8#U|N-o#W6M3J5G#{9%BP zm=7xrupuZFPhigzr)sgjGej;FC^s*?eeBKDrc7+f(>VR3Ik}v=@xY4`wcPQBZ!NFOldX(a?cST=shUR)U3mR-V!j&|uZ0ZnL8rmXT-V(By`ln-8e_=&dxST% zNXk$Uh1gvhb_|sRE|bPLH@tC3N7;1g=>cpxs(cQd!s(#_Ig(bkPr35S-X`kq9InZz zD6WEv*?ZA(3A~^UV+PJySfBIscETdn9`D(u{eSt&&X%x}Y#3i{9|fYa10_T2Vcu@| zYmZek|K4n;`+QJ$Z|tFW>1lo7OuBk3$g2=34OOVz3{x0fgR<_O{t-k1g=1pOJ41Z| zd7l(A3IlzKWGrQ963R+BGyt8umnveN7Oq!V-ju-eb_iAo&8)X=Ga=^Cv{!&7pLr2a zLhgnoU|NwSzYTp6q-oi1-hF2)-A_~?vJ5R_ckY>1rp`o7KL#RlXjAOC&QVg$BHFFE zQdp|eIE~ga;T&j=>`KngV6CX@vtOlDlyD`~J$Iwh)m4fdn%QPQcRw4Z`f9aEjHNb) zqy^bCb*2N~0dQQjsO8xKF!+5;0tKB>G!KLuEIeO<>wymT9$E4MA}n%h$D{d2q@8P1 z38jKS6&y~i4KH-L0WV1$G3@0na;vTNInbbOT=LoSYHl|p_++vmKHqcUXcvc2_7x8C z*~O5X3*k@drh8qLYM}8?FVZM$<6GPgKFAW*>p$q3LdcI8YqIBJ>T2pt58k^|wPckM zu8aPDMo30xaz)GxLt|zV@)+q40&u0a$VuUl1hSri+>T;`;0CUS;fZT+NaebMU`2y) zW$W|=C{MA4#&zVD6@kej=TL_yc;Oh_h~U;dk5AzUyqV zf4)=CrcW@%m-T{QUcwJ(=wShrL#bY{Mz}VH;;f5np`~q~VV)DkO+@H`EDZRZphi`S z1`5r}Ig$LXP`K8iifP;HV3;j1`~MJ?^4@17mp=JC*X5}_<7qIIV$`Ob_NZ=iDeJ}APgWTA9_sWW zB*O2i8`r3;qVWg6s+1pLIn`s-*xu?YP~oSkn|r*b`!_Udyc2obA8)>Y9U&cA6UqG|6A-o9dcGNM%Y;Xslyo-+fl>yyP2AF$!E zRgyxGB)a&~VM!K&ZWr?d0qE^S9gcbUbU*a&rFRkdvx{*cFvE7r zr^zeoJl=d8DplTmiiaeEsw_q(f`ztq-cm2}X^SZ`!#{Ty@4lEIwk-U0S*Q}7i|USs z)l|Q0FMU|{9$wLg_D0BGeH2|s@oS#|O8BSOq`L1OmHW_u=tYbBd~W7cz^r$MbF zqHx@m`|})#JY{DKb3`Q#8A((ZD_W@wX1=iLzAMXSEU9sd9!Z>f=~f1|Vnh{CrAl>( zZ@S*ECj6tjro1c#XK=fpW~e|fwr~)-nS^Iy2-?3!iFXD>i-JmI7Z(d`;*4i0zu;R2G~j z;rF)?p*#K@5Q6xczW+7+QdU#cT*&U9Fr6MhLg0$-8_o~~3i(J-_P-1c^vIK{l39l-(d_WO-)_NSQQnzSa|aooUEk$idFNtPL%l=^?!e+! zj*S4XgKtSQtsTViR`~+#QuxE?7D*a*1KLLCNIcLDwcjbZB4D+lIPJRT(Ld;&I@Rek zq6+|D4xNH38=fUCyxyT~1Gm6r_Yd?%F-vTxQIGgWHetdwk0L{h=!(^(k&&7wjJH4%yc@fiAwX84FZOz4SAVNfFp*~&=Ql^`ip@Nj;v5ImI@XFtk7gu{1}N8 zg+9F5Fgas|aP=?=nXSRHqvul6xFh>F81gZcV<^JKg3Ri}P!wHZQRU4-t;As;612Rm zx{BDjK_{9@)u)45E-kn*h)COdy6o=Bfx!iaroKR<*3NH~p`(nzHzTm6gdDz+9Hy;{ zkE(Nf=8O1?2;u|ky=WKPOkzF_UTOmNAf$}=Lc@>sGZpUUTIZW6)rn?H$)r4EPd}a~ z*lEU^o3qTO5`nm~|M*>kP;3%9oN0unKQ(A@&s6r2)}Pidkj`OL;jt;OcD zY9i}}QbrEVmmaj=ULwa8m%wB!5rcsMEsq_SqS?E9^-h>WBh*3-8U6nS2VsODJvF?| zzC53wK!`^g9Db3vsb*D?rfKS4Ez=FdhMTiA7iVYik8p%JW?EUh?gJ>>4g137ne+5A7f zBjHAZclhH){GHIL74t=+kBXfxP&6a#W_#CAWJ>GDt=`B8d;}fI8pOgj_(8pfV(kdI zX~_QF(H@pNl%)(W5!-@2BBtZG(dyHso8%U_7q?HvQioXLKF1H~&Bz)=U+8bGihsxFH{+Rl?y(dq-h1JITh^znM0^P!I-wbq!^diwZq4}hiOl9rD#&K`h-Vi zg#2L$Ti4g27l~0wojol&Q#Sf+Db_=vFA?ICPQrq{1d7qa1^HA5+SF8|=fyz8I6Y$k zZjJ%E)`J#U*W;d%aTpMLhYDi(^Icq7B`>%-m!WLr> z5#aP;8nX(J7t=vnhTHkOz_Xr)qA2%H!<9q|-?%~kp-UcopG!Sb#Kz!;NMCN}q1h3! zBE&2?+Lvo6sIlCh5bZQz!Bw1JIW6SSXl^65chTo`ac2bP(luG^2|e`)r%E+Y9gYn{8WS#pdZX&Apsvl{Qeq zpt%+0RIHW(T|GupJHNmxU0~mh+(c`gqa;XOh{W4M@3c*Bn-(c5W=F~L$*!u3TF+ww z8noLobiLBy$60yfeZv(LSA?BtPYF4>5;&p%&M?=vI5uE7OJeW06l@`ycI))4SoPg$ zR)N$+TJaL>(bqxtn#X&OcDh>5Zl>BGi$f>a!c8?=+IuEi#`;1KoJLd9IR zPD^goH*+tR#SYfDJxX7-ON`;{fox*#Ez)Kemq-m@ZMxLz&4rB_Tk+)^`fdfquM)8x z3l1}gFE<~=m_;4ZTaAs44776Q6tK3km@qL*On1uC$zcUbEJ(eckMlR&siWUYGRgMl zWU0LHTU%6=ylRaf`wD^*onjj!xG4~7XrS)52Q_TjIwzp7eA6pqTbAj?SKcjGKkh=D z2<^A15{OUG8G*O3u>?2M1r0L~ zu&}5}x^2y4i8?)?B9P}RDw=BHzWJOb)FO0Np|+tdN~dJVgsl{UhD}+z*n_;6 z!0eUr#uM5*&air%Iu?~=d2uZ2OmDhgn3fsZ^s&BrzfrB=;P*=ldUj2`x&qxZn2mKz zx!Oj~#^N%=CeJ0_tWR9&Rwh@HCY{LAq07u^$9C)}{T7-3&aa{3ab3(3+#G#And3ab zWkj$UqrKm6|F<*ugJV?3W8~4xs*bTE{U5x9UfsYYD>2;JGueGSMtAOG`BExdlfRd> zZ_>cO7a>|N|H1SyQ*?R%jf*`^`cl4+(wyiBKtRptc&`eu4B=sgm-2@V3T8_%hKmaG z#2F$ycyhG_@vv;iEex@Jk^1>Y(TqB05HTkz+cMEPV(CmwZ9>^sKllenciQDdOfFz* zvbG_mvStWY?Yku-q0MuQa(YzID`A5kr9M;?TH2hx~R(C2G z5EkSSx|$Obfn`xzu&CW`mV^)Rm*#mu=)5FCu}pZAqwg}AGrVhLf78esKf)_>2Rc=r z@LA7yGRVE?lrQJ3@6gY&Gvz2gSgze+cR^trcRM7 z20F>Oav5Ap%}>!O;)efmhv49-Dv^-Ul5X=!jq-p>EiMC(TLN#lhhMQ*?DwcQ@NjlN zrcB$D^fWrKU;v6IFdn`+ld7=my*xuPqAb=7@(kIfkb2nBm(+Mc6D!cy~ZagRtf~&(Fy=p5O<)Y=rcoE zHO<~MIX|90-Ml!`^bVK}V8MF%Rs-ag>AX7pnN$qkhX73?G93?ocrt-}K%eb5zy37K z8O>Y8rsC4rMr(%cx&w6>f|u-SELn0-Orx5It?6ouIX3*m7;-nPUe4=14g8o+5#S&z zw51CVZ*M2!`opbQsP!MmHE><$I$na_e?Yy1b`|ADk$itBuy{LTSPTQLB$#=94hZwP zO?0IbK@t7srEF{w2QCSa@~A}*Gk|6u2U>u~bAJaPjlS)Q|wORt1<%&1tKQU!p+0Je3Z z=cVIbv17V=U}>GvOnekwifp7I7Ib{pI~0J>yd3r}(5r8+eO6JM8HO-nj$w(x+GbG8 zd-e9Is9w|FD{IAWEPX&KRP1xoYUO%9 zyLCa>k!XHMX`Zv3sc*du{!3gxvQ^l$gdK@!(q(#`>U_i!G}|y;^5+hSdnB&znRrJr z`=0XZ%>?h34oAm*wEAH>(p~ z5`mA&TIQy+vi>umG}u(q;iI>r=u+6G0Qn#hRg<`*UH`LZvEvo!HlMfvhXECi@H~OY~ z8qfp?xFn`PjIy;7g2h}9+sRbfMbx@YT`qQJ>3YODwo5f@szZTR!ZzgRwjZ(1)}Qtu^` zG~&3rZ{2$3n$Z`c9InI-yJYHJAE5;Zh=2B#Ok3$@Q7!1lZbW3@7r$B;PP$=YXLZEfw#SUw6E8lDoA*#w}zwE^RyEBzD{cUoE#BXvgET*gm?3}j&=ei z)0NgQz9~RSu6_Nt(XuF)?Q*#lOX;?lMGQ?@*Q$}uKIka{kz)iv<>K{K0m2HR=hvNE z6q{ziqP%$HaquAlK_nuqM%w9(XS#k|KaYu6Mw;7X2rKa%K=YbxnG;A!N_Mf@*@vNf zjEJHuuHwxHXHYip1%_i&1E7(%K>&4bxo^igj1XtC_DKpx)+f8kt)9Yw_z3!jKS2fUOsr6SdIB z12OtDV3%}pYR>{(>qpA`#@- z(=&hGv^ew2d{GXFrc4<05TR9_*p|di8!1S(6%#2VKiK)>{t8$Z7%w{rr*1lht$9QM zD8y7K4Mqmk65t!pD^~{a1cu5+>Z0ljAI1DG*=z;((#1Z*U48h6xQs8Ae4(+uVu8oc9;^{tFJ3YY=LCZaNOM!Zj~*;-V^SZ zF1_9hhA1hjyjHp5Lh1i2?IK%{C0J)S zPXvrSxe9u11Y`UNdTs;@b(!89kw1x*vRJ2%EE=Bc3S&pLzMyKBBk-inEk0r8s%KJR zadzP`oxK_`G11DXsZ!2FgB-KJg6SfV$gE{^z5KdEq4ym$ev{#y?rf(#5Rs7tk?^;| zE5Uo(n|1yCrfKR|t+fc`l8l!d)$ZiOQ15T?j%Q8dewA$59`swgP4C_{s}-;NPsPc^ z6pEPtY}Q13uw55u({8t-JbJKNTB9kox@fau_1Az3lU<-EvgoP!g!(N#b@0w{=ntzl zkzmm@Ei@s!;Pqn*1rz__raTH=LfNhm@wW`yy`Rbnd{YZG6?>?R-Sua-y?F&s5gwCU z_?lIqhs$|bh5T7p$pVLuJjg0MH<%{E`(en_q1qS+7p26D!2{{qlfK8DfMnbvh}DFw zpeHm-TG6A`*@vZpA$uKX1KS{krN8%ptq~BEZlF`Y4saYwUBsz7$ug9}mfh0Lhegm* z^3jnJx*Zj322;JgmKm)rI1S{9eT5zIg@Tw^aH}KC;<_@&;xp-hTv?>4w93{Ni8t5(LBw+m@JO@?fT2377K&IGokj38|A86oZ!B z7W4n|oZ{27r*g_CrT+CmJExCS%cw>das7^OA^}AEXV8Z)@L=vwO2m@{?KBL2~nCQBqU(aJ3+?D|G^SaWLRj zc|1ix&}1gE%Qyg<)g(S#dl_o`9F(e&4)-J-s3O@T#3Rqi^hx`;M^}sz*Ve~l(WEuR z7)%HHu!*jo5~s?W3#5M=#fr$ES2~a9A&IGH1|4Px^8B=cdUeXiOgCvvqV4&=#AWkJ zX`z%)zr5uD?DjXiy<>l3DC4RKG8fyce?L`I$KAnPnOU;-&?pUucf&kDt2(L zb4-9-(k3k7K5*N-;uD>O%;6`)QFRIpXlnnPSCEc{7_+h16`)pSmUtO`@RfJikMljH z*ncBOIyUt7X@F0u_GP;A#Le~R`n$C74?K!5M<@c|90?V}K>?Jl*`c}=5iAA9H^JS5Hhq@;co3zGdUkCC#N(+iwR5X~%>Mzgnx zu=A7KE5Jut@~6p^L$a_T5eKBXVA(5EB77#7g0&Hzr9qHc#7E<_UdUPaf72ll&sNHl zM{Rr&-XnY+FEF^n5#wT$>iGSSqXEZTT5A1M z^5fl^%_uM7v8f!61%qV#Kc9^NYhb{1B{R+EdS=d>%ZfJ6)k_rofZ(j^FpfAXKPvU1 zfZY^3v(c}-qrtwUB~3OKOfp)zs}-+Heh`kkraKYS{mylrb#mY(WQ;dKhex1}9J~y> zO;6){$Wi;(M^0X`L8^a&qnC7?QE}w*1Y3DNm0w?A#*}BW@rg4UKuAWcxTN#9QB4u5 z-o^xM+9WXA-;LjAL!TL7Hbm71YorD7I(L&t4Rf~hm^&6-s71__PE?9Ozc3(tcEyp+ zUU?EKm#M3E*_IZRH#lgQ+ZudhL(1ZNv!6H~(*YEd>t@n@3awhUo42^uwR1HkS)Djb zL@Q{Lh5kB<>;nXEs5uBGL3W&_z(zhj{r#QEE*HyH7@<4NNx_u9T$!h?rqPe?i-Yq< z5=r@t$wwORvagQDr9J{{v=VL}?uq%2zui7~yj`d5p#Ua8-CT0iJvlJPmnhC8m_oO_ z4XyAkMH*Jk!)X60V704+jc^SB$05aPSbcM&sWqDQiYbQ)zGWb0Aja4dHnYI|EdxBG z0G0Ue)3%tbNJ(Y$cW?F|ZIbptAx$8SNc6*xFxuD_-VQ;(;aHHio~7gHRt(V--ERR2 zWYg@1%@TO5+IU2RJzufr(sz-Qk=tz>%Wczguq!J?nlTj@y!jYDOV5PX`wjXQeU$4M z&`F;kVZhlvO!PTfx|+W`AG|fstKW)UHQxqYxawU4mVRtQ1WCYSu-m}z)_}tkg^yu6cE}h**=_B z^4h=({FriXS`;%`XtUT;*+dq&oB5XbW9)SXCP7@QumLxe&;8WD?w&5(@lV5#A@^)}=HN3A$Su1a;U1l$;z7BHN;DGNM~|OP>-o0Q`yG3TFsjziM+xh(cL}as-I9?=$z-x2q`uw$hK6_^H*JiFi8fM#1 z35(pqqB5w%-HHl2YCY|`-#hJII9Vv|o6!=D7A4}kpO->_>9%_*h)p+}Q4;*0t12JW zp+TJb?}DNe1FQ#3U7(c0*SpaKF0lIsD+HDV)_Rgn^!48vLxmPG^UwQKO|$fg+3SCG zvqNcVIGl)+<0XswVx=!$C__uqUZJh#w-Rq7+2|xh3|f`(PTyj}PvikpT2{Q=wxify zcBo0O<)efai0mQ!nWygMJJ;N!+c&YKS0S$b@Lc^a-C_A?Nvzk_dk*qhL>UoHo>7)( zlh=O%I+LE+RkMRAuss4$Z1})MOR$PVG8`9sGRd7ya%MO0ZB*RtbE%ix%M6_t3@BqH z0t?9Y9aB7i@#Yv;5>{&@#etW+g@)hURP^Bow|jfk{BumdT+$z{u_apL*vUTM$v}&5 z7V!_&qV@?0z7u5WkC?~6pU`KWvYd$|Tlq{UbRsM%Uv!H1 zdG&yGZZ9uVNM&7pFf{e5JqrT$&X5sbzoHyhWj}u)tyfxXGaxJ-A1m)3VU<_?`=SNy zGpF1QscA1_Vh>Ls3C70}h0IO|EfWl04@LrcLY z;*>PIu#?uDkJoDW3tGRk4^nFA#Kt?|a%8V!RzN^lJK>zK2mYhO@6#NAH!Gk@I9zP0 z5vbVxYpXhEm_j-M@vJ5=W-Ptng2se@ehZ56ZZN9+-A4(mVE3IiBdBsje8Or^NLuIJ zuV(^HXLGJ(XOlnDvt0o z2+3JuUOBKsPhQ5NxY6JFjDgpA6!hl@8of%8zV=2Gvkn3;4E*_wN$dH5yp@< z!SLCah3a5c8oEA2K&!-*2J2X$ruDBsdm$ZnMv0mCbPz*Dprp)vIYWSlef44AWc9VL zZ9_1lCs>A7^=Mb>A|SKTGC}kFNNU+8{$f%pP>)q3J;&UuOxx@YuNvi*umPd;Peit{ z5e~#f7tcJJgaTTGgKB@H>T*zrbDz{AN&|qA3wu4bt0lQ(vI9mrm&}z8`~R5I;G55o zY3u6T7~zIZ#f1s5w+SJj7|*C0@Mb>b!DgN;v;7%u;>z@KlJ7?hE4`pRIsYdJ5|ZOi zP=dWeFM>2UPNXYjo#3*@KRa5aE}c)JC&6GN#iF}blyevV=^~%bZJPaj9M=i?b<}iG z3mFzO%_dELTh>~PjV>0+zu*JCgN4y#VVv@#M)HEO|7ySm8v73qvxif|tWzcGIQ0jg z2+aoKA5&%;XOOjBrrAV^)t!X;Cn@nmlaMKl>Qtpk$MK(&O7WydDL7FaXI12Qc{dtC z=31SY#X;WcW(!D}!OUiMXxUmsJ_TF5mLgpAOzKEtW@n%t;s>k9Qq6!~FrvruB&FwZ zHOkPYB<67WyRhEVV%pfVT4s`koJpex^0^3795LH>E-y7lh)ytIMPC>QHBGMgFW4o) zd7EPocuA3FRp|Ns!3zk|_F7D-VsFOlr0@^x_~nT}IquC}+#az?Excv)IcRVtJ_&tP z-O1LHL%G)`kjeCWM*ueM1=L<*S@Duix@bGN8Ps=HTiS@_X-)KfW(;}nz;g8Z^t4^-CN_Xw_CMc|FWB?xSY zy_s;ete=?DMd-4SNGNt^UhE9rNXvEo7dbCLduT=HwHbhm3jGvZ8OwNcH#EZNIM~VH zBlGV)8g_OvhqlFnPA~Txa!L=}{Ri35(YD{fY4Bk%$&OK$WuBu}SzGvt0}9vGP5ed2 z`>xoh2t#B1F`7Ncmobc;N&F?};r}k3C7C{QW?y9qP?I+O^UL^i4?XsT(ZQ{h_c>04 z2sgvN|vw=({6XZ%OfMK_=6q-?OAChWT@)XUTPBF*^&at zT&FeW>oV7zZIHbuqkl8DqC|1i5pgOi&+YZh@?R?ut_zwxIod|)2~{njixM7@(aZYD zjoQ0>qBB$uN2Vz&GdC{p46;qs(S&|Vc-$!*UR7OWoAk~NZqq$5Q>T;$KLSRVnr{HN z(UWE$RTQzV{WPegDWyo`z`oMyTEt-Wmzn>Bj%rIeV8E0-$U$lIJTY8*=}FM z{4SNlmF&rZlc>U)^1i*yPy8V%sXRTv(5rFVY<8tbZ_Bzj;z{LHhoj#b=vyM~w%m}G zZ0P^;ReTowA3MXT9A?P9c>Bk}KYXQ+{#?G!Pluxk!alVj3>3V~6#@z`rSMNE-}_jH z6A=A^_Df;GV)aV@cv*EBj6;C<=wL9iaU1J-YB7TUon0zZ?n=;7YQ*vo8R6h)981KX zKRHA<$@p?Yt)nZ$RPyXwUTZ@YMEqJw@^w>q{UYQ1ss8r5mcSV0ZHM?& znWw#~K{=MN*d=VZ7=9J&0M7${Vw?lgjUJQ@W5xi{q#fcsbG4k8{iR$Z=NHgJ=8<9F z5lE5MwIjdy+7pu~BCxg3gcMsbjWP=4IGa@!Y)~|g=a5r#hojh56m%v$Aqd;XQLlr!tMnZ=(P=b5yxiuY1v4U$eBOY6RYYd@?WDPW>uY| zBd21E9+e+!z{cNk4fhCo`QCPHE>9+m?p~5Zc8P!5;d|#vo7Nc3cv0^CL<&Z+b8b}O znF>(BVD@w=uycY5c5039r@+n;+q;QKFt|3oJBKL4R3)+t6dD>p#5+Xd$b*?B-ajh` zZ$!$;gpBwIX{$KZj|7y167ZlF{+L_9GxE32FIb|2l1Tz)(&InT6bKFdet~z}(nKqQJPQqNBBU2>cYPPqbM6Z3Tm(y^%j)KUZ>BDT``usR)nhZykRGOsOHh&lYgYP=-|ak&xI)+srUM^LF=C9 zSK7M3zeY2(eu#J<@DLH^3;J?!K25!#7L|xeQk}kHM;&%N-|PGz5(DSR+b$n`5U z`9S5lY|vSv6GSD{cI#rNI$>fkgLg0=J$r#7`GD^u1Q|Bsyh(UupXxkD?Y01<+9)@< zOmbTM{<<=XNEl{wf#Efa6VI9Iv;jA!u3nYwFCt4~yRFnNsD#nyh-P z+`~~4#%&SNRU2ihNK_RDF(DjDP$YpkN*N1M*D@sA_Y-f*d9#fQjGo2<@XWj6nuj)& zoWksUFuW-zVxrJ;q9i>hPWKz-GHGyB%cVfNqMHc=RKveeVy}2WX+ey(ODB^ND6JFG z^;9R(^_9%z-LMic<#z;G5z$cyZ$UT+ptamaB8{*-w<`f!Z9VyQ6iu5-{=P>5qpHoL z4YgikP>7L^xP6z8>$JW?xox+1qFgnxO&=+0YKq&rl8#hHQYwafd0u@a`NY zm2JSy+Xtjcr-MrmI-TQFg-MV4%?CUDr1qxt&FSP*6T_flN)(<~_0EOk0e96Y5oF$g z=WKQoNnUin>*T)lSErC$AS8Lr?mKHB^kYw%`S?Y3s2oMuzF)WrN}Na|dWW>0WC<@LI(N#T3bPN(h#Pq3F_M2t>g zmN?f0q`Xz)(x6<#G6|+Ad*5Cr*6 zi6Q4lF1=!k9oUt%Xa@F|=8W`66*+#+Dkf!bs}U#`{cxx))_r*BDLRd2TR4oC2=84# zVV7zy5IT4|W0o4PSb+%;kuM3O4iMtb&}jEX6P8& zi5s9;aJ4r&olF5$Pkw$rjU(W^Qv9h{R9qSkhng{*mvO<&f#;V~BUV*Pkg0Tm(1T{J z4(io%F(h1KX(s~(q}ry46kZRFhc(PHPoz5L#GWx3T#shp>;_8urQdGl1%k!9#19rqGTWi%kmb43yBLa28+X9 zY9>P6G!+}cd*@t%@>9%ptQ_@%@}m9lrCs@3TkpUfsd#32S^<_if^4iCl+1U#uFr?j z?dq??o<=*<8vyW&j9uG3h=~Vv;Oh{a_IdeOl-_Si`b7`=?g2ybyNu0auJ7)*)S{l! z+tsYB2*k5J^!?BVU*txH_`hQg{b;biI~K*+XA!=%@^g=zetQ1cM=&%{=20Ul;QbRL zv!yL?o9qUOhku+$Y#YoL=b4ogD*&vpG!Lg%j;GOw5HWB_&1e#>)k;h{2Xqo`|A|CN ztUK8IV{!h+7X%>rQAj~u(3XsG5SuHpXBNZK24A9zy!0ws2={eGd`TF1#|coOVhM>? zj76BbMBP?Z!cJU_nFUCN(tyyTL9@IJ4z{5I{xdM%OqI-PL?6FW z$mABWbjT>k{b@=C3<9Vo`kcFE)9r74T^6o}xEO|k)hVaR~Z^^w^%KzBME)gQF>k)cns4}=wg7uKCPDbIoRNJ zoSy=?-S8H49OQ_wBHtpd5;_98zB6(%i?6Asw<_~#i7+BW9Trv9OV!}nI6V_lz#e=SW;U7h$Z1vB1++H{EKDMoPr%=8yjbH3aZEO6%ZY`Z zVcbYrf8`-p(?xkX&RA~~YL3<|(>C59=9+U za3DBkaeE7tzZhQ-fr;w0rkJ2?MqeyEiL?_30Y{8|^k}~?f-=O>UbpMms4D{!q+)rkh@xp}URz{zz;StySU_XF=Vjep$dmhg~yz)~`cC(%%JTwz_R{SFIr7 zMUq_h2))i;$RLYbl(ynB!X?PV& z?wcjVx^z{$Zh|SwUqLNLCXdOyD)p29#nqx=_41N)KgT)NCFpo?a*LYm4EVTEDEQiH z-TaHi<6@T-{W{J({)+dVKiB&JM(P5iVCp($o_O)d@+^cFcHR44G7=3MEU6~%zl0cS zhkeyTQGFQ0QXyl^dzABB@!RY%fW$m6#x*L`^gj`1$oLf8-5jJiIYoW4bY+3Om}tNy zW@fP*#$#&sTAPp0H`1zJMqS4(f-yDWxY&x&vC?D7etTLCLpIt)v_2Or$dlTXc;=+6 zeaIwNk{egI{T!ve%ztPkCdXv6H#s= zW#{ZxcBJievJ}5cgHF0U$0r)6mxrI>f%G#Wpxl-4COU+WZyp6RSWoQPLiy@e1$8Sb zUB7bpPA!5Rxd)ToS#W^KMb+=~n7v3Wl>OBfa=xRE31CFTfzbpv%hD2p}r-?HOA>B?)zIIU4{Uty4Bs-gO5CDHxDtc)aU(%c&jkeP#E5}!k zgu6799jq(e-T0PJ-XK3WL^*WYUYsu3mTg}9OqHYM}k1^Pm5{9$l*E#xu5AhfY3Uzi*qYD3K#qC zITm?ic6>juISp}E?OlLe!CamMi@xCS>H!B#>gHsy<$sqUbH>;&kGD|aw!Rte(A!wO zY?}s0-9}4scP&ynEsBKYh?K8P_=X4{;}(&DU{EclHB~b<4Kl|m zIxS&@fZ?p{)AeDOVj-_bHtl30k0DgG@q_9a%xn)Kv`ozzAHea#cqcoKIbZEoWQR9| zT)nwkyl^T=&5ioEdQ2eOP-4J;_TG&^LF6o;mvU~zJ;DKD8HM%}zM(3aGiK+kw`TcC z_Qb65`;?pO6$8P`nIN4wT0P;_Q_frQ@~_vHsSY=E>5$1U_*nv~0m3J;SL~Tz=3vm# zyy$I*qw`ry6{^r_z0Gr+B2TPK+4DblxXwyNi+(c#uMtfAsxyxdigMOOalmQQW}OK! zlmBgLe+ T#?!ZqH$G?h!!Xg?pRKm7NKIl4aug6Q->C$UGGX@Zcotu{8qq82)Z9b zri=1PTBIWci7&%r4$^OkMYG=Utr))?qMRO>ocx@F;??F#B+w!@(dBsFUKlk|;vt#! z6oB*ST|`MRzK_+h6zBEkcrUV9n5*DE!d961`P~`+Zj+t_y4$=9<8`aDq#wi^|E#`+ zKN;`ulp7C47XJ0zY14JIbONK+`d=`tNU8g8Jm2iwYxxX8sF^EPubp2 zNuUWpraN2*_5g9nLR5z)22LPyC{IPetGzB!sop<61`7Kj^!8g=2TH}PM6&Z?DPV_h zQr)mD$O!w*#@QBMDAt?taz!FWiZXU62Z`wK%o9oTnl)Vmk$kti$(_y^$7d7`;L^z9 z2yt49cP^g39ywYuF)23E)hz79uYMUQ#8yaO9OGwXQ7hVcDH~>XJy1ywNY&B_16j1kB5H1(iGRWcdyt!vB z!8w((3Qv2K-KVb?F<;WEwOY928(o?G}(#!=HQUZPtnQWp)%|M zLIU3Ou+M~p6TeDqo-Y(*kqsjbUP3Wc)}f9i6FF~lN+o+D0AFOp(aiK@uVD`twDV1;0QN~pE|Yi;X-;|s9*HJd^C zT>wueN-ed0N`$)}_@m8;E1w-PlD^?ewqVb%2LW+dH1CId6bpn)kqnPMUBR!A4@F@S zaKN3o0~sr1$Jm@fVS*LpOdo8s@S5Pbe!sWh$k>blFAw+l062_RIrql>C^n0Zy1%Bv z?-rUCj1#gNtM&ypD(JL;b46lqfuM2jo=xPWq^?RYk*jb~9|s?obT1K)>o;jtW@cJqHZn6MTY<@l5qTlyQTbwWz0ef8Eg-Gi1I$ z=Y{dsmxvKO^X2L|vbqGWH&Ol{I=}dyE&?+iQ=JncmkvIXeYcV^fC!-s7jz2@!L%(t zeUBV5GA`*(+lxGka=PU#6pwq|0`!BX)v%l9y5R^j$_txq#Isulxn>Xt|@n_ zUE7vr`kBm)C2sSrTBmFV-zSkFX)xC+(PQGmt_7SLNWIAJklP&p75)4F;b$53DQuz6 zR2HKLVcLF&=gb+x>LuVk7PIAMCywpRBau;b5ATNEX1&UGIc#h@P@{^JOx9LcxUqn~ zyj*CRzX zkx_@qEX9OE8?u~^-sn!h3T(&?^ymZ}h^vZP4FOdO-HE?l(jrkR4RLB{wS*vf)Lr;1 zWSxpPC-aW#3N_W|6%-kpk|%`x+4y2K-$A5Qd0b7^ftP1KVhgU>E;xt+kN*kI8F~#|Rk$B@I4+eJgl4PLs!*=KWZEiue=I+Om!*3tXpcxw}Ru$ zi<&V{)f712UA3-vZ=rx*t6!LRv)`?croKIni}!H%&^`;ue6J6GT%{@tHZxCd#YOA_A*# z7#(|v$IAO3kd=vfib$V@VoMMRtLl{0 zN>A=HjD05Mo4t_86yalds9QH{aq`2EK#Htde{Vc`tOJtDI@d2tz z0+^>Z&sCHD4Pc`!6T#te4jP+{5{XeFutOrRo;a(-YBwjIRv;#lra_wE*0_rooAY|i zQ7c{C%y2Vyh}|Gir5rAYwckadh}r4p>twiJGSQxWWg7VgayO?J3o|SOoQ9?wq@`_u z*ivOsWioba>ojZ^6^bmm-9pV6(KK)k{#{p&H=)AfxpD(#fz@eoo53v%O#xOMi3m&; zoK>XAsnLv3{H==)skxye6%dlH5HL`#<1@^bze%DOtV}wS5C`5(fp%+dI>NA=4=OtB zEB=aySL#Ui+_15L3UcO8v$kKZc1tvYIL?|SNg8#uA;(K^|P{HxLZGF;ZXav@XeOY8DCN{32CR@Nw%P|8`F`v;knPe8%TjnT??ep`S&gHH?KxF#-S#~=#fcIufh09TfQ zBmNIPeh(63Je4z?#?*{41TJUkw;07C5-w4L!$XpmA`gO*LT6GGFGZ@T?*q;}cYGe> zN2)1vrB|kxs6)`i$AknqhDj$qCR;>C=m%qAi@9|SsD=A+L$8^6b zxi;CM%oq(}2furLN!&Fy4R1X2}43R(_oHo_I*u<#18Y!v6Y^m391#KH+8iRJ!L zI7TRQ^Q4Ri1^eEfO&xwV;m5`(wTA*3jF~Y4Ql=SiVU!&W8o>4R%}B!}ft?%Cf-I7n zzFWPG#wQX~4^ZJvOH~$}H>xGYdjaSdXi3lP^DMch0K)-RdWs?3$Od|O-}on{e_7cZ zrtEeHk8C}7%JYf&JbH%XdH^=T$iZu#hgZ)xQ>Pf6zJ$r6Xo+#ogP~E}d=Kws-7Lub zzAsb9lUWcm&OkFmac25~O+|vot%>-)v%+kjfGN_h&l;)fI7~D&Dtq1iq)zut7@`w% zdJdRXH*r@^jGOApCHaOYbdz7+Jj7(p%+GhUldVh_AOF^(_{Oq+k$Bo`m4C`D`5v*kc!M1VR=9!N}T zi6`tMAQ#5)B}qk9rr%DxwAGq;Cnj~uCsbxPRI}?VcB(< z1OOU|p<^Q2Hra06Xf|s~rFSK?r2tUA`|zg&!Iyb7C$8TnMI7SmybJEiB#I9NyGJ@gXv z#+bTqKC*pizz<>GS(brK9iGy#O@xr!HJCgny5OkRphQJoVj(i}>b8c?#Rj#qbHW6z15f?bM*DDOYLRyk>H6@|sUUNUxukOD?!>M048pw1|+8-Y?-3YE|T zI3&|+ci6(}-|#v5)(Fvz&V2e|OhBO`?vt(&5iSh4L)gEURo1N(`vK*vBg=}Ys!}Jc%V`hrHuimteSc#&L~XwTGo9`KCJ{G* zX_7_lsxGyhFTkFw=^iFMX-)6K7~rG?DhArvE8Cp|+|wIWIeFk^qtz@hwp76#`z6Kc zV-9m%rjw!p&Z0F=8z|mCIKrhjlU{cSXv*k|?N&?$bI)Vhdf_*N+R$HaS#}|r@>|;| z{t*pHP6nS}{-cKd^h2cS98_?U!-?uoA9EBN8}by585WiU2FUP$1bfqWLF7{P!*&_f z9YZXyF=Oy-?5#S7m*?2oEEvL)RKG?$Lq3fZV>O#@=M)&?xo1sVWnK$f|IB6Ms^jv= z$C!?z_Kzy%&ZfExRx1(P<_YkrGXc`nHAY9kZZn0+8 z&MzQ5*F$elGMWN!3^Ov~eI73m{q;;?9)xKZg1{0-?3`9TiFkHh|t^Mn<2(!`B=aH_XlKm*%iV>#(8gzImjEub5tMH*f=NChFCku9wi;kH(I>ylH8&?UVUchD1n zZxCV_gt@?KTE0>9thb|<&lVfr+2?8Yhp}<{D^9A>x!KrbhOY630l-y!-N@kCNH17O zhM3A;O2X{!E25eFu%*SAurqePsF(neF{pL`&O@Gxd91{k6M`mIdlxX`Mp{kbt+}if zHNsEIm3?>CL0H4P!2rBP3B72WI${fe>7x1U_@#5+WLS%}hyO&VO?Li4ZP3E~=~s42 z;`bb!LS!hWU%C!pkiwv{(-EJQ?3L+^`gOSXQ$m!9E1MTAPm17!xakDojlVh~vF+M1 z;Iv|vl9l3_#?x*$cAy*^rYw4#aL-erRnUTPW|90qi=wbvwp=HJzszy4n=J#qF(S;_ z?zf!a50b*Z;r-)?@S^d0O|%O+kFw}fm3r`Medo`q%Y&}fP|ie$gdN+F%><;(f=L^U z!nmP#dX8*`x-%fy$`Xw)G(i*3l7mq*5*Us-)7=P|BVzA$&DL?7eaA$ETIddjYe0dz zfktJ$h-LaL?L?#N)OB#JqPm7yevSu{G#&bpxXgN=Qx|%~Mp5gTX3Obf)dcdc;;)kF+J^=1+{egZafpqSj&7wKuJ%99o- z;;ip?dN4cSDh|W)J`S!KDc3P^-)Qg(;@&#LIyR`9obN6zQ`XeZv~ZG z;d_sCMr@VQ76xI{-90Bsk9x7aw&>90yL9u-#s;Elh2VG>MC$J2S}EYCgYd#NM5Rz# zUap$11z!EmAX+Zot;3t~L&WjyMfJ?`9LP<0aATv0@?~nP7SzQBcHG;(wN}NA3S1w6 zi>09bU`l`Gk<-Sdmk4T(7&&L*}_Hi(Q%;8z0DGuypLNIZfg@|D##`$4sKJP1P@2$ zHWXx07F7Ctt1F?uKQ~Ym*KO5juFWAIuMFLY3M@7ez~WgxB;_Z>Ix8pb_1J0qcr7jgsRXHI?cPkk-*O74f3Ka0t>Zx*OQxqMi^A zP3BXsh}tpw;YjhC|Dv_<3lhuq;*d;o@N~>Pm3$CVLp@`$sNO9|{wMNxxF1qIo79vf zhWze!y4h6Sc{g0dOgjDSb!BQM8{eka?3eFOSL=1fopGZ@fTeR8f|lkjo*GoVT>*dDCQwf;?OhqPFEY(V z9v51EoHSr@j#C;}6^%HhX6!N9J^C_VK}#s`wMPWzjUeOkB#XrQ( zUIqdi-&3^jv87JuT82|5l}y>#p|&Eh0czes-Ug4YQ{@}&}?refdDogYBy%!{05${F~8LC1>ZH>GI`q`3rFlL*+0Xm8*Jn$_0SQ1bk70Oy> z^)OkD?=@7jE%G(T1p6HVqO!bLQmG)0c_7Ntz_}3y8Bm(qw&}7)$d8+1lOn8>U`(>j zxw5e!+TK@KDC$rK^wr#>h@|v3dPwr3Ii>jin?MC4PV}O*;3A-#a=NPQzTew~*d_uR0ZN zMSfFze2<-Cx|Xm^jlDAZXo_{|S{W&_;g?t)3A5(=m*YIssPsIzdcEmrOa5mDwl`WD zE#n@a!X=VUN9IPbO**@%H6jkRA;qv|(u_Wmxp2`LIO@wkGu5ms9yxmyNtc12m&PSb zN+30N?<$%jS)RBY%49^d-bx?qNATbtrl{zYL7j0jhi8J(ChfJgEKyCkkpt!dc`mK- zi48i$&8jO}53jo)1tc85jWHF6beXS~K$T1vKUcOr%+BVMS5egF80CU)jo2^HISu7W42Spfn*2E12n43FiEval&c5tAlRWh#JAdmt8wDL5kCQ*#+7%+Xfh6FBo-@*p~X| zK^#j?Xd{#)grr)@7iya7IF3}}fXkM{Qsv`dD&;MGkmJ6GebF3dd{ba$IY^6-l;W48jYxF9s0i_HR|$ez!&GqUBb+j2$4$--NRlc?oHH5L8P z1g-{xDol+8nkE+C4m6#cO_0)60Q4BgY8?lDy8}(oX?Ve|RG65W3TXJMc{=RS!{yo8 z*&K7-lslJ5L!|zJx|y7mdtHL2@o1l&uR=Ag0iXd2=$I79+k@i7WJQz%9lT&>Fi#Xv_i`-`LMYI( zAVDx_n_}|fparm1lSAR;J|%7a60)nAoD!(=iJu*UmwnTyQ$C+GAnTaGiwJO}<&5Dj zEcMbE)B#-){{0B<=*wYv1oh5p$|p}}0k!Se>)hwpe)ZJV%o2Tl(%wLfA{cU^o0_wv z<6Z9KQ>di2NCieyc}{AbjvjnCs0~>QLy&Mb)810ns-0YZ5a2|8o1^o{u{O;C<1XeJ zzjreQB(q;k`n6;K!f~E^jgcEa2D&Gdq(Su=&D777=OJL-{&VP?X0}=p|Ku^?jH?ia z#c%|Mtb-yi%xC**k{5ylBOgy04fU}5i?kdF$pP+?LhD5Kh01n>qf(G@PRRYoFQyvC zN$RVc?bF<6V8fH93RDL3@+_}7MeR1N1)ss6BG*;1E0tMo-y;o{!g13w;S%o=0W6Kz zr;{I^>|VrZOEB7V;jZF8=HC*woc!qSt!%>j+t6XHSc)40MR7oUy2d|w<%ql3@i2pLd4Ht^RNrf2xoIW0j#aU{N_<*<5G z-_X90@KG{}-qHc(elVMAUeE@ucfIm|fL*=d^nJ-%8GWE$bMt(IGYg9K`l+O4z?v53 zTm>Za7AO0v)Z!GY)IwKYc-5LiZJfI-e%DJxZwAXB1NS2?=#O^KGJ%%bq|o>BpYXl$ zhU4^86ff^UP!!Tf77cZ!l(97DmwzDL+8lWu6u z29;hV&1uMbD&n44I5*2b1-Ka}omFlP1~qI3 z=q#@2xjSWfs@jiva(;S1XeSOCgeoiBRMlZjJE2XGUEt`e=j`1^aAu0`mVy&-6nCXs z2reY&zwyO8{KC``a5pT0tQI03r{6Yfr0ym-vGm_{>mWF;Ktov4OpamY;9z~U@(nm- zPt6{5=$~X1^k741K}CJ$EgKhnphGwx6YB*@Ix7S=G{9ZvFhf0(hz5hpC>b3JI7KL7 z`~*=*7rJ-IAu~mH;Gx0xCpMMK9)=)0W8K|TW(Qr6!K8GexZr1>Dj{*iOhfZ3|JylHZ3qv5NzWv zOaY4Eq6=$dArj3acZot0WkDummB?dcAfS{Q)QM;&ijgPgECNSV=MVbl;GM4k6?KVZ zm?OkKsesI7eWj)0PQ0_nHh~Fih5|PqjXsAt6igE{8bqrj+2M8T9NbR>`9M_`u~4!V zE2F+dC)uV_4O!^-vfL{Qe2ntF5tZw;Ei==F#I>(3MXgZDQYWp;hJq7NGFSr;r*9X> ztQ7+sKS}q)l2%^XKCDBVKnUiu_BuhS3tCa`lm6V;-YC*^;~*JbbpkOLTXZr`8b;5O zRV(sNsDu?3dN<&*hHg4>U)58JYg%Vki?Cm5j|#~F{9Y7Q0VxR#U(c>eLu`|YCu5D+ z>TN|)xzf1^7V?xt|HUTRq{u-4h?wJA4pvZ2pmAnd`~;WdFASf$euhP%Vu8ithPL&| z@f2;ynFZyEeB<#4qu73cvjN`=kX z$@o$f=r~)BA9|5xS1vH8DM|$hyTG6t&tI6C?cCf&eGMhT<-1XL%&2Z zVp;uJY5Yq86XDH^%EL8+?Pl%X&@j;SBjCSm(dDHSE2r+3Xtl&$-+-3@iT&Uw8 zppx?aU(xCPv1nsI9p8X7Mskdh#7_MlZ;&}`_sv(0YwVH)Q0u@QbVZEucbAYnIpd5O zRoj`}x6Ag$UfE;QgQt2{JtiKa{RyZKNtMr3sgBWROjz^=f@j(_TfMl;%0Qqq%>O9{ zpz$a|OhA(uGnd-oz8L_iqow+RmQ?on!&zeuv7FW!!Mdu*U706dhf?%Accg(8AG`eiq{w=8qX)gbymaxMF-U&3 z7D~-OrfwVKk&j4l=7Hv$h^vnY3xS^o>R-E%u_0n;<}Xp?C(G9^ogI_m%=q2r>iZ#VsT zS<9iQ2f(&{3!m`)nM4o{iTTTX`IQzhFrc*A0ebo|rojiZIabb@!wdQ63`rx3NrrGK ztf6&DlFq|I2J|8u`k;3<;vPHh`yISh*c`X@Opk0Xt(XF6#){63<~x}epg!OUxAL6$ zGMm9b{&dLjbFO*X>J*;EFV6lYkxj}L>KO|FA$jM5f72kz^}Tn0+NBti&VirYh9wr1 zwc@hZRUd%b1d#TWi#;D&}0&#j%3@qpAsKtbgN0*RR<8gPbA z$rNEpsK*ahoel`qSI+7}nWOtM24|UEOeIs0T1oeYPVZA+1Y>JMU)<=X&N&x?4r^kA z=wg1&?_M7qBsVgiT(KgU+e40T?XPSOp^aOIdh@HRiwi!{%n+4kv$}fBDOuhv7n4+G z2NZ}k5b6kLP}@vf&m8i7%;U}SFnNXv-G7-U(&`KRYKRc7s^Zr>^_hiBZwwKd*nT4y z%;nvUKRgz+*?J(B`epSw+pBSbipXlVBHJ*9h*c1YQ5mRE_ai8OZYylW-#Iv((TWjF z?>Hj!->e4O*T^CDvMFcx^A|n@#N@>>S1|z?xoR*rGB9_-5DoOIhYbd3f5iwuH z(dpQe9bqp3c$eHUUW}b_yN@)K#^ndLKbo&=z&v3UWt?GbBQlrfpw1y?8=(z2`rvF0e^wgpG2Env>*8lzv<;`wA?tf=97uKw4la!~k z!WZT&nS^7quIxwZM8=93!v?2}Qxa!N&b31ldTlf#)w=H1nOQS8r=dh;YMM_EqsVj9 zg@TYRG9?F<$E5YXmElLRl(T^fRFWEEg3t4~vq80(4uk{;RlWGo`^%AhX_J}O*xGeU z30nT$Q{Z}1RDgh;z)L&5!APRlG%fAal!cvUq*$!Rum7&Z(Fs zO}jDS)gm_!TW!-~Qb{N9z>7Mor;;MfESW}YJu~3LY}37Xhk*+-X9g^76FNg$>%Qqy zeEjjDpADgzmDSpRa%~u2Y1cM}BR`$6?F@hogJc$9IXdB=7zl&-JHh#;qXg1q+E67aI8frcovPISM`w)RBpmfK>~|1A_JqaPu>J|vJqs7 zBFBKvYOMN{sqR4Bi5fo=c0Ab)%8`fUq@STPwV_)ML2NX}d0(|-vj9`-gtstc{sLoV zsL~g_UU&Wz2&w;0pGtS|vvKBnZBT_^Rw_f4lXY>WTsO}H_ zw0igd7v0z77e(|x0TeoQ3`QaFxYo~Jp6k>}F-jzGZD)xEqQ~*k7Ge|7MY*65y{w%V z)e>3_30g%!OY9o}GUzq0cTb&OZEbpHLKA;EgoJKst!0phU=?k#t_ssei0ZtRG?Z1C zv_!EzV+^nqa!|6kUEMNbWdH^5O& zF%?}yij;=zlM;*L7%&qTLg!wewa0GojSY*W?#4P3${P&>Zs2hBtRe!eX;zk}WhO7c z!uT_oq%%a)g`2ZHw35qV?yGu5Ke8eS1=(WMsw&~Ax>Tu@Yz7MGMUhyb_V=+tc}-i-5Jjo-3~UdQyE=it{;g>-dZmyEKzsG%EjVo* zayR#GN{24>ri*Mx3UfcIPbEc1R@i$?s6`vB@i*ByEfnqoM;M6qe1oig>2$8uX6Cnl zC{UP3E#yDRGrW?4>T766#X}vy2DWV|OOR5_c}iv9o1ok)B2?1U!L?Q1^I&u^;d&Om#_B%5m6my8Rj=lYQ`B z!+Yq`0jT&~+_O5uUILrw4eO!1yA8Xz`;Q{2GNU<}Ql65NzBb+)UPK-dwY6(G(C%HRBnqKRjsDa(TDa+?=3IPAT%W%+O zDM9>VYxd+XeqL5{2qT*Iefo%M>P(_;V3t=m5${`!{V%pwsxVzSJy}}FC8zb)Ir9`R zuiUH!;UaoWRB%n6Z(mJ2Q^bfD&$nl$)MURG{hVLP*Xz7H_Y3O#`A#&udMour4NGYv zUa(b|uwmw0fL?ceCO<7YFVb$__&abAzjO4~E4sfGvKABsM_Oe89U?`lOhG`TEf&04 z6bLu&iQo+W0tkQHS7N-CtrD$ZC|j;jsbmqj^OH{03Z3*$>qiTEIn{sdhCJLUPqr%< zZzjl!gDcf%26+RJt-3?nBBTyzM}JS z7e83+t<>oVPlaOo6f#PVjK7Ci!EKI8H&0Iczf6Qk5x*ll8&@Y%zw!)089{u6s`V$p z){5laPDw(PNl-qP3SizKfj;h(L?zI#(zQ~@(4eY^ z-c=!|4>G`TbgG@=!3@dODD5I(JSCrf-e{m)o0W*Jw>>1nv>Ec%`B;ruK4$jTVaWnE zV4a}Bl)lzyfH<+`qwQAzi|zWlJfow&h$1vhF^gi!NJwF8WGesZRC8Q3Wr8JXMzGfu?JwYlC)6Ikx{EJp&X>!Lr6&kuPy3W0^=8z_t++*aKPO1B*%Cc}A_r zU*ba^UA;7_C9;FhbTTsu0GSLxzQ)VxXg#Oxv$?|Q#XFTfJq6473A z5(PX-X}=k<;t$RJJQ`jJ3Hjya_^SFQTia+6n7t=2GZ@8LH&f+`7S101(cs7M zv&eSAGTvWGQrD@ifB#|bNb=sx@7Iv|IPrb8pSGyK&2PGuwQsxV^#GG@xO+WWOfBo; z&*F?^CYS?9>L<5(DvRDRSCLCrS!A7jC4UqTz%aW&%MA{~-7{^5(_wMmwA5+Hx08L$Ro-mEM(#~5PK3~s4j zi+>)T3Gemr5=#u5m&j)63^uEGtg+@kE@{5Ns`VnrDqlQwMMV~~$!wNOaH#Vk1`;tt zN9hnaw1G3&KpP%fVe_rcmrg>!3E0AJhHu#$wEN}TuIVegTj8C{^KK1Q_j6Fef#UyY zcY&K5pQU9R5k6>C53GKY_6e6P9!XsVxlu<0D<0x6JVwxq;(>R+0&&*%^Xh?dI12m$ z4Qi__A?%h5*XyFYE47AmHAQ{pdr`E|^`X(`X?WlARX#|0foW#wq{|1wP)r*Q2;nq^ z@sU(&M^n>gY5b~{1oLHRwGfS{M0Hd~gZ2fU-6V}Np1Oehg;5K1TWa{w1FdzN9It)> z;(?r74`=U&)fp!8g>*%vu;F#SW@*G0Fus~#ybWNmu8eQswOjshb;$oX#<;G$Z|A(C z|E`Z~6Q$Q|I?aPH)66tyR@gujo7lvh=oUL@1TGp~P#@s2_A3p#QKQ6Tf;7t?n>prAr^_nzM8OOUzZ z>a%kkP%nePWeF|XvNhu6hjld^tZ@LZna!e^m78|iPnWoKYtHTuhJ|-CJji0)#~Ef$ z-7S#0@?UCdxM|@W`0G1TqXLK+#y_BU?^$>pvdrHN;8|VQJJB-3Of!7-Wr2aBb9Ydq z%c$d8xtzP3gx)kl(W_+?{PF<@Kw~E0FrzcAC!-l-Hn`~6(hJ7d*4fq*LrriojL?s} zX@pRtUb-2~{m2G^Jvl?bGWr++?VSEW`z%-j)1K%v*3#$U$9m+MbXqsnc>OZq!!!GDsrx%U^$&bBo5W@jme4BJ zLBVVhC&NPZbC&UaZkCL9}88jOsr{`5FHY!O*$P?;tTjM_8KU z2w_ANn#&NNqlW9`2klkop8OMx-2mwM7yq*F>J;V zW*7NK?5TV;cW)1Vf!WGG?qqvc5VQ&<&oZCVu+~s@R}hGn^ESY1ZNC<}QZ^GiP_?+b z&D^yCSq7Ai_NJZ-QWU~1_8xEtoB5lMOxTPvLlGKv%o^9W(63=(q=AD_e{YOZXK&3? z!w49_tgI-_1X!`g5svcb@@Dw`-Lxr(-_4#;&H-)rYVezvMKqO6e!hQ#W?$bIVRW9C zZ_oUWc)5RVANn$~Zwx%%&9rBghSG~@6n)GV%Bdk{u%A=_jJP-jayzEj-(Gx8F}B7A zC@xBrW0X)Wfnp6HsNAB4DN2}EA6iU{LYB=^pJag-vT3qQ(V6?rvC{yKgGl7yIk$>^ znoNt3Z%BEcKc2e8?n7JGes%QW?(!oJzIN73sOM^BxXy46cFao(z3o-E&OrphkBOUB6A@}p4 zpSG!h3=<$^50rLnLv}VbXanv99c;@(K{Hot8(k} zl8|5Z<^0;Lr7A^0+oy_jRhJc5VL4$|N(aSe@h~SgpsZAuuH+NphL z(Zdfi!_ANN)RxrQMzs^<6J(<@OBR)Gsm!XqDrkomd97+&*ll5UCE8YH7bH{_?a0`U zY&$gFn?(uN3l~+uZwvZu%LQtzlD-3sF9LXsGhdX3bc}xHYy4|_NdYUXdon|P%uH^b z%*tUHdow)?_nvs)NHbp~wAptZuY&nJq|1QuRxzbohR#1nC%E>V97NG{TSo+r-WWPFbHw$9q>U#ZtTUnK zbwj^lT!9Y;`6C-CB*s4xAZq3y_!yBHN1%-Id9O>IsywObWH*a*@|-dqZ#ue8WFg2o z16+S_m0>4==3`IhUb%)#R3Ab${OX38Gqxv*0$W8j>H4mKjif}gQuUzEmO*tWIzA8n zow}IqS39CxfFGE{-Y2puN1?0xv61R9>4eRwiWNu9Ok;VZqC;!Jk>wWaZAV|A-p2eI z=Kf;q6eEbo%EnuW4K77rG8&7cEcxJpNVFN|$}{@OrQ2gRTD{BBA+zKjPC7bi_}S?q zFm1InC5cuhi8L!yEA>us4J^2LtC-^7?LVs(#V^-0w`!^YRRWIB#j1yOx z-4U#0{uroeYI@X?jCWYYCRrtFjrob~iNNgJGIx#^s5Z%R3PWJq4Q4%wBYiDN&Fq^3 z#U^u?$&NK{6Q`1#C5{xAnZ4O)E>S5M!u7@U?Lntgh8ZEcG9$2R3lYJJh@Vz4b&>hv zqBM&>d|6u^-vD?`k7ja3xhR z$qfpSemqh0zV4xI^5ZT#1PDU70*zsfpL=7<>ZI13BX+Y_p&`tDJl$q}az~(D?{U+y zM|KmtzK)B;i?o2Z{7CFKl4%&EY|%Z#5j$ZIWn4oF1Q2PXR^5Q~HE+8pH%okFWajVK z`P9%gqB`q)AyTc{%(UTS6%5IcL zFH@|*gap}1;0CUGDETr3q7$VKNV5HeXn<`id?Hgm6RE1crq#3^r)fHd>ojaOv7va{ zbgz{uy%Nh#zayC3y1p`bCu7@96g~SI)9yfC%FvG;vKsZX zpmYAnC19r5>Ap6jlPJSQzw zY5pKggjz^~6SCZ6X8tsP95$VaPh$3h0q3*$n`)i66C>4A$X8USz&X7L2C7dR?=@|6 z5x@h0TvP&^Z8+lB)kwqx816|lgi1OVB`%a3y_xdPOrJ zOee67^?B`pK3$R;$xiObY(;zw*YOlW=-G|2=?5l@FWJWvs-pi!WzERdwD(K&p2~|) z^-heGAw6%PYKsV~Y8-cz-2|o(gC%A?`6Ub%W@Hm~P0PD;E{*YG4^cx6jx)B3ml#$6)_1 zJ2#+aF!V@UqZkHGLX(LX6oO}W>^x6U_JmoK(~&$&xLb|7BN_vSbjfF)7&Z1r5)y)$ z92v%*OQuXa+A-iYhqV~7QQ5JagZk|mP%o~uNMQfNoKhGdSdY{ftX)8lU0L&L5`7|j z8$G!SfA_Kx9MpM9D`koE*iL6fOc!AZ3e8C4lD=*XzT(rvPiM1ni<6dPR!l z_HVopT=a#pvWtEy#f2^BtKIIy;!795laDV(5WhS=>wB*Cv};B3Uz|XCFt$)gsTQAj z0I%8L;#gxsLnxE+F!mG{_vXRO>IX0H(rZWGTiLH4jc*POKP|v;(kITE3G`aLC z$%?aeK#OGGjYRKrN+x$-0Z82&Zlz$$$$Nm*bt1oRxh4ISAi~<;S?p8AgE-*Nw(-}^ zqodMTtn2$fgM+z7#HL?2so`rabq^O>#t}eaMNQ7jUpXSu_jL+` znvo(a#S#_nD5Pig!~s#Z9)L+vkt2n-XCMjKNm{MKbC9w%3Hl$^$MJfZV1=Iyho3|b zPF_lfp8+QUdNT>ng*?tvdWea~PpXjF6G7}>gd;0TR z-Ql|#-nBdTMEb+ILuR(~<{_SayK{%L;+fDyp%k>N9Kb;y{vo~d1PF*9JlenyFhO8n z1%b?|1z&MJ@>#Y~ogqkR>V}39CxxoYTMUl2N#2)kPKifeJuW@csHzr@w;~C3ZSjsg z6?ak`#ry6=-QX<(GZfnW9$?UN=XF$-?yRUTxK6H_u5kW*%I3TZ$*$WIn==E%ddASZ zw90KsR3arKO=J*I22~z(#AHMhDsB3UFy#448QVi|Z!jw-RALM$bgZtHoL<$KewuB) zG^1@b7w1(g=6}@%J>fDlD`4a?6=Me-kV8gK66|4 z%4A-4_#SVzU)Ah+aql8OPmv8buCOEXovYdM12(C)F!r%Ex_R5s1_aj;LiDa{>YB>S zd)wHD5tI1sw-0rSfZIw9;inT%MEQzFW{o6tkKTK*T!gs>7qt;GC(@TxWI?k&9eFcv zt98GTM?YxBc1tncJ@G9Vc4`KS)EzQ*H}UVs^296KARS_?ALl!As9Eag7-Ut_*Db+b z=Ni<$%D(S|;s3Hhrmyrhi(lw}2;cC;xle|7$?Y3)$hNv ztQLfoOp)t&7XqRL_vm(Tg;(*;Z&QCqcFXw*#f1fSXua6ANS?94k;&ZBrDJTIw5q)@ zK%cReBV)UzOXV3yyR+$T53`;X=;cykzF)U3On!Iz$t z#3t7HY@MI~;!Phm)#qg8MSFIqY85kb=sh&vKzHGD2wH>ATCJm|!2D8#3| z;3J{t!9T?JZF-p}sMBG&*{%a?Pv*Lopp}IC5-60~&%PevG7O&pSy#ZSeWrOalYE)@ zg#BXa*$C6+xa{Rv-P&cK=c6@rTk#eGdVQtVOTw{+AzX%^0)82>Zi6>~fE0T?8@%oS zHbBY0aM8(uIk3Hp=z53RN#A^vTuq@#HEg={CT-RIsH0z|5kFsOSfH|P#{v*)bn06o=&o?J?Su=4{kr72( zYHX|8R6|4mIxFZua7Q5=WZNZdh8qL!OX8sBJE3aAuY zq~_GjcEUhX%48xgg>An@B1~R(4=&p>i^teOn+ex>DZalK&GLREx94pBz5dz7&lL-_elu^MbbjXScJkQmoGg?UiXOU> zt=SMOy&Pod-LddqZh3EZ$Zmj;>gb14?b;R-PYQ-MW#6WU76-#-1*d;%G`w&zn=}}^ zDL-R&qR`-0?=_Vdk=PlL9to6M{n;+^vl&DLF<#!xNX5|{W5LAfS@S^qI>UDD8_ySP z1N~Sz+jp)-MR`V3->sHzyDelbv@e&EiW5i|7{Ri@7c`ZItv0S<__!GUwa8RtvUrBiOAL=%+C*t+b!?fO z3a?oTZlcH@{K|D3DL@ToQMLz^!;jjLqtY$Ri4C)}kA2Y|^JiQ;5)0u*eg~0dPb;B+ zutbCpl9$rFsV|PKieKG_QrM&%3sIg$H|n4;!VcP0zYL!|6+&VXlx-L(+sot}zaN_z ztE5s@^6`32w*iE(Xk_1`xYczAMeU^RTfiK>VTRaYB$x5icqSKVAIsQnZKV>CrI|x1 zI6BGrT;y3~VAX^T(>6tioOexm!QfqnO+(s3*`iR3^ahBn2Q{u)d~xh0J3a!CqZG$} zOIeGWOo!vRV?LAW7f`-8ab>$uc9k(SzJf*+<|Y5sj8x0}VMkxW;V+v$J`#{fm@fK>E?W)ZaybgwVb_7q#b~m>%czmyi=u8+na$?Y*b(M(yxr38I*wt(Gex7ugi6n{s;Mx!N~;2V+J%Ca<-J$zADw$}-Vk%kg`fke?FFNY0#o$MUSMTIP&v+z>2C|(h`pA=nmAI;5bti9420F! zne@i4vVOY$*~};~eI_weg?2ckDjFl#XD7${{&k$@Z&8>f8?26e$F@soIdHF@0+qdNO6t*e5 zcoD09Y;#-gOQm6QgCBXzQ^gbU-`Dw8)j|jgrObl!kB3N}E&S`I6N=*hX$*Z9frh$w zhkt9)Ma&$2FW-9vNCg3m*#|5zU^1l?EO-ykQ2^1~_a9dqL52S~F%W3@pGBNraT)J_ zHp@o>67Rls-<^t*lp}{b1i_4dpKJvtad@Yn5we#8VYz0hQ<0vFi z>yNzqXeqGj;mPz)JyhZ;Y;Hw@Uuw@h#d#@X#Ld>ME)Qf()leXKT|g zOkngWZOVP@TxGYK%KhJz449D}m0?1godyK@$lHXIN>P5c-B)%f>|l6uTxMQi$^%=( zbIwe4>l`{=Cw~3lo;97R&G|`Bb;>-MB_@C z4;;YG(eu(jI860~)q3ostVKXE|G_jMT5GOQpLfcIYzkU58O#IHqo{R^HAuHk_a3Aw zwQ1Ru3o1IHCc63gzcdnrQoLhHKs^$Y&?4eaWqHMd;_8Cl8Ynl=d?y>1K;m(Un#(j~ zS3^+h(FsQC8=0~zjoj(4K~X1iIf~R}_#~U!YA`7&=#Z^PLeYa!(5rGJsq?VBC6np? z2UY^V;@7B$50jY(`1_sbXd#qLxUB+?O9bb_wIaP&!NU>KiA`ZD#kJl^fF5rNs%H^4 zvIpBTt}ak}lDm@}j3AOeYpxzkAivS5B%OG|M;4NT(dv%9;|N(o6(iwFcM2V--SUFg zT~Q7w7N0+|M2l*1r#1clKA>!?kxw65!OS;;WS(F~Iqw^Dq#%fPQK@&CcO%)KX@3ao zAt{OKnsSG}c&vRw@C{JCl=Gm3X%TXF7<-BhAEa->dJG%an135;m{LQc#!Gov!PKmO z3xZK@89@t#S~5noAKM7;liK7&eME*euA{h@u*K%w*6O_i`y<9$G~m1*#CnytGM1x! zRtd!%Znddc^}9O;Db+C^lSst9K2MaJmuD%iYpz-2j*^s|Fo`^sTGmw0aho(F#^G_^ zA^suycnDrcxwv`3`?|3MeMf;N#SA52zC{KTmIB4GbA?d?=wN#0E^X4?6t` zl6jeyLF&R3Z4;hC|R0B zDCvB$9#P4w=CfsNdPgHKZyaP1wKU30VRbgV)o9+DYhahWU_Pxm1Mi>Tny#W=x6}l= zfW9OoC5t{Vc&`wEGc^aroku%3-k~tU_gd=N9|teVv8_LDi19kcvcmRy-khvSz%AzdseZp zl~+ab!9d?v>Dx)vn7;9KL0M@J({8x>>|(XX+L^bDQ_S&V4gDo?vtYh%KAbl~sLkOP zJvTK<|Ew^bBC<&ZVaB$qqs@AiN?k9K?^-Auve`ng8(vV+$c=_>)OVc$Mx#y-2Ck0~ zxnA@EbO8A9V;~7i%H;ie2Ncsxu$h_^A$PP@wbat7NwUSuPsktzF)G zil87hxtn?y)2}M{-VLz}QE_Wm;2)lgnO$3xMr6JL^Wmf!-D-r`N7>h_p>c3&`o%sv z>Jiv&lA9|@Hw(%AzFiPGZ|CCh;c*3lU2nHCE?7^mvI(gyPi9B0(KR-KUh`T_sJ~xn z8>#DuNhDRo{~^D6cv2^>89lR1cX3&nMLFe4$rzQu{80E`N30p|a&;`XS}%shArPqQ zQZM8LN5%?u_N#IxlxBL4`ay+hmyW52S#sv=Dh*zRbwaSuh~5&pdkRCr7tFLdgHl_m ze&aPbxh$yZe9gIzx~QdT9F7@~I%@Gva7QiFnJx^F8pjl4iH<^VYJ4_quIjyrHD4~b z+nP8ijdAT%T}WW=S7cJNtYOL5@@<^#)&-c2^s+pKC-k5S2W)jd_U0=Iwbp?~e2VxN zjhm@R@QpbGS~aj?F)IkTtzqStFtyay=}E|;owFy)H^gM)i*t6z7Sx~8+#A?dmKQI# z8Bmj9hF?qP2;Mf*R+*>{6}^MIwwvoZQNB+-6gTrV28NxB9D1ww>8#;S(qy8fMXEW& z6EcZLzVgKtoYXEdqsp}h3$#)Wi z*VR!9q;=l=iQpD0XaFTJASh7iw+& z+YIsc;;nD0%~#XOH)#B=x!X$iK2cd5IJQJ$Q_L0*0TpJTz`(0wJ3aN%ha@v&0MdMz zJQV{CxQNp*I8Z^g%O{TZ%32hGJOk&s+)L7KKMcTUlX4im2b zQiTRFHNIYwS6WaRXA&xf1``vi)MoEXC*3(uE{F7blydiYbyBJAa7%HD36x z@5Hyri#Q%dq3gbORt)aX5yBHO<%j;VU;P+wfg`<|Rc5%{M>yCRLF7hUgv+GdWXQ2u zj_At$uTzaNvnW3LT`P^8l%vR|$fBc|(MW|xB9m|Tcx6g-Th=)BBEkRKgF?qO*fnyz z2Y&#|wnf5x8+U9U#&YNjyglt|gC2g?bc^?teP}m8`X=RT0f2=yo!am*1BJ{%76F+J zm~Ql0k{aN3g@y5Fsmlbn@p**LVv?hq79ZoQ8UfvI|1ECi!faohTP1*>n$XBko@NK4 z2Veq*4-D)}fCo?q3?3K|V3cxt0nn}LsHs1wqGtHnxVZHHQ8=zp86``#hb5Vi9F82K z8jF9mk}dVwr;h1U6&)3J4e{fR+<07GSeg^fG3Vmf%#}?|#l%=x^sOB9)NJ4?K>h>f z!;n-`NxjkdZR7LCBc_E6qxM1*-uVP?*>g=e^$AY?P4B9_sj}tzcXR3L4+Y2SJJ|(s zzMIO833y`$yPBpxH&hq$yy79%?rY;+I2Tq)fwyq5(`fws@Q)#gOjOR^GIFfWvEC+w z?V)@}4v)A6DywrIS->93cjWMhmvy^Fq**Ku`VGzZ6?gf?O^N7hqBDeTOuI~hIg5}Q zHE-k!Sw!K^K7N$cO~$Phl+LcoHHrsD8gx`{c5;!z1prB;3kqSa=^oo@d{jG-TP}6x z<+Pg4K$sWpSfAtnC!Hn96n$gM74}s-*o(xWmAi0SLT~#I6oj)%q6N9y_Yvo2HY`NQ z@=!q*5!-wRf-O{8GhnVly-l+a{~RYt>ur-Rjs}Z3?2!%QvG`zZ;BW$9w(DV!CumYh zVcAAcux=xmu!vl#6^#B%2n&F3y$7N-dI#~*%DoN1)q397!v6PN2wo^QG;k$j`z$!c z5!>cL!j0;u#I7_bjicmq;d&VHV)B%@Q1lP%(~my3Feogz-6OyX*h7gqxe_W5l`w$jw&=u#AjspE_d4E4VEsyo4pN%!W() z%Kk)m{m=pBE6JKv;R-5ADHZ1>Ro%^1D13AmJ&;W8@gg18BgQ9mAk?2Q^b2V~WC57! z*ymN*8)8BZ+|Oekmv97Y6O9pifoxnSEH}D!oj_}@M+ERLVDcvzT!hfb#P=~fSDy`X ze!tKp!}TyTWWWxk9I?4kF&(t?dMqFa=dIB%Yn5C zY8sHr*<6C~^gh*9dNFtLM+2TD&qk1@!TA zf^gv^xvQr>I`@;4b1NsO9e(6Ilt7&ru$VHNat7+yfSZT1;(oF+Zetal5V?de!;RA< zGFjZ2O(zLhKYyrB+jjn5qtdolyyK8=dCarMN-aRNyu9{wm9P}fMw|6>}_MU zL;0$X0+JLj;`Pk}rYYh>v?Q8G(C1+Udc|r+qF*{K#%YNiCEkkIi_Ab&^D+X19>oWP z(Jhat#J{h^5!6*jJC|ZLbGD)TY%xM3NFHKCM&k4$v(RX4)mcsi5=P(!&nt_#5sj=& za9CV&%-yg>EhKV6%e&%OufNwKx#+03Hof?7YOcf$?|{csCFp0)(H#RX;U|zA!cm5kv4m z3fU0EvF3dTdCvIbg?iGgC0YPdnaXLnKXz^zkEov zZ(#ip#yM{Db>%;z7%x=2gbDt3=JozJwEx8IGrD81FoXeBBTJtsK*J@c~ zCe3E*Y>hXR-?*td->~{T+wlh1k583mn^K!)8)|B8C?~Z+f6m{+`DTgxgd}-F;y3Z1 zO46q0iDnH>Gp^sPTEpr#Rg$LEM2BvtFYunINo=o-r4Yo^I#v+TM7Dk=@`H{GS-fOc zFH`+kz1JutjguLX#P^QpH;oAGHlt9b4r&69_bT<;X?q=P#m>AC=(Y2>zdcag{qpU8 z?_lwj9)X{)B(PjEiStPBRwy;tm+&S9Hc)oI-t|0E3p*HlSgFa1di3`4=*W?WEjFpL z+!e~tf~H2LC&vp?k&R@+P@qIWMu*^)$f|@&=^m7o>TM-fdUCwLhebCNCUiGUJam728teXLpCt_ zW;=G6+OW@&`$_D74qnx%xu^|72hzqONmqtsaOdHfv&ti0EtW}NYnu+j_-mNIjuKY^X+syQ>*G!~!Eo|Fj#R_qE?`oxlFWdq z`(&2Eu^aH{%O#^bU{bG}|3Lng5g^!x!BQd4G=S5^cyn2U>fCvc=a2u?_iqgBl;C}G zss{OBlmav{_}#M8+~9n|fK3njohu^wObZ1#;ZO9%BB9aN-Fru?BHS}uEtj4S9r58V>cZ9ZltszH4KpV?u81p%26}Dv*hyonTOG2c zEdEc}1}SeGo;v4@JL9vCJ2GnR)hrb?mFJz|A={dnv?i@H6Iz+PJA3SiRBCL(HaJHcC()%z>oV;o)ZOdd+Ayu?FIsFqM zE-M(fqJCNPswbBfuQ0N;%eHumVVPH9r7_?X{`fko7O#|R&}xy$Y>PjMA5IP%%dA=o)#)$SR!S5p0sG_HZ*alZ9`aV3eE zvphPOkr2CgUUoac;@JZ^t;;sq@WnT+dbNqg0LpGmUmURr|0jHb8f@$rv6C`Y^&-MW zRp>O_6hyxEH;Wf$gqrpH!b@L?vFumtm3WPw7A&tew^y|Gf4wVIHFa1JDY+FV#!|=9 zR}^D$l-xBOyN`3f5F62&Q0WE=jNt5v*Y^@}J5Kzfuocsi$vFmL&idOwB#fZ&XV;^0EtZ-KG- z^n;6xi=vR&el%M7iCg_CmMXdto2-Qz70sr9fK;mb?T@u~>K*aaP{ZCX92vvk<~?`& z=3TlI--SD=CtZ)-5T_paWioysmM~r3?Bc}3*+n(vSA)uUP@@cjw80hx({L-F%Kxl? zBJ?_c{q^cAlAc-I)Af{#pwp`qHvVo5OyAB02^~3~)(`sLH8R9210J1xLlhIbjn zL9*qRq8c^O{hw}@Oj&u_yh%aqjH&5aAz{qa>s2waDJ~>FMWC2OwWffDsUh(x`t;*> z3G8X>rVttQFgXgnj+isQ0@?}PbQXTknpNsxqV7WVkyk})k>BhajgrF;-LGV@Za9z< zz-B{$S`rMLyFa+yqFtHpn7Z#|gVgh@YYG9pxeyZ19!(QPh9fYsBcbM_t1v43sgt78 zGa_H8(i*6h4?V*{h>6Tfum*|9Kc`}L;9R174l5VTfKWls-O`6Wttj`)sK3(#-9e%_ zUvbJ$LJW#?9G67AQce+C?<0|yAO)eGdnqT-0fF_jrnwL{{X#n9r37`nkmaVl*rkS- z>qhV7Z7X7=f8MOH3;AGpVK2%iN>YH5<27K#7#NTWA<|(M++L@%CjRY=%O z5;?zs+mGMfi1aLjIM!=iZ)#O1#6mdnT)xraEJDg1qJhE$fwwFTR3vuI{s$Tpw&up6qP_rZNC6AOo_Qt(i!t6$;Ny|y!GQ@PMmolK48+;SYhqPn4i zeJ#)2=`&4bLz0bnJ^s*7X$+n~RGbTsRo4oRv%Q_HiY-a7G?7b2ChRy&c_ zdiS?k{5fON=VpULGmk~Tllg@zrYg$(SCyZ)fPIH29%M?4FPCzVVVEfpp+=!ICRGlV zt%U#nt)5s;pd6uVKX~sKkK&)d@VyqDh*UgRjrj5?OV|8}-sh@@Q+-A?S?$|*tCU-! zNT(f-R81r5#&(9d4gCeb}DQgSI*I>g8V;$uOc3d-z3&psG$9yKarf_Y=?fVw# zOBZvZT~?`nN;OlRV*y=~Uc?3D8f;+ciaE+tQX8&v;Tw`hDy~owKjyihj7Yyj zPhcEMz=>JooDD?NulI-k^q==>1>mX6v#}04c)tRuC%Jj?3plG<5D*ydkl#nW2nabP%E5@a6wG+4uU-x$ zJK4O9mH39}G%t&&qGUiQ{v}tV+guu}lv9Pk5zi&Um-v2q?VxJW28@rplO$`1LgmA5 z)Oia6PZ+s7*ONxDsM3)hB;Pq5W*q9V5qGSC>MYM)d`dWDo+3b ze?LGuH}M3qlU-9oe10YXfE!lTO_awsOdmH48A%3x0kvp_GmoY$7fxin7IquXZXrMO z(m(fMqcj49fKjDH5VjY*^XoCbRmD9Gvg!$Pi!xAH%DGksI|e&CJ5-1miV*z0Meld6 z(Wj@}s;pw(($eYjBx}gfP^t`#KDUVl)l9H)DXmW3a?3*^8W1@JIMpoGHAbDH$#Wq|ZQJTq1{B!Y@_+cwyzRt4PSjv5A- zob#S$mrC)oJwVZWH1o~fve(wa!dGMWs$xCqH)4W}XAz{byb%ukQ{M8C)|5tZ9`#FV zn>XfhoRb%oCV?m2GW!O(ZK~W6;cr9({!WC18DHs77VgMMa=|fnH+!OMk2ph%pVh-M z{+Nigaat(qUfS$y#_0olpYNo4jeaQaQAQmMx|JzU+%194GA1O?7??&XwI7;wHLv?p zhzrYUbSsVZII>Y6f<#`&B@K2U%nojvx+7qXK2{n7nE(6DStSu5-BfjK#XXPCd z>ID(Dj=P9xe3DX;)`5oF6X@io}+tPrmfNAd5I@c)Ft8gg1Q3zoa zD0W_G-OXwQv3D%@loFGh)e4wG zHqlA^jIJ*@ANxYo_ynaVbf$i71p`8@?!08Wtx(r=ey$+rlXhgo>T{BdX?;s0;EYIC z(Sba=#{&VQ1#zQLnB>vfT0;L#fx4G-Eb>rspR@^+f?AbNm{^#?M|uQie4E0QUs|H) zV}|IFV2&A+pA`EnpTrK#=c0Jn)OeUr#QCI%)V!PRq(7c~9Xm|6rua~7pL8Y(a>#CV zxAzRLVV$f&An=2tU#pS1Ymm%P&n~e$n0jh@JZ&zTi_;ddkQoCLO8WC5KW%Z^;;e=4 z6_xods0vC_$W~RxLUoQpm4~Yu$Yrr+7+heNg(9P3 zdnIvPzK<*v85G+qcB^nmrznmv?rqFkNuTsccZBXXjYJfUtbT@*Myih8NtuykYI6U; z%H3tiBlOGimKj;nXEE8c*qtGxC~9k$^LlSZsf^g?No>4 z;lf)YIV=rLEym^~&q|h`ig65$w23N(8oND1EBvcPL)da;ElBa5*Hc{HggFDMX`G?O zP95nLrzSJgBGd#;RuUC~OaDsvWI-UtyMpk6BbPJLM{kOODqXjohnuEZK0UcRKrJFL zo*WI{|4664d{S_u4o}jlXSRFc1TZRN2HPA=i6nITea^G1{~k3M#sbUduyEA^X4c|v zG3<;Tz_{z7M_U+{%+L$SvpWub>R}Gbpwvl(`t%qiTtm|Aj@?l8`3Ew4tL~@{N`*Vb zy=vl(_i(IX@Q378`)pUgcRqA{T*Hw;fvL52FJ{~>Pbct5~>EtIuK`1Ef5NfKj4)KNx&UPCV+F^tvh(})lNfoPc1H| z!N${l|BEJTzz~Jl=RNf3UxWW(&E5tM>)fxnI{>IPFh>P@MG`91UV_9Acb)E_@~kN^ zq_MVV4?p(8?wBOk!5gT&?O^n>_Jkq*o9NpY=Jzh*i_hb^E+!}cT}esV7hAt!Iyu>j z90HZ6v@8nh<^qtNejY7Czdtrg{Za8|oT*31e<~>++Yq+WEe0Uoc0Fm+RhHE0tFHfV z^!!-|`c=EVS*Q+$1H$aMXx~5Fq*ZhG0#{b4N3UXGOiYnmD*PIGxVzpOZs*n%DRAE9 z(DHu$7ap8-9=+pmgOZ1C;6csHQEfa^`zqg7NJW-lgDJKLQrNQQS?Dj3SF|Q%<=qn= zj(o$lc9#Y;p+fqJRzV^CeqMkI6*a%{e7|VNq_BnXE}1GXgb*n~3>EHJ!KgBX!@(5N zP~poygt<88@RuOUJmGs4OLQseXMqd+!|pmp@!McxrH68wN~&(@bI_jI~jfpuSkF=Bn6;wU^3mpIFR@SKpyn+=`Jlz~1tHR^C!<_>2r z57dXqrM{Klxg!%r@;k}F&Bsr*?ar^{6DQ6-&=?{|hLAa|w<8C^;YQx@#6nuI1F#qU zZ|+DBGiVxhFYi_=tw9`-PU`*)vLhn^Nu6X$X4reIh|p~qNJ z>;soWe+EDt{@v7N8}8=^YJ(&<09ykeCIn1_|7i<)2A<>;!^#gn1{R%6!YxrMelb3A zftwAi#t7`n0KN0q5Q$Cy@o@BP(i>yRmhH=Dj0}$@bq}-YD^U9$bH&`3cJ%t*Rd{n) zhB=t?*#KbxCB8`6`}~egjeS%9IneOlA-jL^F90`hAN4s?X(!tI8VpAcqh${0nm&lmImVf}aQu!N&u0pzYP9ygHot_%u!3UNTM{;{R)+e$i z-1GP?Yz_J|4*H$oNam&-NE?eQom_@+Z#D`9V$3MS^J`KKtXO=u=>QzueRc<+(xCVe zlt>NPVF#d@Pq1|Td0&iFE|DEJM$hM;^qwPUrE1V<#^T@od{MAhl7;*K5x(JB>$ z3qhm99ZCpEQYcpPfhK#_5}~3qpHis3#U@cY%J6`@M#_H>6w;58~FxVSfk z@Ea27t2?>V6OyDhem{ex_Z!_V`kPIPaYx2om6mY!QS#|zsiEnOZU1`9CWwrJ|~uc!=G22zV}C zDat^Shg_`3=MY0%lp#a1l&}P@T%_StoG*p+m1513U zMHmj^EP3dc^;ie?xK{eGE$4(mSuF24p?!V4wrF(f}xy2s8gr(K&IA8o`{`m zK}Z}=9uZg*D+)aN26{lh&ef~$Hf)+VgF|P&zHwD4L-a($fdMg6xQ+rYDWfk1AY(`( z#!wNP<{&iHRppRSE)b~b_B(p!Wezu?uZK`&V1%Ll zKp1Hz)-a8kYB2T_usB8a2_bX3rrGxjkj6177c7cZn};rgR;?=&d+g~Y1IMSd7u@iL z5rMK^$5c?k{}Q7V&LM4wLFe>XF~b2w#6TaccFS7iO&Pv{6GJ3?A^4ZHf>8RYb1F;K zL6<;=lzov(W?JQmY1A2YRQL!S1)r>=#3MC$;*O3+F?u?;@Yrg8PPYz#D|e8&I@fF_~LC3T0{~sh`VIOyZ)>^~pFCVH@C(fWxZIlLi!tJ%>v4>)#07yRYNi@t;W)YCt@CS ze)8b|57-iEPl^}0jcF`L?FK~`3WQP~uWK$S0Zs4}0vYR)-6)|0)Lz?y_{0hDVpUZp zWqYkd&+?YyK~D+JaU?Pwr33RNlAc+l_haz6#+;fS@AcuVMFUW~+#whaWX!y*|8cK%x{&2J9Glt?THlE>U>jtIzu15+m`e z*8|TYJdQ9MlLZf-dc;x2&vJ>_E8GGQ&U+mad08JL=SS+|_>|Y-d48_s&EDQmSzp9= z^VNIy7shqZ8~Ey9Q6AlP{8>IBSRIp|)JraDjdN}{6+PbDoKzo*RpNw^r{3phxf8~J zs9Ky9Wk$0iP9B{R+@uz zjw3!D-{8I`v- zdFAr^g$qttb&9#D72J|5H(Ct?c=!_oyxkeIyb;!xjH$I@iuX1kEZFqaJnNixK62)o z=7=+MqIOtS@Gw_^Fb42Rk>>*VbYPCB(Qzi5SDec?xuk&^6u^Nwa=^nw#-N9H^$AZ2 z^zl)V{|12Kw}Sg*>yv(P9swLK?fl+7m;Ls>ntyAX{H5=*(jx@yymW$106yQV=I?f5 z3!$L;CVhw`C7EvXZb|KjqnqVtp`UVv-%ejj9jWyZSf61-Xg^RTh}k-K>Ktq~nl7mR z``2~H9baXQW{j^90p?r}7ew>AyVzX(uxr^WYnn0DUyeF_)zD#kc-`p!a-?Zm)IiD~ zqG(#F&dd4vKXQl&S*^WkKPxeIX)C@you5o1B9+&rq z+RBz)JGMQhD+_Ve)(JUR7klR4#1&&b)ymZEx5cl~jW7H9_*1Y*%w+cnl!jBgUO z&N8T;#TK`UV2WAiPs+` zXmFF}=(S>vN5Wd1`c!PH7#*%lC@3du8g(jba*gsza)41Cz!Xn}C~!&-AF$JX*>D?4 zz^HtIa!Tv={7bUHTozc%$(H#?vO4{;P7Yk+mzs4)8x=Mv%;f?t4uR}k#rRa0(zNp! ztFbM@8Gf_Gj&h-p2JvdbBn{EDzY<8lUbV-eMV=NLG*@kZcH&OY`t+noZ8A6+GNjk! z6{=qY;~0j^N1EhnGG94j(1r)-#*wD0>G6?NwU%MWM{M>*=LXz=kGj~*)vW1ODE#x$ zU(}#WtGHk8GE6*+Yqn?O^E98Wr3fXhO+U-SmeAl~0gvg{Dt%nXRjA{db2Rc+>TB9{ zD?9Oz1?Gqb_UfVdtuhuBD@i4j0J)@uKl)R+GGP?0O6Zj$I1X$10D)c6P~Cp99;{d%0+;uN_M>W@1cU3hGa3kk!79&UyuH%fEX2i{*#K*AYZ47BL?~IBT^! z#>-of6{4MFCJAvov{bP5C3Sv4&P%JIz8xS@OQ}mR^uH3+A)Q(r7DmGBPAAR1Lx^qx za?I1AY6K=wY;o)=V@%Gd7a<3|z>B44<;Ahn{NnN%Yve$@$nq0i41n$8$ZG^)h+O{m zU27=kUb$d=;W&Gfg37>o`A)lQM1`v}MDRPGd-*^drXk=-vVdZ=U`0Yp;PTFk5%g7hJ=OtlAG*WN+FvAq=of|17NP3m*WhDu|))c4Mgc#5Ge_H!p z+qi6El*MQ|t2im}>2l|uuvhhLa#TIR$@FH4< zHB9cys&iB&gvM6yc3xShXY765gOHHObe=a@f`3rJj|6AWMzQwNgCeil-XiS=#57y( z6Csk$j8Lg8)8=5eF=f+XR5nHhIL(T5F9A3RG=eUu(H%i38Y={|sLL!lI%z9l-fi9J zqs3NV|1{CEGu9#Z^7ESw=UXlr(VP0zKBU+|`_ztd#`edMtHd)!4CDX?m)R)8-Y5r) zV7od$Wa)JNL(7pP$;kIiWpG;DLQ|=nqSR)e#CYGcE6L=y{jYTDO%Q+xMUc4|rnOfV zL^yU9{=pk*AtWac^_$ch@x4 z)dbvAW?@jZfhp&4=>SD$P0iSK(+pcFa}U;re@>Cqx3~0A^6u>808KRP!_#ccP<{7+ zAM(o#S@#1L{rw#eT=dTw`fJ}of*VK3xlgI>M%{e^PW5)bP^)6w>G?b3B}e`nu!@?Bdb)bcFs)q(J|PLzEwZ<*qjs9> zT89MIoh8brwECYBOvGN}GxAfTRmz*FqR zCZ4Bg@jkTLu2Iayu=ZC7f9c8F()AxL44=5n!Q9_duX$@+lPxm%cTM!RRZ~L#$`#I1 zTt`+N+i1bElq$sz3;oSK;VuzdA~RUT_ZBqcXZeK3d(@31EuCfIXG3l|*vI`wfOkz; zCyQGg1uoW-_4SQdr8*VAXi8jSNf)pip1J75dbYy$aB-sKv!YGFZyjqciYLW(dpgLg zya?;w<28|;@+g~RR9WNEMQMa=Z_cQ&RWiyk993?rHRcjg)ppLSxi~KQ)5Hep%Wxg5 zUpy(c?-xWaz_k!3Q|BY|s%&LRLoZ2laz9Vo@wsc7Vx5fl>Jq zeE0GRJ}aPNUt7u+e16Kalef#aW)y-YOteds=(9U!8W$Ae9lzVC8_sW zCANr-1E0Uk0(;XxB4&n<6dViL15Tut0|D^vjTA*Jqu-(pzE>BS39AmYV%C{!IWqzM z2TclEm2NW>kBQ*2!Afkghiwez4coCERMmQb?_KD1qML$gZ_%=oGr4v z`L+$1EkwjbkqF$x?;j+d7A3BI(~allGmu0&5O%>y1@%d`48uj!jpc+rP)c=R4_~3j z8Pqpf#`o&H-L$NA#F7>8IL(x!N;oZru0RF^ zoGOA=v$xcWkrAwP?~7n2Ub-y_tiOU`iUX3Muq0X+0a)TILs<4QwUIIQ0vrl9K2gVR&P$91hW0C}JjfKf3(hmlU(OPqAt#3$2ct1a|5s{zW*}?X6`VRg@i+>@Jd(C<_2%zb;hkz(wT|FPDTN$Dk zA~Yhd$mor@+M!KfG*5d;))~@odA3bKgs=1)cDfy+$NtFAG=sy*UyrTE=CdCE8i`oG ztnj+p{nxbC!TqoYrY&jvQH-E(&v5a#D~=9@7cD&bWnBL~hn=O`kT5s1E;&r(=;zay z$~9A2Dk&s>6X zEq(myMXM-%y+tzp=9FiBhcf5~@^5Mh^sN~K^0O=RMQ_k~-Ttr&P27t^o4QVz>+`9^ zT1+&Rh7#{wX{|}ektD=IG-9_JU5~r{H#dVfh{cre%rE)JL_$oepL3ukW>PtNMA8?n zfj;aw>e=Th4)eBfc`@cP^t(FG1k1803*PjML*WU9?V1P~fq-H6G)IOk?2 z&d3MMa^F}l&(D{6O*r@Gv)K0$coOMDfc4eEY4KQm9C?z)T=ZhN-<8I^#E4nRdlKZ~Kxk!Up&MHT=XRj-ZO z0l>4rRxrE&ois>OXj>M>upFDwm0+SF%%iRI|-5f}Ml+<1Tv>^>T*n zkz1S^?=X~wBtR)gZFU3Awu_eH_4@HM2{5jw*i+Yv@8Vv^Dfem{w@oV z|77(~BlN$(sjvG3lg0(tx<*nR{LO|?y)(S>L~68qFMsxgf{k^FKE z&vsp_*0c>=PB-2auSCHESPbuEG$>oc8|8~-ty97~s-R^4BPMUjw z@Hv{zEE$aEO`6VN9FCyVM6l&IJ%CEILo_Ww&N*y1ZE1GheSD$jxL3jUVBWdt48lPr zohFKXP@&mGwkwhuKV!6O!hwwQ9y+^gKWGf?!5WGtFJw9aE8qpVl^py<4Tb0u?;(RN z&rYtqqn`VPTD;U`y>>w8GL4@LhV`Hjgpyt4{giu|D>nmwQal=oxQJl5iP3hIcY??O zpMB)!|E*F+WcYUY-r3j?j^*rixh%8hb>S6Si(@~eWIGoue$dg*v$4kX=aZLyuH?D^MZfj`XHbDCjl5kwa?b?CC-C#HJO~QyA#Yn1h z?V&4%iykjlik~>2D)w-c7v2@fUSUihc~*ZIHjW`=%hCf^{hU>FKsZaGxtnA&+D1-M z?K`XzyUwxYWDV6lW~Mmw3N_dj8n==bXe+U^E}=GSEiu!Dp?RpR=c-d~S~8NWuVSV}r@a=`w$WT>f}*<} zfR4SA{nO*O*Wzg%XIeT}^0yfwUUeI?X*jihd)c5|q3_J$tnjh8q?c=tgv|ep9R*`u zggfaRV>7inoiR3JjRIejf9sh*6-s>N`=F7<#21(_=8||D4J2cq2}(-mys9`mUJ-R} zyMYjWzD6OOr8s{kCwwr}RL_jv;lLvua;?Tvxp>4WP~W+wGz4=+8geC&ITFZ|eG_h3 zDi;DV5$(#@}li8Y?KCKC(JoCub6rJVC>uk2BN&Gvz%KgZW z^I!_1m$Kt|SH>2xWVmyn$*2N5eX(T0^2MdmAZ5)m>un>xCO(01wFTt47ky5gyD@XQ z>oSkfCwQ&oUoPkCDs@TrFY{gZ=!`vULx5e(e1VR`B;P05aPDmuH_Px9i%`94o@ove zOuMSn`q6hvZE0W~8N^A#U?q%#=2>SMS0^&xL{^K4vQ^7}_5yMaW69kE!CE@lJqu};l9!0pD2*qHQz*(Ul~5gWC)UH<(pi013FWz3Fu zi>4YxZ4;t)ph5I{+^+M&ZP8~z$_4DXe0js4B+I*y&2lFixZD|ho`Y^Q3k3dR{C&n~ z;Ya?Pg=KjrN3&r{U`Mg+G{Z=bV%3NSR2|J}POrtIxC%5wzm8(nd=1+@nw6FP?vG;G znGH8SinTyDl=RsLjfc%6;#Y{jSIfx$Wdi0qpB|9YfLci z$Wib(<84qHAtyepm@39q_8IB|ip+^%a%dhH2etQFl7LvC6EM3ftMt*9`Yr{9`kXd9 z)L>#sX+!{6#vea{nj}~(VM2dcFGdj(jdVjwqkJM7sUea}pB8D=_Jy=*NPq5Ys3sFM zCrmr-<6KhILK;`kmr2r2=0IAjMDL+yX9AOD9S{~htH~5p&Fq#76fs$K@N=zqLaLIy z%*A40qnP+=ZMBB|MOnmB2O*ni6}41H?&Ac2dNKVPS$9xKGPEh7o=tL`z;`-8|JqrSN-EGs>kSy>FMXg=ltOdp5jkCYPbp=!p=21KPS>5N=kf9 zB7BA0j<9IjGMP*!lgW~i$C zA0#y;m`_wBhk68?xM-ipbs7*r7D%3vjaDaYAg>`oINBF|Atwwh8x_tFP#k@Bg>DM9 zHBzjrvHX+0WqODF@>srtm)Dogu9TpAkKKU+=t>zC2`==slu!U(u?48JSpVC^Y>PUMB`wYFHMFL*2OHKbvm7f&U!HT6jJD=${S6sCK@y&~Sz3 ztBz+@F|{{LOPLcrtwaiV79$SU<$wh>OQq)6LIu4ZfH!N#zimRHWQ5oqglhXHB2Np? z71GtcfLQ8F67riOP4!)nuG^#agU%k)et(rAlK!*qjecPf33WkKPHl58F=lV7n;ZpQ zFSP_qB^T(5gix4WTR-<aoILIO`l_H;qs^%AbkOWS?X;-o00M)g_Z8`rbykJFFU$8Sf3N%p&+>;t~% zupeua2`)j6zUd^^g{B3|fwH8p8!8PnmqY&8C8Y^%N>)zzhS&$K&|ScFsR}|>r+w3d)K5u>lIc#ON7V4MgV?fiZVWs1TAP>(9W6KN)@ZftjRK9cEhE zcEt-f>{k&>hxNSgRr@D*+ujO=i4YSMBpO9j6bXA3I0)dIcnt*6kh|c|STzre8XCcS z&14$5C>3wDAQ|2UF6zxqRUPH+a zW*nHel7UUBy`YI-0W?5OZ7_>IFmDa0q_tlu|7xbc8)~m95rcn|n>_tjbU5?B;s5Nu0^iEgc9J#Yq>%=CcEC}qGF6neo@vkA-E1^@hGBz_M5V@I zU8(j%J*nmIfDTR+UnC?XK-b9Lp$n#{p-5EKIJxN-zKaL~Yh?m_AvoSrd z-HKvXHDfkghXl^n5O|2><0*2II)AnC7^wppwN=tgro=T* zi$&2Z=qq-hxPf8@h2shPL9U)?6-r69>ghKU_cJsdPg;787+{g)hH_WwMVZ`;xLBVjE94zG2oR5!z zv)e?DAV+veG ztRb_#*#>}&x~0?`2vP=Yy5AvKedczx1`=LnBi1t`0yHVWP)%~$p zcC@&sri-GeBvU%!Wfalz+J**@iw=N|0D(3(Lj!Xa>g@^K@=lT^VxEj1i6X3j^V$9? z2{92GFyTjndnH9COzd!~n6T_Lr$* z9im%&5DzH(9Ry_=++c@zht$Fcfpr95;ELE6ns7q*oxu&)x<(dkw2LAZ_KhhITL}aJ z6VX;%PK1;KV@^@j7~fv>UT`LqfSWIZux5tY$NXDg)fAd;r|Vmuw8WAr3<20TIs>=~Ui z`mt=Mz>Lf>z|=QEJ_D~48T?JdA}a%mpGZw9s~sVg)Fmv{n_QTu1NM}kI5^V+yO6O^ z02$R(k)<# zv>##!bkP|Kez3<>1YE|EdE0thWcuz4#^)!UoDa!-KaVk6@<(>UvSr^NeJKj#220=s zpU+`PF0{T02Y)IJ_g{{qacMS29O5$puC!C)1n07B@4gsT(N9i7qU%>1(TTQOU89H- z>;nMB1|zUjUdRsyjKE$nIWP1#0=wl!4Piim{nk+RfK-SPTmQn*rs?hdvnL#(nwjI)esx-P(84~`GrII)AE*Ns*kf{eTUFkA) z)U}t&j*R!%R5}ehL~>(jW+NfQJ))UTcdx4Pf9(2Q8)+DsT-j;!rIj$ofWk~rxhC&;_uUMU`K1-HQ*rLVd zJLFPhi6Eb_$rkTiVY*G258)Zq%-_0Kl2yoHx(4cD=pqL0qhQElT_0!_kwYL>d}tc|ShK05TbL4HX?!+<9icA`*u zmrG))#*`mPSY;tPB}Xt7BxFepfL6Zo7+kWV8Gcz?zIN&8hT>Y&CfR$dhBrazTzP;o z5V7fM@c8MQz4ho&JaehdjN|vHNi9i5N8(w9DM*ek`PG5jJDv5{6D83N3Nta9ZeCD= zr4;Yp>>=)UpuE64#?cL%G{^9q?g&Ot)3QWB=}!}!=4|C{+73Gy(!oD2Z28Um~hX45GR474rYI}Thi>6IDo$dCR%bA)rCzRe7D~l4QYI!pRFuzXQZ_Tqr`(Jg8mh+`V=(IT z;^R4vUtapBNTWhoT!vBC+Os3`o-l4?>6fNkKIgv1JYt=47n8E~H-I&TrLwRbZ z#>$7*OpjY7=4dsHkicNhgY!g2WBw#buL7P`4vUoj60X!yLNbx|5BQkp1WTd&^P!`b z30ix9OPw@=hwG?jbj#X1rk+wsSwGx;daI`W)vjr!d==k2X8fjMHQ^m;8kZ>>5yvZS zskAv~=~Sxv=c&YG9rnDV%XYo~`qGz+i+Z(|Ui`)`rl{ooEP4J)d%}az&qERgh98kB zG8DqzrnI+_xKr{|s57)(JM4SzQ0t7^=Z6~9m#fZS0Cn!{xIPTg(rs-W2{J{19EEOg zi}2#G(}{xN@*nJoXN>(WBBb)~odX0H2s#9qd3go}4*@=2&}ZoB$^KUi31}M*qY`k_ z3+Nk;-sG1D?1r^Qgme#Kh=zsNxJoD;?*E(+Ap1Q!2ot9aDdP^;wfv>4B)_?N`QFcM<+HKa7f0`W!us`}Abh8l@*r{>QAwr_4@@eY%$Gzorl+lwn^ z8MW|e1DSapt@ z6+`dpbxHESy71pza-1X+P*>|z3dgl1uMW-9QGJ?g8kA;nUE_!U+!j+wgq*1EObbKj zFzrpiP(;l-V-;x_5k+?>D4!g<=SLJFbT`u?B;6@ws3UH=6TqP{-5Z(&KR%U>($o__ z_$?QbMwBrESE5iNxs;z74_zyC4-Nrr$M07L;wkAsHPpv2;c1JO!rlPk~81%dhkoekjj_t2S+A6U1eH-zqZS@YI z7E8In_emq%aypoIWy%CAk+wO$g++&AdXUFks*2CmGd^Dqf+5)H2eks%j_DLW-BZZ* zHY#A&x2KK~xL_(!bQr(FfFb(4$cp!Ij_v-C5nS{X3~cQ6Y;42^N|`Ljqic{yI1<&J zd_rJO=%n%R4W|Uo*2`gg(gbBv6K{|9Dp$EJphY>G{O86KZXWi%C~%!T)E)%NDXrb% zj$P~@1m?&yAuu+>73WpbKJ68Tl_sTyyP~_spzb8imE85eZ zi3Pno^#x48^zA3(Z00Z5b@^&SamR;S#SGDXRfJ~0fj{yyaQtQY13RtbSAAUlFV_vF z%jWb7Y1xWpR`k!UQfku`Qmq(oHzg2BBMb=Fg977SP;^ok+wxUPDx!t}9+P&dVAr;V zfA(f&jRxat5b0_0VZ$RUU3cd5X_!389vH|NQRjCH;y^({t0M++2cLP$B0Ysx=K{-Y zkr37#V?|fhWIK8VaS)E{%U+zNosj=(INqsXu0@*=e1^PWcn)z`7v9N?C~pqlqBDj6 zX92gfAVFI^hgZTQw8PGA2?Dv8oYIEG9I-45bdn$ap)~CYD~%j+TT#jkMXERp2;6KYB>FdWRuLWZG!4qj6Xbkhn zXZ=A9xpJT}&LaS7utDrwkby%BOTY&KEgi;&9(@2n7}`76e-4%948kE76fXaQbK`uu zxKI>}lAV~>&&>%h9RgERs_vCPXvrv7-m_)qJ7yg@4Dxw=W$QRjB4`U2D5v{8ww2 z&rh1C$d+_Z)2S-fYnk}99hM_NJXv^mz%r(O<2}Xf);tez{jKLSEaws>Gye7`MnFjxpHo0FLxLvF^rLI3>Oj;H zx}E#1n-c-SLt9A<{( zsHcjA0>3tBD_ihp!SZuJjI5q zG?&GR4`_l9Bp(U7c$vhuAY@H~DAsOgLvW9O72|{^Ih}^Ba!Q^Zb_t^l5 z9;BLt-U*NZz$CymB&LLlFmN$25M`br1KrTn{~cpMxcN`m^MY*vy!~%C<4Hijbie(C zRNryTi*Hd+U4@W7-vq104qxq3-$(6vS)8M*5Sr&fIyis2S%33CW3c!?3uWT}hrz+u zWZinVLZJA&m;{+iRkrk+eHxnZ+w;v>-i_ z!)L@?_n@Hz(KSAGm;|$(O~@hUw(b z%Ge(J2!(3mkzy=Kh@qSB4p88tN22hUl{Ve9iB$&W+I-bU*6-RG#gw6UZt+H)Ho#!s z@vp4_rK_eD^G#UmYFF&lok#oz>};Swy_y4EUscY&5#UCA>Z1rbQ)VQv1eZ#6z8E|2L75=)H4Qrr8 zDYreRzccx+8`Jqes|hU53vvtP96UiVi%(_WBKQTnTbfP&_lhe4*kQ{s)qw7B&eQ5rcuO$x%RnjUyr)D^v61^|JhU5vzNCwnTyB>}UN!CzWwQ<~{4Asyi9x#9JHrHLu9nPW3uu)~ zBmwE6Dc|7V7r(#Pe2hbSfJORK-}nCgy>HB^BoNUTw)xSU2YL0q(U|9qDg>MK>)!j= zJ%cxltPkUpo{Ld>(>g}lze5yl5{@?+uNE>I=?m;vlnwTtjY4|wC-H=uVOEPtq?D*!()HRfa+V#EO8ezf@9ATt7SQa z4XxRh-JhSXN<>|M`5PFFDIw1<$17k+n!ylt^rHrF^mRTRVusp8TiU^q1L)&qU?yJ7 z3})S~4`_ktK?XySdhA)CEh<&Uicv;KFh0-pCsUbZhbwI+kKI0&leqH;Zs<$VV1X9y z;H;zt{DRw0Dy5a(gJoO!tOZ}9i~ZFT5B~TP*t!bx{=d@G*rGr5gZHYQeOs$;!iB`2 zO+mT+lKMk~UOma;issYVGf#xd>Q&K&9qg>u8e4Q{NV%^{JkgN&-|q%{bgr zGpEku=tlZ5%i5(`7*^N~g? z9Fg4AGbF~}{Fn?<&3`K+hAFl>C2W&-Y*nXB=&cv;iFJ3a>5o)5BO40}>qJ*|0Tlp% z>5ZXL-UxCpCsB7IlC^l(#;@ORxuKbu=)~CfG!n>b3P+xY7jpA%3R6T5EJ#J-U^4Pb zmsuON5xKtS7JK^LAy*F=9}mb6DF0fbpC9OV1!ta_(`Cl%UeiPWVz=Xyb(AGfdC!Pr zZ`EvB(9v?XG5!k%Dr~C24Z~2w>e3YU{ggQqW8AdWsT3Ru(J4Vj3erqdPrI@en6b4@ zX3vDlD%U}AqT14MC7C{#MC*iGnh;-v5US4U)A-Y;=el!Fa5xvsW+n2Xmni6i;?WR~ zhia7zYGz5_98SvdN21mI*vE(0=yauzb9&Es9XaF>y;0rb5>8iYIpD6p|Ovd{>4? zQ->BlTe5ObgRJ@p2o%OW0sP7IxmE@{ z20J=CREQXg5d6JG?{}`zr>ERY%=>Tc;%}o+$Jab_rpbYlC&cvOPXmJ{D5C+CbV)RN!(!5KD<;1+awCFf?bW5{h-$W=*PH4~FXlB`&=oNa zqiSdD?mqUf(GVxU35e2P@T=eG-{rJ!;qZ7mxxuIwdGO2@%0dB-;D29V?98q86f4Sb z`@CJ=5AcotZ_jW5!c%Si26??Afol?-Lb14?>2LokSR9|9fG>k!^{2z7G3uW7CrzbR zvP9-=cFN5QU&Av$@?KqRYV%!(YzKKiHN}s@D$!yc3r0CdPoEupFUV}JLX8NuVPglk z0wRuTW6cQ#4{8_^G?C!LjT2AMM;~XPb}#_Z9|sl5!&GA`lRumQCweTAqzr8mSVVV$ zJc(AXFo0k40VrZ~%@nudyfm~}IbY9!(pa-tqU+!gX%97xoWs{|HM~NzksVmZsDewe zDY9_DtXBbI<=?f78uqcf{L~VBe__zJ%Vj8ZJF4qMfrtg#!Vni*T4BgT)*UgJGVcz0|;?tb|oc^q3hK z?&w!a)XQN|Tpus}9vT>&<;t_tbOQ>p6z~DH7TLvz_7CO_?c|c}?!aK(!bHO(@c6Ou zp@l34Tyl);usL=A;9=kDggI=|0cI9V+uiDZeEZlI*`29}n7RARWY)vtr<+CLeQUuawJYwU<8E)7+$TSU!;HTc+B*g;Mru;$esaEO%BxBd(Vl7wkp>|(9j;;&>#I<-drj&L4U`ZOF{$lIU;>=N-kLGb4r8uEbp$6^dtH{U>FZ3^(n)p|7SBoD#b_;S2i`@}^R(1bNc4^k^un4OINYLVr>s2fQ7k}SJnXZB4TVAS(|+BODsfh zv7~R_Z#l;Kg89FUEqLg~IAZ%Reid3qDk^2hVGz#G)$Mj6dA$M`yMC|@&wMb$f7{(y zpJrD7GG0UYUr2%-lYiTLY5@oK{`OFuJx^d{C|5I#2gW3l+iAVt2HDkrF-<#mgI7vU zR1T3Eb=F^JwKp|p+ziMXJypY-o0%J`33nm~YK@-PVQK}M`}Q6*>x0x!p9qAh)qk46 z+BSU>5wIfn6eC1^^a)6qHgS3qtO5Asr+4DwxE3$E0^bD77sMFC;jy3DI+L_W{g52^ zMmHe9IzfTC|2P9&u}u{~AQ<3-KY!E)7a^k;ECj+&@E0ZoL7W%KpjOs60v{nT1;jjq z0o?d)-5Cx4mccg#k^gNyEVl4--UGtS?a(tKjJX*poITSMC?GrZzzRnn@Xd$Epm7+C zW_o(k>kD{*n!QzbHuF|NkMdA7(UU(MYdBH}$}8fGv9vupb;ZH`Uf?u6VOYex+>1Fy zu5LSCwC{1FQuKfMhXwrs`G#8-DG$s_H}AGB4FD_W>$477^ke)%*Z7)U@$R6G{55yq z21T*rDc)Cnk%Q&mRdsrvGh0iVMfpAlp9otey~D{fUIRE9=W>ZGC1Is{&CyL7s3A&mAYNrCrs?a!N3PuyU4p3li7U zGH>C$DqH4Fp{%{7L8H%#Tuyneo2t|0lwtzQ>RsloInOn{obvkRXs!?hf6}@Gb(wms z5cToCSE^t~Rm`~e;IB>xTXD423K@5rE;iA$Ql(m{F);GIF@}L_pBacCvE!ySx`l{E z+MejBM8U8c+F+^W4gT=&;I@hl5;Napr_bAIJ!9kWPa?%$H;dLDxmFNW;c^77NzBMUx zS_J9~=Qf{h&2FvQWuHAPmw%Zl_HHKX+h&If0P3g7Fr(B(XcyI&t)H%R%yDaoy$)RG zwR^6up}c!zux{##)zx86xc1Q1R_VUJmdOl&nhhbOYElmW5nS27K%L3{zfg36=$S%c}a`mVz2^;>!VAp|Xmzl#c_-}?vH|reZN*E4H|DL*C+0Ws-jc-=W6ChHp z95BpwB>_x5#Gs9@F+!7XmBLhoKp&v!=L}%nw&Ig8U8|&|Zbe;(>6?{*MDOE37Z#?j zR3m6}sQ@F)ETJAy!Az<$fbd5) z34q`k>0Yw7GxLYG+lFs5dEz(JQA-zLZ~J- z!-I@xQbNfDb;O(Gn$+X+so^5x$~CVcVnaNsCSc+?DG;Fo$z0j7{QZCIRk zX+=o?Ns7VO3?`>t7_*|B@-sPiEoiq*ozYX>u{pthe7iZOsbPL*gGP3wPn6F#OfyGI zfQQ7m&qW83Dtaasn-8xN^jj5FoF`nuvTv&2#%rI2CVTkEx3e5r7nh` z4c^lOtXMmBFcfQX30&go9)gV6nxp|iY?g2DJ%*t??f93yR~%189;`$gyiN6o?it2& z552hf1Ms-SOET>SKA#@_QVy%~HKoykpSNC1U(K{}T@?CVqjGbfDr{=;e)r~R>Tn|` z<&GIEz8!obnpy&=HN$;=63<+UcK*piyr>?(uPYr?aO=)#aaecfw= zDYVr3PefCj3R?s+9P{clho8cK9rP84t>W>ci8AuS9C#m`0iR(&aTjZ_vkmCf8Y5(L zF|4`CCB8Z?2oBA5p|fVaZg_r8SVW2)D&}+SXbS4UKnER#PN%AsmXSZ{A1 zo4eYCsJ}k9X+)!a4F6n8BCTZ-8PyozGcDo{hHTCvRSW0l@Ww?{oUwV!8@W8Lg0wF% zj76eDzYAqdWCIelOv$EujqdSf;E_k>cwP=|GCPiZM!lwgO9SyFKtWU?HJ3W&$><0q zuHzaJP>sn=#^TOx`1`;D`v46l8L&6NO3?nyD`ymRCMjJN?Q0Yzt7;zF=xiflj|RDs zPReC170xq5S|)u5fDIHDOs%HjKod`6X!jg>l$2cOy9W=&6XcvP3Qf$|J{fP#_d z)l{m>+r@-s@$31{FwrL_eom1scV@PQ|AX1GKLiz{^h_}m@=$uQTq|@41gO@B)^($% zqo+jh$1H-&i`b4VcJR^YSH`?s4&j8H`0N&&uX)3C3N1_#H(Ph_t<0H&Q-|2_;vX9j z5<3SRYN3SW-{I=Rzn(~jtJF0j{%;cC4jg+;(zHjS{&oT^>2;B8u>#9juhP$C^g)n@ zm60wmD%I1}z6B1W*T)T!HeGIf+cmP{%@-b0FRr6c5Gal*QD$oYyuiY;8~Nj7Y?k%E zbS=-9lV9B8OQqU9VVx)(`71t@ES8@4e9LI|pz(bPgY5K2YMe9HY__rTH_+jv5A)6u zgc{vTwQpa0FQ)_ZwtHfc_%h}iO}WHN-cw)uv|S`_0>eN&28niP#*@n5=Pm|6CcN+= zUGgyS)caX?Ne${GG6S~VcZ=^KOqjgCvQ9SKAFist6?HpvLuG(x9G3(rHIH%#F?ZdI zf*+~%?v(5N@px^?Q|M>z49|dXAalCLq-U*n;f)BqeZ8-h8kF}^;${4AgL(sx1f6Vi z4ayMr^qho#o1u6V>8_GsBDT3G0wp_jsE-6;^1+25LU`&YE%;J%vRFM*dqjSR9RFsTcx9ESVo<4sNBB(oY>4X*|_6SDOa z$pI|=0dfF?4@sVat}<+=$B!E8zb}C%vgnO33>Ea$iLEn05L?FhClrJWk+_2y5?#e) z^9><1C_U+*+v_wu6vEN8P2$ik2JKHeIDg@s%rM-{9R=huQDJjjB3&d#P%Ht#_1l*e z%wvfqmTn0iP^;__!h2tv*ox?G-#yzN!pU*;mfF6!g+Nz zUR7)Hh5MW<7Oo~jA!iA2EWKQJyh77iMCNT=RyT^RR_AzgLUXa zFX})KI@gD^`%?gDr9cCK1Pu@=08qcaoSVUv!DMIljwwvWGc~?Yy>9>mX!1p$KyVK` z)upT!By}r$s}YcAo$PoeCEwBQ_wbQr>H>O$IP&HJSna|ByvPze9<6usf68D$&LY~@8v$&Vk!CyC<=f0Hi zn}YPrTH?C4_&dxY9Ow3`iHQ08(=0$8Q@~r2IBz{Y4lCnPdM7eq_umrx>Srr4iq_WA zOTZO&FAL86HwgPn%5|H)-Oxuk%}DE!j?+<}cnM{OY%`Sv9$UFrP)LXIv$W3oMhiy_M0~7z2^^ zGI@54-2}P-M@gJ#gL8%yTFhkomQ8v`oJDpgfyul>gI#!;9}dpWHV9<&R#ZC8IJl0m zjJS?Ea2VIAb+h+J+nyCHdvh6Q{y@1qd>bNH6h+{Rs>IlaY)B7yq55r~=iB!{qUpn> z4Xya(gUDMd>*4O5m7|CeJgk$rG_Q&^1ry0+$@}EZV_P zcF3#IY&>xpf;tgSc7r8(9%dh%WzAgrWt$vGr?&wz%Sa3A0MK^dN=-G6`l;LQV6jf8 zXQH)!+75=>)dlkB<)SH07R!y-_y`H~C=_e4*h}MZtvgGG&+35gI!lIof4%S1E27sW zaBH_C;N{CyEa#MEj393ImqC@;(`<62p)Cd!8gdwbyeKqqW>bmgY>XaYGj!-(xRVh_ z&+d%L)?Twa$KgcSndfMdc%gCAU__Y*s0!B@g?PpZNbm<)k?Y=taMbBH|)Y z$=A2}uZlDA0}>GgBkirIxko3BbTGx_A-#bxE@IBdv-&}L5t(5@O?q^OZwbcqwL(9p zLTm9!6b&o7Q`vI_qQ7H6yh&z+SHvx9-#8;^Xm{4kDWI8G^2V^7zBM>LwbvPQ6mLVo z?LfWSe0qxnQmqvr^Sf|cVJg^A&kNr&i6MqZ1xX@BG`YA07lCg@n_wuX0*7kz&~)3*f%{rfkPzLQa4te!rt(h^;M`Avz>tet@Xh2Fh?5plvj zUm}9#Imgln>W2&5k{Zy|CNsjR9{APwXD=7+xxurKjaO$AS7EZeyJgd(EBLowQ}3Xs zMj|FJIZeBgkc-`6V8UcO)0*i__CryP@#H+O6Hd-FXoS~ln#9*UX|*-Y20HV4a8Mm3 zS_zt-rehUNBp+CX3V5JYs$hr%&gyEcSu9bK+d7LYU}ud?y4Z+8;|mv`kKB!SIwq^Q zuHv!8RuX|Sgb{ZQ3k&+y8-qb(D24vaiC=$c&@%nRRxP^2yx@)vwrS%&2`*$i?V0C` zQ`{?z5>Gk;kDNP?T|lA(60dyWY%LPpbp48M@ojW1&d@M1P-1OJ>;z zZvuTK&MyAIpzs)#QZGV;ea!w+NR{+*mz*ClDE*=b@%WK7HNiN^1^%(PxAcGlz}eoD z*}MY@KKR&svLkEHnk%mLPR6!Xjahv?WnvI`)FZdX@tYR(^> zfQ#UzM-~dt3(83PvU84R#HuNqe7}`;J+!mv{|FMhOhTNuznG5uSa;>bK7N2diDlJ>A z$#a#3W=70RK6a`xQ)I2XtY*U|!2E7Fs4e+Zc2+jX2shsst(a%ilB~!u+ZSrSuh8=C zt>OH7qixH^OUHbNTl{!O$c8pTUk&rWep)RZh}@brb;nx*@5vA@IT2Q*EHd>WCs9&U zJvD^&w}d)ANU2{J-1J*UJl^4zcOj`L;8z>b_8Jh4M7rPzdy~KyjwmJ@kXV3~Mcn$M zm1euSN4UGqDvva9xeZ53oQnKm6*-k0t+$>ZIS_R>Drzw5teW*~s-Jy?H8AyzwN4pe z9bxykVcJL?hAS(IBcTgnao;fk4ruqWh*fuKqnNOVOLeH5jx^R;g~leMSaK}7w+S`M zk-W+^lOszG+b4y~wpqlQN32L_bzl6Yp%lNYQ7$!g{?dnotoC$3+>Uwz;*@oM{`4JI z0DoI5s4VVAoDrd6!9$z^#xQ`FY06n8^0*n6guo%Ei9~m}ftIgiOB9AC;94rDPYvfW zOc)a%{T_;*p-%@)#B6)w^ECl0oVaE%{0YG^x6~%5s@0YBYm(?(JxJhSg&1-ubvJ(> zU=^P_EkE5FYN-JneT;SXd{8j!R7|5^4dwuCU#qAEuY7lqpyRT*DB43nFkmwygRo}P zOl%pJY1)hhMb5;$I|pUp;elJTPr}RKle2FP48ulDXizYVJBP!W!_DF>L^hFqy9auG z{k+kpEvg2Pq3YuR3IFd-Mh{LIuMyDHkJva$M~wwC`%#Cju1euJY@ z284ky#q`dvFCyA%CcXKjH7#0GhKtbICW8|r(D}^WZa?O@{eP2ZiH}A;xZ5liHFtDH z9RtDWezr>CI>P{=gj%OL1@j4O zn3O+22xA}HI%Ek%Ck~wtI4)#_>C3(eMPDNq3n{~drB*C1Tlg(99qjqBYC2QPd`ktv zAdEC`fA>Hr924~&pO@ZTPtoNj#;k zh6ST<>kzp>nC;qFcTQ-5`#bvyWiyg{%cMaEcjLjB?vJA@b2y3ISG+{doT>LebRo}J zP+a0%{PHOe`3s+W`l72qC}1>q~Ba@Qa0z`WmwpGO5=!6L407e|#4vxt%?@%C%P8Kx1PvilG^3q7>k6Kw=D#SupR z6jh+#trVbBC`Y3kY6kdBYEU_UgwKMb;3&{3RH<$X zU>9?9SLUvq+YnadrLm0EkTEo*%GKHO)!C*RQig_%)L5n~0vTe?|1!-$xGV@$JLMo4 z&}Cr#0m=TCREe(J0OEy&9CJN0LAM=97Z9(-=?t zVbNPnf#B2cW!`jvIVYHArg1I^2FmwcA*g-er0>?d!RCJ^@Na`9 z2c|_Xzp?KxonS|{*MkkY^&wt@06`G(m5@jS6;>DmXL;162^)3O1Xu%DWc$9j&E6n! z{!0+xRh8lprk1gW0xZ?zrZI1?zvXkDev?v0feE@ItTEH#zzxq)D_kfnJ40f+NV3lV z90Aa@F{T#8fA_#6$hOM|Z~(tr71hv!3;C&3LZ%=+g7Y=*h8+C3L)*0 zBk#0H#KFS)&s5Mh-bR(IaY4HdD}deJav|{%H@*tt;XgZYJm`jhOJ_T91QPEEI~=Hf zuC_WH)`64c%lhCARb($&wIR6vr5ghc&$s%Wf_jBd`LzxVLpbeQ+cPH!ZE?uLda*2r z7Bpy1Li%yd)y8hlZiRc{*4a15UPb19{@ex!gqTPO8mo-J`C)N2sg8w7?G}?0=yesR z$>38{iZ4fCsIULT;@6O-3L>YOo&8N$Poj%8w?4DMBQI~wJ_Unkl}DMQPQ*%gXz4{_ zBeN0lnxBt44KYKPfV(6=?KbkfNKG|87FkhU$A$XlYyB#rA~TsuBfcj5>Ar8xcnhHg z_|bN)R$Es4ocSsz`ws-CRuS{n^Px(Y*6uzC>Kkfxsf6YORn@9annL=FJ|xfqWbiWds>z z@SOk|L~R!4)wwx=-sA5*POm3E4KT3|Ba=0}02@SlS=2_fGVOvqe^mB=m3En^yN($) zSOsSY!%zn&R~zpAOX6e%13^H3+Nn17BDGZv?zf=w>Uu7>zOiD_D=uui|Hrd$uU@^q zbs$TB3rq^ei^iUl#OTc(AA$)T6_eBNxN*k;4(C91p`?q$v)%vt+t|0)kDnfxE!fN> z?U1G?+CaX6=*s`=-b~;%OiiV_^0VhNj^@wzMD_v#Hq2=?q7Gi1WyRFTWd2S``JL%; zOrio7<+4I_I|FtG5jY$YiGk+5+YDI`Oh>iI*~{9jvv5TG9)Za z6&_&|h)AoqR_)oaF8BQx*+mFFdGTtUB1jvm(uUhklpV@ipZjiz;Mb+OS=q@`+Ei@- z8eGu5EwJDs(Mwz`2;A146q5eraxYqtofjBh9NduC5L_G{n3o+bxEB&omS-CC0zrFG zQ?8+hHz9$^sPVI(D~;J|kas%!2aj{Gkk7dmFU@i#jkXByx+}o5 z+`q#=b;du3|Ibi(chr&$QQIN$o)Iy%jbO;O8~>;b-5c6Utb`e8rFd)iJ;;9~#Bij5 z!#O6c4T#dc^(%WF7)*NuF>2=mboO#pe%Ro>1h|jxE43qnz1c7sm-d5%+FNQ=&0K!? z&#+Z17KB0b@$#hU5tM?o&%ehg`kg}rk37nI0`rDa>)-$QgoE?^PLS@* zg3&JiBnyNT)_V0QU?0r?wi{Noov(D)`^iM{5IsF(M~r=&PeTqN9~(Fm91+CSQrP%` z#N-n<->1#@>Ki+lvwQibC=JsKQxqcx`t^Dij+4terYNQWG(V|lhP)Pdl#7omPE_v} zi+5L_P#hQU?Pwp-l`-s|Mi6Q4!x>$KavKRU!ImQQ#)F7~OTmYQyY4J?G0bAZ|@(xedgCu(v+kV9ZmM6%a?_28&f{_>~0LEDau_^#ee)I_GhuDwt={&vc zVIFUPwjOUJwh{+?Oha$4f12dAa&VO?B;Cyw;Y1}D`R@v!2Wz(pVNC`?J2&gZ7Gv1D z1w>LgpMO31>7TMKV?do^1!?A6`Z3J_1}|s`v4W@hV7cOfcWm9%O}XTn+~i+8Uwi?dWG2DXdzH_rre&-+_a6Rx0TF%;YPh`kY*=m zgBKBV<4+&gy|P$#SF)JRGFsWiwp0h1JdjgIw=Xr|oQ>OIXt>lkZiq-( zS4WXvQ9xnI#sjFOH?R-_E zC)YDgwfMhjVp5>m7u&q5Xu3UVYpQf+*KE}^@cj=6xma)ESO0vU-@d=~mVYj#IJNm{ zMe0}m+5|F^J*A%R)1bQlEt4(-MS~XKg>Lcf+}*f90re4@1r+v|+i*wnm&aJbzVR_` zZoz`FThT9ww}Rqz8_I03Q>fhzM}p~8HmuOAx)^D zzp)@R1?VuEd!=o&#Y(O}a2CXQ^Yp~{a{Qm@UhBZjqimEjq8CkEy{~PsxdR)h-47ZRCF=3epKJ^5 zc?Qu|9u)si8}I<5=D3q(C1PQ=x#*vjLV8LIc{Ir~Zs4hlQLCLO%=!ZCultP>nHqsX zRiQ=!XrOk8t596It0t&N#9(vKeWQ^W7CE{Por8%B;@^nHZ{iC;@uwwAmOzg3T6xvG zaU5V)n~u4=*}J`<@zwbn4cv%~IIY3L+uoK-v9Z+>dT^n{uj(oFj8aDxNDE3vxM&Qm$$T|! zVU%`4PWKNg9AZXm4qjinI?Xb?^%5it;(> zPr(%LEHw~r3%AfV@E5pNn_dsXq*fn_UXjmCzFsAW{t=M4ULaVP6!0TjP#I7~eR_9* zq7ICGqN*m*R9#CCnWK0iPbtaCni+yFq&<7|ypsiV@?`c61A2kqLih(Bz1JJ&dG9sI z|4uAyCzQY6?#joH%>36fhmYr2zE3`a%MpWltq3o7o&l2I1l&Nd7QtOOwg-UyZ^_N` zjL(dbGXBY-9{&A*lkeu3nV*5aZ~TwIS&X{?`#a|o$yZjuLJ($H@8t|iAjt7AmNseK z#Px~2R9&CU{~<4~0nLWqwB`qF8pu-`)B5JXMj7r%LhLG%7jJbva5 zkRK8iHEqyXjveg$-Wv{bJ-W0*Dz55p)=J@%wabmqj2VSI-|w~=J~)}a&kk~!x62C( zw&!lk0~xCNJEB0Is+l7Vg24B^m-8#3i^&)J`(R41con6i#sr@}+~&yzm}+{EX0t=4 zTyR`<3dTju#R zvOp3l79h4O^3m}Lro)LybBFS~@CD5FY`_jqG+yt`=gM%Gv{kU=uR2xEw=oD~hY3Q? zS*(~b?v$mrh>@QY$7Om(QLoujl5+q^^&SR^jC$~6SDS5vzg1i^z(ggOCqSv0@3~sU zUq)THcU|*q3UQa-4bwlH_i%*kq<_y|R`PbDPVsT^RQ*bqX{4sU@Y}z9>kPv6KF_|s zsWfGGy`k$%%tNfT4TN2ToJ5zHw`*@B`SJJdWC$t~K9A2wdY5n3bD<1HWOmPMpEX4& zH%m#w?P=FIy@J;wwi|NZsZZBvqvBUC8!ZTaVdsmWzIHEy3s4~f${FtUa^LVdx$=3h zoE;0!afRG-3wCh0_zFN-v4P>iPH}X zZ60>IO+e0{_k$$$(k$(m4}gl-{U+^=7J}~U6;PGC*%U?XY3*!(mUzGrAhn;gAa*2g zvtagtr;i16_4eEHI9>F@YRTPDcWeyl=V+=R!uA7cY?L6M-`q8>BH=CiS;M#9zIt^Q z|IivR_f=Fyqf{_)b@{??Tto$uUdGjrKLM=nNa`VGjEU@F`~p#=8T?!&DzaXlzfokN zyI&WZ*W8I=ojvm~EazcAR)B=xNgH=XUXQc(I`ehusGYjH)v30+y0)o}pg_v-%Ap>< zi&|Q^wbqcEV^{g-H4u#zY>ATkw6nD zH$Fqua=8|#8JZ$HWofz8jMhvx<^Up_*anc=vK|Bhd)wj3zJ$nX;YcT>d z^%G$~W-qX5iWwvrgK)cs0vDGEkMbiYnaWIe&gqV~e`%|9)hwbWDPi0pXCaa??SY*y zlB?){;>7G=`hJW>Wxk^y&a*|`eOKjWE>2%2zuG4go&WI2w@hSwNY!8`xvGj>#Mkb@ zG&?r9=^#jo&qsA%Z5E50JNoAw6PrE!d;z;M(Cq-7J?Xk}3MwMY_ldZd`;KiPIBGP` zuk)8SKoO1Q$2o64hhgV7yTs;WIM2aSaAgt#KP`Ct?IR?Y>8`Y3cHn&h5%^Ag<*G%C zeAl_fX9#hqqkaMeS)J^FG&AwZ&-p4q)zC4>msd;LG8K%VH&(P!ez@V7lgADoqni68 zMtinRO|=XUG>KiGzm=n&-A0^*;F?)2{lif0tpf(ikEPAIgW|&!J;Lgdu^_~!eL4&$ zIJD)5HxO|xb3H)_c7E(14X;mG!DLjbD{nHFc1(*7`nb#X6hVJDqv9<{BbTgW>VcOp zNlobTTX29j<4a>Sg7b3bHtzUg-iKrthd(l*X`e(pnzC8tO#u`isV;-i-Vt;eQ&d

lU%98aIP~RIii%&M_hX|sjW>5OXa;PRD<)xY{1ywy zps8)0SKfa%bQe8*(ptY0nClYrmJO2RkJunmSB(iq4CNN(3U)pjr_IH(ipTMN$%rZG zQ@!!2gfE3;C@7Yi0S8ioeDHrfWI}rKu>2c%5XXvM;t36i#B%9`K}&5;ivfo zS&s9|NrK;dcOU&?aR>4zvGtQbI2&lQC+o5SK^NYD37__(&`jeK?AJMeXX3=l0HgeC z1cTZZZ%3gtN%{j#6CTX__~wXVBA1_?6pAUx?`dBX7Ln*2&8lC#^IDl$6pGMCaV{nk zBgDx0BwvK1kjb!n&{>mq|G1g*YY~hW&l0RXj4OD=&N?1v8MxpO;($Ddb7q0|GKyEX zli(@v!)pbzig9?+uatowyG>`E^?ACl=@Ds}_0_Xl;GSL^k8t&E6@}-qVy<>R`A#0@ zpRlTP>CU0~zhYBAAxD}YxeFUfOvK8fFF&2z&x{Xt9OQ_%9GxH%va<68M-Wl9b(w_E^HT$ z?FxP8yo_J1yI+TVEdDKs_xyK~;HO{uZu&P#>eLo6Uvkw|3w@pap?Vtn{VDM#cvBr_ zD;1ZS_3l;dtyEY3!~9cM>Z6aXOZXwp<_mSR^M(AJ?@L~6z?QB-zCisryFV9l;nM{y zSYP_7Cf6{qd@u==qhfpu3IoBl@{kwm4G!!t4mGQ4&h~M+ z`y0y_jd3*8EYb^ZeDaB;wEy&~LnP6Y^`GaIf)ZQ_eD73yN-*%Qi!xvZE!)l9036Tkr}$EYNrV z1PJ=l0_?9*j?h+N(#vNMQgBq#(M#Gxy>fx~LhVTecM3`b_NI9$h3n_q5QcRunGsnZ z-`)D$_(I7HQztYz7A@&Sk!|ztatLz=9(nJ^4rsjZVUWJWPwH%?zfB)<-F=TsJ}O-f z?fK_5!Zk0xm71U5nCyvPTZ-YA44voy)IQQ;SgH1yw^Y@D!hUxPr;$1;CiFVyL}woa zkGyP!Q0=D`mw#lLv}lJvP(+h9pe^Alpy9S(?(RVAUZrun*wq^IHL@AjR-)plWBbMV zcZe4W1*p&$Yl^0^rqQ0&F~LQ-=nmx<+i=8}TfLx*n>Lun?K)BoR6sk6 z23>eG|6y;qA3mPlh>{$wBkw+wBjMIJ9$$2w%k6fqI9$)=9@tTyFy@2)oXrldzA;LYpFbVZ;*jW}l5weD zc<)0#&2t$PIfF+au6?jkq^)E^txE=Ao*+6G;gx1nJUc%-=z@6~#Elo#K->y6hpVN8 zg)ZwC2@#9`8@8&Zu_RTgqYj4!hrY`iU=5mPq5S18?^U~iPwm#^IP^w}^zgSEVhftm z{@pDQQ|O`MajBp0&_Fa60u^vc8B29}kFs1C7qUEYu$xDI7n<53Xk`8t6>zcE%v;|+ zy5yDPOQlP9?`OtG=St_|uGy#fE?!Q)sL1NYU#VW^RsZ>%gU{;{=y2S@*+~V8f&Xa3 zp5OZI;OiZBFrObAS0(BgTl4Zylkv#V6!&TZ<*fas~hBsg>TWqp_63 zlB*c0<|Dx36?nRnD(T zo)4B4A=}cLJ_-Y^oShsdBMLnXooq7M6hFkx%`I6!kHYll0~*f1K2(WQ3`Mc7n&oVz zRFfvFCj&2G;n#BQXO|FoNs2Ild@WgzS#wf5R2x${*7$|nd+`HZjaOcljT|9vAy?p`SD=BQf^H%4nDk}kKzlZ3wOIS?ha}!O`3)iE8YKQ3=-fN(#%75$t(c_d!M4WeIq6?6Pk$uJmM=> zRP1~yOrL`b`5VLZW~{*UjY~&+|5W`0sgu85ea=c8e|(Mh#<7|D#iW$G_|ghbAy=!^ zR39dGT;g%&{ZRz`*HwN_`^-o4=X)W0nF`Y0z;+ZCdgSD96kUlAe=fu{IW#CYC3arss4wLDVurKrearB^ERiv{h;5pkC|>oB$n~3={w(>|63gD z+xUd5i{F~-TAw@qEGw}@wE$R3Qkw+Usa_h04jg3_qsjnwquVp7;7!I!L#>#bv)~ zi;nES*DS(glV_EX=i1x62-9^}mi5|}vqnbyQ{HKU>Prnb?JX^>57N9#*pJC^8~lad&@rQOy=$3cMON>S!~7y7YINyR%IH z1a{u)25(rO^7l8#?z_Op^1a%>sRORu!G#Ft;2-if*=kl{dI*RQW|aWjyaLwh($z@+ zfxf5X>#%Gfhf=-FM?AWa5U(rv+bP47WHnQ}5!f?wg2q@J9DVCa3j2fh}H z2hW*3#d||6HNFq*?lVnD!v$aD3KD)HA6YeFMB)akHEEmH4)#ey3(*L>o>f7vWg`W5 zW_ueUu%TDo%XzSSNa9%O359rbP#t^nbtdsEe)1{1CI^AQui5^3$3M%6u5;ihSnswX zZiOTiW0ynHhtM9^0i5^HMfq7W+CHnxhwc(Z#RsNBiR zrbnK2T%^t+dZ^syqN=v^LKZ3XG~CvD7^wELO-qH4EMA-qq5kHrf?|ViAvm z`>97Yovir(W0FJ=v3exC6)5cOUB$y9em@2{hKS)l=e}Gch>FSj47@<_Pw zmWS>g4MR7uxAKv}eEKGD1XH}vd`#hp#!g6Dt3*j6bLP9{R3`NbFF`*m`q4jxu**PV zFyvG(f`oOSjjEnkf@loExN^r#?lOp^EIe)vL4qrxat@TEI5Fjf{`8X&oZ!TBJ8MDD z<~jvCq5Xd{F{h>=-;0J95#C3Wt`rHrj34@DQOJJ+P%5#q*=yEn}~5P zac1St)sHDoc(u~8qHPKw*X#4u* zD>7f$A%yh<@$gdsWHPGe@``P23tVJ4*UwI+21L1qQ6gSY>4p$Ps2 zb|WX7eRy%$lH6KNxY(yCAoJ8GGwX|~tr)Vt3Wp-H72Wk{*n^DA&tTBXay6;<-;~`k zRkQ0GRU5C%*_)?*%WoL65*#v)($#T`z#ppfd zIVi^Pk5R|?Gcb7SE8T%x#lNFaG@03PpUkcCSs4OT_ib6`U zpr`_K6cgYHFd$8BQ_#j=wK<`wl4MEf=3OCRpe#?6HeUq3oSG>*6?hl#eRm@I9M5+q z5Z>GS{)EoK`PEqcf%ib%Ui@BQzsMgGU*0*Z6Ys%~hXc`jN-Gd_x!YYxph?S4k%@_D z$5v2y*ktRD&F0_PViJhnRbGxFD_rkE0Qa|S+2n&{Ge?Q!1vhq##*yF*bZpoVB?VKt z1G!{v8W)#avpYZHzNxmc=ob4=1z>6f?cyKQTTfL6Oty1z@$Gi&xA2*<< zxD-57SH!oZ@>(k*%D_)<0;hN~;K2L##Vil+UT=?C3-(EY5doANG06PT>(dKl z-1NZQzp@!vgwbPO?6GJB7Hax8{s4H_v;$6%7UBYN!ODld#WL0J)0oV(_i82-fsHKR zrc^Zo?irokzg6_R*{sJnwCZ;N#Q0R8YVZes8g*-RbxmnpR(!lhlQ21G34tIZQVB7$ zh!&QvR&MS#9>JbGH9u)*V|&BM#98dC+Ny;av3ziXE)H;JFTRbX1<6bLPh0=28xWZq zSka+y5H~MJ5#)6=u-i$SP-qY=uQO9dH|aJZ4x3&V4kGlajn2k8>6e?!z^|Pj>Ubde zP}e&bCJiWV^o{KbRJh{O+jT}t^@2RjZrQY%Gqt!|lb68mjt5VGR4fAG{vs7dIeCWxWt;>i{L~x{Q-@Sa~P1=%#wBjViMxh^yz6C zaq&{q(_Sq6|Kfi_D~?G7<3;~4OwG9b9iuP?LyVJuj5Ao3Sw-p56TK0&kBx}63e2%7 ziw__APGa??VobI)*z!331qHHK0)9oKNtGE3*W zLJ`Or!%)ZX8;H9OMpL-funbqtI?Xk_9x`%8J)E;cV7W^eL5wB9?R!|er&YS{aowFW zEDZR(M?%4p-=R_2wOV66jgDjO6pD49>LKI9qGp9dMaNZ3yDO0U*Fo|7=p4|3>^-gy z_!QYzT2`W%2L(>8=fKU9L}MWtIl1i|9l*5ThA$3SK$yLtzGZUN)Jf4*?X*m+vq!ibx{hwFjcJPO0PCwvI^ycmwZ{869Pa5j;9>)ZAD?5m#|Ec>`Luwv zfTA-X*n9H^AGG*a|Im_Nm<~MZGwn{g2XdLl=bGj;)*Db+BBtjQDs`&85tB_dm6}r7 zOe6cLRO%E@rieu~sBfIJl~N$D}{&tF*SR?0W{52A!`vK=GdaI?(RTa~G>3 zAU?pl&2x=+jmr^x-N3J7l=)Su3u9t3)N!ur_#kyAK|w?bL|r_=+`_`r(#p-s-JR<% zNV$Cbs`D;{^34M`UP~t^!Rw*Qc+k=l&C$h`CkeM26xrvXg47*tN_C zojDf*aeUy1n7?3a0R;b;3K+P7$)T?Ct@N_M+1nc03J&t^9f$si zfbRv~r`HcVG+6~9@e*ez6_8);5*t5xdamomgjdf#+BUH1PopXe6_W!pRD*9HpOXMM z)zvCxQMxEqOhAA$;y}@kQ?!DePR=I>g@h!Oj^r8^lwSWA4f%EjmO7lgSN@#L|DVpoV}fm?9!H% zK&P=6-F;hNV@N*_H!>j*&?1yhZE0?m(f_}3 zorToy?*cLneMT8YqtH>xGt{Z$SH+<%>FKA{#pCi12wy?n@a6&%ck}# z8Im`eHx8;AI>x&R#!%@Idnc)&S_jd(dunM>wA!9-8l=bXQx3}CoL7I?47O0EJ zYALYh>Z>j`OUbret}WSSsY|jl(7{!is!T5`ZMaW zAd2O(f_LfBCkN{@Em)yP!NXm*6h(1vbq&Lm-ik_6*U(wJed)oN##D2rYPFc8puK2{ zNsHFhIVym0tS+3Yqwi5q6@`r3To6C^hU7&efjf110GyKdWjfHyTz1??#h}6rXP^Ux zOdB)RQmT-yDOR*8sM_AA)pOZ%0ZijKQ-=4l#Y>QWWQlm=JwwVF4pnW~9YS_&ywiBB z(&+@ZU+9EW<*~+C@P7Dr0LK*!M*ZKB&zZ>$R0eX((N*P#FIOw8FCQ*ng_d)N9pTO7 zEI;(W0^@Z9S9PI|U2{{)F8amMS!n)$9|jmuUse_zy+rnsmyRyD^Mw*l&u%}i6>@q} z(0{_Ue_?|#AM&v*YMY_0p{a4=%JN8x;fEi<2aoy6&iC`Ts`>mfOG|z)-_o)Sq@x@8 ze*EzCb5f8>WNtkyq)KkOurnNN;BIxy9fAU&rZ zcsNShGPZ(nPi$!t&DVY7v%xxd*$j44KbDef!U2M4G5jeIfAEs}QV{cu35t(#ImktS z3y~UJ7n*kAs_hko8Nc3+sL+7F5U;~L;Xk_CnwrRuy+f(*LwVAxIhgcI5%YibFC3tL z-#^u78Lr{-D`rxwck(9{3~^W!>Yr=7pM9qg0gEZq+&Hq+-LN;7g%tDBJI)+mKH1n1 zy4qglyeB?+^(G6%wpyi%TBgU~R>wa&?I`d$G@2SSoXig+^2&41Qz4`WwP=Y#+$>t{ zW5$*VBvZVkC_r)UQ#acsZm)^NWJR~H(OThrH&a6yF%QD|O!rc~BAh~;7q-i26P7gG zL-1OwA0F-(d=Xh%1=6Np;lX*P67kYZrHl@ ztsS=6U1k9!%+&+*4a!IFO0N6q3&!4$#G(sl&IMG67*TpQOUTa-V^vw&lNY=yp)Tsw zbxv1rYQyLE554kNo0tlGCi)O&{DKv(`_A+G^)%MX*MgS)^5@fM_TJmD&CO2`opA9B zP1xR@yZs_yMb(O-XRCef?e)(JJrIWYQurnQ{V&5H&qIeiZ47@MP5DVL1?Q58q- ztVxXNXRyml1T}XSP~SIwC63Un>)boWqP`>_<-t(t$FCf^j{Dmj`d&m>>Ib!1hCI@E z+>dB2dXgXROC!>M?;#9c;kJEDfq%6}+(lMVTjn~P`344L7o5-a*wKR1&G*V^yk&<+ z?)jvd6OMm74(+*)MER;FT`2Y3Swq;2+|7xaot~u^lKLlzoZ`IVF*Vb;Sf>icQ$ndEHSV_S{E?^4O{Hk|H(;-&|p%%qLU*R4ViT}UyLo``>(?sbdj|9+`^ za;P%JIfGs;ao{Eb4Um1Iim&djz)q5^J9%Bb)QKwhfu{&6wx~Ma!9|^YWe6IMDlj#Q zs>9WqHgSZC@AhMhVeQWZ0NZTtuP>1&+H?G!%r)GLu6)eL@P47)3eF3Gs-60R&SE@ZnbSvo*5&vr|-|^SN?XMpTg%)Iq&zo zlAI0fB5n02CSTT{ zO;UJcRb)dm;X&ojcY464K|ou3ikDWiab_@O!&P}pajSA7)fca|CaFvC{e|eQ_p)JO z$YgjDAS|SXjNq}eVa%Hx@?QQlgd{_rF83ZHH!Yawgj(?}{nnjvc*#uk_2zE*Hq%?k zl^Ey&F_$u)FA6nd{;CI|yTio2g~ zYJVycg#^}md!0^%De;V76!|93%WWx};BL=8E!X=ge{@@GBTb$@nif?!^tMwV>b`T| zZ^NLhV)scWNxg<8ix}S*g`)wwov-X@EvJ02f8P{Z0iBm!SP^R{G!#Ku-3Lx9h z64}LPky{I4&x?HK4X{iJ-n3;(Mh)JN*JMoD(u9-KRUfx|?rwS|jrczpLHd!A2mU#4 zb0Rc&V^-}+y)j939|KKKPt=I``F#FS+3m3@{9tu3qKY*{c$SE`er>M0;lh=qW~Khj zHKcq<=lhb>DPtKmzt>PD@cBD@L%$vaOhNr0SnS4 zSi4K`+NHIzG!BPqA zqb)@w=J27zB%P)atqw0 zNv;h}ks`+JlK7wTm)Ru^i9<(fnQClG^5K_9eio1PQ~khcR)PAey#%W$qz*i9MNK zTbl^tiR$AHg&41<(5S9av=<%iibChCnW%j1VyjQH+caWFl-Fo4zx=Cpsylh=81j1# zyP7CZXSFdCn|ZwF+L-2C5U3~kax;(i>kW1(g1^D(v`&-|i`J=i-oW?c4bh=6Z-!uq z7jX_`5Y>f7qBGY%#Sl`k&vg*I6COv;AZWue542Ggqfu!}xDiL%`$brGE8vz4J{i$E zFalG0B@0Mhl{yBAE(7Gh_G!~clx*db>1huBQHbwj2$!t{Y|W|Y>WGSEi>xe{%VMi8 zF3a|>v$YJAQYa8SB-UQrf8!s>8NUd<0lk|Gu+E3oXlL5QD7 z)VP9V907pQ$zpB@zuW8Xf zP%Xmb93!2+7-q|MUM?pG%Y|n^Gu$O%5*4!=uEwev3ioXWPKLWdsNp4?T7E4{1*z~_ zWC^QQoxtuF;j$4s1vl4QM<^%4d@B;+qypD=@*+7ASQH!y>Fh*dA~{nJr(&rM?!FvX zZrG;_oXN@HXPj!qGmuPHrgMkwnxGMye>TL4;6-+ZdYf1L(fI&e__@rttTMc^+_${4 zRLE$gc+WHtCVNvF8N!mlQeIW{Qa*oabrr7^T)0~1SN0(MLAhUf?V-DHRbcgS`JfDN zXTzJOMJ3*5Dhj=6=#2Asy089`!)HvQvTWkF5h_^hqDj51Go=BgXIMuj6|q?rgl+LQ zEb1f%Kj%k@`%Wbn4=}o=QMB*ri+pa0`U1zwX0sQDb+U6^x$Mp`Zg&gfaC3pv^L~94 z$-+V~4}K8e!`1s?Z?a@N#%%uwfjS~sa#pzMlGo*+%U)dN6Q-M9;Z#`YR3UGhz+d=9 zmj^|KIKD`^5#T8h2>pbDDFVh@P%L~LHIrDfpfx`JRy^=0Qm`sWD@axLC)NGBQIE98 z$n84gdA+#jAFV|3^oW)Szn0m+l35Z}YyOpR)GP~@2ly~Sj1R9oRkH4xVV)2XuZdT3 zQLxWL`J&2^!MCCOvmx|4f# zJNNbawXZ$>L{isL>*vzv6Wm6n^vAxedk%>bPhSD3+cP8K>wKg^+v{9)Ukx3rC>+eN zI)cmK*R*%Y>b+H`T5mr2r5`)}`fULC^gc_~9;2b5;Tg2~pvRBx8#R^1H|8k12pP}7 z(9vh@+I?Fu-5z?+@r>?y@}%oh$P&3H&ec9x+v-JEt2rXS)x1~0qP8~#%c@8{08wfH zwTB5`ZuQAmtGV!t8~eB3lwa|Nz^v1N_o!C0Rd=DvUCTNe3i4+qhpRRI_-k8EGyK!Z z^J4<%#mvhoDm;GSAqx~&B>wEG#(L9X&OeR&)}*J~eXS>x3`}ITC5DEsN!+q!Uv2Mu z0SInwpbj1O;2%w=lPmB%yds%SKg#zQo}xCu4&=26D30Di@{l`?6o`MxM7{iCa%B&M zA6+aA-;MX;yTgTxkK$MUu{0PDY;&|7=|$R)+Q3(S&C`NWR3sK@-Lnaz6MDnFqPg&M zQ^pb%LhKnj@b0w@kIxLIe9ab_Ny5S9)27lC)#lwHQ`?L`;ByC?`J%HJvYa3$P zVB2}BV5w$j!9JI@e|n-H1-Kc0`GINHU3oFuf0N21jV@l}9sPYJDRZOc2eCak9Od#HW z;7hy2ZDM?4Fr_fjlJYR`0)^W+a}*```lds zGI#luZSw17^C7JD$j2RX_jf1mYX66s+N&|&8G&9`<{ zHYi=K7i^J4R0lIno@vfl`fw>s?%2L;A(MtIH}*ua82eZy_C?y7^h`F|8m09P5Rt!;4rg z@n(Cgxj@jaI31fg#vXI2FJNo~B79LPvZMTNEKvFs`NUI+@?O!SI33D2MQ^~tM{-up z!3tas1*@h@A5Ddiu0aE08K;|gk&6f`K1{SkTd%_l3wSYB4F!w-uxpB+1z^uuxfx-Z#&JW~t9GY~J2_oo)E zYs%AiI3Vl8Q$-jd-*sPgJq^R+9!j6DpH5)H$miRzhCGhGw(rV?Q1k;O!O1`$6mYo+5)%QAj1zij3kY1;Zcz8_+0$!YqF{DAze z5wtW#bhqlhKl(L*j|X1Q6x85&jbQe}KpgY$bn0CTuwX6U_N0gN|55Qcgn!n(I77p@ zAF}*e9Aws{;|21X71mwKRJRapG1VKQg?G!wy9PZh4cvK=fKnha=e=DZ(yWs3gp?S0 zjD<2UX)shnO9C(IdmnYjhJ&+;QAgm4+hbfHnk~^RxHY3ake6Y^^E(zu68=O%AA!4 z5<0k&qdZ!FagJhoqOSwVwb_$bDl&65f=7<6^eGlU{IMhq;q{TtBm-lsQRrfLOaBOD z{Qr(0_zDo2@Of}P(rJoiIkcj4Fp*LOEmS>*Otm(tGf@p(_nN7F*_HGG!WjihnT$M4`GkmVgXV<9v9v|jW!G7Ts&%a+tZzXjuS zr4cKhm!}ao=<1@Zhu@Pc#9CQhxk5emRU)nXEEr%%W~ z&VMZ`Us`BWxTC0ZJ6K+B);#l>Cn@S?$Ldv1nYNYQ`pWaEO3BOZSlc zV6F0zcn?I>o^xz)$27KW(t(fWmED|c+)H|5^l3*?N@`sRfoF)fE#+$%P8AruHsq#% zlM^W5LPD<<50`*VK*;1x_!QE7fTvt_xO#U$!^PLr69V>s5jhB+-iGN596?M4R?M~b zvo;Jmm*TH$$YHsqG)*%!n0jWmD{iQxMETKOzCTOIc-3#$`9MBjF;*&w`DD9@bi7Ia zMB0&w%0#{Nmu7l;=#LORN=cD+X>Y)J*!&^q1g~*>3tRhHbBkXnxSYTXtGS%{x1%^( zN?4#RHwc8uQ^tgF$dkwc);XgL)af8cUUj&-joal4$u(qY@B?9sujZ{c_vw}HWBXn& zy({3irH@_=x9i4nuXvHuKrA;TcntGy1neY#R9DwBVqJ&N%P7oGpR8RhbuvY?5KINw zZuZBE=n*ivgrqvcz-Imhce)w(GYp)XEw{pT=kqiC`hQKf1%b5ZH|&`OS+A9vM*m@b zr~Lt)Desqi<3W|aba^>JLC9Gn6tBt%YRRv7CFp9EU{kr{H z*?PU)C}OOq51XQ_-h6X$bo9cc06&=t&zXRP!ob)<++0a5V0JIeo<0Ms57?(Z#J%(e z3lb(zf?=SI03X>R*qPIDpGkFLlv(}fMp}r4Im5oUHL&^i%%$b7TP9)>2ad>j4{vN4?0H4tv7;kB1raGUwtXZ2_?Jj z_ykk#!L-9}F>i)NQg=j3U*x2yRU{Vqd>^(9+cf$KuKdG9!RmB8oCX8nz`(`X$`e4 z+PN>WFR9tJZSTBVm*LcH&yq{-FSq-)vGcXC+CnDoW9ZiGl8$-lKyG%U)x-VUOtK_R z<{$*cqRsJIHC}OEQZLNk(^naV*w-5|KT(_pIVi1~Q)M_{>1E#?-@@#iSc0yTb<~W- zjY-ES=}X^0EyTXwNcs73C$FTO0gG++8)Yr@sNibF?4PqbCXBRI+j8i0j*SoV)Tzef zgR67!rp{U&asArsx_7yoYHCDq-?OVV2}%k80bTG;bti{9YTEc%plh~1|pD80>)e`Y?Z$lV!KekSx~G{$hGt8BQ8Cuhb^YYxYzOj3Kv2hjrW zL5;xJFfX1^pJ*?1x8iF7!lYmiRt3=A{tJsAL4%Jd;Z4S|TDvG!m&S!l|9V<#tfDa` zY?c?F)uC)qp167tPhLEzJosM1rr`~W3;l+AVslDmrD}hV>1sLxiUjT48F%CH?~H;g z+1wYx?4mtBxPW11O7wM_?oGd%pMGl^n z-Fl^JHt7B+IT&{0Y&#cX*u+hv#{}`j=q7QJIZ0bRpINz$MkB8-diTA1at8VV_$Wpr z{$%|2VPnj<2axxK&@4kK5C*dkU>SR24e@rPgpY&TjkP3S2mQLXsO+f^vHw~7hsajK zVEX@_Ozyda4LkM&?Y~44-|5~u*ke&2w<+Vjrb|&Pcg7t-mrgoA9`ELZrZH*UD=jC& znz=~9*ERbs3M{$JVO+`mBjCkLXBIQ=eYcFo%(v{FZ!V)NYpEBvd*wJ+StwTYgF zsD0g`8$H4KXgEOPMao60T00M1SBVKR+xI@RZNnv5v5pVJc42gtuyqojCyR@l;zLGB zFENxD&k7(;`yIvQ*;gx8g<^8UJB}+3iK4cz0M2xK<+JPm`{Z|lDu^2 ztpcS0eH!UjDgcRPYw1}FX|U?EQg&sLp9w8+w7x3f>k=FI5>{V-8cU0%t+(`hR|8(V z;Peb040iK_zO!#lorP6-!a6iD;%knmaB5?Z>)a$(5&HxvcehUL@GjA^s^8g5?u`2r zAce`)4?Cyn()g>N#4@p_dmL4wwr<4u5PQ%vx#lNLD@ubPu=Cpc-^s^T^L3ZI`(mzF zea2$2W;cxQzRUCfR>XBKvg7*JuAW0X8JaoyIuhug^v-&seiF{q#Q>YUPaPiUNxpGj zXl}M(miU$V15fa|diQ>YZEaCX(31)0oE!XaY??Es|GtDI8&!jb%Ci`WprzEGv zW{KACXT0l+@nuXJa6CG_&&EO{u{AvSB$s?4{%ZeVmn~++;^sgw*ZV$|-*^XYS|zZW zJ6~{|n`Rd6Tx7?eLt%eXYERlY6o^eqvx<|e z3c~QN;;-dM|1o>=nDnb1=$2boU9oVCt7ej3JZ$Wrz%GAB&iZI0k5Bg|3|R&)+Kdi3 zIB~igzP)JX(^vc&b&WxTjh`&kU{9vy6?m8Q;ZiKVu!P~mGi)Fw?E9Sqrr#LlxFTvl~{~~!(ZoHyV z;l5|a<+@xR4??=mBECu7)M%APAi?ZPQuJc*`X8$2D7T0yMFaY=`pA;eXogpIA zNe5rU#KM1?9O=l@Sf4MOy*Z)gUowS6;gjfOgFIhS1gR&+oyhA;$^vZU!Ven9<{a6< zNiWWAFf<>`3hcCkDokS2UY z@@S9r5A%8N{1a9iP!5tJNWOUnWICz$HB2rX*Dywi5J|oYym_`PpJH%ZM^M%wgoVjg z6!)0a(;akvrB|~ z8mGo@XM4R66}A4Ca?5DJu0^S@QrliA3r?Kl@y-tyDBJ8(30b0l4IsIpfk+%dXaH$T z%ar?x!P2tQ-RBlNnAecR+iKCAdMB)1OS~aXf(PnUxuxn7xvIJWI1urcE*Lu{QP;r@ z%V!^d3`E7WveGiqCJ1$jhlQ;Rg`q%c4gLn3;=NTOVr;Jdhb{ata(vbi|=o-)s2C+3^KEF$jqr2a2*B2E`m~MkO7j zgEw!>-VVL$?;3R+1#&b>lU50wgr%U?>)=Ao%H@H+9-orh%f457C4izaos3*i>Y0%O zF*^{iwK39N(p6S`n_tTidgsN1vF;Odl1v!rlht6-M|OnKpoj<5>f3fGEo{d~6aOa| zZI7BNT{1vrN{Q&J@Xe^Yx&Lav2A&%Fj4+CNGfT?Y(p}P6`q)2ybZ?CTH-VhmmP;eZ z$>>|$H_%3)C9GNF<(8Qp2gkyu4oipqhaIjVZKD4K*@SMn`ad~;Ag=x_o27*$2KvTs zF3KIqeMtt(Z&$e;L+P^R-{?F+I3MQ$DM5<#cv^$Gj0E=*( zM&}7!$o!keo1$7yymB1=t-;&Nsh`0uN-rgg6THxhlm9u*0NN{cy5!@yCYR{A-t;49 z6I0mQF$$&vIcP2|{W|ih%JM8vqHK@=y?p-B@p}U9w&QH%)62`@6**L*FTeaK z5gp&g6&w$y3+#?)Wtvumn&J|#wE7?&5QPEbPDJQMs^=YO7? z_owrZ)P!fPgl41$=EY`;z|?haOwn^-ROxC66s{{0H$d+F_q)1-Ww_WA@n=y-B zoe%3%{Ntr=@`FxE%f7^3h-X2Ge@Z@{QMuI}Kr`@IO6%&)r*1tqC}ExR&OlDB>eEia zzuWk_-zzQbKNv@;lE0lq*|vPw&7|p>lYR^sQi;Av@av3Uo1NRF-kX0lzlM{#%=2~g zGWkc4*#fcQ7BJp()kXmYPV z=-J-nfS|vBWNsiV1?*8sR`|1y<>PzuL2z&#v|fMHRDzhgNq;@GZjh*Cs<1`1IvXZn z*n|x_wTW02$dH~=&(YDi-6)-SL&y;(yaZ#g1K}p-1jCc@qDxGY=1}|_a`3!zFSCs~ zmSwpg6kdTD*YcF~wDfK!Jd>H|%~C&8pM`XDt%kJ_1dCC1E<0>)xb6{#@;7zxiG%mW+&0%~(VCVI$uuqf&{8a-cNLu%5`8_f zJda$CzE?Q`K_*n*i&jlg@kt7f$0r>#%61hgKWs{dMc0Mk(+UX>i)%p zEsEdNLLaT5n8nS80~O)hV&6|*x$|kCfa^^+z8+Nnia>cA3T)n`-lGNaA?U-ZuV@;tV}@$Y1n54iXrVAW0j@dyYbpNT(LdDk=x1kE+xEjI-%gUD7+{O#)~=f-9frv;p%)<-qI zT1Ubc^Y@#;A4gr+Xjl?|kCO#2AYYeH?F=``oQu!UWx$70?$${WL|S(@_O9F9GUbc?JVW#v}z7_eTpD)AvePy6Yf;j!SGULC!DFz#P~fQaP09U zj%8js^`3-6e15XmET?*pLLvLm%Xc@07rS}z03KT``R$ATgbe!~cX@1u-*TqwBWviV zZtf#j=5p|m1&#zN{$yWNTx|LSM%kvhvZ-tTC<1{R<>)oyzUv%>bG=`z(R1u|+<*i> zS%r-Vd2&7}u7k|tn5K(I zSLQs>cpWE5G4r)min<2*9^-sUtJskz?QTpF@VAQ;tPG@-#qdA&tFXVG&6?k} zn$;Zuu_uq^uoZ@Wfn!9G$2RV|ZDwa2*sAGIQK8l6hMzHfE+18``#Lt#!7Y_typ+M? zW|&`;E#>AM{gZ?KvRjE_E8~8N)NIzxc$|~rc!ZR}!Q-XHOS~B6_tB?p@fTDz540m@HRa<%o9EY9@aI8qO>l6DD)T26X`@1rA(|O z)Ndg_@2~;W^|3X?aNP2pfzfEmk$O_*SFY~1T54Em7`3*o3y^eKCQ~(6!r)696{=XC z5M(I>S)&)@iiVo!ZuQCW4h$g^wM8@TeU|WLatq;A_E-}Bsn^6^S$gk64Gd~{=-AFe zf8+>a*f5+an0m~r9<*C1xdedSC=RG_GzgXk8il?o=rm7DYbvbqR3c2mqv3DoKNO9s`@ zk79EXo5NWi5vaO*!5Y^3>XD*9sihAsY}E+~SvofIIyN`!+Sff0W<1~xlx0hKn!8DL*mfy&D>Fz+% zjd#QQNG?Oh#xfoxqP=B`vK&p$Ud7&CNOi&*TA%_g_CF3*7Bj7_KcAk$RfCyU302Hf<-%LEfF z>21wzD_U|H*Z5~_wF&0LyuNub`35Kc&H&1}J{`c3DP-tf{pAR@b*&I%V8k!q?=aNR zTPk0|0Sr^K(d53$wi`s3@;SB&3#GBTqk+pEn{MP;Xe>+^nH>Yyzh}s(l(1`wGxjT@ z3=N|eOft0Aa>TD6)|;}oB^_pCKEE$QzJN8kYg$rVq$P~VH)51S4KcF?g?D!+F-i)} zZ2~bH$!%)H-^@V}r~VJXeXV#EmaKqY!Ls&NKF59sy2_a&VF!d9;5HJk$C%hm+&Ig?eK4-)43uFX5<++OrU6bV??4jOJqr=oq$dFWPs^b#MD0Fiz&n(8k`puG zd`O~A%ZqgiwOxP^X?|C;L_kS}k+KMZ;nFnpHE8UQfTq4CAd{kH&ZnQBH8OM1sW1B_ ziv({vr12#l^x!?gu6cP$N|#YZ9`d{C!qFqg_7ukc?3&|?8udOt?ObLUEYi-Gi?}t8 zcQ5+#H!wBMMk4uqEeIaZ%l_e$oTaxl*-;my?o zYYUp(>yFG%@w7Bw(alqur8Bmyq*OZ><`m~USnkYTGwl%Ds0LLC+ut$}vC-TPwGl0h z%z4}*r(;~s4rLipo{%SbI_I_y54ztyJI!9%wq*?#t+S6<i^WXcco>+;`qs0jn%hK;1g~(W0|dFZT6(k^j~|fzGraj$>xI6Ub>!-T;!E9 zrHsF*?HJ~g%oXtI1TkUt^RRHGTh(1_%RfC0pQnmZ#Np6P43=#-tdN7&q?w{ zZ&A|_$-h1n!Ntr1-~ckX6>KQ*JNqno}%`N56oy#>nzbLF)GM7GWUlPCX!`)Vg{^zCk;>uJOSk7?UF$-i; zELuc@W!`(`_=95w3&U93LitX$(fWh%J$RQ}ko`kQ|~I9mu?0Tk7q*OGrF*p)S^M*hPPif~dJZe=d| zsxh$Ut#eA_;qYlgo*Xkdyt#>99|YkT&V?9^H)DXOL1*E23qYa#vp6`mlFyAFE3_!% za@2&n`4LAo?dE5ajFK$ZT=|hF#Z>T_+Hc7>Tn)MWI<;}(S)PKMaG{sOJ#aCB8?=3A z-@$q>Bmi~FQMwu5#yOgEaKGtH=3R65YDrHal9UEvyci!g#{Y+Ami8=+Mp<4 z2s@L-7R44RC^CUzD?c9M9+Hr)=-%k>?tdH{mTo(p9lUNbp1HW-*V8O@s|<7~W~Qp$ z)VegquGN8VfvI{0D5ZvZ)jY#J*^2J>aHnJ&jE=ogJpT#`*ja7Aw^|C13DM)xF{5t5 zsTGbq#anY$AaB#dbA0}}qdh!2mj5?Y(Vb-U?@)3#Mj(X!c;({stR=CWaetlyBQOYs zL{j5*|7K*J5$ot$yn<6t@oCooaJhy zAGLvz>4n3GdB^kbwx!1ITyN9daQ#2Bp(PHA&3(JxP_0D;zHWaaDsE9~HBKp9A;R_W zv}Gc0+!9$2>(2w*RyT{*6#d1WH-4Xm1w~`IN+W~Xf^S;3x2AR4z`>W@8Zp;_KWk2T zY{BZWEgq*neg$P|vF+(KG=5^y)G@)i?6H_dVT89e>IZ}yvm7smqp;0>V#Yf@N5VP4 zcFnp9k%TyX8VXA&)(@!-_Wnp^%R*1YU;T*@80p9C5hYw_eh3EDrotRK{&Nyi%n2M> zj>mD#!!>}L+XFsS44S3f;XiFM76mts^LG2|NCobKjhc;pL`yog?T{k%i=}=g^A(dsRJqoJal+EqnR!Ec4Rv}p?!_KV;iHM5A*(}a8I_MAQs zQA4CWgJ6^OE)+Lj&Yn)%02?ceaTjC*qQlD*LdOn>9Ix$D+6KLf&l_KCUNsPRQALe$XbtAt4A7~o`a?frsgI`pRr2JY9W$XDJT!AMD+7qBF1)|7XBJEJ(R~@SH5tKTt3IrZZ6IRL?ri@BbFIm*ZxV=CEA7j zjrWR!0WVy`q$~a#qXSzF_gcCdN0XqdD1-ZY*v)MC{&Vt|w_U#tiJAE7rJjb2Z-|(| z5byrR2pP(D_I#V*ep!5cc_=o2Pl-*{g_zp^zfZJy-C{CseB|^pAxw~y*EG~qDSS5P z;W7`#nQyMWk^D8}e&uttx{Z)J-}qVUZ!{16-TG{bREn-v5nUuTmKvjr#=r}WETpli zT0V~ZhJ`!YICeVGCpHsRKr)wl4Jk-7{`681&4=XeIi4sGT^zERip$VVJCiBK_IinQ zGoE5%2ht9kVFcMhyJOS&!$8M{A0raO!q9K!NkMgbM1l_ z3Z-RL8AV$ezJVCaZ-AM66dq7)VcF1u@p-QP9ez1!aZOU7l|o(Ti#% zAF}hc{)m&vDi6j|Z=Hanc6j;t@ zd{u@s7^$ONh$f}cpKbJ`(I?d1q(Suy7E$`B?OR)bOk;NnL4ZxBU-x+&wx-1r%<$G`zh;#0xW@6Z|%KW!;atOW*@7TY6r;@PyQnWhvE}?tw8ITtDxjaMG^Jm{3$mG* zAaoak)UQ(xTTJ0Gsk~EH9mB_qK?GOCbwVXde`Q=sXASldwB?yVXOTX_vOFj0Ao>xT zRhY?{5Fdn@QRUQmH-orZH0)91~oXWjXg>x`%w=u}=<;=vRPLAx-v9)&sW7 zfs>k|C~_%kOOSPZ+v)uWRlZBUB2n%p+o{+ID8RGfixnA21K*jw+BPdFPJ}w-8Eh6$ zPqn5xj4oxLp|AszC@k7J`Mk-Z9SsluONy>^@0IQY6yW~qcW^^3*NhO&j?@n|4Yc-| z{kNU!X&~3}VFeIF3}NZ>5=tJKvtr3lj`BpTmLh+5%VT_sfIHB<*=GPW#5jeh*^t4w z{(m}@^Wiof^y{T8f;&i+VZ2Y4*;)8vN}nx8lM(-yf;?mfcz$ET;Ex+YuhleeEF8d; zWhCGyO0oH4%VwomGV)n6c=C*{8feU57ze6K-IzM%#VgGMF~Rir9D!=LUhNvar#9TweG@+1eRtC-Xi=x-MF0w#(ZW zf)=ci8K92oL5!6<4$vmrLLDZum_{p(Bs4G3S_1*^H|HuIgOsu?Mr0AA$IDE1g0E#K z0ajCwlbJjRh$*=BX4Qt#0`S(VQAjr{@Uk*@!XM_9rccb{I1F30k~2dL=1vH8){&`+ zj}O4utS=9^fROi{tfy1{a91(C1nshsXF-0Qs0)oBCc>n zi+Ugrvz;Aq#4Po@gu~m13y@d0Bsw0SKUYzf#Rw~6xO?wHFJmm;{Ty;w%&_3p+Bczc zltyqsi~FeKHY;L39r4wc!To3E&mI^&c-9gp=Si$go{)Xz?kKGT)s{m`mC9R7AyU@>x5v4gRAM62Eolv^t@wj{e1wZc;L{TF4U6 zp1hO%o&E?CL9-h(k%iPje>xcss#t%+Ux{2|zmNea6fVo4Z0m>N=Hdm)pY>{`MApvn ztt{5o@trJUsZq;!%BO^881COj$tWXnpdaDa3HXPVlX%I4%7=LJ(#jwBJG?rB93t`4 zv@MZnd+8IA;tcA5VY)owD2v_7?b}jWNekN$kf&Czb68jD?x};xfHVg=ND(YER`XXY z2*O9qzu%D--*!aY^vxrkBIWts%s%{fQAj7=M7&xL5Kj>gv_>O0iD2SWGy;7b`lMpP z_1sJYxMWaKS-8eD#}eBmP6k?+yR}8PmSw<#))!k^w5>(!0^3;hZ#yxEcD7-Ohl7;S z{(U%pX!9pF-E&rvMJjD{3UlYqzNku9^F@_{_C5~;*8>m`s>0g{6!KgNMK}leX@li*r8Ge+If)oX+Mdkv$gw(uvFD~)oE>c%u&Av`|5dV4| zV;zl-jj82P&y_REY0Kbw23%G939ot$i9IzqRlm3vJE+UnQbuVo3N36<-uO^)|MzPc zYa&p2pBnkD@_k&;8T1Iugva)_UB0Q7I%pqlA!Zz)A|f$Ks~0;trQTc$V;wpyjmfb3 zA~65LxBe2uGQRo7s0?3zQ41L<$9bU1TpW4)$4w0~JB%z)E8~+ggX|)#IMYIJ`ypcs zm8jPS>rgO0hU@r`uJuxq!QtBf$-w`Aq%GQurf*i85tq4I-Nu*hIs@m)ZOUjjrW==D zN;G#@89j+v%f*X`)^vlxEz(>=UE_+IPxioQ&w6;pJ=~FMtpRCj>T6h29m70k;f6g% zb)-e7oV3}mXq{i8YM-Q4w{>H_&U)qi&lmX89)&OyF6S^d30EYLw1$y;Igu$SIM@0< znt)juJCc?lyeT>j%Ez_xa&RO8^YBetXbBhP@Sy=j|OMHmK(H#iy}`ot-efd^_#M zqD5o9Rl!?c8O#Wd4dw?6P1#)P*iVekUiH6Ar4lgM1e4Zxv1BZ6 zdz*(K%>p%T;0t=Ip!i}zI|DdZJgY8PH>CzX_?P;uE_ikwKzHeMI)HXtpj!Y`vQ0kV zXW2{fHS25q?7afbWLo)1Dt)A+rLwnndY7`3raP6pXjuR>8PQEY7XmoM#(wmJ5ZYS0 z%CRIYEiJ6Xv5KzMY8h{n+N-G-?VzzWu$(MW%m|K82%PCqLY4;xYThQbS5q&6gG^zo z6z}Rv+2?b>j;;0wP>KX126TbCu_ZvX{RT{|1ngnkvJYs?1T^<61h;ew+caHgLEzp} ztn*p*sLG{Tbqe*AZdbC&{H_X_uZaf7&mZ+;ow3=vL^&AXFuZJk76%k57{w>{YzY^y-SGz`E~V&=`LguvT^!{J0Bc^5*Pc>xL=OaZV{6CW;=cM zi-QF(*^CJI$oU($5g5IOZ|;&n;m#vxlbH-LN}TiNvcF8-7niW<1Jzc5zyE+n&rMx~ zVZt{+i{tO1Iy^^#K#2UiJCusC@1>o%a05%Y_Bw<=G3zf&I-k%Frw;20e!AtaSrdFj z_gQwY+hX)RocvcAZKccpN(K}?sl**LrrUHUbu+^=GJFKb_03ffqazj(x|jmOZ=5+L z_1kt~UG5=1`OxR?oMZQK+BpOxonrjY9a)ncP*Yk;1NwA%)@VBnDt8mix|8g@5wi0s z$r@o4>@vMr(yPZxegK75n*qws<@^4JTXJfgFyaDSO1z@({*zeJApp%q>aU=c_T-CP z72mvx4&$$8|Gf+Mc#d?5K~)dIMxJD2z2F=dp{-zHf+f|0yJuNKM^BSNapV^JIVB<* z0r<2(vJO>Tcj}(P6|x1ye@RbFUheJT;h~?RFRa1hU8gT3viT&A1wJJnwPY7pelA!3 zm^*mrgpvPLU|<%sSIY~H*pHU~QtpDJdBf-Kr(7IJ88aYJ%wiE38gjf4wBPS1xbKJ3 z)amdyE_g@|JIS|t9|9am}?wtSuK&3toI;jV%ZvQ*v8IqZ+ z!lY%j@g6!wDmFNLD<^}fY-4(){jUabd|#Yckh~h^;1{q4^Jw?pJFoncrgBdxEHUCC zetX>~Htxq2HeSHPMBz+2cGAoHe<^T@Nss!|4y=*zz3V%ZA;KY=DoMV@lOGbqWaS9H z;c*y+a@FFQ$6=jZmGrRJLSb(XOUCd$Gag$UD) z%4WMQasQ#?=9Q14bj1Hqh7bL9cZS8C@>EHhAE|G+XD{Mt7Y8a8e7@;&X-PW$Cw(l# zk0o%KPG_Dnt^kY_FX&Wu#rQ&D)q;6S=2T^j{~nEb>N;sIQSVd#c5IApp6I;l4h4a* z?NB`rJb7tI+Zk3h3iX**o}i*PGbJz^=Z7uK;1*?PJ*Ov(8GejkJb7=-J|utM63w?VoRx6|0Ep7#oeOum?Nj3=}UTfKZuZa%__=p4Fr21B$hd@)y3 zSVtuW<9Vu(Id&2oE|)7f5hO$R0pBp?Tb|10vw%EOOw_?BuQFE_tk$T_4>Tk#Jzef~ z>z7Psr8&}1jjq*&0zTU}=Oy#;=8dzud0k1*ckAWQuf8~Q@c?7}8*hKmU+KOd3az~h z+dlB3?B~FnfZ{7l(6p-huf>*B5t6T6k20EhW^S}RWo-z>Z_0Y(za|9Ba* zZy2@%Df&fsUkB%Ah89h?^>bqn&`XFZ0cCc&Lf+j%QW&u-&U)+;9G&oqMW$`#PsXn*?;kqZi|gxCt+t%v!D`|rbwgn7DcqMfKQv(=b!m%Xx(k{n z83}It-sY2D^S^h8x@YSFDhfja&;20K%1+LWHtQsNd8%fhLbmjjQP)J|?j`Zcfu-{!6aOkw0A~<^Ua_4(*j_;=NO`-TT)9Fizk5!VKuxs~a>`nFx|9vc(8(&RHHttJ>(R5=x$r;#J6kZk`G_HAr$3WY=#MC*k9M54(2p!s<1yyXD<9fu8YK{S7^ueRL4%iUbtKGS3cr@;Ae z&$KBiniHWHY7%7OpWKahA7+}Ulhk{k77B;rvy4OzB7Lks(U0s)^PziBPTLYuZuN9c z`i~WD$U{}@n&>rqLgIv%)CLBC^=qUx+c@46{TeT&P%Pin4IEW*GQ;hxvvtIv)0k7q z|Lp`wPw4th|6DjdO&1%VDEwLDS=>y%E;5hvGRJr&#Cau1Y)66+okq5aCfu}_{h$s6 z%YJ&~V*>Tp1wAg)f~7=q#dnFDnf}rI*`wthSGYPy9L$sR&5@jdeZtLIq-gaA& zD{`+jbFT&YW5edp=&|QJL7yXXhfSd2GP?RB?8SB)O$VI!o!5;YL=r7Ilv3=z{=FiW zcYDoqQv)l0l(aYI%Wh%>-yB!~38dy=_#+h|D~TUj>12?i>5E7rHHl`ABmo!7GYWl3 z??DdEIhIak5G%tl%utvqI@R5xREYQQZ`!p(>aMD!W>gM_T9Wb^E0MQdzS@5?p{cv7kR$eqXmY7+1|yLlzk70^J%QSWM~{VfzElIQ{VaUHclA05NfAM& z|F?jC&7Np)eZ9IFbX4-!eJOenKC7mXkAFEQ!L%sxW-`4?ESS851yydnro))YK65NA z?nFQz4n7-j6nF0{1e>|a08l`$zn=`71y5i<*#m3#nGV9gbY;m?#dQDcLS_-GMYLZdjtnR%sDZ!jA~81o-q-f zBbpyH{0D55N%)@4%|K$W#}IW8w3=2r+3PYNi4_+n-=|XVCr47Tk@GISlcluP5PkK2 zI&BV9X}lZ5Y;eG$Q76UPWxN!<8(W<=i4~oXZNb4uVo!#}`oMqP%1X<5P;POi>yJ`7 zs?-~_uR0(HoQ&SrXSy4K;K>4KT8(!$3w8;%tubz&!k_O@w&N-d^FMmRE)M!JA0GbX zifLdMH)Va8{f~W%xTkj?TGZS9>1f{(C-}a8j^OzlO4(&WW$<~y9H$lQ`vaqqm+7Mq z9CLHPi*G)DY&dxX>k_^>+4SnOVrt_fU|D=5BD-ZABxB2h(ryVNkp=>JHg)VMqzgTo ze*GPRC~t)^j9i@@hm;^CxHxvnuFwIG+iX693(+{UirpzN(wI^=P)P&W)99Zq-^*s3 z4L)5j1>8QY+ljzH|JF&68GEOPznt0sa0LUcTdFGA>^CM5uOSnH*N$otTNJGvIjVKc z*Wfx;j$n(`O1J+ujrq|(e2As3HY;cMbal2LyWjL47At662xhs|kON7VbJwal=>Q?Y zl?C>HgsPAY*3eW+{QIN>U=Un4`}1ch6s-w{5&oLZ*N`s!TBEpsMDz1VFu3|K4HdAV zAGywVqV6hnbf-wu8%;8ZOnh^hOncIV9%Xwh-0KI;5Z7q~wyd$E80pV0z>WRK#W3hm zGi2e27{YO!jAHki5Vq;uUfRz#gE$<^7P%Fn#mVeaK#98cm|t0Q#Z0|g&-!D(G~izV zJ`7Bs*>QvIx5~fa7NFi=0004@uryyCJ)~=)PeWUDhlu_1OF`v=7_s5$dy697KsI4R zgFPAZ?AF+!Q*n>ik-{=)!))$Jzkq_6xE)opKmMsC{N)s|{^%NpdGrHCC z`yUx6&IX=ULc(oV$uZ$EuexMb>-zqGePT{AHAbxo9FF0Tt+F+L58&J(FI#>jlRsK6 zlVNWSoRQZe^aUcWMe4)BfYmQxEl$uDGfs+5(QhyVj56YgILf}*)S3xkx-8$AfX4vr_Q|seBBLpyBu4u2d;u}yI1o6rK?almuY@zrAk_!MF_2c2=2ICy!SGCg#z zS|prlv1>g*EG8ak4Q!baijojS*mj-pV>A#~8WkI@BsMTOKE8+>*yW-dWwS&Hc>l#2 zEg7yDCtEYKNcjCe^!)HXT;@HV$SLeP9#Iftv~g3G{*0aOqSeQJk5jm=*B;OP_z;=s^^_NcDLI5&uaf>vhLr-E&HD*!%E~w zEiVkYWD{y2M}e;!MH0wrpSFPv(dM;wezu8_`| zJzaQ9vt=kF_qzjgPj1h>{(?U`=9!7X-T|HoTKwx2+d-qPi5LHs~JbN7Q4lU|@@k@v;_~6LP2z-pyPrL5i zk6~d_0#H2y5viTdNBQaChmniR7i-rG*iEh{pahr@ zvj`yI2~PClEtcWoLdG09!2e?9C*vTTq`@B)yuSIzCOrYT-H0JyOHNyV@Vi@7T6JDA z3}*+h+)9d$)av0kgFDZTXD)@o8_?icUe=C2xHwYu&Ft_|<#c#u+wb@(WhP!wHm9$DLt!}1cY932(fu)M{Hwe4<|+wn&D zHbR_8T@|`X)cxh_Tsa))=t2-HcqG~^Z=p@rN|x7B*(j!+8P}A`t~xVy-`eXPy#cr2 z=Dl4aNusU;?M3QNkZ&_$myiSHmd377F7^k^53E-8Sk;=NN7pdT^}S8j8WtEKO+sNW zXRopMEpbk*v2ksV_?EY^JO?09F%kE2ZXlpKewOm4e&bw^EM@%M+uVOCXW?1Gfas%5 zCBdk2<%h6+gtJQFvW2hU6!Z6mb#?Ew`6wCy4DV&Uo+xKg{(&-mo+?;n($EaQs7`p! zm<4vwirdPtymmvZo}AcuH1Ry!O_DH3>g@N= zDCW!eS}z1cVi&_wN|iTNOuP-DipomzOp^FZ?CDt4DuNB3wIK*s4G~VfEWW6b-78`U zRL7Ay1c?ubFEDDuaBor;3;je!xgZmh3DMxb6bu7SegSuBPtc^A-^gk27zf1}H!1$rn*lk>**EX&ep)79PY?pJDfVe;!cbGw zP@&T=iK%_-Inm^~58)c$;x?DjES#cY5Gsy7M*8(jY8_yvCSX}VE7~3I;9J$81kGql zY^||cXljj!r1h1mk$8JsZR(L4W@;Li>S1d3b_8osd=-nGD>J~rAe0ZCMp0`C2>scF z8*{30k~aMe-L%&uB2Q+k1!-Cm8Rp~+Y=#=xfB9u7x*J%EPr7?RKU+KbM7SwF0~KudTB!bGAhy_Wt7b zuua5Y5n>4#^vwSfsZ`U}snS&9uis29IwXZ*TQQADjmY_!mi_shM?8%80EZRZ3!ce3 zmH9nH;LzSq)(L|Gq_HH6aE{@8axrL5PGM4XJ{ix6mje?JsJI@;v%&*B>t*X$#T@q0 zD;}k=)Wds_u=ylng~(Z$45#Z0truEC9eFiC2en{(Dz=l)+p2RyZt)jT3|+MqI$p$=SBq{4#?;8+gRS7`QGx9T2P0Dq5^?#}|KRG?kQPKE zkq}fVN*xi&L+;0zD1o41>Pm`+$|yYm)UJFfRK5z?YmaZ`4VMqRdqqkLrRdLT|w{0qL^sWf-a9$N6xzy z?5M(*6Pa#PaLSEIEXO}^KXvf_-`EFv;X;x|i0KlQqrTisbkH{EG?w%Zo^>>3UwFpFnX_UPHz zGrqH2v%CyY%(vBqyLxciwn+xAPw_t~FPb*c<7o*XQ51p0Kc=fJx&Ac?@#xWQ^lfiJ zVJ>)|8~tNE)IN#ZnxF4>Ia?PETEaZVCSR(rb!51Z&Sw!H#XIDu1W zICno#7>zbt$QRJvkA$9k%_>%HZRs>M?QGe)s=_RL->KP)6Pu4)8A9usr!=*50-x-Ss5Bykv^5bFeLeqbT1HX zsFW^_%4~?Ib&Ez7gF&x?RV50|bPcKoWie_f(cLTr6BZBsMM(k<>C9$-EgjSOB_?M7 zxT08(8evdoUoaBd7St9xQeZC|B#?qgIF)INWnoaErNd1X4hej`)%`1o#E7JKqJgYE zJuMxa=-@I&3sx=o9e#{@utL%4OrMFPy#wT+Qz0m;gIX(ISTNb2p|FB zQ}1Ue@YQY9VNBdK$deyOL@-xAV%}0-!_+y2yKTMq&1V28YbQhukH26+m40@%`*<*P zBM_9}_TF+tpTe~bHxHPC*f)V{Z5S~ftQTNJwvB=Q6gKkkAc4>`RV+YSl=$$I$~6mP=lA9J3NmMzK(!uE zxoWNM8n{Mxy{g=ETn(yN92VK+pC7@$k(b~SxjFd9KO$sS+VgP|QU!*BR6^>LwdN+e zgzO1%A*Mf*+6>>gVPi+F!iKBQ(1cmi^{stv0*1YSBBljbPf-CCq;H4J2Hx39pv3n5 zKKn!8ND3fW4iUI(e@)vPyZMS3sTsGb&D5k#UZUwf7{acGge`Fw+YMwnfvat}dJL`T zh*QFt=3M!zA$G|7((OXXKL(#IfJ&+NgA%rm3`V5$RJvc5ZQ(i)>n3F%1q*Z(` zNe7#w%~CJP89KbootGslop31!#pEnOiHhVBGPuOB2^dar(*AfqdFrt~~+?9DsaD_$A?-r|$ico88f&D4J@%v$HuxlCg z4f6csdM;2k7sLWhLjURfYGIRu_9qXMWGl zR?ARmzP!^IzffIHWz9UXReN95zZOp9)C-BzI=U(Fh`?qF>_Jl}bSC>t!bQ&|c{9PazXv%3Fx%GqcZ|k>40F+|V=!d7QOQ{}i@Ty;v&-Q0G zHBURORp0h4c6PG5G&?zl76<#hu5>6Un-fYQqRAs~H)*+zl$ zsAO2pmFq(^ImTwC{xWJ`wzN0(M!X+xcS3vufRvP7h1+(vw4S{%?Cu8JZ&97=$0XnTcPU5+33AALJ zrv$(Xt}J7a1IWxWCI#S9NmkEHiTJaLV^gnq68sS(<71VAP zj$OKQgWnYHj1oUJbHk3Jqhwa6nh-V#NPtql4)QYXoPn6Co$>mU(hm#ZZkzQ>X!Tl3UuAy;ZZH*libc33 zcLs>f)@u$*hz!8?hXFGnta>y-gz4qx1||BrEGAA2HC>)nwPmw%J#@(Dh&jf+7-v$> z2&;_LBzBpMW7YS)Vsvb=__r@gLz8~TULGUvlNOF@M;8t!fVIX~2_q(e% zC?5n9lBfUbG3OXwrdt?hiU6`y2#0aA}aJ=V8Ijq+}j%kq3~7;hEiILP@-FxwIica z`}bGSpm#JUE5WbbmPiOQ?&in1pkEg3(E86W9YQ#&UzDGpQbevN7o~J4axb@xr6;*% zPRew%-|;zukDv+Eye?KOEqA!ZBc2%?;^Xh@KG#&E0sJuIoWv3;F(Z6&wAs=z%t%9+yre z#Mpu!COusJH(o*QQaEZHy=Rj21sX32fn|OvFMc zQXcJkO3riS_e-8=J?eSsyF~HEL^cs=)3ZqQxFt&`vGi@oM49#t-Jj%^p-xvME=ZiO z@La}W^u3UQ+)mqsAbkg`?`?5pV2?=xY(n!y%IY`+3Pl*VnliCtz2-Ar+deKlll(0lM(2sz?tiKLKNhmQYzZ-a{?)u7Fsl(gh!}^KEAsIeX@Bo<0yIqa&SX(8JWK zj7$Ij$;g8m+70@in@@+Iu?3}8VvnGIdI;^Yf8`eR>rndJFcb~HpK)u@|6(`-GtA=r zgB%$!;&8MWN$^Ny#XX5-F=L;^vl7Ag67=(-CJ3^gP0X$$s(vRn5_EL%eDm&%x~V_X zmI_Ja)5%4XiY8|}cdmI)flz~%zb2-Q^t;z5A46^sX~HlJTr-OqLoNKBdljzz4jX^^ z3HlA%-ZYV+uI#aDI3wKS(QV6lI+(r?8H^s20%Vi!9J1AmQWz&B7f^(;MHDZ0I?-)7 zPNs7u9dcaYl;2a-R_1B2;bE?@LsllaqP&wbm>YFR&owIcWhRkMpLy;xH(d5#uHzxc z2d^#$E<^F*>42?0IMr!FspHHxkGwW-dnbFIBX7cuj?2nLP4K0d?p*<0{NxE}2;Y!T zZSbDPm~@EtlIhw;AKN6vK7RUi%#}Y414$G}z^9sSJOjC-Z${w0gVpypJ3{DCL43*S8@unO9&w5H`JJhEid@4$p<0pz&OC zC>;>KBhvQtQbLd!qv4rhS(n1l$+7-w-Gn3j%5##4*D_f|+`|Iuu@mm^M+x#|@M824 z)W+Y2DGl(IVTBw4Ql|H4fgXuII`~ALz%&sj{qP>^RIbOy7EAv4qG-g#+&>Y>e2+L* z*~efOE8|lFD~|ECC#P3hSoJ`+-NyfN)Pe=N^xd9w&M3isqJ41Nws3W;g@fqQ*`XcI|g9Gcr`;U85t*oFbb(ad&o^k-?h+JZk?#}Q-;Z5- zJ9t_gZaNy=VQShjbJR3ky!X!ATc2OIC%liuiUqsYY8%c+9ylc@Su4@cXX6>ipd3Ax zaark%4jzdXV->*RA~swz)J5^b2xn-VLf36`5Uu?S>?}Eveq4_pPrnjIB)n<+(sn8uQuc{7DNoy*bOOdQq|iTdHh zn;H&xIyL2HCf5?vOi;6)!{_Zf!VjN&!q(qXX{zRHty$I?2ha>Q#;h5y_s1YR2=lKW zuVG^B4D>)o0q&s$%AmB?2_Oq)q+U<@bc8W?Q2R_Cz(gj_pM({k;aU;3KH|wS!OCky zkyuWjg=EK`MATD7rVy2%6yOhs@PYWg;EsNR0qsOz={KW-zlQ71Tp!T@fZprtox6hm z;)&+KS17A6Q~Up7CdH1zT>QT_v(PTo1)iR2@)@b-CArjdP*D7IVWQaRwwlL2AA4Br zaQT&SkYLeX4BPwc^YFSYDxQ!xyZE;nva_l)gP(VTMThF3(e#EsCsKM-aKjNtl4#Oi z@8*m9JVX!&*X(ioBpWh&@qA&gLbOtF=`L8Xf1*!nUo(Gk1(c`n`qJM`|B!PfqXp=S z>pW+H0J2&@{@C=RDAJ*_W%&AifuLAJ~%oeD7x2l!PVQ}4VWfIRv)PnvXE1(4U0 z6?sbWu+qpoVi0JJXr{W>yz4)`v9#y64Sbu^8W1BBjC^6>fs@`F4>Y=HCd!;Rw#swM zFf&ZVmvSZf&OSF#&Z${#p>u~>6j%1V(pGA>xq|USo|&AV7)DP?IZiF@xvlG>&PM6p z0Vj8U?=bG5cDCa8z~QhBO=TVj6=LeU7^u1q*qeI5RwNAuiOd5g!R`ZfEWnMzdNA=$E;$B8mOSz@g=$E)^y(-=bbooB+0(_LN=t_>1U)V0M z5+?8N&ZE&|=(N1WXSFavm~ME5M*YnXv7E%9IqQTnmhvS>|tUp zj{!K~am1pcqH_K!cUHY>cp;~nH+#Khk9lh*c^n=urk_z?qbYhl?X9xFN^9*Qm}rD& znwSX18bm@*YZ_}|2)UJp8q#S%p&H!IqagF42KB3Es`y`dZZmFu3KOq_M~kW4I8W*m zN~5)M`aGAQ$m z$k9%zN7~<=6|aq+n89jlne44=d*ahkf2gV2-aJI2WEc5u+i8V~7qr_7-n+JHN>Jp3 zaJje(t?RQ&Rx1v!E>P}Sdg|J=k|V;fcW9TurZh8lt2tx0}8F9kQ!*cPYHxC^ygsQ`!BAPl$XJ{WKLgeEzkYpqNdoq6V zK>fUTT;4+rW-O(3jbcN(;g|^e>;vDF3{-~oh$u?;^?>*QONzQ1cd|R&NBix z7Q-XNG7`l$yQ1O^kscu|hQRHNdbL(dj2~}hI40J`1rxh6+>ZxtIjd>gGEN%d7}l5m z#!yOCa;oLcv*4m06Y#HRS4tOt=Y2GXZ94T~v=>VQT%#)DE8_k|$o7^1&xEcQj0>En z!|))JFh38Yva5te&nae#r!KPZb*g47)MWztKs~*jcceijPoLwC4kDQF>+izHHR7b{ zr!EF_tBFgKM8Ju3im(Xqvk#5&qI<=BV1+n>leehWxOv55@g2U`Uj=JZ?z||}-@?K_ zRFtaW%*VXI4WQ{rqE)yRF%mypRRzU#(yNC+=<%8~z3Ard3PQyx#ed#iCAzIwMMOVZql0eA9&BYqUgND#$bTZB^J#yLLQu z9Q*+$ySG;PCmetsXU$YZk4m;`W7R@cEgOrMPzRL5=xJwrzW|E}CnpUaHn-_R`5ilN z8C=1_9wM&_?I*~eFGvigP=XT+;xwF>(|rAnUagX_`VA9U?8G(!EQAO1&e!>9^TchP z*9Pe%-%#7*3<*w7&bAU~XLqqxnR5^JjFGGeNo`YI^m%FnHM;J+gu1?ez0F0D`lyBA z3{`QTh@K5bI%7~b3!dzvD&MdoH*OU61q3034L!W1Fm$3MVR-urBgv2c?Eg*sJ~4c2 zjPNt`_ojY-Z|8S`uX8U$Fn{jO_11dZQSr;a+TSlBv6pxifJ#(xh1l?i=^T(r*QiZF zBK@x4f$mpU24+@e@+o29FxaNJRbO_8QS7Y>I2EYQ6laMZa9w^>ADkAg*>MRMN2xNX z%NWue!ZYEYrg9WM4(Wcqj;s1;G0lBSFp~l>QwNn} zYD&w_6x{1AB17_2dGGN{tXgyffQEBq9b@7C+H&ELdLTy)-rX?5l<#S<-N7z9A^e$` zioks+`&+boEE-0S*`jr0Kn^-F+%X!Yje*H&;Enj{9AvsL*SCuj7O*Xy1k@Rbhm1?> zJnnqFlkb$sA!I1hFGed0l?UwuT}zXzE^es3kT8rb#txT#(8jU4mQ5`k-T0TZREK6R z?|epwONsgNt!B1)xKI;a?~xt*U~jsf`&_vh%0}*rr>$0>xcG1v*-A99xfE#5xu0NU zIcFVmniaZR*BvICpK(mfsQ3M-7^O%YyUOYs2r~9%3Vd|9V=X#G{yiW55OXwr>;kl9 zlZ!*BEoI(de~+%*BT{5fBQEgNqM$-DS>q__GOCJ8Htetc(AP?b2{V2Ht^SL)zwYm@SdZ&V>1G zGX4`7lWx|Kmz~qxe79_8GsK-`cMYU&c@1XWf=pI*x2{h?y)GEYL0D^un zl2=90fa*YtVGl}G&`qRgr^>(@P*JwvRsmxd)q?6bky1Ox$gSOn+%I$Z+=fiHSstO* zhmW0mdi2x5hfI%X=e*_(&7t=-(E<`%S?M*AYx0ZWX+Q{>xuBiBWTR&qS`Xx3oRedF8jz3n82~96BA$vU;z-tmGPBATY057#w?ie ztJ>;VC{2gjLy=k`$|U8qh(y8GB(V?>cp6IPh18%7c@rdt^l~nnx}PZ&i*}rzaV%ni z7k(GBu&RjP%m@oObwl+-L&pV;03{Az!GXyMT#Ta!l#;#;`?y1O}AF9oIv_(fjUr% zege^PssPfcy`M)LKN&=z^hG;8kA`2`(1iuY@49;m{h3WPvHWiECbi-efKj$d=(i(92QSTq*{XH? z5`Dro{S!O)^kk|cFw%`$y9+VpN(=`&!3H9moEvD8F$U0dH^^?FOUvaO{ONo%b}8YJk`4TW8Y?`h(K z$(}hD{G)7ZX=+Matwyq!0!N=}EbQzwsc{qI6`)A;>9Ge1-f3+`HSXTPDiH*; zDipVp?r2=>Tz?YRQ;6<Zg5Kq$hIp(& zbq@pv6JaXr1CRjpdaG7+Ts?92oi8(lV*iSRtDU;%QJ|}zs5nL@(nx91Dn?OwR>gMd zpQA#mnGQnRI_Lt5v8Rj6eXk|7W`bPlBYEJ+nQvq8;7kt5OY( zg{j%8Vhw~llloMCTk+v1xso-KeF`qw^Ys(fZi&MTL>)kt18fZo(XU&w!!j&H)d9|Y zi;8kSCBUg#MA_b2T5;hWgK{8F#jL#IkPC1w4q?S_scfV#fFgqZZ8#1s*?EL)3n;ray(H_x=1pPdNXNQpN6K)?ipxSo zEAQd7e@g;SgpXwxdXR;%4u+z9%naQag!-$QL6jh?3kqxsd)5XKb|OfT(iai*;I9qE zIFA$ra`Qw&#)X%b$Lq!U$b+jt{Mn8x{g#0B3K0_`YML~)K-?iNWZe!U9$Vsd)^NFeEB+J@OlAb_8Kp+a7=fEH`gOL)TXR;M3UE)!YzwnIlbe~+ij)BwxfvNK$ghs)#E0wJNE{I4 z$03`Q$5#VbEp&PBQr2lzC;KuXOmPaSgga{6Yz!xVm-Fe9!*lm5y4o>>Qgv_j~4Jg$+*>Dg-py6!SZRLW(JvdWzPrzp+U1 z9~f1W0P5q)Zy|GDoZ-{WHfSP_hUiIgGo;x@nE^V008%TjiG4avd-5qN65M?!jKUy3 z|M;~dg8w`ND!(pTkQ0bV5Y{-_a0KmPB&N-e+uYprB_drh-LdVvfs?=K(P934I+bv% zt98z2r!rINsq!!>BbF71#GtWw%tmVA;KK2Yup~B*l@HyE8&N?1bbqrjlcozlc>$YT zWgR8+sAQ5=s8zaeaN-I~z(ya!4BmquV8VA2k6-}h8+5ILP+Oj0-tX)bFk?QtGMO&@ zMoh@rsyx6^~Eg2evfFtKLC_(d&!U(B+Z@c1TyRrzKkG?g@1J=HX0@+P9jx=EBfk{S5Y>EJa(!_enG#o2Pqv+9OFh}X zo=RQP(@%8+(R`>`n$r%-VEU#W z7#Z0727#s7jZvxR>L$?8-;^IJcj?91 zu4!*7k5ZwQU%NQo?kDY%`n3l!UhzNoS~+W=4FG2XZtfG&Ps7X@>@t#u9V?He&|`}z z)BzfDT9+yx;$`iUb}6uZfWN;MvUj*h?Re(Jz5=+6s1RF+puSa6F@?x<7Ob(J1suSaXnFs?!5&GOnaEc^;6H?P^zCJ zb}LjBzjp&KzmD^|Ny&tmDl*RTp%YrORb$jOm`q(V|)WHOnQoN_#H zN-~hqAdjui5Ce4sSRcdbx(`U{r%~1<|40gneyn*`Bd9@3SWJ~&D|4GYHaR$*MD>p% zIj|}F%IxlylU9RWTz6IWbUFx>cmuD(U+$Kf@_jbRHY_JN&&>;r{HEQ&Mx)G55XzZk zH;Kc_{0g$du1JT(iJ`J-Te%w7s6fn%VaAGMnJj@RH%1may}-;r03?jh8r1AvKK}g# zPe&vtL(Bn6Mp!en$w~1}Q6aY-n>aIWxOCbok7m(Cg>xOMfj)91W(erlxE4wWlmxy{ z|J6PwN$Vh&pS#EF=jRs`78F+%%xrO%%&rgd2+@XyhJ{D?N9m&NsH5{Fo9;EkBhMvJ z^e?#Hn}%G|K#BeZ%%fc`YHhuff9M@Oxw>Ik-CO?KI*8O`-X$jP zgCjKFTM3BdlD9k>Ql5r{r8FuBr{oiZZeJ@Fk%DHjG!dh|uBO+UN6YQ@I4d?TW`uEF z=B6pC&(e&Te1kp`gPUYo=bLKH#s|&l5Q2^Xui{J)9#lA`BeL~G?CVEl_XS}8J;xKu z4CjAja0VxL(g6yWTBF+CVl;As&`l|Zy!1zk?N@Sd%wW3Y*)xFA6xp`}TChGIfxo$a z9`93FCcv;w5i)+eG%aqBkljR-DF=_cz0=duI?|1h*3Quvt}~@s9z3XZ@QKwZDv8wC z6WQFXfz@e8VX>%o9c-*w`@|Ma+w-;-M`BD13lp1L@(kqmv)Jafl4j3A=BUY!HNvDa#X{mH-H8BuBJrah) zWsXb(iiCK!Mmnu3o{XCw6-TFWjdNC|nbn+~Iuu7B3gHZK3YCKi$OQmLn89^<7Hqrb z~aBMC)iw#gEHL=KI2;k=Y z!EwHY97}NvxS#cpg(aYs#Ca0s@r$HolPyZu9u$($lVWTvA?RL6v@}!&xRiD6=Pnt; zjNY{;qt;-6wmu>Cy1w?h+r8X7?9WzF1r=*()%>YbRGz)Q7v??mDGm@HEV57BADW!Y z%*_yG*sYNqx8%64HKYc?Kx9igY#v~VPpk;M^l+!&!Fg{H;1Ho|&bnQYSI zRyvnfFYjA((H|!_PAZ>|-n&lw6Y@S(JHdVaHlEBw4II2sRW&$r_f_8ZqZ*F~p_nu` z(%spZFSmAs3hP~uel_8LH70EK*-Vgs<-;WCx?+0j7$9KJ-6LhQG`sAzJ58iqe_Xnu zzX0P-mDtN?EdvDM&=NC$8{#s9WJz>{w&4X$wU2a970Vre%xVjccgA(wjmLQwBV^nb zt5cv5;D*+?f`Yi#ZX5=GjmfGAFG+&$W?=~=55yy$YcJQI^dVkxTvZ7|d$v|G-7huB zwS;Ju%{clw%fZQsm#aMYS)3wnnD2K1d`YO14gMmPNu1FZ7HUqYqK8zs6Rct33*W^# zUt}m>i%^G!vd(<2c{><`%ji4MP6I8`JLqmGQf)hgj^?v`h2~}`4^qxz-xosIny}q& z2o1pnAO88j2gFgHC<$j+yP$-Y;B$0ae`gl|PWXi__NRC%Fq#uW*4>g5E;&STr#*H~ zdE`f<`A?@hJ*K%iyW@wDP0?&TUO1!%u^AuGHkEjgJFg5hD&y|Te8b_q$=t=2I?H@l zrQHDB7&5>YvXZM=orQ@(vYTkT0 zHnjPe)w1clY3X!Q+wI|G^-t!!VAyMJn|ciR8#Aj$785qt0)2qE(y z(scU-cXG(kw7$51pOQO3aOVkV!rP|STD-WR%U}0>{4OP5kHJvC?9{Qt_1%+>+uEvAGDxjt)W@9!7QvLZnypGW7t6Laf zGmLj&Ql&HKDI%iX#vMc`Q-5q*p3k%lU(d;*ZFkD7$BqJn^N8Z7N{^axUitsBvj62S zf!kS4yS7fCm3bk&{o{Aw@LuL?@MOtTpQlSytm7BfwEaPN-a_G{MZ%pJBA&?IeRZ}a zRQXgTAi3l2*+p|NzMh>q3urMRpHqmz1 zEf!1x8u3!!XvhYh350Ye-qFh;4*3{HRz-;k^2A5-KmBitnq+u^a&a2 z^?Xb1ma#nV7gP`25$#k%x$zpNecoLQMf;i{yz3*06jhaIwL_89K+1e!ll-VRdrfUB z?_9Xc6o#l|&M>YKB9OT%dB$pY^pEQs%=p#*td)3nN`Lz~;{+t__?#Sdu5*wQ6+M4g zOem5PpY;`OFXHptLGeEz?u~N2RO;#~BoWorG%*^LJL_>U!!M)N0@l=Y^OjG?5veP|BbxTk9XlAIct-`1bhj537B8S&>}pGGF=miEvxhaPV5qLhfJ1@nC$f zg)^S*v2g_M~ZLa6|}SQbLAY{6*EJmcA%Gx6xx{wvB$lLp?u z`^)7i01n(@CPzvnkshEt1&Ns01%^&L5y$yI7K`*8(YM~*S<(j!PkN%4Ul=*$n6kxB z=*_9qIV{2*Yt2zmqBZx24ilo!-b}%SK(z4W=@UWdmJ-?0%~=5@HkF94FM)$iee+V; z_Ry4o8MY;emlp#D?1F}h^d|(??eg6KtQeNs%50^s2h#Vy&C_L@YK0@XKMsy4g)D@P zvmWYB%I0=VsjhXcofgS}Y)xQUU0}KL+LbUY{k4_~04)AvLl7$HwgU|zwQsn$DA|!n z%jq1ZA>BPoXdIPPbw>j3_G=Ay=Fo_aA*s-}6wR%}{3eF1c0KZPP%tX=9W56RVnIBj zHDZbCoU`p(>$T3|A6@o=WqiBTW^%|a1ClR%$bM*=QV%g?*OIc>>}+B!yTg!D62zcT z=$c}R;jC*oYFy!iN~eL!l?UMj7aa+kESt=#!36WnlPv`z$R09h1V*CiLISkav0?`o z>7ZaM(XXhWKq}8fG)2%0r-2M5sgf|;>JlU@slaKv&{~sJu zB-6b6!BgK_>#>R&iR(fwVF%051T)r;Q8TjNeg`Bvt zlfxw(Q*DYxULt?<*>^@J7i*ieec%%bd!7E=YqKzdw;@H(!#|qz7noyaj}M133HN4O z24UeghUp{q#g2x8H@;^?D+Cd+N5!DydKeqN(UM|@8}C>+wX=81Q>&%<0Ap1p-aTI% zECbpy{&9FT%}U02Hc9Ahbqj3#w^Jev5JEm;1}Ms4slUvoP0(_8)H&+_fMF7$*qphO zjrZ^{Gc5stsWj+Ka&>g?M&w)}P|H@FW zQV_6YRFrJPM9xpDi5S7VkG?{E2VnybaGL(Id4gt7G=E7CCr$lx6StSuJp9vQihf!0ODgyD zKOQ>p(QI;?9PYA%v+xP?a}X9+9RN}>SKjyHVkK)i+_fbb*DJ^iT9Ma2zBFzHQ$o|<1e-?*| zmOXPBuX>)x(&Yd3M}c%r0jn-3jHFd_&TT@89k7JC@_y9c`#e!WQO_9_YQ`&Hp)vN< zeioPYZrt3$dB$lmPrVbaO|D*_Yx7FqtE}DTjbdg;>}>B zTWln`(iCBqzB=2Nm;J3!{=s7%-CQ=r=l$WW2xvOt*+XRsfBn6y$S>2@Ak=%CGVd>z zAX*tMVEyH!-1fq%E=w5RRu*4(V4CNsPeRzb_9F2cpPwY+pMBme(G}sbKWE@X`Y*9~ z(TmRWk*%#m`aaWMBDJ6YURod4LCm4rNTQ7{COQC%uxuuMIQbZzN*_x;Of$39(H-(` zvO@51uL(|tO})dgUua$kAd`tA&tBrk=vtz8Fa$jSHc+4k6PB6VVfZ%U;`YHKw~tiX z%`%wj0a6X%0N~8G%@((<-KHkVwQb^T+h$!eKNHyJGl$Qg!`KVB;VwbvmzipG=BjUA zRM0ThaubZ8r-o^sEoj^RWsRY4rW!0vO-rcuRRXmVNHiep0sl%ZI(@46-vI}oF&v6j zN=B)6Mnb4#WZ4*XRr!o|p+*Lp1@a6i?4pzaay4m0l2&s*mWv6bz|^dAP3jA~JWA3w zA@c(o?RAkrhGl6jf{;%g&f#EH99+b!-K-PFJOgHP*@4=PN^9LSfg?73XZB1P!-;>Aem`3%tkd!%;B(4gc^W zdR8HyUzAKQI?R_aMLaih_iO-xs9g{Q<5O1Uf^IrVKI2$2?iqihnv~f@P+F2+wR_E= z%l*f;u(`az%j~Z#pMU<@ZC@|gr;}XR&zhIU&2)g}4w=JoU@9KBaTVX2L zwDT7RjNjBxpSlq7bbstnvwx%b+qkhwFvk8X8i@)x)W}F;{JLV*8cP;56sDBC?%V@M zb|0Jcj)X@B+vKO9dZkHD$nx!6p3S4U35#u6zWjIW8lIj(E12dkFUS zHvSd!w!Vqwkp3on#2{wjuHlO|unypn&yv~N385MF)A0?a@Y*R?exkhNS2KtsSJ8{l zv#%s8X7=Xq0oo>EMs#iXON5v|$L#^0){hltD=#4^!Jtn+%)lTlc-SB$K7_ZGx${G- zibo=XGy_sv3O5Y&&i@4Yj+9Fpm+d&xqglzfj8f-!j+68toiDt|2`fW zoAaH7+FN(eyw257F)6Xux%b)>E!Sv!(;*;FA6+n4Zk=}=Ck*ERnHa*B=%Iyih{7r` zC)6&Le(?TqkL85(vOxwWw1w~znLYAyeVX)LJ#}@+hEWjKN#Ub#RlDZ+`Wjcugt)?csq4@O^k0fz6Jal7fnE@VVfDSWqJf27| zX(wtPN0P;buRVfa2MA`^XulXaF6T(m+d}PXfaymFIYcnl6s20jAVl(cbee3T51MoEULV5 zzg(uR7kz7>5(Nplui5lkEw2UOTijMSs*U0}9&BV;p_K!tqUP5Ga?4qtg;;0VU!w_$ zsjAd|;{!Di_iwHreo7b>Vz-Q}gK@L#>ennT`+p^Q!F{%|<@r>0w7rzS`=`T~6)3lc zb?g7-aVi{&cOC!|jM+95$(SqGa_`ZhFd(rGFPv!AlavlpRAwWXt@_khHrv$_M-zn2 zRI~!2BB=TpeN0Om)k4k9oTSOQ|LPljz=wo8TVQ-lM~D9+Qxj7$f2Bg+!nqhL|AT=4 zZ(6d{$;`a{!$w;R(~ptXQxOV;iWW8}ptz;$>~)Qw#+jkKrzyX0ZJsu5^R3@0Pn9KD zaiXP~DeVs171Y;piy@hVyfh}LMO@q&So$yo?;B)-P)LS7*eMSyiZxy=G9FNPi#t)Cl&tpe?*%QH@XU8@4 zifs-Dm`UXoOQmBA>S)3J)vH6iuG^C(lQ8>vAj7D!?Amcv*g{z7D>xvP#^g&Rfpmywo`faCtZTC zCqV7f$)$`ek=3b6>h=Ng;q+h-jsN+e_%NVmgV4c>;`CxBm9a4uU@Bu9yBXUD*f%R` z;n?(g@Z+DQnF-fjGKgqAM^M!D$1f$68rM;pGDsqS{X>4>VO6t{A-ZKRt-8w_e91oe z&==(vn%d)o;=>aMML`4DShr9Z&CXh|OCa2tp3RE3ebVqasgPC3!!KWXU5&SKU>9LZ z6Cky)vwp3XX@1G)$7UH#gP>_f-YD-TO*Fc=pJwc5egl`Va?tbbNc4gQd-RoIQNa0a zen}UA1L}3=jqX$ny2j1~eHDM-B}}!UL^J0SLbej*raeE&HIT^;8f0H>y`&FMUniUH zU*jV_e@NcS&#ZduHw8!6zn3PRka2idJhr_YbvhN6?ds^*9~(ZCUnIdWr|rJmUrhgZ z;ljo1rhyQ&-Qcmbh=Q2WNS~{@9FNEZGW)m-oYXwA5#}wqiTgtI9>a9vKJXd_KHT zCJLY$pdbV3$0CY1#KIT^JQAn{gLelU`9bs=Rw9~6X6;08mLtu&se(;Aamd$7{TM%+ zj^_|Rpj|Ry<6uL;OO6{C zGVWc{BNAj*0@ZrnxcA{d_qn%ZPz$B`ArpODT!yJM+Vgtf+=J8-8;Ol6;}bu56Fa)u z7OQ7QhmMD0aKCXWxGHIXC12CY`x{CqMB9b%^Yk%HgLMV^m!|KqqFSRf#3gr$t{CRJ z#mrGQ0a@eAL82VLr-F~x=hjw+t9Z%&WC0++ppsCG!am{Wxb)QngZ1+^| zm3vX*Yk{k#MZ`?Gh!QhXF1L5Azc*tIrqfmc0#t01-G~c26JohcQARP2Ah`&YR?{Jr5Id}EXW%3}BsKL2khL6TNjah`l+P0H%ID7^J zhqZ1Of@qZ%P9C!_P~yc$^#%v~ltZqAi3$be%*fH-a8!%?Ft)B@D>s-dohqePkjWL) z(kUr9n7g&2F81MH@?A5y0RrKh_QEuc*O8EF_HHBRIvJX&xe~}#9R#Rj6_OKjP$6l1 zY^YJan45$)zj^@jM`{%Tsw(?Q2<}dljMvwgyH|R#?aHX8s`h_2g5qY|f+&h1Q$|{R?R}HH; zpw8F+c+S8#=OL#)a6&4YZ{xSzzoryBiba34-U_MvBIR*Ms*H_0-IoJ&8_!?Ic`L5G zf^60%=QR7?I4`bvc(1)aFXKgGWEn7L%P#!AvzT=S$<&M8!R`idsMFQ#m_>)4PbTj+ zs@R-Mx~gHiDi*dNt%2b?9f*{ajruwFBFNTnW#+qXJ4)cC0p{?Dd1?H%Rre)%pMK6g z8QI!QQoiicu8t;8%vdqxzm@;$n}^xutC|-NuacO<^m*)AlE3m%~;b9=dmp z9W___GX^i%e>x2&r=9MH@i9M3-$d!C$q7+Ft#p$M9a&EU6L@fdkWx>CQ z0H}8+U~4}ugoFo&j?+Z6HSUMzhi2@YZ9)Do?1!6nq}L^vDP#+o1%Z&9X{BuCd6)A| z=c(TdXqCxM-BYw^c{F8@4V7ZKFzhb>DUV;-e_olrXFn-FaD_^7m2B1F+8?TPk-1pn zP*Vz8r_A=^B4h#h*aJp*%QlYtZ?dc06;ti=xlA8px%-?%-YfT7S$5v!d@djI*WNcJ zslZk3XU-1{A(rOJ!pwd`JHa+1fygrW_Oy>IS^m`soa+LlBiDhqlhi~qQS}aJ5N#va zgLc4VgWfj-h%GW|CS}UpnZ+3HF**-5dSUk8Px)}-k^`dXG=^u!Q?6=H2>_E;uOYtS=~+!IPE-@*RZa_IHVxN`T(rFJh?xP=2%6)}Gt`X3QdhpD8oP=OL-6 z&80415WB~wTTDSlGkM35BtDNQSHx$4 z0|Ye~$f5F&iR@KN$ZR%wRx7()Wx#^UOm+}f4mh$R(OB)J!a7P|R zdr`abg=*LH-6}^%EhVo5S3=Hz-JyC&|Ch#RKGd9PzIJdO$fa^rt6@A9H~lbTv*3`f z(^PntMJK#tYjfG}^}h7Z4{wO#{?U2{l>PvrJI!ao$g=2jh{3<;MPYP!`Q?w@DD#Wr z$n22N?6lk@Vm>96Z>o~ zIqUcGv^+RDH8X;AVu41|ZO&_oRRtXt6rapQGEnUfEDvR&2u&?N%iw=3n4k5Wy*Lq? z_V+?h%2B$T9QuS~YUrxaLN0@l&-XG=TQn2zf5t#`#65BVv21|``A(2Y291_s0y)ix5@C+J{;5hop=CXFRgF@!!_Ox} zbSOyG>&1xB?9X3!j+Q~VcFs|iPJ#wO^-9poOAAXbQtaQ%4g5<0mz&^?gd*lpk;!+G!0##6As zSk=~AR{E1z))PA8#V!WhJZEu5jvs#3ht2n}?c?)zxV!PmS|Yvj_Gd2l^PRbLHaT~3 zd2ZM#5xK(gafkRoiY0|qL;v6NU8+9^E&BSQk6Ix-7}W$LO;Lleq(~%UhB$@P>J_Jc z$$f>iopc%+=wj{#0;D&!2|=1tdl5l_=A70^>-bT*%tCNvq``xZ7=CssH!OhiqHIOC zF+bb!s+MfD6wt$KHl0zG%uJEGev4Fd)~_sk<75#SaoveFu z`$n$yTtt+ABt(P~e_TG|tp?-Vk~=(4?xrBS*{aNZ<097#F@EBkOE_SWsk&%4nxyk0 z`?AIiEBKIn>AatG7V)+kB2Q5|O{|c^rwzXZ?Pb8(DAR54p7W_doF{+4?%azxX$kcg z_T{t8ED|Nf_MRgS`d^I#NtS!Wt2{Q_D?7d1>j*BfMQXe8^>}wJVk^PD;8Qzv@OoIc z;}i@$p*Zk5n_`ZObc8p%y+tDL-ERnKBHTQse+s~c?liw+8hXck=M={ABn5^6l+{h? z#vlM*gd*uU13H;1Hzz~5yb5Ww$8q~cq)LuMWOI4yNpRiNTp`TXey42P^Ci&Zi#bI@ zed-jA#A5O#5~-GwX8A+*64C}TM9|8{IV+z!XyY@|(+Uex^7C2#G#G)0{=d`r?5?W5 z*Lk*%wspQ9mof7F4rVfn&ioyF>wxanR9N=MZqYez_aMd9HT|q&*bei@N;+$CE|89{ zL!S@D-VZ~2VpXv@+MK1h_dS@Ig4dRyl;7TjhyYeKGskWzj}vt33lwj1ZXP@ZiO&Cr z8Mw~KcdYUG0miCGM#SzG_y$(&W{Wt+KgrE2X59hUmo6G-F(v=58UWsMEX|GjLJDYK z!nV?|DO-01r%*aN{AwOp=jP*-wpb`_e6;$-QEB&*^%c=i7cSGXD=)mnUqx<$g{ycJ z=P0it)J_{lobi~#8pS8rb-W`S5=d95v?V)U1dBtC44j^sVm`^NNp5B<8DfBW*DL7r zX;Yx`M(BF@yf-kxt5nw%7RC2;)bh?)^nUH0sG@HWFZs_%*+q-c z>cI$mAD_tL;_lal0C(M-<$KeMN)g+7ZnM;jZ{bP6XBoN55OUD7yk*XZBp;(QUsi0_rfz7}=V?tNl$LXbd*P>ONhG zNzMSL?vc?Wz`{DTA1x>}<;u-T$`dVN-G0yHZ4_)cVsMrJAMUTCr_aTpI`LTRW*EG) za%oEc%$os-5O#Lqu*n){xJ2&K3$5~PYERW%)&k+*_~t)1RVWSS`NayY9u zU5~aDV7NqE6u9wkk93MKUpbD1s&{NP2y0#d^fNatlDix2E(_pt9WGWOon`2R zhl6tuarQ?FWcuwYWU%MA$e8v;XLB&;VdBSk)sX6nBJz9@s=-PzraXOu;?t^q(uxaf zYG_qFSRNI>r46Lk?YK?l?K9C#gvv|Q)YgJ$pN@&EYb7P($45&t{iD@=2pqT6{foy& zl{7r=EGhX^&%nI$Jn4C3g-oW5za@|dLO4*9I&?6uR{LL8m8{gCEy&EZ6J5aU5-d== z%gs4_YL+3A)BZn_Pp7=Sy7IBHu|y5_bE$YrT`FrvF_Kz6Vj<8;!*g8G5{JOhP$8^* z7SGDnRaL|qQc6lhGUB=#>%!DQo~npgB-Id$a8SvGvD0V+MSmojP&Yh1VL|kf7$Tf8 zmu45%LjN5#9keQ1ds{o#eG=XPkl!0v?Z2b)UQVzR3%?m>)z^JpKKIc4>iNA#K!dh* z!~F(($#Va8UsGw>tCGx^C1x5TRL;Xt&+q|5Vlqp5r#t%_>#ebuF&U^dJtsqwb5X%f z4LM;Ro;HTcF)|sK&*!0hV}WQxy1kwrVWH?G4s?-xF01{ak+58t`Y=j37qCUWr|F&# zv)?Q`Rm^~mwnD#5S4dNG-TFF_Gxroj>*&+)5YH34=hEy;3I*~+)hqrgrtXMt%0`CF zO8kF9vJlD@!8tD8W~HXbZ{3C^c3z;93Lo#vTBXda^l4I-rv;&;0XR1=_i(f4j^C$S z2`jWVvWV3cQ=`@XRTM}Z`EI=H@PvTZio>3bs+8o>VIhgKO{uu|Hs>>cI{oe2qO82l zwu+qWxR_fsj?^Qlr@zN-hYe3A5pnqh0vE=fmGg+iVf@Kny{)sp2$L&5U^Sh1o2Xg{gf2|vQ3nyX>-4I)(J(T zPt>BQ38xHK+evsaz?T~y;xU+I@eR|HmP&~HG8PoG#x;w$_fF(q}78?f%OF| zYGGN{Pw~W&dHJUC-FN~f!qY-F!I5%SIj4-O9cWFMZ-EFhb!&FLasykZ;3|0BD2j5P z+?H!N2)7u4!%vJ!??;fhtQa9|7%M~MC_v7#K^XnNM4<$Ram>0p%e*c~F(_gsqaGOj z9D_6ZEpUg#u?C~Q=MaAgLb0d)FL1=dgT6mr9#^4bH^g*C1pZm@gL}9x3u!ik8CqbZ zm_5_%>^lB0K6Ccf*}?&{%>n?gh#UPIQtc7;q1&z{h4REN;=Uq1K98|b*3|eA7)D~F z36T&f9ufF>X2sC}P=TN{f-(roUN_ALQrM>yJvZz00Ytz6fC1Z*(W^}pe%_D0EaJ-8 zgs9}I;A(z2_S4M~NlV-^E&O-IN7RjL>3`op2hdnlIPVZGu=IFj!fo+_$pExkRih^c?QB8JRd5wQhD zh!Kn0#=Z}cbg&=r`=M-2*9{(sid<&CA}B7-lWOmc#Wp}92qOtmpooR2&S4?XrbXuY zI2s$P2B}m6fmbx$Z!wons2G}mjj)193F}&w=BrYABpn#C{o1XlLMIcAkPsiC7%~v$ z>be%XuUK9q-0NG3%&pmadg_XbqmH2#AFLKgw5~om6Gm1?6&KZZw%2Hpx6(#S8`;Y( zM!Iz~l=WI^JaHsv^4f6vDjOQp)k)?U1C(U1_H z?lmS+G5bDIifzl*?v}o^Gln+X$Bj|jyvtZd@}o*gxNz$7O>ZGCxH zuBj%HNJZFOAA5vq(2LOJ%ze;2_i#x0aWX(AcsHQMbHKB~ECQAoS&LOqwRSm8E$KZw zHm0ggNyHuAFBnI691$@~yBANV5!G3ohI`tPQy#bMCVr;H+%fXKu_?&~1^M}ums335 zs{;g2cSw-Era_Uysfbv6GvEa#8-R>3|wNJ-rhe>n7GaxIc%g^|x+D$i#4s_Nps@$C3;29&i zx&O%iKEIE;814fpyI0~M(?^F;hGsT?(0@+sr$g0ruE%6{3kK!OB<1sMbBkZk-0KPi zEBoa&*sh342H1l6z+AuS9|@7I!+Y)w$8I)=1!V%W*Eb+b6(D%R^6dQHyw&?Z;Ywz( zE}ifgp_R|m@AKgn4PeO*mwxAv1WsS;u!p3~`$_NW%xIZ^Hce`DbhB;JwptvHL~FnT zwci$>n77Z#2a)S;jc_HLS8Ihq!kq*O3CAvAcD-u?}cTBK@13th)o^*rVv9fFB| zXqwleCw`%2rY9NUc{$DG{{LuySnjC)li2yLU|10;T zAarsUK+|Z4GR41Sn${8kf#BG0!zw@k3yM@ZW4u-zL?$CNs>`}2;=HaG-}Rqj+creh zo|t#}*_Dc&zx(+X)@qduMBIWrJB}m1rc|DVrj(&TS?x-q3zcyHXay`V+6_oq{?fM;+SRwBmoe*HNvr3FWBS` z8ZICZz}1A+Aj2`m2?PM3R)_U~2iDpekvxczytZCaTGUXQ8RKIr;{$M^!q9%jwb7-G z4bxW}8&C}MK9)9wh`bVBM<)_>hYb)IS!pS>f_=sp~l;T`XI}K(3pS}K?UlO^8cFQJ=tKo); z53mFdS46lJC$FuQlos}sWW+?9$oL?bpfDt)s3$2MA(_}yiVT$N^72i39lnV!vHW&HUsXWu8HgWv`(OKB($w+ySxX&u-eP*Qdl z+Rg23$PRVGSb2EZ=o=XD6>ZpZxEOEI?BT9%C|A}J9;&dfq`9!6Br_(>RNco1!4wL8 z`eoF_W|TB^Z*(-E*o%`gV#fgBZ0II4%&=7I@8=s8?TpHGSX;?i8gP7?#ei5VI`lI` zZDD7ZV+yLCRerO~t~c zETXw6J*My*px&a{}w!R6N%iOCH=QggpeRZdppmN z$&)KGYinxOMa`kwUraY+2{hxcx^uAJ#_#wTNdFWS!DBY1LlW_eA` z+FmoF1a%@1xC^nPLU5B1bOdbeqKu5pI8Bg;jje$JgH5Co#eOsAZaRAS&dVc2U-}LF^1Oo1k%Bvn$FPJKB4?|F_}D64!FDt&2q%CR)4| z-qfp?mj;E)>aN^hWs7bgd*mPmS@ngS_;zz zM{v^L`X*vm;zAZt^s0Pr6_EdJ8W>$sf;_Emv61QS-Xl5pOil0kAL-p~YP49V&5II5 z`Gx(7PhQ$!z@IJ{^62FAJJW^))ADs4BYD;7B z@;{XAZD2wBfZ=jqp*1?mJdmBa_WWi0=X4R$#j&Y}_n0y%6ib)1)i4uTFtvYbY|4(~ zdlLhr)fz&(y7Cm z^XIb}G5*RKst7+yYXor}vAOMJ-7%4FnaqFCj-^h>Hn`2Bwa9~HmhOzfu zY4bb>*@k;uAG^#$x+IQn>wiI!w^dNCk->rP5=%c^ZE08>5p*}$(0I=BbS=3@UhMjx zsfhe)pGeH6KD3Mk3oO_xCm4=1;I6%6s^)k1?kqrD058ReU;lrNg^_7QHIZ?j$|B&5 z!Tg4V!#T;04+#SrxHk45$)9kFaLB|)#X&#+SX%wNG7d>ip&xlc`VGtdG2#T{f1Y5Q zl@~86Ez1rS--uvyuyZ$qRNyw#?&XbsIUTZ>JNg;Km@$;#>`kYBnF!$>zYqc4m?~K5 zwqyNIA&fEIm?F8AcmsKIZrcRGN)nmK*z$(LL>UlAZch87BU?$NkYIk@KG4KeUO53y zN2NIA^qXQ6jCiIo*^Q)ZHr0^gz*kK)BU3V}>M7K&_HxQZF*4D^cmlO@@qyTi0QE%;Jd z^IR2PT>@{=h7^3j7KPG6*GYKNJYbPNme@N90PZDU8pc0 z+`6WUm?@lKJ2uEY0EB_)Yz}_CSMFS{uo_=@nL_Pb_g`H>xj|X&`F~xvR6$UGq(-nL9@=VdqvgIC1-|8uB3Uj)tKr{&4XiDY~hG)SXzguTDS4 zPrq&oqSSSsrqrg?BAPDVV&U{nmLZyxZ(Tm%O6t7eQm8+F%nI4fgezgtw~^Jc2rtwv zf-unrWs91J!UXTg+=KV5ZW$@7*l;!e?mv+t1NwOU=H$ZH3-Txax_-9|4tPQ4ketr?SCrVvMX-vcpK@mX{_nZ^EX?*_NVhB zEU8Acv!1;bYBpo>zS7EYA3H^%alDf0xv`k~x^T0uDgKyM+dQ-;g0q?!Y$s^@!nbPU zd)e-!0sx>^SB2BJ+!-xXQYn9C%X3pZD|4cK2I~+1L?2w%TQ`iOI>-9(!g1b!wHP#lfn6F~7o;uf?fNPC)ymJ#(AEYT(q z@FCU_X2i$E{!wI)!bH$`yv1M3yC zznf(ZRDPd=3li;UK^j4~S+D3cqq=Q2!9PPnHA0e^PlTS}hjaFp_QBa*!R7`GgLG;5 zR5+Z@U}ci^zyorSq`DNIFHGel45Dn@OvyWgQN^PS0jF1bIGE{`3w_L+tinG{NyM6T{`{%pNrI9`2^A@blqYX{9@qt8Mef?-5MJDPGjm|JVeGF zF|OkAREp8-5ZDYuO>jOQb83nm=KUHY>Ef3SI*A`vlB+!xgW=xWg>>~15pzd<&MFxD zHD~K%N5Y;s>OJxvZoA(UqzuV`O!xBz<|Wd%#5!Z@R6Gq>bQSYdV&1I1M>uGx34Vau zt1`5Iy*Djb-NcSU%H)Wvzr|^0uJf~-+2r&Ub~ejAr}2z}>G`Q>bD|wBSR?3;{VO{4 zW$S%wdo%Or4asR|Ecdp_TKvm23XJ3>pFnE{(3%rVNhljPZxk2UBCN6Y8=>9t=`B}|^VUA_PcS&xblY76~{ zv?d}C_L7;>KFv%E3y8#n6PrbSlm|CC)mKF`3D5O9=fP(Ph_{n|n@q19nhF0&mHk;S zcy{ZLT%G5v89SmCNv%rT&s(N%1gpsRFUf1_#KC>j z^O!ema#<83Q)lAciOUR0jO5>5bC+*t%_r&%z777DOTkH6xr+K)lu|8kb6l}Q_E~mz z2XHMAxnoP3_1pk#O37RQAx)X{`+@auF?QB(kHj{<0Ff7GF3$w#&jx$8|Gk}Or#8n> zP;Hd9_<$X<&l&r70NxBll3)I^ylO0RE%=3FM&6Te5HS`1atYVerOMx}mY(p&5`|V9 z3^BGmztQ1n6c41IEns@>fqt$`1JX&!vCo%{7-(ZaE4POIG4uSt$4(lEvW5=ct?xpR zLARc77ckRLu^-}-&B=>zeIKO`boVaYa^*7^jM1|p?P<|OPOaq@7JckA`TK}RU2tbK zVG!g(70e!G6XG@*kby{ti-O&(eYgQ=RTja_(#pmVd^Ml(&2+&JP<)uH{{KKVf>gcs z$5foC$Fb`hPZsGJLDM-8uAbc=9jr>!KjX}^%Jb_U7^cu>Pp=z4EpE)FBH!qgygmo3 zv}tdqrfqn(Yp1z%nQ}O`kD{N9>egH#xC(CablCZVJH{k+!iwUlAhDDbgd&dUslLcVrY50enJ{ zP|cprJAE{IigpGJAVM`ZZ>gJfI`;xi_?2i}Yd1_KEA z^D6wmZJR+wCYADUZJFmTvf>jQmvP^b%Tv&nd>a-zAUM>1hJK>*XHlK>sXdEQrF6xA z)3`yd`%gM|_uMpns%@g>528)+E_jP#3#JA-%(P2j(aU_W>lg@CNMXW0@eW`9PH@A- z(g1P-LtI~5E6n|mnVOdB zD~x#&nfISji*H}%%(*`BSQH(jK|DdL&oeFkXy z+*g7i&h1V)Z~Ddw&+u`~D7OaV@JVBUE$Q(^fpA8qfyUlca`E_r(1&5Whp-2$*M0_a z;;;6HGDCa!3B~WlDL<=(`wtwBW$6dlgm^^E9pee7=KZ@<^Z=XB3uT2yD^KIyrt(1Y z)O3hfZtRFQTH=ClG|)Jn3ddJX30MqT?&mygz4kNk3w-j3Ra;kiBkR;07oL>DBu_X% zV8b>&(VJ)5`zO%WCRY3qDAr|#sTHhNHvG6(_ix&`h(r|6nel9mxx+g*n)G2JZKZLG zf1CP(_EA3dkYWH*)W`V%0CpGQ-~kWs5Y_s{MBcS+a}fUX_HL61US71Bb);nE;X2Tm z+O>vxO)UUh_j28dYiqQ-Kx+=}Kq_~#Vlsg^SvZ+`rz?^84sgG_Ul3gG{CMl*@~e@6 z_71$|RqLEc2TALG?pLP(=`h8L7ut}b9rED!!wFP?Y+uehsO?rK$j!c~o1x$&BIr9SFV{DoF-sEd(B!OO z_i)2u2KUYJuOJKPpVRuouo-#zvw6nw1^Tj;@J6ys)Nw^ZLKY8Zp!+mwIKeygtfS zmSXWdL3?}(uY5G%^53scj^k_iH#*5gbXG``!vq5mrn)z5S2m=G|JTrS3*vzh5ZGyh zJlpfiaWF51)u!ui-%!!WRgq5oMRsdFdh5f1i;(6&Cac0`QV5bdd^J3vcpoCTTp^-2($PSkgH) zF!*6zI9)rhhzA*N{rMMU=C8vd*UaxZW+p%Rjwf!$k1pYwO17l99i(h*9!GG7pOhg~ z`%`0Ges5OalV-#~EJ*!cs8LCDhWUB13jvdcA}S$x6x6P+@L!0VM6nb!^PTbS>(p;mOA zq&!}uJJ$>CGzu%5*syL_%f{7lq*kVx0r&+Vj(zsj3HqpuVJuz^CLjSr@Hgw!ZW0i_GvuOw?ZaA`>W%?tb_43J6tGBt5 z?``66toAP%daw?x?xNjQ3_g$*>wP2~s;BMArR{m3d}E-Z#n1YM+5*Nw@jR(#%uI^% z3B0(;+WH@mNfYuy5%m>h`98>(Fu?Z?#Kh1-VXV6NfN8yBDJuu}79uz>R|99h>)+^0Av^j8N23I!!Lr@I!woSkEuX z-3=t`a)Z)8@>-?Tw13;ru2Rby_m+H|km3ZF>i-!6nxDO9Df=Qw_fF&IRl%>5Ih2Y{ z9djwzUQG=a+OaVP`Zh3A;>PH=H#=(D#HxG&l$OssEV?d*1}ufNDckhhHt6){tp}Nx z20eLf1g-CJUbeDo>YeCQz~6UFa(*b$;8@QffswbQ^zwCjYw$FW4NC^3);w$#*ORid zT$(rn!AC*jQax>4{y#h^iq9F!_lbI3!2V4j;as5a6sPa#`2&5EB~{kD@V!(hvi%Sl zGJm=mq2T{t@VafqN7dhZT!BG)^5^mYTX;7O#p*I9)JZk`S^QNsz-2yB<>4nM7Wsl2 z^_bj?8Gql{(c}Jls5CX}!V&Y9R2dLYN*lZ$7VX9x=xDm)i05hVzt*yRCtvFV=( zfeo|iO`KH5nUv{-nFVH!`TR2~1(TI_GQ|ir2m5qf6|#N8^jCBPuh^X z9||rxIpaCu7DnfqOV!@AP&Z3=eSJl#jLntzFx%zpKT0~@Ja_My%pd4hj~!nXMc&Dv zzPYbUH!feqe@TgEv0adQ{J@fyBTISI-)4D&&GNdC-uv zrcB3PF5d5r4LLkMse6w|d=XXKy3S7hPj-O|EA(3yzo?{BxB2-h6iL8o7L zTa#S(Yd}fhL=Yp)Y7yn@5dV?|O6R`UV`#}gTkgC#cKDVglMlPzmo6VjHb&H^&OC(J z9?GdP&|Dxo%0W`w>(Jh7VSK4e-9kN4QJW)+Wx;rDwGg{_b`43Y(wn^sKacp zwzeE#UA~;P;Q>pbUi;1XB>=P;AfV${Pzpl}X0?6OmFS$o(h8EC$nL#Z7}x`NT8s4M z&Cg;s> zrV__Vbr%^poFp53djCbwcai$BQHIv~{1tox{B3CU6CpG(_5>@v5!~^@w8^E2)Fo3c zcB*eF`bR~KY$uuWhTf*qSu>8$tFA4@khq|aa8?*yB7*$ zw#V!%ef07jm1i3L13ZJ%Hmfsw>K`jyY77OQh>(;5z7tAESTE^qV1fL*B0Y@<*R$MSV;x!+wgv7JOq`uE!-{orKRN7c>hI>JGko6NGq(f0` zQvm-rRntvm!P!ubu)jw@e|T@-6c(gu5b!nb`hNLn2x-^ zreiR(#bphxKnkgpU3afhpS#pf=684d7ttOt3%~atF~&f!fc$}=BM}0zxi0|ZP^*sd zUKP*6fMhz!ki1i_p(?lVE;)nT+R{AHZL+0u_$w-o$r=e_$?)4(=vX7_OQFU)7Yxuq zr3in#NT{P|7+h#1#VoqPnyOrLn4<3>?)sR-$*wrpcI$J!vV|H`%z(Ah~ zz|#GdO2&D9JyHt&gy{;GuYESjS$Qj~dWYM3Y#VbKbw0LCCmA5~p0|&diqCzdQ+j%O zANxs+@~?*h%=@IatXC+M7fYzuSM0;C24^f&8a*;Xgfh=M6gUh*pA9p=3bm75vJ$_xN+l)(@=8$l%(_Yx=bGu>qpldwz~%cWO5A`a`V*>_i=nse<9+F)o&J^Zk{H5+BSQ6 zfhO1f5AA9qLbb!@b#cjHVbqk)H98E-4oIk`w5N!mxUk|1d0uP6HMc=Rx-db{dQT>8 z6gbyV7d~d*u$aJ*tcM|ZzAPs=;}zgFT!b_%HhDb9dS3o*o zExC0@etmiQ;)6{;zH9)W(?~0KCu*4u-vt@8(eo31(k;U(#L3xLVulFb9c_@YL(!gd zoI-J;{bb1~QYrtkThj0WZzMQMZK+hK)pC4q(N>ZOTj`mT4_5L$Zn)xmUyw3>+^Ve< z1c_dTX>699R{K2}-Fv5{?lWF;9fIfy>LL*sAUOb^jk{rOvgbHcZkbr1wNzTQj)FNT`0EXVUffp;**PwT7sTu^+v zTR;r0wCIl^*3tb6Q%G`L`;UIW?I6iEcrmU3&TSe`2M~TGu&3Fp>z7PwrP<6giqg1+ z{OZ}uiRp}}xA97k4NRmxf%aZF!=ENCtG$2B*q3*Z_z^RK-UxdFwU(W;Dq7}F!JI~I z*x||QhrdnJLdt9yyXO&_f#TVCyBNY7dlv9wb?6Ige@I)Yzm#np!EN^gS3~5_0+x%(K>)8T z%o`FKdT&_Kdpz7d*X+B=h1Y|P;{ZH%%Dpsp+*|%m2sMDdkcel+&~BYs80If}x&-u* z;a~Bwwrkg2E|CRDR;bWhw0;AqQEi=;2J~8bFMa@f1r<-qOo=|jA-vAQ* z63#2vv~$=7Ydw?q8Snxb1xxh)eq`aYKBv5M?>&0NgZ#+mVl`-`Z)}GD6k@K|`z5k@ z?Cd*9E2L>_hG7FZVqN(E?XbO5K1&bltk+qS%ZfydIR^B&Ob%tevpd77ogGo}SCM%9}fG z!`acQzx6t*LzRXEcSkirH0_6$WD+eBfOwDFz{#NpVlY{DIq|)P`;9pncW}Pz!LD}N zLhaQmzTU7b^Ri5E%MyP9Vv0)uj=;4nn1)atRMIY1Il5+N!`)i2AEEcA8U=x*&kDh5)` zz!`ofAT@!a!-^^TB?5d=6{j1kTh_gvvNBmj+Z4*S-+pQGMJ^G%NZyjGXVAvh-wL=@ zkNvYf3Yu;+Z)7pnij5oLz1O(OYhFQAa{ldCChic{Q_k8YOakfWnCv`(63*;6(tl8i ztNEEmVPCFq(XU`J!$^mw=Y*U3Vpwzh7<8>oTj&(2Vcp4Y4F8pVPouK04Ay&9Y_9V4 z#oHi1hqq10m!d$1Izl_x4=+Q14t+I2Uh3V80p@2_SPfWJthxA4&U1OvQ(D({#-rQO zR={uo3A?;)&F8U$M|fa%LsxsT5n?Crl8MT^EN3bBF|}*G-eJaV8W}Aj-ry=z3pM1~ zMDQ#k#1VYoD{wn1=&n4eoY^|#eziGSBC)2I7|e&)*B>wOF7}ojs#W2hewdwZvPm%u z&L@}$ql(9wJL_u9B1cESWEv?@Xy4b+%)1zlLD`^;+*!-Yby;lPJZVcjFCZ>3E>4q+ z2$&_`9opp1t~d;rLcA+_Pf&L_!IYbz)o$BSt|zz*f_&9YB`&RVt?ZHms&Oz}p|gEH zoP2{EKEGY3;-7=1z5j<4kxwAF+exHlo}2`FlfK6pjj{yfxX66Fd}$=OU~!-aGSySwmhr6?eOj*4a*7= zydq{Ht_4Oo;G}n5`=Q6>aW(B1XD6B&+>5Zj3w(@-O9?^tQtgu^U0<2QaG*kfmuM-9^X&8$h^SZD&HFK zbJXh6{1puev((2&>33+&)IU5Gu1QYn2FBKiEPF`cJDw`nM2`8?Jek){Zr~Aa!AOA~LOB+37px1?HH& z6uYP%$i~Up<}h4r;L^LkFfsB7vO8570rKm>5mPRW)+7fww|E(hpVohKV2KkBkJWb9 z!lnazfrkB=H20-DsN>(cUwi(FN76UhyA6qOjzFnprP#C;B!dLEs(nk32}DmnoFcf2 zgkw9s1aINh?Y*emb#@q{yAN!i`4S;J&xSOi=BQBgh5Zs1vvQ87nkDe`K5=Wf>yr0m zs%KDgxQD~1!z_>j!k@)s-gQFLOqa|DJ04WKRBs~-ho^c;nm3V56gGQ&PJI=t&UgIH zn{?a@yaaricaX6{rr796UfcidLIzGBYNmC~-HH<5(Y000&Qc00Q)vsWeZf{|H5%m+ zZx_$%3U`gYcVxNVA9{x2a%9)3wtAw$#4o z3;#o+1r(Fp@H8@zQEbHunzjKx-Kl**%vczyF5<*Z^ zM{>zHU-=#SVB~G{*@e&O+Pf3KHLSJg8Yf#(V^Z}Lr+ojJdT18IP3Ka(^g@CXP(uoz zZ~t&3$KjMXu!ln?E6S0K+H~&)skZwOcBl(%x%5cTwvulcv7WFC`BjZ(J)$@F$?pv# zL2oQ)*&Sob*Ugj|ZL|z?y+I|Gz4q()X_xl-fd%G?vh(lnT=y|?oOH4#DMhB^PFcxJ zLfa1BZ*2Ac!*UU<2-~NU{2q5|v}Cwb$ZR|5t!N(Xc;!@`9PeW2yn76+*&ogg#*W77 z8LB;YE=Hqpxj>;{;#71e?;r1wwLIXZ%pJ-r&7kzw%InH+K!aLhs4A2ID0l{N=+%d) zObp9_kgm}zisOHk|E2RG-~JrQy_CZxAnct2@sESbS2zxepS^l1rD8CxgOh^%D8+w= z@4jX{XbuT(;-g${YIxNL7-F1^J8dH*61GDx#C4R*fPDBR`vnEHHMu%E&F$|$k=HvR z0Qd8I$Mx=d#jB1;KRdUv#;#$bC7odPdY04abO9{D7#i5-Q+PLg>NIfTEAq! zC0oZ%Ix7a#xF5Jjd`_w?7f`CTpLF1)0k`65bBc$F4@J*IE*>n_W*Z(T>lc<@Kq%?v zeA_qR^x6AOF=F#iDRHM?+hyOPJ(M4Y=BwkO%MB`X)ZP5O>YBdG0W3x8hsRtUA#<%|2Q+9oJ?j?CTVf6W4n zk!u3;Mg+7oL#F=D8AB2Ob}W4}yZ0vH;lqjV^F|E!nhJ|fNeexcBkY6xwZ^F+W6=CE zi%Ex$`J|@8A9u5w9Gd^w2;FXK zN)90PB4X3S*I+_pAY%~=2NZ4ndD?zBn>J_!)vYHldQoTktJNmt|Ho4k_3SDS{KS4j z?qma9I}dwWubG9CG}Tf|nt7mb%woXx;qiS|DEU^t?PB;juu>6*CmzWtZjko%H~n_D z4eNu_C;c~UwCH5xv?nIJy_Ez${2J9?IUG6PhBCFxfb^Q+ae0RJQe-FGyOr#G0+>Ny z;Pwxic3s*pahBFlZuyIR#(J|3AqS9Dz1x&-4gG*keHa6DxxmkKmI6>keSi zaF!w4LMck;w1sf%A1x6-LJu)q$S?}*9B|cRYCEWi!A8V5*y>18*g%8aKMu`N!YCz# z86OXS-OEk|Zh1FNr|JK{NN&&{ex1xmQ-~qgFrb(lz2*M2ohKfd&tf6e5AzrpfKw#; znMb&xDMf*5Y-9?{WpXcH2-4`;DTM9P>ew>GjI_b$j2z{(kBD}T2%zf8TUQE?0Ns8$ zO^ltk?K;p_4valka?}UC?kX(S_zWD9v)dI=3J4~uL34O%N?det%HY3*%e>s@-SK*r zxJmUz;&w{_oj%tFH8Z%Fm=k$MBTL97->!E!=pG5CPrOq4`iEaDwj zkNG#R>bbh+O_uajPW;%nu~DgdfLW^aOYDYn)g2*o_f&$z@$Wkz6{l9}NuLWE^hd;A z97DlCbudx#z^yLdQjHo6;OH}S5E(U^)NCpEc1F$OdL>WrpKx8T=6XZ=5SLW#c*D3=B*Rtnbf(y;7$A#HzGBpIc zvBi08|G5TGPuf*myC8)B)7f4;E0a_{_$JXINNmwn&Vp^^y9&~>Eh0{dhlO6S_uzTU z5|`ZXCU1)NzJg5cFPW==zQR<6b68fk!+MQV2>i&1Q;rWOYo+c#mWuo5wmH&PNfQaZ zCD%fV#&A;a5}bphl(l3^^5Tg;OqMh>pk5i9%_DU(W9aj8O3SdPTKft#*JO%ya_EO= zFdqNpgFqF58I}6rGy-C|e@mATK?^%$nso~ChZn4xPr1sYVC4Da^HEb+?`1XH>s`+gm z3~1y#x~YRNHBhTKK?8&EJXuyq+UPy0%C z{)~0W!Z1|sEeC4s*Kph}z79)s@>}`!R;rNDCa=W1b*y%;U*qBb2SO-;1;^&C%Ddq`sMAFCBvl{65lYNWH?fOnWt-7e5su zNjdAzS*SY!D#1#fc>Vq+Sc(zSi_O1zw-G*KDz-c|C8aQhv>l@^iKL+;AKyL2$+5oH zGk49jyaotz|1=r>?q@tVqwX8H#~r9|rZ{&Sdn zDS{&4Kerf5ffV{r*xK7meb7@l^Ki7Yv#NNgBF{x4Nm4wh^1ZRN@$HcX`>f21knt3C z)fW6g+T#|Cc-q}{&P_4MYUS5Obl38na*ku6sef69_Cd(;t0u!A;a`V>55VYw zGWS4v@c+k70x5qrtQ?{-D>s@4nl=X#Gp1_4?59b`5Zi~ZAt>JcHH)Zz`Wao==fAKm z@n9B;ag673{;m_Rg_R?<4GaL$VeaV)MB^MTcey}5b2I7c_^AT2=MHt2djN2NxCp@p)NPZT@Vca&82^b z*ZZ;%dIp{_Hk;kx7Fhj&UvuPw4hCR@=nQ{nuddrbEg(O13diw6f#|u2nls^9nRrxo z&y7<@vz1kgSVVwlFF@YFX;SHHBbt;(bh)F5pSEz!dLvDDftKqG-d9Pibb3E+)v1H?qOsTv5hSlIn8S*1kW-d^MC;&uqht#P6qH1%%W-A%ebqG|`!-j^GeEr{-@FM@HXD1}4~EgwP+9v8J(pGK&66IQ zsG|d%liPuR>+=pDZLafhyLwl+)H78c#cQe43(qz{iaq&VKyULN4Ed(!0+k$tcCa}= zp)j_XYzBvWBq8N;zZrT1Y{S#I(mv(=C62P-DItTPet7VM;J!fz<$5~7+3e?ruh z-YGOVxPPMuM4^QPW9*$UCANTq0GJw9?~t`Ol1(%-O|Ur0xmLn39aOnKo`^`f*i!H| z%UiBw57HxgeJw&XkS!eY=TyinB`}RdSYCuQEHM1D0REsl-d&@e1$V4ove|S6JV;eC zv6^Si*mmy<=vw3=99bA%rr%K_#+*RzHz}|#95&vY&n({}FsBG=$G#YwhHlP=Z&+CK zWa~UTlRG_|OrPTBTr-Lgtp1<%k~n^Se(OwDDZ!n}MD70&&{1QQspp?%pH98ug)+|< z+nKG6?T>|!NxSL(-N+xypWzFV-+f13Ry(0W~=gz zYaUoznRXxCKb|=N$q${+)yc=U!uY8?XEk(f09lm2k0)!(eCzclmFp`7GkQ z!3{MkO&90LZRaN}_-44@aPSiM3rC2;QLFDgkfi;0=sd_8>eoQZP@k# zwatI7PJU?wsG(U4u*Z-ipKYB=lIf|kre=j5Em%F|Uz4A7$>7vn63V!LoQs#?S^GkT zP}sh~#-jdc7E>C5@pT>t&4^;>cqCBWFa3fvM60?v-xyykoS>ocWI59Hb{_wmefVD~ z$&1x%f1ye$ZQuU09fS#)7xC9DPp+XdCWgzil7HwLO$kM$Q$CO>0;P>d5*#xA5*xU~Ou|=xFPhZS;p1wtmXfj#ECr#HFW4(1K{Kz5IP>Fd%rIPV zc{YZ>M63{~F2}Jvx+1U+d2$bfVndlz+#aazmq39X5-8ogd`%xKWzcik(K|LDiEw`T zxRG=8U+K;Ad@56BV+Bj}R|<3R=A6iX=9MxJHO54_Yc?SiQBV1RBGjQfBhgu@Ah1Pg zBtOqT$2$ml8@DG^_lx}ihfPXhyE{^VaNTLe|3~K1o2DfBhBZl>R~1!?GK+i)>}mGA_`;1;Jdyf=0m^gAVw%!b>1cUwO^4*u=H|O_xxN>C z%PmqQw(}_1F}^LHg3L3Qrj;G(b1|>!3uaTcE5(gpio_M=2>B}NXHWl}P9ST&8;@ki z6Q&69?7X3OYz!H=s>AkVw#IyVdE+)T1=-$s8KLspoNt8+4da>$>*rBJ^4~aucZxS& zI_KWA+~mq<_j2j@aCaoc{Y`Fo_e%rm0bKK3r*<*3plivVEldPuF?UV5D%%cd)>9t2 zqJTAfr0$K1d_<|z+yu7Dx;|14$I|ew@WsoXg7?$Uh0BvY_U-M_+a^{z8%Qb5wrT2* zd4ew|elZ)bUu$kw+V#YHhKRpY`38TP=Vj#`Fp3ewKS_;!rKE>Y8v!e)QId z1{Pxl=-Ob+r1WMPHYhpNLqly;LcpJ0%j%>|NhN2T-3!ATvSMLu!yZ@MP4;^*Z3_tq z!rW;?D2N`w_to__lx~l)pRx=w3e$~zJR{;k@gm4{MY$sGb*6md#{T{{YY?Z~+DTUlLDhC~<4!WBs-y%^SElW=7ghDZ$du)B?JQIid{oWz&_1(kZ}r64$n ztDXj+{P$zqdfD4;&IC8ZVxNq-XeoY9yE0N{X%t9}G^HR74p8F0b|$s7(bwVNkG*N!&?NxEyEjC0TTYw#aC9sGh+z`Ks|!e z*wMm#Ua3@%C-olnhRKJ;O7US3LTYE)o^2U^HzBm4_!4t-OPywuNH|*(fgeta=zPR-9W32 zj||kAR1SOZ%P3{LGL4)QA-OgWh3BtnrzDUKm4?)zQ-=&~sia3MF$|P=I?UC8LpIc= zg|VeIqX9vM7~eHrPts3s%x!d5-cvg3&$_>pa2UKHrUxD;RH;xQc-4qT?qB`5{R-X6uY4B)EnLa1)&UA%{Y(=AM;gkh?~8U^GIv`g{xXd9kuxdGa}_`Dj#{@al6zdv03fSA*8}A6caf+me^T znf!EGiK}3$v0q=G@c!$PmpZb8T!~=y-RMP?Or;fj&$^0}|0wAT)%vXzCU5z{nNTrQ zi39cb!1jI3$n$NhR&#L7_|%hbILds60S*{pZ#I(aQ$JhRUkwlZgLmnqe}8UF`5Q<` zOG$%JCHFsV3)%MRehCUqH!UIXZ%X6)Ulimn&9uW6Pi~o;nkOh%MgjG?>WIq%W`;4tcQ2Y}V?w@fQ0rx^~YNE+bU+t0X@r^+Eo~&SLFITi-zOTXwwt z5=$SMO_U%JU1oIz=MpJsCt9}BXj@xO(5S=Bl?GRafKJ!n4lC*z25n>EuNAMu$Jz`S z_5E(xMs6o{-o&m;<<9qrwp=08)zp;^e$Vj|kd{>ncsG4E9^8H&_5O-E3V%xH0ABP> z;ysXHotdG+489qtuL1{<@h00=KuX%1$i6=@G@3-LLJWNlVPntcB{SX)N8t(yHwX#1 zCByH8$%MPBp4gsD(>T?C+9=Qs$guNAp6X3_)gBe}pMO-!p!wt}!zKTeqtLkdbqBVah-?iy@F zYpj*Y0E*ug=iiks#W{C7^pX#TQ zYefqtTC29p8C)Q{W4>ILO~N#`Hqk$OjH7{3vlYF8yX` zl%yn?*;vc1qXI|X9tfHTdn0Syy{+V;rQRKu8X0I~8(e}yUJ>6ITggovzvtd+F6@qj zGLDvWO=;IYqUcUA5It{wZBDU^9XrT!eR{ZzqF2V#bOoKD^t)r`K(gasw=z(xID3b} z@w5$2>!P|3`qEv^%a|@Ph^81{Je&LK!lk7Y8KvygDlhs9wYa6dW7)R|*K030_(a%QZ_{vwdbf)fvMY);&DK@L< z`z}KSm&+J=EoMdHSrMu9ZH^dS->1 zY*ha6Ypq7Ar8WCr@oi06WE^u(-Deq9pF9w?(Ms5IGHInUIr{T~Qlyizp~)z_ohQWu zh&5=FJfSfbUUplJK~#so&(7_oyn7kzf11zMSpdQc(^0Jr-a@ZMSssWBH?4)%1+l}U z2LkljYxoai+O7Y&aHC(|&ONMo=+C!$ltB`Wa zM9yvx_AbPn;WyvG4+z*K639a)Jnr$*y8yoX@0n7MpKZQ8$W%35JKWmO-Ba%5FW#tw zmbIfbqY>f|rvML0kkOJXE7aVeq`Q7s%nyrrZPCjeQQLOGz!_tlv|eFDjBF(zZ2|s( ze*Vek*M2xy;;&-4ikv=|C8}rdzul4EH>gCrzU3fEA4zTPi8X`CRezh5kSF(928NJJ zu-AE%7v9GFCEzHCHpKiA##>pK?U(ih8ZP8Emzd}{tv@ifVN`zC#VfEX>x6Ouo9J_z4kqy75r`|z5nl%lphcxBDrYTYP z1QxrIG5B1NvpLfgA@L_>fa31zhHdZuvO)^3$vH8C1h#^@bfukAjJ%5UTNkn}g&(Z% zXXa}mx00OzO9qbZ`_g}LkUu}$^np(gd za-$^jMPehB(XafNwkOL6W@(0KsSzn>#l~eGk9CE@+|9haMcWti?h*8bzNhFHI8Bx% zI15JE{;@(U+vo<_xnR=!pp8$lPmB;T073@1(LGX}?)v=CSJ-jgTtH86{hmRCTA;lM z9(eyEu<_xry4hUb^-fJP57m4^3Hx1%7HgfO8%ZIi@TNDmdD38T#Ol)%MSL`Fp)%#!ti>ka;tHumQ3Nr4JxV9vvxg zBY_(zygL!OxA~g0e~0zz#otxJYc~X_>XTo5HBs@sdu+!Xf9E1-JgWaA+8+bt2OuA~{Ws69&_n23(O#l0 zLRWX5u}LY)pQTSlBCT3JVFlB!H|I)^FFKi_B>}cyC?1%227Af* z_EZf_L2>sn`>aBG<$3X+pp8zluVxA&E!Edvth(T{k0B$4xjYOU5r`102zOJ+?CxtD zeT202W|PUFYO{_PX0ns)qGAdOqPxF&qeu7Ba$JMf)Ke#KW|AV8Y7zbjxX|raTr;)4 z(4MWR31J>CVa-q>d<$p>zBMMl{PH9~;#cHG z0ROt_!^$rZQ^fML6dzklU%mxgO6R+OSo?MEjw+AP)<8f@DVu(1k6~B^!=8hSWr2i{ z4>{^TP8#!6+UgG`$TT|KEnJOck}pO-EoRm03i#J~&!V3L$reIDdJrO*Bs@wO5f*iz zXX(#BGGa)d`h13D**`~n&U(K{2DzpVb^O2ma<#=eM0Z^L)K z4b!c2dvKJB_}`UP%tLBshDp<#`91$3Yk%Mzl!r|vP~Sd%^miC1xld9C5z=bAyM-dO4VeAUNMrb$O$%`}ELwhgZZoeBM`7b>=}OtEt19Ecxy=CU=_rSjIL!7vkX zP>NkV_gqTTli%M@zDk^n!N9VYn}#$E(Q@5X$;iVAK~|XR8d3>sK(uYd?yUPZdW|N7 z{|}mGErU)Q?-M`l=1dX>sf2b&W7u**OP{Wf2D=uO?seI_bJoUi)D0y2*+ zMr|YDhZh_w(313^OYHiTyQ0MorMC?-XFu9Y%Jj8*-IFd|y($QmVErMT(uNi&UNk;i zX{NWwhVqzTuWKqe?sfeuL5f$n9Zr?gnA9mol#L}a+=x(htmQV}a}onOYWU-Uq660`q)0Z@B>UhIpw5mcn| z2tDxvRuxcv=Hqf*f!Op_)eMa;if0|R59^#062tEj_`HDSnhZ_TJek9nz-oOV^9cX; z>IKk5TV`?}%vP4vVcm)yrR%zp^Z18ja-$OloFHm(8Jn*6A$&Q6$XAjc5&61>{yh(8 z1?cJziw4i>kxRUz_U)nRfdOUEA(asx#^ zc3v*_-nwDwV&@h0&(!7`hB?_-{n=b|VM+khU|y`VhB<6r6Lv|0U88rO+>HuT(Z>cj zTt!a1Q>-tdq&4Izbye@ z5T7ZcyBk>>5jQCD`VEZ7nsyX@L;skG+EN7K%0KL1eHTzO5cR^zi%*K)yep)aBwV{8 zumzwke}ghYah9EHR?n`{D?DDvn)_+!Z3}YQqG4FofZ$i?QFdFFh)zK3E|UprbL?(= zVg|@eH9a`}mLte>EnR;RCzKvej;Ks9^3;`by~Eb!txMqs>G>P`n0s5w8o^6B_l8=< z-_77`%sjy!>}lDQVLo>X3#c^1&{X#ukc_JmDMghwgv({HHB2(@S-4 z$RoWoq_~Hj;|C56=9mUeKHx@=CA#TBBX3TqK1&64TNis93#3;|uyfB(AMnuVsY>|c z+q5S39-Mpj^2zLjY|211-e;AMH^%f{<>cUt$=(CYEMKN!eT?^4aB>cl!Ef-%>k|IS zLASO{;e-5zL=udE%Hvf_>lK2om&f5r1UkNYgF>N&Y zIk%e%9H=1&2rG#lTfMydQc%x+OnxKK!54HU_Xzi>qNT&|x?`=xH|GqMuP zhr(X&6S3%YS~(Ys675Al0a2W6S34451fR=J0jt9axLEyQcc;hP zIO8yDXJ6eILXu`>nV+|=$_u-0jTMxe1bZDG-sG^=1Bm(zW?OT)j-zf@wzX%wG~iii z9zWl>(d1BKJwyK1r{dLeWiM#nKED}jqHn2uZ(g)C6C&v?!0x%^^*^O$zh9tpraPTa z9jRR8?qJP1Q$onb6JL6 zsg!>mdJ;MEfkQ@ry!dloNwb^`4!6n9yP4YipBaFORp$uJsF;M7wwc<;DEv z2QJ!RPtWt-x$l1^p5~)bAAVt$xXWZB`eizjbpMsB9CLGBIsuj`+0Jna=Qd43%bYaO zp%z#0E?WqMg_3QFZh>Qo1KLrX$5%hxvno87{Z+-;)CFQI5Yr&h(o<=*DUdf;dYR*w zlbN+>=>A|sf_5Mvf#_7^s;7igWU*=nHIh3BN=$tCdc6% zV<)FOU1VnZ6Tm)FB(R=S_}!)EsD`P6dS*CR;jZX>MbUKlpDo(Zx@4~+kCVVr)B>(a6k#ikb@DD{~pA|5E z=oS04V1^ZCDD+po8QQj^dpQf?!0We5LUr>pbX5+HJ`-l?8vbjX4=D2HvcCRZ5iFIr z1vax;)ywcUCA-+1J&EAP%|kiqD5JTwXYW(%@!8%vV{7BRY3o+lFk(H#tLUUy<) zb_|7d$78q@@(K0{zTb>0s~2aV&2P-f&HeUIUQR~GAA&SgG!HCo1bapP|B83#^x*?s zZq4pv$1T=TcBqO!TpSWLX4c?NBDpu3PJ;j-CSM&`MKXKCF~WsXf(8DbLHkZAP6+s( zy_*w`UBt`Z@KUc!X!IaZxrlW*=pD+&H^PR|gLVAE#0m?yqDygv;imOWQn~rnIz58X z9*`DKBwDV;uV)eos4`Za3!X--rQkwaP<(YYLbKETLPng(vd7C5XafVH=d}G8EYaWE zl+d_KOfG%=O7=4{jW%~J_0u1i{JMAFC*}49M?F(b|2NZ6{q}ZW(;*VB)n!w27nYS6 zyx8aj27aTERe7*7E7wNmiIM5Yth2A(pG%_Up={|6yXv>UAFb>hT#OcH1-pA0Hlk6% zibH2_oI7;IzxMbEsgz;4_#AluCG04OAH%mh4E zbN$x9))HyMQ3~xwZ`#doH0hnTl}{6Z2|2U&1L)S&g8LYr>L)Q+wzhe#ZE!zxYcE~^ zEY@`rZTg3a#NmD$qO<9G1I3uDCdAR{KxgUCH6z~%7isLsRSazIwjCNk87T&ku~WBD zYmZ29em-)U-N2>9SJcDH{qs|OOYW@+(=b*5VT+ zCO-yKEu%}^biUk(Lfc-gHfYGf;9*v5wANE5J?O0;{i?9zH;+_N)BQP`bO@ra*{@}w z^47Q}ml+4KNat*&Z-wTCaZB_v1teGbdGnITcH}+GcUoB+$!J&oaWwA|l4s=eNx;lv zR3+ckqu=7Y*!ASd9ZTd-zQk}RwcY<*h+=#7UJaI|?Yz!B|b4H!99>WjzsQ5kVL9uItk#6zq(%lc2mconY zDi{1fL8Z!M-JG?-rmF42!i!(7n#CqeE3_(%tOdi2fe3&)s^eYKI|$pHL5fOHp{xUc z##R$Y$018=7P*YWUKQfgh&lA%DPT&YyES?AaXAH^k>Il6Vx>Z9Enc#a8|pHKt$G&} zu3}l!Jdo0A90^z%EVMqpmk$NTZMi)UzfeiQ@%^veo$m-lXoPKTK{Abo8(gliY-|=8 z7=N1fJwc?h@cNqcV80%MBP;50wV>xCd)%wv*_Wt~xWIK{jMj4)LF?W)Sbh28#R?BX zcSxcbQp!6uvK@3ni4%MY1)rpEi<@M&QVeqxAY0`E>F|nvvd7Y3kclR%_eaDjBR5(T{YUiXD^e z<67@^m-Hfb_ib?ZJxx>Gu#iel^X$;kkZN~phu_;kNk+QcHfz`7Exm{r`ytxy2HDK0 zK82vduYa8K9wtbzUH!5}C~S>+I!L%ECb|A)@}zVR8IOa9CBmr{Vrti801$mgaC9;x z=uoh*ykFc#14bClDNh+!g(H(1QPbzwUNLqfeRDrr_*=9wt%_zG{hEf}FMYnN1Y8jnIbcB@@(CqmIX6|F1pq@zS@ zO@AxA;jNRfrl%S=;U)}05^<%xXphsLMbOgG83+X5v?r)}Y6^bd3VW|uDkj3_OI|!i zSWOT?;SCgR*wbXMTe{m`6Hi#15-qG0G;^08#-&9cPj@4ikWJH%=?`xVfoznCTGP2u?qK@~B!kJ-`^Kzm+e)^0N z<~FPsGZtGD7R#(|R5qrAaw5ELV??NyjeOL$+sILY38g~cvm&O)V4DC~w2Ys;=up=u zk{fnvZCX(NxIUxI2+@QU8A|>Ks0oezzt{TdAz@cJRjqY?Xy?yV=cBzJB=*vl_L|w- zA4^iprn*6T8Q{O+^-&YGuwa+XcgIs#l3*!lVNU5zmT6YD;@k=oN?qqs3gu{L9c9V{ zjoKp^?=wFEP(D)~=G7{9oJpG`fkyZ?^<8q@<2dM;h|=5%M&as5 zRz|RRb^jIbblzK0J!IhDNinf8v$5;}8KfV=1RCI;wAVK_uI=5`P=8R91`Mv^1E_-) z$q{`%Z21|Wm3-GiPzQBcn}P~W!JVw=Ri>g2D0UbN5gCYQNl>Vm0;(ja<-|Q$pfd=U zU)2oAgHks(vpT>=vs#2KMzV6fl?1OzP7;%bN3&IjRnU*}X zai4}MYquwOgF8pCRKNj~{IZ+gn;eudEmA}Z&% zh>sYyaLXouKa%j}{RN|K5TicYJ;iAAf#}r`mNdN@3x#cWtB(gue=<$XUcN#Z8n)Qe zQyjk7I#-2ZjF_Rp;i_h-p|{o(>j~dc4quCJJ3J@n$zImSL_)$zl61)7eLQcMkg%P<=$c|Xw;pI5& zNo1T?_p_m7ESYM}VMyBt7YUT>dtlgt({G_dptXpgB_z92p$*H6SEfI_A!Q*)h#WUT zij0IaAChfiS!4NTr5JG4I5Zb)p8;tu@V6V(Bs&rV6E+a#nHM6mk&%s< zVlE`@)tQXCbA}MZatb77Pxzx6ryBW~>W4%_j?Nl#lWW0dBOgBjIRd7=0gDJ z#vN4iO)YtGK%#}Ir*%*$i`&6k;!zKiflb`g6tZf5iS`*Yl?LIQAvGUpFMO^5keBK2SLi%QnmmA|XNU|LKSU2uZG5k-+w~`81#fdq@FaWyY^F4(==coKujAD)Hs{4}vY#tXEcI{cH&J$(=`RcUIQpcs2sbr&iqae; zCVm7Iiw>F{1e{VVE>Bag)=bV~L36W&L-NmvhAqyYe;reFg5qwr+0Id zj!6eg8orDGYZ~)k+VjDGF9$u(fThU+t61>3`>5pApWIwbPux$|HB}UOrF&-(Z(Woo zYC(wVr$eeYSbg*_#XyW|%|Fg}M3)RylEEQaUqW!p%Hqxv@JFfOxlu5Vc?J{n3F#H3 z9{qSy-0@`kbB&_3V$IvL$8HUowY0BG6?Y!N*3ur`Nx$)xwlb)t-2a)rs@bef>8vm_{}@UuuRZ`CxP8U`2>6O{S?sUiJTe_}d(Plnu;X|P8tFI6jb9g;kaOi5{j!dS zFAlzaJU%>+Mu`K7ck$6_K#AnC*k5jWFfpFBVGzwWB_R@h(AakJ?$Q<9^d09 zWMfti{z1~DfJlAfNWj-7zQ9L&%qHT6o%1=@V2(G0HFzl9f1Lqr1K(nHT9y4kyjSc_ zcxTmNAO|P+RV1|Q5`O#>`rrAHtphdFJ;JB214#cUcr>P2x@7`J8 zwpS#Om$J{0*eRI6g5sq2 zq_s|^wO;kCQ*6g3tw0|*QLXE2zzlfS#*Z4_kP_ zy}=z-Rp=h=9{RfG#ntddSBLlnoa=fT*Dl=xVJTwkDz7?Agj(zGUFQd)n6%iYi2%Wg za$-=f;M(;z_6GN^m9gKF5TtBgF{$_QXYoK{Ma z`~<`Wo^!QzN%O+wLHaHZQUYYfQV`uyViiC;mN@Yy210rUX}FQPmEHh6#?vTjLK}eM zE>w(5$lG*`_6MaY)K=BhYGX;lLH=g+LA>mz*>i-0>_CV}^H&)~ge7@D69p=3q-QjQ z8>-D9vYHMvdyS#9A+|+~PJrnZA-nR08Cqdy(Abc6X`>Q#r4Gj-W`Zzu`r{&^9sT%T z!QE=7eN1Mw2!j9>@mjSzuhiew=eR$%k>3GkKM@*o;U;AQGbv~{m{AaCHQ(A|W;|g_ zXhEl*MxdeG?ufhn??(rkh*P!N6;LNa`V_WEJ2OS2!6$;-Q!gHOgCaiK;BbaGF`(Q+ z!GG#k=fLO1a>m;D9hHK`+8dU?iB>~>~~3o+lY#F$9-9zq*`+1>_7uLDNI zb~V&N{|H~}L}ced6T(8OJw(^mQIMjT~7NBgs2uE?bju;uX1IV^>HEFmxG+U?_#-KML;U)MLa< zBiEJDuzSyBXu|>D{Bg?tJ7)>_8Klag*skIC7>dxMPH2l$K%30Di`SLk*W36Pqp;SB z$lhe1J=qI1(K{0&!zG_ZchvC(y3|5x(@aJQDGxS7SCA)&wcEMX)zK2r+3jtVwszk- zv8$`Ar>n~{lM>+`7o?h5Ko6@} zp)L+z>|7kysZzIdN@$3DXKaZwAU)-^j2T7r;lePkPzU@A_)qPl^@baS+`fS*fOVhj zI7s-?Mfa_)jwkAOr6UHDY#Laf^`ZuDGe%Tb5HssM)>-lxP;#G+W%zA)2)Hw1!$s%* z9ibyFmrwAaS_kO=U3^;(G0#cPj5YDjQK*bx zlYtu=Ctw$|08kQb==pFdJQy?&Yaaa}n0C7Wc>?fMk28B769-nuos*8UjK)e0J^PXWsb1-W3AxOnl*yhdcu|fc5cbG(u=1U_M&t zj-Yqu4lUzGAiZT!M=|slypls`g$J#m-X9kO2pX-p5^4QXubDi^9weTvF>HHdlnPUg z-n1FkoFxu|uUQNO!J;0ffolYr*jv;1GJy7B48(x&1R6pE^PqA_(X0Z;S~Ui?fFNqxRW04Me*>V7?ho5bvPw5oFbAK3PnY>whxH7$h7Q6@l7zD zgpjcGwbb*dRQg9_PKIDgX!rez?)3%eXa@uPYsQt=QE z*3t#I(B^I`qyi@mVn;D;M1!<^z!Q&-z$4piOCeYnF4T}Hwu~p^1;52`8!5Ol;cO=69#bc0|{^tJO|*U3_JpWD*&-TACl_>?}05HM2ZtvX zH4SS5{z$R-5dh263wsOw>7VVl3qg?uR+c(C;SoH?@Pd%30TkgF!&C{Ccx-|^j|55z zZ9hc?P!HSgUl{f)OC7)90-kfls0+?Yzu}_7Ol&TKY|5-J@m$eO@VMN8gH1uIv5T4MYc3?RTZbfa^VLbYy>WE6zs(?m zH6jthM}qiA8i^xFu&438H(~r%mhXwSw1i`}JWKQ!L2|oRk1A>dM|NGSbNe#cvb4UB zBmbFb4acgUs;Pd2AV|$8q)~Kh?Wp0OwB!+=C3=e>fWclOtPw_?*Pq6UKgQ#e^L>f` z#*V`1o@2Zc+Lk+ivu7c3A)iGM7Ix}h(qk0cHnklY=ExssVZk`s;>L{KOPzg;4>Bi- zq!9kyn}9+Keh@`GZyK1#{nvwwFWvK6pcv2^#K=)0hEL8T?0D?N{xJu{Qk zJsC4K_-*s4*NW;BD|Qh$dRAN$+A>o0^a>zb2OHWxXJdR;nwm*%1+XbuAHIGaz*!4i zaJeZ3=(I@9JIEVUEtOFz!tSOBd`qS?Qn#-{s_LBmB3A@0VvS3DBLVQl%7DrnQ$NI5 zlazqqx&wru#p$-_G}Pn+LJXElsDj|g5n9$(9{Wjt-!YYb@OlZ;xmn-ea&daXH)HD7xZA*!;wo!o z`$t@uaT?LZ$7MvP7p27$Sd8O8$ds7Dz;M#{%ZykO_OD$lFkrZo@Lz|lPo1eWD=l6B zco`EqL9;XyLkteip*^6-5^{fH=W|jx1q7&ucH~`Lxk8Rvw+&(V$y)0L zF(>KUCAyLDZ{Eeda{84Cp6Y$zo7E?m4A*X00K=lOFz+GodJkQgW4Yos@~SFtp=T)P*^hiuVN~!MlZ*-;f9X;34}h%i{T})| z#WU119Q+-UA@H6AUfP3^9h=>&oA^8}x#RLme~y2T@~iqj92`qq(4|16$0)X4uw$Pc z3v7#(dvm6*)By^EmkoLTqV7J{ioUPr>=&8z&B?;Qm;A-LFXmB8oQ2rzeKq&LD0RL$ zSs3#F@Rl~4Db76g%E;9i-vGIk=M59)&jaQ|y_j`EW0`xfSk^ACjc1s!b~a-Q?Jcau zcXF+jVU(;MF#@$$S23#O)NEvX?{W0q*rnMEieAAi4#I?$C4miI(BQ5rLk;a}DrU}4 z(^NarCblD|d6;Hloal?V=cQ7Zi}!jwK-jrzz3ssO!UAc!3OFFA)A@TCwqd;#cH>5am6QB7cc)f>_qUk?RFC{K;^gRlIwWv*P#{<#nM3C zNCp>$K!t6NaBv!C*bY?+2MhJ^8)+CePw>oc4jt2T^TiPGuwJ0Jz9dv0`vbRUsk!3J z`FZcxgYDR#qJd&>s=n~IW2#?^KoU1jK*3FbYc4wBaRN@q1V_|^H0Qf*&^wkJ7uF)3 zrevvo7Ab+|Fk74Ykcg)KtQ+W}*_+ZYv4v&QlEVWOd}yTyf;K|{lLfx$cEF-FM%zy` zWVGVz@U?68{$?cl8u_tagi}9b402_MCJe<2GdosN82ifFX*T++tI<=)!XS)u{}X?R zj|#XT6TP&+mOZ`Y3Y+_1mr!^W9$r5W#&FqMIB0w3elo)I)(_)b(Hqkn5jbaLD=fp^ zair^u#{}+yZH@k8=oeOLKM4P`HUsA_k?2k;rwpz;LvY?Qmonbh0iOxu_dY+Az{`c9 znMk4@t*VmI;s3dJ7lc?E211E)(J#oyR(_PmT@CIV#}SXu{f21h_wXC`E?B|OB0;F* zbC4@;=bC#sQMsU?ydDHfQQe*b<)`+~naK+|5pqJ2%m|lK7tu4bhJ@jwZ7a^@PEG|!K z*C{P+#{=3P#j7f;x>5YT={tgOqVNKwxD|wSGFp4{FO5wy#((I_PNZn!8_PpdhV`(S zx22s;=}M}xi1CZ(!)~&vfD=h*9fzQaF&~c5bZf%A_AYEg^S*$)M(k8*H!cjtHBo;j zNeE|Wy+FBgn`zQfsZD#WqI==ho$7VsmK;QdG{TPUlso3o2zPsN4&-X@z-LZ4!~Vzv z=XToY4!shTE6Rxiat-n(12n&5lHSk%Dtr~MGm)#g!_q@n{TgT$TPsvq0Bs`)e5hqf z-=Rc6P`7~1AY`5oJ3iQDdAq%LulA8fZoFZ*$2`DhrR8Kr_*YNwTFt3?Cy)faZ|vBv zCCrg-8N)GS~A2-G=)<=vpe@T6yXFUJxfyU_%2}#M{rf+4O-an@Chy{P^|pGhn1AeOUtP$ zPJ)jrS?Fg>kvfKb)^|PDHzrnEFaBnekx35z`6(cG%=iU@t6dtzHBa4^^&abC@4*xE zT!11S6^*GzhYOZtqEYM%s}~zTHYTq=<)x0LSF8Kt)md7g4twpoHSxLcPm2@H&g_0M%jv_dsZeV)N(3R>bf4%PcV^p7?|0D#XCxQi zR}Sgr>U`D8*ZT;dcuM2pO3!y5nBL0B>h2xE~3!3ZqUD_(^xBzYdcXS)6 zMGR{NXb{?HWX=V&=!*{>%gAJqM2)=5@wVpwPK$`KnOXe zTTcA!BI~fHrs+Lh(N9_WP_9@RA!|JsDF;vfuv!~#vCMo~xYVuvEAQlV$rfa66y&1r z)o>(I-{%P{V9!1YG8cA|IYUo=2S5ra;P*J>{OmY|b$Gwjg6o8HQc^$`>!|&meg;O76<`BlbBa*U3Sdb5;1NcPX18`aYCP zpw72u&}U~^jXiALV*V-;1{gIlFhaJwhPg9z=Y)y!qzFW&~A&xsKV0M9CkN*+F!y>IdY& z=3TVGs2aMTj>3{|OyH!3%fa-tynK){b4}Y*-j2&$W_?o(a#sC2n>B;4;XCkGto|)d zbVek?87u|WFU-RFuI?7iO3j_!Ujajf%mz)vpo@C0s1CorsvNs-_ZIDqxJukA?Jc{z zvG5liyiYd(ACG<*9N~Z%KhD#M$1EL)ixV$cICs|5=UHC?Ls)7X-OvGL<+#ks>xW+9 z-YGtpu%27AX0)?#?)t|V4+xp5Jq}l0PZ4UinX#RiB~i42Vicm#LqR}Qo~>el3$9_? zuxHOTjv1ZC;oQV_q?a^)ChgUpoDsmqxwLlUvqQ%`=lZ2=Sww{lXij-;TNfhHffYZS zHUJf_c4uFBDuez9H>oF=An!@|XSWMT(qNx^UU(Wtn&qDl@(W+cZFHrjMINVe zjTH@u?E-}P_cloOSwZoNKb93T#o|7N%YLjBn>paDEt6cySWvt7>6NeqET|4-?IX)7YXr zV3n9SmU(koWNUOJ5~8xMsO=Vzq^u|8rUl9FkBKgP=qnP=d1x;rDYOxU3whP)y7Zw| zPGC+qH2SpMr{vPW!cUQ>mFS~vl-=hjTEs)7$pQ&K!|_j!Dn_n{FR0qK0W;!ED9 z&wJklRZ=Cl48}<$*ZbY-$UO!fpO?PD@4T6Zf3eeLrfQ~(SIxR?vzP}*B;t40=|=o9 z^ND}->xnM3KK36Gy7-@TJ#J4safJB0{x!en)N^=mOO1Qa-Hytj({5&ZnhNDshE9lc*&!`Ij-`Zu%&2FKeyFC*!xrYT8!fqM*makM-2| zy!;Z~U4G(1pYxn!9@&Y6?GK}biIah0b$`!Bgk$vx){vvg@@Uo-o@Lo~GCNAJ90*qF zUYD^&hU#>ok-X)vjgi5xB3iLA+!F8ZT}`0k?*~J_VE&K1SM;C6=QK6iPi8nUo!o7k z64n~b3gkUY5KH#-)AaB7=`tA7;=je}m^g6i`pH>lAe+$7MUh#B_P+O*xQEX ziaT9ETm|ShM#iqzn@Wc)aTYjAt|jl5>m&g*NF=RvH8(DY(f6oo7usF ztnLhL(kYItbpclTo-?UI1q0gXP4mG36vmHtS$3z~VkQ3@o!5|&+_y3zNQ^mjeL-t6 z#KBGuO>=ypa&7SrX%qH~ucfyTXB==We8m_+I`j;fLYx=~lX}Lo))}ZeUl{87m0a0mh+m3M7LYT<_kmmt4uz5_Emi>ZCX>7m(axSf!U3=~QKUG$}mF4gG zvrY<#?O5$Dnd)?;YuBxS3sQ+PS)!jvZ-M*U!ZqRd5`>x7oEG3oZMcWB2oR2jy8kG5 zS*b4wgs`6=QmKetz}#tXYTeO4j{86)fG~v?o9q84P4M=uIxJQ~Okf6!vkb!xDI4;e zRW>m^ zUM;r$;E>JIJ#q4nQ2{LSBRb2TBh`S#98mZw4Z@pUwS?iW*m?^a-TFVm&+D(9d`qY& zdsrqdAi42>lpKF`p(ISA)o4|P{t+DWo$0f8Gg(Hr;5!;jcA> z_-K*@G8)ZnocA&YRh0n+DLT-37%a0@ZSM5!I)OUGz{9Q74mv=zAnw~A1i_sbzoJqK z!MW#pFUGX_#Fh!j&&Ba8ml@)T*jdf0^XPKYY_r4-GnsB}G^+A!t&m z6bbAPM5KEbPzQ&0>N2|%0hqMLdY6)sj~sI#DFn+m7Kc|>?yPO3x5V@_ztb8*`jrSN z=qHvzGU)n%<7lXnAM-NDm9Dr;li*Y0%hC|IQ7|?ip$mm#()QR6YP%Q~ z;@LO4RR0E2xJdUyc}36{yVav)dd?ynX}xfuIb#KUmuN_7`M!UHYD^AX8s4j_Qht># z?uQ;5GOG-O(7wwhX3F8dlyjhUVA1W21O`36i&tbe0zw9km=#`ny9ihWXBft-WqQCb zn92-W<%8%wQ9a=cH)&1*jT!NeBz;f_J3ejwfJ?t`PC4Mi*iD{$S-1N`qP|hT!=X9C z7;_BM7diKXgT>;0%-Q#0cKa|6fF3#@)f9ZRq#?0=>^F#$P7DugPE0A=I!$Q0MFJdM z-Z3f(KHQUuZ2t?JO-~o#>ipXWz4nd~E4g~Kl2sDN_C_DPou6f>pn91kp5*!vDvgN) z>aKH({PHbF;GS|W`obf=0wBS;OJriau;3qGIN@7i4faud1p(B|C&e@pE7(`FH7eiD6k0cr~!mb2htsHgfKs?!EgXsb?*Fs54v`IkhYgJaL!1x)z5Lb-++igLg|Y z0!FO8UaLj2Ap`b7kPJr(DvKS0l0NoLw`3QxiytDU+uMvSrwk7p!aXQt-=GsLm!>{y zi?(x7r2T>Y_au?^uwDRWMYBzwHpI!f`}aYUIDj@s`)p3jr}ch6 zh6s35?}@9o_4%CE-Y)S?-c!}n+ultZht>uyaiu|7aE0R6WhLEgkGFsqyEcZ=fNy>3 zx;t~uEPsx#%dFPYEzn@gqh{K#Iiq#8(am_6hmUBZIGHK^st!j-PB)< zY?z+p5pIH~wwe|0o?vEx9T`exYd7xw|w>_~9^WmdWK zhY$Gt|JC2}wtAt>E4HCNS|-TGWD5=^h0qi5~OJ50*QabDId!xz=60N!!__qY;f_}K5um;a1~GbP-6{>!ug)cQr?%KA5z z7{%q>e@gdalcv(sSKls zqel77)-Xx8i7?;@)6@k?3w`la^3ec-9X+M{i(Fh8)q!*cFkR1uqb?Z!jMJua!9;+v z5N{sD=mh>L>9Z|u!)#;;0j$htSPGWRRmSa%sLaa^cCTPegxo&35J^E*DNVdN*knt{ zZ?Byy@i-pkw{#!XL4ec`fS8a83rUaUU=OHpnuCOe?fO}3lm^A1;A}M>3cNYc^~tMKa1u6#Bd{^RJ9+63Wk2rpmtv`FU?pY(Nhy}>Y1%nYF)d) z+?BNyk;7z0AWE`!F_Beq-&W=7Ga&M92IDpvVmPUSJ4U<`{!}Wmj}Xs?_J4x!CaW@@ z7L}^`@%9Sk`Rj%5uo>~**z98?u~B0bHEgi!wUI&$pXQC;BQ_w`Au-(hm!eeixba4I zNy+2)`#`yayk+bPKl#d7Hd)V4&!dwP6F(COwz(g8v7U*R*~)KPye|)^T24MlUa=LT zq}Ok@C+!MCOlmwynD%PmUDvO7+&AcCfq*aN4foxz@A(}rpwjg(>nzEk({q;ST-K+1 zqe45R^;0?9*3e(9D&b`~`7e{8eE`kHSCR1bFg`qYg8{jx;Rg&HAg70E=KJcTzO#5d zSDmOuC2FwjVwD01dC!g9PRvS$KUlgD%rGoJz)}_t9OY7livARM z!?jOIRExp$TIm}v{p)_fObIM zS=eL}esw-Ow(vM+w67{JYy7H-!f;Cp#f)R}>Z{+&k2@Ex`97P5Uw*X)A=4;&Sq-sH z8*TcyDZ-gfq8pLfIHp7q=?Yk291C7q3|BslN7E(INE--WZVG5d5Y9M8U}Tgv{YKk% zEO>-1ce>!8fObRaT<3D8>CzndyZMkPVY3ZHx1?FB*+Dv~g3hJu?x64Jr_p(ITRMpj zjvfdK%`R-}ly7sk*QMR}R?Hb%s8`Ni#us=JgW+uXML0>NFu@a3H0yymW%qzeZVfcJ zNiQlqSyyKRgOT+5`hEM5wi;cwSEv_TS0JI<8@kv?Y+MZOB~$@tN69{evV{1}?#mgq zWUk+Pgwi}eaxG)Id$yndOB#4{JV%n#F(i2}=~yetk$|5aVI+m#Rg%IV-xd*39)Q<- zPV}5?&2-ssEr&I+N%g!89(H{faEIR5i@zD-iZ>r5^3IPBJu|1nxYq0}c6BY@Ib?K5 zs5~BJp50(7q~=k_j|)lAb9XyJj(Y}o=R^5FFz(6ZT^#>Dpd&wjSQOFkolD|pwV;!_ zlhEfAYHHhj(cE^~U=AipGq)^_1W6mne4;Y$ps(~!xWy%h!sx?e5vu>)#bT1j@67%= zIn{FBKQaCkAsMXJevTtqej2EMLXvw@KmVC-oH&{Y4}~Q5;%6Z|9(qh+is9>99r+Bf z`D@qevyc7c0J*w4KtCO`)lW(4s=>i-ZaBE63tr+y4?VOKdpH!zX8iv<*ASpo`)|$P zIw_5EJYM`+*HKiYs|zT|UAv-kbI))99OdyMCX<-)8Ty>j*a)Ipp&xdcmiApQ{d1OG z|6K%}?VavHBu-0XmCnax`;9z%f@M%y*eB0M{F-9sOIf%f1kQ_|PF~9oYq~c1w7*o? zTU)1ZX;)X<8=mDPMB(1>UZHZNuti5UNU!RoCLlvvfVGDwB6q%BSjbKO*QB$rJz?@W zn_KuGwox}2j*1JS?dI51YWd4cKdWWSxPC8dmb9mCF+Q$;BaF1v3R0m$qnA*sz}YfE z2yE2%?PK@#u}4O*7Ay3c?m67dZb(x|a5CUG^AMbPfOQ}d9y)Lk94c>kY&e5+*DRw` zvmGeJ113DzoNnOS$;o-UjapGY&IlJEyh7#x8Xwhcgq1K*sGm23yg3U5KtMlz8shWx zgWW^igWcTeZe)5aJ;)`{v~byvT%Jm;(I)ANQ`0iSW9`M`=k}l4wR49tp0dw^Ieq4f zu+8sxpi85udQ~`Sq!eLEbi!~@t-fRRmH0pN zyFrvZ>#kTRzRPNP-X^JN{vk%1`(z~0;m|w;Ob)N)&v*I@g2^l=pjdxr zPLl)u&Kf9J+M{Dx%!Bz8*`v;-&sV>HG|Ce4<29wS@J+TPt~;X7J9aoj%HjTM_Q^Us z=`1^WHp}OFNpwOp!Fk)hZ7H))JXAfN%%;qVoe9ke(IvS3#9diTm2H*Bo}bIh%-Xf{ z(5PUvxdz4usf^SqjXsUA*4U&n2YizRY6EwqqS5(4yMn#<&pk^u2h7Y5E>)6U?-JsV zOZioJmr(N!M;<@5H9FaZ7@0ITb&@*E>rIT}r;h>|l3}-o)ik|vgX7yEJ=u6Qy||fs zB;UdE^{tHG=>n0zXWW{9?9SWB`An=vcMOJ)^`a??lang{_B|JagL0&$ZU6~@^6C!i zwDY^?=feT$$U%X#Fb`mnNqP3<#mIi02e)qfQR#Hqq*jWpkI-MlU$3%EUs{i~FEqLA zS#7E&%K%#=6UnLSnF8C?d@m zmYLsQ19T+*?p=I@sm;kFT&)fVA7V;2b47obf#8K~IvdZWi_5TbK0QK~k!RH6Cl1u0 zN5FmcXPwz!-BKI_@A7W_I;9^SD+UI;p&!aG_V;c8~grDZ2=ucdQvR`MSDJpE7#cHDXeOZdpJ*pdZz z#BHPZ01X`^auwkUBApng#32Osy`BlSQMlWtR&!B@O^u~RC-a0wrUTvcGyR;&@&Iew z=`H5T1nxWO|76qHHsdTKp5SELaLZoS{JMGV@AOEX%34s4wjW+Q;DCEV6Pj$<;g)Y{ zS!U|Bgi5qqob)+hv>$BceXuZZifM>DM*m1tBn5{lAtkm4Von8C{l#JBom@(U+DvJ& z-%4PEim2Q>%EMn&V-*~+hvmNLDVhDagv1wrj3J1akBf1#Q07VV( zR#9Z1cbio0`mEAxsMPGOT&CVxX^kr)dZ)|~pWC?8qhc&NRS3J53TVTh>U7)nc$=BgncN|m+OfzTv?=Zbnh=Fg3SA2WsrpAgfG2X>6vYb zye$-I`p}=8Uv|W}kPKG_;#qzK#=h2bag>{K6?KSoHz!0kMS8|>w?CW_C?+YHvEymw zHjuk)>3}iGVE)II4o)f`XCq~xj2A06a?bYqRUB7*ionK_fN+#ibp;K=rsqY*uu>?h z?Du}-L$8lY#=55!!=TU)F}iYkl?kIblssIwZ1A;e(K%RuyZnKbBdX{;f?)4+3;eh| z9!_DVRnwKjF5Ndeu4iC4LqCq9do6Ydjjd?_=dsd)0k^P-%*f`*TM=r$)ydq)y>TLv zlFZ#%U)mNcBne^6;_GGtH(y_z0THAywym^dXSRf-L~*^3bGPgqIxv8&iJ%dLuynvk zhlM~8I${m72RSyAMlm26L9sDC2Se$Z$3VW@!O~;?wBf=)iXqTcV`bi!WfK7L)lp=x z#T#vgC5qJ!_muw8Zqa|p7QT|*G*Ha$2~%M!V{ z9TSPKczvMa%|!MIM)ABM4ZY#Et3;R0CNV=tj_8UAy3cVQO)XLGq_moXykX5Nd;Q2i z^Xmh#^naK3--GzhGbDbarssWl+xr>mA?b3BywqNel`2t(YYbnfI`gj@AXhTyQgnx3 zFI5sv^q$vrA^FZ6)`Ol8Rb0t`(EP^dFWOYnkAnA7yVWRfdfu(|D~>qMh|6Jz7Lg)r z&uWqM7v;zGR6nbXqUM496j4I=;4B2B%2@rZuRl$m5ldtDYu;#}yv>NOXx+u^ihm04 z99CS&p+pEVC=?D7h>*^?pg4S|@Sh5{*j;-?^q9!Lo=M}Bos}|)9QYpk(Vf*09 zt<9aaRxk#oVg%HKh&W&t)4&9*1m~5pH7eh(7_U^-zD6EOlo|s+&C+OnE2H@!AE7Oq z5O{-G1~XJluKwW&m(2U2Hc0IKbDyYmOEq4LqN|KH_BP@ZKkK;+6>OWc6UN4pxEN}$ zKZ)8$yGEO$8>8J~*E6=waS;);)L8%Lj3E|nxwFPOHZdyht%_VO3g;+NbmCMD@!r)x z%&~3vX904d130=SiH)M{Stn2pdaE=#l4-%IvLE__B@`tIuKRJuW|rC?a&YDCRl!o4 zmfLz+DhKYn7Mz0()gPu77RF-28B4x^vDe)xzFaO3qcP)>A7^g1jik`eA{ZFTi1-Xe zHd^Ee6J}xDNC~d8D;jN3YV^`*+oJ2izI7q08JIyKC|kcDK{xB| zQABRp4dHv?h97KL{^n*uYOGXPvE(p3eJRWKMBEe&3EyON@2{CFZC`ZXv5v27Q5*c97MF@hV?-N?$8=9b%d#=4377>?L;}7 z+cayxUCL$ZuG;k;ZCXEn$$TS8%8kaH&3}8`@Zpk8iKt}5{gC}IHsgJ+;uo93S^3G-RuZpTW0M0)V^Rua+iSu0tO`acLpp}*`wH;O*d~8W)EFU!)HB=b39jAG# zu%r*%uB0-}us)|Byzn{uvvC$EW?nJl@fgd(Vs9(<1JhBs(eaocEe0K&=h`K?+y9>0 zSl%^e3idiZtClmFY#!gk2ki_UQ#SOZ@!8x?nk;2o?YRLX9#1ezeL8 z$C%8J>f27k0!)t1dQBx*V5mjHZ-%od+@UjG;tSJI8m^gh&S8otrQgFP|JK||#lMOT zx!fe!S3=x>y${}DaDFm!Bl3X3qi&Ts%C_I9JCMj`cJWl1a--o(4RukbNUnI zW+-B^=7IJYM*_j$Sd|>9SJT$bHnMk! zV;9)>z{W8IZm?ELOGi?(h@Uc=MX@P|bGe!rs+oJM1W+VKULW} zp~pZF(%t4`#DD-6u45H+^bJE2>36a?VsC`s$)mB0d)uQN4EX{WVlWK-B8x{B*UZpp zN^x6WMAj`MS~2h4db@cMyiJh6PiOcQ=t#09ZUFk!>c9}G*4vN{GnhE!Pj2xqiPc3FWt|^%1l_^$C zCYu4UY^v5N6%ZYOtHW&AfSAE%GObc7p=17BrIE3*l@a?RAlx{VhZOqUn>!ox65QM@ zG&Ko4Q&iJ5u4kh2!u?WXHb~*HJ;IhBf8q!Nj!%v+5A$GiC?MOo^!|m;iJmx9O_YHV zCOccWxh3Rn9QGv00tved?z3_7l9?jGOs`Y7!VG7`5x`5ec3y@npV5V16&Zf`x_2T=fR z$~!YPDVd$3vzm5MNUdvI;@eMs8|suBG0%Dka}a(&dHRxzGC3svy~t0<*lZ1^mX|5= zRN6l6aIT_kImI{aI?rFoKex*~fva7|@rC%f>u+vi6Hl&-Wm2rZ3ueli=co6Qtfm*y ztDU=#PSN&fw!{TEKZCfq!Sy=62*2)Xz`4*f=YY5^XABZIm~Y;7j=zw9ewT?avo3d7 zr^*YNkS+vAO0cZGB8#3H?H0n!5JH@Bbg*eB?D0vJ0muD>AGH`-mSDNMEp1;*K@)sY z7=kBp>hHPahP}+vWZCk!51RSOnq+jkF&wd7q*?S*y4{J%uTd-zFtq49Mh=Rr#pAfS zrp)|0d~MUS8=$6LQ}ljq$lixJUBt)5%12tI*mTh?t{>d8YKmvty`4{4y zCUYV|)A3R}fd%M{-2&I}$=-wL)TAJ{S9>FHil$4;>)CDQag-kqD_*cr*Qa~sM9cDS zRHBTmQj_VGpy?>oia6nD%ig|WgbbbpH@ zvIvJPW+*ns7|s#C!SJ6&P5}ZJ$-nQ`rsDim{u}{6gPYH1YSH_DK!kDr9K-PML;+4S z?Dl%`Zc7>_D0Hkjc#maw7~ecF!tct`WTorUn>Ec{sCUCOI?EaJE3(`pqSkekAXhKS znE1;25}LU8DVoimn00V?6L6q>jb=^5 zf#+v`y%OJT{Wf58`4Y{NF})vD*iUb#hiU4M@3^$v8n$We!(d;-K6(w>x}OB3$C=NP?0P#SzgoTYt_|V)nv|IN5=rOmK*KqZ+)OAd}0WHcN|s z4KeAdqeIS}?7Qqv=b`^i@x}oNkalyz)g#{*zVAij3s^S07ltnSQ-CY@*pFV_S;oe= z3!@4{25%%p;h_y};%kqmc$~y5v3D-$f3BnLF?FmqR*l)yZY$MPLa*sEnR6?SB;#)8 zlIALpCV!RavdJWdv@GJV$6|sk(oK-`Kd9Y%RyRjIUrmcb+>eVz$J|3iknWW1u}%Mt zLAvdFl3Ves&Cin0S)RyjzAVMT1MN!_L1J z8ii|iC3BM9rLE!N!0iX{I4?;9mMW3m!L5O|LMNe`z~R71R69Fh8nAVFbVtpZ1Tsp$ zA~#Em#*=I+eQJo_&alDnC!2cmRSZb?1stXUz26Q2JjRRr;xUsm6nEyu6HM(1cO2R_ zPQtjK@Mnyv1%->$?Lul@Z>L`${V>!y*SCK8cHGbTC)`U-ww5YL;ulxH9$E1Rsr3!Y zT$Of6JCdjPuWu!pbL>37T5$eY&IA#unk1_6v#Lk}U#FbKtBJ_~OF*>0bhxcT9EsyTeF0oQnkBG&@BUK8)P5(7uW88B6K!66Tl_jX=ubNM-Z&2io zXos|_TxG-h30%no2`7>){xLdJm?6w#i>@iCU!P9iO@%pmBmLcu-TyEKVif`II!M~!tf*+7X;&`Ow0DgtO z$o(x;JysY>)?^<~3h4YfNfWbpP6j-lP;wW*0rejrfGDx7v{5$S$;%q zt4N0j!0@R-#ZezV<*HYy^sat?(05tMQ^Ahp4W}FA4ci-pBmNfC06EJ~6|4i&7(Cl* z%+i4FZyW*&=Dex7QzQ?M{x0&n@FfND-PYQte$@;d+ow59hbWe@>RCmr**Dp%MP4{U zIU|E^5I2b%L6K}eKD-E-Xwbm|Sl2Lt)(epq&+N*p zOT#&&BxvOic_d-_r8nA{Wc5kEx6JKB(0vJPlt0lD)gGC__VbaEXX(nP9Yz^NiUTta z+i&-bk8Fxea5qOfpjT74D9+V?jloCCJ&}9{=@PT!mz-4~^ZcX>6Rm?asU~8-Xbnlj zaT3m?DxTK$Ll^shFLNIdvr=Lr=V8-9=#?r4iUCOoMoi(ZoT~fVSAcApKFx11&f{_Y z3cBB8$dS$p5y$$V{5GsVw@CGRaG5S#PH}obTiRLMPv|CbcBc_L%U%>+TMX}oE{nPl z77^JTnQ2?L5^4|Ji`NxgN|L>^qaV2r%FyA&;W5Ie*6*Ba?LdXkQFH_X9|`Y4|1rnW zk74LoGEi=R_Ew5vo^0`sqG&TtG^9M~LPKGhR*J&Qn4#<#sy{92tx(lZ;f%l2b9#P< z!TW``Spv3_uOLm|>&&CtFniqqeWxYrU2N~~A`X<#@{ae8N1f~C{oy1 zOW+o`MA+#WJ1+%3>y8Ju9$E1E_d84R`|AZqS_5%+3f8N5hi_aR-~w(O=Bf1XL2Yw< zs_K3CauVEHRT0D&oFsp3%@F?>S6Nk6#CDUj?ug$C3$3k8>X+YRTvhE7+fjwpP5i-% z8@aarsb7C-m#?jm7A4^NYwt$#N@|liMbI|-mRiFaS8pFE;T@~M4HLboSMNkh_t@&xy986(ivL@C=FeJPb##2vCz7b_RI435Fs zXq_r8;ttuVi&c%%LPzw88w?DlPkFa0YMRYwxLK-BTvsgMCh7lE|Ga1mAL~qLpZU zt>aH4z+%GIYU?`#d>%F$%SemFN<0##%mK_A)lBPY>bBk%;N}+~vY#>U&3ARD=s5_E zn>o9EC*e#YlRit@n(m$YgzauRQSan7yn)NvOX>b-l9SlE-5RP}67)N}A99_A6O-WP z+mpr(LZCG|vJE|^9NCg>o_NObI=qv0V(bP=4>JuYNpW(IiJvtk;TQRJ_Z}}HOCF{V3-R>V#v*9I3~t7ajIs=QhAV?1NI`~FsA~h_%rKvd#)GApW>Q78YlM$k#AjSJ3EZ#WxxB{wVMQpQ48Ms;~+Cq#$|(-tnwFxZ$hW_fywvZ|}a#g}+_v_iGH9q+2p2BN`yvGMTS zq$!7&y(0wn-QwrzmoASxIL-;|?Dh}lgo_6;84n(e*$1Xe;8=bawr~!4Y*!AqT5-hj zWoj-@a=NUxKPOzg{~z(-Ui*l`9$31U2f>3&#>U2x_`-d7X1*+C?w78V=3dAJDUJ`G zi9{X03qkHz9h(E}cSP8~cT^_srBAE|n=TC!j3Maehg)y(CJ>PM-hPb_<|yt2mAfLo zOoZp}C_V>p-`@28oa49`iNzd%6J!5A0(kq12UvQ{JUd8;aQML^^^#s-yXw8Yp^A{xrVBM`USU1;3?I|y`?Mk6ntLh4R)IW-X@ zBlZIJdIj{~B1FVaI4N1ADY1Vhrc^zymU^OxUrYSNQmh^+r7{!2Ly zF8@;W=M9;1&S_k~8dsxnshx(#l*&d8$04MX?m}1&S~+WHzumh$yW|0d<}*U$BDac=zs&E^Nqy!%QmBuNe!^XTB~4XX&pv zVr2$^B@-M>rYm_K=GB?FeZp28`?zpF4&F^#EG*pzz|oL8c1s%A59ZPhV$cat>Y2sR zg3a9B&4Ot$W@dzgy)ig$ju}qipi zCpUUo-2B9|ul+i=TFQLfvS{we&|fz8HF3}Dc6F7!Bn;){ySa%Dm5?Va)i7W|p_QoGlbGSf((XFm)g5=oO_rdAM%G&AH6ok>I@2wk>*Cf%IXnbZlU_XYq7!w(o> zCKLCMP6hic!y;p|*vH3YaSU-xT)XGdKg_x`EW;>+WN2jV5r^qAqs8Phi>Lmc|0_;E zwL}|}ogL+C6VHyu@$v~NuxIR=bDG|gQLI57flz0#YP8JHs@!+fhd}TdwZ)K++@k0n z$a`Cha=Wt}g)e<1MkSv2FqePGGe2kas{d(uxy&)@Wuei%jFqm>bzQ*G9UC_pQa`lW zs)zLqh%FMu+8z=_nY~|7Ak5lvn1VBjBHai{j%bUCY~0ULQgVyq%R(Qbk0>$AmvgH` z;^>FF71yxxAw7)WJrJt`ee!uF$|}&qEIoD=W6)^Vh3d+FrjWUbrH4~ktdwNv{Kiee zo#I?t8N-BFP;$j;EDx$*FJmy74D11>XTkac76*QBP!>+muMEm(A-^&`bsj}3$RQj$ z3%Km9!@fe9Ak)sY`&hXx{fM3LVhfuAPo=u7TL#o7__D;|B9GGXfQ4i*ejU-U9jknGVG6McIjYWmhNypByw zA@k+@M@QBmGy}V8ztf?WpFcq>ykkWS2X_X`gJ{Nuy_y+Q6IxDZ*k8f}Yy?Qz`h?tl zH7~0I8FhXN{mQb3OMu~SL)dqhZwtsk!Eg7wrk;fv*zenKV(LoRTV5ov9}RC9Y#*8a z-w$(sck#C39W?IDy9K+7fnOdcc^2ay4d?H1)sAYMHc`W|p>cLZ_rtgcTn73O{18SNt0CRUO5nF#FSPLVQo zj6S3vU~Xa_YxrPf%FL_T#xOWHgBgtAo9vZj-;_CJH#xN-ozTEERB?73C|>pCfcQ(( zs^WLKY<8|e4ACJ?Ch7*0arn!mU*d5!CbR$qrqK{M zkVdVK_Vrz1W0MIb(e-r*k(seVN~HzD2#v;;fVW^^t{T})e|7eWD=_2CD|+Hl_YHjh zrT=**k^I~||D}0{zWlx&aC8WozP+?;6`h=x!^L%v^$WGiP0Jnl?7uW|?9aKSz)G*% z5AKPLxLRvsb$Uw6oI4SRh+PH?t;}gq(>(!|eQ7v9H*Z)IuTbyp3g+5w1OJrKWgZpC zRi;NlwA-QBgGij#+CTWPm=NK5`LVdasXzDeWs*4oITY-V>urPJCv-(1xXu14lvKe? z0K0`>Ol8J`9RMGX5MMHNE%VD^jeZPN*yi+$sVj*wpt{~(pN=Omw?dd}3=Bc-=q7X_I8M#vT24Rs_I$ytV zzdvG^al|=57-76CqW}JdkUs}p3Se~DED~pQKXehO4 zJ|kmZ^UPFKEaa}2X})QKS!Zh*+S(scr8T%Nj2L7XM+o&O@J-X*%fT&U32?pb&!pY+DZshXv8 zIP}>DPO>`@`dS8!tAzIr zzl?>cA$mOsB?qKI(g7i_1V8h|DV7Lx1h2RzVHutsL@D(Oj z7#1R&f5PvsWT{?T$yIWz*D6*;hz={8L~<+}K63jq%ZiJga*iLT|0O;CrKqU*OHKlW zk|hMvt!JcJ)!O+rYu7$4&4j3e2sAEiP$k1bw&Su6=#ta65`)+-`=Iu ziK{BXl0$T*KxMRa7Qn|)p9ZglJ_MYRD>0jIH9wdt>I!*XE(bzVrcvK#_%rkSdwRe!UnJl3abqj3V z>g%a+Q~GS~l7+YiuIrTh`AFTo%9@@0q=73B5S}_Fe|7(LG6-CN%YSB0lr%0#<1@$! ztoo?Qs0p1(n>EjhqF}fWTQXxbbKiBZ&RSeHkHIdrIZuw{NDMhevPqkI4nvqNWN_+j zCS^q&LkTC6eBP#%&EQeV2o$sByT?=Z7(6byiK?gX)2ENaeslD^WTd$invWDv#x4{g~%@777arbGWUsGj-PVcyXNk9xI<4@%Ju zNT6u3zruSlHbvmz&=SPXIkDdGzXEMgi&j8E5Nva|1d5jSa=$B$W@<~_jfC!U=p~Jm zq!k@aq>^X>hkmEi=K2C?RK;c53s}j3&bi{tFcqMZ{Cy-qOC@TxlE{}ME~M+hms(p> z1nDYvF--ym{$UsH=^1AC{yii3z8~nCjiYGt>N562`2&WqvCo<9K>HvT8>9aU&yuKK^WpvAfh%un8C~`P%v>_tuTq$>s~2xSzNT z(a#M)2^Bs(TvvDaA&IcT#cUa^6Oh>Ez<^wK*Rj_xjpe}_V=y-})fyRdw zYHKSsJH=pe$5X@#)JLF*wQCbo^w+P~Pf4uRHdq{rAYR*XQwcaNvDLPI$hk3nC6u4F z$%WhI&_k3gY{ETp5hzAnhHfbsO%vwlE$)b4F($*dZ~gzyil8INpr0#Xz~tE4b#;43 z>7#q=*44(6VMf6@Isee>M74d)Rcb?lDYkbuNg(3d47=OCdgv30ndfy zAj2v-KVKU#)a#qL6}@s#HUvuzEcbP$rE?u|AK;~|1_??J@>u*UwC`R+{ z72&PKX3-GPes~Z{wqk(G7d!!8=*D>=&i6RlxcCr5XTL#STND4 zuv;jyBY<6&+k~OLsShy9IBJskvok#ykP81}j>*HR0M;{eHlCD3CMVTh0+n}bAk=X1 z%H26OKF*``<=h)gHV@9m-(|-=;&`dIm#23OQK;swlJMd9mOCu`Xq^DZ1$9Sp)}1YH z02~J<+CjxGo&{Z)AJ~A$*TGCwbsWbRYW|gD|0e&8&E6KWa6Y7&{mSz5B2 z7a9Oa`O8uS+Gk$03@S3;2O*^|%MrjpI3M}j5<|iykk!icKS(zkE>h%9M&8JwipBDZ z=UcYXTb@_Q7grn_$z$v!sf&h203qp7|3R9`Vr}}GLvQlGOmjY5W%)Ac-TnFB#TP~7o?!^6Dp?3Y3rkcW66PsKP~R3m zCL?K#gXiBDV3^>3KF%3SVpxNAG$w!)zV;!8Q~KLSbN!0d(W@Hr8h0V!iVP!&bRIoC z+8^y0ThMs#H>p!>96n{hFvBSr=e+vEBJxodkvFD(C#@x7Qe0vsZ%y5S*gF@W$@$}T zDt_ztuNOKnXsjHOAHxSMC0{;l#wjqNaR)!vF}i>B@X<~LG-j*-kzI{>4XdKn#eTU* zZ|k4yZsm8eaJf&%7o5qk)K$$D@M9gL22^6kJa_Jn+YuCw>8A?(S8_*l8qWS3HR&>a zN&X#d;OrQaY_T0>L|gOsV6T8NYP;pH&i6RjB$C<}hUb%F$uGRb+Ji-0>}PTW7FUGi z3TGt!ympk^g0RFkcw2iYj2Xmi!Ik+sO4~xY{tY?+KN-I_zl&Tb*EOO*&Yq#kVeJip zYHGizsa5#u8B!pZw2oYqXi7kHm9If;-zTSZl)R*nt9r zDycqCDwa0Q^D)IMi^XE`bBc*0y(36AI!gN@1Z$liT{g5c(=vN_`N`trD%v?+eq>~@ zmFe?By^TV1j6RfeM0a~jhnG<+8NHThw7X_?2>g9qC}V2|#0YuJVK6w4Ll}7(*PBbo zNg+s+Hj%J2E*((%&s6G4QVc*v(M45ub8cMB&_DMv;2G!iyOJi1T0vtAw+YXq&qv7# zF;{+p2>gAdX(S^BY7lZ#adXxt;_cb>>64(4%wTb8G$ueYCjrd8cP@(oE?Wo#fUt#S zElF6AK&sn{CnXX_S(`*?J)R`7iMc7>?`|YY2r?&9h|o!mXb4n3-@5X{>P}=((_+x8 zr%@SDwE8dzZGEl;(V=k?ssn72;F|g(jUR@0OKMLuT`0aeo?C8 z1=D^M+HHy|%1`|sS#^^>)&I_(+N)mOymSlEmz>#Mv@;rh&Dj4>JPaByw1V(7qpT>d zp-4N^*sOx9*^3(Dipt!k$<_tq?D7BXFa5P4!%I}sHsmsb(8L!e%hKgfupVy}K&j4L z<$w9|dmG0y-}g_TYb6U3LW0(L!I?1ZSV&#=aPNq`KGV-heV3g&-#if#@FvZqRI1c$ zk|%%?&H3tfyVRZhGV7-|t}i;*oYpxd1*?7Dd2h<*Yab#HW#*`z$%LwK9&G+Mk2fZD z;E|n)P`hau1Qlr(Ls0tVk8K-T54Tr|bx8orKM2TK>>@uc(RRUhUs{5lGqT@$1A>(4 zo`&IHoQEMbCnC?!?-B5{fxm{WMxV5F4U0E0G+TR3NSxZw^*5E?Wi^15sCT>!1}!=in1ZU3lgyI1-rORz~3 zd=-OCBZ;E*CU7Y_=F&Mw6r@T~K-ZO*RKcruKdRwM#eke zwGuASI|IXdlnoLy!<$gEXIqPT%eKM6WomUxR7-V&$vcx=`&^TL4h5}t%@=dJ`P1;@ z&+|vx5&71GL!_9>0(v@yH?c9>#S}*6h~Ibxyr7AM1H%>Leux}}OpSTzvCv2<{QP6P&`2oGGJO4&q_G6n z&|;d1Yr5fU|MEm&p)^ESm&68)*@0WOumg<&Hc3}Eq+o$C6owA*&#v{?P{-`mSI%ZU z71;x{E7GF9TOoB*JzG<;*wjYXR19z3TNHAI3fhaFX3VOuw8zvn{MVl4524r)e{ik8 zIgBk6ubho~588vEJ@{TZD_*$_gU$Wd4)TZoV+ zF1VuVn)F~TXL5dn_V%y>6ow^BLw zhHL>6CXR#^$n(_>(&-1)hK3jfe7O8*Z@J!mmk#vzAGp-#?G=*46zD4}JeZhP___b$ zr}gy21A;&}Wk;b=V?FeS+yMsjB{Hxx>c5OcjtmTna`KRty?If+D(3gW#gEeIJWzW7YkNrG&e5RKrMeW#>BQDRSD*$t<#Y~ zd9G>1ZgAG}s&GJ`>fRXzI|?B)X=CAnSJofqOwDXvcaaWNKIFVF2(Z zmu~i@I}EjcysmvrbL~%R24P66#-z{<+k+6}khV2-LmiLUJGj0!o+Hfsh|QPkpx)8l z#O%8kLV~t$2%S_#weE8FYtJuL+>w|SD^@U^s;%Kc_00TyIO5Pv=n_~=fa=$F#R`R4 zaz|0h*MAJUc_;#Y<&mSh0t%`_&;E>P<80{6{E4bd#0lqkJ)@zD%dMJ$LIDw^(oR-Y z+Bs-BJ00i-OsVuUY`FFSc-Twis(^rpl{QfG(>mxtIRW}6WW>-;vk_q@%JMu)s;T*Y zW()!n;VCW+zmNheSA&sbzAXD^CT0VVt}iUzE|_K*$VnHUgB z&RmA@Jv#(+4mN$67hCAvfWF9@LgzVu@h%546L0m(O%cFM!`qa|dPC>DbuQ6szqY+Tukxijph0Bnu7dAFJc*;?!T;`xraM!qMq&+k> zpDZSdX9#UKO>n(%;R0Cv|k!UqyUs{~CcQ zfIi)@Fe(lo6u$F9PvD(njyr7^j&X*xc|UO2sbXx+)h%@R2EBof-`XO2*<)>vqO7-Z zhYO={Bd-D(nF(hnxwh7JC$z{bd<^lqCsgS)JE=f{x`*hQUsQ8xsg`rRO7b17C-61h z02}hAns_*Jb|P8vsW|ycaZ;LC#DWxP-Uz zuA>;LTvcGsoyG7w)$A5}MW#D`=q|!VK7`pbOklk;tnmY`c`(FYrQkufCZdy-XqD=F zafJ-qS4eRbW~3Yy{S5^q{g=?}6R0qIGi$fHemw}@1sO|Cg#P<=o77zrY0M;k?%`o?dg zL`9?C8tXGf0Y7E;CK9ZwI7+6(acs9Dcp(UTM;k?VoUdnCii%ohO#AGJq6DNuDV1>o z?8*f5D5hm5BIzo_$*MEM!R(QBssX&L$p8zic!|d-0hTce)H$V*%u#z)KaCo0a zNwVh^&0>SE2nwW!f`f7NU<(FPwFrjESyH%{Sqv%6;1~hlo+l$NPtVR4V`L*@W+X$h zA<0|bhuTIp?|9ruGrEZDhUqhx5LHcnpdSG`_$Z)wK>aD4mE*(+fd$ z>`^oDMT&3_)k0aEoDEyWZYzA$eR;!JUPQcAcff5J$cxQPCQB*V>gj_CwFn(69qs#8 z6;|-7$bI6$Q>$d9EM;r9$z_%c2kTq7a>MN7R@!FwhJ9SU`~Fsv5r!wg1w^s@S%WNW zs62n1XQ)S&t*up2Q60cyE04<0XOvIj4nhZbl_M`lsSJ{%M^~78$T{-`0oD1)mosZA zZ*;kZQG-M&w8rLQ-$I&#Ak89hsc}|_eDI%F&t$^=wWqf~1UhZI zLudMraO~J^2(5R%xlY95zpdigFuY8cxs-0irPMT;D;uf#Sedl-qB++sn&mo;lu!c+ ziEV7w%XYd(aLmsg8bxu$ZdrFv$-8Ph!@R$$N);w;F^Pv zAsKz;2M7(B69u|1dOHj{J3RDx0oK(4tQ1Kph?J?5q!z_5k7P!$D5oTNb;& z&U<#&yRM%tgG^E)e8WPNOxDh6V^Iqa5Y9MU2X5yCg#=Xv_ZH6AUfIjKmDhCXy4Nao ztz|V(bav7n6H2c)yWDd>oAfSR4e=;YvqH*#av-+xSOwHiXc{^;)>NF=wBgKambHxI zI>UmPSXxlXqVif7EUpfX>BUt=!kmEBo(Dxo)O0vVjv+r-Ubs z%<>Gha|!fUU$Tt|rz-RjT?+1|s0sU&xrR~Tt_ODPH3#ql+31kn?BL|%DPauSwvGH4 zJsf)UIg|YQvZ}cb z5Y(vbgC2$gbhhoT8|zeXrx3=O>RI=mMkm;f z3+N8XR&KACWfjQ$Pv4KZ9u( z+baSVo%=PQV*hQqGRUQH|F`Wf2`=Xe_WOE&p-a$8OF#CmB1OT(?qW>XF@`RfS&aP7JeWvr(L-hz!cA4S)%rvMGr>dCO$b zW90yLH#p}LcolLNSp_5KlB%5q7~^^p5fDUo*d+!e4m;P`4i5Cg{-7j~MlFRPl&%pW z1`Aw*R(kCJZokLMAQump1Q&P4ej08K?uIIr$(xS|BvkktvG~i-5YfM8O%x05oF^~G z;38@$y9}Z&JtG|;kUKQNI|Wt28fOx$OR5Ar;ThIo;B0(kP4jvHVkQ@I96YumTw&wY zqe9`)tBpb~vdzPRvrx0pd;a{~0)umL72XR+=V1JM`52aekB@D-00y3?XqHA$4PJX?mG@gVAfMrnE4{Uno5idVS` zTpXrtveXZkFMm~P6Uoou9{&oMajF0A*~h5eTs$aRnQ39IIWOQ(bn(n-e6~-Ly_x?@ zZKWsZt(3?A`=`aW{}>@DZSqKdnwi%%!Iz(BcTF*(gXiL!3C&zQIGW*?sRNe@vG}R# z3eK-#Su&N;LGq21{Pz62dY|9G_sxts{79S9SId__RA<@H!;>EWh3yeP2w-@B34X9K zNE{UzC5cDcVaZ!6ZiirC&88IelgzIG>_|M|_-3Rjrb*gmo60g&0hMv_3*(JPo0AY& z*}C{Lg@G z{?Cy&erx;fhV8G+MP{27O;_?;?|)bxZf_qx^x=MM{?|Wgz3h*%ETi8NmpwQM5JNrfFZLKVP0K3m?JH!{n+!b{ z?H@%xc6dHzvAZIUf*aQonFQ=hL^lpsQnRiL;64fx>4^gM#0`-f5>>5tpVI#( zwnnHqS-;}5i4z-8L>#CrDwY!VWX-A%Dzubl_QS6jC+D;BtyUZ(28$TGpgR`g^iJT5 z7hA9fcLF6*30uSi0uhO~fI)Z@ZgYav;rSf#{`b@Y6k$RmwT-pS#{J%MKn!u=#|4ld zaZ|1?W{<%a9WL=Mz&%Rclz)ya*D4f1?SUy$KSe&y$En8ucW)6}mlg7l`L7zMC20jr zRsJQ_P3}ElUNA%|)9^E6iYOHhk#O{KCmk)5qmqg>Kw%ar)~KYJ935@BQ#2e|;ZQ`$ zjM4C=vLsN5C**VQscz<9VyX%xX^qqQujC(Hq5+}8CekA;D#W`-;N24$;t^&OxeW-E z^sBk~qC7IsAqSuBn(3WRONvzR;u9E|?jbN$LX4$FK!F?|ge)RR9Hn+L%=B7Xim4O2 zq6~c(f@@y9%g_~dLNjHly8K=b-f@%?BxI2f63B^wVrdd06%NUCPhjxkBNenH?{wEp ze6~XlCeI>|n~&uI1s*YI8JVKq0z2@j+g7(~E5%mGY|$p19Uye2E@Fv8-~`@gDPqS% zKoMx&g23keR0%&GrGk-K0EE3*3f#XwvUYivY5OIKz`C?X*SCX;e0@)DSPy%GvYMR&+Cjtccq4Diib=~{AYpFw3 z$J|3Zsmfn#mAJg2vcu-`*r90BZW$Mq_wNrLp0PH^)zyoLvUcc$3Yd6Elph;*DNJ`{ z&r*vw0_yQ2=y~UhpoNWN&j`8Ft43GF|eT&(h5^OghB=) zEOhoq#4WCgT1f39o?EN1f7EH{%n*{zys^b!s6i1r%pc`CFd?bijE48Z1 zL(sb40zrLwC(;#o^v$TDq}%l3hDdm2@LcdYAVYfc9p2B5zKP?aG2-a#d#~#0CB!Z5 z!MkJD$L!wl(x}Ga8C|Z9G-B(PU;dDXHbf0Z+w>FYLo$(XvshbCPY3?356DI58|1?+ z4;sSL&3@ay{%i@I)rhrAKtT!)=OvprPW^>zqU1IJx11SQ1IpseQqI%5)$UsotzWLC zDLa*8f6{Hvj4*G(GzgH?vlgG)vTA~F+EC;B#{PU_Hi75q$y*_tPw)(+0Xp)t?uaIb z78h~BqELG@nzZML=Thu#w=WK>Ae+DUneU9%OQJFN#uJPi>nEc{XS!B zFdx>vs>PZxd?dI$bk{B$n}!CjCt7REDuVTqVOC*a7327%JUb90&kW2eu2*BQG3yMx zgOZmiy@_1Pa5BC9F)@JW7;(F1vUpE%Qty%CbSFu?Km@$Rx-3cHC|Ki{I{-DfB7}(- z65G{FFFxY)uy~z%Ak8c0fJ5O^6s2lUSTZ>b?rXqAws z&J&7G>DP&L&u?M@x!hv#r~q5Qyz>tg_M-L74a~bWo546CxqHG1B ztNGm@7RPShhlLWbGW$oyvl<-KcPyG@eP(922^EMVbxpHibE0JUPJ5P-s0rw z1Pt+u(X0~Ago%GRYQ!QSmjtK6kd@bASSWf2n=cHTjk|~|Ow6{icWK!ahv-5;FtW)D z1Ram;_t*8lxJ##NS%E<~nh*u_44RuyiacANMZS~*f-(liA&YI9JTbXGv3B|KZ5uPU}LmCoapQ59G@Si!6a$~+=o%Mc(%+UO^`C($eb zOfbH78OPtp#L%Pu4c&TGULj=0Fhg?<=BBw6=yJ6wPQtgui%iEnp>KAYqWkry0du6e ze(}Z=2FLU(CRLiy9f;{hbJHwP#ag^MCZ>Zw6{jj=+|z_6)s=LEt@Q**#5H+pXh$eGj65;GyuvHFuBirQk@ zBWeixxmr-#&(lcyTz%$iNktXM@X_tf$qhB@3rbeon(Jd1s3 zvSvcJ(e)1r*OTj@Lg?1RyM?GY>>=L*7%D;Efw#Z#{jxP&hLXW*U!!7aD(Y=(`jj%| zPlIXsE)oR7wX9qY|BL`3?yiVsId80CHKO06Ho|SS2m)r59Nq;hU=ajeP+T}4C~&_v zyTxS$U!kY~*~^kg$)?|{KYgi~qu|^NY=NsfchQhB!R@DCD0jjN(Lcn< zB)R)wtnB1&GP#!gyuQ3jWx2`Su)D2k@KaX@5`GXHD*48eD#_35T0Cr(`jy723xq3W zfe@3){aX5S;?l+QnF{zJ4pi~{y>osun*%iX6enJxQI1`PTZ(T?qwdvdhbw#qb}Jm% z{Q8t#V8_8 z!M_qPef7e-Z=2lCYEtynd??;@Z`70PsbY{o;x>Jk^FrGL&!@??k&yZ(}~cd4#u78WdDp`Lr8s-XPB$IHyHu|g>muG0o^?h zBIhuVpqU08t(0&mHQ5eVik-3EirrP7&DnC!7>muao~t!{gRmxH8@?winSdn0)dn&F zi2)>`as!zFH=*{1AGSVd2>=eHm5I1QvH-T3?S5DwIfnnPz2@2@%2 z^%uT>$cGp`S-oV6P^|#5aCcUd`gC&AK@|oZeE>;9m;FuWZALJ! zdjs>#u-DWt?`NJH8cYom+DnRARR&7hpEHk|roDz|OoJTO+pZAqR{d@+EDsQ+jxMt zBA947tfhs<_o4Z|S|oAc*0&ym=06Ti8_Lc3HYIO<-nRlC9|{uh^@yq(&<}v9)V~JK z=w?l`Gnw6d`mYbViVjLMlcoPnY6xuR-V|+0Z(`&&F0gY~=PGgm@!F8XofP;Ww;r|( zv@3KA6>Q?50Dr}$FxoG&)D}2VXsRW32lWb~gP=(Ow-Xoe4GrRIF&)GSHxnlYfeIoj z`E-&zGodo*rUCFlK6;U}|L=AbRhn#$p7SpZQ(Oc^XmpoN3C(|}9%v?nW}Fk;=-k=c zfV+OsefyVtSq#|S9Vc8=T$Nw41(XLmi_gp`%PzYN)JpdHo;Q;1Z-(?xx(lGBCtO9D>(FBE8V1?0+%1@{~Hn)J1v4uLUr5t*w*32P%-`Ho>RDh3_21$a9!=CnTS znKrt-J$TV)kVq3Dh0!1)F{T3akr-`owD84%X80{YmM$xmAsUvTSGKkyQ=sN<=?arj zKI<4Lz4XQeHoy9<<2UPY4Fo9#oEZ+6V`3Z;<53tiM}zfWeL{Ky#J)Z($!XJ(^9(Ve z+GQhr`-`S!kF9C!Sy>?vEqk0_RfhpCJ9|AGNf~AOtY70%rTc*OYhNASQ_qkJ@Jg9`wV-Y&9DQv-+oaP_Fy4Q z2D>1SexVE>e!&M$+3DzgTM3cUJ;k%dUtE*CAsE=WFzT9+_V+fQ`&11FA?+ucQZW*# zff$foqT91Tf+r591~D&{XM*0au!Xu|4yLL33sZW;Q_9n;@x^`tN%2@n zjh0Ijh%@$@(T85oTi=#V;{i`?eR;Bub=*|$Z!4K+h7Ij_>3&`Vl}a`6`f2DP%-0v) zi=-lZ(KulC@jLrsqOa6gDyIGbOF*>0N`yHsu)_bja!Fu68aNt~MMWavh}avUz0_T0 zQjur+k0>TQUVzfO?+8K1fdNMW^lUec7JLa|=pWXeBB`nYs0xSZEJni}8qqB|k32Mf zk25mtm}DK$s84mUvMB-Ybbuk%LB~^lNTa!oYUkEb3^@a~^qoVHXRCb>G<@|mYUiLz zv#+yPO*a0KL(yf>?lR7~drpOSl0*E!^I+-|AP-Z?*^wMQ2qX+-w^(L#XT(=^8Y5}xIo;#DIX6^{4=-fXC zzeAoa^+r+erOyy#VwD!g)`#Pr79TSnYsOSK=r85i*W2sv_jGtv2cw?k{Xg`(iISzi z&LzpYk4j1Q$xF}Q<5YcGWfgq5%oBz^>bI}t_Ii(co@G1WGUWWKN41h~yaVK&#;|`) z>Q??%c0`zST5;2@m(?z)f&Y?=YNJ<{`@vl9=-Y zQB$rNVR-zs$k(uaGMc2EI&-t(CLfsEQd@Ii{%>#E7@zenBcs;Y$6j^ zvoL79HygG>IXwp;46GK*JTJY>RGzpl?|cy#C5ye<2`ky=T}&QpZP!LxQQw$!vlrOn zCzD4t!E@WjA$Y4s2jpVu&dD8A%4Wm4Rzqm$x46<}S3-j;$-G{lozi)4}#wYq0 z)kufR#%KK(6SrJ*;7Pzg0s8OB%BKhagxX|F`NZL$INRH?#dX+IJ!BUrYK^)sNSG5R-l^q!0J}xK2}$ z`4dWiGBu{8f7JM?uaVi2Mm@ht21fmWV9*IYis?^)7!nhXqRA)0Bs+LgkD}o*IlvRi z7@B+ndKlkI3+xA0)JS^w3a9_ve;;w?^{;X?7q{} ztf;bmwcok%bT)o3w4&bAx=%X&ttj6^o#v+e_gAO6r2kl88(myp{-(nB%^S-KSDn3e z{r5?(w2x?Rf5uu$qtDtPpua9s^`E{xiau({Da~o1U;2%*w+x?Tqx3D^r!E<2*M2Ro z$aqR~jq#*k-Kw$$B80N%tDp^#0&ndyvdyOcUs|bAhb;!t;NR+I14#IB{)n*!VnvR=FTD%M^!i%Jm zNy1VB-{~@GPYRI!nf4?CpP&5hH2&RrKWiC>y5kP5axM@7;ZG18qxR>VvFLt9yrfl3 z0wjbJLh=Q;xy#PvnQ|ir?eoRTXyJVj1`RT|`X#cTu@j@B zB?$oV>?Yqt`Wc-VqdbA%DnJ1OB5xuF@RhiLKRJ*>WHu=jOwx(sZx}880|k^jc%3_A zazZG7$T+|nCojvtR!%BSB-m^cDcJaAo`E0-O}Y~(s22p@NkVf3{CQ{Hg;;Iug+b5b zMUsmX-nIvm^<;4S+l0j=xgz1o2Gy5Ut2R7ISV8=Vz0T)h7%%@d=9J~%-G4=;aZ3oz z>2HJc{_b3xJRjF3aZ5sMswVfl@b>;isEV!oLf^bS;L=f6M2*c*p^`%&4F7 zWPlgkM1CME;PbFs@fQV_A8^^#661*iFSvR5Ioh)P;Xkzr{tfUp$w!wbyFA-9{JWdh zox?$%q`fWOf_CR9P={TEl^Cv+jAPfZafuQqi+kPEGcq!?NuB>WF@=3D8sRme#--0= z7u(#uecf{2F}?|+rd>A@0}~bAdv5U|9Scp~_xHj%xA%S$UAb~*eE!qpGf_mhY1L;l zc+GI`KDt&3$A1t&S{9an6=^9ww7ODVZV7OG{cyXr;LpoVD0pqUovyDvg*kIcA3mos zdRsBpohYmH%=Yle_AEQH7SDxC7mD`S;36`1g1zH*K3vY`G`oNL`uFDV0>95Ffgrv^ znR}T)ULe&wa~DOA&hDWCbA`WQdTMmD(`x!Qz1nH>=p=P@PvK*_e2?G8zjyfq20xX4 zSh|*K8eVd_M`a-j>bd_dR?LN)&e4%ImXfv%D zD6Q4huKD$beg5`xt)}+qbG1p&UA4QkOSM~Sw^$`suU(-@;iYK4E0lQkflRGRG$54- zAsv%gL|&|pDeEY)z#Tq;wLB%(*N2p z69pDAW`~qs(O7Nv)GoFDzn|`Y9}cw672Y*Q$R+Aw_2kPl-W3v z!8wl&ky{ux_?8*`xf9s;b2Grza3v?g`lEEgT|Vd3(Lm~s{t6R zgf;$!LI?vL@A`k1(k@Uu`iw9JWIu(tcuJrgbNq$@GO_Pq1la6sOwAYl${PrC_N8SS>`Qq#j% zL?#cVL^kiJm`LeObe?i=ANw3}+h17t;U6Xyt}QG^^AV;+xd)>;1yk9)4p4akgGcw= zerc5@T{1skdVDqs&9PTf2j$6&Gstz9&hr%Lz&{lkhN+x$X{kUYnl~GA1L(cECM3ElI1 zrKQ5%=vzAI;&?WiXDcm=RG~fYU@2rM zh>UUamHd1?#TXdN;R!(X+_OCCOX_@gZD%E%<6$Yn4jXqWiT)dU~nB$=08B`jvlK! zRyx8Eq4hP$F{)$5bGxg-E>j+Com7`;{_F+ZEuv zY+F6oa6C;7g`b)ofvwc$b#)q0eD$Ux#kvE9dQa0eKkC)3zUH*mmH$L-3X26ijyV4k zD=j(YTI2fDo4ZKh$hnd_mO;hA?hP9eb4!ch?9ZVwDvQ^YJAICdlmh&@X7k1UVe5M1 zC?T=)Y5i;Wk;wpzH}!l1Ut4oZl>0$3cO!;Q`90cc65LC?8-9LV=B2DFKbcnIuJ^2Q{NTx8>GMdijr2a~=c&`Iazr{pgt!>=4C3eVR!Pw4{MwM0Xq z?cVsgMt5O<%_B}xq?A49TFTPYI+9VOWK_hp#D+ak- z+>_3!wqGk#NeH*(SVy&y2KJZY2CLbsmQBU!V%g5i7IHVWm=*3Et;n6HMLD-Utq2`y zkqPfC(DO(5KmVxqN7!nH|L~N0c375EB*m@N4b;|R38mb!Bev;~!C0I@zgm$0;jt7# zmCNzt=!0Y>=FY4)b52 zO;`L4X!oFQw!OSnNp$sIVG>sSa3+KMX-KjiPff9M{F-YqXm!;mY@#bU#73W<{Pa&p z>aHA}hb>7VcM*!T_0Z+)g5l3i7MoWMNsxatHWt(8`4QlwXbMk+pf6~2Zmx?(V53ZD zLD|sVSQ}Ql(ner$$(=j;GiVhDI$IiJV{MS}_i$rI9u(nmnuGSWv+6BwarPGbEH}%b zHNv8bv$NP`spc3;xXz@N+Tb<>M3}ZY8cb+NuoxjFC{rXBF;NKbM z4YfGNNiEXtvu?0NA{a*4#$q)*gsc`~k;V1fdYUf`32pu9WSDrl2rGO@B$e@7B?yE; zA{;^>$zs?d0>RRAVa*$yHPRzy*#<_0;t1}FR~6`<91&}+a$JDIV^P-}2V2d}HWrV8NX+I28= z?Gdw05NeNqOo~#n2vE+1P`6A7nybPfL>^w=u%vN@F40ylXCnm5F>2v21ah$}A&+NL?jJ>Nc7;h#FVX)gTZN)#L(?UF= z1U#|4&J+6|JSh(P_DOkXqP@ctHeISRHu0PZd&F^Bm|Em7|LJ0fr)v^ zz2Gv0jPSC87}LS<$-70Xj!(mNg~ zkr5+rtkJjd5XO))@u;m5oRDpECb;8k7=l3M;B)}?vPpqeVh+tOu^!2^%w-dU&&&9? ze(Kb=a6DWITVUJbam;1E0k6X%_q$+Z&PtV#7r7lqE+KW06ud2pCscK0ufQdrMd2(7 z13Qfhbqt@9er$*)aR1Mwcy-d+NMbDe5JsHEKhO{~(qoKiA6&kCTnBd5p8gp$7sB`w zJ_d0?6hT~rKuNM_LF{NJN*sx{PTJ1@QZH=;8M2Ot4{hA%KN)u2o&$JgPbK#cDQtO$ zRp>C8SrU#+EmOZ=(1yybOb~ytE>gk5>_D+71B8qc35Jl5N~pxG1ayYJjWc>OOfYh| zbB4~#o1$ohL|g*fen$I0Q%1x<7>2Fq%vA{1&h|NWRGcohZjXg>;hS(S z1eu2_b3rF4jTaAsT0|vMJBZ@66s8!0SeYyc5;K`%5MCF8L9rfX>3VJWxu1W*?>K_5 zbIVgS^h_isS*x+6@~v)yx)?S+yzv~F)f>Ay-{8On1Q>;DbIrk7t}rP_nIgG}iON~s zNy$Ty?uNzh=(YNwmn)LKSOC8Voz?Bbk}58vJFW6Tn?bovwAE&7Z5$7Dc7YItwTA_9 zAs1(m*D)7zlVE6$qvR6q5O-eKbvMQ;Z9lbDBr9wV<(Jd^EaxoAjm&VKaVJZep>$8j zC1?E0z9v|y_@pgvgfw&L=?7#V8q&3@-TkI3bpbvKpD>-`uw>eYpo+*zvyVSj%9m=z zanTB~7I5l>fS(By{LJCju`y-- z{bKBOm4f}q)IEKhW_bNBoPzrpc0b<%z?1+E@0t<&brJfa$pNiH9hzRCtA;~xVm30S z`3F=^tpLMlZUU;Ng3kd zl%s{m1A7Nzygl2}<{h$}=JNTgx$3d=wlw)UgIP{V?2bG0ssV!+z2Vg)g?7jHgV2h;XMP-9&o?ziKOTe?((HIg^@l#7P1fIP z;P|U-erpN0@(O+~;90|W{$^w3&uO@&|LY&hN@MdRoTr$j;DtZ2(f9#K8Fzk|hF{Qg z?pD9s?9FZyUwgZzT5Hr+kG#DmZex3Ieph{$qrZTsJ#+@1nq4|@CGKq7>jtSm7&AB8 z-4tl@h%SviXwsPu#+F8Vq{DEJo*Q$p`(oM*=GWP$S98)FPG^73)V|3}^H~H7^NB}* zPa1%bM_lbO5i%pn>K-~A>Yqb6eBz_g{68LMssmq~y$Uza4lGo+I!jbmrTY&4er)9g zFf!G11}Cbs(kfB#w{ui3?4L6iXqm@=Sk9~941@(S<_-LJ=vyOOzl*l&VWyf9z(F1D zwm-n#_jYn&;Oyp4Y;@A*l_-eWn z!FT2OS!+zpjyNML&hPVBlFL~TXQt%$SSdrLkDnqk5j{M7eh(6!y{hB3syO405~sSx z;OGVcnq+^-L0NJ3`QJd5Eh`59dWYN`4KFjJWJjD)Ws4Vqjec>ksZSOD9xIKWKwQ0* z!C*Y<{JuoOfmow=#eQ+DIOC3(80%Sl%BHA;3n(kzEGu$!gC-*6=Ez_aib1P5wHiUd z!1s{Kw0xubQ>Xy?RGnq`27ZK2Bh^nLrUuV8?fri~#hZg3Gvy;-|7OieO?8^=;At}K zON;lLrEMe0t4uaFrd7#-eL`Vh#Wj<5+L$_0f-3#jKu}7D357w0kFzu5r=r#i}tE1IVR(fj?n%=&vdHwtub)itSJ0#y)xo7@{eZ}wp-6W3V1XS8HNA6pLB(FJxMHJ;_@}K6LdWd@(LKePz7DO zTHU5gcZ66#U(rR@n#)&MT7wICxV@+tcGJ#FnuZ0mZO)_I(xk9}V;ix6`_e3#AF$By z1{Kh_F+(n6+GfKV=z;o8Vrk8j=1(UW%c{$hJe`RBVy7CRxk`BD?S4AxiOHnVBoh*Y zO%N`xfzGn;v3;FJct)#Xzf(VBAtIadJ-Qp7#5n34xo~%%j7zOvdr&)v!{HRFA?M&+ zUQjOPEd9`;PgUOQ8m&39`Nu*;=7o_6Uz0=mS7{1CSG4OB>p2__r(pV>261oHgSK#b zcNhxYv-PO5J4RL1xw@bi_X1H~c(!GBr>u%TQ_fDl>5Y=?*_L_zd-;>?^Ct~wI_bHT zIFyU!oGe9TE$nv2;5>3F zyXNefN1S?ulbVREh23r$T>GO>q@^V`?16-nw1}*QZTQ=&wJr4MdQ!{{E+OG$Jt7oe zBcQOwD$P?UJfDm6(f9T4gNXfbbTS);!68E{s^Xs2t4?7z{3p&Ym?P%EWACw$%shbQ zZfHeS+_OlvfyOs=A-L{VqErGB_P5z_Q57qzQ8kzp%j$u3R2&tvNs9p|t57xw%`JUTFBd5lNl|{DoqI zyXjf9Gm_PMPBp8f7xxWuZ*qs}f80Zo8g{EUoaI0viBn+h?aj*-?vn1%er5C(>9_)R z*;Z@?P;v${Qi6hY1+drRz^Tfd_d)1WISQWestwum$v-PZ+ zD|BCyD@-0iM$Bp8v0qItL~D!o-&ut;X`_{6^o903GIb~ESfadGK`EikX^^nTudJwQtLjhi5E9^e3LXK4EnaDgmj_0~u8YPx0SpIwMxc&y z*ClWwzP1=_V2XPiP)&d+69w2e1D%>e0n?r&#VHLayJS2&`%dqjnShA>Z<`wHlixrg zz)g+IYVn>^Y`_xlK!$+|1}m(J;Wh!5+_=Tyv1Bn-fd->ua3}pcOE*x)0D@CqPNI~I zyyg^Bc**JV_$V@JP6Lnq+W43wSVw=d2ABXhbwVv3nPL;Z>ne`uOH<4$qkZ<7y;eel z5#XbEE3_;?N}pm@9--8iZs8AeUvXM8eW{r@fQms%@pOik0;l>K-5bpWc76M88mLeD z;jiGPfg7O3yHBwRpG^f!T@gKJ%=8W}%V%BT&|YiJ4nG)keJtYtRkQ>M-vuoOAbTOCksPQ%Yz$9j8@fIZ?*TH%Y}rje+{2TZXEAJxuS)A;&%BHE0P zo-`1u=A=90iZO2hT0COJDe}NU&&tGz%=|gGTMwAGkLd1t*uypP>=ep3`|0Syg;Y>< zSANFT&83moyCW@6NJ}=Kk&s+R))g%Iz6s0(on#eJJ0)}5I$oV4TuxBuE8A~`MP+|u z0z=8h-Be69#!t@WUl5*#Nz*E=N*-d=Cpb*}5-gE6E??+=VYcd7ZXo(wD@u=&#Bw60 zqR`JKvSdYjP(NXw%L;ufz!2lPemKF`gZqiWSo|2D(9emes>*Y|!b&6a%0gQH}s|K9xSQ!~VhUEJi<8=Oqr=S4&q`gMaMoZNtuzhc9pG1T+!h z3QraVxI0oD*6C<4tf`aI?$Ei82b`%`15RRBgfsk%6$=d#`mlNFO67;ms{(gQkoUni z(YcrIYjlFvl8uJ^V6_$&gj+UpbwmTG3&XQ61#D3L9ETf+wFYBuvKkMJYjSvuEHFKK z%Z~h~9!1_a9b$qkIawl}y^uPQ2H+=DU?+790UoZoqJv)*v9lO*RLBA~z#N8XjqCct zZ6zPI@{?{>$>k}sd%l@z^Qy4gmDrco@w)jy-_E7mwGwE@sh{5{03ZiH{mYa6sG_ z%i_}by8rUwg*f%@KHUV;5`W=kg!m0*E4Z)Yxs5NJ=G<7|i+HR9fzGKS zb3sM>zN^eX96$lyJ(v^z!s9q`Rp=0X2y9@ffzcqibP8qq!3{_R?gQ5P2TNhTtl<%u zXrNzlS@cqNg+~Yj72w%D$zh$k2GJn>cRGPXTO@oSThrRJ#1Pcqan}IKtxUi}sjmPZ z5sG#lmPdU89(+q6USED|$I6g2Vyyrs ztYsd?r>CPphJ0VXfQ6hBE_hjV3`XjOOWxBVnJO}>B2y_);G=u8)J;%l%Y~C&rT(77 z=o+&27zS+Dqy1Kn=pyqyiIHoeoHk|Ao;yg3qhlz`oB*Jk$`WUj)ulG3ufH41Or)=P z#7%E)qK#?~6ujuSxDc)s8O~&Za^d3BA?;Z!nXW>_%(alHtt|B)y#`q zreIw!+7fSAv>lY?uDRzkuyj~cBn67^@(C%*3CQu58(D#t)r=s1X@gP%P*#J>Bnb3K zYeFd1bL}KI5BwQj(oOEJS40?P$RbzEx71h#Wf{k0K=_)Msjw)u-`W5 z18HpHp)IHb>+0v7fgKZMLm@orjGzh6v-z>z!7exvJQ(@&cvx-1yv-j8p%1Pva1xJQ zws3aF6ZF)LK@moumXSG$H9-O+WAibW@jCj6lk89E!Nn0dKJJNf^vo?or{87lBw^ar z1`eqFws3K}G0>(#Fbc;V1M} zNMOoiSmgckXRs3o!!r(Gp+6b3D;rB2&@CInZguwxrrD;w@uV~-X)6=o%A9k?Iv8ML z8!#qc@_a9_*XMmRPhoH$5DZG%nqX13&;Bi>gw8iR!nAdn`9(dOER2+%4?HCgTl*T{ zNg$R&rG!5X1Tw!2lVI{+v{>kWJQbK_vl?p@shP3G{4&O)hg;0+Dax0!I+?j$KI|Ct zip$T(PAo&w$Lno1nSdh=jxk1&u#n8!r@DDWi+tE1wNR~X1!DWdZd(-G(_t&Du#Igm zu|`p=smHC>I2^1^P?R%uI>{oc!FZSo#T?3_FK7y$3hO{})O{MB&N;ASy9`NYFdAaZ zYm_PE>L`Dmbm$i;*}>#2K2$TGhZ`Vd*l9nVz$w3qxarV&%@WI>cdc?J| zdHxmzUA9J{Uj`(2A%lbnE?r)!or(}p&h1aaPNso|emPKh+A4sNcS{HQc|w6SE|sJej7z|#YPA_5kKLCu-hp$njk%IpFp z%?q_C+RyPB7ERB-IfVe#1`_yIV<2FP_s$BI=RxhA0!(?&<|M#fw6vJd3T*mUrO+%3+{65yhy)Y{do^!N8v)J)6Et06#g zA)g!fTyF$|O#3K%K)FfM6x|&k&;1+qkV|I%^qYQY;SirxDu!v zcO?zFUFzKAoB?I}leaA~{im>Fc#jahYl%x5YK3>MHP#S$6h;RFMvor|OW8NoToh5% zecr2lZ}_lb%@v%*f|4+7m?QBl2-- z&npmXTI89X3>>UhQOv~p_%SO{G_z%z^jyTOJJHOM2}S-?URSxG1Hmhq0rviO(w2uB zuW+1$X)jGklqV=N1{xN~CzUK88)g=AmlbMPoVC2?nwm`a`=;e*O-v1YyIuam)VKAD z&!wtrG&FA9#0$yrQ?S`QRo(|qMwV&T^xi7#to|W*qI|Q)GK_2G!kE<*lNWS-Q5Uyuqa_L{HTY-r?NP40(*~$Yf2pa55@rYHQ}nMhVd$A+_?72e0n-{{`AtaQna*m z*0~Vt;Dy>paAr2ei*)10m;C*1+TYi3Q)kpETv2^?ndsN#N{qhp9CFs{H_1&Hf7g_m zAuH<)Ue>wAM88P3JgMG z(V;!)cOte=Bz-1!g>-?y1IeR9F9RZIw9MTC?`OXlZnM$Jt&-1P>+ zmh>)Lsf1*f9Yh?D!qk1%Kp~1aFm!=CEOh9mxMQ_m3ONSjtHTh*4(^2FZtFwCFYT8! zIdjh)JJ8Han?N|SU|N?{Koh(Ll_#^qlz=gKQ3AJWg5aBpji^?~c5_*2nb8-p|2h@) zSslylff?`uo6<{`OhZA;cRjk}RyzCeOWPob5Y1z26cDA5NE$0=XkT_V7b`MUlUkmC z``$cu-2!q2?I%a;I_)s$KhqAWcP^YdNn~KKKbLLEyXfYTc7^)kjmxa|pX@Xu+0fDg znDU_#k9ZWoNO?H+#ga#JFYSM(_NYpfa^dQ>g&A>ile6Q}id*iX%!2~&aMO!RL&JTa zpV0o%oujhY;w!ZmT9G+~ON$n)th+P7Epd~V!sOE8KhN$K)PGAqshy?Zwra(Y$o1hz zxSlmR$IHsM3g^Ud{#DyYQSW81i8_1+(Kk-43tW)v&6?J68~q@7P6HEeF_-W&o%}V6 zHSap6d;b3Yp}OU@*<@s`@?*0jQz@3Rg!_y4NWXT}e~*6`?zYwEzpDo4eaLtph2fDO zYCrJszyJ?;17$kQ&LMAv16P6L&eg%$!K<=U=mE#aLtfBxg89o_pS5PQc2(R4+^K9F zQ`N?p<{;%orAm2~BP!rQL)e6h8*T_^0_QQIft(;}W~Z!zl`vEGZ210rh_0go3xf-v zDm-DkT(&cl8kBQONbxTLm^T~S{8;I;?PFAxau_n~aF5j`ajsW#hm3kY>3DPEeNVGh z%Us9Y+{RqtwoJG9I%d=L*3B!qUL#Lei>_v!Q2j*${*JYVDZ_hRmUJAmD$C zFXJVaWj65y6FIaAgTiXjjy7y7zL=)O5lm#i5=uPj2Mw;YbQ_`tdfmj zq#cVMO17div<1&2hFI$&tJH8c{tx&d89sC87Ly-cv1%y8xz1=ZPQW}jGJ#*xGHE2k zvA!zr5D;cKD2ZD!8qO}QOX!EJFF0tMER$@z&n8JW$#%@vM%(BCr1)gn%y|Oy@x9aK z66(ysTX00@lj{5dH60 zIvXb_#D1|_tRE5)j2O8}@A%L0(HzGhMY8jDuh=}SZ6{{c@YO?sk)YNL$;@DH{#aqD!k?SVyz^g8i_w1Z+Vk*G}JaA z*26ZZ$0VB&xya^uffdvsYmlLTtF~QF$TA%6MC{)ntS~+5+`j?m(F5`JPt#K z`1Np(2_f+L+YRGR>+G3(RY8t%g@o<-Q-{e{jNmwgAh17t7(-z8;bKVp0@G?Y9kMoe z>{Mli#y;+~433LMUf`W!6_rz|TEJYjsZihKVTg*Mi0c~)K$cK>ThP13wfYQ?O4RXb zVeG#Cqz06F>arJ+=()0w^JvoGK2d>*?wZ*S<2%9OIIOwU>)P<}q=9`{QT>7BhbT4o zm@SdOv#DkBr}X7)@6v^r_iu!ZBNzp&$cOL&UOY@m1FPX%2vEUxaRdX(o|_M9UFcYA z<^``=q7a1HLy5Klc>VlCs%Q4=2%S{BDY7a9|{BH(A7^U?@}v^?i&JVEXEXa=iApD<0# z7_I7$evTJkrpn#}c~eKD2nWOcrz8jji9WNWR6ee7R6MHeRk9)#uIQ%4NB@oq2%o;g zTv8VX9-62c(dDU0W_@fmr~JbY5~7Y?7(@<;5+PB-zDvwIeZt}o|Bi|)_MT0 zF_0y)C&pcZC#}s(0r&kn*yiM*cP1au^#+c)LM2_&70p);V2Wg=uZzZf%W7etNSDyp z!OF!=gBRfj4Vhrli7*Wr#=-vOSzqD1KQ#*FVJm^wQ93iyt^#OsqxP@9GKWa7O^PEs z6%^Ww4-EH}NlDZmqG$FFJ(ZPxI@Fs2!@v>(sC?Mj>F{Z*llqfUj-XZ-5I#ny+!HU1y0#G!VLl zK*0!mbCBN{o7t_S2JSw0FAyqg^pwpx{d;87S}{VwAxuI4Y1#0sQx<=Cp^fP_v)N6a zAsrkTh%`=5qtm7;EiPLKqb5;HcsHKnv85cW3XL?58#5quS0scaOw@?614PjA{BU#{ zpN0+u(nsQAv}#u^;=~-;LBMmEc3EBNXbq+{+Q|;p7kZGM3oEwAY?%oZ`{S`t@ORyY z6)Lh2*4kk29C8(jN2+f$agejf9{H#qt6#!Z|7_m|MTilJ63tf0A^j76V?Cndvjgqk zPx@_~jSETT!qBU++bL^1Yjv`bEUwKZAxUc)m`_q;OCpLF<1QFT4E$^)K^LS(YPDMV zh*r;O815Vi3ISonmoVqlFB7^O!118BzCpr2ejPJd%U z#y#o|sr@MywH9lSrN)KL35^?_ESQ;%XUJscob2mhVyX)<%#B0%oUmA-i2vdZm_p<} zw=B;$xO6P;GtVOfe|CYe%kE5$Q?=r}UDW%!j`(zsu_?7yE5f0)jHz=Z^&8k8|+8th*BAid7blu@6*0|Ek*J?aGH%4?mK_hi_Ls zM0QOT{Twhd)73BH2+T1!>3)?wRKuy^7(T_}xSYQIjvv zIy!H6E-%kD4z7XX zFTpPo8Xz7vWCSS<>-Rx>G_57aw%Z}I*(cV)5m9*sb>rMpwX(XJJ$o&r`rbyG)GP9W4I&xJ{aFU!E-+D%=^{{slHr&cG*pDEfP ziB+WTVzUz&NkL~a8}%Z`WJlo{e!-fp?4dFL2lwkG5TL%l-FJx~I$yQKgqApOmp}vb z(yvECxnq*m=>h=zid z@r-oWpdbbTuMQLgC}RIfrW41)%?$z7PHsi@Z{HpwvG?(Tq(guqt+coIzVHHs^F$9Y z#x9Q~$Dutv84xd55QO?;?pvI}KhEe*455$GvbLE(XkObw=_5EPfb#Ow=iNV||NhfH z))F{J`@L$SjeG7qns8Y+Px4Qq4-9)N;>D0SeuD$f?f>J9sRKM*N(z*+jr1wJln!r1 zWqZfA4p4z3ZfXJ*+icVgm&3NajXX!X+(4BPaZQ^tB@oDgwM$OO5`nq3|2SlcndkM&hz zGH5gg0e=n?9lBzI6Q?``7Azx|#5NcBc@PlhDhMKbU`EOPqu}bIm5Kh#Wl(A0&g2_= zQcQ|37=iaz7k#_VdE|KO0x2&SHnJZ`3wg&!oJr6@{d9GoMZhs2HtAr!LsFw7noB0q z@@0)l4)q6<_F{7UD)EPjz8mBKt-azr)oDZ?yvyfRJ1#fa*uRig~Oo13K z>whY9*_%`&bktfaH9-{1cKUTcLz}B@QiZ}R)D_MqMklhn(>mjCvS^H<#&F{&^D57E z&!6l^maf7vYgtade515oeV4y0-&N;|cZFP?T#I1EfrkyxbjH78qx%L3quC8mvzx{> z)O9l8qC-OtAt1OZCgWMc{U~KKHyxQz*7)<4$jE-=(EH?RQ-i6+fSqE&iq)@|benby zO+9&#tRn}FTbZdhf3{LwNh4d+KO%Z`F2)_B2k1FSC<-V;4I0q`yP=`2ArCA^%Wy3~ zh3ZB5&c&K<`7PGG^IqFf=;?6NZ^JUk|10v~FN53@NJoI;WiF^kx?{NXPXlja5Z#(g z%f380T}AX~^y9M7Ar!1?{7ERJ_Fh_y{!2dTrT#!bzK6jp=^M4?=5Hi+fX6bPJCp#q z^Okv#+1BHtJS>wYhQu^1Gfy#-&i_$Y$v7Qts#M6^8#nmcWJi}UoA5aNwf{UCu2^qp}xc?Q^C6iJ7dVhneN0#s; zFBCqk!>H4;amSDm8!ZDpXb6Y$LIU1I>}j!88gf)U>Xx3!nh9uv&Dh#Aynex3)Ad6l zr;55_)~~yi#)kZ~evl3*a79JzFtfSXz*jIVNZ!;Xjxf%MYiy^BeN?&oBjbyO5R?$W zj}aA1)n_tJOO(1*;;1&0P4Q8y7_!1qK1&4xU`hVcH&a*|E?vMT>LwQF&?O%FU{>_| z7}0@~K@fx@GqK&z(FB`Jwq~QBcQdhM)R!5QHD#w~NpiEN%hphq>a(~WQFz453y(x` zJu(@m&s1=Ha1DW<0~9+Q3rQpQ#Ck(5E3rt_1$MYkUpD^qldl29kjGItxQoL&NH=`( zBKQ<<2HpMi|KBsK!{MflyCpw=EM0__J~JXM4Cr)H(fRV@a6-) zy)>PLmod+*>%@qLQz@|s)A??+F+KgaISio@H}@OZLHLDqq`cy-IqPa|8dMuPbT+{a zl#c=Qk4xx(`}}#G8!oo36msEW+}#<3FKyFHxarQvo!R8S8>^f|VHuxl7u*odENn$4 z!&b8zvogrK|;+X?LqyFXR0riU)YSq`T zX2}B28}hOh-n)qwdSRLaX^;$<2w7%r>O0f7i8bBl26~Jx2o2Y8?ou;C`q4lk9w89V zcNjJBD(2X}$3U%co_586UQU@(j)brxjz|!crkizSn+VJ~LGknDfui~Dh1!AwO`bY0 zudli4X9FSoyU6^y9~v6FwsiN796Xf5u{+EOjP$_x{_){B7V~yEr|q?{MI)%WrthY~ zM_`(#Dl>s4eLEIV-@x9x{j-e|5o?=S(Zqz|rgo)PnwR^mXkmH*M7ah{vv^{mn73){ z6zf#cmA`<_ug`O9`)0B3Et+-0r-|yZF-d}uQ zg+oih`G$qCN%82!V1LVEe|b!-*iU0S7pfmRr?EX?0D>4FPPv17D8XTMlA%tmrJo-s z=p4H7ZS4?M4=oPmKVCF*d+yTLY7|&+vwGTAgcl1 z0J*4cC|1LQ64{*H;bawwgBJOFp$8ebH5_-5g_jqB;2H%1AK;mUj8jDp-(3ZjP;EXR z$8px7+KQ`BRz=L)ub;b-w+ASNrg_t#UGdY~d;CwanpqN9+x1YJcsRX1ub~Q4mOJJnYYCjCux{km^ zIfb844hV#11-OvaX0h?6+ApQUk{nVl9u`WPDuhJ28hpKID}p{uXhN}`u-B-H-gt9 zSoiYRXd&~(tU(_m*Ocj@K5mi96q8c}H-1aGa9Es}P8I3U6>ibe8TP@GlH&ETD|Obi z!8onoWXKX1QPUGg(MKWWC|17gAqsD^JRm01C}{bzN5BsD_?TBy!LL$4s)ba9rj_mh zT|lD0LOfrz_49q}zv56ezG=Xp!aN26rhF{!udw@{7uw|GLib8j!4IxdVkr#OYNkU_ zx@IkeCxotA?sGqgAl@C*hbMy@f!wXx;0dRcowosw(Kj2&Qe-MRGK0Yv)Hr?V%9t&&pmv8B0T?l{d4Yhw;Gmu(Uo4YCUQuB4GK3{ZinIR zmJKkvM*k2zWA#Vb0EYEO{%6Sl?0OgTK;a(}bYyjae!^+$v6bZ~Em?8XB_Kd0=r^>! zpCAAVkw`Rn*whNXjd+BLqmcv)3kD2WSN45|UxgpJ{?2iiF%^=J0sTxmvp@TzM8?Dm zuTfgv_%fa0wo)=ohsmXFa6Ue$jQ+XYhc2dDbbqGj=>e_K!kfG0!wEPKwoCcLJ1SgS zN;&7H$z@^V(wd}jKU1c6Sh>^^4Jt?%cUm@)F2h|Gn2NtUxkZTL0p}`vugG<&DSK6= z2yKNss1ZSs;{k9PZ)LGBtJx1Z2rffO2@^|HKtYn+&0dkZDW~sLlj``o(y~%Q9o)HV zRq2Q4g)=;nb+b|=l=M~#h$Mp0R5}x=m@H9ovDGeU-{?r-LC!^_lPycLw$$%O}4Dvn3!6|LQ` z`J$D7OM+iVYaBeWe^7FbmK_WYb;gbs4WVgMlQ9jYX+*-DlwJ>B;_tZ$iX)1JT=aHCMo zhA;`Mp75Pdes@;q3kga+fsZJzFGVEw+L|vG=Wq2Ai&FaHp7HAVZ-5zDUA0!x!I1Mb zs)E301n!(fW8SrO8s3|DCA>}E8tbm{aLFJoDJO?;cQ8)JW2DHH-hw}~krE{P&w?FS z5SWzwMf)YWSNNrwQJ*aU*!CF#*=Zv*OA|^7$I4qK_qnr0ALdhvJEDti2Ay2~xhuEv zyd%#a;i*mx-e$+SqBlJLxAdptJiho;@(;?;yqdzL+SCk^4rNLI}!Qw_!Az} z=&JKEITM#3i@nQZhAIx-AuE)2hasWlEL|&9C<@Vjd)Vn1jlphofAed_^T%c{9^V?3 zj@l?}+5iq8@w8sflM0QblLqa?`%7tx>au>uV4v&%EsJs=Ziw{ zi6f>%hF)FVXxQwSH50c!W;SeubC2G6t3*d=Ok60Cj<%BYm0U~_ptzD-%5(Vqw;i9H zRttpfO=)F*WWP#2FH3Maa*WFzi@Yqz;_)jB<0?yQY8MJBoIa6X9p1kc*P}Pe7~TFT zqB_W_96^wgO3pzQg8Fwe3U44j*q;}?Zzf`R(0Qj5Uvb{o4(<6M980|Eec{i1FdfAj zS1h8?5Jh1Gv0(z$3&AUol+^?VWvQL!PqU|&%NuJ}xI6vF3?FRd-cSm;?2#Vbm{n{S zd-~~nch`jIP;v$a5tS7DV)0Wt3&)8|pHiOSY^B-Sn#oUMIaHml1v$6?mNxo89{{s5 zTZO&_=a*xj7O~~lN~&_IylCnZLB4Za;I;4;+}~V zk*Sa@#`LqAS^aAkB{HUwlEaEoSQvJ2;nqe9+zeA1TVZa8p@kxbRaRPeA4HVdrQ_c1jM!6ojy32^(z4p{Ak#vuA26xB`&~5f;HUfR$aB(92N!3$~ zr~+NWgF$%x%9l`LO|v?CtYEF`VD`tp5ZbV2l9cUMP?b{^Y3Dv+#5-)B_rvrD^fG@v z1c`6qAGAa&lB2f8!KhG?^D4#Th;cG;3TN!HbFyE%C^8tlBi0Q648@5V6|PJBO<6W_ zB(tiySxHrzxL0!W{*nE|8{1;n6^fk76ptfUk`*Oy7VRzB9>OgaOfXD%$I{<~(1)YMoj)ZFn{LuK|w- zG0yVi!xeCA85wSd$z`o@uCR!!TqRagl-BNjAov3zZBe-5n=R?Yt+Rwk2DY z*x~agTI9$=)ak>8z+-T~re7uYI)`Vm{4$PiJxeKsbLzG4^Swb%JS4DnUdTI9QKSvcXJpOX5lp6QaTJ|oaZmrxJ+Rh_u4t)F2jw4ri{Q) zRxm5@DET30VvF(Tn2#Yb*Q`cf^&3}Wto8o)#2!qSe>FL)wdx_b-l7P0b#O(eS3gG4n+>l} z*YAXv{zm$8_-;UQd`zbfTL z1pa%357OGAI;XlzHT{$(tlB!qc4v$ zhWY;?{rOZm3EF198UjO%F98Aa0Cclq-}O1(YT_~Zp#0RD5&!mS#Qr}0ZTaCYFFbBk zN!i$-%J&&pRSmjE$f#9n?%ofqB{*0Qd|8CU&a12oG@=Ac24wr`K1mny-NQyS7kuF3 z`iq(p^%4BQ@zFj7%J=zi!)?J_i)=ft>hD)u4T@wGh18e;Iu zTP~FG;7=JV%#<>vnT2g@Fmn$Y?VHd5Spay47XpGIK6k+Ak&ZUm4?T$0a{^<91D>AZ zE-85InWVWm6|XUu0Vge6Lt6&|hn*tP!PpJcT%@yTEPonEKkqiHUzX-PfMy zsD>H#@%zA}>J{hhFGvs5oYz>Xy|pc&eTE{tRy-Hz;0{)_11B$Eoa6?A?NNXzqo8Lz z50Bp!Mi<1C$KTJOpR|p#f)Aaz4hApN0Bs!L{th_;eKd@Phuk|{N3RShvdv_ZvXN{> z*Hx6$`R;*O73aab%M2*R_XSi1&hb+qFvWKctb*>UZopD~ixL02;Ik8}!gl&x_=||? zDwr3893{7l>la2ZLRHYBL*bnuLUN#AR3uTv>l(Rn4tlj;kv$@tl$m8Ky06^eH_tPF zSEYc^f&PM@5Q3?T@7sKuvbK01Dg{hv{N+W^Fs%QR+Y4ht`)B4n~m=@k4aQb4v1~7 z04T-rE)?d}W{$h}yaH=7I{I*tXa`fGf4A)rFimqwzdUXGreru&`SgZq>;IU>?&M@!`PD3!gJJMqfrF+lg*aIn$&Z@T(O z2YV$#hy*@!);Ciq&Fdp6gs5mjB$1KkaEKLc$V@GJ;_u=AT6g>%e17}U{5Br4;n5qf z_{Lf2J02kr9(lU^yQN{g5f&YzM0wI~K4wE;O7z`#X%1&m5*kLL<3ArK>(0f+$J1Tk z%VlA;q@;6KMChz@!l9)B@<++8un**JTe)3;o@JW-a| zEN$+iTlP@tD?&}AzrESa^z<|rtPZ>{lX-jIHwrN}4l(lBJ4yFDW;x!w$ecA_8@|S` z9d?d@;SZSR$ffr_Fsl#9K)1}?EX@V}hJ9H>2_f-aj+3YIi|-fDo{4*An)jM1beQI7 zK7_+a_Ums$25)fVl59}6GRDr!X;pfrIEzoLv6tAT!@rcO-E6gJV+rvBGob(|PvBGJ zM0mut7KZm*H6n1yG_!HXuJ4XqKEc+tD4tQv5epaf@VcZZ_et&Omi5pb78cA(=M@URUU^*C<*to{B=eRLr+6K+>BWkF754T=a9^O158`|BomsC5NwM-M&=u++s5bO zWEvCMhrJ*Al#WCq7C-Ceh@tEjKZSy&BLRxVxzVrnNUmb>)BbIEkHjrS>HG(Phh7@p zq*~jvi>37xH65McR}P!gSg(8e2yFRxGHvT=W^ed>ji;%JICXse@@9}pvX>2CXM+zd z(Gf=$j{>>*v*JQE-4bP)49YTPD9XxIQC3-%B`hgRxv&<0pES%t236)ezm0Zv+DWUjw(fg9znpbo4GAOn|l zU0ro;1t55$lKhYE2L zZB+48v&6Cp4>!p1V(IFp?dMVXBc_z+JTU{+q#IvZX@OJAiHB^i$PT~CN4-9%ez4Y#&M*RiOHCOONgcmi3tWw z)r8RjVi|Q4VFyVql9$=2{-vr`HoFk?@o_e@+{tiXsTSJ=-`B*LE!W78l$5r6%m)x>cN*jjB@x}C4! zt^M>2KMnq+Y}xQKtD0!(3dj6i(j)@B7w3(hbzg~H@1qqWhTIup>)(wJ{*;bH?4*mX zy+8t4TSYWJQuqIfaZ)iYe~7>fMWW#6zi1;iYpH9rfk8JA_(E9MBkJcPFT<#4iwEjM zz9ync*7A;6+h4=Pa6>UgxRiGnch{mf{P$idzB8euj3w3G#4D z;j}f4ayxW9#aKQePSNybboNjIRreLYS))q~b)8nXd%CIBV0IeUwx5x&&5zb-bF{m$ z&e^L8`owqV>tb{{H|Vp!b^%toq5uJOt_bB{n4%%@`+Q}S?5|sP zGW_Ak!c_6RYH3u^LvMeNY2OI{0A({^OeI^P{^-2GzAK~oXC`249G*2)X$)8R%ODDs zI{kY3drZ_I1Gm#|wU?1Q_P!8x3t&Qy)n}(bKW@doEx-@z;*)@?@!OCwFezoUzJv*Q zv$*@c{=r#Yac(p4=8YFr>dbjo60A39k&|44Sj{| zn|=K<7NStOQ)f*tZZ#mmJtRJ$5fX>KK@aAP4D8F+7@e{mGH*dwt1ftp2uuV&H+J-pw*! zB&XBH6&7MA{S;n-F_r_V@$gk_2~r#cV&$;ktpGl0PjeIJxFPi*8DhVcQ#L+~u^S3f z-3o}UhGpQBEn$9Y+_sLcEgRE=lj~-q_@YI-`Te@nA=TXF^7ljKTp}x03Im^11bzpv5&PvS zt`WH$7=C_z^a}d`3WoqKR^rEI`$@3c7OWNUpdl=9Cm>ztk5zmRbcqU-Qea>@z2ke( zwcc{90kypyK;b@G2drm_dAqlz;7w{x2@-a@!d&IwmE=62z>!Ud?m%W;K@v@mY&luU zmbURGsC7pv6fxE=VZ;emmnfw_Dk`$weD&499(cdwfTq zZL*k)piLr!wOp>&_bgh*G%TXK?ga(NG8oDMfEq%B+T)ZE; zUU3DazgPU_Nd7Z_TW{QMu8A0m=p*~;FJzg9Hs#MJRlqU}HS_*}yUN~RcR`uIqP*3E zzNeKU%6p>-oLD_K$Ge%dd)C~?m_ln*Ead-eJk%!ld8>z6KHIfdA^B(c>@785qrjX-znM*tDvpLlhWvc1j> zvml;((QAHNAm2w&XXs=$$K|0~&hFBbw>mg%z(^7#k$B}Iv91*b)}2!kxS<+VLnjqOL4-tRul+UaTgk?Gr>$2Q=P zof>vCbh%?mt=E$sy-$wECoHsYGY>T6-#X(ik1ZigW5wTvs(R^xnZ8U%b`okk#DWic zaw=;`+*`)(k-l2#l1yjt5naKZ$ARWq9a>=rBBb8)BZw@kq0D+&x3vLlo{p zYXN0xq7YG<3~Zsfgp0O9vFaDz@mh){A~ce?EL(O|Ye$mE+M2WP(BcGejg9wtoy6{8 z>qgqC#R=dU8>7h4>Qsum?VW598_BX9p+S`*ua|oJ3tP~$kImlKlfzCr7VZ1GD$V~9 z+9ZCRm*lOpXEN>A@q|pc^met5?@OopX&KBE@~iDxEchIA9b9@`tF^D^e>| zw?8Cuj(AaTh?LG%+1hF#(l~1%pbr!VFupIet`AJ*EN{P{MO(~&P=|edtoc&&Ai2E* z)`mp<-$_ajSEwUrpY-v0=;x>6c(4kkg{%#$PWa*VYB?!q>lDhHc3A6>(CE6I|2m;? zoxk06BO%hO;1}#c`eqE#p zG%av@H4H*pO*Yq2xRF^YfC7RPU@Wz(EA`-+X{=b-eOa+pR~zdPSk{1DL08(q z*)pFX0_9s?7G!Vhhxt&y5)z2i!fx?gyVi2Knj9WTn5zh^AOoN8n0#@4cb1RA_civ9 zX>Q`TM^;b>RN6J#KLoE`TYKG98wmrL4aD93HA6j!bc;1oj%)a2T&=?k3#PGVR}%O6`K=?d z8hdTv))hZ{_Q~at}onbnp7ek2k8>Y_iK^|$(|NpBww%@G~`u`Q@ zl;x0=WpPFKKJMCNeZR-1C-oq#{%jUmlv3Dm#*3q7X)|`)PU*AuJ z8N}1-$>WcRf+l-63(ceBlj_q%22AW<-yV0Kh}Ka_fZgWJpS;L>vr71OUv={6;!23- zUaPlAGM;6hFfp=tZ>8jnEupA{gBxzQY9-il$ad>e1okcIsCPu<juKxO4p{FE(>(+`4u6sdF@4Q+z==bLoL${V0M0$D8^&?ZQq6*!v?R%VZl)z>xE1eqN{W#0FVexSxH% z$w61{?ZCqQd09TdP((0((<}`ykkaD5aU)qkdEd4W0sQ2{hVtAebtUgEo~ZvI+r9kQiEA%$89Tuqdj3e-@=3 zdyZcK4!6O%tPVI4{m(yEbhjET6yJKTqw!${c=U*`ztv!I@vWyH^%3k8t6w*_+F!l8 zuXXdURtAeh5yWddZZe?}=T81pIz62DVAp{^h7LSVT>oeEXR>r*ll3PV3V9Qk;ahYE zG%N4EzTmxzsy}LtqiS#A@MiMppZ!L1aNmg&2S@t3{UZnW|99WP;5P^|O5P0Pw`!w| zYyYTH>%oxN z9S=s8h-L6zMg88OSNFdf5*iWgmeDMRzAK-6wYs)ASj#;y{%~#e?dY+0C^li9T@JrB9 zD)s2E2F&NNPnpT)fCDD=KRA`l>^cd<|3y{sTsEwTLXbBD;jEFt$TNhnYSzJE%1 zAE*)tNpJ0iEMM}WbAOi;Ygv$?^q&(UEH)8e6IFfK^rAj$`=Xc>ZYiJ|2&n~IgnaR0 zad!QiO&_Xku8B^!Q?=YLF#3WSALEP^+de6T2 zBTU0D9Wowk?vyW!<$G$5#S?BCN7^ov7!=JcudcA>2Pj*fG{R;rPT&5G={WuoVk1d% zHu_*=SeI9pCWS$|yjjIy%ib#3tdG>+xSPwa{-F4st0F&eBUg2Dm_H_?o4Co5voOV5 z8G(i4teN=(N2ZXUZ{>4BXYDxrMh$WhnO#2ha60o-<&!>$tkFo?&4%hbo|7r$A2Ugc zGmM!pvODNl5CZ5bLI9dm!xbv^N|O@}2vO()NdDbqqEmfF6pVDrzxTx^mvb~y)b+{px3fwZ||9j-+xkjI2x5hJl z{$F|Y(TW<|FiZu$Q(A|fq=%gfRjdA(_>~16@py}}wtUtk!+duWF_|mvU4V5GX(0#o zvJfOo?;rxz)@7U|8Iu@f1hBT%2maeyKzoA(^lhyHgl5Jio+v4*RfAX874IRbnF}GM zh$w_sShW09F;R_3bSaT;uK=5SrDGv>HW0ogpN6b9+y|}H64=m2UG{S4L(N(V2>g#@ zo*k!ULN8d){kFk+0=|#a9r;8(*h?te*qC++NP*=WH!29)%b9v_E|SE{pYI^XdcW~I zFZEyygwS^GO?o;oEjazj`TGNGC=;Mi zYI;o6s=9gIb)i*JG3lw$yCv3CCoDoBSWk1EplmIume|DIlnX@2x=WmkF5+5KrSd7T z@ax71puM0E#-)gok>MSiyG|lRcOr7KYx9m_1bZ0q5xf}@4?~i$7(u?>L$QaMwKi&& z+r-@<@AtD*+A4fWG&269_G7bapZYz;@&9Xo!jZ;~3ZDv}jz$EZujKywqd|h&CT;J7 zHNFU+Z>tVkO-*g#oY}=6MfaHSCY$Rp(|`Cqboa(qF2MIDc>+Ahc4JE5{c(TtdeEk9 z_hNrslsVg)0PYQ@y%PU#CsLydzJs>0Y-~v}h=Ml!d)*0o<-q>a`8)7@7|XF{M;IRI z2q1g@>HPzhwiD!cn_I^mR4k1(Y^1d&fTQ2OrL2;m2Wf*QD>nrP>ybGLR7)4)&eoQj z+fl2LL8!pz*>lJZ$sI+fkt?jshAUC#(a26&cIb~ArE}umH)V=ae^1X?)0#d3cUW}wI|44W(7|AiGf1I=B z9Ldeg zhXO?LtnT_kap8In@K3fzZNNTcShCL9ZPTO0#pu?nSR~tPQd4V~EQv#{+bNuv~#Ku@MvW5!9YNWcUTAKS8`F8;gF*H9SW0f3+AX1YzkPR0Np;cJ2 z8BwG%EMPF|ktgZl@+t6)`SNrfj)X60#g`I;5`FRAlF331me;SzSW}(XW(+gfaMBm- zd%EA+&KehMnl!goK{mJoW+nkEYgm9J@gDXpy%~S4-)?^Z%V;V95h4hH94pVH*zBl< ztOCRXP#XebPA*kj2vFAO*-)hLu&om0=4%Qf@&|`CUkO zRpKUKZ?zRGE^+=7X63zB=$w2P&yRd85G})z<>^?u92pm?y}p9kWy;Z&uCcX4Mvho3 z)t2p+uWN_m%7Y&j>=fF79MY5!Brbg zuGK21P7@n@;BGO!FY_2C)?p8 zZ&H3YHe7W0MLzjPCVU%@Y}-pTgO_VV*CDU+d>bxQka46EE9-lO{=!?K* z{u#yh)h@0#fJS9Jns%ZM3nLT?=KL0ie1Vp=k%wLMgEwG9=9cJ!^3>(IjadzbOo@eZ z8x?pIlB;zE4xC2$?(cBwZcjk)Os#x-Z*C=k*)@Mt_vDhO+inCMk zxhf24Ffc`U6>ET1u}+}QYh9UGT0#6Fu{+e$*4IrlNF0?e=9}uw)Y>F%?ntU%u?i{ z=-%G+D7h3fGe+=e!WUyE^3hH8Bcy%x?Va@eh!OhwjNp&^#xF)+q}-!Y=Z>qG@>VeI ztf;S?i!NfV?JDipuazcmaVP>3uNL)8|AKs)RsPxCt{2FZ#^KuO%7~<`fQJ$z_@Z6I zUDVW*73dNOKVMOiAc&!DRY}Eg@_nIZgM1MVXCeTezpjDustb<{S#_>G*DD8;a~09j z!REn99fyKaicOIXg`)z7=s;1vdTGs8MfdR{=NI?ZcuzoG9UeM!#uBMQ3SHo|a-q5HIn`f)4&YYn( zYE50;)M^kV+YxZ;`auZ5)Cn{Iqd?aKHbdB|HqBS9UXjfh1qDRg2|zTZ`~CaD?fVlg zIk^LW+#n5Xn`Pn%3EG)C0HzmOd2*D2_|m{8HWMDP+X)r;X?;x*D>z)E>1s(~?mNgc zOlZ9`JmfNEK;NBwpl|FTVGC}_|E3E*LyyZ%-)Xz+^vR3)b*u;LuS!Go9)n&gH z399t;^0oG;#Ny3?vA!kIvM1`%Mgs8EEZgYGmXs_&=8P^#MLAIa= zzdkf#!2fRpIZ#pvS6UAhnY5n1oK%#ZXySml+ynF*yZnWQ5joB(bbkm?@J#WdE~;?< z80A0_<7v$xY`@<>``x9%N>s3%D(6tH*a$JjpqTgc2d1{TZMHiPW-zk)>x2uE|-=5VyO(Y;Q+ zPh6-KT+9Ll-KJd#xZfbV4K6@V+@&A}-SREjy)1j!2FnSZwbro0wvzlei<>B0&GZHw zYGE3%up-1q*1OFqnD(_b4W{Uk?dTs2{{;^CPv&ep#0)gmHX4&@f;2%stM2+g05&Q; zDYCDErrXy`y9L9yXqWcsXgt~drQ(Ocu+bOSeLD3G;qN7=nY<7R24$Q_r`NyaJT&;F zpum}Gp6W#2t(0+f3y7;l1>D&~+qOP!Z_qZtdjSRh;_@Ufa#0doLDmtjAY@Cxt&oP+ zD@&9~j>qX6??vpw)MYoy1d**iVmq$)h&R_x?Bl~Actk-E*+-DZOg$AYxMslMrAzU@ z7jI7WnRnvybp9vp zQS9&+$e7gIQt-5NPM+ z!?mQLEod{*FHJ|t5rLKUrZbzqNsrzVtno{_&Ze&9zej<_l6Ste?6|1QDjyJxl}{vD z2*xQZGYC#p5PTNo35pe&)^wB0ul2)a#I3|-%Uim8;GZ3b%!b}kSbrjQlOeE^P1kH==R5fZ}7mtM$Taa-Rv#5_9+C==4l=ZvoW zNv@a1+tZgNEvGgy9d%u!B+PwTM=Ab)b>Z zCq038JVn&yyC~ngw@y?*q&fYJmH`w&FUc7YooMO?gjUOX=xpF!YG-|39rgL@(=YUo zp)x?11Kn;(l3H0`65b)tT zqm5h-$rq7Om&izVTI=b{1R$JVv<_Haes27n{)L`DdjW-UgGg`wsiLny1c|`c5N{?> z)ckThmdi&H5=O-0`J3|?bJ+UNj{&^1*=K8N=2xvEF0x%LH%fXfkwMyCOSnz+XHZ%k zM>wiSmtmaj&)#X2y2p1VgGUEpE?+=5x9qU5n-BMX!y*eZpfd?N6e|H%xz|}$3XbCK z&sP(Mo3h!~uUU#~LI>EMdxRoYGqW@1eK)a~L`pE z&c7P7eLLYHhV9}0#+Tu34V+$6HvU?bx7X0Eu~310^}a>L2emf7E6m|vJd<9G5sgoK zo$ZayI}Wz#Ump$l#Ms7uIN(oEV;$*%&77U^V!XNVGt^X@!+H9>CB-oqETc1L;$NQN z8zL(M**fh3#CTi6wc%qg*l#Pt(JfSk0(^wE^=%$_QnjPrMX`YtXG>{A;bW(b&*sY0 zU33Y4X+EQC5CYiWy{zslqCQ=41d#f*-TWh^ZOPznO-DDrM?{!I9Ys?0D(+l% zw02v7!W%v`Oj-q2>DO`UBr6rmy-LC}5m`!PvGYm>gAoW#NQyK$^3+i0T5MtCM^;wq zRkA7sWps&a9xWwSlo*yxEQ^d}1dk>pMVcIW&!$=yZ-SXk!QxZ~637=jgX!V9(j8$e z?S{_*?nVBKi%iQ1CTr&`%DBj;nWuo#C_n>_4K!nW17+!ax=k$Vxl3&pv()2P#|98% zK3ME>;6+;jC~)_w@jrXQdZ}y`c^BGwC5m;0O_cdj-iIw=zlN+BJ5>)(`%DlGNNUT{ z9fnF!92H7>eFfdebxyXCsM`;1^#pFjN=-h#weWH5ceLQt@l~E%4{fKC+D_^m@2+z1 z9YQ>lJcmA#P(OOHsfjXwR%Dr71TJrnS=G0}k?0ENd$R5s-~l+-s2h*<;<{)Y8c$(Z zAF$-{EDu;SQpO4THt&|_>{XZ~_57DnZ?VC1oxilULpdxz13yk+y&}ZjXMc9>L}qg# zF0J*;uI{s2ws+aw-u2DdH-5cOufBET1Gpxex!(c)z~!)?nOy_J?Q!`{9@qYyEeqPt zrrMI|mYZKQXm_{9(E@A&Snb&^3FN^DWPkAMGARNXreCQa;T$wUFqdwA^*FZvgUcxw z+Yb-z>$;psfARAX+6R`L@fSR_#WbbG+oL4lYo40Hu--yv=osjLQ5PRPNw-TrkWTO6 zD@G=9KTNA~akzMW$Y|`^(JuQr_msBia{Z8Xx6g1zc%h3>AS_Q1kiRAo5fC5QZ{3L? zJA(Hi+Aw|OyHBhS6eI*Mz$*Pc$5gBZmTFH_er%6^G^UIP-au%Ms&Tyn87fe2H{dv` zy6$k)(XZstQ<#9-50Xumh9N24Pv%q2SAF@021|GazhIv=@p`L`n zkm^5Fy~E_Y09bn3`Gkef&u4!7iDGH!`iaOVOzwyGPYNf`!e=M*Xjk$;_y7zIxu6y( znkB7C{o4|1_{Du8Au0!{odekd1pK7cNTk}0=_lSV&dm^Hk-28M+*~X;H#k@SJ#Ic7 z*86J^A3u@4u~uTJCtJ+6?b567KF`f=3d%JVpQc#BWR6}eE0zb7kmKc=f*#0`V@ziG z$V}t3Y=1a_OBK3^?WJfL?&HQq(b@&nP{>(g*6ILFpy$EN+u9QGI@UTd!U#UbNGRuI zfZI$G`WXg$v_&&Qf_{#z)&Ds4rvgpmhnO+%ylO98MdvRc+U-B}`_qp#aH}YeYVW&} z%B*(vO~o{r6;cIK{q-Ngce2Se5_gn!G)@?yJRr*T$TW+0UwEH~gRO=WEZ+x=@sBqS zwFWdhwwpEc`HbMVXdT-4cqZtONt#v_D2d{6AyH_8pV~cTd>la#O-PC~Ir7tkq%4`Q z#yCM8PvwO`jBrjM;w^TO-?+gD9!*G!G&%B?uPlzz?9gtug~wwA@4ip_w7_)ZWQEEr zJ{;x-$=o!yDJJQbK!PANAt}=2$WISMCyS_wMlzYmEjB2EN#zqI7`bs`2$c~$nvfJ} za^#;twE$W~#gld8b3zN@{~lE>gK58J{67XbH@+o%JrfOxQZ6Kl}2_mnNxXh49JgYxfSl0qz#- z#V&RJ@-Uxm@U{r5zml{XkSO1kH1W7Vvsi=U!b^^DqoF_cv>2E;NB>i%2=H-~a zY8DXGc(KJ1)&8OmnYewWpES}tb|(--Qa&gi*WcWAc%p48^?hI>T>995Tytt&-|ni5 zlKWmS-vXA>of8)#M7iNsW8msCN-5_F&v-hgeB4VvWT$tmG;*b%xLqddsP-2}c(HeO zMHJ2%q!!%r+SXTdKNt|Ss6+HbFS!$Kq+@ph63}{FkqrY}wozMRw=NJ2rg!B5UIw&b zU*^{Bjb{Nw-*g;0QbT7Dz3R3FSvUMVV7L-aQyselum-OThhMU~kx<=oS#=*rn zO)4O6JaN*jX@_23mtzOFefmYl11(rN=sy2TJNIxg0DM@=e#v;D&CLKA3AK2-&~_LM zuwtsBNbk@ZEOjN}A>hCdt=|5=j=GOps~mcN%srG%y`w#K2bVWgcDSz@I~1*q-Er~G z2F>8%8EbP~T|Ip9skSdFM2bSs^IO8!h8-LEgSyt@0UDjpNa1|)pF`(14ucV%9U6FF zG(kA)v|>#!f!M!mM16*Mkl4rH|F9$%9*3Jm*Q#-aVEJJurmOg}qZf|u4V!ve zFtYoAbAMOgVESYj^pulE#*69_C=Ry>H!g5JgIGE@E2YQ~GgO1OySLF)bM#EUGYVsV z36~)V!mk8|*c3y|#U4kDVe(u4{!J=_ucOQ;?VbaOv+3M!@HQTUuNlG^77e@KUD-rn zWd4~^5!7ZynYIh-l`$*^GBr>=!5U(1cu-pU$70*=rE~o8?s~-4h;>8uoKKj{H8$0u z7Js1zB`oEj8_c){Qyf9|4$3H6ZUQEGrLS8|qNukCSm*QSbsNB1Ja%=!Z1^%fE^LC% zKw?B9P~gIKWDS#@WT!6Y0yAPKc(gy>pxa+9GtlldqDBZlmLQ2 zeZP4)-Hs(&02*&T4RK`#(IK+HM(h(#)-g3nY)QG=h(z${EZiqWnjCp*(BJ3=^F@n* z11fMTt9*2)rfl?8XH~DQtw&MY==h|vc%<>A@bRi z((zL*O^9THhhQ1YJ=>kNOyJ?cAUIn=VDv~{S0;462hfE0I(sZv$2YP>35aOp$%*0| z`c2P+SJ6z}E4Y%%%&@8KcdB25W!`{LyZ^KiH*=J?u<&i2 z-fAn3srw}&>b-05vUqFp$?9JAkL{5ViuHNR_37gH#BeDuW4${qj_~+-fICu>uqkl7 zr?-etXs^XDpQQ4>IHK;Cn5Z_(--@3U^OpD0!JAW=rxBuvce?^op>|N1B>ZpWg~&h% zQ3yZ?0Yo8i{195xk!aa40wAqO`~0RaAop7XrLBoP0`nXEe?H(-!F9W4GmAeB7=*z` ze6G3K_;U(;0>4iYk@`+cS^qt6CllT~YR&~*N3OqGwPEcAtc$)?oBOA^z#TiLr1uip zr>Pvr&6sNXd$^%0Q6XJenTa8L)onmNCeh@u+fP3g7F>?(;8Nl>CB72EeX9&Vx`L_5 zp>yJlWEkpzNYO!HeGs`i+vA~=0Q&g#{1>3rX#k?o>QF_e| z2k(^b1nLk+I&s4%X}bvE?)X}7R}cr2DZx`Stbn152r6+6Y{?fz>roZ*r3IwmWf_>u zK99I3bN8&@xV>ytG8S-oS)f3B5_8ONZ(LVlT~o>c>!9bT)u~09lQ`=iyvRR?#7=l9 z%g_mLSYdPGp>wZu(dKd2bJ6JRhg@@X+(V_;zrw}rQ&zqJ(Id#TRwq42SqD=F>YBO= z_r@LbJBiT>GA=Lc2^f`ZFI&GccMtcZ&p75OU&v91cjE9;bWWmzBM)?Fa}EtUbM*Dh z`d=Hq)hTwX=D7ZPQS&jIwI+%8j_{uq>{=$TnAES0&&kU7Az9=Mj(g}>>N%HV%-yNH z=tNfdR@Lt4!$c(@Xc$r3l`5{tUOwOC#Fou``$PCu)y%{5-4 zaPr;bE1zSvQoR4k^DRGoo0*+eC{b>LRNJ^)jNneg}mBH0b zf_3X^YHCZe`q-Sltdd#}no3aVv%r`$V7|GYD2E-^SGN=63l#5gQNy({vLub0;`$er z*3TKM?>s_>#wbPFX~;XOSW%2VZZT_Tn&N2iFg>9-@nUwd!j)*Z%98j_JM;9^>-x#l z^0dqF3TjuJ@bJ-0oLy;(G*K6%xS`OM5K&PF zo2#63Ku=MvrRY_XYCpqpqB=kl$%9$k=z`4GnK0j*>&vEnZU|tL;wiKaOt)y)PwZ_7T>5#akk( zSnq!|J{@;y#D=^>-xiY5fju<@zXlF0>+8Ic_Eh;+??muz-^3id7 zeiK)pz9EQ9K}-MXOF`LB2XmmY7m?0-B5rAGC)qB_nF8)04xr6X|BDzrea z!tm@?I4Y$_VjyP#!WPXIdRBy$hsBi)&6Ntn^as2@*MmIcQi6LYMF9L^wWEF!zzJ6HFh7rhN8PgnwC&Y91$90wQ z`lR?VsD58fh6Zctf*Q609vE($dcr#}#T?V*x=KTT&UsHWmps=Do^X-(tTX9skn27F z%-p=+sdhdlWu!SX9me!DXpV022-t=*OP5mHJP?Nt2n}TlK|1AdPeHrEmNC=#p~(sq z&M9dGT2i(2F0+%X$=-qYyqFTD*u%Hnij+2OEazgmN z>uN?Bl*=QJn-P#`9&m!-4nvc?A}Jc%S9foC1ON(S$axzndf+)CBt!cd7D!^+X4*10 z?FDT4VdJviN!VAP&DlHimO-@C7rN2-EyKDT-d1>GlL_i#Fy26xfNzL=!lpSTq=TPe zOzI;C=cwELvEygpXW)Rmdq2r^Go}o&^HE$a9J(mO-&bP`OuLs6y5@l-Qy}ZgcW%{p ziEMr#3HI40c=$man%<$x4nb1V>o%+^j&S6e;EPBJ*kwSdATg!JPVu`pm9O!ZPr_?c z}g&Bp{;b^v8KfCx+)GTlcG7B@_I18EUw!T(6{wj**|1y}!gKmTBxrP-!?1 z-muG$C~>LxTa)L(Vn`SB@#a(%fN;3GE9>Ft_y=T?e>C_X2A_=8L0NB1TA3EE)C z<4~_cG<9pRIzFNr-YYDyyD-FIN!@ zh-sGnMe>0I2Hwgh^gH(-e}aJAFG$%=n0D13$gK#kZC3{r+A9m3cvnu?GPrwPz;G47zcGNaW*_V0*<9>_Oy2p;!Ei!>SBH5gOfPt8BCI z66}EjBCja)RZ791^=`4d6&^!(^}}FKiO_8)ZtcL4tp`H(PasA$a$j{WrUa*$R}Q4FQD(z(HQ7xSfU`Jsu$ifd4II z{&VSbFw2k+_mo7H=yY9m*SF4|I%yJq#9Wt(?q!8@NLS0V%;1^`8m&y7c{3Q@GMWDK z%jXhk3zsB#gIaT@22}^nPU3M3$!K(>gzie3la9}*<^usx1PCYq2Aw?MRA>PK2-%|U1Ucx+fwdL9Ge?-TNo*&o)-h`wJ;4u zldiG!M%9c(`@cUfsuvyqe!un1WOZrv(6%~v2(sMkwy_YbI9Z*hp7ScZnS)u)*{@h< zFwjUaAX5S27qzGO`JS{{tPnpwL3ZYWt<-N0h~dr;3UT(ye^dssyN|`XsQx*_#tR>4 zFieo)C$Uv|2sJ(8n2^8v6&nd(eH%s24OkF{1B+Va*hjH<3ma*XW|F}OG3Ghe_!@C2 zb?Pv^OFc+46v)hh9}x8Ka$gMf-3*}$$EF#MD;%4y?}IC7c9ZLsU0y5s@(~CBEXTAx zN;;TpLLEZ6j@j&EF_;yE6gCvGstS zOxEeKw);rz!y?Ca$GC^5<{^>N&u+)nG@pgOxQ){rMQIRUVlMn@#)o$yQzNU z!cs2;)-5?zt=c8J$G^RnUVv+mrvu>#7SZ(#MW1y=U`Y7D(=%4tU>?J%Pli?dy~~?v zy7`ipW>-qCu-R86m2AGIjj@`~Z$YLzEeO81(0((a{(gP%#p@!5sSWxLs*CE-_fk}E zx}G+C#k}h;%v3P8*uzsha*-}Lcjs9cKD#p)?m}{ROhJ)oH%bw6en9`VUdJ!1n}+EQ zxJXO2%6`2R(w+T?D4@pp-SIE%-^6)o>@ctfrYEd0wd8PO%% z>}!!9;AOpT_L|0fxyFjj@WUUv(fDJ7vc5=G?2a7L|McFWKd#8s^9?E=b(HwULBsMf zNonoYuYvc7C2J4b2L5;^!`D>uM?2Ykc6Xy=p%Onipyh!t$j;S;aSf*0*Bboz(HDC% ztJ+OAJgSs#s~QNY+9p+w4(IUXKaSffjmWknFUMmFPe}Kuky|hbke61W3ZS4%iWHm4HiO@BPiX z^tb50gvk&*C4RYP0vZa>il5mtEo8Zo7p@O7d}kEvDAkG_*cBO*7fJJ+rsGK z2YXHT`STl4k57Td!5bIAQt2Kk5cG^acEGM3a5RD4B>wmUyK2274*Xj5k3sM&gBz6q zvPh3pAj#A5%s1G`*cf9>^Y(Mpkvfx(pU8VjOsxCbXxI5;zs0D$$a?JER(Ev>CdTk- zn~&{@(z|kf6I!qfW3P}}ec(^7sey_&E);7e( zCdAec*8pVOqIRD1FCG7-^8A|A|2lqgc7OSVKHqlEtDtU*E@zX6P51EGv zb)Pn-Yn@s|WDHV&GGMA9293aP)%VZTzFNIjjs6AAX&9>Awxg7Fyz5SId^?pXY~W+c zYtwj+RMId#(q7AVhQ&PtxsFu8sGC-k4)WAf6fx3DZ>Y#zd9^a(Szm|X z_}CAaXoy98QCoZ`lVt;+>ui|Ly08_eJXt;;g!?r?^Tkgn?k}IvZ`z7Yc$H)J+;Xo8 z=k((uFZ*jVwf!^vb(lK-o#|T>qwWqBTI88ZGN8v3gFNv2M6OuhWZ;UC>9jb$NZ$Q-r5U1d*%QA=cz&usLO>T9QqIej1<%agzw5iDEl?K8x>j zANGP8h?;1Lk@U9va1J-to}qo-e()IMjb~(XWsLU@asUi5z68EBzvLYP!tMJl65`|I zWg&x>;cRT~dbLqG`qHZ0i0XtFX9j#TgYZvEqX4Q3_tCg*CfoXd29^D3{=RjDbA)x} z)Do>LCoxja@vHMsl$QaC#VuEQZ2xO#8?2nzHldnRO>dhX)pZS1WW;572tBOQhWWtwbbvUnZ@Gx3BEts) z_rcKesNbPdRVlM2<_@4sOU?^zoSL$mQ~u_}sJ$Oi`MO%%s=n(=B&!|vA~NK^knfRm zK1mX_Fk?+3TPclsILf{>tJVSpCv9Z^djkuj=MKjjsCAfCp>deG{S`o4B?)~~Ka8Nm6%P@n`BgFW zV}fkf$`t)_DO)VczPL(EQ4x{TLBlYzH}U!@>3S8?uBX3}arO4wYq?(k_lE6U?Xk>b z^-lZgNmuY9riEFmEQS90FAJFd@zTGpcg4IA#Ml{D^&&7p=9cG1&}f1KmD0~p2^r?~ zf{Zqe#?c!9@dBqAg&{WxtN2jyF+6Y&;BWyC9o|ifuUg5KYR%BFNx-4f(pR3J5=~h4 z*l7WzDTId60o?)s2-^{aJ(VP3fXxL%Ae1$O zJ!Uc~@dVk3CG81DooMLRbA68!;AGV!jNxPY+);gWr>0i9;uYBDyAYW~(*&eepm+ZN zIb*5j9*?H!|Kud%KqA1Wj%SpigM3x~!>BMrLz|#Z*r%4Hi!GNUATaHl) z^cC_+K$8U1(Z+oQJ}$j=L}&yPYr|3my5?QA9Q6Z}df;SrN4x|23&$iJkW2Q6Y9y>{pl56$SsV-}-mU~>HlX7)B>_VX zIO)$$PPb;pXACq3%ZxekU*|zC)8x&>#2w?BlcvSyK|d%VTFlI}gEL!a55}Ss^hf3D zD5_rm$aVtd1FSy&(DxV8;13KN1lg;8fQH{w-a(4T=(GWL_W|*Z5wQ^A^itjeBg$u{ zhX66#m`2cQedLu)5Ai+!^(?H?xc}9N)wLJ|%Lm(M$atmu(PCG)$ih_xgx0;d%f&iZ z^i{)66n(sU8l}^T8jE?V@@er}STDZ2zaYioSn#l+ z>Qq;BMEap+f*mxc&PY89K680TXswecTLURRbaeO97vzc)!E#aLTGMbd8Xyk$;-op}c&lwhN} zK;__bBOFZF7qFNaQN+@|7$)a^!~0++9hexGx+H>vTbOf1ZX0PI}*ellT-h=%DoJ zKY3g0WJqfWvgTDZ49C1Gi{q?mEeg}+xdN<-k=Al^@_7-6LHqny!%(g3K8Pfz2;y@9 zz5vXLKRv$(c-T_95QE46LoK|gCgB=PKK6>W!dUNcUy|=z749J$@iIHit#~e}3_95% zcd%Q%gw?VGYssDLb8KnkpZwKc!sqyKE{C&Ec>IO)_R<~Z-QNbM2Mn6qz9OHur`?XP zX&Qou9er*sb2}!_{6fsbTYhBJ%6$a#t5KjLLNFT2AjG2&?hKT1VA%$$Q~hpgCv|td z6LrI~O7qSrbN@rtB<~K?mlUwAnzreRIez97F(c=kTIt18e$`~joIX4GcltxZatRI1 zAVq1Pp7yOK9lA){%BKeV6+JgKys(}RDrhnkGpsSl0)%?I6iMKOnJ#Mi}<;A#xl`~KspsBBD< zjI;XeJ7YHpAc#PCc+bG^5B0b@zWAkBGj~)Io!k7=!KLBnY*Lda*Aoa3B>4LSMq@N+ zcVXcEfYH8BCB6>{uSq4=Z&DQwFy#n3xIPX!@v7$Y9mz5Tv-$)K+Z>*J`9MkU`oGa? zsxz8SgqR+=8VE#xU~~(PuEo`-^%kRMb!HD|B>lkFH*f4zP0NV4ZJVl8>)XL7cD0YnHdK z_sDz(l}O$nWl|A>YQ%SUZD{ZlB3b~;NMghSw49Jf=??=w&xfqn{djPVZ*Y=}ugln- zms}-ICLlKBG*OL%9iJ4@;SZF=1 zuH)cwMdga+isfaMiW7tOAyQqEx88uwvxe-=-%(VYy&z(;K=_++t@R5=G4&#ya`axGvcfkpGI8#bJD&A zxfT>2FJ5DFRkFs^Y}GOk3FTJn2^p@5BW-hp0&D|lai{OnXfIA_Vex7p$8Dsznme!g zbdRjhKG}ZR9LhG2lZCN?E}|{9MVF$E;jUSD%djldS`n@0F}g9H#;ABeWY9itKA@|a zl7LmS#2$XGeB-^kDx#fD*r&^Gi+nrtn%8gP zlC;GA2RvhK1~tg6z{))&TUz{~mo(69y#WX=+wBJiz;C)08I%+rHeU0s>HkpDt2}X; zvoxeM3~6L+W|d+@Ve_VYvTN`4ow?H2r=8exokPb1&oO8RvefBn5)y3WwQX@FgslD2 zXcECpS^m=siZbzym9zOhZ>?D4~Kes;v*h&?lF3kypt4%TMSpJUnub*>G$h zjjP%p#z5_%GRPZ}g|Es)6LHs%>+#o=Ei5uv}}`q&aE8(8SeXLM!|>bJfK&Q zN8KS9;u-}Fs5HO7+KRE3z#KAp>PP5WPwne3d7kjRovoTSh&cTJ^8P@ z@by{b!-g+WTWYK?LE5kd4|K7!{Eu+%bM_UpPdI&9>B;7JH@)7|f4RYft-$%g{=ts8 z0^``*&+bM8w)*a?;=SdB@*eQg?A{Wy_XUh6jr;HOKbCatL!=ho5N`uNfNkP8z}oj^ ze)um%d;%8~{et^ZY2e@B5V0@9Vb6W`{cpUAW)ykd1@mUivlbn3IFh?@Ge>MX;cG-8 z;d%Jx3(Np4S<8?B!(PV0HwPWs4P_2x@$Cog-^}4WU+X>B6^nF14Mbu_Qj?TLY6Icl&UmD90{+ z?^SAt?=C{2tr(4uOpTT!#H7268#!JyD$%QHLj=zNEsPNH<^u%aE$qAF3blOZD7k{# zIdeHhu1`2ZtssvktYa`e@dMT_f+o?I@HSnv(=d9TmFrGLbU~lDE z;;}5An|Yz18K(Dc4xf+HE!Z><>$E2SMRG=`}z9^Xk0OJ5w5T(@I@r%stNG-_fzYA^}a&DZo|G9(8XpUEEm0K zAb9-?vuIqhzdo_&+l2|ngoWSsB-ZbjjEl@K)&~!W^e!xf#qJ8Y2p~1`CtXio_r89z z>4_Xb;VT92KYr(zk(A-L<<}1|B0H1+;r(j9r|ZX7Wfie*mVLjMljZPz*-ciKpy)}M z%j)n*cgO^wzwp;Bh6R-jPWloqea0UQC4$qMe9-d%(}$&Y3KZl z?HFw`GRULyq`H)EHUFA3qt=j(EjU~DT}f<^AV6STk^veMEIxvky1|Q zrjRq5HB0%WYJyNoKHxD1GRh~fPh58XK4&h|nbdQr8NZVs-w(9oWx!;tRi&m#k(qb3WUzdRS4qeWo_-+@D zl1p(4E-vYI`R7NI@`!(sW?K`=%fI<~i&wpKy(ST9)0yaz47v90*PbuO5E882@7f0) z{c9RY)T~eCJfHmhO;&k=m7Ra3b!^2)nv@IaKR-&u_<8vxSIHrNfpj@Lf8ObIu4*_uUw`5BFZiRY z_U&yk905n^_>-qhpM;N?+u`5x!%M5l%e%nxWZ4eg z4qmrwOwcWF1xxG{NgZpcpg^ilnhN?ACb}-u3MZLiigs~WGZKj_VRswvC-JWN@6D4b zFupYXUPk8q^d;j08P;`KzxN7}{p;}QSt4<^_wX;a33LrFw!ST|?q?b=#)fc?UE4U^ z_P{;dct6kX_gc$T8P`q!FqiqUUT0h-lNx&|w>VZICs#4HD91)+Lj+X2ZF~KNyDEWk z2ILebgogdhqgd9YTAnlLS$jH5jx{Qr6U{9EIuUkNO)Z!Pr3oU((KGfxdc3!Huf=iCSkyFy^elCif= zx~2C{*SzK%EKwMfzy%(Rr$abF#oJTC)B7L_h6LAx+6P_rqd*~8F&r3H?olWupU~He z(9(~>AUU6^lB`0F!V;Y#UM?=z6othy3Bm1xq$efNCoQ(`I~_mLj&TXJXw$8Q#Llr# z=`oa`^GNqKJM-_-d6b|7lzA?5wOi(C3?*n&GEtn`fLG(z!Chn=!Q8@7snDvdfnLqM*=7LF2{(yorPEeN$&|>|1spP zMsm}hg`Q)qtY=3NOCVXrUkW>Adv4wf_d7ojJ|J*-?-RW>-{j`VXYWJ}5508OxtiQ3CBuIKAg`U;34o`$vhtwP*b|Vn@>1aV)EfiUckV>*?g?WR%=&-NoRHJ z1{{xV=jR5s#3l-?k!cne@U?HS3+v}&9Abdl8FL;0=6k@f`l6QeNqmmoEEeFYC68xr z3PcD1ey6~@RsmK{+OMt?pM%XJXFBjcAM3G}+LmC_X&K7^<`^>r{nbHT#=b8e-p2;| zLh?S~`sg+KHQ3jAZ4?l29>IqYV@H9iFq3F7>AU6t)Tl4&W0UrQPy=MG5AwLaX&zw? z@}1_JfPnJ|@~Fmc0Os5#y49*!-Ty9J~!VT+m3WN+S^)Vb6K)n|A#eJ;P zK9Fc2X<!v$n9>RmGB9DxK}5%2 zC??h+bBx8bEn{oo;%b~2u9swR)xu0+MhPI`JOXiJV@sd{#i>amHdV2>dswYyTm#5- zYm(#E$g_=Ii-<9kXfWx__yoRDXVl3i?FS)W#04Ad=6fg~OqxrAh|Z)z0D!p|p0W)d z1QA#x6CDlrRwU7UJK2qNn>s-2?4Er4zttB1@44=~E6Vk$8tN0Ki9@EKKXZvhlqwWu ziIPq<)DwzKS}ky}LCRND)}USr4cspq6~i{6=(-ZnuqI>l-H5rviN_jX&(1UC)-rpp zj{(a-rbaL%`*mq6+AF3u#B{FEboXoUC#}GLdt4ezfi)tW_7v&>i8#_StXhH>7ZO^Q zN^7_qqU{Y^5*8MNTfoxVp^fYCB7|Dc*27|`C~;R(YIJBc4hZP%E$(_6Ozv^5?iDTW zMh>RY9@@v0udYDdt!vsD%5W+&{+GYD1-g~1#*aI8mH3GaLWNow-7X4 ze=_1E$akK^<5e--)$mYvq8lN(St&tr=(O6BpOTS*~?nhf^Z@GFJsNUmRFIk$5T8tmX zg@^eEge4_?RFad!$H!ng_DH0|;Sn$>7{iE9PWl+fx7_#?h)@$_;)Vmwsq5*VU)=js z6{$t_!cXT);yj4-S4?r!e0;VV)ok!C6nTMUUi^p|ud9lcikho{h{V{hYA51K(UJ7m zaWl8o_VcH4hr%O%GEgEcVumshD6&2W)MUTPPSa|&wzC!%&0gNB)P+K(L6q zG}-LJ<+}mC`)CIJC_`~MxkrU$mnpk8^&o+Wr;`Xmw%-J~?Ii~}z92rG!^Ad)@LL;& zBk{S22@j^$WRasRUCm_gkrruZPyM7BWsWt2o9>%foJ|3M_@>oXXUQ{Fk*W@VYh4YbiXnsvM*p-Cma*Fe69Mh#e;Z{oJ#teA96UU4~!ldaOIL z)~1mq;0M%!VN)LwvbA7hI(gznVqSq{6~jTkev4tVHLmMx%27@)<#FmxJ$%S&Lh$I@ zo|NK|_>|Nb$)W#BAj7X?mi}mX@bLA=(?eOXshRy!hZeo#!~&)4wv_6U*RD=ks#6Bv zpG35I9Cfv|T6U`_ySS#sOKn{wxbD`uf0?zFihNhXUi2kyS<{P%aiX)2dv9H~IxL)V z@{5#@pO)tS33pNh(e5hF&7 z81c&d*%n^x7Sz}52E2y}bWI&~HGO7vnvX&|V$jSkfvt@_DkDaW7!k;ngRl`U7z_7I zLJI@59WcrFZ`{8j)U1)TUgc|G380d~Vo}%P<8tc2kc}U~7h`WMURESg00U-ffg!vV z>5UaDQAEe9X72+%X~u1HaCLyhtXt`*KVlIhQ{)>gXCM2kZ~kP7y1CkargXhUBb^Z4 zGt2tDT6M=|zb`LQJJv|GVJCQFjg%Q82ZZMF&g+vbw&et8_7>9m>-3(kv;O#N24< zXlZAJGBbCuy8*c# zc=jTgzb6>>494dSwT?D-ETU^%%r&4%LO$`u`-Yj!RT8OR|V$3GC zC7GMdR|I2sUcsVHY<)e{Q-Mv_LA4Rs?}L!G4{QDw4&9c<*d0k|*;4~Vi?Gk<0}>H! zIWXTz0ES?nFKQ_VFDmN*TaXN@w^5b>4L6M%h!D(P1ckw2Jm`=~U&_wka$pfp7;}BP z9$wx&5G`F{5Cek&fx#CA%gB~!z@CJzV}QurdliJD!PsCM>;)!An7>2w+UI?$@w>#Z z9P?>)(szoPDa_Q&Tt_?K;A~G?{=RX~#@l-(GRYeSyY!kU*K7YH@4QG769H-2d)~5<;v=p9sVXTRUAYoIbot}+_S<<{uNF)%oM6_6=IyGku25^i%x)-C zt1dd}nao=+*V`jIHwi1-vkZa&?ZIqqfFQwp2ivEh%g!dVvvdIhKuyIyH+k_-Sj3^4(f|^ve$R!Io*E5K#ZX{PmYS+eK78WtQe28}u3j_To8`IW?k?1& z?bWpqzrw&9-1xe&y~a0&kL$%bdf!+%W^84is3a@*_5|qe`aQjX1anw0o}4#7W$r>l z;^*+yZ5cc-&t<$6nO?l>574Xd=ZS`eb5rK$CF8J<)`uH1$-drhcgRdDN-xgHIFoo* zaB5#9TE|@^P>2hYQluY{y+*o$tKkk~2(~Al$;c>9FG@RiF7=!wL6DWw#FOoejc_(^ zrY!5_*S}A{@;ftB>IcV=0Kw1C-#NgA>1Hd8Mr9uAr+Y>QXQw75#^_D--2HoBS}907 zpqiK*J_+fP&dJ&5i>t+oL~<7JH2>&=^7196f9e0SCvbJM0e-Xq$lRDN0SECUytu%n z(|=i0!S8_gcM4Ep+b>eq6Z_p<;Q>5a2+#lh6#5>esWLfxOo~Wp?TCX8{nC`+UL}+| zP7Do2+JK^ONi(B^xyh5vP-j7uFe@zcv4g3AOx)iu;9wvVQL9A`Vdv|Hcft!K(M?6^ zW)`~o6!;lL(G=>eu$sQEIfE`bwuHf=$rqXbY<@=@bi|~%P_}CJc2c6|-{QT+t}GZP zR0ZgNi(Uza6YDoJDC!3c`^kjw@H_HB6f0*bEP+jx!dKw@jYY9>pE(b2z}b0r-zv~- zan@|*gd6~IZV(~{!~@t94xsK}^M8m5AShqoNZeuoo6m-+Lt1N94r5=SA*G0$F()c+ ze+BC`%FB2#EQ3_jgBoJ=iNK_GmV?WU2|fKF%<)IE49Pb0Ksg!%8K4r7)TzMio5cz& zw_hh&(0!(ch_2Cxetp3Z=_6x2Vs|2 zEVplmR$O5u9FdBQbe9C0y!1JBh*^zSYuDN}78W;`G(5NMUw+FEd^h5!^K#>RsxF@^ zM%MpF*yn#@@iNga!_%AjUJO95o3pcz6A8(CqXba!_D}saV0JaD4*2^jYNqAo)eum{ z-8Samj2L)io3<6FNn}Ld0His%{dh8DoG=lU98oBYatCERhd$5xvIY z_zl&srm7$R)VPg#Y@tX<7~q+8wb$_H1_Vn+Xxs?cSlc~6zQQ34&}a5rQvJCP4#6Na zs--2=Te}~VAX8sT`7J(n|d~PQIyJLM^^fCn%NBIj1UQn5<<}O>rT4 z#tE%YAZIYYP6t*;VO4%x59Zd90g2VBK&roe(7uO_3j!=-UybnHNo6UadY+qm726C8 zr*0N6K5hOITpu|ELs57^|5x-elXWoWS(ks?W@tx=X4#^BB^sZCPucM=R-}OyCrrh~ z`UD&a%(6iQ{d+k*^~88+76VU<3&FLbzn?;9bB$5I>3vV}R7Ehe^K`$22M<-ccOE9r za5uXil#vDLV=O2;?cn|3Tj}f!7$B%nz6etoGGrJ#Q zQba@ny5y0RoalP%Nk$}@h-#K}`ZLN$L=aW$b2D37Mgb9pf^vA4h76f!d~Y7!pJ^*Rpm9EV9satmsPn zP6-SN&a`+XK1p%DNvUa@JMkA?z&PTrMaCEzV2P;ML5JP!mXIbQ8~9+j^FZuJ3kO?K zrx)9)TNM#AGC_f6+yK41R*2*wrMHe?eT8@MU132vm9p!o(QThy8j$^0OvB1qz>pw9 zae3P28F{K_e28H)xB6CJY0(|KMf(qbsIt&T3v93`(|ph3NsjQaJilwkh)4a6zs|<- ziqLOk-!O=RxJlUa%9^4c^|Yt4K~2XKOZ!^-h-PJdiJQx5!Y7F1-o_w_nNpr89Y%B{ zEns9!7=McRC-oMGF10^9hwUuhZ`@Sa#i9m8kivuk6NY@skWU#gWyF*fu2|uUF*C-@ zqI%NAnpn$Cx)J$q%wdwo-n>J{gLA`^IFH87q6y6|QWar@u>qv>Xk;zQ7PPg#_4g^- z5eF=}{@VrUFG4wPO5^b)rb^R+BG-`gIGNyOTfzryuc`dih*9rE@?}uEY%}}wgo4x1 zie*<`_}s8>g))gE+yqIJK7LtX050L|lhE39z2uTFyDT10+Bdtt{pt8h)hIcBuvKqG zs~Ez#9i^-k5k?qoq){2Kv4C-+3j^wqCAqte3CzN{2-$%nlrj@$r#TWA0Bf$a+Toj< zzWu0y{l)k?l5`m7{G*mxcEx=>?1x@RaOIi3!3s+?mv|EM+bZ>D@!#)47V5#dvYRd; ztW6vyDe<3H4f8hM(b4@rejK!VZ?!I$Dqn?FWGu3FWPGq(a8R&={ssUWJRk(@Km;Nw zr;!30ENxzSN71vGm2)mhlID!Pk>0MuX;=`hGaN5>p&X3TML1)9eLKFW zhyq};_yTsIjW4IJ^mjej?aJ0)4OH2SP2U8meqVnsz749^W7leLbVGcmE9t3B>D58K z*F9UVsHNRsQDaMzbZRH?um@7p)cY}j864M98%PY^8TCQU??S^1G!y|Y+Q%N;;7Hq+ zZ(j~NsJ9q}>9I7T#ec1NuPHD2l6Ji)LSJN1guW!$QPw&8fb!>_4Mjk~#cZsR%ZZcF zfP5w=$yc7-nJGJ=Cs&?v^lllE$^U~~=N0Buoz7NqPZIXRjy#cLEc<`g`yc5u5Ap7g zKe}J(P`!Eb;EijP;YxPP&PsyB_@qAjO4c;Tm-S#P)ix(Z1vt3xhSF1{u64X!?!+YT z!S82Zy&6dD^}-nJCO2*?frsKQa^IRKGKV*yhS^p?4&??T*`ETh2=tIZPJEBOnQFEP zGLXhmZh6Lr>FK1Q46EnZGYbN_bdu@yl<51}^LBErHrLYfz&ke3z#Zz4f&FO8haNo6 z`6qL@vVga=*P`3ey;hss$mx`PsgoQlTzIS~z35+Of{zMWPk!U`M4<1e$Z!_j7pUy> z30I-HZ|T=5i$-p4G(v~0f5?SvHW#O$DJ7Sw9ql^W;o+CGLT%hz_OHUTFAr*uj4A&N z2cqlr`j=kLd>li}MP9|>X&rIS*8Sw|f}j|W*D(BjU|6F4!g)bp4~N;4{%U?9CYg+| z1{e8!eWpax^@;YXECf8C{V*x@7Cs^>HlTYBeVUDRuh|+$3(4TKYh~a;98VGmehqvx zQ^-7rj(-`UJoK7E;i4KIxI(R;zeYJC*v;eCyDItXEOkC8D7)?-3m=#y;{b&JeT z7f&Up$<=z?PC~tnR=&e&ZZ_G(ojRIq;k?KUEUPhNQB1&`#glRwtuI^vMq%#?Z6Tsm z4}(SbE=&%gMQvo!D7lLTOISojTvpIIKD}3mr&E2Bs;7=Mh+gs6S23z3m$gKpW6ahn z4LA6ZIo0WgmZh@i8gu*XV>1$DDr$$DhJBjncR>w`7`o;RQf0~6wxoyWWy_0HZ}Dl#ys`@jbh`q4qe<7wA`2Y~ zlADX|ps)k?_jwLunv-y^$|93Wk-aGUDa`47q&3W0kW&QF{Jd(cdGau0I6{E{hM3gBAl`m6a z$~}wP$f7o~sEsUYBZD5%lqr1`O_j)$sT%4bcJ3W@0_x^z2BHT8&oELem?eDETf#c- z1y!<7Ws^ZFDSX}1wl?&rNX1e~GRZLX`2(pwB0ntmJd zd9a_%v*mo4f~~V@Q(w-HDV$^orG9<@XHazz#t`1pa4xH2xAC)UzX0IExpCC;cyNV1VNa9t+Q!UF9;LRO!Bkh#T{p)IWg9W z>ChU7r#EDbM@37lh&rBwL!&IfuwJL9#9pqlmqLEx7$!TvRx%of5fkk@6tGn97s1Qy zLQO0WM~ZAvs`1h*o4>kabTe;-_)~Wgb;vSOOaGoXDK1>a zQKy(YDuiT-HD^B5=yC$5_gBDC9F?PzLXPU$Ca6ST&)r1((C)kM8n*a~#zm*))G%<9 z)x=F^(=pJzMj9!M$q{yiEHpjG4}5zI4WR9HGEdfrW*nyGCfj729Ft>mk^2v5koUCR zqN5&O>0`rW+>%Dro?o3X(WM#1ty$B!W*<)2|stY7#WJ`eP0 zXYQ-&u#?^Np2qHNqX6DUz6l-tuiU3At;h=0R0JlN5YGv~7X-w{W9bWtKRS1>qFm$> zD0#k@_ze272=5=UhY_=II=fy#p_ryiN>bH3;H*p2cK*^hVE9^UQrfJBOn-gA`o+Ky zmK94VF^LT^!>N#8jh$k43k7oSFL9i0RIkEdJQVr*q>t)a(z*3WRFKoS+WcQa?1ev0 zup`}gnlHN|m>zPXasdZP=@C&+T6!XY5uEk+VD)xW2aT-I9}+2)LGCF>5+*;2M2dkX#kT?DM@M1t9u3js!*CVZCs0 z4nS%lvBPX}gFZf%Hpn0OMv=>N4d)xg%%%{&sl0w_k1Bg8&We&Jo=HUAI)&Ei* zNB@7w>c7y=|A$`x7n-ySNQAPT?vD)qws&Ip^vhnwjzu$#m2&-BPd9sZj6$N+VB?Kt zu+u$GIBDL=$ZY5C=mkhG6&QWiHEz{grR=U)>n1x;Bh>BBO!&I%f=B! zp5|8y*O6KUK96M_IWPT?Z$5I1V{uz_wbf3Ujvk3@XK}W9h_fS78C6F;#x56uvY|3(m_qL5yq%~N)~a%TlmI(D^l&vKs^RutMf*vgEk2iZt+J2j2JSO1f=V&l@J#3t{T!2{&YO z!*`lu;(db=H|+|)*X5BCq9WL~+gKH3ZvOBmZ38++W2Fm$ydM)h4qq!rcP7MfHdnMP z1|}xRqYK_MLzrtMM_q?bAXK;$Xxmejbda7qCFo9x!9ZbTC`p{~+H(@YjmFi##@Tb} zeR8*1?umkZk&Ys4*8)!qZ63rO^NCdg{>IO0es^?;Lg|9^&Y9}uVf?Ij0)s-9K9VsP zP`|(vjaC3%^&>U&VsqI=vFbqQ42$b4eC3W6BK!Qo#L&m+{VvrvbgVqm*CZ9E8leTT z;tSq;h}&@h@Ic`zaH@-rrr_Q&W1F{RX3JTDRq;I7?r>_9X7Qf3sC6IHRAO*u1kp|o zln|3omac;ECNW$GoRgtK7P@u>KI zrmk~#{F!!JGsgqL6D$6T@>xqKiYweT!VNVOdb_Y-(Gx83stPIZFUN>td#*?88)ZCw zK=k<)tU!7rl1;vT`l!HGTw!JY+w%p_+__?p5L;MEOioY|?ZSYg={7Ix6|HH6F}o(IQ5KiE zq!lA82!QNyUT2^y@~;e@nQ}|x=vrvB<0#XoH$B>UCY)EZ6D9sIDm!9igQYh2UmWPA zkfE+LoUfkjxmk-Dk-ap`Z{U?TxinhUz$YnFsndTK?6VLrWOw+|W-ODFG$L;#v)W_) zLOH=v4(&XAFvj;_aiEB^(F z-;64zGtlG9o@G+P!pmDnKaK$g6jNq297@IzI#Pq!85lG*@0qR8+X~r60zj%Z7}|pB zK~tXz0wWT!qjIva7toW|48*i+KllZM)IJB(k@CUa@a1}#GLpbwpa{yrqOoxFGf2n7 z)Hap4TCr(Tbmk|Lx@+&#NPfKU0CC_G)o1{pnsaR%dvBMMZqpY)y|aTm_mY=;9nV)I z+%ozU)-vr|>E6nXK%Je-tVfGFW`XDsbWOlNDC^T1=|XxwgHO+zvZFIVU;t!zf|=!6 z7}~@dh8wBO*fwE;p~KS9-fT?Q3b{Y+*}Vp^6I+5?Mr{=9kSeCikC6BcXYVNM2x-gN zu!iDF2p3Eo2`q~+9V*)(?%m`Wva*T`IG{DcXQE=Wf@*zr>==DuGEpGK^Sd!Mab#Qk zT6s-Kf@0-s;L@f#HPerqe|FHCU~%|Dm_N9T*#$ z8kiWF=^r1S9-JIyAfzOv{a1BHPjs#!r6r~&rzfZ=sVS-|t1GN5tu4M9p3~!>uS{Zu zVpd{0Gp*a!ROe)3a=j6)?RxW=f8*z8vj$fGPX)ul1zCVc1^R^!j}MFlg$0fVhX;xR zvk44OkIx58gj6q#tR!xHgqozXR9+s;t8E^oJG$hPHZ7h$z$RqaV(;tQ;Qg`C<886q zLmYbJ9{!{3E zFg6WJTpI$)Jdh<%(<*T==5!jX#WaMw^pD&L#$^z*x6hVZ>kDh3B!dW;GJNNsQoiF| zjD+2N)o(^&do(iXc&UYmI1+iXSB&F+bpbK-{eW@qSX9-61VHnM?5U2RZ2(mR9wFH| z0wON7cGJS=E$e=N)DdGOzGl2RI&TE=JgtX{Xo2RFd4x#g**sdf>AVpo@^rzd3TcLD zY_UXBM2uKX**FwKkHM3eNx_kfP>WWd%h>rp%Sx1nBDoh)H3Z6LV81W7Vt>a#gx;-b zu(vzxBVY;jSjsuyd^BVgeW@A$_TcAa%4QUMV)Q`)#0(Xy6$6U^r3h zvg5ID>)2k!?RGrN1wXGE9#D*XtSn^qpZMc)S^PkXmHXI{bp|{M6_#ZYp)sL|#REv^ zKzyJOPQE>qO_jeWr`|^70T+Q&u5`M7EC@#wx=G+M#WdJO$=;Js672R7#; zNDF*$S{>uB?V06D&LZH+D$0Ur%j%%i6w1Nt)ReFD^9f_U0i^1@vnI#@*#ffeZ?J0g z7c0I*ciSfG@hC_b$Uex=jXdE>3mhlG;GG7$DDI|xy!Of_wK5+r20BiOM3LmgXRSiM zJW$=MK_7D~?7~Xl2w3zo#4+S?@w5I;s@|aE0O9$?X@5PnoZn-Rg;9(%V9HaCLyjrR zG@Q!!2afUtFy4&HOO6E3rB!28Ch1jq_mF6Sv?XSB@SJoE#)hX?iYVH`Hh&&|%fwfV zW+4zW3+7e6Ni~0YlNcFKwLdwq7;ZoDMFM33k?|o7@>NjM6K3EzTN-+WGZ?7C2eQkB z7lQZ&6&|YHd#V7;+FHb_e?70wmFfFjpdE+(R$_^Z)%TLvM{CMxF2eqT2%!`eWrp&+ zfeRLxt++-Ybc7Tu%1Ahnez*o*po-}&fE>0H{#zC}B6)}GHITuWOoo4U=#N_Jt^@E( z1Lq*-+E8nPe}(^=gt&qKrm0((FA*-nPnY8jf+2m@o{P4>PhV{&S)UuL4obH<(4ceR zF6n!@DkX{(*pw1C;f}(yWtFgd{hhdT&Q{{uS}2bT7_q#vKV2hoy|TyHWfeb>a@^E0 zvQ4j?);+DLE)N*p@jto=;r4LZ*gs`7``6JW^k^%`^@`i}=UL{m`cUZ?pT~Ip<_~oD z`?l-ZB`59KxuzFZiFH~8R9cIdK@&H?7ups>G7>FXuGATJaZogwyQ3+F*>5=wT74?0 z5OgT10+uk=(6#tFDgzHV=Jl(RT{yAkHPrk|59emvS$Cm)|61%NaB<+s^gq(y)KT#}Tk zS+cvJZf#3Mdi(id5txAj;di+a%kO39LQ=SX_}RY%mUXN>_eYu)I3^*rK8W1xDwen4 z6NBeSx9XfBYGCxC5p@>nt!1Gf!i>Ap?SCWn%`^|4QUXcygJJoh1AWoGi_?n<%pnAN z%F|B!Z3FcQ0l|KCnApJR+9^1H_L8MTwNQ(JWVh!1AkbP+l{F9&mLD)(Er0B7Z?1e9 zZMS?-yqo;=(}#{qK*B?u>v-6bblGapg%`7}56n0+nEtuxJpTEV)&1lLdON1ECgeSW zUu?w50+OT)A?AMRqSw@zQ+mwLkBaD&WB>#QV%Sx}40~mAfN+^C&sW|HKR4tI%62b$ zocq1qQ<_^b=&+B?V?%Ip7n<|x zH~;=!^CaAIfAH)`VL%eti4Q`V4_c8^ai*W$kc8{VL&qzyE(=MzEO4a${DCBZ(PM9o zQUm+#1Ts%nm_NR7@}T4^)KdZSgV$i)e`}L#4;D-xZEt@_9Y6-sG4e{Ch(qFoD@a>a z<09$|n~kZzb3?$d8(Twjc7P(k2IXky7~DPNX!t7k$n1-`9}4N8cmB4@yqJ@fcszJv z7_@Zh^#1xe!5F{u!a`ICuO*xss%SciuOKEo`p+i zxD5%HVjxJv323A%&X>PY&03VrrW;djWcrc_N=^d2sx5ORp@X`?kSn?E=vuU{LZY0Q z#uQL&1Efw$Lw-W#7awF(FrcJl44xo}rLWi|io#lq`mdg+KqZV`@QDJBmJb7@$?Q!UG&7OsR>9*eg)nb<`FJ030;Wh&9Uc{_vx z$U1D~CJTvU_gLoBHi`jkwT!W!=BTH1dZbxDK&Ru6#Laa=M3Hcz0upV4*ldFib5Z{- zaU+<-ka4~7lu`1jVeOFQO63g5eE2CG7b(T)Z{hQG1MCiP037u43zbFPQ37nJMjD9y ztd>N`MQ;%?CA4>_x}k(xgJ}V$G_Y`FTTyp5f*X;p6y2Yo=oCMJF{BAM`D!(&g$O~$ zDAtA^>fqu>{UEXo5v(>LWzzfGTm4SNk05;?aw>$UkONJymF_eTV3 zJ`XI)lP22-{E8%(A)GNJ{f+jhf)`m5q{)hWGhL!#p_Rt1dT9!t(VkR|;KqVYmN0~q z96wAlN8HlHVieU%-94)JUqB$^*dNT@Ew{)YCr%X1Cn+9PrX{vPgmgHwv&J$9w?sp;M20gO|VyUDL9{U@%zwHSv z5|)D3;TfZ0f-I=dCzZ(b=U7%kF1!o^9W z5b}x~;!zDXXt@-be>b6XjCYP#H%!9WN@6i^ak@^H6657W>LKw&XGXD_H~1wy4L!^-6nus`UM!=yyO^njsLaVu##rO=Bt4%n?UhK&fBi zg&$0z8Em2gi_>7_W2<8MO@D2M&`%}n*!|m!c&I`{wCJo#{B^QAl0LPPSrHPojW zm{%Hhor++>C$nx4-gYs<@V+c+$}`pYohnz{$QWLA1Ee144?pRjPkKw?j0gGfUz(_! zm;NTMt--6p$rc-ulsFM|G+M%bj;MM2IArPIOx$Z)UtO?*X=C7a;7ov@lIcbMiQ z-NG<==#u7`Myo}}R+I5;=0pg@R0{#G*&-XvElcDsn^w2Z_r4%9<;lixx*LqI@DUWh zC^xf9w{Zjtl#6(cq-_jayO;Gewm937{h?wA(c&jOF8-Ym)*{Bc>6JVTAcdx@?dQUj zt&kbjN)XH{Rgge|xwl_frt9$6EpU`@hMVc|8QNLGA**Ryc2K2JAICKdR>zxZt)zGamV43rVpymQ1c-Y~yP z!37Ryrm8H`5)#2&==6F<#^*L{Qiqo!oMsc!C@UbG2g(+7Eh0Hec36C9n7%rPlt=mvH^nk1@jcIE?#R^0Mb`u2JZ4iJvo*z@Fh zJ|9+PhIw-kc45y|t?4ri&&y0o2LFCHVnry`2<~f+iG+jjI|ZoTRrXhLJk{857`?Zg z#z%7LD{ftsbYS5K?xW`nx$11?fUGV?bYGaFxh-y(|W7uR=L19P9zTWM0L&(Oksx&omu zC&PW^nXI5Q1e~}m*?=rItGjY_TX-EwTtdo%AC|x8Hj`lk_juQXHf-vq=-!VOEWfk; zCVkb)4uU^x!`$@jDf|aAAlX_Mvv)2)JM_LCoCt>rV4g&S9l`PqHts<)AJaP#>b1Sk z&TpWyC}C?UqY=Ga6=g@p!Q``| z{+8!=WyC^-JVoK1Y{Jfzp1jP@jYl!urT!L~TbzOnbaP}zdMHPGgmrNJSVVzxUMS;- zrYM}muf&bq&4EUDV9OPfCWtm2C4bXi(pXKNNr)fY3PwCEP~lOLlzAx^EM?%74IFw{ zXgW;1yqYWFiWIzth`GD%!UEN1O!U)@`N@LU>x)hB z_4)jamEH}KvXcP;`t44m3-k8R(3BT6PSzmA(OTug7s76wc}C)HW2T+t=TdwlmBFvq zh4V6`#|R@irNva&Hr)ybUEvYqBqLhSz9!NL0CldnM zpqv{auYZY4#eI-QUxR3K8y6-}0h%&C4U?PdI1{HmT+y+7LH`nv=}4ivFg5MVIO>cd zGK8J^;@=II9;DtL>0Ex_u0GYnSmLCJ2HJxul1IM z9`Q!gCM2NwXDR-XU0`pkXZ}ocOVvYNPJ@vV(>9W9l*v+nX~bzhrmSRBD`T@%ku<7W zycZlJqd|v!IYuEwrEWe-8HVm#)*9$~9;#$m!d^^S*`_EbUx?BsSC9%LcdsD8O^zPx zG_AQk`ET2GS=B1>c0KL!(}YsNyo3r8oTh5TGx^Nbzb?Lkn}yM^1i~s@$r6zqw3uP0 zh?Jon)%muP9&PGt&dDj<#Z7#1&{|1ED@@lKkE%5_&4sGLPLcgn01{muave$J-bNSD>h%|H?8Tr z6(3i!?Np0d)3A?Mw0w%~V*!)Ui_c(|i5_Ru#S*ho*e1ovKbAqQ(+`=JM-{JPIwy54zSpf7Eo|X^AKE`qOvGF|pX_I6Wr7(KO}|V-w3{ zqKE<-hX<(^VXdk-ytu0VL3|pibHh~y=O`U+b%Akg7n6Kd7zJ_Ca3yOt3mr9LjRjrA z7fP)rZOPc5A?p2pa;l$|b#0B^a|9%+c!Z%Sd9mo~^ zgyZ<4P_)@;Qu7;vnj;SZa%Ujo;p3r0tvgginuVs8HFLB&SdLPCc~Z^cTDf#RhCF?x zz1q-E;_9rKh?BZLOAol%Fl!yEXrO2#6h6NUoBVu@&p|oR2RKR-f;wD zfA{&7BVsUlqg3$`z#A5ja#)bT5MpsL(q#)ONbtzFS`KqtR7ovXWXoeMM_+GcQL_u^r)gz2QRI!fun3ly~Jq5R(V2fsf~J@zR%3?c)s;A#V2JA7Kvg+DA@4x*OypoS7B z%xVty&)wwN;TLAJ@rEJ4`{J7@=Ji7ju&heL9r6t+%Lpw!@^=IPg%jMTEA-V%SuMvt zpf(a^b2+TzK(WD<*Ct%p*{&Jm|bfv~5w{e3*t^hfM|-ZyHuz8@;lTHAxC{H;k0mHfD%8igH((tA<38eW zS%RaOC6ae%Ue4bgX^9=yEkA4piBD=&$>SuJU+t6hwU`G2W=aDVAM+(_s5bh09HgSP zVHDas#Djh1k#&dIL``U3++$gSyRo{@cd{S1k@8R*ab8gES?;KR?ZqQF9*i|=oVF9vizggKTBl)86n zfFik7tHGk6%fC@yKsnMD)M#QjAhilrt6%Gwn8BYqa{K_bYBocE*k@~!$P8|!j7`SQNL~1I z)D%^AHE4Vysn=Tg7DX#We-sAB{+mFYvb!c^CLk`sJErcSZ6H|1t25$EevQW4tw{`d z3r38bH1B4UNW0tT=R7f>A>}cq$TPL-(^?>snVlfGR~LI-{K^l!mnCKR=%K9+W`Yrv zf1!a&X(VbIm0rXx!q%#(r`YwR)yoJeGhTn3%B()=J)Y|ARXmP@O;C`pV-S-yt1q=p zQ%BD&C|@Z06#-mx0IFvf7?yX{5NFfi1qxb42xBz9ARIF>3x8-!+{4VR1`nLBomuc# z1;2}#Xc{T#e>1T)d;EdZgwRKjiFl9BIvGIcpu^Y9*;*majk(xf5BmNI!4c}uiLQr_ zE($r44p@kWS&j!iybQMY}kaK0=ezvaw205BPGWt*y= zu&*7K@D9NNGL3OfBU+Z$^yeboM;)xYz;~1dgG8b^X=AlqUhVfD6XEoQX-8591yE1RL z3YBUCup~_b>16dN8NGw#BI4`!)M#Lg@!nNogI zN4KydOASS$B)hg-nB-z34IvwdcF>_Pzodl>;OZCR7itYEWQZ z*O(qdT?rx<2r`7l&4o2;FK%!Mnccw*BrT5;uegldpFDA|@GvIeoi5WNCzJ1SqJ6P$ zw8ZGkSebZZK zq(e>zhaXZ0bF#_%4V+PmuG8TDbyr#eE`k%(!k80+|oKp&-Z2DfI(cg`KfKG+``%%p1P^#Nc~fanPyL%d#0x**)XsNW(^k8Roj~1 z&atNIRoTc3(jB~qCV%{vq^{_6Hm|Ez9Y{p9y1}Z)R&JpmYdFy|=`S9*({snyor6Ci z@7vg7_G7C<$dhe_zd^oUY|33^4f_`F3J*LG&=VXkrhchphooLF*82d6?>FTNVeRN1 zDz)VigPxvlGC0yku08f=mIj`4AZ3fvJjXXqPRXI7Ljax=BbCO5EFW#(5s5_{!Q(&C zbD({9F?@Ep8DhMjZLTB@TcN;xc0YK#1-Xsgv}DIh^!z_R_tD#?DQ-Dfq;+~W6tR|uQtF^BnFFF^s2$>$p_oZ5lbA1b{@8HZ zzg~7WV>tXeZUv>g<^GdJz^S=tWS{U5Q@odPm!$4!aKo9FE%SOFKNH(YY4>DsqUC=~ zyKZC%1(y`PHaU|2?+?k&iqZ-n+HT=#8fGrszR0uCwY&};|4~_Vw_*<03HfA&R>?}z ztP&f@2zfsUG>+P#)iAG!xr}Q|)2gt<{bwFz164mOYufZ&i>3CN0hL{Q)r`*j1f}rl zUX|=%;YNG)a}~Nrg%*O#i?lZwU>R$1xu`G?TSY$QQ)-YiWmSn36uhT(RI0i6hZ`BU9Jf*6^f5XS^@Y*c10Vfe|0=xovL7fWL8kUovq7 zW!*6b(W+hTytZ3Zy=BzX<~;Ee?5t9~s+FZ7sF1^L4`*W9Ykp)F_Xz@*_o*>)x0LVo z3-n;$g1<35uGh3n)t)MS*4ArjdGCbF)I)St4zN<*@#V~G53f}!bnc&fVFUsBTI^R} znRrgiIwLF&B|F?D4@YMX?jPt2#MV&kv336F)%L2WG12($|MaKw_r#|fRhKRSGx{2m zxe*lJ^5$|>11s)lNJ?XNUvQ??!S;?SzkTaQ7yz*$Do>BB8>G(H7U$S$sU;-Ghy`9}TBV$0f} z-KoQrYYh$F(*8zQx@9P4EM4f)&!=<4^ePd_y1pt}BxCY-ymIJBwhfVrn8VoBhMJ_^ zzUu0^%1iULnggTTcyLRfW5tG2qZNMg6acT`sRP$&L_Job5%o6e;v)Mm1{hT zya4BY)uiFtHK|ioSt%^F0pz0%zQv76!d)uJ6BczDSc|>i5NO7A2L2PA5l|b990+`} z$!%P!sl!h2v{T1o7Y`imjbz00UniW}jH8tPgE%U5%8^Cfry>}R9F`9IWgNH$T(VO~ zBG;-^D++BP?J#t6Z^xuH;X=MFJCdRM2D@2)sEbl~7|isI?k7jHI9Mc!RK^bRnYhP} zJsnUnh#O|_7gVb{yVSFuLP=J;qMqePn8RsQvpjH{?~{byn#=D@8WIg9h4_ilJK-o# zSKdMWbW-w0EcFV>a4zq16 z`0)Bc&XFoEc_}ASt#=}v%7*%lcLHmcQrr2fLK1SAYR%WmAR!qNn7d9fBj-2B1rZ4C z?xdPSJlwm-hIaA~j%E(1>6d`L7LwcFvPT{dI?}eZXwEDfi8Rm4`EHB)in|`&(6-se znl&Z@CsQr!cFtGSu(r_C8<-^#E8|$T@#&Gazr0PXyv9Wj^{1v&Rul{f7QIl-x7W+RBuy8ihe;FBVsTJ~~3 z0^sGD0hg#;51HyLuhqvTW;-1#Xm9p-SOvC3y=Pym#u3~441?jX`611CP}4z-a`x>} zVAV0NMVzR*V7a-=kd)X}>7!~yt_Hr4x9(p&C5bRrQX~m0J|77t7HmwRl$?O7KfamI z?p%{rYrArg5J7bmBV9B$6qBMdFz=~Qm8&mOidWo2=X#!$b>>K($88@aDcavXmL@YG zI>EY}4?fM|qW+VwxD)Sso^O1f585rK`9U$iV*xk%_4BhOoY}040PZr~G45mkZgEMf z27*1@mIjr}nUxMaFP~qUHSxRWzKDOmUe%cz8e@XgR<#B{LX6mEf|Xs+_i^@fwav3< zHF^x028q^vK5zcYF*m7UI!)hy$LwKLDOKO<>tPEs-+ro0{4Bk7uVB%L+d<*E`&xG% zh7aT`NjnO>IKU5lZ!IN;MDb9@jZ#*T(QCJ`V(;i$oJ=s%v3IiVrqy(4e>2nhCc~F4 z+*+3B!=a8EEQaM4n>^z>3Y|F0XjH%A(G|%o^LdXiEZ=MVb?_r+*9jlz&+6`WVJQmA zAIHI|84eTkuK;XW?8F!>B@9Nageo77h{T0jw=(FOMWE%h;#%U?Y0f?3M@pE%8p#vg z{@Ua;JB5ab_5TxYW}X;L^)1}*&jdUIxMB)_Jixxj>9wPUZU`5Qnwg|ENTV*hEtB91 znxNh(d56fzy`jTc&LV|5w;e4$T&U+M)+Hl)3sgz4$y?z>LX3Y#Y%wz*NzmG%jk`G@ zXG})_kY$NJlEpe*Ykh7QST&>f1k8_2igaeXN+CA4BMQ6Gwp^%J*zAdi!PD@fa4ZaQ zPh|Uvc2l|?w1xqm*c?Ye7cnnM*yQnPhETR)RTg)2s%bKGlV5KDeHHr2C_vXIGCRTT z$g-_wLA(e}9a`zvTv>y~Ix5>e7c{Dz$uqwXuXn^_MPoVLO&HM`GzUrDRNz#%wE4|7 z2ZgmBwIg{>Z~EcF+MU0!jdrX+`s~39r)zC-Pps7JoLwl}n)zS78Q0?`n{JNz@;Z^3 zOCNr|HVu9K4qSVlf2P`BC(#=S*!9>N#;uY{4|8`~5$=sX@w)M;aYh4hnIXrK2na-h ztIBEG12L1PH8jB1j{JS7u4=`6eXN5Nh*&t|vvH-GKa!ezboNA})->IA+~6}Pj*c+I zyv!oZF+x^iT1vW#HA3rIY%JxC@eS$A8h3Z!YOw0sQHWV<)U;kV&KVxJDHOxJWC-a7 z*WxJ7#T%IL%w)o~o?&l^1e(OTty^0A{QssU-DRiVEZ&i4sCe2&x>^jKK>D$9S?eq9 zu+qdJ_`Gn6p9E!+dH^+WS+mZw9;-&Nn1ChK@tk&(@8$;Oj0U4~YQ6teQ?cQ+&1>W7V58iJcwA z*ByfTQR?rO%XU34Ilx!)vG#^|J>@LS;xF_KvZ z?zsFZt^Y}XV!<4`vfQ=eXSCmDXkjlk(|Q3@Xti_Ql{|Ke8QN5T+0iV2 zB8@%XP33Jmk$sFl@4aoI+~u%@Pb@d6#NVnajX6i%<{FvhKbYGd8XNtoj}_Im;l)Py zq2S?-2=&SJQBx~))F8&GM-pgCmNKM&nMX8ori`r8G$LA_ez)k8JhD-)B2iJJc0o8n zWMx&;&8AC(B3>22HWhoq%zbCx3iWEDLeG7}s8H~~qUyIMXErYYMz+=zA%d=cSpcSx zdg6T4OC+KPqmmHhJ(R9?jX}P&k?j_@3uisBTv@2q>6dYIr+fu$(_A)tsKs`=b)pHi z(&awGoCd-_M6IhxnB_~8ghp`=ahe}g9ELN$3M<;{elJ>HHnA$iipxLD1lbqvOJ07^hl5)2WrFH1$DVRO47jS@$&Yy~-<7LJ(8pYyH zvk=Y3j|Tptz@wTflNfV1u`^3Kqn(?nd%jXTO|XQN?u93$AN{FNU_^u>ar{hotY5_E zzKlk{yi@*}QyAZO7{oG(a~`^ii??zP&x&2-Xb|$$Qk*ixWk~CL8*A{0x|7Iys6ULo z;tcxkYV7?g-RvwWGs=`QmykKANBsq@Bo_eR_xLHCoN7{2 zTeLl~!Z+5i+cj{F?PJg1e(H!ezKAKAyG>e2^2S^-d%GaLB$75iCBcWBQ?jzyY4wHQ zqYTM^9L)Pqu>Z*p!OTfq)q&<)zfROjFC|yC&3d9t+&V|U$X@+aHiXFVeCuql@fMGy z)%{2iNeY@xQvb^E0YSvLK(V6v`{nJ0u$N+CAv`U49l@7%3uH}6``rdww+`a++~Rz8 z!oh{U&Aro2VG8|{R7l&<1LHN=V3_|7mZ>^P{G=8SlvQ%I-PbF5O8-M1DE6Z5r+-fW ze28YWX{4pBDftv149JFcch8pE~WumMpo@x}*KxFf&U zT5Ev_T9|1@T&jlnHjUP2nv0@8y-tzOf4R*UjyRt~w3$ z4FajtEbe!TCUBq-KyM}N+WS|O8C%g5>mBYV`qd>O-b>Zxm7$?YTKsmc3(gMOs$}n7 zCSl`tL$MvMeRNpq^o~a>w?ObW4|LxwLbmi&LSh-CeU<}&?!(4UWBdgvCfybE-dy(b zfxO81Vna^mT02w?rg)D4fx8uW(-+dUmci{WKb*iHwW)BpGb(!Gp?q2RP*taX422K= z+XaextU?f%7moS$f%uO+`5m$VOfjeoF#?Ne%N3G5Q;N_Fn5+7F&@i_uS^+WOWjv&EKm#7O=f<~%%? z_tt;f)t@$LvJLb790%07_93=YE!97}pU%bSXmcHB(fn%{?y~}D@FgQ>Y2*-M_v~d% zy*=sK7V#&~s)NsWk~ciBJ;$*;cewC!>ccRNHcvO_Jr)!6ZO zNaIhJeQ`-#@@L#_4uW-$HXr5TcB;o5JVeYzo4Z$-;92D29%cG_&ANNgA;HcTf>}~8 zKc3xiJr!vz{2eTPegC*qY)Y)6lH-JONRK2@+>M3nMVL-&ytgH;cdhcsJv>w8AC|Od zAcN7eGLbSCJ%Q@QoM84ml{qt4!^>W9C7sHzg)m-Zh9VugwhZ=q8W;xF!t+Xw*xxQ0 zSG{1**w$P6rXrO!r|O&!LSK&{ZyJNmxI-*aX~~B|s4q5-BA*&<6UQ7dq7p;G!WPS6 zr6vyNhI++IGV};@;U4(P6Cx?+4wrYEN*CYwASJ)ynAXoto1N%gyl#(w{bXlCO?f(v7q# z{_aW1`5ANgDV&)CsbI3d>0~&f?MD(9r;4EhZn9kEiU}_%<3H2t*u|7;Vq&FfNKmrC z>BZ2X43tXXUKzzDl})Pewab!CXakQTswckqj2ZiwfOEhWkEi(q!x4{hXMWN zX%nEfBc!p^S(-i8hEke|t4l~wo+yg2h5>_O`<$RoDSh)Iwx)lj${qJn*I+fy<}fzr zj5CYz=Uip-AFI^9;gJo+ScX8moN?vP;W%;puf=cu#NGvaEb=GlVU4!kQ;MHmBP2Sw zy(^8LA2-^wxH9i-@p6Nr3d`g8>vmA=vbSr9H3?i7X#42eZnQe9OBP!3MjX%8DmMbv zqIb`P41-690D=cbWCV|ydrBN+Ct5>%0r$d)`@VWYL&nU^dbKnzI+2hT*TdAg_7o2) zZN&_u2<2%wqBb(jr_^TCWc5E#borP~z6E!IO*hG7UFVW ztej|_FO`?JF7#h9dRAKbh1iuZ^2*D%+Nv4{uUfyKN9`&Jq&JL=4Ga3rr^3^u>Ytb^ z+y$_AYp~{xfK}h^09v665-J7l+lSjCN%}1(@AgblJ>!m5reeg~Q6@K96L2&Ue1EF;V7_s_>v$M4aGb{F)MpilBxxPC4lL4!Egx0V1OO12)}WzNtii-F>hz7pTC1 zqx_F+%W1thcXP>UzsiiPKxkr?0}b|eQ$&HvQb2!0V+U3@EInRU68P?C(N_aI)wDHz zj?WHuvjVN&2$A@}j-e^3>2>bXfN^dAq}G4syqBT7>gS0JQL6167USPjArp;GZr*L? z9~1q7+=qEcMV=Dp)k(ur>tYPnYrr~}2*fU?6axmVAD}=wC=5a8JAEw4X0(l5=okKO zFGp+h8MrJHW>{8So2#=bs3RLwyr2>}p`6psL%3^S=CXq|ryU}b0%1HH`2!-W(W4sQ zuZ7@e?)-$trKl-jJOMwAyZq?ln<5ihxy>-h`1>rW(nu3s*_U@yz8$*e#CJ3ey$ICG z*+HE-6zGUUU`=O;#X`UU7M^hH$nVzz)+7gau8l$SL-oJAnab`1S?O`w7b8`U&Ef_* z7g?_v|-Z8i<)oH@#H^h?%AaEaLW-Vf-8@pED- z)bxHM=6}f|uLUpKV5+5k(KMQHf#Zaf1H+QQD2Mh>$t*=f^UElBz)wdtu7(<_w=~Dc zyxqxY*C42%bvyiaIsmZUu7dXa>#4yq%L+M(G3-3_*x0$?+kC5&#}gg)wK~`N$*cPX zCp}H^2l4|u!glo(eiud1c8Y@F{BJRPDINf={1LY?tvQnp$y$0MSApE5Uo&%h;GL6< zZ@@V~+K~3fxIkDs(vGk5d)Q=#s~NgCfpmOYtzV(mLeSqbP2)werJ{fMJ^rbb4M@`&HRkX`io2BA8&gpDy6!Fj52{03xH&dr{ez#^FYeWUKz2!9Gg5; z%-w&aAS=!cu&p=y&Eu5=dStCVsFmNnk1h1l3Vh6aHwDZF8OL1N#zd7{J-s;a@AkJ~ ze|nl*fGyE;!HBC(U=_H~Y%&e}lacA6PNYk(W|Hcq=ZPNtxJq(1a^h?>BBX4-*GZHr zQQlWD$G6f4&ZmbMi)z2#_UYU5u#%6SD=^o|^giVvirc99j9{ z;niye$I>N&a=r)5gn@rNd@LbP)7-+|#^3N)%KYCl)U6VCX~KyYfZYaDLY^K?7!e!b z@=x8xW#G_>5nHU?tZ>aYA1e+5iC>WT^+ghca`{r{O)Om^rT5y3I>+~=pO^50ZK9Z! zI^d8gn210?knQ(l%FRqhcd3jp9c;vZ zThyTsEF|Q!ieBf(>W{8oeXflFSIEunE3QMN_8wX6U@n%PJ>1a$1&0K9`-nexc@$^8 zcvg}UWl?!s(6UzL(2BPdK}U2Dh#RqG!3YIVxbcV-YtGnPjuF9pgqaqc&h&TN^ zKS)(oKr2YO=hHn}W8k$?RFf#;)bdn6=_D)PUH(*qOLiN0kVDQvJ8K>PI!N4A3@l_I z?b0L=6CX-J8c_k@8oz_rx@5=Ca=x^C!@0k={jh2DYBb~6TEuoFr9QHaw|}FzHMiPaeJ|5-9$XdH*71OF^&-SPQsTg9xdu1P9($hZ-+e zXYtk?#2C|>hX_-l7?@w(0j(WT!}iuL^lK=sU7_aP>h8I#dz7#46H@!0Bm;mbG61-+ zMcj%&>04S+h$XBQL#&^v#^bFlsQrmxD^Mc11iGtv+{#Da=37N#oz=985nGt3CURGk z<*S*HD&_x3r7s|o6>P^^c6f^aal7SkYz5{5=hP9xclMq~hDjJDUqi8WzM6$%TQIO) z;6!uBo)56lpdf_s?;Tir;qeLW+(qGmwTT^4Z~PA((M2*LPelaL*E0klpgs`H5Cka& zY6Nq_Lw}vLXTXYO8HfIYpXJiCiH%r06exN-(ad8;q2??Qus|PtZnVaE3 z{3f)DAtg3Psh95Y9)S~|8-sSqaOi`+ZGi0KO%muE{VX282d`rFdyep#Y?OGs0R=ew z=3wH^!e=Ldu7Xee%_IsYoIw+$=t7Ue!A2P5)B|bSge6US<9Q*+Ja)$8zXL*Xa0)zR zczf{a87Nc`R$v4q2pS(`08y-!j06nFCn`Q--{9VDXBGT_0Td(Up- ze_K9yaSd#-;HV|QoB-!Yham7B^E@_UU?Lca>>4O4|Hbz!a}Y6ALjf}v(1gl5%wq>& zK?Q1yH3l9@lsb5RHF)#{zj&iN|F9$zqFv7Co4YAH);~H!!N2J%I?WReqdxoghvV<1G`aC!QTI7lMXi@N+9 zTKR1*V%_zT)h3N~RbgN!XbT{r<;*v(Wx_c-q(JiQ#Nx*ye;8Y5@m|{hdLMsm(DpLzCziCqH*|+!(#gsN6a4 L+>Ia{9+kkd@w(zRKX8-^H|NsAQOBS)F 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/ZRqizuIpDU%KClWm_#l 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�tU4x$|P81LB#v(l{a=S!U=gIB@IbFm*4PxGt@SnhR#C4M7a`IoNP5^(5 z?HM*+NJz=a%ZQ08$Vy5JMUJdXo0HO;HE-D}yLFpjK`1jXD>pwU;OV9Fl*~yV`Pe5u zaKdRXk$56I?HwH5J#csek<14KASCp@Z6P}$(-&`FeHnbnXe5)-%*L`94?+f` zLeOE@a9jjFD2O`4 zC-s$qHZ=ZopZyk-otkmf7PsU~RSrDL2|+KByoRM8ozx_C``+5JOMTrz4 zT$orHGGz%>DMz+E`3e;B@)95bonRn@@q)R4GvIdQ@~k1(?If+n zhLjd^GVI>yZz0Sj19a0anWVgiCR4ugg-!}?&fvhMv{%#(iL<%$F-ItE=CrX5>ps%nV;6W)t?r~!L+M=U@1{QWNL=V z$E`T&K6GSVfQ&ohyiT5DQtf#FUX{O(x@UTz{cJYyDH+rBJIwa$k+zQI#}&dSn#k-{ z8QjC`76f6z&e6hN$gK2|EQ`v3*E@;HZgK>;P7o4r%pqFXkPpMoIiW&=WmN}0cqvTV zirfPc#D@+hjJf@mFeGFVM*J-9@NsmcAE9Yu2<2&W_ONZ@Cd$w9{HiJMFUOPwYwSL1 z_?RvID30Jq(r@7aL;=(NkyBA;YZ+bd>>BZ&S*f_bpJePT9f~xcnbkK8FNjoyh|CTY z?`M4P@($Ua^Uf`)3?oPR;R`NLf0U74?+ELow1nCh8Xs`oZd5t&@mKi`?HU!_$m$Qw zuL@)vH1}|L7YOx<06w{>=V)fXzmB{bo55@?>IyabfO0fTEQ}ci1V1m!Wt^!fFHM>~^z$3m zsH{Ypyws)6Ucc6BKm&|pS*zXM#c6O&FN14`!gD&+Sfa&tn@b$OnBTjjK}zBDP}b|B zvc;2rA@(|zepBtL9ZcfL++rpTGf#7)Zg&$Klo~jv2fgzI29xlD6R+1p9C(|UBRy45 z_Ziqe$Qyu>=gUe^u^Va}m%6*}d&goZalg+%-e0yMg&{^Jh$AA1=<58fdC`%z}O{;a9`>{NX3K7g7J?%=YW+ElRdx?tq`L;&^jZ{pz;n$s18SnNXjp*WR z*&bMkzR3|l*l4&m(u~NT8c}^#$H_23Mx?$1Bf4BQ5KvG+ECM%ypgRiqVnaI~xYfjb zNTy3IAV`7@I&J&??W$(QTI#3t>k0or7>IiAcabUxsik|e)4+?2agW{SAEfj94_3fo z1mZAolL-(?yxybx;hizT2EcZ(rLy1Jv}Z=`wI=30WZ7>;hNky zBiyz=3kVl(%10%BAmwbb%XKX$!)WOKDQ1mO?~{~exyQLxcqHfLvU&5@>xYNCJMv5; z%=&*9kZ9OA;ugg_E>!t0W5}S8l?_E3*#u^1c<|wdLXqppdNFh)t zUC;ECrvbc9I5w^AhK@{?TA2mt_T40cN{BUpi?KFEl}xiSM_^ftnH?O1K?&7``CJjn zgJ;6pNUwm+mPBkXBqp^YNNSLeB7z{y>3 zL5Fn3GH%D_U4$T7Go>QjqJe;4%xMO)7%~ZJa31>V;ZaA4a(%giv6Z$6f%o;Yqji)q zb32`m#}?UP1PuW&-kRCst5QMKtT{zD@<0=!h0U7xB=^wk6+Upw6DM?^*nJkrGRVJ5lwUjquuDRCF)c zBpR+9i-kl=60)G6sDI2tOOE`YCy5Libp{%f5*4(;IjYALLoF&av!mRNi4hhpQt>q| zu_&q62BSQ!H~M7{VKAuJ#jtabjS0sbX-Jeb=p+jV2DF_Tvu6n?l;s3OK@mai9**O@ zQ3lm%qDGqf8=Esy8SO3AHsjAmAoLNg5nlfrV4kE03%5FGn^?}@V;8M-iMmgqIT_{o zYKx7p`<+dmxm?2|r|q?;F?b$u+{_b%WEgZc!^JxVR7!dFz`y0@)piaAzG?!+*iWP} z<RW!LZVo8{BrrYX2|@@#B(b!Ox(k;Zq1O zkc=LdR@`ee+nD^Jf^3KjOk|bm%1qiY;ckjIX#W}dHR_@+@tl^xl$$Dg|6_`SGHBNT2V62L>S(jUM6MkV8?0*uTZ$Oe{)i>SWg;YZ$-vC4U1% zQHV)a;Xc14-h|CQvfSYI<8Ckj zk~Y^Jhq2{7T`yGgJX5_w8@1{@UZ;&iIBIa{z{cV~xjR0N$Z{i~>4xZ{Cd3kAh5Biz zWu#y5Ld&#sgQ%h)K5@jWjOr}pDj(* z$e1$y%Q$7EGAUz6_1plPFYK44J!*DpVEM%!aR3@hf`8GlmpYf+{M2nynP{KOWjDgD zRA700)dmxo2y(c?p<)dtDtC+mKpFWbkQGl$ab6g+WWk=Z2Za>$6pWR~#{|jYywk9&hfEIVa7^qE~9q!*md&XDZ6)!%cS2}}CcaXt}pt^dxM7G(iz|j|y+SRC_%VQNe zb`mT~uR9+E?+8_YQ(sTCj*R}NP@v+??Byz|QNxjZcv5aaZMU|*RiKh5)eZ{yCafek zp;f#K4p;jXTdI37=P2oXI(Rbk-rQGq>=dxMm{`HT0UAoT3^Ua|_~g>TvE>VfoE zi?fq5wfr*-q}cvY%bp2#5Aaqj8e!CD$-L-*swa0#eFiLYopOtDg(!B@vP~95FNXaSvK4zV zfeb0XbxD~AhYE~i(2Hh0%e1w>)G(li$h~bw*4q)><1d-^Dc4MLC(LyQnk1$5ObURu z9~=8Ob?rAOP>EB$Z%hKpN5sf*1p{`#q~raOOuQ_%B!&>tGn(Y&!HEuE;KsnX?vn30 z+`=e7X+t|0_eT_KLF_vaG}tfL1jc`%{nXKt`-U#Ca?{b_w|h{zTuv?Y>(JlSa+e9b z;#+=gUr5v%GtckcMOCN~ox`(Zbdpw*dEhh_l^GfH z7mY?VR}Ehf!glB|?>$w{iODD{aYkV}POvytROl>YmJQrKQjVVbQVVR>@;7E-|2ne$ zfQ$k@+L%R`IpL5g{0t~Rf<7t7+Na0sNT6g5|-o%FhD0+;fCL4)ucY!bW^T*{ngx&Nt#L%L*l${sM>#F;NC2rOJU1 zXQ&aQ2c0|c+WifBHx{s(Z~3D3-Os}JTpOGbGaZP4F{sR)$6Pjt#hb@4u!Qd;4`t|nfZAPImj6~xQ62=;NTLfazPXyOJfRLYE=Ahj6dhjlJN*1HYM-Y=P z+*5HV$Du>yxEn9gXwy(mR{lTg8x?_8POmbyB#}@N3_wE1ShuQ$^PoEaN|-Nf^At5t zE_@7@J=NL)DIZ}jrm{25EaDnJIZskmSSVT{cD1%uq8$7_hUN4gZ2)kmw=dt?&X0s?8TRarVJ~xjH<7u3+sG7$2 zpzHS#(>?8)j2yvi7@@6K?@88Tm4*688+`S8`m@O8?J3fO1?=#yvudf(B`GfxE;NBu z?!qr1WIGV=#ib-F3Bpv$5wGB=otCU zY!M;Edy0g~xt`*`7Q*~U+W`H~%p*g#0EZG;Yf6)1>4Xtk%rW}B+pWf#2CA>M*4poS zp}z8Uw8pPjuP(2>{sMlhDDQdmwLrN}f9dcugp7KBLwI5yi=<|gJBzCYI|4~+dyfW^ ze51lL+*#q?xAB7CjGwD$X15r(2^I?*nkQt!zNU5l0*L3(tX)*6$o|w7UTF)T_AEjz z%-Y9H+nab^mI}n+^|2n`9+u+BjTLd~!NqB&eu-z|FyAKiOFnxfs$EMh<$^=8yW8O_ ziDgroeJmjTtr5i;!c(=2$k7+Cp2CRKLE^T%Lomnj9d3eaf~zbts3dj<4m zHjR}?4a667i|?c{-ZDujv zp)u=GkZvs{{ z#nrTUw>q{Z}0d(gALQwNuT?c9fL{pp`r<(Em_Ns;vH?+Gbhr|_T zp^J#__CdR5!6t3!ODjsl(myp*@rX`croA8BzeE(6X5{Y2NKU{qQ_EZ~V8YF~7mRD_ zwp)FR=c5LrQ5QIzxHbO}1JTFd?}N*pF2Z0O-R^2uyj~_~`1jEF!}cu6rknEewbVbC z^Dtke>c8@OA3z%Mbp;ri(xm9-#vKdjXWOTOk<7)T@&GviDL~f0w;)^GqV3UuQVq2m^*qtFL{KQoVEMPg;F=b^1zbU6hgLKK%_R^|1YeeaBtbWH#~Y9wL2?=wy4ytkMv!NW}HR6gj! zmeqkk9|HRVtd)kq9o#ayPfIs-X{dd*vg`}1Mdww$ig0;q@-JZk)$(}}&d$zZF!I2m zhAl~}x?nm$U(qjYctTpcb_`2vJ_RW`{h`^->E=YIBkE@mY=h59lrCw=vtdvk&~x#S z2Tq~x;R)4@sUcv}=0IUAMhgqE^=nD`()Cdd@P;l4J2&LKtwfcxBTU?24ay`ino;?PnXPCG2xXCQ`97T9#DBy}Awgm}n}mRVGlKf6sv zuS;gLNxDlk7)HVQWaE(3RB@v$|ErsdAn;@AI^*f$Z4{_c4EuJF~ z){dBn6YQ7`?s796xO|QKt%dPCX6X~$wG2)mNFcEE3GV2;-dN$SRny`QbX0 z9GIGHj3cIG2tGR&OUQi+g)_2Jey^cH3hciWhMvbT9gia+GDiv9D8vANnpqRcY*HJ_ z>ZcsYV2z~z0iC#6aKSLc_K{K6!iV-tTf%zz4{W4`pMa1MoROG(AP^Q9CUS>V94tm&|_h^-q$` zBm6Clgmy?HRLy*0G*un^$|}X~G|GhFxeS@GdjUpxG-*CD!gDKov?H^tDt1~i&X=9O zFhR{euIJ`>e!@T$#QwbsH$I^Jv`ncXefS>jjz5f-l*S?CjA0EiyMX^hxj9Ixs; z0oA-&zJLw%^g5R6pt@7}O-_dvf(#rR~2v-GQl4_B_QcfGW^M&yk= zSB1l=~C?Q;UjlggpZPJZX=H)$B%a0IFRqLKb}iI*j0l$bo}IaUCh6)?V$sAlmd=4ja1%B-)t_vW^1_*DdpiJes;aUe zG&`UnkzZLebxHMBNzyi-7c{xVg7?eT#T8a6x2hM#XZejwdjIX-BfK5zt{=Wjvmt8w z#_NV|x`jlsVU+|E>ve3yxYr(Pd`Z5!aT2RJ{kBC$5j({(OY2KA!7?A^BBfK47yP&A zf5e;+1j&{i%I$DuQeuVTxj;}{v#K9AlT!Wy*+W+D=Yjg+O(<8+_sd8Dd@EQs4LJ^Uf4pif ziaA>06Gx#}WhO}{u**f-fC^nU+Aq5gR+n91JLHt5`inKP%^>SFWGm$=#&mtN@)s3-9|qeQ*b#WYSx1!rr(x}g>|1fkQJOlsx-b{c~VV$C}E@4abLkbZLu z+dSs@^4UHzcg=XQ zO~N*Su0QCBaJ;i|&&IkRbh*{_Qft0|_#C@)yF?$o#IRwxvbM6$aPME6@tq{z6W_l# zy#osI1ww)Enqa-W@BK$T7^WZ%&R~bZLktcKqPb-0-wQbkHoqu@kg`w;P2TM*SrW_W zuqVxxKyYCQ^3iDH)q(Kg26C>5s=U?l3`6=vxy)JRX+P8(>}^66Ryl`bK89-N-JUgk zpXgf`?YcR*BvrujR+(GXEV(jR-olwWSaZtw3*k}Ru%pKZVx;OgUa+G}HJ;B$V$k@3 z#`Yyj1oOibZX-nBwVH%%f<@{Fj37y21$zaCxGd?wae-69puyISfB+OX`iwoz4KaHy zrW%jnhXe*iSn0Je)}nw!^Szlob=L2Gpg$)jJMzzimFW_^n~6>o9pR$U`HS9th2JWt zXD3<}DdYI~L3lm}Bh3yG{<%WnE@tL~FaHvcL*|MH?A+OUayRYX= zGq=O+3mAEy>>#sQPPQV1hV>h~m1&_48jfIO)isWBX}%$aRYTo9_A8~QwvUN(bJozk3D9 zu$bFzyv1ZS5MLCP61w4d3SIU}R!ndOZVFbl@*$`#BZk->f_xS$PZ=~CY(Z@Sng!zE z`ot?uBSy@%<+Hf^g+ZepqDPeAn&5tZ*AH*_Sah78TYu59__?eqO2@@@Do<=46Q^w| zG3nQ@x2{VTZ6YG)_N!O#NS*4{p;84|&4zz#wMsPvwIKYrlrjjuKR5n}EZH=jkv0BF zX619GG@oj|>?!uk@Zp^jS4lAxG+LH^QXR?Z$~|Ei@zgH2Kv8jX6vVt&ll=L@OjgNgP&+ktq3{_-V*hE?qAtgUJ7l zhTNC>av~+a6F-f0XvetPsdElr$yMIZs!#iO3yJ^zX@Cq7Lo2@A5BPCda{p&SBRGsh z3c~W>Z-jOI=z`L&F3yGMDda+=wUl;r@GOnG{*sTJD+D{w9ika(xfoSB$5>}44L$_h zzn?w+y>{_BBdvc+MY|2%U+U= zy*qTfXTGB9B)*sjwfar`DZ-TI?b|7z)f(!Q8((Ml3F8WzJEGS*? zb!;f03<9hyN%4Z<2*tFdhp0e0s01MLqk|hgRq`oSbhcBnACL~sGRsbKGJ-tz(6P)c zz~m92YJO8iT@d3wECyp~m<%v=;|Dg+&@Bvqj3fvQErT(?ULs$`7OaO^s-Rv9H_PZD@jFZYl*meS{_5*|1Yu7Df)KP6J{Bq4u9EU%E zrDez3EV3ZgFVs|hwP1_UQs)lk)G}+uW-Ae-xR6F@h$jEf2X?Tb&8LiZTGZ~rp9r60 z4Z)@_)mKu0nL$>>X}wuKUdlu<4W1dObZ}-*a6@VhxB7T!Ft4m^R$0FBN}DI0+NZdz z2dz+CONUlB>ShGgpb+!zYuKBJ%4k)aJDl5CB zWr))2&6}ORIdJOX=YJlzHwcC0meKH>-To)`FrpN{M;#>prX+ zlpWG}tF9F~U$mZ@wR@MgU0QpUl4ll5+qI($sbB<}Ek`Lo7DLCsI5(jmCF}S@5dH!+v2R|Jdr^jAOql7j_J;RDrPOLo~nHZ#LQ< zB{@AUP^nJ4!sT@Q=*eUL(CPc+{iLIwtQTn<+FllO)2{$QTAC*J?j%**nd-!WeF3EL_KAuj!#sskdH17Ss+?c?7ES6hbhvl^ z8i{)=Dn67gke<*MAZz1|6JY&Ux}079 z4d=10U~?<+O`#ZCW?66j?aU@XM7E+g#okwEwC}WAOkUcADpn3TNEkg`)4LU|%p9#d zr1=tz*m#%(^p*uL?cPo6T1*ECiB}44c}8&+ukc!HM*Bsxc~0Z_7^huf|asSng&)@cW2~i*JvxR(b&9> zlw~JYtI&23FXB-K!yW!4y_ZD|FZvHY&nf7E0W*7}nCC{=gRm6E35nYGN13VT48=F1kw$Y3urAKzVJ@y_Cc8lwzig*&*tN z`?@I$hV#h)X3Yiv_FEJfGzQ6I2rRFwm%_SQ-knV@3>sTKqwA$1N~U}Ned$mTgj8a- zp+9&&b`X+~LGl1&&r3x8YnoTUDoLNlf@}17wgZGI| zD+Ap%Y^#;9!usvS8-X&i8&0=#hRWJex}2R8Be!RBOrcQ;#gmYQMhbH`^`V7`e`hma z7`J?7$V4W?E7o@Of$y(1QF)ys310Cb*WBpfGWBhz)5grtlWTWpqD(q5%J!!*7vD`{ zCleTF`PZf|gBq5lbje0??3_#r!C@j9lfIa)QAe}*BA6RZ9EPqWMUmD}7yjzCS z(0~=;unV}`Ks= ^)OY7Djo<8?0{Zd8nm@ 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 TWjFQ {children} From 69015a3d68d8ac1551aa2401623bfdd4d762e05e Mon Sep 17 00:00:00 2001 From: Arjun Komath Date: Sun, 7 Jun 2026 15:57:45 +1000 Subject: [PATCH 3/9] Add metrics --- agent/cmd/agent/main.go | 38 ++- agent/internal/agent/agent.go | 9 + agent/internal/agent/reporting.go | 14 +- agent/internal/api/client.go | 1 + agent/internal/http/client.go | 1 - agent/internal/metrics/victoria.go | 90 ++++++ compose.dev.yml | 12 + deployment/.env.example | 5 + deployment/compose.postgres.yml | 31 ++ deployment/compose.production.yml | 31 ++ web/.env.example | 9 +- .../dashboard/servers/[id]/page.tsx | 22 +- web/app/api/servers/[id]/metrics/route.ts | 81 +++++ web/app/api/v1/agent/register/route.ts | 5 +- .../server/server-health-details.tsx | 16 +- web/db/queries.ts | 78 ++++- web/db/schema.ts | 9 - web/lib/agent-status.ts | 5 - web/lib/placement.ts | 33 +- web/lib/victoria-metrics.ts | 303 ++++++++++++++++++ 20 files changed, 739 insertions(+), 54 deletions(-) create mode 100644 agent/internal/metrics/victoria.go create mode 100644 web/app/api/servers/[id]/metrics/route.ts create mode 100644 web/lib/victoria-metrics.ts diff --git a/agent/cmd/agent/main.go b/agent/cmd/agent/main.go index d013f7b..8275e2e 100644 --- a/agent/cmd/agent/main.go +++ b/agent/cmd/agent/main.go @@ -20,6 +20,7 @@ import ( "techulus/cloud-agent/internal/dns" agenthttp "techulus/cloud-agent/internal/http" "techulus/cloud-agent/internal/logs" + "techulus/cloud-agent/internal/metrics" "techulus/cloud-agent/internal/network" "techulus/cloud-agent/internal/paths" "techulus/cloud-agent/internal/reconcile" @@ -34,17 +35,19 @@ var ( func main() { var ( - controlPlaneURL string - token string - isProxy bool - logsEndpointFlag string - disableDNS bool + controlPlaneURL string + token string + isProxy bool + logsEndpointFlag string + metricsEndpointFlag string + disableDNS bool ) flag.StringVar(&controlPlaneURL, "url", "", "Control plane URL (required)") flag.StringVar(&token, "token", "", "Registration token (required for first run)") flag.BoolVar(&isProxy, "proxy", false, "Run as proxy node (handles TLS and public traffic)") flag.StringVar(&logsEndpointFlag, "logs-endpoint", "", "Override logs endpoint URL (optional)") + flag.StringVar(&metricsEndpointFlag, "metrics-endpoint", "", "Override metrics endpoint URL (optional)") flag.BoolVar(&disableDNS, "no-dns", false, "Disable local DNS server") flag.Parse() @@ -53,6 +56,7 @@ func main() { } var logsEndpoint string + var metricsEndpoint string if isProxy && runtime.GOOS != "linux" { log.Fatal("--proxy flag is only supported on Linux") @@ -112,6 +116,11 @@ func main() { } else if config.LoggingEndpoint != "" { logsEndpoint = config.LoggingEndpoint } + if metricsEndpointFlag != "" { + metricsEndpoint = metricsEndpointFlag + } else if config.MetricsEndpoint != "" { + metricsEndpoint = config.MetricsEndpoint + } if err = container.EnsureNetwork(config.SubnetID); err != nil { log.Printf("Warning: Failed to ensure container network: %v", err) @@ -162,6 +171,11 @@ func main() { respLoggingEndpoint = *resp.LoggingEndpoint } + var respMetricsEndpoint string + if resp.MetricsEndpoint != nil { + respMetricsEndpoint = *resp.MetricsEndpoint + } + var registryURL, registryUsername, registryPassword string if resp.RegistryURL != nil { registryURL = *resp.RegistryURL @@ -180,6 +194,7 @@ func main() { EncryptionKey: resp.EncryptionKey, IsProxy: isProxy, LoggingEndpoint: respLoggingEndpoint, + MetricsEndpoint: respMetricsEndpoint, RegistryURL: registryURL, RegistryUsername: registryUsername, RegistryPassword: registryPassword, @@ -191,6 +206,11 @@ func main() { } else if respLoggingEndpoint != "" { logsEndpoint = respLoggingEndpoint } + if metricsEndpointFlag != "" { + metricsEndpoint = metricsEndpointFlag + } else if respMetricsEndpoint != "" { + metricsEndpoint = respMetricsEndpoint + } if err = configuration.Save(config); err != nil { log.Fatalf("Failed to save config: %v", err) @@ -251,6 +271,7 @@ func main() { var traefikLogCollector *logs.TraefikCollector var logsSender *logs.VictoriaLogsSender var agentLogWriter *logs.AgentLogWriter + var metricsSender agent.MetricsSender if logsEndpoint != "" { log.Println("[logs] log collection enabled, endpoint:", logsEndpoint) @@ -265,6 +286,11 @@ func main() { log.Println("[agent-logs] Agent log collection enabled") } + if metricsEndpoint != "" { + log.Println("[metrics] metrics collection enabled, endpoint:", metricsEndpoint) + metricsSender = metrics.NewVictoriaMetricsSender(metricsEndpoint, config.ServerID) + } + var builder *build.Builder if logsSender != nil { builder = build.NewBuilder(dataDir, logsSender) @@ -294,7 +320,7 @@ func main() { privateIP := network.PrivateIP() log.Printf("Agent v%s started. Public IP: %s, Private IP: %s. Tick interval: %v", agent.Version, publicIP, privateIP, agent.TickInterval) - agentInstance := agent.NewAgent(client, reconciler, config, publicIP, privateIP, dataDir, logCollector, traefikLogCollector, builder, config.IsProxy, disableDNS) + agentInstance := agent.NewAgent(client, reconciler, config, publicIP, privateIP, dataDir, logCollector, traefikLogCollector, metricsSender, builder, config.IsProxy, disableDNS) agentInstance.Run(ctx) if agentLogFlusherDone != nil { diff --git a/agent/internal/agent/agent.go b/agent/internal/agent/agent.go index 3c56756..fcb7826 100644 --- a/agent/internal/agent/agent.go +++ b/agent/internal/agent/agent.go @@ -6,6 +6,7 @@ import ( "techulus/cloud-agent/internal/build" "techulus/cloud-agent/internal/container" + "techulus/cloud-agent/internal/health" agenthttp "techulus/cloud-agent/internal/http" "techulus/cloud-agent/internal/logs" "techulus/cloud-agent/internal/reconcile" @@ -42,6 +43,7 @@ type Config struct { EncryptionKey string `json:"encryptionKey"` IsProxy bool `json:"isProxy"` LoggingEndpoint string `json:"loggingEndpoint,omitempty"` + MetricsEndpoint string `json:"metricsEndpoint,omitempty"` RegistryURL string `json:"registryUrl,omitempty"` RegistryUsername string `json:"registryUsername,omitempty"` RegistryPassword string `json:"registryPassword,omitempty"` @@ -78,6 +80,7 @@ type Agent struct { processingStart time.Time LogCollector *logs.Collector TraefikLogCollector *logs.TraefikCollector + MetricsSender MetricsSender Builder *build.Builder isBuilding bool buildMutex sync.Mutex @@ -94,6 +97,7 @@ func NewAgent( publicIP, privateIP, dataDir string, logCollector *logs.Collector, traefikLogCollector *logs.TraefikCollector, + metricsSender MetricsSender, builder *build.Builder, isProxy bool, disableDNS bool, @@ -110,12 +114,17 @@ func NewAgent( DataDir: dataDir, LogCollector: logCollector, TraefikLogCollector: traefikLogCollector, + MetricsSender: metricsSender, Builder: builder, IsProxy: isProxy, DisableDNS: disableDNS, } } +type MetricsSender interface { + SendSystemStats(stats *health.SystemStats, collectedAt time.Time) error +} + func (a *Agent) GetState() AgentState { a.stateMutex.RLock() defer a.stateMutex.RUnlock() diff --git a/agent/internal/agent/reporting.go b/agent/internal/agent/reporting.go index 4513604..16b23a3 100644 --- a/agent/internal/agent/reporting.go +++ b/agent/internal/agent/reporting.go @@ -39,7 +39,15 @@ func (a *Agent) BuildStatusReport(includeResources bool) *agenthttp.StatusReport healthCollectMu.Lock() if time.Since(lastHealthCollect) >= 60*time.Second { - report.HealthStats = health.CollectSystemStats() + collectedAt := time.Now() + systemStats := health.CollectSystemStats() + if a.MetricsSender != nil { + go func() { + if err := a.MetricsSender.SendSystemStats(systemStats, collectedAt); err != nil { + log.Printf("[metrics] failed to send system stats: %v", err) + } + }() + } report.NetworkHealth = health.CollectNetworkHealth("wg0") report.ContainerHealth = health.CollectContainerHealth() report.AgentHealth = &agenthttp.AgentHealth{ @@ -48,8 +56,8 @@ func (a *Agent) BuildStatusReport(includeResources bool) *agenthttp.StatusReport } lastHealthCollect = time.Now() log.Printf("[health] collected: cpu=%.1f%%, mem=%.1f%%, disk=%.1f%%, network=%v, containers=%d running", - report.HealthStats.CpuUsagePercent, report.HealthStats.MemoryUsagePercent, - report.HealthStats.DiskUsagePercent, report.NetworkHealth.TunnelUp, + systemStats.CpuUsagePercent, systemStats.MemoryUsagePercent, + systemStats.DiskUsagePercent, report.NetworkHealth.TunnelUp, report.ContainerHealth.RunningContainers) } healthCollectMu.Unlock() diff --git a/agent/internal/api/client.go b/agent/internal/api/client.go index 18877b4..187e7b1 100644 --- a/agent/internal/api/client.go +++ b/agent/internal/api/client.go @@ -38,6 +38,7 @@ type RegisterResponse struct { WireGuardIP string `json:"wireguardIp"` EncryptionKey string `json:"encryptionKey"` LoggingEndpoint *string `json:"loggingEndpoint"` + MetricsEndpoint *string `json:"metricsEndpoint"` RegistryURL *string `json:"registryUrl"` RegistryUsername *string `json:"registryUsername"` RegistryPassword *string `json:"registryPassword"` diff --git a/agent/internal/http/client.go b/agent/internal/http/client.go index 15a4f42..838ebc9 100644 --- a/agent/internal/http/client.go +++ b/agent/internal/http/client.go @@ -251,7 +251,6 @@ type StatusReport struct { Meta map[string]string `json:"meta,omitempty"` Containers []ContainerStatus `json:"containers"` DnsInSync bool `json:"dnsInSync,omitempty"` - HealthStats *health.SystemStats `json:"healthStats,omitempty"` NetworkHealth *health.NetworkHealth `json:"networkHealth,omitempty"` ContainerHealth *health.ContainerHealth `json:"containerHealth,omitempty"` AgentHealth *AgentHealth `json:"agentHealth,omitempty"` diff --git a/agent/internal/metrics/victoria.go b/agent/internal/metrics/victoria.go new file mode 100644 index 0000000..8d90e67 --- /dev/null +++ b/agent/internal/metrics/victoria.go @@ -0,0 +1,90 @@ +package metrics + +import ( + "bytes" + "fmt" + "net/http" + "net/url" + "strings" + "time" + + "techulus/cloud-agent/internal/health" +) + +type VictoriaMetricsSender struct { + endpoint string + serverID string + username string + password string + client *http.Client +} + +func NewVictoriaMetricsSender(endpoint, serverID string) *VictoriaMetricsSender { + var username, password string + cleanEndpoint := strings.TrimRight(endpoint, "/") + + if parsedURL, err := url.Parse(endpoint); err == nil && parsedURL.User != nil { + username = parsedURL.User.Username() + password, _ = parsedURL.User.Password() + parsedURL.User = nil + cleanEndpoint = strings.TrimRight(parsedURL.String(), "/") + } + + return &VictoriaMetricsSender{ + endpoint: cleanEndpoint, + serverID: serverID, + username: username, + password: password, + client: &http.Client{ + Timeout: 15 * time.Second, + }, + } +} + +func (v *VictoriaMetricsSender) SendSystemStats(stats *health.SystemStats, collectedAt time.Time) error { + if stats == nil { + return nil + } + + timestampMs := collectedAt.UnixMilli() + serverID := escapeLabelValue(v.serverID) + + var buf bytes.Buffer + writeGauge(&buf, "techulus_node_cpu_usage_percent", serverID, stats.CpuUsagePercent, timestampMs) + writeGauge(&buf, "techulus_node_memory_usage_percent", serverID, stats.MemoryUsagePercent, timestampMs) + writeGauge(&buf, "techulus_node_memory_used_bytes", serverID, float64(stats.MemoryUsedMb)*1024*1024, timestampMs) + writeGauge(&buf, "techulus_node_disk_usage_percent", serverID, stats.DiskUsagePercent, timestampMs) + writeGauge(&buf, "techulus_node_disk_used_bytes", serverID, float64(stats.DiskUsedGb)*1024*1024*1024, timestampMs) + + req, err := http.NewRequest("POST", v.endpoint+"/api/v1/import/prometheus", &buf) + if err != nil { + return fmt.Errorf("failed to create metrics request: %w", err) + } + req.Header.Set("Content-Type", "text/plain; version=0.0.4") + if v.username != "" { + req.SetBasicAuth(v.username, v.password) + } + + resp, err := v.client.Do(req) + if err != nil { + return fmt.Errorf("failed to send metrics: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusNoContent { + return fmt.Errorf("unexpected metrics status code: %d", resp.StatusCode) + } + + return nil +} + +func writeGauge(buf *bytes.Buffer, name, serverID string, value float64, timestampMs int64) { + fmt.Fprintf(buf, "%s{server_id=\"%s\"} %f %d\n", name, serverID, value, timestampMs) +} + +func escapeLabelValue(value string) string { + value = strings.ReplaceAll(value, "\\", "\\\\") + value = strings.ReplaceAll(value, "\n", "\\n") + value = strings.ReplaceAll(value, "\"", "\\\"") + return value +} diff --git a/compose.dev.yml b/compose.dev.yml index 9e4d18a..4419b83 100644 --- a/compose.dev.yml +++ b/compose.dev.yml @@ -41,6 +41,17 @@ services: - "-retentionPeriod=7d" restart: unless-stopped + victoria-metrics: + image: victoriametrics/victoria-metrics:latest + ports: + - "8428:8428" + volumes: + - victoria-metrics-data:/vmdata + command: + - "-storageDataPath=/vmdata" + - "-retentionPeriod=${VM_RETENTION:-30d}" + restart: unless-stopped + minio: image: minio/minio:latest ports: @@ -71,5 +82,6 @@ services: volumes: registry-data: victoria-logs-data: + victoria-metrics-data: postgres_data: minio_data: diff --git a/deployment/.env.example b/deployment/.env.example index df2b5ef..9425024 100644 --- a/deployment/.env.example +++ b/deployment/.env.example @@ -18,6 +18,11 @@ VL_USERNAME=admin VL_PASSWORD=your-secure-logs-password VL_RETENTION=7d +# Victoria Metrics Authentication +VM_USERNAME=admin +VM_PASSWORD=your-secure-metrics-password +VM_RETENTION=30d + # Registry REGISTRY_USERNAME=admin REGISTRY_PASSWORD=your-registry-password diff --git a/deployment/compose.postgres.yml b/deployment/compose.postgres.yml index e334274..db8b1bf 100644 --- a/deployment/compose.postgres.yml +++ b/deployment/compose.postgres.yml @@ -79,6 +79,8 @@ services: - APP_URL=https://${ROOT_DOMAIN} - VICTORIA_LOGS_URL=https://${VL_USERNAME}:${VL_PASSWORD}@logs.${ROOT_DOMAIN} - VICTORIA_LOGS_PRIVATE_URL=http://${VL_USERNAME}:${VL_PASSWORD}@victoria-logs:9428 + - VICTORIA_METRICS_URL=https://${VM_USERNAME}:${VM_PASSWORD}@metrics.${ROOT_DOMAIN} + - VICTORIA_METRICS_PRIVATE_URL=http://${VM_USERNAME}:${VM_PASSWORD}@victoria-metrics:8428 - REGISTRY_URL=registry:5000 - REGISTRY_HOST=registry.${ROOT_DOMAIN} - INNGEST_BASE_URL=http://inngest:8288 @@ -102,6 +104,8 @@ services: - APP_URL=https://${ROOT_DOMAIN} - VICTORIA_LOGS_URL=https://${VL_USERNAME}:${VL_PASSWORD}@logs.${ROOT_DOMAIN} - VICTORIA_LOGS_PRIVATE_URL=http://${VL_USERNAME}:${VL_PASSWORD}@victoria-logs:9428 + - VICTORIA_METRICS_URL=https://${VM_USERNAME}:${VM_PASSWORD}@metrics.${ROOT_DOMAIN} + - VICTORIA_METRICS_PRIVATE_URL=http://${VM_USERNAME}:${VM_PASSWORD}@victoria-metrics:8428 - REGISTRY_URL=registry:5000 - REGISTRY_HOST=registry.${ROOT_DOMAIN} - INNGEST_BASE_URL=http://inngest:8288 @@ -113,6 +117,8 @@ services: condition: service_completed_successfully victoria-logs: condition: service_started + victoria-metrics: + condition: service_started registry: condition: service_started labels: @@ -178,6 +184,30 @@ services: retries: 3 restart: unless-stopped + victoria-metrics: + image: victoriametrics/victoria-metrics:latest + env_file: + - ./.env + volumes: + - victoria-metrics-data:/vmdata + command: + - "-storageDataPath=/vmdata" + - "-retentionPeriod=${VM_RETENTION:-30d}" + - "-httpAuth.username=${VM_USERNAME}" + - "-httpAuth.password=${VM_PASSWORD}" + labels: + - "traefik.enable=true" + - "traefik.http.routers.metrics.rule=Host(`metrics.${ROOT_DOMAIN}`)" + - "traefik.http.routers.metrics.entrypoints=websecure" + - "traefik.http.routers.metrics.tls.certresolver=letsencrypt" + - "traefik.http.services.metrics.loadbalancer.server.port=8428" + healthcheck: + test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:8428/health || wget -q --spider http://127.0.0.1:8428/-/healthy"] + interval: 30s + timeout: 10s + retries: 3 + restart: unless-stopped + inngest: image: inngest/inngest:latest env_file: @@ -208,4 +238,5 @@ volumes: postgres-data: registry-data: victoria-logs-data: + victoria-metrics-data: inngest-data: diff --git a/deployment/compose.production.yml b/deployment/compose.production.yml index ed0e073..b32e054 100644 --- a/deployment/compose.production.yml +++ b/deployment/compose.production.yml @@ -61,6 +61,8 @@ services: - APP_URL=https://${ROOT_DOMAIN} - VICTORIA_LOGS_URL=https://${VL_USERNAME}:${VL_PASSWORD}@logs.${ROOT_DOMAIN} - VICTORIA_LOGS_PRIVATE_URL=http://${VL_USERNAME}:${VL_PASSWORD}@victoria-logs:9428 + - VICTORIA_METRICS_URL=https://${VM_USERNAME}:${VM_PASSWORD}@metrics.${ROOT_DOMAIN} + - VICTORIA_METRICS_PRIVATE_URL=http://${VM_USERNAME}:${VM_PASSWORD}@victoria-metrics:8428 - REGISTRY_URL=registry:5000 - REGISTRY_HOST=registry.${ROOT_DOMAIN} - INNGEST_BASE_URL=http://inngest:8288 @@ -81,6 +83,8 @@ services: - APP_URL=https://${ROOT_DOMAIN} - VICTORIA_LOGS_URL=https://${VL_USERNAME}:${VL_PASSWORD}@logs.${ROOT_DOMAIN} - VICTORIA_LOGS_PRIVATE_URL=http://${VL_USERNAME}:${VL_PASSWORD}@victoria-logs:9428 + - VICTORIA_METRICS_URL=https://${VM_USERNAME}:${VM_PASSWORD}@metrics.${ROOT_DOMAIN} + - VICTORIA_METRICS_PRIVATE_URL=http://${VM_USERNAME}:${VM_PASSWORD}@victoria-metrics:8428 - REGISTRY_URL=registry:5000 - REGISTRY_HOST=registry.${ROOT_DOMAIN} - INNGEST_BASE_URL=http://inngest:8288 @@ -92,6 +96,8 @@ services: condition: service_completed_successfully victoria-logs: condition: service_started + victoria-metrics: + condition: service_started registry: condition: service_started labels: @@ -157,6 +163,30 @@ services: retries: 3 restart: unless-stopped + victoria-metrics: + image: victoriametrics/victoria-metrics:latest + env_file: + - ./.env + volumes: + - victoria-metrics-data:/vmdata + command: + - "-storageDataPath=/vmdata" + - "-retentionPeriod=${VM_RETENTION:-30d}" + - "-httpAuth.username=${VM_USERNAME}" + - "-httpAuth.password=${VM_PASSWORD}" + labels: + - "traefik.enable=true" + - "traefik.http.routers.metrics.rule=Host(`metrics.${ROOT_DOMAIN}`)" + - "traefik.http.routers.metrics.entrypoints=websecure" + - "traefik.http.routers.metrics.tls.certresolver=letsencrypt" + - "traefik.http.services.metrics.loadbalancer.server.port=8428" + healthcheck: + test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:8428/health || wget -q --spider http://127.0.0.1:8428/-/healthy"] + interval: 30s + timeout: 10s + retries: 3 + restart: unless-stopped + inngest: image: inngest/inngest:latest env_file: @@ -186,4 +216,5 @@ volumes: letsencrypt: registry-data: victoria-logs-data: + victoria-metrics-data: inngest-data: diff --git a/web/.env.example b/web/.env.example index d7864d8..67fac89 100644 --- a/web/.env.example +++ b/web/.env.example @@ -15,6 +15,13 @@ APP_URL=https://your-domain.com VICTORIA_LOGS_URL=http://username:password@victoria-logs:9428 VICTORIA_LOGS_PRIVATE_URL=http://username:password@victoria-logs:9428 +# Metrics (optional) +VICTORIA_METRICS_URL=http://username:password@victoria-metrics:8428 +VICTORIA_METRICS_PRIVATE_URL=http://username:password@victoria-metrics:8428 +VM_USERNAME=username +VM_PASSWORD=password +VM_RETENTION=30d + # Docker Registry for builds (optional) REGISTRY_HOST=registry.example.com @@ -47,4 +54,4 @@ SMTP_USERNAME=smtp-user SMTP_PASSWORD=secret SMTP_ENCRYPTION=starttls SMTP_TIMEOUT=10000 -SMTP_ALERT_EMAILS=alerts@example.com,admin@example.com \ No newline at end of file +SMTP_ALERT_EMAILS=alerts@example.com,admin@example.com diff --git a/web/app/(dashboard)/dashboard/servers/[id]/page.tsx b/web/app/(dashboard)/dashboard/servers/[id]/page.tsx index 16fe704..cd95ecd 100644 --- a/web/app/(dashboard)/dashboard/servers/[id]/page.tsx +++ b/web/app/(dashboard)/dashboard/servers/[id]/page.tsx @@ -1,5 +1,11 @@ import { notFound } from "next/navigation"; -import { getServerDetails } from "@/db/queries"; +import { SetBreadcrumbs } from "@/components/core/breadcrumb-data"; +import { LogViewer } from "@/components/logs/log-viewer"; +import { AgentUpdateNudge } from "@/components/server/agent-update-nudge"; +import { ServerDangerZone } from "@/components/server/server-danger-zone"; +import { ServerHeader } from "@/components/server/server-header"; +import { ServerHealthDetails } from "@/components/server/server-health-details"; +import { ServerServices } from "@/components/server/server-services"; import { Card, CardContent, @@ -7,15 +13,10 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { SetBreadcrumbs } from "@/components/core/breadcrumb-data"; -import { LogViewer } from "@/components/logs/log-viewer"; import { Label } from "@/components/ui/label"; -import { ServerDangerZone } from "@/components/server/server-danger-zone"; -import { ServerHeader } from "@/components/server/server-header"; -import { ServerHealthDetails } from "@/components/server/server-health-details"; -import { ServerServices } from "@/components/server/server-services"; -import { AgentUpdateNudge } from "@/components/server/agent-update-nudge"; +import { getServerDetails, metricSnapshotToHealthStats } from "@/db/queries"; import { formatRelativeTime } from "@/lib/date"; +import { queryNodeMetricsSnapshot } from "@/lib/victoria-metrics"; async function getLatestAgentVersion(): Promise { try { @@ -39,9 +40,10 @@ export default async function ServerDetailPage({ params: Promise<{ id: string }>; }) { const { id } = await params; - const [server, latestVersion] = await Promise.all([ + const [server, latestVersion, metricsSnapshot] = await Promise.all([ getServerDetails(id), getLatestAgentVersion(), + queryNodeMetricsSnapshot(id).catch(() => null), ]); if (!server) { @@ -172,7 +174,7 @@ export default async function ServerDetailPage({ }, +) { + const session = await auth.api.getSession({ + headers: await headers(), + }); + + if (!session) { + return new Response("Unauthorized", { status: 401 }); + } + + const { id: serverId } = await params; + const url = new URL(request.url); + const range = parseRange(url.searchParams.get("range")); + + if (!isMetricsEnabled()) { + return Response.json({ + current: null, + history: emptyHistory(), + range, + enabled: false, + }); + } + + const end = new Date(); + const option = RANGE_OPTIONS[range]; + const start = new Date(end.getTime() - option.durationMs); + + try { + const [current, history] = await Promise.all([ + queryNodeMetricsSnapshot(serverId), + queryNodeMetricsHistory({ + serverId, + start, + end, + stepSeconds: option.stepSeconds, + }), + ]); + + return Response.json({ + current, + history, + range, + enabled: true, + }); + } catch (error) { + console.error("[metrics:server] failed to query metrics:", error); + return Response.json({ + current: null, + history: emptyHistory(), + range, + enabled: true, + }); + } +} + +function parseRange(value: string | null): RangeKey { + if (value && value in RANGE_OPTIONS) { + return value as RangeKey; + } + return "1h"; +} diff --git a/web/app/api/v1/agent/register/route.ts b/web/app/api/v1/agent/register/route.ts index d220662..5233a42 100644 --- a/web/app/api/v1/agent/register/route.ts +++ b/web/app/api/v1/agent/register/route.ts @@ -1,10 +1,10 @@ +import { and, eq, gt, isNull } from "drizzle-orm"; import { type NextRequest, NextResponse } from "next/server"; import { db } from "@/db"; import { servers } from "@/db/schema"; -import { eq, and, isNull, gt } from "drizzle-orm"; -import { assignSubnet } from "@/lib/wireguard"; import { agentRegisterSchema } from "@/lib/schemas"; import { formatZodErrors } from "@/lib/utils"; +import { assignSubnet } from "@/lib/wireguard"; const TOKEN_EXPIRY_HOURS = 24; @@ -78,6 +78,7 @@ export async function POST(request: NextRequest) { wireguardIp, encryptionKey: process.env.ENCRYPTION_KEY, loggingEndpoint: process.env.VICTORIA_LOGS_URL ?? null, + metricsEndpoint: process.env.VICTORIA_METRICS_URL ?? null, registryUrl: process.env.REGISTRY_URL ?? null, registryUsername: process.env.REGISTRY_USERNAME ?? null, registryPassword: process.env.REGISTRY_PASSWORD ?? null, diff --git a/web/components/server/server-health-details.tsx b/web/components/server/server-health-details.tsx index 021955e..b9b4150 100644 --- a/web/components/server/server-health-details.tsx +++ b/web/components/server/server-health-details.tsx @@ -9,15 +9,23 @@ import { Network, } from "lucide-react"; import useSWR from "swr"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import { ResourceBar } from "@/components/cluster/resource-bar"; import { HealthIndicator } from "@/components/cluster/health-indicator"; +import { ResourceBar } from "@/components/cluster/resource-bar"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Separator } from "@/components/ui/separator"; -import { fetcher } from "@/lib/fetcher"; import type { Server } from "@/db/types"; +import { fetcher } from "@/lib/fetcher"; + +type HealthStats = { + cpuUsagePercent: number; + memoryUsagePercent: number; + memoryUsedMb: number; + diskUsagePercent: number; + diskUsedGb: number; +}; type ServerHealthData = { - healthStats: Server["healthStats"]; + healthStats: HealthStats | null; networkHealth: Server["networkHealth"]; containerHealth: Server["containerHealth"]; agentHealth: Server["agentHealth"]; diff --git a/web/db/queries.ts b/web/db/queries.ts index 736eeb5..e003cee 100644 --- a/web/db/queries.ts +++ b/web/db/queries.ts @@ -13,11 +13,23 @@ import { settings, } from "@/db/schema"; import type { + EmailAlertsConfig, SmtpConfig, SmtpEncryption, - EmailAlertsConfig, } from "@/lib/settings-keys"; import { DEFAULT_SMTP_PORT, DEFAULT_SMTP_TIMEOUT } from "@/lib/settings-keys"; +import { + type NodeMetricsSnapshot, + queryNodeMetricsSnapshots, +} from "@/lib/victoria-metrics"; + +type HealthStats = { + cpuUsagePercent: number; + memoryUsagePercent: number; + memoryUsedMb: number; + diskUsagePercent: number; + diskUsedGb: number; +}; export async function listProjects() { const projectList = await db @@ -161,7 +173,6 @@ export async function getServerDetails(id: string) { meta: servers.meta, createdAt: servers.createdAt, agentToken: servers.agentToken, - healthStats: servers.healthStats, networkHealth: servers.networkHealth, containerHealth: servers.containerHealth, agentHealth: servers.agentHealth, @@ -169,7 +180,8 @@ export async function getServerDetails(id: string) { .from(servers) .where(eq(servers.id, id)); - return serverResults[0] || null; + const server = serverResults[0]; + return server ? { ...server, healthStats: null } : null; } export async function getClusterHealth() { @@ -178,7 +190,6 @@ export async function getClusterHealth() { id: servers.id, name: servers.name, status: servers.status, - healthStats: servers.healthStats, networkHealth: servers.networkHealth, containerHealth: servers.containerHealth, agentHealth: servers.agentHealth, @@ -186,22 +197,35 @@ export async function getClusterHealth() { .from(servers); const onlineServers = allServers.filter((s) => s.status === "online"); - const serversWithHealth = onlineServers.filter((s) => s.healthStats); + const metricsByServer = await queryNodeMetricsSnapshots( + onlineServers.map((server) => server.id), + ).catch((error) => { + console.error("[cluster-health] failed to query metrics:", error); + return new Map(); + }); + + const serversWithHealth = allServers.map((server) => ({ + ...server, + healthStats: metricSnapshotToHealthStats(metricsByServer.get(server.id)), + })); + const serversWithCurrentMetrics = serversWithHealth.filter( + (server) => server.status === "online" && server.healthStats, + ); let avgCpuUsage = 0; let avgMemoryUsage = 0; - if (serversWithHealth.length > 0) { - const cpuSum = serversWithHealth.reduce( + if (serversWithCurrentMetrics.length > 0) { + const cpuSum = serversWithCurrentMetrics.reduce( (sum, s) => sum + (s.healthStats?.cpuUsagePercent ?? 0), 0, ); - const memSum = serversWithHealth.reduce( + const memSum = serversWithCurrentMetrics.reduce( (sum, s) => sum + (s.healthStats?.memoryUsagePercent ?? 0), 0, ); - avgCpuUsage = cpuSum / serversWithHealth.length; - avgMemoryUsage = memSum / serversWithHealth.length; + avgCpuUsage = cpuSum / serversWithCurrentMetrics.length; + avgMemoryUsage = memSum / serversWithCurrentMetrics.length; } const networkHealthy = onlineServers.filter( @@ -220,7 +244,39 @@ export async function getClusterHealth() { networkHealthy, containerHealthy, }, - servers: allServers, + servers: serversWithHealth, + }; +} + +export function metricSnapshotToHealthStats( + snapshot: + | { + cpuUsagePercent: number | null; + memoryUsagePercent: number | null; + memoryUsedBytes: number | null; + diskUsagePercent: number | null; + diskUsedBytes: number | null; + } + | null + | undefined, +): HealthStats | null { + if (!snapshot) return null; + if ( + snapshot.cpuUsagePercent === null && + snapshot.memoryUsagePercent === null && + snapshot.memoryUsedBytes === null && + snapshot.diskUsagePercent === null && + snapshot.diskUsedBytes === null + ) { + return null; + } + + return { + cpuUsagePercent: snapshot.cpuUsagePercent ?? 0, + memoryUsagePercent: snapshot.memoryUsagePercent ?? 0, + memoryUsedMb: Math.round((snapshot.memoryUsedBytes ?? 0) / 1024 / 1024), + diskUsagePercent: snapshot.diskUsagePercent ?? 0, + diskUsedGb: Math.round((snapshot.diskUsedBytes ?? 0) / 1024 / 1024 / 1024), }; } diff --git a/web/db/schema.ts b/web/db/schema.ts index fef32b5..638905e 100644 --- a/web/db/schema.ts +++ b/web/db/schema.ts @@ -182,14 +182,6 @@ type ServerMeta = { hostname?: string; }; -export type HealthStats = { - cpuUsagePercent: number; - memoryUsagePercent: number; - memoryUsedMb: number; - diskUsagePercent: number; - diskUsedGb: number; -}; - export type NetworkPeer = { id: string; lastSeenSecs: number; @@ -232,7 +224,6 @@ export const servers = pgTable("servers", { resourcesMemory: integer("resources_memory"), resourcesDisk: integer("resources_disk"), meta: jsonb("meta").$type(), - healthStats: jsonb("health_stats").$type(), networkHealth: jsonb("network_health").$type(), containerHealth: jsonb("container_health").$type(), agentHealth: jsonb("agent_health").$type(), diff --git a/web/lib/agent-status.ts b/web/lib/agent-status.ts index e1586ed..65e200c 100644 --- a/web/lib/agent-status.ts +++ b/web/lib/agent-status.ts @@ -5,7 +5,6 @@ import { type ContainerHealth, deploymentPorts, deployments, - type HealthStats, type NetworkHealth, rollouts, servers, @@ -37,7 +36,6 @@ export type StatusReport = { meta?: Record; containers: ContainerStatus[]; dnsInSync?: boolean; - healthStats?: HealthStats; networkHealth?: NetworkHealth; containerHealth?: ContainerHealth; agentHealth?: AgentHealth; @@ -74,9 +72,6 @@ export async function applyStatusReport( updateData.meta = report.meta; } - if (report.healthStats) { - updateData.healthStats = report.healthStats; - } if (report.networkHealth) { updateData.networkHealth = report.networkHealth; } diff --git a/web/lib/placement.ts b/web/lib/placement.ts index fe3755f..e78133c 100644 --- a/web/lib/placement.ts +++ b/web/lib/placement.ts @@ -9,6 +9,10 @@ import { type PlacementServerSnapshot, } from "@/lib/placement-planner"; import { SETTING_KEYS } from "@/lib/settings-keys"; +import { + type NodeMetricsSnapshot, + queryNodeMetricsSnapshots, +} from "@/lib/victoria-metrics"; export type { PlacementResult }; @@ -24,7 +28,6 @@ export async function calculateResourceAwarePlacement( id: servers.id, status: servers.status, wireguardIp: servers.wireguardIp, - healthStats: servers.healthStats, containerHealth: servers.containerHealth, }) .from(servers) @@ -41,10 +44,36 @@ export async function calculateResourceAwarePlacement( getExcludedFromWorkloadPlacement(), ]); + const metricsByServer = await queryNodeMetricsSnapshots( + candidateServers.map((server) => server.id), + ).catch((error) => { + console.error("[placement] failed to query metrics:", error); + return new Map(); + }); + const serversWithMetrics = candidateServers.map((server) => { + const metrics = metricsByServer.get(server.id); + return { + ...server, + healthStats: metrics + ? { + cpuUsagePercent: metrics.cpuUsagePercent ?? 0, + memoryUsagePercent: metrics.memoryUsagePercent ?? 0, + memoryUsedMb: Math.round( + (metrics.memoryUsedBytes ?? 0) / 1024 / 1024, + ), + diskUsagePercent: metrics.diskUsagePercent ?? 0, + diskUsedGb: Math.round( + (metrics.diskUsedBytes ?? 0) / 1024 / 1024 / 1024, + ), + } + : null, + }; + }); + return calculateResourceAwarePlacementFromSnapshot({ serviceId: service.id, totalReplicas, - servers: candidateServers satisfies PlacementServerSnapshot[], + servers: serversWithMetrics satisfies PlacementServerSnapshot[], existingReplicas: allocatedReplicas, excludeServerIds: [...(excludeServerIds ?? []), ...excludedFromWorkload], }); diff --git a/web/lib/victoria-metrics.ts b/web/lib/victoria-metrics.ts new file mode 100644 index 0000000..5b34c95 --- /dev/null +++ b/web/lib/victoria-metrics.ts @@ -0,0 +1,303 @@ +const VICTORIA_METRICS_URL = process.env.VICTORIA_METRICS_URL; +const VICTORIA_METRICS_PRIVATE_URL = process.env.VICTORIA_METRICS_PRIVATE_URL; + +type EndpointConfig = { + url: string; + username?: string; + password?: string; +}; + +type VictoriaInstantResponse = { + status: string; + data?: { + result?: Array<{ + metric?: Record; + value?: [number, string]; + }>; + }; + error?: string; +}; + +type VictoriaMatrixResponse = { + status: string; + data?: { + result?: Array<{ + metric: Record; + values: Array<[number, string]>; + }>; + }; + error?: string; +}; + +export type NodeMetricsSnapshot = { + cpuUsagePercent: number | null; + memoryUsagePercent: number | null; + memoryUsedBytes: number | null; + diskUsagePercent: number | null; + diskUsedBytes: number | null; +}; + +export type NodeMetricPoint = { + timestamp: string; + value: number; +}; + +export type NodeMetricsHistory = { + cpuUsagePercent: NodeMetricPoint[]; + memoryUsagePercent: NodeMetricPoint[]; + memoryUsedBytes: NodeMetricPoint[]; + diskUsagePercent: NodeMetricPoint[]; + diskUsedBytes: NodeMetricPoint[]; +}; + +const METRIC_NAMES = { + cpuUsagePercent: "techulus_node_cpu_usage_percent", + memoryUsagePercent: "techulus_node_memory_usage_percent", + memoryUsedBytes: "techulus_node_memory_used_bytes", + diskUsagePercent: "techulus_node_disk_usage_percent", + diskUsedBytes: "techulus_node_disk_used_bytes", +} as const; + +function parseEndpoint(endpoint: string): EndpointConfig { + const parsed = new URL(endpoint); + const username = parsed.username || undefined; + const password = parsed.password || undefined; + parsed.username = ""; + parsed.password = ""; + return { url: parsed.toString().replace(/\/$/, ""), username, password }; +} + +function getQueryEndpoint(): EndpointConfig | undefined { + const endpoint = VICTORIA_METRICS_PRIVATE_URL || VICTORIA_METRICS_URL; + if (!endpoint) return undefined; + return parseEndpoint(endpoint); +} + +function buildFetchOptions(config: EndpointConfig): RequestInit { + if (config.username) { + const credentials = Buffer.from( + `${config.username}:${config.password || ""}`, + ).toString("base64"); + return { headers: { Authorization: `Basic ${credentials}` } }; + } + return {}; +} + +export function isMetricsEnabled(): boolean { + return !!(VICTORIA_METRICS_PRIVATE_URL || VICTORIA_METRICS_URL); +} + +export async function queryNodeMetricsSnapshots( + serverIds: string[], +): Promise> { + const endpoint = getQueryEndpoint(); + if (!endpoint) return new Map(); + + // 5 total queries (one per metric), results grouped by server_id label. + // This collapses the previous N × 5 fan-out. + const [cpuMap, memPctMap, memBytesMap, diskPctMap, diskBytesMap] = + await Promise.all([ + queryInstantMetricGroup(endpoint, METRIC_NAMES.cpuUsagePercent).catch( + () => new Map(), + ), + queryInstantMetricGroup(endpoint, METRIC_NAMES.memoryUsagePercent).catch( + () => new Map(), + ), + queryInstantMetricGroup(endpoint, METRIC_NAMES.memoryUsedBytes).catch( + () => new Map(), + ), + queryInstantMetricGroup(endpoint, METRIC_NAMES.diskUsagePercent).catch( + () => new Map(), + ), + queryInstantMetricGroup(endpoint, METRIC_NAMES.diskUsedBytes).catch( + () => new Map(), + ), + ]); + + const result = new Map(); + for (const serverId of serverIds) { + result.set(serverId, { + cpuUsagePercent: cpuMap.get(serverId) ?? null, + memoryUsagePercent: memPctMap.get(serverId) ?? null, + memoryUsedBytes: memBytesMap.get(serverId) ?? null, + diskUsagePercent: diskPctMap.get(serverId) ?? null, + diskUsedBytes: diskBytesMap.get(serverId) ?? null, + }); + } + return result; +} + +export async function queryNodeMetricsSnapshot( + serverId: string, +): Promise { + const endpoint = getQueryEndpoint(); + if (!endpoint) return null; + + const snapshot: NodeMetricsSnapshot = { + cpuUsagePercent: null, + memoryUsagePercent: null, + memoryUsedBytes: null, + diskUsagePercent: null, + diskUsedBytes: null, + }; + + await Promise.all( + Object.entries(METRIC_NAMES).map(async ([key, metricName]) => { + const value = await queryInstantMetric( + endpoint, + metricName, + serverId, + ).catch(() => null); + snapshot[key as keyof NodeMetricsSnapshot] = value; + }), + ); + + return snapshot; +} + +export async function queryNodeMetricsHistory(options: { + serverId: string; + start: Date; + end: Date; + stepSeconds: number; +}): Promise { + const endpoint = getQueryEndpoint(); + if (!endpoint) return emptyHistory(); + + const entries = await Promise.all( + Object.entries(METRIC_NAMES).map(async ([key, metricName]) => { + const series = await queryRangeMetric(endpoint, { + metricName, + serverId: options.serverId, + start: options.start, + end: options.end, + stepSeconds: options.stepSeconds, + }).catch(() => []); + return [key, series] as const; + }), + ); + + return Object.fromEntries(entries) as NodeMetricsHistory; +} + +async function queryInstantMetric( + endpoint: EndpointConfig, + metricName: string, + serverId: string, +) { + const url = new URL(`${endpoint.url}/api/v1/query`); + url.searchParams.set( + "query", + `${metricName}{server_id="${escapePromQL(serverId)}"}`, + ); + + const response = await fetch(url.toString(), buildFetchOptions(endpoint)); + if (!response.ok) { + throw new Error( + `Failed to query metrics: ${response.status} ${response.statusText}`, + ); + } + + const data = (await response.json()) as VictoriaInstantResponse; + if (data.status !== "success") { + throw new Error(data.error || "Failed to query metrics"); + } + + const rawValue = data.data?.result?.[0]?.value?.[1]; + if (rawValue === undefined) return null; + const value = Number.parseFloat(rawValue); + return Number.isFinite(value) ? value : null; +} + +async function queryInstantMetricGroup( + endpoint: EndpointConfig, + metricName: string, +): Promise> { + const url = new URL(`${endpoint.url}/api/v1/query`); + url.searchParams.set("query", metricName); + + const response = await fetch(url.toString(), buildFetchOptions(endpoint)); + if (!response.ok) { + throw new Error( + `Failed to query metrics: ${response.status} ${response.statusText}`, + ); + } + + const data = (await response.json()) as VictoriaInstantResponse; + if (data.status !== "success") { + throw new Error(data.error || "Failed to query metrics"); + } + + const byServer = new Map(); + for (const res of data.data?.result ?? []) { + const serverId = res.metric?.server_id; + if (!serverId) continue; + const rawValue = res.value?.[1]; + if (rawValue === undefined) { + byServer.set(serverId, null); + continue; + } + const value = Number.parseFloat(rawValue); + byServer.set(serverId, Number.isFinite(value) ? value : null); + } + return byServer; +} + +async function queryRangeMetric( + endpoint: EndpointConfig, + options: { + metricName: string; + serverId: string; + start: Date; + end: Date; + stepSeconds: number; + }, +): Promise { + const url = new URL(`${endpoint.url}/api/v1/query_range`); + url.searchParams.set( + "query", + `${options.metricName}{server_id="${escapePromQL(options.serverId)}"}`, + ); + url.searchParams.set( + "start", + String(Math.floor(options.start.getTime() / 1000)), + ); + url.searchParams.set("end", String(Math.floor(options.end.getTime() / 1000))); + url.searchParams.set("step", String(options.stepSeconds)); + + const response = await fetch(url.toString(), buildFetchOptions(endpoint)); + if (!response.ok) { + throw new Error( + `Failed to query metrics range: ${response.status} ${response.statusText}`, + ); + } + + const data = (await response.json()) as VictoriaMatrixResponse; + if (data.status !== "success") { + throw new Error(data.error || "Failed to query metrics range"); + } + + return (data.data?.result?.[0]?.values ?? []) + .map(([timestamp, rawValue]) => ({ + timestamp: new Date(timestamp * 1000).toISOString(), + value: Number.parseFloat(rawValue), + })) + .filter((point) => Number.isFinite(point.value)); +} + +export function emptyHistory(): NodeMetricsHistory { + return { + cpuUsagePercent: [], + memoryUsagePercent: [], + memoryUsedBytes: [], + diskUsagePercent: [], + diskUsedBytes: [], + }; +} + +function escapePromQL(value: string) { + return value + .replace(/\\/g, "\\\\") + .replace(/"/g, '\\"') + .replace(/\n/g, "\\n"); +} From 63448eda0f8c96869e6272e5b15a31015de1f933 Mon Sep 17 00:00:00 2001 From: Techulus Agent Date: Thu, 11 Jun 2026 09:52:04 +1000 Subject: [PATCH 4/9] Clean up health metric conversion --- web/components/server/server-health-details.tsx | 10 +--------- web/db/queries.ts | 9 +-------- web/db/types.ts | 12 ++++++++++-- web/lib/placement-planner.ts | 9 ++------- web/lib/placement.ts | 15 ++------------- 5 files changed, 16 insertions(+), 39 deletions(-) diff --git a/web/components/server/server-health-details.tsx b/web/components/server/server-health-details.tsx index b9b4150..de6973e 100644 --- a/web/components/server/server-health-details.tsx +++ b/web/components/server/server-health-details.tsx @@ -13,17 +13,9 @@ import { HealthIndicator } from "@/components/cluster/health-indicator"; import { ResourceBar } from "@/components/cluster/resource-bar"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Separator } from "@/components/ui/separator"; -import type { Server } from "@/db/types"; +import type { HealthStats, Server } from "@/db/types"; import { fetcher } from "@/lib/fetcher"; -type HealthStats = { - cpuUsagePercent: number; - memoryUsagePercent: number; - memoryUsedMb: number; - diskUsagePercent: number; - diskUsedGb: number; -}; - type ServerHealthData = { healthStats: HealthStats | null; networkHealth: Server["networkHealth"]; diff --git a/web/db/queries.ts b/web/db/queries.ts index e003cee..7f48386 100644 --- a/web/db/queries.ts +++ b/web/db/queries.ts @@ -12,6 +12,7 @@ import { services, settings, } from "@/db/schema"; +import type { HealthStats } from "@/db/types"; import type { EmailAlertsConfig, SmtpConfig, @@ -23,14 +24,6 @@ import { queryNodeMetricsSnapshots, } from "@/lib/victoria-metrics"; -type HealthStats = { - cpuUsagePercent: number; - memoryUsagePercent: number; - memoryUsedMb: number; - diskUsagePercent: number; - diskUsedGb: number; -}; - export async function listProjects() { const projectList = await db .select() diff --git a/web/db/types.ts b/web/db/types.ts index 548c1fa..9c92d5d 100644 --- a/web/db/types.ts +++ b/web/db/types.ts @@ -8,11 +8,11 @@ import type { projects, rollouts, secrets, - serviceReplicas, + servers, servicePorts, + serviceReplicas, services, serviceVolumes, - servers, volumeBackups, workQueue, } from "./schema"; @@ -39,6 +39,14 @@ export type HealthStatus = Deployment["healthStatus"]; export type RolloutStatus = NonNullable; export type BuildStatus = NonNullable; +export type HealthStats = { + cpuUsagePercent: number; + memoryUsagePercent: number; + memoryUsedMb: number; + diskUsagePercent: number; + diskUsedGb: number; +}; + export type ServiceWithDetails = Service & { ports: ServicePort[]; configuredReplicas: Array; diff --git a/web/lib/placement-planner.ts b/web/lib/placement-planner.ts index a84e1f5..5d41801 100644 --- a/web/lib/placement-planner.ts +++ b/web/lib/placement-planner.ts @@ -1,4 +1,5 @@ import { createHash } from "node:crypto"; +import type { HealthStats } from "@/db/types"; export type PlacementResult = { serverId: string; count: number }[]; @@ -6,13 +7,7 @@ export type PlacementServerSnapshot = { id: string; status: string; wireguardIp: string | null; - healthStats?: { - cpuUsagePercent: number; - memoryUsagePercent: number; - memoryUsedMb: number; - diskUsagePercent: number; - diskUsedGb: number; - } | null; + healthStats?: HealthStats | null; containerHealth?: { runtimeResponsive: boolean; runningContainers: number; diff --git a/web/lib/placement.ts b/web/lib/placement.ts index e78133c..89a6a28 100644 --- a/web/lib/placement.ts +++ b/web/lib/placement.ts @@ -1,6 +1,7 @@ import { randomUUID } from "node:crypto"; import { and, eq, isNotNull } from "drizzle-orm"; import { db } from "@/db"; +import { metricSnapshotToHealthStats } from "@/db/queries"; import { servers, serviceReplicas, settings } from "@/db/schema"; import type { Service } from "@/db/types"; import { @@ -54,19 +55,7 @@ export async function calculateResourceAwarePlacement( const metrics = metricsByServer.get(server.id); return { ...server, - healthStats: metrics - ? { - cpuUsagePercent: metrics.cpuUsagePercent ?? 0, - memoryUsagePercent: metrics.memoryUsagePercent ?? 0, - memoryUsedMb: Math.round( - (metrics.memoryUsedBytes ?? 0) / 1024 / 1024, - ), - diskUsagePercent: metrics.diskUsagePercent ?? 0, - diskUsedGb: Math.round( - (metrics.diskUsedBytes ?? 0) / 1024 / 1024 / 1024, - ), - } - : null, + healthStats: metricSnapshotToHealthStats(metrics), }; }); From b1e07fd4db8a2cb27b0a07338ec3fc9ddc566611 Mon Sep 17 00:00:00 2001 From: Techulus Agent Date: Thu, 11 Jun 2026 21:14:29 +1000 Subject: [PATCH 5/9] Add stateful service soft deletes --- web/actions/backups.ts | 9 +- web/actions/projects.ts | 288 +++++++++++- .../projects/[slug]/[env]/deleted/page.tsx | 62 +++ .../[serviceId]/configuration/page.tsx | 33 +- web/app/api/projects/[id]/services/route.ts | 21 +- web/app/api/v1/agent/expected-state/route.ts | 9 +- .../service/deleted-services-panel.tsx | 135 ++++++ web/components/service/service-canvas.tsx | 60 +-- web/db/queries.ts | 40 +- web/db/schema.ts | 8 + web/lib/backup-scheduler.ts | 7 +- web/lib/inngest/events/index.ts | 20 +- web/lib/inngest/events/service-deletion.ts | 15 + web/lib/inngest/functions/index.ts | 5 + .../functions/service-deletion-workflow.ts | 416 ++++++++++++++++++ web/lib/scheduler.ts | 7 +- 16 files changed, 1042 insertions(+), 93 deletions(-) create mode 100644 web/app/(dashboard)/dashboard/projects/[slug]/[env]/deleted/page.tsx create mode 100644 web/components/service/deleted-services-panel.tsx create mode 100644 web/lib/inngest/events/service-deletion.ts create mode 100644 web/lib/inngest/functions/service-deletion-workflow.ts diff --git a/web/actions/backups.ts b/web/actions/backups.ts index 00817e0..28657cc 100644 --- a/web/actions/backups.ts +++ b/web/actions/backups.ts @@ -66,7 +66,10 @@ export async function restoreBackup( return { success: true }; } -export async function deleteBackup(backupId: string) { +export async function deleteBackup( + backupId: string, + options: { revalidate?: boolean } = {}, +) { const backup = await db .select({ status: volumeBackups.status, @@ -77,7 +80,9 @@ export async function deleteBackup(backupId: string) { .then((r) => r[0]); await db.delete(volumeBackups).where(eq(volumeBackups.id, backupId)); - revalidatePath(`/dashboard/projects`); + if (options.revalidate ?? true) { + revalidatePath(`/dashboard/projects`); + } if (backup?.status === "completed" && backup.storagePath) { const storageConfig = await getBackupStorageConfig(); diff --git a/web/actions/projects.ts b/web/actions/projects.ts index b855b9d..2ddff87 100644 --- a/web/actions/projects.ts +++ b/web/actions/projects.ts @@ -1,17 +1,17 @@ "use server"; import { randomUUID } from "node:crypto"; -import { z, ZodError } from "zod"; -import { and, eq, inArray } from "drizzle-orm"; -import { - nameSchema, - replicaCountSchema, - volumeNameSchema, - containerPathSchema, - githubRepoUrlSchema, -} from "@/lib/schemas"; -import { getZodErrorMessage } from "@/lib/utils"; +import cronstrue from "cronstrue"; +import { and, desc, eq, inArray } from "drizzle-orm"; +import { revalidatePath } from "next/cache"; +import { ZodError, z } from "zod"; import { db } from "@/db"; +import { + getBackupStorageConfig, + getEnvironment, + getProject, + getService, +} from "@/db/queries"; import { deploymentPorts, deployments, @@ -25,22 +25,27 @@ import { serviceReplicas, services, serviceVolumes, + volumeBackups, workQueue, } from "@/db/schema"; -import { revalidatePath } from "next/cache"; -import { enqueueWork } from "@/lib/work-queue"; -import { - type HealthCheckConfig as ServiceHealthCheckConfig, - type PortConfig, -} from "@/lib/service-config"; -import { slugify } from "@/lib/utils"; -import { getEnvironment, getProject, getService } from "@/db/queries"; -import { allocatePort } from "@/lib/port-allocation"; -import cronstrue from "cronstrue"; -import { startMigration } from "./migrations"; import { DEFAULT_RESOURCE_LIMITS } from "@/lib/constants"; import { inngest } from "@/lib/inngest/client"; import { inngestEvents } from "@/lib/inngest/events"; +import { allocatePort } from "@/lib/port-allocation"; +import { + containerPathSchema, + githubRepoUrlSchema, + nameSchema, + replicaCountSchema, + volumeNameSchema, +} from "@/lib/schemas"; +import type { + PortConfig, + HealthCheckConfig as ServiceHealthCheckConfig, +} from "@/lib/service-config"; +import { getZodErrorMessage, slugify } from "@/lib/utils"; +import { enqueueWork } from "@/lib/work-queue"; +import { startMigration } from "./migrations"; function isValidImageReferencePart(reference: string): boolean { const tagPattern = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,127}$/; @@ -455,8 +460,12 @@ export async function createService(input: CreateServiceInput) { return { id, name, image: finalImage, sourceType }; } -export async function deleteService(serviceId: string) { - const service = await getService(serviceId); +async function hardDeleteService(serviceId: string) { + const service = await db + .select() + .from(services) + .where(eq(services.id, serviceId)) + .then((r) => r[0]); if (!service) { throw new Error("Service not found"); } @@ -505,6 +514,239 @@ export async function deleteService(serviceId: string) { return { success: true }; } +export async function deleteService(serviceId: string) { + const service = await getService(serviceId); + if (!service) { + throw new Error("Service not found"); + } + + if (!service.stateful) { + return hardDeleteService(serviceId); + } + + const volumes = await db + .select() + .from(serviceVolumes) + .where(eq(serviceVolumes.serviceId, serviceId)); + + if (volumes.length === 0) { + return hardDeleteService(serviceId); + } + + const storageConfig = await getBackupStorageConfig(); + if (!storageConfig) { + throw new Error( + "Backup storage must be configured before deleting a stateful service", + ); + } + + if (service.deletionStatus && service.deletionStatus !== "failed") { + throw new Error("Deletion is already in progress for this service"); + } + + const runningDeployment = await db + .select({ + id: deployments.id, + serverId: deployments.serverId, + containerId: deployments.containerId, + }) + .from(deployments) + .where( + and( + eq(deployments.serviceId, serviceId), + eq(deployments.status, "running"), + ), + ) + .then((r) => r[0]); + + const reusableBackupIds: string[] = []; + + if (!runningDeployment || !runningDeployment.containerId) { + for (const volume of volumes) { + const latestBackup = await db + .select({ id: volumeBackups.id }) + .from(volumeBackups) + .where( + and( + eq(volumeBackups.volumeId, volume.id), + eq(volumeBackups.status, "completed"), + ), + ) + .orderBy(desc(volumeBackups.createdAt)) + .limit(1) + .then((r) => r[0]); + + if (!latestBackup) { + throw new Error( + "Stateful service must be running long enough to create a recoverable backup before deletion", + ); + } + + await db + .update(volumeBackups) + .set({ isDeletionBackup: true }) + .where(eq(volumeBackups.id, latestBackup.id)); + reusableBackupIds.push(latestBackup.id); + } + } + + await db + .update(services) + .set({ deletionStatus: "backing_up", deletionError: null }) + .where(eq(services.id, serviceId)); + + await inngest.send( + inngestEvents.serviceDeletionStarted.create({ + serviceId, + reusableBackupIds, + }), + ); + + revalidatePath("/dashboard/projects"); + return { success: true, softDeleteStarted: true }; +} + +export async function restoreDeletedService(serviceId: string) { + const service = await db + .select() + .from(services) + .where(eq(services.id, serviceId)) + .then((r) => r[0]); + + if (!service || !service.deletedAt) { + throw new Error("Deleted service not found"); + } + + if (service.deletionStatus && service.deletionStatus !== "failed") { + throw new Error("A deletion or restore operation is already in progress"); + } + + if (service.originalHostname) { + const existingHostname = await db + .select({ id: services.id }) + .from(services) + .where(eq(services.hostname, service.originalHostname)); + + if (existingHostname.some((s) => s.id !== serviceId)) { + throw new Error( + "Cannot restore because another service is using the original hostname", + ); + } + } + + const volumes = await db + .select({ id: serviceVolumes.id }) + .from(serviceVolumes) + .where(eq(serviceVolumes.serviceId, serviceId)); + + const backupIds: string[] = []; + for (const volume of volumes) { + const backup = await db + .select({ id: volumeBackups.id }) + .from(volumeBackups) + .where( + and( + eq(volumeBackups.volumeId, volume.id), + eq(volumeBackups.isDeletionBackup, true), + eq(volumeBackups.status, "completed"), + ), + ) + .orderBy(desc(volumeBackups.createdAt)) + .limit(1) + .then((r) => r[0]); + + if (!backup) { + throw new Error("Cannot restore because a retained backup is missing"); + } + + backupIds.push(backup.id); + } + + if (service.stateful) { + const existingReplicas = await db + .select({ id: serviceReplicas.id }) + .from(serviceReplicas) + .where(eq(serviceReplicas.serviceId, serviceId)); + + if (existingReplicas.length === 0) { + const targetServer = await db + .select({ id: servers.id }) + .from(servers) + .where(eq(servers.status, "online")) + .limit(1) + .then((r) => r[0]); + + if (!targetServer) { + throw new Error("Cannot restore because no online server is available"); + } + + await db.insert(serviceReplicas).values({ + id: randomUUID(), + serviceId, + serverId: targetServer.id, + count: 1, + }); + } + } + + await db + .update(services) + .set({ + deletedAt: null, + purgeAfter: null, + hostname: service.originalHostname, + originalHostname: null, + deletionStatus: "restoring", + deletionError: null, + }) + .where(eq(services.id, serviceId)); + + let deployResult: Awaited>; + try { + deployResult = await deployService(serviceId); + } catch (error) { + await db + .update(services) + .set({ + deletedAt: service.deletedAt, + purgeAfter: service.purgeAfter, + hostname: null, + originalHostname: service.originalHostname, + deletionStatus: "failed", + deletionError: + error instanceof Error ? error.message : "Restore deployment failed", + }) + .where(eq(services.id, serviceId)); + throw error; + } + + if (!("rolloutId" in deployResult) || !deployResult.rolloutId) { + await db + .update(services) + .set({ + deletedAt: service.deletedAt, + purgeAfter: service.purgeAfter, + hostname: null, + originalHostname: service.originalHostname, + deletionStatus: "failed", + deletionError: "Restore could not start a deployment", + }) + .where(eq(services.id, serviceId)); + throw new Error("Restore could not start a deployment"); + } + + await inngest.send( + inngestEvents.serviceRestoreStarted.create({ + serviceId, + rolloutId: deployResult.rolloutId, + backupIds, + }), + ); + + revalidatePath("/dashboard/projects"); + return { success: true }; +} + export async function updateServiceHostname( serviceId: string, hostname: string, diff --git a/web/app/(dashboard)/dashboard/projects/[slug]/[env]/deleted/page.tsx b/web/app/(dashboard)/dashboard/projects/[slug]/[env]/deleted/page.tsx new file mode 100644 index 0000000..c14075a --- /dev/null +++ b/web/app/(dashboard)/dashboard/projects/[slug]/[env]/deleted/page.tsx @@ -0,0 +1,62 @@ +import { ArrowLeft } from "lucide-react"; +import Link from "next/link"; +import { notFound } from "next/navigation"; +import { SetBreadcrumbs } from "@/components/core/breadcrumb-data"; +import { DeletedServicesPanel } from "@/components/service/deleted-services-panel"; +import { Button } from "@/components/ui/button"; +import { + getEnvironmentByName, + getProjectBySlug, + listDeletedServices, +} from "@/db/queries"; + +export default async function DeletedServicesPage({ + params, +}: { + params: Promise<{ slug: string; env: string }>; +}) { + const { slug, env: envName } = await params; + const project = await getProjectBySlug(slug); + + if (!project) { + notFound(); + } + + const environment = await getEnvironmentByName(project.id, envName); + + if (!environment) { + notFound(); + } + + const deletedServices = await listDeletedServices(project.id, environment.id); + const environmentHref = `/dashboard/projects/${slug}/${envName}`; + + return ( + <> + +

+ + ); +} diff --git a/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx b/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx index 0cd418e..020c3db 100644 --- a/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx +++ b/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx @@ -1,21 +1,22 @@ "use client"; -import { useCallback, useState } from "react"; +import { Trash2 } from "lucide-react"; import { useRouter } from "next/navigation"; +import { useCallback, useState } from "react"; import { toast } from "sonner"; import { useSWRConfig } from "swr"; import { deleteService } from "@/actions/projects"; -import { useService } from "@/components/service/service-layout-client"; -import { SourceSection } from "@/components/service/details/source-section"; -import { ReplicasSection } from "@/components/service/details/replicas-section"; -import { VolumesSection } from "@/components/service/details/volumes-section"; -import { SecretsSection } from "@/components/service/details/secrets-section"; -import { PortsSection } from "@/components/service/details/ports-section"; -import { TCPProxySection } from "@/components/service/details/tcp-proxy-section"; import { HealthCheckSection } from "@/components/service/details/health-check-section"; +import { PortsSection } from "@/components/service/details/ports-section"; +import { ReplicasSection } from "@/components/service/details/replicas-section"; import { ResourceLimitsSection } from "@/components/service/details/resource-limits-section"; -import { StartCommandSection } from "@/components/service/details/start-command-section"; import { ScheduleSection } from "@/components/service/details/schedule-section"; +import { SecretsSection } from "@/components/service/details/secrets-section"; +import { SourceSection } from "@/components/service/details/source-section"; +import { StartCommandSection } from "@/components/service/details/start-command-section"; +import { TCPProxySection } from "@/components/service/details/tcp-proxy-section"; +import { VolumesSection } from "@/components/service/details/volumes-section"; +import { useService } from "@/components/service/service-layout-client"; import { AlertDialog, AlertDialogAction, @@ -29,7 +30,6 @@ import { } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { Item, ItemContent, ItemMedia, ItemTitle } from "@/components/ui/item"; -import { Trash2 } from "lucide-react"; export default function ConfigurationPage() { const router = useRouter(); @@ -47,6 +47,9 @@ export default function ConfigurationPage() { try { await deleteService(service.id); await globalMutate(`/api/projects/${service.projectId}/services`); + toast.success( + service.stateful ? "Delete workflow started" : "Service deleted", + ); router.push(`/dashboard/projects/${projectSlug}/${envName}`); } finally { setIsDeleting(false); @@ -89,8 +92,9 @@ export default function ConfigurationPage() { Delete this service

- Once deleted, this service and all its deployments will be - permanently removed. + {service.stateful + ? "Stateful services are backed up and retained for 7 days before permanent purge." + : "Once deleted, this service and all its deployments will be permanently removed."}

@@ -101,8 +105,9 @@ export default function ConfigurationPage() { Delete {service.name}? - This action cannot be undone. This will permanently delete - the service and all its deployments. + {service.stateful + ? "This starts a backup-first delete workflow. The service will be restorable from Deleted services until its retention window expires." + : "This action cannot be undone. This will permanently delete the service and all its deployments."} diff --git a/web/app/api/projects/[id]/services/route.ts b/web/app/api/projects/[id]/services/route.ts index 734d663..db14030 100644 --- a/web/app/api/projects/[id]/services/route.ts +++ b/web/app/api/projects/[id]/services/route.ts @@ -1,21 +1,21 @@ export const dynamic = "force-dynamic"; -import { auth } from "@/lib/auth"; +import { and, desc, eq, isNull } from "drizzle-orm"; import { headers } from "next/headers"; import { db } from "@/db"; import { - services, + builds, + deploymentPorts, + deployments, + rollouts, + secrets, + servers, servicePorts, serviceReplicas, + services, serviceVolumes, - deployments, - deploymentPorts, - servers, - secrets, - rollouts, - builds, } from "@/db/schema"; -import { and, eq, desc } from "drizzle-orm"; +import { auth } from "@/lib/auth"; export async function GET( request: Request, @@ -41,8 +41,9 @@ export async function GET( ? and( eq(services.projectId, projectId), eq(services.environmentId, environmentId), + isNull(services.deletedAt), ) - : eq(services.projectId, projectId), + : and(eq(services.projectId, projectId), isNull(services.deletedAt)), ) .orderBy(services.createdAt); diff --git a/web/app/api/v1/agent/expected-state/route.ts b/web/app/api/v1/agent/expected-state/route.ts index f364cd4..8cca75c 100644 --- a/web/app/api/v1/agent/expected-state/route.ts +++ b/web/app/api/v1/agent/expected-state/route.ts @@ -1,4 +1,4 @@ -import { and, eq, inArray } from "drizzle-orm"; +import { and, eq, inArray, isNull } from "drizzle-orm"; import { type NextRequest, NextResponse } from "next/server"; import { db } from "@/db"; import { @@ -62,7 +62,7 @@ export async function GET(request: NextRequest) { const service = await db .select() .from(services) - .where(eq(services.id, dep.serviceId)) + .where(and(eq(services.id, dep.serviceId), isNull(services.deletedAt))) .then((r) => r[0]); if (!service) continue; @@ -134,7 +134,10 @@ export async function GET(request: NextRequest) { }); } - const allServices = await db.select().from(services); + const allServices = await db + .select() + .from(services) + .where(isNull(services.deletedAt)); const dnsRecords = []; for (const service of allServices) { diff --git a/web/components/service/deleted-services-panel.tsx b/web/components/service/deleted-services-panel.tsx new file mode 100644 index 0000000..5fa22d2 --- /dev/null +++ b/web/components/service/deleted-services-panel.tsx @@ -0,0 +1,135 @@ +"use client"; + +import { RotateCcw } from "lucide-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { toast } from "sonner"; +import { restoreDeletedService } from "@/actions/projects"; +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, +} from "@/components/ui/alert-dialog"; +import { Button } from "@/components/ui/button"; +import { Empty, EmptyDescription, EmptyTitle } from "@/components/ui/empty"; +import type { Service } from "@/db/types"; + +type DeletedService = Pick< + Service, + | "id" + | "name" + | "image" + | "deletedAt" + | "purgeAfter" + | "deletionStatus" + | "deletionError" +>; + +function formatDate(value: Date | string | null) { + if (!value) return "Unknown"; + return new Date(value).toLocaleString(); +} + +export function DeletedServicesPanel({ + services, +}: { + services: DeletedService[]; +}) { + const router = useRouter(); + const [restoreId, setRestoreId] = useState(null); + + const handleRestore = async (serviceId: string) => { + setRestoreId(serviceId); + try { + await restoreDeletedService(serviceId); + toast.success("Restore started"); + router.refresh(); + } catch (error) { + toast.error( + error instanceof Error ? error.message : "Failed to restore service", + ); + } finally { + setRestoreId(null); + } + }; + + if (services.length === 0) { + return ( + + No deleted services + + Stateful services deleted from this environment will appear here until + their retention window expires. + + + ); + } + + return ( +
+ {services.map((service) => ( +
+
+
+

{service.name}

+ {service.deletionStatus && ( + + {service.deletionStatus} + + )} +
+

+ {service.image} +

+

+ Deleted {formatDate(service.deletedAt)}. Purges{" "} + {formatDate(service.purgeAfter)}. +

+ {service.deletionError && ( +

+ {service.deletionError} +

+ )} +
+ + + } + > + + {restoreId === service.id ? "Restoring..." : "Restore"} + + + + Restore {service.name}? + + This will recreate the service deployment and restore its + retained volumes from the deletion backup. + + + + Cancel + handleRestore(service.id)} + disabled={restoreId === service.id} + > + Restore + + + + +
+ ))} +
+ ); +} diff --git a/web/components/service/service-canvas.tsx b/web/components/service/service-canvas.tsx index c9e3fe3..f488be4 100644 --- a/web/components/service/service-canvas.tsx +++ b/web/components/service/service-canvas.tsx @@ -1,9 +1,5 @@ "use client"; -import { useMemo, useState } from "react"; -import { useRouter } from "next/navigation"; -import Link from "next/link"; -import useSWR from "swr"; import { ArrowLeftRight, Box, @@ -13,30 +9,15 @@ import { Lock, Network, Settings, + Trash2, Upload, } from "lucide-react"; -import type { Environment, ServiceWithDetails } from "@/db/types"; -import { fetcher } from "@/lib/fetcher"; -import { cn } from "@/lib/utils"; -import { - AddServiceMenu, - CreateDockerServiceDialog, - CreateGitHubServiceDialog, -} from "./create-service-dialog"; -import { Button } from "@/components/ui/button"; -import { getStatusColorFromDeployments } from "@/components/ui/canvas-wrapper"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { useMemo, useState } from "react"; +import useSWR from "swr"; import { buttonVariants } from "@/components/ui/button"; -import { - NativeSelect, - NativeSelectOption, -} from "@/components/ui/native-select"; -import { - Empty, - EmptyContent, - EmptyDescription, - EmptyMedia, - EmptyTitle, -} from "@/components/ui/empty"; +import { getStatusColorFromDeployments } from "@/components/ui/canvas-wrapper"; import { ContextMenu, ContextMenuContent, @@ -47,6 +28,25 @@ import { ContextMenuSubTrigger, ContextMenuTrigger, } from "@/components/ui/context-menu"; +import { + Empty, + EmptyContent, + EmptyDescription, + EmptyMedia, + EmptyTitle, +} from "@/components/ui/empty"; +import { + NativeSelect, + NativeSelectOption, +} from "@/components/ui/native-select"; +import type { Environment, ServiceWithDetails } from "@/db/types"; +import { fetcher } from "@/lib/fetcher"; +import { cn } from "@/lib/utils"; +import { + AddServiceMenu, + CreateDockerServiceDialog, + CreateGitHubServiceDialog, +} from "./create-service-dialog"; function ServiceCardSkeleton() { return ( @@ -105,6 +105,16 @@ function EnvironmentSelector({ ))} + + + Deleted + = Events[TName]["data"]; @@ -48,6 +51,9 @@ export const inngestEvents = { restoreCompleted: defineEvent("restore/completed"), restoreFailed: defineEvent("restore/failed"), + serviceDeletionStarted: defineEvent("service-deletion/started"), + serviceRestoreStarted: defineEvent("service-restore/started"), + buildTrigger: defineEvent("build/trigger"), buildStarted: defineEvent("build/started"), buildCancelled: defineEvent("build/cancelled"), diff --git a/web/lib/inngest/events/service-deletion.ts b/web/lib/inngest/events/service-deletion.ts new file mode 100644 index 0000000..ce9a65e --- /dev/null +++ b/web/lib/inngest/events/service-deletion.ts @@ -0,0 +1,15 @@ +export type ServiceDeletionEvents = { + "service-deletion/started": { + data: { + serviceId: string; + reusableBackupIds: string[]; + }; + }; + "service-restore/started": { + data: { + serviceId: string; + rolloutId: string; + backupIds: string[]; + }; + }; +}; diff --git a/web/lib/inngest/functions/index.ts b/web/lib/inngest/functions/index.ts index 5a6172d..df59c8c 100644 --- a/web/lib/inngest/functions/index.ts +++ b/web/lib/inngest/functions/index.ts @@ -15,3 +15,8 @@ export { onDeploymentFailed } from "./on-deployment-failed"; export { restoreTriggerWorkflow } from "./restore-trigger-workflow"; export { onRestoreFailed, restoreWorkflow } from "./restore-workflow"; export { rolloutWorkflow } from "./rollout-workflow"; +export { + expiredDeletedServicesPurge, + serviceDeletionWorkflow, + serviceRestoreWorkflow, +} from "./service-deletion-workflow"; diff --git a/web/lib/inngest/functions/service-deletion-workflow.ts b/web/lib/inngest/functions/service-deletion-workflow.ts new file mode 100644 index 0000000..7b5bbfa --- /dev/null +++ b/web/lib/inngest/functions/service-deletion-workflow.ts @@ -0,0 +1,416 @@ +import { randomUUID } from "node:crypto"; +import { and, desc, eq, inArray, isNotNull, lte } from "drizzle-orm"; +import { cron } from "inngest"; +import { deleteBackup } from "@/actions/backups"; +import { db } from "@/db"; +import { getBackupStorageConfig } from "@/db/queries"; +import { + deploymentPorts, + deployments, + secrets, + services, + serviceVolumes, + volumeBackups, +} from "@/db/schema"; +import { enqueueWork } from "@/lib/work-queue"; +import { inngest } from "../client"; +import { inngestEvents } from "../events"; + +const DELETED_SERVICE_RETENTION_DAYS = 7; + +function purgeDateFrom(date: Date) { + const purgeAfter = new Date(date); + purgeAfter.setDate(purgeAfter.getDate() + DELETED_SERVICE_RETENTION_DAYS); + return purgeAfter; +} + +export const serviceDeletionWorkflow = inngest.createFunction( + { + id: "service-deletion-workflow", + triggers: [inngestEvents.serviceDeletionStarted], + }, + async ({ event, step, group }) => { + const { serviceId, reusableBackupIds } = event.data; + + const setup = await step.run("setup-delete", async () => { + const storageConfig = await getBackupStorageConfig(); + if (!storageConfig) { + throw new Error("Backup storage not configured"); + } + + const service = await db + .select() + .from(services) + .where(eq(services.id, serviceId)) + .then((r) => r[0]); + + if (!service) { + throw new Error("Service not found"); + } + + const volumes = await db + .select() + .from(serviceVolumes) + .where(eq(serviceVolumes.serviceId, serviceId)); + + const runningDeployment = await db + .select({ + id: deployments.id, + serverId: deployments.serverId, + containerId: deployments.containerId, + }) + .from(deployments) + .where( + and( + eq(deployments.serviceId, serviceId), + eq(deployments.status, "running"), + ), + ) + .then((r) => r[0]); + + return { service, storageConfig, volumes, runningDeployment }; + }); + + let backupIds = [...reusableBackupIds]; + let newBackupIds: string[] = []; + + if (backupIds.length === 0) { + const createdBackupIds = await step.run( + "start-delete-backups", + async () => { + const deployment = setup.runningDeployment; + if (!deployment?.containerId) { + throw new Error("No running deployment found for deletion backup"); + } + + const ids: string[] = []; + for (const volume of setup.volumes) { + const backupId = randomUUID(); + ids.push(backupId); + const storagePath = `deleted-services/${serviceId}/${volume.name}/${backupId}.tar.gz`; + + await db.insert(volumeBackups).values({ + id: backupId, + volumeId: volume.id, + volumeName: volume.name, + serviceId, + serverId: deployment.serverId, + status: "pending", + storagePath, + isDeletionBackup: true, + }); + + await enqueueWork(deployment.serverId, "backup_volume", { + backupId, + serviceId, + containerId: deployment.containerId, + volumeName: volume.name, + storagePath, + storageConfig: { + provider: setup.storageConfig.provider, + bucket: setup.storageConfig.bucket, + region: setup.storageConfig.region, + endpoint: setup.storageConfig.endpoint, + accessKey: setup.storageConfig.accessKey, + secretKey: setup.storageConfig.secretKey, + }, + }); + } + return ids; + }, + ); + + newBackupIds = createdBackupIds; + backupIds = createdBackupIds; + } + + if (newBackupIds.length > 0) { + const backupResults = await Promise.all( + newBackupIds.map((backupId) => + group.parallel(() => { + const completed = step + .waitForEvent(`wait-delete-backup-${backupId}`, { + event: inngestEvents.backupCompleted, + timeout: "30m", + if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "completed" as const, result })); + + const failed = step + .waitForEvent(`wait-delete-backup-failed-${backupId}`, { + event: inngestEvents.backupFailed, + timeout: "30m", + if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "failed" as const, result })); + + return Promise.race([completed, failed]); + }), + ), + ); + + const timedOut = backupResults.some((r) => r.result === null); + const failed = backupResults.find((r) => r.status === "failed"); + if (timedOut || failed) { + await step.run("mark-delete-backup-failed", async () => { + await db + .update(services) + .set({ + deletionStatus: "failed", + deletionError: + failed?.result?.data.error || "Deletion backup timed out", + }) + .where(eq(services.id, serviceId)); + }); + return { status: "failed", reason: timedOut ? "timeout" : "backup" }; + } + } + + await step.run("cleanup-service", async () => { + await db + .update(services) + .set({ deletionStatus: "deleting", deletionError: null }) + .where(eq(services.id, serviceId)); + + const allDeployments = await db + .select() + .from(deployments) + .where(eq(deployments.serviceId, serviceId)); + + for (const deployment of allDeployments) { + if (deployment.status === "running" && deployment.containerId) { + await db + .update(deployments) + .set({ status: "stopping" }) + .where(eq(deployments.id, deployment.id)); + + await enqueueWork(deployment.serverId, "stop", { + deploymentId: deployment.id, + containerId: deployment.containerId, + }); + } + + await db + .delete(deploymentPorts) + .where(eq(deploymentPorts.deploymentId, deployment.id)); + } + + await db.delete(deployments).where(eq(deployments.serviceId, serviceId)); + + const cleanupServerId = + setup.service.lockedServerId ?? setup.runningDeployment?.serverId; + if (cleanupServerId && setup.volumes.length > 0) { + await enqueueWork(cleanupServerId, "cleanup_volumes", { serviceId }); + } + + const deletedAt = new Date(); + await db + .update(services) + .set({ + deletedAt, + purgeAfter: purgeDateFrom(deletedAt), + originalHostname: setup.service.hostname, + hostname: null, + deletionStatus: null, + deletionError: null, + }) + .where(eq(services.id, serviceId)); + }); + + return { status: "deleted", serviceId, backupIds }; + }, +); + +export const serviceRestoreWorkflow = inngest.createFunction( + { + id: "service-restore-workflow", + triggers: [inngestEvents.serviceRestoreStarted], + }, + async ({ event, step, group }) => { + const { serviceId, rolloutId, backupIds } = event.data; + + const deploymentResult = await group.parallel(() => { + const healthy = step + .waitForEvent("wait-restore-deployment-healthy", { + event: inngestEvents.deploymentHealthy, + timeout: "15m", + if: `async.data.rolloutId == "${rolloutId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "healthy" as const, result })); + + const failed = step + .waitForEvent("wait-restore-deployment-failed", { + event: inngestEvents.deploymentFailed, + timeout: "15m", + if: `async.data.rolloutId == "${rolloutId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "failed" as const, result })); + + return Promise.race([healthy, failed]); + }); + + if (!deploymentResult.result || deploymentResult.status === "failed") { + await step.run("mark-restore-deployment-failed", async () => { + const errorMessage = + deploymentResult.status === "failed" + ? deploymentResult.result?.data.reason + : undefined; + await db + .update(services) + .set({ + deletionStatus: "failed", + deletionError: + errorMessage || "Restore deployment did not become healthy", + }) + .where(eq(services.id, serviceId)); + }); + return { status: "failed", reason: "deployment" }; + } + + await step.run("restore-deletion-backups", async () => { + const storageConfig = await getBackupStorageConfig(); + if (!storageConfig) { + throw new Error("Backup storage not configured"); + } + + const deployment = await db + .select({ + serverId: deployments.serverId, + containerId: deployments.containerId, + }) + .from(deployments) + .where( + and( + eq(deployments.serviceId, serviceId), + inArray(deployments.status, ["healthy", "running"]), + ), + ) + .orderBy(desc(deployments.createdAt)) + .limit(1) + .then((r) => r[0]); + + if (!deployment) { + throw new Error("No deployment found for restore"); + } + + const backups = await db + .select() + .from(volumeBackups) + .where(inArray(volumeBackups.id, backupIds)); + + for (const backup of backups) { + if (!backup.storagePath || !backup.checksum) { + throw new Error("Backup data is incomplete"); + } + + await enqueueWork(deployment.serverId, "restore_volume", { + backupId: backup.id, + serviceId, + containerId: deployment.containerId ?? undefined, + volumeName: backup.volumeName, + storagePath: backup.storagePath, + expectedChecksum: backup.checksum, + isMigrationRestore: false, + storageConfig: { + provider: storageConfig.provider, + bucket: storageConfig.bucket, + region: storageConfig.region, + endpoint: storageConfig.endpoint, + accessKey: storageConfig.accessKey, + secretKey: storageConfig.secretKey, + }, + }); + } + }); + + const restoreResults = await Promise.all( + backupIds.map((backupId) => + group.parallel(() => { + const completed = step + .waitForEvent(`wait-delete-restore-${backupId}`, { + event: inngestEvents.restoreCompleted, + timeout: "30m", + if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "completed" as const, result })); + + const failed = step + .waitForEvent(`wait-delete-restore-failed-${backupId}`, { + event: inngestEvents.restoreFailed, + timeout: "30m", + if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "failed" as const, result })); + + return Promise.race([completed, failed]); + }), + ), + ); + + const failed = restoreResults.find((r) => r.status === "failed"); + const timedOut = restoreResults.some((r) => r.result === null); + if (failed || timedOut) { + await step.run("mark-restore-failed", async () => { + await db + .update(services) + .set({ + deletionStatus: "failed", + deletionError: + failed?.result?.data.error || "Volume restore timed out", + }) + .where(eq(services.id, serviceId)); + }); + return { status: "failed", reason: failed ? "restore" : "timeout" }; + } + + await step.run("mark-restore-complete", async () => { + await db + .update(services) + .set({ deletionStatus: null, deletionError: null }) + .where(eq(services.id, serviceId)); + }); + + return { status: "restored", serviceId }; + }, +); + +export const expiredDeletedServicesPurge = inngest.createFunction( + { + id: "cron-expired-deleted-services-purge", + triggers: [cron("0 4 * * *")], + singleton: { mode: "skip" }, + }, + async ({ step }) => { + await step.run("purge-expired-deleted-services", async () => { + const expiredServices = await db + .select({ id: services.id }) + .from(services) + .where( + and( + isNotNull(services.deletedAt), + isNotNull(services.purgeAfter), + lte(services.purgeAfter, new Date()), + ), + ); + + for (const service of expiredServices) { + const backups = await db + .select({ id: volumeBackups.id }) + .from(volumeBackups) + .where( + and( + eq(volumeBackups.serviceId, service.id), + eq(volumeBackups.isDeletionBackup, true), + ), + ); + + for (const backup of backups) { + await deleteBackup(backup.id, { revalidate: false }); + } + + await db.delete(secrets).where(eq(secrets.serviceId, service.id)); + await db.delete(services).where(eq(services.id, service.id)); + } + }); + }, +); diff --git a/web/lib/scheduler.ts b/web/lib/scheduler.ts index fb4bef9..263722b 100644 --- a/web/lib/scheduler.ts +++ b/web/lib/scheduler.ts @@ -1,5 +1,5 @@ import { CronExpressionParser } from "cron-parser"; -import { and, eq, inArray, isNotNull, lt, ne, sql } from "drizzle-orm"; +import { and, eq, inArray, isNotNull, isNull, lt, ne, sql } from "drizzle-orm"; import { triggerBuild } from "@/actions/builds"; import { deployService } from "@/actions/projects"; import { db } from "@/db"; @@ -46,6 +46,7 @@ export async function triggerRecoveryForOfflineServers( inArray(deployments.status, activeStatuses), eq(services.autoPlace, true), eq(services.stateful, false), + isNull(services.deletedAt), ), ); @@ -161,7 +162,9 @@ export async function checkAndRunScheduledDeployments(): Promise { lastScheduledDeploymentRunAt: services.lastScheduledDeploymentRunAt, }) .from(services) - .where(isNotNull(services.deploymentSchedule)); + .where( + and(isNotNull(services.deploymentSchedule), isNull(services.deletedAt)), + ); if (scheduledServices.length === 0) return; From 62c5d553c4545a6b0d0750f48973ac596d5592a4 Mon Sep 17 00:00:00 2001 From: Techulus Agent Date: Fri, 12 Jun 2026 00:08:23 +1000 Subject: [PATCH 6/9] Fix stateful service restore follow-ups --- web/actions/projects.ts | 114 +-- web/lib/inngest/events/service-deletion.ts | 2 +- .../functions/service-deletion-workflow.ts | 668 ++++++++++-------- 3 files changed, 441 insertions(+), 343 deletions(-) diff --git a/web/actions/projects.ts b/web/actions/projects.ts index 2ddff87..cce9c39 100644 --- a/web/actions/projects.ts +++ b/web/actions/projects.ts @@ -31,6 +31,10 @@ import { import { DEFAULT_RESOURCE_LIMITS } from "@/lib/constants"; import { inngest } from "@/lib/inngest/client"; import { inngestEvents } from "@/lib/inngest/events"; +import { + calculateResourceAwarePlacement, + replaceServiceReplicaPlacements, +} from "@/lib/placement"; import { allocatePort } from "@/lib/port-allocation"; import { containerPathSchema, @@ -45,6 +49,7 @@ import type { } from "@/lib/service-config"; import { getZodErrorMessage, slugify } from "@/lib/utils"; import { enqueueWork } from "@/lib/work-queue"; +import { deleteBackup } from "./backups"; import { startMigration } from "./migrations"; function isValidImageReferencePart(reference: string): boolean { @@ -508,6 +513,15 @@ async function hardDeleteService(serviceId: string) { } } + const backups = await db + .select({ id: volumeBackups.id }) + .from(volumeBackups) + .where(eq(volumeBackups.serviceId, serviceId)); + + for (const backup of backups) { + await deleteBackup(backup.id, { revalidate: false }); + } + await db.delete(secrets).where(eq(secrets.serviceId, serviceId)); await db.delete(services).where(eq(services.id, serviceId)); @@ -595,12 +609,24 @@ export async function deleteService(serviceId: string) { .set({ deletionStatus: "backing_up", deletionError: null }) .where(eq(services.id, serviceId)); - await inngest.send( - inngestEvents.serviceDeletionStarted.create({ - serviceId, - reusableBackupIds, - }), - ); + try { + await inngest.send( + inngestEvents.serviceDeletionStarted.create({ + serviceId, + reusableBackupIds, + }), + ); + } catch (error) { + await db + .update(services) + .set({ + deletionStatus: "failed", + deletionError: + error instanceof Error ? error.message : "Deletion workflow failed", + }) + .where(eq(services.id, serviceId)); + throw error; + } revalidatePath("/dashboard/projects"); return { success: true, softDeleteStarted: true }; @@ -662,87 +688,65 @@ export async function restoreDeletedService(serviceId: string) { backupIds.push(backup.id); } + let targetServerId: string | null = null; + if (service.stateful) { const existingReplicas = await db - .select({ id: serviceReplicas.id }) + .select({ + id: serviceReplicas.id, + serverId: serviceReplicas.serverId, + count: serviceReplicas.count, + serverStatus: servers.status, + }) .from(serviceReplicas) + .leftJoin(servers, eq(serviceReplicas.serverId, servers.id)) .where(eq(serviceReplicas.serviceId, serviceId)); - if (existingReplicas.length === 0) { - const targetServer = await db - .select({ id: servers.id }) - .from(servers) - .where(eq(servers.status, "online")) - .limit(1) - .then((r) => r[0]); + const activeReplica = existingReplicas.find((r) => r.count > 0); - if (!targetServer) { + if (activeReplica?.serverStatus === "online") { + targetServerId = activeReplica.serverId; + } else { + const placements = await calculateResourceAwarePlacement(service, 1); + const targetPlacement = placements[0]; + if (!targetPlacement) { throw new Error("Cannot restore because no online server is available"); } - await db.insert(serviceReplicas).values({ - id: randomUUID(), - serviceId, - serverId: targetServer.id, - count: 1, - }); + targetServerId = targetPlacement.serverId; + await replaceServiceReplicaPlacements(serviceId, placements); } } await db .update(services) .set({ - deletedAt: null, - purgeAfter: null, - hostname: service.originalHostname, - originalHostname: null, deletionStatus: "restoring", deletionError: null, + lockedServerId: targetServerId ?? service.lockedServerId, }) .where(eq(services.id, serviceId)); - let deployResult: Awaited>; try { - deployResult = await deployService(serviceId); + await inngest.send( + inngestEvents.serviceRestoreStarted.create({ + serviceId, + targetServerId, + backupIds, + }), + ); } catch (error) { await db .update(services) .set({ - deletedAt: service.deletedAt, - purgeAfter: service.purgeAfter, - hostname: null, - originalHostname: service.originalHostname, deletionStatus: "failed", deletionError: - error instanceof Error ? error.message : "Restore deployment failed", + error instanceof Error ? error.message : "Restore workflow failed", }) .where(eq(services.id, serviceId)); throw error; } - if (!("rolloutId" in deployResult) || !deployResult.rolloutId) { - await db - .update(services) - .set({ - deletedAt: service.deletedAt, - purgeAfter: service.purgeAfter, - hostname: null, - originalHostname: service.originalHostname, - deletionStatus: "failed", - deletionError: "Restore could not start a deployment", - }) - .where(eq(services.id, serviceId)); - throw new Error("Restore could not start a deployment"); - } - - await inngest.send( - inngestEvents.serviceRestoreStarted.create({ - serviceId, - rolloutId: deployResult.rolloutId, - backupIds, - }), - ); - revalidatePath("/dashboard/projects"); return { success: true }; } diff --git a/web/lib/inngest/events/service-deletion.ts b/web/lib/inngest/events/service-deletion.ts index ce9a65e..5af9739 100644 --- a/web/lib/inngest/events/service-deletion.ts +++ b/web/lib/inngest/events/service-deletion.ts @@ -8,7 +8,7 @@ export type ServiceDeletionEvents = { "service-restore/started": { data: { serviceId: string; - rolloutId: string; + targetServerId: string | null; backupIds: string[]; }; }; diff --git a/web/lib/inngest/functions/service-deletion-workflow.ts b/web/lib/inngest/functions/service-deletion-workflow.ts index 7b5bbfa..b3071c0 100644 --- a/web/lib/inngest/functions/service-deletion-workflow.ts +++ b/web/lib/inngest/functions/service-deletion-workflow.ts @@ -1,7 +1,8 @@ import { randomUUID } from "node:crypto"; -import { and, desc, eq, inArray, isNotNull, lte } from "drizzle-orm"; +import { and, eq, inArray, isNotNull, lte } from "drizzle-orm"; import { cron } from "inngest"; import { deleteBackup } from "@/actions/backups"; +import { deployService } from "@/actions/projects"; import { db } from "@/db"; import { getBackupStorageConfig } from "@/db/queries"; import { @@ -18,12 +19,27 @@ import { inngestEvents } from "../events"; const DELETED_SERVICE_RETENTION_DAYS = 7; +async function markServiceDeletionFailed(serviceId: string, error: unknown) { + await db + .update(services) + .set({ + deletionStatus: "failed", + deletionError: + error instanceof Error ? error.message : "Service operation failed", + }) + .where(eq(services.id, serviceId)); +} + function purgeDateFrom(date: Date) { const purgeAfter = new Date(date); purgeAfter.setDate(purgeAfter.getDate() + DELETED_SERVICE_RETENTION_DAYS); return purgeAfter; } +function restoreDate(value: Date | string | null) { + return value ? new Date(value) : null; +} + export const serviceDeletionWorkflow = inngest.createFunction( { id: "service-deletion-workflow", @@ -32,113 +48,301 @@ export const serviceDeletionWorkflow = inngest.createFunction( async ({ event, step, group }) => { const { serviceId, reusableBackupIds } = event.data; - const setup = await step.run("setup-delete", async () => { - const storageConfig = await getBackupStorageConfig(); - if (!storageConfig) { - throw new Error("Backup storage not configured"); - } + try { + const setup = await step.run("setup-delete", async () => { + const storageConfig = await getBackupStorageConfig(); + if (!storageConfig) { + throw new Error("Backup storage not configured"); + } - const service = await db - .select() - .from(services) - .where(eq(services.id, serviceId)) - .then((r) => r[0]); + const service = await db + .select() + .from(services) + .where(eq(services.id, serviceId)) + .then((r) => r[0]); + + if (!service) { + throw new Error("Service not found"); + } + + const volumes = await db + .select() + .from(serviceVolumes) + .where(eq(serviceVolumes.serviceId, serviceId)); + + const runningDeployment = await db + .select({ + id: deployments.id, + serverId: deployments.serverId, + containerId: deployments.containerId, + }) + .from(deployments) + .where( + and( + eq(deployments.serviceId, serviceId), + eq(deployments.status, "running"), + ), + ) + .then((r) => r[0]); + + return { service, storageConfig, volumes, runningDeployment }; + }); + + let backupIds = [...reusableBackupIds]; + let newBackupIds: string[] = []; + + if (backupIds.length === 0) { + const createdBackupIds = await step.run( + "start-delete-backups", + async () => { + const deployment = setup.runningDeployment; + if (!deployment?.containerId) { + throw new Error( + "No running deployment found for deletion backup", + ); + } + + const ids: string[] = []; + for (const volume of setup.volumes) { + const backupId = randomUUID(); + ids.push(backupId); + const storagePath = `deleted-services/${serviceId}/${volume.name}/${backupId}.tar.gz`; + + await db.insert(volumeBackups).values({ + id: backupId, + volumeId: volume.id, + volumeName: volume.name, + serviceId, + serverId: deployment.serverId, + status: "pending", + storagePath, + isDeletionBackup: true, + }); + + await enqueueWork(deployment.serverId, "backup_volume", { + backupId, + serviceId, + containerId: deployment.containerId, + volumeName: volume.name, + storagePath, + storageConfig: { + provider: setup.storageConfig.provider, + bucket: setup.storageConfig.bucket, + region: setup.storageConfig.region, + endpoint: setup.storageConfig.endpoint, + accessKey: setup.storageConfig.accessKey, + secretKey: setup.storageConfig.secretKey, + }, + }); + } + return ids; + }, + ); - if (!service) { - throw new Error("Service not found"); + newBackupIds = createdBackupIds; + backupIds = createdBackupIds; } - const volumes = await db - .select() - .from(serviceVolumes) - .where(eq(serviceVolumes.serviceId, serviceId)); - - const runningDeployment = await db - .select({ - id: deployments.id, - serverId: deployments.serverId, - containerId: deployments.containerId, - }) - .from(deployments) - .where( - and( - eq(deployments.serviceId, serviceId), - eq(deployments.status, "running"), + if (newBackupIds.length > 0) { + const backupResults = await Promise.all( + newBackupIds.map((backupId) => + group.parallel(() => { + const completed = step + .waitForEvent(`wait-delete-backup-${backupId}`, { + event: inngestEvents.backupCompleted, + timeout: "30m", + if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "completed" as const, result })); + + const failed = step + .waitForEvent(`wait-delete-backup-failed-${backupId}`, { + event: inngestEvents.backupFailed, + timeout: "30m", + if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "failed" as const, result })); + + return Promise.race([completed, failed]); + }), ), - ) - .then((r) => r[0]); + ); - return { service, storageConfig, volumes, runningDeployment }; - }); + const timedOut = backupResults.some((r) => r.result === null); + const failed = backupResults.find((r) => r.status === "failed"); + if (timedOut || failed) { + await step.run("mark-delete-backup-failed", async () => { + await db + .update(services) + .set({ + deletionStatus: "failed", + deletionError: + failed?.result?.data.error || "Deletion backup timed out", + }) + .where(eq(services.id, serviceId)); + }); + return { status: "failed", reason: timedOut ? "timeout" : "backup" }; + } + } - let backupIds = [...reusableBackupIds]; - let newBackupIds: string[] = []; + await step.run("cleanup-service", async () => { + await db + .update(services) + .set({ deletionStatus: "deleting", deletionError: null }) + .where(eq(services.id, serviceId)); - if (backupIds.length === 0) { - const createdBackupIds = await step.run( - "start-delete-backups", - async () => { - const deployment = setup.runningDeployment; - if (!deployment?.containerId) { - throw new Error("No running deployment found for deletion backup"); - } + const allDeployments = await db + .select() + .from(deployments) + .where(eq(deployments.serviceId, serviceId)); - const ids: string[] = []; - for (const volume of setup.volumes) { - const backupId = randomUUID(); - ids.push(backupId); - const storagePath = `deleted-services/${serviceId}/${volume.name}/${backupId}.tar.gz`; - - await db.insert(volumeBackups).values({ - id: backupId, - volumeId: volume.id, - volumeName: volume.name, - serviceId, - serverId: deployment.serverId, - status: "pending", - storagePath, - isDeletionBackup: true, - }); + for (const deployment of allDeployments) { + if (deployment.status === "running" && deployment.containerId) { + await db + .update(deployments) + .set({ status: "stopping" }) + .where(eq(deployments.id, deployment.id)); - await enqueueWork(deployment.serverId, "backup_volume", { - backupId, - serviceId, + await enqueueWork(deployment.serverId, "stop", { + deploymentId: deployment.id, containerId: deployment.containerId, - volumeName: volume.name, - storagePath, - storageConfig: { - provider: setup.storageConfig.provider, - bucket: setup.storageConfig.bucket, - region: setup.storageConfig.region, - endpoint: setup.storageConfig.endpoint, - accessKey: setup.storageConfig.accessKey, - secretKey: setup.storageConfig.secretKey, - }, }); } - return ids; - }, - ); - newBackupIds = createdBackupIds; - backupIds = createdBackupIds; + await db + .delete(deploymentPorts) + .where(eq(deploymentPorts.deploymentId, deployment.id)); + } + + await db + .delete(deployments) + .where(eq(deployments.serviceId, serviceId)); + + const cleanupServerId = + setup.service.lockedServerId ?? setup.runningDeployment?.serverId; + if (cleanupServerId && setup.volumes.length > 0) { + await enqueueWork(cleanupServerId, "cleanup_volumes", { serviceId }); + } + + const deletedAt = new Date(); + await db + .update(services) + .set({ + deletedAt, + purgeAfter: purgeDateFrom(deletedAt), + originalHostname: setup.service.hostname, + hostname: null, + deletionStatus: null, + deletionError: null, + }) + .where(eq(services.id, serviceId)); + }); + + return { status: "deleted", serviceId, backupIds }; + } catch (error) { + await step.run("mark-unhandled-delete-failed", async () => { + await markServiceDeletionFailed(serviceId, error); + }); + return { + status: "failed", + reason: error instanceof Error ? error.message : "delete_failed", + }; } + }, +); + +export const serviceRestoreWorkflow = inngest.createFunction( + { + id: "service-restore-workflow", + triggers: [inngestEvents.serviceRestoreStarted], + }, + async ({ event, step, group }) => { + const { serviceId, targetServerId, backupIds } = event.data; + + try { + const setup = await step.run("setup-restore", async () => { + const storageConfig = await getBackupStorageConfig(); + if (!storageConfig) { + throw new Error("Backup storage not configured"); + } + + const service = await db + .select() + .from(services) + .where(eq(services.id, serviceId)) + .then((r) => r[0]); + + if (!service || !service.deletedAt) { + throw new Error("Deleted service not found"); + } + + const resolvedTargetServerId = targetServerId ?? service.lockedServerId; + if (!resolvedTargetServerId) { + throw new Error( + "Cannot restore because no target server is selected", + ); + } + + const backups = await db + .select() + .from(volumeBackups) + .where(inArray(volumeBackups.id, backupIds)); + + if (backups.length !== backupIds.length) { + throw new Error( + "Cannot restore because a retained backup is missing", + ); + } + + for (const backup of backups) { + if (!backup.storagePath || !backup.checksum) { + throw new Error("Backup data is incomplete"); + } + } + + return { + storageConfig, + service, + targetServerId: resolvedTargetServerId, + backups, + }; + }); - if (newBackupIds.length > 0) { - const backupResults = await Promise.all( - newBackupIds.map((backupId) => + await step.run("restore-deletion-backups", async () => { + for (const backup of setup.backups) { + await enqueueWork(setup.targetServerId, "restore_volume", { + backupId: backup.id, + serviceId, + volumeName: backup.volumeName, + storagePath: backup.storagePath, + expectedChecksum: backup.checksum, + isMigrationRestore: false, + storageConfig: { + provider: setup.storageConfig.provider, + bucket: setup.storageConfig.bucket, + region: setup.storageConfig.region, + endpoint: setup.storageConfig.endpoint, + accessKey: setup.storageConfig.accessKey, + secretKey: setup.storageConfig.secretKey, + }, + }); + } + }); + + const restoreResults = await Promise.all( + backupIds.map((backupId) => group.parallel(() => { const completed = step - .waitForEvent(`wait-delete-backup-${backupId}`, { - event: inngestEvents.backupCompleted, + .waitForEvent(`wait-delete-restore-${backupId}`, { + event: inngestEvents.restoreCompleted, timeout: "30m", if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, }) .then((result) => ({ status: "completed" as const, result })); const failed = step - .waitForEvent(`wait-delete-backup-failed-${backupId}`, { - event: inngestEvents.backupFailed, + .waitForEvent(`wait-delete-restore-failed-${backupId}`, { + event: inngestEvents.restoreFailed, timeout: "30m", if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, }) @@ -149,228 +353,123 @@ export const serviceDeletionWorkflow = inngest.createFunction( ), ); - const timedOut = backupResults.some((r) => r.result === null); - const failed = backupResults.find((r) => r.status === "failed"); - if (timedOut || failed) { - await step.run("mark-delete-backup-failed", async () => { + const failed = restoreResults.find((r) => r.status === "failed"); + const timedOut = restoreResults.some((r) => r.result === null); + if (failed || timedOut) { + await step.run("mark-restore-failed", async () => { await db .update(services) .set({ deletionStatus: "failed", deletionError: - failed?.result?.data.error || "Deletion backup timed out", + failed?.result?.data.error || "Volume restore timed out", }) .where(eq(services.id, serviceId)); }); - return { status: "failed", reason: timedOut ? "timeout" : "backup" }; + return { status: "failed", reason: failed ? "restore" : "timeout" }; } - } - await step.run("cleanup-service", async () => { - await db - .update(services) - .set({ deletionStatus: "deleting", deletionError: null }) - .where(eq(services.id, serviceId)); - - const allDeployments = await db - .select() - .from(deployments) - .where(eq(deployments.serviceId, serviceId)); - - for (const deployment of allDeployments) { - if (deployment.status === "running" && deployment.containerId) { + const deployResult = await step.run( + "start-restored-deployment", + async () => { await db - .update(deployments) - .set({ status: "stopping" }) - .where(eq(deployments.id, deployment.id)); - - await enqueueWork(deployment.serverId, "stop", { - deploymentId: deployment.id, - containerId: deployment.containerId, - }); - } - - await db - .delete(deploymentPorts) - .where(eq(deploymentPorts.deploymentId, deployment.id)); - } - - await db.delete(deployments).where(eq(deployments.serviceId, serviceId)); - - const cleanupServerId = - setup.service.lockedServerId ?? setup.runningDeployment?.serverId; - if (cleanupServerId && setup.volumes.length > 0) { - await enqueueWork(cleanupServerId, "cleanup_volumes", { serviceId }); - } - - const deletedAt = new Date(); - await db - .update(services) - .set({ - deletedAt, - purgeAfter: purgeDateFrom(deletedAt), - originalHostname: setup.service.hostname, - hostname: null, - deletionStatus: null, - deletionError: null, - }) - .where(eq(services.id, serviceId)); - }); - - return { status: "deleted", serviceId, backupIds }; - }, -); + .update(services) + .set({ + deletedAt: null, + purgeAfter: null, + hostname: setup.service.originalHostname, + originalHostname: null, + deletionStatus: "restoring", + deletionError: null, + lockedServerId: setup.targetServerId, + }) + .where(eq(services.id, serviceId)); -export const serviceRestoreWorkflow = inngest.createFunction( - { - id: "service-restore-workflow", - triggers: [inngestEvents.serviceRestoreStarted], - }, - async ({ event, step, group }) => { - const { serviceId, rolloutId, backupIds } = event.data; - - const deploymentResult = await group.parallel(() => { - const healthy = step - .waitForEvent("wait-restore-deployment-healthy", { - event: inngestEvents.deploymentHealthy, - timeout: "15m", - if: `async.data.rolloutId == "${rolloutId}" && async.data.serviceId == "${serviceId}"`, - }) - .then((result) => ({ status: "healthy" as const, result })); - - const failed = step - .waitForEvent("wait-restore-deployment-failed", { - event: inngestEvents.deploymentFailed, - timeout: "15m", - if: `async.data.rolloutId == "${rolloutId}" && async.data.serviceId == "${serviceId}"`, - }) - .then((result) => ({ status: "failed" as const, result })); - - return Promise.race([healthy, failed]); - }); + try { + const result = await deployService(serviceId); + if (!("rolloutId" in result) || !result.rolloutId) { + throw new Error("Restore could not start a deployment"); + } + return result; + } catch (error) { + await db + .update(services) + .set({ + deletedAt: restoreDate(setup.service.deletedAt), + purgeAfter: restoreDate(setup.service.purgeAfter), + hostname: null, + originalHostname: setup.service.originalHostname, + deletionStatus: "failed", + deletionError: + error instanceof Error + ? error.message + : "Restore deployment failed", + }) + .where(eq(services.id, serviceId)); + throw error; + } + }, + ); - if (!deploymentResult.result || deploymentResult.status === "failed") { - await step.run("mark-restore-deployment-failed", async () => { - const errorMessage = - deploymentResult.status === "failed" - ? deploymentResult.result?.data.reason - : undefined; - await db - .update(services) - .set({ - deletionStatus: "failed", - deletionError: - errorMessage || "Restore deployment did not become healthy", + const deploymentResult = await group.parallel(() => { + const healthy = step + .waitForEvent("wait-restore-deployment-healthy", { + event: inngestEvents.deploymentHealthy, + timeout: "15m", + if: `async.data.rolloutId == "${deployResult.rolloutId}" && async.data.serviceId == "${serviceId}"`, }) - .where(eq(services.id, serviceId)); - }); - return { status: "failed", reason: "deployment" }; - } - - await step.run("restore-deletion-backups", async () => { - const storageConfig = await getBackupStorageConfig(); - if (!storageConfig) { - throw new Error("Backup storage not configured"); - } - - const deployment = await db - .select({ - serverId: deployments.serverId, - containerId: deployments.containerId, - }) - .from(deployments) - .where( - and( - eq(deployments.serviceId, serviceId), - inArray(deployments.status, ["healthy", "running"]), - ), - ) - .orderBy(desc(deployments.createdAt)) - .limit(1) - .then((r) => r[0]); - - if (!deployment) { - throw new Error("No deployment found for restore"); - } + .then((result) => ({ status: "healthy" as const, result })); - const backups = await db - .select() - .from(volumeBackups) - .where(inArray(volumeBackups.id, backupIds)); + const failed = step + .waitForEvent("wait-restore-deployment-failed", { + event: inngestEvents.deploymentFailed, + timeout: "15m", + if: `async.data.rolloutId == "${deployResult.rolloutId}" && async.data.serviceId == "${serviceId}"`, + }) + .then((result) => ({ status: "failed" as const, result })); - for (const backup of backups) { - if (!backup.storagePath || !backup.checksum) { - throw new Error("Backup data is incomplete"); - } + return Promise.race([healthy, failed]); + }); - await enqueueWork(deployment.serverId, "restore_volume", { - backupId: backup.id, - serviceId, - containerId: deployment.containerId ?? undefined, - volumeName: backup.volumeName, - storagePath: backup.storagePath, - expectedChecksum: backup.checksum, - isMigrationRestore: false, - storageConfig: { - provider: storageConfig.provider, - bucket: storageConfig.bucket, - region: storageConfig.region, - endpoint: storageConfig.endpoint, - accessKey: storageConfig.accessKey, - secretKey: storageConfig.secretKey, - }, + if (!deploymentResult.result || deploymentResult.status === "failed") { + await step.run("mark-restore-deployment-failed", async () => { + const errorMessage = + deploymentResult.status === "failed" + ? deploymentResult.result?.data.reason + : undefined; + await db + .update(services) + .set({ + deletedAt: restoreDate(setup.service.deletedAt), + purgeAfter: restoreDate(setup.service.purgeAfter), + hostname: null, + originalHostname: setup.service.originalHostname, + deletionStatus: "failed", + deletionError: + errorMessage || "Restore deployment did not become healthy", + }) + .where(eq(services.id, serviceId)); }); + return { status: "failed", reason: "deployment" }; } - }); - - const restoreResults = await Promise.all( - backupIds.map((backupId) => - group.parallel(() => { - const completed = step - .waitForEvent(`wait-delete-restore-${backupId}`, { - event: inngestEvents.restoreCompleted, - timeout: "30m", - if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, - }) - .then((result) => ({ status: "completed" as const, result })); - const failed = step - .waitForEvent(`wait-delete-restore-failed-${backupId}`, { - event: inngestEvents.restoreFailed, - timeout: "30m", - if: `async.data.backupId == "${backupId}" && async.data.serviceId == "${serviceId}"`, - }) - .then((result) => ({ status: "failed" as const, result })); - - return Promise.race([completed, failed]); - }), - ), - ); - - const failed = restoreResults.find((r) => r.status === "failed"); - const timedOut = restoreResults.some((r) => r.result === null); - if (failed || timedOut) { - await step.run("mark-restore-failed", async () => { + await step.run("mark-restore-complete", async () => { await db .update(services) - .set({ - deletionStatus: "failed", - deletionError: - failed?.result?.data.error || "Volume restore timed out", - }) + .set({ deletionStatus: null, deletionError: null }) .where(eq(services.id, serviceId)); }); - return { status: "failed", reason: failed ? "restore" : "timeout" }; - } - - await step.run("mark-restore-complete", async () => { - await db - .update(services) - .set({ deletionStatus: null, deletionError: null }) - .where(eq(services.id, serviceId)); - }); - return { status: "restored", serviceId }; + return { status: "restored", serviceId }; + } catch (error) { + await step.run("mark-unhandled-restore-failed", async () => { + await markServiceDeletionFailed(serviceId, error); + }); + return { + status: "failed", + reason: error instanceof Error ? error.message : "restore_failed", + }; + } }, ); @@ -397,12 +496,7 @@ export const expiredDeletedServicesPurge = inngest.createFunction( const backups = await db .select({ id: volumeBackups.id }) .from(volumeBackups) - .where( - and( - eq(volumeBackups.serviceId, service.id), - eq(volumeBackups.isDeletionBackup, true), - ), - ); + .where(eq(volumeBackups.serviceId, service.id)); for (const backup of backups) { await deleteBackup(backup.id, { revalidate: false }); From 44669a51fc49a0e6a49415e70090550364d1db87 Mon Sep 17 00:00:00 2001 From: Arjun Komath Date: Sat, 13 Jun 2026 08:06:11 +1000 Subject: [PATCH 7/9] Fixes --- web/actions/builds.ts | 13 ++++++++++-- web/actions/projects.ts | 7 +++++-- web/app/api/inngest/route.ts | 6 ++++++ web/app/api/v1/agent/builds/[id]/route.ts | 12 +++++++++-- .../api/v1/agent/builds/[id]/status/route.ts | 20 ++++++++++++++----- web/app/api/webhooks/github/route.ts | 10 ++++++---- web/lib/inngest/functions/build-workflow.ts | 16 ++++++++------- .../functions/service-deletion-workflow.ts | 12 ++++++----- 8 files changed, 69 insertions(+), 27 deletions(-) diff --git a/web/actions/builds.ts b/web/actions/builds.ts index dc6a2cd..d480fed 100644 --- a/web/actions/builds.ts +++ b/web/actions/builds.ts @@ -1,6 +1,6 @@ "use server"; -import { eq } from "drizzle-orm"; +import { and, eq, isNull } from "drizzle-orm"; import { db } from "@/db"; import { builds, githubRepos, services } from "@/db/schema"; import { inngest } from "@/lib/inngest/client"; @@ -46,6 +46,15 @@ export async function retryBuild(buildId: string) { throw new Error("Build not found"); } + const [service] = await db + .select({ id: services.id }) + .from(services) + .where(and(eq(services.id, build.serviceId), isNull(services.deletedAt))); + + if (!service) { + throw new Error("Service not found"); + } + if (build.status !== "failed" && build.status !== "cancelled") { throw new Error(`Cannot retry build in ${build.status} status`); } @@ -72,7 +81,7 @@ export async function triggerBuild( const [service] = await db .select() .from(services) - .where(eq(services.id, serviceId)); + .where(and(eq(services.id, serviceId), isNull(services.deletedAt))); if (!service) { throw new Error("Service not found"); diff --git a/web/actions/projects.ts b/web/actions/projects.ts index cce9c39..5164233 100644 --- a/web/actions/projects.ts +++ b/web/actions/projects.ts @@ -481,7 +481,10 @@ async function hardDeleteService(serviceId: string) { .where(eq(deployments.serviceId, serviceId)); for (const dep of allDeployments) { - if (dep.status === "running" && dep.containerId) { + if ( + (dep.status === "running" || dep.status === "healthy") && + dep.containerId + ) { await db .update(deployments) .set({ status: "stopping" }) @@ -568,7 +571,7 @@ export async function deleteService(serviceId: string) { .where( and( eq(deployments.serviceId, serviceId), - eq(deployments.status, "running"), + inArray(deployments.status, ["running", "healthy"]), ), ) .then((r) => r[0]); diff --git a/web/app/api/inngest/route.ts b/web/app/api/inngest/route.ts index 4941ef9..5a3630a 100644 --- a/web/app/api/inngest/route.ts +++ b/web/app/api/inngest/route.ts @@ -6,6 +6,7 @@ import { buildWorkflow, certificateRenewal, challengeCleanup, + expiredDeletedServicesPurge, migrationWorkflow, oldBackupsCleanup, onBackupFailed, @@ -16,6 +17,8 @@ import { rolloutWorkflow, scheduledBackupsCheck, scheduledDeploymentsCheck, + serviceDeletionWorkflow, + serviceRestoreWorkflow, staleItemsCleanup, staleServerCheck, } from "@/lib/inngest/functions"; @@ -40,5 +43,8 @@ export const { GET, POST, PUT } = serve({ buildWorkflow, buildTriggerWorkflow, restoreTriggerWorkflow, + serviceDeletionWorkflow, + serviceRestoreWorkflow, + expiredDeletedServicesPurge, ], }); diff --git a/web/app/api/v1/agent/builds/[id]/route.ts b/web/app/api/v1/agent/builds/[id]/route.ts index ea2d4cb..dc6f1e0 100644 --- a/web/app/api/v1/agent/builds/[id]/route.ts +++ b/web/app/api/v1/agent/builds/[id]/route.ts @@ -1,4 +1,4 @@ -import { and, eq } from "drizzle-orm"; +import { and, eq, isNull } from "drizzle-orm"; import { type NextRequest, NextResponse } from "next/server"; import { db } from "@/db"; import { getSetting } from "@/db/queries"; @@ -51,10 +51,18 @@ export async function GET( const service = await db .select() .from(services) - .where(eq(services.id, build.serviceId)) + .where(and(eq(services.id, build.serviceId), isNull(services.deletedAt))) .then((r) => r[0]); if (!service) { + await db + .update(builds) + .set({ + status: "failed", + error: "Service not found", + completedAt: new Date(), + }) + .where(eq(builds.id, buildId)); return NextResponse.json({ error: "Service not found" }, { status: 404 }); } diff --git a/web/app/api/v1/agent/builds/[id]/status/route.ts b/web/app/api/v1/agent/builds/[id]/status/route.ts index 84586ff..eafcbd8 100644 --- a/web/app/api/v1/agent/builds/[id]/status/route.ts +++ b/web/app/api/v1/agent/builds/[id]/status/route.ts @@ -1,4 +1,4 @@ -import { and, eq } from "drizzle-orm"; +import { and, eq, isNull } from "drizzle-orm"; import { type NextRequest, NextResponse } from "next/server"; import { deployService } from "@/actions/projects"; import { db } from "@/db"; @@ -184,10 +184,14 @@ export async function POST( const service = await db .select() .from(services) - .where(eq(services.id, build.serviceId)) + .where(and(eq(services.id, build.serviceId), isNull(services.deletedAt))) .then((r) => r[0]); if (!service) { + await db + .update(builds) + .set({ error: "Service not found" }) + .where(eq(builds.id, buildId)); return NextResponse.json({ error: "Service not found" }, { status: 404 }); } @@ -243,7 +247,9 @@ export async function POST( await db .update(services) .set({ image: baseImageUri }) - .where(eq(services.id, build.serviceId)); + .where( + and(eq(services.id, build.serviceId), isNull(services.deletedAt)), + ); await sendBuildCompletedEvent({ buildId, @@ -305,7 +311,9 @@ export async function POST( await db .update(services) .set({ image: baseImageUri }) - .where(eq(services.id, build.serviceId)); + .where( + and(eq(services.id, build.serviceId), isNull(services.deletedAt)), + ); } await sendBuildCompletedEvent({ @@ -328,7 +336,9 @@ export async function POST( await db .update(services) .set({ image: baseImageUri }) - .where(eq(services.id, build.serviceId)); + .where( + and(eq(services.id, build.serviceId), isNull(services.deletedAt)), + ); const replicas = await db .select() diff --git a/web/app/api/webhooks/github/route.ts b/web/app/api/webhooks/github/route.ts index cbaf324..2b6b0e5 100644 --- a/web/app/api/webhooks/github/route.ts +++ b/web/app/api/webhooks/github/route.ts @@ -1,4 +1,5 @@ -import { NextRequest, NextResponse } from "next/server"; +import { and, eq, isNull } from "drizzle-orm"; +import { type NextRequest, NextResponse } from "next/server"; import { db } from "@/db"; import { builds, @@ -6,11 +7,10 @@ import { githubRepos, services, } from "@/db/schema"; -import { eq, and } from "drizzle-orm"; import { - verifyWebhookSignature, createGitHubDeployment, updateGitHubDeploymentStatus, + verifyWebhookSignature, } from "@/lib/github"; import { inngest } from "@/lib/inngest/client"; import { inngestEvents } from "@/lib/inngest/events"; @@ -140,7 +140,9 @@ async function handlePushEvent(payload: PushPayload) { const service = await db .select() .from(services) - .where(eq(services.id, githubRepo.serviceId)) + .where( + and(eq(services.id, githubRepo.serviceId), isNull(services.deletedAt)), + ) .then((r) => r[0]); if (!service) { diff --git a/web/lib/inngest/functions/build-workflow.ts b/web/lib/inngest/functions/build-workflow.ts index 0c056b4..a1147f1 100644 --- a/web/lib/inngest/functions/build-workflow.ts +++ b/web/lib/inngest/functions/build-workflow.ts @@ -1,9 +1,9 @@ -import { eq, and } from "drizzle-orm"; +import { and, eq, isNull } from "drizzle-orm"; +import { deployService } from "@/actions/projects"; import { db } from "@/db"; -import { builds, services, projects, serviceReplicas } from "@/db/schema"; +import { builds, serviceReplicas, services } from "@/db/schema"; import { inngest } from "../client"; import { inngestEvents } from "../events"; -import { deployService } from "@/actions/projects"; export const buildWorkflow = inngest.createFunction( { @@ -61,11 +61,12 @@ export const buildWorkflow = inngest.createFunction( const service = await db .select() .from(services) - .where(eq(services.id, serviceId)) + .where(and(eq(services.id, serviceId), isNull(services.deletedAt))) .then((r) => r[0]); return ( - replicas.length > 0 || (service?.autoPlace && service?.replicas > 0) + !!service && + (replicas.length > 0 || (service.autoPlace && service.replicas > 0)) ); }); @@ -139,11 +140,12 @@ export const buildWorkflow = inngest.createFunction( const service = await db .select() .from(services) - .where(eq(services.id, serviceId)) + .where(and(eq(services.id, serviceId), isNull(services.deletedAt))) .then((r) => r[0]); return ( - replicas.length > 0 || (service?.autoPlace && service?.replicas > 0) + !!service && + (replicas.length > 0 || (service.autoPlace && service.replicas > 0)) ); }); diff --git a/web/lib/inngest/functions/service-deletion-workflow.ts b/web/lib/inngest/functions/service-deletion-workflow.ts index b3071c0..a3e8327 100644 --- a/web/lib/inngest/functions/service-deletion-workflow.ts +++ b/web/lib/inngest/functions/service-deletion-workflow.ts @@ -80,7 +80,7 @@ export const serviceDeletionWorkflow = inngest.createFunction( .where( and( eq(deployments.serviceId, serviceId), - eq(deployments.status, "running"), + inArray(deployments.status, ["running", "healthy"]), ), ) .then((r) => r[0]); @@ -97,9 +97,7 @@ export const serviceDeletionWorkflow = inngest.createFunction( async () => { const deployment = setup.runningDeployment; if (!deployment?.containerId) { - throw new Error( - "No running deployment found for deletion backup", - ); + throw new Error("No active deployment found for deletion backup"); } const ids: string[] = []; @@ -197,7 +195,11 @@ export const serviceDeletionWorkflow = inngest.createFunction( .where(eq(deployments.serviceId, serviceId)); for (const deployment of allDeployments) { - if (deployment.status === "running" && deployment.containerId) { + if ( + (deployment.status === "running" || + deployment.status === "healthy") && + deployment.containerId + ) { await db .update(deployments) .set({ status: "stopping" }) From bdc08bfc2a6e8896694741945bbdb57a074d0678 Mon Sep 17 00:00:00 2001 From: Arjun Komath Date: Sat, 13 Jun 2026 08:52:20 +1000 Subject: [PATCH 8/9] Fix restore bugs --- agent/internal/agent/backup.go | 94 ++++++++- agent/scripts/install-debug-orbstack-agent.sh | 184 ++++++++++++++++++ web/actions/projects.ts | 22 +++ .../[serviceId]/configuration/page.tsx | 62 +++++- web/app/api/projects/[id]/services/route.ts | 55 ++++++ .../service/deleted-services-panel.tsx | 121 +++++++----- web/db/types.ts | 6 + .../functions/service-deletion-workflow.ts | 17 +- web/package.json | 140 +++++++------ 9 files changed, 571 insertions(+), 130 deletions(-) create mode 100755 agent/scripts/install-debug-orbstack-agent.sh diff --git a/agent/internal/agent/backup.go b/agent/internal/agent/backup.go index 2397ee0..5b121c7 100644 --- a/agent/internal/agent/backup.go +++ b/agent/internal/agent/backup.go @@ -7,12 +7,14 @@ import ( "crypto/sha256" "encoding/hex" "encoding/json" + "errors" "fmt" "io" "log" "os" "path/filepath" "strings" + "syscall" "techulus/cloud-agent/internal/container" agenthttp "techulus/cloud-agent/internal/http" @@ -240,7 +242,7 @@ func (a *Agent) processVolumeRestore(backupID, serviceID, containerID, volumeNam return reportFailure(fmt.Errorf("failed to create volume parent directory: %w", err)) } - if err := os.Rename(tempExtractPath, volumePath); err != nil { + if err := moveDir(tempExtractPath, volumePath); err != nil { startContainerWithRetry() return reportFailure(fmt.Errorf("failed to move restored data to volume path: %w", err)) } @@ -256,6 +258,96 @@ func (a *Agent) processVolumeRestore(backupID, serviceID, containerID, volumeNam return nil } +func moveDir(src, dst string) error { + if err := os.Rename(src, dst); err == nil { + return nil + } else if !errors.Is(err, syscall.EXDEV) { + return err + } + + if err := copyDir(src, dst); err != nil { + return err + } + + return os.RemoveAll(src) +} + +func copyDir(src, dst string) error { + info, err := os.Stat(src) + if err != nil { + return err + } + if !info.IsDir() { + return fmt.Errorf("source is not a directory: %s", src) + } + + if err := os.MkdirAll(dst, info.Mode()); err != nil { + return err + } + + entries, err := os.ReadDir(src) + if err != nil { + return err + } + + for _, entry := range entries { + srcPath := filepath.Join(src, entry.Name()) + dstPath := filepath.Join(dst, entry.Name()) + entryInfo, err := os.Lstat(srcPath) + if err != nil { + return err + } + + if entryInfo.IsDir() { + if err := copyDir(srcPath, dstPath); err != nil { + return err + } + continue + } + + if entryInfo.Mode()&os.ModeSymlink != 0 { + linkTarget, err := os.Readlink(srcPath) + if err != nil { + return err + } + if err := os.Symlink(linkTarget, dstPath); err != nil { + return err + } + continue + } + + if !entryInfo.Mode().IsRegular() { + return fmt.Errorf("unsupported file type in restore archive: %s", srcPath) + } + + if err := copyFile(srcPath, dstPath, entryInfo.Mode()); err != nil { + return err + } + } + + return os.Chmod(dst, info.Mode()) +} + +func copyFile(src, dst string, mode os.FileMode) error { + in, err := os.Open(src) + if err != nil { + return err + } + defer in.Close() + + out, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode) + if err != nil { + return err + } + + _, copyErr := io.Copy(out, in) + closeErr := out.Close() + if copyErr != nil { + return copyErr + } + return closeErr +} + func createS3Client(cfg StorageConfig) (*s3.Client, error) { awsCfg, err := config.LoadDefaultConfig(context.Background(), config.WithRegion(cfg.Region), diff --git a/agent/scripts/install-debug-orbstack-agent.sh b/agent/scripts/install-debug-orbstack-agent.sh new file mode 100755 index 0000000..c67f08d --- /dev/null +++ b/agent/scripts/install-debug-orbstack-agent.sh @@ -0,0 +1,184 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +SERVICE_NAME="${SERVICE_NAME:-techulus-agent}" +INSTALL_PATH="${INSTALL_PATH:-/usr/local/bin/techulus-agent}" +VERSION="${VERSION:-debug-fast-deploy-$(date +%Y%m%d%H%M%S)}" + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +AGENT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +BUILD_DIR="${BUILD_DIR:-$AGENT_DIR/bin/debug-orbstack}" + +if [ "$#" -gt 0 ]; then + MACHINES=("$@") +elif [ -n "${ORBSTACK_MACHINES:-}" ]; then + # shellcheck disable=SC2206 + MACHINES=(${ORBSTACK_MACHINES}) +else + MACHINES=(ubuntu-1 ubuntu-2) +fi + +log() { + printf '[%s] %s\n' "$(date '+%H:%M:%S')" "$*" +} + +die() { + log "ERROR: $*" + exit 1 +} + +run() { + log "+ $*" + "$@" +} + +goarch_for_uname() { + case "$1" in + x86_64 | amd64) + printf 'amd64' + ;; + aarch64 | arm64) + printf 'arm64' + ;; + *) + return 1 + ;; + esac +} + +require_cmd() { + command -v "$1" >/dev/null 2>&1 || die "missing required command: $1" +} + +log "Techulus debug agent installer for OrbStack" +log "Agent source: $AGENT_DIR" +log "Build output: $BUILD_DIR" +log "Debug version: $VERSION" +log "Service name: $SERVICE_NAME" +log "Install path: $INSTALL_PATH" +log "Target machines: ${MACHINES[*]}" + +require_cmd go +require_cmd orb + +mkdir -p "$BUILD_DIR" +BUILD_DIR="$(cd "$BUILD_DIR" && pwd)" +MAC_BUILD_DIR="/mnt/mac${BUILD_DIR}" + +MACHINE_ARCHES=() +ARCHES_BUILT=" " + +for machine in "${MACHINES[@]}"; do + log "Checking OrbStack machine '$machine'" + if ! uname_value="$(orb -m "$machine" uname -m 2>&1)"; then + printf '%s\n' "$uname_value" + die "failed to run uname in OrbStack machine '$machine'" + fi + + uname_value="$(printf '%s' "$uname_value" | tr -d '\r\n')" + if ! goarch="$(goarch_for_uname "$uname_value")"; then + die "unsupported architecture '$uname_value' for machine '$machine'" + fi + + MACHINE_ARCHES+=("$machine:$goarch") + log "Machine '$machine' reports '$uname_value'; using GOARCH=$goarch" +done + +build_arch_if_needed() { + goarch="$1" + if [[ "$ARCHES_BUILT" == *" $goarch "* ]]; then + log "Debug agent for linux/$goarch already built" + return + fi + + output="$BUILD_DIR/techulus-agent-debug-linux-$goarch" + log "Building debug agent for linux/$goarch" + ( + cd "$AGENT_DIR" + run env CGO_ENABLED=0 GOOS=linux GOARCH="$goarch" go build \ + -ldflags "-X techulus/cloud-agent/internal/agent.Version=$VERSION-$goarch" \ + -o "$output" \ + ./cmd/agent + ) + run ls -lh "$output" + ARCHES_BUILT="$ARCHES_BUILT$goarch " +} + +for entry in "${MACHINE_ARCHES[@]}"; do + goarch="${entry#*:}" + build_arch_if_needed "$goarch" +done + +for entry in "${MACHINE_ARCHES[@]}"; do + machine="${entry%%:*}" + goarch="${entry#*:}" + remote_binary="$MAC_BUILD_DIR/techulus-agent-debug-linux-$goarch" + + log "Installing debug agent on '$machine'" + log "Remote binary path: $remote_binary" + + orb -m "$machine" -u root sh -s -- "$SERVICE_NAME" "$INSTALL_PATH" "$remote_binary" "$VERSION-$goarch" <<'REMOTE' +set -Eeuo pipefail + +service_name="$1" +install_path="$2" +remote_binary="$3" +version="$4" + +log() { + printf '[remote:%s] %s\n' "$(hostname)" "$*" +} + +log "Starting install for $service_name" +log "Expected version label: $version" +log "Using mounted binary: $remote_binary" + +if [ ! -f "$remote_binary" ]; then + log "ERROR: mounted binary does not exist: $remote_binary" + exit 1 +fi + +log "Binary details:" +ls -lh "$remote_binary" + +if command -v systemctl >/dev/null 2>&1; then + if systemctl status "$service_name" >/dev/null 2>&1; then + log "Stopping $service_name" + systemctl stop "$service_name" + else + log "$service_name is not currently active; continuing" + fi +else + log "ERROR: systemctl not found" + exit 1 +fi + +if [ -e "$install_path" ]; then + backup_path="${install_path}.backup.$(date +%Y%m%d%H%M%S)" + log "Backing up existing agent to $backup_path" + cp -a "$install_path" "$backup_path" +else + log "No existing agent found at $install_path" +fi + +log "Installing new agent to $install_path" +install -m 0755 "$remote_binary" "$install_path" + +log "Installed binary details:" +ls -lh "$install_path" + +log "Starting $service_name" +systemctl start "$service_name" + +log "Service status:" +systemctl status "$service_name" --no-pager + +log "Recent service logs:" +journalctl -u "$service_name" -n 30 --no-pager +REMOTE + + log "Finished install on '$machine'" +done + +log "All done" +log "Tail logs with: orb -m ${MACHINES[0]} -u root journalctl -u $SERVICE_NAME -f" diff --git a/web/actions/projects.ts b/web/actions/projects.ts index 5164233..3bf3938 100644 --- a/web/actions/projects.ts +++ b/web/actions/projects.ts @@ -288,10 +288,26 @@ export async function deleteProject(id: string) { } } + await deleteBackupsForServices(projectServices.map((service) => service.id)); await db.delete(projects).where(eq(projects.id, id)); return { success: true }; } +async function deleteBackupsForServices(serviceIds: string[]) { + if (serviceIds.length === 0) { + return; + } + + const backups = await db + .select({ id: volumeBackups.id }) + .from(volumeBackups) + .where(inArray(volumeBackups.serviceId, serviceIds)); + + for (const backup of backups) { + await deleteBackup(backup.id, { revalidate: false }); + } +} + export async function updateProjectName(projectId: string, name: string) { try { const validatedName = nameSchema.parse(name); @@ -374,6 +390,12 @@ export async function deleteEnvironment(environmentId: string) { throw new Error("Cannot delete the production environment"); } + const envServices = await db + .select({ id: services.id }) + .from(services) + .where(eq(services.environmentId, environmentId)); + + await deleteBackupsForServices(envServices.map((service) => service.id)); await db.delete(environments).where(eq(environments.id, environmentId)); return { success: true }; } diff --git a/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx b/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx index 020c3db..c014b42 100644 --- a/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx +++ b/web/app/(dashboard)/dashboard/projects/[slug]/[env]/services/[serviceId]/configuration/page.tsx @@ -31,11 +31,31 @@ import { import { Button } from "@/components/ui/button"; import { Item, ItemContent, ItemMedia, ItemTitle } from "@/components/ui/item"; +const ACTIVE_DELETE_BACKUP_STATUSES = ["running", "healthy"] as const; + +function formatBackupDate(value: Date | string | null | undefined) { + if (!value) return "an unknown time"; + return new Date(value).toLocaleString(); +} + export default function ConfigurationPage() { const router = useRouter(); const { mutate: globalMutate } = useSWRConfig(); const { service, projectSlug, envName, proxyDomain, onUpdate } = useService(); const [isDeleting, setIsDeleting] = useState(false); + const hasActiveDeploymentForBackup = service.deployments.some( + (deployment) => + ACTIVE_DELETE_BACKUP_STATUSES.includes( + deployment.status as (typeof ACTIVE_DELETE_BACKUP_STATUSES)[number], + ) && !!deployment.containerId, + ); + const hasVolumes = (service.volumes?.length ?? 0) > 0; + const willReuseCompletedBackups = + service.stateful && hasVolumes && !hasActiveDeploymentForBackup; + const hasCompletedBackupForEveryVolume = + service.deletionBackupFallback && + service.deletionBackupFallback.backedUpVolumeCount === + service.deletionBackupFallback.volumeCount; const handleConfigSave = useCallback(() => { onUpdate(); @@ -105,9 +125,45 @@ export default function ConfigurationPage() { Delete {service.name}? - {service.stateful - ? "This starts a backup-first delete workflow. The service will be restorable from Deleted services until its retention window expires." - : "This action cannot be undone. This will permanently delete the service and all its deployments."} + {service.stateful ? ( + <> + This starts a backup-first delete workflow. The service + will be restorable from Deleted services until its + retention window expires. + {willReuseCompletedBackups && + hasCompletedBackupForEveryVolume && ( + <> +
+
+ + This service is not currently running. + {" "} + Restore will use the latest completed backups for + its volumes. The oldest selected backup is from{" "} + {formatBackupDate( + service.deletionBackupFallback + ?.oldestLatestBackupAt, + )} + ; changes after that backup will not be restored. + + )} + {willReuseCompletedBackups && + !hasCompletedBackupForEveryVolume && ( + <> +
+
+ + No completed backup is available for every + volume. + {" "} + Delete will fail unless the service is running so + a fresh deletion backup can be created. + + )} + + ) : ( + "This action cannot be undone. This will permanently delete the service and all its deployments." + )}
diff --git a/web/app/api/projects/[id]/services/route.ts b/web/app/api/projects/[id]/services/route.ts index db14030..ec7ca69 100644 --- a/web/app/api/projects/[id]/services/route.ts +++ b/web/app/api/projects/[id]/services/route.ts @@ -14,9 +14,14 @@ import { serviceReplicas, services, serviceVolumes, + volumeBackups, } from "@/db/schema"; import { auth } from "@/lib/auth"; +function getBackupTime(value: Date | string | null) { + return value ? new Date(value).getTime() : 0; +} + export async function GET( request: Request, { params }: { params: Promise<{ id: string }> }, @@ -141,6 +146,55 @@ export async function GET( }), ); + let deletionBackupFallback = null; + if (service.stateful && volumes.length > 0) { + const completedBackups = await db + .select({ + volumeId: volumeBackups.volumeId, + createdAt: volumeBackups.createdAt, + completedAt: volumeBackups.completedAt, + }) + .from(volumeBackups) + .where( + and( + eq(volumeBackups.serviceId, service.id), + eq(volumeBackups.status, "completed"), + ), + ) + .orderBy(desc(volumeBackups.createdAt)); + + const latestByVolume = new Map(); + for (const backup of completedBackups) { + if (!latestByVolume.has(backup.volumeId)) { + latestByVolume.set( + backup.volumeId, + backup.completedAt ?? backup.createdAt, + ); + } + } + + const latestBackupTimes = volumes + .map((volume) => latestByVolume.get(volume.id) ?? null) + .filter((value): value is Date | string => value !== null); + + deletionBackupFallback = { + volumeCount: volumes.length, + backedUpVolumeCount: latestBackupTimes.length, + oldestLatestBackupAt: + latestBackupTimes.length > 0 + ? latestBackupTimes.reduce((oldest, value) => + getBackupTime(value) < getBackupTime(oldest) ? value : oldest, + ) + : null, + newestLatestBackupAt: + latestBackupTimes.length > 0 + ? latestBackupTimes.reduce((newest, value) => + getBackupTime(value) > getBackupTime(newest) ? value : newest, + ) + : null, + }; + } + return { ...service, ports, @@ -151,6 +205,7 @@ export async function GET( volumes, lockedServer, latestBuild, + deletionBackupFallback, }; }), ); diff --git a/web/components/service/deleted-services-panel.tsx b/web/components/service/deleted-services-panel.tsx index 5fa22d2..957b8f6 100644 --- a/web/components/service/deleted-services-panel.tsx +++ b/web/components/service/deleted-services-panel.tsx @@ -43,9 +43,11 @@ export function DeletedServicesPanel({ }) { const router = useRouter(); const [restoreId, setRestoreId] = useState(null); + const [openRestoreId, setOpenRestoreId] = useState(null); const handleRestore = async (serviceId: string) => { setRestoreId(serviceId); + setOpenRestoreId(null); try { await restoreDeletedService(serviceId); toast.success("Restore started"); @@ -73,63 +75,76 @@ export function DeletedServicesPanel({ return (
- {services.map((service) => ( -
-
-
-

{service.name}

- {service.deletionStatus && ( - - {service.deletionStatus} - + {services.map((service) => { + const restoreDisabled = + restoreId === service.id || + (!!service.deletionStatus && service.deletionStatus !== "failed"); + const restoreLabel = + restoreId === service.id || service.deletionStatus === "restoring" + ? "Restoring..." + : "Restore"; + + return ( +
+
+
+

{service.name}

+ {service.deletionStatus && ( + + {service.deletionStatus} + + )} +
+

+ {service.image} +

+

+ Deleted {formatDate(service.deletedAt)}. Purges{" "} + {formatDate(service.purgeAfter)}. +

+ {service.deletionError && ( +

+ {service.deletionError} +

)}
-

- {service.image} -

-

- Deleted {formatDate(service.deletedAt)}. Purges{" "} - {formatDate(service.purgeAfter)}. -

- {service.deletionError && ( -

- {service.deletionError} -

- )} -
- - + + setOpenRestoreId(open ? service.id : null) } > - - {restoreId === service.id ? "Restoring..." : "Restore"} - - - - Restore {service.name}? - - This will recreate the service deployment and restore its - retained volumes from the deletion backup. - - - - Cancel - handleRestore(service.id)} - disabled={restoreId === service.id} - > - Restore - - - - -
- ))} + } + > + + {restoreLabel} + + + + Restore {service.name}? + + This will recreate the service deployment and restore its + retained volumes from the deletion backup. + + + + Cancel + handleRestore(service.id)} + disabled={restoreDisabled} + > + Restore + + + + +
+ ); + })}
); } diff --git a/web/db/types.ts b/web/db/types.ts index 9c92d5d..33cd916 100644 --- a/web/db/types.ts +++ b/web/db/types.ts @@ -63,4 +63,10 @@ export type ServiceWithDetails = Service & { rollouts?: Rollout[]; lockedServer?: Pick | null; latestBuild?: Pick | null; + deletionBackupFallback?: { + volumeCount: number; + backedUpVolumeCount: number; + oldestLatestBackupAt: Date | string | null; + newestLatestBackupAt: Date | string | null; + } | null; }; diff --git a/web/lib/inngest/functions/service-deletion-workflow.ts b/web/lib/inngest/functions/service-deletion-workflow.ts index a3e8327..1672ac7 100644 --- a/web/lib/inngest/functions/service-deletion-workflow.ts +++ b/web/lib/inngest/functions/service-deletion-workflow.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import { and, eq, inArray, isNotNull, lte } from "drizzle-orm"; +import { and, eq, inArray, isNotNull, isNull, lte } from "drizzle-orm"; import { cron } from "inngest"; import { deleteBackup } from "@/actions/backups"; import { deployService } from "@/actions/projects"; @@ -221,7 +221,9 @@ export const serviceDeletionWorkflow = inngest.createFunction( .where(eq(deployments.serviceId, serviceId)); const cleanupServerId = - setup.service.lockedServerId ?? setup.runningDeployment?.serverId; + setup.service.lockedServerId ?? + setup.runningDeployment?.serverId ?? + allDeployments.find((deployment) => deployment.serverId)?.serverId; if (cleanupServerId && setup.volumes.length > 0) { await enqueueWork(cleanupServerId, "cleanup_volumes", { serviceId }); } @@ -456,6 +458,16 @@ export const serviceRestoreWorkflow = inngest.createFunction( } await step.run("mark-restore-complete", async () => { + await db + .update(volumeBackups) + .set({ isDeletionBackup: false }) + .where( + and( + eq(volumeBackups.serviceId, serviceId), + eq(volumeBackups.isDeletionBackup, true), + ), + ); + await db .update(services) .set({ deletionStatus: null, deletionError: null }) @@ -490,6 +502,7 @@ export const expiredDeletedServicesPurge = inngest.createFunction( and( isNotNull(services.deletedAt), isNotNull(services.purgeAfter), + isNull(services.deletionStatus), lte(services.purgeAfter, new Date()), ), ); diff --git a/web/package.json b/web/package.json index 00d80f6..ca882f0 100644 --- a/web/package.json +++ b/web/package.json @@ -3,75 +3,73 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "portless cloud --app-port 3000 next dev", - "build": "next build", - "start": "next start", - "lint": "next lint", - "db:generate": "drizzle-kit generate", - "db:migrate": "drizzle-kit migrate", - "db:push": "drizzle-kit push", - "db:studio": "drizzle-kit studio" - }, - "dependencies": { - "@aws-sdk/client-s3": "^3.968.0", - "@base-ui/react": "^1.0.0", - "@bprogress/next": "^3.2.12", - "@react-email/components": "^1.0.4", - "@react-email/render": "^2.0.2", - "acme-client": "^5.4.0", - "better-auth": "^1.4.9", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "^1.1.1", - "cron-parser": "^5.4.0", - "cronstrue": "^3.9.0", - "drizzle-orm": "^0.45.1", - "inngest": "^4.3.0", - "ip-address": "^10.1.0", - "jose": "^6.1.3", - "lucide-react": "^0.562.0", - "next": "16.2.6", - "next-themes": "^0.4.6", - "nodemailer": "^7.0.12", - "nuqs": "^2.8.6", - "pg": "^8.16.3", - "react": "19.2.6", - "react-dom": "19.2.6", - "shadcn": "^3.6.2", - "sonner": "^2.0.7", - "swr": "^2.3.8", - "tailwind-merge": "^3.4.0", - "tw-animate-css": "^1.4.0", - "validator": "^13.15.26", - "yaml": "^2.8.2", - "zod": "^4.3.5" - }, - "devDependencies": { - "@biomejs/biome": "2.3.10", - "@eslint/eslintrc": "^3", - "@tailwindcss/postcss": "^4", - "@types/node": "^22", - "@types/nodemailer": "^7.0.5", - "@types/pg": "^8.16.0", - "@types/react": "19.2.14", - "@types/react-dom": "19.2.3", - "@types/validator": "^13.15.10", - "drizzle-kit": "^0.31.8", - "eslint": "^9", - "eslint-config-next": "16.2.6", - "portless": "^0.13.0", - "tailwindcss": "^4", - "tsx": "^4.19.2", - "typescript": "^5" - }, - "overrides": { - "@types/react": "19.2.14", - "@types/react-dom": "19.2.3" - }, - "pnpm": { - "overrides": { - "@types/react": "19.2.14", - "@types/react-dom": "19.2.3" - } - } + "dev": "portless cloud --app-port 3000 next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "db:push": "drizzle-kit push", + "db:studio": "drizzle-kit studio" + }, + "dependencies": { + "@aws-sdk/client-s3": "^3.968.0", + "@base-ui/react": "^1.0.0", + "@bprogress/next": "^3.2.12", + "@react-email/components": "^1.0.4", + "@react-email/render": "^2.0.2", + "acme-client": "^5.4.0", + "better-auth": "^1.4.9", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "cron-parser": "^5.4.0", + "cronstrue": "^3.9.0", + "drizzle-orm": "^0.45.1", + "inngest": "^4.3.0", + "ip-address": "^10.1.0", + "jose": "^6.1.3", + "lucide-react": "^0.562.0", + "next": "16.2.6", + "next-themes": "^0.4.6", + "nodemailer": "^7.0.12", + "nuqs": "^2.8.6", + "pg": "^8.16.3", + "react": "19.2.6", + "react-dom": "19.2.6", + "shadcn": "^3.6.2", + "sonner": "^2.0.7", + "swr": "^2.3.8", + "tailwind-merge": "^3.4.0", + "tw-animate-css": "^1.4.0", + "validator": "^13.15.26", + "yaml": "^2.8.2", + "zod": "^4.3.5" + }, + "devDependencies": { + "@biomejs/biome": "2.3.10", + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", + "@types/node": "^22", + "@types/nodemailer": "^7.0.5", + "@types/pg": "^8.16.0", + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3", + "@types/validator": "^13.15.10", + "drizzle-kit": "^0.31.8", + "eslint": "^9", + "eslint-config-next": "16.2.6", + "portless": "^0.13.0", + "tailwindcss": "^4", + "tsx": "^4.19.2", + "typescript": "^5" + }, + "overrides": { + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3" + }, + "pnpm": { + "overrides": { + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3" + } + } } From 6090f83bbfe7f256dd806af40b59437d2cd8b203 Mon Sep 17 00:00:00 2001 From: Arjun Komath Date: Sat, 13 Jun 2026 08:58:29 +1000 Subject: [PATCH 9/9] Fix status check --- web/lib/inngest/functions/service-deletion-workflow.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/lib/inngest/functions/service-deletion-workflow.ts b/web/lib/inngest/functions/service-deletion-workflow.ts index 1672ac7..bf38820 100644 --- a/web/lib/inngest/functions/service-deletion-workflow.ts +++ b/web/lib/inngest/functions/service-deletion-workflow.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import { and, eq, inArray, isNotNull, isNull, lte } from "drizzle-orm"; +import { and, eq, inArray, isNotNull, isNull, lte, or } from "drizzle-orm"; import { cron } from "inngest"; import { deleteBackup } from "@/actions/backups"; import { deployService } from "@/actions/projects"; @@ -502,7 +502,10 @@ export const expiredDeletedServicesPurge = inngest.createFunction( and( isNotNull(services.deletedAt), isNotNull(services.purgeAfter), - isNull(services.deletionStatus), + or( + isNull(services.deletionStatus), + eq(services.deletionStatus, "failed"), + ), lte(services.purgeAfter, new Date()), ), );