From 8102314a818a27cdda20f1eff9381ff159cf57c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samy=20Pess=C3=A9?= Date: Thu, 3 Oct 2024 23:39:51 +0200 Subject: [PATCH 1/8] Start --- bun.lockb | Bin 381832 -> 386376 bytes integrations/openai-translate/assets/icon.png | Bin 0 -> 82835 bytes .../openai-translate/gitbook-manifest.yaml | 31 +++++ integrations/openai-translate/package.json | 20 +++ .../src/configureSourceComponent.tsx | 29 +++++ integrations/openai-translate/src/index.ts | 8 ++ integrations/openai-translate/src/openai.ts | 52 ++++++++ .../src/translateContentSource.ts | 114 ++++++++++++++++++ integrations/openai-translate/src/types.ts | 24 ++++ integrations/openai-translate/tsconfig.json | 8 ++ packages/runtime/src/common.ts | 11 ++ packages/runtime/src/components.ts | 13 +- packages/runtime/src/contentSources.ts | 95 +++++++++++++++ packages/runtime/src/index.ts | 1 + packages/runtime/src/integrations.ts | 19 ++- 15 files changed, 412 insertions(+), 13 deletions(-) create mode 100644 integrations/openai-translate/assets/icon.png create mode 100644 integrations/openai-translate/gitbook-manifest.yaml create mode 100644 integrations/openai-translate/package.json create mode 100644 integrations/openai-translate/src/configureSourceComponent.tsx create mode 100644 integrations/openai-translate/src/index.ts create mode 100644 integrations/openai-translate/src/openai.ts create mode 100644 integrations/openai-translate/src/translateContentSource.ts create mode 100644 integrations/openai-translate/src/types.ts create mode 100644 integrations/openai-translate/tsconfig.json create mode 100644 packages/runtime/src/common.ts create mode 100644 packages/runtime/src/contentSources.ts diff --git a/bun.lockb b/bun.lockb index cdd6e8eaabcfc481a7374337c539698c194d17da..b446dea7fc9c0449b262a1f51753d1622591c93f 100755 GIT binary patch delta 70470 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 JN5{1E{{Z#8W~KlD delta 66176 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 diff --git a/integrations/openai-translate/assets/icon.png b/integrations/openai-translate/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fc71f647c54dd8255717a4e2b24794ae9ec22128 GIT binary patch literal 82835 zcmeEs^;;d!&-Mc41I1m6Qz$OQU5mTByB7`)2PiFG+`YKFJB8xzesDdwJ1^hA<9+s* zy(XERon&$)cP0r_R+K_T`h)}k0IH1iH&p;Y*aZMY01@t;G9Zh2@&5W?C8{6_05#Fb z&nEEiV{$WTRRsX>{sI62zX0IzofL2Y0B)=RaAXVsd?^5c|2?BsMc|!*;3}gafv^ip zhzj6LL@^En034t!uP*V<`oHJ@H1Pke2I^R^L*Ipeb5&JT17Kj`KEVHnfcOy!83h#$ z9Rm{!8wVE;pMdZa5itoV894>zXDaG1G_-W|42(?7EUaJI*f}`4xOsT__yq)oghfQf z#J@>MN=eJe%E>DzDk-a|s;O&eYH91}>ggL88X23InweWzT3OrJ+SxleI(>I`0lB)l zdw6CqXIJ;%p5A|b{R4wT!y}_(;}erp(=)Sk^9zeh%PXsE zkoAqtt?ixNz5Rp3Bk1wT>Dl?k<<<4g?cM#u~w^Ia7%rgBo>-U<*d`v4fB zAenEX>YmHTYi_=CbK3*X^F!X%UnM=b5sO_*IRa%%@}yhfVIXCQ=?B3LeJOSh{aPhQj{V6Tyk>1Gh)Ye?uq%pnEZc-qqV9{eAUE31OP8HlQY9=?UsJ=q7y_ub_?pou5(Y zB{l;kEY_paKK)!3CL9Y05az{Y)T|h3>IxztE&2Q1Zf&x^!1qc|tsVdb>%KEBRrfYW z!h}VugPitvnsn7!{>^y-0NAB`(eJ)|Oe>y@j$ZJ1F}&)Lo5e{<1rBiSYuqY}=O*qX ze3Nz#E*=T-%euD3WgdhF4!*^b)}gJT$a&}E%b0MZPgw6u{DlM5Ee{XW9&Wr~Y=Wg8 z%|h4tJ9R!nn&E(A!iylN8)+NoQEV1GvtN^j1osgvAVSB?X-LxaXxj7n+i^O3y@E~f zH2_H5*ONTWgc-wqd@H)Qd%{O8KauYP0O|3bs(mGxyMm4hMTQcUCZ%!veZ?0582ofT z9t8Dm9_S``4I{c#MF*=-2n$!O0sxiSp-Mq7zLaU$rIoZ0Z;PCp69YX8Ao3|oA$W}c zpJCgv3{T_EPdrlfPe1^Qz_M?{gDUZ1X1oum(w<<3Qdk24AaAy;n}EnsHG%wW#@E!a zOVz*tkUM;~e!Q}BTsQ%qCJOAdJ3Je86aWIOGwAEnTggP$++YF3eBV2| zw$EYKX3||vZod5fr8s~H3OxUWfG10&FBc?}m%B;HH`eM92H4ZG*t$@*Jc{i2mhEY^ zjv!I24**v+*X7USB^=C6Gqi{CQNN3iOcXfbfE3Z!;Y|N#1p+(zqbJhDjAB~=z((JG z;aA}8K5_rjOz8Bs6BShK1OPKN6}*mC%Ji7_ST;>fVCAeZA0WWS^Lo{VA?uoR6A5g; z5gyg3{=WVBynEOitB{)YaTFPUGkYc{$@jB3*{Qm?{ST7!H5ozpuJllz`U7CyQ@6xT z;~CnY5vQbJzbzs00U$`1*!%&7^$hP{RjsT#+m~~Ar)f-8Rep=Rpp=e&25YO(Qvu!5 z$Kh^^7!y(avA3&li{%*n?_kJlU(?`fHg<)eV4d_U2AE)v`sTzZti;;}|DdW%C-e^jAdm%4 z^z#|=Of4WjHG+hPqX73+X=Z3N7zuH5tAhDd8ic?(i$y=F5+xNbMw?j*+1xvU8(v5d zUrD6&F9z8D4~fPnAf~ToF-5s?t_~d?_(S@1l)d_8dnp6~P*xuMI^ZQ}I0p6JK;H{rqg~oFLfefcvBHi}cG&`jNUf zFc}tz&CIS-#Ug_*>7#N1BLbd(?RBiKG7MQccWmD^Q@B9@3UnUbmgKe$)t1K{JMDYn zfS}#8b29?xBE3yHU1wiXAVI?nf~q(O_2%(^NH^tp2dQx@PYca8hG(RtXD8p(0ANlV z$MeJ!i6TVmuuZRJiuBzZ+$tpXVSXRPxiLURNc#ZL_Le>ui}axSqwXvDX{U{xz=&X0 zc6d->INYbFkaQed699h#KS6sJb)w&=^!n3D%>cmCQo=K3SlQ{hQSkZ1a|;SOU~aiN zbH%gmDPVXsuE<=E3B+i{OQ0jN3rxM(XxLBzXECm#lcomeq9GuF!yY<{ zLeU;$aL7%gWyOOI#C<1lVT(NwL!%;wIw`0X?M`W{fgH0;9|8 z=_+xS9{@3zBhZ(iKVlHB6*B9wazP+;ptYx!Lk!7_bi8Q%ntC5bgcXum8LP}1eEl=C z83`TuW~#GE#N76?=7UnHwM-r?pt4xMMxw;^*R$*j!6-)qCV*BFz9?RvwQ!}k`2r94 zW~^lgqA&UISq`GT7TgaHSXyq*y$Qg1S#QijE9+SR)++isvKXn!e?P05DG`9tp~f*k zOK48wKh#KGK6Jox`(nxslKsQ=F1rR8ecnK)NIsa3nm(BYCn3XhTML;Ry zn#t&=7-70;%Z-Ho_T6CEqeF7|1XK|K$&Cxc4^OA$tEBA*%*TJ>0t6U%IK!lWg!-Hd zZ3PkogL(9IywvETW`4Rha=Ns@PL{^l4Y~|ABK_XJEaNzwNTtraua<9J;_Db5Ub5qL(zz6+&9w94Sys z_m-YKErT|=BX33Yi5V~tSzFJkF)-W3-6h^l0A8cabOtjD)^}kwe75inT%`tD}RJ7+N0a%%ao@VdjG0EvDLU>I@^;_I4 zI-KazF&`yu|5Ve*rWXyHao}7DwJIL%P5vIr@W@GPw5V|qp;?}Roak`9xh#^T`}*~z zwhRgN6Y$#K=s>=CP9rY1Si!Wt{J6NJEvw>=r^$62)T$`t&7J0R_1cAqUdx3JyqT^4 zID8bob6gXy^K!+;Cq%9hTMzPKakel_>Oc*97a(3C1hga8PxX@M7Vk6fn$SqhgxtC4 z|CnSqlt86-4s7@@dftWPW3xYUTsFmbFrLVA9rACBaO@7@2>^pV{cTcHJ`g+Q=`q#F z%X)W)*VW>m-d(gTU?+z(E?}q5p$rHhlC^q&;;VUM_Xcf66q z3GgmDi}bjQuKHxCH3!z!q+U1l70@0aI;(Q6$@u{{$xY(aE{DFvStrHY2l^w{B%|ke zc+2sUs966Uc$`-scFN*ars=nq+-k6N%U*d@w$TEQ9zc2s?Qcs^6EE{-cS|4Y*n+0t zxU!R?Pr*)-mC+BlvOA}f`rMS2y0@#`3MVzbnkh*f>}e47R?YW(F3z zv}?B9TAyRQI}31dkV@Oz^5l(a)X zG0xYamt0HsSvW&?g6~sqJYP&}dpYK~x^|oAVx7usWMEQE)WpRWGqeuesjcCwFxSaz4$!;kf~UuJ0GZ}Tldik5c=<$ zjv;)1Q@jPILca@qXObzAFRP!S_;hDJ)yP;bcE@26IdijajApfDx2vo~$Rd$j!SSp&9HFmIQ{Hw!O~=Hn+>d@b z^c^m2B~)S782Jd~@oDondp#u{bD2UKi~ohtmDud9XW2^2DJaUK2)EeFw;cr`xALB+ z2W7)}MJJ`&S@eVzo*?R%Kg2zpIJI+XkP#(bh*Hbr8pjW!_{iDuqS z*2<02e(t+)o@ruNSnBH<{&Hotu8ri&OxBVVk5}c-d?mZaL3}bV2 zs34G+nff~)A*1;qdgP6Z3>x}Z9-X5cbm+3$IIrd5g7=TDX#6#j>nh*h2u72 zx&_18`cRP1ydvphDQzNNw?7yw&t1vy;09}SZa+@zCDlY$E9wdS`lv@@dzb2cpgIYs zql6{oi{WZ=)??zfl#Z}*W^bhB)he`my1d6+uDh2N6nXaa!x>3wb)D>BXKPpMDbtGv zD=w};Six3WNhZAQxwnl4=hmfg8Ez2qVf-(W)pKG?gHF^$otXIDui`dLmW`1X{!{up ztssZD$GQEHOGP-5!6x1U`?t(bta*f5b3{KaVj&D<0)h53IBj^ot5;rRMD(nGwjUNh zJtd+(Y=p7Yo-A5Fw^l~ea2LemIXlj*ZZd(3y8{$)*D`ah@9@~l_|T^b+yu@ROsv>y z=(aO7uTMY>kdl6d`v9~S2NjT>hG{pAL~0R-_xMV~B6gyp?J%t%HJ$a%iUxA)BqJb5 z*Q`8*Z@V=S#iF=r+q2i8a5w1X<^PgpFnRY-OKPtP6;!=ey$$84=&7^Yl%jZr zUM0xzna5#f)n7_&J2V%o##;8r&5``QD8lj+gpd5Q-y}OIiEH6z)%+q%^$N`VPX-uB z3eENWk8m4T7|3_~m9pJwd(q8BnEa4u)4nUL2{+@kg~^W=Tm)K+sfO)g*ITLhYaYS` z@kIVsx0^X%+-fIt`VZo8n;#QvYi}FYT>b2ZUdr+3zjVVIq#GrhSUCnzUb2_=&Y5?( zgJaHg`g#Kpg- z&V*teohE(PY)^Hm%T%2XTYi-)7%yCdit+h_ws@#>dc{)F39|c2rYv7+FNW8%57#!# zv`coC)+@Zfs zup_vLNdYA$!XerxoN;hHL-#kDG&vec(?86}aG6!E<}7YEqL?A%aD98CI}ks7=}Ck#bP#&B<2+mg!P@rbG4Uz~g^#|4i4oq;GK_ zI!JhgXkx{T3~A8k405_S8Yz;uU?@wxlrJA1s}JWEAq==}?)+XQiY8k4t}J5lAAS*P zGsXFKzIvjQ4#q`V^qoVZ3_UgY1SZe+q=h-QAat|HH$(gk; z9s9DUfnRrrjCTOTUUTX#4$sn9;BCZ8OZnvq%xFQU`5OTY`zNeG$-^ zC*A&A9$(GI1OBX{rGKRcfJ{PLHcbgBB zCb(sB9N!OVQuqdYvPyI8m!ooB$mQWRuy5sxCx4`QkO z3!~lrfjD^NK{s?0lI)j|6>fXFbewdT!%$OheSSjCYWffTr1pXas-!lM^i)xflzD1l9?&@r^#%- z6}3Z{?NS%@PA0{V$a2`1kBAQ*iZs}Md~u)JbBO0iS-(V6UmCFCaV;l;J@||_r;oJR zR*rAD9LV^}__n>eJ-w-A7EnKQ%G4ZEY_Ab9@4fOHwBFd@GWP(#^H*_~yaVd^m(PA4Ecj6$Mb}UjuH}Mb@DP!Mi)&@RjMaSC@5V+8z z(`iG`GM6i%6OO9lqmB&~@AvfcD1yx>gmIZT%_JCVgrFIhD7tCx3h|^%c2daw+v%{)-H8*EK)N{!DEPmX1s#uRg zj?ai73Q}=2)qvH}sk;%^{#U zc#cK<2i|4SAxd8SVQ2l*NdL9+ET-E3V2Zy4trpo9ewXD6s6O@AF_J( zPLy?)LH}s^2u zR89g}9HEc;N$KB~Jd5btviNgl=yybq_q42~y0_;Lt+q)W~+n?e>*0C><&~}KJo8uKZ{(7Q> z{O37Y9nfXtDH)aXd?c2T=prDr57r^z-|NLs{$m5mM=xvImmXuwlOMhh?T#ap#?e})w+eJzYv__! zx5V|hodF9BFzLKlD8(pR5qiq%N7diUJLqD6huo&0qb+QI5jX%tt_%3tM%y{fsH!lY z(%M;&u|Iy&jlqOFurq%mtm{7~%AO3pL+MH7Tt zsWImdj>$In=ZqN;tJmlN6XVD@>3fZasE2zpUqXI?p{MmA9bbkxrEfDSqvR*E0){_T zSDF^htnucOn>euz9D56YPqZZB3mrC<_l*3CMy467t#$P|mkQifScXxSCgNJ^=Vv`v ze53lp6m@0KS!zgfkPfwDRqvL7D_79+PT_f-J(Eom{cJsK$9T*IYtyw}=F$$F!G+=H zM`a;*#DaXFNm7p#>nlc%lvfjQg868&Byp|rknhxdspy9`q0p+-E`suPX5_0N;u>wc z{&|k?(Qs};+;#ko#6XrQIl9Tex7C;mp~;VB%wGeW2EYyXb4(qTA!agoh*S^0{AtwJ zIg`vaM0uN|5x?4Zwmk>|?D$T%d!*ygF8&3VlXvf?&umZwZtmwS0S1TU%wv8KPVtp9|{c3Nwe-@6W-lk|Q zE-`dvQ`Q!*3Ay}nLPzQ4FN$~K!vwne`j!4U$qlsbak!lCy8RA}5qePRlYXNWH%i%X_BvH8BjFPTmI8mOwX2=)i<{xEJOL{3Q zd=ku-Q&hnTT^lCM!*ZxvgSV)TZp2u7>(me+Z74VwqzMBi^d}%DdLR| z8B?+grW`)QZYnVFT1tbB3m<_Jk+SNb!~gQ#lJW`ubXE5AANV)3B}$#8OG(G?I}1+G z%V;WCn0dVZppHW4k?W9khb4RTX`75`1+;feBBTi+%q_&tmk@^!>g%{=c4%PO{fwC| zX4W(0xqbX9D-#~!cTT?Zy6ZsX|9m|IsnAWhIsfkF?CkD3XlfVV$Cq6&W@OL)8kScV z5s@AuwOLr9d-LKtnj2|#8X^!H9;u|bsneYy`5kt)5xz(SXM z$Fj?C5p{}x?2P7K+Jy}N)1>0`E+BUN>FQ9E=q$|uL{d;J;g0N+v$yH z48h$522<7L{@Y{=Z!ZONM?Cp9v?|J+@Gf<`doiXLdj)6EiDltTlK~-l3%r*d8EQ5m zVHu61I4Ukn?TENs=-4$_sX4Wjn0_4qdDB_?{;(0Kg*>t<(Jpi+0!*O4P&7spMUq|; z(jHy!Y2zbF*(dcuct^if6v?)Bg8aJvyOjDl0{Xdk+$L@!<+mfz7Gkf@^05`u3p;uk zdAxBTnAYW)E^cD%bRjo`Ua#?(zU%TeJl&gRCMLH0vlv$YGT}+&75+MpuY$8MZMwaF0$2qT z;JYS6P(F45hix`S9f^WTr{U@k{mfL+j8gAowwa5tOopR9KMv%kw6!k5)g?sNslVGj$QHAFnBuZ%6f9yO+=kHg#W%Ml}CRXJpbH71O$yNZMR( z2Wk1FaT3^+^0zbhwq|GqQQH#qBGFt9;SSA?^16|50%Jb)vq(&!1`P!Zxsr~4Of4oT zs&TiJhwWuOmxbx96v{BgD2KA>N&SP#Gr)5-8To<#!IV8*@*9_1SEo$j+Y`-UL$;)l z)Y{s#)dNGJ-7HgD8hJ^Zkhnaxx1JSI_Jy zP0(T>0-Z0j`4z8LKpbYY_<)1TarxW6?emRJh1}H4TQsuWY6Nd)Sfpdw8&<)HS4j zw!j*OJLEel;WK>a|8B)JWF;B#B;Ktu z@Od4+f=oNm`y#<8$W77-b*8VX13NOzD^z}v;rMe%4M?M!xou?6I`G9`l?6OAo^5-9 zQqT(aFhIb*D|zBIg89MAgy9^}*nmU*IpIhyQ2Mru_sI{Jo7vKrOD@{BccRRQB+j2s zTt{5nO);DYe>w7n5w?bzZ_ko`==Dvtr?GSAZ)5Cn?ZrV2x8@BD_^2^Af#aJ);Ai;u z9w7^7KUv9)%@n8Tt8Y(6TjRc3$$4tL+mp8gcBNfbb+ZvJ!71UdjK)7(bg~06gMC6Q zhRmPdB9=KDVcjVAkJA+Rb8agJ4~_71Qz$4SEIr`uS>p*9!g@*}*LoQ-Z~hluw@gxN zqa;s!pBw4HG=`%D__BnsF2pp(_SsrTm;YbIAxtKnjkG@@?IQn8z&kU%thW$Kh}2Qc3Dr+m zK-R3U%&?Qb5M#{y_oM)>6O72-BO7d5!5w<4)d{4Tquh=h>o|qwJd;yg8!>3Y2p{>l zsVg%K>;5%8H3+6GyU5bcmHI@uS^X5L!>n*l$(E;!N}55 z&&HSFBCBEl^zwRI9dT?{-&MR1>bcsZ{jD3#dh+vDtpA?p z`-244zYKd#XrT|3x&7(=UO>{cE%E_xVjZW#?H~GPuykGI_KSBG)jE40@u`JW5Npn} z6LGjk84`(&^r$%CE*@k@#6P0OXt_1*CxP;i^`Le&NSlSh*$}rqUV77hvB!o(KRN-` zn$ne=^~p%&j{md{?=okwXAW(cuw{+m7JS0DT2--G7TQH9q&D$u*pjd#l#)}Wx7>Vr zZ83)x0{L7|9|>SN;^AeDEtIIoW6@w-v9>wqHbgXU+IzA|-5o7Ie8YOk`WmIQ_y|h` z9qXSixEl&N`n@lXz{>uSy{>~%w~l8|u_Pty>dKA`>zokl_QpM5C?#<{rS3?*zx(v} zo{3?@xAZ&(8>yU>*CxXX=ewahl#+enyCR{KbcMClri2nz8bk9u!Oj4s4jBH!+r`TBp6SI~u_kM5G{w6c6I2%{z#i0G>wQQ<5+$rEvT+$otuXy3(c<5_ETH{AKOKiVn#WrnuLPGqjp7+;<{F z^`#<$`$qJeqC#>>^;eD;Wrr`}##vvemeHQ-IB9XzYG~V7L!0*53la@8G0NgnZ#6+W6h*zO-H)w-CYk#X8W6#`zuU` z54ZBQ(^zXupH8$TbK z6!JOd@@mgjPnU!6ZOj7^3n-@aYJ7#t z;C{DD!I@nO3qoU=zuPx2wJfX!uewn#zdqu4K17UJIrfF}>a_*zs$ic#Zg8B9SY{ri z7)E@eL0*xKu<&R5YGNrmjHw&7L86b`^s*=7S>7DY7d%^-Qg0dC)jRa9vUNl|CVCAr z`(s7{OT(aO+=E&e8;kwl50_tD_U&>DC)`l=+(iX)a3hUG!Pn&fac%;2z3c30jQ(^Y59+>)EZ68Z5Lx&kp?;sRL=_e&fz)A6xDO>F>V3 ziV-4V_P=)@64zLFQL%(LF)Di53|rk#QNaqC)xN$SOUh@;4z-T^mQ?kyKOcxv^rQ&; zrvF~|=haR6t9Sf#>^|>GzU~f%gB6--oQKF04V7+GE2lyYS9!R6duSQ$GhTekTS=K_ zCLr+|wA`rdoqM(4EB_9~_&NsA5VCw-`LE4fNDY7WC;xejM`Zy~V9g-ru zCT{;K#X5VF=YPHi36JD0Vlx(gOb=peUzlQPlHj3tDUC)wQmH@fR6KR*mai}#vJPKs zgXL4`S=r~V%Ks&PXD5n@L4eouuf3JeNYL; zv5rJNTdF%GwI^=*IGn}?#`gx0n28uX_O-w!CmpC}&Oj+* z%hN`}!qRQIsFHT^z{mHaNIw;upUVrT>%S|KmMJqkIugSntDPu$gw80*bsc->;!xYT zMmcEqW4}9=raRX>A=&}3>!180@z28Uh4(QEubFtHsvDK@vq~AXa%M{NTA4lX!39<_ zsYs}JuwlhSW+4wY4U~blWb$@7+AAu1oP}mT#FrTB<@-GxYR@j=`$T*;O*>rKk0+BH zUA8}yeW zk+e_&XNTur@%I2J>ZhmVarCou4nno^*)7Db+O$Lq{*jTdC}P~Ffh8ytforY{%~(_j zRQvi|RPM~iLx0y{K9gPYjxV?j=!IOgLWLA1sC|2I>_|QRzO(%Zn84u8BVAac%r1EI zxQIKcJCiRtJXS`zYvfwn^5|xme<>{8;uctIp z{`H0SO23rr^}lxnA$PHAWzk$q`ew#?5U0+`lg}`c^r%w35Ka!hnY@!#IciZgp7c|E zM>&}{0#;uy&~FV`q#K-Ftt5u!SxD{zjKr_!C7d>->>U>ym#zcgA5iGp_%AydU&nHW zzNQv_!|rq~7@f5;f$~w28+u6PqL9!&X4KI=iE|X~v$4O*uERbn{`1$-6r!G?D2P#9 z9WM9nZ<`~)&L1%3OL3s#wbXLqnV2@0?f9DMERfah5ifriNxW5w(8t@Df%j*ETO9v; zo0+0N2Ht5~a@i@{{*TkQ#XuO0tm6BlZ(*fZ3pgpm#GfYGOBX&axF1K3Z;HGY+-!dE z-4pQx-387f2<##_w8Bs?bZFOA{ zu@mOitLRrx|7bVUIH@Iye$%G&$WMwt1jEo3n;bWEC!8NNPB)>8p0(7)rxb7X0arNd zhK3qy+@SRHdR2$Utq9B9=&x3E?3oTxoL1K$(d8f-^ziGYyi$YJiz+YI%|NEojGGg< z7OjE2O+Sq>oO+#oK;Y@|do#h(&ch9yjqPnKWkRy4Fq@sPyX;wV@=G^w@v-8(R<;Xo zWWbyFW1mW*c8pZxgJM`*f#bmWr=O~fa{g|*cPzpEQRcz)KEy&i6Hm3Nq>2^LZ(tEL zoRlvLE4;mq=0W`z4^mLCiM6-wsU`cG@74{`zb96MGwRzY&PFIhGV+%KlV4G{NhKC> zPW*p_zU56o;eY0TmGf(K&~o|cl~nzodWaR>{rIiAt*oU(>PqMg zXwZS*TUa~FmXtR|{AxOS)ONge-25e5kzbi2YrOEJ|9h!i@Qy*IfKH55WeZA-SrPd0 zhb>OhY`O2i`o?K(m#<8ur+0tyGez1Ah)@+4p#|iP=4HZd7{%mS62Ig_dBxLd?Q}~1 z_9Thzz9<~&&=T#)7BxXUfS_nqgXMMVPrVfAafa(RIXv96e^Vhq@aVyvTJ4YY#(noi zMT+hA^V(DASC1g_GxHXBCosjZ?DRt}nsD&6*;{Y40Qcq2&|{MDMW_9|h#wT%Ig3E> z^URmdkB8>As5oEUYo19{`>lW*UqnErg-~mzgq#pIIN9pNSm+@ub zzuLpo^`25Sc2Xk)f%P^;x1m)hVy-sI_#4(w$k_^P&)!_V11x$=o*sNMAumQ<_bQyE z$rq4{C^cTTAjb+RaDYn7X$-~QS))ak8a*27zRS$o_HXBWm*-?q#DmIgBuY)&`gx9W#-@(e$61;AEh}&pI~OXbn0#nIp9pFO^lh%MZfU z(bq;ZLgQl|{VE1*{TDJT>EGY*IZWrcqyu@MlpYcpBrNDTFS!J7-Q|S*3{I25xQa!kqq*SiY!wV5eF}5*$Pa&xbm&vzF2PCtnKELOlq)16mt;U~ zZQpeXn|DxNrqm`C{enX?tS0lytz%@pfre&kj+8kQ2SL?U%0R{I@=&x@;td;f>vnEb z5p+Ae!FS|;$Zpi@X+B~WKbm)kyq8?YS`@I}v~CR1;*bPms%n2Ys84A7kVtVp#4Dsa zeIC3=q2pe6+n#1g2^=8atg4Sb7@6bgsl6s5kc)mP@1Q0rrcEs$?wlYUEC1ak(DGs1 zGbQwCqK7P9ST)rYD?tv*8Roh)fi-&5nCk0IY94J_SWO*yQi9G(_$Hpq9kz&WjcH2% zxXW2+lu|mba!4T)cuPwjTp}_f(_mKW64k@PwTOLiloMnmC8{% zbk#58aQM8oT(qa&o^Krk%zi{b6E4G%BvAx0BhP*>>*(>JcJ*=c5TdBe$bq(CzgRuF zS8ph6yX(lxux62XnsBAZMH~rkckmPMBbZqBhrGR4HCd6{qI2P$NEmoQlsM2*P|smq z-Ju5pSPO4pFXD4CJmHqdwMWrafY(kogZGuOg<l7ods}2!=eh=?@C}w5`ONO- zE zG=^NXD4huR(d~Mrf~R4TbO60)bZO9lDWl~-1WSv#)8I)^^&wP%mI_n*5!`dpLd>hC zTjkbQa*K5;KRkRN-$6LgdtC0bj@g>|>t^@n3k(m}W^EhsV`qTkzAwF>Yw8*ip(?Wi zqv!$*OtWGrert*SE`{aQ6|wh^kBh{Q%Guo9tzB(2Sv?c)=*iy^`SdA(z<2)Rnzrd9 zYYKN$547i?0YqC`#++=X=eTpNpX9)TyHUy?nmekIqccpsv0QL?GG~^S=Rta}DpvHZ{s&9W z9h@uw{`gbg7W%CAtgFYhk!qL|CUd>g(y$=MGWRc6B&0Xv@8IbDxzVS(8q%%WG^)!r zOJo5$3T%*dbsW*C%lc;3^w=+@nKN;^Gn6p?_1oO_fI(kP0IK7`+{p z$3!+X7A5Ve13zUoM;LcD70v$!7PS;*(|1zW?`t*7m}#h%p8URL-6jO=~B3;$9T z;V!F*=}r}zl804<3MY4{Lb9(;)e4}Y3Nvo+e%HbWL2*Kq8Ga9WC1XocO<);B`u%6t z3St_azEruKFHsN6UzCy`;^5~05aMcz-IQk)>VkhJ(vel{yC5lTChC|;Uukl0M?@kP z2C(O^-}h$=!C@WI9&0l@b0Da4YMSx36-H7ns?4qb=&W+GBF;X9l;T|z#Kdh|^)QdI zrz~i1gRj^6YZRu)@*5qR$8RUT4n#p9#HT^|z6)W?)m!VeIi4KHe|@rc!?8c77Fa4U z-Eh9=_a8s0E+;X=O_#ok%oaBEhD=X|2Q46YAbOb*=5J&%%ALU^H)DPUi3+)VJR1?S zofnq?7gFuI$x1O;;9ZF|Pvv+1ftXh=Fgy_sSh4IHZ8%oJi@amUhfIGKGr+wg zrd&Ea7Y9-yco0_R&ig5Z&bnkner<%zZ8nA!Wm3!mn20==x|@WYnhmexITYKB|$NF;cA`)X-o1uw+i1e}-i>@!Ufn|A8MFd>H9KQI9MKkk!*$?_ozSeBX%pKe2 zzIYQh4JPa-^BhR@gY`BRmLB9UN7u@=zNCCxRIb(LFDjEZ;4kMtc%?CZEKs5cWiq+u zF6v@(Zwe4}XQc>y*CrOlu{*GqDJhduTYK-2F(go@ebc(gSv8 zlPNC{WFt#%DsGorCptqJq9Ni1MR2+PbBqfmau(B5W@|Cm0LvkXmX|QGEkwup+!%O% zq3baW!0-LVW$$%uHghVopusr(2W zO4OwBV%9f9FB;YpwC_Lg=A`kp!Hzl;2_bHZSR@TmW^GYn3BZ~6J)8d)=KtZy%LjaU zS}DXhC?3tI8|s;M3JV_(N@B^N`NfI9rnii=)uq@q!fVq6x!E!JbdUg5hjHqbb5QuZ zlVFgJY+ikv+d8BxnlV6i&@dV2%* z=>u*iUh3v+t!BIHM}ue>;V9fH6G-X%Vxxd#183M%B6S71Q2GsD%=&z9@+-`vrhB$0 z=r#bhBOqNO-69POYtSj(Aky7kFM=Q}AstIdESO_lOC zYi3{BtYWIei0rjnTZ;KDl(JS(Cu<^q^h|AY4=fz+y2f`EeS9-2F|l8SjpSKwWe7G7OeNUlJD5t*P<#it@|9~Q`BhOuet^@vnWS|ZY+%q zQt~UE#5Qu~#0`7f7bu#i>8*UuC)s2iW}>PpEb3CPl}ZemRTf=NpL$8_q>?Dv#*^P? zb-lDr-(atMi< zQe^k%Sj=h=l(-eoIJdhX=nx+}JXDUrra#54s|w=KPblx}nIm3e!sKiYsqzIe-h zpDN&--NaQ&DAoL@#{2{Q;wVIEExF9}L|xR}ft`VIc-gU@t3|OPh5k>p zj$eYmX{Z$y!mMdRhtvZk2I3j(%k_57bc=cJ`dI-p5z6q`_T6=v{R7toP-DI!BNTx` zN~jsgscv91?_hkCeO$_Z1Yc_N{&hMRLsQHAFpQ zU8tc(KCjr_AJ^+wVnR3N8+3sSz^=l?Z`wby9WrcdrhZ?l$b*m`xXNguE87JL`8hVP z6Yb-S)&E+y4U}|<=qb@Mb!=ABr6X$rxl?_#e;+hg-*(wRa+JX!)Iq$LzOFzd6_#n3 z`mkr=SR6tCmmxTs9wW4J*isZh+<3@_C5_?1#&-w|;^som7440dk_6igfLo#;ss!DBJI#$h z-Vd6P_Xy>NnILs)@aMBAT~tRyWKl{m-lnIosfEtOAVIxo3rPDzZiqn>{@T^WRK-*7 z+ljn?80=qG!aj!JGqJ{@ib%qWG^klR@6mG=bt~p!veC}crm8vT=&973c6a08BpLSk zR%a-Qqw5s-S$8r;=V#lBGEEX;7a0g5UuVBbjPhpbi^$fQa}TC{?Cf}Ezm`mdNsL-; zXe(>!f$Ge+YX(0HeK|(fxO5CpVOn5d%lz-Ry61s-nUA`RVq{TKXJJEe8&0FFP2a4bRoku!HUiXLQ$@wL~3&bzwvlNTj<-* zi6;O#j3D#`f~J+v;Lz@G%#OkiK?Brx%in4EJk)X{mC`UrZ15en_hqf|nJ5zhdsJZa zt41LZ_D_<(7D_{DXzTrP}ZfW`7Ik+SNS#K_7oXB|DniS&ywEkkqi&V)+ z9pseu2_(Dqs?6WmM%eK+B_JfU{N(=rej#O0#sIux$(Yvt?d#@S%h{0guc&vm3+Hs3 zA6}&DoO6Tyu6q-u38m|AIDn0mveyxzVQOl%geJWtMH64pvZmSD;5`Z-%{TVLj2>wP^|5dYd7J<0s#J-{WD`nHp1eVZIaCk<8x`;#BsRnc$7+(gZs%8e5Y ziNUw(JyDAT{ahI*J3h0g(B=DTI_BNnxh?Iv)SaJf`7l=zB6>9KEeb)A3TiVZzZ_S2 z9ahfWmbHa9tRUMu&oY@lCyljkO_i{x4(R`|n5h{!>X2=iRi3QUC|B;WNA*^HHT0=o z9V;#o_oajeEdzk^!wxs zn7`mR9=l}IB(1se1=a^JXJtRLB1~_mi`jg1AuaUF(F3+9BSbBXPW;U)_#_4VCn%lyc6wG8?0j$`N4({A|Vr9Vc*^3lx~T+puGHYD%+g!E;Hn z6cJD9vFNMf*I5WY-M1Y*?a!#K5{I`PqXWr<0;Bdw8pkn_ZxY*)o~DmA<>Zo~my(I) z@HIUG9dkQwNKL(%S*^EeShhyOcdCLgjA`7@i7!Z=JW;b8{_iU*u!BP`Q46AKK%9 z_Xat>W~x}dXE{CQrl!xDAm;PlZ+Ux}vMd@hzH|MMJxJRTxNi0ea^Xsq3CqmttDCn>262R$qf~4A-#L?xU0V=iS_aE4t~?< z4eC55U9AIIx+uS#oK8_;WUaGjo={QkwPrB?Y%TN5H2a&@%L&$MpR{cn zNI8tWbH`@6<~eyYiY0kp)+aD95UL%y-yy`N#qVI3q$NAVn}sM%Ipq4OzLT$|5^x zb7cMmO%F|cl|;^uV!@+EDZP-CG^y&(WRMSu2*)Dueg_qaXVXFqjiW|a23Gm?D(}L_ z-4{n?5yCbQbu9}l@*ZWz>e*+-K(%j42G8NT=br08{ca@&WnL<4ILvnOtK8m7UNVnQ zIV9NIY&U6$)%{M)QCaD*n7dHW;m@5Lv?VPwW6-##@&x7_7gSIc*4=&3!!GVOWm16s ztGA?HJKb9FU)?;a%UcmEP|)GXo$J2^`*~Wo;OeiKRmULu}n7a z@{eeouy}LE_1=XtA408TUYR5oT;clbrMaYjvf_$=LD#l8aTeEp$5dkSon+fjnnCrg z5RU67CRgcsc+oeO%6^49Ab4{#c>8_hx|qGsF01r245*2({Qy~0F{$!h8{XN}cDX59 zy_6cHfE{QvcFy2{>#3sti-UfUHzhMe$JZs-I=h}$2}B0=5;byZk`SaSEB4l9y$2SH>m?fp z{8z;jbb)j_=E+HMm`1X7U*h7sY7ozx_~pLg4IeAlMtsWRCt9<5Hvy7bDFGS$*F*Le zm0iT#)rv!$PZ;-A$I2L1x*q5~}uF%9cgNq5GK0iv1tqRD4wfBhSR zrvQ94eWEwVTgWgl16^a<(Z%!&xW4^lT63eCb?xJ@o}9bsyx9Uoqbl*py{v^ux1SP)@stRz9VFp`Na(hDN1nN6q{+XuGWiw zFv~RhN)XTLdS~R$hz{zW=4Tf~Q+e?8nA1u~A_7qaMgSwx=<0@b)aXfAAKHR3=Sjau zzxWH?te=u=#fNrH82RNb+k6mGq$dRky_qB}QbwcT^1%kH6|h0{XXl&tIkS<2Qkr=K zgRCnGGsXF8=cR+D3SyqKi%kxcd_hMRcP_b9`@^LY?sr^qHxW@u^@FP4xzR^& zuYaSu6VA3Szor*zH2hT^f~Fy0XsREi)2^O>h3uK`qBvC+rc;-m&Q~Z4MtNK>J=c@@ zSpG~Pva~`*$<_I?ce^$_uFZ^uyQpRr7Id7>})T`K1lUBCpX66be?(E<6{$x z+y|k_*jYI z8j~M_CL!>{!Vmycf&-3N|EuTpQxYTP8Lpp_U{?Qp{bTK-GDvwS4|Bi_;<#2X=#T;^ z#?RS?YNK&|!cm3jB>UQ-&?x4m^bJvtS}=DN6mJUM!8lp4$R5zy7(uEWkC-R`Pmp?L zZ;Odo8M*g2KCY8|pd%2dowanXRsELfA@co5w&L!{tWV^(n)!mGGKXCa{(=rRpki0> z3l%KXeqiuVp7anme=RWy%gBOcq!=i0mv83{1uoLfvO5cr3PV1}CZ!6)6E%sfUz_(b zry7K@I#-NM|7WdBA@&hF*bzigRFG2EWHxcaiBGS7Y%ewm;np$#lBCssu0boIe(_b1Y zwxWqZS2?$IDt-<^!)wB;vSd81&J>kIEe_ZH+Rfjy%yID2z(Q4?e&B0$>mrjaig zX=YdN@-JbplGr!fQ^J#|Md7+6=iIM2OD&a74wvu!oDXL)Xl%|mzRvXe&ILyXn0a;W zKAX>Qok|TExoA}O)7HiIm+%n9G+4o$J?`~5n>vV5r4-m+2e|ru=K7U*obZCF(KE?f zgB9G+PAfyrEoePNPu^9%@jJ4^mQPKv1uF8AZde8{8sHl2R|O?Y)#6+p*pX>aa)p`c zp6kq!!VqB^BD5sXYlpGXN*6O}!d9mk>uHm{!!(4COgRw~h*XawicBik$l80iOsY5( zm5PW!hXqWCJBq~$VisI~8cLFOyZx2rN9W3B%5$gl<4s@wNaz&H^lxcR-)dI&Th#$M zxKi?7DUQ5sx_+LNeU_oAV0Kx@Vxo#&!?beYdDMo}ARF_d`Fs=AUDs)O`aJxEe^eEc!*?QVl;xdn}fAU_rI7HZtuxMGh*@{mkP`7_r& z4xwCOq6S>YB7`g7O7QzexY>S+vBDM9P(4!UJiKzA+>@?~h(hPRU5yd6)hR8%^5=Uz z$Ipw^8oWd;UCEeTMgr z=oCzVX+f4QM_O)a%kfYXKPV45oP?L=*5GUXr24-$r8QbzD;(V(Y#=65XU_3)}UgO^*xitqrJR$jWa7RHVCQRBMV; zRRHA_W(4`Io(g7deEmwe_p!M%?kV24Cc|a7ZBeZR!u?*QfQRQhI3r&F>h2tE7iNi^ zJ5LaRct(Cq^C)kC9r3j-$LB{5fOq*8nsM%hbL^QtxB=dp`l3pjZqTpeqc`Cg^ECJ7 zm64H*Wk_~HFy_Na7XyG8Z-4#d^Pg|6Uo)l5z-)X|emHlxPsvXRZeP|uQG&0_P#lZ# z;g+#Odc{@lmHvey(QTA}3@RJ!*?-^Bd1I&2{qDd?=j}m@xcQwRDVzr#uIqP$)pq(y zj(<>z*3atw;`1^1M!KRkLE54o>7RXWMMmb6ngD<%u^5^Y&M9m2&EM~%gY-d@V29Z^ znk(hequE!HPGyrmNfdQDiNHFZ3iCxqxu7AIlaFq^*Bc!$_17TuWA5BEpLtG&Y|t9# z<`&Lmk(aX;u4$KTdKPs@KvC-tCGC4QT!LB zrg~j&b{Ablyzb5ZgqcBg-KwL_ z7CB65N%k~9ph`}X7}mNI_Psu#OU+8z(3shYcC6|0!Np64+-}YSF?KRZ!h;DUM3-AxrE=|!WYJsoQl{5mqRPCyi=IXa z!L6_CHFF>7(|W{I z>uAmR?aXQN>+jA(6F>i7Nsa-Dl>w-Pvb6MNDP`x*Ar}is4U-^2VD8HFw12>iZJg7D z@9M~VwRsko8_t9X8&DVb-b*ZEmNLh^GZPw45xsTeiON?UnqHQE4_?qkfNK#yx)pqs zVhwKN7=#Yw=9YXW0ei3_=Ht7$VyBCYa@t`7&%E6}ob9A6@ABxotjhyG&!@Fk00^w0 zgX{rucNO0@ORNyLi<<2($j*cs?pT z>d*p}41)_LszL8Oe=o_w57@C)OyyvRUK>$$`%`WU*@Po_i{buyU8xLu6PLd_%gPl| zq{J!0bt%LWHVk22-2ths6~*S1MQ;%j=&-}oCbqk&0}c-rsU51^Sb&XI?GB9vlFtI? z8?xQDHr*c$oI5doJ2v{VDXde#2n&viM||C&8EPg&|0tQ$*8G21?w1o#+_g3YVmA!h(S?)f%Gz9MapqMX|AH zrMOcki%FWIudEO(`%~Ys{#@olX`waaXlmCvWIsCu@_2SO%t!2ynNj%FmwP@wT#qBE1s8r4KIVSY zpzJ`1M?l%3{Q3Q_rKKpf<41h5PY*Mfs1wdFCa4BSNB6UYkb&4w;EzYr9yy)f0uinq z^y*#3QrPd{%1xqXNv0YpJ}uHP9cO53u_-Ovm7_Uwz4oPRuEyo%Q~D-LvrC=`P=`T= zztYY^h&G5tN9!)M7g5vUhrA@0o3GMY$>Q#bDqWE39eW45p&szx*rc07ktS~U3>;}6 zaUF#OlWwrZO!OdtUEES8!2S#yWes*t8LG(W43}hw3+7Ab_bDQ_{^g@?(lM>uVN;T2 zqHuySUW^DJKnl&2`&zlGewG;2U}8QPwAn6Vn0UX}F5cb4`*{is3F_`ei1*m=td?TZ zcO?uNQ^MdQX}_tnuD>~moAgd1ao8RQ7f@NBnksAMo)a2Z>b; z6u0I-%?MYT_8W3{el##UnyE#Buh~;VZDmi4H&=q8o%a z9}=DTXKSieja-L4@%*pxdu|%RZPl6dFLx$U>p8**|^YArk zldO$4*b|?M6e4MT@Q#)9m|Y@9ml-tnb-G*W$JmSx*5>U7*Sw*mh0*`uzx8BSFsNVe zxm{?$?+Lq67jID5YQ2GW^%-xU4ag#*-xf;Z_EQ(tWu5rC?^eJ+Xz(6Mok$pTFQ)65 zH}w$Efb~g#*;N-i@AO#*bWM?wGkAZ$WyxGw*ru9%US53vpE-#qG#`SU#9>o5jafGP z;_X8#!M(@xQijH#6&k4L@u1yS7gfabB4v9D{~sOPPO<0<}tXn&z7;%J3l}#F|q+2j}~M0vx%)%E{v+99~;6uoUybhp5XK8)Tf{3msdQZW~sUkd9b$mWiu+=vuw9xXf^r=VF{@ z;U5hx3GIX2boslyRyovLp17T;luYcsxn{jK`>H>}$oDjPbIqB#5)w5QbI-VBq_x&x z_*#qoSkmQ5+U6OLsH>n505Z&k#th4R(K@=`OZ}Lcn{1$#R5$N(Ki87iaU!t%FtNA> zV-i%Qsa`;CMV73J}X7Y!)0L`1`xJ68MaBl1kTul88YY_(I*!4Le%hJR-F z=D|d&;LbubDLyPWm9UgFGU8slID^Y*sTvIZv*<#aPGc6q^K1HR9;U+xY9O-sPssur zq*0AL700t_ zg`vTCaL@?M2lSW}*aH@;Y2G(u@eb9zznRTUt8lWOJ;!N*Ti=)Ceo{NzGPHImMp;4Q z)!6hm)lU0VG?Nng+`enHcgB}z;V`Q-q)tdBto0+^|R+ACU9_t14$GBOCe7Tzr#_@kUMD94Vcova9n zYHkR8FRfC%wo$F|MAWC;xuQmvh9fJ)Im5w@U~Z;~XQ2M5~>cCC5kOd{ZZQQH(a7 zjke;%c$Po~{4ZZor;#ghiBq_~8^8(*PDmgv^CqZ8Ek<@SK?ZZ&c zs3>k*Y4+KTFozFds&NbI`1TfQGN@qDd0HIW^vlV|fS|w-w%a(p)|y-0GNnzKWMk&9 z^C}g^=iXXi?iC-@i^C+FJHD<$ZlypN^r{|3r)Uk$^Rhko4{+2yTZgu^y-@H%L>@|b z=x6>UmHJk_iuue>jT!zV{u+$a2bvtsW6r#&_ve~8wLI_GuB=@NjPwrL>*Vy5LM*Z=rVJ! zrQiD$H@V{rEV&>Yj0NhE;347zvR8ewo7ocLL?82>yZywE<4LZ_pDp8n-(G6uDaA0} zo4>0MB;a5)ZaIrU@@ByYGpMw*Xq@7p;l&dDgI{)J?Im4_8G(w!2)vzNHf=fr<3Qo+ z_|3?DGL2WoxyLkI_5E)In5yl++O0Q0B-5`@eTJ7Fi+5hOOdG0LfPlb^3PFF8J5f&z z!ene#(ZSbEPr_(uKv50X*Bf)bA@G~1-rFC?fkv`3p$k_Ns3Q=Pt*#h4SMQ6aiIO`P z9PRGq0#UDX$Qrn<_>r<<^mrB)6Qpn(w?L8WxZb6 z-1N_c+gLB+rpK19^FgH|&t4{OH5u2*Fa9dswm%_oPdYvAcL+V{$GMH+6bQfXHq`F+ zhC${6va2-8M>?a#|6{6~&s$39R)M>mRc`PyZTdFTnI z1e9#*R@Q-h0p-PfepOPt@MUGgzjm*z=8b^R@t;SW9%ss#{m z?FZl#LLTRwrR|+nl(P1j~8#^OwF#JYgFl=h(Qglma(FeEu4*nIEXEupZsI=qjeS6`B_pBev1u~POtiWtX zZn=Rq7#Ujm$^`vk&LQ+LE@~fDb!u{WXl!RXNyr^T9F}W`_pP}=QJ3`^g@=bb3 z{T^nU-)w_3Np1KpjbvtrwZFS?LP7tI9(|ws?eCvt9 zn*KkBO2m^g`b6weR{Y6ze6@S?t8BYO?Ozo_t6U1zoEjNo^*U|}M6ub81eh+sh-Kk@ zbnah?6SajuEU8qQkb@HaOnRVSIq@{}7&I3w3t&irBzwpA-M<-=RmHU7B-k9?{Q5-# z!@N%#zl^PX5}kdZq|L?|V8991G>`Caef^N{hCq}zJiA6~r}FpvG$0FeJ@$u&;SzCL z?Lxos1t4f}7xdTTm!POQOKd_xfFYJCNkYMS@q*G|Bb6AyL43KBnC|hAu#?@gh3OI% zBZN9gCipK|<~~yhS^}+B(>l4$5z?;!mSLz}RrZO)m%c68e2uPrAhA@e!-gMjTVUONBz$o{r)YXAn@S4SsZmF_x``5y+Nuf7! zj(sfq^uIO0nN7-d-|xn1@#!qe?$$@4W1BliYc&6PF-B}Y;cy=sz9Ok)r4d?s zjOND4Wd3Orlj`@9NcC-#7Tp+8FmMrDF1UswCso611UA~UL32^pmS=R4H+!>Ie#prDWQjY_8;#@#1@|vZ@$ewMI0=i2GB^Kz zFS+yA7EB$2yc`m7wn}FoFlstSanJTFd+BDC`Bc@JAL%UsZ!wM+j=n)~5&@9k^mlEW zR%O=iTy*tFnS-;gOb5=vRG~-)>EPT6M;gUE;)r$p;G_!yo%O2{0szMH0mO^~$f}(J zZLdN}|I#Qj-Jo`-8K^x`b2c$})Xi>~U|GVouBVT*y{Z%FruieQDsT~hqr3%@_U3fg z_z%A~o7p^p>!?C#>2o{|Ej4d;ZL$Cp>2Jujo)UIm3b ztI`^tO9h(8xs-O#VS5iR)m=dBCo3`~0uVku_QrR)z(+>H{D1=oR?zcy?uw1Y&hRl< z_SWH$T2rp>yTg2SWf1S5lq6w4?3Q|d^!3ua`MW9?%%v3PK3|irmwo~%DQeDtUdYXI zle3@nfOK3%ah*T@4fs6C*Y`QaMVOR*Qf)WG(}2g~5DiBzyB1vCM(`gQ9#Q}5;9{(A z5Z7E)Y0h6bdgMB76JOI^9j0Qo)tuAM(SW&lgSpVA`(0CnJ3bqm^66+wm4MOHn=ipNw3k_}Jq%m$vT$o5+OK*&CWo zPA?28;$RpQyWg`;u3&$uV}~QKjs$)SUyKO6Xa#1awz^6;$R&MtpD0&hW8YZ3 zRj>F!wHLu^Lz=yiq$s!+_|J-21Y@T+?^TBU|+Fhw18 zOQX1k!}fjLQPVsx#fR&>o@Xen5M#JNHgH_<^Ss_%Guf~4^rsBNc>GIxQF2BvXD0TR@RekV8 zqTx~_&K!B@tPy2Z)hRvJM5Du!l@=teW%KGpFv4u5A0D%`p}GzkPLebwVBipbKRb0C z&dyg2f^J=($L=P4yvi;O`crFNU;i_o_4{S2wLG8Sx@Xs&7|3(;Lwg7JxKUr)pbuYx z4ye$`JT>5tw4Oe{kbKbER~S+!kN=sN4(VWbbbVTFtHsTeVNPLe&*Y1+$mx=|68UEh zjU+&OLuu=GWNV_A2@w))KK|(tFc<_1su3XoT(Gvkt<-8kZAamN2?($udE5;T?%#b? zgPR>t+W4W{kUyuhBABjCNnywY2N2{Y&;j76oSWqh5v{T6{F5>MZ{nIfkIHJloyV}^ zLU{;*vNhL3ahEpmuHXF&q%{9?fhPcQ^ppO=PD;z~i>hvNp`ON$K3j6D#7$1{jF!7b zY#u**&XMKpM98ETqB|{;Hfk6D5nB(TG#I5&U6#e^HtXVQ9(#`!fB2+2wjl|tkU=zTSK7{_Su9nCw^seyU z{$E)xe_qN3gpgbQ_JP`Is?z;y!BNHWl1ILJn{5Xo4;hFT>`8$n8>;C*a|RsCZg&?0 z7aZP82rhYcjaLtb*H)w>bE+UdLtr{d+ji?J5|Q9P+n%#H)mZo}tgM7>^>4CAm8y8| zGpL1()*pEF8R};#@CzgbzOxjHf!LQ0Yf0=E2#IpL;yiE*3VSf3{<<<@_I)^}ESw>j zZ@Mn9%96SCVO^^Gx&7PMyfH<`?sPY!Fa3bwuuQ(t3rSBvZfqIR_MLh5jn8R}b=Gbw zDJUiSMZFtqzj=c9cCTp$kMMG~$a!iH zoJpJ{AdU<%aVPG9esW*lkfHDT0UaM8a9yv--L)#t^HW^mPXT*%srUPMp~7?~ zcB#D3_70DjQBq9aIZppMgnn19{NF!jnlcxJOum25J3Nu7mHZE)!9)R3Lv+M?Oy71Q zlwyQ&YiAI~)l>oB3^kqx8QparQwx>b(-=EWOneB1cM8Zn4OQ3L=f=$lfj=ZOgDkTa z2u-%2T*S8xUm%F2A|K`V#0k_X{*--@d~~`Z2^0@01Ly;=2PK7HqKf$V0EI*f!QKlC z8O3PrcV8+3bj>{-*Q5?BZ~>i@;HU1=SBB_)8UB- zChkP&vg2$ogfC_8|D;EJk~BLy+;E17|HyQ8 zi-zrmhwrJ;bEiu~9@7DfSIHcHtvX7hw`$VWZ3Rz^3~(G=U*92MzwaldX2rpcZb#d% zT9wv;3)3$i{rLE?ts-mvsQHV!(jw^>Ku_i>IN>%Jutsom2t#>DF%(ui|>4EnL%D!Dq377;J4DwlBNq7RtGbw6l zfEIqQyg3WGfM-}NdvDWUw#N<)!Ui_{c)BUWo*UjzfqjuR9gSLXoG%T5p+Jz5w88LJ z;m@);xAC+w6Y^eJqX!*?>9L0ExDxz?ulmfPnZhTIo#UgvUH||}7R)V5A=>By&E*iSvUpdT2 zUoF(#JAuL4Uk&Kwm4gnL-w*4gjIr(+DrxV8>B4b=t+j-xl8)ni>R|LRu&*p(E<2T= z(xmsyH*w~L{BM6XsZZ)MeCNS{Yt~YHDudp{!8}qH$D%W{2dHFIhLHOFV{2mN>@WHD zUN#p@5If}md*lK_lhUqMy3TWtV^VH9l(3V)@bzz&*^8<-X~Pka5Eb46-#z~X+{pz5PXy6u7Ppi zB5n>FEozy{nXTRfQ%J$0iRpcb6rziM*qarV_dHPX|40l$Me1i*oipCC?h+M05#x`hp zS|S><72xG(C;d($cT8$_o*tAkjLca-`s-ifxsOcs@NCybxdTU4KyI?3L+`VeT$(Ml z+(t&IXm!)CqVq`QDl|#CQ%lc4g7*7q)+y(dNQKsoCkxey5uUw`rZ@~H5az(eS&0#q zmC1FP3tcn+1NF^$y51!>-c|i<>lW|%M?f3b`&4{=X48j9W@W}6M~>g&m3x8#!)KwG z1Hq{7B89f^c?M~t3khREtG9u?s(QB~!)&b*37S6JUj@gX|rsaVH zf))FhSFWC1CqlE56VJowUk@Z$(qHNlW$}UHb_d1FrUi6%!hYb?8$rzYU4?w8WT$8b zF8VnR8tN^cWNm?$A9YtGu!8y0w|Fa~|2yxPd&1AYl_uJ$0q1O^#BEjIp+sLLIoBWD zn>*iWMcp)TyQ;nBqMOH(7%0rhuz)wG`uo@09Uo)uEqL~X+Ho~SYX~7K0$DZY(}eix z)cQc)D1=%3%@83y9lFb)rubi)hku%px~;^Zcus!l6ULl>(|^?zL8(=#*<|RP-}J}R zcjaC&s8#g~Ru%)Xrm)z;pH&MDA4-g*67CO*X9&mufiH^N=QqMzdX(*%v{7!*_hbW- zcHO;kPr=EBq8-vL)N3GHyvkddK2pWBkHDV{gPkHg-mvR|(>2Yg=L}V617qZ>N~p%PMUAxJok0tzMDz$n#A$CT3C_A6#HiW%i|l#2 zGqlVpnP}sgV`q-j{Z540BTqisR?uP=ky@tOTTbzTH?zsgVg+7PKuPMrq%@bca3t*6 zTAzLbe`zlD^1E7ElhBr!9H0aUvwSho^}BLx`XWEa)*}fmjtSyfCtMtwyFy8Mu@tjk z&uB?)w}i?!f(6F^k>8?fP4H)H9`-8OtxvpEC-k( zl{X?KL~VUsQ7cSBE7~H57n5%{le~a&736#+f zd0_g!jgTHvAPG3GS=wTI@)6iUR_4zwqk*cI@i8sG59t6#0%mvLt~|KOa_#GRrLy<( zc7J;%14oG(exW^Dkm&2hvUL5LdB$T(Jeh%!UK%7^qX|{ z-ngrUALU}dwCidu;iT3nHV72PXj75czk5OuuyYPXCtSp&Bml0d!X4j%=@SRPwW7IN0TQ!5T8P-s z+h}C^zFp~gFDQ@}h7@Ppx$8Gj28s`QS^n=APf!>Q3-wI>pPG5S>|c%BM~SpHF5j&N zQ$9Q0M2b0h^e6KmNc6N=u4`}*S)#J)@+xAQ-vL% zW(Vid6aRC(SYl0e*n^nEW|vx_SO?A==cBkE%@fzRFsJrXN!T_Qzg8vN zm+|hU)&Ee%YM3$_1drajB$DYrZO|KDvjs}Kbp~n9huh7&*mfhf0RA*L`zZl`W1{~( z{gFsBN$K-Ce&m5%PI>)~m|ejpP1v)!iI91eNCFwKx6T`REo7ER56mQNYUA z1=)I&5MuQJA(X#c0MK$v88d#Gy-^8X{6$?kJGmX+2;#Zs0#XFapx-t>AG(%DiQZHq z_Z{8Rjcfj(@La0&Pg@}P_OAmAxKC>s+ux@#v1#!8|DF#qNOJ=ld@G9whvnE_akyYQ zjJZNN8SuJV^TQTzl}p|JhvW8|>&?EhYK=i8z)&7skZ}6w%IFpfwxr*cePewUs&RUr@u$}FbG+MMT^cO= zx((z?$9{Z?8V%fL$Z0MniV*r*D=ldDZX*-7nNkG(`L3y=viAqe%YE2pn_014WeGkvQ7tS|TcfF(_g zBx#sh*_qrYARA|$>D&(Dqb9>!nhZx9nj9u#t6G8NJ>Cv7JZRoc@r8m2EXKDZ_(T5j z)J+s`@153Uld+|}hm)fu7COCjKz(sZA2-koEEm`zMCC_?!&A|?QxadU!ajyP7ISC5 z==YqG6k76nrWrTc$nYtvQ68B@wU5{^-8uRt-1a^t-&p1j&Zm@er)?SPgf+&L>GVCw zmQJibsTOcv+w|Mp4Vyx994vPrOoH%ZrbJ&i=HlvdcN;ULpqOyo-nBM!=YadV$TkN! zo6`#1)#NDEMO=m4^Pbd?-;N9(`R?7WiYXO36TxOzD8>*C$;|En#7f(Sb=OZ)Z;Ro3YmLzYHrSGEs1m~Mp zW{898ryoTwx!LbCMy)tf`oZQBcY?YK%TQor^E=s^eTWB0+@#WV;Ujl!!{p~Xs?$T!Z@B9+jZZ;w-;_32vukNXe&25Sh6kJ)sI zQ&!aSJnJ+ddN#YXlMOg$Lz9pGadkbhh1gnPuILVlD9l^ zzVnY>U&OZ*wl`0#!)jL%$~pOoHFc%D|2ibeic1r(ai%vdPt^JlC%~_}hUQ)=-BMi2 z#99THKJx?h+m);56*|7XifthqI_pO~n1*ZY8e5RoNbyNxF(L5q@?petk0Dq&TQ)T# zB5jL?-GVljMSNn_G$^l*U*@a)sc$v=IIWf>Ze~-)cjIhANq^Sy**4kdP&en-n-`;^ z?!7o0D+9UATal=mCN_!maCp8k4xLCoCZD?c&bFV6W#dfhQF(oWrF%e;WbbwQGiY6C zjJ4)A#NPP5#npK|D^#?a)!peW;v=o5V&s$ROpDa7F@^d2eUb!?nCx@!#}Y4(-067f z*>SBLe@a}so>_8cr~Ye;;O9#@GUpKwocU zf7Q2iGP^2hKWZbRd}OSbh9C_f(#b>Brh-D16$=@A@pFbvkG4Kt_DT1LOu4 z{{CT<=GN?*Pe$;ik94Wjh|Kj*g-uuD zqH(f4oIh4mx?!xOGXXdK<+o?W9F77lZuN4~&L|9o{vS_I9SHaT_sTXlj4{n7rkSq8 z{C)3x$E*88D+3Fy?SiCv0g~z=x}AFa z&4pO;tER(P#2tO!;HA>_;G;7jOz!dMqgjacs@Oty|N`pkBrD& zD1@ePvq)D`PIaCWVNOSz!G8&PhSlgaS{%%PT`_wqlHI|2hyaGKMlud98_em1Cr@OBd6Jvo^IniUYjHa_62HSglEHxIqlDZ@{~CxS?3&B zSA6sylY7L{c{>*pcI&UOgCc~P3RJ%cc<3s=Db`$jRuWpps^XV3I1z^2=4KuONA_v5%w~p7D@k= zwxO%uU`g#eX+L_^U3#o>ruo5opi?%?c+L-4j_``~=u+L?{_y`P-cYas+bnxlzPKhG7{=4&`^y=d z!Y`7wY#vFH|27+N4eMs|A=rm#HNRV-#P(^ZkL=cleUPTBpML?ITnc?@ppEMd^Z+hT z>1p8)U{8$*@qU8HFOBOd(75)I&?8cer68UjN@)fkCrM$E*t!|%6!B|#vo9`Rerf-e z8m3c^aWSG`Ni`*QjYa=FszUV1yEz!R5!LW7ueCqCGU;iDEX_ddLf?&u`i*nX{`Q+P z2%;u!!wg>YR4XYAlHHUuU7`zuId9f{yWWpPDG9HRi-iVnejCDf7N%Q3JUm|gw%5N! z3@X1g?A~dY5&-cyp9Ri$zhRq6=$Jl^H{MY_ej_W1U)0f4UJ8=!`65*kB%T=6bN2Ho z!y(9$r0fqyh?$s3I384TDZ7Z?pn0AKp@K`Hi=hr*-g0DVnwBxL#czNMPfB$TO~Msd z^|VnKw|HK?Q+|2>G;Q4O4W5}LH?>!EgE5m>t+sq69;}mZE8kG4uOh1-CzY?W)M{Au z-8(j5fh^7Bh*#a?%$yFB-7t*A6E{n@L!qx3A}M?mTqG^O3ZC4<)Ubzu_*$Mwq@V60 z8e$V<%p7`K$*?SpUr{;H!8CrIPI}KlBbAWtOXYd7@|d>T*^`$kQ`f^$pI@i4CJgXj zV(9eb_8uWZx2h=xYm7kf%|Sha0$5lNqT)!U`* zW3gh}CB8FTl%61Bj`H7RzOoS%DRSqN#4R(X@t*2P){!QAwg6I%b>Wki$xO777&{W> z2j#!@Qfzb$m_X`ONN7dq*({Zi>GOA7@p#`KJQ2bO@YaZ+>hIWC&EUI5_=U-JvlU>R zBPko=d{6G>w?+g{NT_Q9emqL$>**E z`)%%#8^79kdCzSgl(IP!Ezg2*l^@@P7=4%8xx9iEyiaKB1RuJ^BrK?WwQWx#8yZZc z(SGf-maoC*rZ40K;u1u^5`60{v!P%m+qMQivaxUo*JsVTqjKoHxE9Dr*KI~TYWUbU ztEXsp$vI&%MvbuhSbF+Ia&FefRolWoo89(zaNNAw^4CLc$<||p?oY{BQ($zDCJD*? zCA6~#s@9L3U=^@&9Xd+vIEt=)6Tql?Z;#&@33?P5`OS(a%%-Lq06Ypgb~819ojO@~ zrZ0pivp%t|mbLk3J2EyymuSFFE)#3Rw?ds;T)bz~kj609nJ(im?Nqzxh*i>BJ9}J6iWk>3m4=rYlQQHAWL)1CgF2NxOgPud0}fT zBy^0wAl=9V;l^s?%p4$G6+#%;#^yF;A)puIUp3^PJwSrF`tXZBB49Ed%kLhy9y?dQ z)2<&-Tt2yOwgfFI@7VCekxl6p!haILQc8WeWc{lpW)^0lGQNhXnFLMJOO9y?ZYNkJ&lLgOGf>9g>>)O_gc8-@_Gm< z`}R^GJ7TN{U_>FV-`dYf&8CNZ`xamSBPX1JV^Tzs?ISnizEr|!!Y+3o@otS zR8AJ-w6E{qJi@>EDE{xg3tiR_==9wm#C;zDH6qLV^M60ZEH6&3l4gc`-2TNvn=bqXH;MlW0JPOMCE7gdm;iF zr}EEJZBq9b1aMxbAH6$JALHwJ2H@{e%$;>ZBYWwastu9&K9$*y4W;EMcFdE{p;VZb zJUP?LPKeXK!6(8h>R$nC(ocL@*)!cmJvp@eRr#_$-s|Z{F&;jYzX~+;zlx-_z2h@x z?g&`8?%)t-rLV>N--76qFzQ=eB@8O(sJ^&`Vn&yp9qr7cr#ZjWU-2QVH=vMx6TYK0 zcch#Q$C?lCH)vxS4`?vb3GT9N8A9+8dJphqolOq*qt8Pc<3TT)uR(&D zhWvGftQQEm({yaTGSsWij;mp}WcTbq$}rqx42dvnsFdDp&K;o>0N6&4zRGlCs#$MY zf0^Q5l~_aXG$oO#i}U1OZoL3Xl>K=o@kMNVeflt<8>k{yaCQ8>|Kd1^zu!V^XLAbB zaKFL60Vn+FV(eoiJ2sG2x+j3gbax$i^WK<~DIB581Yp8umLLqLwRHk~3aenVdI^Ma z@hD~hIX?GtwY7-5e9`vVfeevcBJZad(Q;9QSVus+`b~X)GLh&Mp@fAY)8JMQsNKTh z3t|WU|6d`qL2{#v)oOv}BdGe?URZ^RKnwmjSUFjFOCIYUR(zeCBtdjPmd}j7u1S3K z(q-R$2LrjJ*RiUfe$FnTdte>u_bUb)v$$r>n`WtFEVyeG>7+)6GdsfSYdQUK2vPT_ zCsFu1u!8~DB3-qzR`=Vdt_cbM$@Lpyd?oyQu6We5@s0O#ctA31{m*EN--Umib3{bX5m@J1?`Zpj zYcJp&;vwN~&*JpLe{2>aoN)3vx%1$GE}n?8-UmFA4~d5q&G?&&UM@LFxO;Tp!^P}wyZ(1qA57lNkHlq6 z0WCZMjqItPIt09pF89cXlOop?aSa~cI~23W7=qqp>iV{{*e>BBj2I`A=J!mfV#op; zBDab_&AP>E%C_(4PmgE%&rQ)yw!dK2lTMGU9aGN+VtEmv%m);FKzC@BY z(ypHm{Er49JFKKd@cxIWK0t|IR!>mQ{C$)3_>(WjuL&{m)k6OTwo6$5$9UEZ9%$75 z-@B-ZXH3wIq;z33sv-Z5yk0&2A7m|-IjS54KCgxaQktT#qm%j@@kZ-Ek4D@Q0TK8n z2|aB9DHm63&MDEbKDg(4$Joj)kJYI3vOfqBh5oTdaRgaCPjN0}_%i81ECMDUac8<4 zN{~}5xGqv$u$Fz;hZUE>zT4cVwCi#I0;K|RmupdP%A<3LL>4{zC{FkT*z)}~W(a{~ zL9++ZmSH@SQL2>39eZ>Kma^9O2WgnSa&|5MGKlc&HR+n%YuABUhyCH)yozkfdzSc- zwifw(emNh00waT9;2#LjaC;uUH|l3QCn8;#Q=I;TNGa=rKMx+;jQiy9joOVuKb$%f zK$XsAl6*Tbh}$L;)~l@5K8EMa+CEVCU^!&>SEJ5K=u0w5d1a-xv+KIU)Ko#|mlHGb zQ_ui$VfEwtJaFsrkDN8Oev$*3Z~5TXY~?GBfy(!$L^bdAjsH=trCiYO2cNh(0=RI z$4A0h6xA{1NgiH4d5j-yUfl`;qQL2yztVB%HD2CE?oY;RJhH}!_5~e0(D-{xaB$9M z8!aA)xA7oz_GJ`@-Uvg`ZWplZfQ1INJ822wg_nZTfOT#+f92@tt^F^G(s>2fq-$h@ zD0uA8cM`@bxDD|CWWRYpOwAe__d(1RV8V{<-*|6b6Li;w@8%h~TPpM7?by?x{?){O zxZvC|Bj{k1mo7ScW2E(YEf9S^HR+ip=dqHNh#RXAQk)K-)Yd8)KnSNrQ#g(&73Yd0 zx9q@y`C5@k6Evnu+`w<|OF2G!q7+YqvPw9jBH)E4eaX-yoBBl*07hAy@hX8fDB7I- zAFp>-<8?yyT@@?e`5xf-3V>q@(b-{AKLMi*if|V+gqgBCWC~}!qL4J+h+OI3c_RK) z1{EdXB#+8ne;ew)8<+-XWKZtqld%8L6y%7cNj4IaUNFtz37BepwWNOt>8u0SbW}f> zC_fv}bMEFb;~}-U_1aM^5D8lO5@%!8w}H;Q$C**E0$3DGJp|_OyPJ=5)NYZ+s=pjV z+CEyjP&?o9Kif;YN>01I_TVbtak0MGrO79tSVit( zF@F(O$ax@lT!7q>6Yw&O^T9UkEHj+z8L-S`t3!4dZ8C){R?a!+7nUX(hl^`@^Dd?LiIC#8n%qFGqjGE));_>y} zo#s`FiDgp0XCl_;jSH>iPp4QN2vawWuBS2Xd98=L-^Lka`)@x3_cM8RVoDP^ftGNDyB);n(2V(9P$2viwO(cW29Y2d^ZLN#RH_Tgo&Wh=mH; zD873Mp{!X%<+k+SdJu451J~GUB}S}|e@DFKx#Km){t|ujKG4VN0O^%^@Wg@rblRO3 zQ79RLEWi2ySFAqA=`0)6oDDvojWdI=L7T9sX z#nY52caz$cx`t!7e9d0rS4dW79At|9vJ?XY>vITq=QGf|@*!xJ%o+yeO)V`<$yCm^ zS%dyqocm^zv7Aoo+u z(RT|AFDsXf=#|>ge=;=gG!^!I12+LEs(VKO|wExE@5G@GtuXno7od*hGWa!9CMKJy=t>{dV+wmL024;43Gd?=D0y zV_xhcWH!gbQPNssMZC%t&eyp!Xfbv3jQuO0N<-#s(xBL}Ql>k+fSF$$U*4_2B2i*q zpp-&I6~1*brOd#@HF&u5>8n5Ivv z>bpInm;??!cz#0VKhMH`HkZ~xfv=KKYk9L)8tgV1B$`z4h4omxMRoJ>XFPzNX7PWo zzhIwHW zvxu=R3%j>}k#P+qvDyt%H&}@9UHeH2pm6`s7G96xRi=`nJX!7vnVD9je3y-BVW`;L zyp&buMSGfHI##2`&00y|8?7qfV$8sQXgCi!I}Kf1101&pp%c%|BH>*Tg41%m-il=7 z)VKejS9%FLR@eErtc^gwHPt8}^n}9234g5`%7?$Yd$Y zs0QR1V1m^qjF6O$K>o>NV|5L&XIAyw%8Tg|?&ydWiEpa#(DHtlAf&i?d(*w0kTqZ6 zwf1uuV8U9C`J@hM*bxgPio~G7gUnOuSHO_p|S*wDJ?rZXCYbj&lYt62A2ycO+ z+|#ZuOz|mWU+!(%b;Rnla$Cq0r3dAzf5jD8Jp?XyG(Zs3AaMh$=b`!m)DFkIpeen6 z1*OzBI`fzQ_ht=;_Vg}z65GGtlbASOx)6iIjGFIz&UU^>L%|zI&1OYg}rqH zk}%|_nph-8qbQ4W@Xunj_`_!2?m^2QB+rG1@7z=A%%1^~k@*Z~_JxQp2^cyLHD50@ z0J}+&h|z$5?1;Lk>2J=(Kh6Za*9|&1MfphgH z!>sp{Mfs?G_bG|Zh381|>2XBk@+Ug~K^pTF zdp#c5zCw_R(xt35z-=XC?*UH&mic4+3}r=tXVMSoi@B+KiEC{|jP=%~gK zazU@!$A!ako$W4&)Dr+Q<{=AIZ1nH8 z6h1C|?-)A>?5g#8((|-ZO5+6>>g9+dl>oCuNB5@l2DE zG{csj@e4dxKxP&ogt>-`8DZqJaBhjM@OKce$%y(eQN`NNg&4kj^S~1<#}XkjlWhk@ zD^xT0_yQ~yeH}Xux==mm^8~7EXa&qbed7ZXFaJ(um@2D}lfpHVYoCdXL$ThvQmi>2 z5TQ~647;)&`>1w6mYYZO(H6P~D~G;vaj&v|T_n2cp#%&&veF1ns$u&b#|8v?z>*Qx z%M@s#lirmh)I6i0jiFjBicR=b0ZyJz-xYT|WxhnLnkk>|2IZe?J%FFh=u2$!u2#q{ zd(Ps`k7+^U2@4csOO)Qw+3gzNNww16{Ng}ad3LP~;7=@imO^;$u7K36kD1s65$qX# zx6Q4OZlQ!FisQ*o!pd&~=%)xsV&&aqY(LyS+w`cID6rH6~}I+ietsrdc?nG7Vo4#6H?jl*i9Q%3*Rej z;m@%g!XVShe1GX2tN;oug^d4kOHs42U&yN0(O6nijvRd|SodttWa9n#%i+^YGcl#{ zqFX5r=2ero);-PuHfccQ=S9aw{yAGdBiD)$%~g!W7OLX1b(tJ&wPM{3);* zY?6Zw!4}H95`nt3A8U6VnHvlRBG%{F@{ToAC!}l`#CnuzsAptdKEe1Xi}hK@+95F< z+d>WHZM-iLZ@FtcQ?Zy-N`NogxcYQz#IHovx(0_yqE6RV=le*ngB+yR*|Nv8%1$7| z-LjhB5E=~AuK=b`W%Tsswa)}?WvWEJi9lXjb|k2)dCB5c33fueP zo(YRi!ShGOd)nLG>dM8bqC4>}d}fXq0sUW_fEcU?J@>-T4^dVdxCu18t52xcHZog6 z1Rx@^Bp7ZMqfs@1#gN`nScj`npt$YDa|FHfd<;m{U{FFXzbGbnHtTO$rfP*G&{-0Gt6|0W7 zISI0j=R!Y}SNDGa8sd)KqQ~N+Z9YR$&9HvI{^N9eSE)&Er=R7|&>i!ak)}Paxt;Q= z=tFk?+<3`q72T7^C*6x%ft8(s&FqWW*@VH<_Q4p>>BVcdW+&9hf&#{$Q`OvW2S#C+ zE0&OUknalwDu_liY)1L?e=K_yPx5i+vm0iWA}if|c~)Q6EaXE?w{XE9KcB+Er!zc= z;0x%Q5fW?v@g^lL-{$T|jM};yMOD0v*}|9VD{35U>z}S@SX$x%;;=N6Lm)1u#gRIA zZVc&PXl;&n|3We~WgfEfQ)E7~xW7DN(Q3V!^X$b5vRr(heL(TMAvQ2}pa&~;L(`@DIloXDS1BG-Q8bSyj1rocSD1nJsjbA7`i?J{G23o$&IIC15BE#7nVcy` zx=Xx}s+t)RGU%CI%#@M_ERNksn(bY+Ntie$e;WdU0faA0WUsNAHGwKfz!aWEUyP&d zAX;8(Y;&R5!8ozO=XSC}=;Is2{ry)9J=2zO}?37d4^vsfwU12kqtyolF_0nJJ3 z{a=>G;SoAd^6ksodsP!QXlHTFx8W4*|47@A6?jvOzYx#b?QGXuMfB!WmcQX_-`kiGOi z$7EJ0df}O^y8l{Q`gg?_vk{Z0qN$R`+i+t^0&WCH`>m<5ypNHR*rTXGbu5<`lOQeP zm7jTKQ79c?1h87LwWRvPYw;AkdL!JnUpEKm-Gt?k^*?`KUEj7=&ua?sFT~N`)Ee_) zJMpEH7typZ-y+Y{iz@9e3K;oz$>Fow8L;b3%oz?-^oEUZEeOqr!0bDnh`)Z0IlmW0 zM@iLXPu*Xb8&q3BI(@$b#gS@XTiH5O`~Zdp`e-sx;{60k9Nx^M6r8G@VTm|iC2mW$ zFoVssJ@n;8fLdF`ZWIj0-Gs^n*>7h9t%T3rB0v6pUw`8>UUyR~Ts#7Qdt-a?5eRr8 zR^swUh-bgDMYa=&~+>%)@i|4KJ0G`OMVH2%+My?w3;fYQ2sI;j61S(@GF#nE9m=g)eF+52$F~ z#+eRj=$~}89Dt;e|66KB5l?p+ei#g%Svpc28=OMH+gD2B*$px-fCoL*vI82n5arCj z2hT_&g(;ARG-cyL-p4KakY6rX&-h%ra)H^Pg&_T>!kT3FSZj%evbdUu;0B! z5f;yp8(Z!BuvL>KarErpvEPoP{uH!6v`XP?+Fy##IX<$SLXM}>tsdTqX5uHOwu8n| zNR-kTKDW`Qnu=q(@30AV)ik&~gMQfByh7uCU~;zvIj$6|F8vrLbX#Br*fu^)i~ytNqr4v0 z9h|HwN`wb9S;MPcpJ|aK2_i!|WH)9?*41A#-iYygJRED&h4oWMUz-PoFs<2wHwKExp2{4T)|k4tY}XKTCR)FlwE9RDy;@AI#)CBAnQcF9D1wYFM!!NG}eVh`S04>NhVf#Q}Jx!T7Nmhun%u`dhXgB$oG z<}{o%QGo9>G>^gtI9RJ6Uj3GWBbvTnWW6ej((rBDYx~btu2=RAt3l2=2^{l@Du8={ zkd*eA4v}IxvrD>0lGo!3?*yIb|~!BK;EPuon8FC}F;S zyy5wFr8TQSr5U;EL-CucHZVFAvs-^*CXwDhMwW`wthGLeDkSph?^*77S+9xv{FdLE zNV6_$IH+p0^SXnM%w4dMR9?H^-9-kPj8cw>Py({)mw*N-{G{~d>C(TC!~J84yx}lg zZ_8ltIqG+w`-m8jBU7xC$XsDmdY8^r7(lsma5xS@>mJi1h}rw^l)l_Uc6_3{T{jGT z1+o~&Kkn?0#2Gt(PTisGK14$4tQlnZhc+*I8Ay|)d)Pu9Pgz@wlsSLKu0*{#)N=m# z>>;2{XZ>zkSD1kz*a<70Et&yScA}F;2*#DW=_>|U-w4pC&eQSLNM>%}tYW4!F(}CU zZ|qbeg`eAotaQ$-EFz{RAy%{2V2FJru+Mn!(#ZMp!oV+@V+^0cA--+H#lFOm!>r+fTyc;yJo$Cs<3(zpfPwig=f=nZK< z8XwyLJqXIy_IyNEl}yn zLYW6R{*yTlgtq6w-#|jNVYY>-n-5G6ObnvC!w7EBA=69z$Nw#?j>R$BZyjlQ+R&Bm zKTr)ISDKvMq>{3CgGv3^u13dv!jO>klvc~_9^|ho-wP}cnal%TVa?RM?}0*RAv&AE ztW;QaDE$Bb(u1r+X-qedk~n|MKg9S0AKY?_?FEUkt`++8*ZYP41Lz&vHGBBx6{U2W zMbzC#;)$XdI2i^?XTxdg(SIl17CFm+1LSdd;pyfw1Y&Si$PW1jtP0@xJ7h) zj9qz|!ijYWbfW+FvrhpIwmG;_2@=5-vKZjy){Y0H`r0*50oWv))>J9YX&Omoohj^?319LxV~RL z{ke6R^Y=~v04O*j(PXJlZkxXaButR{D#?oW(PI!Y-e^--kuvea#(o0*` ziPkv}^`Crqy~MRpz1_iM%H$222-kdvNO@xv%Wb;3X>8$ddU&fD$tJCbjxwx68kP^1 zEPl=R7p?|j82Fp-1#cnrw)Yx&ZKIdBc46n<KgB-czj@Zb%c;%ZNJwQv>+kj&^s(#cC9a@Nx6PXqRKcIZvXUfnd8jGG=? z8ubCQK1&P5{k*)o@6^I<4FTW>rB(#0RoTX@VUjyrFACmU2L?Hurlx$V zgnlqHWEmC73erzhiYchLH@2=D%eFgh^3Uugvt-JSO#XTSUTcsm?1-I7?f1X_>e)hM z1T5so6@Ucc*%huCAI!?ScV2j)!<|HD=~7v1y1wD>cXcmP?rO$XI%i$P%u{Izm+ew$ zPMc+j>CII2WDqtvE+VJpOL zX(LB2cT_G@-yT|%QYEW8J^7eS4CNeMxt#z|Q7QZKZv(jY;nxuyqju^~dVV)#hoc_n zT?`GHT0U3kBRFtZcvroFEN4^IzQBtpK#HXEh!H&3c@@@>jpXzPDw5qe`~p2jtkgHU zWWfOuSm0@SOD5($>ot&#f3E^_zkw|cQ)Gh)me*H1lz%^SqA>|P z$~_PL*j0Lt7;OQR3YsRi*&jP*MG#>YJX6$u+w8!XdZxjK*%_u(SrL3@jvT0^OpkZN;-Hp$7Pfgg;03v818_yopzerFLm( z^nI2+bxY%6DgWQwlO9ecDh|=F3>CLtvRSwYSO}H&1O7$P0{RlS-LD08)K?V|QX7&3 zK`Z!J0~{RfMcnZwWt8d-KM~5^J*H8ii@B(hsO>EJC}^;%MxGM6Kl=QSTO|AS#IQd~ zkG>WJuD~UPC~b$U@sUl+mX4gjI*BqF`p%`_^pewwj+Bi8O) zp@ziWLZqQ&LqZt1gUOHFP*ltE|ECl3_uT5aBSUb^CO9E=Trvc00Xp# zP5F$??RuKjV5T!WD~grEljE9iI@mbn$LnKXkx}8Hkz9+e<0B>;vs6GFB&()OO@hMN zK9D^PbD(I+9AhsY0Sj&J22S>e`=cz(WwHz-%7GJRtAMrlef0V>lDjUJ9N%@h9m zmb1~0Y^Jz=$q1(B$?5hc2rj}?Z}2nJ*mDW2UJu?nze=ylH|RO@Y4rGax+yxGN`LgR zXp(EVA)M}@=e~r|`niaV5q^Am86k)fZ;id|6tbOjX@&b4!zRBXX&U$5$iLgKF}I1V zTSNWe24OOfMDd%io8;4b%U4eb6!&UOQu8h~JO)liOud=lL`T^u2J2sBNDM+1H$8om z4eRFZ>{a=K(x{x#`68sOA@>Y3@R*pNylet8oy}0AKnaX-IvKDy&}-W@Iq=3{^&nj^ znP3TQy>Bal$Q;gDd@BL#pIB#?a?;`zqgGSc0t9HJk1Xs9R>es@k6X7zyZ1D>GMbb! zpS&a>_BV9x{=WS^YA-@|xb55TleqMpCS+YjzjugR!jpzr6_FEUXYTm+#Uw8@4tIK7 za>B#iT|VnZDZLR(v3ju;0@#EAr*gIGe#^pSwT9jafkB@bv;qsxfz)&O5yX`TCn)U^ zVPcU#^Sy~YFn5e!f)@}t2sw`bP(w;TN4Y#@ADObp*d(HKbO!Clig$`V+3^MtiQcnO zafHNSOeF~O^-eal8JA$TC+3|5@&S$qiBQ!l4%3Rc=L=-FQHZb)VralcmfQz&h{o(Y zJay*l#`^evHdZTpV5A(EtpEI;OoYzg`$}}ajZu%^SbaOPC&xk&F|T*IB5*jnJ zZ^`1w2=N)k)A-XK$f(G0=ZC;RbOr#=0(G&G;iZ$I5Ch=(@NZU@goC}!vVSon4{UJ} zRfzzTu85y_a7}SHSz2W10dN349|3Qb(ttL(Co-x{Cn&G+;OIy(@$!?%YAqff7^v|Ton4yGD?DUGW>Y6=-@UpobetEq;CIQO z>m$fiR{qQc+G@a$t#z%LFJNi2q%-!?cfM<6RRE?zSy9phmd|_^ge_I@od0#yUxHo! zP-d!L*wRSPx8aYvZ53RpO>C?wcVC}Va{K|Z|Dc2=bws0l;*WhgpZ&&n@16K-q=PtU zf?v74A`O=O($F0{^{&4D6X@mB3%!t)1ylac7by3}D$b9E(C6)@d{#Gp`(kUu(i`S? zE!CTQRiV&N;nroI8#5#K#P+J$sbrbXdX!&P9Z#clcxlX;U}EqS2wvp-Zy}4G^PG5O z7!k#=Mo}&UQd3y`8PF*x6R(~i1JHG~|K*QtXrjfhRd2V{FZJzv4#YPlrA5Ao0-cX) zDZ=Ne-CxofX;LR>Wnmq?w7l0x@&Wd%$+o|MC~Sx84XnVP@8D)hu491}cp$9&THPAc zZHQF(XE~4(0&8g)PpWd8G3s7HY=+PJ8)#;SZHk!q+YzP(O*2l+okvnb5F1Uzp_-CX z!wcFX)>pC3p zs8%jlA1R^6Ty0Qd#(DHV07ICELn}Ro10Peiy1LcIwYwBO3A^=7dfKjjb_^3=J#qVL zW$K{k-Y8R~9J*mKh5DlE#%s*U!O5^dmsO;E2KVX#skqiXQ>AJx7@*K+ zO&!B>CcWU|^l%$fJq(|c6X(6FH_EcKE z5DLp+#)4r0LLEv?=LaMfO+Dp^+N55!oI$vltPh*`;-P zedc9NWYTGENmvSe_^+@9ZCtn3VUKmR^js-m>!qKw$Arc&o#rC-5Vx*W=kpdk@Egw_ z#KzWB(g*9$cA!nB#G=(DluwPTNGzO{RcAbJtr{v2^KolHT>MFY^*4AUo}MB`Ji79W z){fz&q20Slo}Q+>kP>ubj(rC5H<+H@i~IEZUuUyx6w?4rL@PtRzhB%=@htYy&o^ZI zDbnnW9*$s*KoQ5Yl)vZa5DR!1ukkv_>6)&j2llVDK3JGFiIMLhe$xdpiDko6&zeg3 z&c*=+<}yDOK?*x%b(NZ75z;>jFnWl zSnU26gD-pecaa(7$SLF2w|5Nb`i_nPwKkYpOrYXHsPqlb{&1`ek20*EUth~h^dC=c zT_vbCckJdh(ud9T>?xH^0gq>N=s6F`d2Mm<#b38OIt%lsDU9{eu_^I^x5}Q>LLGfoW#FgLWh> zdt+PivN$ozj^O#cRHq0N9z=EPh9_P(Rz_oZ(@?Ve&=e*`cXbh8%tpMfsy+Bg?#S7{ z(Oe-ZumwJIJvXJE$gCmoU_P8(@-p0d(TjH7n@YT?2ntINGFs;pyxM4|BUi7>%6E>l zY^a$M=8?j4y7$XZH{J(q%3||j5_=d+#-||x(>e#x%J+@oKqvEnZw>^zGJ`Dj7qkvA zHz55soRS|dw)A~Mg(dmLHTZZ|_DxhK-tiY^$~kTbBttx-QCH3l&PB5B1v zK=3g0@)hyR`XkdROv?Rd4E2WoHkCfJ``2Q1N9FX4PvN4jEo~m;2;FWcb9#m4c~_OV z`1AX80zH^H^E|pav7$FDUgc7wIsZo#a_-L2p>lF@&-F{6XSFm403{ib%fLbA@2@xd z-vU|7?q8t8kMumRT^A%)9n#`!>phtq;+~cB#1c7^-ooUj#D@^h4x5b6{&AQ1K*LsMvtnEYrQDng$lJL}`_w`(hP^wLx-OA~oVRB{r-YZR+h;I{sc!4L89!Qg(g=_hs zwXsqp-Eu`(+cURnIP`v^`b!rxBWbIBYeZ4Afoe`15N$94bosyuOH8CcU|fY=3Nl7$ z{}^mk>_s1|_70hnbI{=|ktXY@E6hxr*$b{87jwu)^wHV{q6RNEGBA8647?QB(7AoC zp@keKl*<>dID^@maTg+ZDt_0PL;{xBj|H9Wc4@h8wM1A?>&%Er@4g2$$Q)*EE}d z8Ei>lTJ3I!MQT)e28})rQM=zi+XOW9M{@C#Dq-7toi$yvD9P!dPsmhd6F$xbz+v*V zmW|@HjI10~3d2N*nsPh;-!FnE2e3KOlpu>o))AaNJuiU+#3u@`Wj-I2m=sHQ;t-!` zZr39wFxi>Gw^;S~KQD6HyS@tWNbGgx$8OH&cEn1&{V}lyUQ0AxdtHG|x#LJVQV!5E z@ZPB}N5uGL)^y+BCPh5<+wi_1BkKF6Z-hIlh23U8BG$;Q&VxgRH?D&hkb+R=Tved( zfD+6W-}EMS#b83rng(W>v9d&sa&uSaXpMs;i*|QTM!V$O*Qu)r(zmk@h{F0g;Y#bA zX|@^_#KA&zs7%Civg_Ko=AaSJY+;U9#lvcNspS?q^x|IlC}v??syqozQ>RQbTlLJX zPcEGUS`-=^mmH_KtdyA?t%v_vCM5R>pChD+Ceshm&61Y{NGmo}_t8|Rt}Bd`#O&CL;Xa~%L6tY z5O2KVDy3uEkOc#CT!5 zP~%6zgA*9+ugSi$9J8nJYoX_E;K?6}VU?KmKw-Sh`x|k>hS{FUT1>JpN z8y;;-U`JdPRg4~h0_s@0*&0XA*c`pTU+zR(caR`Lr0LYx9Kl_Tf8MaZrvCS%dpSEpzL&pki5AMdl+bIf9@7}Dh8>D%0l6VcDVb;Ui^ z)Ug|Aa5FZ$kD)Y6pv5`CKbhChY-J61W2#Kr{(^9K205)Ln9+VyncyaPHx1#xr!~=H zbK8u=X0D6z`&+-rwxme8GJB&L8y^aG`^jNsmx<1gP*OfQy@vQd`PV;~;QDq73?<<8 zH{Q;n-`}cvY1u2 zDV|AeUzX>qluMadPRy)P)*Qt*n%{&HLY{1oY5v=hRfMX3-OlW$L*N;=Jf3x#m|t=5 zlVam54)cg6>`GmI$H^1!=oSFYoZ}2m=Teku4ZaaJg69 zHBduMh@~6>-6h?OO>i4E!RuU2a&I!I$J@HxIuk@(G7evu{a6#z z{#QMm*(ClkrMaqL=Ps4U`-qvNYnVWP>M2yW8xAE-=|NGynId?MxTC7UNKYP*_|xKP{ae%Kz;~SK;=vXr`3Z(j-jegkL)6^fY3Bbz`Y^{U#*p>VDLKh)Uta&#YaQDfV-t;XE2 zv8^U)Y}=cpv7Kh)G`8L7-M#;tio41|uq*xoJYXKfLOUhS zTtB@5rhNUH-u{@#%}r#-IX1#6kO9%q$&yf??boQTP`$^Rq&r$}hK7sAyoUQ8@ zLLoxzS?tmHfXQVvaLQO3PLhi{b1;DFJKhtMU@}FNr^M`1#S5N4-N6b&prtAMx>A3%EEYuGHiq>queL<|EuPuliuf z5iI0%>9JyCdbtHn0}9t17$D4Wt4>#>_~ONa z$(r=Oz#G1<1z;6K@O=U$e)M5xghMbvXnvXsl=0uDPMu=KH%J)wOv$UXMxqH`Fr~-Z z%+nxk{5Z)Hm6u_!{jCmI2p;2j)tS4a?Wqp&?Nx*pSVTq;)^+h#FMpCXmU+Ub?^-)F z2$~pt-U04HT!NttAI-{cbHo2YBa6%FQA zk0)g?6F?>x^+o>$Q&M<;WyT)5b!flGR+a)0i}7&4h8ZUzY?mJ$*(bUpmBU* zPgWU(rt}ZsLIk5UY?CQooMPN6)LXDwe`C`K0$1;$qUEATLS5ieLL@J>H8S#sA>KF3 zaQjNvBWsH%Qa=lW8{Yv)`R8Xdid4nhrtZ4n?AJ20kA+^G%P{G?b$VH@c#r7mySq;m z3!NDj-T07NTEzR%_Y_&Kj$JZq(x{hMS!#Zzf0!W$%Uj&*B&%mPqEQcdFEx;%ia=$z z{A+Q!MQoE#Dtjolcu;e3-&%uWmuHQwz6{;84|)36`$|C^(Vs;k($<*@hd zqSC}N$XgQLddr@${8iXz7*)Xc2`hH)!?E}$Ij%`yu1pZs(7W^)yMnME7mIHhpSKjDZ_Yh=>tzdEL z%1=)2k=}&vRw=Mx^{8N;c$>JaHqpO3ybxvwV$B2@vxUm1%d+Eq!=z%FiRjTOtm!~#RyT@&dH%3j2tQ&gu zhpnsUNHmXI+vet0#p`KF^iSJDq&BJ7V8W5695jl=>lb|IrSG+cW(#-V-ry?9z?pS8 zLCdh-c+aFdW_#l=OhG6=>K9G@cH{%Ifvip@rjfu^3BtRyU-3KlAcZyx-wA<8%t z*l`$t^)gJk{QxWrpgW)10)xg9|;;6+TAt7 z3ld+&7L#o(?%W_$O^8|8nEhPPSeO4bOM(Jr%TG|AnfswVFkE5*+P(^bps~NDzZ{dJ z0d;e^vZ8VM8p2jZzeXx<>Y9@|<*!N>t#iIvdH0&x!lcP-m_I6b4p8w-%rJ1=@|2uy zqVBS^)LCLeJWx0vlAq0a(;GT}>y>BM&cKCuwgind-S#vKH^37f|HgPjT)IQ%#ks1t0#=rWZthyUQ|}j4 z_HTsNaA6?6qvrTtUS5)mXZ_D8l2?@YuJ}H0&*1>1hrrE0z3{ra1nC=Kneo6+y0_)K z)M5FL7ecc1K!+I}k8HZzj6)dl5+s}e-l2*X4#F_4@Pk=GsimKI9S%K@avr1s-RwKr zkjb#Me*b3MW$x^`@`GoyB}uno0{)ebG9Ks32XARm8rfMP5wZ8zomN28DXuc~hw~k= z#zFidc0}W;Zr?nf)UkQ-KUqVQH%uP91LHO#zXGEcc95$fR>U6^ad71i-Aj6V9V#Rq zV3)n(=Afl^j_%v;E*L8fjrrQQdBAZ)MvS0=(Ew~92HUNLf}o;18N8Ox?r$rQt_pSn zGr@@YxkS#Cuug`#uFL%QVfaz=AB~4GhX5imo#a>O6XV;nC2( zSPdxGI53j|BY2l$ed0fp@tHxs$^KvzTFC&yEO4CP*QLsO*0BYNzlk#%k--L3)(q#- zd;w-A^f*<-ZFS^`l_qcV|ITP@X=$llg?Jm!RNpxBiMhlcz0^rfpMKdBayc2K#n^k% z&lxE+4mJs}-x5BDM%R|p)igIOdKW?@;u)JjhH`EtgD=1BOr5W+V(xfC`g$CfjnHLD zYcjL%1k&?z@3!{<^__|mS+))!zl}G|;QLNXDGdp;8fJ|=t9b97ve<1=u%$?1@ug<5man!wBjCOX=+tU0 zq>6zB_L)DM0U?tFUVVOIBqV|ry>abf2T#8e~vonS)$0jTpT3r~hdf z1EGKDlvePio_1yQN%M0E0vUwHl695f@A!Hy;Ka?DkjJM-)_5XhWuQ5I@WGHKDMk@4&Rh^vxkHI zBUjo;)0-(#Ah{?wJV^aNh+N|Q%droh8r?6?ZgC3SNf$>z#D;gbxM zy~;$Y&zn0C4R)o_7oiybSp$=qgYGIy{A&*O-`)`c!15P2m&BRTb zha#e?wxsk(A_>tXcT;kKn|ameFk@ zJ|(s@ghTsCA{H&clB_64$n1PU?_Ih`$t6+olll_(r~K;ebLjzRxN|WcE3hSG0nyLi zS{&kFX%6lEu8LF0Oo5hy!qHND<}w1Rtvl}^ah$7=*<9^~@m_>ui?45O7Z|)U&%{aP zhNNM%&;o+hS*n!CY1b)apv~$n-u%PXs?%AZYjetw*R<70qNao-4WPoQ6Jg9&X$P|0FJ$vw*UH3g>H%R*A<5HWs2` zC+Zju7Yzlqf}dLV;YNt4vd6jAD}B|?^e)HV5x9xqY&0zd^wJaNQqJnd_>l@afE95xy^pIL92!CQyK8GoXU#oi66#uApS*6WXTX?ecj#YB@NBoo? zIW_<**yCUaV9#8xC!6#Z1?kVk6yiZxo$vc1O`k~T8z?S3)o9~d!v4|8+fdYu|Hs`_4xs8~RtH=rr3s zLfY34V2zUBm7nCxNtQi0jYh{%s&phz>I-lM9_r+H#N;lX)!Lap4HPm|Q!&_IEd|*e ze_7a6&noyxzFy|{H7`stws`L){ai53s>mq`GSoL{*G{P$T`@c6IB7_ZgPj`*#>p>+ z!-1jKf=8zJIN46}dj4AS6CEKb#_7sg2DW676jJJ_=ksMlHpGLf!=A8medy_Cs&V+@XCpR(>tWS`9H$(325j&rIrEZO8K|R3Sqn?3$5H75vDbZ~Kd-h*nC9|9z z)cs+o(?He)X=$8^x#d?LT)S<4M?0@$3>PA{~I0CSTZ)*j`PF$}mnCGxb~;?P`M zRRH!zol0RFS9#t7m689GouQVqs-macF5Lp;h_t!%$UBR7m=KQ%>5*$*-u=5cvCCtP zb@2<2B*X01e@|4cG>l^Y9(#85kaV17Nq53#s5L0rX))O`@N&tsT1v4i+bONqghPsN zY@KnQUR@1>6uYSBieMbp@vD^?_@rmQ5ENfZPk@&*&l6jSUec3eYjUO(>`vl;SJ-t& z*+097d9g2t5M2q8H+?gcR{Zhr>yNtN8#}KMhBNHqzYthdaESv|b39|U!t>2$4WB>^ zwj8R|jV~vq8IXRjB1|leHqIZ?H!5Vf*C*wrRF~d7f>%#_@HAt_Cov&_et9yrCF1m; zE&t%|$G|h*Loms6ixBu%!(8ILg0$G)YttZp=dPl&h;xs}z!<{G!!YIY7Byb26%y|e z()0En(5!K(dz{^291;&Lun0># z2yRiwZr+K_I*;Aw1gV7i+H{Ye7Wx#FO;Q zL6{I?pa7mHo;0CVm!IVa?z!(uNNx-{87dqWtiWt10Y$PVRe+Wh-wpg!%s+uC4G-%A zaO-_GOTJJ5J^t>vSi0Tk1!pMnuiqwgfW!Wx<%P5M)6;^Q0pVaG0_1DN0N#4G$wS9# z(W>cRz!5iWeD@0m-$<`jaf^3fP(73BOYtdsb%AyD!6MXnb8!N=#%hp#CbF1US zVQTgjNA&zsY3{L2B?UEvkO#fjpo2;ar_g}E5z^kdJSHD3L@tky0aXmc>Gj(0ZlS9u z(IoM-`4r5M)ljKj@b??Ja4_JtaP4B7>0f|R6A{^10E6sWKi)9VbaMz+vBZNYgl6oB z#{tk<+R3yVCK3bJdPJk*1OC^D;6Vxbqs;WZTh~D6J7oA@F#32t1xawVBoIj)OJOH| zWfHZADfW3hU0K@pU`jo|p&>*!m_`}B>y~Kn@*`{Um zfd1=T3wMcaRE}!sGc=kTepb>t0F^ zy^#PBVBBmtl=Ul2b6M9h`~sPwJ6BfVo$FO2+I27K38^at@UxZ5-N!r9 z{>(blM_LY>=?d)-9sz{d?P2}gw7-nGrhZx=jR$1B)m=~{`_w!#SUJG zfeQ{R;Tj~}+%2b<=_ijfOKA;Sl7dvs?(_g5YiO)WMSeYkV-!gp$CD?hC>D` zxV5Kb2rrtW&LUG>k;vtR%23X^h`5rZUoDjj{$N#UA^$EfI>fWb8Mg5ulc0da`}g%` z9>HA;6$|%Yc%<5I>I42P2t4H;39EKab7`p@i-|~JsB2j(HcNS`dE=bIsZF0YZc#Bt zf6@HgX5;4^MT~+6@;ho44>RJ=$o)Nun37 zp};Sp1&ul`n=@~sUH5r|`}KM%cXu$EfMc4Uu!3#wk8u>hKNGbLrCLXfNlsg|FkZBf zMHGXMIG66zK$Iah6(&W6|K;!c64xz>x!JmwV(r!4#Z#jd6QKZ`*!%k!RKYwI&%g1r zSO1WM=GR&fnx&zwDbqYeMrjKwAw?H2*N+-HR2F=SHG_Z7ezdXa*z=IE5V^Wg={~oq z{qtnC9wY>g8$Hs+^WmRJqe1RP`oM8Vs>v?5c)eaPG$~?^tj6IV$B_pTM1Bg*%xU`c ztF3xS0kUOe0{Cn5;{KNh2^iSH{nM*Ruo75#9VY&>24}yri$}>T@5hz~bWKHN@fPsS z(@vBJIqCZB`XUzMd;%kZ!4jh^C)>|bgwMsWRyyR!MrBI(mq_(z6R^tK{50#OWk0ZH zf9&U=B^%e=^5?%$o3>!>$nj^DvvskE@Tu&f$#)xzc01QJ_jprxLxsLSaT6^3GZ!v2 ziJAM)>gi|C4nNevI;_M7JyH#IANt)KuNas#B~KuhQwVZ&|i(t zaM~s5=>KlkQ(iN%+RyK<9QJ}aR@(ib9%XE;^j}f`CB3PomT}AMLfOA0Yr`G%mg=y$ z0WiX!eA9mfva0($W}xpDdWJ|Ah28KJ+NitIF?YRwwd@iIn`O6?7=FI|7bM&_`nLan zpBC?pTBevaghC^f0$LWP@RIW~Xl=3qaC{2W(pqExgv;S|lXKASm%cyCGI;xccq2LQ z9MxQA7<4y&`c)sg+S#=i`tMov(za6KV%{woRN2581DZsoV_1v*ue@xU#WFd0bZRkn zPuM`rCPmpXE}Wljbu9+FkkGQ{lr?KEcYnU5iKyfOY1duX3o$~P$ zCQ_LKgt`$;n6Tl>CEg;Lm>frARAC@?ykSyliMBT|I7*8^5o7C}+ zbGn>-QzxlGcuFN5rvHVqGy7663;0pNa7Y)U)fSVNTc7VZ?9AzLLNVA8>~6`G@AnxS z1~?BibcEG`3u?yg5OyR&Q0Z=*&a$IQIX<=+F;Y#I%>i4#01*beWI|m!kGFV_1Z#6; zj%fVr!sa26yWW=YbB*;kd(u11!7YhhVRDYI(2#lE9sBm}#kKqNm-OF38wQ--K!w(k zL!#^WMaOD=L^;uR7wRtx6sB*V#nl&MI`zRhNwy8l>XS!_su?<6pMZwsWnS##c!&@t zRx4soRjYD-qp$B%YRVHE(N#@X(YMb#O8~}Iq@g;QRO#?t#S3xYNvZru4SpRD1dx=E zS#&)Tqr>3uvYdz0kymoo`1V>603&uu&juWB3-I}M!n+m@3iRF1&(Tcy?=P4)k@YD) z0wiE;;ffb2$6@H%H#&Gi^zz7_nLC1hKs2*dn?XVV_r$0Feb&~~zw@G2*3!HEvUN_X zhMIN}w?PF^`GFjqp~BL+tdYTwRl=OnBbI2rJsYIt|AZ;seUw{|(9wiS=M80pzi*$s z@1BC?mCx6WB8^&82}atd(D@sf&j-}BfL9H^%A@`r2>3P#xfJU+g{xN_0S9O@6t*C_ zi2C10n(LSlrlZF1+|?)hY;a@04l*6Wj_|;sXjm%4?hIh-8G4SUvsOhn zg>JR%?1%teYdE&DdX_8&nq0kz-n%_8-^kL(MEQ@v%=n@`G`wb0Dm@OoVkDP>IwP7# zu!yhWg1}y*rlaTh@S8oZuKl}VamKR92Mh51=Ri@5iP^+!X=b|oIY0H7kI*|+p4H?D zZa^#qTY7kb$#3rIAv+`CkQlIEa|=~XFNF8QjATO3oxcSBn&i)tr$TRQ@7S((y>8$G zR}0nV9QgD9-t(*2ixW6^!N;_?es%Cl`_Fz$kz?6r@u44fx({^Z{w2NpZ7Hf_;ZBeQ zY#2xjE*8f`%N;HHsPVi)Wjt77h5;d8hiu3df%8F#VB?>$4|yV=s`x^&q9IsIeiMQR zd7J_9Cr_sS)$MUQc|)>F@KoIF@UJX}1J~|)Eyag^dR9aLmon5diJ*F2mB#Ah(!N4E z%d_{HIFnzYJN=366nuOoz|Z$FFuL8FD%gP6PI63P3Fkf$Sp(nNv@JXU?n>h6H01n6 z<3|H1a$!1Wd$WO&{mhLhef37pd*nOf_bLd|Ee}yj3`yBrv36@wvH4^uy?3abiQ2|P zo-<~s(#>HUYw{6oz{JDPH_8=NVhHo1>$C(*)cPfI!&}b=vn$i?qlr9<4F5tu$`~Xp z;c?jPE!u@-{(bu@)utaH-sd^5fG?qBx%$tTzG#%-A>7-T6!H!k%l%_tknsb34F?6& zM()h&i;Gn6-LiQk*iotx-p{QeMKaiRMa(S#$zP7Ce@_m!tqTSrw@q0^h|g%*f?_f8ytSZW z=cp}JIL#s;{jzmXy)9k7?gN%XK#64=hU8=ubxFFf?2POrj!Oyqr=D$7khGEvGgi7x ze@`tDo$JmA{7HBd$_rARMZp40}+?XBWQNl`W)M>-A%9a#t^_O|~z zt5yX{3MdVWlwk_3kti{LkbvOd2gxhJ*F&8o&c|ffiCkrkdX${@0e2^Mi=QV*3ly9O z;f4ezM?|AyGD~)o&MZ};yBZy*;pkmn19jJ;;3K~`yczotJmP^rtr;!V-_ffKo-Wnv zJoIyp8lGTkvMpItl@Dh6?w4(i>5pDU5D1#tlO7JX_YlTopC4U<` z7h$d@{2SA~m1vWwi)RRI6J*g!!4;7pLVx2Bu%|&aWK5(cFAkk0;u<_rOtd)&t+9+_ zqZsnkt7m^_#hWOMiJngfj3$*2xcu5Bc}(F^xRVQa{49*uSsTOr>%Z;#@&+*!(`X%+ zuQpMqRp9qw2vrwn%UcBDrvC6c<2)1Oo&Dzxr`$YXr5PkEPKEoo45>Y)$suR7pneZJkMeSxjz&_C#*v*qk$bjDk$+%Q1 z^@0KJ?=M}NtMDrvp~+I^j8`jTYmAH&M-0{TG9{d@58`UAvlh-^L%h)MIIEk<0J<+a zG*Qt7G#zVs=(ClfDmX&M8)xGDloLO1hv&h=B*X}DiY&lH_7YI{D|JXA67HNVj*F=Z zq#9}c{WIoJ0FzBz2O=u_t30Z<4ngSwuHyJNo$-5ZTE^+(y)&8{il>y~Me?H`Qs zzZAUjf5TT{$P~V?+~7GhVX_3*UnAWSOaLfMMovsp(~k53UnavYd27p{ITvvEuFR%S zn%i@cDC~a4q_bx`T4!1D+kA;}Fdr_y4CocP^8xUh%_i#`7 zr@%1TdC5)g+u{y4_P=!YG_lbkj=Net&B1zAVBm<~dTZo&nfLJ`QC(vo*|8uGWHsSa zZh3LBb1-)KYl~!Yttn{MF%}^Bb(3fzSX_Ira9q?|U{TJcrZn~VZnfTo7 zh+^kf1~3?>Q}_0eyV|{-Ze-zA+$XX9)jtv}ql8}H2n@K7$$f8~X3?1)7I2OUCXyU% zp|W;%hEF>HSK+*VY}55ZvL>r>UC+@f6aVHeD7%LPYHHb5Sn<`}`mUwcL}7{R6*qH^ zL0QKymDWm-)2C6dJcX(Az`-X@-C}j7%+wQN@nF_=`;BCcNCi4J0*@`+|Daia7+iD6 zcu`N9SZljw&(cEN5izmPyct%OZX^!cp#fWE(-ipu3%`$e!ZTg60O z2OkLCKL@bQu1C;4*QQ6w`j|BspRFbOb`}y7PCLYnx|`>Hu}4ok=)WF9Hsi?(n&8#c z_g!DOCd+s<9KQ41{9W`sN*Te2QzV#U6KmOz@*MZ^Y$J59y$(28>j+@LtJRCHFC?bI z*jz%vb@M|^j}$~0;R~nTWUMp``PPrrC|McmZHAO~(0k21F9xW@8@&++@a$9aveP$C zs_^vau-Gyp1oybMkoL4vE&f;{yU~4-uk#@^2B0urbTfr@7C0|!q-5Xu@XB>rAryG{ zced$ra)^b?u9#g<6>E^4CI@uk z#RWfn+#R*O=Z3?bgXdD2mJZFdRmbl>PM{gkXA~=&%d{x5W9Jscj~L2h#jVtnj*=RX z@#73@MtaFaH$W_<4nAxzQg5SUli_VlauH3c9-MaTR^UsL4rc6yx(px5ZdekWs@ONu zEu@cZx=BSBd6o5pK7bYL^EQ{j{7TuFdkWPa6F@~; zI)FKTufc0z0qc%XUyFAdzGzBj9oHA|sHTe_v?rsx;p{7pwl>J#1V zdrRY%c5cp!`G?xmoMM09^#G&eZT}OdgPpV!9UWumYdI;0MZCd1V6b8g zepKd7Wm6Q)=)(7YgpXp*qm0it0DV=Rs9QNHo6{-(U4IZ&bCL1#|90{7u8p~v%ZB}x zhW9U?nB~a#6$8cM46tgPw1+I4y9c^jrc*0+PSunM5EU7|X?*H+Z-`e z_H$8J>b{RkJ11_>!b5=A$rsA%-@YjN(R3@E1QED7b#0!y9vV6P=rGBlWuRN5-Vg&{ z=%pDr(+Y2VoIgFxMPD+dm69C*%$(t1$;q9hStLS{{j0F@?6>yys2^q3B%Su61Wa$* z-A9A!IVaLyR-?b*Vwcl&-ZY z2%{9DiSg%AvRRI9l~LeQw?|hZ(kd6JyoYfMHXb4%`n=3Q?UI`=cI5c1k3 zhcMl&07gC%X|(*EdB-@Wh~0+%t>JOPiI2V4eR>;JPh=a>qc>?uE63}Rs;9ZW;ii@F zYhnK)z=?m>BAohG<0yqCs}yZZ=}_Z{_D`ZcJ-dDlUvF{LWbV$BLWrwI6>}o8HSl}$ zP77$Ab>4)D81&tTk#rJ^MWVig_0x9`wWl|I@{2*rJ=92|!Db<8x|hEmTiTfUjn}&3RG@ONNZwJKrb`}O5p9!kPe&leKOuxvpAf^TU!iRQk z6=}mQb}S{rI&g{CiOy%PSg16dnQOLiW)S-m3$5VX>ZV%!!s_pU<$_b&?+%mhL9KAi zUC6qIcqiPaUv1hGOJC>efKF-Yf1cS@p$o&TCW}Gia=-FZ0)^KCN=4)=Cu08s<)}~X zqffr$seZpgl=uc#gaQbjS>rLu6JA!k(bop;8X^{wMxE9SD`Xf62o-h!5*w|KP*q!X z{kE6(Qz!;~*B^BZd)`L9SgYQtCYq8=l`bTYM+0%F%eug&09+Ryd>Qj78ECxA_#}R( zbq@Ywy{nq^+J;}oPg1oLX`?2AM_JjF%OE)en$$4MvTpp6zeVBv4jH2eOX^SrC(9-( z_Uz&5;C#f7+J>#h)9K6Ge|=eP?mY_aiwNs*^r|@&tA$>lvUFDGi4m_)XBgObKF51z z{k~pl1==*)kCG<>9g)jD9?^;x^g{Wqh0^L3WUeOWg!przM-{_wW(GVz;HiTN;-=hT*%+Uk@5A##)8(@oK(J znQ83U-QxBx!%13IKS3bNy+$M6wARL#0TK83_8Gi(({RH`_*$Ntg*qTMljDZDR+2Sg zZg$6z$QV)2$8vk_3_Is{B8n8=M*p}XA} zvL~jw$06W6w%AKmH^Z$f7?1j78NPJJG4Mr*7G~V8_qt;dnb|yI>}o6mC24a;@9}f> zFE?(~2P;xEzXhZ$KpFT~vtPPWFD z4NS%9(w+>>Qql^GxzhQTm;_G)>|>I_*KPQ5LsG?ieGO+UT> z>$~0==6L~T=);%)KuQG7i)%KO{=P&UJk|NA?^;>Cm7~U$ z&&(b7OA|eJ843C3^@@8I>#U{@IK;$a=lk`mK~a*@_qb^F_k2sz`pC4SgtiM5J%e}fRt8;tBWTAx%(M-Y(?Be*JE2YAXVL!=)Bv9&pcVvQX#O(DN0R{7 z<85!y2nJ)f&ZSv8motL=SZKv{T9SEu1X94Y$@Fg?0tUdiX@5QhPkTRkC|j0zSYA>( zUCiKT7C~JMv87X4Z6>pD!>q1+^6X&0fn|l_6edS?$E!(7G(JH-4ZveL(lT2YE zhP|o2cZ!s zXg;uN+zB^3(j5QkDKvRMIT{l_U#C9wrL+dbCa&MkuIq9iC_Q`a^33aMXc?XTsPVJr z9SK{me6mgdR#>wsc6BN1lr8hlTY}TKo%Kc9u7Oo#p_ng^*9tG+3edGJ@Q#GmwbMBN z4O3j;5$U>R;d~~7IHby&=#@TNJG(+|b>-tHKp4@I-PR4GGw6Igr_Q&V(NWvJH?)rN zN=|S`nhrB$TJ_k`Hu%ZFi&gn~1S|@y*iN2-)f6z-r(a*r{2P{{A9$x)mM|KD62pEh zs*T0JpSEc^bBE2Do9+4PvlAJ}_#Kzt@=HP!-)tK&l13c}9hVRN!w&6Q!QC0S=w|DI zIT}ZUy+=ApPQY!p#oZohL?PQF-l$>ukY4{|ide(QJ4*#B=u{$0_ZCXoJa3`$X+6^z zlKF^V0mFuTstr`4i=pJS@J2;5Jho4=BtNclzaDBCp_SDaeq#;4{6`@-HsMbndE7Og z)(MUX;pfW%QZt$GMmMd0j5qegoFlntk*#w{=|cCF9H~qq9k4qfI}gGGJh)N1Qph5& ziMXOV*M3@lvX^`F5JRHt9(oX2P)+0csDp+CBFVKT4NaWyiuodEiOV5?R-GdGdcSkQ z31-J9{FR0A6_=d5I3s(f%>;Ag`aVt>zorG+@z7TJS^b7kcG$AE8z@z~Q->e*z=PwP z71XgN2>gS|b|pWLy2>YDLtSYn#Gl<~uq=Z5!a4b3_=jO+OZ`ic_gKX0fN6kvEQ>9@ zrQu|`)%gzT=!8R!Yz$R)?3<+sePE1F&Lry7 zJyEu{(T-kMl*Xwj!d7&6{XyageVIG$M#zxz9 zO!zEMR{L~}Pj`NOhTyl}Ix&#_ubw8t+-m*doe5=%GA$pb-BcV~#ke|cc@`h%$wYnx zTn;@C_Cr0y-lHv4&wCHax}Vz%y?QR3{6&KC8h@=uwDio^s{_Xp`b9)Lt-YT*Ljbts z6yEWQ$#48`w8w}vtmrwpn;g}S8V1l&be0N>!*VrYR&O@bW;H{`UQ|Jx*K^=ZOxfCqp0~hp1LDSf zBPO10bEY+~bTgzKv+4&XQJ-8^$AzcH2KWVqr)}H-3NUEo9T&T8HtlnT+`- zxHO_PUJ@wMk5*9LZDIL2vlxysd>_e8Ff9XZP#E1e0}U{A5nC;8vTTwVw;elgmdEaU zdsc*<2eJQN)%;HCz;dK=v7pcy#-Zt`? zamZf6+vAiL{sByX*v_?b=8K-hdQT%)gDBkE2akDs#W!j~20qa3+}?Z+RUh|SF*a-j zi)ItJwmGalG7u8YV}ivB;aVC3C4YjWGY79+gS&67K&cJGKWuc%SeNQg$71L8l-w4% zM24uzY{CV&>B}kf2Ez;_n)}Tc>F}YUc*zY=G>6v%Y*EYnCXwKiO#kw17}0I<5(|W^ z@*46W;akcr@iVAL@T*WnnF>BrunGrZ;`*{GjJflhDVaF9f_U+XEyq?>+GMHXmy-GS z0JW5CpD4K!9NUdnN|XgFrycJ*hD8VDO97JG4U@ovRf=q5$$3p&a!z60l$UuSxs_1< zVy5Afn%5l@(=c=7{+v^w+BW0huWpBUg3BK%-7VQtq2{u{1RCV+r~Nsea%I*|oty*{ zuUu*pTt(_-UL|ZX+aKx)IMydjPqM_r5ANFIb7W?g&zw0;AgR<5RCi+43A;YHwI8sQ zK{}O_+6xK>I|J_MsPraglC(7({WscAjI4SxQ<#F~F$*7Llx@q6N_H6lEB;C~$=2>r z-z+%|0_x}&!7a-4l3)cITg=E{q(6)s5gSWz=>bYPHm4&yHigmg>N`m*#NS|V(xvym zHPWem5|5iGnRKr@u(VDfWJ9ars4Q4oC)jYi$KaLyr8|XmKY|Q zlb!8Rgmh8<{SM#8oVED*pOxAIeC$G|aT2`Z8<8IKj|gyAtsS1@M?TXQFPC>0i5|G! zM5u?(%tB@BFbxj&)73BKPzBjlo_PLrpDkX9-~%wzTyv+KN2QDQ+i!?GtZbs_Ii{~@ z7q_xSNHy{GBZihMALj4O&Lk410MaG{kJ$R z6L7=qzGWrIDq!@qz~zvF2)zv=H+p?b`IA10hdV4s2GVX{$N(RMX&pEj+&;7~e9dRS zgvpkq^N+GF;lich5jJl_YRd>De-lc9Y82Qj7_rHa8!54b$1@L8%~y$`MqlSkTEiHH z+CH{pdicw$$9b@-9YtB$OiZ4I4-Q4F>DOLKdgodY&Q3CtzD=8)=+gcLWhyf5FA7~#rImO*uOg1B>fX;ZnE9Omc6?lg z3Ac(tfFkqq5Uq^>HeyF@rM=Pn zDDfXQ(e|@tf9XZJIB_%_CM`)zGwldn8I_rq{^EnP2LjSD8a}m^-j3nW{-sw{bZf-{ zm3FS{nro;%A~%aS8xNv4aGG!|T7NiLiofk$b+rwGX^XPAOJ$E6w~MICnp99`{;3jq z>SijhV-D*SGf^@5$4%e;fmmYXn!KZ6ysngmtr9J%war+5_{+G3xhG8akl+1}ot(RM zY<{^yQM`uA8eGTfnlJHdwx*;PLdc-JdLkzd(q~bZZE+wg61POp%LNN-oK~W9Nfxcp zk_A(uo&raFC6RMp6l+Um8S$Qmpkw6i2WD{J2qMR%3INBf+%K8Mtf*aE<4=n<$6nbn zudwALe_pJJ>7!mgpxF4sfR-yFjdXOXo-2@ANV}eLYjR_#08GXW$){t!`)>ROAH4d@ zuJ5(w7b{D4(5KZoG0z5ZBp(vCUe3pmzQ^*}H;b-*ZHOfWem)<9($Cj(G5uQ6>TNZ7 zmpcHg9{bqIaI-2Lr#>WX$oG>dpYQteO4$E{6z1^*S5&Jv^ZhKQk_yO)WtTfZoS88w zDxV4eOSh#@FwylVuim1`H(KziIJ@bKXitkrg3>PCa7WSGH3CS?GxqS#7|4mFzhNB$ zK5w1zVBw_)e0gn5x=GxBacXA1U$k@onk(7L1UxDUhlcuh*!~jrVDYC&;K-5c?K3D? z+HK>(V(4uzP(Vv}(1B#@-l;2$nGHIEf??^Eny{95xJUPpJTQd-mh=x`f7x-77Jo&e z2X(6wA8QqXOzg+El4{SL5TN(G!N@*#($6R+qA2r&RDwxXy;}FE9LhCv^is30sM1P{ zT0h?rQuSU{{EOtEY<|Vr62*Q$h~2IJqrw4=JMm5^)}}JRAs+U@;Jei3pnHpLkQ8Rp zm|*6tjI?JCTyD_GIduLd-5Bf-;*=ptWMPa9!0@VoEu!@#SmtT4KY znq^wHT+IbqDQl{uc$q0J4H!DAz9Dj#+0laon z^9uH37axsDAAKRK^(UU(>i5piX?mj*%Pg`~ z>)H*>slrJ=>UO+9k%2#}w5Iz6PaG-!9C1D)j|9ZQUe6QOH|L;OT%b9!=+y;&f|Kdp z&~mOVk3#AR4W;7GcSU6)wJP#z6<;SE{CYgEtmd490vD#Sa|TblN>BccgEi4ftt_n6 z)5X!HIVerU>*xa#2CM?9lux!%oKa9T7TE{djQU>g*7w}9jI~)zrZD-@VCr17cbofXiyO)@2);e zBDxbyQwAMkTG*-omaWVf!Sj_pOB`{;`0*6$Gn?TkgtWBLZ9c9H7R-87^;f_Py$Ilk zd|K({qB(iR!Rh}Ib7<`U=}BNf?<|ozPl0~QFSw$b{Ale1W7F|rld#<5qOiZCoLLh_ zMex)9E{XcY&**02JORRRgZ?9)JMWAOZY6!;r#OH$qR~NbS)VnP8|!*r-bPS?zgXsv zw6E3xUTnl`dR4BpAwBd9p75bdPE$=yR#A$4c^jka*h2*^pznvKK$8rCQEq|K6}NP+ zmNY3?>KMO|G2Q2BiK%-)R3QN%qop&YC z++}HY|2=vTpmHRLKWG)1tq=VPpg40zsMI53K}Z)RLnH2Oj!Aq08~dzdv_Ke&K|gqwOUwW<9`twg}l7{8JwH( zR6lb>I}{hQu&Xp_RGJ?6Y~QYxa(Ks7G+d8%co+ zROO0^mb?cNc)&s_@*l-&HnDX6O}%tMK|+v?WZ_uN1d zv8fF|ZfrCJ=Sf$lqJMT8LWaFL@+@&ZyL6t~&rFt(i>h0w+IiJog<$b=C283PbHISv zmoohvmb4A(M`9OT+i44q=XtJ@BC6+rzK$_zr!y&Ap;raM?yTK_p3tgy1CaNoyrh~w zvnoGe(I}kD(0uRx1Sq=vOVHL}D6ya1ZfN~w)0k#Ore)5@0}!(_7`Q=bm`0y#iby>wCiVB4aI-Yi0vawUu}`{?t@iX&=Lbl^a#i|UYN^)FlNnDvZ; zK1&8J3L+u!r?pprm<`ThEC;T|x*(a(sMbmg>rVwW!oZS|qzr+0yHh+SdZ0*%>yVaff>oQ6945>@l z7XOjr63wrt*-r!~5;E;sFC1c!-Cn$iUO%KKR??WfO0}Dj=Bn|>$u(ye5!;=i3`b)E z;+5k#;+eeuW`P4V>)>mn$8@&ipRsb;aPv>tf0c3Mi}L}OBuL{5 zh#~75MQhJ^7>0n~a?hssp1b26LcY?bH-MDNH_r9Hn^D@0=m8_QOn(A6r{b|)!BX^1RO5s9IB;ju% zITOX;jw_-pf+3mW1aUIb`cH~_eaC|WDM)&<)TF3eleWz_J9NEn$d1oqC zpAy#E2_(CULOU=lE}b`rxIMOEIHvCcJiIT&rY+6F@Dq5;LVgrP1Xo(=0ZBsG;_qyR zFTavm+leS`w*BRo&CTgatEt~ksufDMJm0jkGN=O%vIZ=0^rL4b3nPkIKb*rmR*ezj zc!7tmOt{W+hR5;{4?~{Il{e;R{QRr6t$FzLUreDe9s*XRoU_nYN&FuU*TA>S(})#) z<{8SHZ(vPo2TGY{O`f3>51GA=^yXB4Qvwq>m0dNxYh*Xg1gEBI6os69i!9C`>(dmU z$%r)I);MTlE0%;dSM7EgNZ}JWJ|aYWzS`X1x?4%|CHBMS@^fn9Hk7yU&|r_z_b%LK zqWjGp%RAM&WtrDDE;H)D%x2w?*?t94vPmHz9G$@CzPmwB} z-yBt~AjP3&a1qWw4rjk??crd)Ms*>*a_`L$RY_+J(6gQLY^JJ%eZ0PKg})Z?>O@n3 z6!DuFqq*g;u$H3uvZ|xEb|NNZtSPr{m^M@2*vQ(Us)KA`_Ym@JNFrXmQ-;)p9)GTm zopFWnM$=a<5AAmR%qVeO%${w5m%0nc^eLd-OkG4p8(jQ@dp&KQ$~MSG?h|X?CCK6q z?>4;K!8OCoDMIL_negu|3QH$AbTy^qep6y=YXu(<%g1ro+C(sJlHWvyYF`1m<*pT~ zy?n%rzZtda(=x7vVbmYvLZQE4XKmXS7{lK^#w-sk!&QtiiF9rg{G>gB9T|^}t{?V_ zPm(sGP(RofQdIRxmgQfE1jqTxyCyfg8@MKb-A87(P= z-XfNFau099-61$$MZ=PFeVg9k7CAb$=ffh*<-V%`B;{PA7?AbL0lBD7k)S%(GzO~hllH{8LjE^Ol{>vK`l`mn5yC?G1L9euWdb%{=o8Sna!4aR3I(GdZ z!7j7GaGCZEnVI&;s|}I7ESogss9NsV3 z-V270?cyYfv+M%%!XCSK?xs7;#Twa*Hp2YJ*@KMF>?v*#%Ot^A;KGmiwu6~9Ey)~^<_TfMRQ$y4E{y5E8~0Ld3M3sHW6{W!^Dxrl`d8iPqGC3 zQ}K+n!^a2N>u48d|YM;F8VM)FT-7zN-}o(L@!p5Er{VJt)={F-H4Eb@)=U z<(-P}^8UErMk|dsBM4vcXn==CcozEkCVbs>#8uCt{P2Wn{b(flun>VWJ>da;^7Pm& zS`dmy>wLFebm;P#d^n2lwe6n|<%iwCsx87A`cJM_OYXt3szvuq(!D|(v;G!DWmW~& z|HNq!`we3!#$+w%yqGnC~elbueh*^Ge$NNa$OzC1@ou370}yb z?;v&t&O@_nS3@Mx$p3-j)P@LSelM+asP6VDDA=Ex1Z2C33P?2j!yXlJoSgttwoONH zseTVe?u~nf)ox-zMhZwKVoyD10z*DwP=YhGJpP}-1}vtKGMGu{0QLIw7C0&Sg{D7R z@fL9xJuW()6vv=Kz)p2PE%70+v_$}sKxRg&d-X)~B!|TkOQ+|NrLv>jO-ccD z{{?5re-hQu5I*8_?D>F2X-#|NHv3>LZ8=^Bwr+}HTsam97+H z^WFBiQ%D@)&e2L+M2GjsDOc6Mc0~y8arvH47{{=%L3r6$zpc(vM-r@2q)wL2TAh!8Z_3Fso zjKoJ%efF$ksb1q|&b)^QdP4=qpfj=tsUIe(YeT3#Uttl04LSkG3Xf3RD^VUR<2i^L zliP<=v!T`x{Shr+si3;|^ekpbgbx1R+$sG_9FE8Q`1iekiLbhavS1=mfZPo5y3WJXcw)aOX*?@KG#;k)5{)bK8J^&6MnJ3B_ zDcOd3QW)Mfa>rB7%=n0n*_qa)tTz2_lt#wX03W>LPePY*Tg9NQzbfrTe+Q+r2}m zG)i9H)0~BbMnOF`x;kfXN2i-kobqTRR(ef)+0J0a^@l?j$UTVfP{JLacNvc_8syY0 zq3MvMx!e?T^w(6$&w%Y;m7CB03BDy(pRy5eD{bv8mKBt^<&%aBjV4h`2l>4yyX3OX ziqOhi|HlY>IaALzU>6=jxaMuzZk?0{AtIKx3fXh>!4?{8%?RH$X@yw z4JVVcRvOdT?#q62;Ink~;cWex*C!;!k#fy26^Olk#Hg2XZR?LJeerv#0wB4@Ac=Mg z`}MVW_p4^HF{fDh$5d>I|6_!eREmb!eeD=JVd~SfP4eBc;|JUA#x=Z=s^x z^qI2fZYl{^qTWE4DBo3C+BiP1=N_H}x+yuDxBf0QPCQHtAM%dl{aMxP-m zTI`_Nd{ZOZ(e2`u`Zh(tQIH6RQTcuU?x5;0#Gfal++!@%IZv*wpFkiQuc0X6%Vq5k z?)y5I<<7*om(%XA>DY}&GfQt7t;mnHPIt3F6afW0d%4ee+DGdDGoApwdA~BApF8)R z)cQTFWMlGbR2sIu9F}B64d*kwl6bXyU5kzL#2^w){NcK)(XoPmhYYwnTRj!w>u+_X z9g9HbeLI+FIzV1dGRk*@`}(k9S4(d4t(-H(x(%dmYH zhnN#eD`wl(Wr{iIHiw-KRp|JxOPy5hh_SRJ)+Qo?q4VEk2=K4vC2ha*PHvVfTwaKr zaz!@fXflCF)Q8Johr#r##KfX7i^uq(NGNZEZHF)e9L6|g_MJPNO&x)$LId+CA3_ln=xVY4BW&SaY%IyJWPaF)2_+p$aNAGUBt`Jzx=T1w__NuZ&!oPd;{%_4^A}K{ zXaY8YOw)2uS`C7a(n0A0gP*y|{vV!LN$jk))RRolDL>p?sNepwLs8dNX%)p!`uuVG z1F9-?9ZVRHq6TNba20=a8>|+l4VYWRplH6|eN`Cphm2p|MXHp*am}8Kf@${m$Vbq& zi*UGGSVre^-8|jKsS{gY2386Vl1)8$At>VKHfG_nqPP$JpV#De5wljHUM;(Fnz^Rs z7@-wkXB!J~$s4}RdjA~-NTc899yW`5L;kxBWbpcAWslpbPt*!UYSndWGdi^py1vC( z7~QgLn(gh-P7>Pq$cnKqg*Pmk!;(YAC4!c^`-`~;r|wj-sQrYWlkfR?z*<9+TCG!V zt74`nDIp?V=_z$YR?iSSmM$7<^6A<3{W6}U2M>EA@PRdl^-O6=My>qTi7{@qUy=6P zzTvlz+XUe>G-aljF%P7H~@S>T|ky?@E;VBF-+& z6O2NUQkO$;HUE^z z5&ny8AkUwKx?YBmE|mqsoD^t0vv9AXYWq+FVvkvg2kjr(RqA}(VPEr^kFD@NBV0ue zeDKd&c+cEzln*sBn<=mxdKIlj8~9ya=n@JOe73c-45^xe`nfeep=TZQ53v7I2ao?a zvCYc94N3XHJZe{!O?h$;O3m@dj0Z{mbRM3}VL3h$H0laGoyhms)eA@cI%Mq0FMjoe z@tFK5-TkJzx}uvwjM%KjI?v0|_+Qoa-sNz=X%buT^xZ`CdrP3#@qu6-FMZbO(q!ic zc;J6Ad%Ic_tNx4keo}w#-m6q(c)ghwcS%<9Zpv2ok7&XusF6Igl904?afPxl_R%Pm z?Ia!6sDwZcdbDA^2wS%j$Jt3|M`-`%TFNqG@ELM^Ygd_{V-3BpzHxoeb1<{9^joW?UUlq&5I1|AVV+*U z!5)EwkbD18slO#E3*#KXZYszge-yUrLWg^~gC<59I{O;WtCczZHdS?-JP>?bay64F z)g(u}_(#Sy(_O2h|4~TtIoIT>``!5dBDdoumHaNFf$*!<+^xQpJ%W_@FwLLByj_BRzH{DA?_7W&f9vzk_3z57H&MEg`_j0zJ$ix$zOL~_aY8(WH@*b_yN>u z6%Q|+`7F1SPq%kpZmcXBkkb9U*-6dD^2*A7%gc8j%Gzy}Apq3gU zd^k-&!LzYYu&Uw+qd6*gEg8dJ8s4PeXa!{j`bzp=>@V8mo>$}M#4DP(NXHLtWVGiL zVuT<84hJ{ap|d>Fe39rIRkU8W5ll=9FK(8-A^e{7y?#l8o}WT-BWtkO_L^htA2b>o zw>@&#o}@jP=9b@UP7xLGCz>fRDAW?7SzqntK>Pq5eZhSbk7V%yPH|9jrp79&Y9V4c zZhPyBHOAMS=QzUut|NEWQOD%ZBqeO`fc$K!da@_{XMhw_u#>B*{@~YU;pLGunL{ux z6qf(bW^n%=H|VQ2yDmc>rgK!swdt6Iq-P_k6Rfy=B?-|CVxHVY`Y#W$9MjQMz8`I# zgOEs4s039ng8OZ#w$B@+2f+qo?C57Qxd+My;$UbKsY8A`R2C?4oBy_>WeG>X(GZW- zg7E0g5iCp*9+)jrI?!j`u4ZwBgN&hs2Hh23K_k>c(6W1t2NccoA5Q5bM z^jlw1d9DDG8$?2_E-D7Ae1V7Y$mvtUt&Q z02{n_2x}=rKPV zfbK@Y;9vV+WRaj+`P~#W2ZH&pw(d`=iuljQW2`OF%PYKrUh3Lea;H66PWgR|b+M@- zRn0fmtz6=doJvaU%~Tdhm3I+hFGG zkB|PY>cAbcT8j-BhMftv(yi=X= z1H4z7UlR1a34iQ2rQ;EK@4>Fs)7h|Tnq=7*#GX_8x7_;d#5XZ+(uiH- zX7KMhA=9>B&KqA;_;*iEVY|yHuB9JDH@-=*rM;IQBnY&*At$CP{W8i^uGAxY($Ak8 zs>$(jJ2ev9-}Kt-3;vQHV2YFqqj>U(bv4ruTbOk_4F3m(k&lw4C$087x^78uc-c8o zn8?cz*DTjT%r)aXD6Hmk42zFGX}!Rhh17zPE;DB~|Mqamtq3t74E!#b&)MZlplI^%{5V7Hy_0{| zL!Jl9e1zy&j~-M8zYL9kLnTx)fiNZ>_w^SH_>B{N=5QuS`lP`A=b_Pj0F+pN*3FrO z+uvVkdoqAuI>8{1MZXVDb-JKdVrb*1FxZ195mf5!rApxo5I;rhe1Z<~xn@1{LAHvP&m`XD*}Yy1?Z*T2EKj}bP1^truFcd%?U z9hFGwp5m@R@%ma2f)937r489{P;?k4D5J;Fu$TeW)!PVi#{Ab$A+LaSo}G@JIN$9e zUg4LOY~aIyksLNe<)VmQeWaZ1Ue}H?{C8}sDb>Hr|&@Zu&t)A@q$;)8y6#qPgyc)ZIpurnZLmVee~a2RWymlHgqf;qR$qd1t@Tj$CcM8aRgO_Y7UuN)J8%$oNF?0&6H~LBdcQ%j zrt?(PSR4aMCmj!(FjytXtzes)tkh@CcHMVEEELYw+*%m95!0)opG)Afc(5;u!PF1Z zo5er0QCh!B-v|YI3MumRnsrPMo4O7jUbh$^J_ugY0kwf7qZc@Xl z*VuG760sf?p*(F*g9n&~E54|GGU9<0+!rPV-UzH`W2Elq+qCM>=y2KY&It5mVMOUT zIE>Q56}j6L(hag;rTR%pFb}qbqEZ-X@GN>klBH0`Sj?2!8d=b)ksR~=J|%I+@4!rS z|}%p6*c!2HnufwSb_(8 zJi;sbAi1O=W!XIZmBhLElPRKB&Rcx$uID$_+Cm84*DH;Yt!;ZDMU*#`R}(aNEG5{~ zR1uLuf?Mo|ReyY0oE#7p1&4t4aa;Rre}*zFZeP_PLPAzJUFE-x>Z=aC82Mo`6aTXe z;lDA;u*qVEYOtj^!X}SBwT^~4MTip(DjwzVACz*rIHOTm3CZNPXwMl4P-|+`I4!6{ZqxmGnrN2W9;`eshdG;h|g^8Auc{8 zrT&OOdjY4kR0QeCiG)65uxUA2qMG__3d_1bBBJb;`TCGEX%t;tmc-=w7aO>mO5Te$ zCW(|A+GYx9Xorm#!KbNJtzG2|yBF0x=)d}nkLJFMSTD{$zmx`^+`2*sUar41leQ&f zduy+6E~gfyhBS}#xfPA6DrI`2z=n6<);MDLeUuA$Bz8!4HVURal>Ew+Tau@?A9KD@ zn`PxDQWZ_45t{UvYhkAz_!ZeS!Qa)p{xjW=12Pv#APN#!EaBPX$&#b_OyiO2bsIyx zQ2%5Fv&B!NPNna^7^@8T(?oqI0s?m1_)Hs;+S(dNcV}y!6T~y#NaE&AZLtY;<5>A5 z_Xyu~5wc|?ueY4QXf@du@9!m_s8`7xV(3^TNJ$e@>D{KWeDoF3>jk-;v2tetasb7Z$KI3W?sBo zlAn0!4*wI*2_LW1P3R>3+sr%4ziIkd#6)x?uEF}9T#0Jf{1Z=h#5Co}p!3z@sgI_G zty^Os>nI3Q;A6of6hAMngN{p`?;O7F)1@h?#%2z8r6kK~S&?_H#Qnie@FE~Hcw z-LKn7y1mESWZJuRfZfo;>;l}SX8YIj&A=d$-t}eZ?|n1}2!Z+3rU}j4=6TLn6V|eK zy6X`f`PBd7UShc8chvF%Z&ypPWY4_+rEO#sdc3jKPs&!=npaKk*z08I@MSJK#lhG}eys@){yi1V36iRB zat4>Jw>)Hp2l3WB-`t=ulc!6Bz&*A8wGv1TeyA`Q9bddq)~vHWBaeUav>%DiRi6*d zWBn2%f4ok3a_KBhZau67Lr>OB%i789e!Y`Ku!}u6`QEe^@5^}o95OGp?8{U3o>ZjM zxztVh@~QKyuUXjGzv*Acnl^(38fLPF7=udF8Yr^^)G zV9t8G>tJe9Uq3&*=3L5-!|OWH6U7;k2x^(#4@coZ{p@dNPLb+LXsSduz`?%$U4%xq zcgOQZJ735(keV0&FI|>wGOhK4MW8SKKhRDXw!A`*+CPTmD+Y}CR!VC)M=arj- z+&D768nG~*N%CqE-2IcCe9k_@Sx6&^wMWa5-qVg52d6mi&B`p-qfj(7EmojPR0dg57H(Un+Z(Jb(NYY}Ro&NP(_T%~Lte{_ zSlFQR6f(-NPQ7+X<{WHKFH8%jin~%`9JXSvwI#}kuXkTvxe+~qvV%^hYAw6DrTfyo z->QE_&lna?I}d)H4z;b+EQM*Ki%zn4w~6}3L3V8nQEm4N^OfBk*#Em$4?;$0^YCYL zCIywL>!()_75m>Ou)e^R?`3&67jM2D%DL4toZC#HBIMa;WH2HxqyrIQnw`p;&(&uc z(QiB7&1+@PZ3dTWgB0}*{O4sjr)HNNghn=oc;l;HH)w9)6TwE@UkBlAX z@K&NKkr1Y=dzTX8&0>aqJqRaY)d2(Qwh}Zq!$cb#Od1jZTB62uuOL!712c5i9)Ba|yd3tl8x5veW9x(89Y(762R>Nn4lS_3 z?#!og%--EnXF8E0l+#Pqvp@Q~R~7r-r`_K8KYDy2fwCzy$NJjvpNp25`(SL^rK-b} zp7Ym~gf_bUR%?9VA_%|ZrQ&2y@n71zhK*v;`R3W#Em^zmWk|#K&|?FlC>uu#AU#gKb4ll%LqLTAJQz};%Tv>m zGZ{bpGqyX`cyMbHk6vkchFiM4?rr~)gPj0-2EOvHIMJ-esydX`-hpXKmFH)K0qH3 z+WsUx{>TVvarT$lH|&2zeh?m-fCDAgSl7j*g(=l7^B!XJ1N21tNocn&VwA0n*4Q_I zl8R1uxL`g^{>V#5eyBDIKw}}2-flw~-cTy11<;#K#2xvNB2sxZz<}`p*-^(CiLR2M z-4776(*avJkc#u^e@)?-0e#t*J+kD$*mnZ2(bQ4G z{0oq*T{Jx(j!mzAgZi;BV+A(@nZZcOC(mq(=JY^v)XTQoF08CeW7sD!4lp*_w8rdp zmDkbLUd~*Ro((A3XABoOA>q;gIBXOBLkkcFHTBM+n!w2>wo!s2kN`<+wlCR60Z!|r zC&Lx6K!GDsj&y_Q7ZZcum*_zBXcw61LtAuLJ51$CI}Grtyqzi&6mU?)TsCFc! zmSYEM=-;oA2C(GvjLuNdCs=_RwlD>{mBz5yjf~-hCLj-Xvpx}#hERPo;V4ZD$U}XG zqHFzwE}2{t{>ctXl--3{vk*s~ZHeRw=l!rj08qk|KX~{Mcf_r-G#^fe1|(`7e4}Xv zlMR)h1;~jHaR7RjBat>`QR&}4M7h_hri_Q!0DXMd-l3cm@&VFQS{!tmG?1qhuveX= zM&B-^pOr2FavF42wBid3(Z0S(8{gv zlrt4GWY(47J%TO?2KcPxFB2W0)xTjlO;hPRm5~kwsQh=)cFHpv`p&ZNPrTjV007!r z>g4}L+Vy5l0#@fdgSnc zVlJFdeO!PqM|U4eRKss4?9t1h6SWqcah3)LP%``OeOdn7q-kT}D=y{!2LMLo_Es#J zDW=PvsQlgH>9X$tN})5BmpSd}ayjz_(bx(Ez_o;npCN2pH6gHnFNoe7P?~h=f;`s$ z%(dPe&dr@q%Rm6QYi;q~(VNeZY*QTwcl~G4|$Yj%bkJ(#(tbVJr(}bAT4`|#`0 zp#Vn4ONxFCXJr9KJo$m+Bty;HEW`i^+p@glN_pR|@9$UC2wgg%O9gc(09VYg`7G-P z({T)?)5QF@CR|)VRJkGxrp;cifS_8CbuVgH#OBCCk@Z{p;Go!#?Z+ntXuPV_yj zB6xo5?k-Oh0KU&ZyT1KgJFsvHk9YZorZxMr`DjA^+gyRwf0Ay>s@k)aF#PUZv8_iP!P80v3T7NdcKmY&@ zl-+9kaM98jN;N&fNNQEnp{(paekA~Q1;Xd*!@qW5fo<~VRbN_` zzka)IAcO<6Ve%~k_Or&~SM6>X;7U|jz8xdC(dEHP`S~VtZu(s3+R-C**yg`lQUHiE zKf;-7(7#NGYSvS|t?N1->b>LKJYHcMNEPw|0NMVrsf}Wt|Js`g&ZRXBdJI>&Ej)(# zxf#6qv^iA(AUVi)59*S6<#qgEWne)rO5apB&G&41W!wV7=`h2o{xyOe0QOie7`gv_ z^?0STX_m}sy+5n`?p)-pbF)~F;O-Fd=yg+LkLF7R4*+sfXLt)`s_)ApkN@rPp1EB_ zb>*04{KqS9C|L8-Ui~M=ztV7+Cl0RV1_J{C{k2?YP%Bk0o=nPaLrc55P7H5+na&Z) zRPNF>tI8JY{6xLmE`vk++OC_*!~EUG+k52-0}TMtXg;7TkmGf{LPJAahX!*UZ+5@e z@S)%{X*IlE<(gawbsqjRd_TCFgL9ua+v({ + componentId: 'configureSource', + initialState: (props, _, context) => { + return {} + }, + render: async (element, context) => { + return ( + + + + ); + }, +}); diff --git a/integrations/openai-translate/src/index.ts b/integrations/openai-translate/src/index.ts new file mode 100644 index 000000000..07e4d3e4e --- /dev/null +++ b/integrations/openai-translate/src/index.ts @@ -0,0 +1,8 @@ +import { createIntegration } from '@gitbook/runtime'; +import { translateContentSource } from './translateContentSource'; +import { configureSourceComponent } from './configureSourceComponent'; + +export default createIntegration({ + contentSources: [translateContentSource], + components: [configureSourceComponent], +}); diff --git a/integrations/openai-translate/src/openai.ts b/integrations/openai-translate/src/openai.ts new file mode 100644 index 000000000..346299ca9 --- /dev/null +++ b/integrations/openai-translate/src/openai.ts @@ -0,0 +1,52 @@ +import { OpenAI } from 'openai'; +import { OpenAITranslateRuntimeContext } from './types'; +import { ExposableError } from '@gitbook/runtime'; + +/** + * Get the OpenAI client associated with the current runtime context. + */ +export function getOpenAI(ctx: OpenAITranslateRuntimeContext): OpenAI { + const apiKey = ctx.environment.installation?.configuration.apiKey; + if (!apiKey) { + throw new ExposableError('OpenAI API key is missing'); + } + return new OpenAI({ + apiKey, + baseURL: ctx.environment.installation?.configuration.apiUrl, + }); +} + +/** + * Translate a JSON object using OpenAI, by indicating the properties that can be translated. + */ +export async function translateJSON( + ctx: OpenAITranslateRuntimeContext, + language: string, + object: T, + properties: string[], +): Promise { + const openai = getOpenAI(ctx); + const result = await openai.chat.completions.create({ + model: ctx.environment.installation?.configuration.model ?? 'gpt-4o', + messages: [ + { + role: 'system', + content: `Translate the following JSON object into ${language} while preserving its structure. Only the properties ${properties.map((prop) => JSON.stringify(prop)).join(', ')}, can be translated and will be modified.`, + }, + { + role: 'user', + content: JSON.stringify(object), + }, + ], + response_format: { + type: 'json_object', + }, + }); + + try { + const translated = JSON.parse(result.choices[0].message.content!); + return translated; + } catch (error) { + throw new ExposableError('Failed to translate content'); + } +} diff --git a/integrations/openai-translate/src/translateContentSource.ts b/integrations/openai-translate/src/translateContentSource.ts new file mode 100644 index 000000000..272fa1487 --- /dev/null +++ b/integrations/openai-translate/src/translateContentSource.ts @@ -0,0 +1,114 @@ +import { createContentSource } from '@gitbook/runtime'; +import { OpenAITranslateRuntimeContext } from './types'; +import { translateJSON } from './openai'; +import { + InputPageComputed, + InputPageDocument, + InputPageGroup, + InputPageLink, + Revision, + RevisionPageComputed, + RevisionPageDocument, + RevisionPageGroup, + RevisionPageLink, +} from '@gitbook/api'; + +type TranslateProps = { + /** Language to translate to */ + language: string; + /** ID of the space */ + space: string; + /** ID of the root page in the space */ + // page?: string; +}; + +/** + * Content source that translates pages from an origin space into a given language. + */ +export const translateContentSource = createContentSource< + TranslateProps, + OpenAITranslateRuntimeContext +>({ + sourceId: 'translate', + getPages: async (input, ctx) => { + const { data: revision } = await ctx.api.spaces.getCurrentRevision(input.props.space); + const inputs = getInputsFromRevision(revision); + + const translated = await translateJSON(ctx, input.props.language, inputs, [ + 'title', + 'description', + ]); + return translated; + }, + getPageDocument: async (input, ctx) => { + const { data: page } = await ctx.api.spaces.getPageById(input.props.space, input.page.id, { + format: 'document', + }); + + if (page.type !== 'document') { + throw new Error('Unexpected, Only documents can be translated'); + } + + const jsonDocument = 'document' in page ? page.document : null; + if (!jsonDocument) { + return; + } + + const translated = await translateJSON(ctx, input.props.language, jsonDocument, ['text']); + return translated; + }, +}); + +function getInputsFromRevision(revision: Revision) { + return getInputsFromPages(revision.pages); +} + +function getInputsFromPages( + pages: Array< + RevisionPageGroup | RevisionPageLink | RevisionPageDocument | RevisionPageComputed + >, +) { + return pages.map(getInputFromPage); +} + +function getInputFromPage( + page: RevisionPageGroup | RevisionPageLink | RevisionPageDocument | RevisionPageComputed, +): InputPageDocument | InputPageGroup | InputPageLink | InputPageComputed { + switch (page.type) { + case 'document': + return { + type: 'document', + id: page.id, + title: page.title, + slug: page.slug, + description: page.description, + pages: getInputsFromPages(page.pages) as Array< + InputPageDocument | InputPageLink | InputPageComputed + >, + }; + case 'group': + return { + type: 'group', + id: page.id, + title: page.title, + slug: page.slug, + pages: getInputsFromPages(page.pages) as Array< + InputPageDocument | InputPageLink | InputPageComputed + >, + }; + case 'link': + return { + type: 'link', + id: page.id, + title: page.title, + target: page.target, + }; + case 'computed': + return { + type: 'computed', + id: page.id, + title: page.title, + source: page.source, + }; + } +} diff --git a/integrations/openai-translate/src/types.ts b/integrations/openai-translate/src/types.ts new file mode 100644 index 000000000..1b228f8c7 --- /dev/null +++ b/integrations/openai-translate/src/types.ts @@ -0,0 +1,24 @@ +import type { RuntimeContext, RuntimeEnvironment } from '@gitbook/runtime'; + +export type OpenAITranslateConfiguration = { + /** + * API key for OpenAI. + */ + apiKey?: string; + + /** + * URL of the OpenAI API. + */ + apiUrl?: string; + + /** + * Model to use for translation. + */ + model?: string; +}; + +export type OpenAITranslateRuntimeEnvironment = RuntimeEnvironment< + OpenAITranslateConfiguration, + {} +>; +export type OpenAITranslateRuntimeContext = RuntimeContext; diff --git a/integrations/openai-translate/tsconfig.json b/integrations/openai-translate/tsconfig.json new file mode 100644 index 000000000..527fedfda --- /dev/null +++ b/integrations/openai-translate/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@gitbook/tsconfig/integration.json", + "compilerOptions": { + "strict": true, + "lib": ["ESNext", "DOM"], + "downlevelIteration": true + } +} diff --git a/packages/runtime/src/common.ts b/packages/runtime/src/common.ts new file mode 100644 index 000000000..1320c2038 --- /dev/null +++ b/packages/runtime/src/common.ts @@ -0,0 +1,11 @@ +type PlainObjectValue = + | number + | string + | boolean + | PlainObject + | undefined + | null + | PlainObjectValue[]; +export type PlainObject = { + [key: string]: PlainObjectValue; +}; diff --git a/packages/runtime/src/components.ts b/packages/runtime/src/components.ts index 64e4b0735..3aee21eb2 100644 --- a/packages/runtime/src/components.ts +++ b/packages/runtime/src/components.ts @@ -7,18 +7,7 @@ import { } from '@gitbook/api'; import { RuntimeCallback, RuntimeContext } from './context'; - -type PlainObjectValue = - | number - | string - | boolean - | PlainObject - | undefined - | null - | PlainObjectValue[]; -type PlainObject = { - [key: string]: PlainObjectValue; -}; +import { PlainObject } from './common'; export interface ComponentRenderCache { maxAge: number; diff --git a/packages/runtime/src/contentSources.ts b/packages/runtime/src/contentSources.ts new file mode 100644 index 000000000..1f8aae6f6 --- /dev/null +++ b/packages/runtime/src/contentSources.ts @@ -0,0 +1,95 @@ +import { + ContentComputeDocumentEvent, + ContentComputePagesEvent, + Document, + InputPageComputed, + InputPageDocument, + InputPageGroup, + InputPageLink, + RevisionPageComputed, + RevisionPageDocument, +} from '@gitbook/api'; +import { PlainObject } from './common'; +import { RuntimeCallback, RuntimeContext } from './context'; + +export interface ContentSourceDefinition { + sourceId: string; + compute: RuntimeCallback< + [ContentComputePagesEvent | ContentComputeDocumentEvent], + Promise, + Context + >; +} + +/** + * Create a content source. The result should be bind to the integration using `contentSources`. + */ +export function createContentSource< + Props extends PlainObject = {}, + Context extends RuntimeContext = RuntimeContext, +>(source: { + /** + * ID of the source, referenced in the YAML file. + */ + sourceId: string; + + /** + * Callback to generate the pages. + */ + getPages: RuntimeCallback< + [ + { + page: RevisionPageComputed; + props: Props; + }, + ], + Promise>, + Context + >; + + /** + * Callback to generate the document of a page. + */ + getPageDocument: RuntimeCallback< + [ + { + page: RevisionPageDocument; + props: Props; + }, + ], + Promise, + Context + >; +}): ContentSourceDefinition { + return { + sourceId: source.sourceId, + compute: async (event, context) => { + const output = + event.type === 'content_compute_pages' + ? { + pages: await source.getPages( + { + page: event.page, + props: event.props as Props, + }, + context, + ), + } + : { + document: await source.getPageDocument( + { + page: event.page, + props: event.props as Props, + }, + context, + ), + }; + + return new Response(JSON.stringify(output), { + headers: { + 'content-type': 'application/json', + }, + }); + }, + }; +} diff --git a/packages/runtime/src/index.ts b/packages/runtime/src/index.ts index dbeea2148..87d7bec59 100644 --- a/packages/runtime/src/index.ts +++ b/packages/runtime/src/index.ts @@ -5,5 +5,6 @@ export * from './events'; export * from './context'; export * from './logger'; export * from './errors'; +export * from './contentSources'; export type * from './jsx-runtime'; export type * from './global'; diff --git a/packages/runtime/src/integrations.ts b/packages/runtime/src/integrations.ts index 68833425e..02ac55dfc 100644 --- a/packages/runtime/src/integrations.ts +++ b/packages/runtime/src/integrations.ts @@ -10,6 +10,7 @@ import { } from './events'; import { Logger } from './logger'; import { ExposableError } from './errors'; +import { ContentSourceDefinition } from './contentSources'; const logger = Logger('integrations'); @@ -39,6 +40,11 @@ interface IntegrationRuntimeDefinition>; + + /** + * Content sources to expose in the integration. + */ + contentSources?: Array>; } /** @@ -47,7 +53,7 @@ interface IntegrationRuntimeDefinition( definition: IntegrationRuntimeDefinition, ) { - const { events = {}, components = [] } = definition; + const { events = {}, components = [], contentSources = [] } = definition; /** * Handle a fetch event sent by the integration dispatcher. @@ -159,6 +165,17 @@ export function createIntegration c.sourceId === event.sourceId); + + if (!contentSource) { + throw new ExposableError(`Content source ${event.sourceId} not found`, 404); + } + + return await contentSource.compute(event, context); + } + default: { const cb = events[event.type]; From 8f79435ba2a99ae1bd8503571dcab45a15f76aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samy=20Pess=C3=A9?= Date: Fri, 4 Oct 2024 14:17:24 +0200 Subject: [PATCH 2/8] Continue --- .../github-copilot/src/configuration.tsx | 26 +++--- .../openai-translate/gitbook-manifest.yaml | 2 +- integrations/openai-translate/package.json | 3 +- .../src/configureComponent.tsx | 86 +++++++++++++++++++ .../src/configureSourceComponent.tsx | 2 +- integrations/openai-translate/src/index.ts | 3 +- .../src/translateContentSource.ts | 50 ++++++----- integrations/openai-translate/src/types.ts | 2 + packages/cli/src/manifest.ts | 9 ++ packages/runtime/src/components.ts | 29 ++++++- packages/runtime/src/contentSources.ts | 6 -- 11 files changed, 173 insertions(+), 45 deletions(-) create mode 100644 integrations/openai-translate/src/configureComponent.tsx diff --git a/integrations/github-copilot/src/configuration.tsx b/integrations/github-copilot/src/configuration.tsx index 131b994a9..ddf3b8ad5 100644 --- a/integrations/github-copilot/src/configuration.tsx +++ b/integrations/github-copilot/src/configuration.tsx @@ -1,22 +1,20 @@ import { ContentKitIcon } from '@gitbook/api'; -import { createComponent, getOAuthToken } from '@gitbook/runtime'; +import { InstallationConfigurationProps, createComponent, getOAuthToken } from '@gitbook/runtime'; import { fetchGitHubInstallations } from './github'; import { getGitHubOAuthConfiguration } from './oauth'; -import type { GitHubCopilotConfiguration, GitHubCopilotRuntimeContext } from './types'; +import type { + GitHubCopilotConfiguration, + GitHubCopilotRuntimeContext, + GitHubCopilotRuntimeEnvironment, +} from './types'; import { createGitHubSetupState } from './setup'; -type ConfigureProps = { - installation: { - configuration?: GitHubCopilotConfiguration; - }; -}; - /** * ContentKit component to configure the GitHub Copilot integration. */ export const configurationComponent = createComponent< - ConfigureProps, + InstallationConfigurationProps, { installations: string[]; }, @@ -40,7 +38,7 @@ export const configurationComponent = createComponent< context.environment.installation!.id, { externalIds: action.installations.slice(0, 5), - }, + } ); return { @@ -64,17 +62,17 @@ export const configurationComponent = createComponent< await getOAuthToken( installation.configuration.oauth_credentials, getGitHubOAuthConfiguration(context), - context, - ), + context + ) ) : []; const installURL = new URL( - context.environment.secrets.APP_INSTALL_URL + '/installations/new', + context.environment.secrets.APP_INSTALL_URL + '/installations/new' ); installURL.searchParams.set( 'state', - await createGitHubSetupState(context, context.environment.installation!), + await createGitHubSetupState(context, context.environment.installation!) ); return ( diff --git a/integrations/openai-translate/gitbook-manifest.yaml b/integrations/openai-translate/gitbook-manifest.yaml index 1a7c3014c..f0eb7cee6 100644 --- a/integrations/openai-translate/gitbook-manifest.yaml +++ b/integrations/openai-translate/gitbook-manifest.yaml @@ -1,7 +1,7 @@ name: openai-translate title: Translate with OpenAI organization: gitbook -visibility: private +visibility: public description: Automatically generate translation content using OpenAI icon: ./assets/icon.png externalLinks: diff --git a/integrations/openai-translate/package.json b/integrations/openai-translate/package.json index 85bbfdaaf..205315d3d 100644 --- a/integrations/openai-translate/package.json +++ b/integrations/openai-translate/package.json @@ -6,7 +6,8 @@ "typecheck": "tsc --noEmit", "check": "gitbook check", "publish-integrations": "gitbook publish .", - "publish-integrations-staging": "gitbook publish ." + "publish-integrations-staging": "gitbook publish .", + "logs": "gitbook tail" }, "dependencies": { "@gitbook/api": "*", diff --git a/integrations/openai-translate/src/configureComponent.tsx b/integrations/openai-translate/src/configureComponent.tsx new file mode 100644 index 000000000..f6f9a354f --- /dev/null +++ b/integrations/openai-translate/src/configureComponent.tsx @@ -0,0 +1,86 @@ +import { createComponent, InstallationConfigurationProps } from '@gitbook/runtime'; + +import { DEFAULT_MODEL, type OpenAITranslateRuntimeContext, type OpenAITranslateRuntimeEnvironment } from './types'; + +/** + * ContentKit component to configure the integration. + */ +export const configureComponent = createComponent< + InstallationConfigurationProps, + { + apiKey: string; + model: string; + apiUrl: string; + }, + { action: 'save' }, + OpenAITranslateRuntimeContext +>({ + componentId: 'configure', + initialState: (props, _, context) => { + return { + apiKey: props.installation.configuration.apiKey ?? '', + model: props.installation.configuration.model ?? DEFAULT_MODEL, + apiUrl: props.installation.configuration.apiUrl ?? '', + } + }, + action: async (element, action, ctx) => { + const { integration, installation } = ctx.environment; + if (action.action === 'save' && installation) { + await ctx.api.integrations.updateIntegrationInstallation( + integration.name, + installation.id, + { + configuration: { + apiKey: element.state.apiKey, + model: element.state.model, + apiUrl: element.state.apiUrl, + }, + } + ) + } + + return element; + }, + render: async (element, context) => { + return ( + + + } + /> + + } + /> + + } + /> +