From ebfd1eecf23425a7ca3a971f92dbcd7acc9bd562 Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Tue, 29 Oct 2024 18:30:41 -0600 Subject: [PATCH] attempt to unify errors for original errors and non errors in the handler --- canister_templates/stable.wasm | Bin 3407915 -> 3407924 bytes src/lib/experimental/error.ts | 13 +++++++------ src/lib/stable/canister_methods/heartbeat.ts | 4 ++-- src/lib/stable/canister_methods/init.ts | 4 ++-- .../canister_methods/inspect_message.ts | 4 ++-- .../stable/canister_methods/post_upgrade.ts | 4 ++-- .../stable/canister_methods/pre_upgrade.ts | 4 ++-- src/lib/stable/canister_methods/query.ts | 4 ++-- src/lib/stable/canister_methods/update.ts | 4 ++-- src/lib/stable/error.ts | 11 +++++++++++ .../cross_canister_calls/test/tests.ts | 2 +- .../primitive_types/test/tests.ts | 2 +- 12 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 src/lib/stable/error.ts diff --git a/canister_templates/stable.wasm b/canister_templates/stable.wasm index 8ef5e1cc6515bc2be3eacd0a07df7211e44d9e17..5a88b77a8ed4465b6a833697f3679ac963677aaf 100644 GIT binary patch delta 82216 zcmdRX34Be*`*-G?yXJ1^u3049B$ilW-}hrzTP#JZwREG}DymwgO%TKqLLw6cLF_>^ z7`xb)20;)@2}13H*p>I0Gw0si1iyd(zqarDc|Sff=ljh1%=*kT&&*vJnT6KD|FqX( z+_YQisPbVyE^1a>R_of_?A>viHVx3)xE5{7p&M~ux7meeq*rPC9_o5|>j^I*Hc)>C z>6~V#O2m7zy@VNo`W%LZwI%eY>8ChhU$&R%CH&^=uRkRba;8g!gFrY51dY>Cn-d^l zTzckvIs|#;v@46wr@wCZh=G#YAg3mj%Ru7!^ni{lc__hw&X*PFNczg|qAz-!erM1E z9$ikKHgpn?*2nn|Ux{YmezSDe^fSXh)SxGEH6ym6C+QC&x+9d3-gfjANFgq4+=swV z^tkG1W89W;$?*Nr`10^Qe*8@M4wwMn>8&R0;mfXAlI`V0;xcfA-%$|Ki7O6ddj&bU zrd(5}w-_l5F?flKC$HhqlDH=^gVCSq1E#Lhpd0B9yoTnxFR_~y?Tjmt z`V8$%x39XxqXX&u+R+^PHGN$ALM2L$3*FQ^;??UDUgEvEP(jOm#r>lp&;5a3I`O)j ze8opRa35-3BG1?g0j1E>D~dDr%Vej@sS4%1L^QBA=cTvm#7R3`!7h8oeoLZOn%Uk| zSMbv>y~J1PzME$vvjQ7mS9_gxBv)};5^y;^4$bil*z6rG9lJYkfS8K337-uHz5PQAeZYAZi*b|shc1dBzlS~ z8<~*kCdg5ixe2bay9si>2Z|GNT!aW0zt>$9(Nz#PK~5w(##Iox@QH4Mt02V*8{Gs~ zLEHp64NH!jA}4a4l!`%HdH!k4aa=7Il_W1?5mKU9{AwnujS@+%1hl$EMCO?+T7L!L zux5)oD-lw`VT7%Wkmn}2q7)}Yohue4-c69Bq__#|;0v-nAK|9R+1z#$W5?vE>pQ8Qih&_7OwD*E>l z{|jkH{9oepT}6rbf6M;ni2pmy{4VyRBL1JY{^slmdHwu%d-*%rp9%HPmhyjmWW762 z&nzRD`0$UgzbZ^z?h;LeN2OtvzO~%dy{?9dkva0@GW{pc9)W%d@e-3cGCPbKP4wD_#xqb+3CP6j1UR>z9Ev|C!9M6gO zZ@Om1n{N8ahe({3gHvjAjdd9tPk9Xt^YRMj2jZYCMNJY^hbyN&#cq(d8SxF(`7nWEYLZ;Sb^@cZ0sMLqW@rV}|)D3`@8ZPuAXAg4F)!hH))dKd0T za4L1>7IG7J;jFG)8I*w^cjZc>6kMVkpq*Ik#`Q%v@xpFgIkXEO>c-VanMC5c5GUy$U)__CDpxB6ObIe#Y53bPRJZxgXFUnoCD!hgC{)#S~my~K(TIF=tMW>Rn-{s=pLVLDEol;b7tqbX6(0*bOp{rY?-#7)^mCO6=d z)hLZrYR=m5Uky%vJN{E}y0wR3dvHp7zIpjQ87I7geDsJ`SxLGBZV6jp6cixt zb$N*U;7i`$7qybNK4G7QI6t$;rt2T zX|RrnuUEj%yOii05^OCYo}h#B3R&Bk@9WJ?+D@z=@eTxuRrr{1#8bkTefcj!{bIKs z^AZEa#BImCgya5nqbL)|^=KZtO%8cAi66y9xX5pWa})BnLrQg=3Ng!Tptx)YfT#>e zRI14TId;w#h)_<9gxrgkgQc(YESX{|pQ-u}CBG5Rk201^ehwRgy}>l1`|B+ja*O%ur4hj&9^@BrG5g4$2j$M2p2^1{bQQNg z!Z+rkkB|vR_}v=l)wum>Xx0~`We#nF`{biDd@6LI(Zu^4AD~31aJgJQg!caSx%@hW zb`f-$PYpmT@#l+?*#T8 z+XzAz)Pd0D8v`|&QFqbr#q>K7r7}`M6Ce@x9n%!Pcd+lWB7E;>-#bLb09f!tn<-Wx z?)Edhv!0?JHndQ5Lube*Efl}-B`-dPp{Nq(Yl1kj;2C@)m}4GEAHqq5r?*wq!L`~b zg3v|Mqm3dICORD1R?!aK#+hvuzFgu9mS(B<6ko!qmuh79dy0Mm3tq6aLOD$^=j5C) zf9XYT*g)Z1aUpKnPEnS7EET5=iD{?Ug`l>>J17iDct*1h6{8`#v=hfWJ1WZJxQ>d^ zhC{TdYPqO5sFT7UJ;JDqq8*;lNpTY$BSXU#4Qanv(^=6>keNYZEE*^b6dw@?d8C&0 z`e>M4D#B!2cc2(Q2EM0^#g`{2T3fQRPJ21kqJE$-P9LmoHj$z1UH@x({ubdGGMZzl9G!$PZDAkwGniK!_yU)p#9d&P{jDj zsa&7nN<}6-CGW>6zCb7kZ;e+>M!BTTOhp~U&7FWpCn$!aZ2UAqQ4u{QrLm%s61SeI zu;O7!3IcOirMZeYv=wK}RYbqZRMJ?|Yn~#roi%YZjQ5I8UOa#XiZ7=Cm_q8`go=KP zPa^*Cmf|az@^`#agpr506dF|J&G^w%U9(N(Yfxv@fwb2_+8Zf|#})1<`ayftyzeU7Anwu>+~>KX5{bO07|Ej~-21uWBhvGs!k2f5ckk; z1Z%-wGXAmR^xF!09S?r0*!~s{o?`KtqE_ksQILd6n5PL+iWex)$Z3Rsnt|fANfZgg z#EW?LGsSL{M4%MIdB=X5X%H;{=TQKB^G`)Kx=x@zO7g5;L|lqf-uHV8>yc8m;A(9Z z<*aYKwQm4a(t^T*aj94-lJ_FQnBw-lFV`VE=H@csq@cPy{`(G?hS*5W(ml|$sPcw7Z#2bU+LbPDMED=O0<+K-i#Ux5#x zazq!VRQQ#-L1p{+`B0~0&ElpfF2OnSpo=^O$fRZ~<@-}WBAawvS)Q&2>yIm=IW!M9 zJ_%JEk3Tu79Dpv7-%cw3P@u;o{j73`5-r1Ja-po#NnEb-DnhIAh|9{0+~lYD!z;=i z=n3}EQ+9*-`P)2YC@R2-dCG>+I4AR;q$-b)G&Y=e+?z(bMFc*7*e4tYW zaDMksobn1%b4__r+)K)PhsX~L_7(H-RDs;(%NtOgp)mgGX9YBL}HMxt*J5RBh_ zP7pT~qD?px0v~S#QHYh8Pf{|z9;9jnJFBw6DjsRwA#wE()hJdab)hygOS@{L>RXDB zdzDtzch%p<(kko!97C$Qu4PnB!l0kVby1Cl*~6!+sv;Mkid%G5{SI|;theerJhPi> zFnkMrp=AO-P`!_TeqXf?*3s(SRdf`+_n|5rpX{!x%%TVLBE;8yq$-EQd#Luf5*hq~ zN{y%WR1Ne<=?r>^AAbN9EG04u;_v@ZHI>Ckr=@^YCbIBJxZ1}M@Nq&vl^vJ*P*s7& z>45`!tIE7JVl#Z8kE%6`eGk3d&`-4+abr{Q-cMAQU|E&s6;pH#HSk z{z5g)p1Tq{3KbM##mIp*`L$6e=HlaDsG=dmUj0?2!HMjzYR()xKGR=S2~txHP;F=i zGupNlstKTwAuU&{BH;iA@4KvO&BblUrYovYfOW5^-UnwYINY-Bxbq*XM)=}wl@?db zQ}yNIGjL3vsvDOkxs7qqRaHlH01v*ZdJkrhEmu|LQ69c}6_R*~8(f1V;&i!v9ds@E~ch{yN0mL+QQn^y{iR%(FaxKAea+o-B5j1 zByQ!K5M~Nqa9h~VB0MSk>U|z)-6|vF0k|$#*DZPS>#Z{$IxJ} zZ>!3JHaKKe2Ra*rz(qc@2gDs*L%>YspRNA)lfuZH@~lHMBOp>RlOr(cbxXB z%{6p#%@lRG7EU#sozmGzm=zMl>oq!Y<9d09f+aYgerIlQ?fw1f^m!-kX-Q}EdWRa;1}^dsnY1?1aDD!=+4uFrzS3BhazoBQ&7RUt|r ztPv^EsTL;sI_dfynRCiZ^c6PofFO&|@;uPa0Zk{vxN23kt^K77)Jsaxm*pk-#sL{h1p9g@LX=*ln5NLvBg`IG7{tQt z!Le1|FSx=f zS-1$g`dWF#~^9UG48U zvi*%#Qj16Moa*Z8ureH}u3o^!E+Io|sCOaX{L7FG=Wdz|*n(UEiV?qhEtJ87YpFN1 z$hZmwl@vs(erJ%HwyhYc6w|N0k&{LuLQ&=ZkbJF3a?`Q1j=DS-c^$W_qxK6}Ky?&F zI+RFBQuLX~9860v9oMLN(nze21&JRYtFN}1 z_CA0DXc)6fuluV@^B_4*AE@q$P&T>wmD&b- zhKn1%QGcR@x%$(g>RL#beO6v}#XWe@cj|KB@!NN5Z*N$>PyMW(0KK>OFKQ|T;a?zl z20r|Yx~A1FQs!`Onetd&vyFsCs0UTlJe?-(iId5^6>3m&rjash)W3nUklZKg_YiuH z8*Wl>Lz(#bCiPsZmzlL$y_>qdx2QiaHFtuv=UH1)Z=$SwIe8)8Peg4b)n)Vqe0hty zBD#Z(Th%quS=@Z9I*vxo*{Y5KndXaa>N;pHp0`b1AKk)dwy8UC{PfbJTgr1$Ae#}zh?oRXe&{_ zRDYmo;%*&xSdjXe2JkOP$7$>5YgQp>{tleRC5;c{Qj>8-|Ztx8|jqfl#8f zYT|q#K!;J9p+L(Rr5QoSRn$zR0RZ^p-=j3^$%PskOevs0@+DInXwqHr@wdY?EAUs{ zG@+zn3r(ym42CcRNQd^Cc0~db2v|!E654`Zg}KFiR6Mt9pK0QYru5?L!juSP`McU( zWCEq+G;(PPl(vF~^`sGGbd099+>^TCs_Qi)$+(%CBzMZr7)?JiXD)={mpwj>bJuBx zl2(f~e?SxhJ#mdIDuJkw!%I?Qo8~N4&J8)B3E{+CQe%gvYa!0ZsTrCPv}6XCul2!W7X{ek8p%)pk1nnfI% zjW;~fOoHNwk2U86kiP@f+V{DMTgfoBb`wGuaAmEwv~JN2I7raYgM=OUW39G=;|y4= z2}>RRPQIl<3yMgnEpgIzJXfo&i|*o6TJ2s({J7Iz18Z?!PP8i6_m^hQXb=Kp$C0(( z+WQFdTcp=MSClvnCl53oI6D%zuXgdXwWK)tG2Up_PV;wV#12FhVq|0_U8cOm3%H-f zRWig%7HiRVgxoJ$vZ{Xp&R&yO*;st*0q;P*vU6` ztw9GTVI!Sde|5#QlQ2u1^Mn1JR@8}wNb@El8RfK>mD((bA=VP3Pmz^j+97e_L+V!3uH%gds9lWIaI<{G=lFR|ZEN(3G^?eps)P3XuBrAUZ0p*J z+D4$FnILMD!3k}qos3qKb_Zt+Cd&1;dZ06PBP+st*Izm*HKZna7s_@`0fu2KzSM}<~@;Z ztEfakmqRBKpFRdJrLfkhFA3^9ApGej1WJ;F9BvH6W#Ix@xCu{i zO(@}+K!OKZ%4iNg`hnI_KiN(9XYm)i34WgOS9p-6_-jC!0P)wk>Ao!fCO5&yGyZlD zvJ`(e{`Ny{bHjlr;k7wENK0O!UcccTA8Mx?j(U)eqKpv%s`RiYa&oTulQ?84D~y;wDH^lB+vpxDzz7aEIIkqi1^A9%L!w3vNOigJ;0& zZn}Xb_`prjdxm@IL6#C6{|uk&t!?&Z`}~L(_JN8o+DHfbyseSqP|@}wzxUH#xBYJh zAA!Nw#bewN7q^S`Zj=@tzCXui&t?>P2l5f=$KYTx~zz zbk=Q|J$)J{9>FIc=u9*Ewz%0Z|LUwZ$nYATP-LZeDVL>AI@X(%G)>Nj8j=>=O=ZN1J4wei-g{c2S;YFtdl<+AB>J)UQYwm7edgWH zXGfvkic$xc5E`{MAaQg)p7G2(6fGoMo_QzHp40QCcYDrbl)ptnaLW>sA36HU` z%M0>$1ZN^$DRPF_Z79l0Qn5vrtW@bHh3J!`kAs#n6~QJwmWUN}ZNSI?PpYU(2f?m! zC0zwMzx)#F<}J=Sq}$kRw%f6H%3Qn?Q0s zO9de$ZVeJQMuFu!g`ja_Ld~*3#6^gTAWn=H`Qbp?5)HO#D zQ@{(frzen3oX$Rv!zTxkW-@pTAZDLg@TmfyISd{J$OBx!;1Pf+?DMc3a2bP8f8uKP z`J3$XD}#q30Mj%!GJFsq&3g-j2LO5l+{WO3*>^vK`v5Az_aK9N0n((7Ft|tdJ;vZ} zfYkWl6ob0}QdS}^FuW6R9{bFIPc?X5XK)8Vn#(-~w*#cP6fn3=_I<+ORypoV2DbpD znT}m2Rq|#TPG)cuz=$~Zy%D}?E|@_g!z2bb09?R6*TW|*_+kdv0i=ap$zZzd`zwRL z0;H*KWNpKw6H+3@(%5i*?5%Xy;oB*bBTtIj&zK$BbMrRoP;Iv~l7J(n>hT;4FYTfO!li0;Hw8#~=nsGkL*a0zmJe2!J#afl?)Am8Iyet z)``EeuWuPI8yFhI&{l@NVVvz^=xgS;pP{cD4p@=WpfI7|K09LD)80xPR z4N%_u41K};UNQ8!PV@o4shcETKGTWRre!fhpRx=$GV}?nyB!SmV;%Q5hWbKF9cG_> zbmB4g)thyqlMH>V6A>hRfuWBWXBQdjr4z5RuMb(4HyHYWh015BC-ZyEP!G9VF%;3A z1s$_l;^Teh8O=~PofyNuy0TEy8S26iW~ehma~TR}^|^?lPRwr=Lmk-!kj_vCdHio- zusy4$y$rQuUF8@<@99K4)WHpg+OkAnG1P{ks4Wr$tr-K87;44PG=^HTkns$)kWhp; zo5AL+l9Cx}#)2+oNMsGNilL@3Z?dl@I&m}mY7Dv|_SJ~-xQn5NY@{4wr~&Iw=NPI_ z^ML+;oxyr+?!3!TT^8{fLvX9>Fuz$0m1l)nz)&bF zOhhV!<(TINhRQMycQRCljo3pBm1gKLLm{l$vKR_x=rlt?te_Vdax!$2p;C;&#}N#c z)QKkOU{Tv8E&_F;15g}80jw~~87jfL)UOQrvkVDCek|U0hJ0D4&1T4l)$a|496Hek zIXvFZ)?YiDJ|^vuvbV8h<}w5qcie$2*w(p=V`##XNPaE+%J4h4E(9Hk%kfet!GHhQrXQAXiMqZpT&?; zCt3iVXGozF{Q%tsR1QQQo_S8#DP_p9L}xJs>l%%?l)yf(x94W&EgC}iW=8TO3C(p& z6yAlK8644FUkdkbrBjiw+UO=0-OI!l-^&Q?bP1KfOl|28x~eFN9>>dn z&{gJ_O*~G{{-E2Y!Chi>7bDhB1SP(P+BJIVp+|1>fY2rPQmAIW&?hrJAau$T9)Y1( zo}*C90zhB)1s1}|t}iC5lb$O=XG4W_DL_z0i|)gCsjlBuh3 z1_e)W7k`gbnxnIF=q718SC@i> zMH{-+_VR)b45y=BRlJsxf_b`2JZQR3E!2$!^QbP1bivdDZulZyr4q5LL1Cs54j8~F z4XjMylqr!?)WThJ+=4T9d>jIU^6Akc807O;U?3N%aU9jpP7O-TO%EBf0>M&(q8MItT2}{7&F-AhRUwWXogM`}{!LO}eiMYmxtZ|EQ)7RH_(UQ@ zk9>*`pVhsG8~?8J$4k%XTC&&~&LuRkbThym*o)d{37`v|qZFSKh^FFP$q$0$lW7d; z+JifWD|rIR>#1t8-348BhnzPjmL4d|#T)D@$L|+(m`lvW!!PREmP+&}@ErP0yKV%G zBVi*FlQQvzi@JSWbS7SstK043de$W!ye*N2=UvuO%iiqEx@vIN@9gX6hf7`2`4k!j zz-0y5vKK5%+mP5Ry2fhIKpnlQOEP56=|S(S@o){xYY+bMmhKlgBYtvAr!HxJ;~oxP zz$xD&A9(B6Xu(QDYtxT_E;H7qj|4|y*N32)IMl9hf?nVOcKrZA$L#ttD2_a_>+4W$ zUlkv{iHDd?{PitBkr(B!pU-(eUjp|`t9f|^>2N21eNCW$5~v@JTs9L`O6fnR$JKCb z?N8Q})#t*IAsxfMWLb6ncSyK;KpL-VdA!~r6>I8Gal+GG-Rb~aU{C?WIMnMkG1t+L zLBey-&|zM$@S?i1DGTAZLO~YmoH*l>v=VLM&di_ z^U6a5RU4sq{I^ai*R9-vK`Ol$h&07U5&mL?z6~V4W`uqLm`rs3NneVZUk~|NAN0R+ z`uw8z@wl-0#|tE0!{dI@|Mb5ew#DWF(l|nIGU(%TvRum4DDuG+eV{@nMN%DU6dn_+ zZ(5XcBvzjX76|Fn^>9fi73a^;hl53d7^jZ|=VTmog=M&HyyR?SPPLg5TFe~31PR3? z=m$f{R|)#Bz!`}3-++^YCBOEGl9R!lnzJOdY?giqTrcvUtq-HujM~i6f6Bw?PMxPu z2b=*1yG)&xa>kbn5y8u3-xX*D24bGx)mFLWa&bEC%xgox*qU`4KV6e zp35No8hv{ND@%Bq-eHc~3fk#;@LmlJe^`Oyx8fht^v}4&^Y<(GId~__gx-hCrzK|cltGY`{O<0JIKeD!WfgD z`iYv2#22`+*|4MRBboqG^y2i(zpI^b{WqGnC<`&Bgg)hSJ~?M`gqJ z$aHgkHk2|Pj=&PZ9OWsVUB%E^^Ykp(2CBqdyr7Dq1Xffv_{-s%y26pLs)lsl^jM1R zl&M$oy&8rt7D{v~O4R16y6IhO8U~e~1`itnMHnc|H~NDN5YY-&N0n1SD~V+frMp_w z&@{7c(X#QH>3wHGu_NT$T_Dxbs;Ik>J*b!!_YOD{_CN!Ow17 zf-{}V4p~*f33kVnl;E<(;24G;`XQ`nd7Y~PE`2oK8>{3H-PhiHME;B@X zQUq*YZs<{zlHf^clWGu%&kBPbAjQ@o1+#DG=>zD9!p*!ytFOMym|HJb?l4 zSY;>^mbw=>pqEmb3>5R|cg8-b6n5SB4KHk7ZKxaZzl!o7QgeHO5iGkZ@|RNn;4c)^ zo%CNy(Ul+xT4Oi{N0XA(3bf z#t&&HE@3l%u7I_9w6F0h7axNM_!--Ci7{k@pK%+4m2X%HH_8wgqX&75IdHiH%uhg$=0sn*dDw+VJB?#NNPQ7x493q(8ymvp z`e~4{YQ^aLJ*a%n!*HV_OXU3?be-o#jRc?O%MiTs@%A8yC#BIFqJJ1{Yy?hXu<>gk zDnpF@0QC)f0C`*h*ieks{rHw6Fz}X#*grbI>zPNv{*2ZwF~#{xNjY!A8Aq7XjL{k;XaAJWDuuS(9QaOOV=_E8F}0tuZrNICQ)H_##VTquwlvuE z6*R;;N(GbT;Z756m-TLFgx#YEbvwcMYuPuVDvCx`NKx^LXd^BRtCh2Pd)U~C#_q=B zZo9NK)xnIQV4`s+RQ85R#?oA2alPeqyuSj=vBKhd4+L0PT!mCzVu~@IHi0elA4$eA zc-G54*H{C@x3+VQ6*+LfpKrXz@i|kDVRH?Q0}oqh?2pcn^9zmbke_^&l@lXjIgzfb zCXbPf4XIGvmBghOMIYS^u-0Qs<7RSki!rGjm-!T%{Q|8Za~szxOzHceRix!^%QjA2 zMZ&KeudDTG`%ZcdtOC6liNE3&`NrDlS3EM`=pW$r;6%7|8X5W0YskOFlv~M_$1eQ8heRYSlDyselgfSES)% z<8Tc+Nzz{#hbxQB5l6b2E1{XBpThJFqN`Ds(lk?mepT%!tDTH=n8whP`d7XtjZk9Q zL+Goqfv`o?>bX0xfv56X9$po03IfCOqv57TXfrl+HkATX^svsR z>fDswxL;>eV8wCNHbgC~DFK$0AS%#T7*>J!0DD!5B%&atOn!owcQ&;GtIGV&CV$&b zYIbfe5^oPK*~L^FWYPD#n7%-d@zyRT*i~WF)$~b`rW(}MREM9Ll#MTTEEPcZbTyUa zB^ch_Y*#6z8GSg zGeyBm2Xx~ZjGrDd(JPI@px~0&(ASUJrGo%k3V-yQNhma=%?C#1J?N-Wrf8^q<A0he2l2-Z3Qv8Ib$>`we= ztm$XSY2R7)g=D~^lF&F+2MSl<6%W+bpcZ$y?U7Q?!WH&SxW)|A zXWXRec-9Ql{HDcyUE=0nrQ;vtK*-L2RGPXK;!Rb+CB5QJVDhwr3{5ck z!y}y}W|pZN)Hc36$Mk2z@zg?Ani6tC#Ov=IxaES)R2o@ zOg@-vnu;vRhv06E0`A6eO`*OLl;SM>Y@Vr}DVNgayIpD^it|m`@KA{(8MnS(@x<4y)XthXef!Mio@rdww2ESD!n&DT=!-Gm*?xkO)rmo zGa0-HC#8!_N1a?`3|_Ryv*S4=O<-J!R;q$Zqr z(Ic=^4_ZXq*C0I!K`L?LUYwL?^3!?bMA~kF5K!=;7pB7~pCrCC_2G)`I8R3eBN~epd=V zLhtCV66j^03o4;DICiyA2Al?JAs{gA9O!#t0jbR?puZp||CLiCDu;`&yoQKrc$iu! z3nAyIg+OpNsf8wx*fX{8RS8$TV2!k5LQgXdfl~!E3}QuS1V0EqOCxlE;D2a@{(w4Z zh0%bHX@%9`M0yKb7;22Sdkb3Z>n&KwOr6k9>sQ#^PCadGg*QT8(87nvGn?=!XL{*= z9Wwu*m-v!=p1Fq6Uus|W$G{l8X4Xaurn>8e6qRvJG%ysEIVUF=kO<3)>ffP$21 zuASF^@^fD*DrAL>s3y$wxUfT<@h4;Yu zwWkonMIXcB2f{}v4$u2QsDmz(Qy&Q1)F4C0_Y=0mGSc-E;d2xa`RfU95Li9YLHMr#1 zJmJ2d;L@80aj*g?#ogriMj_T49mAjQ7Cwf(>CWA7VmFI?w@0Y0fKk8VfMDQYF5Y-Z z07*6%H#jUThmGvj!@&A&5_m+gS>WDN^;}^PD!gu^Srr^0UANJ~bsN0llJFt$X1**u z(0J@*rYOYy#C%I=sDj4=I^Gxjxk+pB!22*1vatSvkbss}A+9ODU)|w@qn-**nBf*bg<3y~FFchd zx5)f}Qn>On!BnV#EPPy~(=(v}-n(n@TnMIz7yVxd$#2Fq*x;3iHy$P-BVG#d&Smm5 zDx?(N0Zv3gT3C9##2BSG_A0E!NaW!5xqO`$?7At@sbyD!y~QjVouk*O=i|w*h03ss zY_FCAF(q`^7fA64rP*M8l&Pp%l`0Ro)Cl`IXQarJdxEqEeWj_)v57*Coso6~;ny^ix6N zS(4y1ALT$>`$dTPEHb9sXt?!p*f{ z70eAc50qCyXYp0g2`1C-Rq&h6X1WSa>TGTbtKe^)%~Wd-rSXG3l{xJnT?PHRn(ZE| zAg}Ad{ zx8VxMRweh=s_aa2PdG`4m}zbd`{V61%^h5k2(FZ1?*5iIBtF5sPKoB=wn^rXVGV$* zc~-JH$qbJ=%^=O^na|N_u+#$cb2IFlQ!84WP@2OPEsgQEbG}AAA>BL|#?SIfmPX{0 zb>=VVQ3&)bIv3nOWvdRk$5gRYE6ld=Br>atr6O5G%)h9bFK|EhCb%AZv$-C7lf0-= z0xuQ@3vdNoA2eSBR^dKM zd-C{@d8E<0XAQ^^-s~X%fOL?51V^1QH-!0h=NWSa=vueWm`A`g`^8!FXY?>V^Q@Wb z4Hw)f?ZC$0&Fy^SQy~SFu*3)p9;hR^+MErX*atZ6oOzf>NIhe>W$>r0cj~ZbAo~Yv`C&d?&aQaTHIxD2*R@#i>%^_&Mqxu^6OC8&0j{ z?~Ma<&EL>rvh$+3BrndIPgdocck@=aEJq_TIS=l!ntLi-ueYotSFW3@s8M3V=cVl= zG~e97M<{+UL%vg6I35(h2EC;@-sEjDaZfhkK6*1>Z8323?07c@?1_-s9 zevf0{uW6u3n=#yj>x5!(Z@ncPO_#ikAi_F%P?2!-6fA+!;4r_CHiy!}Rmq#d%tMWL z>MV_|-k$zT3q6cFPmk3!pXPXi5z6r^`_7@?8`yVwlf|IgOe1TgRPj$hfX5!AO_p&w z*kBn;SUyt~iW79N&4D;ECdg9WyT}MR2m37;7eD;vAwghBTvVZ@IIXs2C=9-kI+nId zy44ue&=N^U+uD$zZoY$bQ zEc$8=yr;;8dBHQa8DPmk-|DFdEM!2iJ#hFaX44Z$>7+$YGin?8?LA8e_iZ{-gnrMRPGTMsU%S(}v&xmuvLf_@Yb827 zZZ4)3@pu7hUpeC0Kg-w> z&?jz=vKZ~K(|R`DQW7fGcZOwB$yoOLG|X5>p;uEGoe$+clPq}-lZ+XbYY2>!md0CV z(*@|5t)!jwoN4i=J@2~&%Lj0K`T(dsjUwF(!*9l5tz=7gIz7SBWS}%XeY(K%GiPy6PY_a`ogOT* zln}U^@Ji?kn;i!R*-GHF4S^ccdYvUh;G&Ka?Ow|U6nOgxbYJQElmd(}&byHSXe&Oy z4;acMPxe_JsnLCW=ZK{TR9DNRmgQWzVp@UCE}c&?I<_CT>;$zI$vJL;E9KYdj$gXr zcC(R~M`oY0WE)MlclQW}*MQ|C{yhBiRZAt5Mpj(4)I^S#d!$XdQ+n>o2}2L$^r*e0 z;F?9vb5S|u&l{GNO7kK5$h?=32|p(!sXynEP4}RxLt^2*KX@OZr&9?x}_tEICaSX!bhIQM~N z5H|%D(ubD%)SdDWYU(JwWo2ms))%D0XjsUB>D-LTM^p78Wtni@3Eb^PLH585vNkM?MCcSQ1zKqphsY(3K{2kS@3kg-#$00HFx zF>^@&PF7fva`C_})}KHUy4uAWVo9NkyKJQgr;7@47xwRJtqgp$?P{fGfg8G7;e0$5 z`*pJp063I<^5ul0mNBmYiG0g3zEx>})?e{Cjm4tZ~&HO2tK zmopjUh`T>nJAmqP2lVfRmcDA-^GDzs#FU*uHo}d70z-YlwAqHP0Y8nkP60<9WsL{n zBq_>T#xy166zD$aK4=P^@<~>db(xZnd?~&E;ULo|S)0%iD!&7%o@S*II1Eld+v!2nwY;q>i`Z*M#$tWx4l~b&AhYKnAkzZ4+BZGkP%KNMictWG)K5G^93V*-PN?!;f_4iw~ z@N@=galmTQYNGO_UX@3B9kWhTXkz1~UX@QCoU|TL&?V@wuN`NdwMN1B`{%5=T+}U6 z=e+d+HC3x{!8%1L&o(wZ_*|eKKTp(|$RAg%AqXD%&|S4gtGVbDJoC17C|9r$i+8QT zxZ)k_DE#n_wJbhN|1`M^fBfJN6u9YKYdh$1;FQ5@DQP47{`0Q2H5f&-yk}hug4C^h z*6-l-144z6G5OYBAyAYHR@(?#+#RLqqZz)ov2Q5GUX`!~L&F3G*sdx(XGr*k0J1p9 zR@MNbNM>alJW?_PcRb+lAP;KTz=}!Q@%cg}Hxy5j@9NlcJoXeYC&``QZW(($e0Hd> z4?Z$8Kt^#`kA3yxo7Rp7h!GVKqH5hFgg_j50sM1{u5;=qgSuw;m2A+Kn8)|Du zZO2A@XRBT^`xsmmrnX~Z{$c3q)O>~-VJ|xZ0M^HY-`QXaNyC+|+0tPupLW(pCxDEz zw#tS3vrt#FC!Djjx4n#mwe&o_iVSy;r575-WZd_h?Q2}>x~(S;IB%;@M*d*iz?(8a z56f0vc#==d!c9losKrOGk+w`IW#}l|LcK=*`6jrC7j0{#(8xc+l|g)BY=ac`NDL{Q zRMBHmFue_@_8gHI=V#l3@z&|K5W^BIX|)hF%1*(zr`z_Rw54lj*buPdvDGZx4Z$`} z?!v%}KWQFsTTc7`s}D?-u-|N3d-h!pel^23jE8BrUrD>2_{_6qP*WRetle2+12dKx zc;zzNC>Tkh%WVnt4I7xBr$Nu^v=SO=DIUAh_5*mnSZV8N^4@=*s)PhE8O77imnw&& zw%A^QrT5saQg(D}4bL&y?m(Jgf6*GQVfbygJ>ViAVZ#nvZ*+ouy~C!|6jOVXi2b$| zYI=@V@u+P%6+BKIwV99sWDGjnQ^Q>@k37hNi#Nq+&J#9x*)0{1$hLj*?)q)~)~Zc7 zWy}9-HH)EUXOn;&+ex`|)x{Og+CKa5dl-Qp_C#w-gR_fb9Rhv^qm?}bPrYiJ|IhSe z0{wWU(vW{g(ze1Qn&rK&=WO%0uWdM;^~?=ww!$jLfdik^7fwqZZB`Is|1nmNo9LIg?SDbZ90{- z>(i4adB*L67L)iI_PYos+Of6l!7#@zsbx1QU2|+I*;e0vjd#IJ3bS}TzrNk!TCO*e zS2=K|NxjMTa85>coE&4{*E}@`gfzN1P}NT!1sP{xs7YIX zkLMoU4?n&oJXt=~eoz6L!0+Ph$3a4D6>tB-+qK4}kahFyXL#2dmqunTw2xMUr0lc8 zuIAr3d<|P=@5!T+WPF;vJOVdut$l-JQZyjlzD4C0!Rl?c-|}8dA19SIMR=`WNgHXl z#V+knKi+EpS?P0rxAcoLp!+Y+Wz%mB{Yu04ciOkPrbfv#4{zCJ?avX(RpWqm zGHNd_zuO)S`!Jlo+n!W38u@4su42-#JIQXo+4Eh7NIco=b5`TTxUXqJE ziKm>El3mR_v%&N8$tNMX04X_x9ySsh5aESg!3Mp!l=@f;eW*zv^Vv*&z1kmGZ56eeTUj!H0zlQfM(4a)}E2v-#pwx^5USfZce-vvjj zz|<63T4Se-DJjyD3Bp@>ucQ>*d4Qu5-Z9l`hS}QO+)nPqi$3X>BaZqq6e6+N~ zWO5$>$~zIbx=<1~wK&>9w4J*hfw<9FM+v;s;;7mnGexorMpTyqdF*xN$Id*rxgaae zdKZL{t5Qgik3#_u-{#=Hj~!vySU-&vqIMU{5Y@f2=4Hl;?z!wBZ%fO5UMR?q} zppeJ31^+CM8yt?R^>Y^#;qiVi-g;}>J+T*orJu&kq#XNB~!=e^m|c?%@|0umP%;V*V!VM|Bj(Yv76{G;q?@c8nM z&<2|q7UA(%SFVi56)wnlTt>~ylB}e-HCXU@wswAFl*ILNRDvnX~ zCqfFxV(%K#ScDT{U;KKZ!{b*%3Kat|9Q|>GMPDl<)8GQQZ?}CiSR~{vKyb$L$b=)b+nbc-UZ?0EKi`W#FwWvs&9dIQN zb(XP+P3Etfxu&rHy5(BnO6`HQ2Sr)C>B@{X-(?qMtetg1D9Z6g|FQWpJ2&8 zw(Rzm=|9WvY}xG_&cgpJyZ2?fu|K0%l->KXzp=AKClxz8%3HbUxr|Y8B}T!O7zI~i z6kLf>N~a7`y6j4f0+tvBS7H=giBU?Y1*de`l^6vqF$%84D7X@%lrD#p7zHdb3a-Q` zxDun3P8k7LVia77QE(+jDP8uL7^U>i4u71~-_h8X_vUnyhwt`>DKv4ZJWg15iCtPa z+e9z@TT^IN7|nCPbbQ%hvnx#|U9EFL)?ZUykQE@s1);wtEydzM#~+?U(SkdE3&Pcp zUpboE_bh#5rrEO;-vh1!iZYe&k>+)YsY>|o3`afw;v0tm?EUbKV_1XP%j7C!?8Unv zV{eKJGWMce5ZHSuu~!%O9^_c_29LeLa&pzTjxS*Y=QG&x05)FULmbPvi<{^HrVYbw zS#O;AtwW2?4RL%+RWj{|ItJ+8DN~2w)uSDO|E^#iiiNS#n(30RoBkca8iQcH4EK$4 zgv)i)0N;s%rmr{pKgrd>jL&~nxPFt*zad;>5U!WM!De$f)0F>2^JV3Hd^2FE(~a%c~!9p^a9 zyABcI*A=ki8{Tz@7(EkDo$Yw<9pZV$W=E5MQ#?;dcC?^tKHZIhbl&vu3g)-mU8TZ7 z=qf$tL05UZU`{#v7X|Y-82g*jcrnIo3msoUz5N}58^M!0iyY0YEAxd-%bnrl2LHXlEp5=2;MaQ`4T^RK=k|As-BM@xH^gpt=dPFm zo%?T!-S1@T?Gm@d)W0EdyBq26h}f`=cqcz^m$NB9f&ZSIU9_qGrifjXH3E}S9kpu$ z&L&@GIU;$DY{ijF?w@ds)Wc~0Cf7lqRDY4{=mV#~y)HSfnBOV4h2T<8U^)L+gtuDw zLV-gECAnGP=>2zvH%Yn~h>t#V)RTu}^t9(Gv*#`zo;^c2Y zE0mGsFvIl&hwUGc=8Ew99_jYn@mnCA!#I6?2E%$j-Pebn;GFUGp(i-Lem)wy$_M%T zzzGhi?eAmewMp<>B%)JH%*Nq?J^_BNpCN%?BVpE=vj25FF3_g|=u>wF`skIaoJ7z7 zUnVDleKu*(1`<=zXP(-1-n5lWt?g5t$0Zv11i5JEDXlBdWlYASTiLDTaXp__5<;=T zR@}LfPd&IfGr5sZ3fS&fZR|6Sv&cW0qo79}@=x^aZ|c*Xo3b635`BilL3V=ZvsG_f z_U38)GCZoJZwQ{)(I>>5?LLez@0E!`dd55JfJ}R=qt9~ab|X9aPy+*xTLpy%1|U<* z+T67ozmjBoxKCfOxHu~t>Xhy2QyGr>CV_IkELbpo)XV3DchGD4lmYwAVaXEi_A@u8 z&oPO)B>W4XlP1?XxRrzr_o)wOimpVz9pO{Sy(}Iei$+mjS04CkgwOZr1?d&(1BMhc z$kNe1|A)Kxj*qJN`p5U~rVt9i%L^ix`GrzIsytJy(@~EP?QKrjSMA7 z=s{Y5z|aXDqy>n8)X)T^1wlaS?|p9B-CXhWe4gi@-|O{VxS9JtGk5OXDQC`{nK@Io zgc4O6KQk41u0*wf$Fca*I+S%*cWW$fIWyknizthy%#N?5i_V$~GY{hO!%%O&*_*?* zXT*=fHlX@*<72V>fVW?ST7t>b{)^+M(!vehlK4fKsQGzGd>`Q+X2{~}(Wb(VOXIg| zlOFljt)6?R_2%tTR@c1Pgba|@x!%`$_po{^;@fJ^oTEJhC3*G=6t}Q}x66ueBqXU< zY%5D;1MKch6TCP0zE$y0iz=TznjhF2U)7golUT%#_#CAD;Ewog0c+bv?26w(YuoDY zj(3J?CthW}4#u|eF(;xCSXX6irD5==R%U+I;(JAnO1WU*(XL2WFtqU!5j=sZN z{2m{!3zt1ortoiW#di*hT?y-T_Fyec*1_f>ELh;=qABcNL3}4|${g1GUVM8Yhb_Gq z-vrL%d-31Z+(Jv4#M7TwMtY~FC^YX1*hWSmt$`@iBMC;33Te!W##&dPZ8!;3BPZQahfEO^iIY_DD~B;E5Z z#Xe3{Y+jc(bRSxS?-bk8X)*NuI{Mdyq(`*5U8LSD6xvTOAUb=mp1yrC|Mu@EB5_?k zeHD!MX&L9b`ueF+!g!w6QeRexS#TR{?oF(}U5WLXX9=w5$6M*=hGXg2&=2+Pu`)9E zLp=^75mzSiYMu2{f)NoGCh3C(FuD!wMmPO7;T&7iUH@gs4X^&WzN~NZe?0FuLLcL=`!`wt5&94L_0jrl ztx{R1^95rNMuAy;+gSa)a7DaYz$&Rwam zNn0o{tkkCnxvWc;J`YauEBbzH{wjT&Xog2<4Ob}a?byT7_KK|5JGEd)<+Jr2AQgb6R8Dz^`8rECi~*pQYen`x0JZI7NTds5RueUc3c#^7a_n%?Mg*w zTlecfFODT^cFIS6FMO@IY^}jB`meRx^!;r2L49wj;`fxCl6=)6{Z86E;~yk9D=^7x zmdnNlY&i7qCcu=Gk!2jyN3wcH^)vqU*&zSk(!$SjJR2{BNNbtMB1}BXJFf3X+PQjp z`WS67RoBZuIiX)cGiP6PPN>G3p4PuB%~J(hLaE>vejs$o!Vfk^cEI|cEnN~?(?+_N zSk=DetbVjMdNkJKME^!hE<;gAu^XVp1-(&M;uKY`@PNv7k$rPX-vrCf4_wmI8StoE zgV>78`j4avwki5@VBIQ$x^?!7eyp!IUB>%e*FW-A;q|=lP5p=x=;QA`*T4A3Zv3Y& z^_PRN)8|4^!cr=caiIy>|07G`5b&Hu!uK6KhNkFEUBS+kNNAY+;|joVZ#b+QV6nCGSi>f+g=|64JpBYf4s1C>RJ!MY1In0)!|mATCIVk_JoO*Cj-+zz+6#egvB#cl^%@WDh*V`xko}lQ0px;m5@$ zTn)=O00H)OaQ9(x2`$Ld3sz>w@eA<@hN6lrd5{Z<33*zDkDX%Y+zB7RrpIeZ3CrN* zOU@6a64nCMEuC=Mw-AcfqVrm15@59DIcwob=!{ZZaE+hy>KU$2mGNb6G&GQPEP z!Y1Dm@ZzW8&OLcqb|EgMZRO^MX z)5JgiIH7e|(R}PnAQN(E_>bA{-U$`7DZj9Xy%X+%(OvJ8kc&anhQ0|qLa?Uxt04&q zSY4is57XeDgpxdOR6?(qaCx+lme1PHNx08n%tOX2 z#9cD6OD2d)0WM(e<|I7eg=l#kv?bbbrE{9Z`Y!fGCKGcfaS$`Ls4J8E8DseuixY6F z)g)Fh0HDmz2~pu#Gg)m-0t_(VsH^M*Tb$A{j^`=+6VQvwdWY$}=D~zH)IFTdO9;oT zKL7nxLZT4$lGewIvdgnt-uqmCI$>tClIT3X@sET#S_O_~U2iAMOwL@4-Ht_Z?3-PH znRhJX$RBFM4ggh;`ADRxyeo(zXFyRRtRh0V6l(+#HWDFBBEXm$HrND&2q(gU z074j6?n7`4!iKS;@X8}EGO$~;m-iIzqi4k+`5{<3hm2&;?WiyiFN{!&TTE=Lkg%DokcS zl`-@MN5yvTf7>J(X?m4lqa4u92A;RZu%jM>6|vm&7+(LEt(K9o!LJf=XjeGLuJ9T{ z*x!FcpeW^C!0(nbd?09lddeGAFjVsmVe|Nys)kHoCy~$JtYP>vTH!=#d_!Zy&pu9+ z!Fx9~;6&qHtXK=f_ZS$=XkqvgW@TdEH^gaSXsk>tLnCdvmx+V0o0*k}j4|C=djO6;&ljuZP6IB}A`)z_7)SATaFo zKL~;07k2kM!wR;mgQ08Wl3(8U8C9RlB2o>_OI$+AsTHCD&@e=UukD*^sKyR;G;D#! zXIv)(G(S@?05lAdoH*9Lv!NaCFYLvRtzSADq9d?t=}a#}YtTe9iw%1lLW05nn+`CH z*J)Euva^E?XJB`5{Sd==gsDH&&`-4sfNvja*zD7{J>cJdZTQjGU8PLo&J@F}|JRCS zJsUCF(B@S|a`u%)Vqx9CH6;H(R4+N|CH4!wqE24;M+R`z$sC+O&&y9TL~5~jsOA(y zM>sR47%n-|VOCl^Qym6&1j#fqR`hzah)hG43Bj!RZ>CRqaGK#%5E#_?>4tPP_u(@P zU9>4v*|`~piZHekHPeuQjs2x&8tMS`o@uB6#xZNAp%T!cnTGd1*#LuMm?77CX~T@T z`THR4LlgHW{L}B&fABl2_}O$&T#&uZT~iR#XuBq29rHFY)Zm+D8PHW=quNhMR0bRR zli??z*g1w_U}HbbF;t{2p4;YtYh$lnhJh8)Wo4gaa~2xL^Oj2uzXvoW?;67>e^Z*l z4y`qO4NIDh*BQzPhuCN947tJ~-jEwAV;$~uK774lGg&evB@yi|4d(A}G8kwhVBejF z#@HKLe7C`%#fJ4?cY>qlu+F={3Ub(nT?VUm#7cI0m*EZM8UoFPr9KMF_UtxvFFZzg zZx4DaiGR?U>)81DrJ5a_*k>4_Rk->s-uZyxGoOw!ou4~o7_E&QUjP-zZigmfYOpqf zbs1(zWG~7aU*o%T4POR9vt9dF!y;c-@R;8@NpZ-7i%j0ngr!7x{dtz4Z)xRQO!TZ$Na6~m~x zl)+dF`&vIW7{>~_2eXf{l@{Y$tg^}2IQG;}7|&6Sq%|9l(*Z`$VUtb9=Fn> zmOVVldl`&6fhAdt-$GNf++rM?AnUlL$MPi|w^)&BsfU^OwHjN{jzsJ=B!d{@mcvdi z;{i+nu+mA!UKj|aB^fsaW8mGioN=&ksA=M`C`doeX@-D;wjHyN*Z|r>rCh%Fz>*B%rd@N6uTG?Z8k3U zr3gFcwi%oI9-hSVwxiADu=YEQvxS}f@ebp7fjHT?Hm(FdXO|JW&nbNUZeuH&d5hd{ zY+h)S-KYDFtf(+$+6iM<1pDZOu_?Aoax8GaDF_Gn?90aLVR4hQ#WESQ297p*1xx^X zzhA>{-834saBE*TA7^K78Bdltw+aE`yr)*9mF8Qpk9q;$b=#O!!q-f$vo7JL2K>Tv zV^Lq*$&-mM<4r~V-^e|A2gu)Qj%CA5rs`ZwIVe3$@RpM7s~-JKlw_rP@Io+`C)$x@rScTa z45&N<|1`F8J-7f?S%e0wbW|ED#S0=tO9XL{JR$!WJNlPVUu;%Be8~JihNhVy7Qb&S z8M&T_82Ax!7i*qq(pSkNk}^KUJq=+sP!JXxLSCmp@;LVvB1=JJQO^P*OTEZ)5>4@z z=@$`@EdApJskoP76Nk}@E*@h!4~_b&D=7@7%*cU-Te3&BneGqL9~zV5S&?v<2+DvL zPe(s8mVDzn5&zduv&k-#-gSqbjqv_W4viS_<}0UhKjISp$Rp&<>@b2ReMhAKDd?GF z?A`-o$+ss{U^$`FaW8!}%$7kVL0)nJVO%bF*Aqc5LX5$oZ{S_sCWk?p$sEnc)i$9q z%N_nCez}h6$IueD$Qqigua2h4kiXd2cTMBa&6aFz`a+w2k4uTCvY*`*8 z7jZ5=7%AAy?H`$z2*P-F;A7JTWin0|I2pI4o9WyC6o9?n!;}lFBO#xfeuj*;>QhrU z?WwJ-cL#@=<#sjIDj#@WJM8XYvgLbZuXuX9ZyPvf9OPZ#d~Q!uMrhbsI&q?u_ZEL= zpvi(0ReokY2btPqdEc%kN53^FTtv&nVLYD@=uZkZr!=?zWLv_?iiW1 zr8%6x_oM042wlpPT(+W)#mJ9mn5t^QbQqYo|2K$B}%4(f4_2FOqW-1c|8GXSy(~pqYtDiSrlN=L!`-15@M5v^E z(^tlY+b}&PSy2+m;8h3|$7Esxs$#Y^-(=B_J;cuEn?4Zcu__l$jUaM;ebH322u!nX zylEPs9lM#8y=A%;AU6M@_x{D*w@r6x9;9S}iME3Hr=a<>8!5KoQz$aJ9TDlFs42CgqdBDf3Fn}P{T;B zl;$CS9A;iF1ZcDF$9tD!VT3fPx7cS#|2fF)mm+4E6ySdqG2@VcX?#JXd6WRRR57zL zR0q8dySK1N3>z@dYGuPpnoCKF9dV{72s1*WVkd+YH-tpRjyTg33^a-~E885uIRuC}6}9YBbL+i9y1WO6CW`boNtaa|NKomCf%;D3QPQnz?Q`nfe%6)BK6n z*TAGkce54(`e|>JGJnl0)G==lQ+RS7Fa4f5Ogrs8vt1!QAW~@`o6hI$n*sVH$}~2< zg}L6pvYP6!ifZ=$pSjF444zG`%;k%rvNZnK+_RWc(I4>5gUqnEJc&&@VT$FUpPM^} zX>S~nY|nk2Y_@2VMZ@c%-div|2b*(tsH!ntj@h8gIy-i9hd?D*SjGA;npcHcEU{l?M!plKjuv9rklSF5-zg+8RiCfUNm>;nrohj=hx0P3sKsf zi|pR-c0J2oX|5|=XMMERue9UuvOl!eam>8RJiyN;uu?&uHlDM}yZ|q*x7z%MHhmQT zYPA`nGBPZ^zFW^7+2(N}g_Z@Z-)N2ukSGsrHe(5rEXx(}Yg^4-wBZ?9V8}t3S!P+6 z^afh3&}X~3PvioS$@-QK4IqnM-EMAz&Ki@<<$0GK<^{UAbtFsM)O@_jKC@q>4%=&< z_zIDlE!k_H5O?o?e!j;3S3b|r?l*Vz4Md*t+PUUQq0cWGkXJDLUGpcPjltM&0!)dH_I8te!LGJ>oW=9YZLs@ zee?csl;8H}W}IPj@W*YIAE8hGK(IJy+&D~YIVzyfd^gBqFXk$If*_9Kk@~g5WIidz z0;{{Tcy6raFKtv|Pj)=sQc0;6q`7O)hv+Svg#THg!NwXaWzqR^gXLoZvWn4Uv7$}Y zFj;m2y);?Iz!_tY|*3N2(eh~u~|Q0MQOSbqtPI5+34S#xXI!*ES60nU@JHX zHHH^)S$+@3K=57}%WFa!b9pTNp;!BnoChqptfh^1^dk0QSxYJOGGoeGrlKn{ma}ZY zAs_tL@)mQLVRMEorD7z6MXLuD_(I2y+%}te={GI2BNZXBBXiZaEH9h|bsAU}OWhQt z$d0_xJC-~xHZh^Y)AQGxSPtWC-cgv97A<2%C^lSp(fu8BdO4c!K+$vj5=I&=%16}Ru zeij`3A#2k{^OplGH+?F&G=jefZ1WI{9lh7l&n#yCbcp3wAIr%|XT?86vhI9lDWi=% zHMuP*kB|YSwYl8&g{59F8U5=0jisybH$U_ZG7n{mV_jZjwV%etvdtqbZDF!6Zlq;= z1nhXv`@vFCxXF+IV1col8|=;mOB%$iQ4=lCLm~H#VE7EBDjc6~$<&tIM?75|eQE2Y z1ih)#qg-Lna`G%o-^ind7<)vzrGt>WxJSArI5K|>+5^HwziF> zoN~sp!AC7I$h0v>Er-H$chUI@bYN80L5qQZe$3L1ES8=yVy_mZ<Bn zk!d$9O;H`1-LUkPRyhS4p^0GnKP;X9VTtCuKP=brx&3citlCNY*rc15TqTT7u1CE8 zEz29h{uzqp_bg+4t5|b+&A%+=(CB%uN0tO#()pE2Nw38*xQDO?Q|g$u`YcgzB|884 ziRBBOcKkl(dSSu(b)NFVk_FziwvzR00kcdi1#9QRy=gVARn?oWRO-BzR=`Sio-fr| zPZ4Vw9c-1)00=Y>k`!Wn6d662D{0*ESnC}-pO=rdehT~Wj2W%Zgu^_|WQ`G|jQzRL zP(fw4BeJ;GzcxW`bF^-gm#|uIhH6vxvzKmblDTlVt8~@pbwY5m_Xe+R5dJ?mRrv4B7N*t%ZOp8B3$d<};!?CNgaDioW1 zTuJY;)q?jho7}@%t;9_%a6>cLqs2Ko;@+1<{A>?vx)8RKOmT;KGkHo+>k9!@F}b(( zLx@f1drPB;j(x1tl!Dd;6m(Eu>oV$@SM|3(f~c@$fOWF)kk=S!ttsGRh7Gdj6s|uX z4;Jgsw86f?NfXv(i1l41?!Zd4d5HC3C~UQV|CMzVPMGGAqpSl3NFd3htvTwVdhc87 zMiq_6eP^u}RA|nx-B>Ff*N{5adLEhBW1RJRIQV$;AFV|qb(8k{^$Tw%&)zR846r7I zlnIL@B&!yFmJrs2&|qeTgs>)r)Ca31B&!xSOGs8N?2wSGTG%TgED0gi!Z8V9NeF2O zPB)OCtXjAzAz8KXhlIehNVQNPAz8KXP(re5;W_IwAN6qEel}5Wj^jt>TRYL=8|4;R zwc-AQK7+igS&fy}>Za9nY$!IiID&B8+8|6!IiSO76p0hqFk+j$(wd;fDWS_&T1SUK zM5(mSnuKc7Zk=_1iM+GW=_W!uiOpD#>HYz$!mZs)96ax*7ts9`zLZneVxR0WB=U7<(Mn^l%zz$IvNQ|(_oAiQE3D*sYwgG}l7%fY zsj7L&J_ZSlOgVcaTC!4xb1vl$qP)WLwTkEP<}#X6evymQwYOG5_TJ!=;f zVz+zNj+pk}e$P5C>=_-9qJ{X}>QC!0wCBV6!rB;Ixc3Wdchi9jqG=G30pOE%U1%en zm5lq%{MHNWIj5o@I?InbY&}90HU4#8yRu30)%C_1; zv~ukF8@7f~2wSnfZHahz&B0^XA9TNg4adPOXYJpyl@XTnZ{M-)f{j3uOm(!5ojw~f zX}iX@_K}wh$)q`rZFEw4XcOBi-xO{-&uM8(^~vAay!i(NWnD%l&u<+7bNGO^HmgoO za+}@3R<96yxz)io0_wPa9c>+T7>OO|Y?~S5=loV5=O5O^rqjj9yScJ2V^Trfc=m^x z2_M-~*tSn?Pn3Loz@xj{Ou86lm)2AatfXCP0fBvLw{*6nr)@*ngOJG$1eW;XPfrDUvN6E)boBH z=bZ`#yeP{+d<(?@aA&AJloYG4*4m*JkKT!%jk;JNdP52CL-yKo+sp85(xhmiNntfs z*dB)|Qv?lfljQlO-EOTQBe#Zx!Ts!XCDFUS$5m7ib7eM!rJb&O~Nw7 z8+&by1Ssk%@3*;xwXE%aRM)j^)PCE{Xht>?b!3maHct5Urm=Fr*oHumocD{349#{v zV53tV#vicV3{LtlM=AWLqqc>S5Vh)Eu+4?@`vu!p~}{jYyRE!kt^A(w55VHn_hZrZ%qgvt8evbDxk)vjB%-iWs1ZQJ`m zqi)*hE#0|RNCU?1Y!_;rx)HQ7J%weeHDlEwaWsBZdhf4}cyCEfNC z$@A9*cK)erL?n0q3wMi1?);ZXNbdZXNl5PeH%PId^QV4#w}jC7i(-NlQttdmWs7mj zo&UoI8$>8~{_CWma_7HIibn4Iw@H3-=f7J*a_4`L-FDj(v{%-Ooj*h8AIu#|_BBG( zRWfWZF6f_K8q-#nOW8C3(WYmXwigw&sfSr+8T(q{D*w=9-=`B&SyBai0rr6FE83eG zA8)4>sI@VY3!$DrWydkP%b_Jrd}Kv?F(D>(Cm2z@Ow1sV#TQhvHzn?PzlyyJPWou| zx_v?@LEeBP_2{SzIQ82I}{9Cq8<4k?KTx3TB>c0(`V7eBVQ6vg%8Kg7ncce>lF zK{+$3yB(7`H~5!5>@6dN-}vD{_Oa+FdAp(ZC9eg_9z_`z;x*vCme}uyYDdpyombiK zLJQSwwY>=`8PnI;L&LOVxAKLX>>lcIaok7i5X@|*?6(gIK&DDF}z6#9`=W@jHunYEzp~59r?RWb+47v+`x3?9Zv3IW7hm`Q02!#eO z9SFsbT(chu0YjK`$DXSe$G^U7zgi@2BIUfOx0BU&m~q+4K7WE}x3b(PcC)aV-Faf~ zp+CJIg?LW*$Ak>)`xJTlfDJb|D*F%mnLeEzF*xXSI!udNbY9@MjgGh2kI(F`a{oO1 z2P;CQ^`AcduTNjYuRXI54%cDFC#xtpzWDJ&$51TtZxZSl1ML;h3wI>wFctwf`duh7 zeHrSd2ZBdMtS6y+*v^e|B)!7p3b#f(TGIgivl5P=u>UgsZL0mRlCG@kKdyz+!rs{R zhL{=5VRBsd^LPJ;#+x0%ak|GRPO^fs4i~Fd+Hr;zlygM03a>fd^wIf**BmCn506!G zIQ)=xF7KGbH@)FlkqEZXtApc--e(d5Z<0(xOv26(*rPhq*0GgW@8tMMz}AP^A38<| zOSrYOV+z&>{J__AbzCljD#`jd#vmqZU&luDFaJwfnL$<#V>A0X*#Gs}Kl?kT;@R&8 zI9`YHX7d11HorZ<;gijS6ctCAfsV%{ANzaO|5h(?>1)S+oiLX#8{u$7DhlCS{KN!D zXwXB*=t){EO)hwD)YjXNDtOYk2%UbPC12=};|5 z;bg-2vHZp?M~8@j6$eZ7-o5<&#g6E3?KG^?=wH&tMrS#WAgWfY95Bk9&qu6wO!lq& z9M27#9d_T|wd`BWxY^O3{j|lgM-i8&^FCV97kO;BwG&aG2r0zuNZ!6x8t;UWRAFS@6Z89O99$f`yod)+PmE0 zu)_rvE2=yLLL(rHHc~ zElk)P;VckhbDyAyih9qI69(}I%eStuoJglW`2mrNDLz;S1#|FEK}w@Pa?o_#NAHfs znlr4If=*J}Shb8o6!&f+2dYzXy&B!W`bpJ>r#uQ-#Ji=c^t70weB4JbjKgc>jZexJ zt^x`aezE=D!HVcV6IJLAA1-qwNPrWl0W%8%qc{*5>6pQ~I4N373 zyKQlHR3t?$Y1L)5ZU?KgpAMz>i^Dk+ldRpH&RVE93!TpEkP9ayI^Pg_6fC8&p;RL2 zSU)E3P7BE9`>zZkZBCO4;vt0yk>Xh9i$mI(CWSzyaXaHW1(x0@TC66oDctOPNGc`i zp)nLfUNLvj7eXo;DZ~T{A;0)6pY3*zj8Irb8c(Y1)cVG*dA!nV1bs^^Yg7q<`Mmz? z&PRgFKZyFHr1!{SrFeGw1fCZlv#xJCm!kWQYMp3i6)z`-@QPKP{i33O_iX{qy@-`g z8`z2l&Xzc|O54!cC^VqB*0A19oto<2|9ql|;>3t`SA7;Pr%mAP8 zqw@SzOXt#{|0>S7cFtqL!XtkDL+4;EWRs3vou6SL_wlaIuY?Kn-DAZmwrbJ#Z@JAcB%=59_yn0laJzmIbSQc2o*97lPrkF%Si zsqrc2+xK;@4br9@V#NnJ6I=^NLSPJ4u{N7A$|ixK3kZ1%2Elr+x0ct|olS`wnw{qzi1d{Pb{V#h3t1@E&M_r}Kn~ z&N4XCj@O&ww9!0a_cUiS2qtUOoME95Ot#K)?of9Z6VjcS)6C#AW;^c_oBm;*bGGCd zS%dk`+yAg*P-lVjo(^ilDw)p4a8fdzGXhh_Ce?FUS=}X06V$OdG3#A4;iXHQ)1Vl_ z0b9}z7B<0=SdIPov$M5uLp(E9Sn3=cES%#*vz+gQ1nA>OKp&sa53O^49vnu?nQ84K zYqHttcFE`~IlG-d#hv|= z?0o2LI0A(sE~(=I=MX_%Z_gieR>PC`x+m&c#Y4`M@BDF39GnQy?UG9JiURRT zfM*qmehM&8fe`Nj4=ND%SUY{#SrLPd5r>^&a<^?}i;p>5p;Dj=H!=Nj=N>TP3&)-1 zf>Fegzd1|Ai06^hJ`I}|qd3yArnB;=oi%YVva{cR2*eR+W>M74{l7a)2?yApzk}E3 zv&z>{2UoG&Yfd}$9M_yKA!IuS4Op0KzTq4gg_bq(k<%#LW=kJAE5~H*#w;RqKsqRc zaFTnD;JwWY9uZf{WbOWTmPYL!^|$j^`<61x|N zB5Rv5aZu=Wh+9~O%d(0jzQa=ViB0$+Q{o~z_1af`IjV1OE%q}#Nlbi72j)GjocMht ziYldc;tz2WldWGQ`xFwaiQb0;zV0O@#IZrG6E{jl7QOD5UBJ{3*4W0jr(ASmFUX2|+7f)%Im>eNC#2t{* zcXm%Khp{SZR#+5rs=|=O1e13?){=`GyJ!OoB?s%>C^Zf#;ESk-uaZDL~BBzSqlybpNSwTWYCMGbAkV!~!5eF|T+IdM2G zBXMj`oP~P1b$g;4{Os!X#3x~(=Kqq2g)02XFNwVb?cTF&z-n78`|@Do2)R*l{h`D+ zuuhOS`!%sn;fbyE-x6~Q@mCNU@)f5OGed+8yv;?F7GD4DrNqvHb@gSj%8BRp784Kc zEvM<{6$VPnm@}B}3JT#ifA>n_UL98Sl(?Qafpl#+nY>px)({oFpIFWD8_kw$F`Z7Q z+PrEWeLC-PKhdCr4XKe26Wa+J`Pqkwk7y%W-s40&1j&bw6EQ-V!Xlm|{tha>$jBp~ zCc+wwxSqnsp1tiVS`tZ8rgj5XRPd+I6T^eUACNxD`a@-kLX?JgTi(!LM(3YKDO5EYT!pYi>rUU zq~M~Z3ZasA3tc*tTkLy_>)jHvZY$Jl?d6qJTkNXEb(}Ocq`GE@t*$iBtb?cxFtt@m z8|2Vo(pe^ zYfHNZ(3!Drk82$EwXXKKa={u#m37?;jha3MV?WxRg2bgyVP98q#YZk98g1zS^Uh{- ztGM)0yND#qoas~e-YTwy5VYZo)m;n13)LO;&5-q}TaM%B>bZW_nf)S(Z~A&17@)X= z78<=qu1jHUGAGDp7LbZ8+)JB40){5wUEWhE2t-mXl9i8pDUfPNl0z}cyL1lnb1huU z$ZFZxHm>t=ujoR~9A_0z{~4(bm8bse!8P8T?gZVpLcP+sZUx!Du{E@ z2Jy}KgJzqpBB6~hV80G?HPT(#a+I~`=Q5)5*ZjiudJ)JkgGRZo7R&SLO&^x^j{cE< zGTQZyR=CQtzH@Z~KetVB)no6Eak;?|^NYEgOzY>ev){+K4(pyhKPg3+&yT0N?u5RZ z{xd3_Xdp#HM@3T;xT%FNW^| zuPR{WCcFMb{~6OkB?My1dn(2hd4*_lOt;v!y{-n8vQp*t zj!#>U`+r8XPYHpDa#K%9Ih#*JIi~Bp^*+~qt?uAy?5f-E^03bjpx}0~hX-8MVD*w$ zI_P3LR{k7{_P6~mCwq9r)tKE`CczIdB%7D(DhH09o9k)`lz3D@c0Ty1YhIA>l9fE+ zS}ZK&TTi%fF4$(V;qWe}T(9e(Bb;`|)i5UKPt@&65AY{6dRauoP(es$tLnI_u*9>j zN?6R;`mC!FWWzaUT@%4CE1Yw6!dl2Ve8MHyte~j7)YpkxiRCr0xaG}juJB-pFWy_O z{^$=^-Ey4`j>}jg2^!eMZ_~iAPN>)Hoy6z;32uy@>F5L36wEkv`^%Lc5_Jd5hNS2g z6o=9(>X~b;P;JU)MTA4E#0-3@AnI7WQ*MC1kj&hrZHLSY*=(Q@f3*W;;ddi@_T2Rp zr}901;TnPV`sGX4>X0yb9a<`{65@`+${Job%zYE*BeM#T?%(7k=JCuP<(`BlygJI= zRy*|`6S^nHG8=dfz74FW9%Iq&^60B^KL|_Yd?Xx5%`PGsk16hs2!S%q8t+ci3NLte zg1Z$-2;oLII{8z4NTU0GFb?|rvGwxIh?K)+{FuR1ma&;bdR88 z*k4w0zZI-}#A8;ky1R|;*5YHVSZ%kFZK&?1^T(UjaDSy9s{B^N{T`ZZQcd@ssG~mh zQcfgZ_OzzEgSaW-Xso3q>-V;MKl;I{wcP!6sZ&mg5%b-(+`k4R3uo1LzZs^VM9U8) zNk4iQi6@e{U%>u&&wUl0XQgKDIOp^Gax()18T|mw>~5qt4KAuavFZFo67G5qc3?%6^ye@$Fk+&kh1`=fkXbCAE+);)!k4EY`08&G*?c69I6LIU`x zv%3YHY{?1fBBHjE^RwhU>*DSzOyVDQbw4Ey2&tP{-)`;%L^h_Io2Hjmc5`3Tt(um{ zjvjQ!uw~ud@%r(;MU`ojwB9o(WF6W&?C9ri3;(;jdy-a|%Ex}{z8K;vpiV2;`xiM7 z`>11nO!uiH@JANHu+Fo;yHaBIN|3PmlpG4Wi*EAhkFqU!npQ1lv{PCN`+%*T;r={!!964{+`F6{`Gc}~?V0ZWA+e*W*2Z~fkRumj z2H%$SZQCgH!xS8v7PhWWlLsIYYQrrx$CpA@_Mn`z^(J$ z*F%er{{<-urtcX43yWFmPAhqF9iEBw-XTYR?}K&XGqEi3vO9r||JiNkq08J2w8DJe zbcOp!X#D2$k{w%(q*xG3YS;N(b}`#sgY{qMPL1C;fwWY}hJX;c6OK^`H;bO`j$_MK zx_j|8+`Tb0*0<0a6Ss0-27TBzcT!|7X|!Y^HJ`8D<{lgbbxP@7?zb?X+GCeHgmjYq z_PPfJfva3R;J&St<)wq}uZ4tyCwM$(6uMI<3rpRLC`x(Ld9~y2*1Dq4aNesp3!#C~JnMved{o9Ud0qm2_OX+! z(XZ|btlLTVhmq4KoKk|0p1_ZsbVme-q+qS3_aVz<%3A%AM-Ls`@4)iCb`ba}Hb zxJ#l_UVXt`4&7V+1@~N&%q!6?K^h1e(kptP_b-usM*k|%Ls)R1@2)6zZWqoYhbanP z=A!#s9Kw7AGK;$@&S0N*$6YTxWvTc*so0)=$Ndqcr>r}8+hftuW?x~e?zrQ$1+u&B zs)Vo0?t-^a5*8hG?317(f7MuOpy)o_? zCblU>fp2}r`uy##jqYRn-|m>w>DPRz_XRxl3R)T~{=^*v`GK5@<8S=)seP}Y$sd}_ zYd>+9AoDpbU%LAVhAa|FGpJg|lVmEUPO7DA&m{e!E4%Lwlq6)*F(Qhx3mRo)ZuEk% zh@yaGzf_3+K1}jk&+Y{!b&Osh_8RgNf_FCS6r5y?PRl`Gpu~gOO_my*R0_*9Rs|=y zt!Z=`vEr%m<`YK~UxIhSTmX9*oYY&$W*>zly$03Dv=BU*%eI9e+GmG}ars`B%l-&S zqOoi7&?KYvF^NZtr^cH(;*>vHG(*-HfxsqvgeE0HJ;5dxO{yg1j@e!`30EmxrE!(v z+lzWCmn$}4P|vlv4Cp?1+7wT-P>p7E=~&Go)~dSacyi4$v6>)_MpIjM z>%r9lH;8J{D;fBENA-jFy76<+YZaCaAaFLQ^%>+3> z8r)!b%z#S~%!V5VccJXRRK{!IQn>YSBjE0Yi-IQ%+hLloRz;S8>`U=JTkkiMpGgH z9{{!o;L~N9{Yoi4tM-;BChRq(NK9{e-VCM`%we{-JY^eI@uy)qrcWpXl{9Tp;Ug-n zEguk`9Yn;*6tO*!3|v`->#J}}74E9S<5l<<6@K8y$r?()hzbGe0zOo+Fg~Zkw^aDK z3P)Bd{JdF(%ldFFRC>JdEgwO`bAU^M-m~9lUHkOxX6yR#ke>bf**@;yt-I}6`B+UX z{GbS)lU|6R(X3G6vnqUBgdVNKP-5yq%+6&3zig@>x}cYa()tiv<> z1QG93;WH|HI}kHd9hn)Fs8%?gNh(}Jg`2BzHx(YL!l^1e!;d9qu+L8rzvHwD*N5fR zz>;aL!k?<}a21}V!pnU)S!(=SeFO=gSK$H`wqRFnV1hcT@BkGarNYx>+?AE8<4H_L zy;1l^rYhuC6+W)Q*Ht*7X5o~1RCt&Q_jn7vZ{Vja03i@xRAI~8h5b9I@N^aaRfS8` zD*Sx2TIl@)U--K!fU|bt2fC>6Y!yDE!cSE=(pxyb8eTAyzyx$q1?a27->C3p6`rrc zJ5~5s71kx!DV%^f6?Us|H5G2J!o5{^oC>GQxV@%@_>c8(;JKx}^#-#K@W8lFL(hk= z5*YOwjppMwrS{S2x<-RGs)4YfF|pc>JRM4Ot{ST`0mkFf;`*v8o15Wj3U$u2MxJD2 zP_O)+AQMs=I)9CVe^TLJRrt0FXRGj56~3Ut`y|Y!HTLv{Hae(@XDOVlCZ7KGjGD2U z&Pd8$T$FYN$0GwE-)J&e?e{z{g`%u>Q;$<9#kw{1Bo%M+wj?=pflHEWZf5%{)#Yxjfz!C6b3V^K8=Yt0k3TqvoDRu)A2h zg=eae+{7!1(5>K7J?{iJ816@KQ3{%#GVTYLMD9Vd`&Fhsplmz@>=C$o}Kt zQi3PQ{%JC1vi~f&loRve(u*@?`ZBouNGs1U0m}dywf0!yeA*gyaUB~kp=GT-9V)G> zAFCON#{@w`GK)sR8eoW#KKuapl?k(|Z9I2{&Ae1wPcuPi!iKf;jKic*PwpJl0fa!-s4PY{%))|5c;5B?|%J1?`Ip*zjyb3HjSnaONX~Gn&-6lut==R zYWt~YYQmbf(lDwK+}?<*JQ6}LZp4CmdO8Ru)}^PXhR~L!_w;=JDqh9=_VTnAf|s=e zyW;zLdqU-Vme zk7f50+3iWeK<^8es?uQD{Q_=r;IVM2MofiERdA;4p8=Ojd?8$VehFNv39Dp(F5_(@ zW7~)UcY#1`=LlSi=!6{LJY0IgHMo?3+p>FKcK??BwWFjLhQg%}DKd&xs_7|TUHSfn zJ)}Xif|sc9aur_LgUzVvu~beSEfu-)Tyqo+jhq$y4X`}`|Ip7ra*o8vSqWFSKeNB( zDeo(f_eJb^5A|3H(xtyNR#fl+6&|U=YgKr6e;laeDW9x7pQrM_s=|*|IAlQK_s6Pm zEfxM+g%?XW+4n(J(0HkmC<#g#R2WZE;W;XtrNTKXoU6hYL|oVZ!U9!*_Xq#`U^;A! z)c=WzWwjXw(^UdV_>OjXoa&ufEOUX9xD8002T++;{ynb@IZzNuTkMWDtt|aOMY260i{&9njbe52c1p) z1Q8Ec;R!07p~7pvWcE4%Tw%A$|FjCL7;ZiDGLxr12*v}P)s{;I>!jDxr z{HwwVFsg8Q6>h4+T||t^q%_-sssNK!c)kiBRpDY^7fz5;IEybi$Sil8ChnZoCF_5pV^#Hs)RH zsmq$p@z80H>2o{{gL5Xri{->7HDKj4JT7w{aCZbv!j*ta!8G7DvjLtYYw?bg3J!Fzr917g8|B&vPxDUepr``Ju$d>Orbkb;Ya8KX0U3M|{dS8<#1M;As z4cB#hM#-1x=A6Q(T39oz6wF}og*A|<>Col1Q6Dn+A(W^Yk+Mu~? z@+uD|XXmp0t2||j%$@XB;XBn2c*0Wgnl{a69G-|6Zmb3v` z94Rfwny<&$r#4Gj@98ZJ;J4O$l62t*md0vM;JV68n-ORj+q~IR3lq}MHhWqMw|Mg{ zo(S5Y*>S69B}@+#-G)(DDr>aOvqnha&$f9k2zB0Bg^Gr&Gp>(u^}y8&SASeXaSg|n zf@>VEskmn1nvZJ+Jq|?SH&H%ngY1dqi~O_ zIj#Y?DtsHKse-FEt`uAuxGIi`(~QS89oKAJS-Aef^*65QRJ;$@Ok7#1aSb#_aB~V* zJ`ui$R%|S;adDb*xN76-f-8DFXg|bhOt@^g2H=XGfbh5mY>CxWbO3{Wya;?QJmx99$M#PbxurVun6ZV|5S!+WEo1X2rLf|srgk}$phKK_JVmRdRaKL9@Y zT*82wzkm~B{NW!0r_ehI=Y-9l8F#^mFz<&c*lQC{JPw=M^Fy+uwBH;JqCHaNW z_dEk_4f!KWN8X7Q{m;kZg&47?pr9zHDfr#iY@l$f7*#jv@YKuiGP%a|>5rLFq zk)ZLXSi=4kBX<1vCsgc77AaPCb^4-rB70)&viKuNI|SxY}D z%e9)qS*{i9fj`S7?Ee4>(+4Q=H7=9`I*pKw7y5Gm1Ymyz5)O>uEjdAfl`bsc1w-XZ zC;1~XRLVgAPi6n^7pTaP|MW%Sh(KMdTRfJ^7}Y{k1pWr4P5?&$kC7`arN3xE0%o9g z)30ejrHh3B5V4Xe%2}>pE+=UGOT>@&i@#VrAaSl3u@c4s?~_wZUtAKn;R{L-Za^Ua3WQN-iB6Tc zhUo9~`R9v82DOnKUL*RK@L?M;RF+V!$pLPQ4^;BuNb!NnK0I4yJe1;iBp?gC9*+2< z59lm17UU1&(*qBdu=qUT2?30U@E=cOlM#WGLL$6G=c3a@`yO~HRwBC(mk?Q}&4G^viuITe$BQh?p4<8h9Z6A)ijrOm@6q%CZ@*?YO?!$Q^XY1<2k3`(Xhg*rw zXrK>w5HYlOat>t5IRvOlKmvD(&kqctI%EL8k}MJi_y|SB1PlzOW=R2TA|Bwwnc^1= z4ARN|TSYv;hmVUnFi;mH`(G9D03UuN=4d6Yl7OzEVwP6)5iW{FP>H&DF#-2QT+xTy z$Yls`jS&g#A>v9JB|*s|uIR&O`KKGoS_S(gu{Gf#{LFYx=>;hs3-C~uxv{J@Ik5M( zfh;x>@gWVYy7?QG9#xTkYpHXEOUZTMW{ZdgAI=wFD`6-6ugZ;@!V|tLVl;CJCu{x? z2_XtWb4TQZ#eMjph)eiz$lp|hVtn|8=wH%@n<(N5UXX|v>c#L9n*6M#^hfb z`0P2!p9-)H&0q`{tE42Kcz|z-RZOhXnzF!e1mJSOQdc4s0rez`bU-gG4=hO!(gzWi z`dW#v622k}bQC_h0ti=S&Q64iz^7z+hRUcCuwL=U7gPrBCMSr#=r!P=fUc_w@JO)= zOF8g5a6>VNqy!OuF7`a4f3oHc5Msp$qyU8XiH%6gfj5EEx{@Ft*W;?P?ltX9elkGu`sN|pfWg|&bykcbIT8~0vZ7P+UO z9I6BStTQ`%@f*D@mO(#1Xup9ta)JODU!Z>jO^?muo5f8vqA> zVME{`S;$6kO(WnQC{v339o*Be0=NRa0vW=I-68ePAITynMc4$`^h{0= z@O!`?2KYAxeqT;7y`&j%n#g#iA|xz{v{I!bTuUr6h0)MA48}u#DPNM06vm|ZD~w3N-V35Q zA{D_$i13`uND!aqW8mC?cH9kEEpjRnA_?6?kN`#EYbQ&9Rxw8LxzQl> z5a5OZcqs6&c@gw zE+~w5Dmg+g`wR&R%z@8=rz>m;{=w8g}wxyg=Q|0PFMa(j8&>K z!{I+HpbmZoJW#>-WbzMWv|j^vSNsv*H^B4d&Xb}~rUYaK5K@38#)bqT!V$m{Uy~9* z*vHr4KN7gC$d@EWN!Tu8DLmn5agcIKjBgb1TVmh!8{uRP5o}_BGrj=T16ti^_;(Zi zrB?VY@D@e9z!!W6?Bi3wV}RQPd~qu9$N)a}J#Ygt0mR3^y@~K)5vqhzipK(XR~RF{ zknjzWt>6ZD9Guo-c<>7ux1t22Rui4-NeA(Hc*_2RWPhTQzpu_v?>Qb3238uvrvli> z55U)DPLB9A6M*N6SbD)k;B5-02Z``iztnpN(_miWyq`lh#dBg2Ov23yk#R~d zAUr|j6VewG?k?s4ZV-fU5s`053MayS#rT4K@$DA-#tBpf16s4CvXpaMt zT5?IPc0mq!0|7&jYDx(GC;{}N7t@bk82Ah9N+#oj6h`~K+?8ylRsoG$#r1KTvUo6) zI4hMu^{!L!K%B@2q~4WqJ-L<(;O0|-dniQ&oCe%N%prU*@Q=Xl6?q1D8nAC11I&O2 zDndB$bl{(m0I~O`2xfpVR_Q!}X97PrN~~Fn$);Jrg90K*2R<*$C-nSm;L36{CHxcc zc$u-$^K*dbD18b1Gl0iER(fv`=7O+QQ5*x$11=Vjp!vZ2MaCk1@dDtB0eB(swE(;b zcwYcs44fZ;Gl749mMqtLyl@E!iZv`vb_qFxLp72=`6=V~T82XSVXZ!-B&5Y{o8rXDKV=w#v}&^P zr@p8}lvwv#U}@|sh{}dCI`E$j=cFQ_FJ6ZLifWuN2bPACQmd#0EDeq&R$U5MQJqux z^}y2DRPwI?ygr~W*Z?dIRVDw5)czFRJp42p@h5P!y$M*!a{5yG`FJ<(H^V=Wb#DO< z)BzG!p0AIhrQaRYDe76b!Vlk%K3QqkxZeii$N-!JtS}Y<%xyccPwOdTpB7Wb$_oor zTFlL|7V~G+9YGtT*@3v|{c`syDMWUHs6;Rdq89xQ1_&s-;I9^)QL=f(F+5)T6JM&$Gh97^s1EpRBg7x)82M6)0JG(A{~}|h zi17-|0nq%z4!r*$2>)r^LH>c`4#Hv%A+|%fr(fW>=P+o}*jDPyngL5=+i{Gp(tq7vBi zdOnP)301FdpL=iLci(&Wy?)Ky*FC%e9Q(id9R>D(^E(FY7j%5YJTZhHbM6l!@mE14 z`hw^o{b^{?hvYa6YC4Ye;q^L>^5Nw=9_qu7=u3ID4`*<^NQm(<4(d0=`tS}N5A)$% z-9VfVU(n_8KKy`=-T%it0S8lc9H~!3j^EL7ln=iIjOYJQA7h-yLq2bH13HfJ$-mJJ z#QN~xbUe(5vpo)a??0)_<9%}Py7F(VC!Rl7>OnSC3{8(W3yvhSFv>OcXO`a=S>#)e zuuY-ed(DCsnvC+A*=jM5+M8J}PV!GZ%3>07zBTLbwYi{hSjh9xy23f-B}l1hpp{2i z;;fZm^W5sypgjMCNu^~a<;D4xg%w;&_zZlWwUW2bEaZX~z?Rbw&j!Y>(b7^{SjA0A_;#Tl-}$61lsH|Gblu$+_%q#0@ONp{xo z-sb}_M zlM2`ZYVlKB1hq%~@M7SH_1iMeFnegx0e7Djx$4fa^L@nWly{bqxQsf^vXro{L+&o? zcbG<;W2vD@hs}DjoJ=#%v9!>cfOymh#ngC?rGz#DVuL5FrlxZ&#`vuV=I~(vdztIP zIgH(?s3UH*Zy<*=Lc9kjgL0he!K!QHdA3s&uT#NAHU(tMMfB3!-2Xua8RFHXORFwWuc#-&U3Sy@6eme zZ)gOc2c4U*X7O&|e;dK)yHPh^vw8VV_wlnby!=DGd^q%YZw0Nr6+qBiLC}AE6@cGc zLF|3}-U>2k>NOUFoV0n@SfcnmHC|)4LudZiEF{9qc51wiSnr@oH`pemueIM`+l}_K zWi!)SSAsC%9J-qd&azkOm4UJ` zU04W4DFkECcKo6&NMpym^fCte4*0w~xPhP+_jOPU4ZX#_>$9rGOsB%qrqP6>EQqR` z<^Gdfp)wt+(HK)6*#4ON;l+b~CFhvSCwh_^TdDCj+ca$Vd9yGVY zl-(>=fxGuC&Y&RYi zu~*&8mY1Ch%)9fklDc_SSl4C(qe*_ZHFUH1z71eUQ9(1CMK`-yI6iP0(!){=L)u8~ zVbLR$HnScE{2L~cG*;pZ=2Y-_&&&YDzC*~N>K+!OR(n*v4ovob)uCqYf{GF>uqZVz zNWvQE@zmTa)YO9|b3e8Au=wOwaHGJLN^7brB%D=~5NjUZfOhv16W+d7mE**=wb}Aq zF?;O}d8a5*ohTO}d$L)S$KWWN$pDf>*_;$mBPSbZA1BQe)JGm;Fx{XB`^clkY+4A2 z)ZHDN?4u4Y4C){?2*L?e9t7?}+RVug*V!O>sb~;xQCYB@WfN|>r|K^VSUy#~xDuF0 zh!^k2*)C3_dHv)x`GwnNJ)Fy`Bs~#$w1oEv@OTer7uM94Os=fc zCldslX?H()Md-**vw+ukVIF0N$nj`Gb%?A5H-bA@pyyhUviW_8oFiU$Nulyn`WeA6 zc@vUHrT+5%MGxI`cjBXIc1W`T2t!) zngrpeD181oX#EiR5wV)i43W2wO%g5oDxD4ql3D~W=IdjQA4Ud^zQOa#k@6!Li?27vNj8Uk7Z%EJe7sQ;~^jp1^>aU(=}rZy;FFt(E^LbeYv^|9#t zoZ+DHVAG-qIhqzk$j>Hh2a6BIm!Ld?y&!p`*O4acK!Z8JEfZd(!jSZFv~Z8r=$f?4x~+d8t%9+X zJzpK_O8(xudWo3B8xTVUE$Lx&`myvFlbV%*He@MUrc=|h><*hvbGQahOaI_GKiyC| zxGOz2pzi0p(;rIqQypOmWbyqFIqulLgqrAv8AY`|My>rZ>`DXMGgGs@J# z;>+tQmB*=~LNP{L%ggI4tQijUY-T1p)sf}QQnf5w#@D2jE2XYiDwI9qeRUL9{YD+% zqmFS(y{mt+N>s<}|uHUR7xOcr`L2fJN7-@#=-0VmW=1qs7yr&uwP9 zcTY_+2O8cbRDDm)ajoc59rd)h7R~Igu|=BHOq(Ms!}dYX$>-xtf=0K+ZNos?Z;2O756K&#rn((DI(-dI%I%(XOTCOQTAm5?s zTVddVo!TD^9s_~Gd1>Oax^W)Kv+3u5X-@|XV`-O`>?Coi7C{GYYbllh@peARP6=~u MCf8p(wI%)j59rB?TL1t6 delta 82271 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≺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 T%1W2|P}&5CS^czGc`5S$xz|N| diff --git a/src/lib/experimental/error.ts b/src/lib/experimental/error.ts index 69e73d506a..08a6f47176 100644 --- a/src/lib/experimental/error.ts +++ b/src/lib/experimental/error.ts @@ -1,10 +1,11 @@ -// import { trap } from './ic_apis/trap'; // TODO why does this break bitcoin_psbt examples? https://github.com/demergent-labs/azle/issues/2003 import { trap } from './ic/trap'; export function handleUncaughtError(rawError: any): never { - const error = rawError instanceof Error ? rawError : new Error(rawError); - - const azleError = `Uncaught ${error.name}: Error: ${error.message}${error.stack}`; - - trap(azleError); + if (rawError instanceof Error) { + const error = rawError; + trap(`Uncaught ${error.name}: ${error.message}\n${error.stack}`); + } else { + const error = new Error(rawError); + trap(`Uncaught: ${error.message}\n${error.stack}`); + } } diff --git a/src/lib/stable/canister_methods/heartbeat.ts b/src/lib/stable/canister_methods/heartbeat.ts index 80c40fe044..71da83c97a 100644 --- a/src/lib/stable/canister_methods/heartbeat.ts +++ b/src/lib/stable/canister_methods/heartbeat.ts @@ -1,5 +1,5 @@ +import { handleUncaughtError } from '../error'; import { executeAndReplyWithCandidSerde } from '../execute_with_candid_serde'; -import { trap } from '../ic_apis'; export function heartbeat( originalMethod: (this: This, ...args: Args) => Return, @@ -25,7 +25,7 @@ export function heartbeat( false ); } catch (error: any) { - trap(`Uncaught Error: ${error.toString()}`); + handleUncaughtError(error); } }; } diff --git a/src/lib/stable/canister_methods/init.ts b/src/lib/stable/canister_methods/init.ts index 3a3936d64b..16cc6c7efa 100644 --- a/src/lib/stable/canister_methods/init.ts +++ b/src/lib/stable/canister_methods/init.ts @@ -1,7 +1,7 @@ import { IDL } from '@dfinity/candid'; +import { handleUncaughtError } from '../error'; import { executeAndReplyWithCandidSerde } from '../execute_with_candid_serde'; -import { trap } from '../ic_apis'; export function init( paramIdlTypes: IDL.Type[] @@ -36,7 +36,7 @@ export function init( false ); } catch (error: any) { - trap(`Uncaught Error: ${error.toString()}`); + handleUncaughtError(error); } }; }; diff --git a/src/lib/stable/canister_methods/inspect_message.ts b/src/lib/stable/canister_methods/inspect_message.ts index 0366cf08b5..2de4912147 100644 --- a/src/lib/stable/canister_methods/inspect_message.ts +++ b/src/lib/stable/canister_methods/inspect_message.ts @@ -1,5 +1,5 @@ +import { handleUncaughtError } from '../error'; import { executeAndReplyWithCandidSerde } from '../execute_with_candid_serde'; -import { trap } from '../ic_apis'; // TODO explain here in a jsdoc that the dev can get the raw args using argDataRaw export function inspectMessage( @@ -26,7 +26,7 @@ export function inspectMessage( false ); } catch (error: any) { - trap(`Uncaught Error: ${error.toString()}`); + handleUncaughtError(error); } }; } diff --git a/src/lib/stable/canister_methods/post_upgrade.ts b/src/lib/stable/canister_methods/post_upgrade.ts index 07074acf23..c4f742ec0b 100644 --- a/src/lib/stable/canister_methods/post_upgrade.ts +++ b/src/lib/stable/canister_methods/post_upgrade.ts @@ -1,7 +1,7 @@ import { IDL } from '@dfinity/candid'; +import { handleUncaughtError } from '../error'; import { executeAndReplyWithCandidSerde } from '../execute_with_candid_serde'; -import { trap } from '../ic_apis'; export function postUpgrade( paramIdlTypes: IDL.Type[] @@ -36,7 +36,7 @@ export function postUpgrade( false ); } catch (error: any) { - trap(`Uncaught Error: ${error.toString()}`); + handleUncaughtError(error); } }; }; diff --git a/src/lib/stable/canister_methods/pre_upgrade.ts b/src/lib/stable/canister_methods/pre_upgrade.ts index 3b28ba5857..ff3e576588 100644 --- a/src/lib/stable/canister_methods/pre_upgrade.ts +++ b/src/lib/stable/canister_methods/pre_upgrade.ts @@ -1,5 +1,5 @@ +import { handleUncaughtError } from '../error'; import { executeAndReplyWithCandidSerde } from '../execute_with_candid_serde'; -import { trap } from '../ic_apis'; export function preUpgrade( originalMethod: (this: This, ...args: Args) => Return, @@ -25,7 +25,7 @@ export function preUpgrade( false ); } catch (error: any) { - trap(`Uncaught Error: ${error.toString()}`); + handleUncaughtError(error); } }; } diff --git a/src/lib/stable/canister_methods/query.ts b/src/lib/stable/canister_methods/query.ts index 4de3dbbd89..bad6ef16d3 100644 --- a/src/lib/stable/canister_methods/query.ts +++ b/src/lib/stable/canister_methods/query.ts @@ -1,7 +1,7 @@ import { IDL } from '@dfinity/candid'; +import { handleUncaughtError } from '../error'; import { executeAndReplyWithCandidSerde } from '../execute_with_candid_serde'; -import { trap } from '../ic_apis'; export function query( paramIdlTypes: IDL.Type[], @@ -45,7 +45,7 @@ export function query( options?.manual ?? false ); } catch (error: any) { - trap(`Uncaught Error: ${error.toString()}`); + handleUncaughtError(error); } }; }; diff --git a/src/lib/stable/canister_methods/update.ts b/src/lib/stable/canister_methods/update.ts index 9fdcdfa37e..13001656ef 100644 --- a/src/lib/stable/canister_methods/update.ts +++ b/src/lib/stable/canister_methods/update.ts @@ -1,7 +1,7 @@ import { IDL } from '@dfinity/candid'; +import { handleUncaughtError } from '../error'; import { executeAndReplyWithCandidSerde } from '../execute_with_candid_serde'; -import { trap } from '../ic_apis'; export function update( paramIdlTypes: IDL.Type[], @@ -37,7 +37,7 @@ export function update( options?.manual ?? false ); } catch (error: any) { - trap(`Uncaught Error: ${error.toString()}`); + handleUncaughtError(error); } }; }; diff --git a/src/lib/stable/error.ts b/src/lib/stable/error.ts new file mode 100644 index 0000000000..94688c431d --- /dev/null +++ b/src/lib/stable/error.ts @@ -0,0 +1,11 @@ +import { trap } from './ic_apis/trap'; + +export function handleUncaughtError(rawError: any): never { + if (rawError instanceof Error) { + const error = rawError; + trap(`Uncaught ${error.name}: ${error.message}\n${error.stack}`); + } else { + const error = new Error(rawError); + trap(`Uncaught: ${error.message}\n${error.stack}`); + } +} diff --git a/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/test/tests.ts b/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/test/tests.ts index 90364cfdb6..61aeaaf8ba 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/test/tests.ts +++ b/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/test/tests.ts @@ -103,7 +103,7 @@ export function getTests( const canister1Id = getCanisterId('canister1'); const canister2Id = getCanisterId('canister2'); const partialErrorMessage = new RegExp( - `Error from Canister ${canister1Id}: Canister called \`ic0.trap\` with message: Uncaught Error: Error: Rejection code 5, IC0503: Error from Canister ${canister2Id}: Canister called \`ic0.trap\` with message: hahahaha` + `Error from Canister ${canister1Id}: Canister called \`ic0.trap\` with message: Uncaught Error: Rejection code 5, IC0503: Error from Canister ${canister2Id}: Canister called \`ic0.trap\` with message: hahahaha` ); await expect(canister1.trap()).rejects.toThrow(partialErrorMessage); diff --git a/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/test/tests.ts b/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/test/tests.ts index 535d255848..b6833fe411 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/test/tests.ts +++ b/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/test/tests.ts @@ -319,7 +319,7 @@ export function getTests( const rejectionMessage = 'Anything you want'; const canisterId = '[a-z2-7-]{27}'; const expectedErrorMessage = new RegExp( - `Call failed:\\s*Canister: ${canisterId}\\s*Method: getEmpty \\(query\\)\\s*"Status": "rejected"\\s*"Code": "CanisterError"\\s*"Message": "IC0503: Error from Canister ${canisterId}: Canister called \`ic0.trap\` with message: Uncaught Error: Error: ${rejectionMessage}.*"` + `Call failed:\\s*Canister: ${canisterId}\\s*Method: getEmpty \\(query\\)\\s*"Status": "rejected"\\s*"Code": "CanisterError"\\s*"Message": "IC0503: Error from Canister ${canisterId}: Canister called \`ic0.trap\` with message: Uncaught: ${rejectionMessage}.*"` ); await expect(primitiveTypesCanister.getEmpty()).rejects.toThrow( expectedErrorMessage