From aaf862f9433cc4b35c165a0eec07298dff5aedb4 Mon Sep 17 00:00:00 2001 From: omsherikar Date: Mon, 11 May 2026 23:15:23 +0530 Subject: [PATCH 01/12] feat(ui): redesign landing sections with unified monochrome aesthetic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebuild the marketing-site visual language around a single monochrome + CSS-3D isometric system shared across sections. RefactoringWorkflowSection: merge the pipeline and dependency-graph panels into one card driven by a shared 4-stage cycle (analyze → refactor → verify → document). Force-directed canvas graph with sequential scan, edge probes, sonar sweep, targeting reticle, trail polyline, and stage-specific overlays (diff text, verify wave + checkmarks, drifting doc glyphs). Pure white accent only. WhatWeDoSection: monochrome bento (12 / 7 + 5). Isometric gate slabs replace the colored verification bars. Mono diff snippet replaces rose/emerald colored diff. Control flow rebuilt with isometric step nodes and a dashed rollback hook. New CSS primitives: RingGauge (conic-gradient dial), RiskMeter (segmented bar), ChevronArrow + ShieldGlyph (clip-path), FileTab (editor tab). New sections: ComparisonSection, QuickstartSection, TestimonialsSection, ResearchPage, NumericAsciiBackdrop. Refresh AboutPage, Footer, FAQSection, PricingSection. Remove unused ui/card-swap and ui/safari-mockup. Tailwind theme tweaks, sitemap + prerender script updates. Co-Authored-By: Claude Opus 4.7 (1M context) --- public/Profile/Om_Sherikar.png | Bin 0 -> 201988 bytes public/sitemap.xml | 2 +- scripts/generate-sitemap.js | 1 + scripts/prerender.js | 1 + src/App.tsx | 15 + src/components/AboutPage.tsx | 681 +++--- src/components/ComparisonSection.tsx | 209 ++ src/components/CookieManager.tsx | 1 - src/components/FAQSection.tsx | 96 +- src/components/Footer.tsx | 74 +- src/components/NumericAsciiBackdrop.tsx | 227 ++ src/components/PricingSection.tsx | 9 +- src/components/QuickstartSection.tsx | 208 ++ src/components/RefactoringWorkflowSection.tsx | 1940 ++++++++++++++--- src/components/ResearchPage.tsx | 152 ++ src/components/TestimonialsSection.tsx | 321 +++ src/components/WhatWeDoSection.tsx | 1147 ++++++---- src/components/ui/card-swap.tsx | 276 --- src/components/ui/safari-mockup.tsx | 68 - tailwind.config.js | 84 +- 20 files changed, 4113 insertions(+), 1399 deletions(-) create mode 100644 public/Profile/Om_Sherikar.png create mode 100644 src/components/ComparisonSection.tsx create mode 100644 src/components/NumericAsciiBackdrop.tsx create mode 100644 src/components/QuickstartSection.tsx create mode 100644 src/components/ResearchPage.tsx create mode 100644 src/components/TestimonialsSection.tsx delete mode 100644 src/components/ui/card-swap.tsx delete mode 100644 src/components/ui/safari-mockup.tsx diff --git a/public/Profile/Om_Sherikar.png b/public/Profile/Om_Sherikar.png new file mode 100644 index 0000000000000000000000000000000000000000..6c9d9b6f0852145c3b20176b74eb1d937d7d3db5 GIT binary patch literal 201988 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

GfHy$5u6`?B|AS zuWGlbY?1mH8LCz$ImM{;u6pSEP#S05;LS5Zvq8odTQdwsctud{r2_1v2Smh;QBJnrnFDof18R7H~ytG)IO$uNBL?S!1Ncft_D z3gf0~rpmKhC<7S^aZ&l@F{}(xAKoKKBuY|`D%-IY^1w#`zciPKB+xJinK8e7(y!HN zzT<-A^@>nsAhwOJYWO*ZdW7SzPTwwWT-v$)(Dt-bP8@SKY{$g;_JJD!Mi@{&3pgXG z)~021z0VUv2qmPuDQBC1X4hwhYS(5zHL91k@GEra%Xm`uU7D?moT@hR=+lpumf1nJ z4WnGPJz;bIkDMYMP<3Qre{91ewrEXerB_;0BlyjS)u$DCIXV5IWAiMfih&$6~(#L9m`eSZ|F|&qzL)QsYe<951ZqO(G||P^<{| zd(6?KvdB`59?lNr6M-NRA&DBM=#9w>`b~^hrBbi%PwjCr7pnH%odS0+mSNg3fOrhkF{`UEt&r}F=A^{i+mD8J+q~TjSyF(! zgo{zbaBY@5v&fB#wj41(D6e&La!u!j3j^mx0dNQ+QDzrVg5nw=05nIxXt(V?8Cp-3 ztf_{MYM*SGJU45^E2p;jY46H9y4@bzO8s}6Ha_zu$X-M@d@;Q_aBEIA7p|dMsl7v+ z+M_@yH$LKyNPJ{B?HWk7y2vgPIs6gz8O~iwD)Cmn*cpp9(tr|7v-fWx>PJOz(gP>Qg+;VJxecTqQR_f_U(AFIQkZVC8 zr3mbLN?c!7H+J2h)E+YhXC7vGt>@8rMjFiJD`C@T@ z`Z@Rg**&IZ))F{5H4n$++1EPMbh(1}^zdK-b|Qj^J6ou61!s%{a)d)x7c~eBX{uT# z7lxM<#ny?IM3uVb0*K!e01|BA5F6)RAD?n>59PuaFDD%1{3efm`!>7TuYhyVsq`vo5bjP z^qF*p_zzQ_=_yy3&IhewXPmd1bFA#P&3&K!A8FaKAdkw&d3#?4i_ ziw7$EQCH(OYd&?Do~W{(p6cj%7j1zKb!+n3^|J4NRDh;u;F&AS8xi~wVkUhBSg(ZC zfzMTd%7{iGqbQz>(t(Bs=~!pYhhipTCenTS0FjT7iM_#_fXuib*X_@~ySBC~7fg&S^eHHRpJBj)wmI4`l7C^2^`as4(l;{_|nE z?9%;-HggCZClmG%J?+<4y^AS#LxN5z9~NX;J;w&FyrCAI;eK)AtD3iaYL-y^xH+Zj zo&n+EruO$0m+AAZhW}5H<>f)R;Ka>R2cNYXmcCe*lTE=Dy&OZzm8SCk-eEGS(MfG5 zs);FEIQ22gw@K|ymH8nlM)9LkuNMW`o0dXQ{uV?)mrUFMh8!rI4NmYQ-(hpEC3~C- zSq#U=F9MG$Ws}N}9^$f2d;)~@;6M*xVk9xJ+!?;g#y*ai^oh+?`XD`c`PaX$ot@9~ z6^zNM4P4w)vWgfju4x|yM^W>{r0m5w%$QmZ~D z*7Tz=8uBF^h@p^@>zOql1WHR~K8zUtzSXpqlgH6|;(zgI?{FlaX2@cH`08<|>{pJ) zHH#ZRmAihbytvMI-t$~bqiPh-a39Rk=$^Pt6+7#h4&XP^KlyX#$Gxna65l(q{5W`O;i*)GWto*+^NcScQ z!0)l0D9S_9U{GMRfYO=tL3&;A+0u;t{bRSwP0Ku65{{3J-n!b+6yjK)-t4w{2fewz zu@)xosQy*FJJF+NAN?o!3+W6Kfc*5?x>>XbvK56 zQSnhG)tYg}_2YcuRqanl&KXk{JE4QX9;*Vu*;%?iX}SUTU&V$n(Y^N5A8y89+>F;W zZS_P}EwC&n`Y6j{`ire^TT=zQT{rY0s#%`;7Pz$qI zp^XE>_z>qmg}5WnRqXOJp@GWAuYPfOQOQoJyj`H^Bt2PYQ@pxV@Y2d3G zq8B3;-x!cNAR-DnI+ws93O^90)+{C~=91s|DOB_qzU7!pg+hFFEpFeDa~|SV zs5TzlS!(8BAs%H2D^W5gCC$f3)T1G{bZWi?LxxMTVR$f+a5lh!fl^uofvom6Eb}CG zfkgcz`kNIN>KIJzKU(t&q7|~5{UgkJ{+@#5YSj(0pXgt)__BS%zd9gQM~kj1tAqbD zM*Ae{mZco))@CU!!Az1M#7K~yqZa3vmb)Bs^LpNeyb{hYv^Z#DjO;w3b~zNYWTIQ{ z8G1tq!xkGw01{w;9gDa|ADkbHn-9~~GUidCje1=ymV34Q{*t@)mxBKJ+U9)6v|gG< zZQOObX5LEn&=xZbKONE3ozebnXN2kKzR?nJ-`DJjukO7*6szAX2tW0+EcY+nGx%0%PJj<0d~5X&q%@^rE#d06{pku%?csOD&E^uAGTKIyz5Pa za{438DB-ILQ@`JqeOp-Fc(pdPcr-VyL2D;S12ZhZ&Q(gG*l6nAX!9~B6%b{LQpnyK z4n$|}^DYA1?;vPK;yf2HhpqtHg?q~Hwtm3SF@m8MnT!2Rp}%(HAjB{ZqR)ROs4o4p zT4FNp53N_Wgin7bg>OGk$fZ0)5YsvU7gd4;*!YwmK;0P{o;?tFx%eJ$fz!C0KJ8QG zXyu)DuqD8YzdNfFzxd?2R`rsXe3PG1A#`2cl@>+ujn()DaVT-#th@JHe#CbJ9wE?b!UM z{BE(>+20{siAB)^_YUL~96QTd50TAZOYw}72F^&1yQUd9F%uDXQqKVU`7?5m!-D|{ zJqY{ifVef0$Xw`Z#^gD&8<$nsY%l3!xR5abhQ%UW!|zOl4}Q+|ef~TV|H-Ja{7@^rnp9RZ zm8!72RQ zfA@8tM`NGyJe9Y$r}1PsI*C$b`E?=ySIpPPjV26Q&p)B%0&l?~*t7SdACY7%JSJK~ zUtfR?;t(MyNeHHdS#6YOgEARMm0tDLntG#M|ec8*@=O3O(7-AglZwg>N z(m5x8&Ha-$A`35e_*$`TP+GwDTIQ}n$e4SxmLjb_v55X+_P4IBsdfu~`ahui&n)p1 zYbx|mb~?lGKElIYyQMkw86|gbOZa%o5tFS59QRD5smdI%Gk`nxL>C#uhGFJHeIyV+ zM+O4y0H=iGWiQ}cYm6R=`M9j;#;glkTHF4ytaYs}lpeeFT59X<=atXQLBFjvlm54< z5c;i08p26HtpxxkF!JEy?xzY|aE(^4fd2qqLA z`lSz>yElwV|Ca`wSK2GtyxECn`{)1tW>I#g|2X?j_F5rWZ`SDs>I(J_!w(u7Wp3^d zLVsI*OK-jUPn3zu?dfYe`#Zp~>09u|a?H-==B3NQYg4Ug*7E9$DC3NYyz7TwXEmsgF47j5JGWo-U zQM)v#I$4Dz&mbBLB{eh*a(Z75?b5daA1I;8mQ1qTwvN;BkBgniGD!6p=&T)WJb;s( zcOLOy&5 zrNo)W$MGNuD`h=|fbdr~B8024LG1_n7$qSL1L}WMqhzR3GDHqC#yZEcLXR$|R9pC! z{d#S`o@1W;e!RW6X5BZoW1~D`ao!-BqtF~`+EKy^<{E$fKv9n>dW+en_nzXz0P8U|84sG-Q(Tdt|@oLX`fc^ zfX8_fcf(iJsv7~L{(jXJhGyT`eloUP^k=tyO1h1L<$MY`7F*?TQ(Z0>0M8hBJ`wo@ zqKMhpEFgX`Qb|Y%3oQbqKq5kf;vVnwf%*mTg`Ev^Z@G?E@H6!Zzf-)ElRrF`Sdg0F z);riI>a0BNX(Df^3?**|G2~nrc*6M-s6~>Y*p=cV6H9tXjZ=_CFQ$yU*1qetD}5(+ z2z6oDe)0F~bDPKJBE2L)n#5kQk5tDK57V4A@*WmOONVJHU-A2@BwqmqJ3A4!%9~4(fEFvP-VqznEr_ z{t?x)G`E;K#87yoEY!Hxnlay6Y{jdoGCP@?QJlo2h5znBc0oALAeIXV90ovE;D`h} zAndPCDDV52XUSGXvA!%_9(3eTI>Mxk61YU{_mNxKRm|LlVz}oVfO=e^G=~>(JG!ytmuTd?oTZZ@?lu}viQaBnd+{Gn2%@{^qHz_XKAhzmd=-MKy;TG8FvP<~qUwi$>a2lT^b7Acr{_pf3bC zxpJk1;HXmrdq_IYE{zQm8K$&H7ogg>p?!VWBYPa*i;WQ7?OpQi9Zt6 z&sF&jU&~80G2+ilGJ*6B7$Rv+8b7P6jN(LxC5xIa1U{^Ek$28dKJm7IC)A_JAo#HN zmec92jJZUIcYA?=3V{}W;mZk`RjiMC{X;~fLMuxXWJlVy&ZUjb?o7OwL{zjsXKB`x z+GocO8{gQ>LcThFDM1XMCEgtVh0#}HU0v`zp+XZ`NE1jj>eghHSPxY;UJ=G1$U}VW z5PsBlMzm@GH4yoLC{HXYP}nBYwE_zEQ>*>^`8`D3i&<1kD9uB%HTwXUe$%dsAmV2UJ?O;arl?FhijE| zJ}@a2_4TuBj2=YURZpt;>d2nW@7|g@x%FxuSql*pfF09DqMLK@l<-Uj7#>2)+nf&WCQuGTe)fWhsW}Z27tJ%qk?)KNL`>*8WY-rP^ zPQ|jF()d>0MjuaW92a|z*pJbxIO7Q~PpT?gHyYJufK-wq%&5h1W!R;?3>0L*ndPDlG^DO%l?yzn@m}}lNQ(VwKot0-W|qA;Z~+noe2fSt#( zyVi%gv!8hQIT%vTmF<|7&S-L!L0U!tLYoTX$^3nh(TAV%~+#j$W z=)bBX^1|y-l?s~o6X=#7#+UmTVJj^xf4bB?{==%C4e~l?R&m4~-HMn9_i0VYc-}l^ z921?E9uTzQ$?KnFT}D$rQz>K38=Lp=;VJ5AAAB!&;D>a*!1oR(4sk0Nnx{RR6zIfN zS;0~4{)O$9d3>=ordPf+d!Ww%(&{bU9(ljL z4KKS@^2{yZ#Y3?cMZR6p{;uw3q3~$~~Fm7}_mXHF{%Vexla1y2k1O zig(h`(u?T&_$4*<)!;^p+AUq*@4CMBi(9Q$ODf|p+a%6o+13)rF}{$*PVXYnrjJK-V*6 z_lKtlH04w!FNCsDW30CTZ~9O{}Ncb_rrIYFE*h2 z07!QM-Sk$1>}{WjSX%c5)QKqj!}jSe%1t%-hmX1086?triPhdJ%{~)FB244x80E@X zG^S%^OZ&AwWqx6Zes|aD$SbRvX7$cSYNo-s&5V}%{9v}(=|TUBnBB%9$FYcqC zz+xZ6P>cZ_Mgt}Euz{gjpJnhX(BmjiNrnMCJ*3IhcJGfYFfKb5S55VF)qCGR6a|inL}+1T_=PGZTxPWR*BPWz5UoK zN4{#Y{{n=&Gd$|!|EzVd{F-iEhv@z)wR#EZiln;QaX97=auw|USq1-T(SM9Vrwd*Q$e>u{Z@${f!9$X`Ucp0d@r zrFEJ*%R|lf?f;wb&bG0bw|8OrzTS0@{DvsZ^o{XP>H5B4USAqmQjk6|JM2g9?w%ZFGVSn(^d5yD9lb;#d1Q6ES5U<~-{gtITu# z3NyDuOftV|=Vsr~!81zt0*p`!k5N~r@T2xYu^qdT?uk4$yo6UFEm{ee^l<_27fNrt zEQQZLl@BP_j!-~-S#K?vN9&x+-FaQ23=T=kJPQ~RciLCaGI?9p8FQAj|6DaXDoaUmW(QI~0n@MqRV_&p;bJX;gRUMA|6 z`+Q;*^QnHB%((mdUifzGKuTGhN{cJbc)$*2a^W7=Q8{N$#!DFIJ#Q|Q*a({4+95!; zWC-1$>|J{lS(6bXw?(&fxET8HTt!(J`&A7IShUhya>yL(W?r8`XnW+*iMc3uW77vu z`@}@E1Shkq-F7pdcGW(ND(S`4WdxY!ni$bgr|Ml77j`qc?=Ia$dR8l3e}B0_`+4`m z=Womw_oCyERzgDi?_B)xAFym`TzL#3vQea?0YMjTeGI)F(dhjMZ7cYglZ>JpmedrT zKwv0*`MJ){lt&7RCnAUY^z5V{-WYUYz=W$M?FzP74U%6+gQ&LcmF zo^acg|DW(@*a$LFGh@^>_gR!N_jPL}{e!%gRH%gK1l(CoZe=o*M;y{r2Sm>ds%)z_ z`E(W0m~M#lA#R0NnArU+da*9j@xdi0%2($`Por(MsbiY`YVx(-PhE{na~;*;8J)7P zace4zZ(Yos?hf@W9In@Hyt!lY@n6_|``=FL?YrFNM4f!8pXzwD*HdVEP%$_bTy-nGY>b!CDhfg@OAmr!YJM1%Er6fTV_fsMNYxALh z9?h8<9C{J3)kQc%4uxQ1th1z~72NA&q@{3URsPqKgZ3nDLt%p808m#rcHSt;*&)Cj zZz0+eo~3+r@rZP>$iN)Z->F2HcfMAdHHEt1EON z$)F8rZoegp4%ad68Q(2VEkHw5m!v_Dk065#uKv4odt;Mby;E84*YBOQ8I!L0##<4` zRZSBvb#0%-*Itqv$-XU?=~CNNaFH+15JF_e`PFz@M4gj0JBr zJ@BL^NeeVF2D_gZBiKXsA`?-&-|P~d$lp5t}K`y`=MMG33Szw|HU#sBB zlLFlpa+M|0IC_e`c;d(3!Vi2N#gB$q%(3IgtDjYIWEWUpE4*BdDRSnNfGRaqd%iRW znG4lU1!7tos~k9!e9vROR=AK|WgB>d!7tCtSKQosU2ER2d|e*Bos4EYq&um2C2EE5 z`gXx?hsULM~S5G5vxu*ZI4&hZvGg*U(vq!@oYZv zUX@+4p-kjk-f#%1PjNzMYSerqzY}uEO>(7}7^(9T_}_WePG; zk6I*j5yeIf%q%--w}PO{k+Roh@++oy{sSSx4b_7WH3B#OIOT8HMxrMDKa_jUKSO3b zDU6IANPFN+)@N&jBcQG~zTJ?}d{6xKr_$6gk(&X5^W(@%x;sO?*v-OcRydF1i~{@J z8&}UNvNP7#hPJx#t0%AX{?huhVyXz;%ESMhZdk6{Sgzohez{3ibqK9KqvP7jzvU#Q zV>jxnm*11(VyEhW%bI>o5333?cpAqp_4-okz;X{oJtkTS_JGjFen56?ZLQgFAwEob z#M8-0P1$^qr|qcZje%rUZOs7fJLksN`qY_AcK*zIv^?^JDDQa^C%H)A9Xqt?PfJ9# zQDV4>*e6Cf4Z9N*pjVfvR)VDVhX;2TYs9G*ul%}QlhMhdEmHjbmzs0T9y-ZgWRTMF zj#X_GeGK<8y-KbQdBKZ<-|YZsgT=IjwV|GkxIBi0p~wj;h8M`ML$A8)*xobuEbh4oBK)P0;1XzkcM*;Q_$ zy(+ud>~$-$Y-&pKQKom+qp@|Z#Bt??r}*t-fqk2EF(q(icA@imcJN=>tow29R^8ay zf@l4U&Aoa@tuTYIgC$wWVN(a3|F7(y4?Gxs`4i1wmt-z8WMnXa=3eP{hWSt?NS=#` zp;TJlU>J9Fa37%R*E#_@PO8;%zM^Uy0p&`e zxp4GlUSx~_)Q-y?Jp>M^%cnqyE*FflToQ&(<1)YCM#*mUTjL|aG1zy?DED;R@~-}V~%*x zY|Ykr6`8AXF@d~NR#p4`=ZQyC1WRanRWJ-Y8z*NLKFb_$O?)a{XDd4&aTK9?6?u;s95b`)$6yIoWxLxYyAAs zhW*{bm>7V%)Ra=c$W8~W`p5Yym};=t-Dc>?l@*xdC9Us=uB z0MXr*_pOI-S`%>+)>#^=Dh?Rm_@~s+^Y&GZ&97~HG%{JzV%|9_9%E)rLwJk2fsL$NP#`LxY%SV$LR^f}n zhPd9i=Lk&>kN$w)j_9V{>~rNgM&WfJAqlqEio+WL;XOxmi*-MakGrO- zbFfKq(Rec6X&w%}P@Ls47y3_{tO>Q&mrZ?4A;)kP4wQOdG389B&|dDd%q$QkgLaHF zJg!gH@F6lL%`|=BBU7L|C9&BBVL+9kvL?pvSLyJoKVDWir+@d@nt8ngN#L-Ol#no| zB$*AGH*cuju;xjxU72%~<+WQ2p3J1fhBeVO?-!XJEnM-Wvh}!S?KMBz40PjGcRtO%JDtH|-S&r~iEGVZBnl|!;v{%z&^@S(Gf>bz zW_sLK5icLmP&iz6zQua>vc*xeOFEQ|)u<`Fy^3l6X7j(f(V{eFtB3lL;$FOGe)RnF z`bTBUGpVJxK)PYE#QKD6245wTa>X(}HJMt0yy9>k;jXh&t64c}cA#Y5sp$L0U;bwJ zfXNvW8M;rDOT)iad|JQ#!uo36v4HUq#?>gbCyrFYI31eez-J+o` zFrP$<<9gm}c-^0xt}@@nfW$@+C?aSGjz+cT5-xJz#o8#?Sibq(7`rgHcrU?L-h1iR zzYoFMO{yV(D!d+P{jfseG|7T7I3y@HlD0!elG%99695i|iGW(N%K>HC zd)z{}s$oKBoukKW&E3m{kaRLQTu&?73-Zd-uRhAIDagr{Sse z!QK~N827Slk4R}htIJBtOk!}CoJ_5jVKKBc!oPnw@MST(gGDd)=jO}g=q(JLD* z;yw|&K?OGsSp!N#K;ScjXNdh!w$)>*}w!H75RiFw;EdL6$(;=*tP0`Jb#6 zR`YfUesk16fi&b`qb6N~ig}n36up|{k=;0!15wtdBo2v|m!tN%5ax5&3R|1}n2e2< z-6v-xZ!p3}1To5%&PX&w8wUxO30l7tlCm!C?{^tkq<7MZ8Z8IT)zQtu)w?Rhn*Ri@ zfhik>XC#V0s-t}mNKbn}ptzICFmjow7{0|KNL{X`0~ItH7BFnu_+;ai0^UScb2yzg z8lgouEL`Z$smN~JdZ%tT9O4&H7v`291Ti)ytqn_F|WD>*fVsardQJ>F$ z^s4(aJ*3^jT+=dh?9>9pPEQ3rxMi3mw<;N3QuV}RNabFiUSslMT zHOWfHVAq;4k;$a58-I_h)#yt_O{Y&;4;%AaR2erk1_~t!=p73K41hW*=ImC*r) zGIq$A6JjO~@Vl4}ChTL&o#XZPZ*xXALIXZetENtEhPQt6%F)@`crCyO(@Zw*;xh9XvAV<-rd67I*!cnf1pDXp_{?Ipn*z z!TI%2aW@j4>4Eyc$U3X2ING3F5AFoF0KuJLgF6IwcY*|W_k`fVT?Tgz?(PnQ6Wkfx z9YX&3{&UXN>8rV!UhD1dx2n48*}FB>agD1*iqE&8U`TyqMYu|44R!2iZ8^(J0TvQg zmsNe&u!eg40(1M=>S~dg!&DC^DT@l-Y;{|r-Q++63-u2lgi7_y^4X+5U?IhrXovVsMHTpwvCNP*x1U-GrV)DHFT|LEcO}=8*b=H6wCK zR$e;vHqHouegf42WzN0D>R@y5sZp!=x`!8@6*89+uS~o2CAWeLhF@qdjDdiJ0So z2ryA=$dBkR`+L=&z?7)dVEs7?T5pINc=TsEEj13PgY2i*$i*kTN>@T9z zl;*-O*H0aM=c~YJc#ieC^@aFVn7n0SE^93&z?9|*T}Y(zSa}|dn7NxON+1-Z#4H{V z!w9MSRSHF6T{B{;Hd0YJvp6+cSYMm9L+#T~}|FTSJkLGUR$bsfc8r zl934C6qRadl*CIkTRD$Q{#wzpx)oKpC2qeAHQRjq`zVx_&pb~;p<^*xk(8u(j%%yJ zHhpwh{cBO$f|kj;yqtCjUC}Gs@>u;qS&vJjENf0|F&Lz3Z3bJCXY(sx7uFi8V$Lg8 zXHLc70~nm|%t7XF0z}B)gnImj?p@{^v-$3y*#-K5xEijjDz`mygAJ39##$^rVQk~*r|}!Sc0=(J0;QDFbqe_0|VW0cW`JfKHN%vo&M?|0w0y6AR#AU9RC4b!Q_`A$> zTPZ5FG2ri9@6~eZlZMtHIbtNfyxErRVcJGS3Q@|_E)|Z31}K$fWdIyE$y8j8Z*$NF znT~p|*x+yoJ~swzJJekOTB8}3< zv%7s8Zr5IQF%m?2r3rB$2ORR(G|0vF!CIj`k3u+3lf8Ci2Hij*nR3|_cHc^$RVq^r z6c?QuZl~gaoIs3i${Sej#>=OqG&L7BHGxz~pwu!A4RbNfFJ`uVfL?1RTZsg8*;!1r z5)O_=sfx)W=$1ttZ-UCrRX)srMd9`YS^v~6hf1FR@4``S#-Ztr$k5PTlP`~UwP8y@ zK`v(ICe{xuH8wledHeYMw`1hD|6`1u9<}uVb#-T1jm1-{UpMQv1-<}dxm>HK%`Di> zxOiwxUkRf`ah|esBqvdE9qs$~2nVzZ5*DvMmm@F;{B;f5Z^_@H!F7{Ou|}Lx<2HAL zQbq8A*Kc3*pQi&_=I8{UU+U9xzu-${olBQWOiwWZg}Of(3^!o7oY&YHVR|txb5G=c z*FT8Ngz74mG*X+?4=NJ1_ZeZC!uV|i;SqvC$yjPEB<27y44{UxdO?1m+GiFRCCcM$ zLLYSxJEv07bR_{;B$hApP%;gQbVB9C0G_NoXiI}kNk&qc;ahb{@ljOtMyd;Hu!bma z2YAz}CaKhI!TUH$uTu(Kf={ja69X6+=_-$D+t})}TsS*1PpDzN3Tr?w?8d+l&6CJG zUEFT%MG!{PmrLlW{SZJ14#0fMpBiJ)C1C{U;wjWYHJEc&pC%Zr8bz1o$ldnsS(YB{{uj-wHXKYLWP7- ztrivsf~G1AGXOf$7tk+rG;C7e^MiCALt0HeVltdPT<^w@504sJ9F1;0vaJsW=0BkL zX5lBH;v#GD$lDGcluQX-)>J0dD|w8l7GY}v5~+1jr}twB>PV)TQMvRLrO8mI-h=xe z+g;_RLgL|P47p@JhlSV#*`U*i*d2HO_;`C*oB7~AVxM2slsQ_(3#r#uuCZsheEw1L z+`;+cl<_!yR;$-;QABLfUe$06Atbb7O>ZPPEU8k~2PNdyY1S&+{3-xwv5+{!5|!)1 z*P^C!VDa0TQT-}76{ga~0YT$ca_8NqP$2i0#UK+k8KeN(vK5yiA2DhiBnR1{gIvd?| zx=F4sKkxSallhN8YDu{wD-uijX2m(qlL2cd0mcCXEgFkzx#c?%q^|h{Ci`@(%a3W& z6@xsSHY8G*Vm9H>wtvR*PlAT|nXSwM1hvo3eI!#^Zq@FZg+0BGLLGd<{{TqGa=%M? z%!w`95L~eXD0u`^%Ix~z5Qn1Nc@=-56&MvM zfnp1#?#DO1=0$WT)Z}PvQxu4xk2Sk|kO7o+f^k#DU;y+YMx4T;l=HaxEUSE;=647C z&as8@g?S8~#|~#_W%G9#+&UUZ7BS>$gXza#e!%IZx@%kh)`Ls3;sw6=v?x!x%yD<# zM;3)=MkY{BabaA~6fM-qV$g<2ndF3bZTofcv$zkzhqf-sFALPQ<;Twj(&mx2`v;^? z+=NA@c{g9CcC&P^W!ut>yA^n#OXYEK6AF2 zOwCK6007M=`do)Dk8fnUF}GM=3sGD>@v!#cPMOjuF)h*@j>*```b zgxqv))r>0_Pvj6~1=f77-#AlBg@}|DCV2Bu!Ta$L(zu(K%gtqJ>AoLIX4+?^yf&>= zL5QWAUQ`G8q+uM~Gu=?xF?~68(QTWil?>VyILN-?=YM(T2Dz!PeVGT~O4@{k213y# zM8Le*e9Eu?v}ZGY=rHTX$|c2ZSPCd@7+#QzhM~ypKr9Kw$b6hSI4s!zeG$n@RY??a2~bR(fPg~e)t!}DqqGJRJ=4-sL^hLlqI{n6tq z;Sao0DFaair`+#uoai1if#v!6$VHMR7R>?!^jbrW)|6Z$)&gC*glorR zcysoJBr{x}Vv{gWlbjX$V344BilU9ytd+n%&9I8 zz0!=efq5)0AN_->_T#9uN@XR?(wwW~bt^%&QO`X?ksm*D%lVH9*$wAT4v$hplpGcZ z=INy%(s6<;;$pCQBZl|U42;!RcDOnX_u?09l$q{Y^=%AD^XxV9Xzw! zfSRT`pAv`x=cb;=0zU{s{Mlv>&kF>I&BLIsLMaudg8UW^WyA6cT1~z0;Iw;Tj%%E( zx&O`AP!fF*(1$n5fKONTB@YgU#QJES)dF8pHMGK!ww~YTE@l)?Pv5Evn#vs1T2$z+ zS9Fi@t9gxZ1?dSx@4pHf&Q{rE$d7Je6a<32vgs{$I<=HiY?X{jQdp=B@1oba3t*cf zsaf5W63)E63%I^~xAO18^_H$n zP2I17U)-D3tByW91W9KL8M$~@N!L#KrlQYz{OP|>pGa%S)tD};sEC5v@KKx4C_Ro0vCw%k_tb{o|nPW{glT}m#gCGM36Z|*f9>b>fZnS zP9-PCT=8&sY?(~KW{QrwurSGev4Rzo?7+gLS^(sY}-GMylMla#@CWOq{s7UrD!@>rVKG&W4*wYgVE+LF(>q z?Ue;ACA-r{N|h|8o05n((S6!|>~D^z7d7;%U;^pVp-(IY6o>~vp?Uy2Vi2@AtuBsE z18@mbt`u8U1rRpvymYm``-31W?C^cSUZ}qhDy%ex86JR%0lKTr%zpFCFeosCSCZi+Udkbf!8y>OH#e6g-YIaH7pAye+#lcF2CZm4J>Q6;iSa4Y0d5 zzPM{;U7CzQyYK{dQ)?JB53OD3t~)CpOcM<>kSzgDY5l0Q3UufzF||c?LRfoKHZ38i zcvxo>Y5Rc{op6?~mehFf|6+2`fChjG#MA|FK=&*Z!ZwFd(1JBhUyLiwtN@oCLAtZL z(Lafd(#9LrO2G1iM^_))ST-a(Cpe)6uB_DZ^NWqJCp zemFHTTDJCRuYmOA%aUc<#Eg@n@5FK`b!-wEQxey~>3)^L0_0X$g-vZ?=8rtIu7sk` z&^ta44-MbY&Nb9Va2AiQ5gtg1vSOT;eQqamiR2a9>3_5&5GY1r6J(FoFE4hOj41b8 zA!@;JijqcZ6tZI(HfK{?6$B3t1~t`EN^*>>?t)=s=Xp~S?H)lU3Sn=|I`#) z8Vt;e^jjoy&!35eDVaR%c*cfQXnN3A zZ|sog?4U4*-fF>ZehDEyq52f}bU06F&*u^8r*-R{38K3_NpVV)o`!utBd(vtY(n>A zp|;Ucmil(^X*BDCzzM@pHp&)6e_?XNRx`H|ovz#WcK3rK%ibAt?~sfWn8HMDPr3|%cEGStsu9%>>8-MTy(>Zlw=b!4Bu z-io|G_k38p<`%M$`8-;}tZc1F8whn~!3BtAYwA-D5wiF9LK#;O5bC-5YYvzuAeA~l z+}2R_NNRmHil3xDJ)PrFSC~07c+hyNW(`7 z7}PJoLHEV&0D9vOQBHKT^5C$l05(BTLkE~V01USxvLbZw0E)p{HNivag|Vu;c>W%C z_1yNi=*fiN7i)&!B+$CHLT^FRi<4ViQ&tIxJd>ykZ8^&KGS?(k(~fEPc`4drXs-Or zA0?$kU{35GyO^`<277KRc#rF))mwX~Y5}?Gtk>bQ!tl`-QJl8gEsU{wR<(7*8Ne!4 zHN)I(gABffL)h~Y_#+0T)UCVQg6ZsZrg=rZyWDS5z7o(Bjh3VoIz?NpHRCA1oUx<0 zRp@k5ir$6C)8@1jC(T@aK?D4_++0B|fiEYp6qh^0z)k($ZluV4NimMCVR~V#)Pmo3 z5FOd1{3mqDFiKE&rE+wr1B2KI13Ip_T%@h)+1`DVND}Jw?)#79&aoPh&F$GwbmAgp zc&X{2el#pNr3e6`yzS_JtLE1Lob8_f1k&su57;+Uy9*zR;oy%ek#+eCugvQ!HWkUW zAQdw1cZcfTlhIy&{FeFUd85{)ov)mT8Iitf$2cd;!lB=Xx<8RygJG4rwy?E!C0vf_n4{-VLFECd zCvemMhTwknK(}h8J`JtpCen1c@iPTBNwU@h3_+7^74E*4O-}0E?s{ZQKmGwo z!i6ZLaM0L#mL%KN>Xv6D!qCd&v!gm-XKAqFCDGXfl9yc81mzav=`z1BrkK@Kx6Bnh zDhVob>XT|?9#5AnDJlTNzCusb5hqjzp!(<(o;rXUP=UzbvH*MZ4D*Q-FX{u1-xOMO}>OV9n(eKW#9 z^ZA7)$TpI6qmVlZ&*!uwA&4S`@l6U5OAbFpZsKv;s<8dTndykO4YJg&$+Ke+mH=8+ z(_0UO0G%lnlRGZt+E(I?^zC)RX#$xd)lEt$_UVh)B#K{Y=@X^MK4AbnktrmnP(=6z z5ofVm1DF(ozGX7MpJ0IuGdd^f;_X&So;(tT5@|O%lqqs%+K0h@u=}>1m@Xq!b7z8{ z?1jdl=kQ4@jWi%NO%4crAGeAMpO>RY6Ou$uzvzimPVS-!p=cqqYhzi<;Z8KtWdN4P z7#uZTp)p8oijxUVr?UxN!L@m1XRa@?%0ja40`-~=T*qGi0Wj=-QXo?R@**cqmL;!a z(YW4)8gp~E{F3Kv9Ar;cIfQ(-MZqdcD!zRUuXZR+n+Ok2JlsX9HwgRpWAW*eW5D zmUDCQ6bg%qI{N#eat%i^OK^GccYEnrEz8r13lhMhOvB_G^5%t4a<^r2I`{FBg4 zHdX&0UjXqL$S~P>NIi51o%1zVx{P-~$TADzAo_5wxKdroi%7h*G6o)jX6^vnwgyWB zPMBMDXH8D1lf-x5dt4;fwR8FOZZ0$hOa#tnD$;R3rmB^IVQ|S~_mu2FVvPLwMnQ9n zj?Z9puWp*Q<3MO;N*m?Wd7^SN@%t`0PSO&PN&JhYN$zpvo4F$JDqeY%m$bD`K__R| zG}QZ4Q`K}5HtL*V6kAi*JUZ0>w$_C|luTUV&R_ZSz2&?Ps4^fA*P=+b@PGt}+%;SH z#|r5Kj~yC7gch#@1-a_GxkfyRSiKJhscAqq%tCa;ZrM8bCXw;1x%2e_ua+rEwlIh- z$5HiE5`2oc<*;=NJ}?u7NgLxpOrR3X?NRBjFDbEU+9$1_UCC9UaKHX>XM-U+l$`16 zs>peQKdE^6!|kUVlddNWRLF_qvO4x1YzFt3q-FZy4FqBG_>_uZL1kVz1HT9E-oFAH z|L#o_F%j5}a&emqNPb*@f9ysvt%UsUqaR#iA(sn7PI=nTL>ke-ec5purbJur)7E0M z&6#RY+g8DKfXnz)hyth7a@AE*+2;H$>FlIj{LTMW%1?>A3(NxL-IFt>8-cCDJIgha z=o-q*dqV#JB`bj%+c;(+CF+@4aaG+4KaBQ!lDuxchOLD?SgL* z?J>?js)+D^*yGRes0;K`En3}VYHo96p>&G*E2V>>#X)d;yHfNj@(*xcVFPxGRNcZ}zCd<=+m+k{e37wi zA#r_c*rX+n3Kf0?3%kycZhyeK$xHl@sJInwzB%jo^<`2?nT-40BQP8wY8v^$m-+my z{U}ypK-#3(z->;AWGQ@OZVuSNJ8`s-PdJv;&J?stl~Fzo&>x#nn+=! zVWGNlz)fDG9|8*%r!9+p=olVf5UgTU&}`GHscM+u`*kUdG!gfGLFS{A*%&ZJuj2P; z{&$XXA|Vkyfp0TjaRyngVc}i$V4+8S0PbFr6c-9QvRTRN)Q_K5ORj*@a_L z>`Wt3U_ktsD%)kg2Tsd9`}IE51A)o$eWLNJbk~v#3|~f#r+xRjVBdxZ;MR1*(y&wf z0OOOi=L^8YptHd;FCgF@SK zH=A^C_E(_u6Ps2{Ih!L`^mZBI34`J#LjP5y54>VXLschS@{p?bOu43?FphKfv3EFAZVY%gJ=U&#wOfM?K-bSG8O{ z?M_uU8w>CS`zLa}bwjM5+oqW)$8c$mZ3;O*xI_PRvs|X;Q~seN(9$J(PbBEx2A+N3 ztw&Xfq(x8LPva>g;B7t1k9tQ~=40$OktlXp(7M3Ts_AyjU+2{F{UM53Hl62i1lxfh z>{}}@&4ckB{`g+ z+(xQMP9BxCn%pBEFv@N>60+TXnu~Oe+G25<@1$|-hoBdbNx)$(cM2{diyl6=;06%H zu7BILYk*((HAm*p%Ob#V_9T+}x)(F774ZTDw8mGIMO2krle z&nHXJl+XtZeD7&n<4%yCA-iC$S8oX8`9&`Iw)Vxn_;Kx=-6=gBvCt}We)KTP-i#Gb z65E-DacBDcZv*^K-Rm`STb%7Z(;VEO6bZCH!RzHH$q}h?4I-2VYt49e8>XAz2zf{9 zcJ8L|4X9dWloS2=3Ir>{e_!s?EQ@eeS~(~Tums`+@U^d$OZ+^!9Co%y2{l8;8o(^U zVu<4Qq-1yEuR<67a>TAewn3lW@ovJ%I9it7Bu8aH8N{%c`?V_pL7|2n%jIoPFE<=D z0M5TC0V`f%3!q*cRqV*fzO2$OL^iEjlCrN!{|`_FIZv*pDiC%0BB~KcBD_*qd>4$^ zR#5SjKjGKQKYV9BfaMj-PS=gd&MIj02&X$o_WVgNFujLlE$^`yjBs&-cJo@zb&_o# zLhIa!ik?PT?)(E$RajyB7XqR2>-E+PTTr=@q^G&qv(?rD*3lHHaWyaunONdR;|Hy1 zzPuftT^z$>tHysh&hVRykGhx}BLtd9_ScQx4HzgFhV*N%H;H7neA&ISqF7|G z)PVS7+5)ih`h~+_jCV_g*weU(*Mpg(QWehS%s7OGS9B^+U7}{LCtXfb_`M8M$60Ms zu@OFALF*+)*4}UYV{sXFb1l9e-*k_{73%fZBUL{>(al!99#jWZu15nsf;e)|v!LiG zMMHQXI_X4Kv(cxOushbET9zIr>;O$ZL{Rc6Jt%$ut2jZMI9P`+lW@Ofe8x&Z7i;(SPPaJ()EG$AI_IPn%BHl+#&C>ev)#tBX!iNWH zwNE4e0Nva9h1X&6{{Uyj+lo^@fd*2{~00J*(CHZHmRsT{%DoBn2% zu<>B{aq0=}#vVdciT=GWH!61gZCMC6uQm>AyM*uFg)Cyp(y&GaqMP zE-(&oyboEfI&NMN^5S#$8%g&zZ2@^7Fus*}HDusZUz5S(p|Q+3o%~#^->= zV40!SSJ(6(V2atF9djpHG}e-)4kev~TI(yz^X6I?C|!g$r3$u-ld26_;>&TA-?y(7 z6)<_zX0A97<--fTgSd0VoxVI%_NvJh-|+^mfVD#mCZEe$85VgyxA8k7&~Dk0P)Y{& zy8b=S`ISlPTU}4;j75G-v~%c3Rl!kRo}#Z>c=Napbt9QdsUN(4UZ32*cxV$hj+=Z;bWiiH;=?+}wm66>AiHk5Ss zOAC_Xe*P=dm<_kkdg|(FUVqAmUCV#)El}g#sjZ{dVq<5x%F^L-NhpHz3P&@ISuU31 zC(GkNL~qp}6?FPl{5#&oDlbjeICF=V zz1UwGhh}M6Pe$^A`&SoSy)NP~W-#fJ6nvNkh zO`GY6DUBf9i&Ey^32Iht!92*0+y_HG>|T{yYCJ8Z#9^8lih})b&Y)$3dR8#%E7yR? z3GtiiE2 zgt92!)3{~pQ6t^8!U`^^UBu6JJ;=Mr!QDcY=Ivk{B=>&(J#?~p>O0~~6rO1f zckQi$$bps!WBH{Ev#&b%2YV8d|8=%jck80yaK{c zk(jK82Esc3+7^k$Cl_&DGTaLe+=v8g=ID zwEX6lwoW#r1ggtjt*Po~Ws>f4@_UcC82QS%IgM&~L9zgZiNA>g#`z3{H$1P=3t5rh zBi_SzEJaQ{jI~=!P>@{Iv2J1+7&=FhUfhzRsg@fiS9BB()93uThl?%cnEcMu0;R3& zx32y^_U*xi6`G`FYh0ZSdZ4X5G%kS8mwiq8@B?ppJz6k9iAxnid7rK&hPZ6j%~E^* z?5dtpU2#@mATUVZYQFuL8G?KjQV~7BhcBd>M7~*$jk!rcdS{*=k0_yr`BEVbNASW> zf(%e(h+_VmdGw{f96s-;d?>NntcfM6C{Xnn0lr$Fi)7{RB-ZZjgwWkaBT?aQKWQ*C zw^~o)R{|upl1bH~yyOaWDqH_gp?Q?b0JQwJ;QR}T5=ITCy&|IM9uBO;yyybJGtI5o z=Aknwg^Vag(#W#XBdE4>Qn{>-yq%%F!In)N;MuflxYS4#Dbs#Ni~ORD{*+p2_}t6; zdkszwuoct@?ijspnPf+R#?#e-4wSON29-|kr$BV{8SPjR&L#a4iPwWR>w7fG5l6LW ztD2JM6ViC^OremeazbTJ{`owO zMfcLnaU(A?eFtDiwSx>wf?@9t*)xlfHy?OxqLpXP+0m8P4X-ni=U8*#A+Q`A|btfPxk-3CcMdloKXPS?`Gx`o6@B zr-yeS#WZI)zG zX~3Hi4 zU(2YWn_FjIid4BQcWw@OQ~F)dPmA4Pio(>h$MMlcoXrjMG1s$qG#V?XG4N_={nb2F zcMT%i#4l>{vNKID95-ocTP3+fy0$`#+bclU=09af{Rc>p_*lxI6rO+U!(?kZz#he? zZLw$;hYsQ~eTXC_gPgDAKO&izWHL4)MBsBr|ouuyyw@vGS|mQ z+aTq&$w(eedDkV5 zHf57EBSKme+rc{NJINR^dPB*HjE67PbM;e@(-S0%XGJi77S2vsdH4HROzbYXYQZT= zHws0s2SGf4`<`U8ipW&Z4CJPrQL)}q93_FFRGfR0#~>2D|9NCO?o6GFWGWc+#xag+ zUe?n+TU`lYB@`~B6*-mBLq4H#LHf+~mFDWNzUV)|+U|`3K>t_8=l&WQnX)yjqc_B=(6X$lcrvKMmK>I+~nX;sx+^zBxu8J24ng>7ITTL6p=sp&o{M>{(=uEQc8 zei?s0!H5R+8tq4~x7xxVD-^&h_{1@5^zA@)qi!7UF6}DsJ+ zKm?&&ThUwA(vBRw!xf$OKhX%%f(i=I29KCn^0v%z0&yca2fu!6Jvr5IKtv>vu(h8bcix_k2ZA2Pc#g_wmWAKhN&;cetzsiAp;Hnh3JP=-h1HaR zlY&gF#@c6D;9AL%rj*RqFZaeH162Ur50WU-B>-IXm|Q^Y?mn6i;`;v#RdZ8X*E)S))a%99I!2(_ zI+u;I#t2Z$@o{VoStvkPOAIf7G|?k`QN2hhqUAy$l_Y1sZBg#U#KXWZXcaqx6kcau z$VC*z!;g_6<@yva_?Tk3toI7lpzr>FlQS$NMLvgbd?|a}iaDRqLn;Hk;%#{^(NyI^ zy$7{9>5YL(C3+u^4*B)wCE*7z?D<&B zf`$g??@;dR>*dLZ`^1HLPlyBQ6gxuws+F{nTtiQrkV{#WP|r{=Z5{TFirZfJ@d>$2bD*8)pc)AuYs2R z)wCAxMX3LSrq6FI9nr^YBQO>{;4!iS^+y^0D%v{iVM8^?9=dt_kL%Fa4Y}luL*M!d zv60}sRmA1!8iuA@=r=0C2Hfs%Y%=_&C;KS#l|ibgB#L6B zD2m+m?`}mP)PI10 z`H^gyT^yM+rtNfEzP6K-$A>{T$<5BS=%gJ*O^SqMp@AeqxExG<;rlY@{ujUZ@}?Z) z*4v!B(Ba)6UL6RUmhx6(xBd5}+(cA7>kH0#|E zT6p!yCLQggx23i!z)5vC7yrddZVftK+z;PZ_Mq;mk;xpzu z*bvhs61hib2;bGRFRk1b?;)FTX=+|Ey}KqGZ}&JGx}FoY@Z*#+H97k~K|Ri` za#P|hiLVvR`BO)rz} z3J-U}fiD_*v1%U)kC>%un#W#IX8%N)64(MR_%zh*x{rWD+28K(iKkfuAOTp$FX=(I zrBx@Y2HnI4ixlyKF58_{x;%1oDblW%!Y4yoSUnYm(~`_81eTyl#(kBEo?;K29fR0 z>QsF)V}jWNU!Y|c5B$htBztt?J5Uzt`s(|zHjw@~>N1@2!XNMqZjf{K@V|gev5B$wU z%hnC}5NQBDV$2S8=7#yrJb+xQX)SK990-I#XLn!sb^|Vt;Da3HEggMm1WcN!;lH8d zmuy!NT5r#OL_&?b^8M??w>P5WvGta^jDe!d>zrG=#S|05z?MVcA6eRx5kp*y@qOFr z%`Mo<>67q2hi?b&PCl&QX~y>FGwYx+M4`Qep9Zxk)A_oF(B!p1D!ye?5^aNU`~kOk zqi^$4fI*;bz`ORGZ$PZdyq&D6K&)hJ%HER zpc6eI>o$jG4xg>6;Hd=#2Qj!y#*WK8`+J>A^op{XZ2Ciu z+zwp>WhYC`v5|u%|}(p07*mu<|ariE>JLmpkrb^;!kw1)iwzih26RUV#}R9lN1iqF%s9VK~1 zJ`|IeXRJvPX1_D{!k`on;AzfQi$3eXo8aVeWxxbQGA38bJPjX+rC8Wd)(C$8qoz(C zQF&mVE=3!l4|Q?p#g6alcmLMb1x9n$Zw*eu?-S|qE|mN9+E17({{FaC+VZz`3zg}p z{gfqK^!(||jLTplh2F26vwJ8vHGRT;`ONeWz}Fo}*>0y_pZvLly!(1UmoR`l`zOU~ z!}OK2!5jFYRwIVoQJ}=oafM?v%Co|%I7~@wnG(i7uPLHa=3*;A9B&`=SNeHCc+D9_ zTipE;7ch>=_IXUOF%Pqk2sq7w*de6$4$Vxo)zXfHQ#8rk(b5)Z@SsZRnBR`xhj^x0 zw0cr*ebX2oI}6<;_u`BJFaUb|ZFoDy^c{%~yxXy_2na>rXnvszzO6G#-7Q}y*7&-) z6L=-i)CUh_jK6mgxArbfhccXotGnH`ZKF1-?PxscT|>^L+@h6875rkSNXG)W9&X;V z*Jkl?#h_m=91`V<1Lv-&=RRHA_m|IQfpxOS7s=NQDfy3+io6SRqtuH)5;#RBI&T5 zSrr}HK@EoB>D=03CGd@C&3!%5+i}=V@pAE%80b+yEfLnriMmRbi1sF5FC z{>G)cUy?5x`m^D0@}S?U--_g0mKCPpI9~l}gFm2s5SzSD?;?2#m2ojUInMI83p$N3 zmsIx$GA3ai|7*65g;}1?LP(>}DcB%8N9YG|R}p*Fga1C#0Ahw(HIj}Tro!^6;RS;% z+$K}a1l)5`j}irF+gc(-9s0;Qx*PPD2U%-g*!1z?%g{_}o(qUA2i{W1r5jT;wwntoUa`1~)zq63cyXDP+>pb$Bxu}=9 z`vTNc_z&Tg=Tf=^57rah+a=asy618R_k^Wnx= z%*3S1wzT2#ru=KhUV!-KuLhMw=E{Eni{hebt31M%WD=iws+bRZ89vGQv<5oAIi(ib zWqVEzRhBkhq*G3Y5*Q6qHtc8^=0FA zsX_0RrXda>$@?-SOf4X~YNWKs+oEwl^#_{Yi4F@pU#E-?@8*QAJq) zA0Q})2$>DdUoiTf>U4zKvs4XF9X`+aA@ub}8}Pj}b*H=4DfO1=obQ#uXQb8t1%|)h zD&iYp5SS;VAhY8YdBEGuN9pO%QLvpp<)H3Dy4w}Ju&69AZDRDtjT!IKZ}Bn5W*nn@ z3Z;Y^&!M~!6nN+cQdmUFD}>Hy8Grl_PwyShcKe2nYpXSi5}TqS_DrZ*JS4t z$5+j#;?A=?IT|e}xX^1gaj)~My==Y4;`4(%P~@1eIX+UhLX@?%opvV(^`(_CSM zNl8r8xtHAFwb!1NU~a~=k?UM_iz|!%FMGqe*SY5$f?|gy-d;XNXgM9quIhas>$rG) z{nb)s-GK_-H30wRSKEJ`v;HtEpF@ABk2$Kc`86nQu_{qQ`tWcBk0?w zN^A_u&lx6KE$+V_U06~{#oba45J$UuP!++g>{I4yto!qE9g@Qjlry?DuXQKA){@~s zZgz(;H-8R;M`mV*+GW!Icsvotfw*q?!vb=uzajgOxo#UF0unFL0qMB$O@eOmlu{o5 zkBLvSIl^+jH<7;&qPF?*9IZ;<%OYUgm|6bF&rIwA|6{v?ogu|X9eL=y9(#@RXmO0? zBjBB;_u(rnHGZ)ri#BVu5>?Nf|I%OsK8%J*-MoFGv}O?(`@&j%T4pUFqa<75V-8Vy zW?#`dlus<7&LPkT8UJ-$y^)zAnxQ{Hwf>1xFnT;qkwHcE^_-;6b2fPEgNz>q4`WyQ zdk@3;FxkP8c1I98#2B3sA*X@6Q@``1CFjZ9*swCYu&L;#7KAS6UU`bzEFn1VJwmyB z{b(lD^>ed6Iq^hG;-LM_o9htG!4G~-N)na#H6mwebb9Ykv7N4&`VBHuB`3YNpz8JT zRq#iT#Wm~Q{hze2c3!Tp&(>V|vAcaLx~n!a6Kc0F_M04r}{NYx@%Dh4(VyWFwUctsUGV zh4k=pyrnwpWno~i7<~Fa$s<6vvqiG>Vfr&Z!$#PKnx)qX!w={K?7-Ot|W64#3c5T`c?^ddx7hu-m7a+Ut28MYV>BsHsf1r>fc2sPKri&0`|c}aTLiC8-dc%)>?t;q83#XITeFNI!; znXSEAVPxTG-PMM=2{sJ3&ekBNmH1|-_p(K#Mr4x;-D>gGx(0W32=O89RdyOrGt+Mg zgVZ0v%9#&WbEN~Xr@wn%A7ba^^d}+E1_y&9-lmsu!J2B`)Kv-s-v8s4!O_*aHHDeB zU!y8%NB^d#iYRl=zwJb?`@wO>J9q~zh1*Bn{qx@{B&493E*a_y4*7QSDFmNc8>N>`bwHW&ZpVeD=H_Fx`FaAW3{ye06(8n;un<(1Q?^(|<#8bvZ zRX$`IQwr~6!9C9Lv}6v(C#Bk{c~@}%2RKj%blg+ddA}hB3TfdQI0^fm*fzt=pk^+H z5!_qsy)QRjEm$T0;$AlkB$)^NPh<8hF^ z{;p?s)jei@2mkO!7SI!VlZWOglWl==c1xn25>tkH5w*iicZ{kI(S@QCLUq~c1vh)$ za99*)ex843!>>A*(qE! z_>Da92uY`5XpVIn$ign3+vat3gX47Tz%&om$r=|gULIWVnPCiWoNQ_k=iE77l1sC?%*uhRDWfX3$ZJAi^J#YS&PnyK5b-12MkJ6Wh@IqXdGDSX^O?M?fi z8Jv8;-|28UeABkf5oYhIra+i=SP-597mxm>5&s9G9xLiRlF^g+`c}Z@hoe zQk^@ewK!%$ww?4jjNTluZr^q9%P%b2{DC5$N2)(QjBAp8DsU}R0(v{czQVuo^Wb^M zPFr)|C#?vNPXlgOvfx)Cn7N2x|2dx^i3%Ai`Sxk1!h7a(Et;SETi<6FRUH^TZqr`A z6THNQ?E;1sCHc9ecPQ|NpZfi&$9ngM^JFTdgdP9eN+!xtkI2MQbCvUB~-Q3yi zR~nP;C0)L8oJPo~3Nd?r>EW$7mQ65Kd-R4yuvtXW|?p+?3||<9IRH*n8QgP z?0h2=OpbaL$;RPz5W8T<)QQfIHWC4!S!n}vo=8k;;|6qSA6~!+wFSXR41puprR2j; zWUqZQ_Xk+E5A=%mjDMK%V+e-_IpFpV$6D3`FTr4xp=y%Xbc9p@zn3#hHtr#;BB+KRjbawH2Fv!I=0g~ zN$=aB;!WvF9=hv78von;HW4r_{Y#g7!7pFvw!N5sf#bBArZNV`f#=LGxTeCk*)B4v^Jo3^ z8?1u9_Y^L^#NB*2+x3aPHXta-Ed6Vjjb{0qZz0q!LcjEbMfGRQS^jgjaa;HF`&nsK ztM!{NQ`kW(>t6}^qTHkRvTo%K4|L94v#gDZt;#r@X(@b6D1ZMMeMeNMkqv&WD9o&_ zCc8Eb;m7+^>4P75T_- z=_DUu$es63gn8v;ye*V@!)|Bd@c}eoVJk%Qut$#NH9$6Tz%@WjofdNY=kI=l^u_&6 zU1xl%_E35=>VAJ0@A25}BJm&I`hE;NEM%kim)rmBx6W-3)(Z$)Sot8#%8aA9I8MUG zv&>lx-*aI)RY#+{${~lU&-so*|Evpr30U!$_pU3u{lCbVE-3uhzzwxG20L+9qxNm; zlWxP+gX;#HwE)@Eezj7PX|UJioyZH^D=3|RJ9n~!<755?*k*|*tnyK_B;4?y;)z^+ z+8&=}ua)y}N_Drs2%oF`$q~${oK#U07lV*`de+Lr?uC>}^CUl9HsyK-PY?eeyCHh_ z9 z8S}3wX=e`>OXwO|=!nMR#hc}I@fk<1zX}lfKXy}drH!Gy9PU>7`hzuiu;WN`b#2B4 z?{IV9eC|R%%A1l?sGRz6} zxzPwp?r7F0@#M61J1_vD(=bkFPdf+eKclrM7aN-{@kHXV1 zzSdY}V4M5~q32V*abrQr2R)W`D>78?dB1A&ywcO|s9U!ZIf7&}+JaoaL^=e6s2l(> zU4$6Zon-nxJlG)6Sja&;)x@e|y>?z?@}#(PNVB$}gaHEa`zjlCOFrr*c+tD8+6~KF z-{DtD9Hc-6Q&0895>uQU9kgmL8L)>2UZ((i@xqHyTs2l z!j+Ewycd{_Zrpl{g{0g^TSMmP?ZQQRhjel@g%tD)r}#@}{H5VYK`w8t>&uNt-L=LU z9FBhPwvUvVHMWf8$4krD-=Y*dM@1r^pZ%A>CV(9*`xX*29$)ee+bT&tD#xTEKlg!K z!%4ZC{KFBkz~s3rowQvS*_?IHrvzP8?5`V~cEB0Q2>X#9MdqJG8Kn^7ib$@_+ zdG?X5?)1BKU{}>|67F&^fphg6cB?(lMQ$Cr2i@lkFqP=QB;h0S*tZu*>VV|dIz@0|=f*vV_fykbV3dEjwjMJ{fb% z#)=~MCXKhygUe(6^0llygOt3}Ol^^St;HUy#f8td#ine4N|^^n#SU<>#mtKN0l7Ld zB$8$BR6|-!zKq9JZN=TavJ>WL?m59G%OPZUd((S#rqAU_Z_zv3Q#ugO52La&B#%)? zl1jjK_G%8Jnmi%iW4!(7Wv-&{YRC8Wnwrc)j?Sz^mT6>8{Bc9tbmr1 zxEt5a%mYUebLB>#$9>pQkwT!-!#cdZK}_KVX`1xo~H)A)d#^rf8`_sYLC{*Dxr zk*?SXy+BuKjrzuvjPr8g{L_ZCuC(-Fwshez!2y(pmfWx-N+md>by5?)&em#BHaBX? zz2lT_yp@G5%!=IID(rFGwI?SyMFJddx+j0hU+L>khu+iBY$!0g6F5R})#x<(wG&Gr z6%<&T9BJr^oQ@k?Xg=E5@jPQ+U)F8jD7;wxqjq)Bp2GFJU%hp$W_B8stCc2sV$G@I zYMv!JvWE^^9y{%69j*-VAxssq{&Ar?L8x%nsVRn~=($`>QhST&E5UsSl>_6q_g{6} z?*%$_JYOq(g|qq;3olJ2egt32QEXT0s3CrjZ(WR9#N#5bXXS1`%Td;|6$^$mZ{)=J zLMMpNk2M*djvRxXaE=0^mj%>&xIBRmR#tt zag{swpp6+0qZWI)W{v`!9l2)m5qJD{6}@vIDr5C$PckpLe zH+3R5W5GFRY&(*jP2OgdFsq5q#>U``i*d&qBi%`fzcl9C3!9Pw?26u4eG_tLjN5Mo zr=^tN`jmqB`uIVzT*-tan&nI0_kzbtdJ$^`K3=UfHtyMUp0lzc^>e<~xp(h5F2-#e zGHT%_M*{xw-Hl_9h5uj;PD+$X8KH^ky99+0M-uyIHsSD6CFOti#56eyo_01LnFfHd zZxA<#*nHObp9$v=dxP<<>!-3dPC6813d?s z$Ih1nN~lnUr`=m^YqCJ5g46S31@_3Z#dH9jsA$Mt%yA_nXnO9LvTH z4T*y>q&-K^3F7Fso*5Bm>;!BIX}TPYPD>h3SjAd8AZ9AtGfMwsB5)ZTR-dpEqm_-} zALqprf+W47&KJ`(6Af$M@g{;BFB8+Ed?haL7T2m=FCNw_Vhy+A(vYq$qQ;&s57s`C zKeSk^+9|01$Z9WBHszu50<&&M7x?U`Ssc^|KImn_we&8@@& zA$5GHVvjbxHRD+Qo!7Q^Gjn3R?O!I>Dh_th8in#A+}=OIF^9_vX4h(8@Zt4X4xx>= zVNF`y)&X3#EB{_0(T=+M3UFO$5Z@P$kcC?>LI+}pkJw!y*i`2QA{zc)upW46;KWUL z*n=#H`vzsfN(KTXeG1C(@)grt8UhWTx2ssDJyIGlD=&q6WmEJ7cNu?1vBnb&lh%!q zzDy@T?Og^$nw2!cDz{Apft8GF&C9TI2_O%CG5q^xeXdSXKu16 zw6kYI+u0X#9z&5Xk1-sP{E{b3W$QIpdaCW=4sn(WK#sO?7HSXj;`tta{8Ci#Xk^j4 zd_-h1sv10HDx0k9YD;|ojHTX!oy0lj-f#UVYq4tg>#+0rzRR&CVcg2)PXA!pd7{^v z<$@+WL~<%2WqMNuTyh&%h59yAl4HmfO)W zJz^#p!)=*Io*g;`*h~Yp(0^y4w`5t?p+r=ZMzBbm_UU4#5@uKip zljEW^BxdUC&FoV6>O{p9BIG(O74F`M$}!?#M%!3T-ACz1<3%F{KPbz6cz`cSc75m*QLV;33vbbr#Y-0xYiv?g zl;EN=bHKABDF5a{AibvpIvL2xB~>^9CE17dRqKBxy%?aEE7KZJtOOeaM8|UnoAlUz z>CSTYJwM_Tjhc6oWPvSrXS|fb{0EMpf5x0Fxc0tBq%n%8Y*!npXUfOMykx^OYpEvE zx9@0+?=V%IY=5NZI2gahx**;4jeTGuk*A4X3{G^G0+83YCq!n1?F~+De`K4$x3=Lq zt9@=)lBF=gn!6?$v(2=gEuC-jeO0xs%hMA?EwAqU!4$uI#TZT>Rt4^?`KB+d!I?AQ zektK-+e#dA#6{wpLxA&o-gOP;dxI@7U4^Hg;y2Mb1NfVof(RM=!Q_@Y#+_GEC90sy z0YY70bSuYJ-x1E@?E}_R5whef_dJiZSiQSoSdrM4A)D!_h&`V`@t}RN_f0+(*ML#`b{uG6$7G&5OreCxk=4AtZYuW`f|3L zad&T5K?wwcLwPmnQ&WCIH1X=d`A(91bQY$@z>mc9iW6LJR%5=KQK9`~t^oMvmwxT@ zh#1FxPQC)CJ_dQF9`I*@p;MwhWk&x4X%hj%=Lx24ixd|+ogb(HJQYXZ7)x}&Rs7ab zy1~r^>@H4E3|UEXyG+~wlpF}CuyM=?i%zG&`sLz|@13(ujK2=Qja_e<{2fva+uMSb z%!^Lw!E@V!1_R34d9DEC?KqvbQ$ zrOM^_xxcnq z%^qjdve#ixa!9w4wygbq-TPMhdakJFTe(si#jXGC`TR(sljLWTZga$ds7^;jji^{NjDcj&77UR6U{09C_5C40|3$Y9i zk~(4Z0ULv6b*#Np+y{!RUyk6#AabM0CP_&c+)qxoVnHKS3-|Dvs%7D{h{-`>T=M{z z;rd<-O4Grfp)>keFGsSjWU=z++a)$hi0_@dthr5=&>**M!F{|1elb7z-o9{+W&Er; z#D=|ZMHz2+DAH-V=W3F>`41^w%zJmZ2$H`k{ZGjf39a<#7tYKOUbP-2+DY{-djrCh zrio7{^cCNqa$$)mj+iT~OkF@DjRxc16qSeO{&Iaut+TiW4Lvgd{VokNIDor`*o3q3 z0u{xmdne;%H&}+of{2ZMZHi)8z*k@9j2S72eNAB)mRfBhoWmW*8r`}9WQZ>Ny?({X z1K*-;DK%qmV~`W*{%ar`s7@~# ze?ccxj!-JyZ9$qEJx)YHUha$1Hfya$2inVAqp2oRUAs-|N-r>dK~yL{ca;I-A`Gus zzUhhId$j8m<@CRQM<<=Idhlr*8H9x8=}K1reP1q8{(nj~tzmq3)fvFS-kYFbLFV?>I1iSc%hXa!h_hfY0n(ZXT&*bDU@qkUpu9&Q%jT)i(Vd?})q8 zm>EhoJVci*X#n@_1Y;T&OsbapWvO2U~ei&k4eyFJ=M^_Yw`++yQlxsj}Y}89NavJ4@}?p=5b}> zQIM_<=D{2%e=$HQ3CD%!rdfOj9qhJ@xVw?O_00>i0(&IS17@uM(j>NnEjM-PC!}Od zb0xMoi!aF{-SM7FvS8aAV=)c%2XgN>!vqLZ<&$sl;w^a?ORY23eu0uD%qhf$7lI-c zAU>ub3*E0I4ubU6S=l8{Y@k7+;$ot&T!XkU0^$7z&^>#G&gWrBJg6<>Xo0~)h z*Eg6e2`q+mY}tVu1i5GU$?>!Il?4M|zyeWEZB_=l6aW2vTR4KJwdV?3byXTKQ$ibx z)8_Id6Ic^pggO%ob?XzvOEhVPQ$h$*2zh!8hvCz~SPd}*(YVSiD(g`H?Xxn^anoWV zAidpOw*Y|l;OTgUP3$%H^r)_eV_0ls1>1W^ws+{sWdx3(aAFlp_=rx{iSY zoUGj{;!J)Y+2}Kdpg*-}z+p{bvUNN%DfI*e-b*FJJFEdaF3f@z2YAS5g{K8cyx(8@ zg^JHdw`M+I_aPc8XIAYFmv{Q{_xc-NUh|;LuoChqE9t~iEy{i zP_D6heogY7j8Gii7_#`vRIn^!%QV25O>R1@PCOqia`+K;~*C@%G=kqL0&;tHC~y28qyeTSOX*R)h3#kxFpg z-vJuuDgC{cSJl!*)lZX3quL z8x_j^L|DFv4Zuo-8NlLt!dzTjh<#MIrZV4k|hZYJke&^dPKiyh}2r9awy z7rH5o;1mw|#T0!v>ml|0g-kH>uq8cWXeUTqE@f0}$h%vN}UAjGhzD@3c&@Zzvb%1rz*#0%_VMr18e)yAVzZcK`G znk2`zvi+1{c*cf3He3+qESbl+hpZIxYP4BUkYO*LzRyEBfG{T-`kN*OHf^1BD4>sZ zop)Hc(j~#5`mT~D#NNa3_MQCI0!5I)Nf?$So(4L^hKqsbW}C2oX$t6%<5BfETkh=F zOz5(?x|9cAb){&`iH(LpX4Z&^rcA$Lw}>#eytYNUsgh;(_5{K^M0DK5C*h}^sE5#0 zuKl6#aFrepaH{59??o)7+2aLL7b@z88uAI{9A78p&yKaTlV98OvaS7!Zgx3taQD1= zQ$gy^y!Xg{dDGC^`Z6tC7QDlG{>cpNV|7q_ns>qbx@?}v02*H#;c1&q>YfW zvgpbJSjTvCg1ER!s2Pmgp4qaZ0xozGLJw+8^Im*;_)*BIQ~00?C# z`pW$`l+ecBoId{OOtql8v=60aO=uIy7t3=FXKGJ4)oKr(!!j1R>cq^x7R#$f= zi8&45A=pRKpnCM;3%xU^GmD6b;^$koeL3T=ff)ZV8$z1|f^4ohC90-ZPm#4>BrooT z5I}Nx&38}QMJD^$cU)=X>lg$lj7vnT?+4Vral)gE=03_YFHZ#u-|jpU32|}T<4H|q zC9F5QYG|}+1-Rt-jV7~Dpl!=^uJ>^RZf)0l_Z~jMXbrrQVbu4IzCTW`^Izr@h!31g zBnw(^Bb{=M2gh-&1j(N_eSkIe7DVsqY%#FE^9sqkxO8=55PB|ns-a}K+MqXl+`$_3 z`CbDD=9nr%_%5AeE*jXG<)u7c-GJFEnM*7M3Ltj+@u!e1lFyP#1)earcmVgDXj0RX z8}uA@B90rZFScHv?L5D2Ih{jt7k(|Hl6$&qEwY<~$@Njd@+SjzaI% z6x7-tWInJKcL&>qx3I?f-h|kVU1fbR@EpW!ZGF^fkO@~K7V^qy5Cj-KB&rcewCCYQ z+#6Z?ce%;3N8b?*Oe2K}D1Qi0IV3q9*82H@u(ToS7$fMDmcAVucLc7Jhk|iB5c6*4 zVz%RMV7Tua@ir9{Uhf%DxWfJ2-cyevHn#f{S2Bg>)`w^`i6u3uJ@Lt>-w8!F?Jp&g zwQq@{^!9y#!(Y&`V~5%uWU_aj$(u6~0oKHQJ4ap{U6|7WkW+)Fkf~^dIpe(err!Q4 zj+b~*SIg_fz+!MBxRIeU_R{@}lkO%Mep9c=qv!!d7o~zS@OSrVD}^QF%qn=b6Pp|k-Tk_bHO<{* zKI~!ZyscuSgfSQj{i^piHAM#))afHj|NaAIEV_oICR@%^j?0Bv)j%824k^-j1_L~-|dj<%J= zrM?r?7wNn6HxzU zdq=EhI&=|AehXp;5bLi5Wy*+HzlfM@Z}N#$08uJfhcmKQ?-Wv@Gi4c}b{AE^r|z3b z9iJ<1ewTGh;C93#t_SmTR!xkepJt{FX5I8&Puft56Z=c^Vs~iSkv!3E%2X5ZvrYOG z&pQNMNz83}K0yuZNe!#+Ztej$o8#k?4sL5}TXDCFSX*VbX2TBVkQmig28$j5vRMBU z5773wvk)fjzSR_qRQKM*7ebQLBc6YkfwHp^>1M~|C~CFV%ttQC)yqT=+nX7 zIRxk6HpN|)sEEl`D}&8H6TDBTn5Q%c_j*hj2l%D5iVsnJ8VRS_~1y)Kju#OKb@}4;qBI29`C6~DnXhtP#2$fkci5h=>rtC zpkaZ887Z5ouoccOv`tjmD|;?>E)-D?K@=GGC`jiPhVAiKNu z`5_&{w+omUwc^9k4<5NVij>=rEj;12RK@-5%COi5 zTH*x`P_}GQTz_dq*5fGPw1w4#wRs3?Ssek^dz{m7ENKh|v>#odJDS4VzQ7TLEzSo< z#+QlJ2OL7LJQj*d$fUIJ(_Z7aGtousP^R?VUnxF|m<%CTO?LYsb=Fv8haajZ_?0s` znb1HNCdoiWxJ~`49 zRkb!KGxdK@=QlLZ4&apFT_I%Dj&Au&lkSMU+HCE+M`vT3u& zpeqA@DS#q(r0a*b4h*V|SU(%*OP;Y!tX?73I5Sh{D2I^x!iEA~?z;=+s5XpK{jEf_ zkdpkXi_DuY#m%1aTb&U2)mm5XX4KYh#`DPIh-r+kp!BUrKRutjqX1Zb!DJ8ulp!f$DGjLags1pHh(;oc8 zvOS2ls@=FSLa@VUd2NbUcI*0f!J+r>2MJj0u$Nwd5bJv3y<3m`bIw*iW%~ag-6}b|I&o1XP(K)zY!wlPBff06gnx#pBAOrWyMhOKI`9hqSc@3 z2xf32g3=?YaL#PZcn#jqC-um=m5K*P-D2XAJe3o$_)BBbq8CW`KK0wm34g5ac9tLC zD@$(!C5w`P(pqLil(1}G&poL>zUS)jvrGnA&c8Hk0qzCEJPQAhEkqx*x7{fj3B{8+ zmv(=;S&~8z1*L#NEJI(AX+sF z;i5(bb(<9y_VHho6WUvP9eMyOr>;K}1d52^9G!uenM8Q2)M@XQ-Ed{uPwKR!bYHZ~vwBwyMViv?PCr2FE-t3;D!$)azf8m~WsSmc z$Io(mL^M>BMY$6pke$Ffrj*YAd!wOa`%01%Z0j$u*ACF&Y z^PjLK0ynT?i846jQ-yE_>%@#Fso3yRZ$n|PH_LQxls4zIRar7CRfFg^tT65`4P&Tu zQ14duis|C-ZLQjTL|Pf-L3?9Zpn6Ku1y27i2DZb2^7Dl`jYsjY@u56~%e02y zet@?QE-{)a$5b2Zw$9a@X(7I4QLr}Zg{pv49Nih`5qtTb_^m?jfvO3`;LYkEeGLqO zZO!CktJ4h%*j{eNUsFxDd~nh!!QfC?3K9ve*s>OpHyfSCipV(s`8oNd3j@psCGAoVU6H*==1Ym$WXzd z<-1+gC3gkhW%$<=ZR@`IEJ7PyJUVF-!&7W-$eA||%9-kVlir_;EDf0CBW*sBgtNm0 zePx%Fp@devHQ3E<7XfXQFR7lm8oe|=2mZibNoLG zw$8`-#6#o(DnMAhYYgK9kUE9fIyor-_ibT%#r#~hocF2v7sg_P0|#PxQwBe836Uib zGrH^uH4%J>SUh!@sL!2BnaZZ7fE-|4+ETqfv2?ODa=3O?h(di7j7I0eKnK`PSfD!@ zJHe}c%a}wCWr`Y%cUg}ecsTsyP|D}2gZs7y=-}C^A>eJ|@MDn0^AKqH{H}Q3)$4~( zgn?<(--$qLN*FiYj@%uq@{4!y5R;;Pz=0Gsy|N^eC)(C7c$*CI^_ky$G)Yu27%PO) zR*Q66KZR0ZN=kSx{d$bpAx1}!Ex})0$4pwJjHkwpK7ilBy~4=RpWE2Xpv=(RG?U+> zJ=d!;!ot+xb64I@yV`Fg@aVDY9T&IeX_M^HHsu$-sirE z*B?KOTN^6yzv}a0*`>f7EbjGo7*ud`g)Au}$3(*nsQi6XPX6tY;iehP>2rNr`Lb{n{1U_uANKYT)aOO~J&nSS;!_EJrVz+Kp z#I|@FVr)$lkSY6S*RzYXxpDR@I>f>Z@{D0uloRV7CM1;?#%t+BR1LQVNdHM&J5wy* zvAG$fG%38NTh1nVENa!sv>t8$p6X;0HB~W}#Is`l&?MNqe#!WPQ$|NwSUL5`rGei0 zN8AO&88dyH~TmI90#gf%bQKM!N=B2gTGM8~}m&=-k2lzQ(25RX%GA=c!? zJ`Lqe9q6+sGlvouai*y|HhPh%*?)|TS)qb;6W}lcJLz1*{>^{#2d&w2&22xczM__+0EON6A8`cPh$ev266m&MM*}^hT9wopJ5^Df;Od3D%)|QpdET(e|!bf&Tx*TJAUe6S9#(M z32n!sbxfJl^Q^s!@6UqTO3GmWma40U#|ZY6CviSq_A@Lw;^nJVQon3c%MEs`%IA~p zY02WHqFkCb%3;}*#}(DZkuqi#?x7gtZoqE8+I_h%;sZiWg}1U)kfvrYW+!)KY`3q6%gS^6>nPd4_{O*_nKSSXWt)2~rX{1D&1w*J z47GddI?$xiR=c2CFRb2d)%cZdI1NbKiS;ve{S`gfXULMKjku2C7_93-ewHfcC+LRp z5aoE9hF^BeSNp!PUK>gPbRg=fG0(@k)-3lhk0YSesC{?R`SFBSZU*-Rwi(&mQEU^? zX-n}f7tAwj@{*0DBHh22B9pJFRO+gRfgOhP)ZrCN-8A%tF3if`=u|u_|Z)fztzmbqUAHf)Bn&3HtHwFaG#jJsKiZSGPTQ3S=rOym^|K zct!iLU&8EL3zPL_c|JZ6W;Hk3{u0fgHFHEH;AS03MkP<2DnF>lU+PB`OFe#*u&XA1 z>=G%G5s90MJ5b+Docfmv#-Z8qU~jUbP$4>qU<;5bm0ECqW27!7K7NmgzWC%&>lj4F4}Yr*SksMRN%IHakI-|^TT8XCt_-{20HQ{!`fbpt1@qG}~kckD;wvPn2<>5?2p39gCra4a847doVZSjq<1}ta z{4g}FkSn(E-^3YxVN(uKHhE|?N+ba2SC{}&+~NF_oZkUb)_{_hZ}8+1n}?L+YcLM= ziOE@l?~^X2J9(OzSxAf~iDRX4vC)R-sG-KY{Z3yux7ruW?|0ux^sZ}m>&7f5*cD*v zz6)aK6V$D)N;M#YNLSu1O)9bcwqv8=v>lO(ip{v=Q>Wc8`nSMjx#Or`Q8&Zy z#I{fmO_+F9*Ed3MWmj-oEyq;TmWaBT#7qR1t2uL_1jRze&*LhO7`>0cc%&67&>e@L zqg)h@WG=pI?yjzOw;#8569@v7!^DACkThqJPr%ji4O$9hG zdGLbZfnzb=DT&b+WC$Pn0u&4WKP0_(Alu*fKi*GY)hb2pqId~v#CTDn_PaJQYQ?6t z_o_YLt(n*%)PBW|y=z8o5^BYWy=#QpoBs0t{{G89InQ&?J@?)-9_JjU)hi$evI6-c z?uK8u8-C(9#xKvMq?ts8Cfm^-O_^nE=jkUKQUp3GG6s38Dql!)*TtI=-3|P)?T0>P z6QKn=`I&V`YbWI-PDt?es(w~PvK5jkDrlkKxj>0B98aOn%HyO?$%jvw ztDHh>9zkpkQxAn`xC?-PZC}4-^qc3u$bPu`ln0eZ>g6AW#bXR?%axoEVjLB9UXX;f zenR3P+8HwvS}vxuo0h*x6dADnF!B~DGUQD}iMPFK7J3mal#iI7U_DG1lZcma;N^bRbbcy{a5 z?tC{gto1knpMt(5%9rDE!R+j3IRa=bP{Erj+*K98OAxPF8}pY6IXoB{D|sCx0`peu#_u%+}r+{+_&4s+o8cF4^u z!hLZ-Cvt5A*2(@xM2KM7({5eAA;h<;0|;zmXKPN4(lMIi)oBC#c|>n7DhC=)l?b7q zMr58DgeSM$150dgw{sCwhxhSmMQMavt)<@)ZD`kO!VvV9G$d#~tj*&g7E}V$AALt` zKnef*mgypyP}xM(&{O@0`cOnBdtFi%YieU2i>%kJP1O^r9b#W`tL_`Zy%T%Y+jH)_ zl$^BGVa9I-R)7X>pU@@Opf>7k={osOFU+~>Yas<|Cb<%QF;3L8%`tX$9Hxqd*vtGE zM6*$ldMW=&ABR^B&rSTfh_~h~FIH^ho?cGb6^<5)aB74wr)o#=skv9SdKYJI84cu;E&<+K;7!oanO1*W zvbBi$Or5FdhHKiZi^}cQw<{aX#bmY9FBKef30s5w_s|gFYDkd8m6*YzQp0d^eLF4S z@bG~49eZtyXrqYk24Qr)ug?LtURhIwY3JCK)3ly{c_u#We9a=2kBGzX6hnzPQ)R6R zSlu{kYuj;ZOJ6FkLfa$kD|DAe0LCDBzWl<1IRRX?tH!mpZKaUyBPqict(sk5&oW3v8yMjAF(Z)CI@fs_!-7!KiVDS$g&wXs471;8)@oBX z{e!COv7cYza=fyCg$VSyO?$JG`yq5aABs-4Khgl zTHn}@Bvw`qo3bfxm58a8+}@I#{{y*Zt@DYk#*FdN#AlDAhVNMg%&kuxP5`bpt5tDW z1;)l!9{&QaI}<@P*&KWAx1o3yb@h+w(Tc-VbHoVg>7kG)azE92H-A9@IGw7?Sl|?E^d+X5>~h zXzMOf=ejviDQ!lrV^jNZ$h=6{%fduN+O|g6P$`<1j5J>FRV%>7eQ!wNlmSZdBDSSn zXy7>^ju0tt*Kkdr++yP}mm)Oel(LD;r1B-xfgxAbR~6#4e#hGYJIbR7Ui@9 zfh1OTBsYq{0YU=)d9iXm_R4-h>p4J%PY~6Vy!sj}FNz|+G@gw7+3tfXlJhSpFB0}U zTB$#f{K75ufI(F&Ssm#S#q(wO?JVg%ZCTbtMxgWFM1441+(}f^jG?9dSDh?%XjF|m zuwA;~tqJXD(UHCD-N?{6TahG<4de9uuWU6_s|GtKYXO{wssGR%R0#hzgy@|m&vhi9 zfn+HsCfi?C!?FOX3#AvI*dlEhG=_fso1`GioAY6kF}8{WZ^r0qtBed5{whr$Mx}R_k{ity%I69cKrWxmH+qX|KuO9R}2l)7yJLORI5JZ)zM($1|!?p zv0UHyY_O}P%0!bHZ*u$|meU?zs2+Gpe}VP;gz{Tj?(DysuyRk3LFPbl2z5)HuRX?# z%ePO*j;#%*laj0-EJV|EaX6QP`1B(!%l@J*c?; zqhdr(p4dxMn1zHs<2=PPI~8Tmtfel?3GCx2jKvtCIj)tbY4JM31_V*9{H zY^Jkc$bH{>;%K4Ee(cx?Z_2!8Uts*R9tvqJIRUvPsq2vRH@d-Ozu6Bg<}Qpug~%BM zqY_697eEPh9jM*KR^lkez8I9g?lFNKJ4IiBxBBxaU}XQA&&-?g2sCWzCB-6fnk;N< zsMQz6{ri_tE)Mzpvoh_R6WYi+nAOpzWy)Oay1goO@AoV@@1636eVp}{jU^ePGXE|W zB~|11X0%>~32ScjmlLoaJ+qZ2cD$js`_)MBQ~i}Y0@wpT<)6t_&0ei@HDkFI3oP6- z-Ct*2~1dZB~YRvR6 z!|MRA;%@KDo}NUbK>CZ{B^igHh4xt%2En+@@P>kFKX&$puqW!Di7HS}5b8rIADtuGwCI!#(5R_B+K;)w!m_hXYwEv>D+EkEZq^OlRoRlP;lRvhGi)t=?U z=*OQ-Zx5S3y&M`#x6GXxJ(h#y6XhUej!=Rg>NsWPPrUB56v!cHEr34Yxeb5grhe3G zV849&>^T4ME$q(e`Nx&Vob)c=ZQWR0iKFFfpnMwIC;qFo$;l^5B~}M6*8#*+(uHB@ zWI^N(R{u{Z`Moj7CTZLmLrgvHWxv)m>bvSqWSSYT&_}T!itV^Tj!Sf6PCdz`d;}C@dvlQla*q-^Y+FeHLjDtCehX#*@cz{^Ez!TS&<}Ym5ZgD)EArJ z{8Lxez)U*5hh{uC5gQkZ1kIb2#({%)Td1>ccrm-8Bl^KX@#EEK+FEGAXAsKIA5sbS zHQQXSX-yIfRl6$+%qVNLvO%%#h#8eA6m6s$aR_d@&U-;>v|$JG-KHIT9cM=y=4wrd z1^xpG40{(zWMu7UHE)l@V9o>Vc!s6C&B8e~kG-4l`!$YJ7MXB$7VyDZU3eLWf4qH9 zdK44-9OwK!V;GxxDY9)@ux1W!HLcNgL=RdQy|uwl@l7s)+_-z2+-OSDcQ!YF^Y||p z8B}P)$E+R~JK<(^C`qW5>fk1D)Y_#5)bjf(YE;-#-WI($!R6*P+1sPk#A~(GSKaQQ zXkAwDixEe(*Ok)Tw3kWe`IgMhR7^wCuJgT{6xNJ|Ze%J5hz!>{>m+%qM!CeBk||f@ z?NJ%@6JL>r*8PH=Uky!-OlQD7vCjrX33Hj_%|^rZ0h6XxZIq@RJ*v3O2mYbA;%WJ0 zS&{80TEl#dxC+ZPPxSWx$j&6aLQk$;d?gIdcI0f3Wa>4R?*2$FFnex*&JREye>A#k z*tjt5wD%pU3Fw|nr{U7O`fvt3de|`TVZ^TUxmNOMEQapWh76eK2$9}NU3(8Za(%(y5G|cdltodxHc@P zfyk*h_2l9*b^{o)+%CyOsq~$%>NhSv|9ON`w6iSi-T|W;fD_Orpf&(x%3sWPmCb$m z+Df5)DWRRVWriH4j5C2MtjC#$j%h9~D z!ZAjr?+U57VrS^hn|ckjmto?x^DCrv+E!J>=aX4hqPHi+*Fk#*X>9@-7_jB8KUHV( z5m9zmQ+o!huu@{{Cz)%7P^?w2Ci= zd_nS2*KZ1^=~0S5E@`|^WXJN!{;qUHLo&Dm7{iX{9vFWSrp5Z5RVfNrheBxh1!|SG zJ#HD~G2xqXLeayz8j-TkwG^~B&xul|ipD_Q$*0inW;+%LzDWm3Ffo#zbLeGHnp{!d&mW>rgh)=Lsd~b? z>}}5n5-Dd~hSF;y{)G-q+G@1b+%m8aV{c=K_S@Dv7zEJ?erh0_JByoV#Qg`4W}s(< z<(Cms?qov1tnfSPig(vFPx*Q*b=oYZg|z=iwKt;%zgOubbF?#jD)+2_6J==so_+>= zFt)W$jF)fi5pCme0jT)l9R|OOA?{Rz^Y`|I*ldYjCJTw=f)w{{ans@LDEsgf`C|Klc+e|U(IXEs*%2Q+RCcShK@3vC(`G= z4X&X{~8)_pK(K98tKqziKp<0 zjb08E%puTPXA@Q69(Y- zx|LjTJXiAfZ{W9AUo%p)_NzA71n9!!X^w&V@f-GrhP>E@tRude$a}D7v6pJ6slQlQ zr4^0Tk&M;T?qlxV3m8^L_b-o!Pe-bXD5Eqbv7Qb$;akc)ePt~xcA^z)841hAzF+%* z50e6x5_9R1`p8Vy0#8hkk6lnU!XOXM(}40T2*<7e+fTA`Lplxqy^OZ2!(727on*E zQaAikrzdQ<5O1yK(Zyn^WV3qJt`iPo$5MS}n1}x+B(AlvvIRo*Y}u8a{pexBC@r0| zV9Y5bM3>F#C%vR`tUwfQKEsacp~tjF@4EyID14hQ+)J+L#yp*Noaokm`yx~T3d(NV zF@P`maae`v#ZA-L<$p0e?7vG3wAo#pn6b=ZSPKC&CiWiB{yL!D;{M8e$~JYi5(VRo z(uM%uX<6(Ai|LEG1T3u78Og*%X)!5Y#|9yCYfC*oyV#GdRZ&{|@Q@{{ zT{bb4JqQNSZx;(RT5(eX=Q1Pod(c{OJwV)A-$+q)38W$6Z(Vkx0Gcc0MmhHp~k}dR>@;Qf-tKNiZzfL)1 z0%zWMR(|M@TMHoMk0>69rw0_y3xB85CXdYko>5a4sS8assfrQjr%El!zAKE9nLGo2 zreTsLIkwsJQLY@#m(rrE7|`_!!6J$F^B{zkDtPO}=bG^|IR7|qH9*GX4bLEP6GU`o z55#8zIM~LoQqKBmxBfm%5quTvth&bniV6yg`17c?{G@jZ#-r%)Ggmr*R;@h!w3%ii ze@}Iq>fcj49z*W}^cXKTRBlQZdozcmAFscbGLLJqlZO(g9~_4W1o*Dw(X#SZjk6{n zYZo54JdF)D?bwuL)Ga+g)Kz-Viz| z4+&gWfZ67*x6oShFLT$V;D);(%PyxXjEvudqctoC4)RBhD@l>=M%g(h9guGqb!l*} zDQTtaEcR6a>(&4zMQ=+wpRq{OvF~z>0t``eT^PO1Lz^)+kkCcUK_Bu zSzA4bMf!kTIa1u5#XQ*PR^b{I!b=rJif7+_(11D{ZW9?ZoX!@jQm66He1Yn70Tj7D zKr(voE=8_VRs-r~rv@_mW6E#AJk`=+wcVuo0-a*w;Lm3Bp)46qGl7u#EDdQJ$ZMN- z%0Uw0hhb$mt1$_~8|0DnxQ2e>V7| z7Fur>q!0=P6j{{T>3{l}&@rq$0I{_^5dFOL6%?ydN#@I~Vb(C!*LHj@C2#cC+FoZs z^3YM8SJj6`E2qkK&R+Me|3-2ap7q)xpr5h0BvF2qv8PsVoh%{;|2+CA9C@$qDFASV zoxiF~1r9gX+PP^(H9hm7G4gKb;d$kNYzMhtmdhFBl_8i%i2)J6HjPe2&6;T8m&Dy zi@R{k;TIO^7*saESL#;$=6$14koN6T*uiydZ8zX$-et|O{`94$aovmmUa_!~GrYX= zd{}AhB+KdmEvwzcD)d(HwTpVkr7M|81i!G6qJ^Xqj|S&3z?{09PELR5JW+%J|5m5Xa9D$sQN?~faBeR-EPd5q-xOF`bijA!e z8N;dS(&Z_x&NJGD&(S^9D43Hf@SQ5+z(7ktyQ|-+K(6K3o&7RXWI}SUO0Ni zJ^O{4fo>i|0Lv<-`QMo6DIMN?St0Jp4962P*K9&-D8*Sp7j)isH4) zT_-#Airw-F$0vnRW%5XEMxF|y6+cv>r|sf{0{gy+Gp;&j z`^Oe7yqV}l+$V;l&7h=%#xMX+#j29pTEmGxQ72Huugb^K{y-w0fO+9rd!vQkKJ$l! z4(h|T)!^cL)wVF+#rzoZLzA-_O|#yza|Q~(C`_H{(U9qj3;z@B^nFZ#FI6B1t}GZA zJd}4jVi@|YacU|c9oNQ$l|VuyDZgqQPwXg2S4o?R>Y**4Y_U>XQjdu;w72a>K0mFG zBT#)U?=ZgYzvP$MJP#pNQgS^UFBwI4detD=q3rqvXS^#*%77~A!6we7!5^2NN33N2 zQ=1YWAJT%$0`q>|_iMQG-(wm1&-&B5_W*tA3Y!e%y0HOjMD{#R{ye%4xgXsQ-!woF zM|&k^59zz5=ICv@M)^rDro#7vH_z*+{2Dk70fvA<@mHHCvg=s6$gNHf4qyiiXS+F9 zHa4F2+9H$Qx<(r0kU`fJdXJu(g5}F-lfLeaiwP z7|0{KLnA{84e9C$#c~d_zyEl&r=#}{jEKviA5k-IC}A79q9OLl&2#VD118q)@l>!x z`n1Z;l)+H<5Y${M~wzsU~c3Rv@P!|R*Cu(dy!N&kqilns%jj@K$ zdQ$Xf4%62hLKu+IjSC=%#$gX#a-g$!Ew%FeQlNC0jn7%}Ss_DIttosp;4MC!EPUxS z5yE5IchMaDFyojTasuI$kSUNX+sfwH)6(cOwA$S>{dqF8xmIXM;`iMyy!##RLisUJ zZ?Ev0cG;{`BRP#bi$hvE@A~&*e41Vc^!Eww@PH z&jamsS6tSOD7UoAXfIp?KWTmE zp6Q>=a2D#zH^_yV5yvOa^B*==ntO-}i>V?!r!8WZgw{f^*BWg}bV`XVJh(f|g|`jB zXgsf2$Uryop5-N~^I2#4E3{rsPrf%MoWiq8BbRh-iZ0ZcV>f~tcj0l=7n zy|UC0uhj8n9l_`FbEC0Ex35{j=J3%=ApO_dsQ2r!DZMs7y_H=Hen)D|(~I+>dq7fM z>ZS$7miJuROC%?$SD()gO~7l_bOt+$nrxA0-M#}GQ&0QkY=hsL5?3?7Z>c2#r*k$; zxVF}hl6DBB=T{NYRr|W~TF||;!-&VQDKLy$YN1YvCC&YuZ-54_wXLC%yGEbVwHod_ zPK;W%1k+P2y=C}WDCyqZK{cg!4~8d>^UuQeP3hCzzvzi#am0|{I{DS^fS84`Vr*ye_evW|eKoIq~q6v)&pg$&E z_8)7hywP73yC>%s1$bunj?yqQcyK3?|H;(4zybatUqKdXBO`tTBdo-@?!lfuez^fV zRG%O_eVYzDmycR8g%`}^lIq+Pz_K;cV=vKC^mbl$!(pN zI;2-p+F$}}KIfYZnHZW|*=@O!;h|jY4AVNnPPG*e-FxkS)x6F;+ z-FN-jR~m@ma0s;)o4zAWyM3#tLmvCxdJ8XpqsJc5_ptgvr~0D_z-j-za|D%REpD#_ zAF4>TA3MUlTq$G>i=L?0W<)*9tObA9mEn;iu1cqnsE3LvHyh_RLVDTV(nPR!%IbOl zjz|i-B7W?A<>Ia>p{v9OrB{rk!O#(wZ9?mQTj{YR8<}3GE-yobg;{8W&TT*O?Wgc( zSI=@J zDUZf#XbV=eR(n=iFw|3XCAgU`MP`aUaOx1aDy&Pq5tQV()bHfqr*LE3$QxZ3ORz`Q zhRl~{)<-EwzGW@q082Kb{iNymJS7IZ`kpzoLwqB#ZHdxel0(-`{+$(8mZDs*!pxTj zAq55$JE;{E>I;?j`q}S?r+K)?Ir=*xA*QCi(GN)%48w+Ei|!rjd}YG`k&a-~GyC7M zzsP|Vv`%Mt+24Z_hc_KZ35URr!4gt1N6m|+=@NnV#sT4_?1$q0 z4Ez;ZNxzdfQ-q%UM*-s%X7lq&ldZa=8!3JiQLMqOIod3nyLEcg+T3*g^AJP`lew#oH zh;>7Ig>U-iQcMn+Asm0kkxb24-{;d~~|D+qMbFcxq-aVLA#?xCbiFi}n`1+RkVb8kt!!9@1|E?W<54UWD_yE*4WfrS>&V zPMYh$U3@H_V@Mxv3M;g=Sy#vk2O4vi!^Z1q83;8~ zYNXq$j_#*MXAG-W);Qi8+gjRYg7IsCE9$mmw|K^cEw`iV2k!XaaqPyJTSj`>5B+&$ znRFS_n9^LK*7d1^!NCQ^da!R?sIK8>7Zi+m9Wu&ijG{;Hr(eP9gJwX`Fr zL7Z^Xfx8(bG;l%LN_)z-1P>974txgqFef@AxYVs^q&KAet+$zw63uB zE!U}5o*ehJ4X4)^=DdpH41_n%MjZ3GiCDn!f!P+a(FJW4^Rj(QdPw5Jr2diEhARHya1_&W=z1ht!F8U3P)Va<+i{5b`yZOVTKY-vnLJ( zB&QM^6z3ho^}}KxgjhK^uLdWxnEqwdlvpq_3Lt#VZLttjdZ zUsE|J*Wf%-eA6|MaC8PL)1V6DHdbk5RTFq9gF~!s%QZ~vxn-3jyac|Dfgvr?kK;2Hwud{<2vS zYZG$wut>#`)=hxCCigzpJi*T7eYi;WY%4GhOLgJ?z4`>+8ApBC! z&0DmYSfUh2W8q{WgK8(xqi$T3J~ZY3;aC2yLFYOv{HBdJ^+ke+#NP z)&nTk_Bj_N>&+>+RnnjirQgWv&>`*T^>Y7wy4=b6umj?U>p!ZT_K(AB``8~qlld+b1$IC7`srK7~A=;+d^-gPA zvik{Ex(u@4+VxYOzZ}onQSXFx&T_$g*L2C$+JvLj??tw4`O3Y%9~xF^GuH>Z3Z__g zs;|7YPugF~cB5zhe#}&lTg*pUvLK3J0=vB&`-?TL`rGV}|5idC|7-MfPF0~E7fwrj z)*o`M6uixvdrX-^HaN!EErnX%SdrUZF*jEIitLYUR8`)Q6`4E5qryF~2GMt}ZUzSs zrD#`~^YGf6Ox=0i{4e@%hV{MA1ZMSp8EIUX*gm*kgi7*S^~F~zwAJpt(V*M2BrhR`She;TNis|RnIon9j@Q#B1&A#ce_L@HD^(*^KDzg*W6%#WE)pd z3X0KCDA&ZyWe0j78Rw{EuMxDn!Re2B=zvW>_1^(O@Vq~d%%hcRX2($|;v6zQ@Hi?@ ziMzccU(vARCeh^=q@u-`vp~!>lu07_ta~T+1Q|!=5H3jUY;o;Zoh6F|FCEZW+Kf*c zfmpfs3{(#7*K4=*Z~i>`ysXpBb`qwPonE~)aQN;`aDgm*-7#KB(N;&n!1Q$km!pcc z{c(d%qjI*g5Du>`0axO5O>+8qUbPCy#?m!(r?Pvow|3yHlCJ>&nXb|66f3q{i=-%2 zD5;zyMhi=K3<-Gp87IW@fmnvVKS9<@L5Lf52A@vk91kK50!V$Vy>R#uzH-Voizg18 z(*uf>e4D6k*DA2z6{#QC6?hH)m@xUz0U&`{ceG)7(n4dZlsgT&r=}abSSRTUrGU zAC4%zFIqlVmwy3Uj9e_2&On`FHK}L6Q0c9Y2gREpD{FV6kT%t9*ehT8_HAy~%`qnh zx-36j`o6NHyMbos4DIX_bNAm*k7_F|7)MGi8TcWZX$`M4`K(@5#_AKYWd$d%X@kU+ zaTQNefcmA@?VYAcBg#UhlLB^8hWVb2hm3v?-Rv>f?2kDk`7LwQKZ|CX5o-%e2A6(SVp)9uOeA~8NX`g=Fc)H5uN@Uxiuv#LF`!-6NFM}etcCy0R?DGP?e z(2eIsW?_^{%M$L{-<#34?n4vu_lWdtw{-CuF0qThg!q%4@%5|>0 z)E{)Y-@Va`(rEjS*)tQ(^kJQm`DS(H6$4&lxP*qqH_lL+Oh~mIe|lqHcJIPRB&zwq zy`$=^(pvC|@2froippWkYmN?ikf&drjNi-_v_3ear2=1_4D7L&xWb|Yx!ryl*57j&8h6B z)>XJ}Cp*plU?&{gRy@r14&IYq8Puh_BKdtf2O@hvhMalb!oE5&rvJjJ>V3yU_zA{v1#K;kGv{49)Tt}Ep^x6Vj< zQ2iam@+l#NV(yBiY)R#JHZd%T%B|Ux4&(l{X=zEi96sqGziWSuZZ9{FBi6J4w%%4q zv4Z1oJ~Rc$$Y$U5KCB?z=z$CG4VV4w&+9z^dU5m$ZHuUm#vlY=={z)81WOVTTj(m_ zp59$SH|ZgYczp*mP$p;Kg2m1^y_(zdW|ruInR@zm?_lDD#4p9ildq^Xk(IDIc+&){ zMn|!YO=)O`gU5|lm3w#E?z|)-SklY9)%$9Nn8vN<;(#V^3udm1ytq*=JHGHg1y0;m z4l9Z{TLnER_zPMWbdJt4Zfcn-V^=f7fYeAyA6|lmtzIN2BFfgI&-*oIS`=u|@ojFI z8Uj;XD-u*qdJnhA6OXt}Yom(JY}gl8K%WUHHUG*@V^F$P=Zm#(-UvFQibeBIH0KGsU!^IPgiZE z{?_-Mc@<@gxeiOlD!$og8vm-_QRZ8DVBRI?ifuRz*j3pLIi{dD0Pjd%b4;C$=2GF< zkC397g}sw+6;hI8wjUe2;y-y%Lr9t!Bk!6=y5$l5Idsi?JwR2DR)hC) znAi?20AP8hPZat3 zGCzcn{`Y9V+t5>hdOX~_6i0k{T&t%6hG4VU3{K$QXvVdaoD;1{VpF-hT$^YOeS3Sx zZ@*CP7~LI?jk0=%7~MVROcFeIHQQf<_TlGr;jJMEJ3sCHuNxt3PY46rxo6BSjP3`P#ipyx`#Mk8uUJj@ixZ>gIUc&Vm2!fKj@g zv$MhceUyF>(_WKsoRB%1iOF-W&i&Tmrsd@o?J%i%-%OEI^0)&r7>Yc03irNdz?_&S znvH~x9_Pxgdo?o(52U!WkUt~26X&~5)D2a4lzX-2&O}B3mC-6S{9|HK%nw-5AZ}j5 z-!Re#cn*43MmQt(#zJK?nVszif@6G%z~;l1^Snc=8F!tVg!w$)CM(W!nIznibQsCj z{hQN=)bODdl{>97kHS!Y1MzfLuK*u*J~jiueTjP75S$xDbJd&2zKB+7sONceyIF1c zh1aZAInEPFx6xHM*O{qunq#wWaACmJPSXH%ZE|eamd_)NQyvu013ocBn+yLE?6x*d z`a(A>*K^j3w1T+SCml8B->Q39$$+Nkbh&ajY{P|feQCIDG=n(?G3zLs5o<4sGBCO%yz)lqkDc{{p5J!R;?L~9Jqq8v7A z!ujcHM~^ukQB>__IWl9=Wv%PwCIe7aj#xwWMAd9;AN0j}8h>Yv^90zeD$A`#1^%-OK)biQ)%E`7VK z2j-XyL?EpEcz8Q_|H2N%b(vo+OtQGJ$$R?n&wjtc3}-r3?hQF2?)~Plvsz*cm@<-x zM_SQ_DEix9VJ|%sPHl(lZ|hr5|HqtQx2u3zob6sPMDjg!4)5H$sbKOvcD^})7#QJx zrtL0lKtzo@b<6%^T!_jDO0n^&b0=pIF#bNOlkw~aj3WHmzXynX6f4EQ_>6l&@^E$W z=xOcUCRArn`$ERy?&tM7#ikUk1=7kmzdw&2kLx@Y`FI@D8&mMR0$Xp6%d=Sg6#hQd z7E1RE(IPk)!cK`T1Yyk1LZ9YXWHx9|nxrj%rT#qc6Rc6dSxvdVYJ)RI?ym^A8aG>< z9A=Qz8equH(2}6?FP}}?A}iqg#fpmPC3~1*Fyh+(xRrGO+6K~ zdZv)nU3y>9X+I(IHju{u5RRs?#dDN~k1 z*>OCzGtsaeFZhim`THYvdo#K?3Ze*_8Hlo@S*@M*JPINIax6p=H$`si!~R6a{*F&r zw8&y5g_Z1%FqhL6RU*BVK%WCCxg--X+gclm^bIgKCygB|rTV{It=X>baeV%c-ox@S ze7y3v4EyIc_e@8Ss3Oxj^?IHAzU?e&9uEJV|FQ`*$-->G1KICx?FhaX72Dls=r*BCnz%gW}Cgp@QTq&xFR0 zj9tUAdS|~`_{TUpR=ljSPX$tKElydOi2aBDi5j#f>gyU_{AEI0MhAWc##K2Q9eh^M zC%~^da=^L#c9~_U-cBn$r;XlET~)!W`2b70^tU~p8_peZm=0ul?yx8)CU?FYKkJqh zgV&L&7^)H5dhZUYd8*X9n_Nh~O?4_UTXTy{nQtsi=dv9UBiV6Ymmk6Am;+%(!k%zYrjtj8~4< z5_9vprMcS}SFX4Cm zJ=qYn@s#C7_zo(FzDywu&9ywCY?k$AR4Cvfz_KXJ&bdWb;N?NF{_ z;S)TAz?=FFN4T9aBWD!U-{onoIrZ$*mV9QZOE7~f*`G)197nEH59Mt3<5j?ypgfz8 z585fFUhxgwjlDN4Kv21diXhwVmp$Q3bD(Z4^gK-4w2-mSPD}R_N0NS@LN9&=8@_ql zDowo8btrmycM?>23k;3^yRYWUg(Z%#YWF(lt`=s9PQa#rA9AfDAX&j|(=kBV^jpIZ zQzj{PeMeahjI=x~1y#~y+5-A|%FvHjMvuE=jb%8iskC{1)P_#3S#zSSz}HD?NfCDG zhZE}8*`@~`Zxr>NEJ}i9|2&%bff})e=g2G)TNBl10v{%k#uw)370h?r>N=qZvgwH%jHVyaNtvWAP-x|$$I9H?tSr^L{s zfJr*%JxoFWA=Ze430WDx=el@qFvS`fDH05cV5hrajd{zl6xn3TxDPfk2u(3#E1b+# zOy8-NT_2umX#>Np-?;AjP;t7c_t@)AswzPWu zObl4-HnyF;-p0^mx8hwVPyZqF-1wePhf4c$B}PvGtZ{fWkOQ`&f3{#lHI;g>UNBJO zyu`$Ig^#S?1>{=E>Z5tvt%Df_-MC6=x4fKuMKy!D2B_eJgSn~lvFG^3-pH?`q^~{a zhC9HueeD$svovOQdgOS=+joVx=uD0P7HjK|7Ny_#2yxKrW0uL|XZ>yC4zubY$H);| zkE@w1nGT(Yoz|&5-d=S*l?lN#TXF4ai#F|x=g(qdV1n}^uAi8Q!2nkE(|55-Q68!! z{bOOVGp3N-HFd?0HiAb!O;7ht%*9a~uuDv<%vcd*U^H04sR6V8b1|4S7CZApJ5!fc)rSAC(%@)gw_$E5gj> za_vgDZ(-B^B`xMHEVq4=ELspz54BJ`A<|63WXV^~NN_VRdXgSU9#TiHf$`}XEhSILkL z8WvN%;Lxy`mA{6k43zH=QU@x7%b&d2uja#{WxYeAuEe?G0~DV`ES;L)1crICx?~`R zvb#j$uoh_$p}@u8>XB)7Ne2-uDAY^jLfGPVlYcU}KCy+cg=58(V` znS1xt=f!h)Fy@UDuaW*6h6o$KA5(FlPYkJ9{eSP6!dZodp)UHMRn^zpVO1vZeVz3U z@7n-IqMbK@fMQR&_?Xl?&^_QIv3Tlu#C_h%(XS$FxAj_kwMHcnSa*hf4Nxe9;5i>5 zR8EE8n60MCb_Qmw*da4LNsMu3Pu~)3OKPuF{u$u6tjM3;VfTFQF)m}V0%-B!r|&Nj zEmHj+=_?l>>0yAx_}6Nj(9$N1e=W-vsWNh{#{m5T@QAu?j;(dm zs6K7#CN?#S$tN3bhwq(c)vH~Hsu(%-@;V~D znHv0SE2b9FCR*Agh9yFO?Wyy6rPet>v{Putu%C^2_eamhw@(6Z&>L5nIR*H~RtD~* z0DY(h3pZurL{K1WBhg{@Jg#lV9aJNxBASiYN^K|+(%6KvFQ$DJ!{+31(Wsb+bfxxz zL+DPQ_73&a+BuCB|quBjrcI|c#7X05NimXl8Bnn4!1eBzvEW1{xNYTo%!fGI6x-y7+$Rm_(of ztHrR7zcxMaSdYQo4P@{AaO;x&fMi&kw-jCM%ww7R-tPH(=PP=$c9XyLGrRF{;>~%#UxELaeLa{*yz~J7Ah;H+_iI9({ zVMmE$8Sh(G={JsLBEN1LwjyGKhdE)O&pwh1*C=A$*u=va1KNGJu%WS&9w-@M_XDO| zD;UiGpnF1|dHWaGS25?{X%nX8@$c}4*c>qJ>PVoCZoNvDTAsBC4-<&KHFHx8NWEo? zK$t85eB0Z@Y38kmSs@tTje#G-465I2ApE0w0IQZ6C1yTN|Jz(l37$}h8zq%oH9LPe zXJ_uw#BqN73=U{s#(w%<8K3~m+&O1w2@p^sNUeorahbTaWIKt;ryAWDFCzGJEG@bI z44?U5Xv-1)t?evER|UPD-vOLvZ63#>J4`fS^q7k{rN*5)S?AdY#*9zR z`PW~LfJv22FAMdORq`j)qfl6yKi{Jwa|-}U#ijHE$d6t2RfXH5`E7a?rgk^9f9UnX zM`KkuTj;spB(jLgEj)ombc)@jlZfd~IuvUUK4@c&Hcrqmc;5aIcy0NtGFa@*hx6Z$ z8|W+RsWxdHgMGJ(E9E>!u3uzGB8CXPaTd5_4k8_M?sc^~U}PSv^vJR8gld&anEqPj z+>KP=5AQya2}{(tO4^?l+!I#5_rLR+(9q)f{TFbG)Fr?S?U&3(^+|cAXTr z%tfLbF+*eP-832&?Ej3eP!a4w$#2oaiQoH=+no;J5{cbKH+}ZbyN1c46SkN|UpJwE znrePA021K6qjrfY(Z!2Y^Dg&gRzzLvtRg@0)!4$+pp0R22wmD$2UAHW(l>ys9!=uI zgnmU5?e6*Tbib2VqIO`h@M>GYmG=wtbt=kLMZ&!+Ph26)(o$#G>mPf;dR{1KGCPYf@4Hv6&sVR?fIjCovZ$L*2*gQG#KNgeckSx-kDL0VNeOZldt*?pX*v3eT5##Tzq zzt-HaGzXr_VnhB(Mb0{`YH9rRK4N|w;Wyg0s?Xzrv}E;DnzHi|XnyiI66OeMiGYglXl%-oC8fK+M;Pp zz^_cX9u|t}UHFqVB04{ukKaz@7;hY=3%@L#eYDv)vr>=^eh~9Ul zJ?+sg6@vyQkZgf`?tbx=S?FWnMc9A*jD?j0h2&?pv$l=Jq3TCGAaO0&snF66L*eo| zgfAU(O&5175X!FnpN8+-VLxX?uMwyejNu`V{F2Y0Xq7DcXYCZ$tCzSMb!eYCSPGfv zI7dyd{-D7(ptP_OkYLhqouT2FrGAv;pMM6!E1R9X|r?CyCsCfQ4Od(UWu>vr{=cCcb}E+VArim_2Mn(ItoxlH(ntIVPm1;dx-3w^1mGM$T$J{|c% zW*@%nOB6<>uXOw< zJ)@Z#mmkqhdOwi-w5y{hOE!yDHq+*-)u6*v*tsB(6m{#5iva#zaV2|Z|(vK32Om0r{QK5u4i~_D27*8tmXJG*a#PNQb^Y_4i3k^ibA*)(+gwO=7UB?{oUN_rsrp6nWO~*U8wrt5xl}JM=FZxv3?*gyF;<+UR z|K6!C`uu_q{LrIsp6Rzz{-=}>i0djM!N5}e5Y*uI;fUu|Md1{vFHu6M4xhn>rCl}u z!8Ga|z~-pK5` ziG!3|;cc_72FB-}h+gvB2K7NrXS?3|gS}UCD?G*ihy3@>F}|vW2ZR8QSnjn?@s#0+ zFt>U;<}YUrQ34?A`tdgB$BF;ob}fg~v_^|IBc2`0am;?NecA?mt^wn$Nf$|GMXVb( z96Xs;i1}U~HPoBN(C5$W#~UHqf0&xNa9_~Iwf3C*?h>5y6?ebrdcfNNxA7YZITo{9 zHf0pksHbw8<-nv(6-BM^@11{}h*?fQYMBN zGwYbmfU-?VwVVX~$Gy0uZK+RYE2`rcHT&x40fM$~%k0as6Z=s3YJX99pMD8c*ubfT zlT-_J)_r7tyxN@c@UXHsXLLhD1t{XX;miGGb_`wR{VmI0dEKtUj;c<{T;H>3%8q_= zI%+V;V)v>wK64&o!NzE>m-u-fv^2qX*c~4-YqL9buO{x<#lz^{{4O^t)hTRsKPxiL za}D!plEHxPGvN!Rk`g=9m*&^e`#wV5mR+2ak@f4YuE;hhc_dDO3bkI{hO}*hzv33f zfPI11(tmz%>Aaaelxi#18#t34EqCygP>OWV+1QWt_pszxfQtRpU8;vtoQBbsc^}RV zt#;dKRMfl&dEn`?B~z-W&(8fOFYOPXVw|bef%ox-{Ke50W(;(tiy0joC|MgTQ-}#+Sy&|SGYj#9@Wk@ zj89ioxZKh+c{c8z#2o3=U*V49;EzMl?f8Ok>kyM+d|9-%Y~|u_yWE-Q4UYrAfKrHu zY$pdJU7@bD@;-th)m*0a^E8KSVNf-D{~*A;`bp)aV~*~tdf7lv{___F-V!x-k{$Vm z>JvI%DT1H0KGa4;U%` zU*ZXMxh=Q5D1O}VRcrg2m}CA52lXTKGQTzDdM6QGbHXcfBx>)j1<$}4;O^GR;vV|~ z5C6NMF3?@1!s}%}L!58v@B3DsQ=uN$fnc(6mrYX(g1yB{0P4yPJ7{ldpJQPij8g96 z&}ax7GHN00AkmOAnKpEpkhkF@XFci){>Q{UIA-F4k*T34HW-z(ts`ai9Y-{gpEgTw z*>=)iTMhjr2|7na%b^D}4E#C&+3eUiQM&P`C8Zw9kCC>n1vWG}M{lFH1w%2CZnPPHb>7jr z)##VwQDttgU*}a6P${omr93SUN8z0J)0d1kqksRsql=)N@YLY#efT!4>+^e7hZ!0R+{t$7(>#HkV9G3WX)oZSzf0)>{Sd+iHr z_-#ZZ86I(r#n#mR0HqvbzGZ)+w(>AyhX}~e+IAOU&sg$jsiW}hm&<2Gehe1-d^Y%bv%6YpHZcxlSo>uS z_@j28BpGpN|7uT{Crm$@?ZTc+9njKv3q0xQ8Qn!GNB1AIxj9=T?ZYv{VoU;i27Avj zw&W1qEk;iqbZX<>cK2#6SD7s%Ti4}N3O|)a?96t=Wl297v>t;6<;f`SnCxZt{esgq5=4{CkyW7|B8BH-S-bT2{&p{8w)^!KH5?OP3R^Obud0fVxKW(g*OIS_! z#E7pIr^DHs>}?CxY^MSm%;)MRs%H8&&xH<22mxtOEb;;~6qy$BA_yXqtQ0GD&h`=g z_YRt^_Q)z6thg2$$vjdBk>!*Od}`ESd%bE^f813_DBpZ2=?{i#!gH`1WQV+^K5>-7kH_40Vp%|Y09j5zCnU2x1mT1q>y!# zAj!7dNyP~0XQcuX=cLyMZzYrKoic0d)g9jY5y@t0iO|8Wey0jQqjC&pu_y(;Br=xN zZ+_{+tgrDk-#&9d-w3kTW18fL=)cu;3^G@F(VQ|9!j_)mky_SQ>XepWkfEDv+*-}g zYM*Rt8HIu6#m$*9WGNI8YEL{RNDU5cyt=Jchdzn7!>!==Lg&df+VlMSkpr(MsvL>c z6gvTu8#uwKWvE#}pu$QPRUa%JzNo_WjZ@s}<@uCp7# zz$?ue?hXvr@WjQVoGq`&Ko&F2Gf=52M-#|GUbnck-%wpDV-~Fz7M+(Se|OU+wwQA6 z890t%ecJyNzBK@WgSC_;Bu1cy+pRPk5K>ZTIMM1#6hU3|guU-|oHZ>yzx|%~{W{$+ zBYOj9RE}BRSKmara;cY!Mv3HQMV}mxHXBQuvcu_jGwL@>!X8Jp5RRI3=>FrV*T^Ov}4o2q%%;q>pipK?1V%*O6EP^7+bS;CQTR15RS+oZhG zVT!c>fOPtR03uhhxXD!A5;f4L5C3+!;f51Li^4gaAn3}B4YOrUcRIS9M3q1v8Nvn* zCgroN!X^^-Uwi|O#oM1+c&bZ40{mRd^*!aXV495Tp?z)d&yJpD@8lG}NtbjT)0N`^dWv(~$KP>vFV-AF*v0#YucjaoV;O{`9_JleIHpugliyoFz3fMREDVp7SBb{_1;V()* zJ4fy{cIN`|FQe7ox2zm-%XbFAZAHme{SaD;kTp^3mM&Fp)i}cRxP4!Qr-W|P0Zeba zIJsrhv(*|tm?O|!)mksv_QquXTkw7G_92It?Ds?cu7Z|TnY|nkhS{beHo5XEN?-O| z$kmhAaUJe5pu0Ca6c4*HqBt$MyA~k)^2crG=Z#(8EciMse81o?9T_zUs&2brTg!^t z;jr?7QrS+Ys(~eZ^Qst8EoDi?xf!cfe9g$I%-qHx74!lyT~+xdFm$CaAX)4Dd;JXR z? z%-9L_?i@Ga*<#EgF&khSM;4XdOJqQ5o--}h+D6|eC)4IN_csyHi3mZx8vMz%@C>kQ zqG}*<%k|*QJixl5(P}8Dq3Y!m0SKXwKeY~=%z{fz{5j!V$};6>pu5nQB1e&DmrgK? zI~$!S=%Z+WQYiB}Q1lKtAh!HZ&=EI9`;-O$$@S;u?#e`okT*;-u+#h!&=8OFrwDZ_ zzj^hiKZlhKM{q7Y&4UJ|U!t3J;5|nMlW-ujcT=6ZUi=9)oi?TA5r>go5mq>z(ceMG z5X<@T5NvJ!Qrd@&zHTI8$+Z-{MH5%3-X}t+c+|m9gy@6~~A|pPqOhD3-G-{Tt2zDNpJ!>lD+}s53@Ah=597Q@cV+gaZo_RxSY$I^6fL2DJ|j3Qh|QEJY$GFuTz7`kc`{pw&+^G-0~SG zoJOv|z0Gl|+VO7reQi^H*%49{2T%SA8-K|b6lEyEf-Mg@s1TC(D=Mn7ptvy!kr+XB z1{la_%@`dhZadH47|10`sTh^AuTx7qtN!VR5Pi)3@Q$J4vc9!@k^Mb8z(VAQvQY$p zx_toqQ3+~>ruBh~je>x}cM038jhj+p2B5OR1)O1kF$F%|%n`P)W8Q06lVyrgvEz=# zshrk_JXo^HFzPcJwJRqEUIw5>{dqy<5b7`}%O5;wwj}H~>eWo?z(qhtOWC(iW*mDx z)PK;=WBi2k%&=wqSoN1gf7?EI{s$>wRb{HpQAPfTanl~_MfSF5sp8hmA3Y1)WSU=K z!L4Sw=7M^`1wTgJXrP`YKdiiXlRS53-jq+}yNSE${7iSo)A{=kRjq;;c*JXfP@|!l zq84!%gx5&X^JN=I4VTy|``u+V%h>jT2}=WLqFbrHpZd`5jg27ZmX*Z9hoV9no6dmJ zfoHZ;QU_04Gzx_&N7UcY$(!t?+{}zN^DQ@{Q;*d3)iru^Tw7>zgb0@mx^i(= zB_c_Ck8r>E^S@bL!81s`6FE0v2qF3~YCC3sFEjEC=XLknTOV1rJz?z|Q$o4D{RT++hdyvvn&fxFiE|C@`CTqc`QK=@i{Tw& zwc@gy%UWvW9ti02yK>&lq@GSdTYKh_C7pfr=-CGyENar)rf1X5u`8-4CdTTUicBC3 z(0X69l-H%Gg>%IgBe?yph+}nlxI84-b?rAxZ7^fIi5FC;A||Fp-t%W#;%IDWJ8M$E z%YZO(>|7Mqz3Zv<^w-+WKMo7O8drYsW`(NE!*d_ahqsikdMf{qj1|vCqRwu{j^cx4 zdsOKluUDXxSr671Kt2$fA+f8)daRqCf0&#%dwL*S^P-^y>G3->qWT-m<3J3*J5$vr zBnL-Yd2gM`X(+Wk;Y05ey97Om-8afZM7}0KWHhy+u-6xtVcmi ziCcVnr*lX=Td^6{vBxwK`;qXhYU>d9grJ$DI1r0;c^_lV!nU1GJ+55Woj2RrqoPnJ zY{Ibp6Dk%EZ}S@@{|52S(4*gEP=~|G<>ho0vDGX#u4my_Oh;u=I&dfT5+M~owH zufRGVk(g$8D8|i|&JM5j^sVAR`fhoT2gb+f_2Eq!M?;-bf(1N%Ty7l`<9H1f=}vLh z9#{2R8ll4ezg|ml-xKqlr7Ow$3%QTrYrA$E4X_-mto37pq#l zsnt)5saoo#%Mx;L&j~jdZ-YzmAx0!lC}rJ)`R%yq3)*uZnk!iy2B~vYBZd;C;@Wh0 zzX28RC#BoUgE_MbDNWw1Y__8B5cP%B2`ruaKY(TNl}>3A6VccDf8Yl^EcR{s!*>0h z*IB#c;2htzp4K=1Qs+-&&`rgC8%jPFS-G7quD)UtFAh$4ZDb_cglv7tvbw*`Zs;dG zCmB8?9sx~D85`bX3nsuer+wVGVa*!i;{tl+tRPm2*_00w6F z{Q@;RGJ4HOhO-Ts|HvQKoz6ofx~@nx>j}r-i8PAIqpxs} zP3ml_kcl`fVLCk%IQ|kesm2x~T1uzHsmtKx%Eccg=m7hBN3){MHuNI9DO+W`4SF^- zU?#ph(^X9|yU}^B5HkRj*xtgj`}!qH$(noiiW!RuL0uFhSu3yxA-X z*nM?z%z5TB7*ssdpzHJEUCK$=V!To7UeT9i?{VJ1S?b`zgVk@Xx$j`7Ck0mt2=CUt z3s$ZvVOGJG;|y%;)H&x%PuRAP4SD-Ux3404f~HxY@4b;LF?dYa`9f%cTt(rNUL2mQ z1CpAL8d16J=5(O6zFF?g#X6Nhd*rgbc$tEii3t01?g7zD>ilRA#MBQfKnZFLT)Z{) zm#Pa8VWW?ohD#(9FQ-m3%Iu>DDvlib58Cd1V$q@Nq+6oE*%ZIy8AG}x>|a~Lt=%pu zmTOVVR)?OBUvJ(XHI5PYYh&vxGL+A?Eky?0XDd|vHcS;c?A;PZR#Oblfn(hNG5d7P z!!RC_UEmVJM2<59pq=h?GyJ<>w|NjfDB}-9| z0A*EYqqdT9k<^_Mb#le{H9hh?XWG0#8vCkzc?bSjS8}wnuOYpve!-tL$Bju=%fiVl z(RfZ7YqPSyWb!Y(3kMy)2C%z`!Z<$s|7UG#dqGF*v73Ww;&Slx%ax5f;x>}BF)m*C z92_~g?%*&~Ikv!A2g7{QP&cW!|9i(aP$}AM8o&RmyTWYV*14R4+HCNZutICgTw|-w zPnz^jH-@hiy7AsCI=LcR;tIz=T#gFI?gb0c!r1XU#x{2_XQHcb!>)^v*da<#ztR8C zL87Jp+qR(i$`(P0UKuS2g)&U-Nyehl-)kKj4;g7*$z6q5FW za%KB#Ky)QGHFdJlohNZaUl5BoZwD7~-ueEEW3Og(8KPgg?XC@8iVM_ndFBGE!PZ;J zk}rIkTzw=)Q%ql;JlFK{YxyEl%LTJZ!#a3=xOwQdYc_93pT1kB%>T+vj>r4qNX|5Y=;+zg;RQYoi2?43`9R8_9{P5z}UXx@`2(X z-IaN+Bh?^YXPx=hmzz-!zgCQv-`=zTq;fp?vwy=I6UuAwo2=IzT`tBelTO7x?Y?Od zHMLUIB+HwcY#)n7WG4+6RjDfGre&%L`uI4G3;LFDk9^O&9Ur)P=t@cKuMlJCAD!yD z<{D2l_u(Zre8^pHnGy(noZg^f>dY)DfPNveLl7aNmcC|UTRt7~kjk}(yHnR^j5`v1 zfrim0CYAl@fcKkmORWs+>>slt7ES&Q!3SjR{P>Ye+zHbktXO|BEnhUQaQVz*%eeXE28bam)Qf>vT#w|tjR40*feli-Dwf5^n z3DJmsv7ZIw%O~&+M}N{yOvM+E-@`op_SxGm1pUsX>+Cc;_k*BPUUk)1DXrgDP|CdC zHyQvZ*n%d`)kO`B4%kyO>U1)aK|(vNky|-{JPrXpwRsz1?~qu3S_T-+$f9e1!~5rBQw~g6xAH9 zt$ZvcnPG~$fOVpm|JqHKt?4Es-du`+SjAj(<2w&x^un)cFEB?6H8O+E76leqomY(W zM#HP5&;eyg1`1;Dsd|7ZDdOpWa&a(P>;lsRcv3aEV$=AvIs z_0)9mzdoiuSugfOr3#gZ0qTnAM`dR4hzwv8Uk*Nh9;$hP=t|}Q5w02{rQ2N$1L=Nh zQ^82d>U)0kU^5c+6toWeu@C`v6SL?o^yf0ow;K~k`dSd0o#v5aE*+t-rWL?W z;X@`b_Y&0|-+o!IQ}OJ@8TK0F7oYCIB*Py3+^*N`>aL&Tp7 zfLfSV>dKJYNDZF|A+YUU;J*mR65EupNgL{9kQK{vbEqceJ#zDH>974$3wO32iBJ3d zflh;u{h6K~da};>?oEX@K8pr|i#`QyGp;9A&^>7cf9zXp%ndQ%8@T>Dws!qRJugt?#eLowWUcsEFTUu<@~l|TeDnY-c1{Z7Xc^Rx?XMz{eBhKU3l}h~bV?`&=_zUx@$=j>fzJThD79COm zoL!6}rV&NmUzv}^)_o_@#)!U|_l0iP((EDr@5AYh{Y1u%_3mk*3 zrBrhp=a2a}-kqaQI&B8R`NgYd^CbAjx!mf~q?^v!Nybd0rtFG;1}oNFDot{7|NN#V z+KBf9nw9UqtvD#?^Ynd+!aI26-hG{%R_tw;a~uYV?s zr(zfbb<*^Q$XiWeGR^>!2629yFh(fHZ3|)yLLnE*54S_RugCmDZOEd-O=k9@fnvbG zckr<7+$);ErCcu8q4`)kkE#o%K!hadsk1!GwSqQfvXHQ!Cl57}E%;Px&MTo+L(Z8F zFt#AjZG%2rPlZ4G;Z?nJ^ON8!JD&j0xRalQrCS!e zUD@li`1dFRo{+R7uBej+6-j(m4f%c1&DM+SDBMIz$flNMsP2}&@!vbSq{7|n-gJHM zwbTmCu2V*TAPU{^I!s(yMy!7-HPc69TUj2?FtzWyu9)+p&)(z*nY`!f19`Ez8ugv3 zM50#G?4w$|O)bsEalli++r%75jmxbKuDF@SR?IKaPuRXpnz7C+LABG#GUH(34~A~h zP6s1$9s0A*;w5?b$ufpwktnvR%Qsm6&JwM+v-0Gf5Tl*FmjiWN2Hh<4WhOv;A8aIb z!YfVGmYW{zst;Eg$s?jS@-h)RM%r{xk`=GT$j`$OpmW&2nRz*BO!frE^!}ybKGGcN z7R(=3d`))+3EQOD6OKLBj}|b_61vUb$jbLJ3+S3crBt=Lm8jycbC_Xoq1ESrwZeRd zwqmPfea4wf$-j60^Y_mG+|pejXGD@F?CSOEPEJ<~QqhOj3^OOF zQ;fj2@+tY3H8TeFV___+Se8IWRCcUy1m}ofP*v^^0@q6`o2|JrIn34FNt=B$b_ZRF zGBB2-u}Z#L2w1lB5WzDLsX}7>xGz!H1v>|JzMXZ#dw#fz6sU&B4*oO`Z?eDDVXu!5 z;fBtvrAth%nkyhrtE(Jz_zs0eYW@&|3UzYEHy@d@zioZm7OT1fz1>#6n-+|NMIW7^ z2gLeP$r{uuT&sfUseFKv744Ng2K%1qTyt{a`jf178m<|CjffdgV}@h@-XUC9Z4v7| ztEay1-X_cYTw{)9+o&-SGdSJkbx4RUT1Hp-nMHOi;ra;{#B{w8oaES=LI+5n=wwxk$Kf^#NKmUU1iJv=iNHaO7*V1@Dl>8~b zkg}T3mdGWW$A#8~#6Q$1YHDTOHp}R8q%RrhsZ7-GbGP~$B7MS_>dU;)HwyZYh4yOo#dwxYGz-3Xn3+ z-PA36b`brwx2U+V!CMw{&Pa%o_G}NWm(3fkw*7VLn4AC@Q&7|~A$zRE&S+nlKoJM+ zMMU#?cA-t1#I7O= z7Y=^e_Q0)t;qV=CB$q$Es<2Arny#2|$cqKfCJ*7wK9H)ZAx;0B1wk|~FhcLiLhs+k z=SoVRcKF*Su%77e(6P5a3?E}v%HFwpJ_TTODClQxYUCMYl&7s#H?z<$&d=846rU9; zF>H?yFzk^-RdFhcfIWjU$PCxffA18o;7!|p9`{cN&6Kb=i`|aZg+?504DR~cc-xK; zTQ~B*V#QQ_DUsU-HKjUAxk2?)qj4~Bpk$hNe@;P5$igiev5;ubJm`07iVms_dH4+$ zBFAW%2}^$p)1`GKQ5C+lki_YrsY}HNXYhPjKT}}XzJI95W}d8fKc^h;=HEL@bs8rE z@NM3$BW^gi;!4@DaPA97DJXsBhsiBHPd z5^-^Z`j~qy&iMRauS9nzeeJN>)BCwgCJOl$@%ORDnft10Jaj7bJeqh>Pue9fqGmZ% zKHh$C<%ye(hCIUjxg^|bF#-G2Y_>b$^jK`I#Bou2(R3B$t4TDjZ>H-#d(p;UaUv=N z=LkUf4~2)`XFx&%ll&T-FF7pNr%Liye;>-q`_F}4@!|03>s0T!30Qt|O^wbqLStrd zu;f9OcA)to1T=GKiWQP}XrTq^EUkI=ilHae%*IXt)ssAf;4s_3UBVu zVt2n;U>~{6Fh&=&Xt2m*ngX8&uJ@ZiiaWr}{%#yh%PyK`LrmQN8I!@Hre!K&@stNd zI|s|H{F-?gr@QLl`NW9Ribbx88DqbA&ii9AI(!}so-2YG%J(~vw@d39h6OapT zdwDbd@+FG;4gUp2psfUF$ajoBdafNbizB84y0hG96lOP#ZG4^Amuk6pg1@Pgoh;Az z?^Jdk^I_E$AWY)dpD8hwHy z$ZvbJi6B9;GdYwEru)!SE_m9IXkjIy)Xw$3laYsq(S@qY*KDJykH=CbL}Oy2ZVSD} z)_5suH$mbQtB{M#Bf#?Fa)0YpeXE~NS)|q0H?-s4EXVhll~bSmaB=$Oxg#M zuW*@-eh#We{=E~MU$L!GedK9iH}5g;XmkXIV`^)O{@bhafA8q;nhoYMH9#niV>ko( zo3O?mwxh7jhxn9o!F72L*zCN0^~9OTQ9rLvgZ;W-XsKS5ObwnDH#L?S=*Bm(d9Ikl zHQ>*G!1$ub^+d>2jl?+2-^=~&V5y-9dDl#Ig~v~!YN&Md zSA3>v$+D)lKK*tM3a+4cVGbr0qEU*e9vWi|OTCjf;R>Zu01`%2$PZPk!>2@ZxZ*9r zQlWD0_ZGqXdnnyCr}nkS;#H(!M)RQrg+J`B@X)awZ9r!Bz0mu~!`303>8#B)3Zto* zualz_OdSS(Lveki?bA596Kbw3`6^51fMPDQJM!b=GQAG7dTm9#4qXqWv6Kq6zZS?Y zKKbQw3#b1RI&mcHQLzV9s2I3?Yw-7ud)s1kvl#SsYgVr7W%Ylj5_dJObR2_`b@Tjh z%alT!Q<_ZH76l6Xhg`wI$$16d}c&({HYKR+v(hY zWij(o2palII;zToHcksCemo2yR1>$iyboH99L+6^sz;5QFuMP^Hn7bXt>T;fLUm_v z+-f@c)Vt}xh1qYhS{JvMSn{8%OqknN=-5(9i^k@sgRArq!Dub)ppItd-#ewsZxiV^ zbtaucWc*$G@D1hx5;s!+y)FaQYsfmN!l>d3H&=h1BZtHLHR1CNMU7Xd1Uk_Oqsxy; zQ`@f#Y@Y1S^Ut|i!P1JGt@C*(!mr6LA&r}*!gQF;~!$NUs?ae-{5=ictPK&6y#%UgC^$Ka>!T8(1_cL4r)RysT)mdqA1U#rN)0eY^**Zr z-Az~aLjhuRL5NPFm2_l&tmb^>tSljZVKE-q&2p^179VZ2iXmYh2guNP$VpuTsU8eP zGS;TYN=RQ1gn3#$fAZ{{r|8Lkp-{dcwhg-nRChwKAX_uX)7$qoAV0t87J_%}5GV4c z>q4N6aWlaB-#fbk6}SlPK7!fv(EHOkzirP2DSOws4V?_BNcr#A{tHKjFa|s=4pq1-t3lY7nF$y|0AT*IG0$#jKyI?^bEGEN{--+!oYSMrC`E1(hV@{&6|Daf;x8+9#B$+fBbO#3hynuuOEF@c z-Mj${yhboS(0R2q@G@2YU#IlibS{yEZ$e4eX(|LCSt<=8Lf}g947k;ujWozGwux&s zW>(Ac;}s);5q8|3`GJ~>LYgIR7w^|c+ z$-RaoyDa3e5pHPaFQq(Avq6V~IHk~gvxBu%hpnt{!OasiQ{XI*BlaOiMS3OFbMB1V z5b%Dn6sq!`^EO+hK-W_=ot5t_|9?rD1;7Fwh}F-XCaVDR)&{ZWZ7JR9LIh`U%vLhD zIXiU|dphB;*+|k$YhV#ke@qVj4?dHfW_)Yh$yh5b~Yt`pN?`!Yu zp0-hAQQ82ot{*zJxZq#pa&N$`rbR#b(eTMlETqU|OxQhy<1#@>SdNv6JXILw5lHv7 z=$EeNsL_VD_?Gtt?W5PAwBKE}c&gpo+vr8oOp1@hMn4ZrlL0<7rcotV*g+k#AIQX~ zHCIv2A9p3+>u^4HI7H%oW)KhE^rsApeYG40Qw_>Ljyo)03Hh?V79YpZe@%95PO5*6 zB7sZUhPiU{82H4$r9*VkW)YEv`spR3co@n%yiU-Tdh z&*Cn?9#K1(3(<)~zRAony6HB`-#g2OzkY2ULQBGE9ZOn3gX*vSs7r)XBS@%dRW387 zp+TpvCD44rK#K}&6T_@(dH!jQE}Jp1x)KJHTxv&C*linJ6KKt?+M8!W4D{GMAzL{# z4tU0vx($s$UFnzA+IuVF1$0N3Xyo>!{AE=)$@3-d0uUFsW8ODIlsyc2lA8>LaD-;r ztF2x#CfEVXKxU_$(U*W9J-XccAfWbIoI)EKDBaOL7>h(Ft@_G*ITc%qyL!GDu>JQA zWw1l}@ZS_$nx2s%U&*ySH~T}M%Y#89h}}D4lW0_R4@R6La20}%FdcvNKmACg}0B)=0L{0L3Rt#11)KxFY& zGuO7#((@ZDm!=5ET{Ho`;xgytT%>1AK>>JUI0CENt^CNt^q%9n?%QCWr>>%8B~LcOhntZ=7yWE?0f-awBHW# zCkfrE8r5$|9{D~yBB?UPk1-5Lu)n?!$_rA|JqlO=w-8~E>tcca`_Eal;|^SR-kJm{ z(ZOZ6l+Rz-obVM8j<)8@wagX-b#M-G-{Bb^ zS2sSkf#gC$H(>VVErb+Z!oKZS+T%gi1*9x`xWd`e6A3 zg1Ue+AkLp!_;g4x`-=*(Gei3Av_NT0+vx6)9P8~FXHwgPzjwSAs2uH}{y&pvqyvju z0zHXqZ^(r_EZQi-EyG|y5w%h|S9%mY4cYWQwZWiTg~U0098T(F^OhambKaFzvnr)5ZXCwqcY^8`%v{q0> zmD;N`R5kY2P_0liM!$Ty-Yfs)pXYs_H|IR(KKHrr#`aD(=g`CaJ@!Vwpd+<+;Z^G} zC+wEb-g{^6HnY%M?Cen#QrIZ9Yrrap-kQ&r^1!#rlWBn4z%Hgb?sh=Rk-61x#K z{P&{VA4ITu_D|N{f1MFYA2>F1q$b}JbgSuUK31iB!~IkED;NKSfwx*h43n1G@Rf?n z`i{8A4hva*k}|i6`s3~O^FDJ>Z)cl!?zWISbOT(XYDkHXTiQ*b++?xAir_z{W?240 z_nO)l@=9_$K@Gv~DiGHLz_>>hAOG7UOC^KTX{i~KDkX)G@`_WGf__?aHLdxNaahW& z`EQEKh4yVu*A<@?_~r?DPuGNHC%#yC@sEb#V~Tmz$TwXZOsl{r6Yu#$&a-{7Mwi^M zBKzLBMk$@m=TF$JpTDSFL?c?J=C-xKi27-_i{#wfo@DE3=bxf5mAXL)gTd z+R`7d_@;_&W1AF)sn5?ypYgQjl@QX|LOzr?HD!I|b?I}1<(A~MZ5M9ONXboH`)S*Q zuis(}^~y{)659*>H$+TW2xbd^)f+i(ad5#pP#c~*28z}lBhc?(vCWnX=^<;gzPptexNd;H>I-EIp%ZZF?U+#LMvvl z&I)CyexF+M7yqaBdZ~X*~EE;aIfRX*HIlI|eHIpzuCFmo`7!6*7^3+Ugt zjvu;y_sfNOIm2&4J*V_# zN>nS)to)ZVEumkxPv28V&F4RUt2h>%>ewN?uo^SDV`OjtwB+k&O8QY9wHush-%tgd zaJ^vo6=)rvBwc5lt+tT-GGSPAA?hDZs?+rgHVoV9NH+*^MG7f&M*UsEV%`<6RuoLTLW8j;ltU}@ivfCt);^U z>W70-@73%h|4LJd`PO#ORr!;!Wmq2)MrtjjTBVQVtm?h^Qx$Zf0W#Dp9vW#v-`+L6 zC+cJ^!GbqSNUCFBsltZmuTaao(iK?0p~ZEvm3{E#uEvm5AzWV-t0&g#(eA zPekj#9vfvlEuC}W1D|%eFGkm1AFbVcZSD&z`$sc3oZ%BYO;o)>=M>?|?Rm;{=_!0;Fo?{pGFMW#*EDzPuJRW#YOXc>N`2HbqC- zzzbn7&Rw0?G@$J;xHGqmarhhcw zZQK0h8OO4pFM6JFm^OFL_&J@7iD#-VRBic5wr-rWuKoG6R#b9*IcLlCTjk7yhF1st z@fgcL>ZKAxnkVRQUjwgMel5-_>oin;5!#~PDRy6K_$S+MftkdGcYdJf4_xNTNm9J? zPe1sT@3S|qeTbf2=!Aa{zCM3aYjM;OS#J1TY1y)>ad@KsZ*t&dhH)p*$k?=a`Dbh+ zCcdg|%2Lc*8Ux@o>(k!9KHa$?6(mkT%p2uI%g*%wfuNmaw+CMe4dE31e}>B_-&>7h zFLw=kKjFRhP%-A%HL1{p-4M%@j0MBOCrBwpR9@feuvv!?!&Z6UKnQ9P=_m zMi!*^qjX;TXjf6$V1sSPrXG9}$Pn!Y+jvu6c)c)0Q|V6mBHG$xLqcvc?<3m~|DWM? zMH|QaDQ$pvA)kH*sy6+ey)YW1SWq`V3Ru+JnWMMp-g)0}@F=^}R}l=n_rj$z%71I* zwq>M_vE9V?_f(C-D#)1MKN_Hg=8k3fx4Nnwv7*U#w8`!1z8=CmiIxv;IVa)|C-*-5 ztl}dCJU-2ttg?RBe+0duaeM(?eUTNfYzcA1uyTncS{?wIPt!{l|- z=gU;S-g%3hWA>6YyM(*;=mb$taZ#`EPP?$FNCct~wHx%1^Q}lbG8>iw3-vTwfWC@s zk>T#rT~x(-WW|9rc4U>S)jg+_#pnFw6k~76)LpsrPI<+Elw+F0N=aEi8#b!i70sbi z4>A;oC2wFybr`=l`DP(C`VToDd|!<^R-b%bUWBuGyxUyJ@af?Wc$%Mba(uO^L16yC zy==Ou>bdEy?@40z2l8tw#;jNAQYxoiJxWUEKX|TwnV)Z*G<)Ui)GM>)<+coZihkZH zHkkV0*5qPKS+&6v-H(k*`p@LhocWEX_ryCj3@K&U796uY@QIyeZ`=FPe>6vOcItg_ zc(B85ZpFnO>OC_i@%(%%=gds53cYH{{E?SE<+%{BTejEKIVsqVvwjBgrY^Z}Zc(0A zQua6x;ONHbQ&=4!L?QfkTANM(6d%6vaOQf}a63T`YNJ@lmxNo<@o#OX!iM6J24|QJ zKkjA3k)K`vCT^53pTqHaVvf-`FTx}6kaOn=$5anlCFGgT+_NqZlssPxtC zgX`^v3b7G9t4p>w-n>@3Rg4AtKQIl~W>+`wp^E+S=fGR~4fQ;7d^rSw&qvl=l-JG- ztEP_C3-#gJ1Lj{FOd-RqRAkhHb?p^xu{)HR+8anDF8ZpNQwJ$bs;nt1d5 z?Bv%MqF>dgqdxGxZ;_A6-fDrr)8Y(PcoMr@A<>p39_+%!Bsvi4P-EQhR6@;rojv7da=#ozdlK>!>ucIp2KMnvg-}Mx?y*v@9QgIwB*L=j?>Q z`y??jF&eDz>&$E^&*S8#eMY#x;C zcp!g^sd*YM1+@P8jzW!~OH|FN3Ni_WvfCF!7}pn$J@4KRz0Dlf&Kq7gS@QSwgU&4|b3~gr2UTqfo` zzI=(6`gP^frAsu_&n2KJKuK4`+AZK_G!}OkZ`CzUUf%sTL&He@{SsKzg=yKV_b21z z#Ia_Yp;<7!(n@lOIl4tIU7R%!i(iKSy0{AAo*bAU*6V??N5({_B8Ge{)hF=Uc-s#d z+iI-YYY>NVG3ZjBI1G@@K~0_ULp!)f<)}&@YOW}v+E%qo%5H|i=H$ni^2g${-aSNB zM9Yv6AVuKYhnQZgWwKfk9ka4g>SQ152=`|L_`B17HCyI&09IrzhOEn9p-XH2$hR}8z|eI8RFuLN!#%in zUmx1y_*6%Sp)o8?2<4+bfU{s{dev&NcHgPMs2+d1^1MT6$1x>WB^N5xg}%hksEs}W5Z@59w{ect^RO%@HTPh#$3&#Ar41=MJW%f6w-&c*dH;K!Ed z&1g9ZmZ*WKE2Q&f-=xhyAXB1;bl>~OhNz8^8MQOuf6evz^CD5(5I5iEBG`XY>{4jJ z+dbhcMg|@9=XWG42LJX0<4Ari>2_SmapfoC)Ow+7f~?I1vRR(y5A7VnQ6R?BCV&`d zFcm53;`dVGad6=0Wx?LN8MhsVfXxdID9?Qu;x#ggZn>@J`;Uez04!^uzglAWM$7Zd zqO`qYW7o?5zSvVVEp%BRbrF8W*5^0xkH(!6V-QyTbH{l2FXgSeD~#T?IknL^R-!R$;UG zS^so=7Wc>~0f72&W{6Tu3`2aq^q}^`OU3V8@+~)FeID!RFx@+4Q-0)H!z|bWn5yl% zA-`B4v zGaG7E{PT=1mlRUiddyokX!5D!$|qlzj9$O4q#g?WnuKCY{A5cR4D=-0)6^*EDf&yg zm@%lpLJl|3bFLYhj7tUFtzQrV2c5~35Myd`ygw5_J}~-iqy$;cwpY3zc*Ws?iitC> zHga6iFM^|R#RgjTdHV9*RT1{YG;Dt_Q!p3JYthD^$MvTR;tbKo*+uBIHZm&jAI)^yR>2T;6F})Bdt1qk`+1*H#$xQ7DOIC7i?=TX z(q*Iy88hu+kKWhtawHw%-+hFE@VnFF^=YNfIJV`m@B`3t8AQ@pqS*lCW)b>Gm)54Y zHHz=}r($g+RJ&n&UMf52p>d>ia20(|*G2KvWr;uL$U;}=ma%8xW!A?Xnxu4NDX*v~ zRw3#NMDNsUNmU#nFPQMy!BqD$eo%f6!CK}=K$pgZGxun{kR?oTvx{S7;x~%I#cHS3 zn*l0?>6K>=a*+)H4l?u;pM5`3Dal-}(0??%&b#eJ5OGHuvhHF8#}7gZ{zX67On*zg zMr&WtId<{8j_tTc6#fj{B&RJ0a)iB)&&iP_IJqvpeuGS1G8yYlBmhj;jI zwpf-kk11>LqLFL4jyyX{9IB%|RVi~oAs!U+!DCe^%P2GLAI&PLXiZz3Vm%mfPsrho z{#=k{tdA-f&&+=61TZ>8Q;!Jgg6`am=>a-a2HjEbE0{lWq7R=+CCUoF1?#>%`$xl? z=&l6b#7Hwdj?KT7H(C$~4=&Z-cSx24iSoeorb+z1?bWe{t!g`LD=~NIFElRLMGS-5 zLWQAjOJf^xFGKz45swe!oQZia1(^21`%1Uv2L6B)amMPfzQ1GO7r-ABxdo0Pk7aS7 zIO$x8vbZ#dH25KId{63$hx-n?H_<$IYgIF}z`|OGoy)#50x_6#S59dA7k4b*HufQ*LmiM8S z0EgPFeG?N)x2v_lD=iih&ujZ6H8IVWdlj3=j!bQh?w?XPk5uL-)0EETKqU_CeIiq5 zwA_d=sq}{@92D!#H*=)ESKaT9?TmpM?v9^&0M{adylJf?_M6jnglL&hV7b(A>~<-h zJOnyu^fMv3;(=4M0_(j@S+$8?RA4a9B=4~>E>pp6c{$i*dd}q4LlH;%ROLG#4v=Ti zgTaK0+ueM$X_i%mOAQcQ2Lf}EfnuY`}EwrvET;sRcFH?EOa`96SxwaTC=NopNiPPY#E{e5`$E(ukOpx%c z*eSK4oiXP|OA>v2p1GvqhY;9gp{Td;=b~k1nb?BC!I7^FzoL*ynz&54)1HtVT4Np6 z$Gxo$OL1$a@=%N*UA*$>$J+rw^hvgR z5sL8yzTv3X6E5SKGB0NFBnMGtBG;LnD}v87!GrmA+n;XX@F6crH5(s&Tu$w~^1%ex_z2bp|KAce&N0Tb=VC z<&umVX=}OeTFiXLyBSK1MKq1i7p2xY^JVP%hjh5 zp?R)TzT@iuC8OddzQ9epg>59$mtRN$U`F*zqUSx|hnABOFnAQuO))D9$fnILfLMHY zP?A%v;{UU}4Y4Po#)reaM7xP&9X{6Q%oU-+yx76fEX^taC3Xuh)?^r9plCM2-w+Di z9T@)3#M|N0pHIpLh7iM~La5m(-B=i!qM&zLXkEe^VvvwBmkP3ZCAFNIs0A?n8FjfQ z%&(e!G3?r|8?or7$dTR4XKJ#}4BNqT6k54~Zb5=2o_opYzHv=4mJ-;|5^*tEm5yFt zx%naC>+h(mTH?pd1V)GeS+`$9Y$0xVySHBVNl7GcyySGxU_q_bc_cK&IVW$+wEPU1 zskkx#In$xShOSq|6!;#pIg}o8#J=)e7Cop*wG@A8l%J$bMwbwYly8bllVwUug#x^Ii<67HA|Zl_)Upyxz5!OPE?-M z2T?J8rC0onb?NY8*Eu~VZY2vdckQwUWjz!7-O^~eYPnmdkl{2HG1~f}9_~Hky6CgV zLPE$1AjR`5PWtVs_8~>@%S#Tb00Lw8uc!gz$WPlL^)IC5R|~vT|KPJzAbO{88N8DW z*C?9jugWQVMhTVa@a2p-LYA53g4nPZc&CJqr!AkVOc0W6*qw7@S_8U(li!!lrMjXz zkz%ymi}ZuG>6)q9H(` zq9x>*q6A~g(eAba5{ZiPciafn_LmCL>p8ijJkFbJIK&&8QuaoY@iE}bkq#AGEpC_) zDTH!Xgpgtw&ML*%qXtsDy`3Cl*;sRX`#-88t(KZxYt+7~JQYy?Ow`)Td+}h#)XskQVe4+5P4SC!R%Mr zHT(qOBbv%Oxly9Vo#mbAM7vpsT?h0kZnqsmhBx5{50&}>Lp|M_=kG5B5#c>E(oBf+ zFF37_e6-q@BDB%JIC8QTmkb{O$#R|8vlo^ZKdfP@=qlswD?AmOSAP(R@eQr))pll6 z8XVeUXj97`o~n^L!%pPt31C;OdjujRb=ysN@}v}ZCYKWbLruAB%?DZ}n#2lW#viiH zft&P;FQiXIqNy8%{LTw?JHt;>Bqt7JSq<~lZ~~wwtn_tlfNcYQ;p`h8wcQqo!J11o zJ1Yo-qRU!@{<LUGe|AT@e;&!5V@;|F!&f7 zbH@XjK#KNwX^K<&{EsGO|A-%daPJ6GDzf7z97L7t69LrvpT+*hlR`SH0s$ zF0#N}QfjnU>T(Cl^f#CA2U~EH#N@MwG0wzM*5$Vx!RDlzy3hTy6UwNPw9116gG*7o zPh@47SubL{l8qevgEZOWj3(th*8kD;nzrace&#m3=jtt?umv8q`c21rBsq! z`y-fS4kbDxf~0NYD>=v1&?u3!OThYnG>ihpNbTFqF9hRm!;}eGA5VhAe(9<0J2;B6 zq{q5xTUGEF!FyBf_xx~Y*o0|T85o{%e%mQr?bKoDX2D{*ODIp9_3 zPHFP!f&AphLWTc=d++7d*Vo^d?iD|xEAGtWOVuZOe`Ill9oun3J>1-a6_M1rE!O?W zY2H+v+nxCHTH4?Svw_lH89KlW8tWwf`siY;W$KBT%9jx$vf_mJDAEzuoy@SN?0pD;s zL)dp)&hfH81ZjV`PZO4GLmZS9Toji|_i5ddaLYVtQ%XD`x-fqV%KpcNNP0K19x=$p zY6gka)=YLfqJx~+!B-qz1>F9>=o_i9NYu3BecYp*(qau!V>3v@9EP3f^Z5Bdsqm@j zCGEY?3+}D;eYx_4yB0&(Wl=gIDdq_7#E8xn_B;+|2BeyHpx!d2g>=pgErMJkE4eKv zMO_^xxmeN%5H1X-_I69O=!!_4c;CV+nTgXaqdbF=QuPXS_DM~cEKn4+tcj<*Mpy(@ z1|fSkSuD_93Fk$-H#G+_!#!d^Bltr%*W&ctN{Y_-Go|I1%uA5&V=KzTHrFo{*U04^ zS-#h~LkC2=PjPsWStSQcR?1u|{%0Orohw{YF`q(CF`$lcx zm(}CcrDLNLQx4ObKXvryhJZ645iT~Q7zLJTm7Yjo#p6w6fBmBorIs+ILS)0OwfY5p zrX~LrapE{o`0{{m6qB19vus@|@@xmkeUQ(_=kWlMr5Rw}AXNSJn z2z7vUcat1kyaBpzg!N7q9(p}(6Q3r`Ke+lQpvtl(ZHmi&!k^`pvp^@hZb68rKE42@ zr1V7g8DT;k_X}Jhe2mOy?@O!yafvpd^;8_tcT+4ikXKM~$%RcIi8<6oX=*P*@r~9( zeP5>4i(&S!oUzy?UFB0Z2wKE6LLuXp+3wNs&*v3-aVxT^WJA# zpv5REmO7usMOb1Huo;bhfVL7JtKL>!>3M3=t^gA&`g5By;*eDy{K)O;c{MU!i=6s1^u zhsyW6^p7U7xe^J5IJ7|Bm`8rbrRCO1tB>&=s|-6$Yo&cKK|PIm)W|34V4zY z7^MU?NzhbPgMljrjzo>Q zR)5G9_uTmu6D7R7x!*J7#&VH%C}~8TPu7We#W697Ef8Q?JC8lcIsW+bP5kMA#By0@ zy>6J86l+38eH8C%vO=c(x?8Y#GA>xIT^pPoDJf^SOSuHZlmvEPcRToe8MiwOT_AC_MQo7+elqDKM|Y_kV#5w!qrK; zsIxK){=R8#_>ZPg>rt|S*(FLHdn9z zK&hT2#IFTKG(X|k7p3R)StKN!oN!a)x-9j!4B(0pY{y}rsGdzTGHMU?^N1)PRjIKt z!?*j0(9p;$PjF;QrX{rjVyg!=r(6g-Ys!1?SZh}Yf{WJd|{Z>kE3m|%KG+dyjwG^28Wg!SNfjwi!~n9PB& z?kNt{(e`6^3R{aIl+AjnrgJ=j+*c}wpDPTRPCB|k&5|Ca!DPT(O5ff#l8N0R{Fy-h!z z_^3IOkda}Cd!*6R3o<>PvNz%A9_Ic+5$?TEoR1%ufgc)(y0W799rW%=6BgnZc#qO_ zc9ic_J?(#bC?D6iaZ3<5&J&|-@ld4;Gr&9nfC+JYRpV(;SvEkRUWALwR^YUc9;i=B(&K9>XB1>6e4B(!(yE(7qX(KrKQ+kfC*j+ z;4rBNNHZn6|D(AGZUw4CnmOzbOC15@f4E|hO2}A!Sy1RGA;2({HgO?!t z-@~XxWA_JSV~%d(-0pyXT65$EXpw{!kW)5}QM`GyE7#9IjEs{L4aOA!$wEBjzk+6t za1NDl;e~;3?FCl{r=dtIfG4_}=MbFd-nzyG6A z)0&A;N;uI>J-{K7e@C+z$o`^b_A8#eN#u*_E-SH*jLYV_?mY7#`mIxAzizuWT4>^$ zzxFLQ@c}F0-ui}2?r3I4(lyUgQAh8!wz0}9%C%#3`V3 zh5sQfX*nMynxO}qJ-brv6C-vHHLoH%3|ouqH|MBi%}vWlmwc=R%SaQOwJmuvsME_d zTF&TfxBb}L)=t?`My@kB&&bduog&4|#$23*Sx#_(bd#XL+U=kA!RVhUDA9MDMJ?KL zA^C1k%^l|7m!|;Vn#59|D`pP6((<=vPCf4C4WMfhX=FE5 z*G5Co91Wu+Hw*_y<)A5_^Ww>G8{$&=mDeq7|7iZhQZ;JaSDxTCbZv0QSWC;zjP#M- z#8;=+7M1cdColSa4UV}uB91iyK1ypfVo(Rlb??qA`#*^8P^HQ4yl)!4%QKNkWa!8+ z$pNA%T1ZFUCG1VPM==O99~1mggG9Y2D6s_}Dw&BsCLV7suo(R+=`kmNw!{iJ{*=*` zwTykpUskv3iuKT`DQyeTZeM5V7*L{H)OHaF3H0&ljr^){0-obCG$fX^T+Rzt4YUv~ z(R7J~R>ywQIfl^}KTeoqAPB6TZHhaY_>TBV%5zi*N~awBHVmznVu6xQ@KYL%=+ zb-c0R=r(E-YjGBD`4Mo&fSrK-mHa$*b(R=r*ZXeJeBTjLI9_XHWRDN_@)gTLj4jrI zE?=s5%Cv#%48t@CM=Tu+0BFTYOMh}4i)P+C_Zy{s zr%+4Skuxe&(abl0c%#h8&EwuV=P7et{Wq6NBuLV~X!)W7@+BjtqrI?K1oC8@2kPT( zCi^4%i9_3|d)TR1ZwT*W?ZAID7>P$F9#LZRQ}<3WfQ*-OxAikPwr!X<9SSU&0=?DB z%w9F6z&;vHDcIaimBzlD?o`&w_>Ds!t?NntT;Cx-fAOY?%e(QOU$JSXeSH=Hf3BuE z+HpNO=XojVxqSF_&U7si$*adLbAzJpXF`bk|4d4R;Hz1;m9gDOe#s@nV-<9VUdjKqaxcRl0i7#sh@nz^!c0 zQer2+zl=W%<#2b%r2wQ_mst(NfYu=r`G-hV??y8OJlCJEBvhvp=j04$(h#^$r+yoc zFxH++bO@B}RVv|cI>imgEibzB+ZyeDd|*oac0~c%6g9nVof1Gtv@To1vA3ASnpx>c znsxMxlD*SbA`^gXQ6l}r-P|Tzu)V&75h3RbcK#Ahk_D~{Odpq7VCQVP)i<|V4oYu{ z9C{?R>*oE;LJjP;LSJn(%`Ah=)KE`O59jDTisK6`3SqU}9qra`cxZI=S%Q9BOarU( z;3WsIekoyL*a+h!C6{j7t*W8M;fubf7F8l7M1PDQ>sQM+T0;7YeW>ES-V`y2i|-;t7+qzbsJX#t36{ zzoxDDUy2d?Fi$;tn2XD*uNs#e0`EB?;*T{ut?f{2d;^yU8rgn}C2Ufz_K!uuj~>T| zC<{$PO0p}cZx+eP^$PLe5Dq6!Ocuyx5!iEm3pYZB&=(S)k7f zu0K4}&EK$|wO3hj1KwPQ_QRSoryR%>>jj$@VZrqq(SLAIhwPG{#J@Ko|94orLNr2wKKe2UyD>Ga0{7gmo2V>aZM+v1e5V$od3CA}q~p^=7;) z(zhH}>6t@JaWFdMx6i~rbWe})AcYY3;TM;Z|KlD=atZQ*5QFM1AG+wDSBT225zZ|? zo1RM{HmFj%JyA_^M(B}2XKq~|Wx{U&U2zicc`2}d{uRccyYB1hg&d4>p3vh&4ieeU z5+zojK`*JqQH^Wm69RopGyId$c9RMOh$v&-nDPAu)Gl5X@jNtab@0pe%1rwDx1L{t zwvQ83zGomhR#H;&Y1W_#`uDnzjVmy8 z6v=H%3A`;d=CXA0oG9XaImvVG1|Mrm#V!gJd5xfUm)&XGvckx1brE-t#D8fCth*fU z?Cso>-96UB+5KZYHTGJ*ehWmXO_FxxOVrL~BLb)a`LuHKVDLAp_rA1iJ)vyKz2-Kc zK&ICH#cSj^otVp1?@RoLEA!?F-x?mgk<4h-|4^UJ-diRv(Js2|##kwmihO1?Kvs|6 z1ILW~jV0ZYUjfu;J$7W|${0*Pd!=;qlrif&t9NUe8&}M2FsgNbETZV%+G1`vJA1Ek zt&W)E=U$*=f}hYuLer=*eJXhOP2=aC5L=&U3xULOouqT@A#>o9E~#vZjkgal-|COn z#pCkax4hno0a!kmauvOPer;HX@wP0WBvGzyTCw<#O;S3#`i=1)*N`IOnLU=bWCBQRq_gk%GVEXl_BMxArGJTKFaEVVsNR_KC{qYwAfc5I1O^}o43*p zj<*l>x66uPzz5{}g{u;m);8jCW(%8BLZ;>Wa-uKI9AJWMwSjvVl7kVlu$HaNWcHkyWNe)Iv1&n|)8(}>RMG%Ey}q#0Q#_#H)pP9V zZM817;XDNks1ESjJ{5fUW3^V?FzX9Mh2J;I)pqq3U{yRHRGErX_cPeGt%$pueKyka z%Y5ikwHy)6KUOzi3izyFTm7_Ii!mGPPV#pxBVgh-ni7mS2|GI}1>GtHFS=174@&<7me zP-U7&H{ED>G|#LPS0M;at=f1&(fy2-D_^k{3xo&Wc5BTxv%(V~z79WvWUW2pUdNFu z4aGPhnZ(Rl1yMbT(-LU9@U&oDubH2LY1W+Tm2gq~V5#>o??>MYP>^JS0(2ZP@q!=B z=uNxiE{aR?S}b37uPCN)aYF!<9Mcowe!^Gjd4j|7D?ZzA@OexM^H3w9TSF6KNf^xa zb!%!nne1R8i!|q_KR;zIkmXr3*6Suggg9ct>;MgML1-y9w$-T5 zVPG*RLmbt~=FWh`;VYDcQXQ#9@-*=)K)?r5UQ-yE+pA_Y8HJ}|4Hu3BA7-m0Y2;M>^vB8%_c(0uHV^kD+@G_rlthgW_O+n86NJEf)M6D?pY8Xa!ID@a zLwxJ~mP01t^-U4??B3j5kmP_Kh)=|E+E0KL@vwY8F$@a3gE-OPV`Al`rX9X-Pa%RX!fYn6@n9+y?*A%&;S*H5bIxnHN->yt)6;+znW~mtXWYeo&`Du#s;6 zJ%&lDrtX`n*x+@-1YMIv3WQNvn4>$D#j+a>TV9>wzYqtYztTnphP(~EX0E~xDJy%z zlGdzS@lmYz^{HM#bJjWAv-Aun>{Hzk&Z2-DnkHwg`GOg0m9O=#rc2P3E7L~CJ?FAw zrqY|0ft4?At&r6zyo|Pammv)lQ;=%bL|X-yB{buk4%@Nv8E@AzUl7Quq4Tnel0j$V z7+qX|@2ucMkYIy$Jc4p}>eRp<=HKB#e$|mnxi)4Y)Ypp{MA#JJr6E=?GhD3#iYLb# zBK0ZUyH3(GCAU@>tEWXv)|@pU1g*DNO*yL~n4jgeFIlw=H2PQqE<)~o?I^;OdHv~t zvYmdj#$H6MSW~mcE5tvV1t*cy#R?*BCPeguT51oPE2p}jpO`is>hO(8pA}bIrhv?9 zR}K<)KhOp*E&gC8`FmYfaX}h43zPbjxH473hBc&t8Y$@GvI02^p2CL@GITudG23EB z2p>iQvSS4?j@t15h`5;7Ex&sn`vvF z`6h}ScSFyn*IVgUI#1Zo$&aD#)K~C@`&%@+iQh{|p;vI7ajVLUTd&XItCVyVGrf*A6_no<|VY_SS0YqsP~ZDDYEVXF|+kE+lP`Vaom=*K^k zUhDr4wX{1R%~fJzU5}dPsUKP~=QrD3nvD9z`F4S@<7&r;cbz{5Ip%-xDM*jQG`<3$ z<==hgxVH2wJ#B-}6>D`Ky@enZ3aTEedl2(_ewi_)sS+C6q?C=0vPD-6&*%tb)Y-~n z{Qysp^&1*1thX|2|JPxzJA?O&Czm}kFsk@2mGG*ydZS``4%V#+0RETwN@3fE%Anu3 zE*E=w!-?2S=>3K9Jgd_%F{n86BLs7Bty8S>|9D(I4FZlPi8L+;mfkUwZs3AcAbkr3jJ|#+DPUl*1XL&3-%q z2BoIZ#Zp`1%Oxr-aj$z{CM8*Os?QmMv9e*Dx|#Sxc36S3VYbzH&~L^-4>egTXNN%P zdYaIMFlDzNHz4dK0Eh6jJ<<4msqs+9rKqLKcKOvWCTzhMeZDtu=btlm$bA_~tI4`% zp=%ZIx2BNwe%rw$E-n=Y(8IS9tphIh68KEGg#WTU0N7&gjGm!jVCjHUv%Erkh*7LQ zH@DagQ${{fCFGLv_KmFR0PAbJMsNLZJ6zYh=6iW20h`K9_=D<7A7}P6FAl0J5et;p z;t>dSvHsXYa&*K7E3H#|j=*4JAMO-G4K_&rTAZ5qZ*8ako`cxqVaC};5mt#Swo%N- zi+!bRvE3Sc7@mpBkIH6-hcNxr!$cnM5=_)NF7;7nvie7(N5ZozcZr3= zK%4ydZG|7%%BPPK0jPu*j5e##+h{7##_$k1`IpqK*)8AA#e{ZXkvGwQ{cAI>LlO%waa!Pj9CEY86uz|C)=1=ON7hl+Pbw zxPE;u1C&^Fj!!*)o6e*Il-3m}DQm3?0Cqwz+sMehdCf}uD1Wx!1VMnX%EtKn%nJX9 zEM9xAz$l+A@%CdP-xpB9(aEP`sc41Xouhu)*LM|F%NO3m0mtEbM{1B}rw* zd%q^%sp4NkCO7(L>Q7vI@KF*&yqj(jz}%oM-lfgaA6oR2Plq<@gk$=Q5q#10k0wKm z7^c)1Khfrx=oP5NSACCfn*Rib1%k!XL-djcxAWmlsYl>l8zRn$<8yViC@j7Nv>0ft z^B+dpDi4Ha)6)ZLfdJ41TzueCt6Y!~%Uf>b<>gHI6fvvJt20S44DGFr#OCcpv1aJa ztW4G~wV0cSO8W}sIoY~j^|<$>&ygRJNG*R-1}CdV6?%7XT#FvuY=#dzd%zeP!XU=o z#!|}0ddCw>Rq&9X;?2cSW>yknk@!|8kDfF|-=w3H6XkFVo8ARpRu@QzgF+dadg(Lx z%aRgGoqewb!bouf!4(4EuIAC*V@r5op)oV`MiAMq@tOjd<4(BS|&5O@^ZE=lu zzZOlx;_*tWh0WkqNA+YO>%K%|fmL`UgTa3!irr|qzy6=8uXJ}9e-#AmYS*=EC+jIe z80Cr>4zZ$t;=HeUWvZ9Mm(;pW1jtW{tlsk=#RG8&oQY?jl&f8H4`9@ZyZX9+&Ji@E}5dm?KFaA z15$ydBn|KV1Z_FhlBcrSTo?+!@SBGb!YTh~An)L4ju#OFS&rB?kte`$9qLJ_K?>Yc}5j(Bb{t@1`~*%mLSw5P5~wfb$gfdX9mNPwPFAATW*ge1-G z9$%)-#2F(*$@f4Z>yq(bRS#MY)X3mhiIEAhWr2G38k}JQQHd0gVB(HiF1tUUxF{oTIgcI{6 z-yLq0Y!B2G?%yiriWloQxOKsBxi|tN&@2Vw=~rhXhKMub)=M5au-o!6^?qx7TuR6; z%l^ybeRs&5s=G;=lsE3ME+(q-?EGQ`<#Z%L9Gd!=%b($J9{WM@XZIarSPL?ru7|0MYL;DqDVY@tz(Q@yYV1^-_7=$zb zz9`9-@ww0tuMMIXMPVUcbd?L5*03tQlp>2B=!xGn0AOjEY`wm#E-(~ms7YRR{U|Qj zZ%B(1DBy*|{Hdl@kM4}H0uF?d?^rLubbhuUGPi|V%G~;)|J%y`<@RaT3G8v{8G{6k0@C z3HhKj8Q7A^$~E~S_@U*tx}hjPg|};n;see}SDEF#U#-Li@~cV?nPvlvvC9nzUiEi; z&&0+0D4JIJ=?TXyoBXy&psp~>)bJzkYSom*%0S5^A$#mLWW*o7*xk@TCTEKnCHtu8 zr|Dj10qOFJq$B_!v|O9Gh5ymdY{xAa==EWLx_l-#c|<^5wWLq6?J*3-xCorR$`tMB6*yj%>EXPcSJ4w zNJL+Q%D0Pz0E}k0--uox>6g0F7*A8|CrKg*WLS(bWDzO)AAYe#JfZer0e55X#{nmR z@#1<8pu1Qe?Yr135GWH9D-)}o>R^ZkJt|b_h-R)4X1mW78H<;yf{etyaxZIfCBCv* z{~tx?;?MN{Kk##0%3Qa(wz=)*eu?ImyUk_px8#~!8|E&QD9qe1oBJgUk)lklq1+8! z=91=;rYK4!N0Lk5pWoxLf8n#o>-~N|pU>AUqkVEKm6_8#;$>BT75letbXAfVQhAxI zYoa-rTi8=1)`4PoHTx`veloJ*Pu8B`n3474%Wuw?JpbHJ(Bea^?m3xjj|8z?CIA>0 zp8yc4ONDt();|F|DuB{P3*DWBmDB%ORI19c;tOCS9|EEzR}pm_MkNT2UFkP^DBr<$ z$cVH*k38sx+amk$ur^q5A00J30s6fD?!tiLrrV77l2E@zo z1nvEN#rv7V?1rI{3o}`O?vN$DArkM>!Wl5p$?Zknzs=2cOp)Z9&51I)l`$JP8@htA1vnpohIKX4&{NMp7c4n0Bs zA(*0c3KyKYb12x$0aQQp6qsXl-zb%leUtR^(Dv;hT+uN&q@=LxeB^I)xTMsM+U_Yu zH#ur69fB5bK0rh|=d>{+3Jb~GddEHU>V6zN{;#v5?t<%^E|RDqMv8h_HDnko_?niU zjqwShYWGW2U&UeSE`8;*?l8$V`XfBO%FBwM41YdA03VPz z8NktVbgiJUH;{t=prY|^zBuLUZvKCbs#Wr?u+YoQ#6{Q=n0DT`w|)m5 zwwZhO7TAsbP<^zd+G-4x^1`RZXr^|uAADbY%_v3K=N`Mq$O0$>__K`|6I~P)ogq>; z4*pkg8Emf`LSf z33uMPljLJ-qKnU-tRIe6H!BqlEnY^pJo>J}T7x~685L_A+PGR)eKk49D?L%jB)>Ja@FU3XsFNqyntLRt|b&mxDq?P`L974(&w%xLNoayGfp<_Ir7cqeOavk>_7vbC=<2faU|Jfa?)ndUOo_*#<|Ll~gchT7^tgl<5Hgqw%l)pIATnmeT{y25IFAHvKU z5PaS_W#UyK9DwQ-zWdMw0k{PpbqP_eTgPP#9|oX!)7j~m6}z?!q_rK@mkY#kRS2(6 z-vPzRtECY;6dn#e`O(hEFl?U?)42yIx;XM|WY%IT`D)1(@q&zDyiYnVFPCFh%q9o; zN0M~t7)lbE*g@s{4r{nFT?@jrhIK}Z3e2Y*C$WTO6*QC_LO4usJUtllf|$c#zvp; z`)eSxa9$=Exu(E1PO}0#YVxi-oB^#QXIq`Uo35|N1C<1}edPDaA_@oyH2m_EzUSQI zV*^gQvs5@FQW>Vpr2)0#x(T9nNvAx|t=l8mv4*)sNT8P)_K#Vq3fi)%#B7rF-M(7XYh%=9%iP&ZKnFssM z3EFylFaE;gcwoKu0ruq@v{9N`2Ggy`a#NC6c+7Kn$fgrm2ofqZUuPcGDVWanVzUy~ zZ8IqQ5h9sGN4G&iycLt@W${D}R-95q!5gLMIHb_xHO4HDrX40n&*;$F&gbIpD?0uF zs0r7e8U?p+jftgjHvGl@80^cGE`~ihml=3Ity$MzM`v0xLx|}5@>C|!gVH{TXJQe; zEyySR?$SGc3m!7uRsH=z)GnsB%_J_TxLd6KeKu`TimzZ41vXMlvejOpCvgO|ErWRtokN8QakT zRZ|4$xo!kogg?+sgzh3!>_(tHusf?A1RBy=6m2Hy@Hq#opI_j5)_kbeyc;6s-y=L{ zNBKNh_mHr-Gp+-gl+zOX%&QEnDs1Z&)2Hz+pFz05uA5NDU88fTXI>U*WT#8WsNN|* zUk-`VPVaAn-oclX#!ER4x_sg-rx;8EQ~AvVCiq1^37k(f}vU1&JOSs6Ma0uICuK+Q7V z0dx12l=Scx%r$=9LUN03IxV9um5N_X4IEZ&&gO9(in*vgayqNFNVIcG4)0|=zpukH zdG+S;?Yci>%DJcN0zf5g2bNq#GzAf-OmP{!HIDB^dhxwIW3stO|xbAQNxml`Ud1YZ2svVr$hz z$tN-l;J}9%D?zC2KbS~nk(zE4`Z900oPU*tiTmO`G_c_8NIeB}YmX9E8!TKOB)gS; z#04s|iMm9MFZEdokGPDqJwY~}M z>m(%^TWLtU5+jqgs$yV9lNEj-dHV@iYD)Dx?=MeBVLou*C2S((-zzH-K z%TJS9Oc8knh?1Undxs_t@XqZhA&>I|R%}!GK6nl`_>BYt6yhnoIDRdGbVai1pw95bN8`ivIL6jURTI*6>nXUzoaYt?|H5oM^Eu z=!j^6v4w)(!Tz4iX$jcE`u03qn2;sEbo z@~`zAZJUTJ7=;i5ptC|2t=I5(oHk~yus%)E*tHKp7K^0Bt@cKIEt8obBBE*VXwg?{ zf1+K2_X(oZlp8-}=x}Xef?c^aW$r8EG+1(LgD|sai>z9d2w7VayKfyV3J)U*NZey( zIfiUryE2VT%6vF3z<;WW>dlaHEg}oPIL0C0fz=8ucPtrWTQ%>B<|v~*vLzAfSfp#A z`sk-1VDnk2ed7`#O_}LC`ftm8%Pl>`uP!qe7uy#nd3+YmK1T6vGJVRR zSG-0n>GB7(a|yi?-M=v;0?pQ8?5qjW*F*P5`q=W)fdxyWYhxfHwWVxYK3Ix>JQAU_;}V>j7GyUbs_K-z}^#J+)PPl%}5<=Z&2Pui4+H#g4cKYCl?ulV4M^=~3kkFj|7z zVe%p!G@$jb^!~gx5v&6N$7|=5ES#UJTMUmVoW~5`TYtuHlkHj+fgm8&x)&sYRnxL( zecfowP3vj(Q5*O;p`-5{r^kzu@fwtnoZ_1K_8!1ArwB2m#PO0HhM*&2OoV94;PP`~ z$@RY?suYW6p@ro01|vG()}y)yPVx$AhSUC%LofZQMjPkf#IlmvD?plMDTB?|sIOde z1B7&*f?OCw``Z^#1u6w%0E%L&)lXHaQrg zB_2_tcfG1d!Bn}ZYp0jPQFu#wkfycfxxty=Yaees-nRONJbPYwvxc+U|9PFwV7Y4l zwuGERl#?)I4dig9w%@fP#zBC)Kxhe=@huecX#{BOqe03-NAW~BCSfDC<$D1>Ut*B| zX|q=Y+nAsI&W(#+-lxzkK2^x73?U05)eZz#3bQ2(>=gz1OY$rY+4s-`fS?1!m0|yR z{WWfB3de;!^CvkKvJli)6iK#;yb-el`&eRgwFJbrIPLG&R7h4+~ep z{5)5dr6~eL8$HutEM#xuWx&X<=XJ;{YTs(<)I?F;69MKc9oZ2>)NB2KJyNs?GFGGH zg&lGyC*&d&;F)V(6bfFi8rTePcb*-cEMhUnmY<3dcQT$pp<)d_hI2v@+LJ6-|J>~6 z3|Q{Wi@JIh^2!xZyYEuY&C!}XqMpiN@3EYvBfwd!^rZaS*+_iVH0q~n8sS7q8;#}( z+!t3CmS8-*V*VW@KmaKBU&^)<0%7L%&^JFWPn7qJ(d7TzNAlvPimY3EW!As7N|}}) zA?D*3-?41D)by!)iV{-P2c^&9)}!GjryJbXY0Dh~*G3?l>(V2x#de7Ik-wuN(860o z4^7@9ZD1<@EIqNswF0IV0Afi`%ja?GeF8~XAxV+#9@=`(Jhyqh6h?4TuTlooS;s!N zjn)WQuZNPEk;GjUv-D!4M-lU~m<8xmB0yH4)&(K&!$vsY$ual^0M0s6l5BqtbM4<` zt}a=Gqwf!f%5HNewWrFh;?u&A&ng&fnDOhP?3+>fb<5EMYxKTy-_Z zcNW*8`sBV-GA7d}%*IHs&WMPJNRE|K^=9)5W07*}6R89n+o?hk>KyYo&XRm( z)Dz@4qW!8yY2%izzR$;cv}6k7iC{lIdhi+_eSY-z6=*tFZPywce`3=5zkgm-UU>f0 z+pic?eFze%g`ZD<;jD~$9|iYuYL<>(_pbFG>L6y0-iuuEx{u}`K7@GaS5wSLPBu(( zCmt{Jr2^D7s};2{UTa}+Q9s7Ukpxk6xu}Eq$d)|i*W-eHiq=WpUY=@AsSGt-h zeOrr&LtpYM@i-%i=3~9#5fG4H3yh!yWipn)SPZm1f@w1;^Kj-GL`2SSKC358F;MY= z$?nB(-&@uEbsAx70^!YK#vE`i=@bx`!%lzVO`*~8Z8Yq?u?it3u|Uw;ry)Y`m6|Mj z5?BW6y3>rRanRfdi?I=o!GwI5qjqN8Zj0pI#@me}GjBq7)`Qca&8aj(veii?%1t9= zJ6@*Ow>SzNCIji6^wDCQL`%0i+--1u`JHn>!z*1gxb|*O9^==Us?1o3s31KOs1wWn)XW@Djb8)?lx;%}_F^J_F0~Kj$g#%kh}X zFVohgsb9i}nUuTR0f@duPOoMey^wj}KENHsBd7|C(a*hztc#Q@GO9vWp%4Ds{8&A* z4WmeOEh%}WGzMVe=NGBSKKq4f-dy(EaGxGW-KP^&v1*ip^seYIC75pDGFm*UwO#Q; z>Z!g?GQ9aGB5QRKQ3UJ$H@wY4o1nm4&Luh9v8Nl?vEEpRkIZn9GcRq2m#-%cBLQz7 z>}$2zx^R6&F4>pMKFb1(sjGR_a9FsDg)2F!ls8h1-i8WTo~jlLi+@C!&kluaU8-Nn zASsNLmDWSp1Br$j&Z{ij2=_VahSf1|5k3~~-(2n*cY(U0b!Uv)QsKLa2|OAr5zozh zixEl75YYjd09W9=Hc_#}oP^;eIe#~w*(XOF&FInBFT{mCxub$DN>7Z<8$Z(c<2bCC zPi>-4yEj`Y^iiG

e_-qp-x^G+3O!GFwoSmy+RrKZZ-lGQLHjHUFC%o!M(3n+Ikg17N=~iC z7c+4tM7M%yc6)D*d2JC?o#SU6kn{r`M}*HTB_JT<$xDYt^1~r~mHI{atf-~L2p7-< ztCE~~=MAs_m4BYyqTA7sgS~Nt_0sU-%qlxAzE*X(8X* z315{mt+SXtiiN#VP2sV%aj#HqR5rHZLc7}={sY+^byCwh0z*8c(*)WI)AB=K)SZ2I z{SINiSgm78=IS**fVid+?Ws-3p)OrH!#7p@0LIPeU3`@(cwmr?C=V57?zGds9cX_K z4cXk`?mVk%YVC5J6t-;#bMj6x>kg`-r$%6a^@RMPt_#F!(@sX0Lg0)JGBY5ZJ7kFu1m|Sr^CJEO{ zQC{VU5WF(>xtUeiu0*yniQ?&wDkwXOJqM2L6V`Na*C;x-j$SDV;$tVDs>Ayh(Y8D}Wl;irC;;XyL&}|Yzv`eY)E|`La z+WY}JZW#pNVoeiAo#~<0gMUp6!j3yXIcdVN3seRllaZYp0~8bb6lAS zKvwn;%9W5ua!Qxkdb-wwPT|qJ5yt;~)1NY~b!p@dg7+mahn?}Uz_5(C;u*QX3H9;l zyGY9%UN!1GuMNc@b2CQ9;A4D=j2Z_Wk{tEpERX=@Lo9FmR~72{e^{sHGP>33Kb-m{LVl%`=SDMN=aQ8vKW;2s+)0u zyiLd`Yc}cN*s+i?9fdriZsu75_gbToVDZc!EZu3$lZ;rA&YThFTBH?`Cc|oP*0Oa z?FrA%?1vwTc6E%0W79u4Q{Ub#3ippaD_)XY{Cx0WF)31bQs4bt54`!W<>||DLfUT6i&zs* zMyKy^OzK!{d@|*a8aN}rRO zr%qCNxTrq-{&_sUDa?0CW>{Z&$0+IAww|KV(6<36**vX)We2L8Y#ntwS3XL?{O?5f z{AW|Ec5v{I@0^%kiZY%Q=42{jholaTf7+LiWA6y-qddK0(oc4;dUzTdyT#9tRZALM zeunjqQ_iXLd_5actn#8K^ZWR;ow=4WExWg%sP0;_%7Y2y8;}p5tY)`Ng+UGG4Q{;ZmvYYa4+;@tk>Bcg8Y1)Z>NDy z1Uyd!+J0~LT>ld=UQn9iNp4^z2|Q#5b`~3D-1e&>cN(&LYS~dr5M~N-;_#1*m2G=x z>${H70Kb8xmteH1?;HKjJG=Ynt{z|eB^?m`r&&GuDY$t;dOm${59ijFcQWWl@<6|xl3g8#gW}rzR^NzR9E8~j zK}~T~7WUc^u5sYFSXASBlf}X1bL>=toO2Q%G8=p-{Y!v7x|{hBw?BRTKlV+$!+wuf zX6A0QWU$0aMiJC<`J8-cE7jDZ#4F`mU7aZieUY2n{D}kon+auoT@A>!xfzvrP739} zKt9+GH5krj1~(`__`GY{yfcxJn9+v;-+g4pKU|bWhP|42X14N1kngl9UbK=l-c?MU z?Y()3sv|c%-%K!8CpD2}WocU1uMlQyy-lo^B>#$etUn=KqmBV8>XQw|bvwpzmGYL- zy!C)q)%{Cy$sOSIcJBj}HQsTKATnY&48I3c+ssZfO;BVuuiDY5)b)MGvPjrA&S!B?Et};P8@dC_c;czt51+BkMp!&d zs5dVbtKze;9W|32;Pzxyx>aaJN7qy1aQK?OWi{Z-kG4k*Ysg>p zS5g9dGSQ)o;xO(Aeah#!E(5hSze|PRonCUE7v9>3bzk5uw%2XlbXjg|p!iDE2Gt*` zi2ge{h#ZsHWLdc|Up}(YFLoZk+d|&pwG1$@sM{vlk+F=TxH^c4(fV4fEN|s|&W;+! zw|nNaUPHD=Zlgwf^OxI$>$sJOk9%@cm-xZ<4}8lGA7Yn9L%H;k?%wP19q+ICt!2T@ zJKA+Q>yv*49YJ*%p}?Q7NL;xDcPP>tBVvgOcxLPY#euhWBXshZ60;gza?3R~K~ zN9li@n_q_sFScul5fW~~?YB>XHmh4YLVcVDms4<^j$I}mo>|QRTgNLe75#V4$BdIS z^mCrGdDu~&%M%tHCXj_*lO?DzXldji_T^4ySk(=2BQl&+xdY`F9lF<|jxlGU)9h0*he|vaQTMGgjt@_%}npHtia0K_?0Aj^p8`4 z$v!4KFgKnu9V@Y!4@aFTjnFKqOAEb{ks+ZkqZxcTCfZcfhHqRvv({zLJ(||5;TIpB zDLB+Ce+606Mz%g5mYowLDKoC0O9|(Vh=SJPzM4sYR790*$c4o6^dp?oDd#JM0KA?l za>4I@soWWf>{UIb6W@*<4!f<(jFrbC#{#x-Ne+FCj%7+&FwlPC-4y?&Y~th75y%Nn zFqPvw0Zy`IGMZ#N5xH87C--Nyc+2poDhpS-nlev3u_!SkkHauT?ugeNd`~%E=}M3O zuT_rXN~h(vk0C)z-?hU$9*x|K_#RQ|Ob%AAx)%fCE|;>b-&da)5RUYK#?0->I#*9W zXuQ}SBfi9ZoS4zTvyul+#LWmfRI+!*m z7XK`j=1OL)TewG;C+0oNHSwFIGlu;V&RJ`@La6V}NGfS!l$&2aA@;D3#V;I<8-c^5 ztt)&b?XaHj$R}pW|FX?6(>8TVHPdvq7F{WZz!Y03}XPLN~{)vE%-^MjjMz zjk+ZfQwh@ubJlvnr(I5tx&5Sowp(;8h_MxwE6QK_w3Wj;${n(|zV6#)oQ}@>YcjuV z#~{_{E^4K3E_FQ!ea*s#gaX?(Gz@&BBArx^Nkc*#==XcTDUS+aSqfpkV56@v#44Rx zJNHv`Pi~+t91AWsSPzVOu10nEclCajYT|I1YqnemegLYR={UHoA(-m;ZA!Yek~C25|1kcVt2!Q3zNq zxwfNyj5h*hIj<4Tw^V_-2pjy2B;kjzn7$+xUNHRv*IL=w_LJJ-!$qw}7bY9O56JPb z{&TKqx1nUEL3f1|Hg2=F$~hp7k^4LTaxt%gx#SSCua8{aDj@C%7R-Rm2HFeb!0BD4 z1^vf-y>i8;0C5oW1@b;?Nw85iO0DmRJUySsgN`cC^aQ_$SvK^bWBJ$V^9}i~Qjn$4 z6!W-v`wK;Vd%_RG%QZ*;;IH}i-K7^qZOio97_#g}ESt&u?)wTpp;2Roe!u{gm$|6c zM$?9>qNoe+AWNnP77CRh{Od@qSlNqF=Db}~_A75udHH9VpXRYY{9LzlU}oZ0!&l7u zD}ZesZ4Bm{^g{C+Ct?d1`zJUPOT0Dc&j1+a7qsmRh)#Wf8b|NU=l-sB!%Qct_9o@X z1YeOU!;(Rgxy53>cVPA*E>>tHS>Ach7abvpYXvXE0j$&`-7FdOUt-*maBc7VsB(A) zuZ+wCvqd>|ck#M%9S_eu`HN?870dYRa=$kN7=MC^?KhWX_It}z9S!B`#Ki}4DiuNU zKlg39UKO86ozOLSlQ0qYagWw;eV2E0t4bY|?Bd#xgbWEjrUeJ(I=vIJNTOtl$6mGX8->QE%coQ$rC)LzZ@UHT4L7Mwf)U))Pi=4uLaF&wh zF&&wXeePkS4YP*R(EFy|Tno@`o#)!?bYqIG8SU+ThzhV~Gk70`l5D8RTi5QY5ENou zLw`}Sx>IS_v*Oy?OiXiD#vxheuV@5sNY9gP*^SsJWPH_Lfdb>L5=QlC21JiyZUw})TB#x=;B@bpU3u}@BbV!y!h5}c-UQp^pcHPD3U)bb33`E z-w*Kof(&3(fNF0uWHWEqpGr3zRXvzlQ-#4&;8cob)Yu= zt74jN`;mp1)DJLm5}DA!R!@-{Izo9TM@omyQtkZ5r)Pl8SBQ^EEkERS&dHslte@@+ zmKfE4P}T|zG3ALfhkUomrNAb!i{!?CZ*5buw@|?7v&Er+P6(! z2F`vG`zjdTZr>el=PTmbG#jHR+gH}{_M8(IX^?Tr;v3<(dhG1{yg`= zZ0P86G5~gM0k$(Ej998K#38MAy2=(RG7M(rgeM{&K;0Wevc$VC(!E}0-8uo=&`*v} zhECB*1&r@k96~Z)2W;}iHDN2^6i-66pQ+~I;c_~_U)uYzRgBU#rK|_{aa=d5N&U-_ z5U_T5hd=zKZySI=>^C*> zMtv^5$&)NwDl>ZLm3ex*%iqBV7;bFsDL?(2_R!=Z=8Dx3xfvo~@*z`AB)_Ms;kOrH z+Ng3^R!DraW9gl$+MdkHXl)Pf$RJA>mFR0me{eYWmQUlTkt10?TFODu$E5ng_Uvxp{`zZZPZ zNGJPTI3$q{rQPY+BZS3Fzxr-#$>8aZq_pLr>zxZJ$)|fMmswN(PK9$j)N@<4U%8${{ADtix$vGMgJ8@wI6bM&txskuMI^Yx$^$=K z-a|bP_eccb-Dk@l0l;qxpWZp3t#+@;`SsZYQP_qJr^5Z(in2nof^R6Q`w@@Ro-s>N zOMgPex39!hkBg|mM#)ei*fU;^ezg%04CsXO9{^8kPhMON;Yya%0npqx-Sl&ATtc+@ z=z^%@mp!H?37)y(fG@NLV}X;@Z@QQcAhltuey;Vlgx^tAN8sj#h#j+^yx!JU5*aG= z^iSiHTb~!RO-Cq{60fwFw=4(A12I7^e}gj(;muZ(5ZLTeGQq%pHoH$z@|Zu8e@W?2 zdAU%1kr(e5Ov^Kf*5zj8P2{!;sPSS^8r>^_-`2i_Ux?futuR5W>I~+I2~wWgv9Pp6 zqe(NXXG5~ChfH#_i;_ny2!G^bXUUtn>cs(qm}=wtngJ91#!ESy3D#XkqScY~KI)!3 z@X`A=_Z5_*hDYL%XW07rk_1${uq~JE+#eBfuxIwBMfs=RxH&v7L6SJ9@XS>7&TPS# zAPg<==3BV)%EN#Q^*zk_YEGunAJCUkmrts&#(CKTFk5Tscx%PdAFMD&e*tOPKU=JKS}Ax$ zaxb?*V&AjtH02$Nk?s&bmHvzW)TrUJo3OYdX3-R^`ElD$lyxJUP{aP+!tLRA^_MvI z^hYE13VZ-0xT1Vpb|^qyN6_2h-o}(J_i>?Rd;sC1?=#ND=ZFS;fZ~X-s)2*#p|AgL zmx9%04QG^iibXp(=*8ltY^R{x7|rDiY@8z71BQ`ipByCXWXTohdyLP&Ta`2G7+`GYRhze8)D0;}<2kjp>#!OQm{4b2 z^^CzgLc4>%j-Gl!#pe=_XV@nI(_W=wWQ#obZ$@UcY3X|G;?a0AlXQL}|NF4gI*WnX zngK(|+Sp974pkE9EZeZiSW1lYWjk#P$hwy~QtSLL=C!LX>Celn{vTS@CdW_#0WI($ z@L=huG&J%a4eVN!@gki)IXClDzu0&E)=qx;~msb%svTnaQNQ%j%Xc zq)k7tWw^5?V^5g+qTM0LeBJchncw=k4fie*k(&hDM`mG#Hr)p@cF%VOd>b^=PErva za>#XIU0w2f#6!88nr=d?KD$XWWt}uTE}RNmJXY9L{(X_Arzz9{Sum>Wh_n6o1VpX) z9)YjgKiATH+l|C!7)AMk?=Lj(K+> zURh@mUR(ZD$Wa#mMDZMSpbV6i^O`nR_eJz4n0WCUSg&LYE?B;!xe#wBKmjPj~8lT-y!?wP2L2bCv_&){?e9Iq6jTzhyo)qm*+z>pEts@Y;C<{_YzYa99^l32|^3A zelMn|VZ=xMIqm@Er;aWc=K{yQqa4jI?#Q{R4E^Q`0z|GHvjJrKxCV07Ul)*9o~2Oo zsa;X;_aqlyoR%-+9u7WH1=0TNW>?Q9Z@uza;>RrI(8BXdcWozAR_C-`+kv0hWmqjUNQ0Yv@*Fef+kfNMCp`=`^)8VSYgl!D4s&R zR0+WMiqhzsUXzKA(<90pK@)ofryF?KsO(G?bNeJfIJv2$uBmK@>FeZJQ_`NgLJH5xRub!O^3r;Zyf9?26jZOgj4 zw*9E*DIH%aQ!WRhIYKkYgL_W}KSXLySe3k4$mj10^?$HyG73-K+0)0`g4C@TW$!}& zv-kv3xUZF~y-*CEGLsV0CpG`~QVsXaD@{PgT-wjKqjVh!SA7ka&9M4e-@R^nZ*EAk z;s_$EtTu)J?Ej1-E0SXR->@cR(LwzZxpACG#RTMiFnc#)nc%n2o#7cq|2`_tVb&Gp zfn!+{f{}B`3vIijd>_oy%15TOktTkDDRK!QO^YsDv5Kl_xi000`x#{&X5U+;-4o4J ztCM6mxi->~1i^y#$Lvnt9NioKIyWAE<1d92(OtY@C|EvDVs+d%Ecv4o^>U~<5;m3-5=7X-WQos?b@|? zLJLLP!gqK;5|OgA2lfq}0SIO|wpoT{r!1=2Nw0WcJ9qDogenwVeO8NUrTg#7leEt5 z2O`K2f^BhTgNUz%IXN4f?P^_B{Y36Yq9RzUNDt=kW{xmnQYfMM@58kTUe20k}nLK z>}xzbzdNq%L{Y0g))QPO6-$nDGb+BDloTXdG@nnTe1GjHOiED4!LC;H73Q*y0^cLj-B6)>dQ`rU3S_L!H2(8OxU;+= zsy4c01m7wUw#p5Ehj&&s*u-gVu%a{sOrY=QFx?zWKV%j6b?twT<#rTxQs)BSyCXc3 zNd0!S)vR0O$CKgqEoAZX`zy)4c27)-Ww~!CRLSRA-L}%urao~0ZdTF<>#(nO|4|3W zyi!|{ICDXjN3K6#VS`WGmh<8=&<%>B?_7Qv?`AU8ukS~>D5*X5g_>>BqQ*m@5|TBF zau#vJ{cGTlOIk%k0Ksj8ZmEk?U;du%@Ig^+ti(%G%mH%99^Npsw4%G^_448j`Uuo% z4;_?*i=|#!IHz*v-TH!bzIx^{Cnh2uwI{}$kFt&f$~0Tb`r<7?ahl-}_r+*TehloM z)id+a`8Wzhx5ppX#7tV{lYvRPqk*3cE(gJ+~ZTX7Ztte^%=?pB?Y zPdu|+1ETfRJl3@FO>=~7>|q2<(ip-j`>ap;c3&olN!3HkCIxhLa>eqIa)C@7(xp{dU)jlK1cfUknQuzM( zdK(#Vt}AO0%#%3kbabc)l==Ypq92wr7rEuT`qLqZs;5LO%8jUqN2R=DQLvN9b#lhM z>#1{k=m3`)Rc;Sgk5JN?Bq5a%1HkK(Av1>m`^W4q@6EqXhg=$xx_kkiRpO--UZ}i> zPjaEe#NQX{Y2U|Ss_EDcy_^lDtlK`r)DJ-=WgcEr^CNl>J;1|n84cp6T}rKl;RY(f zzZLsb!3mIsLb%9I3MZX2>r>`)km`^r4`5?G`Z~1Y!6MC3%&|?uSxD%$wIF6qJ5{5zh}`~Uem#<2Z`L{VN+K3aS=hE%8L|^N zQo5fLM4%o>#{pLh_8R~957x5Nfd2CjN<1;&11BteAhdtm6tO%`>^>n)HRvIC-3&%M zuy-eZGtJ)n+F9ArkDx-bNmfd?7w@;v!^CL>mzgsVOFu@K=_O6Ca^po!&7Fe&T-@NS z*JQXw$jYS=>Tl;v;!CN9wEpwe7G~8~T>LSjj+mj)4FTU_IpsAjq9Es^iEX?>z1=qD z=9ceY(628?Bip`8m+;T$>vqZvk!h+gIt37F7rp~;*9P{=Xwp?a|L-5^he!il<9Hmo zkM30D1S|mSsa4U0Dkz(Mo*tye*h`Km+z+INt-VvJ4YZQA0! zAgbDSCRpS4P;Ez^z@&~%_L+sU*A{-^`N*qP8)Fi8uD^Q-lb)XYu2mkGhB*eb?<%Bi z7AqyFEj!^nC4P2(7%Ocm$cVYrSrv8vE%JZ=+}Gi%p>2LZ9vP%lUpT8Gr-~&RRke>A z!JYc}$iJAV`buhH7R9;9@QL$m@EBKjpn`5j1MXIFcvkWsbLPg4J()F(cJDdg&y3Q@ zpp^hY*F8)dO{fd6tSsmOUg8@&mJ}QwM*2bpLCB50XT@_e?{U7k(E}x|P1m@yJye6Q z0$yszaT1Cpz|pSUf}IsCfSB0@d1xlDHK`XjIx#s(ZWK?PNcy-kD(WQ5N3oJc=H^!F z`#C5sM!-$sL{Hw)t~geZY|6EE_c{gY=!;!lr-(#!nAIbdjK(jOfECW4MF*%~JR}Oz z5w%AeucAVe@u;l%d;d=6mAgX{tAq+2Goqc3a_Xa$mGuE^Y4w)i6b!EGQ4;Ykhj$Rt z`_q{rImF%kOD8nZ=$j5(a(y$xO7D{FifQo~KT-x^29cgyeJs z33B-wLw}|fXF#`d=!;$gbxE9WUI{_f*iS_UNy7CLGGgnd=&tv33QW7)6C#gFcqnm= ztJs`PYk9_U-}V}z&l&7B);uCJz`NFtZb|q;GPgQ3yI^s|-{4_d>EFaGsInAloeUVS zUDHVSR4oP`THQXdFC$!vEy+zdtW0rcMe7SroU0iYgQEuYUC;rz5+vvQ+y(q&307Cy0f zy85H(Y*3-$%2nc4{!Yo= zTTPec&n^cndLPvi@}i;VZ%G5@+dWcyE>-;&7V*vnX?_A40{!@n5Qf4&}i z?LM+qWeY;?Nz&^$+|Dc6HQ(Bi9XT2q>XSWd|ClZAVEh>P=K1-OY)7#v*)Ak?_ye{R zkj3HlNpgw2K0`(wA*eZil2H&1r@@@CszaW5EJrmr&xdz_-f}C(#^Xan4lBl7upqB? zQ)1dk$P;3Fy4()3lXpGE`Ox^_`{+R@{YA6qU!uz?AM=gbNY+npRptmhH6&InmP)K0 zOqINSwKD{R?lhK!C+23~bL9RK;G}TQXw%xQj`mKx7gEXG7Eq*|QkZS&UpCxKPuy$; z2b)e$1%;*F4qYo=f5&$}&t7~!n?Cu!e>|I{d>wm4UhZCG{T~3aKu*6zroRkPve3#v z)a`Icj{6>AeT09}1c=eX>5US!Nwgjs!O6D-js3H2$;?&KUt@cTJo5XBV>GdIcoV|G zVQA+PEWWqWu>L1GVKL;&Ndz(WHchQS{{W1>AKXL` z_C=&MAt~%V#JdSL%?oWJe#8_|tWsog47C_z9)ECnn?$xONnCRSP^9n<_LE3W5X%~s z6406#fV?+Lwfr;QG8lvnfjw+-KYM@x69l#J3*;Se?pQphm*<>;s+8>wtnpl zvdS6kE>rY3AM6r|goT0#(5~T<_JQ1#A{nm59K-Bk%s{d3mVU!XgIkgfPuT>59gb00 z@YvqeJh~DjUdMzcAq+`f8tQ!w^r38hPoX!IQ6q)Wd&83QC=h?bf-yfA>>^2Jk}RYz z$P&aqfU`Nd9p;iqx%jeG=MN82*+m9fu{7>P+mi52Wa59;DdAy|LHn7~<{+fFktpFm z`X#gFL*&->IVicI7j?j9#=*+c)2iYJ8b;mRlT}e@b%z^7tK-~;)|JlDu#@ZkmOBrU zYG*^*WRGHLgd%GaV^w2>QhKvk+^%3}yxP4I(%aF-HlApax83Hx%R-|(K-i|QW~zJ$ zlye0rv1g}{E=k*z5p5eei6tma%4IzdNu2mjME9<@aMFH|`^DAM9!JpIbvr zO4FXkii)((L;fgVC$?x~Vrzp(=jD$*oCiXR;UUPRELyY~9;59Y0D7{;m4WRx5+@dGiAckF+ls6Aw zwMNG(qhmzK5z5LhUv^O`KXXMqG&m)E2~$tmMj;ctu3Qm{ac);Xkya$`FR}0^*rEvm z(`p6QoY^kPb|6!i+)?Hk1rgod(cbbO+51D%PM*ZMa3psljiK(G6Ir<&zPUxUvenqu zZibr|XOb2Z#O8iwym8XHdCvo2_H1T`F7weijIM~pe+g}SM<*Ct5F{4?<>+u-$Y7L% zX1lz({j6rfM6aVBskXFHq$}Z!Bw__4GKQ5$4-E`sEY*Z6b;#7@Sw>=GMPsThI})6z z6?<&uEpjylTe6qH%#_|P29n!dtZ=0{A92fNOL|7g)aY|CrS{}-h0i9}uHiwbWSugd zOY$y>{fx3lrO2AlPYh%On0|4BTVl-C%*933W|weiZ1Wy(P;gHl%vaV%TR4Uaa32Z zQ&l?5jSoNjivV&a7Etxp%t>K5IrO*OiL}1 zE-#@|^u}ubhIHW6Yp~WdG;w$#O$ag|O+pqtx76qOYvAW775AkwW4aC+;N(CaZyCld%Z}4pS`)WDX>`u|ZgU17ofk0%X|L z%w^b$O(KEb;N*>Vm>fN#ZVSfOaNcE3R>tO`H|TOx*}0-9Q|37)Ql&hc6RKjmI;YVN zFT#QwYIY_sj^xZSK}+yBjs_O5v*g(Heo8#1-_aP}yTmI00MoFi%9BmVl$BDn=kiL@ z(@Z2pxiFoO5B<%R*N9miTkvQzN=>R|5A4+mcPi*b6YsCHYOLB$(AyuOcqKm3LunVE z8Z;7zY+Jfg&;s~TDVp>aOwp=(1v2uGuecGQVOh*S2$1m>@Ms_6)orKh3RM?8T zrYw{sr5}7YL1^V`ly=2D3D+YMJCzc8Lr%1J@HY-4*lo5(qA9&$edPjnA$4A$uLQz zyo}w#)yUM+ugmC>H`r|?oLBsKp4+=t~~u|XRe6X2&5 z#@vu|d_SRtg;-HB z@!G^vV@n5{`bA#G@1{Z!#uCK6A#x+!OWwpZCTp{3nHcarzhj`oczOtB9Fzv++d`cq zVsw~B+HI{|309b9g<0+ng&S<4150r5*=o_=hikysUK1OFtyFk6WZG1fNt;u$E~;=X zgsi;lb zPc3PTtbOc$Cy}|`vtJ-be9~o!%Fc-*cO4ga8$6{FgHyGM9_wS~R~`$*udx9t)reA> zP^yYFI2X!EG8TwQ)MAGR+$p7gN6`(Nkws0A_X9yB>}tqYff6BfuC)W`oUF*7O2-1x z$c5E8q?7j@4-@b`{&Dlv16gf;< zTN@3K>>DU(^OA;YHat_@EFs-5bS#s$=S3vS@?UE*xf7JEAt+02GHuM32|8)=K}95x z(PsY6L7^(pR5SHzhVu?3c12?udK@3AsBRMn>^IvPuWVO8xV{T8jhb|!4CUHzh# zmD|~f(@{h6pF-c~J*INXH^{A$)O!T_sMDs%@dz8#+sl+Ghk9)rpJs%i9oSO4l_WDv zBa1Xw?1_$uX*eY{Xnh|%48mwv7R+j{Q}96+8%|1|MH1;NC+mb_Nn>P*MU9sUlH_kC zu;7NKiN_?8-C~%SxXl z^(NlP6G>BfAz-Fo*=Lm!c`gV?E3iMIr_W(k6?(C#wEEyjQYRxDls`t0SN8-lDsA>O z_XiKSCAQ$%L9#kV9*9jn9Bq|jB$@O#VcV204PVgO!!gEcqheHRa(|*{38~v~#AKpZ zve}T6A$ZXnBB?#sAlt>yTNSze(kG$P#iMTisi(%a=bVRu?KuT$ZOVhbDK>}_^Cc6lw z#Ez9D%>}NhpWvCE3r(^14^Va;^YmL{NTj~~hTzu&ji_VU>{cOlAz_QIdKW_YI2KG$ zC5nf<>5k-C`YSDE{{R9-u9eaH;#q+-AWMhjioYeFMxhCc<5Q9Zj>fCTiI$s3%YS{(J zHccs)+_K=}h?n>t>$r_W*8;mk6gM$xk~C;zR*RFO8Z^Bn{Ru;n-iyB|g=P2PYKXPJ z{s@saH~oR>!h00b7jjNX6+P8Ga2+RTLuqnk`W<~C{*2N>OBwnFT(P#~Dt-r`%FR_E z-L!V_#vQX=kcxF5PKicNpOD#aswnr``l@qM@W!xD{#8;5L=7 zqEw-Y8rK04rL?_C5}ra{;)Ey2{RiA^c{pB*+{kT4hK7{;6h^DK?BPX3F7JZemynz1!fb7=1qH&0PF>9p=ICVKByCNV53gYyJR1Xjor%PL**eqMb5Tpq2O%#y zAT`N4KF=sbi{gDx<9av{v9R}v!K6r$EPUQq{er%vLB?Jfx`eVDCVSw7Nq;7+^M|w~ zxEm5N{{Ufk4_z8?u$73&A~J$ATkKKTn`72fQLAB>JDcl| zXq2e#$+VZ|ayJ|{Nx);W&8>RQfxn_p$B!8!eySMiC-qg`JynG)V3RzyAQzH7aJ< ze?)@NIt>i{Az|R8_~*$-;b;zj?eamv!p&Vy6G`lSmO_LKSp}HDl zw_(#k79`eAEvg$-u$1&r`4W3AL;nDzN)M9`WUj|bx=q_bBX2MN00PcWYlRDDms@}6 za>p+G4v+Oe17M@VD7aiqR^cy|65PUSv@yQO(^f5<>xB31}fl;b_6BFdP z8pq_UQqux&TOrKCcxjTD*}W7K^!4;Eo>{_!fpVE zE>bPHc|vOM??fc~Inx_uuaN4m)ub(nHQJw(N?y0$?JYVX2AEz zn+bHmpxW|zDyYesP{$=A^$VF~JV5&!LU5f5b1eB|X|l*=DB2PeiV&8PiGJASgoho! zL+1;vp)5*AuomS!NSB-;YxwJ}^hr2F!V&IDG-_?L@j*Fh`8gl)mc9mV2$7V6WLP3p zZ;=yJkYdDP<9<=_w33%g!Xp!zUB-si$B~VBZyn(<_K~Z89+LJ7iL6Q=_kjznmp3z1DR zjaHxFLPRC|6H&35C`N{zZjFvkhoUa7_BDpY(%NEYP|FmFNM05;Es{rmmJw2fGJ;jz z3;4zHGDXn@5GzbXn{9IZ5Sg=Q>^w+&${)o!o~<)I2xf<#oLLl_?m0|Nwf0(>7{+jr zg}6FVK=E;!`j2Hr3PeY)Y-C@vDis) zCluw0buaoN=I&jIxm9v1XCgNbp;$}uBwL7ULGHJBAdpg>il-9Ll4y#N5mQ5D&34E3 zGxB+SK898PB0h%{oDSl@@)-+tAq6a62#zM&N`E3%lAbcdu4sG_aU{vtad9FzbQpy^ z`#&W2(9%+kwd0y3DMU%F5|yD)S$K;Zh_~Cwj(%p*EJ>F?>@}>)m`voBn-OBod6TZr zD0TK2i&8nkJq;5=cnDcskkJ0dmHr4Tr(;sK>}r!!*ta@JDD0QP!u}>Mi+FA@SZd^jeuB8?79nfzxcAWh4`QFeSl1M* z3uh>``4uv-hWteg4{lrZCj|@c;uG|7+T}fpXdM3lppr@unRfOic7?%kK_d%oXnSMi z^!pB zvQi^!l_Y!*C3fTu8*ntUM$Bw<9*|BF%9TMq*aIWz^&nJ>Tl|{cIeVW& z5l&LjD)x^}e?mi1!Lrd(*dR=m+5L}I?Y;t=r`m}zqHy^8IY(rIy*Qo39+Ov?Ke0}LX#cNW0+8od) z+$n9?a71?zPY^TV^l-+IvsWCBa1SCCe(6u(ZL7sJP0u@{`W?X4x8!PAp6F~^lkM|l z6Ty0h{L$M1LL2s5CrbO53+_bE;6rKCiCKPF)=Pj_rJRg1UPh)dwe8#e3N;LS zL9=d1xEFeo8;K#YoIH_|$#J2!Iipf9;+I1BCi1fN(Csts3Z^E7{{ZS9@V+ZAw#Xoi zN+2d_gzm`l2~MOeZR?E(gR>xD;54vlY=IDmkLVDokf|CU4x1v9=fg(TA)KZt0!lI3 z4oylO4rE4>A)SQ@kR|uYq6#3ex0GCMg56s~3(6<0+T)U|UJ21OA4O!zawm8kXwniKhG?>vrz1|L)$F7f zlGy5+floh!L-a&UNZE%S(G^K(?_~7o+kk9ZwQWAc&Yicj{{X_qlSQ#6oc5IHk-o(| z>HbFCJnp~2bjs&&$_P&Rm)Q)Fn_66s@HHDA0{RIpEt4aFltC^?tWiUH3FN+0qGrw` zu(e8Ep$++o6`QBA8*f|+B?hF99HAtRRq#p;u;*j*AwrGplXN5H5TrLrP)9aw#>P#X zqT|6Gh+PZhUjq0!>NSKV`Wl|$ehKAL$mV`$NtbnJsBym2(mXu2FcqU)6 zJrAv8Z&V_P+Y$c&QSH1OJrYrN9YHiVDCBOjq*>&jCwY$HG$KiNGr<=vkb4yrKwi^0 z4@90x6EXPJkRZ^}F#3xUDDX-dc(#2q+;<<6`JpVY?muf~s6%YX87oU;m`QKAnxqsG zm(gF9S{rF`4E>76cXrr@r!#*c=vi*%)DLF6XTXN#-LsgS1|?_Ydy{P? z2=26<+zVT zHB83dQadz}2`=f)SL%sL5RQ2*aqQK1Bp{&``VeYDk`nA2lc7saBJg5yue1+-4YTBM zQ5HbxbS_WaNxDO_9Kk3M`D0W486>7Q&P&Mv_Jj_39dIjHE%H+p3E^RUwbs5gj}lH6 zk0ZN?PuWp(6jEJ8PeZo?cY=Mz$VP;Q?;z3GQHl?2q|nM({s)juXy7mCbDKkHl64P2BpAAU!Q5wg^N4^3=`y{sLY9tbXlO2@}NS>Gjj?Gb_ z3Mx6$zax!VRQ~|Sy+_iKB^RB_deRnmMru8>~h|NFb2S2z3i8 z+(A7=G9``RKie5eB=?fsr-vsAWZO*~Y>DDoHT2b-3_}x5(B&u+OH@$xPK6}c+$uE7 zT=pf>kxSRW(c*lLAE1og8ra%5*t6`O*ZU%&brd-c2)PEA6BJ3XDqoZmWr$w<@O zW1CG6He+(ck+y+5?rXn9g*`bAPj4#w91~H+8WyO0#Ds=w!hjSnW=ydi&3=S2UhVAQ zLmODocjh_zm10Rg&6uG@#3Dr;9}}@vYyL&SwOo^%`XMSuwmpg00*7#fPAd$HS;lnu z66}fOg=v(^Ht8a|Ut>_)UqV4VCO6oqEu_WG6$o^ksUG|JBU5-LzT{h-lF=r)5<=Xu zcL|3jjV|L#5V}|JSiW?UNo&&)JR_0EM`=INVjnLr&cIaZ)!SosHRjNw)Ad)*H50p>PqVk~^t26u(1D zc!$Y3w2f7ZcG&rm#`1k5Oo^=_h|<<9ZNu^UV#60g>sgV!*7oLjWjG-+ z^^bW-A@+DZ$O$Yyk}PQJK!_n913yWSF;Gr;mV6=Y>_$%sQ6kGfV-L9^t7(?Nad9Ii zg({P{VqX0j6qeGy_n|9czLwqP6Qzegv!o#OI?MP@*}F* z6xw``;%tDsG%@G9>?vda0Fh3yJMbb)R$2||`w_O%v@U$8B}Y3aBaK~iNzz^fnSKS1 z*SPsZQT-A$@U}k?cYTaGF0M3Wmy?X9Fw;``P_JNZX)i;KQJ$K;q>Dj3!fu3_NY?r} zPS8zwDpW5i>rcrxaLlh^95P#J5Zlz?7LJM9A!1B1Y(fp!(-_q6Me@1`be{`5>O?_u ztpjRx3$b+WB9dLnaZAbM5?EECaO6h8N8nM~p-IFM$f%?ZV?r$OYmw?PGelCk*GKz5DGI{|vi zVQ|w63wUUPPVJFM-NY`)UHc&7;>wib#WbR0Y_#PzRTmN_#B50!Yr7UGTZeIb^azqt zk~FFH=z9&93Z%cVepA4@#amz55Yk>?BNOmn?4nA&pq5S9_K`K>DII)SM#I95~%*V{NTK+jIFA z*@hu)_#xS93Z2l6;dv5}o!bz!$Z+DR%j8(nP`3FVP#{tm>rCN2j)ap;Rt|?HOq74I zPGo}(>IBbofY8>^_Jn=N)2LoetaOH^a`3SK0EWfX#jNlwB1euGzV=J#zD4@H8yyHs zSwTFA#2xH`m`uj&f&{V>L+u-QXo0VWxX+wV;&>+>LR0WTyC69bJ&zy0jR80$nv{|s zR89!BJfW%RwTKI7i(ipjzj9sxDiS2?kxAP763%2Z5YA@3QiRc}zR8g?h!*EUHNfd3 zJRFXRQ6!-v^xK6tgw58w6uBJtIj9iKH9dyUni(5Z`5n%hB!57Tw_1XhoU+5xln~QS z$8CuszVAqx`VRj9*r-x>qzbLql~B_Jhzco1J()Jk#O)0`f7mwLu6Z7x*wGFKd{n-} zrTvF$ik!7iLr6AKA;8AUjl(XPB9Cf`5Rr6LblSgUd1Ym*ad*2!C`Ae2W-9E4VA9U3|`1Adkfp2u(FJTHoC3!xwW?hJ+FAgyb0 zp~IVR_LGy!RyGr?HG9U22}d}~chz4H=&;CQQz%5BQ%GAvkpwnDraUn_L`zIWluV)| z{gEH`UZhUR%NED&u_od+Id~UIQS3%rQO9!V6?G#?sANi^j+_kSJ{L+hB&OZXZbWJb zdzX>j)Tu5x<&xnk^d^J^75$8x%J57y{{ZNW(T>H4Ymu{hGN&Aq`q`wCNc>{lI~#)~ z3BkfS8N3{&vB4|ooK=Mrv?w-FB(ZE`Lr9dW3Kpc9F#3IzdqD0&^pK*)pqT9fhX$jO zyaq*O{D};N6+X#ZHaT90a6(kHf3uOLqkJ1|g;dL8YIZ7mL;F!BTnWb|3j4Sl4psjE z1^is~t>xj6B`4sEE9^_U)rwh7cK-me9qW4FK#3<4m=l39GNW;WVhAG&M0|B;f!vB2 zIyNF!dJ<@iF|1u2io;KlvgUXuR|sTKxC3F=fyWb*7@^lYL{NcP$z!04@r z=hG6_n~$_f%j8SPMI@tKl9o(~#9_sZgE|s!P?)iALfc0n*G9*A zEA;5@OpzmE5Rwm(a$s?0%f~~^ko4>(cHt1&$sr7IC|i-dACt=@B$7=Dz_~Fzsfp0U z;o;iuHguoLx))Q&J!pLm@!(QJBK()zB^ji?#_CDx!A3`g43>tS^g#np6h6s7R}jWJ;#OYL!%@}7bQ_)s!a!NBSzEYeZAQx9O8)mjlB!dHn6{ne-d2_ zEk-qp7W5d)Ut+m5Gwf3S(e`A$&isr+(2jAy#%<9&bghe^@U}jrbDcUXJUxtDjCnNr zJXp>6sl{e1^u zv`ge6+Di*hL!rOkXk81T3#oJ=^dp=sEG#i-?Ssv2OhlsYDW$0&{*nL004Wdw00II6 z0s;d800RL50RaF301+WE5J6F4ae*L_p|LQ*@X_(%K>ykR2mt{A0Y4B@*f4koUA$47 z3qo`4hXXF7ndV|-eB)>-t&gGmFpw7^RcDLRf` zh&2Y;!7Aaogdzbz33rWM5Se!r90nkwHsVF_!7fV-L5N1K72G400NUV`i1Kv}8Qf0#|aZZUoIrV5FBkK!jqrml9%L^UrbN zr?`qNcPp49G`uxXpHl}rWWb`g`kK`l4_qGV3^MQi86d2iOLC?20e8VDZrTujkya?k zC}rV@jN60aE(Q=Vg(X} z(HUZil%gV`X^nRTBE!SD2fXEuKLR_I!^J`z+_|1B@M;kJ^QRwxmB7l>YGJ<^L{{RVzS$w-;VZSnh5Q0=77X`M&?WNIx3&c>MAj=3*X&u3`R^==(5nybJkwGga zd1fefjBSG3o4m1LK;dd20w9gine{5=R8pDQ7|LMH>A(!})cTf@m*|y<^BKtDV=7`% z6Bv}SzY|q8OlCb@<`U9Ar$l2JWEImX*D&tq!8B%^8Gr4}pi}|`oe(K}K}Fa7Nr%xd zRW)Z)pl}|M^p@IS@K9od1(XzbS!N-M;^%CTH*-t z1cn(@%(kNZN;~;rRNZ#(<`*bROQ;Yb@x1D-aMevciD=0I6i9 zKu{VYB2~Wv5}>O@6e}>yRYhuPS|fW{9_C|)E&diul<-VvhlFtIBu!_FLo(B{R~wfe zGO2Nj#uv0-{D3&)sNk11%T@4VGe#em1(tKb82I=bF%v<8YOPOITnVE~gS5R0xj|-AGhW`Nn00H<^tnrc?*B1^AEQq)`OhV0Novu1K z5l}Gd;$`TUC>mLn_$Tj3o)Bmyi~^wm6$yZ~qI}L?q2c!!Kuf@a&?OZ3hZ4L3bi*q0 z#WIjeswOxd)+zAADyU{{NPc?cF&N;kQxWvZK~5a2tD<2{o(`!zc9EPjMPPOw9gDUYB~I`^FILO{13|Ea3EAmmc~j! zms2vz=$5;sRKUB2Ezt&mHy3wZY4(d3etL%$lAue1L>HDmw^QZu4&A!jdW>_qdYPG(#zPEE%#Im& zWf+E{1g>u}NOW>|7-Lw7Tz>|!Gg_CJCM?Yza*>>$?=z0>3XXYVVmkOiRkvvoIOzna z5#r2Y)XlZ?E2!-NAuQJY!m<-}gZ}`mEF0U1CF+y}t{CO@1`V?V z{^epCg5eiYl$6eCh75MqFug{2O0&p`Mf)oZ?#_!C9$=VWCb&pMW!fVva_5PNoERd< z9=K&so-f`wEvV*H?@)LzjsX>0;^TEQTa~#)K^al1Y8b?%P?Wwi^p&oxk31Ps?UyK~ zTvV#*hGCT3GNgNqO*8j@-Y2|5z)mO&JvnIrj+dA)u+yQL9ZEc(yN4_nJUlJSu zOM^7WMTcQbw?~PDh}i@BddM4R$7$BEqa!aaFTE)Sr(3Z@Z+%mMR6>8a)l^q;P3g8eeqAf}b zs0b#=wik`cCBm3@z{)x4p7+I^0s`=28RJ;9B5FKTrX@x#aTKU<5~ePoTuOcvwY#yv zltwY0qV6ceav00EG1}NrRr4%pYUJ&SDC7p7xA_am@r}ql0h?VkW}AH;%)dPC6b&&sIuxB-&#T~vfsa$Y#>yu z$nj$Wh?pQQ*ruMKrJ|=Rwp_jlEteL@!lO-R6ftCDwGD{c;$pAD^hXIU*_LHA<{VtX zSeL{C?egfEwJbNO@XMFKo>{gL^zag;0WRD?xlHmfi!m(08+RC4al6Fr%)6TI92-ja zJA=V1h7}N)5g0CB!pg2M3=bM&VfdF*x=(-#l_b_l?T_|Mre#c4YCML8OCYE#_Jc2o zQszY-*lz_k`DXUB9EHo^V6LUGhXwnD5J5dxGcC)~UDmFA2>Lqc$ znF@lJY^`Q7WJ@NHGOSu)=c-1i3OYDyQq>V$AsB}iy6;h=+;}ffm%)(ifI^k+ta0U_3#e=q4pCnk( zmvWB~mPN-P;_6*2QIuIU&$*n+;nNSiBm0XSH5=vJR`^LK?1h^>#cPI(9e?S`1YH6F z8rDVqCA~_lSLHQE68HmN)7$w{w4-A3iNZ5}G9Cvf5@lhp)dPrdm zqgaf_OD0La5~Wn8cJL(D)zLZAs`ouq3(p#`sJKu~rJn>*wme5NsQe3+FN&G-!8Ahk8Pqts ziei%3?&F4H;!~KX3}r%MT*n?|O7}4;JOfOtfqlfr`~AjH#_6Ucb1C7G)|mLAB>>fM zI5&pB^yYe=pD|hU5AtO`*kCaO;e;&)?}*jbW6XNVxC91QBRtax+_*4q2?gPKgX?mo zak)?>Mk_ugSn%p~48jiO!d*nvRzrwsmxkd?$0Q8RXPJM1&*y)|d?uwv4u9f*3*m5h zTA4_~<)x^D7*8irWzSwA;dlBV#7VV;B|}D6(Un-Ck;CQj3N9_2n08=6YF85uL@0*! zzJsWhHf-o{Tpxxa!k(GBXo|68%v-x<5~4t*;e<6Aae-vhWT(t32NZaG9kB7>+vV+)gkC=dLnF?gdRmS}`Z#0(bd+@NmC^{{RP?jJ93! z^1K84!jUOSOB+B39!OFBvg&VGN{w-tq5xZP z0HI_yp;gN}h0Cf_Fp|quH+RsNKdNT5Ps0h_C1k5~CGM zjKF~mOL_@*KIBkUu-^`UTE*Tj6S6E?60g9I=LAn<8+;Gc`Ow zy3DRRXH(Qk^UG`rM6%(F;(Dv@{lk{HcTtSoszTfsJIpvv0}zlV&-9lp4KSC?UP;!~s$Pe6rxdmcm^?OE)eux4|w9xVUAM_xRMN1gTVYEM6Y5 zAR`7i(TW*_Hkgv)skrGGWLUkv8~ZA!tbLLH0E;yk=BD_l806;T23O;8;-IcK0RWq( z1Q;y2c!V2snPSU}JPY8InMDl5uvi0Yf;q`*EpD8y0})u5xkyS1sfY+F>gehOC%N^( zo)9+6&Umg3$AT3d-%_3;&}J0wT};J`!j}UvG&naaGhNiIZZs05@u*BnWpPraTt*S& z%B5h{^9>szN;qP^9mJGhL`2Q7l8E$Uwl5MbmM+C1;FsJ&z95r$C)Q@7kG5Rh%B_qy z6w3uuJVp>)OO{l)OP4QHC9p@QQ! zl%@sC{Ym_|#AQyoz8PFsJL~@d@z)to?i7PP7X={t;^yX)ntza_U7L#@ZMYUpkR_0w ze@ATGGhoiBge+al`qWFhln@nAjGK<$QMGr}tVi(63yk>Uuto6j!6|+}1u31T$h=X< z%&kqpJR3$NNt=|}E?+-iIli87u^2<$bAH>SdrqETrUoY;v7t}*-OC= zcr|k?BW0M8b1y5IKMbSW4!U! zl?24U99iO51LK_H9_5>l1jJG-R|e*IHyFGU!T}+oJ$@Oek*oOTrD{>b4jN7=Cs=}Z z@n##W$j;0CO5Woh8Ci>KGb$Zj#6|0H1$G~aD?=NmPM}MAqRxH{shI!l~R~7_*Fj#`x{4tD>2;GWJj5!09lVM zGf1{Zi!lYZ8R4|7V}}LI-`9p$;(j$N@XwOgt)gVrYFHS zalWUOfJ=*a3$8{+`aJ2^)VZ$jG+>Vj8#emROAoH25uwN2=LdK zR{MaI+^fCHR+2a&zk(e7q1479jPn??jct@iQ17ar3|tCO%Gtix&lhn{E?X~)m&N`B z4R<=3ePJk_@IZ)g;-6#NLOL=$DoUsNE-2qbzFFyUF7bI0#@g+QF14;qslrSTRd`y@LSd>cPuM^xzoM9#| z7>VVDmdjMW4b9y)BQL`;vk@B2F~p@Y1!BRLMZj@;hS3dtEN1zY-&n`$8IXIG=EFba zy)s0lOXAX8zsPVwmNULAh?(Ehf#lx-g|eBD{Wwj`oGkHWVARMk+bUBPP{bH!6^ux! zOrL^rTY(NLR1eCfa`9ZIqs#ddqG?g%*zn|5x#i9&?Cx2_wDLt)Qk;lH4cqOQ-Q{z9 z0_LUi`XB?-s2#$@xAvQFF$&zJOQ~a-aIeOg0K#0khYL2Aj-}##@ZCqg4Z*Fj1SUA9 zB*f}tfW8tI+@b-))M9=Q;b_X-F-zKiu_U%(I9nX|FNcjr7^(xgYtOhsCL^L2>cukQ z^|yivWcJFvV;%nh;LN;XN`7Vb&|k|8`^#m^Wx*<67LbeL_`Vkf;$%KJChi=;nT9t2 zgDUYqWIwVD+5)9Y3~+)5Ayg7Jnr2rTz3^c;VQKuZ2$__`ffA)2B}(Cy9`V7-es}q6 zn}dilk?|a6Ulb~_3B1%7jr~g^GA#Eh6L7*LNl!yCymWLBbB-eTj=Gl!BI@PR-(-sr zths30e^RlTw>$?4f>#5;T<$GPmUkC{bqnI9@BtR(oWTw{n4ihEG~t^V7r_p<2vh{d zV@$nNsoyQ;QtE1G$z{{X;4m+w;I zr`)u9gwiyA#T`5(BiZD!FjkqD6e!{bF)Y=8thXMZ+-)7qCRj(q9q=p)T@w7fUCKqz zJC*_;aitshWk81JwaBw^%kUsv@jArI0Vlb5;JKDm?&iCNK*R}BxpQm=>7CBlUO1@k zXFPlob zP5PKPjelzfWkAOV<8t8gIA0E9sJFY4gI1_^6%o<}5qM|i6 zgb+k(ScR7rr?-lXGPtf)DpaXl*A@7@B-{Ac;-Pw!ILs1JOxz|b-aLt#xp0K3%BSp^ zGWJ*z1(<#h;6}=?6eT!aad;!tA-qBGgDg|9vZmwasYd09Z^H~f3-B>-unOQ)b7XPU zx16gBl)w=esis#`EMddPnNxe30&Jex2=P@a zQNiU~oj6pelA=nL&3**`0DzSe$C5hZn`z4nSP^Y<_%Pg1sKE(U00==lm0l>h^5KNi zdpwxO0vs z1x6)cgs2I@Q7nY>F+9qZb6ET+l<;`DMcg+TSeix&E2j827G5zO@$HlSiSi0037tX{ zY)c8O850)f;5FNjU)ciovHr2q2S6(nL8?mWe-TWdF&BsUW*`VP5-+%1x_s$#LOacrH}zfxaJXF;bPDLVa8aK)9j?B4>wU zWsQ{rV)#nnfm@XlQIY}FNmnR81HKguSsTQ%k8Hii8on`260b)BtHOU{;@yRZcCr4z zSGddHiKKdR^x#-RA?_%vf9ororr1-{`H7JWS-E&A7PY-GP(LOZL3gd(tVJ$a7=9No zj-d!aDxjL0Pu;)P8J90C+-9n28%z|uG3KK-N}9_HjJ(UTbq&U5hlLVcv-pH~QZZ79 zAB7T;C88596~LUNt_}?l;L_s=j*8C(N!R_7r9I2w!*I~}f)vo-vIIE#hwrEiz;zjp z9!ZvWF%*xqQY$!{zHBf{)y*7Aj~Ilyg+-Q4_bygphVwIel<)!LFnNLyF*cRUa=56H zqH>ihih(If-07}6f>XjjY}fF1%8o1H{>;{80Q8%gVD0g^tBN=e!Y-l2c!#g` zH8B~rn-v`XE>Win2Bj%ee?QqszZ)-7T*7yEP*-4`t&NYtLl+D^{_l zaSOL$`j5pinj#=dvH`x;1~XGQG)rouTL%{ zE0Syph6J~36{Kj7e=M-|n>~e5`-KY+hD~%Q+yqo@8B>Xmi;W=8L%$X}p{P!%Di%?2 zyHgH~qYywSl1U02*>qK$*U(@cM(_OcMW@OJuH_(F;j!>M{J zz#o9w(?2kl`BmtAUOvN;UN^AdQ)rgMg;G$=x?;P2{}L6E!(l?ufVxAKYLE{!iwGK@ z=w&(smo$x`=MR&NWij!X9_Z%PJcIj^)n?xo4CZskIPpPW98YjzU(`r&$@Gsia_2r@ z-r=OM$ll56;=lrvYAw2LrQV(GSY*HWrwIB+dxuVC?(Foyi;1i4nPZY29kjLPUnlDc z90~(Rg<0g9da#4Mz{1noOGcf6(;xjZ3nCXUC4T#!Ve&oRu0kuvdMu5 z+0YpX*z;&ha1d20%Fd?wh1{B_Zi%3!>#=GVOpE5!$+w$yTlt?IZvSHeKD(1ZJIcj8 z)DE_7K9xiLEKDJ#s}UsTJSu6lMMh#paQx=azYDLzerLMZet@>x#_Ev4pE znS>p4jPOWAoWC-ugZ4d=K><$4z~EW)P7ab%#DM+V$ZIVT{=?SyI6PP-!1pfHJ>gXVZc<>IXEeNdq=qD@Zt z{Yk9lUik)859M5afx@&fuba}zZ8$bYP4Kp#lLoKj%gYj$o&ZS2!IQ7E zv>$WJC_fgutR^Ro?pUBPtVnUoSKIt7Updfbyxtr`4acYN=CjK15M{lkeU1d+BY;G_ zl3qgs8XdQ)wr(+C%;RHNuL)Kp=J62B75c+_w3R^Wj$NZliJeekN%Xuidy)N`uN+64 zTOnRVwFxi~K^DNlOUzNPs2Nw=bTAKUgse|rnr zq2Y^3=V{Dzp>Ju+sWw;eHmF|m()jx^WDnb#kPRCOPBp(Jw5Gx1NGAzxc?Cz5>%vg3 zBRWO2Wf|L3J1Fe>jkB+YrlPz>@;w2sX39wXl8{#+V?OFwdF@JMw?y49`kj zJT9?GTztIW6Sr>uUaRfws!;ik`A2d2Pm<|bv)^!M%2SsDihtYSHpv*HVN!5uL#R_? zhh&XusQ8+Mw1bGTNJ;Nj{b?n8)H#tnxVR^}2~G&x(HkID;wU+taH+bMX;L*}GBU;1 zEjwYgueb8=@XL~!d+!{htsllloaG!Ie<`1>8@^{=vwbIV`N>34tF#(^hB}=WLBc!~ zXn^YK6lH3zDsb>1>!B(@8=X0>-)jfRPSkn#b@N5Y1gA)vX)Etmw|GMtV^)}&z1ruN&sKuCF zGKWK4+kt1{@w?56W7#yGUX{}j+iL!21-RizrZ?MUEN^~QsZFZ%P_ihFPn>rfkkISd zjSW9zKqf#{NP*F)M{?jFT##`nig)vFO|`o|6oLrGGk@TqUMZa*6&IY=bQVUf`AnZV zBbFW&8DnH4VHFfWttkE&Y7lYS;l0f2lWJ#Gl$74dl zxO*C!;n%A07p(!k(51Sv>E^CH^Sdv!egsr3Ho^kQ+L(c-3=f6}n^%K%$@p$44b(JI z%s6ll|3KpuW9r&``66Gq_sxO}&x6nlm$;f<11>n(78m!s2Z=<2rL*XH(se`>#x|4c zl@1+@(N!c(mzq2Z^*#km^4cWGX!vO))lvYI;s?Adq)QKV~^EeCG zfLb`GONkV`wRyyV-R{D6XnoI-lMKTL_@y@$JhH!&%PvLy6 z0b9~EqZ5^a#l_W=M~ooBl|0+>9ra(@$bF_)Y6>o^vZvI24Hlt1$M=bqf}E0ggFB(h zNnBDT#iJ1-v62PW-7W~Sn>~*U6_JaBSkedF6^(~60^k}O{3=#WOcLFD=)1@>+Eaht zHRLbE>76-RVT)VL@JcYwPZSBO7nL_ue>{_?U1%{XVA`jvH(STIEzHl|mFM}WIam6y z_rEjt9PQg4-7JdB}KDIypv1h@$#WXK1cNGQE4S&2B^C zqVTLq7RLH`~njl%@x&;7<&(~|WJ z+v!uOn)*MTl_wDk_q|;I&T0AVi6)M)4tPbm`zf-F=a34B;;d(VO<0SI=AsU`Pbg(; zyYt8v=hc+6ZUm7$8BJN-qL?-#JS=q5Hnk0zR*u}eaP8OU(!?<$vR%5w-TN$71!gEP z^4BRy>++YdG<~PFiP_nXIb@Hy6}%rki!1kM<4)r`Yqd``Pa<4ZAef)4*x^d~rdQ~p zfwGK0bhcOHrUc5549ea>jp-Pgj|xb-Th6B2KBgy1xRDV}dPiiDJVr|S+>J3ud`}Da zhWwKF`{>|lix`H(!bbs(p_<DHc$NB~lh{H_-}x>y?_9Aon?6SZM=eOdD{$*qX5I7I7v z&!_w=Wqa~&7_(wdA>0IHxPa1xyulaGBxmk`bL~(ah|E*Eqe3+ZJlResb8vmx2*1tM zw!DJ0+lz4NiLE^f3SIUPf@;wss$m@<~83r5pfvG}jmY+z`E^8R}iokxWFK zgv)cr(N3)1#>Q~4VZv0)K-H|dOsLf_F6nT{SvNG9>2GZc+UzMLTwGl~6p?XeF6jp{ zwmvVKepV85u*4>XXw{S!YLZu410_VgPB)5p>~y59B1lbHg_>Z6v(2iZYCMOZN|$X( zET?LebiX{QioqU>E(n`ZOn{3i<$#C<8wbv2c;RRP!^wY2ch)yvuQ+MVH z$$n&FQe9M+B^h$l4qMeDk*Ws+YWutG$Xp^#--NMwE@ePrxLjiwU-0vwWqqgf%*U`) zV>*;fp(2zI%^2+>^4XHjf*e4UWUb|$Y#GbT`F|wcsx}{Rj7+%4hyW)M-5A#5svuqZ zTtdbwoUdTu7xs@y$~m*eO}AtO{r^Y4$cG|D%3}gh^Lfw%YQzHVD2odzm?U^Z_Sq9q zX(wN_@dANrzep)F5}88|21jG7ww2+gHz|uiWyu5uEv%~{KtaeP1WD(LwT=deUIlIs zEE|mRGG3v-xtB3c6!Wun=}F{kZ5G^rB;&qVRbDk242eHn{S~xKLf?LLW-{L1pNmm` zl_Z)xbfk45P(IDn`28PvQ)JQ&;mD~?xBnP-f7gEO8aX48v%zR^XS=(uImlrGQBoed zd9rJ-5K`i6XX`0ZEXs2~AwigS_MAYIW(ja8>*bNaIt)TdIR!Y0os%YvMQ|JHIWOvn zX%w=d1Bqkj)@tp-W|}ANd%8up0>xLYt|Zs`jKznFeTwGPYZaOhWf)7V;+OC*(d@z@ zRGSZ(`C@vsQ{WJ@RP$F>MruABm&SBFXC25jc;!)4c=?(VZYN4prdlXA)}>{Jk?cGf z^ZFkPg~exxsrb}B1wtB0HSnE(EY<)AYpEkB>r%Uqwya*=+-X9<#G`j#p(>p*2iusB z1VgPk(`o!YjP4@vxz3BB7pNC9N)LqWLeHWNd=s@0{hQm5D#LP&x#|sl--TDp;w~O~ z(_f`e;FM+v@+0_fyQEb%4#y|((&p}uyO9n_bPlq#^~_bELyt8U}J*JNfJ>vr!c{|=oR+OS^_Z|2LaEOhU+9;>SUT^+udPR@?HDDLO? zFf6fpvOA-mGIVRlTNFWv0FufV1?hD+6MjoD*We#K?)k!vsU>?pCggh+EM)hkJWXGM zGRNgsW9e0&)6H4W&L|4cP8XY{kPeu|@ZQ)cBIU`qqGNaV%F<`&c(RVN8ZpokZ`utj zsbmes5Iw~Q^gbk~X<+DQhwrqtZ4_7R?{KKjfagWo>Dwue;{qm>kP#=KwaKg536E10 zWDmbnHusuL4#1>NQ98Jp8g&eUrOWh`Vnt-o+io;#F<(^-z1B{ACui1YO!qNFmEU@C zcREXSi{Guy0=dn9SSRSg7pB~+@!8!ow&Q8thrIButIcx~`5gA+#{&^9>_w?q1OeHS zKHTvH9bS`=$@7q{c?YO&|6`Dk^q-pLE=-Uprb9JL^~N-j^-c z3{D7(_v^{U8*|*8QvrO-O<3d{8L8IEZ7Y!Au$Jr;YW;xzq?vY6-y2ja>E7wPp!$3v zRD<(gd7C#&ip*^5#k_Bu9n>6(+At;L<))Nc*}ABpwfe>67m5$2fB%q!cIgpUp5s9NH!cPhQb~?)fu`Kk{q{>~aVzdQK zYL5;zM|aG?fXd+Mkgx;w4bgL(E{X^%XOI4tEPvZHAyw3%6_8y$Dc}d=gqrktZO&!|NV?J%OGgy`PU+( z$_R3t=?nP0t9&@X=z*Fqoch}!XQC)NnLSeNA$Wx;jgZU4#-grsu!S}WY(^F>fER1r z9hV5Uc8WGI%kev}RrNvU=JJI{w_Qg}LgeJ9f^n#Yu7yS_AnK{h0fz)Qbfv0snUnXO zVs4=On?L_plpVXj464gN@>H@GVhxGj{QgokHON+JH?~Es}>Ko-6D^Iy)&=i^)xqr1? zeKcf$NelP2lX!V;%WGN2r|V*7uA7H&PAuYBGfSo8DnG6Ql0-C9F^6Kp!JX&q1({Q} z4)~pDRa1S15(+rpLtjiZnnx99!cbMcT)Ji@ZkjH?QOdwA9-luhl);@`WLEedKMV#x z;3CQf!3A)wqZfa!SR2@#<`haUp4#Jf7ziD96w~d48a@QfEK1?;W}0D)^@*EM2#*>kzC6{hd`&=aNcL*x=F6Df*GD&;ZOzb4Vn2N;7-P#QkgJ zrcGx{!eM1|v4+{&S@+5`*DsUdngiY<=>|#C!kn7KXr<29`LCRJA8+jh3g@C-6DQ9c z+e#kUGnp!RL!6s*ikvKN&o;%CM%Saq5P{Ynd65XKbkl$dYp{QC*G=xx$P>$QkC?H6 z1bF|#xXZ3Y zgnw3ZN$0h@58t;eJOH!lfFlQWPlrsV_eu31z(E0X5TKtm8;H*yu_ zUs7~!xWCwO{h1uiIGS5SFcxf0NuMPE_PgS0bEgW?0mrj=D@KhyOi`);JF2(Gza1hr z3T(R$1>6`nEgm64a96cNo(SmVP`u20Un2_#RzpNDXEK@Bt^$DghG~wk`btAyO1$$A z@VsG^j*%Q<7bS4|Zj>L_!N7&jAc3q_WuGcr;n>UTGK`Yvw<)f4E2-u@3l6N9^pGR`+KmAv%e81PMg3G-_txj#GX)FQ z=bGNg39`NSKk2TTRR7%@dcX%0iCJ1PELM*YWoy)!E$47KsLcQ0U#58YZu8kDZhCWTNTm3>QSNwz2bK^>`*Q1*)^-AV8Re* z=v=7|N%e6DrZANVmi8e3ymd(nKn>*t09b5ic}n&tQYaa$&3c8%76g4`LL;%oBe7A8 zd&=YYX1Je0+gEn@?VuKbLpX$5%Hiy#H~bCmd%5JM;_czldhxv2>FHjveG%2C|5$EN z(%A*KPE0}lWa0z@Qnb&GW9K-?67JToZxw2PH zY>abXQ3oimNBXS;S%p)A>x9ZssP><9Q zI^i|{ExUx}%O`Uxf=JIrY$Dd>Oq|xPHL60W1NXadj?Tqc>RNiwCfVf8aLZXHj;$9t z2sN+-*F;+2%@?#~ouO>9BQb(keC~sC-DhNGHKV@4WD9 z2{9hNqxYNYf+>SS@Tur5#Qog(W?O%VwTA(^C-dS!j@)yaMklvLQq7O?#Mu9d9J8Z)6nFuDIsP?Rpc=REg2HC$}CLgbKr-~&?c=0wrVD5ALDkX?%2PS}zDSrA={ zYTcG`Mj~DO@cVmae{Rx1TVZUSm<_KM$ax8AmQpbJGj#r<3gXD)*`Kd`Ic|M%kizyV zu*7q4XYYqIQy)I9s*O;S8R%3da3onMm`ddvF^=wa)3Y($^F@@ka}imTx3cFZ?EB ze=@7ouIteA3lG+Nx8xnQ{V8_wahwIR;IE&^2YpqkWnyx?H?0GrGGileA}SklI#t)a z6^TL%Q=Kd$@=0o91-o?w5m3wFBjpM7q8dl43_Lmj!z+!i{^-ng3a2Zo4ROKu^ zVcZXjv=Qs$N{pl+YMVk&NnvzdoY-&I;pCnRzyG35mCyjCK`yU5mJ^`vnv1-J(=Aq+ z^t>ioA3h=RFiI|tqW-K!u90^WtdY}l#X4Zyv-eaUn1EVfIX?l()GZqKeaLKpqnuoN z_0!~>=u8s}T=N9FPTsR^^PZZu1(sidzi5%X4|jELRJzObd+YrSaBZ!?Yw!50xWwz! zsPX#N6xOb4-mv%Q6MtQRAlePD#~K4{cqv9UTEKD8p>1YCw5UVY%PD0?NDywT5oESm zx{2CGWA;{oPUc!Oh6m?+xxPs{gUQ+MYPFRO=m0o7K!Gy;EcW+NNflHj3hqC%o!f^!oO?F7P5zBb$qC0eEPsZO;e5j50k@HML| zOt`&+R@WNSG0vLP-g+whMxgRFKO0uQ^g?m-mlJp=f~z%LqUnFj3HP`Gu6S!ZHKeO>2X9-zGz5WebKoUt<|cTL z7M>I1=L)xvQ+(8hvi-CbW~G|I`;TR|a0CCTRzJ0GPyKB9=^o+OXYaKh)oera%6o5c z4vUMBt0h$*u&2cpHD2mEhMm*dOIO=H!%4C|b{!>mLOD!WUUd5(mZUBfmQCe>{?a=3 z%+LK}dE)8Ot9ug-jkxm|8U$_;4wN4q(8ZOiQQ~k^cqlZETkm-eZygS$-dhV|$%nS^u{ZwV;FCOQz_=YDZHU{gTO8Ct&S8)G-;GWYzpeQDbFQi1+ z3G1|p;V?MI=uh8n%}Kh@JI~hg-N9zt>^$z#v)2ZC-z`ZE`}P|+b;eQ)LqPn_rvV4K zrvE}tCXkZ^xgciN)OE4LADTrOhyi4aCCRm@CCK3Mg3^ON@5+vWD6ed)Us^dw^r-q7 z_e=Y9SE>|`}r`K*?9zt{S9x~n%VLpqjf($REgee$C$fi`N&Z^!lyPyxlN4P!e z*#i(pnm#INp%JT%I{B}1LU!ZPjWU#4D`JkqhUrhr#^GATHo9Lmr;Y!q@FyP?)S)r; zbSU=oZ6NI_EOg+qPe(!IZ$enDXNJZboRr6~Zhq=rh^|9yQbYYn)tM%g*P!UdJ5#uz z&!}bN4LbtsPnDh>_F);QCW#zv)a4(0QfCMvdu@pWt>^0j z;^B{GTR=vMV!!ioC|{Xp!^*tUthZNx*?uPm*Y6lY;RJ2<*OG&d1381|nf;2L zc%OOSh)7ygy1qg-np^MMl-qk%`Ze8v-p1gXuy5#=0rhFF4})%xJU{= z9ky!<-LLdHMpQNhgI--2p1faspe32toO{5f$a%oqc~Gj#ktSaNs`2+yx$}#A>E4)g z_juqQEZ`!*i2wz|&G8Qhewal}7A+nE2TzXAzu8yxI~q}RO-TGDL^8>C>qeD9=Qe_w zq_VA+waQD-;EoG}>t8<>i|6`TS>43|Bu1~~$ai99>92zmG9`V!eS-h6(Q9^R?u1OX z*_o0g58;s5g=SKZbWKZ$wOVsxrWK=&koiY;G?oi^RrwnB{blC4IbMp-{aaO^Z}eoM z8s3*rFOa&7YeOIHi>|0hu;5K_qnnzDu%{KD*D=`Qj8}5i18-{ldX3+6c}`L|9q_0I zFH5Z3@f?ZaUs^#F4jviRCyM2{$#FcHRh0p{G~7hk+=M_bdVqQkZ2?5WLp~Y1f`{NI z%cL#OeLp(Xi?f0~Gv56hvCE=iyoE5P8v2uPXH36W&QTJq@!(DYJJNyw1k1H-8VvLOaPmIfQ;?m`>bpv(1kz2Q>PX0~KJY zvaV&ghtg%-%+ypmM6W3!$p}wR>ti1($M*SctBVA7U&-?WaII8ln8d*8uY9Cpc0yb} zA?#{=0`+a;YZJ%BFwLYjw&889>FU^?DlI~u@13O)`&1aUcHSVqOh5X-Ygtx@UvCkP|yteYZ|(I8J86ox6|F{}^O(Z|GtcD9-YRvm?At%c?k zC$$HGu;99!QD6^L<=l?h))04^FkWda%M`C1ZPs@r;6Zbtw#D{I@_(P;%Fl)R?ROucyWc}E&XW{*N zX%cht{i-64geYUhDjWpa8uIK}DhFrvo^tY3J69lkUX|6+N#t*?S`q)1v3b8@`%emJ zZLJd!7<}Oye5T0Q?jAl#y(C(*T)$n}@u`z+j$qW|uSR~EK-N+hA1m6+i#^o|AAS0i z{l$2NGVXhbU=5NaKK^47mc$sl6CDE$LPj6emvd>tiwh7?mP}ppdlBFY#CZu4I-VuH zVX!MSjta2+0Xi>S(@5Ua(ycY*(`$`IJPQ|;Kri@~?9b%rA=b$u?jExbeiCm7;T|hb z86CS!b-mFkOwD8oDYo>E(L1!vd>uMznjel=;JEo6?WL(Q1A3phpZ%Qj^YFdIVVMN? z>OkV=Of~=SrIcEyr&g(cTW)0aH9I}Z{nE9~YP+Y-Hq^0LiN3bJuUh_X9b6HoavUfI zRMs8wVC)QNN|k&4?+F`Y=FA5Lt78xrkPJ$*qVW+pJD*d6AI226*MD^qQ1n|y9=k7a zWcMY{0Pk47ny$?N+)I*=0l~rqzz^7>Jf_X z=o{9|=Nq9`+Rm5rc!%rdh45+eo)YUayR}UD%Y{%b?BGs?qhY@ek{ zl3pAc=BU2DK1MPS*m^$R@^Ur#Yp%U!QHZ}{tjMe%92Icl^tjYVA(T{^J0{s4trZ71 zDL-a`0r7_7YgJ<$iM3ZIbPGk-zKK|$H@!K6-0+&vN1rJm3-WX_#|W``!DTtscPcbA zlTys;@I6+4Imo^O2wI4`-Hgn4t7{kj>V9xjB0orob-a_+ntXGF@QZ8nLj?T*79DpS zW4_ZkG#cMRt+_x$TI@#h+m~D%P{`!&rQ?)p&qAjQ(=nQYO`%>V6diz?W%Ceep zdo||ey_0p_BHBShI{OKGIZ1fFpbhhS4`y?DlB1(IR@V37w(ttSHlj7oim;0aL(bG} zx6<^(!aPo#Jz~y(%&}^lztW-T_e#9!$xP^U@gqv9KrR%b$fsbI_3Y|Y9X2@5v{&mL zHMT}F*q{Z$HamVxKm21|+{(GpZysTe3!lwvt*UtQz3U4wB`GEf;VcfS3b_dlt4|s} zX!_wNb|)W&EYK>g+A~@5etu{dy~8~yMlO>usDs$O`tink0z%< z>zvo=dAZ3%DZOmXE4ok1^)e+FG*27-otD@Q8H7_497+ujh1Lo@Kgf=x%Af{rBb8np zp7}W(56?8Vyk&62DjAXn!Z&E`UZ0B9FF;86K+c3qNMV9h9?>`)lg-C^YQ85G8OBRQ_XYPqbZIlQ-mojLUx*;Vy^hY6{;>oMQapbIQ>>@guk{f0;(i0z?P8|5H)O69g^Jq!{v#G!vH0D}D(8JC+5D?ht6cLlvt7as znRj*1ZKtp%4@Vwh9lDgTnz8N@UNxFDAp1Sj_cd0}_B}MRvlp)_bll@#(4gA40zJ+< zLN=wj&QvUfhkb_A9g}DxJxk+rkyWZn&%MRe$709XmI3vfUiW_5DzLD%AJim+j6>Yu z+S(WX6bgtpR-Nw0{iSf`YFQ+BD%4x>jc6L(umZ_J+_{uaH@~P@NGT;>8Wj`s~0+HKr^(8nd!SaeUk zYAcG9`m4=&PtMSu-f}SPuzC6{;*ti7QM>LH=ta|2Z5MdaTZh$?0x~J&G~>--AhQ-@ z+EZo*1@v-{LCd(c54qF{$rJ(P$hJloO+#0^OlQHu+#w#h54`%pUEND-c0!0*%4|WS zRIm5QatuwL`Ep5iT!$&#WSjdQvTe2=2xmeb-6p*B@~%#jd@XnrR3E#!()56T?Q!Un z#+D*yvVg`TT}#pYGNa09Jrn85qEfKen()m1c>y7DH-xSzkBwqO^wV;6(Kps3Y@26U zyiSbh~fGs@m`K7@^Wrj~>!3{hwJOo$@$9ZtC z^k+JrE)!97pWjilDy4-JBmcu5=})fesy=S7nsSQh$&lz3zxAWWr1yCOTLIpF+rUMC zSVf=D7}7Y=zSa$}dG39r*Q)wb)OJbRpQ5%42$1PX)^x`#0bhjEH>o!gr2WGj2(GpHl4FN<#>M&%<*N!8 z{;_m1(>!>tXA*0f$kC6Vvxe<#Z=(}^v-UqBYQj_gtXWl``joL(qZGNVJHv5`Z6wzUPR+;!XJpQ0uvQgUWjJOpp_d~CGoGT3C5@w>LqR$c(Aq7$=~haZv7qt zZ@GeRG%ao}^S>L-?Bu#6&Ahc%l3Fk)R}C`zx2~it%syY;Dlv95u@#908%4D6S;PPoTNI3EhPn+Xq4o&yS;cd4-S5dTj z&NZ0W?HVWuPa616!S}B4>t{MUSr-oPK~yh^O{^!eyc5yc|6>|+OEhIrq?$IrN)4* zQ7XKyZsoR0LrG$R*wgP1O^;oNkL?Dp%b%9vCw=ON8EI8i(G?@ zMJwc1#%)4V11^l<7_;;jrZl$Zq=wRaji$*h+eKpm4fNZvP!bgsFvIeLl{GDV%~wE& zLprZ91#qrm)VSy!SE|xhzzqXjFQJ~jWZc|*poZhqTJ1}N1fo13Xk)bHTj^Gd<Oew_{wkC@-sEu^>n5(pM#oq8HPC?*BExyOm$v)O8Nx9lK1Z)xbhO zDOR-pA(vQx4t7kof5L_M%>FxtPB<&5pLSZ*BR3zJi-|d4Qjg|Dfjk{zPwK!X3*J%9sq(NdyT_Z zrO$Mg26fxg#G`c!NF!MmG?B>NtxMu?{b9XB>9i2nDF zB?>tL7i@DAeu7^C3x6SdnM#J-ASFB58)Q4d2$W7L>c>?T=1P&>32^TCK6C50KFnX_ z&@@S0H7TP<)R+%m(%Q|h(G*@0IFIv6&>!nnTv>YgUqQu1;6T}k_^&U2%R^8F}-At!NN#h z3MR4Kio4q@Ghunb<%7~I!)h(STUYJtS`W6?YQ&Zodaiw9brgBs$(kk}ghMtw+!BWU z@U>|}Kqez|iKDMbqEbL@uex1@$bfi5+k^jVC-xB)GbQop+H#X-a{@G!)qex{Mjq2~H>j&P1vL*~HSKe^UI*Bv_+xTFZzg7a~zf)cPOewS0F z*rIa{PGov%r=iDLM7F#5Y*TKme=%`@P|VoAX1t@lcYk$C6kCxJD9HeAi#TPA2}B^D z&U|I~>iy_!ZY5R}1|jD?>2BDynY<)@ZnDi=RWM)w%rx+BmOIN^rLd)!hgU|{hemrw zcxx0#_#8pAduZW$EWJ7msj7d6JlHbBWs;q)>%?J72re)GUOy81iRHu|x+5h@WeSQ* z_~>6JNCqQv{YTkHcRc1F%SccKz^T|3+o+#1NA!E%SX@)JG_LD4qd<(XvsQGhNGsH@V2oi3*XFzw-m!PedrUf17fY>{yp(3XASXKDnwWy=OBZ5~EiyQ2X*j8_8Z8#leBhA`h)A1nH zro)|HBm8^xPKp=gw>LwNp9T)91hN7x6>w~-yp!Q;9htov30Q;yAg-jH$EwANMU=4R z6NyxeA8vikBE_b2!)8#&bNRIM=KCgKa{S&m2EThBdRbec(q^_Wic=(UG+MO!^*czV z1@&`lmq_fKgsc-k}ISU;ZbaB4T!RmS!KvsEVTidQg>jy_WaL?67v%i?Lp z*F~=i0LfHA<&u*p%=i{BBBrNcl!94$?>6Orwb1j8$PBcYn}kRb`gQ&<)%u~Y1x8wj zG-6~I>n_*mX+G`l>?$RRTh;9M5F0b*GC8Zzpo9rTx`)C<075pIKTN55sa|^9$fmt5 z9jURJ|BA;%izK+oect?3z%-fKoF%;e`qo$W>S9lQVEYxVlnVYiYx5Gks^Pw^B+LH7 zU$P0OBTvEFM@25_KSc2Z|E*J9{mceHgXNT_5acSjnk#3#BO^6I;BO^R&)it&{f=9U zlj2+Z-!*MpIs;*Hm~lJQK!bgEs`7awxU);Q;gGIKK+CHnjnfK$2k<^LUPMS84Y^(3 zPk}ol7v(3z&CT7Z>C@3dW4CjVgKMeWh!Ug!^V_~3Gm1N8oAF{Zo6~Eu>i&|G*;{MB&+66OB41u9 zS@x{WmN^}}5GN9kTxrLEv|S`|Zsp`fMc_Y{SlOvJa&9bT@Dl1Nf%Vb~4xH#IE6$%3 zpCpN_dCyZJ$WGs9kV%~c3SYgdMPxk4tB5jzJRS~nMgi;Bgb2UxO1^lyJ+;N9(D%Bi zh4@YTnR0(P3lnK&)S{T{q4&q`ZV1;EQuZU&6gK@u$If`mc=m*sk2P4Y=xaO~^%bAo z0b-c!)H$|!{&Ejjkc@w(@me1FmlzCXfYC@jW~0Ke63BHv_xBKzee!H?pRt@C?n7op z62})I?A~y>xaqI1jS(@4v-S_MnUdXzZNIJ@0;*vt%lse9N@Q{~uktE!P0nZH!m}?} zf>hieF&FXgM&lpfE4n597&>l(@1_4dck8h6#J;Gjr!vys6aOM$h(!TjoVj)a3H*et z28s!*M@zYR_QODPxW^ydXwsuQ|2Yz**}BCYTtptPv8331$T3reZmHvEacVQ^ z%Yn2!CQp;4SFdGym#)*QH*PLgi=~pOc&$s~jJAZBwCI2teO_=hYTG=bn82cwB|E#W z5$1T0VXD_{H{Kzxe;EMNR149LXv?)2QO11C8}*sA7wwlUzSkR2^QQN^(1Ye_U9QIB z%4!|ma5+)$A{@21$Pepyh;Xa@o46vXLbrwY>`i%ur5)1!ptQY-q)%Nyo|j!uPTjgaXh_OcDvOV|b3+t;4}MKe2DLx>QtC z9MizivKgk%C{L^+|GLmcR(HqDL;5Wy+~A3SaZh3@FU$X_i3x5?&G9cjBOx`9FAtHv z^quDX7#~$pOuHJc)e0J1D$Zn5<{yk)*|JOnU2Bo!`<5ST1)hh6l`z6J$4H9B*a@B7 zijXzR;F;~>LZ^brcSpujwt+g`zBkBEU~dzL~RAclKKU zDph|eXoG(2iCIXckeNp zUQdZOXpwo1un&#+-7<17B9{6R=3}kIA2oTGmwNein>#h0s&{!{fS4J!2~`CDax!RtMLDnmWPxc8Z+?!S zs_%$MKsv8{cdh1PHNN}<%3l7btgxI8e^-KS~Rfn?B|`4a7pR55(@#t^E|;Lk2AhEaW_f#j{XjY zEO6U^zl%hSfmjE6Us3X!P<$Q>LGB3}t=i%GdOwT{=r1m3h@*U6CN8nj0XRh|8=qj3 z3utq9Ae7%OSCRL%-ehrgO$7|?9)gbl&&ebu+;-t2Rd3~{19H8`OmJJeJzrCH_+h^7 z0|`>r&r<<@3qPk76nC_@X&h<}e}gr4o=?>Fz2N%cui8RQWx$?jXOO)m9`fnADBPr0 z&wS-X?^<(sYoozCr!t4Bx|yoaBbC|<$dbeDr~2Yrg-UA*F4m+cYF_PB_%iDCs2E%K z6mjMc$E3W%$@&9bzT6ry`QHGB-jVcrdhsEi1lPi=oZllmy>0qCQM{`6OE9DM8_9d_ zxlH$AZ~%Lt#Wr3-T;tR#_@b4~AnbfJc$j4#8XQi$dDWywT>AEAQ#C7gjR zkdUB)IXbhCvwWQp$!~nh*8=S8Tl90|%K_bOS1$>Q^J-<1t{j#ro4)xCbh`rQZvh%= zaoV_b4?I?A*{50BUoJ`;kHGoFi{=$Itm_@gg-v3@c@0M}0T=nVRZuMx@DQ;(Me)E1 zj!-yE88jimj~n;|`@FlyDy`H6YLGy{)6K!BCK72v_Hh=&-h}+{;l9tAk6YeuCT7pv zIg(fILt2EGB8^{=KdA8(%oJX6vO~B2VCV4Z7(gCgViPt|de4Cx8U{Fx29*0}7i?Zf zDkyS)5RS8+{I-h5LgQ(G(1kOOG>eUuKiFqp$|gNI>av8UB0K-76kz=O z=92b)4MQs~=0$! z5XsESfNpuq^mFhH!mKwvEvC*ywW;XAr!2yag>Jb!1ol4}7OTD?0X_QLKL1$0_VTWg zDhhu3x?sQyE_r7Qzd!iO0%pr7+3gOP=88750TqXbRb3ae7JunB3Ha{NVmCVP%W^YW zIwbRk^~KA%5m)Fr0FjonT56=*xkdo;?M`kaC2pBeU0}yZ%d8Z+P>D)_?V-7eUMALs zWxCyD7vjM!uC4bO?Zhkzv2Lggwfb|$mbsP>tXZq3wv66JhtJ&_Nl+_9e*dG;m7Jbf zAKL4&YDZhxxAzddb3(Iz;3T~K$tUw~Qt;br6U2WkZEwE9=UN;Jt(|qLxxMu~A#(|< zXE=K&doV-1_|Tce&0e}VdRxo2k+lF49__&K_!_J|$o&$M-eJp@j5cmdytn0kf)Z{8 z2Y(K(j;hOu{~tr=;?LCo$8mSVFvD!_#>6n2dr`UHMj3OL7+VMp3F*Qxn_I|b=;AhQ zNN#B&xy*ekmqb>%MCDte`~COxC!ELQoXu7 zs^SX6AP)A)OvLRNer*cvb+SfN{5ErX;z@9<1x8b?;Yy^Yj!AWsf|-Y4yikny^L1*B z-U41&!pJW~Z1NO3y&z4($Q6nZTEM#16wy?rvN1Rp z3PmZsNZpTELRy;$n6AkcGd`46bey_S=2k2_wgt( zNq+b_ywi)Tf-kNVN9cHJamuoT)o@1X+IM%S#^4Kq?8GdzRIB(MxbU#M?g4He|D|NK zXc&^)Xy}5ocufL$f6M~UOXV;4Dll_8kQSUS*1H>oa!9Zu>wsGS!}7-%SjgE&YwFU@ zB|q|w+MQUpJVLz}I{->t#csngv7)v#r|aIi@G&g{dG<+{!0KV z6_>qX`y4d|%pKc(_i5Uof4i6Z#T#? zp~qvPrQU2xncneE0)m5cXL%1Fx=SMswUB<~JLl6>6?+U>e~ zVxE1=wYuT5gLGEB9Q%UdxKESSw&6^IPp@kt+`e8u1v^Q6&x?%E4U3&pW=IqD- zAIA%ugmt`99O_NyZj%grVpCP)a_B=tC)J(C21LQ5J}n$(FyCg3sEl~0HtabcSg7DHCF<5{+Bu?8 zKdko!`$%5&1Fe5AxuEwAD-Dm4?+gsPk|Hlv_{LCRfmqRxPcZ^CMO07C?Ma;00=Or5 zEyUb9rWBBMq0VAWR}PsRVsm(k%2BW@cqOx8A*)QZou0mNC>(aHxXa4q&)5nTONF^X zO9s1*=$H3@C-)B@Q03`B#)+lQp>~jT>q2L%*gfo>D&JcZ++dnp*lNtdN|mCN!NL$$ zJpq3a@n|*MAmNO#aZQ2WK)(Uh=P(w9gYn!i%ygA5ABXa#ZhMWpKqLT1J0m-8oJ``C zABg53ul!rTkY;rm=zdv9adO(NC}P)VbAH~SD-K&Nax?NSQ9DvFl>PI-OUH0EQ5uCk%B|zGJpiJleQeRD6cJQJ#dbrL)rxxW)$3kYz~Q=sw!9JQnq#B zx_%)Ky*F@#y;xvEb{c0_dlZ}Fj8iFirU<}Ft=61ccnmvLoS}dSUm4_|y^4F`pcXAe z@>Qv-IU}T;-&}B~X8`c1&GG6+=HuOF_^z%Z;$4%|GUzuN~Bze>LGX;@i$cYpx2Zu48QN zlS_m^X{aIwxJI#eVN`Gn4EXm1>5=!{90!%F{bfF!iw9l*#>LqClbHKkp~(g>xdD?$ zM6vZRoxa7>{(aT0;iX$yk|gZ$yIab`dtF~P%9-* z4BKRProz>h&c|LqA(2}0$6hLCA?L9884>91f)WA4=hQbotJ+A%dAZ{}t>-s!7w;@w z{2Zbz>fFrhdOg8NK=Ul>ZOt{{()nMwc7t49Hl}X(w+$ zKo`lnmwd$JA$!RJhQDZ~f6}<^5t4(dF+Zq6LI|Ro)LHeceZ;QjPPc;;XW;X2E1mRXIx-Sv5%Uv;Uf2) zL_-@oYdFF&ULqECaV**RMjh*}@dD6ZMA(FO`z!?ga?5d-VRe?DF5wp#1vs4D8oH5r z?q}J>z}x@1@U#ZQ9CFfxhm4W}a#{2Qz=mQ_$XaxCs^^bqur+)AUa~q7Zl_=V;*vkW ztk9`)A?>FVEiWt5wj^3lQFLBp#1QnWbKZLYR@O4RyGJhEt0`x;#K9!x>dL*Vs#g`><(KO&Zc!r<=j3G?M%UJ3Cbo(mQd=V z!|s-5R2~PkI`&1|Y1EP9kQgsQGh!L_ffmTK^ekx!n=cI{cxT>aImh-D7@2~N#p?66 zCnVK1ah#d~t%v8Um|OFXx#UTdxe})3iu7ptPIxL3{wT15wT)vO%r^^+ge7bxOoM}* zu8;i)>1DjwjXy){GR}5&Zqr-fh1mBJH?k|q+1q}%Lbn5tO-(%$M;q3R@dYQZ(Vj;8 zp2{`LX-N&^C@{Tdk!OQ5W*ocDL94<@XEocW52kNTtc~8!r`@l>W>hK}kF6z7^w@q` zkYv;cgWNTFaZZY|n9i_)jrbWr;LB%1l-Djh=I5pe`PShIzq5WBe+v!TKI&msn0DpZ zmc;&!`P##reYNvRG2&>D_a2;C!8MP|M|3+b?+Dqv{^XM7CNXg6xHnDnHF)HP8I4s^ z=WjC$gpe)_RejVdmy>V>1<$HVe_A+=p%i7a=9N(U(vifbdbtmfz`gfFhGzumXVB1X z)sUdmI_9h@ZJr>%VVRz*iwLH>_qb^E#%hug*%K(5pWAVIWJp+!>Jiz&%wr~Yo@88E zpY{#tI&-MEkstq~Z*9|Y4JsZRs_v?FsI1a7F74b%w(@`egI` zsj16XQ4c;Y_}Z#;s}vp?=U`o{$kP>oJo_CbFP@Peg3Q5cPqIVwy;cpw$8ZsCN+U_^ z8sjXwM*^da)2RsZK54GZN@Z}QfpV^%0|X;1f9$6t2HhEG9>2MSZYw%a&cFBY@6u>q z;_&|OpNyc4@?dp+l6>%)tq|0>h=X_J@F-_0jOphT%B*$P79qFQ=8fxtVp@XE z@u19oQZ>Cv>2v~WvghC>Mr?Rwcla4__nJp)&e?dhCWK@d0hrc8f%isGB$qZ=AX~pv zH_dgA_Fqxc2FjYVbCBMg9csN*AFqCRucl%_;^sdGf#I-mT%%jVoL!QEBAA6rv$xE? zUI;%LX%;%EGL$UXkoc@8JRa#&ZxBy%qk7GwH`GjJq;}~joW{^|afyh*;W`@Le43uM zr(2pg663Mf?Epx0e>)c5`@uakCDoa|V{p}60HktAg3x8D4&(B(;!*jI5pPlx-iqm;VD{7Hyr^!*6$j_}2?%Q{SP zhFn3i68kDn|DBjrLeB_X!@0u1qrG7rVUN->N1j2dl5eHxLnwaCbwWKKiIU!RM)P8T zA-@pl7~uDY!GDv2~CT;JNYE zt}Le+jkH4fhs^Bd@d`~)EJ6e5k$%c|Wek@uKx4EWVQy_QH*&6l5?Y^!M9YQXhN=Qr zja3LgoT#;e>qOB^bd$A~$Q9S2lW3O5OTyC35b|9{$NS8Zo+ofwuQHEd#do9ce1rpv z-dB7d9m)%=@=5vmOb4)r8N06eZK)h$Xn~N}P>1t6Qsw?jstJqG?oeC3M|o#QRmyTy ziw_Ja`IX7Zd6_aB0lO26E6>c!oEPZ8oB(GXB;esXgdAE&EJ|ReV0t%2l(n38{U8O2 zQ@-dt7MOS<7^uEGcr-9>TOOXm@hk$hT7I&PzQ~iznd0^qv%Zh+lFiL3bP24^_gjwi zDHplw4R!54PH@6eNnY>!f?HJWSc`JuSSdXq{?cV$&qXrH^`wXtZGJH0M>GA}%A*hn ztIixL*YCBk_QX#Ge5lYobh7+|Mez{-5Lk2JlU#J-N}H$=^KCGN6}NF#B0C#2@*2%8jA<^jEym?*NOrJjS!r4s}wlM1#hP-lxN|`-z)N zz!cMK_WKaft(!DFm;;iBo2tD5Rj_^f31i?O>&mK!rh1;hQ6ZDh3WN5~6oQcxWxOWo z6**I!Oozl5uET=UEVyJA39$Y8Pbn$bWL;|tuLYrT_YaVlC}vnxHIe4rtC-N#AqH=;dB-mvo&*S^7e z5AgQrel)U1|3LA-iT&nGhrzua__x1MpaZeFmGCGV_3E9)sUxRG%>1mV3@``2x%=P7 z5Z=w)z}C+0yRa}UBL&H9`al@*$~hlwsDA1U$F_(K<+9%w9LEou;)ZhkG%7Fef6@2y zQ%_E;!nZ@)6oZ88Ez7Sswik{k6b!Gs;MyRRM@!R%TNY}V2LG|s37`&>6am{^yt&h{ z223ldlRr~ird%0FvDFn0b=;36+xOPj?PQP)4Xwi<%>44I66B>dwR>l4lp>59(}7)N zqhyq~0Z3>`)QQG%r@sGgBKUK4DLs1@L(bi&jiuR*$MJo4PEXJcs@+3wNpA0pzlQnf zEIk>mepS;Q)pVcnv>Tg0L}CF+hsn+nxa>#J^ahY`uF|rirN!8#Gs>&t+t zPD+rAhc=rO@qBX@9V0lz@7%q9^jOf#*+F$pBGP{Aw00~yv5|b$Ybb%1t|oeZuHcr4O?j$99zU!PGgk6`4$Vxix6Xs;PX|WBNVEu4zjRgL)C(HMomdYEAvY!pL}` z2iyr;qo<}2-HA7ckbdKV3EFu=h|FZ@Nkve`S8Jxb{C+FL=q%yw4*I;1yq1^NFT3Df z1h?^=CynTS{UrJ0=Q5n|<*JR+O@cat)19E$(c?(dO{4RnaSI39OS4#d&*k#T;9K+h zRyYmtsqUPWaCp_RB$FFe-IBTI^C@yK9Pd|pL@COCj1Tat$WyKqJO5nu+^_E%98>tt ztgmL(M6A7kdQrh!x!aFlW@4ZMKR8ON;Cq&mPHoH&B0J|kIXu7g$PC;xg^*d2t8=?h z@lT}lkSr=(g}J(KmT(khcOtb`1{?19JR1K)c^m=D5*DAV1c}Zk+}#d1f+c<#@>M;Q zQ*WW0F8`4c%h|Dl7sLEdf##ygf0ZL<+Ns2lC}&aTP`^GOFuZ= zQpR=V`Y^F)@lecSXaIL5r+vmmYkVR_F)VQqSbNyt!279CGnh#QV)xl&v5pJvd6Wkp zK$ZL2C~Dw?!9CSx_+~+?9U~yKu~MSHwqOzs^qA`7s^kjBl&OpK*6YSY5Tn`Wk4TR@ zRX~ry3Xi*;Y7GE)V_nKDz{BH+VyNrAh*(~V%|ESItgV$Bd*k!cEDYOx3>Ai411OI6 z-?(Q)YvvC1p4;S%;WY-`Z_H(M;oP}iz7d>i1aDfTb&hsM>}f$)A0cb$vL>@dxhVBR ze#%enGgpWX7ZQi4LkT$p9TJx=Pv`ViBR(hmanNzE7tHXi|0+KYmEI-ad zvjhc{q5#bwD5Y=TE!3YFn=Qt?+_=Fsrzw&-Bon9en!I6gKx$>}M}1r+k^cNZsSaep z!&_Gu@U)!q-AiVzY!&}%+p3xW1abcR;5INM+z5aXCBb!?#kzz|d73%BY{tc*8APym z|C+HnQ@MQ4B!S<30Tc?)E~CCL@68aWi&+(=<)J=H(7on{9P&EVUS{`@+KXF}WN?uB4|4n7|t~ZX~3OmbDru3ENSIjIu zFBo;UL45YZl$)x@A3m;#+}coQdiV>IQH+mSxZGuv@M4?xatw!xpqV+v44qcY4k8(pSHoyO$`h}quWtK#>CxkV2vh;x zK?S}}PpC~J(lg3g)`aRS7d%N=$DOk1-RZan3GunYNLI~TUKUHaDOzRJN;GI`&)9U^ zBy46Z@C>-c6R9xxgVFAwcUn$AC}$4mD?^i7(99CpwxZgY+_TOLuM+Yl>sK`_%QPW{ z_Jlf{iExZ}2@0x7Ar=^b>k%T+3Bs7X5rQxI$Pc74HSzjn0V{cU%zEI-MYLNpvs|MB zlQZJx@E@SPrYci~?%=PsqJVxQRGw#uUI9Fvas=L^`oRxlk1^W=V+UkF=T}F`*s`NN z@pcz^Zs73+KY*c+{jjL}wbL{`G)<@Je*!wmjEAf;n{e!41)e!|1jJhl9eoG;ojd`te zVmFu{y-eNCRW0hV7es}2UAM^?$J%Yef=;|@qzKtD+)y{bNJFlMk}p}Qy8*#_!Rr-t zL6EvlB)QQks|m2dezv0=*w!(qCI`ZT))PRs(2O#qdsR`^PQ z5kYeOUQv>mqtvCq%x{w_UVCfsX~gAPEPdvxVGj%1!IN&u*yOQPZR8Lp58SUO%C6%F zFk7I9(6WVxuN0o2-8BrVrQTtLAGx(pk60-9>MZgF13@XAjLAEsc~ZpepG1YLAz^^? zk8TA3H^-?ywknq%PB!ponb&vKketn@2N~AN2Q}nO1?3Os8aL6?6k6@K1bvd_tgUFF z!$_7ixb=O`^{LdH(1<81{JZ)j6#*C%_x^FagpsV8zdAOtC_V|&jyS4guYKSkyJG<_ zR1G5Nzeg z$o}M={z8WEhg^%4HNPn^upIg;iH6+{FElm(QKgPb_FlaNEjMnQ3%&*;&FzA_^oCf< z+Y;mtu^GJELrxJ#)yAGLnM{qgCQIXTS{B@MfIP)}cfJl~85>$6Z9uwRJ{+m&AS&&X z;#2wfd)$SR=OYU11F7)n62+-@ z<+>sVf?p9%Ie ze^{K25Cxv5J>feTG$3lnk|_Tu`|u+(z_j@VS`)DMp#{i%#Kb_rE#VeJK3V# zEaBDOsy>vZ#UtFR!1D!>(}#{|178!*<=wxVpx^I{?phGuC!>wqeU|%uv@yXSGJizi zLuMiY;DQuz zlVQAhEpgdID3C=upehj)r|?;!pw-E-cRjU+`#~R7Ul&XOp4Xh+CRl_d2X|h#ZxK#Q ztz0WLkN3*VD@nZFSAjJbV(G|9F~iOsmq!~vXRRNul?17yONM?2wAyx=H z1>JqvU702YaKbuDKG;i0An&CBhhFbC8|p@jsf|fIz_d73)%k<)ORL>HD^tEo)%dXB zk_Zv?L$fKAL>_g2{}fF0{U;K1#8nx%!Fq8C z3--}MY(k5jN{O*}SfHeu?OBB)0(ABYrWRKlz?-eM@t;-kVvl3p?MDiR96)l>62?}o z&x-=ZJ)+qMgJ~yxhtGpZZHG&&bipfu_OSO^oM1NPN-)FH1i-@HZfja69NBQR75%9# z$8CtGO^kTCAJN@QTrpMlSXj`luY)9vPVoR3-+)ba7Py)whSKIex`KZ4icxdg@c>iD z#Zh0KF!>qkbN<$j-&Zf~{|R*4*<=>pX&jueAWS?+XM0A>eWt6%;?TnVwU1Fub<&od$=nI*ZFD za}KR407pm87VZj$2Qjs!C%$ul;WcgW}HDQhqF^y;&keYSgQ;ycwdDZm76Ut z>oGjACLtJWs)r_ML&*ehdFKxcLY7e^CNj>ip=bM^smyXVKKPNgLZ*DFrNg9hf#W}v zb>i%ehQ_2`r>j^)_;9|Ymk;pR-jbFX^De#QyQl!CmH6K%Iw3U7j5m~Td9C3)@<8&b z&P||Mx1(?nRR0G$Ns$(1SE{)EqxU8dSD9HJM=cMBDSxl1AL3- z3vd?#Z*=7D9(1!aBTh88*H%lf5rz!%!3lOowzv4ggBVH*0AI32g5R@5Fx(xCOWJOic-pSs@(pVQm5=o zyZv%x11NZUn+ZLT+=()CZG=lnRm?b+-u{6$dNJ*U7sxa+>S+1oF4h0OJ~W3E?08Cg zU2~^l`H%C*Dm=BiVhp-tL`pViG@gzwj6coEACL6IiHEajq~OnncXi!Yr9V^`+@6YC z*M*->IL%+QBNM_2N3Ow?kZk7nK>~4GHjz2j<5($j$`Q{U+K~#@v(9vwU5*uZOLz-wQ>HEsJ)U@|dcZf>EgNnL+ouh5TuX@BUhFz%#W zoR<^lp3i@kXT%}j_Fnd$9jpJvYhJx6$e`FSl1_^F-Am2F9dXYK#fU1gtBsbG|4CIS zQ9{&?&IKze?3RZd%FvfA!gvW;tG5-T>ZVHIYVQh}L>Ye1N^hqJy=6&f*YWLW-2^c9 z6)dQ8Cm<_U#BmAMM-@$MQ*l8|UL71&FcO48&hhbX({R|jH|NQB)6KOW)1Z6jzdUy$h%RMNs! z;mFn;ala9P?_1jYK=BB_ADM)=@EZHTcV&l(oua;T9&f25Ewtg4+DJIBiY*CL$Aj)ODfB^Z`x{Rry^ngIR|^ zyBXM(fQuFhNvLW`{N_q=27v5X%Wj!7LoNr4YLft7LWeSp>{^`7)2I~PXmgS-7He8# z3x+r>+lnCxSJT%AYOOwv$oB$-hysrg`N|wSg(}UUygV68jC|a5W}aTqwjnU2lcwEt zhy-HYQ1n!AJLfJ05y+NG@HRv1LnKYgrtd`kab3(ODP!(@Iko}OzHP3jYi8X`_{j21SzkHVFkRBpiQu;y~;;S@^}Lj zGUELU>;pj}wh;zT5f|$-S!c3mIz-e!LD~*B0V%3`A$-k0L4G9U1e{INPmsQ6JT>Z& zZiIHvJZnDX;e4B2vx$`UUx=(!fab)n+ojT74#UqRax@jv-Rgw<$B#~XuMRgv-`}sB z>iDdm5Pn~?mzChhfOUz$9NEETUNY-FVJkM^U2{X>Zd%iFqW= zP)uhV(ZXX*zYda<<9Z5tXZsD&Cb~@Rr%&ZTXnQzb^ICUUj}2a_6g2Zc0fO1Sk*FeU zNai>LE=268MKJem0P|u5e;L=&pw?HIn@e@y2E(7dxQTNWB{9}2!jDaUlf@J@&Axgb ztWxo4{X{2Y>Qq|!(AYFUdg>6Vbg6PO`f5IdFVY{fh%5XqDJGmiN#lrg9FCPU+@=e! z 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ⅅ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

p_IDJZ(b<^g92&X(QE*G; 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 literal 0 HcmV?d00001 diff --git a/public/sitemap.xml b/public/sitemap.xml index 43f4325..1d27c71 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -1 +1 @@ -https://refactron.dev/weekly1.0https://refactron.dev/blogweekly0.9https://refactron.dev/aboutmonthly0.6https://refactron.dev/changelogweekly0.7https://refactron.dev/securitymonthly0.5https://refactron.dev/privacy-policyyearly0.3https://refactron.dev/terms-of-serviceyearly0.3https://refactron.dev/blog/i-ran-refactron-on-djangos-codebasemonthly0.8https://refactron.dev/blog/refactron-vs-cursor-vs-codeantmonthly0.8https://refactron.dev/blog/why-we-built-verification-engine-firstmonthly0.8https://refactron.dev/blog/legacy-code-ai-refactoringmonthly0.8https://refactron.dev/blog/refactron-on-requests-librarymonthly0.8https://refactron.dev/blog/real-cost-of-not-refactoringmonthly0.8https://refactron.dev/blog/refactron-on-fastapimonthly0.8https://refactron.dev/blog/how-to-safely-refactor-python-code-you-didnt-writemonthly0.8https://refactron.dev/blog/why-refactron-runs-locallymonthly0.8https://refactron.dev/blog/refactron-is-now-a-nodejs-packagemonthly0.8 \ No newline at end of file +https://refactron.dev/weekly1.0https://refactron.dev/blogweekly0.9https://refactron.dev/aboutmonthly0.6https://refactron.dev/changelogweekly0.7https://refactron.dev/securitymonthly0.5https://refactron.dev/researchmonthly0.5https://refactron.dev/privacy-policyyearly0.3https://refactron.dev/terms-of-serviceyearly0.3https://refactron.dev/blog/i-ran-refactron-on-djangos-codebasemonthly0.8https://refactron.dev/blog/refactron-vs-cursor-vs-codeantmonthly0.8https://refactron.dev/blog/why-we-built-verification-engine-firstmonthly0.8https://refactron.dev/blog/legacy-code-ai-refactoringmonthly0.8https://refactron.dev/blog/refactron-on-requests-librarymonthly0.8https://refactron.dev/blog/real-cost-of-not-refactoringmonthly0.8https://refactron.dev/blog/refactron-on-fastapimonthly0.8https://refactron.dev/blog/how-to-safely-refactor-python-code-you-didnt-writemonthly0.8https://refactron.dev/blog/why-refactron-runs-locallymonthly0.8https://refactron.dev/blog/refactron-is-now-a-nodejs-packagemonthly0.8 \ No newline at end of file diff --git a/scripts/generate-sitemap.js b/scripts/generate-sitemap.js index 9ebc4a2..8e11baf 100644 --- a/scripts/generate-sitemap.js +++ b/scripts/generate-sitemap.js @@ -19,6 +19,7 @@ const staticRoutes = [ { url: '/about', changefreq: 'monthly', priority: 0.6 }, { url: '/changelog', changefreq: 'weekly', priority: 0.7 }, { url: '/security', changefreq: 'monthly', priority: 0.5 }, + { url: '/research', changefreq: 'monthly', priority: 0.45 }, { url: '/privacy-policy', changefreq: 'yearly', priority: 0.3 }, { url: '/terms-of-service',changefreq: 'yearly', priority: 0.3 }, // blog posts added dynamically below diff --git a/scripts/prerender.js b/scripts/prerender.js index 908bd86..4834909 100644 --- a/scripts/prerender.js +++ b/scripts/prerender.js @@ -31,6 +31,7 @@ const PAGES = [ '/about', '/changelog', '/security', + '/research', '/privacy-policy', '/terms-of-service', ...blogSlugs.map(slug => `/blog/${slug}`), diff --git a/src/App.tsx b/src/App.tsx index 5a3411a..c69690b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -9,8 +9,11 @@ import { Analytics } from '@vercel/analytics/react'; import HeroSection from './components/HeroSection'; import RefactoringWorkflowSection from './components/RefactoringWorkflowSection'; import WhatWeDoSection from './components/WhatWeDoSection'; +import ComparisonSection from './components/ComparisonSection'; +import QuickstartSection from './components/QuickstartSection'; import PricingSection from './components/PricingSection'; import FAQSection from './components/FAQSection'; +import TestimonialsSection from './components/TestimonialsSection'; import BlogPage from './components/BlogPage'; import BlogPostPage from './components/BlogPostPage'; import AboutPage from './components/AboutPage'; @@ -28,6 +31,7 @@ import useAccessibility from './hooks/useAccessibility'; import PageLayout from './components/PageLayout'; import Changelog from './components/Changelog'; import SecurityPage from './components/SecurityPage'; +import ResearchPage from './components/ResearchPage'; import StatusPage from './components/StatusPage'; import { ThemeProvider } from './contexts/ThemeContext'; @@ -37,6 +41,9 @@ const LandingContent: React.FC = () => ( + + + @@ -146,6 +153,14 @@ function App() { } /> + + + + } + /> } /> { - const [activeCardIndex, setActiveCardIndex] = useState(0); +type DigestSeverity = 'error' | 'warning' | 'info'; + +const problemDigestRows: { + severity: DigestSeverity; + title: string; + detail: string; +}[] = [ + { + severity: 'error', + title: 'Circular dependency', + detail: 'module_a imports module_b; module_b imports module_a.', + }, + { + severity: 'warning', + title: 'Duplicated code', + detail: '847 lines duplicated across 12 files.', + }, + { + severity: 'warning', + title: 'High complexity', + detail: 'Cyclomatic complexity 28 (threshold 10).', + }, + { + severity: 'info', + title: 'Test coverage', + detail: '38% overall.', + }, + { + severity: 'error', + title: 'Technical debt', + detail: 'Overall risk flagged as high.', + }, +]; + +const approachSteps: { title: string; detail: string }[] = [ + { + title: 'Analyze the codebase', + detail: 'Structure and dependencies are mapped without modifying files.', + }, + { + title: 'Detect patterns', + detail: 'Architectural patterns and hotspots surface as readable findings.', + }, + { + title: 'Refactor opportunity', + detail: + 'Example: extract an interface (low risk) to reduce coupling between modules.', + }, + { + title: 'Verification', + detail: 'Behavior checks pass, including your existing test suite.', + }, + { + title: 'Ready for review', + detail: 'You get a clear diff and rationale before anything ships.', + }, +]; +const severityChipClass: Record = { + error: 'border-rose-500/25 bg-rose-500/10 text-rose-300/95', + warning: 'border-amber-500/25 bg-amber-500/10 text-amber-200/95', + info: 'border-sky-500/25 bg-sky-500/10 text-sky-200/95', +}; + +const severityLabel: Record = { + error: 'Error', + warning: 'Warning', + info: 'Info', +}; + +const AboutPage: React.FC = () => { useSEO({ title: 'About Refactron | Safety-First Refactoring Engine', description: - 'Refactron is a safety-first refactoring engine for evolving real-world codebases through structured, incremental, and behavior-preserving transformations.', + 'Every codebase has code nobody wants to touch. Refactron exists to change that: refactoring legacy code with verification so you know nothing broke.', keywords: 'safe refactoring, code evolution, technical debt, behavior-preserving transformation, incremental refactoring, code maintainability', ogTitle: 'About Refactron | Safety-First Refactoring Engine', ogDescription: - 'A safety-first refactoring engine for evolving real-world codebases with confidence.', + 'Every codebase has code nobody wants to touch. Built to refactor the old code and prove it stayed safe.', canonical: 'https://refactron.dev/about', robots: 'index, follow', }); @@ -58,8 +153,12 @@ const AboutPage: React.FC = () => { return (

{/* ─── Hero ─────────────────────────────────────────────────────────── */} -
- {/* Line grid — visible in center, fades on all four sides */} +
+
+ {/* Line grid - visible in center, fades on all four sides */}
{ />
-
+
-
-

- About Refactron +
+

My story

+

+ + About Refactron +

-
-

- A safety-first refactoring engine for evolving real-world - codebases through structured, incremental, and - behavior-preserving transformations. +

+
+

+ Every codebase has code nobody wants to touch.{' '} + + I built Refactron to change that. +

+ {/* ─── Founder ───────────────────────────────────────────────────────── */} +
+
+
+ +
+
+
+
+ {/* Soft outer glow */} +
+
+
+ Portrait of Om Sherikar, founder of Refactron + {/* Vignette: hide wall / frame at edges; keeps subject readable */} +
+
+
+
+
+ Om Sherikar, founder of Refactron. +
+
+ +
+
+ +
+
+ {/* ─── The Problem ──────────────────────────────────────────────────── */}
@@ -111,9 +328,10 @@ const AboutPage: React.FC = () => { whileInView={{ opacity: 1, x: 0 }} viewport={{ once: true }} transition={{ duration: 0.6 }} - className="lg:col-span-6 space-y-8" + className="lg:col-span-6 space-y-8 order-1" >
+

Context

The Problem

@@ -130,10 +348,10 @@ const AboutPage: React.FC = () => { ].map((item, i) => (
  • - - → + + {item}
  • @@ -147,50 +365,50 @@ const AboutPage: React.FC = () => { whileInView={{ opacity: 1, scale: 1 }} viewport={{ once: true }} transition={{ duration: 0.6, delay: 0.1 }} - className="lg:col-span-6 hidden lg:block" + className="lg:col-span-6 mt-10 lg:mt-0 order-2" > -
    - -
    -
    - > ERROR: CircularDependencyDetected -
    -
    - > module_a imports module_b -
    -
    - > module_b imports module_a -
    -
    - > WARNING: DuplicatedCode -
    -
    - > 847 lines duplicated across 12 files -
    -
    - > WARNING: HighComplexity -
    -
    - > cyclomatic_complexity: 28 (threshold: 10) -
    -
    - > test_coverage: 38% -
    -
    - > technical_debt_ratio: HIGH +
    +
    +
    + +

    + Sample health digest +

    +
    +
    + {problemDigestRows.map(row => ( +
    +
    + + {severityLabel[row.severity]} + + + {row.title} + +
    +

    + {row.detail} +

    -
    - + ))} +
    - {/* ─── Our Approach ─────────────────────────────────────────────────── */} + {/* ─── My Approach ───────────────────────────────────────────────────── */}
    @@ -202,46 +420,41 @@ const AboutPage: React.FC = () => { whileInView={{ opacity: 1, scale: 1 }} viewport={{ once: true }} transition={{ duration: 0.6 }} - className="lg:col-span-6 hidden lg:block order-2 lg:order-1" + className="lg:col-span-6 mt-10 lg:mt-0 order-2 lg:order-1" > -
    - -
    -
    - > analyzing_codebase... -
    -
    - > dependency_graph: built -
    -
    - > architectural_patterns: detected -
    -
    - > refactor_opportunity_found: -
    -
    - > type: extract_interface -
    -
    - > impact: low_risk -
    -
    - > benefit: reduces_coupling -
    -
    - > verification: passed -
    -
    - > tests: all_green ✓ -
    -
    - > ready_for_review -
    -
    -
    +
    +
    +
    + +

    + Structured analysis run +

    +
    +
      + {approachSteps.map((step, i) => ( +
    1. + + {i + 1} + +
      +

      + {step.title} +

      +

      + {step.detail} +

      +
      +
    2. + ))} +
    @@ -254,8 +467,9 @@ const AboutPage: React.FC = () => { className="lg:col-span-6 space-y-8 order-1 lg:order-2" >
    +

    How I think about it

    - Our Approach + My Approach

    Refactoring as a structured engineering process, not a @@ -270,10 +484,10 @@ const AboutPage: React.FC = () => { ].map((item, i) => (

  • - - → + + {item}
  • @@ -292,155 +506,70 @@ const AboutPage: React.FC = () => { {/* Section header */} -
    -

    +

    Principles

    +

    + What Safe Means -

    -
    -
    -

    - Safety is not a claim — it's a set of constraints Refactron is - built around. -

    -
    + + +

    + Safety is not a claim: it's a set of constraints I built + Refactron around. +

    - {/* CardSwap layout */} -
    - {/* Left: active constraint list */} - - {safetyConstraints.map((c, i) => ( - + {safetyConstraints.map((c, i) => { + const isLast = i === safetyConstraints.length - 1; + return ( +
    -
    -
    - - {c.num} - -
    -

    - {c.title} -

    -

    - {c.description} +

    +
    +
    + + {c.num} + + + {c.outcomeLabel} + +
    +

    + {c.title} +

    +

    + {c.description} +

    +
    +

    + {c.outcome}

    - - ))} -
    - - - {/* Right: CardSwap — relative container sized to fit the stack */} -
    - - -
    -
    $ analyze.sh
    -
    → Read-only mode: ON
    -
    - → Scanning 847 files... -
    -
    - → No changes written to disk -
    -
    - → Analysis complete ✓ -
    -
    -
    - -
    -
    $ refactor.sh
    -
    - → 3 refactor proposals ready -
    -
    - → Awaiting your approval... -
    -
    - [y] extract_interface: UserService -
    -
    - → Change applied ✓ -
    -
    -
    - -
    -
    $ verify.sh
    -
    - → Running behavior checks... -
    -
    - → Snapshot comparison: passed -
    -
    - → Test suite: 142/142 ✓ -
    -
    - → Semantic equivalence: confirmed ✓ -
    -
    -
    - -
    -
    - $ incremental.sh -
    -
    - → Scope: 1 class, 3 methods -
    -
    - → Lines changed: +12 / -8 -
    -
    - → No cross-module side effects -
    -
    - → Safe to apply ✓ -
    -
    -
    - -
    -
    $ rollback.sh
    -
    - → Reverting changeset abc123... -
    -
    → Files restored: 3
    -
    → State: clean ✓
    -
    - → Rollback complete in 0.3s -
    -
    -
    -
    -
    -
    +
    + ); + })} +
    - {/* ─── Why We're Building Refactron ─────────────────────────────────── */} + {/* ─── Why I'm Building Refactron ───────────────────────────────────── */}
    @@ -450,8 +579,12 @@ const AboutPage: React.FC = () => { whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} transition={{ duration: 0.5 }} - className="relative rounded-3xl border border-white/[0.08] bg-white/[0.02] p-12 md:p-16 overflow-hidden" + className={`relative ${panelSurface} p-12 md:p-16`} > +
    {/* Decorative large quote mark */}
    {
    {/* Left accent bar */} -
    +
    -
    +
    - Why We're Building Refactron + + Why I'm Building Refactron +
    -
    +
    { transition={{ duration: 0.5, delay: 0.2 }} className="text-base md:text-lg text-neutral-400 font-space leading-relaxed" > - We've worked with long-lived, real-world codebases where - refactoring was necessary but often deferred because existing - tools didn't feel safe or trustworthy. Refactron is being - built to fill that gap — to make code evolution boring, - predictable, and repeatable, so teams can improve their - systems with confidence instead of fear. + I built Refactron because the tools that existed could find + legacy code or generate new code but none of them could + actually refactor the old code and prove it was safe. - - {/* Three pillars */} - - {[ - { - label: 'Boring by design', - sub: 'No surprises. Ever.', - }, - { - label: 'Predictable', - sub: 'Every change is traceable.', - }, - { - label: 'Repeatable', - sub: 'Works the same way, always.', - }, - ].map(p => ( -
    -
    - {p.label} -
    -
    - {p.sub} -
    -
    - ))} -
    + That gap bothered me enough that I could not leave it alone. +
    @@ -533,7 +638,11 @@ const AboutPage: React.FC = () => {
    {/* ─── Contact ──────────────────────────────────────────────────────── */} -
    +
    +

    @@ -543,9 +652,9 @@ const AboutPage: React.FC = () => { href="https://cal.com/omsherikar/queries-refactron" target="_blank" rel="noopener noreferrer" - className="inline-block px-8 py-4 bg-transparent border border-white/10 text-white rounded-xl hover:bg-white/5 hover:border-white/20 transition-all font-medium font-space" + className="inline-flex items-center justify-center px-8 py-4 rounded-xl border border-white/15 bg-white/[0.06] text-white font-medium font-space shadow-[0_0_40px_-12px_rgba(255,255,255,0.08)] hover:bg-white/10 hover:border-white/25 transition-all" > - Get in touch with us + Get in touch

    diff --git a/src/components/ComparisonSection.tsx b/src/components/ComparisonSection.tsx new file mode 100644 index 0000000..1be71ef --- /dev/null +++ b/src/components/ComparisonSection.tsx @@ -0,0 +1,209 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { motion, useReducedMotion } from 'framer-motion'; +import { Check, X } from 'lucide-react'; + +/* ─── Data ─────────────────────────────────────────────────────── */ + +const PRODUCTS = ['Refactron', 'Cursor', 'SonarQube', 'CodeAnt'] as const; + +interface Row { + label: string; + values: [boolean, boolean, boolean, boolean]; +} + +const CAPABILITY_ROWS: Row[] = [ + { label: 'Finds legacy code', values: [true, false, false, false] }, + { label: 'Refactors it structurally', values: [true, false, false, false] }, + { label: 'No LLM in the engine', values: [true, false, true, false] }, + { + label: 'Verifies safety before write', + values: [true, false, false, false], + }, + { + label: 'Generates docs after refactor', + values: [true, false, false, false], + }, + { label: 'Runs fully local', values: [true, false, false, false] }, +]; + +const SUPPORT_ROWS: Row[] = [ + { label: 'Python', values: [true, true, true, true] }, + { label: 'TypeScript', values: [true, true, true, true] }, +]; + +/* ─── Cell ─────────────────────────────────────────────────────── */ + +const Cell: React.FC<{ on: boolean }> = ({ on }) => + on ? ( + + + + ) : ( + + + + ); + +/* ─── Section ──────────────────────────────────────────────────── */ + +const ComparisonSection: React.FC = () => { + const reduce = useReducedMotion() ?? false; + + return ( +
    +
    +
    + +
    + +
    +

    + How Refactron compares. +

    +
    +
    +

    + Cursor and CodeAnt lean on LLMs. SonarQube analyzes, but it + doesn't refactor. Refactron finds legacy code, transforms it + deterministically, and verifies before anything touches disk. +

    +
    +
    + + +
    + ); +}; + +export default ComparisonSection; diff --git a/src/components/CookieManager.tsx b/src/components/CookieManager.tsx index 80712b0..3242034 100644 --- a/src/components/CookieManager.tsx +++ b/src/components/CookieManager.tsx @@ -20,7 +20,6 @@ const CookieManager: React.FC = () => { onCustomize={() => setShowPreferencesModal(true)} onCancel={() => { // User dismissed the banner without making a choice. - // They can revisit via the footer "Cookie Settings" link. }} /> diff --git a/src/components/FAQSection.tsx b/src/components/FAQSection.tsx index 6f96bb7..c243168 100644 --- a/src/components/FAQSection.tsx +++ b/src/components/FAQSection.tsx @@ -1,12 +1,12 @@ import React, { useState } from 'react'; -import { motion, AnimatePresence } from 'framer-motion'; +import { motion } from 'framer-motion'; const faqs = [ { question: 'Does Refactron change my code automatically?', answer: - 'No. Refactron starts in read-only mode and proposes refactors as reviewable diffs. Automation is optional and only applies low-risk changes with explicit consent.', - tags: ['Read-Only', 'Diffs', 'Automation', 'Consent'], + 'No. Every structural refactor is shown as a readable diff. Low-risk changes can apply automatically. High-risk changes always ask for approval first. You are always in control.', + tags: ['Diff', 'Approval', 'Control', 'Safety'], }, { question: 'How does Refactron ensure changes are safe?', @@ -29,8 +29,8 @@ const faqs = [ { question: 'Which languages are supported?', answer: - 'Refactron is designed to be language-agnostic. Initial tooling focuses on Python and JavaScript for early access and feedback, with broader language support planned.', - tags: ['Languages', 'Python', 'JavaScript', 'Roadmap'], + 'Python, TypeScript, and JavaScript are fully supported today. Go, Rust, and Java are on the roadmap.', + tags: ['Python', 'TypeScript', 'JavaScript', 'Roadmap'], }, { question: 'Is this open source?', @@ -41,15 +41,15 @@ const faqs = [ ]; const FAQSection = () => { - const [openIndex, setOpenIndex] = useState(null); + const [openIndex, setOpenIndex] = useState(0); const toggle = (i: number) => setOpenIndex(openIndex === i ? null : i); return ( -
    -
    +
    +
    {/* Large display heading */} -

    +

    FAQ

    @@ -59,17 +59,23 @@ const FAQSection = () => { {faqs.map((faq, i) => { const isOpen = openIndex === i; const num = `(${String(i + 1).padStart(3, '0')})`; + const panelId = `faq-panel-${i}`; + const buttonId = `faq-trigger-${i}`; return (
    {/* Row */} - {/* Expanded content */} - - {isOpen && ( - -
    -

    - {faq.answer} -

    -
    - {faq.tags.map(tag => ( - - {tag} - - ))} -
    -
    -
    - )} -
    + {/* Answer always in DOM for SEO; height/opacity animate for UX */} + +
    +

    + {faq.answer} +

    +
    + {faq.tags.map(tag => ( + + {tag} + + ))} +
    +
    +
    {/* Divider */}
    @@ -127,15 +133,15 @@ const FAQSection = () => { ); })} {/* Contact CTA */} -
    -

    +

    +

    Have a specific question? Let's talk.

    Contact Us diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 75db842..e24ce42 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -2,8 +2,6 @@ import React, { useEffect, useState } from 'react'; import { Github, Linkedin } from 'lucide-react'; import DiscordIcon from '../icons/DiscordIcon'; import XIcon from '../icons/XIcon'; -import CookiePreferencesModal from './CookiePreferencesModal'; -import { useCookieConsent, CookiePreferences } from '../hooks/useCookieConsent'; import { getApiBaseUrl } from '../utils/urlUtils'; type OverallStatus = 'operational' | 'degraded' | 'outage' | 'loading'; @@ -58,12 +56,6 @@ function StatusBadge() { const Footer: React.FC = () => { const currentYear = new Date().getFullYear(); - const { preferences, savePreferences } = useCookieConsent(); - const [showCookieModal, setShowCookieModal] = useState(false); - - const handleSavePreferences = (newPreferences: CookiePreferences) => { - savePreferences(newPreferences); - }; return (
    @@ -214,38 +230,20 @@ const Footer: React.FC = () => {
  • - Status - -
  • -
  • - - Contact + Privacy
  • - Privacy + Terms
  • -
  • - -
  • @@ -259,14 +257,6 @@ const Footer: React.FC = () => {
    - - {/* Cookie Preferences Modal */} - setShowCookieModal(false)} - onSave={handleSavePreferences} - currentPreferences={preferences} - /> ); }; diff --git a/src/components/NumericAsciiBackdrop.tsx b/src/components/NumericAsciiBackdrop.tsx new file mode 100644 index 0000000..e1720b7 --- /dev/null +++ b/src/components/NumericAsciiBackdrop.tsx @@ -0,0 +1,227 @@ +import React, { useEffect, useRef } from 'react'; + +type NumericAsciiBackdropProps = { + /** Extra classes on the positioning wrapper */ + className?: string; +}; + +/** + * Numeric “ASCII” field: digits get brighter along two simple reaching shapes + * (hands toward center), like an approachable start — Refactron snowflake in the gap. + */ +const NumericAsciiBackdrop: React.FC = ({ + className = '', +}) => { + const wrapRef = useRef(null); + const canvasRef = useRef(null); + + useEffect(() => { + const wrap = wrapRef.current; + const canvas = canvasRef.current; + if (!wrap || !canvas) return; + + const ctx = canvas.getContext('2d'); + if (!ctx) return; + + let ro: ResizeObserver | null = null; + + const paint = () => { + const dpr = Math.min(window.devicePixelRatio ?? 1, 2); + const w = wrap.clientWidth; + const h = wrap.clientHeight; + if (w < 1 || h < 1) return; + + canvas.width = Math.floor(w * dpr); + canvas.height = Math.floor(h * dpr); + canvas.style.width = `${w}px`; + canvas.style.height = `${h}px`; + ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + ctx.clearRect(0, 0, w, h); + + const step = w < 480 ? 9 : 11; + const fontSize = w < 480 ? 8 : 10; + ctx.textBaseline = 'top'; + ctx.textAlign = 'left'; + ctx.font = `${fontSize}px ui-monospace, "JetBrains Mono", monospace`; + + const gauss2 = ( + x: number, + y: number, + cx: number, + cy: number, + sx: number, + sy: number + ) => { + const nx = (x - cx) / sx; + const ny = (y - cy) / sy; + return Math.exp(-(nx * nx + ny * ny)); + }; + + /** Soft stroke from wrist (x0,y0) toward fingertips (x1,y1); peaks near tips. */ + const reachingArm = ( + x: number, + y: number, + x0: number, + y0: number, + x1: number, + y1: number, + halfWidth: number + ) => { + const vx = x1 - x0; + const vy = y1 - y0; + const len = Math.hypot(vx, vy) || 1; + const ux = vx / len; + const uy = vy / len; + const px = x - x0; + const py = y - y0; + const along = px * ux + py * uy; + const clamped = Math.max(0, Math.min(len, along)); + const perp = Math.abs(px * -uy + py * ux); + const radial = Math.exp(-Math.pow(perp / halfWidth, 2)); + const t = clamped / len; + const body = 0.22 + 0.78 * Math.pow(Math.min(1, t / 0.98), 0.42); + const fingertip = Math.exp(-Math.pow((t - 0.9) / 0.17, 2)); + const palm = Math.exp(-Math.pow((t - 0.52) / 0.3, 2)); + return radial * body * (0.52 + palm * 0.95 + fingertip * 1.35); + }; + + /** Three tiny bumps at the pad — reads as simplified fingers. */ + const fingerPads = ( + x: number, + y: number, + x0: number, + y0: number, + x1: number, + y1: number, + outwardSign: number + ) => { + const vx = x1 - x0; + const vy = y1 - y0; + const len = Math.hypot(vx, vy) || 1; + const ux = vx / len; + const uy = vy / len; + const tipX = x0 + ux * len * 0.9; + const tipY = y0 + uy * len * 0.9; + const ox = -uy * outwardSign; + const oy = ux * outwardSign; + const spread = w * 0.019; + let s = 0; + for (let i = -1; i <= 1; i++) { + s += gauss2( + x, + y, + tipX + ox * i * spread, + tipY + oy * i * spread, + w * 0.028, + h * 0.032 + ); + } + return Math.min(1, s * 1.15); + }; + + const cx = w * 0.5; + const cy = h * 0.42; + const hw = w * (w < 480 ? 0.048 : 0.055); + + for (let y = 0; y < h; y += step) { + for (let x = 0; x < w; x += step) { + const leftArmCell = reachingArm( + x, + y, + w * 0.03, + h * 0.74, + cx - w * 0.09, + cy + h * 0.05, + hw + ); + const leftPadsCell = fingerPads( + x, + y, + w * 0.03, + h * 0.74, + cx - w * 0.09, + cy + h * 0.05, + 1 + ); + const rightArmCell = reachingArm( + x, + y, + w * 0.97, + h * 0.74, + cx + w * 0.09, + cy + h * 0.05, + hw + ); + const rightPadsCell = fingerPads( + x, + y, + w * 0.97, + h * 0.74, + cx + w * 0.09, + cy + h * 0.05, + -1 + ); + + const lm = Math.min(1, leftArmCell + leftPadsCell * 0.95); + const rm = Math.min(1, rightArmCell + rightPadsCell * 0.95); + const clear = gauss2(x, y, cx, cy, w * 0.13, h * 0.15); + + let mask = Math.max(lm, rm) * (1 - clear * 0.88) + 0.045; + + const n = + (Math.floor(x * 0.11 + y * 0.13 + Math.sin(x * 0.02) * 3) % 10) + + 10; + const digit = String(n % 10); + const dVal = parseInt(digit, 10); + const alpha = Math.min( + 0.48, + mask * 0.32 + + (dVal / 9) * 0.1 + + (lm + rm) * 0.06 * (1 - clear * 0.75) + ); + + ctx.fillStyle = `rgba(163, 172, 185, ${alpha})`; + ctx.fillText(digit, x, y); + } + } + + const r = Math.min(w, h) * (w < 480 ? 0.038 : 0.045); + + ctx.strokeStyle = 'rgba(228, 231, 235, 0.88)'; + ctx.lineWidth = Math.max(1.25, fontSize * 0.14); + ctx.lineCap = 'round'; + for (let i = 0; i < 6; i++) { + const ang = (i * Math.PI) / 3 - Math.PI / 2; + ctx.beginPath(); + ctx.moveTo(cx, cy); + ctx.lineTo(cx + r * Math.cos(ang), cy + r * Math.sin(ang)); + ctx.stroke(); + } + + ctx.fillStyle = 'rgba(228, 231, 235, 0.35)'; + ctx.beginPath(); + ctx.arc(cx, cy, r * 0.14, 0, Math.PI * 2); + ctx.fill(); + }; + + paint(); + ro = new ResizeObserver(() => paint()); + ro.observe(wrap); + + return () => { + ro?.disconnect(); + }; + }, []); + + return ( +
    + +
    + ); +}; + +export default NumericAsciiBackdrop; diff --git a/src/components/PricingSection.tsx b/src/components/PricingSection.tsx index ffd5217..9e95b36 100644 --- a/src/components/PricingSection.tsx +++ b/src/components/PricingSection.tsx @@ -12,7 +12,7 @@ const PricingSection = () => { price: '$0', description: 'For individual developers & evaluation', features: [ - 'Local analysis & refactor suggestions', + 'Local analysis & legacy code detection', 'Safe-mode refactoring', 'Git diffs & reports', 'Open-source & personal use', @@ -29,10 +29,11 @@ const PricingSection = () => { trial: '14-Day Free Trial', features: [ 'Everything in Free', - 'LLM-powered analysis & autofix', - 'AI refactoring with verification', - 'Metrics & maintainability reports', + 'Full refactoring engine', + 'Verification engine with all three checks', + 'Documentation engine', 'CI/CD integration', + 'Metrics and technical debt reports', 'Priority updates', ], cta: 'Get started', diff --git a/src/components/QuickstartSection.tsx b/src/components/QuickstartSection.tsx new file mode 100644 index 0000000..fd2dd21 --- /dev/null +++ b/src/components/QuickstartSection.tsx @@ -0,0 +1,208 @@ +import React, { useCallback, useState } from 'react'; +import { motion, useReducedMotion } from 'framer-motion'; + +import NumericAsciiBackdrop from './NumericAsciiBackdrop'; + +type StackId = 'npm' | 'pip'; + +interface CommandLine { + comment: string; + command: string; +} + +const STACK_ORDER: StackId[] = ['npm', 'pip']; + +const STACKS: Record< + StackId, + { tabLabel: string; hint: string; lines: CommandLine[] } +> = { + npm: { + tabLabel: 'npm', + hint: 'Node.js 18+', + lines: [ + { comment: '# Install', command: 'npm install -g refactron' }, + { comment: '# Analyze your codebase', command: 'refactron analyze .' }, + { + comment: '# Preview refactors', + command: 'refactron refactor . --preview', + }, + { + comment: '# Apply with verification', + command: 'refactron refactor . --verify', + }, + ], + }, + pip: { + tabLabel: 'pip', + hint: 'Python 3.8+', + lines: [ + { comment: '# Install', command: 'pip install refactron' }, + { comment: '# Analyze your codebase', command: 'refactron analyze .' }, + { + comment: '# Preview refactors', + command: 'refactron refactor . --preview', + }, + { + comment: '# Apply with verification', + command: 'refactron refactor . --verify', + }, + ], + }, +}; + +const TAB_FOCUS = + 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-500/45 focus-visible:ring-offset-2 focus-visible:ring-offset-[#0a0a0c] rounded-sm'; + +const QuickstartSection: React.FC = () => { + const reduceMotion = useReducedMotion() ?? false; + const [stack, setStack] = useState('npm'); + const active = STACKS[stack]; + + const focusTab = useCallback((id: StackId) => { + document.getElementById(`quickstart-tab-${id}`)?.focus(); + }, []); + + const onTabKeyDown = useCallback( + (e: React.KeyboardEvent, id: StackId) => { + if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return; + e.preventDefault(); + const i = STACK_ORDER.indexOf(id); + const next = + STACK_ORDER[ + (i + (e.key === 'ArrowRight' ? 1 : -1) + STACK_ORDER.length) % + STACK_ORDER.length + ]; + setStack(next); + requestAnimationFrame(() => focusTab(next)); + }, + [focusTab] + ); + + return ( +
    + + +
    +
    + +
    + +
    +

    + QUICKSTART +

    +

    + Up and running in 60 seconds. +

    +
    + +
    + + +

    + That is it. No config. No setup. +
    + No code leaves your machine. +

    + +
    +
    + ); +}; + +export default QuickstartSection; diff --git a/src/components/RefactoringWorkflowSection.tsx b/src/components/RefactoringWorkflowSection.tsx index d908a07..cac6302 100644 --- a/src/components/RefactoringWorkflowSection.tsx +++ b/src/components/RefactoringWorkflowSection.tsx @@ -1,281 +1,1723 @@ -import React from 'react'; +import React, { useRef, useEffect, useState } from 'react'; import { motion } from 'motion/react'; -import { - ScanSearch, - Wand2, - ShieldCheck, - CheckCircle2, - GitCommit, - GitBranch, - ArrowRight, -} from 'lucide-react'; - -const RefactoringWorkflowSection = () => { +import { ArrowRight, Sparkles } from 'lucide-react'; +import { FlickeringGrid } from './ui/flickering-grid'; + +// ─── Types ─────────────────────────────────────────────────────────────────── + +interface SimNode { + id: number; + label: string; + hub: boolean; + legacy: boolean; + pattern: string; + fixed: boolean; + x: number; + y: number; + vx: number; + vy: number; +} + +interface IsoLayer { + id: 'analyze' | 'refactor' | 'verify' | 'document'; + label: string; + step: string; + desc: string; + summaryLabel: string; + summaryDesc: string; +} + +// ─── Graph data ─────────────────────────────────────────────────────────────── +// Edges are import relationships: [importer, importee] + +const NODE_DEFS: Omit[] = [ + { id: 0, label: 'index.js', hub: true, legacy: false, pattern: '' }, + { + id: 1, + label: 'auth.js', + hub: false, + legacy: true, + pattern: 'callback-based async', + }, + { + id: 2, + label: 'utils.js', + hub: false, + legacy: true, + pattern: 'var declarations', + }, + { + id: 3, + label: 'db/config.js', + hub: false, + legacy: true, + pattern: 'deprecated API', + }, + { id: 4, label: 'user.js', hub: false, legacy: false, pattern: '' }, + { + id: 5, + label: 'payment.js', + hub: false, + legacy: true, + pattern: 'missing type hints', + }, + { id: 6, label: 'routes.js', hub: false, legacy: false, pattern: '' }, + { id: 7, label: 'middleware.js', hub: false, legacy: false, pattern: '' }, + { id: 8, label: 'email.js', hub: false, legacy: false, pattern: '' }, + { id: 9, label: 'helpers.js', hub: false, legacy: false, pattern: '' }, + { id: 10, label: 'config.js', hub: false, legacy: false, pattern: '' }, + { id: 11, label: 'orders.js', hub: false, legacy: false, pattern: '' }, + { id: 12, label: 'notify.js', hub: false, legacy: false, pattern: '' }, + { + id: 13, + label: 'cache.js', + hub: false, + legacy: true, + pattern: 'sync I/O pattern', + }, + { id: 14, label: 'logger.js', hub: false, legacy: false, pattern: '' }, + { id: 15, label: 'events.js', hub: false, legacy: false, pattern: '' }, +]; + +const EDGE_PAIRS: [number, number][] = [ + [0, 1], + [0, 6], + [0, 10], + [1, 4], + [1, 7], + [6, 4], + [6, 11], + [6, 7], + [4, 8], + [4, 9], + [7, 2], + [7, 14], + [10, 3], + [10, 13], + [11, 12], + [11, 5], + [3, 13], + [5, 4], + [8, 9], + [12, 15], + [15, 9], + [2, 10], +]; + +// ─── Force-directed canvas graph ────────────────────────────────────────────── +// +// Repulsion + edge springs + centre gravity. A scan cursor visits every node +// in sequence; the overlay narrates what the engine is "seeing". Visual layer +// is monochrome with one accent (subtle teal) reserved for the active scan +// only — everything else stays in greyscale to keep the panel quiet. + +// Single accent — pure white, distinguished from chrome by higher alpha + glow. +const accent = (a: number) => `rgba(255, 255, 255, ${a})`; + +// Reticle corner directions — hoisted to avoid per-frame allocation. +const RETICLE_CORNERS: ReadonlyArray = [ + [-1, -1], + [1, -1], + [-1, 1], + [1, 1], +]; + +interface ForceGraphProps { + stage: number; +} + +const ForceGraph: React.FC = ({ stage }) => { + const canvasRef = useRef(null); + const stageRef = useRef(stage); + useEffect(() => { + stageRef.current = stage; + }, [stage]); + + useEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + const ctx = canvas.getContext('2d'); + if (!ctx) return; + + const reduceMotion = + typeof window !== 'undefined' && + window.matchMedia('(prefers-reduced-motion: reduce)').matches; + + const dpr = window.devicePixelRatio || 1; + let raf = 0; + const size = { w: 0, h: 0 }; + let nodes: SimNode[] = []; + + // Sequential scan state — advances every DWELL_MS + const scan = { + idx: 0, + lastMs: 0, + scanned: new Set(), + // Smoothly interpolated cursor — eases toward the current target node + cx: 0, + cy: 0, + }; + const DWELL_MS = 620; + + // Trail of recently scanned nodes (oldest first, newest last) + const trail: number[] = []; + const TRAIL_MAX = 5; + + // Animated edge probes — spawn when the scan enters a node + const probes: { from: number; to: number; bornMs: number }[] = []; + const PROBE_DUR = 480; + + // Running log of legacy detections (max 4 visible, fades on entry) + const detections: { id: number; bornMs: number }[] = []; + const DETECT_MAX = 4; + + // Time the current scan node was entered (drives the sonar sweep ring) + let lastEnterMs = 0; + + // Stage = 0 ANALYZE, 1 REFACTOR, 2 VERIFY, 3 DOCUMENT + let stageNow = -1; // forces onStageEnter on first tick + + // Incremental counter — # of legacy nodes among scan.scanned, kept in sync. + let scannedLegacyCount = 0; + + // REFACTOR — step through legacy nodes one at a time + const REFACTOR_STEP_MS = 980; + const REFACTOR_BUFFER_MS = 220; // wait before kicking off the first node + const legacyIds = NODE_DEFS.filter(n => n.legacy).map(n => n.id); + const transforms: { id: number; bornMs: number }[] = []; + let refactorIdx = 0; + let refactorLastMs = 0; + const DIFF_TEXT: Record = { + 'callback-based async': 'cb → async', + 'var declarations': 'var → const', + 'deprecated API': '.exec → .query', + 'missing type hints': '+ type hints', + 'sync I/O pattern': 'read → readAsync', + }; + + // VERIFY — left-to-right wave sweep + checkmark per node + const VERIFY_WAVE_DUR = 2800; + let verifyStart = -1; + const verifyChecks: { id: number; bornMs: number }[] = []; + const verifyCheckSet = new Set(); // O(1) membership for hot loop + + // DOCUMENT — drifting doc glyphs above every legacy node + const DOC_GLYPH_DUR = 1800; + const docGlyphs: { id: number; bornMs: number }[] = []; + + const resize = () => { + const rect = canvas.getBoundingClientRect(); + size.w = rect.width; + size.h = rect.height; + canvas.width = rect.width * dpr; + canvas.height = rect.height * dpr; + ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + }; + resize(); + + nodes = NODE_DEFS.map(n => ({ + ...n, + fixed: false, + x: size.w / 2 + (Math.random() - 0.5) * size.w * 0.5, + y: size.h / 2 + (Math.random() - 0.5) * size.h * 0.5, + vx: 0, + vy: 0, + })); + + // Settle layout once so the first frame doesn't show a tangled blob + const settle = (steps: number) => { + const { w, h } = size; + const cx = w / 2; + const cy = h / 2; + for (let s = 0; s < steps; s++) { + for (let i = 0; i < nodes.length; i++) { + for (let j = i + 1; j < nodes.length; j++) { + const dx = nodes[j].x - nodes[i].x; + const dy = nodes[j].y - nodes[i].y; + const d = Math.sqrt(dx * dx + dy * dy) + 0.01; + const f = Math.min(2800 / (d * d), 8); + const fx = (dx / d) * f; + const fy = (dy / d) * f; + nodes[i].vx -= fx; + nodes[i].vy -= fy; + nodes[j].vx += fx; + nodes[j].vy += fy; + } + } + for (const [si, ti] of EDGE_PAIRS) { + const a = nodes[si]; + const b = nodes[ti]; + const dx = b.x - a.x; + const dy = b.y - a.y; + const d = Math.sqrt(dx * dx + dy * dy) + 0.01; + const f = 0.018 * (d - 85); + const fx = (dx / d) * f; + const fy = (dy / d) * f; + a.vx += fx; + a.vy += fy; + b.vx -= fx; + b.vy -= fy; + } + for (const n of nodes) { + n.vx += (cx - n.x) * 0.002; + n.vy += (cy - n.y) * 0.002; + n.vx *= 0.88; + n.vy *= 0.88; + n.x = Math.max(28, Math.min(w - 28, n.x + n.vx)); + n.y = Math.max(28, Math.min(h - 28, n.y + n.vy)); + } + } + }; + + if (reduceMotion) settle(400); + scan.cx = nodes[0].x; + scan.cy = nodes[0].y; + + const STAGE_TITLE = [ + 'ANALYZING', + 'REFACTORING', + 'VERIFYING', + 'DOCUMENTING', + ]; + + const drawHud = ( + w: number, + activeNode: SimNode, + legacyCount: number, + cleanCount: number, + total: number, + stageNum: number, + ms: number, + generatedDocs: number + ) => { + const px = w - 20; + const titleY = 24; + ctx.textBaseline = 'alphabetic'; + + // Stage title + ctx.font = '7px "JetBrains Mono", monospace'; + const title = STAGE_TITLE[stageNum] ?? 'ANALYZING'; + ctx.fillStyle = 'rgba(255,255,255,0.32)'; + ctx.fillText(title, px - ctx.measureText(title).width, titleY); + + // Subject line — file name or summary depending on stage + let subject = activeNode.label; + let status = ''; + if (stageNum === 0) { + status = activeNode.legacy + ? `LEGACY · ${activeNode.pattern.toUpperCase()}` + : activeNode.hub + ? 'ENTRY POINT' + : 'CLEAN'; + } else if (stageNum === 1) { + const cur = legacyIds[refactorIdx]; + const node = nodes[cur] ?? activeNode; + subject = node.label; + const diff = DIFF_TEXT[node.pattern] ?? '+ refactored'; + status = `APPLY · ${diff}`; + } else if (stageNum === 2) { + subject = `${verifyChecks.length} / ${nodes.length} verified`; + const wt = verifyStart > 0 ? (ms - verifyStart) / VERIFY_WAVE_DUR : 0; + status = wt >= 1 ? 'ALL CHECKS PASSED' : 'CHECKS IN PROGRESS'; + } else if (stageNum === 3) { + subject = `${generatedDocs} / ${legacyIds.length} files documented`; + status = 'INLINE DOCS · CHANGELOGS'; + } + + ctx.font = '600 10px "JetBrains Mono", monospace'; + const subjectW = ctx.measureText(subject).width; + ctx.fillStyle = 'rgba(255,255,255,0.85)'; + ctx.fillText(subject, px - subjectW, titleY + 16); + + ctx.font = '7.5px "JetBrains Mono", monospace'; + const statusW = ctx.measureText(status).width; + ctx.fillStyle = 'rgba(255,255,255,0.5)'; + ctx.fillText(status, px - statusW, titleY + 32); + + // Progress bar — meaning shifts per stage + const BAR_W = 148; + const barX = px - BAR_W; + const barY = titleY + 46; + ctx.fillStyle = 'rgba(255,255,255,0.045)'; + ctx.fillRect(barX, barY, BAR_W, 3); + + let primary = 0; + let secondary = 0; + let counts = ''; + if (stageNum === 0) { + primary = (cleanCount / total) * BAR_W; + secondary = (legacyCount / total) * BAR_W; + counts = `${legacyCount + cleanCount}/${total} · ${legacyCount} LEGACY · ${cleanCount} CLEAN`; + ctx.fillStyle = 'rgba(255,255,255,0.5)'; + ctx.fillRect(barX, barY, primary, 3); + ctx.fillStyle = 'rgba(255,255,255,0.2)'; + ctx.fillRect(barX + primary, barY, secondary, 3); + } else if (stageNum === 1) { + const p = legacyIds.length + ? Math.min(1, refactorIdx / legacyIds.length) + : 0; + ctx.fillStyle = accent(0.6); + ctx.fillRect(barX, barY, p * BAR_W, 3); + counts = `${refactorIdx}/${legacyIds.length} TRANSFORMS APPLIED`; + } else if (stageNum === 2) { + const p = + verifyStart > 0 + ? Math.min(1, (ms - verifyStart) / VERIFY_WAVE_DUR) + : 0; + ctx.fillStyle = accent(0.65); + ctx.fillRect(barX, barY, p * BAR_W, 3); + counts = `${verifyChecks.length}/${nodes.length} FILES VERIFIED`; + } else if (stageNum === 3) { + const p = legacyIds.length ? generatedDocs / legacyIds.length : 0; + ctx.fillStyle = accent(0.65); + ctx.fillRect(barX, barY, p * BAR_W, 3); + counts = `${generatedDocs}/${legacyIds.length} DOCS GENERATED`; + } + + ctx.font = '7px "JetBrains Mono", monospace'; + ctx.fillStyle = 'rgba(255,255,255,0.32)'; + const cw = ctx.measureText(counts).width; + ctx.fillText(counts, px - cw, barY + 14); + }; + + const renderFrame = (ms: number) => { + const { w, h } = size; + + ctx.clearRect(0, 0, w, h); + + const activeNode = nodes[scan.idx]; + + // Per-frame derived counter (used by both stage-log and HUD). + // Cumulative: once a glyph has been "born" the doc is generated and + // stays generated for the rest of the stage. The drift animation only + // controls visual presence, not the count. + let generatedDocs = 0; + if (stageNow === 3) { + for (let i = 0; i < docGlyphs.length; i++) { + if (ms >= docGlyphs[i].bornMs) generatedDocs++; + } + } + + // ── Scan trail polyline (under everything) ──────────────────────────── + if (trail.length > 0) { + for (let i = 0; i < trail.length - 1; i++) { + const a = nodes[trail[i]]; + const b = nodes[trail[i + 1]]; + const t = (i + 1) / trail.length; + ctx.beginPath(); + ctx.moveTo(a.x, a.y); + ctx.lineTo(b.x, b.y); + ctx.strokeStyle = `rgba(255,255,255,${0.04 + t * 0.08})`; + ctx.lineWidth = 0.8; + ctx.stroke(); + } + // Bridge the most recent trail node to the active scan cursor + const last = nodes[trail[trail.length - 1]]; + ctx.beginPath(); + ctx.moveTo(last.x, last.y); + ctx.lineTo(scan.cx, scan.cy); + ctx.strokeStyle = 'rgba(255,255,255,0.15)'; + ctx.lineWidth = 0.8; + ctx.stroke(); + } + + // ── Sonar sweep ring around the active node (ANALYZE & REFACTOR) ────── + if (stageNow === 0 || stageNow === 1) { + const sweepT = (ms - lastEnterMs) / 700; + if (sweepT > 0 && sweepT < 1) { + const radius = 6 + sweepT * 40; + const alpha = (1 - sweepT) * 0.45; + ctx.beginPath(); + ctx.arc(scan.cx, scan.cy, radius, 0, Math.PI * 2); + ctx.strokeStyle = accent(alpha); + ctx.lineWidth = 0.8; + ctx.stroke(); + } + } + + // ── VERIFY: L→R wave front (drawn under everything) ─────────────────── + if (stageNow === 2 && verifyStart > 0) { + const t = (ms - verifyStart) / VERIFY_WAVE_DUR; + if (t < 1.05) { + const waveX = w * Math.min(1, t); + // soft trailing glow band + const grad = ctx.createLinearGradient(waveX - 80, 0, waveX, 0); + grad.addColorStop(0, 'rgba(120,220,215,0)'); + grad.addColorStop(1, 'rgba(120,220,215,0.07)'); + ctx.fillStyle = grad; + ctx.fillRect(waveX - 80, 0, 80, h); + // wave front line + if (t < 1) { + ctx.beginPath(); + ctx.moveTo(waveX, 18); + ctx.lineTo(waveX, h - 18); + ctx.strokeStyle = accent(0.6); + ctx.lineWidth = 1; + ctx.stroke(); + } + } + } + + // ── Edges + arrowheads ──────────────────────────────────────────────── + for (const [si, ti] of EDGE_PAIRS) { + const a = nodes[si]; + const b = nodes[ti]; + const dx = b.x - a.x; + const dy = b.y - a.y; + const dist = Math.sqrt(dx * dx + dy * dy) + 0.01; + const isAdjActive = scan.idx === si || scan.idx === ti; + const bothScanned = scan.scanned.has(si) && scan.scanned.has(ti); + const edgeAlpha = isAdjActive ? 0.16 : bothScanned ? 0.07 : 0.04; + + ctx.beginPath(); + ctx.moveTo(a.x, a.y); + ctx.lineTo(b.x, b.y); + ctx.strokeStyle = `rgba(255,255,255,${edgeAlpha})`; + ctx.lineWidth = 0.5; + ctx.stroke(); + + const tr = nodes[ti].hub ? 5 : nodes[ti].legacy ? 3.4 : 2; + const ex = b.x - (tr + 3) * (dx / dist); + const ey = b.y - (tr + 3) * (dy / dist); + const angle = Math.atan2(dy, dx); + ctx.beginPath(); + ctx.moveTo(ex, ey); + ctx.lineTo( + ex - 5 * Math.cos(angle - 0.45), + ey - 5 * Math.sin(angle - 0.45) + ); + ctx.lineTo( + ex - 5 * Math.cos(angle + 0.45), + ey - 5 * Math.sin(angle + 0.45) + ); + ctx.closePath(); + ctx.fillStyle = `rgba(255,255,255,${isAdjActive ? 0.12 : bothScanned ? 0.06 : 0.04})`; + ctx.fill(); + } + + // ── Edge-probe particles (above edges, under nodes) ─────────────────── + for (const probe of probes) { + const a = nodes[probe.from]; + const b = nodes[probe.to]; + const t = Math.min(1, (ms - probe.bornMs) / PROBE_DUR); + const x = a.x + (b.x - a.x) * t; + const y = a.y + (b.y - a.y) * t; + const alpha = Math.sin(Math.PI * t); + ctx.beginPath(); + ctx.arc(x, y, 3, 0, Math.PI * 2); + ctx.fillStyle = accent(alpha * 0.22); + ctx.fill(); + ctx.beginPath(); + ctx.arc(x, y, 1.6, 0, Math.PI * 2); + ctx.fillStyle = accent(alpha * 0.9); + ctx.fill(); + } + + // ── Nodes + labels ──────────────────────────────────────────────────── + for (const n of nodes) { + const isActive = scan.idx === n.id; + const isScanned = scan.scanned.has(n.id); + const r = n.hub ? 5 : n.legacy ? 3.4 : 2; + + // Legacy dashed ring — drops once the node has been refactored + if (n.legacy && !n.fixed && !isActive) { + ctx.beginPath(); + ctx.arc(n.x, n.y, r + 5, 0, Math.PI * 2); + ctx.strokeStyle = `rgba(255,255,255,${isScanned ? 0.22 : 0.09})`; + ctx.lineWidth = 0.5; + ctx.setLineDash([2, 2]); + ctx.stroke(); + ctx.setLineDash([]); + } + + // Fixed-node halo — once refactored, a faint teal ring stays + if (n.legacy && n.fixed && !isActive) { + ctx.beginPath(); + ctx.arc(n.x, n.y, r + 4, 0, Math.PI * 2); + ctx.strokeStyle = accent(0.32); + ctx.lineWidth = 0.5; + ctx.stroke(); + } + + // Node fill — hubs as diamonds, others as circles + const alpha = isActive + ? 1 + : isScanned + ? n.hub + ? 0.95 + : n.legacy + ? 0.72 + : 0.34 + : n.hub + ? 0.6 + : n.legacy + ? 0.42 + : 0.18; + ctx.fillStyle = isActive ? accent(1) : `rgba(255,255,255,${alpha})`; + if (isActive) { + ctx.shadowColor = 'rgba(255,255,255,0.85)'; + ctx.shadowBlur = 10; + } + if (n.hub) { + ctx.beginPath(); + ctx.moveTo(n.x, n.y - r); + ctx.lineTo(n.x + r, n.y); + ctx.lineTo(n.x, n.y + r); + ctx.lineTo(n.x - r, n.y); + ctx.closePath(); + ctx.fill(); + } else { + ctx.beginPath(); + ctx.arc(n.x, n.y, r, 0, Math.PI * 2); + ctx.fill(); + } + if (isActive) ctx.shadowBlur = 0; + + // Label + const labelAlpha = isActive + ? 0.95 + : isScanned + ? n.hub + ? 0.65 + : n.legacy + ? 0.5 + : 0.27 + : n.hub + ? 0.4 + : n.legacy + ? 0.24 + : 0.14; + ctx.font = `${isActive ? '600 ' : ''}8.5px "JetBrains Mono", monospace`; + ctx.textBaseline = 'middle'; + ctx.fillStyle = isActive + ? accent(0.95) + : `rgba(255,255,255,${labelAlpha})`; + ctx.fillText(n.label, n.x + r + 5, n.y); + } + + // ── Targeting reticle (ANALYZE & REFACTOR) ──────────────────────────── + if (stageNow === 0 || stageNow === 1) { + const phase = ms / 1400; + const breath = 14 + Math.sin(phase) * 1.4; + const armLen = 4.8; + ctx.strokeStyle = accent(0.6); + ctx.lineWidth = 1; + for (const [sx, sy] of RETICLE_CORNERS) { + const cx = scan.cx + sx * breath; + const cy = scan.cy + sy * breath; + ctx.beginPath(); + ctx.moveTo(cx, cy); + ctx.lineTo(cx - sx * armLen, cy); + ctx.moveTo(cx, cy); + ctx.lineTo(cx, cy - sy * armLen); + ctx.stroke(); + } + } + + // ── REFACTOR: floating diff text above each node being transformed ──── + if (stageNow === 1) { + ctx.textBaseline = 'middle'; + for (const tf of transforms) { + const age = ms - tf.bornMs; + if (age < 0 || age > REFACTOR_STEP_MS + 240) continue; + const t = Math.min(1, age / (REFACTOR_STEP_MS + 240)); + const node = nodes[tf.id]; + const yOff = -14 - t * 16; + const alpha = Math.sin(Math.PI * t); + const text = DIFF_TEXT[node.pattern] ?? '+ refactored'; + ctx.font = '600 9px "JetBrains Mono", monospace'; + const tw = ctx.measureText(text).width; + // background plate + ctx.fillStyle = `rgba(0,0,0,${alpha * 0.55})`; + ctx.fillRect(node.x + 8 - 3, node.y + yOff - 6, tw + 6, 12); + ctx.fillStyle = accent(alpha * 0.95); + ctx.fillText(text, node.x + 8, node.y + yOff); + } + } + + // ── VERIFY: checkmark glyph above each node the wave has passed ─────── + if (stageNow === 2) { + ctx.textBaseline = 'middle'; + ctx.font = '600 10px "JetBrains Mono", monospace'; + for (const ck of verifyChecks) { + const age = ms - ck.bornMs; + const alpha = + age < 380 ? age / 380 : Math.max(0, 1 - (age - 380) / 600); + if (alpha <= 0) continue; + const node = nodes[ck.id]; + ctx.fillStyle = accent(alpha * 0.95); + ctx.fillText('✓', node.x - 9, node.y - 10); + } + } + + // ── DOCUMENT: doc glyphs drifting upward from each fixed node ───────── + if (stageNow === 3) { + ctx.textBaseline = 'middle'; + ctx.font = '13px "JetBrains Mono", monospace'; + for (const dg of docGlyphs) { + const age = ms - dg.bornMs; + if (age < 0 || age > DOC_GLYPH_DUR) continue; + const t = age / DOC_GLYPH_DUR; + const node = nodes[dg.id]; + const yOff = -10 - t * 36; + const alpha = Math.sin(Math.PI * t); + ctx.fillStyle = accent(alpha * 0.92); + ctx.fillText('✦', node.x - 4, node.y + yOff); + } + } + + // ── Stage-specific top-left log ─────────────────────────────────────── + ctx.textBaseline = 'alphabetic'; + ctx.font = '7px "JetBrains Mono", monospace'; + ctx.fillStyle = 'rgba(255,255,255,0.32)'; + + if (stageNow === 0) { + ctx.fillText('DETECTIONS', 22, 52); + ctx.font = '8px "JetBrains Mono", monospace'; + for (let i = 0; i < detections.length; i++) { + const d = detections[i]; + const node = nodes[d.id]; + const age = ms - d.bornMs; + const fade = Math.min(1, age / 240); + const y = 68 + i * 13; + ctx.fillStyle = `rgba(255,255,255,${0.55 * fade})`; + ctx.fillText(`❯ ${node.label}`, 22, y); + ctx.fillStyle = `rgba(255,255,255,${0.28 * fade})`; + ctx.fillText(node.pattern, 130, y); + } + } else if (stageNow === 1) { + ctx.fillText('TRANSFORMS', 22, 52); + ctx.font = '8px "JetBrains Mono", monospace'; + for (let i = 0; i < legacyIds.length; i++) { + const id = legacyIds[i]; + const node = nodes[id]; + const done = i < refactorIdx; + const cur = i === refactorIdx; + const fade = done ? 0.55 : cur ? 0.9 : 0.18; + const y = 68 + i * 13; + ctx.fillStyle = done + ? accent(0.7) + : cur + ? accent(0.95) + : 'rgba(255,255,255,0.22)'; + ctx.fillText(done ? '✓' : cur ? '◆' : '·', 22, y); + ctx.fillStyle = `rgba(255,255,255,${fade})`; + ctx.fillText(node.label, 34, y); + ctx.fillStyle = `rgba(255,255,255,${fade * 0.55})`; + const diff = DIFF_TEXT[node.pattern] ?? ''; + ctx.fillText(diff, 130, y); + } + } else if (stageNow === 2) { + ctx.fillText('VERIFY', 22, 52); + ctx.font = '8px "JetBrains Mono", monospace'; + const checks = [ + { label: 'syntax', dur: 0.25 }, + { label: 'imports', dur: 0.45 }, + { label: 'types', dur: 0.65 }, + { label: 'tests', dur: 0.85 }, + { label: 'lint', dur: 1.0 }, + ]; + const wt = verifyStart > 0 ? (ms - verifyStart) / VERIFY_WAVE_DUR : 0; + checks.forEach((c, i) => { + const passed = wt > c.dur; + const y = 68 + i * 13; + ctx.fillStyle = passed ? accent(0.85) : 'rgba(255,255,255,0.22)'; + ctx.fillText(passed ? '✓' : '·', 22, y); + ctx.fillStyle = passed + ? 'rgba(255,255,255,0.65)' + : 'rgba(255,255,255,0.3)'; + ctx.fillText(c.label, 34, y); + }); + } else if (stageNow === 3) { + ctx.fillText('DOCUMENTING', 22, 52); + ctx.font = '8px "JetBrains Mono", monospace'; + ctx.fillStyle = 'rgba(255,255,255,0.55)'; + ctx.fillText(`${generatedDocs}/${legacyIds.length} files`, 22, 68); + ctx.fillStyle = 'rgba(255,255,255,0.28)'; + ctx.fillText('inline docs · changelogs · summaries', 22, 81); + } + + // ── HUD overlay (top-right) ─────────────────────────────────────────── + const legacyCount = scannedLegacyCount + (activeNode.legacy ? 1 : 0); + const cleanCount = scan.scanned.size + 1 - legacyCount; + drawHud( + w, + activeNode, + legacyCount, + cleanCount, + nodes.length, + stageNow, + ms, + generatedDocs + ); + }; + + const tick = (ms: number) => { + const { w, h } = size; + const ccx = w / 2; + const ccy = h / 2; + + const spawnProbesFor = (idx: number) => { + for (const [si, ti] of EDGE_PAIRS) { + if (si === idx) probes.push({ from: si, to: ti, bornMs: ms }); + else if (ti === idx) probes.push({ from: ti, to: si, bornMs: ms }); + } + }; + + // ── Stage entry — initialize per-stage state on transition ──────────── + const stageReq = stageRef.current; + if (stageReq !== stageNow) { + stageNow = stageReq; + // Clear transient overlays so a new stage starts cleanly + probes.length = 0; + if (stageReq === 0) { + // ANALYZE — full reset + scan.idx = 0; + scan.lastMs = ms - DWELL_MS; // fire first advance immediately + scan.scanned.clear(); + scannedLegacyCount = 0; + trail.length = 0; + detections.length = 0; + transforms.length = 0; + verifyChecks.length = 0; + verifyCheckSet.clear(); + docGlyphs.length = 0; + verifyStart = -1; + for (const n of nodes) n.fixed = false; + lastEnterMs = ms; + } else if (stageReq === 1) { + // REFACTOR — cursor jumps to first legacy node, transform begins + transforms.length = 0; + refactorIdx = 0; + refactorLastMs = ms - REFACTOR_STEP_MS + REFACTOR_BUFFER_MS; + if (legacyIds.length > 0) { + scan.idx = legacyIds[0]; + transforms.push({ id: legacyIds[0], bornMs: ms }); + spawnProbesFor(scan.idx); + } + lastEnterMs = ms; + } else if (stageReq === 2) { + // VERIFY — wave kicks off, mark every legacy node as fixed + verifyStart = ms; + verifyChecks.length = 0; + verifyCheckSet.clear(); + for (const id of legacyIds) nodes[id].fixed = true; + } else if (stageReq === 3) { + // DOCUMENT — stagger doc glyphs above every (now-fixed) legacy node + docGlyphs.length = 0; + legacyIds.forEach((id, i) => { + docGlyphs.push({ id, bornMs: ms + i * 320 }); + }); + } + } + + // ── ANALYZE: scan walks every node, logs legacy detections ──────────── + if (stageNow === 0 && ms - scan.lastMs > DWELL_MS) { + scan.lastMs = ms; + if (!scan.scanned.has(scan.idx)) { + scan.scanned.add(scan.idx); + if (nodes[scan.idx].legacy) scannedLegacyCount++; + } + + trail.push(scan.idx); + if (trail.length > TRAIL_MAX) trail.shift(); + + scan.idx = (scan.idx + 1) % nodes.length; + if (scan.idx === 0) { + scan.scanned.clear(); + scannedLegacyCount = 0; + trail.length = 0; + detections.length = 0; + } + + spawnProbesFor(scan.idx); + + const newActive = nodes[scan.idx]; + if (newActive.legacy && !detections.some(d => d.id === scan.idx)) { + detections.push({ id: scan.idx, bornMs: ms }); + if (detections.length > DETECT_MAX) detections.shift(); + } + lastEnterMs = ms; + } + + // ── REFACTOR: step through legacy nodes, mark each fixed ───────────── + if ( + stageNow === 1 && + ms - refactorLastMs > REFACTOR_STEP_MS && + refactorIdx < legacyIds.length + ) { + // Finalize the node we were transforming + nodes[legacyIds[refactorIdx]].fixed = true; + refactorIdx++; + refactorLastMs = ms; + if (refactorIdx < legacyIds.length) { + scan.idx = legacyIds[refactorIdx]; + transforms.push({ id: legacyIds[refactorIdx], bornMs: ms }); + spawnProbesFor(scan.idx); + lastEnterMs = ms; + } + } + + // ── VERIFY: wave sweeps L→R; nodes get checkmarks as it passes ─────── + if (stageNow === 2 && verifyStart > 0) { + const t = (ms - verifyStart) / VERIFY_WAVE_DUR; + const waveX = size.w * Math.min(1, t); + for (const n of nodes) { + if (n.x < waveX && !verifyCheckSet.has(n.id)) { + verifyChecks.push({ id: n.id, bornMs: ms }); + verifyCheckSet.add(n.id); + } + } + } + + // Age out expired probes + for (let i = probes.length - 1; i >= 0; i--) { + if (ms - probes[i].bornMs > PROBE_DUR) probes.splice(i, 1); + } + + // Physics + for (let i = 0; i < nodes.length; i++) { + for (let j = i + 1; j < nodes.length; j++) { + const dx = nodes[j].x - nodes[i].x; + const dy = nodes[j].y - nodes[i].y; + const d = Math.sqrt(dx * dx + dy * dy) + 0.01; + const f = Math.min(2800 / (d * d), 8); + const fx = (dx / d) * f; + const fy = (dy / d) * f; + nodes[i].vx -= fx; + nodes[i].vy -= fy; + nodes[j].vx += fx; + nodes[j].vy += fy; + } + } + for (const [si, ti] of EDGE_PAIRS) { + const a = nodes[si]; + const b = nodes[ti]; + const dx = b.x - a.x; + const dy = b.y - a.y; + const d = Math.sqrt(dx * dx + dy * dy) + 0.01; + const f = 0.018 * (d - 85); + const fx = (dx / d) * f; + const fy = (dy / d) * f; + a.vx += fx; + a.vy += fy; + b.vx -= fx; + b.vy -= fy; + } + for (const n of nodes) { + n.vx += (ccx - n.x) * 0.002; + n.vy += (ccy - n.y) * 0.002; + n.vx *= 0.88; + n.vy *= 0.88; + n.x = Math.max(28, Math.min(w - 28, n.x + n.vx)); + n.y = Math.max(28, Math.min(h - 28, n.y + n.vy)); + } + + // Smooth cursor toward active node position + const target = nodes[scan.idx]; + scan.cx += (target.x - scan.cx) * 0.18; + scan.cy += (target.y - scan.cy) * 0.18; + + renderFrame(ms); + raf = requestAnimationFrame(tick); + }; + + let running = false; + const start = () => { + if (running) return; + running = true; + raf = requestAnimationFrame(tick); + }; + const stop = () => { + if (!running) return; + running = false; + cancelAnimationFrame(raf); + }; + + if (reduceMotion) { + // Static frame, no animation loop + scan.cx = nodes[scan.idx].x; + scan.cy = nodes[scan.idx].y; + renderFrame(performance.now()); + } else { + start(); + } + + const ro = new ResizeObserver(resize); + ro.observe(canvas); + + let io: IntersectionObserver | null = null; + if (!reduceMotion && 'IntersectionObserver' in window) { + io = new IntersectionObserver( + entries => { + if (entries[0].isIntersecting) start(); + else stop(); + }, + { threshold: 0.05 } + ); + io.observe(canvas); + } + + return () => { + stop(); + ro.disconnect(); + io?.disconnect(); + }; + }, []); + + return ; +}; + +// ─── Isometric pipeline diagram ─────────────────────────────────────────────── +// +// Exploded vertical stack. Each layer has its OWN visual treatment so the eye +// reads them as distinct stages rather than nested plates: +// 01 ANALYZE — foundation plate, rim notches + crosshair grid (the codebase) +// 02 REFACTOR — medium plate w/ centered "transform chip" + registration lines +// 03 VERIFY — NO plate; a hovering cluster of mini cubes (each = one check) +// 04 DOCUMENT — small bright plate w/ a sparkle glyph (auto-generated output) +// +// Active layer cycles every CYCLE_MS; the active layer brightens & lifts. + +const ISO_LAYERS: IsoLayer[] = [ + { + id: 'analyze', + step: '01', + label: 'ANALYZE', + desc: 'Map every import edge. Surface legacy patterns across the full dependency tree.', + summaryLabel: 'Deep Analysis', + summaryDesc: 'Legacy pattern detection across the full dependency graph', + }, + { + id: 'refactor', + step: '02', + label: 'REFACTOR', + desc: 'Apply deterministic transforms. Behavior is mathematically preserved.', + summaryLabel: 'Refactoring Engine', + summaryDesc: 'Deterministic, behavior-preserving code transforms', + }, + { + id: 'verify', + step: '03', + label: 'VERIFY', + desc: 'Run syntax checks, import validation, and your full test suite.', + summaryLabel: 'Provable Verification', + summaryDesc: 'Syntax, imports, and test suite: all must pass', + }, + { + id: 'document', + step: '04', + label: 'DOCUMENT', + desc: 'Auto-generate inline docs, changelogs, and function-level summaries.', + summaryLabel: 'Documentation Engine', + summaryDesc: 'Auto-generated inline docs and changelogs', + }, +]; + +// ── Stage geometry ─────────────────────────────────────────────────────────── + +const ISO_ROT = 55; +const ISO_SIN = Math.sin((ISO_ROT * Math.PI) / 180); // ≈ 0.819 +const ISO_TRANSFORM = `rotateX(${ISO_ROT}deg) rotateZ(-45deg)`; +const STAGE_W = 480; +const STAGE_H = 420; +const ISO_PARENT_SIZE = 240; +const ISO_PARENT_LEFT = 70; +const ISO_PARENT_TOP = 140; +const Z_GAP = 80; + +const LAYER_Z = [0, Z_GAP, Z_GAP * 2, Z_GAP * 3]; +const PLATE_T = [28, 24, 0, 22]; // verify has no plate +const LABEL_LEFT = ISO_PARENT_LEFT + ISO_PARENT_SIZE + 36; + +// ── Slab primitive (5-face isometric plate) ────────────────────────────────── + +interface SlabProps { + size: number; + thickness: number; + topFill: number; + sideFill: number; + borderA: number; + rimA: number; + glow: number; + children?: React.ReactNode; +} + +const Slab: React.FC = ({ + size, + thickness: T, + topFill, + sideFill, + borderA, + rimA, + glow, + children, +}) => { + const offset = (ISO_PARENT_SIZE - size) / 2; + const wall: React.CSSProperties = { + position: 'absolute', + background: `rgba(255,255,255,${sideFill})`, + transition: 'background 0.6s ease', + backfaceVisibility: 'hidden', + }; + return ( +
    +
    + {children} +
    +
    +
    +
    +
    +
    + ); +}; + +// ── Per-layer visuals ──────────────────────────────────────────────────────── + +// 01 ANALYZE — foundation plate, rim notches + crosshair grid +const AnalyzePlate: React.FC<{ isActive: boolean }> = ({ isActive }) => { + const NOTCHES = 10; + const ticks = Array.from({ length: NOTCHES }, (_, i) => (i + 0.5) / NOTCHES); + const tickBg = `rgba(255,255,255,${isActive ? 0.35 : 0.22})`; + return ( + + {/* Centered crosshair lines */} +
    +
    + {/* Rim notches on top face — like CONNECTORS port teeth */} + {ticks.map((t, i) => ( + +
    +
    +
    +
    + + ))} + + ); +}; + +// 02 REFACTOR — medium plate w/ centered "transform chip" + crosshairs +const RefactorPlate: React.FC<{ isActive: boolean }> = ({ isActive }) => { + const size = 174; + const T = PLATE_T[1]; + const CHIP = 42; + const CHIP_T = 14; + return ( + + {/* Registration crosshairs */} +
    +
    + {/* Transform chip — small isometric cube sitting on the plate */} +
    +
    +
    +
    +
    + + ); +}; + +// 03 VERIFY — no plate; hovering cluster of mini cubes (one per check) +const VerifyCluster: React.FC<{ isActive: boolean }> = ({ isActive }) => { + const c = ISO_PARENT_SIZE / 2; + const cubes = [ + { x: -32, y: -16, lift: 10, s: 18 }, + { x: -14, y: -22, lift: 20, s: 16 }, + { x: -22, y: 4, lift: 4, s: 18 }, + { x: 20, y: -18, lift: 14, s: 18 }, + { x: 38, y: 2, lift: 6, s: 16 }, + { x: 18, y: 12, lift: 18, s: 18 }, + ]; + return ( + <> + {cubes.map((cube, i) => { + const top = `rgba(255,255,255,${isActive ? 0.88 : 0.55})`; + const wN = `rgba(255,255,255,${isActive ? 0.5 : 0.32})`; + const wW = `rgba(255,255,255,${isActive ? 0.42 : 0.26})`; + const ch = cube.s * 0.6; + return ( +
    +
    +
    +
    +
    + ); + })} + + ); +}; + +// 04 DOCUMENT — small bright plate with sparkle glyph +const DocumentPlate: React.FC<{ isActive: boolean }> = ({ isActive }) => ( + +
    +
    + +
    +
    +
    +); + +// ── Pipeline component ─────────────────────────────────────────────────────── + +interface IsoPipelineProps { + stage: number; + onStageChange?: (next: number) => void; +} + +const IsoPipeline: React.FC = ({ stage, onStageChange }) => { + const activeIdx = stage; + const activeLayer = ISO_LAYERS[activeIdx]; + + return ( +
    +
    +
    + {ISO_LAYERS.map((layer, i) => { + const isActive = i === activeIdx; + return ( + + {layer.id === 'analyze' && } + {layer.id === 'refactor' && ( + + )} + {layer.id === 'verify' && } + {layer.id === 'document' && ( + + )} + + ); + })} +
    + + {/* Side labels — anchored to each layer's projected screen-y */} +
    + {ISO_LAYERS.map((layer, i) => { + const cy = + ISO_PARENT_TOP + ISO_PARENT_SIZE / 2 - LAYER_Z[i] * ISO_SIN; + const isActive = i === activeIdx; + return ( + + ); + })} +
    +
    + + {/* Active step description — fades in/out with each transition */} +
    + + {activeLayer.desc} + +
    + + {/* Step progress dots */} +
    + {ISO_LAYERS.map((_, i) => ( +
    + ))} +
    +
    + ); +}; + +// ─── Section ────────────────────────────────────────────────────────────────── + +const STAGE_DURATION_MS = 5200; + +const RefactoringWorkflowSection: React.FC = () => { + const [stage, setStage] = useState(0); + + useEffect(() => { + const id = setInterval(() => { + setStage(s => (s + 1) % ISO_LAYERS.length); + }, STAGE_DURATION_MS); + return () => clearInterval(id); + }, []); + return (
    -
    -
    -
    +
    + + +
    +
    + {/* Heading */}
    -

    +

    Everything you need to refactor production code safely.

    -
    -

    - AI-assisted, behavior-preserving refactoring with verification, - rollback, and documentation built in. +

    +

    + Deterministic, behavior-preserving refactoring with + verification, rollback, and documentation built in.

    Explore the platform
    - {/* Bento Grid layout */} -
    - {/* Card 1: Deep Analysis (1/3 width) */} - -
    -
    - -
    -

    - Deep Analysis -

    -

    - Refactron scans your architecture, detects technical debt, and - prioritizes risk instantly—without altering a single line of - code. -

    -
    - - {/* Real Visualization: Analysis Output */} -
    -
    -
    -
    - refactron - analyze . --detailed -
    -
    ✓ Analyzing myproject/
    -
    - Files analyzed: 25 -
    - Issues found: 12 -
    -
    - CRITICAL (2): -
    -
    - - SQL injection vulnerability (line 45) -
    - Hardcoded secret detected (line 78) -
    -
    - ERROR (4): -
    -
    - - High cyclomatic complexity (line 120) -
    - Deep nesting detected (line 156) -
    -
    -
    - - - {/* Card 2: Safe Autofix (2/3 width) */} - -
    -
    - -
    -

    - Safe Autofix -

    -

    - Refactron doesn't just guess. It understands your context - across files and generates clean, pythonic syntaxes that are - guaranteed to preserve origin behavior. -

    -
    + {/* Unified workflow card — pipeline rail + dependency graph */} + + + WORKFLOW + - {/* Mock Visualization: Code Diff snippet positioned absolutely on md screens */} -
    - {/* Diff Header */} -
    -
    -
    -
    -
    -
    -
    -
    - myfile.py -
    -
    -
    - - # Preview changes first - - - refactron - refactor myfile.py --preview - -
    -
    - {/* Diff Content */} -
    -
    - - def proc_pmt(d, usr): -
    - -   if d.get('amt') > 0: -
    -     return usr.charge(d['amt']) -
    -
    - + def process_payment(data: dict, user: User) -> bool: -
    - +   amount = data.get('amount', 0) -
    - +   if amount > 0: -
    - +     return user.charge(amount) -
    +   return False -
    -
    +
    +
    +
    - - - {/* Card 3: Provable Verification (Full Width Bottom) */} - -
    -
    - -
    -

    - Provable Verification -

    -

    - Every change passes syntax validation, import integrity - checks, and your existing test suite before a single file is - modified. If anything fails, the original file is never - touched.{' '} - - refactron report - {' '} - and{' '} - - refactron rollback - - . Never push broken code again. -

    +
    +
    +
    +
    - {/* Pipeline Visualization */} -
    - {/* Steps */} -
    - {/* Connecting track */} -
    - {/* Animated fill */} - + {ISO_LAYERS.map((item, i) => { + const isActive = i === stage; + return ( +
    -
    - -
    + + ); + })} +
    -
    +
    ); }; diff --git a/src/components/ResearchPage.tsx b/src/components/ResearchPage.tsx new file mode 100644 index 0000000..3f5fd08 --- /dev/null +++ b/src/components/ResearchPage.tsx @@ -0,0 +1,152 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { motion } from 'framer-motion'; +import { Lock, Sparkles } from 'lucide-react'; +import useSEO from '../hooks/useSEO'; + +const ResearchPage: React.FC = () => { + useSEO({ + title: 'Research | Refactron', + description: + 'Refactron’s internal research on deterministic refactoring and verification is private today. Public notes, benchmarks, and write-ups are coming soon.', + canonical: 'https://refactron.dev/research', + robots: 'index, follow', + }); + + return ( +
    +
    + +

    + Research +

    +

    + We are doing serious work here. + + Not everything is ready to share yet. + +

    +

    + Our work on safe, deterministic refactoring, including verification + design, transform pipelines, and how we benchmark against real + codebases, is handled as{' '} + internal research for now. + Not everything belongs in a landing page; we'll publish what we + can, when it's ready. +

    +
    + +
    + +
    +
    + +
    +

    + Why it stays private +

    +
    +
      +
    • + + Maps, datasets, and methodology drafts evolve quickly; we avoid + publishing half-finished claims. +
    • +
    • + + Some comparisons touch third-party products; we respect + accurate, sourced framing before putting anything on the record. +
    • +
    • + + Customer and partner contexts may fall under confidentiality. We + ship the product first, then share what we can responsibly. +
    • +
    +
    + + +
    +
    + +
    +

    + What we'll reveal +

    +
    +
      +
    • + + Deeper notes on verification, structural refactor scope, and how + we think about legacy detection versus lint-only tooling. +
    • +
    • + + Benchmarks and reproducible summaries where we can stand behind + the numbers. +
    • +
    • + + Updates will land here and on{' '} + + Changelog + {' '} + when they go public, with no treasure hunt required. +
    • +
    +
    +
    + + + + ← Back to home + + · + + Comparison + + · + + Documentation + + +
    +
    + ); +}; + +export default ResearchPage; diff --git a/src/components/TestimonialsSection.tsx b/src/components/TestimonialsSection.tsx new file mode 100644 index 0000000..7c638f8 --- /dev/null +++ b/src/components/TestimonialsSection.tsx @@ -0,0 +1,321 @@ +import React, { useMemo } from 'react'; +import { motion, useReducedMotion } from 'framer-motion'; +import XIcon from '../icons/XIcon'; + +type Testimonial = { + name: string; + handle: string; + date: string; + body: React.ReactNode; + footer?: string; + avatar: string; + avatarBg: string; + mockMedia?: 'chart' | 'diff'; +}; + +const TESTIMONIALS: Testimonial[] = [ + { + name: 'Sarah Chen', + handle: '@sarahbuilds', + date: 'Jan 12, 2026', + avatar: 'SC', + avatarBg: 'bg-teal-600', + body: ( + <> + Finally ran{' '} + refactron analyze on + our 4yr-old monolith. The legacy hotspots it surfaced matched what + we'd been scared to touch. Local-only was non-negotiable for us. + + ), + }, + { + name: 'Marcus Johnson', + handle: '@mj_codes', + date: 'Feb 3, 2026', + avatar: 'MJ', + avatarBg: 'bg-violet-600', + body: ( + <> + The thing that sold me wasn't the diff. It was{' '} + verify before write. + Tests failed once on a proposed extract; disk never changed. That's + the bar for production Python. + + ), + footer: '^ Principal backend engineer (yes, I read the full trace)', + mockMedia: 'diff', + }, + { + name: 'Elena Ruiz', + handle: '@elenadev', + date: 'Jan 28, 2026', + avatar: 'ER', + avatarBg: 'bg-rose-500', + body: ( + <> + We compared notes with another team using chat-only refactors. Different + problem. Refactron is boring in the good way: same command, same shape, + reviewable PRs.{' '} + @refactron + + ), + }, + { + name: 'Dev Akira', + handle: '@akira_ts', + date: 'Feb 18, 2026', + avatar: 'DA', + avatarBg: 'bg-amber-600', + body: ( + <> + npm i -g refactron → analyze → preview refactor. My tech lead actually + smiled at standup. Unrelated but still counts. + + ), + }, + { + name: 'Priya N.', + handle: '@priyainfra', + date: 'Feb 8, 2026', + avatar: 'PN', + avatarBg: 'bg-sky-600', + body: ( + <> + Security asked "where does code go?" Answer: nowhere. CLI on + CI runners with read-only first. Docs after refactor were a nice touch + for onboarding. + + ), + mockMedia: 'chart', + }, + { + name: 'Jordan Lee', + handle: '@jordanl_js', + date: 'Jan 22, 2026', + avatar: 'JL', + avatarBg: 'bg-emerald-600', + body: ( + <> + TS + Python repo. Still early but the structural suggestions + weren't vibes; they were scoped files with a verification story. + More of this please. + + ), + }, +]; + +const MARQUEE_ANIMATIONS = [ + 'animate-testimonial-marquee-slow', + 'animate-testimonial-marquee-mid', + 'animate-testimonial-marquee-fast', +] as const; + +function MockMedia({ kind }: { kind: 'chart' | 'diff' }) { + if (kind === 'diff') { + return ( +
    +
    + def extract_payment_id(order):
    +
    + - payment = order.get("pay") +
    +
    … preview · 3 files
    +
    + ); + } + return ( +
    +

    + Checks passing +

    +
    + {[26, 46, 35, 56, 40].map((px, i) => ( +
    + ))} +
    +
    + ); +} + +function TestimonialCard({ t }: { t: Testimonial }) { + return ( +
    +
    +
    +
    +
    + {t.avatar} +
    +
    +

    + {t.name} +

    +

    {t.handle}

    +
    +
    + +
    +
    + {t.body} +
    + {t.mockMedia ? : null} +

    {t.date}

    +
    + {t.footer ? ( +
    +

    + {t.footer} +

    +
    + ) : null} +
    + ); +} + +function TestimonialMarqueeColumn({ + items, + animationClass, + paused, +}: { + items: Testimonial[]; + animationClass: string; + paused: boolean; +}) { + const heightClass = + 'relative h-[min(32rem,70vh)] md:h-[min(36rem,72vh)] lg:h-[min(40rem,75vh)]'; + + if (paused) { + return ( +
    +
    + {items.map(t => ( + + ))} +
    +
    + ); + } + + const loop = [...items, ...items]; + + return ( +
    +
    +
    + +
    + {loop.map((t, i) => ( + + ))} +
    +
    + ); +} + +const TestimonialsSection: React.FC = () => { + const reduce = useReducedMotion() ?? false; + + const columns = useMemo(() => { + const c: [Testimonial[], Testimonial[], Testimonial[]] = [[], [], []]; + TESTIMONIALS.forEach((t, i) => { + c[i % 3].push(t); + }); + return c; + }, []); + + return ( +
    + {/* Minimal backdrop: fine grid + soft radial (brand-neutral, editorial) */} +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + +

    + Builders love Refactron. +

    +

    + And they can't stop talking about safer refactors and boring, + reviewable diffs. +

    +
    + + + {columns.map((items, colIdx) => ( +
    + +
    + ))} +
    +
    +
    + ); +}; + +export default TestimonialsSection; diff --git a/src/components/WhatWeDoSection.tsx b/src/components/WhatWeDoSection.tsx index e70acf0..fe98d8c 100644 --- a/src/components/WhatWeDoSection.tsx +++ b/src/components/WhatWeDoSection.tsx @@ -1,474 +1,833 @@ -import React, { useState, useEffect, useCallback } from 'react'; -import { motion, AnimatePresence } from 'framer-motion'; -import { X } from 'lucide-react'; +import React from 'react'; +import { motion, useReducedMotion } from 'framer-motion'; -interface CardData { +/* ─── Types ─────────────────────────────────────────────────────── */ + +interface Step { num: string; - headline: string; + kicker: string; + heading: string; body: string; - bullets: string[]; - terminalLabel: string; - terminalContent: React.ReactNode; - terminalCaption: string; visual: React.ReactNode; + stats: string[]; } -/* ─── Card visual components ─────────────────────────────────── */ +/* ─── Shared primitives ─────────────────────────────────────────── */ + +const Panel: React.FC<{ children: React.ReactNode; className?: string }> = ({ + children, + className = '', +}) => ( +
    + {children} +
    +); + +const Tag: React.FC<{ + children: React.ReactNode; + tone?: 'on' | 'idle'; +}> = ({ children, tone = 'idle' }) => { + const tones = { + on: 'text-white/85 border-white/15 bg-white/[0.04]', + idle: 'text-neutral-400 border-white/[0.08] bg-white/[0.02]', + }; + return ( + + {children} + + ); +}; + +/* ─── Isometric primitives — same idiom as the Workflow section ──── */ + +const ISO_TRANSFORM = 'rotateX(55deg) rotateZ(-45deg)'; + +interface IsoSlabProps { + size: number; + thickness: number; + topFill: number; + sideFill: number; + borderA: number; + rimA: number; + glow?: number; + children?: React.ReactNode; +} -const ShieldVisual: React.FC = () => ( -
    - {[80, 120, 160].map((size, i) => ( +const IsoSlab: React.FC = ({ + size, + thickness: T, + topFill, + sideFill, + borderA, + rimA, + glow = 0, + children, +}) => { + const wall: React.CSSProperties = { + position: 'absolute', + background: `rgba(255,255,255,${sideFill})`, + backfaceVisibility: 'hidden', + }; + return ( +
    +
    0 + ? `0 16px 32px -10px rgba(255,255,255,${glow}), 0 0 40px -10px rgba(255,255,255,${glow * 0.5})` + : 'none', + transform: `translateZ(${T}px)`, + }} + > + {children} +
    +
    +
    +
    - ))} -
    - 🛡 -
    -
    - {['✔ Syntax', '✔ Imports', '✔ Tests'].map((label, i) => ( - - {label} - - ))}
    -
    -); + ); +}; + +/* ─── Extra CSS graphic primitives ───────────────────────────────── */ -const ScannerVisual: React.FC = () => { - const rows = [ - { - dot: 'ok', - label: 'Security scan', - val: '✔', - valColor: 'text-emerald-400', - }, - { dot: 'ok', label: 'Complexity', val: '✔', valColor: 'text-emerald-400' }, - { - dot: 'err', - label: 'SQL injection', - val: 'CRIT', - valColor: 'text-rose-400', - }, - { - dot: 'ok', - label: 'Dead code', - val: '14 fixed', - valColor: 'text-emerald-400', - }, - { dot: 'dim', label: 'Type hints', val: '—', valColor: 'text-neutral-600' }, - ]; +/* conic-gradient ring dial. */ +const RingGauge: React.FC<{ value: number; label?: string }> = ({ + value, + label, +}) => { + const pct = Math.round(value * 1000) / 10; return ( -
    - {rows.map((row, i) => ( +
    +
    -
    - {row.label} - {row.val} -
    - ))} + className="absolute inset-0 rounded-full" + style={{ + background: `conic-gradient(rgba(255,255,255,0.75) ${value * 360}deg, rgba(255,255,255,0.06) 0)`, + }} + /> +
    + + {pct}% + +
    + {label && ( + + {label} + + )}
    ); }; -const DiffVisual: React.FC = () => ( -
    -
    -
    -
    -
    - payments/service.py -
    - {[ - { - cls: 'bg-rose-500/[0.06] text-rose-400', - delay: 0.3, - text: '-  def process():', - }, - { - cls: 'bg-emerald-500/[0.06] text-emerald-400', - delay: 0.6, - text: '+  def process():', - }, - { - cls: 'bg-emerald-500/[0.06] text-emerald-400', - delay: 0.9, - text: '+    validate_payment(...)', - }, - { - cls: 'bg-emerald-500/[0.06] text-emerald-400', - delay: 1.2, - text: '+ def validate_payment(...):', - }, - ].map((line, i) => ( -
    = ({ + level, + max = 8, +}) => ( +
    + {Array.from({ length: max }, (_, i) => ( +
    ); -/* ─── Terminal content ────────────────────────────────────────── */ +/* CSS chevron — pure clip-path. */ +const ChevronArrow: React.FC<{ size?: number; alpha?: number }> = ({ + size = 10, + alpha = 0.4, +}) => ( +