From 7b022a9896826ac586f95ebe3a687e3e08a92588 Mon Sep 17 00:00:00 2001 From: Thomas Nabord Date: Thu, 9 Jan 2025 12:41:33 +0000 Subject: [PATCH 1/5] Introduce page to display in case of HTTP 404 --- classes/UpgradeContainer.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/classes/UpgradeContainer.php b/classes/UpgradeContainer.php index 17283b6d7..77ce66084 100644 --- a/classes/UpgradeContainer.php +++ b/classes/UpgradeContainer.php @@ -980,6 +980,21 @@ public function getUrlGenerator(): UrlGenerator return $this->urlGenerator; } + /** + * @return UrlGenerator + */ + public function getUrlGenerator(): UrlGenerator + { + if (null === $this->urlGenerator) { + $this->urlGenerator = new UrlGenerator( + $this->getProperty(self::PS_ROOT_PATH), + $this->getProperty(self::PS_ADMIN_SUBDIR), + ); + } + + return $this->urlGenerator; + } + /** * Checks if the composer autoload exists, and loads it. * From 35134fec13aa28c33aafb7425c23697529ab3670 Mon Sep 17 00:00:00 2001 From: tblivet Date: Thu, 9 Jan 2025 17:59:50 +0100 Subject: [PATCH 2/5] fix: auto height --- _dev/src/scss/layouts/_error.scss | 28 +++++++++++++++----------- _dev/src/scss/layouts/_logs-pages.scss | 4 ++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/_dev/src/scss/layouts/_error.scss b/_dev/src/scss/layouts/_error.scss index eaccd52f7..b6bff18c9 100644 --- a/_dev/src/scss/layouts/_error.scss +++ b/_dev/src/scss/layouts/_error.scss @@ -72,18 +72,6 @@ $e: ".error-page"; } } } - - // Handle auto fit height - @container html-block (min-width: 0) { - display: grid; - grid-template-rows: 1fr; - grid-template-columns: minmax(0, 1fr); - min-height: calc(100cqh - var(--#{$ua-prefix}header-offset-mobile)); - } - - @container html-block (min-width: 1024px) { - min-height: calc(100cqh - var(--#{$ua-prefix}header-offset)); - } } // Enable auto fit height @@ -122,6 +110,22 @@ html { #main { padding-block-end: 0; } + + // Handle auto fit height + @container html-block (min-width: 0) { + #{$ua-id} { + display: grid; + grid-template-rows: 1fr; + grid-template-columns: minmax(0, 1fr); + min-height: calc(100cqh - var(--#{$ua-prefix}header-offset-mobile)); + } + } + + @container html-block (min-width: 1024px) { + #{$ua-id} { + min-height: calc(100cqh - var(--#{$ua-prefix}header-offset)); + } + } } } } diff --git a/_dev/src/scss/layouts/_logs-pages.scss b/_dev/src/scss/layouts/_logs-pages.scss index 2f7314d54..44f718818 100644 --- a/_dev/src/scss/layouts/_logs-pages.scss +++ b/_dev/src/scss/layouts/_logs-pages.scss @@ -29,6 +29,10 @@ html { // Logs adjustments .logs { flex-grow: 1; + + &__scroll { + container-type: size; + } } // Page adjustments to handle auto fit height From 0ea1c465c4b63de48c719b98e5d21c13a25de0e4 Mon Sep 17 00:00:00 2001 From: tblivet Date: Fri, 10 Jan 2025 16:06:23 +0100 Subject: [PATCH 3/5] feat: error code with txt --- .gitignore | 1 + _dev/package-lock.json | 45 +++++++++++++++++++++ _dev/package.json | 1 + _dev/src/fonts/Prestafont-Regular.woff | Bin 0 -> 39844 bytes _dev/src/scss/_fonts.scss | 6 +++ _dev/src/scss/_variables.scss | 1 + _dev/src/scss/layouts/_error.scss | 23 +++++++---- _dev/vite.config.ts | 6 +++ views/templates/layouts/error.html.twig | 6 ++- views/templates/pages/errors/404.html.twig | 4 -- views/templates/pages/errors/500.html.twig | 4 -- 11 files changed, 80 insertions(+), 17 deletions(-) create mode 100644 _dev/src/fonts/Prestafont-Regular.woff create mode 100644 _dev/src/scss/_fonts.scss diff --git a/.gitignore b/.gitignore index b82207ae5..65ebcc80c 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ node_modules/ /tests/UI/test-results/ ## Compile assets +/views/assets/ /views/css/ /views/img/ /views/js/ diff --git a/_dev/package-lock.json b/_dev/package-lock.json index 4a741ed33..6426e7480 100644 --- a/_dev/package-lock.json +++ b/_dev/package-lock.json @@ -26,6 +26,7 @@ "prettier": "^3.3.3", "rollup-plugin-delete": "^2.1.0", "sass": "^1.77.8", + "terser": "^5.37.0", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", "typescript": ">=5.5.4 <=5.6.0", @@ -1640,6 +1641,16 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -3395,6 +3406,12 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -7600,6 +7617,34 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", diff --git a/_dev/package.json b/_dev/package.json index e33f99b83..10ecdd4c1 100644 --- a/_dev/package.json +++ b/_dev/package.json @@ -40,6 +40,7 @@ "prettier": "^3.3.3", "rollup-plugin-delete": "^2.1.0", "sass": "^1.77.8", + "terser": "^5.37.0", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", "typescript": ">=5.5.4 <=5.6.0", diff --git a/_dev/src/fonts/Prestafont-Regular.woff b/_dev/src/fonts/Prestafont-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..b240cce1ab9bf5e4ee118c5d6e645d2050ce1c21 GIT binary patch literal 39844 zcmZs>b8u$O7cHDjY)))UY}>YN+qP}n&J&xHJhAO3m}ufmj7f6m{e9p4?{?MdKBxEE zRlBS9S-Y$IcqvIrDyge0fq~_fgCT-}fq`SC|LgysO-xdf1PlzO7z`|+8Vqa}kEwUD zR7zYz5)3Rt`k#Z^KiI)W4hDv33f6zZlFMOq{{Mpsc~bzLEX2Igm*o6a3>q{}1oV zV2&mZ7XR$~|K_9rjR`2*$%4*KZtnlq7XOcf@ed?lMPUD8`xn+b7??M>nX$RCv9Y{d zog4!Qf8OanBP8b)3IcUU$ngVQ@+;|Y<811bKEzQA8*_*_cv%l}f1adQS*&ZU;7HG zfI#TL_gWjV44{_mABUW&zsLEiqjrrmo+3G2N$Nrh>Jk@mWwiF)8ijTimFLWZ1a22B zt?X=vDO8k9xJNk?2&r0$d{jRCcko9NlWxhUl#Swr3>!reeez9096p|Rv`3qh7(J6y zCz*?WQZ#+}`qQFoRO%B2#eHE$(!UncVJZ((+0! zCn}{<LxraRcNhh&tzTr>;0cpGTz5jND=W`q~qT4*7<{ zdqeP?em@Dc2z0u3Dg32F^u2wqzRVWYDG3i}ovMa*%|yGHc&t_2an9&-(z?*Kvp zTPU*szqzFOA`}%8V)6JjF^EfFBaEhgO9U2A4;}G8yUCq-{?DINKYy-_Vh;WMxsOzW zdx#T{6Uagm0u3GcjED$t$ULAF9r_Ij4sE!qHpB3B%FN76$6O8;fr~3Vf?b&-EE^Jn z4`xY?Wa!V5U)r+TXa{1W(;-$NvC4GZ`)P@H3?dgVcS4~_VYe;@~7Rb0z= zTarvbul|J=Eg60gCj%TV+pjVjp2RL&_=B66<~px2d7O>1E`aVs`~6Myxt<0`><)p% zGK<=l1b+-Y88fH#-kOH<86`8idU*a~(F8ao*Yb%4kz0fi7#N}`5)xW(a&k$zozuda zsnC65#3=g*af`_WALJc!3&Bthiws>o-b3)5+A}}{uF8;rzpH<`I3&NuA92YTO|-H; zt{1t-C+r_n7q>&Qu|$$OjPx@H&O1wIaqld%_DUY{STlun5s*liX@8M1&MhL7)W4I`Vg~KlA9|Y}3$ z$zOSDZ~rF@|H;B`-x*H(;r5E-I`^r6FnDq>0y=n?F&REs0d)jT^9H&U^l^>6!ue8a z$3r<&*a9`Gg}BF}`U6_n2s_XQC}u;(P@dqPD#EH?IpNMD){p^ngmzromtF*~UP5bV zQR`|eCTv_xx*)hfvp~1N#7x_yYMk~nlk^lG9!wAOkGX0H?Mf*Tz*>swtr@b6nxQu4 zM-P|svm)-bba_r2?VYFx(^cGQJ%4(Vs)XSfSK%R-VH}F#5FH5=JmbZEiXhj;J{!7}v+-!N@;xjKQ0rxWRXZsPUqGOhdFG-yk3EX`5y253v>Km%r9N9(sP~-P401 zA{q+nPB$giWt2$=Mi3-qQ)g_n}rb~zx;|40*6GGXKx-sQzDZ| zH)bWz873Y3b6NC@swGy2pcorMXZ{CgQ_d>=G2FEEust$s?s1rWi?N}knFdS*R^zeoxqzy%yDD7zU>-^=F zkU6$gN%WFm=&s!P2Zxf67^joZkPoAC&c)6??J4&(2cv65&WtJTa?TL@T2p2Tff=3O zrW!1Wt*i0>t235hVP9_lKK3RsFxoKi#eaGLIRs%(0fq^=kQ4MTRfaY@99B3(xBknT zD`y~5r-(;jQZ@rg_j&Uoidh%rf*xYcZxb7HFt+WfOEE8vQAcoyjo%Nw&TzKK~i7zp@H= z3#p#&7GOZ!arKj?bPjt~b${ZNC`b}E0`R4?O7U*dJFz>qO1^V-Fl9Un?k&*EEI!jEBfk21< zF`XwQ`2$On^KG3gC|;hv-k#vck16tP2UPfC9r#vv!up0BJKwx2!8ofJH)iVK%bURv zdp_2AD7~frhr~>NJJ>kOWUGVe$Yk`EU?{43t}>1-@4tMZ=k%dc`1&PoBE~rNKCrZp zineD;s(zRB)ifgU0I$P96hk}*kqIo!b~Qxfen`qA$Eq3fb7ZkWZ-wegJmihs53H?4 zn38ZxlZ@cIavBo}YB&U@jOf_KYO5ONz_=*_CmI`>YSM;1qM`<*W0G(0?y?02kpw0G5=HaXPGwexXa`SYpy_Zhf~nx6eu zLWS)@g{|pTG~0zZ1)l49q$UUz+7pKxm~l_RWF~g*Ez8t%Ia>W0b9p6F9gyI3k$~9f^faAkEjb{udak&cV9vRa?w4XET!J+&XG*pVUq@4JJ3C1gO_>cnQB$Z`e3@bPl)EHL zq=yL_K8}(BR%;3+sTt|LwG!bPbJ4c`A!b(gn1rSzzd05Hb@r@2o@+s#esO}gxSnp@ z_(8q*6rv)lCO=(dD>bYtP@M|CTT7_%HpezqkJX!tAi^Xa?ZQp1G>&NQl}R`_dVPjl>kA zCA~_9n@|~%ye`F6Ap%4oi)EFb;lw(jbhpG#K z0_#F93@Hkf84TImBtB_;KzS4SLY_gS8}e=XehD81q;aN6H~F?3;*{D#nW1Ex!_H`9 zg)ZHbEsVbE!ME;pAvO9{uL8|}yy<8>#c8e&)~#~2ocOdwOC@8Ij| z?X_%)k|giywX^q!_PW`>_N9Bbt)R8b8OsF{yf^L+KKDNtdC>Lp$WL{W5hz0-tA{O~ zkCT1Y`iV9m0w)#fAv&v^&CJgk(Zi~0kA~SrSYWy6ecKMVRbouY_7u<2hHT7b#3UhJ zG)L9=!&0oQDO$0mh+IQqwGwHoSvbe>8&mHF z9Q{SCu|dAz@Y^_2u?cX+KqN%}HG@C_?sR&QG7%JlA@+@DviY{$qdNHDoQD9B=T;s0 zwpo_p(PqLty$0jt=%P8VYzQEwH23^>V3oGU_%Sh{3PhaSpsGL)IMA*@VNcxegKF;`Z3W+v*aEFeRDPub}JnpIJXl6|i2z6Y- z=YO^vbE7)kNdAelOiVCz^+aYqv4s|wFw%^S!>H@TuQqV+0tbaUP+pgW~IK9S?q zIDW!7nUiOs-S2u59wTOnjK|4+m?yK;1;**&u={WYeNdkpftYBRd@EH>l5-Bs=#eQu zXT^-$fTuitxleQWO-H-l)1F0<|B70;Mu|GDrE^r?lD`itnOOZ-&(nP1v%li(r;sbu zylCDg{0E7r!hv7Z84xmm%WUtj|BPh6XkN@8%~s4%ne2vNmB48F@9T*O)v)rYO8MJe zL0RmL5Md&WQoS-LRh#^l>gKl6IljaUFK$&8=%PG*k;(UFwwfKg8a2G8ln1soS^Dy& z`r+y9<)|$S6xwZwiyV)NtD6(k4s1Fn4cG5#TF@bkPbamAHti0M*1nwQ(dtrByX$jh z6%={Y;&5wFUl#d|Dla;RCNNS#TSLsr%d~wX&iTgaQ#7e-%=IOx1}9q+e+ho<|Emj^qbgc|Osy*mTd>voWFZR5$ek(# ze5S8(XOD-MRjqvzM`e8?v9{#W@A9#xk8#^yRygznoBW(K7zzJ2+zNY?7gPBNmp0tQ zbDr~j4su)*Ba;zkprF`4jQ;JogUXA15e>tv(e*dN4=4ex-?8xN-5?N3Okmr;X>j~j zBk7;*m>nwxnNXXjhJ6a`d`RDBA`NR^l=_#|P`^R?$u{`o39PuJSUqa>A6#HNW) zY%S3nyJ2!=dhGT;i?8V(!;wIZN}6bk&qR&Hu-CX51(|{5$XNniXoipKJUb6;HZ4NC zJlrZR$|%--=Tn#6PlzaQb{!~s5KfD3cm7F`K`s%$2gu@ z#uKvHwTWcw@=g~tIJ;9v;uGxeqi~&*q(qpp8ejs^{IiR;@^||EZjP8`CRX;Hc12(e zt5Cl;vbT+vwe&dxUdkB>hVTT9^9J>N|AxLtwYa}TQP!d0*6>Wla8Ba!+PyrasE!j) zq!1`YHlLY|&k$Ik!lPu31*YtkDI&t@5-V9qp*ZsU4HF`R>l#buj@-QXM_{vYsHAjl=%xb@q%(_K;$|DFi18>V$CK<@ilTOi8izNWdw zFJ9K{nv6#ti}2c2+tUD-gm29>xs_;Fe4luOjZNHn(4pd39LTkz;-`KuhID8ZqL=m1 zs>4?VthCPf93Z^sku=OK-|AKt9JhT>4dmQD>k-!D|Y8qoxe0or0^N@X}}~pQ<(V?v_p3B|wf2#*kpvs2u8w2&A@L z$wg>(NhBQBrJR57%cAPh%0Qu|YA@0G+TmvrK_9y06+F5#&H*tK^ zBbk82;Gjs$3Ds3L#!p1kL<`B9J(cGrZINd35+wn&lc@@jIhg|BKl3*8SRM2Fe9i^| z#*n)mrN|Z}ZRMm9s?Z9oetGf)A&KV(&`?>Q3mmJ{f@|A%^iFlZ%p6N+dZrH=2X_fN znT)z|y>lG7wE7hoR>)yPvP~Gq6oTl!=gks`q?6X_3c)YIMNmChSM;!f*zFwq0lVup z6~3FPp{TKlMsxx!bt=cjxkOBHPNY9ibCsH%SX$x&V$UiDQJ{A21~)G=g)H9pmd5xL z@ozS1+jG#J9Pxr51AlPH*~N*kzvF={L^rY}trGvP6iNLdUxUWTY#a2WkUz<{|*fnPr zvV)lLI7r7%(&(2TI;~2n*r)30o>^!T#Ki`vBulLenjQ8V`e_>vKXn<|5-MbR)%!M7 z^N8|eoM1ZXd2{RR_Kz6Tyor9pXdi`WUeoX4_Yw+8jYw!iPd2M<&~cFwZC$u@hYGKI z$*zXnz+W5kL(pJHOnKG!By*Z@fT9+6WWnojoW!I08BxolRskpGS!=$-suNnmpYTQ8 zUOtyEQ!xj2$(PnbAYj`}0F_{)n?fOhMk#_SA(AW(RZQZa9O=eFpT#tEqBz`PiG;(6 z4LngCTKaFCq0|s{X&A(jPDE(mu0Hc|uaijOmKgw4`-d}y2c4n%8D_Ugyxs?6HZ!iJOu~wnfxC<;R zNBO1ZgDPpw5eYOv|B`uOnyQqE=9V8sdcQ8a=6#+t_rYcy6aU^9PsXm#F0L?#7+A*6 zh9OvHWiX*+NNh!e(Lvh}bf4!F%@L$3Js^ zTo-s4!yVQjNxy5>=)_$DJL81K)IEO;yUosYe<22GS{)VG`yxbN&#iQ**fx6m?*xH6 zFO&_*wG16mZf5@TYdMOn^fF6{)!8ypxU~i;5|pRYM!03ucByn26grKK-c``rcChWd zx!39!O`t1UCKU)p{0iak&eDtsDDN~|E*ir|?`=Y0`0&HRFZ$tF9aUHG@S3vIg%a(| zSOS%g-YB%CI85#^LaZBfyDaoua73@sIbUsmgReR^SGFukLV+_BC0fz2^NM-cc1%@G1!>OItDvSjF=EvPp0JAud#kIQE5B8|Kq{k5>ZcJLupa2es zTFncDiZFi1p1JdwLhUIIOrg%4upT)aL+%_uv~03{lzDg z6zpkD+E%<_xoqStUr06T29EiZJief4Y6ScQzCTp|TK?9T_?N1OhinA@m^w^QJnnZ% zLqo~Xhe733&qqe(^+%YoJ@QRDheoD`hUc9(1&X;h0%4Y^E$Y#}l!$`*D+!R}o>9n3 zm^i~NaI)kKfj(CbCDS;g@&jkBJqQ-ajRvI9d54UAFWOUhZnx^8SWvpo;#GP$Z-w~i zZsVJ@D+c7jwzaWCJ$8S7>UY%c8FzH~AQw~gB}6ORD8*{&T-v}v>plb!N{oSZ3#|o~ zDmB(p0a>Lt;fls@JkR1kG<0SruyFepetWc>a4(|6Nt*G}ybN^VWQ{$u~V%_e=h)* zFO-PKI5Zv)%UHZ%uVmVWZ{BPXg#3O(e5>$Im9ZXJdxQEVLv+JGx?7Ir&j;vkTm@+^ z{BkTio+C4Ia{jO^2Y0Ossaxz~xctiZYdw#GuHnGTJYivDYn4+c=+eB=w8DZ^?Jp zRz}|e8}X5uqy0B+Ip4S$-+}4k=gAxDb~B&@lY9b~T?Q){=$!l{7VBB6!4jRpIh)A$;S<_uzOa2`&si~<8@|3hvJdN7^a7n=& z`gSp#Jp}P<@)$p9w-M&bL!bY(ugK?G%II&3)V7zdzD+ZRK5PB`;sa?o zTG*=2XM@p$MzGtzMbM;m%n{(g!JsEb#}x2>?A3Qim_=+PIM=wp>O)`(dU{NT3bj`k z^ox}s$zhLG3C?8!1T6Cc*7yN9Ik~}>sr!g{hZ&F1?kw5>5y((#9lbmpObt=+D^Z2~ z49sCx{9lGUg8?~Q*k8A^pE*!xEG4UfswEsJ)dBp`)ad0h5Acqj-Sh4A+X@DjF*2CE z5i$oO@}WBnXV?tQJ!KbxD_R}*oe=fKBJEia~kp?;>WmmT>A(v^DcIPo!gW}g05 z+%O_RR&vbxtwx&G2!U^k8OpSk=j^jTV5G{i;;o7Dt>>b@p_j3Cd}v>2UTho-NL8h& zIVeS#o0&iU-a2(?sBmc~Jb+Di=b8oKtwYHpz_W6IOJjA1Vqgzrap-RrrpHMr(2W@; z>2;!uo+zUAryj(j0&7}+ub9ptVMA`r0dD4r8$H!XzLEF(nX~vLmXbhqeJdd;)93fq zNb(xIuZx1-Lye%2l5Hv|fR=$HZHtCVg03D_bPhc>yCK3U$#FG)-v0zsb1M-nlZ+}M zPU@o{FU*Ppxe`!!i5`?tliH=qu|=<#N6QvBhaMvg*eFx8>z12}cj?fr(mBK?&l3C3 z8<)WNB)4&8wn~XnW2VJ}P1`Y{L}Q-V>zW+D8KkzU0Uo&nkFgQ27?VLe5AiJs?TcDs zuT^`3%rz@~7=epX1KLkAL_;*oic+%IEts|>wOVzE(CTGSvD zls^6y>zJndx2DG>*jAR@HB7s~TI^(e9im9t%#C##VItBn=nMdVe;VP~s?~C-%UJ>i`2fAj)MM%@ z5s-zB54@j;H~7gD6C_$XuTM(E^u-gUwG%8mw5LID05RB-ZZoILW3C13ncl1_cXd21#2&mO zs*2ItC70VW){{LfoH;Ee)*)d#`exed7$rYFXX=9~Ih0Rt?0Z@N?RSK`>l&wfm#b8o z6r@eYv8RwWd6LbOdosoJ`yQ9FvUrShoPl~$J}lMgW-+M35` zbNvOn*7CvRf@&Rd52epe#|rcKA!d=dypl2-I>H zA;`GS@cop<7t(}z)a1c%7JnUmGK!QU_PIt zsy2QJ0{kC#i-Ak4vRyD$>0#7GpB!Rjrh*NtwsgdS^U1H6zxN;B;vkj;G=yFKFF+8X z;B?z25_x0X5F3wf;}*h&#xO;}ef7+L^s*N&qi0MUhNK%pDG{nWV%p(G|$h$-8q_;{z5| z$k5}2Q)pjQHaGJ6d=T=)>PB3bM8PjcOxzu9tsESRDZ6Kwr;W8RgGW3CZ>pVaOt7ZD z=ekH(K;7umjGhrUPOHszGH_wX{P;yre$%$tRg3}L1RcjCOV)}`&Pk_Add)aRpGEb- z5T){LQwo9{T|~w>C8`pUF{k1ilA8KG-tqePArR|d=Ae@ksRpM<94?2L_dbVXAn_c^ z4Iai~=SxG~G@y+y-mKoo00qVD(4|)(43(XeeoeVPm9vUJ0jk_ozjdAS-W%zH@+ejX z9u=yqg|p=p&OyasjlO0=XK0_mOZT4A?{%Rch>$;!ZiHn7Egn%*pHY9`0=bThNtM>z z5)Gag+{Qb2+jsb?^L+iIu{ zwYQRPRhA7mJjQacJM2=pTculS&43O+7qgOxk1a%;Hh@6PTv4-{n5Z5N0uY zBjPkMmns&WqepP(6Ho1IxJjs>MRa$abnD_5;o(evfNGjj3N<(hHJ~UOrPb0LuQ}SriGgq`mM-i= zw#40(uzbQR>oq(OpNZVm1dJiW3HP(NJY5zf-&EkcsU^cHc*S6|N}07zsHsi2Y{y5_ zxlbr$@;7#{^$rmc5bT>Bru>sm2coZc0CKwx+=n0Bt?&MV^XnY7X+M-RT)`_OG(Zd; zPZgP9#=WhcH_mI<_v=Pz17r=2g4kS|q9gh)0A9TPXyB8(k}F7sQSqz1KkG}F>G%od zt=+dlTw*xcs;f`bb~ZZId<@6c1~I3cOa*T*WHHt`vBX`B6hxJp-?QJ8s=Z+;);@=x zlhVqP-V3j8XUVF|vL=SF7L6$(gC;NTFu;XVAleAiWR+cQ8o2mQp>C?*%O#&+2o(29 zl?$q7volPaRb13BLg9rX}PfTybmomZdRX(#_sRXROqA}%AT zceU-Po~Phx7@zL>(eVm66nYs|n)cEIoleo_mf&cxaB|!C#f$AJu`(K5eA+GwW_BFO zNSm=T@ZrWMqnFSZ#Ff@UamjB4K@pHnosFP)^YoEVZc9$?PbdD_6Vp z0Bn%W;93Bv>JB}3ikz@2YjyXD)OH<)IJ9#~^6q+yRw?SZAV9s}d((Dm@uXQ=JS@|O z;1*?05)7|D(s~bZ`g>V~f2l~pQ;LLzn=A3n%(|&?T%YaUf3`H) zhRn@Cqhnc^)tla(%BsTDf|{`AcPNy=VVd;i%KSAk2G;Ysna`g;sQsE9rP1*Q;ikyR z#wB9;iQSb7sRXIwF_tj)6%D`3*tom(%O;~=0oYNi#rE-56cLrdIlG%$y-c5P;3i`o z^ggTV+MU|t`cdbx`82NnU(*m0QScpxuZsKqO2zk>GF)oSbta2t7r+pA^oRghSv957 zwY#PFs0!kKw3~+`tFLFK&#D7Lb<7h-dafJU=dlNB1wPMz07b&xs5lnk|7~0V30W7OTjrjwb;sT;)S}H0aLe2H({G1e z)e(jfK7QD+l2{RGZdVXXAJnK6Q`mv`V7XS(A}!*GqLr0DXhqW(C%&ueI7RLvr}V2+ zo2KVtQsx0G?K_@8x&>Ucbx%?=QItvuvDDAak_O!U3dQ;>>d)r^Gv$rF49E?hZV7SP z2tdGf_|K`9K3-}}w1{#$d#d_u^r#HluMbz$Q5wo`5{)P%0%L2mJpGRYA>(l$TL^2K zJZ1(B>`w~M#EE1K5}eqw%&BTx?JBP8)V$x@%A_#)Tt~$nH30U6mECx`a4i`sx8Bv< z>l#csf5SheM9?U0j{HBpqYrZ&##2Rr^};h#j0shbl-3MJK7teaEEPM<>vg0_H--%z z6Px^@wk!m#J97EfsjaUFgB z@-5pkxsnpWl

C7U%xfT|Zme_xBUrvQzK7bgBPKKg4(V@5$Lj0is-SN-~>Nh{>d? zsch*~dMY^V@kO5i2nmbK`pDNwIf#mM*%n%>(p1_;17yi(0yQ#~r$%JUMTaPe2C}qu z&nDL{q9tjCiAvahYYA8 zSE?fB{qR2XTD!vYjBS_F^YFQ857d-Ct+(IxOr<-yN|eI`%FHzmGWG{0-p;VllhVO! z&Ga0)7dZ;0WM2~y@1=+ndpu8+Ink!FFVQICs^{S=%P(CmJT#D>=;0rW+>oK+T<+A0qchi(knj>ededCF9O#nO}_6Wqc)_L;V`xthn z+RhkoiW9SGnXAT8PM^2s&#oEjV3KY>V(7|?$n-9^@T=1~kJ4MVa2gsg^t^7+8NI&D zx+0oxT2P}>Qp^fml^gm#Tw*kC!>#-H{(vyWoUHhBj@(M))koKTQa`@db5@*5DY`%( zVM?{w9oH*67Cyt!LQS2p!l#}a!z0!mr!=C=|52lYQhp*oPtn8L5^SEh3hRLRjp7V* zLRZ6DaW1&}O#L}iEt2j>gc+uds!fVL--3WOmMrUz7-fH_hpp(|&vckL)?%9BG`5Tx zgF!mDUTGdZxEMaDP+C`;4q;u);RA9A6U0fe2rt`)=F&?hpKiOx&dx16l!5yfP|^S+ z(9tbu%W=<}1w*m8ma_C`pN&43LGk^|C>4;3i+Mx9GelY18O7sl;V@XUSJ%O=wOHCU z$xzS7s@g_=8xC1#WVyZBrIei8#z3^6?8&ob3a|z4(pz7lqJd#v88f$_F41lSVM}P2 zENpX~fdMR_Uqt1pZMNv03DocS#${^SQYVAnc2ui7y&9rV)r5aiY^ItpV{lu)Zg2%i zv~HxYim~%v@%)7g;I2T6GZ@Fon36d&46|(0RP6EoSjxmYM2}0O1Z;KGHPy3$T?((M z>(trh&CqtA#6oF#2xt?mkeQRkX1{T6SfeH;<7Is=5N^zmVFG72K8;sbQOek&v1nZ^GbJny zu97NBnRrpbK||1-@1(>ypA9*r%trRSoseOyoc4RAjd5UxxqMh2yyk7-u^OhDmEVSA zYfS&1f?^34i<4YEo?T(nCikhiEg-z&mzrr74q57jX^DOTeR){#s&_L1nkA&prZS>p zUN?A$S%a{%(X$>yj=fvBy#1M7OEkJ9DjcS0Ziw7XvlIJu*i>*RD+ghKh%!6oR1Cz?VuyuFask>1)objYz;39JXe-b!iBYk;wpNa}ggMnk-fn?!r7|RB(*E?5g^&7 z*GD_trFG7T6#Frm3gl1fmXGDuhN~ForkJvmAh=*@pKj<+i*GAI0e`ouf^Wp+B}u9S z27L3ZBrO(e(&_ndk6h5F5l&h~>~9jCwbJ zp36;U`o|$DU;FvF2T0&ICHN})jt>(m5nWU*vihLDnVa=SCVx^=@M_X%;-?v%3=)k5Rw)gUBcF+Fq)&hSjBDbqyW{JcFdgLrvlg zk5UD%7i!zU#wI*N8Wfb$fzeZTuiSer+w5{l8o7Gi(#(squUC`_W&2oaoQ7h=?*bJ< zFE<7_K-V!B=jep*SR{_}RJf)fEbOBOOS>olbV$y4>(~jTvVV`*@>vp?&H*P5IGm=R zW?pr?cGfo+hDSL~6z9Tl5_2%{<}cMD>G)$Ze#@j}1_CecOeNu64o8>mQEt*@&xg8Z zh+VP-Fo%@M(f2tqYjac=*~`f5ehXLl@H(4^$DpNlQ~8!@=7PS(C`wwLvdryzKc4_7 zYg&*gX%*DsFBs5w>byjlN}5bh&OB~r*x%5aRDq2_7MzN^!)O`OTA?Vhv&y!oP`~${ zrhV9q1SE&`DM9|PsGH5`;`O(xjMc3)5fFm>&z1Hn;nE`PMm%91qC9n$XOo@gz9|%( z=r+xWn&YUcHeLJz{+FbX(eC$-&@_>1n9EQ^w*9VA^aTn&@yTkQX8wX|s7chmw|0>c zP&QxSz4P-f(g}joQ^s~LJA)7YiJRfB8zX_VTOElF&OfYDQ2f2&h#VBwcXV(SX7Lln zks%@Q8OshRn`^PB`=X z1o9FVcYttm@Lb4R61q46&O&u*6`-%}uY}9>lV!lDv0KvvO5FW+E227KHbnl}6_=Zd z!vP#}i%|DOsnkt*4*HGdt#&JBm+zlu`bJxM$e8P2-&+MtgR=jg4 zS+GHZj?)`Yv(9Ii-3NQ0U38E|t`XuWc>#mZh3^4RcA+eqgV$E~Gs%&awu)h^GH0LT zd+&XH{g#lZXS-IQuLndGl2e@!aa4T=IjlN8t-2MMu*kL|FSo>}Xl2fO+vkx_g`CyZ zAyB{Dc5-21cbb6|FNF^bUwYo&=NO_i4n+;{vgz}aYUjQDGBtcewS6n#;uF6Wavk+h zy}SIQ^JaiDEihZWE`dZkYG%Uy26)rxs^Y+gK|5*4fE{rpL(#SMwSWEI;+Jr1-mD`v z__Yf{InpuNEm41{a+(xIn$jSx1bG>4_8k8b#ydVcHkxy7OwC(N_uOmyIzuE26@pul2b5ZZOL&{>ZzIY1{Xkv^{0&l zw0jh-O9;o_yuG&tnz73_u&*>PJLwiffLd0GU`?vcu7}dKUSqk5j)@2fv@bIW{t-c0 z4F9nj>u+2+pFoLbp2YWx>6VwVpRs1ZpN1e%>bs*{)6RS)WVE7p!K`+lydO7OvmqFuoEx38Mw__jkK1~tsda`x^ra+zb-Q2EZ&vQ3$q6Rva zg?Meyd-XdP@;fXg!>psne3B2u*l(I#wXi5#oo=l|=OB+8F}Jv}-|P;h%%GmUk3TA+KW$wz^*|pN&w|{oIew>@X5X(J z1%}S0$C+vHJ68KwKhiZS27GYOY`%o9`=ttJ<~m4hJu3Zf{Jz3kkVOYaLLVZ%EPy!K zR3L6HeMYrIb;3$Cwp71A*N=q<=|c48N>`~CBKNnM*ZO?FDaYX?pdH>QhAy7O%D7Wc2C5&? z4TaMT#l3p0>ea9@E$%n{*MnAuy`?()V;?BJ@Q<*KCNagWViC-L$Fz>y9gP&LCg~;) zc42mvaEnn?lj}Z&Ha`yKy=0^Ww{JeLKZ(t2XPZ-3YnZQYjG(}^4Z?nB$agZfjFLCl z0*T)SF4tAYIws5*F_zXpCof&-u9;sW0gnI>kHDYd2u7ebFx5a$_K%FshiIZ*2;N)= zQPv`gr%bbGiLS-j^QXL_l2_(ZEAHw3Zz2YfjNeq-g8c(|hVKph-;IXxIXRN2(#437 zpwn1B=Cmwh`Cp8F9=v~fa{?BzI=drMDtMRjf+(Yo7Wtx0ZF&Mgf-(q6LC3uk>jY)n1I> zvEpr|=lcb*M>Jhg#orW!ijw+zF`rktK6VLESD4gZ_^Z2msd)O?^u29R?D9_(^z6OG zD9)z{G6;X531|mPN5%>o&XmU#?#LhoJ@vYEBU>RUQ8B1pFIa93EEFnYRh06XF{aXm z!;|(uIq>Ah34n*5HCUM4X{jPyV|W&HuOaqYZ@GR?zu%0nb>e zF2`P1g8iDlm{|zQ@)g08bd4*LR!2-(#t%isLcK9}9?Q*0L8;zR3zeLq)IwiIVg(8` zl2kIMOl3eKK5E1#mtX;qtj`Nx^p3RzpiLKrt;niwK*x9=PIJHt0js9lP?HK&o41M* z?KgTpJU8fvm^?=7(b0X=Gb-X*XV^JDn{mXYm z@+^VCWzgOBJ*J$yi#z()$m;ltyb_yWkJ8TU@ch@_KdMrvY#jpV#jCCD0 z(fo;v_vTdf!;TE6CKCKmis7qXOU(8dr1k^m=B0-NKM#LF>Y zx!0<5X<8@?t<|&w!WYFT3ptzqZQN+?4w$D2tCTdDE>~8{&Va&@S zkH}>X=|gWfJ+7A>QluepTFJ6&*x*Dno9OT4-C$RS!8OGE_126rwKvP)A?}XA`sfMk z<)yiU++DVv`+-8qilsQdWx=@RvFdliAz10urH#3{EJo9BJ<)2D>>zvWIqHn;EgrFG zP0IMwg98ayg$s*17K7hPgRjl4kfH;z`!gbD^n%^`sy(lELBQ@eY$NZdSuZ2_({FMN zjN6q$L7$hS#}cDYe`$RNM!fzUdv6-zF=e$3+^#i!0?hLNM%?^O6MBOgI8+MwL;Olm zUiESa;4d&v8?P2VEBp$7N$yy0f|{syI_SbOgy;lNCcPvy zcU+W2*bXJ*t0?fWbMUQMt3p-M-fxmY6B19BCdt(Q>cVkZnzdd&Ld||Hf_yw}xuP5{ zzjC#$P>+tWJMOkw97m+AHVv-Y9Ho>QHhnC`A-tJ8)Mht-gf-n&le>Z~|JJ^mOiL-~ zD{b%o((CK(1Lj)r?cY7f`xwm55q^sjcI%^RSRq~~*XPLmkr~@iE&4TblKG+L^7;0s zbEKQgvt}MAQBp%Am*VnHNO1D!IoI*8xD3)Rhl;AOOYy2?5>epWCSr-`tWH_^dS7_O01jwTq%2D7-#^^Eq0i+V+;IN!d*HEn+2etth3#~c-sl3kV0VXI3JO6H`=I_ipB;s{ zuqhOb4nySG?EOWoDje?{+1~Ah6@LbVeI|zU0<`WXJzZA_u$Lal!8UA8eMacS{{y|^ z(Dvi1aZ)W0jY7NTK_`fAzG9Z{`5YoEr=sBfq&!0=-`_RWxVBs~sh_-T^?psloT3A28y4!v#JhY)d`|{<0qNJWlgtW+f$_ zUootF(D^nSv!N}7Mi!M?!H9wa zUDq463Ln=(Gn$u_i_c!0!OmEf4?P1WM_av?1}>)h-47>Upk9*&cYL;GtKTfhw=X9{ z*Lt`q==7S4z$HV}=6Ux0W+rd4P_Gi2EW4Ig%N{BIh<-P+Wz7N?!_?K&$u9u<{L+4j z-N*OrPZ@*NcanrN_%?-l2C^Z%=C=W%REFYT305sEA2CjI*RjZs-!lt+NcD2s5fyZ? zD?XfdKi>4)63{2-`!<+U)1G^YcfWqJtU)X9J5#>0bG(7fqcXt{}hQd|MpnQ(5qgYmt(2Jrj zvt?~owpK{-)ZtfB70sIIRZAb3>gZUrR(_yd4G8!lRdad0HnF#zvw)nn_>^0FbQ@Bt z6V(bbkfK#J(6twDIN!OBG{09+OMe}vh?q=Re=e6?UxC}ae5c*6e=06Rd$zZB8Y z=Mc7K#+&Pomf>`S0=0+M|bm%a_NPqq+Y&R2YXufg( zQ?K-bQD>LBnMlI>-M_pt@0JF`oQ{Inc=6oGb=v>$d+(ORqIxHSWV-j>SL}ULP<5Uf zExP70X<#v@r@OZ@uTMmqJsmA8`~SZCrw8+D4TEWEg{5uVMk(YqR_D{xx6j**wKbdV zRP&UMM)&d7v&+dkJ@K||^WE|3^Av3vZDsIjYUy8oUM}7$JUGh=$x5Y9{vR3FVf2W! zd*A&B=CWaM2-V6+bFZ%Ovj| z=5t31>YOyL_WyTxKbtQ;xJ5+A;%j5t{pbC^%~Gv>06?UD+g)aqLnEpbA2j=NHq^O5 z?KGB15@{YjI9VL2xkl^u|8@62vY}`R;l{uEl+4K$gR4SFS3b&iZEYpCb26&NQC9Dt zeDl@&Gzy+}v1f+OhM_b@^ndLO54kvy93JW=sS^qv$pBgR4S)UU81Ej+k^3ihkL8d; zgM0PD6aY082OB^J%q0?O|3SMC%W=Jt)sS|t*spRN!IVS(&{3!4hGLx{a0QNaM%w+Q z{U6UDE8R8AEbafp?muNX1f}M*;p#a2(`@aLM%wV%|02E4X)U|~y!8Zn4MD3P_Yn}KauYa7AXwoOYi zi!v_93SKp#;3a9DzqLN@yN*6YfJyFd&Hs{m@>ZU|``7{eh+Rq9l$*Xt7Q4+!= z47aRGsN3 zeq*L1g6WX3rCPlMU_v4hw)&{uduG;nm`zsqUVHx+vWk1S2~JDVG9YwqfvxucaQ6@M z;y7<7RIMaog3|4hP1a_2GrFape?Cu_^_eouS>b1#7V|CHio2fQl=CEK9U>YcoX*3> zPo@MqFkDPen_054PB9b}`6j(<%r2)oO(sN&^SmwFG7YdXeC4(cbq&kxC0V6;54w3* zXl~v5BC~}81S*)`vdMm+|5nYSKe>Ep8VI?&(s4D8Zl>M8+yASKa5)nz!Qm=C|3h|0 zLr)UyZr;gOrtL!bqrNPdyP4b5shg(K%CLXm-H;izhKPDV!Ed<#E4joH8>OY)s`F}G z@LcKMq{sMJn^fk>jBLgPROj%-`Rn-D%TNAR{ePm~0$h?S$Mod?uEAznW@hHy50-b8-=|zqMm%*V zW3aoMonz;>AHMy!lB>A&p&B_fqarGbySHHTx?SR8yI9SD<;nKVrQ)t+&I#_jec{gY zF3#uVDvU8|nH}C5B2t8E>k$?19@j6nx9i1ryF8q=OOm;d3PtVZuCYqRqqaBA7PJ@R zj*=uFom(Kzm(zTX#B<(0@7u+#w#KXayBAHNb`TeDS>}y)^Ylg>9pN5%_RQ28JO&*y z_0?TIUc|ocV~Opw)NQ*_O&K||CErZ8=@|?IqA2{odhNGwe&XT3`T76+g`fGBuYTY1 zSMiP0AAA2F{!<^?IXha0Ll$%vlF6y!D*>oXG^cv7V1x_g?6I!;c`i*6lS{$D4};y6qUMyH#a3CG zbEJct+cw}bcwQ<8x+Eo09CFKZW^zPc%{y&chUR09SEzxqQdU=a`J;n5q2=JDXGp*Y zK>$;*n5}YPlWW3>!Q70VYY4RzLsCXTpQpVIL=;C>%bAL~giqU>n=>WULK~n$GSNv4 zZWqhEb`%(mH5=1!d;9G^WSD_tBr};>6_AD$K9ciScOd zWqLMk^Nl&S>Cqp0{7VnsySuD#w)FUyJ^F1OV~(bTV!|NncxCTY$*C{@|r<*`D8S+vJ>~QJc0t%jxdtpEQe^+fe%CzMG>p zv{VkC8C8#!RSPwGsm6)Btuy6iYwMv_+f+{=r`ChTu*%MLlV+c6O0R9Zc?!f}9-8T1 z3nDpN*w8dvFp2p%1WEOh$dyoaB*W0%edR_1=@Wmuvoq~;B-SnRYJJg7by1aQB%L%U z?a+ym`mJUdQ+rB*0xi*E@sw}Lr=e}KF#f}v|7m>%0y)duZR;7$LnI)&%R`AIFya8W9O%k;DP>MdT?#MgWxeTHNR9W-@BLT#j(+6% zzw^Z+-lBy7$3nm-qL-|Mz|9d;jbRW$RH)G18m{vWQ9x%Le^4*BV0(n=%Yx zK)5C#oY{pri#d^$R;)SOu?WkXl2;(f$l5Nhba-67(cOFVrOd%vEn0{l)bkd;V)S+SH93 z&CL>+-B&Y#HfG6$RMjT*%O>WVmX6I5HG5+Ug?yAqjUjJ2Q(lc}jrGBx2-yg@aXbJ3 zK#0fVjy(ti62xLFvbdhej_$!&VK!)lP-KKC$l)$`Wmf_XwMRZ*rWK8@(a<2aTc>xq zNuT`O&4;&!d$zkZzdC>T=KJGg%5$zbyt>C=?|`}OB^uB2l1OFiNlJ2us1#~-?m6eV z&R~JNt<}O49mWADS@iR^_4b6ll$S8AuE> zU!CQ9r82#=bizW5%(~C(gIw&Y-aBFFA9^>((ljN(#8t41+MH9GvbPmU(9?bIvXyP^ zaS$ZF{qJ=RY>b3M>**-Pn11{_I<&At^19W|=#35)1HDpl2(ifrvA~rC%UHc~zay_n zqK4z=gzaK$=gCX)7zvq?o@dpxx$My7%he}py!tT+47Wet(My$5C|qNqb1>B!nA?`B zEvAi_WG1XO6R{rbtqHsFBYv-RcsXpTB@W7 zTE@I>ws{7EXz8#1+nsHFu&8NB{)eO<@u5vw*&nIm@{ToIliGYs#HZ{Ix3 z(OaR1#ezAtvb8#rEJC6c9C2y)-$&6Q$Kr^^Hya|&_d1%~$0L94a?@>Cz3NJyJl}N@ zWnNYuVL=)MCO?^g&3?7ZoiEk$KpK3w{nRmt6w|c8lRI3a1dO}04xtiPaiZ09zave) zil}gqa3JwvCrGX&BZpXbb=kI?Ga+-P*VkQ!wvm$x+1s|8;+jV_Tiv?T!Cixcwk@C6`PI=D>=8Kmi2P z{G|?#$aD`^bt|l%j?+?0tf##|7(4;YSpC>HbrWJAeiSSErIziEvo(gN!;SQ$h~CV= zG4e!=uyt-r`s9~8EnC@?g2?D!f3*Y6edQ`8R+HVTca*}tL?3Z@h2~pj3x%5>17_;I z6}Qp%=acm$IhsgS9N*fH{+({hic*@c-`aQXbnmw~U294EO((e>Jv1p!C>T7vI7!lR#s2u<7rG5@?}LVh5bT-RxXhMbzuASWh#(22 zkA11biA$2M$Z?MF@EqaFb6HQ!^Hg>%-Lp<$LGQ;@%H5Zb6W-CvWK5Nv6pj@MQmJh_ z1Lf|#KD{p}kG}ad15W@ef~4X0{`_Su$@g8H5F{hzyPciLi`>%N|HnH&btOW11h9&2 zXQqhJeVOKdJ9V}MYRUQf#b>*yIijECttnA%)>|b;W6+7?DaLYOcvw4FuCa1D9qFAL z>UKYT??;v&x%_;5VgLEMoITjWDGxQ3rD^XMwp*GvEUK(Em;zqHtHLU`vBeIHwwnci z>-(SoL+^j~d%yMTp8xt!rF`>ztMTpAALwAYRbD9%UQ5Qx3&3%^???$_crh_utUGxG z=R_P*?XPtb-Fpb8;cxsqol~(oTC3^wKkMj4zH$^2=^y^7|9jKLi6Aeln#)e^N1qCW zXH`Y@(;N5pJKy`mb=?`bg(a7Bm?ys-5jG<%!Zvl`T#M$aMm9%<*HAE&*lcS3gMIsf z*H(J4zyDyxsPYxV-B-B3y{Ege#bs*`!HDNeNF&o>6B|^SL_7o@_3c({!Ue!HUxHngrvR5TPiK#4u)m`>T zPV?GFt|fZSDrME;nk-__gZ2GacOQA{nGbyRLx21Gz9Psn)6px>#bX6n*a|v$d2x+q z;uyPqEG@aaYmm#m=eAsI`?_3)mNY4%uBcMN?Fi5)v2tI03~y4saa{lJ- z;j2G5J-qqGjn{9!e)i_4-+2Bq-TTn9+wbpxb|)2x(N6PrNp=!m)mEZ=7?EDN(@F9b?3znD zDnu(UH8e;LjhSq9IM0jC!*sU;74#$uTwQ*=qe^oHW1m4Ua-~WJMn$C})jCgDK_vS1 zOj{2(zj$R?k-%^$2yN|$EqkAXdz#USpd*+;2h(#Kip=!A-;vG!pG!@9~x3WG^EEi>*Cc8-nM4b+V4d)%y3i0OzgJjr*`NtRoBsK+URy{ zhKq|=U%cGg`WZM2kiPC;=@`dkr<&UkT+9aKrU_oG+HTXrtjv0DVvzwou4 z>55}dAbsP{bc8i3$wjO}1z3IIqg_^!hoiWZj#>S0{K?LWyT%C4Sbg@nV^8VHiHR$z z^LUylWZ&ivf!Zvb*^pkneKmwvBTr!ZFaBg_avvuxfdETk9Iw<e8mGfjPZaY+Yc(MZ6@b>hD1NTt@n44ONp8c4vwFHzH=|lax%ivyDfH5j>`DQ z{=KWXNfIRWM~vj+=eKTOBtXQ^@pU;4jxCR?hBK_I>T z)H~OXGps8s#PH59eEaX~rl;X0Tq8wqs_cllrYInN!%uYPA&l9Vw#iWq z7V^@9fnverZnV)6#d5Mmv#oC4?HF=Jz>Jo#J=}C&i2#-Uxo5h&Kb_*MtXW26JayB%3Zsj;f8oLfj1thOeY&M!N(7Ij19 z3QK;cn~CkrG|9D$qKB;2c79$Hn+e0T?<}K^A*Un#(6e363LAqik7QM_fhtt*OLwK1 zEEk)#rFN%-;P4a-V3qH5nr|+P3sIcuLvMCo6^?XA^p9VB^zqIjsH+|_A+lM&OdVA{Yge^dGd-FfA4X)Cr9UoF zF%Roq2ZOQJ?WXp=EN5q)cmRKUMzi$FXS-mDDxerVP3Cp=_*))*XLoaR=XRr6lM~2h zHC^85>_l?O6AOvq`@Y(RU$a9O^@AVoLXs<)Sf>76L-hN)t1SgTPaN^pSw~J{`RzQqEE_vyYzbj*WVPtgx?7DJnFAFnXdo z)<(H7gG`V9!jmU0`O1Q{{_$UX^bH-r>e_0Gg+|Xa(~Z|VKdIc9YI^tM^N|h&VZKvc<)PJ zTII{O-Y&^qp|Q3-7cH!HQT4E@#?~sFUR=p*&9&dg*0$X0V!gGW{9}LeH~pDsKYrt5 zryskS-u~$4JLJ4HS`-~&Y_PQ3b#sJD@qGPa(4G8mqtxLFxrw4H z;=(sI>B#9_FH800pjpq!6(f|3t>9Q1k{Ih|*n5r#%e{M-_Y8YwOCMThwMA*m?Xt7oe5s3kLEhTUOTL`zPRIJDDt4Pb z>hA8^34oEJQa)_#-u{%yTR{vpT3va|cP1p1g2Ct}BnW=Q&=!&!O;#-fVXnj@_zqjD zrK_0@z*ctRDA}&m!Gi{oV@8Ic0;D5<{8-f=3t+NPJxFK-DJdPP$v9!%X^Qs@b|6Nu z6kU;+Rv{P64Ta1!XdxkLtF>28`68q-yfQ}4z69wZc&)WW!!gtD;Zb{6i7`~_=ojm= zyiMNPd>nv9fGqAQ01QE3s4X|E$yogOR5;e<^mHfUEPI`JvB=Z$L>}42akKl>Ydju= z{TILQYj1yT|A7zW%}2(X*F+@EQ=WT=imjYZBb{!7(NI&H*5{kvmQnVr<+*`5QG!}t&b?o?x*!zme*6Q?lIDZ=(%2U1BjmP^xmvg;|9;r zMfIL-&OJqfakkwp#yrcI*7KV$pRfM=Km7JT@`?ZD&)>fB*KeIY|NQ&E`=#&lKeGLG zuYdc$k-q$?yANONNfqau=k1O+b%qU7&a@Z`K7DI59L3ndtckyH^4gmI1Csn5z^{O-@Zx?5jz zd!7&#wSVr%e)iR$>A&)o<=&UacmD6Ue^D2;MeFkch5#DO(;KgMfLf-a(n*41I(yKy z6B2}{d3Q|fDyaz^KYZBpLhm^jaQNc$9gQ(MQE-Gkt{${o(;ip;{U<-y)#8 zr>}lbr&hDOFcmO;^!1K)2lLcUoJHQdJX|TOD&G6_+TjsfF0k?b?GA^5ItXrnXkeO8 zkaOkOxLnOktA|y|U8bMg;#aNg8W7uTEky~&NOyT(F_S#{^_2!9%t}Tg+&I4Qu#>xv zwKCCv;Zt2>L-e%S7*D8TE-xYt4y7-C@;LMyP8Bh|_(tb7Yy{2GZ}y$AQA8?U=tIci z5$-SpOhCFnbs49ztH~=uqkdlgLVES+ET{j4)l`h5gQ*AzJui z%E2nLgiV`$+;C6#lnL4(HXxGI$~Ys!wG8fsJ|dTr{Rv^_mv>vcmLcc((!)+Q zgMQ%#%jxcE=PL9b5QkO|1}Bu-fd_c^yc3VEmKR$stpn*C9R~EMm*z+>Uv!LIqC!>} zjaAjsW(%{i+2lleW9rr?(P|dcqh}s>om3Qr9UkuagU<6>b)^$`nfH(X@T1?}DY#Ti z!a?ryF5RCaX-Jeh1FHO_fldAMfBMj94r@NeC~GVk{CPAXY-P#<@oynH5c@c{@CN+ z(`BC4rm5}?HDR%R?Sn)pFZXahU&Rjj^djUevKRzW#$--fUunSVU6{r%?})V`6r}{5 zwPd7^|6oTzzB)42rppeTqDoZ%rH^#b#=K>K(I^I($l{}!38MfVX*^o_ZkkXPPU(u} zLW2*-R3gdZ$aKclY;qsbd^3bvZetu!Tat^Of?}+MyVI#iqnO~?tPdI;DK_14K*FxQ z_|+K4iwD$DDvSr8J~U* zGpJZqHbqY6q>lihQB$mQziG>@^Oj!zd?yug1T9?AA_tPIBF3W<%XuSsTJCo?)!Pc!ta>@F*&CNVW0Ymz`ALvY(h|s=R zP9J`~3%Y4&C#>6IkwV37l$_F3FLS`Ku5~t+;z%}47+ur|wQQWj7!cCSU+gSj^WrhQ`CP}GTkXRg8OfsnC(&=;XD$VFtgxnS*X&sKUSFP~P<$04IPP+1v|ywt9=&`4 zki4;S3>4amC!h)AQDg*4fa(6yLAiKbF$&-Q;yXjY1k;T}8`=U_ zU=`Mo4W*Pa0HC??`mK9ipwWBJS$0@&GMT~|y8iiRJ9kL~9A*f*MQ7e8LpX$8eTXo?=0}-D%9A{JGi@3Kq1p@c7Rn^5?omA z)?J`LgE?HoN8ac{Mb>*g2ARABhxNQ~!VFqQdf=VU5w#aUBJIwu2GU3pDV7dxgQae` zTY~v)x0}z?g3hhddyr!P;V*TrA`LCdykWYFPN=S4b zYiLue)n?jSB&$oQt2tOPI17Df^z%8=9Mv@}`EKlj&6lS|NoBk2ZSYd) zL*99v`q<~tFq^cnw!5~AWnS7=J3iwkcgk~-5|*e-?+*8|#WFR&+R*3KHIJcM;#hHy zs;$(OVp5IcXVxRrSK-%CiZE<1m&6Cih|@X64mOX66#zvPGlTAxhAlR84vLbJKTVcn zMq2V2rO?x~ES$%W@+10~rC<4n=H*u&F*L^$9*=<`I1l|B3j3JWJ|oEs2Ro7b&n+Vu zKols+y?C#uU0z(wZR5mKGQEJ z`PKQGapUx_bsE7uy| zjyVY))>9BcAZVM@b_2J#x%7FRLWQ;pZ8ytG`I;~5W}`@X&nU%JcMEZrcYY&Z7(_?5 zM)#yCx4cqtj^1)Bp%ipRZ!j1WAP$hrS4JARAiih!3A?%FEn6v(J6%xrnn{2AJ->)W1Yo^RWjy%hDI`f?X69E?F{nl7#|;gu>x znp&qTCv$d;`=^e%Ft~@5%%L{OI3FlmAr|y<$&muPe0)OEMyF?YTH=XHP$LKph5&Q2 zrr@w!cfp9&RBc;(r{?T=4mE)=Q+n{}u3mAFp5gBDJR1nn%?lifpg8(PXQ-huRI+mV z=$E@3t;kbYp4#eg8hY!K9aTh6QD_{$?MFK_r%1d0t}10u!{KHY5tY^Jt$CYXT{;v= zqk9V{Nk9-YnO=R^!5Q-8a?gXJnCRP*HK)kF$^Ad~joqy3s>uXm_~ZXhcf}|QA!GIB z@9Lx?Im7#^T*KY6RmOZq(-RMKnpF=2vu}O4n-v}-M6B+=)Ukv(dT1unAOCl|qpQFM zXih)%E$^)*EW!YjY=9at?&}R+3^jZ6oDj2V__O~;=OL_daJ7! zH$3+s-B(T(MS?q`SFKr=B#HxQlhyQ7-+6Vv)m@m=AO8=#W1(>@C0WS+xi>p`&{r-2 zJPOtS$FJ+aryt=R^6_Q>fr zJHp(hBV^*8led3Cr>JsIv#-hizyEz50`56OJ48Cd3q3TE>39A&T}Wy@3^1ktS>}zgk?? zF71=sdntQS9(37NJ1bEWB&q+UZ~wv$W^Aja&Qn!-``T~ovJf7XGFsZsopA|_i^>|S zckxueqzie8J~lbppxRiKaw#_0ytwxuXe$bZ{e|6>dHT$GH$zp`L35^Q*C|38!e-Q7m# z63ihlw8={W+xq3YkF-1O)=OA_iScgJb_k<4hi?XPTRrrS@sj$12H(7*Zd&V)iGN;-m%T&`$Y zt_Wu`hN3qbj5|96k)}JH~Egt{O6`aDfa z7rSna(|mU?MG1md0_l~DE<9LAVnZsu`LV8^+GQJvB92rvx4PW7Tb6P$)sZj;kLr5k zhG6oCU4)7w0Yv}s`A*?&T5Z=rAKSx+(Os6-wd1n)d9KW6N|8Gc)yBqKprz?{CqF!W zGY8WvpX;OmBe|%4LLoi93-oh&38m~CM~~JWKK&**4mpe?oWxMz>Fp0a*U2OeAp+yy zyLCltLF8gU$Y*Z2zB8|Lo%R<~x-9Fh4NkqcYSH}~3#Gvpx&|zkIe<~Pa;UghR(O7L z7yuz3gCthZeWAmtqK%RlDpfl3>he|>yHhMnlIZ<>>)vZT&-3h<)0bcB=m$BY6&gmn z?6iA%_U#Urkx$d+en&Tj668StH=gUPUTbwj3~x*wJt!tZ9A1A)ODi@dC&B*WDX&xU z>ba;z$}r=woOe}`eF({Y+~##gP8aCROTg1EY-6jtryV@+mQ7tSBd5zvmpQ4`<3bKa z7Q^L|b6zIcf!f65$EV6x-~U4$WW^(i4z4cdjzXb_g0S>2eEk)c_}KS;&A)WeCyL}p z^}nf5mNu<}S7{7nV#U@4h(X&rxr+dhe&jnkk6aWf`%-*Wq4P=Ui8ASOMFn7%c)L4~ zeW{iRW32AyF4HSx0YIcreYT5(m1Ha!<_8@&3`EuScZ(UI6pN$~G`{?1N3A!@8}aJ( zi_;Ermz*rH^w!5Zcu1atGqBothi22VVtCD-N;!Tia{~#Af-&HWN>ekix*z<2fjYFC zWWjOSi~}wp8;{-EGE#El#b$))x&kApnV_IM6I&HJieE zha;~p>e*U3-Tdp_d}JZV6ZDYPx|QnsdLg+&7;N>k-`trH;R{H!biVCOWvQxIqvA@` zoZjlr>Kn`1S@I&<@X{OI|6kj8fK_#6;TpYrA1pbk8|5Bz4@J5Kl$zKTjT3tTyEGB7 zMNo=T41&Gl0Me_1luK8PB48IQwi!pUJBjI|=B+~(&b)op2~13X-}|nIz1P40RqtA& zx2g{~a*fSKxv{)T>IYwQ?(=t*u4C$B5!~f^fj^A9X07`6Z?>LKBTwtaD-p%JmqEvr zm9#J~udpa6Z;{+OgAT-P3=C+|3uvM2LQjJ;`?ihqAqAz?h<(#W!5(x5=iH)&yE(Fq zbI^cdXdZ(@?Vwbe%#k^5hHxMi$JZJv@3ey+(?Cu#ZHK(3B8s*h((;_srOmX{&rrmh zhoOKed)nm|M+11=(6bHd#T9=7z<<>Ir8dZ%whn`aS6JNA?_j-Ri~IXuK!n#}pi;}= zG_U9G!ouhEETAa1=CQ}^GJ21KoocP1UD;1lwB>b&?(M4Fo#t~F@2Q$ag)hQTm>O)i zHe(KScOKVj1Gv_*Ja(^53A<4-w!jdiHg7LtH~rC7+db13P|NS)z&$mQu5IoesaSX1 zusz~L1Gu5L+kk!)9&@dKwKFYId;-q@Yg|$F{?`x`soB5Q2B9g%VrclOA~d~nXNhTG zZU|@EseVOWUb&ZVs(L5ekv^wzM#Y47_N^!usG483lg!Qp88`el7dc!Pu#-3a} z^XSp&Gp1%Ae$=PW`H!B+Kr}1Xq!twJOwP`YU$tcMnuz7H2tu-9%NUBgTKW(i#^*1A zHzJ&YZg_@>Fs;fE9)T_Gw|&|d|J2^Cy#o|zt&^kOwBG&J>d+QGhyK>Wk-Ge=f7e1^ z6u=3?_)S13>^nGr*bxt%6%}isqah52AO4O@DRyY|yjxMaD?_ha18 z*)mLT2GiE-Xxc1@U%-=S2D70fyaR!-6gvXL+5FZC87{>@=!EaUY#D4cj&mE~UFcDB z?(UtMG1vp&ojcY^7SR#>3}Hk|AGD-6aWKJ=0yvx{VnmUlk_G0NMZq54CYO&FUpl7+ zP491T0QNB%fCFN6;6~5ys4A$E_7yGmS+X*~J5a`A3?||lsOBL}xz63uhcg=AFP2wt zi`*Ky1rcqt^Ekf@Rfi=z?{Jlh$a{FF60 zzF1CvMBo_Mw2q}STHk_^p+ujMpI0r_mvEN>e(v-AbM>(@x<7X*Ja<_S-*HR*z~DAm zL2ne#A(=95)gpiSLE_#|>m_~4s(^SIJSm7#rq|I-LMt@4#CXgC#}C0$4h3U2J)rE! z(US7Rb$af_-_Ju9$3Nw1&VuBU^*Oadz~{}$pQ3mwm+rJRYz>~M+S)F}b;r+fI9A3dTk ztCPjnA^3qIyiJwv>SVl4Mc4uzAcKL0VrD||&4t^r=Z!Ry+M3APu|9d$hrx9ak<#P) zNY&o7s!Hv}vFEH%GiInsf)32L5Pe+A&O|9OKK7Fs{)cyl3w9=t%F`P_pb>_32H5P7_mBZ#?Go5&*1)_&p>RI zMEnvAqgh>5W!)j~N{<;nJ~KTkeQIS9Z|uh&>{|-fVB!tEQ6r&23=Uci26DvwkA3~- z8T^tee5v^}=I$vzKNCjt&$|dPd=>M56%+By4G3f)(Y=ZXK@a-nGgtQWtO~Zc)q{Ws zUCf!IAcXN_kD2_K(+|~gx-9y_NcfszcNlR&_#*3WJ#^GUPt;t)o@j|32B75*9iQ^L z*z&wesdDe~fWM3iHwlpMV$09C9IY5YKL*`##Au;+h@(4p)M8K2427Ox2_5c(Wt=ZeK|Yet;+&GR7t_BlksYChd3f`^o9xSbZzbF(=%$vjhiuJ+}PTgr};q&3{d8=q>D+Tl14o}HFclSwCeMr z=a+AU&L1u}8WYk`b!?w;W3-!5^yugdtD8*69q}}3@cJ-wOwK0kd@jf6eAYDYN%Nq? z_{57wB3OZqA?Rp2IFrXT9G%Ha0eXOlU1`GS1m5O54F_Eb>Nv%f^lC5QJ17F7pY$d8 z2H$n0U<)GSdXH61#6b!646G?+wUiRHrW{a)*fV?~a`;&(C&lJN5Q9c=z()EL$uuA0 zm@)}WTPIObkyYsjH!%IT8x_GFXKPxjKzdfiwUQwK?HGvpq(9hr^TaH)U|9v055Pu; z95qGehITkXixZmA?kO^zs?&q(JO$PSb}&H;6WqYg6d30(B@fW13N6u6ix%E!)gNs* z-w(>rhTQ|hv2;OXdi4%D6SPTxpL=j}ve7o-SaQvw=)Z-6wnueba(b!M2!;+6ySREF zOP4dzmQ3C`G2C53L8w0wHf4<*${}Ro&F;`eQcY{PY3R~i4=h{`1zU1-&54Y92?W7? zV*0V2awdm>rMuQ)7s&w)8)<2BxK|vvqKzI>GxJ!a(K=yr0}L_z zwPP{#j`H6BQwX>b@_!=+&iO4bVvgdsk%8_OpZu}FFXY=MdH>yuc&gorh`Qj}Yz10_ zv*3w@gVL;GYrN^ zSp-KYie?Y4XB3~6D}4wAP?SI-wI}vm{f8FE)4;eTp9JY_zpCCtPFCzb^r^Pl=V$-HpUucqQ zsW=@9(Vqu@3+8~vM20T+qQDw$PodR`9%-ICj-8Y)rq5WmMTP;p2y~0-`v5H@^l-&F zsQF&Tt`5m)4YuRKa$=8_`{O20kla=t-n~Iahe(3m5W(1cr`0}`5okNh_cI+;O7um`&*d~pKD zC)g3~(B6zMj`ArDXqvBlw_V0}wv)N*0z(2M_Z9l1N3-?yCB-40+hllW8~HZQ^$K>9 z@SVX<*cH27cZRoR5l6y8IL;n7H$Q&t+T5#`t81@b&90B-;`{74opx{5YLbWsY|z9L z*RP*YuZe>OO`JGL9$Co_Hs;W}+~VTm;9?JXByF;1D-LGU^uI<&N5@2m%VHqpD6Z@d z2=wUWW5);zcVPV}Vfe7&SIKCKqj5bybGdW_LqE7gMGS{Y@R&WkeC^(6qb~Jz7&5Y- z?UgYP{?U;-?6+ti7}J`X}T@!PF{uX_~wD2l;Y|8TKtCqjm+%o2Q*uGVfxt4*C{)p;0v&JwHhP z@4+thAi#`#u(aN%K@tzZvuFlAKD+R=M8?5oWI@=Hl|It!z`VL}8J5rlKACH&`oT;5 z%YU|MVdG1rA+31NL8-bh)GJ*EmwNK;0{e5wBStPOr&yn( zXuJ1o7w9XAv5<0&4Sje`03ofpIRQEvpaYEyT)8|r$^fE;+~~C69f1ZgfW|;4*PAG$ z8C;**$z9fNA0v*TFyw{m?Mq zI7Tg3&G1KPoMrHteSZOsR`(r*owaBI;`}Geb!Z?g+!d6!p~?W= zXgt1m|9vo7Y48wi*|$Q;>YS)x?XsZog==*7%3G|Lurx6|Ww$mzJvBdGC+27Wi(NrV ziW@58%g!J6`G*8XNAAG8d^#P{$-KyrMY_QGS@We;;TvMYQ7?|KJbX3C&jlh7~h6qbq~JCF;g3GTZnG_Cl$BC@(T z(E%spc(j4>{IDDnnX(sbTK7^h4tif=URP3Qd|H(Qi&Mu%OlV z2$b0&ZYqM)`mJ(1LmnAXv%+_oD%B1V^IHV=AsGZ(vFW%p%|*w5luG3kpH8 zm0v_$qa15sU@x>15EXtAb)SKpGVAGJlLT;M!# z5%AU>xOJO=D<>l-4-=HV_!(1KXd|eFhRJHBonKbkiC5a`Wu^J@{g2sKE3@ExcCsv` z^0*8(g3lzshzV{MC*PMQ&5ZDwBy(ex#}B0(zxmySCJDndzmF)!mcs`2G?eJKrezk@ z+*^80dUWD%U+s`hcN3rJ$e2Z=UGqmtc5??~hd7xhWe=1=fA~}lUg=83{BoGfOGQD1 zMi8-)@IB5_e0Zs-2-y$?=IrW)1NEn5_fr?=IQmByKDC9m-$!70lxmr7E6k?;UfRtCBCx0LchCEs>xjD z?;jd8R~FH_0n8dR-Wzrs2HEmLFEYa$L}aCg?!`}fq#O1YYq0M5Q@bZiX}vZ z!wON=Jt#E)5Jhk-#jVda-~`1Nvn&sy4G7gloUl)&42EfReMaVnED5ZdZ^FAW9K}I+ zRPYO1?&TGpQ>NqcU_spY{Bb+?M_>dFFdRF<6r6NV#_qlD&u*Mh{gKhm<-uEnBzzY; z*`p1bJ+%Tm8O$`}{mV|Ds41_lD3AWQMCPB>9=BHO>N{}+PjEX7Y5%woeuh`sm-VL~ zKXq@kwRInB+N*xtm-4rops4gu5ADjx%i9$;b9PjCkgT}0&i-9QQMvp7+XXzd{C%OM zzz#zYC`7>>jDoua1&UF4hroU`W!7N&HJE&ZrbGlqImix{mmfGdzhc%*U*B1CD&`-O zalYXzm)?69?m851- z$}S!|eC(9_!QrDP&Kf`N*qkQ$@0zfPt*|N60mVaOt{aY^cm7eGdx`XDvRGM=NMFjAy)Gs4z+|bXLKWAN9%Zi z+#^nZS>p0pvwY{Pwc2B~l?%%z$|?B--=uSG$mZm< z%_&k|&id%p!Rwc;2;wjMkt5$Hv3m}!E#vu=bFGSsgtXoA#;-`ss+DUarI1w#IoU~B zS-WL4pni)#_Vm)ao%#5TPJ|9hJyYHVq4ixJ==<;qgKS^~j0Ma_Ln1bP#GpGLVdei2 z>_OF9)v}t>()~3H%I41X^P4-bY(Wi=99lfs!3v&`Z~LC{{n?&rnf`M`PJ!io?YoGUs1?qUqdr+hA{ zlrgOFP*q+1jOuaYr+c}(AM$CG&uLahC#9q&C8ee9ie42F6}^&oNQ)nPpmxa4#H^Ci z&;!z~sx#Nt$@Xb4I>dM3%MMB49n#|aV~5;^Vg?U^;6o~oQLI_ZlFyzkq2hgrXK)=l z5_nI*>)4TqVZ+!%s!VOs6MOnm{Q2+qIdxk^J4#)(lkmdX5Z~yXjv;ian0Q?B%`#xy^$_C#1=n#B2*ABk( z(Si7Bz8yGtAby!^?K#-|ez7o*o zMPwyqr4Yme@_3ND@DML!AY<_9{z(Khp236CKv{m=%LHEM68Nm=559;X5PW;U&+#R+ z0zAi*X&3qgm$98kIENh!_2Ickex2OF7{g4lqes6OXK^eyb5Pzs#|+Pj%Q%{0U6V!6 zXtDQ*v>F~T!F6`s(Whs$_{4NB;W}RD%z-HW_fQfT>p4Fdwsr%j@-r;D<5;Ibm`#DSV zzF2rqW<4u$+edi0#~nZC%B(n3eS7ja-(!R)nJR6sxS2=bMh|P{vRvf6;3LlNFwPB3 zGFrll&dEDn+I}*I5@Emf{XN`E0#-9~_3(bHhfm>YRN^_Y8ZY1_)ZkUI9$=m#^=z6CbXg}0-|7T4eC&DR)y4nO8E0^M6K0spjs*u zRqIWF&r~k@5Ww>&a}j8PPi(QCL!Zm4aNl#Y=-(tNGDQXuL^%c+A(S~Yn`eJ*2aTvh z4mB2sYFob>&7zQR>+P)bN&breAP7|4SGfS6$BzMKnPP~YoW$uI#tz0f-?)-f)xXRX z(+r94afhsotm*2f&6P&E3~`W~9^17S_#^ z=o3sc2{2(X``GdEN0Xh!^K%1FdMm9)6HLl0E}mwZb7W<>i($)&7$ZE+%{-nv$%~N+ zdorp}dq))ht~7}mX$haPQ)U=v@k!p#VSsxUp6q`P*jdz`v&6LR^nOqNTF>$~%U!mv z7&kC#`P=TzCG(E)5Ys$Ycr!+w6*>E3zw225cW?q%a*x^@_=wu1=hRemr9IrwN%rJ> zOccISn3bJix-hr(>{|N%ijks~GWAv;QjF);#28P@%Jla8;xg`GylcjI=G`xaIFuoP zvp9lFa#_HX_cy{_itZ$o3?7p9a~VEHFl%w^;5mzbh)HG0bI* zFkQ$(@rd*7R#*%7qgQxNg*n_HI`bZ9jBhY*eYJeqGVn!)IgG!vI1J+dc?18Sf5*|b zf`r9CiGHKBdSQPh#9h1tpEcP%GAqEoPDRR#aCSXDgd9@ z74DI*x$ku$T>m2yEYNo2>nJyVNBoL2vw8N{cJO7i;79lZn$U>PYh?{+Mpt}86s-Lr z+VCy2YNcu2he2irP6-1-@sh5kIK29H1b}*(g{K-DBIfZQHi(wXNUQ z+O}=$U)#2A-Q4Mu@xD`as=wqVy<>p3@#OmK>c4j6aza^AQE#Ml=5#sd0Uib(^jtyqGNYKv63tqXmR&A(6SKualXI-+k+2?n zEtJ_q>?aN(;bbz-6z7XeOM8DW_7Mk(Bm8++WLzz76t|0eb>>kd{5gG0ei=xTj_GQ- zQ?gHJJ}2RaWNPT-F7=Pefu4+DPF_CyYql1^wOg!xVjUFgh*-am_3u#G@!6@_*{%yU zf5~;Z>Q>jav2GT3X7_JX?_?ikk3gxOiuFRQ*J6F)`cC{3s?Zhk9Df%mcFe1)n&)lv z>42-yl2YZhV>OJ`+0|3@cMTPzT@%Ihd~UvYt6HgA5Aq&R?2Ak6=ejb#KEE};JAcr1 zNUWn`{V~?xW8E6-zpfMW)AMryimf5Pc)ODygZvqg-w-dwde8NV_$vPa3Uv#O3qYa0 zs~D?dtm?5^y1L4}K^`cEyT*#iuBBpTtogB4yY>Y_r}{E0{IE?+;+FUBHr5Wwr|8w+utS@ zx+;sBuKJ=W@jO>|(bqK?%3SIiDaN~|irL$qN0KZ^Pmr(A=7cVJHxhm>^&0t0a4(i$ z44po0FZa9cK%Q+c{k2ut>FyU+IX9W4E_&w*ovAK4-0}mcdk1rVnDZV4d;dmzE(C{j z__Ou|?-mU5RJ()ccevm1TjN2V>@Ejke`wB1X3MX8em?}e_jE7K7Ke$y;f9iTlPi^4 ztLeTVUtu5VcRR~k1-To9-aHB4IepDN0D|4^?EVniC)a^s&E;f-Jl1`dS4Wq;TbP4f zJ(zdHJYDRa%ON;)+5+Sbp05UZjeEX*o!(MIu+JRm`4EtMd3B!8xgCN-bEj9wd*?8_ zu776xfV|B6*SIHy<}7!A@0?*bqK@3qJ8y&F(0t*Y9o)CNM|=NBcVG8#_q5R55YFLx z&pU%W*S!>iL-SB*Zt`S=S9`eIxZBG`s`}rr$Q7w8w`QuG^9;}O93QI-vA@?Gs*Ad! zv1m!ckN8I{SUW;DkPAAmy7tr++VgAQ@PGGfF|7XDSm>`dvkfP?n=qxzfGPl z{oACXruj~$pYR=Z^}uf8AhBGmEwNj~Yq9q!eg3yNLi}F*)t`5TeqAJAk#Md3LvYg3 z{o`i)N3;;k&Grv+3;xNmoXnY=&!u{<=0S(QO;+q$-GJ5G(DW?00mUY~8(wrvD; z&u%UTzwyj}5P*pkF&r^_Zd@7$Oo;dy^Lx`D-oM8LsL-Iph#4z(oVb-0GXgbQ^vW3v zHXOL{;4Ln$Yhy{&(&E-~)bG3U-!;1+wi$D&bZ5*VgJ#a<6Gq)?f=n#$^S+QNOAHC zxkFwdRY+~p9%-NSt8`07j>xm+tmuloL;hU8Ctvtj-vtH-CI+S8$Y5HqBe*O0S@2rO z5?UCl3T+Gh8G07>gr|nv!fV0@!WSaG$n@Ah4X7B1i&olb=MtB>!d0$uog3Wb7Pq;> zL+)~)2dL0eK^5>9|DonECopiD)7Uu21?;F}cM5;pM}72VFk_iX92pd${aB|npCq!- zFoOjolZ}R%EF^^-v=lRoMWm98hS|iCMjjgG5KlV!XqZa^85E#l9*Ja9*!c^A4j%%+ z=^k@d1Zpa%qzX;v{9sg==>1V0Hkwegf=Zf|wi==Y&BjsW zjUsF1&6+n_WhFbJIFcnZNVd@IV`gS%=8ukTcZKBv_l4-U4f>)8;4z#>l9!PCgIPlI<&1lMZM5jX1_|bckbs z3N_K8Ta>(P53cLm7O{d+y{H)k+WS))jzP)w;^>dGRSe*1%T|k~EHr3>ag-&w!SoDB zgK6oWjao7!D{XB&18l&wbnnRd(aOtrJt9(kwBC`*2d;~e3;EJEdCNJ?#M8Mn8p<09 z$C0Rus7V|NS3761aznn(lJ3tFT-EivpJzkaa`s%-x*?tt&<5?Wo8UNSxeX?*RmV|_ zyM`*=c7!M~5_c`LyvZzUCwZtru44Kq@o~DdZg&T^@k@3y%}FkD2kvKQL2DDHO=~lb z;heRcZRL10?ygBYUqvVVF$zP=hMt{6Yj(VcpU%3OL;Sn zb%}?iWT(nEEsl*zfMTV7L{#DjJGE-ww;}GhwgEeEes_Y+?>R8 zOOnr>rlDaPJP%RL*ey)5Ts4UfW;supUYd;B?5fzEyE@Tll19@#iJJTIveb~~e9T&@ zcah#wWmnk3Fo!wI9e5B=;f1`JkMebX%AZ}u)!h)fNtL#iqH9QBSbGwr9M<7Ha>*Y9 zvY7C!4(N{)o?mO_ksk)WEI~dm?Rn(eVLd-VJ{i`l6Xfk$dE}*GeK8 zNRTImb(aKrfR+$Nu|SzV+Dzkd91PR~Lln$Yz2eJz>$ZTWw4=)(f~(|~?I{9hV}9-0=1X5i}vKv64~lJk}WG7Lbb zs{DQA>w}!mwRF?ZUKV*aujj*j-SxPe;mO>2zK9FUxP=|&y*QU8*lu1Ku!#h#^IteR zBbI4yUjkf87bU7(#dYjw5Ay(ASb6OA znhNhsuxInq)CX4mi#{A+n>3u|7XOb^9Aw5$(W&=AZ%&WH2Oj=Sjk7GVD>qr2T*e}A zbtU&O_vUPMwj=vw_Cw#{+x}Mm0shtgqlH4DyD(HZj0>Eeist_SZKl}I0SqOQp@Z!d_FdghW%t84L$P{Ruyvu?RdI|o|BNnaeXzBpz(z26vOKLtvZ z7?h5T0n;_8m(S(73E9ROPmP*c$j{Sj^`>pGn}eL@Hh5~(8I(kcUc@8mb<)~pK1Vw? zaoRdj7W+Q>cQ`i{hHOvN*+CB(qw-YoV#c(m=#u$e(2d){G#OR1tGH+{*%*aE`CANl zT{A2CKt1(=PT7gNk|{N;=!7}MB6s5nD__l~)ncr-wP{h#R@?h`9WA`x^g3Tk4Qr5E zoUFV5?wflkc}JG)432`Zu*BVt(JxT6)9NB&P zV2&l0In8-4*llPst`o{1t?PALGhFN|d+m$K8P|C7LY-g@o$Ltcan5rm9>UXjp`A%R zD&FyNJZ0)siL%P;y4*{3ip(kklgVh($Z_mJeu+>1siw<@w4=w(oXlkMvLClj+h&^6 z@~MnB`Sa06DYa>tYgwkR1FOE8^$2+)w7`gvmYqoTil=GyW%*|{KkE1sHVezo3Sdzt4J+>1x?Uli%g zO$yA%f_l!J^!Z$e8O3ucHM3!-7d=*wb-;QK*{hqkG3U2qFsV0WXG81(*D0o5%9!3vm@lVBmRHl;D zR;He!xZBrYMm1-(puMuk2E=El#-^(`k1+kis0wtmdl}`ZvavuZU;DAkcF>}Q*XyDj zYq4yejhSxUUG?h{8}O<%%cH)_dKp?d^X02oSFI#{btKO8lKEyYNJet7ev}Ws17dtfuf5E6WW&(GWZH>i@G2I?YAy#tV5b zU*@N-B+dDIHf_i{>56mQa4#=($IY8aBU3b@9(mZOI&I5K$>E}m)w=QTla3XAC$ZgT zg7OMaYxXM4R`|b4m0hKuL3?o+-FlB|fQsQUR#Yg`%P_Otg~#A1Do+PFA%6;1p9Se| zP|x}AEH-iW8eU9(%U6iMW6PhshEMvqa8-VT`4|_BX5V=MKg_L^^?Tvyw4bnF@tEKM zhzou0vUJ_?*5n1tvJbUda`rrqr_#2lK3w zqm=N9K=5Iuoa*u*lN@1@nOK(%(sTDoM~GpnS1+rxIFo56XWE)SlTE+|sr<6(^mxgq zeoa_Lm&~suA7-VOm4A~MAkD-qhm_-EoaaE2i5uwi$C=E@zL6!}vkq4NO=>d!P3m&G zsB#6}TuBcb>7_;=o2YXYQ*34nTiM2TcCb_5)z>h{5WCpTwG1=DC}WIs9ecQbMdkgw z`-~z5x_~M>xlH!9>N|crgIr(-X~mpUJ!Q&XT5X4zVt_>)1*?bsq#SeX4@)lz(WjWp zajd6<*?`RlbVf1mupCcufSG*O^si$o&6=umj`On7#LM$x&uFAw3=9ZPHeS zMoxNI$FlDE8N4EQhL-HOK=Jm)a8TW3js^WzBCXhI_NzubO$InY>T}SfE;Gp#hvahw zRhj${ciMZb>r|NGWb8f4r6$Aa^pv`#6(%^v0iCiT&9mZNnZE^{t6)AHA=Nd(G3GcB zaLbN(W&(C0$5~~KGO>VH%=X%iS!15gG8ez7ayhkkTV;jK6D$VK0p_qQN#Fhz-W_6& zvn+DNIMrX2`#fhiYvtQ<4rrozCY4baaEqg+#zA$jb2s!x`SP5K5vVBpX*BoK_y50_ MnwuBkua!+hh*3bdvH$=8 literal 0 HcmV?d00001 diff --git a/_dev/src/scss/_fonts.scss b/_dev/src/scss/_fonts.scss new file mode 100644 index 000000000..5413826a6 --- /dev/null +++ b/_dev/src/scss/_fonts.scss @@ -0,0 +1,6 @@ +@font-face { + font-family: "Prestafont"; + font-weight: 400; + src: url("../fonts/Prestafont-Regular.woff"); + font-display: swap; +} diff --git a/_dev/src/scss/_variables.scss b/_dev/src/scss/_variables.scss index 879fc032d..ef525d2cd 100644 --- a/_dev/src/scss/_variables.scss +++ b/_dev/src/scss/_variables.scss @@ -46,6 +46,7 @@ $cdk-prefix: "cdk-"; --#{$ua-prefix}primary: var(--#{$ua-prefix}primary-800); --#{$ua-prefix}primary-hover: var(--#{$ua-prefix}primary-700); --#{$ua-prefix}muted-background-color: var(--#{$ua-prefix}primary-200); + --#{$ua-prefix}font-family-prestafont: "Prestafont", sans-serif; --#{$ua-prefix}font-family-material-icons: var( --#{$cdk-prefix}font-family-material-icons, "Material Icons" diff --git a/_dev/src/scss/layouts/_error.scss b/_dev/src/scss/layouts/_error.scss index b6bff18c9..b1e845c16 100644 --- a/_dev/src/scss/layouts/_error.scss +++ b/_dev/src/scss/layouts/_error.scss @@ -1,4 +1,5 @@ @use "../variables" as *; +@use "../fonts" as *; $e: ".error-page"; @@ -14,9 +15,21 @@ $e: ".error-page"; border: 1px solid var(--#{$ua-prefix}border-color); } - &__img { - max-width: 100%; - height: auto; + &__code { + font-family: var(--#{$ua-prefix}font-family-prestafont); + font-size: clamp(7rem, 13vw, 12rem); + line-height: 1; + color: var(--#{$ua-prefix}primary-800); + } + + &__code-char { + &[data-error-code-char-index="2"] { + font-feature-settings: "ss02"; + } + + &[data-error-code-char-index="3"] { + font-feature-settings: "ss01"; + } } &__infos { @@ -54,10 +67,6 @@ $e: ".error-page"; padding: 2rem; } - &__img { - width: 17.5rem; - } - &__infos { justify-self: center; width: 100%; diff --git a/_dev/vite.config.ts b/_dev/vite.config.ts index 60be03455..c864cdc7e 100644 --- a/_dev/vite.config.ts +++ b/_dev/vite.config.ts @@ -42,6 +42,12 @@ export default defineConfig({ return 'assets/[name].[ext]'; } } + }, + minify: 'terser', + terserOptions: { + mangle: { + reserved: ['$'] + } } }, plugins: [ diff --git a/views/templates/layouts/error.html.twig b/views/templates/layouts/error.html.twig index b50c90208..c5aee9f08 100644 --- a/views/templates/layouts/error.html.twig +++ b/views/templates/layouts/error.html.twig @@ -3,8 +3,10 @@ {% block update_assistant %}

- {% block img %} - {# Default image can go here, or it can be left empty so that children can override it #} + {% block error_code %} +
+ {% for char in error_code|split('') %}{{ char == '0' ? 'O' : char }}{% endfor %} +
{% endblock %}
diff --git a/views/templates/pages/errors/404.html.twig b/views/templates/pages/errors/404.html.twig index 3c889cd5c..5432347f2 100644 --- a/views/templates/pages/errors/404.html.twig +++ b/views/templates/pages/errors/404.html.twig @@ -1,9 +1,5 @@ {% extends "@ModuleAutoUpgrade/layouts/error.html.twig" %} -{% block img %} - -{% endblock %} - {% block title %}

{{ 'Something went wrong...'|trans({}) }} diff --git a/views/templates/pages/errors/500.html.twig b/views/templates/pages/errors/500.html.twig index 279065cc6..c0ffe16aa 100644 --- a/views/templates/pages/errors/500.html.twig +++ b/views/templates/pages/errors/500.html.twig @@ -1,9 +1,5 @@ {% extends "@ModuleAutoUpgrade/layouts/error.html.twig" %} -{% block img %} - -{% endblock %} - {% block title %}

{{ 'Something went wrong...'|trans({}) }} From fb8104849b94a5a8a089195176ba1515f15862bb Mon Sep 17 00:00:00 2001 From: tblivet Date: Fri, 17 Jan 2025 09:27:30 +0100 Subject: [PATCH 4/5] fix: getUrlGenerator in double --- classes/UpgradeContainer.php | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/classes/UpgradeContainer.php b/classes/UpgradeContainer.php index 77ce66084..17283b6d7 100644 --- a/classes/UpgradeContainer.php +++ b/classes/UpgradeContainer.php @@ -980,21 +980,6 @@ public function getUrlGenerator(): UrlGenerator return $this->urlGenerator; } - /** - * @return UrlGenerator - */ - public function getUrlGenerator(): UrlGenerator - { - if (null === $this->urlGenerator) { - $this->urlGenerator = new UrlGenerator( - $this->getProperty(self::PS_ROOT_PATH), - $this->getProperty(self::PS_ADMIN_SUBDIR), - ); - } - - return $this->urlGenerator; - } - /** * Checks if the composer autoload exists, and loads it. * From edfb1640ee5f417933685bb8f212b5fb4448fdb4 Mon Sep 17 00:00:00 2001 From: tblivet Date: Mon, 20 Jan 2025 10:12:01 +0100 Subject: [PATCH 5/5] feat: remove svg --- _dev/img/404.svg | 22 ---------------------- _dev/img/500.svg | 5 ----- 2 files changed, 27 deletions(-) delete mode 100644 _dev/img/404.svg delete mode 100644 _dev/img/500.svg diff --git a/_dev/img/404.svg b/_dev/img/404.svg deleted file mode 100644 index bf4d8e52c..000000000 --- a/_dev/img/404.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/_dev/img/500.svg b/_dev/img/500.svg deleted file mode 100644 index 0e9d5214b..000000000 --- a/_dev/img/500.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - -