From 1c1d602bf33f2d6353dcdb220c85fba49cb55974 Mon Sep 17 00:00:00 2001 From: moo-onthelawn <70078372+moo-onthelawn@users.noreply.github.com> Date: Thu, 1 Feb 2024 20:03:10 -0500 Subject: [PATCH] TRCL-3491 Add "System" setting to themeing options, and match cmd+k dialog to new display preferences (#265) * clean up * clean up UI * add functionality, without user exposure yet * fix commit history * remove unnecessary change * lint * implemented functionality * clean up, add into cmd+k * fix imports * TRCL-3537 DisplaySettings + Themeing Polish (#267) * wip * make system panel reflect user prefs * clean up PnlChart * testing changes removal * clean up logo styling * fix export of dark dots background * remove comment * fix system panel color background --- .ladle/components.tsx | 31 +- public/chart-background.png | Bin 125342 -> 0 bytes public/chart-dots-background-dark.svg | 20484 ++++++++++++++++ public/chart-dots-background-light.svg | 20484 ++++++++++++++++ public/logos/chaos-labs.svg | 1 - src/components/Accordion.tsx | 2 +- src/components/BaseButton.tsx | 4 +- src/components/Button.tsx | 10 +- src/components/Checkbox.tsx | 2 +- src/components/CopyButton.tsx | 2 +- src/components/DropdownHeaderMenu.tsx | 6 +- src/components/Icon.tsx | 3 + src/components/Table.tsx | 2 +- src/constants/styles/base.ts | 6 + src/constants/styles/colors.ts | 11 +- src/hooks/useAppThemeAndColorMode.tsx | 38 +- src/icons/chaos-labs.tsx | 62 + src/icons/gear.svg | 2 +- src/icons/index.ts | 4 +- src/icons/moon.svg | 2 +- src/icons/sun.svg | 4 +- src/lib/tradingView/utils.ts | 2 +- .../portfolio/AccountDetailsAndHistory.tsx | 2 +- src/pages/rewards/LaunchIncentivesPanel.tsx | 23 +- src/state/configs.ts | 35 +- src/state/configsSelectors.ts | 15 +- src/styles/formMixins.ts | 2 +- src/styles/globalStyle.ts | 5 + src/styles/popoverMixins.ts | 6 +- src/styles/themes.ts | 17 +- src/views/charts/PnlChart.tsx | 137 +- src/views/dialogs/DisplaySettingsDialog.tsx | 78 +- src/views/dialogs/MnemonicExportDialog.tsx | 2 +- src/views/dialogs/MobileSignInDialog.tsx | 2 +- src/views/menus/useGlobalCommands.tsx | 53 +- 35 files changed, 41289 insertions(+), 250 deletions(-) delete mode 100644 public/chart-background.png create mode 100644 public/chart-dots-background-dark.svg create mode 100644 public/chart-dots-background-light.svg delete mode 100644 public/logos/chaos-labs.svg create mode 100644 src/icons/chaos-labs.tsx diff --git a/.ladle/components.tsx b/.ladle/components.tsx index c6e7beb..0ed9130 100644 --- a/.ladle/components.tsx +++ b/.ladle/components.tsx @@ -11,7 +11,13 @@ import { SelectMenu, SelectItem } from '@/components/SelectMenu'; import { AppThemeAndColorModeProvider } from '@/hooks/useAppThemeAndColorMode'; -import { AppTheme, AppColorMode, setAppTheme, setAppColorMode } from '@/state/configs'; +import { + AppTheme, + AppThemeSystemSetting, + AppColorMode, + setAppThemeSetting, + setAppColorMode, +} from '@/state/configs'; import { setLocaleLoaded } from '@/state/localization'; import '@/index.css'; @@ -22,25 +28,8 @@ export const StoryWrapper: React.FC<{ children: React.ReactNode }> = ({ children const [colorMode, setColorMode] = useState(AppColorMode.GreenUp); useEffect(() => { - store.dispatch(setAppTheme(theme)); + store.dispatch(setAppThemeSetting(theme)); store.dispatch(setAppColorMode(colorMode)); - - switch (theme) { - case AppTheme.Dark: { - document?.documentElement?.classList.remove('theme-light'); - document?.documentElement?.classList.add('theme-dark'); - break; - } - case AppTheme.Light: { - document?.documentElement?.classList.remove('theme-dark'); - document?.documentElement?.classList.add('theme-light'); - break; - } - case AppTheme.Classic: { - document?.documentElement?.classList.remove('theme-dark', 'theme-light'); - break; - } - } }, [theme, colorMode]); useEffect(() => { @@ -57,6 +46,10 @@ export const StoryWrapper: React.FC<{ children: React.ReactNode }> = ({ children value: AppTheme.Classic, label: 'Default theme', }, + { + value: AppThemeSystemSetting.System, + label: 'System theme', + }, { value: AppTheme.Dark, label: 'Dark theme', diff --git a/public/chart-background.png b/public/chart-background.png deleted file mode 100644 index c7169a3fb0a4ba4cb09c3a304215be57574c225e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125342 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≦*h5|IUNUddbJN0c-zG_g0~;)9v} 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 sSY zyRd@6V@-)ok==M3uNj@U>tEn`a`N$t@U8{RWmlW&$N>v9QE#hJR|u3&h+Cw>uxlx6 z*7gT{$2&NM8FmSL+C-OQkZ0cuJJ^`g-n$I3z^ej;T)5^Lw(+4=>OKTCjmn1XYWVGNFToI$5@uvt9SZuslL|38u3` z7p&jZ%FCTHEg=D;B5UJgZ1{04H@;Iy{Pn0Oph+ilw(cJY2|k$_II2{o(8{)IY%%^O zJM~$!`Xj>C5Jfz<`3nZrC=p3+a$M^u}~`MGK> zKBu_p?<7kPf5j9K{=-+%Ob0KzI!iyk#(B>}OEFKpwHnI7=ceu08Y}U8hz&sPW{Yk2s z$)oidnV;9`DNH2E!I#TSoc?r*u|Ge`sgWx#;=DIKEII})GyKo?k?GesohE@*Q{ufK zQI|gh;2MEXLKpOARI%Q?;(5q%*^qYTwfE15DLzgqfX9MC$IaK@v**h?D!)ng9akmQum*0HGoN`sQ?JIMA+i7{MhyAuZQe z0-ngweR}g9dO|`96<}2tcI!!m9*0&1#&}}p#Xs1%**QUfnA;DiE!SC&gv2AzK zhx?6m2L^E5EQ{gN4VSWhZ!4`%xBilENPL8= z^})IGHxwtQfBG?{W}F&_V5`0~KaAj-n%Q zvnh_^32XV;O|astbAQpHqi0cJ1*bJTlXokq>TrKrmBmuJ>!;P)G2gRu;85|Pk7k#p zL{YWJV!)PLuEXFTWn8h>G;?_t!q0nEVcN3sZ?CK0E#0ALcAmXoNbA52D}{X$!nagg z{UVtfOAEohZ(^v^t*r8Ki}g;|2H9qnZP87E{Tq*fWbta|x74v|8u(*Y2qSYex-1h<@mx3+YPsAA_yzc=SU|WsRwT8TiSr+k| z;2;5akCLlp31}=#7BPns5{;9v3tpkY9nEF~q zvx_dDyJPM1&*Hi}zGo%WMo(3Dw3mqLI6kF=Sk=tdXY$fuX>!*Eou#f9oWAcg=(^gB zUK~?p!JoNbs22u?j9w$$gHHv2RR==bR?m5$A6d^yY01#RKW;+{6Zy{A_9q-+)PiRs zyA=l&pz1N`#`T9M*FTcsc&+ zwX3$d&v^FdoGOe2M;K`BpNeno+H}oc$+K&AFbob!K)#0}6+DS${o;pytG==17H*9mqDAInkDe{tN zpAbF!@Q6>{f|HhTG4G}5$FS8I8r1nU=BR$zU-U>)gE}Gz`pjE)n9dSq)8H?8<;M^x zlXI~cj;ES=^I}O(d{hTWo&uh;V*J?8{NmF(+ud=-n_pyDG!h8d;F}MTE#jl4W2*1% zHG1%UfI+F@VG-8lWK)ns>w$pys_c^~h?CIA+Y7yV!rr-8moG?ICNF1y#sP6M_3zTH zlGHPc^MffoHaO@s|6Gch73Q)WP-7vYevdnE{_%x~C8)a;U+|NFAO(8y?gL@?y$`@C6Gsb6UIAQaclC@9XlSi&W~;-E!k$x=<2=#Bdf`Id>_i z;<#4JS>tM@T9ec=-sH{h)UN&quDVT9vuyN1p5u^-*FJv=TcOtaf~D99``2FKk}1f0 zwlNeOW=SVTQ%Xy}x`|t}@woCXfhrbRJ`*7cs(+1ueMT}kU&azUL-xg+iCtb!bdg&f z!RdpSeX2)?^{>Pp1_R1LhDs$tcThFPk)MU4_2C8qhX)%Eo`Wl6%|9xvu_djHDLfT5 zcJI<1B9km!70Z671W^A??E7E$tu+t5PSmo$P;W@*WAXLo#<28=r)HbpV&Ai0yF*sq z?kPrQV-r)TfP}PPValU;@*Ohuf{f>kns|L29qb1012P>1&`kWX5-)E$d@;H`hkt2jhKZajhGdYEgPv zf+z(m+Vro9r??v)PJ5(P!7S#>lw0+`-6HW9?wUAYoSY~fB~cytJA91>J8GUD2Gh24 zoR725pp#VWp!;gf9rpHG@Po*L2lgwl@&oJdB;xSpW#BI=dy`A7sJa{ji7+K6o{X?O z%K@cU5q`ZfT&6LpWO56bskVL>q@kzyGt+P8o^6L)A}C!A;jr|pK;D4|EF3n&0mTS3MlnF?2i{)YiAeSJ0)ZacObf`k`nuF%{6?$gvtwJ0+sdh@~8S-;Y z(A;ewpl?0?Vefor{bVx$~>OnF?@NZS*X$%&7lpDhvf z7au`V*$s})n|;&n`SvM3d?RW{7~Pey*_UihCS?j}cN!_YRK7(|7aB7lzCr7th5xoL z5?87fBp+X}WT%5X+mQLJs}6v4y$77I$g%aQtQo38OP+hY7KPQ8{6*i}2r#GZe_?wY zDRsva=Y2xTOHpY06HcTWSq zd3HtAOh)n|PmoH8b!+y@IB10-7ZEHD`b+_1fudn?Y+tJCxHz0^M!u%adQ<`MG7t6I z_*jLuK7mvQgtb2dSL&k0s7Q*;DrLfs8b}etR)}I@T&s>E;>grws}$|as)QFD(d?yJ z;hM5Yu+*=#RbOjt%A>tz<0`%*VvW>gH6Z!utNRaXJhN0=UA_^wLD6%oxv^>J=BG@E z|Gre8(ukNxReShWd2#>!5t`GsS1>;}2EKV9>6z7H+*69aUs^MNZU?<5W|c91ig?2i zzHG^aP`%gwugi5`Q6SsnI&Jl0&eeJ<%r&fNwpX>PxX}ieZ#AUA6!G?Y>=iI6t!vQj z-7U?L;~cYRKhdBuK3Fz_jKn}(@9+V za>H0X)P4KM0h8d$|IEXm)dC{61u{MSV4^kN0}GuCzbn^4G81@Y+l=gM0SwRic`zc- z32Rp6yxn+-`*i}$3vsQLl@Z)eLjP7x&AXQ|hzL0I0?I1fd_I2719qu-h04vxlshfh zrmikcN&*f-3wO3~!H1pT9r_*c7yAA&0N0V5-bEBrvn)(lCI-;ZmbPxg>x6Nb7 zvg>JvB;M{o^S%*?SWrTYZ`#6sp!T9BH;yBiqz2S%JX}_z}i?F?`$MHlSwj@%*=IM=Xv}Mn&=YMxlxKt7R?%Ek9O$~Z*$k} zarpwScv}^SRyFwl>}#|ycSpYvC2Vei;$z|O6Tjj|5wX7@A1$-Jp}d{PF8YpFZvcWmG0|L91W7D78VvErse@h-_7)H z-}?L8nV04^IqB1PuRJ;*Mz%Z4FaF1s;Bt*RYjxX12Ho?Vh_nth48_lz&|V4f%gV@N z7t8qHi2graiozl`S|7;zMAO!38XCHhNxX@9X!c?5{6dM28^J$fyvp2Ya!RQVX8_In_g|qI|<=1@) zYL_dyjM^ZY^Q~l?&!p}e#~#>&KtCj^3fd~!rr*pndM+6MldIRXm;Sy4ZNa!4@-4N2GVMd~slyhJ8WA9CwBVFKmpv#Rc;c|Cc zT9a|PH%XE0+s1Nt@d!#h*IAyjlte@zk6UxrX@{~830r+f%^$A$?6a%qo?atKlj}T7 ze;Pc)?-pXha?tTBFlpG%^0lU)Lo8vdL%MtSmJ?PA7O|0~MG;$OMk15So>-N-E9QD8#)6kkdkaGyr_EEuO0_de#4c+r!QE-SVKr~r^AiyD zfZpda&1AtDn>G&9pDdocUurFB_D8jJb6a@;9MoM>!z%^#Yze)M-!CTl%lV@C$gQ5o zsL1l{9;iaq+wkaPXJK)C@qF-+;7|w^9lCB&O&q$@dWrXJaasdInr+N1e;)T_`aksY8qIy!Z|?PMRf?ev80$(~P=UuI=};*aBe;^x&FRHJYjA7yjl5p!@Al9NRX zC!m@)z@=a+xVIBzxaBE}f>{M%ID!hz+^1G*zWK40QS5r0aXc^*AJ4fB-`c-Dm)dZg z7`T?B2qlW|ZVmSk5GK|4hi<_eEGX5?}&}9(^n$!DdO+N)bDBD5X@Q8<^PBe+IINK*b zU2R73syNZTanqpTI8v2AX~|lGp=hX91r{0Cpc}I#3>|h&PXa~*v!;L!6{(dR@@_l$!|-xUrmi#0UqUpnB$v z%8zA;Hkw6)yh#J^7u@Mu9eL7jYE0?Ec>=mp7WiRCc$T|z*O3%dMS&-;vw}Puop-(R ztD=>5;As21wdap5`<4NvmPc3FC>+O@Z!cW;azo^?hdA_*J;l+Zr*(t=DWD~q-zqmP zf4~VNn3rVhR>n|vf3K4K4o?~)FV2ybZN_b>Q$8=2LcNfSR2U`*y?a-x(I{etT79_~$_or{#9Hw(;7W_(r$LJ}>iz z^A|pDDf+Jib&VyVdFf7h{eIwrSMDzdOKy=UrYdB*Df-7%R!F<8&N;-oJ6Sm;dz8vR zc+9tGhb$(aI=cr|w&oOXJjRgkuIOs&csC^D<8SfE7LeShlZJ$6qNd&I3R zJMjexsB^BaoqOtnIqAS-*pL%fx4(%kw2-8c|XKW0XO+KXU zrk5d(6J9VT8s;s*1;lg)*0iGSY?5(}o^H0VxF^3T!wyC=q2J^uGLr)K*)sQLtO!3rw7 z3H^00`A)TXx6YjUs$DN+G+cY-<;m)wtsBnmZ1l-oVaLZ%vbAM0!OUSjzV%UK z%>1@yH;k*UQf85!Y4_;QR!jS^rN?>6{5Opb5-GAJ`#+Q+Tg&a&CvAxxZ8scuBA22m zVVgisrijf}k~NQLqHlRADCW=BwZ!8KCAz5g5VhO?ni%2xrz9l*c9TcACu;F8dB2XF z-PM}95JA#WUBTq&%Q+F}M$F~BqIKt_Vd2Ey5g1^Ow>=KIRlW4C@JN_>C%gzf7csJH z1x#}g!PqSN${<(@UD*yQ}OKS z;f>^mld~(W(U~Vkv3Y!vr|Gw?)aNIL3Z){4l#UK;XgJj@5zeM9N9rrCavSkAQ*S8d zktG|TYtQzeA#Z?zCO7^{oeuS%p(j25s!a+qlnEs7Uj5zq;Mje6@8Sz9PPn%2#m+;i zC5X|+Zsb}TV3*9=9Rs^X(cL4D2kbsxj1Mk-)ioW~b@8%r({DQnuvv|#xjlRk!l)QN zg`7%Xzj)1!=h^ujD#4NAek}q8CP|(maReq+^h1!#yNlab;XiO@W|j;&gyBD7bUPX? z8^+Pd;y>4eCX*EBlG^8((40f?F&T)=8)$n{}Y4Z%kWZIAi!c!{*04T{+NT zRvgz|Ux0h1oaKZI?%T1--%(%V-ER_r^?H@8V+i=9BATWG^Q8Y9kCS*`%++MY%W(WJ zFAljWUw|TQ{{Epq`JiHjr-4wNeO{k9$ABV6<;4`?jog`*z|07O*Pu?!T3!Bx0uq{% zsaz7P(s2{j3UuSbj9y9H@b7Q`0>)6aG)!aAu zXOz{#jjLQO)6Vm}4Pnr)1$)-Gu7+inoAF zUI-=pg$!rVf!w9iZJpFOl0K2EjZY~Nz_v&GYriQK=$}UON-E^tW#!4T_FaW0C^u*N z0$%UZq%wIuT|^QaND>qSBA%usPkkJy)Sc=i>G+tSrw<7tq37j&!kIosG6>IX&qn^F z;!nDJCie;9HN5v_QJc+Dsnyr+)Gpz}f+Ovra_(KOR>xC}8I>76I=A{iO(4DDl$7S~ z@DD03a+CL39QcF(*hpe=_KbY>OvcI*a+jB?9g@dK(SiZV(2Dq$b^+pK>m(xAGT_be zcGszPGJ(S7i6*DM=a~1-%7}dg>b-vz0@tG3k@%B0p*uuSVo~o=PVB@Uad@~8E;oPM z3&PVo++kTtM;Fb@B$zOmr`=(6WF7bNMtXy5O6xYNVw6pC6((p^rb(IMWkft520VQ$ zxqND^)inD(Rhui-RH!6*Gn)xib|FNo&g&rJ?YXO{|9d|u=jJyqFm#z1)6&yk-3e;j zQeH48LtM3DDjq!&jJ2itTMlN2kvr^tM?HaS8BRAmahC#dBi&B~DjD&`o2I*8`1RKs z%ZNOoVQJHk8I+si1kG2xob{?){~;~H5mRK=qVI4QCBgxlcRG-xc7TL`0%imbzq=UF zf{JZ_xJ3{{Z2PdTjty}lQ9+!y9PiWp?C{~yC(DYN_bBoz3x;{pG}>0gzjUPs(9&iW zm!%nv+~X645*EVb$a^0|bd;7xMf`Hp-XZ=!;DQKpezi6sVGb*~@9YSZ9ZpcR+kzl8 zBwElSvtxgo12$bEvZFNTPAvwidMwP5sG=j&_h?sJ+UZ#5K9AF~MeyLCt4Ka5PoiR0Af0|lUD)H5Q>5(P z>if=Gs0=I|o066W<2%iqQMyINC~to6KhR2Bkaa zBsExKfk`-k+UmR{6ueX~@wLTVOTfr#~Q}73T+@!7PrOFE9;5Wv-vVqgovL3~CYArf4!f`t6^OyHpoS4t@ z;EW&ShUDZeaz_uTJ7CVU%k5c4*zd0MPiRAV-3mi2eBzEo223X=1BCZPew_Q;osND? z+gy#p2zz|&{o8V`49DpByeP7=7?xe%e%ds?PP@{6sO>qH>|ZeI?)t+W&GrkQ7|nYd zrf-fionDC=)IxC>ywSK@PuxPbm--A*^WVxpH~X!(=tRCDLK|^ku z*U)U@5#q4hLv|rUrr!Oz%mL(Ws+k%WA((jMD*KNeFxJ-bAM%`zLT`3KCpmB5X%_Ko zVkqE^>!;OyQ3G(!F5riT8#Zv%V4j&w&PKp+d`2y{IKmw(Z=X|DsM@Lx*2Y~iqRjoy zp2?xKSIU94DTQuwtj@XR@+{h%gKA8u>@XE=CX{(WP=XKwhjNgEhW={s(Zl{y$(;Zh zi*-0%%gNb>x&jP0i9#dP-fS%vQLERr4}No*3EX*sBYo(>QBZFy*#Wh?BL)2eghgfq zMhbz(-Ki_Gn1v+FIs|Db!aUOzeXb&6Nm8LutUrti6*bcdl_nbekpnCHT=F0Plqk55 z=W<%V_Tb;hnxX-q*wLPYouePLur;2W=KH~?R~!NRy?A3#>(U%$dAt#pzq-TRT%ULi zZ>>8uXzG;4tce1zAIqZ5gTZxWnmfw}02>go>`NFbH+QPETM1tGy}V!V&<}ZLifZ68 zYV}F39`Cs&SNu@hK&@_|`aq9INH-4}S*RQnm1Wx@&8tI-+y8WbYh4}F`2cl7kq z9coAeU!)v2)$^nyiX|SPU_oUEIiG-PT#JlIb4j706hN+>T0bMo1@QA)m&x2F1qb*5 za<pp?Y($`gzU8c0Q*Nz4 zn*iuJjHQS5#f4tU2A?-wK6z>9XtUL4!pE(9C?9=*kMPQKZA3$cBi49eBV$e)ui(=m z|0aOblmrF%)Igk>5Ejzu(7|Rfb#!u3JXTb!AqE|R>S7&sJh87x-f@%*NkNl2k25Z^ zHm|3-{6It6bWJ#*gpjAPQD(hXnDc?gtKABTw0f;8c4Br~gPh-%jGvS{Y-;lNOnTw? z;JjHj{w>yZZ68Ubof1NbYooZcKb_EYn`q+GXfBpc17>H34Ga}RaJ8&=j98@rgLNkv z0WA;M!{wQD%HnfqcP(P`0=jRUmXKAI|4)~5_2Z#K3k0?gE6X5zOgdouRzWX#Y^yYE zH@~qscxh3h`d-8b1*!N>`@1Poq%p61Vg}>?OlP!nbrZseKvxqC1iJ(0@a1@c1I_us zq(Jq`hgC%~yQ}^b~Tp5U`FHERBa2qPU1Gbrf3T+LBDZRfur^`6Y!wU=`2Q)KVSs92&R%@*bYPozL}Rob*+$9zE^? zuj}M85GDa~alA2F5>!H|g6tlB+g<9*Xmr77pbi#*IU?W`k@QRiC=KNSVaTe8gtyJq9Vd&uJfOr#Jb;;rl+UZg8fBbj<+ zsb@ELq6SrVlhlDJ92nx6fIc2k<+h3>u~%=tzKc@jB8?KR#nZ-*Y^k=F{Y(dL(#^FX!;WT0s-JwQ-kJ>0CN1mP3fA@)P zdc(k{$Uoa^UR(8U(uWH})UBq~j-~2{B}4Jw=6GUpV2>n~g3t#vA^dpYLWK*PwE2>VkrR|cHK&a}MZ(j0QL z`FrJOjoquekd99O=XUYFGiVu5?AKuFA<^}%1@DWxkADFCrW$(@^_k!gT8z95UpYPy z^INB|2}5o9~X_-(f>ac)#aRl4hNVeN2*syMzn2U1j`*xNe{ zzL=K*6ISk-+aXOvk)DJ@Nxsg z4Emke$acFa6QaopPG5j=e2sn8|FspEq17SJ&4!BH7ULPL220I9d*A*+KD+b2UAO>k zw8OOo^g*fCN@C5C$Z(>37Q#W*Qis@^h)jI)q0`C2U(tP4EUR>5(`_oMCQxN^f^d^_ znrfD1h_a-EQMw#F7)`)yBte*=c6->cD)$2OFij76r@JF7s~{nj^ERWfH1 z9rN;W>!4N4?+35xyHpS6L9aSzewUavRRr#XWqiZ2>OZX+7K#6MdWJ zT>pvClF&I8w~l&safQ*OjY;)XSyW|~3?}AfDb5vO*YLT&jo2+}tG)yD!Ry+!72Qw& zC6BFqp!$SPt)bO^TWB!E*`3Ex=HWtV9eAV#-u;0&yhr;p80c*Zpsf?j;U2>7+x4#e zZa@5`GoDAYsQE(Ot@qz6aR4tavZU4KXN_2nO84?^AMUTM{`b*dOPL_#Nn|h*Zg7Z^ zqvb=|=!C%{RgQFAQeC|zXuDstusMKJAeWi|L{7rh{!5wOG1~)X)^`Q=;c_O>QBU<8 z-M^z%h2fN8Y8BfVN;-wC(+o8iEApK~mMF|w_M#eziF2Wl!FA9CP7tJO}w>CD}vu#6mfegOX z_FO-J>Ftn`0^TegEKQHsD7Jk*x2p1VuTZJMtqbA&!H4_G_ZsZH>`*= z2E-KuXp(}X6@A8zy8IvpGBy6!v@qZjlm1OpdVA|I(a4Xq{kU|r^r`;OHdxc}OyM-( z2R%}wES%?L{fpG%;%_pN`|!|9j)Y#W2*p4F%ErRDc)VZVUd_n1jou|pZ!i%SJ%8%9 zLTjy+Gs}z!d4Hztvo7`02e{@CAAHY0#1C`HlQ_SqMLt_nh;lmZX||?fsK{~{lr0N? z@?m-j!@Ajyww>AG>T*e*ezq#gUN9OIelXA5LAE~70k0(FFu(kKanRz zk()M@6sBnqD3mDV5(InEG9TkoAWPap$AWV2I{#t}58%&wvwvu;eMepUH5=l|IZ47# z2yEN2T0IK=?ieu=^0D5s(*G9~eI6g6?n9xe5eBYV#k~V8Z^Y z3GP)x_?x0_WM_s11(KTnxt`XzDbvQ{5I{~CO)p3OXwNM)2dsItJ}*I7A5Q#oii`ID z*+)3outoFI6vHR9XMPODcP!Yi?-~(LpCeJ2bZTn)0Iay@S8`VE`*7S8_UMe(LIe8n zD37iqNwL8ZJjRVDA<@`=zNT+R$_B)c^u$EHP9Jp4*j5`E$GuUa`azMKN* z%0!0(ca46~MA|=91Pa}}4R`{`&c_Htk+vLI(k;YaxmJhMpwx)-)LuKyj->ei^rw>@ zUqPiK&ir!Xc~bM(8SFy^1tbsc zPNhHEKFyt$iEtqG$A9mX=Fl8F_gpWc?G1MF-sNw1tbDM2ue)KvaqP}+H0s`R z5^s(xe#JXLo{{{%jL~9B*&80sNx=m*EdPlEbnlSIE3tLkzKb$<-4%-ObV_`jh(Tp1 zc~yNRPFEhI#S-M_O%n);)DF*AcGzKZ4 z{WFv(f_CE}RzcAi$q0^;56XGVp?$ZL^Ff84Nnkav;m8OP-T=E_g`lRfMe9Rz8Np&H zXfNb<5V-fNK!-x_28|Nfrra%Wv_sY2oZ!_Sr=3F*>1nrO7wR}f9=Y67l0zW8J5eDS z-oNN0%&lG%dnMT2R!%RU5zl@c+0N+v;8-TiBEnL1lap z81J+B?4SeD()(kE7E3#!tC2Xc`1aung-QT6I{Jdqd3F~FOG!r6MDvP4!9V1gw)ZsZ zh8w10k*15^XV~t!(!{xoPMLBBfpI@-vJyN?v?ZXCTWT6z#*6&v?})!bHMQqXu)hRH z#1Eq9eh-kGwD9{Wk|gg=1Cu(Kwj(sj@l7!m*{gp1zlC4(hP{ z7|kniw>xu<(%$n_>z6@(;=@99m{Jr5mG!y^UloO+h%_nEX}CqEJ}h6JYKV0`CZhBN zBJi^v~?izYq-RN1gpdt$qeC`~k`VSMIJ)=_+RIX^L#Un@fvJU zK|?7?ePye;L9xLGWmo<%v3u_px4EtRs(nE2OLm`Pp+Pln)R%N(I%P3hao!2IQ*IS{ zN2sOfOUKhZ20rNgW*_{n)jLt8QZp;Un6K>yFvkXa_?F0@U-v`izxDV`K$}~Ufu~KK z&ey-5;k-ELv@MEo)ATzpz;E|I`{(j)_Ct`(tjKyjaezX;_&PJ2P*$=Mf|}dLXVOE} zuma-k-hjXr=Y?{cp`>p;`YVrB2;tgL{KX*_84&EBjO`>%<}n%sq`H`+8WwJ8n-YG;LkW>9HL*nPOD8^5q#fj67m*~ z!v=ZiVKe^Z@xn*F#NnhTF?pHFuVTLP>JW>Nin2TcxW(aU^UoNmXp|pduly(%0{a(lhpnUYbY0jihi+3;?f#S5-e1JFH7&!q7f=;Asj0B`7912C`Og1++O5T|R5soiT-)D4x;TllEx(Ql(z~)};PZYUO>_GHZDLqe!rDZffBh|bE zWAiv-j@ZC_-k+XbS+~~qf%R5Kcx=X35yG!Sq(NDV?=uAc2F@*CeZ^%sNSjX*qYok< z4R`h2$`sH8_`F@49cb_abUO{0m(&0hq{If)&P=CAT{#fsX-V^7^ONy+cb@NVgvOrD z*>ECixZHt=ctkwTu5$$XTeblMZ<91h+T1joI_RIM3qmBzG2kBn~5WtmSd zY=KbXc|*Z8~1HL;~ZkO>oHmK_Cb{7y2>dn844{Kb}KD-`SpAkSh zsg)9`{L!1zY`>_6I^;nWjhRYlL2#H@Co+V2CqnFcqYELh!V^orDj**KB z$~G4NKJho%uO4rEk8SKu&zi`zJ#>Qg%$AKeJ#$cT!hsb-+PkTecYU%;v**6-66XJD zRZKa7Y7|30mM-Xx_2$e(s^(%;M#Fpkg42PXyPhFtblbY4O=}7v!?O+ZecP`g3+W!n z`BXK*7^cC?%EVOa(hv>@Taa*w6HBSC14$kFZ$$g)+wF+QO8_|Ndy6S>!*|$jNL?7O zG-IVO#I)eBW4UX9h>WdSG)7xQFfE&Td6h-^e3@Ygj$VQw7h$5pm0!$;1`(9WEv-*N z;P;_{YiFwJxxxJ5gH~IeW~DPBlLT*N{GsPG@cubdV=LMN>B@}jxT(OmaWy?Yf0)xps^QYrpC1xPPy}|3pSC0-Q zKNN|0Aid)W$s*Kxzl}RpqrlNPer#x)N`a<41{hwV!X6kY`-}z!sH^>~9ydQ;u=RHJ zWsuCrNIn$E@a*YRkk`HV%ujiMtaIx+XcH(%ZS^D_(@~+Q#9HKLkBb2@p5-wNueN=Y z2La9|!Ib-=OmIs+N^<24c;fi4uwRCi-fs0#L0?(1^&`Aqn!kqG>1xbYjMku1JhMQ{ zwj)imPl*~OY(>Vg!AZLTVa$cl_Q{Z6kBxV`9)H3O*PgT1kX#Qy#fyfYIy_)N)hpFA z4cX_O8;S!GMKxc0;8JXhzA;RnN435OY4k7ev?FpT58ZJu#!_c7KiqM_qs>&W|8{pR zu34tbvF|a?x%=?E3zx&haH*){6Xnyd`Oe_V@Pg~2l2?tx}uXuPlBvq&;9#83P zyE-6yj#`9DwQgH{cQFaeTC0k$NK2)dZL7mce4Ystmwxv+}t&>?A|*c09kf%^`hjX zLs{tEPp%S@$!+Xpxbd|Q#cpmEE&4F=w8$#4g6J~RqGrP@HK(;TgQa3?+W7-*_5`B$ zP=^qf{b2+>S{F-QXiN3-Nc&!~Vl`*;UudghAhjXYB&|=|EOr)ozF*DkZ7>h88l3Xo@Mxq72FfVc5D$NiA|{;EpP z7rf5fBhRn;e0rR2^qyTFv&Z`@-f$Wc&Sw9#!yY?am?bk^B*sP>x7Ed5SSy{?-R;Q0 z9@dH;s0Xef#uoaU870}IFP)cz0tNmqV(5R@iKVC| z(2&Je%VYk&C5#yUZk;p!UeCwr1Nz5w5z!WSciWzDERgcOt)uLPFzEwC>fnyL2jJT9 z9n*|DceD>@)BIoEuWP_VDinJHpi?gSifz7I97T~l)Jes-AZ1f7R!5GQ#e%>~-W5ZJ z$4nnyBU0b9|K^Q_0pMGr*_XWas05sH221}1*$E=3)gmH<{-ky5*fSGYH|ic_>z|u^ z0-_rz#plWlJH2;dG@KU}8nWtlNXmiM>Fyl1N<#;ockGA%@Mz#JvT)@TqerJqM^~SM zvZ*7&JkV8=prJ0cjbmclVEC~2_Y(^H@OwMdoy_C(;?o^$h85IEJ|WddCrbe_)Dw$! z&W7smUXf@wbSW-RPp^J#S~ZVpe=Ej(CCNa|Ae&gh0`*gDh1tbVLY7t?8jYlveD2=# zUSV)Qr=J0&)AVAlbs9%ydB`8{R1X*d5#Ha-KLJADA>kfL2Zoy`3P<78*xU+Li{|D5 zRA6Z{>#z1E!PAy_@Nj2x&ndsR)mt|aj6!LTEZSn}* zlAaEs>=-f2u$5?;QlfL!3nE^LWWZrxzP8?n|LUG#1Iqb6G#gJHQPL+0;Z^Xo8t=k986iw zz(g@v!0k2QN+-K+gv=l>5i+R#Ig+Cf{yfO@R_BX=>!S<`RDN&sdmo&r@BSmvd9iQC zP_$xP(S^fU;|uSx`!5Xd>V)qJX4dJdE->D`Tt+UZr%FxVk5Wvet9Wnoc|fqU^|RKV z`x%!freN8tf|{w154%dsWUZM90s<$`sFuS``qIFeUuTFCdA5 zJ%8FjLC(gtnD?c#^YNiu^4*C$!c4S?H}p@Qb14dv>S}+rT3ptxY)ua;|Epw|9v_BEk)5BYf1j!<)*`RzR!xl*FW-PY=+Z!L>_5D z!hL%>&je{wL}F|M$l8YoN_amk!~g4}g2k1FL4@zQdqEOro*uilHEKJAaA1pqIwX$y zEhr=R{q79lfponT$oDHjOlD29#bu9OJzx}~{c+AX|V-kA1f?kUO^$kLl zxby3qEX#YpBxN|^zN28E#pCk~`&rQLZq)bbTqPmHvCst}mK;{QyTU2=PTOltAoFt~ z{wyrrB0n?t7w*1v)bloE_x*BK{Nke&Wx9nu7Lr2op11SA7z*cGV&Mj2QIC^P2EoVY zFW$YQv}d?vMcM;53HkYZ?KNmpiuU{&Cy>3wf*f)D8?e*n>^~lw>+H>UDz6I+ z7<`}0?|B9o4Q@kGc~$d-M~PA)*bbI?1Zd8wJx?ge?h}$MJOg;o8Pv@n!pQbV19|c{ zA944vK`W=yU7dEj)^~zB7uO7fu@pQpLDShL+%lifZLy;F(`{1W&vYNXm3I@yx zY)8y)q5{NRP+thi5eKQ^TCgwEM6fUWhhi%}n0Bx)&wE}?)lwdw~wjR|U`A%dcda^$`L8)GLomm*E}3@p+$uVE>E_^&{VeotIkg zjyM?mp2E1`UFhJgTU-?1?(`KT=5;B(qy7VZ^6#=}!CHOVlb*L0Du>oiFwYPNYnKW6 z*e}Vf=WjGt-9c}>r8@Ko`NUozk>|Qt-NHyKJ<*M+nM>h+Q-Iz(Agwbxh#5`B#8DR5w#GqdgGm?pL_mvq2 z(mCh z2LML(I;ul7H;|>h`wYhM3^X0_3k5B*&{S)&_rR$PZCqF!GFCYzzf2p_+Zx z<3mSD&n#v@qw1V7tCH*BZ`110=5-!O-%4TgHOJ%%q>v#is(ofQPw@H!xT=PtG~oU8 z{8WxNA=NVypVr4Cn2Z(FRN=zM{;PKV-TnA^g-?rYv3Fq0Xm_k>eM>(q{X3Tc>BofB`#EHy(!XI%MrJ zd%sKmp4q2YwR-CV&K_8WOk0%;+m=;8r{nKUS=hf=lfPj5QSIYd1tgB}{xu~2Bd)^S zud$JaAIbUTemGn@#?$pt_DLFD+YpIC#Z3Y+sBu@-7-@Z<6{~(!{_O3M`SQI!GQ)5e z7DMGOgG4=dvdOt` zwny23o0pVUsT=NNKmSP$G+Cs(7!nx9VV|3*vEz9$+;*={NBrx(#aF-y*1H350oIX6 z>HN$mcOZ*K-%K!ds$FK{wMQ#q)sy{ulbdsewa{Pb&_ATe zE7NhOtHCxmw_<#H!6oEfPxs@Sh&9`g8dk4Y_Mr-N@aK&`VjsEN;q`=*zg4`eYL%JG zq~u~N9pve<`aF^Vq|0KGyU#^oT)8ysIbHvfCyX*HJ+Xgcp8~qgdh*7jX41^+|6dPR zH}aw0?72Fn-#1}g>8R8&OD|Ph+?X%yQQ=G^0B$5!XE~RsqH_EzF&;Nq16-VO!Tp6S zP-PEZ0Sb;bnk=uQv$Ne=qd)sx6HM6c{mRER-c|Lr-oWZW=)|=Z)Rl+S_aC?P^ ztU+#=y$!$msEhmEaHF4dzyyPSsH8y_?@e+ z;(~JxYa$N%Q!D?yG0pjLlq!Z6G)yaa3tl!0T4pK8A7DiIa9sfiU49s}(+Ij!1>e}h ziqfil-Y1^(*Ut|B80jBRP>}GwXmw-7hmGz|*FRcmn=}mn16^!?JD7f^wQW&u zMc*$yX}12Rita5f8_VGzn##d5&s7V9(`9D*eOf#o91t1P)@K1o4tlZbcEDhFZ_QiE zp@2rd{@(Tx_hTDU7x!VG3rX_t1!u1^%=;c#Q{Gmto9@@*c?D|RWzakI+o8Yf{uYo} zLZf-}UflnIF{@kDt6vM1QPa=RU7V3&ag)nu^FOvmPlu-M)x8r(xR9fjJ#Uf6eI{An z9R56moBu5g3%^C;(vsd0nt!|F*3Wt9&6jVNh4Q}$>O)6$z-ttNtc8{3-bG5A7m;e= zOGZS0|3SIYaB3p;imgt65f-@eufp6z0A2yLBti(t%h~$pi3$Sp0QZtzY<*AefIzq$ z7C0dSl|tI_D0muQ1a{mS-mn=z?K7*lw!AnJzIvKSO$6JgIlzoHTjOyk_&c0q-fZc+ z;rko#kq7f&-n7l`G|-i#_MEFmtvXudNt+6q3J-gB#XsZ?eim%NI4}pG*wP{hx%qLi zh2+&d9TadC2k6NA2~gEmCq`N5c8_u-D|nt6gVW5~VaIt8$pkP4e} zn>6$_V{2otA=jdt!H#S#I)^OVRn`N}wIC)NpQy@dt~VUK;3%3$ff7-`{_SjcUW~)Abm>)6(wGVYn1wuzR zI;@gZ#8EhUCc^&u>!8m7G*-QpJw=%LsR2N9=T&0PC^fIAbcFthst@R(dzhb33fijf ztr30*pfWap!gxjOTK)JQOGxIiNu1mhtZNtp+fYs{lM!!!>IbvVLmnLVIQfktW9+Y@ z%l=3c$2I&*Z1t;0k7&zuCKUUFCTZQaYBJ6hq3?m>6lLxpLCLbr`jL%oddDMjw~K@i5j;f1pmn!B%r`?zcl6QB(yAesgsZ0 zt*lXtYE69ef)(`ubZU$Fe)uq=zhRC+Y)8$+C9o<&t>QM7q0=pZ46_Nm^0Ce_X~Khm-0#Af>h!Ah8wD zyMaGauPEVrf4#ro2xEILwCVoxv5VIE!`+XsX(IYNADk;gAPAo?oyJzh5L=bx8?xI! zYgCgv+AS_jW!l`Z086WCGP6-j8MHWsu-JBlRcSo`{$L-KC0jv2N00m%;Dlv|B*xd7 zq3BD5MU>V2u;)z@4ZKC=c2&Q#m-H6fj+%QHJ(2xa?W)>uWHxzVT049YEn~#-i^UGt z#A1PSsqc@TwyvBg)ofgO!GpR}p|7gBIM-4e2lf1Gbr~qd1J*!^?I!*UnMc2+ncq>+ zy*v>$zT`374x4tBqXCodPy?})sGu9B)IOtj4hMieD`+YT7kVB7wC4j#)bd}?+C#n; zC6x=s5QDuR?3mE`aPgF`b_d6;ov9sAUZ$>!)P27^R1MT`NJ=L3rMs5y-or!LB_PQG zJ8MQg4f=o@ANe0(8W6`YZ7#a9nF?P&!lha_z}CQ#x;6O5KA2NxV!IkVA{6rK=}pO?Qsg(~Zu8 zqlMcaaa}~Q7e=S^t2TVF9P7LvtfF;Af_^!kNwlBGTRsHX`~aZaqA;+$d89#~SWX~NC2wb84foMfE#Jd7&^_lL|}vhMp#>cpaSLPSZM zaR@wBU>hIO#cxp-&q?pNtrnej~y{@wG-o`xQuKppnH~{_H-)Zm^ zw^>sgGV<$SNNlbC#(8%jXC8=9`ImmAG{sQssLR^L(sgU(wT`*s$baOnhf%lIR%pCl zq&ad=*d?bFUX;_#9eC({<_@_;eQ6_S*n)2lz()GDUurvM(7}q-j7`tJ#r^Tg(C-Oq zNM#T%Hwj4NFX**6Q2nhRdB2k+JI9MH=;Nbugn=Pw$M?TN@(r}X>1+F_rOs^9H;o_+ z>}C(;0Vutt_+M}Aw(R zEB55){~_+ZqMG=>=+UnQklvI~La#~(frKg|9VsFL5;}^~L+DlM5r`C}22epjIwBC7 zlmG$2fbpmni$;z6n%*yA??0wGO+uE(%7e6NHVBB7>G2`3$ zZ+*#PT#}G2Yq$t*YK{k1cT@%m!H;diGm3zKjrGKg#V@r>Y?2r2!HKL7`>fo7QE{@P zp^FS1A8}G=j~woCV(cH+^saks!1B#>5d}O^d9q!uGwXr|b(^n;jucOxmW?jOW^{Hn zUVu+%z1(=tOFouAm|p}LNaRahj}(8a1x0^BJB_XpYedB6mtU|?e>t6DV+vD0;}xFc zGAwS5`t&~tnIp3pok!Pa`!Xl|75YLHfj-kr3j1_l_#$GRx=|r~;;!IZCGGKdHz_n} z#&Zid2I=Dq<>}sU%zRKsXfQrG`S_u+%hrO<+jPm6pLgFvnpNz#x;L;lgWmWHA6fDV zVQ2{^-$;G z`_W=m4vex*a*tx?->;e~w~rv}!y)VNOr`h0bTrjTk$kbP%b-S#>%nf2U_~D^GN+4b z3#V!oG=|*06}i#}S7_#+K53IeuB`~H{=C*oK{-9)0yPix_^Gdu2mVL?R_9yIx3c7b zv+%5{91i1P0fp;ZZ=WAiO0MdhsxQ*AwBkUAl1YJ`msx~C^RL{`)URG~_~RZ2+IXTo z6K`VTl?y2MB|!-6maE2(AM_psraNkfxI@8@wDAKdYh{MezX0{f3(<>k^~Fm|roa&_ zce}-V*&B(`>c_DKyCFWj;3<52y#86-QuHeu7 z11C)ziy6e*D>f5v$Dp#3?4;0)VHcI1S}4546J(|G##M0(s{AkjY{y3%uFD;`c$HO2ZFPnUZsVPZua-a57PDNO?wv#~)BzOFFI z9*GOQ{6Op%w_WTMbmDQEzr)7)^KoJYfo|x&p_I6|%Rk1^XV4jmAfe8$b()ENqxJBY zY$Jc({``&2&Eq{`_FVUjlkrd|U)OTkNl;SLSK`Bw^IY(7HjKjFhImC8q#SR&t6@#u zjYPB3od_d)vJr-3Z$nV*lo51cue8F*u6}&Z=Pa>U(3tzN7{xs^3Ig{eAMEwUSxW8a zm+wY$5MH!7{F@R}$-rHJk|`z?ICBjara>OZgL$tA!*6P8p&`U4X~{m0Hz6j#YahjE z9|G$9S|&RuC(QGV= z@%?Xv_B=4%GbTO*e4D_B6^0+yF{{l29!?LUvBvnSA*T7lM?MELKPlechgvMf8d~F} z-ht~CU`D%Ez8v7y^#+&>K+{YJYC#+4*;ydolJTEi+h>r0GSX%{GPTZIt3;InL=%() z0*oZn_VMeez-0w&1xZfev7>3$q|1_iQaF&}E%T2S)8q|FjnXt{CTHSj8GB!{X@`Op z#@nN2J=SR(pI=fe$-&X{8(&Z!{SjL=yC)xnDwtwFQ+yEW2;c@ukSX+dI-Gy%)D++? z*fJIQulx^I5o!-@pmy%KpsEXqhg6~Tx-R{@O}+*{Jy~huBRNJl+WvtgS$`a9UIw|T z2_$>pnoe!>66!Isz`CPuxNF}9f1d9=*4jh4%tfQ2o{u5A5LT>*F0c+_cg_a7IBUZ5 z96Cuf&3;$;bz}{_Q}(5^WvyHMi3Fc6h2a#QJz`_viQ$jgz~S6fRES3w;SX>wQv&!( zm~Q7cEN6-tT-GmGeH{@p6M^bFIPLexJ?vFPXmH;>WEp@XCHx~FEf1cMsfQI&7e$ub zGB*kCsyTMJ{IqLhsli0?Obg#p)hq~QotE;m7u#%`U6rZxHL+_B;pbfd^CTtf3Tfd~P)ew1Kbc^~+KtTPe(^FxK9PgG`hM0e9bk$m7bh-CApKySbA>Nkkefp`v1qB(`$}X_`;-{ zuZN<_h4etqm1vk2Sobs!H-9#VrQfaTXNt`;%<#x2 z_STr06u3-->%#Q#yTd&wmbKsguVX_mHmf^vMPHzZQ%hHb{%}46C8A04^oL79=hIZj z$h_WV)II2Fue$(d>2Mf(y5?0t`t;veG{FMz)h_@x*sb|DGmuQkIE5b^tQ1{$L-YSl zefRimNJh6pN}tpY9vb*g5T3nnf&F*ZwdazqBym&iy{h*Sa{DhmxS}EapSntjcaJyR zQV2e4tGCtF*zLQCE7}BOf4JNop62tmPo_Kaw#9pW0^3p-|vP#ZodyjQ?T01kPt}`h=AUO$fFj@uYhIl}ckx8&* zmb#4>QqYhhK0P5BMf@SsW8)WOqPJ!Fx#b&$@=3q!Xuf=p4fH{2fJESPiZjkpTc97V z!^Tel7Qgb#2C~s%VlzECdG@~Zer-T5N9yWM*wAOw$gTsO>K3kA3PZQbg5#fn#e=>I zQL^o|7j)r8a?tGKu#R6RM#xmu_SXI1D#$#_pN=ztA1yJa7f{CQ>0D-TK1-z@^1Hte zdPy1J0cv)fMd>YW+J%|B82#w7SEwjagkF{mwcssXi#C!G}e+^YtWG8z3#^2CiSf)tDW=FM?; zvHlpQ6{)(24XGE7Zt19rPxy%);;3wfzRrxDR1?D*zOnzFS{Fq4gC0ihBM}}$yjovp-h=x`i{dwMb0^r$%y8@P6T@-A97i0fdSC<#dzfp|VL+GMui}8`qTfinE?4gYr| zWq!|^7){QG{a=EAk+uI)YA#rNR4&Pmh>eY;s5q(}yQ!8>*h+cG{%k1mnh}GGl=Bnj zM?{{oC(>b>KB21JXOK^(1T2k&d-p!6J~XO>qQ*uz`v;Rj^@`)&I1M>AE(y}F-Y_6s z-UQbQm#1>iG$kvQ387P`q<=#FQDZfWZ#)%LA?osV&;UAq|0=G=%TUEwF8>**cL1m^ zHa0172CBVxwI`yg*sbEJCb8Yu{{5?!bqDwt{eQlnCXOuGxox_^UNVUlxCcx*e8R&+ zZ$eeR0;MA@BTl-uXA4{#;OfykZe#Vap91`5Rz%>(+dMfo=|F{_r7Mn2AzVWxm!X!& z$jS4`K@+WwNO`*b`|uZ%iQh*1e$2Xxf8qV?&~!q@#2ov=qpJDQz~<;z%insK)~TzR z5@)8Clb}>T-^gTrz}m}j)n7;1FU%CIz>NdgkrQOej$lPtV&)*y=-ZN2^4F2k4HA|i z0*`8jdJ*KZ5t{#JeoE?^>Ssl*N=~@l^S$7Lw$L{b zT|4}E9%d_W?WxGKGwxMX_`|{+{u{g1LWRBYTV#^D?MCGiS8nL8JWIo+9T$frh`oW# ziOM~(D+iIaOZXJ33iq@1S(B|&Og^E-X#66Pa=%iJpW`o2lhMGYXO@M^g!{^Kzr3jn z4){CI=W3-H=ld+66zXt7fq=BrPyzguefhD&k?9$_IFy+T1kQ#G6@A&PkOY0zl)IO;_KHNYTGZN95T z)`yL556V*TlNTtGeZF5DWg>2{P;rY_zs z-Ie~7w)FE(p00pu{!Q&X*dLy2_wxgbV|EFVtH+qj4}l&k9M8g|M*>A-e=yUZ>jDg-||%5PRxcg}15SpL3>Q4`dUfw;)$m0^RI>{Uh`k z3G2(4B`Lb~zZN}E*5K@i7ZV>go;W}#Fo~BscvTL%4`V?knJW(o&(8D_=oz{LW+#S( zyf;hFbq_lC`4=;A4lN<*AyR()&em{0)D{iy{*-}+LT386*8MH95mR7HmGOO_uIQlTd(-F%-wl(z0Y5xB5Hp*kf zu0Is4F8*#qtGo|6FYOX<(tM)#ZEE9j$ez)`N&2%AOOOZa)~H5FcvA7&RD*BKODeg0 zE}h3guRLR>5?r#K8x)zp(bsY@Ju6R)Ono#P8TH(?av+Ve)|VE(VF!rsEEUZ^U7%uV z_3~A8S^DJi8p&-wZ#dKbJ=rSH%U24h!OjijZD?et{?YyKUwc4+kJP^{O!Ra{if0B1 zsx+aGH*y+kU<9XdIGH$#&M+leyBPPR5H&zkzbA?zYktNN8||pkv?qs5FD_X(InA>S zdMnT0JK6nxZJiM%AaG)1kK>$qzK$4jGXU~;3h#aAos;~9p@c$&y%kmD6N}#^ix)=h z>YFR2_UaDaX>GPXy+^2tZ)!?EOp2nf-*--fY!kHj8t$oByc$PV@m$#DL2o6w-@5C7 zf6*?cqUWz&PQx77#}+^@;jhGBZ?aWp%Et2t9k5 zK^kKOa~MXYN7dO}a<^lrDlcOx{^`^xFMpwA0z1y!q(TzLM}I3M)gv&mL2_mFrERQ_ z{Aagwi^;XEIpnrBpO1TzjdCcz#6L7tL}1O|8I1 z2|W*)^qOqisnim#kfS>%N)tBNMm#y!))+OGETt2mRyy zr%!33@;co$|BK@0|FivGW6Dn2zH>~aM?=7g5@x&YTFb}{EQ-M2yVu|PUdO&cJq+O9 zJ9DwEb-D+sDM^Y-`X2Skg%B}^XP93Exqe>_i z?fYKz$P%@VkXYuxWQlo1_L=F^4$rPTt@zq4Ky6u%=@B&o%Xpyl{n!fJ^Zn~=@H;Re z$udz-W((_g)th*E`m7~$AWP-Nsl79$6Zh{=@`cZ~PCNs(j=DG)!aS;|UJgj|;V33! zeYR#+^P;#hU4<{ZOfJ0*sOj-vLNR&{>H7WC)jIaY(||7t5VNmW>fT7$QFC%>&>8T> z4{6`OcYb=l8LJP(nbVtWd|f6)PsylXW(ZM~?M8C54#~#sMvf3RtSnFMp<|#awWlJ` zFza5aaW_wBlS}f-sEP& z>M(^RC0l$M6>Bfkee~Jl73MbTo;Yp)&qN~4M`X80M-5a?yoMoS!M7Xznla@nh^gWHCjIH`KLx+%jfi(y#<# z`+&`|Vo&snRBmGm^LQoNk#eZvtfDdi%MbfL$fgIZ3x1@fXB9*W=VC4@QB517&s%KB zm=kS8c#9r`**+{?Efkzbcy2a&O(1wYFU#)=u};wO&Z@b%ibJzNMd{}^DUuz;bj@^B z5Y)Q47G`kZi{}$wJ0f?YR7H#VnZ-UzXLtjJUJ4Z(Rq3S?q!>pgJY+K9$Y)FU1*9;O zS26(*Wo>8G?-r)@2;9tJ`H?F zn4i);P#lrL%2#s#`XOE2vlx5x3KI7*@b)0e)4@YnK^xl{)~&v zZGk-Az^DdNN=a=7wM?=`ID4$VC^REp7r2ZRFmp|~WYRW>4tlicW1Zz;Q4JntD^G8itg>&=ZjVMSe|JuRNZ^gC|PV`T>9v-?u>{c(9sOp`8ADQ^LuK@ zt8j*pkBn=EDUg9VA-Q1Q{9Nnf|J1YgNWMwn(a-A1em*O^$b@!QN5{6~mMe7V zZ}y|?4P+3HM`t3)wv+P4C4Y@fsiN$_c;*AxHI=-nE>KzeRFNq?2_w&+r_;ziVV&{H zU-IK&$@2%F^}av*@&EDW=-Tp(e*a?bAi!O2prL4;cu@kYypGFP9yqr*nF;3|_?WxY zaKLRS1Q<^#Ai@u`HkH*vdmFlp1U()q{#MQLsMLX+XRX*BDPv5O^0EvJJrK>rlFobi zf464FBz1u{v&vK-EA=5+^5-b6X2a}_R?r+x40<%T6L)X2*b49cfW93XP)FkB&1VU40%N4&A*wq%$MHz7Q zTU^}!-@lKdnsl$o+Al877k1g! zZ;L|h+Vmh*gjM#S5m9dmG5JuGm$BQ;_mORrJIOE=u(D|Te?rfJoiau6aouo&~dLRFG6OW1mC0LS(3dw=@%zw}mvHP20P%FGtA-gPX zKt;ys6~3a=-mq=v9XNp?1;8osK~I4&h?>WJ?~F*=WxGnBAtW80tGMdN>{%%r7+yKE z#xD?vNnAP)JZi2j&7VjIzbx{oUdHWUj`i-2w4nNGE!gys(xVT)o|AleEE&h|%p86= z$|iS(A*1eygU$ht<@1J^{LhefuDm50HSL zAA#ohnAf!menni$|H*ULF2*jd+zOxqrZ?qVr7o^M!sAaDg_IfL`op8Nr@TxQo@7Ug zE4g^ksqO)8l1rHl5veA}N3Zihl73r--iQ+U&~Jf#Z&Sxn8yvLM*a`M0nnE0>B~Q5r z_qtZ`^8WnJYiG0>T6Yi{;J^^oM^#!Mn*3d}tZ&Q8ShFbD>@3EN-~z+W-o@fX)wc0M zy*ZKpR+Y0%yntL2BPsV&Ap*$BxQ#pnDFJRbgB6m}zfL<;HH}?*L9I80@lV$V@<_ z!)G6!I>0Vd8n)PPIF`qwoqtTbX*~=ydONs=m*Sx%Z0!wteEg?9bM(q1G^=sTGR4P8 zm4K>7JB7Yq5UP17a3D7~m$*fw6H3@t|Iv`ycqID6YOW8WvV|Aw6#PdV{c7EkrnO;t z^2Krnv9%w@Qpuf=@^rY%{>#^(@U+I!fi+^9HITeR0P@=~bwpC89s=9?-n&ivV273h zVc7<*36cG-^XC1S`yT_3?tkk!0&a6!+&_`lS5(QFqqE!XrH!AnmQ}Rh%ga)KcD4L< z!9!U}|FbwOmf$db!T!Ecsi9@Gwo{B7Y<1l|xjrj_P1!S=iN!wW7J9B$Z})v=yWaiD zsK$lyejZ4MHr(JSG@(t-8%bO8k=azuPyLbu5&!h^Jg$SRi{C3pO(bfx$OumlTCqrQ=A$Ar0uAvJmLJg5xl^ECtg`4J;g?}pD0kRdX+H|=_!B-_D;-vq)u-t)c% z9pPT>5l6{2^)>}pLh?h;OYxf+wmsIor)P4@9R0eSYPVJ5_qYh4Wl1=?`O(&C0s&%C ze?SA>ocR#w3Lq&)8A6$c^OVg)-+SFqqsY&ZD4zZj9$uJw00?g*wml1&E0(=(SEO-; z$3+kz#=o`qCNlS-42wB|<}TU(KWOs=>dvChZ^#$c+PZDb^P;%zs#UvQib?;~2Cf(! zEqjDwyz9blxoVbmiPf+PP_B>Ts{&cI|7w(-HC0xIjb;)<%kJltHXg{N+OGC#pA8e z&^Jv77?WnjCs&aR{Z5M>Y)hunWaD#UE?PYUQ#y?eyllyz>gP0gRyMI#;~uP)J3Mwo z-#YXtn&gFMt>9w}~l)1x8-G3O}eUyN33na3Z1R?tm=jYdE8Hps|5cZp?hNGub$X zZ5SodIZ>`Gv;RUt$mw?bV*7tsjC)Nj!7d!GW8vMq zv+=IKxvXJ#Si{^}SerNhnPmCV`%HYz=*mv5R#NPeP~0X;p%CBxf)ms$Z2fN4QIA;y zVy%svDE~{<0*r6}iNeKtZKM#S)OoA)6J0SL9r{djyXZxDTia~ct9JYn$R+GO<>bGD zp-aeLk2Y2};WN9*%!_sg-EW1~QUZRV?N9$J#{tH6yt;Y({)MH2Yl6;919GnJ$`iOeHX7Y37Epa2yAXi&^g*P+0ioo)j&kv zk0XHnT={6dYnAHyE5GV3;sCUp2l_&O^`*q8hPt_9OGX++ zWtg2G(rJ*FkGtE78={mi4Nn-t9S_HPVU z`~-Ho>(&=8nZb(MhX*JDt`S2H6sl5-CW#&{`Hb?gol%t#$!Coo}&GI3W zJ!lB)a2{}_I48qgTEQN>xa`tDdg zseFm1SL$x0t!*?wj}GkR|F#Fokb-M3Fy0)-c5|KC=alZh-u*+9jHyxYFA`)&>|Sr} zt6a#so=)~93L^K&cW%aT%a^nzeIgZ<3Zp;ij3{!CNDA*A=?Gc&mQmWpef~evVE%{H z@{&dW>SDCp*y2EIchH`z2z~6M{;f5A(t1wa9DxP`FBsgusVjjZD~`->qdhetxgOnt zL5jLnrKG-OHF_tuv(@zVo+85$!JYw1cEqzj(Zj zm+2RI!d)@&&o<CaD^)qUTZJ>Rdnjb24DP^$(!bWv146w}_2Oo})IeHCMf9QN3 z7l!_CTW)#FgS%oLBI31)f{q z>0|R-p%z@;K&D5)os@=rXXxQLS=W;X^q2vs?N!S9480}X1P5qOq)bg|8x5`j3G&;W zh4<2)yclTkf@;0y3O@wQyaVyWa23s5M;%Eie`1_on=LZoLxKbZY9K8Wpgo=h(&_iGD3$ z`BtC3wi1Tye7Fn%c+S?%n&Aor3{ln6JJYdHcGq2AiVtK8wP#EfDJT4svMR`LY*!Eb z7f#ayL=79Xst!Q<`HzL#3ytCT#PQ>v9RifJd#grMmhF!ny!+3>`F5i<;6PIIn= zhl}#S*nvUv#gG=nA;M2PXes3RA5VJIKTRUU<-QEH@2yiVAh(dreEt@~=XwIl)Oq&~ z5xAx~`#*Fu1cD5k)V7+wLkL0zxeQ`T1v6D8oQiZ}ucYOs( zI(wsAXk6uhEBODNfgp{V8iX&(BSg4({27$soK}Bcrj5x0e`Y`R?#ax_;j}@6{f<)> zVVwHE?_ttI1nQVqhy>G*rI$Sq!lW2(7gO9Fdl&X5Ma9W~)Up1@{|UNd{n~OkFYU0w zE(Gxs&l2C~O!SJ4&34{9b4R#@ja(G`!RErY_s88}olCu?1BBrYVD!LC!Z4{{b!CX( zy-$c%3e>{?+zc2vTG*vrx*uwoOITG5k1GRCeQ6ppgAtj-W3a|16A-7a7e+zq|VpJhOg~H2+ zEp0gVZ*Nj{kl#1jR<4&eL_$|2opn>H93yxoD9vGTwD3Wy$z-Hx#Do|CE4Rt|KYIg% z9DT^$(J`{p$Lx+ss{mb8+3Jq$P$&a&AuF2+Fx`lC3)5a-nJ7zpvG8noQ`=^8L2^F) zNMFLDV%L0my|$A~y&6CqjUjsSK*!{#-#oWM99(u$k4b7`50>l8thxFiM@Z=-Y@nG4 zY*d$(#c;7X3`zaR)b${a5QDxrvzz#MaEUj-lSi(3cH|<}#IWDKfRaEPfRz@MNf_hd zf>!>1#mT-GLVfO6(4jA-RGqVPE&tPXU%Hu-6)=IWo{!xGnlgD@=g4Lz@SzUs`C zBwy+d(aZ1Q&S>t}s6K6h^HV9lWhwEYXHDu4a);!XSo5rXfpLOLX@q3!$i-Xu7l zPl^J&{|Ml~38Ad{`M6C@1e$gGO+RJ^J8)_CMmZ?$TSyP|)W2UY83W4@g|@zP2IqmY zsQ1jXWT(Lswyc2_z<^j_(FpZA| z6A~q%#Vx~!0l!-3FCqxW1NlOl?gP+FmDWi1bi$V(({tU`f^@$-?dd&~ZCaCFZ779; zP64|z69+ZI;TeDZBo$XIJeIMZ-=4y=2X^K~dTvEv(9qb2-EF}sAPq>~v9T?-SZEX7 zZiL?k#3|>@FQ09nrR8()2KwCX7x(#ZTvylI&(*N~^3fX#1+BE4d0fMJFp9Ttvg?bz z$4ubj4?R5$TllG1@Z3|zQ`#nw@|T)JpBUEj z4FKvuzhgEeYjYVG`<^#mA^zdi5~Iq5TPupd_x;`4xJp|^Y^sy#tGx=XX-KQn-kwZi z9WA-^n2)~S2HdJr`i(y{!>%TvDY4h0?Z5f1c4JQM4NgAar+;Ymd^n5Xu7=D_xjyp) zf6GCTyzhJKAxxEpKm|lrQ(S@&al5@XOd7fo47Zv!%J;?6jzLjD;6#PW1Zz`2n@a0> zHto`JzNV0Sg=WIBPX?Y>4nu8Ydr2nZsOAFK-vZ2gsG4gL#zePEZ4&q~Y(z!%b2w+$ zGu4MY+RF769y#Es{=waih(OHtwmfWQjQ*=+VqsD?w~3#*+AOR&3cdr(*6sJ`t~le7 zK02?qQgLENd7aqy-7Ba-1C+|DGrR}r1(KRRD<3)Y?8S?Pg(0)>U#8>O(0 zRuUQ?9LY0o4Pnp1r;-3dh*Rmn)SZ$65cX_o1?nEf zz?083j01}Nab+-5&#U>cEc19!vdbS=e2Q3EKXEs{NTmAHTD{`DPw$p=J&O?83>oQ) zcE4VlkIawg-|_I=dxzcQwoA0^v_`UtbFt$ST2CqZl?zef*#_^znNEz-s9$c|##kVz zn=fd+Mq;n=po~}_+G}!s6JMD2$!4)y?5?0h&vhhE-S%?NU7$5ost-g*gPeR{~~oMO$bu>0YBwy;CFT7A;{YdvZaB-Kd;`MkisI}Ik5HyqPkzFv4N86HdM z5QZ@H0JqgAD=wciXR{)wH52YZe6wbG-z_~9B+`4{MI@Q>!uOQfU6 z0!YgJc6?89Lc(QUOz`h!(m|3C1yI5}O7kTYba!$PV~c-zNNZKaIy^ zq$+}2PenV3XDcLHX{-6s?ZFHt_pJ?<~i=1Ye*1cK{^uKOg5^V4QyfK^|_|YJB03 zz2Zek6SJMQpg;FefU2IrD>yKT;9!-3;3Jyjw3fPJ~k^R682zW;6KyjMg4P0embUQlwDcYk9K|3wz`NCQ&fEy{(fV@p#H75Os3EV<#@P7o1A{- z#l1t5`bqy|pN-L^HJa-P0v(;i%WDcQvlC?4_5D-E)ZXZ&ZD+A}*@ph)S9e)JzR>tC zd^(JHIV>MQx1yGlOFR527Y2&5*n5$5Lzpd4N=^VxPogjC?~_4%u{!N=zGGH847!&O zH5zSkFP82d4pS}>bt}aE)P9u5ImuwHI|he=g0A;YJ9!rhyvgxS-dT2!a5SBhZb~Tm z3lNMOghtYI|gk3=m`lcaW!t-V2RT+ubdz$r?DfDNGkLPrOl)Nl4=1O?s#kGoNu&Ncf~%o|m6i z7vi)&Zh@8C!H^e{f|(GJjM0x|x?1i%{z;Wed4s>Qk2UIk+-=r>e;e|6GlkHVPfNgb zy$$@PwBdn{Rc{j2WiBT0f;3*7=G{EzPbU5wH&IQaQA37vI}Ro{z#ZZ~lu4Sn`5wtt z+={+;L>PxW;~etsV0{9O9gR$Y9%c%XN8^*E=iICyX3ve&=1FXYBWoltTck!>>HMuo z`~)q43pR6NtQ=Vrc~<;Ux(9YUmQK!u))17^bqL6}u znGHxHCCDDI&QRaL(8lo#J-quc%^&*Om}uukAJdL!bUuBbOrv;rU0$TsztC+ul}1rp zERj0T56YUqo1ir9omU0S-TQ}Eg1aUvZaQymoO?iLGo-~h&}Dxhj~J*0#CEaS@F-;jB5^D0zS-PXRIf47!49Xq0_czH z`SRiQ&k0^J^Alw@XovR+xGJJl?O)M5+H!vNxO&x2KJqBoE8%ovAF05IB|K7t#c;da zzrC(9w`-MWk0Yq4^A0#_f5^oP z^O*U@ZYVg9b6IVSBF8DLty`Y1iXZ<=EYtylj| zBsT?ws`t_nlrZvZA@#{Ah59R1t-^74PTtb5Ocbficnz^YSW81uWNf7wJ_2;FMYyU+ zf-Cz8()@+AF?vLkbd@)dqfus}7^c60Xr&(`9VFt0sQ9Z~19o~(Yk_UAklLu1cqu!F zQmwr5R^6c|q``zBo$6OF@JYpv-%?Q075rtg@W?d^I<4kT!MZGi>TfS5I*^)wZ;;=A ztM9U&Cd-P)v%EIvEIeO0EpJ4iPUTx`SxT*v?R0?s9&YJLb?aJ(=MEc^{UkkvA00_S zkt95=;h_g%{bLmlZ8aXzdH211xcWyLzYN2<`HcZJR94lPI zF^vexbgfr1vHjR3-r@8GWs<9B9G?6;SGuwjdy1)IILw@rlt5vjs6kt|-GmEcVBLb=j8Bz&!|$#3q{qp# zE2vOVCw;rUP2_t(@>gM~9q|_h`Fj`x*u@mz)^-<2Q|Ayo;i7mCbSRBdweq?KAdSe@ z1!LQLYKi@qGt_rQLR0iR zZ^q7$HBi>Q)VF%wZeLp4$?O04O2R#}E98IQDF9_8J^DT2TC=mxr4lFsu@$&GU#8XH zwaOlQUm%OLj@4_JNv!v=$rB+`@Yl8+NG{zrWK9n15B1$JYlFDxqw^sL4U z#--4$_D}7;UO*S|i`P=6ZMsK}q?UehDg#Mz^fna^ng7P6d5ANn*0%~b=|kJy#GE~$ z+%nY24y{}77)b$%(UBq)+}oq;Z!)tXKY60tZVS7&cY%)y+rLR~cdb7Tcyy{#P~N!v z2?e2v@F({)z_YW*@3s!OR%-m8n4=gCpHvzaYDna#Rcb!oe#s;*As#Oyo_u#QlH3^8 z7##GPsKqUd=9Mdu_#^N8a?IT_?IZV>yx(W<+(I>kR98u9O^H2U9tSYPZ*Jy)Pi%+D)| zJg+B@{42g8O9<)C9`LY&q>0-Sh8I{cMGa?Ss4m)+zv8M;k5Hke4?DBl9rwK5LXKw} zwf95(V+Vd&0ax0b=fyo(*SYdi>Orb!*rGM@id9Kl$v$6{{Y-Y?!}NpVn&kFZe*-tY zv$N;^62A9FFNf4ecS#pMwn!AO5LpaCSKrgtTj^Ty?p&kQ-I^ws&&(xsmzCl-ju7EF zPY$g8stgPyEOTC4Qf%A#v3Ky*qEPk9)GY`|RfDokS<0f*8)(9<_$HY1p~LFHn3`aE zm$0wciC6mZLQu=x^)Kj!0tjD(#|OwdW3t+Sf3qBy49jRQ-onb{ypGw;yN=xB<4=&a0c;w;qe}LkGMDjD7x{~S3-HI=dBz9Qm(Ut8S~{o5zX&n z9M@R+u+nGeJ@RoN`i|kzXrMATZKGF8Q);9OumP4?ajQ0QluPc8+~@A6 z1zKMVaUo4!34qe=qBQotJxgDEOAr1Ie97YByR1L><0HrPpkMm4iYdgpzQBZ^$Iqv zPuc^KD$NzX%EE?4j=;CKBK@Q?PzzI!IAYH$`?b>**cP))q*wFiKtHx;g&yWR2t`7X zYAD%165Deq=;WWLPG0orz#WvL%Ai5#-sxs78gG*~NadeUnTm^a0?i202y7Lyr>}f9 z7`R22@0W_$KM!;)(BYlvh7Qwr1cECJMTtKXNs-_95YPj8jSA~v2djB5r=nQ&gDjrN5P$tODHc$Sg6w=%Zp*WlLPV!8Pb@=@@ z^{;(hsVJNe+&2Xxy0OZ0INaUwc1P0f&sM;zB;+JgpEUH#JAcl2F%@thO$@Pc+p#3| zP$bBiG#gbtwpw!yt|p1Zq03 zv)23W9uJ4}?`-%BOa@yK$XmKR>J$EyU1?7gJ2$ZL;u)6E2T~|1L5zK8dW>b_@xB+S|nHsAjCl0xH6v?AKFhnnEqZd3Jm$kydf-}a>oW-4KRpbea#FUYF**Y zx=NMD-A!FlPF%VE_V=-CrCKY+t@!r^P^q_0UiM*5VCjB>2g(?Px z@)gqJd9~v^-1Xj>8MabymCx(Pax>`ITJOWoTEQps5>K6PRKVvBle?i@QGa`PhHPwc zLFe<)*)2u2m?OcVUpeSI^RSn}GfMBPh1)YmxeB76bpM>;7Xqj(?O$z%Zuv7e_(!(i zYay6t2P<1%3%{bg}^`MIx| z_ibPIzbR+2$jC)tUW)85?Ah8nwB|}bYQ7G(2zsi@`@Ui9PglHuk5SK!hlmT$yqz}? z($Km<_yfUT6or9}VIzx__Gbkmg_8Aon0(R38n9q`QR;h8*#z!d61nRAMUn!wMdzVRtg|1+2OLd313 z$*PGQV_Sx-HO#G0mwS(8FN?!}gx~pl(Unm4bL;+BXh!nL>u3D#VEV-T+^=)PpadNk zjCxpONoV$;y#MCLzhv)_kze`V3M-Ak`@UX6zSk(l>}P1&*sa%Z2Xs=?|f>q3E#CKMU>uz0MbEv4_!qGDn&$kD1vl>gdXZEpp-x&Acl?t zg0w_>=u$$YgY*swJ@no={LUY6X3mE*=gYG@yI-E!*?Z@{?s8p^>TmLPNtjQz{%Y|6 ziuv6>XN$|xQ)f>{@%?O24c!in{RDnWV%=dweho zIa7MH1^RSsws9~M*+&%8Z9B##IxnKL)cWKFJAX|p7TE6@9CU9zdX?d-;57eZo-}t} zsu}lZdyt%*G2Q-{*{{zk@12fD&tJRU#R!NybXC3;Ny97GN{g>rvpI%>i96vc_hcjr z9lk(5Qc4SimOO9)e~?f{xN=0+bj-~=N3{1W5^Rp?eGZn4dW7x%WAu8k?gqGM?s;ls zTgBmxQmi?lL`PRm#-%+Nq%AjuW^uG4slx2sh+}vD@;-LbPfOlUsh2uW{!>AMnr8Gy zz3etGxoYFL_`U7?nOl%Q(T59TQufy|)u8>>V2rS>qBNxOFt?PW}o= zDOG-od@so8CG}Uy^)t5vcRZ+wx{Hl}zH=en;%v*;Cy8v+jNwR2)Wpbyqg6L-0Teiq z7UD$HMz%UzCn(MZ+GCT1vo&M$``eC&^j`V3#< zW_j~9>d7%HaF{Lk5B)dZ!i(cIqzJ!Ard&8pYXa{*yVtTSZ|2MLex(Kf^kmZMAhJ$0OY11Pt9BD*VGCL68FE;_aQf?fZLyyyYUOf@jj z;~p0voj>NsA&ubU0I3Ta#x|LADIPfq{NM1z{|tMN7{Vj^L;X%59@v$Qp0q=o@%UkN z8W!ZC7Hyr+#AI5!-@GkW8z?OxuNlXw0bw&{iM-jqWe#u~$aCl~-6NMsoHLcbR=f_X z$cIWVKl=D2e=`RDLGwPsF8tG=FK%P9_4V~2O->p2YF=uF-Tm}Q-A+}_WUM_Ee3FAu zVB3F?`2hCp&v)5aMeJMom9_T2e933>;Sy&9f71#9d(2=!kNSuw*^)+gJ%4KGd&sO@ zakKQ+?wnwJr4}){HD&9aI3H5m{{8^atgnf{!{opPp1gK+1nic)F5iyYjC`h{?RXE~ z`BOsWc3%*=QfAzxRNrKMB~QZ_7ZgSjR~XMKe)X73(>?ovw;3-0ul+~lGe3+G|Kg(X zK>~p9ge~1cE@5_O4t4fDPP9D#`Z{D9V@+(2jaHYWrC;Bxeez~YO0y$a-d*_MUJX>_ z$HuOxrkc=b)jf@+-6x4n7>NSQ380JYuI*D2s@R%)Y4=8Br~a1f1@FPgFUrZlX9Ww- zjD8gbU*AUK4*}z&hV_;|AHZ~j1)C)_e$qr29B46^XLLw&8tdQJxF;HyGs7ztDA$U) zn=czSJFGwk)ujwEAxfQ7P8cf|zTPvLlvd%8zjE|Ao`+XJr|kUi|0EMkHr|@Iw7D?| znwXUP=in>+aXufK9DFRg54S(2e-1sVbvWKJ=C=EEraL*;ETR8YmRu;Y1G7ZXFD-Z> zOAec)yG~rb*>l~VbBg?P=3+HaOu|d*2qHu6-J)^F4Efti@X6>OKF*MHiA{0Nca`|f z79v+(TJO$#a*9#H*lF~&c54_MDsti3Ly)3?R*54xq4k0v8Vac+n@?M5HO|4V$h0I5 z5K)^QayCA$o#hIUkP62Wq>QD{<|;n6f5#o?^i@Lt#Np=_uLjT@imK$rxShA3I{FER ziiJ3}h8>01Q_!zU( zfmi%pP?&S$X`L0c$%1$T(bi2UD@M;3UsAuTtg^mXWS(Cnw<2nb!ER;bk-kI4((7wG zldFK4U*M~5o~qDlpsyspWpRhUy8UL|A2AxQ_>lNpzx!+491)|Pxl!Wsh_EtIp{3Sf z5fm&cmd@F+!VaKn^vE)0;?`IWJr3(fi;Y@XdR!%oO|H_o=jdrHS{P z)SlFi7y`=Nn$o1AgbWl?z;CewNZd_zp#sAMN_guZxC#VdoqxE3vZ_AB3bNoUe}}M2 z8`nZ&nU@d}8#uMJR)7x8y2(3ffd^-5z7!&NDF$N#Y4!@KM}Ic(o2g1o!bb$WB71sN zpayc$iMbpot#az_TXr<-vc?puU!;NUPqHY)V`8{#ezw2M1jVwB0N`C85EM;)BQ1*` zD~-#m%7`6=H)cg08sZWWi+LQ?<`$vBWJ**uRIrNnce^_-Ww`jFcv17v3{Xh> z;e*@BQY-y5)+jTJYBG*WXVIHnZA)GbFa-p6rvpO(^M^LZ{7swdZbth}CV6TPP2B3MIDQ1LF zGFNH}pcVX8BZip%#FlN|^!=p*q}1RuxEs4{wE!;O!y!p6Jr3of{!TqG?Eewb|DVwQ z|JB|BcgdCGmQLD~LV{fJLAttJ0RNsKygrgS!2F z9S%V&`5x+Dv3pc0$8(Y#1`pz&JUWHm^l@wyV{3w$U+jMKLNzI36|2VmJoeV!!RwO2 z;Kj;eW#5xDSy+h_X1EIb15)okMJQa`WydI)h|K2=;t#^{SWPX+@30^3E_NxBhwoVo;Rp`H9Uwbc zPdV=XAUq9-nH#a{vwQ(-U0+9Z;DosElTYf4Axzw9|M`N=(3=B_=9d18z6L`_;u5;c zS*931eEQ^6N#XEqxF~U0jU>NeN}n;ab)>J%g6e44DfESNXsh{)UvS#>Dk(Ok*>`cJ z8_{l&{t{M@A+^!s?!p%awLWjA(L*(vK5HtlM(^tR*bt)8xiKthX!IaNwWx}SBp)~b;11%G0+Iu%Yqq_y<({o0Y=zH=mIMpNFsMDX8@g4ud2yQaZ)Qast^fJP{7}9*(iYR2|xc`klJ7j3R5NS3maXa-ArEWjGxgPV!k$T@&=r z4}#+olaH0X%B8SRfws~`sz-eDF zow+0aj$p;8{@ht_9k4v3cRX(N8Znm@=%=OKMrInL-B!_4kO!j8Dj}g%I28L@A3pWR8$v4kg zvcCwvbfB%`M(hf46OXoLJ($$l=%QZTgXsP@m#Wh!quvAp6(r&`)Y*=Ep6JtGXhm^t z=C)>Q2D&D$32ST-44-%BsF~V8F%X>q7T;Ccb1lY5DZgYjJ=$`&!sw6+4qGh^wH~?) zxp>Fd*X_0{5|mmMB;)bIEL@Sg&p)(99zGH{TS?+t5(3p&aF&iaUySrAAYXXoOgQYwzH-iV1L@>({e}N z5LQOTifH8f&x0@)1@{gH|HMzql+ae5F1f?PSl!i}2yaqmgR9kh+Ey9kM9+8YqfpC6 zjVUe!ZFWiS<<-;ZqoSJj7ip?JZNXrVRIGdTm4go<+7xYrWgnW>{_CeUBCxIOl%haX9;_ z`RC4h79@3LIk4Q3_scn>G2=zTXgWOq>Z!jo7sVcPEdTM99&_(O1WE5|k$`KGlUVH? z`FiKoZUNMDI<$_{6=FHxMvqOc>4@E(+b2ml$ZTFwfWZBolh&*|x{T8{zaovfg74gZ zl_5t%jtW$BT{th=h18fNz?nR;alM;;FH6QOgMN9=e!P3bcER($Tu+)=}6|>aV-u8rT|UkM6G!JP`+eLn#~8NRTZZR2#v zSKE~>*ovKMiYEStQ=c7t_9CK@cN#%~^G$yQ6Qy|j7X;n7T)Dl&=P7|MS`6HOG3z0^ zj}SyigVcpjAfaMM-&f^vq@YaSkv6&go6kPb6w7(?2K|tqGgt4MauDn9o4_W3ugs0y z_)hi7(CxlYww_u%h|!Kc>~FL8#NN03Uf9d^{f83)u<_AV8NbrIm^O8VRc(sA-iMkB zC!S^NCZpJ^N9+1yQ-N}_6=ZDtS(dl^O`l(DHW=D^Gj(JM9{-3b`|Hec$36}(ss0T7 zFXRro@btDjOMXJ?oT7-N````X)Kqg-Zq+j~c}taR(n}n_*elCzO}6)8GNnSEWd@AN zh5PHx+T`)=(%8G?Il$l?=sgIF%!KxXIX|ugZoDS_`De}N-|glWgb-A}?rW3tC62=f zXC|C~{mWRehb0UOrOrjZ{Zc#lDtJ6+)&?rcK7m9yxa{?a@Ep z#tC>kN;z{^GR(SSLIIitAq!`C-SiOn;qrM679kw90{Sxkml@|1A)Nllh8MRGfj`8BU)%p65EV`s$2K{DmF zIm?UNXtx>lr&CN4sRaO^;3R&DkRjmO?^mjUhDK}=d`irRj(TiPw|HMjQ%Sa@2_DBk zzRrA09s4o(#U);bK5Be5RXO+xtyuF|%wPQBp&ZT5O%^?7x}&hqkeG+C7+?Yp9_q3P zqfernzIb=eHe<3{HrsR0O7HlnNct&BH+0L`DVadEZR^BH55z(|vU_s@t zm#CN=851ZEomK0`yQS4Lcov%JiFBafj;^;jrRkwmrLltjiwxEqL{8oBnmUtseaOTN zPK_|(Gx#f{g|-lEJz3-jEd_H7=o6!So)6VNBp1-?k5IKWi_nYX)8|n*z_b|EkrD^sF+~iKI0>tHDX6XWHR5-Jnu&=%)jJH zNYI~;0><4kZQR`4lidaBZu8CZ9d(o~4gOjv+^6dGyIx?$ouC(UD&%XVj`CM;FLW9= z>YziDvyviD@^V#mm%ndq%UQ}-ao6fE_NggJ@g`S&%Tb)83}=rVi_F0}J>|3IzEEUa zxkdQxze^YQoY6*T*N!gWeq>F*YQ>v>3)v_Q*JS`u! zL){lLYG7OFkxh$3v$2gb)SQyq8Q@I$FY2` zCT$pI$TrSyZ-!QD0?gr*6c{k7{ODffZVzuh6b%3L5!Xd9bt(oy=9BwX&0V2lko4Y& z!PEQXH%AD-!rogBP%)cxUI(?pNk5;+`#l8Uj}?K{-&oZw-*HHZ5`N&kW%$!UGWAA+ z&|cYn{EI$4$6vj=dJ5a7&p8n92MGS%{3t__r~r0+PLAr`uDm?YSXTO1qPLid1J<{0 zF6HB1$h`MV@1HB>g7ZD@cz*A{@(IaTEV8HL0lDe;4DGiipp^#7v9FG5G2*rpVTrO$ z-3-^>y59K&k|9f=qsWC{`&^D5_O?`&h>MOg-;n zTq;wKoKNO+O(O2JQ1(jnfd>3v!C3GBcN`9G2ZswlJ-To^-i#c9qOSbu2P;1l$3$K@ zxQ@8M?Yb)nU=>6uE}!|;Z$IdxVS@QqiWRU^_R!_f+iPp<-WDC7X<+CKXK;6iv#oWU zCRu03MN`UuqB)CUSC*e~2DI=Z8ii4R+gy)*3TfU_Mp(FcCM5kb+fs~XKo~hEV$8k_N0Jde`o5WP1TtCe>a7#7uwNG>6@xX8Hd(xoE1oQdUtp3*U*cUBCbC z($uKwyqBPr)1_EcC{t4yaLR)Du7Dw}`At9)XK+SVMJ0BqrW73s^sc!lyr{6tb$BD+ z!wf8rQC+&mQ;G-3*-9+R#HtbMy-x^UmY6kw2lf~^CIy`A-WS5eanbZ$zK7O-4j3z~ zxpvF{Gtse_DpsxgxVPpJm#A<85p##OdIx*G;hG%*ewgd^xW6br!-6lWq1ZKtz(p5R zA^(J$MuAqcR^N&O4@ngy75nv4`bW%ZP!HdafCQKQk;TGX=2G zP1-I|GQpK2V~&sKGgMB~MFa8GFrQ0I2dpV>t~i90pT^d^u2`)%SM2+_$lYXZg1#fD zYmd=yaxU59AKsY*y~|;JU0<`R>}qH=QAFF-yROB7I2-|XLZ@+m2r*{|2MPd8uAjT_ zS3eW(qN(ZCy7AUkDN>I{WoK8y>T7k{>(k;sL0^X!0{TGk_@3ddV<)r9`F}GDQX8?{ zW7q77UhdM`gGn6&z0UcZLRp;fE(_1ECT)9>ETASF`6x*jEhr8gu|KVLY8J>a7)PX` zU~(HSfHSSkbtTfJLoo1?1Kz5OmLqndMu3 zOW)8vJ`W7tl-eKJjSvzd1@Y{IFBsD7(Dof=%=oDfUX~QssD8u~{%UY1yrq(8IyqO| zP|JK|bN(*1ifEcM={erB?gr1%h{5VYO@2i!liZoJf^wmi3pXw(W$Y8mGU>c#&LX(@6qw1JC?*`*NSr7K>I?;wfV^>xVi!q{wJ<9 zas4FdN_>DW?1nd=h`*XF;OG9X1K0FO?&)>!UusXTkuV>ifEWX!1m9Sf*2FvU8pE9A zofNLW&sKPxR7X;!03mxqK-bANb(pZ}NO+TsXo%%VkK0>`%Zrh4f>O<9q3B9O${{wXyk6D{%zHQ^25&t z22L*o5znLJDDth}4wR_AA}@>nma&BM5~RLwtF_qIQ00_g7m)4%geMy#TR2(Y%-Vj{ zI5FKoei+7-C8`JKLxY=2w)yC1D?&u40{-K3cfK&TpM0k=sd`NSmO0Uc^97$C2=}4% z7|(JW6L~G;Xn%569(E;EzSku19?C)Y8=~U({&7pbtnN-@l`Qb6E!b%dGITlkI~_3I zS0$RDa-AI^R+2Rz|Bl`(yK#n{$=xAfC8;bJBmZXP7m08FRA(RcBN?XGI(;-tDek@7 zq$>IEptQ=Ab#+%dGaqju|3`-;q~h1b7}qtmCbF4`d*Eu%xSY6Ho`LW38tD{7Z3D&f=6!F6X#(1e8UlJ(0s zmp|L>-FM{TmP31qr+wo+8*N!lM>2~5;~|> zPYKQODqk*uIC~trov!|le?=U(OW~efB$&fsZ#AGh=Vv-#;yaQ&+>gnp zO=T1kN=G_q_?ukK(d7A6?%D)-?Bod2oNg|3ALVIu`kxpu&L+H4|ND7g)aZ9G(R}25nGcuxvHv_2+9YEQZBMlH2zrN_ws)^Jsf^E#B^dMy zw!WIiC&zPNrUD7Rw))Xs`tk_X|EiiheA2LuQ9p}=?d!*#PTtN+iW1z`N}?^+DcZJb zEW|oeI7strwpp}JQ}3$QlS1V2^6|3BXYao%6z}%DWfbVBbkYPf3eZ33sDbE493mw@8IPO(tJ+w*GZ~-U@!g4s zeQMo2@G%wWU0UEI|0b($LX~~GCMdCyIOF7{yRy_sXDlE5N%MK@K0&ZHuDw+7N;1%K zg0DJ0_g$bbtBSf-qqxP$$_K>`g5~<=8z0Ud<=WHVxs@MW+hxOV9uA%(E|zEf$MTwX z?uSVIHhp-T()2f%P|6F3_ibG|tb4xpjZ8cL-49riTQO55q3tM*GUxn&=X;9H`c&TM zYP7*ylp#{T@~6lYG1!c0u?)u_M%Jlp|LyH5TJKgqp$fStxTYA)%@QyZ)ZW_697*?L zZkJ30*eJDqt8!y|Q*E;e?ZM4=EIsq`FL6;_?PBu*^?!Hi)<%nFn&Qf z9m9$n9sHORPwV~neoin)&P5hQMA|X65JR=SdNtc{wH&-P%=Q z`3SB5MR+c04kV*2kJ;teu9MA|6DUUpwP)4NrPGCyL;P`OVN%$@ zf(gEN&trLOjKa7>k*@O_Mnd;^Wp?y&@&2tf&&i^LVx@k;Szob)l-cfrVkjG9?n9H9 zjijFEDs9Gv(FpN8AYeo93cXsoDs0^5HTQjP>LLL=ecb%HD1-HR#c2WS`P)Dy8>Wm* zDQ%5;I`X9NTA?Do&LEjmPes>0;eRmvj{4KX^KaFw$ zY(Ei>lW!0`R|DXGqgHIe@?sxKe51q@=>fd78wJP*iB?W>JKE4Y;0ge4fD7?>nJSzM zUm5Vu)wA9d2H1eozI?o{Bv7BkS?&EvCPJ$nOH4Q@A2;Y7hzV87m9oe45=sfXV9y^h z9{DoEJc=ngXPkG7vJ>C3ENP~6zBtt{QE21IJ2-jfr3z+CWZZd@aPlKUk?dG~Gc28P|SmB$xAMjzLmv^hURzWRlBbzKna`(ADnFKZON83m3H0{)o=3Et7D5P7Dt&n~dAqZ9Sh$^0c7 ze`Yg;Au068W8M1w@vl4 ze5Mh2LjwON$29N=zo|){K`e;j``))~k`(~B$tXQUq#SZPTk`@Q*h<~>A6G>j`a@63 z33Pi-gT!Pp9d?{FJ!Pg(HnN-7y!`Q7=oy)wnj-L4J$|@jgIEw9%!N1M1}-HM=v+=@ z?7uJ2xx8Yuan@I}jv3{xMNIKwec#6ax4|j8d}*4jhIrT=FXSPin{WJQtc3_AyOIXa z9N3xo13=7%7Hkc6#?Hi5q@N4RYYNagdMQW1SyJKp56YGifLD`_NvKF zR^vBth(!Ap--|DZV#xs}yxDS+QL&J{J{72F&m!MsID9lxEL&}ha&xJ(eji&#oaiLd z?X^Rq!Xa%=9nT>}vPj~|DPYtRNf5*raoVQhQzYpxkIV7Qe8A+69U#rSe?&pf>UcnK z#NGr)U&990cF1S`oaB4K*|8I=hFG4DqaJAxrQhh$NJ_`;@Nzao!3wowSg>+}iq$vg z3W(AYmg;;1i1tykr7NAXu!w#l2)6PE2}IYx8Xw?F1>?hA++}0zbeAo+M?W77{sVfH ztnQ9Em9w=PDTFK}1>A46uwZoTc}AAqw4fTJ`If!>uvHi28Kr9F9=6hrmhj|6YKm!o zHvnY6i(j|)2XKdUM6;nRxVj0TQpdf8o;MS3a27kC%rTXPmu??=JmeUYGefLBH!HF9LdC`{n;Ec=8I9vp+CVm(!6_xe6WHtq@TfjP56QN`x8%O1a|x5UDG%`Mqj6nZ? zgZ2Lj6^vcE2BNYcRiT&7#MCA0tD7X~xp&3UU@LfQX=zCV4{1M-&(b=?o}6z4o)4Ab zIb&KW&c9aScMRLlW3hN~7R=R9?Udw}#CrbliHJQir$Kt^gRd9nccT*`t79fq?lW<@ zaIoUy^_wd%{Ek;YmmkZPI$R6lHW;F3eOzvvMm+Qixtt){)=6j#^wh0Y;`Kw$ri%Jb zsG!Iqq_K5(7ixB!CIFyOvI&iyWkZCF$%ZU=_7wGz0?te?rc~RH#4Ct(Hl zHt2>4uB6Mz*&=Sfv!js(7YTjjtqxb6?k%X}+@uKiHWE4dkWfoUH0x;YBYJLyU8t04z z7jq5FlrEZbjvfPCZ*RbqEEK|W)NJp$CgPc2q^X5_jXd>a9GR1LJ#d}~`H6@5Vq#Ge zin8dJBeMy0u#NaMCeVf^u4j4gXs*-qEN(#z&m%ZAuy`96Po2RuN}oQ;rDS7?B-W>g zrzb*R01&61$_>i4=?#aeOG`?`b!g4v0v8D3CQTGkswey+_Gx)OhwlAGn_Sy_UsdVE zYv|B>h@)eDU#e?r5vI>J%PtmQp;%s;!*aN0f&Dp5cCHwc!}7EJzrD4|lPOGi$85AL z7fQoCxThs%3^T5zg~4y4|(R{GU+$_q>X4jcTRo4 zP49h7yPCXqF3MQM?uFYq;#b24G}A_ghCJqhdFN7O`X-BYEzW8fNYc@M>F9p{x`U7R z!L5$Ywi^Opwt0IUFk7-_t933O!{^)b&)3g?sPPYQ!Kt3CL)i3s=^7nafY4L)vmC)` zjj~2n0@vGHyV@?Q&|;&YnZvzd zue7DeJP~wWY#h^_qG{(0%gir-3wBgQFuk4Lf$hil4*gE1g$8Y}Zh_Vfh~VWqB`ZCJ zf`CS&fSNyPL0O`uxS7Gl3aq)bf{S!P;zn(6HK~BvHla&Wvhc&~KUQ4Qs(bh#Ytlnq zcx#n*^`zKjX3;ZDCU|o#s0l*|E@J3@G-+wvv6-MSoNeeZ*;+AW&79bS7*p_`=5@p5 zuWl;q9|q#a$EN4N-0s@BzplG~dJmXQ+S7_;CL6@;dYI#bZ zZ)hJoed?36)o21vDWQe^3qcm$D$*(8?l{y<0oNOpCP-JQpTBlU<7UF|{pQ`lw}5fQ zL1hinheGMMyuXw?4nX6V$`%MRS>Sq{04s)8!S5g^ z+H*Jh3Tdbr|N`T{Z{8JM8MrlMKWe6+55szfLE}CaOWOk zyLh6@4jZ?ydu&T%qB{}#y8ac7Lm3yoW_6fl++ ztmtTXgx;bE_EXA?E}>6&wUvo~UuFT@*a;H%U1!G2?-2Ye4FOxiqk`XPStT|!X9jzP zir#HH9sZ6AMksv~EXt}=a`f_uvU8X9n~$=L=@Mi4x>SJk#L-*Kec(LNV@`myB|nnY z3%apFG}j8u{!St~tB;?LvLOz%JlmkEGc@QIkYcK0p66@ONk!lVU3y8gAL-kobV9jw z%@0iRXo5;3wgBGaIs&L9=O`~Xy<{*sV5*_+`?j11+$~Zyn>9XJEII8rT~33ax~tVY zgttjmTb5fTzH-|9Eg0H-LZ=cGdM0o}h6e7M?j}wwVLo7{GNlz3Vu#qnH_SF?ma`yF z=`?tQDJSdo_?eTP;s>g6w8BN({X{VaRK5UyT=G) z-lVfz49^aE$QF4pgE;ZBKOC&6Xe<|t>(%neLERjLew)12VS~hJRg*qc+~WrI8~OXG zRvwV{#c->p*TgAR|AP=rKxX)1%P<)^yEYij%KGdEo5Wool;-)fy%;gAvX3QawDcF0yDzsj0d>-g1O6h%Ja@B|Wqwn_ zGUxER5ZY`zZqHUM!KsM*2Du3|N}@pN!l30LEu~4_(d)0UIp75s0jt=iZuJlc^&sQ7 z`l~JW-ZAex-`$B|^|van6KGmLMh6ix<;|wF|0EkjThxC2rzzE5L&5xqax*B&_MTCo z?4;%MejcfU!{b|#MgQsc3q2&Pk=Xmf=3-27616;thl3O!8ogH~>qc>A!A1;B!>HxN z-8_dUKW1Ay%Hp_fxe4Ft&ND6E^w>rM{dvin)>k(}k~Z~J20T2IVor9Lsl}ncAfz*6V5&fMVr;F5OwKk|VWjNEb zm;O1lmQZ^%a5Kv`u0;gssVz-hf#3^$=DPm#W$=g#*kz;8s$&8YbHP5|;7Tn_M z=%!9Z+@`6#H!2DKS!xK?_?mAi7VE52=LkC*{Kl(FQ5r#bH~kD5sC&gWwzb(Ge2{yJ zWnGC{O@K$|`=PPQ(^uL-pY2N62sQzc9EHxN8jukRf#cHl?H_lIp>3Wc5+h32An@oS z;Ma)FNbZbCLL^qiHC?GMd>W<+;Ep>z;J(Jue4(pe(Qk)YVRfK&qMGjD$wPcldY<12 zO*#XA2gbBD_Y1009GtO!RNVa1iNBh3t_|67pP`1m9OG47nh+XpG*Y?+O`)BpOn&*- zHD=@MR5HMf%I3M}N`xvHIs{s%o62W^0OxPE;(g>pC|@j_dtgL!V=FPYwP+$tV0qwgv2?ZT1{$!;X9QM;cTmwpzVC&T?FHR2}_wY zppF)PmP$O90eB6PD6C~(bcfK=yaQI>nNg|w;&(Cj)n&e&?n?=6l3#>e`9dUF2hrv1 zOs)aA;g?io2kKuPLe{7D-?r zc2-zAfFQMMZ7B}V0wLEf9<0ntzuYGqt8A|NU(w+3GpK&?;~wJh^I)=kq}A`7FeL)i zY^sX?iVH8%1fA-|ep-mS?L0bDdx(_@n;dQP#PRSVh*j++ASmv=(jM^cTcGVXf`6mG zffM4$g((t9={LI^vUP|B0h7pR!G8ZuqC;m7gL*S3KfKkLL$Hb>Krq15Qo`@e3dF%vQzwpr}rXF zVHeIz@jJc#rK&2*p}og(i>cl7A9~(z*v9Pvuf6lT9`}3Q+~Tx~OCXCzMK7fsmPF0}}Hc5HVxtEc@b%($n5wc$jMBpM`^P z;3wIWN}^a4v&#L;!6p(+{F_6|3| zGHL_}#n+jni6ZL%tNj8!Tr=L?XyiIrv+;Dt{lG{?7N8zD;tWE|mD-8@^vPRX_;yZj zGNfjrO=BQ{okAWp_gmv(0*}riFp#M&pM){kcSxxHe3K;9w5YL?rE+oeseoi)0QXnb z+|#!{1_~NIo4uRe-rU`Hk2SdP7N#E}CZRKv6NKIPv%{bYdS1LZ%{5T-=eau{pYN7l+N^ zJ)<&;+=1W*lhCJWT=>x^S!1IzfdFes%RTu%no&~5#V3V2FLMft#6DmZe)z1buW!Am ztiiE;6VIwfoKXflSQC3jotuJ-Y8IM1)JUi^$c)LM$?&ObrfW~b1VlA_=49t!$r3AP z8AO5x*`Em4Tp%2WiR&TQDQwemVIlfZ6|MeZ)1yW)AqS}+!>ZwLm#b_Vs@5?|tJ)iK zWtOQZQSH&kY@J5CtQP959K7PmIVrlKwCH+~qM?djS44u*>%HS%2g$JZ#Q;N;UAp7A zXA?ClZ%^nv$a+f3nTCxtbAAiYw$n({1h}SS@7(#Yx?FRayCO-m7w!&DMRT1_!Gt9G z92@pKDi~2?vHsuy$mx42;3uz14sR!qu~qDJ9|oY4C8JOW zvF!EuJ+D{C{lB5;1ShI$mKF2|wrnB*=R*>$#sF$7EdyMAw)uyLfL^puvIIpSr&3cx z4fGP~%ApziQw?R|j;*EkTd7uL0|(JASNb`*hR&oNC__)q7LyGdNGldJgDIjx5~Wko zj>F4(o28$BI|Kl{3{aJoq9#qt@<0{USt0!cpeN0)6)wImR&nZ6mo!G;Tc7W|)(fI% ztkOsb(yn12=&8}pa6y3bS@hLG7C83dcxK!=1tzP&ph{lT>na#}k~pkL+#wVl;fyF) ztqtMAh}76q-mc!JePBDp1Ti&AWFz@BoKF$Uxcjcx$Utgq&>_(Vnrlt5gEEt9y<$C= zV!?w6VltSbvVpMHP^XVYNK92_jvnlGM4#|g9g*?(AJ<;PH|DeV|B#Mbn) ztzgStG24aa_LQG?OZR-&zC{FlzXE=(j$ zof{!eZwyYd;$*~s`z30ar^Av%Bn0Si7oHg}7j;NkYpC>^6c7s6mvTEf*+Af3$1+`dQz?@naLuCJBppzgcLuvS8SN|Ub@ zC^!Z8VD8O3lfX+2d=JurI^HeZ)@Afr6vqdGO0agMy3S-zsX8^rPc*?`hjNRv6EHNrsq&y+$FWajipeAw&ib1_ zZDX_)%pM4ey@NWandz!~l+v&sn0^f~)`f6M1=H4cHp9@w%sAwey_iE`tOe%C32NW~ zH~Gy*u`#vy+@bqho%=F5t0vYPa$=rhAG>8M73$XaZ9xWmc`a9*aUoXI2yLfh3oTSj z9-3%tGgx*EK7Tck^`P2Y=_zz|aP>dCmY)P{L1p}rv%c5j<$ggR82b@=0l)9qXY->Q z6IxyUH|YfDLkB5TJ4GDIq#ZGvJkVSSUo1C9w=jV(pKgm4?h&z5cDQ$tR)2t9m?Nx9 zd;&SCGASBMgnc&Lkp3(~y<}{kAl>`m`pIMyN~W$HR}Ai`kEdZVS-X8>>CsYU_Yzit zCXx2@ueoP|t$qL!ijeF_H9~iAlh(`Mf%J4B3uCG|F%iy#wZc~2`sO28E_??hjk^D> z>s=#uK48&2!&>|^Za0-=lwRpGVDI+Hu0)Utr1y4wq7N#7>eW|VUICzjO0*>$7w!(} z#PH3&b9)00sYv~O$yi7ul0cHKF-_{pkKxPbYbvCsZjS5B<2T6-UAyo_oW!3aFL@l@ z8n{=Vt9PUND0{>yd?f{+%W#Vh#sJb>d6*P+(6sHt3ZW*hq2o=kw*YZbm$1gUU-rMm zDUGsremEGpk(iCP77v>>bYdrH&`P?lM$i zSUcaoBe)39XDkA(vSJ!bNC%9=l5FpXx*}j)M_(nI)p&ZH^^bYj#)kHZJERfPANX9R zjk4t2*YTrX51>Xh@ov*K%l6=da^qpcq2-!8!MWEJ7AAH__8rH}O8^Ji(ckUMbk`FR zypEKBMTA*2D#EesU)uMOJ~bZC=6AhlIc#7aXjXEj4 z+LH{0^D!k*et@1}(`@FphPpA0+&xzPvCzvWYEIsQx5K<%(@H2(4C+HGa6Rr~Lo|Y1 z%7XAR= z%`xf3DEwMYQ$Ud3d;Vd2d;1INeOdFiAtPh34A-n0SC>B3yj3Xfy*8w0qpo*zvpktz zN7;qf;ksJZ5)FFrL+l0_W6o(COSy-w!GwH~{#Ovrr{xwdw*;FZ{p+5Fpi+zgLu_{F zq)Y!!L8`zbf#%9z#4_xt!*Tq3VfW+`7Y1^c0R{9sKl2*h$L&@9)le}Se#gm(rNXzw zs0F9QbEdAB50+KzUOxzlEwy6+Qct{{>fJ69X9C4*CA<)J?*hkHRIz(>YvO-CFj!Ui zD*bm$digFj&VY%oHAvnB5UqOW#Uc}jR2^?v2BjO|PKSil&;&51!crJvOV&!O_rN3h z8wB=mN*E0QTN(U*cPi3*FNPV%eN9*6t{VcBy!-N=1_KA~XZ!2#kI>4sU{>e7FzvS9 z&pp9i)t{;+M4mhW4Op4=XUdSz@4i1x$oTCB4ufXOW29Jzz|pHWH2G;FQ$8B}zy|fJ zPCkfRw=w_--gUTJm(4^`zWB{d#jnbZc96F9W#y=1`$V`QIq$uV`W{$HaB@XKY1gagEyFUsC^V#i&+VWeh6jnS4m$?BSt~TQ5ITG$ChH8jw&l0Gtd< zjDAeivQrSkCumuXSf|@~GIS>MI6n;(^sNLx6q&)fz1lt!#?sNeMI{2KU&D#0(B)&=Ohk?~k(dyIiw+8K-} z%3pk%>$3`0DKke-G{v=kZH@S8wRHY=I^eW-+ivg61f>l7#r~ICjnUCFkvx&+gO|4l z)Z2b?54-Cth(Nh1Rqxo}^UR1KY{&mE;@&f;sW8SZG|v*cQw}N$x+l$Ipg`&nPA|;f^Fc|nVjRkv#ao#7!VLBx z^H=&Sd4zJtTA?Vm-nV{N2oaK_&9o><^5v&`fc)zR_Mmu*bQecWT-q2cKM)2^jQmus z*@kI%L3yC-S6ZS1aVJ}zxcP)OVF&Jeza77#9cCmL(e`+k}K=h)RnvdM`&BAf30Q1QS_h4P@( z>WezV$RpQCdj%}ut@=0820I>hqvO7dprc=b(aCudV=Z5=qfT?{$khX5p09Uo4eu<) z;$I``qZA_9kDPo`i32sdbLw+cJ1FSSW5q_D`+q*#TjeX{sO~)Tqiyn%&bo&ordYfd z9Vkfm1$UbYCBk8{o{Fm|P7_Wmgt$6SDx`5#qy0_aTp~*&EGnkS9io(u#GCRr)n+d${hLt9U(E< z&hP7q=wF;%R)GLs#>NM7$ykTrNxI8le`=1!#IcSXB7e?Z%9{O1hA zcE_`IsuqgK^AFXZM>=7Qkxn(`6w;BoWE=i^EZ(nDO%Tm(k6ZqrR=sC^XFW1%tM}9^ z70zf<;{4jF{(rgYf!NV-c|#m`be9l0J5MvB_I*%1{^W7yqzIW}DDlvGLbJ2?4w z%zIG$@HSS@*aDm=)o^OI!M|NRbQqw%xa&R3wS{bNQ$bEHbr^)32ehH`)qQ*JQwk8D~ypB5G zV;OGZ@(CsKM3k0HjPX~HV>1kiu0e(TtBbWM!lEOYPS8ntmLD5j!rLHJy9Ah{uR3D= z?dcqW69YRiIb2hsk1sp7*p?PcBp=$!T#5ogcVjX?pQIk^S~@F?D-KXr0vG5;U{mb2J@mHbQ)dsIz( z0Ge$AONtaw8MZ$pR}YoN&a9;t;HxTSnwe60k^<36QQS;s;G>HZPfF%duIedV)S+x& z!nMTpQW*fQ&^=2v^JmHKc+gbTwX$MW$twu1)wQ5U`wfUNQTHP7667TS{y#Bs#9F6` z?Sqe)YOV<%?`vM5*Q=w6urQ3TEM}#0icSO(P&ca(*nu(yU)DE5VB`Ey!WmNovn%6j zD1*tBotGw1)(e!x{eCdG58(QojAFS{8tFuHIa@Ex_<+XGg7>HgTCp2b(Lx#vowA%+d zs*5IbVYIIItEvzP#i0DycugR0XT*O6KqgA%w2r>U82mzxw#+dtZOA3U`!As$ex=xH znGV74&1CPLp!3leQ<2~XhlNOa`S^uBwa-iM zD{jr+y*;I!{@ca!!LWOY6;Q}CS#177B!qv~MTbQlLlc=fZ(B1{zVYvY%Ms%m1iP|M zW1p`*aCz}l9iQ<-Ag%n^8SKqGMYYDP-FYLfTR(d-q)ivz$@}OLi0F`(v+7ensF5}S zG?^#>-Yu^fu@b7#HeM+LfA!z_S*V?CS5@YWKFF(_^v{MwpxrIK5izB|Clo!>M7=Ou z%$Z@5X0au2jrl7yR>^(ZI8!wZOKy9oi7k%)HH3lc(|*Og^?o5tAH8pzK1?Sk11>xj zPm4o?<%Y>KNRBx{5-Wx@Ga^x3JwSB#ds zr)iQ-v()A`30@F|ymm0@o?1*ulPSqb0Fv^fQ^Lf?T-OTn%zBIg+tQ3noaw>Y z2qVrj`G#E5s0#a~hR(-qbA)wE-9vh;eq$yA2dE=*e=Bf7Apdt zR7#lYOoNplkP1Z~CC6rowWy;Io^C5V3hE!KXat~kKRJHhcPBz^Fd54+IMT1}J?H~m zeJ6~~c(cm95p|dgq;zL7Ep6X=X6+djULqdO&ISndVUH|v56FYnu3+WB*?-%NykXoph2UeQNi2nkw}j=qEX9jeTIRO zA!KiBGs?ihP_}w@stntR|C*M?b8ubJ>&#ZQ1ws_ z0YAxn2_sAsW;bp7=Wxng{t_N0(6n!=EbMF%>9`^hlqY8I8)rm->I5vGZ~?Qp{^I@4 zdk7CZ9b-RgdX<(%;ErAXOp-6|lmLK2_DP`qhxrq)f;yv7gY8{>}XDRV&iD z8%^cn+y#De^ouUe%>=L!*%oyjlh2j0cW;Ghfflc_RS3M&MPEnzkCwS8((8ToT+Y8_ z)o$m|RvOS;dnQdP27BY z_+X`O z*@g!RRr|$27W1#!x=X_LU%Jg<9-rE*D-cq$&-27{%`j9ET;aE`E8+R3B{d#+nlMq? z{CHe=3eP;)jdH&@Q8WhKG!14AiNRkGZH~+UQ_45)vZF2QO3rmY+jPh>6iFTS+?>*^ zwg^vIi==Cg>l~8WYPU9U7Q)8`l960Qiziul>Rr(98mm!mVSa8eSio-1{0JYbJ7Kp| z8W0TRDq7UE=sULzFnR6}WBdIM0ko^%(CE_7QI-)~(;xpd+mp~=sI@&Eu&iwW|0!iXyef860M%x?M2R(Cb=Xfo-ByQCyEf zokK+9LfGl^IPws1>g-thfRxwM!>ag3^)SQgmLWa<{;waWSD%m5^uOrt&9`=C#w1iG z#22@+p=l8K(uSGd=g}k}aXcm9FL+uQkQqn5alndGF7APZUjLk8^Y5?9(`BV=IIS-! z^c(%ylJ-7}Lkl4v2v{dOWP0qw8o1KDtcpz4GIB3<8&sSf$p+LhiK+cE;vfN%Sov7P z39dSRA3D5u)s&^un_J#PQqsdM6frKZFN=E8C8*X8vm7THro>w14e^73^jG5pEx}Q& zuRTiF9bALkeyDDmT-v(oln#*3Q4K4fK1vHtSyqp=3;kv*B}j{ox2LcCtatDP_QAe_ z797 z#IbxwRW9u_Ds3OG(9t|hf>9#%5w~WAloP*!gjNY^x<0i4c~m^>Uu>6Wb0i z>#|CZ1fIHx+JM>!yFWM$7LDOFi^;>pzh;1ACd5WHkX{>(FMY*R*59HWD+WsJF@@?ZTCTHqC!KV&<_Y1fX8Q)jTlluTo)^KE>j-q!e?$C z1(PN-%f0r(h%^Y4fgomgL1oZf)eVz}hgO#VS~Je+oL24&F z%gHrrE-n=@_xjLtPvu@c#6EV4{hvp(*R{aEj5FF4Suh6_++4&}_k;sgMYSp*F!>K_ z7KSn0%uY&tYrLr@fK#fCs3v__OK#8Eha?H{1B@0mlloQP<A0#&d9 z+!SEn1+)P8%hY9IY?BR`%>ls)NoIgk4r};oTi>(Gt&w9hJ!r`S`lA2cW!!u5rSc{& zS``|u<=;!<_enHn7q}}XOdEQK3G#~Mmwdqp&)-Iz#fUGGU0PaSPH-|FckX7J&&M3~ zIR9@_s{gfj_Z51f@vsL5Fktb*X$jAyyw!{lFngmBGq3TE_FQ29hqPX`^ z@08fS*r~|fLJ=65mK~yHTQwH}yZCk8O!7S+1A-7C? zX``MBk_l@P3~Ap!$G2KS&Fb6q&RIG+xb)i3I_4zXW|iiWD$~P^L(k6-Wd~W|_>DOc zgq!TPNLzUAHhGqG!+LAR#xYL>zVzR68A)(5(|N|4<&#ZL;vfx~h%8Ag+-%pDO# zBR#qr(eG8~1PdBc0BeW(D~9TVe;seFiP<-5zCY~3oye!K(@ZLDhKKlKCi?arI0m-F z+N)7DS?zXlrh8IK8A?vH+n?;`yL28m@(hAV+h7&L-&o&>UR9+Zn!$2>K4-#OUi{jD zw8j4w%P6%+g^@aQr@wcQXw5n-N$`uG$iX}T$kw!9(Z*{9<(dKPf575|5%?}MY}~ro z990j!HyAjXLqKHk*|wjS_Dw*Uc}*CG(0NlWBu($#ZRt4&z!ZE-3?Xz*G?Bo6;C7t7 zoB>p)OE&}#FW{q8p~kwJ+Vev>6wFgx$XXMNK&4X!Kwtr;diCgNU1NAVURr(I7DjkQ z(2udt+O+T)vMN8fr$PRZjXwxJpDI-Us714lj-*2#bhU*t^+{Zdh-&I`Jw@<)F0TGg zb&BU5XC}jD)B;`8FQJ2Y{IRv!<-~o!rNQ~<^Zkx>It17nHttCnWr|!fMKYxZH?--| zy!A4BkIZ;yawt+QMbZe3?fzFL-F4B>_{SOHV+Rwr9b}3$UwmrTbMYvr4| zw&GH|VaunVu$9|CFygn1bh?0d#at(+1 zhkZo*jRO}PH=G!%q5a=G+#j(zzmn`AS(GO>wOy*g7%)7RG59PElsJ>dI-@$yG-axi zr9m=G<5wuP4&&@t6%6rvMKSJ`CPzbwOr%e+Pe)pFW9S@`p;T6?M|h|$2=>Z;FlL}; zW>36X-f?dJ`1p|7r)e7$=74m|UsX;Q)^$EyT7OaAu)OQ|1?iqBpOuf(-Pri4oBB^Y zt8g~!cZX5fKrAsi+M}k=B~}%N4l<)9mU<9ZnwG##lc!DhfYu0N6wel{*MtQ?^r8PtT?`wc2 z0OB|8DP~YXV@bw@!?X5p#ob8%HwC4>KUpeRgxNu9Z!aDH^PaNu_5Not7S@-9i6y_0 zjn~Pv;$Q(fs8tW!IH!d%nK%&TBI0p1ZxtiAs6-i#E+s8QO58cl{-j-ka&0MnV5*^q z5#9sTh!GoM+I-3g@1LmWt8eR9lB3D7u=r-V3RNuZxg2ADBl*^0nBisTT=k>(0*FAe z)T5N*2`=J8Dz{2Fx9`kwyYExGlHMmd9rJY$FwzD9w=zpew=sr>DpM;*hHlnJSKFk~ zGJSYqG^*USl9%kq<>?&>U08RUpp;#~GtV615ogtX&+lILI8lkOrsXKx>WnT&zKv+y zNz31%#r-6O@5CFgYglW!B&;wJx~RvEfW1XmlE>UjlmX20^P$^z`JBnwW4)zg26gK} zB}@WcCuz_8^Xb2GfT7(L9!}-9-t)P2YHd(PSwYuW6VvLUSb&0s1WOh7Zlws2z8EFF z3b>ND-oSoY3LS+PJXmD12_K2lJ$RZ@Vt(|MRh8yt$m_Q9v-|>^LBdYixhNtMK2B4Z zE082gRmXY?JPgP6qltx^6!>2S(8tDa&VMEUQ;+Mb%dOX!yDz=re9*vE1R^!>d^4^O zvSetkw{a}o=jfk7?XubZ8(zqOPm^M!vwHP^gy9@N9E) z_5P)R=LXHi{+A5P3Bwbb6qnbrUClOSSxDU9$bt(hJIX7{IB)$cx;pw08fnXMxJkX- z2}Rr@%y9SG_Q+)(U;M!*%oDBS2{}pGp?{Efm3*i3yJ7hAqy)`U-h0S~2U&`s{o0E#f5J2jE`;XsS#K>WCBKUCBJ2a`S-3LHs#As`OyM;yDQaQf1M_)Z<(+$ zxoe0KJ%$e@^~ec&CNIpfhV}PmLM_RNw`5K~itnfCrG4U|j#cGIC4}`9owtFi8VId4741Y?LD#Wy@)nRmn z3!-lo>&WtOX~*IRnv!!v(yDIGZy!54*v{7jAbdVBmLp$Y`?j?E7S9_OLcL36nIcDT zkziow=X4VWW{44N*6YBDWbT5oyzrDlgd3=F0a6uNlW>0_1C|;HiC=tbX4;`K__*Tt zfNo{XsENk`_RkNf6m=5|f+a6z^L?8sSi*UG)kV%Z!V*y6GjKl;G)jv$@A5Oete#wo zDzyao--~tlb)Ptkk{FbpQvCMtsH8O`ZBhnvU++%=(9WAZa7L&Js0gud!};BN#m+bn z@CV}O>IV!laRUQ}IK^WXShp42euNM*I&D9((0>77B>ir69@WCRpVZO zu7MjN!B8kafjlH7L7kTDRwa=0#P0R)ag}m;Li9njM6uWB8+4FuFHGh~$$CF=Wh4O! z?PuXZJ}IyOXUJG^>k$AB*Jq5>dpQ70!j2d(Mh_Cz>Dn@`m=;VRtlKU+GiZyf!$*hO z0?rdMBF)2_)DE!&_gMUY)*kG{CrhwYV71moK|9hP^S5)0&k{z8^85E&gYMt1DCa7E z0;2xT`9r4=cDR*z?lwL^a9h9H?-2Z>m|SZbO|A}LU%$~KDX~yM2!GPkCGmAR zaz;%_s)d@wo*25nZ{T)~{0ySgTv$Vbbn_uAPwE`GbXw(NlwP%a{=K|^bzt%|G_S5~ zH4TuFA5~xm2qn|11rEwHeZq9w0QeCU%~lZRhu6m7u{p)N@a2z~`vB({{KVFz^JhaU zwt|PIwg270MyPxLA*3oFP|K@NF>Wmk~b z#I{rebM!3$(F_HG$EsfH7Q<(Tx|Dy*Al_wKvF017Zt7U`MD@OGPtHg=kSTz8`zf=^ z9FE^>JwP2?xw1+gV}E(OpoBcbUa#ZTFv1Bti7YalUg4|#{MLmTP{1|y3uj|9^Wb@7 zAq+sle>{ad5w2Ha8GKT!gn9s+=h7ZL?OfqwUWLiY&WfUVy#RBD3zXq?K+f52D8n#x zkfOHT&cTae#$e81DUly>l{Ydn+q`6|#cM*m2eHILTR2=W`vLc`dtc&B83w9TU%{{$ z+^dML!&)GxYnK7aB9I1OeohuytZ$hC=($DqATSk!*$m$-Pt$6iEgitSEHUw_4|iv9 zuZbVCt-AVOjpI(VsE%CW1A%bvjf)~BKOqQxXTmK>T6igaCYtBTahCSN0N&2gCfN)C zi;pxKRDs(Mi|T7T!Mvx>BCmaTK>^jLga|2qOa3YEhH?wZMI+ z3=s3Ax{^|^03u^g%4I`+C?WJsk~#K?jQ#74fOi&R*zt)p&q0;W+(3eFORzJnWu}2v zSh{{i>*9#-v_@%_y7AMBwZ5K38^tI1siEEK%^_S!Gp8rv|466le@%=2#~k?(ax}ap z>&ZQUHkN$weD8!Fo7$b?Vdh%ejCnr8Y?yefq}YtlRvcmsfqa z6ic^9{+%8Mj73gnEI-%^%D5UP+4=&UW=a+0Hg$N3Na5|3f%V9~j#U&BvUz_dc zJL14*RHG<|(VTlzPIE4hOK3)guScNB)Kjd^7+D~1sza@b)!gzXqv9AgXN9=;L-qRN z$(G&<_p z+plB4rlI)mF3Ok+p(+HxO+%0OFYF+RqKk3)o`}!x@@=zReDGj|g^Yj=?ofFh@gvFG z4JB&Q`rCy;WTD9C+0e+MUd@0?kI5W=>tCm^(`Dc&_^U8^1KS8KgGmqE*361#z}c(~MnaY7BbtbnoE z`|+Vio^%|Hqh>wRiSS8v{DpjFqG}$nX8^&Z$~s~Q&rBI8d2RB86v`wikmPWuv=Jj> z(!It#abRyHj=!)g3+nm_os!9jUp9J)3r& zkrWCZLXT~4+s5rSi%-MxKL}M$ux^BW&DLn|2U~ad(pA7wkequ4xaG5L2yZ04Is>-O z0nA0KLz{YQxiZHV4%>TV32;k0j6^)eOz81?#&tQ&n0?RiPO?KU=YxoDwMwEq>bX>r zXV6Wbps@ZK8~vcT{%rHmug^m(Hal~>$uY}(d&NxTVYpHeT5C^OEID%{QqZwyc+KQr znQ$Jcz;3lC6=Ii)iwgH2Ck*PrJlvl|%zJgMJ(ca5lGqOTP+nYH3iQewFaKx|z=$rM ze&N}LB8Ur4LWN^X*Kc?=%Zz+7l(=0`Q9)kPXGATwh)`n=MyOBF>~-!-H$EmB`KWAV z{O%_Ixv*95iwlBejtC;a0Hlm&JPi(jcpbdu<^<1lI?fiQnw*( zihotg3)rTo-6xz6f^TtUgeYH$_0qbEX=DV+I`U;NUdPk6xf80FNjHJHI|5j*Q~GkW zsA2b}jcBV~Jg>aG_W#|;w1#c`3svZjF8;47eF}HqxAFG@>-A4zm-IFaOwa2R%O}89jZtC((_OlY%=;v`P1(Md&_sQisCQ% zF)A$axR{8=Xy*?S1%JGsglFUUt!()>&pzeryRnD$^Zokyd2hMrG)UXF3^@E0fT_mV z!n?8yna2G;Du0b%J}XprV%L>##XbwK-R!K3qx7kLs55dVl6sV33Cd!!W*1#|R9*+N zY#IQ~03|3M7c!B^&|0=sXG$k2QQ5i5ozHq(qgAiTh|jpB0{gB0Ous&74lafDp)`Nb z^W#~nv4A~^7&KFsYten{C4G|Vqd+~-$~w?Bq(Kit%gm)86vft{z0B5UTiIj4?fLGO-CXQUJpoHMSoN~u=@gij2*1)`z9xFbg*W8O&xJS8aMOs@LIBwX*-?s?JR{jAEC zp&j1T$hm0~nr@e?KY^Y+r9JoM#Dq@^alObshsNkKg#8%w4*|QWwDMvXyJ7k>Edj*K&b zqZx0o7A|M7k!x)K#nG8G=wGld;3d8q-Cn(Jk=$-@$bTrOACqg{7DO@B_VBvh>ax{^xk1EZ%3@~DR;8L0 zKA{t14*t{G00hwVCF1@b5H*hK_SOaGyc%IPJ&mUkt4#58MA?4MkF?lg;A$JJTQ(m0 zj49H-0bp7eN{o802u*2y*5u#CanGN$IPv8sI?F6cAFy?XYvC`{?%TuW<{$elvc!*} z6R1rqmG8+5bh|KERN5ze_!%7|_)eqcE-JC~iZpqQnts}-L%%y507~@MrYCor$v1f6 zZ4Q%C)i^+jGO2$uo65lJ^7ZjgVFKn6jva5SI1p;GaUiQL13;y?4)~?sST9bkV#XeJ zk<;~oFlrtO<;kCP3*qW7&BauQ3V{92jA3QZV;(7ah7dxw1rW{M48{x+iU6#8>k%2Y zdZ~8&!ApiHCiRyVCYgom!ic;FwAMV0t_cj=b5SM@En9ozycqBME`ie@lu4QoV5lNM zFQn5P|NGZI2lFJ3e~vZK0-zmuwR!3iSe7sdt16Sgj9xf^DOoNlFE>AAa+gs!&>;?S z_9ITGd1T2x@sa4xB^AW}&v9mytf8`0Bx*mUVq=cl65yI(wEQqjs<%*Hq;-gSHi z?Y=v7dG?G$)IKv`+0Of9t_Dn9KGm<(lv#PA34G3Lc~DLS)PePoPOEytJdWl7S>f^x ziOYT(dAnzBjKh3uRbCIg=rhcBjR$$Kk7eHgD)T~mLldFKS{5&Y0HJ5x7=jDVLdSz>`;tozf(emUZXD&#))Hg}$=;%K;&P4F}27iwC3}oY`_@ zTGk(~*bT_YDp@73l0Pi0k^GoWjCRr2Z(4rknFV;I&lcj_aAgHM>Aj{g0m0RoOb-5E zQy$ghG#Cj=EMD%EBx6x1!LEJ<$-cfXGo;$K*uAUHc z-@@|h;8#7lthAh$(-E&+I-SXs z?4kw0t!d``yww9nAe4zE1tu)WB5uv(GVLz+Y89ynBO1+)zVswA{DG{eZ7Tq%H~2GX_;D-+-6cz~jcoO1WGP zzW-a?_Jv8EIU{~SZQVJtDv)`x<)nV@PnVF;vQN|R&i>u$m!CLgS5H-n$EGTc#l8W9 z%0uJ?6kEUFGX!T}9+mJ9TN{IjM#)=?jx(DRQkFZvwGB2L0AkkpJXZm&!V3WARLE1= zw%4ze2+V;P=ut{F$Q$Sjc*c2sSXYxum!Z(0y9gS^#o>Nm?OP@aA1ycCd>RPL0&kh@ zojv3NZwh$gdW7>ql_iekOtO8ekq$ElMlU<&YC12V8OU}MnvhlFCj&QRstZw)R@6_! zga$yB!pvxcfKd~$qI{_JD`LJ&wc;B9KCTw@Sr94RCrYRO50pg$<*t=aE8k6bgK9K( z)m=lxnXsqXDa2m@n0;LZ1ak<=sVa+UrK32 zsdW>|-su+Ed*H=%pM-I`u+RXfH)IR+b;#Dx>w)z)QDp78lF{ixr->-XFi)fc;!ved zaL;lQR#orSaBP%RZ5bNFt%$ZsQmD)bX06X7f@kb^I=-C{MG-IM+vg!r9lh1Nqh@50 z5RlwU5>L6fq4;X$)ycQtr@}!6F_+>eq!UTw9zA9dz}slh6l-7?hl_f864-ONjPmS` zsL0}$b0_O&TU9UnheKHz$8wY52cpwsh3p+y?A%sRU~j@*Kq=!`^dEnIhWRgHDin|D>OQNAa5AW1v?VEYD)>u{U z2qI4Or%L(OTl6nSKHI z=)fcS`%sTCEHT`@`6US^pwNX!E)RhvYMjR! zVVeYk*H;cRMix!uyK}MSF;N>mHfv+%&B41yuw_N-tmNwee|q~YHU z-yaxg(=%v(*JwHcVW|4p0p?hVR82AiHuf0q#@N?i%J8)NGm}2Q1H}Kl0rW{}?j~rY zG+HOVr8EsO%kXt)H|}_D#Xe26gF9}vX23t zY$%tsP-X>(_&7zDRToO^vo|zCGR)POrtSs-gbzX?DA7;!*!frPi897g_U|lS^h(3M zY5pU;1ofAXIIpP=J6Y{bgbUJ&ba@*9Mnp_-R&?0>Alie}GgLQ%&^^juFqbz4rX`9`DD!|bfpOry5dKGG% z@BL01l|^&eq6qI*^M>ta-zY7BvG^7!RTn}n&4EfVqV*~gu)!IAt{+Ry>zin8;Vm=CE!>$92=?jQzBNB z50uZ%c^ZmmYvh`YEKw=ZZDs=pfD`8SPPblcPvK}%mE)MB0aV~Xn!Ii zW%qcn6~CON0zTw}0Lt-}0&sin4MRg9TdE2^={4}vV`StmHKY22u!l<7S5F#YDDp(I z4I)_vEmWeT)Dk;9Im32i>co9j0+WX^_*=#83JXeZLzd67ez3^e=^L>M=mE5RR ze<4It3Qrmnw)sit%Bd-!Ft1GS;f&>$Z^(5Y&RHhucBz`=OG%BFLqv&2OW+?)9mCac zn9*-bQvt(Jo~}vnT>eMZ^@?KOAI1zl`D$b+KI&%x*zjOM&F^jtBgQ^}^9f{&z#t#N z!bAugKZ9>f{(pJEaC@SfHzWzTxmRYmc_(xRoTZS-?MMnRJ%SVbxQhA?f0MQetM7+a zt0n~l20rgWxgLU<5CRvWcEelwPuRH!TrDt00cclU6B#NR(@Ppfokph$1!i~nG=nUp zr&CvtoL_RVx5;{?#5>v};{Mwpy5IzNxWfm~=T(Y3s|WNu<@5Dh5=fE26US9SMN1gr zNfv@2XHiWS>VQS9v(i-IKb!hZpU+ja1al^A)>>mnUyp%JTHz$K=^*3k$3sZ|qsrCvV$0Z!>REL=*(jmAs6ga8w4^6f&)~%<>0kx&{@PO6`_r9$2mnhC=y)L3monU2hNkWE=GcV5XZmyx;q(ZJw8*S^(W z2Qw}KaEfJ!6O8Z+PVn^dJwK~*SP=VE&Ol36x5Cu)!t=>ji?<4FYg37EIDBByEVi4; ztl(i`ZiJ!HoIJ$~6Qfbx4=-&Q)jKlDKtu9Z#-IrfHsEc@SB-?*`BE7S>M(s!>M_M& z411lT!nYH20Zt=XV7jW5e$r}(XrKJ~wR9Y!nJeTKtA#?Ut;R|1H?>F2UeMi@f6DxG z0yYf3Z?sL&t%{{x(t_LkNO`6Hc6p~DAFi^Cxk_GXIsMWzavseu7Ey#NU zULzlx9=QkFzhTI*Gs$W_BV@ia85zhW%VIrv$+$_g|Bqy*N59#03f|6X-#q41vOO-X z!q)jbOG0)9{xNd%gzUV-7okoXxlAWm)@Eq~ci5LN+unc|%4F#FXN(Q9u7aKbE6Nu+ zAY82A^f>EIiTeGgm~G66!`gw*OnTeo+&}4t_Rs|*uvqNWMr&Xgj(NQja^!liQD>+V zuxYu;AJ}5SlKfb?wLw1g&zW@SVqPwI@q3Yst#HMhg1=cx()$@2!Jzv@h8|p6;d%Dn z_VQKayzwq9CQSM3j*X%{L|;49V2E>)74Z6jI&4~yo>V*TXQqi<)1%yUaB6@12~9@L zb^=0kl1B90uuOB&IJS>yGpQ4kW6+rh~)m?}W z!23bq`8nQlGKfPx3vsmjs6>-#3Y);vFiNs8A4W5hF;6{dGx7McOt-YV67$CmxwS-h zmc96d`SO?Ou~1{Jn`rl-2*&5rBFBMZo18dmd)SX188c$iNDI56H0*8MXebNqzLVqa zQATln4U-F;h@@%nj(E0hvHAPRk8bXkgf3>VHG3>BdHOY{vOJGkQJSu2hr&JX-uuZr zD{PVIcy=u^^$V^$T-1d@4uhl#yt5u&Maz{Hf(^9D)ic3Y^5~m)eZjuhzNLGf;0T{A zrf|8EL6+m<{86JYWnqx|U_2w%(V~|o2bw)-v0`tt3!6w>?O9pj#+B5lE56K60W21U zZtIU3nd#fc`@YEj)Mb`=T|2W`fsv4@O9o*jj)uS=$0CJ+FKngAQ%l#^Wnz>xfI*)E z#zruh6|T^mP=_3Vhy^XvS|vcH9y$s1xS8{A(^g&3qQ5Q7ZiAEg#iUIuihuR9E}2AZ2(sph7{>v8pUbh{PIB_VYG-Ib!|09 z^*35KTbPYtJmW>Kza*}0oN>G7ASi%>FP=2}DqUo(KJyWf6AHM2# z2vFryg+Y$z*(Y0?6k{x>g-fl`3{&EPfli6|MuRzYNkOphaPG;y0jq_8KW}KnSB>1A zs}K(N&&xmZqsC}9)8}^I*(*V%pu04OG@GtZWq9@|NczAdJG{o};|pbjIjIg76BwBN z_+@T6(B1YyyFPY#WC=xg@kw}g4WRQ5^wYbNgg;)pw2bnsST(8*(ICY|h4F$2iDuh2 zLU~^b8*>HeU%&HLkQ)V}?y0bohv{UEE41e@f~%~7{J8!rxx#knv@xLVzrb^|i84HJ zg_GU?L}uc4N1TS7X_EI2Vk>s4i;dT4I+2<9An-`$RUp9t5#dw^3DyGVS{= zu$BO2en!bo(b#pWMp!e38QKeJ%f)ZZrMiOinABep7YsMhjRo5cx36 zTzIu|90I{RvZqcWXu1WZ5++7`fBW>J%?RJ1zxk^CIg*bHWVm*p5?ZA4$Jr34??IPl znP`16n}x2SSCi22Nv%%z2ATB=jS@36bLv6-f1$z zIxICkC9mgPo?U8%#AtYbQoAwIa~341MbH=)-hQSzldgadDI39S90()y+@=K(Lk~gI zE0ugBd}QiR3m(ve2RMhoiA&+bcF4|#{qb`hO}a8d#iLpB;a9Hc_RW7YD>vyzu{7_n@5|2=K& zTzaI+f%%$q96E;|e~4j=F330*Aekc2FjN>kSuCTXG}KM!M}}K(4C$5I=w;jFEgLvy zpgF_eQ({p9U_`5zqZQW>2#$wHQToZqFk|cFHbr9d(_tOc^$O!SmZvgDj97pT7;~TK z?-bcOLIcOojCNE5dwvLXXMq5GSxe)*tTYcZhNZ%n4p4kzhQJFTpiM1~U2ZFIxrBKT z6ttRn56AAE`$s`WZjxjuF9oZc(!v8zJuqY${8A01p5*_CpsiUySmXZ(Y9b*RRE%MP zzk}Bt-&GEaEhfXQ!oj=yU5KHb5(zKqNa}tRKp0jL#0iqd+JYHlpoPfn+64GN7+)vn zkn8~GDUj6po53|Lb66Y|-Ldf-HWv90?fo{%`1Hko{ptBvz$ssd%EXIqOWc{f2{^%8 z^bYNHVMTn)e-^~hl{i9`DxPNe?DI@X;dIriS$;~Z-{TP+&h|c>ijo*tn-L-^dhM_V z4)`OJC(c%^lUbPg9hL?3#D9P39wsC5@e8B5%!_Wsn-)6ESVSR0&c377mFf zDO4@P^%e}w$B8XN@IWeghY72kk!>wHW2>L@r4}Z^^4tGtbp5~bt^t39rx8QdT-wo=hJT4 zg20bPMqyhy{9{%77Rse6OVVWPe4iQ@_=A=t+DFxYl4G`#CB#eD{v}s8XvAW7y0!LD zJ)`eW6#5D5E`W=)=UHDv2ca$a?#dqa5c8Ie^1S7)K7D-;@Kb3VA&NQ z$|O<2TmwJ{bMgSQ+8em%d1)bp0!l?+w z;NB-g6W-Dr`U8LZa~S#yOBuuCp6~k!D0YX3U%d-B{i3G5LXxo5_1Uzk;VN75OoLoJv+I`LR;Gj>HEoJXZaJYY+oqhH`S5eYz zLsRjH;Wp-DoA^b&>!XSvvNP>-z+tD6afKln>`dXB9OvFmh-BlOJ|`@uHC}AGe*frr zL`E&2E)&03xYp0D>whvZFowfZt=wPR-Mt+6_t(qNe;{~Z&EoK~j?o`~IYTEku?FOe zlf4%ly`lehP3d>CEL(O3K2{BBrMd@I%RjC(LO!2WIKP_TUE9LXf~*V{^ZoK$k8^#K zty?%JJsJJb^RDcAJ%L&+GaLE&@F}x;zhA4P@hMgale&QB!#xDu@Z!?;CRov3Nz6KB z;be)JDUcJDI#u0cza`PObU!InXy@De$MJiGGfF-AGV#G((JdS;5(|w7zy?)`YYMSh zQ7cqv^dF4d@Sm{iNd5& zZkbWpT&76MZEi95qLNF5+-mrV85%z$_aaE&y;xs4< zuY~bKm?qju?T>~ID`LE52Ff~6+$%kIQ=>A-9jWGK&Wzzuko29j^Nl=N}xs^MM-S$T-$$KSl1Gw&myIMGT zSz>iRR==AaDFA`jzy*6BbANJ$G!B@P?r*h4N_G2^1Mz-<$j>#M=Xhn@(?lgEH zUHXlS9WEr5YjBS2PpSkElyrFpssJ6VjBH2>-0$kB8m;gbFi>f%xo>1^&bSR`-H^8x z^!V9I2iJvTF8BDnLyEeZCt7%02TVx5fs-{xz}| z|J6xEB!Pm?%lc_G3Lxw;n+>@f9ckA>n;3CM`uP~BOqF#22y-`&M!`fh*WM2Q5H(g0 zy{`RA+X?6BAhICbN2qG$Gqp*;CRPj6hqzm#IAc*S(7 z`-AAZ8&X}EeD<9mqgS+J8xkn`*&Pduqg|Pu;eE-DVKoU9DG?AnSprkS%>|vA3hjCZ zFTMr&24*BSUi#ZYimhlb3-qLV*5hBp?w93YJvE={4uBWi0z94%cp=q(fz8=WFD25n z#Khp$t;GTKy!3yEQ-}?N(C`$4#50E;wzx{8A31%gH0)WjU%zz($%qLyu$kd^d!%*IX`m^;^;RqM4#D@PB9Gf5J$wUwIrqHy0t` z$3XveAuSp#PhVPceU20rGvNgi0vnFw>U2s+vS1+xN_#E4?sK$)MB|{EF#@%N91lwG zpP%Q8A~(BNAL;btoH3a1imD0#oz5+J}a)UFgqDrj1~fq2K7FjHi}{e zPXaop#KyN~WCk>O;5Q|G4da?RssEggwM##*c~+`OPC@v^vZ)a${XZe$TicuOi`ao4 z=d!9431%XxA2mcoYTMj9m{Ess+lGYREXN%r^}F_X-_KCWLM6Wy%h+?!=N74;kj(-} zCBut7S?h)+yw#x6)Z2<2hAT-&<_~FHE!#5MK78I)^TXG|>=R{$Gk#fly#3*A!+-w{ z#2$m_BW?TG?exs1iN4eKPjMFY9)aX`xIB_aLcr6fWrnj(bvMCfH`l$2qy&E!oF@&! z&VT)=tnAFWf!LomGv?;f`ZLaGk^Swtqef!9MD4Gl0J3}%E&x@|c z&fvxm#rb@#4yfIJx8kxTQe8tJbY^V!)_HzicVkC1h@frKb+s-~KM2*b00K5BgZbw5^<4X)t?;h%dH7yn zlmA;nbKXP&c5PjO;B}ho>kAiF#Dq+-$gkHMVV#CtA}Tp`>@-uevVP*I4KC&p?crU1 z_De85*6`}*26)FRIZv(~6{Fiv5G6%Fh%+>?qkZjwHD{7Zr6ST)0Sy^#;SH~F>ubc% zO<9~C({oB()po#P(GEwUuppSO$^nHVU17DhpBqQT?(0OFd7ac&ME^QL6+H3tM3=X~ zIvhWd!uR%X52Cbw#P;L;jyW=Gj-g@ORk<)G+L389l~6RH!{jcS==4;4+a_Qi*$%3z znA=x=O!7Y_U|L5yryD;2!OgGxu{c)Om`A4)2&`ZS>@Po;U;l2Fqbi320zj8at@ixT zUP#FelLH^T>C>)gn1_%DAkV8l2u8ev9ji-zU=^rD{OXnET4ibKp;Xc?n-lEN_?mRb zG;78-u3h$z>a?(THVZGU^C)SycTj2cPsfVdnKHwBiWh$rz|NX_Uu)L&nMlUg4pIa< zMxf0$U?G!qQvK|fF+NYkt#5njwifWyq~6Ltj@km&2cWLzxp2LUuXgTzT51(;$9A`5 zBvA)U3)!6z;EXfSMK7$RpMx9`>eS+zovaPap?9nd{-%%X%;$!wBd<6^Z;>2<3}oRR z%shlsd}{Mp^tJ#+Ue$1f*&gVKu&|w;NMmjk!=m1saGZy4l7&es^JlrqsiKb&B*(XT z4TaB$biq;lN)i`i+4&PBfs1*JGMg4y8Zx^RPPce*Af;ih$6zIQnnnBf_m+>FXR0cJuB ze!?a-f8@0eiNctYu)DJ#HWVV3mt{G#3r{N~!7K%2p#hqK32_4tq^27RYBE4z&23xa zP?veO8VwJEtW=K#Ysyj|X=bBu8BpjXZ1=zz=`)ra^sFMI>Wx&X$esmiaME&b(7D z>8EkWL6NW$xAeJJonOF)dzo_w?U9!3;IE*_3?`tOS?_9NK+8rBq*JkvnYU0|JTBwZ?f^AclfNN(2XIVbd@B+*`Gb;(ueL4 zUp$j+F%Z=>jZ)Y8<8HhETf5J8_zup3(&?~HgWkKW#`=dWn&tS{(%SmlK-{bUQp^}J zM`mNirenABp@j=7=n*!p4>#9+I*?BF8fju?=vS=R(uzaJR<_<-%8xa|fTR-oFxeOR z?c)!x{iUazvm$Ng^q+uP>rY5SE`0sIHQFcPO4igrNSn~$QMUftsexR}&jbB9R9smL zdtu=;|3s^7UG~6u-PA)ivFlQO259q-rI|n&z7RqNm#+&Jx6kMR2FRY=dd~?+IR5(4 z#^c}6vdBxWu@QJRCG~S2p02dV-_CW4SXYH^4Tso&zD?<_bqRuEo3O@a;9AM(?e}ba zB)E3CYfjyVQ8~B1xV+4T7<<7K_zx=Pi`nZHtqx)|zcuF5x&u-#aWuoyJGm#Pli14++^+R`|mtBE1sC-G6Nt?D8dW9KJLW3&80i;|3t z4Hwde(Xx5T(70czE7*`8+>446BX~(Ln@&n@)E)N{rH_wlNWQbB0(YF0G)SVFZ!10RAw($cQH;CN4kXe?(-)6bf+*M?N` z1o71>N1axdN3TxJ6Qu^;CkRWB7|K|)3bA}Iol>Jy;>VRq&Ap3W8H0Ih^6m#*!5zlw zVzQlG;8Fv?nFPvHk!2@wNoe~48N&oP*ACVhV1+v4^$ekO%*xkF?X1Tn;;qG++RRnd zndNU4eVYS9K8%D&g^bH}e>cjF>8axQpErf5@mRA-bjeTw5f3uXZ~H zr**iK?c!s;K|VxmCU_SmOFUn0a*)ES-WpHkfqSK+? zs^u2$9*j2-w1QySn8y5beBXX{zKwCkOF6!Y*P-(3;>Ae`6x}2Xu>X19pt15Ev3992 z*p6Z;(`nDQR28sz;2-9n`Jt=hb2*}B`-~F3!%)0^D2?Q_+vhiepgh#9$zA{WIODbx%xUAj4eIEh@_m4KbK`JJ`M_ib= zUhiI?{L+KbZJ)mukD~^}5i--@y(rcrKlGghbX@hdx}M~MAxNw}X;#W%HpBEgQ|ewC zTubI&8U^U?(-%l3x1x&m1-TwG?$!WMbdIIemMpoye@}z0)O4kV>PaXPAQqmm{zIMm zUYBMyuN$;@lk^G~){UtHUzW8~5+R-?lbGN%iWD@B^0Xy0sN!?#3AquR))y5r(qW1l zL$4+4Y6R^cFm}N3ww5Jey#7u0j?9%@-S^jT3H!1Ze*j2InFhD6~ zwl_;W450P9!1Y7iXOYyA{2u>>4%|9JV_Zdd@8}-Z_h6HI&v&h(QXETwzSk@h7svDu zch2pQM{gNKHhlus<9+_5_QxL*z$@ChdT{NifXOcF?vAQqXLW2b)DIbx9Uzm%Ude3~ zjEw5RR4o&gEJKs$xbk|BM$Vd-J#kv`D&S(eKI8W0S3dn@1gzdWu3h>YSZACQz|spi=akb{{<53I0Cww7thSBvAynC^ zR@Wusil0X*8vQ$(r5sS}h%_YVtx>A;s8K3&Y4CYTru}(8$Bb#?-z(0WPGc&5G5j>nC_1FQQjbEq z<8udJAMfSigLC>K|6WoC!L=etxwfC@*kJvjme5rTFa6+nHT}!1 zbW5D$yLVTsdIld7+-mRZJ}w_p6L{tC&ylLnP@&!y`EbX?56=fHT;hZ)XFr!O7ibgp zr;S@=nAlg!srs9N`~}78EqcrN+|%=k?<_CYO|J&lO*hs&beFdfBh4lJJ=|OaPIG%L zs|DIoOx1hv39k4dG4Hi$TxF-~%Hoxq+|Ik`4v^OyjJ5$>}@^j57{+!39 z!~Yu4_B>oUTvxrGgp$F%0X5}pT@gg@|4Tz~y`N^Q9`#m@d^GKNeX%~#Vc<#5@62^I z#xjcCM1Kk WiLnhseR}?Hho$*-vl7#LVgCVRTR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/chart-dots-background-light.svg b/public/chart-dots-background-light.svg new file mode 100644 index 0000000..f7dc81c --- /dev/null +++ b/public/chart-dots-background-light.svg @@ -0,0 +1,20484 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/logos/chaos-labs.svg b/public/logos/chaos-labs.svg deleted file mode 100644 index 383e3f9..0000000 --- a/public/logos/chaos-labs.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/Accordion.tsx b/src/components/Accordion.tsx index a3b5dee..1bdad5c 100644 --- a/src/components/Accordion.tsx +++ b/src/components/Accordion.tsx @@ -85,7 +85,7 @@ Styled.Trigger = styled(Trigger)` &:hover { ${Styled.Icon} { color: var(--color-text-2); - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); } } diff --git a/src/components/BaseButton.tsx b/src/components/BaseButton.tsx index c8cf630..25b4247 100644 --- a/src/components/BaseButton.tsx +++ b/src/components/BaseButton.tsx @@ -134,8 +134,8 @@ const ButtonStyle = css` --button-textColor: var(--color-text-0); --button-backgroundColor: transparent; - --button-active-filter: brightness(0.9); - --button-hover-filter: brightness(1.1); + --button-active-filter: brightness(var(--active-filter)); + --button-hover-filter: brightness(var(--hover-filter-base)); --button-hover-textColor: var(--button-textColor); --button-radius: 0.5em; diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 2d03f59..633fc92 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -89,9 +89,10 @@ const buttonActionVariants = { --button-border: solid var(--border-width) var(--color-border); `, [ButtonAction.Primary]: css` - --button-textColor: var(--color-text-2); + --button-textColor: var(--color-text-button); --button-backgroundColor: var(--color-accent); --button-border: solid var(--border-width) var(--color-border-white); + --button-hover-filter: brightness(var(--hover-filter-variant)); `, [ButtonAction.Secondary]: css` @@ -101,15 +102,17 @@ const buttonActionVariants = { `, [ButtonAction.Create]: css` - --button-textColor: var(--color-text-2); + --button-textColor: var(--color-text-button); --button-backgroundColor: var(--color-success); --button-border: solid var(--border-width) var(--color-border-white); + --button-hover-filter: brightness(var(--hover-filter-variant)); `, [ButtonAction.Destroy]: css` - --button-textColor: var(--color-text-2); + --button-textColor: var(--color-text-button); --button-backgroundColor: var(--color-error); --button-border: solid var(--border-width) var(--color-border-white); + --button-hover-filter: brightness(var(--hover-filter-variant)); `, [ButtonAction.Navigation]: css` @@ -122,6 +125,7 @@ const buttonActionVariants = { --button-textColor: var(--color-error); --button-backgroundColor: var(--color-layer-3); --button-border: solid var(--border-width) var(--color-border-red); + --button-hover-filter: brightness(var(--hover-filter-variant)); `, }; diff --git a/src/components/Checkbox.tsx b/src/components/Checkbox.tsx index 941aa2f..091ebf2 100644 --- a/src/components/Checkbox.tsx +++ b/src/components/Checkbox.tsx @@ -80,7 +80,7 @@ Styled.Indicator = styled(Indicator)` align-items: center; justify-content: center; - color: var(--color-text-2); + color: var(--color-text-button); `; Styled.Label = styled.label<{ disabled?: boolean }>` diff --git a/src/components/CopyButton.tsx b/src/components/CopyButton.tsx index 33da9d1..f5babf1 100644 --- a/src/components/CopyButton.tsx +++ b/src/components/CopyButton.tsx @@ -77,7 +77,7 @@ Styled.InlineRow = styled.div<{ copied: boolean }>` ` : css` &:hover { - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); text-decoration: underline; } `} diff --git a/src/components/DropdownHeaderMenu.tsx b/src/components/DropdownHeaderMenu.tsx index f251cbf..cbc8b1d 100644 --- a/src/components/DropdownHeaderMenu.tsx +++ b/src/components/DropdownHeaderMenu.tsx @@ -35,8 +35,8 @@ export const DropdownHeaderMenu = ({
- {children} - + {children} +
@@ -87,7 +87,7 @@ Styled.Trigger = styled(Trigger)` outline: none; :hover { - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); } `; diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx index 045bb5a..216da7d 100644 --- a/src/components/Icon.tsx +++ b/src/components/Icon.tsx @@ -13,6 +13,7 @@ import { CaretIcon, CautionCircleStrokeIcon, CautionCircleIcon, + ChaosLabsIcon, ChatIcon, CheckIcon, CheckCircleIcon, @@ -90,6 +91,7 @@ export enum IconName { Caret = 'Caret', CautionCircle = 'CautionCircle', CautionCircleStroked = 'CautionCircleStroked', + ChaosLabs = 'ChaosLabs', Chat = 'Chat', Check = 'Check', CheckCircle = 'CheckCircle', @@ -168,6 +170,7 @@ const icons = { [IconName.Caret]: CaretIcon, [IconName.CautionCircle]: CautionCircleIcon, [IconName.CautionCircleStroked]: CautionCircleStrokeIcon, + [IconName.ChaosLabs]: ChaosLabsIcon, [IconName.Chat]: ChatIcon, [IconName.Check]: CheckIcon, [IconName.CheckCircle]: CheckCircleIcon, diff --git a/src/components/Table.tsx b/src/components/Table.tsx index e049f36..ce2c89b 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -782,7 +782,7 @@ Styled.Tr = styled.tr<{ &:focus-visible, &:focus-within { --tableRow-currentBackgroundColor: var(--tableRow-hover-backgroundColor); - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); } `}; diff --git a/src/constants/styles/base.ts b/src/constants/styles/base.ts index 8251ffa..51ea825 100644 --- a/src/constants/styles/base.ts +++ b/src/constants/styles/base.ts @@ -68,3 +68,9 @@ export enum OpacityToken { Opacity66 = 'A8', Opacity90 = 'E6', } + +export enum BrightnessFilterToken { + Darken10 = '0.9', + Darken5 = '0.95', + Lighten10 = '1.1', +} diff --git a/src/constants/styles/colors.ts b/src/constants/styles/colors.ts index dc9429e..d83b9e2 100644 --- a/src/constants/styles/colors.ts +++ b/src/constants/styles/colors.ts @@ -14,7 +14,8 @@ export type ThemeColorBase = LayerColors & DirectionalColors & RiskColors & IconColors & - ComponentColors; + ComponentColors & + Filters; type LayerColors = { layer0: string; @@ -37,6 +38,8 @@ type TextColors = { textPrimary: string; textSecondary: string; textTertiary: string; + + textButton: string; }; type GradientColors = { @@ -87,3 +90,9 @@ type ComponentColors = { toggleBackground: string; tooltipBackground: string; }; + +type Filters = { + hoverFilterBase: string; + hoverFilterVariant: string; + activeFilter: string; +}; diff --git a/src/hooks/useAppThemeAndColorMode.tsx b/src/hooks/useAppThemeAndColorMode.tsx index 08572fa..1cbc3de 100644 --- a/src/hooks/useAppThemeAndColorMode.tsx +++ b/src/hooks/useAppThemeAndColorMode.tsx @@ -1,8 +1,9 @@ +import { useEffect, useState } from 'react'; import { useSelector } from 'react-redux'; import { ThemeProvider } from 'styled-components'; -import { AppTheme, AppColorMode } from '@/state/configs'; -import { getAppTheme, getAppColorMode } from '@/state/configsSelectors'; +import { AppTheme, AppThemeSetting, AppColorMode, AppThemeSystemSetting } from '@/state/configs'; +import { getAppThemeSetting, getAppColorMode } from '@/state/configsSelectors'; import { Themes } from '@/styles/themes'; @@ -11,8 +12,37 @@ export const AppThemeAndColorModeProvider = ({ ...props }) => { }; export const useAppThemeAndColorModeContext = () => { - const theme: AppTheme = useSelector(getAppTheme); + const themeSetting: AppThemeSetting = useSelector(getAppThemeSetting); const colorMode: AppColorMode = useSelector(getAppColorMode); - return Themes[theme][colorMode]; + const darkModePref = globalThis.matchMedia('(prefers-color-scheme: dark)'); + + const [systemPreference, setSystemPreference] = useState( + darkModePref.matches ? AppTheme.Dark : AppTheme.Light + ); + + useEffect(() => { + const handler = (e) => { + if (e.matches) { + setSystemPreference(AppTheme.Dark); + } else { + setSystemPreference(AppTheme.Light); + } + }; + darkModePref.addEventListener('change', handler); + return () => darkModePref.removeEventListener('change', handler); + }, []); + + const getThemeFromSetting = (): AppTheme => { + switch (themeSetting) { + case AppThemeSystemSetting.System: + return systemPreference; + case AppTheme.Classic: + case AppTheme.Dark: + case AppTheme.Light: + return themeSetting; + } + }; + + return Themes[getThemeFromSetting()][colorMode]; }; diff --git a/src/icons/chaos-labs.tsx b/src/icons/chaos-labs.tsx new file mode 100644 index 0000000..8779b79 --- /dev/null +++ b/src/icons/chaos-labs.tsx @@ -0,0 +1,62 @@ +import { useSelector } from 'react-redux'; + +import { AppTheme } from '@/state/configs'; +import { getAppTheme } from '@/state/configsSelectors'; + +const ChaosLabsIcon: React.FC = () => { + const appTheme = useSelector(getAppTheme); + + const fills = appTheme === AppTheme.Light ? ['#1482E5', '#000000'] : ['#1482E5', '#E5E9EB']; + + return ( + + + + + + + + + + + + + + ); +}; + +export default ChaosLabsIcon; diff --git a/src/icons/gear.svg b/src/icons/gear.svg index 456a6b7..5bad862 100644 --- a/src/icons/gear.svg +++ b/src/icons/gear.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/src/icons/index.ts b/src/icons/index.ts index a70c120..15b17c1 100644 --- a/src/icons/index.ts +++ b/src/icons/index.ts @@ -1,3 +1,4 @@ +import ChaosLabsIcon from './chaos-labs'; export { default as AddressConnectorIcon } from './address-connector.svg'; export { default as ArrowIcon } from './arrow.svg'; export { default as Bar3Icon } from './bar3.svg'; @@ -34,7 +35,6 @@ export { default as HistoryIcon } from './history.svg'; export { default as LeaderboardIcon } from './leaderboard.svg'; export { default as LinkOutIcon } from './link-out.svg'; export { default as LockIcon } from './lock.svg'; -export { default as LogoShortIcon } from './logo-short'; export { default as MarketsIcon } from './markets.svg'; export { default as MenuIcon } from './menu.svg'; export { default as MigrateIcon } from './migrate.svg'; @@ -90,7 +90,9 @@ export { default as WebsiteIcon } from './website.svg'; export { default as WhitepaperIcon } from './whitepaper.svg'; // Logos +export { default as ChaosLabsIcon } from './chaos-labs'; export { default as EtherscanIcon } from './logos/etherscan.svg'; +export { default as LogoShortIcon } from './logo-short'; // Trade export { default as OrderCanceledIcon } from './trade/order-canceled.svg'; diff --git a/src/icons/moon.svg b/src/icons/moon.svg index 806f9d5..e01a7f4 100644 --- a/src/icons/moon.svg +++ b/src/icons/moon.svg @@ -1,3 +1,3 @@ - + diff --git a/src/icons/sun.svg b/src/icons/sun.svg index 1fa6e88..84a25c5 100644 --- a/src/icons/sun.svg +++ b/src/icons/sun.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/lib/tradingView/utils.ts b/src/lib/tradingView/utils.ts index 27c26b6..471a468 100644 --- a/src/lib/tradingView/utils.ts +++ b/src/lib/tradingView/utils.ts @@ -1,6 +1,6 @@ import { Candle, TradingViewBar, TradingViewSymbol } from '@/constants/candles'; -import { AppTheme, AppColorMode } from '@/state/configs'; +import type { AppTheme, AppColorMode } from '@/state/configs'; import { Themes } from '@/styles/themes'; diff --git a/src/pages/portfolio/AccountDetailsAndHistory.tsx b/src/pages/portfolio/AccountDetailsAndHistory.tsx index 6a27424..ca304e3 100644 --- a/src/pages/portfolio/AccountDetailsAndHistory.tsx +++ b/src/pages/portfolio/AccountDetailsAndHistory.tsx @@ -272,7 +272,7 @@ Styled.AccountDetail = styled.div<{ gridArea: string }>` Styled.PnlChart = styled(PnlChart)<{ pnlDiffSign: NumberSign }>` grid-area: Chart; - background-color: var(--color-layer-1); + background-color: var(--color-layer-2); --pnl-line-color: ${({ pnlDiffSign }) => ({ diff --git a/src/pages/rewards/LaunchIncentivesPanel.tsx b/src/pages/rewards/LaunchIncentivesPanel.tsx index e2e8bb7..d37cd1e 100644 --- a/src/pages/rewards/LaunchIncentivesPanel.tsx +++ b/src/pages/rewards/LaunchIncentivesPanel.tsx @@ -7,6 +7,8 @@ import { STRING_KEYS } from '@/constants/localization'; import { ButtonAction } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; +import { ChaosLabsIcon } from '@/icons'; + import breakpoints from '@/styles/breakpoints'; import { useAccounts, useBreakpoints, useStringGetter } from '@/hooks'; @@ -114,7 +116,9 @@ const LaunchIncentivesContent = () => { {stringGetter({ key: STRING_KEYS.LAUNCH_INCENTIVES_DESCRIPTION })}{' '} - + + {stringGetter({ key: STRING_KEYS.POWERED_BY })} + { }) ); }} - slotRight={} + slotRight={} > {stringGetter({ key: STRING_KEYS.ABOUT })} @@ -140,7 +144,7 @@ const LaunchIncentivesContent = () => { }) ); }} - slotRight={} + slotRight={} slotLeft={} > {stringGetter({ key: STRING_KEYS.LEADERBOARD })} @@ -153,7 +157,7 @@ const LaunchIncentivesContent = () => { const Styled: Record = {}; Styled.Panel = styled(Panel)` - background-color: var(--color-layer-4); + background-color: var(--color-layer-3); width: 100%; `; @@ -200,10 +204,6 @@ Styled.Button = styled(Button)` --button-padding: 0 1rem; `; -Styled.LinkOutIcon = styled(Icon)` - color: var(--color-text-1); -`; - Styled.AboutButton = styled(Styled.Button)` --button-textColor: var(--color-text-2); --button-backgroundColor: var(--color-layer-6); @@ -280,9 +280,10 @@ Styled.Image = styled.img` height: auto; `; -Styled.ChaosLabsLogo = styled.img` - height: 1.25rem; - align-self: start; +Styled.ChaosLabsLogo = styled.span` + display: flex; + gap: 0.5em; + font: var(--font-mini-medium); `; Styled.NewTag = styled(Tag)` diff --git a/src/state/configs.ts b/src/state/configs.ts index db1b3e7..d4e7977 100644 --- a/src/state/configs.ts +++ b/src/state/configs.ts @@ -12,13 +12,19 @@ export enum AppTheme { Light = 'Light', } +export enum AppThemeSystemSetting { + System = 'System', +} + +export type AppThemeSetting = AppTheme | AppThemeSystemSetting; + export enum AppColorMode { GreenUp = 'GreenUp', RedUp = 'RedUp', } export interface ConfigsState { - appTheme: AppTheme; + appThemeSetting: AppThemeSetting; appColorMode: AppColorMode; feeTiers?: kollections.List; feeDiscounts?: FeeDiscount[]; @@ -26,24 +32,8 @@ export interface ConfigsState { hasSeenLaunchIncentives: boolean; } -const DOCUMENT_THEME_MAP = { - [AppTheme.Classic]: () => { - document?.documentElement?.classList.remove('theme-dark', 'theme-light'); - }, - [AppTheme.Dark]: () => { - document?.documentElement?.classList.remove('theme-light'); - document?.documentElement?.classList.add('theme-dark'); - }, - [AppTheme.Light]: () => { - document?.documentElement?.classList.remove('theme-dark'); - document?.documentElement?.classList.add('theme-light'); - }, -}; - -export const changeTheme = (theme: AppTheme) => DOCUMENT_THEME_MAP[theme](); - const initialState: ConfigsState = { - appTheme: getLocalStorage({ + appThemeSetting: getLocalStorage({ key: LocalStorageKey.SelectedTheme, defaultValue: AppTheme.Classic, }), @@ -60,16 +50,13 @@ const initialState: ConfigsState = { }), }; -changeTheme(initialState.appTheme); - export const configsSlice = createSlice({ name: 'Inputs', initialState, reducers: { - setAppTheme: (state: ConfigsState, { payload }: PayloadAction) => { + setAppThemeSetting: (state: ConfigsState, { payload }: PayloadAction) => { setLocalStorage({ key: LocalStorageKey.SelectedTheme, value: payload }); - changeTheme(payload); - state.appTheme = payload; + state.appThemeSetting = payload; }, setAppColorMode: (state: ConfigsState, { payload }: PayloadAction) => { setLocalStorage({ key: LocalStorageKey.SelectedColorMode, value: payload }); @@ -86,5 +73,5 @@ export const configsSlice = createSlice({ }, }); -export const { setAppTheme, setAppColorMode, setConfigs, markLaunchIncentivesSeen } = +export const { setAppThemeSetting, setAppColorMode, setConfigs, markLaunchIncentivesSeen } = configsSlice.actions; diff --git a/src/state/configsSelectors.ts b/src/state/configsSelectors.ts index 51dc198..25cc4d1 100644 --- a/src/state/configsSelectors.ts +++ b/src/state/configsSelectors.ts @@ -1,6 +1,19 @@ import type { RootState } from './_store'; +import { AppTheme, AppThemeSystemSetting, AppThemeSetting } from './configs'; -export const getAppTheme = (state: RootState) => state.configs.appTheme; +export const getAppThemeSetting = (state: RootState): AppThemeSetting => + state.configs.appThemeSetting; + +export const getAppTheme = (state: RootState): AppTheme => { + switch (state.configs.appThemeSetting) { + case AppThemeSystemSetting.System: + return globalThis.matchMedia('(prefers-color-scheme: dark)').matches + ? AppTheme.Dark + : AppTheme.Light; + default: + return state.configs.appThemeSetting; + } +}; export const getAppColorMode = (state: RootState) => state.configs.appColorMode; diff --git a/src/styles/formMixins.ts b/src/styles/formMixins.ts index d709bef..841b4f2 100644 --- a/src/styles/formMixins.ts +++ b/src/styles/formMixins.ts @@ -38,7 +38,7 @@ export const formMixins: Record< border-radius: var(--input-radius); &:focus-within { - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); } @media ${breakpoints.tablet} { diff --git a/src/styles/globalStyle.ts b/src/styles/globalStyle.ts index 44b284d..afd8b99 100644 --- a/src/styles/globalStyle.ts +++ b/src/styles/globalStyle.ts @@ -18,6 +18,7 @@ export const GlobalStyle = createGlobalStyle` --color-text-0: ${({ theme }) => theme.textTertiary}; --color-text-1: ${({ theme }) => theme.textSecondary}; --color-text-2: ${({ theme }) => theme.textPrimary}; + --color-text-button: ${({ theme }) => theme.textButton}; --color-gradient-base-0: ${({ theme }) => theme.gradientBase0}; --color-gradient-base-1: ${({ theme }) => theme.gradientBase1}; @@ -41,5 +42,9 @@ export const GlobalStyle = createGlobalStyle` --color-risk-low: ${({ theme }) => theme.riskLow}; --color-risk-medium: ${({ theme }) => theme.riskMedium}; --color-risk-high: ${({ theme }) => theme.riskHigh}; + + --hover-filter-base: ${({ theme }) => theme.hoverFilterBase}; + --hover-filter-variant: ${({ theme }) => theme.hoverFilterVariant}; + --active-filter: ${({ theme }) => theme.activeFilter}; } `; diff --git a/src/styles/popoverMixins.ts b/src/styles/popoverMixins.ts index 90697ea..4945d2a 100644 --- a/src/styles/popoverMixins.ts +++ b/src/styles/popoverMixins.ts @@ -21,8 +21,8 @@ export const popoverMixins = { --trigger-open-backgroundColor: var(--color-layer-1); --trigger-open-textColor: var(--color-text-2); - --trigger-active-filter: brightness(0.9); - --trigger-hover-filter: brightness(1.1); + --trigger-active-filter: brightness(var(--active-filter)); + --trigger-hover-filter: brightness(var(--hover-filter-base)); display: flex; align-items: center; @@ -219,7 +219,7 @@ export const popoverMixins = { &[aria-selected="true"], // cmdk &[data-highlighted] // @radix-ui { - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); background-color: var(--item-highlighted-backgroundColor); color: var(--item-highlighted-textColor, var(--trigger-textColor, inherit)) !important; outline: none; diff --git a/src/styles/themes.ts b/src/styles/themes.ts index 6418027..fcfa3b2 100644 --- a/src/styles/themes.ts +++ b/src/styles/themes.ts @@ -1,6 +1,6 @@ import { AppTheme, AppColorMode } from '@/state/configs'; import type { Theme, ThemeColorBase } from '@/constants/styles/colors'; -import { ColorToken, OpacityToken } from '@/constants/styles/base'; +import { BrightnessFilterToken, ColorToken, OpacityToken } from '@/constants/styles/base'; import { generateFadedColorVariant } from '@/lib/styles'; const ClassicThemeBase: ThemeColorBase = { @@ -20,6 +20,7 @@ const ClassicThemeBase: ThemeColorBase = { textPrimary: ColorToken.LightGray2, textSecondary: ColorToken.GrayPurple1, textTertiary: ColorToken.GrayPurple2, + textButton: ColorToken.LightGray2, gradientBase0: ColorToken.DarkGray9, gradientBase1: ColorToken.GrayBlue2, @@ -53,6 +54,10 @@ const ClassicThemeBase: ThemeColorBase = { switchThumbActiveBackground: ColorToken.White, toggleBackground: ColorToken.GrayBlue3, tooltipBackground: generateFadedColorVariant(ColorToken.GrayBlue3, OpacityToken.Opacity66), + + hoverFilterBase: BrightnessFilterToken.Lighten10, + hoverFilterVariant: BrightnessFilterToken.Lighten10, + activeFilter: BrightnessFilterToken.Darken10, }; const DarkThemeBase: ThemeColorBase = { @@ -72,6 +77,7 @@ const DarkThemeBase: ThemeColorBase = { textPrimary: ColorToken.LightGray0, textSecondary: ColorToken.MediumGray0, textTertiary: ColorToken.DarkGray0, + textButton: ColorToken.LightGray0, gradientBase0: ColorToken.DarkGray8, gradientBase1: ColorToken.DarkGray5, @@ -105,6 +111,10 @@ const DarkThemeBase: ThemeColorBase = { switchThumbActiveBackground: ColorToken.White, toggleBackground: ColorToken.DarkGray6, tooltipBackground: generateFadedColorVariant(ColorToken.DarkGray6, OpacityToken.Opacity66), + + hoverFilterBase: BrightnessFilterToken.Lighten10, + hoverFilterVariant: BrightnessFilterToken.Lighten10, + activeFilter: BrightnessFilterToken.Darken10, }; const LightThemeBase: ThemeColorBase = { @@ -124,6 +134,7 @@ const LightThemeBase: ThemeColorBase = { textPrimary: ColorToken.DarkGray12, textSecondary: ColorToken.DarkGray3, textTertiary: ColorToken.DarkGray1, + textButton: ColorToken.White, gradientBase0: ColorToken.LightGray8, gradientBase1: ColorToken.LightGray5, @@ -157,6 +168,10 @@ const LightThemeBase: ThemeColorBase = { switchThumbActiveBackground: ColorToken.White, toggleBackground: ColorToken.LightGray4, tooltipBackground: generateFadedColorVariant(ColorToken.LightGray7, OpacityToken.Opacity66), + + hoverFilterBase: BrightnessFilterToken.Darken5, + hoverFilterVariant: BrightnessFilterToken.Lighten10, + activeFilter: BrightnessFilterToken.Darken10, }; const generateTheme = (themeBase: ThemeColorBase): Theme => { diff --git a/src/views/charts/PnlChart.tsx b/src/views/charts/PnlChart.tsx index 1509277..df65430 100644 --- a/src/views/charts/PnlChart.tsx +++ b/src/views/charts/PnlChart.tsx @@ -9,34 +9,30 @@ import { HistoricalPnlPeriods, HISTORICAL_PNL_PERIODS, } from '@/constants/abacus'; -// import { STRING_KEYS } from '@/constants/localization'; import { timeUnits } from '@/constants/time'; import { breakpoints } from '@/styles'; -import { useBreakpoints, useNow /*, useStringGetter*/ } from '@/hooks'; +import { useBreakpoints, useNow } from '@/hooks'; -// import { Details } from '@/components/Details'; -import { Output /*, OutputType, ShowSign*/ } from '@/components/Output'; -// import { HorizontalSeparator } from '@/components/Separator'; +import { Output } from '@/components/Output'; import { ToggleGroup } from '@/components/ToggleGroup'; import type { TooltipContextType } from '@visx/xychart'; import { TimeSeriesChart } from '@/components/visx/TimeSeriesChart'; import { AxisLabelOutput } from '@/components/visx/AxisLabelOutput'; -// import { TooltipContent } from '@/components/visx/TooltipContent'; import { getSubaccount, getSubaccountHistoricalPnl, getSubaccountId, } from '@/state/accountSelectors'; +import { AppTheme } from '@/state/configs'; +import { getAppTheme } from '@/state/configsSelectors'; import abacusStateManager from '@/lib/abacus'; import { formatRelativeTime } from '@/lib/dateTime'; import { isTruthy } from '@/lib/isTruthy'; -import chartBackground from '/chart-background.png'; - enum PnlSide { Profit = 'Profit', Loss = 'Loss', @@ -62,6 +58,9 @@ const MS_FOR_PERIOD = { [HistoricalPnlPeriod.Period90d.name]: 90 * timeUnits.day, }; +const DARK_CHART_BACKGROUND_URL = '/chart-dots-background-dark.svg'; +const LIGHT_CHART_BACKGROUND_URL = '/chart-dots-background-light.svg'; + type ElementProps = { onTooltipContext?: (tooltipContext: TooltipContextType) => void; onVisibleDataChange?: (data: Array) => void; @@ -82,8 +81,8 @@ export const PnlChart = ({ selectedLocale, slotEmpty, }: PnlChartProps) => { - // const stringGetter = useStringGetter(); const { isTablet } = useBreakpoints(); + const appTheme = useSelector(getAppTheme); const { equity } = useSelector(getSubaccount, shallowEqual) || {}; const now = useNow({ intervalMs: timeUnits.minute }); @@ -171,10 +170,11 @@ export const PnlChart = ({ [pnlData, equity, selectedPeriod, now] ); - // const latestDatum = data?.[data.length - 1]; + const chartBackground = + appTheme === AppTheme.Light ? LIGHT_CHART_BACKGROUND_URL : DARK_CHART_BACKGROUND_URL; return ( - + datum?.equity, colorAccessor: () => 'var(--pnl-line-color)', getCurve: () => curveLinear, - // getCurve: ({ zoomDomain }) => - // PNL_TIME_RESOLUTION * 30 < zoomDomain && zoomDomain < PNL_TIME_RESOLUTION * 400 - // ? curveMonotoneX - // : curveLinear, - // threshold: { - // yAccessor: (datum) => datum?.netTransfers, - // aboveAreaProps: { - // fill: 'var(--color-positive)', - // fillOpacity: 0.33, - // strokeWidth: 1, - // stroke: 'var(--color-positive)', - // }, - // belowAreaProps: { - // fill: 'var(--color-negative)', - // fillOpacity: 0.33, - // strokeWidth: 1, - // stroke: 'var(--color-negative)', - // }, - // }, }, ]} tickFormatY={(value) => @@ -229,98 +210,6 @@ export const PnlChart = ({ .format(Math.abs(value)) .toLowerCase() } - // renderXAxisLabel={({ tooltipData }) => { - // const tooltipDatum = tooltipData!.nearestDatum!.datum ?? latestDatum; - - // return ( - // - // ); - // }} - // renderYAxisLabel={({ tooltipData }) => { - // const tooltipDatum = tooltipData!.nearestDatum!.datum ?? latestDatum; - - // return ( - // - // ); - // }} - // renderTooltip={({ tooltipData }) => { - // const { nearestDatum } = tooltipData || {}; - - // const tooltipDatum = nearestDatum?.datum ?? latestDatum; - - // return ( - // - //
, - // }, - // ].filter(Boolean)} - // /> - - // - - //
, - // }, - // { - // key: 'equity', - // label: { - // [PnlSide.Profit]: stringGetter({ - // key: STRING_KEYS.NET_PROFIT, - // }), - // [PnlSide.Loss]: stringGetter({ - // key: STRING_KEYS.NET_LOSS, - // }), - // [PnlSide.Flat]: stringGetter({ - // key: STRING_KEYS.NET_ZERO, - // }), - // }[tooltipDatum.side], - // value: ( - // - // ), - // }, - // { - // key: 'totalPnl', - // label: stringGetter({ key: STRING_KEYS.TOTAL_VALUE }), // stringGetter({ key: STRING_KEYS.EQUITY }), - // value: , - // }, - // ].filter(Boolean)} - // /> - //
- // ); - // }} renderTooltip={() =>
} onTooltipContext={onTooltipContext} onVisibleDataChange={onVisibleDataChange} @@ -358,9 +247,9 @@ export const PnlChart = ({ const Styled: Record = {}; -Styled.Container = styled.div` +Styled.Container = styled.div<{ chartBackground: string }>` position: relative; - background: url(${chartBackground}) no-repeat center center; + background: url(${({ chartBackground }) => chartBackground}) no-repeat center center; `; Styled.PeriodToggle = styled.div` diff --git a/src/views/dialogs/DisplaySettingsDialog.tsx b/src/views/dialogs/DisplaySettingsDialog.tsx index 8f8e451..6cf492c 100644 --- a/src/views/dialogs/DisplaySettingsDialog.tsx +++ b/src/views/dialogs/DisplaySettingsDialog.tsx @@ -5,8 +5,15 @@ import { Root, Item, Indicator } from '@radix-ui/react-radio-group'; import { useStringGetter } from '@/hooks'; -import { AppTheme, AppColorMode, setAppTheme, setAppColorMode } from '@/state/configs'; -import { getAppTheme, getAppColorMode } from '@/state/configsSelectors'; +import { + AppTheme, + type AppThemeSetting, + AppThemeSystemSetting, + AppColorMode, + setAppThemeSetting, + setAppColorMode, +} from '@/state/configs'; +import { getAppTheme, getAppThemeSetting, getAppColorMode } from '@/state/configsSelectors'; import { layoutMixins } from '@/styles/layoutMixins'; import { Themes } from '@/styles/themes'; @@ -25,12 +32,14 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => { const dispatch = useDispatch(); const stringGetter = useStringGetter(); + const currentThemeSetting: AppThemeSetting = useSelector(getAppThemeSetting); const currentTheme: AppTheme = useSelector(getAppTheme); const currentColorMode: AppColorMode = useSelector(getAppColorMode); const sectionHeader = (heading: string) => { return ( + {heading} {heading} @@ -39,39 +48,56 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => { const themePanels = () => { return ( - + {[ { - theme: AppTheme.Classic, + themeSetting: AppTheme.Classic, label: STRING_KEYS.CLASSIC_DARK, }, { - theme: AppTheme.Dark, + themeSetting: AppThemeSystemSetting.System, + label: STRING_KEYS.SYSTEM, + }, + { + themeSetting: AppTheme.Dark, label: STRING_KEYS.DARK, }, { - theme: AppTheme.Light, + themeSetting: AppTheme.Light, label: STRING_KEYS.LIGHT, }, - ].map(({ theme, label }) => ( - { - dispatch(setAppTheme(theme)); - }} - > - - {stringGetter({ key: label })} - - - - - - - ))} + ].map(({ themeSetting, label }) => { + const theme = + themeSetting === AppThemeSystemSetting.System + ? globalThis.matchMedia('(prefers-color-scheme: dark)').matches + ? AppTheme.Dark + : AppTheme.Light + : themeSetting; + + const backgroundColor = Themes[theme][currentColorMode].layer2; + const gridColor = Themes[theme][currentColorMode].borderDefault; + const textColor = Themes[theme][currentColorMode].textPrimary; + + return ( + { + dispatch(setAppThemeSetting(themeSetting)); + }} + > + + {stringGetter({ key: label })} + + + + + + + ); + })} ); }; @@ -314,7 +340,7 @@ Styled.CheckIndicator = styled(Indicator)` right: var(--item-padding); background-color: var(--color-accent); - color: var(--color-text-2); + color: var(--color-text-button); `; Styled.CheckIcon = styled(Icon)` diff --git a/src/views/dialogs/MnemonicExportDialog.tsx b/src/views/dialogs/MnemonicExportDialog.tsx index bbb4198..a1c1c73 100644 --- a/src/views/dialogs/MnemonicExportDialog.tsx +++ b/src/views/dialogs/MnemonicExportDialog.tsx @@ -189,7 +189,7 @@ Styled.WordList = styled.div<{ isShowing?: boolean }>` padding: 1rem; &:hover { - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); } > :first-child { diff --git a/src/views/dialogs/MobileSignInDialog.tsx b/src/views/dialogs/MobileSignInDialog.tsx index 06769fc..3b9b978 100644 --- a/src/views/dialogs/MobileSignInDialog.tsx +++ b/src/views/dialogs/MobileSignInDialog.tsx @@ -183,7 +183,7 @@ Styled.QrCodeContainer = styled.figure<{ isShowing: boolean }>` transition: 0.2s; &:hover { - filter: brightness(1.1); + filter: brightness(var(--hover-filter-base)); } > * { diff --git a/src/views/menus/useGlobalCommands.tsx b/src/views/menus/useGlobalCommands.tsx index 017df38..504c052 100644 --- a/src/views/menus/useGlobalCommands.tsx +++ b/src/views/menus/useGlobalCommands.tsx @@ -6,19 +6,19 @@ import { TradeLayouts } from '@/constants/layout'; import { AssetIcon } from '@/components/AssetIcon'; -import { AppTheme, setAppTheme } from '@/state/configs'; +import { + AppTheme, + AppThemeSystemSetting, + AppColorMode, + setAppThemeSetting, + setAppColorMode, +} from '@/state/configs'; import { setSelectedTradeLayout } from '@/state/layout'; import { getAssets } from '@/state/assetsSelectors'; import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; import { Asset, PerpetualMarket } from '@/constants/abacus'; -enum ThemeItems { - SetClassicTheme = 'SetDefaultTheme', - SetLightTheme = 'SetLightTheme', - SetDarkTheme = 'SetDarkTheme', -} - enum LayoutItems { setDefaultLayout = 'SetDefaultLayout', setReverseLayout = 'SetReverseLayout', @@ -53,24 +53,51 @@ export const useGlobalCommands = (): MenuConfig => { groupLabel: 'Themes', items: [ { - value: ThemeItems.SetClassicTheme, + value: AppTheme.Classic, label: 'Set Classic Theme', onSelect: () => { - dispatch(setAppTheme(AppTheme.Classic)); + dispatch(setAppThemeSetting(AppTheme.Classic)); }, }, { - value: ThemeItems.SetLightTheme, + value: AppThemeSystemSetting.System, + label: 'Set System Theme', + onSelect: () => { + dispatch(setAppThemeSetting(AppThemeSystemSetting.System)); + }, + }, + { + value: AppTheme.Light, label: 'Set Light Theme', onSelect: () => { - dispatch(setAppTheme(AppTheme.Light)); + dispatch(setAppThemeSetting(AppTheme.Light)); }, }, { - value: ThemeItems.SetDarkTheme, + value: AppTheme.Dark, label: 'Set Dark Theme', onSelect: () => { - dispatch(setAppTheme(AppTheme.Dark)); + dispatch(setAppThemeSetting(AppTheme.Dark)); + }, + }, + ], + }, + { + group: 'colorPreferences', + groupLabel: 'Color Preferences', + items: [ + { + value: AppColorMode.GreenUp, + label: 'Set Green is Up', + onSelect: () => { + dispatch(setAppColorMode(AppColorMode.GreenUp)); + }, + }, + { + value: AppColorMode.RedUp, + label: 'Set Red is Up', + onSelect: () => { + dispatch(setAppColorMode(AppColorMode.RedUp)); }, }, ],