From 4e7b735ac3f8b5e47f90d7982822b8e019dfc08d Mon Sep 17 00:00:00 2001 From: greg Date: Tue, 10 Oct 2023 22:17:51 +0800 Subject: [PATCH] feat(metastreet): Add MetaStreet App (#2955) Co-authored-by: wegory --- src/apps/meta-street/assets/logo.png | Bin 0 -> 345084 bytes .../contracts/abis/pool-v-2-legacy.json | 1231 ++++++++++++++ .../meta-street/contracts/abis/pool-v-2.json | 1413 ++++++++++++++++ .../meta-street/contracts/ethers/PoolV2.ts | 1464 +++++++++++++++++ .../contracts/ethers/PoolV2Legacy.ts | 1341 +++++++++++++++ .../meta-street/contracts/ethers/common.ts | 32 + .../ethers/factories/PoolV2Legacy__factory.ts | 1249 ++++++++++++++ .../ethers/factories/PoolV2__factory.ts | 1431 ++++++++++++++++ .../contracts/ethers/factories/index.ts | 5 + .../meta-street/contracts/ethers/index.ts | 8 + src/apps/meta-street/contracts/index.ts | 27 + ...ing-v2-legacy.contract-position-fetcher.ts | 233 +++ ...et.lending-v2.contract-position-fetcher.ts | 246 +++ src/apps/meta-street/meta-street.module.ts | 16 + 14 files changed, 8696 insertions(+) create mode 100644 src/apps/meta-street/assets/logo.png create mode 100644 src/apps/meta-street/contracts/abis/pool-v-2-legacy.json create mode 100644 src/apps/meta-street/contracts/abis/pool-v-2.json create mode 100644 src/apps/meta-street/contracts/ethers/PoolV2.ts create mode 100644 src/apps/meta-street/contracts/ethers/PoolV2Legacy.ts create mode 100644 src/apps/meta-street/contracts/ethers/common.ts create mode 100644 src/apps/meta-street/contracts/ethers/factories/PoolV2Legacy__factory.ts create mode 100644 src/apps/meta-street/contracts/ethers/factories/PoolV2__factory.ts create mode 100644 src/apps/meta-street/contracts/ethers/factories/index.ts create mode 100644 src/apps/meta-street/contracts/ethers/index.ts create mode 100644 src/apps/meta-street/contracts/index.ts create mode 100644 src/apps/meta-street/ethereum/meta-street.lending-v2-legacy.contract-position-fetcher.ts create mode 100644 src/apps/meta-street/ethereum/meta-street.lending-v2.contract-position-fetcher.ts create mode 100644 src/apps/meta-street/meta-street.module.ts diff --git a/src/apps/meta-street/assets/logo.png b/src/apps/meta-street/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4a65e8b8ccc4afbbe707040656f46c48aadce057 GIT binary patch literal 345084 zcmV(~K+nI4P)qI;bFcVG_I-1W{1v zKT*NcP6w6VScVk5lhE3WfDmemfj|=`6O&BZ={bA#`@YZm{8`WYeoxXiGt-@%-*@kK zzwh&`f1l4<&wAdycg8;~az zh#EH}d%m1o?N!L{Zb`EYu0N+rd+y$+#g~?lr>bb`LwUS7=kDh){tuJ+ICj35=U>C& zVUB0wI*0lgkMkGtU!`+;z&xGyRLnE}_SYUqut5)e+OqYhJQES2A*$!6y5|LTVkT=C zuP|=Nlmq`g)~R%v&sL1l_L8kIc9I5S*zwM;32_k5fnnNjl;5$U*j+N0+1_cTeao?( zac3+xI2j-A?`49v*ZF!W=8BTDPP6nih=JyoHLeg%J7S0`1j1%Zi{W)u5Hk~|*O=dr z8&AcS%ZM?<8?TPou#}B|VbH^pw$u30{4-)LV^6V~AqKx1H5(`k7`&1DihsikJU~92|wK6AMu0Z=BvT0iaEDm zt37y{m<{lL*|`QjU>A~Rd^?}=~I(oEB^RyZ6ZB_*-LUU8p|~fT zh$}uQPbcuHpC^0^JCa=&)JLJ%^>LEn8Auz!u7TYS^GPW7u6{F@Et%lxX}`+Xu3;WW zfise#C918+{=iWFQScAUJ-T3YpPaL7%(PF0_bXJGutrMGS(EF|LrU_5f~%ZE5htD2 zzubl%<)!0cNqo2eZVak;Q$z(9dp&iE8p2{dkh~eIR=bXPzbW|6Kp<6OCB{|Bvr61? z+FAtO(8kFZyqeEiAHPERYtSqTsEG|Gv}aVQpO&!@p^1rpZ?db$`#3(XiiLflsdW7*_G^<7RE-^5bd8`iU<*Z-Mx8Zz@59U;$P-BUFLJM0SgjVZEHFF>jB5yne*Z_?N41k6*Itc;{-$W5 zyVYLvMO-f&$wb9XlomR}ma*fm6YrBz5(7yT4xPe@>u5V&y6434)=>(_zlw?s3nUhR zUGUhP?9!2p)nVFe+pT*Us)?+)43cTA>)D3>unva{azL7}ydwZ_PE8+D#~vbI zDGcL+{}7iyoMF@GoCxxdF1}tQ@J4YsPHI95#9=E{r_F9Ch1C zwaW8H#ec}q(4?=AffE#^nU578EjJ3cRKI0i@r>(&5H=lLW%$2|0~Hm9|BdS;xoJV3 zXBZV_Ywl`sEA~aD3Rf219?YmXa-4PQ-p9G(89OT6CDGy^$u__Ca>9T0e7^B( zzxZn({#yJlKQew7A1qL#3)G0X>GF+2q+g=ZvPEoMgM-m)?$a@xla`Z7LFu>vA@Hz#zdr=o^n+PV$b7|)B?w3+6- z1N!a5w$-|u6-+#0ag9O;uHp!IxZpox3&~+-q}L4Fu^!uT7da&gJ8=c{}dw2S3F(#?)Ru3y)_bZfGp9=OVd)Y)C*~fWZBuw-;H=MRx9?2Z|hl@IT z@9}?g{5bn@6j=02+mE+gq#RLOilE(XF~)8OH7hKF#;ynkIp^96#jx#uv!B~yj0t}b z|H82Q-a2zJ?CkQcmmD+f_6jasg69~gY>S@hoDTNLx+&@$|CieUO7jZZOF^csvPE;e z@)(ul<}+9q|3c1WQXla~=wJ9-RB#P6afjD58DaPz$lS<8vE^dIfG!*C*3;gsur|>) zna2#?WC$*kht6}b$NwAo-d}h=f8x*mZWgQ=zYCB5 zD@S#<6@oX%y{N0{APrPoGWTb-LOxLB^gDYubbst}xy;+-7Cm>_uem;V`^5IzW*Obf z?KpIbPyuS3we-zRN1K(hY=z=6#`Er4I~Q~rQ?{uQ&pIStMop2t-<08zF6ri}GoXyq#A0u3U-E46B?aY+8qDjr3aK(*tfX>-od- zTtfDi%5FFC=(x;~mIUTXKWskvbVM#7T30b++r!pMKiWF6CB88~l6A0R7&Y~E#g?9I zU33%*TfsKMsA9N8#YDNuU+Et0$_M0v^Mgnobzkh%WA-w<*jBP>r{W0m+Vt(!yjdWa zxQ@v{%sf*ap0Hv!Ha{5-d>0_he$s12&nv}G!18B}@hBTMy%4PMdv6;WM@{lP|ISh& z)Tg@?>ZMi3`RB3bu8_^v?E*Dy!*RFAS+~P(<^<@=8mW;M6W!t4{lcm+8DSmPX;|Pq zl0|X*o^}I!j&L6`A|Rm04Bb~cfgL}0UEwh$XXV1H3<@L8#b4=M)4W@09DD)M8nVWF z1OFHK2ih;q0@ezaTkL7LW`TuS+hiLk$G!jIDDSy(#NJS|;D)zh78azA|3IXf4QtmO zM#G}-Yx#KN3%~G}KK$q7cj1xoJNP(2`>VekfBI$5@bfPUz7>1Xu}iSwVn2QukwuZe zcQ=k7bM|ZN`@4;icx8lbHLUmB^+P8QR`ADb^7_h)$0A}|EVDESTXBbLoG~-kmH;8b z&I3M8T5^d{HDPnhR@1K2rWsd1?*6{B&9Hdf7K!P;fc+@;=A>6*05&M2`0%20lhN#$ zLq41LG7SxTAq-Qd`D^LAh|#u%m=JMA-!$iBuB;Vf8;4hz;oN^NNp6K^jC(!uq5}lkarJ=F<;;oI}Pi=$eTglHC;%H{|UJg}#1{E>0))j4j?c=$=#)D3KU8 z_jVgdy{2%wmgBhlc_d}{&y$=7DvFg0{#7il87nVl^D{agJ?__(58bAK%g#5_b^+pA z=Uif;OwY}4))ABCR`IhZPG1ZR{D%~r|JA+FTg=A|{wqv+d-wtm!L)TW(~Ng{IPs-E^w@9JjgNF`S~vZN zJ%pR7X>&|`P_HP&8EpaYN}mgiXWV~iRJ=+s$Iz#FsH|yVi>)%d-0+_Z7r@$O!O`*( zC8H?kqGOK}8snz0zQKRwg_kk~bPQE77n59&Y4n#@f9@xL;*Brh1pZqhA z$n)#)>=>fPh?uRsJKV))h`h*odrQJ`>O)wLVG8i2ih^~1%mVt=ZspZ(>I#~CsVvbv z8udzXtNGk6aj}hQXnNq8tyIlVm)Eh|y#IQr&~zRr`?;IXDvXrvl5-fh<*-@3g0D^K z+7gJ#zNjS!*_5KellECFR3P_*)N0<(WOJ*_g}R`-LgCw229h79siUoy73_Ie9#YfwAU&o0^GsHn!h~&kGw&Oh8ZNn}tL)Z-+>ss&JoQd^e9~#28^%`Wx zpHC!$;?Y#0&cqn6bkJ{J-`jK&91dk#EDS&SBMtv9w+hA?n@jEw#{Vv;b)L;`EG<%F zsX2-`GJ2%#gLrm-4|zQ1Eg!G|txG;kXVLP)-fnMs-Pafz1R`tfe@{7Or;lCX>ZuxOM9`QTyIE&Pu zcW3T+eZIDmp`@#xppj{ne3}$ROKD`>P7fyM)*i7&)%$I?8!| zUxTgZ5=`cdwV~YKDNWYd@O;U!c)7-PfVr?XBDQoiblS1%F)Qj$s_f$e-I&{TEsJf8 zB0Hu=ea0x{Vsu-~$710z7VN+hWT+1x2D9_9J!B-u@(K)U@wXK?)%x3dvowF%eANj% z7>8V8u70+qpQxz3kMm3tf5K0_ohdTSNup(x;kmXbX6rl?0esdS0xd3T-IgHXK$;qN zS%NBR109XmbjPrFc4Dq#r-$JiV90?H%Jqn}u|c zCmz-M7}YR9lSOKBb2dCd&q5A1&YLAw?Pz+ zSJb%U6X6QmDc2?N(|w>$s3Wtd^MEX=tyC8o_n!FlIF1^a*SJkBee91tMgU8PiY*ny z2CVKv1ZQ@#BDK224I~}j>k6`HTbD1E6z_q>gZmya%GhiX`UaWv4dNd~4vMiZfK;Qs zhJUl0AvY2>sjiS~!+*1`%e&*>7umr7(6Qv5=$3pJV+ry=)EI7^28KT2*b2sD8`f@H z>vMqr3fZ_!zRak-D9vCmhQm#huBsuli`6_w!$3xMy0IHU{3m5hk+S_j@xzmRgBJ2!Sua8$`Sw6m7lg+&U`2Gy}$n7{kz}$;}M%3e@u@b z`=EV4>aV}3@eVPsPMZLx2O`)bvmK^$&-|OO$XnZps48IeSLSpe41agB&w&yjes6$m zp@LSG`5zY|5b7$^7`O>%bVg%#gRuxZpF9v*##cDs^&0Z@F|4MUG(fET_5Ji*Vb!c9 zE@N!AMh9xMgv!rh?oR>9M9h4i3a1Zo9}9=rFA<7SL|gfUmg z6HQqfZG5GduS3e_9z{B(;mjNU%j0%9r8SekE_>A3ey%Ox&FyPv?Bkx^DZs-Ma8y9~er*e=jUX*TbO{ySZk3L1|tOOISDO`5d+rr)}e-AjxZS z9k$vKwhRlQb?}u|LLBwl!+4`y&QNE11!sN${>$(`2|xslu}(HYRhRdoR;VL&iTzE_ zJ@#F%9<2!|$~))r3jVo(To?(*KVPQFh@f#D);V}#_*|Z}uAj+5li0k22*P5&Kb>CT z9}L8pagE?>P;+SBw`r&3#$EfPztZg0z&eI|hU*#RCdcXQjzg>>CTQ)NtcHYEPm$2B zhZbCG0JC+_Kab_R@xie$pZoIbg56{+h@X}_` zDMn$*4(B)_M96XivzT&r%px}(~_YmUJ8O19n(y~iRvEHGR%w`B8n|}jmF-XIF zGQ=Frxu&dPJEX>}UEiG7@caxfsHbJzh|qzo9K&won%c(5aeX+7Nx-SetHxO8;~Deb zUShN6@ajg8t8zqyrdyqeg@n)wTUiLf~ySrTs?XQ|8k6#E!K9`ym0+3 zTRf=%Mo>PyD>#C1MIjeo*w@d|-WtA6^fY=j42K+CZQM+oAY>6WE^5iWJaOv2#hTwR zz*t?c`$IVCjN3z|n@DS=@Pxmnz9wZDg@Wt>8<`YlCWu^0Ae%cs(TuQ^h1 zy{W+4CZger?X!ART8^kD$ zvvH2KPF{T19kTLJNQ0#dd_0~y?ZM*ZqMKsBbnTWC5*^fYEOaz!3&R7rZ9Gbgt|k12 z9Gj)1BB!mxi|MKnyK|;ugV%hZF&6&YVB8eQLM*`ebxDXNB0FVE8#oo^&@ZhQY`a!k zYy{%A@vrWCI1i@q&n@DPG0*=|+$4@3h@!PQ4F5c@c=7u8&;7Um_W%FKKmYm9r`<~R zkNx<^EmTioTA;^Ek@~AI!oCxh^mov90)lb0st7d_q9%9rh03%&x6MO%B+j!5`~6Pg z1Vi(tPVV`Z1K{-_6^LsAF#NCO=}u@-rdQllE`KuLxGrI-qY6oTEDPIGGzMWc3TXr* z-b+Ec-;Um4B54e=anX2PQa*Kg+ku-d^gy*NEM_FbvYq_K^ULPjMHn#?A!2D?alEz! z{}8dVNd$I(r{qo}Jyh-5EkHNGvu_0$$+T<)B7t(*x=TqEUM(wV_-kFw3hE|nNjH-!lLTegcGd#Rw5%@MkFJH4_w$*S%ekU zxb=$LXUdP~lV|5=4ht}VV@qPeX0^7pI!zQl!+^!XdF^8*U-~wYV=G1s?5o3-R+e3J zJEe>Pj(_cgJkDz{x{kJgViwNit~Ctt51*ZKz&=<@h2~#F3?Ou%*?o*%0di5%-Nq6U z(SWI2dhUX&jajo84O1gx>vU@gAOzE2d3HC0NIlhmbhD%kgSa1%MOhYo$pigIOlsVl zo}1iUdUTAG_$MfdaFC4hbllJ-1OJQ@TM*=p(eCVt_XqxS%-5qU6QMx_{Ex9SSQh&& zFOjv2B>Y4uFk;9r{ErI}ak=znke$G_{GS6(h=)M7E%`&4lDgAo!vCu7t0X@(o+2k* znXgc|KwPLmnzJh=Z;+dMxB$=LUEig$>wqzf<+cYnjcG8OK%UC~@WTSF<&vp_@ZZK> z;oPYx^UwbNzy2#f|Kt2{)jv+5+C+PHsiC; zML|@-&V{apU6+I-H?tX1L4M3oHPA%O3&Bmi{h&2kC$~B|VaDWiDm}l{=fcOMyuo}H zZ~nJxZ1uKI>;`6dgSKw)pSy#GjY_fC!!Oc4zL_A$HN&tXYIP}QAr3j7jLx>`%@(>Q zm*9;XB>u&rObXuL<+eHXsqh_;HR59>nDj+P&Tbm&2qY|e_U_!0=ZY{`=2UIf5PEE)4~| zmc^o6p4YvCkB+A z(L_*)EHJIyx85v!FY~7GwL)uqV`uQR{Li~fT<67O6^4I=WaPO0A~W`^#s*jjvxeP5 zAqyXl1u1+Scld`XLV<@H*ma2c-wm`bGvju^b0OEe55;+fQ^qOuV3996>`$=eusQL6 zT<}aJNAe0KFU2i_3i$8$h<^}M%YMq%UD%z+A8&lXYYR z`sMfj_zMC2GKde1L@@NZXzPbTEEL--1ZDrxWuW)-RuTje$pxfbc8=2x#=^L@kDQ?a zS|(?H&g-^-Aq-1uM|~t?K(n$F~{y80EH4v#PysqN?U98z&e7#j9J= zXWJhgGB;@0HM-9Y9F&*`jT96(3FIfqOIt}8b#<&dFBv8}>AOjn2hNQ8Y+LcO4B2CW zN7dkL2IYKseq704c8P)BtW@Dc9aFwfc28K2Bq)J;qCO?XQV}`EEog{teRa>A9LY=C zIc2R05J#~97_R3@Nx%k6xNfvC8P-S^6+T}Kr{sqJqKPt`_SPgdvtANxs}SoS*GlBg z=7(}BW|xytOwz#Wz@o_R1my6;An-X0)RPo7e$-s3TLI8ap!`lh$c5Dkge$zbNYfLy zNZ8fh6Am~=&oJ<_iuORrbMoxPWSXDknJyaIa9Fh+Kh0`$DSk@+JpO$y?7gh<9x7~_ zar)F|kP_-H!j9s*WcsBA1S|efXneh0n_(wRVi|kE{vR4x$yC^i0}_ zp}!s**(4Q>|J?Hb+)b#&Ee3;+l0YQ>pEh$TzeR2M=R)a<|FHD}eAUVex9j!FAxz5~ z{;N}dy#0LdLw|W)fO0Ux{{BNf{!t3mmGD}V|M3@p^PQJrK5qfJ{)Nh=ypjrZxZKjd zk_i)iBh`u@q{Hwv8U;%`r>$>UASjtgEy~MFx;O@l;q^!urE5SRTS)C?E04o2M!J&4 zh8HtN+>X`me~8Ax07?0D8VgeVCI9KtHC4{nn+&7q#SH7NdP^h4T_#1%Q$3jGa|iG4YVvoK%9H2_&Da(F_u&E~S`Edld~_pSS;b$B|~| zd_6=`mh9xr-d^fFWhBxAksRf6GvKW`k2(#V7zfD=iZp`v_ z?(!fC4VgI6w$)HjmdQf(HhC`$ldX47a^lT|k_ibZtia=TZ^xIDa#(gMRhxsOnoH>K z2<#v~khS<8yJB3?r7j5K=-R4ti>|__RLC&L6gj8XPq-TTSAxczu$4H>2(JqTpfW~m z@Oi_#gXEb$4|I)A+Luc+gnzf2H|ZD`ptTbI`zqk4G$EAe=em!Qt|T6xhJWctE^FI$ zS2~gt0{^|J^#$ThVY~mOSwr$KimfX@Ng4Q|y+4!r z#(#iQOqz>O6>+_70fAs;UB##;3IutEv^f*+$5wp$06b?;QK|v*@;;qD=EJ%Bd#+M%tSRFui2|@5N5wI=Wuw0 zGy9NSH0=|HZAq;2?PXppu=xjP?71sq#Gp>C7@yP?x$WN}=%2VXfo*#D6x*(yjC9>z zfCTxE#U}eWb+Je7n20P(+bUDC)gvf zcH~62f?}@6vVUBP8cAmGT8olRq%Hkt@ZoIL`~_Qqgy zkK2=&e#PbK&4%VvhHd|_i2*I@lBZz4_N!u!`QLYdigV)H2oJV~eQqI9yIC~quPOTwsAlAxz8Qf z<-5Q1-oN!yr2hLhVTx~O0*V+#p2Q97FxvZA>>rQbVjVFY_J`K3xG`Q#Z1;aIa5*QC zJYp{-$A_g#4g<^#Xy$AE9fj*&Vu7$&kIzvj_`+8!0O z(LQ$VIu>jTn+NZa9gP&9Ge%%Uj&6C>&&<(UTLE zl>>#CP%yHhW|6gqQX^GFA!%q{TeXI-O0Byh4f-C)5|K2 zi7wbeB85U{k!E*@a)lZ1PZDN8^N0L241cVtUcr5&#L^Qd2ec^^T{yrzu`4#bd=RQn`x};ikxop6Saaib(vQ z)N|s0!N%ndu5Yp$&8+M4LMInTXLzu{$!(kSE1UWj2JGnge{D(9=6O6_$62IyTy)2< zY^%A0@+6t2?0PoTYcmzcEs5_*FOao_Zznd>-D0jnBZ(u)U#s(KhRqp%b;W-M&u8&_ z4EA)=1O9t)kz9{1(x)~)bf4kT(!XFfa@I|ey7Vn!fr}b{Ea4H?ta)16+^h&LI_1gG z`uh2iKNB;{`|}^^@k3AaZM)+u2ae}o{Nfkmv!DI!-T^9-ifPp5`rzypKRt?0t4fv#teW-gCW<*F2A_ z+lcG^mP#a)6?0PTjM2*2DaRH25hBC71J_~r^xjuX&Zz@09=_PlfeJWe=U;7rW1%s5 z9g~&GYu7_JcG;%?%+IrfH&(=oojMXKD>)h4IC~TYD_}9Ci|haoK4bKFqxXES84wOc*G77`~vkKHWNfxQBI#l;`iX zGd>t6(=I#wr@z~0z+0clWF8a?BQYL2DRhSfo$&LN4}jKTm*>%iq0eC6zI4W$bP%l3 zg$%=guKOfGt8Km6#%fhAo$8$<0&(-0{?fJL&{I5Ab3{JN#($q8;4scbNo9KW!ZB4eR_&s$0Vj6S zXeVC5nD3;p`>6pqJh+JL1g4@DXY5|X*mk1>C1w+vaqOl8y5gSul5uywz*nfjW{|ry zaop|9z53ve0WUYLT>pMQ_Smv6EKYcN{QdX;-oN@w|J%p^S|8by#1DOZ=!czv+lF3> z)W=JK3j5|S{EPql&%gZnXWgAed<2QVBL+o)-mUY~_fg*XFQ(ABHRS44T<#abyy;+r zbH$>>vpgGVW}EWS0Kv+^yP)U2kTnw>CRt#c-h3cdgGDCBLI)7@7;<%v=}djy!xrO%XR_)nUc~C^_%rdD<*uKt;LCBs@UdDMD5AaMU z>}gvY)8ohs#~R@cKXtVcYvWJ_v3$=!sa8KTW~~Ps@Ji@Wwxzhyt%Y}xhF;EIw~wJC z!$LGWgXgBGVmF1B8ou5h)?Y4lxFYf@SZ;;cSQ^DvP`$X6WzKIP zC=0*zSOb#E3blka6a86IeiwL_2nnGYj1a*)6KRJ4xn({PrWiQAjCJ-eI-&_L@sgq0u}tpnp~D!B7!3nAmO-{OV=sB zL*HY^T}M?EG8bmgIyp}~svosa(-&$hcH{SS(|NQ08ACq}%+|m(03MPDvfnu*14D%|y zw)s!nNPyxQHS}KZS#f5BrtX5Frf%jnJ#$xfoIQ_SWJd*3yY06zeC2&JLwL;X^IYO0 zV)$%3*4LEhlkrUk6wl^is_j?DTMs4;5k_A(cLi=9Bo2%rd5iK{7sKM;5^t87*z|0U z)4h%+pFK}Y%BFwXih0w)OpSZHrXBlF8Z}Hkp*{2%1Q15R5lT3*YZzehi{I3t=ummG zXw}3T&AxIan5ewVcD}z-3iaNu*KcIEZJ~IG6LRwb6H#fM9_;AQoV+JG_LzX%SrGcY zW7eg~p)eBGQl;x;B~(&Y9-m(K#O2iTDgm&vWLXQ9qu3RiS5emrMbX5#ufOzOzpKt; z47lfIk%H?p9IHJD?UhbI&tyd(F^i0a|A(*(Fb4B!+;_MVDl&Dlma#(7t(-uS>lJb3 zICqg@mFL+!Zc4^W58|Mn-Ba-bW4L0=$4UG*W;#6Aj)T$p^4cgM*4f0rnL z1Fk+dzINaHTzO-gon-Hh*&IOB@#3+^Uw-iQrf=<94OJ~^ zlZg0cHiI;~toR8}#25436X|#yYOJpyiq0o7D$p_u_11WWbp}t7D$0vH%XAEectt*q z^K8;x3|11a74~((wctW=;9H`$npfypavUF8866T}7e#T*71T|kisL8go=I#uOUY+L zrs1D{(Ij?mcT2*yz|S+1#cg;YGkorDAX6IN+phlF@n|;R6L!S5-Anwdz&^VuM|UVC zHuXh`9g^+RnAv1^7j&=+|3+-3cxJIOq3Y0o?Ha0^SQ<+D(P$iaC_}1<#%{}s?LHkxt?V{ap{Al8MPLlV&YHSNRu*K2 zU&H@c+<{+OMij9QOJ3hyR4ew`ZRBa>ZPD?-|AThDLO|St_*ODK3eTq`15dHQ2LACO zSMiVdZicD*j`rK)lDE2)N&NEq{rCU=fBmQa*Pr>1`q;BC2gq&2>*GiHFqIdn$N7&p zf8rDWW*f4x8j>!h z?@OLbB9(BJo&ek6N=-Fall969b&+t0Y)uZprp2k~0)QQZQ}6P4y`_cer1?g*9thA1 zmb}EjOkFdYP}rj|>|;zUiD+y2aV{=@mS48MX7-@f?jAf{uAMz^Z5dgXOoIt0V6UQO zRlK@62L4kW5EMI-!jj8cxUgtze+m6;o9tp|Zumc4VS%zb*G|HLgc{wgbq0gSptE;U zbQ+Ue(ypvDYs^$>SCvZ1Km}fy9*t@gtH>Ggcb~Cuu;5)Xj22@PqwUJIu?)1 zp5;XlxIw&3B{Z%?opZXA!DGaKkIk)c@!dMXmh*b%WT)L|q96D#@oFyoqX+=L@IkBN z+^4ZH7kYgy!CMi2Yefz0+JgEtC{|E--C`>&m|uViFH$prkc!|fATV0TS{o~nqG~Ps z(}^9|82&q76r>3n+ej+CTVLzeog(dETo%;T95K+Bx<_^4AI||ZdrkZkjTv5~TK<1L ze&4^>&yNq}ORf9uh4IMO-tg_MV~&@BGD6bBYr!ixUGhz#aitE=d z#dX^*eM_(My6rg(W8I~&K5Y5G=+;0#y83!bZny zv!67{JEdcOC}qpPX^538%}_KyUKP=ZXXWGNlmt;-i7q!9*_T# zLJPo}=j>-nfOUtZzykkKuO2ueywaR8P-b>nYsfI;&oD7|Kl+Ng%4|78F;GSl5emi` zYxTX~{^q~_pZt}7?yvP3&n0r9GTza}#|L#(aq;=jH^2GK{PLH-{P;KC`NGd+yzxh^ zqXM8Z{L0wgio7r*R8))-ZbU9rWzeZx7M7$!{z_{rq_4=DRbj&7*mIT`)AzimToXwy z=H4x=7;lOoB0Q9IcFR-fnzoMkpSY=RN08kr{7iOBolMeF^sHJVcz&+){2XdFk%g}q zhW^wcE(i>)oX3<7yR`YZ_$!e%hDH9#IRmB7h`NcRuqm_lcUq`K*wFgx%_WzG;?i~+ z9?O>q)3BqkRC`f}vqizS9{*io{TwyB5md)x+F(?{!ews)rwYyT;^};^O=6B@0dkUN zx4mR!5Kna%E6fZO840?gY#R!H&hgVKLEQ>q=b=%U7r%`nb-mYLhr^=6O}hq0=Z-cV z3{X=>v<13zQ_M#ooc zdq!_d+klnkoyLFhyncrT-GU5nxkwL%3-Brcu<&G!dt5VbfZDP?WNs4Fk-B{+0v0pA z9a9gGMCGMeDbS_b>>>Vag9U<+;|u0fX3ed*s462V8bW?g?TS=b$qMI|CKSJQY)VXH z${TyGI2*-N7!sf~@0sjHL>ZP=*SYw?8o|55Nnr6^D*sQpGpT==YIy}? zR~C1BT9@^@Q;sFp3jg5QsE2E_6`hyOx8>2+`laM(Kj##`D%lw@{Ex8dngs?P_)ibn z2*3LpIXLLMWea8vA1;eCFZ@fNSv>hyuys6jJi3g0ZXN2MeB+<`d7t>` ztftzBuRd-IReg$a$@tmNem4Kk-}yU_Pk;K;@h|){|MDN`i4(uDfy$!1*PW7J$_ zu~_M(D4y%%HvWL+PUaw(2>N}DQS+M4a0|GAFcd$4(kMT~%0{{~{Out$jQ`o#967TG7h|Kx}dec*9Og7#Js!D9w{S zc6Vz}Xe-GFf?371<}Rz3*2%{|+)v7`1+bGDvlS9Cd~rUWB+C(BWp_+APmhjKqU#gf zvR4E|%&yNd#8W#2X&N9D`xBtNb%njeu9Vk6DC$Juy64lDqD$KBdVNRG7LPTQ5?MYy zj!hROMFRF5qf|R2&zl(E@y;#$2>*-H*gTg*Mni;>*@_MB^CCH6yOXhyS6zFAXGwmp zc>9t^`}MDj8#H*W{jHHw;J^Duta-Q!u z!v)g|96Gqqc-CE{(fhq8i@X|nNa5jKYv8}(mnr;54F(ud%Fg#PB^O$4GZWk|^DI_g z%yON!NfsG?vJr z7+mw;%}t^V>4NNE69VVgaqYY)+u?jG&T-v2UT)_!z%glP9e$oSS_ex;@9dfMk;D2J zc|LsJl{nMvjpr3AM2+2J<~*He$Dj!Kn7*k^rjp>Yz*^!x5_mEllkAft4!i7`e9Sa5 znlokOm?-p0Tfd1dp`d*&##@YanQ={z-THQNit(oG6N%pmZ!Dlg2m(`Bu4m_s`JJRX zi3gsW{b;@=TNhSc1YB4n`9E0~5wx8$)F>qY@)_|w?|&Pe2^AxSH_GsaMrVdP#c7<8 zijU|*Iq55oQNzydvm5|D3xQcX*nMDO#K!j6D$2sgF8s9M8ir5zJ;fs#qAyb z;csBU@t@lH0LdRK*#g#SoupdpR!g_eh2wFrT|{uQ5<<5O8%monX$0W9p(G7VGX@H2ejLWfr?}# zb`)cFP5NA30CjX>d=@dAY~obHgdBAK>FW>!J@X{N2;F~gj$bQN#TNxG>~d%fOm`H< zT&Bb-l$EX5_+oqu+tS#Wn-k|2pgou8Ogw#p0Awq!oGqvoL71U+_k+oqA$)DQOqH-HEM`h#y?fuY_$0Heo*da80B|NQDYl7LL0){KZsb z6?jk1tJ?xL(!>?$SXLK6%U0BrMS!ME(882_>&A_38Ef=za^uGYSopP&YB7fgny9b_ z_vQ2W{vyj^umMC_SXo80{1A*ibOmLg68~jvc;`r+b32}1*q5{DD8wso zJUb9n!8LVYiLgriEG<;v*t)^qHuioX+Y97z>oy-pScqqYErPs|=*mHH?$XmB;XG7P zTNfGJmND>u!Wgl=36J++$ASM)gMRb}A>SST`^_hday^0I>xUa)J6#JLc9?SSp7<9_ zLf^O+Z=hCs*IET1)&(RMFho8Rw@7eaxyg3BfcBkRz_pcHdqd>_-y`pOS5Uuk^d81#bw9KNpJthf8?*eb6oS=zx~^16ZH52sUP;Z z6spDERv0kOBK7f&Z+zqUa=5qCBu&tg9rFThraTcr#CA<&4eU3=8v&TsI#f=nola$lC%Z08NDQMg((Q2>TN20Q(JmGaobZTb|b|&befakCA zYJ_tsEhoP#ug6A$dvZMJx0s$#EAhA&<{pBNur7vOXMoM2S7i7Hlg=YT9nBlb0<3MN zYgz1@EJJ`bXw=Rf6oj_Q0i6u`5aHQ=3f>F1TKDO?wP{CJ`uMI<$A8Z-7bZO^+9nu? zu9yl1ZwH`d%c*$c?v@*CZzlzcf!I&QP#_XapD>#8#HuRFMWr0HTNq!4fhH{eaOv)| zJ~tXKD=Z&G#VHzY6Dg#h%CV_^p1Kc;9fxGWQ2rhPEpAbP%#Jp7!}8)Pw`*M!|Kqe0 zUl9L6x0T_QAyi`*smF>~UrQ8L_{nKl;6B&l3ETyvvAnX*<%WOP$P0P9uET?VvCKkR z2}3aPZvzkfmpo9_y8;MvE<9sP89D2`h(VGOxhs=ej$`-cH1;#pO+LOzl;dO8j)}(8 z;zbjrCs^)a2UeLuc1nF1?Eb;}r5QdZc=|7PWM(*$XpJ{FhKO;Eubpre;|#o2;W|w@ zB830G72;<;{QE!k^70Lgd;H32e+$6TUA^Ds-w&)0U?H~F*HQJL=ik5h%g?|0!qcCk zHU7!r^nuf9*J0W) zo7RT^eDZjO5%g>1Ec-2Q&HHuJreVQu-)xXuoGd%JyOF3-m}mQOx_UXkV__6nLw2u% zYku!5OcfROl{Q@jJe}Vx*wlyG%^h7BF=1iOX^W4GH__C#4g8g=~pfX~ne zo7#r3Wic()^lNVZd-d@F_$OV!L>2Z6VLkQ>sh+<`H5L=uUy$Bd;dLSG8c9S=na3jI zUPekec3kGdOc;y1q#4HHb)iM_rNssD?^)#(Y<)O$r^Y?~F7T%DUk%aRXG*Je5vul? zAYN>7ZvwE`sz+TGXJA*^FY!7;OhXQIJX+UQA?q9mb?unvz~R@j7(fiIog&UxT*R|8 z2|Qe)9XyCz7LI$?p0$x@T*AY{P5AGnlP)*>=NzbEz3_j{0v%V)DbgXd2oHlgpizw!tEhghHbf4~2pB}IP&z{O;vdWEsKuIhR06QB6R`TRx4 zPep~726~>uED=^v=O4vKS{(7xfWY2(`d=U z#0b*eol>B)@-pn|#Fo@qbkarA#nHoCV4&nSSA`sfv!0!%N?#{~%@q$Nd~#aHwB0|z zh>k!=4Q!VScWZ*JM`0yQ%Fxict!2q6%Ip+wpVAnV!3rUa-AnXpoyPmoMd~8hbSYca zWozpKUprxKi>ajoI>&rHT+vL1f15;|r!5IGXC!)oL*!z)J&q&Em2cn0o?tk+^hz&M z`2n*M=+!~&9YF8mCvIU7RhP3wut*K~a1ZNC@Y^H(sqA~fzY$>TtXRlUvCU=Z(zV?2 z3bsa8cWY}bq*)K<2!V@?eBHFMZvCk6Z%UB#H$#+q!QEd=+`}sw!|>l>W5qTMBdnvq zD;X^qxHZxMUO=J0F$%}f8cp{1n5@~ShL2s=sWTBxzJ;?0iSE1>*7v2nPh+if7yh}6 zL)><`7AR83PL`pAN>Im2WkL~|a$}iJ6gRX0I15-BtVp7~T#uZBjW<(7<)j!h1&i^NFf0AIom*wsXqtlVXR(kbajtuF?W#tyUp^i~Z%+iK z2&Jl;LO?se9V1W>p-vW5OmUkO|d%@ z8iL2%b&mJWC-c^u<=8+M2l`jc7zoQfrg}+wB<0B*wTDJw>|`R=>#UP9a-`~3iv z?Mq+!QhfQ#U(Qc{@{^}AKlZVY<@5P`4EbSyhp}csIBDd5WyR-mN%oiBHx0mW;Zcm& z`(G7XlOjs;;5(rECD*P)>PZvMmg1FU{^6HR#(d=Mk!tm=K#hK#OaDpW*Ye;z?|BzF z%(SuJA6q)bo}~1EcFze7-Xk@9ZTd%mZNjz$!wZVVm}zb>Px7^$%os(=%;y)JBPZ zO+u=422Eay!(|Q{_`m4V%O&biog=U?EN64_1x2YV{_z~~_Plc4tN0gDjyFz0M^Xrp z6%+zyiGLK}%hT|DHB?aabhU&X1+ZVpS|vWM*#Q|?+S5;ED0aNf0*9A zZWG*F`0l>tj{go{Gzc)(zJQ0%@e@#P{Gk0-^yx!-5@SBH^`L+A8T`&?!@sfMm=V}- z_Eq*wQ|-cqwmVSI_uo67;lK8uUG#ZV#1KCO!#{_NJD)e%LT<>5 zp-5(!V7nf#-A+&Dh<-0;XE*M31hi)o%s~w-nvvuvXqb$e$9b~SwP3~`R}tj-o0Jh%QdPyvfn3Yh+Xuj)GYdC(?obggC@LMF4e6wv}5H0&!<9af6c3Y#={m^Sp-m5r#v66ht!!~}wrXogyE{RFl zByr;LUKb6djD)BPmo!H4PGuq&v$);P>F2!9FIZGC6D$ZXw6i!vtW+@0&ik8(9k%b3 zXMtP+%ywmRga5?tOSZ~OGGkVcRiF29{{Fh-KNx*QE{RV5h#g=g2L8LvsxI~g|1={1 z>mngg17TqZ!(9kNDu_-h#(k;e4;>pRr#~c_gBKS>*o>*^9j;FmYwgqSKnnlC?Vw;u zk+>$(RzhNwbxbAe*z&Jk|7>wlYz-MzXNUqHktEqjOKZ=0k7rVau%e)b5M9{zLYTOP ze@p&wDuSC%c#N{e@lXE;<-p>YW2alsxR$j@e+z;0;&A1@aHUaC)L7iIMzGw;I6!>7 z?9S6rV>Agl9*@hkcH&pR`qg-8&*FH#`R1FCP*LG}lVtGss!Yd8Ukh(FLB+7b@LdRA z5wUeF`qD8UZ{{Te&1NjLA$?Lh5?zO;?j6%4Y5LWT?Z8pzYfm`iIikLT3BoKdGvGKz z_8DguwxDL2rSgmDvnyRU3oZ;2x&&mqUSgaXQoeF_nsCxDvyQCZHUOVtEW*fS&Kxq! z`6_$$KfSLlL5nG>TA;)3NH&>dm;5FN7@|n5%qwLwrNEy1?VR?Y-|E_VN;{`a@I*Vs zY+&6|9i+o6v<`t##eU)g)noabVM#q|WS#|`RA(TNna?gmXHP{Q$+I{0eHggFhfDgTPBVZ zpQY_V%esZapZJFdQeU4`;l+cSJ&dpQmxign_t9(lVJ`?>fHm>I#xLB~pbMlQi#L&O zRq(cx+~J}xep z(#OsgCkhJ>nKygUk)fF8yL@ilOqkBO#6Z4vR%nwX$KI{F*cfRwTMF&Ir{f=dYr0(vz6R&A4$_4e^Sxp#J4B}$c1uBx`|IHu-!$)s1{?zq%gOS#&Fh|svnsJSy;jBZ4B zXiWU`JP**lcLWa~#p+T>Y4A z&FJYqw(;fnMTg1r!xTz|L%IP#4>&RjM(qrkOL0SsrqOXk_~KyAXJxG=lCU{TZ)U5s z{?mppr`TXa0HPhJjt`Q%F%5l|W2;cu@FQ)CM?7lycZ7d`=%7$Xm6D(gEj}cN*!Ed& zUy6}o6s&7f-gL`3u@?w!IXuli5W1qQXf`q8nk1H$V9%~mJuVSYwB;h~C!@`hNx8`Q z-?O_eETT}ra0{<(*K!V@^=rO|gvWTQEB?(?;WW`YYQ2DlROHstK;g!bp4)HUgON~2 z#T2-qoGK8)xTml-(boKVE~kE;v6%8H8h-va=?y+xX3XhILNdSU%EnWVMbX}GoIvYZU z4zAUuOIysfeb#09;MRA|F`?vr+(i-p9G1JE+5ST+rpWXWIZZ$#{_{?j;CX9u3#;`` z>19taJ|eZ~O)H4=_!HdB5NZ^5EQe=~K+%P`2UmA=tf=s=YB`?6VlmhuP2oT5f`1SO zcG@Cb9-1WGG{=|!AD{mJ!WX`{F-tufA6 zXNC;U$Y?@IqY!@kK`gz8gpVG(Dx50kq$Rpae{k2l=>(>4FGVT-PLA+E%dPa^B+$gz8-WVTxqT57f z>$8gswbp@%&bU$8@ZQNe<)Cz%L~McFqZW!)6nv)?qn;r7lD(H-vn;olaeZ`+r%dZ* zMzp3XJcG7^%d*n_ck!3We; z<4|ZV1&?a<`~cV*0=I3X;Nxq*1+Zt~9*C?oT$DZlBm9@)-%xV*Sl4E%pz;t*Gg)KI z$oE3$BBUpa{4?z({ua*+hrcj<9({D706qEBvfQ--tDL4oEP~6Y|s zm(2kc!*VP3&xsoU;Oo@=weEDo=fbd!V?KcY4ZFqn8XDsL^#<>&KwMPo1Ao!L>B_7a z-@X*CZOiz^L{+}P*!b?8@KH9;y0(nEaw~(9K zt=1bVO<*5S1}Nq`LVJAOa<$`sSO5zFh0F2JJMX-cFOAW7_uY5TgD(x!W#fK~t$**P z9s_*+>t8>L)bsh9Z@#I)35eio8?T)q_CPX!w<36H?>CUtPzV;saV7UvbVwd!-9QRm zS0uZB?ssc~z*%Nj5C2kMTMATBEMECDHj@!QHEZ2;6CvW03EN)~P>3*`o> zVJ`iebxid|+jMYH4w2mAJEqg6$Q%Zs?iRoNTliBFG2{mla!*Y&{TB^{!eB9y z)Lka%p1}Hd4cGUPphRs`sZInTG)R#{p!jHirG-y*r{lPvWpp1MA5`T@KQcybb*e5Z zf+S_5(D$&;BwguXgr$R^A-w=Cf%9l?-DEg(+A| zzmgKRDZAAJ47lG&tH?urcJ$wY)Fl8qYqc3YRNm)>2GFTmN&$A{eaMXz97%OT!i8Zi zeQ0(k(u?u53!uB0qUS`%E2o;nFWqHs0yso_#I;DvElvmgQ(Yx?Chg%x#0CFtvQcnE zg^zRMpmnRTdj^w!L_arK`waZ6bHp7+pt{(^Ni~HPCjq21yLu7+@Skx*ze@67m^@jp<9{tAP(%{{6*G5S7zHALZ!D=1 z97t7=+i*-j6w-dn*K)YL$E_Ls1-VM*|G__SU7;TUW3H2zFISPzb;ZJWtpz>HW_iR3 z2H(iR8aRS_oHj@))9(;V8?Br+Zv|~0#@vtt_y-vz@Q<7$<8zhPhNyCGI0Su6{Fe=H zD$k(Y@$VUz0qorVIEqx)_@!Ywf@c(}_{~-O{?z!HpZS?{u)aUlj7=TS_aTjUhp=o7 z13etc_hR~kXQE*3;%PFfG*24mGQ!9?g!C0Vi^mmmBAHV66#w-}xy?3`(Rf$#x)s8Y zJ|euZK~Rs8ECh!i!tGjqqMfz)YE9?bC9lSn-LZfnMwA77(me|4UbKxOQvOOZ!USK% z=C<5y139Ec_?D6>Xz}2S84zj6KLvjia>1XyV`nB2(hblKz$Z$;2(**6#lMaGUrPLQd z*Q{f$yz7`8L$QB()GX$P?jaq}sRYH=sOr#!8(lzHpjL8UW3F4uyQV5`ZJu*t$wB#L zyAk!r!jZRRAbvYeAb%nD-NhID$GAUS+$hZAQ0;~N1^*Ei`isY^$oGU(Kf%4nIw<+9 zDzCUCv5ctP@E;u`ofY^VVjdV5w}W)Xd)tLUN3G`!*pUabaBlEy zMh`Z08(_S(^7MHx*v!N*Z420lA{V&j7B8oolr!qfeukRftQmjjKxqajb;{bOmYI0^ zat%C@3@FH(3^07>X^d43QiaLN1tAOEf*E7tU&@e_xmJ9}<#Bus>SsRlne()*VcIU7 zk8{N1`%_!v{EgrE4Ziu|4}bXK=aKUTml}>J1!$ne>Q@%=lXBDkM>9wGn5{4V$Hjs9 zzg^HmS+15?cEF113eC;&J20QJeh(W8+I7vufpmx|agQ#7i6ZMNxgksw**wDzxS}y5 zqAXvUKL-B^Y!;W>v%DU$Www#To?(IoTuo3)8rgyd7-N+EXUNZ;Kg}nn9A(lchf2w~ zytd-1v^A4320yeg5_E^b$>bdj)rbuiYXL&Kd^RN<$Rg`i~bmpm_o&8HSFDzj+sy6Y6Ctva(T(>l6a`rHeY zv|%EgK7+s=K@J_CqY%=)xSi0DWwrFSDEbujCyY zMw~3F$)n1N@TI@=*e@&G-cTJ^#pA$6pgS1glU!Te>t5d>W3;`P_+g|q1a)mLTl!<| zr*%}JvkthH-Mb#v8RVik8Nk`PmNZNeVQI(E?OWZX#O)hJtd!=GFz{ztXAS4TP4nT7 z2*%1ObWA?E!r)-aek*Pv(qGc#Aw*}sN(IfeB~?WUo=doDd!{m6aV$;Pk;I;Y1iWi zKllL(yluq@;bIu~JU2&(^7P<9gsuoce_QWqJ9LG%?pkGRy9s(PT`<_+PnfK)`0<6W zsiCH$q!p6@QAN3eXT?Ud1vA88=`>to$-`MndRbvowHKdW492EsnNqo(N#{`}zV~ca ztwB63%WjF(?H27s$t9jxSG7+b&0DtknGsXrAKML%&ncWtr{7?ln#Qo=D%oAd>josq zyQNCrXBkXlK@!Z^l3x-tgI&;mfpyRNr<3zMmsYAt$3>N!Pf`ddlZQ5E(xN<2wRaXT z=yc16NVVW-Gv*{$b(b@=p+SP{L46xfIhi}>HksSxSs8BbRIGsgwt6TBU6nOmho(UH$_?I%9*iTL{0 zzkZI&2FUQ}Em|))hP-czM2$diBTN1}xlJ9PRmFUAobofA@&p`h z4{|&_D`mhCl1ShZDqL{so773V#>OBzH*F#nj14%NtO9iAJ}6#VbG(oZ)5IUip=3L} z>6lhIZ9X)zb{DZL$W9@dtua>(sEpBR(FiM{&OC%d3#-wkb~jdSb{P(wj=1D%bl0zB z89z7NJv~^COczsa{vA21h6}ng#^T}}>N((@V?a+KlZy7$>1RA{i%xVVb2uPT#V8LM{-ccJ zd-LTKq;BwUG+<>?tFh`H+cPoAB1WN>11z*?NDlhqCjLfOhMZUAPG+B$-H3m6szVYte7qH!^`8RfBL66=QqFkO~ydipO?p7NA-NtH@C*eKK8LVev#^UymVB>A;6&- ztAiCRK_j>w7|$(Q?gB*k{h~3$CvbnbGe|99^oY%224&xV*Xl;ut1YR8R_R(6h#AwT zR(x>W8u8OlvSrhtMP{@D{JcCb<_HUfYXOQsI$nMSi4Gir_el8WqcW-8H)T^7F+&qP zM}lVVmnmxlQ=_?Z%tiruz_Vw}pHICZjT+}CzssK6E=%FX^dQ2{Q59a@P+2oX*oQL0 zs>hnKa#9k>5IJKJo>q1xeeGh#JmRSRgoan=#u0;iAsZ|LLbhD}-E?Djker`2K*7*k zjWohjMBUvNFdkGzGdU&4Dx&Km7kpM*CufWHy3@&%HPc$M#f5|T^(Is#mdu$~(;5&c z`V!d@>jTTsxZi9f@dnEAD_w(&7_=2NG&|4DktE7o*vB3y*fx*mO&8T;$7ahgNaJc@ zyqIKK8GZVtWPK4z+W7j=k&3eU;T6&GcCTvxEz<#U&=(RPITR&TbrqoQ>RO|ire45A zmSQrIDtR{zIFX#rIvU9(u(%x$cC=FNzyQBh(|PeqVKNnDRK{97!j zlVc+Yz5YS13>Kk*BDd=ctcPpLnnUh^*;=pXxRRr(v?;PRnR+5N3gB_BqQBiJcDHH8 z$dDidG^a;B~IWOgKNXi;N;~ z#$AWJb?$`!qRpVEY){{h#y3(6gpTkr{E=q=b$$}2{2<=>4gmBcyRYWo(fr%LC{wtRt&=_QeE0Tm8?(7dK&Fw$=ySG zOXQsM*&{xkBVx#uZgZa}$;>f|5b}PSRa4G$fm-W|Ml_pw=R*3E-B3-1!9=yVdH1c)1I!4kfrO3A>;Fujge)? zqI?v4*33mhfgeIm-L)Cg#6o)%<4xWFbu61L6yRGukwMI7A&3OfxOo)3mXw(*eM=fE z5k5UmJCXFsWec5X!&6VopdheW^x!T57Cz?nVc!8Apo&C|nR5o90BQGI;l91JB#0GX zMcE&SzDN?qowdIf+pn)VdE!GZ=^;=F@3-w`Kv8# z(ZKok%BL7WENIepv_bOWG|BMv-^I)p0u`nc zATZ8R6(20t>Vxnf#)#fIw*=DioI9=CVqlt|Q;Q`mj=MNTy*}iD<9MRpK(vQ<<^UWh zmiEq|in3dBY(Z=G=A6&5g2#drwLFY1?&2;E3)6A?i>ttzcgV(kw|$O)_{X`fyZC#?JkMcE3B3%zorQ-~DC7@4 zA)nYS73(2;y4=LSe?!6<8!9`)eDKaY@1(!>$K}IRFCEo7ZfZTgLp21a{K!W>@_?05 z2<*s8O{^6KqPWKSFp3vaYYbq%HjzDPzzRU6j~ZLSA#2#4DPtyLn`Q+unObw%l0xd< z43V3(yW9~*QVp7^L(IU|#U}IOvCbQwV!{et*vFBYJ5}T+aSdDeJ+OY3N0{tcHZsIb zy&u3O@k?B~D9V$%F% znN2HWsyL#{$anCH8863CwS5J;$B``LDNQu^%ZofRaYzP*=P1r3PKfZ4nd7?%M=I{YL%mQar%;SIpdTEBDnWpY);4rAV7Ad=Kc1Yxe}Z^O zKj(Lp5`Wce&=el1+L7#^ecw0+!E;3pKak}3&)qgnQY$obUlSR1&4=AjXdK~;FEdwT zD~8E9Y-5vn7}qoIiFJ|-7mPg!WiD}cpVI3!ZyBcHUzY~+e;cZ)1sqchJZg|z;FXQz z|6&|lt8+n?j@pZ@Lw*cCTLhm;9JC32fq^P|$s4}dzU2S9PH0U8KxB8Y?HKfF$TNLU z2BOXGGHR2u0kEI~JSAIks1gjxDvO(IS2J$pQ zTr2q+FM5nVSM1b!kav<&@{^b)-+9;*%`{BWZZk@8nOVus$(W2v zl`+OByh>+-T%uGLgtEIlH}GT+6xCJ`!<*vam{Ye6w<0-0KDR7Di*4N^*{bYf5L9he z;VN=5XYIyZomCN>N?Pl(4fS~ao*>YX4!`~`nH-NtK16iB3Lh)BQ^1md{YE0xu|j2X zNtR_3RVxw#`0}Xe0FK(biwJ+kUD=1JEdyZdYhg1j!I=bZkJNyHh%rhhjI)243+`!L zaSpHE8vk8(FrP#RM1@Du3jW%>LR~w8kpRNK8 z2tjHU8~(v&aqi}qpBGj@OQ${|BSw9)+zza!$&;k)hvPpOR$Xvh_{bNS^g&D>%oz;a z$0d9Vm6^{`7~k+eQkfzM6cXZ@l%1L@wW7GgzjGhxKx>o)i9zXz7@e;Ha@SlS?31n!|zn(x210d29i# zxjaTj2M?T{q5t{3eNj%m7M?PuolK4gxO9$ahSJy}u~U|Ca?pk> zV53+;jp8(xx{;SytbvCZ)-u9Q`44c@co|-EBqM=+k@AnzS=6ng(iz_tLW%rG#LXds@CZbFRnBpx9KRo zNrgUM!_&NG^5j&7pLnNAH3$wab)`wB8~)dJtCD)^Ew9qMRaGQa$yX8AZi6xS8j^#%b4*c6VG*rdS45fjf!ztdQCMOxY z7t+~g58zl(Ps(iWoxzb^_w78J!oM39Yk~8Z#G=BII5Gj3C(C5``Xav%;3>e~*7J&??G@>F`$4TKIn~yN~{^{u>F-ST>r- zC-yq_nU~hT_$sZk1%U3Wjj^D)>!xz!Pl1Bw$mY|!s~$n9Fb0Vd$G zeRY8I>CNK&$`X=Of4yLKy@PXjZ-gYo|Fw*1a*Q<7<30!0_-CpP8Pi@%MqTQ_U161= zl4lJe+%taP42x|u$hcp(F|*sZd@*4&N3vN)q`%Sz zGCN#CvceY4bM;pHwv)xhbf&~L=`xhqCr*NI7Ql&S3?$_|29<->sqhhO~BekVJ z9$Aw_EKcijscnD-#LKw-AgE_VmR$krwY* zSf5PCcYTG&2C$=KiSA-I(qa7&clbTowDfug#w&2DZG(5a;I>Lxfl~;?6#&3L5s1}! z1qdQ+RpU9JyY4akU9ufGmKszS<(_cps`TqQb=#=Qu+A9idOgxCRG#AaOH$&kRQ_Mi zUk6Jr5brovvHHTTP@tRkv0+g7f2JKou}`X5H6S9^XpD<(<68>S1ZuonaF}rtxYh@i z&1ix&E(oQDun)h3PgtHW&CQR?FHZ-?(NR6e!LL)j?CdWsjLk0hs2*GY_F*a>|Hwx^ za(+Ekc+PExjtKq?BfRe?g^=0=7Ga$?6?RGMFgR6t$cSl>d~~$J(DtSL1^^322?hCG zPu(G0Vt~j|v+YkXhwiEG*Tywfs#?~iT-e0eI=1Jg<(Sr6SuS(*oMH3G7JV-1KWQHk zfkt%4dFQvnh}CTdTR(__up%!&7&Wx9GCBPfWbOqF#vhHdwCf_^vgmV>Jrr;4mrk5E z4~;2O)GP+fbC9(0m`u`2_lVuN zS{rcN*z6q6Sr10Gb(HcM{KR*lNam;iNyD2+j8WvTB>wSV6D%u~X)T<@L6ZS+bSGL? zw3D8;Hm;7KOTm|cTEe zZHm)Y!ZI!J$y*B?FBF9TUYo$jwc(#W+~X=Pud_Q?n53~Gy4HMfZbw0|G%=5~&6g9% zZ?YAAt>hmJw1OG4~E{~6LSKOUX%go6Dy$?eHRr@+aXMyqY#lSeCsc1;AE73HtP_`wFV=VUa=8WaC1 zjvV-pZT-culPmhZNA*0RJE~-cV`qQ=bt*4Z`O{Tj`N~%q7H_@v))`I5J*vmoQz5O{)2Sb8x>fJ|dp zUL8~)w=kx~-5|l5|CP(I!P~A;*AyIm4`=95#*O|VBK;}ahXa)PQ_A-_GQc^z+1BNZ zl?+TqD@Myu7abp_!%E?@^~D-SY1Ho-wpfitHXD*d?po~N0o(iVnu4*AWtMsSJlK2EUrxB+|8EZwYYgBK!b$_aMDkG zBH34pdPfOG%ABfLl#YTPHrmOv0>O3N>I?>i%tWxS8NK*Y-tTw2La$Vk=prJDWD1p= zfP0HEWp2eygzmU&CCizRSSh#_+5kv&xGmu>8RC*cq1!`p^fEjLmjiRLmO~Va zb&r-}qShouAJ}cPos=`!VjggVg*JuL7Oxm8NfRr#vh^n$mMKbo8v%i0&E_4&Xp}n# zbjSB4>+5#M`>+<@-*vUo)|AR?o-eis3 zmbOLDlJ{a^7w9Jc=Z1e4q~<)0MNFwkfyJ}Ok15VB%z7MOPvynq=%~KDdA{@MPk$Pp z`akX=;KeT;RTXnS8DcB>%bChFUI)r_mu(tdmstYI!9sf*vA?4KKuUKS3dCja zie4t4fAc{_xpiiwI|Evo1ym+?O;7 z3jU3-V$9<^M;BlfQ=Nzh@#>4Md44icW3;(w%}M&@F!cV~xRM>Vg?ncblg|yoLb&BZ zEd^(^)gjNr3Op4;yd7rAl{U75T4g{OH$}r0N(GJDatGEqtEM1U5&ukaT@54`!f+T< zxBC%zPBh5$25jwk7{vucOM24L>9;K0;a^3b`xPpCQSl5cWc^%P4Y^VHZhfh4ga9`1 z4@kf=xGypHEEV)K{a73RMH`TyL(nNWMOxNH8--_D<=p-bt#P^LH^bwe$Q671%F`X^ z!iV9hXcI5uTAB1+xTyVmQ)&4zEbKQ6PS=4(9B0VPF@<%GQI1P)Ffq+`nsmN3-P5P7 z*bCwc;y;HOLdASNino?vC#@87m6hY0I6|(f7>hrsP+>e`5~`kic^n_6dh^XUE9S$_ zkg~_azelxRI;wR3*T4StJbv2h?YH0NRWBXYhdY|X);?^^Vh{gvMHlP?VFe_{8spVa zq5oP@hO<2@GQJ2I3&mX2+ZR&abGGs(Y2b3bcNT=$-}yiEJoVE-i1b-`NAqbv|BE=xbjiH;y* z{Zw3TrtvFa4?$$&bnGgaKGzOHvyqZs_7>zE^kS3bt`!@oC|1{}s@HoFITjqbS9o{G5`c}1!W+d)?3gjtc@u-843IpcfP2^*3lGYU0qlOZo#HZr&F_6>IB4|j%qDceFv(p7>esR4b#b-~wGZ5+ z)x~%0kM8I>F_gM|r*pk3;oMLR$2WXKz9oKLI-|Gv&yz=x;T8)mbEJnPx^Pd% zlhU~SW#PcZV+Aoe?46flXURstpfNcLY-(rxnIj&Z;3OljiY@;GPOv|}QQ_HvVoQkR zhK=z#mT>$S`}*JGf)OTF58%XT%F`%3LN>qHiOdRk75O)4%4~)Z{Czf9TQUbtm5#fVm4Fq|$e*S{GPYojfMfQO+=;^weQW4Zd&E#y1R{k7Miq zd*A!s`MmE@Js*ABX`4{?{SXBahV!dm{pvYf|FqTlIDYc#```aQ#6Y){6hGL%;!4cs zkVi`33(7U-B&)udfkvV;tCo>&#`-N2B((~6POf~nUYi5Dabv@y0H>xhE?SeTPz2T!N@l4oh; zRqyndN2tI-8$qt3~d$8sa{-21}u&-Nd zKUT;yqu4_Cv0zZevVBrcou-?vp(pJA>C6)5I=peKZwFd1f#i`8l7)HFYT#!a2enRf zg}WvnsiF|~F0Q~X*?@Lj3q%ja+-_E@-o2pBC$GMOf5lmF)#S2v=RB=1qinX3WrRYt z&qFu|?mI1AlYuTNQ7XP_`(iPYJX|OwD9|G1&htq!?5VSfxCY-J#$RAIfm;#7nf?>2n(Xd3=ZK;=s0D3^4EIbxBiNw%hol+)G}z<(j{P!QubgrwnrM54sR!kgs|Ef}qV z>Mk6Y!7q>J^O-;Uvp*Z(_{KNt*tMsbQq*|)3Dx7Dm#u$<>v`hw^;G?nSIx5{@!`c> z+C!saF@snoPx7Zlu_{<&sLPhJv=@DdFbKe^XEQ?C6JU?PvUC9Qx?FDoRa56JpNB+g zTaZyJl;&$6J|uTzIk~_?asY*W6)Uw&)jc|8`7U0~3GyF0jr1ew_g9UT#iJ&$399(4jg)#|3Bn=c$#ay#*l9!6P<+jwk> zR%!U}w2;alz3O#70R9WbB-r2ZA6ke=%k-ZtZ+W)GRa5Kn0~g`>UxsYGb+Y4MH7WC7 z%%qd$c;)x;Jpo{qA|JKlR^v zf-ow+rir5ztHJmmMv3t4V`9w;o^e+3ZjL$pH0%f2 zU9$w))sOZZS(9k@iXzQ-;Y?BXUwRCLYEA!}ZsCU#@<{~g@NfVl(UgghZjW@p$67j{ z{3Ei6X`MB3k~l&b9!6A=x%52~g~E#(qzueA(HCpt?C(zPou^W_2j_4+8exh%qUQ1@ z6E_P=REb@LDvZ19lI%R6CU{~MAIukhr$x?{f)}1$>gF{5wHM~fu8uAv zyccDoSu+tKCaB426q)-(08j=MB6Y{*h=^z>ZE%u)G=g&snYz{}vk$ zam8w_Nw^qMPPrKn{tgrac@h7L>ADo@eO~8uCKhGm5V#gyZy zUy_&l)&;0sCO`B%F+u#t4gTvD{Np^>Dw&XB^S+dWhX_f>OztM`gzYFJZv&%5*dtlH zRwg_Gg5Pw&LYir!fNPD}!I*n4T!+tZDB#7iSCnyR)Q11YblS}|WgUvsvDNs`Y}sr}Bg8p~{%6sUzVCCi2%* z_gYN09tOlT^1vuw2DjcdwxfijyMANf4FZXoVyKU#Y_F*JTX#){P z#OuGh5a@c1q|*dOsDiQ6q9vV%n*kr>7W5_-Ti9(1GvFZ)BCm#-{ArC$v&moN`Izkw zH*kg<08-)4V*iJU6N{R@6Kp1VmBG;tJs0x zZAA@SbQIzKHX5(6Q6O@g+*Uc!)2r=UZbuG$5+(_%ocKz!5@IE0g! ztHKitSt~5GFlN{yy(So?Eo~RR{pS}*)(qA1$)uR{dtw_Ib;I;8k3+V!|Aq8#J*^>J zX1k`0T)(EZE+c}ieOBsbm+Fh!p@PCiO&KeHm+I$-ARt940V46SJ~LY~-njLSdl{im z`%y}Ud(UGYVYkcg_VkXCJ=R?r-Thg*ru!~NaiFMfPEf%R#6Lr7-9O}8uO$_7;}a{4 zwa|e(?ZlMehW`-$*}cT5y?zS;fOam}ImlC>ppp0;K~ zIf!h|t)m^)&=afV(iqY(MY_kqM+~YRig<=`*^~ zBn%B>k)>(OA8?#=G`dr5wIzG1SY12ae?{9;;8ZO#fcSm#cSjjoE9Y; z74N|d7MnxIlOjBi$PT-gjl;5GN`DheVff$T#zZ9kW31(K6&8_z0#QIR$Z;vTsY+g=I^_1y(wIMi`nsBJ2jxbWS1yePQC?_K;2VxhhAiM~1mQ_~I|3ETxxm*NFWzQj+x(Sg9Wo|4f%DVx}XK zz*%N`|9k@K!v~3iM^I|`x_b6@M76H{2#h2!T-p|^`9x_2En52JrlYuX%P3EWu0#90- zEM+pI=1d#jxfs_*i4_+P20>M8?VUaYSC@tB)26g?R_qah`1MbEcGqrGwQZ9m%T)!6 z-12JjmGF-LJ#7KR!se78vIm&Rrt6ky&7E}F9=Fwbj`v*>#VB?l2DWqt zELZ+0!++TA0H*u;&1odGu)-*e52O$yi3P`LI%9zD%Pom|&Kg@^wCN)*TggQgEG(*( zQQSFMuVOs9n2*hn4O13EX+;ZxSUJDz6-Db9sy5~*Zlxo>`e-L~#3AfjO3>&3_xMft z$g73rhY#q+NmGjUF9!KXOf~&&Ti!@*c9QZGM6NY#SxF$zd&j-ZeNu;ey>oPd+1+P${ zWxG1Km(>bt*lwNlSS;oZ#O0l28>5i%YRVcj=aw8DUT`bg%AWVQY8~)eo&|w#x}y~&0|1Yj%)n~)i;KCV zcu7tvYgn5@_3BdNMwlHdVlwM?xhx$f`#O{SqH}=h^0CZsKCoGbu=d(Sb?!t-&0=iq+U{ZkfxC($!$F$cRpw?tmJV zPiZ4Aj_sAs?SYKVV540}h>9R{#Cfm6M;VZ#aKU|=B1Bq7`c-=PWoVT>&dnI%ld}`v z(zA}ojvbwzGQ=w2?0F#3sQ^ydMuNkC>k8jS%UzzfroFYg-KKIQEdXm5R#06YyB=LG!TO=GH;{ zApXKSbrtBMdm8EC($R|Q*hMG)fn%%HaeD>#f-T5N-Q_cs@W0Z^#D9Q^NW+Y~(O8O@ z9Zg?o*W?Du9K#za9EJE8@$1;l5@FLw@DuB_!3DMD|1$f9FU%xT(H7}^l!pH*_y6%7 z+3A~4q3eiObVq@$4DnXlVgN~eUsz&Mnbw~v%_G?Yyjb?V-H^Lashj-I_o6(u1?!SL z0I_yM8sxMo@SYmVMqPj3dFLI|M8}VZ7pjFX{69`Ow*K+x4^z=uqcEwFUwa7_YGKId zTv?UtXXz)3n4zHOB^AK(mM_ECk(8)*H0Y5R6I6R8r_sWeaY3E{G;HV^&y^#h8P1BuWoU&3^F^lfz31?#S+&@* zSTmG+nodL~0e%^O>FA+dsQOdvC8^w_B#1m{0xa8*#T_nFi&|b*23RqAWG*4IgMf0G zf2njj85P$jpwra(C0)W*(qk1?FWstVnLfFBeAHQ5WOf{$pUt8MU0hufUGhyHPkySG z?FVbacPAn1DzzO!7p5gWe+j5i;Rj>X??gbiy9ZK-XeOLxzsvESCYxvW##gEfSKg7c zG3dWGIC2g@xRF>ddx&s>qQhxaQU#3gg0Sn)bDvGU=s;?^SRb+h1mVNQzE3OqXwO`_ zPMu^QbfpWgf!}GzQ_}O3!(c-{!wPXcfgDD^m1&(t>q2Y(h!Jjg7EzEP?Za~PT?9(* zrtU&+opU5pNsz~?gn!3Cv97t`e-;4kmIPJM-APGh0O9|*)#(K4qgZUJf`q=FyPU&2 zSM*Wa&EYOXTpHJTbfK5g`qNCEGnuxasin{>#ARF9Kzk7|GF{~V}0szY#(G`!A;aSuKT1(iStR1O1% zqBg^eE?*tv$Ym{Sr+7x0%m+CrY^eX==XmBe?To7I{E~V-CJWh!y_5(beIxbt4hg?F zuEk;~(+G%oA3YLPN!LmQ5Zlr%OQkLQ0ZGp2V9b~SZI|@kT6rY)r!UoM%e``is-56` z3(oCz%E;b%s1uOcpX8i#F{0$TNZN|#3MM6w2RD7W-O>t!1)`opi7;mnrVY+)g`Lo9QddL3o2BBL8xg#{;XaykVH^)6vsdZ2J^OG8)h5+ z^+7rm*-*pdX2(C?C(Oxc$KI%pVUfftD_|kRa{_6;?C8pp+e^OvyN_%xQLUiRq;LRH60t`A%bH!#{A! z0yV%*38g4-`kEVfVV((6pmmLzj-$CVHvG%JOP^=bMw9UZrAkEdX7V;@aKVT1D?P|~ ziw1Lit%8`QnHZV)4>pM#@8ll54kTbj1~re}9-NUplHXVeR==gv3vjD@`hF#oOuu$F}s@OlCnz?oKN> z%~0&3m5$7y)^RINB+uDymn>=jt@Fx?N`HV4%4CEtI-H!VOkae>PAeU3B@M;M2_s|0 zDtWW*dFJ$zEQy&cl%ap6dn0!83e#65Eyk+toD#AE^jk7haG=1xZd`b(1+$K3j`?*N zeQIs4@a?F@4-Cb&a)T(!+3kEhSQJvuK`%B<^IBa1)%JfX;36u$4c z0pjclEXnUJX>~!g;eQ40X`@`oAYjVHHJGx?+sy4D-6qq*cPB0@{B{M4P|Jpu0wYBq zw2>wAFwEg=yLyze!n&hz+=ttKljGPIXp#LE3*AnV?q=oMbFyc~*bza(491EV00aMB zRE1)K@l)tt+W9m9#CK6a8*P(g>}PPH&X56zpWg4qzNosl(MfPIY=N(&@(;RZ=YMcg za{|a#09D8g&V+d|u2Ly6hqKa8#^gkQ$9_cCxTOXJuo}9@r~U_z9A8iMQhWL_sy%)} zweL~QuYBbz$4{u9zfAS^+i#!8KJt-|q+MwU39?%Tllx9)vy<#eWDFEaMj2i#u~S$# zMzyPF5Q~~3uQOh{dWA%pF^d(SWhBdp*h>Qahwp*(`81bb5kZcL9P@DAOgkG`%Lp$7 zkwLj&=wnPAt#6r1W7Q#@t=$%$?AG-)WGRz+*gwcGmd8QSoQQH^ArM2NBr2G+qr}Ap zD(8W^Q>;^^`2(F95@!(H8}UFA2vq)eJRoJ0e0N0%k&4>P+Q#$3GKHXKB5sQzp;4DE zFsnRW$gpn2W{qXO8oI0`+NCb2yo)HtL0Yj~qi~fC>8Q~;sUVL*veFuKCkn?`I;`nz zFJ+YB8ZxC8D7N0s_wFb65{0}wmsrDHs?aJE&TkU*}B|_<5Bp^cjCW{ zfp|!nq6PUS+us zAEyWwtHb;%908abs|Cnh!jQtuV=@)Bfko_+AT6pONXOwi4g5k=&iSF6a?RA8W;VB? zYVQBEE7JbN1@O=IDS7b{FHCCucqAGv#D6I_^8O9SKaBLG4GVg23RK$e6$mUejJnKc zSb{zIJ!oQgQ;m+a3RKu4tvD@9BC^pG&mEBVj_Yi5FG2(e zVrprDoLrGp7vV6jdiEPBtVQhhA&xwXa*Lt}7ACq^)VKcjd%ij;_Ojm6Cd(v#pk|Yp z--Tx}F!d4FwVAAFK%8kY}g5b%oZy zxbI981h$Nl#g)iA!^&wJpW+8yhlDrrk2hVZ9)|P49=Y3o1Vx8n^1V*(*&QxkYYCuD zz6_EPxfN(9fjj;!flvJNLwqss(_21TXJm<-Y`JoW|0QN(P9#=v3StOjaTrAR>IzZj zl);1dNOopHfHUh~Vz^`v#bB)UP6QS`h#{h|cq^cLE#)T?ZjmwJj}^Iw|II{fCZ`T@ z9>ah89bM6|n5$3`&HIk2E(jN?&)CnlU5n$?tN8cx7hn(h9_%K@pwNii8frVobRoZD zu%d2okn(MUI!fIy77{FWlUh&ws|b1&&nK3O_@@g}MG?#|h*!#BOl@sMCk2?2JOjru zXZ2<68)CNOGbwj;RmHJr6Bw(ccnlh6kVK9N+V2f3`ECE@UVaIL*3Tg(w^W(sESxS5%cw9tw4tcF2QY z!LmR}7tk*?*%aa``EnSvhOKU#F^RzRfI6ML*Aa48kBx;z#%S1@)0v}9okFM12A9CgVAo?%-So%|a7i=dB7p7J2gl^p^UdP$1@=u~32U`Fk$qB2gaY8{w=K#XaH5k^g1qYrWf z3zjoXO5;j(COXI;w0k!Q!|~tfP0%6ELlPpjhDFFM^l77W-qeQ~B10XWjy3agMq0zh z|E>r`7*+8ui+-DC$juikmOD=1f7lgq4IJzQtK?BJL1f`tQoM;s_&42X+tre`tI}ht zG?p=Mn4SnvS~PTTYIbKo^c830ek*F-#UN{De_hxna{R3Vt-|9uWuNATQb6ROil)uv zy36pNj79op*{&>R(}_~arLo=-%7mSjUdyfFp0Z1Dak?O{9RtIMhw#A926~f)9pjF+ zifdEExV1t=eR5c6k=HtG`9C`kIR3?Z=>@vYyJP{BmeH=ZMa4k8RGSp_Oin$WY;Gx9Ci1G#18h%GCjBc3n|LNUo;D@p8Qxh=}{!MRV(0LfJ(kim4^3-%2ArKP<91Ba&c8LoEQ*trp+2a_HM76^{w;hapwn`mOuiWDRPhLQtmoGMnr<_=K7qQl;L&uiZB zTHca>X`J#sFgKSTD?QGa!Qy-wFR_Iflozf|uDvYN^m*N_aS=eOAj_jr>6&m=o(Xj_ z9M>*zt?Gl!fbt7mYE^=K@-U`Zv9RHvRe|BZ6SmIl`8|kn?o;@;MF-f2E$EoxkfWOw zv~GBp2Ge&j0sLR$VI^)*La&FC7P=CEE0#)O0emDEm~98IsapTODBWYr@MWGmYwCG- z>e@o=b{*|g_BA%DyqXtnp;m4fgdRGhUDUTG!oU2*Jl#G+Vz;8Ab!hzCA`1nyZmr>} zi7R798XdLO1&ewN|3q>qo|jU+0A|`VlymuP{-D_g{y*SRwJl)FnhtG8>e|}jf_9YQ zA7ef{HMk6A5NVqa{I@k=Mqe1o4JP9;=?z(c*IsKd{93+v^>NAn z-Hok5lZ}6-X5v4BMSOq~ON+{mTrMvZsNzH#_4w5P@nI_e3DtMrd1rj#zdy#;Qyu^G zr~XfsKK}8KL+j)A*E%|?c#j1J8E_k^0|D9xlXgHaeBg&fDg9~C@B%JpktSJU8;7U& z7#OYPdeF2}azEDIuQ5-?jA)JNLy2KpbP#gg!&1EHa}{eDZI3kAOpc5xQ;GQ7BxSW ztda?ZX~nqcfnql-8#BkOmnrI~0d0H6F&){f3$81Yn3LmT*C}o3nuw7ab2JRw--v${ z7|NH9#;kA(BMT=p=$&sczKPhYs0!EgIQ5aE`+DIxE>?I_*SwL%LZ)p<&xd@Gw4v1< z0sNP?oMUu;BO+>l3MxVkgtP?l?7n2)I@7{R_U2IUt`h&GdYruU$XQiR{I7{;oZ~ty zv@iIN4gX>CCw(yn%m{^_I)6R9ZVQRA7WIWXPgpb%Vhq|{-V0Q4$Ky%d4kt4?T|hyJ zjUaJJ5h}J+pgGhWP;7NB0}as1C+pKvuDkDABmj8JoP|MuDS(Lpr)N9~-O`X#!YxqxT%|HhHZ{=)zC zpHMwMOoc~(;Xfby)_pzdJfA6SP#!d?AcmXSlLjZU%J#c0CLX>nIsK`T4 zeCA>r;+*F(SUGT*uZgS*ZE1L62LRjyr<_IG$*-J93&c$ez9NLr8Ym05!wMH&nB&5X z4}MriPseasT5Xn2JcSL4*Fe6?-9LS-fKLWI7%Aq~Qq34C9UJ^6ZN<+|u0f-a6goDv zN0uatCLC|QD5yH$t1v^&X4_BhE`ZeJN5^pFGHF|)9Scnpc`23%=F}xTyvl>s|e4=){QDdrIWx? zh{qDX2~T>7K!7Q&@t@iSAxjk*gC^_r-#H&KvkDu>zoL7?|Edg{ zFNFWG$Z3xSw{SMxa$%QzPt2M!@#2utf$VX*#z+x*YD47af!NpDv^gEv4p6@paKiq; z|ALJfwdtNEY)JL6G3#2yTw>Sk3~pWqYs;m`6_mjU=51LpgQb9JgT4)A!#^Zxf5rxE z2VXhgdob^@u;QSDImM6GofCed!WXRTw9SS!%Yp=fI{uPrQOHEgZCxuDY zUTX%nPgJZgY!d(A{I*Z0pQA~T^~Uq1qZ;--s{Gr(Ox2Uf1OBQ1^Uq7`^*rJI_utQN zed}A*JPXOVUR61n2UP+?De(^P-)WJVs2;oNyDVjMMeB!ix4K-0D?~${3GIbTW7Wk{k}@ ztiv_`4|!A*2<=%O!+xZ5L{VN6q~hK3NIEJwWREBSI|lm;;`c7Y@pvTm#4}j)rV?`} zKK08;e8IoBZF|b&pXc5>Qy^xHHDSWn_;1C0 znSTrWc!vL+7#Q2m$*KT_qj$74e<${i&6PA#3*3$hlF*h5=5`#lX?f^3Dv$hKsxf45 z^ReT9H@~{k@;9FAgHsu9r(BE;{0jljuEa`1JO2b zWPlBdYh>tGA zGZbMvP_vWP~uoYgi-D6DbrP)*1BRNGZluLFm<-bHVc>|BRb zKF0IATNSP^HVdZXA|y9_k#-_F2&rgSryVj=XvK0~=bDUb#Jvk*|Utv7}QtcSBB-?JRIZc_;e5SPQ1r zZD~7?EQZQDu^{me%}_}b8gZE${++m}*xKq@>1Y%;{2HDaNgg*=)L-yVnr@a zXt*riwn@6gO}ZJ*Y0Y840dazYqUnluMUQ!rkasb%Vm5ur-29f zF09LVocl=X96piFpB3ec%QK=LaV^w|f7v|EPQis$dV!gmF~E4*%_&mCh)ytaA)G4l zldU2X;=80ft>N!)i(}R7%>QXnIJO-{0Lh;ZhD`?-nN@2;Ew5k4(S=*?L zp>7|*x|qXrqk0@u2Og=^mPlH>wdq#{m@>{e))U(v>K0Wazk?~eCA(f#-0i3kaA2uc zm7@A8xXCdvv=Nn_uLeqAoe&ioHql(S7JCpUkEGSgLaKD#YAnLHiLlWp=23Pk6{isn~<^UG3Ht|A;Z#014-cDzvOaYr=)pP@K0m-Zfku5$haS6^?N( z<`cGO0sh2SwpHJz^9+xZFgS)20Ar9crs3b>mX9?2M|jZ*pK|el`PJ2CTe9zvVRhdi zBmO;=cy=b0Hhhw@Mi4I2J5g95Qc#!G_o~}0v-B$BsX5#I3eIKGHs+{pyA3!`CFZ)RLxv1VWSwq- zf>~+o-2XHhRXGwUnAv&C%I0>NeALjU5Uhs>tlG>Y-w;d?`9ub|JM$`iX{A zUUGisjB#e7sNnr?PJ~P{+5>5}zyjQlpThKNv)oOa9xKT{jhk)z2{tM!5j$KU9<7_S zO)_Xk9oLBvGIl!-qS<*`zk{LC%_a%vsH)dFS+mRG*hFz$c7N>6c}(`(c>6uYEb1N} zoyiXk0OIT+4U}Wull;z_A*RoXcxo|i%b!IYFbdps36#lcd*QU>elkf%dIv$^B*u8TUt!J1pKatO1;X z7NaM#>h!#t%#YacUlgPQ9n_#{c5?v5Byv0y)2W;U6QG-|Y|ucWkqA-B0;*9r z?0aIntsnC^FZYYg_c;+e_I5Wnv$f3J-1m+##;OWMH5@=J)91Z@swPihC8`ePYHvT(hu||MB`Dg;C*Hb>edxe)?Y&fq>RFy{j<~P653Gb!<`2~UP zMC2O&ZR~9u^wPS-FkU2#2Jk87f=u^1?~@eyZR^^O;YUpgP7x{7SmSvnZ4$xAbX6bQ zj;6lY`ZZciV6&|23LxXib6xwyCey`OkCO)!HRkE_YrBKqm*r1rgCJGGFEqR z@_A21OAqy@i-JU~3CnAO-&{)na1tGvO-J=|lB-=!Jz8`kVvU_KJhv&6B!&{~h10ha zP~Qjz%^f&|S_Fn=A||cWRUVg7I_=3NM(u;6LQBb-N@s!zqu8+(?L|A3LHmUY$}j9> zD&r_cYh#NXo}AFYUV=TXkD-+V-7ea;@8ExILrbS1(-4JSI@Z<{4M-O;5h2zltQ`Ea zFo&{7g+J7uRBZb!d!d&JXfEMDla}GFmeB)oD0p&q#C>5+CP7737=YKb$Nf{X%cvMW z8BT_D>Xs)I9rbb0%^}W+i**9ZUHN?4aHf9nA7fP$@wdsByoh6_4>EOETq^36Dju{? zYsOxyAX6+!t@wXhEGxpkDSLhyC&9EeHW=R$MYk-T9OTNX{AMP|YOjx;X1kizv+$4p zPLFffKjyCg=bWGY>}SuhU;gr!qZVUJiRzD1D_Qxu=(_8F54&UJA$Nr!My>u+60~g| zW@u#lmM1uFzUixtj+QzAXJ>2C{$@S<{_$s`YH0(P0JdJo;ogqX*~U0-mw7k!`272| zh{Ra#yG6F?u|WR;R{-A4MKZ|i*|wJO<2X5+?K|eM@iLM4iluu8i$nyQi2m~$lU++z znowAR_X>JI=dTii6DmcwQK2_MWuuIBO@^p zn=vWZ>%}K0-ciP0E*LFN@I$N|m5Ff%GsGTRz{M+-2s^wPj$ezOu%(DUq}-8#=p^TCLjAHH_jlrF59F#6f#!iIhDxb8J*W;BE;#^9o@<$kPwHV#e=kfXO=o5|i8cej#T-SE;+G(%Wy5mG!=q4V7+=u0-sU z`Hs(NscV&eDR-otA68HRJboPWrH=2rqdIybPzT~oD-6cgPrm1Q^^pl^)CDJu$$J|; z6R@;5^)1^xtG2pg?>2An3Zi&yb`d}mJBEiox3__CJUvw~H+lXc*3S?{V^LK@3}IcK zdADG(628X(S8^u)ZvDbsR)wffS|_(zg(EwtYx zQyqGk?8#h)^<)A|8vb6MoU!R3l+F9`DmNOXMsPLbSfit_a!fP+ks13VbI)VWtOrd9 z0)~5Kjp~*R&emkT#QGWYOjzat|JGgN|7h&Se<8v`ti%K?^u4}&rCPClul^JK50<`% z|FKw2K4lP$-CmkCIk}5iUh20Z{<8}GMg4J)>O}ybuWx@s^{@WwufT!6m;QhEyWc&} zQKbOu6-2TFncsF2uDlSN{2KOlCPA0)e+;IvoN1lE;uyq@fqwgOB!mq|mvQ`Kp7_4D zR3rfJab=gaJyA_mIAqAdnK!elx|73N`djQkSt(;^l%1D?SjTzurnitS2W*9;+Qaa8 zr3Ll^xiyk32Cu%}AON5oCK5KTuDWtMwz=2o9Xt>-*=bbDYcJJ6xoj-sNH5L2W4*o) z=&gT_ueiGRbi+MT;!x_w$xzKKTb<^Nr^AtZ67_i$6&!#t2Tv@IPAojM^rggmNVOu9 z&&eOZX z!vDQz3osG_iglg9u_-?zHtXfdsYiB(SQS>z2g1hd6>(5LX#B%+Su5)m0n)ns4*z{!+NFY1b`#z9CV-B_h*#v0+FuSC zeDJ;LG$*;bgS`UNx+~GLkKVZwWE`p>A=$m+0k{IoaXn{UL^iWY4l%R_MgQ6 z>pTFRg$DVsv^=Cc;f2?Pqo>WF$?4@QZH|8b&J#$<`Gt*A2Je$X+#3jc_f7Qd+bmJWc#+3u&uawGW%r-hlitSt7A{uT5 z&A0;1a@SI28Bez;w`72;Lu$7dX}xytQC+cZg;j;N*ND^(+J`Wk$!lBo)y821Yhkt~ zpY3_=_WB{y^EbZjj(MG{(2{K<{1rfW3q@av`4apq{ zHH^INo*idXoyFjytwfgS+Reta7M`vQJxkAOP&piwjW{jgq@<$2F z8~+_DKQHenxvGqiymH74v-E&4KAgBmJ4p4#3_XA(ot0EE zq*9STS7x8A!mNq+$)Q|vphIvg7iZB2Q#m`exD(*^=cquSJf+cY^x zj5eJq_H$ppuV}+P%;OKiiKBZ=J9CcuE5#P_u*j95H%hZIq_`2uNAu|+=bE$M+!$oH zjBPe>E%<{tA{O8{cJrHFbh_{GKLVA;0rQ`@Np52N*OvQzGu6AI`lArq@xcG*HF@ZA z!&On`-B#}t{^_6oX2GaDp=dNMyYosL1 zC1w~+@K(%}ouG}l;VJB|p^Rn#Oii{xdwaM0QlrJpNdajHos}L|WjlTNJJ94^w=0V! zK}gM`eVejOpzRK*)+idgfKh7rB#+DYauQhjv6KdvsKkRd`~5oYeL*?*#DKCvkYjCD z$YxB94BB3b;43bRoWk&WvDC^eLmoyk)b!8DM{5g8u~kZ#BAu|PNhla<&8 zobW5>Xk3#dPU{1U(VO>nR`k0r2P?%96rB&B1dT-AvE)3R#KgkREk-D*Th$kF-*Nl{ z<#ASyx%~Z>GhUUBUVHB*GnQ}hKl8n*0zLn4u=*IDa=f_V${des?Bb|Tom!b8EAd~a z8ccn%^ewLV$yXywihB|ZO|B>&;G1@+hk57d5Tmv820f4ay=8r!gdJ`z6Jxi@31@E8 z`5yhk`QX39AK@Yi$$I*utR+0u*7GQ2649#dvXF0dj9rzk4=#7J2MdFLRK_`xc0(Rc zIXrrigD_w>Z}H3e{^}SDMG`UMf8Oq+NkWnT>mFV8!pfLM3tI=fkiREy8vO%Z6TYPT zvGo7E|4|5iuiU>^@Kb>Lk&7;oR-zge)%wf7{L5t-Hk^$Cxk`p~a*@SrQ8dTp0F=Q( z02>>|EHFEj^5csYN#p`P^Xai{I><_iLXu$^;Dc{`h3{nJXgnB?HOZSYU^_EDHCrip zM1Q%;0FuT~r<%d(es)vyP*FbUhDLpO~Dh6;V3Cl*+@tEwC`nHx;v$_|}THml!B zTn{T1mj1%B(tI(|V1~m0R0_G{AkDZI8e2@XrG8A=E^Ik?wx~R^UBG@F)gGGG@*hr~ zAlgdOD=Kp<9K`3TNSoi+c|HYO^UMRRTV#{tQxohms|y@YpZz6`GH5?zcz$|uL}^~f zW9`HM25J*n)ZK?!`&tI;S`;wBXugX1#tNXwH9iG6=>{JO$A&(m;}Lq?O%>o7&)yLF z)YKIuf{8jnhlPJtjz_OWdsR}Gk|%ZrPAW1{tNPA2yqxS~;ROyp`h9Z+tFhckK)$wb z(g((qYtBQCQ}~`D=jd!e6tqFiIUz1w)${&jKUJEf-bRiQy)G|aLj|hnL~jOTOY1pP z!oT~y@Q;L)r#&5Nep!H5zofTwu;T|`>U;d36{51D%1Rp`lY;gaj3>SUh+{Z^3u2+Z zRIG^^mQH&>%2PV+Iy~De`C$@;wSq&=aZ;c$oWn2JJyxF8x?cREN$j;N=PURgv||yH z^y7up)Sw1j5f7A9V^#*liqCVLh+m}t!UNX|$^7Y|A?i+(tD;2XBW$KT7+mbOeLz=q zi*)y%*~4d2vEwn*&oSIx>oeeJCs4u++HQju6s}fMCuCpbZ<*_A#g+ehCc;@0-C#0+$T~xZ1&is)5dTkQ-_0Rua({7CSB+>95-bWmI zW)rtaAn59<_&)oaD~$VZ#+oC8-RttJ=?IgKm5H06`GW5RtuSNhS|T@ox#R93P2Ah7 z1^bpP9_nlE7@C1iR6YY*#5ZG8K=8z+CJkYr1B|y)vg+CXr$*^GA3>W-wUH36s^Rcd z=pve}1JEyy1BieRlV-u?suqVYJPm6hD{8dps3RnhQ*li`2(a)`v8r96F{uo>7m41H zGm;4^&hnmcqPv!w>2&2Bv$Pjv5x{K$irO*xs&Dy94+=*Fyr<7e+7+yp>;RL&8FDgI z&)4#eOdfhM&G<6pc5#>4Bp>>CbnFS+Tqo|N@va1vjnsIIl4a{5630-E^}+F%CKmXH zEs`!nUNHCv4li9<-fYOpw1m*tuL5dOdu8_{KQTzm9Zif+Ge;76n6a=Xl1P!K!*#q9 zpbxeu0TTMp!PSPUhj%oY8P3-#NeyY8Nn?c=F2rpe-mOxQYl7`AT1yF(i@>niTTcmZF$5Cy?Ei<5jVD11Iq;q?Ryi*t>t0;B>oxt z(#ZRJ6?fWUo%ZR#|DHtnNejK>f0H9PVQU4qkf$=fIGYB3|M!1i(*9WbzuEGhiGSSn z|1P;c-OY1Up9X&SyWe#vJHUs!T(FQqb{{`)M!a?_yKTmU(CleI<)3r?VaJv{-}ZL3 zcP@2uu$o8Tanf|6_kCBDD0A0p<0yOnQ#)fZ_Pd(m(cz{_?R+yn>7qpWNsQkU+MHeX z>%%v|D*REVriXD{jYJGC?RQie7HOn&Un55PiYd^-o{Fe#NKmLBtx&Md1}-CImkrMZ zD@Szb-Lh1ruPvD#6;Dv{&>ZxieVH{uhzwUUZ+Ks4zSyi1iu=Tyx28r1y{lj$AW7$h z!YU=JxD&i()RGQOhBdmeYB~O8=fPx0ax#hpAar06--Z7S62WYoiyVJp5=Z@Buc8h# zo>PIfE~m2MNrD1|8<|Oi+T$FeI&%QpT-AnbZ)}<}20S+YTdsEeW^A^BZ!)0XnGBkC z=e)u-3HHQ{ zv6hbq)KG^M|0bdK%E>sa5-ST^3T(?W@yWrU%xc~Er+;?fU*Vww(anG|_#d3{Imv^& z{_L6@7ZS8o_M^Tx`Sxg{1N##BN68(2V{f+h-5xJseThnDiu@Hb< z5~&#U>O%bU9OngW{saHYC03O5TeUPlppxo6_&>gLaKe3>B|7x@#$N|d(rH&m71%UA z=k$l}#!uSRm7W`{B%GkqWM`}cy6xvi2to~5cuB{l)eOSlL!9eKmOzO z-lO_{aq0hOKl>SgZ{2<0O!fZfx4-?Zto|d@mFcwfUvYMzR5%E~F_7eb5+YIdAr*sQ zr{1JpU=L=eo%NxhkK}nxec8s4d!@rJ6k=w7NKBYk+cHP@^_pX$3{5P|_o&rR{>|n} z-<%}aS3Q-`&@)@iFoCOmwOCtQ>wUwe0tTWu&(=_K6nq%+&RJ8~^6)Fh=Vb;(bod61 ziha6;;P(yep- zNa`>uD5D7a77{kaxf}PkRtR^<=uH(TQCAdJP@p-zLbo98 zVNKA!`RD@uN^-BiJL*%zwjove@{Ly=(S&>3vV|yf^+gRKWcY#4%d&MQ%+_TKF-o?H z5rI`YtI#2^mKlwItIB~MD`5dM+!ZwMb4qPf50c}2?TKa8_V0)-OHZBnkCD#wnR?@V zwiEwoJJTpE?7>xl51$3DN$D&P&v+L8-{-#2vHeWj-Q`>Be3JKYE-U6RS0hPX;%Qm9 zoCpL?nXm=thUeM`WAMlC!cqq1!GJK{75+ZTw*tUW`5pe#U!eG3OCNB|n|-4Z@)(Q8 z|C*DaW?r|jLz7JW?+Do3yE|4viPuh5)8pYKnmo?y_3XK?Z{t5g!$sO;Ga(vopQlR9 z(Tx~Q@SgD8l|>25iT#PEY9GlDT$ENhj0K&tN*;VehAYk=Zo4BvH4E6UuII?a8NmX3wI zrI0#hqq%1GakgUA`1~YxE{Tlx6hJ)=((y-hp3V;8b?B)=54J+$&C4vcn_S1*wixH5 zy0Y3rsM$5My}Bk02EkDs!BMP~bOa1lX^!k)42W)gcn!S4MmFi?M{_7Mv`$|kJ-RI? z4{PQ~J*wI^OZ0bDvE@}_R%Ehe^HeOGzcLRQ1(ZFpk=vh`)K+gaz|}c`WJ(<>XN~^z zFS+IEVqvL_@zMDNW@(86=U>RT6V=hvNJLj&%li>*Pr}lQGV7EeY68vHyHSH>`bWI> zYW@tYggX7%?Rc93f*V+2@%Q8YJ$jI?^@yW3lOLY1DQzD?>9@dl_}4tUBs&YDir%3?)mH05R$!8(WWdLAmht>W`##_G(#u;z+hQK+9mg zsq50ao8j&Dr#J3U`st)n}6vMqW+~DSwiiBVXfA6cuM{WO#r0veX|_M~osz0*WdjAR)zJFOkk{Aq_j0w;7JPnH9 z^T2$fjZi<)i|Oq{eU(RhH8C@iZ<i*j^r-#;%N_a5Be)Fd)(%2hVD~vvE9P>q_ms z2Js8C(KU=}cFbRFs`NH|PvRBh?aR-o`xOW(uB;r1$65&!jfg#2Ot z3D^QG=u?+$mm%DM6LEbf{Esjz@v&Yl0QU;^E>293-{QZeO%Kx(!%B=cG4%zrWAgBY zx3vw2_}{vayG+NPGp$L<`|r#2%*7=7JeHmoR`WHLIq}s&Tlm_jZt3kO@L%6lWgtmF zw)zSDCwE!;Bb~EPHK`=_s;WjBh095MMgv@x4T=GwP|4iUX78;=v=MgK@2xuK@(%o0 zh<%$jCIo#o$V0;(@Avbde|cz*e^F!ITAKG?6Q}x&_(gac{xH)s>BX(A&nG9%>&Mc+ zub!Dik!Z={4LiyjU&MCHjF0+@+TEK_E%V1bg+L z*T`|^x^jPY2ZZZov{H7unJod0Z$7tOy)tSnj@V=>Ib9&RJD*2AMYln;P@9Vwfx41z z9)_nCNc@)d#A|fs>zg>DG2QlMi{)`C$#O`im?2_jxc9KKuksB?s6aC0Q_S$b!n+aU5lMR+00;TSM2_coEQ%qL%UL4~;+6G>_O`R_FZ#8r!^a5W;6ukl_a{)^9IhnW`Ix`J)3tD!j1=@1%m3W$Df~x3pnp`_;<4?;XVK$I445?ZA=niY zPj1yA_qwmA*NtP`CUKNWZ7lpxBHCdgoJrbZ;T&75&yXtkBATy-KRFmH(Hmh91Lx!9 zo=4erlvmFHn3*mQx$vJ8b?PB09K93zh@ax9+nHdmax62{KfA&7Tq56K{e>_K(KRmVWt+?;{@BI7cfBxr7+WA89Xn9aDEv0Xt{|FmN zY$0H?zPlx1o?ynzr+9R!H06GfS^=HPXJ$fAp$ps87b+RfO#84i4Sw#Y*iqU=&26JA}2QNLS_hT-NC`C zx82H!v@ei_r`jn7A}DMROs!oBmnJmrs(10sCSJ0H*55H-z6xGb1vIfR{wr8d!zzb` zSd|$yUj@d~+@UV6rIKeRNxdd0Dc!kz=Xa>s@&%s${L;a;-&~q=57(oh9J#N zj!E7YA91vCI;zOx+UMPnIrDbrJJXrd}N%?)%?Z_55e}(?_rZ4E4dKml@AX8 z=$uL8-XDJ6NyM>zjZr*L0=Rt#SWv~aWlDWRYWo_v4G+N+3pbLD*4p-P4t@H3fLUbb z>a}d=v-Tym5-7kJtiS-Nj8|)@Yzoe@*cu6Aj)>^?IFZ|IdE* zvm9z?QuzPio7Z3c)nC=W{oB9kA*{dq-S2Ynq!xS&QXf|o1~iX8-|X*`owCJFwlXde z3S_(t?>k1XXp=6UF_o!YRU(5n$~K11LYH7qSa zglEmbn4~`#@nXW|9^ihr0iWz}84e4u6Ngj{1Bn?|)EouCm=#*k9%<#TmLnCQ(_9mN@@it~>gv~k;?;o%$nzc1^jYH0j_rfo;o z*7e}#P%heT{D)s-6CBn=2qp=0C(OC+#CEL2{!5c8ZI@0LKnE6>%+XeZrB)8f?xvFm zc?}1;9?OVxW;~8aePHg2r-Jb7NowZW&h2dCsl!@`Kv&F66kk?vWln$GX@7sF&Asin zZ92TxUG5~Yn~9~=X3k~K)y6;1dofQ6{MU;Zolu=T@fvy4@HO!t?C02pxk!<70{^ZC z)aN8%hRnC`Dt%}5Q}MsWK#n~!uzj%l!hiVA0rN9%8KUU0Zh88RKI8?K3WMjXQv0K# z`dsrb|MD+=pMU-Re2yyL{76zej_D!_krhYSLVI~Sl~CUVvtDPqe_zX4cGm2RoQ=Mu zzImzF$TD}U#sATJ)$MKbZ^z$S*G*9;s*cfp#T$+#E?jFo3N8*D6rqC{w#MQ-iu;Ag z$thF0@VYGH3`ugRzmda}QfStm?Q#6%#OXt|ijvt&<+Vf12r(%PXJvjaT@Hc-O|6ja z*=39wT8i9*rZrM&MZ$gLJ+%igsY?0MX_tF3HA?$5f+(c69e@iJ^I1;oYl0JUT!O^} zy+@y4ER-_Njmwd9oD4;Kds(s~xKXedlVt}-CSghrDq+MNyfyGZXJG|dOknF)YE>L( zr#wggLfElBlh-rO^OrG4pj1Pot9jp>9Bho^WtQO-5oY333m7x*3DW0KF3B%o4sGSZ z7oT4?9X1rfq}b6llCWCC0~RsF`RbN#w{4y{jbq?>uCBqbXGZe=!}g}Cqa---KYq`C znHg03GlEP8FIp*C@>0Mz{^!@5kP%rnUWnxllwzu9Y&D5AKu7ro|G4nKUv~l&73a`t ztIzY@8NFy}Txpi-r9@P8xec?{}(=%6(~_GP7>@BaF){~Evf&2Mfs5LUbFzLTZ|zL?BhoV+F1Aik$5D+evQ>M=`bVtniS20p5^GbvHj;`tnl6pF;LoR%`h zARQD??Q+jtQW1xmnr;J$im490RHsc@$Biqb7a-Zcd zH^{^INVq3}PfF3a+irm5?EvHiS=w#?N6rV}_{Z@o($qyBhO7X`KAU^9#-6Oya7;no z402$SR>JLyI{F?Pg6I0#pW2Q9jqr2ua~!dkmCyz!3#u^U`y@a0o`0X0O2Q-Wjx?T3 zevJ*uR^cC+Zbn^v=w^Qy z_YVArQwaa%5t}B~(@1&`nM3>@|248(m!-Rx5d+_G`M4Z8qc7?^Rmbv#kyUyYT(9%p za$(`$?q_suXoitnRKHr$mQ)}QX(k$(sNGiG$H;BKPJiH`9P;Mx**y;^>7#uVqh zW`@pie#WZ=cx>p94S$z>(%%;tp1c0}z<=Cy7;FDuaq#)`cYpVH&(i;Q!;vVA4`ax- zmK`X?SGtPJ!@HE$yXh4}{JG*(JF&av-_PZ&q(~nNM^#rAX{^%u+2eL|VVt9o<&I2< zoScUoS28HCQ%%k-6Enx(Dk`G}mqd+s3=o(3uU^?k?PQ5(DB@vFySsi;d(b4I{mGS& zB=_h-sfNm^&b-8Qb13;L&iH)oAlo0OWfx;GGpk5`bP`kl+$WT-bkZ>gyL4_QnPni0 zWHqbqOYW4lF4+_Rl?n1UB!Ag9T;eJz#`SIYW(M)Pf^g;|G1Ofpu*CxZT^}YZLWmu- zGnu+7iAu0$Qm0`|K%a8XgPC?bUpnY-bWBK3;EB_%8=Lh6K%KW;_BrvjJp-)7y;b)L zt+W#P@j`9Uw;~(3IBv5Gzo^9jxGzmH6Cfon>AlWE2w~YNoIqJ}VMp2HXYE=wxt7{N zsqmA_Q5r(6$tvz3uEZoKZ&q(bH|9J3EBsIQ8Ut+*45`nNZ!=~T7XAYa8blP2aLa#P zbH-W~vEZ8v@v%*bgDm^wmGm@Y0Y&bO|2(%cbVmD$TnO(m_u*i-7fg>SjLrumZ*_eT zHp@wInJTUI{mO?YIF20~|DQ{#5=Yy zOPRCHw7&W7dEHC@&+EVZm;dse3)*8(BI4CJ{%!n(>w-yKLGf@}E8r^4Xi2;{RvRLP z35)2`v&2cp$^Up}q1No%9$vWdAqK_rwo8~{rbxzeyp<$ogVyLUB=o1$wa-NZiyT2F z^5<-0jfEk=goQn%-tTyxepzcbnNg}@XoYR#mImmw^l~}!=dLDTU$DS;f{Yxjl*Da3PNJjn z>ZfJ%RiF5O5`d{dw0jk))W?podY2LE3y7*?ho#WA*Aj%&k%Q~oz<&7eHh zK;r+5JQA`G2+c4S{`a;Rg}%W-znEqUPLGDhz|G2GU=+Ou2At*e4*Yja(p3RgHSNTS zUWz6%Rzl~-xTsAuw&+YflzFjz&w z%gJ~r9`iMMdu2l3j!J$jWrck-(P3lso4FcDUu+I51(_u8pj_7u%+7xB4=p)tSAR2k z9(7FxGwlX$oods?(gTDA#wC34hA*Ps=bi+RoQiTOp5{%dP{`#48UNb31cvD?SA$zq zM`NjzVeyTxX_Db#Cz;}z=@@uvY;LECLd}{{=BOx0QJ8@QOBrzVR8P9TrY^atb6Jpf+bH-6Wh{a z%J)TG%DK}%33LNymRK`F9Z6C;DUdtc70$?$TSpjPdUR$e`3O>F% zDsDD}Ae*R)FsWfFp8ZY0a#kc!sNlNH)^hhFV2>;yCKa`Ba^kB z2zpFQTes(CPk3hD(Il3^)oaaMD`Yu6#@Cfw9t;xehVc#=qH1LrTD0c02JP zht}53C;pw22mB8fxJEgPc*>lWVo?!-ZgHqu%08!-3U@K-^2jGkESVGi1iP=6|I^ik zgqk4q((-j>H0o6y0X-JctL5q>|&?u=ywcV>Q5TC(dopE2E1_9l8>GOvO&rX4!v#e0T-y z^=71_4~}_N9vxSqy@H~cmqWAT?!o`LH|aV5yYfdSD)A+Yxz7WU&{cs||8@W2q?$=a z7^MZbeM0xLjjGbe>*nq`sV<%HaOe3M>YTV6uj2yCsW1FrLEG4MG~gL!^964xmc&*F zbI5RMiWC>Bq)S=KT-TKyk4m0*x|!_x5UXGkW=$SHUpu>yzd!i@3QWWevp-hy7gfgJ z&x-2%VXJXM{mGyF$@Av@6oCKukN?1Oxx#l;m%{7cdj+Hvl;Bm>zOJVvM2WgI_#F1J zU9>~0h5PWaj;lNlmR}g%prj~dh?sA*FcvvzKmY3HrsU^dz^JP&XHerG&hW0W!BMno z$>cGaF0z+9YD0R-F>)*&E-m8If7WCt*b>hw3g3Lyxs+aJL4ExM6*g6V+((f9t~Nf@ zv&n(F^oKocVqO5&HEE8_kUm-m$=XAkrU%s(1J|rRLn66H6~yx23%ZKxof3S7HC@>{ z05l~&L7tkky+=a2wxeIP=guWge~*8vB;eJ184ek&uR5n+lkl|quSQl4GO1R#pMs3A z_RWXj`@%o>=2lRT2a240h`4mE&XOO9FT7XG<8rC-1dr5AqH^B@;*%uy;eQra?oKp8 zW4@^^vRNf$2Oe47Z{;jGY?#-o2aHDk9icKn7jmHqM=*6O#5IV%X7$_@S@V;lbnnQYKZrk_(@?(ggC>-FBF`hNZ9 zH^0Fze({TU4*DV5eKS@4>Q}#dzWj^7_>0@>scO3**__rzuwG#e`t-Bg8tiPbT5WZF zMk-3ZWP6#+UDr|SHqYb+o?J@T{@U77L`Q4c>=b|KAtZKR;Lo9xuHA+}&ZINO^lc1p zI9JKYN&@NY?9VsKz9txaKgONhdL(?$abM%pH6y=RjiFo)qY0XVPf%}@=Zk-voBgHz z(=@9Ug9)wZZY3W}(JZCrA1xY$4$CTJ9_9oiRP9Oy9olvbxTuZuIVXr8 z_{Syy#%M%^h1{N_xG`8lA;P9io`sQ-Qb7r!0QF_8}i@l7%S*;vu6!*J}fBK|jhd`_y+ z<)ZaAf4BbQ!Fj+zJ3&kt{pysZV&%ryoR0aaoRAkj(iOxygz^8P9#vEc`|82_>Fj}j zatKC{YWg|Hv?k_dRRpf(fXTZZGT`IIkP=&2QfKA(KV2^T@4|WDYIT7N|CZ$s{@@Ru zPyhO_|5|a^fBpU6|2=->pef4pS~pYu&ENdZ^Tp49{&W1^@BLo?`Jey!yP@5A=%emr z5+Y}xS!d8+4tufogHPwGYoMiLy(ov?l;>gn+tEkd?@SN$6bavn#K0TxT&Jj|^R8U|Z&I&~mjg!1v@1dXRMkjn~SCTTjWur_WAK(M=-K?6*s#g64f6` zYVr3~fBoxU;~)R=AMxAY{`UF&M}PE3wUkp?ix5%|k3(-LEC-fL*O9u!t7Ax`K*559 z+UtA`WmRljEg-y2?WVuIUoWBITw4?Hds$ma1}Dpz04mYOc}RRJsYeG|dXvvg;?U5VvM^E59jG*gD>9Re zo!^PJ)4Ze-)Lp=vaJgsxk@yS$!c*ksW=|MqXCi}=IK6m=t1hU*AYBr`~zV)64N)y!5QaQ-;$nz zeB?oAr$TI3XflAR&cy%m$&Q4-z7{O!PCyI9;3GA5@+9%wCK2I3Bp-iAedch@ImP`2 zd2+@7m*SWO%he^ymO+qI9sMzpXE#fh!@CAc1^yEQ+djHU>hW6-p)VJF++}dhRO!}7 zyq7}s6s^{FY3~7QL;M*Y|mcV`Z0x;GUfDBdofs>E>u(1$jqwERLeQKgM9YT%ce<^ z$N)3(wlt~{{w(p&Z-_`0y}d-ODUOsx`X;b?+-MK9*=#+DN(F$^bE3Orup(fJpD_vK zkC1;T_tzhqrT?4l~+bo6MkCH|vDPvrZ30{I#6F}YgA8?`JCx0+mTW5_M z&{Q+M<1!j2s}0_z4FP<07Z54(1m8>1#_hR7b5h}`v6#v zge~!Poy+|x+VAuluuNJ?`pPN_C_^(M>4x7F{N`BsdrDZ!(nZ$qh zpiLf8tBTrze&PR}XCnNoxo890mwb)Dt?}PeSSgN^70HGFDT&Vi=NA@n=3n*TpVe_n zxI7>pjfP|X|_0EpdRJ86=kjK%_ltM^Qz1H;9u9gwKAz@)bgnt^k%h#x7#HHq6*&N`S(#t5 z2<4%+8_8M_VMRZSd$n#7#J~uW=c&D*av5>wPc3GO|ZhXX5%qmKMAYgxa8!x6$NKpC6fxzvh}?0Abd9&43aLPY9gkb-^5~f zRKvn$tSVK*wzg(5*QIVG{ZSXK!4;fz>Uc$)Lu_=^Q-#fCmm$v7eZvsWp$}%}0dtP)J7W^M)f^$Bq6qvyz&TapJp4> zk-PG{zP{_k`+`mH1V2LJF?_HHTCv#17UDuh=oj{;Daj-|N z5=UEIxI8b)cf>NS!}Azo=B%keu{SM^3;Zc zt17RiHu>$4P+TbbPu;Uw@bDm{Vc6?;U66moN@o!pi6HYjeeYgtK z_T6I2&M`GaWC*~cT6rqQgKXjK9q1W=?1P~PHyW( z?Hv0gTOpI2GzefI`Hb%1p=8;RX-ge#{6pTh zPDdu`^ZmseDtb|03LOfAHR3g~$Lr-1bd_l^Qkf3F!Ja_XsF%raB-E`3U93slk9oah z=OiU3#A}ans$prcyrpjC^NX8`qx+YC`IqOEzxu1ciV?$;4D3WTd+VvFBKD|8xp5whR z`^|vHrxqS1(<<3?>VOGjFDz_#xRRCmexo${R-4%E1zoJ96&$^_wb3iGDy}v*38Yp(PZ7rVnwtmZ|*(8oRhQ)?ZB>} zS5%Vd6O##F9fQMJ)kP(I$lQqeA8rTfwR9~-blr~hJ^rnmq(R)|{Z)RZC%ru)V0+TS zfZ1GFK~}@Pv9ztVArXiHcp5pOQ0STa20xTVk!oO*`Wvn(&85lE@W(f0rSzyG&B)H$zA zRQs2|{H4BlS5*J}&;NWi^gN!*WZmnZ8*agG9-q~pZjGGLk5B8&mJ+efd-JLsNbOs` zTb3d@o#(cqH{b(9&*ui?ph#|q{rdp@tKNK%{852kVRMeHeX*snhI(;12uUN(kJusa zRdz7c(AFzr$fQS7YHiDolOj$JBA;|tal`+N%Fa2NMAljkCE*v8_~q>DM42`Z?^)j> zvJ;S~kj_18K0gc__E-sCIqde#IDJhm_DJ6*4J?H94aDYTgrAtfpWZqYh!LN9u5Wc;7IaQA*UR|{w#1?^eNs@tZ8kG^>I>nz6!FCvh| zB|FK4ot+=B31BKA96$C=NxV@jlD~xvADd58-z+UF{7}iWY}rr3%Ij**QD74Or`i%D zpDR2WP5cYPPbe$gW_nBWN|PXi=fc6B$Ry1M{=*m7zNhiQ-NjL0<>Y}#>wS$Flka8I za$C!_7AMPgxp%cW;mwyOOV(m0`66ttBa`!9tzr!QS5Ja+7Lf5A-fqy5DDQ00+usLZiBCnKPt!3#tUzwn-mi!XgQ1y}_J1zIiW2&wSm&irOi4-FzeI!nd zX~X$_*~7w)efP;()9^{mQi+Prv9t(C zN&Z4k&xSZQchy1LVp9<+Y&k@fi4U=Cs0v~x!hmPUnO}um4E83e*r!;m)GUHQ-LpYu z>y(jgB#s5rj=BYV#bo;Nrc<_Xp=`KJE>~4ctyCCKI&7E2m)Ym_^=^9qwLI5 zJ8cqUBEj1q;)H=mfgak!06og9tgf=fTaxI`c7UQp`HR#YKgZp|QdWoWNk2k!uX>fa zx{d#$ZywZ5+cmx{dp1-3^L3}69!c&Sddwwj5K*~1&Qto2_(jkXfD8Z6zr7|IrAcEm z*h`faIx>R=9=^l>9*FVp3(K-L(%-STOvCoZK`=?5%TOQ(i2t%!i;u zoKxxQS;ZKK(!E(@<}sPD)`9;a_DOCyjt^y2O#IsUAALnUQadKmn?c`=;>Jk~x4!E# z1Pw-&cv?TkfH^hN5`47Sjvf5^*d)-|)&>?=a8;+h-(SPWy-(W+ z`?dC{{_WrXZT5@K((&Nevij;ahfg}PPj?!)7gdlg;tW3nTC_chA+Vu-tuvWlVnQD$G#ZRM^$=8&Dtk z4|RInbBu6+xR zjsGM29cjMX-Z6L={>RT>{)r!+u<_52^a}-1KAU9lyD+aF-w6L{aS%RvWgTa zZ|);LzWil!@0s92g$U&$I9m-qUcBr77r*#LuMhUKT=SwdE1!h@qydrh4*Tkg0zf)wJHpOQ1b*=I3 z=4!VwhgwPqU@Ury2pN51jl46a%-OvZ;XPXX3w%Fnw<;?om_{)!0|57a#B9V%ToJ*i zTGImZBtS9aH5pgt?TxiBrxnZ$WE>#-dTeW4pOX{vZg&nZlM0ukK~G(bS*xlfMwE$% zA)r+UK~_DC%l490<{I*26*2-hTFa>O_YR;PVXxC=ic@f~vbr)QjquW^u*kDrHR{_S z;?GvVGC7hTdlTsO3TJc%SsZ$DXNAl)WBNK?&t#S5g;K2UPz4Rf_)|Tm>lmbAW&VwtNGfUTNAB8v9i289#!z zywzw3gq|7KO5Phz@@CBZp@6cF0d`I-Cq76z$A$Wkw1Rm<-h4UPmKK)T@)~Vvc=z|( zvc!!~!jK4sfsqq~n(ACLHVuKKn=l841~QG$GCHeQ7H+CIfR>olPA|)Pa04jLKbVNp zgiL(sXQfG!Dl6rYJ_9MsTkU;<=UC6RQ)02;Ve3eSEc3jN1gMzQwK63SP2`c3ULdIkLV_qI0A)1LU&ZA$fp~F?p!9*`_VPi6#$~ ze5@UJ&m!?H+ zeDadzFI^Y@191Fv1ivy04 zxc%k=Y<^FF^M7-FGvk;eCn0zSy75rNKeck<9~ZZpd>oq){hAL-cCC2yT#lnNi5*Cx zGBlKRODN|+@4sbkqOrcZvV3>r|JdirW(yfFt@acDYZWdoe)7t|yNUO6ROgqe+{TaB z&wlo^=fjUx{Y%F`{dlTp{O>)gbJzbfy7$dgk87vnnp&OE*NSUOMsGF3=R8;Q1|wBY zfCVqTw<~4BMCP#D6w+1sW%0a@b3Efu5fP=4BV{0E=b*uQ?5B=`Rr=~ZkW(OuC?5#f z6d1Crx`B|gZo<5{#de8hSj>J!5r-zR^M1|7=*mJwOE)Xj!E?9S|Je5#fP&rxjgm@F zGV;(?bLHXeJny9s(zHij?i;RYbMo815?# zbbF>_2kmqvOt=z?d|6qWASggzgmr~*FahYb#o!z-CN+wArM2i$&U5CM5u`$d((@h_G233VzVUD&!B6H&6M=k)cc-n zvEg10J*x*-a&j`V?7t(w8tc}${PES=tUFr2UWAkMK+aA8_V!xK+z1D;%@FED+^KFg z_cs)@@V`1!{O@wExl;r};5EzreEgMVE9(v6jW_-~hLi_oN{@XQLyl>*ayz8eERSCt{AO7JV zO30$-@?-~B4{!$VKlDZ3@IZP?TvMTGs+WhBniw&y5t!Vur{ zTYI@`O3-j-EU;MyW>Ax?<@pr1#&7-o69l=~sFy_rkumhDN4|6bjvsEDGbu z3CJGvHv~u#sI1Bsgy*Ze#)>GxG;3Tnl?Rralti@5+N(<8V0GGl_41Kw51nJ~^Q$C8 zptG;$;?Ft%>noNQ`Kr2M0O{=GK&Kz|I&TrpoXZfyfUjg-acuR`oe2exoxfi-!aQttj3e-O-v9uVwMPz5Pm zv*oB9Lupw6*GthUAT`^x>x- z{Lg`xune?!-$;PdlJI|}TAp0JoBqL+to+@oy+>6siP1KSRn~~=@2EKRK~fmhLt%>N zvyfvM-X~DDG>5#_RYwuM30O_im2TP}+G;)9e$r zxEexj(%L>mtq7F`O3vJw9zTrCSlf;WS5IQulEE0 z|JVQeU(e;g_j|wBdDs8n{LSC23ExUo-(SwnRO%@o_&>T?Rm@QimZN{l#540P*IUL2 zQpUD}lceSKot|WRX&rG4b+XxWGZ#N*;zg2lTPOB}6mhONi9S4Bm`P~}9NgQ{?rz>SM3a`_y@=Jxi+ZfJYGWx`~C8l}M!G5Q_=iX{TSWzQ+b8*zFPZc3_U0 zGg^K2SBjZ!*~oV@oeu&l@n(?BhiWGndPS$*OW%W-YDb$Cn*nD9+UbS~yk6x3o5$Q1 z7Tei;N^wyzLgQQ)j(a-GNIor3Wu${hIZ&hZ9H~)S_pZWEpm^TBjQ{F*WY$cUXvZAl z;otF#_um(vq0f|nli}I>Rx^~cjT+_zdPU?k1$e*RRVsw!!$;iEci~saHq@UzwmXtf zC20zB8cp53u>TT~%iu+xy&gTKe;59tN!iobbC)`8Qj$ptjPbwS@sx4^m#C_1O>CH? z02R(mr>TRbnj1v$Jg)8e zWEOC8id(lmKX&0TU)So1_XH~zd@-?wV+cJw@jpr$kx7@;H0$JR6{{D+3Fg`vayu4) zxD0|l-mjVzIdAE?WUIL7wefGk!D*2KQ?K~X`7*vI8UXP$j-yJ(>mCMZH+g=T>Iga& z)#sk5_upUq;urYUuYUEuv48R0$6fz(GnK~oUi$yzKmKF<+rRx=3=Zbg^wRh`5N6F` zDaz|DftzVyB^4jvE}mvyp-*g+VYVX*&==0)>coakA!=QJ%#R$Z; zljy~MRrsv*Lg&SF*yl?=pNo~$jea;+rd_r}e)AGhefK4Dv<&89#B*T{YG%0umbR2Q zL};5ZZaL*+`JwbY zZPpMgumS_dFNUvLGt)RHZ=xb;BFBtLdb*=L9>J|g<`I+am@$E<{M4FgQWdil94cfI z6fVD=q?__eNx5;hC7);?%5-9@#8Q0)=6YuUnH?~Qo1H3Sf%e9tW2riVpu|W4K ziCM?EL#qUZObV+Xbao30f# zp1GDL)#q|XowDwa;3E96yZMJsHDeI2qum3SO7{1gLiQ`kL*U6#YgIIBB8w7gW}Muu z<}D5Kt-03tKL;!Xk9VXK3~DRn9{d*)-TF>MS(V+P3G4-d?*2HP_4f5y#qqUQa%t6n!gtZV<(*1 zr)IP@WYC#=nNbZQ=46l@kuTuhCNVeeLJ4*YVk4Sa4XIQ>TMxoFQS!1&i?wHAGusP5 znoj`iD3^p-RLZvq0X?;DlT9@ey~I4rE>uKCGioYHstA)Ih;H1o!p`bf#WDJ&Cm5RY zlF$h0F>O8jbJQ*vNW#Bs?mFlcm`kNG@2Djk9k78|*;FrwbVpzOuNmCwUy;DJ61?!B zPU36^gYzG!*NvPjq-zfzG65dEp;KVG1`F05lyD%v^3k#3DQlLtW1KHFc!b7e@m6o% z?o-%Xe>~bs0+=B6G=8>b1%js283cAazU#a0>XO)o|6WPJR1ZpZl=MmYdhQD^$r_0= zoVc78YRT4>x|VDgC}7v5j{B)7zi7|FUp>oAi`P2jRxmoUhaNQkUic3xBfoSEt0DhV z|5&u#M5;Mjb4d^*Im**+FTQIsae+pzaU+eR2`+(bmYeSgCJB{bROEfEr0pA;9XJu?xjSPoxCfmKmYm9pF_X>?QbiW{{PSa`9GaaPas(p zK1Qt?E52-2v5kn@%onM|C44{(K!(bdK#V+cim#=gW$!$;>3JOEMRZ3}Ofaa&3LVTh ze3s~XR_w^R#%Vb;wBF&b*7zgyIkQE%Wf|63gjhT_j@Ld$198u+K3j~{dyd33F4~KW zlBPRuELh-vItw7r`z}XZO=_AntL(HdA;}}^D}`TW5q5b->trX{pq9hhx9jrCLI#jW zaTR1U1InBct|k>Z_sHaBDDxM*9PtZ))?G?b|N;CSMnL1FQZ zX#g^|;&e_Z`jYFc7M=;*>_}KY8NBg6pFg4;479kWKb*8fzwMQdiOF@>u;Rs~|M%-> zKl|CcqWU!SUfs|0yuS9M(I4g3r@>$U`qw&P?)v{6K*Lowzk=);OtCKIWl9Z#ShA(g z&eRx~3*~hkQq*-#9?dpcnPloI2coe`Clqal8*5~+FF=8G$_2`e&RH>Dk$yb}%HTz%PxifD9J*@=@bQy1wctooc zfCsH6^Rn8ZVT4G}L;BzO)kLrHqt3yKgv?!;p}EPnbd~<2G# z_|}}IATvP#t3Xu0z1Q^sI%lEt`Dw1tj2s@wHA}5=irFve;|lK+y~J#?{Uih(&Mb6k z-`V@ry`0DCNiivmV7fhMRVSr~Mp~ivP(l~a``0l5-Md8ZfeR9(67C_<=(MIHa~sRD3a(l`=&7=DAfO(j%3xP4+>_qPeYiVt8Co2! z5`QE?k^DvxZ;xTj+3A$*mN6r9VB?uwIcAiv?Od<5g)i{mIfUt3^^)1cFJ)`%(sIk; z-phD_qN&)W9Pob4R>#3>z2K8EvSSvfTRI!Lv#9dIEf(Fp8+Vz6eD#Tcb9?Mh4g3S# z7p|&07WB>}tyK8ZjL8$$i#^r!RY7Lk2ioSh?hQuapSIS=dQTuVNgL&n7{f?z!^1zP z^^O1Od$w?JD6im+BSLfUN6VLL3H%fI$30mLeO&P$13%;>{Jh>jq559>|Fb{)v&QFZ z9s7SmXxz(S@5Aqk>W^gAUx@vXk%d`?l`N9*x${;dj2U+dciP+WD%Xg-mh2Ps3p$ut zjO-Y#7Uk=cq{rCTspH(vd*n5-A_ud_3aB1IhvWIu*K=8`;DPU)v>1=s_v-YV z|26IYR69#wn*pVx_q_M3Jtz3E8>QB@W+Wh)YfhOgjYH|Y_$;BAe0AjjM}f@Z25nqU zIurFTS5)oGb(Va%`74Ip)e(`kp9!Ko#L`RX40jnL6P#)&=W2Iy+;YeP9%C#6*_TOdmaP{QLeiqTJ1 zgUO`+w!!4C)*XJ~>^%XdC zyydf6`NSi4?_~No4u78U=JqPinF^5vfv#`~cKEq&n4ad&J#xJ`_&H~AJVL4pj)(=T z2T{k^F`eoR!+cwti|C&mdxJ3~bU%VfrqFr%+{!>29WV~`n;lItD12pNCllwEJioj8U z>G!1VYw$l+P(r9;C9tSYK=>t3jUSw?TH-@mnqZ-v!vE3HAgDQ|vF)D29y`sMZ5aj! zFZ7X|$2lIMVhhKbahw&j!P&tJf&7V;H z=YRg^=lI<9-|y$B{#e;x-m@yIzx?GdpT=hC|9Q`wseUwE6td;~bEMvPXiBd-4{W8? z8LM`p%Vi>7?d-<>9k~G_Nu(4Z)1C_%ypV)Yyxs)H-dmzQ65aWGd*of>lFxpOu1l8i zVm>=IuDz2~tn2Ige5mu}IrsPE%6;^FLnF*J<#BbK_2?nLaiDhP>8dca_xj1th7rm+|Ege+$i6knE!?yR z@kUy2PYNmjbQ-zDndr0Hwy%hU3{VAYl9jCVv;+l|S1qUR>9t}|@lDN)zxlt`k`tJu z?tNEAkUQUPb-&(&upDV8H?08$X*No|H;xU z-M#ILgL8BJ;9oy_T+%6EFb-QtQVkbEq+D?->PgE>D@wYoWG-_f6WBEnsX=tjM|z1z z4`z9n*zi%;NAN5cHH`lTlC!F>ut4t^g)&}^U$m5ArGdQ+B19u91t*7%+A9^KnmR7WwQR;3Ty^q@k1eLxagyGr%hnRXi)z3blHy zlkaqS0(Ga>j%Avk`Z#iPrrWK+a`MCy5!D94w*x0|E64nkS1~9#(Xd{NUqVp@Xe`2- zxKom|+L=?4RwxUXP9{C;C3|kv18CTcVdpGA9;N6WUAt6GH+r7&ssWb5@Mx*PmFBi1 zdujKCjpj_g?M~0BuVzB*HS$P77IBYb)jd(@%mpYakUGTDQ-9zeIdTQeil=EDzv&y{ z^XAvfEE6y~d{A~PV^_rXHD|jCopMAjB@os^0EDvG+r1z$B@F&>N(i_7c_ z|D2pCAcyGXe~KA8B24exeEQ?H-7qMH|M1C4rU(B~oNXoi7 zeNxN&2Td$oX!CU|6?$IpifRnaD#bPAd1azn`AC4j_=~@I{=S#~fA_oJJq^8onQCcG z!Jqye?hOUSiiEOLf{4iY3MDl{0R)RK!X8FL^p}&=j_(_mQ(d$~=-}*IRRorjEIC{2 zz_~f5!py{c#{g0;U`s>?uWzJitfZ7aFS+M%CPv%QI1o71sjbVZrB%z1>(wF`J2u;B zFP}^=0DLnIlvO>*d>s2TYJ}9mor@U$lNS@89y!UP-Kjthen8Gd4)&ut)*UF69IJ8| zdYPbop1TLJ3X3EbKu-GT>ve8kdLE}GvfLNwZI?*zfS#382E(YNk~A2NaY-PeX7D(q z*@2e{ODYuEV+z8*lE89(Cw*IqY#GK5s%KFCo>3+PTx8>^aQ*GTKY?@_bycRXUp1{v!*xDogK){A;$Sd{qSU#J|j`GWbzsonO@Jg?|KY zs>1;U%jjOq{k%3NbY{fqr#cZzk_8}CqIlwKW_WD z@oyg{{$+`iRCCN_5tmb1i$5eAZ;cjF6*;tUo!Aa5Nq zEn#w4o-LK*v6lK}hs<6P%Q!y;nqnbiD4>wOB%pT*L#@O8e)3EGL`7A{{8Heg{7N2UYHLFkZiTLQ;s91yzYIX zlz{908xdTW*uw(zIh={fU)ATeAKIxH+IG?bdXkJ2WWZ#Qg7vTfKBx`1Uwex~5M7=v z(cS0Kxtn9Q(vi3zOa0Vp63dc^N_zJ(wKb<`|S5j2V^e%v@rEPt!ZBd!T|$RH$~P=3K$7 zH>ua-RVAt_e42^xs6&CKmpeb*PqxCKKvG&sLDglasn8+T=ay#OM;=>608&p+*Gld) z%ZP~uCYFfAT_!2GGAY^P#qj~gKlSXgf3*nFeilQwPj-$%UR_3OuS7w`^vc{91Zuki z?V(%n=@VmTZY%KlcAzOG^*lOAN)O7FzTkw&&5&K6F}_L(WlIAc-4bYPFf`QZ+QmW+ zVkO6+!qiL24y1Y?U$&dBR>DC}P5dL%)x!zt5S57mBCrbe9ig2#g(f(v<4ZHb z+Lpm+>%N10zZxqZSo4-CoXSp{V+)E*@2jnu1yu3pv`8L7i=|V>Bw7JI zEcp;r%aJ>6q-5rv42V2StU>$udah_)QuTO>l925oOqiTe*boZR6+^A~UO~eZ2?f(p z7iEw;Ht)^Z73OhW`_yu+7!5x6m1&rVS*I~q_?9XM`4ye!zZ~%aYG=`J0ulX|o`zWF zbSnyc$PQe+Y0u}&$+ufMKQvPdKesNDqmNg#w3@1DJ}vK19uWk z-V~;JL7nqa@C=L>EAW9a_5=T#Xe@k!&^!9#l!d-bd`b6CcDa=$lbTvn__8ua$n%-| z0$b!PLYT?r+W%Qw)=qvdV|B_}nsv6^)J~qo3}b~#tKo{^l$@ZUa2bkYJ_>5-hnx1r zV#0rKJA0eg(h;zzpg0O)`22ty`&bEeDM@ZPDSc^#9XvVLf53Mv5eFj8lX9PN&o7_V zCG%7#=K~ZUHg-tVK^BYpERMp_Qv7_IlgIPU_($L$ANcPJ|ILnRxvX;fi~~(oRV6re zNqN>k8~-C5@k|9MaT+gVY<2)T@jsr5`hGms>$QKH_|O0R&lAtjYduGmH&flO_XGd+ z%TzYV3djSEF2;j{>~tXO+UNuJQeXh~WEn#Gxz9S zx6gYk*R-GQSUqq^$#GnMmK{G2iQ%2ewBFX{omKb5d|_#uCfFF!hhypy(Vyd@f%#daUrl* zRD`OguX)NqfNcVF^=t}1=c_VUeJS=E{7=%uG`ds^Vc;L`YsHj8Rv6npg3u1S65_I0 za9lG9moBhgR$>k59j&C!5@dlvjSr0oD)!2*wT1y~pJ~5=bPD1Bux02`|BCl2yB++` zAe~fmaY#R*E1^&a2zQMmf51}ZV9iN5$J@!$cBab}z=W5u+ zIRq2?ulT^P$veY)qtXKs$$h|~w!We~I=@V%t)}nS`}zI2UV1!LdHv$!q$Rnc9`s14 zDLi9QQ8SEyM0C12tt1~n*LDct2z5?ja%GQJxv067iEYPw67l&l0Qg(_^A8+?LdAcXq^POAH?E+N)bIROsRnnETbo!jx z)6lEYXTVRfFX^c&PAL7Jy8L|nhd9gr1{lo*D1f@`Lm$w4#BwQT#S`!Z8kGHaobGkT zj>;K5JYwm0e&QqaZ71Cp-MYA6>1XnVrvG8AHVGDHC80hZ>}*}^#GLqQpY;4HsZ4YS zJnt&x_)8WdA8nCmrf%wHU}pkLk_=&MadzZI_M<(tv54VU-gXuHt&V%P8ivkoh0?;_ zhZ?`UuQU%eG&gJfL$XW;<+`ISh)&d=G4SInGh| zY3ubmpa1BO{s{m3fB$d%%fI}KF8ux9|NZ{|y6ay)_2=&2Faj!>fP~Gm*0HCLb+siK-D*HAGAY6FN<6zH;m_oHh~^vB>xU zN|n;jS4Gl&`m9A3>LiOZ1CZ?!?w22tI+hBO15&EcQOD=NyDJBEjpd{(trlwNU11<* zhr{-y%YkQ)G8!TNP=Amw#j1<&Vw@E~FV4L%PifbLGhmff;&(8Z$|Zsn53y*btYsue zIDT#!?e*y=q1MI{ojB#VibR?|K!3F2Eqe+SFGbM%4D)uovenGdPL<>g zXA&amsIzgtSwgTHT`&V{0s#?mvCNQdM%8j9Lj`XcSoZCveUHwkFr(zu@|D@5CMx=_ z<~@dk3NC{_M_4xI=B#^iLD2#Q8MN+KjC1@XLYRk*jHdL5fs1}}6OpGR!OFkqdN)44 z$4YPIgrbrx{8mjh6Mm~hD>oY#=D1#uQPK(RGYfzk+xdFqu-HRS0XZ(jvOC0}QjG$5WSoSHMrxV{zZWJaD&$6QWPEz?|MfLCh{_mf^ z@0+P|RchV!k5T2XfBozC%~UI3y_f#y@l@#&#%duGAuK{~|1uLJUM6Ys&k0x{k8J|1 zCFwT1$_cg4+10m@o*^)7TATW3V3|PX-x+Vk7?=&w86@RBmJY7S^AsFMkkaujm4oSe ziTf?*Ar563acVCK`R2f@(}F&&Ay(e&Qc2^fPFQPKo(cecVJJz+U|^zTqbXBUVF~Igz{Y-<2vD8-R&B z&+TuLdvM!}$7xJYVklz`c8P!cdoN2bBS~lncH^HbD`V^0{+&LSej=Zkb0X1y`uKv& z`kaj2?Q)WZ2{MzcbW|pk^n7VzMO0Ci3;(X9EdOUXlZ>PV6GBkO=$$C+)I%@zsu1y( z=XH|diq4p@a#B^5B&38#Do(#WwnOI#H2Pk-$rMqJE|+dInL;}6pk2zEb2w8UKUn$7 z)8B>Tj1>({m$9R;Y|k)af)23`iL3(~7TyAe^Gklk*f=9qaYG@Hwo4F0?LnT=y~hOG zeB$Q5M)9U3CO%*9eA8O^@%eo-)wg?8ug3xOU;gD^>ciaiU+>3L)p#K8r0u+y7+*$< zl>@9`waBc(6x#*!vo;%{)_Z;T!W4GQK$IcZ5RIa8Wpg9Y!Cp%)2zmQr@rIDhz&hRS z@$_nCCBlu+B|wkqZ-}+R4m_`Nu&F_PA5C;;SIKC}Ft-xqUn)JI6+)AS-CKXdDa^Q%P%f3Y3#%lGgdHcxZ`=0-Xe6HG)YCt(`nD>Z9>PX2Lz^Y_AH8E64+T8Qa_X@41D&Ze@EUral zK;;TBe?g0T@1Em*VZ!6G80b~;wZ|YnpGd(;Pt&jSv;xz%W9FyAO8b@deLO0Be`LU_ zs@8(gT2i+Sl`vu^ndOP(ne|M}%lJ=KB7D;04*Yi%hziEPlkfg!E(ZH}i?d%+>5S`D zQ$atYfh+7>F)Mf$#Q5+{U(hzAHWxCGAa*L8BpX*kvnIjn%mYyY)PxWFo-!6PQtYk(%36o9(6d8!9k6zA^ukP4Sg1U{-cI2_Gwfi4iwhH6L;xGo21Y(x`pO)6@PV32#E`Ez>U3moFUoPm(@~OkFa^d5?3Ne#9&K zx03)mbTZ#X*{i}7m8}$T6UON);QIyUV&_=!&=4OTp3=+7%Qm>G3)Fx+Rt`lBAzoaX zB5A3O>^IP{h#}fiz^E8&I2Q%ch9xNIz=_G3hz6NZGBOJr4AXchfPFt~!{KxW=@4&{ z){=b4PC$^y_(~DE5E;7mMS}U?MDl@g|mQ809p*=82pHA@r55f=Ft04LWL!bG+t|7W`r-s_k|0+dX95IK4xK*a z#{|EQ0`+(JhhOa@r#N}xAFPI!w+>E5C=}5)18yw?XVNbGdy)}C(@J?`$bzXI)7xAy z0W1?f3tl|kV`q_+JSG(YQNMIN5XZE+-ROZT385{O^2Ui^pV4w8&wVOv2_=X!#K{pk zv<2!b{L5o_5zHD?29GQBK;fN}$X;3?q`VqK{CDmB_`_?@L@STi@;%K)pC?_sulZ7n z-{iPH0?l>JRR?4O`u_5zCwdIl8N+5d`-4-Jn{k^^?_6g5Xx?Ycrm_bAijzeRvU1&? zXgL0BU;Esw+T}9$(S23Kw&eAr@2|G4SWqa4EZTo*r-GCB#`pMdbohxmc=o9FAN|oE z)qOM7FMjch=OLMT-48%_qLRf5J{ zU6U3WK;bw<>&_11eP4`X4SA_e@$AAY@DW#L^&t~qPXq>?byMmDn7Pj5<3E;>{-tY1 z;iq~$?Y~ABU8_oJ2bc3(yB{)nY+~h0-=4bxAD6bMU;j-mg-DJFr(PFvfSkEuF)aU_ zpx6U=B^x2^lbj6z`{m3sgGhk;k>rpqNZ2)dLz~1mPEv(RraH+%Uy*c9uO)m}3cYg?yzIkUj^u4!EUNLKDYCFf=YbE~Dr7r;ZS6em% zgldw2bw;0H1p2?cM2a{jMXMS=0?TJ0dX!y@@NHq%h9lkd2_`1f^oxF4 zYxq>HlivBS?Dv(4Si@-SjwK@pCpV0`^`^wTU7>^e=u$=SWhalx1h6p>K$;cv_nEH_ z{J+0{4NciSALLBXrEriDf&pv?jo~09D#uDk0*e#q*Onuc;Y>oPpapo%xq9b*4}R;l zMVr2Z=v^M2R+tOdFso!Kfu(}-bhE1*?xM#s^-(=4S3+5d8}DF&shA=Zv|j0(>${H5 ze>ldg6aVMZ*XP8j7*TT!&M{12C4Vny0?7sn-{Sv$`PWttw#XezHXRQ1zV6E|3u6|v zs$(hUi$enE#zOPL=wxUbaB&BUvmugBr=p|_Vx(I34Tqnm(cg?V6RZ)u9XZ<7R1x|Gh`G{`-Ib@2~&#IjTRtEI#lb-@Miy)msZ@X)0h(IXX%0n^!uN zBGYbz&NCnCqbVgen2K9o8YrO)weI%rTZT)A2U5nX zeXhAAna>wJV**xyfr+!_5r>%^gL4ecqUo5ZE98_4j>PQpONG|6v*3c6S2_KX4jIJC zN)6$4BSU|V3mMd)rR+}VR(4)WGX3JuWcGI8W5AUp9dTYt>OTEF$!e6*q39=ZcrG^M zSNIuat0)OdEr<9k$0Im^!`l+2I%iVX^uH4R>r|2+)xCg75{T;QKiS)@^1I&i7Yf9- znmTPCn{z&}dIva8E~bJj{0B>LS+_|8a)I5tt4$Rd$Q~JafkY{``3kkQ!@1?ek9RM1&|JX+I$-AtPWm8 z#G)8z?9k^#X5YwUIrEnVW@mv&ryxL{-44A$V0z42EJCJ`mU(H zANc=c>Hqm0OaI9UlH(OA0FX1>ZfzEC9 zAeqRbCPwab8B*!*v}ZM!Duo;vD@U`|5`?${^6Ohp8xp*aO~9kP1ogX#R}4|h{HGyA za+Os14tPh-Gto@@lxD@#YRA9VY?Siu@hNe%llEC^b10hew+W9!Q}B(!?-~9fhh7ts zj%4G@h$fQ^A09K;9szm25Zem&vL>*inkNkY9w)ktKh!4!FsbWI*jo(X&(_`Upoc&= zQzCG(+aB-c1YtSb(^qRWN(_J?mRO^!T5DZVtkb@SY<$G2TvEQouC3qeb!)Gv(U^pl zL9P9XLiSOX{GL;i<7H7S?FqHzC-*S32S6%gpr>XULE+qIVJEP<>ALwTe)!LuwD}1Bc3GfyCgIHBJ66aWgB0bAxaJ=Yn&)4 zabKZf;h#RK$yqIb^u(nsH~ZTwIX=#YYI(*hg$U*KH}U_#XW{>P(a%&E7XCr1jxA1? zNzb`>sX|e)f>R#f!vFZp2hM8xQWtc8e?M(FS;JYm5dO_sjaI}YEx!N0W~rlK-ASDl z6Bj$*mXCM>Lg#s(I@E0C*c;)OJWy&0ECK``IH?~0=!%K>cX7HD5qJE5)P$E#o2CEq zz&zOUlYl-es_(z|(myZ$kN@}&y0Puxp_k`)xQTaFEr+GPt43N-DHo=kpLi0ZP= z5oTqz+Q380I+D5h9j^1;_Y(MWhTK9BT7xzwHa^^qgZU;0UM**PF}mQo`A#v2e=Spe z;W|H?ZDf=iBb|50OQ(wCIobBbAbbTBXYXacuS;?DU79F#_fo3!!qJjgm+ zWNFUk%4!ga&ZOicCOR1?CS@Qq^|`}5_oYT3gvpub z7nFMI$=jEDPfBMDMaN>|duXA#4^opC`NbTD6z1bIsJ`)E^ED$vTPLCUQ*avoc>0VV zbI^D=A0kzUDCLBjpL3{g0)d~$rWd%V^d4@ZR%r5evgs8qI|lXs@oIcNxXLh4z4Pz8jDzJ!X5N{eeXKcl9c!Jalhk~CHKBpSB!2FB%jw@l3CnR37n#hz)1quw}ql^M)yO)p&%0sfuk6DSL1m{qJH~Nga_5A~@Cw{Y* z?W*b~RNI6dyLb?zDWr}I*`YOLXBm6-EWy%>7@0Z?R?P&zS~$3arc_sq3<~DQ-M+@% zO3xo0nZ(#qCKCvm(v`I7M`{^zO@9dduXY6e;Er*t=>S+2)1p(gdcB;LI-2sI0{h-K zcVw_{c&t=!%$?ZuBpfJJ{cO9Bl?*{++MT4I6TTFkTPKA7N8f>e1~HJ&r0iT?)WE!w z(K*(xxVdK~qd*2}b@m-2M1=(5G#w&zI<;fK(GH1N0!B7>&gkVo2JYsHdooS@W3uLs z^0WdF@eiq*y*B$E+Z^<7{O61$^g{AhrcE~z*7>anxI<}$^waO~ zpN`ZsjN^AJE+O$Rs4IrFxoPLN#6N0vz2pC$M6oJdQFKP2>sbwG#5D*19}^13f2g34 zi#L|@Wm6Kz=RO19oG)$tc>U~WKf_PG?&qjJuV4TA*O6o6Q`WfJ!&+#;X&k0A7 zbd5wrlC=mr)n1$A-XFev!ChhH(Yx#W1Lp%}qr)5(NT9E_KbQ-H6OQq*B4u7tAF#F1 zaqf3Alu%aj4gJ2Q)9f|nmxhXVY3ziRqHJahIYorA)ngK-vSsb9Q-2(5X#`X_jm);aOwxJgTyI6#7w_3|uS=#!eIQ}n`}LUARyb>M?sEFA zJs=V)u=tyCtAijW5T?Y8>xC@fX@cM+<&cKN`iL)GE0^sd^E_!>l1x;il<(>dVBlvP zCoZrLMViW`N9a_;;cG$=ZR*6pRUU&0+o%*ec|h0N8>}|&6_W@vwP3KGn6JNaeO5*4 z!+Sn-Q`?=Crv&1a?;I>1D7|7b!E0p=-whmgXGTMfovwqwkQUTF!&0BdKci4%LwR(^ zSyiimHRGbOlOy@L#4*%xZ-$R#E%cSu#xN|$&;kF*{LF2{Xj7T>oweHAK`t-f_#fAZ zzH%~NDl`cKm^VtqT$gb)RRc^MD+HX>5+<8|8y@IrUbIT<~Pw_#c~m z<^f7h`=^O0CnMrsSC@q~HNicy{436TiLsRED>8O>ySNF^L6P!9UcXU z6HcbREINGudf%M?{4&)~y?*)2Usg_%?~3Ye-~N+7`4b&~KSyd4M=Du693LIBlMI`+CB8C<~IAcEYIspK^zx~;i@YMX}l@D4~#6m zWU#D0uKq7a??t(c>eg7D0D{U91cHwbO`m#XSIb4s>DlsP9ooUO`XQWRNAq2!U@+{? ze`gs+}efGxijgZOzdRgzZ-sDtbI?$udgo} z-tEB98Y}NWy|7wQNvjCR`*mE*0k^cT;j0x(M}nF4D8?RbO{IhwcAwo2VLO;MX`2ld zTxFH{W$&!&4J3kID;aLRYH*`TXwgD}&*+L&_He|CDJp#_V79%GKQcZcb$<^GG5l`T5^6 zPASghVS?Icg}#KKwkbM7SnXIO=_(4A6NNe|eGx?3JXW$G;l@3ZC{A>-sGB+>!M|DR8Xg?~H9vZ>fE+g5GWF1d|0C-e zdOmK^olKr6-{jJNtilu${|JF9@NdXH`g(nXe^$Ifb+ZHaF!(Pm{l_m;H6KsK*N;{G z<(J+p5T%Uwb5wc!U;p)A*>zp|HFgRW>{j95MN4sbuE^3EURX|X zCzKU^Bg|ljbsv*gh8=I zm}AXEArcT)J4~A?U?)e^un)9Fpavst`6_~+d`7ONT{1B!I!{}x&_cvDr7gizaa<4Tc0~|sWp027Z-SJ<Z~P<3?lrg74!3b~ZK9b(qa$HfJC|{4JN>O= zauSn3@?OAOj@3y_kI~N6avwfB^7vN{Z+O$ouym+ag^Ow5cxRRIKO@1VFTW4+E#;(8 z6-|joFQRYy^Cs$UT8wMY8vdGBnP-sC3qA7Z3|sOzoq%zUWcJFjkZ$zYypf}V$vzmd zd|jR+GM@~%h=0n-X&kG5J9Sf2N{l9v=fv#THSnrQ9#PkY&HCi}cEgYTngi&{JjSaD z>>HB}j2G?%6ZsxUpIrXmpMj%|>tcc=+hXpZZyhN_vNmD0C9$+VunJ3f4%EFwXwN>O z1*?1Sf8f6&2$0mLvF>F*D!s$`S`^-zxQ3u*7VBfXRv&;vQ?H3(`e?@!2WT+cw6!wB z5WwwegO^YVJWjnYpUf@^u+h$sopnJy&w30 zy$+*Y+V1i!pXasC4r~_khQS)q_ue@;`RooQHk<_o!Dxy`KmnB%%q+_ruaqCU4nmT8mY4Ck{p2`3+&%tKZXj8vs@+v+0-c$<+n zR;{HZ4M|r+NdXzzJ7$8WB^0uf5unmc)Uy6q_BlVJOgWV3c(%NX1jlh?@h0)e0Ar|d z!lm{)=T&MtNp#LA=^{?J-mAG86ay~4F#>y_-8Na3a;pj*!!%}bi_?nI>4p{3&l?Q# zqgyY#9C;_%*hDpYs4HRVPUFIESGpfZ1M#CxAQJVUj(4;w6%hj9Dg(^FQ9bc4$i+b2q-QzaDAn@N_BPW~LL0QP^(Azn0R*=-b=uxI7L+A$I z<8SbUz$58_%5>6-|165oR^&>J*EZ;k$xjo-VzF_@aZ^Xxo|Hshsu=KLqvjsf`DLo- z^$-8>5B+|Q>ie|+@jw2@T4DUSnd<#`D!$&2r<$dI>LPBX)+)!zMc#i)v(|zMSb|@) z=wyuF_r~b^=!@JoacflQ7~dOpk;(V^cY6tp6{uL4j`<) zH&68ZjWfVX$X9Lifu^`#U-7e-9fh3UQpVk~+n61rT{n>&B+dBE%uWlH)cAaNNjGZ- zk)DbL3WZyS+LzbhZ0AakI@?Qgn8ZYhvha^ifJ0-_%|xv;eNqs!suBpyGwGhl2uFD0 zr6~J2`1kk+m;Bo|-)L20U|J%{yjkI}P$D}}HUZ;luM(ch5s(RE8P~2OjICShs2oUz zjwT^=H#;cRg?}caK|XJyE9!#TFL{=Ff>tqGRq$khNM3!Tcx5qZs=l$1bfUJaN>c)u zLQ|Czff2cOm8cdR_}wI=Eu|dUc8NGVH>>J%Zkz_P#bKfkIs#8yh8Iv`z+ zQu8#1Y3ImLDYtu*=9mNWy`*p+)5L1(B_~!(r_}k6_g|$+0{;{KLAynbc2N5nVd}>J z5df(_&WAhj-yyi)Hj<(P%Or-rCL{=65ue2?aj9M=HWSZ{&Q;TA1pH+xHlv|j`{2I4 z>z}XR{`R-^Ui$yzKmKD{72(=$DVV&O90AU-J4Em`=ZMUwht+2=sLaNnlQQL#$E-dU z8ifCFe_a#O@MlD^Ld5kdb*YWzDAYZ!azv|D#iNciV)?~|*u`xvq_$*0gyGMPQ>B&+ zj{y+%DpfZ6+IL7N*G1N`7#Pc#re;+;5Ca<=?Dg4lQ(79t1&|t-=OqDD1~~BgAwsFN zw0D(52RH0=_-^81##vGuiwfl>D4z&9VGvRJ4_wO}O_%#)^0j8DF@7HF-p8u1J3)hn zu8AU2kCf+}{dIhD?((L66toKp^4%~YuPJVpAE?_?y`K0a7MH+3g%kS6WEajfoMgyG znxZ98%fqzuE-aTgvf8SMWN|87^26{0NP;q?+XvRbnB10)tORGgN`_rk%Vhq_xy6bI zc@FuOIgM0Rj#2W_KA0Fk9J|B#Z&z_z4~U0y_U~UM89DZ1A8cTB4f0^+7)*Am1j-%R zeiXdt5+-cQ7o%d*)5tSs0(c5bs`5rAS~pncKoMFVclWK^N)(^b2HWNe)qe&nAZ%-`J7hBeK^3?&P3h_WuSpF5v`QBZ@pZW=CHdh zpM>=lQGMhQUAy!h!EKMB-A+gFejj{I5a)1YPtM9Gxf|>@66h1$Zm*J=rond0EDZ*1 zzhMKm)9^kGNSM5Wjgo>{HdIpLsM2F=5&#qKR4I89&{zu1)jA%dGGB9!G0pmA?y?vQgS_ji}O}~NwZj&RP%{f8k;NLgh zjQ;AIMmUK6Y#g|XAEP%c|D%sTnvzG27^+HIJ2g&HP!T5fsY29b8NT!dZRQCUX`*mT zMgAZtxOAKf=kh0;O8lD-uHezs)o{*xc}GGc`E28#IsT+e<~2?*28n>M>+KASmx9}t zOd}X^uNZRi4`y4#`K3DIlGT9`PJqogH%S`4cc$Y@o)k{Kvj)dM5&!RYXnXR4@XyQY zZmQR0!#Q5b2bUW+R1|TT_5OV7o8?97OyR6#2ik1K5z15}d9#iKM3Pd2+jaZKOtKw_ zzSWI5Y?>#JFi95CzLJ9wv3N;aGr3t+WMa=JU4odLoE5{5`=2ZR`Jex}=4Pr(L;jpM zQ|W>K+4odbpJVeAs?RGPNA=lk$A5(|mCh(7ia3gY5z!)dWcu>meo7@cd|*W+VvH&x zHJCU_O#{Xyvpy*TjBH|^Y=;>ROd-Ke;zy)6jm(ryMK_*XTdrvD!$IJ2=`GKgHadG{ zyDctUd@^7fLib8JyClemC|l<=uN~9EWRNmM<;L7tuJS} z8oLRxkQ`lt;OHg;wscWTNZKIbkM{hZZ4}o2zG9Ss5{Ia?%}M+{@+UVLJLcX-^~Vly z*}kmXNt&v@#XohYwx%WBh0F5_#eHd1K?VMq#KXa~u{r09RC3$gw68-JvhC=X7P8d2GrE-(C1__J#{P_vCJe z8IOs7+lukTd^vDom1gmn-}l^1RdX{{|0tSDkMGyV%~bE#`_TaJ=cw|RseV*cAARZZ zRET(15L?TE;NzD_72ln4aYW7<#>p3HK1b zgLvfDg$cNg9o#PYZXGZf#azc; zW?=N-a?2qP8F2NZ(1zkYBp7lb7CHMR;*$Gp*ZR{Ji$q26rNt zt_J_T#-SC22#A`{IANcI;)?o7;7cd7m8h((tvmATNzbK!P9%)gR;-~K!d!&KjekVU zkh*2E;Tp{tbF!XhDs7`-LPjBHq%^@1F?<-&Ur}RCuBM;GN+8V3m_Zq{!Gnc;vw4Tj ztkm=M7cvY`58F>cx~Vgn?rqrIidHib|BeDOyc_@PyYTqo(ZGM>|9#%ab5x(tKl|Cw zo)3Th*MD6STrX$LX$7h6uof$Eu0zUM81~_E95}zTEINeD=>uYwUL^8Uc?=My}T&! z9INs&r~J=yjBvFFQ4EEjhpUz%%>gkKV9lbbmfL3o_yY5|sjDEFwTWcx84T1li4uZ< z6c&*Nw)fO!!=_C{;=QDQA7c`&8ylH_?z=!8|hRUibG35ZIp8A4+l1=0)VF*%|p2N*a?^Cp6w@T4JE zmF8T}z#YEJa^2yvHk(WzwJKqB+}ilJt1uf0-?>SpT~HDc)WwUP;3*~HEud5;u#z1x ziPL%z)_ZS_sJ8z*0ZbMm{ueLh#VIe!_;(-DW0UFl8J=a8JU7OX_?HhuW5%q4thv^( z<7!p-AM#KjsMukmVMHfI)a^{^e6_i6`sqmM@D2V=Zkziy{t@^O8xPR4;x?LcH@#NX zK5_OD|0`z~u|QN!TQWg!EPK1O(if}AtR+37eM9H~hCq40cCH*F#<^$PslH{Rug|CT zTC^(sdvod(UDPk}KYAe6BWt*j`Xf0F08f}fb78G;zXXfku_NUc)=04BSbVj$49t=C zGI~kyj+k5cz2^g;qxxrm_Giy?RR7^0{sDjg_kaJ~&_5Mb^|un$U;XM=&o}R%P<=n1 z>PG`lWM zUuoU_y&(+THq-bYqcUE7c$EyAJEHw}zL>zyVnbz1Bac|SQlIe>{_AE2>+iAm-j9|Vyc4Yh zL9AfYiGK-MNvI7aEZDkHMOQbT;S@EMd>^PhsJo1sw`+^2td=g`GIhA#UYnH8Ei=8wah=yEa`1 zk#+5f&>CNz3jPT!CUP61HJzso=wF$DF5M}y`^HaudS&yYw2gl`7Vu3H$)t4>@J@e> zNRDK7jy-YS18_|?cOPT<@=EFW+Z-RvGX9U3yv7Y@PE@&qi6>~sdYm!pwjQNShlf|* zN#`H@!5=g$s_#9je2yx`oo%QZ!?$<+|EQ?eG|<=MshAK-aYtASI$`7g$KKxt-@9IC zVc50y|9|v$&Z%VS919O779d;pDL7cd1I9KO+q{_I7mQ^{nwgT6Lf`{TfwZ)aE7Zw^ z5*+NdnS98%d}zO@HhgQ7W{5CJC!MJS$p?q2m5y;dXs}dSs*WUEI%lu^p66cIwXSvV zeGC|EWcl|<|FidR@8`Mib+3D^Yh7#I_w($T47zq(bMO(v&u@yAswh<7i?EnyRHvm6 zwvyYsv=X}aR(K$H;@?9kYdUu$4R5=9oMfJ#Gl;ZSwq7tMCuV<6t{bt_zA-sCh_nbr zkvSbwiL5RI&QP0q@w27+YoCAh;WMb$d#|Q2>t^smVD53uO&?@$0YbBY?cZkImfbKF-GRUFRlu;;D8sFbPZD)J^RpvKR0M`l(Xn`r$Qo=~uBFE2fW z3nCCihb|OIht0gOclF8Y27^UpZz;&CkZb`xI6QAh#r3-J!e&5))#?5WidSR8S#noX zVUMCI(&{ecqs?I!J`qa223`y?nh&r(S;A>9JD7=lu^-A~jazkhWV8$IH5+&h|IYzc zRxQOaA-E})tpT|Mz&KBHckBPrftVAPO+ZXdqFf zE0iF5>qFkC3uX^tYDPzI{j*Q{yc9-;?7q|x2G=stl$<#$z`ceCjwK6w=5&NfDy8vl zNDjMEakbOQnQ+j|JiL;BDRk7r2g_JOmmDcY#RCE5OKLmATiq3R=r8D1K#OR-P)z3sxl>>?uc1(iXSiQL+)J ztGDI-1toy+a5%RsG255YRg>wiE4_u;XajL}v7%LHh35^kc3X)CG6s(^{u&cF5F;j( zt0QCQIAQZ(y>s|Pp|-AuxKL0T6`8JVdwYSKCH3yt#VVz79H+Skv{vWtzfAd3j5pFn zETz?Sb*0_q^1s7n74WCUr8IDcaZh${s?Ppf$&^`67AT+RU6J~nZ89nIqzE~6ia~B} zu_SFv2MM(67QM&0w-y*qh#$e04ve^@cN_ruO)vAC|6khX(|n?hU)}E2W8H~;_I(k= zkWZ-s8c9@usjU4UojB`bGl~)?){_|Qdd*Ae0uBD7`f465n&x8_MtAZJa~hSnWy~}S z5iQwe6q86zHFM- zNm?9F!-34*-(3ctX113@MJ1jkLP~Uc6=Y#ZgU7&VA*XkH&;P@OPs$?yFFPr2u*hrs zf5(4L@`(TE#TWDc+YF1p@b<9uKXha7<6-H4=yBhpdVYEQgz7^nb~PSbKx~}5J0TTe z8WUzHZ&;#j-V0{++16=}cKQM*%u4yNIlaT-DEBs*#U2s8&jgX0 zQ#%AR?0`?XSNwX-J5>3Fz=hI=^=jj{J+%znFl^u_Eg!*dD2#^5`v1bV6*Rlev46)1 zX*zJYQ^1xZ;EsQ_?H*=O^1rk|pxJ4q3X-khA3X^M_(Sm{(`~JmW@`#8>n`e?bWE5H z1&3PEu0O3;R%MD@o&VjvO;kdI>$Zqr&P3_XibEb=P^^t2d>B|T*(e%Ok`P6w2bLf#XpI%W$ zn4=1#**61p%eZuKTOmXzF*(M=UX0Mz81_5fH3LN`&Ht$@%y`iv&?dXJOVHw15hR10 zpTP{%|8mOX%NCYCg9fOOUlT8QibMvLb;TtWMS6|JF-Tw3atti<p~ z9LI_ngU}HXi1(!jO-tqEVc9&lC6w7EvBmTpn{iZbn}$i1Qx}>XvYq>l=@d0Ww^!Ly z5jK%kD>YOXH^KH+e}X7bjl#za?(fJAbHHWFHH46^rD;|pT~9qupGXEj_zFxmF>7=( z10#mI50m7>^a&1SkS`GY1Gc1y{)$6Qi+)6y6kHiHxc^fY3p;73pJsQGmB}I(o<+*W z{F&PB`u~8*vMawH>JQzx5|C6TU;eNE=`{F}H;JMLkxDc)M?GfxXJeTNQF@Y|8r$-t z)YNcZdv0*Xe^x@J+37E^Hj#Jy-x^PgS?CDluh)u9$yn&1QvHO3S@8ME{EQd&oSgn& z*A3g={GV8(iHU)x0c_W6eiE?33R&C57XFzX2wMZ?y0rhG;gKPm{|kS!$4fg$dW@yt za@C$=W!|J~VUxI~*H+u21aEzsm5du+c>TlDzcldCkA74tdElVuXZy`mZtTbV%kgM{ z4}S22PmcF5zWCyk&wcK5Pe1)I=<&{<#)SP%6+a`YpM4!iFBs0eJDjKCbN3_WkY@1^z$(=E;I_d?8F50q!L1kAI% zZ}+18yn8yhf8Eeyj%I9nGIEd}1vUekvz^(31AsbCT4E@(R~u@NQNzH#tC3AF`1z{9 z$#OE(1g0Wwpyx+n?dC96U>eZ26ki};qf*b&Re%Dgv4_+C)>v7cyKBs_N!jFgXCeWv zM#o$&C3V}bCG@nMdx{r)h5*KJT}xgyhwT%5PVOy96+qYdMJ&R_pRa3XL+5i^&i#0K zRtAXiWp61R4wst*sprr9KP*7|>puUy+rJ^CzMXiGt-sg3@seNqZp0UVZx+sE}N_HEpM)1>k}wVU>^3Rny!fySg;63Oj0#4;OEWo6mg+vHSlb z1q!YaJ+9&ZMH`$v(}>c%x>d#KMvtJD;*R_d4TWQAzPdqi3m@kHXaKv~Px%VF42w;t zoXlL9vH8EDXqs<@9t%g%DZiraMEUs|fU1b=_9a&4ws@GTCs z`aydw`3Ay9Z<;tZ!JXi&?FmHF{v5ON0-92NCe@a#Tilw8F+9oFmKl4j;8(_q z=KNBk>Hh#M4Pzsl-7EIM2ZC-R6(2wT^Z($7zVAQ%svmgx>XnCopR3nbv3?7HuL=8Y zfTw&@djfd36^`eq9(Vp9$ML}bdX_3Io<<|tdQ}igslMGMb*;94X?%gM4cBR!6z3S( z#zHXnh&A+|YL1$-FX{XGJjTSftY#b5R&L+&FGYTR?(O^0We#9x`9fLgILDP`9;TZZ z*EImyjD^Y2gd~EXL2Inr4jXuSKmr2KrUGV&k}HSIa)h8vRuBOVB2@W;5*RKMQ|vMz zk!vH`EuB?mA!m0rs-ZPPGa&*?Po3fwkdivgaY<0c(Ym@?jtPjcdQT9MU{Zny51Z~w}Oul~-b_~LiPUGV4eMgPL`h_}D%;pID@ z;8Pz>{JsCjHU9e_yW-{lUklha)MUwSpi%HU-=;&)8kc-{5&d%efOw}otP?3WE@Cz9 zUAPE+w%+HId6zBD|6SVu2UyWwI&mu~iSCWm8=7Ba%?6A=4>D!=(}~sWmfa*pX8=Jh z*IR5x6M(k!>Q{gjZ60CO@~8lu7e=RW2n_g?4iPi$Q3%8T?cjHvToUzoeiMF}ta3rI z{bgU*Njg!<^#4h4)>zli3rcsicQl-73=1j@J6lkJzlg27 zqCt-QX5c_|r#wV;$nyW&gxvlA4p-<2=6Fqp5kvxWRk4=vX^*U+H$s-~%@7sC&NtU} zQ?l_OFNBpWw0C>{UCGLXX33>^)#GiidJ`S`bcqO;qZJ!Yuw>aYTu3@^fsPj=+mo7- zm{@_AmYBvuBDzuZdq;sBP@4Lm43MN7J-MnJAx-qWL1iCYn&mC7R8^t$U%qv zE1UJPz&aD^mJ>0$2<%sCm)5i|$FB+OK*NTZ$Bp#qGBhe%JcPS=b)*b2P)i2gl|Cob zpg>caIzP=p{?@RrVG^&CP}SO!TJI;>MH)*F|3`l=IIK$^ZwGkH}m6g(tW-o2NdWYh$(*0 zUwj(h`oBC$D*j22XI}`s=U;w;Kk&bMim(383nV`lz#qSRy<%0HI;&ciUtrpg#$Ln8 z_WxXRXHCpHC!=l9;#oF8hde^gHDpE8p_1tUhD)P%(sp}`4jq~|K`zJX1h>4rB!*Rp z+>Wd=ldNo|C#ICI|CARJ@(H>@UywC9PBi&$|21`&;%XS-f$7rzUvnTVwtoX_&M}+@ zKmEU@O`9vp-u|BksM9XFl>x%x^?D^CF06KhWW!Y5`7hjEWCjzw8ng`q>pE^L5KG-J z0ew*4FLDG@@#G%tvYhbEz!>p=Oc#XswphSPlsI&gPSA%!iC>{j*l2rai`yaockS=| zy|>TgXW^>N<5|tlVHMsRiDoMPXBmWIPSb();Uvn^bGGV~pLA&H&VW^eKz8_ujw{iL z=*8oIaa7JkMU*%O_{KNB@x10OZ+Xjk?(ul4<2kCwDaWe5cYPeHs3xg(9jvBO+)sb{ z(~To!H}#$_Mapn0vCp~9c8z2)Kv+hQ`jG{Y)ig1+>i~5?=D~HLs-Xe6$yZ3X zekMToVP=1BS8&r#J7bP3%t^EbBB`5D|Lw(z9&CM5r-f%y#|H=5y=Lc^Gg)YuV?Uef zOzzH##C1~@hSGku{NPMit8VG$7Kzt$=-Kng)Tp_hRn28j7yL^*t1?PY`rV^Rrf5=M()O+NL7?z9Txca@?w{0fzCy!&rm*B zZPEi}8KEIw*Y7zGw^+I;YL=ZrTV)|6lT}I5D>SS7a8O7k@Y3zBu@ZuLe(<-fy+n& z^bb`ObzXEq4$}Q_TOD1wlf0T8pM)@MjzM=wOj}o4Mz2_56+lal(NocKTo6--W@n}m z`F|w_npyU>mfP41$P+O!Tk*YgyGo+uvavCK>XT%x@LS18byr=l%Lz2}|Lnfj<$+05 zWAsrf10uCDBOf7Jd5lurCVSmR5IrZJcllPZs7niD)C}iLdbXyug~4K!)a5oVdmw}! zciCU%JeD|_$gvF}M!ysH%m2s9#Y!~myHfxrCP&|g46>YS2^^hb!^ru0clQFj`1r>^ zzPrh>_4F#af+pR9Ph7L(So*h{sk}}Nui~}A%7iIod#wUGG=?I49d0#2nwU8h{@rc% zvTS#GcPupm$p@w$WjyrA8pn`%)974uO>~*hocH`P)vL{1OIP2wuQjifDngxt2rFB@ zPQ7`|P8d#D@nF{oSPipUxPn$GAw;mU!H=gp$b+uzT||M4UFZFSG&ozt!bqFeET@f> zvr6^q=N!QmswjcuqV7)>YE>hsm1zT63LD1ilL}d^$d53+9jw&YnX}L%u{FvnkCw@7 zPNNgs<^Ly4>EX~>V%u1HF3<~wp}=Qlh1F%upjN^K!RYvR<#Ji!QM&IH+f+BED1K$2>2F>{5GwaUS{2WGXzmN2`p3L0$ZqHbNpx9HWUDx7z- z7(~gFwlgrg|A#7TcDba89t%Z@k}GBV<+W8+=d}X24Eg^WsQQT_f%-vo8M)_1<^M|f zAYTRxca)+bF=yOy;Axz;Ab=VJ7_+m%B-x5#6EsO8iq&}z zS(Y|MqB-x5-{YQ*G?@dvr7Izh&C`&s@Bl}U|je0!+ts=>tY ze<^B>-Rx~1W>2vAKMUvKwp(^leY*cIMQA=1LrcOuZ5-Q>)z5q0^PX1Cy`NB}XFil& zaqsxlr#^L*Yc&Y#$?5=9h<%Bn4{QW%Za@z`<5Zbx2-G$O7tXeIuch?5xWOkRN9Rl_ z`0B6IMDEEYaXpW#B3$mY{gQrY&O>1!A}qIdh#-U!FFun+mG> zy$Dz#xVfppBS*ucYgX*zz@*<+>3PKwOfGZ%fM?X0eGXu=Kh0o{ub26=_M8#uZ?7=9 zy!`;LS?vb7ehzz#LWS5yMmdiEe#P&J_^yBVDSq>JT=2}B@Jo6eg!Nx~|1lAA zga3!+z>VGIw?*(@YmC56jRk;jVS;dtRj;&)YRLapm6Uhf_<#9kf@9Y_S)~zEr^G~G zrBb%bi8S{Yk?ZNd9rJufuam1Y!4L}zFtcw`we-l%!P{1ix5ofhobACP z=JfP|8mtUfiE>(5a&^%0zZziIB>TO%*J3lG^OvcP?~XmH$8r3G>KH*CUQsMwUwkeWY;B)*s^*#bE_omdTks_vw@yofy)XTS4E)0m(!|Kcu9Xl8lq7n}NZ33n@cYL=VJHu@WErv_TGPce?j;p(;W!I(5K%mkKgzW z7kt+bJcHl-oq^}xR+Wuo%okNStFjU1cTt?%YCj?@8NM`A!>u`J{U!)BOZT`jBE`4- zg_aFzRfS%vq_%LJ6MA}37P=Cpj9v5M0$0XXc?*Tpgoa%)^C)!6n2f7{>1g-<^<7Mo z5u>iPMofZa#fC+c3?O&!SNld>*PNsHj$G3nsQ-wif31LsAw|a)BU_=;^ILzBl@iO!9Lj^rEiWoyM5R?eG0?R01872T z!@(MD?w@J=s@mXAlYU(ry8iA;_)4s4dxKao)JV;FJf7<1mtQ{re&K}|;6I^y>{0zk zKAy^6kNvBc2cpWyQ=N~f;^V2p!VbnrN9KEvovN`zh>UiN z;5GEEgBTvw$qV~#$xp>z0n2dF>Ya+8W9dGJ0xpynfC_yZ==cRL>-c`tTMw*k*2mo5 zq1ZOEEVtz>oNIaxkNgUhS8G>@$o|8zkl=ae@WDtF%(1Xqa&2!(*j z$(L@7NoP5S@-Qg=g2tWWo*m|}w$dF5YkgdwRR}0Yu4Ua;dy5FUb#JQ}Wbyo#<06!y zlY-qIkMk~T%5MBu)o zvhSl6`JxS1yCq-P-K(YewSVi_vwO*BUqpP}zy9PGb(7RD#qp_+0{_k5cm*H&FV<68 zCbgsu*Z4F)!A+_#$W0M~I&ZWi+uVrBh86Aqx%vM(d{3S?-J}xZt8Fx+GtTdNpB^R? z3aFTv+1;4`dv_xO^<$AJJN@cL(p#S>o9j_#-1UFhb*JcQV;W0l;c9V;(tX!yr<~WZ ztXl|ZH?wZ?Uzx0#K0@&$HQDrs7G^)vuvyWp{eR3=bXAuzDg1Nxi!J`U|KC!9#_%RX zIq)w@F%=ST{6FX1HX*Hxrk!=H_xRuTGUGp-iDM287XMY2xs8L=ASw+T1gBbQ+=JV< z6s5~(s4cr%-WObUY;rJ4z2S(KRsIoq+bRl-^bA#!07r){q$<(y+v;j#!#DJyir zC55X1(5%4sLt$$;?JnMwV(rWt;B}y*miSZIcI&!aAl$)9?BdKRkSP%Y=&ZP9%h~1) zN!4};3lCZzU9ieK?#H#9iq?(B8CH?6YC~|#7e!HW1?nog-3Cg3PnTNrb&c0Od%+F-bRiTjEZF&R}P&UPL z!kfoE8<@as+huAWZP~i{>q!nxFUxN%BH{)HoCQu2bY4qUeOyw()?fXzs7(5 zkq`(k4m*U+c(+RipmTCoC+fnAwv)TvG@5${Jfq)RB1D4c zduFv14v0vVPLkt9J6eIWJWXJ&S*`f6VvsVyB4dVrSrsmKBui_7Ef}uWi`YV7Q-g%m zD?`aT-GO&Fk5rJpc|e1SVAz)Xwj#?)+YSJ3cQPk~!eV9H+wyZ5VkX*?qn*_DA9xk2 z!HXe$x=CfbW&iR90&zlFS6|jKC$vW^3YCJ6nd+qF$n`q%n_@$WRy+5RQac%B6ATPd zx)Q<2XbayHBNDJmKp6az!bcP0$SGTFKkwYxoEuX5V<_?~f6o(q*I!xtP(NRfWB=;! z`HRos>;L#OcNdoOoAXUgxK^Khe@H_(+c(g^MzB~`JWtm^+WANx~{=cp)NKJYZ z`)nJd4afn&>_ZhS%s|$YO8+;a7Uoqa2DK4$5f(Sjo3G*jpdZPk7w%WWoFZYT*PJ&K zRe}(@oc@_czNma6RDf~wuAmrIJTxVa5HP>(WzdD17hd;T+^CX zE!%vmYzy0*Hw0%)DVE;SNu)!1l%JaHsbs5cJ+%rF==f>zp8$9x>ypp|iIOY*Z5FcT zv1~9kjY)#6vqnGXpu>rU;$7^gaSZw>wl_I#RgE#^6<|k@4Yt=B9#g z_NdnPCRzKr3=oD9J~grZcRE-0co8CwQA_jLeGm!KG}P<`v-vbR01RmwFB>0VN6WvA zV_9;uA<96^UDpg(1~$Vpo#{0vu^*>5@JL4uE>JZjTu0H$)BphOXELtWb7}0?ddx+b zQlyAJj+sTN>ea^U$ML~N26{ftaaQCEw+%C-^3E{g9omn_d>iGYw<)ebF;bP_9zvSe zbBZbxt^WtEopolH5&LsBrr|X3bKK& zK$b3O4>#asfoHZh|KLqsQGt&tNH~}|Fh}V}Q3{+_D7ok*!>XthF&#}YxoQ8G9k;Aw zFy{ZqKGg60cb~@bOw(WL8>RkP9lzllF8D(~@H%|$zw#8%zKtq_LMq^u$q6D6ZJHv6 zV64bH_PQ=ZZvMZ{SA6gb!?0p=;1-tgVId2V(ENWj+vFmxi3Py!5WR(_%v5`!z4{}! z>)@QK1bbs;j^v&|kJ;e8maR3KBE9PF!mp-2m8g{j!YwLB`*YI$q+@=}ws=F8!6A0i zLD>s$1O|j}0{mL?Z_pb`CjgXKJxlce#wbqj2xpOP4Z}mRt0`s0GSsRVhuOBuo@H{n zc*e1E4HLe?trtZSW3ea=Ph1CUh67_iFu1&vzG=E%w>{QLWpbG7G7`XORxN+frB`S? znqQH~=&`30*EtBS7{>H}j>D%V+k?1YwQg?B_JuSVT9W1e(M+OIpn`f1BPzUKJ-+<% z%Qv=r93TAP2X8*#%L>OctnkivzVqz&p(J}e=W31NLHN4szoDnY#_iF@o@THfRC>@s zdQdH<&9hHpVn>AO0ev*pZOl$a1#}7hpuX$qz z!fYP{OC72|e-29DlF<1+=+^~~hxH%-j!NaP#N#V}?-Tsq|MfHY4c~Z) zon$%zHS0|W&Aoy?s;V)u$b*^)t6hW~5NZBDjiIlD`F|H88xm?-%lJL$)#ou-b}W2mMREpghxq+r486se{}!;6GrO=vx8p+Y z4A|_g^*t2gbA%Ygx^z0?RfK> z->moVc*i>=C57P!<2kDDd*Ay;M0qI5>hDi|>Qn2k{|@PeBmj*8IjcQrQH5;SB#^h< z8bpkfa$GhWA=Xf$Kqpxyqt134f(8^VY#S89K(*UsKeo!y@{Y<~O>Is&R4$jU;0kH& zg*O+Ddl-HhG~R3+mU?RGJ}fm{Jyh#SaubFP%egLy=A<438vIVP)ccWG%mCTrUmsrz ztmydZl|N{OdsAn$kHhzbHpy85&idrF=LIp^5Z2vLT*M^!D+*LOBl_`9SF-+a`CVVF z4`^~x?4CuQ5I8Os&S+$YH7H0KPm?#wEDK+Ra%ITeK&;>`zzQvqA#XV{6^~8)(y6Rs z0K8upG5tTb`2<@sRn20dI@z{5%$`(@0-kyHg7^F@PvYDD(&yJc)L-mzknG=a>|g!& zUWecKjZcUQp?N_4HyK~^0*+nab)x19sDvR{sm zF2bCG$tEl`x6S|8%|9KubyEz$RU;TaZFaJ%bun>@gktmmYAeN%<$6uhh*^}q2#aFj zT|*V2Pj1(!_gyJvvbl&QW}MrC5n5r22V&9-NQ$;xr~g;*3W^@v3Y|J+fAH;PvKQSK zzzG>i60f9XOg!~=ZvEdr5ZQ^DrOA>KjxrrjWJc)4FX$0gE~3LNVDKB3G(-^pm~n+c zZ8QwK8cV+UZxC>v!Lz;pN)k9mogtCTZxsuu4RC(yxvW&_wWD|M*|vC?tL1EbDHy@c z5sWbsIvgjmNfo)q*}slYeBu)tRQ)p5dFgT2KN>m4FH;>4!+UZp{o5m|;)}lMi}GiG z_GjbSXP?dES*jdJ%5X<_Ttqit<0Iax=h)*t2&2_ zl@;5t$jkocQBxBxQ_T;Zy1XLIV!K<)7%L-~o(PrGTt>k$MJtp)T?tiE3DQ2fQoUBJxL6Z68a+=8u-C4{cFSvwnr8$Znm;SYsPC983YnqA_kmx&>YD5&wjm)$nzbLvZ6ONt+_D+|P zCc!|yz^EErB>K9*GinaWrfXU~nwB4E2{&_}h&8Jx*=?Sf<`c@QIfh(!)|<+OQ@-Vq zH+|UM{L!G7%&po)d>hr$y^Hwp_wjhCul&}Bf4}Ef&JzDW$w9*U_OHC)zy2Gq;8QHq69`HXuPl9qtNpKg#ojSj431JN#9OgO7HqZ8gvCo?3R# ziy+NEuZUVhv9XKXsNH2NT*~3#YgBeeHwQWVe@Ptj{__;tD7dt{`*F1KSNjA=0)i5Q z^3l>Ga>GuOFNJ$3A``li3y86MQZg3gCwJJa$+gg>^R}8$4el7b-P1+jA^zxRj`daM z^nWm5rm85}lV@#oVJjK(8bCq;xj92kQMT!x2}y51=%Cc#4MSm$!SxMO0`Hoo(l-J( zurHDG`VdZIMA?hgy)tL)LdROTT&C}Z$k-M##vk;{@IS2s47tj&*MMtiX+Ch;*{O6@ zSk=aII1KDwO-I5`w4~NQ-QJ(yzyJO3hadYdQ=J#Q^wLYZuqytk2mYI`sXNUCW_L-A z^Yk{tzQT+qTvTt5R^B+&`|r}=rq!^eXB;COqV!Ep!Ye2nh-#88m+7&Yw3&9|a`5s` zp!0bCcTQo$J~d!63ftzG!jR9JY9W}kvwy-E!lE0eLg_oRtCi^!%(*{_zRqka*>v0G za4yqpFoWTU?C$%{@EPUSDmg@+R4`MJ%2wF)iEQOi5A#bTi!jZXr9gY+37zF)~s(KuS>NeW|Al9F^1K7o~pl zcYa}#R6maAuYUIrybizPPdtt1UU2n!z^$U4AhY~G%rvip=HaW*hmehNe{!AE{vT=n zZzL-{aIeIoB0D=W|6iZeAJ4y&W`A+d2o9|Me}B(2J!o%E4u&YY_ly|n#h`?$sk}1e zg>tcI7I+!IZX|uV-WvdtzMHub9SbJu<2OdmZBvGypsyE+?W=<((4mEMhM+1cW|f*5 zXRk2-H&SoDyMY}oK`K67+U#uZ8YpEO!1fAt5z~^1@zngk3GupCfurUwYpi>xU75Fe z8ko93c8ryA&bSSi$1RH22T{t+iZ{&!BKdsqFj?HEq((bDnM!P+&-oe`3>!(_cw>Ym zZN6|X{%0!&Wm6shE2hBXznNiAN=2pP<#IXh`j6+Hd#;SE5C3H<*x2vxQT^;^KPyX) zXcl}d{nP47Ru8hu_p+jt#n_nL3Lp#{_ctbNx2Y@&WxvNCSA{q*y(Pd{O_D94XW#jm z>EKeIrEImX*4(0zgQN2{y1!{mp?JX0gwh6V{!RLsN%QG$glyR&acEoQ26@qrR^+xgbgo5J@1B~ zNEfiXUa9D9&TegjPTZfTnoap(n?Z4z7;!7wn#02RGOc7}$P}xbaXsDs)+d|) zFC`jnP`^P*EkM%$6B9#%nU8cuR5=LxTKhk4rh4<6-+X@erC<7`=ehoPsM9Xd4Y>X`ZE*y{n->Rj=O0GPAi%*1$PAFnK~*7eR0=3j9ZCqvY}s>~Pq^qS z=y`_o}+~&`TXas%jFpW6b8aj z0vt4)G_W+EVNR~qj&=8^`77oV228abH=^x}{#P@?Z+0)A23D0*REBb?YBQ#>=ua{g z5pDFOq72;q|Cxscp5OkjKRF5N+rI$zq5fizV>`gt{!gCbyZ_p;fAyl^Bpnj-mhSID zfQ}00*W|Bz(f_kCbDbv_ZU6TVxm00-(EnGb6YlkSB8DB)e|UD-WlemBOT=2LRuxGr z#xbfAp1?~LUiDl(Ne>YArkJ?PxjrpFi{aWPtb#kXP$<=2-2a{Qy+(2w?R->tP4@sb zGl=#6NP_jtdp!{=gtlsXzC?VMOet)P_Wx1Qr)Fx{#GA{sz(vRcPF6YNN!UHEy*PfY z`5PE2>|aI6B4(N2@$2~mHKA>%bYIdQkCv|)9+e(F_(-;BMsX;60_|1X!D zM+4?h|MX9*yZ65Lz2KO5j4NsbD@DE;$qM@Lth1Nn(8lEfQ{QW@pgp35pb@VJ*+(z; zn^XaeRUO>EXOQkFyYY{*tzmH1cki(BDNhgJ>l@vLPg$d7+hx?RUU|C}rKP*DVYbX^ zK-t3#RzAy7oG~v4AaPyNLJr|Bm|F=d4`N+N;45m5Y*MeewkR!Oe-=-zM344T*ckSFGg#ngq zx``DRu2mkFlVr$A#p={S8RfItHY+9(LWLbo(!-LWOc@Zl$7Nm*rC9rF zUGT8=jZ4xt@m=e#3oBed=W$$r`uiqb)`A!3v9%QDr{q8Dmw>Kj46h+>Oafa z3sGwMt6z<@^7GdHj6zDd*Jm;AXIQ_w(Lf}UI)+2?q*+f((qwZiAEJUwR~Nbl*h_&X z$h2ihYJnY5g4wD~P<_VA(VC;qXa~Wi;{0z8Qv|`jHo#wlO#;EP*la^xbgnC;1Q{;I zAKMBFHDc@9{Hq=XH0D@?<$umSq0yStYqAU1Wsw`-i@e?h_eXY9HO){!%r1451s}xp z+=u!dmoNBzsK40b?O%1lANp(0#Ml4N>ycbF?*l6@n33KI0#;5^zlf6^@RjJLNCy~j z2|9&H0-v&qkdfr9OpNLwa`!{jMd-clhoxMU0H=NveJd>W_B=h5V-R#P0mK)DH> zQjz(8!8@~MiWbbZqWwQ@9Gn01OD35msOx6JVF8VNF41bQx$3nD^WEd!MH$}&Su&p} zGL2h|SN|B;5t6-LhyR!Cc_%+Ok84L>P7n#P^qp>&Ol-UGO`9lK4Cu2gdAtk*_%7Mh zlAp%e_PoXau>Td_rekOlJ1r{ni#|ae3s30_r_ES}AR6+4T_*~1=&d)#Cw#1>kEJS` zgjPenc&Zm(c;Wop?)tyEnac0_ z_n#a%O0hcW`RAXH>-Bm*qDm8=wAs;~@ya5U3OcIp`LTh6h^eZK^}cVb0~#rp(&XO* zl|V%rAQNA#pOVvB?unAT?syO=a2i?#Ie?+>E{ysvN1GZsbB+qqlD(#!Rah&LcAr_u z!Y=5ejwU`kp~@;aOEn1FOayf;7q^@Z@Lsb8++H-5tt{JM8v@b~`XSMhiM`m0Jliww-8m`Ny5Mz2P| z>_%p5^S)lj5<}P)9LIsmgLK?bQvol~HT#0eE32pUO(&ZSKCy{q!-L~QSMup@*Zv(t zD}WFe-T!gN{{tB4B!B4!(*~D$I|U*CSo`vEYwH6sLZl(uhf@QN=0RF*oBl6d<@g&h z{oksp;Z@Yg7=i&-#jmH0Q~{3TS-PfXJ>sJMU!=YLpHrbZy9Rj@M1+$AW!N(EX_aU@ z!ST$rGVfUkQQtmeo?DuCeViFfjgsHyHlu791n>ykZeU(;Lx1!-Vzkd^cu|Dgd)p5N zvt7>PgDPH?o{=aVxdf(@vct3%dJK#gr#? zR9}4Y#q(!W`4g%Dc8hKUMOCvYaw#m0DCT}$kF@7{j!@T(*6#YiYQC%s_Lwml($qJChK&1|zN z>7gLyniY6sD6TtTut_~MkQu`2y#f-z2R2UGspoDQIZS@`TTaKDs5r@^veC}czCiFi zN#Qk_ZDLhw6r7i`FmwERoKpXty(^=ZW5QyN6 zD`;JRK5d{x&LP<;|Ka~vG?o^?uSzsIMj7`N+R|jP$JJO)ol&K)%$zb(cPRQ6*R^aO zR&CpKi1E-$6q_}`(TRmO=VSW(vM%LF*4)?UQjbiELDrL!5-F}>?%mjzy?x7{6X*nW zVW}msp`r+MPRXEZdd+>!uTFGaWY{dtjLK!)N$LZeuKUx3Z6#>?D|0HlJRch<3AA19 z{7P{PL8Wkv?gy?k@J3*+Dmb)<^HI@<9M&O{ZeesAFBJc|aWyb(m^Qcue_{u0J+)WV=Z^GmgHRsG%Nwg`_ee&eVD-VUyR~|lo6)QdBYudjtJyHJ-a{2^KQlG$x>R|YGTupY)$4y{+E&I54Y}vFb-95eYdj&ihf66>0Q0w)O?TRM- zXj8hCgMQ(jM%%CN_P8azZEeQ3beEMK^GkKh;N~*$bJ@%aCNluEQHbly$9mfYWuY7t zZ&Xzt&iW0%RDlZ`J)?~2*e;p=OG}vSEJy$5N>RNFYo#3 zv)E+{$UT>8WJhPiK7l2|+bQ-7hCm@QW@ zzdG>)$h}}L_S)o}y~srk-gO4|1QkIe-gc^Y1P|$Zbi1xf1B{CrnnDoazG&!u6#W z0PRExdD_&j2emv0AC_3u<#+UIHUg^y37s*9223K2&GwMno#{us6{$jD$3R^P4xSh+@=8~-t6dt@einS1tC+h-4%QwA3<9|Nj2n@12c1%=2tc*bhJ}i3 zr-sXgO^%IVFTh{_-2gyK{;IAiY2hzXDY(AMzG}Yy~*C1N_J<_;3G{ zD?a<_IXB~uN61-esw}9Nbwm{%M$%Tty3?5ijj=tgBH1@M;x#5dn5VUm^j4iTTaT2l zvHK0+&DTcdt39UzngO2Rzn3`E32FxkW?Rya64zWl6y|SvC&91ETW{yt2x}8Qme9zx zxK$zoBiM3#K=wj1l}H_M->>QzY5pIbe7hVL8Tk%v26;0KkKrF%dm{h)wunjo6Y!KgtBZY=!Y@XQ z`0q-*W@%Qo0xJk@cF#HUzi+IVgpw7iyzzgYh|b#9iLrdr3M%TA{?D*Qs~$h0>gOK+dH(t5^`4)4h>ifZif2=Z0u3iM*`KRQ8P$#&-i7WA z))mnKw()V%9ogObhUW}&nl_%jU(Q&Mqp`2#33ILVt85%Phh`Sw|9bN2+uJnz`|8g4 zaRr6w?}30X9Ykx5UEe{Guro~7p^BM#QI_>(vZJmtVoh@I)5%>^aXZH~GDe4T-n2f? zVaNDPdQLPthrSARr#@E22tprV*GPj_1YBp)Kon8A%Gp%`9LLAVC)U>PE@~8cB-NB7_3)$$nkjs5w~)PBoy8AMXGH5i<%DVTx$FV5 zCG~y${oIQY$Foqs<==ezNK${9kALyIpW+Yx+s~Y&Rghp9avT>0P{9@Vq=F`#+^5>f zUHj>cx99E{>==f%;-Tyl{PxVHwv4``oj5ce{ZykMY}E`2XHz~qXJ0W? z_;63D*>Gt7FIC9@L5!=G^($Uc^W}kf!uFm!VNbA&Sj;DQHFHy2X>xAE*xxYT3i~X& z=Ew=^^l%+T$C9x}mV5`jGiBNIUQh@bKjSN^NOH~F1g2g!0=G%`i!t8xc~V>Yn%52= zF8k;EMIvfznpF^U`flUF<<>FZ{`R-)Gd@QZ_hzKtU+nb>wq^h0?;rWI`QKO1D)`Mo zYEqXEIe`t}CdWxMP{eGAZKY#Q+J7;WxAy@WMBXzq61vENSHWW2C3>JnE_ z+>XgVWp~&Bb36Q-y*#Ei9UJEOP0{D3bp$v2Tv?@~;i}TNy{|TyJz{36zL962pVwGM z1}r(7OTc~vEx#jzfUts8bZUM_ZJ{||B3|Q;>8`VLi&#l@XY5NS+eu3|Mb1qDHNU^$ zavoMy@*)uLJSemW?cPx{ubZkEM9ZwnB=A~&o2^$_ln8!11uz}27t^B=6pr-*Eo8X4 zNDr@j(*^JP)_B~9`gwAE>Z6JO{6BmJ|M2hCoiw{oo4<7>j#tOFNA2wat&ZDUZ zvT?P@@qqT*v1_RdX{&#NcMQ^iW>vl7Ctu+A`rGu+?<}DF>}USL4}SmO{Hh;#czZ7W z*Xyz5|LS|*^PcOE{n(FjkE-qje63q)<4eBeOU{Ph@|L$y;P${JLT95KK8%F*P}6}f zn@=ljVgSK;VszR13@CZNUd_0jL^4Z1+s!c~rGway ztYxoYj%*;%vLKo~t)fQOcPm^?@Tu_tRYOn-Q0fWJdAj~|H28IuBJA6lWzJiF`=qmp zsH#O)c1rS2pGfTov)%q7)dVKXonjt3zw$u^(ba_x9x9ly*I}CEIFcQY zh&BB`?p9%0s7$MbRZ|w(h;LOe#dME^?aQVoZX~z1$ZVC=F3}Y(lgQ558XYh69vBtyBrRn8k-LS9dBGU5AK^ct>c?w7 z^X18tCwV-c>f;~(_}Ks-Pi5mcNtbm+f}zNan6VXo`mo0_KWVK6#>9c_rq5iLCUT?! z-QZ*)0*G#R@RGO{qhtsGw%py&OlG39Yh*qQR5squYSR0=DJxNLlPOFM0m4#64=|5% zq%3NpWhIKd3{+O>QZu;f3=_fb%<~IJZ_t%G%da)I@CXvxcWC}^0c{Wf0(*AAcGp9agp}wFPZkmjH^_~0VlaXI z#(!tn>viLfSYiT75W}ty0}A>-akhXe4Oh{+EXo^TDHRaWUC*+^7~4(!r~i{-XPpz# zeLAtqdj!Cm?(LIjd|Ju*lI(ID?gQ8s{!;U_POyxeCw3wftw78hKsCw`DQ>;y7B{3l z+uD%=$ough%HzW4gq>5ps~r`F?0XA~WCms5qAX>dnlH2+g%6CQkT6 zc~_V*Vj4Jdi?2ECa1cYb5PKWbFQuv~J_i&>+k%fbSMkD9WWbk3WOwchX#kP8yr!9D z^)ztOCGB>+1)b^g5;Ri1XdKwDrpWROI0s0gm280njBKDUyCUmDc}xkx*(!%PnOyBT z3$MhvR@V73Dsut;?L^L;5nP^gz>$+{W`(m|39L%RRlyL@a^F%;v>iEZkKA;M{duX} zYCs_J68!oMP+Oy&^vK2Mc~SlvO*jA~%|pnPn{%X?oy{DT-XxvoT!FUM*qA`%t*q>4 z3pD+`z-$FI8)H{)l3$+oLG7vil8XSGUI}^l?5NOv>%Y17p?=Y?!{hNQ;CSixJ;m>R zsIb2C*uTodF}IBG{L}p(U8Sj08Mx*DDtXEOt9`~4Mbkph#JbC$w%!DDwNa!)zHIXN z;pC3(rUlsHj$z>{E$YMlA0>|EHz?p*p}An~R^_bNG0t%&iJYf_k9wu4<>^ZI0?E^8~As$3_5bSmb_ELScMv@jq^^j$yQ`NRb+c5;GfP#fO~! zn7zamtjfaWJw4`X31>yo?7~U2n3VschtxJ2K7`IoEAhEReEQR$R>vRx=tuFef`9(~ z#b5lz=d%C%-~axw>ebCJQ|XIi>HotY{_y$!c;LSsD{V*;pjK`S@gSBWT@2OtVC!|Y zUGMJ{#QS5O-;9lK{BK!SAqOp@MNW)8KHkt$a9`gbBDqw}J6?|)4(b{6AbhtE*mb$7 zBe!w7LhJJa<^H+>r-m3dm@?*cr$zn7!%|wP!e&mD^OXc{n+c_-B6Xquv_Fct%{8AT zqG#0`%N>2E>A)?4;J6s7-U1?8=zVkTFa>Ity0IWzO$4b9r$KVrTl3V=LWtHw^*<)D zKy$fw%YJJ*E;LVA@2}|LaptHD>b-(ngsKufY1UsKj&gQh1yx)K*fjZ+38w6;T0ZAD zNHD(sPdtNv@w+qr?vK23KGup>$Oygs zUpRHzeLv-)!Iudo9W3|wK&0F;5rE-y?<+CN$$fcbtMn0KLLlz=|FY~Pz%%wNDMpns z!kjQcsu@H6Y)1};hiH;>dnzPu4>+~YH~4p*x;{m^8dh5-r6Qd5_FDd5iG0(-CZRmB z37eWzoT|M?cVpb`(Ur|(FTO}m#s5-frn7|VWMOL7BSNUOWmzRNuQ2-c(CU?YMJyI( zQx;WMErH@5VUQP~7sseVn;xW*Fg_0-=(q%I)8Pt(Pf-;rr!SOj3xnCH7a9h62Fb@B z|8-kI#j=W%uW^)SiSr`WK0jKS^{qmzipFLTHlf*O0G$~+zuS@gUc!) zNlg!63xMhd4FMD1ml2)XOLQPe$9LGWV2(hi*Wzuob4``zI|KmBM(k^cnlP;uI_-h% z)b&NnKgn!1^f(XYbBQh6W+O8ItiE!y*Jaxm)I2S>6p9CIX`(#`(#5&|^w@{`NK$|0 z9|vLmh6loWkk;p3p#Q68LA=m0_Q?^$MQz)$_DE(gO(?n{^Z)u^>c*-?l*|7`1TRKh zxt#V0=mgW zYI0a8$SF<`%BX6@9>-Q&9pQp;GuHN!x@Dp^cXHs_+e1QMt>|_g%D?bS%m^7 zkyKuKnLKDDgd+F53tPM#un#G`Y_sW^}*HF1Av1Cn2B+S$IuaEK65DRdP0cLUK1tdk%N zfJoJ97{InZjhJ`bf}r2z8(=Ee(^SiZ7(f>j&{$180YgM=^d8u=*yyTpVEBN#&l<{b z(im1WmZ2KWX73GN_C1r5NG*k~K`{296BLt2@|i7U^&i8wQu>Ru4BQBN8IOVg>hFu+ z74aQ^<>~oM)W?0OUs%Vn4d4&|;Op`AfAX1gJBI}=pnOZ-=0qhHx$4*x9Vt3MH`bXs z)@Mva*Ow7D{y%)1*q=L~vBa6v{|gMU11RAn4G!tUlbVO0?+DTa2V8~G9s^bI_HL&P z7IFJJg6M*Rx{Ex-^_pulp%8Ym$l&TWJcM^Qr*sPgjAi$tx&s#|)Yyz%;$;22Y>?!s z3ciT#6&V8&LvXVP3HB5o>P39>_Cy$}6-^j38|c_~%2-7K#UfPv??@Nae}&hM`^lKa z4;1%Iq$_n-Q#1-my;_*;q$gyko9z+Yfewo>9;J}k)9d|_v3Ej7(o<(A+bB)QSfce? zaVp9_v*dj4x#!f?!wSAceyFP6jKd%Jf9?yAzFy2`qvVgYzlxN6h0y|lrEwMjYs?B*N^XC5hEN;tvq<*u%w^MZPm7V*5 zTxJJ|n}e2Dg_5KB%W3MDCDRGwe9*KH1P~BbXQ^kVF5r>eC39d{h}2BqxpjWOqJ|P$ zDV6_|rhf6eE@u_>@mZ)}_{Tw5f6Z52@ZbL5U%`+6$FDZT6y}s+`43$5wwwxpZTiRS zwaG4EuwSRs2QuwfkqABV*SHtC#LukN6=QRG(0LB4Z|x$2&l*enDQv~hF~h4$!UXgh zJ+ST3Ecvo8)3r@{GV)H$R0v#py&gKct|bqHR$^7MKsAWFt^a0M$9as?I|5Mmrv`nC zlcciP%JVPh%6-irC#6*yHFaZ4hsBt69k&{22S?AJ^acAvY9}!t>eJ+Ud`cq#lzo|N zM_7!0!XllNrXl)1u86)MD$1^EqXnAS7-Mss^={xfw<>I7*Gysly5j`+9%#qwb){i? zX(ptT+P0AueSrSXCV@lJBOOD019?ErqFg$9mZ)t4jKimBhH~h@{D^}oQ`mbQgxb&T! z$o5VGi(_@k++Rcntq_+jjHvrGw<+FE6McY?Amgh~0@&0WiU86awl$PulzpozECEt= zBJU#Aupud^Kq##no2yPS>-^r(ojFk?#^falrJOosFu|1z4|*sY;8v#Dwg9yMwq$2@ ze;Z7AvUI<|HQ`Qeatx3K15I`i3K+p}Cl2&>?adBmY6Wz#Eg%~KZm2U>X~OM`4U{Uh zw-}C>0c{cKD>|#MeqQ&cz*m3!1z+*F#Q&@6IJN_P?Z5gAzUucs#j$_&LqGcJs&fi9 zn;t1`B9NL;GxX1NLIJ%gzgG?jR@QY_eh)QJ%T`1e zRJNNIgBnS5^G9KpCB|sdpv|fobMHK5C;Eq$epYkWh^vVFDuBhU|EqvN_yl=cMWpNm zUDr@)IY6ig3V~|`s)s+$UndHW8YDi{>CgxDntMA;b}adjAviJK#tMu7b)n)b8r#w< z;Ei}xM`JM1bA=fb29Z_tjft@OtF{%O_isZ@ico}!G&@2n6bS%I44V|GK&4r4!NlX1n(DEDBy{3e^Xi>Pvs>NkDUH^tBV z%+KJ*fBeVuP6G;;y^3ICI7nL>HwXnb?8I&LIXdtZIl9TaN6XMNa<+F=K6PUgMxTC- z%iPZ7UCMS~rZ&f%8Y1S5_4V{f&5C)p$W7XNN|5$JJ3CdhGQ4%2E+AeS+;aHK^sX?b z)2ZSx8K3aX;e3#hk}|b@Zy$AQN9#z)= z{6G9$eCi|33bMnX@H7=+t=a#8Kad*l!h%`|4Bi8l{gc-@`vm24_8I%!` zObaBX(`#>~;N*aaTicCxwI1zV{MWEhVI~}w8>qvE$+*yDXvXOr{Gsk1&yF#pzZ1V2 z^Nt0$^T$V+sIyrK7Tz>O@ZiMHgehCDF=b!82BI@9i9u-VMUI$%wzmBMO_{BNQ5Nqm zUqZ$7+$+ckiv?A{5^n&~%ZRL+B%EfO4Ay$RO%Z|O&8>`DG2vKi9=C*XX)pG!;&?pO zGtWGOt*Q!N!X8Wi5C1M7{NM-2x%Mg&a&&d+_?+eS=O0(xSzuMGQ3Wpt(g(tdT0cW6> zZl%C=-miQ2lYI9dxx}+?!{hOIoX4>h;Cp`X_4v@=e)X)dzWkAF8$M0&TAP}Oc{kB4 z?6Q0a;Cm))Wy7ycBn4IstPvd*5?qr)zV<*E+%4fN`~o_I9b;SnY0^#TrvDRHB4WoM zgZH}Vn&zh%0b6G(L9d2dKN^EDNd8YU!N9x5*JNLp>Rz2e)EMcqo@ra5+o0uqF10W@ z45o9|i8`q-;@0suyKI21&?xPt8o|>P zA6H@~vzLvzogI5rpFVwh<*NNV-ti9nwjHObjms=;L&@~XOS3}8pDm=aLx8=h+p2I_%w#T|Xc zY=5AG*{me=|7z9&f%H^UWRK$>7b_sVLsD0prr#-8;J+#2RQ}G$y+f zag`I!4MthFhJwFJ_eSCEZ1}Wc{7FLm2SgvuGD7ulM zx;!4(|1E#v3BK`9Ka$kPU z1X#IbraSDu+X%;gLP=o5)b>e?W${kf3f5x!KdVYhqV(8S#a$0GBP0~Kz;5hn;*bUd zU|V42mv2{N+6(ns{=ee08f4-N-?BjgvoY(GVPGi-LF}leFKbe5AqMp~tIAC#oo}Xa z*27W<+~^ozfg?x%78G1($s7Wy%ARSS2@zv=$LE-FBMSe;Ss19D#CLcRSuT6;a4Gv{ zb_U^VeZBP!Y?G247v_-BYyLb}J(k)_pB8glB(u!1qFJXV);{tz57!()Sn+|ynUN`A zatD&mmtTH4KK}8K$6Md}*7M|pr1F9P*hKP*YS_(G;m=WBvS+;Ujc;TXlT}a>yjiNB zN}4(~%go+w$U0!$G(=0P_P8H3X{qW4lN<*D09?tDwsb-E`DtyWf9K=1x#gIBt3#^m zYSpt6cGbwJDw-Om%^rHVdL|pT>|gEC$+ry2Nab+4HS`2VqqsR(M9_Du+tH526U|Qw z?^)<8Qa97Ku=yDZ)?w8^wjI`vFX`|~W_Cxv*SL--c>Eok0A(I(y{pG#RjuW+J#ylO z@_mlA=QLnA9?h*4h?9zCLou-d@TC$%uE5C1sgD}HJfp@hJ$O3aOJ+!`Zm*hE0$T>d zfb;AN5yy>Ezy5bj0D3$gk9)_l9pE6U@BE!l@OOXsm9xr<8PwN_oBJ#1HK~fquj=bg z_L_KP`6HLA8wh=6$onf&+kOjpm@#>lg9gc}U^_)Hg}GrjgbF5D49*d6;0Qoa4#C_nTV@!7^Vv^2zJF%bgulA}6C+HWF4csKb**hKb zqoFWIjR!GF16pU)t>S+L&WNqp(|5m57$l#j?N#D)sRY0)r*781{9Z$<_{;#|MT^4u zR6-;DM7PEHiINu03S?OED`RawRGrTyyXA1f6VEw$ z=Gnkke#_-?AL`@ri#pEztAFwty!35P@Hc<(b2#>|s-!m}4g;Z8E-gu&zE?h2O%%`X#`A?B7V%OWyNi5&zL8 zj94?SH3T|o-Hb`YPiqv4|F*|gD@}tRXket46}%(GC|CUN8+@6ls9%RYb zj%vcDneBey10NV;@QUgf7FwbC{PWNAXH;VhyKM6kegQ}vooH$tX%$3|jxd6DUXV~O zAs=uY^7bU6Y*Ioa|NB)zhb0UBpi$+D*?WN!HoEYqAy-~{S<1GTycp0jw+2mvR z&{FwLFIs9E3!dm ziQ2)1U=;+d&>ey?N4qU&WI8xBSXwn;^xYs5RIsuo5zcaW(}B-S#^#~W5U%(Sl(C!w`p)(=krj%{mJ9=P#=$f z=Et#r_4s$(Z1v;+w^!q{pEmRjE%S%WIz%`Gs`56T(D;&08kS?GRV6z|RK6gQOoDiAw{I25_TsU6LYIsgYyjl^u9x4Z2phU{};|QUY7r}qch*$ zD{vU0rn$+e0w)uS6)GA~vbk3i&3m{AZwBd^H`Psiu32z+-q3;L*el?V1wWuV#V(47^CGv z^c*BJknLDud+4$XtfvCQh*bDhsKQ2oKH>4)Y>Xo~=j_U~sbejAA(kA&E2!MmTV@hI zUsWB=hh={Wc0BO^^{;<@{NzvmYE;ZtnEZO(h04OKs2 zve`)n24#ax1G4(pHj9KsAMG#YJk|H9V6i02YkPOdq}r%_JXx`yYEGsE@}l{n7hZKNlbR(WAoRdv=x_}detaZC z)NnPV5?@k{*ai=siZd4O$d8I0+9eYY)Bamu*6=i6S0^xAETOs*`{xw4<_{f{uW8HJ zIlHfsY+%3STGPD!N*7~N4YtK&$nGGuOh;Q;F_L}j`#k$#T-P#(Yv#Rkcha)ORaSE= ztjFHZowmj{7@bpu5f+pAHW#1D*h{TWI)|)-oC1o|vUxHQbo{5~hIqhIce?Z=#s)A4 z{6JFkrI%hhmj9Q0Ya-6~TKYc}cKn3u@jI)>PpCeS)br!FyyY!w=rf=B3@9nkHRr@I z7L6j}Mh6Mk$1>5%q`@r%-8P5au1s|`5#{HNK|~S$-5YQyd%_ovVBXtcVV%^q!;YLB zbNqu}+G&Q5t&bv=d7~VVW5Ns*qNm8Ni7f(`of##UaTmH?76EL+7%WXtm|42q4&%F> z_!SsPKRwokrB}ilvAeA!ZyGKZmFa5XD1v}cSSSYw%%u%Z<&{4_XUPNiD4l>%OHbMB z{Oa@GVg2)yNOQz`NlpSZFLIEY{`wYvCH%R#ThAqzSUF>Ah5wUbW^@KOvt3c_xI zTIucS8{_;%sc-xKN0Rz@{PG=Z|LW`TJwNn%{F;}Z2!hL>L(9-n$a5SKH~x?EqpMai z6tvC%J8%=3&Py=>*BcdbnahSenQoZ6X{Ir%I%8g2XeO83mfbP?sGb0;W=8w}rDbZO zQP*d4m9)f? z42oAP%rb1mIG2&JFdi_{CPgiRl|B0g?P=icxlvF`^{tTlK0ghFMaw*-*$Uc$DvmHxxRe-w3TRppp2S%Y-86yAfflT}Hv+DY2b z<6Z)@zJBXl->S17ilKH%vy=US|IQci!V53xm#NsT>Zv&V5(OI1J2JR zev)YMt7b-nAT7aaUTpb^)rKOHfjd5(TlF~1CkR-Qt-nNP(#ha(_Lv<^)`oGAs`MPARe^%R0hX>(n6(Sj+Jzi?wgYmy;Y(k5q%#f17Bd2ORK3V*2 zS))U+k9o}&|-C(X+QR3KXzAVcWInX~s0Ez;RGTELJ<=9MJYZfpsta@O*x zk3grm(Jgx~-FqSjajh{gVB*NuhFB#Qtt;0Nax10v3jfH8-Kc}$HQJR1=W*`&X+0;w zBq~Gm{#}ZPq~gIGRTFHAZvu+q^Q+R#F-E8o>H)ed2xWR1cE8vqJ3!@_ z+~awuzwdod{A0?qP& z1>f|PH0W^W(Pbckve5Mgf93zSZ715p#%i09?BF6%&gK}zF6jFolS9?AUI~L)No|r! z|F0@C*0WPZtgzt*ES6Oj!G(sO2&qmneqFzALe&BovFUR-yR8THnia$m&Ni$ItA?e$ zkSR-QO-FH%>I)*xIyKZ6V-KlJn8FnQ72D7T5*>|~l$X+vrd>}Ms4(l4YwCWB|5?Tg zY#;aQ{@r;zZ3Uz}pL+!CqUlro&S-O#5=$ptElfB)jGDZ2{JI8P>oe7%>bk#&*Xzar zAc|=fH~@q6(D-~*Eur_Ud14zSZ~ruFxmt3p+5KKfxO22M$$KIuFJf~`Ycxi+Lq_Oh zDQ41*m*ezk3RR*~Aeb^aRjXR>Q+8fbles1=W7BgleWVO}?f+qg;aXi3EL^g0o`Qk` zblqw`H8v;P>3(AyFw*x0b(UB|3^_ENK6}=1_i&%`QfkUtTW1Y+kr?}nRncZfPB>HI zKe*3?6!54qU1dzw$@%Vf>e#;+T z`&a+YLv{7P`&+LLZyjXonnpGoE0=c>2QDH|ke8(WmyP8N(D(d5ZHbs)g_c_-;1%gx zYpdrN)!ciB*Dh8tAU3Q#Hqk3QiVYiDXbA9|Rk8fvpUvH!f~13SDlNL$X@z~Io^!R% zDfzjt5q*QGV7KCvs+k!Yt5@ABDY59?^Xc&kb*I>NrN@6CV=@QPsDg2gpe*9dCH%pc zDErb;J&p)!(WRlx4!2pu?3A*_8m2 z*-(Y8fHcelZdJN`H(h@DdN$aU2qR5eDO;RNbmG{ApEL-+^g0?%CxW9{*900rhpMC^ zb50vK0nvpr9=CLoH`!gE0XlnyiXLg(l$rgFaD?ZZZ-SfflQL&1v`z0E^}IU0AFC)u ze}45JFAzrHp=ug<_aD8)cl_lik0kZ+_`E-k?Ev3+>|gyqya8YKwNIA+`;k@!4Blm3 z$mh80i8}yGi3KzI;x&+f%dO_?6_OkOZo$a_zh&D`$boEG1=4c=*!_PFze%mZ)3t9M zmO9Rk@*cv2{4A?ppu~P3|M=j#$N%G^tEM0nu1NzbswH}v9MG1glqjLX56QR%xIsSe zjAN3W?3ulmv4na{tz3@cLA{3912k_sx8(s?@2}lswes_rv^IcI8L7hE&TSa?0@IKqFk)yY0eKUkyXtJZJBo~^6}+ZZ zj@Krt?|a|-P7y!&!4ICVU;3qAiWgse@%--PmtVeq>QkTU#+zBU0a()l0qa)Wfx}K8 z5QZ5>ix~Vn082i`xrubMTwmBz1N!8Y{8OdTG6qx`r5JmzEg&JG-pB;aK1`l;&9ef# z92f3Bfflia7J3bdF}t-XU}i;dRbLtKr6?ktE0pXeWPp$!&aqx&{qvQxcJ67ImBq?w zjWZ4)2(Ciq0OxFdSyh)B2w3juj<9ejHI|Wm%OcD=23c)mRF1=J{2a9H5D460k&={b zGq`rf-xn+lW##xrre53fLl6Ne(CT=LJIBi62;Yr}P>n389uY!E2_7epy`Bn21& zCd*d`^@MzJ5|<#*G%;Z;l@HgFEDrj3A|dH6_?qVbt*E?H-;pfY@-wbg6%5)- zP$JCuuVrxQE_1&}m%%khSc{>Gnj>N{iI*w38`T_ftL9DoPt|oz@Z^?(8A_U11XTGe zYNx+p@xLyqIf7N%6-#(c5r;9_Ok3ou?PnQ1XW9qt*6lGY?$2Wr@wMV_^On#q6;0B* z=$hjfYno@M3T?iy?w7chw6wK#wl;xi{3Nh}+hWk0-t;D^^Mw~)IKO|#JKll!yyrcB zTF*hX{yd5-r|o6^&+ zqrA&T7w9|i*hpv5w0g+x{Bg4cKRc6x(qEdbR{yQ4%C-mA9ZN}9Wu-MYkXmxd?N#5` z3^r|eESR5n@c*_y_5{zq4Ufm;@da`G#E-sm{v_+mKZ8NOPM<82WkG15Nqy`bNrz4s zcrKs3aJjcWV`2^X3UA)FJ^RN<;44;zwQZHiCUmuAiwS`-gHwG9ldYF(XDsQ_W<6Oc z=BKcmqp%+ui^Fj6O(OIDLT6*J;)6O2WIw`d#edBqk$l99t?h1Zi~lW)$>rO%2 zJ_cso1g~Gq;X_|_jZEYa=ltW4pYhc@FvZ#=DgKwN_r^Vh%%w>EJ$cVIjD&B68#cKw z??$tVw0MMB#r3hLbYk;{o54nY{OA9{4}JgN{Hh;#`0H~I|6X|@s;_+XqaQtfWBDky zzWT7Le-uowCCw>=S5(iRtvcSn^wLYWy0NYRj5X)VUcE4ymld5Aw#|Y0Y219m2C*ev z{rOmyw|qg$@>w<22dkI?OSN)C0Gph;K7F#X(?*wkN?A_EL8lb~x~Cyy)$=87S6`JS znr3N~%64p%N_6Spx5)I@983B~@mgD_j;62n;QIFYB_=bGLp<~1G;dax& z*^}l(Zw&D@E~P~aGd8Xcsv zGEwj01mNsSNcPfBS~d!OF8S^lR8d z{{Tm|J~z4H@gRwhC!DJyim{DzU6ppzlYf^*`l1+E-d4a8`f#rCRt#{At*YhXr8d@% z{Atm@R;X*8KezawR?TGF@Hmz;{_lgXCWGh3AaywnV$o#4GlSZaupU`aJKPnDSc6pT#UCR!@$QE1; z80}2iEgeMMESrSsEXVkBD1~jnR6O|SId{M zkyr5(AAF^0k}W-kA#S2?L;^-=>VqJp`kx~9@KfBmuDZa!a?@3-B^=)ialAW=DeJr3 zB)ttS=m9231_@)Ofr0txXKD@-(k!!^{YM;W15goUEf1}x9B&=Nt?k%W-gtwM)ZdWY z;b?(5>`_pSsiv+ibX$+G8__mPD4^G;{85IJaB#&dxq=LKP_3@SCP(PBvHIseD#qK^ z8~@feJ`U)XijpLFhh?mBH~zPuWY3p#iklT%>;}S{dtsDpy|-)b#{Y*;{{KJ!;UD_G zRZ)HA&2N75=bk)y^6JMv_OVw`71espdOZ)1X!%f4#jacbWvb(W|ExrsLg=V=6{uDn zS5t*5RME_sZ*p^(&Yy%5D?^equfF8u39pLQ70AtObOV*mK)T#Qmzkx&b3rv0m>K;f zvUi={A+W&Y989p9mbzFIZS00l$d8pAmF?DzYs_Lr@}jZVMv~H9YHzCBZa^7<)NLu1 zvQ=iRMcm9}mC5Vch@mLUD9=slAw9|1T?JuigsuYgRt08to&9d0S=Yg5+`V11``RS6 z?JP72c2(*88d8nror!d{b528ZRUp;X380turZGSB#=vj-j!T^TP#;O^6XVEjzBVO@8 z{ItmGP$JR->gx`j-iODJYAj`vIb%~QR+))WLDuAq|27A~0#}%9B&ju*;pu@|HM{p< z81S3D!ms_B z3*P;`m&Yak$KzM+@nv88^!OJa`q5YLcYgTQ`oVxLZlF0?6H2-z{a@rRI@zAQaDmjo zH&Md+&+Q6U{ULz|l)?(QTrTEk$7L7ue-fAIh5}8_5-=n=n;r~+^r=>QL~hB7IlxvF zgiv9p738n#VekiAg4$?eUz&++YZn@4vq(?YL+Uj$_8l#U#?#`CxK-~#SvsuGit1S$CP5dTZB*MucJ z$A2!0|A{W2R3_JlQ!9C8;=KQkx?UeeU1%MQ{1$?FNjg0WqP#!C6o}9G3iU}j>`|DJG9lF ztwPqX7fO-im#Au3Tl@5duxuu@EJbWcJ(t8wZCp~xTY<$}i{Y8Ct@a}tteNfSoP@o? zfEETYqQ06~Hv_HDR7@=!uGBCEoaKnwDp5eNi7L^`=u>u4^U+J;96$^sWr)zY2`VE~ z=hmm)v_r!c&X6)DL5-%t3M>_nG`t72xEe|rKt@eSs7=~w$E-BHXN!<9UGnRV>mD~s zee+*8*);dXz8cJFW-Vn3N zld8i(X1-X@Sn6l^#i$6*_aYCriX{9~zcCe4Z*$#*%5Xa4KN5Yjun$4S5E~^!g0-^T=PUR=Zu7N^d5njKL42{lW>qvnFU^DxPTWY>b_EN_nJ5#kWp zBNt`vtP7g6Fl(h=_&AJl6SCfEF`$E7CroAzmp#jz9ybUu#O-B8X zGOlZ@J>J|EY%SDhqZkp537b#uK5M~oxS$Lv+k!Va!}7I zbsREtP9xmrs_vod?qurgN5eHdq9CvJNJ3)QOnt*pn8XT|C}$%pzhUz%KZD;G|> z_4m`~!!1z`Zrag|+{m1D_^u!0_ON-rj0;yLT7=?WFmyCzeBtJ!RHmC}E{)@`dzP3O zM&o<9T}|}J*G~L%?I*&^i0$0HLHghQ&`BKZgCtIH>y4{q9#+>OY)~|wyQ0*|3Vn4C z@Dd0q>3}sY@LrT=gxs#whMaE+@wNqq|-tM5MUKxIhHK}S0Gcy!de@q zZ*jniQVXywL-zZT?0bb1A9$=+EG+`Lr#R~&ggI|Ge+ zdv18a76AbQ*}i%2J#aLM>&vr1$C*-)g+CFBoclt#`Uk$2NkrP7#P(I8=lgPV5T#~w zx*FEj>jN6~WO*(}C|0)xLZywR$viJ2vfkcfK5VSFlBZTLVoh%|iZ6d1Y%*|TPsM{C z9!aHq5(!6~`ok9Sn&)d!vnj%ig`OP+&d5r|`$9r9QZKAcx~=+6QTJs)@UU0ot8 z=hz~|spa?rd8a`>90kRD`^G({P>}IP2z+IkF2TY^9~jUgY9LC^E8G(lCq0ajkat(6 zV|cZ@xN)}C4wKUlTKg_GxQCd8Q`At*;kbr%XgM4HKgFajCB>-q6BJi3ClzR12fm(4tq7SO!S5r6i)_M&D`^oTL zzSjI4w>;aYR^!6T02`vhCXN}eB|_S*_Nz(h(tr|PV0l|BI9#y;?ekMC!q4v1_&$E( zTElwj7x@>0v$j6t?&3=RH@(^(qBnsT(>L*-cyw80n&B32s(9LI@=TKwsRRRSCn2u4 zdZNm?Jb&XUIS-n8yf!sNi@9Oy+a8xGpxe7@sj9+;Pki-WQ)>SzWu^@W{k_*f))!2- ztq2|MUTG|@6rXmE^KL%e3Jtzmw%KVwqG5HgXee(pmL;L=y;a5Cow47QrX)rV;8?&} zwJ~o1n<;F695FrH2cG|%GXO?}CU2&;-R)q#$OFco2p&?yu>hKTw8NBPfLXC%XD;A2GT&ng8QtvnqU^)HFBgEp> z%oQ$bI2dVnkPs@h9$nf-7nr5!!{$R&!LpU}jPj-}1%ctN=k49~lcuwfz^eiRme=(1 z>0-3@?>x?e0vcPaxL!$Yz!-jt5%%&7My;@cp>RWTAe+y3YRnNXMrRC=w}cwg2p9zV zHxwg_W9#6v7N)J2gV#HNC2y!}DO=A2D6BGV&~_jA9w7@FnJ08)x#S>Ma3N`~r*T&P$lO9^})an$P{j?UpBg4xZyf?5|^uSi2#a9fo*D~ARbXGS-Fwva`(MN$v0eb*u}iblV8$URgOxI`;4)G5}}r6a9ns@IA?=lJiI#mhp+sF!iu zELX&cSkO)BWuoiOC1^aPphzmCnqRN*$gFgc2Uqa|Tz)8L8C2QeOZihHY9sr-9|^sS zp<*r)bJLb<^(eTjDPIXlC4&wp)nH@5U5FBb5u(M5NH9GYS>JX%n>%-jEBf3fQ?3fa z5J3~Sa*N#aiXOIHaPU=SQifqla&0|E>f}rD5Rc=J^n!uTywdHrz!D^WYVl!RNM}JN zIrA4KzNqi5DFgB_W`8QDKninBl48{Ko0a8ycDU~6vhb|8=lw45`hQw124WO;i`b+K3FVnvSOXr;3P=@;YGEwb>TWguK}X?$$sUP~+5 z&xj5aPk4DQxVhFGCbZ{iOBg+k{{(SN4h&cyfz3@?cb)=4N&jR3{6szCBRB7hVAmYy zfkoXO`p;Bv_~<|PoowRw<*H4>l1A=gs+mVYtaG?Y8e}@&X&@{Yw!aLZ5-2;@TGpObs}C ze)mo6{F*x)PaKwxS3a#zII5WQ9eHtfp^zE!k%^o<3`vm*Nx7YbJ|m zj5~Hs*5zGi>sKrMYpIqxmB{h{?CesRTc^%5T}E!OAUp%O^EbG54_v_z0Sx!{TX#=8 zfMfXAKLbzQQLg}sw9s54-|nLZCkmx9b(xHTLa0N*Mk|$CSjIO)aGES|hueK{qN3^$ zYXl89G@Yzi5(K6iXo$E2(o23~Nc2dH8k8}H`s(UU43azI0tedw$qJJs zx0F!?K95g+y~mFv9rR77ML7WOx-muHXG)d?dG zJ~r6DqI99dis5X2XoJdJIfQTagsYI;>}GT{=2~r|MJ<=O&B^z&_Z+_n;1Mr!H4@U*)`jpf0T2 zTpvk~NT0`>F|y$*G8@CW=g^drqfmeTovpIF&kgAUQDK3WLh-Z~htrnjlvvFdLZLDf zLfoyg1)x1>LhvLy7A=y%$aQAE$@EJYsk*dnfDp=#{JS&EsIy2~+7R`;-F(ZhQ4(CR zDyI#eqGTy-ccVP_z!|u;aq&*pD3E(0czrOu@~;%hsrg6Wy!}M{+#CI((TERzGWW}f z6bAXgo8t|A;33`Yw~PfWNtg}_n4kKbG+&m_%WD8PLY#XuwOh@c+)6xp{Z(I_N0t?# z^r4!l=>DSf9vESFo!jT&CH{!5cu~$BVbrx}`+g+O`Y30s<}@r9b|!UUCb%^b!1?W? zjUae@8;4>P@WED`<1oA5v)WiU9P&2@`j1;7qqi^ptaf!2nrHow$7?KMvRmFJjLTpS z=Mqzz(P@=m5bq{NEt#DBC{9^c{%-a!`tjfPHccqmfDKi$R=x=-d{f>C?y+25nA9Qy z4kbkBpp2CuWyF%vG)F3bMh2lecPu&;t#>`2 z4u!!q!&h|XnQ%oD!YPx=l@yJEp(r@wF z+HDsDlVH0SuhZds9?J9T}WiuvM@pbKkiZb6roA zqscKAM_?X)LMg`3!~s1vW@E_M8mlyn`vmRxn%W`10LvTVHJ>_s38Q!q_E|?hoQe>6rYBsOm3+;>z_w>O7_2sz#gw!+)j!@ zXj06rwFE>vJu&BxWLV$fo+6^?ucmBl9bhSku&~*SLCv6G)JH?wQP0|hr?C^wG}gNI z6y*wgq<5@|Scc5bW8g8XC)TNlj~i=o84%%29M7o>Ad%Y9%9^83Ui%Kec1>zpwrvUN zR3W;|#YgYdO<6+b9vZyH!W84tbK)OHCbdD!dvpl}t}RuUlr;pK5}#@YoWX$hg{)j} z|3%i3qao)@!w=OOzVBy&FU0B_9%S%$G6M#2S zx=C^&0Q3zCJ{1_pC)T+}v=EDOm+wgyk);KlCV=!;zx;YGKejY0FPS9<1i4;u`U9_k zu8d5a{{>f($@jRnXHVmVCl!kKGh+ga12bD!Y>ooD|F zJEck4vvSF)DJ@ufmlV^MeQ!P4CGb|w%ln}z@!QJFBwbBs|7FdC741*kbLGFEK-$Uz zYmbJ-r)(mu%KahZ%dG6#ntL&tdiIHoW~&k;S*lT1vxFXrDhO2aBF*!vHT!tE@Jf%& ze$stxYwv5TrtSK}zoys6o0)$M8)jsE@_XgyEt{nBG4h}{%Y(xE6P?Q=X>A zBj&cDt|{Wg=ZTOf-mzajDnvdfo|~r;=_{FX5YwpxqaCBTAM*tNZA{%fzYE5FRBXRu z8vwRngmrQPcb_SC%SgrdnhgD1H__)^>1=vGKmzHt0(p}H?3WGg<%?4(!CcBOkB#L9 zfD_j(mj_{(MjJg(kl`TtqTEipWY{^^1 zvY?99-&y>d!>7J#`(AOUV(RYAGQc?pqsD6fA9{uM$$`U8JK`IStI5;wNE#27W&;(u z>4`JJ@=YQOjXFcqpefR9hFvApX7Q>xkz3i!`V?8G;2$ZzJLM=; z3<)WVOy471#ZdOXP*lXA@4oqzy&uQ=W*Eqmxt4xr%Q~PmY{u<;OANwNPX;eQiEgiq z=weU?H8@K+4;4jF7`cx;v_o22`pYiDSZz!N@d>HzJocg5Ea-*fyRDCau6sfs@jr;d^Akqk8RmNy= z^~I_nG@uJ+4z)nVEh{<#s&%0K{Bls*7!4P#n8^~iLWC!P={`EsZ=o>}`~8sjkkMq1 zch3X$r@HIdam}u4_z3qKbC>5$@dRxmrEfFGVORBPfwLR#A1DTDj?7p^B4e}4`)y)M z7onU_rWcWBzkS+^bBb)I!RgDh=Q@^?m_uI&5D>^kv6#{9W6}Vzuo;U}5bJyATtZeh zEdyB(^N47qN6x0JsU~w|$x0~$|9!i8H< z3h*k>sVut$FTNY7Z+N`cS=x@%M4*HOHOP^rO^C`8H2xIS95^H_s3LFGu|t~0Zj3vt zV0v{&-+n*J0e_r-qiXPEYS$G@_ji+p`*txcWXIJq*GY*^H;+J(E3q$ zvK(QDgeR4~Y;C=^Uh#l&H1=XN-C<|ULu!Bv;9=8z=AgYjW3C1j+1j=Gxrfp8otiqH zk)J*>zGH-2BvGl4@o-`BR z{4vAX1EABd6^M_vu$fK3<>%TGlw)Mduv8oaQS;<%=1H{N#J=D!9JKTWv6G&~hC|37 zW6!pm>)N*mbOUaMgJYj44_FHZ9&!lXUiFZkhSQ0@@uy92BC0W?X@Bomh>dxardGjv z2+*xVn2u#>VOx~vuFG1=Pz1cCy~H`fIw@G8je)`fq^DFp>iMA8WTH#i z_qSMB=+8On4)&G1`)sNu5`t)OMjWX%55|F)iF`t%86isX6--eLm&))>2Dt-s^wtXFk3yMIYeZXe`$ZMeh@)q3Ko(8>7AAz5)M4`6^p%{7H4RSsx0ja8B zE)aYahW+6%pm4asoA`H9TpP16V%%5bPqwZn2*DV6_3wy2@WdXIkJ|Hp+T#pzAlKRU zM604sig0Rz7*#!LZ<-%}-pG;|6aLOFZ!Y1tR-pA(Tiry15UsvtvYv`KA9>NPc^hy0 zcvAs<<4Ap5euO@r)ikwh@sf?#y7E04l|psgMCgykmryPc*BjED9&hueB;4JAm@IxwRh#C+kwUoB> zW$s%k$9p^+k0Whm$C7*>AGa<;aBJ(aak)jt4y_+Hi-UC45O)ExvuDuieja;t45b#s z`be*|LAEvI%Q;KGiPR##+BX%?hoO!38Dl&DDioeEb*x7bbvgTR4c(5Z3JuI_s1BOr z=R*Vm+HeK{6w-H1hF$97%fd)=C?&o$y4)uDPhvVwGIt(CgAPluu-*n2xq*cAjdZAM zIxP-hJA~0ghqB;kQ5MH+vWyu$lwA*)g$Hf*`)k8oxz#J@=TD$rcBnHdAS~n9^z^j2 z8W=kElv4v9FM7ZKpe25G{JHbf(XT+Tqmg)GGHrD^vm~BGJcD7dG3ApJqX{(d72w|XjV{Q48U-k(X@l&nZ;2eX@y>-g(TpORu{Bie*( zl5&}Tw)weCvXs`2uz6IOZ#n#{+)e3^GeY2oqL($be1~fy(kk;>hHMJ-=d!7Xn;65m ze-u;j_v`VAV|rVoMg?toffL6X!RuA87t6Vw`nt?`L|A%6vyJ@0wc^WPk4mCu6BaQQ zlqTrPby1S%+^bosa_~U*=63XMES(x@Xn;IL>_#-!t}_#+?stt+BrK*WFLiVg{gRaj zED$jmVl(G#bXH7b3tMM}H!(ZxrGw(d1QjFJ&P<<6SEXN0W+XLzzIvi zd5n0UG8?17@Ol^WQ2AX|Hnb0ziPN3C(pU%ueARWC==y2|>p;HGtN6|vmaehudc?Qz zLVlwiI>ej`({YI;HVlJD6urqo8*s+BF$+oleH`XSTk!|9s*JYbS4T7$S0f8B71=TY zB+j#@WK%yJ1EMeEf2>RyN+R@4zuG_OuLWk3Tt1U6sqB>J;$aG^&g620bI+`P` z=;DC29x#=Zzn=90r4KE9e%;awbF~I}g4)LS1^>$v)qM!oA%I0sU65D6t>v<@9UPHC zgcx6v6+1{M{Q!LF5n6Nf;0LA-=2>HTW{pgey8Y^MPiUWjE*ZvG9@Xl%@DX0gQj=xv z9~w^S8=ug~==R`_@snMcbj5oghjrdH`^3Ir(U@4l-;&-In5;lwmA4K@W?-z>5h=rL zDHRLPl}KsE3rHvVsT|Gf@kkNa$SWKk$=;{wl1JkKo^w>`T>_X?a9gyBzx}PV((pkq zJJln%t~q#W5kKYx4pdCyuw*^ziMJxnp1*?SIBY=YxRTAl@{;L*$A+6;r+wqq9M2B` zO?aJ|MS!!Ih*QNP0kQK*x(z1f?#a;RKxr&(vB9!Xce7=g4~MfICEEDttRm8Cv$u7~ z=TIC5j)F|nRSS_n&29;9Dsf7K)nf-7(XHw@KJX!iiw|R3ymwKYa6LqmzM89b59z8^ zM{nhO*?^;!dI4mjYxm0f(8cmWxqBy4;Yg|`TW`^yw=(0G=L(|%4%S8#Zeo&jrbd|6 z6|C!b${2lhqhB?rsCr`dsg+Z=e&>zgEU-;W`c3+N0`I&!sNerrn$=YAub^CWY`c1s zRHa6oo*wN{1D7g}pO+MIa9RA+`0+QSC>VM*VD9)4dit}KL{&;ug;i9zKidcLhVjt) zY7Xd(_f`Q%xh=W17j->UAuXuQzijS>5Lfh~>978*doHFjf`*G0L|2%bW~`n>mu=Jb zb;}U2A<@@zc9@}F&|7JAt7QLR<1Vt7<<1yYc23TmVRw6v7y_O9D4adnDf!8sci>!x z=^}QSAeVeWN~4F?1(AsohBrm~K9u0w-L2iY-3llDmMA`0S`_yY2Yb7L*Vcq?q7*Yz zuT#s;gF(h?j`=e90$TycV#Iq3gW&1yzNMP+pu>cDK8ECYXTFqsd9?W4i0j%Eg~r%* z%0B6a!8Z*5Woc!w+vDX?1MZs24x2?y7s@74lt%sNMyGAu@$)tPg<`+EirS5gkzk5g z2O*qJdCI&}GlnshU|eZBQbnv%1aG^=;E zSoUR(S>BNMF}IGdU)5_2T&rl$DCRaWTp2MJi3%~CeFG+W@ujCEnYaowDctv{rn*W- zh!$#|5C1Pf0!Fz1?X15(Jl{ID?@56|b4JF6OjpXvjkUN#^Cxv4FU+#*!quo-|8y9C zp=Hcu#>V_rA%Bx0p?in-7+F5bDDlgS9&P(~G}D`ADLl8Q=w*coe%nQJUzl4GI~FL0j0#!G zv$p0b(AxYRmm_#>B*VO;Kifh7rnJ*~tURB!eF@eMS8ym{^G3PjZW6p!m}74V@b4_w zsg3h|k3$UDeyW0f{EssN?kyXfJtw9zK9hrh_{7p@XL~P94#%3!1}l*W>?59<)jMuk zHRW!46gt7=jwZu4HFa{wG**H@mf)-7O=V5U9LicbuY97&Lj}#AIK&uw-i6nsa?Om+ zP6Z0u2#SX0{$6|??byDrCf$WMmqQ)AuMD%&g>97{27_mRbXorxLq#VYK&P?vMG~gz zDN#cv&M%sdEcn}|kDiOC;El$0ybYF3{>-X$a;%7v@vFyO*I5;E1d@-AqJtU`#a8wL zIg7Z+={`8k`2xjvzgb3|n%hyF^2Z63|FbFEe-2w<;lxp{I?|930P}GJ`LBBde$xs) zlqpsTl&9BI6@Qs(S`q14h5OSCp}n7LCNNiI&NkNRs()W5A!GUneSIQNb@dyWPWR@U z-31i4L{(fhrABT*!nb4rkstKwX-RYpk`s!DxZe@~63syo^7t*Ni*Y00OqGz-jLUx_ z<#O+^k@%W7p)tjJ+dqE{L}Hh~VxmJo`_=V^*Z`Xr%vv`rtxq~=@)o+|^J$r?T?YLi za}mYoCi_tmLf|U@yb90ffwc4aZ!Z_94KZLHbbs55`cKb91PDCeAMZJ#0nQkDf7<%k zvc!3sE}#Pk6dyDwv8JJUQI`0^gk-LTi0CK^lGdRKx_d&QQz4wMBEl%@CWv};uj@8x zE6gq5Y03+S{2!UVw5YQ@g{TaHj;9;GD@myK_+iSr*FffUr=V|gwe-cL|B3%hwEB*&O!=widE3YeEVGW(nR|;2!o0(^U;6+Y{>gbD) zfGO78sg&Wwo}5*6cA&f};qwtEOWvY>URPHInm>Y%o!l zT8uWV~Im~MvCDsh$v&Oy!xLOpFoQWJnf=((+O@jT4t=Mb%S}30vC*|dC zd$(B5JrL8jG%3-Ck26P$s|>R3hninA9@#UZd)r*$WAa;cG3!kgwpK0B)>odM0sa${ zOkbsjfU+i5*i_bVHQYiflhe&xA{RWWgABVy?=_^pnT+{jFD|wc%}+NuZ`WWXTxL40~7ry4W*#1wnQ0_o1U2f(@QkGGWVB%&EE1 zXT6cf`vDmTu5B4ROaw63Ol53O)y^pN_Buj)wU2N;X_#2&Qe?h#N&gbSZA~ib$cd#W zP2o_v3#{9-X4*&l!9&&5QJ{9_4pEsR7oLf8TYPLemh;G_Y`$!{_4QeP8+f317)Vj} zpHS$%fx9*E0RV(`jBE+emTGi!YbGCTwYl0^GKh?%swl-W>*zwTrXwhB=A&%PG|;Ww zlWB(0U0HK5%sGg{TnsyoZR$&lw`O6_Y|DSLE@t|vdH*y*;qF+WpW;HJP*Ys?ZI+eQ z!PdM!qQAAW729<=G-V^Su<|iJFWFRg|BE+uY5$(u`JJY7g;@%%n7g&6-q7Hdi)Z*^ z8s%cKq~{(eI*F%Q`uhER6Rn-`s%pt%g~Kv1RR>{d2@4y$@XJt_yu`G?)5eR`Kl^h6 zK#7mmVu}5+nc*wyCGyTquUj2)0=cynbwPMPsPRlmQRmip0qJ&DrAGZEi+)k?N-b|x zpEKrrq|a9Q;<(aMvG*0yO{FketTH* zhOBS#fVhULYE0ggXQq1MuD|^i4We;Q^8pAsWX}vk`qg@$L!thX&9&tuNUtl`6L8ze4y*!Cnd`awWzo_EQ|eE-LI!wC z;5yOg5?hdAp>3x42{(jCw#@E>w^Xq(jmGgfq*&a!Qk9BTMx3US27Fq5(|#TZ%yjrJ z;JElurGDH^sril@zGHfklmLXh|JAZ!J=T@89qe-yY5+>kJ1(FI5wfcO8~r(%h|ujZ zf8u(*gGM{zmt}Iu&_>eFq+fT>t)zUE4~7qTYH0H1pq2v_MSToB<$dY<+W82vdOUxt z&N>bUW!x+oVFgcFG?0%ub!c-ih;sjqY}V;FJ$K%e0L+BY$PLEra|W0;ep~J2&F}B9 z(g?l433pgwZ2PIJmV)7v237z`f^@!q_xo`+$JhnmruzE()yt z3*7%`y9X&TcL`QrCM{*B>R-yZ(cOBpElz)IO#fA|$0*>efwpBS00npT#B_0XTn^MW zO-;o6S%xn~9>nL$cho3{yGg1jS#OMa1g9l_;R>VJE?gK(-5pBryV>0lx=`HtWBLvYD; zN_H%KUwWXy5_rXP^s?f6(X>3`Sk;yD5o!BJ#@AFqtfRA4A ztNA&&55jg$y9fidb`>$HQQwfbvEe>kOF^e`b)@oG>##|I;(Y~-6y0^>-py4~Y$lAm zl(PC#Ei~!am}RMf`mip9n+Pk0EW`APrRhRJ(k3=uDGdk+It zbZ2U6v4x8$nFq}0e3}3kM7AFamfOu9_cfoQ$Pzo{jkD1nH($I}nhA^&mKX9>MY-M> zQ|+sA_`R;51Mh2kZq7boPyAZOdBXC|z2b#)GYAGnaxVz*F+J;j_8a*yo7?r1`YuMe zFNw867ZuM>f>_3Qba5$LD5D=FT5LKxyO2O?UXLDn+!}4?tq5DS{Nn}!yN>)Dtz~D4 z8KAT0HSTO!^x9mAY(!@+z76uSd(QXM(%HlsK5Dp<=K3#~BU?X6e>pK%G*lwrJ&~o6 zfNw72`CH@veFcMW>z_1pUhuagQ-$6*0kc9R)kCOt9BD&C4Sni(2R*NmaY0c z9uKSqqX03ju=Sa4*W9UX?@0SlhnTTSQM&;jTapM13qW60(|rr)Fn?aa4;!ktmaGDS zNKMUPx7tzp*@zQ$VpRr;|M{=QaEO_&1+U@9tGcB7+kHe?^V`%J{Jr|ftn6~Lz~Ye* z=;dPsrVy*SWbILTv!w(f4}Yu?=<#f4#s1Ta@_~wsPYI2X9yfhl2`-2;Y^dwApciHY zCc3$bVQ$NnzOF);6!&}mY^SA-VxB(EXFHu18z#<-7;cJWW93{24E`c?1afxW(=!{! zFP!rW!c3>N&qYyka%D%x(=Gc2k;yCgbU1|Ek#=~rg&P}16lSvDH41q#6*5+!f;Vc` zy0gG7ZKCStu*0{20DFmiDN^1}-9o;AO939noOO#2q1!<2|GyL2wCk^n#BFApLN}^c z(e@y9S(6>oQWz{B0O?&MdrbYrnUIBX!Vq(9@QF`Q3(PHV$M@P`9s%w@)it~cGiUm2 zF0XnSan%Me_e`r*ADt3LmXtSJSk^oMM6f_@IP1z-u+gFE))*?soNF!iE)x>_mt#C zF-S~t(Kkdmk3vc29_}~?+?(X|&q1?VUnDuv^pD&T>ZeCYk@@0Texcj&F2fno#LSkn=nJ@DrEk}`FPa$s^yJ2II9f{i{tf&hSsj^*d^o8 zWc6D^U%80ErtqJ(l8&g-0T$UWdY1uqLLTK}oMr)QE->xv&t_&>EFT8PQ%0%1XdMfV zHs`&$e3KS)0dMsAnfS)WDB`k?ErJ&xVvx+$#)sAlmM%;p8K)8ca|r|=)&nEWWVks1dD#E+|UZ_=!Kv( z<;392Atvspe}U(ZEn#nQl_OtJ;j@A_loC+z>PhE3(`812Ct)JF+zGW|D~e(gHlF3x zmn?ygJ}HU&U7G+b+uViMS|E)3>nI^Z10gF0fvjV{A~{1~1#$ZgH@E&I#jG%u%Zp?n z?BYAwPzNS<8kCN|csGry(O?p~|2|{jv>(MCMj*=_EO5_%0QleGf2ejJMdYloRT6^+ zeb!$d3Qjl?1%;(^_}$al%oq3s>U(!qMXXU|CvCpWKYg#&oq%xKtYAuHmu_jMxGzK~ z22B4kW6V_DOpP24Y$vtR@c?$z_riogh%W~A@lpgJGvi!G<7X>Bla_!`Kk11tHSrA` z>c8UB!bj$|h zOX5n1$bRj%JB$M;dnSjj*r|u8=ub!!Q!A0}pF^@M`A?xieR1l!^ zM`v!qAHFw7a03*5x+vcP{m$e8&^s$Wpl&_==DC=(X=>7&7OWJvQbK z5hOwtt`uT&bMvn$_vEiW3%bsxh%_BnGm6_-qNe)j`-1vaOmxV4SXnkq^|N{GThhCp zko{_M>{=WN3bgtrUqoWEd$dWP-gHrVkFwC(K1ZjD&~4$vEV8HQp3)ImYVhl8vq~mYm@Tf z`SDn!I;oWKhE3Yv_%-vNK5=c?(xenxK2ezV$ z)}&U0yDtUnNg(ghQU@b@L7GFx%TV7eU`dk4(ojzv$kmtw#7jmWW#-l8 zqKOy=0w#H0X4D)Bszjtwg#C`8lycs7I~8xX|D~%f5~~nr#P8K3dsmnq}NVsTk^{U)atJRG@c7_Xq2gd$oI+-&fIW?*tp+Mk0CI zOnASVNCC`RiRugFzswaV{^ynX?}0j>Tt6p8mBwC=j=%{d5n8(81&PdGWh<+Nv%ez? zozn%`MW@6IAWu@Hi2oZp2ju!OtJmxf11z?Q9UrEM zQraivaN!iLq6V!AV@)?SwTKRWA83YT@hpB>CCjp@FCyk3H>D*L!7fRp0BK`{@*XhoT=+nj!h626_Jw!83(Cp?ns9w1^&fv z!_hOLU))0O5yuzNT3&yFP}12gdzAFv0-FghvI+BoPAOhsUj-~J8j3pEe09F&VpJz{ znIj>k8?(j9Q(VJpA#?{#4&w3$XgJzEDmR)CGHnD%tccC63a&I%0_eHwr__O6D{AvH zrNgjGkHVw_%u(+`PxHxKfiHhk_jd;(oVlkoMh4XWt+oxt$bwIQn*UC&>v7HY?W)HA z!q&PEnl39XHizdqJAy7w0Ex^=gwULmqe&^kgX&toT0NP>OkZT@yAUudA~#47=N&e2 z{EvfN(X}SZaBM^>L?Q;a!kp1tU@@IqdV=x6@Tn^^)4eTaT9Oq@6emWDxM~j=+d6?1G7RL7!KmP{~INUCZ5&B8X@&{A*}Nevc;9L!0Zp zr-gI|CNPLX=^^$`PN!7R3~9ON)Ry`C0Pe6U6pf|4aOL;cnGwkI7s4R@D60D47_=G1 zIfNeEanG@Ncmjm&moL!=_}Fz5yJH|J?p!;9L9R4X#l@u5P(5eWdR9)KA?GT2swDfF zU~|^iDYRs)l&lSDn};Lt=)Muux-%0_*uE5O<4{w*hE?yN3ex@eUl%O@Qz}WIYQJQn z-$I0qlpN+q@`5UjQUUzPEbZ3OWz@bDu1+?~8=&R9a<`+bRs1!wY{B2v7H`vB-G>r*jrKIHdeE=!oZ_tH5;eU;YjhIw>nqEcV zWXT>zAW;A2lKKw8uj&f8AwG$amM0EHF3b2B57VaHNq84E0Q&T&irBIuKf@Y8*Va1t3AuGi?sKkFceTr;Ryls&P3+VqE82oj{%pTkWPZTlF z9EvSRixB7*;g0XFX8(1qEbDdHJu73T*KiG2?-;U_oIj#V{%A`5e6f%(d1b_1vUDRA zh2+q#?lrw15$e5h9Y~iNYh#D1x;Rlbf?0X(ikXR3()xXkx|D8DNG-}Ym7gm}K=XLF zPAm(expldXfyVw`8`_yhATraxf}~s5aBoKLbtUd}@fkNM0}fq%ci#TEkAa zmr1)Kl=rq|Hl5)kbV3LdMq0hsN^iQvLvx5pQ#d{-K>9J`Z`dbv zS4M(B9m2rUU7@3I$S0NDXBgsP?heMHVwAZ{;Dt}ra&%J0cLxYP05?ir|BJui5bUYR zS^MfQbW!P4yZpgzh{(7>~~IV~74U4$bi6RP+1ji{F%i%V{iSmDF@k(jAyjxF{ufo3KVyytY&dj>ei?eAuV8 zUyJ(#eiZy7MKo$Pe zto3jZ;|}kq!d;j=iEZFQOq z5UYRG-CtfQeGnH+AUlHfm$I?Mb_n@GiRGPoE`o;~$5y5bW580S)kkb;r+{&mCO=f4 z%ko!`%ISRWwpJiicL=S32WZdfx+#{bB$wVm%uoF39GG&`PY3Px=1*4<>TwI(fGuOB zJnr6tu$47j-VDcs&C-dOSe40Xnni)2v%useawKbJxO}{#p?>k@7Eqgo7GBEcXV4*U zP*E$hI_vt9EtQc@om$}M+v&pyuJQEscGc#PmVpfRF~^gr(=0)|dJpV0uh`sQG~K%0 z=rFfG4Arr#3Qmw-Eerm<n$M=vx15Dhr$?E&|8Qx7aP_W{*y2d&GfT+hG+L_tojs=8-_6H zz>4CH^4Aa(MfASQifc;TE~P(dPoJ+2QodU)Cfne9Ey>MV&)q2DL>e-MQT^%X$1B1L zxK>*-YxgZg{`>A^nmTbw2XY9G=K9;O#+4sOzsD`q=83LZ7>RA=dTTdx^W_Po5(+t2 zslmFOWW5sP7{CIE**Vmfxx(sg*ij8vU(EVe(My>M6*=$qho{YBKAj}^CZ{x%z`d<^ z52|qHuFMyv&;u@nQ5L?*j_dNUttDR!^g&V~PklwZs*hbz@Zp0atK7Lu%*RqX?!G1Y zj{Jw7|3_o|oq{FFJJa=og?n5qc|G+h0m`IrcR*Z8XS*?`wI4iS8j%NVfkj{kz)e{7 zJA=h6=bCyuk$yD4caW>Y%W)RrqvyE;RO_N558&9>QN1w4(Djx>$22*AZ_AJXMH9W? z3`pI){9%tCgg*?%tW&ZYUU3k)>B|&l#kc$6}uOfa84C6+7zx|^=mEef`SQiVpkzL?e9>ftvo8KH00{G zN{WmRH`P_ep6eurxW_IZvyAg2k}I-BoBLy_K&Sfl1|2`ZgWb&N`dKq4e(FsbL7x{1 zxy(9I&+!sVGsLxjhWxtZ9;1@GP+k=RZ6Z4!{nrfQ~Q5YgX_^XS2uv%zV~s5? zuUmPGrvpvw(5lEFXE?9|)*tj7+aSnYULe?v&o{=m)lbo|D*P_dc#9@u%E?lJDdPBF z1Q$u;2sMdFG%XqhLKEI*$H$<+6(i;E2g4UGC6V$~%vpU3DZYL6Wj5iA(H z>V`&V^w+zEb<&Xjh{R8s&vR&xg;a-xE5eV3XhwO#7IU@dKeas}z{dO=!zTwZrxcF0 z(=zx6f>59*=`aP}=<(<(yYJ!5=Hovo?(6CGeH$h8fv4E3%$xtqG!aCsp7c*=YcjUf zMbov9T#0dresG@FdWo<;$6NA7KJHn^UB(H0S}KQzK2_++K9px8m>Q_`kz6E-;Z*b2 z9wI!}q292bIzihw*EAm3((|S-2)?ZSTK3HQbx>PuC@{gpT<>ByX-n1ILCK(@(1jiI zrNkVj1mO>q8L`ZMi=`lN=1I~PtzZdM%YnKGP2-dD%=PqpTG8=+|GI#MdYL7k*nN(I zM0@JKZ47DIUx>mko}L}AxDbmebDk3QEW;th`4X5wLL1!`i>-ucn!S{*i?uW zq!g3cViSlf$p%k*>yg>}ZjJ=siWa61UAh553Q`n6J+kLjY{Bs*Qt^g%Z5k=UPW=YtxsBIb3K4m@?7A{N}66) zS@Y20VlyiQNiXbm6pH;!WWdEy(PlsG_+c3sWA%zw5Qbo9uxW<(Hk&jyGoO}NhWSfi zXIW?+{VRcC*VvVFU)r&tg7m`18gQ-u6l9ICUt$fnz_0e0^*(d|%D@W{7#_R2VTwqY zsxsV<5OQ`z6P8pmLonK813@rd|L1i()Tz^-5`Cpu0yQ2z3l`Vs@Li33fA*~U|^2dA|go&SF#v>5w!1!h{U&{(yUxIiba z_D+658n6uX)3%=sVVWZ&0BP|W&uVqt+@$_;U!p%JG=-7b_6TE=Z$I?E1*v=2Ntuf# z3IT(MU3axCO)}K6Ju}^$ApFS!U-gb~nU@fW=E)E&pkIiM6cH&>%suOfT^Zf8c3%3| zm$}hyL?Y_GDHG|x9ZVA|(@yvc#~R zp6HPwoklPyuL#=>!`*{gQ`?y&{e%>+qAc9t%h=O&OlE73dP z20x$HJ>LDlaUlH`1$x{3Fh(A8(7cIQbEH+}E!6}3+9x&xo5-4ztq!iiA4qRGRw^9W zLkLxQ0{m9@&gRBw)ENmV9*TR`r7lyvId)=%E`GK`Yzm!1^{yFChPj_t;ID*l-Y972 za-W@6gtPuZ-Plg42F+RdlMLK_Rf-u}iGSmI)jjO07ME{4q~-%8aIgKHlnzrECC<)9 zJ#6*0)tGm+3xpard(W%MpUuLzyr91>-1G$<7?plL{8kq>1$_;EsFAg-~a)Xj&v?-F;T&v7BK>=a-%Itw$FP|QGure*JnSQ0FXiifW%Qh@{9kc`dD`4R|GuK9T>T7esnFJE zO;X{AP577}MYh9dVsO{vqR>Eb^IARu6rtRpZ;Ka7Ot>@RS(2>{tvJ~B$n?S*JPXyu z8~pk*?68T3Z>r>_Kd}OCs_w}2N&L*XIMKBWL2O7y$vRpYRzhtcQeJN2=YM)$rHqH8 zgyYk^O+Pitwn0JtBvy2dT*&gs|>J`Bh6~B z)gOo$!{lku8U*{4@#u%6SxAv;Mi-h*oPkm;&kqezZI$bGY55citvm~L=v%^d=tC581-cRC8@ufD zr5^g96X3C7uIR$4G2xjWma0|L-fj3C4*6XvEkP8LCOpjUGb@To_o=o4W8CHeMAdA!A$t9Ld z=?I2Z_=}jGD#cWlrt}7C|3r2E2a#<4%z<(!cB&s=4rVP_gK`2fM#tT0H!&!n6Jlp} zE~EW(17jtfRk-_Kt_p8-b692|>zF5me*-e;p?+U24`buXU~tsKM_(Mu4JxzTz+aI(u4Hxy_=8iiMP;C zhC_~EP8L**BM;Y8{79-a1_c*xeqoybFcg=O=`UOOxG9y7&s>-Kdq-M&t>_}f3*FLL z9+m8Ntwbxs2QX|{um7%eqC5AxPN4jI^0#{WpMO6)wXW~GKh4t(=wG&D86zxN92+H} zJImZZJcUT+0mkXuw{tbOS|be#Z#<8Q+~s-UC}%q#(*fv{%B^E}3?i`@#S?+RP2b|9 zl$@@E==zqbtq53v2zp9rEC(j*s_CC02ab=ESU#Z~&84@$CI#t4KS)%5-5yP!fc)Qx z+)|$Lul0aWhwS1f>rR|9^qaN7d+)zUHnFwfUU5Y~x(iA!lR>P=P9!`o44Y=2+MUeo zz>{(A+86chOF-#oPx9uoma6cR)>rWPjl2j{!~;Z?=}U3$#9+R7SNY{JaTNV$r)w-P z+e}_Ux#ZdjRvi+u7N)%_lK@Y0fhk?f!)SDGWm6RW21DpR+d&=;l{E24Y|q(XQ({s{ zNnQh1{rH^~heYcD+}NnR^i@j}+P@=Lsc7&(f!n};%L2qx$cUS1_~9Y*wVqvjPf&;D zoRWw013`tsia&b&Cdxktje`Y)&Ox8g#P$C(5p)4y7l@({abLF0Q|IB+p#5v0ZkNN= zOT{Uk&CBUDj?oocU0R1^-eL9|NDb#(FgX<>+y@=zPQQ$5BBEoMHpS{J69mRw$|czF zPpTN@hpFpR=3B!t$X`CCr2hGUtTr%IFrby5D){$z!&8PKfKH*__(|7Wuv0KTimt4> z@sIbGGqSM5or<}n4iUj+5)bKdP}Nv({FerFA0+t+nxM_!dQp$NjEs+VCUK~528ulG zns4q}UV!ctwV&>$UaoI`g4Vvs=B^k+aqISrR%EvCjkoNC9$BVcq!ldj} zd^{00obYFHF`+xHQBKmIKJP$bqRssW0)S>-ed|k%mq-o2e+s2UpX=^Tr%6+M414M* ztwKxV>-|TL$&EVl>ahwe1kHrjg23i>rqu)5V|AciLU!8PaWVeSFKS2>K<0D!^m&v7O-Sm0N1gd&veYX%RQ! zffT=eiXnNz)yr`0CH*WHI2p3r=no9zB>L)S)@-W$dE(jr>ph=8e>=s5`x;kRFdq|U z71BQ)`u2q5WsTE7v6rMIf7gM@q-jy`#BEAotKs5Ah~IUI6EFKtiPDlY}TBRC7*#9+ljCt^{Wvt!6R9P@!4{b8EOa?vuniD74WIdB{R%f>yXmd}*ls#Mur)DT=c96iIU_DO^Sj2S9DWArrQ zQd7EL1W$p)s`D4BK{CjMWJ6{#?j7z1D7TZREK9JC0$an{J-KDTl{y+Uwq^gRrS|(Q z0e2>w_B|6b9EUPX8B5~Qfi7)?AQlI-)|v=0K_rzNBZ?wc%Bjp-g9)t$N zOfpap2T+UFIw3;yLBxhkCtMQ{bl7)rMXEc0l1e}mybVc){N3Y(-467^;YfD@=O|;L z;pGj5;on#C+zI~5;uJtyPq|QC{ejr{5!7-8Gp37QL-b5NxUfGD%K7)A747r8n9&?+ zg$r}2;&g9?fKZTUG>I>zrAOI*0KM^fYRrz+`Luvnv-ue=!UftA%!^47K2b%Ls?0SI zNojVS3OxL+2HoonkWKF$vpR?s2pvSp?}AuBjL;KeyD%f-AUa3B)S8jM=t36q*M;@; zVu$o8y}8vH4AMfdY)69>=>6lZzu*_g-lB)>_m{?How(PdLz_8^7Nu&#Ln_vyx-Q!- z2cyM~DG;I9uE?w*koG(wBaiZ3#@C+K23-Mj8&cgRb(>cSDC_Narb|1Zzg_|wD&&y? z197^oS8?UF#i2s-f51l2)F!J>X<$M1X+LIR24sMol@&O1l$$zku~WiItl{KhkwLZs zPT0YmE1$mL71j=_PghNIf3Xj+E5nHk3IqcqV3g4BI*fKru!=S4+MZghDVvj*g_Y}C zyMxA(`A|$4C6tX_j2}(%k-?(E6TLkCa47*c!0{O|&=k%4R)bcxUNdCK9u#1VG9~yL zx9Z8M@m03zER%@a@iPu?@{XpZlBX`8#jAe1GZ$Qnk|sPY#HXm~(Fy8NSDCDoDTgp8-8 zs7`anO^6S7AFG1&Y}yi(n;f3GobSGu-o%fh+k>?arthrle3o|$#|)13Vd}S>4%+ii zeMVq!B!N;uBUnc1G7=(JAnIA4eaaIb1<`Y;xgmFRcE++>k1`~CcdL#S8(Y+ZeVJsvYSu0$pKrS+kCJKqpRoJbf|B|gn)LaHC_Ba zvG5bt3zN+?U}F~qTch1#@WL#0X>ewS(}|V- zfJl2OPpij4)W4(}SRY7>Mi@?8a#g<1@wzQ6+E;VcQ9YJ)Vh5H)GJy*l4ud)3MH-I% zHQ^J);2f}Xo%C-{1pU;K1x?4I6|llSy2cR-1xR3jZB?{pTc>5Du{gWYIg{r{SA8R= zndQ)c!p~o=6uH{-l+`}eR>nB9<$v8{P1pSL(1_DIMnhiPIfv2+SlEVK)xis;`copL z@06k5o6hJ^SD`$fAx|+1OetC{aMjv22=8-F+*mwwl>^{0HULiPx!5@+jf_!DItSl5 zu>Oq(j-r)Cy^Gcm>uHpdE(havDXE~z$(yvATEtK?*er8Grm;g5t;DNmWF*H2!6kRH zx5p@8*~}?vrVL|QgsGk-5QfAi*1%;s@gxK$%Xi@m-H9x2>!Rw=w_gb*jWUv^U5W0ECxurFoWNY|K)0W~|>oG{xcPs36Ns{m17KuyK%tp$>1`HwD##EM?b zw{ffYcqaUYe}3_mFM6Pu(cCd`?oOSL-cDS|^^Y}8toEc87JPKygGRYnr&=~1;{mVH zk`QGYuo~~E3`*Xufm*DZppTcY=&DR^2UXyjQs7RIVE^-51Z#ll?ky>8e!%@iHw7t3 z!Fx+Vao>QVfQe)vRMHE#!?J+al4o6o{*?rp1ToNZD-X+28Iw&S6dg~FGyIHSBF#cQ zlV3lwFxEw{E^Q^L=Qh@wF!NC*m8fWe`PN*op?i@ztL^av{BI|X8%qVNPqMV$OiA&qy10!OPSWKJ;+mT2u41pa0I}*uuBAB%abWj&7 z-OE5WUlxMBV6fMA&8>zlr(j?RX$Yxat7mxTCyENquK?LXj3JbR*fJoz;W-E-sp61d z$$eSk^u8-fRng6k31LFOdN4n3Of-bWcQ}V5yAzsTAPAUH+9vbJc3Yuq?=G~R(cd79 zz8XGcRGGqn z5Rwk~2L0W!HIjTTyg_ul>yZaw;L#~H5fgN zBcxo7t(0rEWzy7Jzk#lfP?!iXh{17V8l3gTwkQrNJKX8m1_t&Gw$`(wHyE|r0zXD> zqpRqDW)ptyehK@RZB$wTlkKgwzaYIbo&kPt7=mlTf%*8>9Ly4VGfGo#2>aFhw9wAq zW|jokT=Gj{5h}dkz5Fx!b-B5D%Es<0IUv4*lPz+19Z5G{w28HWsVtd%ww%1(0=?3INomSmFnNAYm06qO_A?=0V zA)KLoYswfcygFHA zII?Iubq1H(EjGTM9A*W13g>#0OG>Q#K!;Kz(&bp;CsGCHwl7DiL>aY+ux3>u@W1E- z!(aeI?T6(nvoKCJXCPq_`NHm~3fFibe$Knr?N_RiZiAa>37POqxkr$Q8zk`N!-DBC zXK%;0mw*QJXwQ~-rcw!R_s-G;2cAIqt=H=Br2MwI+PQ0(TAn6Q^~<5k5zyhwpo}NB zoqF)C0Xe`u0mq_)s#LLcu*4y<(aFs~S0h$M+PWTDZ!L?wAALau6`F$n9+9}pU;igY zI_AwSp5jx`MPFa2>#4l5T%>9}W=#B7^OblcrS}U28672o%6s(o_Ibzs-?5K;ixj;) zZ<98HMk=hH4=Wg~$WrOTYlyJ+Z7Y*|U-YkMf5rua-Ylm*iZi@^$^Qd>J&NT7TaUOx7hp7lU6`#d>zufMz&b@fy&) z;ut$|Qe+qL@**y~qG(xk3bJCtU})%|efh(Zd`T|3L-dk1vcQCnRCV*21#MAtYmaR| zv78+tp$jt?{;se&?t2Y$ZY07#i9)USM@Cn;<}Os9DA%f}b||#faA6^pLP*udD&Uvc zeygw#BU0+T8Wc2y!wfiKj@SF#opgRbDBrRu3@{EVECj;-HbpoGl2{r>Z>(~n zo^J%@+O?X&6qpOH&<2V;)uPn9CaeZ~HK1Jjt_)EmlF%S{jaYmXfP5uElm*Veq}>5S z^Pn)9(5#Lt2jy@0x$PYEwELbFpMF0+vx&+D`C^Xw&~?Cw(;qnbs}`PTYbWu%)&fr- zlTnT)SQ`U3wC}kOGgcID_*#o3>Y0H$5~G)SQ>&e-H80rjN=T-ZD`(-~Z`oFOoQB*b-I*8G!Ozy0EoXLnbW@P

Hj-pB+L@fs@aE~llX;rhtH{q(`OckH+?Iraz581s8ybHQO`4p z7)p8oFM?n;?bZjC66TlI9{;e%Ec(bM-uKSNKDoLBtk)nANXn+ydUx66fh})}r69@E zJWUxQVBgq?4aK^zVoM5vbqM3K21N>1U%KOUwGeOqcHx+>b|ReH%Ii10JmX$5SpFmn zG3>Ti)ZoXkt4HOPM}hCzh3M5$a)5u2L}&WgK|&0N7P>rK?{>LK$z%GJ_^J3ehh*Vz ze5*v5(Y$J~$$Z#PcjU3MSPKnnDcR{*1)BJhcfy#f3}!@a$G!F^(YM_}MLm}n+Zco~ zBRCB*$?X|;C711HN-$OpFbY10=z-YOUm9l>uI~c!XcwAIJc%dMUYeucOTRE7&l$HF zUpXRaS2R*+9EM{QxA!0HEZ1k@V&YR2e%sblIM1_zsb=<2fD4`4Q3BHy!doK9pd5t# zIgh^r6SG!9B*V|3J?di~F!*V+={>shxmx7(dsfH8;YylZu$d32P;b>NH z6K&tVShoUb{r=W%68!7eYZS_grixDXU#o7O-#=TFthqPwMp4d%&&Vk<8VA+`mil&N zJw^ZXO49pX1owS@RjDgIJ$1jhnrnqh{->q^0^L8{hLVGMx=JBuz zS31HdDa4fo_N^g_Wdz3YdAMSzYlYvj*cze+wE5SA;j!wTLXu-; zAr%RuB+ZKZ%LjS#v>%z81bUn55myM{)rZqHgBxlv7B;?%Izl-qtj$VE~6 zzW-~HtGsCMx0?N#c}X(Qkp~LitXMxBpq%75u-=0hHwOHx$Iit3f-T-0%Thu+DBg_^ z8XvW3InG?Z9v1nE zfQG-iw7`MKNBP23Bfof-FESrl*s4)oU(k&r68p#a+XJ;@FYnF&?SDu7*hn0UP?APf|*YJZ83s7&0N6Io!bS`O)q#Rjui89JyO8J0gZ7) zO)HSK(5j#LLolCfjQSh~EaHw--Oj8xxk{9vjS!BEy!sytiB%>(7ZwH_ZMGx^N*bBD z;lWu2TuQHB;<>=TX)JpYkM(ALZZ=_BagtNbgV_2O0+`!GrGYp4kTkHNX7lhVk*YK- z-GGo%9>y~9_@A`Tk<;D9RUkW)bzFj9$6pmPE|(+&v`*o{3MlaI=slmYhifk$$rnQe zc5lIN`_z^yOwK8jiOMX z)kZf5NcBTJ%NrnB40v=jZb*5|w9czoYV#|zBl=P+cZT48_bC(uKo{Q|iYl$p6oQ1? ze-(Jf+tNB3nwti$x~mP>zo+}0r=ZRh4<)1ZDEOrBbm!!Y>BpD8X8xL+sPYFZn+pIDQcpc^4+BUtG@fuLJr`9^1wqcR9fM%Wy2nw8@yUj$K2o{^}L=> zU4&NTfrqJYK9C|98JPyxOqfzg;ma;2kJgnweLFIc#` z6{DE!)Aunapd$8T7L@r240E zHf95@4TF6aA#_6A%V7Fe1a=Oh`SXFHz#O9uuD)30XWMKkM~!RZu!ON8sH>>+-bN7u zo^-Vy7Wzpxs@|Dtv#oCAxf zbfzf)&!RfmG&NUe|9HnTwfuR?%jWyre$1>75Xs89?uD?$ut?JoO5QncS=;tb6qp&Z zcebV!F-3EYVT|sLbo~~KCLYq$NGxEKu3^Ka0PkwlWuEs~-gXVaTX)V0yRC!dZudyE zD_3gGDta41e4aR?0Hq1@dy{U)KX58z6(|jb$`Dq9XQX{={5Z2{v8uA;Bbm&_k0A+J z;TJ#&RSy%zcb_(ffU4J|UC&0VnP|8SLu=QjR#y_qX}iGBR}i>t?P4m-}UXXy_lHAgn7jD zR5LvO$J$ zC5HW+6?8IK0K$Oec`u#JC;EKs{q#xO??+?W>C@KzlFl8sE+3Pqo?{_W6$6kJzI-!}!Z-jQ2Ysv<({UU0h$!l5#HC ztOyb*t5+?tkwVz%$0A^37UN)%JRGgV;?9~v&vAX7?2nDeq`>CUO_&zK9HGNjmm1dlLR5zcj9DQ$_E~$O zL@>7 zDF6WblSd^|8Vj3ZC}3P*<=Os?ZBYWRfRgQ%wK-IHEA(dyUS6i?0+acF*5; z0~qZ^b7(c4v*}y8pgS=R1rQc*MIY%4d#h$94SHqPWWF<>a)Zo7LfniOzw(n7ZJC?x z2!wqo{40;KvO*Uz;ugvVA~B-ZZIiP)@BNo>+;L8!Mh3xt3H57U;Rc*=<^!C$5ENEuat$@+b#fPILGrsB5w-)Ww>;U2 zPv}F5zumo|F_t0JJEKeBIFi_qLjB@(V1#tn$@Ab_Rti4+7$B|{oCMz2kCP=pJj77~ zVL&mM(phk{dLP-2L(1D7fmMPGo2=HK>XdmEKSfsprdFoghhLG)yPt2j`$Npx`UZm@b(8OctL2ds z!^fq8v3b5HnLu8ie{-!C-G}`&^MUcVm-|@(&aF9>1kGH`2O6 z$i+=PYLfVfJKEeO4IPN5V#F6-p|#wp+NIS3JOiru$0pHRgqFoo9GffQ@OsY{^vi-c zu8%ZHl7XmV^e9mHYUne?Ee!*oo6Sw0@F%oWNb@yl>D_#meA0=SZIXQ7r!c#aQg)>f zaX8)6Wy3YyKRpq0&Pw*uHyeZ8g3xds|2~ifYdkY#%6&y*nmFC~o!dU1n4wDzbInhF zUSuF0*;zaR!EF48`=@@y7t1O`cq_+U$0V-KjilEzty!RMsI3|o&>}2TMTh8$=WWri zawpQ>^xSFXKjCYr5QP3#rK;NkB#gFOA+zB!vo7~L=qHWoyp!%9A;2Xd#f|!o4~T=h zY7hXiIR~bPcBy41;73eO>&3B@?e>6adw!v{FTGL<`(P=eBuJ2)Z8`F}bM(&4B*hR` z_+P~W=Tq=HU?|}bP1Y!rF-P*qO!F&Pgu7z=O>o{IyxwmnD#+>TVoS>Ad^U*g^dMQK)=i8H9ZT%U@r?wCT6KDrC7V_w^2*FD8P@i8K znzzDv-v#JryN0o{_JPWq@M%!-&Y_S;_{fKB-LlAaq(R2AA0Edb`-|Wug^9@H>njcy zENz2;rz+!`FEO_9=Y9IiE^E)@;-{^1sTpa4bLl~bq0>fR@Ym)A2zFMrb==haHj1p5 zG#J4N^?Pd!0%d6#d97U?X02=VTZCY%_KrI57$U){g4xCo@PYF2_6_W9F;wFjr-+n! ztUfL-Ni+gh7A>X*)UUViBv^4 zMf^W-^s&9of6yhNHbw(0zyz=UxCH5@3064s(3nI3DBPi4e1_vjKB3E|G!6jnSlX`F zUBw~DHni86ZK<0a6ofZQXg*vS#Wp!1)HaYc{H zp;GA+NS-7i%m*8ymdb*wynk3XtK2TLmNUpIeViW#FIEZuYQj(zkm$yqixs`4q;ACV@PS~L|zfZZ8NRm<7fsxfIz5IIZhrHMOGWl~X{~nxZ-W=H<`g^)pLmy2E%P|&!4JG@z;8ORSc$nKzQC(TJ*!J zr3m#;lN?%(ms)`mXr|S|hZLCQ)J+|}l6H+zj~a`GEm7fm7CcGCZ&=0<#drr1d`D-j zB?}bYy7Z7z=sj{Aa&Uk#>a@>a%4&AqZl0-35l|1(%pA0MGa-Gq^(nSp0j6?_lj&RK zlh-YR5``w5Ay2*BXQD0Vf2RpM;q<5B4=7&KpBXCZ?j^5ua4aqctiAZo{;SK>o3;Ci zUJ8;v^>yrlLuxM}uANZ%;4 zzNVOj??pw~ytoXeYZ2y|{7ju^;tolO)5NqRPKjKTf7Nd!Z>tl{yCo=`J$iA@jakc@ z$Wq7@6R^(8V)BFv!3etg{WZJYCQMi_xoDg*^u0$h79?<2Xp&QXX5l{ztF?>Fnu8jp zm~bP2k)1_-G(6mQQ&IpxTUT1fv;vNS`N(Lg5Vk0T2=ZPzqk_3js|fVIJ02d&fezRd zNO~dij^oaS@Fi9D@s|>=*c{y*9LCciGE<~O?Mj0o+pu)+`0k)qO|dDRY#vE=2o{ze zZOA|HNfzbRhW8D2n>&>W@6F1(4r3I@sw`H%)`~gpevTga61(^9Tyeu{!etVr z+NWTRJ}=xHp7N(>cnzU%Js7&|sUOV}?s#&yX@DIukuCXouxzRF3FV_PC&zX=$0viJ zEfj6sNAR*WUGAD1R8?8gOk~&ykA-Zy7|5(g zF=3##Crebh`PY=l1Lb6Dr&jGH(v=0RijVLV_(ndA*okC0_Q-U&P{<*jHKx|u+=b0Q z45Uohf_&J1f{{l=$~kQ+7C`H6#&krJXeubjBAKM{V?V}hq)kF;bKL$K@!;#^iJh^7 z#e?ZJi9?WCeV4&mdQ|{vMhpJgW~Kltg^@(-+vF@*k+B#%^hY0E*xFRUMovJ(cQ(Fq z^v8DwGuhO7Vi%B6|5^-|0_$ckZ@R+7a+?SlRE7MWE=2aU{nyQ13S4aS^tZuFP;;%C z=>Fr%T_Pvc4P+2*YX8h+0M1q+M6^9{F7d3yJ~xd_4J3XA;43Z64_T6lir>62l`|mk z;rdKvQ@9PS{qd>D_$T%TT4dznZNJ9opv%ydsly4ZuU4=In9I!=$%A8~7{Y!=2QD>9 zZbz@W#06H`P4eD}VjZJXC9>352;yQnNxv1a;sb;Pq(E?LHKJ-3CX|A1XD%0o3qm?c zo_0GKpChRcisIQXuBNE+y|lcu`_5Q|H9*-`@4+5cK*?NDnZ8bt8t)@$_!R&=*2Ud! zG=Tl%ww}5kl6R$?>a#~itT#&(lt>xmv#$#HovAV^mGL`-oI6gT!?OXQH6g|&HR(S>A76KvCrOXKr0 zF@wsK?3fzDe0SvZ3z$4?`5c0HQnywife`@1Xp|g5uq1s>`>*S|0IIrwypj`_4c1pj zn7IfRrQp@f_64dx2F1G~Q1SB5U`Nzn?#ULp-oa6o%dZ|^K^J`u8qR*#8x?e}x>;B8e$K%v zY9UP6$UA?^M(M_blrYmoglqf4n;bBWch2aB$*G!`aOE&2w@tdiScuSv_aqaOe#_0d z#AU~f;W+C&lraM5*o>g1|FuDcZnVT5mz7>=23i}Z9GTJZZ=5T6dK+Y}?u$8<)6sgY z!?fGXP=5fa+iCEes;BogSM7S><(Z&&C#~s(Agjc5Gv|m3LaeX@^{wvrreMm+%qxY z#(z||VRa>HHGiD<@a9*gd}Z z;+86~04PZ~rCWL&O)-k%^fO0m+0AIN+9jgCZE^PQJf)OJ+M4pmn} z=OwcF+rTviKV@gf;;#i*4jx!hFFlt`#I}5dwD5o&*ZTuOEim(`2Ygvz)Zrha>f_;G z@Y}UvJ4ENU6?C!Mpbq!axhggduQ7xl9Xi$n$48n?Tu5)@qL3vx*3~wqjZb5*0vdj| zs^{;lhy$fpLGQSPVQ}{h?Lvcd@2=Atag&bGFo}+vaC%6wr()=yCi0u7D?P}?PWbx{ zj6<1ttGeVc0_%tBuie#mJbgVkr z&-KpipG7eZiX?Akv=!g132YZb@`fk}Iq^pNs+>iGIE zVtn2#=r7W(GDKpFhO)YMaJahH0Nmqm$c1;WyAR9Ke`1?Y%~~ZriW}tbJKZ*)+LuJ31EQ_Y78F(x1^e(|UuFp~m={dR5RtsmAKiv8oQkn%-GzVgQKOq zehKaia9KQgb6MFj-`#_Qh1L-_Ef|Hkt~XULz>gzjCxudUP4CDTCp_`)Nt$*SW5LGf z`#*)KN_^Rn)AMzv8o!I0h&G)CxwgQX)21f_OcXov*_g4~iX3SZPQ%o*c zq72R3Ly0D=iR=MVGAR!N2=b&h<56$l^_Aq|--X#)G08+iJdnnh*TG-Jo(A654sc*z zvr?lw>P?LFrK>JwSBcvN$cm|C@CwQm%Sb7vGc}6K)!A77xVH)aO1ZS|nJz4LTeZy&FE)Wn!l zLKFn?$wM@zPolv4GdBMqxN!eFp{9sV4W;5#T38zLxxmLKXh9~n`;p{MgLQa33v6*X z;?|@1I*-H#KQDg(cBLZfT?FKFWW!l~LJjmwjxQJ8iwX*^e3ES0J zT;^`t$Fm<0V?pJ@FGUoHrpMxv_SH2IRb;+%roufOJxt1?yGE|LocBTtEujfDvIqq- z00r9Xy&=I;_>AXrxxnfi^^?Q7oxh@){PS6CFj_Tu!tb5yxW1d^y`LMs-L1hIWj(h8 zup3dOsdsGJv9;e6sPk*Vx;UDaQsy9x(7@Npe1HU?qh#N3H&2W@?ED?WMAk~)G-Hp0 z6~(qO9I2s!d))k$Gn8hkP7-OV$do)*#R@CiD6Hz$^_uAXOcG0YHEq$?&kV^BqR=8c zFNq6>6}m}sEO4uOto6Pq*rPBTH`zrrDP4VUW|WrOFz@a6l0efsK5S>n28MvmJbPP| zA?R3AD6$Nz+!~Gi)SLMVnb`oM!bACjM!U_r)A7x2V7-Jq{eAA4;NlzusDX;aX+IOz z4IM={LC~#G*Hbe#?HoPeio7*b*pBW(`j;Nr?1s3tV-2LmnPcRn#38ERacZm5W1!%4 zpbNw#1kWY|zo0;=k+hClXu27t;!_vM7oxxyi$=(oe&}WT!=6JDPBFo6CzN#M0|TSZ zBOZ3pD-Ksgu8U%ut}ODiql_Bb3j|C|XI6e?2lzDzxlE}3Y==abUPYhBoIH}vnMyQw zD6f3K`o+)eMBatrR(8S6TWZ}Sh$s@0bSM=@kVXH-Y>-QE6+X%)2);%Qm{&Vl+A{Rd8EJ<>Igey|DD%wBH%)Jaa2NKG5ha zLdLj0(9&skVHsZtdaywF5kgp3n!pH2y~v-N%5z9fRl;l$4=l_$fQFH^dM-y=JYRSo zbC&eOivLS8JWF9ZbbY>- zRXE+*XLRF-d-k4Qn$G0SNo%u`y`_v2p|@=2lgUGGqIS)Q3QW64 z+4rg3sntb|JfT$VnUh)vx&~V-l2TlS_k-wJ<}U?xEr}t{C+`b1R<{y|=OANgfoeSh zIC281$T1wOO^T-VBns!9ZLB|HhesXlkppN4{G>i^1-~}XSwd4+b z8tfUHs%?0XP9wMQ8(}W@9j;U~iH8__3p3{Mc8aJrA9ed;6kDZvM)kFp%vBqT0rK@%TE6k_s* z7wIyXmJBC}Q43f6&?`Nax6lPS3dUYo!!6)C1{ePcm9tn!{fX{xJ2s#;J7jM{2}wcR zQfLudf2msxIzZ6M>xcRo5yy0Ux>f2Mewlu$pib}+Fz3x(ieWTWR~~|XETH{N46&79 z-zApAy0$yq-&K^XqJz=HGBvCm$G%xH##& zLZMI6ZvU%3utGh5f9))Yv`B^q z)X92U0^4?u;C9X4K2W^{+KeU}mv|$H0lc`h`o?RQ0%y(W5M2I=XGR)9-e}H>kH>zau z$}SFsJ2~}%rNlHc<4NF##;72;Fbc|?xBU?qIw@hgSoe6#z`sN=94iT==ke*82bL#k zw!3KNTH1!-(!D5V3kj-166{F95Y}}SQpf{kJ39}16Ul@ zO~xuZ5GdxeZE?s%Ze$+j~z2^h_quCw>@_^_nyn5l>K|)%r zZmerYOjcZP1pE2DBpas=kShRt^MixFl^V%%W2ByqoXhQ(yfwR@mx`?E3~pnrj44i% z@Zg8s)zkU8qqcaT0W8n~BlSZsk{qU+v5&2L@jyg(^%e8 znN4@;*Wen7Hkq>Aq!6eyD;ao2?2LeVzbP$d*pT8ZlXV(%8e#fWGxft{59b4n zGAb}sSiEQ(`O8#6&ScVBXq0SM&+;mmF!xnU$s-ggcmDDXwl`)zXVGa{WGxdxg&GM& zrMpb>p@oaTlT;Hv+IrS$h^G|6G*Gb@6na>dX^#Be$JB(rNk^aLtG#FUJ68S$+x}Qr46eAqsANF1v*} zK+`OOpPffy{9Zl~Ce#wXQeJnAP|h1H)jc zWX4~QKa0J)k_I9=OMEKaVSz7&g3}_^Ebnz#$G^?koYkV?ic-3j1Ci>~gs;xLznUGO zC(2T#Kq1W*mHM%hstUgbTSjIBIJx&v0?9Ig9IeTAXj2&zKrqb5wOaqj%C2(}!Z)Og zjnrKIh6)ikf@i{wF?~WNhHpgye2dNEk4QnK@;i5*Uryp(A0b2hyK$Ove@V$!<9iT5 zQKxhNenxsjylEq1hEYNi$wa0e=&C#CpWJis(i^K>$gG)RJ@{@ooNh1%+;CEvUk((}!z1fOjdh!-1MU znPKMl(3WL@Wl|>}oBxq&=3Ij?(&2j$^Sid!|JApfAwX%z^Wcwx{||eUwMSbX$xjb( z3_D}!Axgop3=XPGEOYqrH7H7LV45oCrR>@uEAqRy9ooN>jU*1b{|GCFlzV3sN^{N;@~09bEyf39vYvRWO4U$5hM}F|#`p zm_{H#h5?&X z3JZM+YxH=~N}%=0j9>NtCb7$&Y zrM+a%g5NUwx%dqu%J#(WQ|D-*B=alDy*CJohS0b&(yU8A@k2&q)o11kVab{DA=d5r z6I(!nO+73vCA(mK05%$LRM%?IQRyL;CQ0n@7T9Dya9+(O;&6h$C###2^QQB%Y+P7n z!IMU;K>is^nc!c4lrv57h?>H#K*>pR)Rp#2zyj{JehGtf!&WVFr{tv=52#DJ;GTi) z8WBRAqL%zRP|Ir`i7_F+D5=E*ax3c|!~IUq^biar4e9j;)<9|PyhBR^8pH+u>s{$b}A2Y<6gdIIzBf6mkwXn zSAtJ6y>ITmuPX)m@B15=NS%W7eIWPHjgx^G?XV6OWa_E(S|zqYe=*Ndnfpn*k=Dk-D!0q#6^b)Njn!XxQRnffMf()te^!1gxg6ICWI)xqNvV5M-c^zQk+d0;ZfO4v|a$sm6XBk?w?hY<(5eqUm^22;r zNG97-W?{do6KUqLeOPT$U>^xfs)pT=JkW%gdY9)6#8z6M$#4%s`z3VMMUjBZd2^5xUX#>g8! zqzjUqewTB; zl?kvu@PZ3CXEAe!XwU^%HK^u;je@l_*xjW6ZV0r|x!ccxXM?)42GTS`TWeJ^8~#$C zzE!B?)`BstX{lgKqmHcmboqw8_=F0w@wN6JPLojXNH#MV%1Pl)X~kJt9RbrK5b7*C zuU%jN!hbC_0=UfmHh{&iF91nC3ZnT`eDHrYKof zT^5~}e>}%x9h;A-(?@LLt0PW2Qe&Q6R-%f(<)otf>^(V^aO6o_q*>XNZbiGp%3p+D zl&&wFC1_~{owdp+4%6J{6iC$BoNXQ7_v5R4KSs}UU;_4%9pRF}$M83lQmA6*HG608 z?t5}$!=X3(dv=2}BIq>|siO{wF0PxU&I^_=RE#W2aPV{1t~o2j=Xw#b7o8mR#{I}> zCFV4J9yd~DQIgndfjjb!+w>1YjPyw0{F%2f;+oxC(Ut`9kNDv-V2Dg!WVnFxxC z&@o)|J5xzXf1&eO@>qmCMC9l`#c`bq}t#8~4k3B+pJ_2g)^mcHYm zL5#`jWRfKa;_7wBrW9)t;y>j%Y{%-%kC$hR3o0OtF>*-G=d>8OOhYp zOwE((;hUD}Q)lZ_`(n{_$xx5kRa9iqk~(AT+>X^&8B!_;?>qJt1vSim7p!UAe@rI# zA%r|o7q2>ZGU(8XaJ~X=KvAiFGKDi{7=p57F$BXtAAFj;W`!u|Hevjf)1qOO6`J1 zlz8EDYYUr&|H{>@gR|I~#NQ+9U;wE zyXcgKd&Vwf>&8rl-cenqiXRRbhIO^Kk)-94V1erkrss>%BddWhiF0JGDUf90#2L<^ z{CPyX4soCW-?yL)|FB5X3LSB$ttFsy-*@J5;Aa(|=3YgtY3;m!p{k>mxTaQ9SYhR$ z4%BmUFEN&eRKdee&7RH@h9k`)Hj&HY6+BnvGRG+S61V22;X0~k&R8Z2MWl#H4ZvC| z5M33tlbA+XSgcZzm_)-~pPv{(Rmj=zeJ^DO&O)U7-yU#0-u}nW@y|sEtWGB5Q8^F`dzyS zW2Z(;`a>YKus+^Evps@eOcsu3iy#qNvV;eLs9x`n{NTuQx1&c4Iy5jDM2y^+s-c3# zD`DkpXOkIK(G_v|!oABzHhm6;1VfJmSo`k1nwm5|2LB55-&{%kXO3NGbo|>YwJ`3A z0h4#px)a=(82qQ;YP(na`-LHB&a#Z=T@s~@1 zRt^=rBQU}jLHvdasC`82B}X(*KRnzoT-BVm;OEW~(A0-l8ZZ<0I3)_|(fqL(1ZNs= zlp3u!TS{l4eKh;T?dkIUx`%?CQTl*km5}^k3>~)=I11ERi=@CtH%S=OQ~5YYDxS!- zjBXej+lbC;B){;@ie1d*+R!g} z5c%;a#>O(@sGo7A)B%W@BfqSoPJi+vD<}P~jBK0CTkbEBmX+9^`d6nOCdLOrarRV9`WDlvR`E%W7%r^)-DSgnZ!ei*}rG(PVV)I$Xq7tFvs!7 z6Qq@g9Ru6Ras9Ljgpg*h--Lh$pM9E7S@h{{vF@!of#)|(XR^n#JiN@`G5w%6dRU%w zZU}Q4nd@?6@@~2eID(v$7smBK+6`cBO2{$rxx?mmII!bZ@n??aQcM-i2W}$mgFZE; z+}ivk+1$Se;DiNKWAGO76RaG9!Gc6(BE_eCvT-3 z$35CEWO);_uOs@&5S|GJd-xfSoRJhS0p<)Kvm{im9ZZeXhg}I~x>a_MH5AQ8wYGW0 z4Sw+(vW9H9A9@msM5+~%)mW57XE|}hQZll#bHM|e;MV|HdKU<^5w*2;GEteGTsmo+ zBoPJSV|C0*`=m9rCW;~nr{x@?oPa3a88kgfFkd>n$3am1>a8VWU&@iY2^|D1_EE|M zeMwW?kz^S?X4$=4E4Jo8HTJ&#(Zs3^#;uYk;A*eycpOls^u6ipd*xbVK2Of2B!AyRRgC$DIh`pye}+zZcIDyT3WO7^}0|4Xi`c zMi_qAm}iK^BV=|^W&8(zB0D6^QKD)5)C^QxDDCnE%g^UpOrN7S#Bn|C9jZY+d z1NZTyL{Vh^&zXT@N3R7Bi4avL=XOCEWRN6VsCG3SP?rTvC_QCp*IaJSj5bKiojDZ9 zZrcyqi&P-!r{7(21vH@ves$eXnID;dutq3q63fR4ETa3%#mJA0@{;-bB7geKR;HwF zWpUB4F10Wnyl zsec@O3R2il28>xCf2)tjh=-D>n#svY(U!K*XPyg&9k}n_ zl<>)A?>2qJKu8v!rBd|1N67{a++3R=ER`e8mMn>}qGtX+HyXkU@(}$sj)gd!Fjk(m z%W0%;3=gdgk7B074A_%3da2$<^#4HH`DdZy z<{Pw|Rd3+ae?@75mOwDEvq9^dA7@-F0t4~HN1=5t0+&F(AJZGZ$Pmo@5dovXY>1H< z{$)!LvakfNy#>^22$K6<69qKr%Yky76s*{}*_l`=T>sN)J~z)K^lLcj7eDOAw7npH z6BJz5H6pTM^3=1-UyjqpNZftRzw=t|b$-pkAV|sZiFX&);qiuA=v;uipG2cd;n1A< z7Iq4!09_02ToEU!a74q)_pl%9H*Ei>I;xciGWV6D=260MF#KO_SdDM@ShTvJCLcoeep&#v!EHB=IoWLhe17#jlJNJjEoGnly3kWC!s3h5Wo_waupwN)2jrylf2@u*!->Q_3-l6;5w z_=Ed*2s; zJ11Z33*V{jV~DCAH?GI!|9YCOjNjMF;h_zlXAibD)L;#`^`6`}MuGc;INqnn+JMh` z4Sg>&sEUo95Gcf)m$YN6WUD*xc%HPo|nJIR>3JE39 z=6%Ypo+o~nqgE_VZt21*xoK6twoNMNVcJscU zbTEqmIgQFUsF50Upu%zn(R*sso z-Tk0VIr;$Yu#xzr>uvhC6351Mc@DwWu_vWK4NOm{!^(8{ZE@F zElWH!7G2IHv2k)r2s_S}7>4lJLxpCi(cQ}>$q6WCro0xoRM3UtKjVkO=EE-jwh~Gv z4mSvPWVG3R08=h+1;S`iLt}b_wVAo}f)_dV9uf;Q^`s-6w|uubj8Zv(0g8VpP3`7Y z_v~O|t&u5=B~xfwg>aR*EN+SO0w3aC54rSxFdNYS zT2oSxvoAQgOdt$Q$Kd`nRtJEh?|}~TA1B5#S%Tzj%U9yD!e?F5SJ^m=K9^=%^~keB z8=AZk`j717fr}=9wOhw9q}7-`%=0KRUvhr@Tbnbo{&KA~+<`NoC8isetU|eO$#dhn z`K^T~!P!?9-u!1tCK@~Ifh^gis^Q|C*RRSgk<%PrY;T#G37MFww^70?$^ zeFMS0ocOz@1%$B=d|mpQF+cxudL2jYW>To+?+Lo%W7hqeMQ)6P?*XpQ_x(QQ^p6%B zy!EZ;re%YcHuYk+(*fT3h7^d%;bMFZb%vYhP%~r*0AsiIXO}~h{`_D0`_ecAsfM~v zkq`$>FmXCoNNRJjDeB)^R~_9TNI`x-&o&C$)f~qkB=eA2Vp8CpYKybSe?>-g*B_DV z+b&Vt%iPyssYK^5&Z?CK?Jq=u^sOr4+o_C}fqL?!>Q?1Zgo=&!q_UqB*fM1xg0fcE zJhY(Ymld8bz`=s$A1V5cql3z!m>agsW+cVZH*RgEkjRYg5AbD3yM%nln&< z2L3^m&)+fQ|M56z@CZl=DZ~4kMJeDfqzhQ>@qBpIrI3IY+XcF11w-B+?E?K?@iLk` zyFn`x73hE3*OkAzOZleqJ)=3vIErB1x*mYrukXk{o>$f;vb{g4W-}_(>c1W{qa8GZ zGMZ~cV$6o_4R`enVE@J2tgyaY?VB@JcEwOyUq*YjdPJTRWEMu6)mlvhwO+FW*V(dh zs|T3EZi)@1^s{=4R4_+&K&Fp-l`Zv{@YxWi2pd@N@)%wP?#IjN1#&ZGGc2DlDS_@m zkJpr4s`jEQq{C~;sjI+k4Ab-~lC?)6vB!LF`pJFd z?^t_FR>v-t!E1=C<=V0pbHuTSxyBxZZK&~^9^D1uU-Sq1F0A~ehqbnE^MTCL_&gzA z?-THxmNfjaQXJPM{S+= zQVIJFSj*(c?7^FfuOg?VanzAK*=?aF6q!GlGZWI3B1_z8u@!(6j`-tnN^}iSJWZr)7zk;5d{OUfHYdBxO zM#xiU0j1m~IzQF1DH5H(uzirMGj`&=k$(>Kk)t#-j0$9>%&YI%C5`&(t@#uRxn}|f zxV`-?^)~L|f!|?g3^E2;+83|?TF4j>%V!+g;=>>v3yZo%cVzu1ZX&h6+>DX;LY`m0 zb2ryd*od#!#mrR&$MZM}1Os^a*KKjO*x@<5M=6-16;)IUcRtMcus_%9d`w3m5?&iH zaJu@uF77S>DmHl3|9dmFM4#tTu0lcV8 zBblL~r7(wqTTjj4zYJiJwJeQ-O#iN%CuxC}7ZII>Tm{vjT5UddI}nxkTNEq@VIkUC zg6ftjyeOlR|7^VOV%N|632_5;WfNXh6$c^4;KqPOPRW({t=Ep|(FbUb(E76b!8Pak zuK&UoBx+y-5%oDW8oOlhFE$HCAN$+HBt`P1lk+;50UYmr)wEan{C}%ZHU2Gkqy&DJ z?!WunPShNSe@>P_ummMso1~b#sI*9PT|>{9%S(pN_t7iLjE#iGid&V~2uK4B9)QT8 zQ<*~5WUjn#0YEEk1=$7alTe)0Z&75tZxaylRgYcMGf#ap=7`6`LG|L7|G;WFxS zIg|eIDB4QQ?w(lWkL;*E4?4Gqm)~`aylkx=R(NgxfCSnjZW& zgUcm%Wnt5=0Xli;ILrn11Z+>ulQk8db3_|4x8nz|mp&26xjNaxKw$^&OKLn%7WhOx z0hQnAZ*+IVc(|Vut~q;JM|vrPph@TmuCjBCNM)zdH;1Hu|A4=b&j|-A<~R3*x#Yla zuly)YCCxKPq-4!#u_r}2O%uf8-RwJi{(8aB`ycZ+z~?9q_=0*D6oLKU>F?e11p@;5 z>{YVEhqlf-W08Etx3xCLbc*xt+hKv6N;ql6IVYIGw=`%F6sQIIlrI$2;OT4>omFGPTV4;0LEQ!s2u6b`Lev)3@1=?yCs9g0x&nvmXWi5V2i-S^T&uzSp zwya2GMz4i}BPT5)lsC90ZdIUMO=lgE2!AiN_|xP9`oNJgH3)0zB^6sYm}BmlcC zTsDX-5Rj$lXH}P0*A9k`b!3j}>~8!fG9dOk^4ehe99{rdTaz8fwpdMhX`S#$p(Vqh zX}XD`N+Ad4qYWZLfcI8?F84bE6i=Id)k=fD;;`fn5%#h$_8u=4YTh#)KLQh4y0ql& z+grG@BuSxilLenCS#_E+-(yfT@Xo-C?rZjWdp`UB^lw1-@fNh*fcpS1=AL&6La2sc zuA18U_?~YB{8XxDFEzm|Q(>EwpBKbNgWt(&>07AV%DHXO_ehTTLgcHCaA4XeynN%o z%{dO}k9h+zQtK8gw;KLR7~Vxy&~fl!4m^2K0XN!|VW}-YYygVrkMsjy#?~fNPT}!t_L$JgjWQ!n z&DCRR0*1dx@03 z=LAEVucu`Ku8>7YihMigw4KjQVCi3WURcfCirS+9S;agO(7;oOiWFgUX&BnQ0UvAO z*nQOv|4Q#>g>FiC?WniKzuYw7T6SLVY zIqFg-iFxSn<=z?JmeIVK;xpYhIMG|X)E#*%x zSbxgz4*4z^=@3>7Q_PHTT_FPvU_FbGORIcPMjQ-Y&`5(ZW>+J#))aqz3H<`I#glG5 zpN&*|Pz`5X6|4RE`%p*`83eAJerl&7e7vfl?e%!dqGN zbJmj)3l~Z3d9!}@<6T4PCq{t<|?OIxXUbc9}bho zQT~gy7AQUps@eh!YS=$Uo>aeJmR9tA?0`Kth2Dk?k%-K!>GmOLJPhF4KRt0k?_5TR zA_}ryZFe&h6Cukj*gGMkF6ffYucC1`r03VmZy%_SBlR7aK}ZS+{#*dZ;U!|4izlGb zM2lzj3%A9aOJ`AmB!c2X(NB^T2QTp&uBPgj!HT3LePk6);rnks$~5hAw#Z%U9T>N$ z59(mDw{-35kSXH5nes5rfBCy9g#ec-@T#JeYx#E_v3a@Tq#p4dcDn)pZBWnm@6}zv zxSV~1&kIEF-lZw_9A0A!!`uicF+-rM)E(9qz)z+#!Maa*vqtG9IyLKM;sXd^6xV$q z&l!uc3BYw_YHR-3(;8$*Asax!_9Jib+yZ$;QOlBqhfE|N1d_6teC2K%e8I2;d@|#7 zc)H5lSYtAjH@as=H&toAz`A`4SaKm_hZ-TJf029TdmY^e5uuHX10-Savs`V()jiO^NOxF5^ULj*jWI4JVhlj z+6>*q!UAg8WScWfP89{EO6GWI;6)JnYB~9#zahbp5glqP^V1P^Qxdk6h#N}eR1#|? zqe!r$Bj+z#$)S6i!~RiWqeNjqEkz~%>nQSMDVVMS$s`MkP|AReoXnwMl2A|aa|Kz| z5A%j9|G!_p-4;>nbF`FjXo2ug1{cScB+diks=tVkR3FamY$h5wOjJU~U~3L|GK-c4 z!s)M`Ty}h$afGkj?{N{h(F_)&&E*OfZmXe81I>kfE1S0=uxAN54Wyix!CnXg3Ufvf z=O7p8$W!25Un-X018|ekt*F#))06JrmL)_mMEm|1#)HFxGEQy=e%K5}I5d3}ZaM_E z#WOH5G3%>$CXCSzAP}UZ&UV5Iu-BwDaV-}hJIPo(m%nBtf@Q!hv5FmwkA zRZ`opEMAib3x%Ykk*d_m{IPX8AZQB&Y*0acnb?>%nBJX>f}d8@Tb?nir{8CdWn$PJ8lWwwF#T<`MKR4&6Af?=8uBVWdAVs_7*-zC&KsY2ng9tG~1Zzmr~Q&XVSSb{;J~M_5?@X!!Yh!@qg8XUK*h_ zkGn6W1s5Rije{3s-^M(^iJCDVFe~p`3{K#{#c`IzJ(nUIWgw{RR`S!SK#K)h$PY@M zE%@t50Yi;OsX>Fz61YovqTnV%#>(qBG_djc)@Gp7=GPR3M-c^YI{f(G952%G5>HItd>6n>ggMS%9v&XOTz4mn@!tGuvB zUpsnb=CVIA+KKraPZ(&X~A{NH$ z%e5RX3*Em055$8Awtr+%WLnapGiJx4n^)dsPek_=5>j1E>A)Mk>MQVNFJV~t%`!zO^aV2$j2k$AQbES;3N(mkIbeO=379U z3POJwt_*BETLJmfCVzJy2t@||kvV!o0K1@D6VL#xe!N|)HPLr0=Hn5A?2%&6>fdY; zpnNGE53n-hRKonlm2P{j_d_Y88@Y)|JIa zGMa@9su3V4O^@+ICR11F$^l9w#5$o0Ja zBsjSwGSH}4el;)b{YxkWD?#%ieb8<5DJ0dy`V*W^Ri=9CQNp+Fh5z@u<>~n7zwxKz zzw7noD9u0RZ6(RV6(X%YLElY82=@ad3sz_I3EBw;qLV6x6p73yJ^ert)F2e<1KY5> zMd(py-|;P}P8a#a&h#XE;4ET~gI$UJ+Tr!g&#w!`_LlFm`4X^u`gT9ly-syq0e>j^ zsjq-+g$~Wx_TvPRNzxbUe9w|90IKHFN?M8 z31|LXnr-A*^DMoW-NTnpmsWl=-xh%`GkhG8Te06pS3+J-M^PF{v!~9;kir|xun7f2 zc7I9p2uN&F@QQ}=XC{jCX;jRaDy4y}WNvP&RcH8@h86eZXXrfF00*1`^gy+&AjG7d z@P+7D?-pw?%gyCH6t$zKB=qb?K9o2#8K1VG3y)qWH_l zpqt{SXVbx;)k+!~`(|4e!$k!#7u+r4)b)xYxZ|Hzdez_2vwxR+srC zz?uW^WkctSut(!142!RWR`+l%;um|EHeTU_C!5!*M#F`+-M$gcq_V=IJs<3R1Cz3p zB^?#?ZCf2(+iUV^rx1nFR`&zW(x-=os@E2KBd}b-&pMuYTQ)3-vFC*Z+(t*FPG<4@ zal4T-PErh)$A(8G;y4G!D@2Q2B3iGAi&>ofy@$t^Imo4LY^{r8aB?klY~BJf-0f?S zzgaKZj?Gebt38%a&ZM!z2lXU&k@jx`cylN9H}td0f27DD%4GKu#%54lPz~!?O1I{^ zoVu}0qtC3s;qX>uBI~3lFN=^IhN{4xIT9f%XEpRQyPcc8M*zc@Ewp`f*yA}P4RJOf zS=0*tME5-z!2hxXzC0;c#ejeZ1z!1)rmhvoxu)SG4Oek9fjH4fvr}+S#o-Dle- zx9UhYWAI@E+m zW55!&E=AEU5WhY-UdQ@+GeJaOWDl&e!}o0=mtfbaD4T)unT7E4RN{3JSXtXMp7jh5 zEQYdxMaTMVP)TBpt9gSRjcs~#RMsNek8#ZU=GBQw4oPJ(OS zjs*KfjQdSAqOvLpLH-rB{1yw2R;jX?P;88b&m-mU!ERfn(p^#PxIEGKrTS29J?IU2oNBlLeVpxDSHo^ED#>yi)ML zqFJln>q5ZS*6Ty#28RR~`e4a51oSYTJ&}@7t8ywj?8Nm8Zv1H_XrJ2StB4?KQwbku z%CW{K5S60%w&}g~zAIuDv%hG)S)Y-+?bt{Vqr<-wYFfbSdz}@$($lrL7>}DemvJP+ zhpNr6&?o=pd3@`{VnCVBa`@MQ5^I?>WRc(X;hgVr7;eXk@+Jn?J3rNnL?v>-+W=-y{0#s5WzU|#__yQGdR3`#om<@| zB>TxBy1CgV3?e-|Y!%Xox{Y2PB)#2Fr_C6ZQ8_l0`W8)fT%fnwCo2%p(qEC-*RgT2fube1ye8>SUo<_tU7)a7rebzbyH3 zQNo(rIEJc z<*Gdi!S;1|5!D5A>3*m+3s*Pw8Q^9Bt|SW9$Kx5J=b9cZPq$-ZO-h1jA{n^e6b3Zk z*k@@oQ<*(e=yy>04z!(XJl}MSyD@fOqPaB?#_EAj zh?9xw3OQ`-^3CaGZULK=DU{U{W*7edx<7k{ju4A1+vfE7b zo9dD-O5{NIb$}djr~0Y3Tuet6w$2>{S8g}10Nua1r0MZO;R3gk%@DLPDlxJ%w1uyWuK9$95Ol7r*M#eRKq|q zIPPaRzXu0M11yXpQTBoro9VKcP=r9rmxTZYKu_Gfo>+t?%pxFBcgq17m`QKV$AMz4 zf=ABl@H%vZc59@rYnD|~|DK%qZ}mLSm42N3d;LTBbsKSTlx9$4x17_h0P-+`_&LfVP& zbhx<4*ih19%#sn@)NA~~0P+*02p{&zpsVayEkn3})$!_Ft4o$f5afeE6=#6~eEL*H zI}|^uJ!-&(iVuI~H}EA1`@g1R)PMEk*C+Z~zdJm}kISsPi{1x!Uq8F|Y<{)R4Flc3 zmmCJaU%nl|J_1kQwf@?h_e0dzuZWvJM9&5<36%RQUkk10y>FKr3(yYaDOFUN^Pn_S z?ZC0Pj5Do&!`QR^Y%pV;N~)yAeLI zORfFTH}D@j*jrP^oV)Ft&qz8Ui0J%w9sIul{?692>@OpQQXoQ}o^elu0KR=nz=V)q zyiCr7uRut+!UB!{u^QvP{Fn0OFMoOe{_x?$eBp%`_ItPIrM7jdD38?63&P!T-!}Ds z0jc}3e(Jvmid`)J?!j#--GzYQ)aqWrngt7q|B{%rK~m$ahzUb`B}Ygru-LjBsUA|` z)gY`&P(N+SK!0Lx84n~evzMmZec7tQfOqRGE9Nn*;uOM8JIW^}_n^kD3xtYHvG&m} zcRE<4H}Q++?i>1ICV=U9B3Cv{G)$G9zIGb%A1aN$UYb7XL zdnKn#T{Fve;9vOB`?}P7xtDL}^2yQ+;f>vq9*>p#e_~bnexigWztU4`YQb1drE36*;3zbBh(r*-v5oHKm9m~jg5636S1hDW zIZ+4MpJE-1)WQr#SN@?tmhrJ4%D9(%xtDLhvQ6{<{7?VRo=M#bqHHbp5BHVstbN&4 zef~3V*Ux|Icj}!2R<}1-{qdiCcmDzotb?H(<~8MB3rQ2&bNUmd+=vcWO-isdyC+iE zKO8-9thh#%4@#WO|Ka|!`fxn0Zy{eUnu5M^V1f{pB`ksU3>k6o|4qy88=Eg;70{mX zh>%Xx@6p(N@Vr7x8GKX{?3*-1>cO?Wy3~#XAOb-H;bV$^;{#HFs*88 zMnmxbJsWy8OAcZU0iq9&pH{<9KmGLfuznnh%Ln=L$PNFuH&bm7Q=z>6`s=Z8PZcHr zO_}wFoC?6VY{V{Dx$4k5jmD2a<5QR^$gI-{6paM7upm z$w9^Rd`^MjJi9f;uj&(V-x0x`Efs%-yP8WbK?-R|R|l<(T`jswKg8Hg4O9DPZ+`e&mVxgWvU7cya|c zHfXvlPx##&+K)%^wdJ(M{rtgxKIhzJe}QGDgA8U?GU7%;qrptUuN=Ybx<=S1Fn$dp z03lgb9TQPuR3&{4z@Yqpp9*AJ1!uep`2PV22Nxp3=KV6k*p6_~%o$SQucU)%V&%UA!cgoM*#+1e z;TgIj^3v~yvk;J8q0vZ4P*$qvS;wZ8Aho7VBFUn$2c^(vQYab-ruLHXH9k;^&~-6k zcoWfzQ<|140cj^2h}U1y)UWo@YvXh7rF&+# z<!|BR@@mhK#13moB^hkP36?)|T$_p80TcCZ7d#vr4#yAVK@^Cxo zC}!l5KpFl&%wOgaHbL&X{jNOqSHpjn;cXlurS6S;xkGA?_hJgE(!e6epyXMTExWHi z*$v_N&+vrjTsuT4zt;F30RFy&AomwY#jWzf3oq=K^wd8o8yVH-o_mfbwyA%-gLQkD zD#Bn&f;>CYT#9*RI07F)rzf-Lv@yrdo6;KCy&Xk-T$qZ;O_@_nOQQ)*d0QlnL9HQ` zQ_z6=@FQ)|7e)Pq`_#S68tbtkH_8WQ#zA2t)Ybx?XX>m;oQQ7)N?kLaISN{iJU;c` z!rq_{KwNRbVY=r=Ne82aDibkUAPS%Wn*g-l+i*qF9-uytP7V?3wy^!F_h)?khwe}L z-^;yxJC@IV=B@a(zx!5O8$S4{IpMbT0Ah5|*PhE9^Rhu-{Zhp*|E)LUolv%204|wT zOGD0tf&Eyv-+bu$;6tv&q3veq^4)$*!1Pg=BtB)NA>|Abuy}#blPAK zVcb6-K71I1G!s^T>c1{17M?%1sehDym`WhD_=z#*)||O`*?_PNoP?fb0t-=3BBkAx z7t+%mxj0Nb0f9`#&o7vncKy{;>oudKo5KfJWaS72vbZ0X5mX6 zR-ewx1OyCfbS6Kc9TV6?@f_SOLB{L}*V3X-9_19$_l&fNE&23hxMj&0N>LE@qr#Wt z%{6*ZR3=QV4?C~8Od~beRJX+Xi=@&j>RxqUF4(rBdZ)g9>bHKq;>(x6H-58B)edF) zoN?xf2bu5tBN^NJ-Fvy0cUpPvm2>>^&%7xOShk3UHY`1tV?En%2ng8$l*;u3Is<*c{o#wXTzfb?a^wLXv$F`aM z?KP@i9H{P9ec}_J$jkJ9ZBzf-zE<0b-k!=Y?C$7ypaZ2ojscIbtwMS{2wNN9WrSdo zz+-wVVFO~Rc!WpBuLO{7fK=t#-P&aHR9xR8{0190L2sCjRE1p|5TGhtt7-cl`^sZ_ ze1K|8^~Z=`H0^@OzZLqFr#i0}0<<(}Ndm#|VU~rm(+YKx4mRxp;EKIr(?K=?rV%KG z4T4GzsHQ|{XTl=f@B|2>mhw5BjI*YumW7LY>I0d7^iRDrLD=8>kKc}8`G21S8!~6o z$b<~Ub|r&`^XF}m<6{^h^?cs%`qcP6jy<=eBo{MmDC>q$>$kGJ9vrubAdes52p zR|r)g8-SD+I`-SPXqY%c=%o*#Wz{Jp=m?X6njaL7PO10O8|;A8x4 zU&{SQIRG*LSXap)Oig1M!8b8RfOz!nL`HBDmcB7pRPZ|*M5g@Kjl>=X>h@i1Fxn;p zeEE?1f35GNQ%xh=um&=h0X9C;|3};NBwupyqT6q5wAUQ~C)neC(aAg%hLW=hguUG% zd)E@Zhw{R{(w3bqr_h$&(aMWMEgD~)`B z*9e9=3|t|B%eAIV>>Q;t!2I4|_MN)1|KIz6TtMo7at@z~a06CQi$Ktj6y_X?y=3q8 z%M|8+@_&9S?&V(IN#(!zg|~{9BBB8w{898wea|Kyw?Fa#V=VdV z#$%+T@`nHCm{(}(5SbjnslMb)uv@UAkO^BZQUke$Vrb}rg}0v zjFflRl8&ZJf0q7^V030}4QOG8R4s*d5at6sYrtAv529Wg<;L0+#-%SiA?Gk)8e#fu zw44FpV@}Ptb4X$89+(yG88A&BcYVjWgyxMJNtbjeVBt7+y)Nph55zk%oBEA6V$Y>mjz_k52H}D&D7`|xa)Be9o>+K@0{J)o`$`W`4 zZUGSA>O`P5Fos5`^N{QIbK{%F7JIp5R853dxnR#*WC^Hl6@L2DpU%tF|IXx(eB>kh zaqOdtHwpCURvMfRri(+-i};%an_&XbaX?T2SLY<%6vMD>q7uOlL@ae#IMBf{WeY1Q zh*;YpNv}8}SVR&~A_`e}x+`v?_oj@|k(kjD`-z!mRGLA$VwixY#evE~gzPY8vwCSl z9hIj)ion-{X=Rap0A!=0kjq5SRO)&QB(Bd?00=%;=m9SnG4>Mz-8n)HfCjD5*FOGE z&8B|kzpO&Gfil~In1|Vcb(Fz@ELvfmR17`X*1X=!y}T33Z@#n#b7>f2FL3lqZ^-`a z*Bb}}kSHwsGH?Lf3IqSzEAJfL*|Mtde(D4dT0PgdclC_SS|*v(4u(8wL(~4heP|{z z!QRM;GiniV_$3=Yc7L%%Tq8}}{O17DfHNZKEdFcu{yzBf^r{cU&bi&wBTaWBA@z)q zETFN45F-h%HM|sAS83$LPEuf?Dj8t&AKt&R*l|*|l}el{YvkQz%fSg*n~k$o-c2e_ zm4Tt01%rbZ8wL!l!IIcQVvxjGGkSrMrdzK)Jum%oPww~ooX_Wc&U0^%*tJl%etn;r zU*CJb_xpWb&U0Qq=bYzxZXwL9&%53ujIAcdvt`34JIsDz=!O%0BuW%E;|%t*bvQa6 zaWe^;A@BqOIAHSnapJi^HZo_!^B1jZ9*hnE>$i#C6^eFw<+nnliZ~lnxihxn9E(G; zcsm20V==-&4xlfcm^w$*Ta~?g?ftE+{&J4$lKPKVz3Nr#&1cV^U4NO%VL2UHa*~%k zCgIY6MK$Z7lKlXqCy86?8BcG8g(RE}57`mLjG8!Wqixqb3QDH}Ymq#FZf{);0Sp{- zkER0K4mn_bkdA)bSFqX)-`Dbhkp{2=ovA?PV=s!&`;e0iPH@`VRL|MEwqM4)O&S8< zx;KxN$kx$r-5aqbVfZ{9jH)Y{Jkr(H=97~+$L>1ocJx5W8Qbc#)JZ~NnZm*{y9|8^s|>+r zM3QAQ-55AWb@{wY{V%^9u(oma>Q!G3{MRy+K|vO@0>2h;Y4Ni78EHxb5)?is`^36Z zIC%^ZoiztPL;a*e+E}^N0J+uKz_&~zc&;JsBrpIxuo9R**F-x!CeQ$*!|a2JII^I- z%9y;&x@i|Aa_U1sf<41Ha0&sJ6KGlm(dR>D5PUc|ZWQ41D~v!=0S|b79cd_k*Kz|q zuR<1HQEc>)f@re77`3H8#(J!|%O^IP$};JdwYaV`PNtD1AM?>D$8szuxhzX$MhWU* zo+J`*ogL|FqFO@`F3N5i-Tc4?(xC&9j`ox1^DUdI){@7ktV7IP@BkWRw^KhOO5vt! z&rAX$@SgK3m!%Qgj*vs4P6Y05Wv7CvLAE<0I!2pK1&I2b_;ysm$m!@B@kC_`L5611 z0Q6|YjQ2*8%q(c9LL#<$0iPL&ULV{bth;trBEZ2woe>|9JIRNMcm)gLgadTb+rE!+ zo6yyaa$p6tbtz(G^bc4qAIr=wp>VdLQDce37vUT@%z?XhcWkz6hTfOWRQeOD7cX9H z2mWhO%fGgszf83@e&GVQ3$OW>C8Ekf22uA+4%AjiXPeQ%5J5L{^7)yCP}kdb_^%U=J1K_!X{fK1_~Tbgxb6bzp|y}rSU;Rj%aKzAe3 z8+;P|w@3rb;+-)iHQtnl;`zaDp)lU0ugyE0Be!r?L38I^`38q3yLgrQY$_|SA>?OS zKg)I~*rm)!!|(^b<>VQTTa}@nxGI9Wm5#t#Jm3VbpPCzQVaIYTC#;;izj%Drf6bRI zb?ygZYx3N9O*@Ro+B*Ea;mp~SrE`|3>Kop+Df1R;-;7w42rFVXan3cD>wOh{Yz0QG z+wC?ZamdFez=G}Wbs__qxB6V)c+{dYcRAmiGMbwN(SQl9%O(h*$DR)Kx!XF#VrWwl z3^K&MVn3uDNUDPO!U>Pi8DuUqnw^19+JDsPin+_q8$USj$j{c>z}#?@p(M@>|aX|6PAVb=gdXk_Y~?%podAL=|gPGxhIF>R%(O(U}vo zP6lSYKM6XfNuNoNl@Y)~YHfr-EjjCIi*a}Y)*!e|j8&7C3~QWtrypVhD%szzCrdSmaVf!2Ai-QZfHDMwT_A13E2AGJ zT4@YAcJ)!`DkNK{AOgi^2$o6*4ItG|CufpdbyVu(5;WYU{5N*ue}zgS0!s-iKwsw6 z+MIzU)3K>E+Yz%K%Ly#Yxu$9S2d{7HoNL{%6I}L`&UyZohZp4pLuVx-D~RiM;RKwc zI+x{KRg)aGGmACZu5d%t)hobe3|OFK{9(Lz+T6CW**f5}ylKLkc?tF(Xw~tvjy|J= z5T{~2_6We6;BHiqwrqVA{G#TYs@D%90N$6a#~ff8U5EriGR|oUUa=r-onRHt!nhT- zxX~~WuVSNfKNC5bRE9Xy20g$PWpqDwh+cJM&Q=U5~I@tjqZ^IcuV#*{mz?(`Y#a1nQ0x zjlM#1$Us?3IS>@sC6yvg;WUGck$W{+6I0y|-Ln-oF@>Sy1SX>cE*@Dm-ph2)mqQs^|*IK7ZGK6 za}JHh`;g)6_TS6?w|*4BfT3}*g^Z*|wp-({8gq|~62f^#Xi{OLzXI$l9gKDg!n-Vz zHZFB&ZOq^}Rlb$|r=yX8#GCy$Mr6?o4VTAu%b5k%$XtH~yf917lgsc#4yYWI9xNGf z&?G90b5wVk`Z={kH}SL8WZF)d&)bkVoWxcPsD8N=Pa^ zo*qcjf`&K|kYmwttz`^BJHD}&O2+jqQp|A7QXygD7(p~BJ)*v9-djuy147Ou05K?b zSeD_@r>g+ECF6C_5&N%R+&yL+q0=A_=KA&09hF|sZibb=7dDli0-0frM-v9jVPyYX zuyt@_0_Y?<1qP$7m~MKBBJ5OPE3~rNWEfdD_n0cQWcUW=Q*nO>Q}#d{bj1Tgaq9WfU3sXIypu7iVgynJAwBYT1dDX&#S-F z2_!)}5iHi|a>aQMkesoH5~dF@LVl2Rb|FOezn(9E=-BOEJ{t9;V=X`j9RT4f>|qDM zh8J)L{~8!VQ!RtegSqk!gEF4+j#M`H%swwzJ;6*?-s6!hS z1wU(VK^DNz z|3<8wDi_YC#;%NyQy%I-b8 zyvq&sn$2!uwz}Gsd#0x&?SDmIq70^s{Wn(GjR1^~7ciY0AHa|Ja=q_^p_7xK> zqcKEkZ0wRxyW9XEf>3Kv$w;}AG$5hQrU=~f#b#X} zeda#9E7JZ;AwY*CHo$!{ZF9~%x)dFRqEzt5ax5pTynPo{J^uiLPG-#bECnFM#qc5G zBx)H7%>k@Z@RpMWzWYb+wUb`H`G0tN*uM>cQ-+l*uR1(XOx-nnu9W4 z-Tqq|A3vy|U{`aFRQC;R>t)I!a-Z&Mhp8J2K@hB@lY%WTjw2Fj_vq+E4|YwMJ(ol< zj_dsKgs9j6_rpg*Thf%crlLL0_)>NT0DNmL@P_4Jh}D{v{f{}QVWb0x0Puko8fu_{ z6|!MRx1IR5aFV6mEYA~fV3-Ny@n;8YQ11G--1WcSaPi{B_1YtkJd$HAj7Oll3$=!f zW8U>&1CBOwMHUCqL?l(#?nc)Xd56y+8j($FAP7yG5diBW>zAR6ry(%X53h|)MSr75 z2#`$hw{2XWgN+)a8|22lnBBOt0Rg{KE&%VPHpWgv+Y=~x#<-^Fb$8Q| zRFSJepiWI9L{z4(Vz)kKDnJ?~u)eP9SdQhSlqIVAy^p?P0joX$Q>kpKFL>0(6#!;N zY%4n7%xGD|zWcA7vGezze7X74-*r0e%kn8v3V&OK{Mg@D&=}|(<9e-{bVps5I`6UNKom^`h?U1KM#1o~X_SUMph`F11 z$2liUnLIrQtj$^w^`_V9MW@l>Lwq1KPD%e$|IP_NV#}XwWnp%s)URYh2ykO$}{5T`dvVm>gWPa)8D@<;8Vb76u3+VyswS)E_ z4;@J5xtyA_H3oz#>Suylrzmf4styG=bG36`-A@bd)56f)loj6XKM<}XNh+3Dz*^M4 zjbW5Gq*+MX6u+!x8u&rq5sY$T;FxC3b=bKW8Ua@KI}u+I+Yy z*?>bqFV2EdZ}IH!mW@>FId)KNIZKSJ&$kX5ir%)=8XnARjqmOb;vLIfTL4yH|JG9@ z(G!JPRqf}6vY9X#8B{p`z{b937oq)@cikNzbt%i?|F3`BDI4dHs!Fj6jD$)0*Z07v zmaq;f8?bCQG5`e&H>@%c+GPLHGYM@(S)O6L021e$y$vQm9I}^Q(Nx}=k*)b&oas*N zo;(z$$796-`=9*jll@2MNAye`t>Fp;msnICV*lInyAb=Y%s-$<1&(B15E))?bHN)~ zS@R^kf?u%L=mg=59Rk2s(dym5_+=_h{i8hg*kd-A22`JT;)%8HC!c)MUjO>nuji;P zyZ)DoaE@yGZQmqt5#B2G4T39YyLR18yf?4G7BSp~2w-B^@YF*imF`_3jXJH?_QCZF z5(=M%O7sw&eGQ)%Qahb@L{OtSPGDG@Tq7&7>SE-r^JJXD=1~BAtAi}!iI-#3?5zK8 zC=9OfvCRgfs1vZ3u@f|VW2{U?V9pY-j`!RIM|C81huK~Z#Ncr*-8px`PW~bPQig&V zPKew7`qGSWj1-bajW**_rC)^YLXvOCax5pX0IWXzqxagm2Qq5olP6~bATaorR`$$U z^KbvbGxqQO{rgVjnWdpE#N=FA|1pw=RXabA#GAc^I>LU~< z{ovknW@-yFBw($$$@;n+*SeHB^^cNkR2wu<_c3-zcE$~Qj;hPQ;@pg3RHV#%+?-L+ z(cSF;BDut|oSZ?Nib`6pvjCHoC(y&$m;o{D3aqk!=#sl?ud?UEm4URjRQbwCiUWhw zyA45mIhZjH=h>_Z3~h$4MOh~mLi>lKE&|HegJUlbC^8J$YEF&AEuBKUY!v$2D|TP~ z0mw`l#E=c%T3;hv=X-{SD_EA`s6}f(_7tCIx3dlV+OOXy)k!XHy1uvy`9OJJm05RA zj9W|T)ZJZlJeIq&eDlMn*S}|eZ|fg<{JMSSsjXdp`eyQf?Xq4rVSU|OPy5C1I%RKo z>!}laR_Y(8EW7`I_vdIX7})HE%7lPteNCgh{ET)Omnx<0>%k+~;53T}Vw67}8MZ-4 zqXJ54M=UpHCEygC%k!m8ZA?Omh>A#hRCH_@TQ9Rb($osHROf;Uuv?3c-9~7Jxka-K ztN02xxd{dY0kH$b_Mm2M*jirK^{bWo?@a-ExM1WCc0D^-OACOeie4tAr9K0&m-izw zSNNIsKU(Z*tRE+SiUiJMGu0AN-33D9^y$;>EY*ytip$Y~>WXA>(=*RJqhGBRFF$)_ zFo#>t?wFH;;f8byHhvIo?>=ny*H2h~V{{SRbpm_v%{j*bP*;XJYErXaS!Ph|?=3Q) z=u59C=$fKi2}rX-=NYTIegz#0JRQt{34fj5pPv(Fsq* zg1(q}1ML~u^Fza4`?qmjhifHNjns*|dm1GsfSOz~{8^+hvhDltlHL9&>A90`4Chk{<^mHFsB{Mv3zCAGrxD!KKpdU<)^p)+@-BO_iV(u`v-%+W*5m^0OQv^ zcxp{Y|J#<=zjd?wt6lq7o}~=r5IJ&YIiP&#b-pp1?gjmQ%6S>YU{Zg0$9bRzG$r%&T~v* zIx0J)y2Fy|-Mc{OI*wfi-vo2IV9{*d+WSquo_gaO-?;hYCqKDJ)@k{>=O6#C;^XBA zXeTxLm;itBNIFDwU=tn_k?0Hv=U|aZi9Nw7U@IVMelLK{`x?MnKN19p^O&l+dM1TC zrUb@*-!uHV9{rFU*1DhV=L%Ho5jO5AYfRVZ8C>qtg&(ogiH5FVk-&2UU_|=RnX-^N zWSB9I#M&lMA}#3Z^@!kjrT{5MQ9Ljn`V0TzsjrH|{y+Vpt$pqjX4jqhAVUAnpZyI~7;#`^_`-_+#%>DHD|ciHv7ykFL+-n@Bp`SXmZ7Dy#H zbAE;c7Gr6G^G*rnyFzVlqBE|GQNmBmQ@LpGK)_Uv!qjdvLaEiZ)I%~2y)gNV2hmoC z+RnTJ1O1%FS?Gg831_Q!-W$V=ClGH8wjXBVQI$6|NF)7pa}GkAm4_^9D~GQk|0q`hX&@bocsN{-nRU5Y6FC2BNd5me|HaK6z`SYWmqu!h zS3p>qY8qrBn776?Tz-*LCMa^fum|*m5>w2c-UziU?)}v7Z|&2+AG5ru&{@+wB_*65 z-|3J0UTgN3{`dFTxeIsxyd2BzElULT*Z%&s1=8oC8 z^@g{fvZwyl4L@kMma>E|Y)N%*Q_;Y3c%FPiH6#i~Hzi3>qSSrrsi4`{mKE&cW*3M2 zKz!BPQ>?{Y>cIX7Mj7+2Roexkk_2|)4LnDgLzi)(#pNugvcBHwne|ro*?d;VU?JN7 z?5b7vd|ZpP|3c9Tq-G0)53}nzOT!i;j)eF#2BtQ~iLM3Mp)xaW<2hviQx4J`0Z0ts zyM#<$`N~(4tQRg^2ub}f*S9{U1n1S`OUQMtInPmDZ@O~j${qqsXn~1FAAxVYvt3_P zA$O*-@*2PFA}br8%O9;gAVBr%xsF2lbllS?Nxd2)gOp##6KRdXft_xi!l@* zVjke}6%psO&J2uHk42CVYTD?KE(iVJbD!PO<#&JfrakqWLpdP|E%RDRU~8dMAljOl zt#nZ$MB(H4IM6ov&CF_7=y*th>(E!}p|89F>4jboD>S-Z4}j_rFKv0h7~04G)9ZFD z$MSOJ{f}LBRDgOotk}2b1|Em8( z?;lvEq>(t6d({RT^;NWog2Am}^4VTYzwFeSY~TZ0(gs`|TF+~zJhdDEheo;N752a3 zov50jhnY=`zVVnFsj6KPDEK*#PZODm>Oj?l3fvq^EM@cpsBn*=L$3A(hG{m{jM3#p z2{sZi)iS>O_Mam}cgE*ME4=W+3)^Ll>QWYvx}^RuUc87=?G**8>kXGKT_Q<#NSE`3 zH3hCW*OL4wS!94NH}zJ-NI-hvad8lq@QxTSGMYxcR1hkfcpTRWCx zIaJ>N*!A7tjrILV8LIrl4y>%Ix_4Ha>z7w9ZS5Bxy>q}SK5KL;smY#Y#ALj1wYf0FsJ=bzr#E2#yw)DOzjc_R$($HHHJo8 zBL_s8x6$teovyq7m-VSnKm9am|L%9c+qATZDt@}^!3Q6VCH21?PnEm=58!P~V1dW< zeMqV@yrgOoh5$@v#Q=W1j<{&0glPSQ=wSnLY*wPLh|tfI5++gAm6=j@6e7b&JDF?l zmACH6s_fDm?~0*VFhrzS1Ki3-MPqEgY&&x^mfrf2;tBa74b;ruZkt~H7C$%6mmvB{rg9t zdMx{8iKH%n~@y3575L-@;^@L38Z~Q`^n4(JCi6f(8=6RzlvGtRN0`vO>uftd?T1YlyD%9JO18Y&i&^p;vdDNlP6-7tE zn7BtgR7+svl?u+soWR;=z`gd(6$C*99Za6L2Ry6vh_)De6J$%o91?AsiDF&U_1IhLg?(Z(g3TJoPrqJfi?^Tt<< zw&eW|)~0z_mz?~>OLjZUvL^MjPvvj1FRnLej2hbv_I~427uTa_HQrsYjW(X}%wns((tcJx&pdqFg(rae}04>uE zejv(fu6NF3vQlu%vL2x7tsBH}g}L z+57E|FFMi?rqXle)?EnE=Y1$NUY4m&4RGi460>|b`uE~MytWK%8lc|Sq=X%w9&n4c|U=Hkq>K0&;oabOpr}iF2 zk45b36r+P8c6WbYQ9Ar(ja=-13+V6(pem>JPaOz8BECAX7IiK`<7RvI-;7DnhVE9r z;CiYcvaILo?H2q_jKnTwA4lYg>O7sIgZ4k?i4ZC)*;EGC7~#zahbt^8CXQxq zS21frJJ2R*i~3A@Ook*1bna6ByjhP!UG_=6Ttsz!=zZ^dU(DCepFgiO;eZU>VF-1b z?d8D{Rnjz2v^B`QoU=cGQ~_7I=j+F9%O-K1rZSGKtpV%ijyBsjvWeo_SMGbjdQ!gx z9=Wq^8nl&E3k!vSPH=iH3y`m-s8uwEF@Qf&jKOtKq(w#h%9Hhxno5!sw?T7|;k)af zo@Zk^dU(!LC`KpUOKcr>Dwr!Ec$M)Al>mhOo>$&dhulde7?E5*K`+!Y08DwVdSDhU zX%MNa$RNWDuk}kV8HvaYfJaZ!c^dPHzA+5QDDEC2y24_qS4}>{Nt38+j5@3@i#e8K z89V$x^+c5XTSZt#6bb1b8pnWUX#kIm+oQ0E9=-3UZ%>N+{Xcy@!2?tvlf9E-&ysRH z^yVlV7tkPD0J`|4t6TfXZHlTcKOak7A-YIMMfDZ@Jc=Cx{hG#XR?`bO8sKi z;~HxJ0Uk?@1&kK~DZGKKH<14wP$L6Odn#-%n1UcO`lUl+R}fJIQxjMN*FX-Sj!VZD zz5qyfGfDYJ*=4pP^TG4BV6zwduOMV;cZ(GiB8vvQF!L+{P%Md0tbs&p!42&$bTHU| znE~J#;6ebvK_ypO?o$80{DkU-3m4YSR2W;HpV~I+&Aa|XU+=&F{%IhCCSDz-i&-^< zDYT1R#;`I8M;V;IknaW=t$G4|OVk_^Rm5{;)InMZBcpk6hJpy!CZc32 zz9Vn2Y=1o$VI0WQL(EYA|(7(?6+feAhu1mRv2efEOg@dcsK7KxBIkks)$sPx7YrF_!i zvEu8Js1Rofa~@MVm8U->Iu_75{x8E>_gi`bGxS`v2au8>1dcfp5UW3w7diP=Bpg_A6C*4;zwKXt5K>I6$Qpo*T}w zNpz&Wbo=jxH7tQ}^;_(+$!fivo0a(6wD-7{pvAO5Gd3}k3utE(j2?%}Mpy6m!;YG@ zWMYonNdPO7)z=wqm3yX0c1#aU;V?Rg(wC67tWPHZrYD$?C15SOD)wIt$NFZoY?@B_ z#|{TMikesBcI)SjTj=;5a=H=z(6z;%0 z(IklT<%rI;iA{x$G!ch5gSjYfpN4#Amo`WHy>Al$?&XKa48PSKlNq6APxDCT4k31JoCYual6w0 zXU?vjjnT~w?Hujd7V2C2KJubC9e}BJ6a_Reb_xK*2QdaM@-yuf+R4B1akBr^tK&+y z|Dvv_bCJw7+U2}~igG(*zA%O8S3kMl66rYZ5qd?9YuLCD^A>;kNUd&qiVw*ra@mRyNK#q z(PuyV*~nf0(q$R39XLl7Z*~tVd7@q!vAS2e z(U2~BIAc!OY(FFwB$yDKK-UFyjmjAgtemTi#ritaroj4yqHbPIKuUBnMN|cIMDJ?> zek+AXg1IOMrZ5DcOd2KNR0uUIN@pP55MmEW^@wT?f_yN2($L$EUTA`-akU{^_+fp2 zM;B--&{V0ChDqe0#b6P+v@+ff+LpJvo%mrW1Gh?3tj%nYQ4rm>I!oKy)RziciR_Z& zLASO;-8t>7Q$hKhCOek9w_IC(KJ;VT;$1HpAfLJ{RaupXACP~(AwM(70e!#YyUS01 zWr6DQbFZT_mdYNl`?_7np09YIgH&WUQVqHlhqm~k=WXit+TXGWuwz%8EKI^ zE~hMV^Dd*#Zf&vyprY(y?CDQiG1;;aw2XcRYSh@%dbm6qnxX7=nKnvk9YO>dNZND& z&LD=!Z-cmb-~L+-2;n^Cc?%hG>R0Kp>Tv4rq+J~7HtrqEOhj~|*?*rJ##_Nx8FZul zcf!4vA>7DVVE-WliNy0~hlr&PGWU}DpGrcTnjivIFx$fqKWtAv`Q$u65xe-(4$}YQ$*COP60|_nhFwVphY@8OqCx=VuF-})e{anq%Ev- zVOdpl#X1W1@Ka^gIxrHM#VTqVQIjXv_XaT(2R)t= z#UL%m7&Szm?ktQ*At}%MBx>xX1POJV>$qUPVs8FUE_9OD4-jB8!H;R+)Wa=+UtqKc zp$TU7N=3j`Rr)rBog=3qjbiq3*hmjoF%EnweS%c3pEI05n~Rxg2I5%m_VUu$yld%x zM%i~duBoL&_qc8?NL~+3yN(htjG}O^J@=K>4WD^xBq}u$NZH*=?=%PMOqCk`sdY}X zE*}M>y8P7bIr_~RP0dL5YD|4^crLSJRyw`FUye(3p5cykgo(M*__=kkkdTP>zije& zik#wwwbH&>t|Uw^+pW^~u;YipQd7Xu#%bxXkK4TWhk1Ke)9j@;%)xfN+kZT1V*gF- zfAkY$3LEvIWRM4e4y&c%pt<00m@e=0!!hx41cOcj#32SwnJxPddxPaJL0;LX`m*aE z2mV`iE@@p6k&RqjUmkz_@ip~tw?Yd!^g)vl31)XqoM}*yg6Sb)8}nv$r@qwZjd5aP z%$4u=Zn?AxP!o;M04ZNBSqjf`5WxAp|F7lkmlX_h)2B?`JZjZ4I z$~;oJr%Ax^TOp~zGWt$X@uq~!>B4^27HbEWT_!24XU7#vC>hzXi(jljOZthHJF zs#v4C{;S3qG(@_@sR@(?LZi$h($LZ=0%oDoZH~6*jZ$ZJXp3h|CLq;2dO4WJwVKcY zAdR64+s7D=81-28iyBt&t%J?#OBnSvl?FE`eBShpS>F_p>8!H%gN&{F+$7B8JHscYJQQ^n)`xz&al zL63=d?0tD2RBwOWk-5@&@le{{g1SAJM5L=%BJ42c5Ij=|+{x?sIxV;8Uf=5hMmyVo zFPo6@wG=g|DgS6!@DaRlZNtr z?)rDz|86Y@*QlO3bLIdCrX7O`RRG4d0Omj$zjUdDSgMCNxJI(1aRhkWJ3eP6mbHvE-)v^{gym=HlG$V*b zwpYBQm?ED*lEnCuMs^|8%ES%+TH_EC-iA@gkw#mxVZbRX=QsSD@<;l%IdpU>9O%{* zl;@Zuw>2W8Ra<3c+zqZ9Vb1*e?-y+x6=wjcBlyj@u*M{yrNJ4y8inC6$A$BIA z9JnKwH>}@mL!GeFt>7ZGk})7I4PyXP?n*nFzdltJI6y-&6}w3Q$+5V|TJT=Ow1mJY ztKS(KG_6Ll88~dhDuQ97cMDJo6Ng{xu9CUBNnn}EJWr^7aIO>PdW7^^&;36LSkr4f;& zkFFiE7ucSg=>yEsipf$NtonH%)=sFIaIOH|gh{f!L4E|;OUa=-cX~WWH0{#LcM1Ig5=8dJ&8Kl*C}c$vs^#id-nDyzKQgX{-r`12*hh%u{5BqAMy+I% zk${mOKTJ}~rGn8=^R~8A9c&m&r<1PLCd45m@Lq60@NvS_97S5Qnk3?Yc^HnF01_(^JNJOw zYrn!k9A)$l|H&ydVcb|7CcZ8Ej!DZ5(OhX7)2xa?8QNG_R4cG%Qu)9Lsm-z*%e`2e z9|-ig*ih|)yY+KWC%wDLsbDr>gTRgc+LKEy2l>ZeREc+hppKE z^@)t2W`}Y2L|R<80kAW`0Yr;sDZ@Fmyh-f87kunl*ubRL9=hfJZP5M`8)+XZvZ^#r z`5$k<|J!Xnz1eKG%No_CJo)64_RvEQEf{nj=H6y1f9$cx)-RXisjL_28`#54V$0~3 z*UbpJd5hjV*Q`p7F*Vax6t~u0h+Ava$>s_(r3zSI`aWJ3-;jzLsVWGP04{C16c>c0 zcC@&OPlnjJdJW=n_BsTpENgNFbnp;uE8a5Ym*#Qpkt-{g1w-K1f-Bp-a7G4E4PLT( zydK`TyPSwg9M=cEukWHTqaDgtP-X0TbnSWjDkxENF(i>o8q6fiX$Z+gDT@7?M2YnK z!aBk=^^{ZPKv_UIT$Cdxw|V2v4i&F60B??$U8b!RBd7tQ z)WZN&p&cY#NMMIxKLcV)2&3T~pRxQf13K-e-pAKs|E;}kOG6+BUdy};2rt6+XN0QU z3-K811ESbtIS#`T`lORl)V3&J({ZAOOLV(oH==BVF~R$k|HATU_rCk?Tc7y+=RfbV z>)+q^zW3P=sf2pXA4;HumJ1Aq?mqELzzGgVE zyytzjmM!SpMvq#!Yjspkem2wPLT-CeD5AIm4?3!$LqdAsa|pE3RM+2~#G7t^X z?QJfNbdYL!Ru)84v%KwlZV!-q=!ecY%{ukp^4}(S5V}hc3nJ)E6;JYSBL9PK-~K~q z>~@uHY}1B$;b{%J80WDpiRvi}Q*;Kq&PXbP91;v#Ker%CK47qw=3?Pwp9s|uL3OHJ zC|PR}NCm>;RIo|wK|)kk-wQzY*$`&eFb-sRnIjaQPW_w99kWtb&;eU$wS>_LUYq7E zAjrqHXKg*f1}h}8b@p?rgBZySss7=21?d>Qc{&rcd+Tk@8A$M+-z{;t9qN4k`R6%m zL{yiuL{x1bZ4^-5fmFxut3L6>6ZXkZe$sH@|G9JLgheQnVB#{+BF82>^`+CJ^;?)b zSF=o%F43xO$l4H|ppm?-Bur)5YIJS9DNFUVl54^cT}ngW)|=v5rU0mbL*ZZtZr-uA z2&@Y6`a#hs7{%wbafhsQj|j47@+R`A4_0eV zS!?`mI;PcCNDudR`~uB?=K>>Kgc+AjXe7qToQF|2-Y_r`uO&4jCp1k492Q<)p4g-l zvMKQDA&?U8$lAZiCCH+~y)p08#7-suHsJ_5cq0F>1*I(T`CHy~ z&n{wodqnHXvs)^N*IQjD3cKp~V^)-SFm0c<%(K5rZo{1KKFu7LQq%Vf+M(iNY*{E-1 zAES@M_H4#@77sZI1U*i%bM}(9x8|gl6fz$QH;=pr0$>jZ50hOuz z*VUPGXypOI(JpTVh=Wc_a_&Ce>AU{#Su+(BDa8!%onr>ajl05zrwjPED2__0YjAfnd_Nk?h5guTgP%NQ+dZD_tI6vY6Dl0I?2CL z{+BP#J+Sd_|KWS>c9kp7BDx^iymU|jxKV)2(D%B^2;h3C%eF-$97YKGMChfpnCPm~ zm1bq{%%CiL>t2jjAa4SUct6|!jJ+j>i9~uh?lC&h(^ez<@38;01w$)`XwC%3!7&ML zk204L0$fvw(9Ogz?bjhAYMB8*>ax_t!KLKEz*Lm|huZ;J6crEKj3H_pRl;NpWv;AS zddR;eJvW;bcE%1@t`EHCHLt<(RPp%ZkI&0dZOqx>;!8wzxfh$Mma^>nPj|_j8eNx%pVutcSSIPAs?9q?oqqwWn#aKRKGYi2SB1B^3O?Rc=}DjJ>WMNPu5 z!^V36UjQCngzV)nC`H(Qlp+Z)6F4tB-tx&xOyS=qHzYjAP zd?j?`>)@HCiLJ=L(HqD$yaYO*{p@Gg8{YJ$Hwl4_4!}|rs48bfMpRAKsCqtZH928* zV7c6uY2wbSwpYLij`7Z47=IgN-EopepZ!6C_AKStn|2iO_<|W!x)i z0II252(Tf$U`B?aM>J8Sfm9EtN13e_2vG(pnpxunD=x?TWZb;ayyF6s>HBrpqiF5g zKn}D5pj}WRBg<)a8iTJL*o1&CmBa$AyTN|`6Lv?J1*E?H`!=L;h*l!tR(^&NGYpbm zi8nf!)s(?YGQMYJb*(0RRfHSt8gw@c4|&!hL+*$1H4%L#{`O?{EtZIb`OaMU#qJ#xk#+C@|EgtDaPANs*FB8E{q zR?>PEQBvhuIXHZG=A8Lo{*PYiw`-?A%9T%V5ma=5JExX1Zy?*b+JSf=h&i)D2FLT` zfi~UBL-)czPM}DvMhsPvKh#lLswYH`)u6#mt zG&wSh{a=A-Q2qxUazM*0u4jX{vX1)3jT?TTwY8{(#3PS9!Y`JH>izfM-zr*;r$Q_k zK!rOw90;BgYMlJMz`;*&G*rM*C#s>BS{(-igaT$f%ehf><*a;7ONfUzF%$a4)M;iw z8%PAZH*bw!E&ZzBRv*GW8VX5|Bo-E~7lrQnS7X_V=SE>{<1hif1BH+rL-ZzX>J*So z^X!bkeQ;SC7yx&8!X`3>et3b=Y5Idy*yI1?A9^=y>i>{_yQ9im{?aLX`wwiWuvsdK z%nSNl7}tfC429aipu=Qh%(?W#oEX-TGX+_7NhT$7dae*8b)%6)oz4tzk@BWc{*OdRA zRKER(&)8r7Tdy1uP&kuo@kCrHeJowyjihk+aun6~{YUrN?FOk!SyTT+h6EVvXBSlj zn_FsJ?Z0^$_8M{R6fgT<&kb7xhsCwNe7y8xG+M7}Z=3LTz}TX{Px^Q~@0|}-co3#IuO(006!8YqQ#G2fwZ8a~_i?bJd;JTKS zTG2dh0Q!Vk$$Bjp9C!;%g)Bd4tZu`QGZ?peTX}RU;r=PZ46}3A4;DZm! zsEnJb&YwT;SFT)fv^bL4AX=`+FeA>W1;XS8&lG~^y2sYR99{t>PXHy%DQo_OG~Q@L z<88);!8Wy(_cc#n#Eb6`Do=yHr(8#OWKp?*3WRWT`0xaU$)+`m1K7CPwAKbNIy>&A z2u(&e>WVG7Rs7j(!wHl}k2jcuI)S0}u!uQ$)ERNRI|Bh4k^$%^#_yc@&Z%Y62dcxbO zuS+EL?1ejfE{^5SC>dGxKY09j4xn$(vo z%jT*DtiJE3uGxow<;J)uz-(P-SgF}m3BxfwbI$$k-+RX1{+I8u+jY4ATrNFz!w@kw zGw*r6IUprauoVVS+gj zo93(-pEFI-pL$|zFJ9fcMMdl^ zovP&^|BK&s+TQv-rRk5ncne5f$_}LZlKMwf)yj5y5yA~& z?934m=IsI2e&~II8Y^t0K&@~dke(rQml)52sdHzp6B9mo1s+4W8CmymzsjeoNf+-1 z*Sx;2$myzxs!C;S9fS3H&CBgmo|iE2dKbK$Tx%FJ&@a|ZKPH+WSDRrfOeUP@bO5lV zK_cXaxkNgm7I_=jB6%CFX9UmOtz&Pb2xQHx2NeaYN-_`ljVXKnGka7$*~PnJ8jNNc z`j#w(<=mKCkND^J$ww3;zl&&iEO%T680BEHKH2Yflw?h9c3mgVnVV~N6Np4$3LS82<9`Tllp zl=@QTi_Z?{;n2pTP}D{nO3O}r3OzGx>tR@E+9bx2dst@sPxaP-1d!o~PDkOU(B*Ps zBh^;R-V$KbG*yBKX|fVR5E&RkU|FYUoXGnc#+Id;%EoHZY$bHd{%3Tx+5gO9YUY~O zF=0+&q0HwO%V8LXbu<;BlaayxTettp2U}uO*#E>LfGC3K7^^Z3f^^EY#Wt&~<%)eGL`Ru6Vfq4--_Z>mlGUv_C0# zEi%?C9lqzD?ua2Vn_@eX-&EN|O=U6hAS`!_yG$g}Pd28$ z$I^qsBwjFe!V<8n+1b>v3YTOTzJQbLmss@zdimg5<%qZ@05(C~HsczrwG#>VfdR)T>VN{Gu}LY!QZ_&q2h!)VJ^};Y=9!?iMs+2l%Pn33#OQ#D zT^Xb$_kqK>Mnb%V2n{wRt9Sv_CY?ryrlNt^EI?3R!w&`DlrnGQA1^~_=~jkBU{xGy z{DX0##$13#t`O*(b*VCdW-21|xrsaGFb)CCs$A0=m=<$HVY6{D5{zUlQm z`=PrGWO*sLF2Z&|>4G~(#N44ULKNb-FJ|R?EXQ)v%94Kn)xY;rT)C9zN@EAP6;xt4 zDpk)evTMKg6EDTt2iza}p)azc7AchUDzz}R!TV-cG(_{iZS#&KXcXedi&|$Zb5-wX!+r%-|GQy1a;CO2U z<2d$?GpZv5dq_?~XS?aDzTSQGDN@tBbpTvQy1*!(Ov1q?V}u=-wasMfO&JMhkBdeg zwei{a?Ggb8L9TPtju8_tzf84@sK%>a^(yY8XU_&ZFk`N~ zp41-@4nvel)2a!-#mnOMy1?hWCydKLQq>svrWZGzAm=|DqQ<^hQ zO`%HsBLocyz%6qBgG@;(I@{6^Z%T%+QbowFjQ_+_yZ*ez)z92zU^N)i4mt)w+d8Jt z4SB43>`QU34)H&Y)&Mbi#QAf=Eg12ri5BurIU0X21{^Hyu=ax0)_1f1i}0-%65 zT(CJ($=s`CJ);R6p~ZUy7E9`CZ%f`&N|wPW6NJD(0x<$Hi1YghB}Q7f;QhMPZXM&e zH;9uCsBkVnEGpKw&ZdLlu?BAPWde1hmta<7sOU8(nr(Zy+U5dWg%uiX5Ht>w1f7)S zrrh?wr2Tgwb#3j`sZ*i5{@?xXcem(p1FFlH%VsJQdDa8}K^}n7@hP*u3de!@8phM& zWL^?Pgu?-Ki_3X4I|0;MWDF~yRm(H-DI9yTZOjnz3r+^kjq+@A^NL9y*?x*=jvGe` zd6ZyU2k3$B7J0p*l2NV*JDq|NicOpO4!=wAWMR`Xq*C`xg@w6x;|(JOzc1ACXHcau!N?4 zOd4z^0x85w9aET?%)l9+R>3fR#tBU71fre&_rfz#^cX|O#_9Fr)(GwgC(7F0j7%qB z1)=hqX~aS4Htc^!Kk+?10-x=_kpztS2{f=Mo4}j+_2Cl|264A;J%rYJ$o9N0vuyM+%p zzRLHaS}Ay%Zn7>EOc$&TN8&jTo%E8hXl_y0xKx$Y~0LxS~P*H;NIE0EUz!DAy^$R1)V7h=a>pm6x$nLm zT0oQ+?I})`(PJ8IfpVELiJBiPrEp+w6quSRF$bsa^|)d6bP5nfwkc(U8>An*51;$Q z)~-KqcST7#rgxgW7{gP?&dS`VhIPui&O)N7wKn@OFCELVd^MM4P3rr1K$U=E)wQL) z!V0+3?*+ID5A_V8yO30S>bGy$2Y&v#o%HhbZ(TQ+{LS*Jku{{qc|%56EWbps1{NM0 zl*IOmjpW+OsC0FqF^N><)e4d#Y05fmKlQ)P_I}XFVCP}~S-kAOn7ssdAM{W0LAu-Mf$uiiLhM{_I3cczZIBr|nuh5RsngDjQ z|L7eYy6W4Yl!rvBv@p#dKLJK&501m9w8!vV(wlb#;$^{h!<-9`Z6DU@L>XY$2N>@T3NCG^cDn6 zPWB%&m+^|UfcvRwer9AVJ3HB)S_TEMSg%uOtfGu2_MaV*SQnKq$2?46AZQj*sY`3o zU%FKMTE;%<>!|D*mI2WI+id@9K7kLiQ?&o+YzL>&*B%>XtJb0>P>zW+q7e%AA3-p2 zD&_{PQvXZ2c=6&AQC+KAvio`;f$CD}F5J4-^TZQR@P;Mz&(T+ZbMnpTrJ8~c0;=At zj1ikuhQTPn>5rHQlZ^%PR>wg&(&qW06jOTGa6fbum?RCIBJxY3dg}xjeUraa8$!2q z*{nrh;c@BE$Abi>mc4dF!ZzaIt_%VVAW_dDkM7bw7?%AEv+miAYg?-Y>j^NigE8Qy z%9!2kfHN?8s9q#$Z?K*K^mUFl|HIsSI0Zt+Ck~E%;&--oR}_)s=HMBe0vz{}!jfSI zGvQhM>F@X*%dwoGvK&Em<=HKrF%M)qqbYhua|n%FI}}09aa6q58N0u zTuU7#wR{p^ca$Jhfz6IITzb3V`Lh4{$(_NG!Uew9h(JSL8D=nTn-O=>P`ZY9Y%f~a zDy)vyQC#e#BU9^ykSw(SK|qhb_ue<~Z3KDM&!*$oyL??rT|t^02;S?>fWhX6?EkpC z1@$u8jcT_h8_nQ67}jr3M@Wvy(P8^94&Aub_TB@i)A_+HNuA42s4l7h3l}aNGE?nZ zi>NLOSm&EFqS|l>)PQE=3-ei_%0ul6P%BUcrYmr+Yb(mzGePxIYhE*WG58K(E5we+ zNTuTFjl3}cdc*peXcq8R*nQ=U0?`mg69E!I35|$m_}*OUQS=#HBMQ`I9qB~Z(YX<6 z3yGeREx<6&_W2d`a!m-Q3_NzKAHH_4TRW z+}gFfA^k6kjSAk3(mviN9m#L&)e6f4z;4WK4*ws^v7CUypDoQWS9rw>v@m$btXAsJ zL@<$Z(;`dhDlcFC-p}6%JE7&nznp1*Pjjm&d#_+bmWl+DrY2_9LxMs3@h0&EG%VZB zM9PM(qLXwqfG=q4tu_g-rfuUA9h|a+q5{3F;bL_FR2#0(N2lb5ax9Xus0_AFihcCEd)f z@Qw+C;(3RE5*om>^&Hi}PpDqLe0jZ=yZ&Q2N7bg%BC3x(^2mBarvBIW*i5yn*wLZD zZ;m6~J!1R-QqFBN5fYfhy@()^4@!4%2GAJ77>#*qB?_kn>sgm(#b#BU z%P%%9zi@RD%X)t5QW$wWP@w`DYoBD89|pP zVJ?AjCZ6D0w#bK=g`h|`aSW(MI?*fvwsO9SyC6PAfLm3#6Jb(sRbVw0nl|KnX%#{< z8E0U1L!Fa+ksCq0Xrz}5-TFbfM3(Vk-wZo#)^z!>K`^G<`eBj;qOSJ_EgldeR9M^Vp^f+nJ1XvTG^fblEb+yWqn*necClVSr86Ul{3J4-}WnwkJXbpdY_sJb2r@cP%ketlh1 z|5vVDSu0w8nM$e%lW;MBi+6}&!)u}C?IC+F^IHg?b!ELUwgurDdP6#40=Z-1(ZD!i0g$js|EwWlFF=ul%ON4!%r;!Aw;FoZl*=vnEIOa` z7a+~{hA4pU+yE6dX=uEb1?-p5K2=BpV(cAIxk6Ac?+<_!18@cFb-U1N`8m~-p8lsQ z+*&EnB1|g1bp`^Nj1;7tlc3`8RK1*?V>y-+P_8|n7P>*AGL2@X_wmhko8OgcEbP%E zaAOHo%GIJHYaQpwDGN{yt0SDCOKRUwFiKK-Ml)d{_TPeZbaN%~SVO!O55hTX@D(h< zqKl%_pcMia0|?ljDr0odtObymxlVN{sKFRi6M$JJRIDC@GzGE<)@S<P2L5u1Y zDWl?-g|LKiN@L8qLk{9dbp@;EioYRY^EA(k$1Jv^s>DZlxTL zb+yOF#gipF3-Df+P5`7bJYgm&_5o^mjW-zW zap`(SF&z(9Kd>aa$;1UwOC|1q_$_J6&+kq%nhO!eS{5Bjo3HTO%ASbOKF%7Ool zqG!*ZwY`!P0u*BhidWnpC~q8_1Q*LV3$mIaQ`G>H*y$e`$|ko|+z~ZkZ3&>Ql0D3t zBd&O<^*M76d-DohYEB>!2<>}HY$A!a87WK~?OmoqbkfHFJSF-#gViKU37-zKKH|4_ z1O0OyqY*5c0(nwL`xVP+WVvXGs-jXqG1D)MUb=Y8VDc7*uTBK$23jcX{lot}PVAYg z_uOYp9r)JhiMm+`E^W@tx2$0wi zD#uEumX7o}d$s%S-g6r}N#$SvqyA$C16;uZd!07pwX_I&UQFk>-K=6Xs%Io{1LvAi zPuTzZx~8v|DY4!B#N(t4(ZuZV0dFH1S(Jxi`>~9{3hCZO%oMJ3^dT7eSl6O>l2!dy!{NhJsimp#-|d4Rwc(C7XAwwJ@3J#9ZrR zW8P#b1CYa1X#cHm&~{|~WcbVRRNL*g)p7s*_earel(y?1o2llq9Qco4rUH1V1=hs` zE{2jgr-0e|;C6?&>$ylnj2pn<>2f6~4Q`l96j!rm0HtWeJjDAkOd(>hdFGy(2nEom zL7~{=(g6vS`^9P5Q9;2 zZVL>Hhvl033E~^2CV^`xPeY++YNQFNaf74-0CTAX-4mxwZmrVUI#zgiP6~NkyBhYP zUpkpl)pHlz?m3&vev_|`REhBOA?3W5a?tAjF*RTJt!~G1EGMCyf1nICibMuinb|N} znA&jTh+(*-J-N|?P95VP#7F)$51bs?`QoRynf4!rK@l2tnqq@3HDh)w*Y;W2pTcl} zcxC^ouBf##oxgROCpZ)ajKqSVtG8f?1a1`lwCJT*m=p<6U{4dQ0shF&7pz9yEELBe zX_TH6o_=?R(w zKx^GO$@LPUIMNHN2sPZ)LrJDLE=bOhv*iS_E^NlqXX|Sv2{zeF``wc!5=g>w$3J9Bddl+}m-#mPKV^~`;4fA$AX z4X-GQKT9#nI_u^cfc$AxhHF61_`0`j>~(KBSy7>5xqHj`2R3%^eVgd^9yVkxYvv~b z$I#x}fF2eQYO-n3D!o}Djn&q^=He+kDdoLC`BGZ0jK5T1gc!_dgb_Q5w2NsbE1WKSx9-(QVa>iAv1aVE- ze%eSyCOrF_K@|Xc5QJcY&H%f|rjkD4g`Cqs@uvfi-3p-+vJD|-SFxz z_FnenV5T})_qlWD*4NK|_OtQKGtaE=U-`;c#+Talk6Boc zr`jQ09aLoMKZp-=tzvmRUK@6DXg&QMN_B%7uIQdckJg7!Khyo-$NVQ-Giw1z2#uLB z6w3)TUEJ#l{NOPbwatYyM^D{r>`hA!2#iI_>lNhWJrzL{RxiQNFOZO$qo`z9rc!dT za_>OzZlDRp#~E^m>}02kzKAl&dY`JA%p69Kp|#Bsak6rp)p#kxNKK}|T3*p!Usk{s z0#JD@C>$&Wd0NCL3 zL3|3|cv$-E99QAOf4)lxFt1#y_3}qy)B<E-XV6#BoPU-8lCTitg7VTs*3tp)~bH^ zpKtB$-*+-o+RHM4*S+NkGLPk04wW~&^_0E-ts8sh_ZE`}YdZ8{ni^Se3D6T(nHiI~ z(eUBN+rl}odf=43`CTU?8?mfSU4My6fF}r0)<%~W6b!WR_stz@4gsizfM z&l~T%Z-lRK)DfpP!|8i|NRN;O)|-;i>dui;hLAXuI_;3(B8kTyW5CnGY~d)MAPfy% z-#6N`WLW7>7&~Dz7&lTK3!YrZo83r9D2GJGv*ztti@f*LH&!(lZOWf3?`L!~@ubZl z6xWygmSdQ=+)O0^So)EmFvU6OS`Frl41AOKlZt)KOTlnD2SEX?*$Lh?ts+1l)(&hE zz5}F|hsRBC%ciQk;%8NlN~Zb^ply+^vY1>!7k&IOQa44_2FIp zC#5Vq{pVoJs^8O|jq71t^X^0CZeWud;0%umc*OxA7S439rL9P_LTJSMkUB?XH*x1) zc8+Tvi4rg(vHxRWIj&_W8yZa9jVSG~lOgs$SGNu37#n@_3+}f-kV{t^NJr2g_CI4U zR%RSfohin!ZvP$WePc)(23S6Z7cpVq9pFFfDqyO3pWi!r;;|Pk(wRia%ZSt6Ti0-G zXg-nlpL~JHG30cFRO8&ab3SjTdg!5t^e0r=kG4j2hho<+o_zAj_4U%FOY0ZQuK(qi zspf~ffXm0?RX+o%4B2uyHoAzSZm5~zeCxmV8Oi(FR ze@BON4HpH@dM2dlnDW~4UoV3JTDncEyy*kv9F4CWO8|y4TaYzs$&`fvS2+AyBLm<56 zBq7-UYD^+|2{p=;<%P|y?LP?9?Y!kz1H?CTC{>3|blp_T8@2!L&Hjs%kap4n4LSS@ zi@iR9t7-oeSPPV|K$Pv%H-!a{I@YMZ z<~6TD>VH|I>hFB#JGU=;j_U49$ASNLpyW@e_85JY4pc@su`#-AWRk~npbBb(X>E8n zh6&PmbDOZW8l38yZVG0&_|D+1SVG?wmhDhkoiLxiwsQ3*JTUM`={oPk}O zWZ;aP=QTvWDf1MRQNsc^`Rd+Icrn@>HqP0Zvf_2CFuvdav+Olm8hFpNrtfV=_a$=x7gU~z>y4e8dYv`7=#Vd*p0T}0#o#BF|v9>qg) zaT3tsyl170{PbnW7Z_bkoRhyUVd!%GV=1i#PTPat|IJZ5$!rjsNnG|pUu%-@$HPG$ zGq`e!`fJI;7&nB<)pe_MO-Y(jn3!v+epQ;uC1|cA%iHq9`~J}}s(LKPa<`UmdDlJm zz3+L2ea!=##8=U@4Kb1p9ld9S^Ygvu+`jv-obi(cQkRtf@=H`@VMozLrLHh4!5i&d zJyAwe!c^;;#JZC7FuYlw7+J#K!DaMJtd7o3 zhACTkyHd*sf%VhouH;FaW=Wbj0BjqNjn?bS+D(Pjf8!LiO6X(Tis=~R%**5?rzWT}q#(>q+RS9O?UBa7tz6^mojICsF?cE6 znOuHR|F-)P$u0af&&wE8?-tQ$n0hg${Fs+EdqT@zc=ap43vEADvKOY00?ORspLFxR z$Z;v8m?a~)R6D=2T7139StZstY__U;OW<+OP##ls!=@}yQ6HI?x}LnljxYaw?h|3h zB>=~AEO&2t!`n{T_x!C__?!R2DeNxs40f%B5yhd?V53lcdH#R)f4R@z{=N6uNhu3J zeeX|RgN84QlWTT8H-KbNh~bgQ2n9(uUJ$0k>VP1kv9wVGkGNrh0G}S9&!S?3wEyEt zX~h5tVb_QeQ^KUN>Mn zdA3Y*!5Jq`vk-_9WfXzoNHoD=*04cCRpZ}1`+p!-$Vr8-hdBrd5)yF0nIPy-fQls- zYX3PlSJWBP>-?VO;I`@I9M!qxIjTN;Aj^8f(IqZg2XL{84!&$&Vnj6xu)&i8rcK7q z@G^QIet2Z`!i*vNjHs^>NognR7(J_NhW@(O%mkMW1SL;B2LaAfw_@BNKvV|RbuzaE zzR3hbkwBUu>cS(&H8xhrHf05oOjp`r?Mn82V-@CK?%3oqQLBaAI@e%qxKOI@x$FVn zh^iZSR1~Bh37?_stv+?+n&P^v?*l)#)#IFwtK2u>m#w;%gSC=57XH&?e_At#AganxRp(A zsC8XhCee{NfQZG=Cx#u3Y$Y9wy%Sk6Gl7Ddc`NaqNk%#^L=jF9PNLV^u;c`Hov9$_2dPB0QtFFQ=pzPL@aNl_rPdmHaL3d1m0_N+buWeqvqwG zix)52t;&3k>RO(7;t9*+sdx?Ns2WqVctRp;**O)As=SVBSos=2ELRWb6mZ>xK4(mU z`--gT)iEURnZhRvyj+3T<3!N%tZ8I4qV;?9pwiasg{X5{BiD{tMTH^KdrLQTkWI)@ zxx` zoE%AJ)imvWo&?(g2SZm+#~%1;_F)v~1gpL^C~0($G~UTS^4C`sfp zo^|-8?cWQ76Kem7w4#To26l~H*9kymWh;SceD6d7m%!LKNIq>%+UW#efyiUUNN!OG zvaJw^4m$@F=sA}n+CVM&VbA{Ss|LhO%^(rDVJSpNd_QP$4QHO?C5@hww%cqAI3P^z zIFKlgq#ECZ{uq6Z)e4A&U^sTa2ZqM?<9z&bc5pb4go*QM1RS}Ig~0In=bvAHnMx1+ z*Yd~!>_8L0Baiq`|MX8gvf}eWaoX|q^Q&L|YWw`>Kfm6*oTC~A?CPh(2#vyE^d_qdrxFe>uCl<{^0fFU*2n_va5@3KO0YsC~ znn~Xy2NraB)=8o#W#YBwG_q%$%8F7l8d=^A5AG$Kk5`->*CrAmFG^|DyzOWDy@IJs z%dCuTL!7hM=}~WMg3%5qwvoKU@l7d*a1{y*a!>acCXhOYUQWf}q~(t1K4WWS^`Rd= z{#@v>9LurnKbww@MD1ReI>L8`_t_f1rsYfq@1=3=bEa7-&@f%LPUFEG2}0%+!a@QKDCl?&2fv9cwqjTmRETjqLDf&P#n( zEi51UuW#Cif9YiYyy~$W%ds5G%a!F||6ln}UmPH{C53BUX@=)Y)xyePjiIH%ZFZv& zpJw4S%8JM&>M$B5SBzVT&(cQGIC#tpPs{#$xBs$nib#n_uJyTD-JU%(GbR@K5KSEi z7-IjU+kY=Q2D`xK^A6wCg`#5Fe})FJ*1a;AAu@}zZ_4sY^K7m zQcdl(DBK<(cpN@!{H7Eeg$Q;! zTb$P;xSXe&>rcd$7Eqq3IN6u;83mRpOjf>hk|Y^C=NGu!rT$>)xb^8YOK-0P}eWpl(2j9VLjWc2Jz%_1q)}V5@y@eFbpsQPpn$VY3MF5w%RS zhdZqLn&)OB_=BdZZ|Indag;1H5R(GZvj1Y63y8W-F99&{5kc`*j4#7|xMzPnN!5UD zMP0)y7=0p+L1df}slpSTnricjGXrZ>m*c5Wo__l2Sk6&hZhQ36N8{ixQ=u%!Q=u%! zQ!S}~48jC983256O==Jq0m);iVc1KzSg!NMxk}qQ3;DUgQbMIE*Sa? z1_|0-j>$q31&)PibC?p*a_47LX&C4@RBsFgm*Y0<{$pxLWmW0y>A8iRo!9xDjS!>? zxW{P>V}fk`wW?*k>T{QMK*w?{$8szuxBU7)cyU>e8%X)qH(`=7tOcg|Rfgr#t~CHw zz)q?v+cusZalmb@(H!4;v*QLd7DPS-OlXr4L2np?_8(xDW+bG`vIew5Uqm2Yk*fkC z1SDzyM>TGm4c@^1V_j;RLq?xl6jf-H3q;zg(yV|yo^KFl$Qe- z(RedJZ-RXg#L*4`qiv&vt9}Z~ns)>!vI!Tb_HZEtzuCQ9y|iquI{w7!u^h{>ocywEp8DONyOyA*0vIuwY>m9p4yc(n z1*uMBtw9Abb!DzHfRgGrZ|@O1eYEOw7z`k*ZvPR)5u08%x8fMCC{hP4wj5*N*_=I! z>XMx+`yblM_y+bnhdcTL6s_aJ&0B8Y;1HrkPXk#?`3W_QVc1O$P-0-i?8ktfQzSF7 zC+&Y$8|YF_Mj}~`n~^{69kLF)xH{CMK!Iav?x0$dAc|-;b;Ns{&9a$_nC!xZ3pN#> zFYF!oub+1j)paw~l`B{LKuyKGc*R^nAlyi{P$JTU!I^2Y5o!jeG6@4T36e_}E`%(2 zN1<(9&QwTF0(P%+gHl7@1V93mu$BV=ExoPu@FJN8SrF;EV>s%8B-jdFn@Sw-cmzWX zQla=v@UWYB&e6w^nxgt2X=gA=eQ?%n=Rw#>!0aEuvR3`Tad zI|lo2rcq)>9KBAIG2)H=lZwP{(PT#3j)gUU8?pZaZj~-E0ThzcflL{m9kHdfuL-gR zLo?2l&y+pf144z9y8SnGX2kvr0%=~3qH>c7abmZFg;)XPOKc$r{xAPrzI@qpGga)> zkVQ9B@xXr*rp<`zdM$rK6@BR7A{quWU@|yNK>6!;IbN>XWDqjEqMC!DOuQ_Y@r`vc zh2WDPVlT9v^m1UBC_I*tIga0=miB;&2?{x8FYmwu_$?i%QMUEdW{mX}wyl|4JC(l! ztcemR5i7jO-@KneTl?rm9Vi;MY9{00B!I*qp~;>)?|rgb5?ku7&ef|(X$rl;E9E3a z%{e8ika_hz3ARg{)5@)wNg4@l<;yJ)~q% zIooUfa`ixpzu>iCw!^_VCLRPfGetw|<=Mf#81F5tLiZJ56~-QnQM1^)KbXbo3^7Ef z0c>xcW%7Q~Ekb|l6hlcg$oUuxDvPN+Cv-aoFTm0no-cSi9*+*3$=c#k;Yh9KJy|hO zk$Ma8E8rE*L_W5Oy?jkam%?d*Op>kVy;?1uaL{E>k4b&c%S^Dt>}k2QyZ zYmXSIg%T`&{LnAmv@`d)z5V--$5x$`^4z7cPd%}<&+ek;&t0~-^6b{HUq$wzxJBh{ zT!L{Ei^uQM@W^HAFlIHZ^jf6`Mb1#~q52I5IrR!0a6OI(ZHTU8ebPc}BE$-o^11iy zChob<{52Oh>tXn>z3BG(x86O+G@bPFnWt_pJN)_CMekDATOCmZ;8iwsJV$e2s_W%m zpsL2&WlU-RQCBSMN)h5w=t`?f9%VESc555c+P0z5_2YOnIOIr$Zz+coi!~)qbs51X zy(?)(+m!Yt9{{ewI?c5)%Kv7vv!rW|w{Ru!cEWcIuk1fTx#NJF`VmoC?m!&E;bkjg zLm5EgG}V%Y<@56Mtv*0wZ4x({X+AV+mYIwKzL=De_Ehkn_CH3yot;d~x4p4ml5zpC?X+`LA9>^vd+f2tc;LU%0+o4%i3O~r<}Co3DpSw$!Z~J` zbmJNj#`zHcXQQdiCqPx+j1|aC!VtS5Om8Jr^ad2Hiq|pv>aIqH?f~GgXS!S= zTQ`33J5I+pe84&vZ>ZXdA&ZDG^lB2c@`xM)^U%1G@$0UE$bpJ7xR z>~E!u@imPmgH8!J&~TWww#S^&VV8+h-k_Q)5SdFZagOSR3m4*^d+u3w{jYyZSt6>B zKKdwwa9Tg=+3X^!n;lp^wX5Lt<;$0GV)F7s$ftkiuWmn4(K)V{WXJidMcg$GS_mnu zaA#`{8;v}6IFDUbz0V>wfhTW2HVJCnZU)1iWft664U!K;#0f-?oo>#>*0M8D{o z-J%?BuB`Q-$G-RzO=SH`mf;(}^OU{gkuxXm=R;3&Sq}97XaC8I_TqC}vALecBlaJN zmfdQ&ZFznhVFw(vA!ZxL@k(_afgwW>2>U&N1c!>QUoq^eIBO}8b%58^?$kIGG>i)e z%nMuWm?JbCyVk!oo}6P?0~(B4hV%vUKP0y`cu>%c;~MSBX$XXzHf1Vl-wO!u*J_94hnaZqyETe(o8|SL(jDTVy z5jm~#TMlTznT&7%v|Bwt*03b78;yjtVGZEiLMa#0lRoD6dfy7FM~=fYe$gzE05y%q zjw#$|`Z_z-7$GJQxHgbutqC9ZV%*hre%X~t7Z4W!7!xtH0tgUftcJ(NT=R;tFSWUL zmb{pCY5$SZ6vZhuP;sqmL{#ed+<0JhJXv9_!~o)egCJ?A@tV>5<`9flfA?o^E~#Ss z?tlLXR`28jfV%sOYcIg$r04D`|H=8$7!0iIl#5KI@FvQC8P!y7Lj)L!b!zwIGx3`Y zs-a9Otz%RiK*XtjIC}j~_}zMkFqYa(u&p)S%o#*FX5x8|&XU zKYUNT<9~k7iT+v9lTbeNFRt6K{M{E#*DsDze3Rz3(%1^VQpZBc&P&9=EiefY!h@c6 zKTAV74rEu4}H(OtJ{V%EimnmC?Y`4mVE@u$|b7ZBo30|Uer|T=a zA4G=ULhN;KdXZ8YrywXaUE6bs0wOo;nHOMH;dPx|mntev9w8xdKfru0%_L0^5N9y1 z!NZF()P)P-jSJ`_AFSYBqgm*=SCoCdFSTYW4udyfaB1~n^l;E$x>{rLoGM0#8_knc zLHD&y*uVMpoAyh8`^NF;synni@ryU?Xa4%N_;3HeH|(Vswvag*nJ|_AD&@xnS-Hu1 zh^$)vLJL^lsDr4eXG0Uo#_N4ylw|xHyqy9rDn&8_knu=6>^1I* z6zL(-ocA`6VNBJ!Jp2d0a@~LGM_-6v{m-u1m1p;@*sPPN7;Yf&}_o9+}-civXajD2kI`ndsyFd zC^b?>&=O)=E&<5D?W7m*9G9ZGY4+84Z{mn(_P^m=U$%lPW{63@Wfw&>t!Lj~P>x1lWh{?uzwb|55*zsef-Imfr1B z|7}bSs6O(@BkPyTPpCfg%rgL-ZIGN?f>60WS{rHQt(pdZMwDHGBfT>k%o7G6vsO-qk?X9lD>hMps9Tgp$Of)GL(R0&W^{&t zdXORqP}u@)M#qo)I!|bX-S>FS;nOk_pLg%BKl|aZUwHKT@kasfpt7t%{kgyKQvCM+ z`$p^{s@~IBHYs##X-_)-DTkC5*02^;FHHiGm&@m2@k;)Y-AR->E^34o@}DxCAh3^+ z`nv3VUeyKfR?#w%e=#IY{zr7n&6=?r0p!v&h_)~q1X+SX&!;}}_;vgFM_;fH{?i*r z!MKCUa+v>nfASi5oY%?kqm->MYmN-=kF>i`)K}Mw`Sn&)+LgkPlC=`bD zJz-=zfKiPDzetA?7l6Of?->&0l2B8SO+*WH)rt#7ltxAVoWT#XZhOqU0e=K?Xt(H1 zyBIKiUKE2=)A5JujB+-dwvhHeD&Vy}VEWuIc-3LQ_JqIJb&5jpZ}k4*ylbz&Bd{N#mjH~!)x}7|M4~Z?8kx_5^S>u2SRiO z?U*=J;88DYMEM23d&X9n#c=YxW+Ar&_$4@mRoW!KdI4rv8)?i6x3z zbM!DOxJZ*@ll-rj-1%iy>@;*af|cjj14ar_KsPqD@Z2S{|K|VslK;ZHUy5UN_4byR zu7>?rf8(ls;GbN#{Uu$|@nooGF1gU?swbB;Y??t30wLBf*wT#FPg$LJ?VjDxmCHw9 z$1;nC^_8=I>j5C)f6Hv2pgVotmR)nJIz;}N6lIu?`#1LFzwAHOu2xW`Y@+rz3Y&`j zn{|3&Sk^+RB=9tMQl|prniuG#jXUMmy+m5t0FVrU-PjP0ktcSh+M)fAa{AGaX!V2C z;K968$1|pUsIR@C<9gsfiE;VzWq!BApzF0fo=Tpv_I|S*4e=Rd!!WyNNyj{|k*=pxd?pwl1R)n6V!u9ZPLVf{I<5p`XkZ9k7mq(7_QmCTZk zuv)Gt&sATlio7)=3FS&u6(aa8)IOAZ&P}CMhTmckRL~%+yAEz;IF>)ba`~e-?HB(~FW8k!!OX#Oz3bIJmz19t zKw0Nrg7SkQCJkD3Cf@{XxAF(ArI|JJtVd!MP+qUmX4Zz=nBUv90hXxA*zDRj%53Ti zc0l>R@Q1@rn#ez@^-ilVCI8NsO_UX>?^DYJoy4RiDdq*D(Tfs)MXfS#1Qy+fVLWZ_ zzl8m7O%!x1td_--mJG}_-K7(fVMC@vNl&A4Wu4XE<^304`lJ8bdw%0>f5*lKs_XfR zO;mUdlb;5l2Ff)7fkXe7T=+Jo~6nGry&^q$cf9jAd8TRHm>|{kyYmdRmcDvVNyYy zx)dP^N1CX>5+|D#-MkdSyq*)$mgF05N~-UTG5|RU0j(j!O4Ax8S+WS=nK*Hea(o=q=$)@jVUbkup8yN$?7v<-}e2d?A(QU z0LSttQI?(jzyANYja-JEr2 zh!Y2N8zt~+xP1bOEh@7QQn6k}Gzcvp6;Y^76})LC8)8TvZQDfthn5am-{defh7=w} zE@NJU#>@G%zxJQK6wh7S`a?f>#*XDHQ#e*1Uxr+t%~qUa<^RfoPOzM35bV?K))t*&)ck*afqKmDYf*Q~rj) z!4eRZdZQ6AM#{e-#=MMd>!HbpF|Y!#1L<#2SE-5oDNY3Mf$3` zCmJd-$Uhxnlc=hxeTyW<-uDDu5^l?&)JPj)>}ewnYH6g=6HI4~vY~v8AVO#prh07D zRlhTZE-k-Ib??3RF2_@q9*;b2K%ZFF1Yozn=|tE#@c+L1?gQ<^MDNMH%{xNa*AV&D zc^U*H*>o}pGBXdJ%ANo!>!`^T6rw0ef--&5yvcR24i_^bA(sM-5mgu3&orPl{`rXI&Qk2v%#s^k22o8ZfOQhDYiAiBr2F`RPk*Sf{;_Eu|6|wfAN>a}95-7136~|+|Fi#x=j}KCiycV4 zYCv7g3?;x?Zk74%c5f-1>kvI`W_rj< z57{3^XpqRg!HzEfKH&=+_rR9MZ2!kVWSv7`9aZ(ydqy)WPS_?)A(+cUO>f%tqEp^n z{lNXjyOz3XYp;CeE7xaU{pwe*_b$Iom1n5NlGR5WZOl2?Wj;1}ZF$A{si)=do}c;A z?Z?n6`DJ~-Ny&hCO|uw6@O1St2?NPnQ~m@}2t7k6R4T(vH}W)rCBU>Ey)@0hCl3ZX zShHx(VMw1xhZF-TA%~ILAezxq8W|xmE6-FaZ$nG!u$_SuL+RpF21bZwJH ziYoNh@*l=J&})Wh8~ih5O6&0u`nvkCwf56LDA`&7`5qFl@GVx(gcnV#=?Pd|7D0Svj;g ztKv}h0P7#q{ws4s+$umOL1a895l`F^{>Gwc>E^T8z zcfl~ycO9;){F}&stF(Ax;xTtZF6r+WfAPT--7X|ChyL0)KEF%-|DE6Y&cE~g^Uohj z{UiM!NP8{MZKPv94S{7z{c|&wmxfnO7IfbXU9_4u7vYIge#tar=b8+u$yku#i5;Wv zK{R2LP7ipllKOotk)E0KFRGX64fvE!$vzK|WOzWD7&ndI98PbhH5v$vdnYZVwqy!c z&tX)(j0Q@ET0?12wN2}N#5j<94G`p|fV$|S4r*mA8LbQ<-x!Ugu=bcZ z3Zx>sK01)&WKfzqkmGC~-Db?olHv-mLn=Qf{ovt+C@wnd@!?;(8NcxE>-LHFZ|zwA z?aLZP{r_BFH%u+-QmykR3`X%~8i@54k9~t@!t;nGG$**JppsIX<=@D#>m3L_dLcj> zFoIJ4$ITfjp8*4*P9}5~ua8c5*0)+opndL<3FDU|BI6`V%PPeTU{-xL+LS;*Szz`7 z@hIvbo+n!~vqo2c@_+flaii6jseJL%+jTAKdWip3WRR>tsu_7LwJ5VnB{QoZy!%gM%bJEZ_&oEN&ac<%N?LX7yuHq2qV4Gh)bg!PY~a62(A%J zu~DOfjklfu>n7>LAeFr@`@hE(q|4v~PQTD80F%})F)yGGZ0TqtdMFMY2hlwOAnY1-r1T9V%C^UR}bqMtZ4k6ndbu^{v)Y!e+wU>K%rOLeEF?satBs z80c&_m<>|R!3`FyCMVqw0!0#ieV;}Eh6{IZB{~YL^J|xjpH#^ z{}$!RU%P2P^S{1kPyFId2(no>ux2X%!JNMlu9<%c`7b?!duc$j?8$#bdw#qwe_O|M zuQE#5J@$PUV=! zvm(H28z9_3&5Bt)b0^Wo9w)f9z|awQZzLrX?E|rF$#t<0dK$ z5o=MSNC5@t3_iy`w)A4QJzd3Z@ zu^cF${{3zI&Og54OS&JtQ1WjM9F^%foj34ey$Pt=*qh@I{QUJD$lAuA`@z$GJQ?7RU;gleHrTWZCRhu> z8SK7}K_*3>+(aHvwU!GPF05-*QI<8T?|kPwIDR5A0J`ie1Q$+TeKA(%4zC`#G$pP3baI+Xb_#j5fvaK z`_0@}1W!Tom^z85Z5cp)q*PmtRT@DUq(nHvjA!;uSQ@Qs*6nIKj8U7p$w;)0}`jQ`b2rNE(F#X8hWpd?G~l@p8!M* z9Y-Q{K!9ApsmmH7rAyOHRWXc~ ztOxi1(Fd0$dBO^68%*Yy`a1a^&QKJP8P*84HSdpF8;u6M@oJS}e)G7eL);nq7;Hs~ ztx;?mzgu+YU+i@sFDee22l#hWV5H6o*YQ ziqbT?abxhx)BZR5>B#WXb<&sIdlK0OgJr~7f{P|%YO`C->{p5J(IIi5<_r{1`D@#6NiuYK*!T~u|;9v%Q(8+lzfQ!VGHUb=MY z^!fAWPhYum<@7G~f6qVs_pg53qBwPoW9u@wY3>*V7SQD+^uB?Sh@6xt;7gGd=CgKh z0+hU)lY#Gwk@jRoHV|0>DfXXSH3>U0Q_M_UL7D9gd=A}S-%8Z+RsfZT6^hHe^`C>X zLIZ_ao6YH^0n*Wyl{XgnHH>iG*kM$p%`02#n%68frO*|g_S4J+kIJ-*uTj^(&|C*qe zm49XpZc)S>;6aGt`caS=Sc4JY#AFKaU@*`(Rw_e*EL$jg$QvuFdFwvo=FmFJiF7;Q zQ0AbLPcwpM1zgM~t1r>nFWC|6kr^vVDET*$f1~W4dtl=a{op-z1gupGpx#s?vwTHv zl|YKM4Q?jEE}Pg4I@;A~nQWI?Q)7o_zXh1~0vFbT6M2Qs*+vJqd@zr);{tH~N z-&LmsR&3w?58{jb8*(m_t|__`2JE%n8g?r_K-X%1DoB8N@{ZjKm~&V*0kj3E{@Cw) zJ2zA9BC0noU%q_k998_a3YPb`-1UFkXu_l>#?rqBM0<8bDPd6|N||AGX-mn zRu&o|mq=#=xy5EVjs_lbzR-{J z7dG*ZAG+tRUJ|eX)8#zWKl;6!lj3nfsud77v!=twtzLStIU2W6tiVX}j7jEU_+i%4 z?A1226r9LNJEYvC)(X7cWHvNX7oE`$lSXBGha$>(fA-gAywdQ7I66k3!VcK~f|~rn zf;eRVRnJt9hHV^*s@ZyP)4E^2_|h}Wf&V{t?%cT>&pr3t-huzS)PFqw_~Qyz8vt1t z%Xc?zb~h2IBK3dYefQn7L%^pW`_Y>puYrp!m}uI$e+QIw5_kot%Tj>O;^q=k9?Z+h zJ5YaXY67d$l!e{8yiBBqBa2BrBo{O<4-cd{QDd>6ZU&gQgP@LpaEdTBK%MJk%*>iK zcH8TYVH|s$Z7rgeUcZAOX9MS;S5^oCh?sCZJ@JW@Dm^yMCWXZykS<}hWf;j@e z!GV!>hPs>fh>>xtXzHFff0*yrc93%RzPzlWi1zY=H`64TFh;-8(aHW--#AQ_|GkDf zxIWO2!}eja$11-C@MxO}T(tu6jz#|S)hGKu_d4yrNwCCVn^QKEY(nsf25mYEqq&$= z#V<}fHwSCX=Eyfyf!F?$GTnX26`$FCaUk`7t6!$VpUv*>^7EIGpM3JkWs$4r z@31b)E0$gV-5Yl$$)ru=7O2RIJPxHzzk&jn!4PO!4euSU51>&LW=nVbt(f%yH<~a& zxgl)7+|E(wo`*vuQ(}j)sXUQwCV=clCh%;2Vjd`m?5c?rSSc?+SVoJ`@c5B|vVjuT ziM)V*aHlhx&2DR--S(rWQn!-VN!$a}@18!Rp_yKgXo5H++vq1NVBDQfVTU^MGOEjv z{_jek?=5$S8rD32^j~h59}S3Cf4%v){*O;)lyw26pLqW^{@_<{`VOorUl`t#D}t|q z2#EE2BV6QM6|N;qiU(YCf5@Rs@c{3X#i8yHlXhz@Kx^oXsF>~PF9aXh0*#eRR3Z5e z5*1xe2X7gfYNC&}&nSPF|Lj;W%^$3x*5Qu^eU6}}qsIt%IjN&@0VD!a$DPor#I2S7 zRgjY!csU`!uKdc@KC%ODZ+Pn|d-J>Qv2Xm&Q+Ds!lO-F=y3-H*+>Q9d58m+g7o}!q zbJev1QuE7IN+MY}?c(^RTdmnv2;C#6$2Zopk7Qu&4)y_rhQYnGyf&JaG>xm(QZL+_ z9~8{CrC)A)lbt-7_6W8~`8y{0F9I0AebYdmK_dYi%f0;CNb#+ptL0N@Q=nz_u``aJ_Z;oR3Ha;x<; z01aniSbxqzMWZV&g)vPe&P#RdO8NIR;s&s3*PLInB^380dQ{EiGYMnQmFQ6#KaRjg2H z^|i5W4hY|-_QXowiujmsVm}3-BXM27!h0z^qar%Wy=;VsIA7-4KIW^YNp+U#X2t60 zt<;fAbiuTrW_wX+>(K^P`99QpE}6`95BmPOkH>nX)iMvS`&Rcq{pUCKbzjAxRl(`? z=gW;&B_{JTN8=QPDflvMKmYe6a8V7^iGQi#~7_u3qU{ZL%dRF8bicaOml;dLh;?K$UrC2c`jJu|vm6tyTl23zNeH^_G|lY5(! z#2&K0-~s5;GEQTF2rfuB<$e?1D0^&%*pKLAMR&MTYeYLKK*TVC`n1)3GGMP%{(X{P z$RFfCRg>ocJs7P zYB?HU7gb%-{_D>Ful?Gu-F)tIpSy=^RDX2)@d8)SXSrq)Ye%Am#2ddCFzIRJaeo1W zVJ<}Qr}>s@n~lqFBz>&wzzz$&+kv%iRk3lf`FZqvL&2L;XWG5l8?$1dcf4d>9O8Mh1>_C5)O`;e4|E2k=U@1))+me;w(H7=DGwRS-sIin<7!vq?*tzOdWiF zj0%ifa}sI{a3-?O)HgymMph3ObrzO?d0K?>R**AkRnQOO_>?k#R#|K~RL zwcqF~aJ^H@5)JzJd$;zf5A6Wz?sfN>dFpaZ#eU`5ELC*Qh<-(OKrY}!gO1Smht{dG zr~)V*V+$mA%?IlX7D{w9l`?p<>ER*R;Wbl+?fNvsZz*Tk@ZqBAOHsN<*ji z@{Y%3l@ighnnawI?>F9bylHK{>hW`K<2l3{1A*{pOI_-1?){-@q{ z%D(YCPTL!Hudn^4J6ATYJiA?wmU`xc+t>kAzxG_MR-}$GtXeDuF9A4YC1mRTZsG3t(lsSPO4-7MH zv|2H=?NQ$=ox04{_sk}E*|JF{#!SesHzf_Tu3N}&vo-Y@;tc!M`CTfJs5!>pJ1{Co zV5Y|MCG5Z2Sqm9SBUUjSF$d}}1*p|#v;WrUsAl^hjjSBh;(gn{ch|-jUV7%o|JHB3 z?Z>Rr{s(`VO8$C86@z^6!3X1sC!PS|*6TR%pH4DO&|u>}Q3Ku8&BPzk(}80umXaNM_5d zhBx;6@fZJ>W*H+GY0{86#>SGfmlx8E~tQRG$1NNjx=}A}BMfDU> zbleIr)7W5=OaKajkj!Appc#+f6JaYp!ED6=eM-7|OLrDMeFy$Vq;>h`{QaA_@J%~s z?yaYM0j;mSxVdc+*Uvn)U8AO#pBe!5xo30KYYDXy$&V`k`#P{GYeF-GzwKom>8Oxf zi`uHPGzex&2=#rW(S%bi_S<(kv&;roXQG8aR)N~O%D>YN6%|rZM#D)2Ijd}L*f8av zd>qr@HUQTu|ITPah+b;)Uq;g^s}LhP3GqN|1w84^A*POlE}^bVVC{&8mLwJUHfjZ< z!HB#EAk)0b|ERO;*y@e7708NpZ((P>y^CgdIXSg7$(Z$sJ%F0f0lW>;!q!>oD%Fc! z{$UJ^&n?Rq?z`_k-)uJi+;h)0;a+~3N)G+!$Zokt6*syZoV^_QzeW;+fg~kX0j+7` zP5q9%ccD!?>ka%1X0lS6^i{((@{)|dtW(Uz{3>fJEx{blROTEp`zbu=xmP7X!8Myq^joquQp!D)nH&;;l((_ijgfoyl zPH(6{J9VtefB1oPUlG3P%*OXrfwS{tUQspQt55Es!(v#yk^rkvs@Gao$Y!J_OrD0# z9XF-?bKXsZQBD3iT(4C7WdFl7s6s$vsdUCT($bVU#1##8mjH|9%XkeEE}m%c4>d||0`bc3I}LF?96luz_^^+0sIiuhtWY^RcJpv zo6wYkAq7GIXGCPwE|L{s!;m^4SkqRjZxo6opjt{tG;WMgI!UR=jFS@M9NBcGO#rze z^v3>KP%-G(+a!cW;X`O?)C`E=fmaCdWqqKeWkmjcVtnTWLQ+$KsC0$crsVZ(8JjYq zQa@vKV+tS^>-e{l3Q>g?C8z}*Y!aaCBaC%c?i!V#c@PK08er}viGT?Kb@C<;BQ`U4P!~>Lqe;iNg3aVqgZxiIf4O;+e9?xiJ9~8ltSg`ynK((B-It z%aziKb{T**b>TU2XhQPs20E9u7~RUF#Tsa+ajm~tmy<+*<)eQUsWdC!FI=cr9ZOke zy%{-X1i2GhNM6uBinx%bY$1#)f~q8R+90J)gCr6jaUe(_&$^f{-sQyK_wkh$t-~utIBp# zsZ)Fdu@uw!PD4o*FV0VOxPUF>zX)#t;12>?W3s~DYgxVQA%E@$-Lx+a~ zf;MP+nynxvc@H2`Do z(D^Na2*->EL;7rPTQfR)UvRRP2}wK8TPRyj-2uyI%;krX z|AeH)B5F}01HZ)+rO-m`K$5{Rbj&bD z$~(3FLz}5oSNjLSo#3YN7RuI_%{jnboc5o2zu%A5KrmkZzdOB`ukc04sjJ$C#0}RV zf5g>(GaXwCt7LdHN=JJK&8}nA`d=et6pwvx_5dsWunuWk#f-L%9HjKT?;`!Ucm1w- z&{k;w5x&Mzk8CZmVv!g7cddesz+O)}?y`U5W6+=9j+oCCcWd6l^;W7<8Cpf)c~WMbTXfYn3ZMh+cMO-Z>MTPb34SYcZ+p*nG7G z`qia0HG#--W0|iXk}YMXih@^f{=z zG2B>xZ)eO(TcVoLekRBTEUBhs)MU%Wb}*Zu0GPQIawnl|4(q@00H;7$zbtV0OYZ^u zC@VO-p(jgpIr?syx7x2uf`Kyz5JAN!a~K+7NCY2<3a6r2jgL#T7{+ahZcKSKm959znm_oPM`-9?uL=aKYxWNN|w^MajZTXN2oIAx-Bo5&t77eH=5 zS(->?c>I54|DobMJzRwW-=ITF`M`B6aSH4|+Wzxm|H**TCXQI^GDH182h=Dm(xVjc7sRY?X;Z!MaE3OuqX(Ps=P?iOc*)C$E;N8n^kkJOfHjVRuI-(%@|HA0(+!Le7RC#f_^7SP@(ttlZ3ejgr1}ME^^6#Xi+a;h2iN z)|N7M{^thnc>Ea9wpx@`4(64M(8)DE;ak$fU{X+SG1Dk&*lq*;l;5P9pg$1np7oLa zgDbY|so@=jA+mY+u^|u}nva|PgU~)`N<3KXb0+N>W9eVjOYkT$BK2VT$MD2lU373l zOj%AT6j`KWE>B{mlu!q`VY$P z&|2{b6cKRxukg*rpP)Z0RuxuNtaS;5_rAmdGs+B%6)%en0mt@m4xB4(R@!u)uiB;< zsNJ+r$!Y%>oPvT!#h*{hdwbwN&Hre-sUt**!6@qfi^&=ou1!s0;3|KS+I zSg4Y@{5oQp;y(gFW2c24ZZ%dz!u4UqFiCSmukdkQMCCcHE>1g4k)^~upuvU6E}oQA zSKDg)_)8aa>{0bGyP_(ZKV*;U@zm8(jy?CO{?ae~QoQ%xd-3gWe>*<@@sD%HGt1Hv z8=W&vIBEbXV}=QL@giw#c8y-c(iVc`pe(uXBi+?4RL<}0M*>-g@n2LcxN5U%id`*? zyp*`Y1h!}3BLWwr_;K;Aw14YZ(g5X6^;sTlC1SSLfoU^bjD;nak;oK?$Hiywj7YOD zO^A%Z%z4br5z8@^nL9&*yEUxD8gN1yZv&`dgvJ00?AB=|8i4|XRCu`r=Tm%?4p?6; z^{rCC<+f1tDdaeoEGKnsmT;P9$Nz4sgvifRurZuXVyv!2E&3xV<0g3}rqW1tSN0mX z2MNd)zY4%J4OCHej0Y^$Y&wGo(ZfW!tN;Z1^4`BpALS1%r2+zd;Y1qY0JS|l)XM=Y zI9Y8kjHClcT^uqzQu6(aAx#V{bt*(*%E%=*$6oYdWFNRc?Y|^{&ZDmOk2(lKCAq#F za7372MMM^_84{%j&95Sd>2hUrqv`ugQui{61p-36?GLbji;XFU6&V+zD)ywiE@S6r z|K@uN-q}`|Gi0ygW8X?OUA#-Hi~^9W_26d{@=X zVMDt)XuQ(#H7~RO#VvCG!q;{4%mHIF;mr|d18?bZLe^L7^NHQ?Ji4J`j++77DeB=O zX4t*`eaNq);bs5F9@Tf=c_%V+TF23T>$iUE+y?Mcay|Z@?@+bB`1jGz{||oh_nAdN zVVY4zU=?1gAXOaHfJD&Fad_`kId{lIq17H2xRSsG+)H=Db#w~c&Ga)GQ`^UW)* zN;s$d(|l}5PsVtv#!_x(w@!ceztgriF=EZ5!ELG-5V0yV>%on4Ow*n2!;-XS*0i}a zlbAHe#(|5^O!2s05oD+B7RMt+=?P1O>Wmh{V)!%*Az4HAHce9LOgGw5U|#*z(0ebe zc&GBUvV-=NX8#Irk5uwvlEZbC*?){GnAIMJpJ^XcDx&0L+cn;iCX2(259`0Ry?ut` z4Ev95RqmC8HeFtgd=(!?BXrI*nO)-l9s|_pRtN~xqT*FNN)|dMjX8B~r+)Pv>8kD8 zxOBO!p!G_-VQ)se*<^<7KUebID-gZvV^QVm|JHx|SieX0fAzBT|HIc_d+o zCscdmYT5)JF{Mk#dU!=XAUt*iqOfNOWPGSv(f;q1LF(x51|{ih$EsEuxdR+0(LQGs z69mw>aa&1RFkD!EE3JaYEQP_Kwty{C%E%mwsEXf1qZx-X5TNP7`YV&S7{(x8lzYjZ z_!_#HjN!wcol&oCB?ykS$BP(&(o_KaXpmzoBJBk4@QF!&laDLKZjrdxK7ShfzBxY! z+7BH9jpxef5?GdgOS@FLxCd$N0=(%%7-$#+pSK@BTx&a45EF7SU?g14f3WeM+?Hcb z0975_M({WsD1(gX9%W5Aeg0f7f}sJm2<94v40_pr8vpWvkMhcNFv!dP`I7m1wG$V( zsPI5>&~Xbv$mXp5cQILdH#}Myo6#eN%!Ipv#&@D18a;SJY7C5H0w6i3i{f|K(W@Hi zOeDU2JQ=vt3my|(1;NN>|8)Tuw0{Jr#f%$66kS-q5)gFPBm0jAGpEKCS9=OUuLE$Z zqFK({O0#40dB?}w%m40m$03{Js$RLn7{VFHKqHXE`X79~2kgr7P~{8gL)qyD3`#Ni z=bL1D7eufcO?&paONNjI?6UoQQCMRtPLt%G=C_2`qf7S@1^~4`C7Z_B3ltY%>PT*H z0yE3b%Xb4Ym~U~@EIKXz6Hf$V5K9c!dLHt{4?K&Im6(QNMW*~rhlU4n@#J3fA8{)# zmGB6~|J>}Hp#K3#y-p~mEiCb~a2F)mF$v~6R%(On9QF^NKabx={9m)w;wsF>@R0?8 z<5>GAR)7ySy#D&@g?Ffa@{^y;uYdjPmnl2E8V^(XHQV27C#C?Wz^he0bKGf8ejP^e z>!s`E4~EXLTQbuukq5)~%gO!F7Xd--MKx$lz(GcY4W1!=DL7rZiKac;fwrS9Chn{% z6#al00c8=50VD1~@)i6($sk=g)&>IKXfvzr-u^p5b_ce!yES#+WDO>2f>eN<>Uq$^(os#!7Dy=CH|WV&^0TTmhgY>y{Hkr3AoZ|}j>5%0r6vsI zNdu@62sc?(LK)Wt#2d03QbMSJnysVZ{46S`Y$G519{f7KoKx)ZJ6_ytdiz@~qK*smmE6ocdV9T!#NR zDVOUt+ooN3;FSHVIVgqxNeB2H=DFE_Im3s>YDx|Iud!Ogq6=1*k}{s7LC@JC=Lu@o zmKeGMNLlv3JAlv+UbXLxQRL`8yZ;m|`!wXg2pp0=vlTz-!z!j8vcocn8SV>~yaRx% z_wSVP$wY_B(xM3c-GF4|A9uc9vN_r0KaaWH<>sr*{@XPj zpYJLAj}k3a@&^RLTRZr4%Uf+*ajKvCKl^zBsSkaZ>zxDD^Y>Lh``OQqYmfiD`R1Ga z9FHiW;>kFne#V48n#7jtR-0gsZZ9K&#bra2%w%OUha+Gx21aW`Y|#=HFt0UI+E+8= zVQhf4-2IF))wKU%{^nPfi%Qh}>=YKnc+f6Q#brUzzDR6+URCSiXaxYvnUj=5NjB|J zrQ<K)aXKZcQ z|H9nm(+ekm_}&^$;8vDcCNu`~uXNx5ORBp1X(uM~aX4AZlKawW*op@@w%LCXBxWy- z5Btk~?4>{D=g!Z`{6%KQTdN}qO15Rdq3HC$n0=1TN5(0DmKy^D3oiwvR+GMT9yYwe z9dN{JtOlu%k`dWoldc^E5pMsfK-NNdl?Q;I5uGEBE&B&$mf?8(e}Hoo;c@%m>1O{y zpJL_<`wu$#>Pq~@{vS^2LHrK{j_n>)-5ZarKfoJ>W6S;xm{x?a3j@+L83EFz=J&9N zkj?&8xG2S>rhoWkGYHOT^JlywW@5SK8FKU)X8&Mq1^tC#lNQB=*}w8Dzrth39@UM6 z`7qVX^8en!Iq>l?RctdPcoAiG*E)xvHbY1mTDAI!avYA{#oKjF@*ygn@ZjhT^+nVD zd0pvn6R-|J5T+r#ESRptde`e@SdD7SD2|28@tNPt1mA`#vXbM6jlVtu#AM7L`NE-u zhsTMkw52*qAdS;m!jDDnX6zEFK_|0q60kl&))8Fiqnk+pqJS|amvq*Prwblydx!|L zp92n~0DTK7>+ZUE)!KC~H3B9P^g-2*<&J6*II_|q0RDvBGtDSNoOrODvaaF7g1DN3 z=s5u(4JR~%MYcYLJtf+!>7Ar?NWR(%r=w-zVa5T_QG0;on6tAYd+xb@+PLVe3%1$) zG&^n2CiG(Qf7t9$%8)s_GMoE_{$*Ywis;}zJToy7)}tnDCd=NBOS+3Zp=h*~0z+ZC z78j8~B+f}a`oHT0p_ zJ(-f`n3f0Cth3}YZZocs729YH^1&YH@AMuu^$kb>_FpdTp78E71dub>A2J`^EB+Qs zyh{#d|E4EoOBfrQ1nPFSH7z5YW)EFRR=6|F{@H&qs%03*jRvI4KsNIFkZ3{Yf*&6F zGxlDL1^tGU(3qx%k#7HkHE`67iL{hLu#U~wt|M?OUGvEy8xokoWayaiJ;DkY92Xva zGhvulb|7fpuJQRRSqu+Noh8T*h`8eB5;be}sFlN-L#w zS`%D+3)-vcxq^C1KA_F!+Kx~5zjPyJ2w=d2oh@7fKTyG>qU69|*(y*KX&&-SJI^7h zfUXwqf?83rJz&88tGgg581q@CRlC`lqfOJHtZ_j{ws6kFf|`2xF-p)ZyG3`YTzcZr z{nWO)z<%f&(sa8A4*1DH!O87VK@$lCvwtr=xctiPzbuiL{WC^{xtb_TyszM=J?}~n zsSt9h0bf;f?)=yuB9iOLyhgHH;3VgKco;Nf%JyQaU6gc)IE!5sD`HL8Hdgd@hV_!- zw6JPmCCvW85+hZX!hwo@vzg4?ZQUirUg}evf9W4F6MZfQr@k1st-9!5qumO0OxF>j7I;9X1e+>| zBYM#$jmNLh_aW2il~$#6}N73KI|>SIjwY!t0r+ zpw7+;M*UEd#U*TyEMo0CXZ@n9xkoTY5V^Ev>7!`4Hifq{E+aBxk8ABLOHh}`Q^pQH z1RQ)Sl)Is4?B4q7eMt8P<~pg!irPY*du2bKB@L-4*Nz9Ag2MvnFn3(yOTZp&_zZ-o zP{3Moeyfm1k8#Z{hTU!R4(AWlswaF5cXNj#w2)!;-y|x)`e6D`jd7CzJHxGfx6wYn z)fAcmL6HkVH&^R2;R?OFDrkPZ3YKEqoy^_D;P=XK@yrLS=W|F#x3&^TNMvyh-JlW| zsxZ_3J|e{*dC_Wf&+cur!6EGbzT1t>Uo04+g?ypz zLHlq2l~!m86$K(fz&*`o*RR`gf{Pb6Atfo&yDgyZCUw|F8l;lG%Aj1os{aSjVFilf zUx1#yz~HvgY6O2}lagNWSn6y8>fHe#{);PEl3t1LZN{W%Y#0Q#{jijv}=xf_aw1I%71QUS;p}-WWq|4n5V%z1E*)AB6-nlPA zO)~|D+Go=-g%Q(co9l-{To=L;>9d0U`s=Ts!`Tb}&uia#=bf{kV;ia`-{WDbV{bt3 zQ9WPyf4oEWXvZGa?|kPw7^ekO7sDtMK)Hi0H@uwA(dgHl;~K0hm94uFLky{K=j;h) zAiy-UgSJ7N2qhD1mb;Z$;Pcr4eAbwTZsIf-zAmGeG!IZo3-X{@%EV%@tjRJ?A^-xg zRcqZn$NtCK_i)MB@GpD)WH(xbTZ{EGa_ti4_d*tkg71 zSefzh1RNd#*0q}9lUaZO2IfkD0%%|kK$wsx>9s0PJ0vUo(7AJ&rD6g!*ag^|acKYs z<|x`xtzuaPd|(ks4hIK7QFM-D_zcBd)7q5V#f?js)kbFO>q zz+b>;!~V02UiY*f7f0KwO$rmITOVLhFF-{ss%f7!CQ**`Bhe6No) ziy~5oM?`bIPDg`gh*rfKT8-gq#Iox4d*W0Ox1{=KEDiKXu}6a zikJl_(HNZtRj^XJ#DBEglGEMZ@Z<9cmt8XOOcE+;tR^rBv}vXEjD9`UoxG^4oB&5L zk&B2Ai~mEaAqWx9sWld`(y;&LKS5gYf-&aUr@vIkx5|B(h5W?aVeWq z80A#c)6QPx_1*7&m-oK^{`>K=f`5Mhs^;7SBziW~MB|$dDyM2o%u0X~{XC1N`J8h1)UCz0@iC2AKs>!{A zol!9zi-*+M5}s_Q;2ioqy?L#CEvbxq*XK1&Iy_*juV`N#Z|sHhAvj7cB_@_~(|8yb z?4V!RFWsVUUV?a#2t7p56Oc)d9_ZioVxvF9^lXjx2!9S$Kia87r7>t!OkAXssA$UH zD>>Z8fR12)2Z=rYdm}HxK|XcQ>4YwU2AF5WmiUBBm-n&)lV-nKP zIx}eYX>fkKZQ*CyKZGT^%;&Fevusa?_KY&AME|hAgiN-8OhUk)90mbUfS+8ztZ!Rk-*xbO~xAOtj7?cWd^{9qh|sdF6ACVQ=z*59|+iLD}n-VeP#chdO2~9lo~)Mb6iA zk;`NN_NX3V=O_Ey-) zEj-{f0BW`Xk~2`J+hQ}Q4bLEv1=;4{TDxt>jQPvUG0;bXnsh*X z3XdsL3ny(>202ex=JmQkJ0#VfS8D3Shbcfb0Pp+sR3o#{CZR9Ilc$u`?p#U*z;^W( zw2HjO%;?)1jS4(A+)YF6aBzXnLNX*R22xuX;c`?$$fZBbvz#pn4XFvh*15hj+XyS@ z0!$e@D7S+tsZ#mh>MQ%R^k#7p%uHO@+}mS|p$pDpR(VkEPF2pjnnm5wk{2%DJrZc> zh}uAqH1tJjZef82C^x&2-HWf}?^xl@=8MgvD-CVRTap>HVUY&BYV7h!!5h-sccq+t zVF|KrkifYTm6N2j7j2cZN)r|oF~)HLe{Qs9l>stt6%P0-*?$gzz1zQ=e3;LeT4TQH zxC2YrEfuCq2E4~ooMZwX2a-;(YgT2d-P{5g74!$gE+qxlwVkZ^&{l4O<~l;I4FBuC z&HhU;q6w7!2Y+TWJ@RT5qE{|Lz^Yw$6z2E90~FohX8!?PPG6;JUtZ@8S4g`|b4Da* z+J7+SRc8zt#usS@Xw3@sx`b>3Vhtll?Ml+z$PKZ(d6>fw*t`k>v>j9HS=)coJ&*X` zKnq{Zi){8EDx$a-&8g#x=ZvMTBcP*{h`7I7F`^WU)}&4qyIX=G{}Pk!4qV-q3pNUO z9MS`J*0(|@GlSbNoG%zh3@F-rsmLMG%$N!zX}K^HE1wwn$dm0uJp|OS@)d${?sh-l zqk4S&<~P529_ym$sR~%tH{F|iRF8cDM>~E#744-XC^hF5bV6ORlmk zyl!-GvbodRL}teB-qSQ;DBKFV8z9LXx{i<$&0K7(ZX3BYRzPCobH*NOKy#hHw?=y4 zGy4M#%XtQ|-zt15d0ChbS}n(r?P7Vez&972#g7<<8y&nL8&nfdN^f9B`COMIz?WE{ z9qeiUqzY9Mvj^jz&kXZ$r}BXRq3&uwhR9h4_yVL>19v!*oFF1d16kp`30~Xur6p1T z>yXL1pI~mrtt_*DfYRLOc4p%P7{OIHKsbVc>q1gpr|r0w^Fn?9d0TFtJL~FY#wA61R!BGdZ`r`M!*l_%_Hj-=3ePU#FX53f zQ?bk;(ALaP3ij(Ybrd{4S%GKCc7Nkw;6V zZC4RxTN}cnihvU=!|$fIlTcn^{0WS3D-+ywj!h$c1bLI^??;sfY`>m5Eg-^x*LtH! z3j62v(Fbp}IihL*t`ND~|Jd)`7x!w}vRn4zNdd+I03d*d08REQ$n`9SKAO#X)Imbv zL6-K6i^hbrJpLebq>`d>hxk(bPvksDWVwNI1n+C5K4|o?{}C^e_pD%Mw=JMG3JUFz z&xfd@1D)j0C>U1I%S%ix^EHsTgNlwz1r8c0r<*2o#++$YiMjO_lQNc;>vIIFl^e^N zAp!L_`{z^C5A8BT71ip5ZrcCqRjM--VP)LD8pr=!6pZ7EXvKHjyctn+V$gKnTJ`0L zIs`GM(O(u+Nv0HG@qa1x$_&f+WlWW>Y781_g-4*&{z}aSfK=EbP<)Uy7&_bA(O$ZW zX}%5TYA3U`JIr}=MIwjW))9;U>AZpP6M7lRszVGxQNJLvgv|QO)FF;Gbh8h#fe6Ka zx+Uby=RLT6>sG0_y?bxIG)?05~Zdgu%lgs(Ly9xIX1?aw`H;~Dp zsKe2F8?7v}5QlI&a@=1*PzXMcpw{#ToHfA>GEoxIPODs3+wqk3k*+g=O3<8w&#h*M zs46~kIx&Ez4#q?+U;>F4I#3U~?h0F?gJ68`QH62a%v`}HNk|qhq=T;B$elN?>B787 z`|*|gjGX?-2qZWNcmS<#LhNswG3Bzn&`zqHc?J`Q#3UYq$=HH+Aq0$HZhQ zjs^2Jr<&M{H;jCY?I0%nRGm+mtqR2YUjfiDUgR1%A5E%LF(hRH9>lrV5m%XCPWzUn zpYPLES-!P|6_bhw_Wzh9F25E^6MZAdv&)gmQui?FDg$p|qLPmsY;F4wtFo061Y?An z64^oj^k}8%ojtG2iw0m;n;B4P()%MI8^Jlj40?u|a`8fwk2UOv_U}SU(>dCI`r1Vd zzr3Sa3L2A8_7mfo9hvWqW# zi}FO0oyh*nwyO2@S5TF`H(=_0;0vx91Eae;fE%=`3VyM_fhYTHqNsIAKumFDJW8qo z?!mih%TUYq^`)cLzJfG|xenBL=9jsg{3(ZPf60 zr*V@3xHv8IZ694hx6n#x9AuV8Cm+W1p(dN-qBP2`=&8rOwo_>LcH!VLl9}UR1L$qg z(1y05iy5YDSz`$~ng?_n$K#Gyr)Tn4w!l48e$31WrxxEDq;?4*8I(h~Aw@;>lvSj+mkJPnQM=T!(79wWenU!Sp~H_iWI|Gi?tieEF4_Mc{&);EBB zV+iqYO{Dh0Niu=4VV{I`we6++GWUrc)FtAE2SRBN6jVUBgJKMy*ENP93Y6gjE>ODR^;C zG1VFEcsXj!mB|b^MKgb-wSyAy)o78)5|l$rGB^7l{0hbnc2N2$=R|cX!kl%%?vXT^ zQun`<{ae>d;FeIDq0#N zKy^{W6?wU_97+{c#v;Xk4rjcGLA&Nq<{z*XE9A?~Phm*7&QNiKg|KUr?T6yH(Nv8F zA{GCUWO5pvB&_{oi2rcO$k7m}Bd)k<8l3Du;P~V~+-ci6SCqVlf}3gk!<%;1cfvB(&*u!GO&>x_yl}d$xCA^TKDp~k3dT-!>dSSijQ1L zZQ!Oen1r8tbW;uB7{SUT1s}_mm+ghhhA&m&^fnf(i&LV8J)&C9R#c?$kzLhJs~-x0 zzsmCfXzogGE`C)&VSLZg&RcV^boO+xJ@0$;vpYdXrF%daO2LiO(A*Kw=0Zlhj#b)| zw>{y4Sw3P+>;jcvY>$=GIlr8|IsE~iQD>opgEtk>;H0w-0|TAa+cFxoE={D^!?yv9 zn0nIJX{t$nw3^}7V3Z+w*uF5z04!;3Iy)|PzO&|*G7UPk2>#ktn7og>Z_tI(Q=Z3v z?lr4271SRO1_*{Jr|b5wBG^>X7LFV?88+PEsds6jZAoC>oB8D)EFF8b`Cz+_?b6Fo! zlWG6ZNdbH8Q(g8^c*RY-w6sFNwExm?(L?8Q%Bbl~DR(9{A!72esQ{dkdC4#^_gA(8 z%O#_xe|_8>SbFisbF51GwuGZzODwLe6{f81`#>zAywqk%2zE)ubZ|>BZf`pXcf4J| zZQ;^4%T1>Hnc>5lR=h<;zA`uaUv#9oX!(*PfI{VN+W**1Fxr}Z`;bi%CO#Q|z!4Yq zodPf zyJm9y_g*s&7!T=lIa!THtXKDC{lFD+!bw%943+N5{?+fXNA)8g`N;ivJ=M|Pe*5kC z%2&P;kJ|n))vg!({_&50{9@T)Qd%~g1PPmxC4Hse?tfcHVA?fKbBxYh=s2J_dn;kW z_DTh8BVyTiMC^TFyjFz1C`XKBE*iwLeH6xa!P((_O4r%qnLw2wE-M7xIZAY~6(5yf zHb`L53sB#IEv`Yb*!dKc6u;yGubR@O&UCw_9;|!uvxn)tOPP{A%aHK^s2E+vds3dU zDfDSIKPv;*s|iek5N7Hir!1D zlJcu@FNco?M}{Wi5)}rxm_A8;EUjzYhU&+%m0Kw5fG%^+7}9-enA(X|mSitBhfJ`Q zQ3*hF0u$-Q55K`C(2*rOLuX7&LGxg6DHI?GDx&(2sN|Dj*W_{o8lxGWtqe=ZSlUUQz*D}=KeHx>TV=e=$ciXZU4 zUHTn(LwefNPs)t*C9Kl#b?;sd1Oh5s>opD+ABUb2eM z_z6`K`(pne``E|AB-KpVE2;>vcHYrpx#zAqiPoeXjx}ncTLx4+ILFtqW$br2M6-fZ z=KUHc2bP!piE@LRNI0bx>+ng#+uDK|?yP_bnb0ZL6l%x^)S!vJBhwf_rK*Z4qX?BI zcZQYO0*!Ob2mOS6qqu=iPfv4C$~=3%?aejpW(gNsm|8S=7y)YInMjBF5J<*)x7~J8 z&jplQHqU(5Y^7&66Q!14qGAyt9t`HKu#gXa0M3+}F}fmRd3$E7qk+XV0bD_TG zOzTaL7&r_4)Lf!)FE$f3*?(n?3K7^=E479$Q16TJ*`0A(kT-nLSK5K|S9Y3W`VRm{ zDg>Pf%|3vt6^K08f`;g*EfLbQ=eT$!HqB0uXv|Z>*rebJ1<3S(M~y26bZP^tPf9u^ zYg`MDN&7H4-Xe!*icmnM3`Rn0UMHOQv-*c{3rdc$S!IX)NBGdMGWyu`PB^p`Vgl3H z`CxVc`(FxeKnpi%F7mMF2&xiaXd1AqFqZ~+oU2s@qnUz!jR}+Zl8$;72%9-Cx`joD z+0*bFHTdIhNnZz+sWgR758O2bM}~2JsUpu-aSh&|q4@8{bMmBZh%OTL4{oPxk#W{#|)v77`hz+AcVmG8XRg56IeNGzV(?xA-6G*qlb-m#O-x|NQ#bzrK%l z@lUt?BpTkMigrAu^}X+Xj|4KK<0Q}tvc_T%vp5^(^z1G%IE6ln{h5<8Z5d3zvRC5l>BF2Q)cLmhNM^t8PyTZlL zru-`nAV_8fmQ8J~c9^UrQ1(5&O&*g5hAp}n4u}qc>WZ!)9_gz)gL8M`w1$vwYZliIr*+401M-06#1!)gS=P+jf=DqkEtT|G}sAR@O!5P=)=ammz7 zI`+or8`2=l;&Iyze7;=y@Gs{<^g$aWdAs{ADAdX9TUfR8($?G;Z*M(jyPAaVQy1m> zX#Yvu+j>v=+-N=7=NP`)VFWVHx)9*=yZ3T)4k-4rf2cM-Z?>!SX^?=hD3dMOXVDNhy7>^Vw)yt6#Ls7zM_(>M!n1 zqAG+`=$EO!1Z;7vzaOV=w*yZe71a`baOGUikmA^xyO> z?M?%dJ{Bs8Yh&-mVyRS&xa$Oz0>uPwLFQsSXZoe36dREO1CHVgwHd;5@T(ZVVs(?w z4A&fMg*l^C$#JA6I=+@i%`nYBC>tde<$S2=fD)1G_;Zi4f_QWA!*76w zTyj!SC3nYtVnLdF9Q!uY$y)ZGlo_j3Jwd1M5s6lSPq%)zPdeQ;)-lB<${alHU!*o) zOS;egYbL*&?J=6S8^EebgHrgupaqZ0Ldkbs>_4zvmT~}rUW^8ybAN+MoA$K-nBH|d zxn&Ckz{NFegjNkG-pKVt?X z5Rvkyyxn4h>y+jrSQ!#+dHBrEAU15;e>% z(vt+TgsaUB4ja7O5nlUm2LmKK;Cp*`fRhd{kRNM~1&}*HTEq;b&{Yf2S~9N~36B@5 zveG4h%g*5GswRXwo(tcJW|{bnXQ01NGPz7j5jb+% zKTX6;z-Lr4#fq58o&yE<@5`s2A8+Q{%^rtv&yTcam$LDB0(kw*uQpHTh&_rD+SzWeU6*_FqSJ*rD6oCO_P z!PS5Y84rzqWLCk|YC3vUInJ)I*Rcb!`vWn|6oi3bmE(CWP-6#HMeDudNIFjoJZQN$ zS-ODso^+iA$)UYEnbSL)({o49cL~a8hL1IU2MBD{@d&$kRvHFi5?LRde{IN_mOXjl zbY^Vkc4onHT0@Y*P=hg{y6tLe$}Q)3O{p8WlmZp>MYry|=SN?^#i#$PxA?@bWq$J4 zGJfuLP(Ip21NbRh{u7?t&p*7j;*aj6;-_l4f2j{SAOGY$`IGSS!<+1o`gb{Rp?27q ze9%wD=Nh+8UZt+jx?b}tKK?ZPeXI|%pexbwkkEe;8T@hN|I_OAtMvPid;cG2KKaM| z{OJ21r~QA`{(t)RYESWl5AN}U??k@;`#*_4_z!;^|M2hrC{!hF!#G`U>o)KWl7h0# zkU*#$fhwR|5_(3YvT#=fFqdhsXF_s-D-dzUT$|xN_BRSWh)>19f)O&yfl>rOq?VE# zw65{X7?R~HK@JjS`GpE(D*i|9{CX^_3gr*y24_x!d0vdt^f3Aq>myViM4WecwZ`&o zDv7uWVOde}5-4UtA;*ao|1+&f#OI6F--S~aA9X8udo2A2z>Kx8eB~>3yc+do`M=pv z?BFBfYsFvrD}N>a`d|O+VXvsFPkiDN0kC@PQFXK&4}b$`C-m`XV2X8o!V}qzCD$a9 z7(QV{vXH*oDpCa!u!LWt4cAA73CmdSaSrr#iHwQ};Ru=9BqVGoN^h=*?Wa>7&ZMZ| zQa6S{KRE#<3=Tw;Wwwjq*jInnwzC?uAc1C0=6gfJgVQ+j!zeX=m;Gpn0kLq@DwVMID3tApky9}G_ zmk0&S3Y6MPE}rvX!3+qpEdDp`=)~~Q1o#`?Xer#l#Ae4X)#g!ckg2kN$R!Z)8+;H7 zm<$#Tw`0y;v_oZ|nT5;siUBUkN*}yTs|g5}yn!hucIIciF`x(iyW!}mCTnF{Z?dj0j+^Vk4;QgAyNrFSfrCI(=*l#i8G)Cb~iD^41E106wQdKvNLx$+>YEqKnNdyxV0@uq5 z6u`0{JLK|b{^eWz*}wFW_~`5LY|r*=&-QHA{+VC7#ed^}^m_aYfAJ^rfBx6M8z1~* z?u1D!G6MW{=>z-b9$=OQda&ImyOh}BnL&x*wX9a^@ju5JEJJz#uUSQtBZqBaiw;PL z{{)^!aN|h(rovVUm=!>K2=_%yEW_2#)Iuzdd%>=(ct+aCYA;$d*FZvJa^w|gE>{U3Pp z7k}{=L|Y+4IuS6emwPme&}jh!$JJi-uVxRUqT}va{!>K zoH%O&uvHNZ78V=4#wxj&RZYPmz_Q|z0=Lq&wg8?vSrgp)+XoAq%-1*dutbq~S`JA~ z?N1iA4PqnW|*+cAOl`7vs zAt(`n8TE#lP(8f)Hu4|CwS62iB>)cJ#H576dHNgw?bq_Z_^&)c>a#uDvpw5~wYPr# zwfIZ_^N+_HzjR}9zuSiE{RjR6vzjqWr zl24<9*xs+tN?oRcJJ-+4o*Teq!s2HVTnFYrW+46%3NU@$toT+0#z>`Vvm5`G#SxwWX>rChB8dvxGC{acHJ=X3{S}#1L+P_ z?23s&kAB1O709iW9nRN8Gyp6rh*be0)XIsZ_L*y$Lz|$Z=Dd~V^-6WKXjLt1u&x=D zU~A?w zffS>Snpj_aPJ0sp`%E`_*W6$K^SAtszxY}_+p|5}vpw4%-Hz(&fAfF#G5kv1I%rO{ zSJnhU9`r#VBHVF_|7GV_OtC0w@fkm}Itw*j973$b_vjFTqRJxTtOnwNxB^`5ktQ@r zhT=1(r6MqvR*S^5;u`|ih@ac8IZZpZaZ{jO+Y~HG&~jsWNJUt0b_2D5mk8iiD8hY? z$^fKYR^hQ-F_!n}-p~_h`^u_QzC=JmlXx&S&-F9q!G{)AKtGQk)zqV#Z+`Qe&cz)j zlZe|kaDMi)pS|4h#v5;Bzn)5?H&vL3s;JyzSz)QbdH%k@-0@P_?#4GQ_dXHWOARng zV0wJM8w>{Qq#|Is8e%54OMkMh`0tJftwJiF!fAr0mZ3DwR+$tSYhb-qCu@=n<$$5_ zNNEPK%OOU}7J;fOI+qOkWKLX(3~!Ov`+9OZg*jZ)YJ9_!lAI?8^b8QoH3^cNwj?0u zx=J>x?Mk^P8MS4r$DY*R_=~T4QN^=8+p|5}vps4@W%a-Gul(G_$D??3`rTWmR|$E^ zw*DC^lw9L~7g$sPLfq4q0Bq&Dk9dWc6vWI#TxDPh<4*!ZG~+MA(F@*KYrTq9h&SQ5 zqMRkAa7Hj}G~oGOEPbzSg7_7*x>Tu0_X3BR+f?{{1BQfA1ip<+lJtT;22YFs1mFVf z30^fqtp{~Sr!|_Se_ol1%5jR8!Ii5{J^-$a`oHyCzjaFc3t#xc`S(+w z`c(YVFa6Sa?t>3LxcBR+g4I0kb8M2*N8gwB18K|vdOd+*2r8Z9sqwLtj#D^N$}@n^ z!W7$IQK1Ko7Ll$w$rLLsGlCKCh6|bjVh3#w8Y{R-+c_^f_&9q5)RIP~MjKjg`#@aG zE^*EQDO%AyUCRKJugm>pV|P$Bi~&}hI2wwik$b)6~ znqY4g;ga<^oH}D>C~RXU0M`6^$s4vWz-IRl$m$9ri(8OM)wbL(>5p*{*Xw>38i`>l zOckQMSl5EdoD1b=d;Rs-G531wt+&qeZ@>L^eC9Ksc{nu!)z5wIbAB@4efQmX@4fdT zwh=&ygOxShCJZlz#z5wrP(u^FlW~=Y3D@Vy(pf42wg6nKfwj{BRb&PA!CuU=EX6V@ z&Jz_$EupM|D^;~^BNo?S*xr)G;v9gq!rwGt4EPXmR@UX(G~jbs*5D6LHId}`d0CCV zFzjvpT&0ebuIP$!*WoSw8uVC>0bf$7P5q^@k)f6<^LtkEe7gVHp6%J5?Vqq6AoZXB zuYC0M!Tz(lWzTl3zkNLTLxLyTKu5kg&YDt)PbjgP%=1c-ee z|M%inhn;*JG@XNcT;baFW7}!m*j8hwabw$PlE$3aYGd1&*tTt>u^VgV%lXcE|AV<^ zU;EkXe(v>K3oM^!`%rAGhak#Nnt4m)k|LwIGvXc^Mih!vv22ge)@p<#mUi7NolzEJ zi>65n11)GnR+6>vcv8)R{%*?FuGgTL8S~&?^YS#rt!=q2fw>g zduD~c^bC9%gbW!U8trjnkGqeiTJC@T*fkK$rKg{U^#C1FOVAMMPHLqYJ#=~RsmlJ=7abD78;~30}D2h-zYfj zRygvhJkocDH0pD}b%uRw0#^>7e9_TOSq zynOTRTREhz!jv^@*nHD=!GVkZSsG$YeasXI6}8Zt!&=+XX4{3|ITA#xlqF3=HU7e{ z-hw~=Cm3?`NYFKl14uy2+MyecKU(}6Mqsv0F4&L$MJjYB}OR8cFT2=E;GSIkp$ zh%f9Q8CFvULCo1-$R<#5tH+$vKqE3iGcumR5-l8!ABVwx$azvuVW>UvhF9?i;G#(a ztpg2p0!-0aosIWPG9iZL@u=ISD2KBAg2KVCPPZe-NUTAyN>IJk2JMoIcP?f*Xj?i7 z3MFZY5n#oQB9eN4oAXfcNXq=(gF3M5F{7uTg2#0FNV#NDUW&V!$3OkdcMq^5SIt8c zUn5g|_uN$GLn=Qe&-(|=r*iFDSMQ$yz01h?RfC)8g$;S|$;p-}Ivf#g3$YPlFU{QC-GHbkI{VZYv6BHDenqYQj$%pUI-Yl)cjoP8AugOZups z>^!)qm#GdKluzBNq4?MO7|AH|K@BXep@kSv$8QT7U<7oI`))l~~G6!oxW zGz~8gnZ2;y*231YDuKfAH8E7q7@;V8>Sj?;Yl?;N$}yV1RVhL>Lg zX6UFtUpNv0yRhTLXPu8kVDkTe;C>zr%CoNqMd>~i7UbCwo(9{3T~0|BY0)29GyZ=; zm7$`@Bvw+AA>`?XnHDfyJSti-#M*1}$hF*}s9LwGuo+iAf<#4L+~kLvT@hTnaSqUj zfp0L8Hh1_CN;r`)Y>;13aI1f|qa}MvnU#rm?EA)*N4lG$7?VYXHr7BWg>m662hUY% z6F~KbY)9j1&h!RjNXW+%n4nG7W;|OAzURBd_u6!xb$$Zi@trT)ue1a@0}KzN1bQO! z?HN1(#J+!+8ZyWei0FtZxK+7u9d(ka6<4=#oh$_%Wty9@8nkcuRQWAGH<=GcAv?b) zR68K_sXl$vLMOKjc8kFijdzgl1M` zGC5ttP^~&y45uK+`b>6eR%r5yy?5*aVSbd=!LMYMFR*ak36^1a{GaUdll1|kU!m61 zyxNFNUWaB>LU*i2iN~_&(9cB~k|6-SCCN1(O*@x30s!6@PE`#OoxONGgR}Nj;#pxB zTme7Wf37XJt1wqdSWuqTT%hFrNz^JA*HfSgUHC!*wu7*V2lqYi;6J+WE*|M%D0~S` z9G2s-7-aS$=R3|Qp2@|vK8Vh{?^igN0VuTlWz!N;;ocqQ7{;_|;%b2M6OCgCy^H2J!$~(GrCkSn31%d|`4*TG1LS3YBEu$*0#agWxp%_wMYQMa(n(4mM8IsL z&IQH2wlHgiG{DfO|ET>b&PZXo@C1X%&~n25(A4`QTrC34%vNCLfn-yM$@yL4kt|rV-380D-D!9jJY2Cx5QRch4pYU znON7|E^iDl{s84LQsouAudza0Z%P!GZyCoi%v@8QSX!xtwH~_{dbC#|)Q0?fQuaWU z_n@1hduI;PV^N^6z^@K7CY&$b~X6BSwOW-fNrLyp0VL;eeguB06;NWG>p z?({Y0stT3P4pVYYNUc^FR(C;LeyFSsO)2sppzF;89Sy(#-mo3CfH%Om@VYcRnL|f$ zL{;^Wb}WzZp`Yu7`lbB%G8VIOo#vdf})4RQ*nPuy7pP%=H5sN$X_Yp8ogEwzb z;I5Os^C@3Y<{biz_ZzwGA491LS@HgevEVT+o{eK7(o_=FS^|qYSH{-BRdTp*w|!Bc zqWFsyl<{D42o}15&8aPO3=3qpx zjFjbrtk9mW`DQ|W2lUv&zl^2RBQB>sQsV9hugi$iXPs+jA!mt|S9qoJw2bUScf#jP zi>;nN5j&E#;sp}sF<~oYFr)m|%lFfw3pFJ@PTJB-H>%0PE-cFgC%K4Fg;)HJZbxw+ zBEk5FIo4##TtIO`QZSo8O0XPAYb}pf54uX4@gDKMX%lM_bJ7-4$xiS+#n*ZDm$%K5 z?L^U@{;NXc1L+9p2z(`TJ8&)hi1@$L!QBDy2K>kaZ99V5UUu1tZlw(&^u69s;zPAU zrfJ>WKJdUlrcRhGNtL4*i}7&co;{5+FY9xAW_KfX$J@&-iLKXz>T)11yKyz_dqK!S z(0wFNU!7v3T#V6yDWy8S^h1kl7&D_vRH%o>=}h~FWBrC`Or)!ECmgQQB^an133br& z0e2_^nYeKqnb(Y zW>u>8(c3bZ5&;)pE;KoPu36yfy2HCA4f{sL?LY{HtDeaTBeULqhVptkyLpshc_#V& zv2}_6rR<|zB>UFrjm)2F+YeP3x6(W^d^j+LydOxy3EnxpqdW1cxXM>NaXaoCObKh)uk8w|n$F;0T?na%>H>4OXOAM8+-*!$><+-1IR8JY!hC%G|i zGj8m&W_D*up(Iq?W!z;vj=z2xyb}LvV6`7;rC<9cZ4 znYUXc?szKe@`W?d4=S(FuRUV8}~7=ex{hnNa%?I+ZG2SBKf%ma8>F~DzYL{8)_6v><+z167! zPhYpI4*xhizJUhF+lK95JeTmiF8p z7!&A5r!$_%e+2>v79TC65pFeH@`522A3+^vM)FO?5tWjilBJ!^#4`MDh8CTcejqtI zZ3N*KOV{-u=WT)#Uh3vo-$N}JT>8!hKZ7&_M<5t>o<^9o?R7{_npOQAyMIR#ec^IX z&S7R^F#kHBeP_xsb%|o5i$>ZnXLjMC6Sk0-e80gV7FL7$k8@uD42%Li0sa*}XM&I7 zbKf-o`wZGiARZjSdOPvp4*)p$IUc-4hJ@(G2o!OT5UUHrKjnvm$W{rp9LhSw9Y4&g z8_q!SeX8{ge#0nqfwpRR zA=GDgAlSd<5O$I~N%mSWjdW^@IYcpIm5uQMI_2a;gD%%U(slq(Jb%OReW#v^ zsfpm)!G^r(8KRmy-HJqsHlYCD;+^Y8fTO8ss(8k+{BHE53?8$C()w{^6^R^U^Sy_4 zi_Z)E1~@S6c@lW?J;;rHR_k$(=KU<8Xj@S$xc>2HLOur__u-E+N^gqYHh9F*x8;)m zXTSHPbDYUYwir(R!bM4Qs`g&O#J<<4afdwa-XSy_$d0Ayt!?kxbE z+2jYg2&LEkuHP8hCe85~{e8LXuc$KG=n7*i&4@x@BZ~Hr(97t&=-l&H<8ORV;z(2M z>~QO%*L2`PUk!7w0HFhPTl$jw5@jwoUA>*x(SUDjW#aAdE5IB8&b6IF3&ozCE_ft1 zO7Y;Hg8zmaZ1GSH@SS<`2h-kyu0Q^Aus_>At!Wo*0r?MPPs%+8jnJ%?WW1YqT^N}p zNlUM|eZ8oJcUqov{iiHoF^&k7X_wK5T3r>Ij{PSXe*J7@mU%_lR0D5JR1@aP`79aKW%6AV zplDQ1-IWQ1^Z0)5eBs`a@VNBZM+Z}p`!Z>TM6d{T3{i2+s@A3N*}1{c^M1(sscWl0 zLjh-o&m-Mmlqu*{bOf4+`n?)^0@K5jEN`I$fD_ToLx#E$55<9Ubw$J!@eNYZ99_}s zkG<&S6AF7X?_HJ zAn$K;CzQ*f6hp@VkAk8-cd~8Gl_(_9Yn<>gXLGnbKk5jTh%H<9 zV}WdMt(*J}lTF^Yorkh)nB_Ou*s(F*)0tl4x??6tsD6X-Z61TGT_lF$npj=$CNnBG z@(dSUpWzl5F1RAa*r8zB%Im+%^&-xIGv5tPUk7_{>bqR&EhS> zBb#tMlzeMEp?e$cZB+JEJe#xs;!9t6V|RTKt-*~=;QZG749xu!65=0p$VpN#r}VSp z@5vB%bW({H!n1XdGS+Y6%iCQ2;N0k>4~d^9YWG2-_ihx6zq$7$FxqkbzTbsK;31cL zZ{gm+u!sAicp`Z)^{^Tsc;O$+{q_5|yX2Toy_R2#U+lih0cdEBR`F@DT0S7`2>+-A zKWdzx$lHI8NjshgvCq4~==+Je@8Og9 z8QkM%QjOuQQMLxrHvVOBf9}bVAIVdp6{HljY%&%CRUT`u=Mh(Hd5&t)S)$DqdrFDb z?*R%{QTz&Qr$!2s`y+YA^|U8v+N?d;l5KHQJRCFOW9l}XS9dgoW9?H(Pk_aEQWn7W zSZp1!V?|H*a}U5p%p`)tXeoMarAbvMmc`R2XoR9kKT&mS5em-qwmEVS}TmiNdfUt8@-l z5gxS6Ol6ns=m>+JhhGCS`||8~Bcc65sXeZOUd8vDzoXS-Ne1Spu{d@$HVY$9n(tVb zueldwXiw7cF^8sTKz z7J2K(lW#?JWIMqop(}mmHd|>ky{%UIbx{n*zNr@hk$bmmHYUn#vZcn|t1Kq^4D7}v zXlHFqh)@YxI(Cq<^n=K=@A(}?LT@P{tpK4MFcX*uJPjzwzAv(bSQ7iUoA=mBG_F!p zP5s9ERrw8w{rttJaEP3~jRRN5NE@5fHLx$=x%?Z9=Z1B3YG&$nExs0hm4s}`o`{-w z8M`d&C)eI&nZUsulbhccuc~l|`JS&J4@Z^mxHx!Op_#6L#fBC#@bd_vdhGgp_K$e{Pmjt%u4TxrQOQ4| zsay1Z^5n~PG{e}(j%GTu@o0;sQGMg-V=KXZ850B-JZSO6IS-Tw$GBVD$w<2S@2C%y zBvtL48$s4{5p@3!kFIRSu?zPRXoo8{gzRWNV0d87vj;!aa}a{U$JV_Z57Pi17=~g2 zD{>k3b5nPYjU!tzUDrgu)BNb1ul&W0GvB0N)VBTgN~R&7#gQ=@JD|S0P?-(?CTT^X z`Lgr#(a`XuMWaJcQ%Ve{lDSM`RxI~YxPl@<-mEfPIW6OdH2=74sDK%tMG0C}yQo*i zNrDXjBKlmq=1s^++Z;-13+v%Fd)(y3&_(K3J)o6qP(QDW^fj^5AwPUY5uodw|@^3?Gjy*wmJqWx*`_lp$Xls+q&c3hgVEZo-$g zF_~SA<~Gj+YQUD@@q1_wA)84m^8Y>z?hn@%` z>1N$tgy4`2MkasFfdA31b;#h&nWnb*%@Es4|B`2cy6XnEUJ0 zGmg1hKbel_8T{@WSp9?%A9bJ8+*k`|Wa4AMwLCPYt3yvYybO!h0FC{LdxDb+H$61o z0R=U!3nJx>ndvWxP+aW;d)(yV2fm^QT?Wk(+7Z*iHX=RA>-SyE+iN0hQQgA#7|C}L8)4xBix>N9#vYj?rB&IVky=-r#hL~u}_B`{Q>4D^ttlmN!jU&?yc-gB9=04^P(!8R|213fY z1oLSz^j|G+uyovQ1&%9z*9)LyO_2;i{&F0wBxq|3>qaJPjz=$Y zj6jsAC_hi~7;rt&GKt=WJ^;KCt@kWRnS-l;m#|N14uKn;$Jn0P&h$+Dbx|uc$D4oL zC30~Rd^i2Yxs7hL#n}ztaw4hLjbxn{_pb8w+dGkiW^Odi&tnCn1}#Ktk2RRTQ=Zq2 z1LaTieLumy7HHRDv438{$1zSUGDPSEP`(x;meN^ zKNB?vL2xA_s~~ zB}7r1z1G4R`_9M2mAx3Rn8v>bD=KZ1>zM&?234kSsJ+~< zzGBOT7f1h5TwwVTm~wmq=mv5y${ZKC_8=A8FP=pi@{#ts@ekA)R$LY~0lO^l&gZWHi~+a#UC74WL!T{D%8gI0yNLFvl;M zi+VHh*k%FWRU8pdJYn{hYEx}%j>i1uk&MLN)nt=c@3?>ws9h)Q^!9ubYz6O;BUKpCMWeP;SvS+^FWqZ(1#se_ng>VrH4`NNPkF5Mqz8Uf?EM14CYL+vahS)LyXq;uI&%wp=4sfjC6td zqjEpfcq3yvb1?7{ZJJ$R66fM;pR<|Upp#Y2fI;lV#x8*M+qRNZiBULuH_poRk}pkOl~~M3920L; zGtkDk2e}$7^A2%=#H7t`nuJ|YW50-dIkY7R`;d$=!aBaCk5_#5GKmS}ofROAVh&JF z5US{@sNbe&mW`oeJSxNT&Rp}CMf{1Bj2VnEYsXp?b`{XkJY@2wbeJS`aeqbZJloS= z3y`R~?L}HqtC`4jp*c@lvWux{%*at!+)_&-EzJ0R`+VbPXXI|$qq#A*nG(VhCS+xc z=0JcHywt*LLyQ$k6X0`KrQl}Qj`e_G!rB8P(gd+c;)0(!sv0o(k)p zv*d|OoIki5TG(}6q=zWF_nH`u=#1||#H{xv4{IP<%HUFjP{wYWHYv^3O6$$&8@}13 zj}lb>`=sgMmf>Ne0tR+_(?2dCVaNO%;vg9J>g1zP!d7?h7q#1^-Tv>M98gKg+e*}z zLp5D<*p?Ks?R}AxO}|y*hCqQ0e$0#izso0C_P^r=xU|qPe~=+O${W3687gahZc6|+ z!DNe{JmbOZfXMs6N4M=UdM`&`{0*wtSZj9nOpB3RkR*NIs_hS*B1ez-t)#|@cY&hN<4 zzjqw^1D(XZGH)S=s(-I74EoGxQYu5kK!C+lSN>JmcEx9!^}7+?%XE;gaR(Gx zv;mf4#;-5?gpZDo6<(=#aOAP1E(d1zuc^fvM6f6XVxe!Ph7~P`$`YQKditCoe!o*H z97X40Yd>prQE*g`N(nJ(wa5bBFTu!dYzpNuqEt)T8d!t~2;b?Ks|G?$!n%{;LDN^? zdShPjoXR(JC1=E=oIJ8U>-C;f&xHPVnNde|eNE|#mxBFC{uy;}F*R6-@q#G9ocxzy zj^<1!YJ+^pz-jerM@$iqAMWW_xH-x(?rOop)-AL*i3`AAQ^szpto-}P+q|PrH={Ao zX;O+Z(d~|5HSVhHqJ|34G+I>BX#mZg`NEWGgi=^qFoJupHcmDIwgj(pEV_zHi{Eg44PBcn{&ZMIs^FAiBpt0D@Sh%eekU#&W(Nuho4sV&jDThJ|acZDzU#`x(-NU7iFBj2=BXsw z8~in;w4_B8?uum8Xp7r-Ry5wD^zL&7_>iQ_9C*irB{}{YW)g++S1hu>F8_{)jd9U0 zdvg0$&5t`z1|yN=^^&7FN7?3i3A8KRY55T3^c24DU%<{T&*;HH|0JNBmcL0+Odk8m zxk9KqnK*AH-5$+9=9ev9NkQ%R35JakYz@(6?M2FnXG@l!8;)9DFAxHcnToFO ze|E%&WR-lRx>1XqTob@=WoeI=9JUWbVYBK7Hj1tj(Efs8dM;xo#ogkDRGYy+`UD10 zS^C=pMqrKg9&@=1z~v(77i5SQDM)Y@krZQ5n1;sSy?OofUQQ5vHA9tg9ZC#)%V=Bu z)y>cWAm#~4ZKfT`F!KY*-%)eGB*^UvFF?t3^iFut3r=jA>pkG>&e4eQL-+H%u>Ul% zUYU9Cjc?YZj4&d2i*-yBjc`EdQx^uD*U&%lbl%T}eN-;p_JcpK$|}7&NgrSV{TesF zj9x{QiAC~XrvheS<|e{X>GXVPco@ifqpW%MxYo#8GVSCo1O*7pqr#@7J75-b~M8(Z%X0 z_T{9r;4h9VV%?FF%IXV>W-`JJTUYIK=DiHbiEJp84xJ^>D0+s35o$0*Ofh7h5zVUq{9;$5NR4L@B)OD5O^{#Q}ag5+vVLKwuopTK$OkMnld=T3 zDx$XN)tpt)_m$7VPuHn@tCxPeCf>5o70ah&;qG|=_Fsx@`bf`ujI*d$+hh4W=G4+y zZAI(7L|7qq?Cof6hzzl8+gwGVeorRN`J&A@RJg?sRw;AF!;lzZMLm&{Zv1Exf)~xT3cpV1rp}OmLw&A;vwGQ+XROJ@ z_;13`U%Y<;<7>ersIs!+CwTUQXHXq#>@Ob=9=CGkq^N>OUhZ*=z(r4P!S!>;pyd0C zQqzHmm;Uw(^qUdR$g(*&^0|V_$;N*t&F^-qlGz~+t7zYKUMTJv-8OsXDA`&u!K{&G z@v42xa8`yP0mor0ONNzg@!p7lb>RT)_dWDG z*u5O(50`PCT0rua0ZGG&3oOOU5V%Y_gxw+oDu@JhWL*+`z;* z7MtfH$iOcUtfa$N&gxqK)@+;r=lvn)STn|rv&FKerE=b$QC&^h@ zOxH>WG`zp%9bP#o??xeY6iNI3ln zImtQCl5~AvCtzfC>9+c^AC*5?FVM4|Ir&B6r9S-TGk%$r4EW_uf`|rX2D@XTabysQ z^b0>IWERlfUP@c^mIhYscs6~xa*Ho;3hC`r6!LtVg}v4QuOGo-XLooWt19Gj@)f{u zzo#*dy}l4!fv#2X2iFcCjKQumgrv)(UJ#duFqEVg)@)0AYAM)G9~CTvealngp@VcXqpJWu{xl|3FXNXI-^P2(kJe!Dt14ilnIID9R*RBAfc9ZC>CF z+<+b$QT=W6*fPQl@EhzlopyIQFzOJSCrlHSg~)(jl61;qTHfn^2=RZDH>U&zs0Ju! zFH!;27A4(~RrC|7Iu`Jkbe8Wws>-6dC)#f8Lf^FrI`ZC0WV8~~*mE zkGOYVI12V4r4(^#ceF=C7SLWIA$R9N0w+$osc3eV)Y~EO&!h-}7eD=JN~@{j$1&l3 zvke%JC&m@!!hT0cxe{w5p#`-YSf`Xx?NBIW%eiqOrNV?FVgqf!Y|mLe0UBMH#Fj(~R{l{EfBML3hw#vf#TjrMC!3rY@-<4z z0y0fTn8qus>g2cWDtI2cM%0yp(jx%i+o45~c*(d9I?qbbsty0?e8`h7p4*b8nY`dX zQS{|b|3D`Zao=D-6X3QL*73@gZDp#&q95#txDtQ5o#tEcQ^b?=qK7qp*ny|l5&`|Ib9=cJ)KZ)$;v*cybjffl3HN1i`ad;rLyb z)6kv@78xO!%!YObeJRH&c2{ndAm5F7H?2a9(a{bZTUGHpP(QPwZVFmMQX4a9=liez zKg|_5jxjK0);xoL2Uew@Q$+mkzdtz2(y^a5$uq&;ua??~||v<$`=;UG#nvqOHB4dc&)E6dn;! z^o;qt5}AhZvuQdwB@+t|7c@}O#iRKd8&YO=SYV(HDMKPq!FeNLx5yt!)m zrdE!e1tZPA!n@NBZ;}PRBfIlY8ZnZ2lCH5IjjhY9g^`jfeI>KBl;b+HW4iId5S^eE z2Jx;2x>3+TM@}>Ix*X#7q1Gd5{?Wy7Xx^WDC$U6?O6r5zjOK~Zr;lE{=ui-#M_b)F zJ~&x*v7mAv{nBcUzI$JmSmtH;t$~8ff9Udm<>PRiX*3Vd8t@qq zeIQivnSDut`%9cs0>;?q+4?#uM?#HzOB(S4WQB!kOFH2>Y)f;%;mk%f2>ONxl% zcZMFof9?zeQem83`8Z><^cBP-`Fg5-f%wsZ zXfD$>jcGUgV*7eNcFczy9V_$WlqutUz+I@b4};@)tA&E{=07>a2t z&ZImwgmHU;KE4Ub=&3R^aE}LLH|(@s)9|l>;Pg1PvGIV@EKPV+7=(3I z*-@Jb5c1=-%NDd8{i@sXfo(h$Brz`2+z(!CrP=E5$*$9Fo7GQ#W3^QN&;(3CVs+s* zeXQC7yvh^3 zap-qxqaT3`O6{d|Z|Kh*r0K$6_v=0mU^Hip!3w_LZWYFsT%qdb9jK+>bu?;-eHQgV zH}VMGIx)6L3+i0j>`JQq(OS+i!Qi!~1BB8_1Ge%H<(YNu1?I z_9NLM{OtAczUm-fJq5i{f)&gfhO3y>-USX=F(Uwe{TS z+%7)Vy!>Ugco_DZS-O+S*Qk7kUMH6H1f^cKmzY2M`}V8AKp z=p)t&?Am-^zkQkF-FYAVEb+Jv3y248fX|dc{>B`HdX|k`E2xs@1EeY9vF8i~C_`io zw#1&ZNlk-=(Z~TNU*K#i-8K8Dqu^$-5>G<>Mvfo^>G7qH%6STW#_MoEJy4h@dh~oN zxt7h1G&*MPfxBt%kle9-~lpVum+y_kFSF% zyNy~gZVR@^W?Q;KWPJJV#(vxD2dC{1JM$hubT(mjP1rwY`@aMtDgVG`&!kU6X zwx3Or3PDvxkhVu8@+<>B2Yfhw9D~j#)+F-%?>_?}Kb}9HcEI1Op5}KQ*LrTTD{i4w z`BTl}8M^ODm)8EAP)+0?%aOpW5Oo3dLMkaxEBk*g(VKIy!La4^QA03vEWrARFX5&R z0kLWsKX8iK%$!KK9ts*@+iFe2VmQ*AakV7K)9)%e9`-WauXKehN||a=Z7bt2FvQC* zKYPG9zD&L>nk5vf&7nNQ-16f|Be6vo-4GQFN`sz{AMoAE}=-HLd7>-Jd?q zV6bD){W&ljy#0bKg1_^+E(9tBoWI?6^n6G#`Zn&M0~76U0YX4{kA|#)B1e) z405mjl}0z8gIM0PPxLMVWKq#T0xb2Wk2$)HstCPWp*MO}zCacA5o@pGP3ouvnVeK5 zlMm4LYo>lghnd#h^P%yAuhg6>Y%CF~N>u2@JRu<-q2%~w4GyaH+F;ZTy@=&UOzad? zL+MPf5n0uIY+t!?OJ{E_p=#POkDL7OBmF<%*8b)udidEJ!BA%FOr#laprxT`O|d${O}Cy zd4GF}x67Pg^VQ)Sr^H5^dfwT)dUn}J0e)Q7f3(5{1?e$zG*Tman00QiM7AddtA90l zO!mpvz9r*>&pU@ys%u3GBPMrqE(YVCH~CnkNFWAiIzN5x_c);?gC__LTRGnMZ;g60 z6PaVTzK2Ob9>C|3v{1%)sXysJA=8Qm*+&-6q9u4Y;%AKokEnq^NS7vMfQ_%87g1WD zsS)8R@bibq|Is?P$UQg6ky@96-psH`w1Ka`zk7w&vM{cjj5^RUc?viIE6Vl&^hH^% z%bw`oQTD+!R9Hy%G>+Zy5Y|5tHe|2TH|qQNru_u?$$wsJvV5^`LV6q!Ydc^5y4g%M zPRb&W#r>40a_cjgw(?7yeYJZvsdierxq3HNM$8KK2_BX9?%zl5e*j$(a21m=9v8fI{y!w=J-R4Da=wF#A%MDz z85vib?O6EJ`*s8HuSBaILJCox8}s;YS4nO5h70LQ<3Y6{Ko!r=C0fj_Tam)thKcRR zbrtFsp}%6YHdS`JH4a|h5vpn@?K{$+ChD$6oTyuX)Y~xcU)kJoX?E!}Ea-sE%tTUl zh67Wd3~49(dFYB&_frEAbeU;@0j9Nv_j8arbB!5$H@c6zaGf=eQ#W^ z-!WQhgy!~6gI@kelH!RnA8_E5nW&thF+FX-@*-Z`CsOzgvSR$pg_K6m+e4;M<~QM; z0LE0VmvWf*0Wb7-I=h_NEhSd$AFr~M()`@TE!&~q^mj~cF(i(4t?Fa!1F3f-zreX~ z6TttYZ$B;?TR;oIA;3$|6Y?B#a&KgeiKlV;9(37sZ;_Uk#vh;B`)oo^Uv@)8+0d@J zBJa8Os(GAo2>62 zZ`!Kw1?S%kB`e7xv>Odd0YGi8H%{lEoX3 zlV1#EkBWUpmaXEVDTopdSIMGF(J45RkB(QBq|{@1ZIZ+UNK5D7suSM0;kTF3g##mQ zsk;8L-p@a#8bLrA)^`~j+mF@(Hcom0$~TF|`qd@SYP zcyYl^7C((~fp_@?g&7sBHUEaWh=ce#py$!1(w4%a;CGKWz{H4B-BHeUPknivH-m`p znapXJJ1?8JMkn5GY5IstbICRw`*+fmpu#BKd~t#nCGl}qT1PFV-0L6Q(irmj1`HMd zDLjyd_uKBoBi!Z$Xs-Ngx$g&j&BWIO7FvfZ@}=oqSg4LkP-G*P2Y(d> zvuIX{f5B9`+D*`?k0jF?JKC=K>mD53b}#;)I$Zmi``SR(w3Db2^NUMGRvQ{Q)k+SKP1U;033 zCcLh%T{YW{n|GgPX0olW-Ko0_*3WdfW2uq(o|cJuk&(7$b_o`Z=-nHmncf`S>DyUy z=#?jqn_MVg*5j!tzqsq9aU$O#_u(mf|l0CswA zoy-_CO*73@)GsST$(u^POo&N^*}S|i1ISh9(Sm-phyo#sL`h4n{I0Kro3m4Oss_zd ztVb3xQ5EKF?uO>FgIRCbWy1eI>*C|0g%^c{f`0>?`xRnor+@17dl=M=#e_P#mxHw%z{5%|{A> z&Q!1M?HIoG&J7e4M4wOCgIq_^6diaD{A`6{0D0sj2&F^%I&4r?Mzix-{KA%3w-=}# zLEW{yX*Xo3+xfWin4$cbP`8l>A5#OX%6=j|Ufg^peon^Hs(g2w-8yNzadFckZx}@u zBIP@pj{c&b0S66h0+2I0G|vt`jRX&;1vY`H{y|kY&DJIzh&5xJt{H~l+R7{^))l@6 z-Mj|D+Ke^9Rr0ckc)CN(c6m!t6NJ$jD(#YHA3OIbxYDdlU{t&LJbW3q7-yBd2(>|5 zd;4PC`WRI&DosqN9P;{K?U9=h=24LYd5(wH+@G4MQ?>WYB}C*Tz!Uc!aEhy_&%MPU zul;h~O(e3;$i+L`UMu&-fb*S_97^=wI4_1^V7~{qzt#^}mw7W615Wq!un$+qZTM_kIhi5V9* zoydy2gl+G8m$@T2^PpUobJ>vlaq;5^iOYQy135SU`?k+DNyHP?ZLygpZ8gsxQ1pbM zwD_xWRG{WeZN^!NU}Q_Prb#54BUKdg>|hncS3$Ai1#EF zGP)IFK05(xy!$kwH52;C4;~i!4-jmszujmN(H$s^@en+b*8kG|fh(&TeHbTDk8a>7 zc;V7s2r%360_1M}k3IdUYC5petdnu;n^o0sQ{NGcfj1&q5W_iX0_VawGt9fDF$BYS z8(Y^{r?91HxYwW;ZDMX0$Or0lcg^)1C$ZW+ivB+Utw2)0C!oG{5XD0*1b(Ub4}2FY zS!NCnB~I1q*5=)$__w;m*z`C0XvMVar$pNQ7NI^&V8?ql$boGKUajjwso;Rcf6l42 zSGRQ8ft0$U3i#v?Q{jdG_3){GLuPfnp6a0LsHnam-t*W?$B@b3SONfX@5G{N{UQO= z5%TojQXuj7D4+SmrT88Q*#Hmq7640c77)IL{azY5*%=EjHMlt?vrEeLA;-p0QdH+! zMhl|HN$vG$kQxr6Z4a(bvai1+O}-&}+E0}6<+$%2da%iOnl%_t9qD`5=erwA&Ar)3 z4b%9Sui)7q{)2e7XM471d$ynP_U*6T1>m;$xSx6Pr8UD$~*oSuV_}5y$#5Q;#{2fI=ioft1uYpTwmm-2my@`+QX;*38-J% zm%sewll-HidK`Q6%{R|$KK8MX0T(+P!XIQ(Wi5!Rg=V^@Y$S3I#tkC!t*e$9;gibo z`Jg&lD8J)2A%4+|IjHX%3{V1eiG02Y|r*=&-Sz1 zzV!l9-}}Ag>$fF;;Gh9W_Ci#3@gpq$D~z&0SL~EXk+?P(iOL?_4vXV8Ru-E?#s3|= zc2yEn0X8Zx{;WWr>nGfE->_Jh`c81$LII^FFr4Cij;#O@58{7rAbTvwd+|=k3fls^ z)ZH{Wfd-b-1gT^GeRYsq{O5p0P-x|{)Z#O%-#+TG^#AtTZ^w3=!;Xik`lqW%_EAy& z#3w#c-~RTu&+p&+-uKo#dkJ|PbhfnjXR*GldOZX}a0`fAk|}{G`VvT$assr2eVsVe zSYlrp#zR_7VzbmQ4KC}?RxUV~92rQ3L*Kc{I$g#Dbtuo%ZCe-AjqXQOpGW*Tyn7qapDbzyCWGKm6`I^=!}fY|r*=KRfL|`agXC z@rfL}`UIXl-bTldK8M#gVs#f7wGh`+fGE6R8F&koJ@oV-{zv=~@!#UFEiy8gH^LLP zNN%d@b#Rb}#Y-<&CA(0BZ$wLYZday$^%KP5#}LkuwSe2#+Z@V}NlVrT=q} z>hT^`R8%A4)yRWqQoD2ewFjZfXFu2H6~TMIfIjpZg!M;|uz=dbur@@beVIsf09F?Q zYv39W_HOPC)!nAFUv*K~%)N}M=jM1bO`#&ka=9`NjFAGU!*EK8p$3|KbzEwHP8Ru| zn#Gj_7qIj&(mXSCWUitKtnLJZ8@h|MFUPS?UirB|>finM>WNgJ?b)8~*?tDwQBD1O zzx_kT=%a0majKjFq%tNUZr$yNbdne#0o?rA62Lq3-UHf$T7h_Ey8!`uB0Tp%?G05pji4n+` zuAR6(EEBMDJ&>}1UMop$%lKyW0ra{9b>hV|Pp}3mSZQfn0+$~4dGZw$u{MLl-ozG` z#L3&3Pf7auz5Ts^|Ht|Jzw_Jz@NCcaY|r+y)PC@tiht*S`hmwQ1B79#$6IVL_z7^@ z8&|n(pM@p=6}J|4^}tvT0s{l$gU2Jp`iV7bl#2`{BB0@3fNP@L;v`lvDREKiUM+=t zxLqs44(e{1HDWRWKo|jZ5XX){Lha6IZ^@gt2k@oc4ybD zfoVnrC@qKc(*ZiS_oxm=@q;0a+oKB}wc{zRW9k3VIh5rGK&-Gw%9>QmczCZP`LNFf ziR`bSxWIf7_`wEd2hB9RUul&(M}=~M)*^uJw-q?>EhtPQ=2J+yQ=A*!HL{e}^3_wz zxym##ZD~JZ!cK$n=+DwOW_-}Q-6Up7w@l$&4HscR%LcOBV`!Wqmk=xK&OO@2c>~us z8-M5D{7L-ozyAcQ&-QH3_G~{3?Wm;wpI$)fxBl_^g~MLH$I@+izF{t=}p@MPZBO?)({6rEx8#==VN>y1k_*GXJG_Wf0c zu>$)FgaClM9Lm-44&9|UZ@lpaN9d>iPbhP&?C))_s2UVnJ%8d8pTN?8y;M}2M`_hJ zR7f*aJY7t<_wifkXHv-xuxh6W5HD}eCII>bx2rP(A$#%$_|t`xfo%nWYCbldau0}? zAPLsAbO5`$3UU4o?8Hd$qMvlE-gm;Rr)|5$7NU0J^91o^TIVM@DCy0vr6kGD3X5Za zT87W;7c8+aB)umAVI_LF+~7au%dS@mqs_H57gPi^~$f9J>X z@BC{Y#QVSZ6BH*H!V;^h*e^C#;;dDvZiHA@jJf@`nGtUUgn1wwUwMILodPCN^bZ{O z6;(pD9RRZ&bt`-oB;%m-dM?d##~@=R@DeIlm{NlpcIR!pQZvX4oo@sHJk-nhq|DzG z)UTUuvG9IOnt;H72CC58m^LQ?m^ElKb2Lv3G6mRbExwa`r9fl0gca^3nLJ0l%V{f2-4xTSn)%pkjkDuf(|7ULT&cFQH^Ovih?b)8~+5RbL$1?x#{mmc6@Ba3W z>L31{A1w%!$-six<#COzRP11ANQ?gnVHqlzoZt}8SY(tzRzAd&Bftb!bRUi}~2k@}~I_R{RJJ?`&qr4zw_;!M{2bE3szT!VN zFdY1>vE?x{X8gx^d~T?Ss)ATK^MaQ1tYy|C3?HiCi4KlrpU;K$#*M3@I=VS|{I#!r ztzQ0}*z-$Y`cfJ{&g*udTA%sMXKr8o;ui@zkBaK?K-JM+mj2g7F)vm4rJ!AE^Kk_5 z2xivwPUhZw682QSfRQ6kkxlT#{iiI10^c@)MEV02-<0B&?OSP?aUX`KVJ8fd4O~;nL_I+occbRw8v^M_?8ltobSz|fVB%}Cg*gP&N zx}eN4erfJTEFF>je(m2QdUUX}|E{D64#B)S@!Jc>~ z8`}M7>sH;%DmvXyyrN~=PcA+@uee$sOZ?r0u=4epvFfT*vCU?qqbeVsA0oOY)g2%@TLv3HkY;dyLP7(c$z!|?D>nv^c z!T7t3#9xG-7yG~M_TO`=^#Dv>=Hf4;X_u;eK6yNQAq~Y0vI5Uf3<-eZxOy22H*WtO z9UKh#{gARd6ysN_tpVKJ1Z&Wvr!*|&O z;(JbBv@ilObH&kK`?ojU_~pJO5e#ZdLr?H4#xC>XWE&HRMfUnCF2YJ65QWBU5v{I3 zEpUc_cGe@ObcxX&|MLd0O8SL6128a4V*sfl0s^upZ#V-cHLXK3$(O`Uc;&}TEx)Z z2Ykrjz9*roksKZ9cTKT%x&l#h8Fq&Hz+}x~?2-n*wkO*_!z*MINo8s|wD+>>G*s2) z5J#$Bzkqfv-go|&5&mE#=VKNBFrx@xU4r<>T(5dg{5JI$iOctWjvJq ziWlRh{$U_B*3Z~lKOO6-&1w895oeWvb?tqxM8^Q^l$P`k#x`QssHh(A|w@{$D$_XpqX_#u9yB6YdOx6m@T^h%_5W zcMybBQf465T{InBh@(p)7rkFZDKYf8l@G2THtUnfMMLIpmt6OWYECCgE$7$U(wPy85~LR^RPAnR*Z_Q9rM;p<^k3WpJYW-Jes}rR)Bf|Pu>Zu< zBjEyPkODuKo|6H(CnSF%lnPhY>in{K?(ux5kq?M;F{20H>|d`lDq;ueV=FhSb((Q% za^L}}yj|_T|1Oyo1w|c!uOZLOeed>s3hAb~v<|HPhrQ|svrEantvmZ)(8p3qj-xlC zl@;%$$1C82C+imJIQ!b0mB^LQLXEB}CWlEtZ}f-R|0CWpjyeC@{_nK^{TwtWVuI*d zD5=hB;;MI61uCQC972UPMvNleEhos!!Du^a>RM}A%O2Axluol_UTl4MBG*UD7!4;8 z2!V?K;lNg0QQUnixTh=&Rp67lFad*$L{7W;dS~XN1?Km zh)hkh+{ko~ff&3pqugVb4CsL)@$UTmTtiK&MpFhOXlJLno5@87WjgHYrMGDd*+IMJ zT=};@7MzG%84~-BTK#W%tF*Z3_XCRSsro(vJd=;=J11BM2}|DufN z%PAJJ4HE(akPE3i=oWZNHkz?jTi|i*o{}1_I=Z0)Y~pLWqW0u8 zD{IbROr4n-jInjRc0C~7z}6V62_oq8fEUo0cKy`Swh>&A@u;#io*+$^=qZ+)q|GE( z<5NEY>M+rM@^ zEs)(Vot@#;CYUSjj+1Q~AJ{)_QZ6NRUs!^-+rLr43TZudg4DTb{|IZQ?rFuRX3pNF zDy_|5=v=w+7jS{;TLg!`^t~ zjrzr3{6(>0Yp$0Bs>hQ5b}`4d7yh%$?Ck2aXYPIU%%+9aEQPY&-~@8>a&5Vj++Imz z94}(~2CcbM3}bSq)uc`1SSCOeXbyebERyU0W(GwSX}OdYmDl%V=7OI=Zl1|umJeg& zaVvufb*l*ThIVvtz^3I4j4^z9A22|O?5}BSx)$i~>SB#hrP3JFc>7~{F=}oS-zNE8?oKr z;qi-zU6lzWWCRKw?e8(FZXH7-$>WyOm`?{D1i`Tc57UTB^E4=Us{$=Y);hkKWjnoe z`$uxB!~hzZeVlYu|4vGRYpoT1()c``a9JG7h^zg#zYsvXP5Un;hv*Q0=r4c(orq>u zW;^?wbJ`o|Jg>V~DNqErha4|DXI^Ud*m1e>F@^`=nM#(Hn;?D}`^1@FAg0``| z;}>MW&$bVla__G=}|S8mr?ZgCd9|j;n7-9ctLT_!Ge^+C$1m6+*7tOl(2C zg;ruC^T^0{1AE5CaV*j0EAW5u;_pQv?XwN_hGPo+JAIx#9Z6) zw8>{Ny#jZU@wfe}k|QE$SB#|*s`|P&Okmej6jTa>DcRDE7=YzoEHC#-V&FAyrn7_82d1g`Xl>1Bw)0;DZD`QCO!cbcf_f=#h}#szkT**`#ii3Uw$nWxF% zo8SB?7^)lriVd#fN z6g=*Y!G-e!Apj9>;456mBe=|4_a+nDGh0YbG&ua_Suaa+;Ys%rr z7Z_;|DV++htRs5+5`95^8=!)aZRQ8095b#-!@Ru2)lD%l-_8CJU4y}|4PBlo)4pSC zCzAB&xCA|J{sXL)RV}Hra^NM~gRP9JA>_bB%rn?{WdDiSx|M+XY{n%qlpfq={j^Ci z>z=3-m4cA_%`zb55sUoz4yGS=!> zD6WNe3>XOXTZ{`}#@gG<1SvJ}^fzS`mHmUN*0^V1iD^nK{$F_Rwu9k9ZUZw*|P+uK-_`3&1)>qRM?U&wbZMZ>3V3=+~!!VFvd=nv>^~PY_tN90_PKP zGDR{Jt=*G@wum8HJBA9F6q;rv&;TNe;?8he4rMp!)3hY>VyYkrG}i9)$_*VZq(%V5 z(mZHfl}>=5b;rg0FJR2iS%skcM|HLDSXN5B0pA)(jhf z>$$_w_yGfv+Ie2;U>gDP$n`=&oRe>oj~vG8p5OLGdcutWs%TguZeB*W#n@WMA{;MB_x!cp87aQR@zDDDFE;yc(jL9T zKfd_IFCI8F_BMbjei7i)pZ@eY;QQ~tU-s0$8U2j*K9!NRrJQ1(dqA=38L4Vzr5o`K zLe=b0Tt>g-WTYNsP<6FJpvCAj$AV);TMiahY&9yc+*}U!Jis*37*KL1_o+R`HQ1CX zOfOB8c#^D;&3&1*4H@QC3jb*ZPN35V71N{#nJ&1OjB4-(3(2B7pr1-{l>?xy!g6wJ1YY= zOeou7B2LXJW(+8I}d4_5mE6_(TboL zi(?p?$y<_lrgyL}`It`V8uqZKDoKfB27D!!6l?S=pl9|kbG!yR3bODgO@l8!3|0rf zExSJ&&FZQ^1B}k2T_STfhDBI{8M5Bcm+kVtF8e84 z5PR>+ATjFbCvwP1TtVDQ3MAS4{in;>9B9O)vg@9w z=S0U-Nn=?YP*`X%+gEcOI9aSDjp?P>k8hy zNo^`0ngs32<#NYr1#-1Q)=)6e?y38uBKqot%{Zt#M=v)>I7+}@I?V4Gudsi4>0I|M zR;wB}j83Ey4Ve8;GO0%fPB9Yzbe|M@EvO$rN5bQpPGqD9+soXIUNdHBmR3u+zQ**t$eYrj?F4F!hH0K2NaaKtc7qPaYR`gSDUu6Sg z-1csK<<;olmnwY!=v+<1(K0_xIMiDhU-I`qKzqYK7P*CyK16%z1NOLuV8u3mOx%ddA>$elB`5j6N%4BkN3?X}0eA#&n~H z*1s-Kn>ayM7I$Tk)|eh`ENxOJn;HfJuw-Z-j>5OB7?C4L!vH{}^0(QFfb(QYjYy#& zyO5O!etox57__zkc;|e|a{i2Dr2u6G@U2)oRqs8r>wR2+mDI+>wlDR?U_k3hg`80P z9<4s10*t;iR|N;*iO#AE@gt~j+^SH!93Fi42$4>_{9Lmyi5#gPay()ooaVGk`JZxt zje)08E2iKw+AfHJPI6Ceu%{uDr2#n{@x%ROgD(PCS|$tf`Lx$kV6s_Q{uq2%Ww~3> zoru-T2_p!EywIBGsCEQYS8ghcRtuAk9O8k_Q6?2L!42pL9D9LSUDUd?f^+I$nEg{; zu3Gr=Qf`^b2en{|LpU=NHxx?ZG??-!%__sh3 zeQ@S5vDBSdg=jtO-+M_5&8?TP>_VBPd)92-=OEy(XdrOV#fmY9y4W~4y3KTJOazG& zBS!f)3~EHqRXYrjW|slG=}vo;NkxufP#)mvCJemtmBTqs!BRfN{`Wbfm;$FheLoV7 zVgKR2K{3NYoZGYPzY`qVzXC6cAx5D&gvC2*%Tjn13~U^r(~ei6RVhnM8Jom74JF?{ z?VsCS7`K+RGh!p8P|WXi@oN8zlVt4z)u^u0GkN9^e>PxmAn5J%_9bd@_iz( zJ5>(D!7e}*l(__EiCt~7mIN-=$EJj!oh5gj%5Z02lwi(EguSD1I`$0Yy?hXoe|N{S zWCH4%iz-5nIag=O5Zk$rBx-Y)lMiF8#^WMoP1SfDbePQk3Q;idZ(fi2c34<8JSrsA zl#V8{0t9e5#^L)0NTt36K4ZRM;Z1WxrPD-{Q$-4KfDacGj<-LOZ!_oPLHz&C*xMva zvn1ug?nfF3(MSjb!!ToT2aI~k2DAyS2UriAU;{nv5d#L8$uO`MsA&nAr1I}p#`EV< z=c2E=?|aUv%8c-E_vi7S$jqX?2#oOMBILOY;$u`@&F4C1LRPpPWtl}xv9K|bmMM5) zVan;;xWivGf5i>+?6$xEGyk8st2Pr2hTHHQ%perv~46sI@OO|zmR~$9E#>+Sy`^x2`BfVa6Bi`7H z3_l(zV%%XI6-pd9EK=3Z}g(Cz}I*Gn|&id#{O&>RWc0$ zg~Wyw9kbfmIvuTIo?2BsGO(5(l<+`qfH(EZPcR!J`A3au($!;p8nEj4Ytb@D}b zwG=3^Fb2dsNPl?UJ-WZL(jC{{=9^S{w}LMTJA<(TAQ#d~5{(785QEEc0jwi}V_T`A z2PGQ9XRL+#e?EL&L0ji&VvKtxTnQ-wkMO9{;3TpYmqYAf&TrxdDdGL=*ZE#*@!iDS zIBI;o6a#v%!JB~+4#{XiyQkdxX)mb~=p#WWLMuK0NHo|<0P;I|;Fi( zAba5-0zcBdOyp}lp?LZ>aqsMSw%^Z^ZPV(u=gC|;@L%N|Gdx(oOvpGQpOvYTg2o^O^9!$xQffUeAiGKXzg#^^mB}wPgI4IT%Q?$h3TXZf^CrEGYb|Qtl^E zMdJPpBH!_@rSpt`|L_0(^BmPnYMp++uSE6F|NPItak{Ga*8lsi|KI%PH}x<7@-N^? zQHFx5V`&iV?Z_-6rU+6Za z`rjiKgUHT1_V1YtP!x2C`VbolCs)#Av`uOILd&ccNc5%<2z%-qV#?Pco@b@M z(!|rdx;_O-*T)j4a$C3SJH)jT`%Exm6cWZ#^<2SY#qi3&*|m1~*54UjpQH zQ`}|r=kEv8ACX^f8BBZji2=Ya$GNN;VLdz|NGG+mp)p=1&@iM?1&Lm z^$K6-oLpptnRjAwIQ+{=`bAm2vo`SMC?pgEM|Ui?mk#J7!&_o+-VYp|#l+_>Osb+N z%Y1COuBhM!lp^~HBlh*=cVf7mo2;aYzOZ8K`}5Zo|37%EeBZz-o|_GxtEf&r;&c2h zu=Z19(#G3&*RU}+^&abR z{BO?%HkhTp`X2x5t4*ssi`T4BaVqe=bVG1!M-)*1_ao1}eLU6N#2oGSSVU zUep2;xe6Upn8#9EFXAMJgtDECKGo8Ar^1a7HHAqu;atcHW-{KFfmfYX9Xr-8E}nB0 z{YDsbP^oW%$B;T%k&r~ zCS&3Eiy*FqkyTyaoWi~DVMe^Fwpwe1Iw)snaQ$M(1DzBaI~H1Oy`7KHkz_)yYFb_l z{QGShcNJ$h)fv#Cmh^!ypErKyW~lB+8t>#90FlA-_FD`v;+SvnKUm4FdrZL;D;)oM zc{{GFjLS&J^!#8L$ud^p-|l$aoC%0jI^}CKY5!T|wEV&PbysUtaM_(HN2_4H@Xy40 zN=1KFCTSc0RoUIdsgsel{RpxxPla0v|Do+nNET9FiV=EyM%^f>odpeJKSuAl;u!-s z9J!W`W8Q=Rnv5AOf1Rq!?{#W$<(l@}SBBBqZ}wHbMW?X1veC(WBFo1AL3u|s?o4cR zc?bWqA0gM%i)O0Ss<$u_qUh%n*S4}tehL3Q{%;*r$i}yA=T@G;jJt^c_aeTAI#DsH z1Ul(Nh{$WlEc`e4CxpQ&N{mxtzTraFn41g|RImU$W`I3rOEHmKO#UY=XM9D>Qe3tc z8UOX4omW2A(TRxbXov1OpM{wE&zpYHSV%5SE6e*WSYzj*QSRDbXXfA9>*uTYH< zAL$YF4uA5qvF3IZYFP1WVzDyM`-asQjMEw___*9*TivepLKPDk&hCsQ1fFA;^Q^{5 z{Um2#Tf^&`;KzcA&=D zYq3dE9=%lqMBZ!?ns9D><*br59?$A}s$4nNl07JBr3?(P@`FZ)3G0G*qvf9k%0@8h ziIv#}nZ=;bpX{ifWR<=&Zy$xfNBl36N?7QtKMS{n;oQ0gDVv;TfvsC|QJcEv@T$O9 zXJI}X-FlQ8$$LTpfU@UhqS4Y7m$+mF_h9gR zH4JY*sLM}{e>|&qZW(f!-@Tx}FgJpXNqAzS=K5KNDrM%$9t1OwD)AHCO1nEuvMTYv zNw!jk>hL%cT}&Rk43lGwEiT`b|26{ASg&S1h4Nv6PRKW$w`V*lNZ1sa&Fp0LiBcGU>RLsfeq@Q(r!a8izk6ZerDQC+jD)l(Y3Z_mWNHKTZWk z+Xc_U|Mz;(Wg9Kc=s(Sv#l>s{>ax3z<8@Yji+?S1D8D-09r6Epy*^}qKV^!)zn`PZ ze3Y;I_Nzy8fBn~gU4Q(?e@t@tP{-G*wDZ~+zPsYvKvm-!Ku^~EJXW(I?j`5rR4_&NL(Z0QcS$1B&T%MEKl!_ z(j@umCx2swe3ai>8zTB(B@A4eH>_W@GkrJINLC-JsGMM6b=?HKxVA1`1@Qs25$qgf zF-u8rBfg{WtJvY#9i6RXx6*h@l=c%1I$ZhqPLBft&aRqeF^oMKfr#P=ivE(X+|~+P zgPv%UEYj*C{DXhlV3f3uJUNQ9JLd}hBnF#Ad-RR-`j(T&%pIKYr&+0u|B4R3kN>zE z#`wozL)abnC7$QIZQs)M>1T0FY(UIE6|k+ha=^?rB?Ac;75Mjo(6fSEio?IZmK@Xh zMt4uDvB@RPg|^j5v`~Kh^p-PLQ^+MJ@PAHi>7`YO@x-e3V~55uOB_38TOO@6|E<#a z{h^CX?G2&n{i6bNBFUz%;&tMPcY=gjd^d5+!5US~$tdo8)8 zTean%g@5?PVW@&9#J$0#xW2D_P%CF6hKj@s;cV$l^ptDHkrg@b+Ke?FB^ ztDvJEZ9|Q4xHaQq$pZ-Xr5DEiBVGD}e76$0ZJfyI?-#v#dfdsH%T0IUdK4dpP{=Q) zP|UvZKh6gSlJgsT@awkO``D9qzMrFtt^fBIOi8-;UH?~$<@;|3c>ny{zx~_if&cuF zTmL-pkn3?wH?FXd`I2itKnFNPng}>eQ+}eoTv(u6Sp;%NhF+g9BqJy~$PVWWN5UY^ z8pqSFWH3c}{ccJxw!5S91(97#8IN5wlzIHAdb?Jj=g%gxN>h}y2oh_7y(<_D%Vh_( zEk{!)Y(EsqK#pV;X%$^_;+h3`}Z9Hw%;2N<(fD;8=Iuz?6H2|ZL_S$(skJ8_fDC3KA&*JM;i zUIt(L>D1C=pCVF;C%1!nZU$M(+JYK>>1`H89eakbl%n^oz7l`62iV2g9HtNGl+?N` zTs(A0AP$%pDg*zt+n7$M1pF-sojw^_xk+I}?M5Dk`wIn++t+ zPL5!3o?B6M7~1K;~XJm7bkdt&Lfx#GmDk{2X=*265&FZ?fm3Es`QZs&n=sBCFD zViri1hL;e}FI+7Julc|~Pc0YfW1B=wru!#0JDk5lrpxs{yKNH%Y4GRx`sS3*`fC-X z>0cTD=U&_qnt=lNH}z!*qwh1xKSwGNfc+Y=Q}gU=q?ZlHz6$%BXK|SkX0#d0T?u(4 zROjNX;(mit{P%)vC9Q0Xf7qm!9;Zur3C@J!jsF^1i#oguc}@FM_@8fXPPVn;D^%al z?JsG$s&0V%>kqVw*N+)|M$6%LEDr3s_b3=fYKaR@lZn!*N_M%isi+vBnubGXw!}Uxj{#Qpv zRTRlN5{02H2L8n?O-WYz=|DA%H{BbU>^3PNp*azce3`^QmSr|KC43vFRpO2H(u!Eq z>GN^oN(e&XE1AGKFX2CRPctP~;%Nk4+4i+k;NBCrT;u76`nax;1^7odZ+ds>g2QWe za9)H}=CfOrcVQVK1s~7GKZ9af3pJ%e*OLYQbG^wu&3&FnD8vKWk43R~V$OTP0QR9H z133reB7AmymYf_(IgCG2VWn3@qe6H&d;kGPm)OnaTH;I=K~5@lw)gAD)@;9TrYf?8 zR_N-_x!8#<4wyCvVR0b!>Px|5O?Dq(*A;;6oHtoX|IKe_@z^CT=fbS<08HI~ZvujO z!3bD?_w58{#@<4Vx|mqQ*D4uWiw%99n}4W`All8g47)=|)~dTGV)-VU)MEp@(>5;F z0}IYwYpGaZDh_#?U%IM4)Cx&qpOM0tDW$ z&(E(pKBV%+%iGLurjk}dd#*PN@nQ|UqUsyPl0a?`4D+ls1 z+FOYn19)$}>i3+lw3eZt@qfmDT;c%DSOd6@4bhQvi(eQFC^QjaF}k*|ExQeF`kd9( z?Q$a18GcyA*wGZ9iqV*9i`R4zIt!4p&MH_b zV-$dNMgf08QTmt@o=IQkc*w-(V=msV=}_6`dy?+do})a#;_xP?#HD~!s?E8!jelMR zR_!T!ZSjBpyzn13>F%y8_EI+eIh80;+O5yRuiR9jp4(YK#Q*vx{)c;A_@_J!Gl=m` z@{8ChoE*HvcNybkv$UaChSBTtRQ-7z;1%)z1OF3!Nctl>RK%d{A`lKPCFt?Bc;vWV ze#D!p-dq2F^EZF82lfe42vjBFZCqx;9oRxFl+ng^D&9 zljX<4x;1UpP4itJ>bYWZWhHHOtm7#2lJ)uwqBub2d4m68h*8XWbt%BMp3ivjKX44t zZHKH}_v&1i#UGNvF~VN2@n0AINie59v;fZ2!A~RgV$@ZvuFoLpEPZsXWG5oq;;xW@ z^KTtyaw0q8|K@GsUjfm|=x_XkcrN%af^ge4TGgf^Z-Bgt*@Es@7#6s`>;;f+cF-{M zS5v~)b=2Xx8t+xx7oGhq`tg?Ml<~iv`$%@dsm_J5Rz7@vaWvl*EzCFguZnP+`aHkZT3R`hl&Vw<;rLIjA5R!j zg?u>Tf`Y}kIG`>n7bu^6Z6P#&p$lj ztV_8_6m2!h)g3vPXaZ+e$BqPy#rQu=qAMF^8M=~(^s`~5(D!rH7XkljJV*5z;~)Ov z9|~Ll&%l56SAWHEq^p1Xp{{x!`2W1|zU%+*|NifF@c;au|FdrA!l~`hs$mK%fn%v) z35vr|Bq-^%`CZ!rihduhdwGM81rU+=oo_WUnMxZ)FxB%687Ic6&aa)Q^rZW*EJw0}KWAdzr3KP4e=QJJ@c!1mCPpt zuy}p$%p*O8?{`EqK89C0UY4vwH=rLus|L0%))fgK{yY3|8(yXx@n_*iA|>;bamTW-OOmwKJM2mW=M_GI z@w!~-6g+2BzUIbEf&V6L1OEf}C;k`j?4+1+9wUtx(scHsi97L6ZFk_m{h9KHf|lF5 zsJaqUuWfQod{#B&Zl=8HXNzR8Qs}*j!-)R`Z&wz^n$n71UWY~mfpz0Q?IQm!A|ts` zG;I9K_dQ>SP$L`u1pWzHFM&l-$WSbPCRPmU%p6Gt@9J7I?2IVW}(Z>J5J}$6$kfz!F%E<<@1*|lEKDo>)0c8d#P?Ky8?hbJc6_C*{H;N~i;PQDr{peV{|5i8 zP2qo`BPCT6_z%5Zwt3z({v$E#TE3TlipP13nQq6hDf7I1wtLwp@%&S{fOAa7`sS2| zycg2xTTG1U7q%Y(yJf|H0jFvL_j~-)E{n`)*RiPP2j>FJXRo|Mxcj7Q+-FF*6ya|nUO4D8+E!yh|7%!Mkb|HuFS@gM)OfAyDk~ztSilm8z;k&2|ma@aizCTPKk% z)2FMPIWbtuI6d~__Ue7lt9h>sJ zfp3<>(*bP;;~|sHDwre(sf%yhn-|eFl@tm%Sb42Pmwa^2X?~lIl2(xolSnwPa1;2U zv~0~dxfpkqOKwvuaUjEYU;5`C_-qpGfg|FgMV^a+JR$X}&%Y&Zz9Dl_B|l znQUu>!2I#I^WH0iMVIhTVbU!XtRiX0^|I!S_pb=J3Eg8ev?tnSh#_{tjO%H|(#K<0 zqit&4MEJPZtA3Je#|a?bTETKYjt|VWMZ5UL$~l-SPcec2GX9T0im7W6k0#mU4{y_3 z>rvePY5ZRtKapVdTCb)B4o-0~B1WrDvL7N-u_6{u8#H!%0zYmhe3PVv+89_;KiKYQ zRewloh=ZYT<3F^U1OJ#I3;PQHDeSuW1M7b&>k>UPp4sbI8Avd}M3Sd5cFYbT=4!Tt zJ%yJFuL{m;V^=yl@3$^_c)z|9{{pzkBytliGnktKh?kGNI34&G?{$4^d#)jLmNasF zKH^L&PHMf?S3CYo4aH*l1^tDI&m$g#rzA>(uIwN#Xp_$z|D)?&^s}~Xw+6ody?*)2 zUp`IKp8&EzO~2aue;%}oE^5E8QGGw6N^_>jZKsY3O@YZIogeMZ-3#~TvI#g!*|4& z5)A5guRo%Mz>>-7aq~;p-iDv$_g)~9rT1K?YhT#YslA2w%>8w6@LJ{-;i*b3$I!lX zm{Y=x6A8xSbGZ%xLCwLc9XzqM8|&kaE{f^kVXpU=Lk?PcJZQE&XZJ(;9nVM|4blOA7KW|t zaz_CP0=~97sWUAhVk3-FeSz#14Wv}^+A9DCx02qP`Z{0a*mUm zs>RO74Ke>+X)&8e= zq%`{#ZMGaU1h3fs?~7aQdOz{n99t#(iZ&lRzrYR2LdyLldn>_U={Rvo4F*e0qJ?Jt zGOp++=vL65&IKK;^ifYHN1bkbX$^->`o!a7Q)}@0u;_757b1b_4u$D0f-{aVASVj5 ziGp=1SR=TeM|LcOnhD<${#8y>ev;|1=_E$@;2(&s34oW^RkL%w>m_yl{O3P^-z#+_(IqL@UH|U` z{_3y(>Nzoz)Jqiw>vnjDh_|>U)MUTs|D&WKE)5U~ujWH!lE+#dVI{gY3fxiPWwkbz z07Gb8{G7D30;U&9QmlytJCeGdyZRCcZW%{`BC)U}fH6VX#|cUuiq7h!wj4g6V_sW2 z{Mo5LR9_#-ensI??&NX!e7J81)=m=bH%ua14$pEvUtV1$phj@4Srqn75ptbd3Wr^@ ztj_Rrbvkl^W%5DzZUvC1L0Yaht3)aCwKGYxm?%$AJy4}y7HN~dFcDf%nIooV;%+?* zZWbh~jo;_`kRfe-1xc46J)2b2mD#P-L77ZcdJwypm13IXCv?{J$z8Sd z{>>|rfpqgbV^YD~fl7ePvgM0h(Nd_y)Kl{f%I$#_)hzfpeZbJ%6W2sD9VIdVY5y` zQj(nndsQqk^YP}xduR%+Z9h3!Ibbko9n|!KXwIMWRc)D)be{Kh)yV;UcJr7xnXQHc zGb)SI6RF)y7$^z^2z^oELz~i;i)6f*Bag2Qyl?1ul-zwbvoVTmMa3MbN_xSR4ZSsSYL+u$VV3 z<~T-tc#UO~7w4M!7E5j2E&SVIlf381d=`1|KO6t@qjE4g=MO8R<*(h###l&KFPVtl zJo5Mxv$u?HFX10T!1wjYq%hVt+!q6#%qIMkXo-I%M$P+~xqJ5CuM zRD~E-RiDJdq<`-FEvn4`I@Qjgam~a0p{4k3$GM{2OT3{3#p~qIUfIIGV=lv7%ojs{rw?75&?B z6SzsglPPk3OC)2{j&u1dl3L?`w21SR734=>({4Z-QPfH5R%?pY|MNfp^Sr;A>Q}$| z)${k?{LSAyKjWLJG~oTsR2t^Tlb+xI@gM*3`TKpB*8A~PQx2k?+MT&rsB2ZNtW?#k4B1t?C`-45th$9aA#y16~kXnQ4G!?}wQ2fS1qn~JiK0N>fP^?CJXpS{MmVu*AA{CCjrjFf5rTu z5o|VTx*>nX$dl(Fzo=YWUhdg;6zg3{seM2R>qAQiSMQE0o})UKn)=WG{LeezQ=gEi=9Fxo*?jGa!3zVaQ(qY$ z=kN=Jh%Qbjei4xCvO%mzxrB|_161Dp(i*b~&n9hLbT1olXVOg7zNALAWV4%Txi?8y zuV6RW{+*7m5Tpv*@n0v$78R>8HZXXIM4wgIlE@x;^lUU&a9qMj4-RTf9#b=;WR)yh zvvpQiE^k~3*q)eXLPta#QnXp#dCKluA&hb0#d+;&Imjyj9RQd7_%vAo-3qCuR2Z}Z zH-hO7cD>iR`6~O*x^6w5z|wA|!<}YV!dv<6*L5{8!}vWx8V0LdR5s&{dTkz*=rBqHQMAm_S9v z_&=ZSf_ix&LhK_$vvTcAW3`sLZno*V3em$i@Bi@u_f*;=>sNKK#5w)ga6E}SxnyWM zxsExw<*brRkmMY`6rPp)f?+0;JpKf)g+G-1e!u7AD|Y@ql-j$a-IvOX zPJA4K@o~j}7kgd3{r!{20{^6Y#@>vF6BYIXs}oC%Q)M=V6~FNx#}ojDGF{-ghvkF6r#U!jU`rh4A{(?9*w=lAym|6@`osy}`(?+5LszVmX5a(^o0o{+kqWk;GNKM%?RFkV1AG2LaKam3b$!7={Fwb7eka$(r>!xS z6FWIUBNh0s)abAG^5c8_SKz^PyFQd>21fcP@n6Yrp+}O-IH6XdS+S&2oIT@R#U*Cf@<=g5BEght z;{S-7 zX7?7`ZUzXONu?i{XwV+**7BXQvQXG{+&SOlE_>5(owx$r^EWg4?nygkNPdaD^Vr*c{5dfGgbfk*T1gc z{N^|3o2jzzTah#^98&p})t^^>Or6{3GQz7f;S$0_mUF0Mz^_p0;oFI) z&dLX6i*Snd+rjQhOy>H$ygVp{!657qzWB{ciHHY?HFcn0zNMev;=i1L24@ielZQIQ zmjzy*zx}InZSi|W;DsN@NX3{Nchk?*jy65dli#?i7cX^Swj6L^vi2wrx{i95z+H?DyRoVZuh^3hI`IkGy$4kxqYK)dlj z-Zf&q$dn)&B~y`@rM^R5OSt$`_R!~NVTU2i4UQKrdo7Gw(>lH}=E$iE3fqZoT`#FN zjWYj#;{SPTH3c{p!G_;oV|paL(2Ns_Gve4<;NwGBj*7ERek3lvgyW_)(l5&(;ay{>~$g}gQXp=|v`s;nt`fgoR z+Vp>)Kh$JwaYVq-psgg;Z}C}-yE13sgMtQ!ay~gUkOyW4gS81I);R*qS*o@_w1SVo z+QSabb4svUIUB6?BEpytM2m@Q;;DWFQ*gsfb$<@%U)y23&{blqsEUP`{6x0m{9Onh zqcxp(UcKVo(G!C%uWdXgM54zrv~^M=B4yPL4J}frl_c#%F#P7=@&(^A!3_gsF+!F} zk(ndaZ+#R0LDC&KE*CyUjYkJ!s0#+7aZxp4BgMW^l_u+_OV=_M2G zx=@_SMEWMHK(Psu{B3JvuuWk~&_=@mMY%lN)fPA3XaW6P?<;N4pQe5S|D~>PRs_X_ zL*tesAyV=FP;x-2Mk3H+l|Xr-G|5D{MI>yeiN*`3p9 za;*ji&dQW1^ri6Wh5w>^Z5OEB{Lp;^sjf2x{2QR3H&n>pwrHTykhq*6CT*E z%GXWT9bf4z39(k9ytQ5mDY$~BjDI-L!*g<`;29)M^sT(_!}9+t@jvzU{PHzDdrezd zF5Zn)CwlT3wQ{@6lqYjOcJqi8m^+vL+1BOayf)VO24+pxDC*hxU$$7qGC6@_HBh)PXGe-4lNZE&o)vvfS>U}fS@BQBI zSvz%+I$mq*|NZkPw*H^b-W^pYn33R>N1E`;05C#=TdZx@kf!uc8l|Rz9Y}~XJ46US6@kNIb^+b%&9+`G6nf`9;(hux6h!3W`gwG%%act1pehfCHu384XId)j^JGM&8?xm zTyPen9rVjJJ;^cgA5kCzZaeu?uD9!3;lGW49gO55ufuTc>aX{vR|f5IojRA;XnOH?ms;cNsnik7YbRF&eY z;=g^}Hmvp6RMpb&JU5fdd~4#zWG2dBQVrPk4rVHFI*O>)N}7Lzk0XXvI4tZ( z2VwJ%2RF@~D^2{jv?ZzmeqY!C`q|HZ_VD=oo2mZjkN)U+57(%Y@-+Va6{^Fn|Mx$C z@CSeJeDFKJ^E=O1sGggtI3H16BZmetvU0Yzp&GAna#{--a+$N9H{!dYd(k$XeH2F`P*j;fmX3-JKTL|cOWSZS9Elcs zhiD{LDIk*Zz2j<=wogwG`lbY70Nm5VJ0%jl}gRv|*K@%b*M z`8r$OqXZ!m6)vHR-N*K!G!WIyaNGa~_{aNSUoKss!WrIcW5;J|l^J@TrvJ)!BdF|9cJWRjdsBUj=kbRH4ky$1>r1 z%wqy28I{Ut9qM2+Uh)z7tc3GtSNrzMg@qjESkq$w5E0}87+85V3T5Ce!$8fV5Kj5J z@DHp=NRl}NCa?J_R0d-k#n2-)jQzR8H=~wMXA=a^qQJvdap?<%ha56A(WdglCk%6x zV(2}GW9_Rhnb6b2k4p5Tu&838QMEX<6m__r-ds9$+vbXs1H`qzi(ue0>ZWx?0yvl# zm}1^l>Vze?XONyNh^Omz7+stcJlrd(8R=UE-wXUl^4u2F-?TB^Vs&VDJwRDzzlRWq zB=Uv3wHwj0!HM{6ELO+F3@`MV}vhIoBGfQ#K%|(>McT9Hy6! z@i4E$$|Kt$Y5J|cAQ*})?O)WNK)_-ZnXE4?gIagy13Zelv` z#E}dH_bW&ra!)y`X{$UJ{Qi>{SyKTkd6yf;z#N8h<9)F`{&e75a%&l}Ag;5VuOo_$ z{D4Flv9;Ivl$l#TW$%#=AiY>i!tLD|dU{)nI`Yd&98}fIuPMltMA@bjoQHx=*W1Rf zfqpuPZu=b}%Y_?v;wX#Vp`QqvF!>2sN5^cR%9vHUG=wrN{C`Q`h-A-Ex0@+nmK|xU zGf#BUt)}@bWW|QEl++fq+^OnJ5I&;#=rH65OcIb4)khh<66 zzb*?#vyJY9!NP-pe;5sFjl{Vtq0*JHb?Lq|#O?Mw3FOUZNB>-$4JOhzgdg31J+Ny7^gUSqnS5L zb2A$fj)}m(2Ql8(W{*@sH>2}>XZAM!<%mK_$X{N#Z#e= z?#i=4xX!Tu>E7}hw$(-)siGV_#Aqai^Hv*rDr7HN?faj^`Q5A8L3{@K;@4-srFl`> zugSX(M`^e1pSW%$NQ@`)(un}Ztn|#S_ppF+@^}VV;3%9k->!VUOKx(DX`Gosz$A6r zq2ecHsz@VT>{vEBI&61Bx%o`%tvi20ea-9kCfM*Idans3E@I@=O1?NSy-WO7AI`F} zkmR$L`5qa@3EV_NZ&Dfu?eE5K3qMX?2Vdc8(Lj>OyF0QVN2gFE)a#g^J|CDyjL}2U zl`shZA>D_Co{#p|LPGrKz0AZS8!7qz`TZ1?N)e)oL zD}ZZ6`au03{I+py{8Pf{6m`T6`=63$<9{6dIr;PNaP<-?cjG=h(YlQ0iS*NzAurIq z@t@Ju?$bFo`D0Z4*X9()|1K4ihChQ~#Q%!*;g|DV*8Lt#HnbbEN8{9-!c__5UA+?t z`sYc#-05b)%p?+?PKW;v|ED<;@gIxCc;DD*b0L$;CbupzUnnrt!}iELhAczApl^l7 z5m0GPzS;pTyK2&z6o-11OE&(nP@ZqCl7rU58f)69h=|zw>vl&78S=WT9?W`xS6(mBH&;wx8E@!vLsL7+*93r*j6&ON4w}$hMvo(ZR!wCh5U};Q3I<#30@MX+iaZyW2w@Xc z7y3#oF*=s*akiWS7^-XaJN4FK8ebgK(TRtD4t<9cziJ$GVo3rc-bc`aRpu0IJ@M&T z!m_XlnNGPwwQI6&;h$+42mrTs{*S&W4qhe106%+?vF zTHZmwjKkm?(Jts((3oI6J4qG_8~?GrG_n1ftk5M8&PqM4Q$@e@?MnQ&{a~UwZuEoG zHxjA>|1tLcI5NyoGRaC5jzYqZ>_jbMSQd!{O57}FnvPv}CJBcpk6hEdfV=4L0M_h< z#ju*U)=Tp9(kA}hB?Q3_h7HMMr>uNSO~kok!dKIO&@A(G*GH5Dp>94a;RDvSkX0%XqAyi^~u2xq$-OKe^XHBPJF?Ljr z!d&>TUd6Blf@?(luY38HC-0+ZiAYRuoh*HvsUVxZo z+-rm_NCy@>7@+3r)N_r9JYCG^(8SUVz<67Zt*U1M(+Xgc0LZIqsjNeyQZLu(-Z!?*4L}1f;)NjWh-z zJpc3pfs$5ywlY>a{jq38aGoUln2x7+?oShhX*;H@{H6v?_~O`YvN?`@$Xf&y4%Q|+ z%+*z!KntWJ@t|MXh5aECV!uR&R7IC`*VzM6EzF47UQ(g-r}R8Z6)HdGDO1aqDljgy z=zwrA6FF^vz1StF#7D2M4s~F+2_=h@kUAKCA0$0Jujf(2jzJ~ORCJLXUOe`)msuST zDVHy}{qCY=q$-@MNWowl?*_rhWHIl711TFf3@|Z>$63|l?pgk3Ck?)>@pauTKOJ`0 zW`UnvY}Byh_lg9z$MYa~UOJ5txt8jh+y#h0nwulbuapFG{p=uv_cFWa2=s+`l%y`* z9#fw6n4`wbQlGXmJ>_DRc-Lo`kZ|ImrY>W9rc>YBE4{KXpeYr^I_1&DEgU1l!U zC;tb&{V1B#9Uk1hdRYXTu87UnUlb{m&8Uhh04n(|{@d%KnZ*K&_&+#$H;9Hx2IknH z-1=MYBnXBUr%bC&vH$s>|5=*E1dzU zU>J}B17Xf)omEw3WwRJAI;0ex9^DH_wGt%-wkW>%^Etn}RuUZwv2*q*0BXm*4ipk_ zVQu}*>#NnL08_#bx>r!ElkAk_dS?2H3*Cz<+pnqm*ji2raH^ z&>50Y9rmiYKoH4yS1n61GI9(A<{h*K`pBjZ2pqwS-Hj9U;1kUi*jAZHQ~jAI!X9PY zNrO$D;t#&>lBLSc0?N%PF{J3dkB@~;=cwKEF#!e!DEsxup5prU{GZ*%jR8(DQg2xu zwL9tuyOwmQsA_xdxSORSrxoOd|AY?7MZf2Z*HuP5e3}sI+V#Rl?8Mae`wdr}LJzx( z_DcMx7YL7^vRbj4ZzpL`uo9CB{L{|lN8*#-)t~sU2#hH56#tLJj{issiGL$Xcj8Mo zFC=+zL}`zs!XQwVpmX70PJx>n+VkxWq+eeg!?>4x)JGHnLT+f75=kHFXVR$oKwZs{ zW)#Qwz~9CH4$45aPUm*eg0HBb(k_6t11c?}QSxGa81a+ww$oY|zP|=r|IaY*Z>IXY zzx%uS;fEidzyIp5{_6SispNx|sKz%_JrDfnUH|Xb`RfMAW} zVSL^=5va)&sZFo>Gng26+lTVYpFQ)u7!#usfl5Vw6TqS~!I=#bD%Rxz9Xn1AC(gt# zKD(UCSf!PDF0RdcneyrM1J;y|FgU{KEOkLH61%|TNG3wbEp#Y<5L}9}SXt?L^CT=F zd45uvbLaa*7m*!|Atv`j=dPvn+NwKZF`>CCxOS;oX&`v&^r1aUfv^;0KuTvlA4z${s!S?kdNn=@ka;{Ei9jrUyspk5Ajg~X zO-?52ik8a812Yn?g z7`BSYcS6wW8r8j< z?$Y@Lf42UW*B$}c5j~F3a-_$4+TIz|wG)7;MX=Qs zIbnpTB~4qL3FV0=7tzbWT(@3j7Cc zwuhkrpFVKb!-{!&63&y3fl9iGrVsqH*IAjcU--{?+k$-d-&CW1ga7)(e{>Y{lA@-L zkOv{$m;N{&XuGC=Wh1C>T41&K8UNY7mVMw;B7ctf74cuZKC833;(z*6!oU57f1M8+ zeBVsPgs4z?fNjX^uW%gyKy2zY|p`x1{o8qq#&?P#aIZV_#Wo32KDuiv1E9B{`=Wc=E z=mgYkilM$7ILgFc{P424#~ZQFijEVKbU^dC_Msa1<>awI?sKWeu#3iV(iADn(H41% z-Q5+j8N9YTq_Fp}M{mzLuc+#D`PPVxhUz=mKQxA)y@sDO*c3tRCk;Q11(gLL3zRUkY@NP;j4oV8vQs;xuS95xMf=B*Iff1*{?Ffxlge72e;M>! zttU;OwPJ+V>?EH{d;faAFr<24SBv2F{8R`z9UtO-z)Hc z6&;ChBv+puxw*IoRvllSa#RNVcc=T+Prl}Z-_OCXEJ|ZWcaM)pwWtsXR%R{@iQ}UK zNb)s?*kwlc)OVvJUoVuUHbUcVhkZRlBut&gMM|k-lx8Z|E{!&^BfeN>dGNW zK*C_P)lT5RE5r6mOJmulq=ClG6ed9dQ{B)s@u63=o694eietkec=c;cCSm~Es*QvKVDbD6EdHaf< zvy_#t@84f^`f(D_*BGPSv~LhQ8~@KamWN-2SjBGi%i)zRvTt5F=D*F^{^BqG;!87o zN?xNHVK@HbaZE;JmG$>vr?)#1HRfDr>|UULr(>jK6d?j(kk;f~T^3CXfV1!zZiKnH3UgxCF%UxS8#?PJTMB=islSLo_L#V4Hy#y5o&Bg+D4^ zL&s^~ltzMR(f-jiX9>x@=gSVG?tTINF^^`l@ILlcNpz(d@HsVfH1>)kgM6Ym;0Io( zRDbS7oi7C|tw@=b8gV6`svz$bNJ?+hx8$~uu8RaZk+bv-kzyns$sEZj?V@V6H>qqN zYd#ADCRjK&r<3YDeJ`XI(?P$eS_+<#n7iQ&= z;DW;uFhP@>3(kuU^PLz535>`S_$NgmX+)fazF#OgZ&FYV7UDXmiT=C zT%%fc!uQgngzA-TAD#OyQQT<6_E*j4IZRz9mi<=VSCjWqkuSlh3;kX=cr6vxG<8Yj zRQ~L8d%L}fbI$H@j?VSB>%)oJ8qdZbzxiyVkYHLNV^paaceRjT<+h*BvCgKZcMu>H z(3Y1>Bjd;We#YQLG5qD@p6;oja+BO6mMdfdyj2k=qabD%^Xw71QY412FTNZ%Qi z&y0W*;F1+IZY|EamsOptMgyS;8qe=xKD2|xAoSRLy2NxAOE<4os)m8QRD|*Fcl!@c z36g)_`Ev2#Kpx6Kh@*WqHa9bNmZmCpFFkBwI5#SC-Io2l!07o!imR z>%xD8?MpA-{WytfIhH=7tNNbuO=Zqdib(sw$mQ%C|F9s^-}qg=aI5|j|NMR`Xp!~_ zm?eH&_EiIE6wWbTAMaNSc!vA7AHL(|Kt6m)t~E8eh)wX;tj#m z5tA1F57)yV(jQ$QydwGH;hc9R&z7kv>y7_OT^_Er8LAgsdtJ*F%W=tE{^WPUXcG=? zR47g09JXk3sDolJ?|lA zy}PN}J}>zq;{S02mhWB3E%Z=$t$~vmzVJU{{?dG}g@26dODVupmBkFj&{Jk|j=ElR z-q)z|o2mG>j`UZk>d=Qs`2F8|mZ`{p z4w&2-IDz!)2Gt4kBxYmNVlypz!D68zM;i(va>#n-y-wa-1|7oES@HCxKmr7g-Wzy)JUyXeZ? z&~gqmY>cOJhY`*j^VxY~X^)#L_+~ zQpIA%U5K47=BS%3A{(B%f+FpKA1_A!cCv&H$!w#eV|Iw{Rbw(81P&*wGtadm*eat>M{i$nnhW_l&RdbEsXoj2`hq4&J;tf1e z{Fl6(u#H5a?N|zy3;*XB77x~!GQ5>kke;LW>BZ_1L1xpjXyTSqLoC{RMZde0brJ<| z{8#w?5%R(3&Lfx(Iml^k^qoCJkWK`C$k~AtOj)D0%glxUxic%{zucvJM$!ZKG6wG0 zqV0H_bd*e%ISFB_m~Z6z`YzF;iuaP>; zkw!Wzaz;g3>5s6ku3XtK^>YmwucoFxP=jJ6-qs6pV7@&RFYTzioAI7jE){SE#Z;Ky9jo<4nimY!}4 z%u=U1)a~TsB9Lz=;5FLNpa(+*7yehVbh>}cQosV{JZSs~KN6ucDZhoi-=n`suLME(k9EfPl)} zQ#IobWOHX&`LZv0SpRBME4I?;C@IScFW(%n9iA%3-V1%?|_pv6GBOxJDt}&v?;aVKy z#lgB%qk<$FdVC>I{pWxF=jZ3Ie)X%#Z>D;`{_M~GZ2i5yLiPRCslW3(zcWAnto!wT zJXKL{MJ>Ac2xFARbg0}F+=25ZvbE@Pg~4u2D=)Dk@CmOy+P!H=s;4SzGQe+sFYjRhQ^9f!}|grVZvHYs%}C8^VB!^pU*$35ByCX zasvKoowHawHt%v5Jj!ESrKhY;_ah)>ZgsjUp{=ZAcLGBe|1E}%OFuXR!d3@{D?AEG z^;n6hjC*To;U7)k!+#gn>(Y6+=>Az+=tQa_>7oNz3KjOPY4x=wtG%&fjk<)7M4fRk z{I=x3Fk-4|Srg#s5HcAAX9VzaWSedTdAcL}vhFis$08wVea-a}og7bBy4Xm|HLt z*3WBH-!FDlfBDN_KIiE$nA&KiJkr3M#1$Hhn(h<_%OkgHc*hoN8AFjX|Aq}yp>mR z9mmIIatM+zlGYc98xqWOE=VpMvxB#K#3_5{HVU)Hflum(_a|{Xr5lUN*Ci#0*8F}? zC-kdPJ-wC^X$zeY#0N6tab3-hmy>i7XvGj8a?m^o0ty5e$4_ejebdMKT$1+1yzpEE ziYVON!#lujU$^#UnZ|%FMPw6ev$HF)kA7??sZ|kkO6f={(WbJ_yX(VsKW((HxbLd% zBy{5AzPMQkW1ky`rW~lX)Joh1#D+oWoF^5|+%{Vzz41FA2Mu}~gDs}L%*=6s`k4q8 z?dxpMQ~(>mz~WNA$@8jso^W%qf445_d8~M^a^as)o?&2aPJot)X-5sqadGBFpTMPR zVBqfOQBOWf>Oi=47tPcU>10skK;Pn@V+Zl#eMY5Me0&rX!8zYAT_#gvSJ+CpE#bCn zO*`uWkV>+M2f)1C-aKkL&Z!LFYW+F@_`=(R%7@q3O$Cp>p9%^+Pl=mWt`xj8fpq$1 zRqno3a7X%m&orhrxMFo=oBE2b8JLKi5(YL~37^=%Y(vJU-_ZcY8naJG@YP9@=ybHG$>+D6hZL3YF z(k5~KK%3h~TRy}YhBD|tOq21S;h{!FJMD9Da6+ioWAKUpzWST^Ukp-@-va-(ZO;xH zQpO;mKLC6u)wPbPsw+ZKbu(5D?WaKU?)af6Gty0*{v6!rvJG}r-&_CasIJBR)Yd-_ zd=CEGzx~@MN&Vg5{oUt-_cf|?x_!newC`ZR4jjD-JVX~G#x-6?``jnV zI6t8?bXesgTFm=(l2rQ7-Vown@_ynFWIosmaN@!(z3wC}o_?W!FU(BS$I0pxEWww= ztAGsh1{u}IYZRs;YD9PO;!(ZVZm2zX%Cm@0p^<@#{`Xe2_GE(AR9gq2JLYmJQ^r5TdVlm(- zxPH`D42l!$A(()|`VY@R<=)&kHm>M^4ell$*+e${#6OaQ>qY;N z6KHYa?Fbn7)fsBj1_ygYwhYNCANx*Ccbv8g$99Yx8YEg4R6IqIgz`egmZy#XF9e#U z?s1DA;~D>mCJ?~ZK_KKI#7H0`Z9Asuq8nJTH~xcEwoFco``q~1%-9hb$762076KCq zW5~p%REs#yK+_!z8w;xh3v_snuVSH6grVzCQG!&<1h>jJ#MCS<#CCBsKa3CVfD~=r zrN|W7m014R3qA{1#9OUh0j`5C72zdtE)2VC-+}+Bef@fC7zc^cI`chEkUFzx<2u4y2+`&5GY^`?2Rb4pL0Xaj=rT!Oj2@3w0wVd^5%adkvL$_`UXB?BioA zxPPc*{~dy(IAGTX064_eo^O&QDz{=Q6)`KzKqodLrf*i7VwU5I#U5R|z*r!kQak=k zSyNtnFP`!$P12I(NeoTmb0wcAm=W;iw@e_L2$=FZFco%}JoC%8YQT1pGkk^l%P5AL z$s8C!2oWgCi8eYtb(4wOwqD~-5++wKvJ+uv;no#-gszc0pHv!wl{pt6Tagg0+7le; zBOII}aJn8vuv()wPUm~xz zYKi&fK%?$JLPUK){C!_OHo|{@gMaJ?A$+?-3A3AEk?ROJ(8@%TE;dq*QGS1xGO>e2a``6yM+~&Oo@N5z5BxKE zgVv6Yt(&i}uXp2fJGzLp_LMy5Cq8%vcz0C)>7V{duK#TPkE_RWV5Oh1$uS(|#AHOJ z11=exD}^S_P&$rEF&)KwI-rvrX?5Tpbg9|2UgYcucPlW3fne3Vzv`f4?;gE;lt8Q_=jptUf*V=Yys0}=7T>1 z-?YS>2W2C1v_kYTH|I*YmWpQ=6JAzenibq72?hBU|CRX1dds}yz<}-22fyP0FksrY zu7!W)g`u0)7OZ6kM7yf8Xf`&*1sn6B=`iOSp_ak@V_eVzI9!5)lv5$$-^t&`R(4gi z<$1lJGi1cBQ_;=r_FCRJWkQt+4i$h9(g1EbI=lS(sw;R_okvsof1|_#hg`0nv`R{d zjvOyhp^7&C8NX&W{*h#Y)sYS|&-v!1xKo?a)PBG*<51*BY>c7K!g{-E$=%Bsi3p>b zN^#M1p0&y8xZ@*YLf3@qn~FRUdfQ1N?fnt|mDoU*O8oPWx$xf=5w=w{Ow1Le)r4Zo z0NgbRkiqUD&^iX>U|Z6F+M2K z_!l*AuJUJe6^2CxC<@xqkm4dM{e)UOMdSZ{-<&V0fAy(NJ67?{ zRP*krrlOw5Q-RlLZIuL2(y+5Z{24?U8$=3K#?N|1L}2fomXc1&ragzxvY4#X?pzQY z;q@{UCpO;UDs6&>AxN-#`=bNnMz{ma1R04*KG!WV^>ale00%+%z8yA-^83Z4?%VM| zg(}|Pi^OwNd(C?m9;B!>C#jKRMucxnXq>|eeJ$a0-Bj)&mgiCveg@1%mXYU1N1^Fc zA_1%kLysxf#f7)1o_WBySZXtvdDVsQXO$Nbc5cv%iqyArZY5I%h2xNbQC zCQUTMgN6mq9YqZ0j5U(WI95gAbu@YZ_-Z+x@n0AIlL|*fBB?Jue!iDf`~SdyTi1cN zmTqGr@}35QQd|5To$o4ll`)n)5=l_q@t=wNUZ0#(MFDN~om-WH^3m^WzQKQM++(T< zd=b;&ySnhN@QfvWqyFG=ootSe*tUIxBqGFV(8E^& z|DK4tV{-`3Rg1DwfH3i$|Piz19_76Y&@ci;)9{T?Bsrt!l zRNvpR8qZPHjZ~7yQm#a-Kr8~!RJ8mXE6_rNfV%EnYa+2a+n&o0hEP8rcd%oAM=}Y^ zLD!uQ=yOn6fQ-6yVe(8qgRZNRe5d5V9ZG2eNrXAyqt8MJVBxc{bC6#q^*bbebG1`0_E>TA9@z`>0?;a_D=_UUvGOUh`)C2ghc^|Iye@PKD+DN zZRN&gqWGPd1wV8I4X?4j!M{}+_IpL5({<|r3`aFpWv7S*(@#L(udm_EPCz0t`xgHm z^i|UzEWQG-ZiojMG zE6-71!BHRhKe@+qE$-yGm(`cNfq$YbJ|x2_E}XYtTi&C5kjcTO{2=3hCH`qA7Z1ii zIIowqi|0gVmb5s|m)!R*f+GH}v?X+*l)w(2{9ToPc;i2=DjKG>_o*Z|^hy>aYGvzrQ=G|NDRc@A}7o{6`H&U4+7W=>!U(ufvMpY>ON_oHp*y-RAR*HUhFb^}Py^fK}9#w(=BV%*v z_)IL#dDHLjNFls9MrL9#EH3GT%m#RH7)`|N(6oIpQrzT`j&p_Gkn_zcxUoS~e(Hr> z*BAa{_rvSz3`DQRv9p)QGrk_fPan<31iKD=JBvsPsH4a0HbURiC5sCGdg+scmYIoV(N+br_E@`etJX0gF6kN zjHI5YFrW}a4i)^axF5<%9dH5P<6kEO0hGQ-lhQ(0extf9VEi{tQmfYJEWTz%j?j3- zfBJH|H)56*dKNT+^||J2g}+`Tf*yG%q?J0QpHRE11k<%EOL zr!%i8BhQ~a8}p5$<*fDPuYHj`$Lg;HW9IoJsShz??IgrCtIuiQc5GW@Jx-vSvDVv6W$hl>89;`zbZM z8`iT9EA1S_nOo*jF}QH6&tmN%_K2618afq99rDgi2G%p(6DO-9fw}O{>P{|llCtdi zj61|6ky6=VU$2tSTK^HZB-1hm3FT${-()O>o(XUKgVv0HUVY$TN!A4ZE1EFN&`hI% z|8#KWTmK6FeOXY01>q+vcGR~oXfa%9sGi`4;H|DQ*;JYL#xe#@88ZOi!WoO_e7=6p zZb(yiihto%Wv}RKX_8SpYOon5Eb`Xz+4Etg94Wx(@WOwBPH+dQmmK_>vlNueRTWPv z#j{WR-|>H^OWEOpL-drUn)LDafUo-Ks6I(*zJA=@UsJ4arh0Gvzh8gyCx4;2a0;ol&+OJWI`tTB+2-sF45kwIQ1J9>7mNSR>L{IzC zEQLeW5r9L|U|Ith!a(!-=Av~1uFX^*B7AiOAkHzLT|DU6K*;evK+^$w=v%ZhEOj_& zfV{PZ{Qmn@S3T_YludASrj>_h``6yMgOe72U^eS@t0FpA^9)0GK{pUt_Dtbi-qUe}w+s%;JlU*`Z5!kyqtUnrAgd)u62 zg`yw%dK8+J;PW`t7#C|xzHqw4e?_hj^|7XgYV^iE&Qi;MwL<8f*wN~YW?3(kUHlUj_ZzY*k(r;e2 z=@|yW#Y&M+O~#$Cg@05TYz}r(VW|;als)m^a&wSJ@!0d{h*FE{9HV=ZgG)%!f`M5? z6hdEyk7E@dJOks!AWP^XcM5!ymn6w&D>86K&tP~F0NQoJ*I;es zF0hR*RcpY*SyYk6pr2Ixjz z_Jl)7mJXeFj<)%chM0nlt5}$g*2sB_ct9)xNYIQb`v1Z|*UD)&{@oXtUhZ+;NBn1% zB)bSONhDRvWbX(5&ksNR@cbSPQ=PIpsyz9x|N5_W5Id^x*KhsSZ^6*5Yd_C{Oz)Vp zE^*+X%Nu=%f1Po3O^$Lx5prj~Fy<+Gd#Mbk^%&RbtS2d(5b5%4M%T0TF5|2OX8g5n z`jYfS+4SXtmPwpRM{8XWOJW)6gd9v~KqrN>q}ULh?`D!KMZF@Y#h1PV;0;T-kjTnN zN~mPzcli%T7u)qY2V#9H8y67Kou z3EE0gj^CpTEW!u9aVvxWgPf+g#8a8eDE>IN!pt zBWGt@xzaGR{9!T9`x@2viw)C!t&ZyZAKXm!&TjAi?E9|&mZ9h3AjK+5(F_#5FW|YV z=5m%UuccNn!Z~{`QCUlrVx~x@?3DVbQadd}%U4guamnv|`p~}oxfz}*$>R$?GHE$U|Wx8?0!mxhYb5Gtb3O;eWhd76CL)*iQfK zM6;>6*K@Jw?zG?to;vL4Qy;osk8wjpYTx59_(n9~zmmt%9H=X3f5kTPg@5^fSFFC6 z#F;ftEXe>)HSs;gXAc1U(@f#EwQ-5&Z(Q=w0s^EA{LiiX^oj}EEjAhScUiB=N5;RJ z5wrPd7XI5XFLTM2=)EQxLILx#W9Xk2isTx9i$*DonIP~VlTn_@jUUts{M~#bye|A# zi*%m%QE=pPx@_0O_98OJC)x@zfzUGkI}1RrC)OgLNr^|fo)^cJ+r;wAgB2&gi6Z)Are1nJ6laoeTeCktyTY=iN=#{d1_|NX)@Q$06Ryj07L>LG| zd-^-x6*0y8v=P=k+WJf5!0l_#SDBX(KoLWbj-UTg#_S~J32B?Tf`f=!gX(?jL_s_J z;C=8HsXuH3z@)GWxl`(hIq)kpGFA~Et=kM{f0Q1DBa=6ZcP6Qh+< zlfB&dzG0=L9hYc~)B&A!NO%I|GoF(QM9-|*=wos#1hUMY6aW8pR*(cA53P#J zm%!sSRB&u!G<3NfR;I7;*2AN0eu<-^YDoTxOH4Y4)y_l)hl)!AsC-zO^BB|7&P(GZ zu*ntEGoggh4zUzgYt-QT#u`c<`jb@Y*NcNpcMQpxlyaIheTs6{^L~UU$A1P7`TV9z|)Kh_8&L!Pet@YH>t>RV#l;eLoFJw@VQMNP`Ini5i^yb>1fv_M3qC)cX z+)2GgBKQQIZoPNjaqz6F z@W}Xu!8rXX8VwNR_>Z?wg1D}~4`X_@8KY#EcI8f9<*D?$+KTP;{WIRdX?sW!t&8g* zCLH(*uR+qUgCr*c_9y-`JxX3p{6}b!2b}qChBf}fKrHgAREQ1(u_Nsn@QhR0XF2#M zVbl38{7)R~VJH@1QZD+m;^jgQ{ypYg0ZD;luBA(BK^Mz^%0%)|5Ccbf>FFKx{Z2q7 z2YkGmt6?FQxXpZ5axq!u?|#o?_T*Z}*W77Ni^asQk;L!7GNqj#&2Vt<o~q7;VVyC+K0=bAI$wDI)jr>tG3Qe3rm9Po-xu^w{4cWkj#nc&4``hP zsU#z!l)BdRAy^tyxR?@VgYY8sR=U#p{Yst&W|`m;$=8d{l|cF2E58zNjACz9tz>Z` zg@C|}hn|c0{~8CM{@CqU_#ecn_I&_FevZaK#%LU?=8ExuFsn9?aI;Ljem$H!nV_sW zkxq^+iXyV4>lr#(1l#oW`Hlya-kjp5+rMXGUW)%efq%UF{tDIq@jw2D-udqJlQ&aQ zz#luR{qvvyT&T}$RK4D6RU*Zv%rz%j{EXh~XKbMm(DeGLiH4D&GlDTR|DfT0&B!~K z9g=5D8Q{H3s@cl39CarlT5FZbryKyE$5T{A0+NQI_aHcWMOvySeOBU|mU@$>ljYCX z*g z{Vf5Ni5d%yOEF-86Zi%z+mW9c?{j%$BWP4fx!kH%q9~irMgDsiUpiK2Arka&UhWEL zFquP%P%#jm=ulEOKcoB|`p~)2(jEnmReg7@u63o0iD?k#@_-XZc;!3{KHtER#6uoZVgc-lwC|)BNeF(8 zHSgDfiK(+=NEsvycNC`hD7{n|U>F--TuST;Vttc1@<`jiN>S5UP}s4c+hzF)wFZSU zTNeI>u;~w-gqDc^$t`Jo@S0a1r29aq(u4nED>>3dR2{9>0MMUNSe2h&v-LG zv51l0-mfnd_ulauU+evoFA&`6?jBOWndA2tH@OXB)Xy^ z;nZU5N_^UFH6E*^7i4|EcW%rOX@D%vn0;5K{%rIQEUs1;8yo{2xGUEmv?#G>YS!2N zQMr`k0nST&d^|NO_viC-d}h%$Tfu@4Dtt4D9tgT zxW18kPy>hblE73%kjRI;1wNioA4C{jlP5oEk<)0f%5F{u>_vnbkNU9o4qxjiFByW5 zPL`}w@t#|;Ee1pqaDF}Mh6=GeX_Y@PID|eYJvzv2CYa_q#5nS=3Gcgc|BH6;YYU5l%@O&(X zWI#y#e=A{CQN_dPZ%eewmop;y3RKfy@DuU_SMgOJ#RfRTZ$}Y*@&-804eR;_|5HxT zs>FFOm5+IFVAT5Rp?W#zNQR>R&ao#hg8J;nrFiTu68PZ419dz{ePg#h%H~=U(_EEm zxUP&S`Y||c(pxwFXN%EFTD81hNrke2wa#R7CAi7e;a!bHoB?QGVlw80LMKh@rcDEL zy?Dm%FZdh(95Z~1Qp{ZV-+v1KFY!QCgrYVDxgY|`ae&RWJkP$Hkw6uy@J}yuNQ_8n zy4byvlt1KULTJb+Z|u**VFkn)6!EjAsM_&gygaD`PVmmVqnca)*BIaGONr`R$oB=Tyhio?&ma83AIR1}wrV%=XwhJ1kXG-cshG6x z_p{J-V$#*oZ1Psmv%H)`rj74|Ad~GK|feHp@NOaYhmchxi%38!4cEvOkTXG?2 zCR$yMF9iN;&yBG5e?$y34C*Jif3ku}q2Vm)pIwQ6nj3*QI%3-Fd5p@X_2#l5f9-5c>1RdQ z7+xyDdE2gx0W?JhmChJIL*%&O?=ACL9}nkr@;Z{DUcOrN_nB>i<38#PBW$QJu3F$Y zVAF7NcpHcP2Cut8v8;a>yTh@(mh$Cy#&E@J@uA#k7%kJSnm1scu_OK;uGB!Bi}KhP zBasT=kele1-qPPPYQE$m+UB~3wd5rPgr=IHb&l_IQhy$6N5;wcpZGWAA|YhVnsq?f zf!F&`7Gi$D7ta?QzS0Nkmaz6>qFGedFa2bNeE|x!#BTw ze1$4s?`u@~6{@_Mijp%q4Srb*WRSVm_khOoKMUZ_=0QahG$7)a1sxLn3p*bodVon} z5_2=SQ8ae;g)QYlRCIWECT&0d{?$qjI4xC@1g(ULUMY|tUwR+&^#vLO-AoYKGh%<^ zAWN6)r7lB)laJCEg6Gj4_0*O9pvs~l<~G=noI<5T4&E;1V8MA?0cN8X$F>uQ<|Pm~ zq(_~O(t_+NDxJ;HD15;MY*om=m>3fPfYCi zReKu>(pkqNZSe4~Rh9E!K&xZx4Iin-+c^FJ?v3S!woUXzuAC{d29Mpu?EvIZZrWIh z`1{wF`&MVGAI8m=_T?Rw@j8i#3HexWKWa<`&SbJ0daa4VAaJr{7X7I_4nMgA_Z$Du z!+weXGnvPue|Ih?wZGvsNKzwky5*7Z5mO$%YaFlT*fHX96H^Rp)W7}9{;uQZ#i4^mH3Zl3KG|LPeJ@w&3Yr!3311W z(5QQfxXgK0w()OWpW~;MZN)s2c^GfL$N$#NnNdE?*mSL9sQD%IXG>7mw%$A&Ti+Q7 zpx^yCEyUxaSr;ph&PgG2{vlammm!YjIJssf{?_G?Zz|4gC8Lg$JNB76KJcH$7Yi{= zbce&a+vz~_#fF3S2p0OQ{qwR6 zG6uKfP_=~ceKDLm1y@o7u-~k+<~awpyz?2l*C4@6RB?7lcc-l6ePIXv98Wa)fjc+7 z^j79E=ZMswNMQwtQrtAHblNG{ezq&p>1RH*X}0gmr3TdgA65B~EOtT*q=5w5fzO?n#4EI2=LO0YWL^x7KQW169w( z09Wj->!n5@xKzyAWBh-f#UBHb(IqBKcxa3j|5bGS1pblWAVH+fN{QeVcgPlX5>#n) z@;pu~{Fe&GS_hS6rorZl{}HkLvrVYfmq66jG4GHTiUDAJA53Sga%DhWR^D(4Uzuyn zut`FdP{yovktGN>Q)|Gq}`w|?ul;vMYYwF;lfASB_>NL>-fNPgN@8AXlF z!WyEt(%Er%S0_)Px5m^-kcf3X(t!te1QIW*kP$FY%2@*liq7LX0C{{$(m1kw)!JIM zPT)Mr6#n%}b}BnqSlKghZGqrDIWI(=5$upF||pdBLEbDtHh(E zGLv!`I0#H2(&P*<=xiY1Ysj;*APT6(0FjTLm3`qkw^uN?Rohi>T1dDvF@aXOhCA6l zdTOfVYQ2oM{6|zUk&v~RTawM>*`2!AC)9F{iJl8l$FO}K$E07B)IH1BXeTU+&`ZJ3 zA^`yj)2j(bn75;=t{^py5f7Szo zK>jZ-PkJd~d@O5S_S^WE9#>M!AgLenB(NCDhL(tj1D7f z3IAosp}D?DNAN2Z*_HYDYErB`N!IMK9EtySs2X>j&n27Y!-$$w@~h%Cs?RLwsEUc+ zJNtk3XMa}tTHj2?4}bZ~UuyCH@jw2@M}O~YRG-IF4HqOs*fGZ!_`~tSJzBZ#Q5K{c zFGrb12sPAv0)OnltVG<_zC7}+#E$Ja0)me8VSwWZ;#Vho@jcR}yYL&0%=K#BbeOd! zEvcF4bnS4u){sf7hpw#Dy3BmzNoP4D&tNp0^i2dkB@l9Gby21wVbKSDjS(_VrOGnN z*3EPg3;{h=%(Y%!3YN#a8ec%*d6kS}l5ik*T7wiN8s3oCzW;mCF~KVECGvJ(>+U2! z@_6z@SykFT)A+NHUu$e~s?Je{ZQluwK0*J?JQ1K6 zp!MERx+O_3vYc@ePas_{cCfw+{US*!ky|4=W%g4Tr|K{6V7!S!eH{f%4#gym z$^-siSsOe4XID^5O8i$5t0V4zALU!4>QgJv>o5M|FIKC6byR=+@cHCV{^U<|*Z)8L z(?98CJn(-qMrVQ`Cu{-L%FJZ3T|wh0Kq_c#qq;q2kzmIlnRN0r#B9DoRV`?$a+FT@ z`Qh|9w=SV3PYHte8^MTctO%S%;1oNa?qG7NS}QbKol!@2jbq^;$wPxqL1ep3(Di-T zD}ku%4n~e6a%o{9!-xXimt-2>aacl$VgaIRGu(1b1^Z|JXOxCOThkF_->lGL4DknLyQos_bWar+6p`v&ii{ zoU*sypX`{;;)KNi)Atim6$g=K$nlp=dKo*b5-t!oPE)M07LTcVOu& z;hU<63R+sT4^%a~U?E0~|4d4%STI&9sy!~`&i{=HkftA2C>Rr8_^(|UjrCW7e{W8w1k>8qaiT~U-eq4WraR()`rGQd8WW0T_8a52ootvx#rqwXES%@4{_JNzOFbMB zK9qM}`5e{xv7;*E|Lx!YZU4a^{K50Uf4+X~s6H3eeHrrXS}brx0Kq{ZQ0CSIJtJC| z(5P13+~b6o1C(~U+^(qF7e%jyH{xbDli1bKsj8KD#Cj++N&^GOguakoc6ui-sivt* zOUr4hv@J2csvybON>C`|88TD)=PHH<<1olPk2$5o7lE*^8(P_|CN2Sf<%O{>U*idp zCKfk4JDgI$7%i(!*lUgsZSF!&0*LU}do>DcY1_t#gog3}l(O*x8rs z+VG#E0aF*6o3I}0zh~V!ym(5TTd#l0NjF<|kojvTf7Y(pw^u;^C<0oiU7l^Z5B}So z*DGL8c{=(dKg%`bz<&FE{Fkr*uKd71TQz#(v*~; zS(MSdf(7$ZLzEA)LEBaKefsiD`6>(9ZMOky$C&|bzUXx#8soq11fib{qbk!vgL+SRv@Y}rpzxdyk>`3-5 z`_a&i2gQ7keN_5eN&f8z5N4K2G9E1bpMM^Cc`pg=ypHGliebZMum)Q(G9cWm34vha zW;oRoC;bHe1+(YB*UEx_0{^i`@L|UgiUZTvG-tn#ju!sWe4(R{qoSjNN6kXy?*=o zU;p)AKO_GA-~YYd{O#ZV?fT7cenV@;+_4QrVZI^z_s3t2!nk=cFFz?V2#4=)14cO+ z1IX3Q!OG5OuZ~;F9Wf#xw@CnG{m~se9mey}+)A@#gCdEA$OqKAX{AiKASj%ASErcc zUUz3M^sL*7HiI?%!=y6F;f*_gnLK4tf%hKpp4P}&b3rLU4-?m6C>(+Sv}OyPQ(vjsI?7PC?|DDABu<6M*k`4}wEh}ebTWs;+6)Ge{V~t0!xT`|u5wa$Jv-QO zy%}71BJGqqh+j~fv4XCuZzB?a^-*Q7KiK=`O!7DnluwJQ@${3K9C zX2X>6bpXDT;sqPnpLxi91Mvu+*N31#)wA#Ul#nfqOk9xLaD>Fa98er45s%UM*YnxI ze`qEm7Q19h^bS@U!;lNVqq6375}-8i2Oo?kTbv7@29LFKJ0utuxKCm}o!3GFx#R>9 z3vf}v>F{UDK4tuae!2n=&rh6G{9`iMIq*(-H|FS$tI@JY#PcH~8)vN%axGs-J{gyU z&sK4=t{XHjmcV>zU)RXCoY)?MFI8E~tBT8D4$|tjsb#Bhs5m6krn!H2#Nx{HB$<~9 ztN$Tu9{+1a-zf#uwk$XPYaDS0E`zl^Pw2q4os}`EEI$jK=L=yn2F0%^PWz*a*vO@* z_*eT{;c(8E;#i&A4Cw$>>X;7V^s!SNf3ZWyQqzWdf6?voBUaE4)*S!uHCFgrCeq-z z)*p0LdRO`_!^f9(&F@Z#+#u$2t~Rq2-Xy7+nH9^%{?6I)S;T)ZC%h4Cqi4?>EAz>M zwAt&`fAmLxRR8tA{?~c$+Do*yIX=EZ_5II}TmOW_bKv{&R6i!EAlI5~3qLO$k-&dZ%%endWxLVPGliOj4x$4)!NxUFnuMmY`-?#@ux;IlmRED)Ws|Kt3)0 z7)G^2cp?*)8V5_0a+0&KwM7{diS&1-v}3)PSJ&+8y@nZe>`;E|O)JoFWHQYU0DQagf&3cpxwV=)?WB}&A<<|zt(r0<3QMXvAH7omP#XO%xW z4-|minzkXrhv^vjY^Waw1;UB83(&IsgUhMVGbke_yP z1n^iupKv?6r1bI=aD*i^{^^rglTe3Bn^0)FS($HD(6cHZq+VPTx~%S>92*lGmAp>e zb}SP`YPU@Rc$V-3KR#dn3S9*RSYne}@;V*I z|Nfdz+}z0(7hNK)A{K_N)DhIBxt8eO^1~5&hA~n27)QU}yB) zT|#YCA8iiTb>u(KOeMKgICsYXJ>!*p!Zu-lP3fD_nkN>q@rnPJbf@+l141sWIL6V~ z>umi?x?lb3SMy_%T0i{oL;vCzzj)60*KVd-uOBnqXVmxB|F3`j>*u}auK%_h5*S4V z9k1&Q;43*zyjJD*F>HQ*ASqOrLMQp>q7E{mwfAHH` zG+rFDX8uef?0a>qL5i>~OoH$&2Sx^@*5x?x#c_Hl)iWa%cgj^2$a;6MmlfsBNAK{z zor&D;-o`&Qoa@&)icsy#lcl>>#5=`ttvM!bEoJZCP<4d@d5t2H%p3nxPI%yOi+^y; z{iKt_O}V!0h=!X>H~#B=S9@N6+KZ%n_SUyPKjx*&GeR#G8&(tx|6hyyNH!w^V0Ucc zU&;q)b^#LpDfnOYuYYqJ})*ldL{al3w$%>%%Fwa&;{s_np$1j2Mm*BHLfyXo80Vay97V5VQ z71hNA72q`BKO&r_1OAf$@IpK)CCN1v8_D(EIx{cfC4ukP7j+0Dw*9Xt#~IJ7a!kiC z?5xtMX|}*W-+e#upD#R~>Uq6yrplKR)gLoh3I5~OfBl<(^KYI(|M4IH@pwNyPLO@oF7(1Uy}s5{p64_N?P~dgTmqozsFsm9Wc6q2J#sTh2#EaO z*bxT@FmW|dXo*f|0E>WtBGOTT1piQmt5cCb>wv!qX0D0bAxgTNP6u(xMUcOW$raM@ zmVe6_)W_6Z+{U82$pH%H6J3B6fTq5!gc(>EC??ms*5g3S%2alu!Kq8?Zg6cQ6+jsP zG?n0)XpZ!C2`iBc@?_lTO?EA%W#To#E4pT^YHdTsEaPjnW+$3t`|dCfy54OZ=Ar56 z-JhN8(ps$l6_=BIop%|($fl{@PW(>^>s|)KTS*7jZyc-aXLXmtKCzD0;UskjekEMk z)v8Z_^txGeN9@(-T+DO?u)4=2*`e@>Qm*7U>LQK0^qDh-nyB3OF_C2J@Mdw)U!w>BpZ|)4fr?p0 zJDgU9a&VjNGylKw@8o9XN*Dg&wu4a<{}_avU*`N`SBt=d$R=DW=1_MdKBa$QuE_du zqN%@;IBAT!jbfbpeI-X>Pfo~LX2rB=_ac4!Cdn`3f4;;22@#z< z$GF?&?jduLrN07ZCR<2}|1%S8weinunvag9qe%jU0$(U3Lg%yqk&Dw~ZrSG8PoZ;K z7mmp`ZyE4qLVl0IEA%i|(wg{bHWn*YOegOs5{5XP1j1bYQaYTo_4}Kt-mjni>}T(r z_3L^~$R$Jla`YVg#jn1dT9ujt z+FT@A4kAi^72~FpSU`$Pb(_`wP7)x>TL%+ND5m@Z;fD5AjC3uAEI8_s^LV&OzJmlr zFeS}BH_7?nC=_&LWmVc`>vkDbqC$(9tbd>a`*VwPN=b{>VH3A)<0yOMK%$e7t*O zrE;wA@!#$IaJi|@IqSKVCLN9MJ=lDq^Ns&t-Zoxx%t~A3PvgHi`EC|uRCBCl04VY( zrfmDPiq>G1EbhW)z4bSwz&xm!+I~&BD}6Z#-k2I^52H7GeCcQx^9uX(SNm_On7)EI z5cZxed-%@4rK8l7i>n!0wq-cStORFbRK{V&_?xRBaQm{NUOZkOfI4CLti|zPrj@2L zekET5_n4HFc*o@m_je~j%i6q&AJoAXmhnrM3e8kszApT~=&Ddq#9eV$U&-q91S?!V z&auTSP5-bHjpAxYKBb+G(A}e||9f%>-b|IRKmF4`eSW^T{u7T%RNt-E_csE(ANc=% zy|?~nJ`*P`R<1M#d@{voo7RE0ifkRnv1skeAn9`w3AMH!&zpU^P&48&3LRSz`kjB& zC}44H*kR-h`bd$japARzDG4r#n}a6ElQ=K*-bw0b(wc3Lw%(s}qtog78r9pe%ZRWv zE-Oqy=jb1dpMeFr#71o0D|Hf*CZo_h2n=*T4CR9u)dE5rb>S68np zo|_uMl>{bF9x7o8-r_-#n*w#QBFGma?SVp*oZ1g|U;F~wzu$YU1gIPpI@el}EVfLP zaJ&>>0h=y&%0@&oBW*+4iA|8HwSiC!7Qkj@_LVcU*u-(Lk$g(87yLI=v+ZgX_pr#i zmd9?(L~cOxloG#&7A1arC%sbbZPG!c?@PYKb@g}n*Gq*^77f&RhfF2ub1YiiCq19P zjtJAy&6dNKGd>K^k)T(Ek2Oup-{P2B!G16DtYF~^d_(1huVHbsWtkFrQ%_+?F=-f(-bS>u{QG$~ zwaYeau;{?CC+;}Oc;4f!iC+8WBq0tIHgi*2dkk~fivKdVmYM9W`(XN_ zm)4QX_u#jZD2t_nOElL^{{n)*NsQgQSd;#G^9$ouc`?r$T0^_A_#nCFHQC{CIXJvV zZ}js8QuW>I7r*$$Ga|PBHO}g&{`}`Z*9Y&de|`t+`(~+@oqS=x}2NupDWbeQ14ljX!uY(eD^Nzum`c97BeX$Vdd(##5SZzH{Kw&xZ>1>?t! zRy^`1xr0%YfjOldK*~v2qZDq(ZYBhB4)p1iq`FPSVZBX8u_BSL8_FAo`z3l)M2>*t zVAbxvtU)~=mOh~;AoYF9tL8cpT>0YtVQ5}AG|&uySbKji$cwRTeKBhUmHO9SahC(Z zvivSZ2xD!3Xaz;iy(13eL!02((O_bbs@LTY^ob&Ymvs&MRgl|RPS1zTy`2^xSXLby ziG6vD4w*ZYwZ?r!`6#jiyP{AI(IJxV^mdWa-*brLFx;u_erj`Z0tdWv(%0S##JE`) z6KBPQW2wuL9ZO;1K9%l)AgH3@J^mMOaLy4R`BX;5R**ORi}7*c-#mM!o2l#a2Jwbx z9T{^fw%;CLBRjfg*`TTPqeI3GHGm-WT^LuWIpJ+LZ`K zlI@EO=L7!}^8IW0Pql}4c%-kqb>(RPfIKiP8Nh!iV&q5DQRF-RH?8!6e;XeLOg$w? zg~li_M<6dP`cW2BITv-sI-ub*QA#wV3)N`rOM|D?rQt{LAX(XTD7?8q| zE1@U+nrF)66mto0_6+e~webIS($3J>`T4^SKU^bvVVS57ANc=1;Jx+F7jC8+ojO(O z)I}0kxJIO2ESaa0I7s}rH2Zfd3&DEk+P+36hXm9LLb^J;8_`Q8tV$PV&XBzLDS~cz z7Le>s!BCt0klSyiO3s}$`eV;6w+w+l+;W+Xe>tY-ex{o8!^tO8 z25ZIm|L)U{mdkXAg%2HU5%4OJESw9Yz&po}kAq$iVA}2Ou(jcn4oTX@TGXbA>+<^) zioL$lLjHTKbrnRExgz3ycM}zY9e?)Xe*XJ@yxj~NI@>)Ds%N5m!1L@^*iJ13?iO7Rg;BI zPA4u)m6i)%aORir@Ao((b;AK?nAx=WDXAOSo4%7s z4Y*!yU{_fWoQFgbfq+J68Z$m86ZJ}vxu+6UV|*Uao80mfJ<^5E({kk6&B?M5Ok%G9 z0K)evvp(mHbfQ6^(Yd)u9%@n?5i$Vbd5erS{9DsbjVmz_XyNaS5fRw1hK{X=Q zoWIM28GHwFf?pq5kmOIues%pY3Q5&rXmMfDZs}GOGY-u5N+c?|R(LKgl|6d(TQC=FHyA1;{1K!tCY5%{}lX~=`Q@2{fI58EpXz$U0>^OvZ4HHkRT{# z(*hk)&QIi!-b>+dmNO9+$DtP2(#JZ!Nl&JmVq(KahKq9Aj!E=UO$cmg#`=brQiOs8 zvh>H=Kk08TC3&HTl8qLjQs%fJXhK(71C62Ic=et#k|MQdazZw7eyi_zGPO>yN z(UAt*`wixK-;Kz`lI#LHUP;Z7VH_|(+1fgi;&hYL)FN&ertdM2E%W*&=BuM1v4_c~ z#5oY)0*%)q&ZsyivIfdQW?1P2Q6s_?!q1}cs4OI}M_VJ|*sY>(%$;;qF#r|2O1|MP zyjY81V)JT_Pv+Q_br9V65|U$FEM*m1Z7WIPCjQTkuo@;!O&^D4(0pk?V%n-U{$~RJ zkpL;M^|}!WP8$ZIDTYbP=Fg+UO!yN26~2tb)QLe)2J65%^`>`QKG7!Vb2y0l!oSIl zNXz8orLp*6_zC|azf|C##izE>&zi*b#Q$)zVlwq;^nFJy2zL-bsXHlyzc?x60CGT$ zzolED*w!`@ty$9b^bWVt&X(SqIRfoBOr(VyXmwdrL^38L%);!bk!X%xaO%ow6c2)z zw*1gt2r1ueLr30GWmG-~zMK#yaXqp)77EhkE!sl{L%aHkG{}~`ZKU`Lm5iglQ-tC; z6&b}!pufd`D2ysNdy>^wUM9_9N6(x*%ov2f>$t$5Z{7 zd**vOVSR-vu2Jn@{_>aauTXuynd*0c_jjN7{{6rI_ayDhaUp7%ce-}xMCq1K@#Qg9 zbrnu>1_H{CpiEu9NF)$m(pf9OBhAS`Ug5|d@3~}w(V^{5UT4ZTFTaN#CE=Zi+0XHBl!_-pK0>bNF46`Sk*r4LG_#Gqe*7T%E){eSHJYs_`ql_my_vA<)xT(--uQW>|Ag)HF+$p{fq5};NBB_zZ}Abwdy z2mwJYg_|gl;13A73`j_66i`P>Xj178KcGb&L3bKjh-)kn61uvbt}Z3+RJS{Et6b$e zWyh}a@$otKIo}?6*P7$GjJfvv9aofpIotluyDw|aIp!GSdB$a~y>>=e@LaxW$v~gs zXOplon$;T}RKzDENJj`mHf^U1frPlJGOfn5@QRbMR>R~XltM9>kCka#-ZpNAi?wL2 z*olF^a4r|e^ukFP{4qAdSNk@L>YA#LwAwntx4~&0}0V?GfgR zWBq0CF2@4?*P8cuRmQXQ{~VPYH_tVsau_<*tKm>d4pQ9tXOVB8AE2=nz! zw-VNb=x@nSaQBiEyKf^F`EtQ?GML#3$91e2_}>Mj{Cd-&d;6r&&y7m$A4dM ziZcT-H&mDyeD~aCu7Bbmwq~#i#7LZVV~$e9k#xhRmGFE9C{A@tZT%xzE77iPqnLcmFfAG+F78qj!IF-6kV6oMX#>-lSLjn z!kw)3>g%C+<>GbtM0XbrofHXE4{^O@L$VmJ+?x5|q99=TlJT7UNp_;BCA>2k9e#rG zTppL5KE4()@!wrP7(Y1%n@Dc=p10ttPMwmg@n*-s87{hOPLM)M-B-p?{+fA5)L~ZyF#eek}RHS64B_m@@y@b*Vo%{~YCE%82 zl4u&iQBeT)N#z(V`2~}E_y-bEkN>$*R>Z`AXl}-WEGHP7+*Up8PIWYIwS#EgVQrRh zwv0AT!*IiY!>7B$@OSxdNUaL<+&rK_U@s7Vyg!L&53T=uy@{kYeGXHZ-x~iwU&WM{L*AWN7P0_A_etMB!d+ zH*mBc$auOQ~vD@f}kwPtZw2z=eV))92czP)~Y*H_&D$ngvR1Es9eyB!=*s#_%H1| z^hDUEBmT~}Tgi!E=j!)TtXw%Sfr28q-n6neErH3fL(>G-$DcrOPIySN*9swmH4WqL`rhmr+~##u3UY7{`RFVl)38~@Fz1OHvXlJP9u zM~L^Y^QHZZp$ohn8xQw~WF3MwNuJq!8`fP9OZ@7%X>%(h>3S(=?)>Wb3Du_^dW9cY zW~^>LE?=g?eN>OvPh0=TF9)1+y!F;wdEW5fR>w@E#^oej3p~41ZGj}Hg9ma3tsctT z>B!@{qDGpix&IeXYYt(q;AP?V`Q?jG=dm^Rj zD_AgYlyko5>MBQYOfY9=PG_EvmaJtaA+^gCYy?g%nPY)6bAZ0KOFRO_9rP9GT9H28R#7hPCX^pw5FV1nA$JHaQ^I|iUwSP5Ix5!k3O>V#@jP1VK;W^Ze#L}7HkX$1z z=ZOr*KY~#R?rCf5HxPUg;4*uW&8Pf1LuDd=2LGo#4=u4s&ALSQw z-HGvt|F-#}59R=2oV=FO9Rz7KgI1~Oa!6p5S8wq+F+wt$%|~4V$q?mJ(o8g~`0U@@GvxUvA!RY$9quY7xy-L?? z4*aLtcx3F$o04=F@SXF!9#o6mRZ9{+p|YhLg!`q$BB2mdDevus8vfXdSEZE%pk2n1 zw6r?_xi%aB{KDf;h5ur`5i|aCslg;SWKR|-GxNoz1tF3|xw+tA_@{l(!;WwLA77^O zpHTh$=RZGg`0tN#d#d9<{jL9V)L;C?Uxct{s(f}-TgmCwMVcI1bSZ#KwelTwhicOl zUN3h*f{HP{Td~L^2QF6$*lcmR6|&QfT;1>gw}H-=-?#??H4t6mRd~{qy&F4LnL^y$V^?A z31kE&4^+)MBQgvJprGF*V))sWnjs35ob7Ow^%KyNp7p%slcpEHgd_{ZTO ziHI1uaSMb6r)Tk>_`wbhQu2`n_Qm?=zgv1;G>h4Re=1D^y5ArXDAMEDMTqcgDWAcA ztiqBng1jpcEJ1Xoob!2G6l)SxlIRbRx-8LBjq3$H9_DOPOqCm2exD?p|zQ?JtmWh8rWXHdn6S_pkuWTreN%!kyWnRt$o4Ksd;Xhr! zHi0YIjB#fjNJm_1gL_t3+{XYZylwHH_8?&ot^ysxTgnTI1OIt5tPkpAAIf%gb}9>_ zzI8|q$T9vacHu-NuT<@x6#e?yBYsIXUR##!apq+ zV4#~7XIBgaeJ!+vqZO5X!~gW3P(8j(g-74;pO1a(KhaUeHLAV!pU2iee?oN-R&gc1 z;8KFcW5+qYG(|URiT~11WW}A~HjOrN2kL@2fr;eDR8$l$1wsIjH0$l!xD7t01(o4$ z9*g-)!K_g|9G8=-v$qYD=)a}~(J5P5KB<_g#fq7tgLg17Zn^uqva_kiPMB~1%x@F= z)DgNY0McjOxHV)B4dUv^nhcI}Ona$tx4x8s#G!*ix9Tc7QZARF4l+7!Q-Q60B&SMv zfI)TXU9O54)n#zg9$PumlgqyB>bx`thF2ziUjg0y>Kvm~0W(^ip3y|vJbZ4ErwUx3 z*}z%QKU+13Stz!JT^-?{V$$l_ zMU!k{ftfm}R1zK$V$&pXolkW$+h>Fl9KM* z^inn#{nWyd@seaO^9b^B(=+@#`#<2f3LT9^Vgc>WI$`4o*nJeUkkvq%bU02>X)12~ z6OjS1WANq2ZLf+wn-6$2I$ZSml^sC{cwUR)m&Bo@dek8+09a!GE2dt*3)t z+@CtCVfRtx-~MGPnWG>6t^f1SQ|t9S;N{Dg`Q7h+w@@)ZZT$xY!T;PaFdVB+qE289 zRFml>Rc3ATlqf@aqFOpXxnGRE{#ztU43{FvJ}M#KD2fh4>c)D}DWZXsU_Fn%#fUkqYGn#rJ57=U)XTm( zZB^hi>wMZ$+wg3ySx3*FMksLe;iJrLmh~UhbiS7Gb1J6Gc97%osRAfnFApTp>ts+Q zC97}X8ch!dd>g<&j=33ujI@liFu&FvA*AiPX`iB+N`yClnkUWk8zK!!ou5gga?kA;i{L%MJ}h=G5<{H5nhE9j=`EqN>@ z`;GsIk&!nMMyb$ivkKQ?V|PZV=b=lBIwj|kQG=J$?U^<-`D5vNFD}3}ZGLwB2S z_1=to7q&0_Gv07J(fAfq0wGC06n^zePW*@P!oP@db-n&Dlv7Xq2dl;K2a|Y+-dugf zKL?AjM6TiJ5vLx_O>_)n=8XUH*HN^Pbecr^-9&RL@k}Bxf(CE;U7bkg<_7? zR~rQU5%@R1hyEVMnt-t9(FpuSS(5GGgeJW^OuvHvF&YIgzcB4~VOe}`7_xS0^@V#G zMpU{$%>JS7rrv^CMfsRsLc)d5dA#=l6>EDtHU(;s4qh&8ZGYhbO?#`lnL{S>_*O)d zONxuElTw?Ubb4RgHok))+6N5P!yS4*5`>1BWZ;kR&>I#&YLfMkf|*)DUIxWW0N0D; z|2u;lNfSCB=4TNzm=7i4wJtuCNENKoI|y3_Q^PO26PkJ+2z0O+IXp(7e9Rc*Ekcue8* zswhj~Be@AP9f#Re7>T1L9n4tJ!VqT17Gu_6cm%YxZh~#4_B67k3ly}FuYC)KchV;u zq=Q7(s8vhdG-g7DJe&#ON<^T0%Oo$I%DPoDu}l4 z^b{rhi*J|v)a-2Q{DxiWGF5PASfVEBteVP8Fei8-MrzVQBQ=J{xw4^YUJKYz%O(C# z2o#dN6h7kNU&M6bYw>5<63O!s7XMp3>@{10oxYT5(3lc4kFfY}emanc{A7hZ-{ITx zHG4cYMESh0QO&+am4`D??GMha|1W&u3)%NkjZb~*Q}dUpw170xK)(H@ff$MUARQRM zmWV7oE%^H!uob{VhOgi#vJA$q~F2UVE4_`%#YtcJ={BrvR=N9G9p;<_6C8 z)shJL2K+wufJKtzo0)N;u4nPTo|Gr1GapDT1EX0t%AAya9?oH~sWkkf>68RAVix>A z`aR)42d*%1`we{tfmpj(-y3+NQtH{Cp*ZPRPqP#J}8_ITaRH4-yXvleOj4#p1z5zjuz; z12b_cBn$)@bY?y`;|2^G$=Vvn6)q{UIXXa_J5G5ugK^Wqf2Tl|TcgD0tAT$75_0z9 z?*z}Hk+A%rtkKjWCN9zKH*Y2Um#I30|0H?&8k508^}xb-x0^H;;(u7vt9{Wcu=IR` zp`H;_% zXri)@>E}qy&gb`voSE=B=KcQ|8zk(H}G%6V*Y`C zrD>(aOhq3$Ma#zu4L#~Pt-w+%hR#@paf5cR3;siMW>~kv@ZZDqdT}V1y7bf-9QZeL z-PKWR>4Sl+=L=64Dk3e3s_?Z(_;VFt(w`FOqIpmmh3TAQO=wV-lyp3+kPY1}$a7S= zdXS8pJ~A~=zM{Yx)wX~=8nppi|9QPQ6RC9o|kAv{pD-~u-U8k zSyVFogi)WnNo=u)#9A@%KX9}?5Ub2C!db*tQS%Fm;5Hp-nep-61LMq7_Kg;L zX>fHgRk#$DhSUVd5dN4ASQ#O4olX6hatq(C&v>|l+nO1swE`gYp8&~WEoSU=f$Vj; zqiJp?LmdVXvNn^4PaA~Zl>T^lqDnJ-;~U@L0ms&V|AK&^oeIi99n{T&3B0z3PMogoqXZ%_3u& z(c(dZx)v`*AQ=x{|8}m2HyD>=R+Blnp%QCeW91VXhjoS>;-t|P-pY;)@B zZ!D)Lwd{HpTD>uxlb>|>HB#+FO^VdGy8bVQ{0tg^M&zWFJrryKHcI|*KFcOx<7*GJ zOv;p~Al8L(KsIZTBhQa+>3SW60^dX;as2m=#A}7o#ByC{%XRZ1{9A-@%}Z8v+Y)sh zD*3sNcJjs>ohp=^wY!AxJf%Q7~6@>519@t$ z2yHjn;X4gJkN?u)NUntcmfaHSv5ru42D!J(o>qW^gR_V!)M^DQpC@hK`sZK+6O4puB0M^pThi_1 za47)Yrm#vi!mr`Nl!0u)<48v^Cdb7D0c_TgqCUY2WscO#sPG_l)$$g96au4B~WR!{Ah!3a27X)B^N(Rg-W)9^IAgRsZX062{dVS85S zUQ>0K4zCd~U}t6zOwEcv(L3gq-onla_%PQI{2m%%r^bI>`bO0zjBSTOw|Uu;f*&sXCSp=-GK95gI`{#%s2Ifu0S7~%rg|&b=^V0$ zg^!01PeM`CCjD#76|}&@A#Y>0)8!(3XB`F&_(%o0gMr(j57l!$wxWRo9nTs!c;(&Z{;J@tU= z;6xnXK83u|tlFM!_=jQg8T|LK_YnRk3pD<bH;j*>Nk$xC=OMM>Kfs&4 z14qnXD_*}Yn=B&0Z(W`$WHIlxoB+9 zz-axd37O8EK)MG#N%a z3%58I?Dr?SpX{V9nY^-RrAvQ+o+J`%RT2UR+N=>4n?#=KOjTG7&EO$luk=9C;Fo-+ z>)41t%VZDN7T;_3SnCvHYs?G?sKsn~Ybevecw8k$^NcBL{N^-uS%&|0`c;XgPsAPNByHr;L;yGctMFoo z_(y)0JW`23A+4xFWnvoOdQueMJ2JhdUI|6WEoi&n%jZYJ*Zdsejt0IB-j#acwv2ls zEv!Ts=R5>24m~%jZ6l?ih%dZf3{_Sg2r`JAsJp2jOFMQz(t;5P=>;KI+-#qW5I!6Q{*=tKl zV$N(Vv{V$Vc>4p;7gEV~xXVak&QkgZBG?YqQ&aTnv#NW+geDmTVX4}$R}55N6atv& zEICF4QTC;lZWWdfq{Uo#dCId3GXxJxVwdSbTIV_KIxU}kRf#;#Id=W@S>SZjUb%c^ zRFFl1p)gEv@diY*f}A&$P>^)c*t6S`!FCpy7UWzDxrXNL zezGi?q*DFT9ODt<9|M(+O-U35JS^F$k1PI5K^tb#XFZ>FM|=?0U#(?>So%1p0LY7F zhjy*a&m*=hHzQ|bjigJW#oDHm6?&-3M{*M~z2Is+JN}zbtfPg?aG)#U-*n5#GRFGq zIs7vzth^ik!|`A4)aSn>2=_nYUM4+F(%JC_yM*OFPuX=T8Ek;Wx!}aW-KmayA`T^1 z)ykAznvE^cv^&SNKMIx{Sk~vff?{2kv6J8fPE1+@mNtS|bF3IRlAqGql>`4+zGyag zma)WW%0c3B?svR!$Yc&tt~B7`f`4+8;XgL~*8n9Vz|u$3_NE0~`W7ZD@ra}qKJIp$ z_%ChAQt#oR<$QyQaVb?umxzvJHpJqRxs7Gl3!7*r?QnsOj-OD)FH`x}KOV2Y{(9_> zk*I$C>t8?T{KhxF5ug3+XV3en9^d*u2Eu(*wIU-EB{4>-3BM;L53f!OK9;tH4wlhX z#Xy9_&QRjpa~IduAUJ2W9`D(dn1gJNx9;sI4BC}yzhkf_!cJmAwu)Ml<@qR1;{iGt zunRg3tL}S?&obX@k`OVb99921?`C=|b_2azlk;?iPOZHJwWaeA0K!PE6Tb*@HRVgJ zv-O9>++{!!F#wb8158*&FCkEKgxgHUEu1ZqVMo4&pdBA&qW0ivR2G#;9m!Wp1Q#S% z1whz6p`dEQ>8_^*&ZrPUp;EWPXNVUJ8!{&%Ajm)l;7Sx`SP5abP$|Odh6FSjg<7N0K|e57ceB#ljliw~$1hT>sK5qxm?2jM65^ zvCRLN=!HIPnge@a?Zkg@M-N)1P1_=)+nYn|c6cdSrv*O?=epQ+&!w3}@gU_$0n7D> zPpU4`8b76t2X_r>}PoYy*jh6IAQG(FA`YCoYYRDLC{w!uBY?)^Z1-U_D zlo3SZ%dT~=@ecICs-c&ij4KVa*g6^(MaH8;iu45y*f+-4-3U$;F>$@uhH!gyi0BxT zgKXS}j~<;Y2J#rme>(0=W|pu_7-Dwu{DqQas!Nrh9a~1+KwB-sNvsEJOp7W7{$cP0 z$*d8$rcNNiUj!!@%#zC%h=0U)p^J%vL3wa*cYU&bh54jriV+i!!|%#k_^9^(J)ng2 z6~?X}T2DQn_x6|Pl?4~&!d@Ifmjwnbn<&WNh^7pB2x)yzAxd_@OLTub2^qdZ@i0?q zj0}8niR{5PkjXIch6MZ0d{PN?2WnSV1v(|@h}Xbx1qlq;4s5|$#OmZZ9^*fOWnU^z zl^vu3`fTue)1Jf?HXSM@uv9_6q1<77x<5Mh2O!r#!5AZ%30Rcb!!!7wpOwfJaxicf z;sE)gi_0kdT33om%|`4vGPnlt2l2o++$xt>V<|yqh%A91C;k!o3Vkta0&tBjbNFRY zpfCz(>QZN}?XdhT*4C@+7}`&b1l0#zuL*~?ocM31T4R*~&cGLYCt3&DA>y013Z>r0 zfxkI|YZmp8b?HQUXHSSBENmep65x5_zYzb^l2FF2ZGmbBp~FZQeSoEm3wU}C(@QC# zD~tcbNd_4}==Bs|raeA6YY`-XsU({~-G#Ae1iaKJqQdY$PhN#_JMSLzorey78XZ-9+v+&r+u#27I2qs4l7xjD=oPNR3CgDz z3SvtE2WX(&h>Nj#8mtq25OPf;sFoDN%h?h}H6eWP0)f$y$Q|jyQ}(pe3-W|lH6WNw zq`UaUsk*KqYA32S8ZS=>C1a(nAp<;N-)UXB3Yl0;ib=?uNV>D8P(fUeWMYwVM`_j| z5yh=5vr9|4{I^?8HcuyPOUDWqNFXu<^s?2U;DE+_$^rVP<9OX5Y?z%daZTt@0Q<$i zQf^LzM`^I{5TjbUvBEe4YGEgxwfpa{+dr#5$x@gOwU1KD! zu{xKn@%^#b-JVy5XB06L&ZJ(0oJv{FHQiQ(-0)xftjFVq9HV1YidrZ@rwObrTS(@i zmQgWXE5wvN9@mC{BurN!&p^h41__3IoeOa`X-6R;VoX%NaHWoth$`ozZ^6!MvQ8~t) z$L6$=scpNRq7GxM8~Or1)6}wb>&lWErN91fa!w>verEgIz&|5Y4*WlS_^wkcrjJj+ z#n;+72;DD{;WxL&$d-cm&&YEAp>F^}XVO(3o_v_mq@tg%APk&D?)KWbq~^jUf5HCD z2k3I;wywD3J8SOJ@#5pQJ6MgeFI}O%_DW(GqC?BH%90v5D)|)g-yh^Jh1C~hRG)=|yReeQEZg%}u`IQ4gP#HkS^he6epbiVG$tqeawnnQ^K z_Kc=IFuOONTs?5apu&hsFFZ~M2J#hftcM3T2^u8BciR(}0JKvT0)c{X&F$C*Dhx-- z%l$PyLC5t?%V)DI>%=v+8LW=eu4`%u>FnURspvqBTAj4Fqm}EvJn*$G+13hXkNu71 zk}vc?*|fEjIkcFN)pVw{JHZBs1+3uus|%ALD50X}5*nCh7uqcC_E9~5%=L#Cvgtl4 z(n9uz!NqFj-JbJJDfzx40>1E*r7brFQ7eFub3?jYX}T{HuGhwl?5rml7NSb~aLN<*=`lY?;heFh zjxo0B)*tAra`WBj)?hFJ5$C3L+oJKGY$HsvgQqD046NOYhJ#~T2Jhm(68|}Dq_wP{ z0R{$fy2`K)PQrgKcMnN}x~a`S9XieKQ!41X-%nf$!Ju)kyTwj$es7@~8S|%%TUU{U zv%*@C21!BE55F%!{;!cd)_hu*wZNrpo)!qnO?el%k_9Jnf~CrlEJ8`uaeNm87#{aI zcF;nd(mxsxi78xY&(SjEqT+S2>X?IquO<;3Se`_#lfrsWt)f(_`RW?BMyBPB72%A# zKa>TRYS?&#&T{*U6XC#3xWW5;mk~flnB4Tt;(FI^A@RTTmV91tiPrVn`p>7We=2ux zjQ;ws|N7luk8k~lE%o@;|M4Dvnd+&dD$*c%wIe!4`yUiYg-|!tRtH*ajY#bgatqfs z5}-B2bez~c$)k@zU*jjs)|ZHk$WTq$YbIqaZd>}7m?TLzAp^UyR zPQl8;0!F6Jn8alOu_~10a23XV9fcvEwntr)W+MpP!Q9A4WSWtKs1T%B<#vO^gIp;1 zUC4not6lp7ce#acIkW_2&&jOSEt{CcOzFl7_ml0A6c^s@x`x&rC6ih%Yh&UfRVNL| zPEQ1@e+%3(2-;<>8B~`GkjJXEQl+rsBtj(GzoQSjsw@mhp@XCuof*KUJN_$%w4Exn zhI%GLePm$E5JlNYfHLB;v21Ec14E*S416ONYEdwQytVNGf~5yPUiyMs%oY{Y3yc)g z6y7be&(1fyYic~hwc`7Z2y(mZH04r-Gf_ci1g7ecN4{f(G@E7HQ&>v4gToAtx^q1; zg0gW3cVviyB0QaM+-~Vd1!}p4;WGRm@800y8N(0k{KUDbz^`+R49ob6V#?rsFhU8| zUekLmk&bC{!x}DWLlqI);wqh)?EdY(M&NOg-M4nf<0UF`neaj)O4ZTi*=Eh~O`Ov6cs~BaTRfcg`(`#N&SI!FGWv<}7n0>t5+g60__v5$ zF3Wnp27w3f$u;6Z6n8!S*6>k zB2wMkQdX3g0)>1@moum%fsWagGlVrjVY_NjEIqc#bd9V2ODXn9*Z)g&2wNRB)*G9; zjfz@EJW+-fDUv(oyR-TYBnS#tMG&F*0d(%7PU)it-$AB|;w?igE$)zK1k}L~cJmHf z%gqxPMqAgd5$eVYwKc5PT&jZ7I{+LOJ_=nHxg%vQXSk&UUISSjq(X!pO7gD{2JReu zVuXv%mf=4P{~j~J&t2qHc}z?~IZ9pCo@4W`#=j@>61V`${$V`$mI=ZWik}o^%`x0? ze7-JqvlvH8J6+?HsJ!C8I5`wIel%qrmxliUVZ@l@_`{A^r8z^*T_Gr0ctB80CE5(X zBAl62;BUeHEVKg6k_Y&QL3|M3IB|}S4gbZ4LO4KzoGUeh27!NLu+>b7&B;ku^k4Te zx*bLh3Gm<_ncA@_I`Gc}zM31f&X{VZE443ynIF}O^;c5AHhZ-igtzePVvybSZ9;$JdIC+-xl z?cFTSICSdn-Ur?%{_SsY>cB*D&b#}7EwplC+_RVq{>zUG>b;yj(zUIG)O|NnOE#I1 z0TiFwm=)noK0zf{4#A`vq%Yr)LojJZL90bG@fT6FXD@zSxdDpEoI%zS2KrXT#DB#W z@9g?l-D@DHQ&Hw7cC4Vccw0=lR7G485-+;a@VtDoaL!cpu`#5REBj>vm2aCAA2T2r@S&r=> z{;M$x{P*C=c*}q1>y>q;f9wC)`v2xPzsWUy`O9DSf7(#0!ofq6MtQg<|RuG7qveW>#5;iBp zBIDH{y6jviqpu+jZ3l#r+VFTJ(};KN3kb4JFlG*rQ%dAENHGo0$l1L>VJ`C(>VQBJ zCk5Z&Y87TvGiDnEg(v;2@y}!(RDf&IMPh?Vw8Sz%1hRJz3v{E-G}zs$;Rm9cP=g>g zOb@M2IFIWeAy0)6lVSByAHddnQtvDtV#mKamEi`vHEzZ1$pAWJEt@DdF`1OBI}=K} zbcs&qPD-pWh}4}dvP}Oqf_KYq4mXk;+c45(?Zbk_Io@Th; z^yj-D6u66er$1<<;(8MK@IoAq)ubi-@4?6oy1iHM=}4oFTcH%9f0yDvuWx5ZKA1qS z^Y^%AGn3ClReVn^{0B(~2I+Bo47d(BHo{YLfI2OCPb(^cQ8m{_3VeB~?Qk8zFak)R$=a6i?l39|6&(!ftz@ztuz+jdXK67ZrJRW-QUJ*JQ@i0_3e zI!IEEY73%p{D~U>Un7vwVQPwx0pXCq4wDJ3o)Lx>mMt~_ zNDyU0yrzMfF*i|opr9v4ch{sEtCV@I?*3R{nt{AMvE@YY;hYSZJxKsX5NIqt5WC1; z9K(1_j30nfglqzZP2TI+)vu<|`vcVM9Jb>s@aRy7-Ilwts+ zlQ&C9aS#pM01Z9Dx~(9+)dU(5AZP9LjTXSdiRU zvt5)Tt2+~vR!Wm(SgkYh-(SqE8MA2GlHbz89Y%$JF3WW# z{6`?s6XvP=(h4It{BIWX4tOEXCrHZZzjB^w@s~c7TwhMV$+?aXI9VR;le)mDXNEhqh40e-K3y3v@qTAAH9D z5jxT!K?Vz_r`E=Z|Hxr#6eco5spdJpoPQ44zf5($Z$F`$-BIQ7qoewi#pdxVRPp$+ zR_7g?3WQGhXCdiHMhlS-h*8v#rq-b*Dq;WN+Pz%9T$4QeqjE_>ios-cj1N|96O_n& zUEkv~>Xt?^5-m=ms%KvV54@8|%fKiZBgX|w_Yfg0_0$yInGxL(@6e&33Y(k^n?EW*f*KFPOR!0v*JpvS@8nqYj9!q3JPQL-P(^JKl}y#lkqRu^aa0JtQMyG! zx(oaWHLr^Tmrix?vvY)?XJ!9C13`yT(TJ4>qp9cCkmTCdQkNKBRM?#}CF)8}wEJr6 zJ&l55P306q7RQWrGyIY~p>{$T@lIGUe3=+4d}Qntkj@$ITEagGxpp;VT?fmdKRqq_ z&>r*_mSFs3cnw6qh#bjUiC30t`-?%P&a=W$f)TQ&Dmz)ZD}-#1;u_Z6x8A|wImiDNF+W3bZ>HoL%5SUuAYpuK!noL$8o8uN(sF)$ohhy?E z?Ax-No*ahTW8xpwy!`vzEwEw;YX~G%mcX2gPoJWOswv9@86NIla@vl45Fl3S<+rKiD4RZ!{T=&P*)<4(a-}*nkC-th1>Uq-FzV@}+ z-#fnbPnA?|>|!0G;d~hZV0m8NfM0|Ga_=*&%rLxFgC0NxNev~OXZ1XM9;}2Kh+)9? z0F`dQ^RE)?FiK5>7S}B2aq=&bTG%<^%E}-WfkoCwx29AnAabixZ%Qg^RbyNb*59gQ z0080ba&1cs1p9t&-IA&A^KYhkHON%!hYXlBY|BxfC(NJ~Ym(7b2eg->)}Yk{wf_Q- z*tD+e_4%QY3RJr89HB%xK|pka6s##6WKQE>kwzida5b$lle-9=w2nlu%*p}@NKABB z)?%VS%0Seu2%g;h)JTftS!q6)Xf{NISMD4BBM1C<{JYvqPEgvDvd~p-AoG_BBh)O% zal#R>vDJ!AN78usnp@tMo!g4VKh%W+HK~T-75;X?Km51R*}EsXCnrmfH|1Ql2koY^ z+rVpIV@=`DdGEZxg<;W)YJXUwwci&L3CNb{Qkv4L5Uq^dJ8_5V(&xtI3S0*%Jf~K2 z*AdB=Ydch6`0v3TlaR=UhE7hE(#MkyuLB9V*-iA3ZDps-DHx}k zx;Ryw=P!|XkyEV$AC`6gK`HvKFGv?Nz*1|JHoxCaj#Z)-wl#!tq z8c$pQdHjUxal?PRk1Bq6D!u60zx6*B@##;0dMc|YP7-yymQNx)-V$l`_y zWfwRyJrN9oA)*l$q9A5cxCK#gJDmxdV+|ACIIV(qkvHjM*h=57+nkghboz7RUK^ZN z$77iVpyLe#2wrOCJ<3XEFpzxJqd#HpccMg0_& zOWPU6vOXx2Unhw3?h_m52x!77ah{bsPAQS6(*S? z{oWR1o8`_fbsMG#6`I@fwI#Z+?HeK<2)Krsg$?8#bRS+(=QgC(y`m1fVrE+R9h_qPx}OS^vd~MgB7#P$_HPC zU+}{m-N4`{3o)Y`Cj56+tb^^e6b~(ZNNGdZ&SlG!l=WVeeV#_X3`d8xZZWITMNBv@ zZRZ1;Pw{rdzGWVqIWPEUg5QOfk}a;RWlmSg1N^sU3-SMki=NlcXoZo=k(oBPw$5sc z)&m>0E?4NzKWDdn{g8tWi?l)$$7haQgkZP79vZbK;U>6{HUr=E7muTmbNdO^ z`+e;aeg5;GcLB=z;I(-0_`(;ykZ-;97H`7(=9_Ou&~>7514mPQUtDPmU6H&(i5Dv= zaj|s8YepjU+|cPdO;`Y$2v@K0HR7ls3UW*xls&19;ne|x*_NE!ac44sp<1ltVswZ_ zjWOBjV9$=9N-3fm1j#B7-#x589M%6itLRC@;`qdp{*)1zsF;A!w(EdkptTZEhT-QV z?)Hj8Vjbh!&?1>fUo>8n;bh3NPO8n*6$s3fG>Hm=Wa57*qSiP)Jcx`}*|+bZ8?%C6 z4GIohdp>x-j0u8SdNHu`Ie?tq2|;dQ$&vhIRkXQh-S=ESvFpwiGkfX9=+^)ic6&#I zGz%ppcZq@jM8m`3Tl5^Vg>9J_^E>;=?_7 zNoQR0=ng`K?2&BUGXfX@mOyF06Byy&xi*lT1UhTPZyDHNTscRknHz~;?SZxsUCZ(w z&CS~c_3k5dJvI^DfWi-b<-E--YZB&3<=!=o%s6x6pHV8K{qFeeww=j!!w#6dKg@_J zbF+${j#Jhgx%s?VAhbEPI_&p`pLlisoVVj2d@Gw`8{CsS=Z1``-61Fx&oK@1u$*Pf2Rodv+49ry3Op zj7jgXMMslzm=+M&EXNEdQ9t$sqt%>wbzj7W5%`D-bdIzf8FyEBcDld{Yqb_^{28P0gAQ?kp~DQ z%w_JS>oIqiyQnRRf6_f{1L8jpxLJ1t0zppb(1Hn;-2Pyb<2-HoBpl3-UADvZ(BzU7 z007!-NJk*R1(IbduEL3qE-NBSvUf56r&4#FRh0RH2$s2HrtoMf&K2!~S&1EI*5J5g z2W-j%eNFtga*944K0nsU;9%V~@ekG#GcSgNtyQIgI&nU9Jw&}PXVUe& z3GI6pjc6MLoR&8U)q>dsIN<+WdEZTZC&)5~n1KV7N|1hdXSF_r7z2YkKf{^#TLr|06oy8&S6L)BFu(aqv?VJ%M_q# z_``M(zb^Q<=#E$gPY14xaS%;;~F~DI|2TEFqw>8NzmQf0U8?uBQuzcrc7bo^dXOE{7U$Rt{ z6U#b<6>10>IfxFLV)Zvk=HY{%=hmfB&{>~`O^)D$0MwyrMew#^A_a0VECJ!ntub9x z8EvSkI{*oS(HaPX?1EwY$H-ZKS2j6#r&2u}e_yghOfy!wZOac)_cN)pBg&@6zEIWA28F4{r)&u-o zh??CL5lTgkAL^(v3)NGb+aazbl2iid+Bq2xj!%b8!|`-JU%MzpPD)cEmq&h;$my}? zRr0Uh9ep3HASw!knjN{BD|kFqEK06-eU2Ok|CAV3@1&3$row}Z;DVXVEd5fY?9^ge zX`~v=WJ*PZWdO&Kj{k5AF}!W@{{j93^t5}W7dqmS?wOd45(^xTLe6#V4E#p~cOt;R zz^t)&=CmO>>8kVNTmQJ>e{3*w5Z&y}^Uqhm`qgvmKjPuQ9BY`%64JF@d0#%*>=hQ6 z_b%7UP0EM9B!h_hh#Q=ZEeFPJetiIn87jJMhzk_PMY99~ z8|P&JP;hjB2pDFl<}4l&)_~iTy!s13R@T;rPw0npHRX`&%C7^6(V6MA!<#qqv#w6p z-7gXs>4t)9D7k5|8AKX&MobEQyX@P;4z%P~Y7?T8QmmIr^Cj1j!N{2Tc+$e&#pM;8-T=rHewe#<*A?Od4;iVUi;#6u5Qs@aPKX&s&zs&wK> z@CwXR);Y?kXYe2DYIYlPJnZGjlg>Jf8Tg~Y^vq$|GU8k0Y;b zjYz%_+#{afl7vrXn5v-&p4wleDC@@bzcg3KJ?`J+{OCTcOAbVu7wp)amRN)mx+3V= z9cw)p;=#2{7?0cglm(AoX^Fs==GOa`X;p`LG0Rfr#v$flxhE3-oRwWvj;>GI8Y{>< zfr=m9lSOTAHe>zZHpg&!({YV+EU8ayIU29vxMlke5v49t14MHXH?`XYt_=2Sf1?gq z4E2kcSyM|?41Vz33h6&>P3rWQ1@%B~pP^9X1jQMNxzpINLBhaI{INY!>s?91e*I8) z;?pk|;F8%1&EclOu?Ab>X$wf*rTh6fa^U}Xaldd8KQmAW|LgDUR>FjN%~#WcA9%}Z z-Q^5=KK?eNjqO`-PsIcL!L=S_Bf15(zq--gX%6b6+=+^|&xeH-dYyram>a2Hz=7$jcd;+UR|mF~La*eo zn0Xc@N6b*8N3ww?cd^H8aaCU*dO9#t@Gel1z$aG?Jvz?L_ZgE6|Hws5Rnb=prNl|( zP3wCW%cav+)~h5aF;_MIxf13^T>Z`PKXlbD54SbQ0J&KqT57*iEKjB_9Q0}Hzv6u! z55M(qH~i=0V;}oiee|Or4Jf3j1ck~$C;=Pk&mJIfc9jPCa+2-L|Yz#`I&oLUIiK+9gtl<=ysU}u3&Fi5x< ztG0;U$}riO{}{M4W0JEc-0Qd;=LFc*0j23Szr{I>F4}%89a|o(6-N?O*`d1I*N$U^TT7biZezsO<&4oig?VYr*zjNSW#CPFc=yaPj--NP+j4m% zUMoTE-N>e=>TU@7=MMn^C{%8$ND!5@#!M9{8`Y7{?*yJ57al ziCcwtyIUMbUz0m8e_3f$NB;m@dh8<4&dY|*xzsxp{!QlW1`j)*HS`#kH01oe$I0?b zoRx32LRNc^YOR_4gyA2#WDY7yzPIpiK9;US@{cQC$y!f?0*qK459v;LiZ0$5jxYHM ze1IJQHjsHBxyju6oc~rVGOEVP&U;PEZ&WWzwc+O>W+l$$+{N#;q-b?6I$9Ye+HD%I za+zBS^dYw|y~_5r;lFiIQCG!n`2`f5`NG%8W1e>M%g?sI*N*COvsF7FKlQ0kollOt z0KEP7+f+cfE^?ZwK`;d67jk@ca2m(s4yGoMTGdiSC#+`t75E(_X$!~*ZAol_psAuy zYfew>u}z~-js{+X=SER48BBtDZ8xivNWRqx_i3y#)=1dgK^pHN9>y-kbh@xsEt8NO z1dvRWV|2!(mO>(OzP!7inxU#?U;-GPKX;(Unyj$5bVy@o|ki+c-)la^az^=Q@yT(}wok~Q3RonfMAOeRFr zzt}zNtxvkc!kTnu_75JMV5F630|K3JHQ8Okpc$nW-802zjE`z;@_J|SyiY&=P6`zN~C;nM8d8lc- zXFkSkM6j5q4pVn`Tk#-j%og&vxTvAD?%MEQ86HPMW(L3;FSRev&2h&2l>Qg~i=*`7 z>F3-ji5bgWg4B{?Q*lKn$~ooLhwb8w`p6d0b+kcC>|Z5LOL|6Hw^~qYSQsanK7^b0 z|NEWu-EO!0agFNn_{KNB5x?|HzjWlFbMbNgGF86*`s?S1pZ)A-cPNgC_~`90!opR& z1pkA8n)pxksjg*KIs2os$*@6$@Y?4H0ewI@g^?@5D$_u9)7x>ykZ^UF9+h}K|Kg{? zNClRXo=F&gO(sS{NuxrDUO#g0Svtb-_S^rX01KgM4FtHXX5)4GKk{CHjvXICr;!VsRb{_l`88dI5A!y1+~F(#T6at z@TxC+2qiDINwVP|zSN!Zl@QWE2R#_<@gF3O5i(YI9P-Typ#9j2nEIf{c3^%Y@9;lmo27-HTW(u4}lSwQxm#NSg@W9zUqbStWa z3OgprH36=V7<7pCVX8=Pf6Wd515S9WVhdR9m%2+qJ5-He(z5l;sAydm(r?knrf%9- z*ZRt)dKkw>{^0oU!#9eKFk+%yNUT7V33slMo=TSTC8*`ec)dCJ76|xuhYFCT%umkX z0Dizax3aVsBZ0_uNymW02}8SR@`JMM4)K&Kt{BD3i2s~FW;17t|N1=lr4?6JQ_QjQ znl6Vf)|&5-;64bZdM!ygQ}|dPZ6Tn>TEZ7waA}t%;%9&MXU|uE_=kU(_O1W?+Sk4o zPdRACT+aM5)tA5g<@19te({U(;>C;l^rt_447ANH9ay0wh4+6ub#HsvB3X5g1bse; zlT9B0hcaEJG0h5?B;@3ZM$2)!$*?6Y4(4=6)jY^Ls&^*s;BtxG}ovJH|9*N`C*sdOW6Uo;ICK+lH=-lumCwb85 zu$staT~H;U9lJAG$Y$d|)H8QEb6o$m(ueLchBKiH%2PA^n!%ieu;E{FhV#rA+T)?L zSVN=0|55@eRyjr?cn8n3-6MMs|2Dhjm4_n-6jK)~xJp+30leitg5f_m{CDnFO0Ieh z3k1W$TRBd zNF^df9e63jwNP-9-<4oD4!?1@{y#C#5hX!tqG%P^<6QPFyLUYyGK97<0WY zisb`3C~^m4`;sMZsX5y>EXQFlOvSn8A^wYN>DmcZQ%og^EH(2r{-1OJMU@<<|9j-#K4@{No=VF({Z&C}3t+BW#eQ8!Y^nSi-7>AXiDQ=O!@?W}3(;2ArB~1y40JerGanUWDO)PG@QYq>X0uiK zBFS=6+ak$`5s_B_3@2)05!+U#FBV|3TdyG2wZpzGbtYww|CS&6uvsIj=-lmKevCDQonjz8q0qz>Bzam+K4o8AA%RnZmapQ{8B_8` z&&^#&F?1K;4EZ?|zV_t;iI%|7I(34zIJ?Cw6cC)#K`qiO>^M2g@`@&WUYixx?Ov0+s(ReLAd+h0g8%iN*|5T6n+A?@EfLeT zeA^0M?;6)E0s`v-e*8<#M&qrQ#=ninoVou)T0!WGd8yITMqsyL^87RS=c{f)dEsWc z2X$0d%yIm*_@9F4y|@1H%T&h$KcV`GPkiFS4ab9t>Qj^rpk5^(Oy?f5vN;w@odMC#Ki}=@jogAKDbWmh#2TI$*>W&S#Jgvf+ z(q_}n8iN6^LS3Vh_sBQQY)BT*$!db5li8k)A!wnrRaLcr_ont_Xn@2MH{0sM5z;7= zkBE$&p!+Z*2NnppCC1VmtdR_M+O|o^)>~c_x1b~kdoUo8lQwyDF^>4EliwLwE6Rdq z?>^5#A+rV#MV?{bdrl!*$y|5){!Mup>_d{uutL`dYIn?jZeO#2qSumD`6bsGo4>Yd zYbW0<6fG-2!q=CAiUA@hUYVUGOcDRbQt#)5b{2Pf9N<5PQp3zTA4*%2bNgwFX&sYCy5y4Qp@1ZHnhF!q{$5Q3$M#-$1Z8{G)iYWRG(Z|KgOv>`{aT$4HWC`wj5F zy0Gmv&im{CK-30(Tsz)GOWZEK0*&<$5#{A}v!q=gips0;A4))40V^+CmKwWPkgenY z-QzzRKcZ)53lXwmJs^NH{->eR2=tZku1a^c9yWK$S_{HI zWbKKgb!Fd317fGWl>~42&xiOA>qz^LQXrDw6&lWix+$YPWX83L|I(rn|LvEwBTXy5 z<*1Wdp2j~EY*9IW^75^39dAG7mFFqH@C(0y+f&t7zxvhva@6zj@b*;43`a-xI2K=~ zIv&Tj{$JkT`_>S*l_Sfd>Kb-<2%65)v%{rnC4vF8I(wBb(RStEy0J$ByRuF0$yRi#)1no0g+Njb&vPB@ zc0tC7EiORe1Z2z(!#G1ZB;Y1J#tN1e*W`9udo1-5OCe}fD`1Vparst7jKr?ZcqiVX zcMybs&y^uF|HAPs#082y*sOH?!2ddi_CP`1-Jfb1V(_yPY}~NF-(4MOcVMi8`z#|Bc_es_!_)_ywxp5&T$TN z*G^ANMX_r?=7|mernhI3=9P#Qt~sx?7~)6u5NoYTDy%(B0?2B+uD}fNHpzE`$mk==8X?Wb7%@+oQ zGIOy~wI!uh{QFYqk12T;gqO8Z-8RqYS5$gHjawp)fh@n~4zf6KySGw99w!#xBi}&T zK!(#+*tr=pX^t}>Nc37zps;=`Y^4~XV)|1vHz&m5b0Uz3o+IF%hxD=%TTgg9jX>H* z(UDhjaUOAN3;DHWsnh1%P`=T#b;C_rxa6!bm&EV?kU@gIwaJcFQa{v{d?ZJ}ZN|qM zbOFA6ZbFLjaJhVVH@t@r1#4@C*!vlyRb~tl_*a5YvjeB`OpI&6m>l%t5www*Ek(B6QR0;fk3Z2Sq-XP5 zRZP^j9LXHkNh_?y2H)<0TJnm!CzD3wDFJMK8KWzcVfcr6`)+?_92LMW6Q^?D3Q$Kr z1AH#WByCYDVzflEf8HxF$?@VQ;)0(a&u`ZJP{8*BNb@p283n&{4qf73#R z`?%u&T$?AUmmGr&<;${9yFe?&oK0sel$d;%8b9#>|E8C;;%c1Go`SVpnk+r0cBI+( z@5SEghwr}eJ24;Ur|-S@-j091_C&S5^rbKHgQKJR=}&)p40PO{>YexA`dh9L1|lQX zH3N#y@g6R`4Ob^C*Y;8`)#9F-Cq)EIPQ%U(3(f<=Njf+xoO^k47jkTNup)M_-Jj z029UuVU2)_VPhOqgL6ZB{stJt-NAGJXyY+*J38s73lxf=3UQXmuwAfZDd=7a1hBd| zpq0xXJV<@R?;Ms_AV}Y~5~-X18Ne!aJwH{-d-=%{}2i(eeG;>%Q@_{1m3obSE+<8L*bqxoX)bsa+$zf1Lv;2i!(H#%LCGYTj0dbS(4XV1-ARz z{;8;x`!!*s-JTxi$;yogOHQ&qADyr2<5v=#Br+$yWRe{m*Vj%LYNgV1lPOjB7HGOH zqfaajplx%ez0q9S9RX<10yj_WSNC9_b?Ldkh)#S^`w zGh_mdGB`nI3_8#cjspIpJ5!~bZPD5sFWGrkyAlj#T`tIHx~Aac&4Txe|FV5~`R(1s z<@(B+7j1CST*8rbjd()G8A?nbV#Uru;7%AP{INQW;utKt3m-GYqc0!XY2Da6VLkBA zv2BdvFAJQ$b;}F>!T;?jrVA?>f&Y|GO#I`L6{0X^9D|=OhC>&vzyQHLxYm^nBm6@! zB|H7rpk3&iQ^$0lu9HgbTtt(FN5Jud{!!>EVS5(;!gg6hVVzubftm6|jriX&Dz1-h z(Fjxw#ykEop2;?Ihc3Ermi~+DFZe&ShaV@fBD2`Y0qXZWsiPO)NXFXZYgB*X@BTN= zX6N<0PZag?7}uzN!>2VXA)P%g>z2!UZ4`y$ke zk<8`0Xlp&O+GtQ>!GqAHopZj9gh))$Sz(9DgHmgH72uA z>OD`MT}Lz(0XSV=x${j&Op=V?7d6%jU5D1zAGa`M>+>dxc zQhk1w=w6&U2B+zo^al@iIhYuPY(auAD>~?lMKxw=>(j{rI;zdDD~SIr$RBcovPvJt zT;_)OGSx4k9$;ZjUp;7db{zkbF(&>oG-O}~82cQMC-zRWfBB8U5q)2ZZul=GoWe_w zPW3>9wUTMmil!_Y1v8~t^agsR-(3dcAz4zftGK1tMNWjO)%1ovnYlU3w+CDk3k5GLx+m{_pyh zBy>LrRG6R4hlC^$b64C!Qr(|rF&2jI*E$loT_F|jl6bEy!DaU17=hpOru5;|I%#s9 z7hY`O6!2EBgM<>@rKTUt$$;WCfoJ?5yuWzO>Y#=H^aGhhl3{QStn+{KXiNn%CfM9L zvdJQIjSa^z{RN^wbgksMkuE`n|Akpsgb}jwrany;7BrMTb1r)K<&XYqJb2(+|G)H0 zzf_MtzkHeMt6%-<`S)q-KW*#3mlE+Wed{m%MuZb#XY->_(?eVF0yw&-8T=bFL<4B; zK|K$WpoHdv1i*7`O9eqLLqWR@YgJ&>08m)8tcXbvO~P=j+>!5w#a|{iDKfTh2+9o? z2ZLtJh*2#o$P^VL2~d8WZlg;w0a9GzRfn(ElRF?tg{4>{z2wz%NG2tT!~ps$xi6}< zw6$6=Pxm0M)zM7(8zO@+M*!MsIYuXkzzucvq`TPcA}{42tXLT`HEEKKwT6IuufeL) z&+%YB4WHGT{v_2U8n>uaYzC^HPu=WScS*FEwe| zxgG|qkWzMIu{)(Mp^^z-b3Z%RbmNz3Sj_c_nHN7Y{8vO+qB1HaOQg~QahTCEAFV;_ z&KoGp@L#zBX}wrK1xjU?t#3s+CHoaMGM!4pe}xL#;m}y(t>jg)n>Mlb>~YszV+e{} zTXMW?mYx1252!AH#1Gaf%w2)oBmj^FL;ZT3?TAniD4h0)vHOAaB-$SnUp(9Vx%pvA z#ne(^PIW+!N&?3vEI3hWk`E>c$ncMl1A=B=v384K|6Jc)2dPo-jGKye z1=(k!&xAJ;P5E@G`Df_i7Tda^oUJjoy}!bm3Z?3STlMfK!zJm=@E?h$m;|diPXW@U zx+2%o_(K)wv=IN((CF@LKDh7>uI$%8xxe|he&%O><~+b|PsQ_&8~#6fjB8Xws7XBU zZ~dR29pC!@^}qI&Z@u^4Pkt9$fngO0E1Qr}l5Hdbr=9j(bSJH*hnl2pk;;Nd>i=2$ zqROmb<`Za0jA?~0tAyOgk}M{UA5(jvQBvBibCU}g>4L72)rqi2TsaE#tLiI}!x*%K zHhJzbs4FfNFLcz)Z2sx(tm2?SrDk$;tIP7vzR#F zzrkNlvawDe8%6HYYr$21Oi{1xAx(-c5l9BfiR-G2PH|MC0kDy#byB%jCMwOecN4az zLZcIVCe?u>6?`(hw9j#ED~VN#unudoRzep7BH;buQ^NiFds{)eF>f>6M1*ZHe9}o_ zlE*q!CW0t<;@-RgF)s;f+iqK1A(&2k@t@;g%L4u@ZJg#>D~3IBFC1qN+%LMlhI~vTKU#C2vhzg9NQ8t56Wf8m>Mc{<>5obD0Bh3;-ox>{`im9{$BgBtF7F#72hUKe}P!Yv|lY`psUCIYJD6&I?qu z*2u6DI7>#V5cw?iG?%&j9UqECiL1wSS0N5eV=E>LIn3Df(&{^-c-P7bElzcf^+*ZTsDYq~fg~wCyWqG_b z{G-@|rznaU-O&wu{&=ZmLZ{b7US@!ajH&ZQpLsP?!1 zPdpr7ruxW7K9b*m``iC#X6G&ZnKaxN?ndro+Y~W)H1}!o4Fw$y!UMySAJf*F`IZ|WB?+YnN=cl0LSMqp8IMRV zoC#lA@eR(fte{l@yXI(G_f|CrTJzn}9h{f@o9~g6l9$q^C@PhZ0^TjJCtIOnVJJQ! zuinj-747)1E53UT6aOGek8?N$p8~(ey`c|b0!y|oLk->wY@wroViMQ(k}eHH%WiEa zPSLojt>DYp0@!(W$N!TBnMWA!l|h7s^rjcXnONOpV%w>GGiLk`LuyVc*IkG1%z&Yt zLT46sV-phi-}o*W{|mrMbafQ_tZQ|rmnvruE>^u?x zg>GcY5!w%v)mC0HV2Q**gg2rT#y#J-D}uD4k$`&!0bNzYbm+{LleIg!A!vq?k&If* zYwvCn%@8M=dT4FOin3d-C_5dIrooKh!F0ceOJnaQ zjxHv8^gFG~DXr{l*SRN;0#)%4OWbbb@`9KiJFPPVnys`2g)nAUk+JCWoCHY$JHhm1 zMI$ea#w49M>srhVB!aM0rTajit>%}41JQO(Ude^39hego&KIqq8-jMKIC5dL!tl@Q38{$YIC_8W zq>mIs-HldT2O;VUHjBC>Gz@;0SW$U3yGrf{ykmPZJ%@r@IAMW7vw~Z>IC`n1z|&Kq zy=I=g_=}Z(Um(PnhR{BgZJZ=l@WswJD<79p+R}UXAgM@)tsD>13p4l0&+`?R)d|#~ z0McG(BP3z?UN{MgjjFSrGN0#V9}+`N99weB61)x*?h|Qv3KWu(pKX4lH<`sjWGQue${m=@}ei@Yj z14l+!lCk`whd4P&#KZ|aNHa3_ZCO>l70B6xR{?_FrCO{P*7+I8E9A+MBCHgJq>aq; zOV`_k!+psgRzF@I8Q%3>XU*-Iadf#eYYnY_${iQ7#vgsTfm%xXyI5Q*49j2;Oe?t6 zaQ-ksZ}~KzE)sD7*0%h^9dBJ~-`J$80m8Ic>KRp5YAx7~iL)z?Eu5ilxIn*P2WeYq z6v&9vW2_8I6ewH2QM}!)Lx`?Z-vS%xu{%A90 z>`urjYt#xNfaact<^34HM$p@t?2+ z?-zK!KEBS1y~;K)LN9m>b*E+U*lJ}Qpw8CfkmuPBh92qoxjZtMFtwth;@UbDKh#FE zPz~spd9n`}jMPbLfT*p?g~_|g-`Z>`Awa4qTY>$K3xq0ktEIFZ+JydX;PrWb&A55B zHvBirg#Qi+!2c@jGEK(wwpY6W8eAm`Gt-5$UZrAEFhv8e`y=gc1GEQrYWwxVkzEQC z3MrCN7Y3@8dwIauC;n-3l8QJkMx1C$o`btw^?2UeD`Db48q}1z##(s3+t%<8!s`@p z@n}SN{11-hjhYSr(G4;Cfd;o#g8U0yy_!2EKSF3B{-cXiCFE6HLeO8V22I9gQwSok z7IIZ^Qr;IEYv|0&;VTctt$;e74}C@u@)KE3#RKm3iqbbQv=sGdi5NA>(p z)bZXg{n9VR>#x6le6c?~SGj!azrReyrG5YV->*-6;uG=KTW|TH^?Tp{?Z0Fw4nK(p zodT1Hma0(QiFn!GLERB##)zR7#R%wsMG;Xb25(~TL?9y&v=<|HCBZJH0Vg8n^(e-# zSu|6J2uu7@71z*4^%C_BRDux!7wak8riZH*&=j`QY4r z{Kpms{dO>~5`gSzbeqzdrnTkQ;Q}BX^a`%kNrTSx;vm`ueVpoF1i6buE@a(dgBfu4 zIBAU8A>*o>3HU^m$iNl~;?@hc&HN!z_3*ig+;eLj~%GK)+kF0D~s zFT$EOK{+tD#)y-7GuXh3jgj6&cIf7iHRaw zq+>YSYwePrC1d8+onulRk&gmiJX#DN?Vs=z=|zZvi=?{LxE6T$Uog%=zm*ZXF8d+= zF{5Fjy;8pjR1$7mP9jF!!D74~4_g@2dH8aA(URNn-&_~sdR>p-x)T1AoDAoxUYB!( z3PJOm$a#A^P+YlCRIA}XdfJ=WU&9>DfmCdcRz?Kkq&&DlaIReoViD$NWGVAy4iuZr z6%X(a-_jUGg!VDeau$E}On|jrq~Nu&?thQ*-&`jAOR(_NLob`0*KD3kVW3gzV@~A_0cr78LwOaU;5IQ=vKFEiUu(xz;7D-H(Kv?Q9UTRd2ss8OIi0htOW*HD zM9d4BI-n$DH>)6i%mgzAuuRe%zb{@}UO59~Qr14ODBMa0JK4aSWNQ-Hj(LfCrhWxxCYW+H9s^mm`NakTQBAEl3qf zA^%#oznSAzPhLb|>m}7>G{`T892@8nppCS{6A&^le5pi!3j((eqcvH46i&TP z{?OxoSCsl!Usrw5POvdIBBvtMgoa%ErNdpzr;pa){mHK8R@VdB_>m%u4Kp*uy(>V~Xf6)Yy+YsE3;eK z+!%CZolCyWZW8p0%VTTUnneM`zo{%3|ABvNGH9|gs78pNL-=n&iC3;UH~cI9V?^!% zWSFFDl{zqX`%L9!#I}of&U@b)I?x#s*HBn1UzQ zLY}u(9S__d^;duOSDQiCm6ZYyQw>Onea_DjI>-U-o_!|@G zY(U*?&2im^T3ZKcfa$KtN<~1*qxOgx9NxHw)5i!DSpQTlwmH*)RGsf!=1az;YeQ(r zRdfTe>5u~-o?CqDNmtZmGLECm^@VCXZDFYy*IZ3x-VsJJsHkIREMvs;lN+yzT<`gn z0AWFar?+dbS7V*AmGJ;**>#IXo)MAP#KLqMuze-2&;vOVuPf8Sk(R@Os6`2$Q5a;> zAi1wK{FjYxN5KK#E95GUf8@MHuIe-)dh0o`tH?Nsj_RZxONk8si9i=#jb}WI|I*rB zrw#NGcqLD*}Megfo zlGO+ zCw;&`>P$Sa+l>W zHr}#J%6L@Oj{l&a_&Gs{j#tnw;yQ`4V?bJYDyL{xaHx@7Rt#$Vqu}WdJ%dd>i+@0= zHEn(n1C`Om9>*)c97CSELfpMCuUZ4^Cxc_de^_k4$d==n2e}5-UdRJwgX8(j`%ixN zpZKl+>_3ZDJ~cc!Pv2GQJo^h@_`-2})Rn4j)hH9ycG7bIzn9gq^&jTuN89!zANj~R z@c-if@t^$5Kl;fJ{yIK%oNzH|OI;wHhU!#nP+>2cV~yv_X}s&%2~~)Qwrxk+SaQ$^ z2*R@8Jje926b6ptP=>I|%9+@~a!hvMj5sGzB`u;_22Yhba7m)NIUVai?;)uB@i`H6 z62$io;v(qJq1R8nfmAlqp;$Byf};YEEpv=e0&gYMp`zJ953ypo{M<9kU7R)!BgGnF#LN!@-FA{?HloLff0hG z&&9a~^W3-3hfA8SYT&=8F{7mJIoU&jaZm**@npB~@%qksNShtz-EJ?i}Q z_{G!Xu2T4x|A#;P;Tlt!0=%PITM~O5bpM54_=WvM4)Bwo{G|TI@BEcNi)yS@vwPdd z1Rx6|64MQoV^!4BS>|*yBQm@v@RupI5?S67F*}FAwu)pzA~6CqK&-bGx!WPcLbn7s z%krd=H-MPO9AW-jeNAI=ZOb)MgdNmi+b!0O#EZ-qBiQM=UHd93O#JiYIW^H3|HTW{#-tbkG-)Os2N;#xP9-QmWP zE*YXQe^)CcCy|R&Llb7*?0U0#xyuUL>RgK0QmZa)%ETk`@Ocq<5=14fWZHV9izU<| zZun?0ISwr+C6N{osKgUP;q6fHNu8Bjm&gO6?;QA++~OBXVF7Tb^p2QaRLd!z!UG$3LK)-PLjY2X_;2xkAOfo|AP+1n=n; zGW{5b&lSOCyP&O)OmEn+d_DUEI?C2Jrc2A);A7TV!s%VQRT=5gKt{Grot{MmyWA#R z=bXIN9U#Xl~$z9PTeWsql ze=QjXD5ZE?NoAUGNfFDA<9_Bd8A+@%C68ni_T=d9J9}J6dn-o~y9NsuXc@@WvK8fg zGe{I1ME=%vOLvlZkN>Tjq90T-*!EaU!-AFYA4WtHygy0+K<5SZKKyOy2*IRkG%L`- z!kRV7)bU!L5W~d00uCT%j}oqk3xj) z7p}QyhkREb#^Auf1<`Gic{nN@*P!YYWyIqwEqa z2Yy(RwlEM=j|d*?;8bp783Rl02us{?o#UE+qf06(i%jN8NMGm7s`)tJ{9%hqEUfmf z7VPBuEyJZHse`B+C=3}~ZR;y1hF7}M{vs-Jn~`FWAe0wM9kD4-)?l#m#Ngfq`rR63 z;2mvJOlJwH{FvpALIw7>Xu(43ayo^@`ssUv104T;q7j$|OC{l@bEBICov&2uZJm4% zbV37{QE=Ey;c`n-rSHlqYZr`$0j#b<1g~?7$|Nus0IE5^@tn}cBincz z{>zGm#z`$NQ@K#vI;B6ue}Ru6ry^RF@s06W%a5lZI2JHzu{3<$CPtL;r@;X$05Mo5 zKQsuu9#3xxTgYj94LCe5vfz9a2c<3Ltyp=+Fjz=5<0enY4IkxsPM=q-NaE6A4JXQ_ z+DLJIhJ6_m++Qm4dx7V;@79lh@2kJ_Xa4M1dXN9ZAO0{dYU$5jfBp4(wATIgt^dC0 z=P#ZT)z_X{w6A^aV;_6%t+(F#(9?S#dfNW~&{M+t+SBvbKJ=jvz4lN17k~H9e(b|P z{~xM-`!#X^3c*UIHLO)wAnR(EZG9NNULihw89}c{u5t1C!{KsWWLN8@s@jf=0f|1v^P}hCEWmHt%`#%h#fGDCMAQA&gNK5x1p`;+)prmwn45c6- z9ZC%;(%mtDz(}_=Lw5}|15^LGzrW}8bM`uG=FM5_oV~AWpR=$1iR`44U7ml7KpXK6L!7c^#nIu~)Tdo)- zU=Y(2l#hwhB|LY)kzw-d%=^qEaSfzw*InOnlD|>z{@))bJG(`@E}O$OAx~s%st0YP zVB__N;ig&7Xr8#XS-p5$z%=7`tIBr$fMz6ZjE{jNC0`Uujd!_nJ+Jm6^Y{<9DF73K z{RwKeW_0U^xU;+6#hiQzKP)#`S2yAL_zJRV@h*KX_Blz3Ia#U~e>$2vcbhM1%Eh~q zS)OsSFRjBVl%-t4Jo`f?C-VIbYe~98*qON5$pSq#VbHaV)pCGU<-HkK>R+<;wn?cO z50ngM?I%*!GQ)ipzGv~HOoGs^c*Nl|ZzHqdkH{x;NRa=-Tyn{4?^KdaCm&-?IHf_yHfpyKBlVwO^_e>!>>{Ux#(d$gpU3|lF~ntiWSE(CSbeg#50 zT43>)p69>-{$^9&FQ3i-1NG<-H)|&BV*h_P{BEB~Qzi8cE%vxQPbzl85ewo48PYrAN0==@bx12VfSZdbH4estO z2C1;*O7)XPX|L@O&@lb{xtJI4JeZYDUu?CHW zOatnSae+kqQ01fK(|d+GCW8I4g|u?t#cm(`Q%R`((Sga*pW2A4pF+>Uof>-bO2wnR zKAxL9Ay07xIN=61QW?Qy4j~8T!^c>K+&6Twr$)Pv1OmUW_)n?kC0`H<BBz#&Y-=U{)4sQo+<_}mcv<2io&(Qk9^9G%<7E^R;%A69(P#3ubK%OF8 zkoOAXT74SLr&G$(46BZk4;J9Aj|bh*CB^Ql+D{zG@Vbn=)KbQ(ZoV@`h1}_fT=MPw zgf8#moZhbx=PVXKB5d^d#;(8-%kqeGly0VT18>LSc}%xh`d(GRuWEc!kG;QA>#e0d ziu1`!mHtp2S_+^8`p-N)mY?ESl_d4SnxXom1n2k4eIUDMvBrWc2DTj|B-3I>TN_tN zMLv?30}0q!&;h3k<`BvOWh>AGokBIx|1G8+ zH?V8gwZOZgFvH$>`7+0!R?THQM;LRqM>C@Oy$MVFjMAuA#(FXVV6TF;xVxEyF#p(s z=Q@6Z{C8^l?^@Z&spM__SZ)oqPBf^qvY>=1}gvw~l}J z_HMGS$}ZRRrpL{M{|R}nf<`&?`ab*Cv1z|s&P&=SPrY5*gJO!X-ur-A$mPEwrqJGRua?&0Zpaaa$28mA)s3Y%bD533#<_CDa*I2 zG&KKgOUxDE$&wzf7f1=DITxAW(ZkgE0wD}vuKevR?ylGvB{R3~7E|9(;vV;pJ3rqe-{W+IAEiAfb2ZVaj#MICj53+7>#<&qyh-Kvmt%|vIh^D| zaD~;lXpbmT zE*`{h-q8X&PXV(UyyW&FjE7iYjxA8v7B`ikOGt1+hO4|Hk@vbtPilPEGlWxw<(W}r z6LCgi^@Z4InJ zYADW?@l(omhlG&f94%*0rDGqimv5Jl(^vtfyT$&zztYv!6&)!3@lEdVL*17F zC>Jr-WH(oRn&m;)j4|mBD4$0RDsqxgLr>aGL}`;r+3C&qLrSNJgZ7#(-TRg;Wlk$G z8)WcFSYg--IgDm6(y=V~tmgh=yoy`Egk-cIX)7}>kB3Q9-e~(xZ zzFWsDLugwH_#rWt+L;6EU+M2jWj}*7q`T+8_)1hQC)PHCi$pCHOy`$RP~_SJ7n7}5 z6i6jblvwM0_t1WzW+Q30GLj?QoxIhBHhAZ7nBvF0xShNtRCb$<=0~=sjTcqp9KeRL zclpdU;qH6ezXH{6>ahU7;8oG2LN`V|{kyj?EDz5*E6{ZKeC{XhOd%x4i2@S-AzEe2 zeKcHmmdbnMcYE4Q{csIcXjJsYH#g!?!W2XpPQW%GwD|CrC9FNBg5n!$Bn93n_#zC$SjL-ZS8Y2Y0iObqv9y|^F9S?QZ z`NaU$z@GR*0@3V;og5Iz#h4U7I9X3qdmIF~orpTYl|XJ}aZ8{R3*;$!ZZ-Hc$2IE7 zd#^^H)fa3>i=P5^NqPU4-adc+JbW1v==huQ&LOpx#W^&TRgg;C`h`js-# zeYty1ZOqdK&qG>i%zRf+4}TTShWadbbh zM@LD{R~g!<-mjvXE2|q`gadNJ?*%_m^ROs<@m8;h$L-rNh5!eB<2$g;!>orim}+MJ znBm_@_}u%&;=`540HkIx;_XVc6Q|<_;BY*>FRo_b;W{McuB7UfBm0y$=Z7s?iC*w# zT0k2Md2RU0pCVbZcGs5`+r+U0IKL8piKV9NrGq%Ywu$1Qpbn&}d9+;7|AC<$T6}i0 zS(#gaAU%6vIu3Wtpuokd=KQkNDPAP&;K@*o((G?7vOkkS)IvmVub0VF=SM$(PdDCx zpM9E{t$U4aMpUS>ZOHLZ*0YS1!Px_Uo0zG44L0^WO4DFb#a2Gj(%AOX7c>IDfo!F+ z=nUL4_-51sTcS`VD}pZ?gSMjh6_;QeKD zNBmtMt~Tt$pciwwkv+S+5YX8vsv6ghn*pPRa7f4MU}XLHdstE}ah@uiGE~XsNq+3n zTz*SMp`mqQW*Fi{E9VqgLa*jymD-v|pFz!1p(01Bh+Z6jZMGP=>rZli;z7(CkHr|} zf#Z2T=D@r<5`Ge0N!!Q7omcO6dmO(r4aU7v!B;z79yB}}N-)qq zQ~f#RcNSKO$+qG4`o+4TA`nw`*m=o_lhA-)ET+e#j&6rlz|n=f2+N1N@}i2U)?YJ< zWWu5>lrfn*e;tc)aoH~KqaUASrg{wOyz=ssao;z_Q<>B}PK0ZS$fc@?Xr%Re4`$HukLna!Z${YlZVv4{g;Vxl0wFFQ!|0oVWU& z#^9ct8!OW|)sbFC9MDy;XzeKqDmpgg10xEx0o^0@`WGR7L>qw&?r9xH}P^*pL| zKpEmXBhv#2ny$XO9WOW6Gi`?*8pOAtxVpYI8LX}~*GBOLuH+tA87scj*rbeDTdBeP z2uUc`j(2w5oY!8uugVxsm(F5kByjT(%M#FLvZ!4YB@7u?JCcN)rAlF)xztpD`hE_s zj&A%k2NWW&S+*R!MueOh;6`ve7T9qdK*1uu7vc*(??Z(A$3(SA4?x&2;X3jAVmIh% zF!plzzw(Os$+Nu{(2$JY=ZjiA-cE@DQokr`qlZMqLXfd`qG&w%@Qx9DcynX^r3nx# z)95>{ezRA`1jd1IV_?)Z=n8~@^J7*KAk>vWIjz4M#kU6qN{`(+j?f>v2%;u_G_4q$ zQ`-zZCSAULMbAXAZTn15r{pEU80Qv3s*^a{lLEzMZJ;{imdjx|&GLs-iis*-&n}%p z^Um5;*rv$8NAgFFb>5-w(`|79q2Mlm|KEw?JIz?Fr#ul{*Jf=z-h367<9V*xDtbw+rl_2fFVR&imVcw- ziMH8jxlX*lEUVo6Dk?KE9++sOIS)%|dDc#vjQOeL44ShS@Xx|TJgO7=X3ED-hXj)# zEn+*A;Kqvr&{WGmxEVkYm$06I$JeNgWcxLW2XyqTb;${RlP^fwFLr&u z+D{Ww$2924KYUOaE?(o<&uG0YOSZgQ!;KbvD)g${A+APWcd6w{bVJd1HemPTT?yW| z#K2ncC$oAIWOJ)Kdls-qa|>}>EL&CPKhu64a$Ix!*lzp*}E0>xY!%9f5q}S>_ z(eYMjG;RXMJ1?H_ntB7RCHxXgB_u@lF0r&sRKT1g#4XPW>(Uz;W4_lF5XA3r zNEv}J`wDlv2VAQ|96(`M9C{3ljgnI7AG=K=(H~j*nL7^N3Api;MR@Lxnxn9#yOEkV zwqJts%C38l;Y7{9C9&(Gdd*yxzJ z2(EGZ`l_UhE;-Dh0y%+gWioR(^(-fUbdzF3eSkSwzeb*jhdQz@_qa@OeLey___$sz zpJw@&9c!hsPq$W_L(_=TEZoy9hsB2oAlDt%&8HEsMzh*XSzdGwmnV??1xEpt3{P51mk2&D3?SKjD&3=LX!3+^vFN2o8HHc0C zT@v*>F+oAyT#z87PO3Z$!vcg+W3B`iL`!6!2Pd;R_AN$XX4e@SUeO} zZDc7$E3JKPwPG^65A?&8t^My;oHa|D7Y_qqeQCSU@w$v8$JWUA-j;IghCoYGoCQ=o z9=Ak(3wH|#|L1|&1WZp?#;dvU-s_gv%zb&#BD6VvjC{jl#@3#%B=nZ;MEQ;5l*67?}V zLM7VrCk`7FA(zb-coZ=ThVg{m_CPKpHa81ZZcf@yyMk^}=llFFV&2Q~2c0EB@c&Mk zj`#)dPE*R7VYgT)MGy+_B8C4{#0G_+vkyvuSEZg4B`TA8ow97@M|JXRn=qZ^0FB!c z+$pXVw*|2<&$l`a;(KGzVr7%KfN#C8M+Zi9y=LAv!pVJEYT%?BCG>pXM&~SH|C~Qj z?G?zLPn0aR#goq`TK>*#i)lVJ{ig2>NvtG?0o?L+&Z^^~(KNPXTv?kux@q#DaF$w@ z_`?gyn^^PTK|N&RPFE2DsA;NCB*7@Ulg{6HOT_`r{K~1AC+sTKd$DS%TO#BRSbIV; z)#8i-*A-)Fke~sCRdLSIBGTnnri)r4#jrl?%4=N2T@Bcl)lFKL{S*kg-54D(d}-J% zlp31qtW=>Sj5gSWF~nZ4CeQ3U&I8pstXmy?iNApcHmrTC`U&;U1q*qR;E3wJVvNHL z<6C>C-T=i;VHT%J&61;RyH36HFRc1=^Q3F$N7gMHNuq%SW~Z=}SIh#boF?UI5thpp z$9biW@EhvQO4wz-)S4Ahp~H-#3EMM)I}Ma^JK_~#PCr!G4RJz<(1H{dRr+is)Qk6n zfEJl8=U@d9ji8H0%1W^H9?t?f|L%*bP=B+m@N}#zZ=Di z@z#;1@otcnx7VJaZ)U9f>H9t#Pi$k{6s1m$8FEh9GO>xj)i-o(0}?`SgICyGkkO8x zi&h)G7eQ+}{J8F&(c9r1#o3Ql`vvP}=iGHppOY!9HJM`4c{E=5WuoRv-&}6o?pu-W z_JL}F%A3ruBrU7O9^yVso51@4SuT;-OANLkQ+mkXar98PWVryX2yI0^# z%-BTsL;BXY5!rx6(YpKXluWt-{gfr4V??%Z)9 zz4v0O&1;m#d+$)ATe#9&ZxHvRYREf&En~4#MZ{52HGXX4gO(KDlRTe%JYur{Qh?`U z`GlNaro;ExAcwny=CPiKWRkHJ>!iM3pLzC6G&yOQv!ZzgEKBO&X}G?nEaXrefAnVI zx@-Mo+P<9g@0_g^#B-I|^~-nwL|+C5~Po}bIpVGfzS%UYve`Tcn`c12U? z{=k&k6ksMPbcksKa6gcwgY9e-4^Jw0CjW|yZ|kY`N>B>`L5GON8$=b2a6LBiqfgWw ziYON#Ke;1u3r4(bQq)Hu^=Z@|)Q@+|Hpp7@whu)IwYLfDvZPo&)-~+tU6yD!bMMD3 z-!>{bCj4@K%XFiAll?3&i2+wDX*>+SqjK>4#XSZngp=`HAc=3yzvXFA=Jr&Xp4A#` zms5cLei?b{o%Eb60Vny+w}x%=-cP*9fqu$< zA@lYKec+f+9(wwS%T~J|q(-l~;u@TJwcZPR_^u|33;YC^llRi950tTsJk4P@LHas6 zBRS+dwr4gUVdc>!3TaXfH?X>`c4Dm;T_jWiUCYV$5;>g76wsM7XsQ;Ozov4Nhb8qtNA^QHrR5ZJvBxuOV;OUjZc(*YKg^Kf~$b*38v% z{o+4ZHnqt;nW_qD@M1=cb&-KI+kC{31!{a!gguyiLV{>)y|X@I#Is6rzvl9QHcltY z>?u}V|Lfocjj>_8)`b=0oTgly4f^Wiiq)H8;dF}Bo9;_TDngo%TsD$D-TQW_Ihu?S z4Vjlm&jDU{YRRSWh5!VB*PZ+Jy$GG%)KxJlme%+B?a2p7>N`QMEfEbjqC! z0;j7_kWexD4OYuBzYK!Pj*}o^TbmTbBCFciZVB;IW1Boy!{p)JOvK-5(gJ7Nby>TJ zw_m;r*%@yQyP;S_+f228XY-*w5?0u!z_c)dX49Hgp!Y6iBt+HDd;F#7!rxZ2mU!>k ze*{BnaScifyYVaM#8b@BQrCeNt3|1)p?DJHo!P02h-LQh%&BdDMo-VV=J#rJA?Wic z81iHZwvjQ*S?~qnB@YGMF(Y=si&gxJ zx#!*P< zlPF~lrhC}4?Yl$_RD((chLFRme(Sz;@B`QMik9g2#5Zqj?|ly%h!+Rsvt8HdJ{Xiy z?0fk_Yb*bb^pl4)@;9$CBM+V5^*YwjLw)>*hZa+M>ISlI6nsKI&2`@MYMql2F>8=v zO!z&#__BALYaf>JS7&6`IOvJZp6Rx+$bF#jtnwva*?~J+nx3O+PF>g2`CGnU;Oi5A zeIwiHFvY>dg;JMzkXMHltC~-xS>8u?nW@$FZwrzq|N31<33yO=$$d!6Zl>agm6wD2 zM47g0&b42N)XMzL%Ci&W?Hsols!3-aX|nr2(O2AkoLlAEKeqGbnR<03JjD*CdCX*`e$0sC&CP6>wXKYsa`*wcxMN>j(^g5*K+s7lu zB^kL`l7lijj_Ui6NqrLWJ#BHlqX&ggq2*^_6Qz~pcOSbSTs&Nrvq=y!uItA&O&5Ym zsb!_3wagh(bSpl<4ewCxIS?JJ*)kYD`D2!Dd5yG~Iu|)N+lu7N@0etGW>*32G{>H; zpq3!GhDMw(b`1)_h=C5jLy%dJt0)lsyOkJ&9RvA5$ah}!X68(t;;dBZsSI+rxlA&7 zCXk~vagQZwt5A&oY0F&#XosJwuB)cm^inef9KkoNm?1YZ^y+2>JcqH)=Vckl%CxM&zCBL(XHSE|H*2K5xVoIUtgR=JaXYKb(NKtu==wRJiYl{p_jkPpjZZaDurF=Ma8W_%VAqzaj4Qc zL_h9q>B{YqdEJT>af_muCHmeRBM}a2x*HfZ3ikSDWswVjnP5%iDoJe5VXdIp(kPW>a|Cf1Um7M_>KEdcy@B@n+P7j~y&_g9xp%f(608bwV z*He0&_ptTHgF-4BZ6OR$$B}h<6={ft}KDKYRc`7i9N7Jg) zG$ZW1e(4FlIg_LeBrn7jeUW|Lx$;sYPIlq860wS0N5F3WQNWOJSjeF-44q{Mz5F{K zuLOebnY!boPW=NS3rqSgO|@X#`)o~^glXV;QbLDxy#H>F?-;*^jPnfyfwzq~X|8-e zSN4^11`O0%0ji;VTkqzzmq8CHWZ24~Yy@JO`Y6HB!twwq>{rRM7Vd7(b8C)m0v3-j(OW%8$`XK7O$Ahw2npxR^}<)5Th+L%ZqGriaW#fBm&X z&VVM|?_X2(Gtgf*X>~D$gsNEColQ%Mx$ifGTOnzudYialj1Pzjum%Dnh|sQ%{{3*k z8jc7pYpRBpqQ_kk;64EZgF+UYq<$a8F%2H*Sl;3ps^?TbdMFbt`XA2S6ef0s{lXu# zzAe@TCqEr}H)4Ht?)RiR`f1F?B8g$}mn*yzJ84jlwh^Ntm}!Cb*-2=&WmQvaU8?Aongdeu_*Jx{Ww{tDa;r zWVnNY<4TSfo7esn5+*wr^(2yh8d%|+V~s3Bs|3Q}qRQaEWI17ZzD6u_d^*E%@KYZq z>)t@=)yoaXm{HqtV0khVNa8bO zwquSsnf`H_pM4#&=-yDWkE7h9FbVtN16v+=WPi z=mBf6ZTx2Y|2h#AiUUdEm+BxdonfaBO1`)*rd8@-|BjH`qiuL}7w~F7$O-c@Kllc3 zg1V=!0YP-0&bq^9{(FU2t7~AAWVd(iiqXP;*d747=a}wy_gsVP=x$YKdrCDo zaa|%AX4$h3rBC%3lQ6Bp*t6xiklV3=?T$@2G|i@3&|>y`=!hsqI}wG`L$?+4z==jA zC-;!w&U%1#P60A5Wgxl>NNxJt26-xuZjv|IO zH}O%FdPs!E_k!%$?l=RA5R1!+!kJ}Ut?^@XzOlRPz~+jXP8o^7gTKACEly0ZD=Pis zdbiYE;M4WZ;BWWm%D=Mx$HF%l=S9CXlIdc-S~(4wt2XLHqt5VP&5hEFm^r(GMU^tx z{WU)%HFvAT2bahc=Lw}p$<@pigj|4n=(&TlljG65-~kCwqFP9^LBu{(LIU+CM|`91 zSa`sr1m=Cl)hkN*EWp3Nl>yh|r{Sit*t)+xiB_Pc4?Eek*a?asF>iM%>2ToQ!Gwn< z;3|07r_29dP5M^{JZuM&3c?9EE<5LPVIe^-4-OZc%NW7%xFgWRqodvLa4`_-e}N#l zOM=9Q1e_2HI9LmN59a<|){OXBWZ4dZtb^DyHT_rIxyv#zRHZ19-x(myZw}rCG3DN; zO}`9)t72N;7xeH${&&s-lr#4ek7ES;<3abX+20PwG0Wqf$R3Iix8NP0T7;FV85CaKTj2j8=vR z9c=@ZE>@~b_{-f!snWfwRoR=Myhr%C7yG4xN;iZqbbR(yNmiBt6?E#iLMIDAqFWKz${?3IX)%K< zV`T?X^R_q?a(raB2ytWuK1?#5$N`{YMB?26-<`qWN3LLS(X(mWtG#8Crc3`^w!Yml zkV`xQ6%?3?TJS*^HvU8H!+(-s_7VcIsLI1h2KGby1fcKZ7f1HiK@vM9N#qHmkm-T4 zU3BkGF!dPzVMQV1SISisXLzdye8S*!1p&n=>!U=H^>IE}4DwS6cDob>FE4`UdETZL zVY80SmRz37Q1WRiE6d-xe}|>WbSGx1gTVExALHs5vFOLN%B^q0-}K5Y+60&lY~Psj zwFesN-x`$_>9+^}_Vgb*$vtUQ)t=_#lFfL2I>2F?HRu0chxDSVX`ZfBgP91|O6IG7 zQR^8HkeNKYxw$zzI!X?_Q&VtFL@;YYuxHn+%Jo_GJd;tk`gP^~Nv}lbaMRDH*yV#q z(bL_9jIHXnm!8Rv+1a8g;74ohukv#L=I*(@74^Q%L+$CA8cm*mQ782eKh$__Y%Zf^ zW14beg?Y?-_dR#_7T59J;Bc(_%1Q+Tw>h;%8ZKHRktDWxC4i);Txgr#=0(YOkU?+; z`uDMm{&^bacUt{9eA$|v#u|AVUGmdVXtOA)c~g@Kw*^0iyKY<}ITAp1S0DQ^i{0ER zWqq2e8hBfyGi3f4F5Y(r)F*XN%;)k^!`;&ZbA4=bQ{-@aXLdM)zr_ARegCt$eWV3h zDJTTu&}Ig5cYk7e-O<+3v8AT2sOAyi=ht#^b!cE_fvM%wlnN zTy6X1v%zpr|L4SR_6jLwc4CBx$|Jv{f2U<>H3i=ZX+PRTJ_s9F&(MhW%=0b_Uw*hu zmy_9)O(#Znrygk$l1s9gGM-5sJ-mD$*2iS-;^3rEUi0r_(A0)bxz-~5Wqn_pVY z9QZYOsG_afdtDdQPGdeZDO;zBb}yK;zGwVdLlIV0zV>X8!mB(dJ1$mNhLh3P_lvF5 z`yBUT{)y9}Y+4iybbHDd)`N6B9Y*?7$k$`P zo5BW67MO>H)$F&5ZNEiM4mFzl6HX&TJp>lh;DMAdkt8Fk1`&6?6k+l^4^W(@)Mj*2 zLR$K5St$1p!4;uRmn(mk{>otp;G(`)h_1;zWJk+G_ewBj zscFYL!BC1yz<0I~aZb?h5XHLHO1~e}(IC)3TvTG@zuU1pjsWy#5w$eckA0+eV#GmhE=dNbrw4;CXXugut&hyw}m0Xx{PU z=Ili9q)xi;eT+k$R>;id>EGGQ(T=31PXn^C23Pe*7EUWY3-i4{B4b<#DR@&$r|2&^ z@=PY{&>qBXA+X7e+4#9ki~8!xcmItoKEIh$pg1ri&XSuEFWjL<&+%Iat9$p-g;x1rWLE&#B7uviQ9aMQS_F4`% zlTn=?XO*FGM2!ol_p@i`%cGu|SJjMr;8%tu{HX=8ZhQ$`e-D>Q&43dDN*Vto@p|JTluw72qVht~2rid{NHAgxqU6XhB>;_KG8!&Z=X*Esj1_oZoiSY=0V)Jft>LR^^L4=AUoe9=4C_6^5VI} z4?P&&i?Ua{A=ISgZ)4#aon6}RLLUCk1}41s{$OjEE-@UZu16(m{ z+PW_tkU)q9^z_Z5_PKvZ2ooPazqfYg?XH3Gec5#^2DN^%J6un#@4`$Ml#0B2B;)>U_gudB=2?OLmUKJQNla-=owYvG(lDX|g1H z4{=$re}BA~(LSG{tg7da*INrBiDCJ>Zt?oYfApRq6&lN|rNSP?Jlb|405`@9gTHnu zZwh${K3Dq5Ul8^_?A?Kw(vkyhZe2DFQ)YfO>W37&_B*gnTZy?@HF>pOM+y`~&V*ya z>9?Q#m+!-CaG3l7{Y4e$j+xH#o9qo@%d!NilEW5HReY}JZs7eMG&ar7Iak>-tQ+GJ z{9%^|v*rEZw=2XU2(q`7|MJdALcZ&bwCKEeo}wS4!X3gVl2#}<<#O~VieegqWAV4a zZ_@YIXtk!MnG8t#oiUpQ-CmZKzqZQ$C1lUkok$K)w(yI-{Hfs}_E`j7b2Q?~Fl@J# z|MOKO=p@T#R$6DLnZqO^_Ez@MTc5Scf~bZT3X-IZK#r?z zBVD8c?iIG_>l+;XE58fJiY-ZL5LUX9lGVQW`$lG;-e#{LN4-{QLEnb*jl{gy4w*T* zGCd;p%FuwYxl}-p{vUmCdFUv2;@ewlqw^mxI4tT{lHMJ)FD@(?y>!X{BCX1}ci&qy zGCn?2#ji;1sNTF`4a13tX012q>#mDv)GEy9CS;CV#!Ji^=G5qDV;9E+YTO+ zNF`u+Fv&IZ0s3rwQ1zYkGpl(H`z`3wS_bxEgupAE2u(g|tPFN=6a04*wuzhDuox#Q z#_ms-czJv4vHgDMKLiNQ{DT<3r_bk{{6RurtLD78>_^QxG~3t8cFeVEWf-~=bo9sl zadRf(W=#-aXJ_XJOm*Z_0{{zp%N-eDj`aiUA`=IUQ9{S>WxuCXYrSg$Mi!bLVt=PR zfrx9YOVEFmB>Z8!oNd7*@%fuV z6B?_%tOg`g)|Cod4%f3TzV#UXH*GzL`tLghiaSR_vkzT54oCfeY}o}Z4@%I7*f(^b zfVpg^sEbel5y6g5ohqh?nnEj{wIR6&1A5U0mDh^=GqEBG`swpu zpfwM9cKD+M(KueX>-L9@xepo1+C$$sx9o3I5QL(vIN3LBiw69)=7<-dY8HR7o zD%^{X3QaBDyPe;CRHdj3NGhJ$zougf*dFRh{JPlLXCvJH(>7iHJrX_ z@t$-$4S4zMc|LDI+f>wEo)z?kCluyO%{vVhHc!B1@-2q_7e8U31RO*X%e}HAt+okW z=H9kRj@zl6ch#n0k2)wk3GjqU8ub_J$yd0Dq{w)ljUG{}}%N E05jmt1ONa4 literal 0 HcmV?d00001 diff --git a/src/apps/meta-street/contracts/abis/pool-v-2-legacy.json b/src/apps/meta-street/contracts/abis/pool-v-2-legacy.json new file mode 100644 index 000000000..6545d5941 --- /dev/null +++ b/src/apps/meta-street/contracts/abis/pool-v-2-legacy.json @@ -0,0 +1,1231 @@ +[ + { + "inputs": [], + "name": "InactiveLiquidity", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientLiquidity", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientShares", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientTickSpacing", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBorrowOptions", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCaller", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidLoanReceipt", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidReceiptEncoding", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRedemptionStatus", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTick", + "type": "error" + }, + { + "inputs": [], + "name": "LoanNotExpired", + "type": "error" + }, + { + "inputs": [], + "name": "ParameterOutOfBounds", + "type": "error" + }, + { + "inputs": [], + "name": "RepaymentTooHigh", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsupportedCollateral", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedLoanDuration", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rate", + "type": "uint256" + } + ], + "name": "AdminFeeRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "AdminFeesWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowerProceeds", + "type": "uint256" + } + ], + "name": "CollateralLiquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + } + ], + "name": "LoanLiquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "loanReceipt", + "type": "bytes" + } + ], + "name": "LoanOriginated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayment", + "type": "uint256" + } + ], + "name": "LoanRepaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Redeemed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [], + "name": "BORROWER_SURPLUS_SPLIT_BASIS_POINTS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "COLLATERAL_FILTER_NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "COLLATERAL_FILTER_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "IMPLEMENTATION_NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "IMPLEMENTATION_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "INTEREST_RATE_MODEL_NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INTEREST_RATE_MODEL_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TICK_LIMIT_SPACING_BASIS_POINTS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "adminFeeBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "adminFeeRate", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "address", + "name": "collateralToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralTokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxRepayment", + "type": "uint256" + }, + { + "internalType": "uint128[]", + "name": "ticks", + "type": "uint128[]" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collateralLiquidator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "collateralToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "collateralWrappers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currencyToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "loanReceipt", + "type": "bytes" + } + ], + "name": "decodeLoanReceipt", + "outputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "version", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "repayment", + "type": "uint256" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint64", + "name": "maturity", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "address", + "name": "collateralToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralTokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "collateralWrapperContextLen", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "collateralWrapperContext", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "used", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + } + ], + "internalType": "struct LoanReceipt.NodeReceipt[]", + "name": "nodeReceipts", + "type": "tuple[]" + } + ], + "internalType": "struct LoanReceipt.LoanReceiptV1", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "delegationRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minShares", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + } + ], + "name": "deposits", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionPending", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionTarget", + "type": "uint128" + } + ], + "internalType": "struct Pool.Deposit", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "durations", + "outputs": [ + { + "internalType": "uint64[]", + "name": "", + "type": "uint64[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + } + ], + "name": "liquidate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + } + ], + "name": "liquidityNode", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "available", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptions", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "prev", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "next", + "type": "uint128" + } + ], + "internalType": "struct ILiquidity.NodeInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "startTick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "endTick", + "type": "uint128" + } + ], + "name": "liquidityNodes", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "available", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptions", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "prev", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "next", + "type": "uint128" + } + ], + "internalType": "struct ILiquidity.NodeInfo[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "receiptHash", + "type": "bytes32" + } + ], + "name": "loans", + "outputs": [ + { + "internalType": "enum Pool.LoanStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" + } + ], + "name": "multicall", + "outputs": [ + { + "internalType": "bytes[]", + "name": "results", + "type": "bytes[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + } + ], + "name": "onCollateralLiquidated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "address", + "name": "collateralToken", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "collateralTokenIds", + "type": "uint256[]" + }, + { + "internalType": "uint128[]", + "name": "ticks", + "type": "uint128[]" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "uint128[]", + "name": "ticks", + "type": "uint128[]" + } + ], + "name": "quoteRefinance", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rates", + "outputs": [ + { + "internalType": "uint64[]", + "name": "", + "type": "uint64[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "srcTick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "dstTick", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "minShares", + "type": "uint256" + } + ], + "name": "rebalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + } + ], + "name": "redemptionAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "maxRepayment", + "type": "uint256" + }, + { + "internalType": "uint128[]", + "name": "ticks", + "type": "uint128[]" + } + ], + "name": "refinance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + } + ], + "name": "repay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "rate", + "type": "uint32" + } + ], + "name": "setAdminFeeRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawAdminFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/meta-street/contracts/abis/pool-v-2.json b/src/apps/meta-street/contracts/abis/pool-v-2.json new file mode 100644 index 000000000..f48f83b17 --- /dev/null +++ b/src/apps/meta-street/contracts/abis/pool-v-2.json @@ -0,0 +1,1413 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "collateralLiquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "delegationRegistry", + "type": "address" + }, + { + "internalType": "address[]", + "name": "collateralWrappers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "uint64", + "name": "tickThreshold", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "tickExponential", + "type": "uint64" + } + ], + "internalType": "struct WeightedInterestRateModel.Parameters", + "name": "parameters", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InactiveLiquidity", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientLiquidity", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientShares", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientTickSpacing", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientUtilization", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBorrowOptions", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCaller", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCollateralFilterParameters", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInterestRateModelParameters", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidLoanReceipt", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParameters", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidReceiptEncoding", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRedemptionStatus", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTick", + "type": "error" + }, + { + "inputs": [], + "name": "LoanNotExpired", + "type": "error" + }, + { + "inputs": [], + "name": "RepaymentTooHigh", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsupportedCollateral", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedLoanDuration", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rate", + "type": "uint256" + } + ], + "name": "AdminFeeRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "AdminFeesWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowerProceeds", + "type": "uint256" + } + ], + "name": "CollateralLiquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + } + ], + "name": "LoanLiquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "loanReceipt", + "type": "bytes" + } + ], + "name": "LoanOriginated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "loanReceiptHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayment", + "type": "uint256" + } + ], + "name": "LoanRepaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "redemptionId", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Redeemed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "indexed": true, + "internalType": "uint128", + "name": "redemptionId", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [], + "name": "BORROWER_SURPLUS_SPLIT_BASIS_POINTS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "COLLATERAL_FILTER_NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "COLLATERAL_FILTER_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "IMPLEMENTATION_NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "IMPLEMENTATION_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "INTEREST_RATE_MODEL_NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "INTEREST_RATE_MODEL_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "TICK_LIMIT_SPACING_BASIS_POINTS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "adminFeeBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "adminFeeRate", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "address", + "name": "collateralToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralTokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxRepayment", + "type": "uint256" + }, + { + "internalType": "uint128[]", + "name": "ticks", + "type": "uint128[]" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collateralLiquidator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "collateralToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "collateralWrappers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currencyToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "loanReceipt", + "type": "bytes" + } + ], + "name": "decodeLoanReceipt", + "outputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "version", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "repayment", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "adminFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint64", + "name": "maturity", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "address", + "name": "collateralToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralTokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "collateralWrapperContextLen", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "collateralWrapperContext", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "used", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + } + ], + "internalType": "struct LoanReceipt.NodeReceipt[]", + "name": "nodeReceipts", + "type": "tuple[]" + } + ], + "internalType": "struct LoanReceipt.LoanReceiptV2", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "delegationRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minShares", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionId", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "durations", + "outputs": [ + { + "internalType": "uint64[]", + "name": "", + "type": "uint64[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + } + ], + "name": "liquidate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + } + ], + "name": "liquidityNode", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "available", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptions", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "prev", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "next", + "type": "uint128" + } + ], + "internalType": "struct ILiquidity.NodeInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + } + ], + "name": "liquidityNodeWithAccrual", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "available", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptions", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "prev", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "next", + "type": "uint128" + } + ], + "internalType": "struct ILiquidity.NodeInfo", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint128", + "name": "accrued", + "type": "uint128" + }, + { + "internalType": "uint64", + "name": "rate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "internalType": "struct ILiquidity.AccrualInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "startTick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "endTick", + "type": "uint128" + } + ], + "name": "liquidityNodes", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "available", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptions", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "prev", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "next", + "type": "uint128" + } + ], + "internalType": "struct ILiquidity.NodeInfo[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "receiptHash", + "type": "bytes32" + } + ], + "name": "loans", + "outputs": [ + { + "internalType": "enum Pool.LoanStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" + } + ], + "name": "multicall", + "outputs": [ + { + "internalType": "bytes[]", + "name": "results", + "type": "bytes[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + } + ], + "name": "onCollateralLiquidated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "address", + "name": "collateralToken", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "collateralTokenIds", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "collateralTokenCount", + "type": "uint256" + }, + { + "internalType": "uint128[]", + "name": "ticks", + "type": "uint128[]" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rates", + "outputs": [ + { + "internalType": "uint64[]", + "name": "", + "type": "uint64[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "srcTick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "dstTick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionId", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "minShares", + "type": "uint256" + } + ], + "name": "rebalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionId", + "type": "uint128" + } + ], + "name": "redemptionAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharesAhead", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionId", + "type": "uint128" + } + ], + "name": "redemptions", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "pending", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "index", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "target", + "type": "uint128" + } + ], + "internalType": "struct Pool.Redemption", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "duration", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "maxRepayment", + "type": "uint256" + }, + { + "internalType": "uint128[]", + "name": "ticks", + "type": "uint128[]" + } + ], + "name": "refinance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedLoanReceipt", + "type": "bytes" + } + ], + "name": "repay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "rate", + "type": "uint32" + } + ], + "name": "setAdminFeeRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "tick", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "redemptionId", + "type": "uint128" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawAdminFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/meta-street/contracts/ethers/PoolV2.ts b/src/apps/meta-street/contracts/ethers/PoolV2.ts new file mode 100644 index 000000000..63e8c98e5 --- /dev/null +++ b/src/apps/meta-street/contracts/ethers/PoolV2.ts @@ -0,0 +1,1464 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common'; + +export declare namespace WeightedInterestRateModel { + export type ParametersStruct = { + tickThreshold: PromiseOrValue; + tickExponential: PromiseOrValue; + }; + + export type ParametersStructOutput = [BigNumber, BigNumber] & { + tickThreshold: BigNumber; + tickExponential: BigNumber; + }; +} + +export declare namespace LoanReceipt { + export type NodeReceiptStruct = { + tick: PromiseOrValue; + used: PromiseOrValue; + pending: PromiseOrValue; + }; + + export type NodeReceiptStructOutput = [BigNumber, BigNumber, BigNumber] & { + tick: BigNumber; + used: BigNumber; + pending: BigNumber; + }; + + export type LoanReceiptV2Struct = { + version: PromiseOrValue; + principal: PromiseOrValue; + repayment: PromiseOrValue; + adminFee: PromiseOrValue; + borrower: PromiseOrValue; + maturity: PromiseOrValue; + duration: PromiseOrValue; + collateralToken: PromiseOrValue; + collateralTokenId: PromiseOrValue; + collateralWrapperContextLen: PromiseOrValue; + collateralWrapperContext: PromiseOrValue; + nodeReceipts: LoanReceipt.NodeReceiptStruct[]; + }; + + export type LoanReceiptV2StructOutput = [ + number, + BigNumber, + BigNumber, + BigNumber, + string, + BigNumber, + BigNumber, + string, + BigNumber, + number, + string, + LoanReceipt.NodeReceiptStructOutput[], + ] & { + version: number; + principal: BigNumber; + repayment: BigNumber; + adminFee: BigNumber; + borrower: string; + maturity: BigNumber; + duration: BigNumber; + collateralToken: string; + collateralTokenId: BigNumber; + collateralWrapperContextLen: number; + collateralWrapperContext: string; + nodeReceipts: LoanReceipt.NodeReceiptStructOutput[]; + }; +} + +export declare namespace ILiquidity { + export type NodeInfoStruct = { + tick: PromiseOrValue; + value: PromiseOrValue; + shares: PromiseOrValue; + available: PromiseOrValue; + pending: PromiseOrValue; + redemptions: PromiseOrValue; + prev: PromiseOrValue; + next: PromiseOrValue; + }; + + export type NodeInfoStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + ] & { + tick: BigNumber; + value: BigNumber; + shares: BigNumber; + available: BigNumber; + pending: BigNumber; + redemptions: BigNumber; + prev: BigNumber; + next: BigNumber; + }; + + export type AccrualInfoStruct = { + accrued: PromiseOrValue; + rate: PromiseOrValue; + timestamp: PromiseOrValue; + }; + + export type AccrualInfoStructOutput = [BigNumber, BigNumber, BigNumber] & { + accrued: BigNumber; + rate: BigNumber; + timestamp: BigNumber; + }; +} + +export declare namespace Pool { + export type RedemptionStruct = { + pending: PromiseOrValue; + index: PromiseOrValue; + target: PromiseOrValue; + }; + + export type RedemptionStructOutput = [BigNumber, BigNumber, BigNumber] & { + pending: BigNumber; + index: BigNumber; + target: BigNumber; + }; +} + +export interface PoolV2Interface extends utils.Interface { + functions: { + 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS()': FunctionFragment; + 'COLLATERAL_FILTER_NAME()': FunctionFragment; + 'COLLATERAL_FILTER_VERSION()': FunctionFragment; + 'IMPLEMENTATION_NAME()': FunctionFragment; + 'IMPLEMENTATION_VERSION()': FunctionFragment; + 'INTEREST_RATE_MODEL_NAME()': FunctionFragment; + 'INTEREST_RATE_MODEL_VERSION()': FunctionFragment; + 'TICK_LIMIT_SPACING_BASIS_POINTS()': FunctionFragment; + 'admin()': FunctionFragment; + 'adminFeeBalance()': FunctionFragment; + 'adminFeeRate()': FunctionFragment; + 'borrow(uint256,uint64,address,uint256,uint256,uint128[],bytes)': FunctionFragment; + 'collateralLiquidator()': FunctionFragment; + 'collateralToken()': FunctionFragment; + 'collateralWrappers()': FunctionFragment; + 'currencyToken()': FunctionFragment; + 'decodeLoanReceipt(bytes)': FunctionFragment; + 'delegationRegistry()': FunctionFragment; + 'deposit(uint128,uint256,uint256)': FunctionFragment; + 'deposits(address,uint128)': FunctionFragment; + 'durations()': FunctionFragment; + 'initialize(bytes)': FunctionFragment; + 'liquidate(bytes)': FunctionFragment; + 'liquidityNode(uint128)': FunctionFragment; + 'liquidityNodeWithAccrual(uint128)': FunctionFragment; + 'liquidityNodes(uint128,uint128)': FunctionFragment; + 'loans(bytes32)': FunctionFragment; + 'multicall(bytes[])': FunctionFragment; + 'onCollateralLiquidated(bytes,uint256)': FunctionFragment; + 'quote(uint256,uint64,address,uint256[],uint256,uint128[],bytes)': FunctionFragment; + 'rates()': FunctionFragment; + 'rebalance(uint128,uint128,uint128,uint256)': FunctionFragment; + 'redeem(uint128,uint256)': FunctionFragment; + 'redemptionAvailable(address,uint128,uint128)': FunctionFragment; + 'redemptions(address,uint128,uint128)': FunctionFragment; + 'refinance(bytes,uint256,uint64,uint256,uint128[])': FunctionFragment; + 'repay(bytes)': FunctionFragment; + 'setAdminFeeRate(uint32)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'withdraw(uint128,uint128)': FunctionFragment; + 'withdrawAdminFees(address,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS' + | 'COLLATERAL_FILTER_NAME' + | 'COLLATERAL_FILTER_VERSION' + | 'IMPLEMENTATION_NAME' + | 'IMPLEMENTATION_VERSION' + | 'INTEREST_RATE_MODEL_NAME' + | 'INTEREST_RATE_MODEL_VERSION' + | 'TICK_LIMIT_SPACING_BASIS_POINTS' + | 'admin' + | 'adminFeeBalance' + | 'adminFeeRate' + | 'borrow' + | 'collateralLiquidator' + | 'collateralToken' + | 'collateralWrappers' + | 'currencyToken' + | 'decodeLoanReceipt' + | 'delegationRegistry' + | 'deposit' + | 'deposits' + | 'durations' + | 'initialize' + | 'liquidate' + | 'liquidityNode' + | 'liquidityNodeWithAccrual' + | 'liquidityNodes' + | 'loans' + | 'multicall' + | 'onCollateralLiquidated' + | 'quote' + | 'rates' + | 'rebalance' + | 'redeem' + | 'redemptionAvailable' + | 'redemptions' + | 'refinance' + | 'repay' + | 'setAdminFeeRate' + | 'supportsInterface' + | 'withdraw' + | 'withdrawAdminFees', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS', values?: undefined): string; + encodeFunctionData(functionFragment: 'COLLATERAL_FILTER_NAME', values?: undefined): string; + encodeFunctionData(functionFragment: 'COLLATERAL_FILTER_VERSION', values?: undefined): string; + encodeFunctionData(functionFragment: 'IMPLEMENTATION_NAME', values?: undefined): string; + encodeFunctionData(functionFragment: 'IMPLEMENTATION_VERSION', values?: undefined): string; + encodeFunctionData(functionFragment: 'INTEREST_RATE_MODEL_NAME', values?: undefined): string; + encodeFunctionData(functionFragment: 'INTEREST_RATE_MODEL_VERSION', values?: undefined): string; + encodeFunctionData(functionFragment: 'TICK_LIMIT_SPACING_BASIS_POINTS', values?: undefined): string; + encodeFunctionData(functionFragment: 'admin', values?: undefined): string; + encodeFunctionData(functionFragment: 'adminFeeBalance', values?: undefined): string; + encodeFunctionData(functionFragment: 'adminFeeRate', values?: undefined): string; + encodeFunctionData( + functionFragment: 'borrow', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + ], + ): string; + encodeFunctionData(functionFragment: 'collateralLiquidator', values?: undefined): string; + encodeFunctionData(functionFragment: 'collateralToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'collateralWrappers', values?: undefined): string; + encodeFunctionData(functionFragment: 'currencyToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'decodeLoanReceipt', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'delegationRegistry', values?: undefined): string; + encodeFunctionData( + functionFragment: 'deposit', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'deposits', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'durations', values?: undefined): string; + encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'liquidate', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'liquidityNode', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'liquidityNodeWithAccrual', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'liquidityNodes', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'loans', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'multicall', values: [PromiseOrValue[]]): string; + encodeFunctionData( + functionFragment: 'onCollateralLiquidated', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'quote', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + ], + ): string; + encodeFunctionData(functionFragment: 'rates', values?: undefined): string; + encodeFunctionData( + functionFragment: 'rebalance', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ], + ): string; + encodeFunctionData( + functionFragment: 'redeem', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'redemptionAvailable', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'redemptions', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'refinance', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + ], + ): string; + encodeFunctionData(functionFragment: 'repay', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'setAdminFeeRate', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'withdraw', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'withdrawAdminFees', + values: [PromiseOrValue, PromiseOrValue], + ): string; + + decodeFunctionResult(functionFragment: 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'COLLATERAL_FILTER_NAME', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'COLLATERAL_FILTER_VERSION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'IMPLEMENTATION_NAME', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'IMPLEMENTATION_VERSION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'INTEREST_RATE_MODEL_NAME', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'INTEREST_RATE_MODEL_VERSION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'TICK_LIMIT_SPACING_BASIS_POINTS', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'admin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'adminFeeBalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'adminFeeRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'borrow', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralLiquidator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralWrappers', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'currencyToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decodeLoanReceipt', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'delegationRegistry', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposits', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'durations', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidityNode', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidityNodeWithAccrual', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidityNodes', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'loans', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'multicall', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'onCollateralLiquidated', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'quote', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rates', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rebalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'redemptionAvailable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'redemptions', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'refinance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'repay', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setAdminFeeRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawAdminFees', data: BytesLike): Result; + + events: { + 'AdminFeeRateUpdated(uint256)': EventFragment; + 'AdminFeesWithdrawn(address,uint256)': EventFragment; + 'CollateralLiquidated(bytes32,uint256,uint256)': EventFragment; + 'Deposited(address,uint128,uint256,uint256)': EventFragment; + 'LoanLiquidated(bytes32)': EventFragment; + 'LoanOriginated(bytes32,bytes)': EventFragment; + 'LoanRepaid(bytes32,uint256)': EventFragment; + 'Redeemed(address,uint128,uint128,uint256)': EventFragment; + 'Withdrawn(address,uint128,uint128,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'AdminFeeRateUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'AdminFeesWithdrawn'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CollateralLiquidated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposited'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LoanLiquidated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LoanOriginated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LoanRepaid'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Redeemed'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdrawn'): EventFragment; +} + +export interface AdminFeeRateUpdatedEventObject { + rate: BigNumber; +} +export type AdminFeeRateUpdatedEvent = TypedEvent<[BigNumber], AdminFeeRateUpdatedEventObject>; + +export type AdminFeeRateUpdatedEventFilter = TypedEventFilter; + +export interface AdminFeesWithdrawnEventObject { + account: string; + amount: BigNumber; +} +export type AdminFeesWithdrawnEvent = TypedEvent<[string, BigNumber], AdminFeesWithdrawnEventObject>; + +export type AdminFeesWithdrawnEventFilter = TypedEventFilter; + +export interface CollateralLiquidatedEventObject { + loanReceiptHash: string; + proceeds: BigNumber; + borrowerProceeds: BigNumber; +} +export type CollateralLiquidatedEvent = TypedEvent<[string, BigNumber, BigNumber], CollateralLiquidatedEventObject>; + +export type CollateralLiquidatedEventFilter = TypedEventFilter; + +export interface DepositedEventObject { + account: string; + tick: BigNumber; + amount: BigNumber; + shares: BigNumber; +} +export type DepositedEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], DepositedEventObject>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface LoanLiquidatedEventObject { + loanReceiptHash: string; +} +export type LoanLiquidatedEvent = TypedEvent<[string], LoanLiquidatedEventObject>; + +export type LoanLiquidatedEventFilter = TypedEventFilter; + +export interface LoanOriginatedEventObject { + loanReceiptHash: string; + loanReceipt: string; +} +export type LoanOriginatedEvent = TypedEvent<[string, string], LoanOriginatedEventObject>; + +export type LoanOriginatedEventFilter = TypedEventFilter; + +export interface LoanRepaidEventObject { + loanReceiptHash: string; + repayment: BigNumber; +} +export type LoanRepaidEvent = TypedEvent<[string, BigNumber], LoanRepaidEventObject>; + +export type LoanRepaidEventFilter = TypedEventFilter; + +export interface RedeemedEventObject { + account: string; + tick: BigNumber; + redemptionId: BigNumber; + shares: BigNumber; +} +export type RedeemedEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], RedeemedEventObject>; + +export type RedeemedEventFilter = TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + tick: BigNumber; + redemptionId: BigNumber; + shares: BigNumber; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber, BigNumber], WithdrawnEventObject>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface PoolV2 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoolV2Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise<[BigNumber]>; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise<[string]>; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise<[string]>; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise<[string]>; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise<[string]>; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise<[string]>; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise<[string]>; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise<[BigNumber]>; + + admin(overrides?: CallOverrides): Promise<[string]>; + + adminFeeBalance(overrides?: CallOverrides): Promise<[BigNumber]>; + + adminFeeRate(overrides?: CallOverrides): Promise<[number]>; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise<[string]>; + + collateralToken(overrides?: CallOverrides): Promise<[string]>; + + collateralWrappers(overrides?: CallOverrides): Promise<[string[]]>; + + currencyToken(overrides?: CallOverrides): Promise<[string]>; + + decodeLoanReceipt( + loanReceipt: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[LoanReceipt.LoanReceiptV2StructOutput]>; + + delegationRegistry(overrides?: CallOverrides): Promise<[string]>; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { shares: BigNumber; redemptionId: BigNumber }>; + + durations(overrides?: CallOverrides): Promise<[BigNumber[]]>; + + initialize( + params: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[ILiquidity.NodeInfoStructOutput]>; + + liquidityNodeWithAccrual( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[ILiquidity.NodeInfoStructOutput, ILiquidity.AccrualInfoStructOutput]>; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[ILiquidity.NodeInfoStructOutput[]]>; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise<[number]>; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + collateralTokenCount: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + rates(overrides?: CallOverrides): Promise<[BigNumber[]]>; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + redemptionId: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + shares: BigNumber; + amount: BigNumber; + sharesAhead: BigNumber; + } + >; + + redemptions( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[Pool.RedemptionStructOutput]>; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + withdraw( + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt( + loanReceipt: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { shares: BigNumber; redemptionId: BigNumber }>; + + durations(overrides?: CallOverrides): Promise; + + initialize( + params: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + liquidityNodeWithAccrual( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[ILiquidity.NodeInfoStructOutput, ILiquidity.AccrualInfoStructOutput]>; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + collateralTokenCount: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + redemptionId: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + shares: BigNumber; + amount: BigNumber; + sharesAhead: BigNumber; + } + >; + + redemptions( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + callStatic: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt( + loanReceipt: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { shares: BigNumber; redemptionId: BigNumber }>; + + durations(overrides?: CallOverrides): Promise; + + initialize(params: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidate(encodedLoanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidityNode( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + liquidityNodeWithAccrual( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[ILiquidity.NodeInfoStructOutput, ILiquidity.AccrualInfoStructOutput]>; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall(data: PromiseOrValue[], overrides?: CallOverrides): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + collateralTokenCount: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + redemptionId: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber, BigNumber]>; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + shares: BigNumber; + amount: BigNumber; + sharesAhead: BigNumber; + } + >; + + redemptions( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise; + + repay(encodedLoanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + setAdminFeeRate(rate: PromiseOrValue, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber]>; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + }; + + filters: { + 'AdminFeeRateUpdated(uint256)'(rate?: null): AdminFeeRateUpdatedEventFilter; + AdminFeeRateUpdated(rate?: null): AdminFeeRateUpdatedEventFilter; + + 'AdminFeesWithdrawn(address,uint256)'( + account?: PromiseOrValue | null, + amount?: null, + ): AdminFeesWithdrawnEventFilter; + AdminFeesWithdrawn(account?: PromiseOrValue | null, amount?: null): AdminFeesWithdrawnEventFilter; + + 'CollateralLiquidated(bytes32,uint256,uint256)'( + loanReceiptHash?: PromiseOrValue | null, + proceeds?: null, + borrowerProceeds?: null, + ): CollateralLiquidatedEventFilter; + CollateralLiquidated( + loanReceiptHash?: PromiseOrValue | null, + proceeds?: null, + borrowerProceeds?: null, + ): CollateralLiquidatedEventFilter; + + 'Deposited(address,uint128,uint256,uint256)'( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + amount?: null, + shares?: null, + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + amount?: null, + shares?: null, + ): DepositedEventFilter; + + 'LoanLiquidated(bytes32)'(loanReceiptHash?: PromiseOrValue | null): LoanLiquidatedEventFilter; + LoanLiquidated(loanReceiptHash?: PromiseOrValue | null): LoanLiquidatedEventFilter; + + 'LoanOriginated(bytes32,bytes)'( + loanReceiptHash?: PromiseOrValue | null, + loanReceipt?: null, + ): LoanOriginatedEventFilter; + LoanOriginated(loanReceiptHash?: PromiseOrValue | null, loanReceipt?: null): LoanOriginatedEventFilter; + + 'LoanRepaid(bytes32,uint256)'( + loanReceiptHash?: PromiseOrValue | null, + repayment?: null, + ): LoanRepaidEventFilter; + LoanRepaid(loanReceiptHash?: PromiseOrValue | null, repayment?: null): LoanRepaidEventFilter; + + 'Redeemed(address,uint128,uint128,uint256)'( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + redemptionId?: PromiseOrValue | null, + shares?: null, + ): RedeemedEventFilter; + Redeemed( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + redemptionId?: PromiseOrValue | null, + shares?: null, + ): RedeemedEventFilter; + + 'Withdrawn(address,uint128,uint128,uint256,uint256)'( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + redemptionId?: PromiseOrValue | null, + shares?: null, + amount?: null, + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + redemptionId?: PromiseOrValue | null, + shares?: null, + amount?: null, + ): WithdrawnEventFilter; + }; + + estimateGas: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt(loanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + durations(overrides?: CallOverrides): Promise; + + initialize( + params: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode(tick: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidityNodeWithAccrual(tick: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + collateralTokenCount: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + redemptionId: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + redemptions( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + populateTransaction: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt(loanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + durations(overrides?: CallOverrides): Promise; + + initialize( + params: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode(tick: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidityNodeWithAccrual( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + collateralTokenCount: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + redemptionId: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + redemptions( + account: PromiseOrValue, + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + tick: PromiseOrValue, + redemptionId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; +} diff --git a/src/apps/meta-street/contracts/ethers/PoolV2Legacy.ts b/src/apps/meta-street/contracts/ethers/PoolV2Legacy.ts new file mode 100644 index 000000000..25362d012 --- /dev/null +++ b/src/apps/meta-street/contracts/ethers/PoolV2Legacy.ts @@ -0,0 +1,1341 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common'; + +export declare namespace LoanReceipt { + export type NodeReceiptStruct = { + tick: PromiseOrValue; + used: PromiseOrValue; + pending: PromiseOrValue; + }; + + export type NodeReceiptStructOutput = [BigNumber, BigNumber, BigNumber] & { + tick: BigNumber; + used: BigNumber; + pending: BigNumber; + }; + + export type LoanReceiptV1Struct = { + version: PromiseOrValue; + principal: PromiseOrValue; + repayment: PromiseOrValue; + borrower: PromiseOrValue; + maturity: PromiseOrValue; + duration: PromiseOrValue; + collateralToken: PromiseOrValue; + collateralTokenId: PromiseOrValue; + collateralWrapperContextLen: PromiseOrValue; + collateralWrapperContext: PromiseOrValue; + nodeReceipts: LoanReceipt.NodeReceiptStruct[]; + }; + + export type LoanReceiptV1StructOutput = [ + number, + BigNumber, + BigNumber, + string, + BigNumber, + BigNumber, + string, + BigNumber, + number, + string, + LoanReceipt.NodeReceiptStructOutput[], + ] & { + version: number; + principal: BigNumber; + repayment: BigNumber; + borrower: string; + maturity: BigNumber; + duration: BigNumber; + collateralToken: string; + collateralTokenId: BigNumber; + collateralWrapperContextLen: number; + collateralWrapperContext: string; + nodeReceipts: LoanReceipt.NodeReceiptStructOutput[]; + }; +} + +export declare namespace Pool { + export type DepositStruct = { + shares: PromiseOrValue; + redemptionPending: PromiseOrValue; + redemptionIndex: PromiseOrValue; + redemptionTarget: PromiseOrValue; + }; + + export type DepositStructOutput = [BigNumber, BigNumber, BigNumber, BigNumber] & { + shares: BigNumber; + redemptionPending: BigNumber; + redemptionIndex: BigNumber; + redemptionTarget: BigNumber; + }; +} + +export declare namespace ILiquidity { + export type NodeInfoStruct = { + tick: PromiseOrValue; + value: PromiseOrValue; + shares: PromiseOrValue; + available: PromiseOrValue; + pending: PromiseOrValue; + redemptions: PromiseOrValue; + prev: PromiseOrValue; + next: PromiseOrValue; + }; + + export type NodeInfoStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + ] & { + tick: BigNumber; + value: BigNumber; + shares: BigNumber; + available: BigNumber; + pending: BigNumber; + redemptions: BigNumber; + prev: BigNumber; + next: BigNumber; + }; +} + +export interface PoolV2LegacyInterface extends utils.Interface { + functions: { + 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS()': FunctionFragment; + 'COLLATERAL_FILTER_NAME()': FunctionFragment; + 'COLLATERAL_FILTER_VERSION()': FunctionFragment; + 'IMPLEMENTATION_NAME()': FunctionFragment; + 'IMPLEMENTATION_VERSION()': FunctionFragment; + 'INTEREST_RATE_MODEL_NAME()': FunctionFragment; + 'INTEREST_RATE_MODEL_VERSION()': FunctionFragment; + 'TICK_LIMIT_SPACING_BASIS_POINTS()': FunctionFragment; + 'admin()': FunctionFragment; + 'adminFeeBalance()': FunctionFragment; + 'adminFeeRate()': FunctionFragment; + 'borrow(uint256,uint64,address,uint256,uint256,uint128[],bytes)': FunctionFragment; + 'collateralLiquidator()': FunctionFragment; + 'collateralToken()': FunctionFragment; + 'collateralWrappers()': FunctionFragment; + 'currencyToken()': FunctionFragment; + 'decodeLoanReceipt(bytes)': FunctionFragment; + 'delegationRegistry()': FunctionFragment; + 'deposit(uint128,uint256,uint256)': FunctionFragment; + 'deposits(address,uint128)': FunctionFragment; + 'durations()': FunctionFragment; + 'liquidate(bytes)': FunctionFragment; + 'liquidityNode(uint128)': FunctionFragment; + 'liquidityNodes(uint128,uint128)': FunctionFragment; + 'loans(bytes32)': FunctionFragment; + 'multicall(bytes[])': FunctionFragment; + 'onCollateralLiquidated(bytes,uint256)': FunctionFragment; + 'quote(uint256,uint64,address,uint256[],uint128[],bytes)': FunctionFragment; + 'quoteRefinance(bytes,uint256,uint64,uint128[])': FunctionFragment; + 'rates()': FunctionFragment; + 'rebalance(uint128,uint128,uint256)': FunctionFragment; + 'redeem(uint128,uint256)': FunctionFragment; + 'redemptionAvailable(address,uint128)': FunctionFragment; + 'refinance(bytes,uint256,uint64,uint256,uint128[])': FunctionFragment; + 'repay(bytes)': FunctionFragment; + 'setAdminFeeRate(uint32)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'withdraw(uint128)': FunctionFragment; + 'withdrawAdminFees(address,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS' + | 'COLLATERAL_FILTER_NAME' + | 'COLLATERAL_FILTER_VERSION' + | 'IMPLEMENTATION_NAME' + | 'IMPLEMENTATION_VERSION' + | 'INTEREST_RATE_MODEL_NAME' + | 'INTEREST_RATE_MODEL_VERSION' + | 'TICK_LIMIT_SPACING_BASIS_POINTS' + | 'admin' + | 'adminFeeBalance' + | 'adminFeeRate' + | 'borrow' + | 'collateralLiquidator' + | 'collateralToken' + | 'collateralWrappers' + | 'currencyToken' + | 'decodeLoanReceipt' + | 'delegationRegistry' + | 'deposit' + | 'deposits' + | 'durations' + | 'liquidate' + | 'liquidityNode' + | 'liquidityNodes' + | 'loans' + | 'multicall' + | 'onCollateralLiquidated' + | 'quote' + | 'quoteRefinance' + | 'rates' + | 'rebalance' + | 'redeem' + | 'redemptionAvailable' + | 'refinance' + | 'repay' + | 'setAdminFeeRate' + | 'supportsInterface' + | 'withdraw' + | 'withdrawAdminFees', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS', values?: undefined): string; + encodeFunctionData(functionFragment: 'COLLATERAL_FILTER_NAME', values?: undefined): string; + encodeFunctionData(functionFragment: 'COLLATERAL_FILTER_VERSION', values?: undefined): string; + encodeFunctionData(functionFragment: 'IMPLEMENTATION_NAME', values?: undefined): string; + encodeFunctionData(functionFragment: 'IMPLEMENTATION_VERSION', values?: undefined): string; + encodeFunctionData(functionFragment: 'INTEREST_RATE_MODEL_NAME', values?: undefined): string; + encodeFunctionData(functionFragment: 'INTEREST_RATE_MODEL_VERSION', values?: undefined): string; + encodeFunctionData(functionFragment: 'TICK_LIMIT_SPACING_BASIS_POINTS', values?: undefined): string; + encodeFunctionData(functionFragment: 'admin', values?: undefined): string; + encodeFunctionData(functionFragment: 'adminFeeBalance', values?: undefined): string; + encodeFunctionData(functionFragment: 'adminFeeRate', values?: undefined): string; + encodeFunctionData( + functionFragment: 'borrow', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + ], + ): string; + encodeFunctionData(functionFragment: 'collateralLiquidator', values?: undefined): string; + encodeFunctionData(functionFragment: 'collateralToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'collateralWrappers', values?: undefined): string; + encodeFunctionData(functionFragment: 'currencyToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'decodeLoanReceipt', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'delegationRegistry', values?: undefined): string; + encodeFunctionData( + functionFragment: 'deposit', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'deposits', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'durations', values?: undefined): string; + encodeFunctionData(functionFragment: 'liquidate', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'liquidityNode', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'liquidityNodes', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'loans', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'multicall', values: [PromiseOrValue[]]): string; + encodeFunctionData( + functionFragment: 'onCollateralLiquidated', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'quote', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue, + ], + ): string; + encodeFunctionData( + functionFragment: 'quoteRefinance', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + ], + ): string; + encodeFunctionData(functionFragment: 'rates', values?: undefined): string; + encodeFunctionData( + functionFragment: 'rebalance', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'redeem', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'redemptionAvailable', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'refinance', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + ], + ): string; + encodeFunctionData(functionFragment: 'repay', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'setAdminFeeRate', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'withdrawAdminFees', + values: [PromiseOrValue, PromiseOrValue], + ): string; + + decodeFunctionResult(functionFragment: 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'COLLATERAL_FILTER_NAME', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'COLLATERAL_FILTER_VERSION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'IMPLEMENTATION_NAME', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'IMPLEMENTATION_VERSION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'INTEREST_RATE_MODEL_NAME', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'INTEREST_RATE_MODEL_VERSION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'TICK_LIMIT_SPACING_BASIS_POINTS', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'admin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'adminFeeBalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'adminFeeRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'borrow', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralLiquidator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralWrappers', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'currencyToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decodeLoanReceipt', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'delegationRegistry', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposits', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'durations', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidityNode', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidityNodes', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'loans', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'multicall', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'onCollateralLiquidated', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'quote', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'quoteRefinance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rates', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rebalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'redemptionAvailable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'refinance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'repay', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setAdminFeeRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawAdminFees', data: BytesLike): Result; + + events: { + 'AdminFeeRateUpdated(uint256)': EventFragment; + 'AdminFeesWithdrawn(address,uint256)': EventFragment; + 'CollateralLiquidated(bytes32,uint256,uint256)': EventFragment; + 'Deposited(address,uint128,uint256,uint256)': EventFragment; + 'LoanLiquidated(bytes32)': EventFragment; + 'LoanOriginated(bytes32,bytes)': EventFragment; + 'LoanRepaid(bytes32,uint256)': EventFragment; + 'Redeemed(address,uint128,uint256)': EventFragment; + 'Withdrawn(address,uint128,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'AdminFeeRateUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'AdminFeesWithdrawn'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CollateralLiquidated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposited'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LoanLiquidated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LoanOriginated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LoanRepaid'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Redeemed'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdrawn'): EventFragment; +} + +export interface AdminFeeRateUpdatedEventObject { + rate: BigNumber; +} +export type AdminFeeRateUpdatedEvent = TypedEvent<[BigNumber], AdminFeeRateUpdatedEventObject>; + +export type AdminFeeRateUpdatedEventFilter = TypedEventFilter; + +export interface AdminFeesWithdrawnEventObject { + account: string; + amount: BigNumber; +} +export type AdminFeesWithdrawnEvent = TypedEvent<[string, BigNumber], AdminFeesWithdrawnEventObject>; + +export type AdminFeesWithdrawnEventFilter = TypedEventFilter; + +export interface CollateralLiquidatedEventObject { + loanReceiptHash: string; + proceeds: BigNumber; + borrowerProceeds: BigNumber; +} +export type CollateralLiquidatedEvent = TypedEvent<[string, BigNumber, BigNumber], CollateralLiquidatedEventObject>; + +export type CollateralLiquidatedEventFilter = TypedEventFilter; + +export interface DepositedEventObject { + account: string; + tick: BigNumber; + amount: BigNumber; + shares: BigNumber; +} +export type DepositedEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], DepositedEventObject>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface LoanLiquidatedEventObject { + loanReceiptHash: string; +} +export type LoanLiquidatedEvent = TypedEvent<[string], LoanLiquidatedEventObject>; + +export type LoanLiquidatedEventFilter = TypedEventFilter; + +export interface LoanOriginatedEventObject { + loanReceiptHash: string; + loanReceipt: string; +} +export type LoanOriginatedEvent = TypedEvent<[string, string], LoanOriginatedEventObject>; + +export type LoanOriginatedEventFilter = TypedEventFilter; + +export interface LoanRepaidEventObject { + loanReceiptHash: string; + repayment: BigNumber; +} +export type LoanRepaidEvent = TypedEvent<[string, BigNumber], LoanRepaidEventObject>; + +export type LoanRepaidEventFilter = TypedEventFilter; + +export interface RedeemedEventObject { + account: string; + tick: BigNumber; + shares: BigNumber; +} +export type RedeemedEvent = TypedEvent<[string, BigNumber, BigNumber], RedeemedEventObject>; + +export type RedeemedEventFilter = TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + tick: BigNumber; + shares: BigNumber; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], WithdrawnEventObject>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface PoolV2Legacy extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoolV2LegacyInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise<[BigNumber]>; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise<[string]>; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise<[string]>; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise<[string]>; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise<[string]>; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise<[string]>; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise<[string]>; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise<[BigNumber]>; + + admin(overrides?: CallOverrides): Promise<[string]>; + + adminFeeBalance(overrides?: CallOverrides): Promise<[BigNumber]>; + + adminFeeRate(overrides?: CallOverrides): Promise<[number]>; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise<[string]>; + + collateralToken(overrides?: CallOverrides): Promise<[string]>; + + collateralWrappers(overrides?: CallOverrides): Promise<[string[]]>; + + currencyToken(overrides?: CallOverrides): Promise<[string]>; + + decodeLoanReceipt( + loanReceipt: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[LoanReceipt.LoanReceiptV1StructOutput]>; + + delegationRegistry(overrides?: CallOverrides): Promise<[string]>; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[Pool.DepositStructOutput]>; + + durations(overrides?: CallOverrides): Promise<[BigNumber[]]>; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[ILiquidity.NodeInfoStructOutput]>; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[ILiquidity.NodeInfoStructOutput[]]>; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise<[number]>; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + quoteRefinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber]>; + + rates(overrides?: CallOverrides): Promise<[BigNumber[]]>; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { shares: BigNumber; amount: BigNumber }>; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + withdraw( + tick: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt( + loanReceipt: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + durations(overrides?: CallOverrides): Promise; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + quoteRefinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber]>; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { shares: BigNumber; amount: BigNumber }>; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + tick: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + callStatic: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt( + loanReceipt: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + durations(overrides?: CallOverrides): Promise; + + liquidate(encodedLoanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidityNode( + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall(data: PromiseOrValue[], overrides?: CallOverrides): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + quoteRefinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber]>; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber, BigNumber]>; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { shares: BigNumber; amount: BigNumber }>; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise; + + repay(encodedLoanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + setAdminFeeRate(rate: PromiseOrValue, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw(tick: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + }; + + filters: { + 'AdminFeeRateUpdated(uint256)'(rate?: null): AdminFeeRateUpdatedEventFilter; + AdminFeeRateUpdated(rate?: null): AdminFeeRateUpdatedEventFilter; + + 'AdminFeesWithdrawn(address,uint256)'( + account?: PromiseOrValue | null, + amount?: null, + ): AdminFeesWithdrawnEventFilter; + AdminFeesWithdrawn(account?: PromiseOrValue | null, amount?: null): AdminFeesWithdrawnEventFilter; + + 'CollateralLiquidated(bytes32,uint256,uint256)'( + loanReceiptHash?: PromiseOrValue | null, + proceeds?: null, + borrowerProceeds?: null, + ): CollateralLiquidatedEventFilter; + CollateralLiquidated( + loanReceiptHash?: PromiseOrValue | null, + proceeds?: null, + borrowerProceeds?: null, + ): CollateralLiquidatedEventFilter; + + 'Deposited(address,uint128,uint256,uint256)'( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + amount?: null, + shares?: null, + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + amount?: null, + shares?: null, + ): DepositedEventFilter; + + 'LoanLiquidated(bytes32)'(loanReceiptHash?: PromiseOrValue | null): LoanLiquidatedEventFilter; + LoanLiquidated(loanReceiptHash?: PromiseOrValue | null): LoanLiquidatedEventFilter; + + 'LoanOriginated(bytes32,bytes)'( + loanReceiptHash?: PromiseOrValue | null, + loanReceipt?: null, + ): LoanOriginatedEventFilter; + LoanOriginated(loanReceiptHash?: PromiseOrValue | null, loanReceipt?: null): LoanOriginatedEventFilter; + + 'LoanRepaid(bytes32,uint256)'( + loanReceiptHash?: PromiseOrValue | null, + repayment?: null, + ): LoanRepaidEventFilter; + LoanRepaid(loanReceiptHash?: PromiseOrValue | null, repayment?: null): LoanRepaidEventFilter; + + 'Redeemed(address,uint128,uint256)'( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + shares?: null, + ): RedeemedEventFilter; + Redeemed( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + shares?: null, + ): RedeemedEventFilter; + + 'Withdrawn(address,uint128,uint256,uint256)'( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + shares?: null, + amount?: null, + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + tick?: PromiseOrValue | null, + shares?: null, + amount?: null, + ): WithdrawnEventFilter; + }; + + estimateGas: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt(loanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + durations(overrides?: CallOverrides): Promise; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode(tick: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + quoteRefinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + tick: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + populateTransaction: { + BORROWER_SURPLUS_SPLIT_BASIS_POINTS(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_NAME(overrides?: CallOverrides): Promise; + + COLLATERAL_FILTER_VERSION(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_NAME(overrides?: CallOverrides): Promise; + + IMPLEMENTATION_VERSION(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_NAME(overrides?: CallOverrides): Promise; + + INTEREST_RATE_MODEL_VERSION(overrides?: CallOverrides): Promise; + + TICK_LIMIT_SPACING_BASIS_POINTS(overrides?: CallOverrides): Promise; + + admin(overrides?: CallOverrides): Promise; + + adminFeeBalance(overrides?: CallOverrides): Promise; + + adminFeeRate(overrides?: CallOverrides): Promise; + + borrow( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenId: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralLiquidator(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralWrappers(overrides?: CallOverrides): Promise; + + currencyToken(overrides?: CallOverrides): Promise; + + decodeLoanReceipt(loanReceipt: PromiseOrValue, overrides?: CallOverrides): Promise; + + delegationRegistry(overrides?: CallOverrides): Promise; + + deposit( + tick: PromiseOrValue, + amount: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + deposits( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + durations(overrides?: CallOverrides): Promise; + + liquidate( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidityNode(tick: PromiseOrValue, overrides?: CallOverrides): Promise; + + liquidityNodes( + startTick: PromiseOrValue, + endTick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + loans(receiptHash: PromiseOrValue, overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + onCollateralLiquidated( + encodedLoanReceipt: PromiseOrValue, + proceeds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + quote( + principal: PromiseOrValue, + duration: PromiseOrValue, + collateralToken: PromiseOrValue, + collateralTokenIds: PromiseOrValue[], + ticks: PromiseOrValue[], + options: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + quoteRefinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise; + + rates(overrides?: CallOverrides): Promise; + + rebalance( + srcTick: PromiseOrValue, + dstTick: PromiseOrValue, + minShares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redeem( + tick: PromiseOrValue, + shares: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + redemptionAvailable( + account: PromiseOrValue, + tick: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + refinance( + encodedLoanReceipt: PromiseOrValue, + principal: PromiseOrValue, + duration: PromiseOrValue, + maxRepayment: PromiseOrValue, + ticks: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + repay( + encodedLoanReceipt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setAdminFeeRate( + rate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + tick: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + withdrawAdminFees( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; +} diff --git a/src/apps/meta-street/contracts/ethers/common.ts b/src/apps/meta-street/contracts/ethers/common.ts new file mode 100644 index 000000000..35f31be99 --- /dev/null +++ b/src/apps/meta-street/contracts/ethers/common.ts @@ -0,0 +1,32 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from '@ethersproject/providers'; +import type { Event, EventFilter } from 'ethers'; + +export interface TypedEvent = any, TArgsObject = any> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + (eventFilter: TypedEventFilter, listener: TypedListener): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory ? C : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never; + +export type PromiseOrValue = T | Promise; diff --git a/src/apps/meta-street/contracts/ethers/factories/PoolV2Legacy__factory.ts b/src/apps/meta-street/contracts/ethers/factories/PoolV2Legacy__factory.ts new file mode 100644 index 000000000..d2e6f498e --- /dev/null +++ b/src/apps/meta-street/contracts/ethers/factories/PoolV2Legacy__factory.ts @@ -0,0 +1,1249 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { PoolV2Legacy, PoolV2LegacyInterface } from '../PoolV2Legacy'; + +const _abi = [ + { + inputs: [], + name: 'InactiveLiquidity', + type: 'error', + }, + { + inputs: [], + name: 'InsufficientLiquidity', + type: 'error', + }, + { + inputs: [], + name: 'InsufficientShares', + type: 'error', + }, + { + inputs: [], + name: 'InsufficientTickSpacing', + type: 'error', + }, + { + inputs: [], + name: 'InvalidAddress', + type: 'error', + }, + { + inputs: [], + name: 'InvalidBorrowOptions', + type: 'error', + }, + { + inputs: [], + name: 'InvalidCaller', + type: 'error', + }, + { + inputs: [], + name: 'InvalidLoanReceipt', + type: 'error', + }, + { + inputs: [], + name: 'InvalidReceiptEncoding', + type: 'error', + }, + { + inputs: [], + name: 'InvalidRedemptionStatus', + type: 'error', + }, + { + inputs: [], + name: 'InvalidTick', + type: 'error', + }, + { + inputs: [], + name: 'LoanNotExpired', + type: 'error', + }, + { + inputs: [], + name: 'ParameterOutOfBounds', + type: 'error', + }, + { + inputs: [], + name: 'RepaymentTooHigh', + type: 'error', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'UnsupportedCollateral', + type: 'error', + }, + { + inputs: [], + name: 'UnsupportedLoanDuration', + type: 'error', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'rate', + type: 'uint256', + }, + ], + name: 'AdminFeeRateUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'AdminFeesWithdrawn', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'uint256', + name: 'proceeds', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'borrowerProceeds', + type: 'uint256', + }, + ], + name: 'CollateralLiquidated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'Deposited', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + ], + name: 'LoanLiquidated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'bytes', + name: 'loanReceipt', + type: 'bytes', + }, + ], + name: 'LoanOriginated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'uint256', + name: 'repayment', + type: 'uint256', + }, + ], + name: 'LoanRepaid', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + indexed: false, + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'Redeemed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + indexed: false, + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [], + name: 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'COLLATERAL_FILTER_NAME', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'COLLATERAL_FILTER_VERSION', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'IMPLEMENTATION_NAME', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'IMPLEMENTATION_VERSION', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'INTEREST_RATE_MODEL_NAME', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'INTEREST_RATE_MODEL_VERSION', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'TICK_LIMIT_SPACING_BASIS_POINTS', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'admin', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'adminFeeBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'adminFeeRate', + outputs: [ + { + internalType: 'uint32', + name: '', + type: 'uint32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'address', + name: 'collateralToken', + type: 'address', + }, + { + internalType: 'uint256', + name: 'collateralTokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'maxRepayment', + type: 'uint256', + }, + { + internalType: 'uint128[]', + name: 'ticks', + type: 'uint128[]', + }, + { + internalType: 'bytes', + name: 'options', + type: 'bytes', + }, + ], + name: 'borrow', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'collateralLiquidator', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'collateralToken', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'collateralWrappers', + outputs: [ + { + internalType: 'address[]', + name: '', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'currencyToken', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'loanReceipt', + type: 'bytes', + }, + ], + name: 'decodeLoanReceipt', + outputs: [ + { + components: [ + { + internalType: 'uint8', + name: 'version', + type: 'uint8', + }, + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'repayment', + type: 'uint256', + }, + { + internalType: 'address', + name: 'borrower', + type: 'address', + }, + { + internalType: 'uint64', + name: 'maturity', + type: 'uint64', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'address', + name: 'collateralToken', + type: 'address', + }, + { + internalType: 'uint256', + name: 'collateralTokenId', + type: 'uint256', + }, + { + internalType: 'uint16', + name: 'collateralWrapperContextLen', + type: 'uint16', + }, + { + internalType: 'bytes', + name: 'collateralWrapperContext', + type: 'bytes', + }, + { + components: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'used', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + ], + internalType: 'struct LoanReceipt.NodeReceipt[]', + name: 'nodeReceipts', + type: 'tuple[]', + }, + ], + internalType: 'struct LoanReceipt.LoanReceiptV1', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'delegationRegistry', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minShares', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + ], + name: 'deposits', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'shares', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionPending', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionIndex', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionTarget', + type: 'uint128', + }, + ], + internalType: 'struct Pool.Deposit', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'durations', + outputs: [ + { + internalType: 'uint64[]', + name: '', + type: 'uint64[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + ], + name: 'liquidate', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + ], + name: 'liquidityNode', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'value', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'shares', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'available', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptions', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'prev', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'next', + type: 'uint128', + }, + ], + internalType: 'struct ILiquidity.NodeInfo', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'startTick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'endTick', + type: 'uint128', + }, + ], + name: 'liquidityNodes', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'value', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'shares', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'available', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptions', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'prev', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'next', + type: 'uint128', + }, + ], + internalType: 'struct ILiquidity.NodeInfo[]', + name: '', + type: 'tuple[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'receiptHash', + type: 'bytes32', + }, + ], + name: 'loans', + outputs: [ + { + internalType: 'enum Pool.LoanStatus', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes[]', + name: 'data', + type: 'bytes[]', + }, + ], + name: 'multicall', + outputs: [ + { + internalType: 'bytes[]', + name: 'results', + type: 'bytes[]', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'proceeds', + type: 'uint256', + }, + ], + name: 'onCollateralLiquidated', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'address', + name: 'collateralToken', + type: 'address', + }, + { + internalType: 'uint256[]', + name: 'collateralTokenIds', + type: 'uint256[]', + }, + { + internalType: 'uint128[]', + name: 'ticks', + type: 'uint128[]', + }, + { + internalType: 'bytes', + name: 'options', + type: 'bytes', + }, + ], + name: 'quote', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'uint128[]', + name: 'ticks', + type: 'uint128[]', + }, + ], + name: 'quoteRefinance', + outputs: [ + { + internalType: 'int256', + name: '', + type: 'int256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rates', + outputs: [ + { + internalType: 'uint64[]', + name: '', + type: 'uint64[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'srcTick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'dstTick', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'minShares', + type: 'uint256', + }, + ], + name: 'rebalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'redeem', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + ], + name: 'redemptionAvailable', + outputs: [ + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'uint256', + name: 'maxRepayment', + type: 'uint256', + }, + { + internalType: 'uint128[]', + name: 'ticks', + type: 'uint128[]', + }, + ], + name: 'refinance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + ], + name: 'repay', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint32', + name: 'rate', + type: 'uint32', + }, + ], + name: 'setAdminFeeRate', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + ], + name: 'withdraw', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'withdrawAdminFees', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class PoolV2Legacy__factory { + static readonly abi = _abi; + static createInterface(): PoolV2LegacyInterface { + return new utils.Interface(_abi) as PoolV2LegacyInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): PoolV2Legacy { + return new Contract(address, _abi, signerOrProvider) as PoolV2Legacy; + } +} diff --git a/src/apps/meta-street/contracts/ethers/factories/PoolV2__factory.ts b/src/apps/meta-street/contracts/ethers/factories/PoolV2__factory.ts new file mode 100644 index 000000000..0e95cf1f1 --- /dev/null +++ b/src/apps/meta-street/contracts/ethers/factories/PoolV2__factory.ts @@ -0,0 +1,1431 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { PoolV2, PoolV2Interface, WeightedInterestRateModel } from '../PoolV2'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'collateralLiquidator', + type: 'address', + }, + { + internalType: 'address', + name: 'delegationRegistry', + type: 'address', + }, + { + internalType: 'address[]', + name: 'collateralWrappers', + type: 'address[]', + }, + { + components: [ + { + internalType: 'uint64', + name: 'tickThreshold', + type: 'uint64', + }, + { + internalType: 'uint64', + name: 'tickExponential', + type: 'uint64', + }, + ], + internalType: 'struct WeightedInterestRateModel.Parameters', + name: 'parameters', + type: 'tuple', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + inputs: [], + name: 'InactiveLiquidity', + type: 'error', + }, + { + inputs: [], + name: 'InsufficientLiquidity', + type: 'error', + }, + { + inputs: [], + name: 'InsufficientShares', + type: 'error', + }, + { + inputs: [], + name: 'InsufficientTickSpacing', + type: 'error', + }, + { + inputs: [], + name: 'InsufficientUtilization', + type: 'error', + }, + { + inputs: [], + name: 'InvalidBorrowOptions', + type: 'error', + }, + { + inputs: [], + name: 'InvalidCaller', + type: 'error', + }, + { + inputs: [], + name: 'InvalidCollateralFilterParameters', + type: 'error', + }, + { + inputs: [], + name: 'InvalidInterestRateModelParameters', + type: 'error', + }, + { + inputs: [], + name: 'InvalidLoanReceipt', + type: 'error', + }, + { + inputs: [], + name: 'InvalidParameters', + type: 'error', + }, + { + inputs: [], + name: 'InvalidReceiptEncoding', + type: 'error', + }, + { + inputs: [], + name: 'InvalidRedemptionStatus', + type: 'error', + }, + { + inputs: [], + name: 'InvalidTick', + type: 'error', + }, + { + inputs: [], + name: 'LoanNotExpired', + type: 'error', + }, + { + inputs: [], + name: 'RepaymentTooHigh', + type: 'error', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'UnsupportedCollateral', + type: 'error', + }, + { + inputs: [], + name: 'UnsupportedLoanDuration', + type: 'error', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'rate', + type: 'uint256', + }, + ], + name: 'AdminFeeRateUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'AdminFeesWithdrawn', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'uint256', + name: 'proceeds', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'borrowerProceeds', + type: 'uint256', + }, + ], + name: 'CollateralLiquidated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'Deposited', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + ], + name: 'LoanLiquidated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'bytes', + name: 'loanReceipt', + type: 'bytes', + }, + ], + name: 'LoanOriginated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'loanReceiptHash', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'uint256', + name: 'repayment', + type: 'uint256', + }, + ], + name: 'LoanRepaid', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + indexed: true, + internalType: 'uint128', + name: 'redemptionId', + type: 'uint128', + }, + { + indexed: false, + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'Redeemed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + indexed: true, + internalType: 'uint128', + name: 'redemptionId', + type: 'uint128', + }, + { + indexed: false, + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [], + name: 'BORROWER_SURPLUS_SPLIT_BASIS_POINTS', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'COLLATERAL_FILTER_NAME', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'COLLATERAL_FILTER_VERSION', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'IMPLEMENTATION_NAME', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'IMPLEMENTATION_VERSION', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'INTEREST_RATE_MODEL_NAME', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'INTEREST_RATE_MODEL_VERSION', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'TICK_LIMIT_SPACING_BASIS_POINTS', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'admin', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'adminFeeBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'adminFeeRate', + outputs: [ + { + internalType: 'uint32', + name: '', + type: 'uint32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'address', + name: 'collateralToken', + type: 'address', + }, + { + internalType: 'uint256', + name: 'collateralTokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'maxRepayment', + type: 'uint256', + }, + { + internalType: 'uint128[]', + name: 'ticks', + type: 'uint128[]', + }, + { + internalType: 'bytes', + name: 'options', + type: 'bytes', + }, + ], + name: 'borrow', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'collateralLiquidator', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'collateralToken', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'collateralWrappers', + outputs: [ + { + internalType: 'address[]', + name: '', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'currencyToken', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'loanReceipt', + type: 'bytes', + }, + ], + name: 'decodeLoanReceipt', + outputs: [ + { + components: [ + { + internalType: 'uint8', + name: 'version', + type: 'uint8', + }, + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'repayment', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'adminFee', + type: 'uint256', + }, + { + internalType: 'address', + name: 'borrower', + type: 'address', + }, + { + internalType: 'uint64', + name: 'maturity', + type: 'uint64', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'address', + name: 'collateralToken', + type: 'address', + }, + { + internalType: 'uint256', + name: 'collateralTokenId', + type: 'uint256', + }, + { + internalType: 'uint16', + name: 'collateralWrapperContextLen', + type: 'uint16', + }, + { + internalType: 'bytes', + name: 'collateralWrapperContext', + type: 'bytes', + }, + { + components: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'used', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + ], + internalType: 'struct LoanReceipt.NodeReceipt[]', + name: 'nodeReceipts', + type: 'tuple[]', + }, + ], + internalType: 'struct LoanReceipt.LoanReceiptV2', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'delegationRegistry', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minShares', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + ], + name: 'deposits', + outputs: [ + { + internalType: 'uint128', + name: 'shares', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionId', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'durations', + outputs: [ + { + internalType: 'uint64[]', + name: '', + type: 'uint64[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'params', + type: 'bytes', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + ], + name: 'liquidate', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + ], + name: 'liquidityNode', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'value', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'shares', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'available', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptions', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'prev', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'next', + type: 'uint128', + }, + ], + internalType: 'struct ILiquidity.NodeInfo', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + ], + name: 'liquidityNodeWithAccrual', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'value', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'shares', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'available', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptions', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'prev', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'next', + type: 'uint128', + }, + ], + internalType: 'struct ILiquidity.NodeInfo', + name: '', + type: 'tuple', + }, + { + components: [ + { + internalType: 'uint128', + name: 'accrued', + type: 'uint128', + }, + { + internalType: 'uint64', + name: 'rate', + type: 'uint64', + }, + { + internalType: 'uint64', + name: 'timestamp', + type: 'uint64', + }, + ], + internalType: 'struct ILiquidity.AccrualInfo', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'startTick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'endTick', + type: 'uint128', + }, + ], + name: 'liquidityNodes', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'value', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'shares', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'available', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptions', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'prev', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'next', + type: 'uint128', + }, + ], + internalType: 'struct ILiquidity.NodeInfo[]', + name: '', + type: 'tuple[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'receiptHash', + type: 'bytes32', + }, + ], + name: 'loans', + outputs: [ + { + internalType: 'enum Pool.LoanStatus', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes[]', + name: 'data', + type: 'bytes[]', + }, + ], + name: 'multicall', + outputs: [ + { + internalType: 'bytes[]', + name: 'results', + type: 'bytes[]', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'proceeds', + type: 'uint256', + }, + ], + name: 'onCollateralLiquidated', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'address', + name: 'collateralToken', + type: 'address', + }, + { + internalType: 'uint256[]', + name: 'collateralTokenIds', + type: 'uint256[]', + }, + { + internalType: 'uint256', + name: 'collateralTokenCount', + type: 'uint256', + }, + { + internalType: 'uint128[]', + name: 'ticks', + type: 'uint128[]', + }, + { + internalType: 'bytes', + name: 'options', + type: 'bytes', + }, + ], + name: 'quote', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rates', + outputs: [ + { + internalType: 'uint64[]', + name: '', + type: 'uint64[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'srcTick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'dstTick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionId', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'minShares', + type: 'uint256', + }, + ], + name: 'rebalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'redeem', + outputs: [ + { + internalType: 'uint128', + name: '', + type: 'uint128', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionId', + type: 'uint128', + }, + ], + name: 'redemptionAvailable', + outputs: [ + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'sharesAhead', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionId', + type: 'uint128', + }, + ], + name: 'redemptions', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'pending', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'index', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'target', + type: 'uint128', + }, + ], + internalType: 'struct Pool.Redemption', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'principal', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'duration', + type: 'uint64', + }, + { + internalType: 'uint256', + name: 'maxRepayment', + type: 'uint256', + }, + { + internalType: 'uint128[]', + name: 'ticks', + type: 'uint128[]', + }, + ], + name: 'refinance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'encodedLoanReceipt', + type: 'bytes', + }, + ], + name: 'repay', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint32', + name: 'rate', + type: 'uint32', + }, + ], + name: 'setAdminFeeRate', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: 'tick', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'redemptionId', + type: 'uint128', + }, + ], + name: 'withdraw', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'withdrawAdminFees', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class PoolV2__factory { + static readonly abi = _abi; + static createInterface(): PoolV2Interface { + return new utils.Interface(_abi) as PoolV2Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): PoolV2 { + return new Contract(address, _abi, signerOrProvider) as PoolV2; + } +} diff --git a/src/apps/meta-street/contracts/ethers/factories/index.ts b/src/apps/meta-street/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..1989c4a18 --- /dev/null +++ b/src/apps/meta-street/contracts/ethers/factories/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { PoolV2__factory } from './PoolV2__factory'; +export { PoolV2Legacy__factory } from './PoolV2Legacy__factory'; diff --git a/src/apps/meta-street/contracts/ethers/index.ts b/src/apps/meta-street/contracts/ethers/index.ts new file mode 100644 index 000000000..78a3b61a2 --- /dev/null +++ b/src/apps/meta-street/contracts/ethers/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { PoolV2 } from './PoolV2'; +export type { PoolV2Legacy } from './PoolV2Legacy'; +export * as factories from './factories'; +export { PoolV2Legacy__factory } from './factories/PoolV2Legacy__factory'; +export { PoolV2__factory } from './factories/PoolV2__factory'; diff --git a/src/apps/meta-street/contracts/index.ts b/src/apps/meta-street/contracts/index.ts new file mode 100644 index 000000000..945b63061 --- /dev/null +++ b/src/apps/meta-street/contracts/index.ts @@ -0,0 +1,27 @@ +import { Injectable, Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { ContractFactory } from '~contract/contracts'; +import { Network } from '~types/network.interface'; + +import { PoolV2__factory, PoolV2Legacy__factory } from './ethers'; + +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class MetaStreetContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + poolV2({ address, network }: ContractOpts) { + return PoolV2__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + poolV2Legacy({ address, network }: ContractOpts) { + return PoolV2Legacy__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { PoolV2 } from './ethers'; +export type { PoolV2Legacy } from './ethers'; diff --git a/src/apps/meta-street/ethereum/meta-street.lending-v2-legacy.contract-position-fetcher.ts b/src/apps/meta-street/ethereum/meta-street.lending-v2-legacy.contract-position-fetcher.ts new file mode 100644 index 000000000..279f40fb0 --- /dev/null +++ b/src/apps/meta-street/ethereum/meta-street.lending-v2-legacy.contract-position-fetcher.ts @@ -0,0 +1,233 @@ +import { Inject } from '@nestjs/common'; +import { BigNumberish, BigNumber, constants } from 'ethers'; +import { gql } from 'graphql-request'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { PositionTemplate } from '~app-toolkit/decorators/position-template.decorator'; +import { gqlFetch } from '~app-toolkit/helpers/the-graph.helper'; + +import { ContractPositionTemplatePositionFetcher } from '~position/template/contract-position.template.position-fetcher'; +import { + GetDefinitionsParams, + GetTokenDefinitionsParams, + UnderlyingTokenDefinition, + GetDisplayPropsParams, + GetTokenBalancesParams, + GetDataPropsParams, +} from '~position/template/contract-position.template.types'; +import { MetaType } from '~position/position.interface'; + +import { MetaStreetContractFactory, PoolV2Legacy } from '../contracts'; + +export const GET_POOLS_QUERY = gql` + { + pools(where: { implementationVersionMajor: "1" }) { + id + ticks { + id + limit + duration + rate + raw + } + currencyToken { + symbol + } + collateralToken { + name + } + } + } +`; + +export type GetPoolsResponse = { + pools: { + id: string; + ticks: { + id: string; + limit: BigNumber; + duration: BigNumber; + rate: BigNumber; + raw: BigNumber; + }[]; + currencyToken: string; + collateralToken: string; + }[]; +}; + +export const SUBGRAPH_URL = 'https://api.thegraph.com/subgraphs/name/metastreet-labs/metastreet-v2-beta'; + +/* Block number of the creation of pool factory */ +export const START_BLOCK_NUMBER = 17497132; + +export type ContractPositionDefinition = { + address: string; + tickId: string; + tick: BigNumber; + limit: BigNumber; + duration: BigNumber; + rate: BigNumber; + currencyTokenSymbol: string; + collateralTokenName: string; +}; + +export type DataProps = { + positionKey: string; + tick: BigNumber; // encoded tick +}; + +export type Deposited = { + amount: BigNumber; + shares: BigNumber; +}; + +export type Withdrawn = { + amount: BigNumber; + shares: BigNumber; +}; + +export type Redemption = { + amount: BigNumber; + shares: BigNumber; +}; + +@PositionTemplate() +export class EthereumMetaStreetLendingV2LegacyContractPositionFetcher extends ContractPositionTemplatePositionFetcher { + groupLabel: string = 'Lending V2 Legacy'; + + constructor( + @Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit, + @Inject(MetaStreetContractFactory) protected readonly MetaStreetContractFactory: MetaStreetContractFactory, + ) { + super(appToolkit); + } + + getContract(_address: string): PoolV2Legacy { + return this.MetaStreetContractFactory.poolV2Legacy({ address: _address, network: this.network }); + } + + async getDefinitions(_params: GetDefinitionsParams): Promise { + const data = await gqlFetch({ + endpoint: SUBGRAPH_URL, + query: GET_POOLS_QUERY, + }); + + return data.pools.flatMap(p => { + return p.ticks.map(t => ({ + address: p.id, + tickId: t.id, + tick: t.raw, + limit: t.limit, + duration: t.duration, + rate: t.rate, + currencyTokenSymbol: p.currencyToken['symbol'], + collateralTokenName: p.collateralToken['name'], + })); + }); + } + + async getTokenDefinitions( + _params: GetTokenDefinitionsParams, + ): Promise { + const currencyTokenAddress: string = await _params.contract.currencyToken(); + return [ + { + metaType: MetaType.SUPPLIED, + address: currencyTokenAddress, + network: this.network, + }, + { + metaType: MetaType.CLAIMABLE, + address: currencyTokenAddress, + network: this.network, + }, + ]; + } + + async getDataProps( + _params: GetDataPropsParams, + ): Promise { + return { + positionKey: _params.definition.tickId, + tick: _params.definition.tick, + }; + } + + async getLabel(_params: GetDisplayPropsParams): Promise { + const collateralTokenName: string = _params.definition.collateralTokenName; // e.g. Wrapped Cryptopunks + const currencyTokenSymbol: string = _params.definition.currencyTokenSymbol; // e.g. WETH + const duration: string = BigNumber.from(_params.definition.duration).lt(86400) + ? '0' + : BigNumber.from(_params.definition.duration).div(86400).mask(17).toString(); // round to closest days + const limit: number = BigNumber.from(_params.definition.limit).lt(1e15) + ? 0 + : BigNumber.from(_params.definition.limit).div(1e15).toNumber() / 1000; + const apr: BigNumber = BigNumber.from(_params.definition.rate).mul(365 * 86400); + const rate: number = Math.round(apr.lt(1e15) ? 0 : apr.div(1e15).toNumber() / 10); + const labelPrefix = + collateralTokenName && currencyTokenSymbol ? `${collateralTokenName} / ${currencyTokenSymbol} - ` : ''; + + // e.g. "Wrapped Cryptopunks / DAI - 30 Day, 10%, 630000 DAI" + return `${labelPrefix}${duration} Day, ${rate}%, ${limit} ${currencyTokenSymbol}`; + } + + async getTokenBalancesPerPosition({ + contract, + contractPosition, + address, + }: GetTokenBalancesParams): Promise { + const tick: BigNumber = contractPosition.dataProps.tick; + + /* Get account's deposit logs and compute deposited amount and received shares */ + const depositLogs = await contract.queryFilter(contract.filters.Deposited(address, tick), START_BLOCK_NUMBER); + const deposited: Deposited = depositLogs.reduce( + (deposited: Deposited, l) => { + if (l.args.tick.eq(tick) && l.args.account.toLowerCase() === address) { + return { amount: deposited.amount.add(l.args.amount), shares: deposited.shares.add(l.args.shares) }; + } else { + return deposited; + } + }, + { amount: constants.Zero, shares: constants.Zero }, + ); + + /* Get account's withdrawal logs and compute withdrawn amount and burned shares */ + let firstDepositBlockNumber: number = depositLogs.length > 0 ? depositLogs[0].blockNumber : START_BLOCK_NUMBER; + const withdrawLogs = await contract.queryFilter(contract.filters.Withdrawn(address, tick), firstDepositBlockNumber); + const withdrawn: Withdrawn = withdrawLogs.reduce( + (withdrawn: Withdrawn, l) => { + if (l.args.tick.eq(tick) && l.args.account.toLowerCase() === address) { + return { amount: withdrawn.amount.add(l.args.amount), shares: withdrawn.shares.add(l.args.shares) }; + } else { + return withdrawn; + } + }, + { amount: constants.Zero, shares: constants.Zero }, + ); + + /* Get redemption available */ + const redemptionAvailable = await contract.redemptionAvailable(address, tick); + + /* Compute active shares in tick */ + const activeShares = deposited.shares.sub(redemptionAvailable.shares).sub(withdrawn.shares); + + /* Compute current position balance from tick data in addition to redeemed amount available */ + const tickData = await contract.liquidityNode(tick); + const currentPosition = tickData.shares.eq(constants.Zero) + ? redemptionAvailable.amount + : activeShares.mul(tickData.value).div(tickData.shares).add(redemptionAvailable.amount); + + /* Compute deposit position (deposit shares * depositor's avg share price - withdrawn amount) */ + const depositPosition = deposited.shares.eq(constants.Zero) + ? constants.Zero + : deposited.shares.mul(deposited.amount).div(deposited.shares).sub(withdrawn.amount); + + /* Compute supplied and claimable balances */ + const suppliedBalance = depositPosition.gt(currentPosition) ? currentPosition : depositPosition; + const claimableBalance = depositPosition.gt(currentPosition) + ? constants.Zero + : currentPosition.sub(depositPosition); + + return [suppliedBalance, claimableBalance]; + } +} diff --git a/src/apps/meta-street/ethereum/meta-street.lending-v2.contract-position-fetcher.ts b/src/apps/meta-street/ethereum/meta-street.lending-v2.contract-position-fetcher.ts new file mode 100644 index 000000000..2aec412d0 --- /dev/null +++ b/src/apps/meta-street/ethereum/meta-street.lending-v2.contract-position-fetcher.ts @@ -0,0 +1,246 @@ +import { Inject } from '@nestjs/common'; +import { BigNumberish, BigNumber, constants } from 'ethers'; +import { gql } from 'graphql-request'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { PositionTemplate } from '~app-toolkit/decorators/position-template.decorator'; +import { gqlFetch } from '~app-toolkit/helpers/the-graph.helper'; + +import { ContractPositionTemplatePositionFetcher } from '~position/template/contract-position.template.position-fetcher'; +import { + GetDefinitionsParams, + GetTokenDefinitionsParams, + UnderlyingTokenDefinition, + GetDisplayPropsParams, + GetTokenBalancesParams, + GetDataPropsParams, +} from '~position/template/contract-position.template.types'; +import { MetaType } from '~position/position.interface'; + +import { MetaStreetContractFactory, PoolV2 } from '../contracts'; + +export const GET_POOLS_QUERY = gql` + { + pools(where: { implementationVersionMajor_not: "1" }) { + id + ticks { + id + limit + duration + rate + raw + } + currencyToken { + symbol + } + collateralToken { + name + } + } + } +`; + +export type GetPoolsResponse = { + pools: { + id: string; + ticks: { + id: string; + limit: BigNumber; + duration: BigNumber; + rate: BigNumber; + raw: BigNumber; + }[]; + currencyToken: string; + collateralToken: string; + }[]; +}; + +export const SUBGRAPH_URL = 'https://api.thegraph.com/subgraphs/name/metastreet-labs/metastreet-v2-beta'; + +/* Block number of the creation of pool factory */ +export const START_BLOCK_NUMBER = 17497132; + +export type ContractPositionDefinition = { + address: string; + tickId: string; + tick: BigNumber; + limit: BigNumber; + duration: BigNumber; + rate: BigNumber; + currencyTokenSymbol: string; + collateralTokenName: string; +}; + +export type DataProps = { + positionKey: string; + tick: BigNumber; // encoded tick +}; + +export type Deposited = { + amount: BigNumber; + shares: BigNumber; +}; + +export type Withdrawn = { + amount: BigNumber; + shares: BigNumber; +}; + +export type Redemption = { + amount: BigNumber; + shares: BigNumber; +}; + +@PositionTemplate() +export class EthereumMetaStreetLendingV2ContractPositionFetcher extends ContractPositionTemplatePositionFetcher { + groupLabel: string = 'Lending V2'; + + constructor( + @Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit, + @Inject(MetaStreetContractFactory) protected readonly MetaStreetContractFactory: MetaStreetContractFactory, + ) { + super(appToolkit); + } + + getContract(_address: string): PoolV2 { + return this.MetaStreetContractFactory.poolV2({ address: _address, network: this.network }); + } + + async getDefinitions(_params: GetDefinitionsParams): Promise { + const data = await gqlFetch({ + endpoint: SUBGRAPH_URL, + query: GET_POOLS_QUERY, + }); + + return data.pools.flatMap(p => { + return p.ticks.map(t => ({ + address: p.id, + tickId: t.id, + tick: t.raw, + limit: t.limit, + duration: t.duration, + rate: t.rate, + currencyTokenSymbol: p.currencyToken['symbol'], + collateralTokenName: p.collateralToken['name'], + })); + }); + } + + async getTokenDefinitions( + _params: GetTokenDefinitionsParams, + ): Promise { + const currencyTokenAddress: string = await _params.contract.currencyToken(); + return [ + { + metaType: MetaType.SUPPLIED, + address: currencyTokenAddress, + network: this.network, + }, + { + metaType: MetaType.CLAIMABLE, + address: currencyTokenAddress, + network: this.network, + }, + ]; + } + + async getDataProps(_params: GetDataPropsParams): Promise { + return { + positionKey: _params.definition.tickId, + tick: _params.definition.tick, + }; + } + + async getLabel(_params: GetDisplayPropsParams): Promise { + const collateralTokenName: string = _params.definition.collateralTokenName; // e.g. Wrapped Cryptopunks + const currencyTokenSymbol: string = _params.definition.currencyTokenSymbol; // e.g. WETH + const duration: string = BigNumber.from(_params.definition.duration).lt(86400) + ? '0' + : BigNumber.from(_params.definition.duration).div(86400).mask(17).toString(); // round to closest days + const limit: number = BigNumber.from(_params.definition.limit).lt(1e15) + ? 0 + : BigNumber.from(_params.definition.limit).div(1e15).toNumber() / 1000; + const apr: BigNumber = BigNumber.from(_params.definition.rate).mul(365 * 86400); + const rate: number = Math.round(apr.lt(1e15) ? 0 : apr.div(1e15).toNumber() / 10); + const labelPrefix = + collateralTokenName && currencyTokenSymbol ? `${collateralTokenName} / ${currencyTokenSymbol} - ` : ''; + + // e.g. "Wrapped Cryptopunks / DAI - 30 Day, 10%, 630000 DAI" + return `${labelPrefix}${duration} Day, ${rate}%, ${limit} ${currencyTokenSymbol}`; + } + + async getTokenBalancesPerPosition({ + contract, + contractPosition, + address, + multicall, + }: GetTokenBalancesParams): Promise { + const tick: BigNumber = contractPosition.dataProps.tick; + + /* Get account's deposit logs and compute deposited amount and received shares */ + const depositLogs = await contract.queryFilter(contract.filters.Deposited(address, tick), START_BLOCK_NUMBER); + const deposited: Deposited = depositLogs.reduce( + (deposited: Deposited, l) => { + if (l.args.tick.eq(tick) && l.args.account.toLowerCase() === address) { + return { amount: deposited.amount.add(l.args.amount), shares: deposited.shares.add(l.args.shares) }; + } else { + return deposited; + } + }, + { amount: constants.Zero, shares: constants.Zero }, + ); + + /* Get account's withdrawal logs and compute withdrawn amount and burned shares */ + let firstDepositBlockNumber: number = depositLogs.length > 0 ? depositLogs[0].blockNumber : START_BLOCK_NUMBER; + const withdrawLogs = await contract.queryFilter(contract.filters.Withdrawn(address, tick), firstDepositBlockNumber); + const withdrawn: Withdrawn = withdrawLogs.reduce( + (withdrawn: Withdrawn, l) => { + if (l.args.tick.eq(tick) && l.args.account.toLowerCase() === address) { + return { amount: withdrawn.amount.add(l.args.amount), shares: withdrawn.shares.add(l.args.shares) }; + } else { + return withdrawn; + } + }, + { amount: constants.Zero, shares: constants.Zero }, + ); + + /* Get redemption ID from account's deposit */ + const deposit = await contract.deposits(address, tick); + + /* Multicall redemption available and compute total amount and shares */ + const redemptionIds = Array.from({ length: deposit.redemptionId.toNumber() }, (_, index) => index + 1); + const pool = multicall.wrap(contract); + const redemptionsAvailable = await Promise.all( + redemptionIds.map(async id => await pool.redemptionAvailable(address, tick, BigNumber.from(id))), + ); + const redeemed: Redemption = redemptionsAvailable.reduce( + (redemptionAvailable, { amount, shares }) => ({ + amount: redemptionAvailable.amount.add(amount), + shares: redemptionAvailable.shares.add(shares), + }), + { amount: constants.Zero, shares: constants.Zero }, + ); + + /* Compute active shares in tick */ + const activeShares = deposited.shares.sub(redeemed.shares).sub(withdrawn.shares); + + /* Compute current position balance from tick data in addition to redeemed amount available */ + const tickData = await contract.liquidityNode(tick); + const currentPosition = tickData.shares.eq(constants.Zero) + ? redeemed.amount + : activeShares.mul(tickData.value).div(tickData.shares).add(redeemed.amount); + + /* Compute deposit position (deposit shares * depositor's avg share price - withdrawn amount) */ + const depositPosition = deposited.shares.eq(constants.Zero) + ? constants.Zero + : deposited.shares.mul(deposited.amount).div(deposited.shares).sub(withdrawn.amount); + + /* Compute supplied and claimable balances */ + const suppliedBalance = depositPosition.gt(currentPosition) ? currentPosition : depositPosition; + const claimableBalance = depositPosition.gt(currentPosition) + ? constants.Zero + : currentPosition.sub(depositPosition); + + return [suppliedBalance, claimableBalance]; + } +} diff --git a/src/apps/meta-street/meta-street.module.ts b/src/apps/meta-street/meta-street.module.ts new file mode 100644 index 000000000..86ed61fb4 --- /dev/null +++ b/src/apps/meta-street/meta-street.module.ts @@ -0,0 +1,16 @@ +import { Module } from '@nestjs/common'; + +import { AbstractApp } from '~app/app.dynamic-module'; + +import { MetaStreetContractFactory } from './contracts'; +import { EthereumMetaStreetLendingV2ContractPositionFetcher } from './ethereum/meta-street.lending-v2.contract-position-fetcher'; +import { EthereumMetaStreetLendingV2LegacyContractPositionFetcher } from './ethereum/meta-street.lending-v2-legacy.contract-position-fetcher'; + +@Module({ + providers: [ + EthereumMetaStreetLendingV2ContractPositionFetcher, + EthereumMetaStreetLendingV2LegacyContractPositionFetcher, + MetaStreetContractFactory, + ], +}) +export class MetaStreetAppModule extends AbstractApp() {}