From 1c3841cc52ab911da8a34b5fdf0aa4cd23997e92 Mon Sep 17 00:00:00 2001 From: gadgethd <111318106+gadgethd@users.noreply.github.com> Date: Thu, 6 Aug 2026 13:04:39 +0000 Subject: [PATCH] chore(website): spring-clean public pages --- PLAN-spring-clean-2026-08-06.md | 88 +++++++ SPRING-PAGES-2026-08-06.md | 82 +++++++ SPRING-PAGES-2026-08-06.png | Bin 0 -> 126761 bytes frontend/src/config/publicRoutes.ts | 9 - frontend/src/main.tsx | 2 - frontend/src/pages/StatusPage.tsx | 256 -------------------- frontend/src/pages/network-intelligence.css | 51 ---- frontend/src/pages/shared/SiteLayout.tsx | 3 - frontend/src/pages/ukmesh/UKLayout.tsx | 1 - frontend/test/e2e/accessibility.spec.ts | 16 -- frontend/test/e2e/mobile.spec.ts | 14 -- frontend/test/e2e/public.spec.ts | 26 +- 12 files changed, 171 insertions(+), 377 deletions(-) create mode 100644 SPRING-PAGES-2026-08-06.md create mode 100644 SPRING-PAGES-2026-08-06.png delete mode 100644 frontend/src/pages/StatusPage.tsx diff --git a/PLAN-spring-clean-2026-08-06.md b/PLAN-spring-clean-2026-08-06.md index 08f0b2c..d398ea3 100644 --- a/PLAN-spring-clean-2026-08-06.md +++ b/PLAN-spring-clean-2026-08-06.md @@ -171,3 +171,91 @@ start from the live state. visible`). The report/evidence commit follows this append; no GitHub push. - **Evidence:** `SPRING-MAPFEED-2026-08-06.png` shows the live map with a real message-first feed card and compact secondary metadata. + +## Wave 3 investigation and implementation design — items 10/12/14 (2026-08-06) + +### Item 10 — observation register: resolved by absence + +The frontend route table contains the public pages `/`, `/install`, `/stats`, +`/feed`, `/repeater`, `/companion`, `/docs`, `/open-source`, `/spam`, +`/topology`, and `/login`, plus redirects for `/regions`, `/about`, `/mqtt`, +and `/status`; it contains no `/register` or `/observations` page. The navigation +has no observation/register entry. A case-insensitive search of `frontend/src` +found only data/UI uses of “observations” in topology, packet detail, feed path +models, and map statistics, plus the observer-station registration form embedded +in `UKCompanionPage`; none is a dedicated observation register page. Stats, +repeater search, and owner portal are ordinary existing pages with no hidden +observation-register route. Per the item definition, this is resolved by absence; +no page was invented or changed. + +### Item 12 — Spam Watch: keep + +Live host baseline at `http://127.0.0.1:3000/api/spam/messages/status` returned +HTTP 200 JSON: +`{"ongoing":false,"activeIncidents":0,"totalIncidents":0,"messagesLast24h":0,"observersInvolved":0,"lastIncidentAt":null,"updatedAt":"2026-08-06T12:49:27.141Z"}`. +The companion request used by the page, +`/api/spam/messages/incidents?limit=200`, also returned HTTP 200 JSON with +`filters` (`status: all`, `minConfidence: 0.5`, `limit: 200`, `offset: 0`), +`returned: 0`, and an empty `incidents` array. A Googlebot Playwright run against +`https://ukmesh.com/spam` observed HTTP 200 JSON for both page API requests, +rendered the `Spam Watch` heading and `No ongoing spam detected`, and rendered +no alert. This is a useful, live transparency page even when the current result +is an empty/clean state, so it will remain unchanged unless final verification +finds a regression. + +### Item 14 — Health page removal: designed frontend-only + +Remove `frontend/src/pages/StatusPage.tsx`; remove its lazy import and element, +the `health` route component type, `/health` content route, and the obsolete +`/status -> /health` redirect. Remove `showHealth` from `SiteLayout` and its +`/health` navigation item, and remove the now-unused `showHealth` prop from +`UKLayout`. The separate `healthcheck.ukmesh.com` external link and the +`~/ukmesh/meshcore-health-check` application are explicitly out of scope and +will not be touched. Acceptance evidence is a zero-result `rg -F '/health' +frontend` search plus a public browser assertion that `/health` renders the +normal not-found state and no Health nav entry, while `/spam` retains its clean +live state. + +No backend change is planned. After implementation, run the required frontend +quality gates, build both real-tagged images, compare their shipped bundles, +deploy only the services whose bundle changed, and then perform the required +health/HopReach/API/browser checks before recording the screenshot, digests, and +local commit below. + +## Wave 3 completion — items 10/12/14 (2026-08-06) + +- **[DONE] Item 10 — observation register:** resolved by absence. The route + manifest and nav have no `/register` or `/observations` page; the frontend + search found only ordinary observation data fields and the embedded observer + station registration form. No page was invented. +- **[DONE] Item 12 — Spam Watch:** kept. Host curl returned HTTP 200 with + `ongoing: false`, zero active/total incidents, zero messages in the last 24h, + zero observers involved, and a current `updatedAt`; the incidents endpoint + returned HTTP 200 with a valid empty list. Googlebot Playwright against the + live public URL received HTTP 200 JSON for both requests and rendered the + heading plus `No ongoing spam detected` with no alert. +- **[DONE] Item 14 — Health page removal:** deleted `StatusPage.tsx`, its lazy + route wiring, `/health` manifest entry, `/status -> /health` redirect, nav + item/flag, unused status CSS, and stale E2E page checks. Direct `/health` + page-link searches in `frontend` are empty. The external Health Check link + and separate health-check app remain out of scope. +- **Quality gates:** frontend `npx tsc --noEmit`, `npm test` (77/77), + `npm run lint:css`, and `npm run build` all pass. No backend files changed. +- **Deployment:** built both `spring-pages` tags. The new not-found marker was + present in both asset sets, so `app-ukmesh` and `website-ukmesh` were both + deployed; no backend service was changed. Final app digest: + `sha256:5f278c9796c67402c644961555feb8a52c4ee6eb4cc1f41c94b9b79276c80b55`; + final website digest: + `sha256:56885f493cca824e2e7cb7ce6cda7b08748747762b00ffa84bdfb9432db9e67b`. + `.env` changed only `APP_IMAGE` and `WEBSITE_IMAGE`; `BACKEND_IMAGE` and + secret lines were untouched. +- **Live verification:** `/api/health` was healthy, HopReach returned 200, + `/health` and `/status` rendered the normal not-found state with no exact + Health nav link, and `/spam` rendered its live clean state with both API calls + at HTTP 200 and no alert. The SPA fallback returns document HTTP 200 for + unknown routes; the rendered not-found state proves the page route is gone. +- **Evidence:** `SPRING-PAGES-2026-08-06.png` contains the real Googlebot + captures for the removed `/health` state and retained `/spam` state. Summary: + `SPRING-PAGES-2026-08-06.md`. +- **Local commit:** to be recorded after the final scoped commit; no GitHub + push. diff --git a/SPRING-PAGES-2026-08-06.md b/SPRING-PAGES-2026-08-06.md new file mode 100644 index 0000000..2111b05 --- /dev/null +++ b/SPRING-PAGES-2026-08-06.md @@ -0,0 +1,82 @@ +# UKMesh Spring Pages — 2026-08-06 + +Scope: items 10, 12, and 14 on `/home/ben/ukmesh/meshcore-analytics`, branch +`main`. The separate `~/ukmesh/meshcore-health-check` application was not +modified. No GitHub push was performed. + +## Decisions + +### Item 10 — observation register: resolved by absence + +There is no dedicated observation-register page. The `PUBLIC_ROUTES` manifest +contains no `/register` or `/observations` route, and the site navigation has no +observation/register entry. A case-insensitive `rg` search across `frontend/src` +found only ordinary observation data labels and models in topology, stats, +packet detail, feed paths, and map statistics, plus the observer-station +registration form embedded in `UKCompanionPage`. Stats, repeater search, and +owner portal have no hidden register page. No page was invented or changed. + +### Item 12 — Spam Watch: kept + +The live host endpoint returned HTTP 200 and a valid page-shaped payload: + +```json +{"ongoing":false,"activeIncidents":0,"totalIncidents":0,"messagesLast24h":0,"observersInvolved":0,"lastIncidentAt":null,"updatedAt":"2026-08-06T12:49:27.141Z"} +``` + +The page’s incidents request, `/api/spam/messages/incidents?limit=200`, also +returned HTTP 200 with `minConfidence: 0.5`, `limit: 200`, `returned: 0`, and an +empty `incidents` array. A Googlebot Playwright check of the real public URL +observed HTTP 200 JSON for both requests, rendered `Spam Watch` and +`No ongoing spam detected`, and rendered no alert/error element. The page is a +useful transparency surface in this valid clean state, so no Spam code change +was necessary. + +### Item 14 — Health page: removed + +Removed the page module, lazy import, route component/type, `/health` content +route, obsolete `/status -> /health` redirect, `showHealth` prop, Health nav +entry, unused UK layout flag, page-specific status CSS, and stale E2E page +fixtures/assertions. Direct page-link searches for `/health` in `frontend` +return no results. The external `https://healthcheck.ukmesh.com` Health Check +link remains intentionally because it belongs to the separate application. + +## Quality and deployment + +- `cd frontend && npx tsc --noEmit` — passed. +- `cd frontend && npm test` — 77/77 passed. +- `cd frontend && npm run lint:css` — passed. +- `cd frontend && npm run build` — passed; only existing large-chunk warnings. +- Built both requested tags: `meshcore-analytics-app:spring-pages` and + `meshcore-analytics-website:spring-pages`. +- The new not-found marker was present in both shipped asset sets, so both + `app-ukmesh` and `website-ukmesh` bundles changed and both were deployed. + No backend image/service was changed. +- Final deployed image IDs: + - app: `sha256:5f278c9796c67402c644961555feb8a52c4ee6eb4cc1f41c94b9b79276c80b55` + - website: `sha256:56885f493cca824e2e7cb7ce6cda7b08748747762b00ffa84bdfb9432db9e67b` +- `.env` was updated only for `APP_IMAGE` and `WEBSITE_IMAGE`; `BACKEND_IMAGE` + and secret/configuration lines were left unchanged. + +## Live verification + +- `GET http://127.0.0.1:3000/api/health` — HTTP 200, `status: healthy`. +- `GET http://127.0.0.1:3000/hopreach/api/nodes` — HTTP 200. +- Googlebot Playwright against `https://ukmesh.com/health` — the SPA transport + returned 200, but the rendered page was the normal `That page is not on the + mesh` not-found state and the exact `Health` nav link count was zero. +- Googlebot Playwright against `https://ukmesh.com/status` — same normal + not-found state; no legacy redirect to the removed Health page. +- Googlebot Playwright against `https://ukmesh.com/spam` — document HTTP 200; + status and incidents API responses HTTP 200 with JSON content type; heading + and clean state visible; alert count zero. + +The browser emitted the same pre-existing unauthenticated owner-session and +service-worker MIME console noise seen in the pre-deploy baseline; neither +affected page data loading or rendered state. Evidence image: +[SPRING-PAGES-2026-08-06.png](./SPRING-PAGES-2026-08-06.png). + +## Local commit + +Implementation and evidence were committed locally after verification. No +remote push was attempted. diff --git a/SPRING-PAGES-2026-08-06.png b/SPRING-PAGES-2026-08-06.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7068f8f85b2c8580405fae16b4fbb562bbb738 GIT binary patch literal 126761 zcmd?RS6GwH*Ei~814Nn#2vQWJ2m;bODAEy7dPk-APQXx9n$nB(5JY-!h7d{+kP<0D zI)o(B0)*ZYTHr(f<^A@_KG;Y5y52d;y6>6E%&b{uezVs7>4mO3)eV*#mo8nR($rAV zzjW!^?4?UrYsoKPJn>-UD86)w_L8Q`Q^P>eI-26$?eW~l+p^6S$M6=%V&Eq5xvTS`*%qpKG~_;;~1yYpv2|1QRrX952F92 zE}8su)&75|>dXJz|4_^$2wGjWrZ6%BEIbR}GD_}aN_07!Nwi3jncX*xWcla!-o2mg z#DJV8CWv@tTidHyn^D8c;|E7on8ZBT^hZk>+jWA?;j;tf_z)-hEHRVHkPz1{#kxW= zo3PXC1^7Mpme}pI3YUMadG%uopEBBOQ21$wEktzAeiDT>J3EALJLfrIPCLokK?Mxf zvXZlalk&vQk3qQX_O@Da?LgjdzT+DLSk^Ckg4N}u<>iU$@?Rfo&=%}AF#Nb=;W6*l zDG7W!cTHK2qd8>h_?OMov2i6cA`$pA>U;^aJ6s<<0d%_hPMF#V1KCR#%91Mk?jq0! zan^jm?gN`8B!pXF12;AjuPc+^i5zGm6#>AR+Tt~40Vkd~Fye*~nV`a9HL=R@n;%hTPWZ-U+%w9FwmbJVB(T;tV zR3(Q!B+VR9ZE7dOzZD)3DraG=}H1r=eY%{x$@d)gO5<9Sxu zG$6hEMX3E?+COoy4wO!oGx5!Buu>+K!}4q;;H0}qxE8&=qAiRKz>D*L_U=iEb{wdb zs0my#`q=+>Ut99nG|g!v9QM6biq}Zdo4}R9I@E`3Jj@>V@|;oVPVsW+U<TyBTCn;>XCc*x{VcTv|@v) zzg4)K>^_UlFbPKY^`e2a*qmYiry=mD{hi1?-Wx#2#Wc z-2J=8?X&k5T9)lN|E}Qg-NQErpP55!8(h17rd43?-mx7}{;uP!Q&{BS4e{1K-@e4{ z-%&Ys?b)!V^CL%VnNmszA-MY-XqCZeDahdmI%x6t5Wq&R00nCfo+HtOdg}Uv2fy;r z@vp3VOhbWP0yS-64}u-oBRuVO&CV8DGIVPm_H#aTTpKb8Jvgk0R&2Ne8-4^|I0G{2 z@*~+cRk0YOc3V=jiR9!#Ns5$Eh;vtV@cpWg$1-XVwkY!RuYOU=FFaYwO!b0Dt-oCWgh}hy<8t%#QtoSDd(xnl7`&E{I!lFzX_MdF0DoPH!qWrD#1`t5 z5L=R{buS(QkoP)wmk7FM+^~HR=<}naWzEJW%%OzTAJ^A%;7B9P3g>ePB_m-7=zZTx3v>*`}p9w0^4G`NWo> zm8qGr^_$VC_4ukmonE|TJ9MsK^iB3c6{;@gRStZcz%9mW6f1K-*J@Cm;P!R_0tLj$ zD8I1sUqchIG6vGK;)W*ZgagL}Mj0E}$K4j}5$cM4{oD*sWK7 z;6H^S;>$#g8*}nPPOf?9a1O-_cs@5?KO#)+u+Qj4q_^!6x>D6cm+TtAQ;p}J7C#P= z<>1;*p^FnY*R4bPNn3t#pT{h{M-$tj;zp?XM7@gI)k%0zU+BzS*ru%kAC62|`0ghy zCx_GBaQb$YV@%stddd1^LNy+W*W(Gqu#L#u4`QtuqicF-6#e_T{FksT=R-k|PHHa7 zX<}#-;ggN0Q}fi03l5)ERQ3hD*A?wy2GLxXEzE9vi|!}lJ}n9I)j1QI99PWF}x$X?9ZtG^Cla8x^7WU}tx2PQEn6&tGh407miJE4^1cVV;|QFb@=HUX zBu3}#oi0ZXGjShP7ycX|ir&|8FlYrHo#MOlVhmxiG;xha=#~&F$(MTjOPSqQWwr56 zt6_g_4}N(Q@Tb-s4&YoQ_YrS})9zP}R!bRYxwKh7t`iE4uL@(~uv&-J1z|&X zB@OB@*9RPSJ@X~jfrQ4^ROe)~G~bB!yExM8?r>!B2bRwGHAidH2D>q@`&pWOWfwUU$hSuZCfG&FRt}jqLW8`6!9xb-3cWKb)KiE(Dwxhkr zH|~5KkpqXm9&9y`saw=B=Q|Yy?H%4(U>VS62RhGb&|EXK-bl%tw3ge;TB2$5i(q$z zC21oJ+PxE95w{uw(-fgUTc;J}tJOcY4+!d{wRxi^ink*f4Q{)kzZJNe<=1kg6j2Je zc?Kljd?^ysu8S}su;r{-EzH;oFAlRSbp~`HC#u^vzAfm^?h6aUH^$TY!x{vbqvViv zpDZ)IH@oC_Z-{o-WR$we#HZwv7t6_W z96>Wnv@JZ`dd!F|`lC@-{r0@vt+qyI>94n|ZO&(cTs?z>$fvEi3IeZiVILrp4XpY$ zZv0|OgV(uuX!_jm9Ws%WDha(Cj?M`^$JHtpoJPYv@~Q%|LzuAkkF zdxLZr1?(hlX{gz;ZYhOg1;v&JY`*Q5&4K5Fv^iRVBdc6meH5`C{9bNBONjBrc36Y( z0r>4m8(<7v5H6K0u@dk{uyCj>|HmT|GAN4C|9Fv7Ym-VbemV_-o zZ_N;n7urop^F6pZ0@N#+P$1J~B6vFuFOvsxT2-ERs^>Tn^90#`?M;@F5c9Bj;sM0V z#V#W)js_fhvw|ciPk$%>aU{+*%RPlM6}I3dlAI9Vy&)yeI9Ve>N>K}FE1zM1g~g1) zR>~2SfMo`dtdl)x%AUxjc;A|go0Ah=MQt=-wfB~h1O=3Ms9&FL?Ei3ZT zJ?i7THDcQG_$ZvKu>D!x~YK2GUsU==-|Fcf!ZK2(Y~YNgVjr;S2dI#X<$bDtgTR zt8IEp7EWv)0$YJ=pzv!^GI%IdU(7{Ad+>wH_(Wo-%F{v6;uQBuvVx%9;EJlwxRh{a zQZU0*8{rq$^OpLJR^k{vtSAg#@_ZepFiQ9Zv?>%)67%Q!^|HMtUzJtwn(>F%io*;B9Lsy)eKNPNJXAM82#+78{X{e!Z*^2Xd-pS6V15kPy(@tis_ z&TdN#_vpzF^*0K~i?VfdirdGdHG^4anRiNA5Dm?*9E>Iq-C(Sjis?YZ<|p3%a)ZQP zmSxgg;t5TSWm;S@#ZKfLoTTBgVOjCk=C1wF_=~FCjjOlZ0#{cTlj0MglCzD4Zc#7x zCQdKY*Ks{}<##ZlN!*b+p2tHF>Y-CMA^KuRxr^VclR-%nGbo4R>hATmu!Dgds?KX6 zlYMU%BXTl~+b!C;Du=!m!|7cv+y~Dmraf(EQiD3~{pqGgI!j)K&T1%(;U0y%gExAuzaDwWeV@dk&pn*_@jbBg7?IQfjs5b);C!_&&xlvy2}k^{N|mb~_`ZdXKtMh>8nCedTmP#E<2$lBywy5C&1rIIprTY9%|SV z?_45LQTAKANy~z5eP>-+x2R?CavdA(<_G%$b*aCOm-DjZ*Oug}-pHFw>DM$y_RR2p z8VI6MN@Yd!P=}aLOJLsXs*JNKS%`2!e$i9|RV%F}oLQ-*<2I=R@e*ZpdCsbNY45X$ zHS7s*P*|YOI$opP9XIA(Sp9Z8Qid1k>Qa@OetKH8I~$#@1Uax|3+u@sBPQ6?vF8l&4Z$&Wl&XO;)JLW;%HQ?4n6=0DmCrf2vI zD!xN*#fk(YECXHQJ_XI$>dlTqc0teHs}Mp^_yq}wXoXh|YX8^M(fvroYx0EV!K#kP z0;UJguW@(LfV?09@v{$Z`m?&Mwv;@g{B?Waky!iW(ykxDK!fp9p9?z)71b>lFzJpp z02JnL4o(Kd!`?1~spO(OwW5z{AWc6CBO05`pWW&+H4*M4Auj0`GkEAI)o!N3{N<=O zXMv@m*bYD_>aoLa2iMjHYnFp@6C!L3_JDbm87|8L`4UJU+8RQ3OugyGawfEa$KT{c zV4ju9kIwJk;AN7NNiAKQO6S@vGUKrWfq;_n&x4;4IcEJHh^x0==W@Rm#8N+q*};@s zVB|=Y`7e@m6-lDpqvxqb9G3vZ=@(*@p}&^g15~NH{UlUxK+zd`@Y{Dqezo9sTB8ipc=&emR=*cDfiU}OTWT< zxIk!3q})Aa9n@WRBPmbtTJ$oJ-)Q+&!SXH0j(pcd2& zjVPmA+WmP>e&54+Z`2ix!2d{4626|9yQ@Wg6rAiFw^DsTGhWSM6|u*WvtY9z4d{DW zL;di6ynkBR*d+rB%7_!d?wohWy(SFZY6KtAqY%Ib+3xU$Eo; zVZ-wdK^?;lyAjC{2j}9h#>YW(zo5YWWLlrMFVvhkXlh{FVE^7N88PnoDPN#L7_oR6 zWBDRf&)sLDN0ZW%{w(y}0}h`ZT#d03lr*6E+Nz+sx$MPua0Zp%`DO+fWt9dpi27zY z1k*Xx#{CF#>+;o8Jiukm@dDa`hQ}Utsjxs9L2I_$faF_5zvdp`m7E*Yan0bu@RAI^ zAYQ_HcT$pcY)4?Y=-BG`JRVTu@Pt-~Lcgq{e;ITB8|_;jx$=E#;Z|QNz;EF`v6MCH zL)To|?YZNp3a2y&9~_~qK*E6E^DJYLo8J~7kh=mCkLY^iGE-@at=`rgI@j)WLGI> z9tCCF@JWn09Okvv?@TE86$ka`<+QA(s_6_sQMP!hkuQh@RizsV1SExiNhnNv{W1X;?cd=qjD4sp^I55_Q>~Fx>U@0; zr4~<7WG*GYb2{X`^wj92uV0vC$_iYXIl(s|t7_IvGB94fq{K%LbG&=A0b0-dP2gj8 zpz}WD7QYhYTG`p4Yo4hmhsiMlEQWaPF<4V+xuYT)x{vXgZ1z{8E%`iDk(*O;R{9S( zhU$;o<;86IQ^sDG5Y2;VK#g_UQv~_I#M=43UCvNCosiR$-yI+rR@B%{8zc&n;v9po zv-#h>`@^o@K`7H&jCcAbWD8{-7VvJd!Gc&nhYH^eX@_k!FI8Ai2YmB1ydmnk(T1$D z0Q#=3etJ=YD`jnvcBGtae|tW!nt1wp;VJOd7%Kf|k*js+TpkiE`<}h6ei-J#7;CVe zaQ-vC*^UT8!lIDo*ItIMHLQVKTwmMc%Y|3`{2KG#vg~_Z?kjrgl9DlLNQ^qkKnG%L zB-a%L%ZsyWSAO{mD+O;Xv)}URD18N$gP`pvPM;qj(Ak^V;4mG3=f*>+u%&26-QlOX zJJ?u6$I|R!VRq{m*A;Ek>K$K*$8_=y)};yKJp;CY%Vb#W+?~mnew%NiWCJ{1 zw9?&h;dd9q>qvgZ^Cg_LsNgeL+M2DR5K-NT+1>0B^Y-YdqWQqG2o z{uz*<{=Q9a7O#d*~Cd_5X;r>m9(}l;!mHv1MhMVB$Ho?-ro98~p+4e6$vGu1A zs}i*bxiLeiM9}&n{pJix_Ow>ow_5X=6VKQ{)=LB6uIJ`}{$A7WJ>BO4>MoL?2`atw z&@T8tz%bN=Nf?CCws`gROtw97B9qoX^k87-q!)>NdAfM) zs@=yKx3TX7|GFZ~=q_4&_>4@iQ7b-ZiRU0;yR^k6qNr|)l7&pUoS8G{{*C&gJe`(hh$frAgsFd&qNG4Jw96)JeW65+A>3fmVl z*|Y4~PJ$rs1nRZ0NXqXFNAdn}Gn(C7cZ+ zW01?$rMZfL9d~VyTfnFa*R57a0Lh?$Llxw5Mol!mKi)Xk=*2h2)ckz1uH(0tU~+cc z%W!}O1RZK#fE8)0@bQC&|a*`$OE2d1**W z5n#w1x-}3T9LofpuDPGVg2pyCJX@dQ)@24Rcb>9&LO@#`dVa%#1V=j8=kAQIBVxN0 z&ay^z3AAil0gvgR%&#SrOWx|!mGBF$1ibtM`M%)dGNV0dA)?Q=?-Mh%oz=Ky_`3>w z>{!5hy@Hk}@leY?ZYGcErjorOdGC88vp?(4V#Ywi9bCM5no96D2@j{Nps=)T5X(nH zeXU|}Cl~dCmV!ng2)JI97nCgv0h0IbmZ8JNjdg_S!+IXR^YNd~)yU$O*_-UUcTYJu_f&cqE!qk!Ek8SgL6oYQ zvtrKj9fwx>G$WfM4!dvG*?_l4c|V^Fgk*kQ^;MnhO(q+$4BnNl&*Q(m!M^I@@bg&_Q(CNWKw577SbPFi+S{%uBlAj1-7;%91|^>7%MsjkFu9F`8oIBC0bc#d z4eG722Fiut_z!lvbS2+3=y*-5O8Jp@V6qHv)C?H0-fJVPZ@`f_XEdW{R5Rd@kYMKD|Eg`ts}{R zu_dwSyq)(=IdVdyv){h86abrKglF->cQ%zT?xh~(DsEEP|JX7Hp9;OXxCT^|_y5>d zhl`@oKDT(@$tX;=N z@To?wnWaT;PDYuQyI?2iC9tb=i8!ERTr3SkL}3*nyJu2424&g8q&r!@Uz?$=Id6|| zDh~zzo*t*v))Sz4&7T)^;+|HbkgwV_f3Fy6Qv`k_EmcUWh)&1Vi_~{&`s^UJhM9F_p}mxyR%=ob$hHTsMwn=ryx0R z{M@TmZZYi%P6&w4&`wQlZ)!}WOMaTtE+c15xBI`fIxvLINV|SYwl|Sv&4yU-mWoF^TO{b|yhy`SN;K0EuiJrH1ShlRpIE2Bd3(|q>x4KE$g z=VLU_^x7ds6lEdXtB$Ee`EX#KB|NyT?f8AhS#WgV>XcMu(>a1l{YOqj@ovzbLHOQ6 zLV9dA_B~(Q@-)Es(~+OMNi@4vUaMHmtxoYS8hIao6tXX9B1JvV3-%x->~tN<*=ng|C0szRuPj*oPzQk9! zFQD{VuP@U zqSlfS5ErSwoc-hMo^Z8k=<&_sY#5FF@t5T+Df8srErsJ(gWGh?T>cRWP|Nu{;8%PS zf-ldgph8opGrwN-Vd&0Iqu?heRC+WT(D>&A8Ur3j|`Xc)Dd(7OB;(aNjy8Yz&q5`E77Rk0l z>s;4YlPxV)zD!wk2OxDY@b#{URF;VxYnk8rbA|8L!FGr4U3ID^8g1Lri9>9;wC>om z;@Z*X97zx9;I*z)&HUf46Un{=7@hCZX(VF#3#DdT%Q8qz%3v9J1>Fwpq6SnQUg1=f z#GK9JhVFgM3SJ{oA{lyAiAWyyt>pg z3eH*n3f~i<9hG)MV(7u}LJtJN?B3nG`5bJYBY(X20-ZgM3|^GM+B2Ycarj=|N+3b9 zLb`c*$3}5hSoau6c++Wby%(OA8kN`L=eAyr>WIo<4+$MvcbZ)Ddt85Tz}Dr+3f#t#?r8b>>W|*FwuX`m%{?xM|0;hAMMTN)u8tF zMinnkH-Vdj1tscbmhn~i$i%kR?Yfs+GL5Z=6TkN2gN{x=RC%^Hx$iX0t8%?5gRM>b z13m?<&A@U&Vw18MmE(kIu?+d0W$prjT3^zZTsWo3aaSa{}XBx)UX+q$D4Q4K6h_n8FzX|Q*rO$i}UNjm4pYK;6@yJ z*3q;7nO%^S!r87)V&3Tkzx{6B$xU)D!@v^SvmBuZ)nLCZN{(5enz54Q$$T12l=Z29 zyYKn#Fju>!zi0iunG_jqts&DN{)cGCJPn0J%iA-=ne1i$$r$4Dc= zm>x-ke2kxIAbgUlu+}nOm?g8$Jo#R_r0kDWI2zgRlhZ>V;t6hkqdg_y%%c&O*F;*M z-F|<-*{&fNs&sxBTlS(G5%lcYV0<5lqdn<)n93{SS`Dk8%?nt>6-UpCwF`bK1kAa+ zo`v2WKde}Swi=xuJ#(JJ#kb^a3ChSMH>~YzY#zo0Q5*WCS0E&~?pMDc^`LVL>ffFz z5O%+uTtJzdU7ARtTY2)3#X5g&T~hg!loAXtQ}<#)Ued->cIsB1i9o`;iq^FyD!{dX z8u-##bAyQthHcl!AY-uVab9qn7b1&3uy;=ui?&?8HN;iZ_N`6rW*de2k~?qW&*5Jt zp*wE7ZmM<@V~laFx!fvEE<+j!-OcHHSM5Kz-vytMPBYju3mFJgL1pZ+532{;El#p{ z;d{8Ji4u!V0F*G zjxnoSC!`@gX+0#t*%;9=7_m#~;z}%rml`Hqt$hvM9&#Y4ZK8OFOYcfB@J@TTu!1u& zLHl6KiPu-e#7<91G;L;+QoEkZbyOAX!KVtyCAZt7R%>B9+Y1~4*Q53(S^*1U0_<m*h;c@9PoaJU6}o@cqRyLCORT_Zckh5Bvk)Hj$V- z^Ca^`mRx2D(P_}c&~K-KYXLWvLHo%|#J1)l(qfN4>Mpd6)bs-FNku~;BT?M_lDPjf zP1vI$kyWdMK$CZ2sW%K56o-6%S#6QU`txlgd)ibXH=(MnH-iI2=Qj5P5cIndL*Y{s;(w4byh5RN%$go`mdiBxQ zxNn$DVvfGYFn2Y`!`qSGs%j^+xJaeoL(Jk>=D6C8qk}cMS)A*ZwZFQ{t*Zc1Pq+{{ zYq0JM=)XJNR=x6+`Q69SVUM@oqK@s~j!w_{MNvRG|IB7EnB=&7NY zqGkbe8*H{OP;BrF4P|Xm3HN>9eC=Nyy%WyXmj5MuSYIFZIXlO9zg6TjX}hNc-mniB zknZO~*9DDl5EURhQ!BspJK$(fCBKu6<=jW~!94#nzYp&}h5k=?a`okvhyR4XGz`W?RB2ef~hzw`b6K)>wy)4tovV#EWFN< zX`f85&gFam2_1U3*D@QQ`dORfb8^}Ksw%@KSW=cn`A_>xLbUl~nLaUOGx)Mv4%lrw zmk{&(DQV3o3x6ZfnKo0Tbak75JY|OUe9`VF?B_oDSE~;q6@5xmcPWFCW4R30{8nMs zPM|+;e$QK$_aK}ye7@S$*?M)TeC+$zQwqVDZ(ncRZYyona?y}bvHSDXYez_PVew{@ zO0lX?a@<$V_Z`-fPw)SEbBQTFA?l#$?hq0Xi1k(9n$$9HxhX}>r75qIyXU?R2_sWswf9A3IhK1L$ z<+Gm8-=MBP?JiwfxcdJ!9N$EiFWh7nux1lxkmQYU;DA7*h^73y~ri_&h(GCZnfXSBEJ;#^Hrsz zF19ezKJN*pov`mK3kKRA=%ts~q$|vU1TIv{wgmCo>ceMFaN@C*Yerr`imvq~8@T}A z#XbEcrbh$5?il7my|$84Gjk1hcX^x|T&stFHS$f%dE-HK(Orytu`Uo;8SlRo2i)kH z`I)n4)ox8Vj^TZKUFa*L(1Dn9t>;tHwI~5ARGy#>sysHU6~m$h1jLlndBA zIVe!4F7LMq1ip^H{?ug)-F_n$MeRJ<|UA>p7+XUA3g|Jq(_Tt3si#-9Hs1 z2$qfCeK^@8VG-6YpjB}IRTL*qm|uHe3r_FBRyj*Qz!-GKW(ZqBwHl7jq)a>&{FOe` z77LdZH7ej)#(#8ZF$o63*~P#jo+SaOsz6~RSb0_bvKYS+z*f@I(b>b6l@BFQ~DN+>+9r(-HD_} zA%j0rn3}=I*U2Q6T2@WMC=<{a{T$Db(xsSf^kFP3DG2@wZP4uu5t|acK+_J4UtZEM$Kjjb{s@ETK7j_Tv zL4P5;U-Br2RA4a@&ysSpSut4Btj%#LwoeXd3jw$35G{Y_Ds*P={m^dE3DC-|5#ju$ z;F_8x-_R%YHVz`?pO>rckE6fqVey9EI<2xIN3QjbsG1A1T5xJ_yBKOdHH*qnY-u{k zXQ;w2Y3F6?$!I(Se=0Pme$amr?AT7IOXKGL2q0GTy>A*aiitatP-?GvU=lvu@w?7n zE|m0-QN!^7I?$iZ$5^4k_EBT(&&-es_KThUyZ(I-BFznS&o)=wQPF=baV(tL;O(b) zzpa^r#q35&{6G)Fb@Nt!CsJsYd*zn)%2p_8h>S-wX(*Q{C>O{VQL0s8V`@=Lnxm>2 zZ|IqxgxAIdyLYSSJadG6>9Ljoi-h$En;1<_J;=vhNj!ZuIi*wJ4e2dSIT`W*#pTXq z-37#%C%`|D4gdV1-y?G>Na92{u;`n8F z)$YXfjlv4&Zjec+(K5OXm*#Ab)M?jl8Ym{n?;L+PNrXspSj#NK@bxByDsbq?3 zeE^yWh58=oE`4RV2D_T_Qtkj~RBa;&+_R8sJ6S}9gOPZ;nB}3efen|LQ5pRF#Aoll z;Kkoj{~#Tgv+il950PGmp44!-OS7wLq(;qrJGjV3=&Xk?b8NjpK75GKX$Ovv&8Alg zWOxJ$7Td$IEB(o5X|QcT@2>UAcb~}93Z#i$ayXO9thIiuGEsi%Tu8y)FukncZ7KL9vj21G$9+^WF7ShbX_w6qh9JcZ4WPr+y_PPs8+8pV zyta}zhA>UGlAs8_sm2VfMd;`n^!)de(g1u_k!@p5kHtl9+$E+Bmw|`$E{dlofa@)C zWYhtiE`yQ#&byJ z<~Z=XhGJDF+~)Qj$j?=mWG8RjkZ*;jR%R9?-;XOPszI?)M7Fx;cAj&p@LPKYXd*4k z9zeC|WxWoos^C#oy#Xl18v)IGh8Fy(;^RhJ1!GzVkvB`(dnLPlJ=>3J!pf_qCl>?! zet$_?rd@No2)~z6OE$6%N$eA_Ia$?95Le(npIO;hj}Zy)=+ zytZI*v)=bTXe+m-iZEZX6pNx4xgjH;6JCzg?E>M(y@3%QfcS^5RhUxa^w0bXWY^jD zGX+aUOe=2qTIqPY-&qe(Z?X8WykhI~&qkdX3-5B@R;C;#%PD#-De3bae;-IQEyQ_% zGY(pK!DyiwqdV{)5wjh`i0c$0XH9a?xD5ID8eckTNoV}-G~*Bc-G_IyORQ?P9WC#m zv6(rUiR$n@u#uQBp18->Ud=Ini*sL$>29;sI!g<*yG*S0tAqE`HMzUGRPT!;-9AG7 z__B3EjJ|S?H&&8K%5Oh$c|UZeGiYtS^%JzUw6seIOim#yG)t%4qryM-fa{y2?ow=0 z>A3Xxz{f3e0jm3j*-680d>Y*ST~VdTN2^%^-I@?l&kktgBi#^IEJ{4yAfl`0}6gTW5eLv^^RfK2T?!2J^Gxn3Y=1leWT;r`$=or#v|4%2|WhL2!}X@ ziv-f|_E+Ll1yIt=3xyBuxQwFb0cEtQvRhn^VDae&ZQ1lah-^e;;%EQLK zx?^&|u_05z(uUs=non;W$sxZ?^^%t zhMU#FFL?Ms3sXpmoz{qZpPA=LjOq8f7sZDH_Pe>5Y;J?x~+%C<l5d=?f#|F6P!NXP(q2}2(LOiX1%M6> zDA6Z0%e6=;w(eAoR(Bx>P&IO?t}rq_eCd0EX)-Qej`PhKF$7FH zhJ>2)^zw-w9OaojHg*y3jAOmjG@}OQ?_X8!;1m4T5rKTxG*ftAb4$i#KA`Pj8?{!o z3Xq2%I#!fU)GfDYp8t}@XHh4>{)&qHg{X9291(KGIbq z$Gz+i54uK2&^pFLmE3!!9mF5+O>8eL?DvsPKGg?zY4VKf7CaKKCGRjJ6QY-ez~?_U zk|)9FonkBR-kHdWo#l&&i0}40*Mc52dXc?T9^(o216<i4=%{L?aYm_?G@g+)bKE}JR zQ>#iGv}~QE3L01AUE~2z?c+DbtjK?2_SYbo>}Z_uL$;HNs|)^YH}Dy=V9;UsJ+bHW zZG8cy0zJj?S&xy8l%GsnGL++Mah zxlCW$MU${u|;A2RAtpT*a)RdVlGxja+A5G?uU6% zzJ)oFm3-tVQfyDJ`gdISe=HT{t=Qyy?tf;n|TUxNZ<}Mh+7i zayA&GQExTxGlhd&oi8k>*Q2cQE5&r3pitrrP?59`CZ0Dp)h~TNt|NPunkL1VM3%rN zzwtU1MycJF15F5>dVp%KD3kE)kh9nf*;Fg`_iMkI?H^pbFexVisHv`=h=)Ygx-K-3 zHJ9T&OT)G`ND6wwQl&}WI6>8~#{FaX)OdauWOE3aj_>4n?(=weRPEYebzEWbY4lWLTXn7Ef!?3g1 z{^h9Ze>tjOSrBR7MCg^1di2PdaaS$3!Q1Cy1pclRz(Icd*eXotI{0JjyhK>@!cz2& z-Jiv0y9eC>-f%i)fzo_MmjPZje~h8r+&be}=1O`awv8>9xK2Z)jBQf@raP~vSw8`~ zvG!n^95;K$>HySG95Q51Pdm>v1}do@MJ#O~5WLfGUr46vGfgW-pNET+mXl$@NUrN5c!db}2Z>P8T#0v`xR*c`nyYbdf*R|5f0||Ieg)%SiP%VY+_WT`@T<|AJtIuRDP(D-p!W|6l>KV+3{V>|Y$+ zMrzpL|F=o_Pd-?hWzm=X3vwyg=fEafD*PK8VXih^Skxl3zlx4l{1?!Y;!|RoXzBj% z_nId4-k1OHW%_^rOh9!f=x_AU;pO?r^Ios3Ew`oI0hG4z0hDA*XLys{;2w!%6+t#zMFt) zBk8CE=8PqyLWVv*=ci+38toA77WBUKJp(;i?0xw!jPu)7uPGr#BLelJkDE-Y<)1^@ z??PY02blHqnGZKEwwXH%ug(6Kn>AzG`nUef|GRwzX9ms(@A}UL>I9-t6cyX;E{|?wpRHoNO`R}G4`twH@r76Pe)ALx%8*g2$ zhn0%jf-C-+Udc)gfkZV9zbY-6+3jzD@PIdQ>m&+Y%^Bq z5T_iLXFK8#HDt_gL0O!B3m%$B!9(^WI`ZN0{3)vb%@e{!B)8PKoWj$h2@NgUY+Z7S zihV|i@=u?>R(l%83X(!KZN?YV1a+aS!bm&E@vjQG_4^hvdc{(QmvAtyI&IB=VP<-5K5x}R~|8NUuHmUzb9_2K3S&>IDGoIX^TL)G# zvg|zfKO0v(ymK?}fPz1@-5a@Z8mTs@D z--o9{|9s*ejC;+e(=hSqZt53i+<;wVyhklggZ`y{nF_aPgC-lbx?YG)u~viq@}gb; z19{awo`wX5lvh0%r3gWfzP_G?e~xcWNMACc6M9On4P(2wD~zMRg{hxeFjNJ{5T>K6Nw$-qb@86-(a%dg~yV zoo-@n{5j9Tu*GVVvf4IXVN&;6JiQa>T}^V0)54;g&Hth7ouVsiy0+o&JL%Zgj&0kv zZQFJ_wr$%^I_lU~$F}Y4FMU7n^N#oEALCyK`>1NwT2(dIp7Wa5ylSSD?naX+Rb>KI zrG6f*fR~JvAc(F0@^IG0tPXX*jw}dWv7NT3u1vwtUhu)0cjTD*HFnFV+3$DcSXBwL z)wP}YUI8<$|lAFJ-+ zlaDz!-NQ&*gYI?+KN}WP%KZn;h0TBjjZWQ3DUYfhC2ITC(U4T}LDD?!V89yB6wV4| z4TbR9DwvSsPEb;!g}h|e<0XD@(TZadl4)KKn?J=o;~cc4q)xUBnP$KqIbF?yI;l*J zwbjK87B%Qtqa<|r05~8JseLHR^lQs8LD1Z_MtB&6EGOxhhjks(s3Lbx zjVp1D&6RkV@Y1Tq|3Ww=o&z%3yIEJsEV?*$`y3GoG=&>5&%^R2B(ut)X0pTG(i|Od4LpIlt^C zbiQi`2U*yjj^uKWlVYCY*<&+BHcVh`$-A{~1be#(?16qo=wCM4$Qo(d+i3;HxmMJd zaV}KRBpofeb7|H3X1MZ$1d5oInVEP|JxVeFnb50kfNS9j!!fp0dWQWgGx419Cdn$> z9VUQTKWj8;6iMdblyc2c%sqSyg(?V%$cTGpA#&oB1?j$^Kbphyv^wO24Ufx9nkAHY z^AJSWcd(yI%P5y1LC=Y$ph>p=Tx~adsjG4rWN2cK&US=-HzCHUUDWC?=1xG1Yl3>0 z>U}m7W25s44H;(yN|;)zdlQ5;T48ugW(eDL{*FC^KZu=lybWnQo|y)Y-Y|$Ry(6jl zva6_DDU^gpTl%wg|5k}o;a5T`Yat>}s;D^dmhE17R9?4S#2AVg3k#UWshB@2zHp0A zr;uw*_V@uSS{F}^YKTJ>zMr^AxDA|eR-+1vc5H+h zr$5dya4AoTl9)O-Sfc5WSt!dC>b7La6^|LS390xb15>nzLkpc#k=-LE$8CPdF)(3! zzQW$kD~)L%#n_DnkUAc&ZisW_4oXp#vAg;--2WK1WUZ1=@jizIKr4YAx}SiM!&pGd zZzgKOaj2d_YAg%f38SVcF6il!Ae_gq@W-d2p_+;jF_P555)gmz zEJhek9=q4<$}sWJF@SUHl&e(Sm&+(D4mC9Pr4isjO~&kGGA*Y}g>xQ$AYD=5u4Z1X zr?dYg1tr8qS4@|zEZjAaHtn|UJ%8;V9xt8ReY#-6h_d9+P}klLkH_NnPhi|JhZ=+A z#JP_y%#JirEaaf^E6~PloHuS!6_A_|ksQO6+xE{MfJi(yWLOSY`dE(au)OC&UDGI@IOcxLOG(PKYI zUTp^U8CWr#rseHj=bJkHBAFU-;nbm?N>WkzvDZ*>YS=o@X7b3gIq9-Ik-omUo?|;6 zXC+h8V5!4Ca}41B_H5aoytt^6C7fzP?A`E>&4g`b8Rq%90XriX8SEO>Xl+jBu(R;p z5eM5lhbP75wcq!DZ8G=EZ8F;lo-9~CBZ`M88EZQ@JbSw2;WnA_{+tJxHj0$S$x+h* zqT<0QqLH9-Ox`ImQE$13j<&kK(y-CU-$HzXzdXMI4ik5nJqO5wg=@;}XLBCGkTTd^ zqA`cj<8a?Hcj@9;DF@~JS;=Q%!M4?V*abY!Fia?_ap=%gp_RuLQ{i}4x5uR3PukQq zDRZW|X2q?zuEN5|RD{dR5D>ALVRK$0rbIb;o8iavKh3d3&6K-$OHpwW)jz_$UJA}u zEE*9hrp@HGi;;9qwplnG{Da_OZ?qR-vjPN&2!sA+&OpKY=7$+=I28$#Eb*sbPUM~V^ zGcfIN03tzlW6fC2nlbc26f)-1kTL{GhCdBboy}NV3&NyVntFSkiZQgTRrw6EE)^ZY|ktYe29P&@*H%matFZ@daa2r zGFi|(i4f&!r^JEXj3a)S4Ni^WPA zOwK@=Krqh>xO9r;BI1{{t-YtwreEglC}wp{P0Y=TG1?F)sgO33)U3?Mkd&~ji4kF7 zSyOTLvCMQzbWU8HyFmh_icrjg-5eqvUs9i5$ZdESP8T7esYWeb#e2sR5xl@^sF z_?Supa^_!}SXkbld2@>T%@Ebp-CY-;1(Q<^C0g^*Q0X@94)N*#2|M;yiN@*&vxMP%U3%W=x(exqr8fnKEqR*_Z(X z;{sjHDx}#h6ZqiL{K&2?5X&Tdr%`NzHR`VQCRi!k<_HmWxDp4l= z(vHa;cyxGlgMD?qt;elM6q&@@|Y0#hZBOcQ*O83YkJlCW@@xfIh2K(ojKxHtlKT z?Chg!D8~kImJ*7lk9}P>Gb(w{uj%^WAxLIfUJz#4sXm-azWrOUru4yf)kcj`JUeUQ z`xlY)6%N)$$?_>W>Lf||o@u<8fi7J<+AJlLy^oilfBSwz_>U>&!C>7R2>JAJ;BvJ< z-*C+4pq(F=mR-kmfnd6joj%vZ76&g^zYh9sx(y?Feb|bH!L_~dKA)|@`qX20dsz9a zq-t8%eV8xj<%YLuuFARx)Rz@DyU<%sQc;ae+TTCqE4GvLr)bHO4^$vJfL0<1A&Xi2 zxQFsCWv%H)%+l+5@bZ0Y|JWk?DhU|pe-Rx1qaB!T{A5ZS0^p-u zZ|{3uMTo^FaOvd8mTL{C;YQhsIJ93(tnYqQ8kLmLtrh~oWj;suO^S#9{lE<1(DfU* zaCI1q%Ce@K0xfjTS}s#ha#}1OO0`3+vXtMuXl5HeGA4`0Igs)F;TyV zNaZ(KUEduOtc;2I^$)eh74lN%P#azw*~^aNnn_{AiVDG0j~QuEJf zmeACDc%mgKI{ZESy{oHS7DH_Tai)wsuNavDg{h9scS~bAV!zLKWkTKZw z#l%vKFi;sRCuqlDFQ&d4w+hoBXix(>EFkq^r#%xpVrh^di98M&s-=~x?XQ*JP;Rah zEdhOf=j+nNk}-zpo&$NBN}`MRXC<-|#s9dPNhjzqj+P`2^$8(rtLd`1%moRiXDwt{ z4~mG)-H65^kfNQRSz2*!ZbJnjG3cSF9HF96*oP#Z+(tq*G|ZC-?unQ)Ho{1q2CH_| zK{wzKS=;9Gx^wQs&L4J;y|AsbTL{*R3J{Y=n3#*2Lk#jDN|O)-^ zkYa}pw^SoV=s*8iLkCoU*aiL%v zE6ZCJlJJ~IJ1+C4w$qGf^FkE6bq8c>Cy7D34G=m+H1cE46lL2V*DeXsme=_3P*Q;v z3*}Obm|C?msPqFDJ}@4vFg`9XN1($#){uM89a7PPk#b|RPSY&zwn^G*z+>!4PP(E7 z|2oLt&(2&wPWf!Xl0`BUr>2f(jkJkTJn7VR9#eAyTVP(=GT&j>2`-QED_95`alvGz zk`v*U6~pJQ@uEXYCnclP3b?(A^RpkJST4enOm5a&v5QT!WzvuSx%gL+T{cT%jVJ?#;Z;|T*bzo6F$xIf?YusiLes~7Y?=fQOL z9J6Wq1+Q=X31WwmYUC@BzKcnx_i*$(! zDL|?g=6&3K_IbY?TW;+FA;1X1iDv9;J3ful+7GG!{A&+ z5&ExvUq9Ta*kom0Kw~8dD9Yd|fvNGrLb?x#%FTE^R%1w0&X=iB)4b=2D8Qsjk_f)5 z<7iQnxD!wg+4pG~rtaCPpeG4w7!G?Q;xE zgOkzOUcY0PBeg4q&_iAtR_sex)22#9I4VF_MBB`_KoJ=9oe~tFhe2E-jt_&5qa=u; z^^WZNBq(~b>9qP5E=uRX4v%U}ylw5+?S_KpP=LQI zskGzUktnx>MH_EVP1PytutPi^&WgN}b!J?=M zovk6-gu91Qj~x;u>FeKvv^>`bYx%1%ciO~BiK~L7F5%m*g(ei&MYsjF_k9C)6{F0i za+P+(5urw+70e3V+LdjHzIg{ntz2RvmouhCYbHx>&M#p}WgYQ9NBl5BFweqIMPZih z7K~103S=zbl_c(aOfIWhmTC5BI3rI)$fYLj47WexBFg0=XA*7Ca|kGMgosAIR=N9k z^&_#91O`grW6Bl!lfBOl|@aZ}oO!Aft zJ%&HS{xbJ-Xq4m5p5u#k0%j6ofK;rF6dvWom{9}``6X=JUC~|f1$_7j;Du)st}_U{ z+wNO|z`_yeNqQ49bn`Z;p~%fMJ0?eWn7Y&ATo>!k)k9yx@=^j=(E>Ax|JJMjP3-*h z1)ogxC);M(OB3G~L!W;C_B;7bB46Ah1k2#38uRB~7k=-- z{`PI(cuzQ3n^W(L=7sM0jP!Sm8qgfE6O7nO_C(Zn<)FwWb&PN^#INiDfD&#pg6t?R z1^-w?8j=Rg4dVtK^7}XM3!kr)z<-pSyDtZzDRYDh1&GlEX$jgI{@Jz?;{Fp{34l9n z0r{qlwOcD$;eZ57sAus%%Fm2AJpLXye@FdRgP->Qk!-SO38BkJfc%^2`i=hAhyJ?k zS+s-mU_^DtLN)(Q#Ap-$4~@5?4N3r$_544npKkj9;jUKx!+92iT)|L+Eki0Oi7{ub z(e8nj{10lbvcEPnejCao+xBIcq*vavMjW7I5|%m1He`bRssl+Nd* z%`?O8p82eCe1dTbFXA9I1sf*hm1sC)m2;Qb>H;3SQ%vLkcKUjePVcVC?tSRxIFMoY z6cZ2K_tL#TuHb)X|38<#0Y14?uX~IE`~T@^_@4~a|1|mkBgCy=uyvPc1%tUHT`cYS zx|Y>dnLV=xgJmISr4;nK%Zs8VNGVx5#Z*w!)p2%AH;gh^)|+9*Sf=d*_~Z`~tNEvy zp+CVi#vO;YG_#A65-5$^0N` zT3r5$)S$;V)z8jO8}xd8S+uFmfycFebMrdcHRO&b$JIZe?SNk{`N;g1Gh_f``D=Uk zaWp!J4i9efW>!vmvFZptN;{T(yJo8Cc!Sl#^Wx}#C+KG_@82z0Sm^sfRn1PC-FjZS zwB8rObM*_l<8|PHR=2Vy<+Y55^w93YjSUBz2a)!#ZE;54f|o? z;(0jb0-SW>Z4)rwot&Ro`E)5=lMYeO__eYKDSe!hQbZqqgu<`ro z(OYJLmk>7@?7Z?eJBcQR-8r>*HQ&p1y|mCrDb!-6l zy;E%_XnUC7Q!<;}4ve|T-1Gnj${~+l>5tw2*wW0Y!b?}@D>*{76m;)!e{A)=nM~H? zSZx6IFYCT3(dQs+W;I>Ewff!-IS2O5y6%6t>8@=3;cC$AbiAb5dil&w2vZ|uGsYm! z+|of$Fr#ZT$d8ZmyZ?IV&$lJ>EK=w8)>?HACr6GH2*BFS6JPg@EWLjzx-wn+M+a)~ z%FRzBU<-Wfm->e^!gxjJ<0ml7g4OCR=Bw0rvegTR7Gw0kcD$|VpEvR1AWb*~vGXlq z9`feDSO7O#DSM8be7!w82AqN*HGxNX&D$ls@4lm#^vO~Ke6OR;BZ z7gY&O*ITJdyNI9Nd9gdOi%6^^`Pf}QfW8RJ$X7w*@jP9b8YL|ME7+CI)qN?vT91(H zdQt=4;N#x8KCY2Xbyc^O1#RP&KVkLw0ek4$O$C{eC^G3aidFOd(Xu5q=#OG@f#;uN z@64t1)wJbVicBPqPX%(Z9g3B|i;Oi@Ya}k^Pv#y8atOpXDu$$y049TA8+uGDYwD9$dzQNNoZYf zm#@aF{e#;G_r^_xm4}(JpKC-aKTdS*JndJu9$}2p)KvG!B1xysbzCY<7wYIbfZc?F1^SVqu`1A8ij+HJ< z#0728^>jJRpbPx(=RoRv>PXW_abD};kL<@g+LC(X*9)>ZIuhz0%g2RsB^+3-SXSmx zBkBO8c{D#WL)%rap3mNC;6*rG(RGN0$!vbgMQDe#XT#n|XpiUn%^o1IxUnZcYL)Hd zB|43}kU7-b=t9ZQ^C^%&NtUEys-n}PmqoJ0ZxQ~|-QYr#)^0OO0yXN6-$*a2G!W?i zaFe?A92&}^%~$Q5S4x&Y1)Os0(E#pL%JIDZ=6iJ8M@d;@UXPJ`oL0a6z(ifz`dEw5 z`#9}!bE)5I+u_7MS!;XXcZ4mIw#fiqa3$S*esnw?On*KW!R+Jtd0#H~cocUvdX?2a z2%EVPr%b?*W;=e&jqO%l)N()mF#;|jjHYq96cEp~Jk&kueZKigM}2$=2OZi0uK?(l zTF#Tk`Dxf}S7X$fxMv$5Yi2;Bt6A3^IWR^0NgF$uoU zGn;bK;d0l*0^O(0qW^b8*Gb|Z8&5mko4G(w8&Xr?^3~RThl?N9HY3_p&cyStM;u!T zG?Z!DOhqm$*P|G|YLENUXxyr%g4dC)oR?TV?z!xdvNUx}b0BfbSLu2yjrH60N{8Qd zVl+0J8jY^5X55BbmG7g?mKjbc@J;X2V=qMqF1M$!T)=dyHb-;q?j+Od^P(3%1|~U4 ztt39b3q02I-Qerv@tdT0n)>scG-$^Cn&Vg8bo{MakAtHxcfRqZN3_)N^EwXmNaNPC zS_?7A1N?P_^kGYAdxqu0;`D*^t_c>eSwJ1T+5?U2=Y@6+*x89`&(oIm1!0iIV95J~ zTkiJcAotF1?o!#{&c2Dsj>K$M)CeB&IFA>-8P<9tPTqRq0jdc6K=S>q$znZwB3db zsj6eL6aCz>Nd;3%vdW_>TO-tMxHeUL(1cQ9W&p?Xw`eyZ*6%0 z#Cm$KN5|4LMa*u>66YJJzLS}$7}`vR2@h?)OR;A5{sMpL4OyZhzAY?gy0YIukk!y|f<9EFI#C zkz;sX;a%0LD=Vn8=U;8`H7BF^?F|F(?&cJuv%=atOfs0e7OKRu$udsYIKefJK4UIx z!ZB5)GZS-7R4ZVqa@=2VQ-tgVNr|8($Ae_Xv$|8%N0#RmV>f^4zf1$&MmHY&x%i&X zI=t4qnF?Tb3PWRGJ9CC!JyUcFmNCMkA|TTl{Wdl?#JqMfJiMouW*R(NItfKKWJC7Y zQ}WB$$Km9HBfo_E8slj$1r|JD!swy#i6Tfz(X}(|*Yya#JHS9mg35fn zcr!F~X|k+)$9HvE=Z3S@a#!*@lEksIar<$K;OcgGz`C2ZDwV=TDbIk3E4w zfo3U?{euBfzGCHj$rj=xk;loSSrUlpI0RGd4tEfEVu6VDUNzSlXu5B5Zz#PA!jnWo zhI;yLd`rLcgu2YRqu4IQvSC)2!yBlVR(`{0@$Vrfi3??W-PmX)R3=`Jkp~n1 z)FF~KbsPf&7?D9x_fO;9J+~n&cUg$fYh`ouoysIAq3D<8d83`I zwgVeZe{Kz}M}p}Q&kNP$k1XVhg^76YpLvzT&clGegG#_+4b56W2dX3oNMqv&4Ger= ztwx#n_`{^T>kuGE5Kk~o_z@j0)Eiua!nb6)Z18p~r4SQ@zjlH5g#koc5xsVW1Rb+M zd_Uf&!$Z%<8@QGmS%?HHX8Vt3FD|p-fi){U>7_fw3=Fs&A&#h7m{_nlww48c@?f= zviaHwibCL)V`p};_cjsFEI2la)~Ss6eBM^J-cLur&W{mTdFJ=qdfp?Y8IGL^2feWN zbeQbvx#pXO4GNY7^uZwe-UD$bl3{sYfR~@OdLJdR304oH)w}O<3x8wxZqT54tC2uh zSSU8LpfreDMn@&|8`F9|=!853NpD}m2!yibNMUV3&>t?ZZ4ykgZ3r#m_&KVh*k^5X z;k%4As_*h#Y8h^tyNm!k+FfZhT>@0D9QTm8Fu%4+TjqeeQFQ5mOjl^NG%C`$jnT|z zbLyBnW=})B$CFZRS6so0gz%!9F=KI|5k*7eIz{Rr`mZW9!@522X>;;x^M5Wle%b*s zdR-tQ374#eDZWsod~NR=PzEg2Si%$Jc1)#NeuN!&;`r^FuE6p77|8&U_Yd`c)+#f8 z^6#}vcPk{FQwiGn@(NAQGz4fy^*8Ov?t&pRw7B!P2DN{HqM6}7?>z}0GFhS_5Ng_2a+@y5QV^yp7Mg?r|SsJ1*^(>MVTcDaG==yzNU*`E*<)}LzKP9blv(0W|A4Q zbU+Em4RJI?FUk&!%%C?ep(w zrM0d?Tq2t3&sN|^Azg%-+3{N@YfqztSg|EA01_I{{cwXm7)$0*c%+wcHl=Ww&l}i( zMbl-l$h6D=84^eFT$XDF0(5_pdr2?xQtf%a$aPoNWXip6w(&Sn-W|;%L4wKFF9YSX z>1{RBdy)we5>LOsKGf;z`XGvgv?*0~7%&B;Ly18PMN#Oj+2VWZON{;8o<-lf11kV4 z%r^k?eLl8E^KwtmZgII>zKi9|bX~9e`L%ugRELJVDtWk)CLejd><2o1==ercWZ$^d z`h2o6=i=lElMRzV&Z5U4&Y7+#$$=duJnS8yg+CO&u@nvjHAe!B1_s-M*xSNIkS>boY~g1Z0TOKI4nU*CRC-ihCZC~otxwE&@;LG7l*6I#QxFIs{``dPi56$=BBotR_x{*) zG9t!(+U5c>d*c<_;4QUW?TbB=`CfA@9EF6yv#kM7tSbc^+Ftoc#m}=d`C)?K#4m z=6=cD5X%2t^5i2@q9UH!MDB32ZiTDFeG-RghjqiQzKg)T0>hX5GH*R6bnn|a=jClp=aBE^^afW>kzLp}U zZvqy&eZEhvO=bs@rJ@*;dmA6mT*`s-2qY~OS&-NayW*AEIkn(%f7M2c2ZX;q`ZW1& zSkbXOc@_vv|Lmd@WT?;UI8pEN(I-c(hk(st-<%VN#L@xJ#o18InT8G($+DM|P`!)L3q&UuaiiXGX7tBd3MLdn8^ zWSH?bJqjAFp2)O5AVGy@%CW>2)Pu$ma1irf;PrUqdq&`EtBdCWD zDLU89pr`O*y5}Qy0}o|&j)oC(Yk6~Fehp8q?mq{c{C&l4>n{{JdA7Hg=nb4s|0S%a z@pL8tl#H@cC{(F5L`^aN56&pvv!U-Vg^`J$JR=5!llO-Oyvp0rGMJS4j z3E{{ufJ7RW=fv%~hgT7G2o5OPy}6r|4BSPcAP_NPfD&K`z?aX-HwVK!lBAc;pJgJT z8}!XVg4ik+?B1z`vPvzF5(PxyO9#Y=^*3GjICxfFL5dL3r$@lP8SYJ;z8DzWI@H&; zav<=SWhg3!@3hJBzqtWzoMQ?nU&dt8O6RdC z4yVdWQWVuC)3qwgb`+7|xBvv*xNUY$PXld9Vm<+Rl=+M~Xi`}P@u1W;k`8*VTJ;#{ zcr2WL`WwDy`-45uaDy)lvQNs;*;4SeuTPMfq`58*E+n^k6vD=25wvh6Z48MJ>`QVd zmEWNpw6{o8N!7!mJ1t^8E?Fxp-2nF!2e~mQhB`79flx2$>}K_{5joVT<*X?(8JtJ2*mrjkx6qN$&`u1a z_KJVXgb@V!JRC(tZSy4s@=8;W?k&-+)X4)7en_Q&0BZJkcDIi$G9luN+K}#K2O6}}N^eK46>z957H7sQ;SmAXK#B%`^ zm=>gkaUV*VCs7wM5j&0X4-k6s#6Txail7TZTT*FN&iX9nW9ydt_Y4nJrJ*Q`WHT~H zN&^RAZ!qH-OvrjTi^h_3K9XYaSQb0ad=*iVq5qv#?X-M2-PCIQf48KzB zjix6Smi_77Si>FkE^n0f?9C04m?qhDj>s^%otTbQ zt(f2#v{g;xn0dLP)NmnABF6C<%RWjz179RQZYmi<2@K@~&&<^UbMrE7!+~q?$COV8 z9Ewa1X`=XkmDO3xN7kRSUiOC!D+WpwWGRB`vMDGdi*}B73sINpdO1!{FqEOJ+qr+T zWiQUHqeht+Ww74D`vF~nRRf*JLmHn5hRO_|5H-f3>%y)9kSfWlq3c3rNz@f(`L8j| zu5ccm-?Mv@vXeuQ8IvH{aIIL453E$M5*{wAt*SD708{dj-Ocw00KeOrQCm!IF_HIt z`?k7*xu=s-Op;_15sQ+h68~;n&4PMUQzYrUn?DStYh**2l#*KSjz9X7QU)GzE^`|7 zWxYyEskgGWXIenCa5metjZg?p&^Th_9dnNQbmiz#=88-V6wJa>v6-^P0Gg?c7?}29!3u z=o`Ext3|7O1-o>^C#l0J<{MVsJ{N1tt0*K=Gsf=XjB+peXa~#~BS}$B(lI#EqTNH+ zck=kkmdGd5R~TBUxLU)Mu`Q1_>VR~-Rt`S|MkJORt^CH%f7})3*S!sNBY*Hp3;u~9 zLtkl%XTNaqyp3!GJbp)0TAhQ%6?5~tyU~wgI8;V4)iP$^IMMI%SSx@Bb{9ACV@_r4 zxp0-preEJI`4EMh8$xbg*dv%PAPdYjIH^ZSFqL1x#VQans4YFWr442Tj<^WsFDM-v zr>6b-r>fDz>@dm7M<>^GGAo*FH(Ve12?Cqi?e%YV`R}%d7>fc&h2;vx!DTza!O;&x zQkAHOveIy{wH?aRMhz@uoNwQh70a$GTGy{m(=KmDEvxI=e#U)eFlrkkwK*ZX8L{%p~+BOwrZKL49&#YlV?cXVPm!;M?bp2<0Lryy|c9YCG!rCyP#z)azHwCCQd)5eBvlc#Wbgk2$inRL6F0$aml`# zij_suIFY09Ff}w}N1Jt@+Jl$j*Wc{&p-4NU=JQnh_4 zPEEBK&Q)TkxsLZKiBEN;@)6F`3F0GxH+6=jAJO(-h9C zw^E(Z@>GZtI5tqc;OVroe{!y$*{dmUOKE9|-Q@P5(MWxwp<2qw!ASVLMtIZkIf>vStgvZ%qdKsleM-Y#-3V{zW5HEprGtjKjW zDQ5|}VF15U!9!u)c%0Qt1tQo|f1!#EtK?yMGJ7QiKO$=EWlMc#ajr5Y8JBMkq1)N0 z`fJ~61ISAlj-+#$YKw~GYgLI24aDTudb>JSSGkbYygMmLlTB1~fZ5n)L0up&T0qCL z!T1RR1xAyp^_OLfx{*ye)BthFZ$nSI3EivgcZ<)@SRjWC ziPhR$YP1#{!PkJlRelJhLl43|xIHq=mZzsp3DwIM z8}|hQ03Ycl^CU>rr;SgcEEXx$%)3r757(HUTk^5}n99W544^#PX4BPK)^j6VF_*5x z%*7@oUfAG4`$*1BrPcBHcWuZr-U6yQvUph5c*>`O1bmT{lD9Tm8SpQHC#_%x1KTCmu zHDqpT0z{&q$W0(N62e_1>Y7NhQ9>w|u$`JPGUx|N8iS&>K4sCT${i6yQS8;$ zuARWk8MD_s{C>=jYba~0t1*$MBw?DHka-ZZNnVbFV3}FtJuYbM`+Nn<$COlvdVY2y z-R1SYm$#LG91SWEIQq%;JC}D*fiixmAH0!lvZRkU-BdQ8hL?SxpLpmo23HzKD`a@U z!H$&$OA1vo0Kq^1GUamy7PTFMjyV<8+?c;CtE$ginowoTBwqfnw%0XDumsEss@umM z2otGVacMd#V?Z%QkDK{e(kS+qWWduW5p$%r1b2XBa*0T*Pp*rbL?D@>0H$<4U2V4C zn%kAKVG{AFwUwoF$N;j>?7qj=^JBJ!XSvT7*D(juLg^9B>y*!+X_4>NFz`=P_RD!2 zY<|aO$`u;6a_-O>!QZ3Xw<`kkCfe#|e{cUJLWpP(@{#_7Zh*)o>jB0$F-~uM{QRoJ zQ$C0UNjqui$b5x&YAIV=Rh?6G=ZbrNaW!66hfnvJ3a=E|EV(X4D9NxW1MaTVIft78g6IYeBikh{Sw; z9kIWqaYBCgBYr`u_>DO;H~q2GlZ%P5S+Y#}i4zz0>gk?x{!#+q*zV!p1#mf;<<&1J zr=_C}L7a?^x7x_(B1DS@$N7sBiF)seeb&5BP72v!EO@si%bIlk=*c5NB+}XS;m1K4 z8;b4PFPgX4gsz7T&-1Q|2^=G8$NRWHA%%sAYJO}7Pg2*sr2C|Cx`8Uis^aTHu5hzh zjpJsg{n<9d_dgQnM@H&n2r_mk+}y~{B4Och%*Q51#xSi{mXC}zt2C=c7u|OGQB>4a z)&3Y46*g9y?+U;D?AjAXAD(NIE*(T7Tjc^Mq|%{88gylMUIl$rOC=Zn7Ypd3V6rRn zDC*LRD*Vy)1q{TZqNp9SNCNYC5QOKL=Jo`|Yq++t?;RYZK7+~=(#DtFjPVq#r>L)8 z0ni~Jmk61rbMA6sJCwRnwfb1i-gO`9_WJn#13Dkwwuyrk%YQmFwQ(I1gFkpTQ%D8O zDG#gd01a40WUF3a8l(vK&DqBs>0z6BfOGcEmHA5kCsRs6K-XtL_=-3o_rlfn9WQ5? zhmLF@ffUtIkl=#?ua)S5cBS>x)J8XR)G2RE$0nijl>8e*%);Se3ELuGsDSieTPl{v z?sj+*lCsN)RrEjn70c-vvXIg_Hp((z`$jqx^sajpkH+Qr;|Av9igy!Fcq}TVAUtvZ zPbdSN0`|NUl%%sHN5}{i6f})#7t_A5yobi1aJ6ix*lGq>=+vT&XgSNGZmY8^Z>*>% zo6V|k&SD|Cz=*h_D8dZPm)?T?L+^^YHj=-8izu7WFyfU$R56C{aav;REPz)mB!VA| zXJ=pWy*GAChRuSom!Evw%I!6HhJWTPeBf9hR*LrELlrWZ_Saq& z{80g5SnyFmEsSq}ftk}&Hq5H1z~-%`PJs_?eSBVFpxH-Ul$@C}2g<1^zmtD;#npQx z87EfA%gwtz*KjYFEXY?-t` zphqw2)BR2JY)??Nn0FZ=(B<~#`ud{bdAkMhofvVW#fMEOw8dsq`iqH6X6p*yJFFul zgi+2|Vup5_{BbcH{7oUo3!fgrl4EJx(aRGD#I!LT4sKAe8-VAl&p-};v2hqK{3oU+ zF}nQcnuqsRjyoZ3(sKA6Oz1Ag7y;6eK3@jJkAP9iV(zy`fMNZfG&zdf;s?phakSHC zf9{M>Iy?3Q=wK;81mqI=;mw0HhO>)1lmG1va3L8i*gMp3ktku*$1}6GxqLNJA@c;b zSB}fSbNTW1w&%=VZ*?XHRz1hJfE`xvuO=dxE>sq?EBb56-S*8>O(yPuqL8Q$t z$bz?dv0&Bb>z0H>WJ6#kM<%+Wb%p~H2-0iA7zH>s*yZjG3d{jaDTI^vf7kncB&3t; zEb$^9g}mzz^$$E01Aw-7hen#4cl$UFIZeJy{2!itWhzMDydHFwU+rWk4#yyo z#{;{De{DDmc(|x$@a~_lK8%)3@h*?DhtYcNW^puDot!Xo&(1H|n_rds2z^iHsBCy# zos)JE^WvJMB2|?cNT2Dwz+-7yizJ)QP*<>+69)i>-MkwHPa?C%5T}O%KE$xONT+BR zkCIHVM^({HWXDG)>BJ}JaZ#IR%FS;RO$H&YjGL>~r8L-Rq zDqoIky56vrTOg%Ueb|Pp_({BPiaf@zByhMofxqKL!{?amO%IbsRiL6AIDZAhxIJ*B zDHs4y5@otSxtfy?KxLcpzEu2|OLK43|I$pi8NXOlZPzfUkV?B$oN3;HlEgrkg=G$A z%lfe8*&P>{o*0)7vCY^gx19Jqx3Vp++sV(VmIdh8!tp%}4WeO@_fgQ}eRsTwm|(+{sQc4_t5WQ#*d70|-L&=T13eP^k!C zvf{A{a!QBhv1;DZ&BK{rnu?)P$TCAw2^zOwm2jvxO!fTCID8F$=%|rFf}^D97nhJQ zba;+Wp`w(19L|%{+YSoOKhsgVUJy195n#8zZ(VV;hI ze9=)|zo$FLC-v3a>@SWVO2SWav+EFxf_M%_EL{K(>dwbqz z&R!OD^U+tn{o8 z&5S=WrpNKJ`LJN6-i+(Cf&Y#1xa3z09t;ajk)a7{jF97u3ck*modqLDqw-q+5Py1F zKNU7K+(6>JStYSh_-4bA?kZQ&c~R1b(`d1;SAQvwI_GBh9Ll5cr~1XSsErTNGQd@^ z*#$$&X^i30*;$6kEzh>Z<~EPsTvD%*>Y(Y4ufwaJo3Xj2q(C81QeQvaBWT8=(R?qZ zJ?7Kr0}h4qay+ZU;ot&_LFPnFEDx_OrW z1R5F9yV-))ybdNHkaO$P6@M7;BbF@|=sqriw(}_2k(%T!`8y84oXXigG#^nCDmb z@Q`SxXVCQ16RceRrMh!$iI1P;I`Qw8(5v4JsNN4RXWB2xw`0Xc_!d*G7wzg*_ZCdV zC)UD`cg;pGF7AfVozoD=UFGJZQ(sY~G4Z!M<#PWvpRiB8kH^KkPxpk44}sliJC>)v zxBX9T-7xiRi(f91nvK30sw7!k;dh5RNxR#5JYleM38b2f`abIOZkFTuL5dqT0rq;2J!-QB8KiW`KkzAzToBz_E>Ky32n&unx6i>b!Z z3m2CZ=v1o0x7{_bK2dv~ezPm7!34Sy8y?q-jx(=Ki2c6_dS zV*Ku)jEiOP5qsmj<{&xFuiT3sGD?J zL+_z-*Ken)4K+>S`%3?lz^cFSrYdTf(wSlkuYQ~S=@@sB0#mS)U+%Q^khdBuc8*UeV(WpOX?*tXe3_1KBPj2OF46EFA0CS}p{F!}I+PL%?d%_&`#fooU1Msd zviou5(vx?y_G3@S?4w#OkV7G6k zoOLRn_3W|!^JDSmi(JA7w%QJ8QP@(kIe}6d`)f&6din&$!V$dwhX;W*!8RX&ox?Cr zAz_+-$m{HuzInDuTs;r`-J^q14DO*QPS>?}S#y@zM-Jvpc-#FJu zMn+ld@RjI?8$hxr%e8&av77gYo2y46lZ@46X?O1uXoP|G;3kA2>{JEWeyX?~Gj^YV z=nx=s=1Owfr^1ZN5RCaow^bZcijAx0p%)`VCerKH4BWVc(VnpUwKh_vEn6#l^`-Z0 z-S6|}%VJI?8k?eo+VW*tzr?&HVk)$-3F8jgJ?|9Pn z!deC)yphu9_0Sl*9WTq_?mZgM#XIs`_Qw*;O|j|M22MzleWcnW)0@5L+oW_7ABu9J zy+awMlk#Prp*`cPJDRG{MLODb=lEt z@8_L1r))g3CjUB{5gWOf3Ol#wvk_C=K)yhJ*nU`$=<^xHhFf5G;zwCNksn_qLhKbT z(E2z=$a#h6MBc>i>neG~kuHyAHto>YI+W}#8(SPIbn^QjMW)@a4Cdn8_zIsIA}<;@ z6DWhyxt`KHToQ22k1)tkLi&y>(qf+W{gvn^sS3b6D!6?#e4}h2FR59=T$Qp!Cu@)4 z)2j#Uk)AQw7WBpmfirC^Ix8VDJ<}9Ba=N6-p@ZH((~kqZn2LpvLl&bMKVwV{NS|6l znT;uP_mYiW&H0saQ0jncV)fQNmZDxHtvNd^?` z!8jzv{`e~V#zY4(7~?zxImKs~wrju?uFp(9w7Y)3Gxa281V4D06@kd_E6^t$)1jw; z1aclV-6dxZTTPIru)yi6G?0mbSRCmBx&s|~*~h69^}|j4dsUEo%T>)V`&K<}i9cN8 zGZYOP>*UwG4Ncpj2Dt?gP%(uDn?hn$1jiKOG1rKWq_PyH&r{fcNd?oV$bG~7FvgjH zlQ zo-U<7AS*EYGx;^5>DC|7m!jN@^PX&&?s&m$Z+~xZZsaz{pej}-1c=X9swy*}qsT?f zY~b<&WbBG^Jo%{oR4nLrjgG*Qb$Kd zQRXY}l>yJtIG83x?N|~MVT%Tw`gZGLM>H_i1u=kwRQszudND_ci8Oyx{Qf&aa!fUx z_FBq%*zl1nqVdPyzy#1|@pD!Y!~@AQCMRnZhDfP$eL0tcC`+p#hVx?pW9w#pV>NFCg|gRiUCQteDXs)4H##|n^?Ye`eurV><;sE z3(WqI)`P$1%WQ@%mZc*?w3PatAB&qem$820BCJ)mI>$x~(FJU5>@__@S4msJld3H3 zo%x$Mh4;@JU4BN1yd;XfYPaGy=tiOH7Ad<#4ruF7Lkpt!F)uhMIczDLmy{w>bq3@6 zqI}9@IszoP9IBlP=MvPL!`Zqrq)*o8I{hd5?u~C9J$-ydvAzR*jZo~`{ z!X5w(_OH_Vs^gP&&JOcqvoC`HDG4VeylvXj;CCT8LL5KjAxh{H@wqbSL*u(~0E5}& z$QmSe)VD*(M$mr$a9@+?j|aRSA_@CHS_p-VRp%ovgOF|T!u#1qEa2E_i{p*?n-Wb= z`B+3~i6jx(G=`Nq!>v3Mho}*CXbHqzLC@?dzeR>Pft?Ns<%F6gaqbX4Rq}7CBS3P4 z*=WkPt(bWK7BhlATmYzNTR(mi8!UUz^uQMGrBV^K&)|_IG4la;!6}TwxdT0=E6{`i zGWFB5bh#0+?Vrm@8*hsC4~D(1+lzWB|8Z4zcdUAAZKdt^L~Z`#)noYz6zQ>^Tb#;0 zS@_;~>`%`z%ejNp1USn0ir@|A;Xl;~K}moQkVvSz6Ygoa~4Kk))AO>#sk7pnKT7xyx8t%{f-T zcL=atknp@$`aRsdj-uwDn6mC^6XdY5egQpI`cp~UgvB$e(IbEzhC1)97IQ+0dJsH| z)E-TGc?9J1YmlH4GjLPMVQI!i5$hh6PBvHX3)D$Awh|EI?CT5a#|uMcJ0Zm2 z4u|(K971o~=CyG&%js@D?mrJ4@fJ`*TYiY(m`5V9E3prgfXd|EvHGuQ{0`KgW59pj zi-`zoRI9b3CYBCLB%=N4N+w+6ZE?>mnXv!T(Bae9M!@^BtxQBzREl$H|7YW^JX@kU z_C<;N_RG`Kq$wF!O5Awe`M?$vGQWAhfeCVOkeCweE2v`oJ1q*PAb7^4Y|`5iN(nPL z1zR09-0?FGCFT5PK_d_e0R1-__xAT8zC3^PKeYYOVJ537*{W3du~fx=ZRYOf&+X*8 zt78~_qmKI%-P+MZ1l{6}C1HR#8AZocNEF3cE)LUd_lptv?->mL$L$fE@M(#b-Q~Ds zmZd~`yxUu^p)Uzmd@Uhowr5AOp#XHhlH&XGjZdQv<)Tc{*wBNIzUx&vs!Piouyjlh z0io$8`#HpK&fGc=Gnr)TZ%gmiJDDHc?8WllTGiai*cvebHr!Whe~I2N|7`BA1x;C8 z@VCXBJcBGsShxV6nAfqgw-ZFWzi@29*B3Kfgz^&pTJFABdJJgf)_>pikyCXwfn$)-Nye% zx%8?9`td)v^!Fvgso(2?!kKiz2*FUUf1xTrQ37)QwhWAcszc>u2Gew|->@rJ&%xkb zu;cFp2v+5V6^(2o^94vSkp2I?Zx!GFm;d?I|Br~BE~ttERgzrX*xNn_w4pdwevJ~~ z2!A=!5KZr!UQ`9}N0U$3rFY0_q>?P(M_j6ej5(2QrCCtIx3Eusz~e7c0`THlw(46^fh*J<#et^i(a(DG=3VIVaZrfLvlx$MW)Y5jHBjZKZ?9ksZu#9r-S(D0vLe> z6zp2~QNVf7QX~3DM#|@zt>Pp(Jrz|zPvL5VP!iNBNbvP5Bb;-XTLN}`sb<3Mi{i&| ziT_F-l9@QhEmhuAKpp zsbA$p-i~$mI%B49p8^#Op%hjZR_M~dx#pEIy>GT}aeRH0+r{Ip4U0O239x3<$C1dk zJr$(t6cO(j>lrwh5V&|8e!mxAIT;{E-aoc?P+Pr>&xoC}KKmuhSgLi7rES#C8*GV} zRF-&o{!zNycQ{egjDsXtiS+QyosEeuQ8Mj=7I!U@BzBZ*h`i;bF_fJaYGcb+RF}NJ zyJGTsDW|VWk#)A58Z9I*H4$amTZt{vv}Jvt$Z$TkxSjwRvImyLrx7tA3jk>s znK8T$ml^TfZ!_tF$gri=c_BH55*gAIleeeRI1v7BKGBmS5@Nzx{fOBKVsH0u=H~BO zIunwJ=`p0|9&aD{n@Or*oAMQDq%JoPzN)q#qGO|ZG3SbRt?(q4=U`vAQYs2(JqHc4 z{aCGq{D@hg)Bs|;U`LrPK5MeX)A|QH@B&;i${i2c7Vcs%6dWamhx*QqoBOhaslJ9w zm@!5oZ=Lyu%epo*X)^au7ZIvG?xm;8kXyKPfzzj7{ni!qM28i z7o47RV!|!dOzs#zF{lhLu*Rpui|c9X>Usa!x>b#)nPL;?Jrf>If0UokW>v+=m8M7U z+U8C!cM$waZBBV}rK-i`)Z|DnpH0rbL@aFu|2+!zkD1wuQIL|da(+f-So|I*d{nCV-W00SxUvO>Zz{xvUpBZ^Zq0xRwLA zTRqA!Uen_Bf-bDyn~z-IG+?b_C$#2xn1l`O&J#>bo|0g*M0lg0hR${X$_<#`E&F~* zFEYu^0dNY7SJ5J@gHtInX}R=Fi+b}^ZLx4!D@zn)-Z2!u3G;^jVMquUm{}N-$8Gf_ zYUj0ISe3i1JGqtNo6ND1uhIywS2GVlkxNSV;LB4XYVh&}30RF}%hb&DY`piIfn&{5 zY`eX=#l&HtbK`frBt5;m=WiD7sdJe>hNar>g?Xl~r+&`E>EI4Q_B8DIoz@s$%0V~9 za6x7$`tzF7L0S-|$k<<*?ZI7PyY>v4-7(~_B) zx0pS2m7&6~*mL}l+4SUuq$bCyV}$beN-EWCo$AlQJZ)6 zu;jy*ckqbZgD`&xrGd^~e}A9N0vwCYs+L6V6br;&9GB@$)W^hl__2jF7KSAp9UTl7 za~Aug+BIR%@ZI2{BeAiH|e)R20RkGC@rv6)wh(ts) z`X@O4J&Mi3<;k<*=hNNyd1+tsco$pD$qTE0#l3e!)M|uYVN9kt;Iq5G_Zu3dLRsda zZLIG6dj9^=BptJy>hk7J<^$)TzUPmiqD2y57hp;yTND=u+v%q1L5MtfKV)feFz~Z< zM)>`D;8%wLjRP(xYV6Au!F2G<_uNx`tir+;7#1mS@|V0>@)CZM!f+E2whL*(;VuM% zBCyV)9bmj55QwRa()MtA`&DN8_^$2o`O9&CR}*^Z^t{fi)Tl%Sflj?dZwB!}sJG+^?Ob1Vi`+nw3^xwwxd zDud4~Tlz}fOGCyeT)&7<&fdZInd~zv1Z-m)EGIZbVjl^%?#mz((M}o!ZWSnn4F#X9 z_kQjxbD~Y&R}~{rE(y{M20s%HP}^Ee^DpmT!4H&)tJV_4ui>CR_=vj!d^>4?SP^hR zp)#9a>Rs(^@{4V;rQJ^xt!C*Km8P=Uk|YM0S>VA%5|uvLqh%tbZqo2 z{t@p18EL4NYJeb(J4$U*blXo~Yvl5=d6G9*j$QaPywuB_eoW?WjfxFy51bK8u!YsQ zLVOXD#t!-L99D@qIx9M2!&_4@NQ8WfhYV7t&tI48A^0X9}^y6 zJfIAU|Jgb?0;{%))VKY>M`MS>KZ;S;8iUYFrCSmaB@|Dv(0Xp+ggKm6G~=7vm8?0N zfD(nLan$KdV94GP3eP)4T)R@=5rcC_}B0H zaawVzMv}@+#iQ1r)`|Fo76ar)7nTmo5Unw$H%z4iAD3&PUT zBn&pQJ4bLaQk{MPf&L301_~4Mcm(hEaz>ju+EGt??Esb9UTmRnXa%931p&DY@x;o$ z#pme++jz!+DzQ}O%S(;G^+a(}en|}UfpA)dF_zMWva~jt$Rco{u%cgjN$2McY5&ds z!ci95vBFVu3Fn-Hgo{OqKVs#lzJ#uaOr#4~=3@Hrw-kS{oRo_J+F%om z4wy(qi0wMJqo6X1``PzyipFP~Wl}p+YmC3Q)c>5U_*s=Y7@gRO4$o|)KZ<1zZ+@P( z7ZAimYyR#KAzq5Q=Q#_mD$Q-KlH<)W|IA4QJ!ie0r`InDwvXd1DmIY}y)iWV0X;HN zlG&2hOja1_6=sggxuzF6F*pn%1Jo`#{w}*{H+RaZDr)+C$nRijnqMyi7&7l5iywD& zN~LJAj`&9pP_OD+w(JXTGi12%7YLNUsY=XtvGBqM>Ft2{Hl`i5;p*0^m*3AhpqvRmm778!h^65JWoLZ1l{sLuK>eO~}nSu?Tm}Gu0O@o1{*)~ARO6cevNIEFM zk34}Mj{{$u8PDh@FEYznj8*C9;jg zt^whLCXPXRj0R-t>~cli)-GOYJc?i81Y#(P*c-u0YR2|#xX}1cLZreE)pGzJD(nOn zJ*Np6sHM(@3mYZgCIPIZQj3(3ql0g}0v9aLmmDWU%_KhO@@7Cbs)vd0!s@#?5Dpuo zU)P{G?&0Y*Ko_}GYxrD;OKP-WhEOrqY3ow2iX97^8v9(L7wdz8RH+Jx20PNS^dn`3 z3L~(GlGWg#eB{d%Yg5UB7eE(Z8xy3+nW{i*?hz(cZf>1x0aa_&QmnoYm)mbOsq?1G=*{j+Z?M<3O+~`B11Jo+O#3UkTR4|_0;16o$C)JGf)^}K#8EzQmrE*>~0BH#O9 z8)GHKhrvJkiHXl=#+ryPS8Z%L>rbY*2n;^w z!*AFHOZ53K!RJdkjP0bYY6A%}uum|B4ySqqka$wa-~N{A8f44bo_r>ry4p4zE5(IC zX6BDo%ipW7OX0RfR`fbWMV_8nkrR_bJsi0$D`@V8tkILKE>SsG^;cu#l!GLvQnK0A z1UI1sb&sA}o?l^EOJr#*;$kMMn;#=Bq&J2zvji>w6yv=XUa_~TxEAHiR2>5p`%@Ft zQA<)i=O%bh9&jmt-mGof_O!j5Z&oAm-Ps*^lKue&DG^rQx8C0;`scKF^5cfZD0#v1 z$!|ratB*;OoZTj;>dDNB>zR#^G>qS_Grx^CV`YQ|(aa^Gjeb9;`ET)FI=^c^ZyS^8 zSIYlq^=3R2&8eq0T$TR(akzmtUyJ=wX;}xYk)3*tkQU=0WF(X znjrl!B4Q{bZBUXX<&V?2D52=S1u^5(+{U&j=hKve<-C(+hof8aVA>x1r|P+QfyNhV zcdX>w>*jj|f&OSwQg^9YOUTDbtT?erLw-xkDM;Ku1A@aM|F{Oo)SrhwA7{+Rmnt0C$9wUMTByUxCheGoolebD>a($%@r*-h&StrRbGmwc9Vh{4ELty(FBa_*-slIHEu?cqKPGN9l(~;{nWy*iuRrb#~bm}u0DGD(= zAN8J;UVK{u!f@Tx5$}|Q79nLF$h~P(pUWi9;Ii03)w%HnfJUXN=N!&-kJA`0LrFMO zu)D%hslddf%-B$*}`4R zy&V~dro?tHJWmMyC;lMa))lbb(Am4-o>@cCMc0yDdrh38jO2EC7Iw-Pc5RE6fw>^^*Y7a0v9E-tJ zN(n2B23kuvbfFf+-|P|~TYc@_an#WJ2*u8b8YH6XZqTSy)*hRd0hNt0(N|Py0>xt1 z0%aCx^~L-~;AnbKt&cb%oxKe6n1QiGt>zZ>g)WznJ@K0~NlD`v6|O`L;ww2w!7OCA z6wan@Pk(kC9Hh#{jH^?{9-(i*On{OUmpQ;;Af@Ctex{jvg(5#zXh)5kdvj<)gWB^> zeWRe1llI|cJy%8n$?zPC#?-Q+m6|LnCO@0|QN?<+)_fH*KCIA6o7t0W)IX3<6Y(q4 zO0rGa1;<8xqanx>p{ct#X4exxY2^|HqJrLc4yK1ZX)V*4LMMY68mz%pTu#;*VA#{C za7cu8huL?bn^2VkucvFC97{ppJB?=Fuve_li5U!a^we_;TPf&6QoQ*=q98DPeB1x# zLnN-Be7FXO5V`cFoLu7I377EUUC10tncX59Ei`H_60=H`s6rQ>h9NCcvJe~=X#=kW zifj_<)RG*cLPpq2fBkdpZ%X7O!hfZD14Wo8x&mVR`_Y%* z1##0b(E{Z5eCX8o1?&RlTW4juZyse5JhaNeci2*?Q^ZJ!R3%V9b{G9p>b4RWS zZ!CLX8wHFH*B@as>1ycxbVMI?Qx}~4pIX4ShQ$pPGeJeGaom%H_dugO)l(<;6+z31 z@LmT;q{XOhF^=9hExC~f{0vLnU?zR7A|9Z$5-6N587O4WoYw1w_>O4rR}sReLsv;J zgoXV>KX4javOxUzvz zVZfXQyH$@_`pFL_7E4R8XW%hz0WgYisR%rzr?TqsTi$+*u^qg*qWWs3bPrp~j)E9a z;K8cy-J`KpDsdu4{mDk-QXQ$e1x%uE)%8%FuO${Enaqc$zA;9iA>NVl=*_*Y5<~B4 zOztRkE*k2+sDR4K(SIJBGG%Wav5WRTWmnSmop=)^mGnX9Yj6l|T7nbm=)0EYA@ZsW zPCDrA0#oYd+)--%fmdz3vwUifa;c^ZH}~Kngtn6n*j~W4DOHB67Ni;ru369xje;@z}MeR)QRj8JD1bzB2ED z1{z)roDf=3Wg2HnJ~;VO*C{yNY29_QN~(E`x!-Xdo_n^$5?ayvtLN*9tg|a$ilH7p z`u)NnTC0I^!z$CER#+l6lF*LpWtm;4fYlN@O0ebtt z@*BJAJhE>1+jLtc3)L80tcm#naiiF{QBIE9_Ri9l+KI_BsiE!FmF4w7?689<+6)yO zodB@{q#+mXc~74$GXVpun*98m)IKsz`Xml;9(%f3!JFLP4-a7g>HVC}@@{*~o+RQR zwMwlSb`)`F^y_A+&=`;zG`3*NSh@sEe{5qzeDE20j#OTHy|a?sKXxm1ay#TPmr}We zhL09tp2}B=e0=h`F`I9vxDX;>C=O+)WH~{N|8os#Z*0DjF!Fyn=&ie`Q7O5Nj{dTg z66z831s;&#iEtvU7-9nYYC4+$)QA4cicS_^e+y`2Vcz<5W@Bq7)FL`ar3ManQjqR5 z-jc^j@m6=X%{=CV`(n@D5$AyJw$hHclu`y^{Iia8s zDOIVBa$a6aVf^Tod6$mVdUAT2>87S6W6og^nuY~Ob`1gh#qfS-*YLjrNGqG-YDR32 zI)DS@RkEVs*Pp+L;^znBU^ivX0RcO`0&2k2$6Iu{Jaq=Mf`?EAwKjoO@!VJ~`@~VM((!Xr-szcT zCo5J~8eekv@7Br=9W^jSVbvFJww|j3g(CLU0W1X&0WtzGu0y-WtRrh7&{&29wLvD?@Ow+dm^kV|ERHPM z^NSk6JTP9HOQTkV)Q`!oTM+&QymdSVB@x5L5ntGTsueYZ0o|NN2IWEtrhKisUZ#lH z9AOZ$c4i0WIHsDs1OjQ?m(8hM?5(3Us>bHqS7wMBZo|^TL<965fHpRGPumlWDEEvkT2lN>8T{CCarRs%iGI~TR&L4Vcgu9 z;ZHW`R1gQvXZw(H(9zvGENDdW#WK=cGAXll-0778@dP%QE!iygesAZ!YO z%+MhySWTmUYzVBD$-hpzjRO|$=L>g6cd4JDjQHqh2`VqEYwhA@<{Tr>*VMUIQ7<1z zmI@(bXHu>(i=y8n$+K3X1p*!ALT^-zl{F?~)44cHhgJY7oty!5Z*o&(iI}1!g4Sc? zC4jXp**!Y~r0=AAjTx|e%!xII>(}^yp2QD^P}RbPn+l!n-a|APAVt(OC4%vwdBRGD z!11NE{N@r5vzBk+H8Y;w!WNksSy{O>2Vb8*xVCWv1u+u7X}|zW{G>A~O!%@Np$424 zD(l9UGAa4ID=uEWbHBLtT)|WtT&X{6Q`?={Fj<-EjEC8g0XSgiz|0AbO4ZRJ2y<2_ zYHdFG<}1lLyXjpy>aJi6N5of=sQ+!@zjjT|-;8#}jq3u?e;*>k;he|O_5JAa5DvGM5)?N3KsPKw+I1(c=T3mraOr0JQD z(}KgJ3LIP(XEt{a{Vp)?1J^-J@SB;~xl`mLrZf)f6Y_@o0ufHm%H}P~G(lk0G1>J1 z=2lyp#ds@?9zQv%7 zK=@fg$(Wr0W(jxo4v6F)J31-3YZ2B6!1Gp-5C?P%Vxmd)0T`fnf54!r5Ch)|4O=eT zKYB6ukFVK5;xIRCvnV0vGb;cRDCC>PW-+FKfu7;u=__^?J9Vl?GNJLYq`P?S_=4UQ zKZ^89;MA{M8RTzJ!PUGbUAkMcwyiwHng9{_rtgKT_i6cfuRkm%s6{PhYCl4%ulFS^ z)4(U|izNs@0!90GE}OZ`m;_k3Q;FI_VscH!}!>U9l`NH_7{D(ke z0B%p|PHKJg#O@^rT7Z*=5YcdGP$w4^XJK)>z_$!>aV9!QU(59mZ0m~Zt?ylYX>mmf zw+-A6LP`LP5k-9LvgKnpWD=AF8Sn=Hrz3#AHUe3`^+AxWaKMh|H-a~UfPP`HoiLHD ztu2N}piQR|lLp5gUIdChzl`J)_=&AWuKXuryMBk5aUg9kmL4b(EylY8z;kdQJVPis za_}>(W!|n4)TU1?JlXXgO;|dbC?n6LHnzSvkW1I}*K^M185wbG$qiP@`Z4*XcL#zk`5+|Y?OVudNnE~o zCmFf&m;HnHp-T0;H5)j>oxVLE*>KScdO0F%W;&mKVcLu-T)9yk9g&!+294xg+(rz< zmEPFR^G?G$U{E250`=id*0Y#4AG2T#xy{K@V@O|*3gvJ=5Ni{&XsnKK=T!O#%pNXF ztrNX;-1s&3^FGY?c@`D)_A6!~r*0A)5Ir;B3hveUt|LtdYwrJHM|Hh)M3}?k!y8|G z|52ML>Frk)|Fh#{B8rN!kiz0O_-4athrFZVtjNXKD;qobL^CZs{EftwyRSIA3LBF~ ztcr)W&0DGm>`0U24?DJV7~wd3Vcc0ww|iKyVBnVgzgof1OJV^>kKcGx@FznU%P}$g z`mep6U)>WsHvJNZUEnkE{Xe?Zzl&e}zhngXFo$AbBpaMeyBdIVfMLGySr-wqxcIiK z+Nah7AgNI^m|*G)>)Zb#w_o{?{bVroGM2@<^u%J29~eI#qg7Cx|K0%6|J;C)A*iT6DFxSJkSaHaRZB~~eA-;{N9J4c z+=d_6+#@X+evtgUS_uF84oM9o6OmAr)^^9L8M)2++5&I?l@AAztlkzbGx@=-hfL65 z>}S(mo&>JEB0~F6ReCetrql4xj&{a-!3G&O)~3{XVj# zu`CN7Y7^N8f#Nww6n}ApT6Dkg+fH_+EbWZ5rn}mX{zT)8n{2{^v#7a>LaSBY6egbG zd*zqsHoM-+vab{R?F*u1bo(X9P* zx9B||HM>%_Z&ZNe&Hb?b#vet?q|=vYzna_hRw82P&mn&id@i56MSClaLv@Bk|6Wy! zfU?N60X!UjJ(<$YUk*eS_lMR}XYVnLSwO?=w^;|1EZ=?}^0{;jWNE6Ds0@=TKJab# zKe|+|ZB*9ovLWLZBk1XSJ2Mu?DNL^{*-$tX^90N$W*SfM9B>1)-Ho~#fz>jlYJdK$ zO{jk!jb9b@Jfrvuipr7LO5|str?_)-cM<$Fu;4{Q?6Q{mtA?gn0%#g?f=<4L;{pMo z!I5YZ&$=SuoSxQsW9#y-P|Lbdh^p|N>8Fif#PCuyS?u$z+g(87CAfB+Z)LAN@hdZA zCCEAr!4~6E6CbrB^1D;EFkxLmo8Vt^J4{nur-H`2r_f-vUHQ4#L3V03jxT9imrjn_ z7bS^WLDppuEi>F*9hSqLCQy-a=53(laRG(`6XD`(r; z8;x)7Y|InqI*QrI&4Q7=q@DxzgWRsD&TOkK(vgbojRqVp;QSy@(aRq% zZ|#|1ZQ-=*a@-PX&d5}w6~@FMWKN!yo#Xx*=vR8*R_Kn-zs=paz%*8lmR6AHjKSa6 z0S<63fi$immRCPaRxs4_=C&PwHVG;J9?v(;Mp;^^Qe-2S%Tu6>Mwc#_G-xL;Bv;Q= z#Aa@G;dst11p1#^KxAZ4AlM<$7`i1huExec0m{W3*jY{g+@ylVPn>&x6i^Z99bcJ0$j2=8d6`!jDpw_R0_!l1f)>v+5Tg;Y?CkPB(f#1dNjamkhx5*>FanID6+g z28Xv1!ttguEvgA)|1!ZeH{P9ppYb02#8*1WTq+@38F|AI2KVOG@0XJ&Y)FM>b6 zoRvIMhz>jH&lKGozwyki&zX8#m=OYA>wUqeY^nKZxE=)Y_Btm&c!Pl{g*qLG_~w^B zAwO5&xQuCg@u`M;W9iW)Z9PNhJNuYUqke7AKQ3k#8fF$|Qf7-U&0bDa!03oj=Qa9qSa!(wjn_ZMPwLFAdruD!kH?BM zZI&5>T2#j^O*q}{4esE9@eP-{Gj(Va=U(f$A3PqJXPUIyl(leE#w11YR`gOkghiW| z`PmNCc9u^h#N0z3s|>t6-AsgvkF)?He#eWC%MaUgwYRxI!&5Opd*A8Xr*-4iZzoa1 zMd=0^^j1YsHyQ#u0s{O?_$0SlF5lzJg>OzRcl|R@@l+%IyLoinuE&A4rktmNA?Rlm zD$b=O6dm_l3$@Wt#Te1(9#Pjj{g7XuPR~#_+pqV^tGoOTXA3|){3VVXS~^!9ak>Gj*yqH zb?|mCeHeM{ydQw;B$mg~PJvq2r)IRe0}V9_pqH79+CG(rzI}bSHPpKC;VZwde={rc zu6ZLm)vg>0F8$b&;Yl;dB4V{F6j$jDM7(v~SCedq#PBCt^%aL@0(}F6EOPaCTQ^?%f&v7CRV=J5 zaDv{<+{*SUKKv}#q-0VbP~2{A?hn`DUVV`gS0;juD_?{oOd=P%!~@?Nk8M^>#^@GV zBO8|;29yOOPG*oztE1wWZnvrzuj22)eyy_&(-m-mo+;L&6iwIoCx}rN#iESOEx3jLLKvdI zCxCeSE(XmV9lhXbdr4YP38ScrM%6`1K+Z1_m z_TPJPbWx#TSx${wHs2gUq0igudhwhv3+=N>!Qo+)7j}O&*|Qd zaox5C1ID()M;NL8(e*QC-a>7YHpS^V_rT?kK?>T6)w(3Q8t?8{^Td%_IO`yfg!ZH5zootXRD71;_3(B*PJ(j+4q+eMtLgVh=CF?N>Xr%R4gL^|fdRUW4Im-1 zeK1j>i7hz_RsD{2up>MzjMW@Efc76hYNTA~$L9 z^7FK1>6CrmP9P1lN_J)ThdUjv?ra1+VCVZuMWIFfVaCugi$(lcnl@EjjT!EC?Z8qO zjDy?%tIM07i2WLDM=$+)@bY@0xvLw5mgHtQzHcUJcC|WzQNN`kGck}LyISpf(^%~f zbRAPucds^#Bs!yGrQqP&UX#0>jAZxz1mf}L&0Og60C|3TTyU@c(e>QZjy&OiH@R^8 zh0ASQZt$8+$V-Ev-`=3h=WxRW>%4j2!Hdanvtvyyu5MMn~l+LO*phG8|C_j$B15f{L>E?dP z{~TBu+v&R{sK(x2@T5}9rGC-qhGF(=Vg^T9!Dwm}%!ps@cb#hyelIh>@4AnDRT|)7 zIg&zu&=47y>2agKi7EAbVnI7ASqB7?1fE(6__jU}qsLgT8vS}n2g~$VB zIxYK?w5Hb?^yuPLZ(mL8#5cRD%=dLUvnm;iynG)(P!eMId)EJ}P|UHr4ofNbhvZ;j zm=gGbc+e@7?6Bd9G4g(?Q4>B z=^GDn7uqrs7RffZO4pKOF-!Rtt&>c>&ekbHvCIFwn5FE$yFZum^7C=md%$F-jyh%N zI6kNhUr|1fEogCpdp+JPMV`k+-0?w(MT{Nu^!ql3T#*G~QPpvw3jOTH26;xC_u2D> zOrdpLMY#5aUs<6k*OG4(_10|&cx!PSYBp12W7v5;eyW{+E%3v?bV($B_9Kg*XW`{> z$L-g|c1qvNjrgdpvsbS$l1?8S>WIByiF&VIojBSyEtfX3Fx9GR5?_^5aA==4LuKTK zY6czoF~-zT?_+pNQby-41qOVqbyR3YUY<6en~Rdwxi{(x%XhQr@Q(EwY^;S1CytMv z9_D=(J!|f-FI{+U9dB#h$esOdEs|2I9<5;6A6G=S6T6H0PdM^|A3_>q`s<7~xHmUl z?@Vqee=JfOL1~=yWQCtbo(xW4{u#vwagMb(nLt*1Wgioshp4*n zP5ts;x14O-0<7PZ)<*$(oSJ`5<$HS=%g9Rc4O*Wjhq6;NBWYyxNDGsjG|2E)S}IAC z)|>h_nuPO#RK~vbphg`q(!v_MCLL4m+xDlJ<3kfJHL86~<}kNQVc_4n5NrIIpfMHO z>XnZAPf@%-zqqxd%W#iPeGB}^2KA&T#@{i9^)eHZD=lce{iz`)UGr@K_0s;oc_xSi zx|1or7`k|-!j?cWAdKqcim2FMj`{r_2d=-@f*@I&jvfnSQD>3$^DO=)yOLnYa2>9) z5NcKJKTr+-eZSd}=4EZ_S9bOq3m=kIy`Px_*mXPBJJkwh#<6$Dn)vv)RV~MYl3t$Q zoM`XP^n#A9O$$0O6_j>FuL}V;Re&9W{nmWVi+qWTxQu{JRih(l>2o7L1$8Q_ZyV<# z_xfVsC3lz?S0?uCBh80{T(|oJ;*L*H6Q;@h_nOl%Y5PpX(izbhNG|E#=8j(l-KAZV z0V#8y)aOsQ$~Q|oDII$S?&Kq9mhUD32gl*7L>d7HI{Ay`V@sm7K^`MHGe&VnA`J?m zVTSjYToewsn*$W0sVMegXSEi68`R<+E*{GtD|+B{7Qzd&L2EN+87el0TD*K-wb1os zsEkZb4!X&i&jgeJ4FVI&&8@jqKTjs%a&)8!2%BGa+n_&pe6c5;@ve$)Mb|y}INC^^oEEENY*h<40;x5abR-2PZ7 zvsp1~e+MG&+r{4oPzXryzN$I@n8~tz;H{;Nm!-0?-W|&@yY>DmH2uyf2%)mU1_NeJISLlUKZ6Vtv zFZJ?U&X_Yq=jO-ww^MxXoRQNF$RkjT06*x|y7YFgMH0EQmELd`c;bv$Y%%`QMKn+W zKn5@4Q2QR|1B41|Zv~fcyGxM+%e5(AZgX1@Dv)$4Sok#(8gv_+aa9r2IFwtI4hIGz zGt#|U&h#WCx#K)J0xla`u2Qa@k$r%nVaT;~ma6&?vsKWA-++Du^i zK)`w*#5?vKSL5Y=5TbN>{l@nq!*?@8!@2~OMmwKHp!YO1hRpMZ4-c0t+=40J5w)cU z1JkIkw!v)H>eQ#z1WN&jcpQ9Z3**40hTEx6b0<62v=@=<$fqqvyL>EuH=%GCrA^)W zDCX+$M<}zp@=o%eSDx<$t$hrkN>?iaF*2_MJ?lAYts_hK-VCXuy_I)au4qCGif%0* zio-jb@s}@Ql&h<}Tlij$2(U9`U91O4tv?cv!`s-vYmM7Gu8TmJ2C{G((ZPj0NBTos z0uTK%g3O0uZVkk?*YF19?Q|ftuk@}95&*~1@!83^+eJPRIiGY#cQS}IUedHSDpDCr z3xY-wIC1%_^&{f|SIb;AK?gwya4Dju8q?4(_TYUedDs@XsAC$}de z0p&vuofp}MhdAWhKUP;~&QBNR#i1{n81}rJZV#JwUW&G^{CFq1=UT@I=&5@$O%UjR z^}Xe0fUD&fF~klBYPkGrbLj?CBfZvtr{A*h;`(x-twICU>#~cfL}VO?ae{Y@QvlddebL`QjZaXvX9>|$9s$oi#j~dIVmLn?YpBN! z2o}BU_G$(VTa=nMl@Oa|sMsGAIn!PiX1F($Jn+NM*vHzi+^O<9cwl5GGIv)4BIRtk z@Vq_n7V%g=LL6z99`=x(T*#1nS$tpgcD6m*Kb8RoY=r2~^)5Cvjs#rlHwg0Z)E9Vx zZKp-rPxe44aNu4cC@D=>f&T66wt+v3KUCFOCesR)L!gHoTKMHUvOWECPN>>tKMI~>E}!4?@)IMTiuX)SMZ%|pwg{FR{V#PS&&Rpa?eG$Ow;L?G z_>6;goRM?Mh?T)x?W=b`8I={ZL>}wZ6eR1UtM&7E1Un5>27y!+qzN{8cEUw#mJloE z%>`qaZ;Nb_%9A5{oB=Jqh#a;Qc?C9~yR6}8Pnu*)io_DTWRKhHjYwLP7BKtMGb&bP z!^oU1Ye7XQ1;U zbDRiR_gU2`-jKD|2bhLMHu}%=GYN6XJ(SqzuuAps(+bvb*9UA*=hz2nz zC>ZS=E-<5i>&RElJm3+R3pgmb1TzrKz zQ<<((Z4Zo(Zq{V)jrgJ#cu9-sD{b~+uJd*_KU#1PZ_tZXAwuoe%hz|vb9BRHZVxrV zhYpheBqLFgSWB!~pS$pdV0Xfyx}sNHNhz?Qg_pG_qMciXcB2k#Mp5S<%@c)0K!VPz z=5Zn;-Gk0xhyJi2B=Yte<;v$^v`z0VpV#oY9*=D_GY4%7B6pT;LE2iGcZsa30b~`w7|)lCkVfx^uRS21kt{Xgd=Z}HLCtwM$XGaR_-Y!8>bKL9u#)n zPO_0XYvd!QkXKwmI~qZZ>>zmYSc;g{L#%i$ zxA0B{U5;`|dc8)WjEn@y}gF%YqNfM7Z-%6+JfXdH=o~K z9MA~eoPi{6;*HrC>V4?__fI8*M3AC~Tg|sRlE-7b`Bptn%_nm}6q&iSMqVx7j&q3# z#OfP<#ibVZ@bEZT>db-o!wchX+@NHDrpnujpz}jSP74AD%<)m1;vw2RkZ{S~*}q{# z!25jh6b=r#G-ir23z8OEl#tjVmb^PLxJ#SsX5+d63PXiiM# z;Q?%?0!TyfB^T%2HS}((`1shX)LIgGwbi8Sda|jYqf(ZtSK7T6uBt35Ha9Qq?UG3! zZ;+O0aU(TYB*+92cfFm%JfsrwV+XTWzCWiG@~EwKvG?_*OC1PnP`J;QV^9LP{#BJf z8M_dxRqL`kH4c%Srt#nc_{c0>80)>tZpq*!It8YQCnYyrAA}G%Ek_v`>W)`x&TA@y zA%(i%?YZCP@+9YqdRglvCzyUS+|6ODA%c=Q1A)lx;L8C3!a?z+JI?e{z=il+_ZdvI z!&)NXZGlm_ti4KYaXz3G9@khLoJ|7<`?>C(Tw!twxU7XApDzE26fJW!8jbJh9|U+m zZ8(xCbG>xYmImM-?rG%oqSTcrsKp^)Nez%oO4V8s@qwA@9uk{b{X{iHB z`RdecoY8=WhLsaC|bmv_RFb zw9c9yv|nt!&D*O1;*svWDrMgb*mAhus&nEDJ@%V`2M8J9@&7@0G}y7<4z_rRS)V3; zry#X_SkUK3K*oMBhy9+{G38|^99H4;&0Rz>}9m>Vwwvc>UpJwj6(VFI~ zunTj!dcY8qvoTi{o$=ATmV_sDFB=#gKH;J>07qiFvj>2V^=#ge~84 zpyJ(MWY7P=3~zn^1%ps`a+jJlWcRa|TQ4C>iG54;cQf2fR~kqPz%DxRM?;!;`6%>NBfT1~BNQ#RVY8Bu_S z;99V2>|8``67wHeKMwM*Z zSUImz4zncbM2?P1Z&xL4VzcctN)8R1mqnjxSR7SIKk0eY5!V;m)8y-x*Jhx(ho&?I;su?Ck8^tI`j-KRput>fDMQaLj^g&(s>dnY~eO{WSFmdQg_%D`A zED=#B{Zdv?rxa8P;{+XiBR16XtlN1mBWTf8%)+ywQ<*&g;~CH>^Cy7y#vVFP{Z7cv zqyPO$H1eyT*+`7agQh3UpQqx<(M8KOV$udQv+Xtqt`@^(G&VN3Ffs2dO~0C;@4K2m zTso)r05mhx0=tKSTqL%x&fjzVkXU!a_PoMD$Tl5j2u*4o+)N^Mh#0qYnQU8hiCWhj zdbnhIB!07i)%O~J>~PL?7hZZZeGEz8Cz|GLj*GdGJimn&c3t&})?5Q6x73yuS+!b9 z!6U^E(r1xW>glr{01)B zBKc#n$*UCBI?ge-o)C$mN4ee#Z3i7;1k`+MHRj47(U%gU;)NLa>B4J6R|L6|zVFxT zGKdHCAT7u0$Z#^+pxbp!$;+m$pU5i^fU4zItA0h;{m0gIS0qtI;a$&ge_@$uO-XL~ z57Z3KU=*b5(Yw7Dn}=A{gLk7Ml^f%1BlQ^1t87nno$IQ|*4uJH6EMwtgX& zePg`Ox zEdk(D4cP79BZ3M#1Jw*ksXayFl*gVhByM`F#^Rc=S-dH>NlEo1o z7VH{}wSG6g)tPKgH9dP=c!IGcLEQS--&Eh9T!-lYAZ}o=+R8=`$c|^ia^_z1RH|EF zJM*@cyLqJ6@tvV}?{uJi{}{8$6!;6bZ{xJqV!YSH_p|}=F;1cf(@aP29q+q}3Y_$} zmBkehHnQ@*x?|CId2CN@@ldDzmn!y_YE>5VGJflf*{am=%3b2l69) zZKg|a!Q_Vcd8~WQQbvQ^p8Rc`LTI!C4jJ!N?ZyFtV&wQvS{*l-tX@UywC*eS+lamY zSb*+9qO@(4B$cLdx-{oB|46FZLSKD5Iz2PaW^TBJ)zy;aD$Yivp_z}5#kOLgZ$x?O zaF&b#%$GfRBY3bIBx)o-U++s~xU@Vwov2}Dop`dT7@5$l^Q{4x{*8D12P=D@Vi!o| zINGxI6Lmm9VdvURR8d9v&y9<)Ill%Ix;V%tsxqn-{_X!oLD4CP1TF%_POk+S!M$uLN??Iz8eZ}7#vLyXWU#S$B+cax%+I~pIwKNdg0 z7v)z|;sHl>Dd6x2mJ}Z6UJ?I(=>yZ>ef}+14zU${$?>;W9Kx*N`u+F!GswwOXLuyiMij(rE|N14Y&{~f z({F>coRDK0jSJ)CCMi^UYJm$?hn??$l8A!DXa$UD@#8`=e7sN)=$$xYgVO;kvQ7PK;6o9(-b}%{SFdzuv5`>Y4M{#>e0?zhZPEyYq3|7L-G=P&X>!Kp zI}<5ePpc(E1L3g>WK2)G&3kL~yPgbx#6~kID|j^Bdq*W-ol0>KvT@P{1dw@caUr5w z{I|fgk#HhNI_%_(>Vm<#9lb~LZY+*h&`CBlTJp3#(otDpZ;$36I>Mi>)aZ^mBk1<> z)r&I!6&*m}?Wp@AqWvuUdKMz-w*{}=cgyfT){t;F&rC9i&Og2IdhP?KmApuXjN8Y$ zhxkFnPiNoVh@86Z=|IHX5B67cuRAaCH-Hm{^vE{`>Y`s
eObjGom2pWO5>5v2UW=dZ=j@CEHN%-Nyl(RH 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 import('./pages/ukmesh/UKCompanionPage.js').t const UKBestPracticePage = lazy(() => import('./pages/ukmesh/UKBestPracticePage.js').then(({ UKBestPracticePage: Component }) => ({ default: Component }))); const SpamPage = lazy(() => import('./pages/SpamTransparencyPage.js').then(({ SpamPage: Component }) => ({ default: Component }))); const TopologyPage = lazy(() => import('./pages/TopologyPage.js').then(({ TopologyPage: Component }) => ({ default: Component }))); -const StatusPage = lazy(() => import('./pages/StatusPage.js').then(({ StatusPage: Component }) => ({ default: Component }))); const NotFoundPage = lazy(() => import('./pages/NotFoundPage.js').then(({ NotFoundPage: Component }) => ({ default: Component }))); const PUBLIC_ROUTE_ELEMENTS: Record = { @@ -39,7 +38,6 @@ const PUBLIC_ROUTE_ELEMENTS: Record = companion: , install: , docs: , - health: , owner: , 'open-source': , stats: , diff --git a/frontend/src/pages/StatusPage.tsx b/frontend/src/pages/StatusPage.tsx deleted file mode 100644 index ea5a049..0000000 --- a/frontend/src/pages/StatusPage.tsx +++ /dev/null @@ -1,256 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { LoadingIndicator } from '../components/LoadingIndicator.js'; -import { Bar, BarChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts'; -import { useRuntimeFeatures } from '../config/runtimeFeatures.js'; -import { getCurrentSite } from '../config/site.js'; -import { useVisibilityPoll } from '../hooks/useVisibilityPoll.js'; -import { fetchJson, withScopeParams } from '../utils/api.js'; -import './network-intelligence.css'; - -type PublicHealthPayload = { - status: 'healthy' | 'degraded' | 'critical'; - generatedAt: string; - maintenance: { active: boolean; message: string | null }; - incidents: Array<{ code: string; severity: 'warning' | 'critical' }>; - components: { - ingest: { status: string }; - workers: { status: string }; - storage: { status: string }; - }; -}; -type FirmwarePayload = { total: number; versions: Array<{ hardware_model: string; firmware_version: string; count: number }> }; -type FirmwareDistributionRow = { - firmware_version: string; - count: number; - hardware_models: string[]; -}; - -function isRecord(value: unknown): value is Record { - return typeof value === 'object' && value !== null && !Array.isArray(value); -} - -function hasStringStatus(value: unknown): value is { status: string } { - return isRecord(value) && typeof value['status'] === 'string'; -} - -function isPublicHealthPayload(value: unknown): value is PublicHealthPayload { - if (!isRecord(value) || !isRecord(value['maintenance']) || !isRecord(value['components'])) return false; - const components = value['components']; - return isRecord(value) - && (value['status'] === 'healthy' || value['status'] === 'degraded' || value['status'] === 'critical') - && typeof value['generatedAt'] === 'string' - && typeof value['maintenance']['active'] === 'boolean' - && (typeof value['maintenance']['message'] === 'string' || value['maintenance']['message'] === null) - && Array.isArray(value['incidents']) - && value['incidents'].every((incident) => ( - isRecord(incident) - && typeof incident['code'] === 'string' - && (incident['severity'] === 'warning' || incident['severity'] === 'critical') - )) - && hasStringStatus(components['ingest']) - && hasStringStatus(components['workers']) - && hasStringStatus(components['storage']); -} - -function isFirmwarePayload(value: unknown): value is FirmwarePayload { - return isRecord(value) - && typeof value['total'] === 'number' - && Array.isArray(value['versions']); -} - -function aggregateFirmwareVersions(versions: FirmwarePayload['versions']): FirmwareDistributionRow[] { - const byVersion = new Map(); - for (const row of versions) { - const firmwareVersion = row.firmware_version || 'Unknown'; - const existing = byVersion.get(firmwareVersion); - if (existing) { - existing.count += row.count; - if (!existing.hardware_models.includes(row.hardware_model)) { - existing.hardware_models.push(row.hardware_model); - } - continue; - } - byVersion.set(firmwareVersion, { - firmware_version: firmwareVersion, - count: row.count, - hardware_models: [row.hardware_model], - }); - } - return Array.from(byVersion.values()); -} - -function isUnknownFirmwareVersion(version: string): boolean { - return version.toLowerCase() === 'unknown'; -} - -function statusPresentation(status: string): { dot: string; label: string } { - switch (status) { - case 'ok': return { dot: 'ok', label: 'Operational' }; - case 'running': return { dot: 'ok', label: 'Running' }; - case 'idle': return { dot: 'ok', label: 'Ready' }; - case 'warning': return { dot: 'warning', label: 'Needs attention' }; - case 'stale': return { dot: 'warning', label: 'Delayed' }; - case 'critical': return { dot: 'critical', label: 'Critical' }; - case 'failed': return { dot: 'critical', label: 'Failed' }; - default: return { dot: 'unknown', label: 'Checking' }; - } -} - -function reportTime(generatedAt: string): string { - const value = new Date(generatedAt); - return Number.isNaN(value.getTime()) - ? 'just now' - : value.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); -} - -export const StatusPage: React.FC = () => { - const site = getCurrentSite(); - const network = site.networkFilter ?? site.network; - const observer = site.observerId; - const { privacyGeneration } = useRuntimeFeatures(); - const [data, setData] = useState(null); - const [error, setError] = useState(false); - const [firmware, setFirmware] = useState(null); - const [includeUnknownFirmware, setIncludeUnknownFirmware] = useState(false); - - useEffect(() => { - setData(null); - setFirmware(null); - setError(false); - setIncludeUnknownFirmware(false); - }, [network, observer, privacyGeneration]); - - useVisibilityPoll(async (signal) => { - const next = await fetchJson( - withScopeParams('/api/health', { network, observer }), - { cache: 'no-store', signal }, - { timeoutMs: 15_000, maxBytes: 2 * 1024 * 1024, validate: isPublicHealthPayload }, - ); - if (signal.aborted) return; - setData(next); - setError(false); - }, { - scopeKey: `platform-health:${network}:${observer ?? 'all'}:${privacyGeneration}`, - intervalMs: 60_000, - timeoutMs: 15_000, - onError: () => setError(true), - }); - - useVisibilityPoll(async (signal) => { - const next = await fetchJson( - withScopeParams('/api/repeaters/firmware', { network, observer }), - { cache: 'no-store', signal }, - { timeoutMs: 15_000, maxBytes: 2 * 1024 * 1024, validate: isFirmwarePayload }, - ); - if (!signal.aborted) setFirmware(next); - }, { - scopeKey: `firmware-health:${network}:${observer ?? 'all'}:${privacyGeneration}`, - intervalMs: 10 * 60_000, - timeoutMs: 15_000, - }); - - const firmwareDistribution = firmware ? aggregateFirmwareVersions(firmware.versions) : []; - const unknownFirmware = firmwareDistribution.find((row) => isUnknownFirmwareVersion(row.firmware_version)); - const visibleFirmwareDistribution = includeUnknownFirmware - ? firmwareDistribution - : firmwareDistribution.filter((row) => !isUnknownFirmwareVersion(row.firmware_version)); - const xAxisInterval = Math.max(0, Math.ceil(visibleFirmwareDistribution.length / 8) - 1); - - return ( -
-

Public operations

Platform status

Service health, ingest freshness, and worker state without exposing private infrastructure details.

- {!data && !error && } - {error && !data &&
Status data is currently unavailable.
} - {data && ( - <> -
- {data.status === 'healthy' ? 'All monitored systems operational' : `Platform ${data.status}`} - Updated {reportTime(data.generatedAt)} -
- {data.maintenance.active &&
Planned maintenance{data.maintenance.message ?? 'Maintenance is currently in progress.'}
} - {data.incidents.length > 0 &&

Current notices

{data.incidents.map((incident) =>
{incident.code.replace(/_/g, ' ')}{incident.severity === 'critical' ? 'A monitored service is disrupted.' : 'A monitored service needs attention.'}
)}
} -
- {([ - ['Public ingest', 'Packet intake and freshness', data.components.ingest.status], - ['Background workers', 'Scheduled processing services', data.components.workers.status], - ['Storage', 'Durable platform storage', data.components.storage.status], - ] as const).map(([title, description, status]) => { - const presentation = statusPresentation(status); - return ( -
-

{title}

-
-
- - {presentation.label} - {description} -
-
-
- ); - })} -
-
-

Repeater firmware distribution

- {firmware && firmware.versions.length > 0 ? ( - <> - {unknownFirmware && ( -

- -

- )} - {visibleFirmwareDistribution.length > 0 ? ( - <> - - - - - - [value.toLocaleString(), 'Repeaters']} /> - - - -
- - - - - {visibleFirmwareDistribution.map((row) => ( - - - - - - ))} - -
Repeater firmware distribution{includeUnknownFirmware ? '' : ' (Unknown excluded)'}
FirmwareHardware modelsRepeaters
{row.firmware_version}{row.hardware_models.join(', ')}{row.count}
-
- - ) : ( -

Only repeaters with unknown firmware were reported. Select "Include Unknown" to show that bucket.

- )} - - ) :

Firmware telemetry is not yet available.

} -
-

Status values are deliberately aggregated. Hostnames, addresses, credentials, and private node identities are never included.

- - )} -
- ); -}; diff --git a/frontend/src/pages/network-intelligence.css b/frontend/src/pages/network-intelligence.css index 2966022..f6b8bf9 100644 --- a/frontend/src/pages/network-intelligence.css +++ b/frontend/src/pages/network-intelligence.css @@ -69,45 +69,6 @@ .topology-page__validation-table-head { color: var(--text-muted) !important; font: 11px var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase; } .topology-page__validation-table strong { color: var(--amber); font: 11px var(--font-mono); text-transform: uppercase; } -.status-page { padding-top: 48px; padding-bottom: 64px; } -.status-page > header { margin-bottom: 22px; } -.status-page > header h1 { margin: 4px 0 8px; } -.status-page > header > p:last-child { color: var(--text-secondary); } -.status-page__banner { display: flex; justify-content: space-between; gap: 15px; padding: 14px 18px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--bg-panel); } -.status-page__banner strong { color: var(--text-primary); } -.status-page__banner span { color: var(--text-muted); font: 10px var(--font-mono); } -.status-page__banner--healthy { border-color: rgba(0, 230, 118, 0.45); } -.status-page__banner--degraded { border-color: rgba(255, 179, 0, 0.55); } -.status-page__banner--critical { border-color: rgba(255, 23, 68, 0.6); color: #fca5a5; } -.status-page__maintenance { display: flex; gap: 16px; margin-top: 10px; padding: 11px 16px; border-radius: var(--radius); background: var(--amber-dim); color: var(--amber); } -.status-page__maintenance span { color: var(--text-secondary); } -.status-page__problems { margin-top: 20px; } -.status-page__problems h2 { margin-bottom: 8px; font-size: 15px; } -.status-page__problem { display: flex; gap: 14px; padding: 9px 12px; border-left: 3px solid var(--amber); background: var(--bg-panel); } -.status-page__problem + .status-page__problem { margin-top: 4px; } -.status-page__problem strong { min-width: 180px; color: var(--amber); font: 10px var(--font-mono); text-transform: uppercase; } -.status-page__problem span { color: var(--text-secondary); font-size: 11px; } -.status-page__problem--critical { border-left-color: var(--danger); } -.status-page__problem--critical strong { color: var(--danger); } -.status-page__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 20px; } -.status-page__grid > section { padding: 18px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--bg-panel); } -.status-page__grid h2 { margin: 0 0 12px; font-size: 14px; } -.status-page__grid dl div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--border); } -.status-page__grid dt { color: var(--text-muted); } -.status-page__grid dd { color: var(--text-primary); font-family: var(--font-mono); } -.status-page__checks > div { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 7px 0; border-bottom: 1px solid var(--border); } -.status-page__checks strong { overflow: hidden; color: var(--text-secondary); font: 11px var(--font-mono); text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } -.status-page__checks small { color: var(--text-muted); } -.status-page__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-muted); } -.status-page__dot--ok { background: var(--online); box-shadow: 0 0 8px rgba(0, 230, 118, 0.45); } -.status-page__dot--warning, -.status-page__dot--stale, -.status-page__dot--unknown { background: var(--amber); } -.status-page__dot--critical, -.status-page__dot--failed, -.status-page__dot--disabled { background: var(--danger); } -.status-page__privacy { margin-top: 16px; color: var(--text-muted); font-size: 11px; } - @media (max-width: 860px) { .topology-page__workspace { grid-template-columns: 1fr; } } @@ -122,16 +83,4 @@ .topology-page__validation-head { flex-direction: column; gap: 8px; } .topology-page__validation-stats { grid-template-columns: 1fr 1fr; } .topology-page__validation-table [role='row'] { grid-template-columns: 1fr 1fr; } - .status-page { padding-top: 28px; } - .status-page__banner, - .status-page__maintenance, - .status-page__problem { flex-direction: column; gap: 5px; } - .status-page__grid { grid-template-columns: 1fr; } -} -.status-page__firmware { - margin-top: 18px; - padding: 18px; - border: 1px solid var(--border); - border-radius: var(--radius-lg); - background: var(--bg-panel); } diff --git a/frontend/src/pages/shared/SiteLayout.tsx b/frontend/src/pages/shared/SiteLayout.tsx index 7fe5b94..e510df4 100644 --- a/frontend/src/pages/shared/SiteLayout.tsx +++ b/frontend/src/pages/shared/SiteLayout.tsx @@ -10,7 +10,6 @@ type SiteLayoutProps = { showAbout?: boolean; showInstall?: boolean; showMqtt?: boolean; - showHealth?: boolean; showOpenSource?: boolean; showBestPractice?: boolean; showPackets: boolean; @@ -48,7 +47,6 @@ export const SiteLayout: React.FC = ({ showAbout = true, showInstall = true, showMqtt = true, - showHealth = true, showOpenSource = true, showBestPractice = false, showPackets, @@ -81,7 +79,6 @@ export const SiteLayout: React.FC = ({ { to: '/about', label: 'What is MeshCore', enabled: showAbout }, { to: '/install', label: 'Install', enabled: showInstall }, { to: '/mqtt', label: 'MQTT', enabled: showMqtt }, - { to: '/health', label: 'Health', enabled: showHealth }, { to: '/packets', label: 'Packets', enabled: showPackets }, { to: '/open-source', label: 'Open Source', enabled: showOpenSource }, { to: '/stats', label: 'Stats', enabled: showStats }, diff --git a/frontend/src/pages/ukmesh/UKLayout.tsx b/frontend/src/pages/ukmesh/UKLayout.tsx index db9d729..30f9b6c 100644 --- a/frontend/src/pages/ukmesh/UKLayout.tsx +++ b/frontend/src/pages/ukmesh/UKLayout.tsx @@ -27,7 +27,6 @@ export const UKLayout: React.FC = () => { showInstall showBestPractice showMqtt={false} - showHealth showPackets={false} showOpenSource={false} showStats={false} diff --git a/frontend/test/e2e/accessibility.spec.ts b/frontend/test/e2e/accessibility.spec.ts index 28fceb7..019c261 100644 --- a/frontend/test/e2e/accessibility.spec.ts +++ b/frontend/test/e2e/accessibility.spec.ts @@ -91,21 +91,6 @@ async function fulfillApi(route: Route) { }, }); } - if (pathname === '/api/health') { - return route.fulfill({ - json: { - status: 'healthy', - generatedAt: '2026-07-18T12:00:00Z', - maintenance: { active: false, message: null }, - incidents: [], - components: { - ingest: { status: 'ok' }, - workers: { status: 'running' }, - storage: { status: 'ok' }, - }, - }, - }); - } if (pathname === '/api/topology') { return route.fulfill({ json: { @@ -229,7 +214,6 @@ const publicRoutes = [ '/companion', '/install', '/docs', - '/health', '/login', '/open-source', '/stats', diff --git a/frontend/test/e2e/mobile.spec.ts b/frontend/test/e2e/mobile.spec.ts index 33756d4..51d81c7 100644 --- a/frontend/test/e2e/mobile.spec.ts +++ b/frontend/test/e2e/mobile.spec.ts @@ -62,18 +62,6 @@ const chartStats = { }, }; -const health = { - status: 'healthy', - generatedAt: '2026-07-18T12:00:00Z', - maintenance: { active: false, message: null }, - incidents: [], - components: { - ingest: { status: 'ok' }, - workers: { status: 'running' }, - storage: { status: 'ok' }, - }, -}; - const repeaterNodes = Array.from({ length: 12 }, (_, index) => ({ node_id: `node-${index}`, name: `Repeater ${String(index + 1).padStart(2, '0')}`, @@ -109,7 +97,6 @@ async function installApiFixtures(page: Page) { }, }); } - if (pathname === '/api/health') return route.fulfill({ json: health }); if (pathname === '/api/repeaters/firmware') { return route.fulfill({ json: { @@ -168,7 +155,6 @@ const routedViews = [ ['UK install', 'http://127.0.0.1:4173/install'], ['UK open source', 'http://127.0.0.1:4173/open-source'], ['UK stats', 'http://127.0.0.1:4173/stats'], - ['UK health', 'http://127.0.0.1:4173/health'], ['UK login', 'http://127.0.0.1:4173/login'], ['UK docs', 'http://127.0.0.1:4173/docs'], ['test site home', 'http://127.0.0.1:4175/'], diff --git a/frontend/test/e2e/public.spec.ts b/frontend/test/e2e/public.spec.ts index e02c149..e499ff2 100644 --- a/frontend/test/e2e/public.spec.ts +++ b/frontend/test/e2e/public.spec.ts @@ -105,22 +105,6 @@ test('public site exposes its primary journeys', async ({ page }) => { }, }); }); - await page.route('**/api/health**', async (route) => { - await route.fulfill({ - json: { - status: 'healthy', - generatedAt: '2026-07-11T12:00:00Z', - maintenance: { active: false, message: null }, - incidents: [], - components: { - ingest: { status: 'ok' }, - workers: { status: 'running' }, - storage: { status: 'ok' }, - }, - }, - }); - }); - await page.goto('/'); await expect(page.getByRole('heading', { name: 'UK Mesh Network' })).toBeVisible(); await expect(page.getByRole('link', { name: 'Open live map' }).first()).toBeVisible(); @@ -142,15 +126,7 @@ test('public site exposes its primary journeys', async ({ page }) => { await expect(page.getByLabel('Geographic repeater topology graph')).toBeVisible(); await expect(page.getByRole('group', { name: '2 positioned repeaters and 1 links' })).toBeVisible(); - await page.getByRole('link', { name: 'Health', exact: true }).click(); - await expect(page.getByRole('heading', { name: 'Platform status' })).toBeVisible(); - await expect(page.getByText('All monitored systems operational')).toBeVisible(); - await expect(page.getByText('Status data is currently unavailable.')).toHaveCount(0); - await expect(page.getByRole('heading', { name: 'Public ingest' })).toBeVisible(); - const statusAccessibility = await new AxeBuilder({ page }).analyze(); - expect(statusAccessibility.violations - .filter((violation) => violation.impact === 'critical' || violation.impact === 'serious') - .map((violation) => ({ id: violation.id, targets: violation.nodes.map((node) => node.target.join(' ')) }))).toEqual([]); + await expect(page.getByRole('link', { name: 'Health', exact: true })).toHaveCount(0); }); // Guards issue #3 (contrast): the feed chrome renders the muted/secondary text