From bcd07b50f30142be85d7c1664993c460f0e9237f Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sun, 19 Oct 2014 03:33:14 +0200 Subject: [PATCH] - Added GLM_FORCE_NO_CTOR_INIT --- doc/glm.docx | Bin 1066342 -> 1062256 bytes glm/detail/func_common.inl | 2 +- glm/detail/func_matrix.inl | 38 +++++++++++----------- glm/detail/func_vector_relational.inl | 14 ++++---- glm/detail/intrinsic_matrix.inl | 2 +- glm/detail/type_mat2x2.hpp | 1 - glm/detail/type_mat2x2.inl | 6 ++-- glm/detail/type_mat2x3.hpp | 1 - glm/detail/type_mat2x3.inl | 8 +++-- glm/detail/type_mat2x4.hpp | 1 - glm/detail/type_mat2x4.inl | 10 +++--- glm/detail/type_mat3x2.hpp | 1 - glm/detail/type_mat3x2.inl | 10 +++--- glm/detail/type_mat3x3.hpp | 1 - glm/detail/type_mat3x3.inl | 14 ++++---- glm/detail/type_mat3x4.hpp | 1 - glm/detail/type_mat3x4.inl | 10 +++--- glm/detail/type_mat4x2.hpp | 1 - glm/detail/type_mat4x2.inl | 14 ++++---- glm/detail/type_mat4x3.hpp | 1 - glm/detail/type_mat4x3.inl | 14 ++++---- glm/detail/type_mat4x4.hpp | 1 - glm/detail/type_mat4x4.inl | 14 ++++---- glm/detail/type_vec.hpp | 2 ++ glm/detail/type_vec1.hpp | 2 -- glm/detail/type_vec1.inl | 6 ++-- glm/detail/type_vec2.hpp | 2 -- glm/detail/type_vec2.inl | 23 ++++++------- glm/detail/type_vec3.hpp | 2 -- glm/detail/type_vec3.inl | 32 +++++++----------- glm/detail/type_vec4.hpp | 2 -- glm/detail/type_vec4.inl | 36 ++++++++++----------- glm/gtc/matrix_transform.inl | 6 ++-- glm/gtc/quaternion.hpp | 2 -- glm/gtc/quaternion.inl | 45 +++++++++----------------- glm/gtc/ulp.inl | 10 +++--- glm/gtx/associated_min_max.inl | 32 +++++++++--------- glm/gtx/dual_quaternion.hpp | 1 - glm/gtx/dual_quaternion.inl | 25 ++++++-------- glm/gtx/matrix_transform_2d.inl | 4 +-- glm/gtx/rotate_normalized_axis.inl | 4 +-- glm/gtx/simd_mat4.hpp | 1 - glm/gtx/simd_mat4.inl | 14 ++++---- glm/gtx/simd_quat.hpp | 1 - glm/gtx/simd_quat.inl | 6 ++-- glm/gtx/simd_vec4.hpp | 1 - glm/gtx/simd_vec4.inl | 6 ++-- readme.txt | 2 ++ 48 files changed, 196 insertions(+), 236 deletions(-) diff --git a/doc/glm.docx b/doc/glm.docx index 4ea8fca2591088b5d70df343ef11e9d9740ac886..299f1bbadab0cd7d660bac06f022478d1166aa32 100644 GIT binary patch delta 56748 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 =;psP z{qE)Qe|g?t>-8@mn%&UebWOkb_3J@ib)^`xcz*b6*A1ta87tK=T@Fhh(HDgNW$rPe zqfHRuj8`*(h+HvZn2!*VqF9L$rIdq+X1e0hG|zGZu~iC)7*->Ph$ST)N%#fgL`+yV zCyl`x4JwKZk;FyD5+s`no+ooAu@wsQ3XfKVe_)sgl~)I?&6yGj+LUt^*`A1BA%fHf z=i!paGJ%NTp?$d2+y{s#CLGi#S1N1B1Fl)%cr-e(At8N9iXlS zf0so=jSA|Nrx0u5N`)30TU!`%J1jMYQEY8tYz~mu!b$C*c7#`|V5z-f*mA<#FtMH> zjDVICL1r9bMG`t&h-6bdwnEX2pjrIu20ixDNfhU<}vhyX1owbcRUe-de>!2TnxauIrow8n5Ofs;OBjXGs;3?ZaC zEVVNXM_B1u)mUmTBhEiE*o3o;jJ6nTxnu&>LkIRbyRK1PL&o%3>0Ze6m<_ zNQhL*CXiK>m^`+rq7b6sdK9xH0z@dh8OQ@-D7R2*C4|CRMoAWMO`)U^88Ti;e{Cv^ z6iQm5FrqYPcpj|^t`C%@gpT#*s0e`EQO-_e4CT4E*gjrak0tO%V}>ZI8#IigDoBQN zJt0ubL0+q%b;hzqYaAXeDK#NmGOl2~C2O(Q6H*wKE!m2_L}hL~^hQ;v z*ud7V(o9HDjaJa6nj(CF_R)-jen%|o0@a`} z3bq`nQ#m|Or2-csmRW(brsb>#$X?4SxJ)3LW4>8QQ(*~|sshFxt69Z7uoMyTKFg9( zaXm_i!uvTYErZAN(2f?Lf4kVgDz2Vv!EMxn4N&9L%kJJ&zH?No%kRe|2fGZ(ysoH>X$6HbGiJ5m4 zMxlMYqn$XGjWUM8Iv|+~9?e@Gu@wRnmJ%_K0)_| zQU>l*1?Mo=`zk}ie^OV9*H~{=g$(-yPFpP)VFMSnLR|-nJNR5VNL^h8SX5oNrj+D@TCR@O9+#8nOqB`b{0A<%SD_7IF_KxGF3zU>c~a(ZnxDvLUI@-(E@Om(lz`!A(y zh8W&84PGWVpZMvXE$cWsaS~QUCF>)9pkl5pDqo8oD2jOIN=G3_SN8KxM843iK5?o^ zzAwrOzilj^VWgBUHJn?5(1__kyLljyPWM^W2Wt+z3KO0p8WgXD!UW`@w8Br4??~dt zfv}nl%$-MzYJSG?)}me&S)Vh0c4U9{5;C=6X6mr8DY6fi0J9T?l5AX1B;3XtAX-XZ_ln)wIrK_ClCTm{mMxYh_1Hu5>&a9gmC zsZ9$;sninzeM}6S_!laomVx-6+?lEr*y=aG>X$t2>JSg|?iY+=)y;mSO2a?E{SjbI zca`{TND{YG9oS|Z4N;5{DvxMM|v7v^9c)3Lk3&;!G)W;hD#C;O5~t&i#)P@62^a*luFRrTQ1g zv6c91S4q77*kzog!hfAaRFatFG$j+(`W9JB;;mZ=(wW|kg zuioxgk^V%F^(hFwH-&QU`L$6TEqRIV?U>YlS#1Iu;aLwP1H<7?wdCE-z=HAU@5!u( zi}l=xo6;{-m4Xe&nTJ=dY-iu&%trNwTW>?+;g5gS+y08br55zrh>8|xdOH7Gk(ZiS z)rFecbg{SOa5msa`c0_bs<5S!?sg2(C`oUaqHomPwTQB>9+jY*g^e0lQmd!PIJ z?8AoPzLp!OHqrp09m$UNMKhWE12`_Z*-DT^cRuM?nOl|pjoPt*4?ktnPQ4EUmG9bv z3|HHX-`@9_8jPY zAB`%x8W#y^A2cU~kjR<%6e!@qRz0pHcXttgC#+^%s1aw@h+{NLU&zL>IZ)2QwO_D= ze1617wKL}eAU~OnE&epHZACxqyrck!zWN{=T zFLol+f^6L=R^0%HZ9JcelQvn>^Vh`f(TpohQAv2#p4hSZiqLTpY*(>t%x1nChWcBl9-wq+C_&IPZQFKB@dFGT-OdFF2j4<5bFiI{t>q zPrx^j(9)a$Ud_v!px%38YQ|*12Usd9C2WHR1iR>!vl2mfArBL_q}I(10Ysnk*J&l~ zu0%zDGDdMmY`Rt3jFD?C5u*>ns^b~ZB}Xs%ZClf@uPsPEqBnxeCz>XiclxaxP9CaR zzT{zvLeQ!)Oa!SuJ9;er(eUQ9UG=Hkz>g>1!n(}3NN1~fSCE9Uz&O7(;4?OwcS`x{ z)CsQv{QE&?pJrCf;oZe|rdZpdta}UJpbGDmB=rjs!_P|j_gsEadRueoNr6LOOBWx` zWrWHXai>hWf9GVyh0*se?EP|3YFNHsm}FSXXxn+r{cy=qs=+bxpdB2Wg2!}=j(0-A zMZ!-jcdi9_?VM<*@6f-@4^)`kVR_{bdSvhZY}W8RGiJsMIiX+{fmPsVi_b-)jWmjB zrIdfwCyhGcL-L}IVlbv_9{7h7xa;+fkKpqCk7b1Y%DV>+d?-I{axdoh?dg6# z7@)Y2F(sBKOuDt@0MyZ#zs%=43mp&@Px5b8!r|hnEs1LqG$e^Syr-gjGt(|P?#C{e zyWb_!vRYW4bF}1|6iCZm=7`>9-*+O0@`+)!kVwHeP=wJTDT#qWf^vzPr4kK&(7E^q*1eb_%zvR6y!^8b>F-}6S}|=7tLIL z9b~Nb>ay|)n%cvZROdw{HsVdU)bt3kJk}__HUj1dxJ*gHPCreE{R_X&y@|K0l}>*Z zzn*~|Ia6s%q{3SfL>@4_DrBjLBZblQr_R6|z9wksVNWnrEz|tcp+Cn)K_40_N)0oN z-f}SJG`1Y85K-~I$NZdkgH?eyuI-!Zn}br`yH9O#JkOPmGhupLV&m*Hyi8JuQldSv z^7vHasqL+zQNs0g6)O^vR)*hSsJ!LqI6>o)wZ6P|Y4-vXA?|VwqQ`-cf(*A(0 zm0Hhu(A3F(5xcU1!Bw;1)SG^87y}y+)##^ESowoik|@a&>t=uSiuNm=7TYXMi_c}B z`bk&otEJmF&Koo;ce~!OD$IP}H5atgUq|qzE=u?rPcr@{x~sx@mUEkVX?iDcr;_$? zG2N-EhsF%eskoY&zDPjIRHPCijRxfOa}wsccva{)Va1)df_{cmG$uFFt;*5HJ_w%8 zsKzd9HgrlVi`#WX!1$=UWIR8C%5YVYRv z0D-KD`5{il16SVTIUtH=#uAQtZH7Z^6uJ*o^9z{~i^hjOk121|%sve?0h~j2ZvAhG z0j&6bK9ge$0F5Ykh2%L>yOz=>oM|x7w7T=$w+m(b`qJN%G-L-sMYeXIqQK^2fx%^_ zf&dQ!WEfnPC>LgV1tFJapZ>g*(RYbGLFVH!3;JGvd+iA-qMmQtpp1YYFcBuE&Oijc zhP~7`2LX($IiSxrp(9Wu^kQz3L3qK@j_e~eho+aBn6z6wck+Blz;UJ?S_q=F_6O?bYFOqStZ$*V8-a#m;}$#t zih7gI+I$2OYTVhLf<#m%yb>!e#<2|cY0Q-D>%v91>}6W+qi1ymjAA9uT--#U6^&KS4O0j4goX}A$p6Q{B!X(`nI+4C^!hE|$#wOb%@sDOp5pJCdpO%kNd7r7PWDgvNABtu3jdjv9xNbJTv5 z1vlzm+IFPhZLP3~|M(nZNfAjeTmva+c@}RZmZH%v*XWJKVbkbqFI6soG3Vj@7RKGN zxTU0`s7ecA%zeFJH=~vb;GH7Tc|&?&OnCL z?KKbc|ISE@f(Th-;16~K$z+5PO&32B)zb2pXkj^gZ<2m*9krjpFKg`n4V$u*adffT za0)_E##jvK<_T9APRS#Np*tQop{pQ@q5@^ZHbwkyH8dARbhycWkfA;xcM-Sh#bzmE z8A317wKuMxVdbwdtWk|EOH=z}Po6m%T!=$duQ0SvCDUiGS3!6V{_*_DfUxr@|7%bP zk6~fIuBvy5+iVh`j7VmgglLlf5nGkdgl=%9!=`x7p?N4)9-ZM?H?v5Z6(N{ z#Ai{5s9L{(oxHf=*k3z&RA%=?M8&EZlErK<5=Nmex~p|9D$g9ooD!k}hA+o$1}p6` zPZB&{)@M90gb&;XJMPq}fD4QNEh7hXl0)q<)3(bc!X@7X zn{!%8BG}{>+wgF}T<=aT=`p|Y^D%6)A-PHIo@!m$)EAU|cT9#D;9^0zLZdpe)6&;~ z8EgV-2531$ndmKN_!eDb(CZ|AfBDFz!pHZEsxSoMiJ|h1(fR-mXWs{!ilOFdB{ilV2+KAaPVR#`fPlNb2WAY=k)wC zEpdndIsLUilx)Dpe~Kh_H1yC~XXsI9#b9;dXwW&?FzO1Y2hS|$dAX{x8~0uG#D!@P zAknPiv8a){QYS9Uy0pj zpl0G6&B{D={a|oPF8XSAi&q&5W!al@+O%MC!zj$QcrCgRgms$%c?S~(2% zcei#e^QQ8x9Jz~>6*i@oc}p&UiR)7H@QxSzaQlSp@b`6hVD&Ro%)&7MNdo`LM|?)AzW zj;PsIXrHuDpWa2^eR~aQ6g%=tqX%m920*xJGK4-ZJac3VhpFw<)a?OD;)+ED=k&91 zuPpesQTE+P9=`d*(n)+`{f*%bIsUWG#OJ1Z!Jg~8jy%HYa|3;e?`yYc2be#Oyk3i7 zBMhYn+7(P}%g!%iM^VBe0qbWTzhI`Pj_ zp``Z>E}jl!E=R4A){Y9?mJ}Pp zx+d$^RvZuh3v}?)7xf-b*yZ43qdnetj)%!9SHoXg$V^6c%s&Gy6XRiytF^UnVS$_M z!>Cj8S8&BCa5ekwUWf}HxZ1Tek-vQvUEW=NiML~TSSBhY$rGbD^rbND$#{+$lxT-; z#Jo%UP=QdauR{p390g+#{^@Bn?)&8t`a{bPA~wCEH*EdxLy~kh?jJeCS@gH*4Nf^- z@Y>7{FBt=(XQF_Hcl9he=tkQ%yIx3o-D^C`8t-rM23^$VJ5Z$HCGuS4i%OSn1=2QT z6}6jct(Dd1gLM+XJe>bax^_3eM;7b#r8`DxRiguC`uPB%@qB-?yV=Z@&3CK{(M{v# zO5s~x4=?*ImC@V#KHb1kO)%J*I=ycrcrtT`!3`z-QhGgUG8=b~mLqYtl~ z=&%%0*!|Z(>KTYEq_J^jm&aVDYxHY%r_fa1rax?02Vv|!&~w`JL-U^7QcNq>)KrGO z`NGwgHvAS~aU2rPc{iYc`6JEHYs}_yE9H%8cID`yPpR1mMOtO7(+hp7-Qky7OEWC#53>gq4i_FzIa=hfvW3Qu!C)d z{@W159=YZqogj)x|EfdaM{^v`PO9nU3^JnjnJwU;JP;;#p%OLd*~#*e%jjL#YRd-`NaPGEB!e)JXuHdrDv3{k0m0rTQ)T|k`p?pXCpJyCvk-S8Y{C=8u)ZKxv6}HSkW1d`YbA0?_zW#aHk*M7f&2kF9^2KW~@E&+C8Sb80K+xr11jk@~p zV!e(4`Eyioivx1=h(-^WFQ9RQ6T*ZH46F2V5ky?SIo7OkNmf&=&cm0M7sSe^f7_Zs zVe@7*oMCMH&`ESUPS9B3!AC;lcb&xQdnP04sKo`+{72HHFMp&o#E|-DnC;lG#3;XH zB(pJ(Xn;%#OG=a$+Dtua!WolQBD46G;b=KEKEcB{&K2j5snDCx=t$nt{7TMV66iq* zpk3`lISEV9cBH{%OzO<$x-P&yOjU_fdBDvu&1Hyqj6F}l&CViGh505LczQ8NJhfYQ zdBQ9bM&BOok2bgORm~Al2mi1Ewk{3)E^Tfw(Z_>Srdlc&J^q=`E&Qz1!jOeoke@2_ zX(F zHvOSp{?v8qxj(}u>@<`$eq`yrOL>Uf>{d=h|c?1=!F_s6CkM@Xb zSIZT(kxvl9g^bw7NLx@HMP5Gf)vmb_YOm9HhMH)%j*&FCEwMR9eT5z-iO`tig&nA;i~3*RR9$gj z*fvJTuQWQyWC_Xin7pxyO&yw#2vBoUSJPES7NuVyo5%r1rah(CwxmJLvBg9#Dw4VE z2eYZEsNC^(f*qn8682m>!t2hCNJ-rnWUHDy`E^`5WikSt-y3fz_4>1p{GPTg8T1NG)2#-G{>mxNF4Pjh?fl(_G{^r4lS}MlA?FD|h>JHmO}HiiMq`X2i0x zjkGbU0$2mj7^hQ$QbmfJ4YYW|ipS3u&#rdo?Q!Meo{3{ryow2ZMX3LjQG;HV{5)Toe*Gvl^gD`vwhV6D*hcN|sTlsbH}CTA&jd0GI}&In z0vY?uuDPHL(t?D9af=QLi9$3`IEFxED^z?iQxw99avcGVh(csgvT{I(7(@ouv>6!$ z29b$DM==O1s@fDX=(K^*s{Uy0hsfZ{Jwm(qqp_VMgS6rhX_Nv?&{7=H6o(20A|xu@3KRV8g-Hw^NFhp# zya!375#Et`(CCkxKLT^45gjbM`wQHZhDf1cv4V^;2*(>#&=w(44>54Sr=&PUpp_H^ zLivA>K_DR^7R~?TxWB;xk7Xcq6#rgOFGfPb`Hui3B<)8ayDUT$g_{_(mxV~6l#_#{ zvJkF+eIKmKLI_c6D8VaPh#bl(6(}YLVWjx`I*N>hw1V>A^}bPqFgb`gN)#Q~CWlCN k&IsPgL6|81KF1N!*l0*dkpEYnl^K+fhtNHK&HBgwKhuTCkpKVy delta 60872 zcmV)AK*YcB>Okg-L9qP~3%hY8eH6+706Y5$lL!zTf0pL|1@;{XFECp*<&=59xF_Ai zYo^i8OpooX>INDp&=h5{QX*9(Wv6Q}K)=KO*?ok4jeV4Ul07F#S|mkDlqJzjXC$gD ziI<2I=kmpg6DK16?ayDQ6XxEJlOPJ;9&rQqi19-&8V2Fr+oR7n&KvcJNm4f)x|1mM z-yS{sf639G&;I*=`?rVFVdTxHewZ>)M3|gD%)GZp<20R}o}47!*q^$|U>bOFltiO+ z;6>AuXfz5u|KuTxhbKJCvEMH&FV_O@rHD5~Pn%HY*p!L~oDgad?^+fAQvtAbjOCBPjnU-iX`Oo4sP?93VBG z#Qp?mh{9wX%ofdfZfS6HToiJ@t`YasN%7pnj1za0ffc(C@UbYc4f(_DrRgN2e0_-= z+d?8(#M2vXNT}9XP%?Fca8dEISW{vyCv8^%UoT*Gx0`U@#nF7WC@t8nwDa)GQ(0)) ze_NE53%T61WH(~2$LeHj_&I~u#M7A@yXV8VM}lZ`hNA(H;nmdtn&MR@{|8r30sV$oZ;x2k zc4StvpDtPc$emBpNwN#GWjvXb(*^DY;@&Q61H5`;c843hK)s5&CwjHhoGPv5YCM+8kz-Ow9HF+oS( zKeIo4U+AUhYpf7c~pKbRPRq8hksQJ&^_9b}lWvzYIJS zH~s)#E=PJ)>eOeV+@fBeqGr~dTT zhq^#RWPHaxP14v;y)k|r!J}6oXe_IAgOs}{3V$U;@7>d{qj-v+-~=#VNedoxVq8?M zwR&~3czqTp={rA~GWZ3E0~&}J-TR9qr>1x$CnqC-e1-qX6D66Kf1_~~rbGa+ zG9zvPPmz~2Q*pKjmP@pWe*!@Ei8fCV5j#m*8}5&-X-zld+4Z`dYM^WpS(1>^VjC$#ZGhQnL3e{R~&-pBC!piPl9-r;2| zxOcSi96+Qc?0w9<584Dy)Fj*LrA%enR8>Vm74IM4WGGsZo-uehJZ+L;Xe@X&y_Bh- zYNoF2Jw~<{nX0_%2xc#7<7Cb>1#|Cl@V&@Xg`SKzdugY#sHr@sKf~F3{n10&mQ_;| zu*v1&PLDs94qDYR;x;NwzHO{T)HpgLMm-vEnEgGS_|_jIeGmsa_&TwTQ*>nS`DS zgpp}9dyIp-amxI^|I2^~rGNh8fAK7b&#a1BNV4MSf6jsFs>Ux~gg4Ehm*aZurD2e( zWrTG^^26!8xPWu|6Ti;OcW-JW&#)7-VfybaKbc&oZk%QX_J;Hu7^1f#-VTTT zB7H^R&WwGMtyF2$NsE{RXE>6ni+gv~R!`pwP@yGjyG>Cyz+zq_kp=#_U5Ii9-DAPW zRg91Xf1B4$iElv`%ds2@pe>PAy+g zWZ3FLcBSf?#aX&TXtQO}Rx`xQX`5AIbC*y*>9aE(+o}sJwY%I^{owsb`YPrPhPv1F zRh9|EucCkreM-5q71p~ml2#hDGq|;&xWF6ce}~Q87Dw!KU2v8+dC6MnaYjXckvyDB zai`$y!^6X%Rd9AacYmzE*%aRsCDD?NHgSW-rmr@X>f`%1lob}P2%KTJntrSizNt04 znteM1zx3m2kdPU`AYsOS?B6~zPzJPqc+8Aq-)Eu`610Z`OUeVvW8hlMk!KLrC}Fv0S{jeQ_t$hb)od4UU5GDUKBW^*v?@)PEV zbnG)n*ZCVqKN8Z1er>jUe>4UmgEbZvG7mvIj^-%?g{3hJSAnu)CJ4RB9MjF8Zcl<~ zkkgH?6QoTJL?SR?o`4KdQpe0R8U`c$fAoo9XLA^mCgWog{)mIyc?uU3yay@rt#Ca!6z@j!I0W|igpy$dsz|u= z8w{@T3KB7jCX)yU!@%Hh7?AAv(-v?j!{}I4`BolZX8vsfr26=w0OSVR?%qcCe?C#H z%vT7b6!a#O99k}sT?R7wtz_&@Cd{p$+XOH+2oEGXtfRPY$Dh{2TL^^N-dsWB>K?%D%p4K3yG1LgybY zFV1bK>HMR4@!2~6_>M7vnvb7un2Yld=Qlv=%_jz%krQ}sUn7Yh>?`v<{M3!}i}Rbm z9Uq81=ltd)w%_@5#pukXesyzhe!kGJn9I*sm!Ga}V3h^Lemwu^TmkL&e+T>H%>dd0 z*BJX}_`zJi*Do%x0SBT`{|xfGLJ2YEr^~-xoxgj3!@U1=VcBreuz`!Zabaf-0I`}E z`uT@r#?n9N?~s#M%qO7jP}0T9Gx;#TytlC;jwgQTc(6PlPm}=A)g_hK4~D@5z4P5&Zr6ntUZ>GM24h z0EJ*o9}h%dnS?gzB*>zq%66MM^qP;oM|ZkFr)Cmmo^^z!s4&Ngs$lXsQQQVV1y#@t zOs`vzSmIm8){M@+%p!4yplO1N-Fby z_4U(Qm3pNk}}&TG7dL+bZ+x^@N)wOR~x8wTu=?19>`V{jH#NIsAz|7#X~tx}(&OF(^-h zS4bTEAigm9aW%&!jYXKL995b4BNC%4x`rI1H%6nAVVZyBe{a>M6)K7JL0C$pUz%`m z!vwEa66`B)cuBf+nKa|JXhl93al6Q^&#zR%Y%KYg-6&0Dh{ct~+dQ9LEB8x&_~sp^ zVU!w>U8?j;0j>@u&vPuOrlQJHUKZlL8>gRce=GfZ2V)^Wek|U(!L_G2_%VTv(1|3K zS3ifr?{hz^f395GNl6ay#SVuRnJhZmg3RoNr{~~%Uf;6ja;9O6l2w~$5CvN|Y?3p* z&|E>}HEE%_nbTCeSoRdMJ0*3ldM-Dg%=f;F!I?bj+Za{Np3tHD%5!sXtLt8)Zf`xw!>6Jh&r`O zn|34U&&!6Om6)zcFh;f0QK7=AAa%6|4dNMFS}CZv*_Bu#hCO zt-``R0v|VE-uY>Y4ts)A*iZKFDG3KD& ze~k{ljZV5ziZMOF7&3j`3C8dP#sP|bT(%M2#qN~By%2+JCqfE5fkeqJRJZJnfC1jc!UA-Iq{jqozAi-?7NE(fIYEKK}QfN=o}JsBuUj2lkBTQL8k|x zL*}450UdF`SpEzY#t*%~Z%l0c&Y(tmf2~lX^a5%)Sz#6P@cs=A8$Snl$fR}$zypJ< z>xbZvKhV*E$6ct8Vh^zYwPKIj3+z!uSywcX29A5;<`9;5f;JqwIYfkv`O{CD$^&^$Hc7}DfILJddN1Eoj?z`Iy$&+kJD(LF!K;sr%f?0e>$cZ zRL3CowPKLg3k>3QNoOst&9-ZF=!KU%9eRuW}vO1N*kD$F) z_*veld>@o;A7wTSN#n&f+htN8=4~cUbgK`@|dLlltPa9YEzSY0y&Dz%CaG}*@B)z zP6v?FRc^9?={x36KQY*pxqIg`LqGK!*Mn`R*slV0UTv~6x3op&J}BE7b!11hBtfn% zXr`$1QmE5awz7cvJJ;tQEGC)HaGx=XHR7wyPwolUu%arOw!Gtle~LBxf5Mus5|o93 zG+>-4_HZ{vc$lUo1Mex;929F5$#xWrY+g;VrUzKlRbH|%kO$1qFnogM;r6amH;sd@ zxWYUQJO+=?q2MFF+C*iJ?+5renq|qYj-;j2<#@Tv>2k5FOl2HkrDR_$AGg57nJYS1 z4(xxm;3M<`d}K)!4A!Bkf66`ae7Z_i7ICip-NlDr-`$wMdVn>!i#!D!5C8?7!+JZc zt;&){H@xTx;B=LsEaF^w0XY6F2_|&L3fWKL=AdxH*{UTuBn_X!O%LFvtL$SD=gAAW z$-+9nx*nz?Q_vA#Zvt{ZKu2IzU9;tbM|3FYv;rNHnAr{Jh)bXoe}t)j=f@Ovq}Q8; z+z-@|SlbjNla8!&-##2ja*)FPb(_7hClNak|So=GX<~#BMl@Xz&KuPvPdU4vxmk zobJ%6s-D12hgrv^v}4?%YZgbIJE4#xz1qBEz8@Rr2)ZcBf2v7CI6Z-!?(&YgQsQw6 zul!241}uqz!p=cqN46Bv5m}ml+!NU8F8`P-B_L<8lhQ0e5WuSioPKO&A?PM=WxKUd zz@9 zu62mXIeWLketMp?j-@k&1{n-Qz5s$Y@ zm=QE~=wo~bw0l^<(r6x%4U*~7PmmAAql4m+VDW;ekwca!9`yi^4w;r*rP~kRe7-Id znZZ;Rd|rmBcNd>2FqH-MYJsUADa@>8m^SAeeEy4$f7PA?Q(YxA%LC>wVe}9(L6XdU ziaWshSBpFSNcG`)LFR0YPJs2qA?hlZS;hfc7^P264#gVz)n+mG1Zy}>WL4IpSkn`% z=_-p^#!=SwL-5BR@FIynamco>M;uWI?g#pxC4EnxV=TT|v@gOZP3h(`p zjJ^I$5lMc%NzeU2BuUXURblCA=>0$>vMXCRe~82n7%TD-hdwazJk0QD7DsonJEh12 zlAy?QP~;I5%i%@34Pjr9r>mrA1;aiBdE5+hyl6TLCVtG^&V$L2;E@*%ed_+8P$&o; z6ogn=l?+p~Cv1#(z&U5;iO>A=AOHK^&0qidkN;CTMU)~CNQ5HL ze?bvQ5;RF=>Dd!~L7=X7V^;9&iC@Nk>@%Jl0tmUu7iRj%{66;+8vQARLBZ#s;KOT* zCUXj1^4=5h=_;97!6PWj;4=!sAp?wKhLJbNr50I0IvP=Lr~*i@H|M!0K_ON%Wr5}b z^#zc+%6V4sY>N7LY@P(ruF#$O#5kF|f64SuFhHX?1ahG`bWj{pbls5+i7t-s2@Z9Y z53S&_73bNc*a!%xSOdJLSaVpP2Y^NpOqvwb6Rhbf|5?E^D_{_Ymf+T%+EnG zcPEVb(@)v&lV3#U!Hq-og(m*JKRJfy$L_sfTulap0fi~$^`=T|y?`m1)mTX(f2$xV zO!WY!x=W76gDx<8F^Q&r<{1^cZ;1;Y>~y<6nJ_7 zJcmr5ZlZe$kN5%e!37-p3Si`h$q0am!jSrE6R3LvL%iZBw$9Q7>Yl(*R|(WAuHyLF z_i($Q6kecXE#UpD#hQK`&?B3cZt?=1lpWPK3cQJhgpa-_8ZbLEfx*bhDG-5}pzE$Z~-{0pA9O_Q~$che8=rmNIv ztvHWoh{-+C3|C)JxKUqihI3EgMpPx);VruKt0!>NRfe;Mf#UplugdOY)W-oKP|!In z=;*qwnDmI{zJN|wsm>Zke~ay}sUL^#gu$mN+5q<{+8h*ZU_iz5tV45idV)4xWh`qL zFNPbx`5rJeTSW>3EQ&bltIb003F1g9rwF`2H}mNU;&hdFtl?%p`JgI=cEy1^p~zE_ z#H&RfsTat@nzkib7Db+ZAdl8n9nWi*N`ze7sTWP$dG(Hwxn5e&9K30N}3 z1MTr~6$~i`e_YKcei?s%^9rz=_@gwtR_`X<#0!F=k8ppBf8zIgm;_az)-k3;5Et(? zKI|pMW0`6#cMFcAvTV_({83yL)#eT$Q&W67C5kt5?@C79Y%z*v0_V&&Ir=q$XFWzP z*an%HysQ|6=XEV8iK*I|zxUlC2u;t4&Y!uBqAyc7{&JnVaSD$Hs5MwF?lf8H;)I-4 zwO*}M?F8g=e+35V$NumV*ki=L`-Qxdo}Gtj91Z7Wr<59+6(rc<@QHw&#$}euf~|3? zSUV_3WK~1AoGJ)4vQ)EpmM4RQ7A!Sw#a5NoEWHGx?qYW~uJW|Tp}b1Mhvx1q50-v# z(E)PPz)P4P-d%k7kqPiz7~K47TDmm}ZeuroWJaLMf24N2SnnaqjBt3-HZsQ}J;Tyw z*}+yz!sPf`=1vhCi9WD}gr#EBOKi z1}Ou;GnqUx&|y4c2ymYGZA2#ts>B33$m$9Sqb#)h*WV|OxolU0d5I$VLrhcKcF zf9KO%KZf7y_@imOAg_gxFbWcXbs@`~JM&YozI$P_qH?OF+c0#mVT>u7iX%O#**De+ z5=AZgwudPG0&45WBT!qgWP&U$I+#pj_tU|w?N6F27i$hu117ZYS=Xyg1+j1EDPo>G z0sI7OK?7p~z~eXq5;LpF85n_K#b8}Qe>`MBm*8^7Z-ill=4Kw3jnW4<_5ok(PF$tYDl374=H!7ph~2;swHIbM!n0$1FLS7&tDQ`U8`{9e zN{O-i2&RoAkXB{d*${C}i7RAqQkTLmG;bkLaHD}|2|=xAwy>?9{df!=IQUKof2p3I zpg91%jvtf2W0GJxpJdQUw8IS_*FvJHaw;#btF5%CV;cqca47#Z&76bS|9u{yin~Z4 z_#UN$q5~|r!BuX9sfvT>skI5H=7`uOe3nXC!CUl(z-}MnAcZ~=0074gn#v$L;Kr0G z_(qI7ym!MCf1((Dg4;*Z`xeJgF5qAWs(^hdlsxoj*z1PqN#t;i z=n_UuamUM~vQ}Fp&XjSdjP05kY|@-^5ogf|eD{F(f_W3s-$XFOW5+Y^G;3&b+CoQo z$rfbQsyT?;>PY2ID;>EAl5}5s@}^BUx^}tOvZ60nUIca41-L807?%9Ye{L+TphZ%P zzS+bWeqC0phkBa`ZQ1`W;VzC$RssLUI?wol%%Fv|sinF5dTzVM!5#Pjtxf1Q&f+&a z=+fG?JTI(EpDq3Hsw50pf`;9*e(j2emu3As)9ixt;tO$pZFcv|a{e5gscc7m+_5oA zYK&Pah}K;HtIhB%C%h2nf7fQYzAWc2E`F}2q8&u(`GEjFP8`ke#tc{)BMx|+DGt*& zK5^n-Kq&m$1i+USN`At`bvhpg)iBp#q{Fh(Dj}RS2YYyd6NUQTmMmw(MjgoBUWn~1Y!_X6kcx3#M4QoKs+4!Y!;9GD~R5j6%$n4~^f2QMB`}CZ_@nmUL zdrofe&!633WIdY49*)n3*$@jyGsE&Rl`x769>0*+`SB^W>8;>*@@ew_)?SV)aDQg1)E|CXUY6_ z8lLJtzu!%!|9S_)@!>P?9?k+P1>457Kg_HFYB$~r> z9Gi2hacW|Hh3yM}k0JPDrg7`6^o$&J4wQ!xIEYy{oE^EBrAjct%HDCQq9yXnPr^{g zP|S7ewbY`l)SHYBVDND@4}`FI?5?X+c39pj5*Hd*e`2hn1zMlE&PyKbYO`q^mj)r` zKE6R89TQdS-P^xR(m&NIXg{&I7Yd+*ZAHMUdBq*8KY{uOGpA5O7<`seuLMBg=K|R|-Wd;mMT4>RRHHECwxr|p&sV?qhvdD`m5@{;gSKvN_ z#Z)cwf27&#krc~twAw(JGfdObg$2Wreu3IaGxKNoq2+=-CP&PHqSlU!qGHsqW^lAc+f5>r`yvQ3Y3{c|uMyXUE&!i#=;3BS; zO37N+j`Q+LpKJBcfxXt#ZhN6{cUau1`jdO#;}I7(5z#y=xE~>{f#jtMRsh;5gAG}q zK37xVwng7=E;-lsZA%`mFL}9`vjE>9qv$z)Yhm?*r8t%<*3t)LThsxKt3!&;t-igw ze>|*Ms)3948kTBUaTE-hYd1{rdS$&v<&EmB5aL7Wm^3r-0K z!>J7=?|@TlN?w6e*<>u@RCQ~pW}K2mRW`C+JId+Bsx7IUwP40doH7kjYFZ_0M)#~#~du;VPQn;(t?^ylG z)J^%XJC90s71Kt$FIAA9kp)2D%n$LSh31QbW-0>N!lA7By2c3-U!8NMn*V)ifBw#X z?n`L?S0UH^udTd2oo9KS=y^H6$d)u)C%Yq1?f+i2e`kO1MYLZmw7-qlBioM6+X6a! zXvx!#ND$JI9Ote_w6V+#1@}o6A`KB^HMXP5s%hIbA72&}Lv~cm!dZ!+6f7xN_75zVDxhH5GqBt{ zNqd0G%FBo{M1&QfRBX|5cpFi!>}rZ8$Ei|v&(hVoJ=HrIP%bhOC{R+MBtW@Fm-kV= z7fq*2yXH}#+$$=rO03!if2JzSTQVUob{uX2VVuUwvhLKDYx0^XDgs-LX>q({uuJRa zS2}>z$Fp^?*(E{+#Wjj+9pIY(bryxV0kS)x;P#DyTXT^W#CtjI*|{BC!89+6oWz+m zm}V_iajf+)O%a(Qa<35i&X1;k8b59eKopM4^?n<0T)`!SljLkrf7_upHP`%1#NL5< zXIr7YCbFV#*OKc*OHf3ylsr*tTXCtnw_52=hV~0aP_(CL-v!#^feLpUH_fDAPkrx} znzM5ow(`3LmE(2EuKC@9C977pwJ1emip2Y&>d;7>9qzO(^iUu!*ZW-pakJv=+=T7I z)RO8rs##CHWHn6}e{^!{2F2lRaG2uk!OR8p{LAtYTb%(dg|*$}v~wG_!!?7|44vc( zl&9Y?qg=47OQ@sJt%-UR4CeinP|uh(*S8&ENgPg_|*MEpa>qg ze`My#;>c_!^{03iwx8s?{{vgw&bk;d`LP`VIdVIg;yG1N6z)+!38rwB(2ZN#CkTmfIj0}DdCU)nD;4W{ z>6{#WjpYaFfVl|1_zywiXMhU=@nTjwS%cq;WKyd;aP(&NG}7MTujx zg9=`#N7|8sU3;V*t3QFBWNWZrU*;A$Q7fJ$*7fACGk3mw;q70XbBnX-FX^4f8D+Sv@Tv|#q1b~Q4lBTRrHXbxJ8c7 z!e5JJh)XNyPDCnc$v zcR6#+P%Ig4t;dZUqGFaJ8fJbNh?o7%iSlxe5h|XTHvH=5JoAhw##2DZk7!mfFAOI6 ze~7{#VeeYKcpIf@G+nwJ2Y2K8!`SL_9myE`QSyX0@j)}0{M6c9l0+sGxa&BM>X6fG zNf9~1RYwnsEVIC-eIsj$o10=gZ*ZNCALh6d5GMgyhT75qyJsgS47xLZ*7>#QJw!(p zIJwo~c86+XLql>PSvqdmaatkG|5$(Ef6ucZKYMk1tj^`K3S^t5qVSHWNmlLfn!QPd zP*%$$HF-R^x6N66J<|2-g-6zctDGWniYjbCJgV!v>iVj)$1=gB43*8f4X0hZOGb7)TMzT^!IBdU+g42q_F=z6AHC3?9+Ri6+Fv;8}Q{n~L z$^`xWxKE0pZ~|LD3!alyQ#Wey97SiH(n+q_xTbcoWY^U@#IAD@t+eY^^JO*IRiT_* z$Nw<#{3UXoBVA?z#U=c1BzU*de+hz~Fy}d{7v}zS?p}+2jujWV?{9^wmI60-XipIg?q6w@wiSnYJn z=hd)us?yFhZ{duys%i0p&}N9VuCWc~)NsCMe(4)Br*-FrQ$yRYp%n*2f3+P(DxA#o zRxM>v6nWh!YvlK;xl}**t)FD))onCX;55}VWgJUw!q%Fr@={(&b31s!u{l|+g$f1M zVI@JX?t@6(+T5*O%#O8D6jhf+k*me0WL{$}mai&`Zi|Ax7+-9Hvg+f6>-nVvXwUY{ zrBFti_tHLX`}SdNh9qfPe`QK;L+jFd8f)9uJ*T#HIVkJj%+`1Pn#OLJjH0+Mk{x-z zjZbdrmX&2?ZR$66hl3XY;pSG$svz46+oredq?c)fce?{ag^i^kWXE{%EHX|{*PBSG zr)jFj2Iqk#%1BP`HuFfF=lNkug5c!x_1GOkdyH27MAI(1WyPtve_1a?=Jva)tZ(&3 z#9G<(Z9(jZR_G`xEmi4uIJtMW}X|bF(SRCeJ(Baa7b4sVP3k6a{LEjiz{m zeJ-Z))&<#G2aa19f3RrTk}X^H?H(k~wv5s)>YMuaZ`P_?GxK@r9Iwn)X}7sImpU`@ z&-K-MPeks`qyDi43b2YL^K7exxn`PHo;6v0e9yz>=dRaXKK^j)vXQ0#*#=)(-BfL@ z9%+#*SrZ&gF<9v!Rcyb3v#szI2in)Dw3hv3V_EAKcRtqde+++{C+QWYyPOmJE#Lgj zD=r`^SL72rQJ5kZ-NXxmw?`(JXf$yXB++-1R8Io;2BGNf(KHC7*v_xv{jnYy4IgM@An0vA6CU`zY}|3p%TNQqIEH6iKwC#cF;U2cU5P8V8`>0QCm; z-(xn-XMA5n>8mJ(e)zB7r@_#HG{w#ZcE-dMzTZ(ajjXKzgl}L(RZ1l9oeOYC(F`6} z3kREPf18S8E;8zRBd^toh~LG~R}dsaRk-?|Kcd5$oK3bWqeI^g<%U9{LtpB?(V_1? zTjqUpL*Lh;4b3e^|CWyJ=-BRi9ox}R4;|TkJE9qUT|cs`4FTxL?%){GZccjw7i!8Ul}qR@UIMU9ouDV3yS49wQOxg zf8hnwau(-#Wh`yjv!`}()1Ez&p_r}peG9E!AH4dn21ekO%_pF-oM0FlD^%IT8Z0lU zY?VDPbOM@$^l0|vHF!K z7_OHLIZ`}7-8(zVdRClZ>`o^CpS^G0jT>3gd=<`FVBtO^mw8Fvv={-r+Qzuu9!q`M zg9Qw#in4gRs#u3)NtPD_^lJ<-3+%6XkbRVXlFdkxRV0gKC2w_+h|@=ws>r-Ve?~@p z84(%5;ByK7@cP51lozQ&4t4#Y>Lt7i#n1DbqMTc0q^cHT3w2#2)@FIp+9H5Tq+lV$ zN~K7lgoTrb`($CPg#s6-we*=;x`T0pUUW~YLIg`^o)nA6`heYeQyT=^`c%Z*C0TG_T`x#G~ zz4yY%51z2Hi+O^YIxrC15)6*$jVwFbvT5Y9+3h9Rp4a;Z%3oxh(qc9z6^vZe3;_x-$YTe9QnzsnC*2&?V}jruE2AVGC|; zvGV4)kH}lNj2i?#*1YTGf7}g2(i^7Q?b@41vF3IFzAzk@z7_zYdA#?q{+&AE&aleJ zN~|266wE&LSIYSB(xD^`4#BP^W&$=YuAH%A1C%3`i?c?jIBj&6nR5HDi7eUSvMScN zn$$57C$o|nZ-FWneSgO+UCb4j3mlB~W^Uw8qZAes{tevu6XP#2e+b41?{T?B!Xz>W zN?qr6OYML%)~ws@%vbopnUaqDtSFIaYH}fUoMfqrtQy9KkD!xAHQ_VI*Sb@-mIuvc zr);t(c2C(-MmN-*viS*f{pfxF4%Nf)$~$;#?LR4##>)wYctcSXYsYF+a#HST7m_Psc&z3}az{fMF8$bEhhA>xu{_%hM>HYgtf7|{Eg?bpm_is<_#{gxC zurv&ll$cm5I!riq<_^Ym4qmvx%`I?dZ5{mXI@tYk!u$#f8JOx~mz}USUIKc!_3<;G zU*p}i1`7pl??dtj<`54bw&zb5X>XY>lDEO(8Up@U1K{aE#BWdEACJL5!Pi@-^_pRl zwC_2LR{!Wvf0W?iO!8ta72Jtg8UK?2hue8hq}~AUz74#j6a4kB_^U@OjR`Ixe@gD)MF^MXIzqVguY_nc0GvB8lkVlsOJ00`h=C5DkzX%F~ zNo58PLxo?z;(u`)@mLj+=eN(Mk3>0muu(VJ3v)cHe_5ioM~~eQ{AkKZH{t?|Q3}F> zcP@C7Q*wwZN=K1CF^zwweEc zi=B^y?8uT&VPx4p!uyRId^&gWX^%+|YO>~J_2&3n+qM-ug`nwl3Z6?|P&r#|feB)K zE}KX;e@g9qUGDo=QxO^t6kLgBiRU-7KbhKW*sx&7Mo)ZdU{;FJBqAd<|fBCi)>!&r`GMUKso$o&c`HjmQS&BBTVe7 z_4Ke5SrB8EXhV-4f=4=zplk3*$L{Nbe@7}guhP3`0UyI=C|&rgUE>b1tuLG~j7>>+ z;R6@EFT}FweJ4iHjb8_!@DkGxd>wxro8Q6XGbs^QMZqL;iiA|D5Q@SXvTa*zK4`TR zYDy|TJ8tdly%^OgLf44q-8HJqS?OQCB>aSfuro5uJv%9xTf9=nKmW6;G}*lkf7;Hw zP6{vXTKCB;%a@avb&cn#>L?yt&)i^+B}6THj@)l6KXhYTdSc!zF@j>%vv3!;Zm>~F z#CD$8J3&l@2QjO)u)~lxpOY;POF~1iit%hkuG_W6y&wylW=guCfS^2)V+8q80{FM_ z?-`|7zJvc;41Stm`3%}B-<*XLf3T|aCT~77vL%r!6_B760E=I3S0cIw@>D1pLu6Ur zrU|w_#Hy4Jl0%9mA#smPI$74adhoqQhlM-ee??PiSr9c{lK2zbQgpS9SzXp89UXh@ zrDfr_6B>HA?q2Y%;w*X}NF8Uj6hhoJ&Yc)x7n-xk)isUE!PJh2ue=%%ZGFpJ( zrdqA0$u6o6A;=KT7W@h$=Z>6P$+>!O zgd0lNl@9y2|M|Dcx2NwtZo40tzcM`DXjDgDSurGDKeijVSEXm`h%?cN>+v%%W#nvU9WWaln> zJF`*rwLg-w`2+?(@X-=-yWKwh+kqFcKc!ln%AvV&a`<%%qp;C^x<2}(J2i`(Zdn>? z0n|?xK=6n+b-vA%Vp=OU%NyI&7Q>pC+vo8SEJaXTSrZ3zsbB3zQza>;9A@gTp5l0| z%)KM#A-*PbPcn7jf3Ke4BG8|I{0E6*iZ3FEn+rrtX60Bjsm+V~^RY6xwyKo8k;KH@ANy{MCNqN^r!@x&c<%D9J`yku7d)Ea~ zM7k_NhO$#wmGVKd7HjIVzDFjVEb9#CUAK|Ri>GvDBc3mne|O!~1SHDG4(m97gV2uM zw~n*49rHh>g+?k1NdCG=;yXl{N~;=ZqOlB zHi948Tbj;9;=Tf(54c!C-o}pBJ+b<_fFz_6ZYduXNd;9H72XxeW~ZNBSvy60Ru5yV zy3zz&*K=q8L?e?V*+Q~?;*od>3F*vPvWU;wGB>1Ne>N+nCI%oyaq<%lTfB34!u&Qg0< z)}5?{<mgo_uSAjjDqzvNprl6DSMG*1N7itD1PvD7&*(C6U;W*ut=WY zCEQcIe;{zji;|0+@Wz81JTWW((GBj_^RjetJ0?y1`LA)x&2)rtlaAy)N-ULS7lTM* zrSJ*2{0-v}Ct_y48^)&2!2QSC3tR@T7Vi1pg=v;NshyC5<{87;5-=0{3)3W z<`_uf4G?E{-tcVt7>uM|dJ86Ri|wx}w!FLQf5EL?ur19dr5xRR-k}Q9A_j->Lijy- zGZ`uQJ!=Xi&E)KljovI6DI2|;w`4YY)x-QSbKiA&`Ij~?#~PxWrIj@CoNVZ#j#$+& z_V}tg+R*znX|o2a%B*;<2DW3Fv|+}!DV)mHq@Kuj_7}!%!>~E&m?od>s#LHJ5=9=V ze=UN*pSek!lQdRBXKB(#IzFR{*0FslXr8BWH+TEWw*z;jA5 zmC(@#yIF`gZZ?e389v2vrp|;)2HI40y`^-GtZP!<&A`lFUL*XWfM;4ce09#p~{*vwD8 zVC1GiHdP+8H-cmjn?{RjnxA+X`RT^}Yws!Ir16%3tXSaqGg}Hx-z4v)9 zI3CQ@yYr@ue+xz9Awj1TZORF)e6BAsUuhJs^1hSTE-Cv zq+Zs~%R4`a)=MXHp@>mLs%K^HD;3&@l-1iTprId+3>@^Bq7eGFz}=IK&A6KfH;5oW zU}rRuzpcClq}<94FKs zz3rp7{h8fZlT4dci$xiWIO&AE?UIgkS<{b=zCk2ppk0}*_N2V+NYz=(;!X_VcO~1| zd)oy~wL}ukc?zpi!8)?3A*ug3$#eI%bGpe3JjuL&Qio<5Z@Z+LqQPk=p5tKjwv%p% zU8~guJLRiWWL{8(V{iLDf6ZJH$EvKNAM^5gD@*oUcM0bi7j9!^@2M5bCNyNJ)@IV` zU}bV&E_*VYP%MkUYpkhAEgTH->DrK3NhYxRKPAq4}Nu-rR&Z}>K`YJ&1Xd;85rLD!|#|KNK{UFK{o`^-e-0= z6*l1n-W1UZUW1RR4jchR=x?8r3h|IwYGb3NSPfp{4G}3VR^u5d;7aM)Lki<;V|!B= z?~~gD>+hPOCrZ6IfByK(j>(EM{R|cBH{_bOL<+}ax<>p}ebU{Z&tMRAboE0P33c31 z^!M&Nb+jvqNUpEsiD9P_W;p@t-dUH4JlSb zHaJ7KkBS^e5QMfA@oT5HJQUZsWSoYx8!GTpMO|_WU!=m0TiEiiKM`ToldddCo>=)U*9`3+_+90gAgi`zK%#D znRJU4*70^LS60r~bfqhqk+YDb%6!3w&8v!l|F=CF!)jQzEL*e{7m|l7nK8-VqvbjA zwj_TKa8*hE9yKE^>+<(hR>&!gvO*xX@KjWFaP=v0@!L~341XKD#hMKoBSI1lR_G+9 zuC>WXM2J|<7y_r8in5b_%j85w(@3z)po~G0*omOnUCux$m`v7xLdyVGnX2uWmQxRs z?d&BXw^0SVG(@&wvWTj-a5W9{-%!!8HkiAdW!^6#knjRx3ln$P$`3>D7B?FC+b~V$ z?T70RklH6tC4c4>`5a9+b`!&yM0C0&FcE(xPJ|zla|?MmPM>s;0_tZR`?gvA?2+2w zB-uoJfKnX$mSymlldWCGSWr|InnWADZoF!UmA0Q;dgUbEtWK%eAe3yo1zYQ>_CvZ_ zxHE6PShZAUebeG7B=D9^%fZC&(S)+FswUg2L}RTfuzztpAqlafU0VKR+f$)X zoNXLjt&Ue#va3S2|6T|ri3ZXnf{|MxY$PI!Er0bnbj3xR1)(fATeo=HgX7HsBy5ln zhCMN+1ar*F$A_5Yl74Y{OQ%aaI%ukEY{_nyd*K$vsJc1|hZ)t57x^@Z_25oVkXV21 zn^mhKmq!L}z`zS9>V09Z^0(U3ACxasr71&5mXOdw4Rn+EAG|QCIt}NkrU;^{#x2pV zSAUiWc|h~wr(Y91Q$|=!GUkK-Sm^^HKW>AhhoQ%sg4OEbmhan3=0{?j%-9KzI*$y9 ztRnh5e7Mc}R1!-E&7Dq`GfmB8X(FLV95dpWmx*I$Baj(6_`ErIvEv0eNe*tntXDtK z05pL`h_k3}`aBzeRzuWAO`AXctXEWTI)6!|cYt}H6J$IL8+5>)h!v57r~VSLXXt%h zx-*h2?yH+7x-8Oop9mhYXOE*gQO)hW5bQa;t%gMgtMc~2-FL@?0`EVzu+)^3Ptr`@ z;zgSDIM0E68DD291=}Hka?%Pi;v~tSxjpzCNE^eG8rJN9DI|eo1;o?bD0z06Vt>6H zQN@TVsD`y3QAJOvLbf&25)gz|y%<#SbC0kB88#ARs*B~%3072+uuoipY@0)Z@luRm zF|Md%&Mw9ZMc`B$6+FE>rh_}yE%VM4xeqV6oYuYZ;Xgq8tVURPy{qhYjOiBlU84&0GOXNQafchicK zW*+ao={>0vF!RFI+*+`D#WfiG3*|Q47i1&o9 zaJspDt{a7Rw&G^@WVPR2@Y?=d0Ygg%N83)NKzq%6nmZ9t`I7n7Th9E)@PC5&;4RnR zE|`y)@DDCy%sqD*T`>Rl@wW@cjiwbh{)#cWvMwtIO+ZE|@mUS&d|&L@H}R9f^+0?h zNvnFv{NjacXCB|-EXaVSP__B+Acx5ED^<5uK(s}t7tCA3xM1GH58x{rwo*+=R;_VQ z*Rxee25LT#D;-30CkE?FIxE9# zQnu#74FJIXzyEs)f2zs_{KIh<%#YU$CZ4;5Z$s+cElVuoOqJ#g_Y!tDCbAYx@4d*K zM(e=6WWFiV1#^9ET`<}&i7uv~DkoVslBjZ`jWY9)GV^_miBCjqZh!YHm7tUbQ8!1P z+U!)y&B!XMgwJR+cJTwA&~EO%Fg=Rl-|!g>jM}7bT5>d>FgHHqE{Ux>+CF`e7`_WE z9REnVD3tj#1K*o5*KXk5!3?&UnF?Pd#r_JPLT;w)M^vm`99@37JJ!ep+sBXA^|kia zx-KI_)u4)3mx(20?|&|H`I=PY zm@)ox{sfzIQPl4EfR zDMm`x-Cs^!W`!3WQy1z=#%8f{oiQ9DoU&( z(o`C2gjP&HJjIX@R@Aas@e@# zvR3=ta1C5XM1t(Pj)-{M5Q91+=2c!Pv}u5tdEof7#_AP=eXvDPWmQZia+wQH)LBv2 z4juqldj=}s34h?adc@MQP`f&Ee#gjt_TVfdAPYwADH03+{Nq2i^xB@Ona6u~nH->I zQzSb!0N%S;1544GBph9NECj&40jhD6F=L#`vJC7CJ0ma(ll*#g$YgH|ryQW_=> z-)>2eKuX#_eKxEw#&5r=N*S9~V5HNl^4{(s){%fc9Dl^R=dq$10DW?_=Xwy!4KEdG zBeE`v=&YMgLz2LAdvN1RPH@Vpy2^3dx#nbQfvhVPY*vxbgceA;C0od9k(4HrHPT1`;WDUTY@y&_@A{4wsI#80lz#T;^Me6 zj;L3e&VMqCuJRvd^dfvx=z3DRDMtlZrvMeCX#75(>q}OEf+E?PXzww;y)XsHaWo2$ zw**VKRT`_@r~pq<0g9r^8K!vfY*keXFwY)GQ&gvC8t@<7ARuX|i!TjFvNN})Bp2bR zf`mm?ws_tuTxDe~PPcgjs$Q>Qu5wA@2^FAl(!%>5Um3V{LgFmn8cqw; zq16`NG72Dr__SD&iArhIIQT=To4y@!7#o{!-GaS&9eH!_I|SsUGlE3=@pTAy`QQcq z5`T*Ols5^X0}ICk*YW1Cg5MAP_1F8HCAnV4^$;fW_U5-Qp|_ZQsjBLGHc}4E@`ocA zW`y!0$c-$P1rVuAnri6hP&+~^dN}Ymct1`f2=2b~gDG4TimT3(D@88moi*$exQrc@ z?1;FC)!^$FtMuz@i*K-aFsB2JO#9`x27jCIWGwH6b0lJQOHo=R8aO^5&%AKz1T!Mc z*TAJaPN!oks3iK+TOM$;eERuwlZ0Pm5GCz8_uBnF-(BT?en0Ta>}RACL>N~PaZOH5 zvkMRf%jB{wY&$1LwHuTc7hMyd?X*eqVw4UIJ|Fn_vk7tr8D zMS}gavsU?U$XX>IRjyS7yi6R$yLeg5AoVSaI^5nfzy-YlFb@V+r&1U@z<^uAM| zSkhuSpYtXsA&xC%Ph=I&&~1qT`VE;(jbpX#ZKDjC^4}0L@up;{Mm3pQIZm%XR6?#o zpA}6cu4bsm4Of&Gw-^|tHGjNoo0fE05x1wTc#kI^X7*qse3Qo?C7S~*vMD--<`$ke=rYJnUaxa zXvRLte`w~6uKqX0*nfFjWK~O{F&GUwb`1Op{0H@gyXRAOPTy_FqpHQRHb=puS$_1E zO}Vj-t3D8L%KS^)K$C|_3~$>E>FU)FG?E|jrY#E6iLZS!r9c1pFN!IN$ka92ESTQ} z&N4J)ZO30SrF~|Ql6fW{wcelqUNRy0WWTWhnVhDv`>c%3SAVY4DfsH<-VMlAz39B%ZWRo`$%`7F8Gl{Qp@L85`cN@+n7mOD%fg7!Z z<<32Zy@%zPgbvMXbONZc+$o6AEpxXy2KOsW@BK&jfjA8_ECeUjBy1b%{{+qyymG*4 z$DKOZxW4o`dw=5mA#R{e9DbqoekYI#seS)9>&wlT57x)GH}8sl)(si|`Wg>*>V_d! zyATu%@xne{Kqo31vYPLeUT0gXX5$|%T5D*HYTHd|m7l7`h(!|PobA4-xENiu42z0l zNCgjwq#?*NyS;=76VVN%t6Q7;kUCMD%{*Xo5K|Xq4}Zu0psEc_lv&oySBx{RU1=~A z0~x!nbVnO#S4Vuu?mL$t>%}hJnANLTpgL>-tAb_Z-93#0v~f4JX8Ht8wrsnNVSn3U zbQOzhcSd${)mu9&SJCb6WwV-x@j1+0fpdEqVNi7!_`3;Zd*vKTpiw>NF=IyhY`LFe z;}6cA`hRVfN5Y;!h$f57 zAy%b)kgRP=HWCU)0MX>I$Wyk~q5454w&NqPPJd%BQSsT53C0bVxsxg$E*tIWVcHI* z4-Zr2IyG`SNrEoQG!?WCC?@HgPKXtdCD?^P0PsU=RtzT&GWO0+r+CI~C2)&lYW!mF z2F7#nRVkcmNi2=8>WD0pOo`H0#Ua)*%|a+6Ct~Twp;~RV&sSA4&*S;3WJ@+Bj^y{r zPJh#2d5zWbfvt^vRr_Yt!i#h5VvRA|Ulz39oYKvDP+?BVlBr_{9Remh_T0#7?Nxg@ zU?@nDMY%S<(P8jv-o+_MHa;T=Uyi*HUXr`STM~aIeinFhzcZo|yktg|XNb&D+fc2& zHFc;FU0x=kw|_l3VqyGwTEr^n&A*-=n}2ly%Lk<$Q;L$yM^o2KU23VJh@1eWSJY#_ znlPsO;LiP(8-#E>kVrGI%+9>KJ2!w7$#d^Ea01WWaTQgF?ka*ToF^t&LspCk%R?uu zZ;*n*b+3z-gv|J|WyR}{B%B0XTAlVv($NWtA#H47~nW=f{Vb!_Q~3Z@bkg znIQ($S;-7BsCsa>e~mXgFh*hrUw>qAzU1Hu zNijHCw1M%Cd8q`rIgx$jNBsNoA|OEZQ$;_prY!I*P4vSVk?-829|TQPB!9Z>Du-B= z3f57PZXqg<@F}v+ct`d*-;w2PMPUv0#F&#ZT!BNJqUbaktA-r=7_N{o<27!uORz#o z5~4ms6Fr|H=3IlBE_Mr+Kr|F`}!jWU& z%JrIqt29)hVkHzoMV5K+6o1GKhA8S5UT;Km00GwZsm(E?} zVz%N*7O+cT2KFWaP-)_a%%K4gZjv6^->WWm1mPL3|OJ-)X#@r#XVyT>xI9{?gMs&hTBHq>c zrOUHYl5vh?6Wz|>wk+cup~!B=IVmHRYZ5Znm-aG1O4r(@cdgKIvv`P5*{Rn0l5PEJ zQ~Ig!MmlF}oBEDSt$$+c+k$LsCQS|;(_nS9b!}ur!*bumA#m|W&9;6@jB5M43$vcZ z=JzS2BPRLq?p!BY<3B<-itlQZ#|UxKqFUQelKKqpCG(H9gZKOre|W(}fwK%rx@a(x zUNGSbc75}xt$1zXtYsQ%yuZvpUOXoZSxyIh~IhumKsxP*QKHcyt+cx!^OoW@SeN~&T=8h_R8+p<+j&OL*y%7$XuyU%yQ zYx{GSpp~*Qb0ni_2S`PgLD7O+YkHx!_6wz$bDR9#X799EpvD@4I%28ykaq0kdz&nH zs#KA+641J@uaff4l(A23r&l3fKKUU@bJWHxe|RQ1`$g_PfxRJf<1#f{rizV$7q7B{ zT>HgiCx7hS4;Ksv|InaBnb%}R5~wbVALfMFl?DwJOWlU=WdW#yS4F}>#P zJ)G^QNlqYhCvx-Rp`58W+eD&3vg#g_sdoLGOkxlFKs-aoca#syEw6|aXl-w9KT8m8 zapzPrh_^MQ+N7H230b+$OOTX7fg09eZc>YaJAcFCBo-@w-GDVJ`vN`=vX)8X5N2Cpcb%@)%}u(D{# zyp=EXl?<|EM)_~3X4Jyl`74x?&pM?bx4_oD1Z9?DXH=3~vGzs>FToO#@l|w3oT=#@ z5r1cnw=%e`N-i_UOOSD=lA89nTh|xk;Los_q8$%i9$sEo41PBZmFE;g+~n0FZC9H< zO2P^-->YIjh3v>K*$pd@bF#W?@Bp_HK0trQDt1Al$=}`>Ur0Qtvy3Pr36j~=DyE7R z6j=z?ET&PjWsx-t5{9#R+t@B@cIz3EVt;LJ&yy9jIhIFO%dL0ysct0AEpti%j3U7n zG=+S+6@86j2zylapvFp+Jqe^tsM%1b;SR1>Ta= zszQ}M$>U*@BnS?!!h{s&jf6%m5DEvSbyT$wZYzqq$zs?_$rpLkRVRhm&)zZP37oOv2ZAdXttK>{KPT}bFR3=-)3j%0sG0E)VPb&Gf5cA-EV-_Z&RNSwl} zMiC+kl4;nYNDN1ZhXT>nr^JDg5Fl06FsX3DypJy!61&9Ajoe`2Eq|R%-p2R}8(1vD z^=jn@aQp4fhuXQYZQ@2K_6(9l))Gkm<5Am>+J4mb18e(avybY&ySm3BMzDlpl0HGv zbQPcePeR=jQ|hj|Czo*(`VFJ*McOuxpzeuYE3{vt?h_)lQTM7QBE6W#O;ilqFc7V` zszj%824+vVoo-B4je ztr>Is6lZDQhJ=G`g21ww6U>;OR_^lc2jm4YgU+lqW*Q+3udWg4d%T%x7_euDH?zEHft4)VuShjQa$C zz;|RP!grXae|K@S4++nG%WT)m`p$zdKU5}L#lz}Kw(`|zakuSYllOz@-fz$Phowqm zE_NFO;l^G3K+M%MH}t+PV-)9p18ySO08>FpqV6K^)_$wv!bLYulN8sy@1#!BYXjB!?v6^a8CFB}y--jFBc$j^rhuQkXSLu)E3l{pde%lg0 z&uRsqCTnt%%9`8DcE>!dBF%K@lPWYFzeKvtpjJykf~;@(=^P?%QCN0Wn}NmIL%6i zsYx`~t4HJXsLw}zz8zY*(0oI-eX7|{Oj+VxDp)MvEvB`Ze6e&xlw_K8fsN!#W?2)} zyRCZw#RXill0b!I(KCc!`k#P>$Y^&HFELqQRezF;X%;w-Sn=auSC=vKFf%WVZt$r7 zLVnXXzkS&J1{1_BuP_aq<@DYUh*IKs1=$L~1Ng$7d9kkIWm{m836oo05|diQOuu36 zfCL3WX6fnE_79i^e(LTHA0n;z**WP9DEAiz_P}45Tlg72IrFEV0tS>U?l%S{-op9n zvVY2CwfveqH2wJS77k|K)DG|?p91``b4ku>-W2$L8D3)Q+(*&s^39uYdhafraN^_B zEB-FFm*PKzuWu4!E#_}{jIuBQ_LhIiG-W!G!>j|ZMN=zp3T%&C!@pgwHp9Zdb#86> z@X4FPYQrCx774-F3WB9i!8;fLxOZ;w*?*loU?KYKLiL@5`p`?h?c2Gxvc35nNCLkz z!6j4%#(iN1;YmsZ=Q4}}H=5qVuaIN=GhS$DEb|3vc-t2I6%xL8F2CIc3;5T+yJNnQ zDLf^kae%dI`RdK~^;Hl?Z(V=Ez%O`ocnoA6ore!$GMe;}WH|8v$glYStX7n1$P^U05acRqNK(bPQc9IziSl@vSKUizhNPdUJ#tJ0EO_Hu~nOw!>pxAr;8%gfLM7fizf zAwvwMea6nCF55uM^59PSSKpX741Xt0?kXauzGs=8PC|<_p4^XvCQf zM!8e&>Nvz&xd9diJ(7Y&Z*Ik|8L;_TtCV5z#<%6R;e9e@0SrpP=;E}mzB zv1IZhYg?pf(2&45kBeDp#Kq0*uN#65g^Ni(sSy{KiyT?EcvH~}S7A90nYL|j%6nBy zQkE5Ul0jOKGRtRx zEH@(mX2^d_u%VDY4=;_#zg)5i$g%}RDpa-Q3?#9ZFoQ$`rfF3;HB|^R4#Kk$+B%- zD41SERy2`ly=?DAL3!@ijxYNRrHp5&@eFkqR2|PyJrA_z3{?}3G@hh}iU6ZONwKyf z@j73$kDmQWN)>qBG{-bMCFdm>8G>qC#WXvtZK?_vBY%M*&r2wOYk?b&OUld@3#<56*GyKk?>b$7v5Cu!WsGpon&EO4JW|`Jq{(ttq zb;oTaS@Ts09N?Vp8Fw}FPWtQ`;B{=Qd&ZdVK7Z%OV$onpEEmTrsYaJ_dj|6^`z-rp zo0+5}k|M?AO}9#*VYexXnHiTaBO)Use)#q0ywL7>zawX1Vyf>E6!t{VdM-DsNhG>1 zi>8lU8`g`ZA*i_$o!JCO;;E7OiwZK+ds27D1_2oRWPbwGb&zVAHhz)KrbXmnCAz;) zqJOy&%~lIzGZ$po(qbw+^{nChVwrqS=Fu!8P}=uebhBGL$ggu@&b4{}%6(FU561;& zWh8UqAWsrG)NHZhKYqXX8gquck+0s*Uy{XUHT#xL zRPal*sFxk-ISgczONYPbKZuvIk9{xw9e;=u@A%4(F}%YY4;tBzGVOT93EpFm3p_KV zwT_{JW>mu)Ax`Kxv=n4SCgrO%#ipgQJrzGGBUuS|I<%zBFX}v9PV+N3LnqVx@Mq{& zT3G$*JCYt-efmd-7gd`M!%p^G9nN!esM)!yW>oXt#ultcR;SkFb=$+Wa#Bht#(#WB zY3P(n#hSpfY_Ei3^+zS+wm}y~bt;T(8K~Z^^>`cfeQ2;v8+7~VJNJ>m6ShJB`zBh) z%Q?4IO7E_)+%p1ou-rv2Od7({)<%37`b0KpP!WoX^E2iXfMkhX1tWbg6&Z{Dv~PN3 z?1><)XK78ZggM8p!`x>JZhb|{Eq~N;U=m{E(mn10&I}y@{ILC+2Zd9;^`Ck5XWshv zTA?@A6K$+0Kmp^PKp9U=huHSfif|{}SY^HD!;O`;*jV#>l={XBOx2g3ZfE6w|8!Bt zsES=RqfUoim3a(Vt~2;G=RUh?eTF`#OgtAGXl$gUG3J}6`*@iKJYJ%u2!DjgG?Qg= zzY*K4@f5Eg7gMF(mbo?rp*=V)fX6i^-EB({ifrU!*{1YdJ7~`t^xZ*w4&QeN?YsJ( zJ80k4r#hf_&lByQ+|xjThdZ>MKAwY^;X?}HMMN@zOMEnV&y<|tU2V=Fq{Iw~Q@&$m zI)M*dc-Z?HLBa?*%LD&QF7dFP$wn1fPY8{G~XCN@mdu^ z%yauiH!8fBb~}Fc+%UleG34}`+l~4;oHEp+OxR?FO4!Ud9oP58;!1vwP3YbnrPOBW zp<72kr`UrW5bfu*^K*6t8_UmO;zuX(bE*aFvWxAx6f;L==H~qz!k~}5eI928vJ{ZI z0&Y4xKkYHU1W=dlE`LGoE@^j3^YwCsf08UGo7rVLOh8<`Xko-c%ViWGaa4VAMl1+` zV?w8#pk!H&O=Sne&Rb1q%eFmNwoA+eWDr~U6cyK)O9Bvr?FYL?k=S<}PJcnDqLqvQ zX8W7oHW3lr)T-@bC6@}WA#EhLGm>`%8_P(xPGuz5$kl}y$$v$)E*}f~%SAFZevan( zBjDmgaR{7yQqc2zA=mA8L#Q5cjd>0J?OZlDxcSwrKpEldJCx%-3`u* zw=Q1?d&ZT{)$?P#OeWE+hm|;}NvLKIQW{_f1Q%%!QV(JuiujohY993UMqUVgT29`8 zf$0a>m3Q$<=6@Q*P+Yo@+bS`M*(<0CLBafhSler@?6p0?#~ z$6>FCEC`qZg`#t1J+kPaX1Aaw)v9O37d#h051Xxb+9F%stB1sbq6HXYK> zxV}*XmQvG0ULfkd--*%{L?Q88-U``6&txE9^ZP$)livO;( z(G_>H_GR*wEaD<{b7r#QC^g13)phd6s>H16IyhaghNRJEwHm`D)-4FGf}%&R2BPmw zUHyKv)@-~5bddwB%c#sLU4Og70%G!(RK|{01;oJ7uNH!IsxLiZ z0kL?J@YhVDS?S$d(gph>Vi|>w%4)S#P}>a=Cvs6LkZS?#y5dr&id0m%+Wks%a##B$ zna0K=U&Zo%G2`CYt`_@SV--)L`TC79S?vFB%@rmV|I0m?I|Xe3jzxgy4ql$K>$;1W z(SI`%q>GE4dG+TmF1CY?D=RS8TuW>V1JNv5C$VB}K#Om1xYU%C!<)&dOg}yU#wTyH z9&UW{=EIIQLv4J>qUJ86AF96ebQ_=e-EX@F8>RPGYPIgVoAYi0eQ{8uv2PQ`GoaLH>^_H!$>DWmEJFHl#N z7~)mkV>ER`wsgBIXVurP9cNZ=-+v~G%pY*j+Ge+7u9Tza9|jk-@2jL<^~WmU#E2VO zp>(J77HEh)NJ>fnt+2WYhdw5&wVK0eA!6HwQ=C>FhcMkf{Wb7D{QTiBfBx;`U;g{k zZy)~r%fK>uRQNJx7#|m3_q&P$Yls=zo+lI1^6?Lbm_zn00dIyiKL!4WUw?l(4|i&U z#KuqYG}%1mYykzf0SEXl^h-V+-|Yip^|5{~lx^=n{OSGKRO)^5`7y_x?=s`9h?>=G z;(jwiu3s(=hXL>yD@GS@&MMo?wOyt(pp^2R0 zA;8VpWxrmDVTSqk?z^ZI-+y43x`8A6yxgW?b{6&wX_+A#n_lP(uO@Gqxd7Wi+TZ*J zEwgheRS(k)_;%nr<^Ckt_5n0u(eZHu?8^ebYNlE7>ymldqgv*jCtwDsw5_zkbYxy< z4`dBI0-$Xf{CdqJ>J!@uS;@(U7Gb_;6%S5J5YZ0}E-Y--_3ekEmVc4HwJij(%T?b3lWId!!>dalD+hYm zW3bfs4f-|^k*?Ase$29|)y?mP{&9!3zh95;Y&shX*1ed)Q@{6Ijq>D z7Y6GHnr+wiXjj>p;fw9ixI|_?G;TiKuiaypSl&lF1eRIs^#8!0!|cbqp4|L zw-#`swfBIvg>+yc0b8{9EO%V>0SVnwHKGzk^h1Li34b^pidshc_5ml$v0M@gw9QBU zV2B_xcU3EIh7ltKoN9P6=((Cp9E;#mQnl&0o*TNir!9jAoa)u3hm}JemvICumym)% z7`lG(_Q=gyIlF+9wsS7e&KWzmNZUCXr4>K|B0#9;3x_lB3IXT?U*<{Npq(>hLd1ZE z4hsVldw=DNNxtj(=r~+owV`tYW(<0LjG4BN%yO=Z@8Qq_#cN5oW9ghmVR~f{Aqb$n zzL)pbSO75!icW%ukVW_E)MV-uzb;voJ*s8ZiA|j{IrEEkd}O(@vqs%Jv&5r^*&wIwk`l!ZaBC7XL#ZJb$>#(>yV%ZK6=NB+5?(FhV@HQ9X@Ul1@1u~A!It-hLTa%T2rZ?Rdh~=@0hCi7Dcwzd9?83Uz`g}(?k|vL0Zou z?|)3XFtF^>m7!bU^46KWaz+p7sG2rlt`n9D&SIYu55c1@(N#)7>Zo47qW8H=Y4`DNv6*9*(tkx!XgMyCJ^S*PgUJS8sf2JGwaYN1o0S=u~iZTTx2y#978q|H<27WRJ_ppJVok>Van}1qo zItNGTH(NCDL#i*WX5)Ab{MO6To416^weHL4b5y~qWrC0ZIaWFO7Gvgn$UQ^<)|3M8 zqxp0uC0%C3E+Z-GTp8A1<9Ke!s9C&R$@`8wB%KaP|b zs}{RbpSW$PF`65Tmv}i_L;^RqP=C?GS-*w-@Zc!^#LMU3*;MIs6A{v1zcIc(CX+{F z9et4u{wACIaRr$ymRwWfr{`I;jvX@p`kIbHZ)GL+qx4d{6PyV)@OOMc)>i^_HfK`@eBixifyscl}(gC4Z$K<78<_ zUamMeaq`bLPxBw1qQ8l5luNFD|Y_nb1MrFE9c5*x8 zqG^)B)AM7rN~BZAS+$#4_HR!(j{7H#RBhN3bF*2$+uL`1NiWG%?El6pdWa3~W^ROK zcaUT#)ohtfq%15Y(wb%%D$V)dGEY=}?p^lt0pd12XVBM9?SDD^k9_>faK(1BEWubv z%rKzk22ZDiv3gt@T-18VNLS`&To8b0-WJtbhyn!2_e@r<$a5}HsGcOTO^?|@ zsi?`7%j?S`IV>8NGV)=u_)aMpA2>b>NGTES+;myL`=`R(nduV;c;^fqr=_Zox+kRuz~M**RiC}v;T^he2(bhrG47uz*4C?;7gx?VztPA z_wxPsO4o~#g)C;D+vpq&Pd+Z9X&UT%c&JMx3uze1eD$0xD-xH^wDhZ*_7&X08cbY*-n9Z%qD-lm7>0jxy zEJdQEptkGVc6eZ01(dk3R3)J}$MmSG)x@($wST-XB$w;}D#^iBPQWYYQS-A}Ec^3f z9lsUnJzp1_*;FLUJ}*|QMBKVvFO1~rc@_&dq-+B{axqzQIsIZRW&Y&y!!*6(@|cJu zpKl^Pqf)Z?>YnP49S;|waLz5(`StB)`<+!X|2*58Jh>Ce9S$@JznJ1a<8!ytA*Y+4 zS%2U9SA$HV?}6IvPu3!?5I;sQ$zsEQCq5GC zfA^b&Pb6M0WiFr0vV2%9pF~>Ve6da*l1U_D6QyMD>g@xW5HN0OC~P0CQv4js0?$tI zsS$;10astH(U)s_U#_W1PT2l2BD%H5wRGam*J|Quy;-W=ATR@rJWsau%xie)+JDTI z7im>AeAN3ivd7QieHxl&tz|?Rv^n{Z$&2k>;p6Rf_|15yaFk z7e=;R*MhQ3R!6`O0A*OUgw0+aGUht7+2U)K=^m}PXiI}Q%X5z=lg%=k$h!p5?w*Jd zeU6ej-&iBQCqKl?c+R)eoiUy5fPbZ%CtnxKFDrxpPpPzxOad3zbe_}H#iLSTBkXOH z9#@qLT%+u%=^*p*OFyeJ^<|BrlBr+9$J|sZ@$vokwVCXdFwS3!$m`G1JdbC^hXT=Z zPvmO~!Jb??`#-kNcK-7YiGTh0sf<)bn?F-r6*vO~g{Hjs+i0+0Y|_e-(SHNVZ;>O~ zV9^FkkJWSRf7P}MazdYBT*}ZxHa3|B_H};*sTnevyqR>M+{I7Q3rFcAIiR|&lC2OQ z+7syqr26rlvE9n6Kj#j3@rBj2fEEQFEFTkND}==^=&XqIQznf{xXq zel#pqVgxrKjb;2i<4PpL8EIYKX)G!QMdDZ>W7IYnQnqy}ID|@2SsqkHYim@s4l zHD@7&m>aA8f-N1Gc#xlwZ7mfB8Gn{a1B{^{|yWuDHm?PT6u=Og!oZzTbe)uerzu zh1}o^S?N%uKhAZ|AHJk)PTTIE&8alWA(yw5I9km6sovvIfPm%7YOv?z{S~G6o=qUC zrc-&*;N659IOQVdDuhrTp_Pv-lRAy3Hwx0oeI?(uWq+6V3zo(qXeEzes|i;9gGkr} zr7~^RM8wc?T}!>-Rq2)m^j@P%N53a4wVS4a4KPwFCvpk{qXv6OKm*?@Ro>NB zP_2ecZ^#TX8N!g1tE{UqKg&g7n0ou~jSr+dJ}9=qYI}x}El72sZhY!JWPRt>x>wf7 zwZd4H;(y+E1w&~{t7Y%;Ut!r@HlERD(=9)~y2+BztEs&#-jCC&Lcv$`r z{4eSh!$WjG8NVt*MMkp{=2CjUu1X}(uV z?7)Md+zV=?o#*h(YGiad*tCmzAiIOk{bj#Ks)x(P&=zX%NsXhR7@1D%%aV=s+a`9V zT|9nUFQfTNT)i7ud&g1IQ?YJ$-QsP-jK<;70LgpfOsubWIL@s4ruvOUtDYHvBhjj? z_kS(wOA+Y09<;m1SNiQ$YWWpIIYdJMSTz|<3!=~r`emeG2Qe&82l`X&UjCyZaY31w zRd>JACeMwksO%inOBDeYEVPvFx}X%{ex5|LuGuRmnqmeb6x=BP|2z8t7W?h4&j zS#%yunN@iRW}XXtdD~d$!BpqL5I?}sRe!0YcZN`2yG=?*bL6AOS9Xu)R2&D~NHAw~ zTYd=6o?w})9@}~6K~+vGf#X6GT`ExNShPm3GoqIcMYj^V7Dt`P!8pL+Gy!J~JGTfs z`UFhFPW><`77fmtMh-kgqCI)}7UAfoo>J~43xgmex8Rgkug~-e0XFQMSD~Hm*MGEs zR3+hQuX{9v(q4Do>&7lZ6e$&p)#k5;uh#`%+Wzg&m8~zXaukdlgrLp3=c7Wv*uJQo zMk5uuyD>D<-nd4i`eC#;F8@@>#Dx^Pwrh1r%jsYl>P*~9{ti^$`8)vTi*}}kN-;WL z_tNrp$KlZc`MTpwtZ%eooLTkF*MA*}Rz34|N1|1ad|d`Y*Hr6IeEuEnBnVYaC(NL0 zA+tkFs3S@4CGQIc<cl!kfLS;;Q;L(l6_m!@DzZy%0-K&q>dG`>X)-@L) zxlG<%UHG;q8U;HauNse$8$fn#fVB#XIHDk#8#Mr6Xc8Bo0zieH3iN4hIt|I7tTtw3k(|Eo=i8Y-FIqz2Tf!{hEIR9H|susS1xV!>#Pws@uWFqg)Ez3A9grLQ?>< zh&(NK`!7H(mH<7+K|$F0=2vC}i~>V#0H&*))G@o6uX$RxjwN(bqf1?5uQ&qs9G4(y zw->i_Z|``V9-`=qkcul zrP;djf^t2_rLs24^I{bb5jVI_Li7s|T;-Z|Bw*NMVt~9bz+zH55>OopAQq+&b!dfg zwbr)G+!DxIys>rpM({BkSjpeQqOe*(I%j&fG8D7~oY)QO;Rk=2ZU{XWU)6c4_JdC9 z2QiPjp@+OPiHMRPL|n`Atrg5Cg~bU47cxJWz_{`n0tNR_oK&_T25^5MJkk z&nnLS7oZsL0Mvg90PEh*tCd4Aa=b&@1M!^iPx16q^f`8yar7nK8}-Svj`pMqAf7Zw zdx-5Ih**bfsO?<&BO&+1M|Dm>AD_N=);V@LO6Ro{o=)lF1zy&uuiQ{_ua9F+~vqg*cGjx#~g28j2^c~`^ zg_rs+?;*uk#n$W$Sl+oa11gIP?j@p@LHnw0jZpe9TSV&vEAz+?#9T@ZrOz}Ii3m!) zt#OC~)3bjYF2%e`cBW{184TrHgc3V}!>CWd;7#(bgq^BL`Hw&IEl}yVC9JHT%jsl9 zd4XZK^;NfKE=w74eH#+oA+uOX%H(`XH~TSTKB67YO7!gyC4jkTn}eZ{0bla@(owC3 zywk;oyHrMMA!Pqh-=wL7Ao0DyBXcKT|8`5w{;7Yut3ewh*X`1c`t;1 z$WyFZXZUdJ3$8Ofj_eF@cr?z$dM6c(GONCIhDV}R&pN{+(W*zCVH|o01hj)0eTF^s zB*=eRO()Z35ILlSt#LbdWK9T=R}kLoxFh?Q<@#~aPHz>@39p$js%M4zba2bN%w8d8Y5;bMFCLfvTP) z@g0kJ?xjppop<`^@~R9X5QH|w@Z3k_XFDV%H1K`L8$4=rEr+Dc4?-F^r#T@zM=M~V zBZu=u|c$00%Y1L6KeXm23&9<#?WG^GTD)YVOK^)YmLqPpGf*;s$K zKbvltk!~y7N=|fJ*|XEC$8j$M3=tb2+|&S}%dGvzRJ&I>HVAF8(;e(p#ZPMXs-i*o zK8~iz{Ii?UPGP4Oi%P$CzgT>Eik4rbNbv6`B3>vjV$P!{&X?bQSxm5LTF3+xRWc`= zuOa)b;4c&8C5jY(Z0MBjBUK+sD5ybe?K>9?XQsKJmQa zyJ>2H)B<^w1Q%^X+a@(h_g3qz4k@&zXiX_Xca3E&o+uQGwnA#!O%*chW%s1_h?}`t zIl0_GItgkx>gie>L&%e^#i46)=vo}-r&X`ytN@q{>slNQbfRVepyPiGelK*yyqyxY zTnc=8K~3`d2yYsurrR$1b8^~97liG>OPbSec^pb6!$<#?V!VndciP1AG8;zbJ(w~E1Xnc<~{a{ zYQVpo`PFO#move-&EXs~tlcuilji6?utR{|uzPf0Uva+G=)S(h;-a)g!u3tk4CFUB@1J66CC=6GCo?!8T5M718}hl{tU-!tq`pK6uRhbG(awz!(>n2tqBLpt+oJ~Y8D^08@o$0?-a zZ9D908*Y2v1D(3XYp&TUbxxc_f8NT0Tr5g`vKL16hl)2FTS z6&W-YClx$L=zYzNGm6+O_^Ap1|AG`p#kJPF1i*n@zV^)j(WHD{!Ut z<&-*m0>^U$j5;^8(O9JsNh6X*qy|Kq#_kfb5$ z$S{9xV`#)=6oM|PTibc_H;jCRNh8ulBa)7xX+%0QjE(uz}Xc zQa|)=36r?a3FP1=bn-$+{LOFfS3mzdtt(#BF#oyvdOS@LlA$w)iJh+;(lixiy=!-gKxyWNZW5_kl zh7_z<-Af8G8Uz+OPN9KzL!C`<{Ry(=p3yfFN^4yDbC+$c|F9~V1b{gma#SY#k%-JDXP-BVXMA?bLYtMgeaL1OfAHjkg+a^^IqZx4nceh1Msoy)zZ)VbsGo zusW1i*3hG&M~dag@XDr*rF-~N5L0K$OpJ4l?|>+>3I>o<%g zZe!>Jo0Gzj%7G0Gv4h-8RbuVMYt7ciU+>xI6PrQkKZqBPeJ`YeO!d=%s{ywY;Oe-k z23)!5mPaLtv?9tdW$oe$)Xk$;s!ycFcgIIfr`V2Z|hYD$J!S#O_dfv-_ z)LaI*VrU%#IH^x*2)%5v{Ms1DSLn**D79Q{rv90hr8lAOfp>7u1LjiPofm6tn zZWgM`9_X?M=ciSVvIihU4i4#Qx)Jox;G9Q@!-PW&ES{;89mqFllzS*Wx z_|>Cu-?S8s!ncpYX`Y-4ATi&jf$#t|AZb9-fTRKGR?NcZzIk$|wF?15$Z5I7iRN(pan|=AEXFqAtWR&ZNe{CS8c(Y^>W?XK0v_E_l#NPISS8v(u_i!2{?yF0x92 zBMKQYEnoC*%{Uzmiw)<7mn~L?@eH_MQ91;>%OC{2~>Te>D;2ketOldg3ek?U%&_o2G?KKyk+9 zzs|9HwuMX|WntfSK1#-fjF7TJfWM!=4$(nCt#xfRm@yb{~#>O;x ziI<<_`6ON$iwA=n1jg57{mB34=Z|*^FaR;bp@&P&TB+@NuAdW`)>4EpvEKpN+ZMyI9PomQKx@vxaoL1>n9S}*5_h5= zM}`#g6Gg*dzn4^rTKY%!sxfM*vJ&{VKqILdhiD`D1E~mf0Ya7e=@erni58b>ZjLa7CcwA^=NwPG|ruH%NVE1-L4HG5}ot z%&n7Iv`i5}z*VYaRhVT&+=kw)xT(v(`p6}LkFj1x)A)zQ!vnX6*I$K6%=bHqW!nQsDbDTwb-a8M?<~FPk+XTpCF+Z@lzYhX!xVo@`;D6u zd{_S_D%sVISQOmDFi%l%-)~1s_soNnJ~OS__sH!aFD>pS*uJf!w-fMRKYl7w%~hU|Y;ms<>c2jM`aL{KYTYLWB9|9BFvRZ4(-?oTF^f17N7 zB_3BOpXxq*0BV*1wGw{)_@nWwNFS=&H3UwJZKV$FQ=kP5*k%f}>vso9kdpb!Y|vVW z!_c*?a$x+VY^kSnDNCn{h)Kmoo!VFI(@1i!P&|)KhkIBoiZ{@P87+S~bkAFnq57@D z_N!UP%lDNVL%FIKKv^*9f@EX;?w<;CXNY2#hJ$b2L!=n)7u0-S+fEy#&0pep)7k3) zf@V~C8OOdK8UNFGQ8{>Jw&(h`Qj*XOu`%;JuYi&FoRN{z3A#rE<|$pRuXKjF@!-Kz za(73nkut=x1vN8GA+>)&gjiY%%V?9S^E<2d>843^9Baabvh7gai9gE9-hFqkR*{3) zHVy-o_Jr4{RyCUfu^rF$RjNu|@S@}S55N9gjU}zb=iog;XqNGMvz-6G|2t6;A{?NQ zrU?ueW#<*M`fFqX5@cbgg94n&tvoKvrVTK4!8r{a#rf~p((He?{#5iut5?pAb1$I2 zN)w?od!8*ExqnOMli6l^n8=Wlu2Xtz`qTCas2R8T4_jn95(fZ^J(a6jr{GGB=vV|p z9Cp|MbkL%W)G1G=(+!}p7Oc#N)=`u6c8^l*goVI^4n60-R0-Znu@h<|j4s{jZmDzi z$DzmMOF2+sI<|isn&8~K*|0QA;}EThrXCb<2@OD4%BNK!T51^E$n@>XwED|5>8-YakC z4@SQ$?u|oCM+Hb|C^Ca(I>;>oN%f*J!lnzHQfAC+LeGC;!ypg^9`wu(yOA>KvT0QX zHpG+v&)%0Vxs6{45nvz`7v)X|L>dhlgv2@fCNE+OaR=fM2EY?1J1O8HbYVNPhNJ`UdHmFG_wPf=KG~>xX z#t$@w?lzo&Ym?;wgLxhVx50p>zR|Qe*l1$03TA)8{b?tWrKS73Nn}njbsH$MZ%OJ@ z(sS+7*<)~x&c85QTEjztBQXs*PNHCtka;)>1`k;&TaUa+RwXt=KMqDSf0)q|Tf{uE zVCZ}B!b^yM=SL6W%qPPT6QQx*;C@D?UNR<=pdWeBLt2`H#RT|GVJJOba1D~`ehk#`R>LBnW;uI3CosPJ z?b{xUiQpYWa>~(Wh0{3GG|~Gwy<}2tyCHv>YHolVOQz5xHgX8cX0%ANk_hb8ReKBz5Au73#A^jyk2)_32ns%%ol0s>U7vti)|$+0pd^ zdgQ}6T)?`&p_#|O{rbONef;Ndzy6E(Ifw`gBZ&2kAOZapLuA71?8XQ%@WQAGrtIfu zTGTf6eXO7Hqkt-nN#WTZA#doJSIU1#Q{S6qHW5r*j6YkpI;APMgE8z{d~zFwQv$Y% zo}WPv`Aamq;R4HRAHdqDh8`2Sv6p$|!JC2q9PBl<+cThck~;-i!~W-iKZo97sMs$4 z+as?&TIKo031)c@K>(l^m?bSb@S|IQkW8>^Fz4_+Ef}Cpyu}ff=tN%*H(GzEA!4n?T36_aq|$rq1+*Fi zEIM|Wc^#|HpqbnS82)it2v%r`MaB(L)daU>utZ7LbTI#CA>&ljY|1#5u{JU;_rNjt zu?XCoftY*oCo+8i(EyfV6mNfuUr|F($50Uqc%7cIF7V)Fb*gHv^2^hQYl&RvmsfU4 zsZ$-)G{`6nf&VA)dFmc-90pfa+GO#8+TOB|#v&i?3U?A)&Ep*z+kXth$tQ5>%RIea z9n-C^I=F=}T9l)%jcJHg%nUT6Tl%`{q^z%1;cqr@_EMz0!ex`dy)b_ovC+0PhRuq( zih0RfcCDgniI!`YT~1M#I7eD9-aVBHqT8TN6;#BrX{3UbbrnSSd=$(j94yvc_(opG z7El|-;Uv-E4!6n6UvJ+zkck}qzt`!Bzs%$eGIWPwqwWc%Nc=N)e!z`+IKMn?C6iJHq zG^P8}PoT!psoQ@h^M(0u#Soyox*QD(_HM>q7@%glFyJF%K*~rd?iVl{8b>g+)C^_^ z24LJH*#7{j9+oEwxbPqBzcB5x6~}Zfhwi5fN|JYZN#Q9n(CN)2bpkidvxML8w-=o8ZUn1`l z*xwI{w)(ILx{(2RECXOE;sydmBBGXG{26VF8c#fX0%tQW_Ec;%i%-Q~0Qx#yL-`;B zm>`}}rOkh3C|xOZUf~RliW_KyK6ua%puq2FP!EYiU*rTy8(FGzZ}mk=c6=5V2-N!= zmT4Vrq`ydG-nhTY!ges^aEjxI2e?4%;3Sj8k7lp}clg_7k8}9x=U|!z@?aPJ;muo{ z0xU&~OyM&Kzbx>wtI(iMF^ta3mgTDFar9jc0H%Mg0f03Tex2@baci3%qEIFJV-PQZ zHSny8zQ6j1MDD$4hP*yO?syK*Q*OvUjeEUy`c~?VEwEsMt4prz9{$j!+OGUtxFB)5 zE5L&oIyDS9=hMUUYTR~GO5lxOJ@Pud$3yJr=)yk0&oMwhNJzW@E~hj?zlDB-!a*f# zM&EyC{a`Q?pFoL=(OpV^gfVj}7|iLw!<{rxav0pDC0W3> zU;HR!a3;27B5|&(nT}hk2I3S=;w8JJjx|-HWo#RC%F;Obw@nB9VUu z&_QOPvGkmN7@|W#{3xQb3syK!8KTxV@(2D9jn*hYjR9n^C}&ZLqV8zmmw2co(b-J4 zN$wgzV37Rw>%TA(wmz~DeBc;Ao-Kfl??5%BpEefYEmY3%wpIf^?(XAIBYOFAhVI5B z_~Lh5sGOyk;Jzfy;dqzkEABFZJJEkf3n~Ifg}i+K(z^xM3G`43aE2s+H!39_zIhL> zYY|v$6OL#_&NZ;&j|i3a{WnwZ=P-JWpv2hX3bWXV0&jvJQNZHLhY`0peT??fr+?Q@ zLmW{_;TzU~*}MTdh;#<@;}2tR2#uTBT}|WWc%m*z&}r;ps?h_3_Otm9x zt}Jr`3(~OeJ%U>Zmk@<*dfe0!*ct z2B*pbW|*IYvY_#y8ydxDM_OvYrzv_xTQ|SGE?Vwe+o8sF>6(9Tl%EaA3v_z=_|LaY zIJlf_8jewp)SjNJSs+Xm#}*Zy>1K@6ZTdw=cEP=DvFYDctF;e#tQNGgohz(P<>1&` z!Zp3RA_kdavI!>b(HiK4Onf}@9SjyUWucHN#e#?`JGN|N3cxwjxN$^mzdG^k09LyP z9XFV-Q_zt$)F^+MHg9p-QxWK=$XeHJlf6dC=RLAAs<)rwUlv~E{{+n>N9F69FSnG=n^>x5%RDc#ByXS472r7mbO#Gg+HriX%kI1p8TK6imnBhl4D)>0 zA)6*k{9hDR-LUu;9@i!Mbf)~x>;ycu_`hshrpq%SP+xy|`NGQw3f6=j3o}zPJ zxc0)er{`Lh_`j<1w(3wQ)<+lrmv~JBj}3EAA6@)k5H*{ZToydIVT-PP6pfQiTNAZaigX1h?#c|`WAu#i=1L?|VQ7W&0+x1=RPFK1MOAir z!zi8Tfrx**qDGN&R&=b)urH;gZ_luAQUu(Ti2bTO{A%=7t%$zLO5)~;`OVj{S_>fp z@LMm5g3sMb*Y-5X>m>4KF_xp3Mw72Vp`IXvHf0KGT*?i$>8q-8175aVc_)7J*IaG@ zzKSiXMvKkOVb56dh<4GLDctzjRQD~}r!KUK5j!>i}?{^{rRvS9dU>Lu&HDEIZ!&co?^djrw0zs4&o@)!E|V zhSL>~YM*0icz-F+*@9qLEs|-zE|pt*u1ejjiI@1LpmTGMY+(nYFoB*s@!q~jaf<23 z18;wFF0)7UDa6wOTg-C$py2hFj&l0c%q^e^?UYch&|Qr4#W;WM#`&D+l9X>KJt1AD zG+^@6GFH*RgHd>069lG9Pc9zJQ8L4JE;oF$@PC>oWt3c|z*8x(EGd#Ea4n8!($PyI zXE-Y`@#7iScFUd(w@&DeYD4!qmVMaJJ&u2;l?~m|Kh=jvw4wVPPFEYc&#`p1p?jrE zM;p3Vx?q2(R2$e%(Xnk;vRWL>A47XK(UjHmQzTB71*3IzA%$nwub?voAgm1zWsGcc(S9E1bRIS$aSSrseI=y@Ai7b9Lp(cyp*sa_6 z8gDh;>yS1xJ9jm?W=K})o-9^vGYhnGf_04Fe0qnmT{~#f$kMk-F+JF5T5ZGjwJK?P z>&Keoooc1TTi{T)!W6nFrHfLceO-T)(nTrNcatimy)Vtq6?otHpt)K>DyGU=YMbK6 zV<^aGy0AM{S?UiI&MhrfS3$MtTR z%70{6Fb!9|)LNG`SYaV*l+_Ncv{iX94RUjOKL-B&a@*TxqBX<${`i%7%j8U^aI)^I zuI*fy^e{|%{fr0Q@hwY{yP(^Wt-EIq&74hZDJo2wP?1g36zKJC7bbfQnlRn@{g)a?Rk3WSU8dj&`kC)Ywozd;$y2mxfuVGJ_iUAA%0DNsZhmr&n-9+E zy&cvL@7mPPt)v#Xf)RhQ&5{*UHTdI%PcG9~i5XgbO|FkSs6?j5nyR@3QMp`u~3Oa&^Mz-Yx;kkHa6dt#6L2+9I95wg(w ztr(SnVPZaf+Q0=7Y}?U#1tOTBiHd6JJ9hS8Ga{HQIS#LAt+9WqF1M~6-jvlM4sDq* z(x@e<@>0~+R+xP`=#a0#u@x$eMw$O4%MlGjJT?07h1IfkYujJrI^C>4{O%{9$RLQp zWqfp8K1McwP693aR}>ieUgbZxJKwu`D_ zS{7&&?BOXmfqT*H#GQm*LVj6zLo)Kish>par}5RKqr`>YvTDZc{X~M8arN+ zP1(@e11q__PQA_(OKs(-QZjVL4J|gdt9Y&Oa5p8pWeizfBK^yBhR(T$=}7H^0GCBR z!6K(=PV9e+EOUy?NoMQK)zgAVJ9%|riy`e~yY1L(jS6EcxUq7Awer#e2`o$8W9Ded zQAI(pTja}LIQqiT$KdF!K!9>I14D}fXX$zyjN`*PivPisN21A^qL{5g`krL)?zK0$ zeR10=f~N?I?iwf0K5e3+(rI5Jcm=+A3K2YBxkP{P*xC58Meyj+aV2Z8h46UAFggC@ z7u?|Bn(3*t3gOXJ_=;nAymH<#JW*G8iC0ct=)2WXNjA0#n}gVD?%l3u)-Vd5>;U5;>Q+MNHftZS%Wb%NU%(ayWHr+&{3;(-uU`aAMRALTjdnl zk9S&+W?$;R(EwK(hk;z(arV#e9^;*pF2;YG-e}FkO`QkO-fDI3nk~r18LFwcZfm#u zY28f55?T{2P1J3@MOg4+rC2!sVx>Ay@YxIg`3s&6j+c{otwRy^g_|$jd}wYa%-qab zwkUH->l?!_+z3`f+|lLLk{m&Z#Sy}%<+A&!12ux-M| zk1mj20p+r6oGn35wlvPrTHh6R@q@oAKe&?LIy%CaQ2G-NrMD@+?mU9CkEM%>r0Nm{ zP`$*`*{*XHIn5D`76mWIpx6oSw7h>9ud^^-`;4%QDlZzAai%4!7aqUx_#Wc!nk}j( z-=ZMs!s8bnKQWIJMm;VGvL;a&?o&qp9{EidTVosSF?vaK3|Dna0S?iWb;Y7}H#-zg zqZR6WgF#iu20z(-g@J78qAp9NN+Qt~72tKeyJI!aQ(a*|N3nT@0lhw8NrHa{7Zpf7 za)U_p(0%DgdH2rhk^(6oApP;>l7f_=qNzGcndPf4Dc}`{=k;BH17Gtc1%l;RoGRcw z9lNxCCDrTC)7BqPr8519RnaWfYE<_W{FzSuSz?WW3YCsct@>_ojIk9x>`Z@`W?o~OTNI}kgtBr&1Bd48LN5BR-gN#)@}@viCb&|tjf!QR zn%CL*WeNr&3cSgMSN6gyZ!>Z-0X55t&FM@xTA!XzsII>-$zGU*Mmm`|MC4rEFjKjD>4>)YgI%g;Cj7h}mO=QKff3>pNv@b>xe zHuWGdHTJP{_%f=)vJn?~T~kztr4;M9%t*3B;2U_X1AEd{?ai~C>-{b4vv0|Zwo6;w z{PsqZu@u9(%*^o<+$imTp>-%~DVBC^>)s z3Wcev-my)=)X#4xy(g-6Hyx~m)CEzN1eW5B$4kiep4ET#w@itQrot;4Q%(7)l^QW(Qf|9 zk1(#bvdQ9@zy^bJWu^<&A2Tc0x+*!#VtUc{ga!&2s3uyXAt~~CossgAv~RLSezJ(l z_I0ZYXvu%;t)o}hOn0~mhOX(#snd5(#^fy*B|qKk1#u=Otybt6lanCZoUV&168Le6 z)WKQ2M$*1(ZDmvMnKIP=#`Emkw)iLoMjLiwGZ;X|rz}cA78TQw&9Bz-byo@>=Kf$Y z@!IKaHm#tD7Uvk!*Q z&0ypt({j&gRu0oDil%4?yn9|Ty;fGMj4053l`FeobLvfxhR=`{XypqAB*>rW`{3I-QSdT7dbqAUA@ctPtdFvSA(i`_b&%>GD@~&7$&CR)*Evrn( zuJ_x)3yHni8+LC5#20*Hqi&R;W-F3zUDA3^rM{&R{MT6T(jzuv{d~)jluGn*Qg54(qz$M$)czSrdfymYBQPA^7L2SIQK^R6Sb4zIf-{wr?h>Q1(}yM zdhEwCi3)Tbnd5Xrte-@Nu4AmvpkIZqLr1ZRt|JwMY+KU0URDmpIj!UF5ZLHI6SIGT zAD4cV56q$ZD;rie^i85lw&hx8xt57DWK}aA%;KvhYAVec@z^N6M;s$ev#Ovpo#|5g zS?F0gos7tQkG#5hONRcPKMCj4O{cVi)=D;lVpq1!+h#iN+sP17Jjn9ZN6P?7xK+GN#-xFuI}&ed!sNMP5j;4p&X#8Gq;s5wVIQM6xNiU2>@IeHlfo>k)B~ht`rdH=_OtcFEB$k#k3PMAtNrltmFSCe-v596%P)67 zc>m7*?Hlqx#?;U)XSSONHAM7NYqm{?h^lD`oXX<(SF*d{$Q;kA9e24LH$dcfFfiCu z&&T!3J_orftNH?c)&|GgPOaauk#jr-@-;aZ2{akAYbw<=8e9)%9;4ho)w6bxK@S>DV6CL{N~?Bb$ik2d{@6&__@ROha15U=BK< z8og%0_7jgwfBW@cF~MDUSweT3R?byKPB2P=5}r3z$)ZuBT6sO%W|3-*&CO!IRZADF z!RA}&k-x%z>D3Lvpmu+78w@B78Fu1oKH5z>Dw3jUn#dAxdb%#kL7b0+xE1X-;;U`; zRldo-f-N?94#-K82;M~G_XLg?IE_E4X8owsQGu>8hkiOS@r?MAX{(!l1j1mipWaP?3>WTJNo)2^J}oVfQL) z7E3ZxwdGGW;C|F4qt#!vQp3EWP39AC=EG7w5ZJf{GavOAiG6Q6@#8rAmPGVCA0_EF z3a5m&Lxz9h{S5V70!lDmM7Qu+k67M}V3DpD^@AkBW}&livOpzB!dv1`{5xv!$lHw%B?Azdj6H!nJacfJ=VMjUvRcb^R- z?;a=zFXu1Qq#7~=pWq|(^$mSxE??a&Um+==3OR`MU-SG>57^E2= ziYl6-PVN5uCD0b;NCuy=;#gC#B#8`gHza_Nt7(!2Jau~uMg)B>cy>ZNLvnsYkObe5 zKK_4ApB#pRcM(Cgh_?==wk()>BcJDcKhIOeHGety;qDbmZ7^^nc;sCKAA2vUAO{2F zty%mM$diRr;=$OTdNB>Dz<0M;?vcbaw31P4I=K=!PPv+T!R(ttQ+O#dSwumLrslx_ zk29b(c=d9=92UIl+}iB!T`<7q#y3EVjADOW4Z-rK@HYgc?beUp`x8(ecm8`n4!-yq z`LUPvw)>M{?goP`OYdQ&v9ZDzwBc1-_%5c> z;Jy5O8%^=w@b;E`rc-#xM&luGZDp*h)z9ZqoV@Zuqv8t~9gKmlqjz@`XQRm<$%cQE z4uHOd|L7BiMK8Wb>B?n^O4?GyHe9H47ir!#ZJD<*a$FQ?(Q-A-cIgiJkRpxOh!r_h zzld}*kzNw)Kq9SVl6Mj5M++!`T3u&Q@gmX9Bzj4(LrFBfCiWuHH4#F^ z6>U{v+4|Q91J}PfU@)+H4x*+QqNJ4oU?khL9aYCqA8C|R$)Y5?Vo^KG)r%B3bQBbo z#9$I8<7Tn1ZT0X>QBqrRbeXQ=DMDCnqNJM^bsUVw^j4v~q5E;LN*l>3Y>I{(?6TExr7DlwN-jFVfpgdY1${ zl=RY6){FGk#X>mCG6k0VlInNs>))iIFN+rxij7n5QF3fU=J`^OoFtfnMH6BkYXmOM zGh7C4u=~ydwE8H|?i9nktcN2X#xx(6AbQ9GWR6&2_z9Cs%i)}g&{+n{1pj0W_b2~= zj_<$!MiV)j!k)(9hM#}EbXf3!8Ad}tis`#>UK%F6jlaOJ>5DW=jZ%n~MIiPv{x59` z@!Hz|x*sM9h+6C4M@70f|9LQjCHG%@e2*PIJk0_|y`|y80n*fcnE#J{Et#GoK z&I;eJeJ~4Oo8BxnDERKj{M~X4OOAaN1w(u}f`6fnbm$T~yaw%QN|uNq$SuRGZL@jl zOsZ2(4RX7fOh|w1Cm4DLV;9W*m<;_XUH~3>H0&JHAT$LjSW`wNMY@IvNf;6(crZ%|?jgWJL^YB}?!my4 zJ1+|S^p za{^oVhZjls;x?R2fTsRu4?m9yR>Y^|EF364N7~*4BjLYZM!TUO529e6pFg4;z<(id zbl)E%xU26CQslX^irfa#xLl_yy5lFAp-umGF}HuJs_UH2$qb8DUp%w^O^egaI)-vB za5-4e)Q&zjSr;9};YyWAyr}B1|Jhniw$HI`=W??AUzz`k!z)zRomu3I*99K7?nt0w z7uPOpB$XS4bS9!JDsnhxy3U^6nYj)_gB-o(>U&pE;spG4&3VdZ& z0sntVKdZ!>mTcP<9JK_|ETEvd^e(|#wRPUXDK%4I6^gBL0$m4Ft8)$TqaMP=s^od2 zG`SFis-8*-4CDw?xd!La!#yLGYd0Qmip+h~@&0McAgk>)2h41M;I1>iWQv;WYG;8| zk$P>L75I5Yd^+<675MTJKP*`!A>NMBq!NEWE$7+NLHkO4f#)1>o?7665p4DJvJ?(P!Y-3Ed?1P!i(Yp_8kxCM8I03pHM z-CYtSxWhNO_x;{|-~H#!TD$kusZ+bU*6N;FU0rn!>f7o-O0m_$4PGouYp?JRjYPfa&n5C3Sg$*STzDfH%pVJB9jY&~ zsO~OD{S97Q%@ML#FQu367>uX2$h=<<-=0C!LwWt;vZU6(ySQtAfDmI8_cjspoj5BL z>ji9Bd211_97Io509wIGxHEEhG4)5P5Imjv7bP}7zk5&DgI8CoHF^}3+3?y9Z*;KE zLX*Eu9bcDI6psrxEhsU_;7f=HtKn*cpaF*|!A&!#srGegy3yZ_I6R4-u)QLO`9rJU zBeGK!o)P~;Kvw#V5x=dHN9SX>WQ6gOVLvHEv7(&~1q^S7(FAhbLB(3fcO zsR-C>4}v>ODRHkP7xxH1gy|k9LX4+T5gncEkS|X73p71_y%md)j@0)nla$DuXnBzzf}WwzA5-WErEZ~j;eA* zQfUnLqpsiUdCzeY$q*oF;(a~C*&uW(2j1KaW-VShqs0zn*6z#;ebLd@Y;gPtw!7WexAWo#h8myz0EIPIw+c9&j{fK*;RhkAkhHwKi$=7B9d%G+E-)sO?WJq>P=Lcb1zS{_pO@t<%T%Z+@kzZlC`;m3)Uu z^+QG%a}D&fVWx14G~qO$_)$h}ut9(}E4_+4Gno4bGSDGll}XrFwAM=eMVnA%APeVO zEhKB&YTB_Op5a54k;>9sP6@GtP?#%~RNbpjy;1c$gl09viTCZqI*BGdVOrDai8MVF za+B{EZsI*s+y@$Ss@EZ+7M=PGU&ObSv2nhnJ8yurBuY0-+~qSMPNQ`XV5M{f&BJd} zJ^KBAl;fHu-jXiDBXcg}=>^F}RiQC2|WV(eKzSGL?M1JHU)mVpH`9H9c!rra*?6Z|9 zJ)(m=ylk+o025%wqum-FddqVx<@b?x;9y*Xbn^B=jIS`SlY6Vog>)AsuGv4=QRnw> zkUP~!dU?rRZczpDI7rHhM!0M3Z{27Qm*&jZytzm-&k7zWZs{qJXXWl%JWd%V{X!I*caoiKVb(F?ql|(Azx>vx0Hx3o78d})3Ii{^~_#( zc^RJUl3}8-tNJNy#ja=mt9@`h9cb5*ZxErCovXVG?R0T zm<>ItzrVBt*|0in?MAfx7orHr!1vT@&@h_6I#$LlAgnXJ<)r6JJE<$~j?XnuLSjTsxeG>CM9LRN9cQI3iK6X57V%zParZ1Yz~zZu28e+ zjf7m>P&OQWr8%#~T3&+3M$^B6$V=|l7KY!Q^0$c z^}(UPG#hPfLCfMTKhU*;%SSO4#-$m#&{8MQ9!}CR40m7n4#Jr?qxUJpYRSleyJJ}F5Dl{+%7+IOGq7B}oBSXj^aOqulW6X~ zLiS97qM;Kes+1R^C18i zW9HD$(NA`Uyr1{xHcBi}y*3pMtX8T2im^IwzZE}h3}G!V0v$uTLrXO(l9t1qafHT` z#xS=SKc>r?*aXju!mnR)k^5oqVM-EFc~^c#6sgjswC3w2gkR?m{}J_y?ngT1=_B#} z0^fVCn6&7I_iira$@Pk+>>P)fJvY*vJ6E*MfkbgvM%uyD z?D@V)rTpEg9SGNNH;RXY6nqE!ShwH2%oO`(ij)wUPnI{7_k;Yt3S~VUlAVI)Xc6|i zuP|VW`Z8myt23Wno#uD0s4Eq0g8?b9jjrSfw$aVk#tq45j#mPENmdG92F<>FA1&>tC{k6`>{ZM-R^-pii5Z;J^at}C3Xlpiqlm_#sMvQQA~!gy=08Ap zX-j2zcz9C$U%=bZeo_+#m@|9}<4J76H$*5+*Ap!-!V%SOvT4z6| zvO2`?Xq1%W`O}hi5m;LA7xaC$W;R+uN_1b7!Ffh#zw4G^!x%=Q7)D^BfP(@a3Ir$+ zp+JHH8446AP@zDB0v!qrC@`VGYGoL~-s3=<_(<17iVg$A!ww;M#MXhEGj9F#h^+_< zx&ts(c63o@78K`pICU7FK1i50V~*eW_$~^3vN$W>=QQ$P6|IWQ%gXvwusWlhM`{Qr z7+gNfYq>kMnXK)eoen%J3Lp*k#%Zg)A{6%3xF`OZUxaCF(rExzW&rShG?F z%(@T>WFr-JXrK!cR1qgrgi?Tu5xx=fEK;0~rz4eN{QD{~I@CP|R{q}uBT%%+vZItK zM-ga3qi(mg+^OCbes$F-GAgg4#%{9-*`02>fpthF`@^!3U`Y#%%!(@~=C1sg~CY^;oD#wnqszaOwZ&mB6B~k{zoyH7wa3O9<{L8OW#eniYKTsx# z89&j}n0MEwI8B!;1VyCa4|8MGpX4Il0)%h`@sK3>P|~zL5P*2EY){Xu zycpL+y1baiUHVDE$urnZ(vaz|Ns?YW3JFIw7rFA*w?v?e8p#PZN;#JDDMs&xmY*J9 z`pRguWef)Yb~JSn8`3HRNeBr?iY~#KP=@S0aB&Y4?n`{b*YGZA(6SZ^8D?3eAqq5Z z%2l1@A`MruSOZ*GnrvHmkZ(St6_BwRS86-DfEHa)LPIMWgQWHwKfxnBU9|?WW+snl zq8{R)pEZ-9WtR}zQIg2WGU|D)=pEteAj_Y6gblkffUHn(%Z_m&w*ciCNKTj0?dL+xjEaIr zyxvqv=Ce=m?ev#yy0hN)zCY7VM1P&&ktJ8`dNoWk)5V{%`970`I>HyU8&Gmd{ zsN{4@8bvEShYSE}nzdi}b>Dg$5Y68&kXcig_PnCgk~+CkS#a1yt0^f!d&fP%qMnx; z__R|KRW;LJ_JyttBuDQ!>ws4C8H275F~Nq>{g-drHh#vIXe6%I$!x<=ZnP4j|NM>6&Zl-VRLR80o=L$du z?9WJw&o+--Qn*3B#^+~=<8jI2)3qh84=Pko*0jtb{NpO>xo7Eycn~dyhq6feBrq61 zq_LR5FLsNsrWFL^sTw`t77{C+sLq+)fN^fN66+_0Y={(PJv*?yHX}q*3P{7X>U^)a zT`}&P?ACGy0^bV0wvF|L6GS5ue2RL8y&cI_+};um*Fp5%$|$5or2$(zQgM`T^j|4Z z)DvCB`ofaz5MT>>U!-5c9~pNNAm-`&%1_{~42o1F)jQ%7VJyH78~wH0xQwm_lr=^1 z-$=TiyaZ~H>(_{97IK0S@mwK3BXED2nmO=^UGtbhf>Ai@`XspN-z$=+aRt*pOnpRR zcZeXx1hWKqk$tNZgwu*C;HoT3+FFW2kmh?sfQA=i3#+G-j7L(g!RF@Dn7V9BJS50_ ziu#H7dI_LOGnmrH0n_C&pc0w$qQ`i^ER%uvm(IgkDa5@|Wru^GzWhMr`F3enUsIX= zcQIKBM1u7sBbgrdC#Hv%9JWXYY0<##3tdu-ruJB9XF_BPyb%-iv=j({Ir%l_TW0tT zAw{BKZR`fIQFDJ^TS$7GqU_l8R}5@mOJPI!f|@03ND*BP#jT6t-%yq=THam^#U4iZ z7g%aSP?l0CnD>jq4%wXD48BIe2Kc}kR}sk&#BLwUjTc?j_Nus|6F`}V!GpKLrMJua z&cGU1Zf(y`LExU8$=8{=r3Hd!+d5nstnQhzsIB*RV0X3?Ul0e2CRsP2CcAJ(uvEdG zRe;N48KJh35w)>G!MY$(y+0lGN$0G-R6!T5Q=Nwh)s`_M1usN+NNWhjdQ@wcN)BTX zWXor85xxsYAV+DNv#geLXH!Z4gWC2J#qHv9Obkc=ayjW%?&yTV$#A0pY#xGbgIa$e z<95cB-Ii!?S58>=P&BIIeTRw~EAvomcH8z8!@(GjO#r*mR+&NDXAB#x2(mc!Ui4Nh z`4yUPgM5BCsX`yh<2Zl)Oe17sOOSYC14YSecka}3$TIPV*cDtX`%O2I)jJyU1nd}n zVP1;DAB5ka+oPv_9g&Xi32FkAa!M-!+RaXB`HORS(|3sL2?xQ)t31Vqaovx&;0ptf z;t_&P?DA~Xs#c}bC4Joy^1sgH60#=^yT+zzDuQr&Y#4)AKyec}kW6$@ zztpHMhoE?OO$gC**Eb}#zsIx@D#Zo*HJT*Z`tyBw;+VA=r~zPI^sBa=TG`B)8+=7Y zTAAB}foKn}$>})wCjYCK$IqQ?4+Rop^Ugfk)!1TMjX#bd;eqW zC0(bFw|t*pT;1U&C$WDzuUF|cgIo?6%xbf5Ua`!aUG63;?^Ho|+-Dc@lr8Klt9iMD zq~`=JFNuM7bz=F6fsKJ322C7sTfggG79peKf1TUKo6jkoYt*~=Ro|}B{FYc>FUvRo z9LtI&LV5!`oaJ9SKizsi-JZ8(T~Y1&)Ymw9NiVTwRW3_pUge3CUrU(YfEIV>f7}K( zu2VWAY^+^WE<5;oOZ=^0{m@OQ`sVhwd!R4YWlo?iCfen>Mk&TsnH&8Zy@j#A<9@_i6_UbjJ%QVwau_ zw(38jf6eO>vDh75osRmQ|rFzP>u`THRrMz^tP9N z-_KS8o|dz#uatwRyw8qX?y}xee!&xfZgS|W8*pG?ILlyQuwh_eyj?z9akzWIu?dF#aQQ^l?Y#4g2yBC+${tyCo)8HS4)-9SyCdp_Y#{=K zk;nN|1tcffA=F3!CeTA~Y9B^2{jzk^I9k&nyImr$v6D6_nAI|8qYu{wPeu`yM;Pft z7Nd&2+~R|G6;FjMTx?8YLZ4|?8=T-T*e}Y#s`tOg1EproNO(>g(=mvb{vwyW5@6O2 z2`}~g4sgt7=@?hATug@2`||q)5LlVxuh(ai4AEQo)N-V-l7bpUXooIGS<$Yu7AwAN zg0>`hl_Cvl2qp`4c}4fqY`Pn>OhfN21SyH=+&7{P4ajNlWJwgUf-;Zer(@GG?x4xF zkXs=}e>HAYUn_5XRy%PCT*5eUZxH@ubM9KKeV!8BX%Q9AA%s5f7b3)X6<*w_a%s>6du9+t0 zws()(Fxiw!;gacnWySMh1Se1zFk{^Fnwy;vPTjZs`|*=P%i8nuI_*|==OG-|+YNgK zGttf)(@(ir)RbpnGz(_m)r%4!p2*2c|Z*b z(}ILNvRiw+O$G%vCwOtqt-EJb@7G-Kuu+}cp5$Q!)?Q#YF}*(^Bml z+(MtV0d`F;`Pq2f@U~rXm82>BIJoJNIjCCHZ1__I2P<)RGW4!2Hz4=8Sy%W++()Xvs+XdO%V{}%f zhFBt)C-cx_7gM_$;dNKP;kh&q$)tf+(D!m~Rat#h8qSf@m)MFH*Vq>%WidO(7}NQs z0PcKq&t5UiV;}jHp6+r@QB9P311YOI+r#HC8}#-uc)s8y!}aM#uwpe z=3He1y*Gc;xXZ=rtilLf+P8SoRPl^xl4yIK4JS2vV+u7(!Ngt*67y(5TI_D*6Ew}q z8I(+yU0~C(6*XOF`x^kdYXw19E7+;b-mu@6{)C&#LPG!G!u;*RImJrcpY^Y(7jWz0 ztX4h+$A>a~4`D;yzUfjf66UHu9OgLtF4LiSoGFp?0nayj6`t0#C_zlEg)W-|45CwZQQZZKukM@6@A(Y(_=|pe%K{YWD9Hm# ztY}4#(xHc|gb~lDl}PQosP7wfG1}nd5FFbX8`hvKNX+K&T}QySSvUQ9$S=`vq!YTVE;V?hlH>D}bH#6VZfbfhZK6anK4P`3Ock`3S)O4bSZHkNr911cmt& z1XBME-7$c_Aam-V5Ob=xn@;r3P8k64vQXIsC)_h7dEr`?F4T=zk61-yn4A#g=;ie@`|7z$lNnqn3cCIhBA$ z{SPZA+D=L|HS60PmjR1z{pLt>>HAT>PmMytev^xI<)y@Z&I~XTXUwPzatW(~Q*@FIUTZe> z-)X;!QMSrz8slQv4m$nPzSnol4##Bq(8gwD*YiHk=ObutzONv5)uNgng>Q|}oKLcB zt0g!eH5bDt$w?{CV{W!dlmrd1GNvgl*!;dJgKn<^rE-evJJ?44Xe5`SfF<4w0Y6WV zShU`Yk+;{2QJ|tA%e>snTSo*g-648QhA-HylvGMc8?#`oEHVT~nNQ}Y)+uH7DTsM^CTxfWc7 zx)a(+f0V>#Ka;Qwj@ z`d>Bwr2ut~`Olz?TIQ7a*grOC$B(9~K(**Vc+e)pGXHE^P@Ca@I-wK!kDXidKfeF3 z`kYcT-ACboszBiw%edN@da6V9k3E~Y)ndOJz%JOjS;0F|E_(Y632mG%!yf`wlnCOG zN=ZidbRMRs?Zipdi7pdP;WZx*3lc`-Kv1GIeIX<)Q_hqqqhuO7C~d89F*GhtRWa4#=!_+BZ@we_T;1{z&`#BNB;0 z;Fbz}KmBt=NaW{Ni>|`XGMiVxH#_0x`Sq{GN{pYkLtUj)Zu^Aw9Ev54Y$;G?)TuJ>FW_cbDPkg>W^iF&@> zx)zkL4g`BS&H2xH;8Q8(0@JFX+u&lsaZ8W!X;tO=7;R$n{*Jn}!mod|=2(_CDmOap zq#J(uUkctU2!!~IG-@?%muR(vwz2es8kbbUuvs9cX}r_<6W~sK(%Aa*h$$GU1nj)8 zhQk`#YY?f(x_F{vJXy{)Y3U&w2FWrLfBOvkip539q-h*vQ2@1}bJv8oG82}lTTi>{ zkxO9NOj+7pyx-aW+t<+6iI{!X^@T$BG%uZ~t1&jKQ-cAp&Fx@T_~a3Ya=y=?#p8xA zN#o=-yYHgo!)vDVsl+}%{dqz{-=BEWJIJMKm)?U8ZKPgsub<_fb%*(o%Uu~>+yZ{M ztpt*1oMl}gUwk~pCBUwct6|Q6N>F?@Y{1Sj*HNHLixS2QGhzSJZB`(wi_iIiRfYFe zm9ml>*K^F&wMme8JDNMlumH`)5Ec7Vf3aN>xvqnKpU!is%AhuBfr$$3#`dg^!)dYX z6MiK_5UE|-(+#TNO{bf9Ztld~J8LqRP-K4YqxXsi?~nk#^HY0eb51wS4hE6rvOUHF z7V~Uxl00U-y0ax$lEs~oJMp`kWS9zQen%a%bM{Ri1#da`*6a&#}* zbAhv~;fv>n636`1eyJ}m0bEj5t@Xp^T?HLGi_bhCxS46-W#UjPNq*DKrDqmYEC@8| zvJ1nCu)(mn>mNR2{>~szoK#Om{5t0@mNAjYp7k5G&*B>}4!{3dk!Ybd0~l~wlaZmz z)5t%L|7lBur;$Aq)J`5xgr3IfO+GG{6Unn%2(cDYnWIdL=N4>+m-IA+O!nNz4K?d3 zk+~K9sBd$Ax%HfqI3lIfTArD&zUZxSZ2RVjMoUje1~+)cvOIlX@8}V)ui2CG5S9c2 z6)8prP4CU2cMZ0U72+RpS^2@Om zHI0|q`o|lRy{T9R50~A1eUs;NX!klM+#MIfRPUQ|;uiDn9_oe@(y5TsQ4Qs>O6~2B4w7+XSgFMMK=WMs` zq_SwuG*9OTN>GzOly_+R)AoI|R(Lt1_g&9x>o(Q%w0(GO8N& zMGTp1G2_!y>|9?WluzluuPD)IPa+!UsRaA9HYcYfg7EsC+ZjGKwyPmaG_U5lm9!3; ztICy$95rHLmxPyoLCWPdT~3{Le)4OzdG>N&|5SJ;e(t=+ZeCDwt=0dVCtLNU!Xn!l zQ%Pr(n=S0G6>rCn8YT~>PXrEb@m}6k2M)inzn65Y_Re)bT7N&eCz|t3(ZGy$jmepLF#E zT!U;0t5XA&(a6%pGICibBC>kJOPS^9L}d-gQP!im!Q=totK~a4L&HGp9#;gFn!oTY zh4!hEc}TP%IH`@7$yN6d0o09}+ZC{wtb@1Yp1F;?4v3(9Pd0Ar?{qas-`Ty^nu*) zB&sS+Oqr@aW`JVy+FFa{+Mn7`cma8sJjFS0r?v73^n__pWn)Qq2c zE5VHkvu<{+=otGJ)egj-l&+Sl;rG200+<2-!|r|G;|uwCrfsH^c5zoP#J_hPQ3Fbs9KdJK>Uu(=TD`i;4_l~7wKerxNcHok* z*E|9m9m{|mm|?ZrhI76xpn-91y)EA59M=orqM&_B z%kr$dTH`gDmWEE2&j1gx^jGX~A1|>E6e`EVpJ=6d$m5? zn@3f3jcVVZR#U6i)Qcq+Wyf@Je5 zA-7iB*jY8Fnp)=c1YtTfAEU}cX>}h#jJ@PRXv6|nFJ{HyYd(dH$8cgI^Kpg;?7=Tz z6h-MV(v*0WM^wY&J(2;X7(d05d+^9%a^UQ3Vk6b*N<0{h?9tu@l`brKF_HL@y= z2V5W%zOqV+ZWBa`lq;5@v*y$l-FuF?2}IzZTUlQrb`cxFqw1@CC%At3@C0|I&q_qs zp~+yJOKzZl*-GnUJ6TzkeORE^B7^$=&A3IZp=m~nn;I#VHG}_V?E^=_^7%`5{iZ9g z#q~*PJ@kFlaUO{F4SKn~y}`q1D8nP*!?Y&Q04fj=`{ei);abHQ0GzNOhR?XAPH?ia z$!169(422hlbI?aJ z&mV&l^G&=31y&#I&EfPT9D~QN_A&J$v(J1nbJ+kV?;jnEj+akqK5EVkdid`p#06Vg z`SMR5q<#TBnpJ~Ck;%E9=p%SGbf|rQdoU!2fZfphJIFtD3Xx2(f{LuNXKJsg}z7F|9&3xXX z+_~qsAI;el{ucN#&!fIUTu^T)KgoZn!*z{6!Fs~R7#?Xc-gw6T=e?n^cPOahuk$vQ zg{@_MPNazgN2%U8EeN_PM<|nBjmpDB?fK7_YJ1j2+gptmBXq`;i8d=_w#+!IC_U0T_FAl42;MVDnyC} zpa#di0s*rCq~M;?Aq)RFzXn3e3T2C7h{-?J*nt%O<6ke311Q6Dz{5dU*Z`97r6h2W zpQvy|kVrNFGaMc}q=60UrYr%ug);oU6+Gls2c8I`#SX2#Nr42hLu(V*AU*%sNd|(% z0cAF0h|)jKwudDA<0KEr3x4)lN^vJUVs=J th#NA%3lN9@%?E%0=m7)}ay|gyzi(&=7a!D-S^%QJ2cSVR5C%Y%{|~mGZzTW# diff --git a/glm/detail/func_common.inl b/glm/detail/func_common.inl index c611c609..527c80ad 100644 --- a/glm/detail/func_common.inl +++ b/glm/detail/func_common.inl @@ -81,7 +81,7 @@ namespace detail { GLM_FUNC_QUALIFIER static vecType call(vecType const & x, vecType const & y, vecType const & a) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = a[i] ? y[i] : x[i]; return Result; diff --git a/glm/detail/func_matrix.inl b/glm/detail/func_matrix.inl index 17602397..edf2cfe1 100644 --- a/glm/detail/func_matrix.inl +++ b/glm/detail/func_matrix.inl @@ -45,7 +45,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec2 const & c, tvec2 const & r) { - tmat2x2 m(tmat2x2::_null); + tmat2x2 m(uninitialize); m[0][0] = c[0] * r[0]; m[0][1] = c[1] * r[0]; m[1][0] = c[0] * r[1]; @@ -59,7 +59,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec3 const & c, tvec3 const & r) { - tmat3x3 m(tmat3x3::_null); + tmat3x3 m(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(m); ++i) m[i] = c * r[i]; return m; @@ -71,7 +71,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec4 const & c, tvec4 const & r) { - tmat4x4 m(tmat4x4::_null); + tmat4x4 m(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(m); ++i) m[i] = c * r[i]; return m; @@ -83,7 +83,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec3 const & c, tvec2 const & r) { - tmat2x3 m(tmat2x3::_null); + tmat2x3 m(uninitialize); m[0][0] = c.x * r.x; m[0][1] = c.y * r.x; m[0][2] = c.z * r.x; @@ -99,7 +99,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec2 const & c, tvec3 const & r) { - tmat3x2 m(tmat3x2::_null); + tmat3x2 m(uninitialize); m[0][0] = c.x * r.x; m[0][1] = c.y * r.x; m[1][0] = c.x * r.y; @@ -115,7 +115,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec4 const & c, tvec2 const & r) { - tmat2x4 m(tmat2x4::_null); + tmat2x4 m(uninitialize); m[0][0] = c.x * r.x; m[0][1] = c.y * r.x; m[0][2] = c.z * r.x; @@ -133,7 +133,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec2 const & c, tvec4 const & r) { - tmat4x2 m(tmat4x2::_null); + tmat4x2 m(uninitialize); m[0][0] = c.x * r.x; m[0][1] = c.y * r.x; m[1][0] = c.x * r.y; @@ -151,7 +151,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec4 const & c, tvec3 const & r) { - tmat3x4 m(tmat3x4::_null); + tmat3x4 m(uninitialize); m[0][0] = c.x * r.x; m[0][1] = c.y * r.x; m[0][2] = c.z * r.x; @@ -173,7 +173,7 @@ namespace detail { GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec3 const & c, tvec4 const & r) { - tmat4x3 m(tmat4x3::_null); + tmat4x3 m(uninitialize); m[0][0] = c.x * r.x; m[0][1] = c.y * r.x; m[0][2] = c.z * r.x; @@ -198,7 +198,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat2x2 call(tmat2x2 const & m) { - tmat2x2 result(tmat2x2::_null); + tmat2x2 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[1][0] = m[0][1]; @@ -212,7 +212,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat3x2 call(tmat2x3 const & m) { - tmat3x2 result(tmat3x2::_null); + tmat3x2 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[1][0] = m[0][1]; @@ -228,7 +228,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat4x2 call(tmat2x4 const & m) { - tmat4x2 result(tmat4x2::_null); + tmat4x2 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[1][0] = m[0][1]; @@ -246,7 +246,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat2x3 call(tmat3x2 const & m) { - tmat2x3 result(tmat2x3::_null); + tmat2x3 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[0][2] = m[2][0]; @@ -262,7 +262,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat3x3 call(tmat3x3 const & m) { - tmat3x3 result(tmat3x3::_null); + tmat3x3 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[0][2] = m[2][0]; @@ -283,7 +283,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat4x3 call(tmat3x4 const & m) { - tmat4x3 result(tmat4x3::_null); + tmat4x3 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[0][2] = m[2][0]; @@ -305,7 +305,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat2x4 call(tmat4x2 const & m) { - tmat2x4 result(tmat2x4::_null); + tmat2x4 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[0][2] = m[2][0]; @@ -323,7 +323,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat3x4 call(tmat4x3 const & m) { - tmat3x4 result(tmat3x4::_null); + tmat3x4 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[0][2] = m[2][0]; @@ -345,7 +345,7 @@ namespace detail { GLM_FUNC_QUALIFIER static tmat4x4 call(tmat4x4 const & m) { - tmat4x4 result(tmat4x4::_null); + tmat4x4 result(uninitialize); result[0][0] = m[0][0]; result[0][1] = m[1][0]; result[0][2] = m[2][0]; @@ -423,7 +423,7 @@ namespace detail { GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'matrixCompMult' only accept floating-point inputs"); - matType result(matType::_null); + matType result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(result); ++i) result[i] = x[i] * y[i]; return result; diff --git a/glm/detail/func_vector_relational.inl b/glm/detail/func_vector_relational.inl index 20645801..4e32a8a9 100644 --- a/glm/detail/func_vector_relational.inl +++ b/glm/detail/func_vector_relational.inl @@ -41,7 +41,7 @@ namespace glm "Invalid template instantiation of 'lessThan', GLM vector types required floating-point or integer value types vectors"); assert(detail::component_count(x) == detail::component_count(y)); - typename vecType::bool_type Result(vecType::_null); + typename vecType::bool_type Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] < y[i]; @@ -59,7 +59,7 @@ namespace glm "Invalid template instantiation of 'lessThanEqual', GLM vector types required floating-point or integer value types vectors"); assert(detail::component_count(x) == detail::component_count(y)); - typename vecType::bool_type Result(vecType::_null); + typename vecType::bool_type Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] <= y[i]; return Result; @@ -76,7 +76,7 @@ namespace glm "Invalid template instantiation of 'greaterThan', GLM vector types required floating-point or integer value types vectors"); assert(detail::component_count(x) == detail::component_count(y)); - typename vecType::bool_type Result(vecType::_null); + typename vecType::bool_type Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] > y[i]; return Result; @@ -93,7 +93,7 @@ namespace glm "Invalid template instantiation of 'greaterThanEqual', GLM vector types required floating-point or integer value types vectors"); assert(detail::component_count(x) == detail::component_count(y)); - typename vecType::bool_type Result(vecType::_null); + typename vecType::bool_type Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] >= y[i]; return Result; @@ -108,7 +108,7 @@ namespace glm { assert(detail::component_count(x) == detail::component_count(y)); - typename vecType::bool_type Result(vecType::_null); + typename vecType::bool_type Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] == y[i]; return Result; @@ -123,7 +123,7 @@ namespace glm { assert(detail::component_count(x) == detail::component_count(y)); - typename vecType::bool_type Result(vecType::_null); + typename vecType::bool_type Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] != y[i]; return Result; @@ -150,7 +150,7 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType not_(vecType const & v) { - typename vecType::bool_type Result(vecType::_null); + typename vecType::bool_type Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(v); ++i) Result[i] = !v[i]; return Result; diff --git a/glm/detail/intrinsic_matrix.inl b/glm/detail/intrinsic_matrix.inl index 81f1538d..26c43b38 100644 --- a/glm/detail/intrinsic_matrix.inl +++ b/glm/detail/intrinsic_matrix.inl @@ -1049,7 +1049,7 @@ GLM_FUNC_QUALIFIER void sse_rotate_ps(__m128 const in[4], float Angle, float con Result[2] = TmpC4; Result[3] = _mm_set_ps(1, 0, 0, 0); - //tmat4x4 Result(tmat4x4::_null); + //tmat4x4 Result(uninitialize); //Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2]; //Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2]; //Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2]; diff --git a/glm/detail/type_mat2x2.hpp b/glm/detail/type_mat2x2.hpp index c3f2a81f..08aff9b5 100644 --- a/glm/detail/type_mat2x2.hpp +++ b/glm/detail/type_mat2x2.hpp @@ -39,7 +39,6 @@ namespace glm template struct tmat2x2 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec2 col_type; diff --git a/glm/detail/type_mat2x2.inl b/glm/detail/type_mat2x2.inl index bf80a7f8..3a135de8 100644 --- a/glm/detail/type_mat2x2.inl +++ b/glm/detail/type_mat2x2.inl @@ -83,8 +83,10 @@ namespace detail template GLM_FUNC_QUALIFIER tmat2x2::tmat2x2() { - this->value[0] = col_type(1, 0); - this->value[1] = col_type(0, 1); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0); + this->value[1] = col_type(0, 1); +# endif } template diff --git a/glm/detail/type_mat2x3.hpp b/glm/detail/type_mat2x3.hpp index 73b611f7..7fef267d 100644 --- a/glm/detail/type_mat2x3.hpp +++ b/glm/detail/type_mat2x3.hpp @@ -40,7 +40,6 @@ namespace glm template struct tmat2x3 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec3 col_type; diff --git a/glm/detail/type_mat2x3.inl b/glm/detail/type_mat2x3.inl index 545c41ee..ef697645 100644 --- a/glm/detail/type_mat2x3.inl +++ b/glm/detail/type_mat2x3.inl @@ -73,8 +73,10 @@ namespace glm template GLM_FUNC_QUALIFIER tmat2x3::tmat2x3() { - this->value[0] = col_type(T(1), T(0), T(0)); - this->value[1] = col_type(T(0), T(1), T(0)); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0, 0); + this->value[1] = col_type(0, 1, 0); +# endif } template @@ -498,7 +500,7 @@ namespace glm T SrcB20 = m2[2][0]; T SrcB21 = m2[2][1]; - tmat3x3 Result(tmat3x3::_null); + tmat3x3 Result(uninitialize); Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01; diff --git a/glm/detail/type_mat2x4.hpp b/glm/detail/type_mat2x4.hpp index a5bf867f..cc320ec0 100644 --- a/glm/detail/type_mat2x4.hpp +++ b/glm/detail/type_mat2x4.hpp @@ -40,7 +40,6 @@ namespace glm template struct tmat2x4 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec4 col_type; diff --git a/glm/detail/type_mat2x4.inl b/glm/detail/type_mat2x4.inl index 10905fa7..6a734847 100644 --- a/glm/detail/type_mat2x4.inl +++ b/glm/detail/type_mat2x4.inl @@ -73,10 +73,10 @@ namespace glm template GLM_FUNC_QUALIFIER tmat2x4::tmat2x4() { - value_type const Zero(0); - value_type const One(1); - this->value[0] = col_type(One, Zero, Zero, Zero); - this->value[1] = col_type(Zero, One, Zero, Zero); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0, 0, 0); + this->value[1] = col_type(0, 1, 0, 0); +# endif } template @@ -492,7 +492,7 @@ namespace glm T SrcB30 = m2[3][0]; T SrcB31 = m2[3][1]; - tmat4x4 Result(tmat4x4::_null); + tmat4x4 Result(uninitialize); Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01; diff --git a/glm/detail/type_mat3x2.hpp b/glm/detail/type_mat3x2.hpp index abf1fb73..462f602f 100644 --- a/glm/detail/type_mat3x2.hpp +++ b/glm/detail/type_mat3x2.hpp @@ -40,7 +40,6 @@ namespace glm template struct tmat3x2 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec2 col_type; diff --git a/glm/detail/type_mat3x2.inl b/glm/detail/type_mat3x2.inl index 3bfae905..4074b78e 100644 --- a/glm/detail/type_mat3x2.inl +++ b/glm/detail/type_mat3x2.inl @@ -73,9 +73,11 @@ namespace glm template GLM_FUNC_QUALIFIER tmat3x2::tmat3x2() { - this->value[0] = col_type(1, 0); - this->value[1] = col_type(0, 1); - this->value[2] = col_type(0, 0); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0); + this->value[1] = col_type(0, 1); + this->value[2] = col_type(0, 0); +# endif } template @@ -520,7 +522,7 @@ namespace glm const T SrcB11 = m2[1][1]; const T SrcB12 = m2[1][2]; - tmat2x2 Result(tmat2x2::_null); + tmat2x2 Result(uninitialize); Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02; Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12; diff --git a/glm/detail/type_mat3x3.hpp b/glm/detail/type_mat3x3.hpp index 5fd1eb5f..db1fe0cd 100644 --- a/glm/detail/type_mat3x3.hpp +++ b/glm/detail/type_mat3x3.hpp @@ -39,7 +39,6 @@ namespace glm template struct tmat3x3 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec3 col_type; diff --git a/glm/detail/type_mat3x3.inl b/glm/detail/type_mat3x3.inl index b9ca0b5d..2059e56b 100644 --- a/glm/detail/type_mat3x3.inl +++ b/glm/detail/type_mat3x3.inl @@ -37,7 +37,7 @@ namespace detail - m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2]) + m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2])); - tmat3x3 Inverse(tmat3x3::_null); + tmat3x3 Inverse(uninitialize); Inverse[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]) * OneOverDeterminant; Inverse[1][0] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]) * OneOverDeterminant; Inverse[2][0] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]) * OneOverDeterminant; @@ -97,11 +97,11 @@ namespace detail template GLM_FUNC_QUALIFIER tmat3x3::tmat3x3() { - value_type const Zero(0); - value_type const One(1); - this->value[0] = col_type(One, Zero, Zero); - this->value[1] = col_type(Zero, One, Zero); - this->value[2] = col_type(Zero, Zero, One); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0, 0); + this->value[1] = col_type(0, 1, 0); + this->value[2] = col_type(0, 0, 1); +# endif } template @@ -596,7 +596,7 @@ namespace detail T const SrcB21 = m2[2][1]; T const SrcB22 = m2[2][2]; - tmat3x3 Result(tmat3x3::_null); + tmat3x3 Result(uninitialize); Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02; diff --git a/glm/detail/type_mat3x4.hpp b/glm/detail/type_mat3x4.hpp index dd5e746d..48f79caf 100644 --- a/glm/detail/type_mat3x4.hpp +++ b/glm/detail/type_mat3x4.hpp @@ -40,7 +40,6 @@ namespace glm template struct tmat3x4 { - enum ctor{_null}; typedef T value_type; typedef size_t size_type; typedef tvec4 col_type; diff --git a/glm/detail/type_mat3x4.inl b/glm/detail/type_mat3x4.inl index 1d9096db..bfbd2923 100644 --- a/glm/detail/type_mat3x4.inl +++ b/glm/detail/type_mat3x4.inl @@ -73,9 +73,11 @@ namespace glm template GLM_FUNC_QUALIFIER tmat3x4::tmat3x4() { - this->value[0] = col_type(1, 0, 0, 0); - this->value[1] = col_type(0, 1, 0, 0); - this->value[2] = col_type(0, 0, 1, 0); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0, 0, 0); + this->value[1] = col_type(0, 1, 0, 0); + this->value[2] = col_type(0, 0, 1, 0); +# endif } template @@ -535,7 +537,7 @@ namespace glm const T SrcB31 = m2[3][1]; const T SrcB32 = m2[3][2]; - tmat4x4 Result(tmat4x4::_null); + tmat4x4 Result(uninitialize); Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02; diff --git a/glm/detail/type_mat4x2.hpp b/glm/detail/type_mat4x2.hpp index ca3fa591..b67009d0 100644 --- a/glm/detail/type_mat4x2.hpp +++ b/glm/detail/type_mat4x2.hpp @@ -40,7 +40,6 @@ namespace glm template struct tmat4x2 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec2 col_type; diff --git a/glm/detail/type_mat4x2.inl b/glm/detail/type_mat4x2.inl index 9db63246..c790ee07 100644 --- a/glm/detail/type_mat4x2.inl +++ b/glm/detail/type_mat4x2.inl @@ -73,12 +73,12 @@ namespace glm template GLM_FUNC_QUALIFIER tmat4x2::tmat4x2() { - value_type const Zero(0); - value_type const One(1); - this->value[0] = col_type(One, Zero); - this->value[1] = col_type(Zero, One); - this->value[2] = col_type(Zero, Zero); - this->value[3] = col_type(Zero, Zero); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0); + this->value[1] = col_type(0, 1); + this->value[2] = col_type(0, 0); + this->value[3] = col_type(0, 0); +# endif } template @@ -569,7 +569,7 @@ namespace glm T const SrcB12 = m2[1][2]; T const SrcB13 = m2[1][3]; - tmat2x2 Result(tmat2x2::_null); + tmat2x2 Result(uninitialize); Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03; Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12 + SrcA30 * SrcB13; diff --git a/glm/detail/type_mat4x3.hpp b/glm/detail/type_mat4x3.hpp index f4f278aa..9f09035e 100644 --- a/glm/detail/type_mat4x3.hpp +++ b/glm/detail/type_mat4x3.hpp @@ -40,7 +40,6 @@ namespace glm template struct tmat4x3 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec3 col_type; diff --git a/glm/detail/type_mat4x3.inl b/glm/detail/type_mat4x3.inl index 292c4aa6..d87b5de4 100644 --- a/glm/detail/type_mat4x3.inl +++ b/glm/detail/type_mat4x3.inl @@ -73,12 +73,12 @@ namespace glm template GLM_FUNC_QUALIFIER tmat4x3::tmat4x3() { - value_type const Zero(0); - value_type const One(1); - this->value[0] = col_type(One, Zero, Zero); - this->value[1] = col_type(Zero, One, Zero); - this->value[2] = col_type(Zero, Zero, One); - this->value[3] = col_type(Zero, Zero, Zero); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0, 0); + this->value[1] = col_type(0, 1, 0); + this->value[2] = col_type(0, 0, 1); + this->value[3] = col_type(0, 0, 0); +# endif } template @@ -563,7 +563,7 @@ namespace glm T const SrcB22 = m2[2][2]; T const SrcB23 = m2[2][3]; - tmat3x3 Result(tmat3x3::_null); + tmat3x3 Result(uninitialize); Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02 + SrcA32 * SrcB03; diff --git a/glm/detail/type_mat4x4.hpp b/glm/detail/type_mat4x4.hpp index a1c6d3fb..3f2fa07b 100644 --- a/glm/detail/type_mat4x4.hpp +++ b/glm/detail/type_mat4x4.hpp @@ -39,7 +39,6 @@ namespace glm template struct tmat4x4 { - enum ctor{_null}; typedef T value_type; typedef std::size_t size_type; typedef tvec4 col_type; diff --git a/glm/detail/type_mat4x4.inl b/glm/detail/type_mat4x4.inl index 52015759..f6567757 100644 --- a/glm/detail/type_mat4x4.inl +++ b/glm/detail/type_mat4x4.inl @@ -133,12 +133,12 @@ namespace detail template GLM_FUNC_QUALIFIER tmat4x4::tmat4x4() { - T Zero(0); - T One(1); - this->value[0] = col_type(One, Zero, Zero, Zero); - this->value[1] = col_type(Zero, One, Zero, Zero); - this->value[2] = col_type(Zero, Zero, One, Zero); - this->value[3] = col_type(Zero, Zero, Zero, One); +# ifndef GLM_FORCE_NO_CTOR_INIT + this->value[0] = col_type(1, 0, 0, 0); + this->value[1] = col_type(0, 1, 0, 0); + this->value[2] = col_type(0, 0, 1, 0); + this->value[3] = col_type(0, 0, 0, 1); +# endif } template @@ -772,7 +772,7 @@ namespace detail typename tmat4x4::col_type const SrcB2 = m2[2]; typename tmat4x4::col_type const SrcB3 = m2[3]; - tmat4x4 Result(tmat4x4::_null); + tmat4x4 Result(uninitialize); Result[0] = SrcA0 * SrcB0[0] + SrcA1 * SrcB0[1] + SrcA2 * SrcB0[2] + SrcA3 * SrcB0[3]; Result[1] = SrcA0 * SrcB1[0] + SrcA1 * SrcB1[1] + SrcA2 * SrcB1[2] + SrcA3 * SrcB1[3]; Result[2] = SrcA0 * SrcB2[0] + SrcA1 * SrcB2[1] + SrcA2 * SrcB2[2] + SrcA3 * SrcB2[3]; diff --git a/glm/detail/type_vec.hpp b/glm/detail/type_vec.hpp index 95e1e9f5..fd511dbe 100644 --- a/glm/detail/type_vec.hpp +++ b/glm/detail/type_vec.hpp @@ -33,6 +33,8 @@ namespace glm { + enum ctor{uninitialize}; + template struct tvec1; template struct tvec2; template struct tvec3; diff --git a/glm/detail/type_vec1.hpp b/glm/detail/type_vec1.hpp index 696ce788..fbe19189 100644 --- a/glm/detail/type_vec1.hpp +++ b/glm/detail/type_vec1.hpp @@ -47,8 +47,6 @@ namespace glm ////////////////////////////////////// // Implementation detail - enum ctor{_null}; - typedef tvec1 type; typedef tvec1 bool_type; typedef T value_type; diff --git a/glm/detail/type_vec1.inl b/glm/detail/type_vec1.inl index 7d031c87..a5abeaed 100644 --- a/glm/detail/type_vec1.inl +++ b/glm/detail/type_vec1.inl @@ -63,8 +63,10 @@ namespace glm // Implicit basic constructors template - GLM_FUNC_QUALIFIER tvec1::tvec1() : - x(static_cast(0)) + GLM_FUNC_QUALIFIER tvec1::tvec1() +# ifndef GLM_FORCE_NO_CTOR_INIT + : x(0) +# endif {} template diff --git a/glm/detail/type_vec2.hpp b/glm/detail/type_vec2.hpp index 8b1b6211..274c3ec9 100644 --- a/glm/detail/type_vec2.hpp +++ b/glm/detail/type_vec2.hpp @@ -47,8 +47,6 @@ namespace glm ////////////////////////////////////// // Implementation detail - enum ctor{_null}; - typedef tvec2 type; typedef tvec2 bool_type; typedef T value_type; diff --git a/glm/detail/type_vec2.inl b/glm/detail/type_vec2.inl index c02a5c3f..b30f113a 100644 --- a/glm/detail/type_vec2.inl +++ b/glm/detail/type_vec2.inl @@ -63,22 +63,21 @@ namespace glm // Implicit basic constructors template - GLM_FUNC_QUALIFIER tvec2::tvec2() : - x(0), - y(0) + GLM_FUNC_QUALIFIER tvec2::tvec2() +# ifndef GLM_FORCE_NO_CTOR_INIT + : x(0), y(0) +# endif {} template - GLM_FUNC_QUALIFIER tvec2::tvec2(tvec2 const & v) : - x(v.x), - y(v.y) + GLM_FUNC_QUALIFIER tvec2::tvec2(tvec2 const & v) + : x(v.x), y(v.y) {} template template - GLM_FUNC_QUALIFIER tvec2::tvec2(tvec2 const & v) : - x(v.x), - y(v.y) + GLM_FUNC_QUALIFIER tvec2::tvec2(tvec2 const & v) + : x(v.x), y(v.y) {} ////////////////////////////////////// @@ -90,14 +89,12 @@ namespace glm template GLM_FUNC_QUALIFIER tvec2::tvec2(T const & s) : - x(s), - y(s) + x(s), y(s) {} template GLM_FUNC_QUALIFIER tvec2::tvec2(T const & s1, T const & s2) : - x(s1), - y(s2) + x(s1), y(s2) {} ////////////////////////////////////// diff --git a/glm/detail/type_vec3.hpp b/glm/detail/type_vec3.hpp index 04064a96..df34d92b 100644 --- a/glm/detail/type_vec3.hpp +++ b/glm/detail/type_vec3.hpp @@ -47,8 +47,6 @@ namespace glm ////////////////////////////////////// // Implementation detail - enum ctor{_null}; - typedef tvec3 type; typedef tvec3 bool_type; typedef T value_type; diff --git a/glm/detail/type_vec3.inl b/glm/detail/type_vec3.inl index 74bf891d..9413a928 100644 --- a/glm/detail/type_vec3.inl +++ b/glm/detail/type_vec3.inl @@ -63,25 +63,21 @@ namespace glm // Implicit basic constructors template - GLM_FUNC_QUALIFIER tvec3::tvec3() : - x(0), - y(0), - z(0) + GLM_FUNC_QUALIFIER tvec3::tvec3() +# ifndef GLM_FORCE_NO_CTOR_INIT + : x(0), y(0), z(0) +# endif {} template - GLM_FUNC_QUALIFIER tvec3::tvec3(tvec3 const & v) : - x(v.x), - y(v.y), - z(v.z) + GLM_FUNC_QUALIFIER tvec3::tvec3(tvec3 const & v) + : x(v.x), y(v.y), z(v.z) {} template template - GLM_FUNC_QUALIFIER tvec3::tvec3(tvec3 const & v) : - x(v.x), - y(v.y), - z(v.z) + GLM_FUNC_QUALIFIER tvec3::tvec3(tvec3 const & v) + : x(v.x), y(v.y), z(v.z) {} ////////////////////////////////////// @@ -92,17 +88,13 @@ namespace glm {} template - GLM_FUNC_QUALIFIER tvec3::tvec3(T const & s) : - x(s), - y(s), - z(s) + GLM_FUNC_QUALIFIER tvec3::tvec3(T const & s) + : x(s), y(s), z(s) {} template - GLM_FUNC_QUALIFIER tvec3::tvec3(T const & a, T const & b, T const & c) : - x(a), - y(b), - z(c) + GLM_FUNC_QUALIFIER tvec3::tvec3(T const & a, T const & b, T const & c) + : x(a), y(b), z(c) {} ////////////////////////////////////// diff --git a/glm/detail/type_vec4.hpp b/glm/detail/type_vec4.hpp index a5769f65..bffc548c 100644 --- a/glm/detail/type_vec4.hpp +++ b/glm/detail/type_vec4.hpp @@ -70,8 +70,6 @@ namespace glm ////////////////////////////////////// // Implementation detail - enum ctor{_null}; - typedef tvec4 type; typedef tvec4 bool_type; typedef T value_type; diff --git a/glm/detail/type_vec4.inl b/glm/detail/type_vec4.inl index 50f27543..56d8d4f0 100644 --- a/glm/detail/type_vec4.inl +++ b/glm/detail/type_vec4.inl @@ -63,42 +63,42 @@ namespace glm // Implicit basic constructors template - GLM_FUNC_QUALIFIER tvec4::tvec4() : - x(0), - y(0), - z(0), - w(0) + GLM_FUNC_QUALIFIER tvec4::tvec4() +# ifndef GLM_FORCE_NO_CTOR_INIT + : x(0), y(0), z(0), w(0) +# endif {} #if (GLM_HAS_UNRESTRICTED_UNIONS || GLM_HAS_ANONYMOUS_UNION) && (GLM_ARCH & GLM_ARCH_SSE2) template <> - GLM_FUNC_QUALIFIER tvec4::tvec4() : - data(_mm_setzero_ps()) + GLM_FUNC_QUALIFIER tvec4::tvec4() +# ifndef GLM_FORCE_NO_CTOR_INIT + : data(_mm_setzero_ps()) +# endif {} template <> - GLM_FUNC_QUALIFIER tvec4::tvec4() : - data(_mm_setzero_ps()) + GLM_FUNC_QUALIFIER tvec4::tvec4() +# ifndef GLM_FORCE_NO_CTOR_INIT + : data(_mm_setzero_ps()) +# endif {} #endif template - GLM_FUNC_QUALIFIER tvec4::tvec4(tvec4 const & v) : - x(v.x), - y(v.y), - z(v.z), - w(v.w) + GLM_FUNC_QUALIFIER tvec4::tvec4(tvec4 const & v) + : x(v.x), y(v.y), z(v.z), w(v.w) {} #if (GLM_HAS_UNRESTRICTED_UNIONS || GLM_HAS_ANONYMOUS_UNION) && (GLM_ARCH & GLM_ARCH_SSE2) template <> - GLM_FUNC_QUALIFIER tvec4::tvec4(tvec4 const & v) : - data(v.data) + GLM_FUNC_QUALIFIER tvec4::tvec4(tvec4 const & v) + : data(v.data) {} template <> - GLM_FUNC_QUALIFIER tvec4::tvec4(tvec4 const & v) : - data(v.data) + GLM_FUNC_QUALIFIER tvec4::tvec4(tvec4 const & v) + : data(v.data) {} #endif diff --git a/glm/gtc/matrix_transform.inl b/glm/gtc/matrix_transform.inl index bd68509b..84444455 100644 --- a/glm/gtc/matrix_transform.inl +++ b/glm/gtc/matrix_transform.inl @@ -59,7 +59,7 @@ namespace glm tvec3 axis(normalize(v)); tvec3 temp((T(1) - c) * axis); - tmat4x4 Rotate(tmat4x4::_null); + tmat4x4 Rotate(uninitialize); Rotate[0][0] = c + temp[0] * axis[0]; Rotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2]; Rotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1]; @@ -72,7 +72,7 @@ namespace glm Rotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0]; Rotate[2][2] = c + temp[2] * axis[2]; - tmat4x4 Result(tmat4x4::_null); + tmat4x4 Result(uninitialize); Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2]; Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2]; Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2]; @@ -121,7 +121,7 @@ namespace glm tvec3 const & v ) { - tmat4x4 Result(tmat4x4::_null); + tmat4x4 Result(uninitialize); Result[0] = m[0] * v[0]; Result[1] = m[1] * v[1]; Result[2] = m[2] * v[2]; diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp index a16a761e..b77b4948 100644 --- a/glm/gtc/quaternion.hpp +++ b/glm/gtc/quaternion.hpp @@ -58,8 +58,6 @@ namespace glm template struct tquat { - enum ctor{_null}; - typedef T value_type; typedef tvec4 bool_type; diff --git a/glm/gtc/quaternion.inl b/glm/gtc/quaternion.inl index 01513156..df5fa036 100644 --- a/glm/gtc/quaternion.inl +++ b/glm/gtc/quaternion.inl @@ -60,34 +60,21 @@ namespace detail #endif template - GLM_FUNC_QUALIFIER tquat::tquat() : - x(0), - y(0), - z(0), - w(1) + GLM_FUNC_QUALIFIER tquat::tquat() +# ifndef GLM_FORCE_NO_CTOR_INIT + : x(0), y(0), z(0), w(1) +# endif {} template - GLM_FUNC_QUALIFIER tquat::tquat - ( - tquat const & q - ) : - x(q.x), - y(q.y), - z(q.z), - w(q.w) + GLM_FUNC_QUALIFIER tquat::tquat(tquat const & q) : + x(q.x), y(q.y), z(q.z), w(q.w) {} template template - GLM_FUNC_QUALIFIER tquat::tquat - ( - tquat const & q - ) : - x(q.x), - y(q.y), - z(q.z), - w(q.w) + GLM_FUNC_QUALIFIER tquat::tquat(tquat const & q) : + x(q.x), y(q.y), z(q.z), w(q.w) {} template @@ -746,7 +733,7 @@ namespace detail T biggestVal = sqrt(fourBiggestSquaredMinus1 + T(1)) * T(0.5); T mult = static_cast(0.25) / biggestVal; - tquat Result(tquat::_null); + tquat Result(uninitialize); switch(biggestIndex) { case 0: @@ -819,7 +806,7 @@ namespace detail tvec3 const & v ) { - tquat Result(tquat::_null); + tquat Result(uninitialize); T const a(angle); T const s = glm::sin(a * static_cast(0.5)); @@ -838,7 +825,7 @@ namespace detail tquat const & y ) { - tvec4 Result(tvec4::_null); + tvec4 Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] < y[i]; return Result; @@ -851,7 +838,7 @@ namespace detail tquat const & y ) { - tvec4 Result(tvec4::_null); + tvec4 Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] <= y[i]; return Result; @@ -864,7 +851,7 @@ namespace detail tquat const & y ) { - tvec4 Result(tvec4::_null); + tvec4 Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] > y[i]; return Result; @@ -877,7 +864,7 @@ namespace detail tquat const & y ) { - tvec4 Result(tvec4::_null); + tvec4 Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] >= y[i]; return Result; @@ -890,7 +877,7 @@ namespace detail tquat const & y ) { - tvec4 Result(tvec4::_null); + tvec4 Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] == y[i]; return Result; @@ -903,7 +890,7 @@ namespace detail tquat const & y ) { - tvec4 Result(tvec4::_null); + tvec4 Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] != y[i]; return Result; diff --git a/glm/gtc/ulp.inl b/glm/gtc/ulp.inl index aefd7cfc..2d0e730b 100644 --- a/glm/gtc/ulp.inl +++ b/glm/gtc/ulp.inl @@ -227,7 +227,7 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType next_float(vecType const & x) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = next_float(x[i]); return Result; @@ -262,7 +262,7 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType prev_float(vecType const & x) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = prev_float(x[i]); return Result; @@ -280,7 +280,7 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType next_float(vecType const & x, vecType const & ulps) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = next_float(x[i], ulps[i]); return Result; @@ -298,7 +298,7 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType prev_float(vecType const & x, vecType const & ulps) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = prev_float(x[i], ulps[i]); return Result; @@ -338,7 +338,7 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType float_distance(vecType const & x, vecType const & y) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = float_distance(x[i], y[i]); return Result; diff --git a/glm/gtx/associated_min_max.inl b/glm/gtx/associated_min_max.inl index 028cdd66..dd714d8e 100644 --- a/glm/gtx/associated_min_max.inl +++ b/glm/gtx/associated_min_max.inl @@ -23,7 +23,7 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin vecType const & y, vecType const & b ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a[i] : b[i]; return Result; @@ -36,7 +36,7 @@ GLM_FUNC_QUALIFIER vecType associatedMin T y, const vecType& b ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x < y ? a[i] : b[i]; return Result; @@ -49,7 +49,7 @@ GLM_FUNC_QUALIFIER vecType associatedMin vecType const & y, U b ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a : b; return Result; @@ -76,7 +76,7 @@ GLM_FUNC_QUALIFIER vecType associatedMin vecType const & z, vecType const & c ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]); return Result; @@ -110,7 +110,7 @@ GLM_FUNC_QUALIFIER vecType associatedMin vecType const & w, vecType const & d ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); @@ -135,7 +135,7 @@ GLM_FUNC_QUALIFIER vecType associatedMin T Test1 = min(x, y); T Test2 = min(z, w); - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x < y ? a[i] : b[i]; @@ -155,7 +155,7 @@ GLM_FUNC_QUALIFIER vecType associatedMin vecType const & w, U d ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); @@ -182,7 +182,7 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax vecType const & y, vecType const & b ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a[i] : b[i]; return Result; @@ -196,7 +196,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax T y, vecType const & b ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? a[i] : b[i]; return Result; @@ -210,7 +210,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax vecType const & y, U b ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a : b; return Result; @@ -238,7 +238,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax vecType const & z, vecType const & c ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]); return Result; @@ -253,7 +253,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax T z, vecType const & c ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]); return Result; @@ -268,7 +268,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax vecType const & z, U c ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c); return Result; @@ -302,7 +302,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax vecType const & w, vecType const & d ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); @@ -327,7 +327,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax T Test1 = max(x, y); T Test2 = max(z, w); - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x > y ? a[i] : b[i]; @@ -347,7 +347,7 @@ GLM_FUNC_QUALIFIER vecType associatedMax vecType const & w, U d ) { - vecType Result(vecType::_null); + vecType Result(uninitialize); for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); diff --git a/glm/gtx/dual_quaternion.hpp b/glm/gtx/dual_quaternion.hpp index bb97aad5..803a9f84 100644 --- a/glm/gtx/dual_quaternion.hpp +++ b/glm/gtx/dual_quaternion.hpp @@ -57,7 +57,6 @@ namespace glm template struct tdualquat { - enum ctor{_null}; typedef T value_type; typedef glm::tquat part_type; diff --git a/glm/gtx/dual_quaternion.inl b/glm/gtx/dual_quaternion.inl index 7df6a8ef..5672ec6d 100644 --- a/glm/gtx/dual_quaternion.inl +++ b/glm/gtx/dual_quaternion.inl @@ -46,26 +46,22 @@ namespace glm #endif template - GLM_FUNC_QUALIFIER tdualquat::tdualquat() : - real(tquat()), - dual(tquat(T(0), T(0), T(0), T(0))) + GLM_FUNC_QUALIFIER tdualquat::tdualquat() +# ifndef GLM_FORCE_NO_CTOR_INIT + : real(tquat()) + , dual(tquat(0, 0, 0, 0)) +# endif {} template - GLM_FUNC_QUALIFIER tdualquat::tdualquat - ( - tdualquat const & d - ) : + GLM_FUNC_QUALIFIER tdualquat::tdualquat(tdualquat const & d) : real(d.real), dual(d.dual) {} template template - GLM_FUNC_QUALIFIER tdualquat::tdualquat - ( - tdualquat const & d - ) : + GLM_FUNC_QUALIFIER tdualquat::tdualquat(tdualquat const & d) : real(d.real), dual(d.dual) {} @@ -78,12 +74,9 @@ namespace glm {} template - GLM_FUNC_QUALIFIER tdualquat::tdualquat - ( - tquat const & r - ) : + GLM_FUNC_QUALIFIER tdualquat::tdualquat(tquat const & r) : real(r), - dual(tquat(T(0), T(0), T(0), T(0))) + dual(tquat(0, 0, 0, 0)) {} template diff --git a/glm/gtx/matrix_transform_2d.inl b/glm/gtx/matrix_transform_2d.inl index 280aa536..6bacd9c3 100644 --- a/glm/gtx/matrix_transform_2d.inl +++ b/glm/gtx/matrix_transform_2d.inl @@ -51,7 +51,7 @@ namespace glm T const c = cos(a); T const s = sin(a); - tmat3x3 Result(tmat3x3::_null); + tmat3x3 Result(uninitialize); Result[0] = m[0] * c + m[1] * s; Result[1] = m[0] * -s + m[1] * c; Result[2] = m[2]; @@ -63,7 +63,7 @@ namespace glm tmat3x3 const & m, tvec2 const & v) { - tmat3x3 Result(tmat3x3::_null); + tmat3x3 Result(uninitialize); Result[0] = m[0] * v[0]; Result[1] = m[1] * v[1]; Result[2] = m[2]; diff --git a/glm/gtx/rotate_normalized_axis.inl b/glm/gtx/rotate_normalized_axis.inl index e2d0db66..326bdb20 100644 --- a/glm/gtx/rotate_normalized_axis.inl +++ b/glm/gtx/rotate_normalized_axis.inl @@ -44,7 +44,7 @@ namespace glm tvec3 const temp((static_cast(1) - c) * axis); - tmat4x4 Rotate(tmat4x4::_null); + tmat4x4 Rotate(uninitialize); Rotate[0][0] = c + temp[0] * axis[0]; Rotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2]; Rotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1]; @@ -57,7 +57,7 @@ namespace glm Rotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0]; Rotate[2][2] = c + temp[2] * axis[2]; - tmat4x4 Result(tmat4x4::_null); + tmat4x4 Result(uninitialize); Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2]; Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2]; Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2]; diff --git a/glm/gtx/simd_mat4.hpp b/glm/gtx/simd_mat4.hpp index e4857c83..3ea8d05d 100644 --- a/glm/gtx/simd_mat4.hpp +++ b/glm/gtx/simd_mat4.hpp @@ -60,7 +60,6 @@ namespace detail /// \ingroup gtx_simd_mat4 GLM_ALIGNED_STRUCT(16) fmat4x4SIMD { - enum ctor{_null}; typedef float value_type; typedef fvec4SIMD col_type; typedef fvec4SIMD row_type; diff --git a/glm/gtx/simd_mat4.inl b/glm/gtx/simd_mat4.inl index c6e41ea4..bac06506 100644 --- a/glm/gtx/simd_mat4.inl +++ b/glm/gtx/simd_mat4.inl @@ -43,12 +43,12 @@ GLM_FUNC_QUALIFIER fvec4SIMD const & fmat4x4SIMD::operator[] GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD() { -#ifndef GLM_SIMD_ENABLE_DEFAULT_INIT - this->Data[0] = fvec4SIMD(1.0f, 0, 0, 0); - this->Data[1] = fvec4SIMD(0, 1.0f, 0, 0); - this->Data[2] = fvec4SIMD(0, 0, 1.0f, 0); - this->Data[3] = fvec4SIMD(0, 0, 0, 1.0f); -#endif +# ifndef GLM_FORCE_NO_CTOR_INIT + this->Data[0] = fvec4SIMD(1, 0, 0, 0); + this->Data[1] = fvec4SIMD(0, 1, 0, 0); + this->Data[2] = fvec4SIMD(0, 0, 1, 0); + this->Data[3] = fvec4SIMD(0, 0, 0, 1); +# endif } GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD(float const & s) @@ -554,7 +554,7 @@ GLM_FUNC_QUALIFIER detail::fmat4x4SIMD outerProduct __m128 Shu2 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(2, 2, 2, 2)); __m128 Shu3 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(3, 3, 3, 3)); - detail::fmat4x4SIMD result(detail::fmat4x4SIMD::_null); + detail::fmat4x4SIMD result(uninitialize); result[0].Data = _mm_mul_ps(c.Data, Shu0); result[1].Data = _mm_mul_ps(c.Data, Shu1); result[2].Data = _mm_mul_ps(c.Data, Shu2); diff --git a/glm/gtx/simd_quat.hpp b/glm/gtx/simd_quat.hpp index 94e9ac30..f3aa2938 100644 --- a/glm/gtx/simd_quat.hpp +++ b/glm/gtx/simd_quat.hpp @@ -69,7 +69,6 @@ namespace detail /// \ingroup gtx_simd_vec4 GLM_ALIGNED_STRUCT(16) fquatSIMD { - enum ctor{null}; typedef __m128 value_type; typedef std::size_t size_type; static size_type value_size(); diff --git a/glm/gtx/simd_quat.inl b/glm/gtx/simd_quat.inl index aa6c5eda..760113e3 100644 --- a/glm/gtx/simd_quat.inl +++ b/glm/gtx/simd_quat.inl @@ -34,9 +34,9 @@ void print(const fvec4SIMD &v) // Implicit basic constructors GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD() -#ifdef GLM_SIMD_ENABLE_DEFAULT_INIT - : Data(_mm_set_ps(1.0f, 0.0f, 0.0f, 0.0f)) -#endif +# ifdef GLM_FORCE_NO_CTOR_INIT + : Data(_mm_set_ps(1.0f, 0.0f, 0.0f, 0.0f)) +# endif {} GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(__m128 const & Data) : diff --git a/glm/gtx/simd_vec4.hpp b/glm/gtx/simd_vec4.hpp index cc117a4b..06a9db04 100644 --- a/glm/gtx/simd_vec4.hpp +++ b/glm/gtx/simd_vec4.hpp @@ -88,7 +88,6 @@ namespace detail /// \ingroup gtx_simd_vec4 GLM_ALIGNED_STRUCT(16) fvec4SIMD { - enum ctor{null}; typedef __m128 value_type; typedef std::size_t size_type; static size_type value_size(); diff --git a/glm/gtx/simd_vec4.inl b/glm/gtx/simd_vec4.inl index fc53e3fc..3e2cf9cc 100644 --- a/glm/gtx/simd_vec4.inl +++ b/glm/gtx/simd_vec4.inl @@ -20,9 +20,9 @@ struct mask // Implicit basic constructors GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD() -#ifdef GLM_SIMD_ENABLE_DEFAULT_INIT - : Data(_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f)) -#endif +# ifdef GLM_FORCE_NO_CTOR_INIT + : Data(_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f)) +# endif {} GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(__m128 const & Data) : diff --git a/readme.txt b/readme.txt index 4359434e..6bf0b337 100644 --- a/readme.txt +++ b/readme.txt @@ -73,6 +73,8 @@ GLM 0.9.6.0: 2014-XX-XX - Undetected C++ compiler automatically compile with GLM_FORCE_CXX98 and GLM_FORCE_PURE - Separated Apple Clang and LLVM compiler detection +- Added GLM_FORCE_NO_CTOR_INIT +- Added 'uninitialize' to explicitly not initialize a GLM type ================================================================================ GLM 0.9.5.4: 2014-06-21