From e868c1fc4bfa52ed63e4c8b7d1825b021294bc3e Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Tue, 19 Nov 2024 14:30:46 +0100 Subject: [PATCH 01/10] Use float32 for WebGL matrices --- src/geo/projection/globe_transform.ts | 10 +++++----- src/geo/projection/mercator_transform.ts | 4 ++-- src/util/util.ts | 8 ++++++++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/geo/projection/globe_transform.ts b/src/geo/projection/globe_transform.ts index 3ac8df6f9e..b7d992e663 100644 --- a/src/geo/projection/globe_transform.ts +++ b/src/geo/projection/globe_transform.ts @@ -2,7 +2,7 @@ import {mat2, mat4, vec3, vec4} from 'gl-matrix'; import {MAX_VALID_LATITUDE, TransformHelper} from '../transform_helper'; import {MercatorTransform} from './mercator_transform'; import {LngLat, LngLatLike, earthRadius} from '../lng_lat'; -import {angleToRotateBetweenVectors2D, clamp, createIdentityMat4f64, createMat4f64, createVec3f64, createVec4f64, differenceOfAnglesDegrees, distanceOfAnglesRadians, easeCubicInOut, lerp, pointPlaneSignedDistance, warnOnce} from '../../util/util'; +import {angleToRotateBetweenVectors2D, clamp, createIdentityMat4f32, createIdentityMat4f64, createMat4f64, createVec3f64, createVec4f64, differenceOfAnglesDegrees, distanceOfAnglesRadians, easeCubicInOut, lerp, pointPlaneSignedDistance, warnOnce} from '../../util/util'; import {UnwrappedTileID, OverscaledTileID, CanonicalTileID} from '../../source/tile_id'; import Point from '@mapbox/point-geometry'; import {browser} from '../../util/browser'; @@ -240,7 +240,7 @@ export class GlobeTransform implements ITransform { private _skipNextAnimation: boolean = true; private _projectionMatrix: mat4 = createIdentityMat4f64(); - private _globeViewProjMatrix: mat4 = createIdentityMat4f64(); + private _globeViewProjMatrix32f: mat4 = createIdentityMat4f32(); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. private _globeViewProjMatrixNoCorrection: mat4 = createIdentityMat4f64(); private _globeViewProjMatrixNoCorrectionInverted: mat4 = createIdentityMat4f64(); private _globeProjMatrixInverted: mat4 = createIdentityMat4f64(); @@ -459,7 +459,7 @@ export class GlobeTransform implements ITransform { // Set 'projectionMatrix' to actual globe transform if (this.isGlobeRendering) { - data.mainMatrix = this._globeViewProjMatrix; + data.mainMatrix = this._globeViewProjMatrix32f; } data.clippingPlane = this._cachedClippingPlane as [number, number, number, number]; @@ -661,7 +661,7 @@ export class GlobeTransform implements ITransform { mat4.rotateX(globeMatrix, globeMatrix, this.center.lat * Math.PI / 180.0 - this._globeLatitudeErrorCorrectionRadians); mat4.rotateY(globeMatrix, globeMatrix, -this.center.lng * Math.PI / 180.0); mat4.scale(globeMatrix, globeMatrix, scaleVec); // Scale the unit sphere to a sphere with diameter of 1 - this._globeViewProjMatrix = globeMatrix; + this._globeViewProjMatrix32f = new Float32Array(globeMatrix); this._globeViewProjMatrixNoCorrectionInverted = createMat4f64(); mat4.invert(this._globeViewProjMatrixNoCorrectionInverted, globeMatrixUncorrected); @@ -1197,7 +1197,7 @@ export class GlobeTransform implements ITransform { const fallbackMatrixScaled = createMat4f64(); mat4.scale(fallbackMatrixScaled, projectionData.fallbackMatrix, [EXTENT, EXTENT, 1]); - projectionData.fallbackMatrix = fallbackMatrixScaled; + projectionData.fallbackMatrix = new Float32Array(fallbackMatrixScaled); return projectionData; } diff --git a/src/geo/projection/mercator_transform.ts b/src/geo/projection/mercator_transform.ts index 5b163534d7..ea8d130e9a 100644 --- a/src/geo/projection/mercator_transform.ts +++ b/src/geo/projection/mercator_transform.ts @@ -416,7 +416,7 @@ export class MercatorTransform implements ITransform { const tileMatrix = calculateTileMatrix(tileID, this.worldSize); mat4.multiply(tileMatrix, aligned ? this._alignedProjMatrix : this._viewProjMatrix, tileMatrix); - cache[posMatrixKey] = tileMatrix; + cache[posMatrixKey] = new Float32Array(tileMatrix); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. return cache[posMatrixKey]; } @@ -430,7 +430,7 @@ export class MercatorTransform implements ITransform { const fogMatrix = calculateTileMatrix(unwrappedTileID, this.worldSize); mat4.multiply(fogMatrix, this._fogMatrix, fogMatrix); - cache[posMatrixKey] = fogMatrix; + cache[posMatrixKey] = new Float32Array(fogMatrix); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. return cache[posMatrixKey]; } diff --git a/src/util/util.ts b/src/util/util.ts index 9eb840907e..2345a036d7 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -27,6 +27,14 @@ export function createIdentityMat4f64(): mat4 { mat4.identity(m); return m; } +/** + * Returns a new 32 bit float mat4 set to identity. + */ +export function createIdentityMat4f32(): mat4 { + const m = new Float32Array(16) as any; + mat4.identity(m); + return m; +} /** * Returns a translation in tile units that correctly incorporates the view angle and the *-translate and *-translate-anchor properties. From 874a7ee30913ad8812aaf8c59f2d63fc14bfa78d Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Tue, 19 Nov 2024 14:57:04 +0100 Subject: [PATCH 02/10] Fix tests --- src/geo/projection/mercator_transform.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/geo/projection/mercator_transform.test.ts b/src/geo/projection/mercator_transform.test.ts index 995e71fc83..e1d56c32fb 100644 --- a/src/geo/projection/mercator_transform.test.ts +++ b/src/geo/projection/mercator_transform.test.ts @@ -669,16 +669,16 @@ describe('transform', () => { transform.resize(500, 500); transform.setCenter(new LngLat(10.0, 50.0)); let projection = transform.projectTileCoordinates(1024, 1024, new UnwrappedTileID(0, new CanonicalTileID(1, 1, 0)), (_x, _y) => 0); - expect(projection.point.x).toBeCloseTo(0.07111111111111101, precisionDigits); - expect(projection.point.y).toBeCloseTo(0.8719999854792714, precisionDigits); + expect(projection.point.x).toBeCloseTo(0.0711111094156901, precisionDigits); + expect(projection.point.y).toBeCloseTo(0.872, precisionDigits); expect(projection.signedDistanceFromCamera).toBeCloseTo(750, precisionDigits); expect(projection.isOccluded).toBe(false); transform.setBearing(12); transform.setPitch(10); projection = transform.projectTileCoordinates(1024, 1024, new UnwrappedTileID(0, new CanonicalTileID(1, 1, 0)), (_x, _y) => 0); - expect(projection.point.x).toBeCloseTo(-0.10639783257205901, precisionDigits); - expect(projection.point.y).toBeCloseTo(0.8136784996777623, precisionDigits); - expect(projection.signedDistanceFromCamera).toBeCloseTo(787.6699126802941, precisionDigits); + expect(projection.point.x).toBeCloseTo(-0.10639783373236278, precisionDigits); + expect(projection.point.y).toBeCloseTo(0.8136785294062687, precisionDigits); + expect(projection.signedDistanceFromCamera).toBeCloseTo(787.6698880195618, precisionDigits); expect(projection.isOccluded).toBe(false); }); From ef193798c483e8ffb7e4ae2a762f83f051b6e680 Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Tue, 19 Nov 2024 15:10:48 +0100 Subject: [PATCH 03/10] Fix render tests --- .../text-variable-anchor-overlap/expected.png | Bin 41066 -> 41179 bytes .../fill-seams/checkerboard/expected.png | Bin 9169 -> 9730 bytes .../expected-windows-flaky.png | Bin 0 -> 43951 bytes .../checkerboard/expected-windows.png | Bin 22981 -> 22845 bytes .../terrain/fog-sky-blend-globe/expected.png | Bin 11103 -> 10373 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/integration/render/tests/projection/globe/terrain/fill-planet-pole/expected-windows-flaky.png diff --git a/test/integration/render/tests/icon-text-fit/text-variable-anchor-overlap/expected.png b/test/integration/render/tests/icon-text-fit/text-variable-anchor-overlap/expected.png index f2bc122a522e29fef8b1f59efecca3ab281e3f6b..866a7390efd166f9226e43d2e21133b7908652cf 100644 GIT binary patch delta 14059 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 diff --git a/test/integration/render/tests/projection/globe/fill-seams/checkerboard/expected.png b/test/integration/render/tests/projection/globe/fill-seams/checkerboard/expected.png index 8604c1b25ba3af1b33eb0f275499afff8ba435ff..834e05ac87204930400a837c0a873df43ce53c9e 100644 GIT binary patch literal 9730 zcmaJ{c_38l`>$KKu2Qba&22$6Q|8wq(MYz+#LPr8Xj3UNF3k`sWV@}J7RwmAn#wmt zHQkbA)Xh>6WleI?kRlY7WXmAG=Y7vuy5Hpw$C;UP-gD->&-2;d;jdq3Ic3t!Nn^&0 znZjhy*<;3xh261ZewqOPw)$Mn%uqp!i!Y z>xBI?_6zZ26-VjIzb!6Zo9Ez?Lc7RMnaQ2$zE#U@&#KKTs$zwN4G%q3)?WHu!qT0< zz7}3~*OnT4Xx%E#*a@5xpTSVCPZ@?@0Z)tkFSN!s8}Z}x)ojXOOe2q}!^xFNi61jF-$&Tsa7Y+SC&xzji`SmIp8YYj-a3*o} z6goOO6pQmt&x$(|^upFsSKrsy*Xq&3!xLv{F|7{q=Iw;Lx>$Y3eOh#+f!C{|XA2iD zT%s^hNqyIGvaW(8?#R)jKOW z;8<&PlN1H%DQWB?$9FEJ7fggtq!OMB$)`kk;-`5#Jw3xU1-axZ4r#ioDm8|kz;n#w z6~->=OmQn!XT9Y~CAtc`D{m$W;g;Z7k4DF>TQA#}>)+uO-sRQ)6=T}{q1v3E5!|D90evL zVJ>V|lLV1R$mFt0IMXdYn5Kr_f(`yKVJ@E;7a#A2zKPZ$ww|7zVwp)#jX6K)@h=Fg7{sg2Lq>Z~DA{{C}w&VudjlgPT_ zJU4)|FC;@IYzcD|5bT=DRgD2U>3k50v;` z$XTPhjm}@IlPP4kRwg&YeZdg1g|x|&CqqH(864>G{ql5v$3Rx zb|tjH&9q|%E3-3Er?Ej}a5;r+t5trOJZ}}LqJ<;67)94met6gQ0E4QlFNqs3?bPIZ zxUQv^h4Jzh$q(~~is0($3*ODu`Ze83iAoVSrdX%_#Y|9=o^nhI6Oy9m@ZIOaY0-2I z$qYC`a5XlcR`I2p^BcL$lD@<MUpWBjM9;X98+1I5t`x8r3fl*sVG#eul*|x>qCUB-f&7N@-a#{YX%s>FLwTtf^VN0mq{q6Z3 zH@t#R!ajw6@17xx`zj+Y@YB68Ti1DXl0({ahVyZNG(AnhRdI|3shkXZzs{7}SFm=8 zNO1~Gs;$F<)8u1MXq2VXwD=cswG5w;XHKg4!f-yj3x+ax5sA0(VJN%b_V151WwT(2 zxqQvr)_f~XREqLb&+eMEW_&OsLA+rmQ!$Fi!Y?liuZmk#0jrlD<(7w$kLA%STITWH z1ymJfI8(gEovcfjP@^ce9sovrxg9$so1H}yQ>~j{?oNi5X0xg|Dw54wd}d@Wxn@t! zl*__Dj>N^yK&>w8YOTJtbDW6Aa|T@HR^L7fczSzZ>xOVs*>5FAZN?jZV0N~PH)ftV z{x6;*OycP69IfA^u`sRg%t`Yv_-iSz8a0vh@laay$oFp^92_SU(62Rw8-;JXzu$H> zDYz;rw{7rSn{VyDO52uVuMj=2;8sVfrh-&h1<>E~Do_V*dEw&4x9{G4GET|(!Kd2$ zhUfgUI?fwcLBaXIEWcpEQea*dGN?o7GPF-;@kO400cEY|`;ZC^p+AL6DKY8U8rxv) zbzoYXf4-4+SLYS8^KcNKB)Hoc>-eh!=XbL04NoAz*|18&6AiM8)9e7VJe>H zi7Tw(wmCIR#{tOC<-0p$G(iZkY`VN58B_uQ#tP^TH}q3eQ$JLt9A?8IMPr!GzoBVM z;`5SD1J>xR6kN^Ap;Z9b)GV#oRFxzS&jp--D_PBAT1}G*1xI)=#lzQbVQ}?4Xl&Hfiz0$ue1cL}<|^^)BsL;1)gwK7@ZxN2b{rM^OZD2;P+N z(rYa=LVNr|^WDt)Hcwqc3Y*I}1#UF#dSORZR<;+bBHH zxWMVDrJ2l@#c-~?xeaEdOtOd)zM@6j^Iqe0K*8J(9~K(z|M2?e{Z9$G@2|v{RAzNA zV=?ND>UyUpay!<$o!>V-u;-I&+pEkE()5VHw#+kqpYBHt^!50@elWJFsp)I{V6O(* z)}uVh8d{!8A#0+U2kHcZL9ah$bgY90FN+A#pMP%857y<8KsZnaN$#jR65MC9S(k;s zojoQbS(hVa^8-_OyZGwTqgsbh3l_SFOvxz%1dNT%0L8fW)){@&&-&JtY}Z232~a>B zPBCrg+W@$)Mko#xAYL&Wi5|_TDkpxDMdm)MO4?FO1|B&^w$s*nHy7jmHE4b)83xg^ zLr5PB4#BNf z+18oEIaZnZY2U)AT%T?JZ;m1vqN}Hu^D=EWf~#QO%R35EBtsB=$vKP*!pxTG{M7Z# zwmkT=;0sBP67DKgG$S|>3AG`Fw?L6ph7PC-aQ~+~huZ$KqjIb76tjW%Hq@?gzl_7| z=J-(4M1+yO&G9yTzwEwR`uM_~qTb$srsn2*ZCQQGoBnXA$_zB1{C#s<;kSW4DpHSJ zI~LF&Pnx&QuXYWTp>~uULZFS|BMO2Lu~=597)cga6w?wBbPs`qor9&bh%LaU*jISC zh`iBZ2=4tE&Mz4WbONgYanLE_&-s=ZV*KY3BTw4_)ePF^nmA^j-dJ2i8w}7a{9K&` zJh^KgP%ZyI(NK0VhL&%%i;lm~TwooVg9LXl+OLT8{dbaho(1FU( zM0jevn!8b6p?y-}6T|ZSMd>xG`KhI*qRETz{?5K~e*er$r%)55Dr)`etQD9UT{pbI zG_W$>tOJb4mk z5E0D&k1robRW+>#Z-hm+8uL^=)h1w4Fsg{l!sR5U@ody7@*YN#11uNn+Dj3pXTfuM z7wP7IMy(eEA_2L9jP}!BmwApaB@`qyBs~64|JZ%k`ohj85$lrg#pN8WC!KqML0J8d zo%(;&0E?@=@1^?{@5Y#oY(jxNogZHW@MFG0GUG9LTjXM@niyPP?O8PL>u-H+S90M# zkqHA!iYN)`Npr)tjE?2PY3r7cMI?lwL_nwzx?GX8XSM|^F@>@Yvq9fc)DuZik-oJ# zK~11cKq4^eGdfBx(M#gM*RqW3l_OpwUc6Lb^*ayK3I}@r#jz=~kWkU~?kuw`&(AmQ z)}8kdU<0))>Rtzj0UhX5tCjR;SQ$EW?TMoEi^f+aDKYIEc7jm(uKg3X)N<_>#UnJp zx(#G0Fo7;0!q9kWFRMn-B0(%3r0_xL9w&$n?g$uU)Zxfkc@W?sc|SK1aUoPP2pPB~ z^eyNP4ufj}^``xdr7937QniUf?Wp%}-d&2Y0MCob!xEd{RIfTy+1C$lW`!HGWe!N@ zgIFPYv|jZM%=H@5TA-R-5}cIsHr(jbzaqf$#mzoJo@z-7E-otCBYS@ZY;NH`2p+`k zk#s&+M6%Qf*6-{7cnSKF={)#tK6WXGpO09?jmZ~?zH5_aT;I8B!;y0 zghV6H3@CJb^$0|0HDG;U_lKPTS~ZY8)cDl}*MtrZ6crbz+`9EU zZ>qX6qg)@`>_SYKz=@WG&4-tOWniNqRA@XC+IxnHr7JF=f0ry-Ut*Hy@Y%_MwXL9B zlH7+j)zzD)&L_I_VoI^co=^9hZ*LVG|B1C`Jf&ns>%v#Swze&AqivcT>txdrDh0mk zP`8K~jUjrjWLpO$?&RQsh3J0-kGQ2ELBdWFfZ&h@r8t5x@~W|33e{&e3{()Q+=&8< zI_eF&gBoa11U}+lN)e60AV}ZlQHk#{tfX{8+D}G7ULY4CC>w!YFagi=QBHxX0Dm?d zp3srl$%)FzRLY3-zzkzCe8>$?Nt}vQ@w8l=fY04vih>cSm}i#( zBjU!$t?@EN$&8sJm_iiQ@FCvt)YdyFsSb}+jwKT+SQz?k-9T;KV;qT~G-OD|bR5>` z9|P&wqiGjbV)2rMqY|WNAhHW1vu;3`RV*^VIS3>V5I-OQ5NM|bba19VriHnPATI## z@rO$|3JFO)b)jYg?HFGU=wQuWkibQ|o%*)?gRzid#ugf}nd|^mm5p4>jPlM9f>ho0 zo=f?%uX39u)JZT(&o1YJgyy{Z)}3zGayfdPb92dglz8;i_$pCKj619r-~X_bg%XuU zr*Dl;5Yd`K2)gMeXvDDlZCRq)`+gnoZ9?H89su!Xjc7=2i{#vd{Hl3Wu0eLMHOu%* zRKzZ1=r-Nozi6;GevrurOXec7b)Aq$gNIwbBR^biVJ}!|YmGBoeH6e?umzBqX-Xl* zMWAo872(Ul6sWI1XaY2=ryMyuxONT;VgOL|mLPG83NME^vFHJ&D~GO7bO989s4qr= z4Cvoe$TW+0A_$Rxv_Xp)3@o*{<&87gFgOTZ^adU70fyoLgUy@(atN+CbP&3|g?uK1 z>a8tUuEN|4?#MHv-2%0;IkWyDx&5RBrd8dF6sEjxT+};$m2j&c z!NJuM-Yg_et6U-)Q356#WF|!Dl`KCj;khG)GO|Hh1(XSz{wFE|I(>b8N<{ENzZ&m} zVa}rXd?fr03@rKQ^dQv~q7d!AUt1EUD4-Yo+#&bAoD0|NeQFc(2!!c0^_D}E7r$V~lN(1x*n}zj(xWa~Hz6*sZd@F|=OEGakLP}4Hgb0;$99h+h zB~=ivet#)BG(dvpN}Q|7Bp?jI99U-g@vx|1Ux=U#Dc7??0(Cro<=Wi{0*^)22S4f6 zpXY@#`61tnc?UuA^Zbr@Fru26chIH`*a-xQ3pDpeAm|Zcf)$Fo|Ld_b|Ki=-bBJnM zFL-x}=ZHwzVyCDCg;;=^07uYwq-q+4oZ{QO4#gw!1J&`~IMlya8oao2d*C7pxxFWJ zum_$L|4ep&<5r)i6rt>rnQU&>*T*`bUE2cd`he{!Ay@4Oq2$u@srEy4YFKbzw|8A| zk2i$ldf$6rQKaO?t<*CXMAqZI+j zTNJfarF&@zh|~-f5eQdYGE^wCi|#W=HcQ8WlH6qa`JmF0|6>OA+^<7Eh^eKeowEPq z79@@MkQ0^l17sw=ur{d8y^2miEU_Sp3{G?j*0NoDkPgRCLFAkcT^$IQ5Qy21>VL2$ zr~VJl0jFC4odmInMa+y}hhkJ2^yKj!_5}PuY|B73G5iuF4Qu28hZ`0+?ROxs0=za{ za`fxc)_jHJdglGM1we|2?&=Ch8d)a zGZDzc`i$H<7sqVe&L^`>8fKItu_9lm0mgyVwNvo^d!|kOdaf^7(p#^ZeH`-cpf68_ zcf0;}jLJ1{JcknUSq7fFAibR(+*!tzN=|>2ru%+K$@eK+qgqy3?G|q>l|U~eugsG| zf`@D~ve3_nUHbUox91EY_CJo@6)u+tw4p5bR`J1c6W=w|pVVoBKaNV=>Y*i>T!@a} zH$cKXB08%#_;FzDvgV{M^>eZuA4RW5NNQNu-u6p@uGC-aQW@UR|B8? z$_+b;^xTPv?t7mE1f^!Q|JGZ-kY>NTuMbVu?mDEJ@jF`SfqcO;tCs^UBqW2tMXnfi zdxP)$#4}4_rEq$jc#A8li=;IKmJpO+brL`b%!wSN?jU4#P~+nzqAw^PaY$oVbGGc7 z#6)omRylwjFxqMmn-x!J05~W+HL39*JoN(FS}lkwkv=HJp#$`{Cf}Bk z06oKI84Jnkp1>RW);W;~R;&uHI}Lcq`395Df7!6!#zSO-WCI9B;n$CK-*{Qzd~91b zmmZjogeu4e+iEcOtPDV#Cg1qJ*-EaW#;*-#-&}6qYnsVoKtsEV=JsCCmMsYBPL22O zsr5?@?C}J}ln;wNXmJIEbiQ$u?x;wf$lI{@MTCPA+FVdJAh9xA9Fjp~%TYwL*{WP0 zzEilG(Q;v3e{tPgkZ5xfw|Cz@(+(Uczz9&$;{B9zW{9j>xz&p`}%sK83R_K z<(PmxaT*CP*&&F4m&mPj;T1c1my10p0<;)7gh9Xuw~F;~z#%^(=`>j!V?*GE$KzD% zwEvAM|A3en?Zi>TqeO0l8LAg7pOCr%34>pX#aomKY{_shpC{*-NW|-Cfh%~RAh~~% zd{G#z1Hna*qQ#hk=`Gz;Zf$^-06qdf1bS*UEDe~d#)R0E1REI0$nVqT2(O@qS;m9C zrOgk?x>McGc~3yA9VpnYh$5a-TU~ZM$tI|NS}%A=O9f{C*L*W9M(S~J@13uff8OsE zlb^P`61-{9QM_7qJvr+vX~=2VMjTK%;}l|e9_6I{##FqH3?>N_AOtE82=z@=JFHFR zpj#VS@^<$0oC>C_J$Kq@5WvC(m4kV?K2GqlUWIGUWS&A@=+JdiMR_&^gNG+7Jx{Ub zoApMUy+JF2FZ3?7E8_efR-SpRf&9?^i6FKhcKf%^2f+v-8#Fb{7lHwC%pw@M+yXlw zfcQmAkK&|sxP@0^H7l+lqZ=TK46oMU8`?(}{Hi4#4Kd=zrz$M8LKuZ45kebmkYxz9 zAZKGhZU-s{EjV9|op1Lpd$2D%pkY?sal-04gT}UxLD&TJwPlwS0*Qd;^Z6Ig!Sdv6 zK6(3~ta6l{LC+SF%>_5_0&d9Cocfks=zlvOgAD#LKsipz?|ms)01et~(iVX7yV$Cx zhuqY+D4Pdg13zb2XVPUKqAoRlLG-7|M|T_a>xmjzn2|>v%F3N6y#EKA6dGi;Pmv)~ zG92hEAI|B(6(hq#WOGD*mly#K8u>6FxYE>}ITK)!2dS4Dn)Ufd_=OFX!r^c>WrvuE47@lH^K$F5&bvgI#9Bf&nb8*9=CaJF z`J692Dr|Hhc^IJ_Aa?LRp?&G0mm-Wl-90=Xmdw5r8CX!DFh1#-#bJ{1ld(OU2a zggjpUIkWsBiDO>NH~HjU<5Rc@E!iFampy$wET;IBz^^{m*MDt@XqHGlT_BHzB^b!Q z)IGBY_N#w@pMjW#rFu7543&^3Uf{uNKG+0-v9cf~(zsO*QsW1>BZ`&H!r%g%lDLtO zttWdBtQ69&^%Kp$j=h8>g2}n=wmKVrc7I{^+Z>H=OA^(4pIG{IRcy4YH`kE;3>moM d;h%=jy^}STY>M;1K&5VIzo(?Y;N#ybttprU|AsU<6YS79Z)}5XRXe2 zaR_Rh(*MUe)1TpWOkl0JFE4b^h|8C8+uU^?g_{kz!Ruv;p{|<^$Fy1u_T*)54a?m6 zId3w1ot~@4N}J;GtQNyjpRU$pO`D~r`+L>2m+?vICmM%M6LHC>!mb}mu&o8F#E&idqX z@#{NBmcN;$K1)rDWn-=pdn$}hchgm4*%b5EyF}Qk^D-L)Sos2@qRAPSl(VQk2*3=eXj#+X@Y6z>6iufQ%quaf6vM{ z8}1EN7%_yIU-4!#OxOqbJNY|9FV^g$RlYCVPe;Xw;yig z38QEXR*SUM)AWq@m7B+CjBG>h=75HyoBdzympK}9Wj`!1-~Z^Quz6IvqQIpAz z7}t##g9r%VGDjqkXyf6zp)g`Z!i^g@{&5D_rD5MfgS8w3bB@8`lJSg@@jsdJ^6EnR z$pr=#hygfxz>9=V1r8ztpZ`wPrk{S z`9_T1-xgNqR=Yep^x3$4Jziky!s>BmeJf~ve~inij@C9VzH?+8tC%^vVOu}M(1Nq) zdse(%QzF}^X!rn|%lvRi-O|d#!o$J}9^vlZ=wsG*#O%-eQ(adDQJ=Yp23XjE$kJ-`>rP@5^20>`7tfu z+ozSVxT_=I?Nivloy(^uixNB&A7TfXjj>6;Q3BxuDxs1!J~{V+wkn6=fUU>c+jli1+5lP< zSm!;yHzC`Qe1-_zaIt32_J3y^SW{5SI-~#3V^z)YLzYsJ$%ghPvZvvu|I2ex5AD0l zQZm9UBm{uT)jic){H2|7MHk|VhMHu2M(l0}R$tL(t|Sfb7mk-i@JqX=hDxVuFWvpi zOonK!abn4ELy}yQw6yi|_2=H<>N?GruRqypt?~Xxwcflr1tYq*}6?y1MkZ5+SQN zg6<}^(&tVV1ios8Y?Pn_tK{ziZ*rg?y))pPs3Z1_rBbf_e|WN9=g=1 zK4=k>9Zh4}#(Xwz((bnx{mU(y3T=v|K(vk$!(G0dqnr-AX698eZ2@8ZkOrAN@)Y>K1lwQDsF@Y~Lo3^$eA={MyH zf`7um+uYRM^I~_0_SL>M6(I_)>#B+Dily+; zzq9v1l{i3mv(|`?3mZIRE6C3N2}XB(0e?;}924?iTAOxG<_4AZ2C4fVe6*=$KS1r7 zI3wg;MxU^Lka=J(3}vp*OSO(E7a!FRnk5JwZj~f=-Yg4_rcHGTm<7AfWU@_%B@Pwh z+g(q@f1cKrIrg`Cn%RvCZp*V&nXP#Y%nc!4cA#wErML* z>2BmLT=ndAUG}9BD19V{N47#>MQ)27_5s2_Nb{{z0k_sZJ9W$xIaDd(*-}_*?=c%wL`c8~2%qr^XS>nf+ z#TRzYEsE9h$v@=cUw2TCIsaD6_mgHWyQi3~rWYGV(?9soF2613Q4253h2dYjXB@Mz zwV?1s-tDHJps)w^Enq$|Qv~_sH+;$EYnuke(>yQi`7%i{^j4C*x9hP{#auNe?ZYqQ zc8g~EKZVzDQrd*xS7jR#U4}_S;EqBH#L`i3aRZ9l!mTLl{fqX`QaCvnwYeRdqt>8zBV5u=U zR?57Cxvp6}q94x|Nvw01Ybs?j3d zRo}Dgws>a8uj@6qL#1Uy69ggMS(5IYIN{0lMFW+PysyWZ*~It`r2973cni|POS-FF z9b&GRnVxqDezz93qjne2W%20|cf-{QD5S@&Kh!IR>oLixWCJ{ClMsMFvd~aP-vg33 zssv>*$um-GClSm*LMtn8X>yM9#p9U901tq}T33y;D}hK=S*jWt%IB(5RPvD8&5oc5 zEIq==+)xo9bL-hqsDVV3axomKBkPsZCm(t3|DK!*;tF}Ls}dlR(DmceN&<13;3cK0tSPj1$XKx36xj7c&Mw)+KN(HyXnSDAF)YMmkA6HJbs&A>l*tZyM7>hrwW6J z5CB30P;04_o zT}*O&8WGgFftc8U5Gz$~E8}7gnYs1UNHE|1mA>%fN0slkIZjW`Y%x@I5U~rwOFrEN zAt9v8*073Q){TCddMl`#NOL)uO+9zEr&d&bYhofe5K(1vXDl-ki%Fmw8&p?IA-IJ%t5hOiv5wYuixv#t66mUB8&a(Z;K$jU0I68dte?fT z$KG$}u3dXtv-2>ZwBZ(O()VFNgX?>PZ%gcbQ-DY=)$YDKQ5NuEQR1C~y6*X0{^lU* zec95k(na`vp?tjXhJFdf_}hjac94gh^?`)0q#hM%y8#wEOz`GhvlpW|+Z;Fz43|o+nHKnudY}1{m1|GIO3I32rEcdYapsjps;uBTD{$a7j5- zmu1t5JrK`6I|mC&ZV@Vn;(HSqtfgB}kRVX}q4Su-OT*6plT-T0HMhjkCIKIg=$wRz zl8~<9@Y$LSj+I7p{)ghPoh~uh(1>TIWI8HeHJ;t%;})&ce_Ce+-~++oggdd>BxjI~ zL@|oKm@`z~i_M*#EHVnNFp}0(7oLTXrJ z{Sw$S8F$(%iOvHvz@4!w1jvt7ED<27Rp*S zdPWY64`VJS-NbuzITlY@R11oF^S)J0k1#PIc_V6E0m?7ub?y(MzT1+vt+K5 zr2AF<@GD9&z!nlqEF7_R^YNZ6vd|fDEQDV8+!U&x>yW?iaFjT4mV>6Z28|*Gg5TDAN72xE(cmKKV+?0|0n*n%bH0O=|Fb`+F~Ny}H%Qrbe?f2hn=0I7 z*G$H`0-zLmdX6Qq92iVM1*1pW*uENjh8^tKtJUnY{M?l>U{yiz!Kc`vdcT2U794}s zVgR&(!3V}7)3G_159q0Z*+3l&`x2q5kz3VbF#I-Du2(OeS-*ng!~upyKmZ=D<>p#_ z{J@Vt&z|s{2IP_KMOnz%JYoAT+0x!xzy3av*=lu7xbz=BGy9nUh4@MY1{8WU0O$CJwq5+74jotm`PY~uzupk@Su9wYGGa+shK7>!2X`Utmr|WHE;Cx1JAw1wq z?vbR$rR;UJFa334iH<_5Qz3R!51f`Hmt{!0>v{|0Xl61CvwN+s3NCjTsA>Vopdt&f zja)ltyB0Ux4VNS@6p^kKyhY>MpsvTVTk?Tci8K{_vY|UVLt`l?v!H0OK$b5nx04tc z96_EZ)g4eCI^OC*cqO1TEEg;!7_9>?~pX2)ow-A{!^i{H)STR8<6S z>7OEh;~)>Cd0yQAt*fHj)d8^dUwm58|2C-%ZS4wi=Og`$>LWDSck%&&;v9|PSG%vm zUKRk>ciBXv+MflRe1$xkfLoc>cht4-3+@)6=gs>oIp99!fEqk%jERp=95!9asv3AFHt0DB6(ZRl1E z8Fv2(Lk5F#1Cj%D?+l8;$aacW>Kr$wK%a%4=ejKLc@LK$5s>)^<|y$Q0fj)h&)O*E z9)x&??LSTkT=vNc02fj95_u6ubmUxKmjP!04V+}8GGOaK10O#Yqy-2MSWE%aT1hVO z)R2DO$2_fiqvu5{C@V@kf;6o8;0|L>g_rp7>2A^JT8&%&dTd*6)eQB3KR$zoHW&c- z80^)R8qI5rC-cOY__7-4A7EL854WB8fH#7hL9eaHGMMchZmj0ssT34L@#% zNPF$~WkX$}IOIKqeZU+NcFuOPhLH{457Y)sbGGLHdvtESl5vP?IR>#t0>Txn9OqYB z2%l@!>0i&!{{_S4?5$FTBy>uVZ&WCax-E_J{Vm)U#K%n5QWuTYZ@`PUZVDj&Z%%S- znDLWkt@Eg)1X3rtd9&%;=74*;v^$fOD@nCFru`2cIyGITns81iO}4>m1@T2#&rgTp zg)NnWkq}Rr6~x4d#@ErkMT%j*ER!)Z0nCuD9^7IfTO;WX(_4N>J?Qmku%G}An!Z}^ z9OxOCy_<0|Y(QM(opD{>MLpg!ZqN0k$FNw&Qs*fk$y35@K@cE6KwFcH)<$29VyPgw z-CNR~GF5oITKIlHq&HI4UT9{Z`bT7*x6W>d&E9coao5TA|-qQe46dU(l9|JpmjhERH8 zRkkwZ43)J?0ya`6CYDpUqVt?INFmoH5-dxfj!6sK(9o|_ZBzw*)0sDt+h>66@Q4)^`QAj-ND_%>xgUhFB!lnO|v=8xO3y>(0lL z1}-I$sDWa{z)p2aA>lN^!N=b5;z~h?A@fRp<5#%+2{Ex-`0Ph;Z75wQSqT;LDt*dD zXYW!cLZcVwu{Oj;tj7K>x5ihsEt%B!v$ODMSlfZRg*BT%MmZi*u<}^4B1l?`g_zXK za;splkxDT;q2)heaN?C-MXci3Rr_FVDjfS(Pz==Wv%z+(1VmvmR_* za1Otjh@5-n=QI(ni{o%lCV_xBgo_m+P3uFB(&AjWKl%~lN`$^;7fMDM z7pT)76ag9!)vlpTCc8QR{jJs(DJ+5shx(Hg#=^wmHcvnFvBWS9xaYtR|8og`X0j4m thj~%9F%e&&(F9q&+6e1KV7p>$nZK3ItjEy`_^Hkqmep#@E9U^mb_*<_`TeUMFd$)4Gp?Ck8# z_d0!kf57kYsQd1u_xt^Nzh2jPUeD`!oq(q*vc!bcg#Y~W53#(Q6zZRU&ch$i|3h#Y z{|0vYq6mo}gc!Tlsz^vCDDhpFewp9^-y1q>KuRh*jU77|Idzo|Mm`$@f;P z@285Q6;u^<6eSgWJ}T&ZW|3&5auz$&uN^#d%zHF2)p@eEw&j_DWedcz;T%v%a%m(v z=3y58V;~|4jsGYet%AUR#44~-;6EbMBL9BO?2-Tb5xtoD|9`pgEpNVXW-J?`44!2Y zM;b-Mpvf)I7>LaY55$^L5IspF_fAtFLz3t6!6Fpo39xgd-VOM_i2e$z;b6arWGDP? z$P&O7sICdinj`mSBl3O5fWL*IqBOFYoZ($-04XPM^Y)I3_&3L7$*fkp7OgJ7{h*%NS+Ldev^jHlpuUUo*P9< zj{p2U6`NT{@Ps@%@PD7r!Dn3}_&JJ!ErJ=FnW!L*EWhc^)=K!l&$O^V{OIVc zyT1p6UjhXzfr1R~*sA&Wj$9dNa;{joW0cAN?)U+=kP|LoYxBFy1Z(6=#hPWoDmXf$DFBPqTfK!JX z$;3x6)7la2EOqBIWF$&FXP9X!I$As4O;BLINCl4|heyC32hPs^{Bq}LU3Ik7VafPL z!pk}zlAdyYhD>Ap-6-@CxL+8F)DCOyUv1qt1K5Zh*Humq`RwdX`m$M594*^c z2XtK4MZ^DYi-f#1g%SaltYqr#m@CIjV|Qg4n_^DE)m&$gvLJU zwzL_o>87z=#4jurOUQf?8K7k&O6Qe0kn6H3@48265-xdtYCtDWFyx_QROa#*qgL`c zg(B0H{0qrmon@1JR@4k^&;PEHfdcantg_u{)OLT$VO2rpI*nERS6eJ+QRhRxr9LF~ zE%8i2Q(M&D>9t5!wWptaeenh}r;R`?NRUQ<&~utv%*fJ; zY>6CxLEjj1)8upI+VpmBbY|`8G&YEh6V1J|-u2b?(I&yDRnu5`Fnw1W55F5%tj;{8p<`A(C@YnxkKl3;0>V+zu9U@K(3xio|NirMOXGVf3@ z;6KS-P4rt$^uE8m{dlbyuZjOFDDO5+vi zEUYfk8;&oZY>ixZQ!Ox5B^I_j{VQLY&JJ&hpXD@rUt+$xI@+dbBTD5@E0L>Rbs|`M z*2z`&uN||W->EGAeRSoe=kSNDR&1R?1oFz1rC`{xv3G_}7NcenDF*SDVji=t*PEkzJRluBUMA$-I~E zl$>!#|Gf2iOx{FxzYE_=R z@%kI43iT0)E3ju@i@MTvgow(Qxe1B5Fg}-83W<1X+l$R(6n!qgtYFWp{Zc1SX3;;L z|Ks;?WE}rupM2xqcF|G-UqANoDY~}B+6lx<{?ZC#zD0N=#4pVkllr&fj1as>>_WfMvLp|kQa#*o8ZVme#63Xz<)0oVx^YLcZsmC)%f3kGRC2#aVwqXYaM{&r41V5z zTjG-pv1vyH#DOXo%7V^^5T85_f2IaRmp(hE`sn*mfvzjNJa%lXJgU%TY%p8nE6$vX{wWU98n?y$en`_J|- zg1)Xjd@uYqw@f`%Uv#7-MMr3u*io={3E0D+!9u^r;zW|rW_x@~k9q-cI zy!W$&qlvyNN9*{sG8j-ne|B#P2b1h(ud44i?@N5Ahe7w#GLg4%XZtl=W{9o7zEMdUaTuaSY_ z7|@H=Fqm7)EVbHNM-2UNvv_?;9uC)8!9f(t3 zD(%{NSBgjkEVZ#q{lgX^aNutvaNY=w2Y4m;}yq8lMah@H)Q_|zW_J{X|5HK#nuM? zedEfV`d{DqMoNrAMTeXX4z~+5bG0|xc@&2Jnm1kN3;o4}2_L?M_KO}K()#LP4*GzgBq`gX4B5SPfcx*=dO077!r)6FX zVrRK%y{527$7bWtk8AXudz0CHU~>sJ=_ZPbJI7mzj+6#oR?)B%yAuf1Kk{7kx`?l;n6@NM+#l zi6i&d|2V#cIj)ua%hDBuF@JWlDjko}bDmo%!VnTu|HS&S#EZn9y8xc+dC-6mazwCx zZ2t7bVW~cVwea*Xm|A-9%cG+lFTDFlXQ9!Jc=uQ2G1+}7b|57ak4kyVx7R76l!RFB z%VJuFm&~ie$}JDjI*_`pN{^PNvai=D?ku%`wDRlEX)y}5ZMp-dlGB%ZRb*W$LK9o{ z2<+9sGaQ*lNKC``;(Bj7G7nCGok^bHNdVECy@{EVJ(q3dL#NsAS6t?);B-aSxBt2! zUu0mb903-^Z%G-ei-t?A-=7{X7U20X)25rlNCOXIskoGBcH0AuS z-?spmp+2M{QZT5$QgSQVy-r~8PyNk8nVH6Gw9ON4IyeYEWs{j2p$H84pX=Uyl5?g` z?74M4^IOBMt$vNdp7Mpwap!BaauICyI@Vc3r4#XYoQ?NiwM8-e ze*0?}_st$BJ?zVT&aj-+R#t9DsW<*$93N?o}I?g6>S?eXG_N$-FinqwV&_A^TPxB4Dv&zkj|d zo0yI@*#FHGe;@Fu%OcC^zGUMK+5B!9xZ>gR&(A)F<|9#~)+wGI+|}r~*Q)~8#S?SO zOtW*%h9d+9K6!dbYZrf#CgNa`ms9JB$}Kev;sVUFm{ES_IpN}8^(bAXM8fkVT6FhU z9Z~s~%1Fsf9Z}qa?!T_79)KT$8bQRm6-3C*&U6J zv#FgMwQ*S!rV8IVMIY{Ha94$C=ua&q zM}Ljs;xb+>aoNE%22W+C+~#lOv#Ma1^hf1V6H{k~U4QURp{--CjYs&*9Sl2;gL4*E zcj|Io6rH6=1_^bwjP>G3*}|ZK%Mv>r?0SvS#G|&k^n?%m{vvC?vNFC-6Ixe=4;P)( z;^SwQf^-^`J6R%s9)GE5m53LJ?5-8h&a;mGARGy92?(55B1?FVJg8*YG?=!D<~0v-OjTIt|x!kynRa&;vMBct+v#t;g{ejKg+H7*^yVUwzjx6)Aa@^@*PkJ|7cp5HRyocZs< zgA)fj7pW|fS<;cR7onm6Pqb3>L?G@$3hWZ67#%90wY|8ID0y}Y(N3QZa>iHNQ%ZtS<+QAWJw@cjp=FuRuS9(M(DPUYz!`VSG_kces;s8{4(+F`|pfG=YFTK za~e-erOj9GyF++6s*|b!Hpqt>y;l}Rhm^}%sxq-rAwY81s zNC$6sQmI%nGHF1M!R{PKnCMAdfVW-aEH6*L$7KEk|{{Q5g~i0!M-b? zRWm~+m_|0@Rj077a}sK2r3gG2;7L|SPgObJV1#gEG-R7MhXvoFm=(iW4cGNrR8~UNtD}4-FTu&S= z22!nbfU|%!=ue9sN>@p4*iSA|Fx<4PYWo>U!Ckg`S;&B*d_7f#{_>*S^IgG84Cn!TgRnW zd*iSK&m;D|bfxFjJ0Bim8b>U9D}{c%g#%L`ieguaGsHt!e0qLY*ghBA_F(M+6oJC_ zAA~|(wwk*%QWYp5+1AmyzO(!iE&vJtvt;>+6A&cHUg@v`V){1M4Kx zm1klNZi~iuryQI(?~aD@)cgwK`S9->cC`;;Nm@n5v$Ib%%>q7p#@lzL>5FO^t(KHe z69Q~HcL9vlytlclOp2JM2S)*DceN}vs{xPexXRGQ=kd6X#%6ZA7xUmna>wus`{@9v zQ0oH}#vyeL>I3o~wQeI8dRmmu7KF~@PBB%6gBZ2qQYSdxxnZBzbR(?Nv_{kYLK@(Z$J8wTZ;NTZhNI{veWCVO<8E8onI*-9qqA81!V;k1q0du z^+ITZTEqWh+tK%{r87}##w(RP_VfR`@BxGLySwV(UeZHe_Xkit1yl9qurJTfb(izY z*I8HEp6meb8!M+Qe0Huk!@ivt%ISrVZ615PZl!3#MT>kiumn7C9x9mbuayDv7VoySOBJ zKAiMY?T9Z_k7za<2-dNlddKu&{t&Oji8*drFGR_V{Q9_oKNe{zgoBlgTYag6>zNJmgc-%3XL&vItH5roN zm=n#`0zV#5Yc513qXmaCZT!owvf{j5fQRtk+;u^xKS*tAEg zZvK?qUTq5%M>yIq^gvCR+sj?M}h`XX zRYK`>Uo$w5Jz3~fmrE9NKV)Z;d54XTUt1S_nR2TmO39rgmRr55U{nwW|4ikS(M8_t#!=*I^O_Jc z$ri4bzAPdJN~%hjmuLPZ_3xPCg&f_ zW6jd~GQX$AYU4!rjDJ0TFaFW{{23FZ#$u@~Gj@rmZ)WFgTiI8NZ>Go;Y;}@Twq~k9 z!ZV50yDbnn?!3^eI_z#wEo8ccwzJPd{*VAm(JqnVc)o20l#KHvW*!p7`#X!nk=c3a zPcAe7Dh#B3^-qed8aNulvD$TGIZxLi{C|F`j?nfdMgMERVE6ko9D>i4$Yh?BCl@AO z`v_VY7h7|s*cwR#Skx@B2vC=Ja_)`@pM83c-K58ub8@gn|L^gH>^#$we$M{Wqpd$b z(AoD=KK*x}LOPA{qG>18mQd8(GAO={=QyNOu?+-IF6}hYk9pNH?ksP0ioDE!lX(re z0pJd@=N9bSxW?>)7%g+2Y|R(js0L967QdA5$2~e=29&X0+cxBC2^$4Oo`x!UZn1pi z?`|Iwv1jv268Yr#`}?J0&u(}Vn)(p$A6i=U8xC+15}Ba$I%#b3zhB1k0ak5IYl)0| z6sIay5VoARP|&o0@Pdd+AP|}IyI)bp|9YY`on8gB7<%#<{#&=DHY zf|A9~&Ukx~$tZ|x$Vw<);HJqN){prL9$Uo1!n5-c35q}7Dt&moHQ(C4zme!fec=k9 zF#(MYXJ8-%X(%#hLgNG!dGUokAFBI|=n19e&;KG-(=~XO2GXU+jbdTAKXgt+`VS307Aesaf^&F4x`%ygd` zm1unS7c7zqS*#>q*Kn)o`{nJGmX%@Xu`vfIuwmH!KHUbEIy2?#62hV{f6UH~GgXWK z{i6t`(Aii6z{dKn0blfl|2*E@l%n_v{MCG5;Ns~Kl%Y6{g$Xy|SyH(1(R$a>Iyj{I zWBg6;QE;jIUmvr*0(=PizPUu6{`L|J?i*nBvt!xf^QK+%KP80$yNf4^tbH<7hQ6nH ztFlnRgexSdt%aZ%2F#-GGj=<>ud`$TLdYpbXIlVMlyO5M-J9%9xuTZ-PT||9CqN}0 zE<<9^srW@hLYj*Ih232A%fhRJdQFwlk(4;vD>?ifZYXX+&+(gN1q83bDCbcg4jGRk-fO@04Y!>z?$f01=`Rw^Qd zl=J(+g8gFJ?Cd)%BfV$yph0i;E!dpGr=fIEnXt9~9td%s`0V9HbTD-V$d-D7hmMBR zQdIn=&6y~_a~FUyO0c=kATBPCKA)w)a51Pm^M>SGXoWzdmd~`yG{I_rng|&~Bc@AE z(b6)7%YMD5Cw5RTLFX0>t*j8CAx90su)8nQRWP%y9C1RSZ!SoF5ayRhzse%yxv2Q+ z^uS>S8q_tX@!x$G2UVf_0=C*+UCGv(sh=dWKKsdMe?wN9kf?m$P$u|SVcUZxHlT+? z#o@u^<)^Nu?Z5gpB= zX3|2xn+xk=FBAN1z1n3@Pa`RMYR2-J5wNKwmO%-dwBJp>HaIKg9Atct0PdUoSpEL zms5r_KiVesIP?WNPab<-0mBEyM^$+yS^45U{nu~0#25A^r77CuUTpsPfi){oH%Lmb zHq5Ku-_d|O0dpkkn%{CS#w@8O~>b!BiVYRiA!A2iWQE)PKZV2hEZ1BRDE z0Vi?w`x%f~rzb5fH!#mUjsh9`v+bd)=#tK+om1gherzWbdJm#q0r1#2RefLmd?Jta zmc!g;*r&&2_tc8-EC(U-Z>pw#dQ5HtywMdpIlPY*2u^$$DPd>3E2L3y=k?vyQU5;^ zZm`>Om}lUx6K-%#96!~+kIC_@(N#En^@yK2aTJ@KBGAQ@ki!r#?E5o+R;34e9Q~b` ziZPIqLmu*ShhPzUrm458oDC7fJQb}WF=Q0VjOJ_i@@l;rYZd^#sNX3N z`+`ausg>gDevsJjPhm4PohJ4C!Vr5Be@LJw)Nm^Z5s+6yCLIK=y9sx-#tS3>n7Ony z<;E+N67J2sV|qPDLFcJSPNDeZ34wV$b87**oYLD1x?Vaq6d1DF)7B_5{5*3 zl?b*B6or)k^{PMKnPiJ2@Tw&*k^V5}SYWC~+?zm^^em~z6C2S9@ zo9j-Y5^$;$Zv3wIy-v;jK>biUy7~PI>@rS6!#b@sjr7>6LjYc|WPl7q25ujz3Va1t zAvHe?_zt1>`qkuZTU|Ql^q!y?VL#?NNU*zyS@ZpMHtr!*xx$Dr+FDR6!J&k_#E5AE z5n1NFnK~Nbk|ZWY9j`Z}Cp>ksp#9UYaZ6g!v6Y=+dp()CH5@JMIAXq1N^|K_YF1`2 zIb~1wEfP^<1_O_VjAQ`33V2U!799Pvl->7*Yi7*eWc&AbXy$rUkU4I)T)P7z0{k-( ztcj0nJ+Yb1TxCCNYwcJtUwnVrBv{FWP;aky4ZjF#9r{7SZ+{QCF8z0W#(Ejlj=}56W*_;%PHVf(V{th56 zC`@MMkW`~D=&69Ww;;ds@YPBIu)DSkNlka0-!TpvbZNcN%1N-9pHBe3Dpntbu&&i3 z=Q5lLiRQ?%WAY{9F%IH_j__L&V2Ywx?y1a9`9ngOa2vK3;h3vA0^KF(bUsv!x&)n#1RG9u{g2Uwoex2x15}jf3G`{9u^b}6X$&OZpC>F!{TjnoLSVpC zHZ7CJLnOC#*h*0JWP0?`dfU-l-0uqN91 zj~jn|PjrazbKedp>rN*Yu;erJWy3v1Y4P~NLhN5y*Cxq?NVP5ImJPi&qQ3tWyE~#7 z&QtSAU$kc58~BrnF}tIA8UXw~%*bM00Q`|EhK<)O`cZ~-o*#aY+>&nN!W$`POskzN zU5g}1cP`BpdQNSXq8Ii@t1AUpn&`6YK?men6U^TUH>HA77^9)Z5Xl;ZrQmycTOM0~ z$LRwbE+3`E<=dHbuvdGqCelp^n=thQ#4my)?{-(C-$CpXiMc=bmL}?56J3$6#ei|+ zH6$8AEeOmIvbe5pGNQHxmBm>)YQ4SGAhQ0n1ZQ>$ovRRe?|9?Norgfk6kC|2_2U|< zT$JLlQqWcYY8zu-HvaX{qI5_?=Ik`l6~~6KEiVV9nW9NnRTb&dz}%40u$^Kz;o%B@ zV=xlRo7-ZE0s~JOmj=sv#E!#~oJ-N5n5nIiPP8NRxw3V71R^fwM7ie-!opZHKfhWQ zuSh?X*3xEM`P##pGyP&Rc$J5a9|S{i81w!>fq^iJ`F03YarawL#MDwJhcRaL1UU6H zNDI-Kdy^TGSCD9iw8Echv2Q^r0{yC`>>%~JARaz9K~VIJJNMR9=lpAQxx|7!rqqh7 z_xJ!x>6Kw@X1&7-H1EvPeDMn~L20oG#U|2%geW(4zN4jME?gE^Q?1YPH$6`<1^r)g zHSZ~79W5I}Z%MP5_ApZml1o#lAlg=H+z3L&S|PHL{b}P-ij%PZ!sk5UGWP1i)`AYV zfCU>AabM3oora~!qd&-muyGpCD?#h&_fzhQcU6y&=$H2MzWE~-@{B>Lh3#)?da#%9 z#PPZD$~Hp4lKmPw*1)n48uaC6YdTGUifqi`<}FPb7mwJPwQQ=GgFGg$Ay&S98(8%0WG8Yox^z&7xgQz#yKirb-d5#--Df;_ugsOv+g(X+J(!2Lh|ndjXtbtz@7`YPy5YVnp~`m;2Fs%`Rpvj>SQ}zovV* z6S*;BNx9J>6u7<0k)qCZnFQM0(h zb~LPO;smWS4U$8I)EQou#^r>!p0~`oQ71!#$8?Dgx0I+r0oU}N5>>`6vhwW4OjBfR z)5)HWTw4rf!D=ZKlw;+yb6V;8)lx|Gdxv$Ey)_`up!+uA0#!PQ;A-|I`~Yk*6k8`T zw`wAYpv=&E5zv|ibZh?8@Q03|n~@2DUW@2%{yXS_Xf9S9bxw=4fFv z`y7{L{yGv_;bMBRwer^d_FBjBf%^eVtU;&nLRdmJUWTK^5PivM*e|z~EL!c3h<0;d zR?K2bDAXa214zTQ+T@wgG9_Y~&BY9$3qg=b;k1+mb%%mxJmfrD_kS;3f%5`F?kx>; z4zXkr2%``he`qja?N$uVP_siu6p9`3Ra@`L`in9QffJ@8q6C7)%+GO23cBNA%(Jtv zrURfw1t}^2d9nGAw={@7d>~?%%;GCO0P=s5-j!ONByXZdu{fTP#@^LQmdrH94p5wlJUX zYN;Zb2{Yy`u;EG0l+i|mx+%>}p=>dgYlU?a9y3(NL0E2wSJRKmYMk&cwyj8^M5(ZU*N zb^KcTp%YY-(Af^3sOFko$~GTV0m*NyLAw15$UB5YlFcphWF~hpGM(ZEXcf^TPRKSD z%Y2@XwibH7@)A+9+18%Oc-Ev)LftE5fGRRAR-(zD4KeU&Q6yacVW#)1VKy8(snNpw( zBO`R^vhzxn7@9#dhfLw@4wr>>-_nzcAoXTUc4rKX$+Xmf&e=lp!l;e#A~P^VU7{e2 zbKRK+!1CG%Su8P9jJ$_3`Q+gSD(dsf33i>r*Qg{SG|gRHV$6G$DIl^>xN-ICIkQJF zLw}Ow(YFgE@37LKCA_8k3{T`0G;QwB(7JKLrR&vvUur)Vb&^TX$yiW`Ea#9)Q7AlT z09nvt26F&~`qRhpb{zt`u309K`WpB=9)j!uFgIYB&PTmucijKILf@{)1H7}>iFAnt zU(MM^$3Y6|HWoYzz_67B>NzK6dP7?ps820^j#Ntx&`5OB&bJrn5)#U(1?~U30Q$Ml z{vhycL#GiEQNF_l@2+ZD3A7b2d<3HTzjKN9*IAR8XP^tU!i$XRM`izX8U?xdQ)trw zdR)_$3C@=QQiF;g{GFuKb=z0v+I2O-7`(EM1mNTHmLl&WKFb zbfu{wBPe&fQ!qgj)w%sKI;{}PATHR?|19VC^D8!EXrj<){_p^)U1Z9shv@#cS{&)v zlX_Jx{m-~F#BJwEdFG|mC~CWt9bSb#BGBBemMKAdg;_PJZyqfP9&?`(Bb1R$|)Xxq!gkw70q* zB~qe)dR50fD}jGOT0xH+K%kz;d^-|{R>(U2b7ieUaRe#ba^rjuWjFQ`&^$vXw`xwc zv2RALgy!4B<@zky1ybd22JDRe`VJ-;+##rDZBx^d=cR1R3pfZVYun5~>&mt|V*7&_ zpkL`|EANZS+Pt=l*JF?Ie4AZ1J!`b)@!<#i4A|=4UnpiMqQxf zd5<)#7Bsp%Xu#9Pp1~HIoj1QbY6ATW&=~K}6keldZYyXiJlSo90De3}4|?fbZTZSg zg&3~Lw68hVzUWdL(#HHPfmT#HvX;SKd+8K-%T#lLAH%iKo>!X`WdG%?99bn$P+H@-&sxq+ju6B3U&E9nR<^CZ3>es){d7iliNaY4)`}LzEqb!O?t(T&c zy`Z<`c^cnQxY5k-6p*2TH9;yW-&t*&JWWT7x;C5jzP)|*J2e;| zr`HJw`~p69y1|YXR#(eu1uUk>D)Y>CFU!*B?v%x0wU{im;a8HBJTbNtE-M@dC@S+$o~#d?Q35pvmm&7pO4{Ty$H4&j#8esSPExX1B=L? zd4Jy=`((s|L)dfwyEg1wb2zU4U_mEE!vK>meiBe>Wdh{WO;x-TT_E+Qg`W3f#(>$J z0yKo|RVTa*7?DQ!$kKn8r9d6jpo1`e2s~O#F%UN)g#14D{R(uE zfrG|@m}H{~lBsabNsNvSCf%wOX$=kO)sjbtnf0!mGQz+E*wlpYZZx&7`jD`3rz4pH z>Rox@5g-P!@s!L~e_35}*#wFs0mB5V+x%~Tki?oCIvnn4;CPL|;+@8jBMrCst!YDO zB9ozC=dh-ftxirZceKQ@JK9C994{40#|KHJB@%;IN3NDW+KHk~64`3!2fj8`3{mir zT3kP?=0GMb4OPz;uDPCu_Bq%xLWizY=3QP$u=zT39nwLgjaM5;rN*83K+B!343Ztg z*)eLLkRhCIv!0$hFR#o-Qi&yE8O!kJf}En@B~@EY!Fmm+=G``EWj9dF&TXuF+5db}2<49VCCENj z-_Ju`^65XOP~&<6E%2qAs_1lsv-m;%NKMuHOqr-CIp!t5C@Cztiwoa`XMzujX*Z*A z>7>5j@o^D^@Oy2?2TDl_vD`f%`rycmvi3 ziEdwL+hTiD1A@JdeI}|wvkg78IDVF;Pq(8-DKs=$L7g)Ag)Cr4A0OE&*INHf9Ul%B z-nZ$zF2YvEYXqc&nkt5Srm1bn<%Jd$O4315i_WzvnQ|l3@Xm~@AKh}0k@pI>*SM_K zs}B}g%^Bo!nkHWVcnEY}6J4ZS&K?S zzeqm-87Fa9Mj~II@XhV$C0w>#+R#h>PLZyMZpXHCZc2>E6uf6(*jSL+AY}0-Vna-4 zWx%WfY`L&KOdn8k^-*28f(!E_D&JI~bAOuUd7x;BPFEERhbppaH=efkR6s)?CZG6R z_e#~BCtB!F?;8DnDt3Y{S4xl}7$D-+&L(}=?aFh}yy!)5X>Res7TBQRuiSSMJw z22=F__D^!oDJq+cp-e$R+Y{8^odMn24Qz@8eDGL9W*Ld6tkq{V+TF$MZLx~X7E-!g zIq89^%oYuxY(CyXz%w5@&pX$uWmED1wFB)xTycW+bb11W>Bi87xmXj2-;dj3TA@1+ zDxRCHn_XUj^%>+WC&nJS?O@D#5xu!(o2?uc%E1E&8FL2Gl;YcS?_jpAo(=hyf&-XI ze9EkMWo1Dc>AU!C%z*sUWra6}8)FU~3!smU306n5Dey+uA@m|U7kc{8g)?cJg@7h3 z@f0T=WHyXy3}9^qjny5er#RC6eIuvwerhf~h4qQx+s|{Mv}aKSQ44U|A%RH0db1FT zup8%j6>`42EEIGIuGH4TPDey!I`NzSYeM)U@q3OI4)zd)|7DY#yQ9S~vt*Q@pb&H4 zBHo(U%AN^bC|{Vp{SZB3RaVfi4l`2935D+Ew7dvRTTJ0KD#n>xwVzb!K~y$vXioCz z@nlVX^U0nX8jo(^v5)`(ro6kM>y}#r<3?o@j28v&$yidH=OsJO3n{kvb}o{juwIUU zEPH3Iqu3mxjDi9Mf)i-{`3{!TuGyBCmAMum6@3PPa;Lo+a@ zKzjdm(5-Bzz44|_3#?a_qnB7HEVfCO9;T`Y0pqBM>w!Wd41|*~Z(0n& zo8f4k2h_Q9z^e4baHqN0J4)c)0sq|K+gG2+1oudU?TbUp&+G=5wj47~8E=(@spxQM z6HW&WJLv!m3aa8ykA2DZys35Y$CLF_)A%9b= z!U4&^i;FsU0R&)gNfzpFM(Y%r!ZzcigB2)J;PljjeeZHzG$DMF1#S^=wl!n~bVIl% z4?GhF%^C=y-7)j|d*1`|V->+_p!m>>}PZOEEbEOS$N9VHM#L7$Nfx)3U$ z6DmqL6Rgr@;G|$k5nitjb}X+3Wdt5iL57b*;iPCecx-_-FvnhEV1KXfhKj2!546WI zg=gBMaLq#nd=R)vnbi}7R6{KLf;((SZ|)^#f3qz@cYzSpNR$!M8MyWc|$%2nUlpR zKq@*AaB@xxJhhIf@MUp${aKu-PDp}C>|7f_k~EmsJUbvMdcjc^!v*-&vgF70_5^6E z6>@4z#d5bNur|dSATR_D>z%O%3YCWz5RUuj`_%eH;1yARk6~wJ3E+YCYz34vjRkGo zWC0IZ(g-2Ka;}al9w$o&^?{($cz_dBnvk#mH`xIK{a@d!HUmq*f#wFVezZ`QjgiY=U(0Lr8baNV^q=nf`TV5BJs(E)FYL{!;vsz2Gvhb_!`Kem6fU@hU|1wy>(9nZq;HP)k|R z-I2T^IH8%VS?C*Zvp=(qdxpg8lPrmLY1CZR*6ec%~Wkc=>|{3SoE=BxSG@p>|D1O$S6hGq(&*WuaHamVT4Bf|E zovIHc;vjH;=&YV{nZ)$eU0_Mo3&joUi)y#tBGyr>3N1kzB_3xigLiUd)54ybizOL71KpDUN=Lbx+ z74vuIcdF+=c2>`w9(RV}Sqi9QK$Ift`m-!g+jh(r+Cjho_t*KsfHmjIQQL##SB=5p zln}5I`24=;VaiDXxx7RAfjcNrFfowg!zV31&0+(gc|GM1_(@lRVtFi%SO~ow7?`S@ z)Ecc}cXo2$GF@9au8t)(lfs{_)!?*F>jitis<`b;2pLRRp7whk)Q)Wy?hCAnK)v% zN745#jM2$0k0*E?OGX34zY1{)0Xx`Amcr+EmkaVb#EiQ#0SJd*Z^qp6q_FC#IX*?5 zfg1n}KnIbO?_OSv$-d3&ZS;OhsFoobWrbodF`bfte%!Pnux`ihTHKYvRQ$#{n%@C` zk2^xs5H#!7l8IE<*&Ri!q((x&jfgwUs7n-HrQfvajtQ{*w+|M?Vb&+j zqT5?KD3zF&t*vCxu8j+Cb29JIT(CHRCjT>c2;KO<28?$*&F|Ad0~^=H<=ppo4hCzP z$)YJWh_bU%qa6Qz?oCT$l{x@?``Jlea6?e}3ZLsPGpro+JRudwb|5XvtBEKzz6w2# zwaTI&*ZE{Zrpp(i7PB%m%Old2L1hNkFl6L%;y7nle*?@!0fwc3k!ke41i=Fa)wM(D z^U$>?T=0vbx!`pH-^moom>m(Q?NjA@45My%BW?j~!vv6~Hpmg+aTMN9OH5nIONZ)Q zb5-df9Ln{@M>)d0u3fQt%7DiK3kyqOj<^r6-LjSEo(0 zB1(}PGNk2po|k;Wqc~unV0D5ne9&w9K|Ih>Y!2g_lkO?nj%zP-VYVX4S=}0xFQ*6B z?%>dPh}jmCWrt6K4G=Z(U=sfumdbRo1g8Vy*CPGOIZEgRe$k8LlV(KDpa#CijI)pZkMnfgTp-1+daRg5yytNyacpsFu!FW;+7|tbV|>z-Yb$ z8&B0Y>&mSB#a<}a>LmINTgjm>)er>G$g-qY1$v>mWeS$#@dsPE-9JAMm@T3to^t&U zWxngChH3-=A7J;s3a8btN7kTcfD(BR+TDyu4k(59*6_|v8$u1^ciNmfjr9Q*eN+DM zT@xUp@YpLb1Hb12`+ZVxXa+4$!>t}@wQctbpE#_QH@W87zc6o$fe{3lSW6O7 zWX9mQfhR-alWt4ji_?Qsw%PjW~$F*kP`rst7MmnNtv$_d4~TsKyK- zWqDl+Es7c_d*CY+4i<#h9)K(*!KyFQb|y7f7ru=G+9W+N=`Ma2F8J)9vhj5I))#yN zjH2}BWXOzc427X0bA~_rGsQMG)s8=(z#LU^mfF=Pjqn{A&%LFvBWdW*Awuac_9fQ+ z2w_4ZOv15y2?%PTo{u@$0$t_l1_?|tgqV%SK$YF7#P41W|f!S|y$Psl^g-U!7h5e$eh{5e=y$@dB7??Q8VZV<`5H(o@+ zmrazw3Cn~)@4s{;5af58ZJ-I)uVy9_U`!({v5@wxq2_ny2IJ6ogJOv01JlLlv^_e49)dG>M*-`Ml4S$~W8~z}Ma@YI3Fvx8_`}e^#b2MlIz$M?0 zJI4yX&M(gX5<%&GIm=uP768Q6x)`u%Y4h!$Ej7%y=D}cb4P}#d+ubm;LLw&D^>KTJ z-D*xDKq^EoD|OsCbR#9y72BPeKpqB^3bPhNWEouGy+B;8j7(BDxo~J7z!7!kV1vG+qgF9!seiA5rF&>nZ>qzb_4{mO#p# za8=aaTN{uMq6GXFD%!Z!Wj`BE>ylc0dIARtUrjKg$OFw(x3!i`Au zZyiF}PXEW!d4OZt_iy}ZsL+)0XxnbHtcFU+xXHTho$Qq&3E@pi$X+3PuWXVim29$C zr4q8TvdRCvJ^$l)kM}+P$NzcU*L`2t_4|E)=l486-`ES8P5>CZ+j-$`7{cbCUHPG0 z*PiT1_LduPu||`qB>KGSjY|wT@OD0n;8pi&K1;5N=dbaVKQaysAI|eYROH;|eTg9B zZ&xCC614?WSAS5W>`mGR_g)fncm#>q7}v;;97d4z20gWa7OD#>a-C*4nl-&p#Bj(h5O zhqqZXoUExxO^Db&6Y!$vHDMHay4A@Kw|FbkFN@n-0GIKgn|c&vdZ8zWSeB>kP*{k3 zR{n?vPrE$4i^x7H#^U=5C#iBc_NNfxmZ+)Od-UUzLkL4EifShlL-Dl?oTa31pFwHe zdbztE_4^?uF|^WJFJ~K+&q!dMdpXppiyII|=ypYC$Dy??FP;>8hvv*&4FmqnlS63E zLTv~@=k{6iL#^{aJF+&7S|sU#)qn=BH}T*4R?Sor0f~E8CKk5Xr3OM6N#jC9n0vgZH0u6-2T&6c5x5(-4h#@c-38?bP$ zUg{}G{{J8D_Edl7-Avj8myw9KQV3;#?#yl;uYe95wwP`n>xJ=btly33TU0J_MZz2V zZM(}7a3tytgmhW8wpw4 z4wecrS@xNOG2T%ka518=X>< zwW-t+8^YAmn{;y}bTuY&(cPG^`K>oMPv8m5NFj#4T(?JxexzCZm0FT-t{zeR!PDs~ zRbIX~&lwEWOpgfvczhJAC|2zL-6u~wAr>jysY*eiL6*^!<=ArcGOytYS9=OCRkBP+ zr6_}8jvNl1Xuy9w`g7D_raJ30WZh$&Q_meZ`9?C+fe(4*sLJrsJ6@ApFkkdKs8d+2j`r7O<_zK5F?v+Gd%y8}6iBP4DQn5PSLw`tb-lRwOlKDRsw;y5XX9u*ZsrU9 z;d|4UaKIk^7?5hIiau93a2fwHo(n=ixOz8%>&JI*w1@pgnE3-kXz0k7p$VZZM<-SK zTJ#5fr`gFOw4rR$FsdBzu8=!Bm{TNT+k1mL?OK8K zVGgoR49K0lT4L;7X6gNxpPl^*d1hrLM~AIoKMYFUxu(Qai%uLA)w5&{Sc2$comViH zmPJlDi;CA9N`<2S|{ApB5M4!i=WW*=7gT~ z0PM_~c00D0E)ArW-)vqw%t0b0>AC#5o*t_fg{Q88*0lcyH9%dtkOTg1*p>VUlI#>+ z`XWR0!P1|eauvqERh;X(Bo_PANxc7d0i2Oh6;V!X9 zl?*eJSu@^u9~Z8j(LzRj0$abE2B)e~q7{~J_%gear0z^w#KOCnquo$E9D#GuaZ$Me zV={aII0eYr_8kgYowK#`bu4lvn}44&CVzCBr4aos3&CnWW-!AEZcC`P5gUuD>9NRc z9RDzuo*jx~PA2xZ^N)jB)MKzacPL;d#QUA8T0VLLNB$5ROGv043gni-g`Wp~b|oZS zNlj6E*AU)NY!z;`G#q(<-k-#)XA!IL?8=ruhlM{7HXkQD?3o|^P4Q6S$p#_|&E7EM z_xr}a!~jTDdt5#9#HFyYPE|;)CCK^wT|BE(HuBkl+;cpTmU1;0*};7fqsNQ48V6n4 z@{wE}s7>rstd{<+kz0&kDmu#Yt}-X%Ne|h2(mS%$v%buH=g~<~^P|@`M_YhB=GKru zEgcahC$e1Djsv!c@tVihVBN%-P+c>V9s!{e?m-WJ`GL}7_D_z?HgLDcx$ER^l~(%{ z(-p79^A!Y0Tpw4v;1~k%A}W3Bo0Z`pEhrrIxhgIGK#rLCh>klfGhewxC;xw&8-~b# z)}9=GCT188WD+`ykT_F9@vaZwZ90QY222VI^yrN_kKXRq&T1Zw7j#HFRxu^r^CIg@ zUGVtRqE@rs)B6rs?$jIio7@<#ba<0Bw!n?=IA1Nzi6mF2ebTi7 za0Z#jWp>9p1dxlYET^vpUtfLS^>}Y^+siXO292n*H58)B3ADR0S8w?Dm#Py8;WIx& z8^R*f8=B*lh?LIGg+e!*C^^v1gKOd)rI1xhHM$jnViBps=%I zaFtD0!Pu&)FJ%yS?2@a1$7T3r#b1q{xDht|r^E8ImjCki-5NQ{XfPu-yRQLm>UN^l zm$VoGi-S9M>m-xE85b8RYwKFV`|lY)-uwM$D5W^F3TQ3axX+w?8d*uqa&l_rgBt+| zx{b!3U%z!8s+gK@1h4S9#>n|kl7%pgACl2BhdNmDYM7o}uu2DZCt$S+V#4YD0;+n; z={K!kT^+tX!2iwj-h2M5YqxG=BzM=`FmNg00GRt9K_Ud0m!Xd|K2(<7*YL(C{u&8ZN9X8)IcY@4(5KFP&GJrm;SzbmaMA zMP-hulE`9@P2GM<4g|R2K0E1dQHd@&Bur>gI1?pHXBHpCA8{H)0totAdwCJwED88B zOnj``5_gELpPJniG^HZ@wa9>^Z0Lm0SYeK#qRLUP4OpLfc;xVQZq4?W1-rl=D;Y2D zz`|_m@|^-|+|C8kQ$45SknRCC)GqP$+>YN*cA)g>arsDeWgKB~p*VBA;mI?6OZq{_Y zLqWZ_$8f&UP;Tw#;g$=HN3c&pyFeQ9xnsmG!p@SLZ~q}LV8xAmA2_F4Js@;+iMmcV zL$bqddVb5Zq~G|!<>f2PDyCFaYUuhv-$a2IV^GP-#T*`@W!ufet`vbdzrxvY<4LW% zU(}mOG+z4K{QM-OaA^3Z5U(1$3@dBcS>UB70^qD?NFmT>RVv;#>6OvW4oqwz;@)x1we z6l^S_`r36=mbC#j3U&x7IXN(i=H^(l`Z_a#(l~H2K`mDo1SGPDu^p-0u(9-b*ioQ# zG(9Jh5B^c+ozD=#T)*d|BV-D z9gS5-mg>x{gsVxYE7fr$km~3!4$hFKW`J}G7s=BGAtRiZ;6!dm2+6eZiAtu%3t%I( z(NX5p&*`FI0ME_pgLyp83V)`u#n1iN<4789`M{a0Nj{z;zNvK5GFzkm+|Pq#vBHa? zy^KFI%moY>_w}|Tyar7Ut!La{+grCkg6u3CHjt%`M>_=j5ZEseq^A0bY7g1uUyhzY zsT=R1!FS-&hlQS^`{&)(XjojQbJeKnPuo1>@$wR~Hp_)IPXIB2o z6vYeQ{z1KA9%nSaDTusM6!*Ceh2!hH)E}DPE zmMqYlKKkP)VY4keUSvkJZu5kgOV~21IsO^k1lg)7CS3wA+UkV!cM6CVrBkK$Xt<(I z!g^L{3Qr3d!8dkdO&AJ*h3`uR((>@KW;LI1MZ7%HfGb%6QStUukZm^qV*SRG_4q&} z+$+LXolpKvb=xR$8J;RTzhZ)(y!qRI==s!c0!C52Tb`B6W@zim9LJd9*9H(m`>TuJ zj{T?jm2Mn|5*@>7d{meip=WC602i11^gFN zf7hZeYWJJPSSpXSsGG;$+KxV1?aSNt_va|#_FJAE53hzYY|<|TCtuzhcv|p}8SOrf zre@f`I0lQ*_*&*j0J7B|6gN7KS6y1@~gGIt|~6rlDz{fMYj&o?@GlMu|^Z0>d&A zOdGMNFOH>?AI3B#^Y{C-3p_`fO)swT;PB%~0g_PVQhP@5RW?9^#QtV9++RO)(t~Fz zT(c7mK4^e+nw(vLLHFp}yiD9RoF2bNJhrsQpz!HY4i$0ZS~*rO+mCz6RUqOV9+!D_ z5ibMs7*&k(e9EQGi-0bh#Sqor#n{1dUJi%N;B`r2E%b+S8N(Y%y($u8IHqA%6237n_PWwslWKjYH-{@Z#?Zs2r}7i7geI?nv|en@YzZuLjZw3<_71 z+HvnuKAd*8M?kZt7a9@;^)t~()Qnx4rnC(6Xdt^^xa1lA4SLDgrSE57d(}PAL_P9N-`%1D&k6)>nHL+_JK_r z+z0dhXLP2AhgC@L+}EHb*z4V-TZR_Z?a;>-J}+!ykv=7l&y0&s~K47<8wh?`awq zm{1h;umu>q&u4dcq-V?ngqM4M`KaCPZoF=`-_B#m;yr9lpNTe9=I8J>D;z? z7sX?{LCw9NZYk%xpVT1D)x++muTdQEd2w2{MNij0BH7-izJS^MNg=1^a072rn6;N4 zAw~I>on@M3K*e`%vvlj|>1%_QU-L9e7P>S&dG!q9PRUYI4u5)Cz)a21pWwND z*FGR;QSyj~09gu!yGfArbz{k4wx-)^z*f8Tsmp?zwd)jHuP1Pg9B~JsNWbD-n%7~V{VpJ3^0<8UN*Vt&x<5C|bZo^jIHJffhks}C+LEJOksR2!SO-X|et zUZy!rf{1RE>|jEtVA2qP^e^)wAe!*bCgB}9bG;x0MQ zD`4Ar_lWY&_|<_@;K3Ir4oi7%!T?rYPHHi5J!7AeuosUS=&^@wwgCdDasIsLDND1K zV)7sA=4tP+Ed=*R5umX!0yJI7jdy7F9Z^nx{LKlyqQNQ>sW!k(Qq; z`aLb?*MO$7KT^0wtyG?2LCX7!%z`7*+5tZVwAVGq%6i2fU7HZAo-`-BYH6JUiF}F* z=w_9g*bIJ-hRW{2JxM$UVaG@^9G!bSP{uL>0&4PTP7DRg6EC@j$l@Afov2E$9Jq9K zZL!!=GL-$#c&gU1q8k(o6XaW(c+B3R&&4_%O+hG&+<9t=!05_{l15rbTSQZH^zR~|ka=&)ZdLz0j%RI`bWMH3bE>57@Md((G5(1~U!g+2paM zQS%`+uXs_#E9T5Y^umi;Q;Icmk&LU>!D$d>SY7a+UrZV7g+-QqAyI;Ke$3)Q_B0Ka z{X)>IeGc2wOL`-Pj6z_%%NNJ5NJIODE+H$E(5_s>on}5s`hGZrNVX40)~yn&*)L8c zgHZMlXH;01PofrZTsLrr$lBj-_#AIMC|<$?HX zs~a=fzzxpj@+~QV5C-hfs`WyG(0xszp<-x%l59Tx*cdoe^P|*Uz0RW$UB&*&CQI|^ z$#$eQMM)kT;Q8trh?J5K2i9IW&UCw~@13f)B3@qITpZp7#sI*eAEp><69SOW;HKI7 zJ+o#KG*e{%=&bsM2zHVB%kNL_oIt>$DV{&$%3%(Gd*$H1llF%(;l)ddC{t6MA0hH* zsjtuMP)$2+d&FV1(1wv)Bj1XS{0i!3bHpP$^x`$?V9IlR(ejW%_t20Z&lm+?P6|Nf z>o2hlx#|h}qlbqS##Th=_F8dw>2#!ZW~cZ28Gj5Io_X)X%m%HXYK@BPiu5kDQ^a=@ zQdL-_+B@hP8-7d{F`f-z6a>`p9Y{Za#^CYuKKbI2*k+&0#+%JrKYpETKz@v6fCM|3 z686a6FNuQshZYr7DfEK-tuY`W29Xb(lc}h20E{$*-9h~s+@Zz&B_M;%RG?$FdGAe{X_U3Nkl7_X$u>O+oD% zxy+aJOPpq^uRYJGLkcP^;5Y@{w~Zy_rH%^Ov-&)uNqT~2MMg4hw!UsTOjR1Xgj6#H z@t_czkn3|M;M2|yr53|h`SlAs7DKd{gY({ud~rf&lNcFZ18Hn!l+>MX1Q)ZF?Z`ED zMYYMfMn)l7N=-vv*(3yx2kbIcYo&>-YSH~A&a+Yo!PKD1^!A_sKB0?CrzB(!598mp z^V1iBtYC)`78%*^I4Etp(E(v6tCXH_rNOfENlUD{E3Xdc_fVxU0jsc6#Ap%I-qV;I zQh0go8ct2dW)fBKFTIW$V5PWg|<*T?B zo^J;Ho-dT(v2<$Bu!ta50Alh^pfRjnd%X7SAf`zmBIHFrxfkEeeFT=)V7wP~ZdW6J zkqITZm$qeRuKyEwk=e4nUF)@$9I)+A_g3o^TOh4*+Wqw@O1?@cK&qygNa5`43vAOV zS!YUO;SCC(M`5M+&Lqn?^ynkB^W+esDHGkkV2-9AKnKAf&QYi8d7|VNz}R`!a&;-) zQk57S`aX<6YSGX=<07Q3omG5$Xt~t`?I`$pKl)p?UoFRI38%s4ASO@NXJ;PL^Qut_ znhO~3f|s{_ESbuLz~R}s95$LFRzqTLfP~iWDsy}szC@ur$koX_>YBv0I*m` zO~*(`n*7DA21#W_ZEc+HV5@C7H%uGn+5!Wj1Zta8rfjSVw1;X*pM#k89!Zgn5s@oj z)QNLx*wq{>pJ$Mgs-ji51pNbq_ObrOa=KDk0Rgxe3!|6ZX1)tT+ z+j@5nkr!4`-Qf2JIDDTN2V4wUzYlx;Y%N%A2n@A9YQ2o|2HrY)K3Z0y;(lC?9NfZ~ z<1x%IA>@K-JcO;)f|Z!@m|SEOX@IB!YuDYJeQ2N86c(Y5#1Z@E{OJ6~5~-zC4B0s5 zL=y7dFvzS<_?no`e)kr#k@chRCUAJe9QfBYf`>_LP}>=q$2!}JgVW8xm4M<~Y*Ra!n(y0pZ#v8@ImGfz$frIOElaN`QBCD-R^30z>W~bQ1nd}t#riasGG5Sd5I8>m_Q`^;iGpiQK7V1 zf?iP(18E{;$|qb{rb&SYUkvu8AEYHDMw( z64-T^mD=HIdi%iB%3|bN=~tbGO#K+e*k7H*f>1?3kizByJ(Sb;13*hl>6sEO=#9t8 zmpe(8hK;pP*ABgh`4OV!?WS+lompT-$ko*|u}GFT#WjCQM7$4ezr_L7ic)_PnJq@@ z*R?CSe|}+{5b1paebEOyD7w_dw^?_i_76KtHZUfHEe)EFtBET!y>bF+fEXEMf@1>c z$jd{duRm&lJ%6yfaPzN;31>)nO}8$0+4}v}1z4&s-1%0|VH;K~WYrl2J;AhkJ0=bh z5q8G!_ErBNhU>i0Pkp_*0MztHf8(ZqYmlt#R9$(0^54@}4zem3oXD$`mVTTfFIz}Z zeYs+G!b2~-EtPsSUTL%iUA8*0&3cDcqHnnaSP0`iqt6{MRAORbD{U7R5vNE?C=#|t zeX{>}T{E4UajwpPF<{XD1zuD|gITLD3iDrqd7R2maL{TPRwfK7#LKq`L*?Zmd`$Ib ztpP~{)gM}P0uJo(XG|8||69(C*&t;%0o|J)QPIlyjBfq|O8pQv9OAH_6$?>OC(DMgsr~P> z9<-A=6ZMbL!uMw>U@#nQ!JR^8Iq(E5Mn$dQ;R-Z1;dr_{%m78CD;pi*$NR#`^Q;{9 zWoybilamb83emj@uP+J+fM*D}x1fx&zuRIIFPatDN&bwjFXZ9SJlc|@M~uCI3xJgP zPJ)g(aXX|f+y2wegTua>38~MWUlMN|7IaP?BAzhsy?YREIv|gtpK#KN171 z9_XiEoM5EEW0D>~0^`a$4`?OwzSWUdu=!Wy*Q3KQ>jsL^@07ynsP?4u`fbb)vei{5 z;c?7Vl{v^-6D+-q9g!!;Y=-NO~APLrG^+ zPcz<)Y?OL8u6fW61Z$@+HIFFep!-41aD=ASAziVcvAW2{^6>dF^=^d1;+4d=ZLUT# z;~xyyr1JE)@3*9-4~bykwITv8Gg ztG`9z|LHNbovm66sPVJ>^wtG)^w5Ae;K^WK{iD(lEYtoh8;v{-OByaU+Touc3aqXV%YhXn?l6*nuK>0bYks7d z6=TD0)gDKQum6fXQcq*HQ}y-iF1OX0Zx3-=u`NT|>;6jWw@s~b66w+kYv9Es;I7r~#VNAj z79@ljR3Ci0vz+Wur2`!wX{h$<5fuZ-do}n;7OcS4>oF`d@IO*u=AYmTL15xVC@of8 z1V`q4t!&?H$g;9_U0Tx0rsg}ilVH7QW8hM+1F0k8AZr((9yb4uJ~xiV_AAfu_yB|2 zwuieR8H9`sNBS^#^`}P4y}}vi{ef_hbx@@t{rS#I#P89mF?egvvHRwzi*IX;q|SPh zDv!15<`>qQr;H|MAu-wgSt^q4$L|D@u%79ZpvqXqj6Ua&W}(W2q$lSz6rkOyn8dbs zKs!dLSy^g*J|08e2mq!TR3bRuMT);HWW_pm;@%ZXMn<5B_mH}W0#%i-^Cro%$?gfc z+4L`FJwA8H=?YZ>d^&*&{!XIf#sa{YRvf(kwxz*$aOxf5V&V^s5(Ky!vH=#l8U|Yp zN^vi=2!U~6R|tcI3lWBV{Xrc{k!swU_Ps{1U0Mx4GX^ib-P8p2I!*N1bYmGDxqwUW zE5g4Y&W@6@>qDU_6lLo?0%mjI$xo8<VIC zS$#nv22sm_N&NB9IK`VUZr~JwN$32rhRtf1Eo+~n@Py0QYzBv*HU+5bdyQxvqpR6ph)TEcTpf}XrhQ)M7MVk+m{ zu-wYJL$wD4Z(*y9gP1cg6vz#4fB5+71Z>%_oJQkZGgKt=ebAGueuyR`I;p?`CH(Kt z9oU+Xz4+8FES&1$3Vf2yWt~G1>vc=JGFB- z{|+HmRM54Q8J>|`oomnDnnt2k&NV$%hBhK5n0cPc_y?R&@!grHfjjynDd+t25Fnwc zRy~T!ikLe$+2`9F-x_5e65Cw0hC9M#H*=l9W>oY9-|XN{-4x8AN{dl@wtgSSVij+jrp9bmb#C2pSa$9guupxOC|zs`T1OXyIRJ4 zOOXNc7si2vvXdSuN+-!D{T>6dA$^2VoF+%7#)pHZwtIZG7T%cfv&Or?m>FiZ5y68; z?RniVD60O_(x(@(RKoZ0?X~g@J%&qqU|nWcumLEm*TaJi(|O81Gs}jYcc`l`&_K|z zAer|an27hw9iK4A5G4-o6hEJuJ|F1uDL00yr>fH5{_|~&-IMg@D#9_gbRZ0VRpd-% zLoj>l@BLJa1=+Eyml?FbCx=L+cV=`_9|}(G$%1pKxGDa8-& zH0>-VEPZ}&_&2G&D@$r^5l-@CT6!F2pmD>6h^aT>QaAa~!LyCV$^fqA@e6yndco9- z-_**!Jp??t6cyDIW{gz8;oY{BDF9`;s^a&FJi7WOESqv*n!l~-+;?1Q-F ze^k)z0>&Jd^2$eGRtK#7Uf|>zYkofyaT9~su)zGDh-b+FVCOjwxltc^pU=hpCdtwZEW6)g{ zxx3)_yxu2=ge;laV00@omv^Qluwd^IM{NY__;1nDFWqKc8HYU9j=HU3{0gk3AembC z1g!l&tX7B^bi&&UZY!w}>eIs3@7LhaOV3MN-^jx9-V7Y}r9nGfs_%c73Xki{AltHV z8mLM#2VPW0c%LAd;Sn6X4?++tji+3pO;ieW1<(*pY>{_ zC;>|?4gs{oIA9~$^8z^Gk{+(27y3{WVC5EP(<**)#+bE>B@q7Mp^p&Cot-hQ6xlo> zjN7@BvG9bMz={6|l9+OAbLTaQ1vsDqs z;?sY*pz+Z^*}=RWYB3%6xe1<;R!vjZl;@nx0Tif~@Yg~hnf3|9m@HU5-j^(MK%8Rj z7Yp#PUdZ$ZBWSW}P0w?R+Yj&uBXrGYhjL|TiD$MR&f@D2!sgp#5MI=ayXSf0(oQ;? zc2;|PwU@%y=)ncQa#Vk2=x+4wN{xUZMqDLak&~AtZmmx!`QrIg;Y-2ma=+Xj(X#?$ z6}JN>1@LxCG7RahyoIUEdYTVEkzEuI^R2|@nz z{Oncfrw7&kS2hT!V1~Niqz$=xGP*k$%Ot7x46M`-dup&7PQTG)V@=8V?_1kzya*GB z-~&%st4NyEncHaKdZ_kl@F^dR9;|*?J|zM#-hf@Y6gA#(G+UPRL8`+j!sI}U&(APg zv0@4!nWuZ_=4^_udZKAyra;Fm8Z(h+j^Z9++xgZ}eves?tHHG4SVWbj{TSpK(Mf7P zE7B*v`}Rl_kg(XYBKb^A_Hez0o#amkhI)a?shoGB_5_SS5Gvu0DP#i)2xf_y?`Y7$ z7ytS^U{3B;{zxSk+j5UlQA16_3HXZ>9gI1U?p{>X)vMqu7XSAZF*-AdhFuW`Dbom9 zpqXGZQ4}S#mt-f<;M24!U3`%_VAikTy1PE>3vj;95xDVWPQt+_(x4*KmK&3TnS*UI zkTdh%X#AY^F#jow74?tGChoq`e|O)6lH>W?Uu_UJi@d0bO6l%y!-%qM)wb8>=Fd+F z-R&m^{b+BeCCbA(2fLx>R6hclNVgr#d;Kmove2c3+52S6VWprrkV+8L<6>bNmiq5i znVV|_5eHLyL&Letzio#;>BmRnE3xjVx@26-Rn(SjIiR5|m68e%GBD=y{My+~*G{-0 z<*N2%(gtn^VQbp4PY+a*(WCkCOy&er08YNd+vMwxvG^`gI?y8B*fIh&VHk6%Luj#- z_7*fudNKSOG*tG2X^JiKw9$6hI=|<6pxpz9HQmTpR~Y{fE17(~2sarZV&ti4E2ipl z65$88HWISrDAGR^h|%WRn%tNu%&mdf)_&|$H9MAt*`YD4`d&~n@K+NpRi&RMSgO*E zH1cD}C5Df?x$2aqxx3YX1|@90jzju(aw#FwhCkVWo6={RW02cB+4uAW6taflw>vC* zgTSWhqvprNO&s%#c7sroDo=-^^bm_hzZwo{kK-=+7z2MLVjC6|+x-4OwmnVO)2&BC zSz=?gGxL2zxQTgaXmUG`p2b6$b8?E{;U)Mn2paDaowf;;Is_`9Lo1=^?AL_+ARN%? zZhvHidK>FxUwa&F{(VQYl#%>do<)BfN;H5^BTci0DkmSVV#(Z7|66 zN7*1PEJEw|X(&w*QY*18vI-Y)o#1`t#Gu9`Y;E7Aj!OF$a+4Ezp~2O`GBi?h7srH@p`FiV$2pgiI(XEfxA4-(U=KhV#XD!Q?fiC zkKNgHaXcHIOFw!~F4jx>UNM5+9)Cm6VHg4)*;F3Ay1HQUwV$C>C;j&kAQvHD*P|bf zVSA`wU3vWI(I06~U7z!7{{40bjwyGiXaUQsvA3_Q|K6d5s?5~BM;}6%LP&gTBR|5I zr#K_xl>$%j=w;MZ?*@=g4ntE5i#GUt)x^m^5vBhTOn}2KAB*Yh#xiXG6=&J{cM~=F z`%6@F6pj`aVxgKWs6|DBfQ}0Lwd>!m#N=r3mVVJVNb6^e-~{3|XaGR}CpbIrJ&_|P zpHaAVo4c+`?*i?xsSt3Vm9OZsikVi@8(r@_7iOewzn{EV?p2*83saQCW|EWF);7_8`T&SiZgCU~}vJ1HwC z$X2>wWE`nG$LQ0k2!72}HZ{ww?anGme1|D+U#pm1QJ=H<>Qb4aZ9nI5#WXm3E(D>3PEhP}HZd>eFVv zqse-`^->Fe%1;yk=obAEv-$bf?rc-}8niUxT!B_2e?;D!_RLWKkO)lp!kHF{`EL*L zzq7Tf=>b-`hGK9jGfCnf4LGi@TV9SJRw&2eTHoWYWQL|`^O3LjJEoIl=_0Y6g=2D) zKz&Q8Hm~+O{x_eBGfS-cA)%w8wXu}$U_Rch-thc9mN`7LPJ`Ncl}i|big|3S3v@ol z0he`VDyrNVFQ^3%HzFOEmkq#VrJrCQ~QMesZjI@k|DxsMKt?KSn%ImF(>7}-qe~Pg{63o>>Oq0bh z%`_X&T*o7#`@csx$2=`}&@Ol1 zX5KWL&6$88Nf;Z$i8;)3yZfq7w6Jz%|1M#>7UWugmz$VUc7I=+)-Jt9;MM@rU&uB~ z_Abtf8uVue(Jlibt*wRoR|iGr4%iv~L!v!x|WD}TmN zl}Aq9VduIGI)eZvaYeH4}+$1 z@rs5j(XI?&u{`q-xS0j3qhYd0wnEv`3S65WoofX9p&^9`&Cid4+)|FfkTqxv&(4VG z;O%mM8CGbR7rL8Rg)n2L?(%dK6nHJ({q3 zG?b5`dja<6b)13F^1|bl!=sUxcH0b{g@e9@^23?jS#8gFv8QL>Aio(^gJ$= zm){w?QMvjD^UL{O)tQ0cdHWhIA<@}E%B%$w76b${RlUQx=}>B^a|8K_I^_8=h+N5m z7zqyFSG5az(|=b`Vl_u2)vj`N=p%+?ds0BhAw+hQ^EuJNsUW+cX3SNe>c?Q0_m6#r zEUxELQN0|dC*R9wk9fB>ic>YVXmDRZakVyWM+Wh^PMeNggHFjPh>q1cvyXdkz7Fon z9_wy)5w^I}k%sL$5GRpxb)dN@T||Bnm)4^%^W~M0jYTq#Var(hnm%ox1e;CU)`~~K zWHqZ!Wivo{v-5Pa`--9jYIaSP9#y(bY>eRQn(XtWqOJWojE+7t`S~zfzc)7*Hh^%m zV|bXlR^8H|ptAtxaK5>$l5!0%pJ^lB2_C!?ay_rh73RjXkwvd@sI4oh`jC-3f6tRjf|YHzgaDBu+fs-GM|sHR9OP^=Ud1|P)>*fm{q-e%hbM( z2~WEB39gLmxFNMCvxUaS;Mq=(%hGvvF{+V&se+TFz^cZ*^=mh0XbT=WTiS*$3woPH z(lB&YS4?w7$o8^gj4Z~~V>Zrj+hhdpF^GI^(Nk__p$F0HcU#7hf?ASR-EpT+Y5rDF z0DheFRb!#-+A2%03*vNfbgGem<=YN)n&j3NpSzW&;C=i31ubNjfKvgvJroR|swxvg zI`fqLkK|~xj9~@9kf60GKx!s!V7s!#cHlZK6>P;$ehSqqM98jE&c*i!geF(6X`+81}HuED+h#9CgzbEo8Q*N|eB=6^!rnpMm9ooVYq!RF=Dy-(=#I28l4;hOFx-47xX~Pad-=O(^UtzD zoQ#K|n0~3Cb}zGGM7sQwq)JM({2uo$*)-z@*4p2C#KX1tmoO5zh5@~a>w+*RR{iZ~ zhf@tKOeGyt)A3X_D-WAtt*waI3I#hM-IQ-^vmhEZ!Ww{v8icLT^L(XJ-ye zOA|9v@~)^T$PZCOGj?GsoT7U4jAMam!)#t?xG`-_QJ9Bu+a?**j1DE3x4vy+MLBBs zlv%uhT;e^CbpmV#{%nl5RZJ1zfvKeLcG^3HH*OI+JezG|Y%RKc4~P|u`|N}igS)wj z_Q-S<_wq@M1pIFm%C~!CS~2y6xxJ&lb#rs7+BvMpvGUxv(M$8&%uN05BlKB9O6By<$b$#_ z9y^*{elxxD_snQ?0#DI>^O1#%um6Pbb{BD&#}POGN>Dz#5I)x7mQY~4G8+hx`|<&Q zf8=QvdeT{6%d_Xm$o(uoD5n>vYM7^u%uxC0Tq-|iQ7UhTap={Bqs3FD@G%3oG|kp(V?&>@Ta_fUgd^z+co9GzOx8x z=5G^Q-ll078s6tcs!H)107>ZxdlW0VU>^6_X>KvHD{s)!q zCk;K%H*P~jF}?CtjvPfUHB;3s0bG9Pc~FyysH*s0ak3eOn!Ypp@B6`?I?`(1&bs(j zch5B94J~5v5XC!lk6L$Y<%J>jmnaz?W}P>j!4yuiysGx%p6QOowlyt&Su;|+j3cy&B)J0LQs}` zYbcj%#g&5pVd3WUrT>q!igd;Aur-;Bh7t?a(Q4OtUi#s|BRAI5m5jm6}G;6ed5qyQlV zF$&VcJ-jkn)S(EW98+eCC5H9xlR&JfD&#pLAC3ki~uGJ_p+lP6*k~{Y8 zgY8MuJB?My@0x}5))gEA+#QN524p*@?T4>f0g(0pQE<4WFr)%F#QmaJdGR)~1kPYp zNI&p!m*rvSmTC9e)JOs2$4ls!M+qVn*I3|_Q))hvYCf%PHzv}k9rOaJP~Z|OoZvATerx>XQ|G? zz%3krRbUbx`)&JWDQssD8XQzcq;Kg_K98lAigdMroCf`@BVLlwR zVeiX7-7d}V1(O0@=IFCZMQC+Z`8Y{yF=#PJB0J7cLF9_7xR!}m`uFr!<0kovyUx35Jjaf`hqnnIY7cXg_xwVR; zBfiHMr};dO+4*w1P274KGcrCU!bWV$hG2SUW{#FoD6e75 zr6mg}ZzhbWX}`L{WCnT^3=lBgtWAk%8?yi?tmFZyMWpYYmoGH4i5JOPzOzHHJy$IX z!#PK0vd9*#*2%zb42A)7_lwlm&pG13+Xg-%6~PMmq+7Nb!OXgCU|0%cEk>f1PzxstnqSEu&F`IyyE*y{GTNi~{jzRMmr=mLq z`G|XwD#?gfTwbXUdqf{f$-DKe*m5?8rRdrXzo^K_8(kYjI2z0{2!o}I0^P@#({tFj|_JZf5@1#JqP>K3PwY7mr&*>3CO~RHWBX*;_tz~h=LmOdOY{WoQdLjshAkCc*yPZ@#PrOa3rUvo$Q>@HV45EGxsoJs4n=tZjK!a*{j3!#lgM0i-8ZOB1-!cf#O>SSNP6J-O_Mb+oaU zd?Flo6T<1+m}PzxO+om9}? z#(DzJI|vbd8sq>p0a9T0>MKVUd>gLA{a56C=k$K5Sy|DBho7-H_;43Sv3xb|;=&DY zIfh~AzxC+(Oscp4_h0;JF9O23EiLlJ>FA>MC3iSFV&!WQh1Z}(v?D#x$ktluI`CA*X2ob?Mj^(+{hQNLyq6guQ%|BjsF{F*-QX#f=s_ACrKdI zm{<^;#YJjorQ2i6by$vEfqzOgWprD!>cPf8Mq;xj&++^I=rG3PjE^ImSh<*#_81l} zJHwApXF*K|pS~ll&xHJJ5mxgye}G-JpdlTI^^SsidE_h%1&FwfRIQ=ST0|tO$eBbP z=&Y<*lBJM{X?#QzOykUVM{8qMMKxI;X)yPh9aHb9`7P#thNgT#TD#@^Q^q0v)g|)} zd(sq&q%hp7&H4XYyY_#m);-+iR75o;*_1Ri%uGq!CCO!Li5PMpj?1upG#Q-OMWoQC z*%aE<7%HXR*yCCvMujaMavMjKTZvA)Q=7;o66JQD<#Yao(=XHKW36}IwcdBWm*@RH z&$r*nqv;YAmADARI?*KsEo>I%Su7@nMQ92ykvqmh#RPQ(Wx;(Ffe*&LpY@jO>pS|4 zaI8|={^4_S|1%edz!PAzzE2}l0r4`?;lspv%0 zH)u*Y$p-F))x3vSYEX&r1+i#|@hDomBiQQ6k9gmIWuFQKs2gF8VZ+j5 zKY+Smj8vQm|Byvab32!iB{xk^*;doMyIs5H=BL1^cFEy6g;ux3uSik0uvp%nTl$k| z6ST%*I+w1Z109F>L|Jf|oPYgp9%W{@K{>$DBR|hpiKc~F?oeQPld}wAySs1-`%X^# z!FjnA0noc@>Xlqj$bEYNjX}YUg%--0h00BUREN4y(v6hbHk}>_AiLNvy5D%qiH*12 zoILWy*x6z(VSEW|DzU|yatb-XtbFGMSA4sI5CV%+2l~96Mqhva@cT>fQq<(uMg9S2t#0zBxVWTARICOmF=qBKv-Nh6-)?LoV`^ zYkE+?z3nME2iKaD04edWN5G5PG}NBxR}1Yf9P?b(VC-;_oH77}d3GI>p*Hi~Z!=rq z*y?n2kBcL)O2bx~5Ris_T}kn>MVd+q=AI0~&tV=iXfmgV%{Wc`2s%Px zo>EClSum7RZP3ubAtp&#Pm)iwh1h5*kN3u~`p?Wr=%@g+1T@-s@I~xtq?MCys9-rU zB&k>zbIzvsA*O=>Ko@K8((!Sw`&=N|170Fhq1OZBFC6`=Eq@+q6Md znxtqlwFR;!q$6|la`I}vVbswX$mUc6WrSUcTQv?Z-xcJ{&hBHaAS%;jhspim_`D)q z^oMs7@O-2GEtxevWp_Bu0-7g#Y6Oaeh|7oXXLNK8Qk>)3?sAD$mjqcRO04JA^K~8h zIGMV#tEYFclaL$ix&UVH!rTu`W;i|He1M`WT26+(tfwHAkCe~OPswk|Yk6mcXxS@Q zJUM82R9oX9bU6X+O#BsS2s!DJ=J36^aksAM?Bb1xOFBDyTsf*J902jOB^xfpz(9U0 z%5~9JP3;>6MOITINf6xWzp2q0HEci|eQsMmpss4qr0f&g4gBovEbJ$mz@rAd0K&?8 z4V1!Vs00O}U_=|03grv2xcA$s!jNvxVkOIYszqMDs3K$h_-HVKxyp;LLi}e>Rzz@z zJ!x9a*xD1V-6E{Ag_OUR3}WfBKnX^xP#+(Ov?oL5+ZS$bCiHjlbrs?FJjT79SkO?w zuZL4v^5fErra5d^_Oshcc!tgO_QuCLoY4O5P`V%shdXKR566huxnLS}WWbDsy}e_X zczHE{?GA-~4}}}wmpcle%k%X(`ib}GLlggr!cpjlf1UUZxlg^-VgTBb<*tL`t}|z# zVE%XsZ0O@9E9GxRhAw)Wf+Q)cr64CELuKU}XJ>dP#Bru5-9I6NH$J8-N+okEXKQCoj z9YqhF=1&bnyRkzUhY2mg;tp|xlJpQNGmKK>mVX@%1&JH}`Cfco^3nT$)}q@zlL_wQ zTB8Ftn|GVrz`DlHhavJ;C9rsDb_0Ae^c28zOseSe8`S#a<)Gv9>}}niX29?-{F2PR zIU(hNDiUb;up_|+Ri`JO8pCBmA2vx5?G0-aK9D>11Ll*qI3I#bGcW)=UWFhFJZ|x937Z4r(!kcm=3mnUVTvwfZO~zo`G5#&l12UQupj=t}vv5n%K>(NoChJ|Cjn-)sA1?m_W5JrSteNX0YjZ_k0Arv8-@&Ou=8V;VQywl?ew7g z*N*{Ei3|!x)`rv!a+^`6lw%-%6W;i;$a(2r`}!l$M4QTjVj4--Nv76WVUe>WCNH84PKdU)8UB-BKGI(fb70hq=^d!qOHHJ(_^AFplJhCoz|VX8Z`lC zan+Z%7Yvc~SzUml3gnHWCQi;AMJ@}u2qGB~5Kj{?iA~Pa7zOW)Pc5OkN8~LM+Ddb$ z@`|*YL07TlW>Y-9nG`~=nct>PJ}S#D%4p3R>>=n4R>$I05tOs>_n!y+&X(AvN?BA% z9v)_sKvra#4X0Ul8R6i|gnBESFuUs@-$i%PcNEe;xpe%VNa-Pmmc!6Ya%fMaT5~h) z*>a$Kj5o=vkb4pQqk;YDK)|v}bg4o<#&*Nl?8UJ!4L|7r@(SgGA$>gFtpEp0Hk+Uu z;k^{@R3NTf+oYOwr+{IXlVBFZcPw#^qx3jx^7oK?y;~mLW@Htn=ckmvCuGQwN%XhF z1YMaCDCpnQo?!r(AGn`}m5it*dl^-D)lP=SfTIi1<3uQPxzY0z1Wy6qLt`osHn#Yl z2kRk&dhfDL>USo8N1lY?R2%tiA>?u%eeC|I2G;fCy~E0LGjbxfco|iqagEZGi8L;3 z0phwh1o*X$~7Bmj@YgMXs$~Qw`M>IRK*i@^XkS`3Y`xx(xDPrznT}W;tu$GY!gXC* zHp4}~d|YaxW}My^p|I~3X5=W8rRtZzi5KpAXpRnNPbcpAqjxng5pTNY6qk_MtRLdd znz!)TCcJ^Gi=P4QJ|tK@oA`%0&j8;_Vxux%I~AwbMa31@;U=QAnNRUNz${)G71xG@ zfGR;Z2~lVEvdx#2;5~6cQzM^(P`g-md|4sA71h!6b1oYQ-UAXx*TxOxuZYU05V@)U d&yR_PrEfj{#d;pZPg#P0HkS4W?h-%7{}*nSGSdJ6 literal 0 HcmV?d00001 diff --git a/test/integration/render/tests/projection/globe/terrain/fill-seams/checkerboard/expected-windows.png b/test/integration/render/tests/projection/globe/terrain/fill-seams/checkerboard/expected-windows.png index 669a0f1b5edd855bd71aa71c488a646b8f862ed5..b2e32544b673406443eb61f03aec4c31ef1eb0b2 100644 GIT binary patch literal 22845 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 literal 22981 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 Q%%6y7%{9L`bNROa2l@e^EC2ui diff --git a/test/integration/render/tests/terrain/fog-sky-blend-globe/expected.png b/test/integration/render/tests/terrain/fog-sky-blend-globe/expected.png index 56a416857291d150a42d12737821cde83f238072..56179d6574b132f0f915a6f13fa1320f293b7ded 100644 GIT binary patch literal 10373 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 JM8wede*mIRbGZNj From c73a20b45faa93d81215f9c0b0a590eea45fb186 Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Wed, 20 Nov 2024 12:31:11 +0100 Subject: [PATCH 04/10] Use Map instead of js object, use f64 matrices for non-webgl --- src/geo/projection/mercator_transform.ts | 40 ++++++++++++++---------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/geo/projection/mercator_transform.ts b/src/geo/projection/mercator_transform.ts index ea8d130e9a..c8ce356ade 100644 --- a/src/geo/projection/mercator_transform.ts +++ b/src/geo/projection/mercator_transform.ts @@ -210,9 +210,11 @@ export class MercatorTransform implements ITransform { private _pixelMatrixInverse: mat4; private _fogMatrix: mat4; - private _posMatrixCache: {[_: string]: mat4}; - private _fogMatrixCache: {[_: string]: mat4}; - private _alignedPosMatrixCache: {[_: string]: mat4}; + private _posMatrixCacheF32: Map = new Map(); + private _posMatrixCacheF64: Map = new Map(); + private _alignedPosMatrixCacheF32: Map = new Map(); + private _alignedPosMatrixCacheF64: Map = new Map(); + private _fogMatrixCacheF32: Map = new Map(); private _nearZ; private _farZ; @@ -224,7 +226,6 @@ export class MercatorTransform implements ITransform { calcMatrices: () => { this._calcMatrices(); }, getConstrained: (center, zoom) => { return this.getConstrained(center, zoom); } }, minZoom, maxZoom, minPitch, maxPitch, renderWorldCopies); - this._clearMatrixCaches(); this._coveringTilesDetailsProvider = new MercatorCoveringTilesDetailsProvider(); } @@ -405,24 +406,28 @@ export class MercatorTransform implements ITransform { * This function is specific to the mercator projection. * @param tileID - the tile ID * @param aligned - whether to use a pixel-aligned matrix variant, intended for rendering raster tiles + * @param useFloat32 - when true, returns a float32 matrix instead of float64. Use float32 for matrices that are passed to shaders, use float64 for everything else. */ - calculatePosMatrix(tileID: UnwrappedTileID | OverscaledTileID, aligned: boolean = false): mat4 { + calculatePosMatrix(tileID: UnwrappedTileID | OverscaledTileID, aligned: boolean = false, useFloat32?: boolean): mat4 { const posMatrixKey = tileID.key ?? calculateTileKey(tileID.wrap, tileID.canonical.z, tileID.canonical.z, tileID.canonical.x, tileID.canonical.y); - const cache = aligned ? this._alignedPosMatrixCache : this._posMatrixCache; - if (cache[posMatrixKey]) { - return cache[posMatrixKey]; + const cacheF32 = aligned ? this._alignedPosMatrixCacheF32 : this._posMatrixCacheF32; + const cacheF64 = aligned ? this._alignedPosMatrixCacheF64 : this._posMatrixCacheF64; + const cacheRequested = useFloat32 ? cacheF32 : cacheF64; + if (cacheRequested.has(posMatrixKey)) { + return cacheRequested.get(posMatrixKey); } const tileMatrix = calculateTileMatrix(tileID, this.worldSize); mat4.multiply(tileMatrix, aligned ? this._alignedProjMatrix : this._viewProjMatrix, tileMatrix); - - cache[posMatrixKey] = new Float32Array(tileMatrix); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. - return cache[posMatrixKey]; + cacheF64.set(posMatrixKey, tileMatrix); + cacheF32.set(posMatrixKey, new Float32Array(tileMatrix)); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. + // Make sure to return the correct precision + return cacheRequested[posMatrixKey]; } calculateFogMatrix(unwrappedTileID: UnwrappedTileID): mat4 { const posMatrixKey = unwrappedTileID.key; - const cache = this._fogMatrixCache; + const cache = this._fogMatrixCacheF32; if (cache[posMatrixKey]) { return cache[posMatrixKey]; } @@ -713,9 +718,11 @@ export class MercatorTransform implements ITransform { } private _clearMatrixCaches(): void { - this._posMatrixCache = {}; - this._alignedPosMatrixCache = {}; - this._fogMatrixCache = {}; + this._posMatrixCacheF32.clear(); + this._posMatrixCacheF64.clear(); + this._alignedPosMatrixCacheF32.clear(); + this._alignedPosMatrixCacheF64.clear(); + this._fogMatrixCacheF32.clear(); } maxPitchScaleFactor(): number { @@ -760,7 +767,7 @@ export class MercatorTransform implements ITransform { getProjectionData(params: ProjectionDataParams): ProjectionData { const {overscaledTileID, aligned, applyTerrainMatrix} = params; - const matrix = overscaledTileID ? this.calculatePosMatrix(overscaledTileID, aligned) : null; + const matrix = overscaledTileID ? this.calculatePosMatrix(overscaledTileID, aligned, true) : null; return getBasicProjectionData(overscaledTileID, matrix, applyTerrainMatrix); } @@ -849,6 +856,7 @@ export class MercatorTransform implements ITransform { const scale: vec3 = [EXTENT, EXTENT, this.worldSize / this._helper.pixelsPerMeter]; + // We pass full-precision 64bit float matrices to custom layers to prevent precision loss in case the user wants to do further transformations. const fallbackMatrixScaled = createMat4f64(); mat4.scale(fallbackMatrixScaled, tileMatrix, scale); From 0c7a828ac7df48a99217a058e57716833b2a102f Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Wed, 20 Nov 2024 12:41:40 +0100 Subject: [PATCH 05/10] Fix matrix cache access --- src/geo/projection/mercator_transform.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/geo/projection/mercator_transform.ts b/src/geo/projection/mercator_transform.ts index c8ce356ade..d03fd56ca1 100644 --- a/src/geo/projection/mercator_transform.ts +++ b/src/geo/projection/mercator_transform.ts @@ -422,21 +422,21 @@ export class MercatorTransform implements ITransform { cacheF64.set(posMatrixKey, tileMatrix); cacheF32.set(posMatrixKey, new Float32Array(tileMatrix)); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. // Make sure to return the correct precision - return cacheRequested[posMatrixKey]; + return cacheRequested.get(posMatrixKey); } calculateFogMatrix(unwrappedTileID: UnwrappedTileID): mat4 { const posMatrixKey = unwrappedTileID.key; const cache = this._fogMatrixCacheF32; - if (cache[posMatrixKey]) { - return cache[posMatrixKey]; + if (cache.has(posMatrixKey)) { + return cache.get(posMatrixKey); } const fogMatrix = calculateTileMatrix(unwrappedTileID, this.worldSize); mat4.multiply(fogMatrix, this._fogMatrix, fogMatrix); - cache[posMatrixKey] = new Float32Array(fogMatrix); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. - return cache[posMatrixKey]; + cache.set(posMatrixKey, new Float32Array(fogMatrix)); // Must be 32 bit floats, otherwise WebGL calls in Chrome get very slow. + return cache.get(posMatrixKey); } /** From dbcf1085ec95f6cc36cabf22b8a98b2fe8c810a6 Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Wed, 20 Nov 2024 12:42:25 +0100 Subject: [PATCH 06/10] Revert mercator transform tests to expect high-precision numbers --- src/geo/projection/mercator_transform.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/geo/projection/mercator_transform.test.ts b/src/geo/projection/mercator_transform.test.ts index e1d56c32fb..995e71fc83 100644 --- a/src/geo/projection/mercator_transform.test.ts +++ b/src/geo/projection/mercator_transform.test.ts @@ -669,16 +669,16 @@ describe('transform', () => { transform.resize(500, 500); transform.setCenter(new LngLat(10.0, 50.0)); let projection = transform.projectTileCoordinates(1024, 1024, new UnwrappedTileID(0, new CanonicalTileID(1, 1, 0)), (_x, _y) => 0); - expect(projection.point.x).toBeCloseTo(0.0711111094156901, precisionDigits); - expect(projection.point.y).toBeCloseTo(0.872, precisionDigits); + expect(projection.point.x).toBeCloseTo(0.07111111111111101, precisionDigits); + expect(projection.point.y).toBeCloseTo(0.8719999854792714, precisionDigits); expect(projection.signedDistanceFromCamera).toBeCloseTo(750, precisionDigits); expect(projection.isOccluded).toBe(false); transform.setBearing(12); transform.setPitch(10); projection = transform.projectTileCoordinates(1024, 1024, new UnwrappedTileID(0, new CanonicalTileID(1, 1, 0)), (_x, _y) => 0); - expect(projection.point.x).toBeCloseTo(-0.10639783373236278, precisionDigits); - expect(projection.point.y).toBeCloseTo(0.8136785294062687, precisionDigits); - expect(projection.signedDistanceFromCamera).toBeCloseTo(787.6698880195618, precisionDigits); + expect(projection.point.x).toBeCloseTo(-0.10639783257205901, precisionDigits); + expect(projection.point.y).toBeCloseTo(0.8136784996777623, precisionDigits); + expect(projection.signedDistanceFromCamera).toBeCloseTo(787.6699126802941, precisionDigits); expect(projection.isOccluded).toBe(false); }); From 9445d690d7889f942dce8873f9853589135b424f Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Wed, 20 Nov 2024 12:58:23 +0100 Subject: [PATCH 07/10] Update render tests --- .../text-variable-anchor-overlap/expected.png | Bin 41179 -> 41077 bytes .../fill-seams/checkerboard/expected.png | Bin 9730 -> 9117 bytes .../terrain/fog-sky-blend-globe/expected.png | Bin 10373 -> 11103 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/integration/render/tests/icon-text-fit/text-variable-anchor-overlap/expected.png b/test/integration/render/tests/icon-text-fit/text-variable-anchor-overlap/expected.png index 866a7390efd166f9226e43d2e21133b7908652cf..45d62097eb198ba482d8f7dd492f023420ea8906 100644 GIT binary patch literal 41077 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

-!mQdqd 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 GANv;|0&lGV literal 0 HcmV?d00001 diff --git a/test/integration/render/tests/terrain/fog-sky-blend-globe/expected-win-flaky.png b/test/integration/render/tests/terrain/fog-sky-blend-globe/expected-win-flaky.png new file mode 100644 index 0000000000000000000000000000000000000000..9fde082c4fdd7188dffd08d9ed3179c8dc8137b6 GIT binary patch literal 10374 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 Date: Wed, 20 Nov 2024 14:13:44 +0100 Subject: [PATCH 10/10] Fix failing unit test --- src/render/render_to_texture.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/render_to_texture.test.ts b/src/render/render_to_texture.test.ts index f01313a5a9..53a8fe6500 100644 --- a/src/render/render_to_texture.test.ts +++ b/src/render/render_to_texture.test.ts @@ -121,7 +121,7 @@ describe('render to texture', () => { 'key': '923', 'overscaledZ': 3, 'wrap': 0, - 'terrainRttPosMatrix': null, + 'terrainRttPosMatrix32f': null, } ] }

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 literal 41179 zcmd?S_e0P7|Nno6Lv|7}n+PF9*+eO%Q$#2!L`EuQMh6*5G>{@4l@Ll+WhD&~q7aHy zl4O-p5q&PVoX`9F`Fy{B!uN;Qkm~su_xtU3UAH@*zo$%S*{oBu-+ue8rK!ny%in(c zga7;cZwih1pLGAb3xE6V-w4z3W2deD{cVbq%e1nM|5Q{DFLOWfaB<&Lf2rTw)&87X zd`Q=wEeEz*{rk8l19mOjInvcKWTIt=>eP^^j1W`DfqN&Lb$4}C>L0Y@ox$^rjJcar z`&~PucypGHvw7?@?dB zt{l;=bQ;xRHEOiSw zbZFO}0|$Ixx(|!D*7?^yzF_>pDLpNnoO&HOa-`smyX}O1O$IiG@d*9MQm8(aX1euGtnt zYiC=2#3^-aOOsX4JUUpeT|2CORHof`eBK;)f2OI^~xc)H5h7?9QowuU_reYxHPU zQ!6W-eY3a7eVnX*zOHrVhw2sG*RNlH`P1Fu23=Y`inaAs+;qUg+`P5ily8Ur(U&hD zJaGT`)T56tuNkx?FSh&e;Rj}KWrxuOL)yt^*{(~#iGn+R}P4U`?>PV+fuCA_WX=%ETZr)V*^UpsO z)VKTkrk1-8oM@qJY;64T`;XTbrx+Uk(Q4afi;J;sTQqh}vN0JsawK2%^c)c%A8&I@ zx5c+_-|l&YMMY`7T{%3`@UY@m`xoxR?t6qie?Et=`1ttncJJlq^Dw-<8z~zVxz%kL zy&+lkz#U^tOQo2Yfww+Xm$(?*)AKugSe?76tgJK$n-aB1Z{qUh{bOPR4<6j9_=jnp z$EFlDF4pAAl`AS+H|D=H&ee-5DzfKyaT!`#S}uK`=H~}YoHQxk+Igic!MJl5F1Tri zM4Nhe3~ti8TN<|;)7#0(>7;f1rh^B&T%OZEdt`N&^78VNcFEnWtO9m*8G1d#uk-O^ z$L2navD&$F=jjDm?L$LDS(Vy5Hf5DMJUTg3XVy7|RNco{*6IKHjhaa|{r2^@+ZCnV zEWpG&;rUwMM~|lS;CPCWF)=%4o^@33I(+3$vjan1%feRWJbILow4zL*@#eIQ47WVn zRRh+2U1}UQYJKRb*$Fwhxtr}(5^egm?`LzfAZbOwbI(s^o}*M(JzvxFd-aF1y4p{B z_U?^e`EJ(Tu;DkN%?`YN`!>xvAt)ro)WJc+P{G*t^6G%+5RJrOU{*$_>k5?)?ZOt?u39*Ht^OUANB1IPzs#*;&UsoeG@w zZ|v$iFE`q(U`<)rxpU`SzP_EwEve``cd351O7+g2J6%S3?&p_Ivs!TX;7}dAt6kI^ z&B%T9XzR3Dvv#Droz4Ak1-ocIeDL73Yl(4HRn`9CtNO7u9z1yP@#&Jd%CHZfO`H}j zQn>W&?h#&urlzKes#o2B;Va+%d+yvGBj5IIS~PZAzWm0!m74GJ6L$M`)(;E~y>)Wt z*?S&cci%`&^J(j}WQnGd&)>6WPjYn~u;SJ2l!`BwGiJzh(bm>h8#*+E^|Nqc&jUl2 zMg05kKfH*dFKdsVI3f3?tgP%G7-%?SMu)h|Rn2lPuleLMEbPIfM^)b{;!50-_77Yj zFOwI^V_bPD?D};>Za}4D$D(%$h0)Z3sw%gtPoK))zKx;~r0S})Yuh%JeY#-5f}Nf9 zcYP|${#3M0wd(o050yVYc&Xavb?nk*e%akHC+5=H^Gwol|BF zCM;J~_5AodpZfCEE4RTk3E$G`hpCo7C#osFF!mX*@%GuJ4pvrcUTkb~^VTiHJdYNs zbF1G!J2=c^2g^S;{o1wP?l0Q2Y11FC?i|<_p}jxaM{$#j!R@Q-zw5TxJVAB+p39d< zWKd&M^~_iktw-1CHf`GU^~Jk%ik{|&qRyTTdiiobt;lrp}RBeG)H=FOWA zj#v|T_wE!+OUq*?PDCarhYw!z==7rd8s3UgM~+n1eafC{XP3RF*HnLv00oM}h;OeW zwR-f>7(96J{ijbS&Y9C~_voJn6dV(+>pY7Ic6O?fe7^bUA9}5}{dxS%nZOGdhR_+Q z1CN&unVdV`%4%QV*%>c0g9fzN{PX9AQ9ont#FX?85B80|&AmwrJh@ zlM&^i=w^VX$(*?0zqP%U{fq-zq>fQYnX#8fydy%*DRe7^m7+5)lwZ)RS1(U1=_JX; z?!y8aH)&FPa_!o+AL)d$fnTI-HW?MZJ0PG9yL#x*p*FsOfl6QBKg;6zJ1twb;OpBb zd-m;9>fCt}b&t=xeS0#OpV-C7V!xh~63^a*Vi+2_L%G$qjz_ec)z;SX$Tg40OkBLU zx1~Xs3_Y{Ehel4)QaT(Nxw&QMA!)RKhZ4&L|pwhU=MI~2n z=!#b@*z^{>ps1rqHND4JTJ7bYGQctHklgb5C-?7HQ8pS&BjzE0ygxy;$i;yDb-mo( zZRpBNU9GH=_B?Z5sH5I!UN8Bu7nU(G5l)>Vy%lZx9L>%2dsVqwx<6~J;5Lg_VPk2A zuW_WwyLazQ7G@thl9;IC^s}y(we`{I*Gh6rO0)pSaZPDyp^XHH6PvYk_k&?}2B^R1&DWy0kd`gIj=}jBu z^}kQ9-$3nAG?XV`V`^j5#ZZB6I`6N|V_D;GUcdhL;>FNCdz7#Kc(;6zbAbV^x&B9C z{T)i3{s~^G^PcGF9#PZ<{{ylcfTik<_GNE#3Z(!j9ZyQ?=#;*r9nWyZDLtL`S$3x8 z<`V!?MYD`F+I;)|-N(;w!L-SfTV!TtzI^%8rRt^W)2C1O517~3P=Qx7ckVyG@I*{Z zPF~)&8zuI|X+EIhPMtfm%PmqXM~|&-drmp+Qe;S- z0R+kQ=jsLUELgJ-9!#T>`BRTUv{b)4y+@7=%YGBNdz9hgrAuEr_Vm71m7eR-)rrQk zvv;39<3jb9cbgH>P=|ruIpw)W1L$z!QRmO^wfpgAhJw1kx8mdjL;SvfNDg0+wXf(? z?dmTNXV987*+IM}U6q&dH@a!^DG?DGUq2LPfAFeb=eA-+WvwR#VBq2p&#yel%L9m- zEnTX^vf-)F*|~T7%Hs6PKfhI6uB*zT&(00)LBkzU^I~(sBKqUu7|aZ7qaJy+kmZ=c&pAu4p<)7H-385zb}3HfHGrcHw*c?kVjmA}Ci+`3cI zc@~2P4!nMZ<(xyko|(L1zrWP_Xs+qHbuf+HG@)qo z@VmS_6Ie#?-o1+<2dhVPyIv&i=;WL$q1=GlozTI}x22|R{Iki&wO16>Z{E4H0Pt>; z=(2Igj%I;DK^^<_>gAJ@W9cw&UO;hi@v&pa)Vg=y5>I8*?%TKfkRk2iPnD17?Y5XY zHI=JOaw+;_$N@i^^O>_}19<vR^_7xZT3(9T3;~072LVL5^(@&OC7E4xMvas4~VQOl6d;fqxDG1tJ_Bp5A zdwMO^8?i5W3;qWW-qyCVVq=WW^AM;GN}hUjO80*KcJ=9{t^Hyx@b}!BPma!xv@}>? z#qs0E)rSu4*o!3-FI#QF-aUKN2J7jm)&AJfZ!fs1t@((Qo|#!$n*IClUZl6fDRfcj zR>e&ge1a?w(1w;-t`I(z!A?0^!nLYty{Y;T_#Zrz;|4m>&JG@UUfmfCIQr}g& zb)y^ZI(JSFva^=Q@VVHxzsAU~kLNvpw^Ck^Ra13;__F_yrH}tnZnovL=NI?@cb&fQ z%bOE%4xv3}eBvkEsEP2W!XNKfbsW86L}ZK97Yj#!?+7$it$WdgJvgdA)bQ}7OP#H( zW}cbfH27)Kik{p&ufchbi@{EMr!if;uC8qK(a6X@rQWr(%>#AMrG(Ud+%`I`+`Y=^ z7>l*PS8a3Z9_xyZc;m*|`I$-rslEuC&OS7f3M;rW)+ejf@M1;mCI9DM_3O1#bx(WN z(&G5rEm@_-YrlN{ERB7XPj=ZnxM%sp8Fr0_t>fsMWN-eHfu%F-uiw*0LcZ7v(2c!>Wz+?heuzyun#QdHh8POOJ%Wf38gK-A2cGwWVY7;R{w%vucpSswoS-Mdom zV9%aCA7@fVfE}Xh)J~RXI{nnFE$7yMUkTXVH+!mJR4c1?Xf?&g!@Pcu2&Vv1+UfbL zK`7F!=?_^{GJEuUrvaC+M}_DW*4|y^Pb-EgqpO0#>l#5y0T647wscU~ma3qxXgD_^pXylx18>o?rG03R z;j7-yN83WBkcIQJ%tb@{E0IWBE>HpYcc`4OM67j`14fHQM~50zj3f!C6KyL2BKg zg?C-3z96%}m>AX=G{Io)XYIXv_rlmIm4W&1dMNqGw*WtPM9fubOojLQk>^z^#ZuO{ zN{a~XW-M*TMT@pWe<1bLx??dr_Uzven-*RoC6-Uuip%qTx$+Wi@o;o>V~DMZ$=s@! znQR8`x?{I)uONa2EAyANXw^#Nd_n@;AkTvj6@(oc9q&;w{rQ@*u3&m}Rh7nE`o)XG zj2pi1#q}-Ckx34MK@n0GEn9Zv?Af-ErEcY0I?Va^#EIqy?ywzp?P@jUpg{`A@)j$N zR}sJR?ci7D`^{{c)^6AI*OSGNg`hpuG_MB3I`^_6OUr7B9_tHu0wVN3cp zycEj~8%9wA+FDMU)I5;-SCwu8P3^6%JqBhr7FLsu+yrWm-Akij5fz=!n-duuyNe1D z1aCS5)LQ*2WTAoe}%Q|z{ToB1S#lo+cM)`>3aIkM|^sg9nat1_N; zUQ97i*_twY`4yv?Gdpf;)zwhRPtexip?mu~w ziR1w~^G>yIuVa0!>#Bl{&zvWqF1i>@UbRYpMcLgWCr|DyD6omz)@|)}WL!&BoI8#s zt-Wgg^z-vWWeMh)4SK}&pATO87o_=eN)0J3E0EZtPaQ0kuAJW*}J#?@(&(+Y^GyD`5w$Oa8f_j+59KMldw8gSsjd#fJ;J3a~nHS)LcEUpPtXxR`iv zuo-;Nz;#nf%2=v-BywsZy>UkbfKu12t!-WaUj;yq9|)@(6CN0|nF zto8i-`LjQjW8OT?apT6>+;Ti?pO8PmEC_*UKjer7hf)Ozg;0f$3PbyeLR)uxb-N?t zKvH`&V0uvjSeHVRIGxvi%J$N}`kLMKvLC^3P1GAjLL=&beyE><7>K&!?>`1onRi{c zMZXCa%IvU6Wh48O@NRVB8|l6sP~cx&`yF;{WhMH7y-MBZqocbw6qo>$Mxtc^Vx>e< z*Pp=h*Hypoj>wl4pZ_i@DoVGvy87=3+5BIv$+=p}&0MKk4h{}Hh+c5ec)(r`OW7FN za@n$Fyquq(M%M>zQ{Awid;CR;d5jn`j%V8dPXwgj-3$62I9;z(X=$)s^x?z5=jvG~ z|COqns6-Q!O5)r9stJoY`TMgE))$s`Oeowi9I_7ucq~I{8&CIO^0%tOleQWN+#5>`~WYVV>wd0YW~UjPAw$VWFIHel~1FrLUb(;@C9D zvjZNTh`Tz`*0w81WX-2n0a!h}^4b@hTPFsh0spKGuMZjhvvPMA1pU6VFZc%sZ&Un3 zy-~umm7P(Sb}mTBN02&kU#}%Q+U?ooT%hM)<%oWunR&JKBJv=P(mMvm@E6CUqqoM> zWOJyPkh(ESh94LB@7uRkPfsuHi}hJYG@X{KugpPWp9X3as0K7Pq1gB66LSB`N1^4G6l@M~=1V8SA|1NvqJK_U~be(4JX`COihzNNwb)H-Gc2II{bS*Rc}Znf7nFfc)jL-QAD8;v7=)rUFku8xRx3LBwa zc@YRbxq2ZZ*9~bs^0Q*jlDI1wJyBOnsCaabL&)+u1qC~^N+S{yf&sb$Tx6Lv;KT>K ziyS~E(uTFO4z9#BTiZK8uK*!OJe-6x-6!o+3md*_7oOKqSerDF{+B=gaWOVhyIBqz z@?$8^vuDpne7ZddONu5W8*@CZOG90KyYJDp7Xs2;-J7fzU9%ui8?0p_ z>VG8`s&uagDC{<5+0*gMmi0wvW1k?fAU3r)gj)qHywIe{sr|dhUz+Av;R-yl|ov?GPCjCOsAPhb(6AkWm_~>vvt^lk$T#gBd1ho1^p&8o9IH(t3A-1*RA5Pds zT}G@{%q({=uKtb=BAQ9tww2$1cpIw!gr_!8Z!{*BtM}Yjw?o(g?B|rZiah6L&6_(p zJNM|@*N>-nub|*I5*Cna-0{zd29?iVh+zIiFSi;V3w!LYnrRhlKHNLhCHLY}k8&n$gNT47Cw{_8hyL=!~`*IjtG3vc++st=Bkc-NAQ zczhgOhAb!sR9BqTc73Lc2?wL6cq7cbSb1qE_?)$cY;^D8!}R!hH&g&5sIIb0O>Av# zmD{%$AA_7i?a%7u?4s0dYoHt;un|=^HO14Y^&BOLLmZ@&C&!1vRguO^Q4EoH|F*D5 zi7@hgoa{BaL;pE^!5f7Z?a>%#hy5r15Hct5Lc4cw(d6rYR8uS1N;?N*wvucx08fDj zr%f9VDiu74%=rvd4;8eqv^0dJApK(u!9d}=w-4yI29Ajao{Ol!wL%2gCV%s-{CqGZ zVC~C*3I5VJ+o88bVG1aUq*IC81}!t8sGPJ(QbJ#J?E?%Duep4;SDhvXfamnkXauM5 zv?3RmD_B-HGc!|4D(@j?gV}&N*r0Mn$QASGx9_i1&&lZBuU|AQGXB-wuq;+x$BMhd zKg^%TLc%$;>8+``dFRd+{mw7U?$#ppUqo+=3u6|&8{V_qaZEoxM1?*z^W35~GekjV zqtEM$2HYnzJG{dtlHxS7f)o>WZt<`I*Wa+`Q+V7Eop8uQJG-& z4NA!?LIF<*h2+2p5+4e;bVzR&C5HE)0cLGY6;h61%h#6n_cGP%B=W7plQRoE@6+{H zm+qbMy1e`_cmU9dx1Ks9Bqqj$Ry|**WmdcLi@P2?er&?JVk^)ZN;4+?qA&kOMKu!A zU;-$v@f@Y2uOFVh?Lk4oWH?Vk#OKfMQMAF2)B(4%iiR%TOEUZ-kqMEP*c1{!(ces8 zm=ZS3NUu}(0RsY>bX)xo5AA9U*ni9~)w;G1^=GiY{#jVE+@lr}e**Tg==ii{69Djd z;ZX`HWu-NhCGv`GPS8yYKLEK=m<1BG0r(GH|4k3xnc;Z0a!o$#6+%8QWz%1i_v>!V zo=PY|T<_A-(t;hhFxqf3iRXO#nA$q2BTkbRO@3Hd9fr$D{R0Tm8|q3_dDNL0aTdx~ zcYu8*o|CB5GOPZ^hw8Ji&!|I(y5Yf`-`4weT zSU>4NE@A~OCEr4WyK_MQEP0V3%b(xQH6QKQK<9xl^g$LWzZLlQUupZ5wm`ofIB=lK zLm(_MCCmyi7$y_j-luI(B~{hzW0czgtKQqtAUmEodbA1m6QPZE7=ZO=jEnlhEeVxL z+z?n2fg7AGLjd>x=WkYC3emOyV@6w_@rX*%$;ql_xyT+pac7|-WL{v+>MAYd;Zpvw z6)RUK?#U|Ez~V5MKm~L-CHM}6DFDgl&Y_X({6Q)Hh=JifNqx*ifKmJ-Yaz_w|MqNa znju;)eRgp#km;Ar`3Q$KKVkWVS-&D%#b?PP+4vG8kq!*&Li8sFFc6X#59@5DI_frg zD=}hdC9)LeFIXUuoGVah^oI}t9)2Z>jTOk`%0?-=Er7jKqbC=oG*Jc2$1ln2*Q(oy zn_Re12euk8oN$LViayQ21e4gl{^t)75~fX`j_N5{iZ5TjD5&eU__JK(kPG?F$Y+(9 zUI@t27R=1dfGNhdGOyaxyT$u6Te9Gt6bV$j8rmOA3&wLeks z`aR6eO`X*LiXc!+T<$y%QP*(%Zy=JSCFQik|>u*C(kXcW~b1l&o2{;*&(b2Nfxv$X+A03H7B{Pyz5}~yu2HPYcg-%d|?UC z;+f-5zJC2$+%jx>%EpA<-4>9X5IR6~B#P$ieCgc~5OEvB(};*tTqv}NxJWnz!$gP_ z_*imd_feuV0MmFnhorQgEd7-wL3mwXQ?yO44aMLrE-Z)xb+zPF!gCEe8V)oV5G^T! z#y9+Z;$}c2oM8gjLSzI8@<*;-(`~7eYqHHtB6`Pfe*65&0ozL}2iRY4Bx$N6;Acsx z&}76Q29&_(=|jyS1Mp{-yrliGtxVYH2=KW457>or?c~K2)N8bW`dN3>c?b}axk9;1fHte}3{=0HOtikyO*1Sbgf<$0iOz$Gh6Kh^rrS@&*mH_wk_c|%Fv zHjepc$$)_aH^o-KN0D&dFb@5B1A$JV0RAc%rwA_@voLkG+Cx*KopQKlD2Qk$^TYwW z^x_Y!a_olPy4(o{C;BnC#thudD#g3D#i7U=fOb)|AlJ6*oc5R=j;Y z0Il5&N=oB;o1f77z?}>{3GxpP5BOhy^qobE7SW=;ac*MMk;Dk%z0td>LAXUSQh6-N zsiFtrZt!%rY}tYp4s@>>fs<4Dy|DfeV#|h)n^ixqsUUfSJgPQ$@ZO%`o=WPC!U@0P zYyUlC#sm}%LWXWhbWQur!0xihudr&^q0&%oaE~)l7tzW#D*j=c2M$qh6pWdr-Y6zU zqp7+HO97qCCI%4CBcM1R{(CzP6_LYR)@<&bZU$Y1R#bn-KC_9TWX9!9LXbdzcw3Ov zma>V?`nsZGoRXnGiV^%c5~l_+9q3Q3`}I{qu90{rpk(Slr74(=3b{v#Un+_eeVP6jOi`$Mg9J?j2qO`UwTylVHX2=v- zE^hoZD#nf-J8CY&mB1Wi&9u6-!Vs#xj920M`kp$3q2U4KNryzF0Y-PMK$f`t<7+<4 z&+$&E5!Dy&KOeY?tMu`~RC9Ij7i-U-JEyjn^y^686T*dOAa4f#Olp8C$k*m|+&Y%` z5badF@=`~*Iq*MTOe2;iNl&6p8M{@@xm9T8E6dPm*HaBjlb%_s<5@s&BqeejMHPW< ztd&*21))9Wg+ynTVg@*c?&MF)uY75bgfzFVrV_fK1gX?jp^a}dr;E(Ku(XJ}EHg%x_)Ta zu3dQ`z`mq8bK*LbQ$0;URGyvs1^X_65Kji2|HocLq>QI~E+SJ$TpPz{F9-}s!{Z(C z<8$uhkb!?4Cv%hCn?SLjw9y{|A|&vm(14x{wUuv@>EdKI{DUk0_h{KJQy=rOE}132YT$OgDL`#~kNiFwob05(7EIfy<> zhodN%P}#c-bKfq)#?QJnv^x@F>ZGM5G$RoaB7mS}qzJYRg_BlwJ8XC`odNL`Ie~hG z-ZUp`2$Q+i3Ie?UOW zQOrl02gcGqotc{=v<0VP?jnuQ^mZ;#X-tmo>=X3lRNY037e}BxA!>LlBG0mxVczT@ zXe|a=>rplT@EoOeqmu}JAoEaZDz02Z$?2c;w|3h3VNhjD5`xs!o#cEn-~^A+jL}yo z40A1R#Q*lhdi(a-sYR+92^h*}6IIV^L{)=p(L6>Ms4pPk3>MI}aKYVC}jxVMp zdU?gLXeW8IV%)Au{%$KO=9@PW@$muJKiKr6(B4JpYd~aFRx&~^a2e^K?fcKUO>?Hr zTtlG#RLf`C=82Xeg~sk@sU0~E()haxXR!AhWIO~<8YMK-gk+_m0tiV_K@w-^%1;mw zk?zfMv3gO(#S5rPYimwAqHZG%9Tk`5LFJ&aLC+7fp;*1{wnrHgVCg9vsZ*(0=x&AU zs|QFw8U3T&oP9#=%O;VAAM}E^UP{iPIEWSAP)vao5+^-DSfLfwl$H`C>kphmo_G|7 z1I0~e<{9r3$jOvZR@CYrU-F2f5MiKbY{7auI}3kFViNG`qI-wOQODT@un-Bozdq_4k)Rv_Qp8<`UN16BLwMikhO1xJpcn=98-@ z${oQCWFyox-lxv&3oUH(LJ%1sNN)?1!zDV;O5yt@7=hRX_?I*~oztr(Rh6K@5h^3q z<5xQ)r-{f!UApd^aF!0p4v;q~AiiPNqJ7`%pyBZB8#~(d+0Uo+oO1AmpZ@cIFI_r- zVE4DR^-V6tpLRwyCuE+>&0_*G#ejZ5b0@y9iO`4uLplK3MQ1=dNd#ODT~noXY2~{J z(sUELt!cz3x(`=G|LwRng&l&q zC2AKXe+%nq&W73rD?dCpqZiR_$`&Iuzz5jDsNh8 z-0_Kb9z4*p8nj|yNT`3>u6aRcDxE)W`orYyKx-AP-;EcmH$7|eY}TUlvnH+bDm-5O z{LMP|p(>|cyX<^kRy4e@wiS{Fs_V%bUOg zV+koxI!FQdGx9-IrtdO{p+fxCgEG&^7m-*Sj3PlZXv)W8CjRnGp_I9p<8#l?BE%Aj z+(unvfwlMj>oDF8cfilkRM>sARP6qLG2M7F0S69<5rFz;Wp(`INkNBnR6#9v6G`tG z@>AfD2HA~{U9g?-{L^zj6QXQ(D_tcCqSL;4y!B4TP_&eazU0|Ke_Q72VReDA75$8T2AKs}>twJX zc8~g|4G=0J@9y~PAxj!3cFvVsH8ln_ZOQYd5j0?_mXwqf>?8-ba?OZtxNvPK`Z@KJ zER^4C;q52@KTQLj!|vMhyf9p@--(Kj9*BVlK+HqD-i1%XLQW%AFdxwR_Hq25sk-}V zLg*oE={c*5{$g1sjI&Vorp{7PLnd2UL5`So8qa3wEc?qs+41hdOs)&6MNbwnzC$gr zvt#GZnh1lGI2l_YTC`~S@}t1@ef!$eWRu*>m1sHh9UU=^#}z=$w%W^%*w@c?N3;{E z*t4iLq)2u}J2gxbp+sAqn9ltMl``5g2zr{28wto&5Lz&A-aM04?ZFo~Zh>0s*9=>g z1i;lKSmZVc^*F8U6PksTK(yB$u`Fgdo;S_bO*4GMw_dywUKj$;P>gimwx4m5Eu4>^ zR%*6|ffZy6XEN;8r>0AOL=re4LL63d9n2l*nf0i6^M>Ank0jkRCZ?+LhH6{ibTXeA zrEX%6@LtgQS&V#D5qkX(Qh@bU&!M5w>WB{??~QBiijBi4kGQ;aKYV_~TqGooyLx6= zOycO)4kKIUO20)aqvxArr)aE-@756DS!tGCbP3x zDmEA0eUMrPVBZj627Z^p`j}|bUG`LOh;zYBKPrzm%ADv(5!%Gb=czP~iE$e)yX=1C z1j2-+dC5NqLvh9>qQD71sjvG~&{rRmW2}e(F>@#)&4y$1{wrE(1b_;5*DJW0lUG=fz0g z!OM&%c9{G%sty%>LRr6HO!j{(h7keii~*_oHGRgv(V3x^O$%I}Fjhv5C-Z`H?&i8Iq0H4RH!3Ru=69o+i&D^_7VXu(}ijVm}68 z)J;yIu)wawlp1(%k6gW$R#wstDCP?7eYc=cxA9FUs2iM>{_RUc=q%^RBnb_Wn+Fnw zFh&RLUWlqA_M?>*O3plYcZtm-wu!aHFX6?4Y*^^*hI>pEQoq2_^7@Ai*~(qzc~F`p zwMI*k065+69^NAZvAKF6`N4zRrRvsbATBDf^OBWG^An0Nq=ce^mG|#Ca%5L|qAA2c zOmp7lhG+=97bUiBt8K{F{e|?6{#h~_NjZg$3A|*rQAgO0j%R>Ge`CGT&w`#T9kSu; z+3@(~g`+5T6X~45_Wro}lGp$Zv*e{T((~Ai#b7353bxcaz9RZ7`3n2lb~CP|J1XHnO}X3E4bn{B<-a zUoBI+(P6!=FFt=}Zpt4ZhwD(g}<8zn`?f`U3=J>f7O%5=QFKLuM~k&kEkxp)@t z17)@?Oy;imbooUu&iAGImM56CJNSB7CK$B#(snJ5g(u(ZwRl{xb+Q7yz zXj6(@u!!3TWzBzQ68QPf{SZSINB8dC@mv`XAih+d-=8%G$#y%+_keEI_HD&P8@#C>%-d=sR@Bvra8fpgN%}%IsXC! z>@O(vRPi$y=b=AVEu+m`hb4fwO!#&?zq`saEG;)70YgIO-PkpNJws)aJCGn>K0H~S zeQ{<2_(tdOU7zcD zI}H|hy2Ai($O6e|dKsNU6TRZ|7ex0l%nCAbu1RK%pZOeoSaZEP$pv|}fuFRm#t6@sNe=7E|A)7egXS+3yf&|x{j4hi{f#1NEA zU*4yyDR&$g-R1vp{~I=Zj6oM;k-p%SMv{^s1dM?TEDLb;vUb!Apglm6Q1|9*(k zjl-7z4IwaKO3;uIf=x8{Z{HYu@Sdx?U9m;ukdsVW2qRaJ@=2Wk@a4;0sP^)_FZtfJ z8>6jkcq}e%0v49Zs!_PKh|JQ3ug{mlCJ2YK9C$0``KDz{9>6_?KYG(Bqb^NQQyjCp z;#7hn5pO@XP{TX5b-zm9x%FX^e>h-Km+~GzR=JM0)n@uh>y2a-HhnH-u@Sr3eDD7K zjS}Z`Hbaoa^ZTC*yEq^$PEEO)`sFW=W-AD`n!4LwMS{Y9eOoKQHLnk!Dv~(8hX~29ol;(ZuT}|-RFUrp{A|R38&V9J-&oN5Q>~{0jDr>b z`3}!d!RuRYxFVn%Wm19iVUjcL=!)jFQmLFtOj!6#Ro*gOEC{fwAYr`Jt1V#}o6;SM z4$u?9zz0Wr9lC$tf=)xI7$*oKVVBO2OF?hL=v53z=*WN1HknaxM5i%8XxaNty>pZP zf|qyWtc7A<)D+@76A#8#X!Y!gBSUUQ3&k^eAJzWj*Zk#TYe{A!>?Dd9c$8)h&|pYI z3N=|AQiISCbaA^5jCLbgipp5-&ZsALVh=LVTzogLI#(LE-E`K_YCc&}y4o}>NJXRr zQbQ)I8lxv7fIdld)ue!p4~*6b>ntM-WVa6d2Le$5X*T#8G9Yhzd`hU_=0Qo$VrHPm(crAu3s-yJk;*hEl;A?PAduU&b;7>J79)@Uc@ zAhx1>qV$td;K{nxe6*kA^}|CzJHQ6$#)e=`N~z@!5RPIhBSh6!RI<`pNHJ{YbO#=w zL%j9=rR2c?pWG?9%E%&dx=wo;P-0?(39melV&e&9eYfClfJ#-!HRj6X3}0Eos4?=> z#n>Q5=;rh5N$E#B{i?hohgc~0Sh9Gr19Cue?SW)_k{t>}G9lM!D%ar~*rsyE0zbg| z3XL8xY}k$nZ8QjwEsg6M7e_IsIr2kX9^Da4okoO+B@81|Zr4s7xrp?`Z7?*bE|aeV z#1SO$=`Y5v=mUjN#5GRrEbSz3&N@G$D()35a9ARh>uN9HS`pJSZShOSf@DoYd%HVd zV+?A+%u_sr=7tDDsDBpM`bj;zKeJ4sSn<`MAv_%yHTRbJa-Vr1kE^-QtV zHo|P=;UzwYEJpqGWa{xCF-<@}1`j+4`%-jTHlJ(}lv(;Zi$fdVQ68I};wd0u^$(P4FXRYpbza}fYIwwNKaIp`x&;@I08u~wk1+hQw(hZ3Wi<5_8h z1c^N?x+FPBA$8q0)YvncBQmB+3tk{JhLqH!I6HIHA2en-fHyBu2IKnKUA--86uL$1 zkt18KtgD8DZ+8lnvo;u_kt%Qpwy6Q8anT)IQYs@xC$Xa}!Nh>3QQ-u0-=3JI@ zgUB(9qQ}NS;UxhIVH1m-*={>b0gWvZldvrEV#G<83qnN*AegK>yyI=Z~ z;2YF{D2!*2Ck}>0E8rQ4a^^)WV$&MwEy^A}6%^`tsHOy=?CnmICmKtqj zKSN)#G#_7D)n9%ynz+nESAYNSQp>`<4xy01f;kgE@$(_A7+IS_Gt1Bv{OpA=aAcp2!=GtgN7yM0jNSjs(gr^I z2?0!Y4DF%1{&O47Y*<)&YcFA=R&X?#K*{Q#jQTQ{r9nUnSwIRQi2*b#Ki1=WM>C-ckf8-~lv~a=$1XAWAgs_dMQXmgZ?3HCxgZRlQDOx!A z6b2~!nz!*cL<-?XMhe$sLhc2^ga}FaXCtc%QYrn4s6q`3cGdeXOoVUGGdjPapOjL!|)s&1uZhIE6W-}EV(Q|e;c}h zBzDMqWRz68pjT)XoTAG4k%FHt6-?)atK#yEN1A!2*Cd5NkX<<2ix-p;SiqyxNq}F2~@vvbM z;a)$*B(-;N*fd6M3_yfDKrt#6oP*b+=$kGU3Q-2e%}E`RdOOU?ER-w?Cjl#@W40Aw zg#i6k6DX;uDZFzrVF>`rJqgd2f#nG8g6+{xa!d`PVGpM6vAd{wlffw}Ehyn^wk6#O za)DT6w%{V&Qhepuvs`TkW|tb6$;b<*Lk{2x9@i98*Rvi+m~gISc@E=$1pg zOf+G0)6!`!68lFMlQ{tlBdQp~w@Lc|YWtR_b~F?b}%lTD6t%P0=( zl$orB=Vt*#ArdSsGDlCI_@q0i$5QR7sl~Kg5UoMOoO~j2etVUjetztK?AAmI>dEPS zHpRqnS!9_KJNl+yC#1cfqcHw+-d<#T{T#$fN|Rl8F%}FO@)l)FqHo3QOL{NE6=XjO zZt_(s^V_HAedTBovbx>Yyp)yx|GpsS4CjOu2^`B(umcB;>S9U?k1)`GyG#%{mNSr& z*TWMGz&@wx7~tQ9MqA99H4*8je{$VG^a@I*20TQX)&{&r4jiK|EEIzou=HeMI2Bw5 z?F4yn_`}>E-@Yg;yn9d(3}{-^6L6^1NJC24=_EaEu;QZFvQN5olMpU!W+S90rnX?J1SHctY}Rb z%5>GAVVz+#1+lb#X$a{K5W|C=(Os-{+EYRslKJ`XCP#ytD2SL=Ohw26PGZ3?T{@o! z&YTCM7|~9c#Mhyp@zyOsLo6tY8)X``&zqn^J1Dhpx*-o;4qZc6WLPc|YdsD%Qq()% zli;zqxYl&jU=MZ$Z**pYb5|MpVXGjQ$n1olbZnrfm=!{sSvp)Qh3LZ4Cx%E>9GkO% zKfRxhp*4E|M?1ZKt<8><3{Br(0uJ#hR9o(hwJqslPI_V#j&7_)6GS<}bE7!I`kg{A zS7vk;3`isa^>HgT6qqCf@DfV|P;98aR9Fd2b;10{M<@HGV4 ze7d9WL>7a&1a=AjFuh;i9!Qg&A}7fqSVv>Tq3^M6gZtY#qQQ-*OlwO#lDLaGIY%(p zd~)nIeZadPJj;d)jzY-?V$?`jk7#DDqc4*@5t%Xib#dvSe(1rr3_;;F~~=dz@RZw<2d<}3_9L?{}Q723?&TWK_CJk zh?B&mPw6zW4FK>{V>C)6!&6Jl>ki(Hu0WZFu$s z&aoo<`uzD6a4J_#eiM>Izc1LC|IRVScf1Cy3!pE!1wR4yy3+ttl+(>3A~t1`z5@dR z04Y+^3K&(Ld;!kD*M*-6szgeJk>Wz1VWyaQY(~tv^tR2mAOc|76Y(Gqz*m@5fxU!= zcH&_vqSH}><}x})(PfXaYWz9kQ>;}c>u+-sfH8BQYuopomBuOuUNZs55m^|JwHoL~Qf%Q>_X)tODXO*i<-~);L(tsQOgi!kv63R`_5cYaYdL<0u^SPs_;x6n z=(nv}omu;3vGBSt*j1ucyCjgC<$*b8IK=Z3A|pknjdrqG;_j}Tf_{wLn_I5MVLXCX zWoOaxK^oCcAT>2oNb_+x(l}b~;o@|e&3!Qo1^|XdjF16y3*}-!56sOC-!z&u=7kUxK(_+TPk}Qki7JLPM3*L5S>eyJVheU~#H@^}v6H3JQagh= zp^|t>Gb#0fpO+n8(Hv^IT(l}n7FdoU%+ClJ~KQXD3v;#;pm~Y zJH~Bm#fwRSzp@*VL;~2$5!yIE|4l~t1C~6} z;Yk3`n52S3ag#>$CTV{HuenST`@Bd3hh(lA`KE8uIk^C*01Uf7>~B4!Klo+m|AZ!9|zD+{Lxs3)H$ii5=YCCJVJeT1qU z&d=(_pehsf{blGPpXn;%%6a%?S`c5{gll~xLlal8>&50eTT3$|Ey`jiv4b38KN?ChxD`=x?s9dq<-AX5l zQF=;L7$ku*UnEsapjN}up@-P6Jt%`*Bv6!m zE8oglDr3p-hDNucNCC6Oso=0yk^#(&!n&sdO!MEplG$Ad0W$a(YNa@{B#o&)@?kNo zzK@b4=Lo*<3e!)tGrich+_Ne6o;ZO2W0(YzC}VDWK@3n-Isos^nX_{wM|%2Ku;nfh zQ8pXb4urS9vbG^v!56G`i~(6B3J7o#$)b8lf0hV^yhFnKv|JE2AXF8)-*EB+&@Bjh zjdtua)v6tmH2fGbUQQa4s5htOLNOrL$UbfyG{ga1KYu43HtUqgTHtQvu3}gr1}oj8 zA};wZXo&WL-YzHr4`+MUFByy`_mSymITM4L%)9Pl;PRW1g`&(ZQ6^+Kh9m-K8mXk} z?%%&(qLm!ua3GO%jSO)3V_h8NfQ+KnUZU~96)|4X(jh34Do4Gu5iOjfA1d-=bzmM-Xk*y!`d)5-N>z6u1jNn!{Da2%<_#YuLYkJFtaQ z8fsNR#)_O))JEonxOgGHa&iO0ka3;|*q>9ZDNUlkgPxE)+Q}|;3eDhP-rIzm#Jlrt z-&YPGLocN%h(#iq!5U7l z9&s;V+Z0YI=59nl5>f^_6Q3VaJ|k`pz^TYBNgk-cb{U1kM+I0a( z?%8BHo^7ZEaaX_fW)h1dzxYeZ?D6!$$Rye`M%RBDjiO}t5dCzQ*0W4^XAU4UUj427 zXd5i^HsTeDG3QN2B1q8&d)Z{^nXw8eo^o6jlqI&EpKI|nfTOFwB_&0N(7NP?uj*)Q8yTzUrIxVnQA4p>7%2qhrN z@z*cy>c7}g9|=h!4Bwi;m9~)y1tDbWrmK{~;sUsJ33dH%&$V#F|KYQi*K=4O697gm zqO@K+uAh6l3+BMPOEBYp{zN3xswcZVdZBtt-V8 zgAn-?dLk!B!VBee3N!{X8sdhb#r95@magP_jVl-^O7JNidk zQh-@@Kb4q6k9K15fL3c!ci?s$U82PE6M-4NDbhDqm`roZ=@}q;G!P_N5`Ao3M14M& z*9B~Z7*{cd)8)iN4(pu!HTh>=eFXBL1Q$6pu2__hK5>_kds7yl=K~~ciLZ>*x~)L! zSD<^(oZ7}bXbE!432JIEDrrkm$yXsVJmSrN&zZA}Gq-YPusvtSJN$JWESYEpW>%mS z+L$Aypo0DqbP?WQ#`gB=94CJR*Yf-<8GFX|Awn-&8F*WUY~(1~&0`yJJjL2Cy#aBO zbm5sb4E3Sn$;1zbs1kr{NULzhZXnJUh(L-n)(>YxVR*2tD};^Jf84#`JUb0(+dqOcz7z9uB|y5%@F&W)YIisizf@1S)K>SRKk zydspvSk4Cry9f^(Ad`^RL0aglBbS31fop}z~TU1MJ*>ym`PHU_y{Tplwec-yJ%DmIeXa(lJ_@3?|Iv1Oc92kshk3g)Lss+h(=CHWO|+*zMB|HEd%qM<`Y3qmW~P- z2Mh?1;5$g}a?FhahlP_Zfv_m5}gX3z67Ej{9%8I17gTo)3pniMt zd2)%y2Z3s=E1PW6fRdiWiAeL?y_XyLP#Ou<2IPtX| zN(^+T%gZ2LG2Mk3Hba3z`c<4JMa^a6u?&*Oga_Zs^3P{Jbpk()uT3}MWTutCZ<$|3 zhiW+L27y7`A^8+nF!2Eiq9ZjB66HwbjWg_dASA_^7YHP9_Rh0$dWGjJv1jNfPX zQjRVJQj%oqEeZgCL$a!?#AvG0TLl%<;qCNCUNC4I+^98T?x(41p;EIW3e?ZqLZ^ z(74B-q{sN_J0j%355Q1^8N#o_IkDCe^3rgQJ~Q*|ev|`o;h4sg*>>7IXA=2BDCrXu z{wK4|2UuCj90b6Xea??Lh0+M{=qetaBIZx3QpQ(tIi(p<{E#ylZl!_G2jmFhq(R96 z?4-{z9B&^Qd4N4aV?u_8jbUn<@Z$|&0Kku`4v3c%Gi$!YdEqD57xFJhxlgOM|5*RQ z)=@9(;iw!FLnSr8YqJ#9(t5Adad6q*X2>qv;iu+x$-m=!b#Zq2(DiwFW_B;5dfqU7 zdUWNA;s?7nH}!2EQZ7=hPH(pKug~cWKzF=aiwV6It4F9O8Ba zK3q456_Nux5Vf_(EWkX0ZTT0Ad}w0zpUvyjAQX2=^Z+A8ljUetPEs&JJEN~cJ7vs? z!r?^!q*RcBJ1rH1!yf1XVkhAp%Q;v>85~VmUTC~;0pjYhKfZaO0E0!@&JaC08OO@1$6DqD zB)FItXLqB>g(Irnrdb^!gb9q+$&wSOZl1X-(aa$d!F@Q|FK z)SuJF<^e$`pTi4pIGT{Voy@@>rgAX3DXY};!@9zf6Wmf@_enAx5hS`O`sSvO22t*_1}+F;lDnOp?zN9xh^A+?oMknMSGDP*?cu7yBB$fG!j`i1+bJ|cRJLXbZPE>+ zFwf&Cf|tB-g~F~h0nrH+3J3Sb)tbUl3Z9-_01QOSOfl-%wNo*b(2NKzBjAF45Vi_9 zpzXaJTrTIfZc@8OMw`@KnuGzpZ|v4GwSM#F&FNpi)~L7FBPfy#8*DK|1v@-OpbUV%HzlY^2Kz3Z*O$KCt%X`ThM zqSzJXAJuLqnFyg{YM#Nz>q2z0Af=p_WzMEU2q~jJOV{K?0_f6d0;gwaX)I9QCC5@y zgZJU5;LWlZu#H!YW~6Ma;`_T5UmVsDE-~$-s(M3CbfulOr`LDuLfs?IAhMYbF3#Bf zi>Liu%HEOzDgFxKkfST>Ho@@ZpzYWSG-y9fI3SK}18Zox?$S98$ zi-3SVh;pfg97N``_Qq$9vo#Ae(j;X} zS2jDbqISUd;o9-dnj;s#I{LFb9bQCxXpCApN4z4Yg@L5J`ssou+@?F`OzD_Y`S|iq1j?OT%COBpgt9ReUjN`~J%j#=-k(gqiKB=QkJ@6@ORv^s@(g;!2pj;e7sh z3wZ;Myd=>gp2=e24gOYc4Yp`B7K6i`3y&{Q*K z9rIGXDZ@ZI%us%;>*IWoqh%PFA9TQ{4BCt_*ftvbGgz|Ywx)EP*nL1MP39F=IX+;R z{A?z({Urhv6~aTAlQEIXvU{7lB;nL?J5%=Uy?z11+OMxkCoIRwrzo&-%KhcICIy{P z%F;kc@Nx4{J?beVGu5|xE@Ythx&3G}dmhL=v&d3E2kR(WX5O%x(svHUA>^F#i-NZ6Yn6abe)Xt{ZE$<1H`sUXH|LC-5Kt)k^1#n=2ys#Co;`5-sK=t2FrxXI znGpe_Zigl1z9=g06y0{jWkpXIsgS=p*T=p&+SZDmn3(6M~Nb2J{) z)TawiXCLcLA7c6ys@|}R)h}g}D`?_aU%s61^qr|vWhEnOmlW8$oq+O~0DZjh;){1J ze6W58dB&ROeT=J{iI;W*hj$IAev0BC|7j?uq$9>Q(Jl8URJ9(Z!ZCwjld31%yD1$R z2TjOp|Bw=gq*U=@3)EgMF^$`vQo9vIZ2sVYh` z=s;hL{*u{xFpM}KtDb#kWxZ&KZz{^wW7jqspwo#8^>JQCozF04sW@sILDFTG5_&c- zJg}0}drwhzx0oKP3;D(bE-N1WK4cZMw6WgFrDsKB^vY0*6$c& z=b<9QoLgC-TnhcRpLk7)lslrK7Is3I5=XCEm}T+%`T{9T419b<_J2+)EwY5%1jpe` zIZWJ z$$k9WF744H!276XgUSSe(1KAmr~)VhD%zeD&Z%ZSJ<9=H8byf#Pz)zaCp;nLs(X(7 z%xe^{y+YINc7<}Q#&MkqaAP}dx*j1?DC)?O0=94yFaP=za)`qD7j$TP@b#@nA4XWo zR%0N8PQMVfDBJDl1_;*WoLflRtI-3>$mlGDVFb6GPT;Pjof^4e9&vfpk4&C{_52W? z)Til`d*pwhnk9yUKh$>3cLz%E-ustg^+Lq$*(EUt(Ygg1CC+bgN<2L_n&cX`W&oGj zbk<6WE`AR*uzbmMbe2-v5$hY0b_=SO2yE=%zw8J2QJ%DNQaU`ikC811KTuGDKgL>7 zj)V3CGQwHGU5O7PMaR#UwG!Jm$dVB7Jl4S_{>;+k*7q9fnJc_YXPNVSkgvhYUj`u934n})ViQiQ45%x>T3%gTQ4 z{D0JjsFsStr=3WSbLi+FZy8Qr89A<+q@>@OG*GKxHh>Ka!g&>4vZ{%RgS0fc+d@w? zLu+ThMo)U{nLv8vO1al2?zx6co`lMkRtkm>XF24X*G^g-lFes~J44Ev*fCS) z3G2K1>XpJYfmS$95{_XJn{wdf?JB!xjUI9^T&=)#N8^E!mZP`q51cGfjnbY7D8|O_ zP$>Mcystk_8-~=mlUKOo)wM@2I^N-1S-*PBj+00)p(?DPLLP!Z4uIo{qhI|hB>a{2 zz`W2GLIkKEH6rhbUVp`8_DE9k6Fu;XShWcTa)nYlTy;Vzm}!g(2+iTA8jObdWb|Sm z`RZk5VLDVsVVmT?FY#O|+6F2V>q31Sf5kRuJI2IzshB--LH&)^E{(tsE1F5-N>;|_bfC$-0j%d!7g#mN{+w^pcAyczUa3X(-coa7Vjna!76diPF z^k=W#mu!gt;n)nhf?6cJi*Urc#hgtmLkJ8j1lgvX2t+O;20}N}RxIljQ+m&9C{*Eu zQps*GE}JRy{nCasw=`#!T6Dy~UB~nMx~b0;_KEsAOX!X5DnAML1-E2OLplLj>uX8sb%R5y$C^w-cwWx6IXeDXUdGSTy&O{dQ0W!V$@BQsJnowGYCzP&dpK!nXJ1=E4^Dwws;ziwA>^Lsb(s5E4TJ_y}~6S8OqA;=MQR;Yf*lH9K+J+czwz7VZv^?S~!nFlE%1hms90=BSlsr!R5e zw(0D|DVw^~%&M#$yXWJJlFH@Z(V)Cknu#Zetl{yCCKTn$7BZ=B(|M!%rW2YRYr;1R z1vqtp=MIVqe<~YQCg=ncZ7qd3*Y+J7+ih{U!o{JPo7?K24C0GPVd$ozDuSXAi)yV^}rE@V%7EKU5(TTXKTXxN_3A zV>`*=UV5pXt~>K}r?=X+LMkIdm$yIbEcc&t#=}l!)l+4*kf^Mhv2UI<`NKc|`AYWy zii{k-Ziv~|g7SsBQt&~rn%q#02fy~vH%c1L@W&}_Jr8&95rluE&U+UMt zdG&qf6UX1mgs0tpQ{L>i4v^;us-0w9oqbEWKWSBQ?WKKMmP)~*8ry&Af2zhZKR&2r zMKjgyxQOvFOw3zv67M%vJinH4y0hV>^JbTblx|iI{0H3|JR+{OyDR@flnUwK0KZZ* zU+yzf+$08o_$o@tC3$57$+@Fpw;hTm5^Z&j@`ywwWcM*LQI?nc4E$tLW5W=-zr!&I zNZQx$)Cbme>Dm>F8g3i4$x8=jfVsv}PdOO|{6OodZj+tr=JIlmSed^=fR5HnZy*$8 z@=MaDh|DWa z*(Jf|`0Nqrh96sqRl?6h%BG^xTL5oxaApq^mHZ`gZxc(-AcR&N6S5!vSTKO%k}|HfaLwS49aX zZ~p%xirJeDG;2e&VWQomTQX!u4TZ<;h5TD!g~SojwMQX8G9J3!e2#y!4;$wPfR>;3PkO5DiumVyF@9o`?+TyABL1HkL%OJQ77A9 zb@$%(+EFC9u)hgX{|l1IFGe#l3_Ly4DJ{m*?MK@L#E}ARIE}jC0x_j=j9f{CEGR0P zMN|yCbj^_b;JF`_117WQcG0cbwK)F;i+sdDT!E}@b${q^v`?xnGJ;N~VPn)gZd{_5 z=-Ran1ajRrLhBm%sLDS24@mjF$?*TFXd92jRArj&t2wXlAHT?`t6G&@7*E0JapjH; zlHLq>8-4K6XRWRZA`*R7JNXz-o(d(Abpde%60&)!QA5gFqx;8RdUy9heZa4+*rd5n zGu#63yb^CW!=136>7DnsE7|bbd$pnd=WPH~2yIMALSma~?1lZ50;BppA377;pZ{eJIO>IX{A zm?rV{D-;iWp@8b;(1*h&h=k0TWLM{o1!ZB4Kx!slG}vOMv8W7^2W^hoSL);~8|A%$ zm(3JaD3t;nJd*K)bZWhn7qQ50NktMNkd)0WNsu9Lm#Y(Wsn>3D>ds_srt%wowpGEEX(A7~oOEYIDrpxZ~4K)ix z(OpnxO;XYRu=?gLt^`37g_1BsEwhlwbkt)SBMaCe+(2vs50mwkWo3)5TfeHM=JU?uU;gC zCha;b${n3mP@$P6V%k^V^ZVJ(;W?UEEJzu+`rsg4Lcg1D{@_j3W&D677|c(RY+5j# z%b?AT`ASR#A5wi<6l*eA%i2a|(;1Tk*Ic}=APiuf^Sfe?G-Osb03jdGhs=SzI}cOmcQ_VIgIJ0o>171<==4QJZhCN=vlGHcM`*Y z^zp~~6B-srlX{e*o=xyOVdo64NKv)D(YR}2f?-XbW ztO{^}TlJ6Mw@|QV8H`NMJcqnMR!{Y^K0}S1BcF?Z5MU~2%qY;m^ln^Oq)Wo^Zw%kP z(oYcqMUfh0$(YDrO=Wt;iCGhUT=dgPChr~FKU6p<^cG?Jahvob>a`k$mU~!py5Glm z*VtNgH4hrLm{(Nf(y}Ddx#+FiZfIV8S)WbOuN&=4c0rY9yM2HBU!+bvi#DC6?E4jD z%?ln%(_)tlhlAwIc~nQy#@*|Bes>w-F54UXa z3PQ4nD?Dq!v{AcNPvs1qOY&x4IsO&DStY59CY7Xp825UuhZ~)a*;;zWzP)I`XkRUl zURyH18s&V{HPv}#6Uad0`BSVFO=72_`FFjt^8I5!q(XtB zO}r_N$gur>*w5 zLLWjc*$aYV!7?ldRyElmIc5jf=LWexmP>n@*vecY5D z#)N>xgsI3ALR!bwFvuU&5`K=XniL-`J{&K$U2zdj+rwn?gtgb4b5Cy}A`S0Ltc*bh zF=7v%5Z~=IiX#x&l5y>=0LK5&?hR=Qqi^{lPm<5IoqPCD&c0qIL5Z0bW1gj`hz|+G zSI&a5FwUe$h{su9M1|uo_G>0;-GE8~M}7|M2s?)6O&^E^K1BNI#F);~?%0`4lvc*p z&YxvXVm^IoN1BQ5aKo5fXBLK*TFk2jq<1uoOG1ooe6LXEg_Kiog)T9@o_wXzW?8mu z*-$v0`}bj?ayDl-x;P{OXc2o^N6nAn)`lHi6+0@_J};|7<4_|tg1>`r_L)p#H1u^y zQB3Bd9``&JBZ5`%wsUZS_M`MNrcmG=<2SmGYr3u=Bu-$(jXjSoitcjbNeaPmx|rVPmEInpAnZWaLVbuxca|vS*)tKzF2euZG@G-0e!}IuP5t zmLo@vSglHj$luwq2XAs5hBEo(nrj+~ec!Vh^?$E(JO>MglAxFgmQJvVJe@?N9d!V| zw2VpzR1!h$>k;O%EL_`oRt6nbOU9Coq78LRg3|QtZeY^jw(W**%$HgQkdSL8=9*tkLj5w9l_`%e;Lx=S~*VDvRr03fF1b(@d!74)vOH0>@ z2wqliNwqZ97cAB_WEFr2#1P!Q*t23!hP!5fxIVrn3=j0+esJkVJnVudB-_U$d&+^J zs5h3XK}!?q%}8 zP$4Uh;`h43h_#@i@H&* z7|Gt(yV;Std5HYy>=!M&QaA+z?2jQjhmkMep(_mciy}T(YJzH zL^!I^)~n2Gch*@u;%bpKRU>VF1WC|bx4*ylZo0f)M6N?7?$5Z#;2oeULO*tX;@J?G z>Af!}{0NO#)ySCRCRu`|QdIWNJYg+nD%QN&PudwUBHhPcSq4aS5e#0XxE4;d(y7rH z#+AXm3Ys7d#nYa$f=r!tee>!B6N8YV35IWme}GUMt2D-sM+M=`&TA-)E@Fc8Ep(nF zM-K3emOV4wPRz8kb}alYjf*D0T{;kV5f9LLkUbH_M4#iMkJgV!Wh(lJs6Fm!Kd{QL zhB7?NJf77*p&l}F^a~31y3w!3I)P95hs1{62gjHulCc9JRHr%&}WT$a^kK)} zv*$UbAcl;))SnhTWnc;38I>;|w8gy~;g@s~MpB|C8@~51zbE2SBHHhU?L>o-W^Zh* zqT?3AR9mk?6%FCFTy;U+H2K?`CTeYy+^L+LzpuVqf!6KJs{y%-5G0Zf6W!%d;yuKF3-qvn4-{yCEGSV``u3$SqVQ?2M5G^WCP>{_@Opn?n<~T<#J=n8}DK}FJE(`63MUU4J#@Fw- zs(5~D+)%BF-U9a2^JkY7e1=keeByzWzd@kiHfLnJD8V$3Qtc^f>O{wal56mC6B`vN9U&Ibg&zm^bQd10P`IPFggG|N*Eh3QuAuZ!A zK5v605s0_V5=*pD8e#Z=H)Tunawh+RPe(9t-3iScTygc`nyC>3Ha3G-XLUCR0NE|D zDIDG5MuprOGB8)!J=pnjltCeWEOuqKj(V4I z0EEBtX`SB)3N8eyq1=h#Lsif%5bJ$2I+k&nTOvcsN|AFm4U$LCacSWiDC_U6$p&~) zJxZ|CyBL%1k;hy5h=$tx95iO#U^!{4L{Eo{+$iD6GsKuRBXmzWbN(T240B)}vB07j zgL&JGl=dFb4Pvkn5S6~T*ZMXJCH+QCMN(Z1-)Urb)c)lt=IxOsoxe+iYAoZB+$7o_Kj6(1@z=X@k>DatjRRhEJ+UP#lpX ze6gYtQ@tO@CTc}^p>T6=X=hLTDC7tk?bL9Y`^7lx;72Epj3Vo9iZYzGKD)YzAV zdB}_CjzCdg1n5bD@asPGGvR2CZ@Jm;q( zqh4RoB>v&}dSp#d3aFlh!+?V*YQOyQbBPii7ql+Q$7Jg$Hu)c5=*z&{8vKk9$N0f z%7?J0*n4*@c}jY~tbP`jO&RPj%=M!%0!ILrL)s9UJv586jD8H9GwQLMNrLn@()ffA zZfG$TNe>hk+#s_?;Z_0(H2%ATXgW=k<|%88tCG^OWuE*PVTF0^y=Z6#ZeygU|U;r!X8fO70+tp{`;mnKmztl*|1+2E>XxIq^M5!O2$mbh#H;#rYbTt|72CO*SxTGP5vYguWy^H}`xS zUr)j$JII%FpWXfL=+^dH8rSZ9yZiF(Lw|Jtwytf~Up2Sw7eoH#^PhZ`c2WYL(WO($;b-)Y{L-~M*M^EdwC(~EjFyZ-r) z=9lG5bh|BXdS5}41%02jZe4ylYa5s0K=n- z?yD$id;fQR&n$kU)1wV-hmW7J->>bw6}u@su5xfA``!W4qlqZ$P_lgMZ{dsp7u9S6nr8%KrozZ#sDZ diff --git a/test/integration/render/tests/projection/globe/fill-seams/checkerboard/expected.png b/test/integration/render/tests/projection/globe/fill-seams/checkerboard/expected.png index 834e05ac87204930400a837c0a873df43ce53c9e..694b284a7516e7512c892fdef8846e756490e843 100644 GIT binary patch literal 9117 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 do`Telt{q{NhO-MS4fZ{Na1 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 JM8wede*mIRbGZNj literal 10373 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 Date: Wed, 20 Nov 2024 13:40:33 +0100 Subject: [PATCH 08/10] Remove unnecessary matrix creation --- src/geo/projection/globe_transform.ts | 6 +++--- src/util/util.ts | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/geo/projection/globe_transform.ts b/src/geo/projection/globe_transform.ts index b7d992e663..cfd6d6f60b 100644 --- a/src/geo/projection/globe_transform.ts +++ b/src/geo/projection/globe_transform.ts @@ -2,7 +2,7 @@ import {mat2, mat4, vec3, vec4} from 'gl-matrix'; import {MAX_VALID_LATITUDE, TransformHelper} from '../transform_helper'; import {MercatorTransform} from './mercator_transform'; import {LngLat, LngLatLike, earthRadius} from '../lng_lat'; -import {angleToRotateBetweenVectors2D, clamp, createIdentityMat4f32, createIdentityMat4f64, createMat4f64, createVec3f64, createVec4f64, differenceOfAnglesDegrees, distanceOfAnglesRadians, easeCubicInOut, lerp, pointPlaneSignedDistance, warnOnce} from '../../util/util'; +import {angleToRotateBetweenVectors2D, clamp, createIdentityMat4f32, createIdentityMat4f64, createMat4f32, createMat4f64, createVec3f64, createVec4f64, differenceOfAnglesDegrees, distanceOfAnglesRadians, easeCubicInOut, lerp, pointPlaneSignedDistance, warnOnce} from '../../util/util'; import {UnwrappedTileID, OverscaledTileID, CanonicalTileID} from '../../source/tile_id'; import Point from '@mapbox/point-geometry'; import {browser} from '../../util/browser'; @@ -1194,10 +1194,10 @@ export class GlobeTransform implements ITransform { // the fallback projection matrix by EXTENT. // Note that the regular projection matrices do not need to be modified, since the rescaling happens by setting // the `u_projection_tile_mercator_coords` uniform correctly. - const fallbackMatrixScaled = createMat4f64(); + const fallbackMatrixScaled = createMat4f32(); mat4.scale(fallbackMatrixScaled, projectionData.fallbackMatrix, [EXTENT, EXTENT, 1]); - projectionData.fallbackMatrix = new Float32Array(fallbackMatrixScaled); + projectionData.fallbackMatrix = fallbackMatrixScaled; return projectionData; } diff --git a/src/util/util.ts b/src/util/util.ts index 2345a036d7..97ee138a2f 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -19,6 +19,10 @@ export function createVec3f64(): vec3 { return new Float64Array(3) as any; } * Returns a new 64 bit float mat4 of zeroes. */ export function createMat4f64(): mat4 { return new Float64Array(16) as any; } +/** + * Returns a new 32 bit float mat4 of zeroes. + */ +export function createMat4f32(): mat4 { return new Float32Array(16) as any; } /** * Returns a new 64 bit float mat4 set to identity. */ From 2a0d0f5c8cd3d75b98d26544cd3089c6903defa7 Mon Sep 17 00:00:00 2001 From: Jakub Pelc Date: Wed, 20 Nov 2024 13:42:36 +0100 Subject: [PATCH 09/10] Make sure RTT matrices are also float32 --- src/geo/projection/mercator_utils.ts | 10 +++--- src/render/draw_fill.test.ts | 2 +- src/render/draw_symbol.test.ts | 6 ++-- src/source/terrain_source_cache.ts | 32 ++++++++---------- src/source/tile_id.ts | 5 +-- .../expected-windows-flaky2.png | Bin 0 -> 44092 bytes .../expected-win-flaky.png | Bin 0 -> 10374 bytes 7 files changed, 27 insertions(+), 28 deletions(-) create mode 100644 test/integration/render/tests/projection/globe/terrain/fill-planet-pole/expected-windows-flaky2.png create mode 100644 test/integration/render/tests/terrain/fog-sky-blend-globe/expected-win-flaky.png diff --git a/src/geo/projection/mercator_utils.ts b/src/geo/projection/mercator_utils.ts index bfacebb329..5447954239 100644 --- a/src/geo/projection/mercator_utils.ts +++ b/src/geo/projection/mercator_utils.ts @@ -1,7 +1,7 @@ import {mat4} from 'gl-matrix'; import {EXTENT} from '../../data/extent'; import {OverscaledTileID} from '../../source/tile_id'; -import {clamp, degreesToRadians} from '../../util/util'; +import {clamp, createIdentityMat4f32, degreesToRadians} from '../../util/util'; import {MAX_VALID_LATITUDE, UnwrappedTileIDType, zoomScale} from '../transform_helper'; import {LngLat} from '../lng_lat'; import {MercatorCoordinate, mercatorXfromLng, mercatorYfromLat, mercatorZfromAltitude} from '../mercator_coordinate'; @@ -110,12 +110,12 @@ export function getBasicProjectionData(overscaledTileID: OverscaledTileID, tileP } let mainMatrix: mat4; - if (overscaledTileID && overscaledTileID.terrainRttPosMatrix && applyTerrainMatrix) { - mainMatrix = overscaledTileID.terrainRttPosMatrix; + if (overscaledTileID && overscaledTileID.terrainRttPosMatrix32f && applyTerrainMatrix) { + mainMatrix = overscaledTileID.terrainRttPosMatrix32f; } else if (tilePosMatrix) { - mainMatrix = tilePosMatrix; + mainMatrix = tilePosMatrix; // This matrix should be float32 } else { - mainMatrix = mat4.create(); + mainMatrix = createIdentityMat4f32(); } const data: ProjectionData = { diff --git a/src/render/draw_fill.test.ts b/src/render/draw_fill.test.ts index 1b4f6b0311..a53f03f241 100644 --- a/src/render/draw_fill.test.ts +++ b/src/render/draw_fill.test.ts @@ -111,7 +111,7 @@ describe('drawFill', () => { function constructMockTile(layer: FillStyleLayer): Tile { const tileId = new OverscaledTileID(1, 0, 1, 0, 0); - tileId.terrainRttPosMatrix = mat4.create(); + tileId.terrainRttPosMatrix32f = mat4.create(); const tile = new Tile(tileId, 256); tile.tileID = tileId; diff --git a/src/render/draw_symbol.test.ts b/src/render/draw_symbol.test.ts index 111557c9da..6e0d661fea 100644 --- a/src/render/draw_symbol.test.ts +++ b/src/render/draw_symbol.test.ts @@ -84,7 +84,7 @@ describe('drawSymbol', () => { layer.recalculate({zoom: 0, zoomHistory: {} as ZoomHistory} as EvaluationParameters, []); const tileId = new OverscaledTileID(1, 0, 1, 0, 0); - tileId.terrainRttPosMatrix = mat4.create(); + tileId.terrainRttPosMatrix32f = mat4.create(); const programMock = new Program(null, null, null, null, null, null, null, null); (painterMock.useProgram as jest.Mock).mockReturnValue(programMock); const bucketMock = new SymbolBucket(null); @@ -147,7 +147,7 @@ describe('drawSymbol', () => { layer.recalculate({zoom: 0, zoomHistory: {} as ZoomHistory} as EvaluationParameters, []); const tileId = new OverscaledTileID(1, 0, 1, 0, 0); - tileId.terrainRttPosMatrix = mat4.create(); + tileId.terrainRttPosMatrix32f = mat4.create(); const programMock = new Program(null, null, null, null, null, null, null, null); (painterMock.useProgram as jest.Mock).mockReturnValue(programMock); const bucketMock = new SymbolBucket(null); @@ -214,7 +214,7 @@ describe('drawSymbol', () => { layer.recalculate({zoom: 0, zoomHistory: {} as ZoomHistory} as EvaluationParameters, []); const tileId = new OverscaledTileID(1, 0, 1, 0, 0); - tileId.terrainRttPosMatrix = mat4.create(); + tileId.terrainRttPosMatrix32f = mat4.create(); const programMock = new Program(null, null, null, null, null, null, null, null); (painterMock.useProgram as jest.Mock).mockReturnValue(programMock); const bucketMock = new SymbolBucket(null); diff --git a/src/source/terrain_source_cache.ts b/src/source/terrain_source_cache.ts index 476fe69717..2ed33447ca 100644 --- a/src/source/terrain_source_cache.ts +++ b/src/source/terrain_source_cache.ts @@ -8,6 +8,7 @@ import type {SourceCache} from '../source/source_cache'; import {Terrain} from '../render/terrain'; import {browser} from '../util/browser'; import {coveringTiles} from '../geo/projection/covering_tiles'; +import {createMat4f64} from '../util/util'; /** * @internal @@ -98,8 +99,8 @@ export class TerrainSourceCache extends Evented { keys[tileID.key] = true; this._renderableTilesKeys.push(tileID.key); if (!this._tiles[tileID.key]) { - tileID.terrainRttPosMatrix = new Float64Array(16) as any; - mat4.ortho(tileID.terrainRttPosMatrix, 0, EXTENT, EXTENT, 0, 0, 1); + tileID.terrainRttPosMatrix32f = new Float64Array(16) as any; + mat4.ortho(tileID.terrainRttPosMatrix32f, 0, EXTENT, EXTENT, 0, 0, 1); this._tiles[tileID.key] = new Tile(tileID, this.tileSize); this._lastTilesetChange = browser.now(); } @@ -148,33 +149,30 @@ export class TerrainSourceCache extends Evented { const coords = {}; for (const key of this._renderableTilesKeys) { const _tileID = this._tiles[key].tileID; + const coord = tileID.clone(); + const mat = createMat4f64(); if (_tileID.canonical.equals(tileID.canonical)) { - const coord = tileID.clone(); - coord.terrainRttPosMatrix = new Float64Array(16) as any; - mat4.ortho(coord.terrainRttPosMatrix, 0, EXTENT, EXTENT, 0, 0, 1); - coords[key] = coord; + mat4.ortho(mat, 0, EXTENT, EXTENT, 0, 0, 1); } else if (_tileID.canonical.isChildOf(tileID.canonical)) { - const coord = tileID.clone(); - coord.terrainRttPosMatrix = new Float64Array(16) as any; const dz = _tileID.canonical.z - tileID.canonical.z; const dx = _tileID.canonical.x - (_tileID.canonical.x >> dz << dz); const dy = _tileID.canonical.y - (_tileID.canonical.y >> dz << dz); const size = EXTENT >> dz; - mat4.ortho(coord.terrainRttPosMatrix, 0, size, size, 0, 0, 1); // Note: we are using `size` instead of `EXTENT` here - mat4.translate(coord.terrainRttPosMatrix, coord.terrainRttPosMatrix, [-dx * size, -dy * size, 0]); - coords[key] = coord; + mat4.ortho(mat, 0, size, size, 0, 0, 1); // Note: we are using `size` instead of `EXTENT` here + mat4.translate(mat, mat, [-dx * size, -dy * size, 0]); } else if (tileID.canonical.isChildOf(_tileID.canonical)) { - const coord = tileID.clone(); - coord.terrainRttPosMatrix = new Float64Array(16) as any; const dz = tileID.canonical.z - _tileID.canonical.z; const dx = tileID.canonical.x - (tileID.canonical.x >> dz << dz); const dy = tileID.canonical.y - (tileID.canonical.y >> dz << dz); const size = EXTENT >> dz; - mat4.ortho(coord.terrainRttPosMatrix, 0, EXTENT, EXTENT, 0, 0, 1); - mat4.translate(coord.terrainRttPosMatrix, coord.terrainRttPosMatrix, [dx * size, dy * size, 0]); - mat4.scale(coord.terrainRttPosMatrix, coord.terrainRttPosMatrix, [1 / (2 ** dz), 1 / (2 ** dz), 0]); - coords[key] = coord; + mat4.ortho(mat, 0, EXTENT, EXTENT, 0, 0, 1); + mat4.translate(mat, mat, [dx * size, dy * size, 0]); + mat4.scale(mat, mat, [1 / (2 ** dz), 1 / (2 ** dz), 0]); + } else { + continue; } + coord.terrainRttPosMatrix32f = new Float32Array(mat); + coords[key] = coord; } return coords; } diff --git a/src/source/tile_id.ts b/src/source/tile_id.ts index d363b888dc..408efc92bb 100644 --- a/src/source/tile_id.ts +++ b/src/source/tile_id.ts @@ -93,8 +93,9 @@ export class OverscaledTileID { * This matrix is used during terrain's render-to-texture stage only. * If the render-to-texture stage is active, this matrix will be present * and should be used, otherwise this matrix will be null. + * The matrix should be float32 in order to avoid slow WebGL calls in Chrome. */ - terrainRttPosMatrix: mat4 | null = null; + terrainRttPosMatrix32f: mat4 | null = null; constructor(overscaledZ: number, wrap: number, z: number, x: number, y: number) { if (overscaledZ < z) throw new Error(`overscaledZ should be >= z; overscaledZ = ${overscaledZ}; z = ${z}`); @@ -223,4 +224,4 @@ function getQuadkey(z, x, y) { } register('CanonicalTileID', CanonicalTileID); -register('OverscaledTileID', OverscaledTileID, {omit: ['terrainRttPosMatrix']}); +register('OverscaledTileID', OverscaledTileID, {omit: ['terrainRttPosMatrix32f']}); diff --git a/test/integration/render/tests/projection/globe/terrain/fill-planet-pole/expected-windows-flaky2.png b/test/integration/render/tests/projection/globe/terrain/fill-planet-pole/expected-windows-flaky2.png new file mode 100644 index 0000000000000000000000000000000000000000..59424b454d968748155bcfe94229feb1a87a9ff3 GIT binary patch literal 44092 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�sU-9vHZn6o9E`Q0dvd; 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