From 575e6ed938b890eb5b78e6d5517b84042b8e80e9 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Tue, 18 Feb 2025 21:09:09 +0100 Subject: [PATCH 01/26] pallet-revive fixes - add check for precompiles addresses - fixes debug_call for revert call - fixes traces for staticcall --- .../assets/asset-hub-westend/src/lib.rs | 14 +++-- substrate/bin/node/runtime/src/lib.rs | 14 +++-- .../frame/revive/rpc/revive_chain.metadata | Bin 674072 -> 363190 bytes .../revive/src/evm/api/debug_rpc_types.rs | 3 +- substrate/frame/revive/src/evm/tracing.rs | 2 +- substrate/frame/revive/src/exec.rs | 39 ++++++++++---- substrate/frame/revive/src/lib.rs | 2 + .../frame/revive/src/test_utils/builder.rs | 5 +- substrate/frame/revive/src/tests.rs | 49 +++++++++++++++++- 9 files changed, 104 insertions(+), 24 deletions(-) diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs index 016f46d3c556a..ce661340d2199 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs @@ -2370,11 +2370,15 @@ impl_runtime_apis! { { use pallet_revive::tracing::trace; let mut tracer = config.build(Revive::evm_gas_from_weight); - trace(&mut tracer, || { - Self::eth_transact(tx) - })?; - - Ok(tracer.collect_traces().pop().expect("eth_transact succeeded, trace must exist, qed")) + let result = trace(&mut tracer, || Self::eth_transact(tx)); + + if let Some(trace) = tracer.collect_traces().pop() { + Ok(trace) + } else if let Err(err) = result { + Err(err) + } else { + Ok(Default::default()) + } } } } diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index d90d103fdedc2..bc3fac29bbfae 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -3744,11 +3744,15 @@ impl_runtime_apis! { { use pallet_revive::tracing::trace; let mut tracer = config.build(Revive::evm_gas_from_weight); - trace(&mut tracer, || { - Self::eth_transact(tx) - })?; - - Ok(tracer.collect_traces().pop().expect("eth_transact succeeded, trace must exist, qed")) + let result = trace(&mut tracer, || Self::eth_transact(tx)); + + if let Some(trace) = tracer.collect_traces().pop() { + Ok(trace) + } else if let Err(err) = result { + Err(err) + } else { + Ok(Default::default()) + } } } diff --git a/substrate/frame/revive/rpc/revive_chain.metadata b/substrate/frame/revive/rpc/revive_chain.metadata index 80f1000125a17482c2f3f052412b7ca805f928ed..0e053a0dbb4d3101e106f539631deb6ed2d0b712 100644 GIT binary patch literal 363190 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 aYLiUyaEX`bn-m_o6Z6}4PTl;b?EeSYN6E_o literal 674072 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 }w~oKwpTLP3tAsAX@md=?oBW#0TXn2B_^{(vlk zKh zG%m$V#q4=OUbFFbXV0(Q)$A{8_5sw1nJwX4L|`Or4)mGL*iPJzlGSziiti%kVQu4;RwrRhg|i7T30tlyRz>Tq9swIUif)G_ z@Vq?P#2{+w5GHpNaBt#r{=QbGtvbrr92gi;3OuKD6zIZ8x#RMQztt4IQS(#pJ0hy<`Zm|{nCHoH|bqF)TBb`ChvHp3&8Z4h$n3T+dB;-mAlo z0#WSZ@OqY(!2%^h3g=y{hU`ZC@~9=DP|JO-rShN$xb`S^#N7Y}MCZ&F?>C~5M~NDh z60fyCWZa4l8zq$QE9_n}kS<{YTau-3rWil7F-ywoW6il{`?#XN6fz8|tq?<&rWBEs z)SND%JMYaf4iv89L0eoQ2vidb;1FtE-P#oaed;%aN3soWWxUi5I2{C#~3Ip%=5jA7*#XP7v- z6NLtS^5xa%lfdz`SYyn+yqf3suj^CSpqEm{^W?o302ZQ>;TYEd#TN!93M&#>yY)I9 ziS}I;>@dTDoSN`qQ5(?0fS=b(DN*CksbOP|c#FG4#kqBK63twHE~|AxtCVcT(F2rJ zRK;DVO)$g?Wc0o$RvXQ}VDX$vz)E-g+OI~g#&)vTV4QWMqgUm9&n8o%YC z4_jm>WOJG*CuB=1{?my=<=HS-D$VikY?X%HdiiZ+v@{c_)|73gwma;u-5Y&6pY$en z?j~CW(~8XE$xEivgWBC|O^=|g(c=#_J)-L54dRP2A)RF|6-W4m*-Hugl=VDQ0Ylm< zz8go0VWc_5hZcRY&T7J7x}WgW?lm(fIm;c=mrbk`T%m9VI^#wLXcrT5WZDG_c|6~pUhoJVo%A}C?(YaJnPo} z6EgM_l8coeK^Y)mxku1P4B2cQbSXPUqfvl6Nn3+#q{~B#)K7SX zxeXM^NoSjDUm5jCcqeN!?&nJVoPyR4l}6)@t=+W3lTf4$mFPM>scd)3zVPiYwXWhm z0Z9ObsDErUwYQt8zUuw)Sozbib`MsznhCN}L8^CZm6Nh@(HWmsZ`Y3&lam)qw@HZ4 zS_eH>4%4*hAdI}RdNK~ITu2Yoqq#6l)k#me?Bod0DTSBXurvU$>Wcb@>Tqcbp0}0W z6thKk2-(GK#xCvT>?W_OCQH^gY|xydSRV|$OQJ)b`R8@$U!P}hJ2^Rq+=@roJHD~* zf*ZA|eL7M}ERW%8Bd5RG)Yrmz*BW7@$>$f-Q_vomCH)(2$u$=m5@kt8@PExMgs^3 zx0*;Uxi_q6p=cBOckz9Jv0n%hjWl3Y1Bs&OM6*6NyY!d^K|B62gCytf(nm0wJb-qf zLGw>WAnj+Xss`nBxsnIWrJ@`aR(x4Xom{FKL?$y>iRSci>=ilhazUBcqv)q{VtI_+ z+g__(YA9)lF;u+5Lt2w=lC@oKK1K=7$I>X(ns_dfuzK68i>;zlYF}+X(#PZ)qCgH* ze1jWi8AwKfROP{}=9mH05 z8l}TWnEpIWhr>i8GI1!3{OG;(pa3TfX02mE`WD=qytuuS3FW^`elIf#G_$bFDq#=$ zX)ZOKTjoa4ks8gC`b_9yRJm}4$+1;hlbw7pMPUQv1K22&&-f6kC=c;FC_^o#XsK(E zfZ=x(=*laI+J<4>W-c8LBEep%WCQ~jN|+=e9ZBP%1YFxf-R8e3r!2YiWN_n(eZ~jo zMPG2OIPz9RZ&5Z(9zX_DZ3!=R~+UZ)!6vGF_Pwge^>GQV>=gd$Z?8P zaoAJt**ZeOAP3E zi_;ZBr)+guG|p4lpdeywpNR()8~BsH!U+3@3M1^Z!U%ub_tc+_4L$Z}AOQsw{_KvI z^yg!~roR}g*7WCNdkC0eLs{vasd1ymWH7XHpK2}`6(NH-eM@gizGbpzYHVN>2tuO*ZUa%HDPXf0S)<7o428%m&PFn;KQfiGZseT(!#I}3D! zH~gx*xELF`IjF57F#EX^z+5nXIw-^K2pKOQVJt$7FvTY&z=g41g_RKiV8WY97uGq} zj<0#@1hzVzsfI8vh>}AZquRBnT9*3R<2zu|w2ZBH#qQKg{2 z=<)noII-r|*S)3PM{{pGDvZ+uZ+lnyI#M;F&>g)ywR~*>CmZc0pDfGo9zAvKjD5JX zL7t1EiJRLC;Q69t!|lHsE8jdiw?)rY63ezvq_6L6;C)AV|9Y(a_R-V!=bgR3 zm*k(z+kZ1wzH#(v{dGrg7k@Q2{*r1)rA<_uyN!l}e?2xa#ml|{FSL3aZ~e{Kcz>%% z+rYu@;!>}(u(+{J)6QC>!@ngs!G6lPQ2Z@?Y3vb%nmxtejg21*p0`9W8R)dQJ;a=z zo3t#>9&y*6&)Ms&JVDFd;PS_z2&p+$VvGHCSBj}GomF}>_J4$9;y@_SqLlsYH3lQa zKZqB4=%$p=EXaw>C3j$^gDTC7kx9RQ+MECpvZM%W(9H-PY(jk_S_R3XZQmC4nbE1P zhKE{zCMKGGXV+bN8)6WCNYutQ8IM=y_!zl4oz|CK5UKViW)IEXhK8m32mux%w)S~1 zPHJDKSrI0t^!q8C(6 z?%0pAOe)wOcRe(sAvdpM)746K)-u7()SfMVHqW;^2|j%gqIgO*smEzxNd3-%I{}uj zn^Hq5D=C^I9-{<`%0{lJNVVux?HZ1xbd7xnYM`m@UK=%PhQuX}J;&POW3$2z%@nOH zJ5-vs4XkqN6-whshl!{QpZ;#QZmQ`S@8!g7p>mFp%H50X(IxrRP@308gB zErR|ouFoH-(UUV!87wKiZesI4heVpeDM9gU^uV>I4Jq+&lsvTQpS_=ot2M$RatYB%k^ zWh5jB28$#eE;NGH*WQdZ+FnpYC-X_R8g1I!MrZ22UPk*{Ay8xN0P!$ zkQX1>;UR~iG)PX`?2eavHrICU-6U^1p#l;=|9-5TKAt~Oayl}N_6^kjeD~QWiF)x;Shelnn@Y>0sGeVBTYA7@B6*expz110@V4y%5!0@Wj(f}<83G|< zglFkPY>vw3-qYj@P5zItMN4Q0waAm>xQJB{CEQxIztN&Cn`m>e?Gw%-S6{FyXuZ85Guq}R@v6QR&6Lkp)64XzlmfwE4nW21 zLJ!4uJ1T+&deJQvY1kU}=*ND~X&iY+3k}?hRaUkLy;W^CVW_Jn7U_zqv^vqC*{1Bn zkH1coC^1KUwUDd95|@lYt5Sp~(vHx|o+@h>`&=es=d^dNtztSAW$<4Fw~gA`gd}jG zH<|`fX;c8!>(+@}UsVk?^JIc+1Q}Z@io<@o0&?-5gWtZ8L2fJPLjcprxd($6obC{7 zSf%7PwY1}{RQ5G{|6RjVoKQ|^u-hwSj_`u)y{=u@@5hWayt2pK86gOz(?Ncq_YH9C zZ7EOTWI3-Nm#Mx;+)Nl-Msu%p&x2j>aLq4u=d-AmCtbbLD$eE#o*7l&CI|bHYD;e{ ztZ!XfSzZi<9kW<5zIXk&ela<$=|5-YkK~BI>UKdFd~MK7KmlPLVx!#W`2ssKs0Sv$ z?5;!5*AU34h6_W|`q!z1=uZE;vk`rRyYEX#S3gyF&c$PeM22z7!u;mobyQsFx!N_< zl`%B3nuIOv5h|)`M3)!{hdhP&{|D()eWUx3cyMt z4dGKmk8r!Af{lKs!QsFVm1s(6folGBHs2I8(qnly{GF(--6D)t>t=(M-3rR$W2!!i zxY>8(eZ(z2jgnKlpYe1>2sMe``b?TN&15ka*typ!F=k7-SkfnysXXe`7RT;_?^*p+ zI(pePB_+7Z^FW)>8sT?3N3VTA2n&mqIaBocC1)GqC`*NgTg6vTU7k_)f{M>Nf2qN~ z0vvMu?2iwaZiRf_6CdkmHL>Rr;56X@OQirfxNpktEvd$Vy=G*s0;9e6O@FUO51oRE z(l7qtYuW$3mo>LN;qFuM%tYn4ZLAf5Jm_|blzV{}`sKLrf4EHM*6GgzA@L%S99_^FF0}1tL)WDr z``@z`vX-Uy+QY%K>{tOcGD4uRB;h)NaqXpfTYR5lB@(C-H50F|IQ{pUbza|Dk&8n| zo#f%f@GEgbi))<->Se}yqhYk_xCO=DnaI8G=q-udX@#l_0rECD+CHy{MC`bWVH3>Z z4tg|Nd-KXN3by5itu9(7BKNa7VG_7WToe#?x{S1{*JG+#?{ z9CRyLgYv|oQ`(suL#VhT6WTN{l!->A$X6~^GE`WXL7D-Y#x5BigMwAQNEQ@N0uk0H zyN~G8)tRe&Rq3)2!hCgx{1Z1bFFl<+2ieB-Gstk7s&1xC-`VsM3NoaX7?@6`W%_Wn zKiY*O@I)CvzE;L5&QB$_p&)A~VnG8FCO#P)cDlB;xjL0!N2?!)kIbc!w@;ZR`$jpf{bxsT%_;uif8AgK9caM{_Um5+qe@CCPuAJ({_;NwMg+Uw1ynjVm&c?dtl zpg%in3AYNvU&Z-+P~m?m6q@kDwd=5pAD4$uM|AWVeJ;vrkGR&+{li#!w2H@nmTx{< z{L<0y5f+F{YC@$%@ie3aEaC)Wn|h*OOrJTMW4C9&&ED6%2wAimucX2xG`IT})^0t8 zeM53^`((dI(pWV(F?4sUtJS8hRd*w~>WE#!$lPro(|BeB^2}rMeD%3DL%+A^&LpP>(D{)-=7|hSoN?uX_|R{`Vtdooa^Uek*cn)Yg2? z1ouM(;1u!q<2MNWj=w*AqZmtnAHG45bA12AjbeBD``2$2^yd4AzF6kNL!r!vEt2^k z$Hq@YJXVUWezjW<$ReJ)Xq+m_=8RK}YnL$okC!v50ZBVneHvYvQ$fTi9Xn?6Opy^l zJU5}c6Xncl8|k<{6-E2gA}Zp7)snD3$81-Z*TWE7TSA<>3Rn1JR-1@MrkMU}(IB3C zA)QE<9@G+J@La>z55PNHag1eur_r*BS4O*tgAPA9ghCjbHWP2tLRgZA!X)i}IZyZU z<25r#>J_l$o^OqN*c*u#= zGb?IK7?=^-iK1p!RWFD)+fjtZ{E6_a)gg7?o6YfgDJrmE$gFg`{_qgMOu(_J0x6ywd3{(u3u{d1(Rl^E9=Bkzqo+Qqu;GvtNbfu70rXVH z;_~1}^j4QsKRJ<%&^5WjgnY3T5u#dnIpTu8k^g3y)-715{3c{4c77*xy9&vMp#DjN z`qKdYH2;4#1O9t_|FmVtLpKz})uC&ZwHo0zU)ok4)wFNr0O?8@>=-B8oYtt5N|5`i zgBL3hOkMRKh0;l^6`oWRrbyZGaw=Ed0A_szwTke(d-(4<^0PS_8G5nkv|YQ^Sawav z%2pH!dvWwjteV7IlsIZGpOdu#jmfY)LT9;Gy2*A}tzxch=S{S64q!sUke?&9gg`TEt6`$J~*V4r|(`T)enAMd` zR^EZULZ>c(-touG1#pHDQPA|gXSG_A7aVlYx`nSuX~#&+D7DnYCf(+H+zVKe?+*zD z9t6gdLK@!2W@m!M4K!uFUqT1GAR(sFlsiPN=O8Ho_?qs!W8};3>6c4ra5}1r3eO-w zqu{$;*v%i=03%R%LeC81z!l8&)@2fUrrfXa1nwi_Mj6qcO~FZFmWe_y(jhV-uPcsL zfhwJP-F%Vcf6bnL=TuU{8mF@PVg=5l_V(J|CvIZ- z+7avL)6y1P2y%`$UGDq1iBdao!u#5%%i~t+D#e0pUo0|}Oml@6FIR1cxzY+|w$c41;#S3y z5XB7nt;$|Cpxypup$&Wermx#QMT83k6ONd)oyNumT#Z{;G zH=lZ{c^HLAzG_i-j!u9eZxf%KWqS^a6q^Ggg#^c6pb&xiMpO;0>`T;gxHj8&!q?vzVtZ;FFCRYrJ*vD~J z{xsXr56~#D^ulK3<;olC42mi9=*JkNyP5f74(SnBzau2~Or0vv`8ziOSjCtTRFnw= zK>7tF(W*pP*xQ95K2F4lLa3GcuvF(H)AWxbnxlav)flNrVR@d6(0^248g*3dWR8Sf zx6M-6dX499_pDmQ1L;)i2N4h&IEtN*;oc^p|EcMNH_Z$EvvBNBu^ucMNH`4ze*T>AUY3 z(%j7ajv?)CTqf@r(r(u{gK?XB&_Or=OwRBqa9ZlIka(RQd3_T05BHEQnn)sd8Ksp)+_}P%Fg=IoY;)}g8cTLpJY<{8R4}mBS!D{Z z3!jU1S84TfV=1rtf_fX)-eX?6FnI|u@_6MomB}7&UYnq}OWs^g7TsFLk9q)G+F6R* zTJD`DFrB7kl*`qc3Brm8c<~Z8Xp4c@iYqs#t=UW$u{~cpPb#Qhp6yogoQ7)KlQ>Wa z&R$uXJt5D55=VeY_uBgAHi1<7ijU^|&Hj^WD%RSwl93hgTg~TnG=?G)_fr~h#7<~k z4_fru#?~r#VNq>a|G z-qxjS%bN>vvZ|Y{Ab!8M9#onF$95fkuq4QWr}2hx16D2@70z!`t<&qUrmF(*YIlR^ zCHcEK(TnAr&@j#7j^XRe>v9YGWv{uD6}e>h3pf~xf$s4XX2*}rA{x>%m{9?~o*Z%O`ewTA=JB6ex1hVgW1P;!$wdx(_e zUde4rAtyXc)iJa$zO1ft3V7^ax;lci2vyGYUqNXQ92YpD`a$L0i4=8d0EpFVfGn#4 zdaJm<6wXv6BhiDrdM<91wn0QuY_GZNag=lF6v60hb_POdzH(;zIDT2xJvqKVg?k(~ z-&i_iN2S)Y!#gEMB)$Yx|3XQSa}EqX6=P>l6NqiBrB(ymR&zecHqf-0xqC1P!rA3-Bdv!PKW2! zGuQ(MDh&Hc6CRT|g+g{zu1la4-}Bs}eA5lUwMp^T4=rem?)JnsWo*Cs>^si=x#mu@ zS0h^`jc^ACIAV6ca<@Ho|7OL!oU+A!eKdleAj%%P1&?ul=hr5qWR~|TcEi})Vlcp} z**w2|ZJD3~;lwA}L2rHZ_QmP*kSg6V%ZvAK=>U#*IV!p-j5**M7!gfql(-^JSSzOG zOetlgc`S+@qai7)4z7mp*MBsBuAv!6LT6}Q=fkwqLw0i^=#DBwI1%^wFmn>C8&Po0 zX#Tv0XwdqBuDEI_>&NPP-TGn=lxQ{+adjbQXOE`~O++;N*{^=;9wP1c-@o0zE-|J4 z-f45@=;=fIZw&r;&IFGO>;CiMzLOfauFyM{Ybd9Us#){j6!TcpCg!RK26^Y8xNsWZea?I|3DcVPdy*1r&8RIL&RxEAgu`p7s`Q2Yk^6I;oOBfBrFiMO{@7X)ej>A zIrM>wc`WxnMHHcmdr=>DMTCtjX(6*-78Kdq`gFD{$lJIksT0`5=uQi*5n&)_z{L4s z+D;8Z&6AqxD6$1#CR%CY&~1u08-zA0?zxh6jWR29z(`882^5f*y1GV|j_!riDqg6c z`?$woIMQwiv&B9!3T1!9vNDD|o4KK^Fjf5Too`fk&Ygz4@-rqW_B&k&ue}v_4 zT9W$)y#uCMMSP&y1mRM&=h0X3Tzt2C>Lf9XypMS9%20Gi7M+SmsovBg`-Q!1r*255 zuZUtQ)CwH|@rk&(m6iP_T74~XtvIZ7KGH^1lZBzHBPq*tHCTk8UX}lMj%-zmEap)B z*fy(MA<#y2DnjlZooavC_|K&ip#ECVzp;8Nq}gs>RD;b{eN(@f(MKQy=_ ztQ22TRH~gzrC?juhc}v9N>N_@^!FCimg7W-3;VN>>k4&0H7&k+v$=hMH2qBPIyJ+5 z7ZiVRT-=%dj{~6{f8DkBo97wLbB5rQ2{t}x+oX!rq0%4 zRCR=+U5`O5(I5%@Le_Kerr9_Qo5UzH{J*oh*#g+m&6NMwC?^9UM%!P;CN7koTV=-@ z&uV7Ic6!ce7O(6f;_2dL<4E;NmC^@^x~c`!70N>{EO_xi1R)h)xfw*xY555x(;joL z1{|Ob$xu5UOk?kN^T9ZRdVxM)fSrq})Sla=h7fIr<9L3u<6_QR&ykd;B(jV^-7mJ% zXnE9;)elRHS##+;1#0WqG>mH-`LJNQJm@=YHB*58@FH&tZ(DzY z_l%|6`Z|jH#=qbf$xx#{nM7R}tKk65`}W7bH}QP`R`t+{UKn*!XST=j=ir<4xmr+S z)2nOrEkwcFQ$Ab&sMyZ6%Vnc{LwRo}YY!5#xOVwyl;oXh4prc#&s=#F99pnsXdmZy zXoBE9Wh_76hA4`O`wXEwk^u2hduf;E2@DMC`^=rm(mtck~P}%P}75%32(OwMdHdf zqzha2z+(4AB{FIsm|KWL9s=#c7FICI+ARJ1!?>LK4+vv;feA&GK|Wbf%(zHv?SQu- zf(yAh!qE(~;>!<}QODOhlBCQf$$7jnozTZD5bYNOnJ&b@Z8Tc!h$^V|P|1B4_S8oc zYeHD^Qdm_L%=8tn8ot%=oemC$K^v`uu(YnaNh@BP3Kvur+@YLxxuT|Z3rxfE{zrFd z!IrS#^7Y69*t-rs)hDuJjt!cf`?4f=f)@B2=jNV2aaMLl&43N}N@qznGG(#E0+mi- zhhaAX2gwzs8mK(mh7$eyhjoUP%#N3+wzaC}dEy?L&QyVD9mO?U>nH`pnoBTJ+u%S2 z2w7;6lC2P|4%6KN>E|j>O4U_(+j4DSD!tBSWp#U96}1lzJwh6<#Rmbdk@#`gM z5kq>JDL{~+yh5=yR*%{}F*D7%)V)dK zAKhCvx-%@XpwJNRhHLmL8pZn?NP-&uzR| zKG0~KFCT0a6XiiOQ3shki1PpIhba@{^;$Mz3nlO1II=|8hbdt?{o+jX{C-@v-gv0? zRq?=x`O^X9GvVlGygXafWN$o6CxiGV5$neDMe$%`d?Z?_)zwsnxH?2W1hRCO9)IGA zLr>1m)_!@YLBpzJoXDQyVg79Fd7#0T-#=oNJ3#4?yMofA!%(VyRXj3c{t9L898Qng z)*jK;_BY0lhSPmh1+um_`nqx@&3@lZPfZUO;2oV6ZlY)Q(Ur2^25F{wN==$Cbywls zi_4vj?Hv`Wu@m1oYbjJH;#iy_2NAYs(->Kb)p)^bia+BdJ&_!Tu2E2gv6(magd59FM(vbmFbugr@POQ> zdNb@&Zh4o~EGyN9i!F37N+rjQK&3j1;?W0d(6NFOA8b|yvF7APiIsSD%*ddGX^Dj? zYn|F^R$fy@?nL?1sU_P9TqA?O-TDy&*1zyku_(f%Jl8WZLm9t(JfEahOaXB@3pabk z*F6XB6K(sP2G1d>`YJD2volh$rGAuO2Jp2_N6?*>K@fIVsd_5)Qm^$wO^P$qbIB{&o-R8pV|PD7@A zLH?we%VCR60aLAOaA|iY%(`%gIF$}9R8IUWYX7XlJ!-Y7QRSt|?`C_qyPP^Jn`_9& zB!_4YdYkD_%do~lbsgak&EmQZY2GB-5mqx&aMPC!8{Xhbn_;`P*9gi)IV}qpeQ!B| zFVpn~l^k_?PTzfuuOM3$Njqy_Kke}~YBxBNuHDcWPgi&CxwW-dw${_*4Corrf^2GU zl4jUVw7}oHy25YOS32qY0L_)NduHo{Y>`B}e{8ywOTBN0Jw(dO- zQ3?2A9#Z?Jwl+E{nm69Gf5ZKte6D~54Kq7))q%iajPqQ(U`GNmh9d=?;IdIQQFiz+ zWJ3VJ`iaxcfq^la8s$1{A3|!iDA6`5cGM#_WpBf}sQ@JgP|?L5&qUTLuMX%mZq&;9 z9jnr!XDTw;$2H#=;F@!~F6VE`Ix#g0ovKRs)Asx+)yFOFd+x|_K_`hxqdDD?#Ob7x zcbEFu8ZGoReHAei&^9@VyKP47O=9<`NVnoe?9|mbz#H24z&p6~zq=DaE4PZm?3R}t zBV6GJQBI+L6N)1Ifg#$?t@)PJqJ-^mBe~(=1?du|Xv9jkqcO_jE3)|TSo`~ZH!%v2 z;1Ar`7NX>rlHDd%#~!+mE1*5suX`gf*m1$W={x1m51jJZ&hpZbNOZ8i#L=hwuIKjS zEMX(QbKi4y>m?=g|1MgI585R%lHm0Nbt&Mh5^@!_HcDPT+K(Fjv{jB$cXQ3_0|pYgxgUB*N=1Mg*LRhF!&FLC4}=B1werd_b6s+8i=C zKtp>!&gY}(CD{w%L7X(vXOg`K>o~dZmv=03Z-Bzy?uq_v=tQ>_bMuUC){oZUuB(*L zR@-%Gw92SW&@U~YO-FN+0Rm91=~vgdD~52Rab?f3Prb+^ocFM_Y_E+z|2q_d-(RMi zuk{EU%pIF!c7qDX#ZAQ5g|bai5qScj#dm$RzBO=mskt$zdE6Th(1AuSjcQzW zK_;X@6>G*>XYyJW`fZ&n(~QE?qeE_z`?J4?zAbMjXpC*UZJFo+Kl) zc*3nh%1W`kNkemAjLkV1?y*nG!=e5AoJ8K;%F2n|grX}B-U!h>U6)fYLMU$mv0W37 zmf;;l1jydtd%2c-gDQs_xvM#gGw)Y#2vepBQC?YDP^DO}gS5AtkP5z|b)?)2x7_Mt zUg_^{UQS)<^cGeK9^9NMr_QV_rFvoWK{W|5;dT-qZO=T>C|?h~qi&}8s5~z!5V~kx zL61`r2&WyTIOhq#Lvfi<$n24F^2P4r(XAtxCmRoyC%TXt1W_(DoMB zaTkT4MAJZ^C7&;^9!Rv@!iL+ePdnu%F9QFJ7%>LmCF(6@xa|7{Z(Pf%ZF~q45Z5nPRlBiF88iIi8Tu=QTkYnwSRoUR)Y8Kx*GZ|(L7Md zjTp}zkflu^1%k^*8k(;7P{^AxhXUdDtZWV|6 zcG9VDKw8ls=P_DLu`*SPuAMxNpj9Xy zPFk>))vjI)4b_As8LJpYJSHD%|yP+#kt1dRKl zc3uF~n0J=ewl0BG`#xwnRK&f`t!^viT8eaqiy>|pw{k4fX8k^aSB8l?3$wsU#8kk! z($5TkIxE;1<^hlig|<03&Q@5Hc{>gSX5iL81i_Ux%(-TN*YBGfYaG9{aqRDGoz*>A z8r0DLYs<7Ux8!jX$s&%!(pU&0liFR*3mrS&+Dak36uHC}=zHLb1b&JpgHA^f&eFk{Y*q|h<-CZES=Ar2(9XwD z<+Uj`$hBWu0*A8KKfzU$gG$5@Wc56?5oE0IJyivHF;<(m7B?WSC=P92p^C(Cu<;KGYWqVKw( z$PbYJx;5G?YoW=tii34mQSsHs;#4vD?r=iPqS;z+@~H8nWLAwVV17^2RdPYw9awFx z(b1;$P{{yUiHJc&MoeLVzB)&9YC2G%wIb}8?igmI&JjbV4B5&pkhEAM`XUyx^+r?O zWXhuSsCH@gUKv)5;tFw->;M{C{n*y)0vT#bOt-wMTJQQod$r(TLBvR$Yh|tCQPvz( zI{7?7V$4<7NFJfSsXtepq+OU^Zw*Jb)E-0Wpv+%$$ndS*Z%CBO2#Ii~qkygOjF zWv9m=4iOJVQjXNkhB@i0SB=hyUh?=@TY+s<$mq+kyD87MTm!0E+qP%LJn_H=9dFM( zSgJEq-zpGX8AT^!ZkF5G-~33)P2RPH@R~(+yW0}xGfpJ@ ztlXtWlnLG*ecKQB-}Xm>D%U+k5J$sLlVLn*%hYmCQ5+6d&07pE#=vuHDW85aWw@@)82A>uE-JG3G zt6K<$FH!jm)g6(U5;9ZKLDkGyAuO{uTRcf5!n}xfiY?2~QyIpKgW z6XihQvNlUWL2V?j5DSTcZ4ZfuG)fLOH-8VP^s?(-5}**!xJPB9Ns$M)Yi+CE(opmJblu$yCN9 zN3fRQY8J2Qe83#O+6Ek6_(Mpk^7IA|2&@uNbgW9{4L#qk-hsTN7;&aXTz-*+d`BVv z)`qz~d*7^()rGah;O*M>1sWx+R1nOyCjFO@&|Ae5rAfkdXnKev*Inn3C}Ry+bN+Ni93U^j{y5Lt8aMlA0;D_AwubGe4Gln#l}B)aqmyE((Ttsxdwj zk)6G*rL`fi#NG*g-N1ATY@Qs^p9_xwxuGieql1+n;E7W4%aSAI3J3v)L7GYo5=Boq zV>d3}98KVkcdzvx8EdV1Er8q}6FKZGgBFmQN`R`Kn5F{ikNDa+4Uqxgt`n(qIC zLYRSIYf=^xPU9B&jJx(w)Mn@?Q%Ho4B_AmR`a!$fan5?}hk+aXPSoN`q=`?+rWq{k*sk63WuLKCER#65>m&bSmGIF?#7gi>{PK&K##CDgO? zqA~s%BD_+cWVe_O+>}TcD~QIEk=wU#@h~4Uw6vh{y7^1SL06s-`aOk9D_++n&ygZJ}x?HIb-SH8tM< zSrzE;5oVF*5Y5DD;GZ!@`(y2U1J#qn;Ri|0P@T%4YRuGNMZyY+5*GEA^U3PJlfV#( zTHg4XhtI=%;l>{8RUXaxIO%~Y-Pri`NIwXo+Cp)vF)_5j$=-(LIm{3+xe$L3Cqu*! zedlz#$_+@#9YZ+OK8)Z>8Hpn$;kZAFD0qgD`2&XkwwBr6F$`f zIF}}mP;PoYf)23^G#?0WHkyRoo2N#p@feeK9t9IzbaSbNv|HEg1O#{{t@zenXp}1v zNPNnA6>n~zlKspZwkiU6e<{CBWgb*LsCW_)B|mDcGZaf-twLK#iH6BaWs*m~YSxnX zk`y4B5=IT{B4xa9iUf8`1V0sBBxM-;n#9nv4p>vetI6($_Y_pRXlq-^C^urOw0aA8 zCy)Ul!ixLy2h7Y*p|>7@)_?x4Q7$PMVOk;EiT}(rPhjrb|IuRC)aL|coiYy}h;z?I zZdcd@zO%kz#nmFMTtU{oA^<1DWYX*vd6wd;y!WftpboT>Zj%n_e#`FC0rR@*h`moP zc_x=)jVJu%`Tlln-3 z3HKGCql&d;!&GDAK2KjOqwB7>ZgRE}XTp+B&)IN9#>0SSpt( z2HgSi;@&5so5#{6%rosXY0s75dx(%{eKsLvCRr`YT!4}M;&4jTL!q}xsIC_2y$tg@ zMb-l9Sai&>pLXxqog5MBif68e2x49*N;iC6kxBcTQA7~FyLMoGZ5`{ptUnzrS_j+h z_Uf8UHMkAmIG3PLqye!nv$JHZP$xVq)wY7SEqqENU%skHf#a9A}{(C}>IN)JC zI)Yrd*j<6E8V2Cc&ErlC;n42stHPW z@in39@)~VG+TQ()P2&$S-bS%!@~cVQvhhKbN|2Rc^B?IL9uQ@6Fvd~%2WKU^CKYGG zW+U!&actEm0L%hrkT!c}6yM2(`4A~yRxw|&R^P)=nA_z#WplbNIRMfswD zWFA}V#eM%#!9&w4H9CICxpWc*mW^673zgsq80gBvBEEl`#`qSv0M7RGGz zzbC0h(M1+|ggHS$E?D=?qPa>iUZqXv$A1Hh{_3EDcUV0kUAWo@>fRA5F5~R7%?TVx@L;DuwV|3aQOHhdGJbqO+zcnZ{rr)1nEFBj_s% zrrOUiC|n2%T02>`&uhYVtNEhJY{^4;V4Jr!r6Yaw{XCWYm$ZU}p&}}6zG$~pu$hD?QUmp!FV~9|K9N$P>N~m^5x|l z^(eV%b`zy6!=3QHy%$PRP}bL;OLkXJZfRCw`4RzCzRO~^Z80wQf;)b{AVQi8j=8RE z66`bpb)KWm>%_LYn#Qo&uL1EYRW%Bd3pJ{Tz!KsshE>EAuQ0GaS;m31 z5pPW$N9Y2aMvfHoZ(}Hj)Nuf&>#F_D^$n##>luqXlB0>kq`t!zVHYs@77^A)i-u2T z&nT$h#$in~UJshp&JZKYClvrn6J>BJKjN4~m-Nd542mPYsV6o=xsDQ*pYI>>2}UX* zlEazEQOQ0%bd4j-wop5fa^lk3+Dh@@;Rnj3FQ)Za7+RaPc?Be?}%s| zFX7%l2V$kA>$syM!=}#yp69GBt&=L*gG?t&&zEkV;Y>HKFQ>*B)o5nDU+uCu5M5!$ z>Nk{RINOTrfJk~C;4+owM0mcy{S=}R+K(#8b;m?^K;BcK5MeLrQLNk>&!UHP*Ugi0 zttsOpW{jg6Ko{K0AIyGFuFf-7nGX`8G$EBj+%Ot5cmDXPQx;RL8mubrw}C)-g?Rkd z6Qm{`Xj5FIC~lNZr;@&N5HHOFqQIXaeC z$bA}LgkkUdb^!-+e;p&F7(i$u~{uXh8h4xFwXjE`Ej(4Zmoik6(_q1 z$~-jwa(NyV#hrb?RoOJcTRTug+Pq=&;;nQn=uBBf&Wn96J(&(k{C2(dNO=b1jjbP6 z!C$bqWlAN>wd&=zoyMfM>_&4aO69Wy{LdZwIcD>NqyX5e=e4m zhQ7)Ee`OCkYc06MXRi}Xuc@O|TNQ?CyHZgiS%=Hzz^Lz(U|6jWyo02A(w7LHE|pBZ zk=z!v$Ptj=rCRG5+cHs+Lin1~+|~Ts*x0WUj-=_GCVir&m{!n>B1*O2_6yfMkqe2# z>ccujB(|nmzn0a1NT^aQlE2pfbr?6+KmI&l5Dktbdqx}5Ss;|~{ceb?DaAVIjtG8gLlTzfVTAX!R z+ORRzO7(gCdiPTGX##BBtUm7TUZYk?_4(-fm337)rf3}?TiyKIMtLl_`6srHe5CpK z!HZ0~7aDM-TfH^831DC(`J3WGWBfU6P}%?~2|&o3G|r^&UhOVUR~w{uWcf1XFbNzi z{stqDT=)?F;$^Eod9iV^QCu8`>0Y$~>bVAAeldqep6gsc*eE)@S{4(0IMgTzl`MAI zhsPVmG9Sk5!-pHiHO*ij4mXNti(M)5m*cz3Z^bFzZ}$*1@DCzkNP_%!aHSi}G3(*ypAMf@(G-s_)O#qaUy zeg27c{63#1{1Xd#nP|-i{Szzs1AhA@|HM-M51)S7Ke3iSI22T z^H)3R(+7*Gk98LpJFlcKrivMUp1(>5#`M*rg(1Kgfv%jDj(-fu@uwX=z~E0E{g|HE zV~0Jq+y30rxA)nf+xqie_NR_{Y>)k^Lms=|{?rMNz1#lO@s7R6{?yryjoY8Ut3MyG zKYveuzSsWzef{}9`%@=4_MrW#;~V=W`%`B(_RIFCj%w^7`%~vM_AB+n+j>u}S+=M>6()`%~vJ_FwEz9md#ywLkxcKX<*{ zDE_uD2Kf(m4aFb}wSev4>G{8J6#SzWF4wjAhn;ThR5tlGCc}PK?kguJFRZ?T1hdNY zlh1U!Dvs4C_&y$C5*pKVdXPt|Omm&5KBlLCV{L7T>pXR4YxB%y$Yd9UnSO5V`U}`V zu^4lqr&Q^3wTqg}g)aWFZ$JOk7~0Q2u>tn;PmMj()SV`LU17~sN~3yQR$_{BeDb8% z1m3woa4~t_!|D8y5n*#>vG?TSQm@k}{uwgc)t~jKIsp66EM{!Z4&+}N<401EHkpRq z&5_l2&yHULY*8F#-*C;{V(R;I#_`lSribk!3G;H0GNy?u*SLN#Mn*EF1>3u_9BNi@ ziIP_+?Yxdj^f+wOyFZ+WwC|BYOpNJb7o%FmK9e52bKs9HBVXcyrld@}bug@YOCphk zT%q43!{UvW#G_?r7Sbwh(}9?X?BMpuan(Z7JSL%AL!6dQ!bt>kvlrWZd-nn@_97l?Lst znMAqm2IE>H1j7a7lcbWo1L$*~W`=lWYxUJNRYUVR?QbcJRlvu5Kt2t_(bS5A)I>TY zU~>kt?p9Hjdha&;2$#?bb#)L0Ob#^60v;_IGPAB*^}+KBMzjUhS-0R`CaRyJ4{mM3E#&$xmZp z91K{^;{A#Ml3V)HLhSslenEcpWr|ri)=Q1`hRG@QSjbV`1xnw$Nlc@}u}feTUBXeL zq7xfdrP!21<>O0T*E?2%spdem5(}=RL{p-4VJ{J6&g*6`vL)J$RTijRy9Uzyb%HH5 zC~aR>>e049v#6+3lNSm?CCydZ9v?Y5!)JOJ=%%q%6apM4bas*dEBulh-RqqVR~+g~ zO?OWxI_m1Z71Z>3DDGXO5O3f;l?}=rr_vX=_G?XTy`L!Lb8VfL$F-j4y17P|5st_= zWI;Z*?MvOw>#9wx!E~NFx9Wr)lCm6&Cblysg_4?xg@r`{Qdao#+7^Tc+f#th=S?|+ z&@?%QGrg_Nq*N$1(f|QOh#qtda<0IkEw2-3-=Q6cTs$(k_~x7_afUrb?1P73q?(ia zM6Jo7J%}CqcR-*-o$THPcGxAkzP3Svm8WePU^TX2zuf!0J&@=~b6S9trCo&<;&Nd6 zfAsDN)Bu|Iqr-lkEuq#x`>X=4g|KlT?WdQQR5%`W2i%M!&_x!$RLHG7Lny>1XpZ15^%kGfSxf;VlvAQ8(d!Z9T6wE=2w;%y5fKx~*1#JF!f`0kgLu zYwU#)<|rOZXID_l74u$a8&n*mAQkMgnQXdk?LPOz>?r7+iQjblGHH9=_WsskdH`9V zvo)VozJXiV5&(Bkes&}Pbp_L__Z)&h0f2YC`7e*!{HU#ye4&e8+&4W}&PP(Pkrpp_ z4#S{uZmviwI%@pF!@_l&LQF~3ru3_~HNgE%E7Ho(RW*i^;oF=aPy@+mjDJnsXgH`wKZPOtjP9MLb9;OKX zR`Fn|;qOX#$!prY`m9f4<*wk8u*=rWb!DciTWUw)Djw@ULP&WRMr}H>QMrWW zlVtVRq1Ium=f4mv1-;8YcQNHdC`c4+j%4_Hp?JNO40MEc4eBjpFdIX`wH(~MMP zWCV!Hy&GG26KZazJtv-h#<~s&W{LR~KQ@U1p+b3aE=O>%q^h%F{2M`@*ES@A15Z#B zJ9*&zLuJ_S_yN2PtFyB}C@Jcn3HFvvY>;H(5HWY=+I))TYZVXQ0X}7a+=6YUyMdA1 zgKHN08O=kYws8z?yfQ-BKyqtmX$vCPO-=L+jfewfW&Q?XPQkn%)G)QPN<)FLD)WL+ zf1}niA`UbGXm}Jq-82Xm}1wh&2g?CwI)fxmy}~wIQ0B zxcj@0AaUANzljve=|FqmZj!p5g-p2YZ*pkl zz9k8B1U`5oLlq1%QU1KSnG%Qq+>gENd$Q0dFO5;yzR*P*6MQa>O$`o!cUeLi}5`q%i33d6#lh4XF(hj`a+q*oQeJ? zEnO`W2NhM!$W{ADPIWpXVe6Rb3`x*rNyP(u9tf?5$U20eDs&>hC2U31OXRy6-sJ+5 zx_>6@$!|E(bHhS3Jk8F1p;~n7l*e3Z(o*Y$x^=EyuPsdFRAI(u4X5Q~JqNjXFL5ER ziM^#YH{&X~#qDBZ{Dpf6iVVp+ zUfGc)Y6YZqsq)j#==$K^18K>fy2Xdni%u@Ld5DUKU)_GV6iBkhY9URIs%|ghMkOhT zDB_;dFNqSh=AjjyatpszGj2JRxh7@6@e@VQYR|hdK87$|6VX4)AjD0)S^>Rwi|di zt1bQV_)`fHZndXmGn1qt$VN=>z*OvX?yh&5RvoC3_jqrLw)|`5v6iumh`T-?D@C{{ zXmgOh8u6=ohTpP?$?eyuDwihu&~+iDJLgT(M1}+cy>_*|?eygc5n~%$a#D{nEDA3mpINr=~Ax83R_LuLCn}Ghp@s zXH7oK2W-iCsYopk%NP{POK%LU_5)#whn6@dBJ$`y*9UGL^-_=t*xTb63^ynnyVP4Q z%M%vBRV%?l%-9t8+{KK)vh@2Uji3+xI)s!Uyw3K5M^H|b>$Rdt&k(bIHj<0gDU;$Y z$6hXvTjf`SuV2sph+$aAEB-jp}UM$+mp5Ozu>+8|^n(mNakapaNt@oc??O zUu;dtNbdY^Ku|44H%Tn+2lLCyVOpGM8uVU-L|6`L>!etR7mt)%ijMHWg#UYGG+%m!*S>+`*mA?=&fV9KIDJK9vb{=k1*EQD~o(4&^oq zZjH_S=#&|S-BpkYo9W0Odz8^Wiz=|hk!Azo>sKKb;PbiK6k2QY7uXN3pNfu z8eFi`{D7nS2Sg1<;z2(}kaCWp6D2U6=~CjBLMpq$8G-KFVV{gX)$)wv)@W@%rq+d* z@AR|J+dHq9hq-7vyb9%pw^!3aeSCF07^w6TOt6xFRGP6Ce6U1aR zco@$4?ogMDPOuprZi5W$p8Cn0Sz>whH83UT_kb?F^?IrXA%UllYjZSQM}R;aF8 zolbFn0h=9f^nEmJm~)v;Y?dBMDSb3SsD2%&P_7B!$~V2LeR5UZPfwttBoQaxu&-3i z*F((e)GJ*Pqu>0X0Lq`%E@_o=(LOiGKdeW4_TdEt-a>RnMztT0ULlV5VSuDNWx|ds zE!GK%Re*_w1s1I znU8sZwI4%l^?Gk%5x5O%zGw3L$Gz;Ek;+TUii_9b5==)dQq7t{sxXAHooLzH%*tTV z5NT~5iWy+4c#jEJ!geEY;#5N5J`=;eF%|t=6^&2zCV3Z!>fP>}&@Uu*edEHaDkDQr z@TBq;%Y{bbNewl^i%4*t!nSkqZrP{KHwH6QGkdmAWw(Dx%V2h;Wl8pe26^;LtN4x= z!Hd-6_KUtJk40d?Duvxl-+Iem#oiz8tIj-yB&D9hlo8Q37py1ZtxNWlGdBYe*5@cS zQvv9%LjGTn$d;?t%vVYR)()}1zLTlK4Y%y`{4si4dxCcllbJsPYc`YJbf%>sFVw4NNWAS`IH|Q%k@l&3lvJ6q_*`McfYAK< z4#5Ix(iVcDYB72?eJv%Q>bT%EcU|aTE%TF6)-g8j`w`NL}3l6Y+P~+5cz$CTU-T9z?jwd;Ggg6~0ho=l3@^*VZ<% zJN}4c^xX_dIDUtM)+CcpJ`IdM?qeT$|4a$2Zd^J-S&DR|v2Gjt|2dpEdaX;${6fN4 zsxTf+e;-QK+Q+v({CH7)|9Ic`jroh^X^mm}pI}kPfABOKcp=5hII15#{bcY_U`ZsF z<2tOz$_WU()*uwhMnJpCg>qMsH!mBVoDpuXvaY3y{i@v%_m)O$C40#a?B%lWzGRCJ z;s&NaS4$EMe6o-5Oa!(r5=~?=*>DZ9nR8(*0md&^b+-<>VEOIso(W?EnpItJ-hcM}~=EN_S~VXKZ5{88i!- zOvylD#Zaz-k?5>9>FLcrAx3KF&GHruKOhF}({nFPrcPU{%bY*4Y-`ZT5|q&acs?v0*M?#@}eG5f)E0IG&N^P&@U ziDi3IrgOP(rY4io9t07>@wJ`}J%!uMZ%qB$BmEbT@Wa|rlsDKtek>&s2R3aCDK69b z#3srKxtu1-6SYw|W%=XEBZTx`>W24jdGY?;<=3K8L<0WoEHy|djxwS%4DUOsLl@ms zK3jW3^iPS~ci=Z~tj|#_ZJV|Vs)Uxt0yQ=}y;oZMTxZ4%zVlx88YZNSg~k^`VU`7G z#K_1c8o0U#D!a6_x7?%D>*hSaJ_fmYSJy{lbo>5343t4a>3t4c%1uvwKg)F#` zKnhv#LJBE(A%zrD$U+uU$U+ucNFjg7LKgnN-}5~0d){-urP0`vM3B~+d(VB(`#$gU z{R!7+vj?T40v>T}#7Cj~o^D@=;wcyJ?|}&q&!KOVWl-QH`N)=drT?Zse;Y=r?PGlBl#Hw*r#tFZzZVCx^K!71ozm+fgrj%M>E4DMX zPhD2_hqp`7yBx{?%)PjY!af%P6Ea`x_o&f> z>toT1U$Z0_fdHCdF9nyni*wMB&zt4e#ebQzv-; zONaMPBM|<8*4ZQS|I=e%xhW}1YWgep%Mqw@5~2R9rgg|uN?u*M$0K9!n(jfa)pxy& zYLes8##tTluv+yWm)5ha!c zn}?-R&Bg2fs%=$Fw$%_W2O>V8Tk{u^WtJ^zZg5J{!d~UX>J7c#cHzPQS-X8HN zvOg=%!~X2A-2P6TT^_bS+#~W4n*ihJJ6w)SPbG6DxSPtFJrCC(9O1#KbF12XI(J-= z*64!qNnAFD^P)2-yF8T<5~hYgf`=bZ6ahN_q=63q#f}iHQ$Z;;{E)M>fzb(onH7bn z=H{LRO0}T!;1~KHlo}x=nF9QWz#iO!6acfWK~0La9I7K-cVCOdP==CMv7)Gbp6UY~^@t!4o|_uj(r4Uo%Va>}S$O zee^px9)A58I{KY@d_2Pc&>;?;)J{iFj8Dv){{wZQ(#5iyH=jo>5V*2^k7jCeQ$ZVo zXtH%vCc7bu3Z2^?1YBpOPkk-i|RgzYhB9cAR(;p0%A|5>Pz#eHmm( zie;*WZ9Y4?Z)srt@*Gki+D1=0FjLsEo`m)QfP!79#sF^0;zyjQX<_s8>bO3=X>RVX9CFct;pc5Xa zCKuwH`c#Mj*aA|S>*$dNCy2%)1tEk2*>?%`)oRtjV(Pf_UPxmb!E}4tdlqStcD)Xe z9_OU?+-Jeyo_sFV)3LU=MX|3IYhxGeOh)HF5ky5P!9E2NNA1NI6#_o_#L z0RVbv;$1@+;)ug~=^kf?awek@2$S$Fa&mR~R$=A#t+fLFU3mU-VR7NwwaZI|8`tfE z3M)5mUM{RHuUx)WSi8D_k2^1{lw3gDGo&!BTX%jWArNiS=10ckIjc>$iVvQ{5bk#` z%cB5;#GSyp+qKttXl#5|ID`av+WTmNEIQJ&@fsB(Dppc4&r(U(`xr~0*b33Kry<4i zYoPZ!>~Eh=3Gru}J0|V)Bjk4HqmPbH%y|x1zuR5FR6GOZxl8{I1XrzpQ2G*B52D%f z@H#u~J~@o#|A*q8=NL7w1-lCPsj#qs%?gbB<1!}yuJTKS*Qmjy;a6gYr` zWiss{G!a8#W{c?7fQ*DMx8_=oRLR!@Y7@X>lA|H zogx{LCl^riG?0aq4b1H)G>@2Z65goP_sfwCXl_fM=mnxFihA-5{p@<>r&64j!NpdB zpxQ-K7O6eO-Z5gqp(c(dPrLI6#UXANkh^VIX0)TsbypxSla7+gcA-UTlOEkd;YBLo zwBQhN!)5A)YU*x;se&u7)Y%FvDoo`v|u zg`3xxum7P<8lqgMstts|jzKzx++Y`$`#_s?AL6hyQ-F2LNfLAgunUhWVlT%8q}LvB zY$_+>FvY^vJuK*wh6^A6_yW$QpQw^U61GcmKVi8;^6`()=mysL?uq!wJVk?Zu4-`X z>eKP9{qh~06N(-x3MI$E?Z7dW?KUbUU_}BV${QssghN|$=MgpNXPNs!RZ`}D+tq;z z75x-vMCz2(GmOG+8mZ`{Tf3=53qTY~TF=0QNeom$set4icA=fHdn0j063>cE+BsM{ zTEj`81=3!o#TKULvD%9eXR-N=NWqCiX`dwjQaz@v7 zWs9w-G-WuElSrTxw6nm9)iMUe0MgcC4W;8*JjNx)7+U&{f7%HUJ|pgnv5Z$^N%&$i zIdHd_CfkWxtfe+WENp{yafA8-8aft`NDD+{lJDtY`mJRC0+Jgb+ye~bY_=}B zqG8E%h7(A7vWo0-yyV#UFK+n?!%epHC0Ef1tB0N0Kq6f#ya7faf$sw#AP{8}o8FRO zk0Jy#e3v98pJt^%N%TW~xx9;NChbSGJ>xJfboGXC(ZoDZ0xS@@Uo$n6X_>D{0zCt_ z6Uk~&HS}N-7SwQL3XNNQWEfi8BhD93qi>|B|Z zDCr{fEbuV=sK7=Z3W^;J-T;UK6ZCwJ&!HPbf1)i2m zi+R3mAI@P-i3D%4B%^s;vgNX#q;g{3v-XxH&l$K}^oblDU$3uv^$w(Lp=P%V#i;bj z5ozJATzBh4*zY^Jr1`OSN3sPngueF=>s(bsWUUM~)6kd%19EBIo{!Hj;&0luS~36d zJS?{M2C9@bjhPP-#wOcl6%sUiovaZ90>|VDx7zFx%VDQ$q*HoIN`xXe2#6{F@8aj)mJlR%C^!)u_as;*^gZlm|qzFOhNEsGV{vrg^a%v(va z^Qh;@*bvMSh^bx!%+hP7L5D}b7nJ`{abJZ9kX+l(gexaKd+exC@jM(HPd9}nj6%@w z5Y8Ycklc#U$6%u){Mc^n&GE=irr!HV3M(aiP_BsCDeLaoG*(ZK;zJm~nNAnKYS%=# zbzhWnDd(o(=#iD2kpqKnK{p5Zbo0r$SaSa;ol`B% zs2rAqjL@*wGwIzFZS_%ozm{FKWy=5o7`QxASyJex_z8rn-;8>zo%|5%peGU%g2dD0 zUGocxFc?me$-K&McdwPnQ7(0eG`iI3@j3>l;UhE0<1}PD4Rt|DWl!E|=u;FZ5b|Q# z0f>lSY+|m!J>T=OkoN=TU_73X-IKW#3%DLTQ!M^WQ!LJ9aXhgs(Os@9jyJiA+E)2? z-BQ{0-C^|;zImsKHev53{~r zvJ1poO`yOj&YbDhuxez~nTMK*+<0o0(xPK_JpQ7Kow(0>2F;vS0<*4OidLvS6(B=urqfC$CU=yIG*__p_pX#OJ0#x`) zk}Ne$Ph04_{1n_?_^2ECFyDAtTGZoa=$uHQl5g)=7&zOP6J@!MT&8KO2JI{rV1f45 z5|tWPZMUuYL=FLG3j4Ko^VwYM4|PD5^7?z{L^5a#sF@VUjo;l4Rz+A5M)G;QO!L%W z3LTM3Z<9(r?2Irp^*GD1a_4ZKW4zaI$80Uc(DA7!BXM$f!#}4?3?_bNZrNQ60BY`y zsDOqNhD-r^o73I>)`6B+b)Y(qB3F%F;eVvS&O5=+%Kkl$kHj2nq}eZ*qd=AV?a`NLzJ zt7q{u;-(ZN&Vo3BpAyES!G7H_BKjTBGoXx+J>&(j5~r62pcW~j)7e?}gqY}p;=Yn3 zZERx%c1ky8DZ@rZDY#@I%t}uo)9waVmXYUZy^A*D8pURldH0Uejn}e40QRvLXH4gk zvPSMr(hzY5X2dwOo%ueHh-kINCZtY`m^}rSQ(B=Ig~YzBN;vuvAd100nE4I_tDvbH z#aoaAA`9>~)BvLN{I+ysr3J82uCW)!tnm*Ja~AgqvQ8*NZ{TtIt^gLP1ot^9?6NHW z)wI!qCIFf=rv`MC-S%dId+{$zkhtrm6xPdVi z80r$F^hlK?_b4I_*>`n}=KCE%1=|#Go19#SNpOpw%C`6^-QwL@h(}ruTxg^IQCpWuNO;ywNTLQdyDig^g#@5k<#cul^qTsZ$$-p#`YrVX zLO1qGofjEF8ce3@{xTbR(%;hGrL$Dsb#|Ls;Y~pQ>ThP<4ec?1Bi`IR5=YJ311B6X zRR1Xna$5A~du!y>l}+j154e?nl&R9kl(#&abNPZ*bh>>1LS4R3WiHrXuG8EVgVkDulvpj|75;{M8Iqn`59?w+J)3#BS`l7JDV{UDgmKKu5Y?L=&h)(@S z^2fdq`{tGS<@(-8xDCVKFo|tJ=WXVI!IG^9_2*Zz%fNfG^sA4 zAzgy8)vWKqhF{L&`~i=XY0YYslxs66dM==-N;)h_0*0Ub6Ty6AZ6ICd&W)@8a=WAJ zcvsozZh4OtL88;>H6#`M9BG9eKgB1BqE8v)$ zwKj9}zloOwS86W{K2d)U_`dDxf-}eT-z4$V-}eUhaLFJPd6NUX2%QfG{Rc z%QtF}H_J8DA|jUn1G3@hkX!1_Nmop9p+fm%zci3J5+N@(4K{fy>}680l%uNwp>2AR%=>feYwGTc@Vp%xK767QFdL+BBovXzHF1bg8`uFO5uGQk)ociw`Y*_O?Bqp%Am} z+?8?!@fv-T*rui=(jnRbaF=6$Qzil$z_A2(f&0*FOd{0hTK1n`3=7+(^;|>BcyJn& zk^&(RwHA+_p?bCXRJ>cps00>~(R0O&HR2Djk6u7^yU7xQaYD$s6@;X5`PKlqtow6# z=lr#HTe6T<2w~e`J$gW{i1<6a_yD}+?jsh2PZ3!E}B9&eVR&NehB-P7^1&iMZDN}fv z-~d*@zC7w+sgJo^_?V^P%I=%x*!@~#V(`T6Vo;uT-X#hYxM#Uze;b!eO7>gyLH{OC*(BCK$-tgR{9IDWpON2*Mk6zH|nQfXeEo zn86CjCD9lAF~Z=;{mwR5zEf^gyoNA<>Cd39Ib{|te4Krm;CS)nc!4WAhA(_B_@xt( znmiJI;Y5QYB;Q$I^HeWrry9B;kt3HxkH>4kKBpoZqY)sBa1^|9p^*R%onkLyK-Nn- zh)ET6h2XKQ7iV zz#v#t1s>y61UenKDvcFb`d$aICl3j+@OpfJ_pxghl8B2;zgMfEQEgYqQDFUgg^%9ysRd&@NB}!Pzp&@ZJr! zV4zBo7jeQmwOmVm1sQQiUl@c_`gA|=tRiC z`|0U-F3Tzc7hOVBF(N;4MMR|o;IUECz*Fn75nfb2Ma|Qm2MyBf0B63U`qplH_EAOS!cMn6DMQ;)wL_DF4YP66u zM~vjBj9~fjre3Ya3`@>rvz1v{!}10u(;Q0U{o)`LG)OWIRdO#aIyZMj~)lQKUWojuj~3#cR>I7B_V#IgsjAqn1)DZDbX zAVF79NMTGd@q+h@eTZVDGK-0G5|m}<4Pj06{WLf*6h_{IWIDflNXr>Yq7bmy(TXt& z5(-|pBBdY;M<%dxFjAcoV0tDf*%U!-{P(2-z<7J@%It+%4ZcoLQplmEVj7u_h{%)-JqOF_Pr zyZGdb1?2X~26;s4W=uHX-(an%#3EpRcZQ9az+{p1w2$Ucd?M^1afu^v3!? z?_7tXk4QT5p>c8YLPba23Tz9}SYXe=41#J@P<{8vTB9#LQ4oT#$_-&{_In-TVN}?|qVy@8zCWyeX5(Ci_ zSO@gPK#A`W0hdyGH|T#9_LAlGQBAo@=-W|w7ZHXTT7C1g%-YBu+$H%V7ee) zK>+#N(Lx03&$u1oz=!0gA0=Iap&|!lZ3t7Hfp!h_S5ot7LL@0}DIp!oT3F{IsTB?C zDU0<^OBjl3Z;Ype{m+h1*<9G~S98S!^84V&Ou8%1SvF-oGSkf&6q^%~J9M+csp%MK2}D%Dni%u1$Id z`@dP5z{yehL#7jojlp#I(Arm*l#v-JDt{wEQsdW-IcUqT-0*{;yAPIEhfI8AzI`4t zz~mD+_k%=@dl*8_eJB}?4G&Gs zV(xoFhP)^g7K9hT6JUvU>bZrZK^y1-VsNJhOhS4m(h$IzU?IRo%m~yC&>z-CpJjS! zInEYrPghhv1tq}R7RZ!i%s9>QwpnDLPOAe2>vrpwW9MHXEK!T$o_W;a(6XXO|&?Tty zxIHbd@7{*Wc=64f(uP2=NrMzUWyx3i`JcPIW=Zsu1=`ClKEoZVc1ReQ8{RV}vssjU zq>)PW`Hbn^(%`Hxz04`z$*`Q0^>|zlPmfQWH`fC~Q)#QG^WpPTTK6u^un{}G2CZO$ zPcK(i;mVPY=4c&NW&_v0j`Vm2->zGZ_EcQN8qaIOb`)Lv(J})(fTKh^00)=?m`L8< z+vYe+SS{R|xrPh-tb2!wWKCG;1qQ77OL-1#mcJ*@hpKKrwKgzdcVr}_X^00c^5>Pg zwaQq_{Y#kvy64e)63;8X;y=+Ah4ZUQi;z35^oE9HWnJMMU9CCL$p%i6cdv*$7sqmq zCBQ;`4lAw91)dU?5X*DW>nyAum035{imA)qIz=-@jam7_o6RS7gOzi@1J;0EhoggG zvtJ67U|ZqfDMYduY17G50xPN1_@mNw_%~%k%azirg3Boq;sGm*Ksn0<1qiejv1Ch2 zMg$9Nqw=@zksQI@tKNyJq(mC7&ug$-q8}BI5gedse>-pd$j@~(c%bwhD5BU^Z6?4n z+XX&>H*?q32l)MXpyA!{eo?l$sy)+?c*tjC-l{-FJk25t@Lt1YZXMXr-ULQ$q#E0- zV%~s23KEn=IMo0nZD{b8k-XxMt9O8b3)qHqf8j-``w}J%LwOE(h^Bo?ij(Y1 z-=7o(x%-nMik#L1G>s=W>h)TbqfnT}A&JJZxc&cN*Y`Jf`XK*L|~-_ibTHk-VAR zJIvh=7Pd}ew3bW{J~h5$)Odx|bx4vtFGj^W{O0JedLYg0`_bg7>F?i?;d|tBh>5Uv zmYm3bD}KWcfu}5vXj{s?2MU6+OV?l>auaurq&Y4KzTJQUQr+Y;U~7R>8F3ov&kL!@ zER4JI?zU#a;Fn}?6hZF2FT|tLAc#Du+LJ^XSOnS#QV+z!Rrw8y)FHHjbv_0=?_-fcZ6Ph1re~0e2jANLzaff z(i&{Oj+6}+Pie|>hj#q%+#4%+fipHKOW~|y?~FDgaZa8--6c-}$Xl9LYW&~XhR(Vo z3lY8BTY7qZ)MC+pe?&p5W+}V6S;94;0h#(JC2eHZHG<1 zg*9|p_wy{6gWcW|J;sOPzK$+h-QVUuNLxV7+{_|$}@0qim3)= z%N_?|iSse{Tr#b+tVM2<;eYA0!6pf;t41?vH=tQ7 zrX4^7gwh-TM66bi*S312Pp0z`fmS4Azb6KL=lP(s>GisSOgvB`Pi3pL7i>U51=Zd6 zfOiBn@a{`MneH42r}1rQ;sa7fkyP4=T&{PmAu@DK4S~ygfmNPCz>ISShz#wXmtC-s z*alNuSj?@doAjM77}r(x!d;^5)Y6!rj)B$UUH}`Es}_v+t`bjkdUmSrC~07n47w#2 zk|b>S3GkU%T4(^tQ<0?Sg{M#|yMQ%4MPzOIa=l;M^_D}^L_sV6EYku-E4V5NJG(#6)C zQHm>1-UjCQ;lgWVMA;U=b{$vK#>c(*mq)Ga7y*8f#Z!L6$Lr@r8KzN}FQYAuw6H4$ zzw!5Oo-gH-ihS_S1-o~hESty;-=XKuwZ*LNN%lSD9{qT(h`{~QBIN>KX@_kY{{9*q z0+%;C?@Lr}i@cg1l+~2+ z(~gUt#$)g zz)oaHjCL_G$5%v0_ilF*URM5Ogd&Cw@+zq7uV@CcGseXCP3w_OQmYPgbzRg;Y_!_IAQ-f{>8Zv$ zhqf~SGA)@~x*{O%X_3;MFpBaIofL`XpFxK+*1PqyChd`E-UWH&Cvcr~SXq?~r=bE9<(!(RE@Vsxk-10W^G&vsc2r%r+xepIPme%xxV0*6=~D_oNpgi_DwYpb~oy^@FRqhHZj7q)&ym>FGP=B zx_gVGn;~7@JEVB*e%;ac2Bx!7z%`_*fi6z$349D;=ki6gwplR{Sf(3$Kcl9iR<2z6**i^J#u+JnhJy_fzXz140otM3-mF}5{Ou8Zm^Y}xegrgAp@)C&GQ zYK^k!EWP9o8yvE>cQ>GQf=RkBa1Cx%YI73zM`0SF#L^oWm26>=L=KnTg#fF%W&MRs zjKXbrY#u1>e|_e2IxqNr!_6-*01YhHmaah3aaKyHR<5w_B>MV@NFnD4iAR?Ys`ohW>2@?J#{^EQMQAVL^&9R$?w1;X4$=#x6j< z7&^>GK`5tRRirxvZJrr{HV0w|=3(VXEo)|VpD9bIc-^jVr`#X z+-}-_{H3=RYSM!YSb<4vjVfwxz{jZwyE#j$ake^Wx+7oqSk>DPR`Zg469lbXU4coz zjxd%N)E`jBw+>egQ?9Yk7k5xp3=xf*2Q)m@Se({F`0c8sf&g=}3|F0{ZLh>y5lP>I z`4d3@!ucgtuz(o}%%f^HbE%BXm2+{xrnXWS=MY2{WCPNUT8%cRE?{$eU0d@r_V`On zj%2SZq$(n1n61q)W*g0&Fr|gb7DaNZ)=s;*!a9S?OH_@>)1KFZBJTlCGQ1btz60+Q za`YO7v<7_;XNHa<0dlO1UUZ@=aOe7qtwa50JZ^-*5U(E2Iw_H z;wU>{iMo}gH>Z`~6WajuLXlLdnX%0z`jJWf1(Me-39dUWKT9I$tkajv>vEF#9`VjX z9vlV4%?}&r-aC5mo2#=~M?;v&J|{#-ew_}IMn6rt*2GO*4>X=qy z0ZNyVrie>z#?w&8Nu~XPSp>_m{*Jm}kGE1YDmi#N0zhU4aHds9wKdz75mSA(9?^4c zH#MsZWk5SEr&V3H=HF{T_Kw40Hn+K0U1ly+QJ+F3+?;3z+fuDLnK6WqmoTqh&yNi; z?{!2!g(P|TW2vvgkr7Vpz6mM?2ndIs=EPX;O2p}avtB>*jp3MeKPHEu3FO|vMx_#I zV)1D62hLEViE8xq-dF z2I#l$uq2vDN8z$pnF+v;;mWu7jPwA~Ky`y1=w@Jg(&W_{#rR05cA+H?cULwd8jh=x zs@%-Pv_r!TKp89UfrLJ9aKWxn!H@j;ffv7qJ7C?E+?7xK9?W-#>5TqP`=ZCx{XviA zPV`8T#Dw~)a&4NfCU%yD((n-P<{RflbAU>ZO;w|$f;xC4NEAhY2ZL&{v1!Mj&^S1u`=Qm!hP zyFu5kk=dw~M)}TOB0C9irei<2&VFlA%~BXM5f4%+FN_n~`Wi$JpDWdq40 zVu187&kmGsN=~!ZbOq)DGZ{Z}Wx;EVvJ=8mvP7?tS8CYi4ehSDp~31)5&B{M&N_3B zoon!4qLD3{bMX^`%9)hKD&uGeGA+-=3j7Y`$j-0}?YfR1IV)jj4J(__aco1O&4$^d zxLOJ247;UZE#Ckt+xkp_I|3*GJZXTHof(%6##0hYRuxIbA(vN6;zGeD^fTz22vh*c za2YyK4MjSHk1n0jz)gEqziXL?+P5BfA_m`2|6T}Z=iaU^XjknW^^jXI&b~I|ihY|**x{N1glrU7)7|AX5O(0RYxh(eDd-Dkj z1*JStyDO|z_ssX;4fx(vHWTE!48F>NsX!kozA=c+m6&yL6vn2)N;^+ zxB;V_Nq+dVQ@!iO0>57vnF+c}B@aFp7RX+@{qj%_%O>ZPfHhm`9&Yeo6<;07HW7-H zarKJLPWlvXH^DQ|33y8egOUJA6vlY#sDOAiUc(1H`K8d1>Gu4UlNq9*%w&s5i&CQ^ zy=K_hd*#?OH4y>*e2iF^Y(R7^@hN~2I$93jN`lr5uJdriu`eX~E-?3rk(qk9oZ~}Y zoF<>`ck_p3!)IhL>^^HrHmRD4JU-JEKTaRZ7lrsxkC)ZP9~zmrTPZ z`xdvC+cDl>2N>vOmDlILg`&baz1A?`H7p9P#t?7ja?F&^UGYphZzBvD_;!^SIRwQk z(Zd|-HvFqR8>r4a_)~8aESJV~$GC zQk*JyTwH^7gp%>AS^x$VRQE+=H%aH9s*Q<)i?~==K5Q3vX`ny&d=m4BKH-Y2w+B3We=9I(4Dy7Z+cb zVxRt-k$Rs(k=paQV;ThZ>`9w3UXc<<5}mXeYe^{Jq|KQ0J*LWa(q;?+t*AN66H{++ZLWB7yU_AB<*o zCvCCvC>IoimX7ODXJ_*1w)S|J+HNu^MOb zAQiN9(q>GIe(eWl8IiCjm`R`xMCaZX{&mu3%!UM9t7?2d#UXLusgbkb%Fes&pY zWtnBpR}L8UqO4!^wnZmx#=tXA+5%eTfFp*Jwt&{1kZwEQ*@->@%3KUC;h#O5Z{F{= zfG2InPTGt~C)j)G2zt_H%mv+j(GY_0n%L}EAoPLbBz{RcIB7G6nXRRhHe*>QGT#^J z%1N6s&BYQE){>->lQv_AZEZIcp-$S2N$2U4He*S2(q_yT9ORo#-f->WvgADVYoD|k zV>g+wr`SoGG1OX}v>DsmhM%6*-?`ppCvC=@ondVvPuh%04)Lz_^OM3&pWFk@@1)Hb z%M1Ip0(?Kn>7>n=H$#rtz)yaE(q`qoU^`H%h{xrS%`JJ>GL)TXp zBrpo>>WxL&OHSI1CFm1(LtBTra*LBTW4p(VFeh!sShu3BVo;CnFpVCB&Tf!e6OYCd zTCXNVd(vj?q|F#RWu3Gc>nMAmts$Wf>pr3}*u(bEIcYOyjV?~wjIm+LNt-b^|NHky zJ83g^(q=4e+(X-`lQv^$w0Y8IY_u7nkmx6E##YhK2%*Qc5ydBM#tJ8G#%kVzJZUoq zUFDau&Dg^D#GHH(0t%E83$K)cKWQ>iiMe*5HbiczylJ!cx%_e`Z*U^}L`*eIY z{dBwfdVN#6yse}2bbagcc>EvZ=j(Upm*mk;%9E@7W?ot&UY7}bSL%)VwdZCEYZos* z&o?etX6CcMKa9?|H<2Y>-A&Ordlj#&Za#PMA`!HVPR!}db2HCH@%(G)fo3r3oB#c( z_!8Fmcj(FQ?F>3LG+EQ zZb_r|pM<|c*La*pL=wn%EwC#2pmG-O}8t?(3sJmHD%9JJ7sL@4|1o ziO$ssdv2j0UWzxP>GB4~Lrb$^SyDTT$^)C}l50t>cYqSTRj>3vsUc@g68^qLxMXxA}77eIdl@&L-|=9Hsj;5^b{?W+rY#I ztH06kk_)ins^~CIT5y*>Y4~^B7A~RnA!w%w|IXvFHDwG}V=+f1-KqjhxSB&O_YoUT z6Ga1}o;IXwB+{uHrri2=x|cSq&9QhMp_B5#I>(5y>1lH^Ug{$8=+q<|0i)+e;rYv# zue^+I;d|h*%{HcK9dLLr83~7Zp^vscV9RqR0J>D>UVyGe@*?I3VWVfa+T;e9MtL2i zeX+;mSqp97^6{zUs!@EubG8x}+amO>2l; zlau8?nGb*c9JreBsY7tIhbEqN9E~R+Ta(t7!KDr4Wx4BB26YadSu1Q~J_0i<3}I&9 z9L&r-&Ut25>%NY`tn2~3m$AYx*1h~k- zFH~)w8&z2upCGTKqJ_T8WNpgte(p*93;lsTnAG1Fs6Slz#f17VHUW=48ZTnRWf_VV z)Q8v0jVjtSGg-{{)Rvy-nJy+NFi7g~(=(wQB$vleUv2KMd!_>S!o!8&Y6ky%RXfZKfzzn9EDc)Ea z@$qPRe4@uD=hDqev%J39IM{F1v;9QTSoF_h@g?~-u$iK0rRP~^f(;Kos25BH z*+p~t7slhOi~e7BQXCBfzyAKA7(j~RX)3#NI zXZOno7|~j}Jr286|BT`}(G1u3#JZe}bH9q>OQze@8|zRx*Q=Ge_=4%q^~NpsgNvfu zJ$L0^=HCSHzC0e^{bag1Ulh~Tw!k~)hwTf`oqI0AGf{Nv)$s`bi^fh@$1X(Wp5UMF zP%bB?R6mSAeM&Lyyi*@VPmI%XKwuI&UkdE`MsRngS6;jrBHeN&zyRFN1rGD0cB&S0 zIv(ej2Wsw!a{K91v27%Z((%(vppo6(27Xn={lm^}=6^Rfd9~c!iO)xqagh_h*7wu$ zYt4_~+6fYVM-eFBpn3cj=ndBWTs+bKx96j{7=AQ;ybhv{1(Ob5U+YL8D`FsDhaj=2bp zZnw!~aie{(-l}3CL*=pwCy+MK{O$L6P=3~IVv>us7r2wE z?r$?Bcq)vk-2@j#+kt`tY38w5yYDkqajRUdVKf;EL0TBn&S?%DII!7rOG{H+`=MWI zhC^fCvAxx*%@*gJS!BPoCh&ZoaB0~V4GcX0nKc;KJ?S%Ap{g`;4|{y7jUb@ z(LuKwPdyfc)rcuCV<#-V+vW{m&L+E5VNML^y9kM7AFy96t|1u*(K zyMp6ph%Meju*i!qRCo7lDcQGN`jas{S)3Io<7NZV=w={b68uYB&|`fRphV@R!YWDxR}pQ#ZEYBm_^=TA-fph4_s4 z2zq~qWDGE(mK&0Cs`xETp@wpu!8DsM;Xwh(44Q1~<%^PNwO9nD8^><1EdK z(c2#{l;mhOl5n#QXCPgOK<~Zn8m>wZGkH43gL+szd9{8AcW>h_91<92H`?RgyV5^xuIJmLG^sk2wwoibcQ8!4zJE$m}s>Y%w(-NR(u z#m$DRBs0LH{dN6m^w8wbz$~(B0Kd?0@GhZXpw*rsF}?%p z@z;XU`dsqvTE+{_MFwrKy4RLL9Rv@4WN!z5JL)|ikCu5bK2bDLu~%(&d)KFBcJum1 z6~5bSE_nwP6e@<3laQN#@cWPwbE_Qr3^3w{92D4*drB3Re4D-CGxw7Bj@Qa4H1HZ7z~n z6s!U7=Iy^a==OP84g-ux1qXt)kfqy(8~{gZ!QVWKcR|bJ(lxejH6##8T5`t(D0uh* z2;$b4ExyaCLx#e3mF}OsOztuF{2Xy=ov!K4YAZT5@#D)n%L$B1Th-+!jgm`I&_m7@ z_Mskw8I(I&;1j)mnx;$cj zCck%!*}hP`O(2w@VSb?iX#p@(*TmE->}9)(s2~Uqdq^7?lhu-@HTnY`G9`a^EUDv1 z4Rk6_O1Cf!zGNCBqagwXjjY*&9g8@r1^(g4dU*>wM8DiUzY>uGP=j1E^xsI6^K!=! z5xecZat)fCY_aQ-$EN5VdcUu3;Gjw}^pUQv*Uh|C5Hjhw)zR*2TA_uYXkT!Rk3Ac& zust9-m5`4^Y)WGRwV;_)9$VQE$)PF8-$un zb?gNdyt7f?4PJUYg8xs($EK7YAdDXWbsV3bBw9uYOB2z@qQ8!#2><){nJwAgtA4tj z=9Glf2*HmnNAb>-LhUpiF&JMVgZU<72F@4#zv+27Q|9E-zBALKOOM3M1n*t#X-n>eM*^MHtV+Dcw&7YfWEV-m}zUQ}trsLaYA-$mXi_jO2N z!Bld<016f?Drn`Dnlf9~rit@!T@QfC-pR#qNAj&f%m9iHE7-O)kxR>)J8$i#yBpb_ zvL!ghQhwh`%e&dE>_r`(-ESy!bm7I6!w(Tsy-|GXTxkvjxtYS%$dTLP1{{ceLbiRe zFP@{8x$cIU#*>^V7{yCZ91SPIWZ)v$h7fmn`Hom@`FoLJ9NlP{L|-O|^_Lp0r}@`w zhz>?t-`=ZL!P!a*2S_O_2ugtl%E6Es8j04L-N8WAA)SnZG*62xXGhSCfqY@9Cyh1JcE#&smSfF`jNcQgY|*%E!Zh8u4b;HBBy1}cJx zoq0@g3ym#pSbN(A=eDPhQq5-1)8SK(j*TtlrK&4HIwl) z#N{&n5kcGdqBwC2qIyecS)}d>6BSAsr zuooubohQ)`dLcpfPL&vJ#GLNh_3LFO@8O61)Nvj@0B;=xz6q`FpL`EL2?umItzG1I z-XL%ogH^MlUpYsAT<8!elT^fxa$z%@JL%?Yn)UamXK|ihEOP&j$30=SCdvph*lHd9eYJE0A0+`0?f9y_&+&#oZ!(}d0u z+;LKEuCpH&yeWwB%mjBKOx(xiCIlx8EPFuB{;088I<~*hs{Gu z`7NO0&?dN@4-(}*0bI!K4<6xkn^~*0v-pkTW}zrTfZ7CNGMa*#l@!xMi=&=PqT)hh zyUid%^Wskq&7oY=08W~aMv@(DDu9{swD1?-$NMPajIlXDL-vWahZ_`zE~&S{N=dY8 zn7Nh>42PKQ;7Z7KwBp5~x`l=&|29S#8DSqUQJ#w)UV7_hnvxy}U;@_-{-)R^Dhmn0 zBXy*)_IZ|)$pRdP{2};28F==AK~o2>C+El?$P1f+jPO0FgI{6tJ>0wg44H@5oe{pr z*>GSy{Gv@4hupwb&8AyGGbS|YAo&FOkT8Y#YKwePd2a8$wuh^O3iWjCR1pRS;iJ*O zhTN;CtV$h$DcV=!2~^En(mhli2R^{@r|!U&*ftLphl)EE)tKGoi8`v2=HD=2>q8F7*f!;U5A=U+9ZOq!c_~Zhv z$R3YP!!r6AO&Ht5L)%eL(iM3GFrF@c4z~_9e)Wspbz0<)9@(i<9+SLUzz#*qIycmj=Zc6T@1%B z_lN0VDydYkWvo#>I+f%RDgyGQDFXDH`JIc<%g9PxN(X8+iR7h>NGr=R!Y%afKp#Uq zErY390HIn!8C7qfe8QAZni3E@>X?Aswrry#^kpA%eNz(QZ1lamVNUb-ta6$DD@@FN zH@JN@>}Lv!-E;#5lIZ?o#E*w)f{GDz#bx0zbMaM@Z%{F0aKJeli4b}i^&ZeZ@H{6W z(-IGJfIb01=O6wi9yTZjj|Xt+#J5au$7U6{$O`Dx+b@~rweG0;CYe&J-Rn0h14~aYY zP)FFWUV1EEl$Q%Ipl9R0+%~)yzyl07Wu_?tEez1BB0T z{;@jN0#A?{9B@^OZG|5N%%a1K_QR2WAIK`_$ap4nQ9MiJ$*_1ZTI1x(96fNH!K-%% zVV68Q45>$1MErBT?h^aU9Ch+?7E8ilg_5I|uqHz|Oa+4#g5Sdv^{*Dpq|U-JLba|@ zBOZ2l3A6pp91@pniXk}SKrCJYts@plg0lYJXNM@;@fl%9efes9|3!13nBz3Oi)y2} z6wzP1^yWg%rCMhZ212o1P{=DQX?1vz75DW+NGK*obs=4M@L1M*3(pFK3^%(qFnR1t zcx;$p_UjE6$@17&u-v(P#ZF(`L8Uy@xH3>mg6k60N9Knnrn>O1VknO|CO1fp5Cr>?m! zzI|R)TNiCYg+q3+y^=4AO4bD2d-0M5C;|^*Jb@Mgj*6*>^x7o=VgtqZQP zzydkXXT+uccX8b6e(aMB<=BIhOJBK#q;i1SW2^eT0ws;2U+%FxOVD(N9QN|@&VYzC zDhRYi@|=+Ko)57-iC$nWfbb>Nad3mWqGfien+`xXaS+DOMF?xo8>Kj21dg+dc-zHu zacRZEflG>W&(qWOZwmIW)wJ>a0lcmsFBAb{da3Z8h9>YgqL0YLq}XBF+!q`JWd>Ur zHOS@4fk^zu>rmoke@P@5n%%b1XEzyVkC^x%wBg2c!Aq(mK%zv#x*2-(U5`Jvl{%Mr z15}H{*-!D8LtTIU$+z){oZ23ezqtiVkd?g%V6)%&F<1)@&w*9ln)bYmgIM>!8>+$_ z3o$%);j4?N5dyDyu(14_^kfIzj~o)X1M(r(W=KJYE<=F~660>NFZv=t_DFw((#ag6 zjT{}NbdeE|%KMu0k^z43JntWY@#JTHaeV-@TM@$#N3kEXH3(ug zVBi!9mds*`1(!(*A{9Y|@G{}_J?C*T912Cs6hEx&G?^UIWS%lpJzU!h7p_nT8mv4Q zT3j*F)RS>u5JK}*aRgugZ=CVao*{1OZ-PDoe~BdJM}oX z<~?b0?*kuuY(!DphyAqo+1D%ix!^!|4W$>oTh<|WPhM0}Uep7%hlR}^pZj7z9`per z=;0aClOy6q2A&?8xbc!V`U1W$S6L-jf$fotlZ?eyNtC_xz4(>Pbj&Vxx$<1}n?)@o zE<(}NoE%l=Wl?(hXcCCRDS0r|M{`+=X89yhxs#7L+LnlV75QSSSZ2FI1##1|$c+BU zGt7vSEIA1am9JSfEjPG@x^l^02z_22Q~Rm~*-H)n*@=R8B8dROC;G`OS3^NNBPK5n zU`0UmLZHe@`xF9N=1Q}T<4j#EARpqDLI6eQ94*(9=nHo3!Z-=z1rK`XVn`~T(xZHL z9m&`GwS%FuA2ySF)=E8pYvu=DER^q7ciX!zl@2#e2F9ZQ0AMJ@LLD!!;{6mBKfEqo z*w%8z>F}FMS34Kj!#{waaNY#_O(H6Z+5Sht37E60fhEG|GmzPj@xkHX^xbY+F5kT+ zH%2bnC&^h_0l=TWnI6T^(R%l+S98F#tL)#lgGHHLkomSD8EQfXvRSw}aCv@z7% zKQ;3vv897O$R_i)P~1uX>Z1|rcPX!=HK9E3XOMYPP9f~+=ge->{fIc4hyxRUxa-BA z<`@zFc5f)WwF94dR%z=1~zE4hTD~=6RL>@9nqTojBKr ztC@sDKAn9U^}4KDWegnIuBg}X4#IVA(~0D%yHn=SgSTP7$TM`L0w$5ukq8yn z03^H3g+odP<0-BC`A_3quA*rE z0V^zgGF}5#)Pq3#;GzuCUYhyBat0q#P{g-N*}=`>e3*Jd39pA?nII4ke9d^K)@|vx z_=0Ht095^<2wud%fGFN57!uF_;*|LvcS+vM&}6fy7JSCXRFd}=va_7}8s=twphbCq z*`p|L>A^0_`+k-(l2L1r3^xZcN>!ZVHLS$@#i-_M1zF&`h^uYl|H{6i?=D36fZDx% z>i0qIo=7|87sCttj-pwgWs%x?tKOeo%~|o`I$h;o8;`$d<~9rdUevn8tgd6mg&2dz zRHC4xwa2B=YXo07q&Pw^0~m~1xVj{#YHHK$W~tCI4Igd;!W}S9vKj5qMR} z4|u%_QRrMSciHI!VhO08b=~2UVn`GH`81McMCyf*#?Rqz*E$70Q=oz*UWKdm8qz{< zYz5(UG-^EOnt@ObQUX=TCIx@c(FeYH*bp@51B%>36wXnh`61ZQA6W(ZTH8*67hkAv z{4vW~k#s{x0$(D#Qi}uP7r-`8N7y`s_4lZZtfO%V?ne;0v8!PRE>X&znBj0WjrpC6 z7rMkEb_ZhPB{>Lws>+I%OjF60^+fa{Ek|t*RhF{^9?8xex%RRMhY%8Yc+C4lSu+83 z|F`kDxD32dO)(lfKOV2})}8Hv6XkqU!8Hm<@MTsMqM*5tCE2ww&$ZJRP8!IzXQoH? zfx8@`0u=!SF=*iaQyEiv0-%#b6)Csft~@3Ctgpi%jTGz-^;~twa>r--mEgYG#S2MB zy*e+@m*?COff-7|paYMNKXYlyW3@qM>ESQYid8>nAhvrCZrN3{&YQ>Jc`bhJ3XA*n z(W6-QgUeSRzHs>R)q5*}-qDQD8$BwVAJ}r!H~U_p(~emX_~4hAerV}!)aSVROA!zz zRA4jQ-x|}Oj?M#}1cvR*1SAC0DkoK^zw}k7ni@s6edMass~iEN`NxiKk06*%KOhyT zOmfeZh*7i(4SQIj4pgfyi3F)N2=M(3;ygd$Oas(j8&nNd>!bYJD$PY?^`u#dm1h0)R2;R z1+vbY(svTiNFhC+D&m*tL?+r2+R92SsXA)R@hPlFG$*nx6s~H{soU0uj`sBo=Bi4|o|X+YmA1s=DllN{J!inMaEwl%@|U zYGS{hY+p_?c6kl6N2EGfeOFp)*jY5q>kjF5E?0j`K!e@ z^v#0Sx-y+8VSY^#9Xp`DA)w{p0Rt-`mA$>AA}WbK*CoCdB^KKkYF#zbNAdmn>cReQ z^$VIZRzW=tQnJ$be2cbViVt{#%WwI$W2>pYZw$~UKZ`Fr!&keg>;va(3w%RbMruVN zzVy<2f)eVdeB99zJ?N_O4EyDA)kI6L()^uaGa3s)roFpIuRprN*ragFE18f5>Svc6 zyq)xWk7PaiWh@iY)3#VtnZ*j+GAa@<1hv{oeO0xyP8O`88XVvEx2k$LUQb^5p%qZ0 zeY3l0X9f6DYS$RWrxWpR4_P%$lu$3{psMM-{w*kUf2*D)ZMG9tEgq34fuRM|u~czcA`)yjku!e|a{17#f>E4j#OZO7Tnw#~J|*x>t(6 zY$6OvY3>@Eqm`hqip9t+%jks^{a8~B9}WVCz3Oti?=M!%de;hfTn%`v7J8O><-Yj! zr5|NBw&&j zDP@U^DtD64W)g@YV4{HvATzn8zEI%pz=RbY>t_c)tpevU-2*|Huq`6J)Mb$jIDMDN z9$^(17Y-7ygzuFKd*$7L(c%1=<>%#f}o$wSAp}WbB#xXa0s18s~9Ar*nF*zGa_G$er6cX4=ul) z_K^Hvas0Ujhq~7te3=4a;eM7LNbNd`(nqOX|DQu^*MH-s!_=-1%~qzmZ1F>4jX#;D zNu;fd(h6kJJA68E3HmnE=5brQ^$Oc;TYuYpAlNl5!EBOeUM4qO2F)B|Db=+|Xi#f3 ze1@eGS8E|(v_h;Fj}-}lSq`Xof95vdYL`;v9 z4-piG`_GdRim<j|24I$foxfI{}cz+;@{18;?=Ae$zvSY!4Q%AV6&eyOW%Yg zx|zS1%g&dfE_q5J2MbSm_rT!r(L~dwwCKH;rimD5gY{r=#H;te)rICte zRY|sy%MyCqdCauaD>xG9lFZFd$`TfmMDGGK^sb0sD7ld#R50L-#c1M?-xVee;s@CQ z@gq`scLrGYh^dAI!~N-O@$*0>o&7I{DxDt)1w20gfb`4Asuv!N((z+ymT_!&>SIt| z9`vmmeMJpRYrEyixOtRRqT$Yt-<+O})g)8H5cHnC(#!)fe^f(a2Pkcw*r(m$4?7H> zz`${NU0}aCPE`^;2;+G=*%TAoGPbO2O;|IZlph%@1D{fziJhpz1K3c>KK=&|xwY>2 zd2L7!90J0uFL`_PZV&_Z_t|uY?Lq~Oo^o!i&!RAr%>eo9OyV}ZKVm3n>0!?Lt@n4& zx|ulteLViG8r$8QebI*G{1)nr&A$Ei552 z*O?m_;i-fEN)Gs0tjJ9XjqU-9e$t6Wiy032Vqk8ZiO4V`T4lJdUCwYaI%YAu(4Ro@ z&o4<@-TJ4fLI(xw7N+ORG=QLLR>P#PRq4 zB5OMeE{H=niS`4&<1Vhh7D5Xn6TiM(b-3%Cr4}Qwntw6>0kpqy7ktwG#QWdu-KJrMnBs77T}GYVmOD`!a4nUN2Bw5Btw%AKWzZyhpOGJuB) z;qxp<^N;`M@%V8m#RJQg-_LiHw$2oKW$Z|s;tywxn?a#}HNAFQx}|C9q}ve39CR4| z{UV+|;bCB(IxWuY9rV1HyQF=WgN>mAQ?U3s^=1JPk`YZ^$^fu}2OJ0$3VjPPAH-fk z|9aG3K|kua${s!(Ith9@ao*`gXc^_XbQ&^-uvk(&()f(d1zdr75YXI){`r$8K?K)P z?EZmGf(j>1g3wiJ8KCXaB#1)=*IU*7=2$$*|NQlM{C3cyn7>-9%J5nC1`t-cQof6i zn$JZaJ^Kp0VAg$!!wE?(T%O(f|JTj8q9CDezx zPVX-GGy0$u+W$iwzheQ$Rd%m}2Xbc#FWY2^eP<&pc10^x+B!07GG6T^rlOBsdLh1< zZetXsj3^*0FSqKu=jv+P}c30g!!S_wp7yfE_To z7r*LZ7<;dRD)068ExwqGkWiRAFlS=Iq;mFwlN;_p#5HOA=6=f$>{sD4yj_)3{?3QhkrIEjOPktAk-)(xQT17^vy^|#0Z{jStnUjLx9+CrvQYF6zVk94Nh z3I<8cSW{|~=(ENxZej67OgTUqZY~ZnV{r)n^7Os4iQk@n$wCHzRzPumx!mKOI--ZN zOKy`}bnWsy(00l)qg9WIVK(;(6{F9G@RN{D=YX6dI7t<=Z~(wF@jN@w4Pmm-1Mv)x z)xlv6g@*im&OO$>!g<$sSMlg% zJ4jGsUV{oAn}jBvVo>Xg0cgmq0&$=c^&TQQWDOl4?#mYlA2MYmbm1qhB|Z zFndNy+#G;2Rx`>w>{pe9oX#!L`&ItYAL7y6o#90bYk8vJ&>$!hD$L_95@&=vc)EuC~wr;YC>>ZGcQOJp=?6SOc2Wc2JSzGvH621?&W8ux zq4Du|&c`th7hJDqcO42nhc!b5hv^bqyxT;`KZ#WM^Rj(VxRVABjlth8gl7VqQ>Rc* zyu1gjl&0N>$4ch{$FagmI8F(@iV~S^j~`AV{8w z1LX8S>rB9K7;cP*;))5{RF6$KeZ`jPfse9>fQXK#XY7BoA4qtF0@w@^*7U1Y6q%rs#$w$??;ycb`yZv$MwGt*Qn z2R^Y@Nw>=FT1&Hz9H#u2@pz6vbQc{(f6?pQ1-I$34y=nOrc?+;Q8cyM-l$bKaUBKM z&u=W6jB~%hy+r?|=Nm#q`LBv7Gr`WH=)d;*S?-Z|VlG6EL*YgAm%Wzn(Y(1|x8^zW zd#LZM@aJDTB5SeDl5DFTSZf7TrM@l=FZ z01aF~errz&$Bh)u`->% z0Xp@|L5nWSa>%sTbt7yyicbB_c=WfuwtC)+C8EHY+&kmRo*PEzQZ2>KVMxc!*4#o- z*X9EZUN{xMLTDCsY$d#$_QyHkl`jFi5TCV=VIQ#cgdE0gh6Sa8?3TA?fgX7WLPThMQpE4U}j zTtEsCKb>3PpUV|0>A1m}4UA^P0EKF~anL{eblPpEITbI-0zuFb)u3Xynba( zR9SK=xEkodMGexn^!t%rKuM%4wNgbLU<<>!%?YdSH>Pm{1isYrmfDkX%%9kkF7=oi zYA$TWSK~t@Y;x>!<3QZ8bt&shqPI(?Ck*TTE_oYWz%~P5d8yEDYBh(|TxdXG)9b{} zM#N^4uP!(BakvUx6I*7frg!0L#*mu~Bbp_x(AB#e@-m(?SW(NsvK<`mwe(~-?8x40 zhPb%ji7!cExuusP=HXpf>&Z7pJDn_!^L>OafdJd=WyW7{ar8p5&x|o#!6s~geR|dZ zsaUK5M30cROsn4Fe8Fb3?FK0kJ$n2c717uc${NgG0R3DEsFBVX1Z9A`Qgde`;kVkg zgF6FDl=$t~xqt&P%z>QW|X*WT3WRpJ=ZYT3FfahRC zMxi;&tv1c1D5>*xLG>Uga2|2aN! z-q}K`Fpq`oRnZpkciuOCDOo@`kQk?W1u=rz0p#~FmI)%hz7OZt0_@2;keY8|{(%vyRtIX#T;mtz&g zDyE}&mNYUdtihA3&={a3l%cWiZXiUAyTE8&{s|F-JLfeJv#{oGr<*g0PiV^(5ZeP@?0pb%DeNhIOa3Y>G{^B7IiGA&vm-^$IpJL z6D&kmv^z;s z*D~oUFgT2U;HT%h`X;|wDrq8!`MEHYyQRxiW?&}NTZ@|2fVc&I+PG6~g42nE`;}mpn4M9F?F_(k)Z3Z^@v|z4{&8Ai_GXCe(XWfY682}Bk1`26pp^~t- zDp0sl-bDr!pu<1@UmRbPP@??Hg=}CEPF}kOuR5_y9!!D5P?y=wF~bw&Vd!Ws9dts$ zMuUV5k89tMFM(({dA$xx0YBEanzl~6B3s=B7w{2KzNOoxf&6+pCZpo@Z`aM|)Z|;- zq3dAd?}B1Me#G~}Oi7~e@KGHd2`ln3Wn7oSeoL)JJ7tVbgKP$O|FYz) zl?R^giCgj6a%-K}|L1W$cN710kd7Xjen&lN0XpH@XdhPh+W1f|!H`F1XW*sO8ZcBZ zhjAv^b6HE0P1Hyskx4j&_cP5WGZ+ZHu15dViJ8c7Nk=1&UHNi_Ml4|n@nqo zCtj_$W0!@0|Q&e^Icx#|8N4bG6@87EAtI8arV?%-CIzwB-9?j2E}3D$^bU)627!wXv|gY?=MwcF(A zqqK=Y1};avVd_IR?SX$WQ@gppYgTe$C{&*s*&7IwPX}U#6My;ErA# z0OW3xIa_Rf3q1X>!2R%<$Kxyb9YgO*Ui4?72jXkU@Z@{IW^k8qYN?J0(E+P~lA}{D zysSb8WCni|+z&!_&~0byTeBNn!~do^Q$Tkh;4w50NMHO1{mbq^`Q%1c^S9BezZ`?I zi`LcZ;GBX4cOqj}srZ=Un)_W+fchX`sbDbRizCh$#vGP)_)2=++NhTsmEP3%@R_IM zTdlg}yl%cm;Q=)P@(|NvRH?_sJBx_!CXbo+HHcj9&wOqimdxJe8D;k5^qIvbeV8)j zQUc5@x`NU(b0HiVh@F$MK`# zjOUTfNzD%rxeqDUfXfiWO+cE1Wzb;*{>K6?a}%mN zUItAaB8h(Ey%vZc|C$9j(3c3erFJ}rbnozTmshXcg6P}buQyuJ>9gnJK+Iv)8XT#W zgIPmUEK&tJwb^Z`lcb!(04F!CEc!&e=EMauZDG?`Q*a7L1JbD432*Uo?3Ea0ep%}X zs5ra^E5h?+fkn9+MTUA+Nr4ev2dO&p`*m9;F zo>$nSgql8w-u&%XipL7~@<6yFIxG09)*|#h&2tkZg2Ly*0^sb%m1c3Zo3%C*Kxar9 z%*sp~o?{&53Ntly&<#Er<29qGqT)lj|5qpsCu9FT^e``29L)0iSaKBzN_(nRE!VtV zbs_)3Ke$v)eQdSE%zET3^K*nX1%{9MS7*90%zT zYS`^UXRGdGQ~>HEgsU-=9%;o8gq8L_5=Wrh?`?mN_yi4~eS1VQRqEhy6pkG2NRqat zX^`@t*O`%dOf$UyVf=I-e?U=z&%B)ppKS59hjJNN@140x^(;aN`MjEb>*`1T-*S(V zzre`2#XV;V@;J<8Tsx+jypGIBaXSxteBKE}a{>I*c&?92kQkJ`Vzrl!ILZ$%IXw); zPrE5D3yEXF8=~lcA38bXYY%C1#{UVDGyV@VAHMcb^iPLg?LA%WpM%BznTx#_{eR;V zJLcVi2;6J(PT)6bw(5=Yb_yQ`Jq1~~eBunhfxAHRQiCjp=*&kU10gI$agc{>ekkmD zE$v}`RCTw#tDiTkpMfUZEIb9fx0OP+gfr~>PQOp1juCT2?Q2C5#6_&UYPtC?Rxj9Hs=tlK+lg*z9WT-ZHVNwvP68De> z+(G-YxGQ%N4nVa9^;69!W48?QtGSBUe0F>}yIfFk*Ej*M%?G-n=*sd5k^!Q;)s07~0e#|@n21w3^wnK4H&oqS_4 z^8N7N|2rPP66}R<1ad-2uWv=Crk;ow={pvn;bUqdxIU`fIWU#vU+Y>UR6JLhEx2{e zM;OP;s28Jxr@!+|RXS6u2$7`;gu7_&PbjFw()9O^6Va5vhCW$k^z}~~i3*{tL`lHT z6*3^hs8pch2(RNS-3L#CXDapGB0A7E>Kl*%$=lEo8!6psg{9{~3}wvv#dDJV8?1Ot zJpccWpWbioYg70ju_TFm&tFTL5J{8ZA(_0=CvRnS&_{1gSMH|S5 zU57&63OSGqFHV5S@W5DHL~;uP?5x@9n^O}NUyhfgn9&UDCfz%w?3ZYItvV+y1**Y~ zdV6~ZAiV>_8kR(ZWjqKm0FP&Y9$QS}fq_svcp(N~+uJ57z!lJ>b6lk{90X>?;I`m_ z20?F;e@JYwjEo#9HDye)EP+a<+Ji4?*kBT(n!fM_DWedthGgo9Umr;a!k;l9h$;a+ zjr;Hzz>|sf;ezzwaA#uVLBet6+MV(NoE+MRK=e`NF}iOMOb#SKYd#}k?oAwrhl93G zn+O{3rP3{au&P!vGY-BB(#b85Cmui!K+)(sP!^8NMgt}4^ZRWiOYI>|3*2j+^nSKh z-QIyGyzh0!#qVhNm%Ae;Z-54t!78O17BBz>$#P`jC0h*}q@QQhWT*r@S5!D`8ueI8R&1wVYEKF;7 zEf5a4a09u4=#t)mN2|JZF?w^huz|1=bUnBrL>zd&4GV)@7C1Ene>`1R&Ql}qs&WCP zQJ|DYK`*aFT!r__gJ`YeGBnb8IzGFTmS3+9x{{%nc533W_!c(@?*B)KT~MdEc(LPs zrB~G)1frOgo`G9!tt5KS!w|F0VS^F&ogggaL3lhtu=wGLnz1Hvdw>;IIU;;pqwpb@ zlC;99mne`i^lP1wfb7AscuuQlRp}ppIDW;Fi&xxQ*QyY(D2R_HKDVfA$T72sf`4lg zJ=znif%(EMgm1VkzCS8qHP{&!FWRa%G5|aortGuvWZ6?j^{h}6~*&F zqZ(@FK9jDu_rcwq9y13_L=r@Ey;W|$_UOa$CI8Dcd?1R?+Bf)aiMsIS{6R!?@e@t4 z15OeIpxS?2!-t(2jJe|(s*n?!o56VyP#Y&!Rv-<95U$@StlYSMd2Qk5%Z26Zi-4>bjP+UYaa8g=N+;zbE1I+Y$0 zy-Pgelnb5-p5csbL)JHD;To^x<)0ii9u$$%v9>=a0qG z=~u3wa}qi?cB!YaXK-BF zxZbJBM`EP}>VCLPsH}30h`MkU3MtgQP)guDqMhp{qbUXgW%yRqz1y*{Dt`kyhDBD~ zuGKf-IQA$(3xIrwmyfV^vN zB3$5Q!a*DS>ZB)O1+_wjz9?U;_Xb;0@@GY07|2WE!3Y&2gE;YJY8+9m%O^o?sWLEwpH9YokjG7w#x0Nzn@ZSp< zyPp`Je(ws`g=hqUiVG5?;eI7p-DvOaks`9KIB^Yf7j(67EU=X~MvT2Ezm%j;U>dR1 z(33p5RYy1pUQ~Pv61Ok3L-p;LejL`zJ3SrT5kVU86p#?R&cM!*VgY5h$hmAH`ar!K zqL3>}SQ$f+5ypa$YS#ByR#}eIyJh;16ale^JFe=ybdjN{i{M5+dMR4FG$Eqv05LC3 zVYQ9wi^&Cf_Air8AxS9QK>Qon36x^Iz(on&@fb{4HgZNnrbr|J34o=gH&fteRFKNG zCIUP-C!)W5oAfWkF(y;v1adf(yChv1%-OM-V{#yjKRh<2iY{whp;w-sq)$4EqDjuP z9g7}$Sjzbx8A;FXQcB@wm<+hGtIwK1*=`g)I?|fwSDXS)b(KmyT-5hW3i)kKgP^3e z6vNnLZ!x@GV5zy!qQ^$sZ^2RJ*fgA_|1LeamhK@t`s`Z$7IUrv*|XQ6S>TJY=<$c+ zN>=+f-@Y(|Fsl6q{>aE2p{n z8?{fJ2m- zo~ocP)??G*E9$S>W?#`$QOnpZ??GX%6ke~wf+0e{C4fWG;uqWWt;|RTelAFop+HG5 ze~~CqdX=dRa5u?yaI@fH1~S!IsY|!TqR2r5k6E53Px3J!L|XY6dvIzDFNbi5;t8ga zwdY|>)UZ^7@cOX08XR(18SCukP<^sogHFZY zT`#<6vI4a;LCVPy2xneEGJvwq+G713a1*dAyD4w}OW;R1Pevj!LTKtR#9YUhPL}hLd7b%^2)(LE$bG&0F;|bggkqi{WjCWUF|hRI7^t>{PPVK%r_< zt3fl^tBl9qip#wUuih1RKGAMb@5+Ex`53ethrLjjE(!HP4}gfKiKN3S6$7(N>x-R< zH2Dg6DR^i2ux!gg@asT3123MzF{%9#;d7g}C#2;ZE*?)hmjXQ-ogBwqSAgv}#09uy z(tT9b>e){p1D>9`_Voo>RM~)WW%%2a(u6kzH;R8t&-eHH{hycfG8)-R(_RwX z>dZOM^MCpMfA4Sqbu*$#@BI|86$}$RK_TdfilgBCE?!ZIv;JQoah%)RP`bgbjmL?!PkiYs*J9Y}0FmP;CUsCKf$HJd8jjD@ zG5SjH_X$XbPj?QK`cWMR!~ScCGCd@JQL>HPk1pind%YZvb-#QMfxe+a_xe1g(o1wq})@07oX*FhC@Y z>_?_lfQMz2jn6_`h%RCco%;4I_o-p!{#CrEdPKQ~yvktsR@Qc&%I}hXxT5I4 zPGxPwMHpg5PA?cUX+ad7)|gNUhs20jYdAZlTZVoVN62r64MX0?L}hv1J6a=;p%=Qb z{G>a7c@1|fsvGox%`1kFmyvJrKK}mZ4YynMyZ9gy5seiGutekDR`F!c5#pEQ&RAQT zEh5(Iu^#a_<@E|ucGQe)EeZEFWRr4r>cv@9 zFzYezz8^6KN6Bd#BTz*Uu#~L0yW;Nu= z{CsWjvT+GSFsSY~bq_-u)6hS55Dk5iKm-hI(R8yu73A*{0}1taYG;e){YrKA$+j;p zdUIVPrmzqmhkkwd9R7)Q^|}>{2|d+RTe%a3n|)?opjJE?_%$?qE1q9TXYp(twnOv~ z7689XxewTp>ZU8-$^d5#t@AZ?1dxKv1dgh^;f8^7n4=F>grB0HI#gjpTU}BM#6cxs z+FkD_8{?QsU$oB$8X_|}z~A5K!?=-3^aqs=O{SlvhzJ<{ zj5K9NmX?SOD6e|W^e{p3cf?9p*6|B8Sn1 zae8KK;#~ObaaWLNL8pqkyFO)K&P;oe+C&}>NV0((w%2HV=cVpS@QUhm3mOt+2omkC zzj#Om@#Yvj59*Y4+W9%sELV0_%C&r#n9#=Vvt#*}7NULG629WIuc({SYkR5);zUz7 z?ri3p;Z8GK$(K%=IY(;sj_=SVLSAQ~ja+JPH45PpxluW*lEK%bq+SZJL|2fgeRi}7!YrRW!nEJRi?UoPb z^CBzTa+kRuqNd|;AMAEIj#s_zmL0pXkQYr~+cW|)c>Le^!OJ45C zGYD-qLEA(=bH1mJ80q}U3$+vp{_S6imnYgL0#f!lc?ZfO%-U!;{pH;5A4yE(f!EmF z=+WJrofpb&7Kv zDqdc$AhORs4^NWJzWR=}3zRP_(I*E57?t^MDIHYaP~Em3&N$i#;7T%oiSqEa%~?}q zVuS;G4@|XN$gvRaL()T!tLuwcEiU53pp6Z^`;7o)?XiAi7IY6eyQIV_Z``SCs}@14N2s_g`3o?!XzwW)#aKWQ&!cp zW0PuMe3uM9Qt|P}O~W|EQFkb!Tisjlov5qNt$IyrKADe?&+n@DeEnwTb$>qwu9a!r4>`f$`Uk3p9Cxc>b^Sk-c#oqP}zNatx;hZRMYM$&oj~^(z=Ko2) zcyXR3)$ii?Pdb+8zuR!dLL{2Qp>BH4AIVma$67l+Hql8LR+}5|teId~euu7S&Ale8 zZF-X5=z~Jx0lPLjAggL&k-zL%Dl^O;JUNzc5nxxs&8K-Um1C!;s7{&rc&=Z}tA^UE z90*(o9nDgxt=EIz>@mCpf|S0KP=OH4P_ZwQE%M24mu>P=mZQJG(|3Bks#_ePvCr*o zQUkQakmbR+HsG2&Q<&MG42e|7#XHE?YU9Ine*LNi+FC{TU*r}25f9ty~8okS2pS^O7A_$YjS8T5=vdWUu=pKX9INMf-qEE`AFXWBy-6G9;l3GbLtR0k) zQ#fCDY8U*B?{1FH$eCqbfdQWw%V*D*f69TUjIS)v%V zXU+X-wUUm})f{DkiaJ{8jbtO6fk!nt{Tf#G=nV_oV-q?X+rMX8LpZ*qa@*8Ts%wt* zK(isL9y)7k`k26@PLHm#ASy zBcf3`y+zFH8#jatJ!rR0WiiG&I~|87*OzS`!09sg1cpx2?fn~Sc1bH{_6?WB_ooI~OJY5k_Iw{n}>JRMt=xJduSgC*c4GtjnvE*HI;i1{N zhAWrsc3d=5m=aYTWtzS`Ti%sMD#i?Wy0oW}`13)_gWwARXQya?hBjUT^E_vfAOi-< z9CbPb(F7cKGNfT^2&x~gGPZ009azshBxS(Q1ukamQR__+_wt!k*ua#4LQ133ZH*_Sgx5wW^H zdnGawor_-axv6ZmZ0%qN5LKS4i4%l*XdRN>E@+#c4gh&yoLOt(oNVX45;lFlGuqVe-*scoq7sP8Ozl4 zHBR$n9!sk5*Pp9Ae+j(!D^(L_2@R_zB2@Gw@4|(AiBTU(<|S4+oLAlGEd|bCWvBT; zI_rkBKaD%1F({`OS-6~;MYb5egX)B^J^tP!-n1XKIu(qNzSGVoM@rx)X0GQ~Xab^| zj&%GhRJnoM7%$#(&(ZX^6U;y;#{kF)M=#kUJS+rKl(L4Y)3&A$r}exCH`@O&edpFU zHY7n)U_kD*^ER}W2mL$!dXGY-S8Do>2;C^e#7i+(lTHcDPan#cqV)NEUDv7gM;W4> zwsuzo&|Tv|Ch38f^v`VK(#kJ-zkC zG;5maZkL{fk^i6jW?)(NX4~V_f$R*98 zq&u?bLUfou!(#PT6!QHIV#I353_7k7*dv3g9hw!J0M2A;2tJyoXn!i!we!<<$!p=zC0_Eg9fYS|tK!ad z&}2P!RG7wQE;RI}_HO~)TkQi`dnl!)f-MTsj!k9yVVmSuS&lj`s8QCEeoAIboOvHZ zEf#`}n!#+UKAjpKBAP}Ewd4dG!etMi+lR|uPRXU^-q-}HIwuvxV#Suu9>kdVxzy|R z=zSuNa3yK?B-BW8+TA>!cVcq_61~3gC5Tk_8#lOdg_JBA+{XHU#$Kz5vxsOZDoMLnHl}D^qHaMKlC)!s-K2e6MlX!6~pZqlc z*8MN(d3ji`N`TYz8YkIwUjC3zY;+&g|ISX>gY!2?>si~Fcp zsacCVUbE~I`#fFqGc}z|sg}3>s!61i_i=N^=NIl%QyQOt=YIA?`h4m>6UO&1-p>xF z&%b*=qZ0U~Di;MUd6y0v%}!wEY@R$_{cp0Xa3VdI+AMP2qUq-)Ihn(4b+Sxy#d3WSgdipkH z`5sN6FF)V<-pJz6yi8kjm(TU5} z0oX#5S=RZ&Rb^Wsr^K z@Jw6tZ*+_uVk#Kme+@IlibEZ6ea1eg(MqS9+z!NEw79rNxbRe?w3&F@x+Yl_UM2B4 zX6yY}6Zx?x^c-U1*6^@sUz14*mtRDqaRnku3Cth;gQbR^mvXW}idt?>Z`T2uE)UU# zO|QMabm2^UAvKZhZ7_u(!*J?WU}a}&$r*2^wkoo8c%*WO#FEX!^DI6h{ZCH}tW`D& zDgXljWVD7<5K;O#EP>r$E3(<&Y=36{%4?Ti`xj@Tk6VO3j#o&~k)>yi4$M&&g~nLl zmRF#JUbPudHi4rxYx7=ztnu6G_+ahW&AFc*w0K&ZvSjP@m-c@hO?95iDN&@B->Kn0 z)>H&ISI{oi9m=$Mfx*FJu|{=z(Z%YNeOt0I5`X8x#>&^sh2&9lU$~V_%l*_GfX;A@ z{-tLYLDAP|FE65>zLp{pXZ~6SWal!4N)(#M;Q%w3MH^ne+VeJXx1_>sNDH=NbUbp$ z{KeO}a=v%(kzV|&&A8YR5n&F~c%m_%@~Acb(MW9@uhIgCakjIUUWU0X#!z?$PIx;k zOLSLP0B@o&^V5YCr&Ge8PwZWw(ls7e~TsH)ff5|>sSTf@bz@C@YL~^F5=ekYSy=MoFwuR>|gTJ8g^0%a_Yek zcs+Alooj`uNrq^P)r7jagfpO>+YE@_qn2mgIw|=6ouNJs_#Zm`x0LMQVGxT=+cm02 zfT2@k;JJDVxnpystVUK%<0mYEBKu<8DeuhF8>MRi-gH=~ZCaVj6dva zo2A;fwDN&T+OyUB?X&F{I>(k|9+Kxz=vI0&O9XsH*6a(cg6h|2%L6{i3G;0Is~5^c zccS?a$Nr;4rYwBe*_(wwgi61w_ioUyjg)jwp10RFZqjT3N;b!1wc`j)p7~ju{|SRm z8giD0<=~R*s)kqt5W@@RZ@%%0L$V zC`*EFvuX&B)bRjIyE_U0=<7Rd*DoLo5@MPJctq5C6_(<6hxF7L$_}KJpGqJ5b?n1x zvRl3(2X?$ed4Q5c-Jj%YxcLTE^(;{MwHkA%1GjMRS*vdNnNnCHJ~3@24Mp~)%cWGU z7vw5QwPfV=oTF#*=POod%MI-dM~r3eX!f*9mV&P)iXCA()#eGl^f83jXBUq}pnp;4 zu5qeBKc1U%)E(jp?0s@H*hXXhQd-)wD?u*tD#Ky8BpmBp&d+O3PQXwmITFJk5+{nM ztF}YYP^rU;kA!cd^yw;Yf7#2lr0_UzsTFJ`Zv>(Z7ds3e&h1XNL=@7h4HgEiv^9|# zZk{w|5Aq0|lgC5$22~|@OGJ6CL0C1QZ54u)Q*h@yzHaN`tRFZb6C`Qx+HP(4%|%of zl#<#od=0X(AxU^;^5ddT0TaxzZL7i8FVE$;*40h}>|j%%iAX~J*mkp)^d@>S?}Wv5<_xJOBtg@P&5#RCUwv;kZ=N}G zmfm77(?$-4*W>DapdT8b-7`X3&~;RaUeR;Rf5^m83gd=%;Hsvv9Pym!F-&F5w|2Zv$>)i zD>%B&BU0_)k)$c+OZi_*|$#^cagJIW^;QvjYJLp-dWkQ@v z{U8EDeMd3+7#@!!?ZVi^*>I!*kTuK4^S|w4mE=ZS7-6uvkqh~`8usB0h4WBJ7Swbkr!>%FT|dCW(k%k$dj zxegM|OiK~uL=^M{q;is3=}gF<^vX{kRSlYk8f*RRvij9XNs1@+vxIx!@Nr2-8r>4B zc8XUc8c=_E#8gLGZ(s4Wp1#S7Q@>A**>YNVHs1QNRbQ|Qd=kBNzkUXfq;9ued7#Fz zH`ngNGXsX=veDpXwK%n*3n5{t8t;K$bvH8A=*jU*`FxNg{B?sUslSYl!qrn${{U1i zt_fL$4bRRqz7h*VCxxBIdfrXBmhLsvp~SebU;eW{Ff>mfVcw}$I;jPZT%<=~C{ob$*~DbtoYTLrU;*45K{aPZ5CT&Gu*i->_9pUBo2@T7 zzv(zEZBUJPO$3Iq(;2>dueM{@`<*K#WETB;qIyE$+#MS7G_FP*c?eIne)xOdy(cV> zvMWSmQ(kB&yE|>@%`Sae_cmy!y0^8rPGc%>QmaBgs?T<=kL9}x>|Cooafu(Q3V~m1 z{luh=$4srS)xF*g7>Ju>0$%EtUY`a8sE6OM0oZ+OZK#gCF(-14SQsoBRS-pc3WCowPr zYR2hh0*Y}YGd?g#L||7Spf;3DB^(4P=h3Nr=R(eM)iF%D9H}*zm;dSfOBB>azwwlj ziGEz^Zgp3pt(Cje*0x|hTcrUk=41M&ov++!kEw*{(xARJwacZ3JN+`1w$rBrlp!+9 zn8XRKE-51E+wAhFkxfWu6Zug>F{-tHV=O=VY5z#KW5sG#P7v+*-BVdUDG%1Qv3%yT zvgq|kmc21*+-i{V@lT&17C!#zlLY6pYolJMk4iR!W=<1NuhJcCXZI~igQ9tq2O>W*dIvGIQ0`CLEG8J{U*%Xv0&ZF@cM(O|s# zvPEn0>MwwB^fS(gS{V=O1%agZ7*@SDHt}|7`XN6#%jK=j&Go^~*S9AnrpNPX_kj$y z)IF;A=-@h;PcQQ6(rT8SeJj6e&H7Spf?5YO=aJG{!mcYC)U=rU1SJ}V!r97ST*G9PfVnCl6y zb8_Di&YW35b5TxbTsjiP9S9k<|4-Ud+yl3H^JK2cl2vMHo@#y=5NO}xB?ky0M6&n* zWTctlKJ%lIT?~6w5@?Z4|0XxEk`DA2&(kNk1cJ1;q$(tR$F{Q_f6Y%1GTSBsW)DXXI!p`T^vOn zy9rU=Pm=wTD*Ic3b+|W7>7-d>AXD-E=e>^KQPe$?-2cULIpf{lnKQ4`)2nmc^jL(6 zcGX**6?$<^3d~)W=N;V@@fdL zGxG#|Hcg7OmuL}jlzJea4!VmabF)()Ovi<1gt0Yhc+>?kyZHS^6tyLnX@V+$Cynb} zz_Q0Nv2!)eur@xwiPn5~m?e zy@h)=-YrK}6|1;XkkPpSMmhj6XqX zq%?mSn#IqWlW;KsHyb_>4W)Vfv^0j`s+mJNP)L2PZ;jRK9+|4%ZMy{j-wixWq)C?MQWFF_+Y`=O(SL z&Ybaa8P)h>om5384_nK%Tq0X{YZFr5Mux>M;qV(hUBb}iw^^>;7SGpIq?cKRRV-es z28a6B+qIUD-Bi|u2)LL^nh5i$nnx!M{bC01tVQ4Jh{!lyMZsMzB}@ zLnTlaqzPp?9v_Oo2A@tKj(f}{rn+1qU`*ATsX*6EsaUsG&AyNY?(?+E?SSXQrt-64 zb=z;ya9&Ny5!im)mUJ@avP+6_QsHdwKbyD%J*jp{)sNFre#pk#tO2^=nn67OLSWxf zv5*#B(%d5m+0jRN_|0oMZg~SoOa+W;LbIR20Wj6rBqgp=azRI5s!F1|8y6i6oFr~h z3uONMh2Yl@E(GbR+7wR^U@%%t0o6-}Ec8m7;WFxEj8Q!!f-GfN8iV5$^W`VA+mhsR zyxZBkVXStCzC+CweJH7%eRTi^L#0~w<9;cn^~FYF@4oIq=~Wu0KRccb>=6*C39_Uj z2awT;RLBG_Xaf?-+x?mqF>xgSl(Dt<=_lO;uUDYEM{N zgCxFSa`}B#74R*wCrK_n^1zuZrrWf&u_EPbq*G^7+Sh0$dZrA!jDF^5C~hO47+csq z&qhfZ^nh5ZIY;x?u1S>m&G!8EEz)ez(h2dCDd&!(4!NOA97vUw<6Hse6=O*CC=WW$ z#156nAplnhPBjyJQjdt_A}CEbCy=t)7YtoU>GwoB&k2sDdY1KaA`z{XBBPd8X!nK| z?q#N|+nP0Xsj1}(V=Kb;qEq={>`8?T}EUN3R=?=#+;&`duyAT_*8< z_0IL;1EvmSc!Uws8+aO$dP$BMSRWn_9dSYkr+Z0cLMBG}$uc%z4)F(l5(Kc{{H3RI zb*@2uh(g8WO-eJ6{ZtzywerI=5eB$5(|y&+Dk`FYC0@~~Uo4Fc(X)d@&-|U)f{`6U>)B&3EaqbgDd9iI@Ju8o_8Mv(EGaQOL^V%Z7OQ% zU%$wAm$qN!&) zeiQd6R1L?dp(+X%^@(l!vNs!!9yzoO5N3tfq1oTibI5sWan_r&)`Rg^CcjXfXZpSG zNa=)hP-s6Igr|&SSgEK-Z+52hQ$k<4Z4HO_#_~6v0AJtg_wt|BlOYC#@B2MFLw2zT z-5!k5NzX`{5tXo;<#YNm+(|=zUabAR%yHN_L!Mjmd)e(~ZlVI=+WXgI`9eA0qPLQK zIs4VQ`TW`zeNy3B5w|iG#qJw0zL&@}G&Gu&=@0_brNWp$yN>FeidW6A0-M*pZ#^=- zAxGXrKr~=1F(Dk#rSTj863D+I=5f9FW;|E}apO^!Z1M0H^>Bi5?Xm8C@s1sa`&v8^ zfF5|}vPTto@^6|?mM|an3Q*M~y!qF>IrJ2&SO3L27XA9=?)~%S5%J;)?`pg(E{rE+ z81blnSS;cX>L}S)rF=>c#mQ}M@AsrtL?CkM_Ccs>3RQkJ=v4i$dwrn!T!T{0UWtvJ+zaZY%J^rhJRWlu!4rLIVM{l_tPcuu zy{-U?AiJ-O5j0@YO{Qm)mpD*YW8Nzz3?T>l*T|oaA}>vP_sp4iMWJo$?gm)?zAHI@ zj{+ZOWV3!o($wHzqOExz%sjV346(S^TmjnLHrC~VG~8MiRj_Io8zI=#+eAGO?bTg} z;j+u#J(w@%%(sU5Vl)G4T?0#m9K|^aGLLk7w2ovDU&%<*{r~~-Uz@p>C%w{~dyUXp zijqsHnD3;vf0(+lW$BV=kdQGUSDe@C0AQ^j*a+Fbm#X27CfGzHP;E}pW>A~}a9?Oz zrgl<)si8UQ(Pj|?mZ%trxp6BMx&7=*erWU*E_bKtjROjhv4;MMHgD44z8TAg6bZP> zz?VuKLDN$6D)k{RX>gFhx8CPYqk0Grk+P+DgI5GMf16)l?-Yx}MsLx9xg6#X$MUo1 z*NJ9VZ)d-Ll-z^JDzCFdS>+6f0qNn~Y83qfTT%0WFKx5W)$bw*+ytH)AikP>YO)HN z>VoXaD8)cexNO)UcIzsB@oj#t#+8^A*Q~zLN??)UHcNNYd1&1+oQw`T3rhLx(lnbS z1-G18#~PcoYy)}nh9IjSDwO5nY*{0Vl?Y)YpwV`;V{rS4!sin9f=cq2k2*qM#n)>a zZ0cgZ-KzSoIBiE>>Ka20tKkG-6IY|88~ zBa3qI+PPfIUtzOCjp|nxy@GhA5xvRM=5Lfv<93aT+9*IE@5?E#6Q#GE>-p{;O);!v zuA(V8BRuY9VfyH9kK{@NC|ZEY60xz`T9V7yb9ya^ZXRPse2sil_>F29!`TW@J53Nl z^5!EF#qKle#U}8jnh!q!sjk&HwWja?XzD9hAu++3XV&hLl~FxcgSTB=6vZKWGMR6p zPZ1+f5T@xYS-VKixYQ1p{K}7J*9e;ahNDr9tcw@%pr0QNH)xx1R(U|7Nm=)}+a#bd zq{%z?_OhN+_%KUMC~o(`#dW7;<<|{`&s^<+KN-v4JzoxW-mK9pyf|TEtCvkyQ9( zy@JKyVf5lqEzUWcuNF2;OPo5lYV5d_R@LK4`R+(^cT71KLTCz;pkOfN8~3^oc9xwP zb6lW;v$6CPysAE8Dz5Vpl=mbA!UvViNm~qv6xJoJP|DB7)We-3d<(a>pz_1Gb-)+5 zy{S04)@o}J4UJgNeB>B3mm^(&^pbGYLaxE9W?4k^{EwrFRqdQWaPZlQVfFd?3QSFo z=dy1r_U?W?MUP7-`zW>jc)l2VMFm%E2bfiPji;y&&$b_jcD}p0OHQ8wgD(=5T&Cz&PBypDp^bEmmDyH$&21n~Mvr(hQ;8ssv>yNB-s%PCy*G4w zydi9O-o&$H`FYNi#tAJuNr}E;b#OO&Z;<}5vv*TlME2NtJ__$MRk`^Z;h?k7qQ7^X z$#%Ld*%u>vU< zprMX6xJhuDY9R$h_zU$mId0F}o@}E6149g=I=ui?z$9RJv!r4zaR!=1`pq2zhs)9`PyeYqw~<~S>)*kiRQAZz^R}YrbE)Ryq77bXc@|G zp2>Wr~L2{|?0-AarVWM&}nj#=ycJ{fHv)@Wp zol{pEXKIS^GO!q>=7i{-n1gfhlf|Am0!0);=vn0asl1WedQiY8lrbl0aq;fjEgb-W=vYXXHz(zz)*b%(Ow zLHFIqXMPr^?5i>tLv02d`D#$IN=D9{S&9HMsfW9pk3iPH7-k~>BWHO)ns=LG2vXE> z!J6xo*l$_&QRHw?oJb2Y^G!EAKc@P+yJO>{s-$M*rn{g*j(UUL@wrct{P~KPShTWQ ze_Lv~u6VMxO1M6^&%lcy8)%}Yyc3hEJ5e2&T`1gJ<=xpTR!LXZY;W{PO3%KzcI)*m zn$YGn|E2lu<`#oZAfvUm))K=_U$OF44fWuFL(ws|In?C9Q2+XXLw&b@sP7I8^#=zW zO3-R-FdG=^4@VC*;N8k6PgFJxfX}iwtG~tb&WBeG820^=oHf97q4~}{_q9EdWq&l* zns(JnC-ZM80Ze^~C$Ew}+RFY7HHBb_{%MVWH_QHH^uiZeM`(1F(c5={9@U>G_fVfXHOW7A(=|NYDBzr(*$e3{fuRNj?4G(eNaZl7hSDwvjTEyoi$k8>N(hgzAK zFWrKuyx`8VUta%hDc?h`wf^Px-@m;6dkMPok^o#A|NprD``?X~cR=IpzIjdvkS9owlrNn|p$|0uE*sIRaSFMHUK{hgF}A94X#QLpQx8eMqC)ju_j3qoc>I8t1=DOPZM6gOZSX}Ej*uo|B~!6 zYYC@S2{M`-M`{^FjztgyAo^Tn?~UBiqEDT6rL7O_s&7>82xzYV)GDrkgD(Hj(d&5a zA8q}~)f>A)B~5wQ3U!#JN8n!s)%MYC3 zDkY9(bkdY6mx*_8+~Gpm$t(PuJ#lp1Jv1h719Areg}?QfK=D41OiPRI#RfEhC)AB) z5itlT7TKFM(4{wzbqedtNxLT9S~fZKR(IVsm0IYx<~~{j&hHMRm$G3iRF!DC^a$%3 z1+9%un)Yi1i7Quy(6`sPWRqj2?+WS2w~AxBM48p{EK1RyvO^pk-sanKJ_#n#H4{Y% zDDjE#p88yOZc>WI^OpFdeKJIq)vk#Z+CX$v2Acse)uB$iNz55ai@tm)OZlQGOfHB zig`MYQkR9W3NB;d#+Q=KahAfvn>`YHOrJNjj#YSQP)k2noF(pTA^8Kcx}!>++K(BI zO&!iJ#F&aX1(S&oA8#k3H8=~gEPJ_>a$-k?8G8Jp(B2n&>Sr;!U{@I zSoJHlVv`*0Yb>~?VwB5FymOQo(zxZI{PCDV8~R!_1?#C+QZSNk=gxq z({rB6VHqUq1E&{GzLziPf;VLV>hIr!T&Y^|A72>yV>bEm{Je=-1qeycr_nH73rMr4 zF%4Id5csgO+xKSt^nxnz`hGgfSGxeVKgl&e{WmC-*6g|5GC+-h zw4D=h?>HWKFIfNMg%0(?en}gLxVc4A4k=7kvVp(hhpcmafr!0?fz?Q+%VlAk&*p^w z=vQYM1vkxYN0JWgB?(fkjZSK5*8#K6Z^t(!m^vTq-rmFYNn6{f&yYOU1#7||wx1Tq z6aO4OcN>9Ch6Sy7{juVEi(M}DC9^C|#XGfW^cNZ`a*oSB(b3h7FMtBPTLd-1C} z$tHA<_%*vi`K^rrSKqlUo*T-Qz^#C}gVj7Ky1r4Dc~}QSfI?trlg5c8MkP*x@=21S z1dwc*l)z=FFm`<9GUk4CLw%n_j}+M6U0dh&>B0@_Oxq?dhD^r=8NoyM&RX6 zEptKnb?P8kQFs-JRuvZ%3Km#!l?A@RL?49D8h1TH03U#e8j78DX`iN7AdPt?DOh z#x12nEU!W7f=IEoAO22ZtaNv8|9k4|)J1kc?a`E{;!q{yhu_;!^m&9m?M2&P zc$CgUgThK8Bg~C%c-7WAP2tRLL>!ZFxhABvJ{W2dWx1o&HuqnE$O9)K)+zP5OHv)Z1>gWDN%u0X z?pXLn>2V=l z_38$uRnJxlvgr_v&xRpip2+iFyZgL#j=R0dcC9rg7JRgGg9^08pEg<%g-b>I(fRw0 zg(=4o?o2M2rxx?8%6VtCNO~`jkxZSC&WKmJbC8otwwIl;u&s_V=0u?&ULB0GHrb(R1dR?#(%-BQ+Gxfmw|)W}6o7{Y(c9o&NqI}s>b}6%WiH(A zttbf;QoXsi&98I`)hej^r1bk{axa-|vDpK}(*DY^Oe0*`-80hW>h@dKK~Y3hKTUgK z<3i4B?vSQ$6TXFAx&?)r)MXXvb*_}|t#s*^W7Fu6eB;|^$}#n`+}!L0-A;gjk8R7cYvP(+r>%YKGHW1EOT&go_*fO1(BRv= zU}$b$}FZSGMR$brs)r)J6T;E`8?oYQ}e7p7$xLRlTv3ibF8px(RK zcwtDY8-N<)&SF&r1!wuiuPu~+RrIXB*;-5;4gLWVbvI8L+u)<*7XE2DHVl)TxdlBq zV(-w(40LrYfR}?3c9>E3#%GQZ9TD_;D}N2WjGse{)_8{F7jyVD{)S;OUG}Q z$Ks6Hy!n>de?pSV3QMQeV8k#mi4{_dsi+GMQ(5@l9TPrr6ZbDQiL2iXik7MyOH3E;&pvrDpPxtIBhw8&l{;GN7uR#Hf&UVNO2D{`omyyv zoDi85Vr&gE{@QE!H07IfeJdz46_kNGsf^??IXnNu*u-K8eXbmk!MSW=WkBkW&)}XU z3c(ZB>(rlh;WwFIyzDPK$aH}a#^0@B)I*47tS`qEVf zH{(^BCF2D2G4W@>DrfU)58-9`srwi1_g41Ip=8B&{u~~8n^|2}mvH88ZmY?0EM0rC zeykz*p+$aS75Jr)G@@JpA&sWHAx z=~;bprwNhJKm8rYF+U0TS=vH?J>ZMD<8lznM~as$>;vdx5J5394OdKr-WC|#XEYrk zvImfG!2!#MgK}|}tHt)2Avt%A;DZ{?k6N4u7V1Y8Lt!vlC3s~M#yLTd;(@VAVCfgv z2JMHP(K%Jp))DB~ zVr-1fNhAf({?7uYL&bOVWLS`uZ1jAIX}NxDIS@e(Z+NB1^jbyFPT#_q_K<&#`s zbljemoVLZi|FFef^TEsIeQ)^k;<2F%d_3p$AFX)eukydjv;V8A7})9FBtM64%L8ZD zo&pxV?JS%Acz!{j2q)g`9kZc!;vBivr^#oWP+&50COBoLCX zSN*TRoS6)zRz4}u31Q;E4%z~lNHvV-h`#=?IhiC#Og?gRuN!tfF@1bEc6~@fd&I;2 z$)g`Gm&xLt16bJy2PZJYuYL-fO^{gI%~~_$cHls&@F)SG$exMIw(H_j4;%i)iRzx}xy0 z_s!voi{~EdhG*d(85?!nQMzP_Jl`LMJTdN2rFjHDs$-Avp#pFXT`vt+_+ZIwFD8Af zC*lSN_ur=PlGnQV0k(?!Ylyb`+Ge1sPpDMe*pI0GvTR;KR!FdgwLsNMtx;@Cpm3hYpVvV9BJ$^*P%UE<^DuCFEM z{^1;I(<)>;h!O|pb$1x!;>g>;YPK++CN}oWE63rCmlF`L(%52e=ORnN%sq3)hBk31 z#lXZf-VBNF&b2L??X32AVO!dn`!R~QD~P-57=WKB-I)_~Pe+AV(_-Sszan=h4&zGq z-ue1@AahyB4XnM%IBmDai^nl+fZs`RIXjdC<97tkOaWyLP1$_ITgXGdTrx=TP-g7k~WD}cDE@UyK#3XJ2d&;r^K&4 zAtQbg7ANOwLP;Wwx=H}>2PIh&s1n(lsyL)ZHD2T^?KyU)43RoH=@1h|eGn9-A}@8XF&!5ob$I=WJ$t+W*b} za%`@~Rr1Mve0ts(M=Sf!WBC{Tvp;**|CwvoUO;kWQ&)HQR_>@V%wIl+8{q%*u;rhq zuVduevxjlp(+$z5AX&wY`rFL>RRi3AISB5*ba4NdVe5T6p>iJyw8k&3;`z)qefP*;Km}gz;Z#fgKNMl)cls z(mP{R(u(jg|JTMgP7k#7Ic*(%{@<~QQ=wPf*d|+cd%z97I#W77rA(Mb@!!hJIyB}&>e8OR68V2(a5kyLY0B;4_sDU3RMnX_1DFHVtA4`fEo5FJF=$A3KR(k7_G1dM} zDAYmssO#5_hn;G+M$jL9_I7+bZwpink`ll(Ar>T zuGuYxJAoS9^HsmTRuZ?&;1+{lyLpL0J##=qbAq6@4~hN?7L_n86UwdT%aCImqtoi! zk`BSGtD77D981&|$}n3*kx^qdad8o0xq(uGzKXP6m+l!|Rc%X(RQI+yMfX~@J6EbB z;lkVSl=($fW(iW!O6uGlu2UpxediK=+NR7aK*U|1v7L3YptC1tKJal=b!791w77>5 ztpw!O02NXAPsW+px+A`2b$P}L0b>@p7q^DiiNiwc?N|2J@6i7ZA+79cAdOz;j%S@? z(9zmmE-6_=BY@HAy8SZD%|F1X4C_c2K1=t_}5^g_W4jsQu=M3 zdJK8H%`^ZOjXy;XV;dW?d8oIYBcV;psV<)CCF!TR7eEEZf_Z!$d z7HbJ>M@v*4kQ0?X%E6u!rsMlTeYB*)qP;~zAwDD;cg}fTf{|DM@gAP~#$r4;9DFJ7 z^{N2K`Z*U|#+*99O9?66wr5qtwDgO|V_|XP7IH^#?%lc_&0k?axVMbIu7uHJt9#Yb zF&YP0aQ$tkwsa<(N5FWoK}sru{UwfEotL_d7gI*Jt$b3L+eF;4sgLJZMAZ-9viPtv z4p;}DE|rXE(S-Bk1&A#eU%c)4beW%`^%pAD*M}eleGEZVZ96e4H7eTJp^gx`Ryv`g zC##2#=m=4>X56iO` zn<-|Lw@YYgb7M5Lrnc6oOmB#{@#*XNRjwhHH)|-6Jjn@NP9=#-VOyuzQWm*y0lutP zZE}@@!p%)~ks3AUq%1i6++b^TJQBES{ZOG*2_P8U!**3XCtNUa1>iSt-W1~!Gfo>c z>W`C@rRy1GWC`L}vEOzC*kZ=mpJe01PUe52k)MYmE+cHSC)<|~crsuStaa$&Sa8&n zz~s#!)$b&J8)+ddhlTFkA?qa8O`(%A@@@5@S2-Vqlzo@zU(J_)Zs%&98xD4^*4}3q z1TB}gTH+?Osw!J=?ZCAqj3^u>9gbLO-vO7e8(1Vs<+BQE*Z3kmU(!z73fW!fMNKot zD)Q^D!|p0@A1hQ?j}bF5l7aPWpzWK4*L8>ZlkmAu#pmo-+V9QVK%=PCSebORpWBIi zupbv|5?V6clJC;ir3}!T5~+{IfNfiT8foiL9EzEIi?9xz0NSykrr9?>x;0<|^!5%- z>XYy^CoJ5|bzWH}sm8+?W{9R^5{K9e?^q{E@O#t%jI*(}1s0_t@99*cEijjpMbM12f z#VNavf&yfFXEgUcO%m>MX`66oXU+bbXg`;qU*{GMKln@BmmPZgzGpGC zyIG&wS^UkzNKJv~5(fd01g*i;%#G$|0=Oy7xGD;$_B)_}g-ab<5jXJK&RbBCxoqU_ z0sDpSrmvpx-;LP1G#_-ST-)vqPENqZmmKYG zTNEnB5H5Y{T9m5QtgjarO++PGsy^uL%(GszOjvJe(wHRF>dg1hsbq_$^lMAf;U>KD z{5w*ni?hiH(H+6$w5v+i^!I)Wb}ucE{S$zq?8s+l$LjjZ-HUHfkb;{>2s_Iprk!>V+fDe_Lbi8ZOL0E zxY|~ao6!~sg-24QF|HWLxUrxDoJ{Fd3Ft3;MXRJx!9HwDeRGZ4R453z24$Ky&Fvu@{n*qG`;T%y>Nc*(Fh{lcXh-)W_NJ8t{^_F_ zR_N@USHksJIMZSA?zoFc=MpcL-2Oms8{2oDZ*{|-6;xat^zLxssMh4Jo+h~d5qN&Z zJx-{tZqp|IUWp;SjWm0QQdi?yV!q*emX#^D{iD0x4hto!bp;Hf-%u?(-6sd0aDcm# zMCCe)1tRH?Ma_}5&sP6&b~+vp8Nw|y@#(1}`R&&?XmN@5c*PZwdOT<!HgAv$u@JGYrQ~OQIeU8U%NOtzQZ-DMAOY8=6KFLd z=weu^R)*){wsr)Og}5VYpHx(QRf*Gk;j`)P!S$#cPz21 zyGsv$Wm2<>pRxcwoajmRix%sYcn__|ZyR^`f=PAgnww(aycnv|i4;<2FdX=e13I4Q zT60AJ!a^mi5|q0x14q(M;0gtFZwm`lf7jtU+beDrbE$f}Y)@gX&EBy{ZNzT67uTVm zWZ*S4nc7`@Dd1v@bZO1;IR8P$6YYzLk*Ncgu#&LrVx)K0kbDG(Z6f(UIr^0*^7=S~ z*!!`^g1y-fKNOakgSQ{chT=wmp@|%F4<87#hQ57@iKr%kiK>8Md{lUMh&cPFC%%5g z-%5z(IF|6VU5hk5It!i`3r<4?(WF0vXe#7~_`RZZNDNk%wPmv5TB)zd?8knnH$-F2 zQ&3H1Y~Es0hNcd;2tg_#>J3qp*)l0jXuWr{v`b{n$oioYnyw0bqLZMjvG5M(SH{46 zYSSvsOLQM)7mi_MVp=aXndF29k1OLTaf+@nm(Wt^g~^mzqkA;_eueS71^5|6CE+r9 zYp?{-r$~^-56w6{UA$z|c||auFbQ9D-*P<_&~UEUK;nmD#C^6;q9?SA`?inO(yX0LP<@d)VvJ&5_))dotA9tcZgroau}4~+^FCA z^s2?ZOdr`<#v84wzo!qCBL6%`WZ_H_TuubvWw^Ur^)VLf28ww+DF0|^?%98T!f-_st5W{e4NTakr8HdC8-Pmo z-D98b*e z?cT<8-+iDUu6+wue#_qzrzQ*f{su+FC4clbBVxh?wRNS?W6DK*`p9_77xSG0KkdsG zKi*6!JpGDaMt<2Bmw)^S_;tcEahKgn>dU>$PsM6eD$fZQ{8D6HSRLDCGA_j~sj?IU?* zTRl>`*H+1kTjZ01wsges5tfmjKEyLe^1*Sl?3p7IuUg(%?eYn7`sdPj@AOt?1AcIx zaqi{&^W2%yvo&V)tVs0F^X$1JlQTP8^mG*VIeAVH%$%v?OZIdtzqqsg!iz7S{DeAe zl$dnvNLgG!Ad&nUwlG*+(Bg1tZ;&3qS#_uPU>V=$Uhnvke37Od(N177J+cFP*}WPq zTkJs@Mix=^NfgmpLYkxf(bAHLrn{%yH!9hTN>aLK8##g{qI-^Bhoy9i_NTQNB~pD! z7o#e!Q7gGZrsL>NIo^+n9*!RwfA!89OIPOa#+~Iz$6go&Mcz7k6`vB3lvZ}~NdCvG z59q?Mw&DQYQRRXCNOR~K_%a@y95%t}=Ick}?b+JPaLrf9Es4^l@$AJTdHstl`wvf) z38axuq&(EQS03zEFMUEURbLE$2|oPdBQ3MJjx77cBfecq7Xl*)YrE+e`-3iipGDdPX(7+JaJ8=Pv0zz-M zNg{O%C2~%+4>Awdwu_TF;Q;BQzGzsvWzQ)ee`klP98%+k-P7P#+(H4NLA!QeWM`9u zLGpzt$o@SF=PSX6&xfj#0l_wVg4HjlCEy#vE3XXP)1KQ*R&th|J)Y0g|M_0~!ly6S zSIg4NMwW>MIL)HzUtrJMy}i5be|h!w*N$IVJdY&93fwNT6TjK6q4`gqCz-+L3{yszE@147Gt1$_<08p$?H9ke2^YSekV440Iuk$y3Fje)_+u%%;_D7Ebw`Xu$ zGX%%0?n9EQZ)k)dzEscG7%c^-Zn%cQNn&e6sX=lbHI7JlaIT$FIz0ebWYfQCB~V%4 z4du20h4QrG#WlKn z;YdDt@#OEGAPv^!(51XTg>t4ugIb@drJ*M~`0}LsA=WTHKX*94>?KGp!^8nfU*nwh zq2G+8!N>!%&8ZDI7mQ=*((APk&%X|$X)9o9XeTZv6^asP{5COb^bk^_ zX*sofyo7Z8W@s)yYHCj^#*?Cc->8~*fv9ps*qNlC%cH>7HHZ(J7E8er&&v7sALfFu zp2W+vc=LV84PtHLISJgQ~2?hEa|AnygQf^q~b6IW>Y0g`4X+TPLwc}u? z+l0kbXIGSzP%;Ne9gdsKNV0_=zM%gHCXyin zZKQa<>;>nxSkLBLZkig;AozSU?KQ+MPA4c2U}rs0G~#25lBs0x4@%Ml1E< zcnYwUt-wcUu4@*0+jF)uTSzHEB{;AfV(&w>0*kUH(P%8Znk8l~-uD555cNjV%v7Ti zYKiz-2=YQPCvBtS!0o73!;BfdTOLpVMd*qnDk+FYw8sbZM*#O60V6z5JS~s8f zD6GTsLo*Tf;3e>haYSGNdVt+b&`;#4MN@5=<}y>va?RYvEKM5WE~Tvsu0@KWp(|Oc z23_9+2mIdd?QJU~O7N}?TUT(3x!OVCM%3PiD{hA;U(By~%VJTb0ZCdut1`N8a27$& zy&lFG63ReJ%3+T>m<##552Mpb+xO+z&h1glkwaID)8RIWa)e{X2)ttn3HZXuRjJY9 zow8JQsOgvs*odyNTP1YeXNB&w=doEbqwx)4mn*HLBy)Eh*oB6!jTkiKPgPQ28F6(C zv+Fw*3iU=9l$9H9?`@$7ixh#ARi(LQ02M@$>jpPD(L$NTm9pPA=YFL}9AabV$C^p~ zk<@i5V#GR@PI-VRSrpfq5h;g*0Aow5sN-aAy0H=Z^Uw3Z^Us&*Qw)_DGu!e54}yWO zS$UtiCu{`zSZwUPlp9nUkES8mJa*7JwQ;yE%-betD#=iXX~2`Q5VeY-%Uv|msw;oR zoLW%?&&-ZY&V!I1$nh1LB?=fLjR@*&5}DjHh8%1mA%=V)B#IjQu9|(A+$!O#J%u-% zog{w9TDI7Rj({)QxZc_lX>@zRJ8toY7f#>@$AP2Kp2>CmHTLN^#4%b*kSUdhwF8>$ zMs3rmtf%(sUu5HxA6%n$e19;oU(z~(Jp_1jn`T+sQ4nR3!Oi5}(>6FIl^rPQ%9^lq zV~h~ePNKwquSa41qyR9Oa5(CC(vaRRjq!{)0Xe==XHc3rolhi7RG1ORQ*5O}U&bBC zZMf?&gTG1lUGB7IMphxzskuM;ApaeW3inR_b*%kyNv#LUjZ`n7ATkOS{_b1{4u3w z0?MORi9_|x1Ne+6l9_9|iIz_!GivaxCipQ$X)YWYr+bEcx{%7UWl*>~kYM`1Jru$8 z7Zgmtbfj#|@3Dk!5?!}f2ZIPR^(#oH^0T-%bd9{fw6^+Q-nf`eEk1IZ8fvV4pW%`p zdxm%_ca;%cv}kGHEnsx-B`xm3vt#+^6RIgI@@y>w}MKv^~rhAaT365Yhx&r;B~J%{-g>+`#^$SW0Yv2 z4R9aI^Cx6Q=@-RHKB-*9J~$0|5n}ZOa+o2w_3`BD zHmHBnE8Gp%@xFbZl5DYDs$69Y^cV|YQ6agA8=ezgkkbN<7@s5y>$9Eu!Eq!v5eT?` z-l2d`xt2W{=ibRLo&lYD$V;UpZ^=ydZv`pY0 z(6bvludz5+r0h05`+aYNSckg0O1~0zvN^j~Q7p1n>u<9}MWV+MxRTXu&ABhMZ6s%P zV)|k!92}g%c2P_jD$sLPgAh_D4`q>03aOV#7me#@C%$ymh1;s%!(gs8TNT)Zla7~* z?7exD7AW>iSv5e>rUUhSCu%`&UrZc)0n_%v_9)6aG_!uq$4t;l?n7UhtF_LACDCMj zI2klo)}TT)M{uR!Oc@r}W}MWvv94WjvXc;$?fx7o8tVW2I*(dYHQD868>ojtLETmW z-3ioQ27Lo0rZW{^KOR;6LBu5;1u9g};|n_O(A|z_12wBhd`S7(13mhXL!zNLOI|gN z>UT;1G!8r*H}*e-C#FAt(MMr7RtNz;&}LF(I{Wd3_@uw$m}5V5N63V_={HMbNplNs80u-t5t#d$Ilr z_H%zt>fwpS=IWgXJ@P7+%2l{Pc40kqF|z{f!NvC2)EBP8AaWod@MOrDO#*}GIlu>!ZQc|o5gFEAy(Je% z9`Eo;#-xP4g4^gS$xfXO2IOuJbc(tkEd|3v)&4|oaO75~q+=iReqIb8-gkGqqF$G) z#+<{8N)swKBHiWU_9^wt-rEJMFIJdpGK&){m{%KnT;0TWlor814Y@WxeKvZ;mE!8Y zYflZYmU%){fc9+?!Krm#93kwvukw^AUZ;5Bl^EO$Yxr{(mLR3`Ckwb!& zYyon(g?oc&ZM=uOCDlVQzX=3Vd>*#K>-(HkW0_gq=#d9@O{5;pbL<7b{t;N2r>b2E5J?$#rM;rf%*4y(AEp5%3*@gG=gr>M= zH=p)K%`t@zw4)ATrzrd1*-6XJTCEGYuvpg_;8sECs;i-Vi}G0o>H4%TeTX`{vzm-! zJh7BCckw~la{TgD#LYv|u6tzSTo4924o%-M>Kf=~ggbFogz%a4K#y$O86kF%sVK@a>SL~b5;NDr>+}XWE##nYJ zd+64CM_SYVrV@MCjsXA99m&VXU%%7J)=24v3DSwam3@xSWLK`i-~7h0V0|SwIHy_D zT5NVQ*iWJHBe0geS;1X0p~Lw9jNQJ0R{+-Z05=yMee=mhK4#fnR^(3s^?Y`qUFfVW zABB>o90dYAtMx)yxpO*(G25=H?n%ShmJ|%KV(S^HYrxvTU!)M2^lF zFvA8;Bo;K=rX+xodzgwNFX}jrROcB$LHT>{{$zg2U+S($w)m;?0r`SY+0}!FP5BJL zj2;@-I^)k>?&*q;^D>vH?6{QAb6cVX5@+K=2wpyB%*IH-2ZiCx5)p`mPG@Mx+{M;K z5Xb0kAL4AMHb>`J;jCzC^wvhNe9AaZJD;3W&tYt{NqQxOW(2JtoUkT`94qU^x_^^?mXnnsivh>dM+CHPVFZhj=@Q#s-PW<#?8Mts>XCH$m_4z#RZRaLVUv9k??~&-zM1dXE5*gd;5FxAcdyvN?1u`& zbd2%VH}9nuNi2cyr*f=ch^t*`jI^&hJ-9FV9ducm?Ya;Yi|9r94?>nL?)Lf!CzLk%k~ zI{EEfDlfz0Ope|}1La19wLD+2I>MU5j5wYapn4;IeF77}jwsaHy0TT>xMhBDr&Lz;~pzc0qS`e^S|7r@Ero2u>v%U=xc(W}!c5wY$;QVoWro@hp^;VtFU@^M!T1;ONfa#<0~MZhcvkXq-|Nh6d~v z+54X|h!?wl9E7k*jMq^wnsR&9Z}FgV%VE|Ji?Pv!IJ<|Gaxhn12Cw2)?hhQxara0kC_`S6i0#u_{ zaMW%;>#goL{dnt#jp^-J@7Ta?WvfaMHI@-$7EAcTSGM=)Hb>&D3S@~^>tv@;`|s{t zAIo<|75xt-`-G@!>$yDaF5H0lM0+>Le?iBn><-5+^C3wAkTD?(1}}CwF-v2%;_d!< zO6ou8a(<;nMT={6qm~owz}&m0k?gae1<>92BwE1@^d(W~X(!=jM?o~WxJE_@-~VL| zdE&WWZJo^1pt2QwR6NG&=%yS~FTXT1SjlfOi=lLdiOEm5Q=D~bn!n-KqHuE4zP^6C znZN`O(xb;+Jgxn^kuPC}&*Jv3XA{8!$N^Bl>|hBGHyZ!-k%_lMx&*h9S4m#76r-&< zecnFmkx9^gCV0!{KsVhXzB!XW=6Newi{fP>=;>GJ*)F4F6eSOO`ts=;_Rc^#F9}vF`ea@iUm*sfOJuheW6|ano|6N0N@b57;uz$ZaQv-L8BoQ)Bz}zCX!~i z2B|otEcrT(*YTe_?tgX_`B=HoIK-oEU+)FQseRsZwZj)A`XCc;F9auxGHZZkSKGaz zbeQ*{a$4$RHGwHCcn|=-K!L(wrcR8&yPTiT!ZAEC)Zyyw1h8azr2SLZbICo)T&`q} zeO6!HHV%L5a{f>dus*GzGt0{QC7MP2BTCQY;{|%0#&QGDbwM`9aIBNLsj?UQx>yrg8 zV8St~ei;_sINZ7oUx8bdB!w`E=Zh0)U%S2YmdhyRSkEBl= zY|K4t_KVi%9MR?=C7e{h)l%V7sxNYM$l#++`&_bdmPatIBU4R&Wa>{t& zu4+N7e-&U@jY;L`CUup^(;iLK^Tn68drpy318|;n(gO(yo#MomO-SpSa!1W}P!waN zfpAp)3s!ogEr^F38RO&Ej1uUtiKbFN<6O}TfrjR#@!to3YMZ{6${$%SZTchVzl)TbN2Be2*4W&C3`iCm4HCKeX=%fkbtSw|H z()P>7eALQ*1yxym#F?biAd<~_{iCjLNy|FFc{j4b0|$mfDjLiE5m{+r7|vpA-GDjI zwd(<*V=rgF+WMAr2b!UhFchOJDaf*ulN63qS}i(S#^vt)gRR6`9#_NGngmU>eo)Sv z3bU&RN6-KHCK#M^U4b0-1IV1?nB`IY$yokwwfO4&VJUl0wf>@9WNmSs+Hf_r@^4p* zFZV5Rowm+^{{RO!i^&>~{pnc#ojAMNYMVoyt)C?kuU~6@PgB>=(OV8z!&XFK3Fv6i zeRxGQiu}dl6i5%wgdqJ2H1exQC(ONo08TM84X)Nq~Ma#H1&o1%2)U>Gk>i0 zoq!IpT`T5j%-J2BcFXO3dus>=jFNseH26bqmg{>x`$w(sIaY>EAj%bp6)a5jTLM2F z^V!S2-L7hH_oI_(3sVo6W&gN!za#^)Kx~+B)0!Z{;R=vnbB`4^;AMK84nNZ2<4=uK zsblPstt3-YzShX;n8nSY6V*}jgk6pszj>%9-jQZ5bysZ&h z9`4#|y_?(TxvU*e^P{Zz>DIT!*tH;~o2>W{p{B6@CRn#oNjRU-%v=Y#Qo%(=>Ki8_M0U(Ya9I!E#0yO)A8&+ zIU|Ye|KLd3rv`kMKzTX)CpblYcUZ5fWf9b;LUofN2@ITtW~zIN5_Y!Uw9E=qF)Y8# z{R+h&G(w@@9SDVf*FvFxSVga`FEP2c-Jy}nb2C>{Ta4exRC zVbX|ucZ+;VtqJZBv_HF~50~t=MP(a=ptqmfvx>8!zgf1I8h%wF1I&ebcO~>oVI>$; zpQU{K#Y6e4(RWHg^yGtUeZg=qg&`E3aDJDzQDm(z(B-AvR>kzot{}zILT|;crC9KK zKDz+|C4Fkm!?TY7l_9Z=)*ow$iGIo9NGZQsXmTxA>BRlX8?7(e>z>&f$-)s$j4=yh z3wmZXc990Hw(74HZ};t!!&bf8KcJl+YQ4MvPC01XQgJ%Y@@mqee<3IHL~DJ1@HmqD z`D{85tVp@#CqE3v{X?Nc7>1n0e{>|5+HEOzE;!O{hfBE<5*b=l8C)(ExYX{N+UP4iHRk;VLG#JhH_*|N&?%R<9cz-nt3XY4jjRYf z-86&cpmc}gv{Erj>rPqe)a3s>R`ctvZyaDX%C%P;t%v4a{?U=~ zPDBrBgr7=ClmyHZ{v1x%}u^T@pTqXltqAC79np|dOYsk-XvokF9aZ_zke#+#KOF$)?Jf~Z z3%FNB*Hn%B_~w3&!8#A8mp|EuUK$V_pO}9@W7~=ZvWeHa4{BeK#r&sL=-$hum0M2b zJH~2*C@k%J+FbJyz9+@kJQ4%J`_`AV{bcfadjk*Dn{_J7zbHdMe|Ch+@93|~mzP$_ z;?=8qg6?c&C6zt=EQtjG+Hd`_1aD~&ZXMeNHA?g#RF>$C-p}-!UBX6gjz0V2)kQK9 zcysrPPhM7R6!{6QCiNWX%dBXvYq@EsG?0xo_!isiTQsw!{B<%v9b24Noi+QMw|%n3 zcwv2w%vfq>bzimB%No>DTo31uFxx6jVtcSal}quhss3v_Q#NO&st!a}>O*VQCTWt6 zAKW7QA?R4vq}VL6dGkP6JhC|bYFd-=zoWy5+D(|We_OKvToW8<@U8hF=+E0*NErJ4jYMz;8clU2SCPi z<-=F3^U!L0C_4Vg78<_dA*WqOBhS~hfPazCrP%Kf++UEltdC__ZyX{G`a*M18nwVs8mK)S0Y{AbQIIe) zr)x;)-!xZv03?hfts~*-bg-10P+9YDkK{)!{Ib5@+AVR)QY4lCL0SM0wP&9@Rvc2Y z-bnOyEG!2&00y79dat{c(*LK1V(+&oeIm^#u~XxnoQfKDtx=bUb2pfouDk&|R5JNk z@O8!yo_d@n$iFj)6hrx))g9w=Po zPp*0y|3E|0(u~?fz~Sui(t@&@NOSf1gE8&$pq2)Q(nYV{2d((Y1uiCQ&(2dUXXwtZ zkF}4#+@4+7BnhY5fPeW)SC~xoR3j^OnKQN0iY93+%D?T7pFW8R zOOo%O+T6B(J3o}S$9_!TU$~zhlI}_#ir-(VN=!uuTsB|Sa7c4BhJ;esMdf~ed5V6r z{~vqr16pTV=Y8LIdv|)$p3%(O+0E=`cH=&s_eq~OJ;vS4zM0u5%{1*c@AgloO~>)w zktEGIZL>|2Y|hEFSril$MsUFe1qB5K1qFo_R#;&L1qVi0VFy-tgh$wc6%-T{R!~rQ zKi}W)x~}^^f6}Hpz7PANlriVN@9Y2X`u+a{kPJFSDN-No5Jwj`cNC{m8V0-A*5bTi zvX}iEATtDOMj%igC(x1epFp*vF&c-^5Q;-91ulCIqX(N>=I+{Azb@cNVX|PZ5M3pA z`u6>Wh>sJ*SkylCsqB-4F%mYeBK0>h>8`EH=DY;3ZQN)_T*;?M5$5cieVT>`K6^Oh zpE?-HK3|4XUtb}p5a({OeErhHF+5i7m6Q_vL40U$utSLD?2pAF(i?27e(^JhP=-O8 zjnQP{*sDvw7JVjFgx;VL7KO0nMPUUAwXCO3$S`G;1>R^tluH< zH0G0)CYKacI}(P4Z1Gw2^YfH~VdsMbBePYIe}rae)As|pvPqyfx8R|$0|H*W?_BI4 zaU>4Gye2!UC39*_%_|un$@ndZl}Nnr&nj=HKMVN|Z;I%sTE^HVAl8)kWpU@N6-#A? z7yJFM!WYZ*Vz-rO@kVP2_tc#M5IlTp!4HB}p0y$kb(Nf(qK*Oi72FQFd`%e_{$z;< zrVUC(#Y5kXe8jT_4d+B9*>Ij=LJE$z7fqoO8$MF|)Xw8`zjQc1A7&An+a3)stDyxO zf=yt-H%WAbt2M_fp<1NFvqZ|WfJ>K>Nv<$XW9$N{I|Wd!lQ&2iq0mM968{S#kwwZl zrVL-gn78PYk&K(@trnt z(uzcqsuMqDpU;WL@i2%?h5z5}`h*8;FA1Jf6^i0(=ZKHE4Z@Da=M5<-*pWqUh1;r| zn@*1e8J_pmV}M6qddJNcAGpOnd}XLDwDyy`h`P$p)5w3y#j8x4@wwaz%Y4gy2V$MZ zyR*LgWL~NV8cIs}Kk!f|=J$UvRm7OG(+kgnq?9Sd`H+rOIJ^~>;9q2oFOUcyUw+Tv z3^Nl>oDa*jkI6$e&LF^{fQ!K%7`pOeF#;DeDfjB!CA3z4RA)Bq{y3CS8!Xll_)Xu> z@hzc_U}8PKzz#RMlsDlDDBLX%)>BU#V{?PTN?jtSd?@ZmaE}n5 zkoLk+NrMtpH&Cpuz@-yxb}#(%ywFG&{;^?_)wZ%O`?PD4_UXZ5(eRCa80-N!k`C@` z2l&$A;qHVAA%{)8L+wF$k2uZa&#W}zsKFGZXc#?BfXU8QhYStmB?*}sT21mljF%8n zWa%bn2eV`ETx+d2VR7cJbnxXluauPRl^DM4P?ml9aJ}Ps9W2T?*ARK}wS5k;6S}=W6nwRG z;cBm3r_d&;n)`QSZ1jw{0rN+&;<^|X`Z8^@1*Q>FKPT0Xfg}8}8iF)Q#0Od;_)gh< zAUKBHoB<(ofD$#{r~lk_jXnK`miHcD&LHg8Z+sH>MR8x>`&L)MKCg|+T?D}$ym<_yzS>f%otG=E6@Mfd zw;v}IlLXX*!u|a{ZozS+82{*-Sf5f0(8ZPuDe1jrqU0%g-$j1&aP1tTbZX6C@YdA< zM)PB^ESuNAbvU02KK%>&O}c?;oVT`jDGf*DEQK?vgR~gFz)vo`_{-KVUyjObxY1hY zlbIM8;7=@x5NV=Rl(yH6cN{qmZQ&M`N2rs%GY#SNU*ATc_$wUg*H-_0?85BxON*Bl z=1*UF7gkw0iGL5b^Du}6T1p4LJaL0{kSn?}g7#%ui z>WvB0*ExGPi2~)%rr=PvLM zn}WO)*30*fDvh}9crV!OiFre@>^a{7as^=_=b6w9Q%+bQ2Ljp!T5o^^<&bD`r9VsoSKWvqx82WELb z?MC)^ZVb*E56A`LI|-L0u3S!fl}%2KqGTiv4Ivht1W7L%Q(+Q5sq8@gh2G_Q)yGDL zEl}$uRa1+S57$KfSi0$ggNkqLh8X+}IjFH8a5D-ZWxE@v($0qsE?qvQyem$y8Z{y9 zR+KB+eiG$MsuIRurDWo%<2DJgl{KMpuo%kmeTheHq&Rj)jv`IX>2oZT&~0r4%H0OH|5Hh=qy8T_nK-x+}Yf`HHbrW!*h9Q>>ei>m@_EH zQWq*CaeZaGQ7GYG`6^x#gq(9}JqafND=g@c)T?Rgy5Hdf%%q17xc?Ov^HBYKbusZ? zT>z4Fv8q>DaEJ#F`HbS-_pj~B?QzR=HN!(q8XXZ7CW3p?9z9n6+%+3)gH+_g*E6dICdF$7qJHrtK-xC)cN z*sL`V9nQy8tYvd!zUl5WUWT!3=5GnHp*RFts=D)0I1grT*gmx3Vyr;|?a*l>PwB&k zaV&zDY*Qe<&rw#lA+^G7{cjSCT)6DN}1AunZS7*(sjO^#AS#yeUxj%U*AG;z| z3`xgaErxwmiJ#*KVT%F-lQy^b2dyA|#Ke>~l?nTSvT((PhI4F;UiL#7?B%qju6n`L zM*_A7!|8j~W)PhEpm@NIAsyoB+6zA7IC^Nb%^L$r2@K0|VHkfM@fd=vK9bqan*4@e?R@6#@X9coMv{1-icxPT7U zy-3bj&46C~1XDj1$DzG8z&s51KwSB8fshqZ+avWuVW2BDgnbn;v(E<5y?a> z-h>VtNi~0;shl*{47B*l}V^VqRD3!7Y zyVSN9n1-NZyCnePh9xQ71IUd5=vyfKjWyc~xb6D&0=GAkiU%hkyaZs}M;7@%_=V3I ze&KIXloA`paeYb;55Ovr_#V^OqBoU9>bbvnC@zCzbh|dV7E%o zLi7QXa|atk?uWbI?~UL~W5zrh#4<~bY|07GP0%H5c67pB;;}1$?RyR|Qi3iTVs|{g zi5Rxp?ufxHtOs-ncM4_1DQ971Y$f&FSg6bp)v_na?~%G}&-R*T1<$|}dHcPl{!d-x zFEDSi2&I4t7G}NxIpPhw>!i6B5LcET~nA{G&d7> zg7|mM3*9w7{3ek{;OOEijGGic@fJ&htPUIblt*?ft+zIAbZ+i7K+X9e|46cyj|G(Q zchCWZ-8gTNB4ap>D*OI8KKOy@b>42RJt@5{h7LgU1dhbEFuc46h%SeW`SN!3-YsVs z`#XS@?iwFK3N_f^-v32=wpZt>WM&Aer@P5*dL z^gB{TWEuM?hVmRy%M{#vB0mLxkB_jSy(O)q8$14^cDEPh+<|vgVK}Hs8y(+-WCTQ} zUBJ-$p&*G&jon@Sn?t(x(vfW1#kZ8%pp~52d*)~;hMee z{!}x_LV+7Esb+pG7*i|4q_g1VE(YB(iVH4_cG+fx3zja3?|mfAAiQtU3cDl^Vpv0P(~KkY<>4c<6(uQYJ>cnv_rwgtTAD` zbH*%|l>Y5zEIy{=)uWQJh+9-;D)M2);8fw*L%qt)>6)!|XnR~{fZY&Gdvh!iaWIz~J8 zEw%hSV2V)NOGgG^N(o{2F$~lgE(~nYN7!9f;w8xlRwf*8H(xaiXq>99X`U?u{`vsP zFie^PGm!4cvpKOpj$ctU%MDa=!{D4)g=vr6$R8FV9yM-_5gB?*!!#Z#{()Hj3L~75 zrKZmrApretYkSkX=w693-nuoc$Irm|^ccrrtU8YI-TOjFnDlphF2uJ(wWlg!DY1*R z9^lA(8J5=ddx!H=!B*)PfC{hFOt4GBYi1z5W8dM%-o$5uj*KX*QC!Sm*Vq8I%qYd$ zHHvOxXZan^Dqw&b&Pdxej^9Ij?HY;)uSKpUZsUS(2_9^oGw!sXw5fx)?-QDF+&;&p zN&DzCgs4a$p1>o?@}5x~Jj>4;GnLGe&Px4<`mz@%oxO?u+Ofp6vLH!1bR!esej7{U zo+o2MTL3Z9FmIYB*mzU%L(7bR578txN{FFsJ>@4iM|uf!R@*}sd&!qoInNTsT6OdG zuOe?9Q2AKvw3=!^lrL{za zzJ)wmJn6LtDjNU(%^kC-fhw2+?_m38-%1+i&Y7KIx5AfGeV`8`nV6AKMZicthe~?? zDhHC!L8g@K-%^n+xi`8=gBPH!&#ZM!8ZA8fwFIHihYpq>xjBwDT&hrjs-N@Yg+k2_wGbwtG)N#HAu2>-p22dQRmlP zYq(gAxX$?-8yq?Mm;QCy)b6oP5jiwXYQFdSJ~eoKj$o@jjMOgt+KUUb0rz|D8+P$$ zl?8~nt|K;*UFa49_eNvvFG`!f@wdVG-gJc!npR`tv^b3RWi=XfT|cAcRfaGIB3@Tu zp#lL@@wN;~KkqDUc{{6c&;#-Y5OEz27&+y=0ty(|xp}E{_Mqzomm-0SiQ*QPEM4O< zN;~Wq+Acf)=vLa8y(uKqH%i~e(G@_MO)AX+Hat^|bZJ=BBybLiYDIM-dP+y0d#E$q zhoMS@U8_+M7IZ!~A;SuR@zjovwU8lKq4neC`yU+6KO|?Y@p2t%HZdkGI|T%v{J;Ke za`MF6iw_GTl4i=cw5j++m>}TMFl^)ZEilQJ*S9bogMGhEZ8eE#U~wk8(R@o_m5kir>;t*k#N4hvSYZhBaO-~ng$X2b5QeokG6*TIM|z*w|)iThjD zF)la$;B`c9=Vo_0n_&~qY)GFe1gBYcYXuC$+2l2mC_qOWCFV{rM$6mxsl^>TN_xG2 z+tKWNWkz#UU)ys^{~++W&y)!Funzj>WQ|P#-g{1|@#EQCWm3`8WWX+&z;%x)1z!)u zWl{m{mF~Q5JXqv|OZ0ES0>L4J_O_V;4jb8%d8&*q$0l&Y+A54r@D)N66dXsmF%(6$ z>(v%Ur?_M3QVhqaVtm*d{ty!5>l7HS03#=DDBf#%RPS56C71LNHl^EYOG;vaEb&3< zwsT#nkGXE^yQ3i=)eDvF?22djqv0RxRLcR8uhtdtP;!Y-B@=ZmCeJ1%gsfTNF8EF^ z8P_QwC{Nq&fp`-k!q8l#9a5Jx3pun*~fsyd_l2MN4p!Ka4~ zA3B_Uugez|9YL=zD&NQ#^#}alfgc^t_($C8FCY4Np8ceBzC=*NCWvlofb(TB8Zsp# zt>Kyb)5G~Uly5uu?}2keOZocE-oRbbis<62``pU4>bBuJb)*JA_c7wHbVyh@7Q6F;@ORvjNcLhc|SRX3tT;oVt zePLGQ$hXGUtL$XiKhKNt!Hq6P6bj=q!%&>WJ``w2gUx+?u77&CcK+5H0l2Esym4zO z_;SXOm^6hphd^?z(JMGu5tvkDKR=v*C!cBV5<|1LO3)2cZ9o0A{I7UTLZUc#5oWT< zIIF+ZZr*zOX^#d9u|-cmeFQT;&Y({}-P_q-z<}p3!w(Od_jGq3qhUT%<#cQvwTWj? ztA?P1B75?1UVT9K6VL2+%J)y{efdDw;g?<4CdVbb$Avpr5o!L_2JY|keb8?p*tNrl zYWZvbJ9gM-!X_N5J;)x_en_Gj>}-9A5u zl>|{?b9=AcT2^0zFYTj5_tXv-%R76udOq|o)D%fPZL;EL^W7vH`+rxO1^1yu?*Kg( zKI-YV;a9V zxeIJw0FNs|*S7-;r-J9CaSSmdj~~j9YiNbNzrBWMKrE!^Atfn}z(uHX-ajmDU*St5 z7*h3V%73+Nya=fD;?)aFXP!HAaWRCWEWe8*B%#47RU*(O+b$#;(!1FEp4FqZ`f@m{ zRHH{GX=N|yzn#NWRSM&;pT1;x#IU$1-J@;croQ_u5nYtKjh$-; zR^m^L7*gAsMelVSH81Y^sN11$V?Qf{#(WyDP8g2Wl_dXrs{n6xOwfaH;AxD#5WMlw-92>!kM^;lR0}8}iy+t(~ zS|hHq3vb_HA`|{ak=<7=i}+$tf$&#FOJB{mw5<2lUV;&YOZ2Hqh-3JoEoaz}8x5PT zV@A~%^!NB*iF@pyxak+VCyuluoFTVJCqPWldg)vB`!&U`#v#kfue0u(>a@F`xbhrJ zS1F05Z>nn#aB2IB&F&7FE86E)h^~WD0f^!ZxgD)w>x7|5ae1$4-;_ z3MWnGfR`#8Qognw3DfXeTo|nob(^EFOTtg~Q6w5~KAYgq25BZOd6J8UPIw)(XB_^P z{DQ4DKV{h%XLT!RelEhe#8dl(Jcd5+JzC7Eg?|wnEQSWet6{Vt@sVlfx)W%VB32%Y^R)NkTGM!e#M^E(NFltrKC6v+ z&H)~3hRdf=F`RdkyvXF&cix4j42YWb{WCQHEmSoltz0`rk z&s^SL>%gCfU@^Y9Kh=D^R$r`A&Gypu?N$p1gD$SC=IOrk+Q?ZeNu1o2oG)LCrRBvl-&}@zQj9`tty|O-ABV$pP zPgFAXg-1+{>Qv~PcKty%J9wqN^C8GSpSH!~(}D!oCS_kf;*-uOB!=TtdU2clnL(lG zALyvfHA)t^L2p69mT03n;AM7Z@C+yHEY6$DEpkm>XN37$zSz4r4r|%`gYD*UxtYU# zd+ATgt+e0Sg<5T#L=1NvI%dMfn7bA>2@o8H05(HJetzr@2@_i3SN5zo4mV~xG=9!6 zP?n9|_pao}6=Q12c?Mr5WOct48#f}jd$cojzIt2JL+dY0C_Wrs*;;E~g;LM*|H$I_ z|5VuS-hQWp#W!@~86dK&<)wb7E;awj>^}$IRm=E?qWnF@aJJHW?2f{Zol!p1Qc~tIvxJD(TAe$spa<>=%3qMLpcp1& zW8|Gm=*~?I6Her!5{WHt&TojP5rz%P)w>4_>vnr$2NiVUnS%SaT$mqh5*@eSEN%*y zgGqY;{a*B%fS}aI8Raz>T9m-tmAld+miCMNIdb2D?8YWQ0SOc7xKz$iz7!VJFp!8sHv&8 zM&XswhazhznHn>6`~Tn*NJ$s-=OI1glR9fm4QO*JK7%;+@=)QW7H?uqzSm`-{gw#LINDeu25KIfE9n z6tpjG+@Q$f4Qf_j%?aVx7blH8lrhv=#HN2{j;ac-WY)6uu@L1{#BawGVwH(gu-T%) z8gm!P_sa;8?lJ$v#q$?8Q-FE6`hTlsUfn2vWi^jmOX+5O3@PHUhm_wn3Qvj|Olhs) zeS~>Xdf-;AJ{=e=Tos9$+fAHRx~#?I;^yXsm5trgG=X*&FYp_mKa%umCvi5_rDT3y zUU1p2IjK5u3f4_FbCQqISgX~~tF|ibAgD?1R(0{#(aZ|=!;w1u+C17I(P(<8idR|?e)#hdk*BoSNMN;iWj%9 zX{PHydV3hRRfU9z84 zd%?GP^SZMC(D#D=ree>%mbm9OLfwDWm9pda*wj7F;y1aoAFb8;LGk%#fX6dinN$3isFz=ecRq7YX^)CJR~Wt;5?lD3>`D7cos`r0_7vYFyUnANwDvbg0LKm>47HwjrCO) z7a}_!{O4PeyTW_b>RuG{OM~y*ekkUb!^Qh*<>Gz0R-Z}tY+do5?PHzYtyUX<0Q-3! z{ZtX{*7*p?iqy&PDe`H(n75^)@k2YG%vAAX63vODh6;WKDdV#LnPp$uYsBBAWY8{kA2DR*~LJnW9WnUk>2lpWAFNdXnv$FJ;_nOFrhtRfU5v|RIALUZ> z_f+=-F2MGq|GPn3l6_N4c)6B+>w%Z>YFNS}LnXiSYVBCJUSR|=0ap^Ntf~SvObz$d zvH9k#l{2W-=9~GqYw>tEOPl+*`LA-&^`Bq%?ZLhqb3t4Yu;zr)L-p(#H-sua6B8>?&UMfTlV{=@KTIN|Pi|133%>b2-QC(QFJx#HuY8 z*$--Y^xXgf+rzGp|CkzTYxMe~TK;_KmF)XnpPbAVE?)1P)j*Ktq|qy~pVabC#WvSF zs6KnX=;~#Xy(!IT$!+PUwftkD50($~8p=N$nj|ZGwDWhhzMM@$ z$y(&BHS1fEJv@}ZH?)K@;RWNCi|&I)e)&#qc)HxoivK|1c*ZN|VcutUp}>vYo%&p8 zS>BHRRz)!ntvm<6g8aU+Zgd_}DRwX8qWt=Oe6LnNmF5wyNB=ZXs|2mCQdy-8zosf= zB8ve&dtM++{h-9s@jeaey+~J3>-tfxPBL}LvrAmAf!~jF#i$h7S|imr|NBX;9xwUE zpsO{okLl_iMNsE|Kdsdx@*8ly2KN%y4$aeHtCydbK2(FQ*uZXPtenQ#&27J`qMzKg zU;ljbp>)3KiVd8=)EVWpxkTAZ<#pEZhlU2bG<5-W{a1pEX$ruhX>MO2dRzJ!xPzgg z`#R-x4P4BHdtN$?XwnZ4-P19nyNgLPj=|=*0F`Br3_;&tt!0l64ODF0gGG64$Q2JK zD)jxap$Db!j}P_I_s56!r0JAU9I2ViyxmD%3lgid+=jdJ22#%hw3lvF-QQz$*v|jwU3$Jg|&^+*)n_L-iO-T zL-4o}IGoUdJ~ot{9O`3~!|<-gjyA{1>E}#PxRFLLJ`tXv7c-U`5oMF?i#KjcR#6c) z_knIKrh0JjoDfylg@L_anGF@6)?-OcSy|E-NtapHs%xBwOG&RT8a=Km;P#UKNVoAt&>OQtSvOkw6`g)7%gmxx&OVPi_r z>%Jv;vl3vWbe1ao9Xo8iVDsQ!hn>43bs`D;P~{R}D}Nf^r922p;`PAYGDaZEe-m>U zYr-C)x&6>HWz=&V5>+l)BcL!Rt&_$~P;mzCzl{?1pGx0D**Tlh(nVa&-BpCRvE>UZ zcjNcVji@9QPH&@}{aM-krXHnM&rv#yEFh)|SIl*a3@Aze+m{>DVL}e;?QE#{SlQuq zyQyWDOeB1_3?#IvhXVt~CIC^2u5D&V3etm1+z#(h+*)o%#cl^5jxpTf5q%Y_f}9%! zaq^SIJ{t0B?5s$UpB?q^1b8HTNXxDi_`eS&@LPv!gJ@=ikKo1FhJ`r(+*@an93)_) zt$OZHq-}k2s1|uNToUch#3HHNOQxV-+LGy;1{b$GpW_YSlJ4r=&`l}T>c@SIuqt_MZcA69m5H=20xe2 z#5Xdf@C3{B1Jj5P9&{SFo*&BRq+G9lz-mWHD{=$Z!nHgH-L00pf)1YMQUXn$8OqK)@B%YmAN?ks{=5({ zonCn0&Ylev^=gHpK5Mi4hvDJus`};UJBRA~f*(&M-#jI~H6p^!HH2&N(e)CN@~kAj zV-eEwFC9?rJ4DerDny?7!Jr6c$ivoV{zm z3vp^%vA)jSM1GAv3};B8vs*5Y!>laUG;<CFBA*Hq5St{4E4597pY|Ag00}4ucR}?p)uKk#O)viUf~i{A%AYo5`ArSE^DW=Hx&O=?vH^f7lsHkc0h-+0*r+3{b(B0 z{4^tL1YN)3f@mzwY#L-e?I9*`ZXfj$Ne@&3H$Z%4s5TuqZKO`=BBp|bbiUQR(K1hs z?ATtVH;-9R{(Rn@Z(DjraSW~g7sq!t<)V4} z#2CyGWY<5Sp?%W^AwIA8iq%~?W#QkUE@Z;$DcDrvjQ?qs!*37;8j+w!wt1Hz(-R}I&P(Benzc2){L4Pw;wSG_b z#rsW~?R!V`wKkk(yF=ze6#!{b_2Zhz0-Nof?N&q`RXzG}o&YEkQ4Hjm)c~CG!OVtl zCsAMK5)z%6(DqO|FFYF7U|IGaBlW}CaQ42gxlG1s=(8?9D2`*Qaqlt$b$kUpn{BCm zAaes=KnInSl;t){jHT$HkL3m`JQhNGsuY_4pf0+&N1 z?tUwj7m)RlTyJ{J!OE3koG+n9x)NQt+Bm=+8#lDotlM1_f|_+n8)`|K_9UvD-Wh(eBc*(0FiKqNbwTqP99$4n4;0Jxc~u0xX0Oth3oC2#@j6&k=1~2dUE+OX z@(g(fcNbl3K@G7S{;Wu=%0#$J5x8iAcK|q4oJvmu(=iu$7#+HQ^-%GCyA+UConA0w zb2y^N#xS%Sr@B-!tb$r=@64T{BzpoyI##3zT7!Rr$n!7ZI;i|QDIKg*5?>JRqHthm zSUYenP#DX)h`*iH-@Uf`w!Bh&WW3$Nri?-iJ&yOT?M)?>HUgp9+_uLj8e?Rt*xArN zb3?S3jPYo$L_#QrHa8~5mRG4`y^fpU+O|?{s=&i-a#e^?#-Cr4m4iiE%UjYy8j}|{ zRW8`+Hk{*!S-!DSF{h>HiE++=AbwbYb^`#bumos6J{4PSw=_%J811z;)1*VoNyRD> zS8T@)bNI?Ew3B1jCrq15jTFnaI}nD@IVqyVuwAEZyKycYHn@5bk3}J3n8nD(QjC^_ z9NGZAXaEhiYS+wMx*m3xO>4tG-VJXn0#Vo*eb6|^g}5SA*PPvGUbV2M?BU|Q%J=Aw z1{+)}io)=L$ub`K)WE=o{<*n}uen$sn8%^q=UK^?p=mmZ1x1df6b#%_sW3}N)|d!$ zHB$P<;{7-vrc;!j3DJn-1~LE-(cZ=)4zyHGMFCS~tg_+aYw3mQDc6+PoL2H%mzJ<| zlgolWgqQA{BM~9=WLGL-X;Mw5HFQ_Pb=HVJsYC%bibbMu9~nc6?0x`{Dr?_;dgzXMQ)@pxpo7wz>)diF zG5dq!d4CL6WNSdL>-KSaQzP_hv^@L)ke%TcgDnf(BBGb$!?6an&u%H>Sar zXAG7t8a;cw_=MPr0N#eV%Y1cOQ8bM-UU+V8TlIfH4TMtDD5?(ru=w01pxYh1glbU* zSX`t;?ian00VOw}F%uWQvPDPmGk;Y4r~ScR#p^I-OM`|IVQ>Fnj9di2X3u@a)2$MJz=kHIUM7;eAH^AQ)x5%W`(VV zIf0^ena3pi=Eo)@RdN5^B6?Q#x=%JgC#&>ewY>Zso>KH`DM?dmEEj@HqBpt0QKnBk5H#qlJ+rhQ36*r<)7<7ym%oZ&#(J)K?VNpiVFNyoo{{kNlfP7*5UK}J9gyX9U95L`@lmCP}#p$x(qbo3|H|}+I6qO zX<|M&fQ{zPZN(SXJ@U)hrFYpF9u+?tFxrz9H%YU#y}0Yh@SQxXw;{#zHi_ z4^kM0E=t)ODR+#>$h9^$#2P`L=t*E!lbR&2GaZENN-r`ieQ(b-oa&vxzE*+aY|udB zSIjZz$pd+sdzK&X+yr^bPWbQn)N`0(7UOSj5oWfP-QF1=BOY&k_Xk7y^rHTliJAvI zX!cymG5fSCYLXX}#CPqgoH@L)vfK4wRLa;Mx${Q@#u%0fX@to`REEprtSULGo6hm0 z+S6KP=^L3tY+LP+#Y4Tce=?N+XGK>=)us}R5Ys2d!d+DJwDc3EMzbDKBuubv%B&_{ z`t+GNd9i3F*dj5+DuN}-u!5M$O{!;{ufAYZh`KJM8{JerPerot(_&>6r3t{l%VW@>otC(@teCRDA-Be*%|wI~%p*{!7viHbOwk0U zNaNuhD60d{bD;Q0;FMPFk>h*?JVvZA*11C=n7KsCV$YDO#rSv036ORDe0=&0;bgaz zRf%zm0t26;88{fpx7W(IbMQb{6d;Ng@vkvsp$s}yeC{F~e}(Ihtwqn;_A$bae;p;o zb7F%YDk6!OxN&p*;$|EeLlYXG{w|}&=ebsAld0BbE$8l~w6<;o>FDB+jA2|1|?1qp}r>snY4k8RIt;zd+1zZ=;pufFzNUWqT})sXfGP z#LfXmt#9QzTiBHLrBj*68w*c^T{5EjHiR`Q;b=LXacyGzjC2LruuEa(7#;^n18s`7 z5}vEm@ywy@3T`LSUfU;zTUlEOxRsjuJ~KyJk<95@C@T52Jn|J9YSQlV&V~lCnAc@= zC0k4O)3!_1)>z(*)*DK*Y0-YtHhd&*mlPzH z09l1=0OwmQlJi$oAa-jr!CobG8G1Ka{oYi>=p14_dFpz@#!RG&_^-$fDmzxZmq$Hi zR(uCpoCRKva^@1xQ2-41mOxxIO7Yv7=Zr!Fv((=ahWp)O(H{v=Rg))Rx>F0mpPl{k zL;XDus6kFNKldJVw-4dtks}Z4B{}6rH}c0NquZl~%(KUi@b8}PlG5mzbTlW=DhO{| z{w~H594ltC;%ru2&WgFLc6JLi59t^``}EU+-e=k4M{524*2mbXR=dj-(oLLXFAY|O zsfY@LWufHpAX*n%x37^e0ze>M(s-~z<__b<2E7=-T4rxPvbXbZkIy2)3?^>PfQ7#h zn3X8MtYFpGs{vFfFW#Lx}X3>AW(YoHR7n>JjQh~w-@M_ z`^BxUTlE|kVdi($GqG!6ZZ8w)WI&BP0acg?@Aax*w2Ra@6)s;qZut)W0<1yf+=eVz|G--*%+F z_pG;% zey1qDQEg-jP}fD5w&!Sf4yum^o?E^}3)EyqtO1FbLPtqx+{}x+h6uLI46;ErCbSXH zv^3vsi0`Rn@i4N!-8i4vizc)2t%aPvw|rbKzvBLw>_DlJJn%mTVTR~hnv!%(Wy#E# z({R$+1$W~^sC>zPYalT;_?@~JRvdX1rvV~na38iBSa~m)l&zz3HuVj~zud1gjvA4ttDopRaarrYmmk^ojm93avGGY1 zwh%1bO_)`=C+c$9Y#FV1C=ZarKan!+Se+ct zLg*XD3!E50`b^gb+Xv?{`@o#X0B!l1lHu@~D2+rH0*bLk^{6ayh=f;?dWzBe~1F4_BN_uO3N$ZQ%gAfW<6rqZ781!MQoB9m<2}ixd)Vq$S|| zFD}nsoTJLdmd?g0SO??~muvPcE(2cMX2SZ+cu=d@_vVTaO^~u<>T21W6OBnfv@m#1 zBDcK<=Z15>_a5B`{8SuY_B1&{^p5UbooGz?QHOH}%D=z&@Sbzp+vT2cEm;T+OPJ^5`w{-F6p z0;CDVw^67c8r_vM$2~6{eH-p?lwx;xewv3~ulzLk&oT4PBej?mqJs(xcjDb-H`|Lt z#W9ohVrGNM=(5EeV_7?0Y-)E!)GA9mEQY0OPI%YgYkiLp-vJ)uEB(uvAUPp{T4vik zb{sQ!tMiv=LGn*|ih;nOW@6#-Rv`y=*<~f^ zM_1oiqOO%8lKiTSgaON7f$S5Tw|lHDRF_v$Vy~w-Vs}E>q!1Wn3@*YqGn2% zCwQ{ezZa9$j|(L*c}ZE*9N$1+j)$w=Y8J}F@{)%-XCndkVB%goQtM8ULRBFd)7^uC zL^kfiFpUet?IS6~H-c6dW{qTcBHB1yUzHVKs8|tD4oQhe6w$VFR^s4cfhYXOG+9YI zG;3yPN*N&zyf=|yH%{}EuT8yVK}>RqD_KP}wb8n8pmrt~59R}vDr!3+3%fClZs}iA zB&U0|hz{8FV0ZK+#6R)<`B1u%FHlqIqfR5~>|il{<|bFXdm$>A+_WKYB?O^pVsAX} z=didbD<@GsrEu}A%{vGVLOwQ8K`D{IY#Or?vc))}c5-PE<Q_}=+NojlYyIOg~1E5F<~k|01n$WvWTUZN?WAK>@vC5I%WXPMsnMh zecLz{w2lcDkx(ozKktpr)Yy@-_y)NfDt^h(X^m%YABZU8sL>Oe6QG>0N9 z+a$YL!IQ!AD2Co;aO#vp5BbD>YSvMl`br%1Epf%bF&n(PzS9=BcEpWc)k$vzl7HR9 z+R(8gWUVUL8O@HFzmW{S`)a**n25Vzfq0La8M$tp}ZU|IfDP05T+B}gFSMQL#C z5&(Fe8v-NoFY)iOO)~-o-#MbqR+V;NERY}+t0O*Q*rVup9}M-*1JjX^32M5uf$WxM zY*t3*5pom_14XyTPLn4`t~T0d86zxF9r>Dq&UU_Ou|;J#>U>`S7lP4s6BH-%I-x-3 zrhvFE;lF+RsUj!3KK;xHO;v7gG{_+|CwtF;sl~En6jJrcrWuYA9;I|bYt3)M@-FhH zoW80FzbCY!a~PME@iU*2=b>VMu2G(>9m9drQ!{nNrwi3@mvFyRPTJnGI(hm^ZSVh; zCDPujuf<>uZK)qH6QLJK5$`*aKb{9MA_nGA*(t3mxh~n!Sg_g=6g$DHsH$wKE2!rC z27}L>$Pm|b=^A&E#7IO4^$b}j7HEoCpb-}_K5!(TPP6&TiLvMC`vXV1Lx=2hOk*EJ zb!h)N@OMWt{^3?JHIn`PJx zIQ!_}_1=T+>c1`@A28E0okYwwVONGwcuyGr$s_rQiFx3f^D+=`W3^{NF-!QTkL38k zr^jxiX|*l9LO5fCK`Uh>LTaT_KP&GD6|_#63S~D19R41>At6y^U+*gm}FZF(2;rh>RZUb%H+RqQz z;hCO>>@wbAS@y+!emlaqU)txlQ+)g7eSUj^YO2{+_WAK7-+pzU-wyNb*9Uw%PP+T& z6itXw4<@6Ca((Bmf0ku04*>0cM&%@ZVO2=`+4Yqh;%S~teG{v4Ev6r(`E`9z2^7KiyWLt@UsB||JG$7< zM1SmgW9-rnp!F9k(*0TDfY#mCD!E83>#K1M@W?mO2k8-cB*$)W9}N997HCSC&NCzx zYHdp^LTw7=T5x+gEUaR9uG!nJX@xjI7?QEsg?ZG=!KB_n^N5k3qO#L5BTx|9aM8<= zabU1vF`T2?MlV6A0Fz>p8*OF~Q`AfLCqb~8)K^WB1qTKP?RqO|lyBVph|=RExgo}Q zh=y+CkR9+$<2)o*TMv2d+>E|9hiY%G&V|Lq`9sUCP9o71QlE+M(>u)=S`WV-{A=uu zZQ(~awmXW*hlxe5P&EVXatJvI@I(+#K#FknXGOvhMgAH2GU7^O>96aB3zjCKg}zoi zCz|ThH!)Ogo>zQZcDVMoT&%Phv#z6A78S$INlx}lk}*KYP28kBosot8`Qi6XcP^%} zkNR96GEKQwe8Z-!8UYp$ftb}j=MWL)lM+hR!ktr1y$luqGxo9u2fP2SCJfAt-DxA% zJdw{v$OKO1^do_@jqdu|=3SXf6pCgpagtFikfH}_F}4`3Cpwg%G3h!3tR5{+a6>J8 z?S5?o#7c~{!V8jFC6PkKH6}!jsFHB@+z6Gl%<9EU@sS|k%3Ox3n|^b_Vh#64O~?JP zn`PQ~wlI(fgaTyCo;u+Q1R?C-!&;@6;H@@QEy!L-`(Kqiq8aj?^tTv0ZZ}FN zw0JS_hkRu=4N>Y!+VZ1LQf|_}n7diK@j?XYR&#!XuAFlvW5J_!>Z3&n8Z*aDW&Rek z@7P*ok@vAdBg1iuWuZLi17vodJ<@9WK$;*DzhJA#bD|{K?+!lL8UkmM^#=n z22h7wH&5EO@mZ@uSfA+?;0AObp-E?qmpCi4J0Y8I&M&z`u&$c}KUzrVHxjGC6p+bm zJH)|ADGA=Qesx9Eal3aU6EV+3CMUJ$4Dy{G@cy&ZSr zdX+5rzfXEB{bI##?^ch4xEX!J3Ai&JJ0vzo(ZDen)tptrzL#tZ*_M&zf#*LMej;BK zwvR^xveco#$P#N{MtM~$fEGfK4cf`dOjF}K<0`;h9Cf=fpD$P`W5Gie3mI5XHeZJhca<<9<*$1`8QZ)Gw8(3w8^@`;g+O1wr^z5a?{Q4iQRRLw4Z;#y}mht z$*>-QJ<^%6Ro6L?Ydbe!_S$XfQ7m4dW!_57&jHjXuo-GtKDi!n;L}e>&~3lXS}!-0 z?I$TaDQ-yI@d+7NW!iCm1!n++x^!N)72F+1wLm0WEb%0sg3udY_MX!T5hNy2pWi^P zxdAC|XMbq?t5klXrylLA-AwQoE|dz88H1xeOt8!>5UZSSB|e# zdNywMsX|Fa5TvCyhe1*UXYIAo4j-I`b|{`Lw`=eq@9rNY*m;7*;g5^1YnnI=A6Y2L z26BT${}{WC;Lk@UYh}KhZTAnD{WsuCEV8DLbO#&_=qO$sgF4Al(ViC9D3rwA;^KmWygyzRLAferX+s4kn!V4SoUGi_~wyRyQjU=-0at)6lAnAa(IQ;Xkp%a z#e{K>2aq(t`RG-W&5N7eW+rwvOZ^_S(xLN0y zm2>{N?eOsTD8iu==VyLYyFYU1Xm;r6gN9-aaAh2N;7%Ss>eGDmXn6&BR;jc1$kD!3 zgO4z4wAYUuP5v6)M@*_`KVpu9Bm?Ccm;OAY>YZ<%U2Cm3^GW4o3|c^dHHnO*AMDPs zi+7(Iv?ue}Hp?DmDhD1unmzWwEAO{TJ-*j^&L?L>xB}P(xgr*$VWMmVmGQ#-v6cW= z;SH`j5)MfB0>3bvkI$wbWYynutgG1Kl;2!iN6jj=t;HUz367PZFc_2L>&*PDEQ|CL zNAo!*Yk#LZK>g{xhLs-IKCZ-!=k=~BXQ$FO%(?KS7`=G7@*cfnd3#g~;)LM3o((^7 zG&|WpWIrCidoJi}(Eo(pBQ0R1uq7Ix_Q|lx$PT@s?<#m$HsaBv}KSg1dS$B_>` za|I6c)^5Ty=#LSb^=K^Nuf}wG{TH}?Y~ZkRDm`(Zi)4;S&v8$|#OE?c*;BVK)KIY~ z4p02>UClbkD2=JmFeJY^QarEEJUv47yO>uhUEnscVc!QcTexefJ==~Kyo_U&DlxH1 z`1p&B=}V4QFSg=wxi?Al5AjnW5ljaNz)yZFuq3R(Iz>Xb7SG>K_tG5_5|eE0CBBa@ z0to0fUsUZ}iZ+t>~1W_SV>IE}^)-*eacNUA2?-S%BaNEQ>Wb<|+(mWyUY%8%o;jk~ z;dU_LNRKM1q7%_Zx}yX_Td;v|LaCOtAO@3pEK86{(B|c|A{o?Bk6fB6$m&h*m{d9@ zBh%QSI6jl}jvsgGz>+N*q$+7Pj)$b;KUREB>oE6SJrI9h4rzO>POVjAE-)$_`gqbY=g`KA*=i zBGqCcF7`!iB2myQXWQ;H zvYXGK3gi(CgGOh}og7Z=L*jVr(G>Ne)LX62ZU~dQj6rOhY+wX^AS&MC|1R@?Fd?wm zsGjgxAv{EXoo26)c?j&nB)~yEc{G1M1W7y>9!a~qBhEO6%-47R^iQbp(Zvrw)z1$; z<^14NeRG`d?wPzoWAO>@0VB_VM?m6mP;cvND$irAg}%H>(Zq3o-iGbZXOF@J4J!|C zl@A#OtIEzedo-_nOks=%W)aT>=6Jrs9G?+qQyU)1=EZsP>%s$f`)ug;ot18%?c0F* zGi%Mg9O?&!d=ATR_v%psWY(JUSDy)lcAkVB!2w4n3-;^sxX-TkjXWB9*kg3^feqsS z@NTrTrNCyDiSK3+vv+FOo;{kqt8dif@DGZ7TixAbTzOAgB?MS$%hNwEE{ALl`&xMY zS~rw)Y4?XO!(|-SsS6IhySrP2p1klXZy$(aHb4$033jVor=j5z$C3Qix@AK@OkgMKgXD ziE#S#_>~>=B{zxST>OmU@TS%zKQ*J3pByZnkDrJRmMtjyI zCRcf*^};y?W0TOI5tQbE1PDv?J?h)AjSI-l{_lMwwj0Qpvi~-mz^PF4n~v^?#|Yv+~!oAvYpSzjJ+Id;(G{>`6=; z%_eD_wA{o)uVSmCJWv@2Le?!PsoVXL3xZ)VZd0Y}Tga)fJ@@T7IT4JdDZeT3lVLim zvUwSdzHEeg&s)nmbJV^E*h;GxauW#D9Er)i=niWj0u=h0{gi4>1mz;x5958I0*@i0I^zY&lJ?4a(d0hsD>-)xayvS6P3@_ENPIa%!A7%fE&rLCP=jN3Kvv zJN}lmJ(?5Sg*yaBQJst#upNo+LkM`!(G+`$37sUW+q)!m^*>IVpL9oQS3W-_ab4*+*9Hf=Udk#H)Gf1o)y?2DYmdPB3?1 z7T%0Wpxe_%pA3+dzy!XD_&qT*-B}J5ow&1Q_ctELxxhVyYhbM(D!$O$Ix+_XdWiKK z5Pr>X=5X=9X5nl6R!MQRiWh*P<ll}O~FCzg;2shdf9;W00CGT2`T;z6X9vF zy3^X$KKky#W1%kV-vY>oZ8;i6%XZ_e86jZY=LNgYa9gg}2_M?oE3;-GKpkj_UH?dN zfKB7?%Jsz6$E`625#T;r{IktzN6dH?zgl|;PGvp5f5#K}!m52==s5vf^%#wduCCS* zWe8^_hdw$C9D^JQpdJ2&6Q30bkP~I8aPa?%6URx4;IS=S8cYdm#E@lj11zyzb22~; z9KqdP7`_LAm$I$}oS!B9hk#dWTX1OCws9NW*at@cy9dUX`JsZM%tiM173IO-OQ_Bd zWgji2x>%#PQoObHoZ>fX&%IR&myefHSopLbu^kgYhYG+9`FUf|==mhlbHQ0bs?eAZ&L&s&)3q1=A~F9w)$!64*8 z-h(XIweD8A*~tqmUD$v$P-8i+-gFe^_7U9S4;KF#9G31HzmBF#3pGt9J}WLi_4e0R zc^B8Ghd6}=<=$z7Z6D4{pWQScd40u2vkKP?^A#xNS;egU*?u+RX8~hC^Rq`&fLdI`_VKu%&11u|>*dApX$UEK>Z@rE^5Llk zo>CasokR1h2dat;6i86v-D`?&eIH@AF+~jhp&64-S7~N;Yx%i2?$b}BF1ClLnMAqC z5^n>eF7lq7g<4x3I+TAT^jB$Y2)UZSobWKpu9@fR)dP9=YzZ9GJ^u93?27|-0GAy! z%g*H$BaZ4RBUjI-tV$gf7v(bCuI06z=}aykw-Lbs-|%20@_L~u(PT&Kr~G`E;*7Tk z;DA#OUW=RY1i%E%669i2lcwQpM8Kr{z`5q#r(OOd1VUFAR2^WKXeYK37jP^8REeNN zL?d$x+{BI&FXN2y21i+yT1{WR+6bUvVXx!HnvPWkt*DJ^zO2jfGX-XVJD)4yOJHPeK z`NidT?PJ|vDcSm%vG~-b^`hP7aB*{AF-t_rgcyNYLth^Jsp)I&1&_#66Zh>FCOve+w(Y zfVGES`j&p&+Ya1-myiAiQ$BxFTH{*w^3m*DUHi=Pd-qwNvd^zRFs16(jeolo`XZe6 zF`N4d3lKQ*FUKr>NhFO9LEhQxx(?^PJG*N)aE0|$VZdv{m4!tYX89fEDT$$FJ}qWlLh z70#c3w5!I4F(Jt<8rEahg?8l)8Ml6y6kPeyJTJQ_(+*bIH=I$$0KIlJ`+=?WN38Tm z54_T!gq8lZveKXQtaNe~%`_C;d`-KSIedvIP#KbXo6S+;MR+OFHMN+?pvl zfyI~i=$o>iYFR%yn*ID}y=%hWPSu9O<^htamX>q~@wGUv zxGub2(D=au+SQL-8HvF;$I#xLaP7jHwZgu%55O_-5z_Ta<}nN-T?j3Mh!TZ4u@mql zHZ6=8S2ye{)59EO3A3*7N`Wm(XnK1KuSVr?N_myMXMqWhCfC>2rQVX;P6~Z!98aFw zU>pBEpg3%8i~-e2bf@K*a0oRElNpDQ7)O2|SwDcV*#GpuvK+5meC({ITRvi*uxr z&1oOJ)GzIVpa#h6NhN%nu+cT#t0-IOe++j+aj6V0uV|i4B7nOMN4e1CMk0Lu={$da z5oUNxg|WK?n89w-#{*Z@TXMQIkbie5|4_waJ0XdQvFZeHNIz6hUd3@m{r6;=5(QRs zx706XGD)CEQ_-%Z@ca{*KZDjYSqzfNDp%kIz)=OGSe?wm`FP>}YDB0v=5UION#ibB z3N9|mC#-`QglLK;dBcs%`|(6Dz_GEG5E%;L?raEvEmgZi!&klFA{%iy-SHsjNQ2u* z{;}py=N%N%TU9$S46#=aiRf?Sne?BF@9+U+EV>4Pgl%#3g>E(i zcbT}OL|^V^8IXplZcIl?u_x<8E~7GTpUf|*1_Ucf>MZxwG`Sprz;tOkb{AVC6dIU> zM0n_+=#`o3Qm2c8()RHjk6?+Bc5@67n5t~Tve#+I)LmIurviWS8z7jTl-5>pqU`zz z)1IyPp$-^BoZlWJ*!mbIb$|XUxph7FK{>|J;y-8io;*y};JK$xRVv5xF2My!msWR6 z*zMpy9I~${#3FdM3*kAG2{=T?Fr%c};tG(0Uwzn19uco-AyJSUW2{XZ7ty~z*$3tv zDiNl1ZgS-x5nk%-cJTovvg}5pxHDpA=?fasjAa}n8l>i?qVbRosZcyLQihgl9ut6 z7a;FXe|ji8ACdk$);c%CQubKFLqxXJA2b-JUyOXTq+2vyhkHU9-c6!@9i? zp2TT|6K=#+JSX==h*H#d$M4K-u@R&Fh{=GsoDVwj_zlrQjcyPk_s%-GXM6|TM@ut| zeDTi~BYiNu>ED5=H+P(Y*x5i$2EjGsgVi~=@8X=1XV9{mb9=2glWPmD3(@XiqySe1 zZyl0;f-_2wVk<_QJW7PNjiqf8ybug?jRj;8zf3AA-h9TE0gX9S4pnus=^MaJbZ!|_ zWpM^q7fdguN3m>xO-zO#0~B1sScyE22_6x@qNCe^%=?iqTYv+}Q3w=vc|e;A;UpvJ zWAz$|@bo8{>$cjX)O6lhT-zEh?`hSeu!;c4TJORanfOK=7L#CA$K2VC1&9R`sqB6j zm3vjpI%50MekDI2R9+Q@Gpep(&GHv{)4~WVTxqy}C-`K-hiWeYV9_Zvd%T{4Y}G>- ziyD0xN4u|CwvTHTbwq!u9INPvUJ_I>fQv(+c9zL%Z{fzth};+txm(#~Zt`+$Ai>nH zqvvZ?Z4y3l(^jQ630$*};3mCDhi{O88uuOd3_9z3UBoOpLHz3Gv}A!m*JM{jGX^Fk zHwv_U1Ec83%f@jt=n6Qv>?aJM)#kp}hTeimtiD^86GZ!i#;a`^aVwYdA+oQ>#of2# zecZ?U1OJ=r^{D{-%2d>8drekP?j7QH_Xvk1vz4i|1Ki~!*<_0EEAI{}28$f(f%{`C zO>(vM+y%K=pjzsFI^vlYsu!fZG(B?w^67Oc(41zNvyn-`y8_D|lJ4@W_M^?<#Uj^sAZ$S38!Gld1pk5#%Us6e}Z=5L+ zYnG_cn~fX!Y#rP4-lOEym86OvP}9|n%ii9-eQk4nz#9~Dlfjo8iC-rdAW^8< z*MW&W)4TkEbZ&7xU@ggf87j8`{E1y1=zj)p3U>&T8pKur-BU~Y0X1-j3jII_KP*JP z66g*MR!m2jEV=Gd+O7Me@Q50Tfs-yEHij-jm&9WQC85SA*9DZN)G0JZ15t&`y{lfF zI2uwP>&}B7FIZ7@^r0K~(`XPuKbFR^`3*b+p?20^wWr8qg^0mtR+ z*mK8B3bxrarZ22*gpHTmAS%TV@x&r^1J14}YGk^Wp`n4~pR(@BWyWrCt^UrO=Rv!H zk`~Suq-~pm%EmrIKCmLoScZ&M6~#qd(7uJeZH%2kx1osuLMX-PNl zjJZKwvr3SHcG;gwBTAvKNIvk!hB8b@puxWSV^n1f!&p9kR4|l@YvQEcbI(jyu$1x? zXiTud@#ex!zYupAH#579XW+mCr5vn}xny*J&5uuozSJIKq zt+jBQdoo|-RhvvpY+eLJZz(p0A}TM+eXZKwWDYc8QYqS&L0a(WSMi;sA2Dp*M$6)^ zS=yl#3LSyU_gt4LU|-ZJ|EAg4hNjP>2GgR0iBIM&&dn&o$#3Ndy>Z+Y^vuro1|DVX#+QR$th-8wPeI2^O$Y2tzB@4 ze8y~7SYzZE&@Hj*hI0of9yM#yP`=VNUmcoeJYka!DZYH3p(iFwgb$&aX#XQa^N2gR z``{YJk?eD3TvX*ywDp_Uk%FlFr_^&}=<(o`6~PHh40{_GV~a1`f91b8(%dFV?NqN9 zk;X^LZKS3>S4^2?onL1pvSpa3`Pt3wTh(z6DAlHTu3N9iD4jUUj`ZiInWzqSkR-Vb zW-rIw|MzuR+PlM`XW#^140*Y16R#j_;UkBA;%j1e+Ws@@E5$g*&%@SoS=W4<_A1FJ z&y(38HgghlRe~W;5OMBH2I}?Ox3}k>5zq&(!_MxNR;PHr`s?)OZHAYW zm`~w`PW8XZd@;BPW5pqp1J+ww$q%gJjhoMLDG&k}GPa+}_vkpw-c?U&Pu4f_#@^nY zI`9AQ+fnN_Ae2^HC5ym)XSJ)iqzaR7Q}?#o2qg=Stv5P1dmkUOAgSJ`7$&v|ze`G% z6{)3a!>xMOdSK-9m5}~&t%7{kgnYh|XSeGqOF~%q0Q4ib&^eJbY8r_Y#=c#*cT9qz#tyt91Rj@Ok;O|{9Ro`#3u6aK(vmqiqwJT+1i(`OLd53J|0XH#7hTYvK%wzrK#$82Wv|E>~Pt8 z1hBjH?0tj!pSrSh`}WHA?qy3-bg#=g1HdV(DY$J(fwW)G^9lU;z`Tl@$F^`xCaAlF zF4I?QZ43Hg$zMiL!VLO+LN$Q*2yi|nk370)lU8;~?qU^PaQ1j;DTI=UQ1s<y9n9ZSNpi<;;OoA&@e+ZmDqbW)Ouc$>Rp2bsrs;1M+?WnJ;s6|At7iC<_CTk0 zGgix#51X-wpdq>8+pZZ5#6@pAP_j5$NaN3^bBl63{35cf?CLE2W_FXW`3l$U4S26V)fV!@`{)mRIN^_qh6j#J0S z6ADKi0o1DhqC*z~;6MJ<$exkBpzRINz)7I+U)!XE3nbfU&+QOrRu5@FlDaG?b4xX* zY6cjp;LW!3=_}Q|85FQ;Qk=*4BsrFfCBkQ99Tls&#>B>q9?6%u9(|Hh1rcDVIB{+lp8hd{-kP9Dj7 zhRyOxS*#5q>xM<6^0BTOqSICtG^*;8QF$C!gzYs_K9(gKkM~=|J}Rt9R@&k0<9qDX z#5{51``e@8fqRs4?tCGi3;rgvF&+YYZvUk2VHV6jxyLNemFF1^8T}?mOZ&HR!$bO% zVtMb4AC^&xdavuj{3u_To#}}&w_aKg1LvN7dXEWCY8(IePVKXH*2Ax?YI2MdmSBk&UIT9vtP%eI2Wizd3F#}GZ{M07GU?77Gr+1VCM-n1LKD> zWJa`NC{HF5=V?Jx^wtXPZsd$c(}&!2W#57BR}-ERy$XiYDO&{@E?PH)C=Uk? zB>WzG;I+sS7W%5079QfmXxJ=~_-u@HiA7?@rhgn%Y%jeAlw*@ z1rQ^(4kYP{0-5dJ5bsJ>+Q!Iv>XI4}Jg+`&16hPTg5ix$;p=rpR2N;d=-*t|2gpOdd5EmT)&ciXVBUQu^n-{@{w+Sqm0o8`^`!E{WcLxpL%~HfJ^VjNojr&^VEcZF^Yl8+pFYFO{nXr<5pZs7haBm3so(^Dm z_?7SGujbhg>@>cU|EQk*Xwb|~%|@p8H$APN>4 zD>R4jn}07KnI;JSHd##oDD%&>*zUu{EB4%C zxJ?VsR+YEORQ7T?jP7v8v?>j4h4=nM7tUsnLA@btfm2S$~r zKN@oF?Te=m?7LEH^s)EYW!UDx)YrXG#2Qbu9nRE`jrZ>7iN=CAP}9mCf4J!A3Chn> zD`E!{q=TE@syz2f+cy*+DxdG!!?|+YNEzYDZ-!BCM@Pyu_r`MXkg3^l@!qZh2Q==N zW*)hxG@~$7mu7raG9LevK&?j#F;U6X!Km^q(l{0Q86eZV35#?Wy!P~FGL7oN>JFA_ zZ=E6M&~-I}1l1?i9J`NH6Gb55?CjCvy#Bu@sqU$`uOlh*t?vi3nn~ne+P)xM0kA}#hWIRZ_P)5F2>?9RO_GMr% zP9U02D4@=<+}y+&xGg-WRK=#O=LmSJE8YxmR2amIg5ZSEkqwmGIHv!ANivh@A9_ew zIiXMzCmo886CVyly|&ju)U9+YF@;7S&BG;iQ7|cx+)dbSL%GB*FV8fhC0iufn#q#c zSn-Pg<(j7|pv$`Iny6lonUTl{P3fFgrgApq%@ll6dctiz_oO=;7!xduH^(DScUeuY zc*tA!$3;_5>?rk}+4a$%U?V}n&l|T^|2Oj3$Il{Bb3=8^Y zps4IkWm^bZ4;I)2loMKL+dYihq!Y?}AtV5>c}3ua9n8=oAAL8$dm4j_gtxS}C>fOf zkDg*%BAoVynOldk);JpnDrE!Bl3x)$0RyYumi?cQDw~8D1v0jXJSyocF|moGX*Xtq z-ZI1;|G(_L51gG>dEfcI@|8TcXEax3+>9GJxh8TL(b4tDjLBHYj{aMMku*pnV<&cJ zu4b+@gXW*-&R8Cbx29{hc4M}2iyPd+#2pI*_foW|UsxgfMjq?R=sx>4v#WaSACjtSCAX?OgM)Nl-E}NRa17I1OJ*>XIaRvI+NopX>yq;1&KR2=O=i^))f4Wes|4l@p1L4P;Q2tdRE{(J zx;tJ$G&rSx6TzpU^cFFf{*#fkb!Pv(|GX-ou9W;0^3j<7vnZ+xeng*+ zEPu#D7uz{`Rr?Xx5{a#>%87mS%Xqxjq5A_VEv1D5?F9r@s3u= zQxslYU8t*yhmBrN)P93f%`2&@YKGMewqPKMuh>b1G?4gv;nMQz z(h8Owy_3vFekd_(T=1Brl{8+xHr80PWC_7rfp_ep7q87VPDv{5?o#OKWf6DE zku3fr?z=@uFy73noLhd0q=ND1#S80x%5LwG{<>$&jxE{lp6*Qm+VK4D!jZ*K7$XoK zIDfvWd@E|wN<~vp{~0@lSZ-%J`UqbP>G2DSmQ!`lwsetpa{Y+vT{5xO_TYDfqd4A8 z)Y5FCX@UDerK0UHAR=QD4QFDDKALXc2A)@?e0rd)s=jzKahE5OZ>E8C9hoqN3N9Af z2bg7W8wM8Ryw(F`DG~(t`R2;yCeE9COp^4-GuxLQ~0*XAnABfRrcI;vcsX>gq9uD)SM?9kA6M+O3U?Bw1`W z?1|`k@L=_`W6odb+03+ieb7!8Lq+DL4Lnm!(#JQ3O}}t{u|aA#Tme+)$5tVXE^2&s z5%2M?%C}Cl?(Y6qylbl{I_mS%h+&hIZOm3ElqR}5o3y9rm8MYI+vC=&yLyUPjJ-Ww zGl8s_Cec}JO7tx*H!e2!vsC1*Hnv;kvXz!$U}^@Ry9q)qR)%w>F2vny{PN3s0qW-d_;1F^g)suJUgC!!9vHkC5ppNo%$!DVvkO zRjJJQTj7%80L{vOPQ<-Fbdq}zFud#5$^+rqU}BFw-~x{Z@1|>{X#)4Q$`?@NhKO|= z(o%Xt^kPa+r-D%sw`hOF+CdMYIXu&xx`Z>y6aMI*K>Jd-{bWyM{*pzYCb>`hnY z!)G1;!b`d)wHWqtaisnA(bB>jGemA^qRyvF&FO+s-st)$y-s3JD0OJTaXdq_Cuk~d zkVrNs9A^#*Tjr(%60M+BfZzB+;(@irx-S$N&E-64$&x9Rp&P>91a+EItF|9kKiT*6 zbRP(3@;p8P6Ut9nwf{SXZ+u{gk#XRwIbq}b_8p84a2dr~iE#OFJ{Fkp@{e%hRqoA| zO@H0R*CtR8G?$0+8gHHzqk$c+rGLv!*}=^q>^{`E7y+bmtm^J<`njsa_RW6Hj_RNf zWhXZHQrqc{@s<Cz5ONpk+MRBrD;T?_YLAHub@t z?u|FK4Vmq#>K-RXhdq<8=*k+H;b3!ReLx(gZ)nW97cL^Glx}If&WtA4F+LWlJ$#^m zBXHKgpPCwgZuq(pcS zKFLbh*k%c4vuZ>>oni=Tt}xNbYmk8+F3w)ac{1H_B_MeaEp^KD>b&@rnvC;Pm(ZR( zpAVl=O1}B#Y10c+v8Mkd!XZI*)#_nLHWhB7GJ;H0;}Q?@H(y`Y74ARFy`%akAROFp zD}Ovkt$2FjqWI-X*67LKl^356=pVj6SZn+GV9mchSktFd+33NVeRuH2M96UsZvW^Y zYMdf*C@$7{mjc~%L8LjYsM{szJU9A{CTPy^HpVVlvz|rBd z*^|#*0dFb)s7zdn9*%EZGalpNFf}V5o%x>RM06xHg>xFf1zxXL{^sjby>hsO2@iNm zkrGlz&#(66Ploe05Rdb^(@IjythwoqN0UU`^;Qre^t~NXfQ3(E?5E>gF89SUt}ofr zgoVP?G2hnjk(dP*DN3>;3)sTNO_GCVt8K8Y zb;7phu<0M7fFIAZ$6vA7yHUvJI~Z@vJ9{$z%ec?yPxoX`Z#w;5PRzMiO3Lzdi)6bz zyWHNceCS7Cqw5!ABgu|n&GBFWXMO3SRNH~gWn01s+`I1g6jvFEe7;}f*dcJGZ0Ssm zgk|o0X^f?xNJq8v_aXfrt^4ol$@|b_q6PJ=lnPQKCaY-9-nHop#TUB|jN$>$Q8(%!Kh+RcyreIcpMb-}z_ep3NR0ECaN5#a5r&Nh*U%l%qFPy@i zQ7Z`xjLhl5@B%zur_uKScQ?}adWr2W^tlHqZxOerP#rQ8i{~WZ)vBBa%YsVHI$_XO zn(+mJl9Lv0Su`Q$2@?kl!=$1!0x0~pxGXE#5l0LZBEQPK<8M;8N@NejBj9MQmzUxEO?qp?;Vlm8bp-$ z6~;{EE?>UXc9>1R>*{l)rk={?N8R0^RT$^=&b2| zCp<4qm4BN3oNRT>jUk20WFn`eZvly2Z!Ca0(v zEmP|wJ^8Om>PA6fY0pdZ2w-V7BCPlBE>ABX41T$Aysc04z+Q*R@|fO$UBx?oaru{e z^0(s>zql+%%yJo_BwMmxA9=+r)5n6P;NvAr!N&|us(ZI(ALp+vJbvN|%jjac%4RFz zPgAMvOj;^9TwkX$@3V8Nu{68Vm@BnqzjTE!7($YaJWPJ`+!tL)V&&ZQCYi;{gPYQAXV9vYzLWRkh=6Aaa#2D|EUjEQ;h5dM4Zn``1P}JT#)413Vk~$m zV8LfgSn!fz!SjUrepXn(o7I6 zO}P6}WWe%IU54*1u?(Jf3#VZBRF0>_67oEyTQg3y#GXZbkY{9gj}?LhW?M0TmtUH4 zKM?HPvS(_IVDeU0EKXId3wpSiqa)qB@q!P&4bEk}utJ4KfPwpowI*ZIj!AFO<uW!q|EN_ux3LYb7QVo5wTiH|Y#kfeeU z=fc7I>a8gfd<~aT^H12?DR0fMY_|**;Uo0dI98p%9GK939Ph(E{MzQ%lieW||!C9S{ z$3%#{@fkso_@}^vo5>3tn}KyE6|-#!9OB%fYIoK#Zo-=`PHQBoJ2}dhncLoKd%?Q# zM$Eyd-d^S^_?9A!d|d#9`c~od;Wf9s3A2Q3NGOSS3ofYjF%5V^?$B?EGskjpoks&0 zIC@*?lvW049?)Ciq?O;RI3lL^qNr1P_YGj+p3_U$z%PFJ6;tKmilv^qb!%b7|Mi~k zBZ+VGc)LfNZF`$&FC2dKgUc!pg{vrHWg|Gh9ZA-!v7q{6@7|solLX^y#wsaakj%Kq zl#RKQZb)X&Mq`s72;LQ>Gr?2QZ;yG8O|1(Nf!x39-{zm1y zw{m993kY&2F*JmMAX}}>%4xVceOnEhbhNQNw+4N3&lxLTQ=m{PDv1_jZfy{O2U>)% z3G$(8knpNMAp{WK`hj2$iPLOh?*0yV$_tP(Xbnf4^T4tOQo`$sUr7BYqt#|9tX-=< zYEJC2ho1t-n8{Lp35G);lZpsMOf$cnRN4#b^Yoz?5nT%w4B`L$K`7!9_DM} zTuyGweyb;y_5_D#CBzRn0$IR4q4dYh$qtF5dJwx1qC@Qr+8tG#kmKshuNayTsXL1S zNpitB%=tH7@gU7GrEiv|^i55vxh?y4Ppa)1r?ep*n4D%pHepxWf zNTG-*L(;g|m|aMGk#8adXsJZtA~}edSuc^o>nf9_o@M-%MrQ@!)*wY4!Gk*a;v4DKoF1f!hQIvHL@-^$q0gYN85<$ zCc3TZwl`x8P1-f_lYCDrcey!-whxlISTh8GXFlH~v{G!2QlUJ=g33XoNe=urxNoSu z$Kck7HPB`suTKWDTYg(_%8SQ|dcm@l=L;?>RxnzmMTt9xfR|G#5tvle-*8=+IBj!rEXqQxNTr4EbPTXL zVY=9rwPUj+erqM=R>SuaC9f-M3DarEK0@F~w6{jBFeQxBj>V~1OMNMP=f1_o>G+K| zDjY(ZP12|Rf{4NfU-A8_UF06{`FNcT!#;Ccgfk&SqXLTRmmG5+88 zSW*oNpq*-;n4QLMrr#_W#jG>L@(hI|dHRBGfM6s`TIgY_dbhFy?J~7kUnDptozsbFDk$E zO7oFzIm+e5IT;#|O?x&68;x3oFF>q{w{os}dRzYXXv7b8N!yEXa869CE@d}-`#Y{r z5lx{VKMX38up%-=eBM1Ma2yPVd&Goa$wbt?PYI)XSa2D3p`6%UUcI(Z@!wg=(aDF zLWyayl$%wjugXh&;}ku+!kJxM-uU;Ol1ZkT8~>W!vN@DkcXeQeAYspc4+na#od$S_ zpNBAY5{&T}A*k=RCTzQ!EcH8DaVe1s3OPd2& zn^1#7hu*%7+3mky@_5^Jr;ocgppUyZppUn0hd}Px4uRDFZP~j$Z#eRFps0tMb1>Dd@x{{;7&R-F@Fd3W@yEm6@_R6thP&Q6G_e!dgO9)aCb>eCxN9=Bc#RYX~^L7qtP`j$^8h z3Tfi~lu;4ZHFQyr(sKTMNKXU=gXYK3e5@gdhrt*rA3C>oTQZsWX^7Eyt0=;!#alm|kvN#)|++@MMlEJO!%BgTN+*Y-NXD z9T!4i=Tw6f3~7!UJ0<6c5?SEzj+}&Pn_rzj1nPnWq&~>H`gYqCLbl0-UGq(XowRO9 ze_l6{ceGC-sxnH57Dq1*ReM*@+@6vA5=@)sabaOq7@-mJWfy5eCdUxRn=AYFr57jo zEUxbh(~|_e&NLs+rL<)+6MQC?NA8g+7nf|wUqc|({0#c)b$~MCsk_gE8%lE}xlgUBVmVHd`kgLtuq0H<@ zhOkoM@>>g`*eo+4p$sF!FtT?FbjIAI&ybKm^bQDw4E$cCRgW}^E6QGI1_l>khJaF? zXeRHxq%*tKkeo&%yQ_bsQS68_rPKBCBa4>%s;g$!C?|FMHU^bWDW7TB)EtFQ4*^DUIHnk z`geNEQX*Z-R8cI7qb^k#KN-3P#25LK?G|#O7fQ?GZ`2=RF$#A7jF1R-8ARlpLkV~7 zCAt_8f&(6fkkV!;vCDdUmEFbqw2_lKYZ_lHc0g1VIo!-)$q-ojLR3u%pY-uKgQ82l z1b7(tzPUv#v`ooH|ACM`BpNS^SJQr9v={UNqv}PE`t;!hv?Fd&PoSTBj!lRmujdu2 z6jA|Dpw%yz5E(1z#e$dDZgmN#sAd`ZLdq)kHoGP00L{~!Bo)))To~Od01d6geuMQg z7cBr;SgiV}d;p9$FJ_Z@iY$5>l);_v+`z!6hFfa3{=b#VusvDhuNzjr_^ki$aU(?A6h6P&)u&c6tr) z(W}WeE^@78c(T_tYUpCd{7X%9DNUpP$Tf{Bd`u%MX1sG$g%X~1H*J93RrzhBjUw>z z+KQ(?EPTMAaB~D>rt8qILE(1yRfV1P)IHxh1BgdaonD+dtMpXl#7qJp0#&;}lxG{t zF4+bWM`mSPRQ?^@@PHef6|f`|+$~#8HeR@WpyN+#v^Cpr*a1`r9eFa;9`|fd0k_dz z_4^W6_Vg=>D?7OT597*COeb}z6bsiH`1AjxxUz$rqV9n+DI`+7BhqXP_WHdAMP3zo z|1hphcc-s)41+_}>v3gIf6wB|j&7{~8Z;jc>=lnTrv`!!4<7>@e~4GDn9I=ZXxpOO z!HEs0t|!?=_Gx8qJuZtser8%l>%%Dn$* zGb9Kj>J5btn(Mr(E=2!U&nSCV_GVLO6aSH&3x8F!2VXIj>2e}7QqY)(x2JHD4wyEi zHG|Qy*>xp=daVvT`Q{Eh@-~-?IkXv%AX9<3ADtY=(So(t5fqm%b*H%nPS<0YKhC00 zNRBAK8NJugJX_oy`nZMW8JJL1oqVej1IJvrOp07LEJrPxyHQg$_An9}sqZjh6T3E3 zHLB1+-Gf(menN_wQpyXfi|LgZG|ADxnYq&}dmCt+`IsC-3( zDaAyPs(=>dg&9soQ}k+!{_f+>fsEd{p0qe#;R(Gn>3aKO65Ci$AyepLAyK0s3s-zW3f`tMi%K)yeN z=A=oq^e9Ow*F&%s!&dmYNTS!6yWCilOI_`IwFC#k7Obv7502w|hzH?kHruqebrxbs zx1$Nv+lBD!D-Y>hS`V2?wCA=h^;)!K;Ep_w6)u@3JXasCeNPygf)Yo3?~cs6eWA30(rg;=){yk7&)9>9_*>kPm zYjHiAZHhy?*$1DA6O^l*jAxCx&N<%nJ)NU}k~v=KlilCjX)ehdg|p`P6|p;D7S<8- zchOly)ikv_CskP_5)ke=x0Rxzn|1pJyVG0uX7j;S5HjgTaTy1yT_c*PxSWW5DoDck5+ zV`V0LRpkqIXye5|I+hvtwgabCr2rQFLhVkjQf?>(gRx0y*JVOPA*VvNHcVege|zO& zyz*@rt3H-8m+NM+^MP~S&6Tg8z!f-n@Uns&n?AEk!M?ZoFij98ABg z)Yt}BaPGtMo@L#}fu{pg{FMAaBG$NTZ}tyNsl6^^uk+y%4LFNJ0~z{7FAjR(kL8ab zL!t+e`j6=&;_)LFWRB*RTY^FufNTCDGKD~$ws`99jo!AP73_sFW3ffSL!-Wn5yGdh zbD!xn+0}(ThD(WE3-{Wj^`EQ{2FOVkIF0OlG7h}7tsqjlD{ca4Q}MGcA;frOqqbZDOGbD}**|x%K$= zl&R@dYTV!UNpr@G(Ak(nq@Ps|7|TT)9*2k5z=*bG-vPJ?5<9hc?QG~r2i zLpzyk;JaesgwWV$jp^O0OtZz)3}1SBd;Z=M5mRyN6ALSg=U#W`{s;&;?L_#{<3Ih1 zNl>S9;a%IiH$<*Z60~cO18@cy6^M!_B+?1%6tNkcu^(W}-2;jsT@eS56-kRESz1mn zWDNpi#qYo?2D-C2H@&lIHZEnx*WeJHC+#EtmcGF&$?M4ZX$VC?MW~EfDTDE8ioO9Q zu@#pBYn>t<2vlM$!h&+b!(QS`qM(sLv_l*yMEguEcB((nELU5k?=wZGjK+C*+&cGd zOlEt$%({hO#jRel%?;&5+~A)CN!n2GJ;wkit-Y;nf?S^m;$xpO^xFh9FW@ji1gVP$|UrjIAU6JAb$U0iLTCs-j@ zCDCSzg=j6#5i6w)XF8H2?|EXB!Dc)eg5J6Q$KO9Yq* zWm*dZi+2Q@OMTbCUOl@##U!pgMrjn*sPm9kYbRP^`LfFBIG0YmqI~rz-$%5V|IO(d zFZW=#ZG}}#Tz?scZ1KA{j#3KFwkehlg1<||c1po}b=A;wh54k_xX_%KCx>t6q;~E+ zs+bW_BCC8<5UcMV_0_5m#3KqjY;mx=IUUx$-hcEl=uhHZuKJqwHitm?DcrCu#rYO< zE9FD*!Is*B7-)jR+N}P9gSarQ*mMl)<3!pJuCs$m1?f5j%=@_pk)u;b&?8V3JrJhQ zANVVkhe2kLHux&X85{Q%H9SIPDI%Pv3bj^1PDeQ>87zuq2E0-fgYB`N2M!zWe+E|! ze3q4`W2@>;X+Exe5R&S3&KN!c>g46ihTR`$DwGY`R(atd5thr#d?00DKyYXh{w-oO z8M|Lgg4*Y|r$Bsn-9S~?>copmQY&ZfYL!%^5olb5a397q$rDGk6i|8c&`Bp=QQ>@b zG=1MIzG%M@f{Wk3y^t8*4{x*O8{4uEzT(k7wB1FAkCaCH(DqdB=ln7n(q)&k_K#|d z+(vN%TCR|VKFf6mlc&t0tvO=c;E52tE)m5w&OZp6*+&H2hqh-Q+j!U^@tLcn^>EvV zg)EU@(KtOUAiGezM<(-#wAV1D7D5)7q67Nv1=FJv|E z=t3+KhXc#?#GGY5+pr7yUP)%Cvd`s|Mne)a2)VPYjP3KXl2H7_d+k3QAUL%#$HH*v zC%9s#*KNYE|3daf(am)~4mfYBF6(|7=8h)#dBuU;unHBiY8!tu`^3iUOz4G5SD=fw z`VS2S4T6-_4L)DJJR?ni2~V?M+IY|h)(`5NxGp(X$5JcMP6UDF{?zsytc*{N-dXmk zjX&4flLTzR)wPm+ds|*R91t9DEdF+?Q^~%;FEOXBAudJVEc^V%pD=CtiE#FW4?6?d_~Q2b0TqyJPRAuJXhy%&j4O1>zR29R-jscL zh|on)_=3}s(y-Kxl4G0gH57!;Gbnhb^Vjmzariq=0hBZ^{>P(HF> z@l}5Vh9{U+vBu0|vz39Ds|dlc#~7$3H3rR0V&L#?H`^`Z0nAIRHP)7>#y?XZj)Qvc znp!1GyqIiC))}>WkgoU01lWF*^1Znzk_b|B|z0 zK*l_~W~MR9E!o6%zlS;veBA>H(5F%rJ7okT!^Vn_AG{iXK@i1^VfCG7xzkTm`spU; zP7MIB{UD~_RIR8(v=8-NW_H%CkaZKhBpAYREqn&F4q8_)j%X@MChi{fE)Wl(u#rHF z{zhD~cMK>c63{OYc3a`Es0Hn*P#+_XD7}F>SKGJioOcvuF<}(esSnud2NkI1AaLZ5 zZF4F0B{XF*B$w(95q(Rm%ZTuV)dg9^WoCPufmWEXtq%?oq*>5ZgP*q@y7oN8RokSr zu~wkXwM!~0mWmpkFnJXX0 zm$XHlqnU7}Kn@TgNJLD$Dk(kj~*v+-A#1_#*y64ASts61pnM(xaVn8$b~|rMd<>S zHb^_Q0d%^LwQJNv(-q;iFsCUP!r%ogbIQ$l18Cv2WlD`F%bD>BHt~q@41-N9P^1v$ zWJ5<)mCdn41cu5%xdUfO3O#o}626jjd=80L`pYj7bMs(sDAor{A)ZAiG82 zEwUf*v&&M7)$pO#DKC$wJx!RD^;bSXxJC)LB5Cv6(p{}g_eoS-df)D6qIRCq8pYLE zwyVAbf5`I^Gz>={Tav2^Avv5*XqH4r>GWoSR>D*pE{3Sp7%aoyquwAC=XdlfJ6$L{ zcq(aIV{}RTl0~9?Bouc|Ol>RM=~h@&`9kxQ?IgtR+ivgGO+63IG%!sdr2c$4<0w%) zw;Q@hbA{d``e0b3>Ix8p+abq;Fq7>5TxJ?IsBvly7^Xd89TQn7aZ#=8hbr%ViY-E?b7SS^!)Z|#auh(N3VuvRhL1+YM>(WS{#6MIpAI~CP#4c zto%l>#w>)u@KaImR;#>t%!{ltg3QF4Z7cRpIwZ)K4__ZIfyF3CZ7HS+`MEuBtIW31 z%GhpDMbfrHv4&*Ikz0u^GdGH_>$Q}tez`D2gsATcO@1S_PoZPXJdU%Z@V5nPH+^1R zzw?dl-E+ah#`3p$s7)*`Z2*D_joWdDJ~heeGy8jRC~Nl@$~W~F8k7%4NUZ}SYaz3+ zH&Ja^sOQX|Y=4kS$I-&K5dP6N-koFqOFYk#$8svCzI70BiDLy4EoZ{0Y9x4F91m#` zEGi4$y?*ue{N^hbWjYO0-!6m-C;`g%D!V$*bvA8E8*?D&%UuA*3>QwpiRqAiXlGDg zp2*kd58=dKFum1auuy`%(@m*uVrHEq=bPZ~ET&JQ0L)J@{E~flJy19>ScT6ay9zPs znj0foDzaL>6AqTr>C-P^@E_+-^d9*x`xaOH%y6z!7dklm_8q6{Ckmu6*2MWW*wYA1 zYBft*Y#l52jRk!=5}>4BdiUzR&O`n;?R9*1etvaDRB}Q|^-JrO<-HqbTDn3gMdx;J z?M>=T-|o1wmbYEonq>X z`@^|TN}CL>CNjA}?17qwklw*svwpGe9y2<9(H>{CmDMEKN8+LCkz^d^LOM1_K}rPL zyVBUOEa#(J4zFKOhx8rYP?IfF`0+AjF_*(*43C`9Ek|+&B!<%$?rW%)ocV_&tC(?O zia2dPHiMx?K3}tVFkOV#^t2Zvkzn}Uf%oZM`4~A9@NCxk*Bv77LU$KSw8IOfQayZ` zz~}SaX7Q4zzwy}S_Gq@scVAHD=SXRSU_sVsECf)qKyK=za@Juk*gjTp4YjKkUDa)6 zSX8taJ0en*-rrXF6?-3>m2*d2=DBS23v-U!Z5 z#U@>0#*BwMsxYSy!@;jMP5GlLwl}$ByZkfw5XM+x|3YmNM>5dO`pTtZ(q^3G^~rJ1 zDGn^8t)9cCf)-o0ZKP}@o$w=sNjIoiAjg;}X@jDc@&L{b#!@I!?hypMuPB?keiA~X zji5FzB@K<+-gf*?39vpxX)7|{;t>$rG0h?!p%EjhW^%M z(15s{?!@K*O#cjuE9t)Qt3)5z+wIyM#C&!p2}uZ?3a8NW+7IX<`~@wO#iID~wg1Se zZ>`R)v`*%Bu9?5tB~6v6t*|3Y>uSs05JDOZ=Uc%jQYD%Bb8gX0m*nzSW_I7+)(|f) zH{WVFTHpV`;gg2{&4B&Y%9H+=NOnMKZ7}`ZH=r?JFVcb^4uhg$_{_odiINAV;x-az zle7Xs_IoJeAl0@O7z&LUH5f=0^GCX0ERAM)`sMYhUmf#B`k7FCp`LxtlrurjXu~{K zUbvYqpb`#Z1M?Fxg`>LYF#fYW5Eg#{hKDn(#FUR>oh%;^+W=Nkcbr08SnP$x1!S#o zzEnG$KZW~ad>fN=AAZ@T8R-Ky5r)^|F3Y~jO1Th43mzZd<-F=fp$AnzzUVxD{m5DA z{lGvFK0tmmTFcTGDDxn7*18$Ex)8sE*$ajkqJw_C&o_1DfNk72(|atJmfRESOJ|)u zJI+X&yC;iclUN9F%gGhQMoSv|h4BNEu*)x`bFC&yiW9k>nDP7~qR^(- zvHGy|t|DQDa9a^Y;|xmOpaee!Wi0O9GY}7@qseZm-ky((LPqim1r}Nb6_3cTT#q-KyiV<~oiAOp=s&f$%;x~x0G{1_lPNIdkqjqNOFuJAMusA z+$J9(zM+fHelzaxSD0liY$4ok@)qQo1rI`rX=mh9joT4+0U}VeA+h9a_Q$HOk4r1( z%vxML-AX_XNTvn}JRb6hrX>#=H~`NnSkK{U{KVTnJVF7qD@rW}|K5Q$$3 zE}6MdSX7soq4ZBq+HKR?w@-a>8XrAv{^dn z@a{yxi4W3bR-p#rs@LY(cjG3PzWJW@-#j~haQwvKiIYc9o<8$n`uOofk`2tkAbt8) zD|rwv3Bz};LRl$Xkl>ThvPe5i-;77MjuWBjBu)gvu6y-|++oVx(i$i-IYmCIVsorF z|N1>Z_xfY-Lm}gbf{(s395+q6nwxVS`SgObqMX^lG25+PkOahsjX(1C&W|L;r-C_9aakm0noU%@`^QpKweuTm^(SH0fQyROXQ_sBkb04p(WY3tHFDqV&c)IRd=&$4Yyd1Y*KaaIYVrP2 z<(oibarr`h-1vByVJH%3^sHY4*^g8{T>gfiRitzqH+GKXFvYQ+U2Ex{B;(CFTk!NT zD4x?&yUHznrTyg>Y~s$055aop#5P)!C_e^if3!KbyFMB)GJxq)@9j9`hxQ0j5O*(2 zW-KHQ-3+kSI&YDXV{R89B>g`ceP;vX^`k5^;mMa8_n(YnMGy;YO$*tekX1u!KvY|e zImx+9Ih>RFLx;TF_u&+&8b0%y%6kg_j`gyurcpbG0!M4zpxO|&NN6!?iz&r^kxs|! zN{$k|lMPh9u)*sKwWB~?y6zh_1?b>58`|m*#G@T`FffJ4nAvX9zMY6|HR)xzU=T<` z#T0at%03yyVc1#737&uPXE7`BcVE`Ka!}c<;jA)cThQRfThWOHbJU>P6Z_gCb9IXf z)-Pt-wI|! zJuhFD(^yn^7j^jtnV6WdP8HZ$6oN1qiRM z$?fS)xd$Tso0bopB6Zy1a3Ih;rWJy^`q0qH!*8e@#YJUw7aZ3sDYG3{{lwrw4LI7Q zCW34JC}A8tjn;i*zvqTdpmu71$8q9Sif?=gg-srO+Uo2#9P-jlSjw}G-?N*q0ClHc zaY)${4u;^N%>7s*_HbZzH(-wv5dz(H;-clXJ`%7Hc13HB&hSMJkWpS80c{2Qy3rVp zSE(47r!ziMME{{9{DL>uO097y&Tz~cFlo!5&Z(-@88Ij}KD(~(sp3h9>qG={14Y;D z6lR=_j>P~*a^0g!)UR`UcT3};K5^GXNOjo_e&Egxf15|PpT*-Oy?_~%D zet=^aAhE*G>?J-)*H@mhjGbb+J!1u@oc}`m7LcddS*4u7X~Yw(S-v$?cfXcefZNjy zdR9J^9#GIJn6NYlF)#trj--G$R6ZOhAtr7?%TOMUbpZ#$$Lk|+35O-zgEv+_T3lrD zAjRNilba4p+zePN(`+fj-c6PFo{r0G*iocgF!7TE5G3`h6R2ByQ*fM{?mU%ZYeY^3 z`h0WQOfqebl!+9@R-#D5du7Mmac@(}08c`J``#=G>C;=;t($y3WwfXku8?`Q)2xML zws;|qkoT`Edb%s$&&Dh7jL&9v`h`5cmgV~cKpXuQfmP~6gV+Ry60rG@TlOdHhjq1F z^S;J3y2Uov&3x3UspSs9%h=#55BN~W`iM_c%KkXNEI(on+@5oE<1g(4);4;(nMcWRP>SKxJ<#YwNM0jqLjYM!K`vDtDMOy zN3yPCON>Ym-@q}&4;z=3WxIP*_*)zLbdvA^W#x1lGp>XrEk^TjFB2{3L- zWEd1JD8dLAoG=#p{u$_dae}3&DYQ|XXLv)DWk!g22N9h>?<1vA9Op&cuP_cb&H90S z7Ijp!2_QpP49Hg+NoRlkP_~lw8Iy0l^bgw-lom%7A%dIZFCgJTAZ&UuZiIV7{Iu>h zq+XMEU5>0TnWu`o zJ-yxIPHmm!v?!&b*)F#oftbdw5|aiUvrak$zgbjw@;6OxW-a37d)d5!+^$knwXpE+ zwL}8#6&V<~tM~5SdwLJ{9_>BZ`{v$ry$|;`d$YTGt3!be2)U zWkP1z2{$tyKde?(^CxIKD_w+hlUa86=0hF#p`@FO&Hx8&oU^pt@7@8%_mci}^HC1? zD8%iBV=!W4j6c>s!okf)81@lhgh>X{8nV|VSnv=&e{}Pg_xsDJ1t>K_@S1=9WPG#% zC|=Z?cat?CDl3XO?)19_y*Fm!?!yMd_SI^9litU+2K2wo*lkJ>Dl2s zoSq%NBk9@UI~t#V%;7tho*lmX(zC;NJUu&nC(^US_r~<>@VzNLJA9+*+2K2xo*lkZ z>Dl2s9iK-WzOnS|@Vz-bJA7x-v%_~bJv)5k>Dl2sm!2KI`_r?-_m=eR@I8>89li(S z^W6^LPo!su?To8XU%pMS}x5Q#3e~vqgi0`PQPr;k;BdIG||1BODItd}`S1kS-Jr z4(Vdi;E*mA4G!reMT0}STr@bOt)jspT`3wI($%8DA$_!Ha7ZtwhH$AoRx~)IYej=Y z`nICMA^np@gG2iEqQN13yl8Mp|C^%0A^lTDgG2g6(cqB2BQ=EU3?4| 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 asp-c_XzEv-_CWf?wxYvF_su_gF#EqYe5BF< diff --git a/substrate/frame/revive/src/evm/api/debug_rpc_types.rs b/substrate/frame/revive/src/evm/api/debug_rpc_types.rs index e9518f6b6400b..13f91e3ed3e9b 100644 --- a/substrate/frame/revive/src/evm/api/debug_rpc_types.rs +++ b/substrate/frame/revive/src/evm/api/debug_rpc_types.rs @@ -181,7 +181,8 @@ pub struct CallTrace { #[serde(skip_serializing_if = "Vec::is_empty")] pub logs: Vec, /// Amount of value transferred. - pub value: U256, + #[serde(skip_serializing_if = "Option::is_none")] + pub value: Option, /// Type of call. #[serde(rename = "type")] pub call_type: CallType, diff --git a/substrate/frame/revive/src/evm/tracing.rs b/substrate/frame/revive/src/evm/tracing.rs index 7eae64db79fb1..0cdf2f05682b2 100644 --- a/substrate/frame/revive/src/evm/tracing.rs +++ b/substrate/frame/revive/src/evm/tracing.rs @@ -70,7 +70,7 @@ impl Gas> Tracer for CallTracer bool { + log::debug!(target: crate::LOG_TARGET, "Checking if address is precompile: {:?}", address); + let bytes = address.as_bytes(); + bytes.starts_with(&[0u8; 19]) && (1..=255).contains(&bytes[19]) +} + impl<'a, T, E> Ext for Stack<'a, T, E> where T: Config, @@ -1403,6 +1411,11 @@ where *self.last_frame_output_mut() = Default::default(); let try_call = || { + if is_precompile(dest_addr) { + log::debug!(target: crate::LOG_TARGET, "Unsupported Precompile address {dest_addr:?}"); + return Err(Error::::UnsupportedPrecompileAddress.into()); + } + let dest = T::AddressMapper::to_account_id(dest_addr); if !self.allows_reentry(&dest) { return Err(>::ReentranceDenied.into()); @@ -1420,28 +1433,36 @@ where CachedContract::Cached(contract) => Some(contract.clone()), _ => None, }); + + // Enable read-only access if requested; cannot disable it if already set. + let is_read_only = read_only || self.is_read_only(); + if let Some(executable) = self.push_frame( FrameArgs::Call { dest: dest.clone(), cached_info, delegated_call: None }, value, gas_limit, deposit_limit.saturated_into::>(), - // Enable read-only access if requested; cannot disable it if already set. - read_only || self.is_read_only(), + is_read_only, )? { self.run(executable, input_data) } else { - let result = Self::transfer_from_origin( - &self.origin, - &Origin::from_account_id(self.account_id().clone()), - &dest, - value, - ); + let result = if is_read_only { + Ok(Default::default()) + } else { + Self::transfer_from_origin( + &self.origin, + &Origin::from_account_id(self.account_id().clone()), + &dest, + value, + ) + }; + if_tracing(|t| { t.enter_child_span( T::AddressMapper::to_address(self.account_id()), T::AddressMapper::to_address(&dest), false, - false, + is_read_only, value, &input_data, Weight::zero(), diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 5487a8eb069b5..b1851ebe41f09 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -492,6 +492,8 @@ pub mod pallet { InvalidGenericTransaction, /// The refcount of a code either over or underflowed. RefcountOverOrUnderflow, + /// Unsupported precompile address + UnsupportedPrecompileAddress, } /// A reason for the pallet contracts placing a hold on funds. diff --git a/substrate/frame/revive/src/test_utils/builder.rs b/substrate/frame/revive/src/test_utils/builder.rs index 7fbb5b676439e..c9c2a3240bc47 100644 --- a/substrate/frame/revive/src/test_utils/builder.rs +++ b/substrate/frame/revive/src/test_utils/builder.rs @@ -146,7 +146,10 @@ builder!( /// Build the instantiate call and unwrap the account id. pub fn build_and_unwrap_contract(self) -> Contract { - let addr = self.build().result.unwrap().addr; + let result = self.build().result.unwrap(); + assert!(!result.result.did_revert(), "instantiation did revert"); + + let addr = result.addr; let account_id = T::AddressMapper::to_account_id(&addr); Contract{ account_id, addr } } diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index 44f2afc8b0e8a..bda47030b23bb 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -4441,7 +4441,7 @@ fn tracing_works_for_transfers() { vec![CallTrace { from: ALICE_ADDR, to: BOB_ADDR, - value: U256::from(10_000_000), + value: Some(U256::from(10_000_000)), call_type: CallType::Call, ..Default::default() },] @@ -4509,6 +4509,7 @@ fn tracing_works() { input: (3u32, addr_callee).encode().into(), call_type: Call, logs: logs.clone(), + value: Some(U256::from(0)), calls: vec![ CallTrace { from: addr, @@ -4520,6 +4521,7 @@ fn tracing_works() { revert_reason: Some("revert: This function always fails".to_string()), error: Some("execution reverted".to_string()), call_type: Call, + value: Some(U256::from(0)), ..Default::default() }, CallTrace { @@ -4528,6 +4530,7 @@ fn tracing_works() { input: (2u32, addr_callee).encode().into(), call_type: Call, logs: logs.clone(), + value: Some(U256::from(0)), calls: vec![ CallTrace { from: addr, @@ -4536,6 +4539,7 @@ fn tracing_works() { output: Default::default(), error: Some("ContractTrapped".to_string()), call_type: Call, + value: Some(U256::from(0)), ..Default::default() }, CallTrace { @@ -4544,6 +4548,7 @@ fn tracing_works() { input: (1u32, addr_callee).encode().into(), call_type: Call, logs: logs.clone(), + value: Some(U256::from(0)), calls: vec![ CallTrace { from: addr, @@ -4551,6 +4556,7 @@ fn tracing_works() { input: 0u32.encode().into(), output: 0u32.to_le_bytes().to_vec().into(), call_type: Call, + value: Some(U256::from(0)), ..Default::default() }, CallTrace { @@ -4558,11 +4564,12 @@ fn tracing_works() { to: addr, input: (0u32, addr_callee).encode().into(), call_type: Call, + value: Some(U256::from(0)), calls: vec![ CallTrace { from: addr, to: BOB_ADDR, - value: U256::from(100), + value: Some(U256::from(100)), call_type: CallType::Call, ..Default::default() } @@ -4582,3 +4589,41 @@ fn tracing_works() { } }); } + +#[test] +fn unknown_precompiles_revert() { + let (code, _code_hash) = compile_module("read_only_call").unwrap(); + + ExtBuilder::default().build().execute_with(|| { + let _ = ::Currency::set_balance(&ALICE, 100_000_000_000); + let Contract { addr, .. } = + builder::bare_instantiate(Code::Upload(code)).build_and_unwrap_contract(); + + let cases: Vec<(H160, Box)> = vec![ + ( + H160::from_low_u64_be(0x1), + Box::new(|result| { + assert_err!(result, >::UnsupportedPrecompileAddress); + }), + ), + ( + H160::from_low_u64_be(0xff), + Box::new(|result| { + assert_err!(result, >::UnsupportedPrecompileAddress); + }), + ), + ( + H160::from_low_u64_be(0x1ff), + Box::new(|result| { + assert_ok!(result); + }), + ), + ]; + + for (callee_addr, assert_result) in cases { + let result = + builder::bare_call(addr).data((callee_addr, [0u8; 0]).encode()).build().result; + assert_result(result); + } + }); +} From 6145b9b205dffdc8c7871e8201f33aa97ba03ce3 Mon Sep 17 00:00:00 2001 From: "cmd[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:18:32 +0000 Subject: [PATCH 02/26] Update from pgherveou running command 'prdoc --audience runtime_dev --bump minor' --- prdoc/pr_7614.prdoc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 prdoc/pr_7614.prdoc diff --git a/prdoc/pr_7614.prdoc b/prdoc/pr_7614.prdoc new file mode 100644 index 0000000000000..7e0dfb092340a --- /dev/null +++ b/prdoc/pr_7614.prdoc @@ -0,0 +1,21 @@ +title: '[pallet-revive] tracing improvements' +doc: +- audience: Runtime Dev + description: |- + Various pallet-revive improvements + + - add check for precompiles addresses, + So we can easily identified which one are being called and not supported yet + + - fixes debug_call for revert call + If a call revert we still want to get the traces for that call, that matches geth behaviors, diff tests will be added to the test suite for this + + - fixes traces for staticcall + The call type was not always being reported properly. +crates: +- name: asset-hub-westend-runtime + bump: minor +- name: pallet-revive-eth-rpc + bump: minor +- name: pallet-revive + bump: minor From e8c30e5e553033d29111a2e918eaa735de382f66 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Wed, 19 Feb 2025 08:45:45 +0100 Subject: [PATCH 03/26] rm log --- substrate/frame/revive/src/exec.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index c58cd10b2dd94..5ae552868fa8a 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1376,7 +1376,6 @@ where /// Determine if the given address is a precompile. /// For now, we consider that all addresses between 0x1 and 0xff are reserved for precompiles. fn is_precompile(address: &H160) -> bool { - log::debug!(target: crate::LOG_TARGET, "Checking if address is precompile: {:?}", address); let bytes = address.as_bytes(); bytes.starts_with(&[0u8; 19]) && (1..=255).contains(&bytes[19]) } From aef60099bc9033013565cf72c66cddb6460b83c0 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Wed, 19 Feb 2025 08:46:36 +0100 Subject: [PATCH 04/26] nit comment --- substrate/frame/revive/src/exec.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 5ae552868fa8a..10df596723a6b 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1411,7 +1411,7 @@ where let try_call = || { if is_precompile(dest_addr) { - log::debug!(target: crate::LOG_TARGET, "Unsupported Precompile address {dest_addr:?}"); + log::debug!(target: crate::LOG_TARGET, "Unsupported precompile address {dest_addr:?}"); return Err(Error::::UnsupportedPrecompileAddress.into()); } From eac66201f4919b6d53ba9ee2e21bbcca2e5819de Mon Sep 17 00:00:00 2001 From: pgherveou Date: Wed, 19 Feb 2025 18:21:16 +0100 Subject: [PATCH 05/26] staticall with non-zero value for account addresses should fail --- substrate/frame/revive/src/exec.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 10df596723a6b..067632a7b9e19 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1445,8 +1445,10 @@ where )? { self.run(executable, input_data) } else { - let result = if is_read_only { + let result = if is_read_only && value.is_zero() { Ok(Default::default()) + } else if is_read_only { + Err(Error::::StateChangeDenied.into()) } else { Self::transfer_from_origin( &self.origin, From 789f94ad18252819996640bb73dd26be23fa76e4 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Wed, 19 Feb 2025 17:21:15 +0100 Subject: [PATCH 06/26] wip --- substrate/frame/revive/Cargo.toml | 1 + .../rpc/examples/js/src/geth-diff.test.ts | 16 ++++- .../frame/revive/src/benchmarking/mod.rs | 33 +++++------ substrate/frame/revive/src/exec.rs | 57 ++++++++++++++++-- substrate/frame/revive/src/lib.rs | 1 + substrate/frame/revive/src/precompiles.rs | 31 ++++++++++ .../frame/revive/src/precompiles/ecrecover.rs | 58 +++++++++++++++++++ 7 files changed, 173 insertions(+), 24 deletions(-) create mode 100644 substrate/frame/revive/src/precompiles.rs create mode 100644 substrate/frame/revive/src/precompiles/ecrecover.rs diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index 77f0f7eb1e6dd..09b8c4db5c870 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -24,6 +24,7 @@ environmental = { workspace = true } ethabi = { workspace = true } ethereum-types = { workspace = true, features = ["codec", "rlp", "serialize"] } hex = { workspace = true } +hex-literal = { workspace = true } impl-trait-for-tuples = { workspace = true } log = { workspace = true } paste = { workspace = true } diff --git a/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts b/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts index 33e38fccd8a81..8dec9b8dd9740 100644 --- a/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts +++ b/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts @@ -449,7 +449,7 @@ for (const env of envs) { }) }) - test('tracing', async () => { + test.only('tracing', async () => { let [callerAddr, calleeAddr] = await getTracingExampleAddrs() const receipt = await (async () => { @@ -526,6 +526,20 @@ for (const env of envs) { ) expect(visit(res, visitor)).toEqual(fixture) } + + { + const res = await env.debugClient.traceCall( + { + to: callerAddr, + data: encodeFunctionData({ + abi: TracingCallerAbi, + functionName: 'tryDelegateCall', + }), + }, + { withLog: true } + ) + console.error(visit(res, visitor)) + } }) }) } diff --git a/substrate/frame/revive/src/benchmarking/mod.rs b/substrate/frame/revive/src/benchmarking/mod.rs index f72b9f206c84c..3488e6efc2ac0 100644 --- a/substrate/frame/revive/src/benchmarking/mod.rs +++ b/substrate/frame/revive/src/benchmarking/mod.rs @@ -26,6 +26,7 @@ use crate::{ evm::runtime::GAS_PRICE, exec::{Ext, Key, MomentOf}, limits, + precompiles::Precompile, storage::WriteOutcome, ConversionPrecision, Pallet as Contracts, *, }; @@ -1945,30 +1946,24 @@ mod benchmarks { } #[benchmark(pov_mode = Measured)] - fn seal_ecdsa_recover() { - let message_hash = sp_io::hashing::blake2_256("Hello world".as_bytes()); - let key_type = sp_core::crypto::KeyTypeId(*b"code"); - let signature = { - let pub_key = sp_io::crypto::ecdsa_generate(key_type, None); - let sig = sp_io::crypto::ecdsa_sign_prehashed(key_type, &pub_key, &message_hash) - .expect("Generates signature"); - AsRef::<[u8; 65]>::as_ref(&sig).to_vec() - }; - - build_runtime!(runtime, memory: [signature, message_hash, [0u8; 33], ]); - + fn ecdsa_recover() { + use hex_literal::hex; + let input = hex! {" + 18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c + 000000000000000000000000000000000000000000000000000000000000001c + 73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f + eeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549 + "}; + + let expected = hex!("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"); let result; + #[block] { - result = runtime.bench_ecdsa_recover( - memory.as_mut_slice(), - 0, // signature_ptr - 65, // message_hash_ptr - 65 + 32, // output_ptr - ); + result = precompiles::ECRecover::execute(&input); } - assert_eq!(result.unwrap(), ReturnErrorCode::Success); + assert_eq!(result.unwrap().data, expected); } // Only calling the function itself for the list of diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 067632a7b9e19..4d6a5a3a03968 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -18,7 +18,8 @@ use crate::{ address::{self, AddressMapper}, gas::GasMeter, - limits, + limits, precompiles, + precompiles::Precompile, primitives::{ExecReturnValue, StorageDeposit}, runtime_decl_for_revive_api::{Decode, Encode, RuntimeDebugNoBound, TypeInfo}, storage::{self, meter::Diff, WriteOutcome}, @@ -1009,6 +1010,55 @@ where } } + fn run_precompile( + &mut self, + precompile_address: H160, + value_transferred: U256, + input_data: &[u8], + read_only: bool, + ) -> Result<(), ExecError> { + if_tracing(|tracer| { + let caller = self.caller(); + let maybe_caller_address = caller.account_id().map(T::AddressMapper::to_address); + let frame = top_frame_mut!(self); + tracer.enter_child_span( + maybe_caller_address.unwrap_or_default(), + precompile_address, + false, + read_only, + value_transferred, + &input_data, + frame.nested_gas.gas_left(), + ); + }); + + // TODO burn value_transferred if any + + let output = if dest_addr == &precompiles::ECRECOVER { + self.gas_meter_mut().charge(crate::RuntimeCosts::EcdsaRecovery); + precompiles::ECRecover::execute(&input_data) + } else { + log::debug!(target: crate::LOG_TARGET, "Unsupported precompile address {dest_addr:?}"); + todo!() + } + .map_err(|e| { + if_tracing(|tracer| { + tracer.exit_child_span_with_error( + e.error, + top_frame_mut!(self).nested_gas.gas_consumed(), + ); + }); + ExecError { error: e.error, origin: ErrorOrigin::Callee } + })?; + + if_tracing(|tracer| { + tracer.exit_child_span(&output, top_frame_mut!(self).nested_gas.gas_consumed()); + }); + + self.top_frame_mut().last_frame_output = output; + Ok(()) + } + /// Run the current (top) frame. /// /// This can be either a call or an instantiate. @@ -1410,9 +1460,8 @@ where *self.last_frame_output_mut() = Default::default(); let try_call = || { - if is_precompile(dest_addr) { - log::debug!(target: crate::LOG_TARGET, "Unsupported precompile address {dest_addr:?}"); - return Err(Error::::UnsupportedPrecompileAddress.into()); + if is_precompile(&dest_addr) { + return self.run_precompile(dest_addr, value, &input_data)?; } let dest = T::AddressMapper::to_account_id(dest_addr); diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index b1851ebe41f09..a184a2b8dbed6 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -26,6 +26,7 @@ mod benchmarking; mod exec; mod gas; mod limits; +mod precompiles; mod primitives; mod storage; mod transient_storage; diff --git a/substrate/frame/revive/src/precompiles.rs b/substrate/frame/revive/src/precompiles.rs new file mode 100644 index 0000000000000..1b5040f14e031 --- /dev/null +++ b/substrate/frame/revive/src/precompiles.rs @@ -0,0 +1,31 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +mod ecrecover; +use crate::exec::ExecResult; +pub use ecrecover::*; + +/// The `Precompile` trait defines the functionality for executing a precompiled contract. +pub trait Precompile { + /// Executes the precompile with the provided input data. + /// + /// # Parameters + /// - `input`: The input data passed to the precompile. + /// + /// # Returns + /// - `ExecResult`: The result of the precompile execution + fn execute(input: &[u8]) -> ExecResult; +} diff --git a/substrate/frame/revive/src/precompiles/ecrecover.rs b/substrate/frame/revive/src/precompiles/ecrecover.rs new file mode 100644 index 0000000000000..fa9271ff7fc78 --- /dev/null +++ b/substrate/frame/revive/src/precompiles/ecrecover.rs @@ -0,0 +1,58 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +use super::Precompile; +use crate::{exec::ExecResult, ExecReturnValue}; +use hex_literal::hex; +use pallet_revive_uapi::ReturnFlags; +use sp_core::H160; +pub const ECRECOVER: H160 = H160(hex!("0000000000000000000000000000000000000001")); + +/// The ecrecover precompile. +pub struct ECRecover; + +impl Precompile for ECRecover { + fn execute(i: &[u8]) -> ExecResult { + let mut input = [0u8; 128]; + let len = i.len().min(128); + input[..len].copy_from_slice(&i[..len]); + + let mut msg = [0u8; 32]; + let mut sig = [0u8; 65]; + + msg[0..32].copy_from_slice(&input[0..32]); + sig[0..32].copy_from_slice(&input[64..96]); // r + sig[32..64].copy_from_slice(&input[96..128]); // s + sig[64] = input[63]; // v + + // v can only be 27 or 28 on the full 32 bytes value. + // https://github.com/ethereum/go-ethereum/blob/a907d7e81aaeea15d80b2d3209ad8e08e3bf49e0/core/vm/contracts.go#L177 + if input[32..63] != [0u8; 31] || ![27, 28].contains(&input[63]) { + return Ok(ExecReturnValue { data: [0u8; 0].to_vec(), flags: ReturnFlags::empty() }); + } + + let data = match sp_io::crypto::secp256k1_ecdsa_recover(&sig, &msg) { + Ok(pubkey) => { + let mut address = sp_io::hashing::keccak_256(&pubkey); + address[0..12].copy_from_slice(&[0u8; 12]); + address.to_vec() + }, + Err(_) => [0u8; 0].to_vec(), + }; + + Ok(ExecReturnValue { data, flags: ReturnFlags::empty() }) + } +} From 189c4ad8a91ba44bc26ba86f9509f8a34201d1b9 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 10:23:07 +0100 Subject: [PATCH 07/26] wip --- substrate/frame/revive/src/exec.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 4d6a5a3a03968..c070bd17dcb13 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1012,7 +1012,7 @@ where fn run_precompile( &mut self, - precompile_address: H160, + precompile_address: &H160, value_transferred: U256, input_data: &[u8], read_only: bool, @@ -1023,7 +1023,7 @@ where let frame = top_frame_mut!(self); tracer.enter_child_span( maybe_caller_address.unwrap_or_default(), - precompile_address, + *precompile_address, false, read_only, value_transferred, @@ -1034,11 +1034,11 @@ where // TODO burn value_transferred if any - let output = if dest_addr == &precompiles::ECRECOVER { - self.gas_meter_mut().charge(crate::RuntimeCosts::EcdsaRecovery); + let output = if precompile_address == &precompiles::ECRECOVER { + self.gas_meter_mut().charge(crate::RuntimeCosts::EcdsaRecovery)?; precompiles::ECRecover::execute(&input_data) } else { - log::debug!(target: crate::LOG_TARGET, "Unsupported precompile address {dest_addr:?}"); + log::debug!(target: crate::LOG_TARGET, "Unsupported precompile address {precompile_address:?}"); todo!() } .map_err(|e| { @@ -1461,7 +1461,7 @@ where let try_call = || { if is_precompile(&dest_addr) { - return self.run_precompile(dest_addr, value, &input_data)?; + return self.run_precompile(dest_addr, value, &input_data, read_only); } let dest = T::AddressMapper::to_account_id(dest_addr); From cc5fcbe2da97200033746077957af9ffb7ef09b6 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 21:02:40 +0100 Subject: [PATCH 08/26] Update --- .../{ecdsa_recover.rs => call_with_value.rs} | 30 +- .../frame/revive/src/benchmarking/mod.rs | 13 +- substrate/frame/revive/src/exec.rs | 296 +++++++++++------- substrate/frame/revive/src/exec/tests.rs | 4 +- substrate/frame/revive/src/precompiles.rs | 30 +- .../frame/revive/src/precompiles/ecrecover.rs | 9 +- substrate/frame/revive/src/tests.rs | 79 +++-- substrate/frame/revive/src/wasm/mod.rs | 4 +- substrate/frame/revive/src/wasm/runtime.rs | 30 -- substrate/frame/revive/uapi/src/host.rs | 21 -- .../frame/revive/uapi/src/host/riscv64.rs | 17 - 11 files changed, 272 insertions(+), 261 deletions(-) rename substrate/frame/revive/fixtures/contracts/{ecdsa_recover.rs => call_with_value.rs} (57%) diff --git a/substrate/frame/revive/fixtures/contracts/ecdsa_recover.rs b/substrate/frame/revive/fixtures/contracts/call_with_value.rs similarity index 57% rename from substrate/frame/revive/fixtures/contracts/ecdsa_recover.rs rename to substrate/frame/revive/fixtures/contracts/call_with_value.rs index 0f28ca2c81980..c7a85659bf496 100644 --- a/substrate/frame/revive/fixtures/contracts/ecdsa_recover.rs +++ b/substrate/frame/revive/fixtures/contracts/call_with_value.rs @@ -15,10 +15,11 @@ // See the License for the specific language governing permissions and // limitations under the License. +//! This calls another contract as passed as its account id. #![no_std] #![no_main] -use common::input; +use common::{input, u256_bytes}; use uapi::{HostFn, HostFnImpl as api}; #[no_mangle] @@ -29,16 +30,27 @@ pub extern "C" fn deploy() {} #[polkavm_derive::polkavm_export] pub extern "C" fn call() { input!( - signature: [u8; 65], - hash: [u8; 32], + 256, + callee_addr: &[u8; 20], + value: u64, + callee_input: [u8], ); - let mut output = [0u8; 33]; - api::ecdsa_recover( - &signature[..].try_into().unwrap(), - &hash[..].try_into().unwrap(), - &mut output, + // Call the callee + let mut output = [0u8; 32]; + let output = &mut &mut output[..]; + + api::call( + uapi::CallFlags::empty(), + callee_addr, + u64::MAX, // How much ref_time to devote for the execution. u64::MAX = use all. + u64::MAX, // How much proof_size to devote for the execution. u64::MAX = use all. + &[u8::MAX; 32], // No deposit limit. + &u256_bytes(value), // Value transferred to the contract. + callee_input, + Some(output), ) .unwrap(); - api::return_value(uapi::ReturnFlags::empty(), &output); + + api::return_value(uapi::ReturnFlags::empty(), output); } diff --git a/substrate/frame/revive/src/benchmarking/mod.rs b/substrate/frame/revive/src/benchmarking/mod.rs index 3488e6efc2ac0..bf54371cd2253 100644 --- a/substrate/frame/revive/src/benchmarking/mod.rs +++ b/substrate/frame/revive/src/benchmarking/mod.rs @@ -1948,19 +1948,16 @@ mod benchmarks { #[benchmark(pov_mode = Measured)] fn ecdsa_recover() { use hex_literal::hex; - let input = hex! {" - 18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c - 000000000000000000000000000000000000000000000000000000000000001c - 73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f - eeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549 - "}; - + let input = hex!("18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549"); let expected = hex!("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"); + let mut call_setup = CallSetup::::default(); + let (mut ext, _) = call_setup.ext(); + let result; #[block] { - result = precompiles::ECRecover::execute(&input); + result = precompiles::ECRecover::execute(&mut ext, &input); } assert_eq!(result.unwrap().data, expected); diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index c070bd17dcb13..16cc77edf94c9 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -18,8 +18,8 @@ use crate::{ address::{self, AddressMapper}, gas::GasMeter, - limits, precompiles, - precompiles::Precompile, + limits, + precompiles::Precompiles, primitives::{ExecReturnValue, StorageDeposit}, runtime_decl_for_revive_api::{Decode, Encode, RuntimeDebugNoBound, TypeInfo}, storage::{self, meter::Diff, WriteOutcome}, @@ -447,6 +447,66 @@ pub enum ExportedFunction { Call, } +pub enum PrecompileOrExecutable { + Precompile(H160), + Executable(E), +} + +#[cfg(feature = "runtime-benchmarks")] +impl PrecompileOrExecutable { + fn as_executable(self) -> Option { + match self { + Self::Executable(e) => Some(e), + _ => None, + } + } +} + +impl Executable for PrecompileOrExecutable +where + V: Executable, +{ + fn from_storage(code_hash: H256, gas_meter: &mut GasMeter) -> Result { + Ok(Self::Executable(V::from_storage(code_hash, gas_meter)?)) + } + + fn execute>( + self, + ext: &mut E, + function: ExportedFunction, + input_data: Vec, + ) -> ExecResult { + match self { + Self::Precompile(addr) => Precompiles::::execute(addr, ext, &input_data), + Self::Executable(executable) => executable.execute(ext, function, input_data), + } + } + + fn code_deposit(&self) -> BalanceOf { + match self { + Self::Precompile(_) => 0u32.into(), + Self::Executable(executable) => executable.code_deposit(), + } + } + + fn code(&self) -> &[u8] { + match self { + Self::Precompile(_) => &[], + Self::Executable(executable) => executable.code(), + } + } + + fn code_hash(&self) -> &H256 { + match self { + Self::Precompile(_) => { + const ZERO: H256 = H256::zero(); + &ZERO + }, + Self::Executable(executable) => executable.code_hash(), + } + } +} + /// A trait that represents something that can be executed. /// /// In the on-chain environment this would be represented by a wasm module. This trait exists in @@ -475,7 +535,7 @@ pub trait Executable: Sized { ) -> ExecResult; /// The code info of the executable. - fn code_info(&self) -> &CodeInfo; + fn code_deposit(&self) -> BalanceOf; /// The raw code of the executable. fn code(&self) -> &[u8]; @@ -529,7 +589,7 @@ struct Frame { /// The address of the executing contract. account_id: T::AccountId, /// The cached in-storage data of the contract. - contract_info: CachedContract, + contract_info: Option>, /// The EVM balance transferred by the caller as part of the call. value_transferred: U256, /// Determines whether this is a call or instantiate frame. @@ -611,8 +671,8 @@ enum CachedContract { impl Frame { /// Return the `contract_info` of the current contract. - fn contract_info(&mut self) -> &mut ContractInfo { - self.contract_info.get(&self.account_id) + fn contract_info(&mut self) -> Option<&mut ContractInfo> { + self.contract_info.as_mut().map(|i| i.get(&self.account_id)) } /// Terminate and return the `contract_info` of the current contract. @@ -621,8 +681,8 @@ impl Frame { /// /// Under no circumstances the contract is allowed to access the `contract_info` after /// a call to this function. This would constitute a programming error in the exec module. - fn terminate(&mut self) -> ContractInfo { - self.contract_info.terminate(&self.account_id) + fn terminate(&mut self) -> Option> { + self.contract_info.as_mut().map(|i| i.terminate(&self.account_id)) } } @@ -804,7 +864,7 @@ where storage_meter: &'a mut storage::meter::Meter, value: BalanceOf, ) -> (Self, E) { - Self::new( + let (stack, e) = Self::new( FrameArgs::Call { dest: T::AddressMapper::to_account_id(&dest), cached_info: None, @@ -817,7 +877,8 @@ where false, ) .unwrap() - .unwrap() + .unwrap(); + (stack, e.as_executable().unwrap()) } /// Create a new call stack. @@ -831,7 +892,7 @@ where storage_meter: &'a mut storage::meter::Meter, value: U256, skip_transfer: bool, - ) -> Result, ExecError> { + ) -> Result)>, ExecError> { origin.ensure_mapped()?; let Some((first_frame, executable)) = Self::new_frame( args, @@ -876,16 +937,31 @@ where deposit_limit: BalanceOf, read_only: bool, origin_is_caller: bool, - ) -> Result, E)>, ExecError> { + ) -> Result, PrecompileOrExecutable)>, ExecError> { let (account_id, contract_info, executable, delegate, entry_point, nested_gas) = match frame_args { FrameArgs::Call { dest, cached_info, delegated_call } => { let contract = if let Some(contract) = cached_info { contract } else { - if let Some(contract) = - >::get(T::AddressMapper::to_address(&dest)) - { + let addr = T::AddressMapper::to_address(&dest); + if is_precompile(&addr) && delegated_call.is_none() { + return Ok(Some(( + Frame { + delegate: None, + value_transferred, + contract_info: None, + account_id: dest, + entry_point: ExportedFunction::Call, + nested_gas: gas_meter.nested(gas_limit), + nested_storage: storage_meter.nested(deposit_limit), + allows_reentry: true, + read_only, + last_frame_output: Default::default(), + }, + PrecompileOrExecutable::Precompile(addr), + ))); + } else if let Some(contract) = >::get(addr) { contract } else { return Ok(None); @@ -950,7 +1026,7 @@ where let frame = Frame { delegate, value_transferred, - contract_info: CachedContract::Cached(contract_info), + contract_info: Some(CachedContract::Cached(contract_info)), account_id, entry_point, nested_gas, @@ -960,7 +1036,7 @@ where last_frame_output: Default::default(), }; - Ok(Some((frame, executable))) + Ok(Some((frame, PrecompileOrExecutable::Executable(executable)))) } /// Create a subsequent nested frame. @@ -971,7 +1047,7 @@ where gas_limit: Weight, deposit_limit: BalanceOf, read_only: bool, - ) -> Result, ExecError> { + ) -> Result>, ExecError> { if self.frames.len() as u32 == limits::CALL_STACK_DEPTH { return Err(Error::::MaxCallDepthReached.into()); } @@ -981,7 +1057,7 @@ where // We do not store on instantiate because we do not allow to call into a contract // from its own constructor. let frame = self.top_frame(); - if let (CachedContract::Cached(contract), ExportedFunction::Call) = + if let (Some(CachedContract::Cached(contract)), ExportedFunction::Call) = (&frame.contract_info, frame.entry_point) { >::insert( @@ -1010,64 +1086,22 @@ where } } - fn run_precompile( - &mut self, - precompile_address: &H160, - value_transferred: U256, - input_data: &[u8], - read_only: bool, - ) -> Result<(), ExecError> { - if_tracing(|tracer| { - let caller = self.caller(); - let maybe_caller_address = caller.account_id().map(T::AddressMapper::to_address); - let frame = top_frame_mut!(self); - tracer.enter_child_span( - maybe_caller_address.unwrap_or_default(), - *precompile_address, - false, - read_only, - value_transferred, - &input_data, - frame.nested_gas.gas_left(), - ); - }); - - // TODO burn value_transferred if any - - let output = if precompile_address == &precompiles::ECRECOVER { - self.gas_meter_mut().charge(crate::RuntimeCosts::EcdsaRecovery)?; - precompiles::ECRecover::execute(&input_data) - } else { - log::debug!(target: crate::LOG_TARGET, "Unsupported precompile address {precompile_address:?}"); - todo!() - } - .map_err(|e| { - if_tracing(|tracer| { - tracer.exit_child_span_with_error( - e.error, - top_frame_mut!(self).nested_gas.gas_consumed(), - ); - }); - ExecError { error: e.error, origin: ErrorOrigin::Callee } - })?; - - if_tracing(|tracer| { - tracer.exit_child_span(&output, top_frame_mut!(self).nested_gas.gas_consumed()); - }); - - self.top_frame_mut().last_frame_output = output; - Ok(()) - } - /// Run the current (top) frame. /// /// This can be either a call or an instantiate. - fn run(&mut self, executable: E, input_data: Vec) -> Result<(), ExecError> { + fn run( + &mut self, + executable: PrecompileOrExecutable, + input_data: Vec, + ) -> Result<(), ExecError> { let frame = self.top_frame(); let entry_point = frame.entry_point; let is_delegate_call = frame.delegate.is_some(); - let delegated_code_hash = - if frame.delegate.is_some() { Some(*executable.code_hash()) } else { None }; + let delegated_code_hash = if frame.delegate.is_some() { + Some(* as Executable>::code_hash(&executable)) + } else { + None + }; // The output of the caller frame will be replaced by the output of this run. // It is also not accessible from nested frames. @@ -1133,7 +1167,7 @@ where let contract_address = T::AddressMapper::to_address(account_id); let maybe_caller_address = caller.account_id().map(T::AddressMapper::to_address); - let code_deposit = executable.code_info().deposit(); + let code_deposit = executable.code_deposit(); if_tracing(|tracer| { tracer.enter_child_span( @@ -1168,24 +1202,28 @@ where let frame = self.top_frame_mut(); - // The deposit we charge for a contract depends on the size of the immutable data. - // Hence we need to delay charging the base deposit after execution. - if entry_point == ExportedFunction::Constructor { - let deposit = frame.contract_info().update_base_deposit(code_deposit); + if let Some(contract_info) = &mut frame.contract_info { + // The deposit we charge for a contract depends on the size of the immutable data. + // Hence we need to delay charging the base deposit after execution. + if entry_point == ExportedFunction::Constructor { + let deposit = + contract_info.get(&frame.account_id).update_base_deposit(code_deposit); + + frame + .nested_storage + .charge_deposit(frame.account_id.clone(), StorageDeposit::Charge(deposit)); + } + + // The storage deposit is only charged at the end of every call stack. + // To make sure that no sub call uses more than it is allowed to, + // the limit is manually enforced here. + let contract = contract_info.as_contract(); frame .nested_storage - .charge_deposit(frame.account_id.clone(), StorageDeposit::Charge(deposit)); + .enforce_limit(contract) + .map_err(|e| ExecError { error: e, origin: ErrorOrigin::Callee })?; } - // The storage deposit is only charged at the end of every call stack. - // To make sure that no sub call uses more than it is allowed to, - // the limit is manually enforced here. - let contract = frame.contract_info.as_contract(); - frame - .nested_storage - .enforce_limit(contract) - .map_err(|e| ExecError { error: e, origin: ErrorOrigin::Callee })?; - Ok(output) }; @@ -1237,7 +1275,7 @@ where // Both branches do essentially the same with the exception. The difference is that // the else branch does consume the hardcoded `first_frame`. - if let Some(mut frame) = frame { + if let Some(frame) = frame { let account_id = &frame.account_id; let prev = top_frame_mut!(self); @@ -1252,9 +1290,15 @@ where // If the dropped frame's contract wasn't terminated we update the deposit counter // in its contract info. The load is necessary to pull it from storage in case // it was invalidated. - frame.contract_info.load(account_id); - let mut contract = frame.contract_info.into_contract(); - prev.nested_storage.absorb(frame.nested_storage, account_id, contract.as_mut()); + let contract = if let Some(mut contract_info) = frame.contract_info { + contract_info.load(account_id); + let mut contract = contract_info.into_contract(); + prev.nested_storage.absorb(frame.nested_storage, account_id, contract.as_mut()); + contract + } else { + prev.nested_storage.absorb(frame.nested_storage, account_id, None); + None + }; // In case the contract wasn't terminated we need to persist changes made to it. if let Some(contract) = contract { @@ -1263,7 +1307,7 @@ where // This is possible when there is no other contract in-between that could // trigger a rollback. if prev.account_id == *account_id { - prev.contract_info = CachedContract::Cached(contract); + prev.contract_info = Some(CachedContract::Cached(contract)); return; } @@ -1274,7 +1318,7 @@ where // when it is popped from the stack. >::insert(T::AddressMapper::to_address(account_id), contract); if let Some(c) = self.frames_mut().skip(1).find(|f| f.account_id == *account_id) { - c.contract_info = CachedContract::Invalidated; + c.contract_info = Some(CachedContract::Invalidated); } } } else { @@ -1282,7 +1326,12 @@ where if !persist { return; } - let mut contract = self.first_frame.contract_info.as_contract(); + let mut contract = if let Some(contract_info) = self.first_frame.contract_info.as_mut() + { + contract_info.as_contract() + } else { + None + }; self.storage_meter.absorb( mem::take(&mut self.first_frame.nested_storage), &self.first_frame.account_id, @@ -1460,9 +1509,9 @@ where *self.last_frame_output_mut() = Default::default(); let try_call = || { - if is_precompile(&dest_addr) { - return self.run_precompile(dest_addr, value, &input_data, read_only); - } + //if is_precompile(&dest_addr) { + // return self.run_precompile(dest_addr, value, &input_data, read_only); + //} let dest = T::AddressMapper::to_account_id(dest_addr); if !self.allows_reentry(&dest) { @@ -1478,7 +1527,7 @@ where .frames() .find(|f| f.entry_point == ExportedFunction::Call && f.account_id == dest) .and_then(|f| match &f.contract_info { - CachedContract::Cached(contract) => Some(contract.clone()), + Some(CachedContract::Cached(contract)) => Some(contract.clone()), _ => None, }); @@ -1551,13 +1600,13 @@ where .map(|c| c.code_hash)?; let executable = E::from_storage(code_hash, self.gas_meter_mut())?; let top_frame = self.top_frame_mut(); - let contract_info = top_frame.contract_info().clone(); + let contract_info = top_frame.contract_info().map(|info| info.clone()); let account_id = top_frame.account_id.clone(); let value = top_frame.value_transferred; let executable = self.push_frame( FrameArgs::Call { dest: account_id, - cached_info: Some(contract_info), + cached_info: contract_info, delegated_call: Some(DelegatedCall { executable, caller: self.caller().clone(), @@ -1612,25 +1661,26 @@ where if frame.entry_point == ExportedFunction::Constructor { return Err(Error::::TerminatedInConstructor.into()); } - let info = frame.terminate(); - let beneficiary_account = T::AddressMapper::to_account_id(beneficiary); - frame.nested_storage.terminate(&info, beneficiary_account); - - info.queue_trie_for_deletion(); - let account_address = T::AddressMapper::to_address(&frame.account_id); - ContractInfoOf::::remove(&account_address); - ImmutableDataOf::::remove(&account_address); - >::decrement_refcount(info.code_hash)?; + if let Some(info) = frame.terminate() { + let beneficiary_account = T::AddressMapper::to_account_id(beneficiary); + frame.nested_storage.terminate(&info, beneficiary_account); + + info.queue_trie_for_deletion(); + let account_address = T::AddressMapper::to_address(&frame.account_id); + ContractInfoOf::::remove(&account_address); + ImmutableDataOf::::remove(&account_address); + >::decrement_refcount(info.code_hash)?; + } Ok(()) } fn get_storage(&mut self, key: &Key) -> Option> { - self.top_frame_mut().contract_info().read(key) + self.top_frame_mut().contract_info().and_then(|info| info.read(key)) } fn get_storage_size(&mut self, key: &Key) -> Option { - self.top_frame_mut().contract_info().size(key.into()) + self.top_frame_mut().contract_info().and_then(|info| info.size(key.into())) } fn set_storage( @@ -1640,7 +1690,11 @@ where take_old: bool, ) -> Result { let frame = self.top_frame_mut(); - frame.contract_info.get(&frame.account_id).write( + let Some(contract_info) = frame.contract_info.as_mut() else { + return Err(Error::::CodeInfoNotFound.into()) + }; + + contract_info.get(&frame.account_id).write( key.into(), value, Some(&mut frame.nested_storage), @@ -1714,7 +1768,8 @@ where } fn own_code_hash(&mut self) -> &H256 { - &self.top_frame_mut().contract_info().code_hash + const ZERO: H256 = H256::zero(); + self.top_frame_mut().contract_info().map_or(&ZERO, |info| &info.code_hash) } fn caller_is_origin(&self) -> bool { @@ -1727,7 +1782,10 @@ where } fn immutable_data_len(&mut self) -> u32 { - self.top_frame_mut().contract_info().immutable_data_len() + self.top_frame_mut() + .contract_info() + .map(|i| i.immutable_data_len()) + .unwrap_or_default() } fn get_immutable_data(&mut self) -> Result { @@ -1750,7 +1808,11 @@ where if frame.entry_point == ExportedFunction::Call || data.is_empty() { return Err(Error::::InvalidImmutableAccess.into()); } - frame.contract_info().set_immutable_data_len(data.len() as u32); + let Some(contract_info) = frame.contract_info() else { + return Err(Error::::InvalidImmutableAccess.into()); + }; + + contract_info.set_immutable_data_len(data.len() as u32); >::insert(T::AddressMapper::to_address(&frame.account_id), &data); Ok(()) } @@ -1842,7 +1904,7 @@ where #[cfg(any(test, feature = "runtime-benchmarks"))] fn contract_info(&mut self) -> &mut ContractInfo { - self.top_frame_mut().contract_info() + self.top_frame_mut().contract_info().unwrap() } #[cfg(feature = "runtime-benchmarks")] @@ -1868,7 +1930,9 @@ where fn set_code_hash(&mut self, hash: H256) -> DispatchResult { let frame = top_frame_mut!(self); - let info = frame.contract_info(); + let Some(info) = frame.contract_info() else { + return Err(Error::::ContractNotFound.into()) + }; let prev_hash = info.code_hash; info.code_hash = hash; diff --git a/substrate/frame/revive/src/exec/tests.rs b/substrate/frame/revive/src/exec/tests.rs index 2511715654c17..760447b0e9cb7 100644 --- a/substrate/frame/revive/src/exec/tests.rs +++ b/substrate/frame/revive/src/exec/tests.rs @@ -180,8 +180,8 @@ impl Executable for MockExecutable { &self.code_hash } - fn code_info(&self) -> &CodeInfo { - &self.code_info + fn code_deposit(&self) -> BalanceOf { + self.code_info.deposit() } } diff --git a/substrate/frame/revive/src/precompiles.rs b/substrate/frame/revive/src/precompiles.rs index 1b5040f14e031..ef8ff4223157f 100644 --- a/substrate/frame/revive/src/precompiles.rs +++ b/substrate/frame/revive/src/precompiles.rs @@ -15,17 +15,29 @@ // See the License for the specific language governing permissions and // limitations under the License. mod ecrecover; -use crate::exec::ExecResult; + +use crate::{ + exec::{ExecResult, Ext}, + Config, Error, H160, +}; pub use ecrecover::*; /// The `Precompile` trait defines the functionality for executing a precompiled contract. -pub trait Precompile { +pub trait Precompile { /// Executes the precompile with the provided input data. - /// - /// # Parameters - /// - `input`: The input data passed to the precompile. - /// - /// # Returns - /// - `ExecResult`: The result of the precompile execution - fn execute(input: &[u8]) -> ExecResult; + fn execute>(ext: &mut E, input: &[u8]) -> ExecResult; +} + +pub struct Precompiles { + _phantom: core::marker::PhantomData, +} + +impl Precompiles { + pub fn execute>(addr: H160, ext: &mut E, input: &[u8]) -> ExecResult { + if addr == ECRECOVER { + ECRecover::execute(ext, input) + } else { + Err(Error::::UnsupportedPrecompileAddress.into()) + } + } } diff --git a/substrate/frame/revive/src/precompiles/ecrecover.rs b/substrate/frame/revive/src/precompiles/ecrecover.rs index fa9271ff7fc78..0eaad5061bc90 100644 --- a/substrate/frame/revive/src/precompiles/ecrecover.rs +++ b/substrate/frame/revive/src/precompiles/ecrecover.rs @@ -15,7 +15,10 @@ // See the License for the specific language governing permissions and // limitations under the License. use super::Precompile; -use crate::{exec::ExecResult, ExecReturnValue}; +use crate::{ + exec::{ExecResult, Ext}, + Config, ExecReturnValue, +}; use hex_literal::hex; use pallet_revive_uapi::ReturnFlags; use sp_core::H160; @@ -24,8 +27,8 @@ pub const ECRECOVER: H160 = H160(hex!("0000000000000000000000000000000000000001" /// The ecrecover precompile. pub struct ECRecover; -impl Precompile for ECRecover { - fn execute(i: &[u8]) -> ExecResult { +impl Precompile for ECRecover { + fn execute>(_ext: &mut E, i: &[u8]) -> ExecResult { let mut input = [0u8; 128]; let len = i.len().min(128); input[..len].copy_from_slice(&i[..len]); diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index bda47030b23bb..7b017df5f99d7 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -2304,47 +2304,6 @@ fn call_runtime_reentrancy_guarded() { }); } -#[test] -fn ecdsa_recover() { - let (wasm, _code_hash) = compile_module("ecdsa_recover").unwrap(); - - ExtBuilder::default().existential_deposit(50).build().execute_with(|| { - let _ = ::Currency::set_balance(&ALICE, 1_000_000); - - // Instantiate the ecdsa_recover contract. - let Contract { addr, .. } = builder::bare_instantiate(Code::Upload(wasm)) - .value(100_000) - .build_and_unwrap_contract(); - - #[rustfmt::skip] - let signature: [u8; 65] = [ - 161, 234, 203, 74, 147, 96, 51, 212, 5, 174, 231, 9, 142, 48, 137, 201, - 162, 118, 192, 67, 239, 16, 71, 216, 125, 86, 167, 139, 70, 7, 86, 241, - 33, 87, 154, 251, 81, 29, 160, 4, 176, 239, 88, 211, 244, 232, 232, 52, - 211, 234, 100, 115, 230, 47, 80, 44, 152, 166, 62, 50, 8, 13, 86, 175, - 28, - ]; - #[rustfmt::skip] - let message_hash: [u8; 32] = [ - 162, 28, 244, 179, 96, 76, 244, 178, 188, 83, 230, 248, 143, 106, 77, 117, - 239, 95, 244, 171, 65, 95, 62, 153, 174, 166, 182, 28, 130, 73, 196, 208 - ]; - #[rustfmt::skip] - const EXPECTED_COMPRESSED_PUBLIC_KEY: [u8; 33] = [ - 2, 121, 190, 102, 126, 249, 220, 187, 172, 85, 160, 98, 149, 206, 135, 11, - 7, 2, 155, 252, 219, 45, 206, 40, 217, 89, 242, 129, 91, 22, 248, 23, - 152, - ]; - let mut params = vec![]; - params.extend_from_slice(&signature); - params.extend_from_slice(&message_hash); - assert!(params.len() == 65 + 32); - let result = builder::bare_call(addr).data(params).build_and_unwrap_result(); - assert!(!result.did_revert()); - assert_eq!(result.data, EXPECTED_COMPRESSED_PUBLIC_KEY); - }) -} - #[test] fn sr25519_verify() { let (wasm, _code_hash) = compile_module("sr25519_verify").unwrap(); @@ -4601,15 +4560,15 @@ fn unknown_precompiles_revert() { let cases: Vec<(H160, Box)> = vec![ ( - H160::from_low_u64_be(0x1), + H160::from_low_u64_be(0x2), Box::new(|result| { - assert_err!(result, >::UnsupportedPrecompileAddress); + assert_err!(result, >::ContractTrapped); }), ), ( H160::from_low_u64_be(0xff), Box::new(|result| { - assert_err!(result, >::UnsupportedPrecompileAddress); + assert_err!(result, >::ContractTrapped); }), ), ( @@ -4627,3 +4586,35 @@ fn unknown_precompiles_revert() { } }); } + +#[test] +fn ecrecover_precompile_works() { + use hex_literal::hex; + let (code, _code_hash) = compile_module("call_with_value").unwrap(); + + ExtBuilder::default().build().execute_with(|| { + let _ = ::Currency::set_balance(&ALICE, 100_000_000_000); + let Contract { addr, .. } = + builder::bare_instantiate(Code::Upload(code)).value(1000).build_and_unwrap_contract(); + + let cases = vec![ + ( + hex!("18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549"), + hex!("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b").to_vec(), + ), + ( + hex!("18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000000173b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549"), + [0u8; 0].to_vec(), + ), + ]; + + + for (input, output) in cases { + let result = builder::bare_call(addr) + .data((H160::from_low_u64_be(0x1), 100u64, input).encode()) + .build_and_unwrap_result(); + assert_eq!(result.flags, ReturnFlags::empty()); + assert_eq!(result.data, output); + } + }); +} diff --git a/substrate/frame/revive/src/wasm/mod.rs b/substrate/frame/revive/src/wasm/mod.rs index 512b8574eb151..4320f1837c00f 100644 --- a/substrate/frame/revive/src/wasm/mod.rs +++ b/substrate/frame/revive/src/wasm/mod.rs @@ -387,7 +387,7 @@ where &self.code_hash } - fn code_info(&self) -> &CodeInfo { - &self.code_info + fn code_deposit(&self) -> BalanceOf { + self.code_info.deposit } } diff --git a/substrate/frame/revive/src/wasm/runtime.rs b/substrate/frame/revive/src/wasm/runtime.rs index b15d461c62f27..a8b897a7efc63 100644 --- a/substrate/frame/revive/src/wasm/runtime.rs +++ b/substrate/frame/revive/src/wasm/runtime.rs @@ -1862,36 +1862,6 @@ pub mod env { self.contains_storage(memory, flags, key_ptr, key_len) } - /// Recovers the ECDSA public key from the given message hash and signature. - /// See [`pallet_revive_uapi::HostFn::ecdsa_recover`]. - fn ecdsa_recover( - &mut self, - memory: &mut M, - signature_ptr: u32, - message_hash_ptr: u32, - output_ptr: u32, - ) -> Result { - self.charge_gas(RuntimeCosts::EcdsaRecovery)?; - - let mut signature: [u8; 65] = [0; 65]; - memory.read_into_buf(signature_ptr, &mut signature)?; - let mut message_hash: [u8; 32] = [0; 32]; - memory.read_into_buf(message_hash_ptr, &mut message_hash)?; - - let result = self.ext.ecdsa_recover(&signature, &message_hash); - - match result { - Ok(pub_key) => { - // Write the recovered compressed ecdsa public key back into the sandboxed output - // buffer. - memory.write(output_ptr, pub_key.as_ref())?; - - Ok(ReturnErrorCode::Success) - }, - Err(_) => Ok(ReturnErrorCode::EcdsaRecoveryFailed), - } - } - /// Calculates Ethereum address from the ECDSA compressed public key and stores /// See [`pallet_revive_uapi::HostFn::ecdsa_to_eth_address`]. fn ecdsa_to_eth_address( diff --git a/substrate/frame/revive/uapi/src/host.rs b/substrate/frame/revive/uapi/src/host.rs index 8e14eefc63645..3b0432d93005f 100644 --- a/substrate/frame/revive/uapi/src/host.rs +++ b/substrate/frame/revive/uapi/src/host.rs @@ -533,27 +533,6 @@ pub trait HostFn: private::Sealed { #[unstable_hostfn] fn contains_storage(flags: StorageFlags, key: &[u8]) -> Option; - /// Recovers the ECDSA public key from the given message hash and signature. - /// - /// Writes the public key into the given output buffer. - /// Assumes the secp256k1 curve. - /// - /// # Parameters - /// - /// - `signature`: The signature bytes. - /// - `message_hash`: The message hash bytes. - /// - `output`: A reference to the output data buffer to write the public key. - /// - /// # Errors - /// - /// - [EcdsaRecoveryFailed][`crate::ReturnErrorCode::EcdsaRecoveryFailed] - #[unstable_hostfn] - fn ecdsa_recover( - signature: &[u8; 65], - message_hash: &[u8; 32], - output: &mut [u8; 33], - ) -> Result; - /// Calculates Ethereum address from the ECDSA compressed public key and stores /// it into the supplied buffer. /// diff --git a/substrate/frame/revive/uapi/src/host/riscv64.rs b/substrate/frame/revive/uapi/src/host/riscv64.rs index 588579dc83ebf..23b69bd4ca90f 100644 --- a/substrate/frame/revive/uapi/src/host/riscv64.rs +++ b/substrate/frame/revive/uapi/src/host/riscv64.rs @@ -133,11 +133,6 @@ mod sys { out_len_ptr: *mut u32, ) -> ReturnCode; pub fn call_runtime(call_ptr: *const u8, call_len: u32) -> ReturnCode; - pub fn ecdsa_recover( - signature_ptr: *const u8, - message_hash_ptr: *const u8, - out_ptr: *mut u8, - ) -> ReturnCode; pub fn sr25519_verify( signature_ptr: *const u8, pub_key_ptr: *const u8, @@ -510,18 +505,6 @@ impl HostFn for HostFnImpl { ret_code.into() } - #[unstable_hostfn] - fn ecdsa_recover( - signature: &[u8; 65], - message_hash: &[u8; 32], - output: &mut [u8; 33], - ) -> Result { - let ret_code = unsafe { - sys::ecdsa_recover(signature.as_ptr(), message_hash.as_ptr(), output.as_mut_ptr()) - }; - ret_code.into() - } - #[unstable_hostfn] fn ecdsa_to_eth_address(pubkey: &[u8; 33], output: &mut [u8; 20]) -> Result { let ret_code = unsafe { sys::ecdsa_to_eth_address(pubkey.as_ptr(), output.as_mut_ptr()) }; From 32eddaf351f6553d00a6bf5b8077feeaf5ce772e Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 21:10:32 +0100 Subject: [PATCH 09/26] rm unneeded changes --- .../revive/rpc/examples/js/src/geth-diff.test.ts | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts b/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts index 8dec9b8dd9740..33e38fccd8a81 100644 --- a/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts +++ b/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts @@ -449,7 +449,7 @@ for (const env of envs) { }) }) - test.only('tracing', async () => { + test('tracing', async () => { let [callerAddr, calleeAddr] = await getTracingExampleAddrs() const receipt = await (async () => { @@ -526,20 +526,6 @@ for (const env of envs) { ) expect(visit(res, visitor)).toEqual(fixture) } - - { - const res = await env.debugClient.traceCall( - { - to: callerAddr, - data: encodeFunctionData({ - abi: TracingCallerAbi, - functionName: 'tryDelegateCall', - }), - }, - { withLog: true } - ) - console.error(visit(res, visitor)) - } }) }) } From 8e31809eb4abee03b955858ce99e47464024c3a1 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 21:13:25 +0100 Subject: [PATCH 10/26] fix test --- substrate/frame/revive/src/tests.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index 7b017df5f99d7..e7bb7f3545642 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -4613,7 +4613,6 @@ fn ecrecover_precompile_works() { let result = builder::bare_call(addr) .data((H160::from_low_u64_be(0x1), 100u64, input).encode()) .build_and_unwrap_result(); - assert_eq!(result.flags, ReturnFlags::empty()); assert_eq!(result.data, output); } }); From 14736259afddc151b3914bcadc82eed2ce2ee01f Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 21:13:56 +0100 Subject: [PATCH 11/26] nit space --- substrate/frame/revive/src/tests.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index e7bb7f3545642..bd4d4407702f2 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -4608,7 +4608,6 @@ fn ecrecover_precompile_works() { ), ]; - for (input, output) in cases { let result = builder::bare_call(addr) .data((H160::from_low_u64_be(0x1), 100u64, input).encode()) From 7eebdcc79a47d508657edbaa37178c88b3321798 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 21:17:24 +0100 Subject: [PATCH 12/26] charge gas --- substrate/frame/revive/src/precompiles/ecrecover.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/precompiles/ecrecover.rs b/substrate/frame/revive/src/precompiles/ecrecover.rs index 0eaad5061bc90..21d9ef00a7044 100644 --- a/substrate/frame/revive/src/precompiles/ecrecover.rs +++ b/substrate/frame/revive/src/precompiles/ecrecover.rs @@ -17,7 +17,7 @@ use super::Precompile; use crate::{ exec::{ExecResult, Ext}, - Config, ExecReturnValue, + Config, ExecReturnValue, RuntimeCosts, }; use hex_literal::hex; use pallet_revive_uapi::ReturnFlags; @@ -28,7 +28,9 @@ pub const ECRECOVER: H160 = H160(hex!("0000000000000000000000000000000000000001" pub struct ECRecover; impl Precompile for ECRecover { - fn execute>(_ext: &mut E, i: &[u8]) -> ExecResult { + fn execute>(ext: &mut E, i: &[u8]) -> ExecResult { + ext.gas_meter_mut().charge(RuntimeCosts::EcdsaRecovery)?; + let mut input = [0u8; 128]; let len = i.len().min(128); input[..len].copy_from_slice(&i[..len]); From cab30ae3cbc4f84420312010e8df49f1a524ca1a Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 22:20:27 +0100 Subject: [PATCH 13/26] simplify --- substrate/frame/revive/src/exec.rs | 54 +++++++++--------------------- 1 file changed, 15 insertions(+), 39 deletions(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 9a883183c74c6..41266b9205375 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -452,9 +452,8 @@ pub enum PrecompileOrExecutable { Executable(E), } -#[cfg(feature = "runtime-benchmarks")] impl PrecompileOrExecutable { - fn as_executable(self) -> Option { + fn as_executable(&self) -> Option<&E> { match self { Self::Executable(e) => Some(e), _ => None, @@ -462,49 +461,21 @@ impl PrecompileOrExecutable { } } -impl Executable for PrecompileOrExecutable -where - V: Executable, -{ - fn from_storage(code_hash: H256, gas_meter: &mut GasMeter) -> Result { - Ok(Self::Executable(V::from_storage(code_hash, gas_meter)?)) - } - - fn execute>( +impl PrecompileOrExecutable { + fn execute>( self, ext: &mut E, function: ExportedFunction, input_data: Vec, - ) -> ExecResult { + ) -> ExecResult + where + Exec: Executable, + { match self { Self::Precompile(addr) => Precompiles::::execute(addr, ext, &input_data), Self::Executable(executable) => executable.execute(ext, function, input_data), } } - - fn code_deposit(&self) -> BalanceOf { - match self { - Self::Precompile(_) => 0u32.into(), - Self::Executable(executable) => executable.code_deposit(), - } - } - - fn code(&self) -> &[u8] { - match self { - Self::Precompile(_) => &[], - Self::Executable(executable) => executable.code(), - } - } - - fn code_hash(&self) -> &H256 { - match self { - Self::Precompile(_) => { - const ZERO: H256 = H256::zero(); - &ZERO - }, - Self::Executable(executable) => executable.code_hash(), - } - } } /// A trait that represents something that can be executed. @@ -878,7 +849,11 @@ where ) .unwrap() .unwrap(); - (stack, e.as_executable().unwrap()) + + match e { + PrecompileOrExecutable::Executable(e) => (stack, e), + _ => panic!("Expected executable"), + } } /// Create a new call stack. @@ -1098,7 +1073,7 @@ where let entry_point = frame.entry_point; let is_delegate_call = frame.delegate.is_some(); let delegated_code_hash = if frame.delegate.is_some() { - Some(* as Executable>::code_hash(&executable)) + executable.as_executable().map(|e| *e.code_hash()) } else { None }; @@ -1130,6 +1105,7 @@ where // Root origin can't be used to instantiate a contract, so it is safe to assume that // if we reached this point the origin has an associated account. let origin = &self.origin.account_id()?; + let executable = executable.as_executable().ok_or(Error::::ContractNotFound)?; let ed = >::min_balance(); frame.nested_storage.record_charge(&StorageDeposit::Charge(ed)); @@ -1167,7 +1143,7 @@ where let contract_address = T::AddressMapper::to_address(account_id); let maybe_caller_address = caller.account_id().map(T::AddressMapper::to_address); - let code_deposit = executable.code_deposit(); + let code_deposit = executable.as_executable().map_or(0u32.into(), |e| e.code_deposit()); if_tracing(|tracer| { tracer.enter_child_span( From 009fb3fec2a069a42a4fc33796106f0a8b5707a9 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Thu, 20 Feb 2025 22:28:47 +0100 Subject: [PATCH 14/26] add comments --- substrate/frame/revive/src/exec.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 41266b9205375..e7a2e623b85ea 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -447,12 +447,14 @@ pub enum ExportedFunction { Call, } +/// Either a precompile or an executable contract. pub enum PrecompileOrExecutable { Precompile(H160), Executable(E), } impl PrecompileOrExecutable { + /// Convert to an executable, if it is one. fn as_executable(&self) -> Option<&E> { match self { Self::Executable(e) => Some(e), @@ -462,6 +464,7 @@ impl PrecompileOrExecutable { } impl PrecompileOrExecutable { + /// Execute the underlying precompile or executable. fn execute>( self, ext: &mut E, From 60bfa83a62086f72ed3e7125bc9920b04e7fa3a2 Mon Sep 17 00:00:00 2001 From: "cmd[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 22:01:33 +0000 Subject: [PATCH 15/26] Update from pgherveou running command 'prdoc --audience runtime_dev --bump minor' --- prdoc/pr_7652.prdoc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 prdoc/pr_7652.prdoc diff --git a/prdoc/pr_7652.prdoc b/prdoc/pr_7652.prdoc new file mode 100644 index 0000000000000..e2f820a08d6e3 --- /dev/null +++ b/prdoc/pr_7652.prdoc @@ -0,0 +1,21 @@ +title: '[pallet-revive] ecrecover' +doc: +- audience: Runtime Dev + description: |- + Add ECrecover 0x1 precompile and remove the unstable equivalent host function. + + To encompass the change: + - the frame `contract_info` is now an Option and only set when executing a contract. + - the executable created with a frame is now wrapped into an enum `PrecompileOrExecutable` + - a precompile module list all the registered precompiles (just 1 for now) and execute the one for the given address & input. +crates: +- name: asset-hub-westend-runtime + bump: minor +- name: pallet-revive-eth-rpc + bump: minor +- name: pallet-revive + bump: minor +- name: pallet-revive-fixtures + bump: minor +- name: pallet-revive-uapi + bump: minor From 3ef1dd47487d52977cf7e45ad2abe986a1b6cb0b Mon Sep 17 00:00:00 2001 From: pgherveou Date: Fri, 21 Feb 2025 11:13:23 +0100 Subject: [PATCH 16/26] rename fixture --- .../{call_with_value.rs => call_and_return.rs} | 13 +++++++------ substrate/frame/revive/src/tests.rs | 3 ++- 2 files changed, 9 insertions(+), 7 deletions(-) rename substrate/frame/revive/fixtures/contracts/{call_with_value.rs => call_and_return.rs} (84%) diff --git a/substrate/frame/revive/fixtures/contracts/call_with_value.rs b/substrate/frame/revive/fixtures/contracts/call_and_return.rs similarity index 84% rename from substrate/frame/revive/fixtures/contracts/call_with_value.rs rename to substrate/frame/revive/fixtures/contracts/call_and_return.rs index c7a85659bf496..3fc16fc16706b 100644 --- a/substrate/frame/revive/fixtures/contracts/call_with_value.rs +++ b/substrate/frame/revive/fixtures/contracts/call_and_return.rs @@ -20,7 +20,7 @@ #![no_main] use common::{input, u256_bytes}; -use uapi::{HostFn, HostFnImpl as api}; +use uapi::{HostFn, HostFnImpl as api, ReturnErrorCode, ReturnFlags}; #[no_mangle] #[polkavm_derive::polkavm_export] @@ -40,7 +40,7 @@ pub extern "C" fn call() { let mut output = [0u8; 32]; let output = &mut &mut output[..]; - api::call( + match api::call( uapi::CallFlags::empty(), callee_addr, u64::MAX, // How much ref_time to devote for the execution. u64::MAX = use all. @@ -49,8 +49,9 @@ pub extern "C" fn call() { &u256_bytes(value), // Value transferred to the contract. callee_input, Some(output), - ) - .unwrap(); - - api::return_value(uapi::ReturnFlags::empty(), output); + ) { + Ok(_) => api::return_value(uapi::ReturnFlags::empty(), output), + Err(ReturnErrorCode::CalleeReverted) => api::return_value(ReturnFlags::REVERT, output), + Err(_) => panic!(), + } } diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index bd4d4407702f2..9f1bca2cb3ad8 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -4590,7 +4590,7 @@ fn unknown_precompiles_revert() { #[test] fn ecrecover_precompile_works() { use hex_literal::hex; - let (code, _code_hash) = compile_module("call_with_value").unwrap(); + let (code, _code_hash) = compile_module("call_and_return").unwrap(); ExtBuilder::default().build().execute_with(|| { let _ = ::Currency::set_balance(&ALICE, 100_000_000_000); @@ -4613,6 +4613,7 @@ fn ecrecover_precompile_works() { .data((H160::from_low_u64_be(0x1), 100u64, input).encode()) .build_and_unwrap_result(); assert_eq!(result.data, output); + assert_eq!(result.flags, ReturnFlags::empty()); } }); } From 36b645fc0eadf479aec409a0a0a844dbbd85db2a Mon Sep 17 00:00:00 2001 From: pgherveou Date: Sun, 23 Feb 2025 22:18:00 +0100 Subject: [PATCH 17/26] fix tracing should wrap around the entire call stack execution --- substrate/frame/revive/src/exec.rs | 67 +++++++++++++++--------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 721254180bf5d..e13212f5e5ee5 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1015,10 +1015,21 @@ where fn run(&mut self, executable: E, input_data: Vec) -> Result<(), ExecError> { let frame = self.top_frame(); let entry_point = frame.entry_point; - let is_delegate_call = frame.delegate.is_some(); let delegated_code_hash = if frame.delegate.is_some() { Some(*executable.code_hash()) } else { None }; + if_tracing(|tracer| { + tracer.enter_child_span( + self.caller().account_id().map(T::AddressMapper::to_address).unwrap_or_default(), + T::AddressMapper::to_address(&frame.account_id), + frame.delegate.is_some(), + frame.read_only, + frame.value_transferred, + &input_data, + frame.nested_gas.gas_left(), + ); + }); + // The output of the caller frame will be replaced by the output of this run. // It is also not accessible from nested frames. // Hence we drop it early to save the memory. @@ -1036,8 +1047,6 @@ where let do_transaction = || -> ExecResult { let caller = self.caller(); let frame = top_frame_mut!(self); - let read_only = frame.read_only; - let value_transferred = frame.value_transferred; let account_id = &frame.account_id.clone(); // We need to make sure that the contract's account exists before calling its @@ -1081,35 +1090,10 @@ where )?; } - let contract_address = T::AddressMapper::to_address(account_id); - let maybe_caller_address = caller.account_id().map(T::AddressMapper::to_address); let code_deposit = executable.code_info().deposit(); - - if_tracing(|tracer| { - tracer.enter_child_span( - maybe_caller_address.unwrap_or_default(), - contract_address, - is_delegate_call, - read_only, - value_transferred, - &input_data, - frame.nested_gas.gas_left(), - ); - }); - - let output = executable.execute(self, entry_point, input_data).map_err(|e| { - if_tracing(|tracer| { - tracer.exit_child_span_with_error( - e.error, - top_frame_mut!(self).nested_gas.gas_consumed(), - ); - }); - ExecError { error: e.error, origin: ErrorOrigin::Callee } - })?; - - if_tracing(|tracer| { - tracer.exit_child_span(&output, top_frame_mut!(self).nested_gas.gas_consumed()); - }); + let output = executable + .execute(self, entry_point, input_data) + .map_err(|e| ExecError { error: e.error, origin: ErrorOrigin::Callee })?; // Avoid useless work that would be reverted anyways. if output.did_revert() { @@ -1157,10 +1141,27 @@ where let (success, output) = match transaction_outcome { // `with_transactional` executed successfully, and we have the expected output. - Ok((success, output)) => (success, output), + Ok((success, output)) => { + if_tracing(|tracer| { + let gas_consumed = top_frame!(self).nested_gas.gas_consumed(); + match &output { + Ok(output) => tracer.exit_child_span(&output, gas_consumed), + Err(e) => tracer.exit_child_span_with_error(e.error.into(), gas_consumed), + } + }); + + (success, output) + }, // `with_transactional` returned an error, and we propagate that error and note no state // has changed. - Err(error) => (false, Err(error.into())), + Err(error) => { + if_tracing(|tracer| { + let gas_consumed = top_frame!(self).nested_gas.gas_consumed(); + tracer.exit_child_span_with_error(error.into(), gas_consumed); + }); + + (false, Err(error.into())) + }, }; if success { From 4d782f0cb6a22ca258077df9e0f3afe13e501381 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Sun, 23 Feb 2025 23:49:47 +0100 Subject: [PATCH 18/26] PR reviews --- substrate/frame/revive/src/exec.rs | 101 ++++++++++++++++-- substrate/frame/revive/src/exec/tests.rs | 4 +- substrate/frame/revive/src/lib.rs | 2 +- .../{precompiles.rs => pure_precompiles.rs} | 21 ++-- .../ecrecover.rs | 9 +- substrate/frame/revive/src/wasm/mod.rs | 4 +- 6 files changed, 111 insertions(+), 30 deletions(-) rename substrate/frame/revive/src/{precompiles.rs => pure_precompiles.rs} (67%) rename substrate/frame/revive/src/{precompiles => pure_precompiles}/ecrecover.rs (90%) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index e13212f5e5ee5..93a8a73198aca 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -20,6 +20,7 @@ use crate::{ gas::GasMeter, limits, primitives::{ExecReturnValue, StorageDeposit}, + pure_precompiles::{self, is_precompile}, runtime_decl_for_revive_api::{Decode, Encode, RuntimeDebugNoBound, TypeInfo}, storage::{self, meter::Diff, WriteOutcome}, tracing::if_tracing, @@ -1372,13 +1373,88 @@ where } Some(System::::block_hash(&block_number).into()) } -} -/// Determine if the given address is a precompile. -/// For now, we consider that all addresses between 0x1 and 0xff are reserved for precompiles. -fn is_precompile(address: &H160) -> bool { - let bytes = address.as_bytes(); - bytes.starts_with(&[0u8; 19]) && bytes[19] != 0 + fn run_precompile( + &mut self, + precompile_address: H160, + is_delegate: bool, + is_read_only: bool, + value_transferred: U256, + input_data: &[u8], + ) -> Result<(), ExecError> { + if_tracing(|tracer| { + tracer.enter_child_span( + self.caller().account_id().map(T::AddressMapper::to_address).unwrap_or_default(), + precompile_address, + is_delegate, + is_read_only, + value_transferred, + &input_data, + self.gas_meter().gas_left(), + ); + }); + + self.transient_storage.start_transaction(); + let mut do_transaction = || -> ExecResult { + if !is_delegate { + Self::transfer_from_origin( + &self.origin, + &self.caller(), + &T::AddressMapper::to_fallback_account_id(&precompile_address), + value_transferred, + )?; + } + + pure_precompiles::Precompiles::::execute( + precompile_address, + self.gas_meter_mut(), + input_data, + ) + .map_err(|e| ExecError { error: e.error, origin: ErrorOrigin::Callee }) + }; + + let transaction_outcome = + with_transaction(|| -> TransactionOutcome> { + let output = do_transaction(); + match &output { + Ok(result) if !result.did_revert() => + TransactionOutcome::Commit(Ok((true, output))), + _ => TransactionOutcome::Rollback(Ok((false, output))), + } + }); + + let (success, output) = match transaction_outcome { + Ok((success, output)) => { + if_tracing(|tracer| { + let gas_consumed = top_frame!(self).nested_gas.gas_consumed(); + match &output { + Ok(output) => tracer.exit_child_span(&output, gas_consumed), + Err(e) => tracer.exit_child_span_with_error(e.error.into(), gas_consumed), + } + }); + + (success, output) + }, + Err(error) => { + if_tracing(|tracer| { + let gas_consumed = top_frame!(self).nested_gas.gas_consumed(); + tracer.exit_child_span_with_error(error.into(), gas_consumed); + }); + + (false, Err(error.into())) + }, + }; + + if success { + self.transient_storage.commit_transaction(); + } else { + self.transient_storage.rollback_transaction(); + } + + output.map(|output| { + self.top_frame_mut().last_frame_output = output; + }) + } } impl<'a, T, E> Ext for Stack<'a, T, E> @@ -1411,9 +1487,11 @@ where *self.last_frame_output_mut() = Default::default(); let try_call = || { + // Enable read-only access if requested; cannot disable it if already set. + let is_read_only = read_only || self.is_read_only(); + if is_precompile(dest_addr) { - log::debug!(target: crate::LOG_TARGET, "Unsupported precompile address {dest_addr:?}"); - return Err(Error::::UnsupportedPrecompileAddress.into()); + return self.run_precompile(*dest_addr, false, is_read_only, value, &input_data); } let dest = T::AddressMapper::to_account_id(dest_addr); @@ -1434,9 +1512,6 @@ where _ => None, }); - // Enable read-only access if requested; cannot disable it if already set. - let is_read_only = read_only || self.is_read_only(); - if let Some(executable) = self.push_frame( FrameArgs::Call { dest: dest.clone(), cached_info, delegated_call: None }, value, @@ -1494,6 +1569,10 @@ where address: H160, input_data: Vec, ) -> Result<(), ExecError> { + if is_precompile(&address) { + return self.run_precompile(address, true, false, 0u32.into(), &input_data); + } + // We reset the return data now, so it is cleared out even if no new frame was executed. // This is for example the case for unknown code hashes or creating the frame fails. *self.last_frame_output_mut() = Default::default(); diff --git a/substrate/frame/revive/src/exec/tests.rs b/substrate/frame/revive/src/exec/tests.rs index 760447b0e9cb7..2511715654c17 100644 --- a/substrate/frame/revive/src/exec/tests.rs +++ b/substrate/frame/revive/src/exec/tests.rs @@ -180,8 +180,8 @@ impl Executable for MockExecutable { &self.code_hash } - fn code_deposit(&self) -> BalanceOf { - self.code_info.deposit() + fn code_info(&self) -> &CodeInfo { + &self.code_info } } diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index a184a2b8dbed6..62633a8f30b80 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -26,8 +26,8 @@ mod benchmarking; mod exec; mod gas; mod limits; -mod precompiles; mod primitives; +mod pure_precompiles; mod storage; mod transient_storage; mod wasm; diff --git a/substrate/frame/revive/src/precompiles.rs b/substrate/frame/revive/src/pure_precompiles.rs similarity index 67% rename from substrate/frame/revive/src/precompiles.rs rename to substrate/frame/revive/src/pure_precompiles.rs index ef8ff4223157f..8882b7dc44064 100644 --- a/substrate/frame/revive/src/precompiles.rs +++ b/substrate/frame/revive/src/pure_precompiles.rs @@ -14,18 +14,23 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -mod ecrecover; -use crate::{ - exec::{ExecResult, Ext}, - Config, Error, H160, -}; +use crate::{exec::ExecResult, Config, Error, GasMeter, H160}; + +mod ecrecover; pub use ecrecover::*; +/// Determine if the given address is a precompile. +/// For now, we consider that all addresses between 0x1 and 0xff are reserved for precompiles. +pub fn is_precompile(address: &H160) -> bool { + let bytes = address.as_bytes(); + bytes.starts_with(&[0u8; 19]) && bytes[19] != 0 +} + /// The `Precompile` trait defines the functionality for executing a precompiled contract. pub trait Precompile { /// Executes the precompile with the provided input data. - fn execute>(ext: &mut E, input: &[u8]) -> ExecResult; + fn execute(gas_meter: &mut GasMeter, input: &[u8]) -> ExecResult; } pub struct Precompiles { @@ -33,9 +38,9 @@ pub struct Precompiles { } impl Precompiles { - pub fn execute>(addr: H160, ext: &mut E, input: &[u8]) -> ExecResult { + pub fn execute(addr: H160, gas_meter: &mut GasMeter, input: &[u8]) -> ExecResult { if addr == ECRECOVER { - ECRecover::execute(ext, input) + ECRecover::execute(gas_meter, input) } else { Err(Error::::UnsupportedPrecompileAddress.into()) } diff --git a/substrate/frame/revive/src/precompiles/ecrecover.rs b/substrate/frame/revive/src/pure_precompiles/ecrecover.rs similarity index 90% rename from substrate/frame/revive/src/precompiles/ecrecover.rs rename to substrate/frame/revive/src/pure_precompiles/ecrecover.rs index 21d9ef00a7044..8fde0fb40d2f7 100644 --- a/substrate/frame/revive/src/precompiles/ecrecover.rs +++ b/substrate/frame/revive/src/pure_precompiles/ecrecover.rs @@ -15,10 +15,7 @@ // See the License for the specific language governing permissions and // limitations under the License. use super::Precompile; -use crate::{ - exec::{ExecResult, Ext}, - Config, ExecReturnValue, RuntimeCosts, -}; +use crate::{exec::ExecResult, Config, ExecReturnValue, GasMeter, RuntimeCosts}; use hex_literal::hex; use pallet_revive_uapi::ReturnFlags; use sp_core::H160; @@ -28,8 +25,8 @@ pub const ECRECOVER: H160 = H160(hex!("0000000000000000000000000000000000000001" pub struct ECRecover; impl Precompile for ECRecover { - fn execute>(ext: &mut E, i: &[u8]) -> ExecResult { - ext.gas_meter_mut().charge(RuntimeCosts::EcdsaRecovery)?; + fn execute(gas_meter: &mut GasMeter, i: &[u8]) -> ExecResult { + gas_meter.charge(RuntimeCosts::EcdsaRecovery)?; let mut input = [0u8; 128]; let len = i.len().min(128); diff --git a/substrate/frame/revive/src/wasm/mod.rs b/substrate/frame/revive/src/wasm/mod.rs index 4320f1837c00f..512b8574eb151 100644 --- a/substrate/frame/revive/src/wasm/mod.rs +++ b/substrate/frame/revive/src/wasm/mod.rs @@ -387,7 +387,7 @@ where &self.code_hash } - fn code_deposit(&self) -> BalanceOf { - self.code_info.deposit + fn code_info(&self) -> &CodeInfo { + &self.code_info } } From 055c96b5b4161807154f3a7a03a3b0cae164ff66 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Sun, 23 Feb 2025 23:53:13 +0100 Subject: [PATCH 19/26] rm dp from hex_literal --- substrate/frame/revive/Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index 09b8c4db5c870..a10f8935fb60d 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -62,7 +62,6 @@ xcm-builder = { workspace = true } [dev-dependencies] array-bytes = { workspace = true, default-features = true } assert_matches = { workspace = true } -hex-literal = { workspace = true } pretty_assertions = { workspace = true } secp256k1 = { workspace = true, features = ["recovery"] } serde_json = { workspace = true } From b520a6cf5a73bcbd99d88870ba766cdd5f2b2b9f Mon Sep 17 00:00:00 2001 From: pgherveou Date: Mon, 24 Feb 2025 00:01:23 +0100 Subject: [PATCH 20/26] fix bench tests --- substrate/frame/revive/src/benchmarking/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/benchmarking/mod.rs b/substrate/frame/revive/src/benchmarking/mod.rs index bf54371cd2253..074b8607128d4 100644 --- a/substrate/frame/revive/src/benchmarking/mod.rs +++ b/substrate/frame/revive/src/benchmarking/mod.rs @@ -26,7 +26,7 @@ use crate::{ evm::runtime::GAS_PRICE, exec::{Ext, Key, MomentOf}, limits, - precompiles::Precompile, + pure_precompiles::Precompile, storage::WriteOutcome, ConversionPrecision, Pallet as Contracts, *, }; @@ -1957,7 +1957,7 @@ mod benchmarks { #[block] { - result = precompiles::ECRecover::execute(&mut ext, &input); + result = pure_precompiles::ECRecover::execute(ext.gas_meter_mut(), &input); } assert_eq!(result.unwrap().data, expected); From a7fa9f6e3105dc777df509dc9ddd95ce185df512 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Mon, 24 Feb 2025 00:17:01 +0100 Subject: [PATCH 21/26] update test --- substrate/frame/revive/src/tests.rs | 35 +++++++++++++++++++---------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index 9f1bca2cb3ad8..a20b6d0c63056 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -27,7 +27,7 @@ use crate::{ }, evm::{runtime::GAS_PRICE, CallTrace, CallTracer, CallType, GenericTransaction}, exec::Key, - limits, + limits, pure_precompiles, storage::DeletionQueueManager, test_utils::*, tests::test_utils::{get_contract, get_contract_checked}, @@ -4590,14 +4590,8 @@ fn unknown_precompiles_revert() { #[test] fn ecrecover_precompile_works() { use hex_literal::hex; - let (code, _code_hash) = compile_module("call_and_return").unwrap(); - ExtBuilder::default().build().execute_with(|| { - let _ = ::Currency::set_balance(&ALICE, 100_000_000_000); - let Contract { addr, .. } = - builder::bare_instantiate(Code::Upload(code)).value(1000).build_and_unwrap_contract(); - - let cases = vec![ + let cases = vec![ ( hex!("18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549"), hex!("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b").to_vec(), @@ -4608,12 +4602,29 @@ fn ecrecover_precompile_works() { ), ]; - for (input, output) in cases { + for (input, output) in cases { + let (code, _code_hash) = compile_module("call_and_return").unwrap(); + ExtBuilder::default().build().execute_with(|| { + let _ = ::Currency::set_balance(&ALICE, 100_000_000_000); + let Contract { addr, .. } = builder::bare_instantiate(Code::Upload(code)) + .value(1000) + .build_and_unwrap_contract(); + let result = builder::bare_call(addr) - .data((H160::from_low_u64_be(0x1), 100u64, input).encode()) + .data((pure_precompiles::ECRECOVER, 100u64, input).encode()) .build_and_unwrap_result(); + + test_utils::get_balance(&::AddressMapper::to_account_id( + &pure_precompiles::ECRECOVER, + )); + assert_eq!( + test_utils::get_balance(&::AddressMapper::to_account_id( + &pure_precompiles::ECRECOVER + )), + 101u64 + ); assert_eq!(result.data, output); assert_eq!(result.flags, ReturnFlags::empty()); - } - }); + }); + } } From 94bc896d09b8e1fdb1cb1d4834716926293ab6d9 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Mon, 24 Feb 2025 00:21:52 +0100 Subject: [PATCH 22/26] update --- prdoc/pr_7652.prdoc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/prdoc/pr_7652.prdoc b/prdoc/pr_7652.prdoc index e2f820a08d6e3..b56b4bb8fcc89 100644 --- a/prdoc/pr_7652.prdoc +++ b/prdoc/pr_7652.prdoc @@ -3,11 +3,6 @@ doc: - audience: Runtime Dev description: |- Add ECrecover 0x1 precompile and remove the unstable equivalent host function. - - To encompass the change: - - the frame `contract_info` is now an Option and only set when executing a contract. - - the executable created with a frame is now wrapped into an enum `PrecompileOrExecutable` - - a precompile module list all the registered precompiles (just 1 for now) and execute the one for the given address & input. crates: - name: asset-hub-westend-runtime bump: minor From 13f620e2ef7d68a2589dfd80071d8e6f95c13c44 Mon Sep 17 00:00:00 2001 From: PG Herveou Date: Mon, 24 Feb 2025 17:26:39 +0100 Subject: [PATCH 23/26] Update substrate/frame/revive/src/exec.rs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alexander Theißen --- substrate/frame/revive/src/exec.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 93a8a73198aca..39c07777e80a5 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1570,7 +1570,7 @@ where input_data: Vec, ) -> Result<(), ExecError> { if is_precompile(&address) { - return self.run_precompile(address, true, false, 0u32.into(), &input_data); + return self.run_precompile(address, true, self.is_read_only(), 0u32.into(), &input_data); } // We reset the return data now, so it is cleared out even if no new frame was executed. From d5db37daae790268062f866f08beacc1ab781cc3 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Mon, 24 Feb 2025 17:28:21 +0100 Subject: [PATCH 24/26] No need foe transcoent storage transaction --- substrate/frame/revive/src/exec.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 39c07777e80a5..25f67f4bc4d3f 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1394,7 +1394,6 @@ where ); }); - self.transient_storage.start_transaction(); let mut do_transaction = || -> ExecResult { if !is_delegate { Self::transfer_from_origin( @@ -1445,12 +1444,6 @@ where }, }; - if success { - self.transient_storage.commit_transaction(); - } else { - self.transient_storage.rollback_transaction(); - } - output.map(|output| { self.top_frame_mut().last_frame_output = output; }) From a6f6469f37256d0463681ffba96893dd17a8821f Mon Sep 17 00:00:00 2001 From: pgherveou Date: Mon, 24 Feb 2025 17:56:45 +0100 Subject: [PATCH 25/26] lint --- substrate/frame/revive/src/exec.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 25f67f4bc4d3f..2fe5e7cb19bcb 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1416,14 +1416,13 @@ where with_transaction(|| -> TransactionOutcome> { let output = do_transaction(); match &output { - Ok(result) if !result.did_revert() => - TransactionOutcome::Commit(Ok((true, output))), - _ => TransactionOutcome::Rollback(Ok((false, output))), + Ok(result) if !result.did_revert() => TransactionOutcome::Commit(Ok(output)), + _ => TransactionOutcome::Rollback(Ok(output)), } }); - let (success, output) = match transaction_outcome { - Ok((success, output)) => { + let output = match transaction_outcome { + Ok(output) => { if_tracing(|tracer| { let gas_consumed = top_frame!(self).nested_gas.gas_consumed(); match &output { @@ -1432,7 +1431,7 @@ where } }); - (success, output) + output }, Err(error) => { if_tracing(|tracer| { @@ -1440,7 +1439,7 @@ where tracer.exit_child_span_with_error(error.into(), gas_consumed); }); - (false, Err(error.into())) + Err(error.into()) }, }; @@ -1563,7 +1562,13 @@ where input_data: Vec, ) -> Result<(), ExecError> { if is_precompile(&address) { - return self.run_precompile(address, true, self.is_read_only(), 0u32.into(), &input_data); + return self.run_precompile( + address, + true, + self.is_read_only(), + 0u32.into(), + &input_data, + ); } // We reset the return data now, so it is cleared out even if no new frame was executed. From 54f6105f35f2a646b5c89ad06af3808a16c3cc40 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Mon, 24 Feb 2025 18:19:02 +0100 Subject: [PATCH 26/26] no call charge for precompiles --- substrate/frame/revive/src/wasm/runtime.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/wasm/runtime.rs b/substrate/frame/revive/src/wasm/runtime.rs index a8b897a7efc63..6b4fab0f1358f 100644 --- a/substrate/frame/revive/src/wasm/runtime.rs +++ b/substrate/frame/revive/src/wasm/runtime.rs @@ -1012,9 +1012,12 @@ impl<'a, E: Ext, M: ?Sized + Memory> Runtime<'a, E, M> { output_ptr: u32, output_len_ptr: u32, ) -> Result { - self.charge_gas(call_type.cost())?; - let callee = memory.read_h160(callee_ptr)?; + + if !crate::pure_precompiles::is_precompile(&callee) { + self.charge_gas(call_type.cost())?; + } + let deposit_limit = memory.read_u256(deposit_ptr)?; let input_data = if flags.contains(CallFlags::CLONE_INPUT) {