From 489009d35d5a69af0926ec8d1a3c6ac05c8d9d52 Mon Sep 17 00:00:00 2001 From: Gib Date: Wed, 2 Jul 2025 15:03:16 -0500 Subject: [PATCH] Update theme & stuff --- bun.lockb | Bin 367692 -> 374172 bytes package.json | 17 +- src/app/layout.tsx | 23 +- src/app/page.tsx | 31 +-- .../default/auth/buttons/client/index.tsx | 2 +- .../client/{sign-in.tsx => sign-in-link.tsx} | 2 +- .../buttons/client/sign-in-with-apple.tsx | 40 +--- .../buttons/client/sign-in-with-microsoft.tsx | 45 +--- .../default/auth/buttons/server/index.tsx | 3 + .../auth/buttons/server/sign-in-link.tsx | 15 ++ .../buttons/server/sign-in-with-apple.tsx | 78 ++++++ .../buttons/server/sign-in-with-microsoft.tsx | 78 ++++++ .../default/auth/cards/client/sign-in.tsx | 222 +++++++++++++++++- .../default/forms/submit-button.tsx | 6 +- src/styles/globals.css | 155 +++++++----- src/utils/supabase/index.ts | 2 +- src/utils/supabase/server.ts | 4 +- 17 files changed, 534 insertions(+), 189 deletions(-) rename src/components/default/auth/buttons/client/{sign-in.tsx => sign-in-link.tsx} (87%) create mode 100644 src/components/default/auth/buttons/server/index.tsx create mode 100644 src/components/default/auth/buttons/server/sign-in-link.tsx create mode 100644 src/components/default/auth/buttons/server/sign-in-with-apple.tsx create mode 100644 src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx diff --git a/bun.lockb b/bun.lockb index 7a3b3f5b46dba89744081a9e01a0376bad5b9fe6..ab5f3b737be88eb436f7a23b0445e19a1132bd22 100755 GIT binary patch delta 75333 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ⅈW7ny8ON4W51|= zsbl2W&f`j7QEv?Jk3GC;UXL=FPgdAU#n)YQbziZb8{P!=DOA>g!cAHA{`W-&Ug~Te zaAilajqm5IZ?Yt4d~z?i zZO>*m`)|1v*jBhIXv(GTe?(mv?K80QH^s}Z7#|TfcwjfTZR@hTeYmRVCii2LdwYG? zx8v=5W5y+>1-3mEzbiK9){slvYP?*zepuTji{iQ(3l+~MwiiLIPbp}I3PsTjZAEBN zfQiKbP7t&gWn2In76%yTV(J#uv2cy*Y;&2h^q%Qp@AJK58e|=P-!{MEiP@XahI}&k zM5*KZpZ1Iyd${?J@muOoXyEPfXy={WHsV6x)}KCeKm53Fs?)@Fd&Sw}CafI_F4S4X zE4a{{61dP=TnJC-rvdPUUaJ_Sn@EO;d#(t+UJSuO!lO9AvXTI4#Q}PX8~{A0dzXOp z7IP_m#4So+;p+aBDn%9N^qSZMtD?YMcrA^iU4Cp4ndd700ET%;>Fxb0M7~X2oi;_8$d=CfK_e) z<3ujOpsD~t?f?@+x;ubNHGtOy$s({az#f9^$^eta3xde%03lTXrijcc0B$t^T&n`4 zh~TOKrw9%ZOcP2qfQdB$VyXem5PJz4)&i(j9blHQR|mL4aF$@UaIXO{r#8Tp8US;} zX#$@*0A4i#=8NQ-0QU&46Ql``S^&%H0;JUf_)z2!bg2grP#a*8m|Gj*IYAzQDtzkz zWYh;(RR>^+$R!xm03fI?fDq|*0bF?NdQFfn0_y?nA;_)=utK~bi1YvmsSmJ9WY!08 z^8|2h0I)^`Hvl+AaDZT)P#OYEYy=R~5MaI7OVF?}Ks675jl%8$aE0J3!Div^2{6YC zV2UR|rZ`RD(*(e)5x^Fa+z8+v!F7Uc;n5giSyOG( z3u2sYffy%+drN>hJ^)i%0-P4734DA3yjlT#Es|RS+#|S7a8`I&0G71|NV5Q(6FCH3 z`~U)c04|8RJ^;@N@(8{YzP?io1UVuQ{}UFm zhalSz;Hr2*5NQJl@dvmrGW`ME+5or)0NfP80RX264iMZDiWOjDTLAoz3;7JQm!M%g zfNC~?UxnQUaE0J3!Cm3r24GHmfGKSNa>Z!^pAG z!3z=C3Cr1EVjbnBctLq3dUuAr7MYNgH-+yU-$oDg|E}b)==x8B-fOdG@4k&Ecka*1 zX;(X=UB005Z?@zq4so$)~n+Hz|_bIQ39R0HKfab4^;om%SUh?#N+6V&2zZ{-^Jg@vDpxQb*-NpXQvN_Yf8 zN{eZfG9rgkR(SV-loN9)<;5*Z1>xHhQc*0TR1&!qH_^5i#9gFQDvNwd6%p7QQdO*@ zR1+^K)kW_^2@!ItB<|D7lj{UIaw$HEJs&+Ac;IQ3KYc2NNai@M~%loHub4q-vJ z$9vq*-ClZU$~do-(uGEyRlLB3@Z&`95J(%5NogyL!yxTMFr~fNPU#?&;gF6Zl+sD; zrF0f$MnJj!4Qp^$DOp3+^MrUZ#vBOyIRGNq@uKQ(kVkkK14*0L7VlDKqH2TbrImh#0$!B z(K`|{LS#}xh0zWfDS|1Z#CA%UP@*8=B9t;(?4?AAGGic-!cMX8J~GC%yNDXssyzNz z+|J_t1e1$-O-;OvVRxAcrWqy;mL6wv!HT|pwn-Ih(@kqN*lRpuHfoN42``MZO`Baq zM~zM3zutDk+f|g^>!z42PFlRWlT6XZ+q)M{GVL~+f9!>SmoAX=*IHQBDaga4AM*f< zAS;#>o{$)xfLEgq+`W2=X_8aL%LvCSWKu^(+nYq;--B~qSsk{!$u!d)qq$CuEb11m zsLI9h+FMsrukF4t%T&i$Or5Ozt0s##ADDLNwOC{Newrvb!PG>g&cVC)znqTuZm|F} zv_h4hi$X2NKQJ%GCP*=Au+95`TIpG}M5oFWB+X>*j$yg9DFvLI+*NbcTe4HdSo=)%Nh;E*>2~wc5{sgk47o+uCm(93*4sV z<>;1Xb$}UttX}k(F=6(EID_FpliejhGg*x$bIaX5wwl~F%5t}vV(L;Xb%efn%p5J^ z`Z@Weym_l1yiOGaVL8wS$v^w$2yj$I9JVxbX-a^@@sd9N&9qG;`V0G*7yoGmUnRk# zrp%x3B3Poc6zz?EjL7#8d@Li@mJ#XlT_il}NXFNEwUCT&0c2XfDyXGo^(5n;u=`6^ zUoyT->52Tu9u2^>w-)lvDUT)e(4hW;iag00Nyb;r@!eEByd>jWR1`3_NK-Jj0AG&f zB3X0E_|^u#?2U)x4TNmb&mBJ~@pXi(3IFNAei}IZB;$K-x5%3KgR%Me)|IuAwUhDq z{*q;qwU>l3zc-3Jq!A00Y-6X34Ta~Q4&Qc6D0Y8>7NJgv$whD|**#nHtS{vsXFg7LM zrO2Ap!TGgheZgRA@2zoc%Ld7K^}t9$FD&xHedxK<-w^gPzml5kgQ)R>! zG9nq@9?1*0#F@{|#xY&8Rx8Wcy}al3yDb{b$z34+rX&C(BNf1Cqw4#YVKXE4seIEUcefZ@Cm=O&z7 z?76seE$3f*^Zi2oaQ4U92WMZLe4iB8^(Hu*;%tV~8)tKzT-&*pw{pSYu)y%a>5J13 zCl_=pP8-fPINRZDkFx{LjyV5Ud2bzG)e$vnCug671Pc*J$U%Z@8pqw;t++!A6ez_Z zDO4y>9HwaTV#NxC;#S<%c~)~xZ_b9Smg zRj3X%peEFUI#3rLq3lDDLEte+zyBPhuYUm2zdr%_h~W+SHl%#r@EZIM(t+DSzUKKi zyn=t=HN1hh@D8rPRk#Kx;S8LG&Cm>sHV6LNhWs@S{nI{7(cBi{7Y%(uK3gi^L0=_< z!)jOqzrb2p2kRjQHo!)Z0b?`FgSjvVCW9QN7zPrL91R!_{h%-O2KjD%Es*crSA}X& z9a2IHsGNp>(gJ_e$c;Z?K-t0V_cU$X{R; zEC%_^lnjva`KoDBm1Ja`4Kf-wfj%%8zJehz0{X+(FcdzAVK4x`fsqge-$FF>g@N!T zd;!B@5cGqwFa}1$_b@6IRY^W2S|93yd;qmJREHWMA5N_br9nRA91Zdb?hx)HAQ-|R z6l9bx2r@DkfLxFpJ^~q;o4{M-Uc)Q+8{S0mk9?1A6KsYpuobq04Bfk6FYJT;a1ahb zTO#WK9ibC+hAz+zK7k(46Rsh99d1G_+=qwoNbX6yihKsN6LnxJtcN);7v{qPSV-5i z2!4hYAl<)=Gcq*D7$jrK2u;0cqqUCm;o286fsEGvAYZmV3fHKDG78JFn5%FK&cGqq z4ZC0m{02MW7#xTFa2QU&NjM4zU=QqtBXAJ*$(XgBi>)B9aF)PQkiW?=5@fjl4&+x3 zIY3S~6@WazgxxJK8wx=|;EzeUWrb|u4>=(aGDCK70)HHeFEKICtH4ERxP#^H z!F{-)TD8-PMxEkPzO~;5gO`Aku$TLNkRJ-bQR?JDI0eVy7@UAZa1xHdVURIXKC8AF zw!l`{2HQct1J@knE2iUcFQLvwF^+ufw=9%_FG;L50&PG(E-F);GEf@QLTc~AfH%tz+1w+12?W$;`}57x_tQh2|0fVGG}@K z?RX}$N0~2`1DPWQfy|3e;(rQG!|y0}6aIi(a0g=H9{dRp;1N8AC-4-WfxL@-2~mIX zkIa`o1DPZB2ALPhJg6nCz<)V>4c|aGM8fYVeihEZ6*v!<;4Gveocw(V2c&>v$d{vd z<+J>oaOES!@?l~=%^RhEvvn_K+z;~m(L5j@j_nIyzyKHsgFwDM84bf>1dN6;@I8!$ z@h|}U2ttVtkdkuhj#~?ALmk*b5$uHG zP!!~EDHMkiP!`HV1*iz}sxTD7Ap#;n-pm&Uc?F(ZdT*H_dV|ag-@-eX%l#aXS>Xbh z1v6nb{0K8(9!!VtU=)ml?_o5Ig)uM^zJagdTNns~pbfN#s1E$o7UVCjlzK_H|DchF=( zy@`wMumqNZOf!Fm9WVhpK}i&oFI0EuTE5%-8qUK7xCmuQFav%)zzxN0pg}6|0}n_G z=|Da(DQj?9bN?#eQ+`L7A9<)?CdfCt<WCw3_YO>w1BqI6lAxv7B9~%(&(rj@+?OaM zI|aocKjh_J)>S{iG?3+wEO+`tJFvoK=USF6IUpx2f?q(aI249JH|Po?yA0}mVJ`C* z{GeFEpf1#b+E5j$fV6XI@6ztegLJ=lLAvAHAYHR` z(Kp~aNVk0rC{cadA=3}0As+gl@43LudG)5NmN`nM7qVL=(+-(p9E1ZPb?8@~uYjd6 z9ex0rE=`6>P!T3V9hd;Jh4~$fgm0lCGys`-*8`Rj@>e+}oBHo8SsTX8=%%feg(1Mcuv<&@U3V>)TH8bORNK32snUJH!@lr2^j62a zYYn4XaoHN$KwD@J9iSt0fU4{fyX6!TW{sm$wX;uR3Jgxke16Mlj@FazX%7W@da&HF{T3t=A2 z1#=7a-F&VWn9n4f#m`(X14%=kNxaKJ(v!4^BTA19-9AtqQ1p`3(gD+ta^oL8xor4pw88*u1mK6LZI1b0)sOt8aRx|1> zmole338z8k2N&TyTmUII8E0e;EA!mT+{^q{=DBaVmN~7=gMC5DMP4{%fb<~i$<&Yv ze#h?`q~tmU*nzcWl-pw-+PJxndljz0?{E!b;T?#~1GoXAz#WjpZo^Hu1%H6dlO>GI zneW1%rYp}L!Xpr+U%}t-M5^BlE}p_mkn8904E_QUd;{|QHT(lo4ct-K4a7nY+%(_; zvYNieGs)0kTpwI-$Ov9Af@fkOv6{^I1EdILIUvh`OyCDuK$Z!zw2*rd%nlMrmK5?l z56E&OCy40-LHtGDk`sUNlY0phKOIXZN<2hR)+7zRU40lAg{;wNr=B(m?}8~7GR zz;N^aYuv9uWW?XPwpu68q%GQ!j&#ax+3X@EdTfkuSaGr z`~quK@4lLM>g8N6gQe>Gz7+C&F6Y5im<$tP0*IQH+T*#F?0pHM(KuYGSCTa=8`kwC z^SNYK{G{1WN%U+Q_dfvHk8)FqJjEswP=scHL@*t9F3f=+VK&T!S&%sV0-lL7@fEPj z!FuNMr;shplNU-DVdC6Kf&EN^R(Pu*t^4?iO2!hTC$&c&CMUcu2|uw&V)?DeZGm55 zGi-v5umPma<~8rdU+$&LkY{RnKh4j72UqENk`B^>2c(4UYV`muU!Fa9{|1?OlmwZ)HIauqE@pocL z5UXl8g#GJS9!oiwu^9_~`BRbid3FzSbDawUK~^iW8j*#E{0>9*0X#ugv$9N}2P{*|PG&x^ zOf8Gb|4XJ$($Z1MnL56f)D@{0vUL&+rNF8)g}9d7eH716HjylU@ss{m ziiQoRD19iBh^+v!2U7&30$LHtGr1R}B8jYA7sZv`s$i~V=PC>$3=CzPsvQ|6FjW#f-YQl zhEC8CIzW4yIuoT8jB3brBWMDBP+WEcWgXhobmdwKMz*G8ERu01aly-`oD{rlYxINu zAeoc0kj#kEU*KAPeO&%gx@WwSk1Kd9fNb!54icFakvx-o!NIl2TJlB#GWhZ=UP8LR zl%FW)dQL+h%!5j>0!E8DijT5GA(a z9)a)SFdTxJuow=)ELaCo%lKzJ?1Z&&0QSRP*aN?T z6th@Fob?9!g@8Yq_>8Ar^?AX#9Ig)M`fZTojP-QtQPP<+hpEQn7cz4%iM>T4ITvQvTwR z@Szcj1Qd-WLPptr8@FVI;=a82kyf?xC^mT{&EvPQHk7UJ`4!N1fmw=~AT#j)Ej4HC5WJmEb>I?*XaJmO@g?#a|SO zZ#{`rER^_}gp=pFAr}Nf4k`caTx5cG;0>OT0n)?&;p!pDDQ(g-+T8En$)C)2LI7j| zcj!*yHe3yEx~U4^X*oSIa_tEjG_`1?78D{A4GAZQUPB=SfZisq1N~_}@t}2YyI@rU4gF@7j(b{x=j8bWg z7LND8F~@zWE=%v|GQL6Ao5pUuX>)HK z5fp)k+jI4Df)-3n`6p^le(qCwqBf9USZ>Ef%TYUupjQMDL?X zIJ;H(`#5J+)N>rZ-tboQw|S&gN1khb{H$iR$W&ED-0lAIOViuj^;PfW;V9Kk9?ny% zA87t+g}XfqKhO(&thM1sX7!ckpX+xv9D+zzPGRN1ZO~MUtl7I^cbj`~P;gKvR+*+A zPu0Ry+i98?fyz$P!ctp-;(5hAGjvqZE7Z{2lVIXg*T?fg^yE8_e@}kIP(=?KP)rm+dU)rx4(v` z%0rol289I`rDZAi8CqCCV+7bKiY~e(Wy~gL-Mt8eAP`1HRdr`*l~eaZAQFL_YSs*r z?xo($pqlAUpv~r~dd}1;#R=(=W>UvzYSkSxh&I1+pQ&Y4rDjn^16AEwnt%3z>^(_= zUd5G!^PJ!4|IOXHn$7(}SP5RvDz1=J*ywvcaBpOCtqw@0`vL6XoQWe4psDT{YR?&Bc+&Ys} zE%(ypLPV~)Y9n%8)W9FHQ9rf!M{Nc_GV3r0J9_)-8$rT zvg-Co?LdIvcV5Kt@eMTc8aA=RpdGX3P|&FYRjP$rj)*{fe2C%8kkfsA3QcNecMpl6 zHH0&0;gboU+09CvvF+-R&E->5wOUBx?Gd0TqQ^g4e5gvlL%Cc6gVY2BX#2}VZW(ge zI=b37ZZ!)3)NGPV?l*OHAuaMM0@5(HF8t-UYCo^7<|8E#9zvh@P!(B3-FMHasx8tA zI-EHfhIMn;oH^ClMOukSpFBo$==%4NXnWapRVlqtN)P?B<3pp0zP7{n?N{fz-n7$? zhJ{N<8k|SHT}1V-goK{=qqckvN7#nCB$}y^pU6OWRTC%ROXR4d(Y+Rx*)V+Yy&qk2 zQ&kiK5z7$}Q@t8pKG(35)4p&C>@HO%&~+2tweYpl!c@(IkVoQu)FG!jy=POs@Ye(Q|bG8mT9r{dBq>n=wBeyYb3 z^q-8Jw20}Omt8si_d1(PZjG9ST);5|sE*MU*Z*_*_~su!cL_XH#}Tk)$fxd;qUG`f zWqJI8a7M(Y0{oa!)Nv-SubCrTxgd3Bi541A<|CuNZgk9DVBi1KYQ0U$i0)QHt=>q^ zrm50PG5j>-r2Zdow)9x_XFvYoYP;Eym98zNPaB`Xu@zS0!yqc9-&>7dN;6!mwk@SI z*rx6+rSqJs(k&xHbMWVVMRcLl^ZOkCbWKY$KAz4~<(KjHBAAMm-)NA=Y=KUG?lLVf z;07Kt?3^jtH9TeS7j;dIBUm@6%S3JSh){nm(?Z=Bs6xxhz#3I~xmGCkQQ9j1M=wwV zmus;BcNwOnE8LWBMuDdLu2=Ml>-3(gp+8eyULzpAe^7=$zddvFrt)zwQ#vGEx~r7M z4AsBrw&G;f%2l4Yg8CFwhkn-loH>yYlRWvP&cqzw-q`Mv2rf2th2|Gg1_9~jw;Wnm zCDpVlEnEV%@sSqVuTfz~o+Dq6m1Kj1icugBRqYiRt`!1w*wJ~t?dN7M>$1ua2tlu2 z>PrONzfvq_EITU?*aMi;2Gt6aw47XK{*lpOz^RrOcW&$MTTB$w4!p7YW2F{oOJ72zTBX(UTT{a5D(d{uyzQb}e*Z{E zTP!3fLd}_~`J~>1uT(=05v|fH(`_7G#XzPzd`F{{Dz{qmi_FHhfXT9AhO#wm(O9-r_E=#g4Zm)($@58NTBn0Nu~1Z*1lXzItEvu z2lz-gcxL*!{V#uic+KVW4?fb)GjzyM`P*#)!(Be6zDUsp&@sPr=559Iu zoT;kDOYBdPVCEK`bx>XRKZcx+c1d_vGYp=h?}?7xk341Iv@{ER9hq>ZzI8! zCwla_H#1{$WxVT>NL}5iK7X~IHY|MRfp;#S!qwFZ30n_|+=QL@rL+04e$Vr}B%Jk) zCOu+Rr=tan*ZozmdXx#xq`n%~#7@(xueP402MF3oy9#ZfvNf~&1w3qE3_W!|+Bwhv zz%Czxg&V!+E0xj5?ysgI%?A=>e72=;qz-M=Iy-wdGV06p;*lP2mtJ^FAl71%7NuWj z6Ft_Kjnu02c0cDNB&BnHF?(y}F_rFh*0o}23vpZ6NX-<qwX@BdeKS!FTJl*;JS zST)#8Wz2zu43cI4>Q!iC%0EXU!E90_f*Pwin=x#0B&52O95wG!XyD&FkdOr?5>4=t zW-~lfovp>MZoh*M^G#`=9U7|#gmv~nLK;J>vll*_S;>8%9yU@G?AKW3+(P=pk?=(# z{fXC4*8V+Z6%sNZ4+(Koja9ELq(27<8Kr;f^yh?1=U>TsC5%)UBtNM8R>ImGP1W|} z=#j0dQI=y{_2_0Vb)$^vQIu>(h#qOTB3YoR%Da{Rdq`8&cPmDpNC?sVO#0$Iy?kp{ z*EJ87Wzr0Mq~NA{Mwbt3wW6}keONG?ETO^7d@gPkqc=0^+s*qMvuw}t<~TuFj)_^) zHdmh8;;GfAxzY8tt==I`&hHvu(6gow(BCyzt&wz&`q(hf?{5#U$RD2W2PDh_G$b64vGAhjb?HU#J235GT>bVOoYj##;c9Wl;osFUMS;0-ec22z^&?d_nsy1&sI;*yO zkeG&qj6QDLhtA02U)0kj5!^*RBCg2wU5qSc3ij{)s`96!^sMMj@Of9G*=}f7{Pg6_ zZp`4U*v<59W*jz4ug=}n7||>F98~y3ZAT(52dzIb`s*1nY0i!ddBV_bfmHs#M zQ%Gbc2Spd$&i~Vjw@X|STj;y8;Pd&~iD{bqWwyC|R(zsb67~ann3{h;!qU{zBl*;l z&+UIMr^w{XDf!qf4Xx5JHRY>a|LkEvVYmq1i>WP_hFfE=R?C@uZ}>wGwPvpt?JV8X z=mchev#H|ZH|ZDAKS^t*T2g*%VCOuWxebnXqYQ{dMvYS3r$9NoByq8gf8@Ijx z?$!8qFZ9Z<4;D%K=$j5im2E#^?+{j21f`#DUwyzcqAOvU^XS7!Z)1S5Hw$faIK|T6 z@L{eaKGD5ZcfvaT`xpwZ{X5%*@zJw47-5UiIp^-9<{)9K*+*^MPruTnkIH#~X{p)w zsqP0fXT(W@OHZBMcD;4|2M>A?T;`AD_mUa07pfc*wl-g= zj}J0{H0q}o<2nQT8x|S=V&R;PSv6*k`nsbiFHrg`&qHEwBr=lff{ty5&a3rVLnOp9 zs8<6YFMO^Z?%m?ijm7)yvUJiH^DXpByyoYs-cjO6+&?49)I{b?&xu29yT|GMc2;Z#KP!$< zx0J)wY~tXHaj5KXI~=9%6BXaHOLu}>|2`@Q`rAw!Xd!0S)F;QZNb9M~GS1{pVp<|1 zc}vv&(x{Jj7LUqs=1dBy(x@&q!x(-{ot($aa>-D!%Eb(&`Ea0V_6RpuNhO?fga%X} zZmccx{I;lJzJO2cR+tbsGo!Ac)>ViUcgqtWEWCut$YdmW0~qo8nM=cZ$uH*id~H;# zEMNJw$UErg0N3g(`7o!yR&7se1?k*IpVR`Ql3zp4{l-{^-5cC;{`0x#*yOiXmmBfP zOciNRG3vytA~CI8KF9Hq6=?(Qjqm#PSD4RQVUkfOiZV++x?}?*c54vn!pM@h;o$Iu}jo+!6 zr)lAdMP>dV8wVU-V0&F!c#Bo3nsw^-Rd-MK6WYaTwLRkv)?ddWK!K zz|m^X85TPqjW&9=y)V`4;K2iX=xt9QB`b|q56;lp=tlR)2|UZl%pPi!v+Qo=t#6Dz z^FQhL#lW{MvJ#GQS(X&ZuWijWZ9wwYFm`5aBSxyU=V;rBOOiw|y^PccN2+p2L>A=? zab66&ZGQh&_5XM|9SJ4@?4`N2GJQ6k|1;IaL9>~fh{F(48AhqmI=aBb@3eQscd77WDow~RboT+Yfe|tN@JDh zc@*n{L@uJ}dSOtevK<1RibRBrK5nDTuoH%Uezxaozb>w@tH!F z=W(u0tiarh(6^D$fsi#wq;#Rn)>7{`Fv=YBNX-Q7){)01U`X9r7>rkXjJ__a%h=0`|g=b=42=g371+a(zb4uRq*dt zD1Y_nrk2IIk5ICKcIH@+*NlEe^XoM=Og0{p4&{DV-Md6p8#l>F?X!A4<`3)9jQtV{ zSbx8WjyWz<3uYm~3)kqCKYjnERnvvuMjJ3&NfP=5B-yO=#kFAqb@a04ApO&qS?czg zta4wW!9Sa9=&^g`sUsghJLbI55 z@juqo*-IG<@n0XW%bESu*y{SGI~yC3$rw#HwJlNMB`OZ9Op|$R_ILlgND{^UKQ4Ub zcbzJ8Wx6p&97sKC!H|O`7}{m)gcd5*Q%0VM_bap2%e>#f;>IEwME(C`{w!-GXb0~F zwxs@>;Z142c>LMTe^unal&I?S2iu-+)%SnUZ6&cVl-7yWQvPUEru}zcTzxWT?kRnE zmR`$^Mck!7sHfgPs@At~bNr}0Z?S z0|?${iVLsAzQ)>aB`f=I$V|TAdr64$lum& zo+|f*ynQ)O-6t~Jw0UaeT`g2?SNbU@IY||lpy5|3?$l6Hr%?VDnU1?S*R2BTQ)|Ve7n5wfvh~{nVGgx^!P_ zo7i}Umle(Xs>S8RI5B0*wMYd&Aj(7ung`F!GinLVnBdGA=_fddmEcrc{G)2B=hV3J zOr%7TiD!v_*ezks-#cKI@bs5i1x%$4gV=igq^>>1&PL%|b$$c{=sz3QYOsl_VS*En#z8^!joKY&ShF`XtA2uU$N2`GtS@}0x#vKw)s=AsL+R*s}F`36_6Le}x*8c># zxAaY-zQwO-?^!p=ND{VxBYa#9P1u#knJqzkHS4%-%Fk0%+x?R1I!dbH5osU2zUVQSt~%`3NcHuUC7W6hef z&fxyN3OuM_b1x=mAebM%Ua36O*?j}J^j&2fsn~bu$lWaUS_fG|s$4p|k1b-A3My## z%UuPj^vnXU;L3i}=bIZZTVc!am}!goHv07{RW7gHr-Z!A@Lg@R>nnl&ULK{>^V*3$ zj8IvR6~ITf#rrqjwscC$qsw(4jtBFLfYs_+I(w+ICKB?JBa@?f);d{7?ALey^qFbn z)hdXW`jK6bkh$x}-v$mUzV3y*>|kja$qKSBKB8TTkeZFMe0f!3mvvhRzbsj;h7eX} zukj8D)UqvFt=^_5)zyTQx0Pe(u4(*c=uz1)H#dWMhhHlLA%9z~Y89~isbLxHb*y)< z4o10itJR$h_E1~tp33QoduO$(hwFSwjItZiBulm9*&qKxJ}h1Q)~MN@#K=0nPA1&k zYgF32xM6G5eTiY<8kHj>F^pJaY*24ce|t&QUpk7dS@H13#%;_R)l(#9I1Acv8 z)KQ}PG9=8Uv=N7&a|{w<&05>77=Gz`PW?uPIR`D{! zVdk9t>zKo9RT(cd-LhWw@v_&lb&FBky~qKth%dfpjPgY~S?cvTtzZzPU^S$~*iEXLmkcGJx58SA(5ZAw+6tPjng?%{lv2>GBJx-*# z)qe1#B65_1Dj<7ZRI#=`sAs&N4^?}7>|JfSx2RxW9$KXlyhRP;-dTIA5zVr|X7gTs z{Z3ANn|lBsZ&inUN$3s|@AbVkD6QSigI{`# zSwBuMPrW5P-l>koYlqGcbenn~=jVJwT(Y-5A!gUEZaG7kw^$u(mR+ixztOQ4-(_^H zJ+nRCcKTfI;+9Z?jy1d0vA(9SmMyQ&=gY2XT%_0^9R8Cy)#JSOtj@VaC7X{EE>?G6 zbG+@hR#Y@7BfSVJL2~KwlWT(OTc%kr?>oJwGVh!XbrWb}tFlVX@wewtyYtz@BTMc! ztQAsrL7pKaGG@{1wtj3Pi8sO2FgbE++VS7Dt%`rIxJw`t~y5r>4n=kB_-4yA)*r92)M?ES;Psr%7JPSQRk3H&| zxa^+z1lW1$u-ACAb2x47Qy;H;SiqP8)5W_D!$(eEew(tu?Ar6!{G`{{kf7rH)^3j) z5_W_y6mETPckYxsYvDm^XhBxe|AY`yEAl2qovPW63y|EvH5b3=J&rDQL3HG zXV^hCTf$C9!WW6z6B_^Ap~v}VE{T=+NJ9;I7;>oajy1zwKKl-;`-FAgFvE7ZJ@Bx{ zoEbe`5`P_3IkFLZxQ^qGpAM$Q(=_6rqHj%m=q-yKoUvfFDp%N;W+?e#}_ zFBdHO*+nFZ28BuKHawQ2nyE1xfuy$`iL^-grmy~S zhpuN!Ai=vUnUfyEN2a2I2fmqgwafVy_?Xj{^T*X|!a8puA^DtheDg0udyVDIm&_u< zXvWwoI48~c?QvBjCtbqA6KWXuk?T$vmGi~U7S9)t3cM}9o6+CYxm~~~A91b9kTPs_ zlWYB5KKv=eLxgqaJ84*|WffKbfoF|YE{U2ar{*H^UI<9%I@|4dDYt@`^k3~5kxw*( zmcF&Hc}$Vl>0LqBpHy`u>?I^5`Elc(6fbtGUnQ4>cFOQ6TcyDph*RKpd=VSEbUGo(qS@FS6v zd%ApHoKo3x6V`d!7)*-Rz2{YLajF=XL}`4aJ#C*Dy=8|_p#CEyBi**ARd>QV?;s&9 z-S@=J!mo}FTxS)3h+EY&YK};h3o_=W-R93rzro9kv#87jIkQa>o>8ZAQ*@Wks8o6E zoo!pLs$O}F-hBb?|8~xyzaTZ%Req64&N+06EDZ0`&)F`0GvtTw!g}fhrtVXGml~Vb zUeH>_#f@q#|1RZ4&$+vlXFhWHZ!!4Ue%+;7=X1sMe{HhxA5^HcTMfxiJL$ArP0f!A z=9r(vuqPwCsz_)h85w|339_=D20_Z`Bs| zTyZXYij-7e>1mmq6uhM#H9(X)LSZj5#qF#Rr7DD=z83*yQNyn z^WC>pzasX69+!zBFEO;bt;Uz&r|h>?ud;aezpdJqv}Y<7=C37-Gbq@O0aQPI!qgD{sR_Bh2js)IXTR(q!J^B!_A9Qg?V!WTP_%1lTf-ua-G=GbbF%HR9GhmnweuRnN*8 zoa)-E7Oq)+oj30r$_J)U)1iau6|^9SYfQ+?bxhJbMw9mk|vOR zH8v$a(0<|~wX&3;0-F^mIc=!~M$7cGt-7O*mA3n4rvu3N(CE1y#f%(3E!7`#W>dD# zXy|<&sw0suBgCa`238?O?OEd*lohk(nwAs0WN{9EWb9{c8gRG%xhikUn&v|x>29iF zlroQvB5^DJtlzwAt;_0t$ghu8Pnxsy z01}=^XpQ@ix;51)C&$e;X0^u)kJV-*rMp{I0oO{!Y$b8et!y+YPCYV()hM|!E0fx4 z`bajchk7sif%^|+*XZ19nH`2-Wb&pf^vvjV+>X`T{if;-tJ7g>Z}jDf28g)I99Ox` za&*wZtPXT4aZ2;uS83bPm~mz5=!Vnx&CI+zlj)vG)ig-tGvdfd9D`pzDYB!@A{pq+ ziN52xu`}+h@@2m}=WN+s1?T--4J(EH3O-jql%k^>9;*(Cs~5VTvn&CnJWno~+o)cc zvNnjR9oz1z@Y3|a3JDJ+<{aqa`R7J^8#7TP<~~<5OB*Gv7m<-`W1y2FGHal861|$o zE5dj+K@Vpbz@NV!uJ<8fe;Ik1;{LOi=X!Ia3)c7E<3%WgQe2&|B8)%MiUOU@as1+6 zYE)VBZ1xwer~P0r#Sa%<-f!m<*bB-Y9Jvc5}U3=u0H46zBVPOWM=D#GlbQ&m@}Bs z+ssI;PUJ(Pi8QlWqmuR9%DZ{5PF1EqN^DxIo?9bClPYmSaXo_-p*5P!f2V@w_otTG zO@HS_D!XL7&)a3M&RidpN6)zalSj+^R%%v#Onx2`PfxvFSw(AQ%Ib-&xsTPHEE8KP z8Fek;#8sM;;!t&>O&l_D_peuHOURfX>Jwl~ z{e)hwZYR-mXEJkmhCRb@ab@Rf3RVC2Ji=VI1G z!J3pOoh!en1>ylFzz@hbU6D=H_?MO)8K$pt9IK;EU zcsZkNPPKn=sI`P}CNq&|k@Z<>WvkED!BCX1&lcws;*!bMh6zKiR+!U&JaL(C?*2)w zzN&B7JBcczYz^#@|56sNR%Mk(lE&0~Ytx94Q~3m>EJ0MRvV|}7EbZ?yVlkG-vcUMW ze2Zogb$xh=M6UJkimgbi$}}X`dk8Cwbl)b2Zxqh8yR{jXw#5t9F(UE)BKc*!Jb(_O-q`pWRwwQYz-M-I-+7*5^D={wJ!bwj&wT1HR4ROnyOb4W)@nB5t~A6^1qRlGP+y6Tjm#i`1E96ER+(B^@-> z3TjRKBa@FJ$sIXn?;L~q|M$!aZSen*_wMS#$M$gB*BO;(3r5H(8Qt}nRhw#a4tx;K; zzm{4Yo}$Ms`CwT{F&Ub-dZ}xY+A&jN#~%|GduOit(j{@-^ogu>X#L!YYX`Y}o_VRD zmV`~|ZFHXVmJIvkL8?3_ToPGKpONvGJo8cvYx7Pr^im0 zL?dstN@DM7O6+udP&IF?t(;3@i0N~2MCU3YQ!ngr`Hc5gZzb#kQ=)yQ*QqmP_j%!x z*kJlhDtSNGC*MyW>GC<`t!lMGvujBBqS@?#;Eg9^JACYtc9ed#w^n`1=9}sADe9w+5Y|@PN8M>@n+b9Uirh^N8jKV-j-%bmYp7UgSXmDSmz-#?7kP#*@rA>%-0L8 zu-ClRBZ>Vv5;A@@D08fkGi%15ToOr^ogRCjk1Era*o&HF*uCw%cV{O2THY0wvg^~< z-Z`>%PNVFm*E{~?<0Df&Xouzms0ltYJbMKBL{+QaaELyl>A!?)ms6#0N7#SL7>m!; zpOxBkxBm1^94X^BUoxNBm)ocbb?2Azx#T>-m|Kv84D#QF+-iI~H2V{Y9K>Fz>e$K7 znvrs(&HOcf&pc{(I}Swj&ts(jqI!wN6%LmiD{KmvLqEv)m#XIBY%cqcxu!HlfLlXNmB(kA!*M&{iPpG%3mrEih|J06@ z@fiff8WVn8x$n3i}l~&x-|<{<&cQ%gM_?Vnl;R=LaTXmK5RQ7 zHPGd=G+2$5u)C0u0~#wn>agqd$R2JkiL3ZXdHWYR(Qxs`85>E9NM zGK99SjoI1Np2^|p*5R|BpU0f&VLzMJJv3(NAbZZVne=BL75S)7r*<9s7SZpDLx8n8?LILxezp%Ut9p-dY}$wPU|=pFy3^=kU|$ z5M!R@bChsb6a5@MYI$z*Iz6`|LjCPWJ}2jMbX5CB*t4of5e|p?sDNXrdx-kEfMbK1 z_>O`kKD?kjo?6JUQ1z+iXhJ#ku0{-Rt2sR7x~d~w^(*WMR1Fr{17kK6b`;P=E?hmR z?#N;ZY|Bji-GWK;NpE|O7!~aJL{ldwanR3yhTTU+ggcg~*f2-2m@DCqr4>}K8jcic zuyLo)yLao^w@7g{;fXzuipu9mDcXCeiBIggVn+6Nczdf6KiR!h`>u{0D!4lKagN3m e^F}$Yd#2I3|2$aaL5!S#U-`IVdu!kP?`)<+#(O84fvu zVWO#MX_`Y?Ib{x1W@aT|m}aGB+VAz+d%>mq?cU%0eZKeJ-#?y*@AG=UpKI;4*R z6JKLjjA*D#9J(TuW=u~JUsCPM&sTTCJ@+MP# zs6ajsXgbs#>V)$65zrdYKxjSaf=b5mjS%y=zi>Ru{h+eR)YxPinQ;)HCO`qS4s@H0 zM^-VJaBN0$(iGd3<72G}&<7J$UATm5T z%6H<_q^a6trA7KIj7MG22~vZh99lmpht@-?0%d!CYGf3D4azBz6dj%zk7}H1t`BL( zHYk!Z7C;+9olrKjpHyF|)u0X7FTXZ3=EgOtN1&|GHYh8w49XLyLfOs;sUcGRp=@^( zsa2t@*psG)-j;d=iZ0A}=xcPtr-&<=($Rvb*y$VreLA2e<~GJa41{tZers(qVZLTu zLChK8)z%n*&(KWry;8SJ&4lu}$$mz@HxP4%#m6NjMO{a!WjdMnt zOcSOhO^8c1nZmSOmxk4kbuikW3*|g`Q@iO>M|F16yDejsX126QKN(=Ov7w962hPq$ z?1s1oj;U!gj(vpdmwn_DXr$i(=b1l6%&JxoGV&)Uc0l>a3(ovAk{Fpx50TC$^o7s4 zx5utGy>o^$DNfH*hz#tTzfdp->9W)lP?LY??R)Z+OLkvl_cmD%1P*G|uudl+{d(n=)k@CgqGi zCKEtdelyiC%lo!{;q^RjpQ`3`^1^}>MusFm`nI2^tHPEO?2$U_04o3%1#grIi zC+o3Gv|(lT9BFH75NLD0^rav{E{p z-f(!LEGS1jIVv%U7sE%xjTzBugmFSoC<{Ia&H^?=d4g6@wrF>#(bBb0Uajq==7t&N z4n)3M;G;(x>FvhsEObky-_QgRvh8PX%iHa~kdM;gWxz9M`#L40D;S;7rnchH! z*uuq7c6F>XHp(}0f+-C#hiW{OW6u#xMn!Ch*?+WDKC~LNB9zzW zvmxkz9(Xds=*p<1i0~=lkx_Ywd7>@QTF~!NbN0m1D5FI?p&Y6a6O9wDLR=g1b;QP8 zGG_S@a8Bw&vgP%ojfyXUdVzn|1qobXFFTE~I|Aj{ZI|kVa#qiS;&RC-nXIdDTusD^ zc1*34{^1nksEFve$~`e$-3F%&CIu%M&F+ znK9Nm)fpe2lvGagKaih%A`6GU4`sn6`6fE2M*3p;n4fHvGgE53@07R*+&iJpSZA_n z<}{|`1`-*U95ofQHW3B$#CPGdAFn|OM9?G5?n`*Q;GHSxK zNoY_kD#+Jhq_d)ZpzOK$#JEX`+OSGB)BEAfEkL@+8i-lOKC5+_v3}Ku@(d+ik{Ui` ziZdzMRC4P}L4Hn^YM7E7>0e(lM&1*gUDO52noZ9zx~?r^&gGaSOj?tvv+2%EV+`VF z8&l~aV$Q`HvH*@v_>?451Y&l^V+LM=^7w41H*~Iyn`Rmn9*a1g8TO(pIhMWG8*`y#Ip~bo4ZP$k zZ;iMz;$~3&D#qHui(_p$YqFU2cc zn^4uReDIF;cGc$Eg{to9HFJ&2c{-FA)s(2|Q`w>^l7~r+fU?DrQCNbUNhTM>RS}m= zzLNDUXRlG-quoYNU4n8lo`!OHa!#5Wml$O-$pyJdMjjHXAt7_0aUi!@$x)G}$x*3T zX-uZz{o3McFQ#urwwlP+{(w=Bk{jO&a5j8Cl;yvZXVlAl&=|S+@Z@M;lvT24NtF4A zLSIDw-cXM4;zNd(q;~}8Ks1D6#M3ic!r{7y%zAyRePC25CdoH7Ja&pHJaJNdIJPe? z;G80z4;$(W)9~l=Yh?#w)&nzHzZRB4*%4Tr^`6f;XS8G4d84>jq3lTYlF`l;P+miS zLRs&7P_}R07e+_^__@A_q-UIj!w%U1<;6Z7>J1$L2mBojh(qUx1QlLz!<5v;{|QtjsU~S`7))WJ{b-)_CG|gO5ebIXo1~ zsrIjq^xp=A>ubq~tVEY`&z zlJ?OHwbNUoc(&^jvauQ;K-s~&pjDumP@eAV-;B5$+Qsy_zZ>nUigq!5Fv?*y8bEnm zTU3Ynwj)2Q?;+y~vYN%nhuwR6#$`C{sH0F;APdR^-D!pLl3axXQdv7vYc0;oYFB+Hn2YimiZk}&Y)F_+2qb^pq&Jx%bE3r zK2Wyw3A85k(k-K|M>=L6M$$U4V?7=foR{YPiM$frdFzflZ zK-s``&~$bgclfc`_r@f}P3?$_q@v9Du)I-$$he5)MCa6~FA;MYy#Qswg(#R6xlqxp zpYQ;b7j4P*a3f;o>s8rkSZ63tyb_!hkE>`-*9(~8X4boA1QOU)4yg&K3|m}K#W+Eq zs)j}-O_=7K5@~w9x)D!@a%jd&?JKo|)P_(FQ6(sQ_F*+cZ&gb-obwXAFLk?AO=`N- zDNwdJOlmKw?WKA`ImT6`K1GEY-;w$S8o~;kfO3vRrT@3JyZ$bYpZ``nF|O^TYr zb=9=7p;3WVP!8Ga4Ykg7Tc-yii9`Ls)2!c#7dAFJFb&FVb(8E#Kjb;Wv)!eM#(KbVyAU#9sSSap*wu~S+yv5d+`X>%-g!pTzhoKD- zZ-8>wHCt+AGtH-7>-3jf8uc*)b2a&+l`(~bS{pO9F_ag%1acugF`3$H#a5g718YBi713ckIdz?1iRIot`#~Q=7XAd7l)dP$yA!6<|68(=i`ZPYlU4LW-raV ztHV4&b9Qy8Z{pf4O;;}<;;}ATLV#7ZVF6(!T{Il4rprh_qk0^XahBWx{;mi*mz+fH zh;_**5>-vQEOXzCF+{x6^9;?|&!JpzsAc!Fn>0e5;03xgW$&U8^BT>2fWuPI++>=h`FploF6?qf2AYQ6((mUZxk>fX=r2J2qe zmL}6c-CI%W-IQLSODmIUfS#CM>YatxUuPb^C01cJJ)jUh{9__H?gZ0*YN86M}owcF~cFO{+2)(u92{z?iXU%7f-O?HT z&{gvtV>8dxvc@u*89N=x!W*Z1k4wE!oWx)U;EmC8Vgg;z!(;Sp38mgSc%yXY9a7@Wg%_s9P7HL>9iFw* z03v$J;Em9|AK?wtJ=;rMf{>~%g~#u8DY{{t;!ptw4x-tdLM8!AO^x}wS>SOsKv(F)J%9r z^LcB%g@_jdb^vi!wGLKrWAOYOR`n%BJSD~@+aH^j>}ht(c`&Tc!8WzwSS-dyDwfSy zL_8Ah>t$88j@7cKqfY>N$FHa5_O_~>a3jI>faT}@PJdSftTJx07_~!)c+sJ*{#NDQ zIIU=gUGW*O`J~vDN#nJc6uY{9ys=Cg1N$wa3C7{5XgA!i*a+O6G3e6~8NK0$ik(3e zh&1Ck3l8dB8aWU#4gH4WW+F0%!LP4XJ%$Ju8q#vdS=EZTKXM{r9(T7Y!y`1GnRfLn zK+GjT^rYe+sl{})EAf$9(M-FtH&XMNWj9+i=PZYEDN4(pWw+Fvhz`(lX4%wmcx*2! zOFWE zZ=`mK;mv^F!cy-7yumtaJegZvq$(Mcwd@SL^8RG4C<6=R6yw5GwcK#4Isy^bIBchI zQ(S<^UyHTd)GP3YgJT|JQnrdMnFGAPyoQLwZCtbGWu(tWwdqvjYCwdJpNfd{3|);A3?j2Xc~JmQT)D(E}E2t=$H zt|VN1yAiPvq+uc!A!36tjj>=XO3;et*_BTcG@to)vxnxK?@(tZ8XZ$n%N=4>_aox8 zufVEX?jo}57e}ikqf}SU7j+tKpQ z^D-*0M{d)MGa7fzo`~34#=dkuA|8i(2|DrwqK=5Fu`TB6n)hOd#WI7NLEptT%TRbB zy0@v+y9=+M&H_?Oyt$>`d3ZgUs@6(1hR^81Xha+$eZf+kYlrLrk1_buH?d zG@oU5B|A-vS!P%7r5U}i-@{d(S4#Sb>%n+LoEhj%2iD40w3y{~OS^RambA=fSp#pR z<_qr^cwMxdr8Y~u3{;&=O^4T6ZyYLQIf$s677Ok&yX5|a##uTc>Z}z<*etKX!(JDq zJ%WdO8N3d!vfSdOHZ>U@Cr>5KZw%%=B4d*9n)n4#f28T_qs2al6AL9Ov*u_qZ`jr2 z07gIM23XyGL)06YRa5CU!|Li5IM-wf`1e$qHdl*TWp~?yMBBelRNK!ho&LkDZi^5( z{+6fFMYZyLW6}Hjxne+B`M=ZM|3}`9XVuCJjLGx&tOG!~Df$~#eHUT{1jVHiWmT3e z)QW`N?5cUMaaf`kaj7d7Hp?D(U4(Bnb09uq6|J#bUR}%;uXv43`DC#cv(|2|uVt-u zs6$^fHe>qYs;)r9D+h~rlD`Xru`JB3+3Ww%Y3e)6jB&^Mhe`9}GRQzJ&^$7P1rQZszXq{bIv_kWF%WkfyIp1<9BUftKZ`qaWE48Ax?5ekB)CQkK zdRf(ph}z?5tQX-{Ws9a|XWG?UfSez=7_f*9d&B5Aqxu^V$;%A8go}tU6UW;uHCO3# z75C>6^z@@SSJxrx#5G&FxJt|3U{^Y>)`}pTS8F~S?Urv=n@rJ~?^`ytmndmRLW)&+ zM`%SG*@51huyI?%`%&>moBAcZD7~@xKwxpK)vumSHp^Cc$gu`X#G56vnG54cM7Wb} zuvrel!{%?3O>MLezsh5jft|;4M5B#poYnFZA|uz}xA1kS&i$rX)gy?EPQD*!RoZ20 zFyO?X6)2_-nFae0Eg+V z&W*xH!FPm^e?-*FsKZ|DiS`;Z4;u=bzj?1#lxpC2h!YQc!5LOd`}gqOuD-Y03eR3z>McYa5Mhsm4S$_|Mw)TU9fpWqjh5jyxg8Np z#|;>z-$KN?VS^B4RXp}mx8rJJ%p$$BJ44TSS?Qw4b#`Lfrm7o_wA}UWK;)x9_-UEA~G`L z?ry2^J{QBBVK#L*ya2tBgprui?{m~GCjh%>z7Ct(wHtD1*supaTFNwcFRwdEEx3DIz*>GN9ce5`aX zOvHMLXsnSI)80eGAvU(|zao;&!{__Z6D5-^ zH^bi*0p}>L4_tkx5jph8Z=qGGds53jVYf^^38=-Q%d_FJRQ+~ld5j1jfo=u5o-%HP zW_>sl5pg6CVI+1S`nQ%oL&UjeRC&P1WgGAYB32UX0A}SmM64HnUVzUD%4uU&K$-op z5k-jrYbRLce&`l-=3nEt)3%2%IiF=y;* z{m+bgViIn%S_UJ+%8Pq&EgT5*`;zM{wd2POy`P6mr*aCEJ7c6Lq zx*;-_k!IJ8R%5|gXSGa6gu5&{{s=rSJy?>lVf*vCR`j`D3HV0yxn#F2`$o@o$!56< z58v~^>v%)o_QP8S4_kJ4x8dPu$MAf=#hBAG&(^#zIV@KZJ|5X$e8pMPIbGz~iN56!`}tE_vA5V#Cnx4o;vIZ?mcK@B;N*{8al6B8~)3jLCf$ zQ7GqEq7M3v)%0tL*8v{(;SQT62A=+te#6upHiLq=OV?P2B`VsSF1H7JE&IFs~dw6}>K1=IA_2GjT4G%LISN1M=Micqt%SVWY z8kIa?RmVIn=_hvoc0|UHscyjIOvNgJZyr6Ll^laEuuMaQiGiOz9EKk#V^tpx<*8ExXvRmd7v95aMPr->N!gWDNgKL<9NV zsHKXFnOEL`Kvy_D^z6Clyp4$Lh*bTjkl*N;IKr(gMlS3~@#Expi&pfrUCojZH?ItA zgAfhZzjy6k-mI?)`gTxBFRvBdv#Z1L>oq;~^KiShyMh*T->wz`%0&;`)TXXxeT~5_ zdZASvjfl&pJ}cCvh*(XeVIqExh#%~*6k;pnsT#-WyAewmq6u0t`uBZ!9ra^a>3gb{ z{lIRiT8Y)K%mFTZ?@Z=u(>wPtm*7TUzQ}hKEH2sdej=c;iaFEhU~> z2(LTZib+6wU5D3O%Xt>)(tr+6F}c*+Q|dj2ho62T z)&63MH>cD)UFx~vw}bS2>R5QK(QC9d0wZ_=wu5>@_hH5w8N{ z<5P}|j1MI@5OI>$)IT10dK$;o)Dmu4)lrB#Aq_ckS+79E$&HV_xO!?fHtS#Kw{uBSmawbD*n_v5XqI*8eT~9TD$TMp}RT@)O4hA5n++ zyCPsW8b4aUf{0yVd?8)2m9gv~!Wz*Hk&(tv+|v>927u3MUHn}UaD4UhE#-a9_zs*u zr5uJ|p9&K>_$j3eym2~nYhyM==w3WLr|#v$3)j8QZO!;%mdCDwXXJYX&p393pBZ1} zGW9)p_~j5`Q|q-e>zhC96TX21H7m_@Uqk^ zP`;?-R~g_%Wy`;Ykzbek4V14^t#8Et2Fk={;ak&O2aBA^bW`HLsR*fwKVau+Zp-BV zFY1b8usPPNhfS~k`X^<#`~qV&uw~Wz58Fij1vNUb3@Ay^`x6^KeE_i$<1eV1aKF-D z|2OK65^$O7FCX)$66ar6mW9h%Zy~NvU2$caOyY7aa|^wJxUh7Li%C~pO1id}+5yT} zS!Ks{lId2NP9+bJytCwGmB=PJG+jR+NP@D;8Qw+me^MrOmFZNv-SEZ=^nmh8=tKDL zlqgv8VEl%%K7#!L$U5}kjfJ#%b3a&r^tLWp*(&z6#q=G zN}U7car4qi>6B5<`NcBB>rf^wk-C%tUR1ivWK5;ITkNN`m1sVT4P5+M){+Bq$|KHU}k2%Jd zWR0nGzmR%a^0LYMfP=d0`v3e>GG^2E$pd8=+ z169OfcPy8zcSV_v%91Ndtt>f}^{ECWsv+ar4Dk9VWjS?ZI+d}zJg&av(8fI8R0fpB ztXM-HDAGL44Y|;mJmqo!nKDZgzKKj6mQJs^JdDa__&`~@ujK!v?9KKvoyya9kTI2U zM;ZTI3B!6+$SLe2|Q(bcaYCCOMV)!emTk`Qb7S zS1?&w(+Lt#8AnKsl$=T)C1WbxNs>oPbxMt4B3@LUFj4X(C@VArihrimK)%!Y2jvN0 z2B*%H>19St*O9GFg*xS>?+0 zHaN#^yG$>uJZ^{NWtH9Yj^tFjyYR;C+dc)GeomM?nSsg^9F{Sa?uRm_@qq9=D!DJIrmF0j9&qm@gZ~lJ7va4;Ekbmk%@6VD6=+z^0-ELnchss zd=3*|RGzpkl*hG$GGF_0@-E&HO<#Ua9kB zoW2MSUuBgCEC#2(Cex{mUx!wMz6Iq8HbMDG;9V$RRJwbl?t?PlAsHWrvH>4L@k-Yn z7JL+-67*9j$Le#a8}tU02i%0R=7msR^S?ovpUq~v0_DY6o!uanC$5dy1KI}4@&ci( za9?P7ZqoD%H>pjbEfI4L_(@J>OWQ-)V;v;_&y@K(%Hymue_0Jc zx~VKEiFu&EJW+rwz$Oczn#CATER)O@gpdvGB9p1)U7@URcgd;D*Gs1Nmb|Pof3W0b zmAs$iWz_f(5F!g4ATv-o0wZKhWradzOl5&1WlUxIC>fVk^3jr0*?@5}9%s>)PXn;P zaG5~ml!%3LE+<1dW%!{Kqi>o6Wx;cyd{KG)e90F;ne@8kOBvurWxnN7SL&Z~0agOA zKuu<(GJZqGR35k*$|?1h)VF2&f2P%uf3M6}R@oEj`(;5NKzYK$G9#7o5gAh%e<<}R zRKIATyeO_f`J&c>7D1W+4wNUlE90M`Y{-2hPB;Amhp+#C6yyJ&otQ0nAZz}stY}$f zOMVAuPbe4{&J`8Pxl#+tx#A9GIUZ2Hs64J7mGiFw9Hupq>J4R=wSw|MU#YF7wt=!P z9iV(sxuW-g^0?m6PS7+cD>N6%a^^w#Dy#Z7X@ShJP-dXApx2=7>`)%q4a$r?CGQ7i1^Yw!qB8v@se_?B!B83ViI_|u z31xX>WgIRwQtBiq{-v9y;++M=LwP_llqZ}9<%>$5Dm6{&Y$)@+3gs9thVu1aQI@w< z&yVq^!xigoC=<5Hg8oT)!tF?B3$vk&cS?N+ihriPe3Qy;$tlEa;Ato);bka~zeeT! z`w9+UR2KL(lok0F%Io?bltc78lw44WP`>^%)#v|zmf`=c zfd9*ME|A(d{fn(l9W}q_eDz%&BR8E?n zP|l5D$*JtAeljkr%s)VKD)SA5viw0%{rVpchr8)WC|~~_%E=ld%PXto@sdjw=e^Aq zeG{4>6R50VA`}zdlnUkTbgoSQA5b|7aFP&dkpIOmjc|UB)qEIRyadLvS|;^>{7WOY zpIyEm#ut?p_}}`{s9EW^Mm#%S{}ey}(&!(*WP1Lk5#|fOJmMA9g|qlSP$oV9(&+h@ zM*sAk59iE(jbo|&r;MC@&%ZQcHyU3e@nWmPTZmM~?ufZ{Df1msW2Tn{r7=6SAr5%{ zrIG&S5xa5--l)&NG(s=%2QL50mqj>CKaL&w{7WPKdVKz+(ep2j_~jAT=;vP=J^#|^ z`IknG<`Gi?A;KtAE|LH(}tb6{Y(ep2j{ujP9I$-N#{-jcum$dw|MSE9#;eG6C`q8+X z=L$x8nTK>-c0Tu~%d6{*|90YMH5YA2*mt)WFDifYxgZVImX`qR%2 zR}VeVbErAPO~l?a_cQks&I#rbB6@<^O`M$o5F$Jx0Nf)0(jov}5@!fb6Zl2~3=*l4 z04b3G*9nFQ?P)3PD%4pFw z8Zt(#rHmE#DdR-26Ea?GqJ)dblnG)`3?xEiQ6hzTG9*fbQ6`F9$|RvqfkcaNic=h< z#E9y#kjcVHnIeu+Vui<4$W)O)i4$ii@xn6>k|0tcA|;Nkj6=nfgm*lES3JOycz|gl zpWqrnPy)aVu_%FUO<-FIQbj-_fPW%DW+K2$QAkig5RwFtCe|hatVsfRN{}vslL7i9 z1LPzF%odLc9ubV01~5ltO#|354Zv+Wz&sH)9Uyc%z+r*~LY)ENIs+hf2EZb5kRXqs zK?=ZY!kGdPodR%{V2SWZ1#nLVNJ|A+Ce9F?Ch&b3V1-D186f3lfa?UB@SX|aH4|XT zOn_A)VJ^Tmg3EIOgjh5SVBsu);#mM|ML-&We;Pn$8o)YHNKil!@(MtvSo;dVnpXgx z5^NB`=>UDw0dmp-Hi^dsj|j$O0Bjan82~#n0NiE+Y!zX%0YYa3946Q<)K>vqUj>ML z6(CC-B*-IZFb80#aLxgUo&#`}AV+wxE$(vxeCGkYD^lkHoF=$VkSo0B1EkCYSTY}A zugE9xnhy}P0AQb3v;g25K>wLLSJ!(_YrAXm?N-2K%?Cd7@+vhc&`cvxb50<{w;U{-{!HVuXR!!-*5%+Vm=~>lh&;uf1A&OnN z0O!eEi1Qp2g#hM5qU$2a`(iES196{nSOhOd<~56uIcG64e<&UUn2(A?2J!YLn%gOt;v`clXl;iP;bj!`}p9?Kw~i3G}7afWhEcrJ&W z7pasB;v(gu@LqxHq%3Ertw41yiF^XD73{Q?0GGw0l>pZWiV3cY01aT_N`OoaAYT*` z_-glnL;gSdP%pz+O z4thl3_BKE{5%xB~j!giE2`ob03=sM@Kt=ukTL4ty+yanCaF(Ew@Yo6v zy#*j`D}b9gL*Tv@p6@n*sv>n8z-fZ(1l5K2c7T*^086$5)D-yyUfThJb^yE}7VQAI zMo>&pM+9U6EZhN*nFZh>3JLtP079|>>WQ`400jh32^xstod9dH0djT%G!%~s`s@T4 z^A3Qg$a)9h5rJC{Kob#`1F+*AfWrjMgt`kLGzTDd7eEVfkic~pK!bMyyoK{!fINb; z1TBTfZh+`_0n&B@_=+3OBfR~)1C6CUqF`ilfgh&V$TAUr>Syd+X71I0zkAmM!&GFZ%}3=#Pd;dL0r1|31M z!^EN^0M`hL2}X#35An9}2tekC0AZq#!2d&lkfQ*j#M+|(1q4qC#)#l!0Beo{bdq4iiKP^#nlZae&wp0F%T)0@o7&4Nd|$ zh4Ump9>H0H$-?6lK=es~v{L}F;tYZNDFEM(0pdjJ#{j1Zt`j5(@6!M&9|J5o4Ui=A z3A|35-O_J|*ZMqNUGsgc*Odi52h@pprSXt^pACOy)1m4ek2J4Z=UU}0^`ndO*13LC zX?fH#|4BU?*B^J|yH1UszTi1@-<_978-I~&+-9cnBcyz}Ts75cduDyaoWyG%b*)(R z-Ss1t{D$1hnlU~$wC2a|Ssrm4KYP;T!=LRQt(tCc>XM#NZSuW0>x?LxUuklWOWCI{ z$KU!|oIP!J7sY4H{X%AxE%@g38M~`~^ZRU4+!%JuVDm|t9&cyK_w z#JW#hzpk46Q{D6z@3((-#+upUI;*#KSmv(pSC1aIf27O)?*c2$3s0={_;}YnBKNzC zzpQ@a*W8tvqoT?WZI$x+w7R?9ro4Hxg8SUC7R5KCcbyD*bo5ERv1O{4RbqOHo3xHK((H8*M2#N`W2)GQe@C$&<%K&RdA%Xv8 zfRHNy>%`hC00jh32{J|SRe&{D0CKJZY!HtL`dkGVa}8jV$hrpbh`=o$V6zCz2iS29 z;4r~fp?(Pvnhy~BCBSxZkihjzfCgUyWC`b20C@yw33dvPuK}XJ0!aHBAV-`baQ_;> z_d3A4BK11JX@ctnxx)J!fRyV1OTGcvEAk1vz5xij0kBUjx&d&FpqSu*2>2FY;SGSy zZvhU9LIVG90YYv9yf4Ne+RJUCP2=203V9S1bw~(7;_8Yn8>;X@QA?e zdw}C2?0bM6w*U?koD}L00HNOl#Qp&Au{cQJ`U60N9|6t?=Z^q+1ZN386&|+%qJIQP zyA5zwoFQ<(4d7blr!dh&uF{M_rw^7?M^U1t9u9z-5AB;rRf-{TG0F4*-4^7YR-ibo>?I zzL@A;*M|W9zXNQ2 z2=GMQCnz8o_K3T0vv~Uvci#^|ERVVSHjBZJx%++uvJV8iZ}T5G=n+BG9{}YXoFu3qs{aY#`UGIwp8%>jMvzC)>?uGck?<5C`cHt%1a89f8G!p! zc=MhCR23HqP7`$e3!u6Pvnc41X8=DC)Li9<*y}H|+p1OQ^%qv%M0gFM=xIh=N31X_ zBUUX`&>M_BL{|kF{LKJc6@Yr;K0yJ&VUAk^p_T_&qX1Z302+!xE&zSX0qi626yePA z2q1lNJKsU`-yV7U#S7O5Z)(!A`t^E+N48Gr<@@l<7}tlt#NJroJ*>FK@1BiXd^)3I z%C*xInyk(GeDV8%n=1X`Ho8-*zxZU7k{fUn{+w36T#AmjiMn-R*Yw_BJybOp=L-Ar zQyH}v6m)(RKB(ok%h%_6-CfxDdb7tKyUZ_Nx-t2ODl`0c#iZIltsAi|@3ovdug!Qv zWV$Hs>2a{^j-J2Z_hWw%xh&t2Up-hra##vG#4p&z)FnxZ_It)0Z9< zPMx3M=F`IB%5w)DJ#+&9i{#zblRwJ(xlHw%m95^b(IfY7i4R-1Y2dMR=i2>gCtLXs zUJ@Vs!Kp2S`)wQc?uB8^FU~#nS|txTK9xNc&*mEXqIs5Qhs&Ns;; z)ON-rDsF-2jPE1AteZRh&+22FY$;Q{7G3*TJd@4XLZb#m4?TX*~W)lUwks2Eh3vm}W38uG`%70I?7z~=&oz2?yWTfDm!Ge8*KS02+I3@J`Gj{vJU+?! zq5Mnc;}bJ4DDQ@EdvK@n=%3oxv_;?UAkJ1qSFX>l{Qkbx?GHBo@zS@xqnZbvS61$f z4(fX7WWxH?2LT6OpE0&@X|>H>gS6|f-97o_zSsUjx0?+IgyqjUaiha4*&Z*Ksh(Bb zcSEZeRzf!ntAcI_5Syw1_*Vw7R0Xh!K~(_?2=);K3AH-F8aIHbY5)$ATMeL36@b|4 z0A0mF=6FQVpawv9;j96$qbk5zf}X;oCO~L4fV7$by~P;<*XjViwE%)eYAuDI9xqb* z3GWw>99;v+OI|>7h{z{!uL%%T8{j3es5UYV6gMe@L_i(LV6lQSL=;knimvXEVPY+1 zxVTRlA%Z<1p<)vyOgyHH6ocwQMu{xSXko4g86(0dV?{1yoKWjS#*1)DxHw3eAgVWj zLc6GZ}Lk~l+&7M=|uPLT=`dG*nZ>kZM2$-=u48`^*kZ3GZ2@(J8u zWJ5gx;>03PfYSuU1PLObF+fT~fXv1KNurRzs}Vp*6M$)AZ4-cN1WyTOh~TCG3q1jH zngXPX#{~Y30md`~m?^TF0Td9pH3vu&Va);7GyynFkS^2~0DYPQ#I^vKEe;YqB52?R zFh@AO0CqG3I7={3cz6SZHU~)a23R1@5V*Dg@bv*$BvO3<@(8XIye7O`0z`WOENKa_ zMC22=djkZu0$3&%wE{RzP)x8w1o#4^_yA=30%)R;z^f%dNNa#qVr^@HYXnaTga~c} zu&@j1D_oFQ;+2jJTgAWNin1jr+}POwvWcLIoR z53r;YK#s^KaPI(s2hnqPy~ql1nxL2=SDP0Im@{ zB{(30I|JbH;^>dg00+fm0)KyiF*bnrMV1YqfWR#f;IIe_1XvRQaG2mjp#}l;=?oAX z1aM3oBzQ#7zz%R+IPCyCY)Tbz&aU*u?%Klv5E_UaX%6K0Sezkn4Fd4(0&qs8b^*vE zxK8k?@a_r_Z3kG=72vGMCvbNF1a$*AFBWwJI89JYa8U$w2T17xkl7vJk|-qb>Ix9j z1K_e)+XLVl!Bc{(BDg2O!fpULJpuB?V*>x~0AqRqd?m7a0Td9p^#-^u!g>R&=>c$< z;D%890QBhz5ZedfrZ`COh@e3*z%Ahn2H4RH;4Hxp!lN%hXm5bDz5uty83NZn0KWYI z3Pox^fINch1b2jYe}L#q7Z=71jPjRMZf@nlzsr20{|X~ zLISV;03k0a{gmGn(RZLSTwEi`83^)F5r2>@3;`K42;{LMvIi-{l|K}r42C{Y#7OF& zir7Pas)&k1pwARBf%=ys4nfT(QGF;DLbGsE6mg7FPIwH1xQGObMVz6O7oNi*6+|k< zRa~T~!g~ayqL@voB=RYhgbKw~dX(3W6Ug9FfTX;`^_=wq*mLi|hO87-Ue8nP4YjKm( zMg&Ac+KLqvKT$|&C)P$m+Kc-T;WYuHHEbe=xTDxK5#SnuWfFi@44MS6Fals7L4Ytv z1NcV*L`4JGL@q%A!3$1+AQA3F*>-V|;tBm+rH42}=_x#? zKzfN(N^fzI(nom5LW0F?N?(yr=_mZALi&qEln`-~GC%~xL0%FoC<8?yWsv9^4;d`h zQih28l%XOx0WwT%q6`<0DI>(7L`bN}qTp+wB*;h+Mj0h?A)+9TO-x1;#~cVxRt}Wc z##>!P+nI{1GQ81&*6Wn{ipW^5R5rhQ;B1=WFe~4+6IIfcJ(lx$PO^HyZ=F)L91mGN zN10--cp!F;a=?rUe)C~4c?LJfe`8|BazzuLp>RvkS=kc}^|rYUxL_P()JpH6znx#N zQE3P3El>{55v|`<_866JZ_)o3dEvHLiPPKj-fpFbWk*%BsS>Mr%V^}i-Dud3st4}w zQNA%NgByx-?%S7~(24OtD>D9} zQ_16iUX=Ox_tsVThF3$$_$Sd-Eqsa*UX3K=9|6~v89gQAUq7FgtT7lX!bjwMEE%7i zMaJiG9FwfMWc>5#qmp?^#y_BO0b^x-_!t7#n2#qYCt+)3B;y~4^8rVE@v&R@r$44? zH;=@tBLH1Kso;QQ{DTU*eDcgl`FGn^Ft(OYXsRGtkjz(;?dQ{l*mApsd?o`QdBT@N zGCof7Pg$8RlJQXoFEVC)4xG+;Fg!>hZ@$G?}%yx_Y@7B87M*jhA`UCD=+vBf^H8F1KZ(`CMv z@KYq4Az3S#uK~xutF#b6wYrjmgZtyqDe9I-PHWChA zL!%EYomg(TIeh@Sk;o3R7VfVU=KRFfOlHPEFNd)w!(JfKwCp0*p(lJIn)C7gitE0QMrRA*>P1 z6V?RQ6xIyZ9Oeb{hMj;NhjAG`3FFdx2FB&~BN&(1Q?UK81F*e(y4ZVg_QCWe6v~Ik z{RaCT_7L_6_89gD>`kV*b2-^VT6M*@cV16Mw3&w9Ac`0PT_&j4i>o^X^ zhbH%h@!`rnVZC6zVJzPTrot-1@SkFsD!?kiTw&rm_kw&o@?0zNKVf&K-30Q(Jw zxo0{F%Yz*f&0@+mNq+(JsuqmTr{yC(?dZ5rSQw1Yg6jZF!8Diw<8wliVbfrvVWVK7 zurOEzY&5p#{1C(*f`h-7$1Q05{yq)=>zNSifI!9hc_ucTBk9rC9DIi6|6n1 z1*{{?7uE#U8s-J-1oMZrfmvZ~VNGG)Fh5u`SUZ>xtU1gM3xwHVL9ouS(VRB@(Zas4 z-mpHf9z2rot-NKG+7>M%df1&9F^aV%~;j!LngofnR}f zb>{NUm77cYWAqB|x=&#En7epNxv}Xlfb&_YpTc;v&cV*ZK82lveFQrW`vmqe>;&us7@vyGUq0B%C!TME!v}%Shb@FH zfGvW(2=joofHi@6!kWUG!J5Mw!@OZ$u-dSCu==n%utu&S zuvcMeuvswPjrgRW$*?J~SlCop9E^`BQeh8JKA(TYhhtxb_2T;68IVt>OvB0AVS2QO z@%eV#jnsfuhkc9m>#zdYZP?eao3QU--@tCbZo$5X{Q&zB_9g5qSRw2hEFX3ib_K>K zhRuP^t$+({9-R5G1+ay%MX=qlJup7@dn=Sr2HOnV0-FKjBgzh-Vn09&V1=+E*d5qU zuwvL<*v~LN?Z6x*!Qp>V7Fm~up-z`uwvL<7{B1+*60`50~o*2P3OL7GK_nnSQxiI z-0p|4~F59qlJi0 z!6w0?VKJ~+SUfBdmIOBtPAebHIfOUnnhP8$H!P>$2#hn+-8`cPhA4_1n0^{cI57-k} zCgQhX-282Xt%a?Dy$M?f6R`EL)v$T6`LNeui(m_2i(w04b78N-X2a&dropDeM#09y z#=+9L(aXX~{b8)ka*T@xn*^Uv?ktA!X^o+1eHhFIW`<>hy#wP1J$|tBhXueoQ*o>n z#;2?M!1&ycy08YYim<0R*I%&zr?u|@iy{fy-rd<1!~h~FVHFVJR1{gFIUFTRaaM4SI6mD;`qm- z58=T&U_HRI$xXmvU>49Bs0hY+P@*TUUm;CKq5Lb6F~D|!f9E+LXuW_dxW5Km2krp; z&{`xx})CXzU2Z@@P5`g9cx}Z$E4Tmx zmH?B1vA`H$I4}ZO2q@1+n>|0{H+dzz)a{*aL-t0>CUN@CU$!DN2npQA(jH={qP>0^nuQ0u3g# z3vm$%@N#7^&;d}G9dXU8j^e;-U^~FSoKol_$N)(+ZwmoCHn)JZ;#E=i7iy zz!HD}o)XOm<^i<<{$aR=Kol?wmorV>(^PGQ zYt9@DFpUAnh>Hs4dJ^s<0rZpN-#8kBbTlxEx{nlG-FWRG@0n#LEP}HS0R{tuXxm7k zSwwqWGCBYqflfeYpbO9y=mvxXyo)d#7zzxNF#_pGfNA3Z7C#Y~0E`DF1N@A^#m@w0 z0Mmg#r29hRkLk_E4KvLFXznPX2Stw(bo6PIptoBf(^$YF`FgR;XBV*%R~vw3zDZp-E48SLf`H1B>U^p-YxCy?izy)AG5C`xQ zbDxS@ju9I0--lKm1P%aKfQvvfa0$2!@I-(o0oMVpzW~VO2`x`xZ{fZqQl8v?#Whb- zd9uorRIaZANb>`{a#U85I$ZNagC`kUZchRp@G4RTyhQQ?xC`6?ZUYK)Dz3i)%)=Aj zdjKo&7~sMl0r!E2zysh3zu$64kD4-DTt$>1nCBTthfUA$)#_I&0-}5@a z1}F^h+@IG1jsVm6p80rCn3v;rAC zod9kH9f1x&D8PBT0bPN1T>mVTAF=}d<$ErK3s8jjz%>U9XJQ)XQ6jt-uKNH?UmzMlY$ z2bhQNm1`v(jPm~A`kw|Ok8x9wP6jvwgT28W{ZypfDRJk-9g{*gEqE7rb^x)!b|41W z25bek0Goh~zy@GFunt%Ytl|1!jf-gDPhdVU7nlRg2G|P4s#&;Z>$!Jjg=ZqI4zT5l zmCALL{G7ePH0~$nWqY;=_X`zwEyzY>mvKgBS`4rNLb?)I0W1fW0ZV|TK=%Br@Qjr) zRY0jG<(Wt~z2O3LWWsZ%nF`Eq4cF&pll)3O=Oj;&g)}0wz}yPw=Q~XVD+;qmvI{>5 zz5~EsU_Y=Ahy(Tj+@xLQd#3Y!8c!`;>5qwmqb6QW@xz27I8`%uvhbVRF|Zs3ilCT$ zKz^VQU=AeWc>-{RSqtOXO|eOWham}1xFtcPxOa3M_Y7Oyvy{`gW+|tTnjt+Y=BAmG z1n0bG@J!^PJ(Gl1g_zY6ECm2D3l*Czc<9dKaiWwfbh2PxIvMvYopZB}N+~Rzv$3w3 zdCJ$!jlD3~tN?3(OO1!Pf=F2e&t%zb7K6_=rwERP6fv14Qn@LDk1gxWrg1J-AhY1Y zlrT*&r>H4{uk2)Z3Yj8k3uIB7zE2UHL<_|VC|rW6Y+PnBxM%G|f8hG2n$DxXD0+&J z-#&{d5ZNR)C!Xd`6$|$HcfCvQgfQn z!_?PMKR=ERotq|fEtCS`Sqj59!PwhwfUTB^es>Wcn7eoFTgk8EASo23(RC)WTj@Jd~w#p zgw}vL2zdZAK$$=C`!QZ1S^-?BVkuk5R`F&68&Cu(za?PB3nR4!c(Z}mjP?NMdAEbRdX}s3 zyW`po;3{U`2qy4De!$?m;%9ta9%(rSuFE3z0DN$50C)pQ*-&CW-c<4dl!90|7tF?( zD#&z>Ej9|z^JZGcE1((?Rq%Ks^q&BX2WsKI2EY-(|JV<_Ag&422Kb)w1lK9Ra9|j~ z3wYk7;YEBn&;zIoC^A^RFx+gvpz2bRqge!gk&=2Sjz_`0a%GWNF$Ep zf0KYD;21C;_!Bq^EC99wtAVM&eqalb2qXaUz+vDJzy=%yb_2VBoxlzt7T6AK1C{`D zfKh;KP=sjFL_A<^S{hRzYOhJX@1U@a%$=crYrIkYuNyWkMm3i zW^(;20{NlhCKjd$=Dku?&rdn0;X}nf;lfM&6X|$SSZ&$%Uchu1J(j-09Il(unJ)1mjhf4 zv^z?$ir}0qiBkqkWGRXn{EY860NLqERC2^_0@ysRo0$Md90!a^g=bpEk;vA;vIw!V zP0dz_To{|mjEebewrQcJ_gtvbboe0X2$W~65c4Pzc?8$2C_mc-%wQp$iCuLFPy}&Crm--lv4RZd zRXn2HGcN~>sS#Wa>i~{SE{yYWH7XIv&yoPK{*@a=029swtc>DPMaXeHV?Itz>8$KU zfV;mdKq7D%$Zn8no~vB{tdS|xNMusH!flHiZ?;UTbUfpN(f}^(4loEv1;T;H0L$fm zo2LvsFX68C5x`1y#y$5^ce(z#-+hRi2f%&co_uXuC=2H)UUo&;DNpn)g-~kf{&0o0uBQ0U4&N_Oe%+ao>!Db>H+Y}Up|b&=V~F)|!{;0M+#{cd z3chotr z)?U4yI;_Ms$CJU{B*#3l8d7TJ=Ndq`tOLt+mg44U1$?l-i#h*MNOC)m$&sQD39*4T4W5 zQF@wrD``Q+*9v82P9za)g&x^t%G!##eJJWHvu7z((n=~cM}`~=mW{zTWW_$grr3>w zgNbmXMp;bA>Oi?*NdkUD%XZ^W4lznsjC56eRUF$AMd7ogWnRZWO)z)Us5^Rl`gjJQ zt&q3D@eI0x0?s-r#x*eXw-k<3B*TI z|CNG+<0F~=F*2iG$l1^jqON`jMb&$H13{XMLX>~2;9c0>THNG_+-{YzaQ@TX8#VZ* zrpZ>p#jzv^Ebp|s(5=Q>(!Usu@g{YwV3Wt&(;F?EHf+V-P!x12MTuVpTg2gut%ALU z_ypNAtjTJdVCPq$uq4hst+l6bl?h`Z&d1Zs6Or!-3btAzZ`(|`nz|DkUesZm zVDDHR4A^^#Odpeatpshg78wkjwGqt)1HRYXvJHOhL!Y+^%kUk}!Wf~BpE+b=|0vQL zX`x1&jxl(Up0!*{>cE^)CT-8j}3f6H669~v^*BOS3ex-Qmhc@XrY%v zAbZW(;G-eK4#7t^vlx1DsWN6##10r_0d0^At^FVv)T8Lt4xx^2k5gu)?V-jy1$(Cw z&gk>OH>i8(u0vp0RN9Rc`>3P^R%(+9j-nMih01;lz{`G(+4yd1)1^C3!LNP@c4S`x z3VU9&{`Kjwp8GsBY6Kozui8Kbb_w>LyTE{rw8%3p7oEFwWkM&7+RGCxepvF!6rXur zM;QX;pz|@kNK^&nZ-SKrl?(rFpZ1UJg-kEvLo;1vRWgD zJt%g_8})kQ*`Q%(U5yk2{SAd2>w^Jx7P&nlBHcRgtHnkJeBiqq5jKWAcEfRts1xq= z>%orJ5!o)*ymj|pllt0leTf0N&xIE37RqQYyHLVz!H&~gyM;>nGbN=~*7Nh2NNx2! zby36Ks9`wkT1oQS1MSnm!S=nJHtmji-S7!o_{7JTo7h*GGX8?*w`LPHV~rF`8oLMD zySho?bM#Z$PuowvSZ!peKs&&I52?;DUsv#9lQ#0pjGC_FE-x8s!}zR{Qd$%2{42Q>q?F>b|JIVBGgOC@&Fpb4k&2_cFTtg-Aj12`dgGIjthyt6nFsE zw?nh%QKbHf_`q#f;;U)Y6+HdfcvUZ&dqD8WI|U5*FR~pSKOj88H`Ln?!Y7+CsB-5r z`gxCY)2yGBK;MQe{BIX1*p!d-w0tr3+M`Egqpnuf;LE*bd;nz}6zu%ZfP;%H5mNO1 z_jpZ5=J4_~fa9i2dE2|uJm;wo6O2;R0x0;9VCVP&96Zz(=aAL0G8izhL`HUMKgVoMvYV*6Xj2HO49fj| zfP23m$jn_(z@c6a8yyPv#Gv76sK~KyTSfBDp8W6nmb=`b0p`)31`z#JWvD;`CM*yU zl^_(+`l`-Up;`%ox4uwSsT*EfCS}IZ`lXRYnNmo+cA6(uX)`!AAFEOdQhY#LC=uod zkVhh%v6DI>F%fJmLcXGuM8QAP7(8SnFwC+-`rI`3QYlvds7#BGW)^R!e*%R$G8;b# z9Md4*(UoFz@#m58S>;8?U{Op>Y~+KXRhZil@1#bRd0;fa4_N$FrbfqvG9|BogInCs z4fGKxr9tUki;^KrGqe_IlaNX|?Hu>ll3d@u&VVhN3h#EK@BmMPzo(z781+elJJwTp zs$d@x6(}yCBL~iD*a9DJ4MR=4aW}vd+{ajuVU&zdAJixPXtK>(JZdaAA9J zI)n2BQto3Ctt)@%6g=+?4E6GaOE9erq8fjpI@$$E4XwIaldwV4PIc3&eLa2r*sLKz zH2W{~HM7Bi$y?+>nFGK!6AtbRP^YNU}P02Fq3o*|dI^*#SiW2CgGOC34yV3{Me zrknYP+JQ+%j=7-lz*^z;=*9)Drd~8sV(ZdYp+`BnyGV#&rbQOjP%Aai3g@^sbO=?{R@8hZV+ zGQQ5tz-M7%=@?oJsqt=!u55*!JS0)PXj#; zn7x<=4onm|EL$`u=QD6%C^$GQDoCLG>^6D3WgM+@q^;-j$2dYPkdHq?z70qe&8I->X96U@Fy!7qu?#~Nj!NK!-gFzMF zoL+PJC&0lrZ0P=CZs5%?ZNTA!QZPpSQuk_S;li>lsm49%QKzLejL+`Sua~yU!)mNY z0L=7bJ!UdzNK0CORtVOtX-V(T!s+{wgEhZauws8}+u!SpntSsq=_n{%af_@XYx;DE zse=g=uP3~{R4&x+96P<06jzU)A8<%;{(cczu^MBy__U^|b0%snX)Seeq4m4wEAdB* zTcT;=%s#d?rGQhvqmAUA`x)nAO8FL83=X*hC5|FmFO_6uk>b9p_H89IuS8dWTJ!!l zo^YYEx#V?iDfB!_M)Zw3k8awt9mU{YU$LFkVY*K{w&m&RI!};;S5L?>xgB|35Nzq= zc_Ba}-Pq}mf!zkS-<;;2QLWvyykM83<$62nb^+a&T@@Su`3#Nr%zQa2m z2vH8fBb_N392zNDZRtm{P%PxE%UeIjB3uUxGag zyGw)P`!WajhvnVpBF;+?)Oa7!o$g%$M*=tsLs3=2*kum(0aiwiR$(*{GW`DzlT0e& zWgq^fPM_(bDPrT(_mmp!zSb45E;xjZTb}iZ(&h3svJ8!)*Q}nD|1wI=-GW}ds0KJP zEtuR(>XDbl<-0z|@D_u!V(W%pG#i}$@!;U$J78^EsSPn1n~WTf(DPv{B69HVdHLGd z71bCiS9{T&U+W=j{vR||^vJ!m+^zl3_2i#>J>@Pvn=du8rucE1(N{6^#6S^y6|PoN zG}+Tvg6lwjZTmLo632 z$LpAjKIl&&*SU)yAVqMC(C0tCM0Ng041RH#$dMxMBtXVD-4nZ>(Unb_g@^7 z9~2%K(X$k!sy79XlC8nOF*pb*i+G(hcHr{sXD>4&B!Dw)FwMLP4Gs>bcxQ~;qlZue z-%lArw{Bvf7(J9q-9ok08z$Kw_0PKK1H}Z)1kvaE^N8Pc7)9M;?}DQc%2?a2)7aI) z1Db(@{QzacL9qtq?z!-GuODtasl_V9S6t9e97ZXecQH74cpMS-SD^mT@d8GUZ8F8} z&X0Xz#eO_AQjQLzvbW*g8{jB{yvLSV^(sG}Rv9^74x`Z9@Mg!6wBR;u!4l`eZDFfL z%4n%ic{Z9l-pAs{NA+4}MpAF|*iBM| zqFP^-*BBaz9QqnyWvd(P`Ef6${k;|nt3lOd3^n>2wsi#u+olSOPkIp*en<42*n^D# zh3AZIMy);k!8RpE$?Kz{F|_<|Xg+8VC9{m|y)iiDxsiUX$>v9wcUc&j|e zQt=ct0#Rjq&HHiGH$~hqnspD&uSPgU<5na4KrqOr(bE(x&VKTYK6jVMp76`v6T>2< z=u6)?-SXPCJRHE{-U4Qz;$VYKEY?Z?QLY!u+CjH1tG=k9*y5)$>XUVD;q5qZytGzu zJHEczZ;rjSN*)7#s7Ex^m{qwlaCP6|`BLsGXDx;&9l1L|l4~a~^+IxAoV}PNg_Xl3 zn|AJ_wmBMCQ@Q8)Hi_=t7s}`gPsaL+-fR^LN5Dj^FayxCa$g~y1Uv6$JR9A9&4*Pt zu)D9U9q)s}16I@85tqJ{i|bⅆ*1+KTU=2wtM%cU>2+7$)a9FmIY_-;<9AQk|%ey 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 JqCL9h{}0Gg^wR(U diff --git a/package.json b/package.json index 7b4afd5..74d8edd 100644 --- a/package.json +++ b/package.json @@ -48,12 +48,12 @@ "@radix-ui/react-toggle": "^1.1.9", "@radix-ui/react-toggle-group": "^1.1.10", "@radix-ui/react-tooltip": "^1.2.7", - "@sentry/nextjs": "^9.32.0", + "@sentry/nextjs": "^9.34.0", "@supabase-cache-helpers/postgrest-react-query": "^1.13.4", "@supabase/ssr": "^0.6.1", "@supabase/supabase-js": "^2.50.2", "@t3-oss/env-nextjs": "^0.12.0", - "@tanstack/react-query": "^5.81.2", + "@tanstack/react-query": "^5.81.5", "@tanstack/react-table": "^8.21.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -71,9 +71,10 @@ "react": "^19.1.0", "react-day-picker": "^9.7.0", "react-dom": "^19.1.0", - "react-hook-form": "^7.58.1", + "react-hook-form": "^7.59.0", + "react-icons": "^5.5.0", "react-resizable-panels": "^3.0.3", - "recharts": "^3.0.1", + "recharts": "^3.0.2", "sonner": "^2.0.5", "tailwind-merge": "^3.3.1", "vaul": "^1.1.2", @@ -84,22 +85,22 @@ "@tailwindcss/postcss": "^4.1.11", "@types/cors": "^2.8.19", "@types/express": "^5.0.3", - "@types/node": "^20.19.1", + "@types/node": "^20.19.4", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "drizzle-kit": "^0.30.6", - "eslint": "^9.29.0", + "eslint": "^9.30.1", "eslint-config-next": "^15.3.4", "eslint-config-prettier": "^10.1.5", "eslint-plugin-drizzle": "^0.2.3", "eslint-plugin-prettier": "^5.5.1", "postcss": "^8.5.6", - "prettier": "^3.6.1", + "prettier": "^3.6.2", "prettier-plugin-tailwindcss": "^0.6.13", "tailwindcss": "^4.1.11", "tw-animate-css": "^1.3.4", "typescript": "^5.8.3", - "typescript-eslint": "^8.35.0" + "typescript-eslint": "^8.35.1" }, "ct3aMetadata": { "initVersion": "7.39.3" diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 3542f7b..116eb1b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,7 @@ import '@/styles/globals.css'; import { type Metadata } from 'next'; -import { Geist } from 'next/font/google'; +import { Inter } from 'next/font/google'; +import { cn } from '@/lib/utils'; import { AuthContextProvider, ThemeProvider, @@ -204,16 +205,20 @@ export const generateMetadata = (): Metadata => { }; }; -const geist = Geist({ +const fontSans = Inter({ subsets: ['latin'], - variable: '--font-geist-sans', -}); + variable: '--font-sans', +}) export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { return ( - + - - {children} - - + + {children} + + diff --git a/src/app/page.tsx b/src/app/page.tsx index f2b8d37..6ec30b1 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,36 +1,15 @@ -import Link from 'next/link'; +import { SignInCard } from '@/components/default/auth/cards/client/sign-in'; +import { ThemeToggle } from '@/lib/hooks/context'; export default function HomePage() { return ( -
+

Create T3 App

-
- -

First Steps →

-
- Just the basics - Everything you need to know to set up your - database and authentication. -
- - -

Documentation →

-
- Learn more about Create T3 App, the libraries it uses, and how to - deploy it. -
- -
+ +
); diff --git a/src/components/default/auth/buttons/client/index.tsx b/src/components/default/auth/buttons/client/index.tsx index d13fac5..a04ec76 100644 --- a/src/components/default/auth/buttons/client/index.tsx +++ b/src/components/default/auth/buttons/client/index.tsx @@ -1,3 +1,3 @@ export { SignInWithApple } from './sign-in-with-apple'; export { SignInWithMicrosoft } from './sign-in-with-microsoft'; -export { SignInButton } from './sign-in'; +export { SignInLinkButton } from './sign-in-link'; diff --git a/src/components/default/auth/buttons/client/sign-in.tsx b/src/components/default/auth/buttons/client/sign-in-link.tsx similarity index 87% rename from src/components/default/auth/buttons/client/sign-in.tsx rename to src/components/default/auth/buttons/client/sign-in-link.tsx index f28297d..fc7b7d3 100644 --- a/src/components/default/auth/buttons/client/sign-in.tsx +++ b/src/components/default/auth/buttons/client/sign-in-link.tsx @@ -6,7 +6,7 @@ import { type VariantProps } from 'class-variance-authority'; type SignInProps = ComponentProps<'button'> & VariantProps; -export const SignInButton = (props: SignInProps) => { +export const SignInLinkButton = (props: SignInProps) => { return ( + ); +}; diff --git a/src/components/default/auth/buttons/server/sign-in-with-apple.tsx b/src/components/default/auth/buttons/server/sign-in-with-apple.tsx new file mode 100644 index 0000000..76176b4 --- /dev/null +++ b/src/components/default/auth/buttons/server/sign-in-with-apple.tsx @@ -0,0 +1,78 @@ +'use server'; +import { signInWithApple } from '@/lib/queries'; +import { SubmitButton } from '@/components/default/forms'; +import Image from 'next/image'; +import { type buttonVariants } from '@/components/ui'; +import { type ComponentProps } from 'react'; +import { type VariantProps } from 'class-variance-authority'; +import { SupabaseServer } from '@/utils/supabase'; + +type ButtonProps = ComponentProps<'button'> & VariantProps; +type ImageProps = { + src: string; + alt: string; + className?: string; + width?: number; + height?: number; +} +type FormProps = ComponentProps<'form'>; +type TextProps = ComponentProps<'p'>; +type SignInWithAppleProps = { + buttonProps?: ButtonProps; + imageProps?: ImageProps; + formProps?: FormProps; + textProps?: TextProps; +}; + +export const SignInWithApple = async ({ + buttonProps = { + className: 'w-full cursor-pointer', + type: 'submit', + }, + imageProps = { + src: '/icons/auth/apple.svg', + alt: 'Apple', + className: 'invert-75 dark:invert-25', + width: 24, + height: 24, + }, + formProps = { + className: 'my-4', + }, + textProps = { + className: 'text-[1.0rem]', + }, +} : SignInWithAppleProps) => { + const supabase = await SupabaseServer(); + + const handleSignInWithApple = async () => { + try { + if (!supabase) throw new Error('Supabase client not found'); + const result = await signInWithApple(supabase); + if (result.error) throw new Error(`Error Signing in with Apple: ${result.error.message}`); + if (result.data.url) window.location.href = result.data.url; + } catch (error) { + console.error(error); + } + }; + + return ( +
+ +
+ {imageProps.alt} +

Sign In with Apple

+
+
+
+ ); +}; diff --git a/src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx b/src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx new file mode 100644 index 0000000..e4669e4 --- /dev/null +++ b/src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx @@ -0,0 +1,78 @@ +'use server'; +import { signInWithMicrosoft } from '@/lib/queries'; +import { SubmitButton } from '@/components/default/forms'; +import Image from 'next/image'; +import { type buttonVariants } from '@/components/ui'; +import { type ComponentProps } from 'react'; +import { type VariantProps } from 'class-variance-authority'; +import { SupabaseServer } from '@/utils/supabase'; + +type ButtonProps = ComponentProps<'button'> & VariantProps; +type ImageProps = { + src: string; + alt: string; + className?: string; + width?: number; + height?: number; +} +type FormProps = ComponentProps<'form'>; +type TextProps = ComponentProps<'p'>; +type SignInWithMicrosoftProps = { + buttonProps?: ButtonProps; + imageProps?: ImageProps; + formProps?: FormProps; + textProps?: TextProps; +}; + +export const SignInWithMicrosoft = async ({ + buttonProps = { + className: 'w-full cursor-pointer', + type: 'submit', + }, + imageProps = { + src: '/icons/auth/microsoft.svg', + alt: 'Microsoft', + className: 'invert-75 dark:invert-25', + width: 24, + height: 24, + }, + formProps = { + className: 'my-4', + }, + textProps = { + className: 'text-[1.0rem]', + }, +} : SignInWithMicrosoftProps) => { + const supabase = await SupabaseServer(); + + const handleSignInWithMicrosoft = async () => { + try { + if (!supabase) throw new Error('Supabase client not found'); + const result = await signInWithMicrosoft(supabase); + if (result.error) throw new Error(`Error Signing in with Microsoft: ${result.error.message}`); + if (result.data.url) window.location.href = result.data.url; + } catch (error) { + console.error(error); + } + }; + + return ( +
+ +
+ {imageProps.alt} +

Sign In with Microsoft

+
+
+
+ ); +}; diff --git a/src/components/default/auth/cards/client/sign-in.tsx b/src/components/default/auth/cards/client/sign-in.tsx index 83fb989..2979013 100755 --- a/src/components/default/auth/cards/client/sign-in.tsx +++ b/src/components/default/auth/cards/client/sign-in.tsx @@ -43,7 +43,7 @@ const signInFormSchema = z.object({ }), }); -const signUpformSchema = z +const signUpFormSchema = z .object({ name: z.string().min(2, { message: 'Name must be at least 2 characters.', @@ -77,8 +77,8 @@ export const SignInCard = () => { }, }); - const signUpForm = useForm>({ - resolver: zodResolver(signUpformSchema), + const signUpForm = useForm>({ + resolver: zodResolver(signUpFormSchema), defaultValues: { name: '', email: '', @@ -100,11 +100,9 @@ export const SignInCard = () => { if (!supabase) throw new Error('Supabase client not found'); const result = await signIn(supabase, formData); if (result.error) throw new Error(result.error.message); - else if (result.data) { - await refreshUser(); - signInForm.reset(); - router.push(''); - } + await refreshUser(); + signInForm.reset(); + router.push(''); } catch (error) { setStatusMessage(`Error signing in: ${error as string}`); } @@ -112,14 +110,214 @@ export const SignInCard = () => { const handleSignUp = async (values: z.infer) => { try { - - } catch { - + setStatusMessage(''); + const formData = new FormData(); + formData.append('name', values.name); + formData.append('email', values.email); + formData.append('password', values.password); + if (!supabase) throw new Error('Supabase client not found'); + const result = await signUp(supabase, formData); + if (result.error) throw new Error(result.error.message); + await refreshUser(); + signUpForm.reset(); + router.push(''); + } catch (error) { + setStatusMessage(`Error signing up: ${error as string}`); } }; return ( - + + + Sign In + Sign Up + + + + + + Sign In + + + +
+ + ( + + Email + + + + + + )} + /> + ( + +
+ Password + + Forgot Password? + +
+ + + + +
+ )} + /> + {statusMessage && + (statusMessage.includes('Error') || + statusMessage.includes('error') || + statusMessage.includes('failed') || + statusMessage.includes('invalid') ? ( + + ) : ( + + ))} + + Sign In + + + +
+ + or + +
+ + +
+
+
+ + + + + Sign Up + + + +
+ + ( + + Name + + + + + )} + /> + ( + + Email + + + + + )} + /> + ( + + Password + + + + + )} + /> + ( + + Confirm Passsword + + + + + )} + /> + {statusMessage && + (statusMessage.includes('Error') || + statusMessage.includes('error') || + statusMessage.includes('failed') || + statusMessage.includes('invalid') ? ( + + ) : ( + + ))} + + Sign Up + + + +
+ + or + +
+ + +
+
+
+
); }; diff --git a/src/components/default/forms/submit-button.tsx b/src/components/default/forms/submit-button.tsx index ab01a0e..a351af5 100644 --- a/src/components/default/forms/submit-button.tsx +++ b/src/components/default/forms/submit-button.tsx @@ -9,14 +9,14 @@ type SubmitButtonProps = ComponentProps<'button'> & VariantProps & { pendingText?: string; loaderClassName?: ComponentProps<'div'>['className']; - textClassName?: ComponentProps<'p'>['className']; + pendingTextClassName?: ComponentProps<'p'>['className']; }; export const SubmitButton = ({ children, pendingText = 'Submitting...', loaderClassName = 'mr-2 h-4 w-4 animate-spin', - textClassName = 'text-sm font-medium', + pendingTextClassName = 'text-sm font-medium', ...props }: SubmitButtonProps) => { const { pending } = useFormStatus(); @@ -30,7 +30,7 @@ export const SubmitButton = ({ {pending || props.disabled ? ( <> -

{pendingText}

+

{pendingText}

) : ( children diff --git a/src/styles/globals.css b/src/styles/globals.css index abb9401..d7445f0 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -4,7 +4,7 @@ @custom-variant dark (&:is(.dark *)); @theme { - --font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif, + --font-sans: var(--font-sans), ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -47,72 +47,99 @@ } :root { - --radius: 0.65rem; - --background: oklch(1 0 0); - --foreground: oklch(0.141 0.005 285.823); - --card: oklch(1 0 0); - --card-foreground: oklch(0.141 0.005 285.823); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.141 0.005 285.823); - --primary: oklch(0.645 0.246 16.439); - --primary-foreground: oklch(0.969 0.015 12.422); - --secondary: oklch(0.967 0.001 286.375); - --secondary-foreground: oklch(0.21 0.006 285.885); - --muted: oklch(0.967 0.001 286.375); - --muted-foreground: oklch(0.552 0.016 285.938); - --accent: oklch(0.967 0.001 286.375); - --accent-foreground: oklch(0.21 0.006 285.885); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.92 0.004 286.32); - --input: oklch(0.92 0.004 286.32); - --ring: oklch(0.645 0.246 16.439); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.141 0.005 285.823); - --sidebar-primary: oklch(0.645 0.246 16.439); - --sidebar-primary-foreground: oklch(0.969 0.015 12.422); - --sidebar-accent: oklch(0.967 0.001 286.375); - --sidebar-accent-foreground: oklch(0.21 0.006 285.885); - --sidebar-border: oklch(0.92 0.004 286.32); - --sidebar-ring: oklch(0.645 0.246 16.439); + --background: oklch(0.9785 0.0045 314.8050); + --foreground: oklch(0.3710 0.0333 301.6287); + --card: oklch(0.9940 0 0); + --card-foreground: oklch(0.3710 0.0333 301.6287); + --popover: oklch(0.9940 0 0); + --popover-foreground: oklch(0.3710 0.0333 301.6287); + --primary: oklch(0.4868 0.1488 286.5771); + --primary-foreground: oklch(0.9785 0.0045 314.8050); + --secondary: oklch(0.9139 0.0448 291.0467); + --secondary-foreground: oklch(0.3008 0.0773 288.1551); + --muted: oklch(0.8930 0.0149 312.2335); + --muted-foreground: oklch(0.5361 0.0391 305.8579); + --accent: oklch(0.8514 0.0535 342.1042); + --accent-foreground: oklch(0.3328 0.0528 311.4628); + --destructive: oklch(0.6984 0.1170 47.0382); + --destructive-foreground: oklch(0.9785 0.0045 314.8050); + --border: oklch(0.8488 0.0244 313.1102); + --input: oklch(0.9352 0.0136 314.7562); + --ring: oklch(0.4868 0.1488 286.5771); + --chart-1: oklch(0.4868 0.1488 286.5771); + --chart-2: oklch(0.8514 0.0535 342.1042); + --chart-3: oklch(0.7388 0.0664 194.5709); + --chart-4: oklch(0.9197 0.1140 104.6226); + --chart-5: oklch(0.7409 0.0895 280.3986); + --sidebar: oklch(0.9569 0.0090 314.7812); + --sidebar-foreground: oklch(0.3710 0.0333 301.6287); + --sidebar-primary: oklch(0.4868 0.1488 286.5771); + --sidebar-primary-foreground: oklch(0.9785 0.0045 314.8050); + --sidebar-accent: oklch(0.8514 0.0535 342.1042); + --sidebar-accent-foreground: oklch(0.3328 0.0528 311.4628); + --sidebar-border: oklch(0.8759 0.0218 316.4501); + --sidebar-ring: oklch(0.4868 0.1488 286.5771); + --font-sans: Inter, sans-serif; + --font-serif: "Lora", Georgia, serif; + --font-mono: "Fira Code", "Courier New", monospace; + --radius: 0.5rem; + --shadow-2xs: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.03); + --shadow-xs: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.03); + --shadow-sm: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 1px 2px 0px hsl(0 0% 10.1961% / 0.06); + --shadow: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 1px 2px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-md: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 2px 4px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-lg: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 4px 6px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-xl: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 8px 10px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-2xl: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.15); + --tracking-normal: 0em; + --spacing: 0.25rem; } .dark { - --background: oklch(0.141 0.005 285.823); - --foreground: oklch(0.985 0 0); - --card: oklch(0.21 0.006 285.885); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.21 0.006 285.885); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.645 0.246 16.439); - --primary-foreground: oklch(0.969 0.015 12.422); - --secondary: oklch(0.274 0.006 286.033); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.274 0.006 286.033); - --muted-foreground: oklch(0.705 0.015 286.067); - --accent: oklch(0.274 0.006 286.033); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.645 0.246 16.439); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.21 0.006 285.885); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.645 0.246 16.439); - --sidebar-primary-foreground: oklch(0.969 0.015 12.422); - --sidebar-accent: oklch(0.274 0.006 286.033); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.645 0.246 16.439); + --background: oklch(0.2213 0.0228 309.2819); + --foreground: oklch(0.9100 0.0260 308.1435); + --card: oklch(0.2671 0.0372 295.2445); + --card-foreground: oklch(0.9100 0.0260 308.1435); + --popover: oklch(0.2671 0.0372 295.2445); + --popover-foreground: oklch(0.9100 0.0260 308.1435); + --primary: oklch(0.6405 0.1338 286.4998); + --primary-foreground: oklch(0.2213 0.0228 309.2819); + --secondary: oklch(0.4071 0.0776 288.3025); + --secondary-foreground: oklch(0.9100 0.0260 308.1435); + --muted: oklch(0.2630 0.0340 310.8818); + --muted-foreground: oklch(0.7026 0.0304 313.2720); + --accent: oklch(0.3328 0.0528 311.4628); + --accent-foreground: oklch(0.8076 0.0881 341.1289); + --destructive: oklch(0.7501 0.1053 47.2117); + --destructive-foreground: oklch(0.2213 0.0228 309.2819); + --border: oklch(0.3139 0.0379 309.3053); + --input: oklch(0.2913 0.0360 305.8978); + --ring: oklch(0.6405 0.1338 286.4998); + --chart-1: oklch(0.6405 0.1338 286.4998); + --chart-2: oklch(0.8076 0.0881 341.1289); + --chart-3: oklch(0.7388 0.0664 194.5709); + --chart-4: oklch(0.9197 0.1140 104.6226); + --chart-5: oklch(0.4868 0.1488 286.5771); + --sidebar: oklch(0.2039 0.0232 309.1750); + --sidebar-foreground: oklch(0.9100 0.0260 308.1435); + --sidebar-primary: oklch(0.6405 0.1338 286.4998); + --sidebar-primary-foreground: oklch(0.2213 0.0228 309.2819); + --sidebar-accent: oklch(0.3328 0.0528 311.4628); + --sidebar-accent-foreground: oklch(0.8076 0.0881 341.1289); + --sidebar-border: oklch(0.2913 0.0360 305.8978); + --sidebar-ring: oklch(0.6405 0.1338 286.4998); + --font-sans: Inter, sans-serif; + --font-serif: "Lora", Georgia, serif; + --font-mono: "Fira Code", "Courier New", monospace; + --radius: 0.5rem; + --shadow-2xs: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.03); + --shadow-xs: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.03); + --shadow-sm: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 1px 2px 0px hsl(0 0% 10.1961% / 0.06); + --shadow: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 1px 2px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-md: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 2px 4px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-lg: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 4px 6px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-xl: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.06), 1px 8px 10px 0px hsl(0 0% 10.1961% / 0.06); + --shadow-2xl: 1px 2px 5px 1px hsl(0 0% 10.1961% / 0.15); } @layer base { diff --git a/src/utils/supabase/index.ts b/src/utils/supabase/index.ts index 44bc7a5..189b3a3 100644 --- a/src/utils/supabase/index.ts +++ b/src/utils/supabase/index.ts @@ -1,5 +1,5 @@ export { useSupabaseClient } from './client'; export { updateSession } from './middleware'; -export { useSupabaseServer } from './server'; +export { SupabaseServer } from './server'; export type { Database } from './database.types'; export type * from './types'; diff --git a/src/utils/supabase/server.ts b/src/utils/supabase/server.ts index 72fd439..24fd6f2 100644 --- a/src/utils/supabase/server.ts +++ b/src/utils/supabase/server.ts @@ -2,10 +2,10 @@ import 'server-only'; import { createServerClient } from '@supabase/ssr'; -import type { Database, SupabaseClient } from '@/utils/supabase'; +import type { Database } from '@/utils/supabase'; import { cookies } from 'next/headers'; -export const useSupabaseServer = async (): Promise => { +export const SupabaseServer = async () => { const cookieStore = await cookies(); return createServerClient( process.env.NEXT_PUBLIC_SUPABASE_URL!,