From e7d458aa22094010d1677b0ad96f713cb57c98cd Mon Sep 17 00:00:00 2001 From: Alexander Suvorov Date: Fri, 2 Jun 2017 18:13:49 +0200 Subject: [PATCH] Switch from chunk encoding to block encoding while performing image quantization This change improves compression speed and simplifies further modification of the code. Testing: The modified algorithm has been tested on the Kodak test set using 64-bit build with default settings (running on Windows 10, i7-4790, 3.6GHz). All the decompressed test images are identical to the images being compressed and decompressed using original version of Crunch. [Compressing Kodak set without mipmaps] Original: 1582222 bytes / 28.947 sec Modified: 1494501 bytes / 17.642 sec Improvement: 5.54% (compression ratio) / 39.05% (compression time) [Compressing Kodak set with mipmaps] Original: 2065243 bytes / 36.965 sec Modified: 1945365 bytes / 22.989 sec Improvement: 5.80% (compression ratio) / 37.81% (compression time) --- bin/crunch_x64.exe | Bin 989696 -> 984064 bytes crnlib/crn_comp.cpp | 90 ++--- crnlib/crn_comp.h | 6 +- crnlib/crn_dxt_hc.cpp | 885 ++++++++++++++---------------------------- crnlib/crn_dxt_hc.h | 174 +++------ 5 files changed, 381 insertions(+), 774 deletions(-) diff --git a/bin/crunch_x64.exe b/bin/crunch_x64.exe index 20510cf8fd1941d7f43b0e8393f02cd6dbe4501b..e068703a2c5ed4b9231911040132e41e3771e9d5 100644 GIT binary patch delta 231932 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%0Du z&8IQKu>rw_4hviv5wq}Guv@B6RdqXyPxw*Mt}Z zY=4z)s3j!}|0e2(jKYGe=G=6|-4&%n$E8aY3?awFS^lr?fbZpLf>46oG4TZd62 zuR*xp$P3}hhh1l@>_F1xW-;p%A&>a5I((9ok zZE}>d*2WXwq=YveNvV|Z4Y#2=8JUB0@>_x~0qOge zp*{;XaD*?ST%SyGqug_Z@Gnu}HwocNZ5+ef7^x!q>8YL|RfNrzsyGVPne|o#Razeo z-#=C6Js{?1N7D4@IS*!Z1}pQhkaV%X*M9y5Yn#*4?N7+NE^23WUv>Db$^~to?yXIc z=e2F{#VZ@Aqg$~t_B*Qu8gin?Li-yYa*mXvz=BWiQ{bie(mRGFW7pf08*4AsWE|oO zNB0s%rms&=x)*n%n@yrdv!NU@S${=oH$fUrX{-5YnuV2du0v(m+Y-X1)AHR zL*dD>&UySq3)a$rC4BtE%Q1)4gJ4F0G(o5c=$+)-ubY%3bY)v>-j~$DT)IR@aR>nA z&j7O32e^bzy}d1Sw_r|+N7l%N-hhoPQ$>gLggP3%sX{80ooukaID%l6BCcs3t;A^2 zO0Peoos(s&(+YksDlpKhPg`~>CdfMbcg)%^H=}=u4593x8-kbD9Nes>WiDN!D%X9F z#^U3_wa}5cLzH7FnI6Gtv1G4=14Wb~lh#&eBz>WVxzCn=9TvuihDo@AjfXbK8k|iR z|A78f6l{}r>EZNPs(boT;wgq`=W9Z=bF5MMVK23R6?u`xiWe5buS6^RqAcC^M~9!X zTDqOJDtT7R*D-gEXRP55a5ns&HK%(qhTMAwI3ANjfTM&QMoOR4{R!-;SS;P}SVLLL z=MM|a|LP{9g+wWDn z-wtLo=C0L<_a06wFxh9C4RGMDXYi05ltEEh29GRr43G~;DV*j+w=f7bI#^5hl{G{7 zMN8&aXh=L8jm998d^Wn89Z2^_gUG5{0$nPkxNx+zUDsV#c+Y`idNRTxcAI^eltyhz z2K5BJTZN-rWqu2O2BHIkq9>XoDO2nnc>mJ{9wEHn^8OhWZu7QejzE%lXN(!PFlcwk z-*AbjkMG0{FpRbxkJ4QT@y{QvkQ)g>dW^xSS?g3vLTuvMm1fXX7I^3&m&b zp=lX6*Qmb9R7erdt)M;#$tN4&FL?>?v|(ONB%hEs+B_+RB<~}1ae|E`*et$*NvjvH zoUT%Mq}Hho`_f;k+uH3Ubs{FcJ-8HA7P=)~q+Nh(^<&0_HlrN+XkHEeQ2shO~04Py3Tk>`X)H zX_H~!>hvSKJ=pJLXr7se8cWGlHO`fS9fvppyzD%*1a`70^u@hAR36AfFR&Gjr2!3#gDBxNfILt6pMrRM35SDN zizd<_;p2^Lb`xp3VJjYna=0_#_vd#^t##iE}*gC47a zV}2rkq~?a?4r4~&W>3+5qWcjC-Yh3LdaH)R8G5spfymI%TkR1jtu=%m_~}t8-c)zb zy50zYUXgukxaHs#bv*NQ9X3BSG3)xv6z)dhR(chLU{wF+lAk1`TxQ{|rIj9IR1Yk~ zmWfN|Y*blpFq$-1Wmkix`oa;F1-6m;R)xrFgRLSUHqaLk#{nUXQCUD+$)`~+^15&N zJr72x2VJI2v*#SCoPEEx(#)#aU27{fX->)Tx(Ap>J?V{mmO&*v4><0Z<-;BZOHEl! zur#V_7SG}gun=MC0@gA_8XgekBo;SVY>lraGaH@p9vI&`3ncpb|1_U%43XLi=bY-b z5a}C3t%m2&Hd!|sfqr<)j;O^}x08H>TolA3LfJKm%7?5*P!x6`@?7Kx^n8N8-cG7h zgG2YA*YL7yf!?O}(lwL&%o*4OLZvjaT^?(^+UWCbm~`4C%*s~Jc9G^Agh_TbysNZb z2+3r1UY0rt_hzecFG~@E(6kOytkQeJA|JJ3H>rt1_`+N5)?M0T5Qe_VglOrh@I_4~ z^pL`ZNj2HaJ)|W<+BNol4{39)!x_Zq^xg-n+nT{xj1=haNJn@SnCuJ!fWv2@ zE5v_dhI%@)C7@4u_6y?Ikrg`1{}jx_%>W#D1&^xbhaMzlVEK zoA?6DPLOQAd2gacTXqO+pNFo~W)pm9(a_~@vR@OVq^>DE7W1{%_;5AEB!(s;1P{d& z;dcoB2rEx9DB?wYwUR^Cu&ChV2QebvHMIAZTG|77ieOI1ogHN-&eWeC9B2L3DoFx%`InlG(I99Kp z)U3~)u{Y;;PeI+^E@<$nFmO%s(<(f?~|Uh z-(V2~q+Wij;YW)1@OdW1fH&AiO7RGCOY~jO8>96UZhDF}&!>3z4Q3mN6p5}BR#%E- z_)$i+=TqDp%`{4}W0YRTno-PukkrTi9sHKyh_@(V);4rdh!v>b38)abN~+Lcit|2d z8T@zIQ1U_|ZU0_^$^9CZ z#KT(sJ(N>#&s(Ed$snmw^(~Ym+U>)UZ1WJQ6-!8z>Q+05K!i;k#U{fm^d7|=iBix| zBNg#2&mb}4&In2vbQeFo^OP8R5q=Ew&_noY?*YgXG&3*~G2$0`%w3?Fc#39#1T1<% zcoV3fc$8-nEN&UWJO_inavRBd43-*JPbCC`&K6vM$X*>R)$teue?iknrKRXYEMc(Z z?Xemu3yhUQs%PUJw4qXc%2A0Qn2-Bb%siXUd9F_ zvGh!>&n2h*y;;p9seW8D3kgYaDqrd|8gDRZAJ%sHNj$C%tVL4OXhdKa-=x&1JzRzL zZHoBTZJ3dy%gr#t#f814KEY?%v?S?Mdt_ha0A)EG|E3LxJowB;=(S__$<4otv|Vv} zu0R;XxBl1=xXi!OK~u4(UUovMPxv(8G7+WgQhJJQU6XLBj|g3YYlaI}@-%GV5YQ%0 zIUf7)hbV=8G)y`oJnF5E8ZOn7YS$P<^zsUwn}{!@Z=q?4?7dNvz2WYGoR9_RCMVG1 zo?pNZ_d#m?)dN}E(O|{44PreB*oRS8^#`((Z%BUZ%xGzj#|9)z_oWtW zGl0GJhBVZxBSI{hU9oZ_G{P`|fY*2|7*Gc1-JjqZu%%<9u3n81Y{?AL8Kls{ewA{b z-oGrx)4r6#pM5!2>g?%>;Hkb;m5Aki**{~YP~m(()@q#8TnO*W`i_&n5@K>y<9KPD zp}sqVRa;!Su4~Ph9smwsd|^4!J+%9BHt$X8j37p-i4&wvxbl;rij$C&P~#i5%M|GY zgYa%w^}}RPqs=}lcKLb# zNqhv(-zNqUdYgs91xp5>TwuxR7{5ul`j9SdHZ>|ODP=!iG}TjkOq2Q;V*WWvZ<(Fa z{=}D#!}^_|?XvM2v>=>Yh;T=s$kr$x(EcEKTiBuv=Lro4+&qq)u5<#(lCLiD$+r6MgC z3Z|<6|ikh-#gPN_rHR3QtcX8$`? z0Q=V|jjfvM|1K+~YJ&fxn28IeQ#HyrJgAL_8@n-IYV^M`3u2oVN%e$BZP>v@Qm=sA z*7|y|8edChs#)JsyxWEk?`C~kvkvb`t%UeC>TB;w1}}Th5syl7tw6x9C!|2#48-?F z6GyB-BL8i6H1W)%^KVGe$_=Zcjn-M=cmm-2bwr8KZ3=Kh48f-n?>rhpwgjFLG0>R& zD1)-36cp!FNFXyhpWRp^1-rY&>kp)+xxK;~td;yjDL~H^*_Y@1iYsT@ZB8%%q*At{ z4DsrOwUS~Gwk5OTPtZ}_db7lJQloxU0h?n<;4-Y&B;*NmA;Q^yLf@4?=lY>*8Mp|5 zqaE}4mx`J~7*{IFijD4xbyBZ>?+t%cO113f2Fz%O(9>0sB~!^U8n6H63rewMPC zT8?r4FDUa2CFo{AN?4b0q14k5&nA5;W!S$P_NbKhY~6^?v{4&JwTM@)6B@X_NyICo zIz>+!JZdGc}!xDuecCF?QNkE~$pH%JM!U#J5vhmMebBnOs| zh&rs=MyZjXuPef*t{xF_$w!CuuTe*h+9(Ya8-3};lSJ?@@(@=eAX@p0=NC|u?fg>e zCU`AlPrsDf2sapO^A*0|FgElnskM;J)OWwa@wpJ(Tm5UZ^w=QWac6&iBc%(ss zrRjp-tLjf%C4(T;i(@yoBWdRe%^@_ekE1zdW{t-*RVO!m*T>R|C|_Koi4YuB%vY3(|P zaDDB{gDWGV?R?mWNQLdtDi7TJ>BDaAkzNsMtE}T*4E&!!JRsKQ4lZC%*(*gG)1Qj! zj=fT@WNdJ|n57<)c6u#1#W8w=e?;3Rj?t@+)|FutUV~Vm&njWmW+P$L0O2}D)!@pA zn3e^MEZJV3BuA`*)r+3&)5B8tYH2X74q@uG|)!g2~4l|ox2YH6PJB_N}SxAJ8 z-&`+dKc17m^J=n>m-#rKmwD}Dy-eq_vNBJ@fW9Ws{hqSQ<^vy?R6)32=ErblM7U4m zO?rk#P}L?q=*DVZkUng?5=1(oYoRQzaOPAvXH__-u2C;vka`(}#__D>MX76pDFS8? z%fNHc2snZrUTzp9(KMYz^b^#~i_&o+FsoEV|4j@H#vuTn!u>lPZyE*tZ3(_M4QFoG z5aU1gH#X%5$*=m$fV2ed*VLYj{UEjUH&aThWhgf5i6pByNk_u)4DzJ0@Z%3swENnp zl)0DZ2MB0$MQRaZ`xOBwzs+!pfg`k!4l*+^ki2|PT@yznNF}yMs_ZM$HjjQcMYq(R z;ITb>{=%ZJO36l#CnDQ$Rf5%u5?(^+dnKY;|C;nj5N5o|e0~O#b>t^D`e*55!7*MH zuS+cqLdY4l?G0(X!R!1;95vwnI!xPu(>yqmeTG#|Xmv_$e^Y{0nL$Y`{Z}bo`0RCd z@K@<)-`wM9MdiLVmkw%etsdH1J%+93K2z1*zex@Qr1UK252=rJabs+lBCO$8mGf3h zuk)~cSPkQC7KOI3hM(uYE##}`>{eCku$#tRfK6VppSW}J>+jQ!F)@}p0**8%(KfT3I1>{@cZ@z8yf8eLny zX%f!dQD5+t|EeY|{)IJYA}9D*e<>=3F;cT}MUM6@)by1lIoKy;G?Du>x^knalzTng zqFm899fYxO6efOmgZc%|*YU4daMt_si_FG-)Q$5WnZX&E z>UGb_uKBaAhFk3HM_!nzXD;Tic=6nA_zn0t1q;dZySW|Ijml&++P^&V3R}Ty25XY>Ijv8GxY9yvIr+c>KRysr{e`; z^?d2nfuA_!)A@w!aEHfKI-97+p$vztGDzS`Iv+{d-i~rz3jtbly76;~`Z$;Pt)tvr z=(FZn5d`{qdp6YH+&OZ_GQAMC+CLU zaUu<8Z#Aj2Jku1o^=WZwVF0$|*8+CZS-p1eF#;@=0`ecJPrAyj4S}CfOl8oikDdWN z`#_D4ly@2$&LPnHw9!w1!p-3#_+Zsl_kH+4ZPrb0XK0v4!R0_P4=MwFc3(~FF4r=6 zG|MZ(#Ccemzw<&QTO1|--SF1SvK#$M@T(gsyS2m5ieDmrQzF&1(Q-9|G2g93{i=sN z%p@fI!)m-D*Y$|O`5`Q}WE}_?vY*x5Y4Tw`UXdpW8=$ZEiX3nFSry~tDF$J|U3GfA zyj>PlI}7eFhYEw%siXVLON7RmpFN^W-cB1jruN%LcnW^uL*EJMl$$oPZ0oFnfO}oV}bxdTd2Fvw@5pS_wgJpjq>MeFW9H*Ed9E=ezWk^e{9$=d7H5Fi0VCDzAIGU zxVEUYo09#0*f3V(b$MYe3;BUUt?XeOg~`L%*RRW+UiE`_R1(^G$p8LHfZ;#DOZc^b z@n=d~7Dnma46JvO+(_*|LSAk(emVXTyEj@6uKW3^;!@nFs)@H0qm+}l)kIYO;1mmc zLr$*q#YGb?GDW*7;(Fa>QpD94)vw-=zc3&Ooq?9EB?yFR0>oOO%T+SDp09xg!(tX0h1C(Cd9T!hXlLL#+~Yr3MA)GTHn zO_tyH3Fc9+MrseBmu_>unxNhGDrViL$U(xD6Y85&AkFdhQTLb|vEVTL@xYvgPkctSJ73q_vM)|av|v*l&NuYH)1DKlYzTlJ$%Su+Vgv}AMU$>W6E zq3rK@awEa7nC;pu2N;V@#Vj;Oe$6O-P|PB?$RVuYqA7qCPaDAcz<|k7&K@SMT|Qg5Rc`FJDz+lN`%;Sca@FYHJa%HM9K}9zBtXFLtQ}mGKPJ2CZ!#3sB_2Lc1AkrXu(Bc+CTE`jK=cEbKLQPLcan z4QV(3*^u|=%l)gu+@CMc5=!1yr#j`H;Avyoo&~aMc*@cj%8d>8)nyCi&W2Ir{;Z1c z2F<(^_<|q_&&15r?(BFBm6^g&M7Dn>a)Wjjk(8|7GcoftbqDMCp1h;OKi&8=8t+Il zTODbBu`t9O>%`4c<&rfw1WJk8knNA5vb23N+{#4~0gqe40^i4Qcwb>N-$*o1V z(WKf-67e?sqD5WG-xyDtaT)nC#FN8k8XUBl@ZSU&ax^>JiWwHmqYTT`Hx^?S6^iDo znM>tQ1@HKl;EZs;D*^ox#@E2tFP_K3m&wy=99vAf!}@XaSIt@8GP#|6s~I+R{T23T zncU2CCp_Sv@+|{JV>7kYhjLp<=)0H=StU;quBWS~R>^;WV~u*ua@WWo*~i|;GEsIk z;xgAAiZF0#bxxbgjz;)vF2->9%cxE3dBhJdst(9#;+w-d5CvtOxur`E6t&^L_3ZFbK1yATXu>(j;dde|j zhjCm0Z8X{^lFBk_81YYi+V~yTw%N^mH`fKw$|_g`N9bLO_{h$-u0u<`{0?*fRQ5Og z$Xb3XPciOuFJa&PAcq>#+4)c9KEfM5YK!$Utb-wju3E*6b{hII2`FKwfoEUY}Kez8&RWr(nz z#~bf1>xOgEs*W9|wO@llP&UUh?bnN#2VL{;2JPZS7Pbi!ZpsU4$|l(&w%&PCpK#l3 zAqP#k8_9tQ_hgj`muZn7v9G?C7aAKGN?7D(d64kyQ?`6FX1kQLG}|>cTw_0OmXnRc zC-Av0Ii}=I*UWr=T9uhOuu0XKIq*Y1IhD=KX{QifJ~PW7vOl(9W`5x$i~0s^weu-E z`;EM={-qNY)1q?kQTepFm+8}H>wt>*Gvg~yo0*KJ%}<5L{aDI2xutO7V|C>=`E8@& zdsaVJJ``rcy%_$0-hZ1S#^W}zYl^_jLOJ?0@vX*ucgUj+=a_wm+$ky*q8yq9#1SHm zPp?oJ-_e$Vr4;Dj)=!UZ=I?T}S%PSa3Vqw<@Ej+yk{xnvfDt*t3VLcctFn)DmHBIU z$WiY*IVzmp?KXa}CAp(gAt8VUL<{P(ExJvNQs$S$vMte?Fw`yJKk&07o`g z`oY$~y$JTa7SXbx>-+p6+Hk`g2Fiy9hPmSR~zD zVEp;kBewa7Jk!4D#PjpfP=sM{MQp5?j}nMsE?UdyBXXDebo9WO8n>Z*KH?C~*VCx- zMwBkw65xsqi zy8Ij24sU(^PAbvKWcL(8 zvs1Ju!a$Nc%PUAi>ap5qOF2o%UFxGfHM(gHmY0)+LtI)$BsqvEog`b~f^0LDX3gxm zn5fvTi?YRd^@)*{T$G0iwSw5tOLF~2=T_2~g#Oo}c`5mN&0+IIND>QRMMGMho zGdDU6-B!Uxuvgf*%V514_hc=9kQ*32W6?jzX~Nn|Z1)fHONPzt{tsY2d)!cMS7ehx zh`i2Ty(+(K-0;ZA7G0IC_VJIn`O-zGQ~B)uGQuj&-r5pAdmrT=F>~pEpS{~HA~N#X zI|X@Y>zBCveD)r>n26ekXHK(sBwP(Jdw(?%9qri{ncgfivhmmCk;04*)w9>+^(Mjj z0h@6{_N(>>5J0OQS;$u2kn6`Sdsi<5iV;8DN0}ZAU4CBXF(;LoiwHC%6eHHd#T6rN zLl@{7#fY_Ws_7T`WrNUiq#Auw-eVFHk1|+pnB#s9s}Qjwq1!vNr5e_hUf;8an*7jf zA{HdPU!a`kj7rcI^=W}zO%Ni^v1)(H|9TC>YE~ZY?|VtDaa)ctTK8TyHYAosO7T-*`3qbSUPSO zw`@-||0oC#K4M`;b3;M;N*!c0Z!!xnEM_JT^EzSMI(3tW`DZU-zo;ty<`bge6UY*q znx_kjQ$63*JlJR)ULvxP7UqSU7~GXpS;TdYeY_y5#kIyb zUo7Z~n29(Y4}|qYnB`kB9bq|HLv?^Hk2&}v_!RLAcpO>F^q38L%tYO{M)#$|hb%sV zFDL6Ac(eq2L$sqJeyEq5q=PReA8;ZIT#l?!daAiR(C2G>aw~mtZ~{Jn{0#L#M+?8rGae#$%&p9;T0AD@rW4$vHtQQ~t|J`w*KnubA<4(51a9#d9dKHv+rLtuM)I(Sb972KB0p*>)hV_UC{P34@;Hv%}Rl! zE&mqD59hljboFq{`o%u`F-@N&SP&Aru|^%t4GrOH*AC{N1!3Vy)~KU7)DX`4cQn7? z9^v6;EW&jqme8HO+tKV_9U1gMy0C;uwxy%FPW5gc{LD5C`JC-&4l;CS#U0Ie4Bgd& zF!Ow)@JFgTt&6#@L6|yAJrQBvW)QATQ8QmQ*E7`3pG-5r{I>7rU{`?Q5=nFZ7n9X* zBF%XQx!8nQM@MEE?cSK}9a~*utGk)o*KtgwLnX}!&3B;n*2?8ZQ|x3^Ak>+GU3iq`_Astq#xgTgHanco#2 zfBruJuW~^3(I9hegRpwj|A5r9RQnA!e`63v7c%ou^xyD8wf#^t^s;ZSXZcCyXlgxb z_3FUEYnV9zt^VRL)T2&PFQSyP>3sul3c9tX#r9HtUNGiT1UGjnIo%$zw> z`}b(ewCVG9(X>I*Mdw+U47!$?4qo_pXI!E|gQaGrMTFXCKf;f+>=5{e21~ElFW2d} zAyQVU(pc2uo%M!CC;7xc&#LlYY3iON#ju|qTh}E?of+#BMemcPl*SL5iK5PRz-FvE z$ih}G+F^LST!mqeMETtggS%)jR<<;={ybDFU@UJ5Z5$!_vpZ|(^av?D$kb8{4_8#( zn6VJG6DoRZD=5+NW{5AkkMVM>wfa}+7&UjFfokl`-*Bs6z#+)0?!kwj&n&RT7!;RX z(YnZnM_p!!TV!||VaDY#ls8_gHf3p6p)EHqMx2L1Ro)zUn%F&k=E76U?pZSro*=s? ze?B~A?4GU*;4#@frx#*#9S_Q+A9Gdj>e-G)XZ-6jw=m{JSdFnS+E!$6h`%QS_%&eqk1YWhX;jG zJx(j(L19#nZ56edDAkWSGFsBb!F&lb7A6Dc8<&R@e&&FVLHO}gBcDp5e5>D zx^H3BvGHk?4jrlW+Y*YD`v46yC%-WD*&^5atHp5dhf_$U1PY z{RnN-cb}n+TMM+xpQE+MZn2i>6nn1ywgAuYIbM%VMR<0!h63%H+RHx5HFeu(Xdb(O zw)1ne_j^7=dvu_XzL_SuPazzMd_si#N6=t{*}4D8kzIy+nPZ5%L8($&H93AbTZOp3xhqsm#*W4S-X2*6`zjVAv&(l%CZHvKh6 zs@{3;I1~`Q8(Jw(DU-&-gWj!r(k8%z-mQ8LPlN}(TlIKOh6lY{^^BVW4|=!id6-s+ z#ip@iDs`PJmDfkpxVcgYiuAniBaT~k^w))-me0+F*OYdDPOtKqgB#i=k@&y z#qO;j!}9*rZ?)9dtv*0|#rTP107!0D?oWTMmMSuRf9t!|(rN6)_oGwaOVMr*`xfJ! zvJ@)U`;z|}sf%0s$Ka<>;zG05NU06q_4$CEnciP;4G#ne6M-mXX8K?Oy7UQ1Jhq}7 z=|c_HN=;aLADXaM>cFb?q4R4cZ|2&E9j7unWH-D;uvms)#{>WNK@r?`lmQp%2gPU+o~R;`!T zvE4nW`39*yOYA|*HlWiq>p{P6kQy^X59^x^(oc9{WjSryBpqRmyIDtUmbT~(jUC>Q z|4&jwme7TI{Unu@zvxn^GNq^K_7n$CqMxK?-s3x?Xs#Mf)l*%Yk(k@EdDoNIgKTE?Hn~_5F3#Nyu z?Wo#zkh@zu>abl3WNSy!`0Y}8Pxp3(Lj7f^%K@j!ks0SwE5>A*hmWGI0ykz9UED4W zaT(gS(5BB23N#RyJ(61QkQ#bc01y!?7e(|(*c50~+kwfm*GM|JLt4+G+t84m(y*An z+n`a-9(v`Fe%~b}#_&pX4qKBc-7FWCy$HfCo8=f7r09mrGh8u$O_HJw%QF(-vRIPQ zA7c`a$0kn87!g3_cY%$s-G(OYl4exjBvLIz8LC;b#W%OKHT<|cW}Y8kU`xO4(s0@= zH8m%kFD5jnP^;9>B`N+xTPZ!`={u{G%vQyb%Wml_pC3g6P@-qaPQT+4*>LtktuT>> z*$WYW#cru7i*HT0cT17Zvsx8EWfqiNE&LkAsTj-z4tf zvLNcCVo#5Dd?8t*;MB5T5xbofaIH?i#k_8))1SDS=H`U_Et2dZ?eWXqs3y zibcRLlCt=LI0kff%MdX8l3*HOvA;Une=)ly`!6Qb_!aPCb{p-#xJ;iI0AR&xR!b3_ zX>31TwK`~4N6qRatn?!x);h47vz@kNOO+@rTN+f#uRk`cZa@>dJupHIjB;){8T(C{#%AO3T${F} zrSj*c-gW0pQsLHd0)99$|DYe9AkH$*(7>zh;Pls$3Qp6&nd7WG&r8pYtoe@=aa9VW z)0d=DtmKb$>ymVdt-DNnE=zy1>`OG~iWI@-T%znNQXRS1NHwb(Uy;jIsRrA!QN*pz zCU2w>S1|^ZwEJ&tAlHAe`kSzUM*Sl#a-DYDfIW)rsSjqNdnoOGpfcA$Il4p5u1SBh z9;sCJy3~`U{y^vdmAtt27Lc33TYeoB^!kA&-3M{rU&lnTb)7&eO`UF_t@^LC&blGB zWagRKIFk@hmto@qbB_2%Q?so(x1?SAQv1GC%lz$NL7v?67%dmnEaOiX?nq{4{EqhD zMbf42N}=-eAu8gFLDcFla_YC5W&_MZR|}lg<>suyOJ$bJU?-woqORpahRt|)uo~mY zKpOwA6u>qNrj`Fn{-xFdoclADOlkuwa^P8oh9U zD47_~BYV(6$bHbDd(vd)zLx&GC;7=g4OFqJ4xe9_n6ScFMdcdBllmm+oA#7vbO4@Rw^)8lNxS4_f>U&f6Sg zp&dovq6}X0Oi3sjY)V2{4!S#zDyiR4Mu9X}zHGt4AAo)6=WHpMniWd**jE;KRbMtU!2wpS|@(8gNst>mv~uj8r7JE^AUwYDn!XuR4LH-n8x z58ob7)89#f)qc^!ELzxC2#d5FciDQ>cF<+(v4(}CM5F(p;S7qWOYfv0!_OrO$o5XE zst=&5?QDbsPrcqt6AXVE3+UQ=(C38STE-@IH?V*8 z)>J01G_WP_$y`FNGaxcnE!=}BwTJ&XaGv3{q!VW6D@k_%<`hg3Y&hTtVNhM&AQ(K} zr+e{M(zSSp^)gJ*dr3DQ<}^&0P14QK$+{~rH1AtuIqT^X@)A93Qq?+0lCLmU?gwgW zk{iffnyDq&(}Xfi@=$qvQ`Ot73B57NUF4dY_fBK#;Ur&|8$v-DI?dZ~YU(Tpu$iN2 zptBq!-*2LVXM~g0Sq=`mqDe8Z-?ib%O?j9~tfc&v+*d>Wy%9|; zDK}=dQt7vnatu>agdIZFUF3!=UG-F=g)VZiT)DBD)r5w0*hLQTXb7EZxp-dF*itzD zfWyBLy#gY;7jE@;l{@Pju0=>rIF6m-pc^@up{WFdrWTvvE0$2Abuz?C*`V$1Df94cQ<@C-rhL&M%znIMYM3 z?Bmd^q@#{{dCK0_5KrW6ItsN{YW#<_sa{s*3$ALHl>8Stg8ys z6K1>lQ#0QVv%cZWZkzgBA%z+{y2?X!0I4uB8<8Yu>a+BZ=<&Z$lF_XckWjc zeRcO>@9z-d4H`=>E+}Ktld!BP)_b9 z2Wa5h)yd=|d&y-quUmDh<^!w^$<)qA4rE^^(^z3cgTzW7xtzQd)Is}Bs78l<m{mIP_J*`@Kxf=UM^;D+m<>gFvJyC?rm6K5m zB)6!tb)%o`t!E+q=$JpcWo}*-1XdKSZ6*v~zwaj+cDzUoPn zg5~baFOjYW%YE1{Jp{ZG4X7yhWx+k@L`6A+ZSG5LLgbLZ0hPoarO*BVqb}z>#G-}V zhe+c+M6P3 zfQtLPt&?iVTlFl$ld9L0H?!Ve)_-cswe|8vZ#6>2GE};@>@WYOdEb?$$l7u2z7b#RE61>Cy9W?Wd_BW#L6QmUb9-O zR<$;;Vlt~GAT?NRHLIOwwHH=aE4)T(c2(08d(cY9RW@73L5h!*otV25b&r%QvF$QV zkCYQwr=D~kiVow;=;pBVW$%ZVVjSh*|vx&bA}%4gXx^{G)yxegnz z+BIbLB?vdAX?^;!r97MMs7DQ2p}UQ!N0VF0u`H+_>Eq-O*WTjuDPDyCwFAo2HGDd`>>M+x*jJ_@+={Pwha%b)I=-h8`SnW_s)Sv#LMN_tyeTB zUJjn3V}e1Bv>X=ilNi~5IIS0M*T_S;(oEwEoZdqNSzx26nLY~KGmUrgkL0ev${CGa z9=Od&IwwhU=ODS9UYgrSz}snVy>K_z+&cwM1I;~UiSSg{Jd=bwKy#ne!|kcL?+G{8 z+&RMiUXzw^7WmIK_cj3+%Ir{}Ny3e%9fZ5Da6^T(a7PO_)Qk%^o~zL1?0WC0dYtvN zr?u?QzG2pDt?`+ZyaFv~Iq${DkY)T^XZy>tH-8EPueK z{mF9KO0SsiFp40GBkZnre|@{X#|~eoqw^i)(*2HX&Bqe^5H|g%CCHjEHe!{qW0kbq zo_0IfZdbS4b?o-ng~)YYE2PjKraMd`%$G2u5~yWIx!M#jfq|4O+3f)~%^z;Jz3ldF z(BqRjf?=*|JDK7K;{k(b>WnJ{4(#jiHT$I9-e|WogngRDCQa~$R-%srS~m}f9&VE%-;0#g7}l-I|$819WZ zb)2EDSX1Oehc40!y_7zWg`=-xq?!YJqBg zmVm{${UJ^0g;6o+G%dkg#+pAQr56T-?Wf4pTQ2YU9DPh(!J@V+;YR6(=i6!jRy4Jm zZUcYn(_0QQjR8jP8nypWgpX9#x(QG{%Sy1G?<4nQ?EQZfnkaj-uZ~lEqFlvo+H;kR z9aYO1{G3r{qFgS1vm_Fp9TG!p>}67Mu*@!&L4A)SKxJrAY=kHq z%F**gxf^qhx3=ytmuAdyv~|!xc_J$lJGVepfp`S8j24fvFACa3}?jl-pL$ysjnVbx*TT+LIq=_y6>-2G`%C??%d% z1H$a#_w4Y$?egEuoLrx|_n_|M zz?&cIPK(FM)!Db*>BKm>an*s{#pfFp=qJ>$;DpX*?f?iri4g4P1Pc8g;7H>Fd)UlT z-Ko}ixxUx4ZcK;G%M{-Y`joQix893r**5c?ZZvH?_78S-qYdN1-!(5wx5mq6!(H~8 z3dhT?-qE#u}O!Fs-fvgPO znkajjs}$oMPOH}=RdD)c%23Hka>Y7N1jnx?aS90z{fp_89q!QAd2p;0;j$|~(xr7C zKAw}GU=8|+!15Qui%REL99&eoPA9d}S*uT$UG(ffGc}na zA7=xPTctEC;Tdi*RhkMux{EuVohrX&-Ad8vujM$_;fS?ty8O4H?5opSXF7jMvwiH} zO6Do6JVOpOvi3Ep;cR&bn|+ynm@U`m>#$D6wQcjFn%11zGL#Mtt3iHq<;pCe2F1;l z72mgiy~6q+#pJT9nI3%#16PjAep78*M6E|kpTDTxJhVuozi9M4*}|UWSPk>#JqDIt z*Sde9Jj$VjsZjy$1yaqPvX?bsi9A5hW;C!`mkLJ&lsPV!2Rg8N)vVK3%eeD!YqoXE zcXC_3VMUDsVr%3P{twi7KQ6Ey&XuAvM@i9^995t4IE>o3fAS`T7Oasku=OD{Xsz7O zumB9e>9z6_xkc}Mp%r}E_cUysJd5oZVST+$ZlL!)x*7}&%%3n9yfypmqahn*#iKo5?-qT#k1{`7Cj^AehaOl5Y?5p0P2UDUzV0$0J%6R|He8kS|;cTTkpnE!ig_;z%~gt5EvC43pJ z*IAl5pnrJUPT+N}Ec2Pgh>0s<<{rW!l1PLDUq~N;-%#K$2t?}vGEhJ&0Rs2P-Sp!Q z*{9=|0`@)%SnWYb=M>?6qI!|0^CaQDrFuQ!oi4oRg|}51W!!IKIpRDEuoz3WvRB0_ z2gtnLl(8FC=E8o3tZDy5+>sib4)*ZX$3i`mH)O=e+{xOzP zF29AJUV8+wZP@}Fd`$B-^R~X(BSTuVdU(wA|O4I9K<=d`PUqX2l-Y&rVbm&cow^(z3 zlN;$-*bAz(U%tuu`w%}Mzi0htSouNZ-see~0#Q)Ml!h3^`65)b=u($p{J^1hTBvfU z6=7-m%b@>5*|!PPn{d3{|H_sNDMI6nOtApKyj9GNTh7|d`XRLM5OywBl%{RJBij|8 z)@_I7KlJR`RGM^DE?xREu0;wN)6U|H`qO@M?(kIFd=#VZ?zL9WV=^>YoH;{XkIM`7 zeb+xe4&`Sh2U?$=!2XoJr}c|d@=m?Kd%t{JelyS+-xO|FMmd7e%|K|)8zvPHKZDU4 z+e?vWWIug(>UT!2?(1a4XRgW>$5{p(6t5Tl0Z6Q+T%h8{3#?nt$gA~+)`kLVdrnSb z-`%Et=dc;mU$QpMmT?7fL{FM?9>|cGd^y0LgB{f%<(|A$upjh(_Z%xbtO z_tLXE@z%sk@*T!nJf{{{!M?Yqp;zTFeQWEQtJpqg0dwf>KiC5(KgU}7n%qy{`@k3s z2d($FO~W|)o1^+#mU)eUHQ3)sg_Y1?>jf-$f3ynY8f?LAz)J1!qQWE%W&tcR{e);U zTt0nBm#@pd=7E2zjhLoXTZ=h1D}J65xVC^yH{|-}GDSf**VuzDt|_3dH{`zN@1gJ* z$Z5)uqM$wqI(Gx@@!&am+?2!Iy)9x4i+5F)F2gvE%R_(cq#ifrs*OBeV4|5c({?WA z(0>jwhDm9WdrIn50jUeKn9kA}Z-t&y%0q<3b}Yp$%5oNhgLWYAL`QCdiO)FnJ0hjSBBfLDmLv9*5`i<^%kIcYB?=zriy7LsP4=gU7ae2@yNmV3opegM zD_1ffIHS@gRGGd~C0m3tX=MTZa#ya+)=#7V?#gZDhd&G2_zd-<$baQPul`QDR3A%% z)Np~HaF%khCO8djxFE1UP5xK@mhHYsp7(G764Z}k@1gqD%G1<)@|RqBB10N8{jVo7 z<=>M#v6){}>-%!YGG71X+cKM%gJgRszW!!kGdu=yMp^R>^;Tpr`s=>Dw!IU8+Do!o z=3Cez%Gm*CHF_%RVhty3w~^>gM9y6Y$7A7G4u?OI76OgtdcxraM;qY~bKpSX5Od&A zIJDj>vaE|NF`SLfsf1M}LVF`r)XFvwolDH#o{^Rog$0zX$YT>vcx#2|P*jL0sI|y4 zulQ0>U8FYVwpxL)W5-73bjDg(3;(G&yt5V_2ZWru#o=H8+wIdZw)-<8!0Gvd?2GzVht0WITp!o6K{Uli{3n)|A7FVo!9r@+lM z_t$W174f)5Ne|?j2ECF`D<8;T@CG8tVp5(rqH7Q2=`1Om`sbqO{oS3GZPqJWdSP;^F>;qa*Ehy;7&MG^i9YVKA7_H&5Qx+0{Pe<+Q7%yhpM;iBx~oxB z5p}0N*ISEs(`A3F5=vwiO?oH~WnbT?hY#iZtn6+2>ydnjUBX%WV|hGVR?+JIM0PcL zU%4(mpxj0-)6h~FNX)xawdVB8P&=uUd9=#=#XnV+U8lsCvVYmQ+p;bNCK+ZT%n}$# z%|r2<&;rq-qXXpA4SLr4uB__}(+6e<%t)9CFv<61-B_6De`Vb?*vnxCz?}h86gCy# zQ&HGFgm1V<4f5pHaSOi!4|5J39d9fAC}g4257mpw#4T@#h>4&b2m;MxEc(dZs!U{- zISX)GLWq#a`vdQ}=Y~=FS2*IZ4WlNnN%un}i7ulW-f7cLI7`_-#u3x`5^u=#5Q zfXBskwh@1lFXIE*hUGM!@v3ZZ6zyO4m^^jB~b|@Z_>yy8=R^oW1e_Xq)K!eF2&|Q$0hNn<0PSV z`OqGQ#a`F2jnNLeY5$~{aeMx(${m7f^hu(rMjpU2x6?Y@a6l}02I9$&n7GV+ zB2COjC+CUYeG&B$0Htv}JvH(`#|=Z!d76!)RgT=#rA9qmj!eN}plHET?J1%J4`f|_ zpLWT-Q>J0wj{#7Pv%?+?)qV$sTBJT2_-G6n9eH#1DuLo1 zc`MdvFfDcDl~`6=EsH;Y7Fl#>ye-8@d@yrT{eE;o;+{4B8U=a5&zs{(|l zltCxxk`oVR2YQpuiEm*wpufc#)eY=LSDkqm`9V*VG&Khju1_kOJf-lfo6yZOCy{fA zsdVINcy?>;7mee>)G=tgz?q`$z-Y&hQIVDD|+4d4b~`Eep??{!3_@%mk4jx zY;4z5j(sbiQa@s@a0!p<(jiQJ<;^E=GsTwTq5g-HK74A9&URVQqUUI06r2?mz841-wLN&3ux*3?4`S;&LJ!eiZ0n;D=l|dE>UHR# z2l`om+#59WA6Qi{x?tuha{dAEa;KC7yQqyPf5Z}YQsdIRfOXzMb<6NO`chQZi`Qpf z+pQhF_+AHAEuP$b`7YM88=ds!{n>x5s784n)HoXx3HFY$dv!v27>}omo?=%l6|6=p z(NCMULhIk_Dn@ekO^p~!GB)S1sOyFEBJ;vl^i6rbfZ4iGML)in-HW9|e%!A~tHo*` zffz~ZEf@vn>CB#m=n@BQ=EexzEp&bk%#4OQrPNULnWgG%CZ016RZ7+(KYt!ut8O*5 zMV}V8_AMo@y4u>e6mKm|(OUZ{TKg8B2BKyDJc@l)mu~xWU$*aC(g*O~?8q_{ym448LW<9^arX0$H8P3D2uFz%!EdRL;@(3;F=M=7Ls|u#Is= zMQRg-BE4;1T%>SOq!Fz?E>d;1Nac!)#ML5=4H8B2{;WuKP^3=_v^e480-Zh`(H?~o z2ToXXXSWn=+m$IO*cRaw%Wo9!dz4kBQ1L;`Dzu%_`9moeBOB!u%B7;Igv*46ADej$ z0yM%6fGaKh&p=Vi@}HG*{uVL!;lN8f`Eog|(e6nbt*G=}CkKxtdl^r}s%1nGe-JKv z5uc0VibgChVpUPZ_0h$IRFH?_{Yeq8VAiskk0U@U;!e2I!Yc$)jbLsr_tPh3vKOg| zRwQz5BAcrsKR=s!8xX~tG7-DMqT@Bs%TX>(FGpqibbN>H=kz08v@>2h)XLG5236!? zY~D|_vLde}4;48e=Y!O?5--oMgw;N&T#2XiA-o}L6i+29 z@doVSW@=dpli2CaG_n$J&w6jB=^7Ng?o=7r5%av?V!L z;~Ay9Eyqck<#MhWcaV2FP3i`=FcM&aDJW8L| z20F^G&P(-({G<$<8Wooz7l|mopOoPmxDlKA4+Lms*!@vHA5zy`$BZSttuJfviF$DZ zaAZy1)MrB$6MAW?E!S-4xY^js!Sgt-#_`V#biO7Z=fl;YE=OEy92o^RrHe7o0yYKj z-gGhEw9uehe5ptG$zq+eJn$gS25Q^H8Oyj?R&#BB$G|dX(yKaXu%Fes&-NWJ!%UjE3VG-CsSSo zuhOO}loaEEQb+NE_HhTOF~Cqe@v1;EI^TiNDV`LXNnZXLMwAg|IIzG(3{~v3+-Fek4|4$L`QykvxLM47YkV<-_#s@=%)Ij6Y-# zlC3FG+==P`rK!#NMz$%#TD1kgr+3V)f~vIhp)#?2DqGNzmc{Zf9k)~luxB}PZpr&c zS^ib)=Y{$SVS(hkc{YrBBQWHFA;qPvXiIa4NF3fH?A9%z`a=DSlZixht&&%;t2cku8XxpU_GUtGt?Sd-nm#GXQjT* z$R8ULlXxk{fQ@{ymO{4K4B0kxp^6=O703O;BfC)7j=YX^+XtT0C0`MBPcyfVW> zH8EYlao6#o!CiQ5_RL3vXOyFp0=}~xt|jJl&g43HWwz z%I(VQuw~`6bZlj*O*g=6c+>E1fLGMu0TarKod!3sHp)}5dAYvuB#WozpgBAQwc1>k zUUcKF*)ne}ots`XygSlyDNA#^^OdZi9@XfnXkm_hF+wDY*x)Y#0f^5&#TI zaO{D@>%nV`|NdVHDb}%Ua#-}VM`Ekkxp!%L(u412JKNL7p8NoN*^ZKW@yCX-g?elE z-n_itFt9*xoz#c-(d$oIZ}jEU_3U708koqNvL2mjQzB1b?Yh$2M83;wB)CQ#kH+As zzfk*v48!2%XL>r-pL?^)j->SGo0=|d4^Aa>DAra3u(le2wbg*9Q8NeF7gw_p8o6Ix zT}5T4VtF+n23+xdHEC$hijPscJ)*w`U_S5og5C|_W!U<5VwvPiVFP*XTJ;q1l|_HN z=8De&NUX2QXd(?`YW&9_v;QMF8tKA2^`#NJo|9^=jLc z6<0I;OH^}LiI1z9VieWvhX9RhNPr95PsO5n=DD}Pi)&siAkQB$=%`6g*_*~E@se&6 z)x4Y^IjLEmEum%Ed!@cO%bQ8aveYM8W;=*1_agvVLj3hdxIScPd~_2-^QW?a-ybe6 zgIE%%iy8|0lDoJqR&#ca)Cv$_FF@#XU2y?wivkQpEkAH;focItX$8RkrY?!*e96nZ z)zuO^VNz?e(WuoXbliu;_6|W}j}ZMsVw=&6Z002hKy9*Y<{3lCF`4`O?zkZoEldj( zI(oz-Ihu_z%x3QUyMdPWl7s2=MZJl}B=hoy<~IzK(@XYaxrgXi0L&LSzCLY*=KL+( zXwfkaTEC4G9Yd^EZ04-ND9^#7eylS7lhNEZb20+72JJSOz8K1@uxgz84#oE2&&{k` zhH@yko0>xS%6geCN^O7LS8qOy(uOM#@HH`NAE`SA*@6; z4IaaPV=?Ef!DG3D-sQEom^7`&MPZe&vs8Z^pTpLjp_AkI0M_^np77%J_3U^KeK~0=>%TrZ*O|Ll5I9)$Vpeu-3id zcByetcK_j#$;9W!1yDz?zCq~NdWMQV`2eY)Ozj%FW` zs!q+ZFW~MEw{`@cIB#BUMD%Ik5mN1*Ci7CHYO~=A={j>=9Wf^0lBOaQ7GPDRATN!(zDAypZn~aH|<0 z-?$5U-1YS%evi*tJas+-<1*S*%sOd`eiwyj^2+9K^MqEzct!blU!lOpx%vg@_07cGvGW|Q z$i(cduR;5OS~2JlXaHG5Xd!_}gkvjI6NB&YTSENVM?xS5Z^#JJp<%KI1f9y8t+4%E)~F+y(-!xB}g zolUhZe4@eUg`R$~@XoA#5SeCU@;%$!8ZsL@$Ef;GLP4C;5Dm( zY-l?#9hn#L2&Y*pg@ia)-ZtvHh$pj#$LQQ5Ud~Y8rnf#`#B1xhw}K)M?1dsz=pr8I z>@%}C((A3%gRr*$=|Afk;ugK^cOQhya?ZL!eV6b6r@VXUBGBZL+jaPOZXhUT>g+6H{}wIU&hPVC^!h|o@_*Amyo})hfcRU4Sg-wFS6m0 z$==bRM3(W-BAj8D=)^LxIp2>br{#RMeljgt&MVcNKHVVr`|xiXY5c$Ob_1~-Ek6wj zp*buq{Gjvs1N$@l0KHg_9g^fb)O-c(pgXi=1+T83MJHB(?|5{Z)KTuf;`D%>CS3?N6&>vQ6~E@VeqN z61t*#_OXwEsAs$Dk$D|&{>Av>#(4rYO~_0f4_q6bCtjY%S1DSj#8nVfPSB2U)08%& zXf9%w9#BvBgObUtL_N9>c^^FfMC(U>c*weNBPnw;tb9WzsN$y z(ZCJ7AB);*{bK|FT4JH?sP#6U$6{q`^e=p}p1pFg9^KBz>6tGy7VqS1S;S4czmr30 z%tC6siuh_pa3=?0Z5of6VW&Us6)Igc|5=cnJn z0r3atOTys_$9~~}_=B_mQdD%})84WjSJbn9s)QBz?k&+wv>{4aTqOz5u159 za*VNHy8;hNSZLIE?z7;gzhgzk+(01s>|Y=TpMO%yp-FA#)jk6Glp<}%;B(x#VgU`c z@@Z_D2feWJHs$}o8SI|u4$W%rg@8xow1Y0ue^?IXY(`dy^OHOE-Hq>Hh&!#@&BM!8 z7RW*n*q^ZjS(`ioc z_hD9;xr%)EbDwHKbM3Y3|E;}tZG=PAuDWoD+Bw64qz0~{!TY&?w4;b3DC1caw{20} zkfOMTqPTy|QR7xzg_3cUOcN0eT}5a2^U|%F01Pq6RvyI?kAI`TSlas`yM`jlG1Uu! zbLS}GwW?mR!j2c-4XRg2b#_`sp$E8E<@NwaVJ`Ml#)+_2Ao`4PuCAYqc_i!0KIKchBV9Np92UwIPJqjO#WkG~C z+sPtetrifc2H2%iLzYwHgV>L4v79;|VRp zpM(RY3=oN%)x?{X6Y{H(=fPGwS6NP{4)O}MUyJT15;#BKok0G;fB<)71a&*af2jKf0oDRA2vr59;Tw#_ zf_m)7io3(!y+vjj2gf;JC-tnDjBdTrQ{CTr5OXE!^*e7Y?3KUsc%~BoKAk+mC;D55e1w**C?!8a%T}(q_+JtaX4 zsHfD;BkKvikhwWg{7GJ}TaB4|P!*@OLh@o)rdT$^g_TLFhYEI1LTf5M)pfcY2>xPY z)0Qd()+Y++f}PN`)e}76o0!a=iy=j#6YDiqf*~mJ6dgW^9qUHh=>18)+4Iyq@ePPf zGIrQAQ5MXh1Ap+YY}#BZdkRO+du7^jiq~M7GTl4HtLb}^`)S@u--D7)^J=a~K}K9A z2-1pGaW<_#4gSV!HvN5?uVSk$*3oA;)HofOPcG-Ucj*Tc#Ptwuuc;rSKq+_E3#VAny zsM_#3t41S@ifK_hkJyT1#Bw z6ZGzDeiOM~(x##^5E$d za+O1^{&YQbBYR=gS8lBo8Zf$-iO={45_NCHkj8U!n%o>0r{U`94%(7@}wTZKj_nev~PPWP*j2gxlz^^KU@Q%fT? zeJWH*Ia@O5?scBTT&7c-8|bfr(`nWXK0YWd9W=oMH=<5)OTj8wnu|u4cYSE|$nU7q zO`hPj3|g4%Jq>%th!qzYVKeW`)6q9KdCeLpALfbsFm8A>{{CIPZcNvyHlfaGWLp6K z763^Dh|3|)@kw;@7OzzL z!q=#7M^yLYUf6LO$+vmM3NN>dD#Zmtm-O+0k@cH5NcD=fI0T~E<6NQ-;-juTjoRPF z$oa)I8h@MDGwfPfNPSzGJn7VJ9zMirh+0kK#A|w8YFm`m0D#RL_5#aTi%7}-R7KN_Nl028fwdb7hQ7~r^!N_1>iQb0r_%bm zzQy~_F4c|w|FKrS%a=H?B`4|Ve>{e@IY}-GrUTtc>ZS0LEbN4}QVy@7XC8^v?E!z_ zH`puBR{U8Q|*3rPiuG@B*4u*5uoj9wSp@x zd{1}usDP9*pB-k8xrcH7ArjRjA+AlQVNZCinjQXEIhR47DayGJyJaY6r5PW}xpOL= zf5OdiNx-ldY%>y8ZlEZtUoF`3DWYJr5TF%oEL>^f_q(BBDXl&$*V=!n)>E97UCf}A zr#!lRdtiNF>BIgNz2ua#Vw}p-*Xl->pJEfjqZ_??irMz^UGja#y8XcE+7G+%?I1~L_ zC0hDzwYbjR5nyxJs7^`8_Uc5i7z>peW1v{B*1tFpHO|XW-xFyRWqFJ(m8{WvRk#6K z66xp*9yFyLf=6b9X{l%49cs{}gjmktQ8@4P9AkZ(d&#=;Krc!1uP)H5NdKTbBo)g5sD*FuyLQ> z>?ANJ21Y#J5>s#<7h&rePXjNtG}@JCMcUFPIz&KNFJfj`ITS9}@tDyawm$ux-euY@ z5IClOShr5}<4fKx%y%_%%dlZ!J&wF3^}{t!N)#*OKqM*hMm3!;b;R2gNe9LB;(V$j z4KLt6P9CXZ(?N8`O*g539?rbRZ=@Z0+&`f%u(eB2BGmsTsBSZs0x(Y86FL47#m}b{ z;=ZL#P`p;UO7X}j%YDn^sH|b2c$8>2qgy%!<@1m!Pre4t&w#S~(^S$VsHBOy2r4b^ zAV?~BzG9Nz>kE=9!&Q>zzzvcg-o(O6>(rE3(no zX>kE$i@L3+zY0Lf(!lvZN&R(|l8@W{4@z!B*RWHv)YShEC7-2HbRj5tF3nEKIg?e2 zgsK!#DLEEte@4lpy+O$nLsd$igd3E+01K3yU-@H7t^>;dq+}A%{ud?pf*7K6Zi6i- zsYl+$l=OcEO8$XW=7-+7W0FeAO2|AdJiF2dN~X63B|XJ8NsIHCwlwz@DB0;B>+VZDbKmevfln(Kbe1bA9^$bJ=YJ-mNTjg zev!t!}!B3!c&0v<{I zVzZp5ETHvz(*eJW;|m}p4Vf6sePw+<$S^#|LSu$kdDv>G!I;R#ytAY!Q{bi zjwY*vX&3GR3^SS*2LF;O>hn@eHIKyeWf9^pMnp|ee18LPf^uD)OCcpp5l(_t5o@n5 z%AE*GDPc-$5{jJ>^+m0UkRDX!KH6Q-96`}=2w|doXK`&+8!DQAx{rIHJ=JzJjbeLK zXoI6^2FsgGH6_zC#%5EXY^ujxM^P`?R8{Y5waBKodgk+$HPd98p=WD{Qz>Ut1@>eH z)pbUtzZy&D zSd4lZ33R5E$-8_gl_VTcP}XD>sVBLNrqCU0qo!3Mf~n;#_x2zl*!+{ zDsIe*NZJKiAl^-)H>FI$28$uj8t85c)cfryi*y*|-h{cdb2Z@X7u`MDI$@igsXg`U*Bv}rQi zV5VcGP3<6r?p4NA9ac;klMk$cWlT+2n*p@GjHz<9+5-5pEK%9)n3 z7JcYuITOC~JR0O<3J=m3e`Y^avTwsjC<_W+ik$&Si-`d~uQ#3aG0kJTJnHUisu`p! zjV(KcVxLMG=?i}I%M(zcgHAM>$_#Zk8B(X#TUvg}e1vX(bh zXHp*h2V|!Y$iWpU)X$X67I&wWex_rPd0L!b!Y`s zUA=Q!2f;mySD%G20<=DP(I0`Py=?VxnjVA(G`6ObL8dy)xi#s7@hx|ar=Vcd*KE=- z+8AsKW$tnGPq3*5TiS}8Dxz2LII3FFbd?3qCn>~KF1!r3X*8Lc%+#V=EGffKXmL)4 zTPzAB#KbL@7|WzFm;zHLh#M?wp!0xOJaL6#=~O7q2tm@N=h6BQQ$nqcAj4-@RrUu1 zB(ADtX&^ILp2S3`=`rz+Eff*QKa1Q(tyzKCKTkg|Lpj>3oxrc*c05#;P^Xm4H9_*OHo{og2SOCd^by_nJdiWi z(i{)}h@F>P+J+|8rz!Q&@$1&NTI-n{^yYgnAq{*y_RuYd81zjJRaPgK#>$BQYZk!gZq&wHKqSR<2OZ}|J2j{XQYwPU;gCEv!T zO@^0mb#$t+DaEh?j;2jaa}53A__K*=B|ChaMn#zXy%xX5IkHE3p+41P>MOC;rS5Ef z|5|7LDZRXa9=KKQ0-CuUrR57$i73Nx;P_R?vZBRze? z_5Aiqt$+Fh*Yig!wQDjC{LJ{kQ?%ie12|#PqoB+`(g!@$$XwGGA8?JBc@2H=;KOwK zfQK5H{h%{xp^NTCb?)TzPtpFEaS06VI7Pd5u=X<^TJckMEIlO_-;Jk&kxSbT;J=IR z#V#oGQ3t>JRBS>1bsJxCs&-_?yL%aLJ5?Kze${O}cB)ofJ{te#hrS`%&w)3uCM_r{ zuXoZ7V(;<>C+@+0xbi&OP~3u2Lr>E-oIm|cj01?NyJ$l>eP!lcH?pv8tNJz<>^iVN zEPpTl$prD_s8r}LAbooO0{@p`R^(9OJu5J%(CNM^`pUy4c$En|uqy4C^!QeOS(P@e zf5Mf<@Xbx}gW|YrdF^^U6fbaZc%@1kpH|kjjPAHBf6jx6)pzl2*sbGVAtJBpl6|yE z#G6qs;`jeg*Ir4VaXRlh9s9Bor{8miR?t7X6iQfK%$o5FOskgiQDEHjG2hY&X z=s!2ts<}Ybe0?syg`(A^e{en@Jze`-`l2fSkLlW&(ml75BYhV?CtUapOt^pty8peE ze>+{iCDt{#( z0S(5VAB$Cbar?DH_&Mk17Hl{vpxu*}@dvy`yX_q9`jW5dB6fMCoVGpc-Xr~_Wc=N$ z`IR%YfrFnR`O?)&PA4pUXKB$cFTSZ1zvpV+JVTqEKJjXvK2uvT?8U3d)=X#B(k9Z6 zKQ8#W_@Z=^kNBFacyy+AdEQZ!zjXCPs&n~}xc4evQjIN5Y%af`TDu^B=0N@U)n2IowNE^c*zzUB@Sp$wU9}W1gB`q*pKz`=DE-qb`RsGG2~!`r zl1j9ZPJL#)=eT``;&)Nja$)4#oT}r0t;au0yAW&7C)fTM{{RXUJ&dFd?;l@_|K&>l z!MQlg9{n88JWm_%$;6Gnscow@ee7dP2?=p;#)4{^De{UTYn*c<1*}`9vjKOyG+|Q z{I3_-wJrraw1mnmI&`Q$ck1y67iPxSkKo_@MY}k?d;~wePCGZd2OE|6Tf_OIb=rsh zU&24&!O-7_daIT;mTjZ@AFbhcU5*Roxg=ZKlAydliO;J^FFvb=e|fofbo#IwUUY>v zE&bE;`0OjR)6>UY!Pi}()%PjIzw4R4v`v)roVQ`rmD(w3=?Ay-YvyS4(wA=MU(V5H zxGoxsGvo5tzIDcr8p=_sE^~@ySw#65m!^dB(os*t7 zWW(aCwejicJ4^Ws*JvjXof3e;B2f`;Yv7#*{3aA-Etho<3h+Vmusb-rl%Fl zDH{I5*`f?i0$B4J-=p?Cf~@Jwqm&h2b2g98(=NJr_v`e!+m`r-l6~}msUO~+!@s;M zpzpFQcrrd~AbRK->>S^Xe}xNg-23i}i$*NTr{T1|d-~FgPK%#gEbfVaP5Zr-g#mo0 zK#6w87nN+d@UJ+J_1iq%@&$9W07dwYrCE5d{aS6(z|}?azaCj@%@qTL&ExC%PuF69 z(04i?{WtBY^cM&49e=|{cHy#S9;zbyfEfzsJyBEBsi?~4LB z)6xkFFPqa6@t-n2{|0R!ubhvy>VrFEZTBzXOXh2Hoqxn*fkh`oALIw;YZFh|eXCL1 z(o@XZ-n^M=gGE`}OQ7OhMYX+x0zx*?sIBn`sx2^N-Z7XMo$lm)zfF*o%KHs!Z>&Guxpbbbr>K*>zjUcxW$xvkL0xehD_8acWEiZU8p0SsIzCatA z-Zn;*%SNUC`20P5@QqqgX>bpIPl;~tUxc&8EP1xT*XQu6{;7L}Wm5OW$4KIQ0fU#t zkCm2q2_$^_aKt|ok+knN5`!m?0&xcf9 z`R^J$Yiy6yI-S2Q&y9b62TzNj+FOpK>I%3of@-cjl6)xU0U~EeNtk{dDee>3(>O&T ztdy!&E-OdA-hA2~@#Vj&<;(oUyT<)&=lH1-r`~jc-n|xb@G3o$#B20W5--<-;Gz=o zhi`va>*K6cc|5jA8&EFHc$13N=$<5Ar?Ufl`Dcr?q9Wl$>{q)JMSAD2LRwthiXR~n zEm9udvARB1Iao>gYHA zM_OA#xad@ zy#Ri_{j&_iHX=_b5+|}!k*Y$Fxr)>fS$Pp3dW%+^9Vh`At0X}pH%{h%x`GNsf&ZITPlRdI?jQZUV@dLum0L z-MeQme|3#kG(cbVhS@`62+;z-9^ng@XvHP7dXl^7+JBiIZd!xzivGE;hX!MDw&7lBBE=?(Yce~lV_a4SdU-kiibD1_Q+_XvrFDQfQ*PHM&atNm4 z0X>q$>-3O~-?V87is=_2E46b(`I|Pik^F?;mv0G^!l2(*puMPm@Q2^6AWrg~zb~h& zTK(nUmye`NBmKVLSDZ6KZW~JxYy!2 zqJRe(ylI72TAaYo7s~I|h(!{;)q+~$OE>c8Zqts)D7&SHe{!2PHlqhSEA4iiV7eEp z6HL=XTEPUYaC+ldwe48B%u6k3RT?T9CKzE^wV2Pp9rvaiQ4woj4CcfFzvn!Sl()CYHvOdimgjbkG~ z=H1GO>99GftCr8I!cH|1zo5}R4i1-3COO~Sqzx@<-etC`MmVpyI5E@aBb0?Y2QB79 z@4(FZZW^CTIA}Nj(;eD~Ne@rkgKnXVSb6Sx_=V&dV)|%|#e&tcx@7Y^zvG{i*|Ey} zMc+&FUrtRn|7F|%W4@Xz^X+T2A?bs@?N-HAHxLtS@j1Ds|5IVc9S z=!^26o8)k@V(-yo$g{Xl_i4W!;{Lm}q9a-j?UizdHCtRvmQ^?P@VA<^p&r#8WJqr5 zrmWRU`&C-%V!*WO7$A3PgEAZ__v>94#$AyfK6(}QJ{^%%zr1?qNy#ff6gs@KNh_M! zXlScR3wy?-6`fnFf)*0A zT3oDk1*7E;i=ZHJ7{;{(bSz$^N0PWx4<+#;J*aG&gI79|fW5F@G2RS?pB$)ePxiFq zgk*V_B`1B+($JT}AyK}pSYG_tE2GbFm@3pej<(x74WYn~jwuBZn(CAaYkR4X*(z+s z?QkHU-3G&g=L#o;Kj}Zu|!_dpNr+-Xidfvm%?E7iG!gts9P3UJ_v_vy?$JF-91|&t`}D+r zE%(unem!Q(ShUHbcP4SK-k!vLdP@@b>(T#;ox3-E>;l?04^BTgNv^G9zv4sxt__%3 zh5{7S)MO0mM*K1^$-sj&$h#X;c#6F1i@oAf@Q8}}azX3Ga5)(&fFdsbN(=OQ%LI)i z-7#s8I9m_vxZYe7y(DP0xQ}@A^?dSLZSb&F+|=_^e!Zm^AYOYtpTAZcn0p-Z)#Cnc z6RujzuIDeJd`3?Lwj^t@mUrNTcAqvVT!CNcRjrPYg))nWh!5;j5 zV;38X^|DQU(l&o(l&Sm$dMlKb13}CYBJDqWO4;PRt0q=Z%&c7_EJHx!(0#a zR?pA;*C({nFsiQ7gP#hCSGrQ82a65(1AOO*XaHvUZ?vku2(;0)<^m>ejZCfxX&b~3c;OvVux(6GxCyeAq3(J*7dqJ>#e<% z_Y6+DvxMzg1c8W8vYSA-qvr4n!HCKb;R`15Iz3=A2P6Vz@PbyqABw9yhv>pByuPy!6rJnAu|- zI7~kn-}OkcK0FdbxZ^0fc9I|Vq&(Iex9vT26bXz1-SbVSg@JA;*yUZ@a8=T*jm#|x znR|e(4{N2Dl&P9vNVK-zDkxgpef95dV^*Ux^p20rih{Cpu*ZcB*dwkte4MHr1?$K0Hy_pp_p2Ufo<;(cUj~D6-&AHvXkO|)AMT}nlQ=>6 z^#tyrzzMR25fad27T0@5n>NMmyymOS4U|}MS6RG;EIX9%_O4LTO-TEGJtFOc*T@P( zW(JlZtHL%iSYcHVBwl85)1c2Pj|N~bJ(drCR4d8on%l#Ve-t-!DnB$s9}q@Uc=LZ` zq-N@ka}VE+g^*{vpN=WZXv!|7|2Sei2t)jYWmIX5raDp6T>j0Y+Q4J8k*}1Y+CZXe z>pDJ4ytc>;^%f!b^2zJ4=WLzR!!KN?4I0)w$Fwa9tg^T;*cIVx)@cL7=ON#!OQ?1X zFl`H7sfzZ}O`@Au4KekD48C<)3yY63UU~s=^4erLQpT*6Ea7CA? zN&Tm<8epDsD1a!4B?&qzpx{`Nl6ak-z|$!s;02GE_RR8~mRyu?mz?S=Mg~r~Rt7ju zx!|-xEebc{lNzrva<99;>7E}P+SpLZ(u!k4mBg{3vbbLRuxZaM@3rK@J&)uu*q81x zD?_-KcpvV?R^p6=56ZhvXzP_0j}ou2c#wEm3NNs@(05q8j?Vu*@0s?+z4va5H<7)J zuFK^;qPo`0&9Uf%1a9IAvs|nrici#=po4BAu6O?^Z_F9IzL)Zml=1=S@EHCPd>C#d z-_r14qaXjn1IZIGL=`n!E{lpC>OOccBfXsTtCjxm$t&SRn!L4A-SQ9e168vZsVv?n z3C7pc|JE^90T@vYL_nN+4F3|sXmBgas;*N3a_a4ni#y@f{$4Ck`5%@;Hp`X0SPqb7 zx_j8K0-sd96REvroqOrpU{FDIr#Z#_BF3CK%iGIPnf}fcoK_hD9Nx_4<>P3KqhfqK!W!YkaZN0 zG9`m!ONbX(JV24Duw1DldC%K>`7)3ki5*2i;J-`OCBY;!;(vG$s;81dDC*=z3G`avXXEK55TlV-AhvfCuAaRwoBMse=yF_s0+LWPLSW5KmltK;Pmux;Kf} z>D3-9L$6qC`X7P2!axGAdDsoal6aNgnZ$8z4K7aP8D;;L!yr9&Ks>dnkdH*(3>q^g zb)2id6_W>gZ$m}tXFvKNRby1) zfRq#0J1n_3gB^i0$i-%h8%UwqQfMcGJ^ZofwILa`7h`wwJcc#I2&!m&mr+#t-o4NC zEl7aWd>jIdvClvnl}VLz-I-%b^DTx9xATvX6m zDk@NXq8^0~DiHcTUnN&ikWxXJ)qonh-C6s(*&uO6R{i?kun~QHyA9oGDFlgEC~lwF zQRF2p1S_{;#KtGxWt-bZL>r9;sTQyLSvp`1Yrefn>l3av^wjj|o^1v~Oos|XzI@ph z;is~Ldc^wJn4<4U(Jx5RueS85d|0ovGDKu5aEny+Oauygfi><0UuDUKgR6}4%E4y5 zm8HtBqw=-}iSpG+<-<5drWmNT3?#@v^J}I-(c%KjKn)G^#tY4e30`k;QDL`LUO3!s z$jRXeFwm3w>Xzywgt$D#0kH>I^_tim7Kf?!o(s&{>3Uc1wz%-V%i=X;ti$5s8nV^m z!uw{6)8NuqS-eiP*5U(vlu>VGv{Qk`V!r)FtdA8J@Lzy+jsG=gN{HkImOgPY)4ce~ zE?TSjL_Kl7m}x@48=qBwn)(S`gxmGop(9=o2sbNj6+#oBT_?P=toex7Z!$YqhR@! z35y4Ge-f|LeJ0mvW4DAH9kfY4-)$pu5RZxQf>HJsB0Cik-AfOUND?Q>eTs;Iaibz) zQeLFUL~8RzmHeic(ZeTH@&{kW)i@rShz^n->picUJOHccV4ogCo@#+!eV!RYzm$7) zKk}>=;--Y;W`{>n-o6qxfg5k`;@<${MRVMD8?(~34#Fe!xfe3MI@jD|RuQi>xN^AC za@Y^KaM<_iUjEc8THy&rq9&|->NT6T6;>sd$00rOirGSRK?M5x&R1k?n~02^!iT;} z8|^84>Z{toSrMB)?UF-D+@}YVIL3g*^?JW*kQyWEQf=o{KJ;d-e^~FHml|O_I4;;@ zMG&_t0|;47{DN7CyLnxV_J}p28o8=Ri6bEBA<~p`F=c(=W{;R}Kjk7foMcc90k0l; zSp+CZ!RV!22tF~%T8iQfL2zU*gv`!NR97+ZB$QVT=~ z{STQ#Mql-Pl3XwAML&9xC$+$06e!inTi8Gc2<-iP%tZsXFy7wiss^+1wC6Lo(Q z59mIN>t%+$u$mR(5&N4sQJ5U>XIKSLAx<=O^V5{$rn<%TX7!}NlH=x?O9K;l1 zy-e}2RRAxDAQPNsfnI<|6}D-mH(CaQBww|wmx!Dr%KIV5vchO9`7*M|jF}K&AC)hI zbI3e{7Ctd83SXB^_9^%Ff}F2@538=nlwN zp$gbXVGyG*6dx6^ zk5VH7^{9+mY}c2g_LsAJ(=TY_7rc(U`yFS?cUz}*Y?h<=a0APd4XAlvS*u#0E_7Nq z@a-^|UU@eE<#l{P@q~x?&^NRZ`GpT1G`9BT=!*F8#r*s?v~eZ>c`!Nu%SPk$V}3;2HIl?s!YBYl_zf%_xahHa>&L ztDCiw@Lw!*DC?)P9nT&<9Px!T{QT@>OIc1((aP3TeVm4($dms%NxhzpozRq%Ah;jgoKJLv5rx!ct|+q-Et(TKyhWlx*4E?nl->$Z102Yu2vjXUQ7po! z(5riL#1cXZ;5hI70Y%NTfK!irb=c5&nTOuOR=41wG-tYt>gD<|pKRE7QVmpnJ#t0$ zYKg8*=BVAH2dJc!3-A0E*L#d>Qz;MYWxW{iSOtUuCb<}WJyoUyRpd~&#cPOnrSOgv z-fD5!!_{)Ll_3nSO5u$uygr53rtoTuhsdEyi?y?K7kY$u13Pe=_;%Z~E@>KrdJ9vvYbhzjuAu266Tr&1lp7t)i zoePn2s>yJQNp;2X^yXdBXySUuhe`T+*C|O{_}Gp-1j+Qd#m1G-_o-q$`&}(>Qe!Vh zLbgIQU4u5RjGTE2|D4)TVHIx?fwZ{rxxnI`BzIUmM!cueY(s#@h*#tTQ40J zuS5B;-fCrto@=&vkPNJ{coXqPi!uKeBb8h(=ef6`|FreP_Xg--Q zdrzA(;I^CT2aE8_t@iJk$J_bN_p~9N^@*Qtzaepdg1g?=cBQxM=D)nJRi!=2PyRqV z@yO%xTM_ulApBeh{j%A2t6(qQZ#T|L%U4ooRxMpZA&Rrz{P7R8anl^jjkibL=Zlu% z%8Y=`xJCVJtIF7}uv=k|LiVGoP+^(E@d~FYtWj92 z@G6D#6|PXYR^j>|CrQH_RmPhNzfkz2!t|e{UV*~0pWOVMo<98tzN66+%GwonDvSa7 zO~d*Wl!j_Dgoba9#Ne9}H@0R-je=@?A{&kg4uPJzQc`|#+Jd8LRiJdZd{n*8# zZ@VaqZTr|Iv>T?$(t%qguG`*wzVDON{0-B#Yv*Rz#vk(5O~ zk@{Z6J&F&Nd?xdLEEO7*0#p2Y#beu~e7@rCiXTwCP4PpDuim!d#kh7`cE;L68T^cd zwm8@0?;|?9#lK;DLi@T;c)zq5RoJ93qA;W|s4$?gN}*q&PoY;~LzC?DBE>xl@mqzW zey8GLhx))29@r-p_9^U97*`lmn7Bh$utV`}3cD0`D%`4Yi^2|t?GnRmqsnMg*s8Ea z;d+JZ6gDf2DqO2@wZc^jn-s24xI|&2!iYeuS_@Q0gTi`+A%$}k1{DSrRw7*!Zi7*bfLFsLw~uv}rOLXSeGFt$hY z(=$cZjt_*Z6^0a6DJ)XBuSe>2DqN?qL1C4`awA_2LXYB!pJe%M3fq3toU-Ddv<UcM&K4EkwPtOK6&En$;J?HX26DDTyI|(~yZTMHVYs9>))33eC>mAR(zuq-7 zd&1;nkC}YTu^X!9yW-j59erXp#8;aWOzvn$*$-M*cBP8056wnrXIC~&9wBWA!XoR%15%>Ygl3F zk;7}jy|VquimfS%o#4H-WKMOm!Bya1sujsz@tpgT^_GBpg%|$IP`1QcGror|Qul+?b-bs~0_TbjwqgJ+dE8AS2ZvDLPw{6}{l8 zdbEXVUTEnJ1usKH6F^F2ht?0#kcg#6k#L7ikqQ>vba=(o;(fMRLXjD> z^02{GOnTk3tcr!bbM5x7lpc~|L6fCO|6{TeoG$Mv84i+xnunA1TEHg?ElZE|oA0#r zsN7ckT#&0DeJz#MrCTEWv;V>Yf_qhlp+{{xVAB(wFy`=1ApI_L{-DD(GIVzD z2FowADkg&ga4+d2*(+`fSbAhH0qzr8mLBPsU1jM}q^rZo@TVwJOPXwoeZf1y>Gl*Q zqhi9q)s{gj7XeSLnDSTK^r#{2;9j5@@PMY&tX1M<)l2I|ugV}dkdi1Fkyj^Hnks*6g+XQwZEDKDv@GaFNzext+rW0ONJ}M%_2ZbhJ!RXgUB}$jfGZlugWm=C}Qhx zg`Qk+7^9ZOk&&uM=eI4G6-J_~u2my@-|MU`xAdrjt>CF+fgGsDtT0ko44Pi139SpO zZHgW$F&2ZBEFc*zA*}DR3{u5w!Gl0bcD;mc5K_Ia5az#^w2%x%5{wC12FZ~icxp>X zujw^Qk3MY$4*)3{_C!NkEIsOyZg6Q2@i!F7;FPB=Me5^5a6gcep+|!&VcWw{iNO7C zwvLpL3_YsIxz`$7v;~QR2S@=)=!J1UqHm3Pezp{cfEVm@F(-M1WEdokIk}dDbcvq; zZwFE`^k~d1(JZ|Y;MFcSqgUf7+4aJW?qtP4AA~SPkrtpxUrUb$;TVsbg;Mm$-@uAb5GQy>KyAG$zk7NYi8;c#5LXE6-2S z120N8SWKZ^YddYzEb;us%~q%A(cpAmXWMX-BeSpTebBH5tK$C9s{~&Sq-3<1u*arH zE1~E5!|jn?>$A!p^*?#C0~uZ*CBq<%{-S5P{*$Up<`Mv5UOON`v0o)IyWY{BY!wP968f)9Yy~g>^P^3{D zpKU49%Gh*~8()@|$M5KuBgO%82DzLDtUGW}QAVJ8#PFT25N2!*-|JhdS- z%Nh$zy)YYrjDkW82C{%;R7@DO86=NafR~dJl3j25G}9oX7B2wrO|Q~n>5+qT9GL&9 z9+Ke>n?X|C0qzA-GAgDqGx282Abkpgr&dhUxY1TIMW7wr3l#A;3=(d!8Kf4+!M#9A zcD>*Nt739+1-O@#knDP%MV21fn+WbDB_z@d)94?C4+m`X^GfiwQ4B6}9mz0A(`>UE zGN0$;p9zGolV(YUQsb=TYR06qFPql9pqV>YKqr<77tUD21v*k5BRz z1673y#qo4cIObL8Q`p4wUUL2M$fnn%xLqOs1*}j{&5!YWUvk|V4((TBRg3Ru#T6Q1 zNGKlLC*?*M5{ffr$D`1zFrvz}|0c^BVQR@pBe(i7-=*>fy`j)v%b(fkIx9bNy-;92 zh5j@7u$Nu8n8TZ)(|F-4u9L&Q)6;wH zQ^Tp>!-y&uH1LH?VW(wKmcW4GAtg7kvT~+yq3KLf?`Rg1A6Vd7X~4fhq2duGkDR$7 z{Z-c+Y5DCbE8Ug_e0#fVVPR~s83;z}K^)x6r^a0Ucx02yd6?XT!2K`z#Q#Sg{D0(2 zQsiymMk4>(Q{?d!dBT!=K6K^e-D(x5{wu$gzxXfL1;unN#+F$!+TJ#R+na`0T}VqL zsyYDfQ=$1cLbLHUOHL<+E^vGKRM&jBC(G-=jYRfC;D&t){km1j@)mHr-0@1XJO;U{ z-@nIwfqVJmue$~pHr#93qmAo2aAnWeiD>P!$!S|xw8oT2{{?vsxRGci)LHV- zYlxOjOwH}E#3CH)|85m0c`LZRdgoe8PSux#E4ipXVUtt!47Wa%JheAyELB3R`dWya zE$dW!0k|qHysJu)2Q0a$eYH(awXXwL=7qe+Ca3BhxchClpE}goBgyiu;6@_PgkMP3X3JHaRK9qY{E5t`@~;6|e8Ob0ij z1Np2KDe`8Ls{(Wq!DEf7A3eL1_IaBGRey}9u&F~nhVu5#Pni)kvHyqI|G&j^EU_3m zsa?AT^8XQ=eOB?%TZm2h<5q0waxVa`ig(hqvWY3Q>%srmz}R6G@6|ikKP~gUbo^?F z?dA^~H+Aow*!6^IT|{;YxRJy?3vd-#A#Y8Q z@36^xS)w>bgHkk?&HaRuh`J5>yzw@iXjYQ>ZpW~z6#ra{2EuZ}D1h@Hfn0(Ch$@1V< z%Py7QV#(?Jl3%{TlGFL8Y6Jg<>W$j+soXknRj)WNIop!Um4nCRc~bO4r%g_aOAK6< z7xIc1tn%W_0B*F47N^D(`C4#$Ja?qXds5^TFDBcc4sMk1Z5NVw$*f=W$MlWK8n{G~VY8*TBMel8Xkw%hUL$U9N!zDWXx?t$JG^DZdfiR<1BL(4COm-FnY*i$=E(JYl(& z-(!>0Z8q2Y{PB;_zZ>7T%H<+|2Y8cJu5kJXmYl{_Ex0l6Xp5d&z6)}rJdOLRE~`Av z$^f`>TP&s9Y;xLT?*q3tyYfF)c?wH4xRQ%~+zOkV$~Rl`Ugt%RC8slPe(Xcbz6a%< zAMqX%G7M< zxu3fRk{_MO#=G+5N9X4*$AGv^&G`vlZ3Gv-6nX`NB0M*U^V9fhD}tF9LyhO^JdVsm1o0@}kf;l06b+gOZGdzXDo2(aq8- zb@NF@;70P{GeT=n6RBKpzQY#2sx($~C*Sp7mnZC7mLW6;oSMOWID*${0`rP8S<#;h z+VewsLELj?hTdPHa~F;Wp+_mN)X7R~-K@02#Y$%sb@p#B2pPI>Lob2jZKYd$oSO}= z?Uz2hIzN4QMPB;wv|N5ex63_Z)rt(}$KsRM*TMQ$WV62GHPgtr(=*s49CtSGC%aw! zO^2^KBZDo(ac6^aq&Sxq*SlD8t;UKg@OegIqF-lTJ2^w6<6qM=Sk{>tY`=15DfkfZ zBaQOC)E$C+J`S^vLgz88uwG+@wYjXYB8L^uuqr4#D}x<}qf!~1g3kfL`NA(szj*A=kJ72mcm<|1YCK^zk!5aRDqu)Zl2Z!Nkaj}Et zqDOM?%nFL&Qcq>2v#jyyKBK;WpPRutajaK%b8@Ln4$Ga9MZxbUhQ;dh(5RXWwi!yt z)$seja+Ty820ldo+VeBmmks>QuUsR1R8asG(ZI{Yo0P@V3PT09q0{%z8SD%kGq0CD z#{FNr=A^G$!JquvX0_|e40Z^|uMK?r*RD|$jM|P5Ww1Y7lfepA=^RHIb4;@a=BRlY z>?9oI=}GhWv}RVSqN z&0>8qS^J{yzB9B?nwY?D%neN9YBh=H6}IPzahb(($BS_(CiCMPGgvE*n6mY6d`{qC zMw|LMSU)Tz{l@p5E>;p+0RpdNup4n0g>J{^H*gq*(nLj0QIT{8le89-v^pD;HH#IG zFXVmqx(Y8SJ}QR|u78dVu5D$5E1qS8(^{AZBcCQf2zw>zakl9(b@eYDh|KF5Y@qV6 zc!-mEDm=_H&()dR?hIuIvjT|NS>M@)Q1IUw%=IRf;S0ZW^*4Lqt+zAS=Qt+J=Z}2n z8bOhM=R4O`PO6`NGmy{z-c@93KlE(|>%U9%%Prr#2Ac!%zV9;F=00d%t%LGi{IiDTAGe-LAo>rqLXjksgq-&1Jds zfBY8dpM}8(_D12qt)19uwNWbQ)&!e{>Bd zTWfxF4I_L-;TJ!;M)fx)`l<^Z?C&@z#1CA^hyCPw{x6+>LJ0osV7~8MY$)=RIj&E- z$2nNXSVvO6Go3kW$2b;W;$UlW%u!`ixvdO8smE1(ny=Quf;if!fGdl+x`#1m*AdLo zQ6}|o z6`vi2@Fg5^rC{f2S=e1vI9L{zfuXdMsLx=Twdu^a$idFQQMy~!YUBK)J+6;S6HN|w z%pDHqOenW(oCo&0hHv;`uj{q6fx-72>{T3&AElm+^LO{Th7XK<=wR>Ts8R|x&in3n z4I0?=k%N7PV~J9*aemr<*Vt13HV3-{N4rw6bKZHmyEwc+&aW7d1_irO6RWWoNY`gU zAYG#3-^4SzWQ+po8m}Elm*g=Z-G*QbHSzq}3#3bKKaea3fwY&60O@Kf3Zz|fJ1}n$ zUdSGVZC8=nqO_c)u`LT+Oe_rJ(*vEKI>aSK0!SBo>7O}7;Q}BT8v!Ka6M!0 z0n&B-oj`J~8A#4P4vkc7TKgN2PAdara*B)vQaTApJ961qNcW9!50Fab|iid#Y zSVZxrJNPXJu-s84p+*<;d?6ic15&wVUrFP4$0dIkNKN<*NOp$nvgP}MRCE3}vVo;Q z>B*r(Evl||Ald9xJO(5ii957xq0H{IoLLQLg35^VTUq&i-%DriN+@T5!Wp1&<_F~r zP&o6Wat3HP)5+EN1d=leAVrU@md%NJhOts>BDRO8rV6P#6T# z#0V)K0n)5%QapMu1}%BhqB7cnbUUO|@fZ;QAD$%?XKOIXuN}g!-S-%q8-JW#y6vCr zqAly$thOiEnd_cpr>uU8`Ioe?;~So4$JITUm9M6ehGPW5=k@y%$k@yx!k=PHUNQ_I%6ybgnNK^bJAhrB$AVuOcAVuZ} zAT{jM%uEr1b_J zkp>R{Y3<4BEAs~fY2=LtQUoi3^peIoN`4uTZXW$radIy95A;8MNc=T3a74HHmeXKY+7x<@~QNe%m{B-w;=ThIbt-!FtK857##A~mN9aADJ z**!$s*bgK*rRaJ!&J?x-#Xwg)ww}L#&^1iV#>h$+i+EL3hf15VGU;#vNaZFDmkr4o zA@$0Dl#WuI>SRwyzdb-|ycbAieL!lwA4o$g0Ho5vC(s)-l|#rNj3|XBAQg-PDYXFe zrscC~tB+%omrP{GHcVni*G*=_)2?F!5^`VJH`FKS_PGKStaWHmP&rmJPCB|0NKU{%eGc21N7K5LR3*hMGFfj$mMPEG=nUKNlg!o@&p)#X5H<@G?C zC`~|W#NUBb@#8>h&L$wGt-wPQ5H@wv^`+5w3kE0%r_%qq}I1co6CL1#?la(Kk3U+Q9!?xNDW3+!_RnWyztMqN0|Ha`x|9DSLCab}*RVZL~ccEb& zXbkSKuxeamCCTyDy~X*j4)>;kk=jhgacny%J+g8BQKoz4$o4szZ1mhr7W$185YBGY z(1n0h^kp^~U!LWjG%zwRlQrXr31#$@#rbDh?y<)=U7N|`IJ}2oZMc&S?=EE}U4vMD z$6#!dy+U^W-w-5{Bjlv3I6p1hJxH?|;8$n6FP{;)EtB1YBd$u=d78L8my5e|IjnTN zygN5EGo583GXC2$*<2i6EKyXG#rY_wd)l}Z*aWVA%j7u;Y&o-nb!oOV3 z=m0PcJ_dmpm@EX8dpUW}jAn84CakZI%H`%;ASLfQF`2?_20l>1AdqI=hR38LRpPx< zRiZEm%sVERjZT}Ho^)RHX=1r(#}>-m`6@d{J}xU<^G|8_MIfc7_2dASjq9F}8LvMn z9l7jj$sYic6ZQ*G;t}Oc6OdXS1yTcAfYg9aAT1*aps;k8Tob)O85vxs<8C5FCO!)u zhn|rY-3_FIj{xaJ+yUAI)dSA)AfmG2CK&m+7S-CE`fs_V3%eQOpk}zHvWl!O7 zIncGZpm*WE9;?ox7fH>0YLNFSIMzRl^~c4%bDlggl5?TktY}7_lRox+Ue+-RNM$KS zQJ$~`NU2@&@S#pJJj}_4)feEdP(M~uk^{1rhFJ69Xq$m@ps(rQU1da*4;aHF*J-2aw zXs@e;5AW+95)MRUj|71f&=61zRiGHEKrvK-RIleIIaGZ>8i4^IZ4E;}Izu)A>5SM3 zB+H(g$?zFKx~{zlNHt##Bu|zDY5TqoNS?k9B+tJ9QcDg2 z$r0^ixmPU#l0!!VDSsjm5eT!>@qs4cc|Z!$j(taS-8El*``yql1@+t}>@7saY8n#&WgC9t(jR3`j z!}uOl?Mk|!j>xcv6Uwo|?b6XBf#lTrKyvCYKyvC@AT@LmkTmZAl2i8sX>6XDCthy_0>AGb`{4k+X3$ieV+;&QLcgPl^o$nzq9E9KMf zsizMkUXCM9c{ByO`!Z)op2%yA!L?jD1xUxvlghyXs!!Pti`mYQVK_nEY-gg z^6yufA3jv@r7U;_keYrykQ`nDB*T;va9*Up%b<9Gj2}qu2ULC#NX}3q zy%0D#5dl*9roUIou^UwdT7Wc8+Lb~lkY;vF$rC`D`E0E;-~rN%^{(ZQ7q|zDXx1T` z?aKKZzLL>=2T0Mp1foG<=K4lfR05<_4x|W90g}NPKw6^y1f+(BfMhTXq^0a#AT{_?AVugqAUXak zkW$XK(q11R+1m@G%jL{nv?NZ(o8tID28RLZ`gF9VY1JRo)EY9KjY zn2?=W1|-MF1Idx8K5)CM5gUNyaQN0evXyuI zETeEAkoxyAAgMkFr2hRFNFG1AUv|gKKyqj+kQ%TZNYVNkNQN_ikrjD?6sZaz_5aC0 zYS;`Q%2l&J;R6+12&955fRr8uQo+Z7v{beMDMFipRN;p}D)$qR%BB4(%a#6`$!{-l z7xRgl+dICgS#1P>QZC;QXaT3@v;!%10?B%;ng3R-riEu2?pYs@UW_{^OP~3htnEV} z)&41vy!i@9Vaqxs!}bu6&HzsXMLj_B@?9XcW(a~x^^Fz5#gBUcskQQ4`%zr6y%Ntk|(Kuh4tn{pO>S6R9 zkm|WPBTLk?3`q6d38cn71EhM+bYzLf%?46ER|2Wrd>}RMO(4~`4M^#0AT^Fs=uve$ zIr^w{u0>%xP>$>?*pRd!^CbGjtVh#wWS1|uMz%Lo8vO`J=@%e5aVSeVpOq_}uLe^3 zBT%|fikq6MQqMZ+gjb<&9iLFDA{4My7FC7M)1jqNV4W!D_ zj_$*bZWzMK>%44e+R3b6A}`jr(=Fa}$niM?Lx*Ouq3cRn(dt1gXUSmZ$Nh=no-BOx zxPZ1=Fb$!~RC(xjsU$d6l2Et&yidwu5&)7@K_GQsNaaU>_F>WlPTdz(@)jU8ke;|YS=Xc<@k#LsUf!msiJdB<#@dmNDZzBQvM;@cc0Bq1kzN3UWs*6P48_2JqeE2{*c5ap9 zXL;TCOb8s4#k%n}$u^-6ds}d{AuQ{hELn!LlBvr}hPp2+>71IyMo!CObBbhL7Uye* zx(Ao|{*cA0aC9oU#rgX~-3v>+=VYOYF9i@?gux)B0xee;na1_W91uVs$vWYz33^u)^DPc%a%{ z5cZvy#ZJcI9VnY-=V@97)6!05j*z+&j?F;~y8CbhNT06nYX2a3dQBFat!$9o&h2Gr z7`HFRl3b>-vf2O-m$?f|Xm_y=_fXjRa-1Ipq~y7PKUwC!s>J^njN`g2<|~y>TAWW9 z?jD@ma(Nbe1;?CHe(`Yks8RGe`-&{KK2H}uh^|}v*iWS9>ovL8|7l7YWuR`xOwHRaI^dw zeG)u40yj!12%QK*(>xi3&w-S70m-YMfwcT){8g?}{ea|EIgq@X0HhL?K=Nt^ki5DI zNM0=fl2;D_sl8i(qt&FCRgKKwk5gD(||6ha|v1he`K*%k{99)NUTDAu?pp26{7qLam1AER8DryvIva5 zuCz;w*`-_Z_>d#rQ%hp&v)IE=V9D`HCoRtBAL$-3uI2eGHo6T%mgMx3P{WCWAGpylx4Br(7PrW6{7)7uCmHo1^em1Js_Vy+ z%0tJ_<>n8sA6Fn4cmJs1RJnDiS3X>@E<$n5M1)99D-3G zr6+-8&{6^vcmJ@RN}k^cIkupcKVp5=t#V(xF7y4o)^Zfn+lVq=hR1 z6ys-Aoh;y8CD8|@mCFyLl`8-w(?KN<0qI&X0;Eg%CLmq1N0qzTk?D%ukl|O~(3bTdyKoMI6q@}nCNDX`dNDY1xNC9{mNCme7DSZZ{a-Rd~ z*24EdYS=*_HPm%;wrKc3Ae9>hq;vw1%B2GPvFx`@-`qz)&`tj`uYW49exdwep3fs5;(5bX&^-@J|E>a3diQb3 zw*e`A{y0DVX!j9etRs{XKx&3(rMi0nq~?Txy{$8TYn=(Sua~A{Kq|8fNHc7Y;=ciD zKn;3Ag%U{V2H;$ZA*Ci%M5zTxj&zz8Cy(4ZR2)S?D)Y#b(oidq%IpPFMJGQc<)jm& z88Aj;V=7AUjl{f>?tUlIiE#-gKv1de08+a8S*ut?O{6A;QH3pc^P7*w8J=vkz($KI z^H{5LBbQQlr(8>y)X6e1XB5jfv|TWdkP;Yy#k~LwF9ZZ zTR>9$6i5}vfs}p*lHPtGHS9Ma>A60Tdi{ZvhJV0sKF&R@B=m7MTY@7#PR>D#^G}a+ z4=(lW$YxLBC^$;W?Oa@04UX>2W<{T7v*|(ugRCAGpk^LFeIj;>ose(C5ixW+a1D@@ zhhc4Ue*Z*lj#^^bZ0P6NtV`9L%yAyV!y(p%^HT>}RFCnNq>r{Md2&AdLw<4|y4_Yb zZD2OuzZ=X?o8&IcW&h1)r{k#i@yjN;#}A>;H{e*}li^6_Mf}wV+{5{fNp4rzDoL8C zwyTUK=b;x&>u&Y!0es~PuN8~Mua4e8$LReQ=ek`8@6oU$Uj4}x{5|B=P#(;X+~DGs zf^;@qUbR->T6lLh^W#{hlq*!$18tpGgxvSvvEG|c=w5= zQHPVghoec9Va(3y<@aL#;PLK(VSl!hosXl7)aW{){)lwq^*FkXypED|;$xgnc0id+ zOXN7&K^%3*$k^F=T6!9zZ(|J2$Cpvm zHvkg3PWBs))rP*w`JGeT<4SxkC!36;Q^_sPw@-1OUgGQLWHWI1u_vIuvN%8S1ov5` z(IO|?iX*DzcFqGQ;70tW6Wm9Xc!$CSE(F=J(u~FVZzs4*&W++-v^E@5NKV59x5S8V z#!;!tq;h*1wXlg-)FbMesc9X*>O^%TGm6Wl#0aNYTV{@=T_EmP18J=ZEB+54two+A zrF;~SF&XN>`Cr{e(z`}I}b;2f{H>C$B3Z! z#**?dXlvau<2y9Ouf@@$Do^Gxh{7mnl|$343i#lu?#UNKC&K|8^%K#kF}Nkz zU6tmkKReA?eO4Of7aZ?ojU=Nv2w8F-sz}novS8YyHxmc)x2L-QabnAbPBwS8lP#Gf z*E^}k~HRJOsMHh)?7+l?eXJDoiSndailx<76tGqCX)HRfVufr~He{`n)l z0b>%Uv$>G>f_VPCHt?^oYFqxmwl_`VxGrjpTfRdOZzc?=NaO!F(i=Y6TvB7kAPvK8 zeVgiBYpr$mm-od+KZeZy>{C0L%5cfYB1?m0)P0M`mz&0OXH;jR6>`mXtGjk(~q8qFYs@HQ$iA+~&AQ)XjMuewWxSvKiI**p8{_RVIr3PI z*#}vzY#Jsw>y#cxiq2G1oda?P2cCQOyfS~||6{1GO78^+|C8oH|CcfD|8X==iAJBa z|91~TxyPKo>!+vhjOBxucwZq0@&vZR7Qy8P^l3o_!rxS5)(`pL6j=DEFh){hJQ- zcI_HoR$~Sstw-2CD(n8|2YNlmWVo1q4;ky?EA`N}yz9=>`oX!6I*N0j#B(*~E@YNV zU)KHcW7&S`6*cB2c+S@dobB4|7{51!8 zy$9urHRe@h$bRJ0T)>9brukYg2wV6O=Ryjn50u90{-AMQ??jV)#8>K#+c4M{7zZ+I zYj^~$#;gcz*|Fh&3)8OI%m3?-y!`vsICjnCr#0p=WaKDYpR(=`IN0mkwfI?$8Sy!X zfr~He{?vmxg^vHosU=c!@s+ym#`g~PMy8TgwdSJgT66UN6r)q- zVj<~&L1rtA=5MK2=GojG>RzTUo>07qn{~E?q0(Gmn5Z7A(e@L%CONKV$^_IZ@VynG9IcZ|V zzw{7xtcX`@2G`ee-eN1>RM!s5OymSkBR8k>*Bs*Q)-@TfHQypb4zT&kx<7Ed*JDtu zU9C9|nWOk%hvh!!^12{wG2!!EKBcj`f9`m%Q(ZZqf6I7pw^Xuot@#KEkHLFDrjrhtiE|~m75B0V^ zrqGRDsC%u+$&hxp30DXDk{-1t?<%4AvaW)zV(Vn+ysP>1nQNNZpweaCf9p_h@4m?$ zspvp<=>sXFZwu3R2CFg*W_P3W%W?kD3EqGn@m*@ot;hnURmC}a%VCe4Kf$XDb&VZV zYZi^8f@5tjm34pqVccEM9a3wij;}Q}2if?t?yot_>omGZ+)v057hkDwd7hFywANgK zG`O^tx*zW8b>Hf+TC))r z2O0YZ1I!sV!<|s>hqJ7%0>g9s`bQbKfKb^So|N>)Ok?u5~#daL-tj3ztdlG@t;9e$vfA^ z&x1<;5M-2N#{AqzK0neM6zY-eQ)gx&6UMv!e#(KS9Oe)Gi#MpN=~rjEBMXBxDPVkzwfRb!KLeiIa-Wx5T z4dz*h={3PVZFsB9?fY>v(>8VwsNS9gaeitB&xd4D+MZQsb~xPi=4Rdh))f_D@0W;a@xbd#Ksw4zum1JOrvje}|g2J`HLQ zzXqy8H$lcea|hJ1^SINWbMdc2xnnL=Mfz{rRNIMX7Y4UBoyNDzhm&nKFLv}k2}+21 zrF5ZxOTz1$DshXj2e%7nPjs7lFsE5f!fd=xng*rOF2ePj@@x*{37sR^+6OTfHs2zD zsHWP~3~!dNqQ`nsZah|PW+02LtrYuPRg=I_TW(j*;IZim&A3HaZQAB-#>n0*O@)My zw3}W2{gK}qD>b885Z@$B)3X)%LT##f?tw?SU1iKLo|E5xShX1|qs%|HUu8@irpoL1 z>ugR!LtJBgsAaWjS!G`{-|`^}wJdRb6{CKYSQk^Om81nG7(`SlDX=hw| z2=A}(&NZep`$@Z1^~PJy3s9VCDDF~ZnBu8VQ=I_>JF>gk25BnG3eB%G^EY($M;zyM zPbCguM;g=8EO5pub^WWFd+Zg-~PHqfi6t@I&pB z5eGw6;%KN!{q4|{y{~sN0cy=Gs1fuMC{s5&Tzn|cBs=9NM->Jdt(c?~~*REV@QDi8ODv#N< z%Jf3kPx8k%czvtj*$rOTsvQ#k_0r)}4c_5hbH}tacTVCqT*4hrn{|KS-@WY*z0CGf z3AWv)&TKQdlWG6@=JV~O##{AJiPMAJWZUA^$J-vNKf&skHrO5+@OP_gQe|8J>YrP8 zZkOj(7Ik95v3QIB%ip>34mzDzSmM)cmc=JolZT&d_2_hKa&M^o7oTQ3|2imLJ&>!f zGOLlAOK4fe&9f%qq>Fo1=2Rp|r>A5Gb9^)jBvGD-caSZOH3=tOVp+({c`js!DARxNvswbX?}=V}|F9FiZN|s$tTQu^OkmKMNg48WH?D;Uh52QSrwJ`?t4N zlPG#?oW|c@$D#psW`V0rS@$29#^m#d)0n1vahli7|L-(!r2oSmsQaGeCHyB(@(%3E z$FX>~fz#*XY*Wg*-}_{*-%h#&?b*z9nr_#a)qa=c!m5)QuF>db-JgH5ckq5!+QB;lLv&vhR{py!<#H>(#2Q=!<<>!^t$)OxjCOd$A9{*6 zaCq)6Yby^GUw|5Aicl3QL5(hEzWpNzLk*n~s6!??-@o@1&Lh>Z1h4z#pRnbg{Io6i zawxmsnyc@1l8ZWM5FWSazc*!*us-kr-+bz-=s-nH2 zD*8TDhi?40)%(6;J9-FIeGh>8b3NSYr@8nHB!9|8U$xgQ`#}|Xs?!TleRXbu3p#iS zRK@2*HKYjDu-~C7GWa!Hu|uGGbQ)B}FM)FNp|-&GuUorE!g@23kpYi->O82Pdm75{ z`%s44zhMnWp$s1gWw-&#UHFE-X1dp-DzU`>eLBxy)&ux0g7XS2@Q)%!%X+PR@CckIS0o zTn3fn{O3<&rZs;>t$7RSptNKu>$-Ea^+B3{7>-$8t}%jVGR#vV4N9&s%t~L0B%O&Z z^>Uuzu3{=Wx7Iv~EDh4rQP^!7#?DufCb(^%Xskn(NnTTH{(<}!)PZJk14Xy)n}lnF z{7JYbUE81T{WTT8zSf+C%${c3U8#rkS1_n~UVj!rBiFVvdB4`Yh%8t7pikKeb)Cut zs>0VG1!rqZy)v)+D?DQJe_?cvJrW%jp+|AZxpMP2tgP=?fcl!QN2ZKv*7qMc8P*_I) z7ff6Y7~I)(U&M2_#g2vc`L@a9!-+P*$yUt;<$?;%(6X#8=s74O{cf}RQBeBq+pWIk zIYXYp6kmX#vW2(;j8=}GhO8-R#YzQ(mwxyt=xA|>E&Wq*&QJc zRgna&{5MWxC;p&Ke=?LiA1du7P&>p`F5cB872G*3U5B9#&6xSEH!T*~nP0;KjroVH zvFVGfv3sB@5Y97h@=bq*MLeoq~$Cp?G{U5QFdK)U;#-&zo^{9>_*>G55MQoCZf zP@iv|Y?Y`B4wgd2WPIWUTbU1`-03T90oOyhrBD@p#p&yy3O?~g8-FWQyj&sMN`J2$ zFX7pM0~{{1X{_ znucpmbGW(Qcz3%pZp#TZ*^0Wl#h~;!RA(iiPEe9if8Xib$|K5X>K^`&t;?XdZQX`K z)pZI~{-fWq@h3s)cSG5m_%3&9;dAft_W*Z(-|7!S#jk)$|1ng3zIE|iuLGA*mhg)F@?4_ZA)#6UZGW%+aRM;+f_pNr~A3RybgXLN@ zP@R^8|I?aobGV#~{9=nd1j-!;Wp^4>UC)BriVGmc^x3r31>E_o?ezzs3VI2u;1<8t z`e&xSZHLEyt2L)0i_g@^z^JhNK+gQea9{TT&I(7H%6PS)KurU8w{2PYZhuYM9UwVs z+IWEE{%dP|6bZuWpn?R^Spt_m(WMF;6~qB_N=&4mwm&WN*&EwVC_H75{MnUDj-|2_6D%%V%v^FCP{ol`b=UX)u zt3a66Htk@~+FAr<>v^Yt1=W`q)!X>npyKDlppV!u^dM+>Z0BwwzyuP0j1}{HmZ;Z(Z8Q zpQfO(89?h>qoa>))h!)z$`Ku7&*D_j77Ju#V&Q`R6aWro@MuqvhLSk$W?7P=MRLzYQ{sD3@PxvD>Z3! zH(OGd?p6;@>}Tk5GQ>BG_)x|4s;Fw4eynwnzHkov#gle;`~}K2f6Bl9LT}tr#U1O+ zugGtzgC3RH&^jdjT+XXn|HIa+sm_SKmM8mG)rZWCaHvUs?3Q(Z?~8bcIJ`@p*#(*H zY?XEYmW#OkpWm&{9I!h#!Cib=_dmbL>oKsbt1cX^EPvZHjPuORHiA6k%eoh|zvQmo z%q4Dsf;#RaP%i2ibBsGC9Fv#$^Dp)W*_pI7L+_rp-y?h3?QkU2Zub+E-O%24)?zeN z_(Z4?_5mpO6x4QH1~o))vyaU;2r7LHYGl41%FTx)Pi?vnk1}kG*$gfAwHZ1<{gEc2 zTpFr?3!&1#3stetU{F!0fAoWf+w^~hNo*qcZ}P#w;ketbcyCY7uc5H8HvD4Q(z4jPutSgk;#_6)2vUD9w7DXBAgcUd8NQ0Ck(^8TgUfh$!WJ|U${p`? z8H(mK=GO5*Z)eksTTUInD?i$y&6UusuuK1o%fH9pti24BYc<*Gz3?YfJP>{Xa_z?~ zX|0$4XV_;&la=8*K4;LSQy7i=a>p52dI2Mj<_HPbBb}Au!6^-+tP05V;lczlvo%6t z$2}t47~VCA2qqhKH=h~5%^CbfmwUS%73JOVaY#_XUxLV`4%TbRx> zcyNxJ>CL${*(8p%(LJlpVMz8Z|H==%POZy2e>^OV+bhL1UL6m2=>H;kdxFJdf}1#G z&ha+I8l=O8w1)Lr{?2q{f+t6`Ty|w#s5Kvl8qTv&2|GiYZB}hwLH;aXlQ_yq6*pBe z|NG~Oo5Yd0@Jp5X9r-iEP2yDfAF9k6Mp#HE_d0)-#9|B^-iCFA3(g5&piD0hz2 zD`$;jq)#4V(_IARZgP5Mx+Li`ahq;FlzTkT58AY;GGUg4*@JDuB~b1qr&p#ckS^iE z&v5B3JGja}WeM{kIyB4^wk0K6l048F%s{!7POmf=b?IY|a(dMtLF+n-)H@$^NgULE5w_%L``c=GOm|w%AO~~krb$IY+y;=9WW*DYpEGr=whsvLT zvXF%OFG|BLpZg2*es<h2a zENl?lw#tl0X3w#el>ZzgDP3bmgWkSu7Npr6-kc+dW4$tOFfO#?VH*l8ZACS@awFQ= zl)na9E}hSK)w{!&@B_;cGRo|IWoCE%6d294sWSH=Ti%Q=hx_BM_6GKjJQOlRk)rN^ ztNq-FH>?g`4)<@l+Uq({X@(;!f^JC)9U#%X2$~y?k)<~$!)x)96YWS6j z2Nixc0XpZp9IAG=K-D$}Rr_b5TJsuI>xxkB8>q@`gnI0z`)^j)E|d9*{7B_LL1kEQ z9HiKJ8$aG;p0r1NmX?Kou!eSpa-TX~hGWb5$_tXaOuK{iPe;F5y3YD%j0)nLgmI}~ znXmBy+EIbQN9htI*blXz45pCEFbc^oW!+H3Tuvd{ub1;?{pK)#`nBGeRP4(-6Gw(9 zjrxm&tZ5i_E7GXva(ZM;UzXs>xXyG&?fBrvQbI#uMi1nYUg6wwW3~&`R&^_M&38$5PIQWQ46fe_+@C1AJVU;9jrq>nTmj`i z{H|`oW}^{|$wmJ!MmJ*Ad~Yi<5z3vh!5Uo;7AIILvFsZoUcik%U2Hb>;1-CPi~*iu}{n8VF(srVH>-Te*$%IRrj$6 zR|LxK1=YLSMI&9=n~-4qb;D|9Smi%qf-+g6r%jN#6X#xX-8%SB`EK)OT&0St6c6F5 zkbSj=5AGGGtI#mF%ljjjFLnF;3_7PWj5OIW>*^wvX)42HJErG(g2hdGjxgOqof`kH z+^0G@lG)kgv$*ASlKoa!`s8M+i+T05^0&KkZa>X)#Wc_BI#hZ3^R!lUhD}p{y3KPe zR1a@pZ9}==p(gL}q3D-Z${qE&s(xCPQO22(0QA=>5)aW)>(6 zTZ*sLo8-|poLO(mc5R+YJviq;o={@k0q0pnxKo0;d39j|#(X53fy!cc#Ck*odso83`6dN%vjbGBZ$L%HXn?Brgw-TFFIOz)NUJ9Rrl#mAt^ zp8(bUH@$4XSN8=}IX^?CYxQrNF4TdS_&Iy(z{O98!7co6j`mvm58TZ2AJJEunInWaTmiktiRKF_I;9DD)4?y36 z^YiP`TQF<7v6*QMt6F`%|JbeGfPq_Pl7U~4sEp{uX>Iqws15VmWi|1;xgdW`mcyga zhi7q-%F0%T{o(57X-*}$P*AVj1m&J}x*DG=h0J%qg!sOstHaERO~OL=v^V$6JKSXF z9AW&1BmGCRUa#SW#UXR^ze48adA9XeKM^uNAaUunRi<`zNAriUjqOeLu}}~`WuD*l zHvR+3cKk87(bx+8{M%UesPvDJsXI4hHm=03_D3cvf;Uep!)Zhs{W>H#vuHdUs0gzM zL~GMxuD$0Hr&AKMLP4k859N*}y*jC4c;~<&p#tODk#PyAXxQ%@qcqcsFo-3$Sr`g^RcXLo3nupp#1(?0Vmaz`vQs%#Sl&I~Ub~E;Y+N?3ySef{3+-OApFm6_c zlPAADr>w}ro9V%ATJRwo7S)=-A1;%sm2sgiEJ)3JLtVyCwcjnZ4{EsYoa=-3JFxT( z=j(NY?Wf@F5mmGKnYFBIY0F0BVBU394axLN&zS;d!syB>jsP$X#HT zRH1$P1&PfSQ2HHCKY}|3(&fTw&TE19TA zGygyq{F8nlqEeT^xbKc{s46C*Hc%R>?=y~B-|um^d)Rgb&r`YClz8%ITk!KxZWWZB zkD%;)1!ZUEZ+8Bu`+u$eHq;o=XOq>3LZu%ImH!whmxQXPTyX(kJ!taWpu3Y?;@(5f zCH&H5JcRiNW!m!OGoEvIMIDncXt2{WP=i($sv?RluHA$3*+63z%SB_>*ORIlgV>iXNwN~E; zYSXl;vppPv+BEw>UDb|t`jJ6A+vLnvY#Sncs7-Sh+zLJlwJ91ryD8>CZHnt*Pk1kk zz%%M?*S`qW^;K;_jm{bMNm8=%s+ z*_x9TWjJ_iJ1+bMYN~Ul(=UL^@EKIPAE5@As&4l3uP2l~04m)@Q0bOH9c9l#{!h#Y zPX8P#UE7{5c%j}iZT_+a5J6u)(F)`0{sQ z^iLFZc_ZY_({SbGYqo)FwcE8P_~TA7ALt}0>(H{>XDKUB+#yEG)T8^Kl>9^q+lfZ%F+Y%4S>MzpJrldco{! z(b>p38wD75Hs(ON8=$&xfeY`YK|3?2%G`xCIjyV=BSV6#+|!ZD^V%k1q$wTAocK{q z(^Q6Sc?lF=#$Uq(ZvLn>2TiawtoB38SjbVG7b9L#hR%}h|-{`2^&7T)ZCy~yi2N$18*PN&A(i^L=^6~=e6Etv!5 zZg9Fy?=fLizNpNSzSzsA-=nupAK9kjj%tAf>XxKydK#+xGB9Wz)NY=Gv9{Jw0_xy8 z1uE`bsI*r=<-Hloy$NNz@ub6^9dEw3!^riVEj*9$DA!m@d?=K=sm?!UG3yDc`=X@F zx3uvaph3Zauts| zZP=PmVs?+0xq-p=v- z0fl~*3k5?!P}@8SOZVG^Q^_Frpvzb}n^q!Sc%e-<5y~xgdS$xE^R(cfHeCahTkiBN z_K8$*Hz-a9b+vht@#t!s@l7Z9HxpF+N^^vvZjvmPg>%2o*W!ct_5LQAQyp36ouM7Vo-Z# z9A?k4X7W&b?W<66YoOA81(o+VD7Wh@|KufJr@yJ3@C&x564;STLZwPW<;_6Z%EJ8F zwwxkVIp09V{SKAZbLDh%?K6cPv!F(Gb!nUHny0?uH)z^hdp^UDMZFJp!%pP;L!Wo#l$IE+xl^uM6~k zdPuON>AdKV4+&-~D%Ln)C;M50k3+d1``ZFrZ)f#ip$h9f!0JapHTWc_p9&Q(m%g2o zak&hyE2!3asKf=wqNBOPo_vR)&f+7EQK*aigwydFO;aS%g94zgEHjQd$2@GiJ8RvE_IkGGxPg8P%YINb*7!emFNBE~=!`6QIvYoKk? z5~wDHc5=f4l-?<7uOs?H>3c(}o-!BWQ5#={YTFl37bvZEw&5A5B0hp@>n11zhYYd> zPlc+;qfmYNjtl?Mh5rh*$F$qU=Gz`B-FcAFlCSIHk%3#GDzXT+giizsxF~h;N)x|3 zSfDK!u?*8XQJyeR_*5u&j?@3+^bef=gVXoi)uyjJoXiSNxZR<8J(SBjy%+xY?OdTF znZ{yxXjaLvI4T#&B0@B%~R-@w`b_2Lu!yr;bO!HaiUXEy50#$cFas>1dz+h~`q!G-t2WN|&Wa*!>D z=5n|{?rE=6@K!~^l@WiIc7JM5wWg9+?jESJWYc_7Wx66;+AN0$HtkOGA}28GY~D+u z+?!69t-^a%W*t&_nb9PSG|@+^%zj8^nkHegb1%1_kcu?BHwoP0EGRe$ic-1sTwA#{ zP;U4&{_9VBqk_sOh*zT%uG5oH+e@yIkxOmf#nxK~nbIow5^LZXDEI6o{-V6AVBS?Q<0_c_lM3c$+WhyQXY)S;Rgs@BwtBNU zHohJzygiib>%x0U;ofUUq~a`)`Ll{ZdxjlM!6*FL&v?<`F^rO{Ud~l7593@5sz3e> zAu5c;vc_w^ue%_&*s=JHrWQIOz(p4^;w;L=XwzKJ{Lb*{LY~@~na%Xq4 z@pGZv1)a;+(phIO$z)N6+vaM-i%{-cr}x5N2r=j)%XQw5F8@wdRc6*xR+s-=q(Qni z-l`Tse3LN#peyoiq*WxtYY0t49gDa$!z; zlB=x!HBhcO_Lct%S8iLr!rhfweXSbH8DBj3m-;vJac|gs7ecv}PS=r>zRKFqK-tP( z#buZ(mvaFH*fz>nr$c*~;K|r%$H4G{3(A9YcDNnDKZJ5$K^c2sgw-E~Dy#?<&ZxyP31_$Ss4)_-PQqB=9I3{xDSd>re*AkGA3Sp~CNj3V$DJD@{AV z>d!&BwqtC%PEhVxrw5O<`JYYq+P90j>(V%ssl@gED=)ii1h@Z)s~I3Wed;R zEjx5skjIRNYJd6fy1ck|n)He*aN!Vs%BI^7$|aoM3x9eEcLb0X%NfLi$JuyiiuWNZ z!cSm33aCZ;9ApuP@966Zx!T=E#gft zB>G%AUpdSl_lmdM0cvcH%4c)7(w{)NU!i&|{E$7Ic7!^-ZiPDho`5?1-iF!~t&ZLfM= zQkhmnvL&IiC!w;Z9WzixXQAHh>mJ(nPuF6I@DOS4BKzFL|uBOI3}R-B%$)8U3dn{cGiXG z9P^F^$c#kF6s^aUpb9XH?OaG0s`v=h)I}5q6@X#%IMf_U0_tvZ61InFsC*fyd|9Y` zIjH;fdDwQ>wr1Bk+p>71zuRkWaLDmALpWm_dKi>Tz@Sl3jl3MH2k&wEVkq0KuD0oR zfZAHCoqo<-`^3w|P&>h$PJa+8U;Q;fzLXh&M}HEVhpNCN->&X97piKP z&(kt+oH#-0{co`P#ZaB`tkd6i`lcH>h6x{f3ky`jyP)(hVLOf7zu=LUAA@S)OHlb&L+$AwLFNAzD!;jnm*pwnw8rDX z?Gyk9LmAi)%0Lo!g!7%g26jSU4`uKtD1$9-uM0MFJIEbpvy;<@LfPv@Sm_%cKP{C{ zF;h|wMi#nrPWf*^=1F(wn12YHz|>l0zTlBfdx}|EK(JW&MlsjjQf5xiDPrJI&GRY~8Tp9+O5Pu_ck6C*!y=wEn z4;43r*%-MIP_;b>D*R9vew+*cvx$r1D{kTf*)71>eKy~%P;M{E zQT}mI?wp1G-fwxMf}2W7m%rrln`M9Oxa>97-jb}%zXHl$AEuw=c7m$s9#G-?xbQ>n z^*?#b8xYKlWL-I7?8`-9<`kRHOIkaKZA0S zsW$&nQ109l{RjTzb`Vpr{hx99v#{WvQ9mPL(+{6w^Us5Fn~t;g+jglkZN|5XYCA@q zor1Gdgle-{&UyYpHvPL$7QTYSwKBipk!v~5KYO)%vm)UPMaU=@gOO3zz;RIS3@GFG zxbR;1qx)5vG02w3QIl}emADLTRb6F978oYf|k_j05#9jv70OfxA)LteHUmx7hPkyiW1Dq0n?HVs&41|KHh%)jZFP^09|+}kbl0oB@aMR$T!}1yjaKXL zj+t^p%N6z?WTCY_`Xs+)GgAYCf>x5h!;zRQ9zl{4*DR zB-PPr)AfGneRpTN7mVCfB8u^#S1etW1i`#_}`1=Y^+tNdTycVkf8*^QE4E(XIdSv#Yk+~F{=^Rf-! z{B(WAd}G?#NswQgFbS0>BYV%^96 z1FyC&d@s{Lh+Au;OIg>t{J{rS3RQWYuMJ-Cd*TDGm9#$=T|b0%4Tg(A)j8@IbBx1S z%GPg}i-M%)Td4YWyx8jfpz@A@YVW5`-~JLCKN2ea36ON#o9pnXLw3K^W^8_$?TEXf z41IsO%^1GIKey-&2p)e3zhQT* zv}49G>zIR?6Ro*dq1=trto}HZTMbps(@qLhbL+{r-ETp;9Zm_-@4IPdJaV5xwf6#! zFu9{owe9^L$}O61cZmH?v-$$pK0p7V*DcswN!N_Lt7ZYJ3Pq?cFF}=H=pF4+VW?d! z0=3IU9b?cOWSes!l#7hB%^3h?YcQ0pJt4MI<~=+zW)8OdZ#&o$wWrhfgStEZiqrK8 z9i`s^sxk*a89W}Ufb*a#e>0SO3~K*)8p_UEs7m)dM0VKuhT)N+BcTkP0cGfFC_@XO z+)5}zpFtT4jkkvOfvV8aPetV~U^jC!OQAS-w zHOc7Luk{87&t%0`@!Z;6SHLy4A`Sju*LwYeT_{bo%1&z+z-6EsorUo$Y_?5MZoez7 zemIn?y2{pn8z{F6l&z62{Ad?G&4s63_;ZjBZfCx80Xga?_mtmpojXGFu3kA;ue_^Q z0cztEU3kgSyl8jrFqDfx?Tt~Gz1G(2u-^G~RHKH&6!LACh_i0$!a9Ukoot**Cw z#z9cK-Vsn6eg>4g8p_bEP}RfPgnT}x0!nU!`TCJYrGag4&&=rJf4U&$19J)VS1kcMIOj7yM(?a*^D;@fuB z%_9JJ3RFAOPCxzz+hJ$kZ2Re2sLC&fa<4(9Uk6pGjW9T5JO0yl)UHr&JXFHtp%R`2 z)p6HDwRQ=Vdjl%nr%>ry-C{es9jry)6KWpgZ&2;+daGSMr4Lju> zZ`=gsmO>TqB9wvdSWX1e9foWd_7<_`kqkvCPL*q z70O)>mG5epQpWJ{Hsf|s8Am~7JQgbBEGXwgWn2rJq5le%zS9Xd{Vq`H<52D-sPq}A z^!Gree;&&I$0wM*gABhBAlJFUX6Oc$VOOXO~Ubo%E`FC1tygvSOM%s>4{zi{H;6Ka4!8OVP%iEC z^PN6sq;1Cuu!{H%PTz(0%8hgF{u`u>I&+tc$ot2A>1F!02o^kz*E09gWl@J{^wR2} zD%EjbEJLPICDDG3I{KB@rS96xSsYLQFUBADm3K_lwU_%3eC2iZi(h#iMk&9larop` z<|||o`NbYchhtlr*U{x_Sp(Ih3615=CeBBGCEh>QANsYockf19XB^kc+=jIOx25zR z$D_aE-}trHWA8>Au@hRE%NuN0W?-#8i^2Iu8!qA73~H5ZOt*%(aeuez#{J#@@oPS= zsYVrpn$b;K_P}+oJxc8+P;?jM=6$tOHFf=iqq%9i1#|wG?pl|(_=$#<&CWluYkgha zr=Cd?KJOFn>RugpiT{bojek;fqsh^qdj8WNw(i)fp{bpje`06C@IO{<#R)bnhn-hj z)^|K`1$L;*=1Mkta(`m5L&F~ph7)#Mhu1rU{n!7w!5H^P<#c?B>g4FDHna4ZgrxwrIvnSgI7Af=lG@LZ;mxz+H_qV2ROzYM>{4R=Qw5^mpZ=e_>N`DeC-07 zePs)XI1Y0h?>NnIj^izkiydEfT;uq)W6jsrZYRe9jNZl z;}XZ`9p7>M((!l4x^G;;j=dd+I*u0gH#WruobPzOW6p88<7&q*9e;OhSF!~~90xk? z?Ks}?c*hxz=R=imZgv4V$LAeaJAUH0(XsAZ*D}W)9EUl^9glaM;drUzosLg^>jmYT zmtDX+j%yt^IGXQVfsTC~2RRORoai{k@npxd9WQsh*>T}_dsxFyxPX<8A31*KSfv97 z*TJ#R_ueDRHh72CR7F<%Rlj@vLaY4&7UM0>{@vT1z(v1%1KXK1+r;$OwAr2c$alYc z4_1d(KXQ9j{Z+N0x<>}Ju5S}ct#1{i>);r6Z0%U%*v!#5Zv52dD><%rTDb_SwBrQFM*Cx}o-!j{#4yLGV}Hjk zjx~+!NT;a&KpMrnn#x0O{;Y%HJ0ofTBxPYwVJjaY<+A-;va2)Lzb&NRH zI2y-|>s&=0*E<$P9So~oK*4c^W8QJ8W6p7b<2=W-W709<7!-j0xYJ{fQO7QDq;}F8 z7f@PjYr5L;Wyj@?ImbDUNk{*@-t{|O6RF;#+2A(yF=^fYUwwYAcYTc?Zd<=qb!VHk zLn`^Dt%mv5GX0%p4CBEu)ou&cS$)RWHr-Npj4W`>Z`&-$_y0&%`utxqba4CB$j@zo z-JKqDy56Ig8|L(_t!f54y{FT6aJnuz<@y9VyF@Rmn{FaO+(HUDL@Go!)qkvD)b!ZL}#k zy_?flIGu;n1DAKYF23cKI$dWjayj&rwsEIG<=}J)^z?~b*6F>iYHoJ=Hcp@C^gd3% z*6G_i{c@-Gb$Z(ARxPRR{^RZIpKsmC?o%<*|MsW)_I|cQ{Us@OQdKYFnA^|l|G!K* z*T>mi?CfsI?Y9irQg1wVrhnb)kvBTl-_@cnvc4{;a(MkC=Xa~WvZa?etTqUUiGJI$ ztz&+4Z0laZ&m*_?sXwy1d2|YSwuowx4lDGLuePh-GxSJ)yZU6cU+Q1KtGcYw%{riU zVESgqg^sHn*E;^@7#(lZcNk;Y$MI;#Auj%Ar!RC|?)V;TtL+hU3FD%FP^7-gBRdYP zAKZ+;+sT9KZw)ax^-P61EOtd&f6Bufa2`^;(`&LardG(TV()z7Dledie=+aeQ(}eT9rByaao+=e%q7L{A>$BMtb)703kq;)lpc{9*}- z;un8GBKY~AX-nkV!8iR@I8Pxh)7aX@m(Z=zX(s= ziEjLa*PmeH8n)v1$Q*i0{1usjU-Y6Bg1>TIT&v~FNCO9bUS1IE*RxDL=J`r+ivVTwnN#Lt34BgtRNf|tjWu#n51g`0o@K~P9@Fr>}c@96Pc1b zlEUDJGcfcYjKZNbW)A)s9CZchxpS)f8M+m6^t+^iH(txO$FKVXJ(==Ob$E|G9M4x- zcB=PD1P{KAYav=txlYxd%$Wr{~ zG1dY`bY!J6cusqqF@F{{g3lry*fx4C{fZ|zA|7N%gN=*#iN7K5vB|`iPcly6uYBuW zZ^ZA5q{%DJLZ;yt&qt1yP1x!wwttR-^%(kTNCPcS!+oA6)3vk));`O)O$I%a@G>%k zuG8c0GnO$dlRg8NAUbr5@W04}Luuu5KJJJtFY?C*8`oSHrz2W#efn|^l|IjL*r13z zAT#lcgOLXOF}M=ZCMduoU*Nf0DqUE~x#df?U_F3w#LL`MpmGT~^4}D|AsUC@AlK4E zCD^$BfVc?hlA>kuJc-oc&%=JN+VQz^@kK4ncma~eka#7M#GiqUUqcpW7TD>gdI8VF zzY2fl7nL6-Y{qNkAzVzI$Is151m`1KEm9ovIzuLYaRd^>ABSfnL-42JJ*3^8Y>rhN>QL{{w&l3K6-~%{O*0y;MX%nFMmkO-XI(<{g};(U(Zdw@+tXWCmbI6Is4WWHWNJW zE4KfJ8!6x`5|!A-_zQ5x_cl=)ev0V7palDDu$7C#TM&h3q4$IJYvKPNkiqOX=11;F zAo?fN@)XY?3m(8e-2NvjN?Fkqp2meh#nX^^M2P1gb5uE)L$rsBpCAzm5Whyk_$wFC zs9bbI3vFDDBq>;Y3Q6D>Uqe!H6s_p79_fR>1hs_e;xutm(-5A7t$$}M!KPliT8Io`6X)S4h#FJ+o#X%LO;$<3(Iyl` zl%J7fZzt?iWCq($)RO{J@Hcs4fUw4=1;l5N_3wBAKgGWqzxW%n9KWdw@yegdN^x?5 z=g#Vo3BOBgU@K5K5`Z9?Wf(xmcu?(a+CC^`7tINkZva19b1uJCbIw9)y5R=hcl z)ogCQpR(Y1RxR#>KQSv6GBf|d_F#{#Tn1UoA-|9GCtO^QbirS_q_UP){ug2h7xju_ zX&!~a|6CX{Io^cS%0L%hO#X#50Cr~$Azf=kV6c`@YAHi3$_!)`iNqAL9Df>)#Q zJDXyMf3g!{RP2fT#_OwEuW1$1fed;<^n_b^@ssc*yc-DyCD`}?Z{59B z&IjRPx6#}9#iNmi*EIg)(bL04x=#Gty}b8Ypa9rnVaQCQFfA^%9Ql&2E5KLpr+a6! zIp8}Fgv?UHwW3v*hiIj`7dC!!r}7gy< zLy5p5q8+624Pd0%`Dzt6t+!#9z6f zm=+eB`X<{yMq%=tiA3>NzM8C8m=FJ$Zs*NtaWe8Ae(^-)TKq|P+ge*`Jw!hA69z9f zpPod&VLdCD;m^XKkzfwsvyeF(*>EpA<7XWI50n^s)$OoxDRuFhO%&#P0au2q%**&I z-?XlH9lOcv+Inq!6*7U!iEkq#@r&z`!T3czYv1Ro6gv@~#)t03Daa1gT6_cPhCkno z7hw>6V@I69(`Vi2Qt>RLHGb2w$}C2LD`mJx4KD=I${5_6_t6!u_tg8=Rhch&uU_lO z-KPb+GbGBvr&{sCkVY#w!sCT>&d=lUR73@fL+W{p;BSl>@E&A6{v2G5D2;eon<`Tv zT-3*?^7zXirDC5T?2Iryz}K%*@|=SdQPS`lWc>iT9o~(s!Y^*ymKNX_2O|sdi@PB= z&*yYNdiF{wlx6rSEbbjx3}? z;&kL@{NhaHa#a+*gJjt!%1aS=!IA|_dR3XVPk2Ur23dt)`~aDaUyBS5-G&C=L#4M# zRhbw1@C^YXD!&7uZvL35zK+m!M|LRu;#y=ee(?w7PW+WC zL}&$x5j*i11`QL(AvO55B;$)nj@B1oYFgCpnMv4gXLh8=8HnHzMDsl2$H=v05Z58I z@h1mWnJbVT5?;WTgIQ`3zgUlKn8bdtYnADRtj90*+Kru2ez+Zyo5c7Z#d8pHClO-1 z-6;US*cF+9KLQ6M)9{P04yiK3@QbUE9q<=n^&ae8_{AHCa-J};)5qFM=i!ip*#2rk z49^rqMl_JQ#Ty zzt#pijP+#aEv5Caacx;~F|w32;?u|i{QAnuGTvJ2pi00)j>qOJGLzPblaL0r45kr%BS8$!#29|D4KfRV81_SS?H7gnJAWLW;QUE= zvGZr(eCN->%jU5C^N&!wIpt-1wVdzQ$hCBx_%kvazgC!PcWITGLwYS|b?#io@Fi3Z z&b@|K;@3-$|GJlb=-+fTY+P$g9C#l`6KTXfkjwGM?&J7>aUnZ{GQeJs((0Evgka-h zUgDL=OfrZ!APp)E-u@Un7wPqy>NC7@dgn{nfsKoWi352Rc7h6qdmtlKFkHE&$|O?C zfM>)97@|w{QKDwWDicxn!sWwh zxCWW6H1M&{ZQjaPgZ1k0lV8v<8Y!+ohN!{t-YUuJ;VW8AMCBXHdZqcAui3^c zIT?YsAO-wcSp5yhH%CVpevSl{hK=uFSH4DF`I@y}!QOz(#*X-NiS0iFYJfSD*In$ui(a zlU^K(jKv>=i;$Eu=keUwj0iGkVdKYx#SdCmnR?hj4qxhK{RMbn4;Kz!>gmGafxTQf{Ae5dz337=zpwRYVDHp+ zR*AxAx3~TRoIKF_lkihy{kKe)!P|GL4$cE|a8lIz6Yw!a)3SNkYG=L&&5#_1?FUr{ z=MWM2w_U5v%WQ%qJa@P1;94V<#&g#0)xn=i8usRE)w;B<{8F{PV7(s65H9|Jr16_! z)n4v}Zi`e>VcDuc+%@p$fpR&$AuF2~E|3}#vY%u3dN{Knm z8&b@vq-0pjNX^KWnPQ?%LnXtSibYCo85tGY${Q#t=RFzfR8msZnW$7$tEeccmSRy- zE~O$R`##@nzwhJo`TqWR@qC`^I@fib>zs3)A>byAyM^(eM8Qm9Ffnm}a4cy}k8R_y zTe&zcyoJ=^LMy4pg=yB%4cK4~DQCOzN8-VStN3eIH!gp0dx*&Q0lwRu5$aD0<&7~) z{v7sd{*+aA#KVb1w#%QlE)H+ch1*EmB!$g)M5x?vW7>Gj7{(j7!Z*lf+ygaZ>2_Rr z@lKuysSocN&(q}mj(_7J-S1*X^6$NPSWHscF6@{Vn#o<7%c1jAzR0gjYN26bXyU}cwfC`|O2x4MqzL7} z6W~T7cfT3x?`Lwcy#iKD<}nqAr%5f|0H>wXOLzu+l*q(%z`caVIT@=6b$BY1f#1{k z;8#Q{1)=AG2sMuF!rP{W?j{x9I-MSn-|N7ai2P>M3un)up=|fUy$>?pG_)K>*hA;k zz-2@}Pd*>EpUL=3K{Jy_h{$463FppYB5@)Ye3wXrD&gNm9Y1q-Up5(($gt0e=c)^?fFh*Bat1Oq5R!+13T(q$E;9S%b!EvNMtON z;VB}GZh(X5MW`m~Ti{G04b6m~6Zu&}ExbVF{LQd$Hg$fWJ~Yi|{NS;Qok0)z7VS8G$A(-xibqqMiQu01%D#Rase3oA~PH} z!9k?0zIY)kAlof)6_E?b|9{v`q)sc0UlDR)O4x>m@Pa)q=xOyFnMdJ5yIa}S6+aW^a_ zR@@7BlT_RXkCJgt3ROtgvd{t&2iJ$)3t!*CM7I0k z^gRp*+wCxZZ>XWd?@1xs1F&0pc&_vfE&Q=uz*M-Dn8^f{wOrWN$@2iH&f_D z+I<|Mx==|2XA{|x1&4kbp_1611V11dcq8c0=yhtr93H9PFcAEZk|tZIQLe+eBBfCcBcAa#U8n;3IE6R!P@6%+TsFNqA3 z{d|PlKoa?`X*2wp$O}~y92N|D65K`7s8bc>`G5BJP>b?mBgtTgu=7Rk67K>hlRP{f zzDA^nN?_@qe2>6(;U`2UvL9Xwdn=stH$%wwEVzcqaMVNZCBBzzWc?TEc9}JrN^#KK z%1bJqdL=^LPvn4fxR}U=b730`eAvLd#WRVrVb>Uqs%Co}EF{t(;gDF3s$+Ww z%b2a;@BYcHOudId-T@!K_JQwyRnAkmZe&Gqywg$j{Jv2_`=R^rTG-@kp z!As%VUfj(&x(I4|(~W$~B{W_a+HQtF5fgP9VOd|^a26Nxcj}>+S{Nh=Y`65&s9i)R zqZi)YKjc~cof@^BLKWXaRlz^5=L4%bpaq^Epiyaf5c+SRi*ez@7V5J=Wy4WJ_y~5k zTVc*n?j9FL4+}LS23m+rOkp)2ELKJx;o2KDD#ghUnTwH=M8>rmMhp)fpn?5}Y`4LC zMsNZSw!wRn!w%zb3U#UQG?5=%H^A3MYE*#wC2+2l-o>-vurVP|g3dJ)_?Uqvx*Cq2 z%E5Rld}NwN*>N{~i{#-xc#4$ZwhWDWm2Ad6@B}Ht{qQeRj;raMlT=E5SU{?9H>{B~ z@%?`Q={-ZEYT03d50ZM^0oRiT+zWpvO}KiHlaglK1~-ycsRJ8{=2wOc4zbg7xE1D- zF1QOGCGof)R?l>5R39nKWaBKx3KuSTNTX75;d3Md7nYE0TzH1$jkF3cp=xX_fvP2wgeGKI8I5S}Mdzi|ifmw610I9&Y*pH`0xcV{y(apA-BdA@N6 ze3s}jE4iC$CGG%sK{u(uJus$_1qe4o+X}`Tx5FhXncz|% zKK(L}CGLh9PB-04!2yd&3+{nuhzc_HaM&x%30(NZD&_<(Tuzd3H#|gAaqnv8!x}D* zJ7CAPTm(16pGg)TgdK~SE4b5)%zTZzkON@T>paJ}TE{9@!f?m|FzyXnjoV={X~aFy z`X=*$7vicG?O&k0%v~2+OUe>|2mMrNIXAgwS25mQ;7u^F7$I3 zxNtei#NDux44EAsA({&@ZOr_V-ok~Ck!0KjKO^IC;i9jcOehMAzS5|t zNG|S%-;)Adm{7-z$Au$^7q`M!hz}Q@J;kdTE<8_Ka8*x(zN5D;vSz^N0t_4OhS8_F znPyr4k+fg<27`hfrd?ph{(-|4mv{mBlNk$7bkM5mzc>+W?xs~Ke{+F2t$Ng~RX*GW zZT+-r(j|_CQC6*rzs#|)nl$5n_#0`(g;BTh1~r;i{;7owA#u1DCXUvs1YCG#td_s` zt#aVP zA0E>x7cT7S(DJzktdejZslXj@;X^v&F~RYi@V@j(ufO(yv$s|g~NzRu@J%e#Ec6skR)8#Ovd5L&D)h9b8A&P z1wYJug)YS%@LA%*h1JB33nO2p`*5L|RN}&Mqz1Ra0TVebf z=7h5ys~&Q=h*sl%*h~^|RjlRxxalVG*R<*tl8OsoeO;^4aN(s5%ywL8+^AIrxUdT; z#?5dRDaD2BHqq0#(7BZ_H57zBHq&a{0@srk+z-pPX!(hXCYIgYH$Ge&RcmQVXVZn)DIAG#lt@7YD zxQoPSV%zu;9)}ATy+b|R1xN0uhj1$#_bx+*JK!M_r)B#At?FON_?szMDz$3W5oR#% zf&0lMT=w6?hwu@yOv7u*V6lYQlwSL`BA`G$%5h zm?$`4%!f1xH^aexx(~O)DI^aUzE28pVJ-3C0r=#nj4SSfKYhid#e?wF*IHGm!{PZ; zTsWHfRL>$toK+M=%%lbvCXhy4m>=K(J-;r2H~+w-!i6Oy5f|D|({s2mNYZfOy=Uk- z*$&Ika(>(gzieVs$I$2|p8uyWav~#>0*<-Nr0c*K!+%J8MkM-~WmP zyG5!TcBr^WRnj9;)#F|me=P@ejcwy#JRKL_L9%h-MUsaLFA+Dc_+0fJ#Dn|bwY?%$ z1@3_n{UTK@Zh{@1{UcQq1v6YqRJYhRp1_lE;oAcuRT?flJ}^>c;=(7*c1OmgJ__%SKKg){GGEOB8r@#4azqzbo8j#OEs78h!!&`@01fwbbn z>xij4_2KQrj0>Gl@FkIga2c`U0oX!pxUhXX-HQv8hyxeiN%C=FfUL&V)JQerfk;(` zyWnBci2LEdIm|QMI+q*Cid2?()_;+_hZ)Owx(;q48Mqf7CfT@9H;;O_@R4jTh6|UI zYFt<`pIMFj;Af9=VLSkzUKpvGaW|Zl!-Va@5DS+w{(Y`x$I?hO_BqB0x4~s39T#RS zXPj{13nU*G7Lj6H_#r971F-8#o)%nq>njWaF8pORL(ns}jmc}cE^c)qOGy$1;ldJz z02e+*vT!$S_a^fLH^H|yGLvyH{G62H!mgVlRXHx4Mgq9-yHeH%b8H)XZ)Z`%h1F$@ ze(G`;BhIh5wK$TsY)BlMDC2 zi=+`(L7r*Sg1cbn-?_`{V%yl#!g%AtXa45J33tO@mzeCh(Bb@t)>3f5Mv{jIVdNDS zAY6D0DaM79B6O+@7tSVrT=*Rc;6eD9R;Plv3;r6ZQ!TjC>C~nuoznE-?&08Qor=Mo zB72QGl|Vrl-ASjcxC!{)-$NN9))jY$Q3jaLAo>9WK0!6ytX28?RHPxKMASj0+P;9d3d4Njl}2 z&K!dN$@mQB%>z2MmL%J0+%%nfYlf4_MZr5m$A3W3sdQX8aVA}a3$sWe?tsy=bgBe5 z!7Zc|_rmyjTm-kkE{`ygXL13!oh0C1cuO{SjN9PJ962w;?L_WbtW&kjSUdcZ)Z+oz zxTJ$P{tS<|6#~*GaN_aap48h2N#;J z&=9EuAH2f&Pom(Uzz<4QCT@ah5m71+_h_Qjr^Jm5|IkLMVqAEclu7-_DD@htl=^Ux zE=pD7RydW^;=&x#fD03&qEsuM7{%Kce@VeKEVhldXg-u37cL-4xNr+e#f4``Iv#}o zkSttSua8m=T=)YikUH=RDaM7T3{lF13%?~5PN{?ph@sWE1&$E)9`1mz zk$l_(eDay zG4_g5E$lEuYi|y^kp{tp>!MT)F6`Eqp~20tm?YsISV2;7;YpH;3;!nRxbOIC^cWDOHsfZPM^c6}^I?a9bRBMnQ-~cGzCm(u;cilZ3%?-6xbSOI zhBMRnR+~wRyJ0Qy;{n+idqb3}qhN*^qyZQ1B2BpPW1>cI09-$qvB!h(9!r#p!-XA& zGP7~vwZw{B;Dw|p{$_wi+!&=aBpVk#K%6-gM2d+U7uJx?xG-)w7UO-#U%v=sNiDw2Z> zyWGsg#D%?6XgDsMPs(xOUQ&$%{;(OaQb8>6z+f-hxNL?Jx51Z5Dei%4 zJ`KW!vmfQ+xKkvXG*EECW(h9*#=(TSnHM2=mYDG%oV9@Q!-e?^=}KJaCK=oJwkNI}DI|T&SL)hj3vXF{SXj4&!r~`M3o( z7tmX{dLc@UCt0|#VLa3!42OawYcyo3E;v`FLPpC*qg+SV$#9K zNdoSI9+Hd;4-hLZ{E$q-15mjcK3sSW$#zl@8Ax2XRW=egE?iDZ@HXOJ+zZ>k!i2(2 z@Fc0m{qWeU+<-Vdv5MXjhp|Nr9}y*CK`cdLEHn^yiL!EI}tz0 zry!iYgVy1~M@R+kf+M_)F>Zz1NdOm~+0Deng)JoJHil+TlzNxM<31R>mz%)Na12St zg{|)}{;3p1H2Zi|aG{yx;ug4&l;AFSmTbm@(6FCz#?9~wDaTC}QEKhGyvpGo_${fH z`mpN(ZdB^STS*-boytZbKtcEyX~l(!l|0|0`5p~UCT83YOGpath4F`2?Qjb$Il^Nm z+u>zWgDW48D{02vN2Am^(kk2EWAP!H+nu!fSd*37v6E43**AcBpbKGEhG;YUL*y$uPi(B9lCtu2>a5750LdtPf9i>K-D%=Iv zks4gM^?kYy7w#rO+y{Gp$iz(LJn$fi!~HO`h9?CNe8f@TQD z!2$U;Sh;W$TuQiuzmBNezCzC)^U zVbWP9ATAt38t^e^ol)vO3M~}uvXR7$;SONqk4!po82=L!61Tt%l8igx0g{RfPyWo} zf(t(-Id}lx{tJ&cF5GmUUc`k*NV$`OAJGRHZ`=g+f6`KMm_izH8!RS4TzHPO;KJCy zX!KYfEjYM^#^P3}+DEG-+yw2!hCAT$h-j683!N#NXyu?FoJR6-VP#~rD#nHHlQLY` zPscvo0@FziF5E|Iap4c72@gU;RJ78Ji*4h0ybCUTfFz7#{kJ1qNisWx-J+w_I9xb} zWZ=Sj;=qMN4Kx%Nei{?4Jh<=zslgSxX{>%uET{xNiJ@Mvq=FiEGNadu;!|0<;8_fq#74a>Kd);a0l$zjYi;R zCt@d29)!aOMDs=y^aQjIqH(wb=G;Jo zaG{4};=*==={ej4?;J+saNDqGr&>>;l!7oliLS(jxuhC*!LO5P93Fs0H_>&t2iix{ zxHK*dy(9+r$+nxBXt)V>9YrtVX7~(A!rid@Ezv3^jrHG-^cfwkQrTgFUy@8b026Pg zA-D}z-xbX-B4>03#6Ffy)@F3he zjT@Ul&%t&X3+Y7t{er68P>!}#EC z_zm&n0jL%;mbeKHB>~(DOGzW{g};zyJP2bSk5;X?8BQS@8`py7B@D5Xf(0pE$^wCV z;a_>tst{LCF+)iiZi82zrV+R-TAz_|_tGF2%l0!YP`D{ST8$v-xD|fz95;mf;rq*( z$hiG^Cisi=BCcMN^`9?g6l`#OA&(#KgIBHKae4%YUy?4k@adI|A1+)@thn`Mo(wmQ zz}?VGvT)%C#DNQ^zruxa;Ve@82O`3(H73?t|}>DqQ#-@#Dhf#XKFja1BxOd8=Re12N%2Co=anCIbZrjDMYlNE~X{ zabes9pC*O48(t=>WqV1qT1QH8FP!lPk1Otg>q(bK*$%5nJnn~^H?pY7c4*$j_~%ow zAP?=}M7RUKPR2b(7r{GsF`;l9EGAyr4tMTmw&Ond{vMun+z;>A%WCSNKHOT)&EQ^W ze}_4OJ7DTQdQs}^O0H(iRqk$7v}X_BYQiZiTUz z7_%psA8=GFvmLj=1*9AouKS0j6&J220o)6FY4s{Dmqx=MNh=UyA zdNqzhe>jn3<97IRlwRfI9(c~6SJk+R(W{Xr4qigz;G|A^<;U%CY-hbnTuS5MsjKuV z3lBm|SG_97g}2A)l@AwIkVf1YKo(rBSEfAf1{$x?t3J5!W|EBCU{!Y-iu++v4=#Xv z;9*k3n&F4dq!u?_t5@xM>Qy~%h4+$X+z#I(tx_M(HS3*9Gm)`0^Wp8i^eP57!JVWF z?t?S`tIMR7 z9uhu%12^^*D<(W*q0zW7NX9uSh+H*PuhMa$ewbe6;3hbXhSb>>3GRP_=l>FgdI~C+$BZ=N9@z0ox^6N* zhJi^W85fQwX}ANPA{n@C3B$LPhT>j$k~qZkIQLUD8V|zSr%z=kV zF*_Xa3fYV+7bhfM*$&r|D%=CrGu$<9f~%in#hk)+xNbR55$=T=H$!lOI?%C^r>2@Y z0f%p92ny&GnB(M&dlvs(g1xpeOL5^y;=`@7jregd43GxgT*`VtVjf~WfUlA+xKNeR zW4JJ$*l^)MV#lq}O&qvWBz^~vlT?B^#ElD|Af>p_wvz_o!dz01yP$`dXLI*3NRn`& zeiy@pTVXTFzsZM?t+7V-dc>Lg{3oLpoSpU^Uy}ITPx{)1bm_}N0JA9dFR&odM6B2_5V23}s z1KbSnA@R5!E+c(#H@rx4-rz3(VjUqK+zOu}rMU2L3*%o+;c$zdHws{K;SRXvUuN~2 z+$DUH4{7${E_jLr@gPjN-A-Rt|u(`WsXQ?tq&H7}TWQ)Q1U4G-wa= z3BGZoK~?VMSQtIrpz;rJEL0;5ssGnzR$whQ8+wj?ZP?83jpF6@;Xs&jp=laquC!Wm%~=8`<#UPJh5c)PGH?81{_7oH8f@N(FNS3McJ znDC~s3-1$m(o&Hn;T^)a!Y(`+c3~jw!pmV-OAM+zkvkR+54-T*unV)pE_^ZUZs^<- zE(kvgyYTO@3p*_hT|hXENUsPV4{sN~685!lci4qBVK+ZTgGf351J>bUn21Nm`tN?m zppKGK9WRTp-7>NqjWRYQ91JPWs^LIfEKP5^*bB zK$375+)Yw&`|}31;(5m3)Q=NU_<$r1WLYg>sU;2kD8>DPK^-D_{42)?Pm_E+2s^z< zJ=_Jik{G@pbic&>AgftPy|9Lq;EqD>n7Fu>Wrab_B;{Po?Oe$LB<)e2W7z&>?hH4< zp(K|dt9W4zDPzerziLo-6HNr$*YW~G>Uk{)!cIj7mBVX+8IC4-xCeef#_^)%c>^c$ zCawiz-(>vzP*Cd)Y5+;Pp4Pz!NDA(UO~iE%E%ndz{Cz#i^+FGGWS-(hJd^;xX{ z!3s|FZfJ(v;mWYP4{*ms9<2au4ZGtYCnU1n3v0sehnK?ctK{UQ?O50vcHd#<5RvWb zh=KS20VH^b3kx5K=!d*FLv55itYL-j3iX4p;d@dOb$zYS)G-4D-) z-Dy6?1&CC#!)0Oj!1uy#uA)nc)N#S}VfVtCum_<2c&LsEjtaXMeiQZpYz@2P1ig5I z@t2ck*YM&&ns}WSRukF&8N3{JVdsxR+l9K1!wxqRD=#WR823r&11qUz&-Gz{w7t7`{8c`Ov=Wq zVh|P#GAVmQ?Eabm#%^f0uhe*-+YYAKtZVtz{7c$Ddhm%! z^`nbAZ8uulZy&uab-S@$`?}FZW8OAi+rDCS(VVx9iS1t;U9|db;|BBdM_d2>`2uf~ zHphLTgUNrP!_?29*1=}{s@$Uc%Z&Y<>OCo%PP2)adYIbEQ$N55^$GbmcoqA9Auv6* zGIWX>yoW!0y5csb4+@0Jb<_=zvmC3f_sKQVKg2m#I!(!V4;~{$m&=TOdnR&Fhi8ZL zp(a#ex2ea0wnI#u!Zc`Q(XBg-U5(q=G^fLl9BGPu+gJ4CZe#BbMQznOYWhgM*L_9Z z_89LeIL=VVj>6P?B{?J+If%F~?;WL&UZtFR@_SCPX(z+u>!*&^O?3fwa z5u4Ul(WLEC^yDsM{EYr>o8_G8v4*x?>DtfRwxtg;{O>;L`KfY`Tz6{Uh|vDn4@1kES2R`+j(+=;AKpg!T{KQFOc4xTalB(brz%z#a*0)!W9ttyi-`O>eu~ z#G+oijoofY3T^tYyA6h}(ss9+(Ehd?tUg>cXSZ>b`TavOT*LljxVEu{Hn$DeBZrEt zJB(Ku%h~q-#;f8`XuLMJ)eDc;wnH*r^V?Tf7A@anyf(VHGBi}Kq8)pTW=87cJ;q_} zKS?Qy*lQeP9M*PdXr%tCEc%MUy}3Db#D6v38`{>^_^R+33lILEp;}tmHdLKbLpx#< z+bWv0%?FE?>@s$r(Z6kbXsph)dAfFQh=UCOyYIip>dXPTNP6ts;rfe0_5S~{I#9Hz z+&H8CLF@j{%Z(4VH*X*QpN~7;7+cW2?Qy>!G!_monz)~j!uCDvR(Vi;YF7Y8)vmoA6_)$h;d;1fy0YlI%2%3eelNp zCyr3jyky}2y;AOtZCAPjG-eDe+V~z<>NjwI-FwDS?c4u!eNngLJWD69FB);2hi2{d U`?HQ4f0)?Ly?=aMhkfn-2XbZn}O5SZL`jw+k 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

Z5F`WM4oLf|=yNz7G;TzQ0( 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 z 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 diff --git a/crnlib/crn_comp.cpp b/crnlib/crn_comp.cpp index 7e53f66..a8c29d4 100644 --- a/crnlib/crn_comp.cpp +++ b/crnlib/crn_comp.cpp @@ -841,50 +841,6 @@ bool crn_comp::alias_images() { return true; } -void crn_comp::append_chunks(const image_u8& img, uint num_chunks_x, uint num_chunks_y, dxt_hc::pixel_chunk_vec& chunks, float weight) { - for (uint y = 0; y < num_chunks_y; y++) { - for (uint legacy_index = chunks.size(), x = 0; x < num_chunks_x; x++) { - chunks.resize(chunks.size() + 1); - - dxt_hc::pixel_chunk& chunk = chunks.back(); - chunk.m_weight = weight; - chunk.m_legacy_index = legacy_index + (y & 1 ? num_chunks_x - 1 - x : x); - - for (uint cy = 0; cy < cChunkPixelHeight; cy++) { - uint py = y * cChunkPixelHeight + cy; - py = math::minimum(py, img.get_height() - 1); - - for (uint cx = 0; cx < cChunkPixelWidth; cx++) { - uint px = x * cChunkPixelWidth + cx; - px = math::minimum(px, img.get_width() - 1); - - chunk(cx, cy) = img(px, py); - } - } - } - } -} - -void crn_comp::create_chunks() { - m_chunks.reserve(m_total_chunks); - m_chunks.resize(0); - - for (uint level = 0; level < m_pParams->m_levels; level++) { - for (uint face = 0; face < m_pParams->m_faces; face++) { - if (!face) { - CRNLIB_ASSERT(m_levels[level].m_first_chunk == m_chunks.size()); - } - - float mip_weight = math::minimum(12.0f, powf(1.3f, static_cast(level))); - //float mip_weight = 1.0f; - - append_chunks(m_images[face][level], m_levels[level].m_chunk_width, m_levels[level].m_chunk_height, m_chunks, mip_weight); - } - } - - CRNLIB_ASSERT(m_chunks.size() == m_total_chunks); -} - void crn_comp::clear() { m_pParams = NULL; @@ -903,8 +859,6 @@ void crn_comp::clear() { m_total_chunks = 0; - m_chunks.clear(); - utils::zero_object(m_crn_header); m_comp_data.clear(); @@ -931,7 +885,7 @@ void crn_comp::clear() { m_packed_alpha_selectors.clear(); } -bool crn_comp::quantize_chunks() { +bool crn_comp::quantize_images() { dxt_hc::params params; params.m_adaptive_tile_alpha_psnr_derating = m_pParams->m_crn_adaptive_tile_alpha_psnr_derating; @@ -964,10 +918,8 @@ bool crn_comp::quantize_chunks() { float alpha_endpoint_quality = powf(quality, 2.1f * alpha_quality_power_mul); float alpha_selector_quality = powf(quality, 1.65f * alpha_quality_power_mul); - params.m_alpha_endpoint_codebook_size = math::clamp(math::float_to_uint(.5f + math::lerp(math::maximum(24, cCRNMinPaletteSize), (float)max_codebook_entries, alpha_endpoint_quality)), cCRNMinPaletteSize, cCRNMaxPaletteSize); - ; + params.m_alpha_endpoint_codebook_size = math::clamp(math::float_to_uint(.5f + math::lerp(math::maximum(24, cCRNMinPaletteSize), (float)max_codebook_entries, alpha_endpoint_quality)), cCRNMinPaletteSize, cCRNMaxPaletteSize); params.m_alpha_selector_codebook_size = math::clamp(math::float_to_uint(.5f + math::lerp(math::maximum(48, cCRNMinPaletteSize), (float)max_codebook_entries, alpha_selector_quality)), cCRNMinPaletteSize, cCRNMaxPaletteSize); - ; } if (m_pParams->m_flags & cCRNCompFlagDebugging) { @@ -1058,18 +1010,39 @@ bool crn_comp::quantize_chunks() { params.m_num_levels = m_pParams->m_levels; for (uint i = 0; i < m_pParams->m_levels; i++) { - params.m_levels[i].m_first_chunk = m_levels[i].m_first_chunk; - params.m_levels[i].m_num_chunks = m_levels[i].m_num_chunks; - params.m_levels[i].m_chunk_width = m_levels[i].m_chunk_width; + params.m_levels[i].m_first_block = m_levels[i].m_first_chunk << 2; + params.m_levels[i].m_num_blocks = m_levels[i].m_num_chunks << 2; + params.m_levels[i].m_block_width = m_levels[i].m_chunk_width << 1; + params.m_levels[i].m_weight = math::minimum(12.0f, powf(1.3f, (float)i)); } + params.m_num_faces = m_pParams->m_faces; params.m_endpoint_indices = &m_endpoint_indices; params.m_selector_indices = &m_selector_indices; - if (!m_hvq.compress(params, m_total_chunks, &m_chunks[0], m_task_pool)) - return false; + params.m_num_blocks = m_total_chunks << 2; + params.m_blocks = (color_quad_u8(*)[16])crnlib_malloc(params.m_num_blocks * 16 * sizeof(color_quad_u8)); + for (uint b = 0, level = 0; level < m_pParams->m_levels; level++) { + for (uint face = 0; face < m_pParams->m_faces; face++) { + image_u8& image = m_images[face][level]; + uint width = image.get_width(); + uint height = image.get_height(); + uint blockWidth = (width + 7 & ~7) >> 2; + uint blockHeight = (height + 7 & ~7) >> 2; + for (uint by = 0; by < blockHeight; by++) { + for (uint y0 = by << 2, bx = 0; bx < blockWidth; bx++, b++) { + for (uint t = 0, x0 = bx << 2, dy = 0; dy < 4; dy++) { + for (uint y = math::minimum(y0 + dy, height - 1), dx = 0; dx < 4; dx++, t++) + params.m_blocks[b][t] = image(math::minimum(x0 + dx, width - 1), y); + } + } + } + } + } + bool result = m_hvq.compress(params, m_task_pool); + crnlib_free(params.m_blocks); - return true; + return result; } struct optimize_color_endpoint_codebook_params { @@ -1463,10 +1436,7 @@ bool crn_comp::update_progress(uint phase_index, uint subphase_index, uint subph bool crn_comp::compress_internal() { if (!alias_images()) return false; - - create_chunks(); - - if (!quantize_chunks()) + if (!quantize_images()) return false; crnlib::vector endpoint_remap[2]; diff --git a/crnlib/crn_comp.h b/crnlib/crn_comp.h index 5c6148f..ca326ae 100644 --- a/crnlib/crn_comp.h +++ b/crnlib/crn_comp.h @@ -69,7 +69,6 @@ class crn_comp : public itexture_comp { crnlib::vector m_selector_indices; uint m_total_chunks; - dxt_hc::pixel_chunk_vec m_chunks; crnd::crn_header m_crn_header; crnlib::vector m_comp_data; @@ -94,8 +93,6 @@ class crn_comp : public itexture_comp { void clear(); - void append_chunks(const image_u8& img, uint num_chunks_x, uint num_chunks_y, dxt_hc::pixel_chunk_vec& chunks, float weight); - static float color_endpoint_similarity_func(uint index_a, uint index_b, void* pContext); static float alpha_endpoint_similarity_func(uint index_a, uint index_b, void* pContext); void sort_color_endpoint_codebook(crnlib::vector& remapping, const crnlib::vector& endpoints); @@ -117,8 +114,7 @@ class crn_comp : public itexture_comp { uint trial_index); bool alias_images(); - void create_chunks(); - bool quantize_chunks(); + bool quantize_images(); bool pack_chunks( uint group, diff --git a/crnlib/crn_dxt_hc.cpp b/crnlib/crn_dxt_hc.cpp index 5aa9563..7b51eb8 100644 --- a/crnlib/crn_dxt_hc.cpp +++ b/crnlib/crn_dxt_hc.cpp @@ -6,7 +6,6 @@ #include "crn_console.h" #include "crn_dxt_fast.h" -#define CRNLIB_USE_FAST_DXT 1 #define CRNLIB_ENABLE_DEBUG_MESSAGES 0 namespace crnlib { @@ -22,41 +21,25 @@ static uint8 g_tile_map[8][2][2] = { {{ 0, 1 }, { 2, 3 }}, }; -static color_quad_u8 g_tile_layout_colors[cNumChunkTileLayouts] = - { - color_quad_u8(255, 90, 32, 255), - color_quad_u8(64, 210, 192, 255), - color_quad_u8(128, 16, 225, 255), - color_quad_u8(255, 192, 200, 255), - - color_quad_u8(255, 128, 200, 255), - - color_quad_u8(255, 0, 0, 255), - color_quad_u8(0, 255, 0, 255), - color_quad_u8(0, 0, 255, 255), - color_quad_u8(255, 0, 255, 255)}; - dxt_hc::dxt_hc() - : m_num_chunks(0), - m_pChunks(NULL), - m_num_alpha_blocks(0), - m_has_color_blocks(false), - m_has_alpha0_blocks(false), - m_has_alpha1_blocks(false), - m_main_thread_id(crn_get_current_thread_id()), - m_canceled(false), - m_pTask_pool(NULL), - m_prev_phase_index(-1), - m_prev_percentage_complete(-1) { + : m_num_blocks(0), + m_num_alpha_blocks(0), + m_has_color_blocks(false), + m_has_alpha0_blocks(false), + m_has_alpha1_blocks(false), + m_main_thread_id(crn_get_current_thread_id()), + m_canceled(false), + m_pTask_pool(NULL), + m_prev_phase_index(-1), + m_prev_percentage_complete(-1) { } dxt_hc::~dxt_hc() { } void dxt_hc::clear() { - m_num_chunks = 0; - m_pChunks = NULL; - + m_blocks = 0; + m_num_blocks = 0; m_num_alpha_blocks = 0; m_has_color_blocks = false; m_has_alpha0_blocks = false; @@ -75,8 +58,6 @@ void dxt_hc::clear() { m_prev_phase_index = -1; m_prev_percentage_complete = -1; - m_chunk_details.clear(); - m_blocks.clear(); m_block_weights.clear(); m_block_encodings.clear(); for (uint c = 0; c < 3; c++) @@ -89,62 +70,14 @@ void dxt_hc::clear() { m_endpoint_indices.clear(); m_selector_indices.clear(); m_tiles.clear(); - m_total_tiles = 0; + m_num_tiles = 0; } -bool dxt_hc::initialize_blocks(const params& p) { - m_chunk_details.resize(m_num_chunks); - m_blocks.resize(m_num_chunks << 2); - m_block_weights.resize(m_blocks.size()); - m_block_encodings.resize(m_blocks.size()); - for (uint c = 0; c < 3; c++) - m_block_selectors[c].resize(m_blocks.size()); - m_tile_indices.resize(m_blocks.size()); - m_endpoint_indices.resize(m_blocks.size()); - m_selector_indices.resize(m_blocks.size()); - m_tiles.resize(m_blocks.size()); - - for (uint level = 0; level < p.m_num_levels; level++) { - uint first_chunk = p.m_levels[level].m_first_chunk; - uint end_chunk = p.m_levels[level].m_first_chunk + p.m_levels[level].m_num_chunks; - uint chunk_width = p.m_levels[level].m_chunk_width; - uint block_width = chunk_width << 1; - for (uint b = first_chunk << 2, cy = 0, chunk_base = first_chunk; chunk_base < end_chunk; chunk_base += chunk_width, cy++) { - for (uint by = 0; by < 2; by++) { - for (uint cx = 0; cx < chunk_width; cx++) { - for (uint bx = 0; bx < 2; bx++, b++) { - const pixel_chunk& chunk = m_pChunks[chunk_base + cx]; - m_block_weights[b] = chunk.m_weight; - m_chunk_details[chunk_base + cx].block_index[by][bx] = b; - for (uint t = 0, y = 0; y < 4; y++) { - for (uint x = 0; x < 4; x++, t++) - m_blocks[b].push_back(chunk(bx << 2 | x, by << 2 | y)); - } - } - } - } - } - } - return true; -} - -bool dxt_hc::compress(const params& p, uint num_chunks, const pixel_chunk* pChunks, task_pool& task_pool) { - m_pTask_pool = &task_pool; - m_main_thread_id = crn_get_current_thread_id(); - crnlib::vector& endpoint_indices = *p.m_endpoint_indices; - crnlib::vector& selector_indices = *p.m_selector_indices; - - if ((!num_chunks) || (!pChunks)) - return false; - if ((m_params.m_format == cDXT1A) || (m_params.m_format == cDXT3)) - return false; - +bool dxt_hc::compress(const params& p, task_pool& task_pool) { clear(); - m_params = p; - - m_num_chunks = num_chunks; - m_pChunks = pChunks; + m_main_thread_id = crn_get_current_thread_id(); + m_pTask_pool = &task_pool; switch (m_params.m_format) { case cDXT1: { @@ -174,32 +107,54 @@ bool dxt_hc::compress(const params& p, uint num_chunks, const pixel_chunk* pChun } } - initialize_blocks(p); - determine_compressed_chunks(); + for (uint level = 0; level < p.m_num_levels; level++) { + float adaptive_tile_color_psnr_derating = p.m_adaptive_tile_color_psnr_derating; + if (level && adaptive_tile_color_psnr_derating > .25f) + adaptive_tile_color_psnr_derating = math::maximum(.25f, adaptive_tile_color_psnr_derating / powf(3.0f, static_cast(level))); + for (uint e = 0; e < 8; e++) + m_color_derating[level][e] = math::lerp(0.0f, adaptive_tile_color_psnr_derating, (g_chunk_encodings[e].m_num_tiles - 1) / 3.0f); + } + for (uint e = 0; e < 8; e++) + m_alpha_derating[e] = math::lerp(0.0f, m_params.m_adaptive_tile_alpha_psnr_derating, (g_chunk_encodings[e].m_num_tiles - 1) / 3.0f); - if (m_has_color_blocks) { - if (!determine_color_endpoint_clusters()) - return false; - if (!determine_color_endpoint_codebook()) - return false; + m_blocks = m_params.m_blocks; + m_num_blocks = m_params.m_num_blocks; + m_block_weights.resize(m_num_blocks); + m_block_encodings.resize(m_num_blocks); + for (uint c = 0; c < 3; c++) + m_block_selectors[c].resize(m_num_blocks); + m_tile_indices.resize(m_num_blocks); + m_endpoint_indices.resize(m_num_blocks); + m_selector_indices.resize(m_num_blocks); + m_tiles.resize(m_num_blocks); + + for (uint level = 0; level < p.m_num_levels; level++) { + float weight = p.m_levels[level].m_weight; + for (uint b = p.m_levels[level].m_first_block, bEnd = b + p.m_levels[level].m_num_blocks; b < bEnd; b++) + m_block_weights[b] = weight; } - if (m_num_alpha_blocks) { - if (!determine_alpha_endpoint_clusters()) - return false; - if (!determine_alpha_endpoint_codebook()) - return false; + for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) + m_pTask_pool->queue_object_task(this, &dxt_hc::determine_tiles_task, i); + m_pTask_pool->join(); + + m_num_tiles = 0; + for (uint t = 0; t < m_tiles.size(); t++) { + if (m_tiles[t].pixels.size()) + m_num_tiles++; } - if (m_has_color_blocks) { - if (!create_color_selector_codebook()) - return false; - } + if (m_has_color_blocks) + determine_color_endpoints(); - if (m_num_alpha_blocks) { - if (!create_alpha_selector_codebook()) - return false; - } + if (m_num_alpha_blocks) + determine_alpha_endpoints(); + + if (m_has_color_blocks) + create_color_selector_codebook(); + + if (m_num_alpha_blocks) + create_alpha_selector_codebook(); crnlib::vector color_endpoint_remap(m_color_clusters.size()); m_color_endpoints.reserve(m_color_clusters.size()); @@ -269,17 +224,19 @@ bool dxt_hc::compress(const params& p, uint num_chunks, const pixel_chunk* pChun } } - endpoint_indices.resize(m_blocks.size()); - selector_indices.resize(m_blocks.size()); + crnlib::vector& endpoint_indices = *m_params.m_endpoint_indices; + crnlib::vector& selector_indices = *m_params.m_selector_indices; + endpoint_indices.resize(m_num_blocks); + selector_indices.resize(m_num_blocks); for (uint level = 0; level < p.m_num_levels; level++) { - uint first_block = p.m_levels[level].m_first_chunk << 2; - uint end_block = first_block + (p.m_levels[level].m_num_chunks << 2); - uint block_width = p.m_levels[level].m_chunk_width << 1; + uint first_block = p.m_levels[level].m_first_block; + uint end_block = first_block + p.m_levels[level].m_num_blocks; + uint block_width = p.m_levels[level].m_block_width; for (uint by = 0, b = first_block; b < end_block; by++) { for (uint bx = 0; bx < block_width; bx++, b++) { bool top_match = by != 0; bool left_match = top_match || bx; - for (uint c = m_has_color_blocks ? 0 : cAlpha0Chunks; c < cAlpha0Chunks + m_num_alpha_blocks; c++) { + for (uint c = m_has_color_blocks ? 0 : cAlpha0Blocks; c < cAlpha0Blocks + m_num_alpha_blocks; c++) { uint16 endpoint_index = (c ? alpha_endpoint_remap : color_endpoint_remap)[m_endpoint_indices[b].component[c]]; left_match = left_match && endpoint_index == endpoint_indices[b - 1].component[c]; top_match = top_match && endpoint_index == endpoint_indices[b - block_width].component[c]; @@ -296,467 +253,168 @@ bool dxt_hc::compress(const params& p, uint num_chunks, const pixel_chunk* pChun return true; } -void dxt_hc::compress_dxt1_block( - dxt1_endpoint_optimizer::results& results, - uint chunk_index, const image_u8& chunk, uint x_ofs, uint y_ofs, uint width, uint height, - uint8* pColor_Selectors) { - chunk_index; +void dxt_hc::determine_tiles_task(uint64 data, void* pData_ptr) { + uint num_tasks = m_pTask_pool->get_num_threads() + 1; + uint offsets[9] = {0, 16, 32, 48, 0, 32, 64, 96, 64}; + uint8 tiles[8][4] = {{8}, {6, 7}, {4, 5}, {6, 1, 3}, {7, 0, 2}, {4, 2, 3}, {5, 0, 1}, {0, 2, 1, 3}}; + color_quad_u8 chunkPixels[128]; + uint8 selectors[64]; + uint tile_error[3][9]; + uint total_error[3][8]; - color_quad_u8 pixels[cChunkPixelWidth * cChunkPixelHeight]; + for (uint level = 0; level < m_params.m_num_levels; level++) { + uint width = m_params.m_levels[level].m_block_width; + uint height = m_params.m_levels[level].m_num_blocks / width; + uint faceHeight = height / m_params.m_num_faces; + uint h = height * data / num_tasks & ~1; + uint hEnd = height * (data + 1) / num_tasks & ~1; + uint hFace = h % faceHeight; + uint b = m_params.m_levels[level].m_first_block + h * width; - for (uint y = 0; y < height; y++) - for (uint x = 0; x < width; x++) - pixels[x + y * width] = chunk(x_ofs + x, y_ofs + y); - -//double s = image_utils::compute_std_dev(width * height, pixels, 0, 3); - -#if CRNLIB_USE_FAST_DXT - uint low16, high16; - dxt_fast::compress_color_block(width * height, pixels, low16, high16, pColor_Selectors); - results.m_low_color = static_cast(low16); - results.m_high_color = static_cast(high16); - results.m_alpha_block = false; - results.m_error = INT_MAX; - results.m_pSelectors = pColor_Selectors; -#else - dxt1_endpoint_optimizer optimizer; - - dxt1_endpoint_optimizer::params params; - params.m_block_index = chunk_index; - params.m_pPixels = pixels; - params.m_num_pixels = width * height; - params.m_pixels_have_alpha = false; - params.m_use_alpha_blocks = false; - params.m_perceptual = m_params.m_perceptual; - params.m_highest_quality = false; //false; - params.m_endpoint_caching = false; - - results.m_pSelectors = pColor_Selectors; - - optimizer.compute(params, results); -#endif -} - -void dxt_hc::compress_dxt5_block( - dxt5_endpoint_optimizer::results& results, - uint chunk_index, const image_u8& chunk, uint x_ofs, uint y_ofs, uint width, uint height, uint component_index, - uint8* pAlpha_selectors) { - chunk_index; - - color_quad_u8 pixels[cChunkPixelWidth * cChunkPixelHeight]; - - for (uint y = 0; y < height; y++) - for (uint x = 0; x < width; x++) - pixels[x + y * width] = chunk(x_ofs + x, y_ofs + y); - -#if 0 //CRNLIB_USE_FAST_DXT - uint low, high; - dxt_fast::compress_alpha_block(width * height, pixels, low, high, pAlpha_selectors, component_index); - results.m_pSelectors = pAlpha_selectors; - results.m_error = INT_MAX; - results.m_first_endpoint = static_cast(low); - results.m_second_endpoint = static_cast(high); - results.m_block_type = 0; -#else - dxt5_endpoint_optimizer optimizer; - dxt5_endpoint_optimizer::params params; - params.m_block_index = chunk_index; - params.m_pPixels = pixels; - params.m_num_pixels = width * height; - params.m_comp_index = component_index; - params.m_use_both_block_types = false; - params.m_quality = cCRNDXTQualityNormal; - - results.m_pSelectors = pAlpha_selectors; - - optimizer.compute(params, results); -#endif -} - -void dxt_hc::determine_compressed_chunks_task(uint64 data, void* pData_ptr) { - pData_ptr; - const uint thread_index = static_cast(data); - - image_u8 orig_chunk; - image_u8 decomp_chunk[cNumChunkEncodings]; - - orig_chunk.resize(cChunkPixelWidth, cChunkPixelHeight); - for (uint i = 0; i < cNumChunkEncodings; i++) - decomp_chunk[i].resize(cChunkPixelWidth, cChunkPixelHeight); - - image_utils::error_metrics color_error_metrics[cNumChunkEncodings]; - dxt1_endpoint_optimizer::results color_optimizer_results[cNumChunkTileLayouts]; - uint8 layout_color_selectors[cNumChunkTileLayouts][cChunkPixelWidth * cChunkPixelHeight]; - - image_utils::error_metrics alpha_error_metrics[2][cNumChunkEncodings]; - dxt5_endpoint_optimizer::results alpha_optimizer_results[2][cNumChunkTileLayouts]; - uint8 layout_alpha_selectors[2][cNumChunkTileLayouts][cChunkPixelWidth * cChunkPixelHeight]; - - uint first_layout = 0; - uint last_layout = cNumChunkTileLayouts; - - uint first_encoding = 0; - uint last_encoding = cNumChunkEncodings; - - if (!m_params.m_hierarchical) { - first_layout = cFirst4x4ChunkTileLayout; - first_encoding = cNumChunkEncodings - 1; - } - - float encoding_weight[8]; - for (uint i = 0; i < 8; i++) - encoding_weight[i] = math::lerp(1.15f, 1.0f, i / 7.0f); - - for (uint chunk_index = 0; chunk_index < m_num_chunks; chunk_index++) { - if (m_canceled) - return; - - if ((crn_get_current_thread_id() == m_main_thread_id) && ((chunk_index & 511) == 0)) { - if (!update_progress(0, chunk_index, m_num_chunks)) - return; - } - - if (m_pTask_pool->get_num_threads()) { - if ((chunk_index % (m_pTask_pool->get_num_threads() + 1)) != thread_index) - continue; - } - - uint level_index = 0; - for (uint i = 0; i < m_params.m_num_levels; i++) { - if ((chunk_index >= m_params.m_levels[i].m_first_chunk) && (chunk_index < m_params.m_levels[i].m_first_chunk + m_params.m_levels[i].m_num_chunks)) { - level_index = i; - break; + for (; h < hEnd; h += 2, hFace += 2, b += width) { + uint tile_offset = b; + uint tile_offset_delta = 4; + if (hFace == faceHeight) { + hFace = 0; + } else if (hFace & 2) { + tile_offset_delta = -4; + tile_offset += (width << 1) + tile_offset_delta; } - } + for (uint bNext = b + width; b < bNext; b += 2, tile_offset += tile_offset_delta) { + for (int t = 0; t < 64; t += 16) + memcpy(chunkPixels + t, m_blocks[b + (t & 16 ? width : 0) + (t & 32 ? 1 : 0)], 64); + for (int t = 0; t < 64; t += 4) + memcpy(chunkPixels + 64 + t, m_blocks[b + (t & 32 ? width : 0) + (t & 4 ? 1 : 0)] + (t >> 1 & 12), 16); - for (uint cy = 0; cy < cChunkPixelHeight; cy++) - for (uint cx = 0; cx < cChunkPixelWidth; cx++) - orig_chunk(cx, cy) = m_pChunks[chunk_index](cx, cy); - - if (m_has_color_blocks) { - for (uint l = first_layout; l < last_layout; l++) { - utils::zero_object(layout_color_selectors[l]); - - compress_dxt1_block( - color_optimizer_results[l], chunk_index, - orig_chunk, - g_chunk_tile_layouts[l].m_x_ofs, g_chunk_tile_layouts[l].m_y_ofs, - g_chunk_tile_layouts[l].m_width, g_chunk_tile_layouts[l].m_height, - layout_color_selectors[l]); - } - } - - float alpha_layout_std_dev[2][cNumChunkTileLayouts]; - utils::zero_object(alpha_layout_std_dev); - - for (uint a = 0; a < m_num_alpha_blocks; a++) { - for (uint l = first_layout; l < last_layout; l++) { - utils::zero_object(layout_alpha_selectors[a][l]); - - compress_dxt5_block( - alpha_optimizer_results[a][l], chunk_index, - orig_chunk, - g_chunk_tile_layouts[l].m_x_ofs, g_chunk_tile_layouts[l].m_y_ofs, - g_chunk_tile_layouts[l].m_width, g_chunk_tile_layouts[l].m_height, - m_params.m_alpha_component_indices[a], - layout_alpha_selectors[a][l]); - - for (uint a = 0; a < m_num_alpha_blocks; a++) { - float mean = 0.0f; - float variance = 0.0f; - - for (uint cy = 0; cy < g_chunk_tile_layouts[l].m_height; cy++) { - for (uint cx = 0; cx < g_chunk_tile_layouts[l].m_width; cx++) { - uint s = orig_chunk(cx + g_chunk_tile_layouts[l].m_x_ofs, cy + g_chunk_tile_layouts[l].m_y_ofs)[m_params.m_alpha_component_indices[a]]; - - mean += s; - variance += s * s; - } // cx - } //cy - - float scale = 1.0f / (g_chunk_tile_layouts[l].m_width * g_chunk_tile_layouts[l].m_height); - - mean *= scale; - variance *= scale; - - variance -= mean * mean; - - alpha_layout_std_dev[a][l] = sqrt(variance); - - } //a - } - } - - for (uint e = first_encoding; e < last_encoding; e++) { - for (uint t = 0; t < g_chunk_encodings[e].m_num_tiles; t++) { - const uint layout_index = g_chunk_encodings[e].m_tiles[t].m_layout_index; - CRNLIB_ASSERT((layout_index >= first_layout) && (layout_index < last_layout)); - - if (m_has_color_blocks) { - const dxt1_endpoint_optimizer::results& color_results = color_optimizer_results[layout_index]; - const uint8* pColor_selectors = layout_color_selectors[layout_index]; - - color_quad_u8 block_colors[cDXT1SelectorValues]; - CRNLIB_ASSERT(color_results.m_low_color >= color_results.m_high_color); - // it's okay if color_results.m_low_color == color_results.m_high_color, because in this case only selector 0 should be used - dxt1_block::get_block_colors4(block_colors, color_results.m_low_color, color_results.m_high_color); - - for (uint cy = 0; cy < g_chunk_encodings[e].m_tiles[t].m_height; cy++) { - for (uint cx = 0; cx < g_chunk_encodings[e].m_tiles[t].m_width; cx++) { - uint s = pColor_selectors[cx + cy * g_chunk_encodings[e].m_tiles[t].m_width]; - CRNLIB_ASSERT(s < cDXT1SelectorValues); - - decomp_chunk[e](cx + g_chunk_encodings[e].m_tiles[t].m_x_ofs, cy + g_chunk_encodings[e].m_tiles[t].m_y_ofs) = block_colors[s]; + for (uint t = 0; t < 9; t++) { + color_quad_u8* pixels = chunkPixels + offsets[t]; + uint size = 16 << (t >> 2); + if (m_has_color_blocks) { + uint low16, high16; + dxt_fast::compress_color_block(size, pixels, low16, high16, selectors); + color_quad_u8 block_colors[4]; + dxt1_block::get_block_colors4(block_colors, low16, high16); + uint error = 0; + for (uint p = 0; p < size; p++) { + for (uint8 c = 0; c < 3; c++) { + uint delta = pixels[p][c] - block_colors[selectors[p]][c]; + error += delta * delta; + } } + tile_error[cColorBlocks][t] = error; + } + for (uint a = 0; a < m_num_alpha_blocks; a++) { + uint8 component = m_params.m_alpha_component_indices[a]; + dxt5_endpoint_optimizer optimizer; + dxt5_endpoint_optimizer::params params; + dxt5_endpoint_optimizer::results results; + params.m_pPixels = pixels; + params.m_num_pixels = size; + params.m_comp_index = component; + params.m_use_both_block_types = false; + params.m_quality = cCRNDXTQualityNormal; + results.m_pSelectors = selectors; + optimizer.compute(params, results); + uint block_values[cDXT5SelectorValues]; + dxt5_block::get_block_values8(block_values, results.m_first_endpoint, results.m_second_endpoint); + tile_error[cAlpha0Blocks + a][t] = results.m_error; } } - for (uint a = 0; a < m_num_alpha_blocks; a++) { - const dxt5_endpoint_optimizer::results& alpha_results = alpha_optimizer_results[a][layout_index]; - const uint8* pAlpha_selectors = layout_alpha_selectors[a][layout_index]; + for (uint8 c = m_has_color_blocks ? 0 : cAlpha0Blocks; c < cAlpha0Blocks + m_num_alpha_blocks; c++) { + for (uint8 e = 0; e < 8; e++) { + total_error[c][e] = 0; + for (uint8 t = 0, s = e + 1; s; s >>= 1, t++) + total_error[c][e] += tile_error[c][tiles[e][t]]; + } + } - uint block_values[cDXT5SelectorValues]; - CRNLIB_ASSERT(alpha_results.m_first_endpoint >= alpha_results.m_second_endpoint); - dxt5_block::get_block_values8(block_values, alpha_results.m_first_endpoint, alpha_results.m_second_endpoint); + float best_quality = 0.0f; + uint best_encoding = 0; + for (uint e = 0; e < 8; e++) { + float quality = 0; + if (m_has_color_blocks) { + double peakSNR = total_error[cColorBlocks][e] ? log10(255.0f / sqrt(total_error[cColorBlocks][e] / 192.0)) * 20.0f : 999999.0f; + quality = (float)math::maximum(peakSNR - m_color_derating[level][e], 0.0f); + if (m_num_alpha_blocks) + quality *= m_params.m_adaptive_tile_color_alpha_weighting_ratio; + } + for (uint a = 0; a < m_num_alpha_blocks; a++) { + double peakSNR = total_error[cAlpha0Blocks + a][e] ? log10(255.0f / sqrt(total_error[cAlpha0Blocks + a][e] / 64.0)) * 20.0f : 999999.0f; + quality += (float)math::maximum(peakSNR - m_alpha_derating[e], 0.0f); + } + if (quality > best_quality) { + best_quality = quality; + best_encoding = e; + } + } + + for (uint tile_index = 0, s = best_encoding + 1; s; s >>= 1, tile_index++) { + tile_details& tile = m_tiles[tile_offset | tile_index]; + uint t = tiles[best_encoding][tile_index]; + tile.pixels.append(chunkPixels + offsets[t], 16 << (t >> 2)); + tile.weight = m_block_weights[b]; - for (uint cy = 0; cy < g_chunk_encodings[e].m_tiles[t].m_height; cy++) { - for (uint cx = 0; cx < g_chunk_encodings[e].m_tiles[t].m_width; cx++) { - uint s = pAlpha_selectors[cx + cy * g_chunk_encodings[e].m_tiles[t].m_width]; - CRNLIB_ASSERT(s < cDXT5SelectorValues); - - decomp_chunk[e](cx + g_chunk_encodings[e].m_tiles[t].m_x_ofs, cy + g_chunk_encodings[e].m_tiles[t].m_y_ofs)[m_params.m_alpha_component_indices[a]] = - static_cast(block_values[s]); + if (m_has_color_blocks) { + tree_clusterizer palettizer; + for (uint p = 0; p < tile.pixels.size(); p++) { + const color_quad_u8& c = tile.pixels[p]; + vec3F v(c[0] * 1.0f / 255.0f, c[1] * 1.0f / 255.0f, c[2] * 1.0f / 255.0f); + if (m_params.m_perceptual) { + v[0] *= 0.5f; + v[2] *= 0.25f; + } + palettizer.add_training_vec(v, 1); } + palettizer.generate_codebook(2); + vec3F v[2]; + utils::zero_object(v); + for (uint i = 0; i < palettizer.get_codebook_size(); i++) + v[i] = palettizer.get_codebook_entry(i); + if (palettizer.get_codebook_size() == 1) + v[1] = v[0]; + if (v[0].length() > v[1].length()) + utils::swap(v[0], v[1]); + vec6F vv; + for (uint i = 0; i < 2; i++) { + vv[i * 3 + 0] = v[i][0]; + vv[i * 3 + 1] = v[i][1]; + vv[i * 3 + 2] = v[i][2]; + } + tile.color_endpoint = vv; } - } - } // t - - if (m_params.m_hierarchical) { - if (m_has_color_blocks) - color_error_metrics[e].compute(decomp_chunk[e], orig_chunk, 0, 3); - - for (uint a = 0; a < m_num_alpha_blocks; a++) - alpha_error_metrics[a][e].compute(decomp_chunk[e], orig_chunk, m_params.m_alpha_component_indices[a], 1); - } - } // e - - uint best_encoding = cNumChunkEncodings - 1; - - if (m_params.m_hierarchical) { - float quality[cNumChunkEncodings]; - utils::zero_object(quality); - - float best_quality = 0.0f; - - best_encoding = 0; - - for (uint e = 0; e < cNumChunkEncodings; e++) { - if (m_has_color_blocks) { - float adaptive_tile_color_psnr_derating = m_params.m_adaptive_tile_color_psnr_derating; - if ((level_index) && (adaptive_tile_color_psnr_derating > .25f)) { - //adaptive_tile_color_psnr_derating = math::lerp(adaptive_tile_color_psnr_derating * .5f, .3f, (level_index - 1) / math::maximum(1.0f, float(m_params.m_num_levels - 2))); - adaptive_tile_color_psnr_derating = math::maximum(.25f, adaptive_tile_color_psnr_derating / powf(3.0f, static_cast(level_index))); - } - - float color_derating = math::lerp(0.0f, adaptive_tile_color_psnr_derating, (g_chunk_encodings[e].m_num_tiles - 1) / 3.0f); - quality[e] = (float)math::maximum(color_error_metrics[e].mPeakSNR - color_derating, 0.0f); - } - - if (m_num_alpha_blocks) { - quality[e] *= m_params.m_adaptive_tile_color_alpha_weighting_ratio; - float alpha_derating = math::lerp(0.0f, m_params.m_adaptive_tile_alpha_psnr_derating, (g_chunk_encodings[e].m_num_tiles - 1) / 3.0f); - - float max_std_dev = 0.0f; for (uint a = 0; a < m_num_alpha_blocks; a++) { - quality[e] += (float)math::maximum(alpha_error_metrics[a][e].mPeakSNR - alpha_derating, 0.0f); - - for (uint t = 0; t < g_chunk_encodings[e].m_num_tiles; t++) { - float std_dev = alpha_layout_std_dev[a][g_chunk_encodings[e].m_tiles[t].m_layout_index]; - max_std_dev = math::maximum(max_std_dev, std_dev); + uint component_index = m_params.m_alpha_component_indices[a]; + tree_clusterizer palettizer; + for (uint p = 0; p < tile.pixels.size(); p++) { + vec1F v(tile.pixels[p][component_index] * 1.0f / 255.0f); + palettizer.add_training_vec(v, 1); } + palettizer.generate_codebook(2); + vec1F v[2]; + utils::zero_object(v); + for (uint i = 0; i < palettizer.get_codebook_size(); i++) + v[i] = palettizer.get_codebook_entry(i); + if (palettizer.get_codebook_size() == 1) + v[1] = v[0]; + if (v[0] > v[1]) + utils::swap(v[0], v[1]); + vec2F vv(v[0][0], v[1][0]); + tile.alpha_endpoints[a] = vv; } } - if (quality[e] > best_quality) { - best_quality = quality[e]; - best_encoding = e; - } - } - } - - for (uint t = 0; t < g_chunk_encodings[best_encoding].m_num_tiles; t++) { - tile_details& tile = m_tiles[chunk_index << 2 | t]; - const chunk_tile_desc& layout = g_chunk_tile_layouts[g_chunk_encodings[best_encoding].m_tiles[t].m_layout_index]; - for (uint y = 0; y < layout.m_height; y++) { - for (uint x = 0; x < layout.m_width; x++) - tile.pixels.push_back(m_pChunks[chunk_index](layout.m_x_ofs + x, layout.m_y_ofs + y)); - } - tile.weight = (uint)(tile.pixels.size() * m_pChunks[chunk_index].m_weight); - - if (m_has_color_blocks) { - tree_clusterizer palettizer; - for (uint p = 0; p < tile.pixels.size(); p++) { - const color_quad_u8& c = tile.pixels[p]; - vec3F v(c[0] * 1.0f / 255.0f, c[1] * 1.0f / 255.0f, c[2] * 1.0f / 255.0f); - if (m_params.m_perceptual) { - v[0] *= 0.5f; - v[2] *= 0.25f; + for (uint by = 0; by < 2; by++) { + for (uint bx = 0; bx < 2; bx++) { + m_block_encodings[b + (by ? width : 0) + bx] = best_encoding; + m_tile_indices[b + (by ? width : 0) + bx] = tile_offset | g_tile_map[best_encoding][by][bx]; } - palettizer.add_training_vec(v, 1); } - palettizer.generate_codebook(2); - vec3F v[2]; - utils::zero_object(v); - for (uint i = 0; i < palettizer.get_codebook_size(); i++) - v[i] = palettizer.get_codebook_entry(i); - if (palettizer.get_codebook_size() == 1) - v[1] = v[0]; - if (v[0].length() > v[1].length()) - utils::swap(v[0], v[1]); - vec6F vv; - for (uint i = 0; i < 2; i++) { - vv[i * 3 + 0] = v[i][0]; - vv[i * 3 + 1] = v[i][1]; - vv[i * 3 + 2] = v[i][2]; - } - tile.color_endpoint = vv; - } - for (uint a = 0; a < m_num_alpha_blocks; a++) { - uint component_index = m_params.m_alpha_component_indices[a]; - tree_clusterizer palettizer; - for (uint p = 0; p < tile.pixels.size(); p++) { - vec1F v(tile.pixels[p][component_index] * 1.0f / 255.0f); - palettizer.add_training_vec(v, 1); - } - palettizer.generate_codebook(2); - vec1F v[2]; - utils::zero_object(v); - for (uint i = 0; i < palettizer.get_codebook_size(); i++) - v[i] = palettizer.get_codebook_entry(i); - if (palettizer.get_codebook_size() == 1) - v[1] = v[0]; - if (v[0] > v[1]) - utils::swap(v[0], v[1]); - vec2F vv(v[0][0], v[1][0]); - tile.alpha_endpoints[a] = vv; - } - } - - for (uint by = 0; by < 2; by++) { - for (uint bx = 0; bx < 2; bx++) { - uint b = m_chunk_details[chunk_index].block_index[by][bx]; - m_block_encodings[b] = best_encoding; - m_tile_indices[b] = chunk_index << 2 | g_tile_map[best_encoding][by][bx]; - } - } - - } // chunk_index -} - -bool dxt_hc::determine_compressed_chunks() { - for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) - m_pTask_pool->queue_object_task(this, &dxt_hc::determine_compressed_chunks_task, i); - m_pTask_pool->join(); - - m_total_tiles = 0; - for (uint t = 0; t < m_tiles.size(); t++) { - if (m_tiles[t].pixels.size()) - m_total_tiles++; - } - - return true; -} - -void dxt_hc::determine_color_endpoint_clusters_task(uint64 data, void* pData_ptr) { - vec6F_tree_vq* vq = (vec6F_tree_vq*)pData_ptr; - uint num_tasks = m_pTask_pool->get_num_threads() + 1; - for (uint t = m_tiles.size() * data / num_tasks, tEnd = m_tiles.size() * (data + 1) / num_tasks; t < tEnd; t++) { - if (m_tiles[t].pixels.size()) - m_tiles[t].cluster_indices[cColorChunks] = vq->find_best_codebook_entry_fs(m_tiles[t].color_endpoint); - } -} - -bool dxt_hc::determine_color_endpoint_clusters() { - vec6F_tree_vq vq; - for (uint t = 0; t < m_tiles.size(); t++) { - if (m_tiles[t].pixels.size()) - vq.add_training_vec(m_tiles[t].color_endpoint, m_tiles[t].weight); - } - - vq.generate_codebook(math::minimum(m_total_tiles, m_params.m_color_endpoint_codebook_size)); - m_color_clusters.resize(vq.get_codebook_size()); - for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) - m_pTask_pool->queue_object_task(this, &dxt_hc::determine_color_endpoint_clusters_task, i, &vq); - m_pTask_pool->join(); - - for (uint i = 0; i < m_num_chunks; i++) { - for (uint t = m_pChunks[i].m_legacy_index << 2, tEnd = t + 4; t < tEnd; t++) { - if (m_tiles[t].pixels.size()) - m_color_clusters[m_tiles[t].cluster_indices[cColorChunks]].m_pixels.append(m_tiles[t].pixels); - } - } - - for (uint b = 0; b < m_blocks.size(); b++) { - uint cluster_index = m_tiles[m_tile_indices[b]].cluster_indices[cColorChunks]; - m_endpoint_indices[b].component[cColorChunks] = cluster_index; - m_color_clusters[cluster_index].m_blocks[cColorChunks].push_back(b); - } - - return true; -} - -void dxt_hc::determine_alpha_endpoint_clusters_task(uint64 data, void* pData_ptr) { - vec2F_tree_vq* vq = (vec2F_tree_vq*)pData_ptr; - uint num_tasks = m_pTask_pool->get_num_threads() + 1; - for (uint t = m_tiles.size() * data / num_tasks, tEnd = m_tiles.size() * (data + 1) / num_tasks; t < tEnd; t++) { - if (m_tiles[t].pixels.size()) { - for (uint a = 0; a < m_num_alpha_blocks; a++) - m_tiles[t].cluster_indices[cAlpha0Chunks + a] = vq->find_best_codebook_entry_fs(m_tiles[t].alpha_endpoints[a]); - } - } -} - -bool dxt_hc::determine_alpha_endpoint_clusters() { - vec2F_tree_vq vq; - for (uint a = 0; a < m_num_alpha_blocks; a++) { - uint component_index = m_params.m_alpha_component_indices[a]; - for (uint t = 0; t < m_tiles.size(); t++) { - if (m_tiles[t].pixels.size()) - vq.add_training_vec(m_tiles[t].alpha_endpoints[a], m_tiles[t].pixels.size()); - } - } - - vq.generate_codebook(math::minimum(m_total_tiles, m_params.m_alpha_endpoint_codebook_size)); - m_alpha_clusters.resize(vq.get_codebook_size()); - for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) - m_pTask_pool->queue_object_task(this, &dxt_hc::determine_alpha_endpoint_clusters_task, i, &vq); - m_pTask_pool->join(); - - for (uint a = 0; a < m_num_alpha_blocks; a++) { - uint component_index = m_params.m_alpha_component_indices[a]; - for (uint i = 0; i < m_num_chunks; i++) { - for (uint t = m_pChunks[i].m_legacy_index << 2, tEnd = t + 4; t < tEnd; t++) { - crnlib::vector& source = m_tiles[t].pixels; - if (source.size()) { - crnlib::vector& destination = m_alpha_clusters[m_tiles[t].cluster_indices[cAlpha0Chunks + a]].m_pixels; - for (uint p = 0; p < source.size(); p++) - destination.push_back(color_quad_u8(source[p][component_index])); - } } } } - - for (uint b = 0; b < m_blocks.size(); b++) { - for (uint a = 0; a < m_num_alpha_blocks; a++) { - uint cluster_index = m_tiles[m_tile_indices[b]].cluster_indices[cAlpha0Chunks + a]; - m_endpoint_indices[b].component[cAlpha0Chunks + a] = cluster_index; - m_alpha_clusters[cluster_index].m_blocks[cAlpha0Chunks + a].push_back(b); - } - } - - return true; } void dxt_hc::determine_color_endpoint_codebook_task(uint64 data, void* pData_ptr) { @@ -823,7 +481,7 @@ void dxt_hc::determine_color_endpoint_codebook_task(uint64 data, void* pData_ptr for (uint i = 0; i < 8; i++) encoding_weight[i] = math::lerp(1.15f, 1.0f, i / 7.0f); - crnlib::vector& blocks = cluster.m_blocks[cColorChunks]; + crnlib::vector& blocks = cluster.m_blocks[cColorBlocks]; for (uint i = 0; i < blocks.size(); i++) { uint b = blocks[i]; uint weight = (uint)(math::clamp(endpoint_weight * m_block_weights[b], 1, 2048) * encoding_weight[m_block_encodings[b]]); @@ -841,7 +499,7 @@ void dxt_hc::determine_color_endpoint_codebook_task(uint64 data, void* pData_ptr } selector |= s_best << sh; } - m_block_selectors[cColorChunks][b] = selector | (uint64)weight << 32; + m_block_selectors[cColorBlocks][b] = selector | (uint64)weight << 32; } dxt_endpoint_refiner refiner; @@ -865,21 +523,43 @@ void dxt_hc::determine_color_endpoint_codebook_task(uint64 data, void* pData_ptr } } -bool dxt_hc::determine_color_endpoint_codebook() { - if (!m_has_color_blocks) - return true; +void dxt_hc::determine_color_endpoint_clusters_task(uint64 data, void* pData_ptr) { + vec6F_tree_vq* vq = (vec6F_tree_vq*)pData_ptr; + uint num_tasks = m_pTask_pool->get_num_threads() + 1; + for (uint t = m_tiles.size() * data / num_tasks, tEnd = m_tiles.size() * (data + 1) / num_tasks; t < tEnd; t++) { + if (m_tiles[t].pixels.size()) + m_tiles[t].cluster_indices[cColorBlocks] = vq->find_best_codebook_entry_fs(m_tiles[t].color_endpoint); + } +} -#if CRNLIB_ENABLE_DEBUG_MESSAGES - if (m_params.m_debugging) - console::info("Computing optimal color cluster endpoints"); -#endif +void dxt_hc::determine_color_endpoints() { + vec6F_tree_vq vq; + for (uint t = 0; t < m_tiles.size(); t++) { + if (m_tiles[t].pixels.size()) + vq.add_training_vec(m_tiles[t].color_endpoint, (uint)(m_tiles[t].pixels.size() * m_tiles[t].weight)); + } + + vq.generate_codebook(math::minimum(m_num_tiles, m_params.m_color_endpoint_codebook_size)); + m_color_clusters.resize(vq.get_codebook_size()); + + for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) + m_pTask_pool->queue_object_task(this, &dxt_hc::determine_color_endpoint_clusters_task, i, &vq); + m_pTask_pool->join(); + + for (uint t = 0; t < m_num_blocks; t++) { + if (m_tiles[t].pixels.size()) + m_color_clusters[m_tiles[t].cluster_indices[cColorBlocks]].m_pixels.append(m_tiles[t].pixels); + } + + for (uint b = 0; b < m_num_blocks; b++) { + uint cluster_index = m_tiles[m_tile_indices[b]].cluster_indices[cColorBlocks]; + m_endpoint_indices[b].component[cColorBlocks] = cluster_index; + m_color_clusters[cluster_index].m_blocks[cColorBlocks].push_back(b); + } for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) m_pTask_pool->queue_object_task(this, &dxt_hc::determine_color_endpoint_codebook_task, i, NULL); - m_pTask_pool->join(); - - return !m_canceled; } void dxt_hc::determine_alpha_endpoint_codebook_task(uint64 data, void* pData_ptr) { @@ -907,7 +587,6 @@ void dxt_hc::determine_alpha_endpoint_codebook_task(uint64 data, void* pData_ptr crnlib::vector selectors(cluster.m_pixels.size()); dxt5_endpoint_optimizer::params params; - params.m_block_index = cluster_index; params.m_pPixels = cluster.m_pixels.get_ptr(); params.m_num_pixels = cluster.m_pixels.size(); params.m_comp_index = 0; @@ -937,7 +616,7 @@ void dxt_hc::determine_alpha_endpoint_codebook_task(uint64 data, void* pData_ptr for (uint a = 0; a < m_num_alpha_blocks; a++) { uint component_index = m_params.m_alpha_component_indices[a]; - crnlib::vector& blocks = cluster.m_blocks[cAlpha0Chunks + a]; + crnlib::vector& blocks = cluster.m_blocks[cAlpha0Blocks + a]; for (uint i = 0; i < blocks.size(); i++) { uint b = blocks[i]; uint weight = encoding_weight[m_block_encodings[b]]; @@ -956,7 +635,7 @@ void dxt_hc::determine_alpha_endpoint_codebook_task(uint64 data, void* pData_ptr } selector |= (uint64)s_best << sh; } - m_block_selectors[cAlpha0Chunks + a][b] = selector | (uint64)weight << 48; + m_block_selectors[cAlpha0Blocks + a][b] = selector | (uint64)weight << 48; } } @@ -983,21 +662,56 @@ void dxt_hc::determine_alpha_endpoint_codebook_task(uint64 data, void* pData_ptr } } -bool dxt_hc::determine_alpha_endpoint_codebook() { - if (!m_num_alpha_blocks) - return true; +void dxt_hc::determine_alpha_endpoint_clusters_task(uint64 data, void* pData_ptr) { + vec2F_tree_vq* vq = (vec2F_tree_vq*)pData_ptr; + uint num_tasks = m_pTask_pool->get_num_threads() + 1; + for (uint t = m_tiles.size() * data / num_tasks, tEnd = m_tiles.size() * (data + 1) / num_tasks; t < tEnd; t++) { + if (m_tiles[t].pixels.size()) { + for (uint a = 0; a < m_num_alpha_blocks; a++) + m_tiles[t].cluster_indices[cAlpha0Blocks + a] = vq->find_best_codebook_entry_fs(m_tiles[t].alpha_endpoints[a]); + } + } +} -#if CRNLIB_ENABLE_DEBUG_MESSAGES - if (m_params.m_debugging) - console::info("Computing optimal alpha cluster endpoints"); -#endif +void dxt_hc::determine_alpha_endpoints() { + vec2F_tree_vq vq; + for (uint a = 0; a < m_num_alpha_blocks; a++) { + for (uint t = 0; t < m_tiles.size(); t++) { + if (m_tiles[t].pixels.size()) + vq.add_training_vec(m_tiles[t].alpha_endpoints[a], m_tiles[t].pixels.size()); + } + } + + vq.generate_codebook(math::minimum(m_num_tiles, m_params.m_alpha_endpoint_codebook_size)); + m_alpha_clusters.resize(vq.get_codebook_size()); + + for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) + m_pTask_pool->queue_object_task(this, &dxt_hc::determine_alpha_endpoint_clusters_task, i, &vq); + m_pTask_pool->join(); + + for (uint a = 0; a < m_num_alpha_blocks; a++) { + uint component_index = m_params.m_alpha_component_indices[a]; + for (uint t = 0; t < m_num_blocks; t++) { + crnlib::vector& source = m_tiles[t].pixels; + if (source.size()) { + crnlib::vector& destination = m_alpha_clusters[m_tiles[t].cluster_indices[cAlpha0Blocks + a]].m_pixels; + for (uint p = 0; p < source.size(); p++) + destination.push_back(color_quad_u8(source[p][component_index])); + } + } + } + + for (uint b = 0; b < m_num_blocks; b++) { + for (uint a = 0; a < m_num_alpha_blocks; a++) { + uint cluster_index = m_tiles[m_tile_indices[b]].cluster_indices[cAlpha0Blocks + a]; + m_endpoint_indices[b].component[cAlpha0Blocks + a] = cluster_index; + m_alpha_clusters[cluster_index].m_blocks[cAlpha0Blocks + a].push_back(b); + } + } for (uint i = 0; i <= m_pTask_pool->get_num_threads(); i++) m_pTask_pool->queue_object_task(this, &dxt_hc::determine_alpha_endpoint_codebook_task, i, NULL); - m_pTask_pool->join(); - - return !m_canceled; } struct color_selector_details { @@ -1010,7 +724,7 @@ void dxt_hc::create_color_selector_codebook_task(uint64 data, void* pData_ptr) { crnlib::vector& selector_details = *static_cast*>(pData_ptr); uint num_tasks = m_pTask_pool->get_num_threads() + 1; uint errors[16][4]; - for (uint b = m_blocks.size() * data / num_tasks, bEnd = m_blocks.size() * (data + 1) / num_tasks; b < bEnd; b++) { + for (uint b = m_num_blocks * data / num_tasks, bEnd = m_num_blocks * (data + 1) / num_tasks; b < bEnd; b++) { endpoint_cluster& cluster = m_color_clusters[m_endpoint_indices[b].color]; color_quad_u8* endpoint_colors = cluster.m_color_values; for (uint p = 0; p < 16; p++) { @@ -1051,11 +765,11 @@ void dxt_hc::create_color_selector_codebook_task(uint64 data, void* pData_ptr) { } } -bool dxt_hc::create_color_selector_codebook() { +void dxt_hc::create_color_selector_codebook() { vec16F_tree_vq selector_vq; vec16F v; - for (uint b = 0; b < m_blocks.size(); b++) { - uint64 selector = m_block_selectors[cColorChunks][b]; + for (uint b = 0; b < m_num_blocks; b++) { + uint64 selector = m_block_selectors[cColorBlocks][b]; for (uint8 p = 0; p < 16; p++, selector >>= 2) v[p] = ((selector & 3) + 0.5f) * 0.25f; selector_vq.add_training_vec(v, selector); @@ -1107,8 +821,6 @@ bool dxt_hc::create_color_selector_codebook() { m_color_selectors[i] |= best_s << sh; } } - - return !m_canceled; } struct alpha_selector_details { @@ -1121,9 +833,9 @@ void dxt_hc::create_alpha_selector_codebook_task(uint64 data, void* pData_ptr) { crnlib::vector& selector_details = *static_cast*>(pData_ptr); uint num_tasks = m_pTask_pool->get_num_threads() + 1; uint errors[16][8]; - for (uint b = m_blocks.size() * data / num_tasks, bEnd = m_blocks.size() * (data + 1) / num_tasks; b < bEnd; b++) { - for (uint c = cAlpha0Chunks; c < cAlpha0Chunks + m_num_alpha_blocks; c++) { - const uint alpha_pixel_comp = m_params.m_alpha_component_indices[c - cAlpha0Chunks]; + for (uint b = m_num_blocks * data / num_tasks, bEnd = m_num_blocks * (data + 1) / num_tasks; b < bEnd; b++) { + for (uint c = cAlpha0Blocks; c < cAlpha0Blocks + m_num_alpha_blocks; c++) { + const uint alpha_pixel_comp = m_params.m_alpha_component_indices[c - cAlpha0Blocks]; endpoint_cluster& cluster = m_alpha_clusters[m_endpoint_indices[b].component[c]]; uint* block_values = cluster.m_alpha_values; for (uint p = 0; p < 16; p++) { @@ -1176,11 +888,11 @@ void dxt_hc::create_alpha_selector_codebook_task(uint64 data, void* pData_ptr) { } } -bool dxt_hc::create_alpha_selector_codebook() { +void dxt_hc::create_alpha_selector_codebook() { vec16F_tree_vq selector_vq; vec16F v; - for (uint c = cAlpha0Chunks; c < cAlpha0Chunks + m_num_alpha_blocks; c++) { - for (uint b = 0; b < m_blocks.size(); b++) { + for (uint c = cAlpha0Blocks; c < cAlpha0Blocks + m_num_alpha_blocks; c++) { + for (uint b = 0; b < m_num_blocks; b++) { uint64 selector = m_block_selectors[c][b]; for (uint8 p = 0; p < 16; p++, selector >>= 3) v[p] = ((selector & 7) + 0.5f) * 0.125f; @@ -1234,8 +946,6 @@ bool dxt_hc::create_alpha_selector_codebook() { m_alpha_selectors[i] |= (uint64)best_s << sh; } } - - return !m_canceled; } bool dxt_hc::update_progress(uint phase_index, uint subphase_index, uint subphase_total) { @@ -1244,11 +954,6 @@ bool dxt_hc::update_progress(uint phase_index, uint subphase_index, uint subphas if (!m_params.m_pProgress_func) return true; -#if CRNLIB_ENABLE_DEBUG_MESSAGES - if (m_params.m_debugging) - return true; -#endif - const int percentage_complete = (subphase_total > 1) ? ((100 * subphase_index) / (subphase_total - 1)) : 100; if (((int)phase_index == m_prev_phase_index) && (m_prev_percentage_complete == percentage_complete)) return !m_canceled; diff --git a/crnlib/crn_dxt_hc.h b/crnlib/crn_dxt_hc.h index 204090c..679afd8 100644 --- a/crnlib/crn_dxt_hc.h +++ b/crnlib/crn_dxt_hc.h @@ -45,22 +45,20 @@ class dxt_hc { }; }; - struct chunk_details { - uint block_index[2][2]; - }; - crnlib::vector m_chunk_details; - struct tile_details { crnlib::vector pixels; - uint weight; + float weight; vec<6, float> color_endpoint; vec<2, float> alpha_endpoints[2]; uint16 cluster_indices[3]; }; crnlib::vector m_tiles; - uint m_total_tiles; + uint m_num_tiles; + float m_color_derating[cCRNMaxLevels][8]; + float m_alpha_derating[8]; - crnlib::vector> m_blocks; + color_quad_u8 (*m_blocks)[16]; + uint m_num_blocks; crnlib::vector m_block_weights; crnlib::vector m_block_encodings; crnlib::vector m_block_selectors[3]; @@ -72,114 +70,70 @@ class dxt_hc { crnlib::vector m_endpoint_indices; crnlib::vector m_selector_indices; - struct pixel_chunk { - pixel_chunk() { clear(); } - - dxt_pixel_block m_blocks[cChunkBlockHeight][cChunkBlockWidth]; - - const color_quad_u8& operator()(uint cx, uint cy) const { - CRNLIB_ASSERT((cx < cChunkPixelWidth) && (cy < cChunkPixelHeight)); - - return m_blocks[cy >> cBlockPixelHeightShift][cx >> cBlockPixelWidthShift].m_pixels - [cy & (cBlockPixelHeight - 1)][cx & (cBlockPixelWidth - 1)]; - } - - color_quad_u8& operator()(uint cx, uint cy) { - CRNLIB_ASSERT((cx < cChunkPixelWidth) && (cy < cChunkPixelHeight)); - - return m_blocks[cy >> cBlockPixelHeightShift][cx >> cBlockPixelWidthShift].m_pixels - [cy & (cBlockPixelHeight - 1)][cx & (cBlockPixelWidth - 1)]; - } - - inline void clear() { - utils::zero_object(*this); - m_weight = 1.0f; - } - - float m_weight; - uint m_legacy_index; - }; - - typedef crnlib::vector pixel_chunk_vec; - struct params { params() - : m_color_endpoint_codebook_size(3072), + : m_blocks(0), + m_num_blocks(0), + m_num_levels(0), + m_num_faces(0), + m_format(cDXT1), + m_perceptual(true), + m_hierarchical(true), + m_color_endpoint_codebook_size(3072), m_color_selector_codebook_size(3072), m_alpha_endpoint_codebook_size(3072), m_alpha_selector_codebook_size(3072), - m_adaptive_tile_color_psnr_derating(2.0f), // was 3.4f + m_adaptive_tile_color_psnr_derating(2.0f), m_adaptive_tile_alpha_psnr_derating(2.0f), m_adaptive_tile_color_alpha_weighting_ratio(3.0f), - m_num_levels(0), - m_format(cDXT1), - m_hierarchical(true), - m_perceptual(true), m_debugging(false), - m_pProgress_func(NULL), - m_pProgress_func_data(NULL) { + m_pProgress_func(0), + m_pProgress_func_data(0), + m_endpoint_indices(0), + m_selector_indices(0) { m_alpha_component_indices[0] = 3; m_alpha_component_indices[1] = 0; - for (uint i = 0; i < cCRNMaxLevels; i++) { - m_levels[i].m_first_chunk = 0; - m_levels[i].m_num_chunks = 0; + m_levels[i].m_first_block = 0; + m_levels[i].m_num_blocks = 0; + m_levels[i].m_block_width = 0; } } - // Valid range for codebook sizes: [32,8192] (non-power of two values are okay) + color_quad_u8 (*m_blocks)[16]; + uint m_num_blocks; + uint m_num_levels; + uint m_num_faces; + + struct { + uint m_first_block; + uint m_num_blocks; + uint m_block_width; + float m_weight; + } m_levels[cCRNMaxLevels]; + + dxt_format m_format; + bool m_perceptual; + bool m_hierarchical; + uint m_color_endpoint_codebook_size; uint m_color_selector_codebook_size; - uint m_alpha_endpoint_codebook_size; uint m_alpha_selector_codebook_size; - // Higher values cause fewer 8x4, 4x8, and 4x4 blocks to be utilized less often (lower quality/smaller files). - // Lower values cause the encoder to use large tiles less often (better quality/larger files). - // Valid range: [0.0,100.0]. - // A value of 0 will cause the encoder to only use tiles larger than 4x4 if doing so would incur to quality loss. float m_adaptive_tile_color_psnr_derating; - float m_adaptive_tile_alpha_psnr_derating; - float m_adaptive_tile_color_alpha_weighting_ratio; - uint m_alpha_component_indices[2]; - struct miplevel_desc { - uint m_first_chunk; - uint m_num_chunks; - uint m_chunk_width; - }; - // The mip level data is optional! - miplevel_desc m_levels[cCRNMaxLevels]; - uint m_num_levels; + bool m_debugging; + crn_progress_callback_func m_pProgress_func; + void* m_pProgress_func_data; crnlib::vector *m_endpoint_indices; crnlib::vector *m_selector_indices; - - dxt_format m_format; - - // If m_hierarchical is false, only 4x4 blocks will be used by the encoder (leading to higher quality/larger files). - bool m_hierarchical; - - // If m_perceptual is true, perceptual color metrics will be used by the encoder. - bool m_perceptual; - - bool m_debugging; - - crn_progress_callback_func m_pProgress_func; - void* m_pProgress_func_data; }; - void clear(); - - // Main compression function - bool compress(const params& p, uint num_chunks, const pixel_chunk* pChunks, task_pool& task_pool); - - // Output accessors - inline uint get_num_chunks() const { return m_num_chunks; } - struct selectors { selectors() { utils::zero_object(*this); } @@ -198,6 +152,9 @@ class dxt_hc { }; typedef crnlib::vector selectors_vec; + void clear(); + bool compress(const params& p, task_pool& task_pool); + // Color endpoints inline uint get_color_endpoint_codebook_size() const { return m_color_endpoints.size(); } inline uint get_color_endpoint(uint codebook_index) const { return m_color_endpoints[codebook_index]; } @@ -221,34 +178,18 @@ class dxt_hc { private: params m_params; - uint m_num_chunks; - const pixel_chunk* m_pChunks; - uint m_num_alpha_blocks; bool m_has_color_blocks; bool m_has_alpha0_blocks; bool m_has_alpha1_blocks; enum { - cColorChunks = 0, - cAlpha0Chunks = 1, - cAlpha1Chunks = 2, - cNumCompressedChunkVecs = 3 + cColorBlocks = 0, + cAlpha0Blocks = 1, + cAlpha1Blocks = 2, + cNumCompressedComponents = 3 }; - void compress_dxt1_block( - dxt1_endpoint_optimizer::results& results, - uint chunk_index, const image_u8& chunk, uint x_ofs, uint y_ofs, uint width, uint height, - uint8* pSelectors); - - void compress_dxt5_block( - dxt5_endpoint_optimizer::results& results, - uint chunk_index, const image_u8& chunk, uint x_ofs, uint y_ofs, uint width, uint height, uint component_index, - uint8* pAlpha_selectors); - - void determine_compressed_chunks_task(uint64 data, void* pData_ptr); - bool determine_compressed_chunks(); - struct endpoint_cluster { endpoint_cluster() : m_first_endpoint(0), m_second_endpoint(0) {} crnlib::vector m_blocks[3]; @@ -283,30 +224,25 @@ class dxt_hc { typedef tree_clusterizer vec6F_tree_vq; typedef tree_clusterizer vec16F_tree_vq; - void determine_color_endpoint_clusters_task(uint64 data, void* pData_ptr); - bool determine_color_endpoint_clusters(); - - void determine_alpha_endpoint_clusters_task(uint64 data, void* pData_ptr); - bool determine_alpha_endpoint_clusters(); + void determine_tiles_task(uint64 data, void* pData_ptr); void determine_color_endpoint_codebook_task(uint64 data, void* pData_ptr); - bool determine_color_endpoint_codebook(); + void determine_color_endpoint_clusters_task(uint64 data, void* pData_ptr); + void determine_color_endpoints(); void determine_alpha_endpoint_codebook_task(uint64 data, void* pData_ptr); - bool determine_alpha_endpoint_codebook(); + void determine_alpha_endpoint_clusters_task(uint64 data, void* pData_ptr); + void determine_alpha_endpoints(); void create_color_selector_codebook_task(uint64 data, void* pData_ptr); - bool create_color_selector_codebook(); + void create_color_selector_codebook(); void create_alpha_selector_codebook_task(uint64 data, void* pData_ptr); - bool create_alpha_selector_codebook(); + void create_alpha_selector_codebook(); - bool initialize_blocks(const params& p); - bool create_block_encodings(const params& p); bool update_progress(uint phase_index, uint subphase_index, uint subphase_total); }; -CRNLIB_DEFINE_BITWISE_COPYABLE(dxt_hc::pixel_chunk); CRNLIB_DEFINE_BITWISE_COPYABLE(dxt_hc::selectors); } // namespace crnlib