From b82b39c8d253b5e3aa13355a0df4195a17529285 Mon Sep 17 00:00:00 2001 From: _ <> Date: Mon, 13 Jan 2020 04:07:56 +0000 Subject: [PATCH] Lighting is decent enough --- pumpking.iqm | Bin 0 -> 90368 bytes src/main.rs | 45 +++++++++++++++++++-------------------------- 2 files changed, 19 insertions(+), 26 deletions(-) create mode 100644 pumpking.iqm diff --git a/pumpking.iqm b/pumpking.iqm new file mode 100644 index 0000000000000000000000000000000000000000..83d4e75f8bddf80a1e4477438ba1ee14c0723ba8 GIT binary patch literal 90368 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

##Itjx`&HpMg`Wvg>=- zc4H9Oe4^6hY8uPe`aVG53Wd%%`gtf!8B|m$>y*yS@ptR~>rf%CsFlt>{X;#t_4+|z ziHB+I^SJ|1_waa)&fDQd1<3R4L2~$zG-k#dQwp5~FOMRe_BL#71+VSXHOtpD_NwkN zD0sdrC%*ke4H!51g0`wgIy2*?mK!!e2X&IZH{P`vXhT0~ud}B!k2^!*N#l4`GzC>vUb`d+hK$_y#UyqKZ$wF|28 z;+ZdKB?jTRsRn}g#VZ*1H8ijWf8{-0t6d?TeK~i4hZ%Q0^G;bl>C?UBpX<_?x$d!j z|8*WW)n+HH(rfd^cV7k$DT=yneV>;$Z0tgM6CS*@m{Ph)Iy2|mTZW(Enqi-NM_KvK z+Y^-~xzbsB$XdR_u(wT4k90?u?w-AxTE0{ zwq_6E(udqVl!^NqZ~WA*e%gQ+-mo$}jom*Kqe=fzrRlTeb6e`d`pap|>_g0c!|dO7 zWT$;uzfMLJ5v~TdY*q;t z(cSRL=9u_-vqf~3K0IH3vE7ITUd6X^cOza*G3xUacV0x)=Rq=Vn&NMJ7@C zCOIiS62{p2vkZ?$3_zH~9QU{W+`>}~T;Vh(KYxL^g7AzPKja-Vk54gh%l=RK#4E%$ zgs;rsFZ{LFgfTWQ`=t5&!6g5~75mC+T7SeFl>au3%;5DAM-lE_w`@31Gw{zpWffk; zz(30h1&JmGPLp*r%9Z9fyuyze_-c2&m*`_)Gc$cl^!~*7j0bSC@^fX)wU(kg;zQEI z=R(n1q5PL%RkeIjWb%&08&zjR<~IsFv^r_Nxq86Iajl`?a(^)rF*)gES%5t+SUU+y zeQ64heg=v|Mqcj|pQsJmHUd`7=?G9!W_ci!0oV(0}GCZmk&tDeb28Zx02fEeZozvQb1!car!$l+- zIYON(ulNDX3rM%-&s$%w;6d}I>E}JPqXPGOuL_7WN6mIK{a!)E!#8LVRvc8$L=NgTqQh-}0BJzbwxC;7M? z4*GcqvG)9auZ0Tfc7I$+vB{{nJlZ}_d_8E(#mwIWu9=<6pMP7X(A`ncBA zD{y1BD(V|G7PAbKM_l0_m$_K!PFLLN#d)4dfu!3^EnA4DMx6(1LE_W)?pD%|SGjEB zmQmxvI*+(z)OpUoN#-xri5lHC)}6$sI!RWtfz3fNd~jGbjqch!{F3g2Cn2!DN4oud zF^^b|wL!|=s(kMz>SG;`^xt#e5xzd73n%?7Ix(8RsG665Mg639Rzz;2PH3hxX23^2 z+o(eZIj-XeLnd(2RlIXmo^_NnC%zd+cJbCmjnsMd2>$-l98P*To9xZM7OKbT?58U? z;2kII=WB8A)5Q<8$iofvy>ScOctppmx;*B3?2`J&v|-~X>#|w4tkVkjyP)&E3VvG3 z!fyIr&C%-j_J-g^kXOr=(|3E-9Ix{-*MYNaS*N(-UgCQK{FKAS-sub7K=L)$gy+>i zrbxc0DmQ@kC^MZmb@2mbG|K!H&+D{$1iUrQXs**9OZJ8@#(7o8b+8Y0MfYW{)5f8_ z*rVQvPWOFBV7YM@=GyH16Qkh~-pfb47ytan;1=FH$#Aes8<>W7O?%J2NrpRyy`i1_ zsa38Iih=fMZ;Mdp<40V9h09&6B*TI`ysx9)JT>09xt{QESXU^5@16Lrf4u_gqTe9CyLVK8O6WIe z@6B5A@E(1U{x(fH?B;GYpeOpJ_sCb>-wwK?uOq&7ioRFwps%C7lLPF*6@4k)b@uo~ zWf=O;jmXQKhu$s}t+=3nrn@%#@Lg6Xr5yTaqGR^kW`Ah*Zx+kOMEnyKNmYi9`^(>& z{kGZXn`xT&n)#Y#Hm@QHv3z%pEUb4vyU?S9J6mR`xCR@Fz1`?k`7rDTh)TdTh{6e z%7FX+a6G_XHRqx4-f2p|+09{FtfP8k!c3)VjuNn^fxT+ZL;J0Hq?F zg{clBpw>=T_2A=6N>ZDW@YvN}HRq(oyGFyv;(cLyu&bJ~_p2;r6OI|E+TQI&5(o3pJ~IsByWpX6507RB!gJG6xSC0*1Zw<|+( z_VN(6DYxp~>kjxe9SLu9xvOTrNmns19_yY);rr0DXfv2p zz*DtkS_t{hHiBDA3aR=3eFDWscY$1=J=9ubA40^XCJ;NRl)BpC9(>p`06zPdP;(Vy z@XGz0Qr6#5E#|cZ9=r^Igw2K2^0}VDiE1rDz2%{{-tiFfjIIrNx0h0_C+>q=UgpJ%E;>UWZBWFK>sPa|e z<&NU2nU2!tF%0{+8k~&5Ht$kq)m%#% zx9vFuTi+^<6HBSp;vd1Vw$5;68NSV;XB3Bq7qx_Z|(? zVPd^pF#MON>gc^e2~PZ|t!HP>6t{z`=xg|{j-_Lo$XKKD@8+P%|e56z;6lz#+! z(snAP#(1da+DrKX^I+z#?8+WiSe=mnDOglZ`90BHeHe4gIzI13ZNS(ps<{sH{bvG< z>0C_-Sm3JOY_=R4j>@Ox4Rur3rUgTnuhGeag7T`ar+grDw)#8md z}^*i*{N*8ig$JUt+73LHOShl~2y7<^*xOeE9^3$WVnyvo>7`8Si9F8ij zwj6v?DKY}_VqIr-WaURtqu6QX!THi^)zte?C{Jdnl3H5LH2O9aJ3m~>F~?I4#6OAP zGHgTO*cL_A6_4*j59iCu@+dFWjopK7OR=^X?4^2~#QNT?Ny_?&((1E4Pm|9tOw%qt z$)cL;PCYk`h5cXhE{9&>&4XC5qIEa(gS6rmycSv z|r}tm2quB^BE{$59AP4;fuplbQl7Zq;7NQY<2np7XP(y`kR zb2k?ZJLs+c9^4MT?5%IT5L;X=Hug014P32k+~}iDT~|`ManxPgQ8k}hwD&M=Q@L2fS1tJS7PJX32;RrN)!sGgLFd*jmGeuBs|gdY!Q!tuA!4ep z>N)%-ENW30@|W{b!@Q3{c!`(Ff-qlo$hz8r>bQi1lN#q!T}oDm0^=f;JxxofoqIgf zw)=qg`cxLR&(TBRs%3)X^~$K`dYzfhQkSmD(@JNxcIuW-9h2z_eCkmUYI>GY&(FO9 z4L6kpYaJhT+>ck<@ax->r!LK+n(KSDoGyV=!xCVbQ$`(pQz(jJl`IHLyhb!^b!uwQc)seAuipik(vy)m#tE5qbf9KGuWF<;tjaCtZUo0V+Ii z=%YT$@<9v!yg|vhmRU8|2|d@Ihbu$FAgE{=HK5H^h$&nTMvwJT*QXxP7A2fjcF)YL znrnuSj$D9z$sHjS@1^GPYY_UZ0gQR?t>$XFR~zk=4emF{teWeGg@;^%O&@ze*fAgV z*xPH6b!T%}km#+ZH%`zp4=)Z&oieNDx?(5K%a9g66ucB4wMYINaI{7%=p5j!)*sqg zn=scC<~^}j&2`1HIj=ybwPPULUT-zl;RZyv?+im7yww&bb|;6obO)Cdd(~WTY+Lyn z?EN$b27L2UkDs{-r8gIRK-Xr=<21;etQcx z`gexIIla_R_KTI$?hW93nxksQkU4yAL+z$furaW-`tSHVQ1VF!C^WnDUl`Af-^}=M zdyAeB?==V_`njnK2A+l3Uen-xe5t=Mr<(5+e!npZY9)KB=Fi=V_g3QSSBHAj^QcP; zw1eMOJL9`5tQL+s3X{4`1^*YN)dH)&TZ403;pyu#j*f-4i@j9`uRzdZyFtK>B5KmvYSy>gtHYMiyz0|J0ur(ghQj_n>eFV; z0w=hZf~<%0s?kTQ!mszuq4mI`>d8ep0&{nDfGJg+)UvgzLiE7^Xz{72+V|{1cop0e z@^TElBQ@)J)Z%}DywWR_?yeg)K<~j&f^VNrWY8mzN zG!5*}R)LY(|NcBbq8L;i2jXgKDcvK#x^r)XyKClLH>~P}axE;58+X7mCkF6tG}FLlYbxhVEtYw zpBl4NgS(~kfcyP2>WIKH(7W3rrO4V6>gv@#ux6uBezz#`7p@Mp{tKB~RDryo|HkKL z>}tlS=JjU$X~v3X>}R$gvyGYU(`@JFH)4KY=C^5n*Jht!_9tdvWR}^CIn8*_jO)x; z%j^Tq{?qJx%~;Efqs$n|i~-EC-WwV<{Au6+=rUa{xsK!_Iz->Lex**I z=BZEnh#tvlqm!ZB@ORYd)3{tm`$^uqEhj2BabD8>Utj3wpuYReM~c)}Q|x$O-*ybU)PZhkaVtv?a!1q)U32`|)oF>HMfq zd^T@R)%(;^pY{`<7A-#k(QS$?@uNP`rFAwt68bouyFZQ--NVR-=9?j3;!k$55&KnV zKGNl&md2?iJP)p+l zaX*dgdf)6DNc4z~uAfc5f%-Xdob1DbecDHV&xz<_lSJ#OCH~YBJz7WdQD1-0xS!;r zak{TRf^XRkK+&g9ckV|_Co83KFLY%gVqy$ItRUD znkTvFoFqTlv;MA;9?3_2vQMIC(?^u9Pg+m!kMv^GYm{-%tMqqF^l3lY1MQ>tM(>jL z5r3jf?~YoMkKUE-{Y3%I)4pu_yIZNx(>>CABtJmsrTe9KN&842|9hVq%6&XP%|FDJ z#_64sJfSTM=;O_?B|9MhLVBS-*^};P@Z7YI`o{(r(OaVbXCC!M`$&&^i+z%JSrmgtilbYC=1`)&ME z_4V=|=pJoy37sDGi5~5vmhO|zNp@qSn~J^dqX>1#eOgcUL3D`@t<(E> z4!Um|r}adK#)+=Z7xhc)X+QNzZkm_;=$>rjLcec1ht3z{IPH`7P4sCWt*84Zxdz$p z(L(%*pN&tHPKW3d9Xdbllk!XcG){Er9JHV2$v%iKjnnzb{%9TXp>;G)>&PBR9$HU) z^ghZ>_fF$BdQs@N8tZZq9g>^ugU(0uWcQ~Ax7XJbU9$h<)JOg{J57ZeGrQ8fh3Jrd z(mL8l_DU^{+x%l=lv5b5IlmkJSFJp9-@cjne%IwM3s7Hpl-3Q4_dLa7Lr*YD+O}>@-dg|NOXDBpI>uCLZycZg$ zd!qA^ercZ8lip|@$wT)<>*$_ooaTwIJMk zU_Z$P@ePg3egUIz%Qq|*9Y5o|#M!bn@Qp>b2L85CenWI6{wDlF^bMSCk$oM9qqVctO``e#wsKu2n#cEY)3!cI--qvm z*3)~UaTQxyNAFPQhwBY_^!4=aX+6DXT|V4T^3Z<$JlHqRn?&?%{-kaa`31u9#Gm+5 zpUxeP`)u@V`2+QdF7YA$B!?|e$WVx$&7ajxBL8MP_bSXys4w6a&QnX{hx#)Aqn7%9nD^274S&lh52SI! zzv|=Em-(n{4Zn?ePWRt>OY00jj~GSIUl{di+=vH^TIy50pw@^hO!keqg4juqKg^c* zQI2iv8*z$Jo=E#C|0DTnoccDLOff{&$89(|1J9(#K^#-{bw-?IMjT~BbbOovvi}(4 zE77yz#S9%M5+B(&;xi-sNb3kk(7X}v8O3)RH{!iMPJO}$=GMR!Otyq4XrB7i%KqgT z7v}peFRQxViS;k+%Ix*?smxorv$(}MS>#V&_A)ptW8g(eZ?OU=JxXz{zmEBf5vZ=Vg!nmHy2kD<}Gl2C&`n{_TXWQ$zvl(|rv1*OWu-!3Z z*r66xSt7QiL+Yzr>a&?Re`;3?eSPS@j{5$2k9+9!uIC-7(;v}e7$d#~lSk`&X+O!+ zVL_yRjzgBA zf7Hu->3CfCV%iR&be`!9XD-xyDl z`{a6w@BT|S-oU967fRe`(6dNPin2NkCt?k9#Lu!X@vxN7*oW9j_csz}|H0Sff9TwD z{cOE|=>Onu@@KTp;FBcrwQYTL(tqavtdqE0;%_ORu|7$TOFS;u8}yUpxWwhgdcEF* z;{2&6OPqcJ{WjM1QGYhvF6l^|F8LY$`wxDXcwNdT&nM-P`y}p{a!Fh-`!@d3f8;X8 z|HvcHA=evmC`rmE=Z!d(B>VDw|7j)NB$;=}d_vNb@{+G6z1Y6@uvlcCLG@v}SGiv1 zF;X8!t7AF*K1b#~fA|^k*+Oxd?nCNBwldF={A3;@$7NsUGjg5$UP7)j+9a7L*}nI& z{3mZZlqBiNR??NY^D9kR@#-cJK0J*HE{T!x`4Dt2Zzl-ctC!ubV>cY*NL#Xc{A@RjS{G$4G1_y7p6efio_ z-~TGD3=p1M{4*;MzMJlNR3ZGgzS0bZ@L$ZPvI^m(*qM*5gp=&%b+Qspa>JJ7@WYmH zk{!~e*c5L64G6z=!It{e5`J?*{)FGQBOSt1tC23@sRPJ|@D#~OxQ^r|Tu0|2Tu0|4 zTu0|8d^HizP56!Y5uVGyb5Q>qo`dGs<2eYAt;KT?KHD~PpxEhN2(Eov!#6bUDDHoM z&tE(!&V%PP6a5d|=eZIze)(IZ7;FDjDK;l3XYQTFg05dUvs)T?U|xUmI^K(aZM22g zTQ^SZ4Zp10yn3#k*zWL+554UPF$tr^QKyQ0kWU^yDkD;Oc73e8UYrx=d}<_$xV+(w zdUDuOWQ=%tsuFLP$x_3yLJJZ8=q2y)c?~a}9xgn4JmjJAIr*g(qs6c675U1=d7!CN z9}(v43A?Isez|@Rk-Xv_C)?}$d6Y@=W?%w zk#Xh4lHb+YH>7#^byHEEr9p7xE!>a++GUE~*C%^d(Zk^(cU_VbBB%5hhhn_=>G@lr znvb7ocCEUO4?cVyCGsz+0MDJ=;mD+RqGIGPIE!c8)Tf1b`~3ya?YI_LQU|fZ*0mW@6-z)==?zHg-J9LloUulO07}O{h6Nd3D4Pb^`b2 zOe`nH&ppXcA>_w!lS@rd2w>^|Q0z?r4QGq+mo3F_+5ogTdF=%%6u z(##q^LcHwLANJrG!{c`H?3KER-~$`LY!8nfG!^Ci(qIPabJ~D^`J%5~gm;h?%y#9O z{|A5WU6BPN%_lyYMX7gf#SXhb#cZGTucz_l@tc(r37uK4emO;v6U{}w`nmtI+g;Ue z@cj2a@sR~X*rpdH#gA6O;%a=7QvdgFzWh?6_VZSI_AXCJ(WFI?NQlqQ=WbL5E9)(y zk=GBOJfgyYk+icK#f3RH9x=J#lRgEPvwiCYJ&i*vtr^W?grA~m)>q*QVcX>I()wS48p*m}A7 ztJY0~V}LWywaQ84JHC!PR2?GTXIdH0jqkeC%Z^{yV#M~4RRfhJ5{g+(%#oOQc zNYulV%5Ea~cy-~oXE!MJSHLAAn|M}Q5w#++io~E2Vhq}|ymHD@UJ~#9;haS9Iaf^9}dRB^Jj}CT&R_%`Rr?`HcdqE|4 z(0OIbq;c%XuPuC8#5f3_*NZiXy9UheQgRf24!3Kh-3%Y5eesWC9RED=uG6mEzE^kM z2VILL zbKo(EMH!G6`f?ku@0YUjQ+7OgFYZNNT=J@L`Gi(G>qUq|Iw-RyWxnFHT$>x)A(><& zzEQ(7iJ7S9@!?Cfb?@%+gGisot5t0#YT@18SzS}fKIbYAKsq7ov91==U35V|X|_pU zyH#4Q@m;J#@hp?IS+KC$P%#GmNnXF3%CMS?k_VvtX4@wEwfzQ*73fdi1@+@kn!B(e zsQ(-=9p+aZA!y!g|EtSa6*($j0#B5urN?Y|>orsap?@>m(z;ju#r@5JFdk*2{k=ww z6&*0{ERRN?xuqss=|!St!+A>^&Q8I6=4_)`i5`gp_K=)4E#*v zKVYyZhOuUHP=q$K#8}oF&xQ8Pr9J<4+rf*>9>glzS!$pSb7{kS&bx?!qSaW(4;rj_ zFcs8(inxESsCXZr09#sj5+Uf@*R*IQvN*3(wqcC8H>noecY8noj{YI}Y!g;L-*@hf zZ(&uyeLi7$3@pSu+CJTzg*|lUc3z6;6|`CjTXPTk<9(IIzmxS7zVbEo+llqp_kwrf zJ3J5mJ!pK7T)xMv4*;%@7C`sdtK=K)>w_uEI<%QZ?s3|UnBq#BVGsW48CsR!V@081 z?qZ?cNo@w+OUREWeDuR|ywZ%$qVQ{rh+Xf>7UNqh9a}{C=zK$q>OM}GWt$naEcwgO zA#4ZU#i%^bVZaa%Xoq|2p>9i77{DImy&OFMknetx3l5$R7Z$$_nmEuMzAYN1-~Bb; z0JwHAQd}4u4Hr{RK&3O`0@s6FKR9Nsve)UT7Jzc1Y#?Pj)cl_ywL-_T`1>0aF?aJ|Ub4qY z=(oG8Xg7Bd|2^P3_dxkewoT$6rj~*;+4>2y4-9d*!?h*Vc~_M4Tc(1^ZDReBJAR82 z2mFpJUXQwIF{qz`2b%MXLp~~Z@r->pcZMS^*YIgb#~f?!6pjSe^$H9@UUlsUY5oge zfg93HO*pMJw=1PBMVZYpsPc)&aI?S!?$n^2xVPVheeJypLQ(#Y*K)B#3CA_^t0kR( zD&r6DO7=!w^`F}v+_yConb8lw53SCfgEA@Ek|V{4Ipx`nIj4BQ`J#W(x#3ip`C+Wg zj`ly;Z99~27cLs1P0qUBh<(`nhPOu>#<<30T*ElXBreVJ-h=fjA0&?BJHi;pWQ=&naf%`!&A>tM_x*SS5oGMcXd@aw~k8*(0$@DqrFr#d%&DKZ*K5Kft9Q z_!`%SKPZN_j=Dl0!le%>+4X@^EoFr@4)uQ~Wf1>**hhPa`bQtdrH>j|z>Z}ZvRCPg zZwLJwm;Nn(YAj4yR-9Q-9*iAa#*XeOE3}Pk(xEHLP&V-kT+1{I_M@ILj&K=AHuTxf zhn8OrLs1@#BUTwl?(X_mDg7`?@xZ$n7vRnxcpT84psiw@0vV?;rhtqo7}r3?HH=vx zV;062MaCD`6$$XLTPHCLaVf?`CSzi|w_Cv)-(OThzlU*?$+(IB3eaDPigwZaE>3E~ zdcOM3Yv4Ow^1V4bGC7a_{vLE|&Yl;}C7z_^ZhHi*ZwvaT9SbNZgCL3B%lkH$)7N`2v&qLU>wR_WZ(6 zJ{Ip9^Cl+qCd}`c%pkB9;A@4nhF0Op=d=AIa*6d9*5Z)GxX zE$7z{)^*>_Ju#MD;C}4!&@a3M`n2z{+hD?hIs6^QL^h!|TaYOioW__t*lC8g&wZn| z1aXM@U1Q$LWZsJTDU(gr_ZdXGx%J;vhN{>7QhNinx&GPgDFoflS(eT%ycj)+k) zpJg(iHPh^n?#pI5@7I>2f5v>4$$Yj@9S)OsFXijdpI~0hWL`Wz_L6d9{WHEF<0Iy_ zOy;)vo#!f%p*xgC=+iJKWilsq@F>dr1O@V{i$@8}bD7L@4L$2QGUjL?b2QA0naqn3 zV}QgMnDa83^I~qxWNwQXj7bcJ`5=?|AmRijaRTPQOy<9cZJ5M1hTZBpHR3cTaT?~} zOy=O2hccOmVvf&bj*q!Bleu$=;jLNohpUticrTcPGns>99?fJPZT>tlJ`=mp*Nxpq z8^D~J$($PVXeRS$^LVxMn;@a%X}FECVBDQ%Jh??F=868_{MpZMrq+5>YgQ2L&C=-r zpVxL3EW^8dnGg(_!m~18#9f%1TV-yZ81RNWr~G4`kM}q$Qw7B{_Pr8}{{Q-#aoU>n z^85_?e^>lHs1I+3uwrOG)h|1-v!VMS745|Q`QIC#Ah&%=;AG@QxU^BB%*+?%Ece)j zRgQCGuTdv7Uf|JVr9avReXcmK9@~p&PtK}Af#b7yU5rOGelTJfKY?*@Z?p?*7jI>+ zFs9RZ|hhLLOe_~OU5QB?J(cz?KTUV zF092U&qZv^BsN|jGeujvwiVlm*#1`FBRF7x_rN0~w<;NXM~gsT^xCx&tZV!MdLp(D z^Ed}b)6=!}=+kno3FX#}Xt&7gd{ChBX0-**AyyxJYdP#Knhd${EU`hitp^^=SKc9R z-=46YTYJRAB&5$DHdSibk5<~CY@aF}i3Arxtv>A%esT|+q%rrll_#ac8z4bNA5 zYDw?=uyV2Wl4lIf!|L0$VAf@Y*^QzW7IL{Lv)di590)Cs|3*e6d%s{YoIg>U?Y*1( zFZxaa8~NF`UE#4^UltQvfCu%&-@Dw@gH3eLshzLsshwFHg+AkdemnJv1_7}T!7*Di z7Lhs~;@`$|568Z&$&e7%F}8m4^A{d$hf@j26w8(M2O?Q?i)zgN!W~F2LCLfL+ zZdBXPt(~33^V$kKm8optuilI=8x#3g9m55&>&aVIv3gfoR^ zS{;Pp2`=IT)@^InoM_!!vzpR-PZV3^=E(==yTj*g>H1flWY&=Vyr)}vurBYzo}DTs z`p#*_%OAJ09ap|+Ww8#XjgDjqYu@tGkX!6_tn^nsq^55_SoCW>hn;;GyOONE?dB_j z7AhPq+Zrv@_CtsLLxd;mI4?ZdR=rA4_F6Ch)H zHP&>qmEW~{kz8p-P~1&9u0`^)f7LyX#QsPQEOv&^zuSiujQqtf%zVn5`2(vL zUR#+IlQ}tUXB2x?KAm50wn+JhcP9J%lWT8Hzpe~Fe+*tOKzuP|A9tPL$;y{5%cl6b z^P=|0m5&P}+2sYE;$X&YIF#T{Z-h&1v#Q4op0p>Px5qbiV^SqiIrwDqhcNtiZk%Q) z63>i}aZrvQE~eeV-)G!)_fEd^`f>P_+?Ks+vk_JY^n|U4`mh|Q^S}|uVAkNaJH1(u zJ^_75vh*RTv4b@?=SuJk|9zcdk;C|fl-jIF(*msYhEsfFijTI{sV|FdpHKYS@De_> zFUQP2#Oyb0zR~92N_m{)Q|&%z{n7uJeWrOFeIqyfM(L|-9?B^WqQ5O)$mVaQ|3`nQ zNq=ZQ3;KLv_W3fVpl<}}8`0l#>2J|bYSK@db&hdInB$I&Ux+Qa#FiMpgp6P4lezTC zbVeBy(T9Wd;TQ`P84EC8a2YQ!?r<4*Fm4KS+?4SbW3DjATp6QpM7fCCbFAz;*8dR$ z2r~wdaUXF7H{l8)aRo^!@dM%(E^!ND8%1Ip^Y;sgL;l(;F$Q81ZpI`MS0LWt5^o@O z0*Rv#|7a%sqe%RNI8B&v+Mn+}5MP1BSBTBH#AastbQYh1NBEWH{RHAeA@O0!&5QZQ z@0^!7Y{N@CAME4h4h#_4hOE>+ru5{#vqlNT$%M9XN@1K z3<>q(J6y*I#Q8$ve8hDiah>_|>xlQz1l`zyL!HH;9HG#7?oX{I@DYUggPp6?U?fP819>`Bg5JU#vN3rkVrDn!}#&D!5-s)nf6yVSa9qXt!Itf@j41h|9VM)-gcVF)%0Mrkv={ z_jJ2cuEUqM{ooSvRr3u2M>|&~4EbWc1!TPib1@-vG4uC;l|~){wtKSn8qa&fX%95) z60P;d^J0xfku?^x3=!e0;o7);d??=O?eH-08UIFWg1oTKqsclC)`CFRg0RK~vc`pV z9wF;IxrVj_uM{_B6rLUHPF&WVrnJTHA%nkI*PtHE8xlW7c z)#Q0mS6u4KT&G37aj7@F3oh@%T${yv;qqSa-nqPYylXD+8tsisdo$N6(cZYUH?(bT zvTZJH8{Y_*Z^T?z#P`DGd%-uzO>dCPH;8YX%QtSWC*XVM^1Y+qNH+NmP5KS=MO^wK za}JAsiA%qPzK)xG9hbfieW@mWDf&-M`cHEnivAhQ{#p8P^v{a)&$^u$e%tI1&Hjzn z*#3+D%io&)w%O;?S{VzBjo3s}T=>J+EVFqH`tv_$H0uH7`J*?pZqXn9xeN1sq3`;0 zzh)aS+l<++%ywwDTYQ^;?A-ho%rfH}{PT`zT)sQ=+cf)svky1>WV63D`$@A;Gy5pB z&oTQJvp+HW4RgL(tLDVyL8(#9E9HUJj4d-1tSwAv$j+Y1%FTIbqu8kA2JOeOynau# z>yreGd(@Xz_;6h_=b@j+=42~F16W4+YkYEyx3!jI1pDdUj*sXvUb)^mijBhWd(AoN zy^J*2y~LaKcw9jI`ga-Rzc7Tk#;()KIP8JcMjcsx`(1pKn+MxB%9G9ea*O|d+kh4B zm523N+6!*3b7!h=2rC@BPc!GUhgbX1O5{1~6Eh8P+O0Aof5) zyY8&?y*oUmU>P=P&N4W=sGL}|q8nRw`w73E^37___p4oL!Q5h}ftK-wZ)zLCTpref z<4zm?y1SzX^0K*0va+Iy9wNEm2o|?G4q7BMQ}Rq;Eb`$~*aqLYnU49c&!l!|IqWtn zyL$Y~7h|nH)%lE4aQtnn`RuXRYqEiM)`LF&UZTtO_H0qjdDiYdGl}i~Em+ygKe#q{ zDv!G#$xixI;VWmBHBnmo54Zo)XULD5Y;DRiK4wxrakS1jHqgG8HL~)nzt#k9 z>&n7{`|^9?r+FEzCmS?A()z8>EneO=m>u`qtZnaHN>ssG@l$s@(ZyqpQmb?)cA@5O zZT#EM+*}Va)6udvWa$}s#iPq%{Bn~hmj6*BrB>IrfAL-Cd=meS!|vjpb4M`OPnKVc zWVgRr_=8IJf7xF3>ppB$L;U^O!7mkaE#-FdK(;=%Bj5gM`d{m3`m|u();o%+C7Ube z8q40Nc<;Az@@WY@|9Z>AKjZh`&w7cBUlYMxZ&_70m{qM?N|X;x(58k==TSqtiA*c@ zLWOyy*rKMv;%264in;b;J(-KuJJ(nY32eg?<3d^8dl~$s=QQ3qyt2aH3=hU z(|Ul&^k^7l#X9tyU9Q4wNhmkha5B#>!``1MC2Ew`xLN*dgO|gZDucwsZ|*RqaRYWf zEw8wkBb@K56wTAGcND4LZ$h)vD`0BxA!3r>Hf6@X(L|r`d{F8y-M)S>QJI!~r1&>C z{(E|Dy0a{sXYyFzU4N}{K9rkfYtuwL`5pq6+f{k@vTen&^dB()abvb6W+LBN!GW3I zPQ5Y%V1Go2D3nl$9sj+u5_D=-N0dqW%p-4{19NRkb?U+zKkCMdjJ)xeoDs{%hE09LM9r)d{-SU837>nf*s(Sfc)1jhzs@yf z{9vB-T4Rv~a^Rn3%?wWd)kLNP6fSuoeinxAzQ z`<^E96PK&AW$uUhxvH(j%J>v8*UcVma1ib8`-pp}&noE(&%R^_KbYK?Em`Ew?#J%d z$~Or4OP+euU-FY!H*u-y!=Bd)WSvgC@U=~SnfY8p;umO5G8`}uZq4@fIKVSHHxg3< z)1l&=6@1&xn!>?99~;uYp;&+LCf`-~4&1h@V%;9#BXT;af7R>EbgI9!3ipJ6`2H`> ztp2`g%u;3`FP_8aFWJ6X2Z)oq9KpBtHZa%s>Yj9DmF(*t>=xPLuk|}3dyCJNe`vn# zPJ+4CcWiVvcD~#+*yPseul27+G#9(z2!A{7Dwu14uAzmQk6#JcHKER5df4Bmw+Ne4 z7rf8!19LraOh_IU5k637#v*o2=5 z$j_JD8}T3K+R8%(r0*bK{$OuK_V=^m-_MXC%bM{S3EB9oO3VM_`h4Sw)_yjGxK`S^Va^XkV=IN`{O0Hg~O5E0gCH=A|y|W!nnc)8Ak%%@fYQX63DVh+m%myk5C%{LJh!vWhk12^)vA*W=cT zv?o_sTG0+XHb-t*aD@*))n^?GKfgkp>>)Ty<2l2n)fuG>J4{Wen!Us;f6?J7ju0@K-yAKkh8 z+cq-uaBdzkIUg^V?k?ZdTj^EG!;PDkc93r>`>@l~f3rCr5h8kAH?d+$G*5qCR*sCF zE~=fW%cEMttTB(I?hqExoUmdwx3drPE%p9%X}Nxm>pN{~(fiAFEU5 z(z6rf2zO~lUfKH#%T}P9bgz9y`TcX%W?|RjWbolgl^^VK-rQ_)qTE$2Nad@yeq%RU zca;%$bE|%*kyV*bm3Z0xVIehslinB1mGULZSjRCc&p!PJtNS=eRzAK_^&eR8%Idw1 zlkF}SRr>jSx0qv0u*_7jEPYm<%!jnS!*0#*DcgOXp>%e;7K`5%CtvIFuVk|qgQvvH zkuwXK;dfnlhj}*bCEL}0n}(d%t1gDP#mgoqwyNcMd~}!l&pAuy3}gG$DSXkq?pd7N zRkx5@UaRG`WRGL6a$GHAdnB#ywP>L8gKKFTP*XMo-!e9 zn_7O`119#hZ=CeEu~zf_dA7F9=2$~+*4wLheRmP|C{B*PV$5f0?#wd%QD=GYk+Hq* zRJ+dF?g*Cdww2WWvp)An1W)WD{q^>_IkC2!z06fcI~m*a*-#IWv?fk&Sz?TL$a#p! zxqh(B`Nh~??YwG9&o|Dpm4~r@`^Nnev9*F^)qBSBT5O`~zfyf0ibiGPr0efvYJEpL3=(si#mJZf#{Ma{zad>K z?A!;-9sP{`QzEJ-FIMP+xHqqYTHhm=f3OPogXGLHPt@@;bL4l?q*zz^G_$e)_H+#9 ze)q}el0`Q2BY zVQv|L^8Aq{YQA9|e7Idr2bs0yT(!LiwCKU+Oc^Ro0Z&!lRW{(8-Z;p99R{nsW{-+I z@`AS<(Q=F@me>DECNailfOP3FUG0y(h1$~Jh_sc(pDtI+pVjg)%at4=Q_maoOHFUX z=dQ~w*9R6*{=+j~vWMA&uo+nf)uaUH{DR1F`syd(V^@n{mCe8|1@9SqFJ3O{o3#s@hF+^ufVWJ_uF**}{bvzFbF^jjf}WXIj&cITebN zN5?!@;|EoU=BJOX6jw$pSNXo{lz&_*_WFKL#rB!JDT?1*y^-GI$)@_h#k=x-M{CJO z^w~P}ItQcpXs`8RpZ_2=|1a*vdGAIochYK5I4q;^*`5<5gSBhG&iQ_3rxeyv`AmTAhRk=D%ZVNOSuFYJ8XXKKycjdzo=9RgKrObw7Tyxe%L!TPXeG(}q0QxxBnv?~l@- zvOe6}J(k(LUCXdO9U3&I-+#1|whqSmJK;qHZ{wB1Zca#2dU%@w+_m&#@h8V9wY{&6 zOyYUkwKV-+Zll&`R*eCC_V#hCPJZKhAon-t%g&ULtC||equItvhd&selnn=aXj`+i{MuM_6YvMIR7hT?av#fY!IJ99M$}n7Y*a( za~&56zl`IvPh=$jJSK(pDrlVVUFrLphwAys(9FBl{Otzx<>#s-({E`Q$ES600B_#h zT2|^XL5=4*xd-=b^IEv?cTUIln7_XrFYb3zG|!Zwws+lUo%rYZS!JWS>y>}>(UC-?YdicQx*;{EO)S!4#Sm&fe+qra8s)f?Zu$ z-+@Y(!(QxXkphmp40ghKK#7s($W||$FmizU5jYhdxDye z9Dk~;xU)A*PPH=D_x88W{P^>gBA16Tzg}*0m{agTxhcsQFTlM!zcq1*h}GLC*teP( zlRZ@a(CgFpO+249q7)08XpEm{&?Y8U(=~UVu|99-Byq=LjZEFV^!297L3VOgfGlEV zY_E5;zps5;<~698aXdW;-pf8z3y|@8`-Hd*;3JQWW&?8@_qTiY{dt3{>qP@;qqcu! z)&;`*%mCT$sp5e7&nrjM>+hA~hVKN`U+8iY zKiJ8~D~pwJ{dRidCR+@3l!F3|#eS;BFpE#3=g%s{caPFJe%c zZqhZgG5=B{V)!-Z39Qa1<9<4N%|PC($aGPn%LsM+H*}5@J0}j5SM>e*{DmaGZ0j1& z?DviP>w={|vi>D|`Ru%Lzx#MTiKkqdUCZ*kQ?yNz%t)AK-k_fkE>M4|>TA-%^z+T; zYf-W@9sk$w8sioFn#3P9Sm$~7NTizYx#Nj)_}(ez*7|wiUY$t(p}_>v@v(6|+}txt zntyH*L-q5+jg`^7<>M4#*4Nh(aSi2*)8*x$5yt$=(DgB6;Ywzgc+v~!LqtXtul#2t zt2-l2UGGme9x5&-M9D?PjPvb#N^X9qZVP^UvT?nL+GESd4rtB4>gz#;3eQEy@xihh zGme)JgRFT9z2}zx-njm_+treDAC-{f^zoapbr65pV-#yX!?=EB?(4~)R;kVp?=-GA zHitv`{q-|N>&>&(`Ie}Mb0o&TH~KhdMHEVSHC{yu12kE}!w zK5NP=7ThyNZU18@bMtaJ8}K_dH>>MG%$9grF55)&elO$teJ1xCcIa?({?g-+(vQ85 zlof|=6>j?Ym{f|s<6fnOc<|$;THdCg9r)tfIrzZ$Eph#p{Ra^&<QQhaYqCZVB$v=G{}ZK9!%h;cq>Uu`GIfe%?`#U&?Nh zmE<<1^A(+V;lY_?KDXRzeuG_`@jiJ@Gq-QX_V8Lp@2^#;F0F6Z_Q3LoY|dca&Eed& zxv~A%&R@hj54Usl_Tw?7xaho8D2ZvHmbr{P}uzc^WQ%ArB{|H$;am0L>-@7JNc zvEClnZ#j$3^Mm*`y*-QfD8>`$`hLRqrrN*nemnBx^tH$m1@o)xs-z*A-$$7`qUb6L@f1NpC-#{Rg`E`$#+a+FQi=jUph zW30Jr7;mBX$5NlH{9};udkf*;hQ7v z`6zw82}>)@wq1_r)w>(}w{Mobd?NiV-#z;ES6azPKKSEK_GX3ge81iFkR3I3;8LHD z=9*Fb$KEY$=?&w0Qi=`Wwfx76?)yrr?f353ezty9TRtJ5aeh5$8pB_W9VeE%8LzjN z_-|#;9<<{9z8m}hnDZcR_Lv~H=<8#U`+PC{o4= zwNosg8r+c$nq}P2cG@2l-y*{K(qALh_2*r?8RGHLfjs)p9{sYBlUy?(wJcG`hAztw<#@YlFsTh;5& zr#xOqzZGcgkCDBtdHoZO`33zvH1u>7-`aa4>vYM`ADqq2JvOx92a6il_g2HAcxb-O z?3#Xk)oWEAUZ8C&9-GIwe;*!|m)n2y=a$#ov!n9zD!1D3HQ~nn+G|cVzPz{>|DvB~ z+`cy8JNi3t%j?;e^Md%w9}8G9ef=(O*MQF(=*Z{ZG46MN%5>v($E;#IG8xY|8S^W0 z^CWtYe1mcS?`c(^&pYYFuV*su_qnck@-0WI@gQg8ep7w7H$NI!kx#WX?&s@g_25}~ z8avZzy1E{$$Oz%j1|MZ^M~wZQcWWvBE4&$Rblliqb;Ek|qrXnEVEy`elzj&?d)kM$ z*ZZT4Uv7T$dpo|b#BX)IXxC!8Il?uZJL%`4yGMr@ zzrlQ8eq(?2j0oi+uIHGkwsAhSEZv(I`+ADK-*23MnH=kxlIXkI2dfzO$M~MVS-xUH z{J?2r{8@qD*t3wXe9AQA{Jw1emaVPToLinJf4E#Q7yp>RZS?gZpzTXG;c81hU*EqM z_TS)D?m-gw?r!X#UKyEKt6K?ta(QEaq`m&bHm~Z!uj}LK^^($T#MO8{_19x{KDei6 z;t$=r@EKQ)`7EwKVgwA$kA}*ev`|eg<77Mx9l~2;I-^;{TW$UWMa~FO5 zbxeF~zEL8PTj|&9dmV1GimQY94}JaUy4_CRN~+9r>gU^0e@ctOH{$u|J;wg^c;zU2 z6tBc9>f@nA0|(ipjSrs?VVs{4Yh79Aw{g6Uem;A-x2m-HO~22lUr$%KQ;S9KisOUz z^|^5IlJfqd=KNKZvHv0_Rb^XR#`Cxnk?QzcIK70Jel3(Y)zANBYTaVaeY)~}4~^%+ zX>F^D6IH`_PW}8pKXVxobv>Tn8)4jU)^wuviEGT|Y-9f|KT%m8-A(h+_n#V-uCSD_ zV7@@#Z)U|gi!k?ip0w0>J}kS(MK-@)jknaVA3LvgmmA(V^UM1EqM}Q0F^4fd`Dy)r z6cavS~rSL+)?#kuO;c@urV88r6}>)EguU#-s{`yDAF+NvWz zsGq-<4Yh~*0n>xtPUvu(j&j+gQTRlr9F|%JhuODX|pF`$!mkk%bW!di= z_n*8?tBbO3@qCYdf3LN471eFyx#j(-O(k9B?mE@^u0qE7YJ0J^{8^y}_tVF7*OAup zLZtxCJ&p5a)xKIX^sXzH`g)or#7$OM>%zzB*BhJLW|b?m2lAUP#`UfGbSrr)duQHR zzy5g;=`T`xNAe8;#`P}4HnS}Js55`8pFjQIhKVya_&eQSwC)h`_Q+r!SHZa7=C#i(H&}Jyj}I8fW2cy*g8t72 zw_LC0C4>oAQ#6l#VjPclb7IAxyo32<{r=v{qDi86mjOJpKEBFSh!OGeF?_AQeg&WK zmeqVK@~*3m6+~V@!&SHF1mgy=l zImcVFj#+s}{d_&$b+BApB!oGH)C zAiuUvGexv`qwy-~2X0D| zX}4#4bvbBK{r2CIM^490)bb3AhBV_{{q2E7$LGM5Nq&V=)`hMo& z(o|;oU63z7Xq-jy$ViT%Qg$swrc~7U$J!8?V3jc|^;ZX^Tw@ z^z+QXZ9}D#V|NziYuvADbn%eI+d1>HAC2eRv)SWif9IO)_8jAW*!onMtej`J$ywho z9UZF5CWB0T_+8_EeP~;#j2M31G)LcWdwZ;4t`X5Z?9xm>Csb*-17{KwlaVH^DV^In}^spSpMT2pRmpHuEA z|554x@4KmB$vkmGJ$YuoliWBuT>1aivu(1MDMNi^P!SHDceMH>ny#uM1MKr-zH-uq zPO{;xucE7`hZ=uGRckr+S9LKyo4;D0Ked^>Uf!1X^;Yl4N$;v*a&g0>;>u?H)?YGz zQ@oq}Q+uT8uJ@<^c7FfPCtzX{|6Q(?SJ>Ea)$evPo|n6wUHllkRn4!|)z&hpyrVF0 z&#mV7VsD&m@-Qxa+uFJqU;g@8R2J-i-fY#Xh0+)N3}iWid&wN$#`e25u^s(iGWzX> zZ6nqAuYcO}e#J}3?jP1ErR+VWBJh?}aZ5U6U%hs5S z*_rszQ~T9?#?*N%N`3Cis}HTC^8M3oQw%@lB73ITG zjEBAbrsj9*Zc%nLS64Y^>YM-3{ObEL_M}9d{Il5De$7{AXE*!M@6GskRNHU;_hHO- zcN^K!#){T8nahz|QqRT5$(r>46OrF+*HPwapDrrsFnZtCmuJtrkZcgg`3Sq z>c{i7sYS3pRQvm1G9UZv3~ON1oEK^P^uN{rcB6m$^KUHoyCB{&-q@ZUo>Y-X_j$-C zRkEr1I7XD?>k7Ka^~Lcw5t8MMhUH|JkKWR8oiX1tD>CsKk3O;iUGZDC$$Zz5nlhL^ zgFJX9zZd)i7TfZy>s#}fnG&i!IM!Ww+k{AI;A_MQLUN zR&%zb>KV1aGk(@E^?XbJpJ?hnHNPQs;&|%%ICJ(T>U@#0Bdg1kjab2V?23d-DHo9=E7~&Z8bl?*;YJkOQ5u$V{Gq2x4KBzj(^07 zK;wG-e8YN?I4_)6$?b{l!?)&r!1}#=DE3@$q>j&yPg1<*ElT2RO0>iN;nAO(u^KzO z^QHWT+MYc>bu<@gn#4a2Z?E*l$1Zr-=4i`n#^ASEl6k=PU@2EV6|a^zQS*E7Wxu$& zD4b8YW>Wd$DSc$%yR)KWo@}bW=a~lb+nP)=O20nu*P(&DX`Njr{@JhQXS;ZiZ1yus z)Y_c|>&Lr=G?I-&bIW}C{gA*Ki8AfjEc5;{LX9_%zKbyH;B#TG-@mw$EnMEUE9Mob zUtbMs+f3f9luz2}`)AyZB-!Xev-Bdbe&KlMxe7;0o7fX+%k=Bx_wU2x*%F7v-d4u_ z^UTl=ve}ZH^4&1w{?iNZv$HR$~@l-$Xxn<|M6#%EPLg!$2;p%>Udr7 zDna=25II%9|8xB*eU?_Fu1mxRzHg)}JRh4oQ^juZ}g}DZEAb=WL?yH;&mOA|s5~hoz1+louyj%iH?- zea4Hya^SK~!f#s^wZB6)g~*6YlOhKXY zr+$4`BBloK^sBP$95oX2=WiO*?~K;&Cj08wa}P??lH<;ok%ddHg)VJw4v|}~^%MPa z8QW{ao|5v5V{^GG(AeLT9#xk|mU_tE`Kzk^{kBj$K04V-CT0Yw{)!c=^NU++$z0iu z?X|pyyWCOPK~~Y9uS|{!<@bi}6yeiCl>dGQH`%RZRr>yr@%rxaof@*-GZ&epkLO;s z>+piptIE|=@tf1h^6@wa!0bU{f1}cG7TJ+B#&J&w%3Y?hGJCdIQqQTIQ~AC zbQ85R$IF|!jn5Mnmi{Svd(`U-mKPSOdm`kQV#fBe>sw5IAK@$e7Bse3*6bC{Bljms(^2F7maK~g@#(dP znwVLj z?DUwSvgl`H``><5n|nWXmO0-V+dpdZG;_}{p>nByziZz+lR3wt9@6r8O0yR2`OIH) zMT1Yz)bTKV|2dIod@tGeZ6UQi>Wzspjp|L?H?y%nqD`gwN70mi-?oA}UKh8@B5n7! zm2Pv4^WCme8y@sy|Z`C1~qKL60Zylkb9 zpITvI!rO*klShnH%P;gbfmf=TVjlO(Sf7mhF1$wnTC!>7uWEa=eC5o&j@6akcEOD>hs}F%257z zvW;k=&xfm{5_p&PEj+uIUl+ zp`S6|lf(P79;U&(>knhTd4t>V@+o=vEf-^Z`iyAD>;2BnZUgAq|xt9I-!xH1z4?Vw10r$iUw-8?Gk1@Yty zrUD1Yt2~0{AH;`?r-|zGcey`r0)Lwkmilpf38hC)9m2cSe3l;SHbCXJS0nhfuK7(B zyYE)HU&UBHHjH~kyLME0wc7DKBx!G5&v0jzcP<*w>ny%t@`}l;@_Ut{c>1&qvrXJO zl}}wTgx}AR$$X<+w93B*CGxXFM|pHv_gJk@$-_}Rq03r!XyPK;2FWt>>Nq}R*;ezx zd5+32ekSpd0DIc@#`f|4GJua89VwdDYN&MT;YD`Vb+fIIr6&5Jj~yM!8rN#bkV{(M z9K*vrzHTp}@+ey0ay6cL^>Q1aa;&d&xBO;WUzKBhKlbD4gIqhR9P2xH)ZV>b;m#@# zr1h=8_=4FpCa=ox()vE0mSM^rw@&3#Xnk#SW-{F>7p?Now7zFjMy0l2_gJl8aa!Lo zUDk>-6BnuVx1#lJxNNH_ZJwj@=O1@MBt7{g;wm&zulFbC-@sbjTb(}Bw!eD)cXUK| zkw3zZj~`_;`g#k}-TCwXd57S;cz;CdkzSLYLkJ0a&!)}J)TiV@~SXZ*%pGSA!3iuah@ zhfV0+R^@l2#*50ESF^zjd#nCqHR*R>I{jkK$<0)Mt>2x^XIHw3iu2=?f0ew#X5D(p z#%^kiTsA1}CkOh!V$Y+@0^{eOn$J|bY=97DW0n8!wShjfOJSb)IGlwx$KOW!uiJCx zsL$eO`A_tBEIgshH+Jh;&qak;y%({D!)6N`L4n_BITQMyamZqdJ27XEsr zF~8^I?0J?woSAcQrN8i4D8}CE%I|aI_0Z2<38He-KHR>~8te~V@l|HN)n$a~`I{@SH z)}L%;?oPc}3jIGk5&Utd$!dL) zKQxptlP8(zZz#YopKO{SUXAL<$Ce+ajz5=Q_HtXjxolbvcQsxS|NgA+xzc=tzqcB% z!;RizcY`SI*V}mh{(Em>KK;(`H=pcJpOiV&^*%9;J>G6Egy=+PsLr;inoob7yUcJ=(=K3u&ZClrrvC6SnK0gyyMYe1` z!W0{BQhD6Hm;myrA9tSkH@rJU-7h%!g`! z|4Zf$9r~Epwo2fuUgc1F;QP8>Id_Kh$fxRgf-kj;V*?7TVUtJp;po3)Gl%`DP*A$p zXrRWodYy&&Ehv{Z_f`UOS!+}94~ph-axYMHRRHO0UuF9lKT8R+e^g zQF*56!EAH)7*Xb(q4(c4n+=Sc!aC2=+oR7t^Min4Vs{bz?)`tAf3^p`BX(-)l?#+_&;1mOYCrf0%~9iIyxc7c9xk&#lZmO}?%6*RPuQ z&3yhzcKZ{4lP#IA-tWL`TNmL+vj0?ilE)mA&DyFwHn%$eWK!R{ymGJgtX!)SYP`{x z>32t~zhV(DYO8$q#01&=d16|kv#r{`>8*nJq<~+{+|o)N4~N34^NKan*&&A^Q7^o9D9v?bQ8JS`TyKz3!Lc(pd`VPs5tB9;@cCi=`sr=aF$w z*@tJd+1&gAs{h~hf7qyqtb47DDA1?5g#TnAvzUK-t=Lo7I6waNcaVEUndiktd}NsN zPi>Q5UU(BMhCgYh^3Q83%8aN#mQI@@{-%wWdE~D~X4^!!H)*Kf{F9)c8pNtlKTERc8bI5wN|NdRS zUVDqu_sKu7&rQ_*Q(o&+Mr@fsPmDSnrTWVpYar{4T_~nK%ct_qUl)rDb8^caVU1LN zBkOiCd{c9g-c?->xOKA+BGPMpMsw!7876b`LvN(^(YRV)#${ zmY4aqjTBQmc&PEZ{(i~W;56pA*4Q46+g&!l-L+M$oEf3?O7DB|rPt@PyptBF?d#Eh zFRORRM>r-L=gYtAw|e99^c_Va<*wbkl>c0pRm|;I9eLZOlo~Jey*K|cs5$%9)sADn zBMUU(*#olj?puyvdr2GHBVvfpZE-1AEBNKHNz+B{m6Ju^?#A`+uH68BbJP@(xJ&(i z6uGEQZQgKW1vc_@H8tKI zzfQ#Rxz)*VvwQX=S>n)0b-q|F9>ttX220->#`Q@=Z4`$q7m#cEbIgx7F7}o!aV##I zb#PMi9ocOud)=_UZ2KU;(&wlA5$Ea4Bd_xRRLe^rU0Z%lUu!Py?yB@&iB9r#%6L(9 zq;Y@ycfO;pJIUVn3djfVeyRSnbZ;3p{jxc8fLb2kva~-BdALY)S^Y%K_uu~MDfxM$ zQoF_NjV3j}N{tt@92pH|slB#p`Q;;0#qNzM;+$1arT1Oo#J@CZ%tGmVirD_QJ?e3P ztBbt2jz+?*q`uFer{ff+EKkp5YVVzyn`c2*P z%~auPf}D9)eO^w>{QF-rzi`Nj+dSSROyS1yaR1E>c5-1?S#xqc!Jz~ zf4B+zZ(sSx>|B=yEVXx6%%6{mEh9sx)?@YU)%`}^q2FsBu>QN~eYdn)znZV_m|M}` z_HoNmT=_3n9U&4PPB$$$pzask>Qim`YDZIZp;>DG%Kh()$WM7I2rJ`xS5AG=TI4BR zR35u!JpZkYJHehtq_Ftl?rOZh*9P-R-Bgz4>EB64WcN9NH%x2e=K~;gsA0zv|lc6M!JfCsSzr#(K5R{ zI3SxC8KkbqGHL4pG4%Z%^Mc35^<)3n@-ig6As_YoGrq4c+m^a-K6bU444rN4&#J>F ziS#~I`2{~`3H{&wap8)ywCUlwuaAXj_u1gjd0_xFFJ{kg2wST zr-7er@%z0w_oPBiqLl*Fke~bQ!&2&s+Y)n#5f*oA7+)^yA&6z!i@XL zm|iA%b)}cMy3!H-e6w8v-tgcB^Usm3(9dm)J8-Ac*;(ZLdMZD@qy-OZ>LqFnD4@nK z+}WA?7OcXijCEJ~(@k8KY2qZGG*!=EeCQ%)Ubui0Gfy}4f7drTf1va~L+dxwL9O2| z{~UZ)r;Da4n~eK??KC%8+HIWhT3kV5J_ipu%L}(0`sM8`5qx9NowOnG=~$l3d(@SW4!7qyzOKc1 zyhV!=vU+PS_qj|~`MFVUynnQP@H<&Sx3k{LneBrmMacTQhC04sX`xVt+`Y;5$0IHs{VK~u$-S3RKffAb@ice6^DvdS_0jpu|%?#lM-G z<~E*RBJS^Io9h)6fAWQ^{x+{t*}BQ2#m@K;m6z?2%BC#4D%$rkUZ306O=EfH%@nih z8q3?5D~+wVGhQ@5tDYZto9C&l@$*sQ=uD&k$ji;lJ+h@23yD(WU7elEz8@JP{Ox{)cuI>@=0TjTFe!*=zFZ#9vke^*r$*w;y@8&es+1&SoiZ2#F4c|&iACU zsoj#rz$r%m^Cqcm;rdWf&%3wkuedmsbvO_!!u}X~S#v6T^dnhp8*1c3vZu1klR67m zn^5IH;!nSN?7mo>nAA<>9_#n8ilZxw%WuF;{pB5ztpyb4ySvnP&m90<_hwId)0hu4vSaR6}iI1%g!SQa=U))iwxub??1)~h1HjsP!m z)GKL@h;0i`WrCfKm;-nfokNEY{;HZIVqe2kje!2@np^suDaTmQ!QnvqvlEQ z(m6OZcubljV!K0wpXnTRt~nyMJ3P?6HNfi;putmLb3|xTTg&*U{rmXr&{z2ROW~3GgB2)*KobxCAXsBa+aMS?Q+7sXp zAfTrM0UGM4btItPN$2ne5-=8g;MfMp(Tf~)^mZnozY75#Xy8FQ$CzCS@FKzwj$;Qo zbZ~c_ccX}Yj028{WkT;xKo0Bx8v%aQf(fXDyXYJq=ph>5Jqf)C&@6S- zdK1tWO2Am)IF^w2A;1d{dcje{^5E^OIU?qX8v4RCN3>{&;RN^)`w>usCqi>Xi-s6U zz<5yv_)vqVzvhS*Pc(7(Fn4gvJO&U)5Bi}ahi4!GJ|E3dgC0YG2Yisu;RCny!!wwG z`Vay%j0cVy`k@acVA;qm91-(IgeR7OIm8h#Mt#juv-skP!w)Ywya@#O0dOoE^+cUx zoFrXCL>)ROAcu~zFlI6V^_f0PC| zyx3>ZP{*=H6VQiOYSvt3H#NLG2 z1oWfNRp;R7!?Nb+hN*F92l^rct`W$=;ayC?GL{gap}v%WI&_SQ9DE4@`Z5Ca;l)0`#>6cmQzhr*#DQ;YDpd0d)Wz`yLU;3^@E720@i&A0UqSwh`k8VFy>|g#@(VhYM29ZaKxMSvEXo0(^*=GdzL-A9B+A}f?v=%G**|`a=zHi{}w>_#P9$(f5Ra9{9nr zZph(zN`UW~=BUB*oB$spwgWgkF9_&aq&aHf3v>?uO9FaOdqqGG_&lAzrU(zb;BRye z{Vf4K;B$2Tjv{>UgCk;&(BBi#13pFPA1J~PFKQnN@S*;R01fpq1Zb#X4yb?DIlR!n z5a0nHrE|pLnxpqC0sZiz{*CaRfI4)Hi5why3c=#}K^#8xqV|)3Ks{4t!w+v};@Dp32ZtX%E8@_RgTn(o3jzBBIXFDfvl5^q2ZslG zHUjoHatlYqF#|um*$MC>2Zshv4$Tp9Ori!~P69Y0G}O?C9CN|^bLoh61xG);)|w;Y zynqIe4FP&?0yJ=pha4X0wi@7h2+;Eq-~q=RkYf($$)^F1UaTuL)Zs;*Uq{ryQAfl$ zsG+X_0X5{{(2y6@5jAi`_zUTXIf7$;=qaotyx`E_DMGOH7bT8ypn)SoFZNds4xnC~ zfU(eDLPzw0Bf?kmuN)lnK~E_Hwl#8a)X-P@uN)j6=w%4lXUM^!!CzKKj13MCbUVUr z;>ax=u^a(j%&okRSPyV$@YrjP=s52Xlpn zI+j_PfN{Ywf8_8$uR=f#+o7uFi146>ZGjvSJ=Olo!2#4U4wiww>Y5{B9Z3>fwA0lgby4VJnlMT3~*@h z)Y1_?aOhZ8ZJncDhk%GaaCo5CC7^~J96;TJfcan zbd1-CV96~Uu`vODXiYT0QOErYnx&3fQv$}rx-`=qu{i;Lcw1#5nM@CcuY?dnh>O(uRO#fMdTPhsU1)A8Kt0sDoo)BS*w>1m2DS zKl+fP-d;!SdvJIH2=HMn_&Vqa9USw3)=@{)z)?rUy1|PvJL!ny1{@kZftn*?{h`6r zSw|cP-~c#|2lRCzpa&ewMUIH&1!<0mI%*gfIU>gD`d1DPAM|cIq6Q8xmf4+v8gg(f z8$CUAgclqh=)nZkkb`60&=aB~yx{Oa?@2%nIXL{#dl7ISU8LqHA7f(INmcm@&RL&Px*K9~R>JmApaMUF9s z5KtRRKu@gZsKJjM95IdnAL{6j*8s;j2?Y3{C+Y|f>PZA>h!_VvS?AEtR4 zoH+VWM{NWFwG;yC064})eWcFegMSnO9C5UcV>E}3<&GtQBf^Io*2$8OBaR;A;P4=h zC!mgfJb{27aO`*F@JuAYhd4=d_$CuD9smw6B7ETRU<^xb3UTx!PSqURGy;0y1-I1T zLmhEC0X>K_G>3mC0XKJb!0sY{(Zdmd~#L)+UqaQx#$T7xZ z0_KXiM05C-5}?BeZmGeCI+nAHfU&@FeY51tiK7nyM?ZYfkz>2Zs)hS}K49J=ex89FZgbqBf^6|%nP|i-$NW4>U#;$5K#wD)wxAa(;DjOT0=w~eI5kl z7Tru78tQ@o4H0zl_gt^i?Dvx9Azfp`m_&01Xj!3qPpyLt29u{IJdu z;Xz+<0&l_gt^u>~f+@jym8tONRLqkLz{Fcrw`faVDen)GFsH5*L0l7uL zM;sdJ_X*GtQMd31I)A7&c)=g(91$M$4WW4=x9E?xhWZoY&=66#@TWR|rZsrMpX(eE z9`q%WhTNjR&>HG5i917zDcAZx9Fd=hWcmX&=66#@Gm<5sx^4Qzv&zi9`u2K*ZEfRA&2*et|Lbs zIXL1^0(ySw9QtovhmJaOaKt|Z^klL!a_E_fqYfQ)i~#zBsVW#%QIC!gks z`8B}dDL{Y^b#TOjghDz8M-AS>1WOJMpk9OkKeVERVmb$h2YPW0aBMetp_R}8hX*~- zP)81LNe%E)1dI<~X+jyDgO?>h$MJw3aMS?Qwh*=xkb|QaeRhO$1k|B}qaS&B0(|i7 z)EYeYlw*GIfg_^NGH=uzbPavrsKK*G=cr>n(Br594j*#M7?>k`s5ucZ7RCTa4LLj( z9dktvJyrYQN8M7xdLgf%0S+&6#HECa#Nk5?9I=uHI6TM^7ZNHHhYz(XI$G+M8tSN3 zCsZYl9@N0A>AbqG!2=Er9%lkP$iZE7?y7Ut!4c6{Lr09GIK`S&b0fGD&<|cq=ja8u z)N1QGYIO+6>k{C@_~4f1co2sNUg*fd;Q_bQJc+~SMZlaeA8MT`Rt9^~MNegtSO3Gky2 z^FqvkfeHartcqamU=tB)Te1Qb?LPHHXIAUi4v@QhnU_5X{Z0{ffeCX>+ zKn>d;9&pqE)VfiGzdHdvh#23(d+0n^Yw(5;(2rhl#GZs+1o$xq{K&x(dlR6A5-=~! z8}mU9j@X9)tuFz7^nr)zJe(pt@PcC*$omoCgC86bS_A=g)FKJ!!!p4Uu@2xE3mQ0T zSf?lgmWzIjgB-j+0X~Z-nmBv|2p9(%JkSSffMfe0N6byzy)^+jcnn4KAO}Z;K8PaL z1LI+zj-U)JxzD8@PuO$u* z5q0o&I=ATSwTAizts$b0K73||+@f#P8tR*fLqkLze6!9i`WCIBzEx|8sG~1{Ub7*$ z=-af0`gY>b5K#x;p>vDAQ){U2(i$S_=!>IqkX!WKT0?ygacGFBTlij`r)mw}k%TnL zQ3JryhX_A7Jn6cIx|skCHE`6xh0Z0#eT4l4aKsG40UeQpBOW9i(($n7h(`!Vbv&jy z;&H+W9pM8li<)Zu?efc{={)ZqC* zfDiGb=J0(YKu3fIjxmr!N9{8KJ&0d4$M|0f@P5-AHF&-g;6wcJ7yqeq_*Mla&BpHqBAXPJj;{a73&h))hH8{5c5d z_Txd`yUi*-g0j&%S>&6*;{hYvO6;PBY!8Y1e@u|CM5qn4Y1enhO7Ek$_pP=pWb z1CCl=ir7Bz!H*mqF&_aMdh!!6HX?lB7y~)<0tEQc2VPL;g>(%)@FE9Cgb#kqr!WEI zVS9mF=2(O{`Vi3r4jnoCMG06I#sV*<^WwUO9(a+1Bfz8fwVF5#0#TFpfI`eTeXZ*CN0JFL-U8*U>fjz@fo|UgW4_o^=Tr8xb0~ z2LT@Bs3Ql*`g#)3hX@TEx)%XGCIU2gQNwZ>0X0rQ4#&@WIoL@PBH!53v8oDvsm!PDmNqBZLUq zo9w;!-h1y&M)uxYHrab`C8LCdh(eN4(ICBF_5F8U@9UiVoX_Xn_x=6-{?GGxM*8k$ zEmwn@XU4lu@UJ`MYU>3Zja>BHJwI#t`Y~c3IlZ1UsH<%dYJ74vYtPhL-Sd*G$u}I< z;)oe?bFDouYg%XCDBMAPd8GLYyB<4Ys8~( zEvMNs=$uJD!naj9t(u%hm7!gd2&4( z`&z4;wPUD>>T+$0`Qs^K#53RLaq@(xDcMa#=ZOGMj4>~@3SmIa+;%q@0cMU;XAf9t-hQ_K+7XU+-1C(_AJ z3>sSbNyGZ&p++ayqv5qycg|D7Y*9~sYS37#Tg%<|wBQr<ORXlUhE3~QR71kaU2u69+>(8{kK)-=}y&$UCYc3sfW%C8^RG&cm#jYF>X)1aZ1 z-!!agZVsMXhFtB|prMuDHmqrG51u=QTi6 z2Zmhj!Jwg)KQydq9uA&IhFnel=&*jQNY5vKd|2y05&ZHehxJoM8d~|&!}@2%pAT!f zy8bg^EjQyAVXnH`vjcK7X`Tx@k&Z?#s*AMG#|uO5{3Cj5&TXGx4!P(#sL}muh_rHb zkxtFL7emcj4t3AjEZScWx#)GF(SK<`?scR!>*XQR$swnwu{P_KxHE1IJ-M2`^>2dC zS`Kv@=g@m~h> z2Ltl+LyzXqLoQwzX7GF%`qm?IkxryBljkpS?vU$`Sc_-HM`6#igGa6gwbO&{<2ZGQ zY9n$wYx8Jmox!Y62IO?sA|1W8+_~gxBko}RY5X<*HspUF)}IwW4{P~9hV?&(Xf6NO zu>N<^3?8}oMSM9#Yq|KJ_-csOa&e^5`u^zg>%)42AzI5P9M%&J(OUkEVLkB>t>xbw*54YU zwS1CcJ?Rjw<<8oxL!|DRN9eB;L0!81uLAADa6J)WjfsnT zbW?=6X80WeJu@Z`HNHuQ=;O##<<7@r_Tu5(lf}2gjOl~t_4H~}hPl&(xq50-hjUCD z&Y`EaP?+s^N$jULLrfRui8F>7GY9`PF>la0%SI9Pk+-e{D035Gp*oEv=0 z#hF28mV2KbbnbCRd^fN4IidenoE_df=ZAS)$CY6g9p5Km7VS9Au*U`AeD=REoSWye z&@=Di(5Jg3JV)9~!!x40DlQ4y%R`^;ig+%55?6($l^X zzYm^Og6_R|GY$yax8lwCFwTfCg75A4WALvKW;@IK;e5NdhrRz1wC~2Bf@hg9oA%E^ zw{v=Xe;TwO#9xAE>CoFgjdM5?-^cOyp#3OL?wRo{8FbsE|DI9bts=*;+cxX&2X&G=W)ZQlCJ;x~()7Z2@M;dzZ*o%TOL zw{hz^W5V#-@X(G@?zI`cNH=EjYvJ{#)AwHSdXHQ5-qM>SoXI|8hclV+?V&bD(Z@}9 z)1N3j3!bmXIn}Mli}`yN_833xVgCt2&;GmAUpTD45i^I`yH=xhr-_5doxWA18?oVk?Co@&c~GVc#Wqn zP8;U(Ei~Hy_nW?4kKg|DS9ez08NwZAjK!++>CIg}Q*oByxBvHp&bjzz4bRA(X?+g- zK`fP*PH(n2y|d}hQT=;GI&t>UpD#{IW8U0D%{{%3<_fQ|_t)yhdBR!Lokwq_FmKl8 z&s+RqIEVfM;SPLe&ydD`_NMjqg7t!NTzf2BTs95A-t^_Z9?@Skj!Lsg(cGnD@mMhp zAKjGYzBZ&?GPX^>M3HBiSUy%w!$&uH`BFt%|1G^;`en<_a}Rqs`--t#@adbSw`!~~ ztk*5B9QIS&H0;M`mglrecy_CWnOnx1?Mr99Mwn?2+O>nvvtKj3ChG^kzS>&D`l%v6 zo{4qBEYaD_qFpbX$$Ep(e=atRjpE6$ACKB5LC5DmKzxk3D4b)n;PL)&U%FA#Y*F+K zcsGx;gKw+g@iA-HqWkl08=f8C)^U39Z4*2`Ci=L$UAg`av2M?efBQHsXnic-sYthD zn7d2t6C0-I+c{1OKA$&sEAs3S`p(7UETeUo-HSgCKA)HNEb{CXbYrF2yZED^-8bxK z-plFtEAku|&ct`f5XaBEfB6w%hR^c{6nUO1Kd7jGaBSN7&DB3N4v)jaT=OPr7M=Zl zU2|lS|J&8K%&TX8OxVvJW*imfjoQbuqlic-Z^l@T@&w=XxY~9t%A+^Ii?QSHf%N^`m_v^v(Ni*z?8U zr+X=$jP--|sbT%|;+o+s&i>1Azh8v2()~J~3EF34t)TV0w9gmyeizS${ui-cnDIjV zD(L)9?t4XZ)tt|MdT)obTfZF6`$pK)d4Chm!ShbM9`5aV=y@J*2A}8kTBx}{tu?J@ z^VSgU^T#mv_u&rq{71NlxwLxxe+YZvgP?Vfcf*;?bB{j-pV@y7`@bLj`kujG!n64# z_-Xk*4zoTC9($YddGLP}_NF!CufhNK;Gs2R+MYH4r@>>-x2yfFsLwY;Yo31vowIxv zW|>X<&mq2<_CMwJo~GP0^1Phu-@)@`m}NHKY=dsfqW6UN2klp(Z{D2s>^X9gpKgM3 zpRYG8ryZr7*6)Fj9zIX&j~$x~eV^}kE!P_(%o{VlA9~}2&v*QO5B{;(BR%bSVUG!e zPR;CbhxIp$UkiTG=RO|&ugAX4v7RXOCyQ@{vrkbp*PSK~bNThZ6+C9F5Om)S`_WDs z_VD?UZk3ok4rwkg-S@(Nw9AB9>xIvqd{f0?>G`}4Gl#Qy9i}ci-*mBUpJ#czw%-X_ zudVkHo%hi6Mg1AW+zmqC`)H={9-6gCw^{7iOtbm*X9>M|!XEZkb7$+h!}&0Kcm`&B zAI%%yTXPic!82F5KkX9X8PIx9%@^KJUVk1nul+({pGAVt{yzw_oY6kk&bUC(+Hd|) zGi%{tO>3V8gGXF6XcrHD`#&5!wDw;t>_@v~&@CO#M0a2Cn@77;xF_uogKoKSXS(Zx z-#pr7LvN+umP8u-^XVYWxSpzQMO&oLc{&;t54{`#3wD{SOXW_d7C1)D9`s*Qdi*B^zuBjR zzV&HwV(_08TjVvv8BYx}&Io?@P~$Q8f-p<(!r-&^Z-vKu{PZ|4%v&|i3AKyk?6CJw zV&nF;|G9B~n6YA95E5o^e8XI+9miu>VqVPuN?H$Nu)YCCt;iBh+q< zo5J3=#d_^)e_B0z-yZfe>#oqZzB8T*e)H}QzI%hm{`ZHueEK}*J`iej_XUr8IQxTP z-eU1cs67-v3x0iT^BxVe_@4~>SuYfi1^>fAXCLdw!;CTGiO?7M>G*yXba+1O_jIh) z^Kl<%`FXhiFGA1W&%_#Ote=f5`j|jxhBe=FLC5#YxH6623q#F0?61f7V({qydWg>Z zQe2al?&V?4_e${4{$_~o`fA*mp6|EAn(wvXp?!UbBNyL@JJa*MIjs497d*7TkNeWl zzBSZ*efsv$<9jD~^#3qKUpxP?{Gq&NycgDd?*(Jx-Tkz=reTcWE`K)}r(f>c=ALZ73 zp9c@^zhZ(kdjA}1m*@TW(Bu0ec=W#<;>BtHQ$AB(Ge+t?WzF|h@X(G@ea#9{tfnJTlD~#d-45`Pr8>-MsMt)_IP9c%uSDPyx`IQ+7KU1 zGk*EPdFlL|(3)?8;Gvyxh_|JmsCH>Uqq`LgNh{G8L8Z<64l zojf*3qc_=5yFRarsNIuy`k}`+ zL-6R&IK+F?e5d?^yk^WC)_gMs5AAp3k~Dg=47JDd&N}q?W(ywu*@yTlY4jEt zYUB3a^Yb4)zJ-EEf01}5z22fjZT$3$mD8y$9&~0b5znW$UNZD|ilu@_ZRw!n`(eD8 z-g=qP-#(TN9<>#Mj&HemCB60XLAPS89IsW^x8~a_RthyURtde$V%6YRTQ~S=SBp2B zW4(INtrKg;JJt1l{&=rkZH=H?D}3%zTYFgZtv9Us?4xGS4dSNswCe|*+J?iLc9Xa= zjs8ZVw`pt~XIEF-Jowy6PmOQuA-dC+!Lw~_5hv#5+adTor)`4HbJ{M7HM^f)8-%}-;^cTSugYV>CY&slL^?2(@D zf)Hu-_%Du2g74fgYsvQgN%8#HJ+FDZ7lwJ4g`OD~#olSGFOBPi?((pY+4eB^nz$l( z%%I^h`>If*y*hpxde?<>T^Y`_XlJ{jcx}*`aetU=hPplZ9tk!3g8$aIF%If$8|Sz! z%)Tk?d2_hK9YJTV{T687yNkEPp?URgkE6u9_v)mi}_WaEd=j{x?Eq^e~bMJ@4T+ia6u%G^;VXod2aYXa29}7Ou#+ms&vnPX3 z|7XFk_jJ&@(^Fv&+GoOCx@Y6?=3BcLzuCVC^UV0=5Z&pyFhl=^FpKB;u!sJy!d$&y z$6?L4elhsWdnNeo`BL!dzZ?8|FNeAMuZCHAzl(F4Y5iW9=Q*3{HFz!F2)_4+wb$hJ zpz}I>I>gC(U4CEwR+wv_H^bg$yc6fPm);+S+K0uzg?VoW|2LcS@8TbWpZ25RH~UX< zUURIS$z7fOlW=Ee|8v;i`hzg*FY)&{Kd%|~=KpJqRLyL@k3-*{JoX>8{%6B_%yJ%k zy1RWnC-?Ygn4zZUKA*=w!a2EJ9fKOJziV)BJ%97y-2Q&So%w0~Jpr8={`SB< zto<#+h2b7N?&@z4{EdW~d;8l4y~)BHXY@O>{;t7n=fs{J!SCMsn+N?}Tl<>`XEI}o zu%Fpe#YMx~?{1hi!s~qYaSnITTdL1j{w~67(YffHiOvka4`R0dw?l8qe15OQ-uhFA zv*=Gd#6{CgQ|_$#(}nZ#%orCB>* z*7S3gUlw$8hc(|k!9)9lAOA@X#(X#Oc#7 zS$<~FEfv;$O9v0_4~IBQ`en+`2)bp%ns2$_pduPZ?)i|U44j4q+g@_)Sz24tohao9@@2sxN`b+%1;Tpb;Fu(z2Ko;e~8}WBN_XPYSwC!AwhA8Ft%rD6 z`fbWj2)b>3Z8pxZC3`SuMS+5_X5&^sX1_R4$Eh;{k?<#c8o z9Q?G`_p$SkqP}=^&>b3dX55_SM@4;~|IaBN9*4yd;p>ctLhZ<*c2x1MYPWYyg5URiZzG^2& z%ziS|%>MZh`Jaf}ga5AhG_M(V#xr5hd&7RdU;Ie%?%=s6K2Fbfe{3+u|9kh9zYu0T z82r9>{6LZC;dm+5O3(LD{5tp^4IbY+{#8-mo;>z>JRXbR2j5e{<9o-yDAKwUoqM?V z&qB?!csl+ZW_%p{zK{HDk=C;t<{c)o>r4 zm&1L`bMN1V8E*xT`@a&N7wsG2dGWs%Yxmr&`OLNV@4`I$zdb~=UJtY0j6cRYdCjmk zo9~^lhgt81zO`rkhj7LZ!udRFH6HuFA7{XZ|-ga7a09Ak7pRd9!XZbStzlhP=i(k*$JigJZo255$`TEVYc1E+@b<}dR-F2*T z(YZ${x5t>pZ^hPm%@{lE$3I5VK4#F_TkUIMZ@P(t&wAY8xBvLTXHP!^(ewN!9BQ85 z*F*HPkZ%^v=KDt2!z@1=nJCPdA$a^OM2*heX~JB+$-)flNy53!o;;k@+)2az^`{K? z*ZX#C({r$%HhAnYb(mrH6v01L%o^LK=d(7CcIHqsd%7W-HDj3T?9+#N&ilrK`_MrP-sQG!%Y(?iVZ;mjFe}ypHjM>8-Xnz>)VAl6zyY6B=XYkv9 zwcxYQ+(Y!UqPfb=S}J}JJLNTFo>)E1m@jxn>+|EhMV`fDf!H}cpPwDA9efJ~&zR{K zEb=T8+r}>G`4*1#gKyE`887{2Mg7HMiP$t~`R%!6=-G4WSSI)<$h%QdZ{^T)56_0r z{Z<^JXSQ4{8(W5b)(NvFZq7_5A4cNBH&E3;XG<8)}~K2C-wfhi6G=#)iR9yYUb`-~GcqC+Uux6g@AV z&BM9*Ja0YowhA>fwiu#ky3dG^^S)Xd&vh|Xl5wKMJ;w9a_Y z5bd#d*kivqDt2$aeXQ-tcVO7VtiwXz`hYkzyjDkq*I^F6L9bI$>zT?9kc#exbx{LLX!#sPQ9OgR5iNSwD zoDuwb*5>h@8D{C78hbX=+F8tUr_;l1_c&*W&UaeaA>qTsXV1)=9TT^eeh)5Sxap=b4zaG`b9 zqrEHC%)VuaX5Aj?vmTCphxJ3{{Ptg_8lQb09pW7A^+>r{%hrFqxMR_b$71Pn zGoB2ddD1^o$TL&DUl+F=d@q*ISkCuy@GO=7r6SMt^?p;_V(`6E zK1Dg-Z-Zyq^sg3qzFF_};^u?zwem^I`F;0j)>EL^(eDrd@cY|m3^nWb!j9Twc#Z3m^d*xpS-}}L{M*1uITJz84`X2=U zzv3^k@i61V@-Kq#s`P&?@_ZCLe~(XMqx5`tr`fPv?c<>PG;Xi1_P6*f{u5^Fneln( zneorKKK(z6_PeQE&zkPvVFsV`TJyN`$n8yM{Z%;YNY&imJw_{ce{=Qq_(v%^6UHj1 zHQTe)qcwZ%5WOB_6wMvC==Csr!ti?VdELedIp! z;-Y!pI}-$-NM{z`L__46G@MDzdy8(ea6Wu1ywA+@{{42?!~1^PBG2UEeM~!Lcpux7 z)-1E_LuWlz(5jg=b@0s){>_**P58IOqi=2Abit3AgU`AAThyaVr-z%EuW6$@8=;PM>q37e> z!bS7+`OV^=H|%FUPdKaSV;0?f;oMjteEc%QY&}{t7967e77u>4g@SI0;K!ojmv@6Cv!}^Zm3awWQKE2gL&3?{khBG;bJJG6{N9!zVX49!Tulw-m zuN@o21AUC~eVTR3*NSyR&-YM#e`39Iz4b%S_Z@t1VC!DX4D&XM5g-55HXdr5 z6i0llRogVwHj5D-@6|RRYFiXv?OFIdqqb$JZ51Ovzo~5>+l2Ftl6KPAw%qx)3%x0- z%^o|I>zT1bjQBik#*Ra6-{K=_cP{eJRX%U*QqI3?=q*@n``E2qZ}<3LuiD=;>+L=CPOElx?9*D${(9F}yFZ*u@4q~-BOd?& literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index 221cdc4..4007e2c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -292,8 +292,7 @@ const VERT_SHADER_SRC: &str = #define mediump #define highp #line 0 -uniform highp mat4 uni_model; -uniform highp mat4 uni_viewproj; +uniform highp mat4 uni_mvp; attribute highp vec4 attr_pos; attribute mediump vec2 attr_uv; @@ -311,9 +310,7 @@ void main (void) { //vary_color.xyz = attr_normal; vary_normal = attr_normal; - vec4 world_pos = uni_model * attr_pos; - - gl_Position = uni_viewproj * world_pos; + gl_Position = uni_mvp * attr_pos; }"; const FRAG_SHADER_SRC: &str = @@ -324,7 +321,7 @@ const FRAG_SHADER_SRC: &str = #line 0 //uniform lowp sampler2D uni_texture; uniform lowp vec3 uni_albedo; -uniform lowp vec4 uni_object_space_light; +uniform lowp vec3 uni_object_space_light; //varying lowp vec4 vary_color; varying lowp vec3 vary_normal; @@ -335,7 +332,7 @@ void main (void) { lowp vec3 normal = normalize (vary_normal); //lowp vec3 albedo = pow (vec3 (255.0 / 255.0, 154.0 / 255.0, 0.0 / 255.0), vec3 (2.0)); - lowp float diffuse_factor = dot (normal, uni_object_space_light.xyz); + lowp float diffuse_factor = dot (normal, uni_object_space_light); lowp vec3 sun = max (diffuse_factor, 0.0) * vec3 (0.95, 0.9, 0.85); lowp vec3 sky = (diffuse_factor * 0.45 + 0.55) * vec3 (0.05, 0.1, 0.15); lowp vec3 diffuse_color = uni_albedo * (sun + sky); @@ -532,8 +529,7 @@ fn main () { let shader_program = ShaderProgram::new (&vert_shader, &frag_shader).unwrap (); let unis: HashMap <_, _> = vec! [ - "model", - "viewproj", + "mvp", "object_space_light", "albedo", ].iter () @@ -576,14 +572,6 @@ fn main () { let model_data = load_small_file ("pumpking.iqm"); let model = IqmModel::from_slice (&model_data [..]); - let id_mat = Mat4::identity (); - let view_mat: Vec = vec! [ - 0.3125, 0.0, 0.0, 0.0, - 0.0, 0.5, 0.0, 0.0, - 0.0, 0.0, 0.3125, 0.0, - 0.0, 0.0, 0.0, 1.0, - ]; - const FALSE_U8: u8 = 0; unsafe { @@ -593,8 +581,6 @@ fn main () { let num_coords = 3; let stride = 4 * num_coords; - - gl::UniformMatrix4fv (unis ["viewproj"], 1, FALSE_U8, &view_mat [0]); } let mut last_frame_time = Instant::now (); @@ -640,15 +626,22 @@ fn main () { window.gl_make_current (&gl_ctx).unwrap (); let longitude = (frame as f32).to_radians (); - let latitude = (frame as f32 / 5.0).to_radians ().sin () * 30.0f32.to_radians () - 120.0f32.to_radians (); + let latitude = (frame as f32 / 5.0).to_radians ().sin () * -40.0f32.to_radians () - 75.0f32.to_radians (); + let model_mat = - Mat4::from_rotation_x (latitude) * Mat4::from_rotation_z (longitude) * Mat4::from_translation (Vec3::from ((0.0, 0.0, -2.7 * 0.5))) ; - let light = Vec4::from ((0.0, 0.0, 0.0, 1.0)); - let object_space_light = model_mat.inverse () * light; + let mvp_mat = + Mat4::perspective_rh_gl (30.0f32.to_radians (), 1280.0 / 720.0, 0.5, 500.0) * + Mat4::from_translation (Vec3::from ((0.0, 0.0, -8.0))) * + Mat4::from_rotation_x (latitude) * + model_mat + ; + + let light = Vec3::from ((2.0, 0.0, 5.0)).normalize (); + let object_space_light = model_mat.inverse () * Vec4::from ((light.x (), light.y (), light.z (), 0.0)); let orange = Vec3::from ((255.0 / 255.0, 154.0 / 255.0, 0.0 / 255.0)); let green = Vec3::from ((14.0 / 255.0, 127.0 / 255.0, 24.0 / 255.0)); @@ -657,12 +650,12 @@ fn main () { let green = green * green; unsafe { - gl::ClearColor (1.0f32, 0.0f32, 1.0f32, 1.0f32); + gl::ClearColor (1.0f32, 1.0f32, 1.0f32, 1.0f32); gl::Clear (gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT); gl::Disable (gl::CULL_FACE); - gl::UniformMatrix4fv (unis ["model"], 1, FALSE_U8, &model_mat as *const Mat4 as *const f32); - gl::Uniform4fv (unis ["object_space_light"], 1, &object_space_light as *const Vec4 as *const f32); + gl::UniformMatrix4fv (unis ["mvp"], 1, FALSE_U8, &mvp_mat as *const Mat4 as *const f32); + gl::Uniform3fv (unis ["object_space_light"], 1, &object_space_light as *const Vec4 as *const f32); gl::Uniform3fv (unis ["albedo"], 1, &orange as *const Vec3 as *const f32);