From 4bc149c20ec93c62798f5aaaad7999a914d75dfa Mon Sep 17 00:00:00 2001 From: zajck Date: Mon, 16 Jan 2023 13:26:29 +0100 Subject: [PATCH 1/6] Initalizer Facet documentation --- ...ol_V2_-_Protocol_Initialization_Hander.png | Bin 0 -> 157521 bytes docs/local-development.md | 2 + docs/protocol-initialization-facet.md | 57 ++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 docs/images/Boson_Protocol_V2_-_Protocol_Initialization_Hander.png create mode 100644 docs/protocol-initialization-facet.md diff --git a/docs/images/Boson_Protocol_V2_-_Protocol_Initialization_Hander.png b/docs/images/Boson_Protocol_V2_-_Protocol_Initialization_Hander.png new file mode 100644 index 0000000000000000000000000000000000000000..f3146d0b2d3fbe0a828f28e78dba1561f373b969 GIT binary patch literal 157521 zcmeFZWmuGJ)CD{yCL9S-5m2NNPyy*u6ai@vX{AR5q+=)p5l}$7L8Mb!+5nN3mK>#f zBnKGc+qdVu?{$6O&+qr^xj5&{$UJdB_uhN$wbmX#6(!k|$IczYU@#};?#QTNFvk=z z7&7Z4hvA)D!W&HRpM&PoiqaTNLD2E-hlk+x1>-wv@Jnv27>xG|3}y@7@}9-}N@@=C=KMZCs#})}0xsQ&P$lF3(ke{NyXz3pxVNg1xzyswzG9em#zPA=N9t zK4Qs6TG7$xU}$fJKC!&Yz?0+9n8Dx)RK`CJ2(|K`ZLUd(Q*6z`F^i`?9Q=+ z1EbOP3Y6TUo3D?K$yTmLcfS@k+1n{Bv=9K0J3!*A>fHbgbKQ z1?#*YdJuk_b`siB{HR{A;*zKv(o#qnV~i8ucaKYzTUzx;ZMgTu{xI>XCBWsflci0e z+Vk(9|4(+k+kR52c4=IFSlRi$g(#s)eZGijpzFmTQhYrtE30sX8l&-Qa-d@d@zt^1Q0v3dp9mNsqvy)%@nQ`di8 z3Tk-f(|F^h2TS+cG>WwR94aXmg|6Bkw8FIeFh8Q9LQuiVW`!4A_M5G%ilNe(TTe4McEB?XbYZ#9mJqh zlEyLF>h+;{FV=2e_1_(G1apf8oy2U>V`c1J;x_-TZExRj*u5k&Mpv=Zm-V{gG;YhQ zM}D92ZfPlBdnwa=l3qvm1F_1ZZFq2}_C_MDlH@|Ou0au9&jF2k9xXXy$7g{&w&{@y z$GI|`{<%|!C=>_0V2{a9)tfe#;o6;lzB`$qyzd7AEx=i{R&BK#Sy7H{(N|$hY76>O z4s<-nVhRNw|IB0YsEz1-1OJZs{QSiV>7yFq{i@9yu6q%yJM*=$NU25D(TbQPHTMg1 zu-OI$Noj+lBd$dA;S=&H-M`OZng$7;#CyGp7|x&m;rS-RsNVa_>?6Z)#>Z*WkKnEjNj$YuV>0Ty}N5^=bcx3 zy#xjG-+ZIt8e2-_ewErz6x+B$tl7M}`)lirsF}u$;2D;cCd=$X>-`v06YVj7IIu=W ztCdxO=S_v)RtzTT1ii4U(PvWM(@veuP?0+?JUwG{rIAVu&155{dQw=A{@&Ijmld6_F8?g{gK zh^){WgVFHc*VBUzXxrdy)&Rlowt9}ZxA8ki>p2r;;Jyp_<*rtLS9G=~-yA;1F3LH# z?}uR&{4XStr18TVS`C8j;(R=nf9O<2Q&@ZOZPhlOkF716-DueN!$TR+UD=|8d&qbY zkffD}$4q9)jp%KO;*mw?*V3WUX| zpYA8eeDHyQG|4dgleDp=?G-s|GdUtCX;-e-tC;@Dz;mJmR#ED#>qBj0bhR1^bKma6 zUYj$6kEfxPc|`)&qepuB}qoB^?8WSDBc4 zt1Bg9@cq}UR7l1yYu>XNXT{j((oWx+vgaI}bzkV%9qQVRqdIlm&=A zhPjq?BLAsyNBjU|e)XUs*JNMjj(`zI9z|cSuHn5YqS3&JaKX-Xf+a~sXQEqB-W7{a zKV7h6nR0}5*RZ(S9uCo7Hk8NJ0^3g)0JPLubggYsuJS_?Q;Raqk}KIPS0_HcSFcsp zqIc1kv!kkgq^Q2V9Bq#BlS5?}v4=d-c3nfjZZ#8~s7S&@s>g*=h)M&!QZdicUo$Sh>+!4! zr?1!M(=Yi2HPnz6)mO<9<$A@L`duAl^VjM^k5g4E$E@54x$fv0RV1G3`72tIAV&OB zXyG>2szJJAun-(0w2^dR?88kuqqoL7ei~3!={EbEn|$< zX8VkniWH0$yXM42ye9L{uH$X+LK&WSI|8x89trK+kL1eoI|c?~T)Y(ATG)Gcb&o7a z;uFq4XDS_Xc3=JzM68*|b9GO2U;<3LjisqgS}rBa>uR_gm==vL0VYY~yc=n0Z9pd|chzGUZWshC-N^o7tEpv9Ez+cIem|Y*? z>RNex4gr{wzTP@}-pc`|Z@ApL*%BlP=QSkLGIl73*9gr0f_V42g~A%y1Ku|_7`?W- z5_iKKFJY4YQQG*TMaeA)k9uRW+}vz<$ci75aEw1JUIJ^j3HFTIJJNL?kLos7QwWJc}fY~O2; z08UF(3+=A#k_D_+Z?&j;ot32*&Sa*y*du)#q!h2>_(n|WPH=yu+EO!9D${&=)+KJ- zC1O=?5U|kD%Ja=bnWegrX3Y}Z>^=wKv3;4aTBsE-fvvo_xAgTE$(`<7PlKVduu~;b-zUO^lyG$=%$jV9W~-tALco0| zrAQTVy_C#SkiJjIq)wW~oW}g_vw@2OOZDwur6xpyQ$CgJJgX&|9C_8D8*3p` z$4Zqh$#&Okd+iA#U_#HM^&R)@GXByVqXa71z>ENObN2$11II$v-z-kM8QbgX4%rRH z`vuLVZpFEA1?>9lCjH~#Biac&MQL}mxRB8z1W#VOF_G`)PTq!3XCy`|M=B;_>mo=s z0BovcrI!|4glu)r?=IauE|Gmd#pMYX zWa}iiZV+C}z|HfsXdK5IHTuY28w)=KN6^pPOS7XP$9Lc5YweE?l~_K4K7+7aPOS9V`v5g-9J`zYJe7lM&05HaL86o23uo22#;aA! zhtnfR`P%YrAfZM%E^3?7oId0&{}<|-bk-g9lf_&Y%;(0YOW%9isOG~aV!4M&(qk}+ z(6L_`_&Ar~%0eH0ZfVN<(`%~q`c*8O$-t@m^D1?nQ<3#8MQs6R*^~k@6UFmVD26<% z$ICx%_IkCB;{@Oljxw5iR5R6T$qb1Sc9SI>bP@KHAS8d>omH4O_PBexA@vnE#Ut|s zM}s)n(S06>?@%;V^wf-3Bezzr>aT*2Ay)@y|`pScQuX}i^Db_kH_D1?l4Q1`((NZ=DERRze~*%U+6L`jSh#`+Wz zxEi;_H~tt$ulwNvhinY;wY|}_gv&YTEzg8Hq?Gg7-w=#VQNMzh)BTZVw&EK1es^g)<@E=}b&>hFa1MzgP-Tq|YMxOX3Z zacq8t=W=YjGh9M5t584OxYFK0&fPYA;Me&(64QD-M1kX{c{sC4F*#f6C@PajD)F!n zLVWK7POi<77&NlP4o7WXcw1#RunrFmMZ31(^Ve2qWgJ!e_4r0$5kd|fU5Sb9`&K?> zsIx55^-7YgKVSwmSR!XG@k&1T$4Ow=C4dlRzl0;li!T+{;K3M4^)7JR433kJpEAy!r?l*FPVA#QKi$UR9#)kS!tU5?Q9@?kZpx%qHPs>dGY29 z9bh}{L-8vJQcn)8?c~J1b@ghRr?cU1nv+1!c1`oLho|_eQw9N7M8@NF^REfzYra!%UB{cuzrPZz%V4X`$ZdC@G9qd^B7F&=uv&P_~r|R%!mO3 z&Q*N49d$T5g4X_B$|O7KUT#L6IYqWTXwjIA8t~b)2HRFaBbWB7E4GuhRiR@Dc1&~E zvmbtwxgG!|!zi($T68-vopi4*qUkB3jaV74UYt{uWae5Ccq ziNL=&sXF?*3Un_9nlw#@bg${Fy-u7HdJ?~{?y{O=}SXSuzo zuC=_DUNsDlsJbE_dq#`V5l1L#C0@5duyMQE14tF))r_5Mm5VJCb_k>KRj(VMR0tqq z^u6zE-k)x{I$hn_`%Z{fMCv2-?zZ#Bnr!Lv{g3SAqQ&p?+y;-=-dye)-G$Ly7_O!dR)>sgrd6vtI`C|?( z=O?Gu*u4jhcs?sKuMq?cW!*=|P}f1Y;t)>wB|(_)8cPk&M-)#&MW`9nZ#A+flS6J_ zo%U=dwWnCz-Zb-U-$sm?Uj)5gsC5<*cCA~tF#ms`^7Z?`xUh|<9`MjyHrOQJ_JHx!qR#_SZnV6>Rk5Q#`+~ATX2g z)j5cxfqr;yt#YDN6t`L(!*6@zuJC$B9X=bLAaAa_K!V#=bT(jr9-%mL%`DCh(j``AeF1WIJJ%(pQrz}=}WzE*$!BqRV zKn9wkwnho5EvU}Sp3@qlDQSI#$m{$OUidM|l^G$snD{4%abTg~qL-rmdUQJa zbc2`p#+_N;Ge<5tt$ECE;v z&8mkQ%}=Xdb+EAVwHn?WsY&k}Kc%}Rdzj)}RHM{0wgkQV%fytb6#64Ef@5`9zr3@T zL`JBF1c+pr2g00(`SL9e?7C4#ofl5#QHo!xuk%Qg-1r@&ZZ($L&KrQ68a50z{*oUl z*7tr)ZMWvZ_UE;NsRW!%>n}-Sy|brT@V{Nh&-d-unMM=M@aM~ho>=)3r`u-IJ%p9S zUEL!0oSU7em@9arfj|5Egb0!A+6OUV$N$!o&A>&w59PVJgT4ngf83Y&fOw1Il4?e) z*g>P#Ih#5hVMn6pq=cYSI`ty!J0JzFpsMo^ZNP&)GPOm;hKk zli>yRsPvQsj-VMvmL~3c1o2XNRjb%+!sqD>Yy5ej z4}~UEqygxmf6^1zC+g@mzrI{JryeLO5-4J)h8mDehKgaRlZZH|KBu@n$I_na`J)eV z3s1$bp>B$;0k8a;YsPLty~J0_3<+6O!OK0J6}G;30-sqz2($fvHp^)5?$&y-n<`Xd5 z9h#oL<&L;I?}z$~xXLWguJF&#$;@k%S8pq)^@|x#a@Y=Cm0jOh*@1@mJ#c<46@UCS z2>LnFH}zeC$Z*nCwd@r(PdoQY1#aT5gwYKkTiDI;E|ys7Z903-qj8b(QC<%H7P^~KpPbcyaTHE=?dpQ*%eVsAHS^+kV4gnnud_8t1H+x zzHdA?LMIv~QCog8gswy5X=8E2%XN>my{pa!S^IuM@{790L_2cPa`Ul%ff-jyyG^iR!~t-6t5R3*vWs+IoJMnS&@%Nluo8CrS05#9&GR zOlOKb^w+;SyTo?-F>%i>wJfs{Q(IL<#WE3}XM~j{{`y49* zq>aN1FIZ394#pOKNzZZSknOh?b;`X~l=dOht)aFsfoLpCfp^-`G;Dh-E%&ZdLp*-2homM^N|dq%b|lJv?j)k|aK(v$MN%cqWM#xQ zzK?0!Q10eKoylbQ2X(>CyfHmxFvb6eA;n?UbV_Vt0a%;}mo8QB&0eovvn3TEK^woup z1um|6G<YDn1NE zl5nmI;z<=EJhc}05XF#Hi<_M>cdJ&yJ}-ojGy=tG)$P$A#5>nGPdOWnzp~0_aTD>d zE=S0t;>*BUK4m|I6&v~{4`gK@np*mHQ;e!q5eKBc(cIm+G5k&>s0PLlaq zS${!!)>8_Ko$+**zdnO3rKT`-_z8r&#`ZpcWkeC|1_iiM~`cvO5X?^ z5G___UNs~1Nd}B%of=Xt6c5-nZsmaDHTrEX|L$5eQ2@HLyo$xa%-uAV9VS;c#l)CL zNfQv+OMl)ghnbN0tC!3!Yj1r)#IhPypP`3b*4aDLv7O}W&19^{Sr)`UBRPxCgyEF! zS8nH&Sw8MMS7*>A#vpsE`AnrCzS@a$ILPl1WJPq?@nFo%LTd4@n<}G5WN%V=3&2(0M>#?HF=JEDs9cks~ zKoZM(Af=r4?cFwF`n9JLG=KcqlchMDn5EMf$mydZBA4CYO`geN@!%RPJSVEPb@4t4 zNtnMa{Tk?1Y`crMR~LuEnkUpWrM5wf()#0>T)ac=(fTEwHvJs4+O*VtgMp_J2tO%M zrlIX0`TX@tPyNi^X-QISUGwQ|Wo~#%pd@gACn1Wij`*4Fyw_dnzG}!sAum?DPNZ;t zTYFNMm@Q27ff$_5M^f8~l!X%#&}Jr=re`a4q1taDUC*x`Po3F4{EN%Cap|BUa2nCpvG8 zPw|&A&~brjJop6rE$!=qubClETea;{dV(1A`@FTwI=!*)MpK2&8TO);X&0*a zAoFQPRpx6&EM_D6?e2}z=5t!ip6x+MikVBC+_?7&t3s+Q?y53y`Ym|uUO^7mW|N~_ zD->u}8d_d>l*upp+P6rxa#ikQ$NGH2c@&R~kMpL*E(*Q@WXH0|bsw6&yV)s_X-aOD z2g8CEKKVPS~i3Op2 z)RfJ0^h0vV*gT)ILe+fxX|drsqJn*^7&K8WVrvSA45x|@m?Ub)Sts2hvN@&Xi`iBOLj=Y~+Y0z8in`=i2C!+q!$Z9hoUh{34wR+?ei)t4 zZ@b*IrM3$|AlKq^C{##AF{=??&&}){!CUo6L-mUkht4LsbmC*XyU0>uR#=1qVn|UF zWl*E?J6Mk=@?)Xt)#ufxbOUYV$j)D;j+yUO;4%b;UJ&lHgY40*$C)XiXNS5Moaru1!DMww5+v z7V{Z{UF5?Vjk1x?Id?e-@)$t!G1wDljI%I zR>vn^f5z1tZ=4Gs_c49r7eObSoHyO@*@HODwp7?k$l>1PuSq@g*bSf!^Q`h6kt6Sl z_;+Yhr!T<@%e&WhXobxQ+y2EI1g{T+b1Q(wjG#0mpZv4fq-DmOk5R%$n!S9{@qV4l z4Tl^sOSZPd6>H)WJZZVtv|Gjq;5Vr2^WU6plgrx&Xpu!i^38cwt-=)-RDE4%HW3Hx zSo!#GS*ZoPj`sjXu%Vly;af}}{uObADFw%IU#NiaxFlWeW;)pExGg8eom0U}Ggex{a7%=t$(RWtc#Q zpxqI=Og&V>|D2Pno`rV%ri@Hk9|ftKX76JhYu#HPUeDd4TYGs(*%k|a(vJX3yCU}R zl{k^HfLr=~RY>;0zhLc(qXL00aywx=r*_OL;K-N@?1rC z@#1R><_7 zNv&eTc<(BK)%98-$ntt_6Kj5=Ov@7B(qgePzxv!C?uL?#1~q#j&IeQadsF9gxL@#V z9+IcOmkTHfqDEm=$_RuI+mZhCbT{@e2mcSC3$nNh1s9JM!7k3he|R_e!z2cK3*Cj7 z-qPD8G8TjN%=E-lG4o{PdmHa=c?G?zWX`{{L2C8-ZfCDi1z?HkFvaYX`DpjL7cB#! z#cB^yHHDiy<0@+sH^i=k=8Jg8XEl4U@Mo?(ZWb^X)*C!3efo9`Mk$jl^Og*v9+#+t zQ_pFr`IFinR?cer8B!-JZ#oeN7t+!C9JM-}E~nNyB3lYxeR^S8bm< zcI)omA5yDdgrdlgDvg~l@$uXBSid%b!!ZY>9wM;i2T>6vxc8Ldjfx~R<18o110jsM zi3rC);s^0OB-eQa1zVRBkENdK^7`7hFE8FT8W9c*7VUYGSPibX9_Z#*|9~6`3Wa$H zN+X@>X9uYv>FELEsd#69575+^m=5=ykgwk9da*xnt2-qm#~25J>X*%d98Rd$iL81< ztpv(`h}eTOdZF$*BR$!MyaB!pVZJF8J6+^<@63@pq0xhB7bUIc#OmF9@uiGc5tIJz zAcePR_Ml~ZU9$vO7?LF~SOJI%!FlsPXGn@;rgu<%1bqfeOmtFN78$do1R?;tpH6+F z;bk+xtF3FfZyWor2K*T3%FmUrdYpM9Gu~rqC2_&&b|9oAc{OaV)15azBup=286C&` z!^H>8yENXRY%Ry>O_7loNEIl_x_-U}2Xyrnrd@Xme5gbh|AE$^y_WQV8c%)U2i?9@ z+~!Hb80v5T+MYt7T^}7<;ayODV23Oui&2*p21eS?uSMSS*qJi8Gtw{iXwQWHu+Mtq zSIG#A@|tej5y&yN8<%FbXmw)RE5R&M*PQ11z@RB<5gDMs`Q?E6FGTSCHEDrSOMG^_ zU70RSrhx0k<2?_ea`6zPDx~s+UN7_j^g_j}o26u?PAQE?Bu*Jc!wNDR_C)UF`$uOv zch;F`Hg)P9(1_s=|E6$CXf_AX@6u)o_45*Wfe);$NxuAj+bWsP(RBbZNtnaF(BJ5+TY;nxk6tHo#>wQ6kJ zv=nw9eEdoOMUHX9bnVYICjI)akfl6~RyUCmZ`8DbF;48f<{hjAfnPmg2NJlSp`hVH zLB96(d}m#=SxIf0aB0<=Q&E<;so9@jpZy|RXU`N~(!LvdWd1%d6dURNf@}u6O$zPp z^8>*(nM0g!oLOcZYE#eTXl6YXI4u4{>&+R}p#@^-Wr8`ZyqH6vV#UgJd9I z!Gq1(ADPXs*;^PD&BTk%*bVQyM^oK7aOy^=e#Jzkz1rGI6YTu-jxj)C^WoQpL=FFc z41^PGLhkT=zuauR3&Gqma=-brqFOP6&|Nv zzt`z_SEnTF%=%A{`=h3csY7K8pcm1DPu9uTzZFLnE%ABvl)lH%MX6*J4zf5O@T z_3CHN%)b60_uWm!*ps4#P79S_<5Ivb7RjdqxX7B&)eYe_oc;3%0(*4Ewz&tKX;i$T zkIUw_WI|rf(rH!ctzL=44dkt*o^@urVR7v#f5V)e7@qm9Ly{{*{@t&y zw`c7pg6~%b2Q-gpnmKmyUjuEzEd@?bU;F5 zd3`~>%sG)?vQcX8J%w z6^XhkI_iI7=b*SNN#L-sTCt2C+j+#1;xTfDNmDcf?kT&RSdVO-NF#eu1ka%nc zPT)og}Kpr#psVOwg}3-8Jv3j~Eu)zE9WvN8RjJl`#+tE+1> zks=D`l%^FZ?&|7Z|K|PBhi*deXuPquQVGr5svEK~Gkq8RQo;|h8-f$yJ=`iv#JLon z$VMe|agM)-k3A0v7M>-II>aa^A8+Gso^{sm2a!IPn{JF4yZ1rh1CscV0lCbJgzOD& z81IEX*5QQJ68lG<-r#Nx*Yzqhn&294dxm5(wzPK(yu=T5f>w~_ zPxl>qFS|fX5w@*=JUzcfEaY~Gbg{T*q^%dThc2*Jj&r@vAK6~rSr@;&CjPm?v5_=G zQuDIK#SVthKKX9foBe8B^Ql&jd#W<^6O6YVD_R`0|E$y3yx7Goetk-=@mvvYc-5eLCN!TO1<&M;^C~XhiKCV{J)nD@K&qmy$jf-enucby8t{( z<^Afdwfm5)?su(LwC5*UfDomnN6M{h#zQ-5O8Qj;0hi;x+2gVq-e;sec5Ev5S{Unv zkTvo9YW40?I%qM7Kq0kM9Q6ycw6KGnQ?(8zJm_FMK8{ZKAAL{k!ToFtIdLV49~ssP zt#2@4$vV=`Ug$8a(V{kF8Kzq83HG#X{sznvav}i_r7c*lJA85*gQ@tt8H~{V&YA~t z#gcuQ;Ae3%oOwNSoZbkVrrYSYHOUV?(VE9uD<&L@XM`<%=?7FwDRekaygTj&th;X2 z$H%VQkd*^Z?I6Q!l;dw2zsOp!$22YKJVBlYAb`Hzl-$JLI%vyz3sOT)Z1DZ7jKP6m zO6|=i%e4B>B!}#Ui642>iCglwdhOoNdg9MsklxJh#_fM-gh`S-g-}0q1+<1yA}k0w zno>oyaIJ^^#HQ&bKk2+%))|Rh{@(&Q9-GQzO3Z4iF-F&4wB$CF~J^ z+u!uY;}phC8KAbm1rRZ+Wqp5sdewRuCsq^vK_FE;&_xz~`%EGD@^a_1mO8~LtY?(q zsi9uVaaHRT8KdWATOlWeWk6GgtAO4GF`hSsJ@lZl0ax^~3}D$&e^6+ByAcRA+uVa; z@sM=`e&gm79Qi0`7Q8_QrG?w6dFqM5>;yxtqhT|gDd4iHS#v_PV{)G`5K!cj$gP~a z?-b2Yl8t(JVO4SIVPnOXelW~wC^!;k?g8S%w`(M${3xubX286|E`OCt1G zHx;@&3bbNQhICxoIiH%}-y5m8lJ^Fo)0f(VD3+=}E9UY9fvMhBcHB+htbcA#a89l& zNtLoHI-CqHxk1K?j{KR7{^QzI!Fytm^Z~NPKQ_z1Hw5x)PoV(K5tOS%?jYoHfi1n< zx$+*UwU$A55RT46hfXsuFvy5QZ9a6igTI$A-JY*@Jf@=lV?B`5>W3t9j3Ju;S@j4o z8wJY4Bf4ITVpmFw;+;pZa~jnkMt?}M+LyFVed$W{dP0)N+n0#q$ZK5RJ&w7+1&p~= zWMST-y3z<_)tp$VeMj~mFv%}_+K9Y-e6l;H^JRqZVE4}T#zi+z*xABW#R+}54jPLw z=nT=Nt`MC0>2KPVwS=5jGtTJou^-kT=IIoEG9hT_gkPTya-)lCX&1U?R5zk3YH}z4 z>!ydP{6Nk3t90yS$lJ62+8*bq`~;f*x@lDs&3wWG*oe1u@gt=tF-iF_wSu{33v(GB zX_v%i!WO~=rGEuN!b|LD-JkzM5=>7DnzmQ+p~{>GmQSmN`pHh?L|==NUhWbibpjs! zLAqEFL!eTO(8aX#IF0jHX1{t&ZXf$W3m#hl)Yl|`jAmS7JNjJZ%G`*4q9c{O8OR_e z!!KkszP~?%gl>jmDkKMm)(Yh+k5FZ_?IKqGG?-PR9QiQblxS2l<3c#Y^|L@{B&l1i zo6hy-68K0r4d*NlS2%%osI>Es83YMxDn-dxrHO5olD0l|FyH}3Ot0QWqdLx{?$z!v+X>9-Yl!e* zKYn_ex!$!mGeNflr|BqKLY+d)hmWp9vkmA9MD%cra`3uLQ_YR2-*lc4?YbYk&cNA> zgjO9-U=SlrvL^Yb&V^v1HX;Yi=!7|N#@csdE1=KO3~xk3H$ADeVYdeRuRau=uIzl- zkA5MMB6n2~n_b7MKXQUn-2QJ0KgezgySL{-Eeez60JHEECZ~e0qhE%~99y0;>NR^?d0Gf6VE;;Fu$(E6)5LKw)1lFvxYHBOg6#uV@bY!p z`X)PEx+@{&z|$mNh}Fz5^N6c&Y~w)VEFJe|aGi(yn#HFLB|Hvj9{0Ga&h~O$jR(S z576k0OTXG-dmY`aJ*hw=1@+$&%?k@fF9SPUgb*o;+zE{Xy;=lX65YF+)o+0#l1qhc z3L42;2D;%c{fII6?jg_jqYP?r2mTTk|Hv?RHFk107c44sllw6&$QtRu5!p<$wnl2w zc!}jCUk|^a)Y)`W?j}Wjh?#~>=MD#!Oxth)^ZJfKbV2?>pV{?u3650L7oR#WcZ&T2 z+l^r%newSqiXJJm)`nN6@(66?4cAdFNKgoik-cD;#npngCv6u@nb4!JJ(it)^)umK54+Q*T z!UI6YWR$DjK%8XItA$$h*PPQ)uJFVj_Slc{h=tw%Bb8s1-t7^z+UhoD!YsE3C&%NZ zzB+LQ&9GF4PF|FW=+a=L?->MDt7nc?zlQq#$AF7i({Gob-@vYCqq?ar`t-}4l}~FK z%8H!WL9r7YufbLl=5nm(zda1O$cp*oC$L^?bv|fAZBGyDj9|z;?Vwlpt3@hjZLuRb z1X*(8wfiA=z|0m)gjsOkLtoDnlLgK`Qk}q#$%Q*HW4atSWENn*HoHH;+OWiXT>2t# zB%EU=haFJ5{5@9*CjCP#BWPNLiksLw*vg_yyxhynG$>(ke9M~NrvD?40kNT&4>DW<)jdZKa@RV z);NjB<;Yr1gzs~;;v$zXdX&Qjyz{z4b&q|**=VV#w$aGmVXm6!3Dx2llVYuA<_#Iw z{OZ!QI^FkwIv?X<_M_06CoGr$cjXPlK=3w_m>1ODAzVZ9yxuW;oIZ7`!1L?NoY>=- zuup$In@J8$3;WhQNr88(9z(x=mw`OZ)g?O3Uom32E0;Ml_=CyJ@gQvqnjhC3cP_!%0)IxRoh6{&^F*r%{+In>DYI` zrt6#j_a;Wi7)6;oyyFfXr>#dEQs{No_+xU2tG7tn_i@#NdfcW7ZNO1;Xi>| ztlObMLyKV3(=T-7aJ*A==6}Qh`%z?xhny91@8`=JCdG|BFzaLG^=N8|bKyD41z`<% zC}_w?OSu+JPOnq>b&64r^x_he=VnV$^lJ2eOe&fTH8I0`5ap^KL*o`LR;8dbQTUUB z_qf$4n?!=exmF)#Nvgk!N*QnKs|i(-mr#!-+sWVIcEc-OSDi-iB71s}Wp>95ZTf#( zrfw#n4uh56oAUYxvl}2a*^jSJ~r9PBB z=@h%rYV_eA0Ngr!s*z+0fwyNiTHCy?KTbD~}sTEI|XOI@CvdS&w=u-os69YaW^-&pDiv z^-Xgko@gWLp38rrh;ge?c?@7Yu!b0^QW#x^6#?VKDB1a-y~omxgJq8tmsP70V^;k_ z%JKyRH|iRwxXVC5&YD&530Zw815lxRU#z>S5A&QsR;Dg=rz{_1_TG~c9OM7i{_r`~^53mv*P|#Uy z@SqqgRy~fvSl}+nW`y0`D|Tz0W5MOiGJ0K`>&ZPLm+t%KPM=K|^7vDcoov>RS$VbZ zyhh0EECs89(^#4!3l_}^BZp{+wQq_?P_64?eMm7IHXP4#{)bwj{RvDk zJt&?R)a7off@E=T`Hw*i8I!n&OLX{w+bsEQE_=^|!iufHmrf=58qI($cHq#^Gvpqa zs*W^?r)72j=c-$`r(cA^xl#R+icFKwKdMMx+fPPKDMVKXAR(mPkBeJS8?RsXMskt2Vt{6k%!Z)M0hI|w!9GdU|^~p z1{Z*u1L#{hxqG3*4sxNJ9*a9zpA{;UR5(+!wm*VsF?$6E4bbV>ly86CPAwi@mNJ2hk_k0APD9v6g-vE>{6rsYhaXy1=|JMg5mP9205|; zwrbCX+>`?~p%TVXFjwt|uME?a7_5Zhjr!*lk`Zzj4`4F*Q45e3xH0}4s4P<#UPZ@5 zz(JWJy>5@d&PY99(kUjy*k_ z>LN}pBkQR}Kax!n&xL-G=PRKZ7szAx46aOn$WK~54e2CJB*M_)b2&?NX|7Ug4oUZIl!2(}*|St^sAkTwi6yZzM2_ZUEbr0Znv<%NYG zMLbYQwN^oDCb^z}67F>Ph(CAh<~X#vT-d>7d>NWZLK7ir2^(d$jp2PT=)ldnx#q&L zs5l+l%TH6=WUKsT%O}_&X$Nd5wZJ$>JqAnq-Qm- zCmXO?2i9-Le3*qcO+2p{*%6i;E(7&~45)Dkj6@RlvR69`Z&bC|nSQc7 z$`lgIKNj`^ckrN*Q#bYOC%f@+KL{-0bMSQrbF3;xa@q5;GC4SB57ohtTdDcQF(WQ~ zbF9>NW26&K)l*dPf)}mdYZt4yGjHn`iR|qP=g!SO!tuhO0;-~D#OL4j0QOKZRza1y z`rh4h<8zq_FV`+HAyrC?pbyqp=$9fa`YRVXtTRMr=K9Dp<<5UpF7iyh->?o>z1=k* z3)9HRT#D9tJ0RbGhHqB_jq$kr`Q4!L`;hm3pk*-EoR?`soi$o&mU@$&kD&=knBj^4 zyVZ~mM^hqRe+{frXM~xwr=P&=i9+Ya__VFQOum|**+h8}`eu;Wb&4GmLAk2?9Z-Dn zOD4ycsv@4M=DkaECE!&C{Wa#LLb>#jSwDE*WB!)4 z;cJuAMW7zn=N!+!Q-$nco#~v1+34%2RIB{WAf1gNrN;Kkd$1O)1Ffxz#tPwUA<%3Z z3e45(sYmUAXXR~l&IBMPq-v?R&&M zkYJ$?Qwv!;?0p&aF#4QMsV~<%Ul9L}vA~#_g;gW;8Tr^ zm8TM`f)RxPk(1w1ruoR1^UuQ`^F% z6w+h`ojQF(L*Q9}bn2TM4Izo<`QT1FO{dng69rcb4*!G-mPYNO1)XfbIdUjP*zhu*~et3#36(d!SIEISu zZKavC5x-X-$Dg5YcZf7e%c24mW%Q-);+-LBQSi-xp!$$y5GnWf{wQT2AE)h;ClFX@ zVFD=Q9>aRsI<~)hg$!92dd%8(XItv#JQp`3Pd_G=6RDB-XxXwVQx$34H3;6k9TMRG?e~ulKm}X(JNS#hzSh zrLNdfjA{Cg9IXG6jgLUj2fX&~YxRFf_2-0u1)vZikdgfi%pvhr?=GUR5P)p6y2N(8 z^rXBg0Gh1XVMLTAi(LRC(rGlE;}@9-dTQcvrkgfBCm6yu&eN;@lp+C8Lvx8%f>&I@ zhRN)io7!G|zv@jl8T1o_?`sv*>4lR25Q`v2`SMrqJx1>IjdPcb6cRNGwoWYfl!hAE zoU@QCcugO_?Pl3Cn|6O=b@W-aGa&K>PYO^wnG@99pu0GBE%<_B;wS*^`yV8_iuuk1 zJ)|tK!EZB}X()fbE$Am@+~wZa2hbc-&xQ7pm*0G0EI)Yy<`X$)FIrk4oi2qr7iP%w8^~m$0{$@^z|Ne*B0fFND~E6I)b%ezmaK^m?4;!az2Bg+b5F zU{nlYS~Bm!!&DRuP!3aL+VWJM-k)ynJRkXY`(|Tkn=YOtV>7tU*hyFru7S;nMg@nh z*=vF6xtr*8V_rQnr*H%|h5veRN}M?I18SBc9e9GawW*>}T&=7xAu}Qo1{%={|d4 z^tt=Gj%NF#?S>|nyJL?wePN^61MyJ{jDu^=0$#OFFb8TyWS9g5Do104#wk3^f)%c= zPL3=BrI)JX2}$vIr*ar$%MZ;b9E!nZyhu7%&sDE!PYUj(hD zweAJuo{27Q8=!elc<5*nLf{_dN_`KdAFORuBT>%bp=+N8Qm?1=KfQ8ebhbX|@vXR!0-->@Wd ze(DD>fF54fvCw)Ki@3=(GzJS_9YBj{M#ppui7Gz$>KQf1-ByvQ76ZqZsUAl{D8B8& zY(n*x!44Wx@c2TvMw1Ovx3k?Q_`7?<9NsRD*s~=;GGWJ*oQnB$e2%h{HGe(0B(MMC22^tI{vOd zOF;LTc$fM14msI;3tSKif-|MM%a(1hJqbNT@dbefNNf#|bO}y$CLSkdFE4!UalZrK z4C9No6TFXqc&C)hP;!o-(UokJdh+%}Z8kPY7)cy`3JC%B?X?cRL`z6H#wZ%s2GE@5 z*B}Yifs=j8$k*p+9r&|T*#UCi`n0DLY%`QG7XApun?;1xB*E3LiEw*(_V-#Qjhq;1 zvLWy$u9s*`)kDU_yZ%4yy@@;2>l;7roK87yoEAy8(kU$@6|z^_g$hZQDQj7??=$Tx zGL=Hvk|Koc%P><3*_CB5#$;c{7!1Z3GxNJ2=X^fb@B94|zSqZfxvosSm*=^c*ZsPe z=h@q{#xJ$r4j(Or=+uI_()UouJldo0A!9Zp`)c;GH#vQ#LEHD=L_7vHa05m|SAUOX zq5_U_cgq*0P5DJU78Jbbn||9S*M~4AG_ZDMaPMT^9V2;M==<&QI*Tm52*Y(HL8lmHpMOAki=7b!?3z-W(~ybjdJ*#T@+AB+ux zsVH?882W9&BEG&o4K9mDPo%F}#d*sAcg}_6UFQ`(0U{_lis=5ad9T6u!|vLSZNNEu z#KKUijn1#F@p*i{`yQM0?f{l7U@5Gw!l^Uak5aI6#U`Sea)nxlxZwAeeyK1>@dat; ze{+v->6uX6<3LyWoDekeEZqR3!*EvqxA#VSRSwEQv?+h!`CQ<2{7??YQxA zFxUr%FDWgRK_PO*$Kvr0-5obx(@E&lye7gfw8w}`gyvnmHvxm#VDV^0ydZG$naQ#< z)2I;)Rkydtu09Yc+VEao6>09$I(_tN49`hEqTZsQbT{g*x8OdilC_l8^Gka&_FJ1pQwwb6Qa&C+ zhqCFe^y9p3;Ep;pEKa;;*_F_1)Rk@Oupy9-NCv;LG-2$`f--fEJkS*8*T6f9UpT!c z|J}x&Q0I*1Ris5|GMFnLOkAW4=IG$Mq2R`SJ$u7H2^&A}uua4Fc+NNfU zl?voTW<|ATuA>nq%BZ*W+SrTD$~Mf78=pf<#}8UTBHVw`adn_~yyXWz=T$0p_a+_Q zxiQu`K5^?P>)}Ji5b>oJO>IYOqZL?R`;q1@#JD=eQ*^`rGi>L_Vq+H?u;UL?n$Ua< zpnUSkybhuBPD|cf0y+Uu|7@CuEeOPiCf!dBC=YvAShQz>1u2f8*4-2|69;G{fob!e zvnqFm-v|EsiH!$J$K+|_0yqm~A&reBrE><8Ot^)^n&-Rr9+yNdPCsO}7^zQ;bmWhg zx5i(JCzn5+79Cu54YF<83)Ux&7tu1Hx7XVJF3~!E%_>FAOJ&BCKSC?8Su)=Pmlr0> zizdqP7n^sy?N{HadwOdoN*GjBwD;?(P@~p|f-Eoz8s`}05Eh)fn>GV0aq;+K zK;rkh#Jxd*5#yFMA0eXM3@w&zJ_u`8quhF^b1rJ-Mg<*i%QRb34Mu+ySSV+QJx)p` z6*CtvOgN1J{q>qd53x}%1kp7OH`sk>-vYdJ1`QuFP{lJT( zVu5evm+|Eudl@zJuiONHIL7Z^RQ|*(7=xAXhhpt*9uIL)TAe1mf1v18murm4Htujx zi+sXB!13ePCe~(=7M{C>iM=x)?l+#hJ3uZv-y{cfJkZ2c`_$AgHI1uy&4nPjmcUY+ zc(r0=K*_Lfahq4eucO)%e>*ABZeKi&T3LSV4UC62B$RA6_g);(yLW$VP1r6P(^R<~ z=FKGdUX3O!Ry^!6**?xt9|Aw&;-xcsW~*Xf(>BwE=>7=x0|}hA=hpGeKvofg$dE*G zWeH8LHcowq9qDLc)`43IoQWR^Lw%KUZ^_k^V;EgGcimfO51}3|=vT7X+si)go-K>s z$Mx$D0N0~GoPBgod5c)F)xaYLQbSQhEVI^W*E^f~zzc5ZN-IRVOURUx%^}Ac!(Mcu zRy#2Lb559jRoX|pK4Y!jNs;$U9rnFA#@^lz9esYmj=rc-&aK3zf%)Kl`DL^IIE=X(Fjvw|0hf!$g+TMwBQBkq?4_pNQ7L7TyH_|ytdin3j zP&~KZiv=}*o{hVN-U9U?(j8n>z$l=M-JcJRXd?6HKx<)8@k1FK@@%03X!W!PYVAS= zzvtR}p$%_zKm7!bh>M50gZ6EXf92Spb-R5g_a-D}9e$k1W$QpE_zMyVsFMB0CfA+^w3wU@l z%pBZwHkQZ++Id8tLqM*0!wV;=Mmvw2Y5>r3k~LHp6V$!$;jg>h}?Z zqwb?Ei}5kMk(yKnGhG2tB-&5b5+mj#=)UQF0aAoSE@_D0ph&b=^w`l(}SHK09d zh};J#)82W9tcKGK#dDL7i5acG4FeB1Rjx_OtKj}XJp85J$9y*cMtg4D%!QnJbW$hO z6x0P8Z!|5Lkr*fvKnt|_)#v91vPt>@aZT)(uI|lPpfKto0;$h3M`g726R}WP=NDu> zk@=B(pArjU7)k*{33i`!SY498kdU1LAls3jpQyeJUf9OZAjN$&HaBfisqcZpb9u>py4%zdVId1WtBMCNRkbvrmUjo! ze=JM8D472GxzCFxz}fRf6!-9&Q|G>GomYeZN8O>Dv_ENr_8{rl5Q*RAdddLl3^Dsw+Y_#M!8!> zj(w>G2`W)Yw=|YPOA|YsAb~99g%uYE^we);{ZF#02nefqjQI( zR;27ZAJDlIxLvPXuZ60@K+KLLATWs6LzZzmMSlJvhOP%qy&pc<+P6;+f3=y79at9h zQfKcm2P~RN+}vzuO8t_A!TtRkh3p2E(5T5H7deefZIfEFVVEi-89@Mm0F$TW zERasrJmWE6E!yy|^jZ)nA{CV&qK-y!o6h?|@ zd%p((Oo!}RE3BcIz?b_ZXL7U>k(M?<@R;B*kjp~jT|Sy6>vQ&q80!XEYVp6_ng1e+ ziwop+L9flytOV3R9vB?lpnEG2p3I|3bf_9qaXSKOcj?s*h0?pTkoG9jN_TFF&OTRW z4dE|`dcTVbSo%0yk2xtV|HLPEz4|mr(+yb zY2N@$(8vsKeHK~U7xR>v>JD?YL%gdE^MPpm$*wM7oQG&KcB4qxvi&@)+col+q znB6y%`cV>Q@1lgzf5-lz-WnLv>KA0I3%GO~)&do?Anc4HrcRx!4b{~8s-9czOp%~ z;8o~~mRhD)c3I&b82VE-o7a)B$XE59;d`9t#dO%Rui5_?jdqZ3!Dgcwi)f@_-9pgv z5OZL(M5<{pPv_TM?{`#`rtK@+E>8-JZwk`XAPrPJhWxT+zE49U>z~=3=7d>xg)c<~ zVRZQ>`x(PwdXu!(>H$(TlxhA21!>YgK@9U3y!Rymb;M4XjT}nDOKa~*7d8L2dw2Z^|x3R<@AK-OZ&Zyqm60fsiPZ(xjaY7;KG< z)?rloF-P&UBX!A~ck9B)4&wDGEl}owrsVM0l%nfLGyfeniX~Q<*(yXSL)=Ssd=2BtmNxqu>bND;OH+3w6T2XWR1mDQ?-lD5?u9 z)m?UEH$s!VEAWROviMgMM{bT9O-qjqc5#f)K`N5V3*=h=W{$>*t?TX3>#T*qY_y!l zE_rj{KBRXp%`dA(qm4EfvkZx`V)dMonLQ;&f65ic1xa}on(iL9=S!@2 z36TBg$2S|Hkm5f--1^@+0smPFq5qwJ@ISHmM;QKhD8_%4;(wRmu&g6RORGHc5@y%!8>)Ym zoc_1ak^7npBgy^xn1$z~1i0|6T+~Mr59CP; zZP``#R&L03lY^UoR$aRJ>GzqLiiWzp8CR^Jq$y;d;o;st#O@0T?WxySD&I)9^lDHg z32*|MKyAg^EiZgn@Rvdw^GoB$V7UV3dqayj)L~el7!9BF&#(~7HGbV%)>p=AqzthI zvlzikpBD5th1-_a!v;$86a4!giI6lWKQFT#YfUp(TPp;OU9!45BD#x{BBY@4oa(pm zO!O4AKi*5{XdSUpBF@|7=jVIRFWu{7>~c7!Vg9Q)@lyjcN(qzTlZWo1v2-}s)*RGz zS<&R<>PBXrtju=b@iR_36?xpsi< zZ^F+dXq8knJ$drPTn(KY@n#tmF$xK-59)uSrm+8g$~E@ad2;?bESlLS3o&zncBxoxJ-HoOI0 zqY@2>Y1dHgPw%9^n(<iDd%Zj4XM zRv3KDQF}QMPou+S{Agitif<_C#qFxzL+Z z<7P_gk42u*B{#ZGFcWbXE4z&rl6{zN4+YqPROz|*WyXdJajwGXeeKcE2ccW_@j+i+ zrU`~_@z_spYce--flqM*tFM ze%585IPU#nMkN@3&7&2AJpfsZQ>Jauhc73@t8dz*FgDGuU~k^!PHc<&M@(=1@sE0` z^#o_APY~IsrskV)>u`Q!XI>eIS)MlH*?2$>6@UER4a^z$U!UXqUPS7^Tz`%(_U}!L zHXg^1TY7#W`^`(go_~Zt!RuI7$VZcY+A}DbjjmalnKh+nPUPKa3G$dSr9FN)u{R-w zYP83c!ev%($7^@?`U#Jd+=B=8TWsLcd2ZH;ZF79C$Cn*~ve{wDY{DUAl|T}jmIUIw z?*pc?!UHDJB9zvK*WMbXLTv5zV`Q8wWDi+1zzkNkYR+)NIy5ku-ZuJD97~X+?`#e= z#ZBH#y8}sgb7;E|#dpiw*tI*y7-C$!j8w9%qWwGbxo6&Y!5&f;4X@_1+cPboFdl8o zhyB2g3kki5Pv%cYTCMQc5KQcq$LV0%Lljt~O}-Lu$`}}ucr<2SG$b&6V)4+xd6$xI zSp%hR{9)gXv`Os;E6;7Z)h~js^}gLNaSOc5k>lg)!R-0knnb+*zWG3@14Lqlz_okE zT5B#ZHP_7spBdz**KY9Uj?48Ma3agb=8SAu!<9Vi;m6-+&JFMRi7s~DW$D3YR_pmm ztUqYDXt`$0WS0J{I-&lZcC2c-IK7AZ7d%MN;ud!`l5xK8tSNlboJye?!>3`y9;oHB zFT|qXbY+qfJGs%ZJu;edxfzE#VfAw+sB3p{wbWb#v&ob_Q>6t3V()n&0W_s=j^)!Y zP0h2BlMxcDn&}phtDZ>qx0zv{fGv@~lx6wK#|zZ?X>Ubn^#p+_gB(a}dwW$DVdAw< zQ*uey5i{D;kZ`Wn) zA7t+k57vG#alnqicPYm|^o%L#lAbV*OaNKrrakbvXge&aGFg=G(G z=)h)Fx6}{O92@AQuwm=#-5PC9#OYx;kxD^F%QI1?d;-<|A0%0qQiU!Pd5MP?lSACL z%r$ba4l`Z|1dWN*H@7vbKk!agLE%7gMF?>FTb=oM+0jWtcHAN-Q{YA-`H1YJvMYpb zel=>k@=93zcD_5oNidgRF2E}A+kX1@7VRxvv<&@M(DCe8>Cx_?ETUd~^k~`yF);w` zE$PZM{Dxr=Ql9Y~uA6c|U$3UtiUPq$HK^7V5fs5bP06wsKUFYOLgqR$X`G3)1Pl^`Vo{EBR+mJ)COGp+J2Gl zYg|pHd%SM7G$Uh4X8#nEe(eIlVTXRyH=KZtJ7sL_+XmQSSA1z{>EYQ{W82mb7tGa` z?|KfI-9ipE#ejq#v(k95lbr3|xij4NSImW}ad+#Eo!%we(G#$F!^38QON2 zMGHe#5XwmURIhOoI)3n*+k6>gLFdy$bY%~b1Yb`1`Jc0%46F3`%;#3Ykfx0@G2Q$; z9oYK%!&6>X*mlh>GfL6HY#tF|I-&c`MQ8VKY<_zp4AMqMc$hpw_#I57*t@i}-C4wi zvEuo@Fw@PUtDbwmrh}_HEf%wggszQDeXenJwnA2SJsjCVJrVnSwv$%&mpEoN)2-q% z1DU_>U9TT}6|SE#1=>#~P8h?>l4<@yZ^^DS zKJtMHV>>^aHujja-Hv|~Sr!@319$Z;j})+tp5nJx_74NDRSi>(=X!R|AhsurPUKNd zXg?k*Udu)Qd~R^6TpOuWo;xv_^4ZQ2uQg{^Pvk^&yyzpuv*C`KYrwsLTdjOTD>>NW z`hrXe(H$)WcTpY_!jkr2m+PMO9uFQJB(Il^lnq#{X{{dE(WFS9a$JiRtn!k_%bjX& z-J6T3z7`4=mtr1+5129FOb$TFk9dDIzNu9G$TNnHOVRN;)p~;>w#TJhuQPV+;W_Dqr zLo6HT)AoAb-NZi9JtFcgDA1vfs^okkiS_C>)7Z^AtCSw7&yP6pfc87r5db# zS8pB+c4_*?LJexA3Z}Du(s4o|_eGr%=?AVi^D0$Lsd*XRes$=Bd%Jj?OUy zPp4+5%&M`0p~l)x%#F>D9`3s<4;}te2u({()l?L|x>A^NzA5z7M4pcm+5U-=&!5Gu zc^h!`8((Q zdH~E&?!5(T?h^ZX^7A}v_=@h_EfEGBeKjPLZR=imW<40={#O_!ssoR|kR37V$!Rml zcHeMVYi^{5^2bXS1?sXgZI3fD8w7V{sTJD;xS8+T0O)YNphXb%hzCv-YBGl zs{2U9bpIfdm=8-uXiPPlQv_;4Jg=WfH)rqLt@lK0%4{OCqNHE!2PcKA+Lu{ z4i%bF6x;9`&UWyixEA?vK9xZjoMMzHBP{KG-o(_@o@xSzTiboTx6(pDZExSSdXvIK zVHy9cvCdy*c_XJTU@)@DC!d_-SKGscFd8#>1{Bk%<+-ar2gkm99C;n`kI1 zTKOZGS5F%KE5-#y8U5dy68|!@^79I%2@0p)yB@o(Yw_uW-me=$w`&@+ame=RT~1fq z_SN&|0u6hE@LL*;1Waud>j%{~DWr32Gcq9Jo@tUMRglzYwhOx(Cw;OcPm%cCA0iB? zLpO)#yJ(5I)Mfy5I6?zcN9D#>UkoXIY}phU=TooxQUQvz_niKq@&v?^nJYIMv8Uza zVu`0K*Y;G`O)s`a7tIrEk!ghmtvk41WCEN{eQVr~6r-Oj< z!@~<+$aY~k0*|&&goGPxYonA^qhM^3g+N%nu~E0%8zNxga0Cz^4^*|-i9eyvL0q8X1Sv!&yJfgR(bdmQ6b2y2@<}goTyLyMg!RQ}a?gDXQ-?t_| zm|+TX2=05=_XPok%F=o?!^_1q~#8jf-?N&;D>x#AA>L`0j8PxIU z*d~p&=G3Ntj3rv(<|~E{1NMNZNC*AS6nn5ES#!lyPcXsJ)Gll^4WrPr6N*7n&oO;T z4et2GKwt5l8R-k3RVn@PKFp}#5Y5mLxx#y2B1fdwP>V;)FH>g%``8H@gE4Lu_|TA# z*J5d|*Ka6te4Vm+j`7|!X0TSz4>tF9sAd9QN4+R+6Me`|7jXRa8`#w&d5ByLoOhLP9%0 zsl>!BZyxQ&33yYUu7xne^wSdz}8GWELhKPwCyi8Y0tl=GI{8;=PY zPLv)u7*a9M&(7S<(a>cdvkgs@51Ib-E%6i>$;~J>3BAhwnu>e5>-b@yBPf{;6ppq= z5P=h4AF+(HJ7@dPkoI^y-YT9VS185S6wrznlppoUyG0&Aj}ZUAtT@@6-w?>2P>cU^?O$k5mapek4es`AL3F9>= zbk{jwR-x(q$yP@EJTpUg{tKK$`$>c{4NiXSuj^w@uLrZfMp;Q5zBw$t!lB1M+4j2U zyiCP<(^vKMJ?CHAUrtX2(50Vm>Eko2N}`8t`;o7jpC47J;RfC>`lXe=#45U_X;Ft~ ziLRU1M}rOZ5fA6*Pf2RzYu>oudg#kcBY!fq;XUQ_jwn&>!sx#(x8&^jO!C?PuoWzU z(3#^$O_G^E$5Mc53kKw#vP!{EowG(Kx#E~$aX?dl!Mt+jeBpcEvWegXRjP5_a^`SQa#c? z(|F!-eu9eI6z`K|Ll&>NsOPlD`Ih58b~VE=vAfMLQ)<8y7mgsfNSn532aYyRCuyXR zv#E%IxY5ESERqyb`rWcKn$mU--Wq5$J|>^}w6w)g_UxieXm~a)Wy?+VJ>Q4|E=`bB z(S(HUOBY$ad7&2=fIqv;hqq!WT!H+GO&@`!1p>*7r*o*pp`p-NETnfe<~yPpU))|M za(F9P&9`ZzO-JK_3cqrF{X+4wIhtC8cA)3m-55>%i(j%V@A}8Pi&@zE&ewfn8_#4gvFBQmTHqxgh;Nlna!rZnV1@-qE#Y>fjHM5ih2 zsYE%PBe0cORuqrNd4j}p96l?T$a)}X!q-2&^!vJ}N1DH@@40aI!^U^Dt&a_=$4+Nv zTsaYxe;@>S;V;>U`Y2T!W6 zdj2W-L5UiRTXCjV=kHE+kHN{n%t5DYW)HbQ7e-`Qb~1UKOC~1YK3tGyUP8m84mmc) z`A>ckwumyzvXlU@aJp3C&D|6;v&wrOV#>4kYIW9q->g%1XmtH_x<*p2-nE4BEDx)k z5Jv~c0uQlM@*#&s2ovM$$NULgus%JP3r+$sN&E1y`iQVq-0q>bFHZu4HaszsW9 z?{7Dn`_3=z>g?JQt91qimN8IZqb0g)Nf>9^?aA=~F zpyWmzjCfb)o;H}k-DDr$Rv*7%L$xd=i2<+n)GzTt)S5^7O2n-Zu?N!HZV)lp!CC)b zy*nOB-@WZw?wgt@XjvAJ&ErJZhi%A+pidWIF8R(A2M(5(?nyWNF#c23QV;3a%qGw= z4#cN+3V0c9jnU^qLL(<0KYsjt-*205=`2nryU`r{yt}*OQZt5=0uM|+r`mfsQwbhp zyX9v)=pOzqUDLjX*IfdAOoKW4!+!o}>F?fMd;;%-d!>9yJ>Xbt+`-feO5j4LxM$VA z(l#;d z^1R00n4~MujZ?|fn3mhi&O{$qYW4ngq{`>{*l}SgA(+CziOGGZ|J~WL@`pqn#m^U~ zR@Vo^>uhHoLv=L01kbhO{mlq(XH~QVup0C>a{EwtJPW4tZ;TmVD{bB~de=kn_S8X* z+9>?)Fn1g;*U;6ya<$T6xY(AM?kjA!x7BYov$7W+Jc!HLt{=Li6r(*T+C+*uI9Iva zX;tam>i7rRTw3yY;%%#E<&3#wvuIhHqi48=k-WBK{piXul>)^&meQ+XO3%Q&EyF^> z*v}w4YpgJh1$mJ-Thu-M8#@Xanzk+hy$2=jLK8t5eM+*%Z`I976XfD`I+7-QI*-} zh0*k5Oq@@x@uN|nS=`RFKjR0z$9U0E$BT@V8<^$k!o*_OW(zZ1dU{>*3X2Zka*y zJ0o-p-^?1PRmDv>aE^thnwZ(QVn&F}f7L5ICpL?evg1>v_AHxkVjKGVE4X)!#9mD& zyJ-Agt4Qf@@!ItKJMGRIH@8M9;&%S%O0>w?GhDtazRnHD|O<%p4A6V-lp?ON$E zxfmnP$OVaEZ#2upyIhMmzWUJwH$~CCdb@tKeRu=O&iV^8HF%mz&!T)PdE>gzdfMHp zD{*|%$uVRhyyYOa>LYyqtMLKnPUmo2aG}MRlm10%$G!4K-$yPkEOZt1)ps83vdS)S zCKY_{<0J}Py1i&`qXv)N{b0Rf|O|UqHA7Sx!&g8{w!CIx~7T8!U+aiO1idoNYO3KbEkAo>aZVjJWP`6744&GLss0i+%(JhW&K+#pXd-~W81B9+6|w&k?%<)lPklz# zNXDC9@-?ZNhUfH58E-6{YnaXS?V^-q1bxN1o&k486yD?*9z}tS)3-5Zm^kGMrXbh<9;Md*tTS3luFeq z9v}U5O`E@k6D|?2?&ItAIbRVDKnctsW1U;t)IudiL*ijs${WZvB4Jw>rEAhPja9Y`38C=}(-C`HKg4HIr zfVI7R2tPowm?JF-z%o&#M~W8o=len{?53XMoYk3Wt-@!bmkG@r$h?21Yn7-f;08Y$ z_k1I>K2hEIQU={lxDlyI?Crc~+atn9+e{^F{kl0Bs&_-vOl-TS^9Tn@AHBryc4p}u z#1t#jh^erW$mXfRd6le=(UuIas_EsqT^Ts^VT2~`rLu4F*UP+y-R9)RND}6U+vgnZ zYMFzoj^mF~6Y7FU(O||-MelPSeeKsiE}_oGyJt~4lB>7I>%_3IAL6vO@yE)%2%p+? zYZ4*?ap^g2w=DLwZAOo*|1itJ%`KGFe#e^=5wz{Mfn#w^z-e@+@XcI^OFc5 z-RLWh8+ODU-742NWHE7_b;Swn;sj>qdR5RaxxTX3c`O~lNRF*%Rg^Bz5^dfQqXXK0 zYH9G)MBZ$jXX#A<2S2=j>Aocg8l+u(ENCW+q1 z^kbZw64R@!3{ z#9<1|X1t(D5Wk`J2H%(X>+g^g&MhejZhPr^ImD7Z0Awuva$0KKMrWF3BJ0#VL({jC zwHNdFpkvc%7XetYGTbEdMsnTB(eTJOA+sUbVJn4h&WnkyeJm>&>GB^@(?4)$7uWcS z;+L4hjq5Mhl5acXExEYOam*)sVVUyA}f;tF>^3kl9Tx=8cZoeDnCuQUB(EIp3xXf`)^p2lCW z&sl_F4P&lMp6ryzt*m4=$BJ|Dnz8YL+jUviTvK_I!axRoi@IFDr8pe)tjqsVpf0T) zE6{eTJ0aeh&(V1uxcFkemra!R@ zWRd2^iXm8vt48Kcut1Q1zHdWUfg_U`_og2Vl}E#!?2`@ZUK$%0M$`r1dHD7xofXTRG46?haXNGr2qYQA6)N1zyY~#!a z#%_=rvXz%|`Fw(shq&@gf#EN_3#N9p$hV=25mo>Z@cD~$Q+*=2vDgsGmjJ1{N zP3;DX(g3aWwb#%Lfvt`fx||{y))laH1qVmv0)M_VgCV8Ch_e1@o>y8%PYHtb56J$FfX!8#N;?_2avNhpMUGnkEpZO-&R^Pw~04>(*W1R+aABtGVao z6RC9-q0uJ+Hb{@%jJB$K_P)aNt0%+}->M8O`YS|rA0z+mIWXxAWINV2?i$ z)tTQ95Y%e2^!_+^LOaNooW+*wBWdU!|2FR-Cf$Xwk-dT=GwA<{A+|@%+l7P7)mFc# z{FJmKp1)rS?4uQv@d%l#EGuR~D-O`HMD@_1nKfQmhTpQ$#;U|H?|qAKf3<+;sBX1c zQ^VAvaQwAJ2J(cb-|JjA-zT#;yj->k;NeO6FXKL<`9PAP2^pNAh{T&(aWMS)^eTEzjbpS+^6=02FoajNt zJ|iX_7GQbEByJ=?(6Alv=w0wVVPCmsqh>R~PSEHN8KBAwr=(wcn>X*ZCt=*mXWKWc zq_d_rAyRF^QdJ9LB=2Iwi90}x4%krid7L9UWDcEAbR=LF|{BVMAk7Gg0RCS zWAn&cR*)=I$X#WOq#b%T^>99NR^Lb*_m&IVS}@^Z;2#f+?U6O!Gzi^ah$8|FaHryV zCWE`z+3BEle=|>KE+)sL`^A~~g?LZOT>R7(Mr@8VIY^>qQI(AGIc6`VW^eO_l&C^; zR+ZE#%eNqiIbiBsT}gY%SCiITH{{I<;;IcSdfYgaW5*#g0SgQZV_R0@ zW;@DUr5QcP)Ei?>gLOgll;(>RA?te6pU6Y1Y2t(t;_U@?}T^c(( znRGDG1(sxc`%{&Ujjvy_%i{r8#S?t1LDG=7jv|fb&*>m+gFLSyGby+wz;E_SckvD9 zviyaDs2km}5T!f4IvZkHsk~gU<~vrlfbBJLUb=jr=G#17-BNCsyL;j^uiFJ%zOsK$ z-$-(`_rh=w1R54u<$3~x8wm^Aw3*)fPK+yzv*mwRYi~kEEOw=V??t}{JGaX*VSJHo zZQp`(_P&wX)vv}J5Ih84;c|2Sm6wt7-=dW?NN;p+I*@-#%{lR#$2q1MENlh|P)D4y zZD6BXSCK1CLR72lU4x+zSz+EOlz;g(L=~?NWUENOikJu@3vdUcV%gdN8~t9VyWEc} z(sPBFq#K}1S8yX3vEuPM*4q!)&*LBLWVQXYqL2n1{R)CFdsjhpe%8mdQCQcivuOOO z&0J|G**mD3kim^Jxt@#g;A~&U)Hma%0?p+dWPW%HzhZ8~^Vx

umgkx#brm1_6F{Oa@iw-UYXUfA|nlah0)*VJHP;bGtYDU z22oH!IKZC0g|4*D_inNcQQDkygx`pInUqiJh!8vMJQsc^#jp-V`&@DD*FUVbE`?+e zJ=hF|R++HCDoPs}Dsb zQrnW)l_;R7#&VBa;uvkxV||g-f*j34%=P`8W`-_=lrBA2$m{nk72mLOjiU zL0uwtpZr$U^3wD+-sSQXRoFEGm3Linzd5jVaS#>0fLKPt0wQ84_|u#EA}s6sVeXg; zq8w!j83+3SvAkX=7A_EviL#(qsjODjH4ypA;*UVZM8VZu|kV5egd|fy^U8f#Ub=+ki%eqpt z;K8?XH{#i;Tl(R&4g(Z+1G%Fg0{G0{`)-{$-x5SP)Az0mL@#K092e8Gt+rGfyn2zt z*h}=h06~g6RT)8xY~m$~)2TWX^|f$hx-MjcOP`;qZ}I$!Ys$R*(wL0G3JlH}`-S_X zYhxcoSpLqurC27%tzzg-sg-Y)tTU}vLUR~Kz&<0N{VIkj`S70WIJa?JI{sq0+CoKb zwCC@UnO51HltLQO)(jEns+u`Ns~un&|5~DH*mH=zDCknNtz3;uPg6hKd8N80H8Et{ zaMwPt%e1oT=W)N>h=zF-zwyUNC0Gg0^fK9q(VwXF1bvMJXc){LaIBB%$)r%gz%_Q< z#~fAz9MC9vC+;x6qnO_XQ7Y^Hz?BxMm@)uM{jJ7^wE^*u`teVIK(5=2#K8rW5&=_s zcDV-n(^oo0LviXJmoA;AL*VLM5P=@aas2gi%#*ZgqZ&;Wci=1M=g3NRqgm_@_rzWP zwAj0r0B*!phU;r2=QX_M!i#t9{gVI-bxD&ps5ys;#d-AHpoBeMQHjif%4*`3n+;TZ z@6Hbp+<7-b^j3RW2H2<}h#<t}=H;@k7@*u>VM~ht;tMsQ11Z7!-q4ct(Dul(VbxT#9h8k-&W8gK%ff>A=Ec(yF z2_1QUZ)eaegd-X+2N|C)8e}(R)-OE-gq3YW8asCAdH#M8I73D=z5QQ;eym^ql617+ z;?FRp>t0ue#&_3)AhHZM#3@}?5j+oYZQnTMabz4|nZmG2SF8^AJg_NUjN^y=Hy`RZSycOppc6KX$`@hG8dJ58kcpXlswtV)5g5`lsuWi7h>6J%8VeqK)Hd zJSv>ay8#YZLfUJ)90~(miB;dGs)x>{#!F9xe_yMISYHhPC&$%|0Cpcmdh#E6ePb$A zZ18_2g?g@uT4xvfKu+#rn&?~q2Sx#z7S4WeprLeS4Lojyog<)O+*N&9Lp&Y!LF1as*6ASu>Li>ZY87O{1*q1%=s zc@x{ZQqa)2t%D_wiLZ*B-E>+EvmPVkUDp(EUzhl(DNZHh*X)1Sf{XUPudi={+Vks+ zVp2-5F}ZLjVFQMh-*O*p)um=~na8=*u{VDH9<#4Et9TxdE>y-^o@kuCXmaR- zz01JE?Ou0ErE~0^ts3WIMWnv3q+`eOZ!C9p@0+*nN4!@Co|)nPedQJLEpl!>YzUhV zj3K=~r;R;3Ec)N}v5?2je^ayatb{W({=#aQ5JjGZu8`R-2S}QlJQGc9KOhgosnqYeV+NefH=kEI~AHVT%lZ2~gqn{$A zE0By;`A&3EGp)D_x#=7B9L#!e(l2b)vE__8V8F}y{x|TU+X(%RmydsIFZJ`PlJWOH zgKuBz0svcZL?Cylvo3h@OQ^an$Z%p8}&<8Ko1d&HoJjs8*`@=xU&FSw~qp1@)QJP&;te?-zKmL7yTM1ha zb%uer%L%E@3eSn~-K5o;P|gL1gyIC`BaoGIU>7NBZ!Dy*gwV}Ffo*a<ZB0g|NWz{pKdN!C66q&x$-+S8F*tlx?$mrKCQ&ZmUom@>YxQ#%a72P`&78d4J z1%%12-4Z_;+yjtc>JDyU2aR9;j~q1%yqn_Eyu)-q2JdzpFW$XDv%K7q|LK6E%NI2z zys?pb8YQKUu{M`rH$*84HeOM*gLdfi{XgWm7d!GZatUwtS@6$6hP2t0f|(mQI5oXD zn|+$m**kFC23Zy^7D!c(O0#`qg;`OY!WQ5nOYJG0+oo@C^hIP5`g#*IlQ>{0TLg5% z<-)~R;W+@lti~FnvSz02=OIE)f}UjzW*UJ&l@l`1<_8`9wBS>laQUk#wg0Jdi+M@o@;5mX$u>XxJ z&!nT@gN;o@?JDmI7jfg@ceLgx@~e7=YD}vg6|((%-`{Dc&7> zdyHo0-c4Ee%x{e4g22A}(?E7Yc|f8r$ZeHR4&-ft!=z2n(Z)*Dfuaw@ahD)c!0hX; zJB>jsVh_ZKeO0mUVXtpy8ip`WF&@`&|D#?E` zaag)3p=S}2YWb3XA+eZC6dbTcH3fL125OWS-^RCU8l}ge%;d%_r-8af^psj9@L*F7 zdzES=X#WOwDDEM&JW>;WDBd$Is(!l$7>%WzL{@Y*{ntU<<<22z#h~d|m#JSw;ySHP zI?{~Uh z^AutAe%PG4%WS}+;Xmw?`@a9YCSkn8XtUX~b;mWkrFRR;UN#Q^@~eXAT;fYBBJEMo zd+z^Z@4cg{y1u^OV~iSmupugv*c(lHC$SJk!A=uUQ4kdj(mQt4BPb}n3W|m%AfQyE zQWPnI(u;yLY0}G~-0$3nFkX za7TjC3KD3i{V_AOI}%TXJoD9}WQB~PhL0Y`rbES@e<4Ol4pxE_d8H{sgWh^3FG`Vf z*wB*Fh60XmY}~d)CwA5{?h4rAQsxvg=1nZBt5=;sY)Vn0!_XHM+EZ&{RjU2|Ct|Yh zj#zy!F~Px5!$MiX)kTBtHxI`dG}XCt8j;^@g{e{7Z3h<4=;>1u4hQb@HFJ#B zJGh(_9Awc9a4TNshjPWscAcH)x6&@n-+AYI`LTOmF>d)~#YhW1XnY}I-u&kA-PJU~ zK8s4lnpTd{yaBmqChuon8kMEtLlTsDIXWq};V6~mLCXf&;&Z@koofT~=FUFEgbtNc%>fU^V zGJShX2wZQqtSRBtD`*X0G^Ve_AFsJd*L(6+wYUlS^55O<_;c3ko*AX2fqQlO=3@gJ z)i~jeU37_U7WxK3t+CjU6m}gvJPIrQ*h53wsR*6xX@H$)UBG~! zXKAx#jR+r4w{L=Bd-rDQ1m(%kvo!48bls?wU zjzf%clj0PP*st{sFHb^g?@@c<)M9DN5u6Zgh-)9L!+txPgPo$z><5%Xrv6uuG;gj& z(qOG=Y*<%Z4m+PO6)8WyJjN8sw3nlM>x+d)AXLX_eg8!L+NVR8uvw@958Jal+czt>xMlV(}c{bxHlkuZy7PoiC? z{VPhi+%9vL!hWx{Pm+Y;!}_VuLSCMH6a2$Negz@^nFDSs%ubRJ;=VHVwJ~Ig=a28t zyEW{zj{3NtxuRkOWCY8WQ7=f5%VQ@@kq_JVU6ukSY*;Ic`{N}@#Fx@_-W#bDrfq+o zc3n!NwaHZ-E%s1J`Ttrz**RP?ev5ef`Y~dNd+sY2V<$;@NwaoQ1N*ei29$HEkonUm1-QpPJS?2C z44K8q5H)X7mnf3;^K-)1!{E!_I(M3(Os*Xh4jS}^RP3YHQHH^AgLcS~H5+f~_^!%G zrk%Zy-S4MHo9^c5C@AIUv=^CUXS3l4t8^ZlTc-vIFtcHDUrWh5t44}=^=mV91$2GPkhrDQ3rIGARg z-xTPkGARgG_lRR8@?Up6(;d^96EisQhSOE1g3-G{NJ!0LQ?~qwJPac^exwx z?}-|Zu`;i^KN8YdJ@CesQWxS95<9lP$-VoUGs+1a9u*JvZ)(k*{ld%7-C70GLqpk$ z=NMlPs$woT4O$IYmhzXq#C(e#ZKz6&PKb5xcwl!@mFcZ8H`z_C@gW-ToHDEJ+M-3z ze0&_92O~ePnL91-H2zZ897Z)j96b+6{xWDpNXqa=(_dz@qhls za=G%KWxu9gVhU1le=73J|M?MWCQN?)k7S6Q)@M$ib{!cRv1typ_7Ixp;#BWr z;C4gZp?;z0i8rnrHf`FSvVtYu?&s(CAT;z>$#dm*EH<+G7OqxtW0M{H>G9VOobk7J8cDo%?V8QE zClU1zz4dOwCmfzPB_!Bi&f3(W(>(ar{;-{Ebr~ndRF|SPjz@HLb*aFI;>)R@pFW9= zbtkK_$6D1BwQ06y0~JPe7al^hSt)zBZQCZ_SF|neLgTw|)hWkVS{V+uTl6#J4GRMJ z^hb)luTbF-R?Gh1J^N%@Eo7GnYA?$37FJJL#G3w;E_zU1VKK}HivoTO(YN_>mA4)i z_uVOT@YDO7HL~B`-`sF*xvA^Bckgh&xKK#&0>5zeT@fW_ZPCfum5FDo96R6pig^n0 zx+r$SP(TfPL?9M-OpaQ`qNyQ;RN&*pTaUFJisylGXKcYKw`rWt)Q*A`y-+>Y2xX4; z_@Ehz8%e$>nm==IvC%UK=~CzQ0_?s$5w&VBXP(JX*2rBnVR@W^$`-BoHC>q~gZ);$ zzEtPD#MKon#{)VS-};IfWg97RDwax_9$m!CyIyw_Ym9c??Ujj}oj6r>^l{8rI)n5M zi;CLvS7fB8&|vyn)FRSRdaN76ZYhQl-_~c-N!1xz|6MtWtwqHwYqsUC<t|nU$4g zR%2P#xF<&!7B_r|^TmwSvZ(NSl zzQQ&?u+l#XObq2bj*Tr`>W}t6inrV4J^dx?(4j+%y!Gsi@&A+T*rPADE?c&YZiCux z`)LooSeT}bQl6vzXYKjn&SS`f&-;p1#j-IN3~Ev=aShfqtu!06>KS-xb?Pyf?WbqgCa`c&@tpC)gFo@k)Tzo(m*OEXH32(6^gB%d*)R{wqfA$M6 z%bORp$6rzq6nRJ%darplW)>Q|mCwwZ3)qbd)uex=pY6c2VA}W8jB#e9CD0p}#_0OT zIlSRfSwnA}TXuhQ-Mt8;OwZM2C>Xp*OOwa1{&Km(kUnk8MjGV9vUXFH&p((ti{+T# z@*&Jqh%UxreSXRm%VGY`Vom>%sd2;o*D>Y)#eQ@}Ni~HPGEvE;AuD8-mK3C0;c2DtiM$_uIQu{y^W7!FwrR6yIoIq&X^VbQ0fz*{H&rfga{&^ z$&wMN=OCe{&pAST@2BRuh>fwcUb0?;U%(&_Jx+4+p|Nz=h|hfK5(lK&rl(cuq{U<7 zJZvepK-;4~bMSkVR}K*EeYRoKvU`0o|NLIj%-=ng>$BY>U6HsttF@A>EFLXJh}gPg zGwoLe>Bjw4QdJJcK*dYwRT)eC(5l(VT239}W{Lvvs`AXEtUgzUbK2rLua}?%i&GoKu?piT5nC`EL=t zvhL!W+bhh%LwFU|fjOb5nMBq!cghX0Bc)|m5tWiC9}9@VR_=f)l53=qbb~9;!Pb3U zx_$TVi@IV{SRr9R*dBXST z_!?+C@{m{m=Y#IS9tj2IJs)_wyRYA&6gwsv@@b?*?Q?0NFJZ7%1Eek-xjLve*xAHyGT3^B)0AQB%rc* zl#llha6Y^id?=uSs@X3^3Z=*H-X=h?m^y zCLOE!_4&JML`k}i>`6yW8__oTm=Pz`Y&{ND15nNyf|RSq6cjiT@y=!G z6Tt$;!xI(yLb82v?IW{n(PmNVY2At}`&!MBY->^2L{C;(9kbRf4=^C9U5*=?FNYYS+sB<77Nb8z|5tNBgij$sQ8;rT(RwA9 zrR;u@+3#kr?U>$l_5`FB5|pGN56!A{XPj_IFh#m6rJgt}k3U4!I*&yUo1JWZdMRl+ zPdAb&G6s|pkC^J2Pfxq?a*gqN_1k8PbH3IXHe45IQt-NZx@+u?@UhA*b)18!Mdp!c z-BtU%Go|eWg3tX24l9lt8sb^IS{ zyJ=?Vi3rXcuGdc5*0o>m!hG(Wk4*C1XPfVzIVUFK+d+9)v}KJ!{}w2)R#QDIXhTjd zO9a-uOg)TI;>gvGZ4KUW%R6aLP7<;&N2YpSuf$wU3MSO%*qY`HU~Xm&`N@{2wVNoT z-`ZiFgAQzYrmibvF!Yjs7o@*M7M&DTSWF`&ZZDI0prbdN)uMzbWcfsc^QimtZy?3JbWCqZoGsms$Qou4cd}0u=*w#s znG;(A1ioeAK^-Y)(U{ePCxKM2cOGu5TchigJek`t#+iVRo9sUqREIJ7N{bnR>n>U~ zww=)=)<(SlxsSLRMeiz(+qThycxqY9Bw=0Dk(h>$YOBQd1!Y514?stp;EmL(jd@MB zjbz(4AG8y(!!@C;PrZTLs~&r1D;r0vK9tgOOuN}<34A#}-q<}u7nuuYs0aLc zj(TeF1|d^RC4#+3rjxUnH%V`kf+Y$a6za#RbD66JUYfvywf?hRcUtBao3YwX@aN-Z z*MnUH+Cl-+uwOPIwYkfCHtTDgRY#>}s+Gz1?Rx@cB?@HQq8|VC*UjUvXLUu*O|O75 zV*nyuFw@3l@ZRmJdyUPfqGaY8gg@4C}tPlb*lk|qf;58LUM z+u}fLU7j7KXRe6nfY_xFkGgX9b=$%i&Be{10s^g5lF+LuhqX1k$AnYls5ICvX8vfA ze)lU?(LphzB_9*Ji$qRm7$@sgxf8KY_M*xPQO=5_B!P-5VR7l<&Q!Sz*={T49)(zP zEO#?7H2r*(CTipUlO9MJs~ zD%@jPN;K5ALh>>)Ymx!xmS@^+c${~{tUjR6W`nfqlp&Z|+GOM{-|L!mvRH}vR1-T;6zoO^jCTU=3EKmmQQAQ>y3CXUxQ8o8l}$*$9Ed8}nyvTto9TYn z_LpBn3j!2YUrXwlqOPMWsDxD~Anvw*Qj=q6Wb7%c+vfyN+dTG|uqy~n?7*`EdT?$c zcBJy5iBqmL+P0~E0yX~fIn_wCHwC;VX*z$5hRetIf@!_EP0^N2Zq4G`HVu}`>u7A@ zR)QWF>a@;WE>&w|K(Yn1v79aYa5(5;qHsUr@)d-81$0yJl+t%ZA@hu7fufq+i+)o# zO2;hrb`mv8gOu5-`xbnJ;d`&2ySvAn&+7idAR-ZjA0c-6@U3n(A@VqECRK)CWa4Sh z!*FYcwIc!N;*mzq&tKuisxb9_MXE7q&ldT zh6C^}GMwOd-!h8Z-$qQ_i93q9k1Z%rW6EFA{B-rBJ==B!wJ^gm#9w6>w9N!SUx1JPRE4&sWjJUY*(Ufi3)vW(Iot zN6OxIZq-64MxfYfbx7&mltmCtLTtdFqQdl?mQCn6(RS84o#HugUnPZDsy~T&=M$eI zM+<_gP2B1db|WXmRNryi-z7_-E)%E(Z}(SrAn380{%rQj`=W=d2o*_@?IgTo)^pED zH({HJgu*QBRNAW(Q$wDf_>~iMeu82=d$%J-mcyeTjZ0=#0(!YaJ+w{n=(&7cf%dH} zDt=S%@$fu+_>j@OomsXUx>Yvf_p_reSv9xZ!(w6t#I@#no%` zXU~1R0huH`@3sJWN#czuF?)wVV}V^s%fg2U1=={N?Pk zF)!Awv~L&X-_UA_t*Vh`%(LTjbN;UMb4|s75v-mv=NEzoiQF(m8^4G<=r;RzNukJ zCxfpS?2%F+OTUo&RV&Gj;%jt{9t{v9>t&0$M_0AQ*YcHSZ`Q+|XE`Uowk%^^UEGhX z+z1)v7bo9(Y!DQ@4V~l-n@{XSarmzNhYsDdu$^;^|AloFsv@XQjMr`fB*FQ%yhky~ zzOXhtFYhd3C38bp3i7=8R%&~~ZYy@g>SOM_bgKd07Fd}rPCHWM>Jo$9n)WCE6#bK` zh@5oVq_X|nB(nk2o2MML@D81JZF<7}IWiBb&a~X<-IptwTG=fkSEN~2R5W~hM^4It zA6Rq5sot~0aE~VR&+Xga2g+%kKZQOjNVufEaIR z$+Of+YO+dB?{2C}Ii#*He~k&I>(+|T?DK(d%2AuY8Tu;rRGD`TD9uYUjHQ} z5$aM4NhKZ&Dq6GeshiboKENSXEyEqeS-^Ys&R21Z4(6tSm-@~=ozWG~Z-&XGsaf55 zs+1R$ZO?Jjl{t8IDr?S~>(e)2_2M%MFxwek(i)z3Nzn*xWY#Ra@|^jj%Lv;qWH=-{ zHg~@6d6@Zo4WJP|jtDkQ4h`>wQ;mLD`jRT7c4tDrx(zW)`rG56;REuxtu;7sY=dUU z^0rxie??X_$se?`%t9D^3n|yPe8C9XnjM--C>Dwo=;@1i`5EI}&SK@Nl!>E@kem$` z7${@sD%~EW&;~ii?cZ7-2c}wNW64#6%w4=zIrtd@V2W>>nLvbgDk~JM_Ky%R(4Ka%VEQ`FTCt zU2LQ|{oBAjcnW3eJgjUvQ|y0IeKmnH-bos#eMIW|zke-pb|oG0T%%H z$s8*yGP_n?PiB)TU3Z?|4@DdjxKX^9w{Bv5FzoT;4NS5jqzZyj^tUJbG>u5$3W$Rp zsp67ib%jPh+Hm-7g&beUI*+x5tA?;N^lag%Mon_VWm`}07~nKQYQN3o zDUQS@+7EWprfMFitqD4HptpkkZ|HXO3R!o;X=kc1DEMw^q_12=2*>x_aK_KxOoIN( zI+-*ov<{jvHttlOm#eEycNVX~*hs%^u-K`0_lBCJGHuH*ov+B8sD=nm>6q>A3x}ii zGZj(V-Jt*5r~NwqaysfJCMMNZRVJ5Euanic8QNAPAj818G$4_e%JxD;8M;@_tY6Ka ztdGxng^g`$;SjgWRO>Fc ziT=!S4T^#qWZKGN-ShpW)?3BOo_O<<{+_mneua55%>fI$(g*dn=%q7JDv_#SQMWwZ~m)?m_Rl%(@$;9P3ETq&mhX_rn$Zz5*POJ&Xvr~XUdo# zRn~mvqPm~m(Sly8oAQx>+?MXAqO77!+Nz8XoS%^Fe9;{Ae0-!WEG0$z*n$+Tl8Y0$ zeE!;>yGG$3@Hbbok|swP%E%ag+=sA)tkAOQ`Cz_8#oNX^DJm*g{K0qU?PWNA(#dwT zqi)=!zyOn|hPcI-ysSQF6@JS@TQr~kLd9AGa%j#i&vbS!UW@fmnZ!SB31s2};*v|x zZ#rEAYn%01!HVOr5b^Jjb$nXWPn;pP+xNw4?{|7$*Fp3F>)(CR0T{KW#RiX6ljUsh z!F0@lrgh#}CUP~MuzF03_7)zh2qONUFBRx0<4JiIXozimpje&+e^u{ZUp}E7#zZ!BLahs;mr(g(@G3c;NsHPnTaIG}=bf{@T(kB&~ z$O;{oMv9SfUR6hoH;7|07%WY-snuW7=QsT7k*-8<-@&b3*eO<{kt(5B~ zC=h5qwsSjGoUpNIjlcAJGLL|B(J&PD9GF)(HOEntagH0n<;a%@S*jx_)}i??g^C(o zyZV4Btn|wvYo_inN=-_B7#W)8pxf&_QTQLf zCgWMt3M-4e2nwur$1HnrT8D#%;|$xxx_g+jjPXpHu768RgswMZTSfWS!4{HZN{^X zD2>_y;3SE|6*>!|)g_QFPs-QceG+7U85_lXU(*qYI-d-GCSact&U~-YCTn4pJBE?D zq9)Nj(VZ#~cIaI!>||5P!Wz)9gr^(mmsuPC;2R9CWvBrZX@6Fzh(ireDZs-<$u+NaXmjRMbp1&&GkAImPe z=}uKBc8u6;!woM&Mt#pmD|uB=l$8_|h=)myw&eRm9he4yV<``Dcr8;^B5vf)(*~M% zX!$~pV2_;bnY0NfN0L<`L>C`W>HTN`tNK0BwH4T3RHKmCcJTE3v71VsG1LCUnKn{C z$l#V;j&As^VPyS^s-9nKCu1!*LG)MEQEmg7HOW5zD0~)TKfFOl zC)p&6OneB%u;PO{CDmJ7FBVJ6^Y62pn*y3kDNHpBqQ{b4Yo>nBef(hV5Y@vf`WH73d$A8MGkrZvH%eVHb>A<8TajX8r4Jb{}GJDJPF!y|h9=#Bv2h|P{V1nT4{Y$`Z6hX_^dHU%0sx&1>|ruIvJ^|w3@H)wfU zV$8uR4sp6c*qdru zcX1CguE>4gd>qLsfk(PI*d3$Kk6s^e^0|bMOH%XR|YGZ6gDD=0}inWYtySf3S;0zqy;K`b2=; zyIuVA_U?2T4Q)-%bkf>_#EYc+{*1FSRgmH-3&m@ZE^a*|zc#|5>`ZS`rdgx+YVb{; z9py~ly$OhGZ`c46XL?=r3v(o_`9zJ2!?`p`OZ-gR&dgbfh%`v+PU#z2zgI!1Ypg9) zc9|b}%>smbb~uc3tj`W^B(ZHott%+^c_BE;bHg46I)13$BquWKt87ZSFN1tx6P=c%m0R>Q9p?X8cIgF9nwm(75Y;$uZ|huE-#pq)EH{1rYiIgk?eo!|ys-HA1IIj^ z8eCT^R`HN&Glz8+!&wf0?Wk?W_vrsk>qo8M(m>{+!Rm7WQjZjU6G*OTOV zfk#LuWw(Z0pD&!B+5rK1mYp7I0{xviUOLM7qaiq#$C+EJ=G(ZDDZpt`4>m1$I?uBPOF)$ngUKk z`?K4u-jHO<2>BR=4K*fmRH=pWo*%p*rC*4!pUR1dVoMVtcXtW2LE6j&NRE9a4gHTX zjhy?g?w5Tatu!8uy_#{}Z!e@D^6_@R^Q**+K=bZ`wG)Z+^GjT&V%>K0=#vOmZ0LIo z3E(&)-shv2*Xdhav5jXM;>hVwM({wMA9 z7o0MMC-YnZ!rLY44xW#;k7!g3hbN!BVA*YpwN>p4+uGB0&sL@mG8}97NLMyhNXWNb zZh&GneEi@2GxvCnSx^1^eS={Bm~TZ<(a&K!EhqMD>{EJueZG1MIec2I5E}iB&3Pu$yUmO;FiAZ5lrk&&h1@{s=C&OU@~GncOT65p zW1YJN0~Jisl-dQ2p}LydCBEjh+Uc~D>L`g%K5T8?(GeI~up$ow%dDxLk3Z^DgV3wX!@POI%lQU1@w6rtfrHx@HI6zNWmU89r4#+ME{Gp z2FSsjLBzZUHkP0MZ$H`t+dt)sTMEtlZj;g-zDJ zI|yBH%GsIha>5{Sj+`oXSJOi*Wcib8?aoH&rb-$(;5fKPO?3Sbob*+^9(l_gsf_O1 z0o@bbO5-Z>1LX#f?f~JmC9*QLZp;+NGCh0t@nbcsPX={nbNO`QPwuL|kSF+|sOXM` zEo;utZKct-&c>!ot|$M&Rbhu;TYGSIR*Mmpgb3O9>C-1s^QQNjSlhFQ2nYpODSEy( z%}2rBYWtP*!BdM&@bKGfQl*YWY4WHm^dC~w+zLCw*H>3(hcVddl#p%L<}P1Cn`-%? z&zJcc5IEhY=SGN{ z_!?saSABO_LwE7qxpQqZEo)Z<{TMR%*W<^oVeX2uty^amS7u5LS6h_q6-8$ZSDo&n z<_p?WTvDOY{+h(+i(mSwuU z?n>j&UDhZI971N~%#6Dkr?It*JNEYv05wO_W(%i@z@)%WLP7CERuM|2_K$7)tf#HL z427@fTlml-5RwBNvYD=Tl~->m#n(8HFH`^Oc~;AEx)H((wGs>o$hGjtU+9p&2L16y z{gJ~%(_JzQ2*Mp7ZdTd9e}D1AJ~?#gaW_(Bzw2WFCv4ih+2G5ot7t6VLiyf3q~~C? zwlp^t1TGgdd@r(N1#7GnhYJ!VYF2T|JBtupdQ#|s>oM%c%E6I_J$kfGO}=~k@wY22 zfE~_e&X*qL4c#@8hF(eGQA1CjusagFsn#mn-{6U&DzJ;wv7WDQQR&0=N7i&Cimx%B zk5|v;`1bAM;^LIBKUb9`2-m~q@Vu!Z?s82&2K5VrhpuoKT5${?48k16o;0=!42YfPBCfxf{d0{Rdhdin#pURNHh5ai@`~qc%vI-X?l5J{C{tozuC#0Y^RAKsQXh z*%;K7b3lvC5vL)FM21xBR(hS?T&CGZqA>q}guS`r){@4+YYR{n=1%uxoDPn=fm|0C7fVl!_8L?^Gv?uW6vjLT0IA#; zyxTTk;od@@Eyx?4cW78{R)1r?AMTjGT#j%LMl?bNt#zbjiXOob1&A)bmF zsmd!WL_K%j-XO<;3TBq)c5YVRugoLvv%?%FbI?2(+&OniLvso+;ev83R;YVolAzK5 zy`Veyf@M`nCOQQ^PhK!61gm8O)BbkpDA4r_cVWk1n(^PltuKWhLevT^j!2)>=S$VG z%k-TUjznuO#&osI`$uJ^t(c5mU40}?v~fD63{=qjR8bqf;%DYgm2UwCAL=;oynM4p z%pSn}BXLd6Mt&34SdY3Z3Y{b|33&=pd0a9^Qe?xPyuo^AfI~0|Mkf^? z_}&IgQTS?!n7&q*{&FYEvaK|0zSH-q7k9B1B!fhGK2Ui!3~@~B0qzTtaKzQ8MB!WG z-2xM$V7+@46>&u$MMt}P_wN(yOtt{0W0*(o?tXXz|FfOS!3Q+M@j}^Hj||G69w*QR zjjY6t$)+Aco~PQT;kNBmPXgO9)^s$dxtL19;)B+}y5Ru9$sOhXCyXdZ(jY^ZgO3Bu zkAASl3%avDu}95VkX@#H3%$Pb9a1}9UfCFX%Px7 zC9OM;QaekX1#n@U;=M)7gFDnFuiR(HgnCz;9-_64+RcMGN4fDGvGja-SivQB(Aa0y z>|`GHbf3A)CBL$7!#uzZ^A!7^s5i0^whH3k_-a|t^v7c^{)lgYqAK6QYSG9}?=6t~ zuUL+z@u}~T=kSXQ5Dxf(waZV&+>pzy7OD4hicTWNW&WugD~SsAh=`dl=`ACUr+Zq$ z+zT|-9v(n%W+@97Q+Pwyqpua~P+nceqNRx4_$g9@hJgcxyI}4+`QoI)0V8OzexXe=JHTS*W!bM-D4v zX4g5NE`bpumfegA7&eVv-VAYpu0Nme=g_y9j)$_PGVY3vlO;wEz6&hStj{9a=$A+B zI}!;6V|Qb+B|A|tx7X2ahJb{3dHpaYMV9#RQWsq4h~c+5T>*2o$kbmw&^a6_KtY_cMt3^@Gfdf@etpWf-heVwCPXC;!%Vn=zI2lV0&G&16uVe9zocNclS2( z@Zj7_XGKaO;M}JfTZ0b5$8>9n;LSYYO!?Lee9GK+l0HZ2JF1mz&<@o8TWJ}U7)NDH zZ&52G(f7;S{7IQI^4s&d@0EM834)L1NdLb@ASEXaBkC(&Z9hXrIn1+DIBAwiZk-~q zGynqldc2PCFqeyD^@BDYK$fyCN1ux{#KEJLqd%IZ|3)-tg{Ot@w#>}FGX+ku~1PaIiyrOjMte38ewXgGAc_zegd3_8`)=iz;6pxM# z8ok-sjmGpY?;O^L;n*TtZIr#J6gbr!|K#R^a&C*ZCH(HNS>NGdm7dalc<|?ekt-?Q zbpgOdz{@&HwxBqApj|rQ*y}}XA+p~1@q5hkzFRT|gTi*tRI8{!+!8@OKT&d}m-r_r~5;Wp}VDs<<7t9(8grS8&cfP!{@6`GDC58=tN3Hoa35%$- zlaeM7NOV1&q_Gmd|5N86cv70s+HO-v-Dq9|)z}b~gx?>DGP=>F&xJCE>IoFeF3+6c zWai-cdRiFIVKJ*X%iV@y;?A^JY>TOaDDetp3^-r3&dQmCtnZGl_snFO7 zrq=ln7tu1}<0Cq~vz?;bh1>{G?HI6;W^Nq5ZYungS58&BsiXwhv(BO7?5w7OlB{HTDWU-6BEQ ztv9#WLW?9wfgOk94e=qCRq;sR%INZ(Z7MKMyhbOY7%;6;ee>|N^imXL2@;z-1TRcc zsM>vnP?FAj->GiR9ss~i=)?6SPq+x=oV$-@ms9FPqdCyOWgOO>liuSxbeck0?qEjm z+(1}yuq6JO&1ZCSOIc~D)dkfe(eY(elSet3QhR?R5iW+)3}g;y9Zzzj^Ai{V6uB@1 zZO3t@yrtGbV=4)m$}iTtH%|cx10C5@R@W)nfO^Ysm+DMbWBhDF*_ePozo6biZN%%V zNJ9z~8eTm?Mk^Qrw$efimrgi|4o2 zXY3rDaYAWsCZUWXDmQ5IqE1i6A3wXCz%*%6dZEPt1fOw#9DaERz9Z;-e6*hu-7|S!$>Lnn}4_WQDy%2X5&r1(rP+i7>kke!Y4=j=GxMW{BzS|%a((nZ2y=zF;8F&8SFLZ7C9 ztfGk5*6Qx`CwYc^r~=q8+)#J?b}&6d&(57Y508s4&ZnBDs0WzHNux789-ghGVmu6e zV0!WTU%qnd2?v$DeAPM1adTMY2`fRVx(h0iZH7uTUIc$l1gJ{o(D}ZkEf!8&L~=gk zttlu+{n$^PG<@sj>ih(7PI#NF9UiZ>SbHlD?u84+vb*Bum+GJVv2*z#Ik`v_NRnw#)o{Ve30)-IH?9A*6hvdy0`8*Dmft>F6ZUv8$_rg9-A76y^>E#hY7Y?WiQdc>(yW4?(DW#gl z;x7fK=c9l{p6~SZ#MT_Dav$@6M?haLU1E{8D;?6otT?*;iK=01+I-M-h~lre((bfn z;igTS9>m1NoU+AHf4b$`J>Y98RE6)<=as){cb9N_<$|9HSjuqtFf3SNsj~ejj+Hn; zB}M@@+>fiJNsQ{BJt?qHuIs4-^Zxn7fJJq_dtxKOBcfSDXuvF62_xR>wWwF0_37+Z zFY-Zvj_CNFade>3HV%}QSIiZp#=B|tqblP}mGn!#8b?R6^y;FYVmjI~)YRBrQq^V3 zS2bDxQyTR%*v++ongbe!h+OUyvZy3P!(zGus^3!PW-=IG@G*7bFB&Kljm##*X|y}X zQ|L)mi}EgO<9T}s2`5t#-^I6vl(3^Z!P(`Y2avH_f7fq4jD-;k>rtR|lg-$_{ush> zBF-4kTe|WLOiRyU-Fn+vTj8Cu7~l)P(Wz-`sE+!9>wC1)v3Sbx^9iR9U7B}Q!`>5w z1yvNv)}&%T8qJoSmCOSfna`}?BUi)V@{>86r}@!=qkh7@4FfC%${M}fKX$?wqCkLyyqpjYF zoWBx!EI%A2hZu}I%=2DrRrg_ zmeKvi2vvoXKU!ox)PFDM1W3Lkp=K71W$^g9GS?h!wL1|U75eT@hx3NqDwAEv?ncHi zuO4n{dU!&C?B1k)n<$kQ+B$8 zGNSB8nldrfNtS7$v@TyB5SJ5(vP_>e)1fAEza6StERy$}+VvP0l zRzLC8VlCISDH#m=dgn<~?P5A8m{Ho`I9n=iATNv*8fcKSGH+J_9n0H&YbDEyai{NN{>PjFpV`~L1v(#_#oirRzbXQGa&&bocr^#Xpmv`P$f6&-QhPo>B_N;tnTh&s6 z@<5AG{-Cg)YJR*hZ(gUX7JCS~ENOAjy-2icK)zsm@!H=asbF_@PjBRrX8Gpm{^ep6 z7`q~FYcB>8Tt}x_m_-eQlxhc4qyjPu@7>eS!lckPc8;& z;HW1&wA4v*m1;DjDiOI{le*sfoEc`y6-Qvi3#A)oeAmUyOwraU_FhE!#Ey{lG_M?o za%JIEtUc2leF#)#>|BSw@$l4f3Zzox_sY>77iDr)?5;V>CAX|vb@%D#&>A5q7mk|S zJoA5hOYxXsj?1{o$6Ox1JOPLA$0L#@5OTEE7&G;fQ>g@ zHwSg-qE(M)Q5<~4$fOtLnq5H!^(tmgF3Nlcv~b6wYC!92$z#L{Qt5&0au9A`Ev7T6 zlw6gFUGy{!a7gbQrAy38CJ!>!65o`se{*8Ed!@-$JbJvm#C{KPD#EmQq2d%)f6 zz?6QOx9B7o%)lU_;l9>Se4%ftsGVZ>je53m9K?ylN}hOyf1}Xl+FQdvf7i`0PC+60 zWs?=>TAyr_4WTFBj56^BLqK!uKDN+9SN@wBEg{|u?u84>#EU1lwZgC<$M3fSmPdj@ zX?b*Yr6}yjMXOhlX+1Dzkj|>fOY#>)U^DG{7Xc{PLER=oPn+3x0ff$`n(4_a4sKQG z^It2|+zzN`Q#i9qTevbaRo^ONq{xC3zRQyl?JtBJLkLc*E;9p`LtMB?E^QPu%Hkd~ zLS1`tT0VIN=rk$8yzA4OXgfjy*`a8nIYkq#wiChi2B8FhWdU(9^e^=PL^d5TK;MwLg9sGDyS`7tcs1EtTniZ4>^8FhJ1OD|WLW3}{Cu{kKWo=!cU!E1DXsL37v zk>&E0bY9!$Kwc!ke|~U9Z7Dam$Gi_~(W6O~d1$086O|1HH1TPm-S?rM4fhrJuVWDs zqxCbChJI_W%T#JT5K<_jz@$9-To8(8pTr$EDnvBOzv`ySxem+fhr-}-!)EP zM3xKhMRVTNjn&j;)lH1mslWo0XM>#tGBRcmh7H5zm%5+_rm-8*Uy(UM6|vbaQ%sR4->809-<8tTS6t+|!I zX1rv1pjH`jC5%wr9H%OrF3xZrJa{t~r>~Q#@ISIa0@PO+1>XiFVaT3970(+~&&@ld z@8MFE_9{O0Ly`K!lGdRHfr+L6jJuo&gc!)R>`vK3w?4whbeyFxmu%7eFQkirI1mPW zWFwwT`xwB!ip;aJ(jDZbVJnjf9ox1SbOgBRl*yWG0t{2)G6l_koMNZvNR9Sh)1ZoG z$eg3<1iYrt#376i&tAP?RL&0SU zy#oPHig04%*b&YhJZ%y=`6`vAcQlwMK3gxYwb$j3A@)GTk%Lmkr z?yUUb`r4lsXYFs1-WvbsqfCicQNB|OWcx21`#dz&VtbrO%kOh8Z;dece&FeX%}f4T z_%f;Qcb7h|B;y6*mJgc;RrWrTvtM6fT&!puRMr;jkjZ)B5R~Uup1~RBrWIMN@c*nJ zdS}*uEPl$Hn5kj1@t^!Bp87xdm*(6kC@A1k0WF@)3ZQbXt2TX?H{@NBcofe2Z$F#1 zSy;GmnUs_i0|dOz?Q)*r1ia{O$l=aQ%2LeOo@E7s^VDs9FP85z;kDzXRM>gu!dz$EE+SghPtjFj>>xgw&>R8?;QQ$^{&?J6oN z$d4Q5WADi|2u!k6v#ctOBX-!@+Ll%)XY>o!Afx4K6znKzWD4Aj%S+tZ!JtP|v>*zV zK97qNbsB9DVD5Zo<G#!;%-~GH}TSiiY&_1tP`;Pde;U}AyGRn zKLU@;hO~2E%z3OIP#_s&l;<%GFg-jxd<`}->R;b0eSbN%J9o7^-8aE2f6lS6uz0iD zU4B7wjg?M;5wW5KK&jF?l-upb4B*d0V)g^=6wDIunqT(m(+;djVdkdXaw9;PoHjAJjW98w@XXn> zL=Utsn8K3IewUZm5Ig=Yb~KC+w{fgIUY?>bm2fae<4xzs*PS_Y231&DF2|33c(B6^ z5rE3BUAus8;;U~rvy+_ONT?&;*JkL;^)R$8L3PsEfBp4W{Ud+Vn`O~%l!uqA70!X?Cf+Du?zDw7z}QM57R-n8IBHh zQwdFmH09wTSMDSajc0Hf+4#jYmjZ9nx zV#VzLOmrx(Pagd(T^dHu=O_I5S__Gdez5(*g1iM3SxpI?h7&|O6%EmO* zz?(U=0~vtEnn$R8idkhGXa^W!-hW^H=Nn1W>ZLSp`Q@w#C`ub{^8Zj??!&NMb1s5t zrP>@1FpDyi#<5&xX`NbJQNc$fd_=I5wlZR#V^{nzM^YJrA1Fj)OH*qp|4kRi9Hsy4 z*|RlFy=Il)FsmQMG|ioA@#$Q`7#4U#u2`Y`LS}C?hwe@juOnQ~?C)v3Z-%-XP$e4Q zcH2bl9HLL#E37?DV^R2AOsTJ^DE5to>$CAngZDn7yS#A`XjhWZM02{|*_d7bzGgMEqJB*T z+8iL{89e;nXv|T-)kemhXiG6Jx`-c5XBOMs50#aEVj9$+wV2<)1kK#WqHt7q{)fDs zeDUN9{+RYpx5hVqS^S?t?4e1ygL&nF|1?DXpI`bvt;hPG(IaZ_GE6*sMRas@oFiv| zA{>g9M6MXV_kjbvA;+CcyJHgijUfP!?bFuLX;4ub**`jzqvQq_nyCNJ8<^_e*tGs| z53hY`wu=c~R~J`SE_0Xf`GY|!Aw1{ogI5gyP=STO;p=LF8%(I>LA_y?Z)?wWq*eN?7sx#rbbgu80RIja}ZeSTBFpN;;=yVP%yK zuy%3g$fwwz@xfyd#mM7eSQr$@Wx*Y}!R9orOee?M%wK|0C!-piYTUVscx>Ar0SABi z6WE7En3}2LdX5IJM8z};B=sjo%4q6o<=zc9_xjsP=h5zf7hv`Y9%HXmkR@}L^v>P8 zch?h>jVStLe)6+tZ^-w+g>)Sm86iY}xs)k8J3Bjyewo}m+%TW^{inQjm*D-idclaN zFgBmp+{JUu4&iP>c4K2BxrCSv$xLj~Z)T1}X1?=v#*)d+n}ul56wc~G5XPXGc3uM{+{8g17#UtY2z+#xDE8lr*_( z)0?~y4n26c%$-^c-DjyGY$)Db1#KFaRK=U(>%bTOU9^;=zE&5;i;}xJD1}ONrN~|>DqG0DOrSVGxGCdN8rAKP#r=S)}M@Av-W{^xl; zzvuqFo}bsN>uQo-PQit%dn8HZY6r z=UDyev-@9DNUAWCJvTQGR51o~%Y%c36q3{{b;885E))&47N*HV``gXO#_~U2wg;u- zzh@GR=0PYjEco#ItOpMspiA1OqGM|6UA$0kIts0ozMsQL#eH7M{EMZo9d{3P7F<`J zXK%T~wEpN<8nzd**v^u@0;37c`M zqq{^j+*95lSM<7hSo5v8D?z>CLJ45;AZtgC%haMXE9d z(>IoMwD}xxBw=CGh4RJZP88~yB<-(_!HJ6dEZ$nSwiDRd6|jYy2FEHMh41NpplKra zEbAq{FGE)KeoR*oJX!?YFr(71{Xa^1Fi~-Ps8X+V8Iy)tFj@ zc{3L;lUY}K^6=J1B^S#M{VivHNvPHD~HmODvxhG-MquYlgXxrz{BV5D{O0RrRlPK z-LzW7oOh{vR^0KPBSi?XS4wz$$L}}}Z=IekqxLJxnMCZaDd5L7r#S}uk!FLI$0etw zVHsx57Ub(+;w$_{p6bl`NUEvvm!tiB15~5u29(6^o};8PSaF)?FUP4IwuIyWG97!e6q1Q${ z+F=ksm>tudTdw4CCgKlV`*dS-`&?&-N9N$sj+AN0tzpQYIiOtzV zH#dS^^}?t{8*n9U?MwS4KZ&oM-^P4UZNVC(c=g4-}Rqu$SMp9|D8?S^x3PsB0*fa8-9IQ>7>=dw=PnGu>E zfT@GwStssLg(c%XE_SBBz|rEF^WXp(3k7tS_JrAK#g2+lny=E>IXaaPP}sd^x%^T;mDE1?uV7PooRe6?!*^E z!Y2mP2o{blP{^1Vh*oCB4rr*=vnL8>V+;5#JWV=ZyjFncG#ZGfStKl2ooA8HxuwkU z>P;0}!1J5#Q#AVdho0`8yEOR7%=w6zi=R69Hxy40w6(|MNh$~PJ0nzOcgt|Rw6b5V z%IG(mflZw4xsHM9y9P3#`$~22*_)i?Q>7>f`vn|)s8ob>Xt=(rJeUu$x*T3xuowhY z%?O(lG%{}XeKGU~iKv#*bGrcV$h41ou9UQOxU|5gc=v%bpb+6C*33 zWi1y;uMxSQ8mqi*#YHe{qw(XljPVQL-9E3jt&PHU*yg9aymA%{t9h*tERScNV`sK3 zeM0GIP^aICi?(f*#}&uZMlQ~s%$c(e^{{ARDG7L-N=_@&tC)Y7rb!m)AQ z`fmD46rbx|k-i=G8%xI4xA^5#W-IPtRWyj>$ro#f24bx_p51Aln>BpwlbSvo%&Lhq ztds98VHKx3BMRURF_u+MP}TCD}P+ z>5@VT6kot{iGZKcBG26u@pjRFL#U|5dFHWu3MWlyVD^@~wO0{CJAV%D^PCBS@vfy1 zAgQ!Xr4|fs!4?Hh`S5#{IG!b-&>p@5!TEW;-W*LPZYP-ws{2van(XX2HYaxXbcWsiWS$O2~^RI^X5ot#YL_ z;+tXoTswyr$}9weB3g%Efr&<*ot5uNDUID3HNL!J>`NZbB5r03r}OmS8#_b&u*WV} z=HVI3OmBI#Uh>kdRer1@D!s#DJfbDL9Jq`rU4&vs29!r%ont$&#-v1Cde{1GVynPa zr@n|A->X#WW=a!CNUWo4JoFljQ28^e`nU@7^l@kB^Te7%)F>aOb;Wf}Z3$b3R_z$| zR-irwo2;62GW|~QVVte^iigCZ_DAD!L#?HM(#qqvfFT@SkU3ya6|V7~GI2+sG^R_L z(@y&?SpM-7W0Rz}R0nt5ojXTALFA#*!8aE!do9WUf-(V7a@Eh*hGEkhygBh!lT;a3IU_ayX%5@0}I@9bin0u5P4ExhSCju@_`(ubg67SW;K%)bf zmRFDMHNxKSDU;e$F7CW{S$}+_0a&deNBgQZQTBKr1-weny$t)keahHJkUG3<9qSjC zskwAw<(4PI!dHj-`aaM4fCmY9ooQ=Z`*#vNuq)rmno|t>{`kR}+6~X>q%a|mHl)3s`%k6F-Iymg-GV}Lx=>%N1dtFOCpO@uYuHi#?1go)^6*-}$oChbg;?eD1&An2C9 zLS0bR5i?lBC*rZ=TGp&`yqT8e-&uRC3Tz&eqyoTi23-GW@ohSjvshmnNhJ%k;dI;S) z)e1hC(7T53a4z4Qs_yh&Y{mR+V5>nqNkbAvCEV~Bxs^^jCA3# zI!pKhlY{SRX$k|UW;zX1V6ZxhQeQ`F-i5;@J~8S&=-|1(Its#B_UA_xL!2B5!^_WE z!M~o_K9;wj7hZ4m_*|YUK3&>yv)^J~-iEKQTxfXH zxsIednS>HMy!Tx2l*pAQlgD_E*nXwyAxE{X?NC6F&Sw96$`k2g_g=IHS>NaSfJDc> z#gFK>Yw8GJ=)u7dW@>iR6q(;6v&~$4p5M8_a>Q$9`I|eoDBLH|vv*R?&<@*KR4v37 zEFY)HD#tco(6X)dIoJT$_BL`vRAchxd)_N91bwiKbd>$;l4`qs&A7h#NGWU6TgRtM zzJUX*jjCd$i`{;OEi_(xK%gjnJk zc(wO!EWsO)p?`_OcV=fiu_n5URrmKPeI2_cNO`4^{e;9*5*mECLyDg@7-+=P$?7pW zu;FdT+gIPK4vF7edjoqobJ^;Hxj8w48}^AZ#@saH%-k*TIB(zc1I@*UN-9 zhOcyu1(%=pWO(dWmsg;cfsA-uw#CyQ8HWaiLVR#jW7u$?c=O4`8x(?h7^Z!eT6|`t zRMVm;{mHPGd-OFpQ}1xPZL_NtVH3wII@sf7mDOjvPp^F^CWVc}Ca93E9*jGVP72DU z-qT-c;4e2%3(6Lst@A}WxD**Df__=#)8FS?e=0E%l`+8XRN6liZkr%phwWoxxq0n0 zr>wCRK&Hg*%AI!!y+*!8?pp7k=jKkKnEOjq0%TzNuVR&-MElN~kq)-8-D$n4&afY1 z2^%4hfxxgP+PgOyKRbN+`*%;d(nY^D{5!>7?Z!sz2@U?%JbjcrhxSk&&*j6ixNQ`y z?fK?>a5y*O9Z_5m5I1upxiKj=e*FdZcZ#3MNQs9-4RrQ~%2wPd5)X#Ry;dYJ_CU`> zY&WXDw;ThHo*RtRB$FvxBT3z>1paL3`m5pX={YW;d9L zo=X5fHd;wq`OjOfTGf~IE29QwuS`SsL<`->f|5sG&&TmweB`m5N2C=^(9BE&aafX8 zi_f{5gr2XB)a(%DuW=){lg}Ud_>`Xg+QBWu>N6ZO%4W@a11E=<@pPwpg~yu(GN&SC zCkrT$f6;v`3MV$b-MeS=BSHqc_=F`jz1TSyU;YX8quL)o3D!_H=RqzBSJmq1gyM6? zB3-ADb(ko1~b0B*9&(_j{xbEggJ&O|BVCA>c<9;fO?Xj~6B}md!!P3omdJ_^h z%Hdl}6;R}i60o7tl>+r7@zTt((JS_N%Bu`nT!#cd|1S5ALH^Rk51%JiIe=NH7<4S& z7=~Rq+w21%L#GmRzL=hG**T+fumGjq?ZrdZz%ULkWSW5a{nnDDiHHKvAyyr+rT^rGn>Qr`TRDX|)gQXgmTJqoMH z(j?0OD!VZ5E7rVx{Mfb5S+AjvwuV8v9`qyL^DA&5ofJ~aZ5gH#I==_JMuj*`mj{Qa zr}bROz!FW>v! z9}QE02Y>z(gs(dwWU6&T2MaQad!)SuapMSPKo!&}!348btl#L7aqF6K*-IS(a0Xoy zydk?o;G6!gVFZV?k3Y%~+!8xKAsIR4l>xbtJS_w|>Pe-BRSWZl3@vkmsFQa3U5t^z z^w_fku%5A@L3aiBhODNQi#7c@lzHlmS?u~=dwV?STR`3-YCr5qH(P|D5dk%$DT03C zgzBEWMM`jRzRQ>H{E;_3LnsC8wGkgI%@ep)qJYyVop^0dj=U>VDtExq6Pr?77KWvV zZR>+5Zg_IqNXDeywr_OEgjuQT3kgLnaTst^rI+;4?1V)ZEwcFBV90I`SrYU7Ru5`e zJl3A7VEZvHkJ>7FUUePH`P(9?TOjxG_*j9G)9eTy=7qq#jCYs(mefEB7(sP0tX?352MQWI-w_u`*uYc*uYu^C2{bKvKa6-g+O&@9*%9!9eRTdQ!TBfjN zb|`%bfnyFt#^Dw{htT3D9>ftE(y z{L+mM$nITlo83y|TbilZ!M#qze3k4J&c+Q6-VH-v`n&>T(%=1PNWssxqlgTGzuN$N zTCLs3>0q zQE=uWn|xdlb_TC3D)A##6+GidkT?j!taDjpvvi_9i%6-j^9Jn_<050&$8dEn2pBL*#+Jce0z6?gOUxCD(gV98>HlxTNssnA^}NC00eGSjskHJPx<8Qzn$&@+13|nD?OQFh>fVnIes+4Fj)O!^`y`B?sJ}Z;>-Wdy7{DKw8!x z@-tDIcQn#wg_|bAA}5tP?*N~dm63i8V+JPX(w2pjSCVHs(? zWn_^6H|b7c%S(eZ)DWc(SHtQAO-)YO{!Gv8UUiX*RV*$q z&EMz5oxA*Qt}!lG+Nm!2I<$G*w#q|lEqvO3OI|=2ojMw&K>1vRYdP~hpvf(Ehst@_ ziYQYj>zcBP7a)XYusSdAd-1pMM>kPlJsp|~`ooupQ*9)tm+_668txYG1w{#ST1K-$p<32T34oFz_IQ?-R?~?wQnE- zajo_3ZeXkm9R!6jv8a<0`f9^(q18DUs+e3l^443N?cxue28ZYSbTsck<2wjgS>7C& zAM}5p50lVo9DD>uq!+A(q_B*p3=e z2))2DzW6=M<}~6;dSae`2I(ytbi<$?dJyJ*YE>X|d>5J0Gox=aMgezlC!@gx>VRf!DxG*xCc^%V`GLSl1p zU0U4hS_e2Xp@>eAX@?$47G|MG#gY zx0J&>)><>vnj>Y);3(%xWBNcxuswAYCWSrVXt4SV9OLvap1BH?ZbZB9s8yzgq>jco zmPT>+#Xn!Pbf(Y^dQA|?#8s{Td3aX&y?emlLF9mUt2pErAPIKstMq`#2D*=}%m1&l zaJPtmal0uoKM6pZCoXdM{?I`Q)SK$fi|AYd0ToSzKNx`Eh&$Sqe~}X;ZOZgo1*CA%qa!D8gt`&haDv<#9?`l;ALKAc}U2L}J zAYKJAHD3wOK>5*M6$`(qFUS!yRhUEC>DhJO8nIUcpH~Ar3iQ;<%I}FJ78DeCs{_3f ziIoAZCuEmn>C9!Mw9HO@@nR>ZOUPDZJPIk?HN04gdG|(wn{B;&Gci)eFNs^ayl`=0 zF8ffp`1HG#7Z>JdfaW8&9m)41;uC6IjCQoMyFJG!k}aM7BzqJQ^?_>o?hQ9u;;aLr zwpznk8znEY7DIt;n@R!la5rdioI|4c4!^Bu$-lk=$QT_>%sY?>``TX2i8a$uO^I0WVZJ(-33LH%?e^07 zUR1X>&ntmUCEs-v%0N(Jxs9`Z8d?zzEeW&eTe1__*U$Y5i2SUoD68$_|p3pKcLtb_d8dP*Zpaej4cM3FId_qdt zJ9qBn=sT8$aWc9aV!dTHd68; zWVFR|Q|%daw~2Pv$gFoGgsZ+qqdC(Hi!-P9+f%>Oa}fjqxQ{rXlL4MvOxC>Y>#dj6uio4OPAto&ioF*?lU1RRcT>1gQ403JX(Tn~FkFL~z4ete6{=?Gce; zbSOH9?a&5!JzSsgpx^ijpV@F-xA;FGEcTK?6~muO^NVK@&E4P19vCM}R`LKIwGQ#X z`Wxn&sBVuY1(y0i`7hIRaPYXrhx^np*^arU8%x835CDflcT`L52TLlHsShnT$fo+! zZg6@5F}#()m_V!v;!2(jvn=Ib`6mYsgh~y$BVPr7oEdyrR5;94co5aibp`#lZg+{K zEg;kia>~LAC<&=|n0A8T`lIE-pqe*5PS&^MC-^~<-Pu?=*6#W=(` z{&Z~b3v)<}&GQz4p3*CAph1}Z%3*0hkP@uyN>&5L#KO!EM_cuAefI>>M7FPW!8a?-+3tIR3gV$q@EyJ7Eml2yZCKVq_1Vr;;1_(J z82kS5&g#SKD!rjtt#9c96$fLVFCSv<5w3)#$B7zB09#Ml6!2Ef&AuYY@;%LO((y4E zLr}9Kg?wL;Sbw9Sq`44QTIKqe&WNoP?T>Vag|o#IgMqPI`v(%5DmLnF5}%yoApG~k zxCc^b9V)&<hkIkNO0V7r2 z|4aoIX4)~*_e~2)EQ6hwir8GF73Oy#UGlC~Q)3jfn^R|iymb$dhXrW>Cz9O5u)-cV3Cr!3 zE}!&l&WFTLRgHgYbF*#(B2)l-LqK5JnrSGn#wjv{51ecT^xSs2(T=rltM~4fVYnqk z`m$Y`A%#7X(8h8F_z|1~(0GD4Q4B_FdmuI8D5`KewZDQfP*AN|v1Z41fHn*Y=f8T) zG~F}#@hLbsCX$p&T^o&6yHTrbUFl!jreOJfV+3byl$$x+BaCGoCr?zCfU7GnjbPUU z0uO-ggURo0j*Bw6P)*I9$_tlK$N(6>JB8{Yjdy^%lDDtyXEWNeO?!czB?R?vzSr?U z_vE?20B3@-S*~%F+Xcv>Ug6C|1|oVHB&1MGnrA)g;V`j$dIn7h94=AhhTK#y1F!{j z*HjetV3ftUJ(qI3poaNC=Euu^;6eRnSw^~iM3bxfhj48^VQxm z@UUR4Ek~tA4%T>?sy^UWwe2^Zt><_{Idu_UqvkGjq_&=(Ipld959H9=_I6ghXJ0wdmfzGHm*>Lha)Rik-zhliC^F_aFP`*#eC67w*G-#Pw;O25foH6*6p+ zb!2gVjfpGB!(e4#Rdq57K;I&CK5Qu^fuLW@wj0d!@$>_9=h#FkXH~R+J?#%~hp3u; z)=+w3pQOWvL0?t`xU^8l;ii;0d^Pr^)~!j5kT7nATFl|)9<{5+qv z$b_5bDT+B=?map$Ie5e2%#+nNQUQp0P?ji)xtXQQYRivtxyB%Xo1q5^ZK%|+^!A@)7;Hdmn6(nf`++S-1xkE{3+`J7DR)LpYvO*$~>SA~)^g}l10PT9n zNwqN*IZz)&u6S(4%!(c1yYIC{_({mjTK}1)1Qi-%FE>5u(o0sXc4V%h(xN-tyk#S* zOnj1zEQjR~d`p76M=wLQitR{78=}lwZov49c%COqF7P%3o@H@c90bewqU*a{sn_EZ zp^WHI{G%0B?Q$LP96}~|A$f2VFj+n>XBZr3#f!U|b=cZV`UB(nM$#r*5W{$MR>biL zVZ8HOR+{{tJ>^7kKbI!E(`O&fIff@gt&w3eN<=~ZwT|X*xT+s?sfl=&5rIPEJ#WE! zUUiG7w|uTQPF&5MaR;zMMA-dSKp<*spG{Cy*uHkTgaMS-FS&8NHE#rWiJ$s8itu#VN%=NS0S*&xit*FSJbm=bqMLZrv9gscez^@QK1dW=H3!i*Rb8Nd{^UP;syn+N|m8 z!%@KB{mV+fd*jM!*j}pBSFa;}52Wt)_wVz!x&}x9QZs|>@%mP<3Qi}v)(bA7;w+Rb zw6!6BC`ZaauT#?3L8OTZy?vV734yNC2wuVwsQVdiAc49L?=R)xujm$Tr=+Fb3l6T5 zDU#-NLITt(^z?TME9N`>1H^dvSyVqi)|ny!fq#MW{#KV+j1JB{!Ej|7YS5T1seb`| z+t8wd&=SsQhLBTSSC8S<1#R*jRgm57*xvoNQUC7DIK2Xm<5`@|SVS{MOxh5hv@_Cd z9ccUqO4(2rlw1745$e+CC{b%v=F zdWD<-<%|{=+_7xWcShh2>8gW6?dE@tJ=k%d3+BCp>u~7>a2@4Hg~Lb+!3RJOG|>xw ze!mJZF+y*yeH((H>e65`1>VfWPwUVmtSE1eOe>H7!$Igqt`PH<#;3!C zP>y(t-G97#y~N4SCeMlhIs{Fe`+%!GKa2WX`*kfU`}cXm^nzcZ(+;kMeg65LQs-j@ zVhfJAT7RiiwHs(8AW<0)X!y$Rg??082h*3>03ZWg`ytM`)VhOY_n{HirI!hpN=Jy=jUPc`E8KqG0&TU2@m2ho%m$oS#;Y+ z<+xyP6dDl`0l1aUieN{u^FFGdB|I0VNm_4lav=e616l zJxP;=4ZyO0b7D>2Wqr1c)=<$J6mCD=zF-Uuv2?9OdH~k7}5F_k!g{^uHEDYX-ED4 zWfkFbouq%CU-;917g-dvBLCH53a9Qv36%@o!nboZ0iJAyCQ@WLI6wcA4}d@Z_tcv~ z_wir7u$;An1NGlut>=GMkDF+7p6LI#+i2odRu*R_s8FxDXU`+LNvhr){3* z3_JP@dPbw5r#p3&qbGp^++Tt`vtP$$i$z34I4#T&%m_(LF{ud(O3)?F?VA0}={fb+ zi1VH8S0TXANsd}b;BBPeqr&kxmigS)Wdrc}96Xve(P+Tw>MhfzEFO@Sl?_9Kb~rt_ zzdp?u2QB3$H0X2YDjD%${BNdNkToE_%QuUE<8Z1O2%l(96!bp?w&k_rUIZhGZW0`6p^~y4QV? zFVj=%*ubwoqSZWapVt9xYM#kZ*wm^_g^MU%n9QJ8%bH|;Y-q>uzG`l6o<_1H9{n#O zpMfAGRA`SyLD@lh@~a_C(cSktC50DyWP{QM3X3 zpYKmtu;bK^B%p+P8e&f*75-V|!mIT3(7Upw${>U!w5>VALVR(7xfnl5{}bbss(9eQ zQFtXM@;?e5nj;}%-@1R%k~h?v6R>Uo_h`czhr>}{ftnH$RYC*&8j}sePD-p#j&r{d z>-1qYs+zvr3KO_?!*n_U+2WByEQ?K3NUI3ul%|mP|6y5&Q~(y{n1T_1SQ=lwb}a;y z02Ppk2h>`!ZYpg_<^-s_jG+$J4l%lCK)8Saw4+BxVK|c*!5d_@L18X*$_&RuTsjbj~>RH@t8LaY3GwOXaSxmrK}!!ZhkS zKbfF`h2HvOw@bWPM+pQ%F-(_3`cj;7@_diQf{o8il|?8={!2!VJDG*o7z$4FHPm^% zYY?Nyd-e)<>|BC51N93Dnf$J$e)6l{-3JY-VMRI5Mm?oZu_^?P%FDhb$D&rRmw;p# zA`c{6avQY4%2BO2drc$6_3IZ$_!qmx!{0k|H`0y+@ZeF645|8|scjy^IW5m}a?S?`cx1l{3x}>x{4D_L@5-5=*$ZKsgxu{X^dh(=xr) z0RTA(v?RFgWq*zESNy`!;f+GuHRonz5lfRX3dF{n5??ZbxtBWcZqGu^64sleuW|d{ zKSya6__%J^X!3T0|KEC?G!5PkErkV&cv_IAuM9BA=h_|MJ;A{*UkZt@hjKe0!}5jF z>jB4Th{PODhpyu3ut4h3GAWU)LnSkaXIFW9efJGki4jW|bM&u&a$=}v?`_*W$9M9m zcEOj`heE1;Rh zt0NE5(tz+RZ|m-6mU+qfpf1q>p2Nq7zDfa!uYq0Z(}R~9=k!uN2*@h)gEdGH2Fd@bOB{w+c6#-QF4Qj6Dvy)Y* z;-`|3VM>MR%Swn&d*DfW`2B}EWJ3{XJic55bsI$uubPdXWn|QHCm`^Pizb4aOHk|Z zc@Gx=EKjq-=@&*$ zo`}U=!DhDV_N+2nR7pA6e_YpMFcl>-| zUE$z#V^X{r{cM78@>%^Y5Aalww3vo|8DZE+L``b?oXx+dG2>Q_ImAYqBxb|4&v_8G(Hg`nnc*cvaPg$U7bp~u_JuM_CA z^EzdYfP4+-`9QV6zZ8v0^k!XD#Ft8<^pdHq<# zKSw>o&BW|q3|*E-_2V&(LCtmq)3@+tTqZ>pp*}fa?XH}NTc#ZUI~&##LoG~+EoK5z z4BxF%#gnkXo%_34biN~Ojz2|opvI0`fft7x_@}(*JJU81Uy zVf=TCQyxkQol8FmfVhieMWtg4P+6d1Dwa|he^^77Tqs{Ud#_?P^~E3#wc9%X;v%q{ zso8<(G(gQPguEzDB$8Jm1p#gCNfU(~Nk5Bfr>3FvaCYdq=k(lqf#rS%MX0*A+D_b8 zcE?(h4icEbYnrV`i(WQ(I7;pv^4^F<5+FbZw-99L2VJvy_G$_X9Z*@Bh&%`ohw2?Ivy#y>U8J_0Upwvnr@&|*@hXomv#>Mf zx(v1y?!$-ugNaOwZ{Dz!-1kN>L&yU3Vj0jKJlBqjjMHCedj5H%q z|I6~a136)vz{yU{#EP@^?Q0cK{nZoN7^o#=$e1rzcb+Dn4jqa{zes%Zb=RqYGq%RXY12I5Hm7hVnsv=ril@_Fj zfx7%Ys=ipttN1%^=sOHGU8MNZJl2FgY`(0ixjBCQgV%8FRgML_ZQD?%JF7-bQ}Rka z(5lQ(v+9wI-@YAjM2g9Ym{27y;SbIVNS>QcO&yC^&KSEGuTL~;nm5U4 zLoygh(rVYBK(W_&&G7PsY-nm~QSp*F(g}|bTsG7Xft7KfxcBu=69UO?Y*4r}8n^)M zx$_Dn_k*Y_lo1+;L-H9T3i;zxrrvx6Xn;_mJb|DJcHJZ5T!Q+XPjfzaKk<^@JLbzg zqBJ|_vbHg%9#fW&*HXOWp>y*d^sD^|X4TnPI&a=%m~3-z&Wlor3Xsy~4@DzLpy(of zMR;g2p+qe#Wvq03VX^d}w!6*xKR0MQAN;g8*!$vF%kV29Id;{}&!Z%w3c~Fq;=ZtB za>L!Dr{Z0s?Hs%*kKI*kE?&IQEnvBa9c-+7AK*4P=EE){ipv%2^lW_8 zQCh5ynfT*(aENT#^!?a}S2h!rH!pLq{`p*6S9AxxHs0==hUe?*3_@)jwh^x^ztc0n z?G0|>!7cMLo2W#csPfl%nF3J)pJR`#$xHYaQZqD*TxujZ@yU3FlP^7`^t{qZ4%?3- z7o|g|hy9*u*F3ACh?t03b>B;uZbryNI~MfTj%})w&UpFNF~04I`20^h>|~YgWOGr> z#HY@H*Xae9R6K-MF$zz5@x-~m{i#aBrV{t}89U$ZA((m!K2H&~QtK@1SNX0Hd6QpM z-MEpE#b@2rB-l|~(%yb;U|;_r%=zWhpIu+-#<$0S^2ObqF(CnW!6?D!SPg}1`Z>%L zW9m%*<-*WPXxt18TruG>PVc?C&~8T0ZFz_A?H!5tsUKg1e)gNeSefHAL zqc2`~ku@C-g+CvRI}6jyii!rwr*PKMgjcz>UwdRp zXQN-x4642~$1okTd}`u03JX6CVvr37eTzD+bv}&UIbrA|ud@5JO1R`M{K-K0f(vWp z-2?H{GAg_4&)h#<*t$^>{(hU&bbW=|-sMYn68aj}x7g&TxgV&Bzi;Caq#wUWVZO6X zbdUPw&DpcwkJY@BUg^G2TdNbW`=z>Ltzty&HXPqNNy(k6)Nt$^584=2lr^0Yojp?9fx)sCX*2iVU2mu;f@Yt4)P zI(PnjRQU;9`i?#OKG?4O;QsgD0uE}C?m-WK{+O-T)Of8UHXG4Hh%h>PwJ~D&LJ`B0 z-DgYwnv}L68{lvYf1lZF(=wN{m@_`k+mBG_e zDiOWs&Yz1ZUq_?OzgF<{xM9`S=0d~N3D((hihAhE!P4jp#Xqi_4Dk5jw7<`VaMvnT z>Y!drSNOT_>$9Y5V&cQ?*L)~&Vf&tKT}8g?Or#7Bh-xhRd%>&-AE`w&D|4_`Xk-_L z{`|4p;qZ%&ZOY2W5*u{}Ms>s=meoJ8{v_%8dMNdd?g>)!Ddv^Bq`hr9c2(}!vAR6z zz1tjb6+KBIlO>7cqM<7in1^bAu3l0Q=+20EN^FVyD%zsO=;Iw^wOl>M>i%@0%pEom zbxC)~X}dtGwqau=uD}LksrDa-^4rUt9KDJ=x~{X;Dsjr5tu7Vn7VFm2N*q{67=E0Ta z?~k|0IXy9Ra5()uOl7rmW}Lcv_6hyihWcmgbgwto_Fc2@+#t4l-@TIQ${1hK#Q9?R zRGi22&ogV6XjyQeBJMK7f5qF~JVHWvnPbkBM+q&3)N~d;%09(xnQ+7UCv6wgOe|vLuDL%?z`|PA$N4oUInJ$EE zU$R|{`-Y)06(!h<1@qa7PvtG+c6mn^*@UcoJu)I!q&u=}-@ZfZE5e#+VHz(5m5OaV zr~{&WvzO=&aA86t;}>uah1uh6J0*8sh#z#?|Cn)IQq(WGhc0V8pe@|@X5x#XO|+(x z(vylm{1>?J^gm0YvB9UX?F|+yS)^Ox-AnbOA2|C63}Jdyd}7`EZ4N~<=UU7f4B{`~ zS;Kt~YXjS76M32x-6OjU!5)g`GuN^&4mlw?jv)@gMs)#Nmqcmv| zzyy9#pnp9Fb!DHo-@ew^d+Fy|RIMs<*}s2tZg}{*z2cNmn>aO*ESEgqv2WEAGC0bM zR@Fx1i#}#y)bN}6#%1o#$6r~@&8boM!1k0pVK7L$f%6)Dq%`ULK3ztY$9!!ka+m}RT~ zW5>3?OfPuO=U9y2OqO4ql@ZPBn?7DP72Dn)F;&#wo~mb>+eR`i{LA`mv{f5UNz-v{ z(dtKTJKwdMq~rDvit@SS-yBkR&TIF6GC${6`aEYaz6HEVLp=LdYw<7*F0%s*snG19 z*7PNV)U#HlTW^V>*!Xqv(d3Vd}y^v;4nCXy(>3sQnRTI z#XoMZPRca2v0dt(0URKXvh=T2ebO>8l=V)_NL1rOYJz%BvwdDcx_dTZ_>FB&TX%xH z&wzXT)z6g)GVUEaS<$ZohrM(HY9A%!6)z?bhvl!)WlgSBx#jab6P41ivZF4$rBjra z9uq0NtYk8D1$<3q{ z{Z~|WdEB=f8v4FQw_=f<#J`t%*V$T!_`0;Y`9RfmTK>1EN%xr|B8!%G)G0#ABtwE^ z_NK~(sEg?v{*4vDJ@w^4-G5kS$+GI(4UL?q978|wxb*Iwkh(h}k?u2F(nY6`Arbab zKke0O9eLa@QZd)Cuj_r%6IvV7F?Yi}`un$Mr`>oi6TNHFJ1{$U!@=R{?Tt<^Gs-(2 zl=z;>h+cqZ>c$O~>>7f|Tf3A+(G#YoZ4-mkl52%@2v<64`FTVxew)fko$H(UJ4r4f z+47B4i|6UT1)^1Vwl$RM=~>LiuHUldQehb5Lt=XAH}6y4Q-aauRZ@F8Rvg-~W5-F> zyGo{2Rf5J;ifKQa<7P9wu{HY-@Fm&vdNHBYcR`Tb%>Zf$5v;QX6>@RaK zNjxa);88_$Q{KYoH4sU0Z)<38XnI54s}vPb5|ewa#c!Ujs|sssyEOwGA3A^NGr!iz z@7Z@KkHo&5H+S!(p8UO;HN9!(Gm3_BrAy;uavhYG2Rjzn*=hO4h!zCKz{+6Vk3d^e z===zJ^LuqL@0P4Y zOJ-HwF}EB;s(F$w&fzR_x4(a<9cAH=?W%onEf6A{GdnY2ohtyYx0 zeb!$p%X~!f_zWwsj{AOoL*9;dmo+?XKC2Rl zQlhC(57S|jR&EZrT4n3dnuVL=7ds6x4*bQ_$9-3tnwz2+)92ST~?*+;3w%K50XdbBRW)*JNL6*7%2^8cg*eg?9NY7 zycJl;&Q303Dq<$~|9c$ezvO9Wy`_rfR~bJb#}+vFY88Dua`b3lx?}qOTdkE+d-SY_ zv&t{^U7ur|a&o#~emP0xP&im6TY5oJX+eW<^k5CcJp07$+oOS@*CBt}lksvwSmGLg z=Ir{lZY>>+dmM3l#Qi1?8nQlv%|j-`LzK#naZJfgPj5RE-q6(b^Np2!5+in4HSl)Y zG5r%?;h-8qEL2h}5)V z&_Ga_<}+&P$m<^ze#aJ?mp!$Vp6gK1f~jkq4o6+5zkdAJJ_uizbJepne)h}anT76K z9qZOb!)9U3_MWJkbmf&w%Xfa&*5fx9J^zVk^7CP8R`JI-u8JRLOLR(U#1_iP$Q%8Z z{xn@12xNRG!on{2iiN39?EUmXM~I@$NkNg)6N6&J4I71@o~s(4L~mA* z+kKqap4-4ADuD4MW|-K_u<97_Xufvf&%5Dmn>H%RoP(S*qF0~trFj{vqyCk*)g<=L ztZrAUqDO0Oi?tVwOvLSk%ct;|l z#8W>(C3(H1fz-b3W{~5YU^*>Wm0jf3-9d>V=)KE$-{$)?;II!vL6!8}cVxOu^{mIq zgyBwlE)C~$<{8@NU@fJWvkG1K7>t+<;%l~N>>jnmXEaH-?w@vz*|CtW_4d@b24WAd z44QTetz83I?abW_cU|l`_oKFy^L;;G?aRPPB-1ZR$;+D?W>rW*24F$QlLh@c3rr;q z9=*zceipVa#IAcFL24m7mB0ORLi|xuna-UFI?kK7B-Au^R+Cuj7^R_g}nuvu!i@Ief61^tIp@_(C_&Quu^My7v@*@%@e@?~Vn!!PHG@ zy-G11<8@l(-wmSZ(bPFs1Fn(DW9q2x2i_IEmoNto|AqeW*m%|Mm12*{r?F%AemRikx>o0KE4CIh8qnxbyd`-M%BUu(7pmAddySKF)$HAaJ(mO#|K_OZi?0-HAOtHr^8*6yZyT;W)x^jFAd`DpkSYzAN|l|qk_AYD4%U|Ylz z{_tRUp*MqZ#z~IUhoZT+2wfun>KWkdx_3h`bpGm5^_zHg3g17@$nAC-I%WbfMWd3pFMe^l|f!8{9kN+2{_bi*#1bXl=ecXQ`%&y zNOq-?B_&0&Cn39G#yYg=v{Ck*vSr`58B9`y%-F{^Br&#`$vSrb=O^cUr|coKf@jYyCs^4WrQb&KgMC*DR|21@Vsk zFQ^HqeTsh^-1-U*4i2X(K5QGbWp1+tq~4tZYwmItl$_7MU6~qK!)a^$uR@n-Q_wlMJKu`YB?sJ5E1ES?;0=87g*}!OX{1@Ty+rwZw*@>V-4(@^0IeOl4FtC1HX$8{#$BC?5FZrik6JYu7H9 z(bH1cZjZ&f3a8ub^~-f7M|2eCXfbXJI4a&56S6Tj=3njx@^y+_Gc2!VtY6P!Ejgw& z_B_nhc9h#^J}fnE=E>T^9^mfPQ~y{Hcp4V5d<`ZO5 zgV0HLjGrjuJRC^vXB({gV+8eeq)4g0F#@zOBLG}d?^~2)4`T<4Q}K_07Rt~?ZAIq@ zYA7+(Zw4arysJO#YyQZ?z;DI=oJ-_&|JRE+a|o*+vGSMq(ueG16=7kW=I<8Q4LnQV z$GzXRo%`Ldtb-hzHf0lJopwgcpeBDy7XR};#Y_i={?lmz*~2P#ii|TpReX{qEm|l) z1lmzxWMF)COUpyz zGT1~o+ISB#fXt>^Wr#YarUB@aUPFJq7LY8ctzy8?ggfvy1mE33=c+2r%pSCFdATUx zy1}dK!8r|csymtI%SGkcNb{*;zuKCcq@OBmt_+kn>37TKe+KOK`hA}uDXa6xrOk3A zD@)6UvPGSWplX$+b@e7NYW~C+|k@= z&Vztqwvfn}4U^KN-$iEHcbl1$rf$=hWLc({bb6Q>vRITN<&VvbDyw0fSh*P)ri7%CAMCV(0utD_!qa-L%=yw%930sJJa3-u&lhkfNN1~ zZHk+2&NQkn%FTAMp$wG&0imrt)FcPY3u&7%^mV5c2klLXjM=&4$4S0U=OLQn*se%5 zHQslloB9GHBjZB{k0GD_vsw#0_|Mxglah)QgK~0oYd|@9A>pNTzL87YHoqQSPsXiV zEz;kmfmf}K}s)j4LjYa%u{*yeVn+2xqsq-dLzleXkTzk_iVfEYjwVNfxF0RuYq$l zNbOl}u(@*0zlXY&{!?Uzo1Z`Nct9?}taxm!uX6oDsCJCIheza(zCPr0;5&>5Q;H{Y zsXS+-4aUaG9uraCA2gt$7womrrhEh?@Qs+*L))i6Mh3WYIBbj{L-6J~iZd%5U z`r3(%(s|6)eK9TleK35dc?swv82TwnJ9_?+Ywm6c?f1}ilV*?{jWK+&zTII zK&v|iR=MUoPm#!F(l_um5fWNfWyLikV~Y;MliW%N&Oi=h^FZBnvC;MGZ*0qs_lRNA zK3sf#^{PB8C}X_>5xq>MHlEK;>K8SLHX+o6n7^Q#~6_wZVVn(s_6Ray=E*8j}kJb=;L*K`Ye(tzRScSHH`e7+Z)5_sF( zH(hY{>y`d6#oqi{dODdjLzgcjkzlI^yqP@g`9)#vYay?Uwv$9Krm<-N)L zXt5)4dIQSI@cS~yieLir!0_`CRp03NMSOsHqbZ~ICBa9mmx!O6%Mkd?)!S*^QCljuA-s0l5k+gAvdYmNyEUp;jB)pbY5oSfWT3C!qi0;uhv z7QZGp87=0R3UqdycJJ z3&5*D)mKGHp*8#=hnV;)OU!Qq7V`Uotn8_BMoxqBlV{I{63x_t{Qd9Ei5xq2MGJl8 zxciTDHq-)YdvzXFS%yO#&aRS9(?O*R^fI7T>|MREoK&r>QkQ^`3sefj9KtRbM_X)K zn)>pz-Ev}R=stw23l7pv3Kvk9*Mpk+*;}_LSNt1qXqAxUjM@*1OF>WDEybO9PuNraI?u>`dP5t*{eS>*W-MVz0!nG0|?6VLtDocY-IgfysfI{8W z(@RAfhJzDZfDE8sxusd(2}imj(C^G>NB5J+-O@MKLO7@OP>bo(4 z@{Yc=qREN!HUg5wl-Ck@*+Hak@C2+HkT9D+Ki?@~-6lq;h0~{q(l2q*1ft4`S{ROOC`HlM#>V$xSGSl}T?^zXuo@YbV;F%;;2#)# z_7lAX$_f>yYpBBFc_X#rgw5oqPqxvr)WBjVs*_s5OOUD3?`c=Guq?jI12vee`EfR5 z#qY!wb}cFxYD2?ANio_cChvv_&`FW%)O1xO8Z zMxQOb>b=znQDd%O)GPV>cVmJYXpfcNtbTr@sj-UBbv^_5F1c=ur#k9=tnS>)ry4Zn zFml=1l|*rmv=5(|X78v^X@l=AGvA$R@S#s<*%E&KJY0csp1KrMmG}NAI}s)JW-Lh< zz8&>32fng+i~16^XEBQ3ZSde4q%$EqWFE4hDPuZxfNY#3El9$K%q(`*u2>k$L!)J!sC{Cq;YZdt zDiHijx=R1 zvZ10@T|VRL&7vj7ZNAT+YuegEg%$?!@xG;{CD4D)yaI{JItK8=6a^Yi8SmSYQWA8p43TD}Wg)-D3^j7Q~EsK}8=~+^88_*%Po*~ZVN4xj# zmSg=`4+Ll3ZXyh7Qr&0E8SKMvR|L%3L}VS))M!_(WOXO(K-EjE`ZU3TLEIsm@X(88 z_x}CXScDBexGsaZVHdGOP)PD^s&4mnAHQ`zoqrP;f+nV z2L_!gFuLu!d~({O6Ejd4b7L+-k;*|g%&^A`rD(i*Va*^VrlvMv0F44+9!|LD2s&;7hI>ZK}IuKYcIzfSy>XI`8l_-2Nz&V2Vwhy!>k z@6$+uR8mxGeS_&2(sHDXjtN!;2P~!=u(wUV)l9s}z$80)9)VCM5H?si?~Wbs!NKG- z1-qvO7cB)nI`dPj=|(r@Tj+h34ZAm+*&FI_KfsMR=Qg2m{gtmTWxWx|U|P~h zQ6##*|Bkw7xz3e!6>UAGKY(w}P7O#%ii|ORA9pea2~;34P8=TJld*Xd_s@czKLe|G zI)68QXHwly>2CY5ZsNYx&#yNtorkQH{hX>!V<9E^B=`pmt=D) z?}uj)AZQd=7*o)?Wvyze${r3`Gam;bhRmFOZ!2-p`sqM9jiZPI3$DfcvYc#f? zViW+?f*81kj;hWDSnoS<*EG4ffD5RfduPPRwSqg=%G$ayv92=%C%~VW*St$a*Q#DI zRjA+xz6N*qAv@M2Z>qM7fe4j?_VasrOTSAjlPo8Sy?m_;gHqhEnuhw7oSof}6%`zO z9}DUds6jIyE&*FC&^crMq&x>wi62I6s_B)9N6ZgEnbn?;i#=UVaWB8^)^;Ef&T^{b zN9O(})z(J6+bt=Io~LHN-$C>0Qh^wb+2vK3ur;DP+WnUE)sROyC~wC3)yuBu@~eF& z*iHKsH3Fkszif><+Nhjx9CF`Ov)Od~fWPXsAgRJv`~msK5tCn zN8>8rz~n>zp8OOIIvc+5Y*}W?Fi*_Hs?)tu9TV_s@-3bfEg|ig_chN0F9U%^xRhy1 zGCDzYNuC8;JkPk>8d3vo{{VCbTjW7dq$8JDU+hVd)S0fXhb#JY>E!Tb+Vo_k^@V^z z3?TOad1GOrp7-eS?A}u_Q7E?%ButeviF_YdBD$RqG7k`w9#%O84s_HZS?j;iJ&M0> zjkKT*f5*rW#X`mMjg#~9F<4@i#u?Z%d~eg{cXLV8s#_var zHenXB7{`y`(dDJ^EJVWk^{NmjB4KlLqzapqp{lC?jpoJL04&RO)Z@t5n8OP{zkqv- zixWDrF*2wFzgAC`HG1rB`oU%xjtR)rW}Jr{fbI=ERcEtP3{-4v*&QF+n=Vbg$eUl& z+k^l`O#1|G8fp$X8zOLqQoN=ek*Le+&JS0VLe>UuakhT~HAOC{_2v=QPG%vn2>?F& zXNU+XfS$Uo6j=`tJHC$$aC9wz5q3C}N2&$nFCW$X{Shd3j@3k!H~%&so(I@XgC<8c zq8Za@>kd5C#@MmEOaHYh?>i_xI>F%K;zDYB>QTpH0K|ddEo*L2S3hYz=kN9K#`Qx< zjVg#L{lq2UbrFisbP-cUA!%HWo}X97LP>6b86oWyH{PbDuF^aPH?<5kxm2Wjq?T#x zgu4ZUOwKuTvgx-vIm-Cs_slmd{HeL1^W_VRim2(-jN)cGt!*yp8fPcKSKPjr$&~n* znX5;nL8W(#X-4^qf-a0|ki0tabGw5>*VXezW|q{aSJ?qz0}xC;*?@*^YK(b^9>331 zKp-4Cvhp0>N13G)1u*)3-WJ5)o^Td`kCP{FhM{EuQ~OS-6PBg}`#tLf$;jU41r)P` zWM$6-(?)Y(P!o!%ZJB6L=^DD(&P|uGzYS*!Ae<6s&lvaz${kdLniB7YYY5x~aGA7e zr~})QX90igLxVuwT=EM_1sXr|&oR$nbn3tfuUTJRjpsVeh zh@8$UgmUN%?WV47|Nd+0uXI{NUulS*qT7pGFqbYw$=*u*;eVq=h9|P;DxjbFdnoSh zW30J$hNllxdTG6&Wm{ILi12gIl+jm~)-HD+C3rr5{20#m<18e)sIO>jYLdh0=jwt2xn5m!&0`O33 zVreaTGdM8!Hs%xyxu8g1p=!A5Ur+sd@=ziK% zV=C`0IMUPe)9wdVWH>O#p;nrzgR5iCJHW$ub&Mrb%;F_&+Pjncy!5lw;QiHoEc%pP zM-G+dJ~ZdJmXa9wfJYMeYw)iUcgWnO4s!bU9z(Che z9OD!4j33z}j0C5Hn&vec?hCe`|K5%X*$^vWT6cP7$4djHyUDBcS9s^g_|!S#lLLHv z2BMG2(a(wvF+z#1wvROe4Hq}~z@CXJ+mlK;=(&4va!;s}&IqhSbEX$7rysol5bL~V zDk;W&Bn2)v++?oNoU<^3)KXTMPe_=6kjfRV(Of7NlW6TRh`o+cn6UDDsDecn4SqdW zWE^5da~)4M(#7}Ct9tTUSY1$rp7UGwsJ1e0yfyFM&KqqG1=b&TpPhhf^m3Blq>T5F zg@w5F&QNe=QEruzWn)_k`^X9`J&Ch(%ggNSibm4|Uc}xp!jrXDLJv@i=Bwas@2!S7 zo4A9`l5$7qADCY@FfgP@{H+6ahYL5Jhntx>3Q^_ZEk01|Z3F5Tr_GTp?J)pVLvk042`GczNA4Er8gzD937kn(ry)pt4$nw^{t~(S8B2 zMXed`hFDK@!cbHU*dkiY-VCad%#!Y31_sfc8hpzhUjdtCg~X&E6&)+KNLtW4@@Uegz+NLe80l?Wl!c?H+%sB(iLp*7XvMKpI|(5Yt-lvN>eS7?FLge5u?4eVStM9;F88?WJJLaWf{x)#!bO2{ODHA3ws0YZJ&gQq{05wBUdKGq#FyP~h zsZ1FFzVu7n?h1gLh`T`9e3IPX2X~Wqw*{y_@Dt}76g-V6qK5CA#g`>ry?iota-cCbyNS3P0x&De+KnDX-TcO3d|Xqgv0x`s{7Q%R$W9LqA`(r|$;- zt=FdSmo8!Gb~g%RCcs-r1aOPo`XhptJr64qvq$!Pn?9!ixOQw0F4eLmC#9oLKI36I zTmfQMRLONX^s4>j(zQ0lRg`ny_sE4IyJh~=7ea`&Li`|%zP5+iQ z2eAvfr1o2I$yR;5M*zHtmPHn9CcrYQqgnWqG(JF`!JL)yBhv&P8@`rh(lYMhXHw?7 z-xjYvH*5hoa}$m?1|_#gFt%{{YS~W~+>&(P;;5?gIAH0?mY%km4HbxAj-XU%ID{7x z9Px^cM2{JDl3|r{$%|8kj9BN+o%>)UTnBe>D9#kQMQ9WI0UA}8%|j*0>EOC|c`r`O z6}rkPgWUv5i_XpPZl(f#ra6mmD&%8=D0pVhohcEpx$$485%2$<)c|~@nwJK0FKmo_ z#_#sE4-4gKi>dV5DKFe?9#pPJMRudsBxYxy7nNlh)$oTvpY&OnzR-kXHYb@?4&I~; zxMe4pKg-bOdLu=9fOrIPtP-W%bHmmM=_|I~(+)|#3MYi~VOD&Bbp z?S5V4gN;gi_>Vhwwq%3LWtrxgY-f}a6=Tk!kJmClSMSQv^PtMsQcgRo7Ifphawl9F z$J!Er9>D!64xV6WzqV4;Lzn1M#C=(s%Vap(8rj+wh{rqdc7fT){N><#m7&Rov>R@F<+t^N#GXNzUGtE2n#a}itZ+ApF)X=1qMeq z(+C*1Evf}-s;Z5kk8&SdjavU(dIeaERjOY}0ms|>gvn9C0qK0}jD*9WK%n7odE7kp zAYq#EB!evzVCQOVnQ+vC9~)=Tw&Yz1N$}n~Gnm(oIG@1-QJE#iJTG7J4p5x^>eMCI z&ZVS^BE%guA*0)*gZyA$qk(Z2p>%q{{l%+|%*Imy%AFm3^+533V5TooNF_W#hT4dO zV?#n^$uMwn+CAAApfYii$41*<$nOmA%5x_4lB?XAcdmvYarDO{2x3f-cx zlY`s&lZfCOWk6=L>=~b^RE!((oTz+ofH@h4_OVHg+Em(VplRtM zpifX&U3#j1=5oT6g+-1~Z?CV%(<5>Y=Xk&`{Bo|feh{sIB}P2w$6uaH1uG>!aIL5{ zDj=yw+SAVsGU^eC7tp&nPbw{Bg=HOu=czX;g^U@#KUmLW{ZTgK12Z588u;doF_s&( ze&cGex%O|XD|Hh0j;R3p@}z*M)bZ@5d`Rp&KOlm;aze^M6+tlqV*Bi|!A!;d6(JB* zRuljvZ?BPS6H(gWQxx1+cmvy#sFsX(bm@6@HyQA)t6p6D0C;PN6s}TlEhmia2V$)16dO3? z70it1Q@%bTSZAl1jmyr?LnCF-T;VEn0heoeoL-ig%2c`bxIJ>LMqbhZE3ksV za+Fvd%`DK9FB|Xp=-t}Z_5susy;jC{{_)?Z*ao>5ELS4AL5VdD*>yVgb-Z4WeJXaA zitdFX-`-H(rcFz0MS##&TGT6CTmBigIc!rM0Ib!$`^X&^ES`nv@4kx50Z;o1fz?n%w>3)pOsi->F0VKxCPE93xAg zCO~v4;cy}N!iHx>TkcHVG_N5&u>`J9{!B-)fix3v*FN;mpJ!}|tz}3?A>DvgVkwKz z2{H{cfa>z%6{ilu=#UaE8&4#Ye3wp|2y6ro%gir2lOVN!%Nz?_-Cs0Iut^C1@wd|O zH`=?e=Xv;FXi=VHMJqG&?&FCWNFcx6eoAj8?;Y()fGF%AyeSp`W6mi8%A7w z`s)s|Hyow4{ z3c@Ry*S5<1fSBef!E}YrQnGlfR@6vG$bsp~-YovSk>?4S5FFX^5WoT_7@M1!1tp+o z2&1m%MeFHsdI*b=+97A`uqmU~g_LG0cuQg3wXls4e0jq4=oa^ZInvq_iu>UZh!5C3 zYwxZxFm`m)IJ>%c-2h}&icq1>mJ%GD&l4;cN+^ll` zkrj=m8%`tJ37LBAz@LJ7}#d+0v1CwPd~1ucu0h1k$LJ3fKINOf)%{o!Gb(dPt6rW>jjWdA}<%Jm&puRmk8 zT+zn@q+c$?DU18xA$Anyo!<47rw3dLBff>hLtt9y4m-05fK)fCnjP$m3LXG<;@PL` zlkWLR*3}x_sR}xwh*H`BTt4h4tdF0(z z@EV{bj)AeGVuB|UA%0ck<1io$T)K4m7`PIa(N=GAO5Wcv8kHNIY6F)m+I{FXspsZP z0Lq_zt-I;9Es{43sRp6})rWk;|5?N*pUl$PX!68NQ{4@J?aYO66L-LE*HVud!Tk#q zmPRCxfP~%%FU*!EY#`o~W$msK2G6nUH(9;hLIo<-GE_RG3`3V~=1Kn!44l6l?{D&}vdOR0mY42E9ka4mJZisi$n;LU!Gi{_g#Y^CQ^1ec)+$0at7dTKJ(iX zfgdRL8R{tB%vlDhcfTquB&3@~V{Vnky;FOa+5uY56NsCNun{NQ)*%_E<*^u1sZ2Q_ z;#m47Z4Jv{CBc%|bPT)Bj_piHLUJb%Xd#R~R7R%xaRd7P!Hxu{v3$V3L=89+hnL4o zWY^K8<;hDQ4K}vxC0&L&CElLrr7b#pnnUtMu3Ls;Z`v>xfP~*GY6fY3n=xS*3K-Ju zK3n;%htC!R?L3ni=ae6jK61LP37CXFeu5K(oT<1qM47?4A9u*5*mP}svE?G9Kf+)g zKx2n73v(m0o3EqRN4sv`Pt7oX-apLa1qOGb!Wi*f+`{E?0;QAmP z_*lmv5dj%~nM^`ad^7h_tx?W(wTy_&s-=b^r#7H>#!3}8N!-2Y4;gb6-$z#Oj5NW+Zr{Rs*H^TAC1nzg-2L#e7OmfsRW(#^T3CD_=@`}n?VV0FvfvOu za#RpWdf562KxhQ~2OoEU+SKH$v9Qsdyva#EIoBh~n({(95IZ026WrnE3E2_PClg3QVH87!bQ1(N?A z1mbld<{=cn#umm0Mzv3fUk~_m;X~->ZObrs!k;O^= z1%M620J)B2xeqrVuZxnQ_{Fh#JOAUie2Ody2jnr4?JPT3npa#LAT$9IAz+?$v{e zLl3SrXkB-J!Ub^b2TOYRD((T3j`T*a3Z)HEVW<0b*iwl61&uU4{|m@g7QksO*dMO0 z!k^(a!(hL|>YVaXj4T`(LUb_@u6!n%QDl>_f6ME{KFA>tj`4Xy4x`wh11}0WC@myU z#}NTxX#bcb8cJ&qAZb%*ASfdrVIDnqv;qscpOkmW)xU6g%eEzp@^O%!mIPW;)psXw z2i+DLHcb8SDdZ$)_sx&I4(eG1c4E`*`T1@}<-*AB_G+4anZIBP%&2$S00@8c6CrlY zfoyKp7l4-E`c++p31Kt#HYw$Ym!K3gx9#5_4@s(#9HZqH1F#J} znQjYGWkkxb-|+BDD#jXlJ^&N#;N5EumD}|PR&il&L6BDpf{#Iz4}f~6uC{;yl=DA% zRtM8Fi-x|P0pQUrejj`0{NYz<0q&;pAZJKq;Gn*S+eKA>iUv9ZPD}HdYl{I;E{Kvx zYk-c07WkGxOO34cp6Bpz!(XO&$11Ru!qZdnvPPR}{X?t>d2wN{?y^@ipIluN=cKz+ zAv`&u;B_AS>A=u^ncx*6n#(W_dv7|oG}EsL2*z@ zIU$W}%-e;YFGfl>Po&k9Wkduj5V0QFjxEWxLRMlTmN=m|T!bx%nw-DZ#*mDbv@oUn) zp=rq!>)D92ZsUHkX{lwDdNIt@FW<0;{n*+#C8`ug>6TbTk$ zz8+H}aznnMS2y?2FwlWr-u3FPAC_z%BS&E1uEsa#7xZNl`r3kcHl1T`4(cYdMJr8RBK6EJD%DF8?<0%h^w>_BBr*h-z&lTD;WamS760P045*j1#_$axW zYjBDKhkCAB%W8|MJ8SQ-^770F3dw_3Lq;mRKBuI6kkAV-X@-DgxpODuT%qZE_QD<4 z=Cc9I6=_;st-`U1JN{QzmUmQALc*o|eCL#ujG@*Er$RsoB3G*xx}lgu&FN;~Uw<81 zGp+w%WVofVYqUfM^p{_}<^u#HLNeIYCUw|(9t{}Tt-swy6kZdUjo@utY*cKO;XxDz z(vZ5>uE-LQl%Ool%Yl)!*k=Ss7(s9%KZDzq{dQY54cPd{1H`*e;v_3#*-i8H>#IB= zLCFYAdPEk`LLFn(NgajDZ%h^lTnhCGbD#p?^!>XD2n^lbcnbf*?`2DuRBqr~*a5WU z^i)c>=LYpD0`dt`x#sJ{IeD(YXPh`8(!da%*2NpeT~0i4?ATYoGx}SCaM>*Ht@}^j z1o8sK-MQ|SCDi9fnw@XEG7ye~=Ww8g0>Tei#V5r^7!(>8aL7~B!G}ku!BvQer39XF zeYE4pT|pHXHmF~iR>-O#baY7b(g87t{CM+gI+QieN&zmS$`!%?qx2nb_#4qaz+l~( zcH=y@BcMun*2aUybwWsH1Z@i}i*8pYdq2Q#OS-s&$qjAI@pKsuCjbRDE|^{tl-9oa z-Y)G9pz)U(TG$6%Y777?WuCuGnGXs+dqF6~tIiQbkCRmpfK8*6w0q`)D+5Rox3n>> zD*%c8|Lmh&B=4>5S)FhymGu9WNykl$u=0H-{J#`e#cLg@vML4_i_raKmK$x z@F@U;A}rtqU^Kwwp8q&9ee@iq0q~P*{t2ik1vW(;fbMH#a%kX3#w{-a@C$jg;70*b zrAA9#snIUL^!T_c>!HXM3RWn3q1V)HgnBhGp-?U?Iv|~QA`{7pU_w?pYbnO$crD{z z3n&=E2E>G{QE(pR4+{_f;cVOg^aPC-8fpoPMwm z*R|^aHUhGU)7&KYZhoozp;m&56ae@FbjFSYm6-6l{uAK;PrGD6^qJ9Jktpi?)8g$! z5xslaIF~_WX%IsSx8_9=%EZ$xz%znJj~)l7!~Z7J;`-IPOE$B=4plgZ1V!Dt zbSZ&yJ&y449^mExYy}kg#2q_+>;hz2O3H&MDX0}|cdFXw90l~vzsQezCAdqRp!$J7 zwd}T9X@@M~gWJ9`@EvM<>vX`4-GsoFQ7C*o^z|4UgHYY%rPq9+SHR(`k>@m_h0Ape zrr>>?=d)pBBA_8@G|fXzB_v@f-4oSVWmOevUAK;1B?0jO(8;r$C=j8PTCohZ>}|i) z)xw!+6x+kUClNqY4;G5D6MaJfa+dx!`H-y7BnBuUcQm@FQh)*6wR6XN*oom{@@nML zUoR#Im6b3u*1F9y9Hivc> z-_HlS5vS>I2uu^8W85a_tS#iRDaoFO9$A-|DpoBOjoq6!I@5&(h`0S>*?*^LeH!>K zNV!iA*9{RujZsNGqZS%20oCeIh0m5;!V|-xU%eI59y3{oj{|^s^InnWG~L{d*Qf9D zDLu^2?(P|x&I-@;4fLNRxeM$oX!;+{L+!h2ID1+f?H`a1YlSwn03z>}V@~rn{KTHM zvi9{wZYterVe;hdJNe8wd>8(qkuTT9w*ya*vCBiPe zX>2i0BzPwiiur^Iy>43Anoku~2n)v277(68#k9Kcp^5GRQe&ri=^rt7ZPfkn;Mxyn1CA;W*!z;x4(x6Y%|!SA9+%)e_{Vl zzJ3Qo8-vn`TzJBa3tiNV++cCc?N1BaJRu8KcfxaX zPdgiEbhP}3`{LMXnSBQI{deu*KXS`U;;iGnl>Ws4pQAi}l&(>Xp{B!g6B(;lELL)y zrpOc&{gM%UZTEh;`=g;lWVGLNUj#||t}~thh_gZd)v#q{`C*$b2Vi+8vEq{=GWFhkl7b5#j*8@Ow&FlXD-HEJkQ~U|OSEf^^o11r4NOj2}3-brXeDNc6^38MT zyIj%6YgYm-qustT8s}d5vZ<=v$+`F35eV*KVMCZrPEH!I&k)>kCi<*RH#GGs)Rpc= zu*fDdzqx;{Vi@|PVydGsV~v~AvoC-yhZMID{r!&}F;jEA;-mX&CR@Jb9-VdP3wbcY z*}47g_5rEART_-~Y`$E|*rbrIUew)!M?FDJd-Rg*j2QUN^$SX?j#$?2MFDbry&rJE0W6 zuR3chE9{NCJ2l+mQy+gAS<$V}lu~svwP7Sw!D(GS_CV;I5q`$px6)65EJuIx=FNFq z0v|@7(WWQ)8A2A4h&O;TU%WiygNlpu5T)=PlMtb@$uxawF!+_3TC0r(MyHsypE_TI zDeGu`n$tHY`sMbpHy^CtiIgve$yn3bdtZ7B47I~yG@aj4(F(J4RIHY+7Bq77goLz*bOmoje`5?A$N zODDjk2Qb}VURE9$xvmgWhdEkLRS-O0Q`h(dfX{k8=BRzg{!8OhRLF4|yDPPSE6ihq zm?3aUpi{hxXz8RsFm`}YlK|ZFPHl5%=X?`FQBhHVat;MyqtE;@Q88L~?9A!YyZES6 zv8{@Y4x5I)y>iM#*9w&lk1K!tMu5>o8Au6QG9q;`AJcBf6c*|kr}6Qo-lzY2z1*pH z2pjqQ#3d6ggNc7)4s<`CSd%*)8_nYV@(5`f?ErzFK!ZDAYv3Ay6o%*i?TCkbV?CF! zVaaW+B#o9cWLc#3389wT9`x_>aEorxy~Pl?0^zc*IZIW`GXis7%gp6=gFBf{!;?D9 z!FrQZ{50p$D^h<6wli|v(*dKL?$r-MBVd%YMV7-6G%=vfy}EMhxC4XYBZ7r*x!m?{ z6=BAU5=W!W+SyQYkN?YJpVR`!Vs6aOD-C*kTl7`FF3lkPRLr_pz2j=MtS*3S*B&W7 zhaQNGPc>Luy6%TGCVqdIYLW`}KkVQ5OzAVz`Teoro#%~F6+WbmrlCgxgMCa;u$s{* ze(wq#4{&1sAe~Q|mY0|F$Y9czdIgrwLnjPrhaXS2^2>ezdKI6P<3*qtU_#oMCv|f! z78e)SeEW722rY+`^YWS*Id19yi_hd*KHILRT=Q^vF#B$ke;3?=>Ev}scz+XxqnJ;d z-Jt^FUFP@S=jPm|si|30U9G91;Y&@h0H%6JF**r7U%o-0d9*#3-EkC}b|h70RvBF1 z(dq)Mq650(kVjBK`$`W(*O4x6{(%<}BHu?DQgjixq&qDc!cHu%= zm6U!+UvNBt^MgWU;;I-*2Z}c1Fh|6sfG$-r4RV4+D@%LveFYU2>;i4pt6ZjyGp;Dq z{r_H5s4VZ;dz7HaV-il=o%-nnU*Js)7wT@LzyBkCfi}F5%Uy(s? zjQ`6HpTBF|Xz(jHH|q4W%8R@OqJ|}dlqLV0I(D2t@glr2k=FW0O7I=a=%OYH{?Qsm zqdzG6C@z?~Jp0}YSEHnFK`@C4d2Cn-j31aaqVyq*ezd+nFt9xtP2j7)W-gWQYFwyH z*{!OgGG6RumjnD0tzWr9YA=3b{1sVglsc6#Qj4?g$Ou!*_g~qe%iP zr0f4{B2m&7T&kpS3AKiX1_Olyk*AfDM!MZw&lOq$^C5~Q|Hdg_>Bo~XU49l74)B@7 zE;PE4&R3*FD_2_L0P)19iV9A?9ij$lQ$j1ORuh?)gw%JbOS?k5ibponfvsSYmI~9d z_2nsq4>QYWaq@)7DQiC-%h8h~84;E?Hc?=tPsa4!8#-Pw{deF`4Wl!tj|zXR4tqB+ z;PQ>j*O-}`?+hHheDL7G7em_&t?b3mDfn?mF`O;wt5l`Aof;#yx~6CHVOD4u2#JWF zUY4zK<15~*?gPw1l0@nv$Ajth)a{{xT^n>o^*iKruNu}S~E^H7{uz%<;%;mY7%%LF-4Fjj9)h~AV^sQT=(H5Hg- z=N?;^NuQd|gYbj%UA59vWrVe;rlv+|ZPDWx%<_TA8i|Z4b-tUYG`z7dr{-3RgtYyyEHcUfwr#h&SAdB%u*RxT_rQlaxbc{Q zfj=R0-4VgC4EG15cyIVW%f`=RKJLgo0zR_a{3x;;X^vxbM{^CVj3n9#Z$g00g`_MX zSTZC-BlAR{?O5#N4G9{ejQ66vGyc#o7^DQB)P3L8rEhls{)uzv+8B=Y=iQUa5C&7~ zQjU1x;V+e2a|zaufjR)8zU5%#OoQ(l#8KmEL?+8;#6Lc=I{I-ikmDq+uhoV9q@4b) z9VMgl4nLPEeekmKrFE0CFc{tp86cmd&1vf=d0<=Z64+~X4#52jhOBN+LY4hpczF4l zzGsPJqtE-gNLW^vBzSJXB+RV+#)Q0q7PbM&lT6OBp}PN=ZYUT5E#H8fJ1$b9Fh4)} z{rek`H8~MO!Wm0MloRcd4_O+SV3N>2}dOW3Jxv^=&eV)&|xSDD=*gx8Dx& zdzrRyWbz$IQjfN9V`P?QH}s*grGe&WT@zraOS=_ zsFw`Eyek#{|gsNl=nia#EB_qb=Z}8Wk>@OP%8|gR3{0=LO?h+ zLjtTRiTvS*M?$!?Q|I~I%s7}5Jkp{|e871=o;FhDkR(Jty=~?63G97i z{zK&e@Oxt2w;8M?DgNh?|1V{i|6194q0d!Sod!t0#~bJShvxvl+PCe$&NK3<-fR#5 zcoFsFUw?f9c0?@2l^InC%Ci4U1j*Yr_|2Q|V+7C`T7mvM=w#@R%}_sR#{D14IQ(K} zHMPk`N9 z*dw>xW#>HkbvrPby=}1oXj!BK^1P3AO<^$)c_ZzQd8%h$zlA6M8UOhHU3Us5rRhr^ zAyl(9iiOB`7BcV#>tZ}c9efKjN>JN2{&5Hf5BkYXhf#~w+B$D< zv*7T z9=ZeXoJuZ6=t#ZGYZSep0b)G+hON-p_|ppX>ko-7MXvepkGb+7$|BSPpv?q?s#Jj# z3|dv}{~$1t4+ow^8v=L+zxSA^C>cKIt$njqpv z0BF{I_U9(+mAHlgUk>?MW7HqlAPj-H%vv6Pel!~S-YjZsx}F5MzmEU~`t1PWp8^Xq z2;&3Cj~%NAdiE$q{`jHGZ3bt(Z5c;S*7^4i^*_fHV%cRKJO6 zmmiy`o-C^BwQGoc-{St|T2M>)=f|6WoFv0^SzH3_$Dk2zDeqGSY=3|{|0N<~2)L;^ zp>)zlAN3k&#tHtfWSr(_FzFVsE+Zw zkDl`D@nSKT487(DO>z6TqvnEvmeb1cd?t<_hMg{O&R!AX1gD6#_38g?>Lh6G4gB$| zRla;p5DwEtHlXUSefj+Pn53i*5+>Eu5X`}d#d*d9C!2hq>^Cq+dr za=FtAlT_uU4oD!C&Af+pf=ktm(`^3|s=P(?i(-2g8Q8TDvC6#%nFWN(5B&^5Z!M9) zEYk}M3tQ2(0Fb1&?G$vkbYEaFmnqBU$f-BgPAj=ZUaHD;g4u1t0+)wHy4N z(yVKsS<#J~xAA1U_Z$-2gvz=E-Odpahhb>0_!Oidkmo_g>KPQ-m(yqJglsikT%N4h z2)AFE0vH)XMD2{MhT8a#ZX)M(m|z6Qi6pQHP+3xZ#wBp%98B_DDF7q!e8iPgwjL#C z+x=)Aup$;F$aF*pta7|-WlWrk@BwpQL~-vR1~2TP0i7FkzCbDNx|35LwSNt2?qO@I zc1v^fAROf8y+$6rXY+daBNw_^WmO2vF}4R;%PMB&>zEb8*9Wp|ayaaYW*&RJ->Oq( zj6%Mm7bC?GR13C%{1L~NE%|^mQ&a$P?X)LP)~ejNb0^%kZ1z4-X4J^?^JymCu)6s+ zoo9uicPeZt6l%@zN~!MDH^I^p!0yGKGYMYQgHG z*slW#e~H0dB8e|mDJ(T0ze9fNx&D2wV)!f!qswxiUa_O#Llr>GIXXH9hJ={!>&!8G z334IUSj*pU8Z=+s!(!e=BOUqH?U3?VgHkkFo}*kfRrcf0C!GBK!pSqMr)QrcD5P)c zR0}?-i6q!SL?ITY3Qh!fCFBV#Rul~2EraIk|Jh)JQp&#jPg$Gazu$rAz-S<~07#!l zbs}l7C~UXo%6qcT|8`3qTfKzs?*+_q&nVg|D;rfYbl)?A-uek~ZI$FLMb%UW|k|$*v8v$VA9c zZB{_9{{X=Qs00B6hdF&N6a0}8$%VodUku5SWKJ}L-dDcl*%a{Iq|SmIO|9+iu7o*o zT$~4gY0^8rzK)atg&u#uQv6HR{4)6})Mck=*A$w7cb+)`F)31=GJ9P&D$!dF1xm=$ z2HDEsmKrbdDAH{;(aFrcbyy0H9%4@X403K@q3~1)c)EK@KaDI;#iLn{H|09 zifT04t4U2mTJ%Xd!J!9|mr~UpNS>9j>?3$(35s#^Gs-F{Js!#+Q1mqfazLf?^9pyi zs`G%jfeN#P^$@0Iv3u`|milDZ=FCCJX=sAv3Zh@Rb|b{KzrPsy(_4p+pnT-0JF~2f zpMSFDZ4R{>*wwUBE_{M5_95cLUag6aZQfpuRJ~(k4?wrzk#FseNa4At6^2k{URAAN z+nxww1U}hNau6^b1vruN4zgp#Mzaw&G$Pp^P`8e|x5z$_v1eQK2b7NzOY(ajDjZYag&Ppf9~_q=^f z%{fCmY_LTfznQB*#%t*jRGmnV1dpm-eOO_&_ghPfp6!jsU!O%N`XHDxJm}In9Ar4c z#lg{7C)v+i2|RH~U~(5u_!0geTi*fI)E0Cd5Ze>ME}(!4h=ry!=_o29O79YiAiYVI z8f;*pC?FtJq^U^ngr+C~=`}zIh)8eJLQV3|Mg2bc*3VkLx0Z(F=H7GW%4_0Ep(Zb_BQu0Pm)xcoyFKY`+OI5%Lz(PbtQ!{@<0@2!XN-j%?;PX`*MfLu(3>DGIchud3O&K;#nlrH@`VrYi{A}$ zU*90-=8uB30rm%r*m=zX!KJbOphg z3OU&($^|9)p;TpPJ?6!Cv3DKk-i@YlBy(Pozv6Oc{mvEK8*>TFXXEMNPN;#~S=bJl z?Pyqm5dcPQI>#O+dK0VNsNc_--UDMi;0F;eEZBKy0JcIhwr#;z%=uaBl7bNK0sNoF zI$`9=H6w@L5`+6qVrwM!R#B~VmFv&$>aKw~;#b^PmP?8L4D21?9Ji{8gr*G}J-U-L z^g5fecwao9=M;t9-LEU&30_(^E@sb2ulpJkgpVG&=CW9QCk9x?Rqp@@t$u5&n&|z_ zz9VCT)v`uj`Zk5c;BvE(41URNCnaEdcWb9DA%D{EEBGkQGe_EJYoZeo3l0hV$LY?A z3vL;o&5d#rk+@*%;5Z!c-j6Q=u6hnDkv5?==QL73-f6wvw=ZB*B{ZsircoOi4YST@ z0rF4gOQ8ox&c@d9ZvQ+x$W2dp|NgX;SA<6@hy3#xMQcDJ5Ub2ahEyne{?kagu2QKF!kqnqhrOy ziO%cKo?Wl|1oNe>)FXvlE;|NGDx*dNH}BZOPoIHNj{TGgQS|HA-Sb75Zt%P_(lQs9 z*rui)dhVDAFarHJ2O@4U5}oaYKkPRY&Slxtep>3Dzegr%4)Ts!6*+=+nr&G)d}~{&3U1iUDGYug z2moTR#T|)9Lk(-Y@OPS%(`Md+>mV9j$H1h>8SAz5EIPt{vYZK^28HhZ^mTW@q>$-S z=>1_nfw43EZhm|Qr4~io!N>F*`4IQbqxL&)hJ)G!v;@h&5+_=FLr(_H6j*QbE#Jhf zpd2P(KG4Vr_(p-t-DLCQyY-PRt`SorD)=FjI5Bf~M2zqsBfB~vH%|4!OkI4KvA4c_ zYpmDU*Y8@(2IV?@($D;KQ5!~KEUkL4ITBeP`}v~aIiYUj;ou&i4s2(1XqcebPm#1%5Jt~E^;C1gDq&`FMRUz z{Kh7jGSW`qpj60K9~iH4K&%u&wh zC{HyK*tuw-Mitko_W#zP%`?C{iAjhA)qPtKUs`ybDK1g6%Xje#P}M}&Nsvmg#6`XV z37o5;S!P?eQnJ?P5>>l6OU1fZcGyE{tgH_oJV4CmMoIy0r6<4#`|)LFK=jW8>qCQJ z8q}6ebS=tAZN|dEM@ea}?|rt3{I|X?vFzmH?ip`zVRF4Cg+x7x8Sgh349N|Vz`^@W zmP(azSY1~$^Ydf27vH>XRS;kH+8 zKEsnrOFyrOxm?b{7i&qV^?W6&;mU#I?apEa@YuZ{G7rR|w@L?6u~>0*3b6N8YW?g} zrp{6=;=w9O%6TVoqg^AvQ;jCXhIQe=(hD#B?O{RVyx4fU)a{xgqOm&u;+O%4PBF`SIf;zXaQX1E%9e%wT^C zIVY0nASxyukz%k-050?6`~}B-L#tZe!Big$rd&axF}*s(%qAfl&3H2$1|J^v zgqb$BG?(#uoJ&ikq8*3=@C{YWE#s2Q;-X*n+aH;i{2^JAnkL+39snH&jLETz67=cS z!SZM0cl`IC8r-$rfloW(+>RN9QxepL`#y;*hel`lbY-JJvnJWIqKFE^!F>B05h*4EoP zQ4+kim*Wk~kD_Rw{&h%ofIdh(x?kVYjaexp|MFEo&lpc=>GGNH-8SOW7k*Hg{gv4T z63C-n4L>M*XPY4x;*I+ZzP9Eho)Hp=K4TKnBb+ovCc z6oRe1iyGR7ldY6mg+7U(;Tv(LqvIv!{WNg$hH)a&zDNlPH?u;04%C9?-`wLnEa@zK zma+1DYIveS_)DjQzo!pQl}lDEe2qfNkOi=5GgkAz>U{I2c0>RJ9KPV0j3etsMaRbH zatBOkSfopQsg858b(t3F-;M_iNgMFuS z-CgkKYwzqd(>YH#f`2je;&_6=NNN%%%vh=~F7*VFT7F*MDae97Nvs0(H?Lnm0EWkZ z5kp^}1n6@C_!xfP^jpjrMTCRO(g0@{P+Qw4F}RonHBfSLpg_Q@h+Bql*O~`Fp$tVy z%CBhah#FFJlnkGN(6%8sXuDmTJa*w3;=Of26q)P}x`=S`=n`Osh*@aRtV1%d0a{eC zaB%4!`hF5ce_;Ln4&*~ozS79pt)WBID;tZg5?fv2{5s6be_1I!&d~?jb+WL|569F~ znFpO^gvs45+YPrWadJ~Y#lf>*{)?%O%yX9&*w1|IeGE@QUj6beZ%!#c+(2)$H`_+#l zFjH(dAv6bf8WM2@H87O`ADU3kgD_yT-ihd178JBrlGYy$PBSq3vvEh~UL-&mQ zbuex^z~U(^r0emae!&|HLlF_ekk(frWUx`>rB%kqS&i zJMZ!cGjc)I>OUF}b=Z*ylqOI8(eVkz!J!BubL0P%3gWS4`;)CL(uq)j{bC7u{xql+ zimq|+-1eIV|H1VBU;W{kGvKSu%Zux6D+M#BUkfoFiS2ubk2&C$uB|FMbjWez;MQuw z=f8Rt+X2sQ0pYqqehurxdu1pB^!az!`hW%>qo3D%`TIOB#5uY_&+czt4ipr8T3%kI z#5*YOZ-9$#h`?I^S0iy&T)gDD{5FqFXnrJaJ4tj0>jI=?TQ4q#w6_hMw~#Tp6(mbW zI||%p+CG<7JEUWRXpfh`Uf0Wpe}wtAdN7m;a?5D9oD&WRgnV8x6IE#^boGO|ri16ha91z3EA0E~E9 z_AF1c$5gxrq^PlJ8mYWMPVEza)@|5X-N6my2hwdF`%xY&zY#h+(0rt2Wo1olr#)87 z^yY@5VjIk25w`B+p$!`qg?@IIw+ne-#MCDiE__lhlsiZrKp;L1{OFh3wv>!Vh`AW# z?Nb_0>>xxSwrg<}Ccc^8r+>*V-=4Wxc)u2!`~n+p;FterOy6JgKE$Rdm@?bKHkQ>j z8@F7Qf7U!KA~}zdowpOlV;g}DRnRS21`suUWw?CWIP2Sr)hXCrFi@}MV=AlNfJ%_cl>|I>=KPz zsm~AdUx#UOM^d2dy$)qWQEv`EWL!`>C%_W>ke;Ruf>Ag<&)3&pWAAwH-GXjb@NhzA-QAmnIe2y%3~bV7 zJ6fRWG)bQJaqIwi8i~up96nM>FA4TG(#y-b73)D3F1e*dMn-wT47I}fCDv0yytQOx ziewBs>&8-ja9E-`RygSa0ymg_!jTj-G{GhZ}B@P!pnM;ogF`Q zKL zN3BGLCtRv*qCt^&O2r|0UXd^?y0$JbV=;2mm95YMoonC`(Q!n~&*uJfFJdlp=Iq&A zEKenWVR}jT$ocja#eji}c$M4sYPy=X<1BXxczYNv(I?ynUsU|)Zoi@S zaWQkrO*_yqgD#&%LgW`_{~=#hPhZEu>a^JI|07jr%rXM^i8)E^}2c&gfH~<-(88R{K**gMIgnC4+ySpH7{5Q z6*8*q25M=8H7sA7M%p95=ROHoI^dJ&bGS`)qeO*H_OzDvooY>P&YHA^G z-!A)~lT{|b285k>S|RGf-M5gg>{R(IlJHQXVnH2dzq>}**A~ysgZ-xl%#KDn?hDp# z+q*&uX8hDf0WoKD`S8#ThEp4WgKovr*eDp4o+eIXHz-8enWazch1Ww)pX%oOJqV=$ zd!wR5LmQ+lzBGSOv`m;`xmXCDORJy<@a*X9j4Ge$nq}A`k9)(`dqmLeMsWQ6pC+E9 zG@5T)cO5zjj=c+5%}89<&-^-%_2O;@s!h!}V=B1V+PJkY0)q{5aM zymcmYQjD$LFCX;mUyCDhy$N0J56A*;FA9v86S7TkXHJ~BWP%IQ+{h(pm?}@4Se>CZ z(Y;x7|4;F{8i==%t{uoqSMGl4OZXld{EvvnR~Z`6Hq88Y9}(H}f^PLm5Y4x|JRx5F zqUP{p+|BGrh6Z!v6Ajl)18W6%@7r>NtHOj2wogDriu=~e^TR!878Ht@0y7%!+_~fT z%g(?cPAk*k=DmHsy!-a;lk{2oI!(NOGZ*G7gPS%yVxaUUrI{m3H~8hNfh@@LUOo3G zBihNp&z;CN>`?}P7){~b2&vD_I$cFIXrV`3Hh}dx z$jqDpoqso-%GZ`<2C2H}6l#tlE*9GGpqmvfeigiru=b27BVWrI z->8U))ETc4i4Fdr6Sbv2?6kV`_ez?!Wq)?N&S$R*d(dpYeBe2J-UhQWG~~-B1LcI?7 zdlf5b*aJr=`ztgQz-$2-42ghFu7=POADaVR5FL2@1oXP7X=uQ#FBt!(m994=BDB&c zVL$O(>7o1i$Y|OhH)o>j`s`qJkM~oWr5?WsDW8a_D64-ShB%kBv_WC7<8!;>p+m@| zh#y~{yGA^+%QJ6cD_ft_rlPFJ+uxVWH-ca$P1_U1QZ{0l)++l(&t5{j)Ia@H893M0 z)p}*#8~hY&2Q2ciUJ9+at=QkwHxt%oG)$AI)Dt2wQT4RY&V@X~^&f{_BT)Q6>L ziy=o))43@t3W$`7O%;t!MkGpvnUIhWA&WgPPr^V28Dk{&IO~G+9t3Wn_aW9S8XjX{ zK7V;bx80Gp`13r5j_W=(z6={2oKrqerusYzFy0n=?fm`P2H8u;b{;>j+S>bM>vLa~ zbYHgKgYP?uc88nZ-zuCQqcnEfP3U_1q^4RI5{Q(Ag}mefo|q23%Y?TN_|#5|Zrwd_ zbq5{o&RW#YNIJ91o%74&i-N=7dQDH>aJ+dwb7U|(ICi3>9Pi?tVZF_EiqK^Kvsdrj z*|#oeBGD}3!~TZU#c$U3OeAlLvi2!%&$$;FqLv}EGmE&Ws0N?QoKG<8ILuEOw}5?H zs7}|eU;mFPMUyhNHU*?}o_`8qOzCQ7q86 zQmmihYa(-N&4f5#yr!}E-YU0_&eynuKuF_yF1>$l89eaJU7w<=i$=|UA$JkwTlC#o zJReRAa$Uvx^EhvkF0WqRlSe62mQ)JaEMmv8i-4m~ z%;MM?-Mxm$OO`Y2q)0R%EzzCfZL7VlSH>@3q(|@iS0zAF(mZ*dCgAR$dX|X`W}580 zej)>1;@myC@3xhZ`PXalpf8ZOlJq%mM1_tv`J`!Uyw_@@Oqo%awosYubLsi9BPDjT z0hf{)b_7xe$TeF|;xkqjpcT7$fCJ~eI2bJd6XZVv%>m4U3sd$O2_veq&)j|(S<)~$ zhvIya8s~AH!Jp&j?5m~z)QZ(P7S@$ta=9S1i?p;AOUF=BM;68iX)ZsnjaHOPQI-b- zhPMe!E~owOuD<&*FHZx}hbSmKg~P6%Z~Kmkahw6s#&s{od9LL?-V|C`Ry2^c%WMjb^9pPxXTnT@AV33e2kg_}JlJH_F@}P}W;yT8i$9l4g{H zk3=L5E%9~oQ)akLZuWQ0WlX>pLfNtD{h0;gLJl-)khk;x})}0KH9l|AvAvdGKl$Lp@}W}p|he88JCy@cAsn6Z*EHregkf%$b`Tta*sdIqF+?dr;}K^jN*M<3{WK~81g z6N670seS#JnhK&1sWbyUPgGG6zd%nzdb2ijYo9au>2RCg+VhAGr?DJ0`?xpJ z@W&M|MxEW_A3WaXl;*!EWwR38zty>Tols$r7#3~!takCNc~fgzg-_j{Z|m^D-{2~W z#BGi(1g6hyYtJ`rSvU3ud!$Ezf26~a_%1E2uEHMn%W4n4+|1PyweO3$%$lwgXajpd zZSux?X^Q-?dx*9&%jv>VWVGm`osX($=w*JNXQ(eU4?-#fPsfOKWD%#uQ|-yYnAU*L zUet2r>Q&{xNEarho+g~D-Q(3;ZW1irg}L_pu$Nw;R=t{A6PIx8g=F|1t8(|>iz+ww zQx;jgv#2i&+^2R^ivz)M8m{=vSwXq4f+<%t6*-lJ;yaJr>Jy$k8)fh&5vN2y=CPkU z#afSYpsL)6c+!&(-AP@gP&-SDJEF$xH7OdYYIZrJ&eqXELLy@i$^P`m6%|U-Z);WN z)1a6X;2XDrf-n^c$`o&87!?dJ6|(ESkXyIq#W5eseEh`v$~+?5>`q4cj4-6DkU_WSddAGOp-i>JXM9)`e_qaIv2}Ydh(QErfSQ=gLjRd z-^;mHn=rF0M_8g6P_iE(CD=9z`R+NWT6UT(O%v%((s1VGnm3KdgJiLtK(KZ_joSBD z(8FZ*{1C62ySo@G*SRxEy{0X;2Xp=M_=Zj@ep!0D&}%V$ju-QcLdwLCYG;-uka9=J zCi%Inp<1&Ji7^9=vbN!jn7u$@vBAxEbdkKgWC<1G|G1^zM!5Yc|Fm z+_OzT$D#aL%Hemg?WbgZ4J|!Y# zfj5s!-0agjrRYg%wG&x0a#rxmC;kqNf-prgI9^pJfWQ7?9a+OnQ+ ztL%e6Cc9?0e&Uu?LA z%nA+-2@TD+`AYU!(awCVp9@2=Vj0^4_n~fYmeX^K&_{7^-Ux7|T;jySZqY1~=&+1ZaJhtJwV{NitOE;DD7I;4edcH>s<85z&JR z^lo~w(c328TaDN3P&>KA#B>dPe$>9f>GMS(%1I=7*wi$N3h;$UOGm`u(a#&e((r08 zde`B{l3Ip__HeZPpV!jo_Vx9>z&Xy()$=i;uId*tU{jT1&x1{r3DX}j;P2b*rwc$q zjR}K)6&%Qw2b^Y>^SZfE*Z%Kd+km2g`Wv~5s29GQt{>jR_t7S?I`XcZe+9a~KLY-H z?D(b!gZ%x@AdHi@%+t8W#V%NW#;*Uk!fJcWtviM0S6$c(afuD~<>}$!f)wwsR~{SBFz?L7 zr^)#TTQ&794Y_(g$jI*g7=@Nrbh3-(eg1Xdyqiu1^-TeJmblS8JGw1Cs+D?$+GvPWB8sSqY;$B_+tkH>HXemJTxBs#Z(7uTUj6 zJu&j-%!RS}m4(&J{wFKB#`mVy-h5&|l%jqT6~Mab(oMdlWtM*sa~iH0bB;oPi)`te zp2HNFn>|7kT6<1f{t62778e&^OuJd})ZIinnz}V4vmt;oxJzov#aAa}{Ne7I`dw2s$cuBCX@Y z+qWm+P}#HP-;4Q@4j9ijyTWMnwyUop##zCs3YvWUgRQ%Es8st-Oo~xQ0s@{M#}`Yn zVPx-S1%<(F-@Tn-d%(wn?vIYcLtm06epXf{HJI&YdB9T>|MtQ9>8M-U>G?AK-(^zy zFRUcXU`%U-1BSDE6=w`ATz95eS&Ess?i8qn!`k`R_lspaI<&W954U1)&w=fFn`12n&R%({(e@cZMXkPLXSQT>&Y2($pstywdY^ou0;?NU5@yS^^drEws#Jz zDFtzivv^6zQ^-Ss6x-;A5B2r*pYJ8g!lvlvGI|6lGr+DldveW#!3N~EtC;G<=;)3v zQ6Qdj>u7)M`*%~{tTP#sSA<#heW?@iKZIs|%LK_&7TbJF)8l^mU6Y_;M_ikmMBHifd)Ud=)m-$&sWv%zUv+knwDakp^_kmc4 zTKVZ+=EDgZ4FzL4>?dcJrJCCcK^|W`s4o|?eS%<>aw&{iCfb{>=m_>a40-ta!nwH$ zhAmJ3`b{It*|+FrlokDpNg`GoiWpHWPry04Q;BUI9aB_EE`HI;9zolwkZm*9y5rkk zr>#vF-#YZ1%S?F9tK8QvNKo&Oe+ziWPCJDH)dQIbtELGH^QQJ4_8o5l|$q^uII0egu|BA;l(K=OWuhlkToFVc>RUxy2>3Pn`xu4yvx6W|v3SyrjuiZT9qQhxj68 zevZs~cy6hF)o-B95qQ7!*1M6O0&oB0&OND#^AE(u`7PjC=a`#Wbi_-4XUz2|Ge{?| z`1xi}dh6*mzDphoh*A=<{^}jSd&j2&tp0J_=Otoc1tp>O{>Y)9%9=q(t*o8KlC?!1 zd-)U+64BVD4+E9Q(+%>^ANyjFtJl%mV|Fj)>3;4H1s+NoGsW307v}onUcXeiUz^Pm zHtDoDu8EjHWZ45BU>33U3-6zz0J$TmA6KDA1pJ_(E+6V&`th89{Iz-9@k&2qyo~H= zG-Hg0wl?<-Uq_?VQfc0FTT0UwiH^k)lKw14+GqU{B1$+M(O1@-C3V!eR{E1T{nfg$ zdSU0Z$r8V!Kl~*xbXdpj=V2W(*U#xQE$nVUsgM5rzz1gTF84 zqU-i7JBd5_3m+5j%qzq$RNtDpwrU#VdhwHn0v_uNvbTok9VN|cxSf%G7Gnqp zaV_bMX}q?fxA1pe^M)ucEYZ%@QnvT6HQ0lini>Ht2thuVI1XK}EQe8} zaMMtcMljrjhT|k7t9a5#oTpN-45dg-or67l*O%)j=uYLb-lyRy9C;@5#H^`a#ccS? zi;*Svd1C>okM$0<`D#i?_7`TOviNZK~B9chv1l_ z{*KP%-q40r`lVAf@hqCl`TQ5Gb9EmE5eo={ny`|h`+HgTT(uK#u_=o9dVA-nSI@oD z(?6O`2Yn|FA3hlLzA^PFQ&?C=@J}D$!yih|!|+td+MZbdIV7*``9zTiO<3@Lm@NGz z5V(#iR}YVpZY~-FiL<(3L*C5l)_ZX~SESj;ZKuwj{idO- zYSxAC9G=^rKip@K2q)z6CTfea58s$aks~Me`nEQV#`3kE)kZ9hN%3~SA-@w+yqe0= zvk@thZ4PJo&d~4Jt)&&VmG0ykCl`3DObPcatPcB{C?4Y9!OWSbn~tPXkO?i$NcgN@ zu37tX>0PBM#*JUkXa~0<9;?qlZ_%l#&D_~OBlE7?X~-949G%F0AowtJ*^g#pPqn$aiA3^HYSA|oP9T)X`obU!+~`ppQr z=d9!%Ul%=8?Z__X!E+LSIwqW5)4VFDH6#l+@0j~=nm=l9dDYm0<%(bP&&rn_*&TVQNxSK}t6Skd?M<)y_McZ@Tk5Ud;H(9=N$K?rUX-3CO48?Tca{{~zAVWJ zhjS9Ay8DAzB^KZu@I%i-%j)PuMrna$Y1&ZPpZ~i|tgQ0vh~ib{4bh_WjBO}X3L)2A zxw3qG957m1)R+6v0|gF4V=E)^c-Sxi8$QvYqV52mVOO@Om8-}SQaV-JAw0%#Mjinf5=HJCccP=WYOK{R{tF?$1X))8JEppFJFeq!ErvTmQwTef&l%TYO&l95c<;PLN_d{v{zTw3_JMy zEKKG$o#C~$psKK-d=p?ncOtNLMh0IMMV`(5%VaAGbr*V%m0>4#LLV`*5fKX@D8L~@ zQn-Ej0zClJ`EYPnSxgTPo8{I$)AL;8zF4E6JFrE}JK@tOakZ!wo)$kbtfvP(LFATE zSN+s1(^VaUjTW!IK>s8z@HKb*a^2nvbG`Ad9mK13EXI-9871GEU(UfPt*NVe$a$)= zrPrlH(@e(f3*ZBqs;UXkp8bc0T?ZY7Ey$Gfb8AZk0NNX3#GIO41kLK3+uy4TLz6re zTGuZBH5S^L^6uR=(2)CKD!V#5l99OFzg#W40r@>e`O;+r^<>+Xb^MsXn6tR1j*bP? z?Y$A89KI3+G;2m~TiOx`!z?`M$wfXGc3oUywaYnF+ z8sYe-I%#Q{)wsYi9UeA~Mi+2i5gNZRZaq9iH%V9@CiqQ3jluE!>uu6tu+{zt0nI^Q zEM^>7YVX}uaJ+D`)+~2b;+m_ofeK{LlcY+S#4Ykp5=UPWIr?A&E^i4lTy2eLZ*NbM z@+1W;k4`_{b$A@<-8b%s-tWcFyZDz20XbM{qN_ah7mcP{FvpP0SHZ4u_wiToe8~;{ z>wz&!sfg48C=+pITGZ_fEcO$^1%%d;yXf{ zB}$(fBi;MCNMa!YwYDhXb7f9{r^j?{Xneq4w)l|SJ5))`W3q%wRb16TO^b=2k(upH z&F1ecdlbR^;h!_XjXK9)JS#<|et}|!OsHv*HM5d;<(T1U}{&m^q zd;`^-_u!HKW|{RW89L`BDE(RrE6BD~*Q7+?#F*+UD=D&LV`CnqZu6Z}TcDunJRHWu z!*f)f`WA;JxGl@uY|kZqUEGT{Cy-bn)t0ZMykwg{I`(eR0mh=R%tdX%IT8c~HP9{- zPoz2a;V0+R_kJD8%b?rVU@4K(^uLAwpMPPWxka;h#gIGl> zTRS@LFhM}5bU4M!+c6j{qlB0Ye~E>a3O6vg_RUWn5r_6!C|Ay$j@#QI3~9W7=`a8l zekM?@FFa(Y#2@bv7kHtkukkL~jsNJFw#fL3SGg)tp#}OgzF6C8r5V$e5vE?&xhRQ= zF;KDZ`Z3KFki4H8$3-yup}2f4{@^;t?n9X}hV3V3AOJEv%P2Gh>e$6}-Q24#E-q#f z@Laz~z$pyez6B^F9K~bJA_PwiH$|rrCal&8>}-|`ZaJR6?%#=Wn1A$U#9fA>Ga<6B z7V^`1*lOUxikZwau=ng>+9T1^bwG1Z%g8+QReMGJL-QwwQW1QNr6M+US#QU9 zpJEHfWyMZ8JVG04qwg#SPRlqnvqw1>2hh|P7vfL7-1CM`0GezzA}(hUJZN6Sa($qM zIv}f91bWneN^&P0l^0@_()Ekg;C?$>159=I_}+&h&uv$Qq)!59)| z`$wolg8L|TwcxaekZ?7^et6Xcth(~^g7Xb|}&B=}hh zaKXwuv3&!PoY4(u3fDZk<}6G?p;F@qEJ`3sf?w3L$iT37*P%C(;B4CGKEg_2KJ}vV zFAAoBuL=d!yA|xjoS}SjadU&|vCqdRCxrklt7HlRu0AH_=z|ad-uU2)G{nmo3JVKE z6cxnA6tx1tGq(C})S-ufrZmmAKW(|4T?551_&r>@b}qV~sDxevB8lLo=Dftw zOuY5-&1(;-3<#f$^$M@x_{fQ%M(wBF{aSio9lQglrCG(ZqGlP{Vy_iP2n81X<=%9s z?$iBk6r#JPpr8sZ=s7t#fQTc{%Qy1GDX|Ng_=y<<(XJ;(_-^HD6z&#x^#`$69)sy_ z>jXkS;r(g#xouNCT~LnO65Ns2CP|dESHY??0-j_-Io+iA{8qIY&t&nHBNx=7*H3F z_;~~PqMrKm^(qfQ7)GY|#vAtkn2rs;!|viD@2y0pJUkO+z$CH(=55p{0LWZfAohIJ z5{oSc_=;o9BchRlhnhX$bw+GeAd2gS&fnFsv9zmW%HNp&B}UCP#N5iOsA5u5&NX=$ z`EP)GTybH{#Gfr3xn484Ws8+v(?J)PrAPYqxj~Ff7h}Lz1PWuO2cf*Y=6SYj3MbFCL8UNJ1Ro{e7kzNPNLHg0d}c#(3_EoywCbX)3>ycd~p#(YgKG=v_1 z2CSm$wJ%sb{!fLLNn-O?3S%da%F}V#%VO)e#ytGLI?xnm_vJw4GY z!TwC8UtKaPB*J=`SVUwakK$xRKkhuNU*^=O&nmf)0HDAqz#Fx&NlHtP-i-ax4qUhk zps+zAB3om$A%W0zt8qZ9n7=v{O=giVqtJYVTm~YbFViMJ6ejf@H~J#Wk3|Ubb5E8~ zSedz%gZPBRLafq8u7w;&iT=`ksIX9J`nK-dw=e)RM`@Yg&km|PQ=fU}+mY)Wu~Ors zrEidJT4^T$n~&0Oodml}?QDz153h2%{V0S2-SoYNCa3P# zO2dw!C25951ona&PSx*k-NmV({yBjBDkGAQ-ug?#2 zDS$^^`%eYk>t*hjF5{P5<7M6!h(xdii`EX#zDv%(`T8~U8J-$#1G|Fr=TG)E+uME5 zh5YbR1!~V`hrnZF9&TlT_U}#St%*PXb1f+~`HU3rYSvI7ltF42DPc!GkgpE?ybzW+ zN^9HV#V;qkZ|O*ci*9r)d#nfzt0Q#f50VAlFzY1!eGCvxYM0ny#~Hrs2_i1;(uRf z6gD3fg`1sU->P|QcR9~v!U<-AmX?-)xk3wI+0S=HIllxEs#?Ddy zbeI{@UHC1pArlI1+sqH~2mxz#?x(n?5^U((u4O;oUaE2}s7e5P8&%eD8(T5fIUPH@ zjP4;Crm9WxLV%Xd>(@o{_w6z}x~RGNGMyMQh7xU4uoF}=Mo+@~%2X6**vfy+I~Wjn zGS}yZUf?#48pcYd>U(zobN^7NtCd8ze%86JIw}RzfUs!+1aIAbYMkPWR&=D2vz;8ug}1Htf^wp+%mp`;*zUKCs4iVG%=z> zWIF(E?sWJ1n&Y`ciI%CYce-x%^9Xxu(2~z##|F@Nn!)3!zVI(TiVApvW5-DT%nq6# zSp=!fViR>C27b>Brn;RQbTtGI&5G7_39G7YC*$3RnXfu+VREfCLk3&@{gHhOrq!(# zWJ1LlSimq853lvFWt3CPW~^pIl1p6EwI8>c)eO!?qQy~{c{v2tXUNm&DZ-lnMZEY? z1_Y-3|M0GKQp?{T!a%L^L_a^jtcgAklU&X*TibKsvc%*n;WnLA$LYKG)8?D30^$Q0 z6!ihL`_btCP+uM|^?53CLRJ#a(LGr=+B)}c^s`X$Z^hU9T=kZJwa5d4e6qONu!*aB29Kt!P;?V!6yuf!RV z&2jvh0P^RSaajDr-2bQsQ!At#ibQYorF&`P3YqTz{BRIiSzlygMG1 zF0?8-7V94mZUSz)=N3jqW*L7NQJ~R=qOJ-@+dcq_JP#P|)vC4a3vGw-kI_^&%#z#x zeN3{KuHU>V3?S>yl)^%7WvNAtnn7is#R@B;U&Kxz%5$Z2jS>tf9oEN#q2KJ{NR@LU zov+S6J*U2pG>{T@Cu(0kAa`=EuVXxMsf({Fe9nA3OItar4p-zoQGt>8IXe=M>6_g5 zze=;;_lJoF8N(^ZwiZvF5Cgr8@80=eBkZrF&Ym4bbgq7XX43t+nKu^T{=FKBxeX!( zf!k1|FAj0X(RFU3JX1>Oq1i}%BAO>*|K`Nir)#v$3y24;8xFP|+&091QYEVDPVTTI{r+(wyQjl^q zsGR>NVf}NZ@E$ewLdcEXY$5>vd~LJK9Q+N4BsYhB6lx#srd0_qda);@0dyMw`(u=} z>?OUZU&5ncW$&gCGWnW0r`I_YQFbM9t}4@@1j096IO-u1{3Y3fIW5PCyW}#UO7U=8 zV^C;K9qv5?xZH=eA}KaopLyH-yqMV;1nu=~x|T_B_@2eWa5RK4wX-;*Amut_0bz0B zEG;gg6~&tJN22W}hpu}7SH8F3=>pJz2=wniwF-!^ioz^?TO1>_bpFfoqGWY|QGq1v zdI_5mJ?Q$hFi#vPrNyem5vbge{Qb5;1!1tIWRc&0w<4)K-!l{8$^mvyi8(4yhcDkZ z@3EJ?)F6|(mamJeyPX{gCQrwtk zgOp57OjNJvS%`io7x;3=p~$@Mk7uG(-@P4s3@YsQqPv4X9b?Ux zNNyvg#Vj(?T;qDSowMgKlp_bn+?bx`Y0O^@X6)GD$WbWzEt@}>2jA^PX#z#tj^f6t z*=0HZhb~DAD_%W7#8SIvq)GMk02t9t28TC|>|%-ZntbU`Tg@{9c}eJ?ic3fO>THh- z&8J#^=>k1KLiQ31bKdf3WfGnL5a6>bUe0^B`kp(JQ<3{fK>UTJxRUX3AMoK@9nQL%e7jRqbj&HMjyE=kNY&)n~Tr# zh8vbc5Zo@+WY^RlJ3s7KrWKzt9T(aD?9+;uw0l|KyCx{TRe>7!k~Y*BA+am4E7}F) z4At|RwxFKuu6FwOJG}s=o*bY0a|o0ZFycbtpHarOrn$N%BziKS^<{)iHbmHwVbeKK+<&cSeYo>QQwP+Tusj&N z@3m9Cdu+50Hk^XdxJpAqX4}{8AiZM=7PegTl-MF32m%2i?^PiHcUTs%ANw&XQyCM+ zwT+F>{a}n!$AszpX)0ti#!O%PsQL;YPVuWN1<8f9x3s*MnOu{FtwuX-nX4-dRkT?| z#5S_@L+__sCiW=}rhLhEWRH>LGA$-AY>7U)b>!>a!wdRy+<_ZD%;2k&0J z6_&A`p|GM*9TwYJ5YK=@i1j?IU&T6RTd%1?52KZ`s@0>mwi#K#1UKaXfad{-6ouiH z_lGn)L1$^(3l67D3+q)F*jAgf(88&XI`OQiAIzJ=wLnTyW1Jw!xsR$Ea)@#h_C&3} z>yMlR@>%akb&RC@H}*Zw;!eWWX4yHpnHWq2Ke`i9Ui2#>CI4C87VON_!c6AJQ*E%4 z?wH;Pb0&NC%#lRo-sHflEGhA%k7XTciuNpPOHN9kDYY(Aw!QhvEd0PqA#eDvmq#FI zAd!@lS^k+h{PNOZaEC_<`X+bumg<^{g>NUx5yBWVCJE_(xY@0b&dS~Ol%%=%uTK6sqe7Mg#^d3%FUF!L*O$_f1Psz&WWUISHv+)@L1JHyqZQ3y|)1(b)y zjytrnZ#RECgc#jnrGUrnT6%nPq|ac#YZ58g$I;ul5H1;smgBiaQrb6)Gfn0=^Ye=r z8Vf)sO*--pKGJF81IK@v$*IZP0z}!*Zu6sA>uad2G>uP6;%q1@J2~1l0U*jF`h5V} zH1NgWVLF0YUw-;x>FHxoK2U~ui@IjI`3zM_y(P2LaWPPw0r>P~iDfthBGImuHG`4*x%sxu!rp_C9IBvK8DC;Y z0_QfmpFh41ixyV@6rUey*nQ;a(b3Lt-NwNq5Tl5OLL6THZDVb7yAx_ZJxCX|a$Wg& zF~^4Pa!0B~P~rcABx6r3`CSdWAy%L}*-nsOhi`po9N`3{sjl%|2J z`!UYhbyWB91F7A2wr2qv=B=dnVb*)Yg|ve3qNwe0=rmS(l(c(sYID3n@zlmC9ImuPK((_$L zNrOzeeu(S3&(fQO+ClE9Eg3YZr<>iAcYMfPL*G?hX7CwlbX%73pSWfjj_`RmirhcH zv6f_0ZYC?4XCSrijxso0gxReB>j`v($ifmIvagVpTfTK+tj*84k9W-SVTQu)xmb^~ zvc22I6A_(Z9v|E+CG+VwtZIP$fCd9l^=-So8ICrfg=*sOpsvv=i2D3n)eCe&rnD?$ zF7Y{d-WK6gC3PYyTYiA%Q8nHqS9cN6v4zSx&n$Q-HE??l?2Q6QcmC5c$=0FGATXsI83jHIt}Dx>gU+|* z(I&v=n5-uj9*tVK)MQUNgFAfp?mPZo;TBafL@6mh+h|?^n}UVu$9f)1pWkIzXX`k_ zS?qWt?m)B49N2!`?XaDLVC(p0M$Cc7BZ()xh4p^+RVK5Kr}zZ}ZuaLckzZ82zMoh; z0dR!R4b+oen~E0{jlOx)ij4W4$83VV6&!a!Vby&{ktOa|3Ls)B__I-}r##L4j194M z!e7z?SziWRVKmEgQ*nlm?-s{#%K74_Nbf*^V-(vo(grD;jJu3T+R>nzX&RIXaWts= z-(&yC@c)-Msy_FbEEnc|)x&fNSfklf@Bl%jV+Aw~#haJhC${GX+W|P9a_h_kNAEeJo|tdikk=eQcxueFBGC+5QF-TB1arRR3vXXP4{r}1+kvYr z0O=kn;8u!ZnimJu|C|k$7`OMH1k)58<}8;&K{cTX37ema>ELXNuM-M|-+O$cEBsHo zZ}JV^NRHXlJ0+c%<*n!u)gAm;0J4j2uHF}b<()9F&ehv;wRvfV2ZWy*u=O#7-~7xL zS)Mw@0}M%n+I})`46%^eLK=RbUg5Wp^hK7_#nf% zMrpNf2KlbRjQ}!A*|Pmrs1rE`)&oRV4pb%grfmJicN?v=_RPIR!0*WMYY%h~HQ};M zQl=2)>)Nm;%C}1uS6f}{c z^~#&|S)YB>h%vS~yxpq?Q$w{1E4$b}N`WBw)xriDpbYpFg7w6Gy)3XO!8 zfR3nITtyjaY$_m8^m-JgVWbekW|Wabv+=X-T>r2n2s82_>E6}LBkVFQHeG@G!OfEy>~e6^ZVY<^Ly64?zQeeetVsD4yX3spU>w#UDx#* zu3i!(Y+lzoyrS{kce~hYUAY~F{R57wx^-Pno!k{Nr>>yB?#|0s(Ia)Uw^@#>3P1#R z#-q*o0ebot6}3rG`VnTIxkf_wWXp`Krzlsm9+#tvi4{%QwFW+=c-=&9@VebpdtJ!h z4FNIsU%$!Jk!-}-3yU)~^-W>4!~t5aO+M#oB|MujWK9>IA%;}ryLL_%(+ol3`N#p6 zWLdi({tXP|bqNw1-<~Nc73kYUemx@hPseNJ?WIvNsU{UNNoNjjr3PWT+{@EtID$cA z?d%%Boam;Bj#HFZOR-c}2Lt8m8bDPET3{Dg-rnc*=$@k6;R6HROp5hIc}29f=@cZc@nZZPI^C&6~)py=ZBVz)K&A^v(wpv5?O;*|=hW5MdPS z?-;KkXoF$h{x?~U8#(JxmsPo|r@!*ZP0i!$Sp9H9wh$v^w2&H6qwa$-+ym zVH}>C6fuPo$yz5K1v6FdYo%3LG%FbLjmBfRk-#^IVnwb?{DMP}Arc6N^X*3v{Kh49 z4g6BZAHL*X_5_j$eGwL<7kZ|jnLqIx***L-oGk3=AI=+D}aZSuGaAEghvCK*M zh?q=Oz@ILi^k$u*LE(>gH(U=k8Yi%o@1qRfjQ!|tUPMt{`Y2zCaSoITTx$=Fjin7dPq~%rH z9-)F~#S!p{?!O+{HB$4WR$kvA$XVkKMtUMVN zR%Id#FE-&hEVWyTPo&ewRUji2e%@X_-8bmAOZw)R2N2+5gpDhvnmD?K()%?S{ny^C z!q_bh>YAg0q2F|6e1z8`qAN|GLdBplDGM8JTFU(>ax5JpF6J zX?YPSU7qtQsyT#hwuLQjW(@SCNVlW;?fq-i4w46$^9j*0MMk))fw!!k>=)qqHujtz9S8trcV*Jf{*$lbFUj8y2(bLGY9mh?{N|;PAOCJ< zNeyQVGe%`9t>)#3&q?FaI(YNhi-%Sfkp}zZRe;~*oXzofY4VfskiSiYkVLn{QmtWP zHgCN%^v4GnT?p0vAn?@nMX+LqbofL3Tm<}P{ z{g?NCAN+dVL%!_f_?v^Z)Zp=<;GmH9B{ZoI9Vy`p%g48B-7+zn>YFd$%Zbg6GwB%1 zcnNF5yr{KqyrYgF4Ia9^V_k0A1Wa0QefYr(d%K%=@4_TP-4wk+G?QHVpwjfRtgBVx zOe||S(ems`&{|+9Gg%E^MUR(;X&p{-i~xMH*s3cz+`UP zWkY$HNz+D@UaDKWO%Hwl37`>ZjUHj$`cx|SBQz)T} zl+M1Xr83-d1Lex;`zT9zSO&wto;rG+@c=|qd=|z38~A)oq9Sk*q9RoOxwsyFRLVh+ zo2G1*A4D(+it4Sp@&5SXZ!)RoDDWF5qJ4t}$llYIvw8aedVueho)nt{Z=g^v+jn$y zxObG49EjaHg(7UzQ4ym;6x9csZ{Ex)@%(Z$cIOP*<>Zvs(#z#GHHlghZ@SN?j5bLG zOwvwEKJEFMF@p{x^EXV`4}N2mlV8wf!My`gOXlZ_>!qAITecg4a}`OTgC zTf+~%s9fd`XUwe~GZ@3?U0hw8ENp$Vn~G${J8e%je)140SL%5`FA?z7t>9o=$5tSA zKc_gmNqp7Rewa^?tq9tN_n5=_OX>F|L7Y3vK#4$ z=Zk}r%1bKaEaA{nl=*?MTrjF?btuBoMH8-dXufIZeWV*4l?M6`GAb!Hm&n zg1dVD3|}r2`Da>6@Mz=mM8}T1m5;G;r)`Z&84g3amJ_0%W6b}iu-c**3BGF7drU6GDOeFKT&^E-U_1klYHuUue%#m_rn>~QML1g<~6g8Om+N_ zYXm|PEj>MJXq_qVANMxr&!}MlRa%tECEO4`l)q13fi=ynwkjWhr)JFUEQVSfd^Ccy>l8a*t#Zheam=K=V2>+kK~t5 ze;J9!n2#Ts+w(6#X{#0Jhc3vZr}oFgOVW1yo9z!YCwU$dqgg}zE6|6A#*5`22F$7t zKWIk_odS5@O)U%8iP^$r)crwG)@|$P;BsCqBax5e#_;{6_Gs5%z}2rK%FrREs>5Zt z^+_K{xa|B@uPpr>J3cqn?FQ=-b3Ip_m|n`dZfQ zKMoDGK-ZMR33iWvlM4ya*!@m%EAfr#Ol%j&?-0fzc_|8cm?* zh$V@UV5$Ao%Zod9CrSm%p5!t>rQV^gE|oN&`DU8Pule~56zoi!_-vbaOUMRH{r;&f z46>fV_GLoGI+3g91f@fM2G}b-1r)WT z{i|cvbq8h~4zGh@mkMi#OiqiMVZYKs=gmmX42FBvwnRefSCYt;3cc${^*+#R{%%u5 zdDUgC-1aG=WU2vZ9pE!`ySH^gwK}7Z3&na#dLpRyHHSAHX*GYQl2U#nB!g(%8Ws)5 znwdVeD${@h;NvdZ3tV}G+sUzLJu0YuE5%ILa#7OGu+%sRaF;Jcaro8*b*R#cjm~xl zp>IXnR(rZV(7(K{>{}6H{VT_Wwd3li zCFSJKXun7L!$k9%kM)|9WU|_3Pfj~G;5?|{Ad>_cY!xa7co7%|l||Bk0Yy+h{mMtB zv&WWKcHA-Q`r11LVPX8#pa+P>_dnTq>xPsj5Ib+MWv^ufOxfatqI5xc(U;fl$6g=n zIq$D$8C|zaUKYx<%B8})VIq5cbg(BY>q?}nIBoD3?Q!BsTr4eD0Aynu#A6p&)vJE| z#DwY<1jj`@!nj88<(u7;B!(gKbLl<8WD`Cg|G~C&>7p6-pF8dVJk!!U_5AD`$3T(M zL8y2O7YZE_II)`wP7zOm(b|fN4kBB!<0p^qPxBlJ_}I7uC6$} zI{NDuWIc#Lp8*g9b_fC(yTjQx)Jg@T_B}gx6hT7w;FUz=K$ksJD>i+a@K}a|V8`d= z@@NSiDD9FI_5;xwkG$toa-!ZFNDS8zA=TaF;yBAA_4e=I?@O$Z(DU10Z}&T5aE6D= z>H|O#aZc8!4ob=_m!p48MPcvZ9j4P;!a2NyA;4bD#=uGoHWy zyIp#u0%pmhw{rXXK`$gK;t%U2Tl!q4PQohP3yz^s0lGGAv74fSvR@`3=s7j%rmrjj z@{1mB??3&+Ce`Ip`-AM`Q!e&c^adPJQPc+4|8V}xcIY0)>X5wt%+9qou2B-^XoY;I z>w-J2>v320!$p@wsHCP9R&z>Wb!DY<;R!2{e$)Mjtvpn~-rbyk>(Q0(d)~!bTZ?y8 z$I2L9bPb-^Zsd;B)>b%CUG;XA7-bulA9`(g_Q2+%nDh6KjXsTvlCjFayFQ!l<1NfO zcf4^`Bcw3gS<=!wH2O9UqK+N=cI?QyZyfH?Hae6?b1S@}A4S^J+HnOe4q z-}mUayuNLe(am@Vg^f=NgYR$-=|;U7Zoe<00(~ZyI1%Je)Z;!2(Hvam566!;LDo8! zAAx-;aG^LJmDBW#yQ}mfX)ePK4*DD%U;1b7;+Bs`GHcgZfIXAwCoj6qAWz~fDf2bFiYuL3!?Teu9hDIjq|AH71;OITICnj6dPBFi(d&J`I=@woO+$eF&|`( zfBp2hT|`#Zs_ymh*bEg%6M8<>mOz(Jp*;V6=*)2GM*|N|js9|Iq66yA$TfcI(=oTS z=UVJf?*esoI@j*oq|xk|M9Tqv0z;SDb}$vHTJ|eF`YOM&ZO$C*FAioOA3KJq+tlw8 zYZgH96hk)1Syk!Pl61&aj^DlD5mfoN=I2X>Zz?WBAxOi^%`bCnZ^I2$YJJ>4P61dX z0Y~bb%h87f&)X~07q(0x<2Iha|FFS6hZ$aig0{mD?5@Zrrfh=w3>q?T;+4E$nE{t4 zJH_f1$*&&zuD($I>e4gNxdJKg0{8@|YW1$n?9w&!iktfS!;)(rs|X2lad@Nv<8*^< z4sW7i-pVx_F2Yf*Np|5$zcMecJev5OOU2*S=yC$;+EMzY&-Opz*zqv|8dNRlQP$Fr zKt{!Mk>dK-h;b}l?cf?YsG^7EZeqHd)A=lzt4cRF+|2WeY3$)m;_?y_a^o?p-!wH! zOiZ{N+S6{Tjivpwp3}bA@P_KH{$6G#`8gadx-*BS`r@w6i9U@ex-z2p{94plS$F4% zlRbaMGpU-Rn%IB9t6U_RIFc@U&E2&k{2=3#Jz|K4GPodZTmL1QYG{WH|D$GoS-WWc z&MRie%Y)q5^bYay1#pI>u34~Cxw&`(_hgFa^bTom2vxNw5<((o;)vU@h&euUO^2=wN1uz=b3v7}Y@?(_k4-|tZj;phZ9`rTf={KAFb;HdkUAc7IL zk<~IaOM>$k^0f7qH}$tb&!9AVaANb~k~Q4~wu0fCAss16&WZtjaE+PWD?$67;g*WZ z-nwJn1*WgU65BSYWPC((tc!2}s9RN(gBV z#x&4kLJSU>XGSaZZWmdxDNz@vmxEl#1x^uY#XS*z8eFM=cz^H-^1Mq%gMcv`Z)IZ@nSWpf!RTqURdTU zQe~7;p$z+WVC9TbG;VK|Q?7c~ zsPsNV@G&lUz2z>`i-`-h*xr@j(X;i>7SE3p`pr)q{H}F{&LYCq8>9Dst99$U;J%EA zd`WFC=+tWnTIpQ{4^%$CG~Zvb9t6r+9Q*!yNz%2$uM4X4-f!1ny&Xz$esh<<4it%w z9SOYxUIZ#tWqpPvObLM=dF4F9SQO>mvrMDNTi{LirM zpXO>ADE31|alvs#pw?mj0x|pOf@a{Qu{*AMG#eSyp`;|4nymg%j6fynA0pdR0 z#*#N2<_To(4*E~v?FnIrr_m9)CM^~aW%0h;X(mrX8W>bQ{&UsA6$%P9bUPkVxVsh+ z4J8U#?rBRjwoPP8KQE2vesWC{rwu>Eay%iK^>FdXpZKWX~@dJ$KJPpzm~p!Bx)LBr!G@d>gP&0l%J^Ug49aF;S;@?Td z_A#Chf*Zfs4NqCGgQlS;>4Rx`G#|8*oOeQad(qS*?fXzV7Q24^n!r!4eYd zYd@(7QIp`tMLYy5qh_VC#v|VKNHW?wTczlh^8M=mQLS6;KiQ95pJU^cunvTmw7Vz1 zhIyz&D;tMT=dxMHZjlA>dS2h`(FNL6H35SJyY+3Bz{adA1bI)u zDBx>n%Nxl?S=&VgZ;Lw;*7`)v3@HgOItmFP1TKK1@_4TBZ@ep46w?#J#kPZ@BDLYK z#>tPKx-R;wF*sU%>+@c|;)}DLx%T0i`cF3g8O^x&oLpv!K7_uoqltxN1g4NI|ezwK7+=&r1kBL+ve|b z=baB~9vd`{fSm%)k3;|9%+K6A5UUZ!!R34m9C7EVFvD4?qwTF!T5zaWHN*1yd!3$` zFyyMB+o-zLo=EQH>sWjjDnA8%XhsG*5QA#ZUY)AFul{%^4wc#2(jQ|}xNo9GQS(m? z>+$T{YhW)Tyqg7&5PnNEeFmb5(Ddoo*~VfiIGlbS5>m`?F3b5Ma;ePyLb{Zgp#i|c z_kCzg3(}mbYIjfd*eOT-1MAow7s78y_Dk2w+S5wor?+;Q#pt*>c71jZI%P zShWbmPx|o0wqI>?opDw_N*m8sZh*c%JWzJ2Ez$YGrr;i;#RG7%_7HTrOj$}%_iUal z;F`>&v5~k`=zssma*0jxP=p?fVTfp!C+e{h00J zjs&#??kg2C(JH2YwJ`z~cd$F2;r!6v$1d-*B=u5TSQTg0uH|=|`dqm5_E}nn{l#tL zb;^w`3-Tsn8T%|{yf4af!j>g%+Njoq_20xq8U!nn(fn3csK4u`|Kg(;;}5ZWEjbJB z8E5{29mq1M>zsoV+rqrtEiFAW#-qC~TyC?JFKg_YThV;`@7B;1>Guc0ceq>@sAS9e znY*mv)gFkhjnEd*1u8)qdH}?){g#(^LJ;_#g|AH+bYoJB>IYlT4a+Wd2mT!js}4{# zxkk>u>M2JoERx^jk~~}*TF2YZwZJgI{<+jW=a(_+N&WO$M*_ew1{%J&9~+9kkgwpw zNH7Bzjpu`0GhjE5D8)2`_v0k_{P~^J##5*q%xy{S+SMYYGzD z{c^599hraPEG6Dk^s?;{)to^!HgO}XY(=IW=rl!Rg(rn_F*SpF0 zw}g3%Wc>q4_b|qax#$B7oqaFk)T7SyRgFMi;y29q3OsocHK=Z_~%M8o&$99tF> zvzWpo+EdC$oDP4z{KKM>^b0-TMYl6^*1EM)HS`xMZL@Z>7Z*A=xKH(ULmlO5Tc2`na_2YY5PiG;olH#^io#^xYehh3B>#7tLk_Rq=`%KWhQa2Qx z&U^JnhOfAqE!=s0J={beKYB#uC9G;f%92GHQgX}o{E-v~N$0re)32HaC)WD#+*6Pi zZ37Jvpl_mmZT00c*}#P1qJ=_>)(0+}w+n0&LDxo+O@W1{GzCsy8_}+|AuhpHp?&c1+7}X>6xBH_=p03TA9SieKxP;XPESaVR0R$B)6u^bUG{EVQ%4Qf zi9VDuJ8>BS!^eh1fjA$)L=Lo4G})-{t)zwY2~{(h13OK&-2wF}t4a2WeY4zXLs5$B zqsO5ZI3FG^ep}6OZB3Q9eZEGt?7Z6^a288JMK&s*CS5WxCs+C~p!C;Wv5=rXOM0RP z0!*gGt1KyJB7m4vQ;f<7@}f2n!@+RtPFe*^BUD;#Hab|TZx~+$p1#be96K$BwGF4Y zL$b8~BO{n+QKtf_e;lw*w!$X=W=+thZ~;MIA0NV}hc(->kob@x{Vzj;Z;_9gbKH6R zplor6^LW=jFTUa2360<>owH7m5=dHUYu7C3b)}@~ykk)~Q4Hr}bF$cY;#0KkLGzgZ ztocKMPmE~(Am_aK;gNVGMe;Dqc?G2G4p?6#*fpwye8U3B4$r{9D6!+ z3=d!7TN7jsD3xb`b#YQoS|ODg3%(8!D}OxP5S`Ql0sEvqW$|;Q84&;w&X1B;rq9~Z zk1|Kg_@4tS#l$k{YeV{nL$!0o*_5ZSu&2@_Az=N(*$S$rEc@M3=yV>k7h?{_tIW!& zzRAhSBG;M9zwc1~u>}3RY%qB}sG_2hHXdJhc4zj%YT|5ZqYP?%MT%XMg+^2=))M1X zm7e&m`3uD)WMB;UfvzU>;%kQ2|0guvw=1fRIv&-0ELQ3rA8!OGAE5qjuqu}j3o?3L zuG9UEFBMpdu9H6HwPr|^jKr_yj{k-fz-ET`dxaCD`6nnXD<}5@z^zP+6pXZI&f~Z- zm6uiQ!pjE1y&WfSLsc`u#FMEN#xV4hqysMOyCtC{_>V#OzvO&0Abkqsr(5n9WQ}x* zZk%bT(N3oqEL3E8JH8o6^0s_;s%bil3=2>RhjZJrCtDl?KyP2pXv?-N`E2)@zK>1V zlw2ke1ct55M%|JK0GBRb9-t>qlk!TAs}^w?~jmo7iLoa^fQ;&y#co*ro*}bQdDsT(cLXGiK0Y zJ~fVUgu`HLgX-Q69Whk~1m|KH5%LbxP6B6#EEus8~J=K0N!XOnsN$@deJ^zI@fAsf z(zKjcL?ZczkFL1(r?13nH>s|x@Y@>31Cv#q+ClbzoKvTS?1P39>OUd|bZd$VF3M97 zYB|Cft1`+T%F<3b>R3sc`>PfF#G_aJ-}`R9o}eqP>M)h};J-Ezz719!iPWYGv+tnihUe>~1>%1=ho_{}0wn#{h9jv- zWPeL3X_se}8x6qH2f}DWP8Nb)nxv(T4L1u8y5T=)`)G6gZrmZ{gtP1CK3*B|W zqW#g?FW~cNPi}%1+#wGPAVPNOkg*MesDz-0Mis8AE;X>nZ9`QU$fHQhVwBC1AFO-+ zQU^>~dLLM&1YL`9eJkaX_h7MCbE_>AFAOruibdCUA(p%50S}b$vzO}4?!RO|?C=~$ z3F!<$42FLROYeL%xg4aax$1un8`Z`HS6Wqr5&-?yujiTsyv?Ku;>60av+u<}Pg#nZT zw`W0VNePT|a_Rd%dJ>&qEFvfRXDE@F8nI%?yQoxWE^^udR}N7~(0d(1LmShM~G#af=!$1yEvMw3s~ znJ`~k6bBo_V~*;SqsM9zQ6jVngwM#g{NO#bwd@lt`C}Kk`;lc)ISBaYL#W+QO&C>} z#U5(P$(EYN>tSJNSY#T@&b1jNLCwwM^9illlA7|Cy4&Ey_np-7?P;&z-~(Xz#HUw4 zz~Jf0u3`;;%Gz$}jG}AubvgwgmV#48Nf*wX?8PkI`0X1z9X{oE5u{vx06S99adz*K z@3~0azO2#Zs5u|pi*U_neb;M5JMJt({|tfkgDpq>7`=u9V%PZ<7V!APi?zh~y8L|2 zdOJx-s%YH4ggNV29f!OndFMjD{)8Gq2x{hA5`bWD-NU3#&Ji1_7m10j%3KuVKdJHm z*cgnX<Rd?XCUMmIkk{ad|;q}*282XBhOpP|JWx)wy`my*k_$yT2ET%aC{gn~HX zy3E#vj~!Ct5XG){ml{U$r=dD!=XzAhOOV2|Xi_*VEK=FgPje%s%tWEI3V1O+W;HKf zXO_pmDR6h}&Z|3_xSsEFlS_K8p%HpT^#Woe@aTN?qciE9Bh8brrgTIxfFHIlH%FaFL;&NE|Q(1FwYf0-t(3g3-`BuOoH%?S?e$^9Hie4o}I{n!}U+2DT z;FqcGx$;(O?mr?e4yexcHs(2eRPr*0YSR#oclI$n(Dl@v*P+uI|XoU`#MfQ zZh-frUEQM1Cvw|6);okEuxVb${@vz5kR{Sx_j-$9V(eXa2NErUdQ<&NagQ06<|S zpu~r7G_Ww2>Ir4kFl1oo+M=`!;*zK!Cqe;_grzdkAXIg@jmDrUs^5d$(=(}hJ zu~`Fn#9PXxysw+-4~eFSBpZ*-zIw+>&5)Aak#Lmv(!D#Iq#B3D)Hq<}dUtrW;PsfQ zdT7No4UB;Z%9*Lcq-MV|heT1qk-u7JX+YIB-C@7Ro}F3^FVBpPWJfKoZGv)WL}|9X z1RPhfDS?(l=s#Q{A285dmMDp274~&C0{Ki=0P|e6RNz(A{!q~8WgX>^X(P*bX(~0~ zdzXNlL@keN0MuW$z&(7|WwwounDg^EB9&ZsaV?v0;iSk|dCN$SnPSL59o2vdeo`AQ zE&LHsH>$cyJMzGxLzVu2sIu`Uj=WtnUiHQE#^d#*lsIFlId-Qx!NIW6h4bRhSRrGb`3wJKcaU5INzJCSpW!m} z+d}s3`P*(*2QAb5+X4G+Rrn@*nEJwQn=+>Lp95|O`3y!PM0gUM4BV8JW8v8t9Xe6r z7Js<=G5iX(Z~Ae$a8o=@CWV0B1%wDlIt%414CpGKc=7o0wz`qpfhFn$HnEPc37t6) z1kSbRqpLcAt$ev=z#;mLs8%~VJ8c4$U{&$rVH|=3a?TZ1{IR!x!aGY;^hdB1@gA$! zUYA}i?z^wi_~nyZ77MaJkA$$PB*j z+Z3P2?OOYfDJ;Q8f4uBAeuFB*lqol`4K?(TUrY%e0I^La9y`uI)~%xunHjkf z5HxZBlr){mRosHU6FJ25ksvXM*7s^_`@y}J_X9ioiYFR(>@H}pQ!^Nl10$cfWQoPb z3J@q$N5@98LDo{$xNZiQd&lRyVMeoBuT2MPt0F7m6K&I$d#>gogvvyl87cP8%L_$z z#B2|$j!8l$0Zf(<(cBf`NA|~ScFGdjhhHaB5&T$L%xiV9 z_}-YAm6P+P=jyfS$WD~I-<=B=HA$Nu}3Y-Z>-KWj&IOsn2Z4L1X zN%_X}QMIc^+qMFB&{u~S|82U(d(P(@yd46&MLVJ=ltO(@-Z&TUW*XA2L6qY+QMLd{ON+nb>6%?OzThd17Jykcs`OZLc^`!t$=vWogaPX&eJm4;FB*- zR3Nyz8G(j-$HUf(%RGGZoB2uu=j)l}Z+lZ_`f9OiK~jxif^PF@payLCNURwZ4;w+C zdla6XllDAfAX zLfd?9-nQVpOl0gxJXO!64_Utr1i&jrzpRfoWfDIpN97;@yq{~b4QeD z0yc??<0#~Jn_GlfK8uk6vy(<=0xB0AE4`QXG-(sJUwC*9%?*uM;yBbuD?R>biMs_~ z!BXU^f=>Er=lPAdw+#neKDaac&eKE#M@Rj2Rvv$>9Jqsd7OjWO>sy%?EN7mA)6<~S z@N(41S(U;Y!7@5?_dT4kG~L|X+IPvH3oi+Y)%@(J;;$DM{Nd;g1?lvHjviR5kVCU@ zX!)L?wN`3;F7mE8l}$1F)q@k278yk}yw` zT+cnFx<%0vK6#;V0pfg+Ind5`6Uuz|^(K#(nx?{$T8?Gn7#}v+`yw<{)!f|N)NkGZ z(|~2UNo9JZ^_a2R4p&pv>TAJ*8+|GuHGEa~<{44Sedk9&YhXS4$|yM3RIAXlTR>(8 z69~@B6O`Y$5Sr3iyo-WddN00qZ8omFwMsigk)$wirsU+i2V)!;v#Ku65s3T#8n%J4 z1ebu;k;8ePdNa~u9me7<pg?Pwf20yUo$3CO6>8p;*&7H$C^Y-`SJ6 z#MI;xw{D-1n7rHY%cq?U$OQX!XF89DoPE1X9SwS(K2KWS=mOQ8@(gvjOb~3};ToL2 z3Bma({6cw_!6K8`UJ%HWCY4EYUagH%x`8UB_g-1b>)PlpoUB|UyzM$lI|&H4>)vtt zy+jl~;6{8i*Wy~6tVHq)b#SOxA3I_9)iRZ9Fn5;_&mfoCM8ssuaAa75!Dm|5K9%-* z@}WwR3>|GzQvzx7N~MYC;SO=XN9}rT@1|D|LjWr;mZ;fG!o!f*8O23*%Y@fe)WNjz zz&?3VLn?~%k-Etiyhgg1>10C?>Z)4UmUzQcThKFCcHBM6$o)junH5{y_VgS_yOai} zuM;T-TJI2=*Q4&YrJwJvT+hF830Rk4ND~!#!lue`rBz5spTeZEdQ4VjhfnbxKKNt; ztlc6QptZP0$CzX9a1QsNQR$G z`G#$)CQzq2dLgjL0s}!NOtae!XzFzObF??8T*yud`PHdz;_GNjGJWoa!x?0|Pw2%( zBdgTWRf%-pcv(`iUEJC`u%o+f`GOa*GlU+1xfgoq@dpcqVt~|qOWlgJP@^bdfN9>y zCH8uQZvHYop)Q5)yD@@80(8Nc1$0+f2T4zJ5FHX<$~EM+wbygQbFJ$N-@WhdUPnBJ zz_nbWj&Vs`s;~<*^~)`b!SZ^g8)^TUTJK_3jI^1wfSDk_gPWPd*Y?Mz?n-Oou%NDz zB1rK(#WGs7N9{Fze+j7Tc`KQG8c;_{<8t_iQMQh}0ZLKS4$uR6dtEs*Vz>1szwcEz zpP6}bh1!kjOGo&Kkh6S1-=?t!hpZko?_PWUqV_sH7`UeQ)4v~*nLj$67UPw=Wis1} z5&|_fN%kPagi9}~3cuT9{2WD^=F^5WBaA*HuJ{h9*i2-soMnq9Vosd&%qp5T;+_8m zb~a(%)XD_SC72zBNN=?NAm{v5WZh@hyba|i4jpM2ERa61nyk&_C_EY1zxjR(I*FO* ze_PO5DJ`vPZMgOx_^L!hBjw5B=HW^4NEh+T{xh075@$V}a~}TjGlbnyKYRv%f}BWg znBG(bfk1{CDWeI z8n(7k#8Hx60p5A*m~i5>e|zgqTdn_QV`Gf%*jRaKWu?(?uF*61^@z_q$HUQ19UvEz&M0 zJN7g>8f-{9K)HMe@3;OuxT;jEF05Q8d9huMbiRE0aT`jyIBUDQ?ehUR4f|1t7AipP zxB0r$J*6me@qH1gj6}tFtAw@E^sqO58)CEB->nqC^DMx2SqpoJamM1(n$ifMo2#t$ zzPO&=V7N|(HfM4b0@Bo%rn!s9f*HNkl7a#r$3UfHFU#mx*bE29zWb#ffFX7zjAbY+ z{2;?=!1XMFw%Kijx9b$j$%f>C+T!X2d%#}5TS-pbd>RJ^jdU4WAg+5HeKZXhd!%nR zgg%r7^`OlpZ4#Y(O-Tn=@`<9I=$Bmt#UyFM_^V^^#3xFs1CS|;GKhkSdMgY}rJ%gw zb!1j(-QC#%k?GGPh#x;?=8AtkLI?byppG$C*WNYW+4ZCBh;3`gb;TmMNs=BAV^HvU zpcx`sET(zO<2nF37m`kxSy?+^ZLYy8=-qe&f?o72jrDn?_59!+q6JIyPiF<-|2ME0 zmLQAV_soAS@&65T$A9fn|6O?Ke=cdVP??O$f3NT4|FMBnzDar!0qk*S(PyVQ_=)SS zB_ijCMYXjy6}yS;>JrKvq%@<9j+%(wt1Nll8*HPlgqaoV`S9oY73`9p$8{2)AA3SSHn6HaSzN|;RnXMe(m&;i#|FB) zyg-)KELHUSCXxe zC^gAzfBfs$8y!ca71?Nq*7I_Hw8=G<9$0NSc^N`#n=>5`f1aU$}4~W(4hCI?dBA{=WWWg%+>&9l9+Ve>OGP z>-zQmT3QLsFl~Kn=-uDnUxbhOl)QRp@Hcm%#^8LsszsT%1i|>Tu&|d9xh}Xrf7^|? z`1oQp0}3m(NHCkiqobwO`sK@Cfx*Go#}3Zl2A2NZUGHZ9_3KuIpX*2YanGKeIvTO! z%FCFT8{e9ni>s@3Ej9!sG*974%g9i3Idev%yu7@%v$Hds!Lh8tZ0@d~p^JA->Lp)_ zq~(=|+vVis%u%Zvm|q|8`)+bB`uX|2Oifkle`Z7RUutqFG$JD6KvcQ?9=7qRzXwFx zcq4ykKtOH)-hHY6d zG&&sR@QKc`OGcOe{?bw2uC6XTj%sPj;MLOhz7jHal=0=i#}`c_E*d0EvY^tqFlnK2 zZ2mQDc(fOPk2wCah3D68<1ZqYe_a~jZl2#?j`9)57VwtH*j7Q^%Z4-C8l^8f$< literal 0 HcmV?d00001 diff --git a/docs/local-development.md b/docs/local-development.md index 6dfb4817c..82afdf971 100644 --- a/docs/local-development.md +++ b/docs/local-development.md @@ -127,6 +127,8 @@ To perform the upgrade you then - Update `version` in `package.json`. If the version in `package.json` matches the existing version in addresses file, you will have to explicitly confirm that you want to proceed. - Run `npm run upgrade-facets:local`. This will deploy new facets and make all necessary diamond cuts. It also updates the existing addresses file `addresses/-.json` (for example `addresses/31337-localhost.json` if you are using a default local hardhat node) and outputs the upgrade log to the console. +Protocol initialization facet is explained in more detail in separate page: [Protocol initialization handler facet](protocol-initialization-facet.md). + ### Upgrade clients To test the upgrade functionality, you first need to setup upgrader account as described in section [Manage roles](local-development.md#optional-manage-roles) diff --git a/docs/protocol-initialization-facet.md b/docs/protocol-initialization-facet.md new file mode 100644 index 000000000..939580c7f --- /dev/null +++ b/docs/protocol-initialization-facet.md @@ -0,0 +1,57 @@ +[![banner](images/banner.png)](https://bosonprotocol.io) + +

Boson Protocol V2

+ +### [Intro](../README.md) | [Audits](audits.md) | [Setup](setup.md) | [Tasks](tasks.md) | [Architecture](architecture.md) | [Domain Model](domain.md) | [State Machines](state-machines.md) | [Sequences](sequences.md) + +## Protocol initialization handler facet + +Protocol initialization handler facet has a special role in the whole [architecture](architecture.md). On one side we have Diamond specific facets - Loupe and Cut - which enable lookups and facet management. On the other hand we have Protocol specific facets which implements all features needed for protocol to work. Most of these facets needs to be initialized at the time when cuts are done, which among other includes registering its interface in the diamond. However in some cases initialization of a facet if different depending on whether whole protocol is deployed for the first time or it is just upgraded. Moreover, some upgrades might introduce a logic that relies on data that was not produced in old versions of the protocol. For that purpose we introduce Protocol initialization handler facet, which conceptually belongs between Diamond specific and Protocol specific facets. Its role is to enable smooth atomic upgrades and if necessary populate some of contract storage. + +Protocol initialization handler facets responsibilities are: +- store version of the protocol, +- forward initialization calls to individual facets, +- if called during an upgrade, properly handle initialization data, +- remove supported interfaces, +- add supported interfaces. + +Two biggest benefits of the Protocol initialization handler are: +- It allows atomic cuts of multiple facets, so there is generally no need to pause the protocol during the upgrade. +- It allows custom storage manipulation, so if any back filling is needed, we have a way to do it. + +### Versioning + +Initialize accepts version encoded in bytes32. Every time upgrade takes place, an unique version must be supplied, otherwise initialization reverts. Depending on version, some additional checks can be done, for example upgrade to certain versions can only be done if current protocol version is exactly one version lower. This kind of restriction is planned to be used on every upgrade. This means that skipping versions during the upgrade will not be possible. If the latest version of protocol code is more than one version higher that current deployed protocol, all intermediate upgrades need to be done to upgrade to the lates version. + +Facets allows to query the current version by calling `getVersion`. + +### Facet initialization + +Each Protocol facet should have initialization function (even if no-op) to ensure consistency across codebase and different version. Initialization function should be written as if protocol is deployed for the first time (i.e. not taking into account potential effects on the upgrade). + +When protocol is deployed for the first time, `initialize` on Protocol initialization handler should get list of all facet implementation addresses together with corresponding initialization data. This data is passed directly on individual facets where whole initialization takes place. + +However, before upgrade is done, effects of facet initializers should carefully be considered before passing data to initialization handler. If facet's initialization function does not affect the protocol state in a harmful way, it should be passed to initialization handler in the same way as for the initial deployment. However, when initialize affects the storage (for example Config handler sets all counters to 1), facet should be omitted from initialization call and approach from next section should be followed. + +### Data initialization + +When facet initializers are clashing with existing data or simply a specific storage must be populated, initializer facet must be updated to cater for these kind of change. Suppose new version is X.Y.Z and there is a need to modify the storage during the update, a new internal function should be prepared, called `initVX_Y_Z`. This function can make additional version checks and can accept arbitrary data which can be handled in any desired way. This allows to populate custom storage slot during the upgrade or mimic actions of the facet initializers that would otherwise be harmful. For example if another limit is added to the Config handler, `initVX_Y_Z` could simply store new value to desired location, without the need to overwrite other config values and at the same time leaves counters intact. +Initialization data is passed in as bytes, so `initVX_Y_Z` must be decoded into correct types if needed. + +### Managing supported interfaces + +Although most facets initializers automatically register their EIP165 interfaces, old interfaces are not automatically removed during upgrade/removal. Protocol initialization handler therefore allows upgrader to supply list of interfaces to remove or add, which happens atomically during the upgrade. + + +### Initialization diagram +Diagram below represents a simple upgrade with two upgraded facets: +- Facet 1 has an initializer that writes to two slots, one of which is already populated. +- Facet 2 has an initializer that writes to an empty slot. + +During the upgrade, the following happens: +- diamondCut is invoked externally. After it performs cut actions, it calls initialize on Protocol Initialization Facet. +- Since Facet 2 has upgrade-safe initializer, it is invoked directly on Facet itself. +- On the other hand, calling `initialize` on Facet 1 would affect already populated storage slot #102 and another empty slot #104. To avoid undesired effects, `initialize` cannot be called directly. Instead, `initVX_Y_Z` updates slot #104 and leaves #102 untouched. +- Additionally `initVX_Y_Z` also touches slot #106, not because some initializer would otherwise do it, but for example because some updated method from Facet 1 needs to read from that slot. + +![Protocol Initialization Handler](images/Boson_Protocol_V2_-_Protocol_Initialization_Hander.png) \ No newline at end of file From 092c01039cfa2eb8e2c13fcfa6001e0d2f68889e Mon Sep 17 00:00:00 2001 From: zajck <64400885+zajck@users.noreply.github.com> Date: Wed, 18 Jan 2023 09:13:20 +0100 Subject: [PATCH 2/6] Apply suggestions from code review Co-authored-by: Ana Julia Bittencourt --- docs/protocol-initialization-facet.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/protocol-initialization-facet.md b/docs/protocol-initialization-facet.md index 939580c7f..8fd53387e 100644 --- a/docs/protocol-initialization-facet.md +++ b/docs/protocol-initialization-facet.md @@ -6,7 +6,7 @@ ## Protocol initialization handler facet -Protocol initialization handler facet has a special role in the whole [architecture](architecture.md). On one side we have Diamond specific facets - Loupe and Cut - which enable lookups and facet management. On the other hand we have Protocol specific facets which implements all features needed for protocol to work. Most of these facets needs to be initialized at the time when cuts are done, which among other includes registering its interface in the diamond. However in some cases initialization of a facet if different depending on whether whole protocol is deployed for the first time or it is just upgraded. Moreover, some upgrades might introduce a logic that relies on data that was not produced in old versions of the protocol. For that purpose we introduce Protocol initialization handler facet, which conceptually belongs between Diamond specific and Protocol specific facets. Its role is to enable smooth atomic upgrades and if necessary populate some of contract storage. +Protocol initialization handler facet has a special role in the whole [architecture](architecture.md). On one side we have Diamond-specific facets - Loupe and Cut - which enable lookups and facet management. On the other hand we have Protocol specific facets which implements all features needed for protocol to work. Most of these facets need to be initialized at the time when cuts are done, which among others includes registering its interface in the diamond. However, in some cases initialization of a facet is different depending on whether whole protocol is deployed for the first time or it is just upgraded. Moreover, some upgrades might introduce a logic that relies on data that was not produced in old versions of the protocol. For that purpose, we introduce Protocol initialization handler facet, which conceptually belongs between Diamond-specific and Protocol-specific facets. Its role is to enable smooth atomic upgrades and if necessary populate some of contract storage. Protocol initialization handler facets responsibilities are: - store version of the protocol, @@ -21,7 +21,7 @@ Two biggest benefits of the Protocol initialization handler are: ### Versioning -Initialize accepts version encoded in bytes32. Every time upgrade takes place, an unique version must be supplied, otherwise initialization reverts. Depending on version, some additional checks can be done, for example upgrade to certain versions can only be done if current protocol version is exactly one version lower. This kind of restriction is planned to be used on every upgrade. This means that skipping versions during the upgrade will not be possible. If the latest version of protocol code is more than one version higher that current deployed protocol, all intermediate upgrades need to be done to upgrade to the lates version. +Initialize accepts version encoded in bytes32. Every time an upgrade takes place, a unique version must be supplied, otherwise initialization reverts. Depending on version, some additional checks can be done, for example, upgrade to certain versions can only be done if current protocol version is exactly one version lower. This kind of restriction is planned to be used on every upgrade. This means that skipping versions during the upgrade will not be possible. If the latest version of protocol code is more than one version higher than currently deployed protocol, all intermediate upgrades need to be done to upgrade to the latest version. Facets allows to query the current version by calling `getVersion`. @@ -31,11 +31,11 @@ Each Protocol facet should have initialization function (even if no-op) to ensur When protocol is deployed for the first time, `initialize` on Protocol initialization handler should get list of all facet implementation addresses together with corresponding initialization data. This data is passed directly on individual facets where whole initialization takes place. -However, before upgrade is done, effects of facet initializers should carefully be considered before passing data to initialization handler. If facet's initialization function does not affect the protocol state in a harmful way, it should be passed to initialization handler in the same way as for the initial deployment. However, when initialize affects the storage (for example Config handler sets all counters to 1), facet should be omitted from initialization call and approach from next section should be followed. +However, before upgrade is done, effects of facet initializers should be carefully considered before passing data to initialization handler. If facet's initialization function does not affect the protocol state in a harmful way, it should be passed to initialization handler in the same way as for the initial deployment. However, when initialize affects the storage (for example Config handler sets all counters to 1), facet should be omitted from initialization call and approach from next section should be followed. ### Data initialization -When facet initializers are clashing with existing data or simply a specific storage must be populated, initializer facet must be updated to cater for these kind of change. Suppose new version is X.Y.Z and there is a need to modify the storage during the update, a new internal function should be prepared, called `initVX_Y_Z`. This function can make additional version checks and can accept arbitrary data which can be handled in any desired way. This allows to populate custom storage slot during the upgrade or mimic actions of the facet initializers that would otherwise be harmful. For example if another limit is added to the Config handler, `initVX_Y_Z` could simply store new value to desired location, without the need to overwrite other config values and at the same time leaves counters intact. +When facet initializers clash with existing data or simply a specific storage must be populated, initializer facet must be updated to cater for this kind of change. Suppose new version is X.Y.Z and there is a need to modify the storage during the update, a new internal function should be prepared, called `initVX_Y_Z`. This function can make additional version checks and can accept arbitrary data which can be handled in any desired way. This allows populating custom storage slots during the upgrade or mimicking actions of the facet initializers that would otherwise be harmful. For example if another limit is added to the Config handler, `initVX_Y_Z` could simply store new value to desired location, without the need to overwrite other config values and at the same time leaves counters intact. Initialization data is passed in as bytes, so `initVX_Y_Z` must be decoded into correct types if needed. ### Managing supported interfaces From f2adad6a022b02685cc6667dad61972de614165a Mon Sep 17 00:00:00 2001 From: zajck Date: Wed, 18 Jan 2023 09:28:33 +0100 Subject: [PATCH 3/6] Expand initialization description --- docs/protocol-initialization-facet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/protocol-initialization-facet.md b/docs/protocol-initialization-facet.md index 939580c7f..91d7729c1 100644 --- a/docs/protocol-initialization-facet.md +++ b/docs/protocol-initialization-facet.md @@ -27,7 +27,7 @@ Facets allows to query the current version by calling `getVersion`. ### Facet initialization -Each Protocol facet should have initialization function (even if no-op) to ensure consistency across codebase and different version. Initialization function should be written as if protocol is deployed for the first time (i.e. not taking into account potential effects on the upgrade). +Each Protocol facet should have initialization function (even if no-op) to ensure consistency across codebase and different version. Initialization function should be written as if protocol is deployed for the first time (i.e. not taking into account potential effects on the upgrade). Although initialization functions must be external, they should not be part of facet interface and therefore should never be added to diamond function list. This is important to prevent facet reinitialization and clashes between initializers with same argument types. When protocol is deployed for the first time, `initialize` on Protocol initialization handler should get list of all facet implementation addresses together with corresponding initialization data. This data is passed directly on individual facets where whole initialization takes place. From c86903167e00a133446e410dcd4ec50ef88acec4 Mon Sep 17 00:00:00 2001 From: zajck Date: Fri, 20 Jan 2023 18:26:55 +0100 Subject: [PATCH 4/6] Review fixes --- docs/local-development.md | 6 +++--- docs/protocol-initialization-facet.md | 28 +++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/local-development.md b/docs/local-development.md index 82afdf971..925dded16 100644 --- a/docs/local-development.md +++ b/docs/local-development.md @@ -113,7 +113,7 @@ To get the examples how to use the admin to perform actions, refer to unit test - FEE_COLLECTOR role: `test/protocol/FundsHandlerTest.js` ### Upgrade facets -To test the upgrade functionality, you first need to setup upgrader account as described in previous section. +To test the upgrade functionality, you first need to setup an upgrader account as described in previous section. To perform the upgrade you then - Update some of the existing facets or create new one. @@ -127,10 +127,10 @@ To perform the upgrade you then - Update `version` in `package.json`. If the version in `package.json` matches the existing version in addresses file, you will have to explicitly confirm that you want to proceed. - Run `npm run upgrade-facets:local`. This will deploy new facets and make all necessary diamond cuts. It also updates the existing addresses file `addresses/-.json` (for example `addresses/31337-localhost.json` if you are using a default local hardhat node) and outputs the upgrade log to the console. -Protocol initialization facet is explained in more detail in separate page: [Protocol initialization handler facet](protocol-initialization-facet.md). +Protocol initialization facet is explained in more detail on a separate page: [Protocol initialization handler facet](protocol-initialization-facet.md). ### Upgrade clients -To test the upgrade functionality, you first need to setup upgrader account as described in section [Manage roles](local-development.md#optional-manage-roles) +To test the upgrade functionality, you first need to setup an upgrader account as described in section [Manage roles](local-development.md#optional-manage-roles) To perform the upgrade you then - Update some of the existing clients diff --git a/docs/protocol-initialization-facet.md b/docs/protocol-initialization-facet.md index ec44fc26d..62df3e470 100644 --- a/docs/protocol-initialization-facet.md +++ b/docs/protocol-initialization-facet.md @@ -6,37 +6,37 @@ ## Protocol initialization handler facet -Protocol initialization handler facet has a special role in the whole [architecture](architecture.md). On one side we have Diamond-specific facets - Loupe and Cut - which enable lookups and facet management. On the other hand we have Protocol specific facets which implements all features needed for protocol to work. Most of these facets need to be initialized at the time when cuts are done, which among others includes registering its interface in the diamond. However, in some cases initialization of a facet is different depending on whether whole protocol is deployed for the first time or it is just upgraded. Moreover, some upgrades might introduce a logic that relies on data that was not produced in old versions of the protocol. For that purpose, we introduce Protocol initialization handler facet, which conceptually belongs between Diamond-specific and Protocol-specific facets. Its role is to enable smooth atomic upgrades and if necessary populate some of contract storage. +The Protocol initialization handler facet plays a specialized role in the overall [architecture](architecture.md). On one side we have Diamond-specific facets - Loupe and Cut - which enable lookups and facet management. On the other hand we have Protocol specific facets which implement all the features needed for protocol to function as intended. Most of these facets need to be initialized at the time when cuts are performed, an example being the act of registering its own interface in the diamond. However, in some cases initialization of a facet is different depending on whether the whole protocol is deployed from scratch or whether it is being upgraded. Moreover, certain upgrades might introduce logic that requires data that was not produced in an older version of the protocol which also need to be handled in the initialization step. To this end, we introduce the Protocol initialization handler facet, which conceptually lives between the Diamond-specific and the Protocol-specific facets. Its role is to enable smooth atomic upgrades between versions. One of its functions is to backfill contract storage if needed for a given upgrade. -Protocol initialization handler facets responsibilities are: -- store version of the protocol, -- forward initialization calls to individual facets, -- if called during an upgrade, properly handle initialization data, +Protocol initialization handler facets responsibilities are to: +- store the version of the protocol, +- forward initialization calls to the appropriate facets, +- properly handle the initialization of data when called during an upgrade, - remove supported interfaces, - add supported interfaces. Two biggest benefits of the Protocol initialization handler are: -- It allows atomic cuts of multiple facets, so there is generally no need to pause the protocol during the upgrade. -- It allows custom storage manipulation, so if any back filling is needed, we have a way to do it. +- It allows for atomic cuts of multiple facets, this can at times alleviate the need to pause the protocol to perform an upgrade. +- It allows for custom storage manipulation, enabling the upgrades to backfill data as needed. ### Versioning -Initialize accepts version encoded in bytes32. Every time an upgrade takes place, a unique version must be supplied, otherwise initialization reverts. Depending on version, some additional checks can be done, for example, upgrade to certain versions can only be done if current protocol version is exactly one version lower. This kind of restriction is planned to be used on every upgrade. This means that skipping versions during the upgrade will not be possible. If the latest version of protocol code is more than one version higher than currently deployed protocol, all intermediate upgrades need to be done to upgrade to the latest version. +Initialize accepts version numbers that are encoded as bytes32. Every time an upgrade takes place, a unique version must be supplied, otherwise the initialization will revert. Checks can be performed against these version numbers, e.g. an upgrade to a given version can only be performed if the current protocol version is set to exactly one version below. This kind of restriction is planned to be used on every upgrade. This means that skipping versions during the upgrade will not be possible. If the latest version of protocol code is more than one version higher than currently deployed protocol, all intermediate upgrades need to be done to upgrade to the latest version. Facets allows to query the current version by calling `getVersion`. ### Facet initialization -Each Protocol facet should have initialization function (even if no-op) to ensure consistency across codebase and different version. Initialization function should be written as if protocol is deployed for the first time (i.e. not taking into account potential effects on the upgrade). Although initialization functions must be external, they should not be part of facet interface and therefore should never be added to diamond function list. This is important to prevent facet reinitialization and clashes between initializers with same argument types. +Each Protocol facet should have an initialization function (even if no-op) to ensure consistency across the codebase and the different versions. The initialization functions should be written as if the protocol is deployed for the first time (i.e. not taking into account potential effects on the upgrade). Although initialization functions must be external, they should not be part of facet interface and therefore should never be added to diamond function list. This is important to prevent facet reinitialization and clashes between initializers with same argument types. -When protocol is deployed for the first time, `initialize` on Protocol initialization handler should get list of all facet implementation addresses together with corresponding initialization data. This data is passed directly on individual facets where whole initialization takes place. +When protocol is deployed for the first time, `initialize` on Protocol initialization handler should get a list of all facet implementation addresses together with corresponding initialization data. This data is passed directly on to individual facets where whole initialization takes place. -However, before upgrade is done, effects of facet initializers should be carefully considered before passing data to initialization handler. If facet's initialization function does not affect the protocol state in a harmful way, it should be passed to initialization handler in the same way as for the initial deployment. However, when initialize affects the storage (for example Config handler sets all counters to 1), facet should be omitted from initialization call and approach from next section should be followed. +However, before an upgrade is performed, the effects of facet initializers should be carefully considered before passing data to initialization handler. If a facet's initialization function does not affect the protocol state in a harmful way, it should be passed to initialization handler in the same way as for the initial deployment. However, when initialize affects the storage (for example Config handler sets all counters to 1), the facet should be omitted from the initialization call and the approach detailed in the next section should be followed. ### Data initialization -When facet initializers clash with existing data or simply a specific storage must be populated, initializer facet must be updated to cater for this kind of change. Suppose new version is X.Y.Z and there is a need to modify the storage during the update, a new internal function should be prepared, called `initVX_Y_Z`. This function can make additional version checks and can accept arbitrary data which can be handled in any desired way. This allows populating custom storage slots during the upgrade or mimicking actions of the facet initializers that would otherwise be harmful. For example if another limit is added to the Config handler, `initVX_Y_Z` could simply store new value to desired location, without the need to overwrite other config values and at the same time leaves counters intact. -Initialization data is passed in as bytes, so `initVX_Y_Z` must be decoded into correct types if needed. +When facet initializers clash with existing data or if a specific bit of storage needs population, the initializer facet must be updated to cater for this kind of change. Suppose that in a new version X.Y.Z there is a need to modify the storage, a new function ought to be created, called `initVX_Y_Z`. This function can make additional version checks and can accept arbitrary data which can be handled in any desired way. This allows populating custom storage slots during the upgrade or mimicking actions of the facet initializers that would otherwise be harmful. For example if another limit is added to the Config handler, `initVX_Y_Z` could simply store new value to desired location, without the need to overwrite other config values and at the same time leaves counters intact. +Initialization data is passed in as bytes, so `initVX_Y_Z` must be decoded into correct types as needed. ### Managing supported interfaces @@ -44,7 +44,7 @@ Although most facets initializers automatically register their EIP165 interfaces ### Initialization diagram -Diagram below represents a simple upgrade with two upgraded facets: +The diagram represents a simple protocol upgrade whereby two facets are upgraded: - Facet 1 has an initializer that writes to two slots, one of which is already populated. - Facet 2 has an initializer that writes to an empty slot. From ec4e481320157c4b22306248bc9d4d3705609fd4 Mon Sep 17 00:00:00 2001 From: zajck Date: Tue, 24 Jan 2023 11:08:49 +0100 Subject: [PATCH 5/6] upgrade configs --- docs/tasks.md | 3 + docs/upgrade-configs.md | 130 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 docs/upgrade-configs.md diff --git a/docs/tasks.md b/docs/tasks.md index e6510418f..8344286bb 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -70,6 +70,9 @@ For upgrade to succeed you need an account with UPGRADER role. Refer to [Manage - **Ethereum Mainnet**. This upgrades the existing diamond on Ethereum Mainnet. ```npm run upgrade-facets:ethereum:mainnet``` +Each upgrade requires correct config parameters. We provide [correct configurations for all release versions](). +If you want to upgrade to any intermediate version (for example to a release candidate), you can use the same config as for the actual release, however it might result in interface clashes, which prevent subsequent upgrades. Workaround for this problem is to temporary disable `onlyUninitialized` modifier on all contracts that clash. Since this is generally an unsafe operation, you should never do that in production environment. Production should always be upgraded only to actual releases. + ### Upgrade clients Upgrade existing clients (currently only BosonVoucher). Script deploys new implementation and updates address on beacon. We provide different npm scripts for different use cases. A script for Hardhat network does not exist. Since contracts are discarded after the deployment, they cannot be upgraded. diff --git a/docs/upgrade-configs.md b/docs/upgrade-configs.md new file mode 100644 index 000000000..0242a0f07 --- /dev/null +++ b/docs/upgrade-configs.md @@ -0,0 +1,130 @@ +[![banner](images/banner.png)](https://bosonprotocol.io) + +

Boson Protocol V2

+ +### [Intro](../README.md) | [Audits](audits.md) | [Setup](setup.md) | [Tasks](tasks.md) | [Architecture](architecture.md) | [Domain Model](domain.md) | [State Machines](state-machines.md) | [Sequences](sequences.md) + +## Upgrade configurations +This page provides correct configuration upgrades for all releases. +If you want to upgrade to any intermediate version (for example to a release candidate), you can use the same config as for the actual release, however it might result in interface clashes, which might prevent subsequent upgrades. Workaround for this problem is to temporary disable `onlyUninitialized` modifier on all contracts that clash. Since this is generally an unsafe operation, you should never do that in production environment. Production should always be upgraded only to actual releases. + +Replace contents of file `scripts/config/facet-upgrade.js` with a configuration below, corresponding to desired upgrade. + +### 2.0.0 -> 2.1.0 + +```javascript +{ + addOrUpgrade: ["ERC165Facet", "AccountHandlerFacet", "SellerHandlerFacet", "DisputeResolverHandlerFacet"], + remove: [], + skipSelectors: {}, + initArgs: {}, + skipInit: ["ERC165Facet"], +} +``` +Note: format to upgrade from `2.0.0` to `2.1.0` does not match the latest upgrade script format. When you are upgrading to this version, checkout the tag `v2.1.0-scripts` which is the latest version of old upgrade script that works with upgrades up to `2.1.0`. + +### 2.1.0 -> 2.2.0 + +```javascript +{ + addOrUpgrade: [ + "AccountHandlerFacet", + "BundleHandlerFacet", + "ConfigHandlerFacet", + "DisputeHandlerFacet", + "DisputeResolverHandlerFacet", + "ExchangeHandlerFacet", + "MetaTransactionsHandlerFacet", + "OfferHandlerFacet", + "SellerHandlerFacet", + "TwinHandlerFacet", + "ProtocolInitializationHandlerFacet", + "OrchestrationHandlerFacet1", + "OrchestrationHandlerFacet2", + ], + remove: ["OrchestrationHandlerFacet"], + skipSelectors: {}, + facetsToInit: { + OrchestrationHandlerFacet1: [], // init only OrchestrationHandlerFacet1, OrchestrationHandlerFacet2 is no-op + MetaTransactionsHandlerFacet: [ + [ + "0xaaea2fdc2fe9e42a5c77e98666352fc2dbf7b32b9cbf91944089d3602b1a941d", + "0xf7e469fd36ada03a455f9ae348527498cb8d8a6b6137aa769c2bc8f4cc0ad7e6", + "0x90b9d701120ba03749f7021324e5fc97438c847380b773bb897ffa9fabab647c", + "0x6adb0d9c3c70c5c3ec9332cf7e4c4d2c33eb29cb3e55037c79434ef3fada4044", + "0x0ae2126d006c21c5824ec10ee0dc64d5ef05f858080dd1a92e3dbe198b5f8499", + "0xa880fd89e679d8c813150b269255a8a9ae46984310cddeb8f344a77bbb4cb0c8", + "0x1227dbbba1af7882df0c2f368ac78fb2c624a77dcfa783b3512a331d08541945", + "0x1843b3a936e72dc3423a7820b79df54578eb2321480ad2f0c6191b7a2c500174", + "0x2230dd12e924aa859ef57ec4dade101275616eb92217d01ec74d9efe2f6e6aa6", + "0x4e534c9650f9ac7d5c03f8c48b0522522a613d6214bf7ba579412924ab0f9295", + "0xfa92792a82bab95011388f166520331cc3b3a016362e01f3df45575f206a088c", + "0x125e35ecb0e80f32093bffe0ee126e07e3081113653234a73157ad1a9428e7b5", + "0xda14451cc7bdf6d3eb088cbf8cf16395d91652dfeb49155fea8e548623cf58fb", + "0x0eb1de1c910b5f6b3e081ea9d70ea55b1f63e8687221289e0fd95bb63b7f0267", + "0x7c016ad538b2b5ce85140e48fb6abe43e7ab43b31b114aae967303c96a22f901", + "0x04f63e12403cb2deb13216a684596fc0a94e03dd09a917ea334ad614d4265c56", + "0x20a68d25bd6cc258f86e9470a6f721a0c0d78f136b2cf060800568be00bae41b", + "0x42443efdfc55a8186beaa746c4c9cb35eb3548b30d041a7e394ad7056aaeb83a", + "0xae707f1e32af7522193cb7fc73109343421ddc883a6a0a4dfbc867ddfc7224ba", + "0xf7d95f3bb0dbce2f73cdc7ba81489e84901014795d94cdaa35d28446803e96e4", + "0xfb50e2350c3bb4f09d6e5db77ea5f63dcedbad1f5d95b8ec5b3baec8bfc13e94", + "0xa5c1674e620c21e2f21f5c1faae4ce84afbd8427e2ff31514412c9ce0737725a", + "0xdfdcd6135be7ca49767c5f46cf5299f807d20465cfa6bbfd2c53e78c1f5d5d43", + "0xb4dcefaf4091c503ee1183c6892061bd8b0d7bbfd691734068c3408c6080c512", + "0x65f65c948d22c455a7cdc716108ceb3e47b011fff5dcd04af5d01259045312cb", + "0xbed3ac5024241532a75d94ae773c337b68153785c80a53cc5d1fca9cc67edd1c", + "0x1f317d1c833d4ab29c44bcc446c31b0c3b34e8e9bd89a352476c6aa134ce819d", + "0x5f119c40938c3ae05dcadcac680748ccc14f460b341454412abc3329b6751bc9", + "0x58477db8afd1115f4a8e27ae4284ae8c1b4b9487b287273dca9d2adee8cfbf3d", + "0x492edd2840bfa58042eb1b8390dfb5353ea588da111ce69dcd63abdbc07de001", + "0x18170b73b12e66f1bfce19ffd5cd452a578d79a836db53be0d8ac67e8eaceb69", + "0x229f69432b8d68fefb34adffa3fb8b5c570c343c26221a6f6f12a8d430f7b3c3", + "0x7b02365d7cb10a5594ae9167f695d5f2b000c870c3e1234bce9b92ff11e81f1c", + "0x1c6d6b5ed1e326c8b9c8e98d9fbb0a5eb39512bcf9fb33d81c6f3db58599d526", + "0x79a5fea918bca323054271090b522a46b6d6cb3ccc95209defbcf4c45d492429", + "0xa07fcc70c56b1cb2044c9a67496d53c6f7917ba096b643debdf405e55e5e49cd", + "0x685ef733ac3593f8717a833b61899824a7dbdd369abcc9654f645969504f9c5b", + "0x11ec86930fbd8bd9e4eefe71220f517bf8452e8fa6bfa392f855308c0676c991", + "0x4ff2e05649742b3d27ffcc7d11ff8dbcc4d0505fb4e5fb809e3ad610a624a6d7", + "0xc1c96af89a34084bccc5d426d6b90b7261d20475e2cf693fa4b4b23274d43730", + "0x20dead55d3c8b1b471af73c8ce8e057cd9347260c6ee844343951965ce4bb5e5", + "0xcb5fcf36e049de1f1a0a7b504e72ef51aa215f0fff1ce6df3c50b5d7374d3ef1", + "0x44c64d38103a262e536c7d44b00850ee7d39568e0a5e23a07cc0db96d8ca588b", + "0xdf3ce320c0a4e7295bf81a5ad49769fcb25784d66f5d4a39b978501163fda0dd", + "0xcc00c0613629c16c77d0f383611bdc1dd0be75cce1266e5bb757a2c1b5fbf349", + "0xdb7af92f84da228054781ac9bf5783f28ebcc1d9ac26648188455e8b32e0f98e", + "0x032d340086ce77dc295769f1ad6aeac806c72c402c2c761e83547aeafc1eff38", + "0x4915907bc4b6b677a3fb6bb7862f7f63f7ef6bed8cfb0ccebd43a02556656376", + "0x12b52cf58b53505833cfe90f93fce86e29e512b64543a64e345eb11dde029659", + "0x34fa96a697bb35f3a16a0ecd1fbbca12f084d2fe335fc54eb4a7032092c74c33", + "0x3635882429ecf7427e1d090edff7038f6d8b32e69247f4dfcc8bb1aea18e7617", + "0x1b002277f50ea47601c7446146c19b0603fc425d8b3db37aa07e12271713db19", + "0x3e03b0f6491639aad746484d776881edb4b355319b1a7fbf77e1a05d5c0139a2", + "0xa9112e4fed4fa781999648359503a41c94960f39778f7b5c93d4145f77383a37", + "0xa29ec520951c13764482343b57316dfa475353ed15c39f96687d0b197d57798f", + "0xf11a3f76eef7527c0690e7680ed3685028bfce2c2a94de2daf0e4ddc1ebd8d99", + "0xc559f8c0fd3e54e987938ad25d75dcb8171e1ad327ae0fa8dfc896df0defad97", + "0x088177c89f07128f658d1605a229e33d6cea2f974744e08c17a7a400db6cb91d", + "0x0568624426a2ae4a64888e7e5938460834a3ed753a7f3726360d325908d47399", + "0x0b1bb60854d611e75ddd006cf363e547eec8e9b3f43d0bcc4979ab78d09eb6b8", + "0x97a6f155d7dafa8b1117ef2d0236f849f55cddfec075df22bbe28961298faae7", + "0x4d0b4b57e5bc08e4b53bf9c63e5bf33ab519052fb083fb51d10e7be52fc2284e", + "0xe82544ed1c543f9e425b2cec7421b24475dc2b482e7d84590821b2057f6a3147", + "0xc17de2b6bdd5f69e4bf051a92080e8844085dd3cb2d00833c3281b16574438c4", + "0x7abd4dabe991628e239c90bb55cd44fd805f97b6e306e55184f467072e5d08b1", + "0xf81f7640f0a8157fc42f4923d30a5a098624e1d0bfc6c4ee092486e9818042e6", + "0xb44d17ebf635b4c05bbf970f2099e25db03cec15fcbf5e2585b95c3bb2512362", + "0x6574e3baf5c3a80b6ede618c3c5c4db8242490b3f9432dd9cb566a5099f0e2ed", + "0xa290249cf9da6ed767f95dfdebfd34bfc08232a805970f973e56369975f04d6f", + "0x3f4ba83af89dc9793996d9e56b8abe6dc88cd97c9c2bb23027806e9c1ffd54dc", + "0x604d5225191b2563b0794fad331fdc1d5b71f1b55399cc9f8048726d984ecc1b", + "0x37ea92f536655c37b0e15405734272c79fd1ad9d766408b07645615c6783bd54", + "0xbaafa0e3cf07c4147b323108cb3139a059f27cf5650513fcd988ab2f8a5810aa", + ], + ], + }, + initializationData: "0x0000000000000000000000000000000000000000000000000000000000002710", // input for initV2_2_0, representing maxPremintedVoucher (0x2710=10000) +} + +``` \ No newline at end of file From 60b82cacf8fda8c0e8ab0b21b2fe7ea640a108b8 Mon Sep 17 00:00:00 2001 From: zajck <64400885+zajck@users.noreply.github.com> Date: Wed, 25 Jan 2023 15:24:42 +0100 Subject: [PATCH 6/6] Update docs/tasks.md Co-authored-by: Ana Julia Bittencourt --- docs/tasks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tasks.md b/docs/tasks.md index 8344286bb..29537c722 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -71,7 +71,7 @@ For upgrade to succeed you need an account with UPGRADER role. Refer to [Manage ```npm run upgrade-facets:ethereum:mainnet``` Each upgrade requires correct config parameters. We provide [correct configurations for all release versions](). -If you want to upgrade to any intermediate version (for example to a release candidate), you can use the same config as for the actual release, however it might result in interface clashes, which prevent subsequent upgrades. Workaround for this problem is to temporary disable `onlyUninitialized` modifier on all contracts that clash. Since this is generally an unsafe operation, you should never do that in production environment. Production should always be upgraded only to actual releases. +If you want to upgrade to any intermediate version (for example to a release candidate), you can use the same config as for the actual release, however it might result in interface clashes, which prevent subsequent upgrades. Workaround for this problem is to temporarily disable `onlyUninitialized` modifier on all contracts that clash. Since this is generally an unsafe operation, you should never do that in the production environment. Production should always be upgraded only to actual releases. ### Upgrade clients Upgrade existing clients (currently only BosonVoucher). Script deploys new implementation and updates address on beacon.