From b0d9e4111312e25be26ecbd971de6155ddddc928 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Mon, 18 May 2026 13:12:29 +0300 Subject: [PATCH 01/17] feat: add runAction method for handling custom actions in AdminForth --- adminforth/index.ts | 81 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/adminforth/index.ts b/adminforth/index.ts index f929f74da..473b92d92 100644 --- a/adminforth/index.ts +++ b/adminforth/index.ts @@ -29,7 +29,7 @@ import { import { AdminForthFilterOperators, AdminForthDataTypes, - AdminUser, + AdminUser, ActionCheckSource } from './types/Common.js'; import AdminForthPlugin from './basePlugin.js'; @@ -815,6 +815,85 @@ class AdminForth implements IAdminForth { return { error: null }; } + async runAction({ + resourceId, + actionId, + recordId, + adminUser, + extra = {}, + response, + tr, + }: { + resourceId: string, + actionId: string, + recordId: string | number, + adminUser: AdminUser, + extra?: Record, + response?: any, + tr?: any, + }) { + const resource = this.config.resources.find( + (res) => res.resourceId === resourceId + ); + + if (!resource) { + return { + ok: false, + error: `Resource '${resourceId}' not found`, + }; + } + + const action = resource.options.actions?.find( + (act) => act.id === actionId + ); + + if (!action) { + return { + ok: false, + error: `Action '${actionId}' not found`, + }; + } + + if (!action.action) { + return { + ok: false, + error: `Action '${actionId}' has no action handler`, + }; + } + + if (typeof action.allowed === 'function') { + const { allowedActions } = await interpretResource( + adminUser, + resource, + {}, + ActionCheckSource.CustomActionRequest, + this + ); + + const execAllowed = await action.allowed({ + adminUser, + standardAllowedActions: allowedActions, + }); + + if (!execAllowed) { + return { + ok: false, + error: `Action '${actionId}' not allowed`, + }; + } + } + + return await action.action({ + recordId: String(recordId), + adminUser, + resource, + adminforth: this, + response: response as any, + tr: tr as any, + extra, + }); + } + resource(resourceId: string): IOperationalResource { if (this.statuses.dbDiscover !== 'done') { if (this.statuses.dbDiscover === 'running') { From eded8d11de4d1ba24e8eb40c3de722f3f3d7c560 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Tue, 19 May 2026 10:42:06 +0300 Subject: [PATCH 02/17] feat: add documentation for programmatically starting actions with runAction --- .../tutorial/03-Customization/09-Actions.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/adminforth/documentation/docs/tutorial/03-Customization/09-Actions.md b/adminforth/documentation/docs/tutorial/03-Customization/09-Actions.md index 5eb502171..f20b9a282 100644 --- a/adminforth/documentation/docs/tutorial/03-Customization/09-Actions.md +++ b/adminforth/documentation/docs/tutorial/03-Customization/09-Actions.md @@ -360,3 +360,46 @@ Backend handler: read the payload via `extra`. Notes: - If you don’t emit a payload, the default behavior is used by the UI (e.g., in lists the current row context is used). When you do provide a payload, it will be forwarded to the backend as `extra` for your action handler. - You can combine default context with your own payload by merging before emitting, for example: `emit('callAction', { ...row, asListed: true })` if your component has access to the row object. + +## Start actions programmatically +You can execute resource actions manually using adminforth.runAction(). This is useful inside hooks, plugins, cron jobs, custom endpoints, or any backend automation. + +```ts title="./resources/apartments.ts" +actions: [ + { + //diff-add + id: 'testToggle listedAction', + name: 'Toggle listed', + icon: 'flowbite:eye-solid', + ... + } +] +``` +Then execute it from a hook for example: + +```ts title="./resources/apartments.ts" +hooks: { + ... + afterSave: async ({ record, adminUser, resource, adminforth }: { record: any, adminUser: AdminUser, resource: AdminForthResource, adminforth: any }) => { + + await adminforth.runAction({ + actionId: 'Toggle listed', + resourceId: resource.resourceId, + recordId: record.id, + adminUser, + }); + + return { ok: true }; + }, + }, +``` + +runAction() automatically: +- finds the resource +- finds the action +- checks permissions via allowed +- executes the action handler +- passes full action context (recordId, adminUser, extra, etc.) + +> ☝️ runAction() is not limited to hooks β€” you can call it anywhere you have access to the AdminForth instance. + From 1b33b65f49d1c42fc32038a77fb9aaf2bc238ab4 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Tue, 19 May 2026 11:03:54 +0300 Subject: [PATCH 03/17] fix: remove optional type from extra parameter in AdminForth class --- adminforth/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adminforth/index.ts b/adminforth/index.ts index 473b92d92..425281daf 100644 --- a/adminforth/index.ts +++ b/adminforth/index.ts @@ -828,7 +828,7 @@ class AdminForth implements IAdminForth { actionId: string, recordId: string | number, adminUser: AdminUser, - extra?: Record, + extra, response?: any, tr?: any, }) { From 44b23a41863d56c51091251ed3ecda8ec64640b6 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Thu, 21 May 2026 10:42:47 +0300 Subject: [PATCH 04/17] fix: add white-space pre-wrap style to jv-code class for better text formatting --- adminforth/spa/src/components/ValueRenderer.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/adminforth/spa/src/components/ValueRenderer.vue b/adminforth/spa/src/components/ValueRenderer.vue index 743edd5c2..7c84e0e54 100644 --- a/adminforth/spa/src/components/ValueRenderer.vue +++ b/adminforth/spa/src/components/ValueRenderer.vue @@ -188,6 +188,7 @@ function getArrayItemDisplayValue(value: any, column: AdminForthResourceColumnCo .jv-container .jv-code { padding: 10px 10px; + white-space: pre-wrap; } .jv-container .jv-button[class] { From 164e97c515677e785784323591635dd6903aed74 Mon Sep 17 00:00:00 2001 From: Maksym Pipkun Date: Thu, 21 May 2026 13:51:59 +0300 Subject: [PATCH 05/17] dev-demo: restrict allowed actions for foreign resource configuration in cars resource template --- .../cars_resources/carsResourseTemplate.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dev-demo/resources/cars_resources/carsResourseTemplate.ts b/dev-demo/resources/cars_resources/carsResourseTemplate.ts index 1162a0888..4e2757560 100644 --- a/dev-demo/resources/cars_resources/carsResourseTemplate.ts +++ b/dev-demo/resources/cars_resources/carsResourseTemplate.ts @@ -263,6 +263,20 @@ export default function carsResourseTemplate(resourceId: string, dataSource: Car }), new ForeignInlineListPlugin({ foreignResourceId: 'cars_description_images', + modifyTableResourceConfig(resourceConfig) { + return { + ...resourceConfig, + options: { + ...resourceConfig.options, + allowedActions: { + ...resourceConfig.options?.allowedActions, + create: false, + edit: false, + delete: false, + } + } + } + }, }), new QuickFiltersPlugin({ filters: [ From 21de1d897e8bb9a43f50067172e8b52e3714b260 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Fri, 22 May 2026 11:13:37 +0300 Subject: [PATCH 06/17] docs: update Markdown documentation with new images and improved visuals --- .../docs/tutorial/08-Plugins/06-markdown.md | 7 ++++--- .../docs/tutorial/08-Plugins/markdown-edit.png | Bin 0 -> 83359 bytes .../tutorial/08-Plugins/markdown-show-1.png | Bin 0 -> 83839 bytes .../tutorial/08-Plugins/markdown-top-panel.png | Bin 0 -> 10031 bytes 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 adminforth/documentation/docs/tutorial/08-Plugins/markdown-edit.png create mode 100644 adminforth/documentation/docs/tutorial/08-Plugins/markdown-show-1.png create mode 100644 adminforth/documentation/docs/tutorial/08-Plugins/markdown-top-panel.png diff --git a/adminforth/documentation/docs/tutorial/08-Plugins/06-markdown.md b/adminforth/documentation/docs/tutorial/08-Plugins/06-markdown.md index 3e8eacf35..755d9f0b8 100644 --- a/adminforth/documentation/docs/tutorial/08-Plugins/06-markdown.md +++ b/adminforth/documentation/docs/tutorial/08-Plugins/06-markdown.md @@ -36,12 +36,11 @@ plugins: [ Here is how it looks in the create view: -![alt text](markdown.png) +![alt text](markdown-edit.png) Here is how it looks in show view: -![alt text](markdown-show1.png) -![alt text](markdown-show2.png) +![alt text](markdown-show-1.png) ### Images in Markdown @@ -180,6 +179,8 @@ plugins: [ ### Markdown Top Panel The Markdown plugin also provides a convenient top panel with formatting buttons, allowing users to quickly apply Markdown syntax without typing it manually. +![alt text](markdown-top-panel.png) + By default, the toolbar includes common formatting actions such as: - Bold - Italic diff --git a/adminforth/documentation/docs/tutorial/08-Plugins/markdown-edit.png b/adminforth/documentation/docs/tutorial/08-Plugins/markdown-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc87e7fca13701aee06e676c1632d58d6012e7b GIT binary patch literal 83359 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

85R#TRb+1e^Qkwwl}uY55;e`NFasfwj=v ztpoHoxFP8QH1~{5#jqkKBLj2?mK-gof}09wuvqsl-zIPwq3sI$pH$9kW|_pAinqF< z1p?nT6zl^IHY>_?ZLP_CF|n{#i4Pd|V%`ymxnkqO@xKD6NXcNnD#)prX(Yc411mZi<2b%dU^R-WYyGZfufr4<;%hi z6kC*f=4S!l!>+H0S(`ZgvSv>XN~U25ZDwKyfx=E^=4&A-Z|*U6nhu^2^Q~Zns_;o` zg;Nq$W`-kwjP$Ov@(C%pw*2rYrQ3Mw?e{MKv96mP>!pN)iXkkZ5Yai@JW!)pX&ml{ zE2vO1ovJAPhN)cTu0;e$I6w@!ZuYjT#?`4ix_Y)V?gc0lTKg-}gh?R3)*+uaxw&0e zA{4pzh@JQ&ZCn&4+yeS&tFvk$MDGJUq4;GK#;-()eJyo0lDnd{7G$(tn>RHb14b+QD9CeEHsPyP1TnUqm+ zv}@*(U5ED&Cy|wXz{G)3daDGw4MZXWBC>H@L9nSBmCc$1=*Qlv>xwabb5#M=z>i3e z{IQ=&K8?b&z$ob6Buq}1rcnoFOxz)x?{qDBe=gt9oqhi#V1w_NhmO?lQhP~6wCfv4 z<&1eWaG+2WW;aa&5R2=oLAEnIrn$Y**Z*coN49_;5#~3+PMMoovatwP9>p<{+EON* z>EdA+^xWs->%3-6m~XxmB}8Iuqmzqj>*9p)12{J;3CF7Qs5zq_jO@PP-s7o3S67z* z`>sl#os1bObe$PlpDQNqBgPTrNLM#R359NRI20^ zOgZ}^YFm^gbKyRW#*Lm5Io6wnW1gWfC#)7XZ`^=VWLUz)Pk^%Z7L2Cyd$91aI-1yV zx37D$jWGj^)PA1rQNSibeu=2=!oHsqFf--UYvul0J(rqH)$ZOq$N;4Y_4F0`DLZL_ z-`c^1t-Oj9r%C#Dkk7>8((Cn~*n*RMHKTdq29mtKeWJn&e5E_(_8`7A6Gr!a2f%Wb zPs&L16?A3%V%!(i*vD=j4AmGgyciY{+~)1{X%QS62(zmIy(Ljptn=+cZ+b92Q4+)T z=7U1UiL!=&28VunXBmOTM?l*W=SH*yC0uh*4ioYh~m1X)i zLo|#%q(0C$RGsR@gx4BUb~g$+7axxsxA(+t_H3O+Jx;=L7n~(FW;r8LCTER#H7N*s zTx+D?y|?#f+B#xD2&;CWo1dIgotXWSYe0veUVE>`+a5A%rJ}1o55RHC3k)9Tw$u?* z7B1GeY&^2Z4rdRV?*Xd7*ySZz3dgn8z3sILtyPIY2}%M6GkQAU(gpomn*H%`ceIL- z>ZD1{IJ6~CGpr`LSLm@&T!lA%7m{bwYuvaxH&xD>Bem)7CC3Vf_6| zx2l`Zo$QI)S#^dkYPnu?2^_d%ggK2V!?1b{BOwbQRGEeu$uvUKFGjE)_qf+^WEjuE z9Y+{2xSSwNJr1hG&u(_laN_n zS^v8E%@{YMCyDrBkdnbp?erE?qe{09`JJwsJU@%>CF5_NWr&B1-J^@bl-K}PwVnso z6eK}8EMYRLnj1cjFMY_S_qpExHg}Pe_ju*Gct+jhjWGMAq z7JqD+t2zZ8X39n+Qc!emPBd;xyFYc%?3tVxK9eA8OY=k%qok+FjluDN8><3Xf~uQ5 zt&p~&;q3^>0*@{Aqst+gW6%8ILQ}MFMAN2q(hrX4sDm8hp+wc8q23&>1VodtG6$?9 zqm4qWxlvXIo_edJ!$K#`)2;&qiq!6P2Vu7>1?-Z-%DyW?PT-a5q8fHI!98`dy6rEd zAbSih^v!!F}2lh|ZsvvW%6;HaVRxaX4{yj|4Lwpc&FVqFT?em{cz7p zOJwB3xTbguUBG53`3^svUK-X`o5CG$l7zt zZlWw{{T8+F0>gmTLNbH=6*oWeQW__qd^X)t(#hj!T=d7gNKaWng3=!L>LIhiF%O+U zW|c~|Tkj~9$D}BpsJ`3?pUMd!wqoygJ-nAmux&^`C+2pR4MA*#Zs*v+^~iESZ)u<= zaDmB_`g;8k6aN4Tsgc2zj{e@9(#paf?woqHhr>&sfEeQrv<<3@nu*-@8Ay7qE^;Su zmCAlqGV;5sF~jGmN0=E^4_o>4Le%8&bgd!=d@}ikAk>NDOUM*dc)){ycCHZ5E~;Pkl0V~Gh9N>OpAHbuaT2m}5Y z9y8+LL`?+GTi0L4ZKt1UB(8l58J>SG;`I;@xAuOBnY;cV=~|r;BXQ2bfuFP%VZ-@+ zbH!j|Ay&fc!P3gTqVs3U*WK-Yddhdi2oWr^HpSdvYs2!5SG~oIKn@LDRVccKPpLdE zH{FD3rmv`>zI$*c7m~kRIj|XePC|-Nt`{R{7pKL!Y%BsS*=zVRka*_i7JQ0vn!K3n z7`lS5H{2;~8$Nf|e`-51)7;v#SrZ@9yZO+vgoet{3hb@v*}xI7gR{xv%n4PGm`Qy21PWL+g#8 z9{iB@tHh#PbUCw%LYr!;38SH%(nLYy!@l|xa2w6wa0=-{HU5NAsGx1Zr)jWY%tOzC zBQd0o$*jGhwo#v)S{djqOFK%fWwx<%v?BhsMl{W$$z}6_;YM!N=Y!eCy*_YgXY(IK zMGqc|z^L#Sa-Xevv&%974_k^J?r&b%iIN$veqW)jPN9&>xNHRQ_rdy4-Tf znezRzpuNW&Bx~~olR<8 zEvt;CJR^wX=oT1wqssU-uH&j_y>;j%)xGri z2w~BNua$q;<~Qck{ycu} zQsb(P(QN)#2{q5KB1HI5DWaaYMsl7~heM;8sUuHcRD|EG)W`5^gLl4mQA$|$TQY&e z^KKtM$xwJ`JA%^%_$kM$qWFL;?VsMip{s9o9qfDyBj54^W6lxf@O)ES<4=q7u289|N6Y(iF$qblbm(V_P+&L{Phd6 z1EH>eG7wQ?uCq4(TKr$1K{xsTh~en{#BhLqd*XdA!g($zZLY$9`&QnOIAi!^rE;g9 z_%@8fVt@06b^h(UL$f*pKIjlZ$?f`%wuIFV87da{y5D(7hnNX03{d7jFmn_W|0FO2l~&eneIa`>5Rr)F9&dlfw7fsTF>iP# z#P>cTWu*P_=aGa{@D%}(N^>~kSDoI4x+Ud{eR)oMy=(XIoN^MT@-CUY3L{6a*Q|87 zJ?F2P#}dy%$`-#%Hcivz01hNAUy*zWA4SetcYfI8c(KX7H8Aab z|52JigdZZ9_l^SwKP6Y^pVH=UJb^a1`Jb^!rEEcQi*A9538qI;PVch%)=C5J;(s;V96aK24#4rD{B~z6!ei)#>Xe4G+|jKNM~Hr!V7! zY-oh$IQ7xe^Lmiwx=+${iTjb!HjV(_kEI5^0V~0yg;Vhq3t$}R7_j8Unw*ck(UnK+ zoLRv%r}8lZUNPun6#^|f$=D1_gp!fM*2jH`O;}|}QX}Juk@s~t>%2FZaL*~#-^e4z zl4dA5w_E}d@H%~3R_89;plMtu4fjPcQ^pMftS&dSKUu%DViChP5#B7)4{132A0~6 zMI@u%2?lGHyO-GuGEZ;TW!E6!SX@v!N~1qfpgDdH)Grn@q2JBBX)W84p}v0_AusdZ zT1ZO5(X8sM$?DTjHvNKxip~=0v}9doSeUM zM$8QMe!%w{wJ~?W{U6aD*SraY(n;xlI`o-XE;~-*xqDCb>_||0E<^dCj(H4JQQG+6 z_S}W60V))demwVQ%;=ItiuZ!dnA!v%76f0Ii#B$VR&B~u5=uOZ>co97pyq;`p;60{ zlz=5mV6)kKX%v7Lh0fz0F2BPf%Nh9knl~dc$Sqq`9TOKZ0LKx;V~XZCO^9;yaXfFn zQ&Nm{ zwV&9ei`OC_$>lHYUGIOGXdu9=V|ckE;d0B@%#wM1;d%>P!GdoPb|Lqm<a1Z*p_w-km|`9I{qMv7$tgq^hy1TAecn6S&#fo+6?kB`;;COO z%z^zOnw;kX!Rg)%4NXi>@+1ckVd1XubnAv^NHkufWCH7k%cb)5>;xZ^9^Q`<625F_ zRKwEh)!|^-#Ju1rpM9Hk4ZERker5I1gx1v5tP-XU;dTS3o2~B)kPXzc5rE4^QFRDT zNMY1b5^h!dyu|*hrOXQbI)R7oft(o-J#eB-{pK8h7GmEfDh0cHG>)8U7rIP zq&jog+5SF5d~P3aN)7%~Cny=Do0h!n=*$yK?GJrLZ@NiuFH-=XCxlSI6LcKkgL>wbOZeI_t2j^%JLO2wkQ( zKvusDhraZd1h*^!>x+56g?az`?+|ovl-l1@O?@b?O=)w(R{OCYauO*9yv z+hPSD!oo$?vV5GZ+H@~kGO9i_8f0KC!@-t~+o~B%nqthQ9n^!nTMM*0?)(Z7hiI<8 zTUJfeG83IJse>rXbP=Czi?xWuDy{{27SOGOlH{0xOW@mm(8a%2WoN<##=0l#&%d5y zi#Xc)0S$v29Ey(gML=Zey4)A7C;o8L@hk?-FGVpdSt-lD)nKJ&u>Eh-Vo`QXf*f72Ol=<9q2=eDIx4 zUdUD>k~R1UxM(K;)V|~TUxxSM8x-4U=P1FtyDHo_RenWdNpAX9~4k4e)glj zeT%*b{r%HNs1x3vixg|hZ-V6vG<$dk62#yp`DTKngAcQYHkf%2E4TEYzlB$$(AUx+ z*O!7wFE*CyU?dMZm2Er3WU(-)J8MVCPKEw9#sUQ3E7+A@#u*b{7QhN*ar}MskB?>I z+iw|Lb`+DHWm>+C^pQYfp8KbpUi1r#eOPR-h+9%k6pDbE=9h0Hrq$UBv6>JIGvDgH z-0A&^1jVyd{~dx}MtzK$T&wY`SR%KYgYo)mvBTf!6ME zX@N61NJvd96CUXJ53kU$^++BTu!T}QsSkD~V1jv2+4>I1K^}i6v=0I`GaWJijd*^E zTvEFeymeP{;x2v7P0n2BPWc)3CAhDbA}mLVpOJpGbonLyhRhfXr~h?)JBH9I^RtUq z;fq(;O1DF1_R05*u^|JnnQ7_KA@sL{zKW;S*MzLcUs@`UbJDYBCXEg*`V7JhJAUpP zQ+}$SA?Z4lvN$+mjL|v!M`jE->t10`a6*4nFhs0~>auzI>Q#^VnnXB_FnO^}M> zY0ob~bnl!_N8rDYG@v)%QE?OU3baZ&owhUwkiFV8j8K!NRXox+_bx8<^vggWaEFaj zVnKQLq_LQ(5&x~+9=yZ;BZNEZV2I@{)`=a;-_!kP#(slpiOP!3Xuz?FfWeHTc@;+ep%*5Lk0_r?luXY)y^z%ywdGCf(hD6ONry??WzH|U40}_I&b#%2%@}m(}(JG z;lB{z$|dnYYvlBgLwf-hGtCfH5f+7gPy2vkOG2E)1;xq>+~ksiyF(6si*c{>%|wqZ zQcr(@*Ee8Rk6D1eJzw4%U|VN4Ywa5qXP{CQx#RNJF{<8Efu(2L4F}(#5ShQmf~VG+ z<+r>bs;1F~8|NBq`j8go(n{(PFE(`@?SSZtuRn90zAx}OFu5aObbub5SY&(+x)RZ( zQq%G)Ge-O5^}}b$jG93>JSv3h#VZ8myw2?vUKu1lNLEi~m;AnMND&gK*lDusE?1HR z0UAw<7(#e%BSa9V7KSGzcPg2~Ay{7L>e5!TnFoSHzwa7YUn;}NVPM}*b8#BHePU<* ziov)fjW-!zyyQR5ox9li*R81@`n7wi72NTsQs~RQtsYM}lo@1R1Loq-&mpyIc@d5c zAbGY#B6n;<7~8ojV?`fV-vkq9{c}d!ho0;5_!IC2^%+VD`6d{P)~(M5bPFQ+FyQ=z z&@-|+{yn!J1ar>r;bb`*^qHSX>WRhE(GhBVzB$w+FM6}6f7}@|rH2oEwneEECq#p( zhv%pGcm@wmRHuH=jv;8Zg$I?aG+GR2d5S9E*c1H{-q%k}PaD+PyA;?RvLZHA{>r`r4ysnb%hxmd}6&*ZlG%EV^aA8$gu7z-jFAJ}Hmi zkmhrJQcJJlwxX>itTcfBF1Fh(dICeyh|(G!J-|K&n;p#%Nq@=>C@uI z)Dy&tnxIDfyjidy7(?=*M2ecezY}Z>@O|ECvJ4LMW|?om{_T>q(OPt29wrMC7MtmJ zM8*{LY@}^64Wzc@wRL;JRXC&j{lwv#I!B9TBt*G&|HnI*5Px5x4H?Np?Fx!gdD`T2 z&mcg=^?qyE8XWd~e0ci1djX5Q?H-wacy{(-uiKu1Ml=dG@D%PJqc>0O!++#u7&1CS z{moZz_p2lS<1CH;vVsmsIW4#|i_Cx?#5HcO29l*m#Ze(f_ZP~h8{UKs&qaC^3T%6n zZ%Rtsst_4yHvO!mel#=P{f`%BZx^O(yY~e%b)z)r!`^$-C_8kQlZn=+bCcbQ;=Q3X z-lUY-bLDBS6_N3ch%Os(-QWHL)yl)`BZrk4K%`I@g#`ltMdvZ&4YkHwc$a5{sKM4fRJh^&_{=rRlnbia!d z=S_%K9!LUG+KYFt3%tYcFZH4Oe)>F`Zw01J^B|+ zbrWV@@KnAqxU|%(^J)uoU3ud3nDM@MSt1eW!g}G~NMe&6Hx76yA2{p9yO|B|%a!Z0rIlf504WpQ&Rq`x|B{ zK>Lt$Alqw+kf+-{vmSWwO^+;&w1uM2b|j(UVG5ua&l^#x5=V4K&Bp-b@j7(3{387r zRLZgO=k;%LIJ2#k=3u1V&vb^hn%l7fC#Lm+%qhDGnw%J?`iDNVQ;;Y#QM)6GjljZ% z7>BtfMACmMd7(B%KYpqElTdeFD4@ac8->^fN&XL@t^d`*=T4slJaOBAGi~stis+>Y zXoy^Tdb^B4uKOIP&J>ux7?ZbD;E&z;J*Nc=tNbHMyWI-5dya-odsnXy?75Y$naJ1m zlasSvH36eOyMc#{FE_KVBbn_d0x}&jOWGausryc^VbA9o0Iik5O|w6T$Ps%* zhc=4iG#G=!Rj*NPAHSZHuCLld8TnjCX$x>Q&;66f7SoRUCPZp`yD$49DT;yDGuhVL zk6_ysk@epJ6ZD#ziAbwO?<2UCaLK<^v{*=q@ROW?zKGf zeu9mC)MmY|g^+$U5Y*=?X3=UqPnTPKp7SwsRctuE{@bq(4%Wta%sY64>l)mQ4;Jz^ zI5U<`smmiy#aAg&5?#3u6YHTBw*SgOq^Kv@nb9v|D*3(SHxVV$E*89DWYhf+GzGZc z#c>(P|FHudy-FM$G8a4Y&$)1wj`4qj>rfQSQg4Wn{VHEZeRB&1`U-s>QI)5!qSY8ymuWU+qXefx~A;IJL1MBiD!2ih)eB$^O zH}?nDZm;~m)KCB40Qa6pen>1-M?YRGeXAQl@m}MXuv&>4l*=n!v53#uD!&Z>qxM+G zQ=|boKvDkknTN=XX_a%e;iTXuRd@VxQEw2mB&m4t60>=TbY9&N4Xib>vbr|&py8b# zx&5`Pz4G@7Cn4AO-^1tdg%A5tqq=qe8!kXfI;xllHtN{8StbjWrX(Bg9%ybfVZusUC^j~}%o!a<$7)h~(u5vRao#+UbHIXF&$7^4P)RY&n}&9kWPPFYvA2*So|c{iJWJf_ zblLJ+)bY}FA+H;0n!Y>h&Q}px^DsKibv+2AtHh z8xeetNhz=u=yQM%?y!buBYs5eX&tEwd_}mhp(n*XVwy*gKG+X{6WnNG%q!Ev?r;AAYBxWFYsR ztsL?`yEqJjOCQ1=mx9qFLMp^>LilRiD6{7zfOMK(@K0xzw8}RYGX%x)RT)jh{pXFz znZT^{oX>O2^rXJGw+fkmj%t$)wx=0#vdg)t)Xd(f&ZWcrcw<_#QzeVtP}c=^|KdAH z(+$b94bT2=vDeQg=oez#@UO)LRFUMb*olU(Z~b>YwBuD?Ixmq&d*7TWh)``&3{(tz zZBh-fK9%0`&Sk8h3{%f_+b_;az}V*JpJijyj#^Bh6=5LRe8OgdVa12k4p$C&D12@xgmvL_7Z-;2fEll#*SmUuO zN{bh(wqzC^`s+I_61-EZSL~S_!oB=?0UCpvnFG!Zq@!Mo=}!&s7ro{UTF?t6n20+| zUjd0s>u=2()+}Rn>9fn|BGkh|!oT}aAO4Vnq?94?@skU%HQLXub(S`hS z0K%4m-r(UAddw?F8cUs-#F{ga5%zFa@yP^{*;bA)f{?pvM@;Y8f?@D^;eNAv>K-d@ zSUrnPWuysy0kc|Vb)v%MK;9F3)T+Q%nfsnM77`%lZWwoXlmRHC)fnM+t{L)dLU340 z7DB^Bws#2}Y=)K0Lf%@|426$a0L+)yVfa{x!rf6zuS6eglTAxLY1}%$7sEdnT5^hx zcQQLU*nryibO{N*dV(tM0iGB` z-#tyRS=>4L4hT=dMEI?u)+B$PnTk7*a!6GhIgONoE0pru{{w3}*^++FFnBY5f^YrX zMZJZgUixq#@lVaOLHm$!Gv}DAif+FMI7D@4IX>26X;(M5;quEQOju!OAe7we}|D`+_&z84+OqkVhCy;Vx;$woYQqRoRXw z?y0xArT-*d$p&Z(-VQS2(SZiEGQO_iL(%oUa!HhA14`@phW&yAzrOl!(O0QwJFVue zHIw}py9A)D?cB973~G*LtdhyP1+s~syXk;nIu-ArUK?SzfCwaud-Z!K?t9pSkBh>K zUIx9707m5s9-&6J{8?K9~u8TcE+?b6cv1{}&MRr^R zv+`ffkF2JWS-dE>5WkC;7E zNpSF$Inrj+Ar5+W*ZrYbsC4I^y?vC3d_4a>#A4;St<3dpebV5X2kuQag&5~Xgk+ZB zlmM1JvfhzlB|b;{)=PjJ$5XK#Ihi61HDj#a`qH|5dLyH1r>2zk9p$Kye=wreEydK& z_sq`9YX59(PU>nw1|4T8(y2+G9l(^2C-#@Fm6cKUuUe%v`#aN1luAy2riQR3!+v%6 zzGJpa?G5+x6w$c4z72yNXw*Yz-!vhJU__fGS2k<{(>pn&=wrce@p_+7N*8iU`3J7P zKg@DdaLn7Z}#|IlMYHPWR(@4-f$J zvrM(b;^Sdye_io)9G+ac-?n_TX&h#)rqF?F69$x=3v=q|?9wcx*!^aTuI!W;`mPq- zj7Zm(RD7VayfiVI2*M?zi!cMUhSCXdDYfC*= zZhrR5a_8I_3nowwBm&Mv!1~6C zmLCQHDjlmkc3b_nYM$uVmz;i^V3Co^`m|Z>>p_LDlb8p!wmPufVKD6Mk7XF=bfju* z-_$mwE%54%Ub+Lo7v!pz;r8(y!oCGGjfdlMR4h9)=9k}sV^(NFqa5G+ECQtdVT>)>@eVZXk`+PxY&)>;(FSHyh04b=lIY0H4Sz_xeIB`qUh zb$)t!P?XH^W?0DGX-$cguV0dURrX}nqoJ>p!!Q7{!xnY=_p`y(+%@0y)NP(dKiLaf zwX5!jnGJ!uL-ky394+J@A5pe!r~tJ|WL6~AJK%7%Or&0!s1vrY`=o$1v6WPoYzqV! zxoDrJx#mErihCesS;Kd~p1rX+oCRI7hAb?~DkdS#kEN7lnV3C=i65+%`z5?%^0^yx zrdX*80FvL~pb;A@BE^FoZ+FY$F?D(;)%O!L-(N*cHUNYe+?N(TP?Ke-BrA`nrkjra z`Xer28Pe|k(qdJe2B(kCBacG=GBMt^!7+{qvEnU3MB@nvP8$?%qT|WDe#)_2=_Tg9 z^!V#wONuO+tGeuB z8W)!ABpN?mqzMa0o`A!*viD#d-l)&8E%u>v=3*GyW%;fPLZ%(AB_lR5=7vq9rA$O5 z@Ywsrjn)k*nVAZhxjmPU8Wo~-MO;=?C=_CLGc3}AsFCTkwDprQ}!F7EdjQeb$AqdL}0Wn!;)KYAd*w(l90yl_Md*TA|?U!<~ ziMuhE^8@srhS;THKPe{ggp;5r@5s5`z;-dC?Rvr0Sz5I|eli%TftLy;8#=`pLT>A8 zt$VPXU?es2;`}TqVP-DSJ(yo>c|^$++ihVd09hTvf30RZL1IkBb< z&G6+X#S2xSsBHCSpWKJ~Z`Q^LZ|@$-%|NJDnP`{p2EHar90X_e4nU0cbgRI6aIe4U z{4G9F_N|eEDe#Us8f}`7#VScRNH*7GRDv+HKZ0e72O}aOSRR;~s#nF8p0~>8Yj=qtgs(w|PB|teGbuu3WmHzcK z3G~v;QDenzr2VrR6kI^oGm)6pEaubW*%vI(z_^O`kSZL(K|!079{fbouXwSOFw02Ka`0aL&f zWVrFcRZRNwJny#m6`4CN_1`DTU;o8lI6(aq^UwI6^SIhT=+6-46)x}K_W=Y;+RG5V z`9B{?dX!Ny(#z?O+&`qXFTR*^XoM}Xkooq&$edam@y3j=E4bg~VcFNg)X@H8J_!fg zkQL-*{Eh{Pgj8G3ou58m_&OCtwEyc$+JfH7W}m1dxLR<|?(VywZGFzEl``p2xHmWM z3cl2br=n+)@PAHASkjm0o7K{!O4Zu)om@)>K9ThYi;{E>NSGkDS6_wIgItUC@kdOz zAOXX*fx^McpC6gza&F!C0Q5=Itbcc4dwkL%8~*eo z)~h4zyEZ(KdjM+}OhKDMZ|XxnUp&gUpt_XS3CZHKa_U?0oe*b;GeoMVWvx-h2fwFf zTkxO!2_pZn)te&Mns;!hC^~nBEn9R00e6T1MK9BSdwAd8kLg(0LigDznRRMJ6b!IZ z|K1PSDSqqYfO;$?%maE_Xc+gcErg=A;C5=T^N~Uce%nwbl{pMdBFfv^N?05M;oWrR z|6mqT80(F2s(FjMT`ap{wlqZdi9p>CwBR{ZwR3wS`<5PwAp4WlKyewm&yZ4bU8E{DMPU}l)1E!bP$F1d$$V_yDerUxAY+YdnHQJh_96*CEb zc{l<0v+Ey;Ebza#cYAzaS7!GM(9Y6zTp+iq#mM4~EE3&| z%6F*AMmIDNBT*aTa6)%AnIB}MP?$i_er1y9ZT9e4olI&*>MjGgU9`uWme*qxM8{H>JDEzUqUzavp`oh=T2IJDy`vWp1 zj&9}5J4K(eJ@9-a@>eRs0 zXjpD4XN_9O*OQzJ6otrgMcIV@@k2!!(63OYcd6mVpk1r*d}}q5{_omknq;~#@x_Af zYPK8k+0Z_rt(6*7rviY8msyX!3iAX!6K+bFZcW71UHZgGc}@Ju|B|QCykXB|;76v{ zVBEPL=~a7Bvf!?D5C>k)K$My6l1JIfGqUp;^v`#rIEN$Sp7@#(tzjB}_{W8_@bU5M zEx+5hqZ#6us|N6r+qk70`8S)kSE@utB@OTu_D)sdMwg21eX9nW3oG!}!o%ZVUgQ;u zaz?C<$F8|Qhf+qumD2PC`C@`0ms4+PZjP`$?bKSd!bFfwms9@-h3t;q85^(ma8>ip z&5++}y$tw=vY8cu*{WtYdZ3=U0Ps2$b%iy(F;fIGTzz!<+N0nX&96)^$ssP=%gzkiVgXx7q$LMnX|-p&B>gGl}85>0ENCSEARE8cf-8yfLp0^Ul+LI9*|=#zmhdrlu~mq4^_5 zy*`Y%SdI|=BC_Fdc4Vg%Nl`p3A9_RP1~jddp|5XbDQuvwDb;cIM5j~N5`(_p-nKgZ z!g+gSwzIQoQ3t?CA)(T0fy?%Z;D?^K$;Lg}D7=H=WK{O(a$4XP2Q{AuclECP zL6lbg9GoCEbsFA_)cUg50mW~6cxv6OR*`(=0NF>?T<^MFjVmj-$%xo?f)U{ghT<9! zeM#Z`Y4;+EihmWl0-8YuQzRLw8}zLj4B-rAYsDVlAsM~T zG#L3Eqfj+!e}Ln}WqJMAJRkMJhY}0r@$ppvUlJ-r3R~6Qq*)qGhw!)=G*JZ6JU@)p zCU14dDYv}SatP&h3y1k{9^BT-eUobSk|9Bj&voL=4u#UDeR=ZG3mJxe1v+Ki2IlK0 zPlfdBKQqfe*_g`Vj*w@lNvyPo9l)1VJ4Qd98qz=tAHgYh%7fihQV+K6arUDl3MGOu zXV`XU1y=bsc%MAF4-VGBsDgRh+I$In%aTyG6$EQ9Dr&xksGo<)p%%8pa9w}r%lKzK zva=2{rVU{G6Yp)+QHDi;uB@QB=aUb#M%II1d{xn}Lo8PnZna!?d>`J?PI?&9f?!gw zLb-3#6#`mr)RAmP5ugS-UC4fY%Q4ErhxV2n8AJHa4y7X*<=Z3}aA^H}F~F#-f4KKf zMURz*KAPF*{J8$%=tu<&BQdoxo|=@jA1QHJ%@@G3i zYx6I#c-V+UF7L)^L4Kuk7-^MaJA{&s8-XUF0CYcoi4mrqS|+Oipz7Kp{Tr4C1Tz0Nes5v&&chVa0(5wKSaFi|GtoHEObqa%v#d7tF9G(l^Ft6%^>F zHc5m-#veYsviJ5l!KtMZjk{ShXe>H4v2WU^yTeR>M`98EI+k9BY5)2wfD|_NV4;=- zOj1rt?zah!l2dD~gueXAprZkXNUfCH zt?&KDM_VymO}Qfv{XqxAExe@mf((|#v?L%JMZ2=x(?{582#Dhl!L8n_hpeZXj3)nd z39t8~Y{zbiX1B1Ky)gk^AGTdAmlO~;H9 z>kT^BVpPSQQPgGI#IcwzW3}|LxF79F?Ur zQHI!i7#mY%RDWA|&)9LnAEqcv{-AMt*oKDyit1!gJa z@e_47UD@AZVpSg!gAUJc!PuS%-1E2~)T?JTn0?k}xQ{64Fo>Zkb23OccK3bJoS%*B z^P%MT;bYq6ACYhz??S9vjx@dA5GHJgY`d%FL3wsYml&rf@Jtolrjbu!{+X-9-T^!D#90ngElGxyxV!W zZBf5ox1*9qrv6wioC_Vc6gUuld7>deRAu)vN&O8k%I3>@6onvleIm!pUcdp}*z27K z;gihUPL`n=xQ*mn3`@uj*^HhbN;7Uy;WwCk3C&5Wdri*JZz>bf*YOIRUS%+?8ft25Bi+KHdlA#VRe zP1u$U4@?Iw_KejTagkd}@*k=nce*xpX-k+?mR_Mdhnt2iN_6;ePHx9U)e_otCe8$f z)rr-ssx#Jne3|uIxCPts5naXkwz@e!2gzVv5fQ)77q%kAOxVQ2Vf;8mng@lj?E))?y$l8NMy8J+CYCq8;ND^D%~6$yd9D#*4)ygPU7hP(ke<7ataeA4?lm$Kf$Hh9M}lO1CAj zFbaTY#;oW6b)mv;?#p(EVc^Wl^BF$%AJz_Dk@TZ;iN01VS-P`hN%*=jx#|VbOC57< zEPAN4+YqvQKtAdx|E*@8@MAWI3HRTQ1JxCdin)cIligk&T1;74!1}+w+6Kb^>bxA- z@Id@##sHMpaf-%&Z8SUh|9&)03U4B1v^cvEB;)0^c;!mPp$fvgo|+4{bLuZvBPbpi zmGQvQO${xKW0QT{h&DP|U&Yw~L2b328EmarP-@pZLHoCA?O$&Q%e))OZG+8>`#$w3 zW43?Ck~vCt3pC&Tv1TZ&O72!!PIY@~$kTeI3V|E);@V$m_{FTpdPK=gduV@?CNmHu zJMmH$iUepN)EdZ8fb+bH88RpisW~uQBxs3cRcdMBEPl`@7uOT~7?JP4gHywukRq!w zu=LQsD4Q3@FD!R=Ou4wcQdA$EiyRos-SEc6wHD6f1|yTj1fW)b;bRFgP8jj;SK~+B zch@VQ)uQqpzL*kdJ+2&&@piP_vaif2=v3oQ4-plZo$uH3+j^p7XM`DC1Jx9lLU_DJ zcvRG^9Wr=|O%DiIgQ#q8;u5fnSI!JdLu$s3xf15O+UCb9ynn{J2pe+Ubd6#BeCFZs zPF%u>m9EZq0G>KcU`oLa5FuE~mR2ICiuYETb@lJtmox1Cf*3mn@K+@aFQ*RP$u!p4 zH$$!6Tefjy(W+5bJ*;!5ohd%IL!7_O13%GM?e?U|sBNdNYxhlLBkC~wp!5w^{|l^9 zFI{Tz5xfSNqCBrCLkqU}f?l48%=_lJyz{h5WUJ54llgvL$sy>b4R0m_YtBcAM&@J` zZsqiQk5_OyXrR^Vdfs!$$H~pV^KZMf;EcYW&~D}~AbaV-3EMEe9l;-BXz9~Ws*7I* zB-TErZ{tH2YF`p^1}+*1F&w+d?H04~&Ky^cd{$oWiciM_I`!c&|d8y<~AG%Nu6761{ z;OtcUc;!>B2!Qqd#K*Dne53NslTtcv4K#_15&YyvFZ|rX20iG80tctPmCeW!IvoYA z?n3~wK0Y8l%YflnwPCHN-k#Cw8DapKws~Y_AyNAC`I4YqytJ*0ty)I2)u(3M+vdrF zqC|FsfRIluaGcEInv<%%DX{9?&313B@8o&zQ^hQ}bvDAwvo)3V+F%vv@outhv0jU= zFcoOy(Xr}lnZFc&A`rF^g?4#suRaBA2@pV&*n7OyZWQs^eFLj9K(JNHaXvM%7E${9 zvX`PtTK(-$WU7`WdE1v1SV4;&H|p)JqU%eQSq;RfX@yw>td6zpS%e=mt6A>rty_wn zM5U3sFD3{O1mVcb=%dPn zP!DA`zCBQKZD>;wW&%?s^W{D=OsLe?JC156|FhxiJ_5o(>;+zapVy+qYB`lZ1Kb^iFA$xp^R~^wLP(WppVd}ovLgp?$H?!mi<0I&Zw`eApGvObCV$$tN)4(@lP2$)(5;slH;bO#2n)FFOJY&F z0CDm8Z%YKj_0O>-1w4#s;P@bCv^^!?C}TyYbA<;fCKIBEALxv8xk0m;zc?dsj2+u( z%bH$gG{aC+n>`Up_Sk-i`i|=IMvCw_CFa^!bIaulOB+1+!htuaq2U?tcqa*{Ddcb- zKZ8r*%Db~`K`dETI}`UqXK=gUpN zl4l-fY2mCalE~b^cyDS6l zDnd)gVM{aWF#WP7uU9vmGvFr?t1>M`@IK+2QxOrXvg;(N(-(NnvygbSi=dK z0EAnv#Lst=^~b9Py-rC4);qF4gl6Pp9mlP8ht^?o@s4JdBMIxMRcoEFv{C{$MeDd% z^J{^&3yx<^;NO~=baQVT)rX52&pj(iK>UCoMgu9prpGQrkk@_4PFs6w&rHtZ>O#<1 zZh`%UPhu>G^2B<%S!#Wg9XAI8CZS+vZbzz-57B*4{gd<;$NcCxDKieMxQ9)8BrC2- zZ6;0gWA7$++Yh{f{Z$9mT=kIOYj!Sw5O`V8CJXr*k87{+1q>^9AHM2H-vLh#8a`0` zMT@=eKGnU&kml)>(^YGvzQ7ujWzAu{<8_9O9xUlf>e{_GmEP{UX06XHb!p^YKRTY* zKO23p^p*Ru6p~fMa}firXMOf=BsLU+VB!e_7(_%~^?F;X@}h7bm{c^%^Mr`lfhHUr zxi-(O#?FYxcLttjV@5rdkq;?N(ca-(2D}<_D+JRSg$QWkwbUP_zCLZ6MU*lgYPPa; z{qQ|Fg??WqRY(&*LUQL&8tcWLJg}=)y^TM0O-q+Tp!3HuPh$$A@smC6^*X%K(mvuS zVRkK(K!W7(joHwxtm$08nmUfcr{!}kXmDnHiPX5>Ru_`H;*QvMYev+3^E_z~l*Yk3 z9TZg3_kn(%k}I&9@k9(+%GjTG^+7DhjC(OD1{D8KX=fP}M;ko&Bm@nTK!61nClG?` z;skdIwz#`4?hxGFgS&fhcXxM(;O;COZ`GUk?mqmhuIlFF&dg)m-P7|-_phy?0RSY{ zNNq{I6FPayGLsf7_!0wsZtgf|E8HNDi}IYdl)x%Sb`y~>8r(me5f!T9GE1cNXqIN*hCN+Km(f7Yl2|6?B?bwM|TmK zU=RQ4m^O{qE$Ry7A!8%UQ0&PSXHdEee-Pg|*{>?S)3G%V7uH>zIv;#|Y4>~`Kw3}! z^y^b~cEzzvI+O^sB(jfPxJMV)C8AB0)o^4gK;}DXB$f+C}vBQ%r`IQU%<`i zfb#=k;TM^Ai;Mh4qrYdg7kf5D@}s$Vr&ecLxxqYnWLxyKYw6P3FAg3>bxIHh(wJWv zWN;Do)YKnX0;=k@$2Trx))*gT%n+by;Z&X;-Ysor&+p71-LkpY+@k^KZBz(zV8}O? zq8C89f+6Q`Yl(OT$3z=Y^BN>Fd+gW45(QW046{Nq4&({-HN~Glh+l>azx(%7Z3TqWtM9 zf-kM)47tU zhR~_>1@NjFSCX6x@^?jutUIygo{h1RH?&LJ?1>pNnH&R zF8rQ#;RVhN^EcFnr}FzWK4>Cym5v8)$mHA|Z5n;`3F+-xYW)p9Vf!ld78>2pM%6#0 zT%srNW-n9sUCb$XI`mDOsLQd8&hms-pQCevT?XXO)ssR%$xe0p+(xWU;h< z-v=)jQxmTz^1ujj02T@0!~&~Cz-4Jey^spv?PD6zfy`n3?fF->-_cNBwYgp{7W}z5 ztUYIjPz<=T0@&GATcv%coz3OAS#r zFBD049XjNrA98GVrra(()V5rx6K|S(d#Ji_p0ZDC@yDl-GsgPAoBI)Jg5iBXZc0Ov zIb@d#sJTZ*(ZVanHU~m8SDlvAU~ai?iF7F*qZ-e@AhU36dgA(@;0Ij0>#EeQShow2 z44@gP&?o%O69^2+!n8olZ;4>g7}Ipy0V1Xb$fLGOYlT4SZ$;-~BOFdjpQ zNV2`@joiXJ5coJqdqj}G3Xme$faKJTza!og>x2dLB;4K0#4yq#oauGYG4;Dy(lr>^ zBH}GKSdZ;aHHj^$ig!<)#?-RCgB1;x4GeRR&tq38HPDB$gl%Si=y%={%Cc|QJNH%T zi@r(-+a7iEo9AiIRhOGH@3Y?}w|R~Zv=X36f0n0r+z-j48mu70;%fPM*3zR-z!Z5g z%|s2k&DB2T2$mS3uZSIHDIU0#BECFsTO3Le)P)(AbkQMAvegwc`Q{ToB!&avJNo{$ zcp)@jPDojSx{_2iE`2efo25zAPMO(VmCFO|wYXjSeJqroK&vOA!n)NrDTMM&=?ob` zZ@7Ct&&F6#^=AV1**uAVOZxZcU5&)ez4aY9 z`yP>kjV50@x9EyYTq3UyrY48Q(wXMAq-tydgj9m5lSshQfCkWWE%f$eDG2F??xd^M|^iF8WZ^S3JG1saZdUGk(})DWX$Qrmv?Q3Hx<;)pHx9#iXx5wC?kq zztnKogjQH0+Ce2cl_G6H9H)u&&6Ar)Pc5z^E`t4fx37M9zW)w;^XRaZ7r180N8R zuw-W+RZP_phB`hAI(A0cnfoBsJH!;`r$#u*Ci~nNXGZ9nSxOVo$D>cxA7$o^*wrN{ z=K9Jkg^M-L^>k)_Z{U8)O#M8)>#pr3-s9DK@|rT#sn$jdRT)V{LaOxp!f-TKjXTKU zMSL8WG$W|e>md0oe?OYjj@5xKy);)ezv znQ!H?Zhd|>*JWtdKd@`#3Z<93Gs{UcZvX7YJvg8Wsqb+B(dNS~0{p2ZGqnQYywkqFKs8>C=J#V2TI^qtuow2V zdzCJxtxPiini%!RF{O5iv380yZC|h_ZA;td85t}Fl8N{5`SO-u`-HXB{YP{*mHJYn z0f5X%mKT9R6x%aP4Vl-+%}5mCVUPJmda6%HboYE4w^&<^ojm1#5)sNZ^d$>vJrxI2b8ESY!IwWZ!tZZ)(QQ5YG6 z6YxVyRpO=N*rQ;J04w-lFkd09`r|y`PfY~kRz&Vq+uW)%4HE2^pg+8=L&3T%Oa!T& zPpqxqpB`<#7;nPdr447cyCWmIj42(C09GXoRt0Vs1J>Etw{S1ys|G`3H5oNQN5bb} z+HV;0&2f&msIxu1ay8NQ+9Su$OWHQ^P1MD3)Gm6-g!xq=am zBz?6mtzk%l2#m>j%im-x5*rJWc_bixrDf9N`u%G=NG}Ph%CP%OE;yw44DZvzG)$-B zo`}Avo+^^ZTRtb%;;)DN6rXI*iIGg708AVOh46li^uPMOP*E)PJ~hA!Kapf5yTTXR z`w9hQa;8g+4)~{$`Mr?s{SN;F-=~f(E87T=R``rxW(wQ0f&uQqd`(>lra&?bHOzS3 z&EX=|LE{lN|30O8CnSiWApc!c$ClVmg#B$I@0jj=NxeTY+bG+071~76Ymr6Xr$biy z^kLH5=J3Ej6}uM>XnK;dguSnm1df(B4Yqr%BOOR)9F&?lb_&M5K$`I=Bo)o9KTLZU zHXdscStY??Lq&gwMd^j1X_CTZZi`OQnV0F1PAu~5-VN3O*KB>M@FhzMaXCUBk#~mg z+9;0sf@-I+Y;0^z5~n|W_RD73gJ-$1Y>h9w#_wxwtU zK5n?rU6b5v=>zEOG~_IYY=hP~tRxcb>}pG`nl@ z!^}DY!9=_(*NW)G(y&aE)xpDfJPv(Oe7HUwxC&&u0`L>IbZuwEGsT`heqO404=2oA zcc1`m3ju3kB%l)3!Iw4rW885Qn)3Ab>UZ)`uS0#*j|l}l-4AEA;q7yooU48na9vT} zMdUkF&Zmp z)x8kc?k*l`0H!n{M0vEq`w#Y_3NkZN&5S_qV>zPj2{x)KIfp>^yZ z3hZv}Pis)-m)$&Qaak&W&B3VhPt_{G7qZB4%n;QZj)OASdPf9JFIjoz&Y8t(Kw7G_ z!=N~=f^xy*CcysJ#|LE7W=$koAAX3{6SD1PM@xkFvCXypj_RcjTs{ghatcpbmzbAE zvm2!HR{@j9kP#*}|C8Fmc^cKKk8sqD6T;r$&;nSwJJ0hdzikd?`0Vip8D$bBoWfvN z)0-b1af+|Ci{mm%!I1X?&jtov%-IyRlGJ;AX1mgD^rE)u@aEhW!B>6EoK=^NP5&)kbTBvDRQ<4duX$OgGE9%z z)|vW}ixGa1Z~#OE6pN8yqkJ*1pp+h={UD>MuVeSVRUAiUY=nGdF>=--ZG1}Is5_J@ zjU#|EW#-03L<*Cp^~FvEhq+>5c)ld#;18qOZ;NJ}?EKb9$^x$6G_Bgj%jzAfBXfoy zGWb}i{VMT@JogFNxNK=MI_xKbS(+YI7#gSLV8^dMQ$k+vMYPd`xq1O0cL|3>Dll1FEK(Q;PNGECa4h zQNGo13w*1AiyQGS4VhEUoy@dmqfivksI)h@h;B4}l!ZkL5YJMAOqgcQcF&a-d#h>1 zs(B0r!eL7tGE-{|){U5V8d@O8vF9D;nLSULcIYy8OvD`_syb`nmOc10f^U0VC)v~; z3~g_=W1QgK2YY;W>ZKb!L}f+nbLE|@lI|Dv--6K8fx+K*@`Q3(<>%PQdv&d@n(RIT zV8^A^hMb1PFTgar>*;S^ot#JKUY;1=TA}s{{+%1-Z!9rEC+ij}bwWl%8A09>T7>GB ztW&8C0Zj!=W0`G5Q)*>-^M0XSP zRXzfB&Kq39at^QK!`Yyff->cd8|v3L9j9B~;eAjQ4kJn7KCZ(OcL`$77(HR|vm(C~ ztU~-_hCQdWvlu(A-M!!26uHu!~0q<5}mcvo1Xe`<}~!s&;QL$;Y%eY%zk==jgA5N}1n_ z9vpck`=6I7_QrGTe|7|aF2>Q55}(N4%s_*Wq!{aP zRV=J#unb7~^X~PjnJP_uR0&pQp(#)t1Aw18pB9&{^8g=S#Ad~Kg)N!CZ0d6g9yu5^om()?i3f5)Zk4C zPvmghhD{+atH9p9VXwvNSPQMOjlJ3EHV^7my5)>Vce607f^l9xh@h*MFioO^WnQSY zAosLz_T`|?C;@dJ)MzQ_@wngL-v@EkabEb<@S?KDED#XME=^gumpPJw(G(Kz8y7cJ zv{`It^xuVH?J4b)dM^>An8!?xM;6+fb1B!W9-iH2&1OuP{#Z$tobFUsSF5qmaQo%D z{*T|A??{e)i^({jD5O$|1}(!wxASS7OyVm1d@^ZT5eK%NL1tz>FjZqYU`C?FEim~r zGIi2YJiGaLhqOtk?s9S2HrSqa zUApb9o+eOXV}UT>(6;QoWWgF zQo9mHY-2y3Jyq&;(@0N_d%zd(XBMKZp6>0~ltS0>`Vy~`aXc(p_CIKCo`oY2B&|%g zS|)d4aglb>=NQV{7eqh&H1YK_lz*D*O1vE1AYdrFcd`3W8PVIt`E~e}r9CnL!j~`O zz@u%pzHN+A>Imsi%>rXA>RxTM@(CX))+jv3=-;y@4JS6cBQ#dM>*8B@zGa6rRlMy4kB9;|q`AIlfjE$kvMuPPyHXKu@@aUVqf#QHF>y&qOMz$c}_ z3Ce|$Oq5)G|L{9)?nfe@u%;`hf?Sf^xS(|Z!XYz!Q6Cpw`YuD&26eaY#!-U@9yLLy zD!g-X#JZk}i~kIXb;9XE0e+~Kvu}OH4Q6cu-Nh#W)@NwI&mrCvWUJXS)9oC7aD-kV ztZibI>@9-e6~P`Et?LO|XNI zw}`()^@`^& zZX0%>6L@dfu__vrdddq}V%55Qh#&vCYi)?wLpLm_q10=SX=llthy46Wd2ft-d`?Vb zp@G$ln_{N$6jI9*90e*go!S7hCITRJpTIrrxOC~uO8m!3H#eC{^neZnGoxa#(PPGv zoi1vf&e=upI#-{w>*HLdv<8^t@ZuYTD=f;f`97o5qaI|T@Ud^Fmd)hrx6E_#pF@FP zF5V8;st@wk)eyuaORb&hOy;-J9&nomT zau2Y2e9%3s(7s{OC3wN;9YxJ>+d)E7Et;_31F{B$bxkEn43tF>*}U`7>x38_XXLc| ze$fS-)S=Ux7iEyK`!$X`orE>0Xnvyz%a<^|Lg+vrZ@JARAz8`X^QH=uKAJQ9R#Lt# z>W7gXfK%RjcB~!2^yxFEl+%o*rdFFz%B0POW10R&75=hxaFCgb5%pFAllEa1w%9kj zpUEJ!vGlR7nnLr%qzD+uc5cPVm=GA6<~R++lC-PP+gHabTNIq^#a5wz6k=@NQeiA+ zPolP5^%YUE*3Y-;-oq0_tz={!9QL}sB<4adHgctDbkB=Ar%wFT9pwm$`GLwD7gNa| z6k6MX8WWckf?l~>N_OtbYp@berm4k|0E;&im$85zkB&;}=*ZrwtD(%xX8i;h@^+4jwNMw`oSYL|tO_@3 z10~E|mXOi@5_6JSd2#Yx$Nu!Qn5eu<9T{ZQZI18%xWN6H>~vRh)?@UkbiJ{e+W%*i z6YdAL%M+#G*Np}VDf7|TF|1aUA~BA( zub{i&HO-;(E^VBbc6%x`bK=c7T z;QnrIscoUg_Y*)TlVhI-sY=|KEmi6{WQZ+oZWjRh;AOkJ{#v)0sHP#uX3OaGN2Jo^ zDB>gF1<*+lk#T-2bGdPG4P2{D>XM-$;q?Rvq^GO~S*?`MG*nJfN}(3L+@S|}KB2<~ zl;eoTBM1)%`3MYr_At+8AJ{e&U-X~_oQG)*%SPO?F_T7>fa>I)_&EHmN{N_wyaX(Y zt?Tc%K$J+gGORHP>f_RJ8Ka?b(zW}Xmxx!3GAC_3BYkReY|p!Lj9SZKRJ#MS7yZ5T z{&YzZrwdX*)dx5~!lS)m_@)6h*7Ua47}qb@Lg!WQC*w=VJ;5ACH^+I}$8dv(0tk1i z$-Xr+gw_`;T>x_K0f<>2p>criJk6W60$1yu92<@`|3h=uJ}r%r{j3{l{SGSTpS=Q{ z18Yg6NhQ$OJq?fV$NGeJ38TXstjk>l-MYg&+k-XR`I<}~oc0rsqavBSy;6qsXxjZ$d5P+tJ7K71zqR7<0O zG_Ea7H%jzm)JE>%1md#(Rnkr8>E{&fWVoPofxiw7!=8UQaRVOq>7C3GUWTSR$%MCZ zM1&ZTjgdj)Vso=8#UCg?#OKR#o?|+kIw!+stD+$zMf4t+=pOl2zE6@=&dx>zB?0hp zR+}4hIg?6;??)UoLpa*yGokw+ZDw9N0*NOUO#OFlP%}n35V{pd`ysDOu)VVv_59OY zPR($ODRL{4^i}EJrVsQjFVswJn0-0yX8kzKQ6>p>Ot0;!H~I#IfEg)`iFjhP@^31Q z5?%19q}~xevJ|?qGR7b)(MoGCPQUj^+9$H4E_<+e3NX1Fy@}xZPmj- z=|D?`Rx8N(F8|^ZrH#DSl$)u`2QkXS(&}bXm_*y7B3(D5bbA+J2fGWTl&MO0IYL?%m~V z^|pxFue#1$k9IRA4$;wN1FWaKUL77+sicLab@rXt5bD(LT}>hVp)y35kHzel5ycS< zzT_XTi+h}Qt%%H&-X)!f^p99RwqgyRUm{Yg4h2-B_b)1YuhFe;L^UKNgyLBf;s!5R zr){0297y58UUp3#Ud>+Fi&TTk^Jg{3f8C;$4TT{zU7C&@N_*J%Pqu(>6P zfuYn>ZDn=0h?Ue*X~sW!M2EDM=^4eWUjztM0u1P-<;;_&MWNL&bu3dOdmNzjN_s^b z1nKuuM7Fv;#t|7CJ+9{!O%1pdun+9NxILnn*SzGRURQf{b@AD#;iOOS*36bkW9cP2 zIb~cO8K)!N%MORJ20*=8EA5;wso9sWt(>DGPrZieSxA3g+V?o1)_cRFM2Zp+&3+;H zE=i^|*X4{v*W(tQIH4}Z-n7;3VB{gEnl1J%Ib9$LKfjd!bJs4LjEH{I%+N->-$7mcHlyWu77?-n+}2T0uz+ zdf`=uQsyqOQb+XKyBov>ilY5-+@I``;I`H^+F?+FvPY24T*uC)^o2(e6O+DHSS8+F zWvaOTuJ%^q*%r-Y&i#@rvO#8eBiFTUxc_&|>%jV#L0&~Ad2`Bh5 zmL}(IVYJTc24E^EVDoW~$^PDV=>@K`*nGi_%M3NY&qDX0ocuNH;O8zV+igdZQJzry zX_UoxIl~NhGCulYO9s)Ib4NT$GwR08pikWWt+R~eUg8e6q)LJl9#vG1;$9h*J6~7p zp4j7tj=$xKySvKas?$sPf!n^1x{%sEq!$U-Gm?KfI@xnTw$6;wgld%G0qr<}7W>nE z)wMEYXLLQsO$fMui1Y@M-k4TsHFi`Xm=b9B!=6JW;)|U6`&Y`|DNnsM1h!zQCh-ca zGhBO(+_s`0uQ5~niX@HlM3-V6i~-5-V0n$nlFrM>{&rx==f?h2m+QlLZL?<`ANkUi z1Vq#9iA~tDq`-F=#*jkN zFJ}*+mO9$=uxrytLShpDf$_O~?>7Xl+n%jjXSe6s(rW0TQM#Dft6(77r4W>A=oxe& zA!!k%0{?~oHh!e-l;*`o};Vsaj_i8cd#f%tJ?u8kR8C^+AyufdrD<&$3V)G z?h_X8FH;oNrg8w%Lz$|B+tbQj-|G9sUegZS#(&{yDOj5#wxdt zDtrGjOYI^wX?l)Ih7C46-TU_|rxvd1y3RU<48kzz(!ENH6-<$ot8~y@-3fH(ysbka zr=_!h?_6%w9BI(C18uUr`D115-1AdwsU4|Z!$a^92Qr)9=TQk#`;XxHn)tXksHmr9@8^xvh}-*VyE6L&{p&z(u(aSU&1=o77my?Ba=U;y<) zRx)qKUV6Q08WPDRjWo>H!@zZad8AjLT7HekKgc)#-r#n)m(ia~nLswFw(M1L4&7V3 zk0kBVTfidp*P^pf{s*{=*Z^L5^X9#$m>{3RKOOG}udX=h{kLhrTI0Op5X_>+OEy9p z4a%de_)8Ym!so_TH?h;TYTm7R5D!;iV{l14Zv=j~j;(%1bDf`k(VTU21V#~X&yxH* zpD4>YJu|^0A^60a($Gf&+^$$+;iEnAdHZz$eA}7stR5*~1CDuN;X40TMV>KIWs3i- z=-ZCA;t*n}<}&uCPeSzKzj$F$!dX3ba7tXC^7S59xWb&gsx1Mhu)lAp_QrNVqU%`u zuFrvlO3jAn!c~NW^g4sL{mb)Ld1~$nj=w`WnP@_^_=`3@phE+l z{vV|Of4aQ>dOnFxW8K^tGymvXVVd2fex8tStf`)Y{--QV?jsQ5=A{#doQ5RRAo)E%#-zqN$Y8%sp~ z+oT)p)pBh{v3l0V6L!kC;+$avvgxJelOoK7%hw?)y4}FuA>VXM6#oT$=R_QyuZs&@ zo5+1QR)0gEh{Iy@^;5jrtJ)V2^iySb!j2QZtm_C;{YR62?Z9m`j+{dATKZrteb3w; zB{z&9w88OfCd|^&W5cvBGz9KQ8eXx6ReDyFY@2{e@01|pO~}8)yE6GlAM)t#?oPja zMnm46h~jbjodDjE!^owOiB|OdC&7liex>BU(p~NX<>bG6v^$rk(?6g{KR7PV1mv?t-BeG~P(jxfzgJuQw^glldw45ElGcVpRRoVa@ z@6iv;Iw6@}RfC?8s%H`&K1YnBRr%8YaJmHC@wPoX1si_~af^W11!m@(@1W;rzv)dY zcr!I=81TU`6v0FH%^UAf_h50=q4ddcjMQI$KEfs8WcdA+>&d=rOMbP#TEQuKO8)yV nySbt3e=zd@lbHX1T>gUA!O{1agFQF>=JgO0k`^rE*Y^Hjf9KPF literal 0 HcmV?d00001 diff --git a/adminforth/documentation/docs/tutorial/08-Plugins/markdown-show-1.png b/adminforth/documentation/docs/tutorial/08-Plugins/markdown-show-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c24f5860aa8c5d4cf091528d8d251580435cea3 GIT binary patch literal 83839 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

Lu^@iU&El8EYevEiU5K!CEhWm{-N(9w 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 A=>Px# literal 0 HcmV?d00001 diff --git a/adminforth/documentation/docs/tutorial/08-Plugins/markdown-top-panel.png b/adminforth/documentation/docs/tutorial/08-Plugins/markdown-top-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..2bf565ee9721a3bb034fab8d2dcad79b998f33a6 GIT binary patch literal 10031 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 Date: Fri, 22 May 2026 11:57:02 +0300 Subject: [PATCH 07/17] fix: update classesForInput for improved styling of page size button --- adminforth/spa/src/components/ResourceListTable.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adminforth/spa/src/components/ResourceListTable.vue b/adminforth/spa/src/components/ResourceListTable.vue index de8859fea..7252d0e27 100644 --- a/adminforth/spa/src/components/ResourceListTable.vue +++ b/adminforth/spa/src/components/ResourceListTable.vue @@ -353,7 +353,7 @@ :style="{ width: selectDynamicWidth }" :placeholder="pageSizeInternal?.toString()" class="text-sm min-w-20" - classesForInput="h-[34px] min-h-0 py-1 pl-2 pr-6 text-sm rounded-md cursor-pointer af-button-shadow bg-lightDropdownButtonsBackground text-lightDropdownButtonsText border-lightDropdownButtonsBorder dark:bg-darkDropdownButtonsBackground dark:text-darkDropdownButtonsText dark:border-darkDropdownButtonsBorder" + classesForInput="af-page-size-button h-[34px] min-h-0 py-1 pl-2 pr-6 text-sm rounded cursor-pointer af-button-shadow bg-lightDropdownButtonsBackground text-lightDropdownButtonsText border-lightDropdownButtonsBorder dark:bg-darkDropdownButtonsBackground dark:text-darkDropdownButtonsText dark:border-darkDropdownButtonsBorder rounded-default" /> From 6313d84fa136719f164adddcf09c6a706542ab8d Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Fri, 22 May 2026 12:00:54 +0300 Subject: [PATCH 08/17] fix: update page size button styling for consistency --- adminforth/spa/src/components/ResourceListTable.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adminforth/spa/src/components/ResourceListTable.vue b/adminforth/spa/src/components/ResourceListTable.vue index 7252d0e27..07055e3f8 100644 --- a/adminforth/spa/src/components/ResourceListTable.vue +++ b/adminforth/spa/src/components/ResourceListTable.vue @@ -352,8 +352,8 @@ :disableTogleOfSelectedItem="true" :style="{ width: selectDynamicWidth }" :placeholder="pageSizeInternal?.toString()" - class="text-sm min-w-20" - classesForInput="af-page-size-button h-[34px] min-h-0 py-1 pl-2 pr-6 text-sm rounded cursor-pointer af-button-shadow bg-lightDropdownButtonsBackground text-lightDropdownButtonsText border-lightDropdownButtonsBorder dark:bg-darkDropdownButtonsBackground dark:text-darkDropdownButtonsText dark:border-darkDropdownButtonsBorder rounded-default" + class="text-sm min-w-20 af-page-size-button" + classesForInput="h-[34px] min-h-0 py-1 pl-2 pr-6 text-sm rounded cursor-pointer af-button-shadow bg-lightDropdownButtonsBackground text-lightDropdownButtonsText border-lightDropdownButtonsBorder dark:bg-darkDropdownButtonsBackground dark:text-darkDropdownButtonsText dark:border-darkDropdownButtonsBorder rounded-default" /> From be029decbc29a809b9f3543d5c8bd2d64ba52e1b Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Mon, 25 May 2026 10:20:29 +0300 Subject: [PATCH 09/17] fix: update classesForInput for improved styling of page size button --- adminforth/spa/src/components/ResourceListTable.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adminforth/spa/src/components/ResourceListTable.vue b/adminforth/spa/src/components/ResourceListTable.vue index 07055e3f8..18fdb04b2 100644 --- a/adminforth/spa/src/components/ResourceListTable.vue +++ b/adminforth/spa/src/components/ResourceListTable.vue @@ -353,7 +353,7 @@ :style="{ width: selectDynamicWidth }" :placeholder="pageSizeInternal?.toString()" class="text-sm min-w-20 af-page-size-button" - classesForInput="h-[34px] min-h-0 py-1 pl-2 pr-6 text-sm rounded cursor-pointer af-button-shadow bg-lightDropdownButtonsBackground text-lightDropdownButtonsText border-lightDropdownButtonsBorder dark:bg-darkDropdownButtonsBackground dark:text-darkDropdownButtonsText dark:border-darkDropdownButtonsBorder rounded-default" + classesForInput="h-[34px] min-h-0 py-1 pl-2 pr-6 text-sm cursor-pointer af-button-shadow bg-lightDropdownButtonsBackground text-lightDropdownButtonsText border-lightDropdownButtonsBorder dark:bg-darkDropdownButtonsBackground dark:text-darkDropdownButtonsText dark:border-darkDropdownButtonsBorder rounded-default" /> From 29a0493eed8736dc4754119922d8490b4785aa6b Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Mon, 25 May 2026 15:36:59 +0300 Subject: [PATCH 10/17] fix: add default mode to button options in Dialog component --- adminforth/spa/src/afcl/Dialog.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/adminforth/spa/src/afcl/Dialog.vue b/adminforth/spa/src/afcl/Dialog.vue index 7965830d6..21f6377f0 100644 --- a/adminforth/spa/src/afcl/Dialog.vue +++ b/adminforth/spa/src/afcl/Dialog.vue @@ -49,6 +49,7 @@ v-bind="button.options" :class="{ 'ms-3': buttonIndex > 0 }" @click="button.onclick(dialog)" + :mode="button.options?.mode || 'primary'" > {{ button.label }} From 3db59204cb3d049732d5b8a7e852e1d95fddc50a Mon Sep 17 00:00:00 2001 From: Maksym Pipkun Date: Tue, 26 May 2026 13:40:15 +0300 Subject: [PATCH 11/17] feat: implement dynamic menu contributions and refresh functionality --- .../03-Customization/10-menuConfiguration.md | 125 ++++++++++++++++++ adminforth/index.ts | 91 ++++++++++++- adminforth/modules/codeInjector.ts | 11 +- adminforth/modules/restApi.ts | 4 +- adminforth/spa/src/App.vue | 3 + adminforth/spa/src/adminforth.ts | 5 +- adminforth/spa/src/stores/core.ts | 15 +++ adminforth/types/Back.ts | 12 ++ adminforth/types/Common.ts | 22 ++- adminforth/types/FrontendAPI.ts | 5 + 10 files changed, 279 insertions(+), 14 deletions(-) diff --git a/adminforth/documentation/docs/tutorial/03-Customization/10-menuConfiguration.md b/adminforth/documentation/docs/tutorial/03-Customization/10-menuConfiguration.md index cafaa69e0..ab5aea4c3 100644 --- a/adminforth/documentation/docs/tutorial/03-Customization/10-menuConfiguration.md +++ b/adminforth/documentation/docs/tutorial/03-Customization/10-menuConfiguration.md @@ -57,6 +57,131 @@ E.g. create group "Blog" with Items who link to resource "posts" and "categories If it is rare Group you can make it `open: false` so it would not take extra space in menu, but admin users will be able to open it by clicking on the group name. +## Adding menu items from plugins + +Plugins can add top-level menu items without mutating the user-defined `config.menu`. This keeps the application menu owned by the app configuration, while plugins can contribute their own entries. + +Use `registerMenuContribution` from a plugin's `modifyResourceConfig`: + +```ts title='./plugins/adminforth-dashboard/index.ts' +async modifyResourceConfig(adminforth, resourceConfig) { + super.modifyResourceConfig(adminforth, resourceConfig); + + adminforth.registerMenuContribution({ + item: { + itemId: 'dashboard', + type: 'page', + label: 'Dashboard', + icon: 'flowbite:chart-pie-solid', + path: '/dashboard', + component: this.componentPath('Dashboard.vue'), + }, + placement: { before: { resourceId: 'adminuser' } }, + }); +} +``` + +Supported placements: + +```ts +adminforth.registerMenuContribution({ + item: { + itemId: 'dashboard', + type: 'page', + label: 'Dashboard', + path: '/dashboard', + component: this.componentPath('Dashboard.vue'), + }, + placement: { position: 'first' }, +}); + +adminforth.registerMenuContribution({ + item: { + itemId: 'reports', + type: 'page', + label: 'Reports', + path: '/reports', + component: this.componentPath('Reports.vue'), + }, + placement: { after: { resourceId: 'orders' } }, +}); +``` + +`placement` can be: + +- `{ position: 'first' }` +- `{ position: 'last' }` +- `{ before: 'usersMenuItemId' }` +- `{ after: 'usersMenuItemId' }` +- `{ before: { itemId: 'usersMenuItemId' } }` +- `{ after: { resourceId: 'adminuser' } }` +- `{ before: { path: '/reports' } }` + +If placement is omitted, or if the target item is not found, AdminForth appends the contributed item to the end of the top-level menu. + +Plugin menu contributions are additive only: + +- user-defined `config.menu` is not changed +- plugins cannot remove or edit existing menu items through this API +- contributed `itemId` must not duplicate an existing top-level menu item +- this first version inserts only top-level menu items + +### Dynamic menu items from plugin state + +If a plugin needs to add menu items at runtime, for example after a user clicks a button and creates a new dashboard, register a menu contribution provider. AdminForth calls providers every time it fetches the menu. + +```ts title='./plugins/adminforth-dashboard/index.ts' +async modifyResourceConfig(adminforth, resourceConfig) { + super.modifyResourceConfig(adminforth, resourceConfig); + + adminforth.registerMenuContributionProvider(async ({ adminUser, adminforth }) => { + const dashboards = await adminforth.resource('dashboards').list(); + + return [ + { + item: { + itemId: 'dashboardsMenu', + type: 'group', + label: 'Dashboards', + icon: 'flowbite:chart-pie-solid', + children: dashboards.map((dashboard) => ({ + itemId: `dashboard-${dashboard.id}`, + type: 'page', + label: dashboard.name, + path: `/dashboards/${dashboard.id}`, + })), + }, + placement: { position: 'first' }, + }, + ]; + }); +} +``` + +After the plugin changes the state used by the provider, call `refreshMenu` on the backend: + +```ts +await adminforth.resource('dashboards').create({ + name: 'Sales', +}); + +await adminforth.refreshMenu(adminUser); +``` + +AdminForth sends a websocket event to the current user, and the frontend refetches the menu without a page reload. + +Frontend components can also refresh the menu directly: + +```ts +import { useAdminforth } from '@/adminforth'; + +const { menu } = useAdminforth(); + +await menu.refresh(); +``` + +Dynamic menu items should point to routes that are already available in the SPA. If a provider returns a brand-new custom `component` path that was not known during AdminForth build, the menu item can appear, but the route will not be registered until the app is rebuilt. + ## Visibility of menu items You might want to hide some menu items from the menu for some users. diff --git a/adminforth/index.ts b/adminforth/index.ts index 425281daf..1a78495d9 100644 --- a/adminforth/index.ts +++ b/adminforth/index.ts @@ -7,7 +7,7 @@ import CodeInjector from './modules/codeInjector.js'; import ExpressServer from './servers/express.js'; import OpenApiRegistry from './servers/openapi.js'; // import FastifyServer from './servers/fastify.js'; -import { ADMINFORTH_VERSION, listify, suggestIfTypo, RateLimiter, RAMLock, getClientIp, isProbablyUUIDColumn, convertPeriodToSeconds, hookResponseError } from './modules/utils.js'; +import { ADMINFORTH_VERSION, listify, suggestIfTypo, RateLimiter, RAMLock, getClientIp, isProbablyUUIDColumn, convertPeriodToSeconds, hookResponseError, md5hash } from './modules/utils.js'; import { type AdminForthConfig, type IAdminForth, @@ -25,11 +25,16 @@ import { CreateResourceRecordResult, UpdateResourceRecordResult, DeleteResourceRecordResult, + AdminForthMenuContributionProvider, } from './types/Back.js'; import { AdminForthFilterOperators, AdminForthDataTypes, - AdminUser, ActionCheckSource + AdminUser, + ActionCheckSource, + type AdminForthConfigMenuItem, + type AdminForthMenuContribution, + type AdminForthMenuTarget, } from './types/Common.js'; import AdminForthPlugin from './basePlugin.js'; @@ -126,19 +131,95 @@ class AdminForth implements IAdminForth { runningHotReload: boolean; activatedPlugins: Array; pluginsById: Record = {}; + private menuContributions: AdminForthMenuContribution[] = []; + private menuContributionProviders: AdminForthMenuContributionProvider[] = []; configValidator: IConfigValidator; restApi: AdminForthRestAPI; websocket: IWebSocketBroker; + registerMenuContribution(contribution: AdminForthMenuContribution): void { + this.menuContributions.push(contribution); + } + + registerMenuContributionProvider(provider: AdminForthMenuContributionProvider): void { + this.menuContributionProviders.push(provider); + } + + getMenuContributions(): AdminForthMenuContribution[] { + return [...this.menuContributions]; + } + + async getMenuWithContributions(adminUser?: AdminUser, menu: AdminForthConfigMenuItem[] = this.config.menu): Promise { + const generateItemId = (item: AdminForthConfigMenuItem) => + md5hash(`menu-item-${item.label}-${item.resourceId || ''}-${item.path || ''}`); + const matchesTarget = (item: AdminForthConfigMenuItem, target: AdminForthMenuTarget) => + typeof target === 'string' + ? item.itemId === target + : (target.itemId !== undefined && item.itemId === target.itemId) + || (target.resourceId !== undefined && item.resourceId === target.resourceId) + || (target.path !== undefined && item.path === target.path); + + const resolvedMenu: AdminForthConfigMenuItem[] = menu.map((item) => ({ + ...item, + itemId: item.itemId || generateItemId(item), + children: item.children?.map((child) => ({ + ...child, + itemId: child.itemId || generateItemId(child), + })), + })); + const usedItemIds = new Set(resolvedMenu.map((item) => item.itemId)); + + const providerContributions = await Promise.all( + this.menuContributionProviders.map((provider) => provider({ adminUser, adminforth: this })) + ); + const contributions = [ + ...this.getMenuContributions(), + ...providerContributions.flat(), + ] + .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)); + + for (const contribution of contributions) { + const item = { + ...contribution.item, + itemId: contribution.item.itemId || generateItemId(contribution.item), + }; + if (usedItemIds.has(item.itemId)) { + throw new Error(`Menu contribution itemId "${item.itemId}" already exists in menu`); + } + usedItemIds.add(item.itemId); + + const placement = contribution.placement; + if (placement && 'position' in placement && placement.position === 'first') { + resolvedMenu.unshift(item); + } else if (placement && 'before' in placement) { + const targetIndex = resolvedMenu.findIndex((menuItem) => matchesTarget(menuItem, placement.before)); + resolvedMenu.splice(targetIndex === -1 ? resolvedMenu.length : targetIndex, 0, item); + } else if (placement && 'after' in placement) { + const targetIndex = resolvedMenu.findIndex((menuItem) => matchesTarget(menuItem, placement.after)); + resolvedMenu.splice(targetIndex === -1 ? resolvedMenu.length : targetIndex + 1, 0, item); + } else { + resolvedMenu.push(item); + } + } + + return resolvedMenu; + } + + async refreshMenu(adminUser: AdminUser) { + this.websocket.publish(`/opentopic/refresh-menu/${adminUser.pk}`, {}); + } + async refreshMenuBadge(menuItemId: string, adminUser: AdminUser) { - const menuItem = this.config.menu.find((item) => item.itemId === menuItemId); + const menu = await this.getMenuWithContributions(adminUser); + const menuItem = menu.find((item) => item.itemId === menuItemId) + || menu.flatMap((item) => item.children || []).find((item) => item.itemId === menuItemId); if (!menuItem) { - afLogger.error(`Cannot refresh badge for menu item with id "${menuItemId}" because it was not found in config.menu`); + afLogger.error(`Cannot refresh badge for menu item with id "${menuItemId}" because it was not found in menu`); return; } if (!menuItem.badge) { - afLogger.error(`Cannot refresh badge for menu item with id "${menuItemId}" because it does not have badge function in config.menu`); + afLogger.error(`Cannot refresh badge for menu item with id "${menuItemId}" because it does not have badge function in menu`); return; } const badgeValue = typeof menuItem.badge === 'function' ? await menuItem.badge(adminUser, this) : menuItem.badge; diff --git a/adminforth/modules/codeInjector.ts b/adminforth/modules/codeInjector.ts index 1260eb105..baab1f899 100644 --- a/adminforth/modules/codeInjector.ts +++ b/adminforth/modules/codeInjector.ts @@ -469,7 +469,8 @@ class CodeInjector implements ICodeInjector { } registerCustomPages(this.adminforth.config); - collectAssetsFromMenu(this.adminforth.config.menu); + const menuWithContributions = await this.adminforth.getMenuWithContributions(); + collectAssetsFromMenu(menuWithContributions); registerSettingPages(this.adminforth.config.auth.userMenuSettingsPages); const spaDir = this.getSpaDir(); @@ -739,10 +740,10 @@ class CodeInjector implements ICodeInjector { await fs.promises.writeFile(indexHtmlPath, indexHtmlContent); /* generate custom routes */ - let homepageMenuItem: AdminForthConfigMenuItem = findHomePage(this.adminforth.config.menu); + let homepageMenuItem: AdminForthConfigMenuItem = findHomePage(menuWithContributions); if (!homepageMenuItem) { // find first item with path or resourceId. If we face a menu item with children earlier then path/resourceId, we should search in children - homepageMenuItem = await findFirstMenuItemWithResource(this.adminforth.config.menu); + homepageMenuItem = await findFirstMenuItemWithResource(menuWithContributions); } if (!homepageMenuItem) { throw new Error('No homepage found in menu and no menu item with path/resourceId found. AdminForth can not generate routes'); @@ -750,7 +751,7 @@ class CodeInjector implements ICodeInjector { let homePagePath = homepageMenuItem.path || `/resource/${homepageMenuItem.resourceId}`; if (!homePagePath) { - homePagePath=this.adminforth.config.menu.filter((mi)=>mi.path)[0]?.path || `/resource/${this.adminforth.config.menu.filter((mi)=>mi.children)[0]?.resourceId}` ; + homePagePath=menuWithContributions.filter((mi)=>mi.path)[0]?.path || `/resource/${menuWithContributions.filter((mi)=>mi.children)[0]?.resourceId}` ; } routes += `{ @@ -1237,4 +1238,4 @@ class CodeInjector implements ICodeInjector { } } -export default CodeInjector; \ No newline at end of file +export default CodeInjector; diff --git a/adminforth/modules/restApi.ts b/adminforth/modules/restApi.ts index 2ad0b8861..81c1f58e0 100644 --- a/adminforth/modules/restApi.ts +++ b/adminforth/modules/restApi.ts @@ -870,7 +870,7 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { } let newMenu = [] - for (let menuItem of this.adminforth.config.menu) { + for (let menuItem of await this.adminforth.getMenuWithContributions(adminUser)) { let newMenuItem = {...menuItem,} if (menuItem.visible){ if (!checkIsMenuItemVisible(menuItem)){ @@ -1039,7 +1039,7 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { } } - this.adminforth.config.menu.map((menuItem) => { + (await this.adminforth.getMenuWithContributions(adminUser)).map((menuItem) => { processMenuItem(menuItem) }) diff --git a/adminforth/spa/src/App.vue b/adminforth/spa/src/App.vue index 8492ee806..0719384f7 100644 --- a/adminforth/spa/src/App.vue +++ b/adminforth/spa/src/App.vue @@ -340,6 +340,9 @@ onMounted(async () => { // before init flowbite we have to wait router initialized because it affects dom(our v-ifs) and fetch menu await initRouter(); document.documentElement.setAttribute('data-theme', theme.value); + menu.refresh = async () => { + await coreStore.refreshMenu(); + } menu.refreshMenuBadges = async () => { await coreStore.fetchMenuBadges(); } diff --git a/adminforth/spa/src/adminforth.ts b/adminforth/spa/src/adminforth.ts index f04184187..18ff7266b 100644 --- a/adminforth/spa/src/adminforth.ts +++ b/adminforth/spa/src/adminforth.ts @@ -35,6 +35,9 @@ class FrontendAPI implements FrontendAPIInterface { constructor() { this.menu = { + refresh: async () => { + console.log('refreshMenu') + }, refreshMenuBadges: () => { console.log('refreshMenuBadges') } @@ -231,4 +234,4 @@ export function useAdminforth() { } -export default frontendAPI; \ No newline at end of file +export default frontendAPI; diff --git a/adminforth/spa/src/stores/core.ts b/adminforth/spa/src/stores/core.ts index 947e47eda..eb0763e71 100644 --- a/adminforth/spa/src/stores/core.ts +++ b/adminforth/spa/src/stores/core.ts @@ -87,6 +87,20 @@ export const useCoreStore = defineStore('core', () => { adminUser.value = resp.adminUser; userData.value = resp.user; console.log('🌍 AdminForth v', resp.version); + subscribeToMenuRefresh(); + } + + async function refreshMenu() { + await fetchMenuAndResource(); + await fetchMenuBadges(); + } + + function subscribeToMenuRefresh() { + if (!userData.value?.pk) { + return; + } + websocket.unsubscribeByPrefix('/opentopic/refresh-menu/'); + websocket.subscribe(`/opentopic/refresh-menu/${userData.value.pk}`, refreshMenu); } function findItemWithId(items: AdminForthConfigMenuItem[], itemId: string): AdminForthConfigMenuItem | undefined { @@ -257,6 +271,7 @@ export const useCoreStore = defineStore('core', () => { userAvatarUrl, getPublicConfig, fetchMenuAndResource, + refreshMenu, getLoginFormConfig, fetchRecord, record, diff --git a/adminforth/types/Back.ts b/adminforth/types/Back.ts index ebe1006a2..5e4af7546 100644 --- a/adminforth/types/Back.ts +++ b/adminforth/types/Back.ts @@ -13,6 +13,7 @@ import { ActionCheckSource, AdminForthFilterOperators, AdminForthSortDirections, type AdminForthResourceInputCommon, type AdminForthComponentDeclarationFull, type AdminForthConfigMenuItem, + type AdminForthMenuContribution, type AnnouncementBadgeResponse, type AdminForthResourceColumnInputCommon, type ColumnMinMaxValue, @@ -594,9 +595,20 @@ export interface IAdminForth { */ getPluginById(id: string): T; + registerMenuContribution(contribution: AdminForthMenuContribution): void; + registerMenuContributionProvider(provider: AdminForthMenuContributionProvider): void; + getMenuContributions(): AdminForthMenuContribution[]; + getMenuWithContributions(adminUser?: AdminUser, menu?: AdminForthConfigMenuItem[]): Promise; + + refreshMenu(adminUser: AdminUser): Promise; refreshMenuBadge(menuItemId: string, adminUser: AdminUser): Promise; } +export type AdminForthMenuContributionProvider = (ctx: { + adminUser?: AdminUser, + adminforth: IAdminForth, +}) => AdminForthMenuContribution[] | Promise; + export interface IAdminForthPlugin { adminforth: IAdminForth; diff --git a/adminforth/types/Common.ts b/adminforth/types/Common.ts index 4286e6c17..cff438e13 100644 --- a/adminforth/types/Common.ts +++ b/adminforth/types/Common.ts @@ -1210,6 +1210,26 @@ export interface AdminForthConfigMenuItem { isOpenInNewTab?: boolean } +export type AdminForthMenuTarget = + | string + | { + itemId?: string, + resourceId?: string, + path?: string, + }; + +export type AdminForthMenuContribution = { + item: AdminForthConfigMenuItem, + placement?: + | { position: 'first' | 'last' } + | { before: AdminForthMenuTarget } + | { after: AdminForthMenuTarget }, + order?: number, +}; + +export type MenuTarget = AdminForthMenuTarget; +export type MenuContribution = AdminForthMenuContribution; + export interface ResourceVeryShort { resourceId: string, @@ -1290,4 +1310,4 @@ export interface GetBaseConfigResponse { export interface ColumnMinMaxValue { [key: string]: { min: any, max: any } -} \ No newline at end of file +} diff --git a/adminforth/types/FrontendAPI.ts b/adminforth/types/FrontendAPI.ts index bb998610c..21a201112 100644 --- a/adminforth/types/FrontendAPI.ts +++ b/adminforth/types/FrontendAPI.ts @@ -130,6 +130,11 @@ export interface FrontendAPIInterface { } menu: { + /** + * Refreshes the menu tree and frontend configuration by fetching the latest backend config. + */ + refresh(): Promise; + /** * Refreshes the badges in the menu, by recalling the badge function for each menu item */ From 0a5f906d470d2343e945892e963e9ab3f2ed6221 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Tue, 26 May 2026 16:18:45 +0300 Subject: [PATCH 12/17] fix: update hover border color for secondary button mode --- adminforth/spa/src/afcl/Button.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adminforth/spa/src/afcl/Button.vue b/adminforth/spa/src/afcl/Button.vue index 4e86bcd87..a7f3a38c2 100644 --- a/adminforth/spa/src/afcl/Button.vue +++ b/adminforth/spa/src/afcl/Button.vue @@ -7,7 +7,7 @@ :class="{ 'cursor-default opacity-50 pointer-events-none': props.disabled, 'active brightness-200 hover:brightness-150' : props.active, - 'text-lightSecondaryContrast/70 bg-lightSecondary border-lightSecondaryContrast/30 dark:bg-darkSecondary hover:bg-lightSecondary/60 hover:border-lightSecondaryContrast/60 focus:ring-lightSecondary dark:focus:ring-darkSecondary/40 dark:text-darkSecondaryContrast dark:border-darkSecondaryContrast/40 dark:hover:bg-darkSecondary/60 dark:hover:border-darkSecondary/60': props.mode === 'secondary', + 'text-lightSecondaryContrast/70 bg-lightSecondary border-lightSecondaryContrast/30 dark:bg-darkSecondary hover:bg-lightSecondary/60 hover:border-lightSecondaryContrast/60 focus:ring-lightSecondary dark:focus:ring-darkSecondary/40 dark:text-darkSecondaryContrast dark:border-darkSecondaryContrast/40 dark:hover:bg-darkSecondary/60 dark:hover:border-white/60': props.mode === 'secondary', }" > From d4fa299c1fb77ebb2298c37a9a1895e4d81c79da Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Wed, 27 May 2026 11:45:06 +0300 Subject: [PATCH 13/17] fix: update background jobs image reference and add new image file --- adminforth/documentation/src/pages/index.tsx | 2 +- .../static/img/previews/background-jobs1.png | Bin 0 -> 159583 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 adminforth/documentation/static/img/previews/background-jobs1.png diff --git a/adminforth/documentation/src/pages/index.tsx b/adminforth/documentation/src/pages/index.tsx index 311e2fb51..ccc87dba8 100644 --- a/adminforth/documentation/src/pages/index.tsx +++ b/adminforth/documentation/src/pages/index.tsx @@ -120,7 +120,7 @@ const images = [ description: 'Use quick filters to filter your data efficiently. Create custom filters and apply them with a single click' }, { - original: require('@site/static/img/previews/background-jobs.png').default, + original: require('@site/static/img/previews/background-jobs1.png').default, title: 'Background Jobs Plugin - manage your background tasks', link: '/docs/tutorial/Plugins/background-jobs/', description: 'Use background jobs to handle long-running tasks efficiently. Schedule, monitor, and manage your background processes with ease even after server restarts' diff --git a/adminforth/documentation/static/img/previews/background-jobs1.png b/adminforth/documentation/static/img/previews/background-jobs1.png new file mode 100644 index 0000000000000000000000000000000000000000..d902ba15196f745326b625c8bb58f1a9ba0e21bd GIT binary patch literal 159583 zcmY&<1z42Z_ceA<3Id9xAV_zoA|RbZcXxNHh)50%LrTNI(48XP5<`bb4<+639lra! zUjIDvD4cogoU`}Zd#|DG`BQjPlG8uh$GFE0*PBIo2UUoKKHcqnFGGwBnO3E2*Up&yz z$j~I-zE*Zi+L%$dOFZ(vI>UCsL3{o2j7s5&s6rjRda0FrXmX#-FW-bH^U1~XhE?C} zE~jh()rR%nH3*Xj(wH}SO?t>2H`Nyv7R8OJ?`sx{2ewdq4NQe1$}ejg46eLm!?6BQ20sO&6P9uD8Hs{`oo6VueY& zpD!ocN=EjctYZ8-j`se-+W376BMy|wXpWEn9x1hLsKRpRO~zUaLDXCz#K?*TIbOF8|Yk@wmGLDGNzLVFewDA_Bj zY;^O_(0GaTr}&;JvcIlUOaa4UdHM0L)A+(eA1N7x{WUUGKK#fr<09|x(~KuD{_km; z(VO5jGxa|=L(?pddgMrVrWoHgJB`24JpTI`-xj{PtIv+9hPgvg?%ufA$e6rx(f?Ynv=GNQN?9-b*hod+S+;TBKIJgO39%% z%N00|k6-_pNM~*3VPRG(X}R<2T24x@p=~AAQw(@UzBn6O*{<6%=S*W}rkb&F7Vo5& z+Tr)_MEj3Co5zncw<-j+9`3tN&yIg;Z>LgL{51p{riLi!#74NdT2S9um81%2*}0;^ z2@K)*($H+gy7t{4{bcLfZ?Av!py>WBwcbaK-93`VoQW!k)a2x01RsKsm{?O|dGCZ{ z9Tt_}nfLMIM=clE9x?F_=OvVQLQ0Clt0%ISsq(K1Ce)#)X90_}wCSf#sljj4Yu(RM zwuH=-C~>;n&eG)7E^diD>>tQ4P1h33u1V_OZ0Ct1igM5c$jS_3n9i-eYHG z&U}%h)S(eZ&ww33ar$!-v#+^p5AB8peS98aWpTc?*Z%@J8MThV}V!?-|5&bH( z43SZ$saoh04GdU;`RPbq(}l42h2PYqFPHz{zO0w{eZEt%ZK=1nAbl{G9zU3}%cKm& z#w3`pK9DpyS*Q3pHYPJ6!GhS4sigU~ zJtpg|$9cA#dEf313-yafMPl%*D+xLap!zhw)J)He1~_nU!1D^bCs|mZ8Bj%aL8h4h zgQf9OHTvwzu)=6#>rL%-tTd1MtdrqXC|6NUpUp4q+e##HaWOXLS3$cYyCSJV#S4O) zoI9B#LUaN|bKI@bnJ=a;@3VAJQ#ltMyl$*3A%l&GkJ*~r^e47wYZkTlx_qHg_yaKC z3{8CmGfz(3?+BgvQW8S=@m2X7k9FUa$oX(SrOX(lEbF3-nxKptd^Joh#Kl3P`1*r2 zYPjXnab6Xo@jg}|~1hfvkWheV=hN8I!%vKCv zG;6$BVdM63E>U*U7OB#-L{heA=}6m*4%t^vM#1wf)jg;AwNouveOMxR)Q!%XI2LxN ziZ9cucIW}in8+WX|3ZeQZ97b|-eVI63#2w|h&GVMzFlcx-(9xb`dr zDu;?|@=!%WV&I58MQ!Vf0+oEqwYC)|Tb@U~*>>FNgC+LBi@HhgXBx%n6fqf39fpac z)=8!7HsxO>?Yfz?XB-uJRqv1Mg(qPJNJ`Csy^8EJnVF61^s5QqH{;Da#xGUxn05D< za#>im7R?y+ay5(rhB$g}lh^f7xqY(N<+$d{AG>-l@G9lq>gc8?%^tH!LZ8J&X7_G( zc8=-L91Cn@eEiK%_w_@8n3x#U?l3{@&AyqhV1|gJsUfVCbDySjpQ}nJLEu|<4vyqf zD+dRS2Jc&?Y7D%Ns83iNMB^@JHNT+ml9jq*?&K%3CYBDT&KNj3Y2o53@maJOROG_b z-!Q61XchXyjf=)|c#7l}aFv2K$tXA1)|8YC{j>_xqnGOR-%W%*`V&)%@6FUYs{#+; z;U3z```Q~F)^9W8`y+PShCWaXz}b4?i-<2_oLozFeCt8&S%uc0;vg9wDr!~iEOmADH0u5&WrYYfYVT=yN{Y`*9L@M?mH?cPRsj&UarP? z1NDpOwv96$={p@Z z-aY@q((hvsU;4W2O-x1w!+Id)%qvSll2VC%**$W)YIp{B{q_i_O@2q3JL=dr))lAm z6fwsnl>xjoelGCS?uklA^J$`LI8*cE-+}$Ztr&)M(TSS9$;ZXjRab!Z8R+z zsQ+XudeFc&10J6K@#DqX^ca$F3Fh#X9uo zyC;=GZ_O*+S`^7j%Q%}@; z7GGdpU!(u>5Nb!H!gE-Be6+1!%@r0&u9Umi*G3y8=e(U7ZYsv>y613K+^!j(f{pYU z?u|`pyA^AZIi}!RTo=a)4Vq32-Z7`Oo9ZG!Til z2=jKO%4{t^D@FiCkQf)X9vctWa<}u^r+A$Ia<}nM9c(#Jn`sS4?bjb<M#>^B z8Ja2EKh_Vd`M$Bk`rt(f6>o3r?(_6I8BUY(5bCVTz)V6ZOxm7-`z_D(S+}fy4!?bo z2DP0*q7Mip9}1SZX>kcQHZ1Auj`6xsZDtBR-<0|jVbO+`cY4=mjtWt~=S6sjoZgAb zu4JDj2{^t1^WNiRS{8%n(?LMaUX~*Vugj4G!RX=LD$c8)D&xd19GpZW5!oWFiLSoV zhFyvu%wE*U!*~c-a~su4w+i2kl*jk-ZSOBGMi=_HiOA`CI1KBt6NaMvEVXd?f!kz;EhUI8bfrK3~UhNSK8verlijZKf5lx6j%!Q?=7 zGs>~tS+3SA1xWz;i6L&(Zm-AU!O7B2ul1Q5aG{`}Bw89q6@U}j&D$OqJ#kj|LXqdl+AyQKm6v41vCAp#6s<-cD!tA`WpwQ`?Iz}@)8mya5$|IJH4`LJFYz@G{oAI zaqQp;5Ak~8lm*AKOFq}|1oRIUz87dWoAzF?OOWPEWMWnYfr^)xG%sT>!omVR;&dDi zr={bZ8L+A9v8l?bu&({J;~x(9)sqJqMP#`pttx@KjN%8;hoX*-^=@wx&=FYG2|bt& zIjQI?pV|x}`b?C#iTc$NNd~6FXx|U(GtozPMT3oe4$&+mFeucL{bOn0NEYm#m^hPk zY})aT7X6+?fKrNsmzOcPExmS<5G4A!rRn_nB6VUf6lA1jEv&5G0K*UJSWxFv$&SV+ zWXI|2O$waC3o#qJ1B+A!bFK?ZF(EPuS{fP^QFj=K z8?;PJkY+46rAS&aRZcbs8(V(f8mvHd%Gj??o^WTm3Oft-yp1D+mbSYR&uDVfpVxCa z)4~#7=s8k( zr>O3lhHv`X@i{|rIaP`I-@bm|!0Xz2r!5n+HRD;FMqmCH0COrbxOm|Pu z{w30K*W*HSvMRgQVya^%&?z8FJM3?R0Y&mJf5+P0%L*@7QGiHsj7d>l)m+P+(l*?y z%ab4<1RuZ)sILyr{`kqcda35~IS#?p-=jZlP&EZnP$=x`$}6vAVsu$MF-?taE8Y82 zSo~F(iT^0X=VA+)m6pwQMgWqy*uKgOG!E@G6$=}7Xg1|$XcO(f5I`nsELtOYRTHP2 zoP(m3fEVQ>S9IJJva&o)`vt6^GcRH$FnNS*vWCe_4;`zBd4`-`ZCVe2(k$YUBQVS1 zE?fq4TVD`Y4LfFK{g+h!s)9%$i%zHsQ%2e+SUqffIiMEhcXWJscLndEKP%^c!SGu2 z@LKq=eq76Z`0$#1Ufo-jbw=WCTy^_g<%eQfCq$vKmTXe@BpnH+kK@%7PM09aM#hjvo5#-19H_0eDZ4}^>M+v{H_g2EX`8<(q~GI`)bzy@ zR;Rte1Ksn*D__OO*R8Vs-F@8a&exdVSu=kM zvSEk1GQJ5js^vDVnlK*L8~@v`@ti}$FXlhC7h?W4OvWZIP z5I{VM3pAj%wv^cMH60T{c+M@X_@F?FgZE_IspudrebB72jv^SD&Xyy)D*xFp$IHPc zscRFRTCO}dvo$NRYMX{o{mgrGPAK>C^0kDby?sQGHY1o4L|K{gWz_D;#qQ~OLgHRG zNRm9H0~+KBn39y#^Y}6bj0Glg+qD`Q{!3J$dGPLs#N6`KQG=Na9f`(F^u4ZeE}k}V zs&ZGWNy%=%o6PGjZQ{7R&?Jo|P0sVLFE=wUib6@qzU`2FeMO!`rg&$hn2~8#>*}(soeSzGllyn z6G1~$AGIsi!MwMQoZ|Z0c-c&>dSgr(a-G~FN0g0o1174FdQpEs2Mw(=0#L6=x7Dw} zwA$OLuVb3}z;w2wUhT|FKn&*=^djKhlIrvm&=VKdOe?A|(LdoE4Q(-g#%2s~a>O=P z;gq5o3hvAGsbSB~9z=EJ4k;eNFC3q-W;DGMpH3W1{s*#P@=BKeaddGoN942rrm7j$C)uf0 z-h})2l8;v=e@gp5#RHn2Hmq<`x=P@4>`aH(rCwv*pG&;QG@^a0Rh3+^44*c5-V>K& z6Q$++#fY`$@UY7WW%$@=%hLbOsF&-%0R#0hY?(#Hrfgy%rl)e3?KKspgct<{ z`X7TaQltvd=Xi?ojAzSZlM>LV>!TK?_K9uIJxA)Z?YrKXcSX7nr`)ygvmTWo>QDY$ zy0}JqnMw1(6(=t^uKIp^h+;1kN4D8mY46?$sI3Zv|8O^N7o$}%5|MEN=MzBXouv2XT@{Y>`5D9f1BmT_^ur*?hV0zJD6#*#Hy=Q{oJ&0}=fHs@#tHp*9p5JfwOwE3Ov=kI(G6cj`n$9q$DbLs z8bHv%-QQoBGz3+|%)iv9IxMU3k^A?y;Yxu-81{G3zS)$HiqCnZU4QTA6p-<+y9vuK z859Bu$|Wi$)jQEY<`Zl@xYRz(wBIfG&(5liu?_G?Z8M@hpJd=l`7e_M>e2t%-eTj4 z!fDFC_PcofZ=4x-4jI~tFZe^yprPSEdnwX*_UAtDo$32U;x|w3f0$`c+Qzyb|E7Z% z_!civ3@@}DFSsM-9p&!KOQY~Xv*-z<$TovWq(KDIqRTZ79Qix`+0&;#Mnm2TZIn93-MlX0-ME}l;2Cio;_c{bMF zL=&DBaQiK+Q{=j4&rLM?`**RIV5)2iKdjUmB1-ex@imsYoR6{YDWe0|MdeGbS zpmu|xj$e|Q_Lr#$%TE9oo-8NyQK=*F)ftu{Q<+mLmH&vI!U^dm@#mNB&oCl;*23Gq zzeFwoQmNC7y~lv1N1sWVoluF4yGZ^OsJFFE%FH!4`vbo3o)Ekl{Pm)va_YumdK($r zBaEdwI$&eSZ{LI^ztkj+t%KjbCB(qSYYzJNTIO?;`roMc!s`0b`vaaNVfUCZcb<01 z6q`iRAmn**$>%k!=~JL>zwAX{pbyN%y)zQ%o$2iMVf5{Va9wXvCi#;fv;LL1{LYAo zApQ*j{9yH$ZK4U-{u}~)Ilo@yJbYN7X<;b%M1}dOqIqC28rXk5(!_*>Nhg8VCN}g! z1F5hBn{|HQEHid0U9wkx&19+(+A2L;&l+7=-c}HXrtas<1Dd>9&y2j+`NEDY_vKHaSft+se$bV z3414yUk*4127oM93GB(^N!1-xqepmyb0*Ny?_Xd3y|xA4%1IBy?Co_%nr_Q4HQI;Y zZvx(C5&bsaLs3d^-Y3?L|M?D> zXiQ~bkAR`+feRPr%Q^^nz?Y0U^_Rku@rgyu|4V8{A17gV={<5ZFwpkD!}$yYeLJQP z$d~Z{|1bi2bSo#pBsqzC4ESY1NiHY1^7L&4zf1qKcxoc7uo16U^Z^abAPr+&DJHNG zd@{SAE|}VKeKy*7LTLY+6L7JDVIR={TWXdd&RzuEQ_t z=<&-i?)tqLe5(HvoclXo%{`^bt+44l$=Cj5!2`D-qgW3TPGc?5JKg2{Khl)G%XK-S?Xv}p@{nnn#*@IeaU?~cp+I1itC`Wi zrbow5bfR`keS+~HAoVghxue8R7>9fl9=NZ@fG?V{lhyGFhUVhOHR~pFwJ&!?*)*5B zUARF9?lE_Dd34}=IdG-GPcr9q5A9o_afRBGnZ?gv-x=A?-L9Lc2=22`piF2;Oy}hL zA5xngBv$|)kt&J?D)3#$fED&6xMQqdpf?dUJV_K=*vWUi=E>hPXsmyvk9Y?>c`=P^JUB$m4=1n{z67+` zySKI}^tg^wuTDt4kLLq4Cszh8HwKh-bW*ZNHW`FYy5vTX$Sk3&Jt07k^huFkGg^Fn z$f>FPk`k7_{(e-C?qz8hi9oG|CbT2Na;(tY$w}GJ(2$mvcId;cdrtG;?;w###6%;& zfeupNg86y<(2$VauV01n@bKXI`NRI`1dDduL#UNzzk3I;0WUGYfK*geNc9+bPJ zY{QF-<$aF>e5)G>Zh-uWZeVY$)+M9^7kVI5ye#)!i>8jtvT%&^pS__M!6SAF`i(Q5 zJZ)2jMJkw73UqLDJw0JiR>Sl1)GMG%EQN*R;8&VEH$T)9Uv16QogNhVG8B!``89v_ zyN3<0sZnQ)vqVt?yOi)@(yQllPjG$8Hz3(&3Ir z!|7Smm1o<6eT^0)VAi@;_VV)crL?uRYdwz&8!t9(bBKR6{{D`hANvyLK`7Y3#zr4c zrkiMFww$~jzSFiJIi9Kn)YR0^{*${D7a=&FywaztwA@MeIcXDUrYh#ss&`W$VA7FR z=VW8cxLyo-2m}w$p>F(ayQ#=^)?HjSM@jem7lHF~?=w7n{KC2mIiFoz|2O2`o0hu6 zYr{Elu>*a5Yjc;IbNgkf7t$OY95l#C#yBb6>K1K#t?<=4tqpx9 zU+(PuA|@v0w7)tS{YWV?C^$IoV`pV$CFD$}-pwBQy97KfQ^S5FWnNX4Yrw$Wy0(%1 z0-y6aTT3f1R)7z@Vias1>_X{h9|ULio!7F9q>gTRUk{XYS~b=Mc$+O@7DEBx!D6_s zmVY^a{YQj(%R$9zihxU_d8$(43?8hHad30z*3|HvcnRL|d(A_HrQPVI9>=5`ONoh% zy}sO+NcjADRL4RD@Bz@}f7nuJ6|(H#p4WY^RmAf}YTF|w(G z2&EiZ#6-^Epu$Xzqj*b8OG12nc+XPg)aGbc6!k$Xu3Y9pJqf?t*L&C`W)>Ebj*gBF zyvgv~+#eAX;=mXDosZ5En@$oTJ(sAWOGz<9i-uNUbR(0K@aE>%us##y=qPHs#?i9h zv?c|V|EZVzIkc}{{orak>BGF$D=L^O7pbhGQn~C=HN_zD@UEZvQOlZ>wHKr6K`XYtXA>s8TGbBfZaeI#3%MBde>cL;R_6jM|{X z2nlz&clYkd=xFxNjy+helMA4;KB$?o;o#&%#i;81|E81e#(Xeq;PBlhWqCm3Gwn}O z$2*rqZ(;JizU2D)@Q)winf}7nm6a+30!K+;*N1&%TtK>;u4ku{bg;=NuxE&Rh?U30 zUTF8CcD|A`Lp0zaeB>ARSCKpUzNGK1)ZBfV<_d{bRWi3SLlOV9g%#T(Tpw4=F}{o7 zS@(~t&tWCcb7O~_4Hev^yCqHTYGPut-_N)GE)t7~`zs1%A)&}mqRM`{MzHxoSoq@N z0**jHl$4^DmzPHXV5OvxfUPegtaULl5o0G2UdoUkE^q@vxj_i!1nK+cwJ*yiD3sjCujET ztd6sj)2pW#g*+V@<;+JJT}G1XmAg_iSEof+L&T{u5n~kEKEA@XO`edwJ@O0PB5wswO^>}8gQLWt{xwy$ zDvrlHnGJH>k0IiA?}(epA?h<8HTwm$^e@#nUKZ;uxnKD359shmEK8|wzDs|++uc+?VPgE2WEXRZ< z9Lq0DkTyThcY4BC#cm^%KHznzPRzh!-H6Nj*+N>P>r3{%yBtL2d0TeL-Bx^_0>5VM z1vd6xscYrqVlp=V5bjSF@Kn*gK&g&t`vT;GAU|JE{d^u9IWdvf-`~%X|5z?numL_} z$6erib>ur%2V4SJR&))K?@q98r$q&dZ|)HH5s2j-}PR2KBxAOY+9o|1S5aQRI+P`qxD^$ao}TXPXJ9_hw%EsY-E>u);&W<#ZFHJ&w}TU} z{~z(HW<8_=ut`-E6b9iJ*HhKa%F2?0nwprz-s}PZxON@#tvIKKPQg*AP_Ee@Q?^Zr zC~7%IL>-8az)<%`l;qZss=6{fV%$Ws<`h$)#c|es`+6$|Hm?9W*N_B)S0E@p zS*$1Rv0iZ=?-ootG90U(8_iqi+Lnwg^z~8|%TUM(%MqHsfA~3~L;^IhNeoRV$;~u~ zSXdOSNRbpU{et*jeX4&fk>N*JfEejw6>LO9gH<>*MhP%IRz6C8j*7>Ss?Av^?m#-_ zy?G0(DLI!4^CmWZG~tG0*J=Ae~EkuWQap zK9d~->d{i1u8O#L05GL8^Qj#-EdWe_m^j^XZK|_)r54qd8BD;00&#x>{&29!=OF)d z9@{r}+vljx<8Z>%`SRQy@5z%@V6Qb|;^GH=wmyz6%!i1o*`d(qT(Kmid@jxe24!)n>fcf=&6qz--sGoi$VP9s1N zP`wjQEt~XXXQ2axw(N+A#~`RkYTOro2@q8ul2`-s?6nJQ+g!lRieMgi{1}ZHHl*NN z#?`+t+HK*;XI_8UjZ~9I5NhUah$RN~VTneu+*#1SgR39Yp$CPzn!oH1nzx_#^0>0*lBvIKI$mpuDOyI+#pIjdU zPo5ndK`p-HMhiVs=4R|NitRIrnNd%l6v4E3rM{icn0C_j_#mXedmS4z+tDOM({t7( zz086miUvO@){P3rNp{Zps;ctU2R%>X-5uc}W|%cnV=mJ+etCy530vY2CuTxuMv$K^ zvob}&{ksdXfUjajP4zQOwBO_7tH0RR39<*(oqe2S#_B$^^W(~@Lw*+b=)2~f%Ln%h z*uTLnv`(^mY7OUAD~dd{ai_<#$aQ{fu>5Y6X?5W>rV!zex8v!hBAC4Kqw;tX{@DRY zo{hM)OxX@>{2gPoaFJj~j=MKMFl?%-s!~gUT1HpH1O#IZ4LAr(+6^9%0l_n?W!}@k z%|lgjJGZUMPXd&~A6Zgypx5seNQ%lP3a(S1 z-MFTa3d^zRca$m+bbJDWb&$slUPsDAE?X1|nO{1!3EG4P_XdQT){093)&hqCS~lUc zX9}L4b(bfpSL$=8qg9Hu#AR6(6_7}$onLLvXVeV6fiT%{8gm+q)TAUWS8q+tsi7Zr zLpghaIyDZWpwQuQ-?FSZ`l_v?E8Mhq5;uaJsmk&O9$4#n2BfJ1pnmq6L}`hNI^gk) zPB$(n6y3cWuyk+|BTWfWR4k}XkgOoGj@*eFIGQ^@6pBK*29MsHhIsj|4~d z;+Rmv+M$%@ZcbV=0v8GK39*BEpg>9E()ZP~@WaLY5Mz)_Xe*$U{qe_lzpk7G3I` zs^`CAjf@r441D|X#lzzs`vOb}gj4<3ABeE(x~E_AI+u!OOct|M5BBpb>s9WFxolJ3wNId$zE&xAKp8!deoe5}e&E}i|p*+hN04_%UM4kZHq z_IxO=G4qFH0Yas=#T%=zilwO z(!j+D1h%%gpABh|X-0C`Q5U+FD+LtMfgYb&z@PgW#bAN{y@B^|7M$tT-LX zJh2AX?G&H=4AM1F)_5EsRgFQ)3S!97oUiV6QuOWH`^#16rI~s4XiP$4V%+!dpr6Wh z&Rg~R%WH=fx)>JHX3Ol$Y#S>9d5(a9K>jFGO4;$nW%-oW_C=HN-;H*kEk$8OUtak){N8fnSZ8^(Da-Ep6GKih0P(zl2xi$l|YCMC~>p? zbtTvBZwY5_GZc`@s_>;weNjV&1MINX!-fFBoJtMrK~$nGoxBuNc#0&0lyDQe^8BOf z;6eWH^T6v8T-(#C)-o}SNqh(+R+@n%)vm>MLp%`dMbj0CEph=-c|F*0;a9smkJ+&M z%NV@Ukz;jrSpnr>=1%{3GZ9YP4N+c{e-SbA<999)3Z2i#BcjRnKsZ4PF$2m>9`hdR zN!VLZVB|HYDI^PdDl+uJVAw7UAKcyvCDg<9&WD8&(;5X#aoUkR^&Zu$q1@7UJSHwa z^%D>e`pRjKIgQXs>~^diWOU`9Ucloom`N@oivE3FC+B=77{((r;*4XHEG+uV_( zJ7zQmS_4Q+E6`EhX2SlnVDfB8VUQxEHh77io%S&n&C}oJ z9^LtF#{NlkLge4sJnYIK7r|o^_&M-=sU;U4WwQ{PpUK0mtxvx zDh@F|!C1Ssj*pYvZlV=yy>7YF;8CK(*@lOGZ*j++V`eT-vq6W3H&65Gf(^!?i!>#y zI&2Fowa+U_Ux}YwAsyXF<<*lR zY@gq^FflQ^HeK=?8+AfMLxC}CvVD>4FhHwimFM?5E^gdQ-d;_1o&Em-Wk$E zEa_f-3#SBaR!o~#Zl){b4d>nFkisZwjfYZ8S{lZYeJAnJ%3I&Mi&;~VFc;6X%ioE* zV+E$NTan0?UZJr2tPxzvP!BFl76R>)pP!}0G7_+gNTNtRp)Crz6ruM*(dE zXOy^-l%aV&xa61>6%79I{ih4HZUu@ocj7oIEO-eAosMqJpmt~pQ-=I1AM>QFe&0)hY5vC|@0i zEVr!rs?$mMa|RQ_r}IB6Ozr)$Z;OnSHhK1o#huDz$q@oKOWs2mwdMz|g&VQ=B!$r6 zLuvZo;S0BW|8BlVNJuz@E61M(*a?Q0?|!@SpVl><)rF7@EIF*X`X0IBVFftvEz8U_ zc&geqT~q=haUT%0-oqEyRrae#_g5>%bcSmjR}@FD4-vZDfmR`lK7RCnF7La27ta=jM=5%>}0+~vbrt)5*(^W7v&9RxShpB|uthNT? z0{Tz#8H!62U$>*_yr*e;r#@$Gay5I`ai#w{ZUO)L(U-_|0NQo|HN7TxxhMx-txK*D zoT;CI0|CL&RMyJ!N?gF(A?`^Lc&D(-K=#UV2M<i3J5phayO|g0w}!mzHKm{Kije z-m>Q9t*KYAGtsrbV^k(HP50*PFII=8M}+CRu!lOGYUBiA`G3JkMcU#-aTN+ z@}GlB5%i-vggiC1p{L51%FBMemX6j5K|YgL?cXiD^EUEA%B@-A50-YNPA5h<4tk*y zkyI3pwaeDSWo^`K4k0r?TT3!LP~U6%xTfEIkcx4}w9pI6wpOn<={c5D4giU19R%xoJ9uHtbd2XbcL7gW_$@M5YVQ+8_9 z3D|I}rGU4rv;%rj-n;D_EDKS#K03`mz7q#zzsc#&hpu*^2P~zKs*0OJJ;bv)HlgpR z@+BqdoPVyeB%9MJ&GY(-{AzsQT<)CbY4>K~vh$6>A$Vp|72c|Tkd_gmz5G9Gl9#m?x* z&5*pS_okWbWej`5nU`+Fl#Io+K%Fi_rwGasuPH2u(ZAG(u>LO ztmOq6rk_3XJa!)TS|CBK8hu=GG;@z3#`35~528LSk&HDrikJ^iAHF~lF(6Mo&L%q~ zrKF>p`+4%)rlu&S2c}Cb2AU0((QlW_SGI3DR@`=OXr|UV5Ftr z2Qx&bn~e!Z4D^Yy{Iymd0q2oq#d3lpthKFV6@d+%__5&)ddN-4a*v*g@Kj|#I| zl0#@0!L%1+YRvLYa{m`B$!6njB;{6Jqjpk(ZqkF9MvSx&Q7?^*MjjbA$wm6ILi@|4 za9)bkXx@e&Mjp54~_FYCQX)}3|idD2h*6aB8R4q4T zWcw`Ixr*c|3p1Nvl_6>CGUVGs#fGHYpTsAhEE2wgS2t&Vd=oI8Wem3~^5xg#x+dl+ z8_suoc!-TVP0H4GmwG&wVW#^rxQLE|1mfGcIjCaz~m5{Ax796aFL zFmEQJx~ zNF#t+8_PmBjng?pyrYUrIB-LbxYuA!s5!!6)9x4tS8aSg@bQm%70}FPA_^`&ZM+2 zdUaf7c3E@9>ul>md^RdU=!tTJJsS{A7*wM$XP@L!Os}?GNjm!&Ef)PQD7xD0#0RZ~ zVwWEJN|JxzL~vkRLiI~f2QG7#$a4Q7{&YRtdp+jc!7m|K20qQVL=}E4Iuw#@_eP2D ztSzm(T@errP9eh%EAdC-x#XbA5Yek|WZBs(j{?OW2e*+2y)aVmcEg4z+}%#cPTpkr zvBv3}tSsXv^ysZ^*jYYRhJ8h}b>2yo{`AAJ0-u?$WxqJY51sX@7S_Yc+&s6MisM0l zkImiB_R~Y58s%E7uM@T!i&-?e<{8J;u-L|hz`0A?; zOO_pvFRJ>#RhYatDY*#w(Tip??f#{tM)dfj{-+mt12-ooKP?b62E}1b^*9j2)=zy* z52=sv@4}SrTd+HR@8qZkUEa~fWV@5L8XPVe#DujlMo_e%(9U|t{x<#!b2WEBbJ~L> z-+3A$9lj*N`HtTR%~jpC9Q)XRdjTfh_+R3*POmbYcdR1l<=W>p<3HKz-`$%h*g@If z8(rax$n!ZzjopgZEXz#8*)jAmLK~)Nc`CTauftzz-z1q^5nuKh)^n*GKQROI9Na5? zcg(_(O0s5dpHajh_XQRcRBVc0*2v-dd4%%&4I%I`X&_JHoeIcCc4JGpiEl5=F18;~ zrL{i}fj__5w)r@1c%A%)eEF-`*zfY|^ojREG>D{zNj}{WX3ogSF_&=Z$eW&wXKVP(OF&b>x2;J2=zT0SD`yfjvNNKnn zq%U+g=cmiuy3H?S!W2IzXefTTE1biYKC6Om`|aLUI<~&%LVE@4!fQ7#7GYKNoS6`{ z`@(NNq+1A!ZRC+RvIj&+kfyIyHD*SAFv5v=j}1Oj2R8fVYH7Mh)|9tM_=)z&%1i0} zWbZwo#VL7pUb4TQy2&das;}>W6V-T|tTQ*S;!RH5BaBlP+})PvW@2)d#37zmZx}YU z>6Wf46Y&L!j2yUi=(T)RF4)ZYa>B#xtHEjm`|}wOv>H8dT{MYLJ?iwzkgst>Lqfvl2i;7%mcoF~ zqne=LCGRBe*oT{@CM)DUtc1zXp2o^b_JwsOA?OFD0Qj0n6``p~n}x{!z7>9t-@h~e?+&BU1E zOc-{Y%^R632AtbBY}xr65Duj^ogY7q5t;5>4fx!~%=>+~kTvC2Hm}t+05NYmNG!6o zWNwpHb`qi}dCy1c^J$<=I!x|VK#j5Ri_~DL_R2Qb(#HDYcd{s2RP*mwf+y#wSl?z2 znHFDfhi5;^lX=+KSp5=H3&ERnR$Ey6m38vLWXn|T%-l->I7zK5sqyk>D4KHPnyt7b zZ@0_0&#jy}n5pBK1=+ta-CZtrILoeFV(ur}d_ToV&dm4uL*m6#9TjHRD$C)uuSNE-s$#x3bvp@!loWZIv)}Mnxk&!!mH6Z3i3s zKFTmuT19mV1eK3OHX9!g!P492$E(E_P2N%vZ3=J?S$t|3y;*kS3nP<(hZjZ*x&j%0 z@ZcIgyNmGy?3d`gryf7%%fEf${&-22?xEQ=HpkALWQW3MNtB=Ww!=+5n>MpF7nAbi zIkIXsda85PjXwOo{ie>-L1kz*?_-^!hcC--`xfBEI$(K4S#e+XJ}6&Kz=+&8tQI0R zK+&76ql7gx@IF^#4;vajO+u&O=lbZ$N!Rc4d8>=$@akBRpKGmXM?aCMwsoo*aw`_mGmWRY(AIZL1jZhHvvHs3S z!&l17K=#E{Q52Eq<;s)4iKJYmcj2}?kAHYl@~A*uCON6Zy0z-l(rrD5(H4tGC9eYC zXTL}@x(kzZdkoF?`eMOq)n`-A-TNar&#=``Dn33wz}Frhy3b2w#x5|c^uW+&(l4Ag zt$j_*RjDt*QWDd?i2zE)f8Tob^5uMLa(gDzjb zMfsDZxNqC+>Smsjl6K70x!P}Ox!cBe7?faIW`J%G3=9mkcYVv6C5q`I>j&R$b3je z63F;?MGc3ODEdCUK{KZc?L_y>lNI}`OK-3JLGe`-N&}PT#!n#dfnti=WB(OBeh+E^ z=tiwEbgFhczeK^y?Z(l9p<)@wYjVC1Wrpoe_t!!k-TCt-oEXR2Vdq>n)89ae^wW;J zQee0|E9(w62|sArL&GBV(PDMpTz6RPe5}>rfhQs&a(pu28%Chxrr%d}62Qon9y%}|Ro6f>dnAkc`?eYJpx(cYOwrG1%lMRH;oYZE97Xg^L9vFNvqwDy%sX&fnn8*dXAlNnGjr)BXShvTSUI>q~=N ztlq*v2_y#8O&JEbllTv#?(b+(H?&P$8gG$jJ@5^$2iQ(Hbtq(Rl1^bWZNBckFCslg zB9&Jh&Mcim$)BjaMAb-OL1Un1H2ENl`~6NAMS+vn`mnn-8sunq$NDUf&fi-v3u}_b7H1r9Mx zsJW?*X7iJ%C~oZ&2zlo^(@1c`O52W9jVYk;u#7_4;kBI1l(n}|5KrCFzMBdR6Z^nqY zP@MY6qdrKZd-QmYX3#4<$AmFb+}$+GHn6(ES7Ms=-MO?wkq zh4W_kw71{cY#$=rn#zD@A#jE0yRjBnFnD@d7Q*Iy%OEWdv4uOFb7%?(+8Us15?GVMDfR9tOe~W) z`kMlW3M1xUp(EQe)wOqr$USEGKXTzYXCLKv!pkay8#15uc|VIgU}2*C@<=+LXjkz# zMK}V|oJ*QkiXe#pO1!TTKBM%Bn-Ih@jD@9x=&@NU(&7-;wmmESsGhY-@p;KGt-&p6 z_F&ShNElBdegXZ8vSvEEU6u_`;xsx(?(jfuA;(UlpK;j5&n>pHlL32W^aK{(ER|i z-*k++V1K@~&C16YPIj{lS8Nk_cjj=<{jl9f@K71B(QaHdtE{C3Cx-q(o;Hgf5v=9z zjP&egp&-Z^@la>`IwJ6sO>g4tj5#qefi6{Po7GGXf3c-C{Mu)4?1EZay7zG5vZ~nJ zz=b5|hkfVHf_QsiB(PoINP-FagtVcUlh+do zz*faCz2R>?uUPQ|@~kSRb-xnR#L>eS)J(QDYHJt%n%q_mZ3y0}vZ5NJPq>94-q{_v zy3vf1%+tCr#WMd~JpaSrALq^tUz6`zsQUF5swt~rcu)$W2U!rEQ{I`8>~Q0@$KLX8 zYirys-$vZU;=aCrH+(mzDGsu!W zZ#jNmUCXJ}L~>~msM;#rq#=jna_Si^60IlnBT8TmfxV7lv$w0BuIA3@6-&DCLJ|Qo zB0nc7UwBL9d;9~&B%+Lv{SPS7L%v8fSo+M2tj(~nKH3q+Tp)$Nxfup^75$OQ6Bs{i zL~B(ZQc6<66osf!XIC=O`KuAvI1)R1q^rb0c&OL19OrA|y77`4E=L{#HZGxz!;7D> zt>R*Nh+H2fx6-5G(-fH&O9cCo8#T~ie=7gP=z95Kv+$7h<{dA0Nl_L@hk*@LFLrv_ zvNw4nWjU3!^LE9GsT+o7r?cw=8deV0Z(djU&=j(At3n2+f=zFoNj$=XJOc?xp~}51 z&a6#@hCgBVO%oX+q<=b6^ZJ`1{}_De;M2t&K}-s=glq=esj@&hNy+O7Ox>=@F0&%j zGKR2AJXUT_f1(^l8!Up+w_nl9Vi)9=Eb{z7Gg0a)+jp?cDs^Dkb{ z=_Mr&zOfmrZagGkce>ZhYW&L#hrI=2bUEdv80VxzxHX1`dQ`|yN^oi#Enno#XvBS) ze3D^XnbZEO*VYjsJrk!?lfXaZ_Yo$psej84)Kmiqxj5z%2m`kHP>l{Hvf&FDNi1SF zwP}nU)hHCVV|I%U;|p*lz%Pnw^%M9c#{6`T4Iqp^{azk^6r4*B8ryXsq1aA-TCUzfV0+PEJZf zQbes$`W^hP=j&ZJG0XHD9c5fks`?H`2=EoPX z!Wn45f{t>cxHXc1R5)I+e-ce1kWhzhnf2}4w}WXthm}q=k**V0hJ{LPCSKng_Z~OU zS`X>qhljmnt02QvTVKEH=TAy%S#do*qG)2iue-Ijc>sMaE-nI?s%=-yGzhR=hs%hN zR_wVeb6L+$;77q9li%c{P@)xH=byU0T^^{>tM^<*P3QM9nQ%#wmuAAPbSs)rL3=GB z)Z)z=p!t?VQbklxZX)km$bgFDdcS?(eC^dqRQ*VvgS$7y&VnSGn(=9$U#O?U|_Sl1c*5t#}oXYSb*yQ-?8P7M>fj(;u z`4~|>jIJvs`-=eBh*TFKuE()f@r^(Tj2-$Y-qca*@PKl!B1@I4kn zpGCuzDiaH3p|th8COTR^-ce*I`e5s@_w40k3i%NxTlc0P={aYj{o&}j>h6W2 zQj}#TjAN;UhsK`Hs8w>lOmLlHx#f7d@iuCu^~tb&!vWuK;LDJi?2*}Rbe--t(}!MT zM|ghMMO#kJ!-XnF8oMq8<|ZLh2jXwHqWUevE0Po_#n<9YGf`$Rm8c_RioYV+ViDIG zNzedk#8{H4(&9_A5Sc+V*_PA(!X1xn4K(RdJL$^HGE>*iX!%#+;Wr1^l~K){wo zA)K1)X*rJ%g^i8$d#-zx_)*HHtjX4mE0K;?!G(GsP9GP-N>*_vh`DxUW?4@dY9fiL ziw-4V+@`#!gVfVlvr;~8pvIOR7h-q)MxuDzc(JZ^f@zT8XGPjF_TYO^AFi}?6{2bxi6*%Z~cW&FI znfWNa+s7Bb#x;n4ZwAGxk56^rx}>ijV8J~E4bc&0mhJ85Dwub=4GqO@5;0MHJiiu@jDskK_GF zxqff^4`$9r!j(g2V-xGAaxH5p^JF`_0lkf3jpt-W_U%YoIRK4Ty^>ggS4`u5B;&J5 zi^D`GanMCp*J=0NfB+i){n4GzUDZ^1`E}^mr^%2}6H9Fr_Knq+CJx?n9636Jt1UK8 z3&zI0x(zZ&?j}x851Qyr8B3MXV%`g+lG>ztpYf0Z&A$~f&h9BQ* zz{b&TpvvmX3Cnk(ruk)fYt;90$aw(~5w??PVBnEx+LUVL*RK$Af|F607ot+s#KDLz z7)}WhePD9^NS1cwYK=2y4Sym1Q^UvSICjW#i$5rj8Rug#+d_i?s)Km*A4HH=Watubmb@`$1cNq^CsYHsxE1 z$+y+alEUZ344WmpbsCE5dEc687o1Qr7Qn5G#VCFWDH3|jg9jN9xJXeb~Ki{UGue+ zi<;^5Y%2)GX+TfhiTSkfOh*I&A?Giik~U%%1Sm;1@FB=p@3DZOOK zAlQMj)<5I9{($>VJfxB_)*66oeqfjbk4e(C;*4PpnQRenimOPiOf-j&o8 z!30(L>F=fkM1#HOOONK}G2lbkVyU`zwn}y^F=y40-lM|P`B%)mUy~Ff4vszvzh=E5 z$1!=S$rDYo7cl?rC{C`!>z=<%Uh5!cDj6bf zG?VbKFouHl1I7!oa#H!yT~+%480k1z@^CZ3PlREK8!773+Y>YnD8IdS1uoWCww?yT z=@O!c)1gP0ktL~{j<2?n>f^b@=TRi5XVI6UpwUq6oN^_lq8g7?!BclC!%}@dP0lrW zq7neX8Ax$e{`70I?FCn}n?>|_V38%H>!d^x5|D%_jDz!1rHVG#RYxD8_Kexp$;p|L zlA+_H1f1iq(RbNrPJBem&bV$qjwhpH#6s%&mt)`f8O?O0)lAo~y!my88>TlbT=_{r zmVCI&YbD(3W~M=2uPxr;^Z_QYUOW>@ij?lt8KA7I;m#?oxmlw()umjusruAx-9y*n zyMUB8AnJwX+oXSQ)^iNxg}>&_>E!nZI zc5{7$+mg3$-#h1_?!h-Lh7Jo8r3jajN;vl0Ro$*~;dz{mQPme_#15omc(cYj%yUyu z3LFbrTmkFB@2_W4w~aU+i4q@A$c62+5xgs=SpQ}`%}8O>}7KoCP+p`^^dmH%W^EQjWJJY+PG(Te>}T@5W2 z0b-H_wj9*gW}O1amz5il_&rvKc+;3xlpAf%PpKlZtP0Up(Wm1F@Qg~T+VdWNYNN!Z zWcZ>hKumyCg@jH6Q<$q=Gquep#@$8_6V{8a`0F>PB|;Dt0)#SB`q`T_=7G^|DbXk@ z>}TtbZUK$NDFqGHScds>pAueXP#-T z5Zz-^`9eM{TiZz5@y(!=IAs>IX*}i;{1GECk(+{|O_-%jZ4+iyTB;g`0LjKs*o~@y zhh%nKFAMJt{X*ECG)t(F(kMVgL=|OJlr2jT9j3+Am;N?K>`F_eI!GN}!ClvG2Z7-H z_(&1SydfM$n9_R-cN_-eZz~~FTq-|tFBSIGXY0E)_TUOgv5j=()KzUwUC|LtI-qKJ z90+_v_5f?!*cc)lgxbPst;!eLePnBI)zMx%iIO=ws# z#-47Z5>zpchjD|Blk;O!W12N*Ow5;#$HPJk*Us=*Y8>ttmX8eeTcghJRwaU{REP!i z7mz1ZUtF}0QVSm#bZfi%%2Cil;J5c!BlO=kx=JE2GRo3m zz3k!oV$0qM4?z%V8sy_A5~#=!6Tl0UFKS}qiiT;kgc4Jja+|YoRJep!ydjk~B!P4t z{ys)KBufloBY8nin$)|z_TGK}I9a`3Z6?a})wH)pQ>{{g*hYA#<2DSv@5%iZ-bKvF zQ&!$p8GV>c$(1zXp3*y6SO!6f=hzWO?yi(JVY7>~s#9`^5)ydPu3v1{Y>eek47)=U zuf{|;!~1p6a0TCMC#81xCEi|?zfW{D?+T@cjHx3PlS0&?XlOs%>)~1)+1~`x5Xexs zVAIlONrg)>H07qr67Y+)Y>$N~@`DG_}~g3_UMmFV*b zB6MK99kFwgbQY$cCSiZ}P_)Y96iJw8{nl046T!>Z^TE&L~yc_W!9cuBlGw!I-_j`#!29=b&I zDalFR9UBHa_|bW=N%DR);21wmUy|J5yCqw@KHS@8m>00Dd~3lX^S(t9C^2BqA4VAy zftoiyE-b8w95X!I&j>xk+ZV?aYXU%#V7zpnZ$)-5sbdeAuUG+adHAmxhf~w`sxSa7 z9*jmkVX>auQnkINnf4H=EuX9AO~Ub`lb@?A2NEmKni>x-6U5~q@QleD0~*r_5p?*7L0O4%l(!EFy%$KsxG=XSoCqa+w!Q?w&+O4dq>-2vlcO>RG0Q1V3?@ zKBYd-Uevk%V42U(vkG;|$7pdUi4k{#3e`v7yE_WGq^4MW_S?gsW2i{_s=gGu!5nn( zJ|=WoEhmX|ulK}JL|CWsVjY1ZbY(SuNH$F+ zr$BV>tUggh#oN@#GUs7r=$^pR0yY@cPPV4AElj}XLS6sF+GB6n^L=+PxwmBV-KsLr7K3&}30Qop z!7()Ec}`hbTW2QHn;BM0aJR1vOpKvZhe0rl9+l`!tFq7JRMETxoAlmlrrPN|ZR9Yc z*j*;FmXOF(h2O3z>~JJ6Y3t`wKN6?52RM*+3Zt0?qB?t0aV3iihBHYNm}{q|jACYV zsT;vi88VBG=8l9g9@EZR4`NLtsvTA41-S zAdxs!S8fOufo%eSTawU&rpCue6KeRWuezM+QyBUg`dL$lDkim!N{a(?vPd-%Ad=d; z(aVg}9+3)6Mn5(}MK0Wj$oh?fWLY}(4MU68%(4kc^3y|njBzJiU45_{t# zD+Gwfrhg#U4JFa|e=@cc2zb4{&UWL7jCE{G4WSRGpT_kY)gf{^7=>}2)L4$9`SMuJ z10Jo%2fiFx{K4Ng7#VV~NmO<o4Ftg~+f8Vs*`}Ez$%ML_ft#fg-bohgtf4C|Ptr zEZxsEHG-Un^sw$8cH+H6dHJ=0f6S-gaV=Ly4wujfAOmtPzn4oq?6$O+%_r1i^z`&v zHcD6bElNoF`0S;&p-wHii8WA>EMpmB5Or|q5K}|J6%@XBq#~J(NZ!vnHD^>@*QxWm zPgg~HbSAr|7qT6TW?%^4{(`9rT4L)zWDu&m`0c42Eobdp(fv~+xAvG9lp&T^j}%4; zlx<3bWer+m2oy@A!jwFh-%DYv&230ZN(vYRwlJ@5UtVCQoSc20=h@u7$U7FiJMY*a zFt(@!-WJ-O$UdK4JXlGCqfq_x0IB>j%42s{?)MF0B++xO%1kL^xA6|kb&(k>Gc%;^ zjYp=OQ#l((WD8s|Xq~>&han-Pl!S6a+|iOb_=E)A$!c^(3q?nmfWuxRNm+TBP@NA# zpf_V=w<;RLx9xtuk%gO4YVGL)ez-nx-?UmuL2N@wxb>THV{L*()783dv8$n6x^=8;DQfRc&(rg&YFk=BN`HGpn18nS)lGOqwpH_6P?`!U# zKZjd!p4O@guO5UxXX-F`{f-=-;2x&%jo^lmoVU_gOWhFHF`cu4z~-@+9ty;q4Vj4cPZ8BQJb5FYE?h zo4&y=O;uGKlT0ntV(sTV-%Fdl1-ASDy%BtxYfusJK-;|WliQWng+o{f=8l|v`pJK! zUzbOsV?lhYRs^l7R}*67B%h_^X`J3LJqP%tw8Og@($eEb;b)js#hgyx#BqcSniU=RA;6Lp|!vC!8-`F03r*x7%YyAAW z;Tl?6@q)H#zacUyMcb!Igg4@DnO-+a(UtI(CHG_}6QMHQ40#p}hNcO8F&nh2$sIeb z(`>S8<-4>>j05jTmX4v}*?!LorW2|O$4)lhRDqiHNa>W&7qAOuabzvd=cJ->-PkKR3Av;C1Jh+nm zw>NZNs1|X&R1b5fgpoDDOSQ~TJ-i|?!Nge0EF%2TD(Fw(U~W;YN5j#w;fcU9r_{!f zTIWkV8=1JJ^wX;>5#L0$zk4+`)cq?pCGLEqPp>wU%9L2D7Y8ZrpMg0?tCN5p)vaQ> zK7>A}&y?;zmRat`5oU>n=YYo1MNK&%p~0o!Bow*d>{>**5eJI_I+)jDv!k;QnN-?> z4KsO|o-Z{@Y%*(RN4l<(;8k8;M0NaGzP2F91>tyZt|QKwE=u`v!KI3QH5^u5A()8+ z%#ep`PK8>kVHSr@@d`XhXY*O6*All~UY`dJ>XX!6QHEIIH1)CM6S&82@ zm(@OcUi?{^7ttsFx^pKA>(2;VGaB6nv2vq%(=-)^Qf1ypfd+M(ZUJqXaRn()>DG%E zVJWj;nL3)Z{1jW)EzFEHrqR%%$9^Z)$|gPN_NsiQA708NOwyE<043hiU{)%dt)K`o z&Up1)t-l2Y?|}SIMYnP7_0gdjd!I zI4aDNWqC<{ZeNumU31j7D_(h|V5Xf6p5o(+ghmhZ#23^ca%jwC)VA)Ki^@j;?A60% zP67W2#6rg^-tyxN5W-ig9XOBA`Z>V&>3kHd)SW*pRImVZu6^AQv$n>@3} zHfV&*EJ?OllmDE{f~t#aKk;-wBfb~XX3I`a9PX_7XV#9Pf*!1_Cid^o45b#19zA-s zQJy;?%ewVO`{)UJwB+EAAF4<)+1k3OZJCKxnrY8|anW-}ivpuOfY{aRrFhkyq9{@4_r+9@;EMv+Ov^lf?Dg zP+~NM)bP9Pu?a{mQ&ERgw7=0d@(!qD3sNsR;wg4rWzRsHZe zVrUKir(EHd*9)kOzy?j(KgAd;TXxe1qb55-7Tgy?rHq4PF|nGQH2bJ2Uf8syC5IgT z12qP%N~k+!I7qt8rtip{ktk23kW-x|NRQ99BIHz%P*p*Xp~HCJn?=vy`W3uo_|iwK zxOwNz-w}&LK4mpwG%Bmi)kcO40+0A7{J-Duzleop>)jEYOH}HF#p5)vf{X>`Y8ZHyZ0AO@gD6ZxRABz9A zzkWD|Cexb1Y||->4!hn}vX<55*7V_dB_P`|taml6$3$79G;{mj`2<5V`WfOQNtGb_ zJO*?E*Ka8EnqIW)i2wAdWS}zIfB=%;ol)mu=OkN`fT$tFYWpFy@uLx{bG* zOLFnPXzYK@PPUI#m8vM?^xG5m)~AvXPaRmZN?W_!ExjeJrI!sfKU^t`T7XCS32b;! zkuxqQn5fzG%iUPbpr_4^xwpvIpLx90i?gXUFY|ki#9VbNIGvEO_&tV+>4qs${EEru zntS^`Z6ANl-QjD#!k+z@OEGel2+$zrq zi8RMd?-!r!58F4TXOF9%_|1w>c;Dk(31L_Hm2qPq3uzDr%KsU<+11`8gQxShwf2a+ zzTG!F$5Fp%v(wg$im{e_4rS|!+;h^yEQ3KS?YCS|%MI)q1&1h9H<(7E}MM8eQ;X;4r-4YYK^` z_kOOLJ8Oe~d$@Ds#52^5>sTxR?M1$L)E3G9MjI?AI$Sfss-ZG zd`hKVB_ty-qbY4we$$#1`xnvZb)&o3ASS=ku{@2hxo7^8k?5dlQC5pH@5gk8AN;9d zap#)lmv^wRCj9@Jq*9jLDql?tHuC^YY<|i_w>)pED3{=*hT6e5f)BlrZDN*6@uGWn z;Eiv~_LaVdr`zBNy_TO_6+zN$z<2S^#Zsex3Rc}?(Y|Kkrq&zpJYT|LXj$w*|E2MCc`y4j(W1l?0@l*bKeYwxnqL}wyt>i{*#Bc zVxW7PoLdvWeRFDVKC_=;qr5X9ygi~*Ds0YXygtXRx$VJ-gUV?jgsX8h$yPQMu%w>ZGjRg|xyPpzJaSOq9FEle7iL%?O_>NcCH;V4%56JuB z62BY%d9^Y9R{uB(n!CuTm+wW{*;^x96BA8%7nLnjr8t!9iF4f;C7tCPshjOF4 zNwsWD&%e}8R$|-L_3))b7X9BQteu4pi1X()>;$2b+f~OCL4p^)|M9O3G$Bddh3jwb z+${7GvO5MXZfA#fs?YKNo#Jn}i9AwDca$l5zbqCeWsvv{|7{3H4t9@b9saeJVU}7> zJGPD40ox(*voX%+8~n*rgr6Jt1LZ+7QhvH8BH)ES80>BnZ3BZIC=_{pV+=b!@~qn%2m!oO-^&F?2LBamCK$#9yvVBNZL z=JR3Gtx-i!4+#PeqX9n!rKM6fHjJ3zu%yD?VIcjH8Z(@s&ehK-G~}Tt-QsN1_zWiY zNSeeRUM4BXu*Gtg8>RDTmM$eio59*neme&3Ix1~xi$T)=s$z-oB?A2O$8nO$N zv7bZ~iD_s&P5bj~NlCB1fhabWU*A0+tV2-87ztLb%B8xsbRIbb_&RJ@;I35`8V2)r zF3BfAE=k+F#})It1TpiwZi1dC1;1B;-WM(qRg`4HWmG{rkMVZ6l2jF={1`+X{sHWW z+!BaE-1_zr|CnkF47>MF6&`acNC|!{aWj2rZybP3#Lzzuun|~j8aBKfw7px}gOG{EcHipx7xt$FA zaZHMeBD4h&WU;emHoxv@?Iry4+CLw=cs7A}Fkh)3V`kDLW{>fnczSS&=rvkc)J%^o z#Jv$@!bKX+5Xs=^S}2Q-Mg=;432WcIRLamflGV|pyE5a<6FyNq^uRwCU?s;=gWY?{ zY$xitfz{X3W`eUv>CTCni!L1OQPNb*`t^`z1H{dOSji@lnOWIF@$>a5DN7kAh6ggBv(U+{VeSBZHI!^AH~Lg zT)IJAUSR^PeI6E5e`{u1gX>b0DhezF8*!UNV{jhK(`Mnc)!!5mM1%dBU!gncMH{oT zv*BQ%Mtm*?tO?4E+0r8gmgw%dhk)V#U2d82tQ_ete$D1J(U@!PB$KPfQlFfjYV3IP zr8TI{jIw|3bpJD+W4t*Bm@RI5{tcL$^JEGJ1ddarPkcrpNG6a2|wX% zaquX2KO(z~8To%#`VV&tBtKQb&MdN?(ye%%hdn(tWoOlzoJ`<-*o_BH3VE`hV?_w8 z2czcwTNVH>0V4!6*P18z|LPhRhDaWciLDV#ZmFT;>@)(KES=*tcs)EcWNdF=7F0T$ z;XKr%f7zOC4Y%@@3!wz`fG=Eue(EU#ZD2vKo{u1+|?faaO!Logbhl>low8%6=^v1{IzZIpN zOVfM_)nq^a$mo{Go|=)-yV4mt=(gi7*mC<=){}nSv*0Ns=PU$*9?KTSCi3NgGV{|i zu>f}GU%>bGjoFK`6P)k?AC4QGXF0?y$kF|0wu3uY=r1eb;Na?fkf-!xzSKMsT}RW2 zi&8eD`b0=)c8}e4@UwR0-|6wE*{bJvlgGb89Iwyp3W{{cO`~ICIya8(w($$mt8lg@ zKw?nrv}VEjm0eo#+;sll=kWiAl&bGPQBuvRiCNHNcL0XYOSh)AHS>jLueV-sA5S)u zlY(V+^&qmX%`SToh9`5JR{&f(^!Sl5;1&5`|tQr;nVO8 zNYx*!($EG24{((L0cmt}6p}g=0?uawWQDNoFz^sZ-bhes_htj=$cTi-lr@i+(od+u ze@4aMjuK~+dzR3Xj>@hDzUtomqv*5Vi=NE>p6v5kBz%K^gR&3r-+dmB%yn*SHJc_L zdCBT5`DOzYRqhpuhWc2hYSE<4PMnqJgxi9Z`WB0tqrhHi2d^ z&h|!r!$uD8pP}Y(F(FE-oM~6fa_fKV&~Q z{s&ir$5q2M9}f#$JjfKo2DV%Cm>bGcWB#Fb)GhfEMP#ct@_}zP63Pw!UpvM30T2Vk zHy{w8VGF#ohCOJyvAynpkRvF{S(D-2Q6d;qsw&qv{TVk1K-ptpGJA1t@$FLg=qUOf zP{PLcY;Iw&Q`W$FV5a>3O>gn~b!ByR5D*&10t&ec6{RB^ooj=MY#bbcv$HzDb!C^9 zq5%CSF*!Lou?=t*Pg{)Njp=9LsaaZYoZEM89UOXrG%LJpEITmg?BRYly?#L;kMx0R zg6j=d3fZ@j|HL&PdfEeIXM=QVf*8QE2b`ErGxn^829Hi*;1g7b<_`r)(ZsWqr-uE& z*owhe|-wJ4`yqu|c2r%@#IjX41A_%< z0;ipO1MQxRekI=kU|@33gn=3s5viI64hIK^rJdd4_=BT5qxwJpQN8g1J%BRnkh`su z6UKwa=!$a#uY^6^^~r?NAvl(y!=!R~+wh)0noI;WuK$zE_1h&MyfI7c2T3}|o$r-X zy+DfKFo*0Ge!ulz7$^-@C3tIKKgsaB;}gESFoh3LPS_6(k`13SvHISfB>&4%CC>?u1lMJ(}b$ zPL8-f3%Fn^Fu$%zm9Rpis=`N9`l;e-&(#F&Cf^#ha?L8wLrIg?3f6rg3CN;<*Ce1c z^r7y8(ZKdR0vg-^PD_)ci}DgnD=44wK?$_0S0LutDCwVm=lS#^!Zdmmj{p17g0Oou+<=cz!S{ z*gV9ot*vCBpny~Wh(Sui!{_+Gv-~|H;L>dRl*t85HuwGJb8sBvVe`HZ%RUnn=bb17 z0?gf4VTZbW3n$=KP)0USJ&6U}kbzjHsG1s9NJt2x{kEsyb)6qlvq8)QTZt$=_4DU0 z!`mrCbHQnViI%RLmj>N|s{1mKW4cdlzDA7Z5Ws4@-w#9mEzL99$A<-*<@D_?l2$_#9&@90v#w2VBjN5#!rj1@^yp^$`7iH^AGU5)+RH7|Q{(>*8pTg@B02)WRa9x|-A3+4*~`-+gQwOVo8y6)GCzZqMJ0nAXkH@2tpVC^DE4}UZ0uSumxGv$%)Ow!$VZ? zi52fneeZ{vZF3_d|A2r;;M}$3)YP2v@))po0p>2@OWB(Seea`wx`HWdaOPy+zyKu& z2Ugv@f|3#%kZzS%QaT0|p(~wPTpR-G>oL+fS=H5_u;>(7MMOrxh*QjWnQFB$GYbL- zeNfdp>K=ivR2W zZs~q7(a=}+&6_u>h?6lQclgZ)BO|_NRW!{j;MngXzY#z_XfaC}*;w_v-@hLM00fYy zEeANu9{f+ap|JmhbTUvzniNoL>VAq zz?WuDM9LTm?Oe&Muje(tb#`%i#>fb?wF3bJ`&tz@5yH*GV+!=27hT?PXfq|4Kki0H zdwRd!ddCR53DAmS9~801R^Rygrr#g?-J$v2tdbQL6tu>*?t|l<5L^j>7VCC8*cM0R>P#Cl>Mj3{-z<<1vt*#?@BNif6GV zwqAuO(^s3DM+~jSJh|MRJpI(niiCnXfa38h-`qqs|6>*xmL}yzwwQM%c}~04)h$*e zY#fmTr`J^y;>c0LDz)_K^sNsf1$Uz7n$*8j40N2s<3OrNCHWQSq4BAS*2O6d7Wf+7 zv=}+mY*>dX*d`d6gt*IxD>z4#Pk&iEe+S}W?%J&c5 zFSd%y`}+G=M(%G$;AOT1v9Cw=; zcj5PEOLs&MjCnwk@Bj9|_T=N^yIEYiCDAH3=-xO65;Yf{WOr?V)%C!`${>tfvpGo059N+89;sA$<4+aU1rt7w8gOO}tIE3I}%_3RXw&uAUbv8T&Ff@S%dvHK&o%Q_Vv^a4(TApJ~iH1*QiE zu*hD>s})a~Sy-@xSq=Dfz=1(~G)_LgE@kQJ?T+j=*;#7!>rcvrfQI_Md#3T^jSwjs zz!_Du&~Pj|dKQ*m`?{PdYXVZzbr8K+0XimKCY3bJPe6OPuf=OUID0Ew+h4$|B+1k2 zGvk4HhFr3y8=VfkGO2(Y)7lNt6xK$MrO7F z=|5m-(hjqP0WoQA zodf#J4lyA6<+S_H+ENbM=VZ0u4q>f+M@5MlTbz%X;0n|%rkVdJ`$_>vCplGM_zMr= z@{HQdfmC3)6{^qE#IK4*Q_Q>Ox11JH?~u*{iEGsl;WnPf-kVAQr{jRKqd(v$N3O4182DbA1FSZ!Z`ist0)#0D2ndV;Te*BjPEipRAP@f+ z)L+-_hM`c%;qvy3pzpIHa>CpoH9lkrie`kX8J^H<+ zRQ%m5-qs{sd+8c+_dfP|KY_)=$vOJthoYC4z=NezI@@0w0pUZe`8mY6VJqFaZ}kV` z&rYs#+Yj?qu!BchTZX&7#FfYk#IMnGnXs)d9G{%z?l}>ohW3vPX4Mu2I8sB~M(NK< zt1+V`zZ;S%g?^6PHL^8{nC0WCjr>)qkpKD6prm2;@F@(*t7cAap)ceji8-NXAmyOS z#U7jHZ1P+2lr``)=DAYZ&o`mN4Vy&xKL<|dn~sjGoLz`z2MwE@fCQ8ZatNn$6^S;J zg$Y~m%15>yy1asUwRr5lCbz1O@7gh-v{bp>!LSk(J-zw(grutn?>w!G8KZvYNOw-jnlYUwl#Sha3hcFXC#j5z5Dsqp}M%eFb01 z|6h-o=VWGnv`&Oq+ej#GTO>-}_CS(l7Ze0WEWe;241`S{P{Gq|O;ZZUm6>Q|c6IAoo7dF+9s`W9&zAFwqx;mn{)JaWw<_Ey?wvjE z$c!cD&2JfzpFjv@q24L5r$-trXbMY9*8o#j*0jz(#FD8eYFqbZwVgB@%&87y3yVath{rem5s_-#oA5&SdVF;R7XduyKDK zj&GWVo5G2fY93b9a9A~h(SwW}t!${(`7Wf_bP60BP^RB1VLBo4_3I8V`>svd@k@JX z&5HM=4QA#-Qg5nGFOS(ge|&;mG}g@zk3fTaUWi&2pMCv2Z(JqUELjkGs>Gw@e<4rM zcQsk}U2vfI$|IottU!0%Ij_Fe8R>tcH7h+M;uwq;f!pU3iz76>8Y_)$;6Xp1h9 zfB7D%->u858``jVvwrUPXt~BAEr(p>?W?u3lQRxh&IlWe5M^F*&Ah0E&$eeX`?HnJ zOxYw4P_-RJ}83b4)_0n!HpVC}x& za=jO^{czd~h_L+dy|zOo;s3^Q(e25+Wu$s*%O#E#^t0vg}OI(>H zK3F~fy%z!KU65VT0RnM}Oyy&i?%>3L-vG5$Ryy@QWyd>PeK;e_V{tXTZ2D*GEFB5I zYZ$OGY`nZLOiif(!5Rox9BTQUYW-Tv6_&9N>hT(qq{KkoUAmUvetUjqT4&CLVDjj9 zb+O;`^wiX$(LVe;QAkd^XvkE+VnX}DZ`e0A8sTdu5dkiqA#+TwPSrv3~aUhUdUt4DE~L7B`ah9!8;< zeWMai5flpFM@@@=uTwZdSKeD!6@93L71P_-#IrPXcY?^2Qp%SQgifUN|2p`w1l0)| zDxJddbx!0(F989`#`lkpcS=hQIJH*ZmzQ(!3Z_&?_pWxY9@IE^i8oIBl-L9Z3Xg_Ye@Wuh=u{*8P&3`@pqVOylofy1!kT z7$5H_RLjR)waLSbk_MBuYsC??lkkwW>M!QVaz0_!F^A&<^}@2n#EjJOns$aS?zzn{2#jB0xHX;dmnxj6a)pNJEglDq@|_1 zyFt2Dy1PqSTDn2HLAtv{TDrf%bI$ue=eO3!a-HSDhnu-)_RL)S+IwHy%pVWoQ9C3w zEKE+WoRg9-LquHs1t}>h3k%E9{mtP?7lzJ}iTAlliu@Efv=5e^$l&ruUe0U4i^wG= zIVz}WSLB^t!vyT?9dzuTpuj@Qp+3uI#8*Y|YsVybmNXy%2h{V?B6=j<+<0gYH)3N< zStPWro%G$s5Ls={L`hm7HsA~UB`GNBIxW>Xzo3V7nOg7b8ah1nCVb0)DOjQm;7WA3 zUt$)+esXSc4pN%+<{hd6DgX?HR1ylq?AR}Z6l-wye-HBNM~o2{DN-#tq^hcL&2E}1 zVbdAot=}Dw$OS%Zl^Gw{_t|~u7(f=Zd}T&V@ekS!#OsLH+Z^$}MBu;cLv-05+eJm| zbiY}szacc+s|hb%5=N@bYVr*!^9*Ud>_fafZnWW7i0GY+-*u=*78q=HFLVXu%4*MH z%g|LN`KUQ7SkKYL@rPo59iDvjF*^Vy?HS`F;$U59p?{-mU@E*`b5sJN4LyDBn8C6* z3FY9_tyUibm--7oL5n#rDj?7f$QMAxCk!f}l1A0ke*J1H&a1Ew17sX~fzT9Niq+zo z26dbSAasnqyzUDI_GeKJDV>2PUCGy}WN=u!6VcU1u(x;A$P`aGQ1wrt2Wld{^aIP% zY<;$FetwR4JT%lOoXu!n)bDz=7j)?oJ1dFP85@t<-J`9=GPN~x`9{4YK6S6hOeX~H z-q~Tvh6{REmbGCAbR&1k)07sAPHQ+R4;a zRb4%|{UZab3kB;Nh9*y_#!jzI;K)i!HGlpLg^{UX+Q;SgfK<*3Cu_@^iND^A(5~a3 z?NHeBf;V`^=W%H}J^O+e0%lL`|8Mm@Al{Kiurfr zyYCAWp{I}{EvycS=cD?%rnQX^)6L<2f9M^ud-IG815|aw!GGAn!<3N1!Ap5V&yI73 zGEJ!AA2&{paI(m*lU-F83HEqPU4=*F90BYYKf~Y>uTqo476)sb(Z;56Oh$swWO91d zUb|}Qs_mP}ym-|adRZJD&{tTGfrj5}zw+lX|8V*j1q;rk@)rDg_=TuVpO}26^DG7a zgWS2D7>i1z5o&Q-YNuu(QTRMS^yu=In*R3Xn6#)wFgzvAOcUdizxU>vNL@_hD9Zo>q4j?HA-GK!IP;hQa0BEG)Js~IWkp0ph*w~b(>=j50l%B? zOJ?RL&@c)9Bj~8$^Voy$k5CZ|0`5ELr`e+v03K5g@Bwv@=~AtA&~(nh$w|Mqr)R{z zUbE@`dN)Y10<-|@*>M<~n(BUR&!=ClUOo?MSg=t=^jusLA1({ld zv%A}|@1y|sdlIwB)IGtsCqTqW+{A>Oz~ku2vuDqO?ihG@2E8v4ABY&)euCCk10&w| z_JAVl1N2k*tfir$;TQP=pcn<3B>W*j6?Wauekqk|HHr!dJU#%>Wq`lK!ow3OQMUiR zv6b^nu|N?3=$+V;$K!qnXJY|?DVDMUE0S?*0}p-k$#sQ>ZC*vgk`@?KEi1GPFR!?^ zRk^*ImjK@bH(JxlwX&}_DMpMTMY^iSnUR@0U@^YjkTaquB#Q!|bjq4&sSGy^3N7RaE9X={3Y6$fpZkAS@YraQCPZHgtWIXe zI+KiNEId=hJo$Ol4VAdqA{VZ1KBZKOr0)(0#65G8?Ddxj5f!zi*c$$h3jK*`_TzI) zuL#@zanW2plTgR7FV`In?iRhz95;U%dQ+o&e$-WLbb7f@GhQA?DS|kIb@Wt5+K6 zi?im`XxF&DzQ4J-35fD?*0bbC!v%-?Kmz^v!h)2#IyPvd33SFjt@lL4#Me}9&j55m zK|!$sym%mY2t3rt8CjrIhz-OC7iw6(g9kNTEV)0rAfux$w&c9LX?HglBGQN zRA{;WMGedsL{m*e$yowk5rAz4GgtrfTtHm6vq^sF+@H{mo)tB7nkjyB?VEB`mt=wM)YTD|9Y3@Tj zE;GaT{=7ju!2JfD1NhaA*Rfv=i8OHt*@HYQGg*R0H&UTCN-thl+T-TY#W<$O7w;3d z-a#{w3su&U@D-~o^c(phaVJ1Cb(OMluv8QXNCoBx%rxc)Pu0-9FogTd+3!SG<=IlR z_31fQ7f;p}0 zR{*LNo23EM0j;{Gm8=~d&kFAk6|Q6-cKB(zZ4Q^3_W-`=vQni%2dybOL2D&tr7h5O ztagv5MEPc7xx!|d?|gqgfu#gAju;(3cU4r=Zr@8y2`|;&;?=GIdFSOq&&cvpCF9FV z3cnQ8$5Bt)C}^pPvLG8dS*I76O;;H0Eh-GDsMxHXT~YRqNana{9d%7lQ&J7~n2VDm zy<}qJ>svX(RJP!9()e`|r!2{JRX^)+b{dm69TSr#LWtS9f6lU8|ABqpc;c<~i)gD#xTu5WSq-peZIdG@)D zm@~!V;tr4H-Y*i7wpY)hTh2KksL5Yg;=#!ruTGrhnB9yg9P%a?RKM}efE$q@R0!OT zd|b?}<12R7!20j;dW%&P)&IC}(Mdyj!Zv+DeFaKqss{Q^e9T)~n|qDk{;>!hHcU45VaiaJ$CB4$t?UGG&=zD&E-M z%-Ors0PbnStZ&b5c3vTknKlP9Q62@4sTnzDD0{=Gc{M7=mfhv|ai|j$S-jlx0>AT8 z{A7)F-m)_{JS=7SaPrTg>S6xubgAo0KFVB;H)gv(1#;!1_ItCw5k9K^PMAB6aplY6 zX4ZZCc(CNf)!+u6X~@mQ>A40QUK|Fm{}eiIFC!}_%+qA&8;po+)^3X}Y- zQjeEZBldND`fJx5 z6B8RG=^xEvsLZP9NXpbe0V==B;(5lhtesw4KaSgzURPn*^3h+rg#~3r+T&dHvj`t5 z74i!`<%P6fy>hg`5o09j2nJ*wJvp~ogG`Z@Q}IX~P+671=kDz@fKjP#0&r|*^$wRi zH8tz<;0`_XIh1;saUU1p0#PwG>62PUZ$~!y3kPw85^l_g9$|53>$RW^4a{H zXu~bTTWuLb#(B9HVP%C5LxfHtaf|m&xyUGmDTROfO(dl+(g-MU53LEe2EnXlPkXBZ z7xWtdN0Jg9Dr^q%5ePIjl2hY4_2od>A__)d>K@I+uUz(0!N4A_26xvV3!>6WoG|Al zslUv~BMr0y(*y)oQ*gon7cirsATF)c<)mV!wXs0V7X3F0t~l|&Hdz+Sm8a+S<`hHR z2N!NM=LJug^biXhYgvABQGA@)_F!MOX0um{_%;g&4Un0&NaU`OA9`YxoOgL`Mql$( zoIjWl`OfqiZ!d&~OBZvk)Wx+&!FG@ssM74rt0V5COkV~fixjE5>0GIA>3Olbl8#zb zbZ|>a$<0{MZC(uHSRm*NdNl2JO^kgtmXwy^tan;RaME~ApT=39eF&vK&y59^)m$8m z!vLoNV4m(A`%&H~68JFV?SqiCcjxg)f;>KbeP%!g2Nv1~1dUSNy?o58Vl9lr-@W1c z>JG9-SSuYgp^1bm@?dB$Z@rR}HRNK4cKgbsHdHb6N#X1dat&Tsc`(8)Hs1kNrq>~q zDe8(GxZQ_{mgZQ%@J5 zUenCKt`)bNfVxSSjODvyCO+?vp6<054Tc_BDmnD=*IMfF!~GW(BVSbbtzjoNaaL;; zmU$FFj1NPa&Z54mM&G{5(P2IPf`NgheWr7R*$TMKqzB||$;Sd#qV!cS8plD$@ybucO5f%&>ucU8}>rt*taNNXx}kZMn65QRV*H$;}JsXdT<< zPoH>r@#p35@e`$!FE5xI>VJT%ormh|p<~1x1C=%#TZZ7w_Mg;O8)w_yH8-`|&B|)p zNOJSHWaXUdasq9LPR|jU_!zsu!4C|}%*?Gg-U05!zM!;_P`YgSz#N2vdiJ|-04(&n zJ(!=@N;8sfG`_s+Nq9m*PrH@NOdhXwUh92{0vK3uZNJsppBpO#Zlp%1sOx%M!gST` zfQf9y0yh8EDmP_5PS|t0CJ!<*bq36w+!7SR9aq8*^G$lM-v|D&@WkpEQ+kSVXB+I;1L; zvt6WUn3-EYTUoyS=^oT=P@t$34>VRnXgegFl(&-m?S=+_?`*3KVd~@jlM4V$xalr! z`rACyl+qzshi98M771zTe^okCiEurwN)34pAnwFxu8jqcgZ#QfgW29WPwq{PdU?;(D| zCLb(CW~Y39r=mWiCbK=q)C`mykRn9d06{#C3MR%B z`Py@jbZ|k{bW~aR59nx1=gdEP~#T~m?|DDY%FO*1J`KLlC6z$A!LU6=d#=pow1j$Z>Yy>x~h={ zVav6oez8x2j1Q8uaYS#smOEjE%Q`gQzB1 zG`r1s;5+yeoj%-?;R(`Tj66J|`-7Q?qhR;bcmd_bba=LQ0RtOA0#HsWhg)RR0&Yu# zn-BQiA8^$)J?=Eb=RsnHgVV(*KS$?YF;1Mi-(tLgxSW8zTTfqs89*tvLxW6*$NIHu zASzPP>NVn@EC0v5cWV!jgM>jwLMpFgXmCX|=>YCRE&GnU%>$uONA_U-_VLvnv=0%u z-(R^~%r=sH?SY6AevK0YILZK`NRz?gZwZDkD5a5|TWabNlGGpvn**E|sLvXCefB`Q z!^M>DJB?&IDonWJlMC;-%k;cy^4w&t-Rk*6#2;fzeZ4<9PSRbT2ac_^SMLvsC2Md& zdIyH`a=w1l2)o$X$5}aQ^N(#cYAfl!0pwW5Wy|XV0B z6Pw@KdVIgK8LajX$3d7;)CXuFcbUyvEcvTuoDbt$FV(|*mwni~2_o{y8l@=N*9r}n zW#HxYk;(5cm(DNF37q@YPda~f6p=yZsgr8%L^~1lo1ub5!bcT)^koJxr%!+K8!w&8MUxIPJZ;_M8aMcX6tkr|C!ci+^D@Wy4;^FkJftt-j+Mh3eG;+yyg z0ML<)PfN2ebJ+v9fbV{fdTX0ke7uJ|FS@tm7&^0& zx_P*}`rLKK#z{_H3e5Y93TaG%N&Wkc7cY25>v|t3FrR<5RYPkHB>@}@kwg?cx{pro z!9cCNnaH8$tAoyq6#IS6L9X*y*0o}F6y^O&Bh?1R>G;#;&d3v~`PVogS>ktqET62K z7n~R|n1it)p?$2huRi`xOVf5q>Wi~$49I>Gx|C6 zJu%_?$c%y8rT{?7;PY5+-`2Zm-@d017BfMF1R%25*6t8}kH$~Z(Qa-_b;l1A?P&9K zFDRxkavC1;39x#kwPz+m7t=w69v|Wf zKGT(jopo^Z9=kNLu+}mGymO`zcDvGuF?86_JDBW>zu@a^6)_NKb0b6+HLI$vKlcxOCXLa4M98DBzNsn_1@ zGc+Somc0@nRts`f#Y9D$+5{{#$cJ~ZKnVQNeafl(_?|+_W|hhlGJYpL<$$D+DRk*Sn1h4 z{PCCRnXC$yk@!j6Z7WCbhy$-m5@ezPYb#UKad?qGSPIj}%YdP=Te*?eI21&3$6ZiK_~~lKf(a;| zMgw+yIRxh2f6d-s0rzB_lKDcx7c^)PzWY#zKQ8I7H zzYPh|HhD;vUzQwWGL+?-F9Qbra~Fmk!C(Rx$&Oa3rrflMgIjW5p25+WJen)+6Zt>s%8cl6bZ zz?N&v@<&hrPZSq~uhzOU1-k~$?>smhc^QH0hPO1}`l3XlGSf&TmV!WbSv>ii_U6+o zR|JgRT8_MgI5V;QuzV#}>@bUA-RgLgK2;h~od-fB8^cCtx$GanFXG~IPjrx>r!?Rl zG$t`V>3+$0n)Miv(HGOe4V~CIHJr0jE!nAC#0PC-fwYR=9M@U_rFr3+>j(zj$F}zz zwP0!YatW3l2DD_HT3&}McCDMVU|6D5P7#^J}(g22Pk(xV7P_#PP&m=r%HfXXlWgnd%ZCvW7BCDvY@bd*Twsfy#WXqNf=m|iITkj) z(HyJK^lpcBE$J@|b%#5hK5&MIjE^VqtS2VIU&DwYx7yfc2U?1u8^^pZ8<7=rK8%N9 z0@t{&YFXSc30cf*p=2){b248feeO7{50s1>448o?Zb@)M$H%8ubeuBQrkn)Q%iU;R z9?ROsgK_ENscX%;9tqJr%Z46 zY-_ZLq9FyDL!IF@E?+jQSn$5+FE8Z-WN>)dt%Mu(;clp=Q!E7jqByeFm$-*xf(#1Dj>JO!f2JLvZ-EjHrIUVC0M4h zc-Qs;y<1OQmYv>gMNwP1y<-XiB-k9ec~YO_E>nQ}P_TG9c>6V)ub@B$o|=XVB_L3_ zyDgFeT)o%qZ$~ffoyxpZm$_|z?-yt99wcGOWqGi8rtm$in?PlYj!>Tq?ar0XsJf-4 zv+K0JUB5HFhVg$~Xj7M1fN6%)xN3g+FN3MpTv%~z9{ErNRIlU_Bx_U&F@^I-1o9VW zwEG&PctG}}Q`J#cNa(?+NM2U4Z+D*Y(@%r|Z9qWCLO3`0B3ZMSw&l_&Ti~Itt8AIz z`>8NP`(Z@>05djzYbLIRjnRIMM?T&?8d*EPZArw`Q+?c`J&XBSJ}M`rPVq5?Usb{ za2z@!>_fb_fUQpd-BupID zdFdRY(@*DtkBu*BzFC>tweCr~p{di?ZWG*-IqCz*l5FK7K%APgND^3`UiVx;kNzC9*awFOXUG9L7eQFhZyLZ6sod$#-*tMa znQE?HlzG@xDF0>E=EEdrW@ckW8UWYpUR_Hq^>QV%SaI!b5p?ryh9uow>bDt9Y4+p1 zI=YfVd0;r7jV9dcDmK{oX@w(iQqD;e?+}j1_uXRI?L{E_Z%xyq`Xd^cf(*~8YZ@~) zEEKgGE&`*TSt++>x`GZVDu0%a_)~<%R~y4}u;tl)__+=frqLRCz`g;e`z1;*@u9 z1iiHB;*7d@EX{h>&yKs|c7cnR05&mzxLdsVfUevy=KitEZY)LdNL9I9?Y-c;9#8Nk zdCgaU%L;6UlB!qs! zv#)Y*53(Uyq`bW4#wO16kBLN~FAHci?a@S51ths)F7}O<9wRmJW6|xbI*kDG0bq%h zk(ia+jPlG6+>{`P>-K)K#a8a8=jj)#>b#R?$z_@PiMxOj7GBdosXm->unlvT%HX*B zNr0KvQ1P;|4>(EBOO%E37F+tcXk`CjJGVJk;Sza+O10Wd<$`A&uMZqwjdLHgb8eHO zE+szC6NEi(`mqa?%LWxUj6QsA2xM8D@`X2-7Rj*)eat@7-Ln((HI^k9O6LoHIU9@h zp-*<8Ge?F*$bzg`7^JLT>I-y#9zTU4!$hF5(lmR&>q>p|=IVNo^rZ9Le#AX7;{x>Z z`IeIcGBT59MJQDXSTC#8X+Wg<(UZhmE?|BaCTn3tVA1w{-I z1OYw4`g=H@bqAmE+W&?He3;qvOE3!HRgewYd@b4p9(B;6h~E{U0zkI$<$6ZTiWt8O zd54w1yfVZD8lCG(sB_H+YfKPYAFP~-l@s*X*Csku#`+`9w z`R0uarLRk-U%Q-Wnl<=i?fBBpT8A^BFt{dXuf2-qp5{>F*6A0HaeI1>YsV)_e<%fu zr97>KVZdoemZ~jsgv`^@(uV2UUOkU8+w~BuoAo*#X_eu;GaDfTJ|QrFY0eQ#HqvzW z33Jvik!PofFBzG*h97QLIyyf*LU>u}O<+k+&JT+Wmew=#Z6ZOK7912)r|#1d*+J|p z60FL3i^kGPO7C*=7*mEGmSyTbp=wBGk3KfnjKf%XJ8EhTL(L{86-kGfv0noESJKU5*qsNA0P0vf4j#iZO-2kPg_`-Zw68L(zQ@cS zeXA#c|LEy8S?)Y!0MDf&T9ELb9T)B~RjNce1n^VVH9pZ~5?3`K$T<0!FDx`Fwh2fiJo zPK^MxBgnu=&K>gkb^$E`@wrcx^Eu?bns%}S4IL&XuCdc_*sP(%uS`7tnvl_52auN0 z9z_9u+sh)qmlj-`MqQwM2k@?Fxm{mb&51`TqHKLtY5Ye`zZB<0u4R3G<%tyah}1xy zlbRW$TQfcy9HR&ka!@NY8}>^OQ?x%l@{;Pl9Po*+ks*$v00Fh%Cm-akD?ym>r6kv= zYAA3BIFJQOlpiCqB5I7`#XThjk|FRQZPlfj56l?=p5T55v*OR1RuN5H93j6_s7M8H z?U9RT-S#@Yn1ed)Y`7FiHDbhmWzphfQLS!HH2{)5j@NmR#c%H&DqjG`4NTb>s6)S~ zUtVY*+`|Pkn=qWJ`hlSGZT|RLa+)NI%bbD&2u2W556C2IM_3rs+3n3U6&o7QQ4B68 z`Xm2!!T#Qky1Y`8Lj|{)+4a77{`uq`ektD`Id)7rmmiY8088Ev_AO%EAo=)O)@H2n z2`=nGqa2Hub;Kv)&CJv7g{*en$|KKi1YZ6M>-$`VC75X|-#=l?F?f4>TQRV`xd}?u z>ZY|>u)%%7i_I@zz2}xfVvF<|Q>K&EUv4!NkIYS^3_=1^9x|cc|WkAD0Q< zv4~FYp2fzYez@Q3%b`*BdsZ*pE@y1K4WuqW!XB`(g*_Uk{o`<23)gtX%q(z`E?5E$ z+0b_^5|^XjKphu6yK7kqpMPpPDRIJnh zYv*=n0C3aJaYQNRgp|VWS0=RgdcFAzb&RjB+2)&i#2Ps3YfU93;jL@k`zn-+;(#DT zj#=h=%s7eWl220QGrzEfK?H;>t+eMtIJ`Ljyjv>D(sXE(zBMeD8K1t0=a|>kjSy3? zY`mB=vYx{~_SZ?wI69z0D@Pz8yUZ7-L}uy=v+w>K0;l$?|$yj`T?t7L96b zg6pL@?+!MJ>-AX#Vk^qT^fWUEN8tF*8_bu{@$vqkR4hlB>0uuo*mYCt9^i9PxET)A z|Afx9r2S+Xd3Tb1ku=1^9f>-PBke<6*hI5GfxOa2@$r`W$#*Kw1YBw18BG_9R)tA3 zZrr;(AIdCLyE{SPT?y7Ndtn!QYh$Uxsz`|EeLeT*IBH5t%Bb&~bougK0f?_hM9)+I zS6fsw6ySXun>5P_wxjEQdwq^8Aj>`O&)6YN_B)QCtsZ_=6(b8zHwgCiX4^%AU??by zm{3;HA9%-`ZXs*K4<(chXf2@OW@t3mJJe_FeTP5sYjfN^XffM)p?XmXFqhk+hjkVj zP$1vE{O!{ueHBS|EI{Vc-w-y+fh#*FC6t=}pEO%y!1VJmSK3Q)=7TVXxIh;OQA2i& zQLv^i?X@(-*gw5xD3_u^H!yYz2V(|F0~}r(km|`eaijmARA~u$ibJQq7Xhu9BET68A{vlXIu+u;dS_WycZ;IY zUsa(IvLDX6tsYU{!A^cdg$KM>38co#l0uvs7+?|kHt^zQh=4H{p`mX)`7t-;*R#DG z%k)>OBZ|?BzpH~(dBv2;j4NN1O^Ypme@`5V1?Oj5Z~TOUP93|KB?s$$reOZKoU*!< zwG7+Cbz?-3FmY9tGwIVLytHNrSRFulzSX}QizXKBCja^CAlutk^=T44q*;c9ehZw1 zai?5Ee`X2t!Y~*E+l+)hF?x>eKz|4IpT{OTWF_lo*N`I@QqQH3?@@Zj6FW->=3ocew?*kK9ZM9cR9sSAgtDd$IwPhe(1MKv)b;@en*r0%+B&?voRN&2 z9GKUJTSK^aE*v?s60-ZM)Yg{s`yLH zKzg8YcE6VM)oQGgjnmb$gyrrrtcV1q^viS}UZj_q(`M0YPpRU}yExj`Fy#wJWMwpX z?kY$4px#u|fDB8Jk41>TFur>R{t_G<3>(k^+Fy=MPxpl2?xE3_f}A{%`wuEjD{C96 z{x`PAjTbAC+iuBbz?K3IfYsBTanN7WdZDfjq#)Kbx&e-M&kxbioMiw}y?A^F$V}xn zHKlSpAAq<}vmYyp{tYVXhCQe@1<7JH|9!Al@2c%%9qMEGmKcF&=giEElZrTOIcN)? zRP<$fm(%l_g_IO|;&tP4i|4CbP+r3PLjUi)w?EUzrUhyT9uAi8xIq>1qICodYS}AL?RY$>4t>zE~!*G za62rELQzR6IxVevQR(%+W&joftO=ALM{0w(@*-L<4K+0hGqb&9KU2z(hI}|uN=aUx zTVoO7zlSGYShU#;3h^~OnCY&IK|wEo$^qLqwts!*FS&uU z8MIGQz!?zDRy%Q92C13K)u|xP32L8!Za`W6%YU!Qd=5f|b9n(IG~p+5c57_3)F$B{a^gv-?PKF-E#l)z>~ockjp~P*FSIF$E6@bq z8j`rDAK!oCIkKJkOyR*leWpEKpJC5`apI0JGhpv^ao6~70j)r|$s}Q8O-;?PZ~_7X z9dI=Q-If1+$q|t;QFAz1TU&>P$^J{%Mp#(ikt`|+K%mafPHZf04vsp}?*EC|JZkD> zMT6&(K|l$_+syZhyNTeD?_^|3r~V`Q75LTCkt!-FD(X|C^P%#*3pn47PELwyj{hT+ z^Hu+sA~6aiD=TZ|@bF<_9TZ8ef_}k~1DlgbX#X4P<6o5gt7@RWz5pGPdwYA|-kk4e zmX>PooUE^{t!!>SOOjHC8vWPjGa88DTnE=o}0Xhvpl1ErV0uC7kWyO%KL>AZ%9vkjp=-MX8-!a z*(=c>K4P|3xJ`@F-&&roAv>6B&;O0 zx}8mxq1VW-l@R{(n;k!fD8R2)d;btxI4#s}3*zxBa~vzlh3?f)q)tay_6x7OsN zX%H7e&DC?YXV#beIEVKL1Q{PnKNrA%+vvYB1nq46cxgQxK8Z&R^wSxl{w1cRDCXi| zO)X*k96BIAWw6O>7ys#JA-|d!A!Y|V=Yj&Hpg^k7pnnN~WpU*&^+}O22K_YZ7XC{r z{m*>L;VDEJlEownpH>(U|4*_eFz_n^6?IbI8?x8Ua5>d@kblkn) zG5ME;6sAx`chY<}+$s{#kqrnMbXyT2X9~HX-Cw9W9o!Dyas5Yu_wV(TOL}Ac1Snx= zC7}HutGs9?ltZqp&i3?EQFa3ZBM&eZ) z@lvTBy)c|H{(TJn%s>-8+y+i8oUMfn?k+J2;y?XE;nJ` zpf-0B7`@xZ4s-6m<;}9(I;i)btl29>(nyL0(?CIV2`BwB6%o;sMQz7x%Qj(y0)Npx z4nUiczw8D|ZnPW%F(D675BJyhy$VrYk-Id2eD{~u7;R9Jtg@NUi_iYsFbW%o-?*-u zwo7ZiI~OPfEm~S$<#PQr`WY->to38Q_w1R7D*vSsk6@|%^C02R&&{!a$dCJ`H?YyL zhM9A-5W5Ndv5cokC<%~ihF97@ zDC#vfYsE*9GHz;Ws>n%~D-VuCiqUcyL;}Wtwx}Z1Q)c3$&5ofXNpHnfdwHWIj#yi~ z0OZmRr82CRT5p09M=J}O?&}S~Xhgy&2=ehU7}mGRijO{}td`X@=Hwj2ZbV>MSs3Q` zS!f*2$Jh2@$La)#9<91gtRlj>^_z}}0TCHp>*S0s$ao>k(|3>*GVnIVOq&}U?c)P5 z)4a{EZwXO@#ATyWQ-eDi*#&fT$~x_ze#Y0GEnG&r1$_p23l#D0+}w4idSY~cyl?G1 z@r3$Zez@{Nv&9L12dj{og_V_cWi%IxFP#ZLtc2;dsLasVh#Pg^-4Xr>~D2LMV(EG-$zn$_SUmV@n#&&CX6v{5X?QRaLbLcq@Ds z8KFZclh&v?uc!FVK?>LD))`YwCRGT8Rr+uGD9uR8nCP|6I#rfSKWfs^+i50Ag`?!t zubt!R6sw)T+Dlq>e+vm626`n}Xs zEGi}@MCPE>)O=j^)XTw=2Z4Z}x(W@>D7Wk{;ap)w9n!7bHJ|Spt0|?|yq4rpVyA58 zA?MdadWCur99nzB{>rGxgy732RF~YP9>4qxTV~dG4ofwO_OQLMJvQOYdRe1KB8w8u zs3|w7-1>Ci)keZ|J%fII0dLK8B?|Uo`zXrxx6^H%DDs%NIdW3gS5x1>DhG#mwUZW! zh)dZsqc|M=^q-h;Sg79(n5c4qycN_(HXhXSP4h1EX-O~r(Hhf;Q=Fno^xKXF@>WL& zk*wSQ$LN@#YNvsrkrBM-I5X4ndViQ|qrP75;iH5wO83jMQ`f&QdBvKWqzFbL-Dmpt zF(N%;YNwr2yLt@Midvib*`?2L9BF4vld_w=;HAuN$-qa-**>(IisU=b3BCNS7Dy|T zkzFri5NG$*W4-vg?Y$6?d5@wT5y&Hkk^O*tOhJt<$N3_wrDaDia740uJ})h^Wa>*i zG3b@j4f?E{3VJelq58M*e(AipuXRC7C(DOGPR|^UJ8E@eXGS^`Q(P5V;w&D%r$hA! z_smsW`IM&3we^qTD#veqV`29zkNPFlGyH%+LfyzPdf7K|jLB^t_#=K`^YXlhmBaG@ z4noLCiA6rF*%?R#<;Q1^{DLgh6{hxJp=0AhEYprea+LMp`uWO$-vHP)aFCL)0=<@iL@+zPCBC*-jf?{XL-CG;R#s%F@avuM~`X$S11D#J`l=Kj|p zk+GIuvD|Mq0pU|~J#cquQ@C^E%*@ZmUTQ;0zgn$Ur1Ep;PQXAzZ~n~oP^l5y$->Uu z7Tl%NmMKyRmv*?bNz&x>!IVxy|LMnu2Cl7yC*&{MR`zhv&GzW#zKe67oarHEe`SXk8sNkF>bJx@f$q`64u% zGv3zc@Tr8PxOB%Xyvl0_epESGeWbHD&+U$b-c!VxF7zVf%{S@}=f?ox1O)*) z8-CQ&%|{G0PsPP$k6B33TwR$GQ?RqaqSn>gx22R_(AhmBfBhE@dTnTAb%aS!ycYbEZcn1qq3btn77JxZtAs6z^H8CMIP$ z7NNV?Z0J^ft1TJxeDd+48De?up8uo9Yz(%wMC&PukPlqMYm5w4mlo;1O)Vg1p{r*d zOb+hAk5#9k5aDl-fiH3@I9X#cmGnVeSJ7pq138BTd1QHKJwtf z_59Ud{s+y>_bY>bMI3HxJniiy$ERj+Qc|J1^HndFyqXcOPxs)0gyq+&4VgHHQ(HfC zU);XF;=rb)EO;k5^486b4D!XbGVfburRa!t+K&=@cgS}u8=YI{6%O#M*ElHzqv2#;d0ucN3@fGquPf}CfwG+G@KHp=X?7?)!@lG3i9!GYoqOE zGI={m){k$Q__*pb9YfWx@;n*P<;^Br?v<$GI9#`g&-eI0!ytAP zG>4sA59g-i;A8nodt3QL*g(J=uWtN!YNe&V9%F_A?#T_b4>(@SpErxxpF+sO@q+wL zOjIZj`c=`&5e1T>1REpdG>V-sp^;;6Z#A&EeyLxAZcKU4O4^d%*g)RC6@^w7JLp)* zBgt_0KxU5prI#aum@0KDXsUdF&X4um5?7)wJZg(KlTNM(0HU9+j}Wb_cx1~9MwXs{ zBCa2KIl>Lur^wYck=-KMcCXck+_qy}quR!SCM(Neb!XEj%^h)ln*bxWuEOT5yH(^x zZbkQ%%>!exTKW5`eElbWf}dtj5@InW!4;Ziu(pC>OMoqJ7Kf5F;$Ak=G0hLFL!%nJ z5vw?Q9M~g^bbR?DJfkJBJllUIreM8@<$jB{(RW(?74}Mxh&^>&Co}}lidGMCU}ol0 z{st|U`}r4nt{URf#ZzQ$3k$Q%Fogk$2)P(!MfkXGdA^sc*RD|)ZRrjpK^ckiUy?;;s^;JgR_I>sgo545=T7yG*ySWIC7KFgO? zh>VQ&4eTYKDc^<+Yu9}iCm3q08QT4ktI+3tGgj0^Pl%b}eaHLxvk;YsjHTw&Zch%V z3n4*~p0cGnzan<))!ST)ncwqNs_bTpYgg&o&c|)1BT@13bhwhzk{#<`O;ej~pYdJX zmRoP?o0=(Em%UAr^2f?}K#c0WFxB?;<#XNk3AHQ} zGug7nqtk{E_=GZp-K}Z{dbU+|FiX4aR!<<9I5_&i7q)=gT+fL`iaxk3+IDy2VC1EatlMR@0dt*vOPiO#7e%G&@o<8WbdO zM7k|(;;jR-sn)>g>(P@HMQCC-Bi`^}I@TbyFGlv0g}qKTA}6ko?mRz_kuj)75j#^-*bF24m5eb&jso@4ZB!Pl zy1eV*RGK>}_@2f1TxLJxpIcf9Mo0(>6PpDZ^6m{Xn7}Nf6XT!L^HAQ!I-jCCmiz@X zzYn^?zs`tM9X35>3IW^6CZV`9a+E-kDyZN+1%ut3C2;A$wNYjF;bXG;y-H1{-YO=q z9#?d9w9>FQE?QWSf=N(xqD(lgo`IIC-OtmjfyDFKgt(Uc!}wBkQpQ)f?W%cs%;%w#6EYEEMYrq>cbNIL^Xbh0~-fStlwg zN@vpKoLqs5SFWCFi~kmd$>^TBv_be44lciE>4%EkQTg%ChWPQ!a~c6Eh5mAiy=C)O z1T?qBPOU2TJZE*-u?@9q%-64Z=}Uq4z}42ifXbXN>#H3#83DH44+>?$+~yQ!APYA- z)%9X4kL()*yNID8%k9(8<(?NrzG7P=ks(2n-$xa;8Ta;|7-?UeV8x8~x8V=%St4ab z`YM>v8w}Jm_r~-=HpoBHX`Km2SmXKG$4Zc%<8sh}TEr?w*LG6}%k8JTWMN2nI04`W ztFzmsn`_`ux?(Oka9_L|q5no{gl_ujhDh(ysn47O6>fC~fH6kPBS<19&T4oBztcYN zQyT(r$oJu9u^-j;HxeaWv<>aAAro)R6YnPVd4dB4Jv@l9*(QAak|-M-cRmu?oCO5g z_2t?x<8Z!H9ZeyR(d!SrO5}6JeSW(8gf$2{Dk8hw<%(X=TV-4M=bpA3u>xH}_Phm& zgoiAZQV-0!nEt}gOthAfZAP1^st+n}fCPfxluC$5r6G5Xb63D&gy4y>^eVwAB!5Kf zHFCtKHpFtX0XnG^kR`t!j>ULhQZ&Vpb9AbVWsFxzl>a<@zCB@4!IO z=@m>wy5QR%o|(Cqd+V^M-tB#O5Q7j< zkS>w#?oOqpySp1{P`Z`w?(PnyyO9Rz?(W}%=X}mN-+$ig-Cm5qFniBDdp#@eb+5HJ zFL2(?dM{ylrN&Tsflf5Yktw=Be;u783218Kd0g+)j@FHq+kl^+K_udtUgAr~Lm*pA zwWP?YB&$c|;~hg*+7m(I-Bl`IJ?i!fFD?QHSx+SzM$ki zNrn@1mh3P8 zkTLnoX2lL(&I- zeZhTGjS?C0BQ7e$>(86JN!PinICJV6nI)mlGt2ffn@t$c(p8)TR%wTanHez zHz&i-&(*)Dmu zzq@a7wzu&wmP83jVS{E+c?g*{V?E3xVrXxJzoao)od9(-sbp2u)C1ZkI(~phCjIai zS8gT)(lgqgi4umx>)kCgnsI5laQtf#`r}(Pyg=|#z(K%FjR4%Yt;K9YmZArK1Fqq@ z#Vez3&8t_>34xiD#8OKy7B_p680x+L)GhS4n7*yG`(HOLtb~Mkz6#`f<(Iz&jf+Qn z#-8oZ*8Dmmu!1X;D8wq1AZhsi z({>Qe#TFQkqc_LLfn^mHe1zh5_WKi1<2*Q|E>b^w*V&xbh-fsL1OMC-z=Q{U3k-Z) zL^ZIyvgZ@dgY!xbMGtZv8QQAVfCcQ+&$`ieI`_WYbq~!KsWV-Yk1!S*xE5zeTOq5t zLrPnB7L9PEZipUcUf+RRG{quywR0*BnpOluLDaq+v`>iYji&KG1pNvLk=UE@l;7gD zy7(x7i~M+y9ly{*WWjZc;>gQ}5 z5O?@@Df%*A-`#l&5P1@zZvJH$p>tQ$_IiG?Q z;3WiXT+|q^k36g3!UQh1kUJwoC7s=YKnTv`+b5w1prF2i5ujeuf!q2V`epd9iqt7V z#Xc6$Ao$s?=OecJ%dn2r$33CX)-dLYEMGO`%(Aj_e$90weUwh=yzKuSrOZ;zP~O$i zrMGq!PG|IR$!7NecXFa%R%;g22pr1gOKJ=*Q`x|5F~-UYI^8{aDvf$Pu(t&q9TAh% zI6qKQVozDR=v=n6Q$$j4QY(LB*K+sw{wVcH+mun?Y=0F%L`v#Ds9bAR51aFiL~k? z5`Na0QI8sQ+O4@+MBUZ%`Q}a9rZ0oz;!c`llas%WepwYHJst$KDT8?OS-pDtST50& z^6zh?UaxIf>M zHR=-Rn5i@SR#|Inh2`z3An$pO^S8KhaV_fV*?!$>dSFHZIn7R9 zSe|oO?WM(6Ms_?=Ew^3Cos6RfQ+le;;N!!CY-k-LoG<^Oy2teQ#$dt<0210J>roS! zDtvNsUJBp~>&}&U*I8ftjaW_6CXQwnHukmecT%z*kAoiOa~;!f;^SvBUQMm7$-8lF zddAF-zW#>`pxj`L2f(~&tVDq5SSHQ+hYUzOUqBK*y8oQiXpi6lb?JMnUZ;;*RgD#Z z>{!iD5=lsRl|Ev5xbZq)zPY2tLbcil^uoNzMDTc{y4)-PuN;>sASVap;kp$c7PjD4 z>)D&Z7Dck?Pg0`Z@%iP}1DSTOba;p3>Yl&$_yVW7yZ?2xeMtadK+!>eGkUER#*foEPSB0UP#?nvVz56D`f$r8hbYG@ zqr$x~bbCMmE|IT8q=@oKYyH;p53P-38+oRdyCtML+k3Q};goQc+uFAIqB79aikj1g zm*`!IMbgoD_)>skoT0vc8!aD~^VJ5m)gHIg>z4@UysvlUEMiXGuBtQ zy3;l_4cQnpe~Wwrv%ip(UQC?grXCZ`>jsUYr>Aqr$CWqY44iowwTe&KvQ=N~WVSOw zb2mgwnmQ-q#~Bu`6MByNM%YbsfMkdf&%i)RhKdQI#RwvM-$(Yo!90In!y+kvgBqO> z^AdllEus*2HXjhXap%>2o^NCZw5@%Q_GM4PQTyn4*y$y#>igWZY^*D_iKYQ6DN*^36uD#h*0;+#Ok*%+9io=04S zUbk>e6>GU z!+%?2akSXOU*~v=*rI$yxHfFa_juR8p(?FULKK7&Xhf^t2{1MqD?Q>8i0Adr2pDq1BF|ygXL&ddRS zd{Jp(N=?KNO!B&&5N_B?Rg7KJ!GW2nwiZ=!%QF7Z~PGk^nlWv}{xM$mfqz?zXt+?XqY0}VpNzL4UED;`Q_)wFD> z-c->BF8KcTFYSu`$dOplO{l{_=euECRc=iy_qSwgHu~0F8KHiEJ0xU?Dzwp|=c&H@ z1w%6*NlZfj8Q&_XZ~4GT!-|<-A;AZ0pZD zjq<^OG_lI6k8P%Cea~w)pDYzXt`yayq|#tQZ{Xkn=`ioaU=$DKt9s+Zv8pP2^XaN; z0UNZ*YB|m(_O#lOu)xsn_K_p8aJgi-3z6cWpogNM@d>gd&g{=oNo-RSZ+M%~B~_vM zyk90Lx7xl1$N-IMebHw!>yrWECzl-iaXQBq@2{WIPsGZKboy{f2%t#<1*PuYdwG-q z)N;FFD9F!SJ&}NjIAQjhs_qefD+r|KkmtS2;m;qD-+T2zfLGi>Waz+QfA$WdJrqKo z0T3h$;L=|iBSUQR$1=voC|L6unvsXOO-)UsrF411zZFYBqEwQZu8e%c}&bzR_S)LY%b_vQWs&s1p^RGc`~)*wm< z;Pd5D&o59tTAkO&6K(FID3K{`Q@o#?G)pb>ZI2Iq-XP?48t<$hBQS=lqbyH@~2qF-)T`QXr3R+>=gDSIpMg}6jXZ!Yi{2{u*EwKyjM>n z#J5F-Xc?c74;KO+0$AXFDUpTe=jVS7)LY`uMYPb-TflH>-~c0Ax|Bdh*)R7JKCm|} zod?aG8$OaWqzgpoD?6cWgBxTV}KSQO(7c*n+D4D0i zo_@GBjuO_AMh7{hcf$wN#LUGLEsm0%l@usJQCH{ZNNwK!;XW5V>CmHTU)ip~5T2u% zv%r9mpswiMYgZp9m+SY`+?ivA25L;TsMV<*9lu&s#>GNql7kK}O)L$+i4eQRe~wsT zEY^C;!%Ez0zwQdd3tD=Z54-o579i=@+NX%@EjPH;e9r3>04x-B0?}WvKz=SmZ`FFU zgjTV5j)=$;&5a$!QQ-=klaUf$sbo_rZF`~8EFR22+3{Tk8A_@~_mb z7Us+hdt0@Oi#>U@R%49?B#)%4;mbaZ6+SPON;w)B0kt(=sg_TP0hQ)jD|NL$Ts&QV z3)wTbpfexArWod{rmpR&q3TQ(4yND`y%CitI%?Rep)qhrLtugz9}@Z49Wz^MtsZ}M z2SmnYFt?W+(5T)Kb1!WzVT0%#_2L{bQH`f+Lh0C@xBJf999gvnZeTcOXOE5%euh(e zzU|xC*)i6eIO31vG;;~ewkzB*Nns;c%;WD}`uL8Tw~_P!**4nws=kv6l1)m_TAQG; zQ5{SwnYt1Eko+>A;*)M)v~OgrMK$$Ee^2#1rRbeu}vtaoK1FhVJf5akmyS8TS%m)Q7T(CLKyU zm7>u+)5wQ9raw>Mv8C0D%}i|)|M)aA!iV46n-B5o=^o9#pyqL{+=5nCuB$tf#LgYN z{IoSPB>YK#L+doqID8nc6CtpU`bX4Qr76}sSL^8Bz6X`~1dPCoX7j}&a*qca{^~CI z@iTh|y3KJUdYu7IHXD%0z~lN#I*d19HQx{ngkw3Gz-q!a>M5BkuZ7Fwh~*!iOmpr| z32!%WW6vOh=-N2JV-OfD{Z6yik;-+L)qmq+cu3Ssg2Y=s;n6``NdFx~p8SU@rp+;I z+wSnDr;_DkQj$8zl)<9t0k!Q7nl&yDX=q8@?ulbyW9qKd$zU*=k^xXbVd!#eC5%4P zPiL;g{pz4w;Yz2IBLwFHjR)h=vRI0YTCBB)qVJoJrf85N0R@M1-4;&{J9~Y0N@}uP zoo(gS+G@lWs@g()aMUI@kU#XQ&cZYNZY&2b0E>uz&j$9wT7 zFxhnOzuiXb0B!8*bV=i=Wi#B#apajYkP@hh>$Ii1U^ZPsM?PaO|uQ zImKk0dD04jVd?-K<;#q^@%UDZ0_D zdNw{@c;?CaH+fGRQ4@ofFvBcdJ9H4oVM4`Xbp;zMeOPD4 z8zy#PCk?uCnU8ABunNf$aZmIVXcQnO@T~!PP8Rc7 zim0!}G|;z~Xw{Dk&V1R@ijFJ~SFW)mib_f!r-pnP`PI-U&s|mqvXM)pqmx6&H{mZS zEJpZHLW`+<9YqWc>s`Gy>)fExX%^nhK9LtH3l}km!8aLWJh8z=@2Mqe!-v{-frCAu zRV7d*-Cx+%Ht<{(0q)Tvin%cUiJz61)69Lu%mr8X^&=GP8>h`@L%0jR7M>;TN~xaT zTAI1~Bza=GN8a;7MMNi47xc(Qd<$ZMXv^!r$nT9^Kf7t)EO30`qx8R%6~=GkMFwOOlr8{( z@_^VK7YNX|Y+uX)i4Z7A_y@dpkcI^GhUq#No9vaHxkAdCLv|mpv{w)>?~l@ga)Qv% zug?66CH1aeEOwVB))G>2$+G2Y9a_@4J6b@jZOx&?;Tb^`4h;bfq+f%Ez*~CgHA8 zisxgqPDXU$BtM11N3(7;5cfbJP8e8WFP2I>)JiXX8(ba^6+z|*gkVQqX53Ja!`IHx zt{3H1^$b{}@~}VF9_8XDu>7 z$=Vn3yjY6W;E2N*7%Pv4hwgiNs3a&@E#=F(dH>=Kn!=&MMJ4bsE)XT7T-n=~+%Qnz zQ+p!N@^x2s=Ha0DFKxDWB+vHOW%SAu;xJ%K4|!pP)nW^jK1GOSW87TqK7G}>Z{mS4 z;1#g&SRk}J@kDz)Qt;D{4$?AS9d)v4@rx!eq?!>G8q9QnoxY!&hbhq(# zp?$>$X0_k-GzAji7Yy%KVCNckCTo`{-ZryI=p)NC|5+Qsu`DTG-j8e@b+fgl*zl;V zQq*NBC#|99~*Wi{>R+jP$x<^0Pj}5b|J8=GJoXY0@mQ+fs4WM!sg;x`52+(&Mbm3iHIo#QWHOVPgJ% z!XKaL9#6O9?s}Da`i368?T5eWP1~id4ahhuawsfTpyp7l8Do)1!9ZzpsQU_zK|-ay-O( z<4z%o-BV#Ax6)OO;K$5oEhH^BmKUe!#cvj+#l^eBxc$YNy8uZ5aDnnSdMFQKVv)cm zws{ykx4lKgx|)Um7v(k2@n6V}A4u0rB{$0(emEVd?*|kn7h#0GrB@&c)&b~cx)VpW z%ko2-i3*dSweYDES=;Zwf5zc(*{Mg47j`h-{APk5(q5r}ZM}SQE{hWXVn9N&Y-@Lz z-fciXiN~{ERX2~~NkVKK+mahwAYOX8L-|C2zSta?mD?-un1biqi_JR40!AJ4fz%op zk7skxhI)25Cui^RizkZjLCBynXXUx3i_1&hRb=@Kg#AAo6hsWt$&EhbkzH^o`cUu5 z$uXxaonZG{nki$RYgHe7(OF;bj$A@lj8n{_Do#*6mwd@GPUqzy)U^NPZv6>&K0Yz=Go#cfu&)7f4O@tIQInwurjC_W zlT*D=)41d?STUYvv5+-P_4@fL<046#x8tl=k1{Grp6neAEJCTh`d}h+=Pc?YisD*y z*F*=#uA&E}YN*Ojkm7n!Zk0FaG!s>=DQl;tL=U`(f$}OdqSWgrj4seynSQH$aUYAi zqlH>}e!+K$XYk06|K{BX)64Cd7lpC+NH;gAu1+p*PVx$txoeLC$bfGfyY%)a$nzpc z?Edwm942oMLm`m6asy5Pzr{{(4qQ`CdtN< zvkvOr-(o3V8;x($I}0oe%?zqJ{u%akgaZu)@8~xR4}C7CN85!c@d2YiZ+=Th;5N7v zz5TSNc4YB-iNO5IJ$Qs>+N$CwzUQHrTJ6;6Ww8v#`NPMI=tPvRuy-ld&F*(}w}rw2 z+lxLOL=p)+ukuZj* zM-usKQ`2LvMj83S8K{dA$FA z8XM>RN4Hv>)+c+!9i&9R8Umv~r_^v9PEPl{N&I~u0BE2fzGwY_&&#hafcy^bMG@5? zeVWymCdM^{=+mxN&eza47e50T(QWoOaKQ-(z?K1p2VeqySp}27o!P6`&V{_HOtpn$ zn_Kg-c8rpWaAiz)?rLcwk~-5b8&B#5fb-wclP-%)I=JX0|JGWzwqzvgE8HTj-$#{m`(OCbDP9(b3<}oRNHcrQUKP$;~k473DuRnVHyt9gJtFI;$!1E&@WGtN3O=k0W zcY(*@m-gq)YfNs~N}l+T6g&-WkZ%KQ7+@HlEH9XbI$B)WxHZrFxbQ+Pk;K|+lR}~` zs&~C^)g8(6z7ZbsXED8ac**7Kmy?r@O9sxFo>otJT5%;y2n4W=uo53W`a&V!L_`#>s3 zx&r*!fWXj?Vy0LkVUI9?;PWHp$Jc-!vUIH_O+2S!X{6D5Pm2X&B2ufxlP-s0P61dI z;BmQeSbT^nU4()B%_gfiyu3B6fq`iV-`l(6epLAu|G@VPp6&OP6=vZ5E`sA_k6zVhYfS<2(9sA6cqV$(T|L=kYcSo0{dPt8Se0UG z$=N2k!32#s7K>TC@Jy-*4Dwk;ifD>bJ6nU1sd486Gud;pt9rM~g)i%0{=(Owvd*^n z#sKBF`E*F_s}?^1KWk;vH(cWT^>j;H8((UHfEHPRx@$5#i7r`ec${-&}l$ogjBT0ljC zQ4VFAxmx7N+y9g3pq8+)fle5R6k&-K+VONK6-$nbq z@M84~6V$fWame;=e2^!X<}zEXZ8Ke5c|wG&%wp3W3QqtPoWu3498dBq$kt*t;lsUN zu~@3w7dN^KZ)vbw3r{q=FD%OMOSRrdD=xX<)XRRIYHAg7a-@RrJ%g31()hN)5!%mQ zY5G(!5;M#y(3l_dLaLG4x51|qnG(3+xA;WJqP~4^&>fhTN$?DX;rE{?;+Y1TU6{StilHoF{VYzixXA;JydBGl!6eqXJ_DvC*=)8(&SMiM3 zkGy^VQ;k>p9wa!5G+ST}Lvg;f)*Og{JhiUw>S$Ius`_kI+ZycQuhDep`qkH4Q}EC? z=M=}yo&CR`I3%g1eIfPnv2{WalV0=^roAeb^r3G9#&4JVDxkrYOMrz8!_xR`+AkYU2 z`2(PITnr|(Wr}~aH$Dt{E4b*B0xBDpYVw)8nmKWRm~~uTF6P@JS5km{Znf=*PF=={Y3)00P;XY=(c?vRFItyh=~pHHo7NH}PQ>5fD&d!b84EMv83Bmvi4- z?BrC?ntpYz%w1ib(E_tAQ8Je>KNG;KPN0_Y7btf12c3y`!HG zs5kCCgM;nilvB`)I90Oge_%q*YKd7>Kbuc4_j-Y62#)fpRFUwJ?do zYbE`HlAg5*q<}^0620%VLM?+lt~j@n{Ye*DX7WF^Q2>@iN@jD1Lc;UQ#|aM$ zMY*_r?iEfF?m3$Nc9P9bQt)nrjOL3g$u^?jlA6!Q;fvv-pt2&2*Y%ghWPz{{&zb~i zyTMJ$QHktG@^!W(YiJ!6`ZjtC2gx&L+rrMgfIJTC@c&e4X1Is|CVcRVV8GQyMA0Lx zvNcAGR}Xtdpz}$>1r9>T!1U7y-!mZHs#UXp6nQel@rJsrV4Z28;jz$~3KS;YEXD_4 zQr-Sx+$Er!q{|yowyEz`Mybc=)T7O7s;yb?w*FmNSW=cBr?0{hMl}DfxZ}CkuN;l^ z!V(2>nYS_yPbD1xKJrq2^sdD*>QPuO9e)Mt;HhHaB?8m(bOyVN{qA$6*xwlRYm!?# zI}?t1Ld>S$P0*E1vGi0&u=p!xO8?;kWc4uktj_5T>9`KC+tXVMNE4!0O<5tzAwYwo z974I2P@g7wqP6Uwl;==1L`&_VQGC(m2-z;v6Q(4y+qF(VYUQo|Rd531u^leI=-S?q zOsO5X1M^gO_wQo|6Vwt*U@$&I=?cl){~Tbd(d~!GwswO{^5V|NUj=ZyN^+n7aS`Lo z?yj1uX+z7cFEiCv*Us5RZj?gC2ii{%_o)Kx@*%aWd&KV}_ zWcLmy=au}Qs>q#c5(EjG4hQ;+4vn^)JiUN{z|t|c->QajvsaR@S$7d7nLX|wnjS)V zpg$3LW!<%iV7XwJ{zh=wnPtYuc-u^OM@#;c8T;2U>6&0F`&4B{ALDKfgy^X@P=CxK ztB;|dt2AByl~r6_X6X;?8?46WG~;|e!F)sxCi6f=4wlccd6SN8Lh^(EQz-i314Txv z4d)r7rGNGnWYGlaEhyRQt*|HRA0zns{H3f0hS<4wy2*18qt7DNE}Ep}d;yLI(TW275s`26%wZYMhn>Ma?X^m2cKAJDyh~NSJ}{^M9%| zUAC)6t9^w&d=--YDhaqOQo6s4|FbclzWM)E#3@I5*~7%j>JRXA;8d>JvS(yw0;Vx2 z4*zG-{{AoXVzOQ+2T(gX9CnB}4E6N9!Jy|!*}nnNe;(vj97?K+BuE5ZTpG6Gz|0Z8m~}?W!R`0eNox zm-xDEAMJoMtTmUO=M=9;`1d?6lj==7fukr!e}0aRS2J{VY}=JvTz;j{YAn#)FzSzG zX8}ISP0>(v%!`yk3UM(3b#=Q}GY6mh zTqRjTAMKMU`CaC~>@3#r-@k{MHNl*0sZ<_>>b*UBPzUX>p0{DMCcRV)Dw# zApwwifrEO+&8K{M-SHR=Ktz5G`B^T^c(yhB7J-TR4R&gP_>?8VnT&ohDT9`R$u?%( zwGh ze2%lTvjPh)P+VT{kso;+Fr9ef8SoU*3^OjH#fU*V!Hm2?DN#1RV=R@mZ6uAr#o;gn zP$niFKmALT&iyJQp}WGcWao4yOxzAYYli~f9edD)Ap-bJ)IZ{*qU5Pp-%Nga8=m@S zq@2-sbp#^!o_Rle=*KxVP}dNnYWh`*=7x{%r9R zEgxk2L(sEtFl5sjb0v*6pyF0->ZY>9-C^GX{0n;V?(OsKW>NSz&+>_~E>q&K@84p= zihdgQS-W?^!{1zVJ*Z!D^&c1jk3;0ta@t<4mQ5QB$@T*7rGvAx9PY=1NV73zYOa^r z!fotHJ$R&EnUy~c1URO-lY6uPh7@EG=Jq)$Ig}B$DMC>Mob*MiGw-U!7(PsC)KmD zNhDvsunG(NQBr)U8nwA3$=&(dt@YX5J}brLszgy;V>^=82=rf3E9JQ@^H49#Qn;-m zWf4tawE7WKs+xNrKU1Mvyn~Mp*t*#Hr$Zc)Xq74vXMa|Q&4w4>xnC@bhn94f&LN-u z)EnMijoC>%iKh8Vy}qH2 ziLBLjP~^VKI^S`Bh7{?`7X(fcP4py2LGRVu13D=PIA)E&+T1U-K4fxQ)r-iHBom4D z^$t$WUk6tkSq0gio+v2Ge?V74??eiiyf#YCDen$5E=LpBfk@hQ3K_eHpno{cR)*L0PhLqS$hmo13ff|2Al_%_7hE*80OKigd83I(zD(@gE5 zqM`!x7Ulb2sHIo>7reMB@D2^ZF1;3y49(0bQm*8GT9l|r=?U2G&?q7Wc}4Ont^1~E z$3~4yo|6!O=rS9OiE`|ofoxQb7QBZ_Nj0{|q#7;v=zDrq4UJ4Fn^Ay&vDG)$o80FV zCvaaH5g*LtK5|`nhK4=X_S24f)h%t#>`&27AG<7c6}#;5mXa}W$%B#s#m{N2F~#b+ zm%Q;$!gYUM5sYJC!IFsQwC8NGP%aJ@Z?`I+v=H2!ZA_JfR%6hO%+PQ>uc}HS(DfpJ z$kc%;BB9dVD5K@dumsQZkK?tIYxT}-4J(UiL0;a(G?2V`#+<^83fX=|fZ*c~%NiI& zufndqZTB-i{rx;U%OKCwyuCgM#gSMvLgb!hZ)~rgcXuDDb>vu2WXG@Yk*aYpXRYeB zO7U;PF3WOdc}fT(xkMp3R{cC3PH*#^NDJu z2bs+j_GZZ`tS5m%jE#&fE#17!`gMHI?7YH;>6d=@?ZdvL)MRUln@sJJeRWO>!*YPb zp4fchEuOp7kL7fZ(=+lNbeycJ5D735la)g4vvN_{$eU!2Yoh3AC1cMGsOIAX(%HzU zBF{y82k(k1SCh-JgBK7s@lt7hG*navRShuoGFcIQB-TRull&*^G~J93vrUJSv052F zA*~|2=yw(BjmVcfzp+auw&h4gBS@s93?)*tuq|Erv^;JzOCEQ#!%m*|%%8x{$Zq`7 zuh6>Zzi(5?-92M62-~qIc;C}B$Yk;rSUtbLOb$oI`z>9{by}vbzQe1SD}`68w0QTq z(o;Q;H;J)*wBPO_V|}(kFV^yEPRsrxL=JnR+J2pb`*chV;kRUh^*17N7LJO}E_F$Z zV$Hk5+XQxZ+sN{otm1Ofu~Zta#$P8PCXweIm5-Cs@UiSz_N&qunc+N-iitIQ#uI6C zDc|#e=$;(sAF@C0Bk`J@^`yI8EqYe5Kg=PS7>8qXsu~T(6{sD!D4(LySXgt%6e$;? z7P1=8Pmj9%DM{34h{u_uLaXF?yzzf|?!gN*6A)$b2kV%Ux-+D(b3k=*IjNsI|NSb} z>?jS2!*Illr5g}oArODg%McR;7v6QBQMz_ zDSJ2W|s^}1U++C(e(Iw=Z1~6H2W4lwn*NqH5I6{@?SS2-?c+AnI-y_iml4S^gM4z zQ>$pJC%YFaEOJjy;O!6M$8kgJy@$Bmg8;x?Wjpw?yCD^gM&WUKO9X*L^yJLi>I5T_ zBq=R!D<-nVs^v1iprF9v+yK3n<3X^Rv?eD6k6m84lbC|6=y4zkVM&#|$uug{=*cGdyW|K#LsB<-usY;44$_C45v{d4_tU*>Hky}Q)y zHioo{j>UQv;}gM$Mp=+J9H5-FN|=Jqw~MubmSwt_?wgS4{#80oAo&KTGdh4ppR zlarGuB4QHa-AvjRIYY%7IJjVWHMPyHZ52(KnH@dSy%PKn8%OnGh!VnrWQJp*=Eq(t1Kb`NCuLsIu?wGtg8cl^IGJ{w^9AekY?m8f*7M6b{0SiX zOeS}*JLt$0x;WtT+^iL{tG3z{p1=potE!R&cYgT7s-!~I$~&rNRBZ~ZW-^0KQWF=q zYRQ!8r++@BUY)hoG?6N@BA=tVo_jcZ*Xh**+piI)2*N-P&5aad!`0mbY0{ z(NW6VL>lojR(xo@#%JN?miO-)a5%YIWj5AUFAPV))Z~?3`?{yz&GBTHOfH{sdoNhV z>R^ODLc0qCbb0HmcXO+NAe{S+&AVvU0tTk^)TG z%?EJM!fg-Z$;HW7ex%gccmDhJ?d9~WHTmYp<02N^#=JVA2>X5NOT6Q{2zgaSn#Khh ztJ0dm=X;e1{k_sMdMs3TLtNz5Ut2Wqb zcvs{maY^C3-BhCit*7*GEg(A9rB&O%Fepjrkw_{O(G|`qMay%ZW;mDvOjt_x(--DA z$?i?-gJ?-f$za#XN#f)9ia{Z><(}~%*Zw1>n~9M=5z2-^hDPdp#8XLxBQ z_V7J^PuY2ll@S~_oc=abi>6|HEr=GJ{maG}DD~_Gc!+flPh?L>Xz0E*E`+1|NbjY| z!CfcVW*!}+qH6tfjSt-yb>*4%i}AV4YBWDvAHMprpQ81BPoL6ql25^Fue zVY1aD&5C=M?s$Ez9~Q!<7ctNFg2uFB@r z5tq|cIg|bKif*R;X7SWckT~tgZR)_-op65@@2OXc%i00SDj6BoZ?L2eqt`}Ted4sn zWfr4j3J6&Ci;L$7zk?Jn8n~S_!Y0IPtE$u=JX(qikeCC#C}gOkqvO8|dNJ~m3O(bC zkV@qcwcDiq-L2(T=zmaO-F~hzVA$CylwX%sq#)gFh}-j{wbja-$k2{!et}3dT0ue5 z68{}Osi>`;gT?VQ&?Vk4ySAr_VJlQEBoV#m@PHx+4$ zXg|h@tXCke^;p&dpSq|MgUYb7O;9i@E^4eGPLd=NxZ}M+|MPKIeE002zL-?UBzlVqV2sXh8u4qD zFVfZvrzjaI8)x?Ybc}(OmV7`*!}=hK#bf_H43n!&P7nU|k({h;!CrCFk^S^{Cj@Nd zQY%m8v}iNdUUL?cwmN$11N4(QE{4I-`@_vmLebeu)@%ivB(4W1;@ljw$yv$J8s_uo zPc}F@KDrpV2sOWM0A0NKuFF4+;c1OVP}u#VEH>RtpHvqf74*+~L=O=4I2 zy|yqf?-M`&Iq!T$MFj>0nstR)NuAIO-%iy^kILVc(;08uUsBSLh-s$aQIJ!QZxq8a zBucuh`gW@+ES<@bQrK8kXgck4TTC}e0w*raqPp4v_%ao3?Kh$kL+pA9z^hDqh40B9 zdw@9i%Lq^XDESVZ$pFrNY{hDuu|`yRe-qJ=p}CXXANCm$VH zktaVrrl!Za8M1u?LV4ivYE8xGO3OGngvyRxm~9?p8HU?D?M5&wPR3HR zMT*U`%FV3_+uZZ$c$3*<-Ub9(3NoVkEcXo>z{{1F*H^A=fAdk;$7CQ+CxO$m+^wmZ zNq0*dD0>RvCCZL5U`0Q!`Wl(-cTu}+tk>FK4CHfIp26$`H&?-om7JZqS?0RZNNTdA zqxoqI&&GVulWF${a&OifRQ(iEF)OKO5O}|=vUi38_b#o!`FJt+pIB51 zGO7rF|Hhkck=?c9ZqB|Z5q-Kl;Le5O-3}K`Xc2>2X%GD%bS=d#I6 zmLVI|$^}|6#fp}izT5*xqUBf z2#gT%&Bg5thS!4a{)oSU1**1OMFXzLu$C@{-@#3{LxS~+@>48r_*nND@8AH-QKIRf z;d~Y?_38zGU#8v9AsuL1J0&-ZjUA&?>6v)!p-O*OUM zJ+=l3&@e_M9B*OS#hfKku|$2w%*D2$p<%}l+j7gA+aIae#(KuGmeoZ=Lyi>xFo)Fl z<0a=+3)jt7<`Ciw_km35){LZix8|F@_94XVAGN%90{x05;~%ZKH}^o7TX1|NpKa#b zblyt$*T)bk#gMA5DiT=K#M@t7vaG#KF#Ebu?Z|dIRFGMZGrTO;PqDV6Yk727%KV6j zR9u=rM;Jp+O|9VJ(Q)zV6j$=ryc#FinDtBm(qD9bpeYb1#YO2?)YsF!qv4=2|p4-kV9xFev=p z+YLtCyj^~ZsE0a;id7y9`}!&EcM+7>sac*r{LfMUrxn-8RU&05Rx}GXXlnLMwVqp8 zXzo0rp`ig=?%=aJWJGBV{oM`_3lQI!Si5;9bK4aRu~`Jk`TxwzD;i75dWYN7D+gj0 zF0Of09E>!Sa9&096jnK)5T$|Vys#!r7tEcARyqa8T(2>Uf%c~WDaR* zzZ6x@n5(vWxJNeAL`FnJMMX_ymp}XalBb8fDX{+0S)j=A$wn?OFT=sZ%c-cuKgA2N zv80U)i+OI&&h=UjYHFd*j6&&m=4ZveznwgPAWISt>^#4bv_tUCiEH@C+2_I5Fa z6?nrxex!$lgwTZj4JQBoEuWmr{Yb@sUIq!{anJbp*I|G99a}?Gj6x6HYfQgoAg^q& zffE1x<;d!llj}u-kfDi+Z>8WC7bKmAjRA(g2LbqBX0g#acdS=(*kpHa)wYG^7j7znPq#P z_V3H<#O?j!7k{*8kWmaGJ{fXgf^(TZolA7C^hf(E%AZT6;$bq%@PD(K`bL(E#Q|kkAidr-CSl=*88oNk7v(v@W>mSqiO+7b08Ua`&}__QMRXR~xxZDlmET)s!INE%^NJSsY2iVT7ep(sr)<6_RTBw;KhSjfFm+ zHXoS=M>QIPtyj$88!EroK@a!ZI@(lRA*oEPcXwQ&&ar+T+K4OzpPSJY+U37D;wQPp zgWx;YlTY=Drt&p5(F}}c3DjoP5;B@1q56mlTcX`lr1ZqSogY02Nyt77DHIGUE~c1I zj!{=C(TU1_`V`O=hFe&!*G)l0)GfjQhbaYf)1%WvOVQFuuMccCv#K z^#B-_%&haq7g1JDWfBplAW%0u+{qiom56wUf&%=x55T31i^DMLe*Vwx@@i>YqevY^ zd52{fbAl38PN?=w{KwnvDGme z!2VyM_+y{rMG%CEO=@S+5)>JXW%1=0DJD@xRwhPF46$Edl~O(;nlzE9_UHTh?>&2{ z|0BI=uju;SM*@Q|wno>q7QrfML56NT9HP10Ns)!v`O$X@N`pwE>z>1` zUN|JX{fD|y;{UyTH{EpyxvqUxkWv=w;s)pE`(d~UPu*{}kz)!eN)(CytxcJ$s0?m# z&%8hBUXVyh>L*B$VEPe6=6m?4wbLbGO4XLl?MDzL4w3+L0YEfs0smRfhQNwNNEr; z{YOx|1mhacwMimDb8Y={*In&$6PQs#`mi%9-^4ID6}`DBI?Jd{IJ4Q3*)}1Qh}41{DxNLZqanyE|7z zK|nydL%O?DM7nF&rMs4fWof?GKJW9q&*wdU|NZtj)Pt41?|ZLnu9=-br3FwCeF)mMyV<|YUZsuI-?1Gv-~!THa}?Z|=7KMKM(4H(`6nw(2y z{r8gGG*{(jD-*M(2?&FOCb@4bl9_~_Xh&39OQ-krG^|L#z~g}H(scf#$;DTG;hsa32P~jF^(mE+-|7trTP?AP)Bsteq^$S%p$a)(K=e%&ew>f58y z5jwg1`BbI>f1i=Vo4VV@K?FoYdwvRoa}x^7%#^h5x<72X4--;ram1jw?6wDX#ua0C0c#l zOxmK_CDR1imdbCo--YEd$1%z)BsP*~KTc*FvpEhxu79_VKSIL4U7Fc-wPRfUURfEJ z48{yGifF&Gv%5GCZ+b{#RMV@g^uSX$Wm7|gi|8H$BOeT*gmTxxM8r%whgk14O?Qgh zj?vl<*t<~vy-37mR+D1Mmr&dFI^^KEaZZS{CJiq_y!%-~S7iLO(NR!ryXogX-93fC zq7p6xLu2Bb;cUFBM@^o_1-aihT}%VU1qn06IH~Wdh$lT2<@Ef_{>Es8x?*uHI&kJ2 zAinx=I| zf{HeX&^TCQCzl(4e?!gnJw@`30;mpRs}r>b^^+_1<=U(&*XlJcVU4YNq66D!LOdCv ziYj8Ac%+5Gs*}=YXzTl)_T2VGHRb&1z=!l-I54#80z)R%u1j=`3l>?Kw_t z3W~S>dZmSUOn8g7EwI6dxR-~ocDU-k2*4(hvZ~R0d7CgUmRERb6+?`7p4Uu#kK5k7 z_0JP1DK?du)?)XFo<50h!V`uez$cRT>WoY$_~y){8Nlz$cC-Jx028^=vvBUZ9=3%A z+-^B7=W2_CSRu|wkYry;=8rb2x~hx+UOJq68;L;ns6;lr&SKii`ux;pDC! zR*-r;fEA}Vj$4NZi2v4VtU(J1XtIj@;1IvsS@iC1y1r%3?4yr#A)Px*h=X?WO4 zZ}6FC&!*^~GAp*p_1|U?r_b#OET^2bwEIMKBJX{Ce7K13F*ZC@D^LaSd7{oSr>93V zLOD@YqZVoSdE2JPv#;1A;28t*t^we+;$Q3DcxV&W-CUB>vvZAzA6g z3z106*M7!Y&M}b;SVN=$bel*@e#W?(X5KGeyeK$AqfpW92H|00VN+96DmpsThzHla zd)AI$i@ILa)i3r7{`U!gl8S)0sA%ceH=j-PmAdi2ub!+eA)yKJ@Mho^5ozoO0JTW3 zMVBwJs9i`wWKR+Y7gsg{7zeO=$#dnS9kRE(|Hk!c0Uq0@jlicV zLzw`1PSe9}ryE0-s0q4w5ELcyFj!exu^7#k7g~-|ra?{!sWX2Z;1?2mr+0yrEt;xU ztWe(?^8f9WWkiwR7!>d~F8#PYx4fNSI|QK>7tjRzT^uNyz37`44`-`@NAtfI^UBqL zNC)V~cM;yaIUL7nNYh(aS2s~>p8>K(cQUToF@gPCdm;Y)?+p-0L~yG)N9TpYt@TS- zMGLt~vI(xO4SN_fI4*UC6UFFgYh(6OCL%F0(a_s+gex3Z6WPI|Sup|9P2m zdy<&LdF-9D8fZ%7ZGLd|(Iwv_|7bIUyd7V3@*L!?VFSs+)P=!eVeqsUC`G5cFOS*&T>QnRQ=11v|v=d@D?7|M!Y+?^bq?DCE1fxe}0R0Kj+?4@!D!-sWxXS0hAM?O`i#RzhLZDZ@ zdWHX3sycp9@KZ%K3Df~`F7nV}sNi*cA4QIS3Su+@45n?MTq_oVmu1MG_~i0<)vx{yrh0p)vZD z`@6f}nLv$W9tbyr$yTvIU4ZNR6H#YxZd!qXTvc`dF0bHb)fX=9>kqX;Hen8kqUCZm zlP=8^CM~H&Vi^E4Y{Fx^mgts0n_)S9(T(jAi2x1**jx~F$xBavnUazM7Auko^Uma? z*2&395D?9yt;u8>wtqIzTitk{nu{=x_ac}Oe!ouoLc_nk26_GZkoBn?1NYOXa$pg_ z1Hb)`6k_C$gM&k(NbThK7{nOBm05*^G(FMVs>a4y6>YfxT(gs}s$U6{DuC|_BS<3xq zlb&BU;n!#k0OsMnNy&?WP~7Jf8_t1pAgp4RTvJnX?fUiQ_4UVpA#-MRb#;UlA7~lV zZBQoQp$FoAJ#B3gfHMfvRY2p3cWb{{h8xDxaK)}s)J6MOJ1Xoiv6=2AY=&xN(#tUeo;|$aBwh?H?V5LMcW|n0p4}i^#1o(6HFXjAj$n8 zz}^{3n>^!K4){32E}Ls(LjUXs1j17UM|DMI78X7Q2_Zq@e?wD{tuf^P@v0#Lr{P`y z01xn07Qg@h{K-j!0VG~rRmZ*Y;iUh4R&P?#f4x)4p@2?IS0%zqN7Xs?m-Bz``dsh# zP`N10|NWR!>`@ofO*khQn)ZJ~3X%0rp*Ye3@}$WIUA<_H>%^U z5zEZ=(1Wa+0{&OH@~__oZ?bR!MiZb?)So_UlGV|nZTdGBFqGr$&Y;W?k059I_sx$s zvPQBkEZp(j73Sb^{sH3Pa=X-TTwWfZTf{32kUos7G-W>gD*J~9hD40j)DWl8~gJ(GVN3vers zIGaSqf4>_h#nHs13z7TCc#NGUR?q5L4&o0ap#?IK*8$}j!nzXO&ymlap(KO zaKsNDWS#o#u=7=|UT|!Qz00Gfj{K@br}5dHk;EM+%xqGN-m5scq*en%VX0(e6;_YE z+~S)?{cM?ZYMk~wT5s)4g^zMHBevs)g#h!x<7l}C1*hIolee}`M9-GGC;oLi`-^0u zt3m#?{Fd1wyi~UrldjAzFDlJS7%!4t0>CK{z3j8B-=;@n7=<~%A!(LXXyKL;t!js4 z_WA{rri)ezh2VL>QbYzJcZPnovnG>EC`zBDnT z`ggiMKbli(UQ?t9OSHc54Yd}mI|2J4zpbvLS~N1kg<-F)yPdrosdBgc)IlelE@7Wx z403^*w4rP_7@ez zBxF1zwN%j)%i@ z*Um4JX^A~P_7z%rAFso?;^pf15_)+YPj{e`XBFjSw`tryH#NipR$jhyVpO7f+C62K z?zT37(oy)6QGa^PDFw6x0SL-w&Wh#VDXQh?tgMqBY+M&P*Hy7&2lO8!b z*rN18Unye?2SO-Q4xFRJr-I;ZJt3S0; zwoT}86X;c>g(Z^8iaVY%mso)6{}bW&?n!BS>~R$BdY6=LVlm>2s32eEfH71=4ZA4e)!eE%Jl*|qzYMQR)bR*IqG=z1pe{m=GOo108v8GNyPPLH=J z>REYm@(U_9Z26~(H~ENLbu~3%dG=l>D4J=PRS96HEvn`8^}|m)+nqM-hq;>$S~#j$ z?Mt>BmlNn>yR>WFzBHfOq?pJhN-|X3sah6=o`!qYKh7U$a}`c{$c_AX>C-!HEo&hA z&fZ=or~NJ9PKu(%v(Z;*_X=Y`1`yhEgVcwH)tHvZ7{$amU;4#A*L#j}NiDWiZJQ7D zG1Sk$`H#+yDv*!Wr3kC~%j^b~v5rh5XZesPtWapF*>sS55dEJP9Zo>J-56oD8QPC- zA<06ntYp7o7gFyGr7DhFdoA@j;4!mMxen?&$ZASqQUqziODp5z%d|9yie~o?f<$Xl7tQU zsT9;Y2P{MVYXCTzy4$~)c0y#Hus{_Z5TEeWy z46l4<%0#^W-0HuYcLdF9AWlR6AzFt^P~8Y7ji)9}XB`Lohlgh4&0nO5R`ZB=ZD-Nv zy(LWrI0Uf*F&xcvG~WBImKf_N5M-}T^iv7gHgiDe(X2Jf;yR*#tLj|!@(c(0H;24u zc5wCUnW>2}a`O!piN0s6Ah#20nL;?mbqA5Nv&!~PcEX43E_q&gzU;*(Kc~JqUko7@ zBs8Drq-t3j3O^F&SJd-4$f#!7R8!Dx2E+q0YT6&%3W@1AS?J)!lol42&hYDs=78l5 zsI@Nu#nw543qxoDS^Q|Anoe+}@QI1XIQ?+VIx4#X|Kx2XYI~+au>fW>GPA@(Mov~x zS*UGnybMz88*q--ZDIE^*Oi$qhJMyEqiZy+PmK{zie@WSADf>=C&qHn+j8LG;F`Vm zf?n+Xs?f69opHa4oTxHQEv{R*oeVu%mydDZ$tXGOM;|y}=y8k-n#uuo74?o!I{gX< ztQ{(#tgh?f%Va(?_y#pGNpHSc#(3D}T|>(mI#3NP2+VdO|F`H_B?qrWvzRWR@xe8? z6~<*)zM0!!9W|!*Yt*@9TwZ{|**wn_IL^;}O?q`4mf7-i3&#=xx7)0_>s#OTQ}cPQ zEkt5r)EJ?LH6IS{F>9e-X|{ZPE@;}0JUjqg$&o3X;3}_i50Jf$>^2&i^R=fEV$ucN zu6lX+oL$W$zOhFhjSF-(KR(^hQOhaPgs}Ra` z46SN>PuKo}HUvg{=~KPzwsiq|1e;`3Tg~Q0RbD)K{8-goqYmVsm$tU@hI}3XVu)RT zl9bRSXP{fz zM?ZX%uK}>Mc}>Rbl0^?xaPV;G?5|+jaMt1$Wt=Zk9+%x`yaLVZ^J5cdwwa8nt$+}J z<-K~RNVi7Dv|m6qR@Z5Obg)X0f94b_Dz83tonZoQkKA0NT171G#UrQ6l>-zMG6rA-v;+Jm&OG__;dD)>Flj(ehKt*r7XYStm|Ifz-PowL z)5M*Kev?Qh(bFMOA>;kD4=i%9sW__g8!i&`;f{_;$*UtEM*;(2QLX<7!}A2^r+WCbbm%*7 zFEyX-C?NAKFR%XqsuvvYN1}|%0BE3k%g5`t^Tl}+*DOk49VRuCyp~6br%S;*DyCIJ zFhI%6ODlbySi@|FDXu{uQ7^4}F8$vAu~Dcdda?k zwJd}QZ55BYC`#1?S0yaz=m8A{WDL%;TC@EPIB*-1WByVAkoAUY!92ROwT zTFrLdmOry?gveRXq-L{4)1nY6EJRITsVqWy1XGH_F5qesyvpyj_F-$HLJ?55Evx&s zGf%B$&fX=mRdAOz_vOxaR=V{SR~xRFw@B*P21H`rj5&I-y@u}kFLhuaM zy3P=)fY9Z1)})x5U9A>zm+T&MWOpVgV*u_#@9bdB@T{x!AR~bAXwm&|hL8UE@m<#I zP(!DSOPbHhBvyF&nkB_3Cqeef=v$oqLbqW}_yT z(GW!ADUt0ljgLeDTc_oY={oQgRs{Upt<>Ir_y}wWE1Re?hJ?5+dd34C<`PBiP6r8W zuIK|}hj9mtFJg}O_x9AZ<)R!8@S{puWe|cVrw8q;)$8@3ZJGAu9hcrgxHPH$55R*N z0?Hl(=78!$0flS+=lih<+P2?WG$QnpdcDik?$rub|CxIr6Q+s@NwS(Wv%=KhK<}0B zegF+;0!DxRiz&UOGQ-J`zVSoe#Ghgj*1|3p^Blc2z3_9?AQe~b37Swk6_j4B15XGL zQ{oMQ3tJ@{84(>9RfwTBp6xWsTtDmN(UMk?j5|+wEf7z9g0|oy^xi{}l=l_`OxfQ4 z>M;wyA^?)Zp~;?yqrU((Jlu2Qkh+i;pyIovGbO_wKp}M^K@I%cB1dzi%2f>=pw1j) zl>rW&vgWJojSZix^FOK4MS|k&Q6TjB>Du|2IJ+jGU1+wL7htRl;AJA4g>9^y8ZnQW zG1%h#)YH@b$rCQQWwPiVq3;<0cNe{H`hmdPBNjV%e%66y&zWDCKjNFDot3=<2TZw% zs4lA=cbc&TbmK!>^9-j$kLp)I2PBO*f6qiXLSYT`-VZ^J7066&+-u-D3eU8SBcbD> zSB<(cZMWaiTI)GQADyQ}Pe5riLoZU20iAJ#i|e5brb?+rXXZ#Scc*rh^kGh>3?Qv1 z7g85DrOTgDkX>Ag($h>e<9!pm+ytlf%IA_~8tR!bI|uxYH3^10Kb5i?)8Ad8ccChv zf+oBzVC~y_j@i&pfs<1=R(snZK5Inrj?b~iVB=v7C;?$k5vcC=_~du(@Q@K*>DGuT zd;v8GtRkCe>Q`CD%crxZvt}48jbX?A0pA+++rm+kda`h5WxZ{%8537#Z&;%Vp%Rk> zDOA9HF98!f`coR-0;xk@cBYKJQ50pWs9PTXz2(x7;&sG}VT#(9Db??Q1{AVB-p2@j zP2iV;7|x~3NxRVE;bTzWhB4%z~>`-da#_q+wI6e(^Jr^ZEcSTU! zh5BW=gQ?EZg`)3-Pz%eF_wMK^YgO-z?5iS|x3{y;c50O}q=}t>n^a9y?!mV~46c7I1t4%Vr4U$O9f!8}HDw}q{vbowx^IJxMd@H6;vmZTzO+53QazF${)A6xq^t+ZJgAtG!&#iTnNJrpE$*&he8MjUdiFeV;@6Emv z8?9P=xcbA#!s+O+fB0LOLnubiW1AD8teU*g#x|S2nX|b&K_Q{1o4sG4PHp z&uclUXlC`s$9XZ7RlS&E*aT6_MoK^m%yLjXedzlfGxB5u<<<-W$;LI4D2y_^m{!Dq zFYogc*ZK_(3O@IwBd;3gETBxbx}4Y6b`Ti$ZVxZDaakOw^F-1!2$&5oET674)I~7q z>CrcxPc2#(FAiZF>FW9xH>@iFgT(rTOZ#HcfXDv)ri0}?x^p3mmA1t1+Vx83Nrk4< zjx#X4K~=$~8IUyrD9R$Zva4nn*!f0|1hpQb*ByNCl<@HlH54W{!OAdHm%QW`s zQZJ&Pjz#2YW~)4I-epJs9g^t>>J(tGCz)mcsUEeJUc(O`_mx9s9+SgeT>j^PvD*l8VU0xnk24U+NSksTXlc$bd>H43NYDLes{NWBTy*fBN5s6XIp0R9EPj;Fg{ zqFBUTs@sLW7t}}Zx7XYokB+3lLXQB@hgqBTxEI&&QqHk}tAH?wyuhBo#p-YjJ^R|% zf%8N$k$Yxb@d-^Dv-dO|8$*3!j>1B0h7Nu{Bb1MKim+)pv5m;&Me-NaW>&U}fyE1F z(y?Esr()vFI)zeXNLM!Tqd?T>ub=72!=_vl0c?*>R3F;Bev5WI{_54l!M#mDg{;x@ zd55WX*7Z1TCjO+p)Qhdw-FT z&AGY9{(3Cc;cwxoaxzP*r{d@l>eI{4)G8M9R1lSkN(s*!x8z?dgNm1w-BEy>>iNJ| z1m_&pUAYqS>Rasm zW)*c;5cpivsIb$e<*N$U*9@#c4g)UeHw(( zGlndKFMqsEXrwh16ck!>GTzu&z!nzPDl(>WZDPNDlhd$AvM)uD3}ScuCy%^lxE6kk z#Ff8sZ{G_W&lv{-h9$j4q6sJ#-)g9Sp=Dbgcx6t^kHIR zHk|ckbUQu4p%nEI8b}J^5=aI82F8vkK~H$%jQo76Gh*87kiK}{jBXn)EEK$eZksDA zT7B-VH-Bc#t(g)E$bClcNrOqV0jMX*3-%I;lA&!%ku=-L-aiP0h3=HqtTW_EbbdR} z)%yz4#OkeAX0M-#d0vGuckUvfYXT5wWd4KeXT0$Ph9omMKi+<=J(lc$W9ePjt<9?= zrencO`BnpQ*h}DzKujI z$k?=`PVWd*(eMV&22wNY-H&&JB&2ePu>Bxe`S0g@0o$CpiEkXsfAdZ&#W`@$@_OA8 znHrxC=5rm)eYThKgCuW^SRb|Mm2GOIVMJ|hA6n@`0ygUg{lff7a#=z0?lVQ?~;QCpC=d-RZ zuJg;Mck%6!Y>QZsSa$yDWT=!>)?PgK$H!+s!m4vK*1!Zj8iSxi;)pA&hIjkv>ji9 z?Z5XTKbV>ZUwS8!+`swdB_VC5O|t98CQk5jXH)Z=#&YI*obpQly;}i9bVCacL;y^G zV#v%i=4qHhv#KrbptN||f@wCh5;8($#D^`6M`Cs$m zZ_!%x>`1dii5i~lSlS(9#vWH?bx|E<^l=%#)JkUTpY{vMdi$t!cPor%w4`zOZe!y& z%LiVAo0GTb9cfsIZ9A(&pmVYGEx*rpnnTaFo0JO@CmI{CiHKbpC&$J=iN?o)J8AKo zeSkJzZ6p6QSrf5K(@R*Kn{Uok<5p}B5r1OyI%_l0g1$Yo&%ey_0kTm<9uRVJ;?dR; zOai&T|IJu);Rg1#+B(f0!C~#GX}N|H)D5*+MJha&(<9<9At6NN4*R>yH7)l=+sf&2 z66)!T%nO8M9Xm(03)Nb3XSdU^yc3D8T_5uLY9@DLv|V1r`$}{$!H%ZzLC64?7?WqZL?+)wioxM_Mj&wzegnELX*$oWlgPx$w!Yp(qF>Rkz* zxm^`L_^CIIGIf?G0*3KH^aPe!VoMI^iufgD#tY4@9i;gCQ+w*q&dEEVzO3~(wKT6_ zaromiC6&TUD1|t^6pgYo((^otgH$2H$;tMJ0h2oi79Jgkpuducw}M9Pb@;?Njx9`uQ=Y zg!H*LZI-D~M%vHH)!&&>JTwAc*B+bSdp+3qN?++_qsa6S%Tw&-=na_vRuigGHtSdS z=&JpS7vZ~6ZqP?Eq$mFgw#(Kh8{cdkNh+~tx%v68baaxl30<8^JI_0}+xW#VL!0n0 zLxl|2W?2YbXZY$6F&|-5VX#V7+N`=ob9Pw19uG~hqf*)N>_S+g4m*qbbUh-D?q#1& z^?KXTs)ll?A8)Fu_{DoCUHQ?;yXd~cU!S9xEJ9kb6IUExT@(9ja`H~bE5g>V)HdUpRrb9K zUWYR;Gc+^)68I1IBfkoL+dtjT(agWWZ${ZxIQ5ymAm~lc?#3??p6O6v;eNq83673j za`WTo`&n5<`SSeKbjEF^KtXJ-Gk~Kp^sJ6)fuI^l+cpdAXK93LQEk4Tr+~3 z$53&dk&hjVVD^lLm$wQ6VPTQR#yOQ>AZ29ZCdf07XWo*woYCVT^ zsx|5?0%<&5@CvqOtu!U^LibC@xtxuYq!ZH!Ws`N?#jn!(1mjU2m_#7vf1K^WDt{N| z=KlT?_x>9t-=AxOETBc0Bapob6{T=^TZpT5H5o>)R>&vhtt=oUkd~dTR|EAKdCEE@;2N6>Xz%w00?s6lB@++tQwY@pV1{X+zO7& z$*>bUy&dCyMC?WF-8z}1)P`q>9Pk!!KW$|Gju?_MZxaZXz&(;!ihm@T5;$_xD3pe8 zsL#_x5MHg)P<A&6Qa=8J&ff@Ur+5iZO>Z0Jrw|y!2=e4dhx4f+`M%S zHywi75+8^w)&WRs2DMjcuVj2O0jCI6n7l%!>7-c*N2lCZT6wYUQ^gVf6g@ zm-kOEoXT`LK9S)+6uaDz294PbHoJbfZMGtI?OaDSSK2t5JBPoHk|Rjc3{x1xa|Rw< z_KcTJ&1j#KfBFb+xU;F1#m3L(Y82Yv~1S; z!azIXra{>aXXgzY18Ub7u0<&irmM0Y9UM^ucp3o@TD$#`UERaAmQ13I)U0a7I1mx9 z*<|1`B&pTJJLBWfC116W50)K$fHyOK{VIaTB8?{^yz_vN`gSqd4H@~t-{-O98dhgI z4aW=p>MM+Fj08yjo!@(rrr}8up{`=5xFsTJfsT-S#p*(^nXu~OjQ2rR8x%+HP*vQH z6a8^#b2{?uhD6pEB9=Y&rLcp|2`Hasj|v1h2_6J*3NET#7%w#&NFjFHOS;&VBiD{K zf!dQo&)x5LO9}vMy3L3-_i3q4xn4Q7Und=Aqd6)_PQ@MnwQDLUDCqvJ8{f7&5`}Qz zG*{R@-dgdojN^!TztU#p{p`DpwJdX_hA@Fj2_r7o^hN`=?3=+)FMn8-A+wjFcu+z% z6VdmSyuYYqS)II@*+`(G5hA|{Ii4jr7^(^`8Q>Zr@6hA&Z+5>9i7(&=9{+a$W%T_L zuMC=MGYNtIgg{8pDO%i3t(7}bRu;z|>qDg&I%ixBcT2)g)3R9N5WU==Jd8aLW z`*5$foqhP=Mvu|7^AUsL2`PcIYFB=6JrCIu6wB1J+n71E;a^AN^k&EPmktmmA${zwdOHhGvs@amN|EJ8vDZc37l~kR9)!gZ?)0eS2K( zh;C9xlfj=!2<}oa`unL~9r@Lk=;z7onM`wE%O0QFhP;yC!cA>}_j&($uD9f&wy zCcab7m=0=t$0pP5Mb(ifuVCHe>?3=@wH=ajhq`zRRy;n97y3Nwoqk`}gE;5OyUDZd z45U_8OdiWxdPIYP_}tT}Sg6`Xh~3pRH}4{yZm;gdp?Cij0DbKk3uQ_Ng`~3Sgfez2 z&c~`EpSdgzsWn*O$W4-XU#+llO4GK#BYf-!P^+DiD>~)fRpW$i<;g+e&CXWM!3x-; zRne(wo@I12C>owE_Qr*L{Jk`0GHO1hIa(aQD!`C_^olu>^Se9kvrb`8i4n6#D@SBZ zv{nf`9%hLnDY+$Ck~00^_Dvx+8BVwZCm_)C#x)4PQE)l) z(fVo&u90ne5nF&qoNC7JYX>ZDiu+62uOh0myoF*OM{Bs^dbWVQv0$Y_I3V4bo}T^= zi4&LDN2V{@z{n{`gb;KWaNiKIu(Y&qdvu{&SVb}EN(+G;BJbq$&c1^xww$H`Mo^hX zCqshZmdR(dvfe1mU=qBK-&p*YhfBcwr>~@p$&ToSY^ocndTzrje_&tp&6ZL!_NFk- zF7IfnI!vnXsCRu$gZ725R)d5sXOAA;#vkS4M zgzYDHZb$OI_|l<}8ZweVyoG4{R>$;a4X))KqTP6R)&LO+pc`;=AwyA*i8iT=$JJ8W zskU!g3o6*RIU1-MBL@RdE&hbr_-+|C8kfEQ7MtR8_gx+>esB-~(dlrH?9G5?=s`?e zMySDK|EL!L!hQD7?Gyp?0O9u*hY}`E-C!*7fg1D3lXuKo$bp^zSrp0g z9Doq92lo2}LF@c6y zxeaR;8&aREZeVXL^bM7)V{`}zF1=?WrU?ZdqAhuFCu++!)-M7W?RM8>AU}^!QG^f7 z=ab9?^ztn&`snWK9_;V|JaG*&CAMW!H2V~Vc8aXC(6!ns5iee0C=?G zn6Ad&IoNVF9V!-MHTf6ZuS+o{2$tnpwB9hB|3ra$vRZPHyEfBcVzHt(S!AWFi?y`B z()p~YK>0(f)=oxkrV6($Xdt553nDXp^@a&1LJv4`Kxelx8P*4!_X;kxbK%zH$s3Z&$>e_@|86y9T=37D$>$@-sn2{{npc%IwL^pvYdDNntqd(YwbW zlLvv!UYrN4wATaQC+k=;slkr)qlZXjY0Ac4S&Uct-Bpg?R8fQedxA&wV#Hrww#3ey zt`I@InnXEGVW3&*V9P~Fh?c9l>Up{WyZ$hq-jDiv+!t7v@-CjRBvJ{yg?T~ObfC|6 zybg(ig5L17eDTLNTnO2q;1xgLXK8+4eJ!?x=|^cUHi$>aX59uq%Tb$9e)*37*YffPMs=p56wx+1**lsOtL@E&&XB=~l}Hz##;- z93+Q)3&GR=+elylHyY<6#$9EY!9LH0-@(n%0j&)WvfPyHZ>kk)2CG7CA&@CS!}66R zn-ASBt4$SSt)KKRkMW=v6*$qV6C6^Y|4bs`4bTp^@O>5ea9M2Cz&aoRp4Xsn4UFpr zU!3~KTZ_}xLCMd(nlK6+#}*pY*2!2^tR>;c-%+~6YyH)qTpr11C4JZ~(7z|EAkS}c zF0H(im3{2m3k8pxct^#r%BcuuFDX|!v_W4ZGR%h>wmoT9OCCF#4klpP zigxNTBS~*yyRENF0|TR&(yBgtmA`&@`)#c7j(0ub-p%gPs;bt}F!8j=R}zCb0insi zecMPAEDHg~$r;cc67l;+lfB(EKQtV9d@+c^brvu z(;v!j(^lxYntq;eb`%*VZiGn2G)j)N|Asl8AkcWcwgum9U7cNg=f#lX<6btvz8}vGXP~+jOD-VQO2e zF8&pJ^Q~a1+~Q&>O#;37uzQ@8H)S6GX+}bhXhlLvW_`#WO#5k0i+dm7LMluYu&}Qc z>Q<2Usu#EKM_W3N5bRLHKn~c4+nyRJ-Vi3oT#u2$362*8% z5R|*CYe+v|goa;P8ac3h{+V%jE^r?O(Hl6jcs_<&OJ295bM~-`CR9 z?V7$adcNB?#XQbXS_)?c=83lBd1(QD5%79?TMv3g-K^J4 zb*bZZKYHTDkGGnej47k5>1F#RMDI`FxF9Q$W=WxUmz*r4^fm3&?ZD4&r+auGT>Jl2 z&U<^dw(152^*rhGyp*33@SxQ7zPuTUmY8jEx9n4rF1stygE{#&RQyz6ZUsiRmsw@r z*DeJ!kH(?9n&QNa4I*1KUTTRCCOFW@d8dd{IFsUk0h8=*uVxr>8hsG=gYl2=-O2f$ zoE*&2av}qWf-NUpfNkNt;_2=_=l9U|!=)nuB)0+A$8Z?W4g8VM=C=4f#4PRwj&=Ic z7mU@l14dx4pCuRroxpLqbuS)~Tb$=xlY@urk8VxoW^My;1)crvo*=d_7GMf+<%<5p z1u&nq(f%4J0l@EF*@qygWw4fZ`SwxNt-#NAu95SJisbqrB=oh}?H&kTCfMX`X1zPS zK`dF5RxIEAt=6!^=+EREOxTiLPsV~%ykm*zZOb=6L&5L(M)QdmS;N4$jqh+kFt@b! z^=Gk9Eh^?Fr5MvxZZQs!p%mzbejn7G6xho7-(WVRm=Oemf|n?Y`-s~#xzki%){vCh z-vr$VU%E>@#J+}Ak8_%#Sds!TE00?P+dVO(`(W}ksq4d=pmk?%Vg9GESeE+Z6A+z# zJ0)UYXhL{jqA$+l&VWwsjX=q7kNKznEOFJ$aM77&u>b1lz*V-TGgY~4d--;WzC(ExNK7|Fi9OB%-&)5QXv-eR+?hxx&K@b+4a$MyB7J>1}%I*A(PFIK0SWLVU z%s2r=i^ZyrAoIQm=paRk2c`alRso-VLQLph?=5!LyPM$V>^@>Q@OP!n!fbY(V$EUp z4o<(>?sPJMv99a!h}SZ`A0s0fJy4sN<3P!4@az0M!AK0{SDz!=+_q<_Y>ylfg~6u8B&NLjEhTjQIY z%qHfu3jI^H^NhVi$G7QX{H)^fnSR%7BX2fL>1q3St}c)mhhWm+m}@0_63;KKAAm&8 zOM98ez}aqW5*cEx3^36?tR4e^;iGwHYt$+NP~Goy3X%~MAJrQFA~F&3IL!lzf%Fu^ zg^7uYg=mV@U+3;&JPm!K6{hJR<5tpCmf2qUDvTy*R{d$!S_LnF>G1(SdwbvTnteYa zh`qx?xC09nA_qoR8-Q97H9s67UG+aFcQx(D^6T?0h>pXkb$YC-N2fU=tmru##O3}E;G8T>mWYpNWEU3FoRQGA2S%FOtxVx0iMnD{In=G70S9=B)A0#i95?j~Umeth z&D1jMvGelmR}pWzcn!oOHa3Zp(iBQDr(4^#*7&$2T<6zsF_ec&1(UzHf6FO|gakC0 znm7B6_lrp7iE54@`Iv|!A>8;iRe!r16)S7W=Mc$E=gW0RG2KL6qzh3D_-+cQDD7zZPo_)`w?rJQqk3k(CN}8EH(gx#9>;I79z$+N=x6CFjs>vaJPcn?Hn9FB`4E@a&fkB`Tw~?K79RpyiUE7 zIoH>l5FiC_AKfj==Cl}lRNK&S9RlWjT#x^sn~=lu8e+CavIuaAs50XRy1QS1Vq`MM z|M?xs)3r)pIdO6EqWdN`HtY(?LRsnr|DC1t*X_%T74CH%?(hGaYxUzD1?9G1zkU1s zF0ay{`0w#C|M};&Ub4+MIdImouH%~ZN4{pF*L41vRNYuV6fZ=FoYy12tRlw{C}>l30uDwf6X^-91tfhZqd>f@pAC+ z+!gga!iL->Bb)CEXOu6V6gZaopD(up2OokzVPlg5oeg1)pjbF6I(i+OslgeE3j#u~ znQj9%Mv|12ly!{y|EzRPS*MQ^)+;utUFhA9Ej>qwMV|mL%5*~kG-snU;|X7RpAO0 zU1O$%y}P@1$ET+Ypt)gJR~H0gWNOMNEIj#i9YlZrd4-!3-%Y{8zLutR#-Q~B`-RKQ z4d=C>`@*(JqtLGtk~suM)i8sR{(d4XEUa6Bl56l1dN3d4t-88t_5XdGE(eP!hu^B% zjKy5EGkjcfb_4-AzsDyK3=9OfG=;BQvk3@LGKAmYiYL4si0$j^3mX8bzyH4OJ;F!RYq`SL8y6@uszkC1p8{?hAq#41pl$oi-jFqi^OrLswuOQT~k z`*KsdKMvQRvG0XcV6F0RR*Yng=SQ5lun-o8e0fKHaCis>iHeE>VM{OQfw6LMfDBS` ztzLH&e0+p}o(Z2X|1VM4TBUG?K%`*x>qB~M{a`$;7FcFp!(xY-r_r^1+4*ZY^mq2{ z-c&NXfMkd4nqi(MW-N~um(~ChEHo?}T*vS*DzqO25Z64arlqHoV|3uos|vVe`kR=-kA;p~paDw9;-c30?~i#OJAl6hax8!; z4DkgA6cm1&gu|}FEv`GTOGs{`*Z?AtACs9(ceFmEcRx{lVh!imF zGqwa)N^B@H;q5CtWr?=HMxn_h*AmHpS<+%8ZL@2ulJZ!<(#|1;-% z?08$8-OF|+uz$n9KAXbe+tlYywFO68`|lrY zz}XQkRYGHOX<#E3O>?g`x(w-;;ngCmDlF9*`2E}V_S`Hy@87bQkf3md8g1%a$d;-A^dl%x%5TA@}_{vG)dCe8*IG$YW>^ce*b7kbldwRsroV# zs>m)bE>(G28XDn0f6`awN&b8PKNS7y+G<``KfC2~ws3ais)(C%%xF&XlgUAqGCf32 zdYhzD*AY7%;zX!-e zGdJozETozDR55cO$Z-(K(QQwxC@9P`-sinbe~0K+LL{EIi5@Oy>s%cyrk~uW@y};4 z{?BJrJGteR&9_K&Ef0^cTp(@a^%uYXBjZx@mLG+}ob=hrDFSY$h@vz;NFUkSSJyc^ zgJE4TAWat&A`ZUFgNZ?AGDbxKIXN8j`^U2=kIuhgAt5pyY~djxy#BR}WyqsFQ(XlY zU`S!j5151I!B}F7N@#et(0+RGj|%GAP@r3kR5yi%Nig^a?!pNi{ZPETP3#mi2VFOD zF|n=Qf35`mAzsCbTu0mg%TLCk>hKvTtw_^JX|cnAKXdqGIs4I?+QB(r*|>Rm%l(1N zWK4+>zOu993x3tV=|q#?_k2%`fkrqO7*4QTZ_4K0rN8$}hs&?ticAa?g*aEpO(;Ht z`m9Q;n_qztL%BROr2l|Q9|Jrz9a9+x57R$uCe2s{9-flL#BCDC8A~ijLHkEC>R0zF z4YeFpxfkA{!eUkhwaQVvfjOd1k|JVa#NkTj;k<#+H8u9RraZIzrPPO^jHc5V#0~SBivyxEWX?rvH2Z6lqNuVzYq!aB}v>^Dvfy znK$$xGVj!~xwVu^qGTVPe2y8i3Upc2RTUyA9Ux3Kx>*aJOQ0$vgAt5{T|D#gMfn1D{J}cRDVRLsH08cJXN6A5@KJU4h z8upK>XFjfW#&N{@{ehMF(LzjxYX6>df(L6|vy=5t1s^}vn;rB0(D&kRk@kMa&@y+- zR=N_=H~7XG*{Sb8#Ct$0;tQ{9`>Jf?xa&qU6g(6@YeoM2Z4R6kbv_0$;xIABN^tT1 zeJt=%s0nI@a>WK1_;1b=jNqA`PK&toE;j_-nRV)nxHgWxtp0FzOLE~?duo8QnJ&^$ ziB$1+x4)F(T|*85eL-%jH>W_S!*Pf0pA0uB?xR zGz+VEFw0iz0*;hm0{%WIui z+Gwpet6U)XM#xCMLN{I%1l~8f0N|Fa9HO;;k=Y7!S@Oh?i$a|m9&?f=Ls#W{c}OzA z$c8&r!CR`MT+)+3>~VVCb)~;Iv|gN^zW>o)!fyYi7ARriDfJ@4Leq`2p$sWE0p-mb zP@jUFR`^~xrUds^I$(wB+q;?2OqFPR`c+15?&yLl_v6mqu|@28sQSmxS^;0j*g#bh?2uuW(6qILwl~z{Vl^hf ze)uNl2iH`IeWzB@{vx?9DB0R9#?Cz0%8+pB3jbIelwPL&N~Ia|9G&DeIbyriGyM7| zG6W2eLyzwD^7C@LjyMNe##-fy@=ObRoAr|Eo_lkyXwKA&x** zI_MJ@8GN0dT&)v&gn|@nKA^!QPrRvU&KV{vrGcqLs~Zt)56>tY*fO4Ae1m{sKgNp%SvPMhV(fm3Oa`V$rxrv~{vKqlb& zA>V?y*aWA_kCwoTBZ_d<*Yn{Nq}(7!)@)UI^BL8NXCcTcCB;3Mb~}mvuPv(?<<(;XRlsm|w$|3U+=A07F~dV5E1%ioi;K(1YQ7k~tmO;Z zc_;HorYC~BD-hS1I1OL3INJ85C3mfRO=+2qDPj-1U3=(KDw-~B`oPpdxLiq;p4_XE zASuI}QjuH(X3EF+Y@K&Oo2lHmFIj zj$jlM*YR%}#0GT6YIQ*{P4qck-#`8jxKi5e^@3sPbI$L+k5m{yEyK4vUR}V3sz#i& zw%7{t;(*}=EFV%1G4@r7aR(UokblR2=Kd6Ks|CkO=zuY6;OoT_m8j#N*^MH1U|cJE zA}5iq{_%aII7md2IXH~Xy5q1OG?_hEIpr_Ve-cb#^4<)Ti=?_=Ra zN@mQrurJ@0ECCHgp5K#sYr!j3{7kRV;B+RyWxWF7m{Y_3P|<@sx}SU5&{9nEbEC0) zngw_3(J2-zOG^=+M=WtdAb+IETB4rLDGx;0(ug3z*t&b*u}VfRvy>SGJvK}?&=8i> zUPWa@!{3|so)?GAGnEEqQ}=V~JYgT+$0nr(VbYGQ?aSkKbu3lJKOB2&hVIM^xbFLm zq%h%e>CXrsEMDfTjhT-y+8q>Fl@I1b>EHR>Rk#mH$fUA$0H~IOBJSxD?LbUwV%b|E z20mQ1*#_6O+3C}{muDIWT z5KnjoNHG4;jk?&keytbc3LME9>6xBgb z#sIR(Sh*keN1nj&(6ahv>nkqJ0-0K8&Qii>qp#RxXv5rNBjjDm-lk%T*4%cD-Q0SO zNfgN)_;g8RNCpN-Exmt4aiWKV2vec2rN-pT?(G%uIKLzGoPCfUjL=4=Rx0@P`b7J8 z<~8SrT9r+B|JS259=K($6Qp`JDXBaTHd?gH4lu!g*S z>Cc8#VF}EVqhZ(zud#UBUZ$t7vUzYCq6s12u@axDg&E<*K7z=@b$v7cIfdr8>Q(Jc z$ZAOzgnATx!^|jlunBwLV9l$PcG6Bl@-#p}d{I7npVJNygr4=^`*ogU-Y^tLKNj2#vY^x5Px2`$#7ciC2 zT!t`;(4nuyBBYSQI1Kh@$4F5@dKSAJfh4ZS&9P~Sr4xXCkx^0*p<~hcuofjl zhYoOhwXI~ya2kfMMx8_fXb-?&?HJcMDjnp2KmsQyiRz`a?I!jC&WdDyFf+1taq zUOz_Rb`T^0jA~Ge@^5Lu@_W=`aXx2}$>hcO$j6s%^$e7q2Zfi=mWYUABG3~f2V|>3 zi#FTDUn|R#xLgrLK^nC3zLAmNe|i4+VWNL_DG(C=LHONABv5i&SkzqI-jDnhXWcEk ze*UDtH1l8@15jjy)(sy_9tEm?7(A|{?O0lDX9PUgmtVzwQUru6-%@Wpjx1*5C3kjE z^V&(b@hVWFhxo?j26XHbI7D3V-~^=^0LB@p^WT5b6Gd35x?1}4{%kGJm5ARSIuY}$ zf|6>)*D<7T@rfc734o6Q^KciW_j?EveTu!l=Rt`MYsO)P&iR1XccNMbphDY6J4lA* zqGEn&qL1YgN}!QOkO$oE7uPwAkP`{n!H52O-T#Zpx2lSgf6-_M6n%n^S}?7xOWjFr zM29IM&tRaRZI3+-1>ya}L%~&Xn2m5Z23ytA^?K*FEp;D)=CvFF&<-fmj8pazyz1Sz zHz##gjUJWTO$&Y{fwYQ+3O>K;TUKC6uF}mxzf{8px0`E+MPn+e?^#&|FF>~ykPQn~ zpc6YTM`!dr#J|3Ahf!E&pR!r-`?8?~TEgb$R3Zs#lkCj%Vb#f|ep%9!jh?kzv4tH@ z3zqtDPj;V?gvpd`G_R2gU_2MDcFtnv zW>?!}8EVGZ`yAv0A_gss)!MMPbKXz@v^T&mfkKO|o%5IcV1(N%lpcW2+o?8vyX_Fy z+E)q;TzAwWLWRRLsEwIqHU5Ne6@0FRkOA-l)HEmFTFz^u`C9U;bQguxn5^l)pY!F& z?q-TO)M(B1% z=BjJ@>_>UcG#X?M-~Y#(F&nbj=S@gVY`pvB|E}vdLwmh}*Z+l05E8 zYpOX${2_S7LB~+mzGc;9x3eQ{XuO#P`U_}j^YC;IX$39mkw0sD@K`ld2E_ZfJs@Au z?+6t5s1v0CJ7K2hO@Q$nfU^tu!#tP$nwveb5);h5F_GW^guuN($rs>Of%`@Qs05(0 zZwHnuweGmLa%3s6sHkd+6I8)ZCSBT0e;k5`-rPkc<&&qP&L^j3Ce0twY(ILCJelkZ zchnA{25cfgK76)85cEHjXcXD#peYuZHXbzC)02g3-+LqpqoG0gCD3s?dHLjTvj}jc zaTp)*PF21_K>)~QXKg={0r7Q6+t&!D`Kz@D@iN_$c5nCXmbVzRlQ1)cDPZieYNml+ zKhM-xC&F5T(zsZ<|BD4U_REDp{DdLNgKz@=0Ws;R!N4^FzBJHSEw0-`xG5!$H2FW) zOQ`=KO^*9av5uz)b2Gc4XhLB*x!LP|uB90}>A-JT2<{P}UD%d%(TtV4p# zna=3zp(ok_cu^YGl9z)aW2((bComw{ahi0D)x0M3!33Wx6qBYAwLQWAg)E8cFL;3S zPg_Jy$#Kp@PBp;b zo@IEz;3w}XpFS`BC=+DX4K4)0XaH!3|8Kixz~wAZ4S)C;VP91^U(m2*g%8^UNM2u^ zPzfl5eE}Nl${OlfJDy^i*xq;J6Y&s))-8Kt=-Z7mF`|4{$rlz;WQDZPe|S3WmEq}y zdi0i!!emC*MsX*wk9ylTu}uO|_^EX5bs=>95bcwtRM>WcigX?fl74d9P+;KoGq=Nl zR*sy5O0{T#>&gK$Yq(iuWgTH@S z+Z12OY}Olwmw`eLu)8tjF^-4k*$c_I1I3qm(@T`974|5Q3x}foV7_;v{;~0K!5b5f zB__NE`!pD|BdgoXPg62{JUkRxMWkS&Xl!h9z(l4W%@f72-13sI5SsMYicS(UP4U4XOB6jQK0SAE9XDQ$Xfc&2|HJ74VOxyGT99m)35IaCf9j~xTf z>I%IG+{@SjrEEE|jDWhte385C;|h%yV@mJa3+88PcQ#KIsOY1)!y-`dagkQosgzrH zai)bghT!5hhi@)>FIaL#8KzaI@N52*8J9t`-!uE@j*(a4N_E6ObRJerEUR1zrCa_< zUY45g2Sr{_S$G*&-J&~YhQ}U;?DThEUf;EYje=wnE@vw1WY+-YqKL6d`}_O-%$aJd ze^MjBBQN`vMFJROo%}M%9CDcTpMEL<#K8-}yIT`1EUeYLO`nyAo-)&tv+YJ%V3;Lr z>mZEkC;a{arSO9E^b8m-vnOwqWEZ2aa9f~VT-3tnxpC|WKKNXtKv)1b$n_w*X?5)Y zHt&7l(EQa37?EeYGb7EYbHkP4c`g`mmHiqaS`6^Ta7s&uUmQ;tU10Ae+eeT#9?Qw3 zu++{jm*tJ{Oc5AldO&o00I=|4yA6O|Tn}1j>mO==0pR-dy|#kF7g`VM zuK4Y8BzAMOC{d=-Xok6v>DD{gz$TQSb|_!=hvfQt@yV=43_u3_K;g=GZlX~d{8sh8 z_vOi1!yL7NwYFgE?WGD44@qd-)2zRSbt49_Yo^}Jz;vPwJV7A*PZN|$oJJIuR%KBi zaDj657M%0ToN`1%?H(Ih9(8Y32JU0M5pJu-BLXV1fFBdz<#Xyowp7UcnymSQ zpaw^$PpBn=2n}QdC@9WW@RG$G7cmgU)#FJaz)jk9Txav#5l)AUmXoilp5LB9d`0`@ z-i;0>iBe=s?HiFmo<;efqv>slG)P0_UU-NbQ4ec{1PYV24~z^?y5l221eY>)W^+?B zJj^m4{`A$R-=TZ(Kmpx;y_$Me-6;C^?6i~ixUKX?-+eKNSi;I+xx>Kqa$(KS7{>-S- zV=t~G)||lLEFvZ>46F403jLiF^Y^O*?Xta zTWJQEpaz#khP`30R^-)GBxf^lHy|YW`7_GLAe!|ik-}8n^*xg|ty^pP2 zul@L*fzuD<6XuZ`e@7F3FqH%sIf|_Zp}hGW>QOPg=jQqFtt99Z>Wh=$cY1tE#q3s? zIzoA}=$Pf_As(j=!D$n(j^i2K2^ZfKuBIf5IdCzR`UYn{8Momff4zp*=<%eR`JN8TE z-T5Ucm7o@lw(hVR9epQv{OYZvA<7HJ=R60Gsn~B_sl1P-HN4+Ga|`O-I#n^XV1QpadLhhaz7ybQ%w2CQ!re==UaJ0o`(Ci|s zUwe;cn{&FNJR;=m4jL|&D#-fPDyp}r>h-#Y|gA5I35EZTN+)dPl z`nghisj@}6Ue)H(_OM22jT@dzx1p_Fe-%a8VpNh}5QvQ6KGUj0 zq!d0fWXi3T$f>J_y~2Ext@&~7Q~gtEDmo@{XdKUt>u!yU)z-kSj7wq#A2qeAdn*>s zydV{iEgi8$E(R3TBOcd}!(MYqn(u0tYF7g`*LzKwjrWVT6G!7v0l(6lBl(>wjgpE0 zyc@L27GpV50nF=P&60U1Km)ofL7&Yf#s%0 zGP)VI2~Cx!L`=*zi0T#$-~0?KB@_g-EyVYpZ-sI9;>}Eg ze#=fEZyOdcku>E1?nEK3-GM6(@S!VqW^d48`{uM3wR(@nmb}m)2TLY5shaMiSi$2L zO6lGwQoQHx0$50H!7cjY6c{v-@}LXTLd)_YNH2TYu}0)?`|Q(KjlK|7OAfc+5G<~` zB{7+&VQT3NA2zdzAOOW&ZMJV|^j!?$%c3HBp=V%@Z~yM?PXCScRU0+)}bj3tPDLsjkT#CdMVvs~c=p#r|!%}UMBBKQ# z2r^6VNixgsp+3<@*LhrXyL_vlg@somIiJWJe4}K6_!>GnGARL(3?`$d^DUA?Va4~<)+_xO45%olP0Y7lDp8qqQB}ulP*OiTg z|E9DH#S(%JJD>Gcb!CA+>JJCkdZLbxq`Nx}Qn);MSr)+3VZp5HlO<|w(O5K~^3h8f zHB3!R%}=S+E!bjT9`JoBj&oDJ9-9Yf=iVBXq4u{`#$;q!hg?GfZXhyLGb^mRB;gKo zJHxGQS}bH6aH{@MTl%4|u*jx;{mBy%Af->vKI@+j$n$X^yT1f$lV9z!{7GFI5rT(K z3^bE~Vm>GX>=n&G#ipZT^Rv8}s+5m+=nyxLbW%RvEUlHc%`%Dt!>wUjI&@p$uW#v3 zcLJ_fYU%{rZ)G(qyvLQlM-c_3mNiu_l9;EnCJ$X(ObZ??d7wAI^?(RFs8KrLx*kdj z4{tt?V`M7bsu)cCUc0DEgo2bN*oYDu6+e+ely!W^gV6rMsf{HD)NQ|bkgpTcX%j$(!f9=@#ajL!=R@$2^6!^vq%=56lEfe(rw zmtk|e5k#O?@zB}vx+w2;&zPns$@rfC_+D}B53-aO`UhM2sBM_E{ra_+f`&$LP;Y75u3QP+dn*{G$sl;Kn$up} z910{-TBdg5U>6l z0xWx;9Ez@$^+S{rHyA~3F$N_>GzQv`9z?)n`g4B~g{(=2N%0Gme zLbLdBzrL7gyLR!)w}??lxT?N@7gI02NUeLE-E=S=)v_wC*{=iA%ycHW4@nTd13BGDy$P4(B#w8nlcU?5mf3F1?||#zhTfyC~dIg`tk_uZ>eW$EC{1Gp?zPx zC&g|SmoO!KubAg#xdF9@?=C-$Ns(jyQ9;!|kJK9;lH@Txl=SvYKXugr8J@DV>EgJ+ z-hQX_^7@AUbmgILJ%L9>Z&JQZx9f)$_hH)i|SY4E)u(;I#L7Xel-76VonBwxvQ3F$2qWF8uAsOvA+P1@Ba*jVTEsK{ws{ zZes@Z>}O6Ksg5OrF5mr7Ae*=9shjAbK71Nu4WKdqr)Tq&b&bb=I`gC_HAa>?qEd1L zXTzkmnqUwvMxiNS!E3DL%*ttXLtNx@3x`izdD@kN0*WFp1ihb}nml@(`rNMR7@ejr zrU$zNt`@hH)U8JMFI?|4nJKy2UO+*4%fYc~)K^A$P{jWxMTwLJt%eRg*PR_*(wD~8 z3rC|6T2LoCd3TH#eE~} zEyCJ*e<^w2YJgVh@bV;j`!Uia)AI$cj%|k4Zt-F{oX>p?f_LkC{?na@=hQOQS9WHZ z4Q#B{S`ShO`m)8*-rMyu0oMnigp4GWk(47P^s2z3-}SUef&v6`vRcy;7N#9QxVnIF z8R#4FkG%?4urG!UR11#5<#^SL862Ar^Gz|AmHvAkDn~Z`F$8rg31Wsf_OZ{vwE(S~ zC7bg}zL@XhmuAdeI^^^aZn!@R8G)FQ5YOP%uuw|$xiO46OaDuZiSb0YDlBUsrc^4r--D*G8(_`jS?`49xd@LIyJ|reSefukdh{3qT z+6ADhaAh)yYszo{$?+^-d)aj9^!-2`x|}E7Ga8ItQSflD?^}tfCG?$mE4@@}<45{w z+o}G6Zd2Iv+d1CGHge>KDGVWGEY&hP{$TO+M8z=M%(}O1o>4&P@!~wU#NVeqIm7md zDmH|5{i~U3?FKfZ+qxSamOaQ;8yq(39L_B#pK*JXeu!&WU!r4jQjQ8>ZkyS!sY_U$ zIb{UFlHSc%l{8fSjG-kq>xLr&*;4$6_QfC?jjj5HhCAPJGaip+Lz~$e{=s2pI=_lI z?WWm=8;EaKyKvLr6{O!UnH{a4cE`28VP5G2p*jD?scb2Om67%YQTAye!c7wbe(zH7 z)BgEWLryAh!nSY4}@H3W(VTntwdehG{99;+*fapHC-&iFL883KtS@QqA zYSK(;6);+upHmfu*Vr1dPIeemvoyFMEiMb;rF;Ixf z7oF4mADHYmx6@A|i2Fn{`m_!^rdeSZ6vXFn!DL!+I4$^icXe!nK(=rGh8_bO9~ClF zZE13$b_GSX%|CX$RW?r;_kZ`DLtvqp-)Q=l|3Odu;Zqy+duD!~ z?OUPxBHv!|%X~R#NbzztHm%%NBjaM}0@tjDb5{_RC?k&O_(H^@2U<;2`jT#YlvcvN z>0ANUKZ3A3p50t;;ULVAFCV;ItoCL&)}wrQ&&yq%@B@A9%5L8is*MdCu$qUh@HK+?6-L5ya>pZ=99vQ9PQMtAt7w4VG>4#zYPmssL=$tL z#U%&Y3qW?VMt5|-yjaSHVHJkLvp_XiByBUW5uu)dA4wx=2zue4UnMLyQ3YGTXw$xh zJ#z)`I(*>u z6ALPr%5?K>33=M`iYRTop~%HONYv@d#ee{QdFwt%^*r)QW6G zk?dbm;|DJlFZjw-d8ft^*EVw1xXKrqsNT@Ww1OKatW_L6GxN5cjr^lF1zl$6D)jM2 zu5`JhA)RZ(Ps)pVn?B>7a`I5pAJX$GynOc$+^Uhg5;E*^x(@+CDi&oCxw(u+b_dteb=w`-z0t&hi0dEqSnyb%3UMpk4<#lh zxgh0(qAu4vc8oVGm{?c|+-c4lPVSNiOng2G+s326(^paQ0Dd4Gr&JZ?-_bZp=yKEYFAgZwdv=?Y2zi3%Bo&*TeC z06Z@ygkxQ4)Q;#k&ps^|VITp7rNg%ItZjxCbvs&!)NGYLtKvm4s!eC22B+@+Da8a^ z)+__yTT0lGQS5O7TpkSMzVSky@y?ZckFe3C(j#s*B5y#btAi5%&;G^Kg?SCUP{|Ya z9U2i7o0o?${|BeN&(83cbB9U)_mJ@ z3@l{y&@@%}S0f%snLZ6jKoU#(#zB0w5*vZ)!Bo9jlE-ke^mimSPQ}#AS3z0Zug&?e zuQFOi|ENn|G}lZ57^WX-TuY@KO&@!szC9Z-4*c*8H{_)yB+KOrLbPEY)T+`p1g@nU zfWx$9*7iKq0+yw&;dpAThvWFZ|Jt!pJKmRB3EK&`i1@X1JIV-cAIG$8j|37 zg4lZFT{5)11JXr|uD9YK8GwgJ8jxyTKi1kw7A$j4tY6h!eJ$B^8Geb>%e}nuhWIQ! zXOeRu?mnodiaLE@L?!eac|!JZhWa)ACGk${{;10G!xy2)Igq1dC5U|XbeBuD5g<|m z+v*svilKd#?|3{&n5Mr!dDS2xppjNh;qx@W&D`F}?K>j{5SlpF`$#$&)({ zp)|U>y0ei4u{!{AxUMB9K5xoHadrhFh`~E=+g&@lu4V^arindGhQ)R|17o7`^rkPv zSPjr0Z}(4{_UO5`2WwPKF5YCA8*Fajs?F1y=zIWFzthY-QlOZTg>u*MfdD;3J^sQLc;CI%&AnRCv!e z6GK?+7EECg8jNT5OTXFKSQ-p9Tp}&F4LGr+4yoP@Mc3by2HOn?M6dj{IPN5Nz}4OT zJ2H1TIRbpQ-rKN#5`EWn5?&3)SP|zVK5Tt_Lkh^6u1uOe%u$A$L8?$9^|jh|8x}(@ ztNEa#rjQdoO|L|!j!wWqT-$nLz^rL`+wBjM&Ie5Nb24&raw$1E31MO13luF6yhsTp z6%|SW0b&#s6zf59j0;#`oKIK0>h!=3oc2r?oo?1ypyOkNk;QL9SxTEV3e+=P1Tb16TyU7XtHPH$ zM-7ryAAco2f0vA%U7hvFFV6{0>|P380yYDIj@Q+vrupt(vDG{u0c$UdMs}^&2JMfP zJJQdgtqEzXALx&%d$lAArXz_}DTkjLd}1}fMt5bvaw!$b(@Sjt9xa9C> zPB7NPjhvGPDSq-T=xz(8Yc??GbFEFcVdC!XIMLg9GMzm$A5!{ zu*n%3EZqkZTYGd&ggQ^+1Nq8wsjWC_zTlO?OAJFvtzA1AU8ket4J`jd79maSSCK0T z+Pc3KDzOoeibN|jkuJ3>nms959bKv5#q$l;qq^wI z2K!#i@_WXoIaP4&a`_GJ?3jN4@x$3n2b_hN81(OXd3yU(C8a}n7#C8{j&#>2`1QUT zLZIw?oA31j#_k=}D{?jptT@_;jz1ltc<6_Xgz`Q@)W*a0=)uuMk|K(T_J5I9kGI3W zWlKxpVFjCQ%a&i_aL-rC^M`x}jd@pA4NNU9{iPg#P&jY#zv1?wfcM4=uu*x4fC(P6 z`&mpRk&B2JpwDWjNf05CTa%56g%^@%)9RbvgtoGcq7f6PLzv9O1FsA z2Vzt(a4xPbiV@6AA>wf-YPursj6Gimp3uqFnfP zg?!&aNQ2rF6eLNncb$h+e={bZ9M_4+)lR8OIv8$tz;cQyq6KbE&R^J&0i^91mV8i_ zy`R`oiFksVo8J-fWx%!n?e(@_6Q)9r=&3%VZ9GT}9);&;y0f}lBo!Y7Sz zzf;x_eDpv&1Btb@m%|oLEu^4sQPz4w%Va><>o`o*A`cT z8(X*{MU&*9=3($DxJ$*%V<^SzrYDKbj&Z7ZJ_2|fqH0Fi=H`34oT(TXBw^pOf8nKB zK9#4LT+#D>%`j8BnXQsl`K^i$%jmInj4*L`qi+Fc+m-f71C8KWPzn(_`5eghi zBULsUd6}x&DPpVQ+i~V?6(waS0&cnY)n&sw=J;1roKrCyu*lMKre{@@eNiwFrAKeh zeGmaHg9xa>mk|~brqg!K6<;p>nz${TMsKZM*Hw*Kiv|ycB19ucOF|$brt=5E=)Nuo z3{iHq%d5`L&Y{A>TubGnxye(iKP|EzB7D5);@NSjaI1LAv3qPxe4QM&Q z;&P;!Kh9Hkubwbu>`=5^!z)^ZAbnJ8z0L_zjuV0|j4Gx#P0c5rFBjbxzK*?zMSyeM zXALc=K~whhi(kGE(XeSox>~Z!&97R=sAMe6ulf`AMsfK@VsRw{(`Id?(Q*H8AXIKS zhh4_N7*|&WLS=%k#bNU5pC7Oh?UmiZd@}=fpb`;+jCM5E3SxfupkA7{rOl5dco7no z+INAAxh&^z*~~`xY|>jzWLUa+!<}#xuSp#LD@H4;vrpazU8~6(UR+$@}){fsqAy*&Vhvx z`WlkQ3f#4@RlO5`#G2VQeJ2TOvNKU%P2>vcfVp1d9SGgK-j&K~G1&T*OLwnB?S=0t zTb}Q>%V~`_e{;-*pQaUME21PTS)M&qZQr>%yIVbYA2n7@+blKXL&)~_$#+2A*x5t> zXrTe~d3O4FJ^E>Bn)GoqE|8uinDP6l(~M{FWUDSV;p2IFVZMU`FDCKjVxEk~DZ&W{cv_(QU1byv zhKswDM^05mD~0{n83eo6xO$fbdQwP#13nf@8hk?eIU#Xfv=)P2%r9_XfFU6gszAz< zRV4Y@3*|RqYIfW;x%G;eCgZ0x|%TuF^YKn4e-GP1aa+Id016qNs{ z>WS3TlP5*YGiXf0+0x-lDH**U-*cQ@+6r}AF`DF@VX}3Ulffj0usXm(k~agkDv6byw%nyU&L0>A}acv&tDRUMB@AU*}+&& zC8{XtPs$UPIP@<%uTN(5lUzU-SA`Vt5pjP*EtCn%{)NaXdc#>bIrF$}-Q3X4#=Mz_ zD=T8Fkd)UPrpbl*P4me+v@Jl6(AH_J@;xZ^Lqo*;eLpa# z_|uX&coWd>HL2=2MV5^?cLo1d|(845VXJ<=&;A2;IaC76iJeW1`a{cfS zJl03}w#G>TZpH=k&u8!xs_dYg*oK_Jm_$}>DJqx)_>6(jE|V1Y6_P+E_4liQu^p}c zg$Js;(+jtPRa8^sYCEUK@N&XQ9O!3qt>L_)aZV2^n;NH|Zo9_cE$cA`l4GX z1n(LsY-K4CpA8j%%S&X+9cpzUS>E*MT2u`~^}acg8?Es7mm_{^ian7Cc$lNsLw6$n zuYQBYL|}Ff(W_8AR+yZa1YV-oqF-%qB3`bp58YX+491O5R}527xTFZ2>3<1?eNLPL z>kbR~5*(;|KcfWfQ`aCqE;(DXg}~nJ*Lu1>cL->ImeMjG4ll-=QbH1Vfqh{N4VyG* z9C9nHFslaQb$_xwPf`0&LEL^USg2fy$VxTZ`1h=O{zg0e%*@RD?(m#~hOgU{n!S2;A-C*>N@4qD$)VtTcenW5)jePotSz>x2}W!a z$jg#^qKUq8&q*G*3@+fiTB-t@pHZ40u;!nn6YWG@>+n4#(p_ zJ)pG%@eFZ?nNpb`4E&(PomXZ|hS~nw>uo1>$-3MI$*c1U4D$ng292W0wVlyi&i$`( zak1aN!9qa&1DNLf(XCdZvHUB1bm9&&N(_wHI713VYvlAGLeYG^4~I~eg*+j$HFt_O zJJ;gmLZMu5KIg6a`zqFx=_&=!1I5|^z5h%UMp4yKv|;aNAP|~77Wu+au7kk7A7Q>> zHo!V=Q=DHlW^=wf&9S$?ADfY3T_u-44$edNXJIx$K@x3kZP3yL!q~!XVQ${YRQAkn zZs`exDy(NA!)9KSBeEP6X#nZbAesq$0&-#B%x(mzSEOIwf5yur+Sxq-1S_HE1Nxs8 zpc6-mP)6<)aYB`FLpw<9805_*K$zsgE5U=+iR~Pp-Q}X%u`n3O5HFj~tsHB$z9EQ& zM+)pTPJU*R^Y%(`U|?L}0HqgFz@_UYE}&Maf(2PA>s=2yLlXbOf!<01C*~aSZB`?B z(3m5M11z>gMlDe;c0lo_@S^D0bgT9yGShs*;Ghf@Ep6Apz{~$b+gpcK*>vHfTL}S? z7Lo2yx;q3Z2?3=Wq@<)90qG9ukQV9g?(QyW>FzqS_4WPU^E>Cd&R^%bkgeNi&og_? z%$hZ8-RoX(aBxQE=61$c(69CPs)sh4mf_JgguUcPi5lEt5PLm??_-EgEJzbgrk>XF z)J-o{U$)PDa>FOO+z_QVoJe8{JFzf2VrdqdKyIubFM~fFZ#SOaV;4TS+D09^9-Pt1t^9}NK5 zKq9XItqqVCm{{O0;7l|!GWtAh1V!8fmZ6jsA`wz_EF?HxJw0Hj`gfI!cs7y50|J8G zJ_8mJnV^j3E3ggKJpMDS6Z1jReU0RpmXBmG=mcm0{HW%`Ls;3_0c9B(BO@ARBqDbb z3O_$T=#7Mg1mOUa+#(1(=`hCgCOrX5V+C0hlN{qy%(QD)2|ul(i`5zC7*-k zl(aB9O-!1`FH<-w{Nk&fqdT;*F%6)u(B&+Cnu6zyy(c{>u2NUylhV`EBf;<|j_G{> z0R&G#Xy6B$Wk=gAqot(<`3%G&PHtjd(04cD^|ea_%j$WV6MG4eM|~Lp99gOSzxJEr z&<0*Tzn&1#=O`%X*>igmmtFcGI_qO_iBU$rBE=R?AAXeza(|#qA*drpWgsCVth?r} zf)O01Nw-k`EHKO0zdPzmA2uDGE*45kLxZTPdA2z8v0PQ(z@P^33Ejq|jNmYM#2%i&3c9>`?3LkDWk|BpNifGzA-^GbJ5Pp`Lv?c}4dFwEKR>;|B) z>SB`5fqmhwHO9d%lyjmZoZ#oD{>p+et+*HwyepnL&{znxIB4mgktrzn-I6Cib_@${ z@WkTn?Jbk>2zmDC2{;binKR-f%7pr96C8cdDtN%ZfP~@!mbJ{VQJIna$8SgHw#G>< z(ALz0|MY9`2WSnSVpETRd3bIPxn2`B=N*#2i08L(xqqnqD`jntzF<=nI1ItY=X zr#Hw2$Jf9+NMwffWB_iJom;@VM8KTT&xj*Ew0#2HKtPfRh)9;bYAw(&-1YpAD1Qxr zXLg}SG}w`SWRA03?LrU2=fcn}-u97)x`SOVih4)LNFV3C^CbRCWW&wJ+Rtq?hKqwN z8r$c(L-!a6mL{AS5W9of^lB~pixj2p_8~Y;q01>jxA?S$Z?({YbC$STb~ObWC?GJ9 z56o?=&r+0YPrxQ{>HzJ`_e$*~FvCSeTs;t85e5C1HwUy-NQu$s`q4<`zYCmn>sAB; zX3hT;4Y+ZT^x+g)hfO5^?_-^CG^XJZ9ugIm`a5Ay2VI>4Hu-87H!Z$wR-;n!<}{E+r2}XC|7bA2Mj0PqpuEg2!+8pQ%{PlN=7I~u414&ewNAh%~E*;=BHOP0_I`~P%kJT z8VZa*pm30?k(uMhM*kVRG;?zCs4#C0c;lb2MsFItB-9>281Zn2)XOlArfP}(z7h^l zpmV)>*n#BN<#pl&vxPU#h!cDeA(?uh2$B?peyU*uZS|mZ8rf?Ywq7PQ{z_E5P4|MP zp5&|5I_z&jrQL~y!N21FiDLA|{Y&v7EaVNNg4)T`RVMp~o>Q%W+r-e1m@z^^Bsq21 zNKWqkV}E7juZ;|K^=o00ZOFR7Cdh^r`uvX6r?L_sy2jgd-@O}ul|Jmm{qfIS0EH5n zfgB$dGk4eYWYBpvm?S)6c`Z^vtP4i#2sT(W@T!CI;`;huB^IMVUH5Z;ANn>t%OBdA zD}>Ti^qPSFq4%bq(?e66XPW4xBu7Z)^xL`jo+?_~1GE_73I2UM7eMJt6>@w7>H;8T zGB8kf!GtUz`RbSY?h5**Q+@O3G|8X&LA9A{-}JT=&nJF8n5APlkE3XZEI^j8p}I z+$}w?x1$4-aeG@mnS*qTko0pZ;0)&HP9lU)4{zV7=%yIo_unj`s zjy(#5hf)R$zy7F`QzcIk<5E+0W4^!l{!h!urI7l$nnw4Fmit=05*he;5%Q<~-@nHy z6Ios)Hd!Lb6}H{0|L*6XUt1m`yEhA5rK#NpmvgCr9n2mrj?4Z({|Ea~ClelSYT-QG14?liDxt88ner3~ zC6vglp&HsVe|sft|E_*0YYoul^s|c&7~m8*h8zFZ!ssF7Lc#@&_)zHkJ8!uj55fVG zKTAE0k9_e1y+dOOlNkFb@$+J61S;?` zR05@E%W-x0r1dn5d#+ngO!D#<{L9CAm|Ca^AFr6Vzui~nSdaK4lq)3TpX3On=&%pM zeo)#qc&VUjY~m)okJd~?{(^R@h_Cuv8**o`Z5~=ROS&i&*B=M-SXR+Io6KnZ430EQ z)l+I3Q9QppMY@#>>yJ?q7D$3{21i<+t=ODFS4kh}iZO*3`8`GtaI1YsrKWx%BxREU zX5d)vjoCOs^1!Q?358c}qbf$3s#>AfrFUNG(vJE3c-t{S#&=}@kK^`J=yAKN<*bHm zYCg=kbTMX4Ej*RJY2=F|Le!P*XxyLKBbV}lUC?>!5e{ByUM_4ghyGHGGoymYDiSoY z;#8L+yT|fgShm%aU2oT($eEjG_4BU#UJJksz;4JA28t0@^@5X4Oh7^p&*Jx#-Vv;o z=3wifZfZ~^b$7xD`FLoE_}~vxw7g_x^(D(S1?x< zw=23Lxj=vrQiI<=%S}UXLP=Qdh(KxvDdALe*cz(Z0j*edKo@dp_A$_68X3kDX$1{H ze|@6|p-^1lz+Lhs;`mmVHUd-{l{&@*$GzLy74F>EOCM=8>!NdrDemD5O~2aoeqsaX zSD6nS`1kDci0+s%p2|&}ez-CLH&VW^DJR(ZhxB$VetHT)W18E@YSDtAEvO2Yv=9Mx zEyzz@g48lXjdY7*ylsVS%R>bTYU~t0F>l4KP19--5MsDyUKGu27^vCPeUGb&=YYCOsuD9A9O=81 zOCq~+m>61=c?N;JX*#*ft2`VJGbG0RRD||t-f_3)6?zaqhLz%u4VGraOVA#}YM!#e zptN<%-GwWDs3|uItcWu~bN?;^@*ODO*9LcTT=45cdLf&4RhPXUFCbkR!Ge>T-f2~6}kaWC2qZuqE9d7HW+9ZBMwRHb8;Mvc*cB{IC3wz$!Q~HWA zLRg6Y_s7K<`fTfBTH7}N9B9YvjjRMd6GJ=+`sIYMVI5DT(a7EQ2651B@ep}{dbTKD z4c?elzdsuZg~BzfR?}!4*8LyVaw)CSTQJ-*0Nf8annrx;?4KkB(ZC0Hcbwr#fx!tC zI;VpPMRu*&K}0-A3WEthH+SR(n1;lHJ0q=_*vhiT4c+9)G;yN6jY-}+@UakHns`65 z`c+42M#0Z8YpNlmD6*0-WUYbGW=bO1gy*%_S>B0FqNV`UU4{*rIZ{0Yy@WW10Pqb$ zuPc5bT!`^c5%C*QU|v8s<7X=u8bC9V@v-ll2N7~1Pior6^Nu*wIV5b#iO+pykJD#l@*X*} z?_=WhMJH$J3VpH1xZfMIEZGeY)OYweq~6D0gGL#v!-#jNdnZXNow#wN_eT-S5s{sF zig3Z|e!yts_fH;pf?kadB~}|FgL?#5fux&kw&jRDFvxfun_&9}9N13v zgaBPt6eV>#bSUat59FBL z)ag7PVUhWE@$NZ@iGj>21Zis)&v!3GQ2m;s{8ub5PacC%(`=t12%JJgZhd{G`Wx%5 zM$9DCjF512omjWScQ>5N`vXI~{wKSZ5#{+O$0HdXfo#GeI0 zE`5Cb7zi8q52wpBULUD1b-!i_ z7#?0(fJp0C1Ay{iH8}wE1}yB@ zULBH~o8%YR97cUhQuD?`Tv&McDUF2?mr&p+%6pjNehGs@$nP_9BzbXpMaoZ)TWY8o zL=)LL>#DBgp#Am%p%iry{YI3?a`%UGvRclx@rqLu3w-Xl&%#ug2OHs7buNomQV4nN z_L!);-Q75KDFmZQD*F-AY}fgX&Vg$Vj7O3&8EP5%B4tXm_vxr&8o}k`wW;jvFp!D& zyDjzTyNzxCoWO2<+XS9^5(^d?MgR*G%AcO*mi|2htFZpm!nbv0U*x?0_urt0gTC#z8!yw%=%Kc zZR2w01~xIBZPmQvzLc>F1w;_|gTymSoErELCzwmPb_fJOZa^$Gt>gzhs6IqZ%kSL^ z!ab|qb&4K+U<+uDHsi_LNMdBf9v?5~jEf9ip|Y|ZwJqJ@4#hrm3k5zbMYm%zMVB)+ zU^v^lzPE)YWfa@r>p(LO8E%e??HWr9m??`;9%CFcl74G8xV0U;?Jc--^)3)x3$w)kBP6JSj^5H`4(}-{dHmB3YjLq)y6Ny^x9F%E6|H^7Pj?fxc8ho#7GXC3TXW;$! zXA`h6VYAtqeWN6pJ-QMRnDw*y+CupAeVn#5z^;MxNCIvp!$C4~PP8`*4h^k(AjrUb ze50$M)F=E_n>g8Fl^-zD;6mQYtA;3PY6Sob;$SC@yQ@L{>g`^k ze7;vcqR0}sUmoo>J|R=^Q5KlQL%vwQE>}J~>{0BTb3dT2Fr9q>l2f0hB!!lZEdlCv z2rVC*{VtaufFJt~v@VofFK>@u95iYHNRQ8~MGbZinJ(6ur*;1Db^Zjy;+1TWI3|oIgh2z%WV@`Zr_hWHE|5x~iik|> z{?V)VY>>}OcTX;C=FnXd@q*i_mggeu4Y5pKTB>UpX%OxvtiE&N*=DgcT-V(`3Q*Xd zMb>{P7;h2578bV zrp&EWnz&RVzXRYw!P+_An1}IhVHW@>3j|ba+Rv*yj#Dd8)XFDPygRpsi=Ro)%zPYz zkx|<}GVpmj6S-i(c~e~2jXU+#U$4^>Y?wk(P_;`Oz@uS5KjG9ha#ocaH27iPK95BX zeTf~AL*qmwey-GV#pamfM+GbE0;FbC{k-vKpRK!I+W2l^BqINccfs|eT&`d?01S#a z%pQYy_UH)Nen9V?Pq8tX+29-6jtoR&lq9cu031005ave^hs|j?91gpv(^3#$Wn?sm z&?hpZSI%<~0Sy4Pm*<>T-qZKDUN*Bi@Nzvvl(fwq#4QtMbQqHgN(SyYmQ=aPFS^oC zJFYc?_U-pYghJ4r??*^pNO?qF8ajP)JL{!TX59FgP_`Gq&@vWgLOT%9Sz&eUj9EK7 zoW+~4Ch~grIG7ce&7t%cPn(nX%Gp8S?3{t2EBv~_ZKuJ!bn3G*=N;JU-TOB_+$n!) ztkX&Xp_yguyjxS!;0}*uZT+C?#G4FFbAST5dQZ$kP7d4M-Hm{NVEHR$-iS4=rUrL& za}&7Of4Mv|iRtlJBI>TcvL+r?A(MxPdJ}WUQ}fc0!gpc6%vjIw^d7W^;(^LIL6qgV zAQ>0}3D@2{HDFIjRs5(5H?7`3eQZ>`sq|*Bs}`C)&HELp8XwrOeAo>q>>xXQa#L`< zJJF@j{fYvhALr~w*+720;duizX%+*(nQ|gK^+qk+iEpP669f$+Rm}*n&lY&r%aC+u z-pr42$8N}coVZ7-*9--48+M_-QW`9)Ip&QQproBIG=t4Nj%AjDV_%aL6PtWvc|BHP z*E~|;d*|$Z?`t6mOexCVa)nK@_JSznAYAOgvfgrs`@_SFjZR>GuXx8h(LuCjJHpsU z@iN}6+>Y6}XrP5mmM*8VS7qDhkZlE5xF4e#&$ga7s9vx&$9txcS`R_t^0>o_|*2rS5U3nt?B9D4uQnVoZ0MbWoof= z%F|@&)nYRHQUErSie+rR8r(zp3pcCIeujj8N)Ixy-)ci3-wGBEWAH!{-x5gT14!$% zW%+FzZ&Q6gv ze#1FlXAm(nBj^Ys^r$8H6^v-({=8N}-ZQh)LZ{g5U>D$-!N>q6LcO`z3K&mr85Ssg>uJ7r*YQ3tTAmjsf% z)yymgjDO#XB|`IS0}jqQ#SW)DX?YKBD3Nh~dOH(7Drn%vhFF$xVo-b)+RbtnmZF)E zSqSZIc?s(58IEt6`MwVcD^J=l^-Z}20aV`b(z%*BO*Ctj)|_#1Nx#lFgLJ<}@Qn7T^<)u{OJGyC2N7A5UzEePrIEGPzT=0c z=Y5EgYOM)YI|P{a!{z`6%gxscmMf>F2lqSk_Acs^t{b<5NuD$~$nfGC82tT9F8Lshvvz__0z$0X8LL}t62sr5oRj&Drs%>0kAxf zv~v_>_}IIf2f7GoW)M$U1h>V)XIgE2_2+ZegLBm^)^6uFGM{wr+Lc`3=lS%krK7Q) z_SGbJu5_$OWHq{f9w;DG{EDSH<`zjSq#pfNefvtZrMMB30K0@`XN=uRq9`5_wzaOf z(2L`&*?D0_XG5CIg-Ia6-MvU}zzS0eJuj=vGgPN|N@_wPRE+cie%2S7?c30Z!Q)MZ zdm^vY;_c2t=QE4|(Tn+$?MthE*JBjjhd3Rp&f9$*BcX4f{^I})&$M4VnWBHIsku-l zB=x!8`5XhqH(P^U?!yNPV`IH^j6B8MhjFAz9-S#SPtINU#UMC7LQbkLK4enFN>iQ@ zaJGcmU!?U^@^n}QJbKkEF&Og|`}n}!#g|Cn=5eyy`fJr$p38~*OG4DUUrhY2gT9yZ zwR^FX>d`S*obbK_p+C8;cJ$R}zqB5sPQ9C)I5q_Pu}cGbh516${l#@511H^%Zsno; zr>Vgt;pXm*p^GQncGoS(6Zeyi7ntU?IT8B;CkTcnTMm1flaAm|&RlgcgX^6_6c(ME zptXa;j=D|l28va!hX2VqD&y+uK=q!w+i+t4c9QW;d%P2WB9HY@F{_1Xn}Km^;8}s3 zkJzg*_K;n7*SG`{3&yjHuS!=rPLth9DNhcQ+%<*GtpZdN zBto5qg;%9nUX=EQcQ(ej2MciC($#IqH}Ox_rffK!%c?Rg5K{`uS{_LgY$A?km;WpL z+}@G%c#T(%j*h1DPWcY93Z$+gQBCec!kR%6pK!)*4ABP38w{ z{FP(phjj-hp$y%Lk@>qxH|<)km?;)t0&G9r3|ibMnN|eWhA=4NF^Co0G{bmV=W*3; z7tHtBPMWVbrIPX9jg{6}R|Qm_6D}vUb~^lWUZmup`pEPHZ^ep&dFz~olhfYP>OdXB z&qZS#!nQJsS#&h{{zKhDT+d|Bc9*?Oy-p5wZBpZ9WbjR|dm?eONe2ciI#Mv)n(PGf zPgE(CAu&=NO_#Bj0cRc(N6AmDp;MPACTY!P_4g-Xwe9Tetb&3|pMsmP!gFU! z85%@can~mB><^vKZw4}c5`Avh?TEJA+=n?Nuf3eh7U<9us0n4bA2xh&acW)oc5(=R z^6Z&4K6dYvUz`8&0~xAzYyJZ{wM87I`gJlK`=vCmSj_g( zj>C#}tKwAMCyeX?woIP8ljgH+l?|6lymu?tH1vIjWBVH(M0d0WW*eh+D-WhhtrNv= zZ(+a$g@h$D9nVERKGYS%C7P@Mn!>s&qq6?Vk?YgV{W2b+US%*G6K0-X=Z2MPw|Kb@ z^Yd6Kc!T39fkFn6hT}kmo+}kS6#Kn}nmo@~$l5?RnVIaxmZ64w>Bpz2(e6*L;WiC7 zKv54)eqKkdkBOz(I3W7|`wGu(4L}BQW`h#5*@~$ZK%|L+&nZY=a&j!|-*q%OF@b0~ zY`ssH6}os!QeifY(3D*7yF9b58$#C27QHaa!OVQ^Btd^8l(9wAp-d++tD6+p_ zs;Y>Soi&@OLIL@aGaTDapm5u>&tvaU+hd5^%@|FVQ)Kd&j~}sH>RMXG&)%Q22t4>! z|1nC$*E{c|7`=<{)~&|rmebS#pPl7(wLkLptD6{Ex0t@DhN-i0O)7UABbfVJeVV(j zqidvSbLp(P@Mq39x{Ey4=B0EwL63UwXxU@d>5`>^vJBbXzHv5BDusl8xI6v@qS(K$ zuAb5xr(yaC9URkzI>!-f#oVt+JofS`D*pX;ZUc;P?638?lcS2|d`^Q8gI(&>ky|0e z7<}%#C8`~w??QsE^sLE3YGYTr`up4TalnX=EDW=4*AO`^nn7;1rekurW*PTg`}Ln9;XE1Urr-UVT`V*yAc+V}pSp`4 zyqiv0cm91V>8#>2#Lml0u9S-F`Pv2Fag(*NxYC>D&5bOL?DG1^M|ZBKtiR^%8&F59 zC%5INX1ABpo!PD3cUSQqxZMT2e`75SUJ6H(Hq)aq?_V!=Ql^D}ZfxiD=%IR}4r--^ z08yfI5q-*{4pC;RmH5Q&$?{5lOjP0GobiDVnBFwv`;syT^9iBC~)8AE57vi zk7-C(7m2P+cu@%R^Xuf|vh)2NqnEJt;B+Mp=`i*A{m;%iHQNYnMjYpb4ZNkv!TJ^+ z-(1L4iLtP$%2u^aVzYKwjMgk)PF)~Zh)8zicxF4q<+@hjTTUjOV&@7~F4u|7d((MY zmlGKzXvL>=m(7>%?XrZ90r90zif@C1LXOPGB|v?1jPtt(Zne$=Wa;S+5%Y5{D+P{b zJdxgIzlUY2$nDAf1&3Dqrp-ae?Dgf5)(wHZ>&;`ABWw2#jdPc9i@Rf2R@Mrs+TCr7 zy)_PoI#ENV^NfvcyaYY#0`msS2EkF68F~(?z(LombcoBjhp)rUvq34RU=$**fyuk8 zgrK0Hk{=mii?ti}%O8URZQP|vh~`V<>g)CP%imY$^WH7qB^SCMq4ykhnqwgNb~eb0 zw8D_jF0SPgT@&7~gt|eR!tcoWOWn!tt+Fmk#?EzjB~>{#4{zxjgFe=}sBuqH&`;GbB%O1 ztiWsiwdslvWLkIWgI4#bZY_g^&hcVycQ381nI+yxJm?VhwzWN{y>k0#vhBFzZ|DI2 zfV?rRr>o1Tu*PQFej3hh=k^O??KLG+>;)oJP_^kHEOya(f2q-MT~Bm;Lblkd&#ZCs z$z=Hk6|4N?jA|V5rl3>a=bO_ z%@`Jlj=#EG@VYTJf0-GQbL>O!qtHO9xhIg)QZW?WEpuL@Qt>w;8=l)8@K|4lm6Njz z0Mw}Xo*}^E;Nr$(gwfK_G#ixal!x>;Mn^=v($XR#wX(gsm?zR*@hQJKihIVTwkYl@ z{J5WP7l4kzNLIUT*i97Dr4zd!a-T=e)AOI)&2p;R26U_|4oq-_@5t!3URf!|U|aV- z;h8Qm-V)DjyzON;9%ErR+8f4nsBbL}-+1PXU%5~f_nr&TOubYfV76JN*H z7`?V&R+JMz1TJz!UZMJ4tD$+}*7vgixX`L16#ypPL`B7lr!kb(6niS@@cczcBeysb zQd3DFqN1W)Ry(VCz>Ho=XtYW-<4vhhmSJWYxx6vtAJ`B$KBVbQcHXqrrfuRKe!^4u z!Dei*dz1|s#qs%Ba9Bc;gpeDdT7k;oqeXYT0ujSG+gRDz=RVEZdzXxr3uS>sd^e9n z2n3{^4LSBQ$Rz`gp?2)gtEAbL8skm*3khNRLi^04@*{5ZLEOix+@@|XB)6#YD=Rx& zD+jQwtqyt;Hik`OFSc7`tt?I(AEHt8Ob)uG_)gxkomn4i(?<`Be=Zz%vly{<*E%uo z>j-#*^Y=VP`dA-SG8AJ-RIplXaDDSGDR9H8y6SX7?ZL0j&86MS#gLC6v#%j;Z0sGF z`)-XXF`7>P!^6eHRG^9-(5Md%W{JX0TkT_TQVD~Cey{r5>eF-rm&|p36H!$vzWe%; zdnr**(QSYT{$sr8zoZZ2n)K@ia|M)OWlHEbovR8D2|;<4I+XSm+OsiDcRdEE%9QdE z+WbM9i1Mi3^|q|c7V40lQZDvsyk&4_rx~JoTsqm;oShki@Rh2?puaLf}}(r_r;$QXHSw7?c;KHrf)3!wZf9ZYLv(S-E*HB zwZkzRzPVLZR`vtjl$$mWe_B=J5D={S;F&k=+UXT5PZjCFfby@vF6gUu0TK=WO3gqL zoc-bsukqJHe`6(|nDsYjp|#c7k;_*Dk1oV#PRU~x=O*9&D|~$=X;fgyVm*7NS2@ds z43jeGJG$9sUJ3KllGCzU-NxQtK~b>-q~XL=bwIUIub5|d3l)pSQe<4^fyup&=B{&0 z%+;a}<7$E}Pi1>I0nKdHcxjv(Ujl=I*`GxWs`pV;nLLaGB`~K<*@5tYF$T1?DLWp0 zOrRxa(CjXJ$HRE&kdKZ1Jnmm$f&!+k*lPMqy=QsVE+|u0H1<`vyo(y+0|m`mxX1fyN)rmep!e{Z9cnFbk!iH`a_53JVM4bKCrifG+R< zT!A0K^lDwQ+}Q^OW?#H~$xzd`y1F{GnELitTJJxe)<0h_d^*2MaQ)XW>Sk@U-0^^R zT@pGvv*8{T*oR=|(W*NBr%_T;X1-B*CGBFs%J}2Q56a*^b>t<>Sb%4yHvv8*vPd1Y zV9}TwT%c%LUZ=}R#bf*v3>8@os8|-&e+V??(8x&1*f?6au`;c}t0e@*K*yY1@Q9bn z)cDP5gSfx@6#jAsYzI0xI5l$bSAUd~!o-o5xTxeSdU|{VzA92H2{;&#a`unT`}(qb zO`XZ3kEGBdCzsgjwd$vw53ltdt*0;#9(lddc!G|uvUJl-jN;rPuk`Q1gx(W0WTiqu zu3Q}39~5*EQ}Y6J`c-hylh1h8f3W};;Qz?UjYP8kJjt)?tCWWndiBm6JymN1x@YQv zyb@Riim}?%eMJ_qmA%zt@BfGt%$C3m!7M*@JH=e@s8#a11synmxYQqp71jZNmyd`n zQe}Hu_iwW@e7vM3u4GGOG|_J%fVaaSnq)u~~nS^fwx8Kv*48J|4hpVp1NlY!@D;t+Dmu@5JjO zRUlRniT3^io6DX0w?WV|@{Y2xr+*F6KN6@8gAUYxu96+R)hwGQf z9~>U(C8rwDy$Rc@yk$ZcVifg#P^_#r;b3n*b|SBt`i1J2s>Uf+SJczOoa*2jAA`Eq zhBxvJFNY;0yIYp=?%r+!B5vR93mLH`LC`XaoVNf3N}mqZ43;PqYFQ2wrt@X@j4u6 zLTYVIC(3Hzqg^IKWACc;wnZ}Pz(#F9N<4A_9b))DmA?Fm#US= zSsd1~{?+`5>t+s7v^AzWq{I}=ZL6;=$X+myP=WinrqK;?NhCq>8ad|uca#^9{zGhvO z&oWfm0x0v5I0q$#j~`!#3fyr*LlGDg;{SfOKoR;bpt>)PD#86)JrY;!)CYULZG5#W zWNN=dJdM7Q)$Dd9lkzP$%YSK)gcJp}z;j&xT^)&j2w1LwJ7c(W63vSUE0vn=Bn zpGezM6YEImd7sc$vQt25wn4nTLV*Zw_-{FpVOOytd+BwC4A0K?J`%VP3J3^@uCn`g z5KAK1SXmDe7H=roF))dlN07sH(w5NE!sQ^ykp!(fO-1B7B^z`fzJ5TD!>?YQf9HSi z&GFobSA2Anwue2VpBIT?N_KLAcI#wdyFTWHzk%p~1LkKMn|;5+=rYx(3-~Yt5?) zllRskv87!z)k$Mf*4rwP;tOvj%qJCC$L)tS=7mI^9w@F+)GyP34mGW6uU}C2gYs{s z7K{9fg__bTD$hZ79k4`KYyc?bAIK^g_GOG<(Zfp@V9Je-jfvRWvVlwQHq1lDGieax z&|Vwz$(G0G_RFJCOhVp}?&LSGCa#&LOBhadx+wJfr(Z2~C=TFne$!jjiCAn*+I$t4 z+HCHLPE7Zx^4gQFPiBs5Gj>Z2@$3{c2wS@z|7*+}Nib>sJqeK#sD0&77CJ#s zq$7spxG9skCxuk1q3rk5jCWvR%MHWo<#+XjfHlwFyvA*03!+`(#ESUs!tUncp<38h z{;g2_bsH_%!5?($YRdtc+K5kVN2c~DIOi#NakY!m0~fx*$tuDV)_RTA;WJ~aqpKXI zk<`c#EhS+SA#UbY+XdmPGc5y%`*aAy*6Rq55=6U|YlHh8 z5if9ar_}f)*E{IcOPjDn??Nzl_$R#B_UCL@TArponE8S7sVp$Z%(6i9c3f;~@)w!0 zWKy>30UIf^km`~8Mv?8^2Pl_B<0^Gi7VWBaw{xS zX{T9T<3f1tOtoyA9iQoBTyk0@?R9Ea`S&oN=b4c|<`{7csti5X=}{H?@cJrfqv`V8 z4k9~^T|j3e<0O5Pl=}3-k8zAz;ua%`=8R zJS0V)AkZ09SuDF2Xf)#xJ5S2!Pi&v~*xOmaQ0yAtHC+_^u_ViJ-?u)I&mq<%#n+bS z1+|UlyrDWPE>MBYJ9repklWfC0y+T(l~+(s4n5^+EE{;V)6>0(?hbsRXIY;8I%~}} zF;etohh;=Se04F^$uFv+qN2Wbb?ZjxxQY&_xi056_{C&oWK5?)Gff8vj9M2h&j6WJ za@l-W7Xpee+1bTmCsB4*mXE+?q(Jk^VV{at%3!DaO{Y5}FK=H=%klg--?RDYWEv>6jLlY`yyreCBU+?Uv%a8IFT1u%0D_@ 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 literal 0 HcmV?d00001 From 3ef379ae454227ed4662b9b37917d23223dc7605 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Wed, 27 May 2026 12:11:30 +0300 Subject: [PATCH 14/17] fix: increase z-index for overlay in Filters component --- adminforth/spa/src/components/Filters.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adminforth/spa/src/components/Filters.vue b/adminforth/spa/src/components/Filters.vue index 017fff156..d6ca14c22 100644 --- a/adminforth/spa/src/components/Filters.vue +++ b/adminforth/spa/src/components/Filters.vue @@ -159,7 +159,7 @@ -
From 73a5be685bc35014d94bcf2b77abc60c0db84952 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Fri, 29 May 2026 15:54:10 +0300 Subject: [PATCH 15/17] fix: fix close dialog logic --- adminforth/spa/src/afcl/Dialog.vue | 106 ++++++++++++++--------------- adminforth/spa/src/afcl/Modal.vue | 9 ++- 2 files changed, 58 insertions(+), 57 deletions(-) diff --git a/adminforth/spa/src/afcl/Dialog.vue b/adminforth/spa/src/afcl/Dialog.vue index 21f6377f0..d61303858 100644 --- a/adminforth/spa/src/afcl/Dialog.vue +++ b/adminforth/spa/src/afcl/Dialog.vue @@ -77,6 +77,56 @@ interface DialogButton { options?: Record } +const modalRef = ref(); + +const props = withDefaults(defineProps(), { + header: '', + headerCloseButton: true, + buttons: () => [], + clickToCloseOutside: false, + closeByEsc: true, + closeByClickOutside: true, + beforeCloseFunction: null, + beforeOpenFunction: null, + closable: false, + askForCloseConfirmation: false, + closeConfirmationText: 'Are you sure you want to close this dialog?', + removeFromDomOnClose: false, +}) + +const buttons = computed(() => { + if (props.buttons && props.buttons.length > 0) { + return props.buttons; + } + return [ + { + label: 'Close', + onclick: (dialog: any) => { + tryToHideModal(); + }, + options: {} + } + ]; +}); + + +function open() { + modalRef.value.open(); +} + +function close() { + modalRef.value.close(); +} + +defineExpose({ + open: open, + close: close, + tryToHideModal: tryToHideModal, +}) + +function tryToHideModal() { + modalRef.value?.tryToHideModal(); +} interface DialogProps { /** @@ -114,7 +164,7 @@ interface DialogProps { /** * Function that will be called before the dialog is closed. */ - beforeCloseFunction?: (() => void | Promise) | null + beforeCloseFunction?: (() => void | Promise) | null /** * Function that will be called before the dialog is opened. @@ -167,58 +217,4 @@ const dialog: Ref = ref( ); /*************************************************************/ - - -const modalRef = ref(); - -const props = withDefaults(defineProps(), { - header: '', - headerCloseButton: true, - buttons: () => [], - clickToCloseOutside: false, - closeByEsc: true, - closeByClickOutside: true, - beforeCloseFunction: null, - beforeOpenFunction: null, - closable: false, - askForCloseConfirmation: false, - closeConfirmationText: 'Are you sure you want to close this dialog?', - removeFromDomOnClose: false, -}) - -const buttons = computed(() => { - if (props.buttons && props.buttons.length > 0) { - return props.buttons; - } - return [ - { - label: 'Close', - onclick: (dialog: any) => { - tryToHideModal(); - }, - options: {} - } - ]; -}); - - -function open() { - modalRef.value.open(); -} - -function close() { - modalRef.value.close(); -} - -defineExpose({ - open: open, - close: close, - tryToHideModal: tryToHideModal, -}) - -function tryToHideModal() { - modalRef.value?.tryToHideModal(); -} - - diff --git a/adminforth/spa/src/afcl/Modal.vue b/adminforth/spa/src/afcl/Modal.vue index 4df4acbda..099751ce8 100644 --- a/adminforth/spa/src/afcl/Modal.vue +++ b/adminforth/spa/src/afcl/Modal.vue @@ -68,7 +68,7 @@ const removeFromDom = computed(() => { interface DialogProps { closeByClickOutside?: boolean closeByEsc?: boolean - beforeCloseFunction?: (() => void | Promise) | null + beforeCloseFunction?: (() => void | Promise) | null beforeOpenFunction?: (() => void | Promise) | null askForCloseConfirmation?: boolean closeConfirmationText?: string @@ -101,7 +101,12 @@ async function open() { async function close() { if (props.beforeCloseFunction) { - await props.beforeCloseFunction?.(); + console.log('Running before close function'); + const isContinue = await props.beforeCloseFunction?.(); + console.log('Before close function completed, isContinue:', isContinue); + if (isContinue === false) { + return; + } } isModalOpen.value = false; } From 50b3a06fb6dcda95a14b22f2f5fa1b9c4865d4c8 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Fri, 29 May 2026 15:57:29 +0300 Subject: [PATCH 16/17] fix: rename --- adminforth/spa/src/afcl/Modal.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/adminforth/spa/src/afcl/Modal.vue b/adminforth/spa/src/afcl/Modal.vue index 099751ce8..f41845b64 100644 --- a/adminforth/spa/src/afcl/Modal.vue +++ b/adminforth/spa/src/afcl/Modal.vue @@ -101,10 +101,8 @@ async function open() { async function close() { if (props.beforeCloseFunction) { - console.log('Running before close function'); - const isContinue = await props.beforeCloseFunction?.(); - console.log('Before close function completed, isContinue:', isContinue); - if (isContinue === false) { + const shouldClose = await props.beforeCloseFunction?.(); + if (shouldClose === false) { return; } } From 230b7f2a6f58a2c4f307bd47f46f5ac243a285b5 Mon Sep 17 00:00:00 2001 From: Maksym Pipkun Date: Mon, 1 Jun 2026 17:11:00 +0300 Subject: [PATCH 17/17] feat: support multiple groupBy rules and add count_distinct operation across data connectors --- adminforth/dataConnectors/baseConnector.ts | 35 +++++++--- adminforth/dataConnectors/clickhouse.ts | 29 +++++---- adminforth/dataConnectors/mongo.ts | 56 +++++++++------- adminforth/dataConnectors/mysql.ts | 74 ++++++++++++---------- adminforth/dataConnectors/postgres.ts | 27 ++++---- adminforth/dataConnectors/sqlite.ts | 55 ++++++++++------ adminforth/modules/operationalResource.ts | 2 +- adminforth/modules/restApi.ts | 27 ++++++-- adminforth/types/Back.ts | 23 ++++--- 9 files changed, 200 insertions(+), 128 deletions(-) diff --git a/adminforth/dataConnectors/baseConnector.ts b/adminforth/dataConnectors/baseConnector.ts index 0879767d3..39bcb4777 100644 --- a/adminforth/dataConnectors/baseConnector.ts +++ b/adminforth/dataConnectors/baseConnector.ts @@ -16,6 +16,7 @@ import { afLogger } from '../modules/logger.js'; type AdminForthFilterNode = IAdminForthSingleFilter | IAdminForthAndOrFilter; type AdminForthFilterInput = AdminForthFilterNode | AdminForthFilterNode[]; +type AggregateGroupByInput = IGroupByRule | IGroupByRule[] | undefined; type AdminForthFilterNormalizationResult = { ok: boolean; error: string; @@ -286,18 +287,26 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon resource: AdminForthResource, filters: IAdminForthAndOrFilter, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule, + groupBy?: AggregateGroupByInput, }): Promise> { throw new Error('getAggregateWithOriginalTypes() not implemented for this connector.'); } + normalizeGroupByRules(groupBy?: AggregateGroupByInput): IGroupByRule[] { + return groupBy ? (Array.isArray(groupBy) ? groupBy : [groupBy]) : []; + } + + getGroupByResultAlias(groupBy: IGroupByRule, index: number, total: number): string { + return groupBy.as ?? (total === 1 ? 'group' : `group${index + 1}`); + } + private validateAggregateParams( resource: AdminForthResource, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule, + groupBy?: AggregateGroupByInput, ): void { const VALID_ALIAS = /^[a-zA-Z_][a-zA-Z0-9_]*$/; - const VALID_OPERATIONS = ['sum', 'count', 'avg', 'min', 'max', 'median']; + const VALID_OPERATIONS = ['sum', 'count', 'count_distinct', 'avg', 'min', 'max', 'median']; const VALID_TRUNCATIONS = ['day', 'week', 'month', 'year']; const VALID_TIMEZONE = /^[a-zA-Z_\/\-\+0-9]+$/; const columnNames = new Set(resource.dataSourceColumns.map(c => c.name)); @@ -323,11 +332,14 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon } } - if (groupBy) { - if (groupBy.type === 'field') { - assertColumn(groupBy.field, 'GroupBy.Field'); - } else if (groupBy.type === 'date_trunc') { - const g = groupBy as IGroupByDateTrunc; + for (const groupByRule of this.normalizeGroupByRules(groupBy)) { + if (groupByRule.type === 'field') { + assertColumn(groupByRule.field, 'GroupBy.Field'); + if (groupByRule.as && !VALID_ALIAS.test(groupByRule.as)) { + throw new Error(`Invalid groupBy alias "${groupByRule.as}". Must match ${VALID_ALIAS}`); + } + } else if (groupByRule.type === 'date_trunc') { + const g = groupByRule as IGroupByDateTrunc; assertColumn(g.field, 'GroupBy.DateTrunc'); if (!VALID_TRUNCATIONS.includes(g.truncation)) { throw new Error(`Invalid truncation "${g.truncation}". Must be one of: ${VALID_TRUNCATIONS.join(', ')}`); @@ -335,8 +347,11 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon if (g.timezone && !VALID_TIMEZONE.test(g.timezone)) { throw new Error(`Invalid timezone "${g.timezone}". Must be a valid IANA timezone name`); } + if (g.as && !VALID_ALIAS.test(g.as)) { + throw new Error(`Invalid groupBy alias "${g.as}". Must match ${VALID_ALIAS}`); + } } else { - throw new Error(`Unknown groupBy type "${(groupBy as any).type}"`); + throw new Error(`Unknown groupBy type "${(groupByRule as any).type}"`); } } } @@ -345,7 +360,7 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon resource: AdminForthResource, filters: IAdminForthAndOrFilter, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule, + groupBy?: AggregateGroupByInput, }): Promise> { this.validateAggregateParams(resource, aggregations, groupBy); diff --git a/adminforth/dataConnectors/clickhouse.ts b/adminforth/dataConnectors/clickhouse.ts index 5c8333a69..f714a5b06 100644 --- a/adminforth/dataConnectors/clickhouse.ts +++ b/adminforth/dataConnectors/clickhouse.ts @@ -451,16 +451,19 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth resource: AdminForthResource; filters: IAdminForthAndOrFilter; aggregations: { [alias: string]: IAggregationRule }; - groupBy?: IGroupByRule; + groupBy?: IGroupByRule | IGroupByRule[]; }): Promise > { const tableName = `${this.dbName}.${resource.table}`; const selectParts: string[] = []; - let groupExpr: string | null = null; + const groupExprs: string[] = []; + const groupByRules = this.normalizeGroupByRules(groupBy); - if (groupBy?.type === 'date_trunc') { - const g = groupBy as IGroupByDateTrunc; + for (const [index, groupByRule] of groupByRules.entries()) { + let groupExpr: string; + if (groupByRule.type === 'date_trunc') { + const g = groupByRule as IGroupByDateTrunc; const tz = g.timezone ?? 'UTC'; const field = `toTimeZone(${g.field}, '${tz}')`; @@ -471,18 +474,18 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth case 'week': groupExpr = `toDate(toStartOfWeek(${field}))`; break; case 'year': groupExpr = `toDate(toStartOfYear(${field}))`; break; } - - selectParts.push(`${groupExpr} AS \`group\``); - - } else if (groupBy?.type === 'field') { - const g = groupBy as IGroupByField; + } else { + const g = groupByRule as IGroupByField; groupExpr = `${g.field}`; - selectParts.push(`${groupExpr} AS \`group\``); + } + groupExprs.push(groupExpr); + selectParts.push(`${groupExpr} AS \`${this.getGroupByResultAlias(groupByRule, index, groupByRules.length)}\``); } for (const [alias, rule] of Object.entries(aggregations)) { switch (rule.operation) { case 'count': selectParts.push(`count() AS \`${alias}\``); break; + case 'count_distinct': selectParts.push(`uniqExact(${rule.field}) AS \`${alias}\``); break; case 'sum': selectParts.push(`sum(${rule.field}) AS \`${alias}\``); break; case 'avg': selectParts.push(`avg(${rule.field}) AS \`${alias}\``); break; case 'min': selectParts.push(`min(${rule.field}) AS \`${alias}\``); break; @@ -495,8 +498,8 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth let query = `SELECT ${selectParts.join(', ')} FROM ${tableName} ${where}`; - if (groupExpr) { - query += ` GROUP BY ${groupExpr} ORDER BY ${groupExpr} ASC`; + if (groupExprs.length) { + query += ` GROUP BY ${groupExprs.join(', ')} ORDER BY ${groupExprs.join(', ')} ASC`; } const result = await this.client.query({ @@ -664,4 +667,4 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth } } -export default ClickhouseConnector; \ No newline at end of file +export default ClickhouseConnector; diff --git a/adminforth/dataConnectors/mongo.ts b/adminforth/dataConnectors/mongo.ts index 602608c50..2ad7f0926 100644 --- a/adminforth/dataConnectors/mongo.ts +++ b/adminforth/dataConnectors/mongo.ts @@ -310,22 +310,26 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS resource: AdminForthResource; filters: IAdminForthAndOrFilter; aggregations: { [alias: string]: IAggregationRule }; - groupBy?: IGroupByRule; + groupBy?: IGroupByRule | IGroupByRule[]; }): Promise> { const collection = this.client.db().collection(resource.table); const match = filters?.subFilters?.length ? this.getFilterQuery(resource, filters) : {}; + const groupByRules = this.normalizeGroupByRules(groupBy); let groupId: any = null; - - if (groupBy?.type === 'field') { - const g = groupBy as IGroupByField; - groupId = `$${g.field}`; + if (groupByRules.length) { + groupId = {}; } - - if (groupBy?.type === 'date_trunc') { - const g = groupBy as IGroupByDateTrunc; + for (const [index, groupByRule] of groupByRules.entries()) { + const alias = this.getGroupByResultAlias(groupByRule, index, groupByRules.length); + if (groupByRule.type === 'field') { + const g = groupByRule as IGroupByField; + groupId[alias] = `$${g.field}`; + continue; + } + const g = groupByRule as IGroupByDateTrunc; const tz = g.timezone ?? 'UTC'; const dateTruncSpec: any = { date: `$${g.field}`, @@ -335,7 +339,7 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS if (g.truncation === 'week') { dateTruncSpec.startOfWeek = 'Mon'; } - groupId = { $dateTrunc: dateTruncSpec }; + groupId[alias] = { $dateTrunc: dateTruncSpec }; } const groupStage: Record = { @@ -345,6 +349,7 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS for (const [alias, rule] of Object.entries(aggregations)) { switch (rule.operation) { case 'count': groupStage[alias] = { $sum: 1 }; break; + case 'count_distinct': groupStage[alias] = { $addToSet: `$${rule.field}` }; break; case 'sum': groupStage[alias] = { $sum: { $toDouble: `$${rule.field}` } }; break; case 'avg': groupStage[alias] = { $avg: { $toDouble: `$${rule.field}` } }; break; case 'min': groupStage[alias] = { $min: { $toDouble: `$${rule.field}` } }; break; @@ -364,23 +369,26 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS pipeline.push({ $project: { _id: 0, - group: !groupBy ? "$$REMOVE" : (groupBy.type === 'date_trunc' ? { - $cond: { - if: { $eq: [{ $type: "$_id" }, "date"] }, - then: { - $dateToString: { - format: "%Y-%m-%d", - date: "$_id", - timezone: (groupBy as IGroupByDateTrunc).timezone ?? 'UTC' - } - }, - else: "$_id" - } - } : "$_id"), + ...Object.fromEntries(groupByRules.map((groupByRule, index) => { + const alias = this.getGroupByResultAlias(groupByRule, index, groupByRules.length); + return [alias, groupByRule.type === 'date_trunc' ? { + $cond: { + if: { $eq: [{ $type: `$_id.${alias}` }, "date"] }, + then: { + $dateToString: { + format: "%Y-%m-%d", + date: `$_id.${alias}`, + timezone: (groupByRule as IGroupByDateTrunc).timezone ?? 'UTC' + } + }, + else: `$_id.${alias}` + } + } : `$_id.${alias}`]; + })), ...Object.fromEntries( Object.keys(groupStage) .filter(k => k !== '_id') - .map(k => [k, `$${k}`]) + .map(k => [k, aggregations[k]?.operation === 'count_distinct' ? { $size: `$${k}` } : `$${k}`]) ), }, }); @@ -521,4 +529,4 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS } } -export default MongoConnector; \ No newline at end of file +export default MongoConnector; diff --git a/adminforth/dataConnectors/mysql.ts b/adminforth/dataConnectors/mysql.ts index a1ff3b089..9150d02a6 100644 --- a/adminforth/dataConnectors/mysql.ts +++ b/adminforth/dataConnectors/mysql.ts @@ -345,30 +345,34 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS resource: AdminForthResource; filters: IAdminForthAndOrFilter; aggregations: { [alias: string]: IAggregationRule }; - groupBy?: IGroupByRule; + groupBy?: IGroupByRule | IGroupByRule[]; }): Promise> { const tableName = resource.table; const selectParts: string[] = []; const medianFields: { alias: string; field: string }[] = []; - let groupExpr: string | null = null; - - if (groupBy?.type === 'field') { - groupExpr = `\`${groupBy.field}\``; - selectParts.push(`${groupExpr} AS \`group\``); - } else if (groupBy?.type === 'date_trunc') { - const g = groupBy as IGroupByDateTrunc; - const tz = g.timezone ?? 'UTC'; - if (!/^[A-Za-z0-9/_+\-]+$/.test(tz)) { - throw new Error(`Invalid timezone value: ${tz}`); - } - const innerExpr = `COALESCE(CONVERT_TZ(\`${g.field}\`, 'UTC', '${tz}'), \`${g.field}\`)`; - switch (g.truncation) { - case 'day': groupExpr = `DATE_FORMAT(${innerExpr}, '%Y-%m-%d')`; break; - case 'month': groupExpr = `DATE_FORMAT(${innerExpr}, '%Y-%m-01')`; break; - case 'year': groupExpr = `DATE_FORMAT(${innerExpr}, '%Y-01-01')`; break; - case 'week': groupExpr = `DATE_FORMAT(DATE_SUB(${innerExpr}, INTERVAL WEEKDAY(${innerExpr}) DAY), '%Y-%m-%d')`; break; + const groupExprs: string[] = []; + const groupAliases: string[] = []; + const groupByRules = this.normalizeGroupByRules(groupBy); + + for (const [index, groupByRule] of groupByRules.entries()) { + let groupExpr: string; + if (groupByRule.type === 'field') { + groupExpr = `\`${groupByRule.field}\``; + } else { + const g = groupByRule as IGroupByDateTrunc; + const tz = g.timezone ?? 'UTC'; + const innerExpr = `COALESCE(CONVERT_TZ(\`${g.field}\`, 'UTC', '${tz}'), \`${g.field}\`)`; + switch (g.truncation) { + case 'day': groupExpr = `DATE_FORMAT(${innerExpr}, '%Y-%m-%d')`; break; + case 'month': groupExpr = `DATE_FORMAT(${innerExpr}, '%Y-%m-01')`; break; + case 'year': groupExpr = `DATE_FORMAT(${innerExpr}, '%Y-01-01')`; break; + case 'week': groupExpr = `DATE_FORMAT(DATE_SUB(${innerExpr}, INTERVAL WEEKDAY(${innerExpr}) DAY), '%Y-%m-%d')`; break; + } } - selectParts.push(`${groupExpr} AS \`group\``); + const groupAlias = this.getGroupByResultAlias(groupByRule, index, groupByRules.length); + groupExprs.push(groupExpr); + groupAliases.push(groupAlias); + selectParts.push(`${groupExpr} AS \`${groupAlias}\``); } for (const [alias, rule] of Object.entries(aggregations)) { @@ -376,6 +380,7 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS switch (rule.operation) { case 'sum': selectParts.push(`SUM(${f}) AS \`${alias}\``); break; case 'count': selectParts.push(`COUNT(*) AS \`${alias}\``); break; + case 'count_distinct': selectParts.push(`COUNT(DISTINCT ${f}) AS \`${alias}\``); break; case 'avg': selectParts.push(`AVG(${f}) AS \`${alias}\``); break; case 'min': selectParts.push(`MIN(${f}) AS \`${alias}\``); break; case 'max': selectParts.push(`MAX(${f}) AS \`${alias}\``); break; @@ -389,10 +394,10 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS // Run non-median aggregations let rows: AggRow[] = []; - const hasNonMedian = selectParts.length > (groupExpr ? 1 : 0); + const hasNonMedian = selectParts.length > groupExprs.length; if (hasNonMedian) { let query = `SELECT ${selectParts.join(', ')} FROM \`${tableName}\` ${where}`; - if (groupExpr) query += ` GROUP BY ${groupExpr} ORDER BY ${groupExpr} ASC`; + if (groupExprs.length) query += ` GROUP BY ${groupExprs.join(', ')} ORDER BY ${groupExprs.join(', ')} ASC`; dbLogger.trace(`πŸͺ²πŸ“œ MySQL AGG Q: ${query} values: ${JSON.stringify(filterValues)}`); const [result] = await this.client.execute(query, filterValues); rows = result as AggRow[]; @@ -404,18 +409,20 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS const nullGuard = where ? `${where} AND ${f} IS NOT NULL` : `WHERE ${f} IS NOT NULL`; let medianQuery: string; - if (groupExpr) { + if (groupExprs.length) { + const groupSelect = groupExprs.map((expr, index) => `${expr} AS \`${groupAliases[index]}\``).join(', '); + const groupColumns = groupAliases.map(alias => `\`${alias}\``).join(', '); medianQuery = ` - SELECT \`group\`, AVG(${f}) AS \`${alias}\` + SELECT ${groupColumns}, AVG(${f}) AS \`${alias}\` FROM ( - SELECT ${groupExpr} AS \`group\`, ${f}, - ROW_NUMBER() OVER (PARTITION BY ${groupExpr} ORDER BY ${f}) AS rn, - COUNT(*) OVER (PARTITION BY ${groupExpr}) AS cnt + SELECT ${groupSelect}, ${f}, + ROW_NUMBER() OVER (PARTITION BY ${groupExprs.join(', ')} ORDER BY ${f}) AS rn, + COUNT(*) OVER (PARTITION BY ${groupExprs.join(', ')}) AS cnt FROM \`${tableName}\` ${nullGuard} ) t WHERE rn IN (FLOOR((cnt + 1) / 2.0), CEIL((cnt + 1) / 2.0)) - GROUP BY \`group\` - ORDER BY \`group\` ASC + GROUP BY ${groupColumns} + ORDER BY ${groupColumns} ASC `; } else { medianQuery = ` @@ -434,13 +441,14 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS const [medianResult] = await this.client.execute(medianQuery, filterValues); const medianRows = medianResult as AggRow[]; - if (groupExpr) { + if (groupExprs.length) { + const groupKey = (row: AggRow) => groupAliases.map(alias => String(row[alias])).join('\u0000'); if (rows.length === 0) { - rows = medianRows.map((r) => ({ group: r.group, [alias]: r[alias] })); + rows = medianRows.map((r) => ({ ...Object.fromEntries(groupAliases.map(groupAlias => [groupAlias, r[groupAlias]])), [alias]: r[alias] })); } else { - const byGroup = new Map(medianRows.map((r) => [String(r.group), r[alias]])); + const byGroup = new Map(medianRows.map((r) => [groupKey(r), r[alias]])); for (const row of rows) { - row[alias] = byGroup.get(String(row.group)) ?? null; + row[alias] = byGroup.get(groupKey(row)) ?? null; } } } else { @@ -557,4 +565,4 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS } } -export default MysqlConnector; \ No newline at end of file +export default MysqlConnector; diff --git a/adminforth/dataConnectors/postgres.ts b/adminforth/dataConnectors/postgres.ts index 75a7a13d7..d86c8b85e 100644 --- a/adminforth/dataConnectors/postgres.ts +++ b/adminforth/dataConnectors/postgres.ts @@ -388,14 +388,17 @@ class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDa resource: AdminForthResource, filters: IAdminForthAndOrFilter, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule, + groupBy?: IGroupByRule | IGroupByRule[], }): Promise> { const tableName = resource.table; const selectParts: string[] = []; - let groupExpr: string | null = null; + const groupExprs: string[] = []; + const groupByRules = this.normalizeGroupByRules(groupBy); - if (groupBy?.type === 'date_trunc') { - const g = groupBy as IGroupByDateTrunc; + for (const [index, groupByRule] of groupByRules.entries()) { + let groupExpr: string; + if (groupByRule.type === 'date_trunc') { + const g = groupByRule as IGroupByDateTrunc; const tz = g.timezone ?? 'UTC'; const col = resource.dataSourceColumns.find(c => c.name === g.field); const hasTZ = (col as any)?._baseTypeDebug?.includes('with time zone'); @@ -404,17 +407,19 @@ class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDa : `"${g.field}" AT TIME ZONE 'UTC' AT TIME ZONE '${tz}'`; const fieldExpr = `DATE_TRUNC('${g.truncation}', ${innerExpr})`; groupExpr = `TO_CHAR(${fieldExpr}, 'YYYY-MM-DD')`; - selectParts.push(`${groupExpr} AS "group"`); - } else if (groupBy?.type === 'field') { - const g = groupBy as IGroupByField; + } else { + const g = groupByRule as IGroupByField; groupExpr = `"${g.field}"`; - selectParts.push(`${groupExpr} AS "group"`); + } + groupExprs.push(groupExpr); + selectParts.push(`${groupExpr} AS "${this.getGroupByResultAlias(groupByRule, index, groupByRules.length)}"`); } for (const [alias, rule] of Object.entries(aggregations)) { switch (rule.operation) { case 'sum': selectParts.push(`SUM("${rule.field}") AS "${alias}"`); break; case 'count': selectParts.push(`COUNT(*) AS "${alias}"`); break; + case 'count_distinct': selectParts.push(`COUNT(DISTINCT "${rule.field}") AS "${alias}"`); break; case 'avg': selectParts.push(`AVG("${rule.field}") AS "${alias}"`); break; case 'min': selectParts.push(`MIN("${rule.field}") AS "${alias}"`); break; case 'max': selectParts.push(`MAX("${rule.field}") AS "${alias}"`); break; @@ -425,8 +430,8 @@ class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDa const { sql: where, values: filterValues } = this.whereClauseAndValues(resource, filters); let query = `SELECT ${selectParts.join(', ')} FROM "${tableName}" ${where}`; - if (groupExpr) { - query += ` GROUP BY ${groupExpr} ORDER BY ${groupExpr} ASC`; + if (groupExprs.length) { + query += ` GROUP BY ${groupExprs.join(', ')} ORDER BY ${groupExprs.join(', ')} ASC`; } dbLogger.trace(`πŸͺ²πŸ“œ PG AGG Q: ${query}, params: ${JSON.stringify(filterValues)}`); @@ -536,4 +541,4 @@ class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDa } } -export default PostgresConnector; \ No newline at end of file +export default PostgresConnector; diff --git a/adminforth/dataConnectors/sqlite.ts b/adminforth/dataConnectors/sqlite.ts index 496d7ef0f..212152bc0 100644 --- a/adminforth/dataConnectors/sqlite.ts +++ b/adminforth/dataConnectors/sqlite.ts @@ -349,26 +349,29 @@ class SQLiteConnector extends AdminForthBaseConnector implements IAdminForthData resource: AdminForthResource, filters: IAdminForthAndOrFilter, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule, + groupBy?: IGroupByRule | IGroupByRule[], }): Promise> { const tableName = resource.table; const where = this.whereClause(filters); const filterValues = this.getFilterParams(filters); + const groupByRules = this.normalizeGroupByRules(groupBy); - if (!groupBy || groupBy.type === 'field') { + if (groupByRules.every(g => g.type === 'field')) { const selectParts: string[] = []; - let groupExpr: string | null = null; + const groupExprs: string[] = []; - if (groupBy?.type === 'field') { - const g = groupBy as IGroupByField; - groupExpr = `"${g.field}"`; - selectParts.push(`${groupExpr} AS "group"`); + for (const [index, groupByRule] of groupByRules.entries()) { + const g = groupByRule as IGroupByField; + const groupExpr = `"${g.field}"`; + groupExprs.push(groupExpr); + selectParts.push(`${groupExpr} AS "${this.getGroupByResultAlias(groupByRule, index, groupByRules.length)}"`); } for (const [alias, rule] of Object.entries(aggregations)) { switch (rule.operation) { case 'sum': selectParts.push(`SUM("${rule.field}") AS "${alias}"`); break; case 'count': selectParts.push(`COUNT(*) AS "${alias}"`); break; + case 'count_distinct': selectParts.push(`COUNT(DISTINCT "${rule.field}") AS "${alias}"`); break; case 'avg': selectParts.push(`AVG("${rule.field}") AS "${alias}"`); break; case 'min': selectParts.push(`MIN("${rule.field}") AS "${alias}"`); break; case 'max': selectParts.push(`MAX("${rule.field}") AS "${alias}"`); break; @@ -377,17 +380,13 @@ class SQLiteConnector extends AdminForthBaseConnector implements IAdminForthData } let query = `SELECT ${selectParts.join(', ')} FROM ${tableName} ${where}`; - if (groupExpr) query += ` GROUP BY ${groupExpr} ORDER BY ${groupExpr} ASC`; + if (groupExprs.length) query += ` GROUP BY ${groupExprs.join(', ')} ORDER BY ${groupExprs.join(', ')} ASC`; dbLogger.trace(`πŸͺ²πŸ“œ SQLITE AGG Q: ${query}, params: ${JSON.stringify(filterValues)}`); return this.client.prepare(query).all([...filterValues]); } - const g = groupBy as IGroupByDateTrunc; - const timezone = g.timezone ?? 'UTC'; - const col = resource.dataSourceColumns.find(c => c.name === g.field); - const underlineType = col?._underlineType ?? 'varchar'; - - const neededFields = new Set([g.field]); + const neededFields = new Set(); + for (const groupByRule of groupByRules) neededFields.add(groupByRule.field); for (const rule of Object.values(aggregations)) { if (rule.field) neededFields.add(rule.field); } @@ -397,19 +396,34 @@ class SQLiteConnector extends AdminForthBaseConnector implements IAdminForthData const rawRows: any[] = this.client.prepare(rawQuery).all([...filterValues]); const groups = new Map(); + const groupValues = new Map>(); for (const row of rawRows) { - const key = this._dateGroupKey(row[g.field], underlineType, g.truncation, timezone); + const values: Record = {}; + for (const [index, groupByRule] of groupByRules.entries()) { + const alias = this.getGroupByResultAlias(groupByRule, index, groupByRules.length); + if (groupByRule.type === 'date_trunc') { + const g = groupByRule as IGroupByDateTrunc; + const col = resource.dataSourceColumns.find(c => c.name === g.field); + values[alias] = this._dateGroupKey(row[g.field], col?._underlineType ?? 'varchar', g.truncation, g.timezone ?? 'UTC'); + } else { + values[alias] = row[(groupByRule as IGroupByField).field]; + } + } + const key = JSON.stringify(values); if (!groups.has(key)) groups.set(key, []); + if (!groupValues.has(key)) groupValues.set(key, values); groups.get(key)!.push(row); } - const results: Array<{ group: string, [key: string]: any }> = []; + const results: Array<{ [key: string]: any }> = []; for (const [groupKey, rows] of groups) { - const result: { group: string, [key: string]: any } = { group: groupKey }; + const result: { [key: string]: any } = { ...groupValues.get(groupKey) }; for (const [alias, rule] of Object.entries(aggregations)) { - const nums = rule.field ? rows.map(r => Number(r[rule.field!] ?? 0)) : []; + const values = rule.field ? rows.map(r => r[rule.field!]).filter(v => v !== null && v !== undefined) : []; + const nums = values.map(v => Number(v)); switch (rule.operation) { case 'count': result[alias] = rows.length; break; + case 'count_distinct': result[alias] = new Set(values).size; break; case 'sum': result[alias] = nums.reduce((s, v) => s + v, 0); break; case 'avg': result[alias] = nums.reduce((s, x) => s + x, 0) / nums.length; break; case 'min': result[alias] = Math.min(...nums); break; @@ -427,7 +441,8 @@ class SQLiteConnector extends AdminForthBaseConnector implements IAdminForthData results.push(result); } - return results.sort((a, b) => a.group.localeCompare(b.group)); + const sortAliases = groupByRules.map((rule, index) => this.getGroupByResultAlias(rule, index, groupByRules.length)); + return results.sort((a, b) => sortAliases.map(alias => String(a[alias]).localeCompare(String(b[alias]))).find(result => result !== 0) ?? 0); } async getDataWithOriginalTypes({ resource, limit, offset, sort, filters, columns }): Promise { @@ -532,4 +547,4 @@ class SQLiteConnector extends AdminForthBaseConnector implements IAdminForthData } } -export default SQLiteConnector; \ No newline at end of file +export default SQLiteConnector; diff --git a/adminforth/modules/operationalResource.ts b/adminforth/modules/operationalResource.ts index 50e85c986..fd4da9ad6 100644 --- a/adminforth/modules/operationalResource.ts +++ b/adminforth/modules/operationalResource.ts @@ -64,7 +64,7 @@ export default class OperationalResource implements IOperationalResource { async aggregate( filter: IAdminForthSingleFilter | IAdminForthAndOrFilter | Array, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule + groupBy?: IGroupByRule | IGroupByRule[] ): Promise> { return this.dataConnector.aggregate({ resource: this.resourceConfig, diff --git a/adminforth/modules/restApi.ts b/adminforth/modules/restApi.ts index 81c1f58e0..c1eb65229 100644 --- a/adminforth/modules/restApi.ts +++ b/adminforth/modules/restApi.ts @@ -1569,18 +1569,17 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { const aggregateRequestSchema: AnySchemaObject = { type: 'object', - $defs: commonFilterSchemaDefs, required: ['resourceId', 'aggregations'], properties: { resourceId: { type: 'string' }, aggregations: { type: 'object', - description: 'Map of alias β†’ aggregation rule. Each rule has an "operation" (sum, count, avg, min, max, median) and an optional "field".', + description: 'Map of alias β†’ aggregation rule. Each rule has an "operation" (sum, count, count_distinct, avg, min, max, median) and an optional "field".', additionalProperties: { type: 'object', required: ['operation'], properties: { - operation: { type: 'string', enum: ['sum', 'count', 'avg', 'min', 'max', 'median'] }, + operation: { type: 'string', enum: ['sum', 'count', 'count_distinct', 'avg', 'min', 'max', 'median'] }, field: { type: 'string' }, }, additionalProperties: false, @@ -1588,7 +1587,16 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { }, filters: commonFiltersSchema, groupBy: { - description: 'Optional grouping rule. Either { type: "field", field: "col" } or { type: "date_trunc", field: "col", truncation: "day"|"week"|"month"|"year", timezone?: "IANA/Name" }.', + description: 'Optional grouping rule or array of grouping rules.', + anyOf: [ + { $ref: '#/$defs/aggregateGroupByRule' }, + { type: 'array', items: { $ref: '#/$defs/aggregateGroupByRule' } }, + ], + }, + }, + $defs: { + ...commonFilterSchemaDefs, + aggregateGroupByRule: { anyOf: [ { type: 'object', @@ -1596,6 +1604,7 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { properties: { type: { type: 'string', enum: ['field'] }, field: { type: 'string' }, + as: { type: 'string' }, }, additionalProperties: false, }, @@ -1607,6 +1616,7 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { field: { type: 'string' }, truncation: { type: 'string', enum: ['day', 'week', 'month', 'year'] }, timezone: { type: 'string' }, + as: { type: 'string' }, }, additionalProperties: false, }, @@ -1681,9 +1691,12 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { try { const userTimeZone = headers['X-TimeZone']; - const aggregateGroupBy = groupBy?.type === 'date_trunc' && userTimeZone - ? { ...groupBy, timezone: userTimeZone } - : groupBy; + const applyUserTimeZone = (groupByRule: any) => groupByRule?.type === 'date_trunc' && userTimeZone + ? { ...groupByRule, timezone: userTimeZone } + : groupByRule; + const aggregateGroupBy = Array.isArray(groupBy) + ? groupBy.map(applyUserTimeZone) + : applyUserTimeZone(groupBy); const data = await this.adminforth.connectors[resource.dataSource].aggregate({ resource, diff --git a/adminforth/types/Back.ts b/adminforth/types/Back.ts index 5e4af7546..d1e1034e6 100644 --- a/adminforth/types/Back.ts +++ b/adminforth/types/Back.ts @@ -402,7 +402,7 @@ export interface IAdminForthDataSourceConnector { resource: AdminForthResource, filters: IAdminForthAndOrFilter, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule, + groupBy?: IGroupByRule | IGroupByRule[], }): Promise>; } @@ -448,7 +448,7 @@ export interface IAdminForthDataSourceConnectorBase extends IAdminForthDataSourc resource: AdminForthResource, filters: IAdminForthAndOrFilter, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule, + groupBy?: IGroupByRule | IGroupByRule[], }): Promise>; } @@ -1847,8 +1847,8 @@ export interface AdminForthConfig extends Omit IAdminForthSingleFilter; export interface IAggregationRule { - operation: 'sum' | 'count' | 'avg' | 'min' | 'max' | 'median'; - /** Required for sum, avg, min, max, median. Omit for count. */ + operation: 'sum' | 'count' | 'count_distinct' | 'avg' | 'min' | 'max' | 'median'; + /** Required for sum, count_distinct, avg, min, max, median. Omit for count. */ field?: string; } @@ -1858,11 +1858,15 @@ export interface IGroupByDateTrunc { truncation: 'day' | 'week' | 'month' | 'year'; /** IANA timezone name, e.g. 'Europe/Kyiv'. Optional, defaults to UTC. */ timezone?: string; + /** Output key for this grouping. Defaults to "group" for a single groupBy, or group1/group2/... for multiple. */ + as?: string; } export interface IGroupByField { type: 'field'; field: string; + /** Output key for this grouping. Defaults to "group" for a single groupBy, or group1/group2/... for multiple. */ + as?: string; } export type IGroupByRule = IGroupByDateTrunc | IGroupByField; @@ -1873,6 +1877,7 @@ export type IGroupByRule = IGroupByDateTrunc | IGroupByField; export class Aggregates { static sum(field: string): IAggregationRule { return { operation: 'sum', field }; } static count(): IAggregationRule { return { operation: 'count' }; } + static countDistinct(field: string): IAggregationRule { return { operation: 'count_distinct', field }; } static avg(field: string): IAggregationRule { return { operation: 'avg', field }; } static min(field: string): IAggregationRule { return { operation: 'min', field }; } static max(field: string): IAggregationRule { return { operation: 'max', field }; } @@ -1889,16 +1894,16 @@ export class GroupBy { * @param truncation 'day' | 'week' | 'month' | 'year' * @param timezone IANA timezone name, e.g. 'Europe/Kyiv'. Defaults to 'UTC' when omitted. */ - static DateTrunc(field: string, truncation: 'day' | 'week' | 'month' | 'year', timezone?: string): IGroupByDateTrunc { - return { type: 'date_trunc', field, truncation, timezone }; + static DateTrunc(field: string, truncation: 'day' | 'week' | 'month' | 'year', timezone?: string, as?: string): IGroupByDateTrunc { + return { type: 'date_trunc', field, truncation, timezone, as }; } /** * Group by raw field value. The field value is returned as-is in the `group` key. * @param field Column name to group by */ - static Field(field: string): IGroupByField { - return { type: 'field', field }; + static Field(field: string, as?: string): IGroupByField { + return { type: 'field', field, as }; } } @@ -2002,7 +2007,7 @@ export interface IOperationalResource { aggregate: ( filter: IAdminForthSingleFilter | IAdminForthAndOrFilter | Array, aggregations: { [alias: string]: IAggregationRule }, - groupBy?: IGroupByRule + groupBy?: IGroupByRule | IGroupByRule[] ) => Promise>; create: (record: any) => Promise<{ ok: boolean; createdRecord: any; error?: string; }>;