From 1942b2ec702d3655611a328cba068eb6a6f179e8 Mon Sep 17 00:00:00 2001 From: Amr Gaber Date: Thu, 21 May 2026 11:45:06 -0500 Subject: [PATCH 1/2] feat(branding): ring burst logo, split wordmark, monogram favicon Roll out the Round 3 brand identity (docs/criticalbit-logo-r3.html). - RingBurstIcon: 11x11 pixel-grid sparkle, the new primary mark - Wordmark: "critical" in Geist Sans + "BIT" in Geist Pixel Grid, with an optional ".gg" TLD - BrandLockup: icon + wordmark, shared by the navbar and the loading skeleton so the two cannot drift apart - Favicon: new CB monogram (smooth C, pixel B), replacing the old pixel "CB" mark - Pixel font: Geist Pixel Line -> Geist Pixel Grid - Drop the unused emerald brand token; the palette is now mono-accent icy blue - Home hero: ring burst above the split wordmark, keeping the CRT glow --- docs/criticalbit-logo-r3.html | 421 +++++++++++++++++++++++++++++ public/favicon.svg | 55 ++-- public/fonts/GeistPixel-Grid.woff2 | Bin 0 -> 28552 bytes public/fonts/GeistPixel-Line.woff2 | Bin 18192 -> 0 bytes src/components/brand-lockup.tsx | 20 ++ src/components/navbar.tsx | 6 +- src/components/ring-burst-icon.tsx | 53 ++++ src/components/wordmark.tsx | 29 ++ src/index.css | 12 +- src/main.tsx | 3 +- src/pages/home/crt.css | 10 + src/pages/home/home-page.test.tsx | 2 +- src/pages/home/home-page.tsx | 8 +- 13 files changed, 573 insertions(+), 46 deletions(-) create mode 100644 docs/criticalbit-logo-r3.html create mode 100644 public/fonts/GeistPixel-Grid.woff2 delete mode 100644 public/fonts/GeistPixel-Line.woff2 create mode 100644 src/components/brand-lockup.tsx create mode 100644 src/components/ring-burst-icon.tsx create mode 100644 src/components/wordmark.tsx diff --git a/docs/criticalbit-logo-r3.html b/docs/criticalbit-logo-r3.html new file mode 100644 index 0000000..5ad9eed --- /dev/null +++ b/docs/criticalbit-logo-r3.html @@ -0,0 +1,421 @@ + + + + + +criticalbit.gg — Round 3 + + + + +
+
Round 3 — Geist Pixel · Refined
+

criticalbit.gg

+

ring burst icon · geist pixel "bit" · split wordmark · CB monogram fallback

+
+ + +
+ +
Geist Sans "critical" + Geist Pixel "BIT" — two combos, two backgrounds
+ +
+ +
+ A — Geist Sans Regular + Geist Pixel Square + +
+ criticalBIT.gg +
+
+ +
+ B — Geist Sans Bold + Geist Pixel Grid + +
+ criticalBIT.gg +
+
+ +
+ A — light background + +
+ criticalBIT.gg +
+
+ +
+ B — light background + +
+ criticalBIT.gg +
+
+ +
+
+ + +
+ +
"C" in Geist Sans, "B" in Geist Pixel + icy blue — holds at 16px where the ring burst collapses
+ +
+ +
+
+
+
CB
+ 64px · A +
+
+
CB
+ 32px +
+
+
CB
+ 20px +
+
+
CB
+ 14px · favicon +
+
+
+ +
+
+
+
CB
+ 64px · B +
+
+
CB
+ 32px +
+
+
CB
+ 20px +
+
+
CB
+ 14px · favicon +
+
+
+ +
+
+ + +
+ +
Full combo mark — icon left, wordmark right
+ +
+ +
+ +
+ criticalBIT.gg +
+
+ +
+ +
+ criticalBIT.gg +
+
+ +
+
+ + +
+ +
CB monogram in tab context
+ +
+
+
+ CB +  criticalbit.gg — gaming tools +
+
+
+
https://criticalbit.gg
+
+
+
+ + + + + \ No newline at end of file diff --git a/public/favicon.svg b/public/favicon.svg index b7be1c4..ef71594 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,32 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/GeistPixel-Grid.woff2 b/public/fonts/GeistPixel-Grid.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9cfd59fe1a9db191e5a0a4084e10d896279e2a80 GIT binary patch literal 28552 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Π3`Le)KoLrvyv2vX9)E)w)2xo(uh*&Z^BGbYFdv65$clJh>fae{L)Kk7Ra zE@@~(Lv(w%Fm}Q&%MC~H@bTk$O9crl?9e;q3>}vkj$XRy2=Ij2DkCn6&s2hG29j)( z21m!#;XEoYhz;h{G+sQq3-5=l(zuR}MKCs{A+Uz|s&D0^>PDxHnfQz@cHc-TbQ-s_15O4jJGPkjK$YIp#!xNwX80T-4|J@OOSoKULtXR}x7G|<3QhTVK?dbl zh8Yi+jqY3{-vAXiZRX8OM5sJNoa1&0&uGqQJ@h}cwFiBZ$nZ_swB1BCzKebE%$hl8 zzoP026%=iUV26ZJuMPuz3qv2AZQ8oa=goe~#Cf{OC(J%W-HD@*-v&Fj^Z4Pk8+ywh zU?ZzynwHdr=kOrGL|X!_;ksh$?qAevmbV*Oy_=knO=_L1CI8bn0FR2Cxg2>R46Rv; zM*BZaTpP2zJQx90ggv4!2hzjXtw(*aVWSJ1fmOGZFDl7|j|_ zg36;{D3ndXXq8O%!mg|h!O9eWp<9IO=F!mGGi^1j(!MKBmWmhXTocnd3m|5VE%cux zn#R~!QC38xik=!9&_pJkGeV)aV*p_ZOU=Sl>FlLzy2lZxGCz$|Iv zObmGP%6R)mxG}Ky>Tjw^;~As=^Qf=Hk?GO;8AdK%=SGkUlR|2%0*JJ9DfU7op5)Rs zahkbwC!j&j=**br`Vx6BlM=>bbGw>3YAWy98SnK9JvH1nrL!21fO#`zG)SP0Url<9 zj>wZ!DZAK~IM>1a7F=pr*y&`u0Qu{ef71!qE zNeoT4WIC&Vyx8AW`KeqVQVR8Ke`Ntt=}_R}0vb)C-amQ>U9owcrx>s!g0Vj z1Q?8o5q25gm&%NfreXH6`Az5TucFicrkb(1edy1&fAEDK1Xk;F8}!w&SeQU1D{Yt8 z<5=uj7({=WGIfW|`asRA$r%&VZyF9b6Ftc*Bg|CZj&FI1@Us2fX&JSSOw6?eb%ieN z$P30GVTr&T_;9oGxilDG4Ev6f9rfvakquw5eFOC(Z^-?@Yc85Go6EoAK=P%^kPXbM z-{fy?M~Vybc9u<`cKsVVvx6t3Q2*-Yo3rFM=e}#)V&DG+p4?pwY0sTCP6kDHDg2*4 zmtPo%SjXFhbe9FK&J@~{{x>OpEO4^=pTRo(7EAht^(BiNo8jOwlM8$oAROVvyE|&ds-`? zM|_p!*RzV0@EazUiA)9Q`Wj^y8vr@nHZTtEKrm+Q0XWket>4p<2fW5k3ApamW%zPPlvXC#sYZJ4f`v*2w1dKDX9QkNEEiejbuT6;AJx)b@IJAz4HUe z+zjcC9QB~c_qVRc)vx~Wx2&nvLLBX8Ck|T;QpGuxU!Ssn^6-pqzi5WO?yb&h>J#vo zD8UVn7+L&)(X>?IF;FK#%A+{UKC6X^)EO$iakW?{ z;FS=fMsAo6yd{s#onU;)Rcprv!=+o?7rvwcb@75W#t>dZXS#>{XtQoyIW|)s^5Yc* zI2Aq3uX$(Pn}g^FjKiTx#Hdj%B3p8Y&U|ef^>GOLs^^oS)nIYBT_aq_Gatqj4iP~o z69d1Mk1=HnsvDQ7xOV2bYU#{`g2~m=5c2P}JKCrXrhD><0CWa~=U`mnG1g;bmKj0| zt~hqWMg^43q*3+nB;L>eR3_9q)Qz^{=!vtWHBAK`q6%BjZB3Q?ZBfh^$%zDy^ZK;J zSNsv)MfDbH_*5TGXEeUW59kDAD-79+KQwxs%;gN+k++>wJL9R9yKd*LnTsq`5;k*Z zv;FHMsDF`2xIVUV`lS*18;gtk@z?x&&ncV7Xn1P#I$zOd9xFp^^EHjohZ}yub#VcX zO)%thJ*l?N)&Qt9OuwJ>s3IZpz4s4sS6XN2w_taqw|D;tz1oxDW%m~DbOS@C7UX^W z4Bg&kO})EFjhTR6{Teg$OfLA8Q>kVD#Nk>l)jOx=yZU=OGY6sxmS+idO`rXQAvz`Y z2vnS4O4|%qhzi6CP2yE#Q#gwBxWU-A)F#)Vv7(oZ6hUUz1W0B;iS9q9_canP045|K zK6t#^LNQv+g4B3ngFq?Jesz)a2cTy>^IPb?!E3v-nn1|iARdC5r zJU^^<3N}Xzm^dKjq_uo?T$OLxGb^bDVb20r`q2`OA>yGN4Ck+rNvC_W;LXA=_ZC2X z>?hBcl&ObiamH5{4JIdTz^MBPvOGS*3WV~Y*?jRC)08W?Cllp)N6_X=fb&%yY?d)Y zfG21K`}RPguA`0NQKv`=OVOm4`5W}kIqdgv8MUwlF&0v# z2&xkjDJABa+&6yBa+?V@>GQ-bh3~`viW}7lQ2`SF4t)t9@=L#W3jkfey^a71%28}5 z2>R5uW&9cN7aXt!#QKH*%BS?vR+rqE!1e(!drXo~w^OdLa}x%bsUErG&=2om60l`DrBfpSc{#4dcqx;Qq^h?1AOJ0-anNA=Umviir)0- z=la<>-+B6;5>q)bh3)cusTVQNq+Ak)cz?cw{J%C$zYZZz1iLNM2CMBx>wlh5&iW?C zVO_EGmRGR(A*2nWRqSfAOVh;evRAC$aVxCfrh5f|>v*07`Zh{nOU+=IcC$sSqQFLL|Q&;uq7j) z_&W@Pt*JG(#3mh8qzKM=)^&G|b@QZYL_&wMqzmwL^66XLFgm+hs*Z{1`F`i&I5|l; z?)MgYD%dzA`En#<8C%DiH^wTy^3ieo#p~vg-reP5W7*D$`(isicLG$jUwt<*czs{W zd{4&zliDUrt~GJaJszVTa2V6chreARMr{b@6l#7n#TC-i{I5HQ4aGth@n%_Gq%=|$ zsOd_8hoJ~sTkOL&2C1wx=`2LT(Bk#btx+ob&gzz%L`!O*{;C3Ao(cqG*I>N=$VjonO%N+y}`>$`SqUOiSj>r4A|)c!E{>~`3}4yyWv{sqvmwo z#~21x_!Xg|HBSF`IgS0_(n3)`N!Zz7FcjswAjfMx@ma^ilfQ7uBj z;gSFT`?S%$U&a3+zg9mbU;hQrX1f-E<#&NndN4Zp^MKNZ7yf^-rIa28)KW?@rL>1?C{Ri>Xh3O1sYj_tX+$Ze zlvdF7L4i^Vlv0n6qc)NAUUjjqu9fXKWS~B(Vj9>I^@=%5&xpJ@wlAfQN!?klRhi&I>suf9@V&vu^5njq9B@%UNgy~$@OjwijNp3OHDKAB+ zYmchOwM-$d!E`MjMSp^>3o~pP@OhZ&$lU~S^h;MP==2ezKw*mqwe^@_)i_@v1;_lj zgduoKbG||dD7`q}pbbUskD=00ng%Req7^B5^Gtx%=u4mwcYJ!}qZWE~@+6 z=NY<+frA7q3wiLv9$G32#Ius{LYB|c!K$nU7^dVr`B7^3Favz)+S{S?>JqPEu7Wz7 zTEs{BW8RwA7He*yPVr3+%PgUXt&g!e z)Ly<5*9#fup`MHWJ21?-YosVo}STLg#K{tkN*bN z{KNid6{h!UNPj;Qn+i?hB5K%Rz4i1nHr`oi_oEZBMDyR}7|Bigm4x>4H50(WhE3&7 zs!nr?pyusTXTUD*aaLZ)P4%)A8Wz+)$9egPuN)u_Kb7$ z4JqsNPIPsF?qR36go8HgA!3SE_oyiHZk>2+`2Ua<_IJ={b8w{{>Tdpz<=8~$tT8-g z*%DLx-*K97xwr$%HsssK&g*&faoqLkzQAbS1!!LASH~c&d-VSf68uYWQ`U;71b|w9 z;{H$Fe}UPGQJaqnFe<1unaJrxm^#)nzAy>jst@~IkoE<}uP=r7D{Hl?(BK(K_yCmH zHgSu$G2NUfc!{lH-bQdq82ia#A#q5aJhHPZmUhx=0|8b%b3dq{HM~o`>viU=sSJ}X zrL5Y8yt2j!?HzP@x{Anui2z>nE1#zKuOZz7uK#Zg+RY=*CU<-Gpa{vQ>1~}Yc7KIq ztxlJ~!8wHOp}I--Qhi{K`)Uk7@R)LPT0lbfNSY@Ik_2E-wIHRMbQ-Hoioi(ie~MH2e}lfCC>=vr*&k(MglLLUL89#jnE|8^hYV@kEuDB1 z?L%OE4T%qv8WK>0Mb*4R7lwe@bpF752Gz$?Jm(Yyyw}QB`7|mr`JKZsyUJM*>v2xV z&Os0bF=J%x#ALy#_Q0<-vA|Qj3~9#zy^TUChxjVsCz-oN@zTj<4PbwzpCgAN38xwG zN+BJTD0xq9b3m!DdVqLqvOe>e=028%TKAVUz@i?s83-Qi8 zLyWl<|5T+A7)iqHHX!mNufivp`_hQGBk{Ns%uK7BbfC}}j{*rjau)VH382esu zNEm36FN3)o>T8x)TvQVpa6(Lq_RZm6q0buEoL6G>pGLPH^h3~}P)eC(e!^l`O;9un zq&2*$=y)74#_!`(zGfHPkro8zrB+F_vm5t?HnX`cE7{8_ zc}gG$D6}})Pz6MhsYR0nV9V0}&e85q;pG;NH7-jt9wl>Ohi5Do1O0TmaV?*K(1o|I zszO*cmnycVh$LQ;wE&(T=a)PU(EHoYz)r;iCZBI!iuPAP^ubFOO+;svbd6YI;i}`carzhn zxGrA<__Uv*&%VNH&PW$B_eZ934-dm~1Z8ww3EWH4=mmL3Q%bu~4;fi#r02g|6h(bo z@gH%#TC`PI&W8yJSBARJYUO7SuK=IzF{%nr<bGjN{ z9Nk{o7B|~Dx;wEa+A!K(+6R^x!H#P#siyi^v?%bCc9Oi;fbH(ZVr`sel<3iZf|R%$ zK9m;B-mh>z26ap;1SKF5uQ`)Kzx;Z%@2`a1)!g|myFWk>fCUdxWPL5qsNBaT_d(l7 zPNlVYyDRcA9UN>|Anca{MC%^vCPc z5btHtD7sQ3j`VRU3lMhm_JtSS1BwY~+)9FG08V z@TIO}0Heh>db^nid8COcD9qgf^r`A{YW1x7;>Hlm>z7Cuo41RiPP}}(P*L-4xcU?_ zCrxU0ZXhb-XHm>_^Ek26S6Rz0<(Q|%dMh?#DlE`=V!Q1o6hZzY^v>kFN1k<3ajjl? znAQ5CSa^-NSi@8c{_&Lw;F+Oh3qkO0k_2o*c)7;`-`!ca_ia*|K<@ttE^0qSFfngAvRRvg!dc$s)|P)) zb&DP^KT{R7cjYESjtKd`3E~Z<*ZLJWw+!QB;OW_C%sDMi5=#~l76!ELq>B(wK<{NZ z*@ZeD<}I0LUqJ6gI=If=5$03++9IYp3mO6HY9D1s5^EoMzo+Ek{oVVml(uIqN}_>H zc9)@FCiq-n4YipP#n2m)JR<~BcG#WwZNP9;J@W{Dm0t0AJbm6ar`GNoVXm)UwHPHP zo;U{X$TbpVl!a1p-KYzVT&$=yJ=HPoGwm zfuoE~8VBy{RjlgXzj6v|_~EGfxv%adNkZpuPTMYT$n4e(J8o{G#jduiMiAOSR-`&^ z%oQ9y-Xr{9qdzuZd4;MWKUb?h3Tt32n<1>Hs3uwBIcDSQeXzn+uX<*LvB;|$_eo_R z1^Radx2+Rj6bMD@9FlCvdMiGEi!M)06ZfTID(P{G(`cS;k@2Q3%6z99Uhwd=2+ifm z>+Ag|mh^?{C4>R=p%XLg(M2R4ywkL-!ry4bgqZZsf8N0c#6sr8%J}&Bh9$nYSktEfE=llOCEVy6M5LJOn zZa3Fk@Ddg^?vC;jPxT6xs$>ecfJ*T2l!H>OQ16wvdBZFkTg?NqBkaE;h+O5HiRWIy zZVURrv!SCN=KX8{A*#lHrKpHa1UscBq$%(~v@ndqRqBM^X2z)zfRIHBH6`9r>+|gl ztI~K)cNkRls6IWF*(}{Aib73)VXH!zSWpTCQGi0cWL$lE$zFq{69Ne`;*ssibZ=O=>=s2YAWJXt8I7DDBI*6gPK< zo3~zbR)#d8(kxLj%UvOx=;WPBk0Bq+Q`H_jkudUozL!+VXS_CT;JF(CD(aq21w5fr zoZbelOoCP8jwwe_uPy;cvxKB5D?Pp=$I!u&s~7mYVZ=)nsCvh_@hN#cSz7MscqP}E zK3zx&mw{j1)cnvblmA6+CVi_Q^>u9;(6gXqy}i&Ul1rGM%ArR{PHOZ$_ZnWcxBCz> z_j?TeBHg%5C9wq;8H+GQ!ujPUSy-1AFHX zVG_EFTWX0wNl?9V_Ig(gfGztdAVC+{gDPNJUC}_LzV?Ola6yFHQ`H25H?3yWWD?G) zhY({ai9VmvohVOpl+=o2(*aH|vCwZ9n*<*MtY!|>g+M{Zn9B|A5wY;O>fcxs5=4;$#h29WKSc-^~XnJZF zxo1H+A2XEFBn{GIch9I>%9g(h;)1hIcR$#{)}%={*f(D1;#N!RZJ1Xze1MWt(ofM< zHbM-`wz|QCUfypz!taxXkyB#$+R`zM1oPqyZkNF35z>dcBB`}Jr<%%&N%n^t!ru7W z$2Pq|IMjt6+F&f`x$W;^A)fxlKT-Oj+E5s;{KH&s{8)9Y#P-&Iio@x85qP9cMq!N^>A=5d{) zQjgE|FY=RHqFp^+AuAyIYv5MJg!%$e@34ost<9Q8-`_=Fe?}dxZ-a^$Hf)NC+5>m- zVJV3SJWz!*-tTwO?d@l-DLUh~21;R$gl&^VBKzHUvLdsms@)D$7=fzq*MW@qiMuRd z_JQfvHte1wB$XXqJ-lvN;e<2#kwribx}HcJ3X>(+&a!fJeAX2-T2Wsn^r6S(4bRI{ zWp^W#-qfSOs6oSeDJLURNrEbx7a0F6if(^caQqNND&eAIvIu?db|vWUOku_7t?Sw8Xqb>ob9HDB2xrp69>y!z=?&77Dc ztDV*cT?HCn5-TeRelcAQlUnJBYoa1?z=5+js=rlc)?setb)Z<8?Rv`WTX{OXxqG-u z5sP2+>M8f9x*}e-BHrjf(K`_XuRWGbT*Fqj^BgR=kjg_Iqj6WEF{0ej5sw5_4b;w1 zMyFc{I$+0Es;WEFf{1U4H)(x9EQ$O#?eTvqwB}TUe7rCponNWuwkotqh)EpK;8caa zAF4c*Jr#nAumXy=`GCb7K2k+2=$NpogBI$ zf53;6$K0vlY}HCEwi)e@V$fGk9QV+0AC!{N8L8P?CSS%}Vytl|w%zt3_A#j7HX+Rtl_t zt|2*!1uJy|poj)-(AhGeI_VTYRs>~}n|2yCHhhfk9bNefr?PcQr&D-Op@N>&N`cfO z@RSnVIliiOolp{WD5USR_g#exS8i+{v7q~uT-ukuFSNJfUzsGOqvZ4sg7zuI)eJ(S zlD2CDS_woSk7K`g-DRa`w`QO(-Abcr6ge)zWPUC=+dF=jm(jB{mWB8%89i_nG=lEj zMD0Ne!<`U(#t8?>l`Y|aEFA^60UUd6&ye~r&+uK1|CXGQ*2LeI#rJELXla^KLjDCL zLUmyb%S%3n2l;zr>P!9s_?-MnKIg=wU@#|M@Fs5WRE5&-@Xve$7;*DnhZ%1TC)p9Z?{ zjlu08A{~lBSS}GF)R*w6Id;8pJ~_J$s<;SuAP&pV4ccfkwyx zzIw_Oi$d83Fl>n|cPCR9HaI?zLM1?~Fm>6zeo7pv)&k3yE7jUKS|jf`P%me6iYfWYD(It!>K9FTDQw{7C8g50d z(r6LkLF@0+y*8vQ-!O-vKC_WB4~(p=*#tnlE^3-!c9rP0aw&76OjlZ8OM2`A-h_K> zjN~@vY??0%>PK3DQkw8v^-1PjJ~!zzvUEvp(pHm$?uGdh9m>ay1DDe@hKU(75UD8< zodCd4r?+yzixUhLRiQ@u+LAM$Yu;lFO+EV&JKcXrEje(1gXvs9&ZJm!d1Vb!m#6Ru zd_%89C_<$a!7BNC-OF;N4=(3zwN+HO3Q#G}44Gx-T!@?(d-E%774OZ2qP{L zqc;*UlJNDcRdao=ygKz{zD8^y{Q*?$F+=1Q-76U=5N)r~6>Val!X4NY4_odGZsFx} zXhSE1&PviVJ@sAe%IoXi=HQEy2d%9AZ}u!dtvDUR3;pVgZgt*9b`b4OLHGzA48 zeFV;{H&ir;CcxH$(0ud>=Q9!z<_FProl%W~#xye=^{eDmn!mA>(geT!b~ns`lU^SO zs!iO?bM@)TFL;%iXJv)_qHQndk3=NzpWS4*x&hC(f^VgJ$!n@1>&xkTT{#s|%P76d zV4?*Lh+}n2okx!Gr-JQUkXec#B|9FFnYJYfqrGxQww@X9QN4w?Rq;4Kj;>o#tP>FX z)M+!j$w$dUj#j6P>7v+Wl?)o4l1>xo%8p*(PN9RJP|)zk*$G`SaE-g+{2)@-$`5W{ zzyH;<%`v=}9o*0V|6lpXXmp*LriaIX-ub!d=aJe$|NOOH_EVqX$0w?mV-X3HI8}sy z(y5?>E>LHkmS`Tm8sWSd25B5#`c~ib7uWHb&imK3Wm{a^k~h<9B76>_?Q|*kH%xYw z2-mTaV5*7B$mb}6KR(J8EIVuB5^irLCFdkOrW6s0SmXN8Y*nZNd{J5vA!xZKPDb$g zs&)L4Tv2HiSCb9Tv3x?0WPueEalT5qBJ^iY^?b?%+PM3=# z$Ifj-cY)uAzNZ^Yisle+YWuZD#1lo|f{)Dd1O6m*dH4jXu_or}j5#j)uv_slaFNeb z^v*%+*)IZjeEv&u?{8Y~12z8~^v+J2kM%j`!~9C4I>l>l|6Z+q7v0pQFpbrE%{);$ zoI4k%wBkD%`=`0N1Yx}E%pYys{KH*}UG%SpZZ)4Wl+rJnLKIY2WVz8OEHe!_mbeFH zMt*w1pGn>rVe^arn)>y4?@PZBw_xg^S2dB}yWEFaNS%2+^~;^*;5dZT41bEw)faG= zmTrLF9XIAXrxi|ro9op(gL8F+UMA4Z+yYteF2$u}u1T+XeGl7RhdH++a^BT>z7_O1 zoow&Vp_|@6lN^fKmoCkJ`HlI(z!mHC1+}9-{)RIY-RUEUJMq`GXMSifjAKV_%YG8Q zd|hSqvWM^Mh@%tks}OU&ik>OSYve^7@UbEuVMlEbeE6-M3A6y*9nZD@{_T1FH@Y}Y zyI#b^E}@wUdv!e*ky7m_D$kdJue(#YgK($yWI~h2X-s1f8^XQJ86FsZb~}P^FQ)Q{pmtG|aI=oC{Tmtz_xDiYP)j znM>dxp2?=l3+HjmK?}JT9dV+42`rd3Q!KzyB5BjL!XBdiYFQ|f$}JTT`1P+f>^qrh z7}<~k+%3Sv<~NoVgeGgyVDSNM1`%Ln?@tfX8A9rszpd=3ujPVXxbsBoHcUTvsgR zAjC8S5SITiqV#d6G^5N&@at(PnX*$waE>zBEI(}3H(3nL;_ih0lTibXlN#Mwklrf;((eKNN%UA^npz9{mZ~nI`{Od2uX7ZpkIal-`kFAX1qc8i{-}zGWE%f2s zr#m#PA(dB%)}hGmc;AgUeJn`|*QK_tdq+W9QpWq!9Mzd5KH*ZtS6qJ_?zs*UEmz9Z zr7a6tU3_RSHwSc7mUc+Dl9!TJS*CZ_N(-2Jy7XB7>5rrGWF;wZ{j+pqm94}~Nkpim z-TZ+tHm?`tJ;USp+jMNY73C$b))Bn3;Tcp{yztU@kFryLwO@i#Q!{}sYeP4Oy}%`+ z((%P4Daxf+`y|iFs)IdT_1~|+O#{$VAH?^S?buXCME2qK!;F9B+vw901OBM2fgubM5vf#391|`MsJif@>%A z7FPnDckZ^5cafi^Ua}{pMGU-(C!$uQwbVbG!I&*-;BXclpu^f@OWwTORugjOrGg%% z;gAzYoY0?o%b~zl(&O}6)TCrCMP~lFXG%bZlPTm*yCnB)Ns8q(-@pP!lIx1AGZU#B z9b85YJn6H=lu=A4r#YLP2HW68RIy8zy@*cBP@9<>HQB%7#;|5_O=l9yWaM1-ls&Tp zomWbmy`k&~nBA}fXeoYcLeefW~fYKd&38{DiZaPj;T8Zj_ud0su0&@++ zuk!Kr=xafM#PhGDUvX$)jvV$%RDpMj~0KZrL+Fwk=&>Lv(UrE%X@6!>DfKEbP{)}k|BHD z{#t~`ECoep%>YULoRMk#7nT}eHY>HP-8BOtbuJgt*T{eHr>&L1L4mLtdXU(e*vTJ7 z_c!-MKDSb0>FLAvyx%yHOKS-G&Z|E96pC)DNBGkSP@u2lvTz$lr^%?`37wc02mGYq zd0O-JWgP1ob$$@qDYdMZlwZ0j*ZvDV<5J5Y*w)#Wda&BlLZs93PJ;6#Y_3zvn(VA& zzeYHAIwp5cc@X9b*+gAJ$=`Gbz`e`DhnmJCmgX!-8L!$~9UA68wm2uL+Vu;dAYinR zbh`ctG&p~R(~?PXYb0b0{B)WKz+40GAEjW=u(8t;8b$uZzw+hTlDb6h&lPqoh1N-G z+x@1gZ6PK$y2*G3{t_dAMtPgm`3KuB`tE}EG)W4uT&`D!xT z1cPT~O>++8yS;Fa{*GY}mpR^c#3qAtOg0qqh^mR#8u2!KcD5m}g(|yfNH1v&vy)eh zzLDcC=JwF(QVH6EmeP4wNwhds?5$2XY?2Xxy())~z2;XXQ&!cdH#@#byW}WM=~~h$ zSxm#=mYUmi<84cWDccCC+-=NV5t7CNbPvGvTOyKtlwmJpTUoM4d&!eurNWm>u3j}Z z{ikFnhl@1J>8lt|65@zFKUiC35rP=%Iz(#P%e1DaIf#LyzXi8S&%M8szQ@k0$|ZhH zEf6&nCAPbt$8R@P=wMiHtYQD$D5Sh>Dt7SZZ`A+GZzmOCYwbQ|mTy4?85j2Gv} zugk?0y$sbI0a)+Wee~2flmJCt=^}nrJ7`tfHsczLZL#3@KO685hq%zq0{Hnv)Tcu6 zTVK5KTXD6aok4Wm;V@kZsDzv8CSfJKQ@W;+50hTlIOExed-SJNas8WD`R&|5u9jd zU;6;d#7q*bmF5Tu!AvXZd`{{P?Ov~!`Oy)*wX5}sL4Iw%_gG9m!#iPEA2wuXJYH&k z0BUH^@&13>Ia%6W)kmL28xP=RE}^K*&vpO5T>S2xBacgy)gkx8hWR|Ysi582_V&bM zT{|s)y*0H(7E*oBkcABt_3}K+X*$g^zOlRR)GDhow>Y1; zDo-mj*sm3|vm8DxICYE@OE4LbD$ivn(sz4|4h$S15k|lY9cGqDP<5(RhyUEAz_&=t zzuPCeYj|5#PdK%T%&kYScumuNf7x!t=GWi^zTs34Fz}Y54i4cZdI|o?-K)F&N{6;; z;=EagTZN5rZegxs-?7M_bhMnoP{On#=esUq=hom7GT!OV4F^`aDA{7r>(B)Qh-jV6 z-mvlqaVXk~>)N4g(}M`BkR3U*yhQ<@mqH*^=+pSH&b?i1_LfQ*-+9!BboffUUQua! z$F2(Ho%c|BC2jhHJIREe6()Wx-6$`4ul*j~|2@ynZ;#KPRQ6RH>@v+Z$5c~8CwdA~ zcg0Q>$H)GRypulG9aInYiu+m(HF=>ggc$BBnauGg$?mDUsss?ZNZSC*dIj;kLgcUIcvwo_A+r_a{Nq4q>o=VmIp%h7M z4%r4nt*g}ze$!gOZVScMR6&+Xsu?RRsgwbUi=yuU8d8bnHk2P!!$N?@1MiTamlgGp zKS^Kws?J>OM@e=cnq)BgT<%a^{@bQCMNx6Mn*=RJ3bLc^{m!JE2<90uetBK>3J<7x zClt9h!j7Px)(X)vBA%+C(ehvYH#s9fWs1HVB3P+QUZ`x8O^Dn11G&LehI&F9F9=Kw`WQ;9RQrB}8^T_{=(XgulU6y4hL_(E&QzU< zh?z5U1n~d7v;pgR{?ARI=m!>!+aqi>dF+qDys`i8=nqW(sSKX zVWJ2lVOKrPfW-i*^XS;HBrF(5sl29bKNnitb|uUs321n;DhAB+;K0fi9CSib8;iFo zsi|z_A*zoC=7idLR6bEnkIvWwKjVEFkQ0c8g<;Ot2;3@F#6HollIrFM)o35i>YAf< z&R+RBI%j5`>+y3j4xGY<~4HhTpcCHwIWr?oJ!*gmDk`6OHrwD(VW-|Ix+Lq$^h(L3BD$+xakpDlrVs+!g!PbPdYUr31jH)X!BZ*Q``Ck%_t87(=+0xwuN;IS=(dw1lx~U!4n}<`L zRddEx)abN>>Z7v{&^xfaF#!S9{ON ztdP~AW&Q2K=37%6e_KNTm}%z6Jp^-4Q4N!c<-j=q5A#QTtP~jW zzCYGLe?V#gpgO+Ah^QcoOsr^aj`CPQc?}iebWn3#CQ{WnFa-*W9JN45Srz6{Av-i# z2pp#J=MFu2c-XP!I;X+J&F<8h*~{+4$vOj6$AB9sO<-L;7-+a;sAsAkSr35f8Z)RK zZ602a-q)gucZ50S7+JvDz@`;;U%-0{qg9;>vW-CB3lj1vE$e5Xqm_|jxIm(;q0%h2 z@lzQqDwiA@d&Z>9%;8q(L}kQLgXRCUNHfT+qyFAXv?C4`Qk1|<0G-=DS2KM=d4ety zi?+UfbX%aUSPr$l&ry{pu&?SbX=*YKA?###vDtHw>d^%GU2Z6?rN`)TdV7nbjS2Cc-hP0I3;p5R{TRbJgRZt7)ap|Vg}2n#cSEN>hbAWH<>AwB+Hgt2UOQ%Xv7 zjv0GVg~6w^%Hg*)=(fGsy)?mRwT;B&2f=Q0!w06GkIYJig_tXpH)UFtU`RoYq1YO+ zwkV}6LDgh>^ET!VZI^Sda9a_2B73RR5`HAHp*|~JDSJ^d)u$Fx_C^s-jUlXiC^fJ& z$mVMFULFs9|1g{vbL6qx>b3UfIN7>I&FP7?N}R?FmU$f^omkyoF!x$v<%{N@oo7Rvt!W1PNDZ-8i){cDMRFg8LEQgvgkKZ!PpV^+bIW3o+E2OR39(q~z zjC~T2HEOd;tZojdMi~8;>d~!y{=6kUZ+@Zjvcd?C7@OxqV7Zu3pLs)%(aL$v`aUY9 zHEd()SbBlj>X=?T=7|kWtTm0_;xU5doqohzMHARg{C&>qXWYPuc#XFP;kUpJ)#kQR zjSn;rC02vo&IHr#uRY1u)|ISglvH-PUygizRxN4)v*q~Y1p8A&jGWC!_X<`wtZuuY z%BE9G6NVW0Et@%M7`D??YPIbA3%3pVQvCYYvVY6-Th5TvPfG- z44fI3&8NLwb8cwHb+q%BK}fkvpn)>9;rCT6YV*>#ivY0D^{q9DJ+hU$9+S>5r7 zONyweTI2zB@&xHXG%3w%Aer1c{I0wbRQv(O=^#q$_ykGPmYH#o0hy44e1O%RGC|t1 zbYVl983-By$H-u>T$hyCR8pt4iY7~GCU`@prB^4(-mzJ`<3Y1q)PHG=P&@jjc9+r! zNs?Nden-)p{JbIaRV@x?2!WVJIHZsP=vGd|GCvgw<&tq{HIh;-Wl)%$Dz#R3y{zjz zk7H}4^gKcU=-06}x^<_uOZg@UjgwWTz&b}Qt`{b z%8zaOZ(6QAMi2*Evr)4@i8UYTfO`WifUd2}JdHzcgTP*wb^D8Ad8E5E=jv1(vqQ3v zb|$dFz4Ol1!i%qbFP$&HWHUUPL6d$vLjL&weOyxHhamk6fC`8S!j3^w@e)&yP`8rT z_%#;N6Y2bwsSi5SQWZ+&atI+<0085y>NF+;jiPW#V-$vSbZ7NB!8({quYQq{CpCU8 zst=ZivNJ7KRw@@lJ48JWVjDORk1$E&#FezbIn_TP2sQr6SC*vkWnQ zt}C8i!4miui&6J<9;!YN;x`|{fAjt`QA%F<|8GL7dn@NT2Dzd_K1ljc43dV|5m?yy zZJNy;Oy9AN#u~^skVdyz;qtb0HZ{3+&Y_R8UF{!65U^Sh-+m|=CWGILj<=jjLS1Mz zmUA=(Ycp~cOXbQu#c`6v*9-ru#mTa-cEvW^@FY&|@c@$K)AA7`2!oEdw81rp9)M2E z753Ie~?nYUC1226>E<&a|q@ zY|KlaT0)o2#?LOWrf;^tYSi;)e@^Et)Y`dHo+gy=#dUJ!VFoKDuJ?BZ^)A?A6Kdn$ zWgLRZZg^CNk!x#IR#kaD*8}fg3beYP>wyK$9sB(pV+B%|E9$NDR8xHspC{4e`~^&6 zb2vi)EQAO^2T;&I&W(83k@&H%VXY`>t<*A;;grr1N+$rbW;YU^*P(CO|%i}W!%1bb>? zZCncc+C<_<_mZkhan4R6Y2(E8+OBJ_J+^JPJnr^(?rghzetI?(UVYax=tPXVj zTslzq0_Y4l#+}4n@ z8FB;h(?)wbW~sKhIo@JmhIoMec(EHXMKNut6jMJ}JBQdtp4f7-z?B^;aTJ+UQeHh~ z3U~KJWn$y2X^&m5V$DM(p8p2*cpi+GCo~VPnm9Z>0yZJObbN8L_!;ua>Sj(T%DGz2 z4X{BA&%{itc(rY zI5Vx#{CG43q{bD4%=4uYKk&~K${;+iIG88(mQ3PA`5YN!X<^D40OWr}@?BC+97$@)L~`XNQZC39XAb

j(qJX*GJQ+9h(4`wIi?Hr;E`nOc2g%?XS!M|r1zGgz_$}Sf4wGdy#tw2MSOWe( z2L)n(I_DQBf}K?KdirA=Z+oA9F#Vdt6oiHBfH{XCE!-SR8-lo+w&2{=aYh)nO?bUtyrGrRWeCc4qtd~yeh|}73Re})ft+a4ihrlRD z!BS3vty}>=rTHCm5N7?reP)>HNu?%xOtIPA^pVV!Dct0=U}9yMiF0Ds)0J5!o9D$; zwzAX=B_ax+?s>2|W-B&Bsaf2_L|0~;X$N~GN%EM<&a*d1fkcI7m?p_w6O}5AXCjWx z&wN@*FiF==H(O%T#CpvK!=^h~k!%w^W{#=ymFg`~@^$-r_+-0}*Pt5VX-fk5*g|4* zhS6>%+zSSiMXWUNHQS6i8`s3pF6?PWA3 z@+St9#h0dY>=`14#y~0C>_d=`=$6D2*C&>!Kn@Z;vDwNLvmkN`i&YuiX4|KO@Vw3FrBMU=m3 zqbP^`iO#72z9GiMT-0)0?Kq)8wO5cj&`YeF3RXvj=r-aC)$PO=MjfA0&mWvrCxxps z33bsOBo;wZT@|T2xlXd)xz(-iCh6l8r+Lg-^{A&6>|!^4eNR9AyGv0;ODRS(f2vop z#Yru`gc1#KPD##F?1GZ(U7z~a&)q!rFQwE5n8_tFZ&kq^#UyevkBr86o~=s$kEw>1 zj-G*$iJ66!jh%y&i<^g+FI{C+pen}iNvHKg`|W z?GwKI#+97}%sfNpe0vaBh;b|R#;=nEqC1Wz$3y%oOtGiS473U6UkoU11-@~ z9&H(4X}MNtrB-RR)@ZF>R=L(`y*6m0HfgiAXsiCKZQ8C^^r~Ld>v}_P>MgykceF!0 zIl{+mVzYK>xAtf+8@P>7ZYPXRgwvTW+(Cr)X}=C|h*o~%h7Rgoy@#du=|~5<63N@x zY^S?zRPikBaS*~F!TNx`>?5NOX-6RAAie9b~CbwnTY3?JdIN*1w}Ab#X0-owo@y1A1ztY#IjlkXJ+%As?(>c*GZkyX`Rtoozr<;&_&+YC0*7PeWt6rrUo^t zNuTSw{-oX@z%Wv)X?3e_EZfY=($5Er)YDQ{tHeS} zgDqx9p>^l=Hr99HQQQ>LXR{dAQ+qOSI$CzYL^UapqXz zc@6hk9AcS+;(X$vaOn#F%pS>5tF%8WgF?6Wg+xr@U{pYckW`%oBJ*pmCmX(T3o)&t zEl))Msx=z75c61GNqFLPKT47|@}fLYTpWLwD7hV^c_HO1QlyNs%4TlX&TQru zUXdp%3rng+we4GwOAkyzA^t!XK>t>mfHwf`xeO4N0j9Cgfx|%-g+CS(T(~Gi0bF?S z;K0R35X-e^Ou?&=DhH2wcKtDk-FF>ft?0jP?Doz~<~e8yTsHv?ziLjz$g!%Wwk4;@ zWJ{^VaXS0liK2tybcWwVp`pB7(n5i(vocHP5!WpBh{?l!uelNlgojNRy$el?>3UEF zzm_4e+18!s6)bWFBAJ(|AO0YPj%wmM(_*D!%P^j4K{qiN?lWag_U!#=dhM+}b5;4W z3)#)eNzSthEAmL}^lNX-1IH@0O>3WOFbSROy!1jjR{YQ+A^gi~h;~dF!IJ1L{bFtX z1eS0-0HrFvl-mLc?c!SK$;x@~Gr$XEalHU(+&fC43ZuTGHv7>YY3W0s2?KVMzOx7a zjIW40W)V9$<+sTjZfA(Uhta?N0wFmr9DHn0fCxp$#DO@f~}jSsQ%dT!8HPlMC=_QmwioM-fN%=XUp z2_Xanivhc3ElTlt8B;G z`kwfgI(1*9gvRWw0>Vwy<(K3TEn`7C8AnJ``d?l8zbxB_6qcit52PTw_X7kzdV9N! z>9)8XruhHq>hr!TsiYQAm7pcHx}?VW2n(DI?V8%G<@rw6Dey!-jsa-a#1UXjG!q(8 z@buc!U{fhDdXvhxx&RqAq@#pw)&!-aqIOYlSADH9f2#FUc~bS^x&EEiN|0?r>?Fuf z?QTu=rC-{R?@B185}VRX3=(9SkUJ`7Bua04JA+?auMg^0WAEg)5{=Etok}Jy$mrA9 zpi_rNM^~cJ7uU~UV}mOcpyywcbwt6Hg8AE{Ow8nRP$}|_OWp(`K_Q@OqWwRcX*+*b zJ7>u_hl(py5Zem?mnl;;tJ&48~-XJfcKy3B+aKm$Td$R1k&5B{t9e$vRVBT1xnKI|`6sI0^Sgh2{7+mO7=S%`-w9Pz8Y1Zl<;BAxXqMU?6RqQVM5 z@~tzeZ-Iz2{E0Zv9i(mrB5hE0#9LfMoa7859~+Q{5?8r{OJ^%nvd9w1P28Mzkfm4upCZlW`W8OBLP{Yp)kn2?GQxKpHX!JmjxyF0)t zaA)rSrrPgR7c`-17mh@$9wNXXBRPmOi$6(ajL!@si~b5D&GdJhLXw(SR5rPUZvtqDo#^TO2tDe ze&JdrD9iF&>W`a^lNHX#XI6S<*Us?Hh5DEac0N4w(le_#^M_~r>zV$23HX>BRXbbgZ(@5K zHSJC0G$@({BzCgLFQ!0Ie0EFf939pkh?bc$(EY%G$sAj!f=BjQC?-XlSG|%4A zXzbf#AF^D*jLZD(=y8mF!ail^X!DJBYod)@Xr$=YHu6cPW6?aj2)B?4GG}bNNo!(s z`Jomlfwn*PJNuUXz`m#T6n|GBF@HC zRzRphN(dlWw_o%D#u%)MS50ik%Aeb+es^ZFIaX|aY8MLn#S<~`=DM4dNg$oz!@9^V zcvTFaEX-iE>8sL|HtxT($x-9aRdnT4kkZJNn59JaRGn=4nrBspGUxd3! z2bTeY?j^yIIw-V9M47ZtUjF;arGe!`AbKbPtLjz87R!fvbK84)i9u@q^ zpFEbGG?bq*s;xjZD@2{^QU5$eHnDiMV@{j|{T&zQ2Iy&gl2&L-{G;!ptZA>n(Y}6F zKu40ExPxBdgtvr~<xi$-~t2AV$Ax z2OvOJITj%E6az@*2(cV!Y3$ShoZWPpXcU5&Db7!u%Qij)UtODkhWGGV^I|Gndve8MLlRqxFoJ2AC9DAHY|(yNsk6>}Y?gLuDm5 z_V<7_WI__!Cf=vja!$C<3D=oBT@wWH(;1KjvOx}z z6Ql2FRTw*o?8m$HW!0{hv78mGWW84bUocqQp#XIq1`DB%4QfOq8{8KNDMBRlK|Q;v zWEuxWE(m?KQ+M>Q)fhNmWT{uZ|AI_^BE4W~)m%QuaEe?WU7x95(K|?4NZAPUd4=gg zS0>YY73b47)nW?~SMEfxnIOjR{EHq@43b4D7@h@ukc=zOi8<(PfLq+tRqWSsGtITo zQY!|jX9Iz7a-AF8=W+c5EjCZ?jpP5UiPt{100O_EmrQ|iY!@} zQ0=tWK}Vf*)`YCRUE8ryJ| zrq;&}454;n2+bq+H4F*%uCxA6-G$*gq8$MO+(bS$YumJF3l1>rOf(qAJ+mh3SZ|3_ z9)ikI3c9sYQAhneoG0ktSU)|z3wA{7g0LOnNKpnsthE-blG<2^r?#WP@9QR(;KZMH zp0lW0YE##GHMrp=w5ZM6rWx`>RzA~fbthz}-O_%zJ!(JGk~x3bH$?&Ku^wDiB?_Kyul$Z1ao5wy zHLC_;VLpZ@`=4xiviM0R;Qo04arC>t!v)9Q@7Y;i0p&^MF;HHu+_&6ScCGAo*~?`I z%CewrW7&$bxt~#=-EhzU%fE_;!IinviP!|Zrj8R}`cC9bo}`&Q*#PFe$pt{iylk$S zTVU?U`3>3NrKa3G03Bq$F%L;FTo&Q-xC9k7N)XGf_nAf)-Q1?MS+8kf^P17jCbwOY z#WuF7JzrFNv`f1+zD%Mje`*szQ_Zv%s;h8%=%cSeMjITHIoD37)Zc}@}CxkgVn=H%3@~lVuqJ;F(-fK z%B&WPs>8x+W3!t{{v_6ax~uCdQK`PvE#)a+1-ha_T~e+-)n$FAi@K^J71K%%srgFD z2XAhTeaO73Grt=0mfGx6da2~rYMmyvUd!~J-q2fmM${FH3JUFtKiwbH*%sC*%pko#1Rc6}0@eCL_Xgs8eiF~<+%*_{^yPt{W zv8ZWzE!{(csq#MtG3YOJ?mQ2?0Hos{5Gcn08bn?Pm{G4jU>RASS*0>`MifbMj+K=t zR&|?Tba*PHB#cI73BNw=8Do?q-s+yGV(v3#?A#NzNn>Bc;@ZR%xK1nUE67Sm++=CW zlsc)6DlX;abz&*}T*LjJee-6TCW{HqLGoD2_J5^Kv-^G)u6M^;aPzV*E?s{ysSqkl zn(V@)RXnfH>!F{)WG&ryw?+vq4|PGZCPIBxj8+#cG&2`5MT!={Z350nfImeJcrtqO ztX$`yuRfb=8+vBTVxTr_53)5#g)~~gHZl>oDoeqo-GnP6F&Ulb4GaU0bT}PNm;vpeYp@T7xa~mPNZl)CXmQPF*mh@>EjuoN!;**2qj|& zl{=N^>`^N~aFu1!$s)_H_rh533_`dl=srJ|irwSNnvyOkkNOV)5_(XEwQjYYrBh%X z>?ZG|w+$c2n#$M#gE9`}3>b=#rO&xJ%VHUg90s>M*LNuIBiBXqAlDrFoh;-jOBV|H zd8E@Um@kK^^1;|1ksj*l5Ec9Fr7s7;Jm+16;^9lCLV=EQ3nm)uM)G?0MZr|8SpnqA zgB2-QYWILSG8(R8_bnO_%C)`zA_sLlB4SRJ@xhHO&B(zS#Ob+Y+&R+g@qZu|pwaF{5_C=)U=l9pIulzdgIA>^S5ofz$bO7jMGYbmDrtKIZ2P%#zC+My~& zRKpC7U<-|6j>fQ!#<7DYu!|;f3{By9Z{28LOb{pha+p+x;K$Utf50fFR4l)<&!qU4 zKQEYQZbVsaaX+wo5o8c!DR>}Y8U#oXPzM1D1o$AJ0RoyJpalZjAPQz1X$LQwGiPd{ zjC90D?hRwe?D#D=Zn+;Hj zs?QRx;L5;XQ!pB5k_M}8Rz=!w9cQrBRfa`JaAefY7sB zBtge(g9EmQ1X5x7r7Y1RLGRRvv|XmI5`M-A$II>#tInsDg5nA7Fxue(<-54ldyhn={c z&vCauXtcp>D(TN!rL^mAElF#`I*%nC_@#RJeRth>r^04gtX)B zZg%TNCL9_v&*;Dhm9gsfStu=}WOM=>ti!6bGStng%!f@)a21bhd~|OYvmwo_V{6(Y zTitZt*y-l2$>^vzYz}Os9S@{iH?Lk-+f--3iMzZ4czc-cxy6-ctL?LLTJfx@fTd!z z=0oQV8x^|f3zY-qHZtvUZ0Egf26rA8wdtzq0S?Pc;&sRk(SeKw#5XByA|N@Cso+0t z&LsIyW)iX!nM=s;5*8AQ6In{Ga`gtIa&S}!vKCO^q==1x=0LWByWKmaFjo>?3a8)DUWPdD!WL*W!7(2x)S=vM&1zX7Oi@K6Z6_*?J~*v|s9HCWRn{)3J- zkyR>F((H#DNa*c3-J>N=`Fu_+eHH(l40pIxCa~h{Pc134tkrH-RVh+DBm#B18}hR) z^}$UNXM@|2dm6j+>tEJd6xNn=j}PsW3R1<`xxHYGPl^tjKak>7rCTbj|BE@=f)=Ie z!!6>o*AJFBB?cK&Dda&n`#=d4k1ei0YK}(6#NaPr!LJ3Vm(>mT2;ic<8Kf?k5 zhm~9sAwrs8A`qhcmq-Z%z#f+w$yrp+P7@HCOThq^!HjRWWKNBX))p2#eI{}wkdU~K zE%N~`T7?WXJTOSuFc87#r^@Ldsy4{cIYSPh@&xC(Q;l?MRTO1tpt2}=5R7i%4&gY$ z5DTK00sG&E-1P6RJ$$#1fB|41irgnrX?usJkC7972`IUx2Gs-RP$X2WXd7ah+4%w+ z(#iRp19jrT0u{ER$`-3;iL>=^GB&P4O`oG~81-gly?F*iZ)da|uU3sF3o}a3vzC-2*_zvShN{XXHThCXLiK<*5Nt?LBa zKipf!Y_=cUrC-<9*U7bq5i@=Y@DKQ59X;3!CM+d}pP}iy&_t_ou=cPeD>Jew^wjN* zrhK~3vTe`Guc3SEAQsmfEMH|Ls^A?TdR9siX?tUQR|4I`cKN{niLc zH<@*M6iiZl2GR^^3GWHoWFqAS7i`Y&y4y3_BZiG?~bGx)g zw(cIKCwPjUEIO%!qN1{LKVmZCG**>U)(d9%JVhg>3BXVM85=M;Srsa|0o^#hd=&R{ z;qnFFkiJuxUduv0P2GK&a=OuAd<)e^=9@vzD17r%keDzXZHA3Cq^m)2qYv1_q)r%8 zE8?0!avM{;2U1cfy6N*FY2toSo=e)*vrC)TWNLe)MW7qAK@BrW zbPWs1J)EjyzF#p*eE)qL6JibgsTHexP+n9Q-C&xthOWJELKW=+foEM9yA&tzNLGZW z$*N+FAaQ2n{Lazdx&LyYZ|9f3FHbGb_R1((6l!BZCvI-o$#v;qqXL$egjzBCcxnJclO(79hdI*yhMw*M1>ChAI$Gqvate;21abHm4{`%x!V=Zj}8bbeBtqSP6 z)b(%n&B?+KSlJn@WllJOfaG#U+n1?k&{W>p4|e|*wRtY7E)>hoNmeV%Pz$T%PWcg& z)O3*0M`$lEPOYWjTc@bvPJrBiW!V6sj_uoY%c_z@Pk0M+o-lROw!?Qg$#*lGR7Z;T zlilOVreLpkh}tFI!-KKf{^;Cz*NfFp+942S!qs>(tPQGtBQkGmF*)FiZ`r_DmO*$; zHS!M1xHcZ5-FN7}w}=j;V$LNBMXDE|{pSF--1lk7QPUVK)ZTUqVKct4pW(K`8U@U= zRHjV>*w|Fml-&;H%_W|_q;CfAQ`^V|#8Je_-21|hgiiOf(o#NZR$gGoCil82?c?~v znhN26FAH@Lidzg6`#QMFD=L1)D4vz$qh?5A>009i$H~iEJ$5t^0mhCWoUrA2^RA#h zJG*XY0;6cpX>aC7me@|eTfP-j1;816`-=UwBX)f=Y>xEBHA>s@g##hUsul-OJ=v9S z*c?$yy+w}2PiXkJ;3jDhk0u37IGT(elw1uoFoODAtUzLk?;64SuN{JBH`awaLtrD$>HXPAMK1}JlajJX3R%t$T5ccyanC}UC zv8JrE08N2smGj3kZjEgU&#QX3L#in=={nYK{Z-Lo3-p3}T*+|hacE8y%5>wVQ-mSA4xJab#f zmM4QbXF5~c(IYbP0Gu?0qc!vT=7-#BoBx?%JQVa@v->CR4`@t$CTvWjYseu1ytO0h z3H}28^Uc89ADMAfeBhBe_iN3k%!kP)DyM!o`glkga4v7?c7M%hh!+vecXv!pdG!3A zW2b}S3eoxUbqr8L9hmB*D%~0(sV4QxM9z{$?B>48%Pf(KyUBF4#lO=ZXQU_cN#tu1 zXvlijApzagpAD3xdyS5!qtCNG@Ey0OwaU?G;j1vNV*$fFgB!=S^Hkds*k3!=PUuBX zf-4Bmh&{1MD2a`!RWkphUmP=5_jmj%b2Fbb-M&Eaa%-koWVjI&_yr4bU6e%(Mip$* zSrw0Eo=EyXS?8}Q^(mj;maTGncRWr!HP5}{fnMKHm3v<6u^qYW_8Al*qX6A;v594P z^}SyD6Zc0P4AD0lO4>7+M!CfsZ=`U;8&A!17K-30C~YUyzzt&rd(dFy!c#VS+)#?t zzj@K?PxtCk<4$-?E1Q{O>e2eZkHaD)QKgp;uAx#M5ub}kGoQhaeA!^BddeZYsNhgi z0{i~Zts*_!y|8&5`>f9yjPn%E^d^hi=Y8kh)Xnt7GuY{F*J^`3mpwA~J69$p>gtx+ zE5DRipu;MOMx3GTN1Nzy_?JpBqTjvJsO8_uUUY7m1y<_Io{y}ScNCA`^z$6Q3lH2Z zAgxKET+sT)JzEwb34c?+_=$<162=^!PWvm~PhN%Yo>t zL+Kg%5LJ=ctUSu1hLF;_(dO7E>$rC0(mV3s{Bg0^$79c^63<3pz)x5XGPN-@$JzDQ zyl-zP5{8m){B+M<<&jfw+6dP^@B7xP+1FX%0H|g9rtb#-5plMm=N>hW9xRn{s+r!r?fbr`j>z?dLpli|PmC8!0Cu(jnBy`6MVsV;S@<1 z{fJ*4Vc=H?Sv9rLAvI?nUL$Ak=8E7e#R4njRK}H z(v7*+KyyQZ{t_W9`@Jy@lv&4YGiY*|*k}?SEGlujv)yQEYzX*@p~!yD``<}fpn@oV zbyN}giLJ9!)Nfh0n^J!)$mM3wQ!gDF>bp~1fxa%J7Sxm*8@(S{Fc`G{1 zhAFT+J+rK4aq_dsL9rW+YOvb(W{ROqS=EF<3@$q*|1Qr|knu)rLm_Hb%gxRR6V)V7 zhBV8LM%Sfl`^8T75I?KojGITnT8?h7;8=k3>+o&p(=$u}!$G-1b{L?`#LldwgUwA* zlm{g25pg6(o$FMLCvt0)X4syq|C)i;c6SDgg3nZPZ^OQUOtpz#W5X&>M!Kcm-}n{| zus}0?YcH$fbN5VbV=r6YIF^4C8LOPe=vRUAY>-847U?iLDWwb#5w^h7sEi zq*w}~XrddTOi2v!hF(IVKuX`vx80GgM*Hai%%wI=CpTzQ-8iPr?zd!bwnfcReh0%- z>&#mfDex(Dv0VWaZbw5s2}vfWKBvzT;9D`0L#gBiqP zV{_)M7EN)iY#5aCsyc7=^h|5P+1QM(uv>=?f2z=fbH{x!W-BvX03=Rz(&J3PfIuOZ zq+nj;Nl}VFW-cr7@<{`-;U&D~+BBI>S1r6>tUdpwTVRIMe^$JA<@VP(!-o?<-)K}8 zz!35F3?E5`hY24Q0Pogzb!w@%hOh)YBVPj<@Z;Zxnpe~K&Z6-R! zops2E6MKY89((YRI@4u`13R%>h}dcuDRhk@Y8AmQwp_C71QUm~f6n62`^I5A)gb>b zBlmH3t1)5!FkFJsCd6M5603cI$sdN<)Cp=Bo8X06h7*uosUN3aSe#p_VYgx2gV`w2MpoatRj#ZY@y#2;q2N+O7q2SI>%bKz{y} zojsen_H#9i#YMyZ_>#zK4dx*xC5T&%tU#N~U+Cm^$!TRH2BTl_GjSpS5$Kdui$&V6 zcLzvGGti{*97H088f8+Ilh&k8mS~5IbyypCsmuZe9b2j@u>1LsKASyq%$*RRb z@M7-!J4C$oEW8Vdy`Er+G+h(XUy5bgl94sC_WMLaGkn7R_W()gM|CSHB-27EkosCSo9sYO?A?kVKoH|8dklXz_sMP<%Vx4Wq(LY zUvrQgDa?9c_k!MfZQB-$KkNyge*y-gN0@ehu?pMJi{@&(jAu9U`=ttdjR}su4pb8+ zSB-<69;~Zo3LvWYVp|WqJ1}1pzl~R?!dZw{^}vQ;XP%scvm+3@m_JRx!eGYB@l;+4 z`feos4cO+55~K<&Fpo{F6R5p4gaB<@L}29zD>#BGfpClP`ve>~I`iul4bM3c@iq>r zGF*nvS9g^(H{#-U z@D!^B7mu8H?r-bw;hj zu6|Ntm$`see2?+CYQL0a=E!#7n@_6EqlMs{&2rP*FAk~3loC9aR3(B@@qD5^+p7sz zzP#}dshSh$7fFBr1wfnT7!)JV+fd0~iFKkGzEL(Y0V68$D@k@AYrkeM9EFv-m^J%i zh&`+%hauf}J7B)8UqNe01WB$u8ByE%fg#OL;P_RoJO#EbfgK`tD>_Vre&sB0FD{w; zSxu^8L-M;+Sx%vFmo3qJtTf0;RtFzQ`w5aJhxsn82rxL&rcv3MI}!w$wi4o^Wb8{o zD9K^i{$UfjT1yD$xhvdyKMPK1@?Ea(q|{3jxYur{qb}T3HbbwhFYvvY)Pan&FTa}u z&+m^-Y-(swuW345n^21n7MKYVv0Uf9Rfi{-_uL(01`GxR8#Ka5ky)XNaSV^mqHE`! z-mAoJVU3u0LoX5#9>5`kbwv%W;G8!izD&wu1VGcJ6Ss^{liH_OTuDY))Ug6=f-F+d zOVXZu=)!t1x|{b0u{&GvDng1B{F40c6t zIfB61voPHd52}sD7RXKkpeyWT$l?i-#FkaXQ^h2nN?2RZP#D@Wv^~ z06&hjTfSK0Jf=!j6RyY*fcW=Gsox06&bXBTqlmIqJo_TS%w5-%*i?R@Pu`UFgSpBx?#V%ir0yV) zQ^!~T^GkoGYBntxhzA;<=Ngaxhc4=l$(~(`VKGzvx^|fNJP*@&GlxQ_+mLcVTX=GF zU7o^}Dj)7wS(v}*tm5B5TD0f&v;+#d!@OZFQyeZQtS3%#Y1S{Xs8RJkK z;l!-6p6zOmJn`2iG(_!8VQ@;Tvq&qXC?GL;cBbNjN~^nrwi9RQ2j>#PRsYloSmeHe zAUfK+XBJ_6tGMq84Odhp8ML{rWj*i5pHW}NO94iIoytp}5J5yAsu+<_pfloEl{_VN zwg<+q!4X0T7^(@GAr_w%k|1|HGm!A2WyMg+!q7l@n&BSVx!K0%-_&9|VjFh6t$r7G z6PsCcCgbLWaR>J?op#4)0oSrB>uh%%Xmm(6!-(L!SI^9j6Ba%4s7xRm&e?^4x2L)6 z#EOMS(*JQzM?={U*qgo)tNz9LkyNEsfMBxv9)?3?_%BA7nO00F8MB0hHcFV#(AHwo ziNgmNG}ds<;LJ{Beq*dd^M-AToM@Gr?t>6l>E3FtKbZ0yta$E_W_^fr<TLCwP___Qrk4hsjJf?=F7R}3sIcP866goOnSvkUv$n2u@! za}EXHX$Ccf+X0BT|A(&AMNtx0fLylCu0~n{i!3(ZuW?z^8rCbOKMX0n%ooCj(JJur z3LDf#s<9oS@@OJ1t@Vrl=oX}9iiDQ; z`~n@^u>UIkQyHTSY&rtOPc4%F+jq#X}c#M z-441`y@=;{93yAlpGE-nUqq(JldOWqBS`fp6c8>`vD)g66$8 zV6n0~?sjJ3PW8qDIEku0d1vH6RJ|D1M zytqA!f*JN{;u5(ZvQXqt9szvslK9>ep(^zw5nt6t`b49oH6^`m1pK5rS8}aC8bG<00w80pOYjT{sAb{8o5waLG#UlDaPnt_(PF3ljQxl)I$S2Qps9Ga|rg zl}?HF4C$|SeqFc{x0UQ?kv!yJU+nHti#Pmg6VBp{SOHN|b9IMBWUxU}6`3CupBu|k z#k!Itqjap2(yb13av>bXK`uFw3h;Xk#4m0bhgzdbU1rC%te!W)pnzC7qOJCtIqY>+ zigsX#sn>M2HnF2|+Q%MOYQU49wlO29}*~6e;p@TrdZq8d&F4v+kLN8KY1` zs2k#d(J(8>d&DA?qon65&4d8vLqDp4ThQ(`ZxgD<56?=f;%L zk<_*?-vUNbNgpGlfNXI}Or$KC@v3k@xFm#yK2oAFGKG$M1rJ8FbPhHXDhaAyaNtULDE)T6efm8&B8%wuZT6LWs>oEOkg%cEAr| zoW{(U-3To?@CPz$F=hextkFmZ2YRKl@V$A}_z)<}Vsv(zMFedB9kq1HIh$hDVHb<) zvL55>Iz=gmq;?vZ%9%bh*EYYc`(HckuT>YoS06>_rI7T2XO^8nEtn|=eRZ;kCt1SW zHb)afN}Pw8Wf9@D;@RVvon_iJy#s~H2KZ~VMsYCmof)Pn|1&#G+i-ejr9{6zt73=8 zT}*+^Ey2G|T@}-?o2HC{rNJM|l~ShgH!PSOnAV8kc#46cV7ZV||PZt%sq5Qn_V7Z|7mip!C z20xq_wYjVor;G}1kWemVV*O@I70qPwWY_(90mM{^^!DaFT>IBg>#G2&O=a%`PG=g2 z@SH5HN+n4Xz}LsS-64yBTdeL!uAI1o>!yW3S}F#|h=(?{=N*6JAqLzP;bLoN&+r0uf9#ucSbrA71%Ms}tzjTp7G|o0{4{&PwYced@ z)S<+`2+c!9%)1RzR1_O#&H*7?DE{oj;lpeceMm~QQda#?4Y@PRC6tym%RUM^5z5pN z5DetY?yJ%c%i|EXHHwX!6kckvFwX45ZNUQJ!hIr0xG0a?Yw~(7^%pOfbkJKkdz13U zphV>x3Q};Xfr8*Zut- zfNnB5`pMqtg@#Dx^2YY~T&R~y0=vIL#5uo+B;Xu+%a;?ItDxhJI6F3OZVW>F6yO-q z_m|G>9%(5O6_pWL>F=hO8r3x65qQmMO07m^#Z zXnBsJCeqNCxTqBN9N<>O#EDh(xf=FialIFxrodhhrIhxy3SiXcEiw41JUG+X)zRk- zce&?SAUYpDr3|`tLXjd=VKsbH_34JbVNva-In%^Lq=2`Sj8}m~iCu6u`uc*V)ZkK5 z7i+=GnuVJ)SIa33jKFlMfSy49oaUq6CbdK$fT-gcI+>^o_4ZfjAK*Ft8Z>Fu_Ui;X zA*ljI#ZvVG5sc_ey`xlc^%y=6Ka18QUU{xHH#n@5w=;jWm+maS;4WbqjYS zVar|n|Mnc)QZY^OuU@1_;f*&bXnCBl{KrV);WCv@rzK53P;uVY|H%R$8=TpiP}PWZ z?31|r0(j)j-zb^3&O}PCJ~kVJ5$wsMNXefhhr^EC!VZVfO=zB5kHTN+nGE*S3i=V; zOK#VRUGrT>4=joMOLi5{oX&Nm>^7x)^~s`x%CwuT@)r&kXgy-=u;TL^9F6S@2-@`t zcARW+i%eS98KvLQ^Z2g2ic1}y=c$!AO#NLqx{|o7`9?hHE!<^y)yG(jxz{N&v{0jV z$u(k8yQ;tCGQkMsqkJmJ@m$WDm&ji8B3_|jJ1vwOY6Nf2ReRme3yXzyexX>Iu;yi6 zhbxi4-JSAv?!QR3!!t$X0D?4S#eIvlcS)Soi`oIZ+W}RB0aFB!ZsleX2Lm90N7(^v znjPHaI8+DW@XS>zfc7Jp!jRoM!-Vcx3}(Ne@+8(;P+8K)yMRcAy*$Kt))A+QOIU&{ zrt8^?M;ueonhqzpTIgX){PYDy5u6U$eJ>%{cecJTS5O#~K~7wtg{Os_Vw4`tTb@rg z%dejE3e)TD$jb^w+L2q^(V<{8k6yEgY^y+{M0-j`aEd*J?YLI#xZwrkW{*2kFmCF& zV4R5?ezCoYf0^R+0o~*~mFf5e^2N;-s(taI4tXZM)nX3&1$e^UTrY(YMGxRgVZqVJ zx&I>Bl$dj|DYBP!?JYy3L$J#668r)PcX5M<;FWFxy|MFQJSgTtA-$;N$e$l$5q^ao z#c?P`i-Jc!P~_!~0#6un^{c%6f_}E&O!nR+t`_VJR<5^F(KjWSE9QBHEp@h~0xj_? z_USg`(+v_m@Hxf!GbwcFc+t6dWeUq{IkzP#=FcwxcWMV$$j^8n4+4d;_xcD5DfLhb zuB!d%`Nim}^J=oae6*|t>*6K2TDblxYQcCu=3eE2F=E&TgjyuY++D zyhJO5kNBhhB`;{rY>y5hKAP&0_lP(yP6=<>taRu|3*>y0+5^9UobdI4iejb?d68ch zG3}#d8l-x8w2@WwiWaFRE%DrUc52@E=*sR^{Yy*z%`^!-V|fM@d=AXvEA`6m&uyWDP&tE~-1I!G+*fd@{9kLf%Q%JfvV4!#6T->2 zi919EV^z#A@yq-QFXTnM*!lb~k>0=ky}01g)7y=n_+Z5zditbt^USrEm_AvW;1P%UUY0ZTyv}<3b0!0W(bb8$ov28q z6v0MPVsfYrdFBM6VNNtNLdYo)C(>-otx=-JNlG0rsyru6q+A`SdGbcL=C-1K4tp=d zTbr&x9h&!K#?LWJiLkj_x6@GhH^6qR_weLUBiOeIjg{)R?Gta)%lJj(_Dk99WDpQJ z3K|lqVor3(J|;>|JZyT{@5wr$G}gZZw3dG=Q}a1Z6C zfW6GY9dtp^?GU>3G9}eq^iSH3uhC1;@g~R{okZU}o;deEIJ^;Wk~EK=)2H7Ly}4uK zpORAC3-g%jvWHnx>pjE!grUZphHr5nPf_)lq7ry(3)pRxk=%x31s-l6-du8F_+8fl*7i9A=&d2DWQ0obXyAB-42yJ(;D%nVKnpm0K0^P22N= z8(7%Sxu7gkD@%4s5eU~R=^7v}UMRIW|2nX%$z+uhH3Z0oa}Gup#VfU(gMS^EvEf?I z4HPB9i*5%Yu2CXTI#uUxb@h89-T_OA8;l>o$jB6i30kfwa;NWp%=We_4qp;r? z2ymBeSN0J(%lXTjc#Ss&y`s~S>pAYg>uB?4-rQNdp%PiHsFsvwDqS&KQC?*Ej5&I- zrg2$}4{Azhw6%+}top60YE|uB`TzUe<+@32mn+w^-8)u0aH$wku#6WxOrA@wC|Rc~ zF0(`)6qKDBZ}Gg$@`I+m;cL4!dHbH3oaTbA-|ZXG-{r>bd4KC~w%mVqlry@WGD)9W zO+`m`>uNsoE-N08Hw!!NN1lI>P_&S99;+xm$Vjd7B~OdKjqlQI*LJY$cmBo(IrVcu zLBv1@VB_z7DytlB*2JyTr(x3@k(Oc7lI}B<<^4=~zRLFowmu9-pG&1*JpO<7FKmWn$)x3b=_3s%K(l4hr_ z>hT|}B$54uq`WT84eL4jFeT3%TLmdeCDd%Ar#JDWCz7dx)XmucEGU)s8q@T8x(8}k zKJ>O9k!~QA+hR=;hGF(LndZvedvE-9tRovOB7qoo7qLW+N$_UDhD! zde43RuIdFkb355BB6COfrMw1 zwRNYui7^lEc93KLR$oKKxV@1)&o+c)w*URR0}Brz1}_qu!kCn#^3*GgOh_Y6lMWnY zA@+Ez2y(Y?((*NFrjZzU&jzq~GDt!sQ6wc9%BAl1k3|EGJHVP82rkeFVtYnB5~r_a ziH$j&uzHs)&wi)Lw2r;VeXxoqsXddCl7>u)_O!E2Ix-`3&jQo%F3DikEypHF4YmI0 zrd^@cXgB^AaaTc%2>m72>p51~ZbF>11DvsM#c;nc+zJE2u6wlefLY;>eS{Hmo^dij z5r*-44zp{&a!Yd*JY%8?W<`mV$)=Lr;d))3a=CuaUXG>Ru)=OdRGn{1PVFZi%_SA% zaj~f+XY@AX4z@2Dif|kLca-bBdJKoMs>;pEkj#c9h)o2erYzS+dnVZ;rfF>AZ4b{d z_kU5A#m0qZE@z+(K5)51kbpv}KFA8KAT%1;n@Vzr>ti?KqZ-#eswjt#NAS6)pVe+_ z8R-(g8wRJ3xLteBtJ?m6B|sDjOHa&rLN*CClH78Hm5xf!{Inc`Fbp;bI^H|!xAneb zu5vYWB0|W6flkmC%t%JD6`7{9+i?=9*P~y<%9s52T9F-4utJX|9(vwjg%Fq6RKU?qT!A0r>-<4x`+~p! z7lEw35_Vzg=F;DW9#aXhut9i`&4;?kj3uK3=0l;fmq(o;V1A4N!zg-PZXZ^fzn7xe zZ0A#KyrJn>;tJ>Lf&+yMW*7s;har?Ds2*3pNbkav`J-bHktTl3=P+U_tUzVgBaU;n zp1)fM+tq5@XjSaX6~ z4USHDK_h>)SV&eEr84^&Dj07-?-Umnv=?>HYOtnluLJ9!3qac^FRvR5ajzV~2+K^} zb!~wg7}bM!TP7hKu+}PNd5@| zmCHq6|I&-m29szbSP5%>*a#2+5C|y#-cz!@?Kw&FPFPp|Sjcu~oCSvna@Jw+=bpo& zvxjwU-QggrMh+*9l;&_TqHUUcMJ#tzA*`o${m4LQJuQhhE6qbSx1f$ z)U;l62;aq7FyaNU#3Hc85^#tWtHw!P>u35&mSP^SnWmc|O^}Y->nKc+$RQ*I21!`u zsZ-TaW|}KO5*K+TO9YRbg#UCO>C()Q%qvxpmgzs0CPk`n+G%IHnah7JU97g^B%7t3 z3<P}BI(Y-!r&&8^jjO^;`@n`8K=rc0M3hF1q|wSS!3ohW1U`Vr z9n$WJv&HlJelmT}reipnDdbcveQCU8Jur!RWxqEOgKXAw9&guHY$R!GPQT3;WobK+ zvWi@7lIu6eS~e}2BW4p5w45ZFS*tmFaBPBjLDD^oXI_&wwC@{h2#+8mrNq)}Y)={s z$vcspak#k#wAoCI4AwKRBZ-x?WaeC_T$Bb$AERY`%EB{`6(w&=mzhzh+aBz8Oi#!k zHcfg&*Cwrs4(j=>NzyP8SCgt^szXwdK~5@5H%ly~K11TBD)-URds^i{GnZs!Q9!IW zWy?XFx7b2+!Jbe_d`|h$BA490r=^5^UF5Q=a7BKqn!l>iN^AeBx@xGVYSE_JszZqC zQpo3A#&>E;AZ40E`lROQ>1KR6wH&1JGnvRMnX1eQYS~FXDn|J8sCpzm= z^MY$3td=VH|C2pM>sp9Ho0}uwP&+r7;nwp)t&=*{*>l3xrLelzO?P_uLC^VE;p$G$ zdids!le7r=AJe||tA7I;*q{bCq@fMV)9^+#vQdq0Ok<1G-^`vb%8QaD_CnESo8=G# z4D?ix+_=UY)P%%C21{uouhb@asmV=gYB7cw>OaL6S9}SEHLdA9Zj&a%oMuRGW{JI6 zlHtv2cF9JRVq`DnE!F=RWprt!mtn3k=2;-q{N^;*VHSFqv3@4f^UZ613q+OaYaVN1 zi>&2^7Hf%?5^Yh-Si({kYq?fvrB-P*eZY6EAqQJa|5X1>)HZPhky z*ADGemUbyyyR}DqwNLwXKnHb5hjm0pbxg-~LNDtTy{gyry57*6dW-XX%6<;$ZM~y+ z^&WevMQ!R(mwE(Hp9VA}Q19!cKHw~W@)v*WLw%%ESUOD&s__hscpaOgG;xGHR#TOe zn)Fs(XLyhI>D$Lt!H>zN>Lo%xpK+28_>hlymDkAO91eV)&{>*tTf-{WvreC|f#u54 zIi~oIW#sC-K4k@;;G&dbC&MjzYQr#$wso8!tS8y6S! znJ%b67j;RObw!2xTvzplid3v?x~?0#sav|uY2DFXmFP>|(^o20naXuv5A;7(=xcqW zZ}pwNXA}46XCr0Y;XYsT6?ZA2lyW_McQIj+%%qum`bp|(hzmUOJ(Kv#_oQ8I{z*GI ze};2(r78Rb_+$KqaErrE9&WXAVIZ`1G_16VeY0Jl+m;pWe7;Jp@I&$LyA_~(572da zH2ga7YmY%x?U@}a(7vISxb!?s6YU6D^?X~lnU$sQ$G57dAst8)iHD62Rs2F@alF^M zabnpYQxK)D18HJTO7G#hnK<9!JT3TpRTq_yAhAs!P8Ti1eUGe3rWFf!*H-MHc2KJnezLh;^n-A;!b5PGfHCn=&50bz#!}noR+QSE)c%So@^;g7 zkuo3+F1lKAw0me$U zIs*|#c^YUWDReS*uZdxBer)9(Cx%><@Xe0AkzFqzPSKQeH$u06S;Tb-!XWps z)1TTn0wtfBF)V0fFo^=zd)Je47OCU89dJW3M#GVBx=$3(v?Z5sEE?mp;yQ{Kg=?@8J + + + + ) +} diff --git a/src/components/navbar.tsx b/src/components/navbar.tsx index 9666788..958a7bb 100644 --- a/src/components/navbar.tsx +++ b/src/components/navbar.tsx @@ -1,5 +1,6 @@ import { ChevronDown, ExternalLink, LogOut } from "lucide-react" import { Link } from "@tanstack/react-router" +import { BrandLockup } from "@/components/brand-lockup" import { Button } from "@/components/ui/button" import { DropdownMenu, @@ -20,9 +21,10 @@ export function Navbar() {

- CriticalBit +
diff --git a/src/components/ring-burst-icon.tsx b/src/components/ring-burst-icon.tsx new file mode 100644 index 0000000..6b8796b --- /dev/null +++ b/src/components/ring-burst-icon.tsx @@ -0,0 +1,53 @@ +type RingBurstIconProps = { + className?: string +} + +// 11×11 pixel grid — the "ring burst" mark from docs/criticalbit-logo-r3.html. +// 1 = filled cell; eight rays radiate from a hollow core. +const RING_GRID = [ + [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0], + [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0], + [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0], + [1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1], + [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0], + [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0], + [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0], + [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0], + [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], +] as const + +// Each cell sits in a CELL-wide slot; GAP keeps a crisp pixel seam between them. +const CELL = 4 +const GAP = 1 +const SPAN = RING_GRID.length * CELL - GAP // 11 × 4 − 1 = 43 + +const RING_CELLS = RING_GRID.flatMap((row, r) => + row.flatMap((filled, c) => (filled ? [{ x: c * CELL, y: r * CELL }] : [])) +) + +/** + * The criticalbit ring burst. Renders as `currentColor`, so set the colour with + * a `text-*` utility and the size with `size-*` (or any width/height class). + */ +export function RingBurstIcon({ className }: RingBurstIconProps) { + return ( + + ) +} diff --git a/src/components/wordmark.tsx b/src/components/wordmark.tsx new file mode 100644 index 0000000..3941fa9 --- /dev/null +++ b/src/components/wordmark.tsx @@ -0,0 +1,29 @@ +import { cn } from "@/lib/utils" + +type WordmarkProps = { + className?: string + /** Render the trailing ".gg". Turn off for compact placements like the navbar. */ + showTld?: boolean +} + +/** + * The split wordmark: "critical" in Geist Sans, "BIT" in Geist Pixel Grid, and a + * trailing ".gg". Every part is sized in `em`, so the whole lockup scales with + * the inherited font size — set a `text-*` utility on the parent or via + * `className` to resize it. + */ +export function Wordmark({ className, showTld = true }: WordmarkProps) { + return ( + + + critical + + + BIT + + {showTld && ( + .gg + )} + + ) +} diff --git a/src/index.css b/src/index.css index fa64c83..cf7dcf6 100644 --- a/src/index.css +++ b/src/index.css @@ -4,8 +4,8 @@ @custom-variant dark (&:is(.dark *)); @font-face { - font-family: "Geist Pixel Line"; - src: url("/fonts/GeistPixel-Line.woff2") format("woff2"); + font-family: "Geist Pixel Grid"; + src: url("/fonts/GeistPixel-Grid.woff2") format("woff2"); font-weight: normal; font-style: normal; font-display: swap; @@ -15,7 +15,7 @@ :root { --radius: 0.625rem; --font-sans: "Geist Variable", ui-sans-serif, system-ui, sans-serif; - --font-pixel: "Geist Pixel Line", monospace; + --font-pixel: "Geist Pixel Grid", monospace; --background: oklch(0.97 0.01 230); --foreground: oklch(0.22 0.02 260); @@ -36,8 +36,6 @@ --border: oklch(0.9 0.01 230); --input: oklch(0.9 0.01 230); --ring: oklch(0.88 0.08 210); - --brand-emerald: oklch(0.85 0.11 165); - --brand-emerald-foreground: oklch(0.18 0.015 270); --chart-1: oklch(0.88 0.08 210); --chart-2: oklch(0.75 0.17 165); --chart-3: oklch(0.75 0.15 75); @@ -74,8 +72,6 @@ --border: oklch(0.28 0.02 270); --input: oklch(0.28 0.02 270); --ring: oklch(0.82 0.11 220); - --brand-emerald: oklch(0.75 0.17 165); - --brand-emerald-foreground: oklch(0.18 0.015 270); --chart-1: oklch(0.82 0.11 220); --chart-2: oklch(0.75 0.17 165); --chart-3: oklch(0.8 0.12 80); @@ -113,8 +109,6 @@ --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); - --color-brand-emerald: var(--brand-emerald); - --color-brand-emerald-foreground: var(--brand-emerald-foreground); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); diff --git a/src/main.tsx b/src/main.tsx index 51c2797..7f5c960 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -5,6 +5,7 @@ import { createRoot } from "react-dom/client" import { reactErrorHandler } from "@sentry/react" // @ts-expect-error -- fontsource CSS-only import, no types import "@fontsource-variable/geist" +import { BrandLockup } from "./components/brand-lockup" import { ErrorBoundary } from "./components/error-boundary" import { NotFound } from "./components/not-found" import { ThemeProvider } from "./components/theme-provider" @@ -39,7 +40,7 @@ function AppShellSkeleton() { <>