From 35574c376e260bb7ab5245142d55d156dcb89ee9 Mon Sep 17 00:00:00 2001 From: ayushj05 Date: Tue, 26 Mar 2024 02:52:30 +0530 Subject: [PATCH] Rectified p2pkh verification --- bin/main | Bin 92352 -> 80640 bytes src/crypto.h | 2 +- src/main.cpp | 60 ++++++++++++++++++++++++------------------------ src/script.h | 3 --- src/serialize.h | 23 ++++++++++++------- 5 files changed, 46 insertions(+), 42 deletions(-) diff --git a/bin/main b/bin/main index ca091fb2e9fa92f5724bc6503869e86b914e5a05..0d5b000680973c64fd76401ef50bc0db1c3bc14c 100755 GIT binary patch literal 80640 zcmeJG3w)Ht)d!A0xhw<(61?K28Wk09n1m!Gikd(cHyR+4prGQiBpVXRW!-EbSWz^@ zl7_U{N~Mav=!<)EfcOQ0paFt$3-X7VW0d8WC&iEx+%XIrHr7v(FPD#{d8K z`TThJgtK$bnKNh3oH=u5p6A)U(Oon>J}%BsSAubYL8Y!-iOExhNfDkrBgYtRs^Pi8d5etrMhrPS@sBB}G9aMV6_ai$12w zvK2l%PvRBS>xuT(a6Jp$ccR2AsMjOg^gb@>z0XI(2|^jes3a!3SWhw+p^}~;B;cQ; zVIJF4L1jrJD#TW`&>&@kQR#?FG6r?ujDtSLtKA853x!#6br5r2V$aYas zwRb7%DO1Us1OLzFG-h*qPUDcm?I}opLf1LfRSUB-jyySl2jq4Dg-ob0o+Gbh&9 zP0SE<(u>-l>KDzNV_;a?3CCs>V{tf_iT=}?c_Z%II=}wt?%w~au0M84-An(isH{Ks z=%U}z<)Dviq&@#T!|n0^9A%Hc+(G|G9NL}c(67IYu$RBu!EPTq@c+W0Une`X z`*R2VMcIkO%7B*$S~4sqbW(t&@4 z1O9&<`c>&LUWYl@xy->2zj2VW%V8WxIM^-hApd;_`_FXf?{)`$>KyF38G*@e+;=(X zbEHGR8XV@u=MH*)>7dVKhxziLgJ0D-;Lmcf+jdG3M#5dMrs65(O|4%m(GPuEC95#|Y9Zvxu!2Uw0({>3b3%=NPVVVEa$-2+H+ zE?X|k(-?mlib8%+;;SVvhBN;e7W^mh=ds4IMqa06Okp_&^15s4>uSpa0ZQi54R2xT z3~#wV=wDP-AMyuFXH2WEtM!-q7FPQWuXj;RU9Go1FNIl% zCS#Jnwp^ENqx0mddiS*rzH0aEOG?sUxTp?iErhLWr36iERinH3k}~2g2~GBT%NiTg z)6+9x%c?SrK(MNIQDGSwxvbI`^oD}Is!)Al8FjYI?M~0|&hVDi)q<~~EK~?NZugQ> zZ%K}~B$Sa>Q5Rh53zmDU*s9);ZxOYl8)mYvzOXiwof)Inv~>5(5^t^;meOSbzuW8$ zTRtn`3)cJ5(?RI%o(vX}VF;5UVX(S>|8 zOY>3PJUPDl5-|o-v&6ut_V&{i({nLC<$erL-7;^vFXZ$38XDag%`BcWYG`Pd%*J0a z%@z!w)z}yfF@J`pr|FZSR?zROuC6QdR@K(~gQ3EU;j&}}_mY{pnE$m6!V}?;wROQ7 zU$yB(g~ebinN0Qy%qop2Du)Gnny$b96Lv^DS3olt(XK4GED)*_!4BcB#FL+qmF+F8 ztqK|LY2M;lg)>XNmHx(zKwVX>KwaXV=UwCvrFjly-Ffq02f?+RD!SJnEeRbfs5$S}E%i#Y*G~a_&=HV4nI;yLB=rv5Tv!YcLVW>WSygD6yJm1g z5W}fvNvImJ*(q4h24Rwn>vf0-eqT*tskbx@^L?^+peS0B>BW>QO~;fI+SOIpyG76x zYk*otO9(C0zeF=aZlpadB;2Z_hLgac;*7Zz9he9XR3)KItd`Yw#&A2^AzQeZrv82| zgJ^UXtVGt)JHMZ`v+El$?Sk$a9{lu7X|$>eXM4HPBuxs8sJF1L-a9McudS&oN9r^f zAIuFj)K?;XDqHMkFV3lgP^jV0q=*$Y#>LZTm(-Pb$rsQ(hDpw*g}!pH2LUDVj<4fun|2YuC;Ufv~X zLL%iZ>?ng7uq=@nNk<*TcxP5rA(6xA#mtudbQm+{@RGb=4r7iXbzZDdgK`y^4GXOB zbrEeal9tTSZhn=OBFbcWWt6R5sye=3if0AO;T|e1L_4M$!~>tQlo%ns$I|GYO%qSJ zY|t-!d2n858aR?gA6V$J5wM>QfgmtLqzJsyaUd~6=zfX`6q#c?n1w8jmcpv~KpnDj z@=V0wvbu&4+ZN&23}VuaT&t}kITS8AZR#- z5w(b$u3`8`I*btYM+!;A5ic~N`t&aWrMQ@XB!RF`;mnHe6{X^@<g)rvN7B!1)XFz98-l8pG4zolRwe84;>>~G5(hH z-46AWjBA+xFApyUb(pb?%hw9J%UH?f(CI&eArg$AoATm}k8y@W^5{xAp$7WL8~?*} zbzhULM_2o~681eWp~4?iF3ZNBqwy=4KdCbsugW`LmUtQ$d527vJ2m_f5+(lMt>Fta ze3yowso}#KewK#s)$n9Tb@gfZQiTLeVg2ctX{v@-=TGEoUJbwCMOnZx9y}m&Rcd(h zJ9Py#y!1>-Y1Hr-Ci7aM;i+wPt4HYaT!>`itr)l^#8h(O?U#H%^&YWSTR z{u~Y8so~Q!{B8}OuHm~he1?V(YxqeTzE{I%YWO}4pQYgqj+5m7*&04c!%x=mDH=XU z!;jPO{790ZrfPUzLIi$-hCfe}lcwS69*nwjH2nDr37DthFVOHF4S%7AFV^sR8h);Z z&)4t^H2gFTU#a2U8a|-mr)&5|4S$h_U!mbW8h(|AFVygBH2lRHew~KDM8j{;@I@Ma zlZKz6;WumeOEvr!4L@7Mw`=$k4S(?CK?@wTz(ETfw7@|N9JIhe3mmk-ceB8!$;W@; zY5Fk9)9QNTe+A(Q}H_LQTfc~3hI>18z%`zPrp#Nr>4hqnJvrGpB z=)YN}g8}s4EYpDi`frx$AOQV0%X9#M{+ngm`0wo=YnExlzqdQiEYn7RZ}%r(tNy2o z^54xeZS2v1vrHR$^xrJgMjrh)%d~+<|IIRO+|hrtOdEFe-z?Kc9sM`Uv_VJz%`$Dw z(SNf{8*=pDEYn6D{Wr_B0Z0GMGHtxkf3rMMl;h0uIimc@SE~QC!N&NTW!hMy|7Mvs z)abuirj0cEZCW|=n3=)YN}jWYUgmT7~G{+ngm7^DAYnKs1ezgeb@ zF#2znX#rvrHRZjQ^La|9PVPce6|zTlC*7PZi~DW|=m)=)YMm z5aoN!GHrCxf3r**T=d^8)5aG4H_No4MgPq*ZDi4ZvrHRU^xrJg#ufcH%d}xd|5X{$ z?WsE`xPuCbK;mhyZ{d5)z# z!%}uz%I90kS(ftImhvf<@((QKBP`|7ma@xI{`wb|@wb#evXtMql>cTazh)`FXemEy zDL-W?KWZsIXer-kDc@x&ueFrhEahfPdAX(BU@6yF%6?0EzNI|JQl4QcyDjDOE#)jr z`D{!16ifLBmhusn@@PxhWhsBX)-wK<@<*2P`+7P3qr#S5S9@CC^EB=0EiNr;b3HZ- zsb1UY3k5j;zgTbkk9Y-D_O0=>ogas`J#DTpQ1;~Zg^oaK_z-KX*xdxoQ9|6{m>{+>-iNZgy((H-ybeVGWMM7F7U<8M_sdhs^7g7MEWoX^;-H? zxxZSm{Ht?rNXGxUH;zbt%>7kUIIZU#6!QdfxNxM3VYh-qUQWHo|fI7ruH~bOLH;F>S&$|fZC`o2!$=r{uZQ#>u(JvY5)^pa8^cuxPTr)94v_tns$P?+xAdYV>`@1rEP zryHC%z1NS=p3`5Ad~SXvlyZu|HieTsab2FKBi=(l ze_`&9`f^Y_Wu1x=*O~m7k^FRfOGmf@Ipnsk#Qc^W#InwVj@WSJfvaUZI9j%C>pmfF z=dQl|wo!1KIqN*@R*i~pa<7i>xtZ+J=85yP&Dr2-b+7ZZyyQUxZ(|YfaMP$544Rg& zI^o9iTHUKW>yjTUaBWC_ti5&4s<>A?WzTzB*V2f2;&#DaZCRsmu)8qg1y@sh-gAag)bimPw70X|Gf56_$Q6E_hO*7S`^x;Q^5^GYo$s~tm8K6X zJuS;ud0HA)IJgE>L=PTE!x6vO5b+D4M2GMn((wO%ezB>;y`D5{b*~qGA^Y>M&!tmb z4YY6ypf!&uMOLXiV!iT+XckIT$sN{P-C+~E!}|E1)`&Z7#_()ncNh(0c2M$0?jS(Z z@^y#Zm_rUD++nkDhjr`@b5S6~)QaBzf|Xzc7ALB%1X zk>bz@jxOzKJ;OynYQH?#|}} zwsNQ*>3Q564Or7GWVI}pS7=SPhR<3F=C)&z7ie5q9gn)#ADL7 zhZE(z&BioIewsLTONKo#NvqpZ>!-37sx);aLyBRo^^h>+p1AJCpinsVv^=BKoee*s zK}5aVp`fBt|A5-}nMqv+Dow$#J_SpuHt{y?m~iERnKGBm5i#WP%IL*9=M-?p?T)f}05)iH?}_hjjJ4k3 z(2%V+4?0<__t-v@dLF1T);p4F+goog9C0TcvAt!^ld-<|E?KINYPZdK7ZP^T!jJoW zgwDb?9tIRF4K#dB%iE2Hv<`Qdbjc@SfNfpzx$dsyw&QVRMAe@r5>;LajhozEaXqh# zYHa+y$!E;pvp0F{{LQWICsDVlJprgrVCHN>^>(WHFPuIQoQ>x9CZ~+Pea0kfu)QMr9QWqr+c5z`M@6+eO0>HtuIDzkwPr`rzHB9o^Aii5fQB2 zb9$#7pq+A3y!@#!BPQt@TDp-Td6GTbk@_TI)oky1P>l*3WkF?rpEs#VAEpmkxU983YF7h8!i+a{#B@CczA6qAXI?` zo&rb2cm3qMezWb*PmmT!vb3Ed%6i+OW24$#B-(|O{ziBOjZw%;c8&7Jd~gY4Z$l18 z{`XhqVLZTH#2`KF6pXc^vj5#IvPThohl3j9eD6u|nUQMG$Gm84gi;F+Ole!IdUjl=*R6RylK=`>`D6djVUv zfwx^|!ZIJELmo(OSCZvKy^JJ*lUlfg>bEMXN3zsC|CUnU24@SBL*f-HJuz3O5qzy?#>ss+q3SC0Brd~#24Iva(A%4ktCXQxl(Y^vl>Jr@% z_5+7)11$<3-d?n2&E{s06U|ZwHn500l&X|COQ|w#u^K5|D%DQfH;@=1qa$2JpUsB; zjl($N`29z~0v-!$>@eJq)hyO(FO#Ks7!E_d6;F|m7@-_OnoGecwnO-Ht?uh+ySq!w zPHBd=tgBe9TB-#fxjlMw8|TJ#ZqRAlp3Yn-gLw}^zYHLj%3rZwK5F0FCj zhrkM{%El)vYevj|IVBGOP|e#ZsCTeh=w}C8v$d@KB>>Hg}GV_ z>tzco$QoZ9V;J472;OL>SompH3ODmw53pc)kw#ZH)+*b9{f{(|=)<{EZx*-}XS*b5 zr4ZO$8JP~^qx46%FHHvx`-u=5H64zF#xxzSr1e3}l8*3Yz+pNBzx87)v36~yi_!FEI@XuYW>0lXn>%SvXkj|p+Qmt{&DZ=k-;rTSJcn`JvRPs!nE zr)qK36c7Gq)PULSx&mp$3uBsnN~s$0vQH>Ui1D>)X=!h8tQfKd&GK{xuH%@MA2a zXqkuaOm6wvZeYQ3HrQj`?n#+kSc2}~Wq(B9PC>os6(xD)I~a)WSMi@(h&b%$iZK%l z(GAc#LKTwUf+pQ7qiPBKGlZ{>#s3EQp5YN88>kzMVz9%%N5|ktA}6?M2W1FRNrOBcS%;0r8f%Uq4tF}j(~pAF zx4PHJ)x9n2*ZFc1j3oDH>g!KlE4H)0hGd=XW@h^bId+SjqOA?cCw56eP<0ilY91qr zRel$4q3Tkmu#~$<3LRR}szqWtwjs`lsW4Sa0h+QEA?0O(l4-`Ie^O1iaJSR&xjRh+ zD1F|c6%;sbrq*cdmGF=Xm?jWBHVZg@I1Osq{iDm63XTp^9l6}CQ) z^dbCPs@UQVgAprWNBCA*?nS@osG#?cuq2-sT_3*E#Ei839*H+1u8sWN$xZ0X! zJ?!^{f(Yr&d9W-GF2ubYE)av(oI(a~TT4`K=W-DQn}y7_wSq1cSc1lAT{(L=sVEO_ zMOPrbQ*=y>*TZ5=+ww>!Nq8JF0X0Ok{}O?h`8&dU_YhasKHN;jA^EE}UnEETM4S4cf1K^XFWu^coDf|Ob$#NZsu z_1<#Ulk-Sj~#s7W5aj+_w(aC=w^b;^>-egQIHz zavmm_N7q!g99=)59bJEFJ-Yt8=k#5kmgk4==(>3WH0x--jrD64pXg*PG6KIL1DPi} zE71$Z)oF4Gqu&cVnCCh_!MMqD9U+pBc9c}XAJqA;20xB81+#go**5AhWIUvzJl7P| z`0mSu-xG)c%&1dAsOcoSpjJz+Cx z6Nw&&lX1|8)@Dh_T7ripFz>d&Bt|$J{gy%VdfDYIRGWD*Iq#$`gQzVCGWuUjB01K{ zu+S0yFCP7&+3fxYXzJ$AUF{?d(OlmDNu^Rp^8^5DJVHp3gmD_-|Gzfe2~9eh*RVdV z;*-216aemN)#*g;bn$!QP5_@f(_yLAJa6JjDcDg;!p#5~jdNfubEb{Q0Lc3V*2;J3 zmC2N+gXu)q*+m8{l2*5+mHr@+*oP;kOO13oqtUuhz%eL2X*xI) zVKX6Ho2AQkgg$V^XV?yapERv@=8j2yMKfK%>2h(I{)xD(tdZ(tO!Xi zX}I49l9tk%i`EVcUaejau&6{51-)?tLa(0s4Ykw}Znjic5wAv8CzidiUifdKceZ!_ zkZAQGoy9=S39pIVkr)!Ry!X5Y$Qt15X0suYJ!p)-Rnr{S>?yw4;wyd0Ns?iZ1 z_BM4>E-7uzYe+z=Odn+E`hdFG*1RExQ1cEE)(Qewlr?^aXDlgWN^+6YNs(yiPe7xg zRYH&iZCR(X7AxK&VOb||@meaj=!Xj*i`JSqQ*GM8%BDJS8tLIvqrXv|Rwej@EZM!& zVkF%sC3QwiTCPd@d6c9kmh`tbsjaL#x%d(lqf{&sf|264WvybSMR;74OmPQ%8D^EH zH}?cT6sBD(HIb(jvRhZ98cZuYEBD)y;1&cr_h<|BlR8Wkt9?C^%vEBTO?*e#hX-6y z6x0UCgRCC+=hpUz5uJ!&AO$2uv!57i<{%d}r)NN)*( zuCycyrO(rqmiUhF=Odz&4vV5xI-Zmc(G(?LZOi&0p86z9dj?ecDsn?ROJ5kJbQ(E= zwDhSlN=u?p`mQfEOG|u5cxtrLlQgAg?1s{`p0Ls{WJsmy>xIdu@fezoPyb5H5*zpU zvG6<_pT1TQbW0bD9toxUztEJH_>OQ}5-DZ+^bMjYExqn_tO29*pM-9PT)9%Q#8BvK z>W#x<7)5gNDkgX3ccChlu+VT>PZ66tg(r7}k3utc^vz8F92-Ph0*`@eYZ&)?gurfk zBqaYyS}+T+>1mxoH>*eSO4kN-cN6|ImouqM3Y6hZ{aQGWg}V2z7#jN4eG|`dpd)-O zw9r?vfUsppcwRJKTI(8;Lx<}TIg0;uJN|Qt|0lNm{~Z?9u9QC#{5`%{;V;-R|Lrv} zXT~!Bj~(-7V%CnYupo4V--BR4-{}&-!*69fUP`0d^dO#?*HbrR7f`!(fifU_FqL44+ zljn2F_}Yb@oir8R9&%?i<$K8Lze-Zyv?KeZ3=4z&;AB0{#C&cp4vG6OM zcVW@evMQc97#npZle>EdQ#d zp|5HAS8)v)H!bg@y=BAc7?P`KNS+gee8li-vT#-*4NI%5dohhpM|cEuS`#_)dzz|l zC2t9@N1Tbw7&EiQ*inTYfchoq8M z@N|SP1_SXsb4-ANG%Dr&WMPWcG>*iNYJdz0t3haVOViFd5%(N?Rb_oFG8#F2jWx6pTBI0vf#cH#i?U14;L z+(p^TubH~eoxHZAWm=qYVC>U4yEL`zcZoGv`E)I-YPAznN)+zNpRhN9-n z;WII?J;$r4#*^?XkYpw%HUkAPfP8iU;x{&=(FwZ!IRD z5C%ORo$kc5RW8%m($><@XK5|I02A2yHSNxYv|=8nycAFF_E5S+sIZ1x%2#Z!}P*jK!gI;0nk>=#&8pOTrJr_nOGWN>8;sl{}4tfknl@aUc z7yA2~+c6`wn4@Br=#gq%tjj%rj^UQiuFGdkccOuIeIo6q8#MEGqP=!r_gd+`kI2#OU-X{K%pc z%#>=bsyO9B&+#`y&M7%%mP71-G0sK?*B9PPUp}YTSAI^j7S_94k|Qe~%`BpI&_X~R z!pA%?nV;!)lcDD#sDWZcg0)Xg%XHucQ=Sq{Uq%S--9YaK>;e>S ze=2!l3-$nb;(S{dLbzPW;s`)#5jO9o*uhT=OEm6+iYZLbjH6*ZyGP<%(=amBLOai| zGi9S#>D*nZs^+rjnhQitRL08K+OU&rej;rE6xo2DDW09;ITI6j+ZQf)HX0C`y-czs z3wo8pAGNoM4+lT0&QRzhp?LV0JI%-#9{ne@DfbU2 z;bV9-XtA?A#hm5l!X`Ai9Gd8}Q_a3swVvXwBDG3KEp4d~7^bYo&f#fDr1y-Z;lLb@ zgnUDR&J(9lX5vn3x@euxM@M_;bu%1+r~6MRarDj}F| zf!#J+9G50{l$-9rX38c%6S{VULumFp+VE0kC0iRVSJVTx;U8=)5^HtchRrrL>}(i- z4L7L;2{w#+&`Yd#$ferMSCA$Ov3N$g4U3H&-(v~YHmB3mHe)jk4q+nLT?TZ_08D$v zZcf4HvGc)J$})Z;HpmbP79rI`!Oc3XA8ofC*4VUr2G*CT5r#$dw8NTa#7;wxlweL? z)1+puqUZ65Yz>|0*iLA?lhy^=%!_P$KG5%MO~pbJo{fi6k!u&V{JW^-pW*y=oI(A7 z^ZkcF@Y>NyleUynXvbYsgrTBx|1!aMS4 z*7#9+l=$>#kop7Dj*XajP=Mb1MN$HVc5M}rUsP=&-bmH!L=j<^?h>}qDk$Q?rDFXs zJaIsX+(XozLCkpTD0rx9If3|qSwbgJg69*sR8JyG2$0&@Jz{katOm2_uRL%L8=JjF z1^*}IR;bq+{O^FkNTeX!jf3sN!ci&zL(hMY!IN7i_%8MjqKLH>w%RRrz)d^GS&sY6 zQ4;wpodzJu8<~W>vD>I zQ^XAp80k3-l_uD9UDKJPB1+VLHJv82r7osd^xR1?yBD31&{;EeRjcpZ(y`1;CVk@5 zs54HO!l{Yd#V}$+-V!g3$}>Q%WUvMLBewIDyMYg>pQaDlLajxu+U(Ix6EzCYx#F?nu-3}n!K zNj-1q`dgetpW5UgZSK#Zt&*{dWGLl{B$X%i1Sc$i7pY3E>q*`%PsR98jLlG|*GwQ} z=1pZbsen`-CwkUWJWh{L=J>L`t|2A9qrI}JQ{T~EXON6ody#s|UKf(8R(oCc7i??HobF?K9;d#F^&yj{qo$ps!yiiB85#Jp&h2dtv;T9Xk% zlE6o@psZlL3XDAyl+0;XR)|(2Gr+k9AwMnZ{-EhXw67&&H3~@tbtmxZ$?wz6G;=TcgY*0qw&doh|tSB9syJ;{GT^2~I}cO-wwL+legBHep7} z((nw~%i$MdE6sySYrqoO?1s)$_jvKBpU`t5>`pDMnx~-6MnnzaogqnA-D}WnQP6ONThIqJtH@TL6_Kqht;(M~B-!A+0*X z&q1ih6^Y~+aB{<5@|oQ2^~311$R7G4TT)Y~2xRgwNFR^CL<_g(hhnRywrlV>R&9@{ zWoCrYjmW+|{#ew~7UO~twNp%BkyxAF@ChWt(Q@J2a1h)#r^9bKld0H(dr8O{>0=&I znCnZ_qB)$}vl(*3J?GJ~Mob$YrD3PNCbcH~jb2I*kAmeT&oki_@ z8^dAHtw`XE@O68rzFc+b7*bC3L!q9<2U1KQph1InsiJedUJK;}21eG#+p@-QNr`XcHb7jqTApF!Hzc=tCL^wuLmezzo=qb399 zOB#h^Jq%M81Md@80#3 z1lh&BQI@?`_iAi&wyE8OJe8QkTBAzrd=gWPfNVg=~DU{M`_j0%ss$+%Q zohp~P$3YF-tW-ejz8*77>y+~_jl^OygJv~iiO3)uNCq#U*L|TDDo{mO9E%CNf3t>sqN#lxsWs-I=t>s1 zp?58HnXy(CaSm@$qLWz7qi(q!39Me3!;g0FkGy38}=6A zL;~b_5Ng2()V+cH%Zu91|KEJW$iJ+x<*)g33R^zQFU@cHYL2Jv?DasG6rKJxno0`) z^#34Z+t&%96Vl(}@6Ri0*^A@3f|h^g_aFYQr|FqEPww9u{srMlSI$@8F7`}C#l++j zR-!-h=Fu|@NhWbp`QUZX0tYQ{&;kc7aL@t=Vu3h%UKJPpe@a>g-W|lRxz|_K)f!9i zW1peMs&Zoq{dj79S+FV)s;^pP)cdb(@Yk04jU~S720s(?A zf}amft*T93xGdzaPdz`?7+Hd!i5I^rTAmtetR)(LcmCW|(%PX?7%O+=M=45A==lXKXGBR>9a&j^<%QA8n=J+$S($gnp zq)ogAKjI7(l!a1j8>*{Q zYwJR(FdWRPU#WSr)O(?XNnAcIFYefc^ETp4k!}gCxVyi9H$E@;Up$hHW8nbcIKaG3 z{r&C0pZ@Fq{xsZ9xgM|>aMN%4`>zN5E%KF3fNuka0Z&6dnSv7(|K|Sw9KhqS2VDX9 zOKh1o0ltLOY6d=l{IfN9Y8*MP-BjLQ4Uy)c2@!h0AB~(0{9i+Zoq5s#C#v%j{(Qwg``&irvUB& zyb5pyUQ}2KcsJliz~=#X0R9Vb58#y7(NDa6^(5c~z%D>~yKBtu{{Bk9DS)d0uX>}u z{}I4mz_$TczS-ZOINC5C0~`;y6R-gAKY-I2f3F3`K^TL8xcz5!SOI3|qxfD-{%0yY9} z1pE+iC*TF$@N2-U0h91s9h(3r03L_$6)6I&1*`_V3ExDs2JkV!&4B;K*Nf~1%>D>| z26z?VxFZbXX22Z4-vZ7Bd>610@JQTzUk8{AxCL-8U>9Kg$C%&PzR)+_jRy<@769G~ zSPr-Ya3$cYfExivVe7RMumCU&SO%DcFN|3WI05k2fF8it0V@GN0$c_7CEzB&BXHim z6Yw;^FyM5+q;VKGzzKk#19||j-iv+%-VL}Ka68}wfUg6-0O4SanWqfpDxWyHB-E1SSF(vNUQNxqy9W%m%)o8r8 zzyBQKC>V|zf!Kw=O#E$F2U$2LHpZk(A2aUa@i>c;9@T#FPZNHU*ydV2tZ8_{Vevv3 z@$M$xjs5*2blw>n@27Esm+X=Vp1A+(?>`ftO}PsrdJ#JAy5b_?A;a%nn{61!DnB8A zpuZ3A>+in=Z6;oXK%jJUHzg#TFWVuWBK#%)s=xmN;+tgQON;Q4f1I+ZzyA-!cY=lQ z*Acy+gx+2}?mY$kW}Ed=Z))#J{N09}VmbH{KZNJ$deuo=5#JvCbtC7>V1!yoPMKNh(~;=i^2=)Mv^!t7UKB4Rk6WIzaw^lN6MU*kdV9)Ml| zde;E-a?oFQppQqB zPlS8r*QF6U<>PxncbfaDpnn6poy}9xb}DR6^h-&Pb%@NWjd+h}gzQlc88mNh#ODZo ziAi4x`fAW=j7<8K5gj*zz6SJ(I^7?k?*RR72Rg;V9nkRs&`+Rw)d!0z9ShqMRwp*O z5=KX2PcL{kAV%MYdWn>bDPFScEwWA0a~$kC>P6;jx96k2FMv-sf-eJ~O<7eD-B*DA zW6&WXLg#U&`WryM9(1R^w{v~F@uB)%Om}MEK+IbY`AC-|?N5*BmkRo7&~tTqAVSXr z{XWpo*Xf}Mo%TK3K`++n@fQgOvf~1b-Cod(XinaU&k_QNz6SI@(6e-UbwvJV(8uhupN~|(lj+rZ{dk$g5WN@l zD^NdOr&mVgr(mC1Jpero^cz68vlGdueQW^qsk;1S5&5*g{Tb*^{K{ha~y z>jb@b0D3Rz@vk`RpMw4JKGb)LRcWA?qW&DcfAK};_!WcR0{R&`UGvib=(mCHG~d>M z-UPbSeBBKCTF~w6KLKr$f2;z%0iP4gu!&ZF%CU}JLFCh4LDnnaJyF+{eK{4l<3?dG z0(!4br#SdtWIXf0v*9n8zdBF+G}9gnKz{-B0-X*S6#dCxR)F3M`edD68O^x?1e z_s`Sm@x`Y6cF^-cx3dSy?*csobf@t!a85A=bf-Nc0Z?)u7vr0qMU1^fu6);z2v;_k!*;pSqZSaa8;HqWx6hy5IvZpneFS z6Y0Bql)uC;Hg%-4o8w-SYkY(rS>Fplp9#8?4&_XD(xDv9Hln`JVJj4}(P0y0>~zq9 z`mq!AFF-#GYrI+iB9T8P(CSXM{180df3>$I#rO}Q$2Xu)qdeg}O%M2MLKaDZ9l)1~ z$$K=;%%8I&fJ{nw}Czt^mFw36_NUnfPN|H6Lq?l z54{Sy7j!3|+z0v+&`;LuUm@j_9rnRzmVy39d``S_WTcNY_kR=7V+xkRkvJ=axCjsD z4yiy*p)r9Rn%jxzXmYgqy#g}EKt>LDOk37P+Sma4sh~UgRy*jYfbJA8yFkwwK*uiV zI01B_<4+MhmG5afjz?ND1w2kV7Jyy~x|5FOpqGH|q~l7^{h%X@kF+n3Erh>p1brUp zPUF1;^hKaMotx|deLm>uYDB&}V&g;v&r3kZ5mbaOLzHNLJm_xF0U~rQM=bzhGU$%| z2R$3~D!qRE0-*rSmzAKe0R1AJeuLC66}XL{{|fX)I$g}|_{)ilWb6dbzrd5H^T1z& zU?6%J^pSLqt<$wVMiLf)F`yrz)8(>m(7Kug8zz8$Ej}kMMlz`UM6Ih{sjry-kmUhy zhAvCX`9q*z0XkID{S4hcS`PIH%Xd1*dlhuD-#L1HEq?9; z{VLFLaO9S$cb1>LUysi=|(I@xcDUY}y4mPgZh`8o#~G)8oe{$tRcY(VGh zYe09hA)ULg7@+=c&~F)_ejn%!pij~Jpsiu!5KL|b{Ysr4KU+8{>7N7o3!vNCi0E@c ze;RZrA87=A8|Y3kV;$)2pgZj=w}4Jxdg;{uZqPeHFVgkL7*SXu{rW&}d9=TOhE9(! z5dBL9ZroA0KLR?A^&>ta(@w$|l+R89&la@dC&ctIDL;)b95e1G3GOkeZHewN6IQzl z#-!ac%rhpZY4}BB@@mKAvrvqH*Su5Jnld7#wQWRdlHR`2NSj? z8jmMR#^>TLbNzXg(RlJV$v8`Pb&oP$iaQ>kzm9X=G}`!|_@Bg~@I->^q0z>!1lKP| z8~q8y`ujxJbEAzn5?%QGaiZ&;(Z(-aN8$6IT&~tJ#=9=pe?}W^!wB=cVXiG>jGe<= z|2xL`&oHWc|8Q657-ReJTzp=gX= zry~io?hqG}n1>E=ZA~^_IphLh?iuCkPB!+8dLlvC;i%>~7rsVnU0lxEc;hGW^!b^1 z*bgQ;cRpZKoa=+J=;ZM)jWwF%UE9YR{~PamJH>c5e#WoH8vmEz`sr9>OTsaqrx-U6 z`*Z|QHywegA1YsT?;re*Av2%p$_0h)0LmrYHoSX%H3S8@5M#-d=E@N$+>%&B2W1Q>N zMB|+}*Xl%LMZ9ZYg7JrV*OQ4xXZ)EP6OAqOrA;sZ{f!=v#k}bBrN)}L2=Z_@K3BN@ z5{DCF*C%nthwMP25N;GaWiYo_4ICSACKwMljuoV+mqu7|@-UFBO#9>23?;JK1P7KAR z+GjSie_!^?{()U|`5P`T5I5v0Uzc>V-(0?%4fS6x^Kf!&LkE(0T&xn)c)ar%7BgJH zFu-sH!!-;yFx z+ZlE;>|)rs~Z%+PSF{<}7Te4K<|ZPRyK`c6NG$D5c+kr{L2vCuW>3 z@zM3{N(qRD<5U3A7!r(lBgYn>V9d3}CmPq=;$3Fk)5IGI#xOJ9MdODXDlSIjlMEFv zqVXdP6=$OHBMlYLqVb0qD(*$&5scM*)d&g3Xd~4YkHsTPW8{wsMzWD&i%&7Sa_#tW zNW<%lPE9Zl#o?%qk)IQc!;B5L+Tjm3Jh$87k1)C(vcn%~u4g(mfmR2bc$r{~GwkAM zf^oFD?nKMMs%Y_Bq9+)~8hN&OwQ5GB(DIXrAKs2&gi_+|_#cI`Gu)i)HwLOPuEd4u`^oSNW34Q>Y(y?Vbce9I}D8ZT!KGKaB+0_*>F> z)Nbs2p?k`RCNX|eB;?>Q+TvI98L#pxYK^XdkQ3`yw*Y@A`Wu)h`7lD_`Uv=wfPZs^ zEaymIq#+T)EQ-14IV?N;Qs7C>l>u3$m}~YhzP4T>su_PW;vMln`9q1gl=0=jlb*FR zC4!!HrR!eiU$|11RUUT)2Abq}8zf#Wo68x0dy~X3lECO6Z}# z-mbqtVg6sD#slf9K5-q4ME77+>5h@tn>Y z^y@Qr`h4Jk|B~hW+ahN&5?8YGlhdSpdIp-VS-=ZD8)Z3L0^>2}pK9@+k%PpVGF}IbFM$|1oyJ z42d>!v0)%NzhJzQvkZ8tw+U!Vdi7u`!``U!nkr>tYFvD#l;H z{XLWMFED;2&#yBWpMp?gr%xI1B)>Q$8E<6%=NUiqM-p)=<40iQM*J%+_}PpCOU{}1xHRNC!X?30IuhuS@6i4<@m%XyUXxEe_V=`Kkhn-;BFfW z82=69)%ZTl_=T$^zmoGJ<1bq-@w6V$l{MC0pNoN~eiiXNRXT5V;QyNg{w!1^ImN7x zlHlpd@P6z&O2mIGUPKps?e}j3&bHe-F!fi07A*^91AXWV@ZsmCij}w)?Xc5~1{2%y_GwcL9$s#9Z{g9NF`2 zp1*3|jl_aw$A2>L#2;QMMP;x=zXSgo=C{s^KQsQ-Yo&lJmJ>kgFgE@e!@3Vz4m`En z!RwB)&$EpGE3a!RKAeGsf%tb?)`eRcZ=Jux#@YAxNcc64 zy^Qhuc)k=dekbrJ!pA)xfRy*Jy1D^CbW0B!c^5|LPja zsQl*x##{4>Q{i|de`AB>XJFjH_^)n|c;zR(z>}RXy-?!Sdi^!?KgxDfx)r5L`RN?r zl>R>jUhzmt^8ZcDKQbuG5G$^Kq)Iu3EPo>7e{iC`oE+e(Ul*`F$20%^f)1>^jt5|-Vgx4^B z<0@HJ{dyO8)t02l|Hn_T$4>^{PX8+%_#bBervp-M1vfI{bbI+%IN+B!;BRxl?**Rp zw2u3^NTdmW>5WnmHIMFO{CZZ9hu_!%yq$e^JK*=SoMH|nDz7L+prCfG`R4<`+sXgh z0e?6g&yGI`JjwU){+gFDquqi3ZRS5CDD6{YvGl>5MixA*4;7R_Q^%9Hf;%a65%0;rg zp7FaFU&;EYd2!k#DaYFG)xc9+@^By#@0CMVt-!NT4QypOC-J;faqKn5kH1ASWBQ0I z5pj?7zn|@_=20HU!_$f-AHCB|*RPoWftzGGM*?FX@U&02?nC3Ur2Lunl2OIs>A>6B zb1udq1>-Vz7Yk;vnB`dWv_CTb3tlg<%!%tY##{4~uNeQc6_QW&_v~z`=N_JSO3xoM z-Wum$WPBU@;TS2-_yHyq*>hE+L>$KWM#fv`(Q4rB?C@&`{4*?P5$mbu#gP~YJ2__x ze2Q^5FVys|H(l2|@c#^W(!Y6?v_?1##{HTiy3b{fBO~iN(XLIfESqGdhYj);K%uVi{xgr8e`70mop1^>hCXt zl3&gD>llCHa*2nViR&rGThD1fWBj2!kCdHLFrXxV68rO!EN2|!KVW~WVtfPecKuz= z{EzT_S3GYq{*(qOK*fPm5nrfXYreN0cvY916yWy`_?I27o}b(<<#ng%?{x5lfx86W0#O2x^~fKL@QqyHNV zg-OnO?$&s@GWMfWMdJeA6houi#2aZhJW=08i~&<93Y${|yfKR|FpCnH&dP z-0pk8lYHy`W%6{1e~j&aGV`xzymemxf$`RSb<9Oljx}$uWPB#ii_=*C?enLhx$o&C2u;Quc0DaO2cQovCxr?Ajo&NTv`V*JR$-|4{L2Rzwx%8#UA zrCaUA5+Axr;<3z$>j~f$52FNlllebmIae|Ab%7BAlc#G6|z;;-&u@bQ6=#zKU~jv>v_fNz}wm9tQq$B z<-k+B)^opy9QgZ~-O&3qCgU=r z+#mEWs;Uq9gWgb$x2(FZ)?aUUz2$Y@Mb&i+ebwG_e7R!1*VoW!l-1P)s{J8<`NW*G z>~wo3Z$(vYmDd*x`j&b9wV~iLqax_5@q5b~YHF6DidOQ1GZe*IqY6JnRC2u42QUsb5S zu*_ZJ!+&l9C0Sm;$=;cn7vp;|vo52r1SPA?yo73b3+TH-y%6UwERJHKsu`%7k%q6( zT;vaVYkUE(_##ao#@@ZeDDmWHWMzA&SJnEe^YUgDyJwb^6nWF}FHMLS?WIo^4Hm+a zsM=JtGr6kXeQkrU+CBS{k~HeDHjL?+UfG7~3A7kYzuhI-UU&LrZ;7|wUyW}9^H^EC&B>xoYv*O(vuFE#@cmqOFjyBXtgWaM79=wiWT4B?74@>%XjR;)LZ`a3VZdTC z;Ic&)VbzGsqkG=kx?l}vqp3;pC4&(h@iCZ<#vR6UyUYD%kF(8j z|E}ZWPERYBU&rbT`Q5Y8QZejOgRa4_8D4x>D<&^UULV|XFb*#}Kt5lZ<}LM>hPpaw>148~q{$OFL z*Nw5lcgkYsmAkXOUiv~@cgZBF6U|ieuDra9iVCMrn>*J#X<{b3S_WJV;i+yJh1$ZR zg=ua#96*Gux@Cj2klVdPm_>M#oTHPX=4fQxv&tzrIK+iX{@QZkAn0xybi!)k!*>oB z7GF|^NPtnkhs*TZx?x4a?WBGOcI z`$@I_rIA2XSR5U;%!zu57Vjqe>I-W_*_qI{J`lvPRIstV851)mW_?QoPSaa8m7WfX z8MF@i%0g4KM1&@fCM#rkFB4xxEF7M2-o>e%r)Jw~7084+!X0a)$tFCt!lh>IGqu*Dv zu%W_kZFI-Zv_Y;i+M+OY1C61jl_ouXA!dFCdJQlb#~FGLoUELgJkVS23;9^rnS))X zr>Rwy#;+!JTp}4yt{m7p7z5wijsG#ec7qE|koXk9hEdWcW*{~7lgezCOewFb!dX>P~7q2-?piJ3W_^?9%8Qd%%@%FhRkc!>OF#T~mCC%4nk;+Np=;!0eZcl8t4330bj5lDe0gx=-D$%yzEg64R7Hr>^IA+YP}8h zer)}a+D`HY z$rT%qQrZpSgoO0RL6P_Y5^gb)pC7pLGDc*2W0Xgis{OSwEodY5En5sN>v5h#A~&S7 zE7%_UM(mcV?eZ1ufkWw&BFPP1P^U@JUlKbphV^e4$LS($b@D9G>dP7502QJm3xbgrtfiPpr-x#zksD~h{%N7FY_XR4 zXug{5tDl4IqtpVUWou`P($VPvO#sUN}#J0cMFXl)Nk~_>z9Bd3GQE)For1=)39e5By9;zQ$6~o=tN@ix=6o3b% zGTDhvsw`W3k$}fcE4!f@jGeTR(hmD%)~}96(bfT-Gb13*DzS;QaAD;8I2bBhtg;P` z1Lih>_C%cVi~W{}a{IeS;Qcq|WKOKB|Nq?4buX9QI8ZxMT#JhNV%sVXlA`ja=wPGl zH>gd7^8#jZ{7mKe`?-HJ&jlcrpGEXlU{m1ZE-57zLM44Eif3 z;?_`Oqc?z`N~@!kBDBoAMBbN(On|{OujXu|dj}p=(kCI$tj8@C8UHN@A9Bp$(}>eD zjmMcY?p-;q5<}A=?JR3Qe2rJ&jBJm;(HpA6-8LM|d1n?DpkHMH+!tD$UMvz}ZLzW3 zqRQ}Ji}kiFcEgTYgTr(BEjB3@C+Ij+b}y9i9h<3|s@lRD)WtbAqDO{^`a^W=D7OHW ze%wIB;Lsk~(u-O;;U1LZn8%{lqqh3Vmg zJQ-72r{>b%Lp&2Hb#z3d{p8S0@|+r9qqiQv`zVsx9Qx%)I$X6T zo_WM+pD0H!UX}!FHqr=r3OBp3*gc~lJv%Md&*9knbLZORp<_`Vypm8P%XD1&5K_dx zKT{^F*o&zdSP}I5ZS>JR0u$x?yeS(9h>=Urq@S{siMUbR@e zmxu=`%nX>;3vqst9{co7Egf<5b2l+JC!9_dzI}&LUR@l$a}mJ@3$4&2_OY7CIYnko z-4cHx4$u!cQn}r;P%Awfcb_2w9>Px+(1~@Xc*J5Byo40d;}*keVS~pKjx_HXFsE*e?MU^a+8t*oAr*YWqr=(T{Lgi^nioDt9#*i z#>#rQGH_%V)J%*dG(+f_5m6$M28q2|3EwNgGpTs+ zp$tQVQ{eqM*>YMh%oS*W`-}9DFZS(am5aR<>1VFMY;92Px&&g%D}qYvNpyC_k95(z>>u}tGEW(JZ8aSI!daMDJrFp_EM zxrALNP1z~k`=G-}&Vdg!!um=EI8BcPgYUfiiii@=4Jpr$tke7HL^yPU-&WNJ>gYza z!z}-{Cs`d`fSy+UmJ@|2XBfzT)Y$@^c1-5``Go`R-Ui6UF}#$t+N7UIIywJjrysf` zMI3`^4^T%Qp3W?*YfxL-s7Hun9+`?he=(n)l6Qc_GwOp_`T|9?t#G^rBp)Pp8YdOp zzuU4iExiy)4$h!1k?9VMAAQ<0i10|6G&vyl_)wDW%JY!!w^bug{!b1DYRYk*1^wjF zxTep6WyF-$Sf*LF=iFQq^jo#hGMN!M;BsP)1#l`=c7VQ=7CSeIY%B~ zk1VZVKEa`qYV(H1AmWAjW|Enr4~;Z&?_6xL5t`8@^`Iy{66If17sN{w1HGRxIfkFY zntXc6*+7HoKPO)DG(ew~Vo3SjsyP9;XY7HqIK&M4#mzy>Q(o!~m6{=ZLq%vON8h~b znVu$JPou-<*-`#67-R6eWU+f=J$O0IMf1UrLF|as-q9LP@vyj_A`GTa?g0`6-1?IT zRB|;Lib#Mr=St}PO!Wel<(w3=VKVN}`WFRp2Tj~S_tl097Zxo{chi$N3+wB(AUMeT zW9C#g&))6M{q{H93{V$dQB_wjUa83}!~;$->mixddAeFRb~1>1tE(24dCTe>#H*Vm zftH#5c}*ZISdKSMEK9N+*#RT3mhPZO-{}P^*_yc;$*qANRkW;FtzByEK-u0RSKzF# zm>&@z5*MX&eDemRdDf}4*Z(0jlD@!ej5(Y6=+ zyOF2I?aimF#4D$iEt${2(~PX}RoBaRH)YJ>4md5&D%gnS2~iTaXd=%a3}W2q5H4nu zM{kX*bu1>XT7}(H%JNNT9Cq*%%;Gfpdw-r2uZkn^ z=F;PY$esww$CeAZ&)M~rK0Mhb_V4s?1tnDU^b9|IQH}48h*}&hw;BiG?Kqx|Y-sd# zXDCF=^}n!`&Yab^ec<4lzU!lu-e#xX=&!L1MVk@lMqV+ec4-xsuG#+jh8k>g@Ow6R z^IbfniE${S4N`Pk&Tcn^%L|?K;^k%fzJYptJB4qNI;f`CQ5QxXvB<`UBK(VcMD#TR zET0}g$(7;{^rV=UN2$Miw#|J6~v5}(qC!bv9cJrJ1$smJ=^6ESIO z?87ZX(Z0El8PeO!>Cv~Bhr*N0G*BE|**gkf9n*w-GPTdgNpA8lU z1VI?Cg?_IDiEH6oYz&X;5n%Pnd7< z(SiI^yq_W5vzWiz3yMS^Owve2+1oHC)-S6G`4$3(f)ZA$Pjo&T3>Xt@>q7pC_+Gn- zfnXipUkWYLPzxKXs>{!=DrXd4?>?KpAxW@T`syoc(ANpcZ#n$#{~rqx^wq2U zwXEjvT&mx@JkHVt@#+_S&**Ucsru^oFcnPInejQvQl{@=*6XX^%~Vi*Z>Xx4s6H^n z*LOzMSHG{RV5)`RTK{s;|AXJwRr;&nA68I(Z|^XcW7XdW{2};L_0{haD`UTmF?4ruJNPqecTBSeX=xW0s*;Lh6zbC4o`h8^8zN)YKe>>No3P_jw-BAVA z?=w^Vqw#00e-ChES0&&4ebO`_agl%Pmv#KtgQ(Y6zhkN({f?l1rEo#PU!knmH-GPx zzi?aeDH*D);ATsG^}DDFc799y^gYXZ`|9^o6;!_qWNlxSw_56}-&s{~v|?mvQO9_e z>#OlszssiJ22xJD)c7gXi}*k+s=oT&Rs}bzFFxi9*7o1B)K|ans^Ge#xFQ2<`|n%o ztKWfD@Nk-(+GTD3bI``%PqC@r>Fj-6R#M}vM5y)^OhD)9yR21x^Y=fWkTn#aQ~hMr zC*N1~)$h+Has50tEX`lKlsu)^Z-68FtNQBq(LGNQw_$8i10#!OeI;icD(m&l-&<&x z71TWE>SldaJ|2}xmTEt*lk2rJB;neXr+uc6Cv*F07W}w&i8#}OSK@SN>7uCN;rgj3 yNdfe|=#%hg_FJMwcvreJN`T7uWXX^36V@-)uELGQ2fO+&rc2JVEEOz81>H)F{5T-v`&^W*63|y8H0>eqZ{~% z_^0Yw>7IBnaVeT4i$(${wHrV;HuQK28;YvliBdbKYv*vuQPfD0WoqZ5+ca6W(#*vY zS5$8&`fKEN7Me9g;)?3+$Tmf<#u!Llya=}l$qnL|+Tqb_&3o|nRct_!>yApbh{^r2}RdvVR{Hl^ceNr8| zs69`yS@z?O>d^S(2i?@|vu>xR5q25=mEd2Ce|PCT@1u9!TT*%4`10NVTwGLn+_5>2 z-c?Zio8OMQdBV!U$w?1idQ{TG{nz!HjOw=6%^1j$Hk?K1*bZ;$V~>x9@^L7xvC?9&Eg+S$|H*B<}WVO~}`_`{bD`uu=JVb^b+gFk$i zY+t{^!5`K;=%4N|UcbYF2mP;futTZCx|r!O-VYFP?d+EApwB`F{|`HiYn+3BzU!dR^$zvF zaIpV(4u1QT1HQpwTrWGUuirb^d7s1lraG*PdWI{xejv9b(r^i9pv2OV9!>E z^>v}cI?Z!fUpWqTc*+6qbCmr&4tKE6@eX>9cc?$#A?}^%u-@--kGD$LqC}p2B}z0*ld#s}-0V9OLs9R9B~`r)R+M#RZtIisG^**#$Hs1x5K4zFvOOmaHMhCA|ZTdLOPoW>vQ@-3+ zm>cSf2%25MFK^Giy~3w*_8mHvug z_IYr5vVwc*%y9@7WmUoxF|lRk6{YzlrW0j*Q7v~2*()$>PE=7jo6yr-IzN4N|5pb$ zg_b!&V?o98K(JgyM#RQk&%}(((Z1}m;-KN4?DNjbo;k-?Sou)dOT3nW2 zq6&Ed%)4L7SzO^a@5}tle2bR*3aToW`h8{jrGC=7GFVt}#u=pbXvFM5un5ysNPYSc zIY|)3q@Taw#uSv7V!itRgHSWlmy1vnfFcM)m2PhVq7D223gre%Dzm$WDEDk&BV`~f z#}e@8mu45tfqQ5AL<~HPVT>;Emn{hviM2ox&gX-H%9r^h?DNyc!4dW_Y(#4nYZOBx zEB|}}*n|*`^8@(>#lhw7(!&#i?SNVen>xmQ8_Uk|%}Il8$M_BvkaI`*VEsAiSiM5K z@{&roh`(YxQQLPe!9sm~ipE7}5_^)G&#u!hcczi3phA|pJN!Hm9P@I6qp(Yt*lmJ# z9>#VUEh5ul%;6Zgd9a*!Ufly6FLg*!)&%^AL&@`B5JfpSEp+6^L*A1uoBDXfQ4t@QjD7>3q{IjzX=rj}4A|_<1Z&^itAmFc{{cNP1Dq0ra zsk3v-a}RgoV@0FCf8$!1Njp2Hk1Z^&5DCw6b6+l$xiAS-QE?G=4zb50b--?(?-N-m zB2=)Th<(pylI(;B0%9!}mUv|rA}oQfGR9?sTUg>cHMuwsM1Ga>!}Q2Y`%ihK(JEkbQnV# zwYV6ML|E2c;{Q*KB$Qf;U6k|HpA<>VHA@pB61cQz5k}D7wtI zIKQ~WKoSD);e~*wplUqD$yI@Hg@}Fyk`5m|^YH;!X?}5;F)b&1(qv!8h>UT@w8@iw zBS)l}&?xgRV??GgdG6eald^s3BSuPi?p#zJH6kNDwm4cZ8ne8J+_^cvbo`fwgE=}p z#6h5VTOE%(7yfk<)CG#8SaFZjMe**r8|qOFx~QJ~F9A}hc0B$gBoY4-#DDb0nsBNs zTM&|Dwk7%TkS(cfMY6l&Ke|Y+Ve}BPdZMN5oBF|_rr;?J67hcA`k&O3(DgWb#p@6w z75_pv-3n!T8mTx>ri=IwYJBf$%W;C+!#Km_#~VADPZsM}T#OU;Bx5A_B(rK@G2VD2 z8WYU=iN@nF8JzFD8kHC&&LZ)eIX z;&01GvOqJd<4qdw*Xr-o@Z&UmkA~0I@Kz09py3e>zeK~^HGH9lcW8K_hNra30*z~i zhO6^xnA|AW@YeTbfjm{-WNUS$ zXgIY|*8mMyb4k2Z4Tr;;*I*6DD;)Dm({L;Z^BSw+cqM6GSsIQ7VqP8%$Ey_c@@hC< zHJR634W~7vu7w&-@5Izqq~Tbm<`vLzUMhlDt>N_f9Cg)bcz*?guF~+MHM~K?kJ0dT z8a_b78#Vk`4d1BY12ufJh99rtTQvMv8s4PgCusOi4L?!CTQodX!}ndMma5efwLX!w~L?$z)#4WFyw=^DOJ!!tCzNW({JctFEPX?V4UXKHwj zhL6_pRT@4|w zhPP;VmWJ=q@QE7Us^OC~Jfh)~HN0KJr)YSGhPyS~;C+hxf2xKjY4|h^PtkCXh7Zv2 zYzlHB)uTSb!I-W$uJId zp86n2@`(o3FCxx?eIIvrb~cDICBz5zy=Imv5k9bQn^{f}-#2licVmMO74urJ>%Q$l-S-}z>l64?X$CYohRU=Qp|H_N?5d5~GA zg!RC_zGj&c)dTzD%rYgY2ljpSqZ%(IrWn6jri2vZH_McWV*F;A63_$t9x=<5cw+o! znG#Nn-z-z2iSe6dN-!~gvrLI4#&4D>p~U#jG9{82zgeaSE{xwSQ$l%Q-ypO6D^c!i zmQN7nIJ11BD1Y^X8h@%Ne{7a1QN;MoG9`!@zga$6lpit6ln`S4W|0mJysG9_LZzgeb)3*$G- zlxSi6W|v00`>3F9}* zlptaJW_hwGKVp_CA;S30G9^M7zgeaP2;(=)l=xu$W|1xCy)9*zrToJ^vGes0OZf{+`BO{z155c$OZm^1 z@{5-8vzGD`mhwZE@;#RF9hUN1OF3*Q*ICLdEafUoxztkjTgnS85e@nTyrR=hlf7oD|e@pobOZihv`2$P&O-uRDmhy|1^0Sum6PEHr zmhwH8@*S4)T1z=>Dc4!bD=g(IOS#li_FKveEaf~)d4{Fzwv;DW%9)n(a7+1AOZiup za(_#?x25c|lz+HeoB#ALvO}+3;t74?somS|os$!GO~nr23HN>#8-pi2;rLSxqqF}3 zH2J0h#X*qe3A+Xo8P^f)kJNuRc$E70=xj|su?D+^@d8uS|B9I5%+HAo`Oy<<_iX#} zT+gteC5sP?qK)J*skeHm3}Iu3sjG) zggREa57w+Wc;?l~_&e^J9?8$S57tJ~+Rj8VOMp`qIHqkNz=Z-_tiTJ~TwBmxXH?|G z3nyMMF>m6WT+g-pR|(~xtwse;=!pPGsAW}M3233GKJipaOg$m@&h#cvs5LwEqNl!2 zR&9ZwhF9w1FLnsv?Y)uc(idv#7ht2U%8OkDQ3 z9hC*(cnVq+C$1&=NhA5WrciTaF&-hdwI)ss?Vu{_JQ#>gtt`|EZ9|RF_HCb^7}xSz z$CS8_J@t9(JnL5Vim!FAj&G|avxGfyo^W2Hr{2BJ6WZ;8{Hu|oHM?n23?{WJR-Jgw z+4b&Ko^{DjPH{CRKiO2Dw<_*+Pr)mm`n5D+p19Xwu5f0bd{`m$>K1Ao$^5Rfv(~*T zuI+i~Cu-F;WxZq=IidXx=x=ACXQZ6npeu3_&1BfW=i-U;CoY(H$wZ%>tJLl<@`P5b z@`S2t96SRmVgv`#anvmuqi!LTXcq268veiM78{%0>q)bE_j=(Lay-K@9`cC=fQ3&0 z)*K=a&lJib)+>jIt&)K%Zmtt#_VilZ>T}v&F*!i6qDK&>yEl+ zEcuJ@hRwno*0DF_)hJg;@M*3v^dIC3>*CtBLv#(+z+eYIIKRWu4^$K~swoQfKx}yu zQK%`ct-HLrFzPb7IDHumSJ?wsY0+IJf*=xh|CO9%8WtKn|F2L8t042DOGw@3$SHVE zRaI7svG0`=ve#3v2X$Mh(q*LOxEGRdZd%!tyz&t-Vc=u65+9+WIkFMrv1FSfiE`DB z#wtmEj%w_Y6)ya?v$Ni9X;mRxp-F9PGNc&RR)f&0*1b1w-(}!XeD;K1Q0l%39!(%E z5hUz{HIG;zt@##C1)!d&GMYN5UD0Gzr8T=-rBSycTyJZQALnjO4xfOHh?+k~ERvZi zoTfFd?QPMl*)3+`K=RN9dk-Y{U9h>{y%lY1n-T!E0Lj~k=1tU+HfN$=qx%ENDZTH8 zItP+3*@pYPjR%tFw=7N`ynS)9wc+t!GFlUH6(3bE*Ir{MlJ z&$iFUiY3_O8PX!Bb*G%x8Z;Jl!wt0cAOY|sd$wa|PeRmhYI{h{3L9lmbXM+#eH53h z2>oyQ8p7m^t^&8AEw0P7rIG-uUb|ziW!gMy+Pco!dnDaW6B5pQPc#o_UWg}Jf=|N9 z4(3c$`5zjMn6sm)mN_-Qg<|`@qzSurMbklybLo|IN4xE^%SBC`^Fa0HNB}jP-S49c zW?*RE`!r8mP(#eq{in(KNtiF^2h*|>bL9FLRKYZDqbb@VrYL!3f2(^O4av3c_v6~` zQ(Z5;Y72VB%5*oe7T5%Z7M~v=Em~QN1+C;irWPl&7Ar)rm!Mavg)GNvaWh23SfT-v zYu#|t`^>(VN(%^8V1Y8xxAI*-`L5sW`#yLod1#!a?;c$&5IioX-vOfEy>V?13a_9! z3i`;dG2VFKD~z9vy$v}C`QKa0!+3)4gc$a)(=gYH%l>y1HJARE1a24SyPH}|=kvrk z-?jU9lA%J+dc*`gkp&V$Qa2v7t2ZKXYmWSpd_A0pKI%lHaOO)mk|EAb$N=GxqSjYp zKy@S!VdfsL@yy>z&*sQTWNV>qsM{nnIhoMV85JZqDamr7o=&=>Cbc^Q?Z9QJ7qV18 zOMMnKL&$EZu88fw!EV}B;9H~`3w)QFngYAAzZJB$?CWaON#I;-b;r@g>lh0X!(iZna2%Z2-s0 z0SJNN%$Y1HS4e7({0X$HonMwas>ROFlWo~7FQ8q`v*ZLua4dmlK$&7YN3~kp>(O=} z)sGHvE6((2fLp&%18ig)y&{K#BG#W!TA#nSMY3rf{?S@z1F22eE!y{?d()^M?$cxT z*~EQbAg9VQ{3bFa4}S;RG}q0i;p3`(mhKX+`4xnd$3KUE!iy)M!&*@-uI*j4t)Wq@ zIl(aY9Y9n?ZT8bGIN~JMv-@Sc{un?=ALrj~CuD@CQ3j2|6u5*1mI#4$MWhdPU%yt| zO85J_LWBl|v|sZ22}_FX8|X(9oIq_-*d4=na~LM+*(k!Na?v;d0D5w94lZndX6Af-#V=pak+ zJRT&8>>cfNZ}xc>_c_$;6N-tLF;*JLqWxW()O)4W8q(_C<1yQtuzNu?&-Q*CcoXYY zVIAaisNQuA@}6$#=4`E-bI~p~kSDKP2{Z4z0)JHe=V)6ij3d&=B-lC1#i%e}&}84x zm{tP+fbb)`;x7{ZJtov5=OMyB>58u<{FScw3gB(sqe2=x{%!39Yva%@z|I~kB!g25|8tXd#GW^9YMti$*hy*c8rUj1lym2CHcq*+$Db# zwL8G+c-cHU)6cnfLMT$AY6{{w=MrRX5r{sabj*ct0`$2Ankh&w#;85vwFZTQ&`X}s z+mRza!!5QXz1Cz|D>Yi{Q_?70C)+hgo)iiqtcr-jlM8XLMwW<4t4k5_eyxZ%vY+K5 zxYh}o;kAM<8Q-VM*gglJBH&ZGaAw{t(sRN&zlQCeA`L@$+IRi&MyevzPNXTuwm~Bg z*R>FlelT6QMmURfmkfC-NzGo3+(VBzs(y3i95JlSzvG1>dTW9B$aK*g9)#WZ3w6!~#4HP39J`rw?X>aOMP77B|Ae|+pys=BsD>LD3I^Sed#t`iI?b&Iej4e+h7 zIlz-ic9^R*N8S+P>ZF|J$cwU=CHiZQoJK0X7Rd=O?92(>vkunC5yyk#{E}>g^GgtN zGG>_PmsGZ#U(#dxpH`3BB^)JHM=Jgl5fkYgoT}aYqLv(HWRVwlL2~ zYN4H~)ne8XM!y<%Fb_9F@C2M?g6T!|@4HaAw>de-KtHylr#>udtCflylZ>&7@qgD5Hj_5d zAagz$ht_?aWMo$0a{^d)TVN6+ax%s(V{5h?@)l~%b+I;sl$eXwf+2&$ZW75M5lMwu z#1|kxqQ(3Pt!?!J;EpDehR0R;4j`3E&2@u8sPiZzMKT6xjQ_hf+zCyZ>l#>}dT}S; z3Iu>Xrv{yWoE-EQe-+2UeENvjHip$aV?@pEQW8#tW%%t6Uo;n5DkeZ48e1EGKajfN z#$-y>{!JL$Y~KoDwD3r4bK!|s3~OmPyz+<}zi%j3UUS`Q+|xwVi#tfI?KpSYC8|U( z7HZ^CX&prKdA6u3bkO*I?wSOeT~7@6>xE9&xZ1I(YDK&Fwl$$WXpGUeVugK=ExQq(No>QrJd-&Q%xA=es+iUsdFUhb_^-Gs7ha6Ci9g+C zdvq)JUU>Q{RMOVjauk!F6uo%rXV9yZUgAYr^2#UB<-P~;$4rxWr)`cTl8n%vwpme@ z+|imNL%@nAQDJk>>TAK(=Jn4HrKm&_1-)?$tv65Q$o4v_>9~q`Ps`@Cgdc|WBJ;?u z_OE}Ck98pH#YE*r8lvaY{}ouie{8^fATKKtIzO=xL{G@@%HXBCYXH()Hc=;>nK_kO zG)E?XKvs}jO1Q3p1k}qNLx!#bGI+SIu?wT881Gua;D)lrwS8n_mEoz&P{`VZtAc1oWwbW@g=PX{7H8rwx_ z$rMVTtt&0@=EyF3qaL;Nv!W=Kp7k!24$=~pmR>d)x3Kg*{SKw{KZV2DSb9C0McpHf z96?&TRxor+OQulz4jfOK?jiB!$T6`>CuvIm_8llq`w1((bCOiL9iLhzOaI2!r>8h6 z{TZ4?mG(xJ-Ypoq(vm5Z?nE|aDlPHm$f9HtW%@Mzq%3sA19@}g(>(~*y(eykZid{s zQnAHQ=&Nmy!)6%6a`7%E%-<#XRRf_~17mmf zz(z(#wG+3}hB*b#JoPi^m8IJ0=;vYg)#8u2ok?XDKpB4apAC<ig|8DhV(Ro5&SRnp>s)EbL0dOV%HK2H5Q7;0TEJ;fisv$T^2E< z1ZveS3C#Mn3XQfp^$5`_AgZrzjWX_);v~`>xy?zyUVQ5T9o2LZ@Mx@nxg-Dw2clk` z=ubwKzkxvu{wN&gK#=4#M|#3!*v~ywA7_3-vF6D8;xvU$XoPJN$u{!rdyd?R79w`i zfUm@4Y2!ag#SnJl%pEuN5U}>~G$rUh5jWFm4y)St}R_FvOQF zj)Z5@^sFQ06sI|o4HzBGl^qG)!kPP7i`^uwo|&0PnqHw_V}=2jf;^3dB}6I`*7!Tqf)284Qee~99~UF6KXwos)%**v;Jy2;`~Zt)$g zA$Vf4 zxRUb);aceQ@+$hOTg*0KT5g4GjWt_kQCae#s98o~ zz9S#e#NmYl>>Ya&o)TJdFjUo1yW(J6RmQa|I_T-WY6!fk>gyl>E?qdj?BN~mRl z9VadYT5yXV>rp^8zW=BltDhM%s_hL15Ke8&q&-1 zff>a24+WdM5s%;Xd3f=G8dAR@e->F`bdK@rL<~#TX^wbMf$p7ayae~vxb&D$UIsT= zma+xE#-dKMt2*%MVR9Zj&4flcX-9Z~ZMtes{Msh?PIIIQV^`XpwOiQIzCP;S0PQv1 z__dIp!*tMlnminMyIa{Lb0}ifqgbB@Kb_HGW~%sj>lLrY$fL1BGtK37>(w^lvpUU@ zvmnoLOgtW2J{^|S(?54d>?^8KusB+nv#&Z84cusur>1v5>?xD}LBeD-`Euf4H#yzK zq+o6^HHMSa7^kVl3_z;gJV_N`6|3H{Xp{Eric+c^UCC`*ZM>G zEqeF<8~zSx=j;PCr72=iAxX%y$ilVT;b9_ucm^q_vrFjnahvSQ)(X({ODV{HMY$qm zQPkRwc@PS@8X4KFklH4%@OsKJ*g6fCF4ajO*vU`Qh}v-+J$5^eYGYPX8p7)y>soDg zx1&enCHLPU9_tp3J&4R<_uo1BxfPvBm+$VWb+^a0y&>vY7V;y1qJ?ZfN{sKMoeuNC zBN91Oh;|H^)`Q6)3d@Mx`50~JcO(93^Ai0)Gk==*SgNbuO+x~{XEFrR_K*pW6TBBt z6tAs^3bCjy-iD?^L&1?Q-(dN;FYQdEl@@EMZx8UD*an(#3cE!&Eq$PxK3_rHFk(} zxNgd!R(rjd)+QzcUxGRUz-_?427s;z_kLJ$c<>iu<;u*I+m@dVs zHALHnSVYe&ndFXPZ>k)TH>vF;dDk2fz0#zpO+>WoXC09iY-l7@d)p^2%ur0MNf8T1 z=m;;Qpd#byJBZB4?AA2>q>b^xuC?WtqvY2ZuuiI)^i{WqR^5V~=no4L=T>wW0RxBK zSbid`|5b((!QCvv0UphbsD=Obz7n z+=+20ZoS(SaR#2!qtA}SfUNZ|n9XjY;ah^^aFQDPaes3ytJoO3?{|%RH^C`lqhzY` zZ9kd*JlPCLVE2?-|Rr>pMmG2-U~Fh^Kn;4t$X5D`ZaUjrj~Q95`GpzCx+Iu(|Vf z0oOM5GF!E`Ypv)DIAX)7Z9>pNLox|k>3+uc!+u!Rs=Jza5~Ig1Y6goU?7P2XU!5c7 zDfU_H%WW~wVip@wERE@v?cnr?(42+WK4_xt3TT0%p0~u#S?!8;Lww~3BW4$nE9)KS zMJXLdCUkpgorJKT#`w<1wvCZhMZZETErqYkVk-@sTh$4|MkrcR-Iwsd9Q78pqBg?( zjnKwswQux<`|m&9Fw76E(BU`2>K4q)Mv>-H1fW~W6lsIOJ^bfkQXqtg9L~c(H>3+^ z-Yel2*#uu2l5k%-k`E!%6-gD%y9_hCv4P7h0|`ef5)PSm#SuX_B6QtFI~{)yNW#sL zUyCz!3Qy>`IWmdF*Qa4-sD~zwL4T3DATM*brmB|oy-WG^JJB*pv_#`P=v1|nTi&Kx zihhVWzG|iF6wn8eUnpJc(#&(I7B24Xrk|IG8^RYslUy^@eAoNHfG+a)o z)DROoL%~Nw@yKz{o10tY_qgXh?+x5WuEC1$8VO}2k$Dq5kCwa8q|@TXYW3Bt>`%)n zwI!#H2W>+`L|RhFf0SGj-9-}=SLB0d#mFLhZrmmMk^c`y_=`~Z5qW|LHt-Uu_;o@s zO+77A(bxTex@7DJ=#!)}C3r$w#*(q8p%dg!)>R8{G~o7Fya*Z5#ru0X9+)sT$o0UO z^zk^IV9`1ftI;ZWs)OLoaH(ii=(4AU$Y;9jYXc!nYt+TKw5`NO%%qr|hED%zaT@pp zw!S}FVt2%v!|QyQ4-d%`g|F3Tc|;Htn~rC&^grR{FH#f{uyQzBfACJh{Yr76%QEbK zcDkqxEX+?q(ihH<=EQNRzAtF20P#2MMc6S{!aun$y+v2U)$aGgQaj<4O>oLBp3scV z7T=*D5##P(K5dynsfFknC#nCr4IfcfG8e6G!w(eqXWLMnkLVUrGaR+LZo^N1q74JE z;YPKw!G#*orcwyft#Nzu9VS0=ZYyC=s!g(#8@QlqcID`p@c@l7!2`GKa zZf!5X~ zJd(PQ`D{Ce9>LQ&KANfpXVlTtqko?Uue4}ry1lt}^rvG)V4Nt0@bt-#ka!%xhdc2* zAqxP1_#Vo;Hm3ZGzh8}`jD`zQ6nb=6XWaSFeSFEF3+4I zCMi!-St`BPG4-Nd!lN%peKO@)*-q+VCxruXj3bJ@|A`KVynqL4jG;*y5O25eYcBGE z@G|JDM)xsZ#A!`m7e$0|@sL8hweZKVh&P5O4uHs!L_haXWqjGb;z%Wp{uj1{ETuPT zqRwz2ZHXu$kZT{e!Ap!Mo^(6%<{^i%;LeNDY{(=$M2qP(WJ^F%b)DiFGAZ zqmxB_Ve;CFT{|h}@XYfo(YTS0Fd$3o+qtJou1qF9>gz-7V=?;uMogo2*qS1hS34yp z3iZVy8ReKANM2KH#sd~c&24G*XwDQf3op6pGq+u$UolSjY(^Et0H0Pfwkc`bZfp7@AAKMt z^{{Q=`LsFm4yrUz?|L%oeXNWBbcr}<0}Ha*d7YZVNG)L;`OkbYV=hUZ0l4&5@TDxV3dr@$Wh;;s4-q5=dv(_C+YI_Vk2=~(5 zvC!?oIZEajA(Ivt>UdHl#YQ5sf^G8sv*^5!SrI~#SQeBO71z<5guzPYUnv%ZNG4Z> zXeF|YUO^+|r^S4v&vYSj%rLnePE}>+SV#x~as|`^imp?#;#kBks3&)8efh|pv4sQ; zK`U&1eZ|<$cJBWD9@RUNmrg)FM&WwT z)7UuFs8&3pMhs;{yJw^*QInyaREei@HQq3b^90oyPKIBN+)Ai;*f)3GuOC7zMXTsT zdGKuYvCQVkso*M+x1n)lFaA*QgPTN(Hd7x^2*1~W+lYsx*X|hWw7JppJ=@(beifvH zT8+S~VxnV-B6y{?y%!t2Qq*QdwbD^5IyvTya!`<5J%*;5+fIm{?ht<j9f$w#6>)3sF18;ulH3=>fwb8BRJ5>q5-swJ38GAX|j+S{L~y-Cji;t~G}4 zvHnxrHbZWt?QH24&5;8Skjn^*qc`EJ192uFc>tDIo-=}+S9(qX-CCSRX5Y4BeIBWv z5xL@hYA<(eI#QHDVkT6w>e}h>~JkJTH{~`rVjM##uc%Hrv~e*L3>orbSh| zqQi*&CLtpVI3s z2;Fog@Qx~0j}J{z#x8?hC2ZzriwQ>1uslxm$6|@iWGt>F2Q!yikHcq2#7}>@BA46; zZ=r}LPL1(<39*Bf2>?lohzApXJU|Pf;z^JuUyZhsrNrmF<*rY~L@|J7RBpirl7n9p z4Sg7iBd~TyYRsl;`}8w|YDS-a&Jjf@{{lWT2njJyK0JwJ7xT4uie*}(b)s{v9;FA+ ztccB7DBB!af%q*SqXF|{^yIhn$LN*!c72Q?J zsC4KKvh`fqC>rT7T1)0@^#=sI=E#p2MU3}aYIO-n^btkt;`_JSwaZ37Tf2o;?X)P2 zMIjcb*cX2HleOYSeLot+j9W@(ZUzFW#wE{D!GoXOY)~G@}W_ zlA9|nva{VS!SO)gh0PI%N(b5LyUL)M4x)Vu9da`v`Mt)ao3Rc80jWCijJ(Yg4G09_|S!akB#$ookhKb-qk|UFYk(NWZ66Lw$*Y@ZnZOX zYmOW%h7Dz6UTWfNk@ic?^fdCH!7;&^Jp~`V!sy6TTJf1Qc?!4^pG)WTYcOdIuTXDa zCSI6>?@3HCjENUyhu)f)mmT`Y#5of~2lG7P;Tr(w<_!4(T_r_M{4Hc``ynBCV)}dh zd(Jtb12|Zm68danXTOg;wJ*eZ#(hxrIfN%&yg>b)?F)++k4QdoCB`FP&%MBuWKvBk z|8o6efnO}}iv@nMz%Lf~#R9)r;1>)0|7n3Z`t}+w`g>|x2EG)z)L&6qTwZ1@#s7^y zSY2FbEG@4J8kGeV#eraM@e*Tceo2*|%igL*)BVehlJbJfg2knNBh_%11^pHNLL(Rd zd;8SlveZS(gZ|3Y38_ZUTz^He_`lv4rUt9ah*#vVJ}cEYwbGc8A1o*uG{^{4__fXg zRf{h3FZbnFmU3^E#Y?mjvxCb6ej|_(xU2|&E9uWNdB02)f)z%ozcf%@UV?!Y1j{SV zI?Ff1SK-eufzrO>vPyqNkjB3#zp}W%R~f7*E?Xk16qJ{tR8I6zoi}!N&c*$@HTZ@!=tj_WphZZ}vp~m_$~cBX-ze0OJOHE82K zot=%K2XGEN7{7IJ5sp^9pbvruK)?7S_@Ie6xM~7D4zv|C1JuCpMP!4ff^K>q{eTwW zL)(K-F^tWi9?+LTH$%^lKwCf$fVP89#iy&&p!Y&hFK9Jr0Q4@<2GDJwn?YUpNP7!t zHfTF&5h#69dJSkA=#!vc&^JH>pz(MfY5=8gC~XFv4cY=40Br|t0!_gu7+(iX1N|1% z3wkuZtr7s82HF662k2(dS3p}pzX5FrJqcefNr62lf~J994LTS0dm3~n=)0g1(CL1K%WH70o@B)0-A`gO|Jtz65oSv0-X)o3VI``fnRGl=?%;`=#!vc&z`{FpD8gvopI?y2K7SMM=TR}74gWmYvo*O_@L7xZB0(}j1 zA!sXT4QLYH7Bqqm25kae1KJAu5~zX4^$yTf(4HTlJ!lT-LeLV>8qhtUjl};D?Lo(b zwt~(CHSk(*H)ty8$seIT=nT+>pe3L+pf`Xvg8l)t3G`XeR?xqL8Ux_x_#vrO&}z^e z(BFcVfZl+g8EXK23v@H+z)xT|Q2N2bcF+evQ*a2e6*LX>Z=hb#e}V=;Px~v{gU$!t z4EiK!3+UUR?V!E(qWwVl9cUWpQcy4G=b%B*@t<~ft^u77`Z(ylpl^T<{99*d2WScC zfa46~n$J2r$Adl&Iv@1A2!0|0bmYFy&JCdFgYEzgfbIpo6*Td9=nZ-bXdCDh&|^Qx z&zOPI?;o!OtpwcwI;^d;a~J4%(EXr6&=mY~@FvhS&_98CL4O1dfcDvsaf40;eH`>^ z&^JKu0R0B^RnUGXASQ#30`2=nXXhNy(?NrvnV@SxXMsKrnh*L0XbtE$puYp{cOvu$ z9R+&YmuL@K3K|4`19TlI{dWEqQ2HJ1J)ko{J3yZUJtfsJ+Cis)#T5Or^?k0h6HDAM+3aL3sQeP}A4dBNbbh>aaN+;pe+s_S{A>dM0QkbclzsA}@^^uM5PT>5?+3r<^UnJB zN`(J`KS9?o7?nQ^`~eM}ow+(cUM|4Fz;eK!4*nUiv$=k~zfQO@G3;91t+so@k?}$p z)vZR|^KM35((BI9>K=#_b;&LpQ1`Sokc)d$?xLt(1jk+B%@Gl-`|ZzWAjMX3>=f|m zUthGJ4*ySl7^_#=&Rv_3FhTZ1b#m};)Y{I@KT^HhE%ok?>N5&)>jc<&JnEaWDy2Ro zXAS<{eQRgu3XCnW$Rej)+JNe9#lMbqot?9h%O}p!>Up5o#O~4YqrcA)*PQ%r$G_q4 zJp`Zhn1b=IAkVpxY zva{|3LwcCwx(f2#4|H}SC5zUb8J*Yl;Ez89e=GPS55a#Q{Gkqf8uxh2&miy%$o}s_ z3#IRQs}pJy6TCD7J;PNv=#g){^F<}LDYE$b?o9W$yfvaAHcufDr32nL3KKy z%aK@vqj8_uP1B_`+Ryuta|-H=(B)|R@j>u2z_*LnWOw?6(iHI5Qy=#tD^dPI|NnjY~U(Fx7nPRM9S zoojG!>KVV(6C zVRd4yE1`EZ&OVO1g-xBEeW>o0T3w1aMl{~6N1x|yb6$5_!M_yzv-L4mNW0TGkH`AI z4t$EoiNj<2iN7vdZwl%iQ1yD)*CQJb!&${8+dDh4zeLAZEaebC2mAo|c79F#67Uy+ z?_}fE+}s+ z?FIbQpl-jZQTwe1|69l(r}G0*{wDB~(cURP*#-VE@a^(H@`qtq@AJXWp?&#uJVhuU zCBHjI?#nceemHZg!5Q07U61^z9;3j&0sPZ-{v}cV9Pn=f-%bybPrtOf9eg`KAwA!K zo{xjS825?yp_Zm+{M=|iTOo(e0x#6{h?g5E_47XXLvaQ;H-k@Uj;s$T{`*Gdghnt?c?PG3-!Mh z{7qY$i%?E$) zA^2B;{|Wd`d(wLF{{}wPjQWojFSdgJCiodTUyH}@gZ~-$cJ?8k9FKVMF8EcrPn?ck z)H>rmi(O5eJq+%PTmt9ZgY>?5Ev5qVfPWhJ?K+?GgioUWPG`XfP$x&P6F=Fs_iFG@ zc$uI7l`fD$yEysVCh#YLKSpm~7L~sX{ENW9Nax3UP5Jx5zZrZxdyxEIV5|h+X}*Vn zeF_j|0D37 z;@N)i=^cdAdhLaQ5&yiH{wIq5Q-PHrUYzg>&Khx_cshconxpv3OdY+DQHDC_$H<80 zX#wyX!FST3f%#54(0h(oln(d7fo*hn12X8HiJcBKj&H!v0skoEUuOGh;+ZFbvM;jb zfPRK?_AYx{(t54Na`A#cnR2+3H9crA&5Y)73nAySKifYmQ$ID}Uk|=h3~29`sEyTEtSu?74)!FSTJ9sI|@hg(E#AdiTJzoZ;v825qiG~a39KLI|( zMB8g;)L!r(1Ru*Z%6CU?9030|@WmOknrj*2ME?!o-vT~DRkVF}wEbrA>%ey$Klm%b zcUn*F;Q!Ad_$fHHsR6%O?>~N_P=MBJ8u+h(KTYRfE%i$U<^}&N@R#U(5nJLfq*^2+ zh&rQQwLI6s-|5kf_-nwQ1HMyU@HqH$!G}9XZ6wncgZA})nA{oQUyl34zjTk*QTw`< zgBo}rNAGi;{3R9q4d6S?M;7?Ef^WCJX)FuD|1J1-Yl8SS;NJkgQ+#R!zX5zF{hGkP z3w$U2TESlfzLS0i9C01^PWq*SzY2UO{j$Kn5&WSTiy2e2XQhQK-$}n3@M-)`{@Td> zJMo*qzYgu4;&&_fG(T{esDAPhNcf_G_oAe~oqnlkk_vte_)GQn6q~hk{VAyPx`Paw z<3jLvfbV3(mEgYuzSA6R0RQPjwBG@K(;?dL1^;32$LnL@^J>yB5r6&!zMTz-e+vFQ z3;xA=`}o;rOqc?G$06Dmg8w=APCmF2{4c$Td$c&~zZd+2Xdjbz zV-6{7fn_A(;Ev9%XT*$eiaEYhz+VVHmQvJ*WLj-Z0W<~t2;}>TKebQFuj8}(47f4D z-6u7i=pUk|8t9!Nv^-g88^hu562s;;$cK!eci4-@y7qeJstOLyzv!-sCZ|hvG}2c z=M#;m6J^DXaTmC@A7NCVe0v{bQ=F^y2xE8L3Aq0u&ed^*@%#82<4|}m!PU^qXicC> zYZ6@>d!e}t_brL8re4N(iO1mnK9}o@UdFR7*PdSZQ4B(E>E^2IZM@WNChqU)?z*G5 z(cJxZ68CkI>(SoE+8$Kt#U3skL%i3+)!f?%^(5qxp02NY8!z`f2lwlaa9!8Oc<+dh zaUz3J9a9(QdLZ6d7dLioym4bZ-M=vi6I`L5#!tB%ob<2vDF}HvLzWp0adPkk_H*NY zvFk5!#^Z6Wui}jTane1GE_dO}VD)jXH{*=o#JTW)Px@orc%iBghr8QPjT?COJUm>* zxt>Uf`x{Nis>DI}CmPQr;+CEu#DzYR&T>sO=E**jrn+Vret9nyBRLlp;KOxsuG;vx z{iNHi@jV;kjYmmjRL&5etnjDTEnz~ zX(Q9kOq-atFl}Yp&eX`{@iR?jn#MGXsh8QQIwJ2AjH8UXciQ3ojGB#hcz+}HB|H3Rb3fI&3C1yo+DBvY0Y;5Y98WNgHSFSh z0(ND!AI8eT?%k>*@;(7i+*!6b9(*hpZHtM)NvDeYuJ$PfPI6QpC2JeTa#6plo!0@k)1RgltI@Qx+TULXPV(<( z{l&8|ur|hjw*)u1R31cU_f&ri<0@~+WW0rOaV~>)1&n{sxRPJb__0Moym+3aJNjR? zlKcf0{8Qj$xAQ-i^-&bpHv&J>NNSX2m1i7>M2X})vsmKd85_6L8CUtJ%Ku27o!u6r zew@+IINrw3?dk_n->_Ln%b-9!d68wkUoYf$_45WH=jbl$hi{Y>)p~rA@vCo=ICcneMS$Ds6OV-74yXTlE$MUo&9QQFMg0`x z$|(}3&z9148P~shr7Wv$>20V-EG-bin)JL5k!& zP%H%~dyZ$k>{5vdg&0r>dZ;$W|j4SyK!0qgIp99_jJOzi#16uW7ah~E(|7>hv)bGkV zS^qq4Rs-Cw-#57a@7Qi(6I=H~UGDae7Z~r~i=%yd-A;uRB%8&G_Tj zNdd~=)-eA18i}iZA7#8(NaFO~pRR#N+xJT!Q>A|6IWDPwH#pSa?tu5jMoDsZ)KG8H z_*}(!6YHtuZv?LHWefRtr>L(Z@_w&F{R|{jc5{n`j?{JWl zh=hma+*2dvC_lNLaqE8iK5&X}iTScVeHNUqj|DF8^}j=~F_HX2_7kPgWX8|uc^S@) zwlltRwFK0-zGnQTGKpW$^>eZ0?Cem-_@(TaSzLcR<0o<4R&nM#;C6QIdAyWA{&FdR zm%UL4+^+r#u3xiM)>rm?pYfx49c8dSCm>-U{pVLofIf>%*G0hXq&XC7|YuzVAqKcHSUy6<3!tK9BcVRsSx= zt@%KYR4M0}6;h5G<7CFIadHcARY$gve_ey5oS7U?RKN2$zuh@r*30EaW4QkNmbiBr z<5yJ4ifle(J>zGx-zvLhoMf-hRlx1$@sEsqua@%FSUMOVcC*BlJtra1k(@=>NIYE< z{NHdSUbt2QIgEb>d=Ta_rBwn*^Td^KimYG3B+l<$+|M2h(*XblD#du_v ztT>zN51j`*zU#TiX{b-~XO+r|P)}Sl882r4$95pDYQ}%h{&oT5k1_rV&*Pblzs&f7 zYbDUm`00aXzrz|Nkj41@!0qg?o9kQi)gy-3*Ute???jf0%& z2#h4>Z#<7`T~sh`&66Kxd>)UNmy>ZC5<-&myxcr}>&WQQ|6Z3~~MY*#62U zdl)~N_cf*eal@qi-8?Q{HpW8Wsx1#ykmX!|A^VSt8;>)7HupP%8-3{@rw2AH8dnM1 z8OujpS28}9rMNiCFlg&;7Nsd=cYyjDJ$f z^%(y%P zEXG%sODS+maaB6VsdvCXVmZ66lL2MsF}~eU2M*mc9H{4*2hZ z(>z-9gzp^c=V3#q`aiP&2U(xHf!mGid9H8WufJe?9{ah98~u>Ck^EuopK2Wq15Wws zfL891$ylzx<9Z2*&ywTzcZ^%l6FvcMr{}3yAi@qDm*5`as$+c5jk2uPR~zGxv;G-e zf6O^j&Owe#xr|R|d>6+h`tBE9t-$T{8Gf#mV?9@C0B%=*FV{b2jg*UFifd>V%VED& z`rp9#KfO=spCjPGTA)-yhEvXnoY?V#3afN^WT_c1;I1D9pOt{r%jdTghnd^Ohy8ydD(Ea1WshU z8o1rO(1*ZqYHZB?I9ARbEXSJ9w=uq-_vMqgS@&tOUu*t3g7K@^K1zpc8MmGrJj(cN zUXMzD!z1Ne_tV*oU&D6p!}{FC_&F;ja1`S|Fm7G%eY2%}>-ob>;7Vr}A;@J8c%1|O zJz~j0h8p80 z#xH08SMeb|NBYTtR-uOZX995HZ@lhQzbhEGo@?F3xb;27hrpE%rf}RO%#iY}??*Bj zzm4sw@}*MXw2n6Oxcn?^g}`;m^8PuNV|_2s&iMWnvYv`p$IX=byuC`|NW;W+3FFrH zWw$b(7?$;veI8-lnuoh)N%@18$ofZ1V)SOb->)T5%=o3i?d*0f*FW+WSy9z#Vf@M( zi4SEt$06>}JX-Vrn}DmfTvd>b4)_k1W6dXjaHxL*HVzd-bop5V$2r*lNEGfNuA3Qu z`bt?=y8VlB>$&%^*>YT0@xBH%#B~+pi#SeBV*DM(PpgqY9^(^`7^uD&5@a@TvfJr5 zO0*v{Z(`iKuf5IqDYwXqyuBIY=SVq2*x&lFoDgukem8LaO*hMmDo=1hVbW(rt;Den ziR(7Tt^2}Rh|QGXV14B@OGB- zIPW9#Sk48A%XV@~fm6TM{p%Tr`nw$PRCGjkPQ6uj=;D6UfRp@3OC+Gy?_$QS&)v^3 zzLDqgWR{b9v6N$tOJ_4~eSWzaxZQZ)ktNZm`tvQ^C#usz^AH(|G16;LbNRS;|-@itpFt50VE|l`m<9z|kUtH4}f1mx~M8>aS{F539 zD0{vFJXJz5f8POar_WjWvR~_ay}68!VSSEbY59y>pA%OBPmSqO7VhHuJ9$G>@p&KP zYgWs8%5K9JNqt(`Pe!oJ<&1YZCj@Rct{w&U_&ne=zt;B)^$zvlq^D6%rWLmWL`yK}E1KScU)NM}bj@Uv6GfT!|lW_619Q1tsNW z{z}8=D=hadDJfr+U*apo?>d-{Ru3VqbnmMgDT1 zzbsg>+*n+ZU+VW2R+W}6M-#1tA7U;J##AlMFD@HV5C|B)dGm78$NGFrf<^e%=0ab7 zL9lqK-xpZw&PeNu;^&@y4)wv9ISwt#s(c02)k3Dfx}Ye(Y>D5OUk1U2g>LT!#l_Zo z89rZru)Gw%4((7QBh%-zO7d0Wcce@FZf{q4&>xlGl>z##Y#X^5=`nIG zHFJYGuwijI+1WBcYFOxBoL^NE^wAG_`vT=9#RbdVs5T0$%3yvFW2c7V=etoVFB1kU z^vfT}rg9pMb6U=q-v2b+vl4%20!qfQCt=*z+_LIJ#mKH=bkym=R;}Q%sijl z!=Pu%Y{NI@qL~wCWKRY!#uW-<0Vq=e{kfxAQ>W&-=lJGKoRs5+)OqO{`0?+`A|HOi zym;~Q+~8>Wi{IHZbAvD@COthpJwyMY@9cuyV0t=y01jV~UmUE=E^z1O0ZjLV<|D_4>qQCSpqQh*gMrt+*{fsHDbYEVT zU*euUJvWU8tod{LC``ZjO>-Uzv^bn`yK_hT-05R{xxPw&34So$hsiA{4=krX$A~_y zgO_6;JsXSDUop;IQBhuzUADMfSdh#xB?CkD&C3mrge|gjO4Hrvd7)W)+T!98f8}z7 zn^HA9qu|^{nZ6vvpiEyjA`C1u(w9C`+`~yJ;#6RAW>fo-!779xAHY&Xm+ZN7eD2&} zrU0|gn-Z9lhQ8gS=;z_xvvVgY)iZhCirKE&PU_Fb9C~RUC#Tccu`m1Pjm8LO1u756 zt~6UT=&G_}a+^S~f~My`Fv65{Vb+<`qcIKB<|`|&C`F_;hv%JsINCw~{$NFZ^N&gQ#BE$5E+~BB^@+BGB@KkLc5H|f~`HSG4#f!7&R#w1Z7)fy@ zVq4I^#9xsOU&UPE|0jTmQs^G-^9eVFuM0P!2t=zUD{ER#_N2*k=lVvD7{v~h0slqV zEyw>Cp{hDNXHlBljgCbqE?<6l7IM3n3bRlT(`D=#854V=^PX8qLC+!Hjr5ll@={O7 z){Gq}m|s?a+S3cLj)Uo$$|;r0zzXS^g~f{(Bkw>((+IFbZZKnX1$O1~Qf&AI{z{mR z7pyOszl1c^%ssNqzbqPHv%Rt5SOp*+n~dXQ@+-5;f}=-4-^u{~pAW&sY;0e~h>Q`L z|E2?{n4!8#Plv<|%8`(*Ov)5H4|z0MA;Wip`2SGIo#U`PnzyE?sA7al8Ky>)2c@Ue z{|V!NeH(Pzrp6VQ6;z0z%n>RYP5zVNW-dZ5CAMGB6n+hcm(E!thlh6Z01ya&z=eDXwtm z=&L`&m!oB^8E)FJV?*bNjL~Kv|Fy+8My+F7e7?f`V7_U=!_2(kA#w)DbxXUrq_+2s zlRjMzgX1v+f8pA8ehmjhE=!q0jI&1hQj(gp18My=X1= zX6NQkYC8z}iI0cr2A6QQ2Gw2}?HitYO2#S%JicC9KE>6d{nZ1{U71&k7`j2bRC?&$Xl%lrH%V# zK7e5gFpN+_R%^&W=!E(A@A>=PYv+4=9b5pb)Tf8zMxG(GtZAN*7bRKh1rjh(4dIOD zssf4L*5V|3Fz?T1@f?K1+e_>~sLbf(Fn$1y3851RELq_ajYMa~%sK%y)s(BpQLA-g z@f@4aUtI`bMs5MeagVeUmrT6A9eP?D`_uV@{(O|!s^(+KD3n4EPbuBGq-OyR&2c=< z5`i3m-Ss0e|06&F!-LD0;S^uF+KW2vO&L=43Ax~m_+a^+zJk(;h}6&&jYLVGt)EvR zR`7>O;EG?7UO9&?z);W}e7q5Z77x?JLy=5y8!iKK49W z;x-VHA_|>~Fa#Z_Xw-vPL3>%tFQuxgD&<4}q6uQU-dximWl`ZVYd?{kIJGf`YoRmpaL@g~5x z1a4?p)>5%TY$vBLB+OtHvX(prF8x!3>qG(QZUD?8E989jHSH}Gy7x^&!M()gif zHJb_&69LR9W^^RY(036Jvt!dr#!e-Q1x3Y7>86SgMQ-e@t65X2oF z#WLkP@D?G+fQ8qwL%Ju>w`Z(JbyW(R+mCVVLTa5wS{ejP`7$-yWs&RL8z(ex|Eue- zViW?djMO2V_96iCh?R>SrWPc^2Fl)NP(!WZCgIzR6DXk<3q)2I;*fp?CJl94;k_5Z zo+;m5K!9U-KhTK@*Z~2;DJQPs>B%*b5O)!bYA4TspE&pVtViys&H|+5j6ES3WZAT< zbnUE^u3WKoT+6kPi!g#zDs%%z-ZDmBb6JxRnJ+(si`ST4!~j#@4(xIhf1o-Fv+J|l zkejXRZ?)&~ejDj8r>7BoVk9)cQCL2VP9)_3b4i!EDfm5A`>9B;b6X~|(rK$sdC+vX zkjsGF7E!?gu!6w83~4&|JG%mVcq%T)7&;%ngBc&@QD~?q z#QZ16M@M>E1pW~U?+%=eQM`0J;F(2Sz&74=2Cdp9CReP8STP&j#ZJV1t8bU%Jr6!Q^7IqeO1PcgqWCo!b4ac+PBFFlQBfu8FmcVRv=IEvf&y4V{rEzr?lc8V{ zaZVU)JI-UQYCDM>Wh#yaJ9D?6jr3&wE3<hg^RMFW4bM1`# zr%3vw>VRnLDvnfiI|Zt@`?n%<=N zEp-Ll~WsDTSF%skU#T%D1b+#7qToZJWM|C=J zNk=}&(?yJ_j_EG38OCCFOM<(QG)-kyq-a=G@#KL{CBv+GMuxM>!$u+E2N4&rl?pq7 z<&nO4dWb9~N#{#I`Mu>45{}9BMH$HD$m~VnjOCgIY{fY`uv1( zdY3p)N67SwB5KmBK#4dAr#xF@bhMj=Hbl(A!YMhUC5ck_7tE?lb1d}$#8B88Pfy|= z)8MO8O}BfS7v4sKCQd;mqRF=m*lV)YcsmUXZk+)S1lNniWo2 z^#L~99pc6|vr*p!rG2`yC$#G1*7{7lwzL8ZG^lLSj5(^8Fg-BfwQYwiI-JB8` z^QELC#K5_5?A zq53Y!+aouzsz@pvkM{+z02f4eZ(Xw*PP&q7Mm@xKvixtR^|E$pozz~DY&EeWH5?>7 zSzSkFT}TzMDHl9_2)08Xp2j}&*{uYt}}@d zeizg04FS*`H)j9w2tm!%VAmWU%(ErnTo1yRDWYNHK~M`vvD#B7_&`v+)R6Jnm70n%+HC zbGK;N269H@Uz><;Mg4QWha; z0!1=(RCHV?Tiu?23il&NnPPTc)xWUaUWIol2PqMZ; z8@eM81Cw_$A;~(+=O#H1k@+g4Odur*zBSMb!+Ao*$G94n&y2`A_tafsLLwJIfqAtZ znh=MQ&5LclO5#ye*T{m3@6D0yA&G^3lp_ozM;su)V6pHtL4Eh!kg;-oX$)D;|7Z6F zRU9GadG3TWGdL2L+^$_Rq|7lv1OeUL_l_3Mn)qH z#%OPn=>t8ciry2B3Qx%{UZ4Qjt{_e3Qi4p8NKjoHV0R<>8JKZj4Awi7x-48gk1vX# zmKA9TVE%dp?g)4L$WNbzH53{WoC#u6{3hC*AawI zlLBi{5h45>ctMUZ4IlNRPCdEen3N<6&lo}`+&`@hWP?z%k|D6I77VdMPV#)26AgKX zEM{=j2(rseXR7GDX@@B(Mh0ul6>>?^B+NuKr;=`bSaYHhH_Df5tkW*fY|d|gh5>aW z<~xJ7aMP7kXL7V3ro%}JR!D;GrG|=gyR?9@p#DhQSVY5IZJ@-&o_SFc=nkUt66la6 zfozo?dv3b6QNDtFeX!u}(4{&S-FcB^3($iPPy;&cp(DypHF{Rh?k- z`21)x`sEorsmX>!LbC-zP@>BwoUrEA%(tCPbXImsgr&pCoeE(IzW`P^%OLt3No%;rNZvC40G>>eHQOX{7Ypq&s)Wu$qta#Ys zB;6ZhvvQpzXFpd}hG5n=a4zC8i)8;WjYDJ@*6k?j2M^Me371#Eyzo68M_z&CeQO#~ zWhN9Rri|DSjABmO1l+i!peggPoKDCPWER>?eA03<1hy2vQ(m$%*p)qS%EdPP3fk;m zO7%M9v177cP1U6ZFT&92V@GC`y*F0{4xG;;Q*<~sCrw}MgeI` zolm)CQVyA$`2lik&URRVK9!HLoP^48MXReggGN{7_(-|2kmqii%aRQraHTTy-D?0PS+F?SZ{x6lFeZwI|bM+{Tkf+Ozo-l?%&<-dBU;!=usn4oB`QY-{&DZgDP$ zAM_Uot@h~Q1eeej4>*xu!0!wAn3)d|euEC^vx9p#J6g8d+`p&Q#@qJ2se6Os_EsBJ zY4|8+eS1D-gum5}58QKE4n{beeZpmiDBM3C#QGr zwe}pO&${!3zfrPw@MHz5Y+WtsRoq_2>Bc>@yp``?|%)X>m^N zeDA-gzgT-@|vjgq^>&fe(DSmh|nv z!u9_Je)RjFbN#IS&>r~aPV&{D{bkVqqYHX~wRXJgh9_F-%i7=IqksJt8G&)_g=Ps z_SIkThKE@Hx8KuWto;rN&wGW}{~Lbu`#<`X9&GL7Z+e~aHoX2ng8t|JsK+O*<7Ycd zc>RCj2ePakcJNm{^59R}hVyOLxAr*`0sq1gY>Dkip+xK5Vf8M|Kf8_c< zI-|dx?*()w?^yqLUH^Ao|I2P+Y#Hpjc3;0nU;p|a{9Vud!JoA?J)ocR<9{g_f9r`m z@SpKha;FxBeWQ_qy!8=i3c;{f*#z>;Fpdy`9c)jduM*Z@BCK z_PhEmp9lDT{Mr23eSHDn+1T|+_y6D8UX3%~%3S;3d<`Fp`d^K7gqLifu2b-_^*`j+ B&XNEC diff --git a/src/crypto.h b/src/crypto.h index e7f082d..127ea14 100644 --- a/src/crypto.h +++ b/src/crypto.h @@ -6,7 +6,7 @@ #include #include -int hex2int(char ch) +uint8_t hex2int(char ch) { if (ch >= '0' && ch <= '9') return ch - '0'; diff --git a/src/main.cpp b/src/main.cpp index 2715561..c8fe4b1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,28 +10,28 @@ using namespace std; int main() { // vector transactions; // Vector to store all transactions - // Iterate through all files in the mempool directory and read the transactions - for (auto &entry : filesystem::directory_iterator("mempool")) { - ifstream txn_file(entry.path(), ifstream::binary); - - std::ostringstream tmp; - tmp << txn_file.rdbuf(); - std::string txn_str = tmp.str(); - - Json::Value txn; - Json::Reader reader; - reader.parse(txn_str.c_str(), txn); - - bool check = true; - for (auto &inp : txn["vin"]) { - if (inp["prevout"]["scriptpubkey_type"] != "p2pkh"){ - check = false; - break; - } - } - if (check) cout << verify_txn(txn, txn_str) << '\n' << endl; - // transactions.push_back(txn); - } + // // Iterate through all files in the mempool directory and read the transactions + // for (auto &entry : filesystem::directory_iterator("mempool")) { + // ifstream txn_file(entry.path(), ifstream::binary); + + // std::ostringstream tmp; + // tmp << txn_file.rdbuf(); + // std::string txn_str = tmp.str(); + + // Json::Value txn; + // Json::Reader reader; + // reader.parse(txn_str.c_str(), txn); + + // bool check = true; + // for (auto &inp : txn["vin"]) { + // if (inp["prevout"]["scriptpubkey_type"] != "p2pkh"){ + // check = false; + // break; + // } + // } + // if (check) cout << verify_txn(txn, txn_str) << '\n' << endl; + // // transactions.push_back(txn); + // } // set s; // for (auto &txn : transactions) { @@ -55,17 +55,17 @@ int main() { - // ifstream txn_file("mempool/ff907975dc0cfa299e908e5fba6df56c764866d9a9c22828824c28b8e4511320.json"); + ifstream txn_file("mempool/ff907975dc0cfa299e908e5fba6df56c764866d9a9c22828824c28b8e4511320.json"); - // std::ostringstream tmp; - // tmp << txn_file.rdbuf(); - // std::string txn_str = tmp.str(); + std::ostringstream tmp; + tmp << txn_file.rdbuf(); + std::string txn_str = tmp.str(); - // Json::Value txn; - // Json::Reader reader; - // reader.parse(txn_str.c_str(), txn); + Json::Value txn; + Json::Reader reader; + reader.parse(txn_str.c_str(), txn); - // cout << verify_txn(txn, txn_str) << endl; + cout << verify_txn(txn, txn_str) << endl; diff --git a/src/script.h b/src/script.h index 57d430b..4af6c70 100644 --- a/src/script.h +++ b/src/script.h @@ -43,9 +43,6 @@ bool p2pkh_verify(std::vector scriptPubKeyOps, std::vector using namespace std; +extern uint8_t hex2int(char ch); + #define IS_UINT32_T 0 #define IS_INT64_T 1 @@ -30,6 +32,13 @@ string bstr2hexstr(string byte_string){ return hex_string; } +string hexstr2bstr (string hex_string) { + string byte_string = ""; + for (int i = 0; i < hex_string.length(); i+=2) + byte_string.push_back((hex2int(hex_string[i]) << 4) + hex2int(hex_string[i+1])); + return byte_string; +} + // Convert integer to hex string (binary format) string int2hex (int64_t num, int type = IS_UINT32_T) { string hex = ""; @@ -95,26 +104,24 @@ string sertialize_txn (Json::Value txn, bool isCleared = false) { for (auto &inp : txn["vin"]) { // outpoint - ser_txn += inp["txid"].asString(); + ser_txn += hexstr2bstr(inp["txid"].asString()); ser_txn += int2hex(inp["vout"].asUInt()); if (isCleared) ser_txn += int2compact(0); else { - ser_txn += int2compact(inp["scriptSig"].asString().size()); - ser_txn += inp["scriptSig"].asString(); + ser_txn += int2compact(inp["scriptsig"].asString().length()/2); + ser_txn += hexstr2bstr(inp["scriptsig"].asString()); } - // ser_txn += int2hex(inp["sequence"].asUInt()); // DOUBTFUL - for (int i = 0; i < 4; i++) - ser_txn.push_back(255); + ser_txn += int2hex(inp["sequence"].asUInt()); } ser_txn += int2compact(txn["vout"].size()); for (auto &out : txn["vout"]) { ser_txn += int2hex(out["value"].asInt64(), IS_INT64_T); - ser_txn += int2compact(out["scriptPubKey"].asString().size()); - ser_txn += out["scriptPubKey"].asString(); + ser_txn += int2compact(out["scriptpubkey"].asString().length()/2); + ser_txn += hexstr2bstr(out["scriptpubkey"].asString()); } ser_txn += int2hex(txn["locktime"].asUInt());