From 748ba46669aa5dcdc97a80a133da7d9f9f85be36 Mon Sep 17 00:00:00 2001 From: Anso Date: Sat, 18 Apr 2026 01:36:12 -0400 Subject: [PATCH] feat(dashboard): status masthead, unified gauges, stack health sparklines (#676) * feat(dashboard): status masthead, unified gauges, stack health sparklines Rework the home dashboard around a single cyan-railed status masthead that carries the health state word, node meta, and reasons inline. The resource block collapses into one strip with a CPU hero sparkline, memory and disk gauge bars, and a network tile whose sparkline is built from per-container byte-counter deltas. Stack health becomes an 8-column mono table with row tinting, an uptime column sourced from the oldest running container's creation time, and a per-stack 10-minute CPU sparkline. Historical charts pick up a cyan gradient and an amber peak marker. A shared Sparkline primitive backs all of the above. * docs(dashboard): refresh screenshot for phase B layout * fix(dashboard): anchor sparkline bucketing to latest metric timestamp The cpuHistory, netHistory, and cpuPeakLabel memos called Date.now() inside useMemo, which violates react-hooks/purity: the rule fires because re-renders can produce different bucket boundaries from the same inputs. Derive a historyEndAt anchor from the newest metric sample in the polled series and thread it through to ResourceGauges. --- backend/src/index.ts | 2 +- backend/src/services/DockerController.ts | 14 + docs/features/dashboard.mdx | 56 ++-- docs/images/dashboard/dashboard-overview.png | Bin 79261 -> 124998 bytes frontend/src/components/HomeDashboard.tsx | 15 +- .../components/dashboard/HealthStatusBar.tsx | 242 +++++++++---- .../components/dashboard/HistoricalCharts.tsx | 74 +++- .../components/dashboard/ResourceGauges.tsx | 248 +++++++------- .../components/dashboard/StackHealthTable.tsx | 317 +++++++++++------- frontend/src/components/dashboard/types.ts | 17 + .../components/dashboard/useDashboardData.ts | 164 ++++++++- frontend/src/components/ui/sparkline.tsx | 124 +++++++ 12 files changed, 914 insertions(+), 359 deletions(-) create mode 100644 frontend/src/components/ui/sparkline.tsx diff --git a/backend/src/index.ts b/backend/src/index.ts index afc61b3b..f6d77ee1 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -4376,7 +4376,7 @@ app.get('/api/stacks/statuses', async (req: Request, res: Response) => { const dockerController = DockerController.getInstance(req.nodeId); const bulkInfo = await dockerController.getBulkStackStatuses(stackNames); // Map back to filenames to match frontend expectations - const data: Record = {}; + const data: Record = {}; for (const stack of stacks) { const name = stack.replace(/\.(yml|yaml)$/, ''); data[stack] = bulkInfo[name] ?? { status: 'unknown' }; diff --git a/backend/src/services/DockerController.ts b/backend/src/services/DockerController.ts index 90281637..8a4ddfe0 100644 --- a/backend/src/services/DockerController.ts +++ b/backend/src/services/DockerController.ts @@ -29,6 +29,8 @@ const IGNORE_PORTS = [1900, 53, 22]; export interface BulkStackInfo { status: 'running' | 'exited' | 'unknown'; mainPort?: number; + /** Unix seconds of the oldest running container (approximates stack uptime). */ + runningSince?: number; } export interface ClassifiedImage { @@ -660,6 +662,18 @@ class DockerController { if (container.State === 'running') { result[stackDir].status = 'running'; + // Track the oldest running container's creation time as a proxy for + // stack uptime. Docker's listContainers payload exposes Created (unix + // seconds) but not StartedAt; for compose stacks the gap is small + // enough to treat as uptime without paying for a per-container inspect. + const created = typeof container.Created === 'number' ? container.Created : undefined; + if (created !== undefined) { + const existing = result[stackDir].runningSince; + if (existing === undefined || created < existing) { + result[stackDir].runningSince = created; + } + } + // Detect main web port (first running container with a matchable port wins) if (result[stackDir].mainPort === undefined && Array.isArray(container.Ports) && container.Ports.length > 0) { const ports = container.Ports as { PrivatePort?: number; PublicPort?: number }[]; diff --git a/docs/features/dashboard.mdx b/docs/features/dashboard.mdx index e4447863..03d4ec78 100644 --- a/docs/features/dashboard.mdx +++ b/docs/features/dashboard.mdx @@ -6,53 +6,63 @@ description: Real-time system stats, stack health, historical metrics, and recen The **Home** tab is the first thing you see after logging in. It provides a live overview of your node's health, resource usage, stack status, and recent alert activity. - Sencho dashboard showing health status, resource gauges, stack health table, and historical charts + Sencho dashboard showing status masthead, unified gauge strip, stack health table, and historical charts -## Health status bar +## Status masthead -The top bar provides an at-a-glance health assessment for the active node. Sencho evaluates CPU, RAM, disk usage, exited containers, and unread error alerts to derive one of three states: +The masthead at the top of the dashboard is the single place to read the node's current condition. It carries: -| Status | Meaning | -|--------|---------| +- A **state word** (Healthy, Degraded, or Critical) set in the editorial display face so the reader sees it first. +- A **pulsing dot** that mirrors the state color: green when nominal, amber when degraded, rose when critical. +- A **meta line** with the active node, the number of nodes in the fleet, and the time since the last successful sync. +- A **reasons line** that names exactly which signals moved the state away from Healthy (for example, "CPU 84% · 2 exited · 3 unread errors"). No hovering required. +- Three quick stat tiles on the right: containers running, aggregate CPU, and memory in use. Hover the **Running** tile to see the managed / external / exited breakdown. +- An alerts counter pinned to the far right. + +Sencho derives the state from CPU, RAM, disk usage, exited containers, and unread error alerts: + +| State | Meaning | +|-------|---------| | **Healthy** | All systems nominal. No resources above warning thresholds, no unread errors. | | **Degraded** | At least one resource is above 80%, there are exited containers, or there are unread error alerts. | | **Critical** | At least one resource is above 90%, or there are exited containers combined with unread errors. | -The bar also shows the active node name, the number of running containers, and the current alert count. +## Unified gauge strip -## Resource gauges +A single rail of four tiles shows the numbers that change minute-to-minute: -Five compact cards display real-time host and container metrics: - -| Card | What it shows | +| Tile | What it shows | |------|---------------| -| **CPU** | Current CPU usage percentage, core count, and a color-coded gauge bar | -| **Memory** | RAM usage percentage, used/total in GB, and a gauge bar | -| **Disk** | Disk usage percentage, used/total for the primary mount, and a gauge bar | -| **Containers** | Active container count (hover to see managed vs. external breakdown) and exited count | -| **Network** | Current RX (receive) and TX (transmit) throughput in bytes/second | +| **CPU (hero)** | Current usage with a 10-minute sparkline, average for the window, and the peak value with its time offset | +| **Memory** | RAM usage with a compact bar and the exact used/total split | +| **Disk** | Mount usage with a compact bar and the exact used/total split | +| **Network** | Total throughput per second with the received/transmitted split and a live rhythm spark | -Gauge bars turn yellow at 80% usage and red at 90%. +The CPU tile's sparkline uses cyan as the data color and marks the peak in amber. Memory and disk bars turn amber at 80% and rose at 90%. -## Stack health table +## Stack health -A table listing every stack in your `COMPOSE_DIR` with live status and resource usage: +A mono table of every stack discovered in your `COMPOSE_DIR`, sorted by load so the stacks demanding attention sit at the top: | Column | Description | |--------|-------------| +| **State dot** | Green when healthy, amber when any container in the stack is pushing CPU above 80%, rose when one has exited or is above 90% | | **Stack** | Stack name (derived from the directory name) | -| **Status** | `UP` (running) or `DN` (exited) | +| **Host** | Active node this stack belongs to | +| **Up** | How long the oldest running container has been up, in compact units (s/m/h/d) | +| **CPU** | Latest aggregate CPU for the stack's containers | | **Memory** | Total memory allocated by the stack's containers | +| **CPU · 10m** | Per-stack sparkline of the last 10 minutes, tinted to match the row state | -Click any row to navigate directly to that stack's editor. Stacks are sorted with running stacks first, then alphabetically. If you have more than 8 stacks, the table paginates automatically. For fleet-wide CPU usage, see the **CPU** resource gauge card at the top of the dashboard and the **CPU Usage** historical chart below the table. +Warning rows take on a subtle amber wash; critical rows take on a rose wash. Click any row to jump to that stack's editor. If you have more than 8 stacks, the list paginates automatically. -## Historical metrics charts +## Historical charts Two area charts display time-series data sampled at one-minute intervals, retained for up to 24 hours: -- **CPU Usage** - normalized total CPU percentage across all managed containers over host cores -- **RAM Usage** - total memory allocated by managed containers, in GB +- **CPU** - normalized total CPU percentage across all managed containers over host cores, stroked in cyan with the peak highlighted in amber. +- **Memory** - total memory allocated by managed containers in GB. Hover over a data point to see the exact value at that moment. diff --git a/docs/images/dashboard/dashboard-overview.png b/docs/images/dashboard/dashboard-overview.png index 61114649c57f99ed0888a798989542ac00a323a1..cf2d47fe5b6fbdeabf597c7fcf5a0d632ef711ad 100644 GIT binary patch literal 124998 zcmb?@bySr5_C6ib-JyUW-ObRYAP5R5T~gBB-6bO3poG#nbeGg1DLr)8&PrI zz31Hf=Wi`oYZk+L=My`g{p@E?r20!moJW+85D*Y>l$GQ(5D?G<5D<_MEYenzh^=rjUPZX)z|B1^MSs#zhNUtv+q9D`K)c7NmCsD-#9BF}MtWKc#J4-o!+h zrUnjH#mEmyHVK>3&FA*Ew%2N=cSn2i5o{}LIJUOuWo4yB`DfuGxrvF1$bkqIC5>$h zUJ7$dOH0$!eGz`Lc6N5Qwj6(Zbc7x1(gtLB`0UH51Jro1Q}Go2rQqA2d%EdIqD~I> zxwF()gC zK}002c`&;z^!%DkHV1-}kP#HLXN<*bBSdF0)JckyQup>I5+i8x{|;l-hgB8%@%N`sH|^ zg);pkN}F>OTAapJi>j*X0cELfr$}fKg89(EfaSR5K_?ONf7-;EkOs1{$rbGF&fC#F zQ`F7?tz*}rDVIG8JLci<^%zY0VQwX{DtJH{DjRJbzF*~y8Ll5*h3;|LI1xt{Q|bDq7lZhwZb zJ>F4$7yYMynxBJIyiFLYnT3Sz&u^W!mOcqqb{d&^5RlxXOZ+oWzSIgv%Nn_5deyb< z@q*KEN40=?h{LewHH9?3Z$#TJXfM~TnBgyj+tv-4D^OV~E8`g5qte1}$7N1bJnonZ zu_fu2E4_NuHXvJM>M@cX*k&qqD*y|l0F|LLL|7UvuD-?puwZc0_Iws1oRs@$U7AQP z2T{>w*)2z;n8EtTpKGPR!5=wzoaCB5@L*NyZeXZ~XxKAzF6p_?r?=MEr$CB+)kLd2 zvYH!D4smRAg^=9$1Q5uDyv891mkJelL(Detft`?JSKmuNlsx-0Y~6+Q)eG{V++3b3 zPB+YsW<KYh>mk@&Ys{XpO-Uvu(DxQ8WroK?O8QiiIc2!J+!* z%?FYC!Q3Pece7)4SW!jpbc(*)TXXY`emZ~lqsR4D1Ero1cbA5K*BgzEjjLTvO-(5V zUOVH8bY&G47K{BYp0I46)4@Pwbh}^G8?_TJP4CDtUhC=(wIrscMXr^(kKFEK(!=4`t%aW1K@scFBNs)(bNxap&^-#5TZj|ey7#%LC#T`NEjiij=BY_v2r ziAqsmmY;Jy?*-1&L z1r#q>Sy@Thbr8rretuDoCgU<_^ARa`wwWo<5_R3pmyd?zR>I!kbQe~NS>WAtVR4Dy zolQVN-2>fsmx*eiM)RR$$F;siAK1uNwzu88cXJDk&i2g*_2_gy9|>BCz+;Z1D@(}I zIsG&o-xSdJrO(*HuqlG}2sExnJy5WiZw?xk+YX!d94@8_y@mg!gZq-UUZFg zbOa(xUacTc-xAQc5lp7|xKS9LWde3L&@m#-moJgfA8TUB>rRM%g|`~TxKhc!OkCBTKACDM}O5==u(b2EJ4+`N1K_z1gtD9QfQZ-!B)?> zxQ@K>^s=Cbe1~}BYG;bX$JABoOACS8L2V)Pqr!CSD{+p%#{;Jm_6TexXJ{@#b=b#S zR^!Q=i;hDXqA=g&YJ=xbhT4R9_!+!d$|aZ6DIMOVt*tGFUUD_XgT2zi@3ybAkiKi5 zo?x%GFtOU)>~^p#(zgM>hK)ndk-5>--CwhciBV}YQ43d%)Nef+O;&1t&mRs7JBt-s zl2S9BgK@(|foS(k%h|4WeSQ68t$z(f$DlcAs(SQzz-8nd_t05Eq3`yn9q&5zxEl$M zDd{zuDWYQx?Fz-!CFeHk01{kPLR8cvYE(Bn0m0}ghi8|Q6Pb8va5y~MOJX&nsX0>aeIKHF-(1rmA^vaYBu8MO-89!&>vB(7)A zj3W`xyNbzOf7u36iRyGh_d+REyyqU}tO6F_uatex{8TL)dyBY1p{cQBp6Hnmk6kF( z4h0Q`)_#RNa*qQ#I0$CyP6%Bi&>9D#TO%}So0Aw1zJ+QjwXp4V^W^2T;#YY795`__ zE(pSgVMSu_69l__2m5{aOUl8xgp?HY$OK*yh@GXx2`a+rLFA|0*)TrcVWtz*TJD!+ z!hA#2Ht!vnWYVC7CbL0q!snBkCm7*O2zMWTnIGGbjumLgJ{iCY5m2=0$V!1nHHI^u z5u@0XS;T*Rk>YfjX5~&MTy-o?y2?-*FtuMFfR-j?PaCJ0DKbuR+(M07uQzd8eHaCM zOw_H92&7Vq1@ex7w!4e@6!y1W7E4l_QEcU4_~{T-Zfy(~uc^e!zk9q-T~{o4hHB$t zRgJwzQ74ag6;u;p^^DK^cp!lR3R-p^lhC%I501B&o5^lcmx2OkI43dHQ{hyqAgm z4P!nncptTfl}TK$C(iCL=lGa3)CC10iRX0c-03dgkY?x9_=T;Duh4ty_)Uu>YBIZ# z^N&#BO}96;*&Y#0*911ayi`FMr(3BSJI*o|q5^fL;-q}T;%YfA%&?OIh0PEGK9qq$5lIW+)8O@6ZaiiNX+O}o5@1GgOHv3m``3?o#%pc5(LCA#d?`-_J5 zy5{>nWX^&XP9HZ^-?(>rI}Y;mEuMTad?3%z#j`qaL5FV_v^)HqiQIbEbCRsUWZ~tC zGGDe7>=s2&hexA#ij*Ug%Y^2t(GtBhOk4{lw3IkTW=uidFMVyiNAHSpB_nc8sxCvG z%PsN!+qYCVHq@iiygbCqez-LIxA=L&FU47Qq$`|Qm)v}HkEQHW*G7+P-M*LrV z7`$jH^i;0LkWY%1)IS>dlZ3C+`i3mib@>YVqiABI)q(`VWj&rAN{$o#P73*(TU#(G zqt6s|vcW45S$&UKcCy`h>GM~#3!JBgKzZG1tf8e9HqR|fwu*yFbp|ASr7G&WjyvYs z4zv?_&PRgP7Gv2VVYRSBbkwXIXQg~P%~^U;G)W!sZEy{GI+oCdrNku5I8CsXuPK0D zRueI4T(B2OT|96~&HK6OXr`v7D(C5WvX7x`J_62SNz-!V z{g4<->*h}p79z{iSg>v!X0{4P2szsc?7C1jBb78;+-90RrpTlD7tJ%Egor8#?tfme zTFj6ffnx`%iPXt{@I^^srq&dPrwL)~qQ1H+Vrg7YqU^^NrDDafNN%5q&k4Os>-i{j zh98rDJt&f=&6Byo-Q*%1bwZ%kVXbTXG`Mev_}j^M@=-$W+^UcVlR*tRJzs}3EVN)C zb*)zHR==KDpifq{U{RSd>;-_IzMk7J^V^Gqwdoq%2O=RTcR||4_nw>S>9G3xvoBxH z*4HPcG&FL%v#{#Ej~wLn)z|moSND|!r%}Vh4l4Zb*dB<|!fCxQu-p$9p25!VEv0m) zDN=B-%T8Q~-3h^Mrzw)Fq|`zY;KS7>Bn}>g?kTbcO)#wy%4n>7X(Y)Zcnw!ihTT^| zJA;m_C7QDdgY5AFQwxA8fK+nxf~)llRh`b0@|asj@xy@I7=utYyY8TNfs1Z0AxV>sJKK3if7Tzzf^0K&zg5?s*~ zm+agiO$s$ zj-QEK(0QT|Cy+@0{K~t^1ENeJ&!C7sq-yi+SF??Ux$JyjfvPIkAe-QM+Pf7Ueq+*)caftAx>LAtM(ICjCb*H`G z=SJml=LrZ_=E$FCsoY^!Ne$3_T1&e?y}+3J1Hh(F4yyr#YeZr@-2tXt4D&u)>yLkc z!^Rx7af$-u*##xyu^alpL|=p^9s6m}<4MZGTL<(4&2Q%ms~QWqDDkh|obT}<)U!qUCBJ}tvE}iGz`+5J zhaTikj@5};2`Ek&-wSIvK%fI%4%k~1>~eI$nvt^ae|&x>%nDRK!^^Mjg===i>ck&z zmv~z;9P!evCLForS30CEI>rO}kVlQ+LRk=+yGLr#dCl43+sP6rIWj3d`n{E^5lr=E zOgf0xCgz8EQ~~Mau>4x#7e)hN7E3;I_HE+Estd?cyzD*Gl}Mu<;N7&TS~0U>Rpw;5 z)22bdsry$#y6x?;jq;#HUn^7N>+5KeutLqcBwF}?l8k0EbRH1^qdW;FK1EJ{1m*^_vkpnamxiruiUmSvEM19!uNR4U=LUQ zl2;At{Q!?ayvbW01XM+F24bnFmE?ZcLxx_9bKQ87F<~-$`aq`izv`yb@keUVv+qLJ&>CnL+`%I5>zEdCV#mMyQ|K(Gl5_kPRs?N5t+t%l zLC!B5Nks1BEG)$&@+Lp*8@8y1vbH zsqq{ekAv7c{xB{HL>OGv+2DYMWr%Dp%VBhrD`9?tanxamZunF*HC!?WsG!|ytk#zB z*B#YYP|dSwpzeLsq6rh9fMb%W<4P7+{gBd743?G%UAlgj%H z`CQ%yco;ow9n1!Hcs6J`bDD@|TFM)S5i0mN-2$_CBHOdPiEJ`4WP z5!NSwJj1GIcil2ZuDp5zI_z>Ji;j0-h{|MqCLHlti*EW}qHMy-eD{rRkeOqL)nhbPBFI&0(>Ru*)fdTy!GwV!u1 zUHs&cfAbx5<&skGF>_Y46;A{9yO!qi-iPvW6QV%HJk+BSMRLd=rBzq+-aXmCE=Toh z!J}>FJ@~3ZzS>p2PD>Pa18{5IuHjak2<5!w7ceN>#Dakxk}P4 zq@E-Kq)+XTP-wqK9Ej!gc_LO;+qfWGclw`)4oRFIhc;4#yjy8Qee$H2p6&pR%4Bc4 zOb54J;Zn^}D74u+{F!4$diqrdRcNOz)x!bb^U!&0>?`w&?OX6&aoFP~iUwI77EVWe zf<**hOm~}NvBN@$%Qn@*cNx^{__kM$F5;5}m!_McCi{}_*0S7}I^9^%-rBNSQn@f+w;kr}NXE=Bdo%Bhtnj=q#lOC(X*Mu~q&LlN~kB!^;(WAm^ zF=>1jCbJz`mX1yq65#z7*yzOCfUr+b+`OF2^Tmw5GG@-=8_|~In;i1)H9rj3z$!Zy zJhTfhTD7aS1xn5wOBFq>=Bo{=yZHV5u9eQRW(J9B*X6cgzJ5}(n!-S2zMhR{NzWua z_j+IWv|!&SjfrZf=&0wXsf5ELCg@)+l$9ZB&oG0wp&h<$M{TzsJ&!xlHSyi6Oawyi&{WZ2%QQF9XQ@W;-+6G z6A<$z*ys^`Zy09fPE#qE%%NM@OiMn2OTin`KfSYOls9upGuRzHViE1U`SS&rYo&Ux zNUq~i^t=7}2E6lkb=FCo_;j`H0LCXzhNYT|dv~PLxlS&du|0TG-g6vAo#ug(2lfes z-nGRqc|yKEZu*7q-+vqVl`E_odT99(ZGtjTP3Z>=9nhKZu!$9 zf6M>WG!f79j3Le9Y?Y~y?Ocd7IvfPEVdNNdV&}<4@Hxdvdru~f=|~M7%&{Xl zO}le+a{_6&K%NR)t$hqMbNFzwg5IACODkj3Rp{T_*Adn^F2)P(=jo~?!aYh%X4Ad+ z$QdAs9N@_QGH!U;<`KskA774@KHeCibSuP}9^H#qFvx<>V?WjuCmu(RpbE9wgSYv6 z;|$tP-*<9p{MOKUyJnor+2n>porrkO=Kbnae?nGCNi;N<{V1ax`iq+d84nF8b$w`0>v(M!108qA41qa+b0 z_xvZriskCWC!qAO8V{Q#7VMfwmoV#zAW#of%yU!i?C{VdxR_Cx=o&}i2k{2 zyx*pOj3dmA`vYB6K_dhgeo3vAuq7?1avO>$2{y_%#uUY_f1BG$cG}kC9}ys9Vk1m+ znvl@Q7*<350)eM_OvPK4Cf#MO)(WneX{mu-qVB|>4ok>K78wQIeh_Ew@QgHUQTH9< z%ebFdnDU60^QKO@%!WBUstEiUl1Z#Idk*$H2T4sqKRU1d_KWON}7 z;aRQRoP~1vAX@lejl$)jTy0mY0Q51`zMTG*=Y8?Z!ZEN@VCUif=%Gg&cNKGMuFfXM z`>@dywh8qL^DY3$?=c@kaFjm~bCVei7T8L48{!6`M?|l~%b?GPD}KRk$L}72UR2vK zm-svT?)C((@8@E=!g@@P8V!$%a_hx=Wcn2R+PQ3wUhmg8(m!V`17Qs^I7;VSvWFIj)bRj}v z8q*r`VN)?ai_so>qBko$@C zytN%--c1+2hKBa08Ayf>SRuBDb9K>H?W>|d*RP7pz&z#{O3*vL(&^59c|ZMa|^OlyL;ren3aw7We6* z1067oitBVq%H(v;yh8JH$aAdJ+)tO>3RWA*z~VI~6UJOi?S+OZ^of!SMgFcpbdXl; zm18@7-_Na}9>mC)MD%9_sRhJs0O$yPBvf;IvP83rpzY~9grBKnAB3^5C)xn|-c5BV zqNAVRdxU}CA)WV3HYVtrG4UoZ5ELfUH6x|DRvSFQ#TreygQ&Ynn;#ta8T@_r;$WUf zK>=}p4j+%i;lRzKGB!INOQQWWU*lu^Sc@@O+!!kvaRoA0`V`mSIoK$#ai^y_$gU*{ zXt2N<_p66e-P-D$y|1a>#!KE`k-vwo#4G6^UEbecwwvD0CJ5tTaN?xc_?$!=y4*Lx zRVJRaE(N%y-cVkmLr55O7u;4ZK0mD2fBAy4xsl@P$iclq|oY}r?> z=X&rFTieXF?ya0z@%4Y^nA0M9{)0V>m-Tj~sa3U9!0WnLIT5{~TxUcFGrJ%h9Gv<2 zm8j=y!M&K&m!Gcckej}?w+{mj*bhh(@MlQ&4F+$+!oVo9?AcJ`UbuwE&G46-A|0nW ztD-ca(-C_=B5jM9Ysa+Y>$hIm#};GUkt;SGcBGPB7@5tn%>wN0aeIq^51Z>m@U+~U zpkaIQ{Mg_kUAx3|VBzlR6(G~bIU)On>2)H}9teH4r2=cwVPw@rDX@G`m++$qX=eOD zJEmjV@78vb^Ghe0jOrC7SZ$>n+%b=g@kp*U1b!UxiVg+ z3Pa>rroJdAs{2hwOJ=UbesHhA*jinFxNiWX2>G?lW7CS0PxX*qpH2AAWM%BlZ`}Igr>HcNJKoXz94Jku5FauYYiparg@xr?TkvvnAg^!27(dbYxEHXqo2UQ|^| z0)yhJo7}zhci1!}4D7IqG>J6J`;ueR0K}B;EKUp!TdHh(=86FtukcnBB2$js}>|KQ0J<&UC-fa1??ANyj&YC&nABl)) zd=eHY)W7fau095l|Fb8}pu|&*L*{(@Sx<@6+~MsHK3eKqq3_KMJT~U~o9=gbMH%BE zXQHH6 z<-IF=U1x{IBF@?w2&J-FOaC!=E+GF$DPh7LHdjF4#9@SXDF2NMRp-Tr zt-k}YXNdfg)SqzaP!E0e2pAH%qS_j3YQzkBsl+J+LwT_~0@xAF`1 z20kaf;DAM^ArA0|qN1X;@r}_eF|Ou)UY(x~A?^or8~Zk5%a`!$G5#^e(6x4oe`;t2cA2YNkBu0+8*wX z;wkvTtdO0s*O(Y`tLlK}41O|VOt7NBJwPlQ*|;xxZUNL&>V+KHUM{1fo$dZCZVEA8 z__7a7b$YC$#-&-?t!FTBqoU2)+?U$mVSJD3Q&5TY^xWi}XY)_%#umH1+lnKMLgTm2 zHW+s<{d;h-RM(sqPG_Mgbmpo?Ko@$(c`SSZm}YQfu+N(}N%y>T67jF-racepW_0Le z@Lu(F8##Izvd8yJ?uztSj0X=r;+ zMsS)bsgw>6L}q;KC&$eD+}&(!-o)Rv%1l}_t#K4AkBJCwvNxP*&SYWV*Su-St)a?z zXc+~H@tb_+j_S<JX9(&l3sJH0Q*VNu zMKu2C;X#|rXYWwPBn^GfrvMtEt0?SN+z;+yr?ZxwD!JUZaX__vg_iA%7TgJ7yA(Ca zJD|0h%HZ(P|NOh*qVMG*SSa+pyA>eQJ=ytBE7&|In9`ii!t7NOE%AjfY3ck3sg~!&^A<lNBL$He~WD93k#!&juf3P=>uTH)j$zEWDFD zw2-`|D4kMg39&a`$J`QPW5d!0fBVL|c_BtQlcVf(5415>M-l3I;dUn*^>9^;F^NlR zYHMF8V50%ev$}STsA^uXu-ZV`cQQx)wB9N?S2CaQKvye3C$9zIL*pdxJ$z@1*;#Sf zesS-ali8Pz1-uN($ZHdNBX4c}jTTiIUrsW}P`a*x$Yr5~eklKg<-_=)7V&-i1?2ml zt>xCB53pN0(Kd{r2=pj_W{mtCgzn3Y6hm5GvxxOGvhrhL{cueGi^Ije4^n)Jl_#@L z$Viy-f`>UDzYS)hZN}`~Cl|6?P-f2JcU+ZAT?G4dp$Ms9a`5`zxB!YBw0Jn2}&5oWtP}d zY({1&Ba?mJVS^b{fZd#*Ds7;Q4%#ZkO!5YBRpI&O}L?P1@=>V_# z-POyxqT?;*p|h+ka^o1vIC@901|C{%{_*S=h@l%_&nw^c<kS@ohjmKaHjQ^5y90D4@lcmj~z}-%!v)Fxq6?QtI@quUaalfw$C+<$>t zoB{Z!LLK#l5s-7+VeRhiIR*@c%X~j}(S0|Up6KWu0b9eXmz(86Uq?OesFTC=0cNEAC^EqH zTw1c}RAXcrn3zyUU%z;P74;kjB9il0^k$61DiTCheD3tzT7$dM#z2PL+SbM<5PcB| zuPMvWdgm?IUmsb~vroT=IN9c*=sObd{#}w0YM&$>f6ir^NzN^|9|a^6km=f!`Bs=} zOiWK-V3g`YnX>(9ltTlHz#zlS$)KgBJN{qu2QJEGI%vQi!TU#vP5PvirX0sfV9a zKRSub14QWmvI(eAQxdzCthc^lSQ{T|IBq)HCZ)!#Z52-5iN4n!Jv2!RhdLi_al~DK zjOiVn!hAKx3CV$qUG8c>B}7TU0Mk(ad`V1G#O^oue7iAvxvSWE*1eFq^)HLV48F}= z{R~;4Bn&t4p=T*yIg%>Fql8e;+QPHqvp-mJDyw1WF?l`P7U7o!l;y3MclA$*cL!X4 znerXVDDwXG9Jy79t>t1Q>753T3JU>`jPG>7`-Dq$BoLbmWAO`~ioOt*SAWbt+~M4j z2JajFsT7X@Jr9DLYu{8OmUY{j%LgsbDHA*W4f z^w$FZ^&$abAmFbNfPYQv5F-7LIURcB^uG=BU<4^)m`MS7_0N<4;{|3Qw&kBo{nwhF zJZACq^o*guVT;NK{O&(jN*FAIMm=snI5JXJR`zeN{^OZFs@B%l1_lNS3TUS|I5>b1 zXk=t$@V{n?RuK+ifGqvoVQY9;MR*(?m-@dK8W9bYIo)PdS43EY|FzlGAfV_rPy&R_ zf7=KO0a@}9WltBvUn33wT6qMD)PMbN0{;IvM45eODP|_7XOuDYO_*;Oh#vu!$bW9$ zi?)g!!kq;LIj`Y8V~DWJHzkEh(F0R4O;7%|lrt%lw4mSxi~R81OW8B!zYW9yQq=Am z#IokG7U|8ZmZ$oaZ2Y8F+xwp3%Lqs;p4Wp{!%fD?=0%y!ws(Z5_O(-H8?S}Cm zcRoH5VUGLHy9{y&{U7)H@t>nn(v1H-qZJYIzs~K`+b$M%_TiBcSDn1V!c9n?>_2aK zJDTxFK-jGh(6j|+Dnv{905%$svVIi*$J!!5%K6ya3k!PSF*@I~SAg+2JJ)Q80s=u^ zE!cQ~-%;x&pp!3e+GX7o`aKJQ2Q-}|?@!`?rhDI9?%+`q$hXFfaz}7_eR5F3@(f2Z}J#63h<1-VPzX^R7@$sUEgofb*A<72b(>h zS`Wqp0U(4vP5+qX{TD9~J_a!v+0k;lKhRjpQ!oDVCB)wvVej?p*B_SKeCO+JV`F2L zm6gkvy9m=bE+2*AP`PzsGN-1fP5&cQoV_O`LDbg-df$E6<5L2fuV2^t-FY>uIX`T9 zT#c?0!XraTmT#G1T>>+D0NA~(ZD>eIN}>U@`OaITzT0`>fP@*9y?w8|xe_UPER7Fc zaQnB4WJ68-q~{tqNQ65joAdyYGr-Bmf=01%QAEtWD;}RPnGb#0Mz9E-8e!k&A-L2z&y(8gqq}{E7!Mg zUCxTWPz(lnS}fT-{8D3&(#o1}YzmV&OU@) zso{7H3_A?8^ZMVzOG`_C(-Pl-GMbHp!}e@@9FQeCEs~XP0a20s$Fpb80NqIC7bpQ4 z2}$R@oxQyx?Tg{%pd_F50fJJ5F-lr~|GHdQ17pL2?n)cqW$uYmK=T-G-pPN)8lYex zB{Y{JBPGpt`td9&DG7IPIF)A&INDmQAUmCUF<8&|X6Ufks@To`sVJVr8H6cCFQ4U+ zirHsXKkMk}X{}N{J-rxWPj>025)!@-_jkb95?qrs?J=b%xX&R+_uadoPI`aL$DrPv z@@4A@?urR-0tri}oWBi%=8t`3L8k0uS=a*f?JNQUb&ZX`oU(u!7mDw{C?Epo>XVv|cVX0|im3m4P4N>VSId{XP7egM&jS zF7)fyua#eNymm`~;9v)+y?&2z0Yg2G3TNVs-i1p4W0n=;2?#iQ^G5MkXtl%C5P5ld zTxY3Uto=cDY(QxE zpSQ8C++!kzjzlb^dd3c6{s**)$PTk$6Cr-|Eb7ze&pjCV76D5U|ML-qL#5sjelqm& z*6q8GfJ)x)FH&+Cng1+q< z^qmG9I(WhJ&<*acW z(;T+u<93T*3yiGE&vplNzqZ*hZe%n*n>BR#%>9MBHt{Eq-gZc8*quy&acrL*<&Rx* zPQ8@$mR1AB$hCor$zn>b_|&7hdcqwm(f^y+K9fZXlyY)%^7Zw#v*V0usrw4~lM5&S z>}=XweY@yRt{qkJ128_ZjpD^{%7tD1tt$)Wnn((q44Ga`L!5q=3P zNwZkV129^V@&7XpOeWx@BqUmafL~r7ch3EXUuQna#mq-1z((sQA%?raui_-J8HA@e zD^8hc1kHpiPFu_=-x`XNT$)sQd!rOAu)foBr&^6jj-3in-*~dJ8ns((BherjFR%Fi z=TNf(FPdD-cy-hmo*;aZN2_&TqaZHEm6c_^6`E*F>|Oi8g!V&EenF^$3Fwf&dSkRY za!&bzE$7VXXF}Q&vu3V$)5QgiTmAkLP7_0-T)+AWa}#(rRB>JWM~iWh}@b(OeQeSa5p1^zgXg zccf^$v8AvBl%T&1~KBBS}lpA<9zJ3JjKM7D5mfW z-T1ynxv+jM@N6G`$5pZ#{mfn>qa|;|GzJ{Qo5UZ?a+69Z@Chhs* zRP>i6Xi}Dd>)Z-!hraNqyd;4oEEVl;s0J8hU2pqCwW@~{HKr=aRo>^3)z}C%PSVj7 z;0kJD+*XHK%6WxRX+C)0HNVUCh0&naoKXEX;FCfek|7KLsq{oK3OirG@5U+d^bWVdT1It7y47-`C;KLip#@L(v92i!bE#GrE$he@3YM zt7Pp$82N2hUW0|zqP!VbmhC5{1s<$%zfJb_8&d;;)n)@XD~sFNje_~ue<1)l79=3Nv6|F= zW|fnY-zX~(BY7jps%og16i*#@>N;tB0CEdSm6-rTnL6iS8GhOPOk8ni4 ze|y_XKyMf&6`>I07t6s1U<lSPNO+ zMNVodZu$0V`ZT|;i*V2;Sw5=<9m(GX^~g?sW7Smlbq{NC*_G}exOg*kcN6MB?HLtw z7$lNALfN=I;N8~t7K*&Ai8U3%n>y6DD)P!h{K#`6;a@Da9I+z>1U!X}f)s_uaDyYh zUD(>XxQE}}k4xlC;YAeot;EffHj6krCxHvPY zY3UeH5a}*yQ931t?vMs)hExe@q&pnC8$?RFyIZ=XyU#Ok?7h#~zrD}i|9Wvb*UWe3 zdDdF@=e}34-5CG+`|O#toRqbXr!5~@t}cplO@3<(6!sYo4Ur1$Xj2kBcvG3mH(4H< zL=(baU6IP$o)@caJ{pd~p7R7|q=IvqfS{E)oV(_?tp%h!5iI?}#Aryc6zrQnf;p!-ra9ky`?^9fBzd2>i}=7HF0NKy|-aYu2}RNbRT z0e1H#SmBdFmIRY%uX9#!lxskeu^en0UL*2TT_i~~DR@6;CP=Jwqf=(6Y$!bL{ol8d z(hK;Jr6Mh)@5*>y4z-H+aJ;;WWSYO-zlTOilHEV*JKVTW?XLq3lQ-cs({)q=NtET5 zp`u)}e$zBFJXqLhG7@l@PaxdZez69PTLb`rluN zhZHCmJcB6zo0|xWf|Ynsk{Db@V5kUkUOcAmy^wkB`l|C?V`kLU(-Z7Pe2LziCJ(dIq3@xlle6|b#7m(}9E%!rK)?d5Gw-s{K=Q#Zv`-O6~j z?dSG)Ney?#4!W0&`>mk?JjbxFNbW1g#||C=EthrGKbZwxk7>5E*p8)e+dLov_ezW& zM&6JPP7f;fpGW4!&@$r%yj;7HlASrj4ZxSi$r%s#W_$1B{vx3}F3fcbd(J0oLpqZ^ z^;P}vP;60NNaW`gLS?`A3PGA&k#G~4QcQE}e&O$zG)0g7k#DfTX# zN3VBi|BV)J^pJw&G3ns__x13@H{AxeqMvoJ!`1~Z?0ws++=qKaJN93O07&CDb=Io? zQwn^#E8y>mGnxxm8Xo$20C-Bl8w(sNo)^%RS527Th*pK|p<<6r@8==98Xs3p zo8>^<-mRw?UyP*Gs#YBu=tz@@f~h!N`E7|Xd>tyTL#J79(4oRNMrgc=)s~dzFFoMV zE7FRFPyf3pTxJVy=yEjfda=fc(xJQ})25Zq0Kv6Qe88)Sjq>)Lh?IE8a%Xjo_l^T@ zx8ANQhDUGxVIH^PoRUvLvRIyTh!K!hV@(cKDK3Drm>j zK>ko%93BAMmf%QTMuwzk@-60^6NQ zl*n`BoV3HVhHqZDo$pPafO^!1ld+iau$N+b2>Iss^gB~4QQpe2A(-v~?gA5(kzy9w z#$8`9;HJ>{>;S7WuUlDhA^ACTvg;sgna7x2qvvx{@f3>mT0IQYaxo^}!<1qhmGhrx zqi;CBp{uO(^eW6j z(Zy4&!DpRur1Nq(S5$w+FXppCQNsG{ZwC_Gu@TZiPeQEsLJOQH!P?t3l`sb0g!Jrs zix-Bkb58A%-NwUlGQ-znPL(>;z=s>c%chS6eZGet=BH4{YqvBak*C4BVfrmRE{re4 zvZmY;?i6v;O~UGY^l9lsQzIFkA(*#LgSNL(i8*VR z#n+(Ff8K>Gm^}z%Y5N#p&soMwiT7-2hIU^G83jMVWf!%h{j;MQm0n@6@75&fqq^Tu zvBa=s|~QjsZG;)=JIjrymNzY&4HITrbmR7 zOzARIea{q^0%JH0zopv?#mWh6m`=xTDNqvOHl3Fb_P;#IN{<#}lZ(HuY2ND57$7)Y zIy_gJd92PlU>R_eWTQXo^jq?j_(gj9{5!IfvbR#=;vw!=jG^B>^c(x@d&)!ciQ8P! zBP36xP?)&>o)7vT*Q6HfQS!pAWtUYn|r zi)T4{c_dDm&7o*(u@l!;m#OVt?VUs8id~=%F2NUS2C`KU{fI z9)P;0M);bN3F0x_BPkAr79N@(LnYYaTqQ!KfRXQp`10oj6;SbU)4C!rKd-1@T5IT@(S1U_d}G5>D@1rH7t9m>$M!v zY=+||diL(R=GI6zX!DZ)(VUuJGqa>+%fx?nnET<_E7TrBg1i8@N;?p?QcxQ&=y3@c zD=r`!fO+Tmz~hJaxfk5+H8p2Ibk+X)`N8sfZ@fLQx^Z!Hv%j%>NT4oj91w4>#AJuX zm#nJh(&2+b$;Phq;FI37eFf1r@9l{_bJM|wMK;|J!cyI+9ppj+%zORN{M$0;;&P&> zr|(h{1g@@|yuBKXd)|_8iQE`zTJz6ONxex3Pr8oGRbnRM<)G)Ok%j8c*K$AiHno=q z$Fbv}oD`@%Ch^+!IQ(HsTY2dQDGw5s=LjR36vgegJZhPUyE4jnr+0?lN#0N*`o1x% zd6PCLj13>GpwRyMxklxg+O&iVnVyM5JJO5jJnJJt>el3nj{j||hgI*VqxX6NfN>Hw zKQ>>kAtUmYAkMS*(j&io9UUF51IZ=`O+{_?gOVGNu<})lW3IdLRJA@e16}KAXc^$t z*PE-hoEji^Dc3RL#!Z_Fxah=mdXy zV53=cxax7GMR_PkPs?Nd^ADo|QjU#cmNd#9*sR`dPiie* zME=+yoUg0YX@E&Lv*Ph6u};uPBa6!t2-KeOpueU?=gK*Y)bR5N9`GyUE3U(u^p|RsCG+HvVHrz zDt&Ncfw7?^$FmB&rlbO{$G~yAU%%(EH)WEF?)yd+0CZN>bL~rOKq$ML8t^<_W%g3H z^Eh`zh-z%??7FbkXha^2C^4%+tH9YTyZI=Md*F_q#pKKFk)Ou>y`5OG?pHGlo*>8W zBAAr-?H7!C5Xq(gw*1!b---;@Zw(?L!B3Zo=+}_FnE~dUpZ1F$5voJvuBLFH4})na zD$22#s_D)ee*X~Mv@o z?oS2*n{4P$<^F8I8BYn7qefrr*}QFe&VPSseF`m>Hfdsg;kd+NVw7%JtJ0!+Lph|M z8Vkx91!h(%xx|t;!xEh{x9l64nc&Q|GRKl8czGQ_yCBNTOE9Lx`LZ}Yk9P}ig1y4DuA@Q>A6$>uo3jBB--xL_YDa=|- ze4x!-TT$-u`*3LI9}$8AJP*_FKib;bzyaG{SUukz3*3KuKq$IxCTRGBomlP|h|Q{n z8jjZo9eb0d%K${I5lPRjC;^Qjz|$KHyKdD zHJ<%$D=&Dl0yOnQAV?)U3`+v7w{L&3rF1$7m_UF|7UcVBPV3#f5+E<_d7jmt9|01U zqyaE;$L#&Dyv+_qCyA>rKo&=Rx-F1PlYnstOxiT7tvx`lh-!h_Hv&I`VLRqOPMV$0 zv)!|T$odnB{e17-Z%$~HvI^A8{Z7bRO=+S29|OBJ#hvN$ER_=)Lg~nPXhh_*AKniG zUUyFBz0k3IRR|A7%-M2xw^C3L_t-dbK2?^~E6fM3<9vIMp_m<^eVqfCG~G`u)%{=Q zTbl9Qq=&&Zy57D>P*P54j*wp$hJo9FA<(sx6Zj3ALd^LnG$j<4{=c z$zYc$DEM&Yg2BcbDbEHLDq*FcOm`es7uhYJ6R2cHHD!C~{pz3<>6n*OmEQ~k;n5OS zjt=vx{B70J(4fc8&;wcK?IWF0W(j_g!aTO7*>1;BGU`yS~*<#(t9pTxX8%%Kz zrVGM@LhIJI6Y&K11uEakg5i@TLkf;>$59G5xBWe^5F~-h)_eMt9cR4G>wgqf;^ZaV-2-Qy{mS~qf(Dryk;rw@fvqu#rJLTJ?sB~RD!lr*Qe2MG74oMeJJ=X)zwK5YJo+jo*=D=C|t5&t!)e}Xb>t0DpT6_2Sw4xEoXKG+#Wa`l)weL&& z`eWvDP|V576wSmAcsh@(Mp@_D7b1iCs60@{@@>%M$DYMF4Gu9?E~o^%PGyQg;!k?> z=J!nr+wv)?1w%6O@Vr6o7I5)>q%(%E=cPIIR59pxCB=1+0xr^O|40vAOCi5I=>(6u z&WK$4qgZcuP`rV8Ur7`ok1_}`N>_-24T@y}il4ZSSC?>>z&gY+y3Bg4ab zzqUU0rZqI&W((bHVuGj*2%pn0d6$NgxW#7(55CPzj1-nj8%1$ zwck)ubadw4C2*gdCE7HgBwmG!lc@t-09>h<$~e31fY}u1$%c9emG$F6k*iR)Ewa3PVF05Nu}>{@N20p zXwkN%u3c_Xb|6K7M2siN0@v>6$9pWr7ZoJHalG~I?U!E;>#M7a^0+79V(;zm_iMTV z-@bs8H+q+tWc)55HK9`%CxAD2{6xFjVKW;F^*b-y zytp`%P2hM=ZSq>GJ8)~OR;5TwS2f!!0UK?e-}N|FN}4?);uqUOh5H4;7ff9h=*d=t z2ZTx`YH4(|X>$`#Ru-9{xZurjq zax*(TP}%^Ix6Bf*-`}4qL0zA^}sn!exvsjdGhnR518+dfvw~h=K{!BIJX~669(kf!=w$1qM9|} z*I>8Y`u2tFGdBbcsk8&hO6~#V#>0bUe8F{_F{|%M$Z?!usPHF!C;+$CL2#D9wv`qz zNU#io2(kc;S&$t&>$j^*^Hf3P=>t7crpnX@8YCJCGE{_>CNWVJxm&5ud)Ay^gxISx z@}As@nHb;f_~1NIQi{Y|{VnW$YqLFWAtk*inEjHV2lE`)7=x1ca@AbPB%E*W+c%BAA#_8)Ehb39c_-5B7 zYGwQT`s5|mwLm26G;!$e5+_$C1Cn!>MtX_Gwz-%D5ZL3A6i6@)&VtS9m99yT=qsmL z%NY_Kx_f!s5w%&FgmNvARo)vM#m)3Z@rv_;(P>AggyxRRHVUkr;>hm&TX-)|i4t@5 z=)W4B{xHJW$SIS|#-BNqWF~;LByy~s9A0_ZRr4Ts>v(?;{fE4OZv-fPc;OG~oR(IO zxMqaUHux7X1CNf41<)U%B!K8Ke#r-9yC9kuLkO2#+i?sEM0N!Ac)U5H|GUbZ9gXnU zduMfZB9%4G^EK{96wUa7lBQ3>*PuUInSWn}#P-iDz-@2U%U~5`1UJdb$;yJ@HeY@~ zD=EYQzcm2Lw!tf`WwA3G0h}Op%5ZnK2Kb8mfiq5gG~CSd7;$4!NyoS^qUwI%shUwM zreJ5sDFntP6K1uNU(8+?Js>Eh>+*Tt)~&o+$Q5&5T(uN5ag=Mf>!sZX9sR|@;NS=7 z=n9Ji&F1_D+iR?bDYHLLTF>VBCP#4<$8u|G*bk4wfawO4j;=(G1?y+?0l0Gdo4noS zUBma+3$Cx7pf@Xn&l_r%kV0&#E=(HyL?ME`?A(zM~K>>K95%$k%kJpwr<;UxKGknuA+}>oB({d;I%I|0(v-kO9x2Bd^#c&Hzbe zkes0<)Nx#cbL|@EId67w~w{A|3}Q?xUqPGaoz?d zFLeM6)gMAc1+{#^ygQ6-Op1v)9oMuu;7M~7yxgGtJ_eGX+*ZQHe=UOBqb57Wb?XaA z0+_WQpbh+7j0>1P*jl{qMYk#&8{4nDP!et?+|Q9&p`<*A5z1gfMjW%d#G(MBs-h9}o;`20TfNv0r(e+nIG%8z=JpPo;((%^tvi z^Vlg6f)2b-)@(5^sHq8XaSPN+?-y}Y?SoFC$yMxmM=(*j%|Zh}R4ny(rYk{KXY+i$ z8v^rHhOKr-*P9Y=G<-IsCHcdn6%=AL9xJ^t53}K&o;t)A^<_@w zGsUW#uH@u24hd0swA)L!Z(r`+)VMRnF388nNoyvpJqPnfzSEy53e3vlQ!P%3k9EG- zUlbalhyptqwx*{~IXE_0T^}eawi}sDR8$_snKCpQOqS?c%{b*`!rr;^2AloXSeUDW z!>_VsE*5_{&QO+%lB4@#aB|y>-1bVy-M00{t9NzX9Zi{tPfy2Tr3X@AA_1yb6e{N6n*t&ey=_l?32X(5di%h)RTA478e&EV%?A+PsI* zqM7!#OWu=0PAEk72E^0dHeq^xXeToH+4EjQmt6f(R)#)ZI^5 zA4nZoka_&JE;rW<98SQ}-n<+p9l5gQ&FJxu?IQ0hcaUsLLWX%vIZF7pNE!bI-wj{qX(>yfiJHq2s(Oo6`AiuxpRISST0G1$R zjw5P}RqK^meUj!t&q=4Y_`1O57ZV6oC}pE!x_K{fDjvPsD~}6fh87n21#W8mL-fVa z1j1b|->?w+uy_8zvd%67p&b{KOE()vC)6`A~Rb5)uK!Vh2+!IBJ&vy~c& z3FG(TIZJ~;>6{MLCkN0uj4ohXT>C9>G_5MXkb$@SOdeZICp>% zHaUl2)}+85I8y_0;#}ywApk)G4Qc_k0$`Dyrp*?wh3=*OmfhNpji~&%VGwU+c69HURYbW6ORUly*A{?dkVi zZpB$t(LL^>=1f>3KqI?OGz`0$Pv9Kbo2A{oId6UwH%AF(Xvy5n8F}l>8V=8%7KF&( zvD(bHCM6X!XkY5UcywJ7RD$L6^NKXeTJ2OU9xySzRwcrJKcYgf7FK@WwSX1di3O*S zpd(0OhF!BjJgWN*Wft9BL9CU&Iwn==qo9*lTT47?0?Pg;?+lpLC= zdW1LqFk9dY7&@pk?LERCyww;;0`_?6q8g2sk`FN~{dHEZ2^Pcwk1DrMVodvYssPpSLA|j!Mvel3K zr~R8S*m8OKqOMJT{s?8yOS2=Nf}$d86yM+QMgFvQ!T|iB(6tS-E{gnlIP-EyjH6r0 zVr3?@Mxxz1fRtm)6o+R6Jryl|GTj*GNRJX9!pQOT$TmBi(K)8?I{)#6XS9TO*pz5z zw|LKG$bZFgxbFrc=i^7#A=PY1{M{1_9T(HS^4F2_0%5iqMyW;)d`+`Tji%sbCBB3x@B|b#WP+2hZ)* zp+7dbpGeFt@-;MEVE2QQ->FSz<)x~sCYmUPTqaBWJEX{9-Y?5)Gjk|ITx#&9mS|c_ z9&dB>T04kHx$i2(+RUbnKxy8U3-&g#gV2`9m`+qQ?MNzsm^L&Qg3mi$nJAlhm6mR% znW1Bq((UDJ3Fs5ZlGWDK)-HUcbR^%g zw(>JhM_n5oleo48X{IuqaomShdu+H2xxGRq*sP{z^1LZ4tN*jvCfG}bGBs6R*(Fdl zIx*2~8rq8H>2bUP?!*;UW!3HNuIAJ|&Bd_^H;B9Q}DutBDg_`qp zbh0m>${Kr$VN7E~dQAcwlzESOi$~2nddn<_Y1y|4zaXF`OUhY~L53|o`@r4NFpMvw z$p0T<5MD1lYM_hq^MU}y&vb(+<$=bnmVPNCfJcW|>m&_zm>ch?ofGZTvU8jc|5-`) z;7?){Z%p$=0vS=;3wUpDuGMTLbmdn=yV#sAS4@0qzIgC=n{M0&=&PEMqrha)4%gx2DgMwJVMxad*aIV_hz zeVPW>TfL6L&FVWRHT&|xTZ`4fR6(lS$ZB^p^n#b7(5IPH_uU^Y#N(&DgoAmm7lYpj zFp1cB+1dGcV8C}I5D4_aBO>;%d7&kQw*h5r+nvHtrpgfoJRiNax@es$APc^u7>iQ% zl@J)yvK6|`waev(#3NYAg3#+!=zrVE^lqs>4pn@aqqnH|*foBpd(zrZu0tg*LIwg#jpdbaduQW0_wtDTNwya>{Bh zKoeN-`Lh#L8@A#Pmn|E@dIII(HoP%JeZs4wss{BPmh0;AuGLOwB#(}!dYDElnwy&) z6?JWTb1CPham7J}_1&V`$GNAcn2FKXx6eCSo|efISpSNH2|wYfG)IVq2L@qsa;sKX z()!VqY}Dngdq`3$#EdJH$~XzWTa)}>Rru@bi*bQTxwHR{_>laG$o*%LZwywb~zagJ$i=FQdqxs7kTuR+Cum{QLD+h8K7ULKQ5le>^6%`+<5^u_AsVhfI7|5CFrDo9|>l22_g86dO7 z=>dD~8Y05OKV5|ac_Er!wJKmaZTB_v(?h`ZxrRqXMj`^R3JMrFo=MfZU)bq9Vh|4* zFV+pq`(_N*fdr3loNDxf=oq9+FffaWkLPjT)xr(1K(2om^cDZq=Zz;AlY*&;42~)A z7zW`pzPSa%>e*@=@;yv|uYWLLO|wlvRYwwfdh_%c+2p|wfN=o~l+`@=xhh?dXOI9Y zbHHSh3@IDkd`BQMC_*R3Q{Jh)Vq-5)lJ~-1tXMLbY?|5HI!{e!XAe?RtQsA&3S+?T z{`urHtzmh&g@#6nr>o*H)!Q$EHICaKqe6YfH8i+JNA)U|0s~`6d40-|BO{uN=?ik3 zoQr80J-{Xo5w~d}1_1$Nl~>#e(39d=b(yu%$b+U)Im-EVpNPE7(&{f^k6DYIwg}U8dTDK#RfNxllT~t&P7~nMw1VO*I`$l>Xg{+@Y>LRw`0r! zUN9K-%oH1Qfwk7zHy*xa1}N_jVzC9)uX{3BJ_8>ppN_Be#K(GkeU$20!7kKXa-jR4lqwf1_qyUTBg?aa3=M#heb@5T5%I#vzGDP zlR%$l2Aw)W7;f(O@8>`eyQX|qRpKy2oYM*NLl@^y)i9AoeNTd^?|seXyu>@B5gKLH zTv5C4mTZDZ^L#j<^r6Dy2>#T^|84O`8O8{*+e@*GOQH9%CdtyxFo7(3I-7X9A?Y~d zJOZ)v^ve318VKL7OI;3!oO59X^DS*0>Rnz}2b&dv&hjTu*diiZ%2|$>QO)!<%=M+Z zhpMVBtEw!-Lkq0U)a_R!fLYI)g-~(qJyf77?N`O82LviA@IOl8kTbKnE33(^tpuD0 z(;_M=z_d$6MRlU03LHhXuC0%CAV$Arg=&nYq0-XvPV_v_7||P!WDPq~gk1K|#*6w; zkRmI$GG0zYOw8(v$e0EQN03Vhu zNL83_|DgSBK&2MJ_N5#tFxQF&@uEy;&;JJ|Pi`RU;RfD`{A7XAMO`vYT&<2wR@csm z93&l6f0@Z$Hlz?v(_RNAz#$BWS<2zkcx?@vfH^P_WgC9{-dIB;0mc>xG)J)04(xq- zDGN}dad|1Jrv%Mig#`sG>2h()bGw4j+g9}^9;#C=Xf`Iv&0;ydWaw82tjyirJKo-w`J67J29AHW>I ztue@B_ipCqYIRlKX5sc^C|yX%{d~3Ft(1nD(A};*7?dyaRx{&|Yt>Qx6XH`Bit@;# zV%Y`W(2>rJvF7<^CjlE?YDC#a#RwfS3A08WA$`l8)e~PaqxVewC(7>Ir_lURQzd@H z4BTw~SZJ-!0>!royD~@DWf;dPvTslaYAI>hHGpF9h>q- zniGPt-EGiI#{i5WF(EOiK1oHf?BI7fCO5Zkoi(I*?q@}XC@Q`(7q{;1W_IDXcXbNd zrDAYELH;RwDt!C68}4x+)UOunMn|I#J6`>#{4qPrFywf5Wt}WRTGMsCsQ?0G9 z+W(_hDxN}M?kZZ|m1naPh~kGsWuAtkL$gQAjbt^O#>uh24N(R=`3*E3`P3A7~TvH3L0vSF|5Fp z)YL{qGPuAaz$&DElFR-+*;nr`p$9Z&uUCF^* zxi5PEF8nlh43ORGFEqxZoWF|Uml`Y;CQ=Y2o1`W*TCjTO!5YaPc=auyW!Ifp9{O>G z*RFa=k@Dp>i!`ZfwZ_r-mkj^fA$~RU?}-{`7;tW-s}&2g`-vVs-^k{_BKITH&(5C|cQU610^->$$Xy!6y1`P1t^+9tueGjO(p zU-pl=k87e!u(%`Wdctr^h2Q6?6=-1I{in)^P)q6d23YOT;? z3F)3_umeynR8c!uHfsFd!W$Zgo8iof9zYKNzZQe(1(pG1h*RXbS0KSvOZ)55uk0CG zZnXYW8R2uHH0b*lGH6bza01s%~uSA>Pk?}cM8XBd%R@DnI$aaV8V^r~2PL_bk z|KE>#jL{B6(g{#505#HtHGyub9M7HhT~G*`ot0(4lbWCLC8-W(*epNM=7==+dJi-B znZM4PU_|g574Be~uD~(KTHeUh?(dyCSRU!!gkQQUf^%TdLR_Td~4HUsS z^32TIaSId)%0y8HO$!nG8$r{O-ZMo^2rmc70RtHj$z})r=OZP8!E0bVnOOZGpV$xhZ?o^QfeP4?j*4n^B~sq+ zOYQqUV%wY3(^If?ko7TfEj<&HPKn;V0(qC(%axwF$AKIle!Uiyd~{fZJ!RSj7!Xh% zA(QcXLV}xL1^BoSlr{-*}o3TkK?Ilxg*x7rBUkO|G|Ae5K7C2}R6XnbA!|^TektcNdc- z7#pVJxZ=X?ml3!??w}l>P4hlp*)j2K>dRww=3`fg02wIe@@DD=v}djB#l(-8xkMly z@;s-&2BR5{;I!ZWB4%e4NpR$uZ9cV-GA7(U6rOT&VN`sE^%%*!Wa#7~eYrJO1M49+ z2^cFbmB*+2%uz^Zi0vQ)9yyWb1GYiO;6SKdMC6l^VLR_8WvhgeHK)p~%!_yS_S!3Q zZK($tgz?7RwPGud*1{5nYZxkMSApH^tTswAn;gN>O)K`T#{bwT0$N42+H)wGqYHIP z4fB&}yN90#@(5$crd-7Z_!BXxOlnicj{>{OTH%RQYfD&Xd|-{3Ixo!<7qUYJ1zCvW ze|7-|P&@vAT!4d9ugOjVH+3ksrg4j+qQzF;;XDjC{n6&ScKoyY0>=2%eSK~1J)*a* zMC9lQ5DFF@rQ|VeF`lNgu?LO}<34wyWlYP+%GB3~DUB4Ri`O##pz9|24F*@fJYw?s zy`C7R`dK}Hm-8>zS~OK2EqoIf=|ai!6UF`JVN?-DEP3(1*KXeAe^kFy74f9SE9r## zY!FrsP0GGihqU-cj`!4@)MB@vZpGhY7_f$n{KF-U72==Tg=)cC{p&S-X;N z$<}@1oM81vXv(nDtVy7@!P;2altz&R`+Y3JAZk3_3A2V3u6_y1Ep3PZSARP>--{+=Fk7o0@ zPX9~CJ6E{(e@U*r4?K3*`^#y_{vSuwjIMJ*I^(b|!I(cnf@!H4Sx#gAnFa9L4E9u8 zd`0`eIkr+wc@n#&xZjC7v!%6p%T(~pM`mF4fCUFQ-r_n?^7FOTDuB3Y~cx>o6IZuH8TbPprB3XkPSa^6~U_)Rc zw++{T1Y*fA*i~|qoC(;`IgnX?*Bwj*V1T3W;{1H@PY}h1evmSbgh85P^R2Yhc5^t> zy$6IzOlk-V3xgE9hBB}#cwF~6!ky0&DC$tIZ5|raCn-fIDZegVM8b1Ou}IY)X>WgE zBja?s=k!}ogS6rmd4;?$!M1+jiejs~Nw-XHY^VBKR5eqA^ur|4R`q`$f%oDvl0X8? z+FLe+@}A4=WJ!puPh}|bCY<#YoJ7zy#QoRq$Pq%gv9BU*}$Wv)igdLY$ea^HBUkMWEg8aME{zuxkiP+d3+ z)4m>Pk2&?8K8A#8v)Xlk4Q3W7H(QLEp0G|no{UcCj^-?ya~{=K0$a}|jt&ohJqxnW zLiTRT;rsdc)9W-Kv;r=~-S~k1yS8t6uskX%s=k;PAUIahP;|@`}Swo)T}*lAP5>s@8JShAEkD zjq<=gPiOw&##nsVErB&vt@{h;O<Fv^vw|KmL5Ca0N_4zO@MM!HrBIC&tz<% z<8TZQM?)DJDsoBD(2)ZcYN1g6ja3(fadRE%And!tu_QA!1PZO}&L2{x;t5%j1wdEw z#LI!X6a?7m-ym&oaV4E99$&~@{A!c|`&1KfZZMRPa;VjP!2h3;$}n+8JhMv#p4&UnDa;2?9K`j=by&m6 zj-6wLOJw&J7$W?0l;t5G&V;Ce zgz#^`rS@NePKa^}^Dl!Ti?c&jTeE_Ck#4V)w3IxG@>uoF<#Z|KlaYCCua)(?xrN~@ zIr5kQw~)IczNhadod-zEtQUr6gEQhYIXuufQSUav%i7p43K50ipqGZP1K*EGJz`rv}Fn1 z!S>c!5AVB^cCLF=JtRM1*P|oDXtw(*-^{-;w{|40k~14$A+xK{G_(XYs_9mBAhhz zRUkUh2c%W(?%ZZh&p#ULHPL8@i3Oo9h{}uS(>g1C5-zR=!*kaFP4@M8uyeOz)g`Vr^N;pJusZt(Ryr3${63b)={VLs{M-7z=%p^8GUC zvv$*ICs!oX(37imOd%`9TdKy%cf8LS<66xV-(<^lCJORzw=dY#uU0hqPRX^ucXD!i zhV?NTt(-9BaCfeDW@aXyge6U%^@#I8d+wv0v@{>UHf*^c>bijxCNQckN}O)=@&a}O z(4v|2#(hF((ru_i1olWHK3lS2V7?J$c#6u0!^AhF=;aq|U=%~UM;ty;^XPeH0-qY| zZ+bdrY-0ep=og^9jJ_~u5e;_S&QbeP7Qg>26NCbU{#l@AmW|OnSyql*35~30qVxUj zjae6bPho%*gy%FN@zN29HZY5N_oEmeLpr;0gCYbN^S$pLB-h{PISoZ-`m*iH%xsg> zf1qQ=5=(b!-;B#qj)5yR?gS`~7xdxodH=@7z*7uiL-hEN^y0sU<}d#WktC2IFR@fj zhVkI*eCYisduQuPpsQj&T$X&&sOho~wL%KBSc~EJTX`6y~;fcS@tMc)-k zzCMT^2Kjb&_V(+2i5(Rmy^oKNL6kKc_b-(eU2FDwDzI~R^JqXwJRv&z(OV$tyj^o9 z4E)(i223@$C zyDj<>z#%#wCr}sj%R>-{hL4ZWr2Ru#tA<3F=i4+8C(6sq!TzY@zjM@Lwq+8z3W44a zEPMb<)Ll}*(oB2>=A|Jdpup%h_#A7}?1S>*d2)~UI2q{ez}80*l%Ig61ZZ0N9Y}MW zw#Npfk0_)PN%VtK-^X$8ergloG_?PIFjNe7( z=IEuUp|ph1B&Pvsz6Vd}`%%U@eScR)Mnx%WY1LUyvE9xK9VdY)C((mxJV6`>K(v(K zgFNy5^)WUo3ivf*y+ER0$cgG-hZG^BF&XQZBL$42=bv-4GN~8^AQ#mbWEJdb3v~3$ z+Y|fbVG@Kgl3iWt?O_W*2ngC#4m#R9&s7RS!mzY5o2s%ky!iCsQasnp3@1yrha7A( z{-)pa!%@5f^^anTry)FwCG(bq(jVIm}K1`kz=@(O-ihMX(qZ*1zj(C|1}cJ$mc zH|Hu+w^yz;!y4zxdJq^W20lQiRViG|i{_=JzHpPc$xa{eik0}2KWvwUD?W}#(B|fj zyzdvGO#5v5aUS>d#!f2*h`D$Kq{fNMEdky~F6Nev|u z@;vfG?~{cHEhn(R?4Hq@jr?#te|*s$82CX**zpM}wOn%GQXoZ+cUXD)=Y&| z4?g`omy8S@AKRI#PxQil7sZP65{*QVG<9d8*10E3_BrXxd08q}Fi~z!MuCwRByD(F z_tGyaN@TfveS+@EQgb(sI3jY49D|GiO2+;HyC zKBXD?eQ(^sFK^6del~_L+{i&h?^9Q+Lj_LNGJy6KXwO&g57x*p0RR-(cmB9L0$Lbi zuQR#p#y3R9;Q0|SeBFQ@GpVVmVIxPzvD&9#av=!T$f|iZJtDXUMBY45WPt5w!1WIV z^9T0X=DOJfnD1gZw&8dPY?1|w9fujUHyi$IYQ3YB4Xcs5S0Rs!y>d^vKEg zOGuhqsH*M>1YQO2rEng{?vbh0?rl`)$G0G7)R%mpwdUJUxa9kz30NZbEBxG=o(Txt z^s*1ET(q~hBT{2?Y57eayKezcRP6fM&dir}-n9_J$;60=B}Gf3@(__g|gW;#Ylrc3kyExye*1wZYVNK61EnVxx&O%S=kV{a8DwMiz4kul^ z^PB2a8yMRwQHC9DxiEg@VpVcgQDGbpLvt?WPm?v=slE5y_56{j=!f1|CauZYNj0!K z$A2iDyFmSc^W^h9R3{@lmd6XQz5e9u%Bssyu`u$5>DlW=V4RH!XBD;hwAJz@9={H0 z-2IlPir=#vw_>1ZXXc`M|KzZY%`#AWf;A+nil14C9OHLHnBbepP*V2yvl)`xs)bMV zmDY0P?T;%mXum-*3Hm?a$sj$H(NX)k^9?J>m~c>wnZ{eV{C~70~f?4GixwP3cre@pqN|+4d|GU^AU?GU zETA3dLy-cR1EbE`=%}&|83(89FJKKr+cs?V z$!hQHx3f_5TJKM$>6HjE8_5#5-f#I(ZHUpg>!hP&>tA|$`F=Z9Jr>H{Sa(>`GO_q> z01|ohvn`YR#+KyvdLGsiao_TwYP!!DUD|n+DK4(s$jwUMX&=<8HmYNd9x7(l5W)sv zaSXU!zXyH{uc7XWR3P;;9C+?W>PU5ml1*3o`crSOZYuc)It0SbNK`D%);tTSY*n1f@&C0O@W}KtQ@vy1Tnnx)7;y1T>os(iHi0-_rd3Lw2Y=welIAsdH@A5N`M#obM1Jm*Eirq3s!$)& z%Ki$ct{z@X(!mvl97>W-DZOLU7bL+ zKolhJi=X0R|BV*)w;sZiz)SFS^eF?~inXE?`F4a5MugE1*7n%bbi<{eV~78VwK4Mw z#%xhpkxpU=D+-A85OGKJU<1vTqPnuXVt-fm>4)XG`BX zu))xt$0^APROaWeft+N#?It4lNSHbh;vx0+iyb9C$A#09KF6bKz#ZAt`mkNxZY~g$ zSW!dcJj(Y9CCwlugk;YJbU6FqU26VhGSdfi?Azc)Od5HIvlXuex{~^PPxdA)O9Eto z%`%`R4fv6y%A86S4T-c)6oo05f&ddT#RI%d@mH;x9CKnESxC zdz%3b9&9$<;K);OB7m@;m5ss@PSU|KZP%1mv?{BKdxWX0`|=AQWy;UaE&j2VnTuR{ zCVW|q(nWCom+U6<1^G%h^WOeSlK9-D>n>_*Blqh4D-De?kJC97xK&hcQe;C~wr0=`P7%`WYv9}kH*Z<=o z29csF1%I$+*x|cP-7&*7e9wk-<@fIATZ>UaN5+>Y&PP}aN;|A_iTuPiK4B+c-;QDT z-=semX*rFwP`{_%A^)`sul9F8R4W2%gkKqSIiq0Mksh!BcO@E(UPi|uOSIoAo9HA* ze+ZBiC&8zcnYk+uoILY-Irz2Lo)yGYMuQqe;1y<)(WTc&9l48Xg8JzXxvV z)p6|-k~l_Uw{&^I?%rO}z|Ps<)a=-S%%%4FshRK2K9bGcDys7tYHDhv2C`gMi@Ib*HBkzh}TqP z_T=^Q%5t-dm93=|Hrj}y(t_LMd)>gp$O60v;Y55VcE-lnaBFEsJgigwR`CcDPJ^~t z?K(Zy+Kw#RBn){C9YLeBy~tlh`0wYe>P*UAZFJAN5*OV26uP>)Nzwt86EUl!rZfUh zPq+m}fU3`lhKb9`;P7zSlh-X2@Ar+UhU{Vld=8dC&!TK+E5PaZAuB)oejqoFb$@TS z1rOOxiZbZag5JE@ThCq}89h0vq*H5&<`Tz!gXi)5{V4XBzQN_lPOM-pf|&WhL*U6(uj_{y#VFg^l>01ktiovIsuz_H8t+7 zVzHSZ2e25r)E?Zb%(|JwZ1VlIxjTe+d^(Cc!OX0rz`aS<{s+9hO2YjgcccE*uOBG* z3sx&XJO+n~XZYdu;gOP=tDgu;gDnUTg}eW~!EyIob6Sd7phcS%lJWyEGQIA07yv@w zj}c%ivuyr?THPK%y}tLY3cyB;0lpp`hl0KL=cY4X14i`^fQ|!VD40morxo8NzIwPx z@ak1jZ+CY$@W5x-pX|;>Edx(S>3Z4HZOS%}WR;eBxzR7sojiOp!5nu86olsl7M-S& zz{hs^@b!;7A?|P4|0_MZn;o;$Z$y`mqNcZ~yc&c$5 zEP?r~zBfO%(VPFFgp?GU^c`z)kj{f9`Z(>tzV zqdk1DSXzQ_vx|qDHKiwH2ry&caD=SPtyMl|&BCI1SNM>xd_OTvmAUE+pPW3iz007; z9ar^fHZdC0Mo_OVj8Y{wZhI2mCl9CEmZ1&m?%{%Jp>Mh$uyp=BwC46eyxe&5o0Ee9 zZ|>#q!D!_?bRybjJyjPMpLfkP43OH=>?J!D{IrVX(T4i1h%n53#o+5+jN%s}yY)N;Qwet)QRSdqR&(1GaB zqemE>;iPKXD)_0q@)6XU^5GW<(rMO##IgT8$8N(5uoyG2sdba7Y$!yUs+kD6mL|%n zZ}9Fq3QvFV{BL6GJ|U?>)2xKQBH87lg!AU%OnO#(ga0;@M3EAhe+qrl3U%5*6aXLP zo3y=c&^I^STx^0y`Z>#%@+#=7LE6MMXr3`ESlni0cYn+IUW|m0bnPW1_oWKdWoH`= zWxfZ#S<1cFWW&iewd=Qmkuvo0O(1QXISbtI2M8s(vef2xSgkF9sj?`gdx0mG0D?Rg zzhv^}PXb7aj_>s`Ao(}*=5Y2(eCe1K!l2W22& zV(9BTc6KhMU3l?(w%Ba`t#|jm@jhl#jL^_|SgxrFHZ8+Uy-kX$5bDh<0-GT3f(9JB z`LEBWn^$yy)TS#~~fp@5u>4ooEqPDnXNIQsPlMO&%O+!?h`-bS}Ayu;y%F z(iH8T&woRD$dbc|TmJt5hq=*f|2IAQeC;rm<$qt}Rv0L&U&9}15Ji-*{|9r}>#nPl z1jeIB@r>FRATO3wb+MgLm)~V;yl%IVlylBNsqGh7D6xNSp6E**xP8P3GR4xoPc#y@ zz$!NnaC@J(Y)@4QfnV@TpMh8rGYbn|VDrBB`6nn*1wa^HPG`O6;5RTfx#h!vmXg5V z@A4{n?kbRJ4s2$D#FRY{bm$q5HWDaBr&jEL*kAkb+SzeUHs-Y)a?W)8Z;4lq!7B%C zAd9pFSbuROJS2j7-<_fU)uJgZ22U!HQ=j=i&-(3Mlo+2X=-PZQ)z-r5 zhCtM77T7HPfwjXQ{o)dA61KbAXT?bsDL=pt0%Go___~Yyv!KVLw`*pDNFzJq%YakVqx6QHi}HJmlEyg#``!nRyIpZ zi$QKaxYc)7Lo|Bxt+Ij){RkIZqu@+q2iyQRn=->qB<)C^EBDyvJ63Ctd|sP!av;`7 zEb(F!;;@K0!&l3Sib1Xr*oTwl$Hn2Fk1NrtDK`|0Ed7GS^|Fiap+1eAwkTOG!-RO~ z{kf^Xx{8q#BF9U&B1IPA&i$~V&u&o4Ezf@~@MsfaCjL;Q`#H%ZziVlVIgwu(DP!RC z5&#HKPoQFRE!DQD5@&iL+L=G`I7#XsE#RLZf*&xQe(375$5L_DA;ooTMI_!WSyh2! z<>`Wr3Ku2V9#$zV%-A2h1DFOaa$lPDtgUY;Gf|XR^XOi`02r)Q_rL|Drjvvl(l;Mm zU!ErWB?(yPjoJ5cj7>X_X%m^zYm_g6HqBu2sO^?mbW3;ZqK^7m*8VMz<7*8-g_VG; zry>{N5x&~}bHlU~1Hc#F>{0_PSpYPbOKMZC54b1QF}i<;l?<%n-_2h+9@CAg+dl;j z91u5~pP(X~z>eww{~@LztMuGZ`$xNG)ZbxP`+AF@T8+#rR>|!{?}B~j)oUIATnvE9 z`ZE;egJ?LWdf@xlYQZfT`_?{s_}S7e)+$&J@324GEL7wwT_;gO@To=6qLqe`TXYWr zqrV?!)VC%FdG!AI;V7XUH&T5qt-6(m7VWmWgzm*txKdLHn8Po;RPje_gnyJBliOmF zGV{2A*TJ_Vi6&G;c{1a`;i{F_I%AO4#}Icy&(Ltu6oWALzF)@4Nk740i@(tMyk9;% z0=5CzQ2c0Wf(kRJ1I zluJH%T~Jb}b+F%A-6`BTB%mP>s;a9I9Y$Hi>tr^BPML1|a}}R7;*YM9cEh(_%|WBZ z$x5#e$I;ZgP1o@1n^Z8D+MWs1;^OX^?$qz4t!3WQvnW)FO;B5lk+D?jEYfZO6gbd#0R%I2h>w)45yofUlcZJS!*#?K5<$uWm4~+Uzh~oc*!v+Kk3$EBn?{?eQstH zUBw^uYqJYX>Al`Yt&V;se3*>ivELT*1d9@Ik&NrmPS*a?do{(id!*BtS8@H_muB&@(zfk2Z6+Oz}ct+=&olQhFr2-tpyaNe5FbchykR=>2Kjp*>u_|z>%MLr}*N*0+c8i{{-tja9%hBKIl@>-5# zSzC#%_eK{(^V5KamBxz|JmXg@Q&W?AI)}klTEGyHFx+LpP%)j0NLLFJ3+EN%ikzIC z9Y#z~m^u8}a%ywYOiJQ4s8Zn}C$D=94-}_{z`n%umIsemckx|S3`-qnCuB#um}h@( zi#JTYAF3oih4{$7B13-4K3oc+wf(O7C+vpTkY!^z8$^*{yN^CxITf-`_MmjwF@?}Z zC^2n%9o;o9%yN^sP+=BlER)npwcJfakz!{a&f7Be9&ss z5l(!YxHizVV9wVN3A9HLbd|w~cIga;e9TGvxT=GMvv#dm%+hmUw7|U!R*Ph!XL1;!Zj~?w+q+M@;V$H_N3Je;3-H{rmAv>+h<7fQ2aqKm~W!q(g36 zPkloNvFKqHk^-A%Ik+*;7|Gjh(%XswempdjdkO!wK|(mdtUTmp?Rept=oje{K|rU- zdtmTj^4u%4)co!3t{)e9UtNqWkkG8ySN2&&AK%wU@v5qt^SK0PCeL!LQrj|ET<-O6`Un~8E`ur;(N4WN7T z4#nzanHd>(JBrtoTrp0;sSWxvc`dEWk+hrJK@vwvx>_6djmIxWLqJ~zAArcJS^6f` zwhWdxtbBX~sUNgF`m1(rT`c>JQN!9n$6}JOOTzy?b6?1xDZep?MLd(``A+zG*1zIL zda3X#ESdjv-iX4G7sT)=2QvA7`#j_SA?9MUM5a2!2D?<5>Po6(L)?dk{@%K-`|WPw z&O@#;3ie^r6Bc=x2>_D1P3ZUV&@J6qS!MK1iI{HO5_>3@v*K4`-%)`2#TBvxnyn%l z4h80_vMx91gKh;#LwJ=+VOyLW?>gu?F~ll)evnapjN zK#e>E^R<`nJx}LBIN2Fp+jmYsab_YbP^0BHe9o;)1k?mDF#~xTx2omghr&K9uokRy zp8n1ci2DxqJQU1tFS@%WTm5^~w?T3DDMi3>MLPb@UOviupaa#P{RRpfSr=g>IUm7H zc$GE(+Y+#TAjHH}0)bd$G1F4LJ904tIgx7xUH82Tb{x4S`=`u=&|xi!*Zj#W%001F z;i6AeS(k4S^f=;9JP8ct4)ij58Mth{bJhvn{Y}3xR?>7_M7c5sZF0|Q+SZL-!)gAn zWmo#}T^Mi22SoFV4;jxbPDxGr?gc@CMG{KVLr3?^RLvBWzC+ik9E!h#ZvLeQp>wBZ0AQtNd0Iex2&}8)Wg7 zJs$Oc5?aA3*z!pIAg;vA7@R&JbCLqnEHU}=be9rjN6T={uFu0>RaMhTOh>k3e@M9kiz05A>W(R#?uB+JllcUiCgiV8S!wUq2XbJNH3w2 zaYLqtBSrqN>WyCKprGvd z)<%MMD)i@EZY#hXhqIKUdf|eXYu0V?tSfm|Jd!NrDFcov8S&W-_`AR9a8f{`Fq7^f z9W^ycRNq4D)JVSU5#GL4c~m@K!isWP3tdN&hxaZH3i7(%>CZ#NX8+`_GAIeE;~%ml zz7vkl?pRELE+xLY|L<_afP+W2+wm1MWEc?MzbmVX*9nlkDezqanEs9ItiZ%mu*qlu z5Yttc2^OA&%4})o=bAczAu^0T>PFmFKdAcO@cgzkIJ?`b=l(S9WkQk4Rf2O^ytj(d zgyq-CxPX@rGNTS}D?^%FmT;a0^LFJp^A-hQ21B)~HVT`|{ljX3ORNH89o!PJw@6w} zI{vi~5-)uj8Lawa%Ih_8X}8mPaQM8=?PIzEE2-CDxONSwin>3B7FuqBN=7r?U=zoW zWY4iL4IuI!4`3#mtlTWU7UJ0~sxSfn;-ok5n1al^6+otmn^FmCz`z&>C?{Y@8E{ML zM8V+)7kb8&O`SEsxm~?aC=LGuCfxnWTugj?$t5US#J-_(!x*;Ao#^I!{Pf2%$(#b9 z8yhE~4i@y!e8GJX@XUk$A9%@U)6##|`+ZULV$3Z`hEK+y8%EJ2#x-ZN>SDbjG@Oyr z*O1GWlFHE(-_wA55sH8G$iKfCa;EwQ1XW~PxNaJ2DIi7cnGz=}J9y_@TmeOZX|N3A z=(mKK=P<&qP1)w5)^*8EPWz(>&BvllIfTT6?5OBq ztlt(SvV!Z#O}RY3;iujn>zY^?UDJD)oEG$rgK$j)NU(eR*Hy|w;n^T?U6^#yNwdTc zzB2BYnUB$bUTD|`8$GDk3n{zT24`Jg=3gz^h!Oj8@1#9emiP(PM62(mEi-M4ecNH^ zb4qQx_e|ci0NV+8=^BQ-fh}uI?Js)*e(M9-%AP{6knYa& z@J`EfZgf};vxA6KGfh=!{OC*|cc!r+$FmpI^RaH3wOfB@;6#5vIw+0~zl&=NEBbxt zhb813t^$g;d}_m#NB>Lw4O{Oe{m9=yRg=)K+l^)#{}WJkibDeJ|8i4?RLB576SQ)s z4e^b*+|mmJ_uqB>J+^upwq{bN%&Vz7_gD6sp>ld6?Kdgh!xUP!933jt?@F_^W{kLY zU<`}6LYj^JT+Jm zF~(nP`HgqtBaO;YB)`%hbfg8iaDvJS%Kpv18~BJ+b&(#8UkMXB(;*F-l{x-XPJoJgU#sr}U3qUQmC+w+mEls|j=#qik$`ZiJgv#6G-<4uB$XF> zF0re0eDLaRNx#=olO5f}GIha*8s@8t!LW(S&{(TQk$^UM6H?QOhGJ*WH5$=^8+ zqJKW!2L9z`((G*J?+ES3hwCX`gFH3pzw&E5#a?LA%cN_HV{2B`t0*T)gZP@Oa55Nm z?L(QN1W8jtdyffn>d^ndFtUP(9!mDGza|wW3frm2p|mYCR4Ne)!{H%K5_^1=QFaOI zhX1u@umiC*&q;23#>h9xP8R=Pn2*25O8-IcA9>1?2oM7{-Lcu(FRXU=GDJLGwjNYg z>bo-&{a|+90JFu@?a2TkAn$a_rPR8v_KPepn-deCnT;W#qd_=@x#wR%9oQkA_*GYZ z9EpTmPQedQ&`axze*CbHd7Wo!q^zQBH3fSpB^F7U79Cw?*n_N1+Gx(n>BGWO0XfU4 zp{yj}&Q(X@OX2qR07D3u(0gj}2^A8X%UDG6^6J&zhbDC;rY6St@v&R8jWf>T?@`br zNw}~X{6cLfN;7h5h&_KW8%w&_*m%;wEH6(`JWoN0VZ?WCmUJ2|E*mQwi#OzKXbh@q zYOC)3eG=5^`sg^MoCXM*myh$g-Rv&o89qKM47Bt8^gQ?04HoJSqSL+yVv+{_Io+M0 zHpl!mI59=8v^%8|0rJgy#4sfLQhxC4)pDCYu`Ii_hTB+3bZxU z|HarH18@GqJ+E3YJ%_>AUpBu}?ANOw0gEaikYRYZEVipQ}hv9D4nRnTtqDZCYBEk;(3VU1$}_;H;hkbCF$k zk4)Y?PjMBP=Che<6B&@!zGb`RF}E{wl?*V2V?iw79I6x>`Y!q0k?GRG({@xibex&H4E3W!mym+=SPOGW!uuoQyZN{+`{H#!i(5_)cguv*P)nGA^PT9{i**4k6^uZ5x*qezAZ#m8rU z1#jULm+i`O+em`FQf|6(X?sNE_<3HuxM#`8X@57i8Sd^42OT7-tP1IV-#S(UyA>*jmW`?hcG?e*=;D2Q+0@X+$|$~50pHF;($M1J4q*r5cETj!pDenrc7l?V^# zEm&m^YAXF4>PPLXMfV^0L70@-N|hH~(Y0W`WyQp;k#tkGwQqTsUWL_*IVg&P*#vGklzfA`gAU!3wC zvVhG5F_|AI$Jf%zWt9&t_`J*Sb@az{SMW|&J|5SnCYjy17x%w?y^m+{z+VUTU3+AH z5NeNme1%=mF@64Of!Yy$o+~H+b)jk9llDlehJ?X;_wV_C{W|M8aMRQ)72gN%eO0F) z`PtGl67{^qPBB={C#ZKQ+4t6*rJ_vNHHQK;EaK^pNGLc8fX15tp z*IAk(uepk13RGP1Q9wVzN?%-D1X{r6@^TzlALFJ4I9{Nov9UP<=?wb8--7W`8~c^) zR4YF}KV*uunD?HM^z7_xW*W0wrDb2-lqPmJT*5)xRSRPSN2Vy8)9mM`pMd_Qmnjyx zHOCZt!}YibZdUo=?Cb1G3J=X=&EU+qc}Yt*;dbhyLX4f$rfvc)J!J zstV6-?;Ioag`d#ed1bvMjZhGcUdGjcifh*b(pa|a#dbF0j^&NV+UThrQ|J0V zX{hNu_ma0joCEJ2kk zn?myR>5JI=3yCdG(<9cwnkM}}+^^2|x3;YGU$!x-7rt_Iy(k|L_Pir&ybY_WL!-+o z6W3x0%7JaMnax<)dS6|2gi|ub#;Cf= z$+_3+swl8HwFPhW_98j^t)*hD>-ysl%PV@Mr1p=tM)IQZ;3paxqk-aLoR=3=q0TP$ z=H|L}pK);$f3}YvcQyN!+1o!5n7S|=B7#fyba!=q6M{1ze_1a@Bf%p0+*McE6MPcw zQ2&E;K0b+m_7RBS z=OUVZ3NLMFfU|~Azxz8LP&1v?VCOu8FgIIi< zD3hY(1s}TE#f<4T6eh5tIvT!Sr$HuKT^k7j8ro40W$sr(r4;}4B=>JBRAm(vF*z!a zX0`K{Yv|5i9FA!fFRLYt9-C!GBCzWeqiQ3DrOHBr!RLtQ;pN*$pVEof50f}7oz~f& znOqJd;|7a)rvpX7LGMdMnyFY1oPH8KMyiONOAN<>c zOJo?Sn7N7UUk{HPQtA@68)LT?DN? zyQOD{u}G7XN(bx(-r6KZm6X&lIx&;V$qgX;xtKLPy$e2bSV85XZ{zUs38)6}B`K-L zc{;JlyZic)%iMt4?DP4v`s4U7U9%sx5lG~t<=H6Ini_zsQ8%r}!{q#973WO9_(=Ti z+dG2vnyzm0k2CFzjxHDujEFZmEqW8d9w{O=HY*6n&=}V3r#W;?y}2cyn9rmis5&#q zxi1ss*JpMd9;kUJ0^M=WyE$W}u{`b}|MT5l^7SS{P+27kiHIg~DG+xoG#yPw=r739_i1+ZdxzwseaYC2?0q8P9wzC|5{Y298J-M^1Spi!6#K5aU-4jvp zK?sc(q8^2W;>iD_1%O@X`ucjf&5Xs>;{!9%UtsXloGX(|&-F!&cX4~W0r>HGG<0-k zfn$c6ntEhp#JEB{`!yKtG_$+WynZe2gC%x?3ru_z6p_ysf$#2M$36Hp8YYpvjt&JG zSvclBR5i6RAQb-m`Ez)9xEGu%q>8kfBl%rjgM)*anVEnSxOmb8-2aJpViq*oyLb0l zOT{ws-rGHh0zyN(#6_O7lt4n4PM7YEG?(VGc%U0<_ZoqAzSL&L?-tynSqeDVyo`nlWC%y3u>*uzoayi=z&Zi-}5eJL@mokyzZT31^+7T^X0A~`{ zRlUhD#7^Rh6ZMPD^f%GKz^~}j-=w@=+}{j}(B_}}&#ar9yH8B)8+Kr}=P*U&GBcHM zu%7JwoctXU+*PI>T~?;9wMf)do@uc6^?8g*e;c+~^$(Y&2dQCRE@z1>(CsfNKbXs( zapCZl9?$x%uM3->M$j}#Je-h$ODc`vG0;&PDjOIa4Q3E2D5|R~%RiHT#~YsIe6{q; zjk-#0MRFwTzz3$PY(@rc9`>Sy=P$skd6-k9D>CrSR=p;&SPP7g+KB12mO?$(>Wl1UABRmtvfGaKJq zsDAc&@;kRRiN$JLnPL9D``0n1y+40^6{Obfz@*+Yd6C9v9O}i0gu=3oT4HGdVst3vpO53rlS{oXcr zfe{fL{PQYWhPs59+io8Cj=+*WkQq4fqaLF-vpCq%W77qq>aR35Hg>IW+Rla(Q)zNk z$xoo769@pDQSW_>_deG3&xRI_vTc|hKK;%gMnN$!u);<@Ne)paG3U!o(2oy0X!X4> zDG^rcXcSu#mgwx*8rdSRWB4_S>XcHzgI$L-_#i^Be@*pI26?X)F=gs7_!1Re`x3*S;=mltpSnBII*maa{TpBhiW* z(8GgC!B5l*W=;AyUEitUVjoGLJTbJ%5dIKWnxjrLY-+^uiZDBOY>VR45gBa_JtdzD z=Bm~BpRRzihvVn@B%;F(tXq!|gd4@x)#KCMmvr8!YuH3v#LBKdK8?SQYUavTM8^yY z)pH)k_~=H6<$Z!q2VkhDS!y=)r{vCQ6zfIkMKt0b=5`zPK)bfKYfWIf}&&_d`tbA@Gb$9D-;YRK4C}B2#(pb70sne z9Ow0u36EIMg2jr-S8Q6krfPK`bbRDxs<1sVXG9u ze66S;ZV{M579~s+dz@fdG5>)n-`Y11F9lu>lc!EOzB|+STor8-vN1Gmsnw|9l$8rA zr&(U2regZ~4&{#p6^!atkbt5Z-eFB$aSNicgqrf2h8d^_!df({vB z(KwH-vk3%TA$KGAA;(|mL8;oE2zE|Z*5T=_W=Yd@6_1&gB)|CskZmGd9YW&>9R47f z5A0ZU1>@>mo}Gd1lkS{nm7;e(w>@#+xj5e3e@&%8kGk;cKz`yLZjIkZsv9z3>us_8 zPO}hFUig^jJEq)w&*W*Omgf4qFZ=+6Z}7gc#Vw@*U!8GSoxW>iEh1M`)2~_Wt&W#oClmu`$`Ru;rsV>Y1!K9&f+Ei|_8(94VU? zInLka|5`5Z3fU;L&Z&D!lEe*KCr!T#RxX&k_jhewPlRF6cNYP6WvwV{y1d#(`dtBM zk;-E;_Yk{CbSQMaZy&XA1qCXxwI4$p# zbZ?xhR9-8JTuaV!N_7NV;nPhcD})JyVLCwN*sLtlKL`GaJhwEHVw;S4y@~)f-2zr6 ztmS=IPBLa^k@*x!Q1PCgjsA^f((VR`8iDm#q!l6R24`FT4zC7R*6|o*LSp7OW;Y~A z6=8UJRrxBxlFp+uT7@CYGabilk#{4TVwp~tORE9hN|0T_(qmJv-X@dJ_Ni*)u7+CF zm)q}uK8h#mAgHYXt`TJ3-F6tqPt+4RERkSS53E#-uSf9y1HSJOC}z+DIx8U|A#H9!r#1Or z=tycnbS*X!b9#FEJfcA9EJ?s@@Y(&&oJZHcfX(j<**P$`C)gi??EU+85IhV@ zK|v7n4Aye=B{?v7)gDJ1zV4A_v-@zT((jJu)U5bt4=_LNN?LXgEylp!V(+Eod-3K? zw>|5rW9vMotYz^u(m@{n{+nU#l%~9|nSn7PMRNmnITti?!+|!i_-%_j`af1(d0|QL zFovO8#i$Nw9<+p-YX+jsN?w=q5>v4i zL7{X`48$qC+at+&>BSZrZE09o53oZsoAeS*$ntP=tLF{~&$2<-fFkvPYu|~Oiu%uc zc-U^O1T0#6WohZzb*!V9D4*}m)u&H)c(f*%?%#+8oAYZeWk2XNG&D4pd-nPB=ftS) z4mb-7i@NWNdG!e3OP+DN3gL*BQU0i{UH0HSh3p*z>%J_Z$M3d>z1tuRFR>L^HhUQ! z43G%<)K^tig=Y&02t=1scM%8_f(pk{Q0DXYw*>UkfoPJ~uU^Tf3C^f}zQ;*vSPID} z)VNgF|0w+S-41$2+eC-Alb-JR<>hAXdXuKELK0l*cYh#BR{1aeDWR-#a#fuYv*~X= zh$IVXEEOA{DIv$@$Up32%d$bHAr*hDb?;U>XPcN+yZR3%zR@}xtK`KaiO`=g%U9q6 zjnu1+E-P=)UR!VKXHK7oI_sN3ez^o`Tl(aeK`8hbTS|*O^5GOyI%~os`#8yeM%EfI zr4cCw8KBjMMEXCPfrwuxe9qlGHZGvxAc+Vl@Ay`%_Wg07afVuy@PoJ#X7JOs$#af_ zc*GWFsJU|bWHDEu0QF~juohHNKQ{E$HWYmG9?}T~{`C_1ma1WxWxzH-42~Sgzwrjh zhBYxT%CnuW#cC`&s; zKqm^^R`hS)2%m+ykx)l}rK$oGt~1cxJw7%uGFltpp`*iK*#Y4?ulb@nipnc0uxdRy zYXsH1!7Ei#{rk~X$a^wDFLk)2p!>m#;c*b$L}K_jRZL7w$7RB}D>6DGFDFNz9PGnQ zuM3yq1AQ|Q=blCkMvL_0f;2&Ik_9W!U3z$UfMNwsC`BmnfG#a5=}m>twdw%zqnR{d zgBkHvwYT2~3t17XxxS9V+I(icE_03EU#y182TB{hmA;qiwJC+XOcEQ_yMY{3#0quX)BfwI^GJXPlDjPL>`+ip?5wN=o~e)R9%g@t z`TEXwqP*P!jp6xb+eozMMo`?huzMO6R>$=E2386CZD@~g3?$ncktgK(4jE{rqiE3V zx>9)#jB>gc>(yVMk%gqC>E@;6){7ux~@0(r&8`D@1kh(R4Nl* zP58B@4!Rh(OCuDtEG%Pw3L~X9{|sn*e;={jC_~?n&@SCc^z40(>_%Lss*aaL)*e%g z=gl_PR==PV%=1XcS!1;Ex08qKvS`(#vxd9^!s7-p=(lTge_&H_a!$u<5dWhEAeY?u z;GdB19$O9G(QrbZOx!6403FR391dDcF_O;4SI)hV>P*&tHOYOEc?+oneWydJbGs$$N} zFA!BlTLpSuI>+N0$*grzjB47?La zI%9l}@If>8bTGax>+{FfLhekG6|$P~zP5{h&WDMMo#o3>1gc&&Lw%ZL=E^vLjJA`s zOrC)Zt>I(!tOT~?7YQLqqIR?S#`=9nGZX}@vMPPUdQSATkqT23Lx4e$j7tX@o)%c3!U&4I0RWN3g1hV`lu-%6uZX6_)URtF4^^ zS{OSb@E~hj!e+J1>t-!Vz!H~`yD^su%G%sG^L3O(2v$CGKYs(qOhF@>XPB>=?@gg#(^NmjrxU~sDtq`QC%_)Tjq z89x6zVhl!nh!mhc9MjNOk--KDN?V@-u_0okM^RwoBuNoT6dMqNjO5H0a=er`M1-og z4_XOm>ZrP^&P~f(W(L%$8dhAeUN?>{5WY}_0lne>hk6Wc(C7oGdleL-0Sl<4q@;sl zH6OCzg!Y_!*ffsZ>l78u)K1gUc!IY8>MO=07B7Q6m8T}aUdFm1%W(X~0cxL?Y&wD# zfrJRATjRbZT0Kv}hML&yI>QHmzWh&tj~XbH zkGqj&tjrrW0+KU@)GEoN0UqoM;up&{I8&=$E;C1)vdf#@Vz(FPGH?DGPAxhSGHai% z=`u|`Wi(;Eyn8H>e51>b#+jZJk%KIO`GVFET&2Fptuf|wBYt> zVYUFC+LyU3bdd7aNajgf5`5@kFQ&?9*1ki)`h{ZU#f3=CX>Tmni94azN0$e2v7aPH zpvdwLX++lYSj|QT{;?U19vbJI9Vo_h#-`wE5{MklD&SR&i7oIgVLmomjw?|^QqEmx zOc0b`80)K!%^m(N;$ISH=TbQHb$4H|imM1{7Evc(6NvlXc=S|WZIsti$RHHdg!~Yg z&ZIdB22XCE;B`aFK~e0Ygf!n_d>}yQTBD!A%Zfk$(7CK5zubco6QkJxz z52p-HfX+a23#YS@`FP_(?xt+wS{2Ncs3b+TY5HbkWCJ;dee4V`+AhK|gF-Jq?Z}J2 z+K@_|vfT)T7j$ByCl759V^yvMfuAZe>87raKPSc+4~fX)0AHszXrVVWDpyBGvs4Q+ zamWm{E!6 z{1=(kx#wL)vaz!2D0tnrh(P^ZjseTn!cLk!%+<^(Fb~PahgjOr{pRoH{IDJ)i zYKJ5hnG_67{VF)4h^&rT@3)&}S7G=4kb?q)=uSb-N&@UGOr)b~uaCz$rCQ5vuC4#9 z*sKT)LR7bV)Bid(@1WfN-w!a0y;-59a%st`m1GD$dzEkg*v8QFn=jCHK6OKu$7;@k zJ}yieWRn5=sfdk)N`ehp6@etJ(3&`a3_t1-YXwi9kvDU8V8cdP1+O9-Xn0rR%}S$d zgLn(6IYg{YuLUi8PwrY1{`;%$uRk!g@7?=UiX*?Ob4yY8!jX*;qqQ-W1MT$1V2OA# z&dbBjXn4ig6;HnSlew4vlLODJ<%;QVpQB?E%=8d4DMP8SLM6{RZsdlVKAM zzost>(o#zyw>a+61WK^?_;QM#0l4py*RoWb)cUYn;m#Ixn-_DiiO_Wyznkw~ow_WR zeK?imJuca!Bt_amwQL-)S_-~G>W1mwa53^CZ7viy3D0jfQt;WVkwhf zA`V3wcsmzT>c?&7K`0n@AIH^=TU+6eKOEs%-IZB-OF~NO zOZ$dwXLaf#$j6cvs)Lb_Z9D?yx4m*vQjaHFu&EkCFgNu$ZCEJ9UES~rg09Cs8PCU*ZB-J1RtteX~C&j#qC#q zdwz}!`a*v#PlnFg8>#fH0TF((IucC7&%4L^RCn(tK>CxS}lmXFpX?;}JQEsc-BLQA_MW8JWAT(qINuA!*4{Tw<9?G0$%%5Mfe!GG^%v7tjj z?pk>>e`_r6ec!r_cv>Ojxl?7xFK3BbyA#)fz5llHPBf2xW6q%d|8N1GW=mV8d^5W( z8Sq~!K!qeeehdUP3@Jb3|MTovW|V5)>b|^ukOL2Z`i)^>p3i^(9DH1qFf#gu< z3J#`S*|G!sc$WF6OxN#u(T_%xS4do>#A~$1(fstNM&pPGbRPoPAS29BTbw9xU|~0@ zOFQWHj`1-S3-zN3?Or*WsZDW>?_-DJ-WwKxRX|Oh{qR4<;%49X@3oLPQBm{|qo$ zRVp2ldqh~WXQFlg-u>se!mnP;!0&?FMdAA-_Bzrhj(wc3`0q zypQF1k60oRIu=MSCrgHmayU8A6x-X|a}VJOEb9P1DL{!ks|cXvt}*68}8cxT|ssSkVNu^m0V?Xz*e%7Z(;@ z;^?Ym|MMEUn9vkMV+a_+p1@m-Lv3y^0toHjRbY;>m?trdqL(*Rbz6gA+}X_yuu*5n zwYt+aJ1%Han;rkxO5l(}ykRzQCD1BkU0kZF5~iiiPD&y@OHE4BdianJP|`^02a$1o zeSI)bglBYwoI}9#2EW}_r5v=cadB}bCZL*9_4rg?&cnzkTQr7&fe{=MVs=M`n2IWb z0*MH|xhdgVIUf8E7J#Vg-CI$afm4k^Gw;dVh;07 zFr=r^o~Lgcy!AIb(CI!Hq6h9`W!Bf#E!$EAfKe_A3LY4Cu~Kw9ArN(qjefeisTnsP zD#**5d{N4dyN`*9$ry&5cijw+j>f~q?fd$b=zkXXsIm@?ln@Z8YiltvFc_@+2L=Xu zdiaEH5iNsDxJu-pF2-PJ`Yy**tgfJy!eB8tV~bG}17Ou1hgC*+mvOtpSv^~#MDiB$ z760cWA^}%PTXSa&t)dRc=~rRTJ#$;zl3nxASAbc_7veR>u)=8bAr!D^2jvHzw5NHaSqmisLW~z3z3mH4_vR1Q2R} ze}6|jy#OT10Q$fo z;0o5~9yizo?d6sJeH^0^@HD(VJg(E+y}`>rY`)y0cC9t_t_V6Nrlq+#fOzB|oItq+ zRFn>IBSu3VF>*>+;20 z{&_&o0AfBb?+1t;+TC3nDTwm!kZRjpU4?HRtV7|KOF%`%-Z`HW7#Ij#R;C_Udn+p| zC+d*S48Lx4c=&x~W%k>*A^aho$Hag0-4aX&>NoyG|ND!`ooBqY?h7XrXOvdppAPay zH4Os-((UYsd}CcheS$cPi;Ih@*9_G6o;`bZ?_L;G0=cEIFZn$~h!~ux#ni&6sqr7= zKA{I8+UwU+!ms|`RV8*;IX|k@I$;s*IV#(R5sj0EC&v3csLg2O0qDZZ$8<17`U0_uWn^TQN5KCSHacr3NKiQL+^MLm6QiS}gL5C0 z{{)1Zk^$;PY!BbgqZYk>eI@(-QS7%5W+7+hyvMsQW74NSTGC4To&g>W8wTXE>4LT` znCv&P?sXd&3qiXyXfbF`goc()Q9$(dPLmb^1H8koSU5hH{Tj|DfIwR!CbmR)Jn}7Hq^I6I zDo(JB12h%3|50R;a$JG^QJ{cu>8?n0yb*Pe4g>S*uG%sd+*b!QdjSZ5!C9ADNj})C zsYN5OXzL*cP0mgfq{kUlOH0+3T!c$FXr!F#Gmc#15G-{(c9r(>XuaHef-8fhs*vCDtK)Bbz{rX4{<>Pt3imqT!4_gaGPmUYR1$nWcJ*JsD|ka#1GuKB8@ ziEN%W>^m}6=7V>(lRWB(Gl@4*VP{BHaSRwQfZ~^#YG-lDD33rq_rnK5%b}yX&b6xz zq+JmMx#9%Lwhwl8V{$IsQOtzpCo(I|h<9jY-0@=e|G-_Mt8mpXEkm}zhvx2PHymp_nRu zfs)hTMogX{P99eNkrxF4fwAWu>Sss(A;s4)nYs4K-weQ#!FuD;C{M?b-gNb`hQ^B} zH5dGT*4^%(IZ{{Qw>?Vfu*|n<4OCY#;7h8%Ls=Glku5eG)=%=~1@pS-PF(RRwZN7w z1zFVY^C)!##IzfqULt49=l~kKpwqGvS|7~)FsucjGC-gwn<>EdtTZ+NYLEK&lU=$W6mqi$N$6;g}U}S4RUSul^UJ}?e=hS*|kQwUe z2%ENH9eXn~tlwymWeBMd!;LOpUN%SkYHJR9eGRj0lSPqrjtRW_10JQ(bP-J%+`ES@ zu?Z=gO!2hfmGmqzIWTC?8e>KzZS!0=X+@rSCR@04Ky+IyvhB1Laur-GBalyp9!g;! z%>MWTNtfNYVr#J={22(aOiWI8zr46!F<@cPxAke_X=Yj)C1OpHI+FVwd@mB&Ux>lz zGAv~P=#F;{Zy^?%gzybpZJ~h8SnlD&JTFm@zPR$RXD+Qgn)J zW+9Wv`CVq61rxJu;i}i7R->#L+8cfzCU+2sjbUDfitBT8E{z}fFfm_${J3u-FDHlg zihD-r0YYf@gPEd=%5}V1poB@weF=Cdh$vj}FKza4rhUu2fI8IKspuQLD68w9v8bZz zP8z1Je=ez+BPSRA7ABUo?CTGW4XoNb ziGxoVU9%02V%yg$OTXXG$v`z*4Xxh25id!>%pkDyn2(32eB=t{9BOA26^maGT_gK? z!|Fl=YXcKp5C{mE+|!zsGncI(!!r!X;cAi&H~XkdkK-g(Ig}WDO%`G2O_>%;dXs$3^;M zvsS>aGp}X9Y^RIlX$t~LLa3sc)7~*Ohj1(%O9V|b!{kY1XyM##Hnu4U#*%Qn-a+Mu z=-L&=72M))osU)3#9{v}^cQZT|bx$JZchy|fo=vvJoNyv!T|a$4rDJNRDEoPH zYFft!v#*LeO5FnC1K#804vU

@JrItyTVv7q){Sz8O+ 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

ktw}C%@%qXun{fvwM(@YM z7h`2*O{DDC_P0SdmJ}X_E&9U;TZNLwzlBY|=8ZEH=3SAHh4}NczOJrrG|HnJh(ekN z`$N`MKc2Wi^#bTIK+!KFx~%Bq0ekZ_a*7u_XXpr)7K|AlT~1zCaD7~?SGxz9k}wpy z3HOP-Vo_mXGifh?=RhPz!&vcq*xFpt@E(#!Nv_x?xL4ZNx$MP$ppi6Iz4f#YJQ} zb^zlm!6Y3zeG!qR4{P(6Su5d}>_q8T6?M<+yUSdv%=cdOKG1j@$&>c628d$#4MWmc?Mz2ot8x@Ormtb#6zGI zT3bhR$ZCfG0no_U1DUFu>OukUmzF{FH03gJjMA{^i* z5tfyMW5v3Uz8_O$aGIlk$p7%ceyT>EWUybB@=Nnz zp#ur$dskNp2&e`JhyOi|#YR7aGt4><_m7p*>AI<8KgsKl&1N6j&(A9Y{mjk5zc)OQ<&T@9R&un2=i zK}=rrW5}rV0_^sr5Su}CH_cf?Bl#pPyLSyrRfr?%*@$k=^N4wV9O1lRNLMHQ4QZp;?=gbP8-n<8RPs!% zAh#55y09X93X5(SrzZq*e7AxU+0({}0v!}!G}1BrplmyJaAB+4~A|jd+gWBe@*TEkdZwtAL=2Jz`W))83SeEG59RUKN z+u(hOESdR9F}J{U_S2VQWUH%j(0#VfgU#6*f>LjyV%bi9!L+IJJ#|)F$5Y;ZjlU@D z_mWL9Bz|dRYFBw8tMcPVZ<<_#klKLRmy_dW;&Xq~*H%z}pG@~e?3T^&V0HwYr$!6u ztn;VDV4SQ}-9!z~RC?QO6Wi~=U%mM{5hAH-Nk4>!p02yU(_odwh}m&@oS|P~Vd&J* z?D}hb&a3q%a<>>Vs)0V{t(?5n+(ywTwI6TlGfFcH`()Ib0#2eHRF9dLDV7{R_t!pt zWIlcI$2)E8kW zw`RxMJE&O$K%QOXi+emBjA|2b%4L~r@Zmrl6?D)pKrZa)%=kI<d5B^lo zZvFX_2|>XI^a@Nx&bf_|n$Y^VK?tRr+lqr&7~u{w#{ql_^;&wbguu6}*5MgwO)%Z3 z@)R@|lmmSoKH5`zw;hCG{vhNkWiV#{i9-dPN(nNLk&~9}R|-}0qnOGgz2CR_8;ER? zdD1fU6|!--t(jB ziei$K(;?;SR}RLN;pr12%yxqMmtzhtKWzSBec<4jv2=f7DE8hsK>9F7tns#b*we6J!`MvG$ucgw+oUyVHx&&WQEHNDIbYU#%|KJI2NWH%Ns&` zbaxOrBFu7)8M4G#Z9l&M^)DkHKp@UFQMAEij4L=fKLheBXiuBMew5suE@4y2>Hc+GBH^>hnhm z=t{x5=?^N2ys2=>5kB>&uokzRQw{3q|#v8Sqd^W6$1H5JeP0Kt)=RlrHHK zq#LAD8WE6`Mo|{q37Lk^G&br_4_kDYubH>>J?7h!#9L77w>wqWk z`?}V()?9PWl?|jPR^vu!O>=_|m6Y9&-WFUVGaB)pS`2SklVf-6?Ct_Whklm}ov*vT z$FC}PU=~=i@iI)OsE2{q!hZohWBq+OI11&!dlfxY%gIj6yf=i85Y>R<{?fLpy@ zk+g#0Fc=4}S?}$By}o|+z03%S;w_?x%ZZC=of^dl`;HwW?*bl({H|uavQ~C``)Hpv zO!~laEYD9!1eY7_?ByHqJ7LG}~&s|b}=!X#zGM!ybJza@6ZfHK?$?1HdO=4M)M?$?~3bF9D78@ZAaM#Oi zBBa24b_|K#Id=^xMZK%P=d#SRrq|bd11fAC0S7?F&3D42;h>gJ=(O&<_wAYack)7U z#Eu%GEPMTxO{4OU+hKsegUh)1(e4Ka{de@7KQE5+z=c1Uq)Ftq!h2W5%||p*@g%mI zBBCNIi`K;;{aXi(K^ws=nDm}b&YTAl&u@cwG~@}GVDcFWFx9(tqHD%HJurL4-&Q9w zartA-zNZL1C8$g1>8vG#V`sO)Dq^6K&+k4zKNuT*vCheque_WV!JGMowPU)A#wQSP zR8AHayTjkpU~bO##w$nk<4+T=goFyxk!qbScD(4gm8NfZMI`I{h|A|~B|V>=z3~cu zS#O6WeN`H3@2Vqnk|yUFR8>`N?)UzJN(?-gn_q+$3*YV5&6~!zN5>^IYiycP!q1sS8Y=TThP&tG zeR{#C?#k7xty@Q+&WU=$!Umou&{LJedpmGm?n^zt3{=Y2mX`bNmN>D zkrs-vhEWi-7KaEjbVQWU&fr-9&J5Y!hea z`0+@w@9Q<-e1H-Ur=qxaJ%4+lU0YMr8=4u`IpAHCVKD<}X?M8B#llCR+E-Q%lN$Eg zR4QgG;JxJaWCc%TMr3y|+~abD$nFPI$q+bRievvK?KRLKLY4G(GzXMkP z$hEdZzk8*W-V2|C@3vCl70Il?hL(}>y8A0Xmc6mjRqNIM*K0Y;`|VwS^svTbL$9?Z zZT)5|e99B8$wv~>W7=r{?91`qe4uGW%J=@hX!phM!!Srd*K8p^KR@F9oan*@KQbz` zvb6NIbr$^aI&AzDT6}`KyfpEUEraRdy{AS$0q#6KtWwKN5%Lkt%#qI3Vh?&(YcVSx zD*wom!!9Dz))`z>6N%`t>XMsER*b`_jQ!GcwfGIR=n2<_hzQ?Xrxt!}#$0**1}#ec zMI-YIW)r`=a=eGK^(v#EAIn^tFs{9tVpBOdkr>Ygl#KZ)W zUtuC7ZH8&W7$I(3uF#CzD5^qYgTOm0R?-qo(h^fs(?mXpPtn2L3GFog_iy8Z-?3hi z7H$QMg`&E7Gdd~B&f(&pTbDm)WM&Smw=IASqvU$lAV_kEt^%B*1N>%cLN)E92lNDL z*odj|6M#1HNj|koH5iHcoqKQJw%G!}XW+VuoE)NokKl)HBDfC?)Mq?;V4KGa!!t{t zEwq7cM!JZIjO95C=916JK?B$>M0zLlVp>yCrLs4js_#)RD4Ia=%m3*4QnWVsD+l6H zytDI!SchbY>NF{6oi1cYH4~+`9)tD2-1%MsS$M`J=GD0BlXAm|`cI`^DUomyWI> zdV&4!S0jKvpW4}l6SYYDBhKlE)B^}4=utPT85#6+mRq6xj{@EY`XgS`e~2_pg^;9V1o3e3!j|7 zzdM!bI)U0&cFfziv}=%=dx01rxVx?N6$mC2kv?_NN?%u(Mq5)E&a(r*^IfW4eYwl7 zuCD*KX=)p+-K?Ap#3gZp0MN~1i7?H;n1$@QLtrk}WQ6>+?PeN>%lty)BB@kFSSA8@8ml zRAprh4|iLKp9VGbKGH!zgPLI97IJF$jID#%=(N0=qm%l2A$$rhD%;EfbI!$Z>nv30#W;)T53>r)?>(Eo_4<61vdJ zUWeBtC2uGpevWL=&_DgV9oN&|4o>Wpn}gu|x$q^DPT^0KaxOx7bFwXu2Px$W><<`i zu*v?$r(FR!Iomtn2X4^`;{WSL%vXW2cl*uk9Z-oYWjnQ=g}n8|M2z0Ax^Jz~gSt>* zX{N*NCU6QaUcL49gyYwA-60I^bx-0FDr*M7)8qy439O%*#RJd6$tnIZ);b7Ks+=j_ z>d`@`ynkJ0d(=Q%4^rfuYdhC=2B|%NCaU=e7LS_z`c0ztHoSL6GEq%^=1e=UNiT#dVRTH z`l-GBEp48vYcU~9RnF8>Y=cYC%}!c0x7k#jXS+IjTU=wN6^z>pOTH)#2mC*@-T|1_ zVHp3B(}Ilpe>QMO3e3F0pZ@nIOb;2Jnp*ezXl)Mdp1kbD)bd?u1pfO6w8(<~(r&`m z{dXK39B9A)Ni(O7`y#X$_A6s8{&u3T?C|(5uh>jD;Vs-9(eFE2J zar$x&XT<+-4*o zO|2A$zrgnSV+RhH%DIyBA&fO(svh6&jcbk7190Z$!q)GU{_Szp_wHR8f=j@~#q}BM zKNKC$iz+I8z_Qw9f^ubmh$|bg>j(lHo&<1mmy(3W-$BeS`g{hBa7w^T15Ep&A>aai zymwR^le^vAeT7C1r1%_uuCDuFB9r31BNrTdrz-_cE?_A_$01eA7$el21f8Ln;RwkZ zT#-3(6A?0Xvl}NMrKE>c2>(hrU5#ci_5(*p4kxSa+t?9+jMmlEP*2>_aKyE>w&r(T zABGcfn?>DjaqK@@<^3y{0@Br&fBz0!1^KP$*ytz?`<2U=ukV7J2_?~m!PfluBv9p7J%aCN=T9|61wx{-{hZ=*q(+{#D}@Z5_RFLYkgVvmE{OXm|ZGP06#D7js{ zsXxaoUe?c=T;2MrCS5S{KPEw~^IjK^?RbBB$FnT}7*dMe9UVAVuM&wB%S1(`raCyF zbgEY~g8xLu!faV^#zVZZqCh{@m%!V#t$%k5RHofPSb#Aaw_a&qu4A!`2+~>#VUty906tLjIB?cR|y88B+A(DpPbp?5s7D@7d z$XlKTFeVEa6rgKwkpYD(9-Chv=y1U%6yziZP+LJy@o2l93Ym6}9Y-Tz3hZL|c}~0= z1QMLMFgoBY1v4Rc1KhfR5E-Fi2s1!r+mNo`k}i!?+6V@ZXA&3!^b@_7M7>M$z}AGJ z5YPR;wLt$RYV9wPq1-&@ap9FKSHM#3=*dH?*yjc;MB%{Y`NQ_MhV|#$w@K+kYnOok zplrtJBIFs~;<88C-rDK`$=kdXRpgQNFR9^2EnB{)XJ=|S8GVoTX7e@k!9buqS4~;3 zsrcQ$u>iG>d;6IIv2l`OVEAyMh4mJE>6Z5%aa6^Ti_D^`NApaHhfe+=W1VGup{F08 zQHW2O85C|6JwcM(u5-iI+rpCk<>SYXA!2Y4Y<<$)Tjn;|fAHV|ha_l5l{xe(Jf#d< zLFzy91YAZvJOuK!Er|DbcD}NOIzeJ2P##l)AH4R_k&`<|*3zpw1B9sA`tiDveik9> z%X4!Pv9Y-Z>jadPY;Aep2GXPe!kwyJd>5N3oN>|K$Z7l5yf>KwH~P+FOF8>VeR8*! z^*OW0YK)aSQLSb7yLc;g9z4KI`MLm0^2Sp;!OG1%qK~vTPL6+W4h+!C9b4J1uU!o_ zT`}FdnHS?qw}Fxevu)Hne<`WW0NcwWSJp+<(tmIR6jlD5fXd6u%NWoLYY)Vyo2aMV zzXB&4F^83mepO~U90&x0z@swoA98bd=cDqw5U~dVfkrQ;`JC??ClDozPTN9ztr zk1}FfZSwaS1*L!!&dLLmURvY;hqYc-1}8FF-T-s{t%qLVi8$~*NY6V6^EJgqs#Y|> zfQ-w~0w6v#Y&OMEa%Q=XaUBm64k8}oLd>p~q_}o(ng@J^Dz&)ye{yM4lgw})KWDR0 zF2wyw!5n06K>m{D=f#LAa98>h2~SF^5p(;c6VWM91Gn^|&?eM#YU0X(U3N5e-}Dka za7$XHaeWveb^31Y<6E^o4lA$^a&n;CyKpl>A{VdorH3T3#O6n}%s)3`0=R-L-YqSZ zRG$~r){>ry02ut)L;Y#lVuoWVxd7p_`*`%Qy$F0{@LV^mi^&33AYE5tD^B*Fnc(xsos8+6H@5PZM zXF>o39TsP5SSP2L7#etnsyVa5q>p}p*{^_AFZpROw>=miDckNNQ%~;Bn&VS60iwCe z)^={I|Rwk;*r;=yaC{@#Wd+8a#CXn`D*AAY&<3C2@DhL2QEt+c$Tuu>2Z93XAn7}=>1NYR&z;CQ-xtDRC~Ht3^Z|R<{Y%E5 zMx7`fzhG!Ai#Fmm^D$p)T`xa1{?O6jQ%TKx|KRZO4<6)cE%-EaG_lXdthL%(>JuYM=$SVn z-(GeIwe-*&9x!(6yEFJ8z3rT7qMI?Gf=lkVDn_|oNkL}4$^9sTy^xGXqKe3dQFguW z_4NTCC1(qXDhQPgw^6Pn>$+YgJ22{5btI#k&9HV4x-`%O`-1onSAGNvImXf~y9m-Wo4Ah>x;R3nA<$A}_P%ZxDmU!BPiwL)0R`&g(#wzIB7wEp1mWbEaNl6`0 zlL>n4WIYezdTnqi`zD1L<5&LZWH5e|C+YQN?(r3}+okI)d(Nut-{Vm3pCu>v`UYbq zzeiyEHV{3FB2-N-!lVt=ktiRcoIqhw)1BxIx1xc!u7r7wU{)Iy0MFTQAMt z-Zm1Ce+l;_nPrgCt3YP>wQ45y!<((wUSnpfYX--C+KYPItBv&tv=Ev_?RoDPr^%x2 zoSaHMbV7E*i0?^`n;dE0ml(jUm*7swj zq#Hj(5I}#l=PB7-RY8(4}`)DQ8Q z>Gi67Bf`>?L!4e8kY?Do7mtBjL`Wd;0_l}lLT~Twr~VM> zkte<}Z^@*GjsEOm_v#k6vJgx&3^{ODQzNhxe;zvJ0e{UHl`(`d<*b)Vfesi_ zDWq(H2;x6EqG$hlmnRn7g(7T^PELXqN>pjL zO`v857^Up5MMJAX)Y{t*s^t%*1IsM7Gao7vVCaHc2=PL$>BC{aK{t`ae+Y^WU2)EK zQ;auJh(OyGCz770za&LKK%i49DRqI77EhF4F(^||g^nn$7TV&e3hAAg8&Ep?yR5^Ku6}~ii-R}dRm!{{t>T9hD=IFl9Zam*F)-GaU z>DhJ(ahC68Lc=&h=9%(+vd4~wYx6nSiRd9~<&;M`i_aAu?zijVjl2?C+lB$MlEisS zKU9=8DcN;C-)Xlw$IJ3DpjjaQzUHJ|L{^?FZ92?Uv=2M&SI}Jy3GI!1y{BE_Md3QQsjX&Vz+b8VMu&;IA zHkAss~=X)eeA4B}k`_LXhdH?&yFK$YJVHGh&r8>*>(==3ZTJigfk2W0%SGpLH<)nYA-p$Pyrw+XWERurGBIxxrSgP{Xy}N%T=Q1m zP{w+fF-ebl)9DiXP+=d52&aoOdXrBKGl1626QpF}U`OlzuIo0ACSMk4 zD_iF>==*$_p7s6>mG5&P1p>6Z)32bK{hoFqPx^6T%Q({tJe^!&f3~;tjhKXOSe^Ix zUEQ9CX^|2u9NlWVeiP1r@M>Eo?SZEeU*q#Wi6(f_+>q^uHyr2jrJ%2RZG3L0S3^}} zyEH7o<3zyNZbLyA?y{&=#N65Rx0Su~NF*053HWkP*NR?TmiJ6i;s=Q?fP_v43_@%& zo+IxT2V*|+-P`EdHY(6Q9>L}DWd25;cN?@2PQ0y4ebax@;C+$j=xui@)Mrp@Yyv7?<$ z>BFvFCXX5uRWWR+PZ%zoI^uU}u<2jP7zV9p*N;0)49|}GsraZWJsquyyUV>Qk=`99U*oRniDu^6cZ@;sZtU9o%*sOLx>~Ku2uKn0%q;= z@e;EO#+0f83iO`6YDs1S;eZ=QY1!j71LTYFv=pn8umhYHkAv|f^_!NS_3Fl_dkdst z{(eRK75#hWtga-hFSF~Ytk0+C-&nwzcGK~r8Zyt1ihX)neU6e-7}q`wfkoRO|9Kl< zqnf>~@*%&Rs%PAq0E4dbhuZF#pO(Fa`#pg;u|#ARd3!cPD~K)e5KUk9G*B{xwIhcr z!Qi7AY%vrb7-nsz;8~IU;8gKDteeR$2d};?eSPU?N*CL>R9O^t*Ya{MBy|bPId?{p z^Fo(jFEV-O;jEL!2w-E*ujs4CE1&A)twh{nQX!&7+CM=Zjl0QPi#p1F&mn&7XQz#@ zKHA7BVu}1#DRNl>FS_1l^)Fd`e$XDunpnXQ+^O?870TS0WhgE#gm*TD1{2MpC|Iy}5L8*{7@ zSP;NOC!n0`>KnsmC^+bT*2Xa1*p%TTS3yJMq^ThyK{&ws4E{LVL&@;Xh_EZGKIXx0$wd79&b^ z9Yp~`uFWxb3vj{mZ;kJsjBZ#(36+JJu+y%)Nxz(jr@}qq)!QsHX{42y*&o#!6K1O| zb==pjm5dKR@jNaz5}BS6`-OWX9J?Vha*ecdKXFifSn2$tztE?liEquaZO_YpDldr! zrX#C&JUV9m(zUwb)#=&tvNxA{8hP>gigDF-L&rjm{N&4BU}VZcsvtS-^e_Fttw)Jd zg4G(*f~EF*Z^=4Bjp`^4BZSmn%Ls53pU5;nQ<9Op@9i{AD^cekDjCs`r*8ax&dOm$=)BcZ0^jY{Qy8%b$%gGG%V6@-%LCc~6=o_8SE})&zjp*~usyB^1IAL0-G|9_prcUz5r#J$;`yP-^vL_{`hvDDLS%gWSX@%ZEm)1VK@3XLR)1?w;S_BYxYoCkmU;WPa2G^D2 z`mukd+RYe!$=Xewu5WAJ~P6)GtlR!CSe6q0zF>S zGk5eB#qBr5^TzdVg|$TVdl)BTxO|#yiY~}^GtE_5&Af?PB}ej(gVXhBu`^?I)m39} zwdq&q!NfCYd@(K*4~2b3xatvbm$y^V#zHE|zl&$x)|yOC)W8N*+iwmrkDYgG4@2r@?c$k}x zlS}wJK2-RkedwFEIHhoxf$L-e(hucFGb!y+foHkNl4J)^7HP zB-M1qVmmC?DTHZNi;#cjP~+D##e4>@@=PIYG^Yq=u>V*)=MjIi?vUpnw(?)E{5ta{ z{dH^>4nd6nTFuwRFCYt{|MLIWzmR+bEtXNR_5i)22z)VM2Va2?;-9wy6fSTuCuTF? zhdxYeFmXYUH0oNiHIVp0uEr132!NASY*3?)#5ImbuHX#3w^yiJwhZ_(bQX)~Z@>ab zg6FL`$e$-Hu8)G$5Zrv2k*}GP54IFwbaDphBfOZbqYHGSZ0E0wOIpSAIT&ecYoCXK zkoytxSVa$*oX{}E#lgV=l8_b|_?$)bZ*6XZ$3b^ogcuDtphbxy7mq`hCKF30D4dYy z5fMaLL0RZBvYE@JBA@TJ*2~Nm8JviGoCp6}Y;3?AME(E;FICM2(%a$Suz2;Kh~l=xk&e&qis9(XO}|Np=KMGkV2lWl<{ zgSei-P>qYIW~@a#h)-!mMTT|v*PPGx02TqzW(_p`aQEo(kR{qL0gtYFzCADK$riK= zFiC8Al90PStf9x&DF2{;u8hkoLe9Qqp(JxBq& zU|f|87xI#hZ?1)=V24&dtIQS&gb5AKk5{`rmb*##q%NRbSpIoLJFUA>jg!S0SpcLD z3OT}q-E@Jy0W9j68?whq<$Ac+Q2p`9&1t6K05=w>m}1+PjF#0hRwP89=6%}$1Yc|H zYB2_?`k!0aycsiGoz=H_L1gA*q%OmEqYB#*Sdc`Lb@-&Hv?0X;xH9&|Ap1QvmhP+W zm?7+*2L&%njWg3Nlz;CWa*bx)6l{~eKZoc6=DB3Y9|Fu`2|J(nyO!L9iz?N}qD9Ze(4F$EAMh{=*j32GU}%T(rDSps;MN1_K_v?Cvt>fb zLm-DbNxI+^Vn6H)^u2^yRYXpT*)W00NNfw*P{BauLg78)i`5NX`)j5!`r zYYXb70j=l^5M|Hss8QlF1V~`2n(U6@N@?q-!dHB25cozJ*Kk?!o)7HVh_6e6xxY6y z;8Ly9{_~P<%-^h|W)UlZr8ijEJsOW!)vm~K7zX}gRDrc%B@C-W`7Uzm{r0Er?FjC| z$B(&v4C}{Y-ZhruhKN;!>0LYcBmY15+bW76wM&P5$?DQdUux=Y&!~a>>+xMfQhjYc za4F3Hc|&FSxAjmZg5s-uYStP%nPvZcjpPB*VQDT9Ij@Xzy5Ke>>+a#AIOdRK(qAZ#($)-Kyg;ic-)t3nb6|B; ziiSw$tQ>7$^=5B&YSqbFIn7M45ag6xaAC!{w3q zKOPmEd!Xv*K>PUk!2T&;`wf|{iTwKJ=4QF*Ajk{ZjOukTP@(ZK7Y(K-m05JfKy$;W z(Yr>`pycsGdZ0Z&H!(>gEe5l|92*}{s;ys&zPAqo2O;-QwGv&i>_|C{^lRV}hL~-a zJO`Kt_*dZK*{Gdo}${FVuSjGE|SM6e=G>We9CNgf*9Z#g@;0Do*6+r`HxVsve28Oc7d)i z3WKJ7XNMSWmnEqoHJJdgLPu0Ikzx^N8*9UVUr{2L1}jGx=>6YGn*!3#qa6?H3Y zA3Yv|%S77NOuG9FqT8rcUv-tM$pLR9}KOo+{X>fI4C5!D*QPUL`LbQs|a#!Rs%I(-c z9q%r**qcsdy8Bf5_v1!p4CWcdpa{RmU(WR*H&ygA0lVPPS139Q$0@Aw>kCXMc- z4KPIB6ou(X@!aedfj8nvA~#qKYh64QjJu$-7|&G}gXIkR^*&M!OTup8&)k2 z#KY04b0z2waEW64xpt>Ovq5&>PPT%Gco_|=4{`CzQ@n>TzjM2Vf5Mcrmlv;cefuow zXiii*2on2|0dv}t9?!B83&ZhpO)gH034uP5LxTfbt>jmNa!bH-DcvRF6x(hg!g;MR zQpm<_zASOV9dA=fQ*7Ckodi6aEcpOErEiVTI{K+RSJUlm9-mmH4+J_<5-(K%NkR%cera zYY%v4jsAlX&lK8cuzX?0xz$LgGqQNA*fj_jMfW3>#P6JvDJeV=6M z{B{#(hQA!jIvD8gLli;mZt`!20dUJ3zq?=_PH$Gt`2d0-2R=mz`?!oK=2cv|LbaU?$l@~`Pm|Kj&Y%-?$0 zZNFc3McQ@ zPqzbc?^&(te5?3XRY)`7;bosF#U;1YPc2kiTN`;dc8)%Ow5N%#7&$%eh6}6b(0WnS zeha2eai8&VKP$(@9uWQJI#VsNL&>UJnq@?L@n=6+s@gh)56F5IyG^SooSfH;I!#Bu znQrE6G)AF#kqk;>7)njxRqf3N;QyX!YEqO-&>|e+qI^KPXyetQ8 zv-sv`H!MO~${=$NO-rqeMR;DhZMLu69@ID5fi7>sT7X@n^Y$GmJAI&QbstV#+>($1 z&X}7copJTLHa=AjT0H7MMBYg(xwyMq;o}~^Xqwwb_PP8)Hk$f=Hda7FT z47Sv(a|?OQB|Edhb%^7Rqf*#de_=_jmtChFag(hO6J@jlTLJ4lu3 zc)I1G5>L|P99e~Ac<4qVYpuOOoKvX^aNqSV<>^4?mG_i{rCPHvM&tvlCop`WgFP`4 zxyns)3>?}^kE%7`(zm3RLDk{j~GUnkx-fKH5g7;+gVazhd0)ydlmbn42ZFg-#nsSe9AhR zm{CertnYN7;$h%R#N`~e<2w>~_7Rp#yb$EEakY`1KA>8{xvr2Cv-sP+>15h0T;yPS z%eTsQI@-V&?~~6t+^sFhme2uWe*^Me@%Nz}sPkJM+?}?N);IWXTXX`wSF70Q3|yXs zY-VAjh@SslfX0iM>2IiYSGwbOVQyl~7dP%R;GcRJ#HL{f*RL^H$fX`}!kDui@4CAzd zt{M}ye#Av&>@ObaoyR};?6XX&QpBElh@h`ce--}qlTt*6Qmb<5>+7pC$D>uE=+j*; z`oFRTWNuqG@A|N8s7aJE|Mc7_D)lS9uzP7_?G%ErS9VwN9r|Imi!s!>Z+x1-dn2@# z>#mO`WVQtbXKfg9>M(+~-=--lvd#0TgBUg2E591!w!;{J$&kMB`?oSKpEd2gTgNit z!L>8PI<8sC2Mr}5sX{R~D+=D^TBkNm@h9`6*1l`k``MN9 z-aeE2->@Bx7krwV`TLZQio7dHV>w4pwQ7F9G2J8S#Ou!e)VOtCdv!G6L&(AzCW;i1 zH&vi%o-urE(&B%MO2||Ar+#Uc;(38-E$N5=JpT=_+8}bJo17s;Ym1WwfI5Z#9*!V_L7? zsd*kPMg>pEL!Myr76Is>0~0a?;9*^Dt@%Gl8gArw#xH8~ng1Yw?Vw*8hKLLi=f~va z1|JSmRpwM zhOzYf(~tG`6i4)@Iu(k%7MGu@bNF#lk{3!$czOLeF?xZ3h zoK}D$9VJFK(bv@S0=f+~F7mW^nB@)S7vM0lv;3i{V6~&QkiCh8QuM6)yyiMavj8P>UmRykkgCtyic@hRVd;@E}(d*ds29O2eITOKh{c2D5IJ+ow=Xp3O$6+ znFY?$CMM$eS5R^4gMa0S7_X(TU$PN`+NZyIQrZ0-0^_n7xy}+ZqEHE1jf#5HcaSe? zOKLp1rc59%i48@5t?~^N$Hi=%s6bWMfbwL3u5G;GL~&lvuFG{MU=N z*kb-~Zp0zW>VLJF_kVwlmhvlcm~d*=0&sB!<B>hGU; zNLp54$nb~M)5XDTh4`IL=3+$<*})KKppWP2@riChdO9_n6gEnA`h_YhSMzstqnx3k zA;24kkZw`tI#dF*$+g!GIX4v){Dm|XoumpyTnO+K>F)<>OMs~)YMmkGDbEz!PFp40 z8|`dEk)6F@b$T6T;=(uNb`Q`Bgl!zt4v5Xs&%;I}AtV%M*DJS%rGQY~pc)yJvcXRq zlGm+&z6~Ibp`KQDYqYeoYk>TM6=2)r@4#a>t7RN8ooe*?$*wvCh*6j^7{ukQ=YrH; zl;)3BR8%YxX9&0;L-X=3jWF98q>O$5odK}@359Bd?f$_)kZ{d6D$(7ta!M6VZJ6dF zX5_O!61jT|AzuIwAE1*s(T=nuXc5ees85$OqG=feK>lGw2h)RMDRZCj+ZLzS`u=%Quvsj6S&te1?;Tq))Z)VV%|i>~&u3yI%lt z5Q}fzjdUH5n$5AM4?@6M`9@DP6e&lU+_kclU9Mxpwpr(*Kg=GAZnzV`>9FCPmE9W5hdt? z8W~h}Jd~Pq71@4!QNQ6B&A5QNO$A%ZX^m^7>EY1NAbEZvKnCID z3Ad1ar?xCdwd^%>Vsx_Zd(>qN)Als^R^W!h@xSIT0x%dX5+DO1e94^Hf$X6m`B;{- z0+;uLb!q=_XCl64#MqiuAqtTkJ+GPzOspDNHEWgq^qhowhGM zTUOy-2L8T>f%Ff?OyStuf*yN_%N%GH63YSFl7u&bM2@^?3X)Q-&4e5%-X-P47xB>GHy>pjjEP7L^ zuE00pw#ZRML>h+wv+LsDZaCFspT>AnhGb*A{`yfO)v(4t(quxkc7tw2i6LJYv10Mb zRAtpb`u5OqKF$_qJLDbPHUEOuv*t3Qfo#=ACC|q}K|?bNeC&ofisJ*3DU-l*OTt9& zH=U0$F*KAq?Yio=!gf(;D)D|+Vf%VP*R0krJ0B;L+b85q8s+~CS?rGM^!-3iOS-xa zOH9mVRh4FT5ji02J($LZhrY_)GgOgdUIiVA%?PbfFX>RA+&4?>BPQWB#|b^x=;hvI z{l=FuM`9U0*{L-^@LITDCKf@{N+EavCilfVn( z_uNM7AXL&R#DLQ9zOM5-`KNGFrN(|8dceF7IWrO`a$*1!k5bn3$?RDjWc5I}bgmu{ z`w>aKi__o-4+ye{o0DKO5dm7D@bX#U#v!K#vC;E6IG=lK2g^E#XuofMlS9l%eG-uX znf!6Dc<|Zrx^`2-Z>1Qe*fr3sbqR}|jQ4dGqq5nfVi9~sNyPz}omQ3=Sba*bB`H1!<1P*7-+%zTB=i}D8gtEjnwvhzB1cAlEe`URY1jxh zs!N1k9!#6@i%oLb8%%1xWE`>R4+gn(_wC|6n0CFP-u=5@?3cW(YpGno@)|I)IV3WL zo#y%-=Pq5feZ+jNkN2+=ohUkYtpc_|sQ_r`d&huw-LzkIJ_`O$ux|}~WdvU%gljlk zbsv8Ez48Sq$-xgkY8z62`zYipnm5vAi$MGJHnE%)Vu+5IM9!Qh`jy#U`~qmv0CGGG zG+j?H>Or!Fz2HuzPThM?PRqnj$_}yzNfZRu!bPC|U9!6H;Rbr1xQUT^KNWqHYPBtP zoGF&CCsM@~HV1_~_sYzXkRQXvoX2bF*>x3=Nfj~|{{%p5jjI7NfSIFS_xw?c(fD%! z3F?N0Rs0}=$){rYmypR!+Pq(EvPoTh;6-|`h9;$8Ym+@2~TnEtUCjvj_2KFXH($c>Q?8@2r?Xsdo>dPbNWWmD{lgaKxh`iBH`B;QAj0@dtl* z21v~X#UU#L=&R-_ihaE2m zM3XhVq4Q%NbnQR`Xj7X$bGuu;qj+eVbV||aBBc#O>!X8e zkiGC~EIzJLL(mCXSL+fFxct@~3)*rop%NSsga1|6d1ZT{=}VbBeew&o{d-)I(nlR% zN}p$}(@rBNY$+L}4k@{tcO7V>l?66?I8bTMA(@-Q9 z*`wkG zJKN*F-GZ%Z0ZTCOxt<_-=FwMOauH9Sr}>_NFCYV-U9P^6koTnXCx(b_v`}XIv+(<< zejLFAyj8hkZ)4UThOu85CYaB#d73xx@AX0p^-~vz1xh^g|47YQ3q|w2xJXYgFEIGd zSLT8<5s+%Fst1tc0%uuc77D_yC|ChVOAr2tRBo;X;F1M?J2gN*D4^2hvj?3$%;W}z zxu)wzNcjllqT{u$8<3Be1@EjwPLe;WWuBXj2TS%4WS(%xU7&!3G{&+LDvKD8d9d*5 zLVHv^HYajnhc**W>I=|70iDMOnv+PrEs7hfcd6&rQkkHO!tPovq>PY~PqdU=;s}DE zw*gH&zVh!ywnEW?8WXt86XwVK2|SX0S8e71cci(EuxBi!BjoOfYMIQe1f2FZ9Fr64iul&k!tekQdh5?_-EFz#h!A0b4Or zw__;7LY$s5^=z0Iu8l-7t^LVjn(61wJz^c{=}7GbYk&eD`3KEN<3{JRN!G(pLf<~? zCx`U_j2-#26=3A3jq814Xzyc93+6$z;uxJF0=YtnG49!OF)L-*^=o*3FFs$(z1Ov> zmT0QmsJ1w}c5~;qRRePV20-e|mG}o_1&f5rl#mx!r?3toLFyQ}sA3R?ycY>2wNZ-K zaULP2spS}h!CfQ=iya?4yy5nyJLlMJLyTTQN4z8TH2OY7o5;k`x;z3$0<}``@d#w; z?D~}~@iroK*CJsqYdPOL^#^QktnxPQFRoY2L@vvZRzvEr?j~2a0sVlkMwsuYeekFk zs5z=z%~+|MaPZ-d3tU!jrK=n(XS8ECQH~1# zFe1S_0Q>}}{Lp8h*thh-R*JylUi$&za%fBtX4sC{zC1iU%$-g}@A9B?(^DNQr!GWR z`pSP_*s*Q+3v2Jv^k)P2kxQ;#gTaV!y1|67_SpABAtSdjOt%tQEYjmUF<*AUEIVL{ zB$O{%N?9tbGWXu(&N_tSipCD) zgS&UmVqDbJoeoT0MQU1Nc`Zi*?z4K`;Z@}A{G_nOSkaS|HwV3~QiU>srO`x|N52_J zZ6XxAhZMW*%*NMAxGkejs<{!_LcHj&^Wu?$UK(I1wJr-W< zz&#TsV`ANs&9T~M`Ef4Sr4C7liV~NV&yYsL^8@i3A111@8!7pg^5X*8+VO(s^2>!+ zyOYL07G`)Sb-u|uyBlH1`B8L9W4N*7=ttCa%3ErpN#>;KIKkYNcoMEjaHTdB{j-LX zE5Ae(*VDln{jOrGRzhD7FJ|xg(4$YNxXYcXzw=#{`*dfK!k!^dLMi9;OWzS+ZoYYx zfbpWRdM`oz(;v=HSXYJyn`LDa7zNUu1!S@o3!gy<0TkSUvMP07tJJ&n`oFONC`(dh z2(hdlN?zFJ{N&Tm)TqdE?X#WbbTgTzo^qY8Ljt)Czr~mCcqPhVgS@MSlMe!VPafW4 z(U6X3&HaT<`TUNT=$dnUBz)I#hkZO@m~%}(y0V1q+D!F1@NdqX!i%ZmO;mlkX4*F^ zFrE96C3+ChT+tce=-eXl{J@Liu>b8J*ufI|x4aU2Iw<~UD_Bk@rl?Q~?+^`^NIo^I;m;DQ$9s#eSn?rB z1se}R>jsN2^~Y1reHPgs?|(~qsjU%4We*C;yVDhTL3K1lCrd#{;xJiR^r~zhHy#aH zd8fi!bJmmC_5i|78t&ZifuFCDEE;K4n7W&2>4i!NhK^_K$(B*~3GXV_6fvQZO^qX2 zhAx})V5-}O6v%r%h@q2Mw(M|_pi|3SU%ujvp*a+v@znaU73P_3r6Wt1GR!ODS@$~% zn5=%B89y=J*KXX2-udk?UYcE>kW0pAU#NFTZ#5qE-f8Dft7Sxe(`1zcd$bKZw}aOF za`zwT_Qe(uYzF5B#_JsDbgIm-Ym}!+K1e7Ql$r+KHvt$s-IfGCwc369@wZ~^WQx&x4J71ShE~`;0N=|Z+ zbUO*^yUoS)5i=YA3M;b`qx=fB>`)8)eW2kf7tKzw9jH0@hjUKD+ zxJ9I;C7&_;{ievmd33k{OK!C?!3)5*X4_BG$_yBBd`q1(I%CDfQY!Qh6ka3yf{1Tj zGPUhrnA_7;>i*4h-T>|S?)!+c^q)Pyhw+9hY1tBWI4K`FC6LY4+M_kWI#9E?&c5sC z5H;~hyw467c3XDX5#~+pqJ*;j*pf-yTrSMgb(|0=}6Hp&J z$jE#h-eWFDn2iue^O~SV1e`2r$EA<#06cM{LfTIPJED{-dctcU6)%Aqde3?M10GwG zyILhyy46dyUShlTeQuvyqL=(KS7H*>4HYrgAMPvW^hDj~)=m(J3hDAUeSX9bsM2_u zsRAji5lxKG*_msf&t#5nV*gCy60zDWI;)xKNx-pEv;LIkY7Z$>E$?Z`*4%L2#_K(w zWgT~8TDFhfwfYlpcNu}tDEpqztL_u8SD7b&B(v$l$(;U~al356mfMdVPYh*A>Way7 zHKPp@ZoB)A*~bZ|@ySUS$`12f^yCg|O}Y~52$pbQRcOE=ch->8t^JKj{RTXQ-}HH7 z$}_kuKn6!83)nH4=R%7VO8!)ND{QM0OcBEEJg}n0#iN3ktlIrg?gq zp%I_h|FU>D>=jEE)=qe`<)TyTVm%~tA1H0jobe9s?QV2A^Cx*d!~8ij4zI1@D0Y3W ztQwiyQ6jp_Q#ShrR(z;sFUTgisCH}e(9hYMUlgq#tr@FN9GG)T9d=N*VP?Y#Tq*P# zQt?dCGxtSgqKu}q<@gSIK>Q$Qt)$i1 z*3dE3YhIX%nvlx?93@o+`t1Ccw2UhFAMO*F)^}*N%g|DKz1|^Ten)lho^fxzlM<_G^)+g* z%zpl$N{O~SN97HxRfNG+V|=^Wg;e|;Jt?zt?riSUA|SSMz44z_4Hawb)K6nml{pduyUG6u&mKa5s(!{W6?+?584kU4=JiU{7pUBa3+wG~VB!0xD=1>sjSd&l{u zvF^9yh306!PK-wyZ^zDUCpE03)fW2OnExD5MrSd=88x!NY;jcSs`UdwYkT(3oYg|zXFI<9cxIV*Y6`AYCrAyBt?lI8fZa*gR){r>*mK zzHY;#gtInCCgJg5#{0;MN2(Jz2`c2@Smyx4ZWE7LmwVE-M{FA)t#3AD&$E1HXxmE1j+MDbYMGZ~spRn9PXfYUP~Zw`ctxq!v}gVKaNO8ndT1eYDsFU9B}-PS zhf#NWOM4qDLB)i(4W{QC%Yt^!e7d|-Pq%+~!I&Cc@B zg+dwWeSd;g-3D(fX4f{pM^Ynbq9F1D* z!Z4A@VrDn%oZIV?il3{PhBxd|iCsGoXkW%wrkf{QC=lJ^xp-FOk)o+vkz02oK90$Z z*L!JcE~I;ba*pzS&#S|v%$)bUIez>IH|RU}ka5JfvUJbA{9oVvt#l8w8WvJK3Ms!K z{;pRUQgemdj?;)@r})H=B>Vks95@$%5Zlw;mXB&>N>u4dEs#&wU9W6^RZacVJ5gJ( z6Hz{U4@4T{A1zF`OLDnoJ=Zj^SSgIX>WgKTNv+~_hlwJ_xPrB_|85Xt;5N zJ?~=~DQ`#r{2pIT^$}a(ulbliz-Bc4>lLTcu9?nemO#HunpZA-xFu=rznndn8Gn^B znR&8PW=d)ZGlWVv+jK3@=vaD%?L~KE-U+0JfreI_MeLMHYCe8~oa8U)zwbDJ^b8B8 zDQ-Yg?MS8woak!>RJB2=;pAXG(H8gg$@IgUHrW|l2n(cOn_s^5esb(3A8`GW9FJC* zju#Y3uP*{&sc}1k2Y%wxO-A6;wG}T|^%hl6eNVxBZg64LxMJratB9U-D+8f%U$euu z(p84!CU^fGDpo2>*;LB%FRc2`~V*{AQg}!@JRs&(^{U6^N758 zJ=UO-H|zA9{>eAwzTwC`$eI_~_wlm6Uz$M*O=w+#@qqE46;;~H*&aF=J3mfn8Ee!1 z1_4?5kz_nHSMtzd8QM6%>g+5bn2psNov^}Kxlw{{f-TrOlWV2_tBS{V>XDO&*$%3G|XcH0n zG;`V*vharvr9;IABFE}M4s>o%U9s>IA>w7IH#1o^5QufX(s+l+z{H~T0_TFuT&zs9=aoX^l9k*c0S?Ff-9l<_op!ybW zEH)SGsMj>KEp~{#x$66biAGbf(S>yjcUbxzXCrf{q~ zxD)6NquD&Vzj2N9RZ*G#i7p1LCv#hBf*x)0#f%vr2O~jQK=K45$m9NE;J?TXF3}#p zv!oTw_xO_**G6zr2FI#lizx}9#(!ZBorcI`C{DIc9G&e*CW*S`zaGn zmg5tEJ$8Hh(1L%$=+(wdqjw2yQl+TPD+EY zIL0udvfDlY)nN=nrL67We%=4H@8Q2b*niIZ@n7%dzuwD##Si2b{IBsHK+!#8t@(=~ z*jp@xnnn0(Hm~!BXJNiS>+~06G0ot=jotojc|}D<7tqXxGR+;#fbLiMrQgZ{ahj-c z+MI^L&tdQ=acXoh|@9ONVhK9z4NZEnKxU{m8=()e~*UuZHwBZX$hTKwp z@-ngAX9kia^1Yf0s1R-H|EeeR|GY@}IX*C;_9eQ1baWI5ZqAV~q1A!G#s%uPFwjFr zH9k_1jT3T!?xq2vk&)`bDTTq?~I@cg!xuGN;OSZ)|gcwkqxvj{f^I`Ju~a-D0N!`7LD3P|8b=z z%2*+8psO~15Gzl9_FSstLv8Kx)?A0$ifH5WZ|{;8Wkkr=a@kG5z@Eh{!eCU=HFJs` zdLkGfW;;jccgH=VxK>dlP~TCPU}9j-5yPle_rks+*QU*=K5q}`Y%-1|7LT8fygb!O zdw`UY1v~Ts3BYHZiPURNirr#g7;&QOD`=lNNzKV{eb?uzRcWJpR%9~*13~oyEoYc! z5=*D5w888uGs6KIY#_5{Zy|M~bl2j^h06u$=j5hDsU*xtFDwE|8%#mn;y)_K6X zWeN!}DxI_68q@jFb3SKIB%d)!`ksE$Jc`mf&t~L+NZx##a#U{R;kE3;N|-fg4()!d zw$Qt|;4Yn?;8#DLjZ9jsWd;mfSwIuu%IM_HY{iDgyD({|(FpjBWKNG_3Wv*~R4M9-Fa zw!79d{N2i%bkOUYY@1d)E-e?>Igl`|y)5^1sOiycC|4U9RcZ|*D{8Q!%S4aLmON8v zzK;`Gj_xp_kU{>y)ehw}zP0S}P z*V~zXzz9UBQFHTPhiPRS4?^OUq;_nJN~2-fPWKL+-+2}mDYTl-UKEZV+vdH654#HL zqR-2$j_Z4dv*ODpqSjPORqI92Y%aP!zSwk-r5<(mxNnMm5k)46m*0|i*yx#sOsePh zra)smZ%=B}P1&fKxf8VI!;9@!1JsfASlAeXSj;(Q!B6V@kG)^NGG%2kGa zO@cY^q|PY9KI3-fwg?pmUa@$dB9r;(GGI)yifGc|DYyA`>~cLu;lUI~!QXrLv&DFk zDl_*xqHC!9<%g0_QK(4F__(tnSeuiY zGbik>Gdu(-M79!KheyglNmsHY3&hc(*o z+QpN(?Vl_1_Mv97YE$0rlxjk0(5bJN zy^N3C+P?3RcA-ian8#={>g&exDuM#>{6IZ)N;qD6mMQetyS<2-oJ>{aI;TmLSIAyJ zr%V(CI^@x9V8uZcx~Q4iB)ht@0uzHVgn-raAPiQBgsUSoPqdnP+`wQ|y%b1$tMg1@ z+vnUo+}a~ba@H*GS;RxLZSTlX(#`w!QYc%s<05p}Sp5+_Ui zF-V8D?$fv9N_DC9g936p&8eghr$dkKn@OJX6JFZ@JhDQq2j07LzWu-m@Xz4yRvw=H zG!0WvIaB5^KD$*mv}d{H4;?TRGN|N2*)jTf=?p9hE2?B=n`sL|+0g)>KmKs?SWJsS z>LZF%^7R9n)1SohRJaq3K0dM1wd6cj9wgrf?dbZ#>6;TxHW}hv&2^ms`9U(Tvy#N3RS4M~Cms^{=*)k;Mnuqfs{ES|@G^=O_iq zJ$G0k;-uO~_;5z7e6pJVUF5aFCA+J#Q*-uDAGNDfcXTm0yH3L{hd|5Gj!#)1+1kS} zv-6jRqO16mbDhk;pHT?CrqlnWwj5j7jTqmdwobtx5HDYCPh&WK&iqJS?W14&FqY2Fd1D83V0K*)E5y>82VmFhzt9jNmN(~#&M{`B zVC3HOR}t`$dNGP=&vfxkRyaG5X~&lBIh7^T7oy|u$ebx0Hk&l;KD$4t)!ssEA&6sf z4|k-{0bj(W1Hqq~WMU#;%cQ;>l>%wbjQV$JCW<3q&@}*a(4Bftm=_DiyFakuUCR$n zL(DJuPK9piwc_-Yy}eR6YNBHQt@6tVZ$kmcY=7Xd6mF0(RSsk-L|)CQ*tO=MAe^bX zw`R#8B0qSMB9yA1NuY$cirLjP#}8=KG4jurldz9~adjK5ceAgi3J{Y!Ogb7P#91UU z*j%U%-5zrm;0o=4=A8>=*G|{>OcI~mICSfEo1rcD?L2EO);aq_o-eAkC(;sx0-uf? z4wl$++pS=V-jNjO#kL6tkz}U+${NQ#iEZ29V>@8BSk%uiBV=k}r?Ld4i6R-9uW;qbtvd}F5k^_|jaS@=@#@>*J*s6UHnquvti^?D8#7Xb)pi zFDR}8Wfq$^mLP-Vz(28oAb2WyLJK>6DTD#+CZ&j30?J$Roj^MtZCL#jyXxVDHW9J8 z$Ly1XGiItGxz`0Yenz*k@>JsUIl{G^UyGXyhBT-iyTlNussyZturIW~ATbw=*;6L8 zhf#xBG${9eXGez$6WV21;AljsRtBHC<{86~d=7JrO+lde*+2~sm6vbb5#*skiu-u< z*Svu&iIs+bCr7;u%9x1x&Ud&Zyyf7*xn;@UW{Oa0A}*|`vYuv9Rs%!Sk(Ul?nznO_ z@x-Y2xMYHLE^8w@cq@kzgsp~V!+HcMuc|16Y?DFl`ubb1tnPREICXe{u z26#-nbz?PJDyJHuU^+wGFvw0d&UIQOmHQErsxkg0G9hozXdc_#DR!sfEtPk>xm{w_ zbJbpH3o1GCStG;Y_UtnL)`BsUO%H3+Ndw$>*4mXdDd+fMIHJj4YX)QHVIgy7D)vFo z3kkpGmhY%Ml`q^a5^;LV9_fj5l{z(YVM10#(7^J^!VbQ&s?saD6s#uxUw zSjq^6n6gZ&5-CXCcbB(gJap*_iBKNH)A@os&KHWUv@D4oAPM z=CD>0%9~LXstgJ-zhWpzCmVgvojdM%Flev8%Cl*aGijL7_B5j^s!&C1qIB3^*hlbv z9tR`Xep+8&kJwi^E%rK(k|z5IczAN$tBI~ne94FS6D2bdZf+t9n-!jMW%ORc|1EsI z|FqvUTkUb{-Me?e0}Z&J*>UVI`>yBPghLC&!Vyxm=9GhI`gZpBdy;s{E}+Fd|2Oqk zKYK$3Dw!O#fDX`oOn`A9D98U@x`jFz`48#VTu&uR8Wdont`<7~YKu~Iz9m3s1ntB2ffm59 zEY;BDf$do47q-7W+^CW6E^30&ijTweXS!Ike5xLLG7Uj#dz^oDA%|DZ%q_Gyt3KD| zjSa+#h4FAN7x_5V<0BO)>uh@rlKe)*%my1i02*)9|In)OFKZ~UVWR$vXb|{!n`hGw zsx1HHhyUmxe`hE0I$QM0^|~blj)SJ>wyYGK$A5U%fZ3HJ;IR&%(gTbZm}9C19;snu zLMeZ`!mcA?Ml`#!n_Q6ooq9zPMLYZz@;~Je_n*n#ZE`lbXZOG?+Qb#=l@a^rZ3>ien$kMRb@8`sko&*qp#;B+($eK zff0*|fsxsRJS%K^L`{mAxFL$w$RKt6#cQ{aFN}E`-w(BT1wM0s2?zgrzrIR;t5xx{ z(^6;bvZ4t zP@g;-_3;3XpaU=!}vL@sY9fv%=+GECx^(42!txe!ynj?#u2#mh?g9q@5m~R zg>JGZk!u4gzP07$_7nKcKwdvw=4=en~P!L|s zt>ob2a}HTpC%Y3O8=?$@t%snvK%`~}y*9wd1X)&W+LaI!2tEGE*?wax3)h1UuvrAN zwOHQ+7*;iRCygBtPy(_}+lbE)G_Sfh_MPSt_q{exY)E&vaf7 ztae?868x6l*4(Yg8mf`*8Dwk>9t9ft$v2T{XM#~mX(7-{sK=RTU5@EW;}QDtlLb{< zQ27JoGg9kXgpHWb#+#&AHmCwi5c67YsZ>CJH`V(7xm#0wnLP zC}hH2RJYX*d}#Ju){p8%@|Pn8X)Y-gCTAWaJCH!^B+v{h)u=$tJ?M&iP>2Wv>l4UX z)PL;)2ju+{u(dy_BaHASUgNWaR-tYgDBntHmb$4`k@qxa4#b&GL|grrTx%01U5Fn6 z6vqYnje^3CDbydkc7S$EHK7ZK6<#7Dmrfsr%W;Yv@tw@?B0!UO^Mp{`nTiP#@^~SX zM4r^uVVDzNRX7@h_V&jMkQxH;_5eYEtp{h90giH;$?}bP0lvXz4Vd?*HS!+ zEUP0A>-6>Zo!1>xx05!?#vJGCQfI0$@qnz~Z>9c8zYjrG9q`jacj-`@HVVVONBH2qTsr?Pe!t~Oq51vo-tVPPF; zw(NjO{`2Y+2MF(yfx*E>7psH6Q`JjFQNR5SJaBF{(7_`b=U?9xYn;sWd=92C%hp}Y z%pQIb6%$(~X7rE};#9t%+9<|;nGR|D!5 zU>J&JCUO^=RHFI-INIt=<{RvJFqEs3gBv*Mxh)49+veQgYKIA3`;TX(L*e(v&rjot zkyK|?-LKD=ZgMg*cGcW8>WD3XF65zMd8rf@4i2Mw;XVCB=sQ7?5UjA-2r;$?A`eXZ zq4n^D{;jx}MY*_X_5>)P@Q#J?-MV!0RrAQj-XYph0fF&Tjh0kkmqX;30L%6HRt(0$ z>26@WH(MrNevEDQe2+W@5JUA`#ShR$8a-Anvn|m2Y*VvDJ-Z7x12zkdg&9}>dR>8M z4}b#fjouRz!GC}WGG@%%PWm#Uf4z3(Z_~UK0O^40xZ(`QPx5gPgUrhdmtpCbv98Q5 zMy>u6jNb$3m&0Ptz(#5ee@%?Dv$^Ap4Kt7*7L*wo4FxG;UYNSUQ@gln`mYDH4+||} zYoFFRM){?H>zV{b{sb>qoG+}UJN+?sz)Co_@Td9b!MpO{g6IXU|M)O)8buYueee9^ zRQ}^X-?&AY_OD|BfAG>}III8q27cFth5wKG7C*F9ui_P5CrwF-_~H`U+k4R8U)8TF z^RI{a_WpfzM$tRzrcO?4Z{LQ)-o)(%w?saM&Z}6%anbC?lY;;LKhw);NJ_q?5{;#V zxe8b#eJ-Thf~*}IYjPQLb=xZ<;v$!Airep|bYUI(x_@E;ewWU=gd8p%^XEFuc@CFa zOUvVCh6CONg|GLI@CV>wcz*=o(4%%9Uz_T9&nkmVe`rPqkSjE>?@LVWzv4VT}}jpQHnt_y7**gBpQ z9=!c>y)BK1n+47;*fMi0LHbVwn+n)1euq)ZNSB`gyA2N_3fZIQEs(7vBO}L95c&C_ ze}wvBZM=4H_=5}cr6GF`i+*IE^wvU;t@@$#H(NuAX=gv3WP_R6o1rU>1%S|la9^YGY%!i~ zeW{KrBJ79VmnY!`RheMD!wf=S(4HO)gGT+CwfSAv}$Jl{}fZhd2L>%&!ORp=dR}u^P9- zjr@~9qd>}64>?iC9X^<)ZgsfTU1+6y_CIexrPKL|4qd~is2j{QqdeqU&aRNe{gND(=N9{MA=iFTDCTSPil}JS=t9F>$2PB959tas=IQg#7BM&R zPm3_e(}Z6`yC4_GVgMH4bzTd}u0$LbEqQz3vQP-nK2(ucZ#^uA0|_FPFg8{~MQ^aQ zZhOx>`R+D-Cle%ZNHhVDEbZ;>T`J(@Wu*V9_R!gU491zVhoqyNAfH7(;f*wqPMkok z$S|lE_+JzQOjjO!u85TefK53bK><|anVFd{ zT4ay86T9u;7kgTu#R0oWA^Uo^uR~4{I~TfHF>y&`6uK{d(1 z4)7)@65@Fn`BK1X?a!Jc*=UpK70z>@xZ~jA?H^nnGU)Y%@4Icr`*&ifdIkA7q&5ZK zLuaQfUj%VHxP&C~JzwvCA%pRWz0#`Ap*a$)efz2{T_#$LX(7c_o#kC8wJ|n&!GFAp zOZLXdB(kf~cRsoui+~37bDRuuO3kqyH$#ay-fh#qDg|5gx8Ed4-C7(9#C#8*N7^0y znOgn9RMdFJ`;>@g0MJ?3B?~S;(=N~*z5D)r5`y19;j4LVCbD*eh9DDcL1S5XM;v$*%!OQWDniVEL+WKmbeH*4i&?8m8Pkii3USywU zB_Sq;=*2yy>sQyH<`D!ZNFcF6YnrKdFZvnFMz=u|+RAt>7gJ()I@3evJvycIOX{0+ zYWclhVDO7LiW{?D>w1>RZBOo|k$zJC_4 z8LMxs0n2uXp>K673cQ0yZE6dkk99G@?J@&HCZdU9x4rw=^YWpj0@6Lo1kxrZUvK_h zVBhy0E7nm6vwz*@bw}QpkH{t{y!$TR32SAliJF?tyJ|OsL}Ef4m#R6M*XON+g&zM1 zp-Y5><^%~AGJHOQr%&9n6;cI3=*vF>1s>F}L0z+*GVW0Q@?^PeOpt5@ONuQUG)PLw zN4#pAu0!A~BOMJ5WRdA12;!z9uWMw6v%!M!RdC<9M~~L)@{p$PcC9DO-*N>QZfDg) zw9HJ);=gk!_DUgvJ<#zKT#+F~za^k}LxFhTj@Y~ZJS9!%Jhz$mb&WW;cT${eQoh6yhR zp<faFG@8=!j2TZm4y)@_IE8AWXArEQ(O-U>)pTZwM z?|`ct=AW(^m;b@~qAh(hSPbP!N=siQQzDo)uxN2Qh42w_eZlj&1JQA3=GTu!4a>W$ z!lW1%j}k?xNf)pDv!Hu*ao=^!)V|T}Xve&hH8x&!Jq0j#5Ad1DkPh#zFqU`vGJd^C z5@Wsi)2EOW-#g^=kw>mnx44U{AB#Qk2OpuAjLWDTJY`#m{qtD8gSr}pw~0Ho4l;=c z2}wwF(?tWr1do0=oc7#ux>?cTH3bE&uXmbY^8FAX6Nc{x?&Onf>wIc z<=zh>-Y%{6(s+@ApMP|GL1)syHantIcI0+W;zVl|s#g+BtOlREMIzf$%_oYo1=4CZx*f7ltM?;hX@mJ?_9#7#qL zXQO}CSJFov4Wg~c_b?pHM$L;DijOiGbE5R3%o1cwU z*@LshCH#xB7jJ=$;SAR)1lYv}1Yt5qeRt>*8@(p_Oz5zqY2`z5{f5r`sAZcI`jg4G z^GFKB^FMAKt^mf3IUGc&I~8+(xL$hXKB&NfV^rZ8W_Mw}Ck^_p?LAobN~hnzA9cry z&nN8b;Vv!EY;csbq;HpVTMX%$em7hc7Za;~Z}^L^_M~Eq`yxy55>W+hY!o)xBfjT{ zXIF=WHth>e(?9*AHJ;{uO>ALRT3sfipwKFukyx!T^(&Eht+TTedPloTD2zv@Z8~ zjl2B@cTa)Xs!L;zj_jH?^=T1>;U50rWCNl08xtgIS@VhnuI zN4*zgG$n*MmjR!&g5Vu%4b>DNf}CMpE@1HRF;w)Ub|uquudjYsu`8}uZhVdoE2Z@D z#jSw~aNRMn0xOIB)*FwkP|^<$Eg<~2i%EdBwC=7z@PCRXXR1r7(J?fnQD)+5WJFou zrBthO3KOKMMOYJE68l!QXc&pN<*?J0bgBHJ-jG$90dK-xvpbiJKRkJp)a)CNRx<;3 zzbUYB9+EA8N|V40qT5O2vgM?`Wa3ikxguFqzwvS~GM71fkQ-fuj_ zb1!lq=AX^A14a5|eEzc|0IoqYDv1KOmgctxtO`AYs+FkIhxvbyyirZuh#o*pF z3SKo=!YT|~akpthu}3w4L-qtgfFV01eMnf)wtt1pJ8x7ycWYVwy!0vPQnJLes$J-k zKvg<hkhpaz)t^i%}4PIY>ie@m?eXdJHhT;eE;WGtmV~9YSQlp|0LCKbk2O91;qR& zC;n}trmt**a`RBEKe9^7=*NRIla7C*OMLn`KbsG_4R3L7bT&MF*ix2|u&lyNP29=W zEuW-M*6#?AInNRFc8BC_B}NYJ*kH6UsP%sE>H3gDUTvzt3)p>4`No>MBRRf3W@!IZT;cIG`&0b)2{p8|OXEXB zq$`7ospKcUYmJA7sfUXnn*(N;DAOKgE*60Ic*gxrQQ1wf*RX_?2MsXwX+h=0G=I>$ zZ|Uxzqd*=YVjgn$(FKtZ5mCx6AR0pbuzC#j`AlhqnaMY_c295#Vo{7XA+`LhV|gt2 zr|BXhUyFNW2-s3Kv|>GiW6`uK;h55E|HJ|mKLTswv84mLq@?5@ZgvaowSyLXg)u1q z78{obKH82|MH~PK9MJbJIGBB9A^kA?Ifxu-Sd7S=XRm|t5t2BSo|*7ynbzm7B3{ps z2NKSmLeeJeJu&h%UmIwXofMh9!+sQ z@--W4l1X#PwIgr!JK8MxY%$;tGY$dzmYcs$hOtkM1Od19 z{cypo;YTAT%(6C+^y1Ss%FQC?YVUMUG(Ky?Sf2hFqwa?muztCW=i=VC%Z&vM{)Nm; zWd%$NtN%nC)p54Z%>)?O0_U+RKGrQd0@j&s_-4QoAImJlxy=H=cb-Mw8#kVcizlos zeH}9}=1Aq5%$O9z5BKi1Q#G6Gz5?wxW za!NL~wG+1qD6-0)JmI9Kk{hn<`M3XhS{nb(&704$BByX^V)LiyGY)@wJIG~|Etoc6*%5Xz40ZQx&; zl&V|{pg`Z1IujEUcR!LB<3*CW1T6~uXQN|27=q7PL|Jn&aA5?p|EoY-&K-RG0ofV= zoDTGKngl(UMYftDyGaD!ErI`@nMt|715;3has}lu0!6swj$cD}(Fq~q&;uJ0V0VwI zH7IY64n@2md7y4O#9i$-b7cFG{>A;jPwIihZ|?>0b*r25Cl0>|J=_B-KpWwQ8S^#o zHuk*6be;ZtE}`}0ErV}KkHD`Yp=Dm;kw3Abg5=GYuL)O7M_z?E@ehO28B+jd*67)e zJ{h$|!Y~R(BXMze_3FK~e!aPk)}2&Rg6M_U!Dab2iw^%4jJEZa>jnk}Rq9N1-NhG+ zYEz|kpLD+W9prQsDo>T4qSMZnC1lF2n{SJ1mEVAdEP`ANZtDLIL^bA1cr>hJ1za3F zNx+wu9?+1$vDiBg6(5J4)MQX``vEw0i&T$>{Oh>jKBIohV4KIDh7Zpo0hDslaf?0z zix@aWv+XgKP+-GYetwN_qYjm;lmR^H)06EU2#qlGA~78TPdQ{y0RW?X|BLZd*ob@c ze~6~aY9TBxaG!Od^!ETO(O=rO-`Zep-&iKBwTc{sx-T9_A4y*buK_6Cj59*27a(8a zuQ>uy@xKSB#$1E?Z1*5~9AM&iTV-KYwv&R?*h4JiqG+I`fb9UBRxDJ{!Y5zM;IyB> zB71(^{eaQRs8o}Fwf zNSnkxx@C^8oSR`z?%oKi&;b}l&@?SABEr=#hWlp#6E3gvg+-2Q+d}Q^!ug$MvsXBJ zRq4VZRtoxK9+%O+j(%5g@5`RKs}82IJYG|Ja{EtKhfad+!hGSwXm77p6MDn!VyMQM z-r9I!=ita`uvR#s3^ z+tCc}(hXB>e@eX~PYV2x7MBJ%X%D2ZzO^xyM`}$k;{e{q*SD-$S zUt7dY$N4Og1VIP3s+(dNLjT#VSWP`OcmNih^6n-}tB0t#=Ar+_rXeJujz=<&mJ0CY^ zu-QcUo4-ryxu^bsw<+&@H+}E7{f5`VUB}qqmW3EXs~X?$IbN$J(vDt$7IjBFj`_KB z!t;bD+Zxy~v_|w_5{HTltx(sTQav~zBiRx>Z=E;w^SC6-HI=tSa+KWYy(modt7j0? zva?utE3*55@;4+e975I>9;dZuL%**FXF=VLG4T|G`l1;j2HPYzMw|yfl!moy6{Eba z>sF@oy}_~2ZB8X8o8o8U9WfRa!$_^NaHrE?>2K?`MgNgY)fW zG@aVJW8-xx3Ucx)9V2bgdbto^1^j;=zxHBL0W4>1IltW%NG6r-3X609pF|0_NKyI-nTKXzo&Uk&s98M?l5_gP3ACm61UzA`?85>RvrL z3YVN=;cgQTM^s|ffY4`rFuRj&VKxfgP%$(NbkGrgmFR!-B97>h?m0BJ6fHcdaY^3= z+4BCth|FEUBRt@X?-_MOASUmBpz|MbZTv$ zEB|sbuk$jDV1V~h#qIVV2kt{r@{k>R-u2I`%~# z4egSRl&G+(!)!6Z+a~X$ni@Wj$?DF^!N{cxehoLeAWfH&Vef~PS%YH{3g!q1|{l)d& z!L7X^@7_5ux1PLOnX8OxCG<6r9W0hBNisTkJA9*KU%lzjb?zKpC8=E z+qBAlwTzB5-%byzWo|PMQr+x*qH{ib1*hwDkX+P%E-;YP%^|=)vTLgYhI5;WfayMY z4!ow%z$FBX)HD`v)a)FCWd0h-YKfpP`e&yv{J=GbrA4X^&aLoq>2_Ewq!sW-9+b2aw)1Ixet&l6OUHN-r-%BKMv>jDvNufLQo) zf`rp5?)GDpCIQwjR!+`epN2^Y38gIc``1-{0F>rFnw>Q&%s>#*xDBe2KY#4PoJPK! zUB=*)mB7E)^(u`)H8RgYtC0Y8s zFYrf;6?GAca}Haqf%+iktGL#`WLxXl$dL8C|9yaTU~rPRy9ke!Xt#3^NKysx-S@VJ zNks-%4jNA?9E3b(VH0dVp-Pzj8SKT1FD7Jp)&xaso%dzXUK;+*PHPdu+?N|mF{+W2 zk^)3BxssV#-Q?vo#zDg}?qOhP z+-+4)7sV>?hp~O-e~XPW1NFkuwVXrmrW_|oLvnL-q5gaN@hJ`=0X}|nL$tZ~Y_G%N zQ%WLQldKD24%|9<%30h@bL>__#rlojcV(Tl0Ztpf{AOV@HyeG4aG7=W9&Xz)7)wr# zFAo-lk%%~04;6oa*FV$-snDQ>Wn|XqLR2LLE^2?Emwr(%yB`V}y(=BF4l!N&V+Qt> zEUD8!ibG)4HcdZ1jXZ;9X$xV#Tf=P{#Nn6dC4HmiojA0cNoX~S@jt>Yb)I53}n|ZHH{@Ot0DeY}os98PdzDT@V=eQtW)a?7j z>^rQuQckP2pk&$Zh;_Q|!Khb<@FShb7;USwA1h{MzQE}jKJMn%lYzxp%m!>q!Wazv zGbp3=fsX{u-+81@i!BD|cyIi)qHHL#sKF;7STOa&w}Tl9)aGUu`3m)MRxCZ-eD>a6 ziapSJ%q~JqT?p!IiELYX void | Promise; } +const NOOP = () => {}; + export default function HomeDashboard({ onNavigateToStack, notifications, onClearNotifications }: HomeDashboardProps) { const { activeNode, nodes } = useNodes(); const data = useDashboardData(); + const activeNodeName = activeNode?.name || 'Local'; return (

@@ -25,18 +28,24 @@ export default function HomeDashboard({ onNavigateToStack, notifications, onClea stats={data.stats} systemStats={data.systemStats} notifications={notifications} - activeNodeName={activeNode?.name || 'Local'} + activeNodeName={activeNodeName} + nodeCount={data.nodeCount} + lastSyncAt={data.lastSyncAt} /> {})} + stackCpuSeries={data.stackCpuSeries} + activeNodeName={activeNodeName} + onNavigateToStack={onNavigateToStack ?? NOOP} /> !n.is_read && n.level === 'error').length; const reasons: string[] = []; - - if (cpu >= 90) reasons.push(`CPU at ${cpu.toFixed(1)}%`); - else if (cpu >= 80) reasons.push(`CPU at ${cpu.toFixed(1)}%`); - - if (ram >= 90) reasons.push(`RAM at ${ram.toFixed(1)}%`); - else if (ram >= 80) reasons.push(`RAM at ${ram.toFixed(1)}%`); - - if (disk >= 90) reasons.push(`Disk at ${disk.toFixed(1)}%`); - else if (disk >= 80) reasons.push(`Disk at ${disk.toFixed(1)}%`); - - if (stats.exited > 0) reasons.push(`${stats.exited} exited container${stats.exited !== 1 ? 's' : ''}`); - if (unreadErrors > 0) reasons.push(`${unreadErrors} unread error${unreadErrors !== 1 ? 's' : ''}`); + if (cpu >= 80) reasons.push(`CPU ${cpu.toFixed(0)}%`); + if (ram >= 80) reasons.push(`RAM ${ram.toFixed(0)}%`); + if (disk >= 80) reasons.push(`Disk ${disk.toFixed(0)}%`); + if (stats.exited > 0) reasons.push(`${stats.exited} exited`); + if (unreadErrors > 0) reasons.push(`${unreadErrors} unread ${unreadErrors === 1 ? 'error' : 'errors'}`); if (cpu >= 90 || ram >= 90 || disk >= 90 || (stats.exited > 0 && unreadErrors > 0)) { return { level: 'critical', reasons }; @@ -50,72 +44,184 @@ function deriveHealth(stats: Stats, systemStats: SystemStats | null, notificatio return { level: 'healthy', reasons: ['All systems nominal'] }; } -const healthConfig: Record = { - healthy: { label: 'Healthy', dotClass: 'bg-success', textClass: 'text-success' }, - degraded: { label: 'Degraded', dotClass: 'bg-warning animate-pulse', textClass: 'text-warning' }, - critical: { label: 'Critical', dotClass: 'bg-destructive animate-pulse', textClass: 'text-destructive' }, +const healthConfig: Record = { + healthy: { + label: 'Healthy', + dotClass: 'bg-success shadow-[0_0_0_3px_color-mix(in_oklch,var(--success)_20%,transparent)]', + textClass: 'text-stat-value', + railClass: 'bg-brand', + tintClass: 'from-brand/[0.06] via-transparent to-transparent', + }, + degraded: { + label: 'Degraded', + dotClass: 'bg-warning shadow-[0_0_0_3px_color-mix(in_oklch,var(--warning)_22%,transparent)]', + textClass: 'text-warning', + railClass: 'bg-warning', + tintClass: 'from-warning/[0.06] via-transparent to-transparent', + }, + critical: { + label: 'Critical', + dotClass: 'bg-destructive shadow-[0_0_0_3px_color-mix(in_oklch,var(--destructive)_24%,transparent)]', + textClass: 'text-destructive', + railClass: 'bg-destructive', + tintClass: 'from-destructive/[0.06] via-transparent to-transparent', + }, }; -export function HealthStatusBar({ stats, systemStats, notifications, activeNodeName }: HealthStatusBarProps) { +function formatGib(bytes: number): string { + return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GiB`; +} + +function formatAgo(ms: number): string { + const clamped = Math.max(0, ms); + if (clamped < 60_000) return `${Math.round(clamped / 1000)}s`; + if (clamped < 3_600_000) return `${Math.round(clamped / 60_000)}m`; + return `${Math.round(clamped / 3_600_000)}h`; +} + +function useTicker(intervalMs: number): number { + const [now, setNow] = useState(() => Date.now()); + useEffect(() => { + const id = setInterval(() => setNow(Date.now()), intervalMs); + return () => clearInterval(id); + }, [intervalMs]); + return now; +} + +export function HealthStatusBar({ + stats, + systemStats, + notifications, + activeNodeName, + nodeCount, + lastSyncAt, +}: HealthStatusBarProps) { const { level, reasons } = useMemo( () => deriveHealth(stats, systemStats, notifications), - [stats, systemStats, notifications] + [stats, systemStats, notifications], ); const config = healthConfig[level]; + const now = useTicker(1000); const unreadAlerts = notifications.filter(n => !n.is_read).length; + const running = `${stats.active}/${stats.total}`; + const cpuLabel = systemStats ? `${parseFloat(systemStats.cpu.usage).toFixed(0)}%` : '--'; + const memLabel = systemStats ? formatGib(systemStats.memory.used) : '--'; + const lastSyncLabel = lastSyncAt ? `last sync ${formatAgo(now - lastSyncAt)}` : 'connecting…'; + const metaLine = `${activeNodeName} · ${nodeCount} ${nodeCount === 1 ? 'node' : 'nodes'} · ${lastSyncLabel}`; + const reasonsLine = reasons.join(' · '); return ( - -
- {/* Health badge */} -
-
- - -
- - {config.label} - - - -
- - -
-
- {reasons.map((reason) => ( - {reason} - ))} -
-
-
- +
+
+
+
+ {/* State column */} +
+
+ ); +} + +function StatTile({ + label, + value, + tone, + divider, +}: { + label: string; + value: string; + tone: 'value' | 'warn'; + divider?: boolean; +}) { + return ( +
+ + {label} + + + {value} + +
); } diff --git a/frontend/src/components/dashboard/HistoricalCharts.tsx b/frontend/src/components/dashboard/HistoricalCharts.tsx index 4654b950..07192d52 100644 --- a/frontend/src/components/dashboard/HistoricalCharts.tsx +++ b/frontend/src/components/dashboard/HistoricalCharts.tsx @@ -1,8 +1,7 @@ import { useMemo } from 'react'; -import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; -import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from 'recharts'; +import { Card, CardContent, CardHeader } from '@/components/ui/card'; +import { Area, AreaChart, CartesianGrid, ReferenceDot, XAxis, YAxis } from 'recharts'; import { ChartContainer, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart'; -import { Activity } from 'lucide-react'; import { Skeleton } from '@/components/ui/skeleton'; import type { MetricPoint, SystemStats } from './types'; @@ -43,25 +42,57 @@ export function HistoricalCharts({ metrics, systemStats }: HistoricalChartsProps const hasData = chartData.length > 0; + const cpuPeak = useMemo(() => { + if (chartData.length === 0) return null; + let peak = chartData[0]; + for (const row of chartData) { + if (row.cpu > peak.cpu) peak = row; + } + return peak; + }, [chartData]); + return (
- - - CPU Usage - - Normalized total CPU percentage over host cores (24h). +
+

CPU

+ + last 24h · normalized over cores + +
{hasData ? ( + + + + + + `${Number(val).toFixed(0)}%`} domain={[0, (dataMax: number) => Math.max(100, Math.ceil(dataMax / 10) * 10)]} tick={{ fill: 'var(--chart-tick)', fontSize: 11 }} /> } /> - + + {cpuPeak ? ( + + ) : null} ) : ( @@ -75,21 +106,34 @@ export function HistoricalCharts({ metrics, systemStats }: HistoricalChartsProps - - - RAM Usage - - Total RAM allocation in GB (24h). +
+

Memory

+ + last 24h · total allocation + +
{hasData ? ( + + + + + + `${Number(val).toFixed(1)} GB`} tick={{ fill: 'var(--chart-tick)', fontSize: 11 }} /> } /> - + ) : ( diff --git a/frontend/src/components/dashboard/ResourceGauges.tsx b/frontend/src/components/dashboard/ResourceGauges.tsx index 64426ec6..ce54ea2b 100644 --- a/frontend/src/components/dashboard/ResourceGauges.tsx +++ b/frontend/src/components/dashboard/ResourceGauges.tsx @@ -1,29 +1,27 @@ -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; -import { Cpu, MemoryStick, HardDrive, Container, Network } from 'lucide-react'; -import { - CursorProvider, - Cursor, - CursorContainer, - CursorFollow, -} from '@/components/animate-ui/primitives/animate/cursor'; -import type { Stats, SystemStats } from './types'; +import { useMemo } from 'react'; +import { Sparkline } from '@/components/ui/sparkline'; +import type { SystemStats } from './types'; interface ResourceGaugesProps { - stats: Stats; systemStats: SystemStats | null; + cpuHistory: number[]; + netHistory: number[]; + historyEndAt: number | null; } +const SPARK_WINDOW_MS = 10 * 60 * 1000; + const formatBytes = (bytes: number): string => { - if (bytes === 0) return '0 B'; + if (!bytes || bytes === 0) return '0 B'; const k = 1024; const sizes = ['B', 'KB', 'MB', 'GB', 'TB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); - return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i]; + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`; }; -const getValueColor = (value: number, warn = 80, crit = 90): string => { - if (value >= crit) return 'text-destructive/80'; - if (value >= warn) return 'text-warning/80'; +const getValueTone = (value: number, warn = 80, crit = 90): string => { + if (value >= crit) return 'text-destructive'; + if (value >= warn) return 'text-warning'; return 'text-stat-value'; }; @@ -34,135 +32,131 @@ const getBarColor = (value: number, warn = 80, crit = 90): string => { }; function GaugeBar({ value, warn = 80, crit = 90 }: { value: number; warn?: number; crit?: number }) { + const color = getBarColor(value, warn, crit); return ( -
+
); } -export function ResourceGauges({ stats, systemStats }: ResourceGaugesProps) { +export function ResourceGauges({ systemStats, cpuHistory, netHistory, historyEndAt }: ResourceGaugesProps) { const cpuVal = parseFloat(systemStats?.cpu.usage || '0'); const ramVal = parseFloat(systemStats?.memory.usagePercent || '0'); const diskVal = parseFloat(systemStats?.disk?.usagePercent || '0'); - return ( -
- {/* CPU */} - - - CPU - - - -
- {systemStats ? `${systemStats.cpu.usage}%` : '...'} -
-

- {systemStats ? `${systemStats.cpu.cores} cores` : '\u00A0'} -

- {systemStats && } -
-
+ const cpuPeak = cpuHistory.length > 0 ? Math.max(...cpuHistory) : 0; + const cpuPeakIndex = cpuHistory.length > 0 ? cpuHistory.indexOf(cpuPeak) : -1; + const cpuAvg = cpuHistory.length > 0 + ? cpuHistory.reduce((sum, v) => sum + v, 0) / cpuHistory.length + : 0; - {/* RAM */} - - - Memory - - - -
- {systemStats ? `${systemStats.memory.usagePercent}%` : '...'} -
-

- {systemStats ? `${formatBytes(systemStats.memory.used)} / ${formatBytes(systemStats.memory.total)}` : '\u00A0'} -

- {systemStats && } -
-
+ const cpuPeakLabel = useMemo(() => { + if (cpuPeakIndex < 0 || cpuHistory.length === 0 || historyEndAt === null) return null; + const bucketMs = SPARK_WINDOW_MS / cpuHistory.length; + const ts = historyEndAt - (cpuHistory.length - 1 - cpuPeakIndex) * bucketMs; + return new Date(ts).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); + }, [cpuPeakIndex, cpuHistory.length, historyEndAt]); + + const netHasSignal = netHistory.some((v) => v > 0); + const netTotalPerSec = (systemStats?.network?.rxSec ?? 0) + (systemStats?.network?.txSec ?? 0); + + return ( +
+ {/* CPU hero */} +
+
+ CPU{systemStats ? ` · ${systemStats.cpu.cores} cores` : ''} +
+
+ {systemStats ? `${cpuVal.toFixed(1)}%` : '--'} +
+
+ {cpuHistory.length > 0 + ? `avg ${cpuAvg.toFixed(0)}% last 10m · peak ${cpuPeak.toFixed(0)}%${cpuPeakLabel ? ` @ ${cpuPeakLabel}` : ''}` + : 'collecting metrics…'} +
+
+ = 0 ? cpuPeakIndex : undefined} + /> +
+
+ + {/* Memory */} +
+
+ MEMORY +
+
+ {systemStats ? `${ramVal.toFixed(0)}%` : '--'} +
+
+ {systemStats ? `${formatBytes(systemStats.memory.used)} / ${formatBytes(systemStats.memory.total)}` : '\u00A0'} +
+ {systemStats ? : null} +
{/* Disk */} - - - Disk - - - -
- {systemStats?.disk ? `${systemStats.disk.usagePercent}%` : '...'} -
-

- {systemStats?.disk ? `${formatBytes(systemStats.disk.used)} / ${formatBytes(systemStats.disk.total)}` : '\u00A0'} -

- {systemStats?.disk && } -
-
- - {/* Containers */} - - - Containers - - - -
- - - {stats.active} - active - - -
- - -
-
- {stats.managed}managed - | - {stats.unmanaged}external -
-
-
- -
-

- {stats.exited} exited -

- - +
+
+ DISK +
+
+ {systemStats?.disk ? `${diskVal.toFixed(0)}%` : '--'} +
+
+ {systemStats?.disk ? `${formatBytes(systemStats.disk.used)} / ${formatBytes(systemStats.disk.total)}` : '\u00A0'} +
+ {systemStats?.disk ? : null} +
{/* Network */} - - - Network - - - -
-
- RX - - {systemStats?.network ? `${formatBytes(systemStats.network.rxSec)}/s` : '...'} - -
-
- TX - - {systemStats?.network ? `${formatBytes(systemStats.network.txSec)}/s` : '...'} - -
-
-
-
+
+
+ NETWORK +
+
+ {systemStats?.network ? `${formatBytes(netTotalPerSec)}/s` : '--'} +
+
+ {systemStats?.network ? ( + <> + + {formatBytes(systemStats.network.rxSec)}/s + · + + {formatBytes(systemStats.network.txSec)}/s + + ) : ( + {'\u00A0'} + )} +
+
+ {systemStats?.network && netHasSignal ? ( + + ) : systemStats?.network ? ( + + ) : null} +
+
); } diff --git a/frontend/src/components/dashboard/StackHealthTable.tsx b/frontend/src/components/dashboard/StackHealthTable.tsx index 23b55494..a80fbeaa 100644 --- a/frontend/src/components/dashboard/StackHealthTable.tsx +++ b/frontend/src/components/dashboard/StackHealthTable.tsx @@ -1,165 +1,246 @@ -import { useMemo, useState } from 'react'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; -import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; +import { useEffect, useMemo, useState } from 'react'; import { Button } from '@/components/ui/button'; -import { ChevronRight, ChevronLeft, Layers } from 'lucide-react'; -import type { StackStatusEntry, MetricPoint } from './types'; +import { Sparkline } from '@/components/ui/sparkline'; +import { ChevronLeft, ChevronRight, Layers } from 'lucide-react'; +import type { StackStatusEntry, MetricPoint, StackCpuSeries } from './types'; interface StackHealthTableProps { stackStatuses: Record; metrics: MetricPoint[]; + stackCpuSeries: Record; + activeNodeName: string; onNavigateToStack: (stackFile: string) => void; } const PAGE_SIZE = 8; +const WARN = 80; +const CRIT = 90; +const GRID_TEMPLATE = 'grid-cols-[14px_minmax(0,1fr)_minmax(0,120px)_52px_52px_72px_110px_16px]'; const formatMemory = (mb: number): string => { if (mb >= 1024) return `${(mb / 1024).toFixed(1)} GB`; return `${mb.toFixed(0)} MB`; }; -export function StackHealthTable({ stackStatuses, metrics, onNavigateToStack }: StackHealthTableProps) { - const [page, setPage] = useState(0); +function formatUptime(seconds: number): string { + if (!Number.isFinite(seconds) || seconds <= 0) return '--'; + const days = Math.floor(seconds / 86400); + if (days > 0) return `${days}d`; + const hours = Math.floor(seconds / 3600); + if (hours > 0) return `${hours}h`; + const minutes = Math.floor(seconds / 60); + if (minutes > 0) return `${minutes}m`; + return `${Math.max(1, Math.floor(seconds))}s`; +} - const stackMetrics = useMemo(() => { +type RowState = 'healthy' | 'warn' | 'error'; + +function classifyRow(status: StackStatusEntry['status'], peakCpu: number): RowState { + if (status === 'exited') return 'error'; + if (peakCpu >= CRIT) return 'error'; + if (peakCpu >= WARN) return 'warn'; + return 'healthy'; +} + +const stateDot: Record = { + healthy: 'bg-success', + warn: 'bg-warning', + error: 'bg-destructive', +}; + +const rowTint: Record = { + healthy: '', + warn: 'bg-warning/[0.04]', + error: 'bg-destructive/[0.04]', +}; + +const sparkStroke: Record = { + healthy: 'var(--chart-1)', + warn: 'var(--warning)', + error: 'var(--destructive)', +}; + +export function StackHealthTable({ + stackStatuses, + metrics, + stackCpuSeries, + activeNodeName, + onNavigateToStack, +}: StackHealthTableProps) { + const [page, setPage] = useState(0); + // Live-tick the current second so uptime labels advance without a parent + // refetch. Thirty-second cadence keeps the DOM calm while still refreshing + // every "Nm" bucket change. + const [now, setNow] = useState(() => Date.now()); + useEffect(() => { + const id = setInterval(() => setNow(Date.now()), 30000); + return () => clearInterval(id); + }, []); + + const stackAggregates = useMemo(() => { const latestPerContainer: Record> = {}; for (const m of metrics) { if (!m.stack_name) continue; - const stack = m.stack_name; - if (!latestPerContainer[stack]) latestPerContainer[stack] = {}; - const existing = latestPerContainer[stack][m.container_id]; + if (!latestPerContainer[m.stack_name]) latestPerContainer[m.stack_name] = {}; + const existing = latestPerContainer[m.stack_name][m.container_id]; if (!existing || m.timestamp > existing.timestamp) { - latestPerContainer[stack][m.container_id] = m; + latestPerContainer[m.stack_name][m.container_id] = m; } } - - const result: Record = {}; + const result: Record = {}; for (const [stack, containers] of Object.entries(latestPerContainer)) { let mem = 0; + let cpu = 0; for (const m of Object.values(containers)) { mem += m.memory_mb; + cpu += m.cpu_percent; } - result[stack] = { mem }; + result[stack] = { mem, cpu }; } return result; }, [metrics]); const rows = useMemo(() => { - return Object.entries(stackStatuses) - .map(([file, entry]) => { - const name = file.replace(/\.(yml|yaml)$/, ''); - const m = stackMetrics[name]; - return { - file, - name, - status: entry.status, - memory: m?.mem ?? null, - }; - }) - .sort((a, b) => { - const statusOrder = { running: 0, exited: 1, unknown: 2 }; - const diff = statusOrder[a.status] - statusOrder[b.status]; - if (diff !== 0) return diff; - return a.name.localeCompare(b.name); - }); - }, [stackStatuses, stackMetrics]); + const list = Object.entries(stackStatuses).map(([file, entry]) => { + const name = file.replace(/\.(yml|yaml)$/, ''); + const agg = stackAggregates[name]; + const series = stackCpuSeries[name]; + const peakCpu = series?.peakValue ?? agg?.cpu ?? 0; + const state = classifyRow(entry.status, peakCpu); + return { + file, + name, + status: entry.status, + memory: agg?.mem ?? null, + cpu: agg?.cpu ?? null, + peakCpu, + series: series?.points ?? [], + peakIndex: series?.peakIndex ?? -1, + state, + runningSince: entry.runningSince ?? null, + }; + }); + const stateOrder: Record = { error: 0, warn: 1, healthy: 2 }; + list.sort((a, b) => { + const diff = stateOrder[a.state] - stateOrder[b.state]; + if (diff !== 0) return diff; + return b.peakCpu - a.peakCpu; + }); + return list; + }, [stackStatuses, stackAggregates, stackCpuSeries]); const totalPages = Math.max(1, Math.ceil(rows.length / PAGE_SIZE)); - // Clamp page to valid range (handles node switch reducing the stack count) const safePage = Math.min(page, totalPages - 1); const pagedRows = rows.slice(safePage * PAGE_SIZE, (safePage + 1) * PAGE_SIZE); const needsPagination = rows.length > PAGE_SIZE; - const statusDisplay: Record = { - running: { label: 'UP', className: 'text-success' }, - exited: { label: 'DN', className: 'text-destructive' }, - unknown: { label: '--', className: 'text-stat-icon' }, - }; + const stackCount = Object.keys(stackStatuses).length; - if (Object.keys(stackStatuses).length === 0) { + if (stackCount === 0) { return ( - - -
- -

No stacks found. Create one from the sidebar.

-
-
-
+
+
+ +

No stacks found. Create one from the sidebar.

+
+
); } return ( - - -
- Stack Health - {needsPagination && ( -
- - - {safePage + 1} / {totalPages} - - -
- )} +
+
+
+

+ Stack health +

+ + {stackCount} {stackCount === 1 ? 'stack' : 'stacks'} · sorted by load +
- - - - - - Stack - Status - Memory - - - - - {pagedRows.map(row => { - const sd = statusDisplay[row.status] || statusDisplay.unknown; - return ( - onNavigateToStack(row.file)} - > - - {row.name} - - - {sd.label} - - - - {row.memory !== null ? formatMemory(row.memory) : '--'} - - - - - - - ); - })} - -
-
- + {needsPagination ? ( +
+ + + {safePage + 1} / {totalPages} + + +
+ ) : null} +
+
+ + STACK + HOST + UP + CPU + MEM + CPU · 10m + +
+
    + {pagedRows.map((row) => ( +
  • onNavigateToStack(row.file)} + onKeyDown={(e) => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + onNavigateToStack(row.file); + } + }} + className={`grid ${GRID_TEMPLATE} cursor-pointer items-center gap-4 px-5 py-3 transition-colors hover:bg-accent/5 ${rowTint[row.state]}`} + > +
  • + ))} +
+
); } diff --git a/frontend/src/components/dashboard/types.ts b/frontend/src/components/dashboard/types.ts index 4477e355..273ae35d 100644 --- a/frontend/src/components/dashboard/types.ts +++ b/frontend/src/components/dashboard/types.ts @@ -56,13 +56,30 @@ export interface NotificationItem { export interface StackStatusEntry { status: 'running' | 'exited' | 'unknown'; mainPort?: number; + /** Unix seconds of the oldest running container (approximates stack uptime). */ + runningSince?: number; } export type HealthLevel = 'healthy' | 'degraded' | 'critical'; +export interface StackCpuSeries { + stackName: string; + points: number[]; + peakValue: number; + peakIndex: number; + latestValue: number; +} + export interface DashboardData { stats: Stats; systemStats: SystemStats | null; metrics: MetricPoint[]; stackStatuses: Record; + lastSyncAt: number | null; + nodeCount: number; + stackCpuSeries: Record; + cpuHistory: number[]; + netHistory: number[]; + /** Anchor timestamp (ms) for the sparkline 10-minute window — the newest metric sample. */ + historyEndAt: number | null; } diff --git a/frontend/src/components/dashboard/useDashboardData.ts b/frontend/src/components/dashboard/useDashboardData.ts index 8bc5bf00..a76e6c90 100644 --- a/frontend/src/components/dashboard/useDashboardData.ts +++ b/frontend/src/components/dashboard/useDashboardData.ts @@ -1,9 +1,18 @@ -import { useState, useEffect, useCallback, useRef } from 'react'; +import { useState, useEffect, useCallback, useMemo, useRef } from 'react'; import { useNodes } from '@/context/NodeContext'; import { apiFetch } from '@/lib/api'; -import type { Stats, SystemStats, MetricPoint, StackStatusEntry, DashboardData } from './types'; +import type { + Stats, + SystemStats, + MetricPoint, + StackStatusEntry, + DashboardData, + StackCpuSeries, +} from './types'; const DEFAULT_STATS: Stats = { active: 0, managed: 0, unmanaged: 0, exited: 0, total: 0 }; +const SPARK_BUCKETS = 20; +const SPARK_WINDOW_MS = 10 * 60 * 1000; /** * Start a polling interval that pauses when the tab is hidden. @@ -42,14 +51,41 @@ function visibilityInterval(fn: () => void, ms: number): () => void { }; } +function bucketCpu(points: MetricPoint[], windowMs: number, buckets: number): number[] { + if (points.length === 0) return Array(buckets).fill(0); + const now = Date.now(); + const start = now - windowMs; + const bucketMs = windowMs / buckets; + const out = Array(buckets).fill(0); + const counts = Array(buckets).fill(0); + for (const p of points) { + if (p.timestamp < start) continue; + const idx = Math.min(buckets - 1, Math.max(0, Math.floor((p.timestamp - start) / bucketMs))); + out[idx] += p.cpu_percent; + counts[idx] += 1; + } + for (let i = 0; i < buckets; i += 1) { + if (counts[i] > 0) out[i] = out[i] / counts[i]; + } + // Forward-fill empty buckets from the previous non-empty one so the line + // reads as a continuous trend rather than a sawtooth of zeros. + let last = 0; + for (let i = 0; i < buckets; i += 1) { + if (counts[i] === 0) out[i] = last; + else last = out[i]; + } + return out; +} + export function useDashboardData(): DashboardData { - const { activeNode } = useNodes(); + const { activeNode, nodes } = useNodes(); const nodeId = activeNode?.id; const [stats, setStats] = useState(DEFAULT_STATS); const [systemStats, setSystemStats] = useState(null); const [metrics, setMetrics] = useState([]); const [stackStatuses, setStackStatuses] = useState>({}); + const [lastSyncAt, setLastSyncAt] = useState(null); // Keep a ref to the latest nodeId so async callbacks don't write stale data // after a node switch has already triggered a new effect cycle. @@ -69,12 +105,14 @@ export function useDashboardData(): DashboardData { // Container stats: 5s polling, resets on node change useEffect(() => { setStats(DEFAULT_STATS); // eslint-disable-line react-hooks/set-state-in-effect + setLastSyncAt(null); const currentNodeId = nodeId; const fetchStats = async () => { if (nodeIdRef.current !== currentNodeId) return; // Stale effect const data = await fetchJson('/stats'); if (data && nodeIdRef.current === currentNodeId) { setStats(data); + setLastSyncAt(Date.now()); } }; fetchStats(); @@ -126,5 +164,123 @@ export function useDashboardData(): DashboardData { return cleanup; }, [nodeId, fetchJson]); - return { stats, systemStats, metrics, stackStatuses }; + const stackCpuSeries = useMemo>(() => { + if (metrics.length === 0) return {}; + const grouped = new Map(); + for (const point of metrics) { + if (!point.stack_name) continue; + const bucket = grouped.get(point.stack_name) ?? []; + bucket.push(point); + grouped.set(point.stack_name, bucket); + } + const out: Record = {}; + for (const [stackName, rows] of grouped) { + const points = bucketCpu(rows, SPARK_WINDOW_MS, SPARK_BUCKETS); + let peakValue = -Infinity; + let peakIndex = 0; + for (let i = 0; i < points.length; i += 1) { + if (points[i] > peakValue) { + peakValue = points[i]; + peakIndex = i; + } + } + out[stackName] = { + stackName, + points, + peakValue: peakValue === -Infinity ? 0 : peakValue, + peakIndex, + latestValue: points[points.length - 1] ?? 0, + }; + } + return out; + }, [metrics]); + + const cores = systemStats?.cpu.cores || 1; + + // Anchor the 10-minute sparkline window to the newest metric sample so the + // bucketing memos stay pure (calling Date.now() inside useMemo would violate + // react-hooks/purity and could yield inconsistent bucket boundaries across + // re-renders). + const historyEndAt = useMemo(() => { + if (metrics.length === 0) return null; + let max = metrics[0].timestamp; + for (let i = 1; i < metrics.length; i += 1) { + if (metrics[i].timestamp > max) max = metrics[i].timestamp; + } + return max; + }, [metrics]); + + // Aggregate host-level CPU normalized over cores, so the sparkline matches + // the gauge percentage rather than summing raw container usage. + const cpuHistory = useMemo(() => { + if (metrics.length === 0 || historyEndAt === null) return Array(SPARK_BUCKETS).fill(0); + const start = historyEndAt - SPARK_WINDOW_MS; + const bucketMs = SPARK_WINDOW_MS / SPARK_BUCKETS; + // Per-bucket sum across all containers, tracking how many distinct + // timestamps contributed so we can average per bucket. + const bucketSum = Array(SPARK_BUCKETS).fill(0); + const bucketTimestamps = Array.from({ length: SPARK_BUCKETS }, () => new Set()); + for (const p of metrics) { + if (p.timestamp < start) continue; + const idx = Math.min(SPARK_BUCKETS - 1, Math.max(0, Math.floor((p.timestamp - start) / bucketMs))); + bucketSum[idx] += p.cpu_percent / cores; + bucketTimestamps[idx].add(p.timestamp); + } + const out = Array(SPARK_BUCKETS).fill(0); + let last = 0; + for (let i = 0; i < SPARK_BUCKETS; i += 1) { + const tsCount = bucketTimestamps[i].size; + if (tsCount > 0) { + out[i] = bucketSum[i] / tsCount; + last = out[i]; + } else { + out[i] = last; + } + } + return out; + }, [metrics, cores, historyEndAt]); + + // Network throughput over time: compute per-container deltas between + // consecutive samples, assign each delta to the bucket of the later sample, + // and sum across containers. This is robust to container churn because each + // delta is paired within a single container's lifeline. Negative deltas + // (counter reset after a restart) clamp to zero. + const netHistory = useMemo(() => { + if (metrics.length === 0 || historyEndAt === null) return Array(SPARK_BUCKETS).fill(0); + const start = historyEndAt - SPARK_WINDOW_MS; + const bucketMs = SPARK_WINDOW_MS / SPARK_BUCKETS; + const byContainer = new Map(); + for (const p of metrics) { + const bucket = byContainer.get(p.container_id) ?? []; + bucket.push(p); + byContainer.set(p.container_id, bucket); + } + const out = Array(SPARK_BUCKETS).fill(0); + for (const samples of byContainer.values()) { + samples.sort((a, b) => a.timestamp - b.timestamp); + for (let i = 1; i < samples.length; i += 1) { + const curr = samples[i]; + if (curr.timestamp < start) continue; + const prev = samples[i - 1]; + const delta = (curr.net_rx_mb + curr.net_tx_mb) - (prev.net_rx_mb + prev.net_tx_mb); + if (delta <= 0) continue; + const idx = Math.min(SPARK_BUCKETS - 1, Math.max(0, Math.floor((curr.timestamp - start) / bucketMs))); + out[idx] += delta; + } + } + return out; + }, [metrics, historyEndAt]); + + return { + stats, + systemStats, + metrics, + stackStatuses, + lastSyncAt, + nodeCount: nodes.length, + stackCpuSeries, + cpuHistory, + netHistory, + historyEndAt, + }; } diff --git a/frontend/src/components/ui/sparkline.tsx b/frontend/src/components/ui/sparkline.tsx new file mode 100644 index 00000000..55c2c482 --- /dev/null +++ b/frontend/src/components/ui/sparkline.tsx @@ -0,0 +1,124 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +type SvgSvgAttrs = Omit, "points" | "strokeWidth"> + +export interface SparklineProps extends SvgSvgAttrs { + points: number[] + stroke?: string + fill?: string + peakIndex?: number + peakColor?: string + showPeak?: boolean + strokeWidth?: number + min?: number + max?: number + width?: number + height?: number +} + +const VIEW_W = 100 +const VIEW_H = 28 +const PEAK_R = 0.9 + +export const Sparkline = React.forwardRef( + ( + { + points, + stroke = "var(--chart-1)", + fill = "var(--chart-1)", + peakIndex, + peakColor = "var(--data-peak)", + showPeak = true, + strokeWidth, + min, + max, + width, + height, + className, + ...rest + }, + ref, + ) => { + const id = React.useId() + + if (!points || points.length < 2) { + return ( + + ) + } + + const lo = min ?? Math.min(...points) + const hi = max ?? Math.max(...points) + const range = hi - lo || 1 + + const coords = points.map((v, i) => { + const x = (i / (points.length - 1)) * VIEW_W + const y = VIEW_H - ((v - lo) / range) * VIEW_H + return [x, y] as const + }) + + const line = coords.map(([x, y], i) => `${i === 0 ? "M" : "L"}${x.toFixed(2)},${y.toFixed(2)}`).join(" ") + const area = `${line} L${VIEW_W.toFixed(2)},${VIEW_H} L0,${VIEW_H} Z` + + const resolvedPeakIndex = + typeof peakIndex === "number" + ? peakIndex + : points.indexOf(Math.max(...points)) + + const peak = showPeak && resolvedPeakIndex >= 0 ? coords[resolvedPeakIndex] : null + + return ( + + ) + }, +) + +Sparkline.displayName = "Sparkline"