From fe20952e7b7a8f6acde4bf1791eecda53b342372 Mon Sep 17 00:00:00 2001
From: hamster1963 <1410514192@qq.com>
Date: Thu, 17 Oct 2024 23:45:18 +0800
Subject: [PATCH 01/11] feat: add detail page
---
.../(main)/ClientComponents/NetworkChart.tsx | 74 ++++++++++--------
app/[locale]/(main)/detail/[id]/page.tsx | 7 ++
bun.lockb | Bin 445857 -> 445857 bytes
components/ServerCard.tsx | 52 ++++++------
4 files changed, 76 insertions(+), 57 deletions(-)
create mode 100644 app/[locale]/(main)/detail/[id]/page.tsx
diff --git a/app/[locale]/(main)/ClientComponents/NetworkChart.tsx b/app/[locale]/(main)/ClientComponents/NetworkChart.tsx
index ec9a91d..d0b0c2b 100644
--- a/app/[locale]/(main)/ClientComponents/NetworkChart.tsx
+++ b/app/[locale]/(main)/ClientComponents/NetworkChart.tsx
@@ -28,9 +28,9 @@ import { useLocale } from "next-intl";
import { useTranslations } from "next-intl";
import { useRouter } from "next/navigation";
import * as React from "react";
+import { useCallback, useMemo } from "react";
import { CartesianGrid, Line, LineChart, XAxis, YAxis } from "recharts";
import useSWR from "swr";
-import { useMemo, useCallback } from 'react';
interface ResultItem {
created_at: number;
@@ -64,7 +64,6 @@ export function NetworkChartClient({ server_id }: { server_id: number }) {
if (!data) return
- {name} -
- -+ {name} +
+ ++ ID +
++ Tag +
+- ID -
-- Tag -
-{error.message}
++ {/* {t("chart_fetch_error_message")} */} + fetch_error_message +
Status
+Uptime
+Tag
+Arch
+Version
+System
+ {data?.host.Platform ? ( +CPU
+ {data?.host.CPU ? ( +CPU
++ {data?.status.CPU.toFixed(0)}% +
+Mem
++ {((data?.status.MemUsed / data?.host.MemTotal) * 100).toFixed( + 0, + )} + % +
+Swap
++ {data?.status.SwapUsed + ? ( + (data?.status.SwapUsed / data?.host.SwapTotal) * + 100 + ).toFixed(0) + : 0} + % +
+Disk
++ {((data?.status.DiskUsed / data?.host.DiskTotal) * 100).toFixed( + 0, + )} + % +
+{error.message}
++ {/* {t("chart_fetch_error_message")} */} + fetch_error_message +
++ CPU +
++ {data?.status.CPU.toFixed(0)}% +
+{error.message}
-- {/* {t("chart_fetch_error_message")} */} - fetch_error_message -
-Status
-Uptime
-Tag
-Arch
-Version
-System
- {data?.host.Platform ? ( -{error.message}
++ {/* {t("chart_fetch_error_message")} */} + fetch_error_message +
Status
+Uptime
+Arch
+Version
+CPU
- {data?.host.CPU ? ( -System
+ {data?.host.Platform ? ( +CPU
+ {data?.host.CPU ? ( +CPU
-- {data?.status.CPU.toFixed(0)}% -
-Mem
-- {((data?.status.MemUsed / data?.host.MemTotal) * 100).toFixed( - 0, - )} - % -
-Swap
-- {data?.status.SwapUsed - ? ( - (data?.status.SwapUsed / data?.host.SwapTotal) * - 100 - ).toFixed(0) - : 0} - % -
-Disk
-- {((data?.status.DiskUsed / data?.host.DiskTotal) * 100).toFixed( - 0, - )} - % -
-CPU
++ {data?.status.CPU.toFixed(0)}% +
+Mem
++ {((data?.status.MemUsed / data?.host.MemTotal) * 100).toFixed( + 0, + )} + % +
+Swap
++ {data?.status.SwapUsed + ? ( + (data?.status.SwapUsed / data?.host.SwapTotal) * + 100 + ).toFixed(0) + : 0} + % +
+Disk
++ {((data?.status.DiskUsed / data?.host.DiskTotal) * 100).toFixed( + 0, + )} + % +
+
- CPU
+
+ CPU
+
+ {cpu.toFixed(0)}%
- {data?.status.CPU.toFixed(0)}%
-
Mem
++ {mem.toFixed(0)}% +
+Swap
++ {swap.toFixed(0)}% +
+Upload
++ {up.toFixed(2)} M/s +
+Download
++ {down.toFixed(2)} M/s +
+Status
+Status
Uptime
-Uptime
+Arch
-Version
-Version
+Arch
+Mem
+Disk
+System
+System
{data?.host.Platform ? ( -CPU
+CPU
{data?.host.CPU ? ( -CPU
-- {data?.status.CPU.toFixed(0)}% -
-Mem
-- {((data?.status.MemUsed / data?.host.MemTotal) * 100).toFixed( - 0, - )} - % -
-Swap
-- {data?.status.SwapUsed - ? ( - (data?.status.SwapUsed / data?.host.SwapTotal) * - 100 - ).toFixed(0) - : 0} - % -
-Disk
-- {((data?.status.DiskUsed / data?.host.DiskTotal) * 100).toFixed( - 0, - )} - % -
-{error.message}
-- {/* {t("chart_fetch_error_message")} */} - fetch_error_message -
-{error.message}
++ {/* {t("chart_fetch_error_message")} */} + fetch_error_message +
+- CPU -
-- {cpu.toFixed(0)}% -
-CPU
++ {cpu.toFixed(0)}% +
+Process
+{process}
+Mem
-- {mem.toFixed(0)}% -
-Swap
-- {swap.toFixed(0)}% -
-Mem
+{mem.toFixed(0)}%
+Swap
+{swap.toFixed(0)}%
+Disk
++ {disk.toFixed(0)}% +
+Upload
-- {up.toFixed(2)} M/s -
-Download
-- {down.toFixed(2)} M/s -
-Upload
+{up.toFixed(2)} M/s
+Download
+{down.toFixed(2)} M/s
+TCP
+{tcp}
+UDP
+{udp}
+{error.message}
-- {/* {t("chart_fetch_error_message")} */} - fetch_error_message -
-Status
-Uptime
-Version
-Arch
-Mem
-Disk
-System
- {data?.host.Platform ? ( -CPU
- {data?.host.CPU ? ( -{error.message}
++ {/* {t("chart_fetch_error_message")} */} + fetch_error_message +
Status
+Uptime
+Version
+Arch
+Mem
+Disk
+System
+ {data?.host.Platform ? ( +CPU
+ {data?.host.CPU ? ( +- {name} -
-+ {name} +
+ +{error.message}
- {/* {t("chart_fetch_error_message")} */} - fetch_error_message + {t("chart_fetch_error_message")}
Process
+{t("Process")}
{process}
Mem
+{t("Mem")}
Swap
+{t("Swap")}
Disk
+{t("Disk")}
{disk.toFixed(0)}% @@ -478,6 +476,8 @@ function DiskChart({ data }: { data: NezhaAPISafe }) { } function NetworkChart({ data }: { data: NezhaAPISafe }) { + const t = useTranslations("ServerDetailChartClient"); + const [networkChartData, setNetworkChartData] = useState( [] as networkChartData[], ); @@ -520,14 +520,16 @@ function NetworkChart({ data }: { data: NezhaAPISafe }) {
Upload
+{t("Upload")}
{up.toFixed(2)} M/s
Download
++ {t("Download")} +
{down.toFixed(2)} M/s
@@ -624,7 +626,7 @@ function ConnectChart({ data }: { data: NezhaAPISafe }) { } satisfies ChartConfig; return ( -{error.message}
- {/* {t("chart_fetch_error_message")} */} - fetch_error_message + {t("detail_fetch_error_message")}
Status
+{t("status")}
Uptime
+{t("Uptime")}
Version
+{t("Version")}
Arch
+{t("Arch")}
Mem
+{t("Mem")}
Disk
+{t("Disk")}
System
+{t("System")}
{data?.host.Platform ? (CPU
+{t("CPU")}
{data?.host.CPU ? (- {formatBytes(data?.total_bandwidth)} -
++ ↑{formatBytes(data?.total_out_bandwidth)} +
++ ↓{formatBytes(data?.total_in_bandwidth)} +
+ol;+>^UQd0sDtGn$HIhW`wl_=Gn}JGWR0DGUHz ziF`wexa>JuAAA`xQHM`6<}+x2Q>)m|XR<%d1j*jZ*`(>N+Ac6!t&g!@tE6G;OuKwO zCbYxFcBp@|OW3$i7^|&J;?jxMr|7aBQn|~AQsbCPf6Tn#C5O*I^=IUPqx{`)j`a-b zFOJ<*gC4n7!Iz<4eEy1oP^0tkI(!N$i^TBlUs5t{QkW^1=EH^0$sO@G-BIxV%z*6G z^KCkdl9(x{Ym`4e+r%R7eDss9FW2C6jw<%MK*xYQg_N1? za7nR1yJ&;w_Cm~dLGR%Dd`5CfynXdxx@xjrzp-D{a?Q!H5ED;i*RXvJqZKl(+_lO$ zQNpdHO?a3`6fJZ1PtkkwKv)~vp0UBHA(43QWknpL`-WU;hmTLuTCQyu90}Ws0cw!$ zlH3|5-O&$cH^!9p>m!b HhohG|cdefo?%rei20=f`Vm zT$YD~ma7yo_CrOMuKk8?gBi)b^xAIoKfZ=btcY5VSNk}N7!*9b&G{gEB1es5 ;7l;AO{ z6s-)j9V#MGcD7pYNr0W&7_ySIQ&DzIshJYI<>bMqDb;$WcDejhT73o)k!ESnC%T(e zCJVuCZCWh7Q;X3xJ1 K9KEm`w?LwqD>=|_6vhER&nQ7YoiV;-}K0ZT9CI+nJ&RX-yMh=w?lz11m89uWSv ztKM^fM0eQ|rN!L=1fK?_75SW<&n$yWGuuCpnvB{)uhGIUIYV4~Skhi5d1uonb#n@P zq)VZ~nV(`_<0>P(FPhl+IkT#2Xej%!TtV8(XvJ`sBD1aE$>DgeVTJ4DqKBg`Wb|bm z5syI$Pxf$DOSPW4uDk>py c%fP~m@}#CQJL+d>(b>#w@G%?`AG? zJzg!}`E>;B8sHxecz0mE7yE;AK(0s~d>RwYiJf|n^6y#~RFjG@;bF8rF%hb;n|q&j zlwHV;XAjNAzja`oxJoB$V%!98Z*Fbt&+aZP-ZhtYTY1n;3>{1tbDD|1U#HbZsUp2U zg~LG2Gabpy0cSKaRNCIAe%ob5Abx#GI8C PTwrWI_YZX1 yf zZJt#&%2;M%Su1PLnDX#c4$9xCIRSC*F!P14v!V02oKf|!aEYbllcOh`17iT9l{An` z1hry^$B!TL)f_o;=4ZY2e-m<}a=Xu CanUO9hQ`7033~`|L}H zQ&FlRuP;=}-*vg<-m9fE_}0MgV#$+D87}{E-^1mdxzvadInN#)`3p&IV;(7;d3+~A z?=|n7O!N6&6c_1fA_0*mkL;2t|CUn9=E81qzmfHjYxC82LB3}tpHWuvx;zuL8Q_n< zY5v0S=~tTc6dox&l$Y0XasLw7h$I{q?rsIj95P1n9u?6^!tN$&tC ORSvUGH9|CbRV;b7T}q9a z4tZsCLt4*vv8j!ozHx`H# aUJf$ulMU?C5dYWPkQ^;YZ6kE7OIz_>%3S)A)`TDsLt$rQWs(f(lt98s7}t z6owVsjfy+7i9P-v+o@AuA56NuRM=5cVmll{PAdb#;r7_ +mk?tLUjBW%~D?ZUlG1SPy9BP#bb{On)i=vLS{Cmre zJY$k|7*(rFKz2;FNNOH_xxM@Goskutq4R60lcUX@3>oY-Y7<;Y8^$NPggB;oz$jw1 zU?l8WA9-26zTehonpwitW{yS8xKxYASV=)SPO$lfJbnmpq-%sE;;u^;bPpVmK%+*} zZCAE#V@rnZNK>gsT>1@D5LK =D`*0#q)=fI S9TFY>l6EC^u~@nBaKCB-vpuA`&xJs-1Pui*eqPO9mcAXax!lsA zv303Bk9vkFR!s(PB}* +nWwwp=gxtg*mG4+)JP_FM@CbgS8WsYIE zGRnt0&$gv;a~qEAvt*X3>4^E9tkVjjWug_s;wQS!!u|f5W12VtTslZ8foIiY0w@m- z#?qDJJ0s+Zp5NMel0B5PpbCdNT@|Y9JdBN?_UY)El1DyMSCaDF%1@1u7I&7`i}4z= zuff^?$0&Gv-9USqf9EzXo^#^kTTw^X%1_baDvSG&gN2LN;fn9HShku;XX6f~htlE5 zEFG^prQzs|Y8$Vy>Y5Ih1P xu%j28>e!zv=l}eUp?{OVh>&57>$&*P-c@(jJwNs z^fB=kZ`dWVn?2g13+Pn2$XmsPFQhDch(F@6U}a(J{oOQ{y8YQ?W-E2Gp@`qr(MKG~ zCYa3a77UI&nsjb48>V&qaZJR$PQsu2x7V564bW zOx)PihjFce?9A8IGG0TjxZCe?koE{`^g$NChR!g)FDi?J^7>ZxV`O^En=ukUMXq6y z{$-ev#gD^O7UWRp?4rkFc9{Yv!ppap6VVtF=ee_Vu{w*{eFB+oBDZmvv{=>i_37Xl zQevu}uicXgxWr=$$~exP*}7g_;_;yC>_-3`6swK@pqaF TR)#Y{1;QZ*Fsc?9uRUcR| 5GYr)RmGbQspP5gYH8qAaTvbu z^X=zCw-5AJeW=jzymqYMhO8k6%^0qN=1tYX7?ps+at8ZGGjO7X8&d>C?LWq@`i1I4 zf%Ur1QA{2mu2K|RYHp$^B^|5wopAz}y>PsQLuj6mo(`U>CoPOPhG~(+9c5A#V=kjv zt8 pr14_v;i6ks8n!q&fHp2VVxw=We{$bq++qXkow&2v z+@I+Xf6Zj_@J0vEL<6N2=Ayvkp1b1&?=ej_-(zp=EM#LsFh{t$B^kT)#57h;My11W z_1T*MRnN~^Q9abM&{>(2{f=}zq_|6um@^r@ZOTAY0Q5=1Qw0yAP(qRy*yoN|oI&^k zRxQ$4)lnWeBTNOZ^-ZhxIc-)IJSJ-`mtn2G{H>NXJW8BTv)32O OS}oXs-wx5zb;zP|Z?p8e5kOXw2SS zF0<@TIx=eDh~oVPMkpPBxbc#ZWa3+`x!q-P1r0$NMWwNs)T{3KvTYR65#hZ$CaaVk z5gO865UV2Ez<%-0f^yzfv#t(9E~ocpNCjqutk!Nk*X>=cM(;9Ot59-A`s$w%3?l7J z-fMM~q65y|%G?R+9ZRizHATFJ !z~w86$Yzz z#~3!o{7$gTIfd<9n3k1&vpDNmX((i<*jlGLJ}Kkia%beLWWVDw<@YzQ_K0^0jJb{b zEQ8Yh?Ct~KT0c6ov>E&bZ$#VGm5NnqiT$Z4WuJ>^g@C;6c8S#@K!TPZjlP(<;ku+- zvGwDge673><=mh<*#*YzCs}|K<3jJq31-$nq?oHx>93`D>4iR{e?18>(I=^$fd (=68)f<>$oMygS-S? Pp|`d`(eHX8b&LS-J^5UBhAQV;R%CYl=8eWn8ouLMv?q-+$6X}@4_`(GCq-44 z`)&8?n4)XOk9R)T>4d{BWVT`LDweg4 3Uhwz-H#+A6K zk8uBRpY^X`rt`BM;Kh4e5czV6?kxwM@)U*`d&23<9ihy=qJ*M7lRruMDiOzHS&zQ~ z7R8RizVhjoGtY0z8_@}nI_zNG;pu7UA=JdvnYE#}1T5*e{^|k2$Qr>)g zf-^W0h#Dk|``odti!0{F?Y$+~wFU|b*$A7>HfOu(6uzx0uU+yw3Mia<525_LB?)6i zaWt>$_X&r4z1wthiF!XoMpQ2`18YxFuC~%guQ4mjhny|2EgAf_QZ~!v1zG^gZPc0) zvPwcsW}ZE2ithtxo0VjtVQ=`o_trXP0*)EF1vH9%2j_;APEC!NItpI($ u> z 0zL;@4q*qYh*dkSH?Oqf z;l*s9q>NTE-dkf_11TrIf6PHrrvf(Yp|{lo0YHjZ!Y`kJ1*K;#E}T`BJxg;S2}WZB zqG3K`BXE33FB_uQou)R5G^p#BRPuw_mU~e!{c>TNTSC`#CldKRb0IRJL}#5758m8Q z`EDM|8kq=BXVGvK%csNnB|H-ry_4}y-N$MK_dYV!zgljQyAby4E?0tLAYqmgYQmq0 zWUGRmfY6u0$V3e;*FUwqLvsmX3-L+OqLhs?{=Cy&Jb$ljb#?!SA|A2@x;2g{pE^-a zA8z-=(Z$Fgv@8h3P{+FpT$=1VkFej)y1T4(P}~&= -GwaZ+8!V6r!3bnqXSAn!|V=9uACjKUFSXj z!=(-HO+5ErfsmB_h;Dxm+p^_MJ2uZIo*j^qnu>5C=PePF2C{x3i67%o3VKQ&bU05V z&X~S(fLOMdbWsP_R?xf$m&M!m$M9`05W$-Xpko|J7!-tP@;2(qa=&7gmO7AW*B}S> zhODU;>c&?A&3#r@o`QDn4Dki(qeoK^T=`K6SdAu9*7vwb`SmJlh6qOWopX`K*IX|b z9}1&}BTy){)Nd&Sbyx4b4Out}i;pJD)zz*t#?o5I0AZuk{S{sy3e%vZv>`PVpqInT zu%4o xW+htq{7h#~5k`JfF52x9m !uQM-s#NJ%0@J>D6oxiL5PoZSOjkmp)4)zifjfqC?z#nx)kNt#7s^D!v7Q+W>+Wb zAX?Y8?PsNrP%sifk){`siIkjr$Qg4X(w<97tVwhB@`EN>mm}{)qRg1ZL~z7YH0Ta< zW|-jPPOcDMg-C@%@svTE|A^ONl{n}8S`9`BYR%H1;_Q4#5&fmjeH#@~a(T!g )~X_pSg9q>roRAiAH7E~vxC!V3t^uNBAqY9dau#XT-QdCB^?4gJ7*t! ztisuK#FEYj`3y!F3eK@0DB~5|!f@6*PuSPXHbH7C&fLf9?| H$42AtF%{ZD?$w2lsfPU%C=+VSTXq@C?9g4eiyT}ea|1910JSlVHuZ~699m!H+= z;4GITS61cAx1Y1>opLRl3OG;P>nVMVlUjigeeVHlj@b*i67kw@3L6uv2omgRh8upk z$LWeQox94lHH20wUcc16%10<5`*hEa6W3J8HvMQFPthAEAy_bYjrw (8eEJ6oBZ|XE3W@Mkj&D5TIK)a5}XOw(K;8E z1I`p^ {>*O|0yCr&jfkT@XvamtSB>PD_#h5nxIUti^Pr z`FHo>@AZ%m=`3`YL~8$#3Sk8SaiZX0dy}EnxY#P@x w*0IlkpSK =beF6gt)h~3kDk^FKWi0&g3o)4PFppg={S~f_F{+BDyJ1>SSh1K_ z0cbzzLQ>w++7NO^D-dAsmf34*`+`P+E5LZerB8p=7m5NtFjqd5T&p?2=eIbV`am1E z59dl9fI3)=AfUHn#JQBGTTp+nHGdvf!C+gYrgYgG^j3Dj`a@{7)OxyYfa|{Fh%$p; z-@^JUI&hN$MgaH6OL}~|uA6UCWeIXkiTA#vMsCnl4>&|n-Pjbiad}@p0faJbd$vB2 z&}+~!G9Cnw+m6Am)b!&Zvva5H&X6_cef3;xD!_<+pxp{<1bvY{h44!kFKNb`bfRQE zNT|NYi*(pk?>~+gefnYfQ!B4))8$Y~HZ-aOhBGImIxf++sJ`<$^`tu!)rTvEfP0OH zg#rLpa*wy{3+VH2QkBb-26tKKm3^aTai2|eTdLe_FXYZEt=}2*TJ1Eewb#ZE00ov{ z5B-`;mj@skb3mnBXW4rFa}i)@hfdMq@O&JjH#pc7lWO<%pBCC424jGwRBmJbq-4eP zbZ;^=9&$xhay@7nXr&MQ3f6W*b5l;1rs{knqg#S)`F#4IS@Kh6sIF$btPo7xWx)*K z_7X76!##aN90L)6=?Yo(a867AF @9!VM z9vrQ>)sS}F6l=QSvY-h@c n?6<}?9pR^pu>@4bs2PUSvXkMIi`qPN;X z!NcPG(iZsSl$q>GC(q!z1oeeOk0PXqX>VQDJDvC9w8EJocCYkw7zt^HJY20A? $+HC{uv5&)e|eD6i6NnCFQk~gP2h1rH~~vQa38pt~>Z#gSADMC-=Y7 zFiU@Y0p@RZ*V8S8f|)5!0xf@QJ1X*;?uVIkvq@fgZ3$xCfXqD!nt{<7xu>|Sj!AV} z4*b#nQNy)=UNnBWjmu=jn(Uy~kQu;LYQVOY2ejJGZ@K7d?Yn_OJ3)a0y_6tSWf*L! zHLCL@B(u6DTmLxvnufaTgV>d!=!~JBj26Dp8$ty}bqp>&y62S`jjYs_A-%-tB_pAS z0S5t{#6+P?o@iXVrw>fO+~reV?YsCS;aps3C8&o}_z1RR5U-StxT^GAPvhIO7?5>z zrR?lZ`=o~WG(F$K85v;DeBUi#;B^q1k)CcpLCawR3P}@OTVn5Kjx-spV932ZYqk6x zh4dcF{jS3-8$BQ9vlnl&5t4EZ>kQMpitGimYK4PR&f;jy@*w+k_RcYgz?oZ=TH87T zq%M82*DMK%$ljyV>9dL>Gou O ozS$hcq}CsQXYW@;Xgj$U zVk>Qkm}{iZ1qC-=(K447%Z#fIz&8pu3fA#?-X9sb@V*9w=jPCyT?1K2*rf?1)aO0M zYGI(@(caDEypTZgtD23zy-F}o&dApZn!|9`OKcq5*VcB1?N7VifkYJT<$N%qeo@da zS_XD|b`|vZCtibTDWo5m3pC9mrxOUvf9)-Gkh_b(C)TqE1X!l4DdTT=0R>O2p(dEm z(LKX?Wuy|z5Yn_93rd4t2cKo_%LwDCR3-VP%=5QsN(Ed@=%muw-)bozZ}%Hx9DK6K zF??fO-dvdzIdJ3wedjwbmk~60ByV?x@j&2CbqQ`*Lhw>bi1d~|P4l7Vjscb=!KF{n zGW3F`DK^n e}GuC<z >dqnHRxLsJahkhR_-Tl#>(CS+N?i8( zUp1jW!5xW0-rwx(Ke#^+kil7bvOaSZylQiiyNKxKmWzRgqk0%*Ikn^f#)G!4%=(h; zTG!!syoo?>Kiax#gynBqP?R}%J%8z`D!?^o8ELc51X z{Y$nw#;_tiN5446N3YjgnbRF)7}-I(g@b)b!?2l;Lxkr!RPO5;)?{(?@w=regu#rz zYenX~OjFtZFc12Ag`kVfQO?D~&4~)Aft4Qokg@!c)=AL-n&wOghN9a&8uH1co_z=P zxmi1bXUJee?3Md+!S^4P$SEstBx({&0)wUKn0U!oP3&WAVHTuL+@7;|l4_*4`Oeck zRSA9a+|yh(`oLUc@Xc{Xlg92!{M#=+)ccPnHqL HquOUG58Qjh z?^k`cqL~Aa_CsOn##C=^^UHupWDVSPE!ys?7yXg4|EWDuyQV%hiBSwuy|NZ95O( zR$R#-{Hs7u8@-SeVvSYIgBhAA?s9ib)1gKy8;+zOZ3F{0u^Yayl@DbszhUni+!L0_ zwevvno&5#Qj3qGvDn$yidfnJh0XyX-L-bD4E5`BL(}s*AnFoGZD%-HheLjFrds?dl z*veH_rw~ZIZ4CziKtjC`rdo$+D7a!0KK9#Pl4Mx1xb1>v2_Qxjn1Aa>CNT*y-@x zYqje0^bb?ByxE+vUwuLiXlAQRnZ~bNgh;%Nj)Y)V4UtZ`DEO5PI9O~FZT|~ANbwa^ z{iiI-cUJ071ck*XSgM+moO#(mN*;v&m(MW^RZpCZ>B$|yBmma{aHvb2bgnKoX!4y8 zb&Q6eLuNJd;qua4=*|pP=0iYr=~MTP1EA >Aw~9K%g*k5FgiSkPsnNeLBI&uJX4;grtrh#-eAyiE(NIv=Dq?R>}+T zv;aO$Y`mc5gD10?`SToB)Hz@@aN&5N_dwAva81jlEsjzNJ>SYXaHM5>5~V6lV!YU! zX_#^~3=fsUC^G8Y9o>L$rAa`eiJMHN }s;07Yb~wx5X^$7-8_xN$ z(ht&~!*a6(T05xPVs Br}Pv$Vje#+=9 zrr9T}yLtN1gHO3ei=@{xErVd~M3)@k7t;AWeHNZM?X6AjMED)CZkeL$SHS@Ba#nU8 z*P?%(DOxXb(ZPrQAiunUSpier`L@?=A}vY *e^xYkrBW#+_>W1Sv^M%Ag>}){a7(IfS_CkD{ou}xsHh^)O~=2 z6n8W05;TlVuWPkfYXc;H3w;??@AcVkw54V#{G!0O5Hg0x%-(CV?s;^^-UW=H>zUGs z1?3Y<4=<3MZfT>Hk0Q7#`Dltm?{msHxcB=SwrQXO -$qa>2&9$QXxzNUbh7>bj*Cw`t^?K*y zg{-wx-vKNG+BcQ9pPJc)Jd YRtTAkdd7{5IpqgQTf7Uz$ucy*{0}OAvFCJHgLV z$_FX`t)EXnzYpvZn&4J(Y7MS4@gx+C;wW0|CbyMYTPMqti?I>H-*jY@oGds;YPvyS zR6Up)-dc1G!(HkA@%yI}hhQ`x0Lk3h=24vM7f>SXk2AB-{a@M^TfGelVW1e2(zuSN zRi?uckOg%ZFbxe>Apy-3H|xPq<`*X6vH`#&hETGBOQ19)Z(zwPxg%I?+5L^TV(F#^ z M4NE0ERwVdU~hI}VK>1uFPxn}8Emx(=qjruK~gwUw8oR)2XPvHSB@r@$c;M74l z?;}AsV8E_y`fcaSY8W=z_aM{IvH5C>a4o2@bjAi}UMn(LW*MfWdOtNL<4)z{B1ZQgtE&n;X)gl9W4*YM zc*RRkgBV?U)cP_tH~@^;tk-c864(P>W_#SMX{LMwXdmhhm)OeV-In^H==EXO^%qy= z!4?2pL2?yCZ>`w~T%N@yu&X3k#4U*XV7L2I#-WCrpdNb+pl*qw+o+J}EsU}d7w-86 zZOb{u-dK0=r3OwiFs0a5K7nDs829IYDlkz%`G5WcWJ1oBf+n8r(cXH>H6&~UM#Y(F z; E;O+87lGNb0Wc1v&g46n5;` wbo$vj*89b5 zS#i=wYw{KQGx74>Fd5g1<&tbfAY3-) n{ouvdCRElGMiMg=B6+9;QdC23$emB z2Pj5+H1!H`tS*2qAI<~l;vDgc^mlQog*>k!S_eh~?Paj@s@FX@;k}dtVBE7IZH5la zs*@TI7S|}qAc{S-KI<&wCuc0?I~2AFlcuuYVibY}#OZIXj>}NTZo5b`E3sZgQv~A} znY-94=+3-fV3w@Hby;prj<*?la=m1r-gVekM1%Qk5|{<1QScoAZ(Bnnw`}KU%2#ny zreMS=*6!V_MUMNi`9=uVU+p%hq#hhq3tfo8vOcs$8neE`Jr@Gv8vaS)>T+i9jzMd- zb}o5uvDU=WNSOw@J*lx9kb2jkThgA%kcG(3(2;v(PGmWnh}%(CEP^(%hr8#oZmC{f z+x rufWVrke3rjjjH{Ox-TW^Y29<1FY@q2k>|i*_RMepfTQxD znoT*a=SVlS@^zTc{W(s0+XRbzdv7|gl;Ssp`QzI-?Kdd_x=qFA(%(;i;0h{GL|Fpn zj w_aEdB9O{hgh^hEJsrK8paMxKlfZK`{Jf*}fe7gD{ zfBuKq{^upQ3dj iSY%Ki_}=}5(bh&<0g^zS1<#Nm?KW|^bTzjvPkpp1n> znEc;If)WIw0yH+JagB|?&k(%&f2t4*-MG(R|DnODdlOAg)%jhI-VG0VlI4sId75v2 zvR5{D;y$c#$@H$%NlOs1Ky-)~TiZzNSep{9bbmXuGBOlr-@`Ip{hQB1OMugHdD8Lz zHwy_|R+l8lsH!i$!$?iItsuiF=~1AYz4g1qg6FnlReCv>O7(yVpgM7(@! iESo(O`Yo^X#Ielycxdfd{ zW%1(P`R#M3mRnfMk<9nW+WzDlyNY4bY(n#C2w~9y@|Cqb#m(jXVai5?nuQa^YMVA) zKjU)iBHz8ddLCz$XMoZku0@vJ{?jRdkVeeKoz;noQ5kZ6Di4?;#9!ory-6ksxIO>V zZmElEpZua54!E5SJD@KU#Vy1O7W%o7R;K#bLjKUl9oRbU99@lCou-dCb6Ll=Fp{6N zC7u#LILV;gsFd^lv`f8DO@XBFN?^ZV7CoFk|0(vL8=3*PihLa!_V3TX+ykOjCW*Mc z{PUZC-Y>3ianWPow9x*Czx}tx|AT|Fh<(b<@CN~Z8Ch)IKNJ8ZUBZpd15~OHMuTh` z$V7^8kCSv7I&%N1Gx#>pu4YF>>gg|G58!o3z>*LBijc9huiAbK>KC_?$8B*Ay)a5= zFam#ug2{%6$sL75mVE%FL26k4esUMB2h=OHcyHx&aTiX0uN|8TFlr?4Z!-VmBTe2d z*`W6VPjJ+eH6Z0sjIINwu2ZiS^+B@ZT5A0Rwf)O#Ssp{clZ7Rd4WYPhgAL%aW5%!) zGDnn YAY&lFe#!3 zCHe3GHxLf`EVetK)V`%t_#h1eU>Zf6au46vPv))ni|_miL?ZRTzdm~JGXTm~P#%~; za19#p7(%So8BJ}@CGhae_VRH5Oj|r%9LM)$8JSC)U;=JvCf?o-(0Rq+ai0D%e^@Dw z4YOcRd3o`s*)tsDnoUoUrMLe7wfB`_QLf#;GBT8aNJy6=AfO 4I^jQ!1zVCkb`F}ar`E;(c{lFy;@WlPx_qx|w zzZhV}R}Y6jcXNjHhsICBZK|UI^2NAQP0*OFC|#cvzLMu)VAx4;4S>2PAHaZNJ=-mx z!E#)FyWtf?d6=WfU-$zdM+E?8;xyTo;@%+D*;PT#eFH&P+?b<&2SFZW7p13A+Wq#A zD}#|n=BI$!poiC*fF5`rCn$SC8QYs3??6w@E?r*=DuVe9kdWj-Ud?!xfO#R-4-nLw zIQk1hM1)CVvizFBgL6 9LDEq!wb=7>r4V@|!y#{M#-{qp z?!E&UXB^kRzzGu4OH{;tTkBI a5EWX I>V)eN8SP;jXzTjWs`??Y4`MZl_@Cfub(C|?EzwQ8x3 z&|Z5Af@TqF @& 1p{x@8lAO)+p;UO^m2TS=XjNTqN>KQ^pS|03;9WHry94#vc)gm*ft~FSeZGqg zZ`k&wUQ8N6&=_f8>fgxGE@}cEmUY~v*Ra<6Bva=0-Qh}!qy9E^;f~g+tcYBP6rx&i z6oRD$Tb-F&=&Spjd+QaMVPcb3LGvwYWM=E5Hd91Xt3Q9<-2txAW0$=R9%hLk+&29X zBN|d&068R?>Rwd|+QcW0U1V_0QXpha3M6=5rJx;`znrDwekY=IeXd|E!5x6Fp3I_I zHk4p$B&>Yr7%la7X5(C&(7xMWPq )XcD!`b;uk1kf>ib8tf3{`&DH2{PYOJk z^Wl?nKaiH@762pfpD1mgb|dowG_4Do&x rwYl@m= znTH9VM@GXIL*<%6^?jnFv*Sf7LlvSNo?@4@3%fJkTp<|%W1_-9(f~c-7Y1*GyG?WB z*oXo9j =j }vQWoM!Do&mvb*6YRkYk DLRv;* z86{IW6CbwXvi7;Q? fT-j3S_eV_-jZHAwq~tdt|Z)7+;4GK<5qEZvaZ5jlgo(D;#(`gu1Cy6YfsYxLIakix-$yz@$tj?O;O1oSv>!IJQY*E^7Q~}fg zbAeT^68E`Zx)t084N9{ge{?w7BpqVcpRs5_w~73K=u0bg!0lk Amj6>aC$ofttJ?{8{>a9biOXHcbpo@o#75v`FJ37Q?&UM=+(r}We@?<)! zv&HfntbZ2uKZNHf !+B;FH|Z`bkI)+ob_%lBGSS3UtzoPl3q|8ju~ zWP8Ei==B$sNyyM4I Bhcs)3B(~RoYr|Y4lz43Y(Sh zPB%)juvlgi`4$!iOko|Lm^ck0PZqw+VINUVEj2l71<07A)Ye}fy@TG*y+B-Wf)?!` zg8N=w 8Nnfl9iUImn1@^|i1&2+( s?Z zMCoAE_k@gX22o_Vn&sj#RFcHnduo-~L~4hHK~CK_MJIow|6yrR{hN-Q-YpFYjcA7> z>IB|7ePhGOokI0*I@D4vxYQz<8^%9(%!CEATXp2RjV%0_s1n)ovvPE3m^|kbRt>}q z@A&1_cHY`gMomG2+Nm^SUgc7-eP5o~FwU^hyoIQWoCp|g8u=8$cG1Ar$?N1nJ?C*K zG>0V8`SdsbQV^`G-^_ES)-;bqziS7;FV%gYfM~giIVyuFoe{ze9m~a;gJ`R>pIv(GO94*+C4m1o49(^n9S~b%S18lj68MJ;n;0B1!7K6A@8w) zMnCV0L0?3fSZ7DZIXMA+0sqO5Vtskzjzy{Ogj4)V9aIFf!%n7X;CdEq*JTrDyL!yI zPq;ZI-_@@OAD2qWD5I(a{dr}{4SmcLex|zXDLmznPO5|iEnHw?yi`U}rmb;v!9S(^gxX {cEV&wFr{cCABRcc(0#(EE;r4C_3nGe>FepKl@Z_(jrS2v!GpUCt84;QOX2mDfu zcx4T6YY5)BMMK19h%Pt;Ck<9W!gnPJp}cxCw|SH+ZcH;cI48?_xRtCMVk^w5goFgM zeb*Mm*zg@7pB#Lmb{-o*N97NS#Wz&4x=SWgn^dxb_XoA9- 7B)YHkk0e?l5~~112 gw7+`O1tyz|D4GEh zC&m6Px2+I_IP%m1L>)G%M=xcMBh`^7^s9xg`P84Pj(Icew!JnMa`E`4?6Utj2bB;p zfVBO>yi;xU0{d=hi@SmDa4wFXxj6l=#dUxv<_TM@fjz}123`46zNZjwo;GJU)9o+} zWW=e3RKAljItG6VAD|yUG@h_IwE&C+&{Cxp`W#QT*qSsN+Fm-hQ!9{2t$K`qAeyRr z=U26o3eYr$rJg1A{4|QvA1|A)JWzEXM37lSQp>LgB7(Ksk_mVRCnAGNyRmwt4T#hn z= -Rp6L|suacQAix#kl<3RoekSNWy>?e8!mEJY4455dYf& zDGcbP{Ro{L+Us=9Mn+88sh8+3-MMM7V|Zuj236l3%Aq_;H=5KfLe@k#|4ddA$90AV zf!-en?kM$j!iIa8stYzD3zj-;6? &zf6NG=56Y$Aih;;3HH75;pb5Sz&S7T=zac znLTeX)BY`4jm8tw_ZcWosiaP}83r^dtWsNSFr98**V8$3EUkz1n~y<1l^BsV5Jih5 zT7tul+{>JVq(dG6s5Ku?T4(Ko&W)-BY5Ol0 e(Z(W1Cm@US$ z5o&GNRys6W_`r4G9aNrw2c1uQyGp|H1@H51H!1>rN_%vxJsC(Xntn^#CxIbGe9W~= z)Tdxf4y1|^Iy>p;a_Z5Exfd*xg$8!oorje;^JVAsB7LM(v2#1%sey~Uq&``%+n|P! z^m+m3Qyudcl1w9H_*3f(V_vbCx;989sg|db1;5`xq&Wy2JuZsLBV&C3bCjK`l2}I4 zPBz~A!Fk*TyLG_s*V$#!>}oEbpg0PuBZ8jqpcw+53GEkOK3+T|vLw=W4YQhbnY$Ne zhW8WOPxlY4KvDM{($ c4CGY#=jh4nMGNP)gc1pMd`*Uz6uxerUUA8AI<~t9R`X-~yq8&&D zJwcW|X?n3@|FQuARpyaR9K?HsvnWJAUREjV5T<)M%4lAN$>V1v%n$gdi?mUzj2UF$ zQ^_vKbC2$&j%Oj-os}~FZEuIeAI4@ptP6gWUdxWfD*IXRfdHpH_9dQbQtP6WDq>%; zZh)0QO9_0-d#fp{*z*>*qM3Jc?N@DtK*&B^rsf)hp!(rI_xACVsEHjV!;=NOEduD( zO7Rg=+avuH4CUMn=J LB%vR73uGM@@`GF)YB|l(JNg>cY6DX@Q0OMbjdVovPe#kZ z5~nPP9U=+QAG7?;?dnEY-iCi{?UqQB`k1PI`y;&A8syBBcv&m`ko%KH%J;nP=yYXS zC?WIalDYqFOP)241?5S;pO6SsH!wZR!ZT1Y?y2|bYC<4cUr18t+Is=e7l;j{`X!W| zHX4XWgS4E&V)Lzb{9&q<$zd^rmRlG4moQ%^@MyLp7ptUGyKxTRhzChu=r-Jx=jPPi zgI@kOSRhOVbMFpQPdoJ+gce9~j^>9a@JQ}i(MnxXzTH9>Ei~ zq (ln`U4IrH3|J{qcpq%o zx&TrSCrC-&WFb6t;`<-ve=-f$9U^*>Y lXEHjzhI zRCE MN16QC%#PB25lf(67F?p0RwM%PSc;icOCd*X?=%T(6>g f $6R@62PJpo+lKtVy5vDRodAbk>8#VRj?bK6* z+6c8%&BGc})RHOu72w Az+yxKq-M(31hhyV0Qv$jP z91CsUBPqoO`*AkpExfxM!!Ux3l=9W?CXxtLq)v||G1n$<3nCyI#=)#OG)zJ#7U@%F zW5I}t5TsH3lBa%Eac^642W;N5JCbb0Y~X`gODVuPu#U^@S(V{@slW>>F>d(Zf(brK zq7B$Ov7syC$=$$<3AC(!K7hAtt8#j`k}MxufJ(Rr@;IZZp1ic>>F(BkAo `8>S zjd;ZPAJo_5?di5^IsS0L_Ac4-LR+iy#ePL*q#4He4ANn|H-{ }2Hk)a|n1hmzD(cX==f&7n$Q@ ;b{%V^kvfPV<^IuemIM9lCSON4Ti>@O2(N s_F_Om3Nvh;iomq(uiArTR>{{-qf H%y4yh-s=zUTI&*`K5~t zZC*nQBVWJ9bG^6wcI1&iVM~*jroSX(>sqIDhwo8Y8 66T_>2eadQ*(tZ?qDJI)okS7eMbX=EqqiFmL Q z&CpxCQAo@7aAv*09I1Zv5qNkqVx)98q{0D9bTMIWvF@Z~@0QTlx0xRtDL(03f5krC zm35Evqb@u9M_0!<_O@l!A;hQ&Lj?_;<5=T=&r~o3`M48&;_JGh9etcCkv}Nh lc<5YlpC3kd)kO+hXO_<(iQ-QNf|~MX z!WoZ$`zHSDy&{?!d;6}x-#lg$L0{)$U90z&+V5Y72TO(;E-WgT=I_Tp=|YV8=Mw+_ z3>3j?^Jc8vUJgjeMt5YIIRcLGb^S>6i7PhT{=bs6pP&AQ0Jl)lH?DULb1Lm@x`MUu zyXEn3RiH?9T%NLB)wTkp1rbYi1Hg6zbW!;L-w4>g_%M)Wl$F1>ICf=mv>^lGRDO+q z^n1Zsf?+DEpLA~#QmGHZh7t`91=jAL4xR4;!d|$6vhlr9&|+06ZY{N9KMp|cnXVDR zf2Ob9Vtawv2LRcb80*LH0Br8>`QU89n+RRDI6MQapxj`Z&Mm#G02}X`3XXq!r5dJO zL3Pmm5tv&rZX(7OPIqafiD3g^r#KA_W{P_|RP0BEFT+l4R_KPnv|Z5_{`SzM&Ts-a z$m)qfn&G`==>O#d?4)%1EUk9YY0$Vqzq$B?MXCIZVx&{^8N?UD5zwLQMLC>%1@}v2 zCt`f^;Nfn(yiYa$@B@`++~Jd^b|7LpK9DY25B0y1Al6&CT?YKFB^bpvU=M;_qi)@? zfZL+g)i1ORq&L%W(GN&R8PXDK(BP-M- P(ru<#WiwnjBxj!(KVhAM5&I7L`%j 4cB }1Sg$LN{e7)h_+B4O-)bcFN)`&C9 zWnQUS@ckE}A-n>bTX7w&iU6<2%tJ8UVs(-HE{`8K5CMueg`Nc7s1<6WRE~LR1 zg*h7aqVdI??p84SO*_yDj?&i;&jw_zj_UXZYw=Nx8!VV16Q?^%Kw(1T^@nrbB&P7L zUUz=hg;vujyj)Rkg^_1^7wlSA+{W`t8pq6kRWeIEd$-2NEjh&8EC7{UJfy5ztJeLx zfv_i$l9^+$V)JinXz6({ff!*ISSK P`vU#_pyW|RhVXmR1j#Kev9A76g}$t=B}hkPBJiF zW2pe3rbp3?+qKgd+9vi;!IrhSApIWA&K=2opUCGS-$!(h?!X#7u6oeBM6`+1rJQ8s zvG3}03Q$8?y8;h8vY*?&S%B!-=$fEc83>3>`dV{{Vw*f5VA?8=NQDt_ErK9;Ec6$( zM~&mw1@EiFws-27j7%@0(%RS3o9N&X_u-Te(=k#nbiZ>ZrGN#8ZaJ|9)blt=z8dlt z?DS2S4jP3^ti#zn8#@&T{j;??qHpaKxNZac_oEl+*(_!o1(wDQT4od(==eoyY}d7y zR$nrg5NqcjHhNLFEGv3UFwkEMFE{rXUfiZ0>w+#sJm@svELo~|Zuv7XkNO_-?E-2* z9I#aLY&$onryd9-7zfjH0QdR&kx%u0Vc}kMrJEz7G6k+>P^(IcdR82mJav6Ls9rBj zg9Aq52mNL-{5&hmHX#H&TVGLEsEghu6@Xj^c^)w-66K1v=fw|^cWYxZ2tn2f{5KK` zneBfeu5=B+_RqWYN;-79zH2~QdWzgzpX`i?`d#_ZA+7Cb>)IC!^;cYg8ldaVELR;_ z)VEa!YO~H8Kx7t1qX*U+J>n3PI*t2bUi(@;CK9K?7xsGOJ-4+c-+iq3W)tx PU0Po|^ zeHUsQkiX(jle%W7TKRNI{>)T*Zd|=zHsFWRPI-w_%Q5A=%K9qd6VJ4`V*9x$g&6l9 z_yP)#zbG63_#Qm*QIW9ODJRvFp%reQo6J_EURYa(RpFmE-aEkDkz3ep6E9WZ*q?PM zQEo1FSk!EWA$jS5X3L!bQ2X8~ihVffGq7Pkk?}NhGj_l-C)|Z6g3HDtr)1Wgmhy(; zMmIPkY}=Qw_D0v2gsp lEwd@S)=f=e$5oJegPd)7fLLJjr7!_ 5kKh8$;HY=wXFf^RxBQyAc{+1; z=->t8Ffl%l%3OykVe_AV7(~%)-IY_?y1>?JBE_q@JTmM1WlZ GrIj?>CaH- zX9S+!3oKy?d?rH#3k}`7r2D~Q*L%%0^WhCqO)VWsCFP !GAJ>Deh>~tOq!!|JU{on+N%Sfb=G++T` z-u?z`6MfggU+H)Rjn4b$SNX4L8HWu~{p@n7qWKyYl>SA`q}JAzmcjVi$-DIr!iEm$ z9fwfk7m+v-_57{Yd*WUYxX3`q_^5~Vjy&9J%w3dyI-(D4aQe`fuXbK3-b$I@LLQ{% zn)}xP%DQ -=`r9EH|0r_a%)O!c8=dl&?SWPGErWp$GWXr)-;E}D7rI!@b6ue-+dGo zMhHoS=ad`D$cD53Xmc>yBwy65#prECVIg_M7q8%b!>4G*fnQeE4Z$WJSX9fx8JDsP zd*_x5+!rdf0%PPBfvRT3O7`>T$uE c(M3jRi$Y-#8azyJEFaF<+dxaxY_Mb3S-f+5Wj C&mpO7~8Y9bhRez?reBbrwPBf$54?bKd)9*{)> $87e{v5bxqu9HHmGkDp%TihO&Ew5 z3|u_VnRls5!R%-2-Ir$l^8k&W^ytl9$9NlD>&HJ6P+F@M&Y%q&;aJQqd|gB`Q1GJO zalWUsG=Bv(?wet>b!A}P&~-G{Hglon>;N+A*=zN-ih7TiUvY2QMQ~A2UV3u{F>8pN zYy9+ZtrUbs$#L2qSN@g%D8qZFu&q!;;zBtaWwNkmR#8P-?l)<^E+8MpYYoc8A1fit zVZ(S!Prq-~d3`88bGqPFUz&2f+{BvJV_yD}S%+0`MNM%VbG%l4r^zf(PQ|~J`JLRD zuhsR>*~-&+5-3x)*1(V{6ec$V{4DdWdVS&U)#t4#37zKEvfUm?A544HswU` L^LeF6O~bj<|A^VEyT} z%_Sl5I1-v004>Q|DN3ut@v)oUhO+7!b9fP{Sd+~Uux0k7U7gDKaI)%f&s-y2uv>4U z9c@VZu-G@VE%z(AKVyc-5E@cEbSE=K8e+_;O|JfIRy}w^^$>lbF9^WWzn=Rd!=Us< zrrHhCk0=d#XGkSRkBNF|#6Ew=*&@bX{X>p&cj&E;@d$dR^EvHKe;aK}Kxc0vtPRRC zC6BLwJN@GCoAilPK0ulCBsNy5Z%1OSA7)B_ZU`pJI(F98WP(S@$%H+P>-|9c+)qSI zsL8J*b*-l5aa!(oD{nhK&u*~rxX`qlHU{x~Z9kG|v=cw5TGWR~Y8t>)?&s}{>x%e? zCku%t08T~Jva}vmR&SoW;hnG>g#QvBEFV){t1Na?)$N@7zNRx5Se;6JRow+fDeC4< z>_;){<<>CH_u*>?kp65!#75r6I-LI98uF#(ImL`4gMvS>dJ@M+syFkXhJEGrCqtsK z_r+v^3LwLp@jKKn1cMAZ@#`tRY>nn6u&XFq($diV1AJTZ(!0X?nf7u$7AA CjPs1<5x>8O2J<%|88$2`%#pjbpt-d}pF(sK{E^d^h@$6t&)H9?n&|TQ?vM8)qQX zk9*=feDs)P7qH6Wwa8*S83L~<;?wawe0FGs-RMcAprBG4(UPTwY5C|Q=F2zu;DKdr zJpNgh?}%^%l8^I0o-$2Sj94CdJO{<7+yvXoT{e0?irRNJA3s4B*5C4r^HXaP5>qKR z#iNzW!hd`OlI=!GamymBP1w&JR(BVmAV0Hix^_2$MyUq-fSOfZRjEX@MZ&W1nC59@ zxjW@}tBe+$2G&)bDN|pscYB(-!KmnID30PFSQo9$I0sw_=1d-|xVCYo&u_thFPppq z*<^S4YRPU2a{?z*JVc`%mGo6>b4J|X9y|87=-Sl+t>O>xfg*Rx^aHrt!g%CjB2lxD z^YNDmwz$mROz*gB{529`Z3!>m=mH{Ye01s3YX%(~Pry~RPD>_j(B-_W0=8oOD0A7b zb7z{sr2qDr=)O6}fF=%FN=o>wdf99sMt>01o;X##1b0~!M2au~>*yZn`c3Lxx38bp zTooekwyS&yM4gP )|Z)_wW@1I0P1z1yrodH<&(%MQobMC#s^ z3VjEbK$*2Y%dt;O7c-qzg5D}Fr)cvlO^Xx=mqDc;sb&_1s_z>R>65WL7TPJI8}p;a z|0eL`t}{z`S@Y9wLOIdv5#8E*gl14uA8{LsG?i6)c5)$> i6qU?DL-%jZT;+ zQd0gvY#i_0bZGHj`LMXDwT^oyb8R5!kMe58m3Oz_DpjesjFido)Ya{Wy-2rCkrVdL zhFmb7O}SBO0-uKC+F@cF>2>mU`h?$YV4Xz~tU&!>YR^8iNiM9gRwLTvJ1X(j7j44- z6I?q*6b?L=og~@-@An4nnc=XUroP^(JkF*=yE(Kn p9DQry)zg~L0Uu)VQPQqx zAY%TQvX;t&vaK2Ck&zSYcj|f!5Qd!{M5RN`Um=#&z#VW;4)lj-OW&Qb36Zl!J_8 za^un&C}QG3N=&Go4>CXIivGmcx6a^@ETC>%yRzt=&?JO*dh)b!H8}yxGceG|8|DY~ z$tpJxYhMds_?4#(a`>*wiK?xXxhg&?R_g6?nl?qOjy{h7gV_mrMWaCsI(EP+)-MGY zlI3;9e?2@>KvbG!AKcsCv<7#ZAW+q}{F;%P<_T?^4W67Ve_iptZ~W$mT)^Wa+xc4J zd8~it-msh KI*-p*JT2gF*+4vt=X|GxmV-#vCXDDWyboP7 zpPMkh0GQFLNC}7dPpj4B= zEqbseOg-{^jBE*HW{^6J+tzF&ude+0p_ J~l0MduJ_i=ftA-wZ~6rq>al+Pda7&;VxKhnrBjE^xF9-JZ}$E^DE04 z?+xkQHH@(=N4M;|$zHL)G|m0VUIu%=yqL8+HFUQ)+>JoU3@1UU9_JBcscW@)ySwl2 z{_1W5P!GF?&6jq=za7R>QBVahyzjQ(yUuR1jx;(XAX3NP$}{-e;b(9-N#4ml?%yZg zyO~FjPTQC|?G{u>vbuL3>ep~sP&fVs|L+68e |M=*xf=*qGGKK%dKt(P}b0Qf1Z z?T_>swD<;{KcAH~N8X(sC2Y`BzOrn{aT5X!`NGGmpMO>N1eZg1yGwp^zDln@N`{_C z%o{Z`fLobU+3+}WUe-Bb=N?Ci#O!?-zj EWZIqBkW-j`Pj*!Dgq=s90@ zP#Q^EmW0OD7UXbej?9-E8v`qDM-XSVeR63^xp{7`mc!~ceCz`qiwWdCH3^r=)gbRl zIq-fbH&HI+hgC(f%|uI?46^esi^Ryj@}Os-#4YiCoGT583fO?;>}GDi_o8NC*Y*pR z2Y21*_5y6VH$&; _`1zV108aEU{YQ=GHs1%BqHi5#hLvxc~yk4ur)x8tE>= zoZ06yfx~o^kBTvr6x(Y}qdVKn0k35)ZgZuVZLdF})?h39&=!o2&9a=njx?l5)$}c2 zFj-$e`=r4Ni4quY+~$OHz(Q30`LNmp+}?KG#+dAMdBvq>RqH1QBUhKZAHlL t?@km1Td|k6*rM%0q_fo}MD=_oHrjowSg!CtADi+ee$HaaLLXvEO_2 z7axjx_5=IrDISHO7DqF#Y@d9z%q>`f5pG@)u?tvLN7l(JNX=O?7ANeG%O1l?^LZ}a z>NmEw{A|n;_638-->I&|-EjEawfKa6>Uwr@+dZ`2pUeCxRe|PUQc6laT~T~~Cx)v! z(K+OJhCH>^IBf?l0}MuaGOSgN2gNw#5~5=L5tc7nPP4Gz7duR!&QkR1v?AG=MW*D0 zK^`lW-UC)k1{}P&0^a5oT6K&V7bE{^EnWQ2ess#1!kWT$dHoo6>Br%4B3A J(!A4=qjXdH7gZ*l&p)rh_D8;hl@6IjeUVF9jYIO^f?RUo(LFnRxy# z{@rB=|ARcrSGN_13)*_i*k8RKM4lQ$(8FMxQ<8LG%AMg0+v(PQ6|e~%cRfpa5xck% z>!#41F)MjSb&ns^nl;8j^=4t!k(ya!hW;S~Fkwk?=AoM_1wX5)C0Gvb7vJP5A^)O^ zUlR0| P0om(x|=@Zd?DP0uQn+U<0g3sM+!-C}HfX^o6E z8x^03-Tu2jd3Y2kzJ#zoDvJsn{I;5G^{q63rmUwLmgF&< w1BJY!wZPlB(LI{M&d3DRvXs#_8 zrP7@=GLlg~mPQH3EQsgXqwuDsWZt8Z1;Ilzgfva%rjB~wPvbDO{ZS^tp>7!_7g};* z%+|YPwjh?-vraFe1!Rr^qh&QRj~-z>;QYoL&Lw^&8}IxQ&m+r~#R;N-U82SL^YCmG z!vSH;BF4?~APREKjvQLIdtBi3>utX@ea~3o6aJ s9jGE~lS<{NDUOf5gsCBgCi zKXx}F 8ZXbpQohQA3XQG+ZygG{RG@rPxy)ga*L-(LLVKHOQPND=s?iC zUoKA%KY;fEr~CaMoFUAt3!Z#`JqAByQ^q~~%Wv)eIuS OW_p0K>PxofN}F z$EZ)m^sh_&z7_^M$o5~ChU2M$1i~faf8P-a3Xkgi&kgSVH5Ph1kt(|}?LU`>eC;FI zU%o}ojuYY$Br*#9?T!Ko -8Z_2w pi$#L_`Zx=l(JXB>6YGJ%abO@Oz!DB+;KAU_i(WA zzw{5z-x;TUYcB@9QP&p*58&$Hc~imH)y0i~^3~h>XIvEgUidX~ufm@$p3ZuEtxPT} z=;J*c6f{(isUF*l-l(AKaqBk9+~C~52g9HA_TKUIyoW*}eSCaWebiO)9*#&gZEbDj zvE#_&$B)82juQObJa76Qbt5PVhxj{&fdc{O;dIZ_3Gb#L9P_3<-pf;O?_RiF;ord> ze4YL?x*Or&+lMCtDQrQisUAcA&+eX1xBoZYg)RT-E<6}@*~! k4sP(Wd%)}K z)BEg)h{z_4lfM4t^ZNP g z{n7hNd%M@4zkk_&)0!PRUq24@)~wd>ykd|mYH!F;c~Xwtxjn`!_lD(Q%Ka=}181B! z-U2|{i)3|rOMifvNbQD-f8IpgUG?;!^3$5ob$RDfQ}T=w@2{S?ze#sh2(mub!`^=H zDiy&Dt+7;A#H_$Far-rh0cD@HIn*F6a=-dif@+iW=;=Takur0ImpepG{WJIK#m1D4 zn~wZ^`AtMIDZBFZVcYb|$-`xaPA??uLchp} `dlQ$292e3$AAK(kc@)h9HtL{$6EN!M)-{EM^S4SO=;4 zl`I4yG;;3V{_%ZyJK>RE=}UFRGr=bnXJ4flp4HD3ofpf!>?EOfq4{~({!a`u+-bD* z_@)Vc#@a<`}N;D_OPU!KIzjbK4X&?)z38!f4sK=9_6KUYZgA z-1yX8`!2W#`(Y_#j&&;OMZMWHrDfZE$I7nqLq`;4>-~l$-2k;-US~fW**buxh<^-+1$t^Ba76Gn 4fGvSCUP*hyIST zwbgFi(D|ucU-MPAPY)Ay^{+|3c>6>O*)Sef_i^}J?0uukwWsf|9nJX=vOz&M+@^H8 z^mpQ?gKOr3H{Dvj^`5!9K +XIX3I2loC#>NM+HFn3J =$zd-PVkK-tsyR zeu?h%-s4<(Ehl-SZqC=FLzb45Vl4+ zd@Ydxz29uiQer-?$~0`92z|?j(Y!M|!j7n}S$=h+GV%8Mi^2PILKfZE%2$f5xqm}) z%lp%-jaH4^ShBvC*jTym*yg5n``>O-S#{*wwVYKh>-xT_=16peC=Kn?5> (XHMp{ Vap8*gkF1oU!;gGF$A5Zb-?qp4=1))TlX?a_=iSG}l=WXJ zIzKZpI+-V}{V>6xMai|^byTq}wCo)E-L6lMr`{j mzJJu-L)%Y`yNkP#E5lVk z8)0uU|G~iGVT^K2P0Z1la}E11h>fXViN9;iN PT6yYI(&GYiA^(=Rf#&sk)Z7!l&fH#GOX!QVOYX7kbeuPz*Ud-VO4 z_DikuKhZy5dpe>>swvbI%b(K|mJ>*s?T=1|RPCxeWFMo>R##Q~T6pN1#x>ic6`h+t zZ~Ux(O|#Iy@O5uhL2}_@f%IMGPjvP`x_(=3>xRy)Q%%2mG6@&xYErms$4f4*B5Wau zFP_NPkNxPJ(b(SHd9-~XweM43a#}L|Lu`tsb@mzNN4rw=2YfQMo%#!#Nil^UfoZ1? zglL5rgzVh(NzT*ZXF$leb*t9x4KWWHSl6`~Et9t?WHVt??Cwt4LCx<`dm` P45L?~E@!gjezrRSgcGZ=cNfZ;EQJY8o4lZ?b8|*mPgpcWt{3qv#9% zeBmvd+g4dQE_saH Vy&lRue zyP=#=?g<+c? JyL~!@{;ng$j;S<-AGk3G5YIj(< zx7WQLU#@e>`w}?$Ph;{yhT*Zqoy9CF%o)U#SGV2Q>A2QgQJkYhs~b;o@TE zQrVAAhq@f;JgVQ;veo6c{pIFYCT4zLA1bHvkcfliJ!Cm_qLPbY_&FDu`R=aovCPsR z#RH_V*zw}l>;YOonTZ{P4pkmMwJYc3kW5|Di{_pmelio=4vFjTT27j7PHfTJ`fzRN zx|iz;*G;cExGsBhkfis< tZ5H)H=Nxqq+1tnW#oNA5UGJF2Dy*oVn)F8(o0p-wE15 z(M*iBdp)Q$wDIZ&yY-?Ek377-7u$NgHGdN=(m^Kib;avO_0l|kenbA(8r%76^BIgB z#^xR-;XR>fY-#KOeYQo3o;oJ?e8R|MU$fN3gBO#29`K5JWz=`j-_%w+*Kns|-y6~> zsTqIhXDDXjsD}<0xeyi_6uKi6abUkmFUC3`@0Lg7_Aq7f54uM-DzCU6MqfEr==6qL z(9 n<)@)`83D_V= z{qWFk?~xL1s^j1z?sDKfzjJMsbf)#(=YOpH-!-LXmN6R7eETj=*~0T;WfLQg?<`bh zTa^WEaDRO3M^q|kT#RhDyIR1QUwGCyeKqH5OqOq{2ftx)%xz5es+r{v%fjqv+ku?g zyUou}VmohtF1Ooim0Q~O#pCoC&+EIFWv5tX_P~w2cP>?FQNvNi8li5VGV;<7(=PVg ze&J5ON;&EX;GnDJzwS8qbY}PM>+3D9bH!(|GqVP7mf_qtUsKAS?A5+aAG?0KbobrF zyP7kdwChD;jAu;03QbpL6mcu>4LhIHC7*-7?Dy0!r(jEZym^-e`3i0DY1>clL;TAY z$)+RUs#?N|<