From 434df2d4526c06a2222e614a264ceda31b7aa4d1 Mon Sep 17 00:00:00 2001 From: pedromcunha Date: Wed, 5 Jul 2023 13:15:47 -0400 Subject: [PATCH 01/12] Add chain homepage logos and stats component --- pages/[chain]/index.tsx | 34 +++++++++++++++++++++++++--- public/home/logos/arbitrum-logo.png | Bin 0 -> 11140 bytes public/home/logos/bsc-logo.png | Bin 0 -> 10422 bytes public/home/logos/ethereum-logo.png | Bin 0 -> 9320 bytes public/home/logos/optimism-logo.png | Bin 0 -> 6445 bytes public/home/logos/polygon-logo.png | Bin 0 -> 16253 bytes public/home/logos/zora-logo.png | Bin 0 -> 30568 bytes 7 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 public/home/logos/arbitrum-logo.png create mode 100644 public/home/logos/bsc-logo.png create mode 100644 public/home/logos/ethereum-logo.png create mode 100644 public/home/logos/optimism-logo.png create mode 100644 public/home/logos/polygon-logo.png create mode 100644 public/home/logos/zora-logo.png diff --git a/pages/[chain]/index.tsx b/pages/[chain]/index.tsx index 9eee4c64f..a8af8b484 100644 --- a/pages/[chain]/index.tsx +++ b/pages/[chain]/index.tsx @@ -16,7 +16,6 @@ import fetcher from 'utils/fetcher' import { NORMALIZE_ROYALTIES } from '../_app' import supportedChains from 'utils/chains' import Link from 'next/link' -import ChainToggle from 'components/common/ChainToggle' import CollectionsTimeDropdown, { CollectionsSortingOption, } from 'components/common/CollectionsTimeDropdown' @@ -24,7 +23,7 @@ import { Head } from 'components/Head' import { CollectionRankingsTable } from 'components/rankings/CollectionRankingsTable' import { ChainContext } from 'context/ChainContextProvider' import { Dropdown, DropdownMenuItem } from 'components/primitives/Dropdown' -import { faChevronDown } from '@fortawesome/free-solid-svg-icons' +import { faChevronDown, faSprout } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { useRouter } from 'next/router' @@ -135,6 +134,11 @@ const IndexPage: NextPage = ({ ssr }) => { minWidth: 0, }} > + {`${marketplaceChain.name} {' ' + marketplaceChain.name} @@ -182,6 +186,31 @@ const IndexPage: NextPage = ({ ssr }) => { Multi-Chain Explorer, powered by Reservoir + + + + + + 7d Mints + + 200,000 + + + = ({ ssr }) => { setSortByTime(option) }} /> - {isSSR || !isMounted ? null : ( diff --git a/public/home/logos/arbitrum-logo.png b/public/home/logos/arbitrum-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..780e7ded49901edb7d16b968f77ecd341172a06e GIT binary patch literal 11140 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 Hu0mjfp*D~& literal 0 HcmV?d00001 diff --git a/public/home/logos/polygon-logo.png b/public/home/logos/polygon-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0eed442b7fa697e1b93599ce98873ba8967bd74a GIT binary patch literal 16253 zcmV-@KZ3xCP)002KkNklp;U>VK-b zs{oG5Q8|JH!BGiGFsiSE$jIcTk^^Qs7EeKu6`D3uQH0|$>vs=Mri#HxTE7!f=!x!Y zOT{arUEf+YD}?}II4T9pQ9x_TJ?CzYqn%B|j9BRy6PsfI!&r=99QnVB{4OI&DgomX zg3eN87~~I*6R^fCw3+}Z13|ad?AU}Zf?@K%(P9GbByiqiBD5_6=zWyNJJSe0h_)7O zzjn)n1RND*ISOco)YoGJ<~Q`KD(XKJjG|)6sjpiQ z9okksErro+)5Nn#%hX~F;|MORX<*XLMgbNfaeTHM?EK`E=_?1rJ`%JYBCrl)v^Wjv zH_O_Mcdp(zxgCzm#~aXhPFq_VkE4@~6uy95o^B#M2APC5ARijDSJ)o_{_yODp#o-? zbw=#iOgy9WpzI)E;~Nr$uDnO;e2EbDXN`2%n(N=JZGn%ee5?RXAcF3zT{F}mRv07n zMPeU6LqJoRk97kmix@AMZL~7V^$9}!I42R9IGa?_I@{q6n1R)?Fv87XqSr~Ed^BpL z7GJk)>K^zQ$;SfF_l(~hkCu1MBMYd4e0ykygdMQcYg&U=rZ!SCliqL zW2K|O%(TwFG{B%5ijJUdoq?j+e0{Qk#8q`!XKxyA$H^o~krZ!{>xWR<_}hQ1nz$d1 zP&wiN{jFImW3|cH#I%90A&>Jy5>%D5n(T+p;i|pn2wKD!0q9VTESR|p0)M2ybeaPO zHvXPM$-Dn^`Q&v++Whws1LzAcoF6%D%lJA2(B;@f7nA1{&)YME1dbU%Us`98Bgmya z069wwyv!yrEH|eUXVgW_gnm5_IQ>Xh>E74s8%|Hb5g(q34gzL&k&4z?VWg0ZNEyn5?2^blcMtjTEHa|E|KN@BYYumdeb@rpnl~QM zR(^am75Oo-Ugr~N#^~G0JXo*wazx|^isJi>YJjFAn2SfexLi0*uSol)$msUZqIC4X zu3dS|hQk%uhb5rzpS^qtO2lp;9{iQq=ExioT4&#b4MH_?@vbDi&J$!2#SWK%8B?Jm z>&ynTugtwm#$yK4tQMMD2nZS-fR>I;csm zmZwtbtADs^(rP#i?c(=w0PF{4}$9%ZaI-w_M} z%=QX+IM$i>2uviV8Wa_w?t!BRqe$i`;fl+qw^-8>gv{^Uxb*n-aEQtw3Ft?stu1YX zo=cDsxtBC)iKC{7ugd3~GpRzL8j99g{PGdxr_Q{2Ksc+BPm}+JK-&@Y6)T<1K~6kD zbtkbIH~%X>;qHb8bjZzJA98?xaQd6W5u^!MhRaOEe(kL{96@e8_~)E6^-yuNGR`QW z=?MBNW90MJlLIrROAHKVCl08az}Ck%08bf_^gk2liECrFD; z!N_mEBw&_WDW?p7woJUuBRKio=?kYCnc570kX=2+(|t)ipv^Aoc;CRI_3*?oM;0~f z?A9R@ir+?2xb((F6W78aB8LQ^FNFD#x*5lOl}zP7Ku}yl54%o4Upj)AQ;#qn0#4IG z?>K^#FX6jq%%eS?^ul{?PGh+7!&K`dzgcxc5)QIN;2_J&Su11lLDfGd&3a3I*;)(C zjw8qu8P(tf(4t5+Fo5=)Gf3u~bIJUUAdhNf(lZA+x0ZlJ_bmsr6<>moab{H{UO6xN zh1VNe{&-M%^+C1J4^MojJXzfJ00#3?$iAN}a*BdjX9_?E(Ge65@e=DygH}edf^laa z)$qhI3dQz+@OU{!-??_#gjP66a?k*MU+wDAQ4<~_jc`sb%nN2O@`6(hPodzxRN|1X zdbn|}aA2O1enEoU_0FEJ8gzalqxyRHwq3&ge|4qQ%HaeEDEGiw6bJ57(|9 z){}-8$b+AX-4NF0%~C7nl;JDV6;G!TfteYf50_bI4p=4D*{6&W)$nH##^=M`>D8<= zt-md+QKaa?n--1k^LIfE=wrEW`kRw`O#D1)glX7kkG&!TGf1qIQwB@0LK;@QmQ@s# z!wy!l&e9U4BNh&jhgUmd#^af0D*4va_eJp)yp&y*Kb_zgxKB@J1e;n>Zs=IQduC7#wq(+HS2W#a+MypBfIoNB(g|yzkEG8m^zWxGA4hKg z877!LR~%GOY50OAX|QUzGSv`+Sv17+z?_Q*K|C$N?UO?t)a$`wFk5AgGQs%E9dkEL zhdz=%0rZ12mX1k8B7X;j$NA&D91PQOtPmZlfxSUWR0Fevcn=R_aWRMyf%EskE}8i* z3X)q)UXaK-^Y4vckGTCkDJQ1W(MNARb<0TT1L<`@XO^<#^GOR#V_msbEDC)gug- z^WcNEs0K(W0G0+Q=2N5^Uh783aaZaPze{=ftlEf#LG~4jLI>8M8W@T75Hmd6-?%tB zG<{2b9gadTNUs38X2$BviSE}?<}ND=_LwQkR3mq(>j)y%2P@@0Y^s4|Dg3h@YMo2e zL4=e?b!3rJ4Q_E%EJDb@2>p8`@!l2C3!>Iy8uFXz%O|IC;YO3z(nsfJ*9XLe$V9<((_zC8XA-}7O1 z0)}|dl|$uo zM#fWfKgn*ryNqazM?GY=BCtk-o%S5yy$aBWAz&g8P$h-l%Br$O4We}36-<3dq zH)YlFsR&*{lq(e#%X5l?SZ5}HTtPhROwBnfe!Xp#W52Iq=;;&oS15&iBj{}5tEh*? zgQ*V>B)R~&J_%F3U&5yi^OPShoKW!I9|c?JM`o<)pES&e^uX*22c87zYdTbe5zTi5 z!TF?$n}Si8_AQ9P%**1glH2~k1Eru)?;l@2?l8s8L#NM;MubnNBX@_f=u$ACyTQDg zJn2(Kk3lx9GE)n!lv9SFAhGaVc1p62pa9I617_I_i>}(TIcI)8_wDNSGOQSu(+3M3 zL0>@D-?9FXeDffIudz=cD?kd${7~)c>4XG*Kd%|j5%F+mnIPy5N04ezpSq%v!nV!; zazED<;B^F%LO#bji>#)Jn??#O7G{%O>D?JTP0L_Z3R^)^xuSGz9UUaJL#r9G?&8kGnjoQOIuld}=^< z;z8r%Fk(gt#7Ypf?@hzj6`j!0nD*QncBNPHTXN5bJ0kH{1XUctd_txXvSndS_t-P9 zT7?3AK^}Pdaet)iOT;>#BAOw<)K$n}_FXCs;g-2I3`V&u$y#TFrwcQSEPxp=o7Kp* zp7pn1{|KD;wE-~o{0b1Zg68cl-u7kknxkqkXh%V5(ADurvg54MKzQSiZM&G3fZ~73mWd*4?ExL25e%cb!OMa{YKEE z2TL4!qHw>iKg`hz;}1*|)z!Z-b{l9)fPFbIx?srOACjBPeyz>!k=}-pfH`MIgx1~% zW^W$}Of|&y0T;}?z9A zHl<QOsp#fBO;zb5^;Ft48U;&eQ|y;dwwA(BYwecpeb6dbZ_ml z=}|MflBg7AjIWSamIF4-OpQQ$RzrbmIC1Vg8rB(rMUjE~6$;gf{rRXz<^gmrT`X?E zv1gRQC%!olDu)&6di3(A_llF!Ud_yA zCS|A6C|!5U!tskiQIwl&{)O`+O`FF52_t+dFKh2m4Mtr$R3qntBSxGrhqWVU;b)-; zbaCtJqZ*hzNoxx3ly47$kuysGg^6UJq>~s{J=FqB|IiE_Ev7x`qcu(E01lMy*Ggz` z;=m~b(?OQJh@)f9uUFiQTDjH8BFd>ajsGumprxvHmQW2OJ}X58W^O!)sRlDXTMqVF ze}A5E&O!lCC$^^Bsz=A+gv+X7+6BZHiu4|k{nFWzhGmbnz{>e8kW6Bxqez1jeD^H5 zU!OtYS!a4Q&0lt*G<^Q%rDIe2;s&N`FGSg8TCF0O*wFI7S5z+U+xNlA8)X}&l9+(PI`C!~5Dt#uti(fzXHeN=-E z&W&R8n|7xzzjw<7>1kX_fPP@g8`F$PYyl~_nwL%cO*+@G%aXpe&aUGj0$XR9F4k4{ z%Nv5`W6!LBldl*E1CJ@{ReGT+W(vdRg&nZq!A3IGmjotx&)&1i;LW*chn{4)nAh6+ zgkkV}ILZP&kxs+Ow=5ka-GNETED$hXCj>JD5M3}+@hahJV8#M4d*XdXV+jtOhnvY@ z(TPD5;&A2(*! zy_xgj*`RpTz~3W(zYY?Sw&;CxmJKixkuBtL^jG7}3}vZkar_}a=bSY@?lRc}yyAgjQ=o6PCNXK)Yi;J@QkL(~J zt;w#g<9@Pg(k>8)v}L0`=nJGCjrUX~jv)1mmx3x%6d@(KPm*4C1at994T`8b=savdgD4&{L-?o@ zOX0MCA53_19Kx3F)-_l%h(o->LtT91c~I-&ka)B_w5-uXi_R(#6D=y^mQ4=Y}KgYp9AoVoE3 zoN8zvyOs@-ZGl@gvIsswR{4%Squd5|m|~_eyz^2UEGLU2dp0LrDv+l{fINO~DV%h9 z6%3hJ3}O449nEQ2^|w}7@~0L^r?ND}pUCxUD0kKa#Eu~Unc)PajW5+N9sL|Hh4AI1 z^J~6+1F7I7xpmHZ@Brb?YPf<#7SmIRqN9Z+vl_g*yiO4f=92yq_}ni?!RR@qp*wv| zANIg=^}AsenKy3RmvX6)1qtbCjoW(QombnTrwhYiGBU(U!lO9W+kT_TqE8W-Zrr*& zv(o5e7r>e(^|u#q&N&k#e7;fgd^-l6c-QkAH~yFjB`%pH~K9O7o5+EPQA`JpVs?pk-&$e*4a= zf_Fr+=8|`;>4Nnyv_h;H!Qk<6`yGz3#42ycTiwvIE9Gkinrcw-{!3LbTW%pS5M+vT z*x;^xe{I-yFY{m`E)vaX{A9v!hBG5Qmf2k;TM?O1)|u+|08*-fKmt%sKAA2Gd2;bq ze;PHbAA}`c2hy;IH4?3GXfG%)A>Ng2dto zh8-XG?ThWzgQq8-YRDw>fJy!u(~O_OOU0dsPMhXeNpGOyF{2W`WRV%<&NW96@3pqDA3Y!uJ-o!{UbfjYG*b&2E$zFnTMH>dj7n0EV*^<0^u?o0r#+v>J<5MLC({Yq& zm`z3&C91(lBDBC5xQk$!zx0Zr?2{zsfD%Bg`RYBJdSL1A_rtrdchKOZa>#1UI4w3+ zBG!2wSulC~)ee~TMY2ly)oLg%FMwaWmC<-DH&6Ms8_dZ-ZspVUvpy=RUj?21R7^lu zU{u=!cpxZN!lxRVj-caP3Wb{U)NuqkjfnsQZ+Y9F(w`&@KzBB!VEN7y-VnY$BC`bvL$buiv9D6q4=UBNn2({!FvM2;Y)z5ylo zUt-3)PbWYB=}*oCbPt&4QRO=TFAr)l286v|e)D|3MG@^R|7k?u9n^WcSY z`M@td1%aoOVO#(VKvP}w&S`5)NiRCfTPo-|f>>^|nE8-2An=?s>!&+k5DTkM0ld=P zmWDrkWgEPB`yL^f=_)vmpf^z_9`TCF%)@`Ux*Hz-_6~UMH;sVPV)GMJsA)Q#eB8qy zj8pEMw!73HP64_CU?Mim37&!}D{I@oWAtDYcAV z{pk*@d0TdbdvPe0z_9zB1ZYo!=)C9b1m#6aH3a?|@pZ?xRwSqR<0wFzC_RJlqBui0 zX2DF+9lI1AL1sRgE(&p&5h&aFi1`2uz>0YHZZ%BgUcEzcNUqk5oQZ4-X@kgf=F(i4YiTVFpO#N!WL^;Hot1<0d&v)#^Km7 zMxtD9gRQb?noeddJ)%f8D5pZ{0U&Pr%uEo1*Ltl4nb&emTP~J0<8^=K=uDdr^zcomD3bR1~tl0mTzhQIU0|#l~Ey z2he5&9Z!lHY!^&fW(BLMyw4pdHzd_C8s~4bfE7Zhh)@i-JJoU3x zaNJpyu;$4oSn)_>W?tAR479-2Q*tdX_}vAq(9?;jdUDpeKtrc2?0XJqox$z=>T55h8oprJtOk~X*;ga7 zXKO6S@Y!6L2he01a;kyYy}?_sPn6zs_7#czDUdiH!#abYz8sh>AX~3Ho_NI|nDW{F zP+Y0^b@jkwis7vP9tOvqTM4h-y9f4dN;nE3k@l*Bz~4eV>n!UyK{ktV-9{*q*U@VS z)da~(_5vqc*Hm{Z&(k#!J`PiNh!iT34RtaqLLpo@tHF%VhdcVj36RGUhp+BGhC)eY zfPE=lRa@^jfBCm#h^20W#SiX-1J1-+ML%a9vTO zsmu`+Z2Flml^%)6pIPqo`BLr~zd25FkLD40?og+DWN|hdt*pApsD@SCn3K!kf?te+ zbN**|L11=EwAg@2#8O}S@EH5+Z4A9BbSD>ytb0zV_#QU9}{qOi>Q)TWV zZ=sFSj?v`iT^3sgW>BOW4DMW@@QShCR;wHyhf}T|1mjMtfLL+wd|h2OC<>(mBCzj0 z2vxk4LZSV0mJ#vexlNAfdi2HVbQB#@9_9JMqrN^!6(8tsu{IC2Ul?})jLnh6UPqX@ zlq;2lyPY&oASZ90HhCW|OEZfbPrsxZYA+oK@v`3ECLnC<>;Z&Q)63h08IFN_>{?Kv z=n$gggn5ww0}M*!E|cVp#87lB`T4GOode#AFL`0E8Y-Yc+VLvWbZ%B;eS~`K zIh8Q$D+6KRgkm_jQW!vx_n*AT96>gi5x)`?#z5(^PT+C`5i1>AcwiRgXN^YWUafbJ z?7i>ufF{HBSjXcQeejyq8U=6!DeEi~{)4sX#ei|eaQcnIVCd9-(rLIuS-g%QZH@FD zLGE;iYp2w3+e>FV0w)tYScPghDXlv}<8mPmpb-gFcY@$gQD#tGTvpuE-dQD^hSR1R%wA=P^Z6XXn#mx=E<&aQyDR}UuBa_TFJg@G9}t#goaFmMi3^iU1HU!q?lP5Y%IJMW`T zfkv2_#`QV|g8tC8rHK6Owx1eqPRDQz#o3v?m1xg7BThWGnoOE#i2)~FRRfdBa&^2s zoQ08mH717L8@gc81N&h6nlAe@Vyjx~sD`(mJ3zuZq4wfxm`oN?iY1FOxKQh?3}#vT z^Jg_=M-~SbrhO7yXOLQFAK%=1pQ#GnDqEYkEV_4(y@cJ}YBG-zKCm+h3x2T&Ha_19b>ABdBWn8z`FdDj zcI$!Ygqb)2cV>xEGPBHj5&@D++9D*WEpItWVIpvU3R;>>KCpqfSr z%(>_+x`q(|9rx+}p@O-yIR$UOZ~&J4W*_u)n0BXOfjO@ZiQK!X8=kyoJB*pr&!!>P z+1f~zD;6NUQnADl^u$pCKA_l-48ed=QTWug17O^o61~0neAtv5J0$7(461?nY5et- zXaCxOPMJng3~({~0c8{sDa_jfKv{fVZ_SjF(6)rNk6L)O6;?jh2)j3SXAi7Zu>#rr zX$JQUDUu7?SGjA}E$|$cvA=7ls_UFxNkPPL6BXGhOiKG3cN_!K= z!bRc;O0Bah)nG9NWOOD=EDoIkw2_QOu#skaLDK!4feU6?K6f2?KxbF~!jS#%b;H7Y z_QD6tJ8WS4H)!FD(}{EUmuO4Fl7|~%!#`VL-ggJl`@|KfG7VUtH9|Zvv#m3aH(SSI zOgXa@PQ9`U`VWm3wnM7IbGGB%&sVWrUgzdaNk)qzNqb8Jfh*6m2XtxjECP$@as~zVy&`~tI)j~&M&~OOOXT#0CANXi0NP9? z(~)>2N$n=7V4cC2Ma2>H6rjz;_>xMPu>S8Y@aA6|?Ja2S!Q627Gd=6fRv8rxV5tVg zYEC-497fD2hE-3s!s@>tfJBF>uya0DlKtLi z0CKYnu9HPwsc}iqKokN#cmrESO^jIT0Wj%PW%hAv+g5hvcQ+DpYLv0cQDU^_T~Q6w z&Mk-Xf#FSkT7JdOP0}L+vs6iQlxLPA#bPQAX1Dd*ML96?6o6zFfKN4)t+OGZB8p-? zxYxr^f~g z;*=LHMsV!hGMipl({W+ThF3aZ+v)`9ZnEgs(GeHb&~gMJ|E#Pp&popo@s84-L@d#f z?@d8g1Qn@xAE?QWYWbK*b!crC{dME1Zq*r91LS zzy1-Jb7_A#{>(CHc&HIJzT5#R!e>h=4LIYw1K_y2GAOPH|E;ZUYr0{<@0wu8`kw3_ zcmgmBq8-8{8=d78&_#O_(3P?e>d08=%BXeOl9{>J*eu59)G1q8S01f=ie;;uzm0%S zBcmFUYC{n9QpyKM;rt)f5O62py*E0^oN|9C>KAU8vfer0w>1Sz9&dqlFLr>Qp87_Q z705#pTDKq_?0LD<=yVhARnLGn!(R!;%a8^$&)d?7l7Va9tep+7u*Fe49LLX7m3 z^on(MJwSADKyAHgxa-{>c;Od~uxnF~bDtVFCtu$7S>6D%8q8p9Y=i6pLU}-&IK35t z$}|gbxHA&xV@%WarO*w8Jm6t#hJ=^=d^&=tpMBj*%{vKCevI(se|11Ifdvj-FzcMl z9fnb4V$Hz$4J8~4osMjU2=9b$#)I{MSwWPkMu5kuKsCaau(>nE)B8Y@-56H?Z!0W* z`~b8!n)HE6s#L>@H)PhCj>puMm}&rb)*fxi{dP8*iKafpIAZaT2)|Ny;lcpvoGn{W z{=tSRJnNi`L(Dv4e<3_DXU^YpsnqLYoizLY@-BG!!6w+hHEA!k=e9L-sg)Pm^Wcrp z-V`!Nkli8NWpI|!Q(&T_(XRFsLMY-C0YKeZ2##Ryit0!Z9LxYAgU?r( zHSD+VPeIwhkXQML@;l#7z)~^|_x5X@_I2)UJFKIiw@3j+apxB~f~-9L>bZbVM2*C* z+(n)=U;Dy@1nH+cxkY1MnF0WD^Y|sRi@h0e%=I=LE8Hy(cUJ0<%y_;huRXdjit1`k z!=J9&0UKXxx2wdDVCnQDAU)EI)ic@#kg{6jIr69>%MD@rITp=h0h@?YLVY~GcI|Gjw+ z3^}d{&b($2S;~%6A10_scRN|G{#QG^_HeU3w`@0o&*EWMz4ZNxtTTeb=bTmViQVcL z;nk#F^0(mK!5_hTVzNI^6`*LHeRXjfh?NwDz)TQV1vSZhH7(D>t|usouXHz>z_0cIrWe+FHWh9k%ri~@_l{jHM&-h3u= zPWLHa?+-ISFaB(*<)b9L@?bN(yQtHiUsm!Xbgi@WD-?!xW~S3Tm&YHA@LG3>cf<2k z&t`1In@J^At~^TnF39GbMb^1Dd`53`daV<Q4L}OTc~!!nhH{4elm9_~rYW zVCCQ1;Iu2NVe(m}o;T`R_oVEjj$ePIg;;11T11cTOzSM_{aE4EP*v*;TovWi79Bu_ zvDzKtJ!2(V_K{hf+(vG&Dz6>lDJxdSEmEqXP^6CVo{wm{kT(OLD^H|gnEerR0`vRQ zk)Cs4cMAS-+g`E|QUarEi|se?8b3@Di`)TC+f$jD3&blA(N~mp7F$KNS3|vE*0Rod zs^L?NQU!kyZ5_Vd9pnLY!^RC=b+r>$lZRXD6r9cLt<765rI7j~?hPqVz#e zs?rtN7Py|Yq;l&EmaQwg@_TIBEI{MU(Y$rm+4)F7-MEe*Go|{=N4ylIlW)9vC3Mxh zl6gvf5-zen@L6TQp`th=BeMV|Hz#5xFG$!bBTpQihv6^y$`nzJ(0e4KBHkC=x%w>- zBX=4F>zp5vbf^Y!GlBY?v(ut->&%x-v!I3U84gRRZqftk6=WH+-L020)nFt+oJ5!( z8KNLXF2IInom7@jW;NyNWPrs7vyAfOrH3S2?GK~?U22$? z*Z6@-nUo_a9cohj0>A4Ir&|B2RVO4#nG2ak zNNQknZcaJA^iDoKyJxlWC%!!xF8$qT7+G6FRVC8H({-5oBStP-$_GW^jPDJCE1wtx z{i<}ot`@A2p&U-xK%%h71v4X@x?jlXaheSW8Bo_uDuK`aViatCr4?2@)&z}Pd&CBZDnt;+%16@2h&7&a zZUvltdA0pXRA}NttBAkn<9wUm(PNz0F_7Ct3_NesTa?H;d*fLp=@>JVM*m=iGoM0b zYRICN=$~2Hx4V4ZkPg7+bJ9w%QV`_Iv1u5HBsehK5-&HP?z$TIwG0GG}Z03RN6>ODZBT`^!}@{j-$;crsh8qcE6Xy`h|Crbj+6)u57at#kf| zXUw(#ZI_q zW0!qgL^OnLUai@W@u!v9=cl~&ObaaeeG_yvrMUgjzleg#gze<>%HgE1R+HJ3aKEnJ zvA#RAwHL})o;`ot5_a2qnS$3kdqvEf<$}2uh}-c4IfB}X?ZoloS3yUGOf?wYTf6Rl za#P=N!u+{qPC%v#ZAXw?o_50!n0ZMxge@J-Y1>+_vo=8NG(DQQ&nU6BogFqg4rg9J z7;26S_Ufic8n-3kuQz;TFJrq!xQOBrBpF>8oYlvhrOq#+GC6U6@(#e=%1hJ%)G1A_ z68!M3uaEd9&q5pgx{!6Q?6af9V74}v+`O;@p8nBp8qE1$GOMTn zc5a+FJRd6rGb2v7iGqOHqS_JTA3QKiOM9elYjJB^>r#Z#3=a=OGV72FN6vh_s&)1Z zy8u#W9|MS8fbbC#E5Dy58S1hUQ>%Zo}sapTL? z2Y5-OrQJJo-SuQ({-rmUI(O#PBAQKL4UHpa_Oo}+A38?lx7lClD7jv@7K*R&HllLG|4NFY8{k_ZE`0(#cggcQ%3Z2AdDe?uv>^4VZXV1)T8J0Z=tET;TPFSoIicAhQFq^tmBOBy>FPUwvN(V;aNg>($M!p4k8win?C4)Hy&$& zwa>M>&p`tDJ z*FQoU^s-!7sMguz6anZAz1Hz>V+o+=d~Kl3f%V%e9O-OH!`gqe+Fx{s7>Xz4rUW6ppIg?gV?wPgzEK=Iv$ss>w}q;l`?STv$wuJ^m&!^%CCqu zmG6JGs2Ee z#ZI!)x0tLvZe7-y+bfUxFMEu=fUntXboKc_v>kQVubtpOSwuZ59sAkZv z;jUThpCg&h^M}hELGFj9NUVbG4qOL(@^0OFpI1+TiA|~HGe(*v;A$09pp_pYk#@z ztGnREpYMg1ok{RmMUDH-$1_00z9%&>GlH{mVyeO0%1cOVbm&H5*10il7-!$HVAv|1 zOxm^7*WqaY*7bLihWH+2TUDH2{?E*F`mG@qx%^P(r5~0zJ6AUqKI^c4VgPzMs54;#!rN z4Mw$k^3xO7j)^O;siw3%K#03=Qw2PgtC(}JYdnTk`k&Y;fWxq$9HszETk2bnPM*4IaF22BYB zXiM&yx#8<3G9L-Dh~k}drqcv+1Vz>v7^4K~_><4BfVtls2$jPfer-8rq!%7I~=&Zjp+y)Zr#~!6&TERdJ&j?))_!=&bctEL8!BN4I2LnV0MM`z$~`T3_Zvbdh1_puysWzj6JCzR17JCBmwjGwOz3L zorG`$NnJ2|by5Jc&oT=kfn^Ekt>3R`l{wnA3FpsUoL5CWp_JhcZ8MqX~61gS$}X=;Fk4=}`Wj>0HeBF_2G3e?0WI zb#{ga`hL}@25(kNs2Mg|!APBVTf^u@5KszQdHDY7sjJDzeJ9YW2|G3KMnzy2<@0Cp zmM7T)*ZzU*m-yLWrWI$865>E!9#1$%R8~DOi-iYfu11Kb1E&m>D?{;FQMH@DECkG! z6a;AdtCk{kKSpSwqZHq2^5!<3e6(PR2E2zWl6+l0$B1j0T|e16${ZtKIl#GJ0aln` z=A_|?{N*DV)nMiEha(6AXHwqEt|Z(G1xk>PM9E#VH_RYJekm!gm{)B0bIu@j1OX%u zP!rH5;&XULU`Bsc?(8y$+_+pmXVe$#;ELtVIp@pt)nkV-EWc1S7F0ka~f^6JhA=ZXrL zec=LKcst4lUEU@-+!h9yEeY-IouYE%PuRpyfPbe6>K;{Y7)gdZIn@yIbR zDn>orSbqV?;|R)22lY0!ze3?e@d^~s9?Xi)TIT>@w$yuObjR?YK}ZrBps#M2+zyeF zACQ~c=ngN0YKSb42(TjSjJSFDBI1iIYb)wB%xO9W!R{Z*R0Fu@Z!=03ga819vIVZU z7K}HWX8QkKwF)I6B+>6u61n@t_0!TRw1UhU*dP7rtq963qKIl_;u(R!ry8C(4PAsU z{isq67jG8EgNSa(0L{phFONaSkzWtBX*yjfk=2vdND6=QmL;QBK!_6h3&Ynfo4O7m z{9W?13nR^;SC~w`JEaKBSeS>cgv@fY3JZF_`Z_9r*_gO0`V3EEf2waQKxL@BDq6*_v z4VkFTIeTkmlMlp+bBm63#@3?SZ#VC2{WbK0=#3K^a?kk9@t&&0AIMzwCCWoQQnW@^ zBI*;PY#Bg@+m9tQszI0Isms0%_4{SVJNfOEL?1Jd4)K;FXs~;i$Pw&qs)6n1F`tUH zN4{RaYIrB~g7n%qO4n|gkm%QKewWQ47?8Wd^=`_Box4>*kuWoAb-SyL&4V?Za`MD9h+z?7!VCD_+ zK_v$?*3ilt;u#SxVVpLL#d)}$gL}^ms-Ynws=>9+l9c=u8rB)Zx->E_ykpVmX6Qu; zjuZ{K=fuq;QfBI3Cg91yQUQsYQ1*GgFTf?v(PipX!_J5FIu`b1r#lW+kA!OEX%bze z1W2l1p@^u46Tvq=dMkn?^_C=tPv05f{bpV1lWm8tT{dAy4@zG~8fY`su!uMOXG8?% zOgtZCh?$<7GINDA96`!D%O0={?5vdD>crm&B2aS#ol0cwK?m!A*&dg7M2zU?`U1?B z^w~aIH!h#D)!!God!am*#ZVxHC7q z;Jgp-G#z(%0O71gKAW0V&g4Pwp_KXgTNVu60DUBVx-s1M38>R%&)EnWZ|4A~MG=*U zUU!TF1+XN0nwYSI_yV!N3|}5E*G8a&1-}stx*~{q8X1K+g0dU2wS7CCGA_Pt@u-#1 zhoaNOp~>yD*Nuxp^lzjG&)}tzze(o{^v5yyh6vDni!Od~-(7~g9uIspc0OVROFJ*i z@%6;{3k2xJ?Fj60-iak5=hnY5bQ|=s9F(m)Z(1?!eFKU6#eVK%o8TnI7>dAHh9zEgJLxYGamg8F@kXmPsWoAy4B9_Sz zfH_~DSP!r#htN||WPIU{MMK_)gCqxabLIMFC$)C&E%^p%%DXYb-AwCDftd$B;7)A_ zZHta2%%x`|&jlhz9#1h6v;br*ff>#0LVH6+<3qb8ZlNRa4zItJs*>l=pehl41( zkF!_A+PtQuZR3?j#P|tW=dThE*KBL#jZ(ADmgs(klA|X<&O-5~0eOYoBGS*u72IZ2vkjMeITXs|0FfO|zq_0iFkVEP`hwE2OT8(?)Y|?a3 z68L(~Jd<)bx(9$LM8(DNi)>bdQxj1f-Ej_gra?xF_yKdRp2rcS)5sh_FNf#Q9glSuKa$KM3cGVN3q<_((BRD-B=i@Z z#qg`UUL4s3hp-&-fX>NJPu?^Kr{O;GEKk7h$t0hNV>^N_APMf6+P+Ky%v4=2u!)Xc zV_WA!9YKc|JLy>|IcK3{RPX>AW4sI*vFl=WHOuSk5pM^BLq-l8KwDBjX+u%GJn|I- z(5<9phw4%dzO_<02vlYjvuPBl1|v8dC+5ZS_ceS42C~jJceZYO2cdhn?!<{l|IjeD z8x9jWtN@*p+fUvw9?aM^2Evz+#vhyuXIp20`~%eFl6HAWWzN|$+2g(3Jya#Yyq8< z3oo1>nYnZNOtR$nBl6hKMfOoaIgxW`EC6!`0yLOuL7wti$2<4FBj_qri)xT*I0OqJ z0=M4w>ZsS@Fqgv~&^fVAyKOGoat2`Y8|0y#Lx$gqT%6XlRo0LN-7H4;{B5ot`8a@Z z&)?46AaVAR$S|IPRO*qD-J@SR6qc>SkRt}rIUx@U-7)9g6HEi$V1RKhHq1)yk#f9g zIwP2Mmd-hQgZVn-<8o=$9YHD8ur?J3^I2rzdm<=JsKw#q@TtfV2WYq4cH;Xr0I5sJ z)ZP_j(PT0)ba^5wcLXg_u+9=NQ*k=H+1|ua1ZJNj$fFtMOe(|V} z;0To?8qhhZKXG$Kk%3Po5C41ul=BFXh7r&jtT|`kPz_61+*p}vcpO3bho*&DXZvQz zOeEe5$ao%^_*o;8e(^}N#w__*0NN#}zV@A=v0|f+fcwkjn*4>*9M&+(L5-eK;92Kf zUhj#wzJ&|stOfwT`BgV4ca?#1JD(WVCN3|UX6i{WiWV(4-rd#EaQb06V-Z9?Zh&?R zx?|RR6}SkWoW^i2p(SS#K#wKEauGtvZ@j&tF-^w^mVjAx&Nx#>u)0g%S?=) zjz&uwZf+RVp?hHEks=>wKzro&sUK7&OB2V&AXb}3=~Ky2J&D*|3*Z&>2iv{p2(a8BsTnP@o{Z%RE`3gCH3|72K?ij#Zc5f3K@~<#M;du zXqrmkG#z21inLmsfShy2qj;K54b1ioOWFjSATu=wFqmtw32VvB&1zEV#;$m3XUW`g zZHL3V6@4v70j(j{yu(jF*<4{J8i$jG$)To+#}i5<&vqNt~qV zgzrn!opjP^((n;TLz+090TM7_5<_CZ7!P21l5I&ydKxUf`Q3N#J-b$_Y7Moj_P$Tg znq|B0ckbC|@7hzj7|qA#4%iRtN|o3}+V@FMRlye(@YGRv%qm zU3ml-D<}6}cKCtAN1yk=fvc}O4da>3LjV`v@%qe! zbM4-1zUb8lR#sqd3>Ws{I2^-8eATdk*9QzQz#%{eDPn?cNXzMa2zeR#w|o#K56b$q zACz^-dD3^T4VUk}^tl}f-oLt_-x*g{&z?JX^6Z1}`TcXJ?)-x@51qU3{2lLn=Qeyk zP15H$hO% z+U2>2Ub=DF)z2GN!V43CUpNf3kpP@97L#}&U?2l1po3%SpiEsp1A}#_>k60!=)7$( z5F3N*C!YYIT_+y~dAW{lB)kVA+;?zwCK;X}W>e(2zR=O6v_@%Oy*C-43BAN|os zQnm=6gXwb-)cEp0`%kYpxc|tPFLyR?U98}(i;cCL6G*NFjOz)H3AF^nkbpd7Knth` z26JL+266f^3>CZ;)Pu0IJfWqhs>>z;cK(64=+W@W7(0zbtnGW<|+}yl# zbMx$n_Z&L(o}EWe-TsLm`=Ptv`ObHa@Hvz|XFz@Ht#4mBv2p6A>t6kquZ$sn*)ZU% z6L^n?1+6o1GZV+mfP_QD4Co;!ut7kb05w#dTmY<~4h%|OX0U5s6wT}<2Wmq=tWrgp z*t9kpi1R0)1F?J~wd-;s%nXeW(az3$3F-C^{_M~G^6`&<=)>=R=Q}syb0B?ogZeFR z8IIlyH(m9zZ+P>{#`$JQZqhGMAlqBH=&0^&db=)fF05a&D~>&icp6`W%Fb@IZ6&3jkZ*H6YV z{^~FM*bn_1*xC8W?f?9rf7W_bJ}W_e=oMdo=*k;k^V)+~zw{d*UihN0wzw`V;3`B) zc#8$d`5P_*>afslzyKXkz{=hYW9wls;1+-`hDKrxCQY1&L>fW*Cdj8y_Rm00*PlPR zVg?i@MxcCI=(gF%gL;=#Af7VB<@mtP&hq}n`r4i6&Yb+^U;D`)`}Yal55Q+x`m6)> zE8g~VHx7%P|0(&1ziF|+JqZ=7SxyXtYGVd;)yo3r!2!I0I)h&g!_df%LD*RVU07Fu zJS+_4sRboCtG5Ha>krw`L@*W~a)S_XDzFvQ0jtbVP?zu2N|C9#BvgV%T}7OmsN{-d zYjZLKxYj;6hMQQ84B{E zHc}%=w^8g<`Q&8}?g?|d?V5UB?GrJsO_Y#)vh_F;ZJvDK_%9#7`~Dvcr%rwFH$L=R zr=RQo@8>kAU-7noduaRQ>DN-+`tMc`9sR}>x!YG+wlZ`6Hl{8>Puo>H578L97={ZF zSpr2mU~r&rbo9`;>~uMUdMIL8GzV{E_HB$W72d}yQSO5B#fAKx=98Ci}C(~Poo8R>yWxS9!Z2vnK3$OqNMBpwX@E+En6!pOk;8EemYI#f?*fDdX64(9#P?WHlG zviDFMg7~#_p4@g6)OmS=i>YtCZT%&;eD%#M`>(l`hK;Wp7JI)oA?64a z7n);eW#9ZkmK!EBrW9mugU0tbl{GB_PeH^5i_wa5*VB7=E3vUWDPk-uN`WO9?1jBC$EBn3#!(tzV)huF5%?6bi3k7bK7{P;Fw<+Kk zB-)y49@WOfqSMg9)}d(XAkw6;HU`;mC?y+QFeZC87KjF1X6pQ#-0xOL>+eQiJ8y>= zi-Ou#V{202>aqv3{??BglML*#{p{xX^Y7cC`0pP4*vJ0k{lD_AJD&@IoaY3nU-gau z>{ZEf`CB+_yey&chD539%2(27H5+1-K#7f(_N?4R2ZIN7@kgh|5WsmwvezOVPQW=} zFlG+s^{AeY!RhHxr3n=ktuDR%O$=Pt%1Db6&tX6pwpRH-os59;n^=)&9Zd~m7a*fX z6`kXwP;>^X(RlHJC|i?bZV&7cD`Th9D0!AZ4{hyie>fHUKU|zV^0R;GYhU=RmLv;! zR;PD_7kv4duiF{N@5Yt&*KzGR4&(loYr9xjWMQ@(R4Ys@mX&F1^dDm83(VS3Ty7bS z{XnC3T!tU(fuWAhvuy%smK&i06_lkZcPLd;dyOn$9;jjGboo@Zu)6x7GIhgFWdHK9 zDTfzR9*lDS0%WQ{&d13{q*Ac>##0_DBc#$kSFW$DUYWLEci+SBd(p9D$A0jRJMMVa zdPttFh9Vw%@f&ZvEYHV8c!f!GTOOR}Tj{7ao~G z*ymxU)sc2X%glLsF*u2#Y>g!^b}qf*vmQc`7%DGRVyr+l4$Ft?I%Vv#-tu9SUs>Ps z&MjBpHwIe=&Ui%osON;+HBN&&U_@|aZSUR}zv9i`d`leS-Jd#e;1Rg%u4mn#sb`=3 zIC^yBWiNUAw}kcm|6|h4HzwVD5QbFcVTC0}(Bu)bRiZpTCEQqpL6bX|}!$m@nGO_|%LEU&VsP|K|)>gTq#$xZa z=#4~lMj|iP4Cbqr??y|5HxixvNO_mku3z$JXM1P+?#&BZKl;Oe<yg3XjKR{viisCd5tA(BG_gab>FF?mKqYHbZgtkK%YlP6e9W`oL zwo51+EgT*S6Dv>`&QL5&ETC4G-rzhSb+q0fF1?|EP{F&H`CchNrH0A9_oI48@^+dS zi=vuJDzb>k>FJs{=#tb&`4dnVtxO%Lk->{4AY(xG9|ikP$&A3Gat=HAhYtKvh={P2B?oVfKoxRJa!1k1ifIv7J!>(Z-EkqYL{Nc5mK&#k=|Yd@o)K6t~I9lrVKYrb`5 zp27BCOF171nmIU`J^2M93hH5G=@2 zBZ&p@L)FnjltGvth(L_q;NMOr z)pcgAg`t93Ke<|mg#o&Zh;x9&$+zDoj6AT*uSOE<;C~&T(Tsog{%5TIW*;(dzp=RQ z8Yac5*MqlX1MceOU{45pIdE!V&Vm|Sxq@AUl29U#?XXrqM!N!59!Wp}JPKfC8$dNZ z(Fu4L%sH^OZ||3`9XPOWad6*n-SwXLoP}o~JtLsL@z`6gzUuj}`kt`5|IZ|_9xfyB zad3bZ?*^*mC@@H#)&UEsOURiF$U!B>P$dO=@D3fo7a}>b$7AS+m3k&-mL5EV5A8T= z1-}A%P(Y^d6`F!p!M*|=Gb^B>UC#MeEm$+p&?Ym$163b3pxG#8BR{Zp;n^c&)G~Ax z$_R6bjnHHbt*^iM>YH!5=9X9A`o8!5?9ZNpr#S_9n$xk{{)c@Bue$Q>$@l!H6F{$K zXdxJFYVo2Jxjt|jI4A=0q%~+x3$AbJF+qZlGfLQ4hkwx%U$FIEa5IoK4X$AGmUiOC%uf*-YkYMuX zQ-L3DJ3w-mq^R}Vg<1<2P`fKq1vKdHb<{(17(WsMYnSW8%hmwEUy6UCTceDUAF#5X zhOtw>GBM21E$4m*1T;k%b>0tZ8Ua-RVWVgDR>*Fbpm9D>@4O~<|K;oC##b8@)t#l~Mt zr#%8<^fg`%)72_Ln7yfZB^IW+RqxdSOTgZZ0ov%IMGK+P+xif#4KI~PuEL-?+Icu^ z2Z^Mj@| zpXzMFsD8}&-v@v8ryqr*4CY~Sm@Hp z50xH1*b)YgwFQ+PLBCueMI;Amln`3?9ztdB;7-%bb?1z}(9PdrESOQ}q^E?b4P?_AU ze!V2s(~{Sw`w}h9dCiqa>icFr%_e>z=hiEyrl!wn*jwBJjf;;eqob7%$@QvR!S(I7 zjqiJwpvm1VQ3dv{Y))NUkw?!^$6bqy5@+s7P9q)NH1zIl4mMbE@5aFc-}1%Z^bLO= zo&sWh(n0-#7rpwwNqY3{=?;!e+x+xr=R}6aXao(~Lc3kD4-UZCS>?(p)`cUnJq`xm z#sCcZyT7~&dR8U!L<~vAqZ)?P_@jqBtCFu^X$Tzra6VsXWs6-i`QlJ(7h2#6U~7?0 zufHa84h+;Yxr2c{psV?L95>&a8nJ#{H{X|&Vtr!;m{3wBi2xh>_rLWo{o=2F8$8MB zNd@)QSKoZa#@gQhK6TH>jB&KEVXBv5!oa@PxQ&yA1NCrR$k^06aOFCEtpOE@S3;>t zy$nm(Eb-})8VxO51^61W%oRxiS}fVJT!MN(jI9*>ad)CgaH zS5%K>_hW5D&*2|0Fn5vVFz`~fA#6R>2JOqiSR31#*Zam$hE84+m-NS8^R~C$2v1^q z(y0H|TW?+2v*+qJhsEljNZyJoK;vn+@a_tz!{Y|GZZZAM(~st{9#}>l7k@RF7X$s6 z4s12`WT2A;VxW%qK%FN#*z<)vYf`}K@em18Cxt}S)Z&k6n6?QuBR1ZQ-Q0L9GOnX# z7j79YxPrPGDlOOTa4~*{+I#IPJsQ;`=fbK;kXIMO5bN}15vEVj=(z0>=O66VXCW!( z8Ph2HMX$W#g)ce1vUA~g?!DuVC*>i7Ck513UG;)1S624_iItU=?@!fpv>JilUDpR$ zDtOHpG{cYqjxvT?U3vx7Lxg4^lRZ%D0xz9Q4}*8<>12;?=A~gWaibersuM$E6QF6_ zc-Xq-G-Nz$C_)9gtSjR>99H>5yC7A-=B3m{Fzw~}#S>n9GfB&60Ni~%usxvF#ixd( z8I)8S?pk7*FTL{E%U`l@?=`=9*YE!4Gw=k{6P6#x;MnSwmmT@)wZ-aRO&5O!uXWuf zI%$DT|62QNzYhFaK3i*FmqcQ1%&?Gs+B7VYG6gLiM!8G)xGQY5nDs3Q3UR{ zcl+r&*3Z~<%d?=ux!+=OSu*Rfy$CJe#{x7?4>Ol#_8H0Uw|#f_@4t1KtAJ0Qey$e3Txx5W9X$GXY%T?E` zh`Zezd4t)=K#Ry9eb;if`kD^PO2|A!`o#cp})x#}I_>|VVwtn$ZuSN*tbT{pScE(ylV_uj)tUUlfIYrpotefv8$;0dHB z1nPr(_r5l1&%ea(JE)i0`BUx6!GFUpzd6wq65VdJ%Q2`Sv^lauCv7HY!08d|jxf=v zv%v1b+p%}3{Xhq%x%=$Cn{D_QXu0T$*+hL56RSW||2h!P`m%Zz)ZbAP{MCAB$OHC; z_4T)1{?)gB%iDhRSJvTirpFEHqnBNFU9#K%!D1L*(Oy28AF@H$Y^4>1I2(QnHfzS7 z5_myZ5Ozm&Cj|?eTZtptdOfEr)xKjiPx;00*0dgWS2a?Idf?Zw-|h9%J6H?q)t|ByI|W4({b*+q|Y49 zn~#VU(29)GeG}I0({oivu%3?$lmK(zXh7h$$LG+Fs)0!74aVu}dT@8l<^WQxR3!<{ z9|WdHtyR?G8ey&xG^e$5mtrLBvuV-!cA;~PfD0(O(#8HX+8|P%n=XIJvG2I%?ca47 zJdX6ZKz;4C*S=^G;H}NdzJdFd2p3J*lqyZx0%sR>4dI+tWH<`JdA5~vIcBXT?Ml5e zO1&&Qo^Gq>(j|}7-2e@C40Olwd0k8PH0aKU*zicr(=d6zuO5OX$0s{xn4?p;&@Ho=r0rlz?d-nW|R8TL5CzPy`rng8PPyRUYe!-u={-5c|4MPeZbo@O>5PX0H%k9_^>;4@60 z5vY$HJ$mH8+TQO-0qpBQVSmP!(Y4_9xGk6adlZQ#?bC?N*1Pkx^kRcuw=Ua zm9PHmZ~gI~z6k&>N`5|lCZJwjS&M%x9r?|0QI_^p^qHnzfbP3KTZhwiJ}-4Ei5~l^ z`UW%sl*@|kW@F+ER(TPezm!^`GuQE0)pbd7<}va&%Q(%Bk9}M}UfN@M^1EaGi?xr7 zHtpPgBYfEyw!Y``ultkx;1bg%gZhRe`);NYzCKmT6{?1CmMvyb^*Ax!SkJZ&rj5G) zHK`@6JuSghPV91|$!h8#D2<@fWQy`!N zeGno{FR4A90NFgsctA#yd6 zw+-Ry12-Oh!^_|L*1d2E>5@SG{L9y#KLmPXYOGh5s_1E^u^wg$SECbVokMd&Ej(%` z=Xk;$A7^`8YWBe9Qf8yfhG}XxkQFNLz}Fa?YoDzws4oNZ6>IZ9<20{(#0i=*=-ITN zyvN^&Z>y77Hp0ZCLNf)YRx$eDE@7R|I+ss$Y#Zf1t?eN;wMp%r)p}Bd1Avzx24vaJ zaRS_zir}kndhP393zv{C3Do=c?0L};!k2+`Lf*Qy0YwPAn`;fuvCTWlh%Mm!e!DDl zy`$}d^#I+u{YnM~PSM{qO>Fi`%~>@uPC;##o?jZ|y6XsFaUY%w!@%6yS^i|ZTz0Eh zJzAlH-GkL%++;snL2jFrVU4Yp!=@;yHqcVS$RBVGlfg}0SwOvCyUZ5mmGdgF?FtqA z7;agtufO>%|LR{oriE$H8Td_Ed`y&A zyHOiq@4(z#kKK~f-qu6*O%R}I0oWegKxK`H(A9&nLzNg*?uqXKgtg1Mx?9K6eVJGl zHSLd@Gm*Qt{2d+0)3Nub!@mwrZ+!(!`;sPI6x2tKz=5sh_>BnR&0wP>wXK465l~NU z+bU04MwkbzU*~F-WHK5l6||d1)^&y`Ey%V{^vtM!x273JvP)Bf=0WQbNh{0ro^Gor zh_13q1w;F~iOhKADG}&2bgG&B`Uye-Ho1MeG~e5`VEQP)lL;l^07;{brEBPmu;WF@J(Oxo!@ySTqIo-)W
lR>clPSdPg5UE09B} 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
  • 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 Hu0mjfvWA$n literal 0 HcmV?d00001 From 0ae563e55f3c8d11d5604264245f0f118fae49d2 Mon Sep 17 00:00:00 2001 From: pedromcunha Date: Thu, 6 Jul 2023 17:01:31 -0400 Subject: [PATCH 02/12] Refactor homepage desktop --- components/home/ChainStats.tsx | 79 +++ components/home/CollectionTopSellingTable.tsx | 503 ++++++++++++++++++ hooks/index.ts | 1 + hooks/useChainStats.ts | 18 + hooks/useTopSellingCollections.ts | 64 +++ package.json | 2 +- pages/[chain]/index.tsx | 178 +++---- yarn.lock | 18 +- 8 files changed, 759 insertions(+), 104 deletions(-) create mode 100644 components/home/ChainStats.tsx create mode 100644 components/home/CollectionTopSellingTable.tsx create mode 100644 hooks/useChainStats.ts create mode 100644 hooks/useTopSellingCollections.ts diff --git a/components/home/ChainStats.tsx b/components/home/ChainStats.tsx new file mode 100644 index 000000000..835a32272 --- /dev/null +++ b/components/home/ChainStats.tsx @@ -0,0 +1,79 @@ +import { FC, useMemo } from 'react' +import { Flex, Text } from '../primitives' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { + faImage, + faShoppingCart, + faSprout, +} from '@fortawesome/free-solid-svg-icons' +import { useChainStats } from 'hooks' +import { formatNumber } from 'utils/numbers' + +export const ChainStats = () => { + const { data: statsData } = useChainStats() + const stats = statsData?.stats?.['7day'] + + const statsSections = useMemo(() => { + const sections = [ + { + title: '7d Mints', + stat: '-', + icon: faSprout, + }, + { + title: '7d Secondary Sales', + stat: '-', + icon: faShoppingCart, + }, + { + title: '7d New Collections', + stat: '-', + icon: faImage, + }, + ] + if (stats) { + sections[0].stat = `${ + stats.mintCount ? formatNumber(stats.mintCount) : 0 + }` + sections[1].stat = `${ + stats.saleCount ? formatNumber(stats.saleCount) : 0 + }` + sections[2].stat = `${ + stats.totalCount ? formatNumber(stats.totalCount) : 0 + }` + } + return sections + }, [stats]) + + return ( + + {statsSections.map((section, i) => ( + + + + + {section.title} + + {section.stat} + + + ))} + + ) +} diff --git a/components/home/CollectionTopSellingTable.tsx b/components/home/CollectionTopSellingTable.tsx new file mode 100644 index 000000000..2cfdca8f5 --- /dev/null +++ b/components/home/CollectionTopSellingTable.tsx @@ -0,0 +1,503 @@ +import { faMagnifyingGlass } from '@fortawesome/free-solid-svg-icons' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { useCollections } from '@reservoir0x/reservoir-kit-ui' +import { OpenSeaVerified } from 'components/common/OpenSeaVerified' +import { NAVBAR_HEIGHT } from 'components/navbar' +import { + Box, + Flex, + FormatCryptoCurrency, + HeaderRow, + TableCell, + TableRow, + Text, +} from 'components/primitives' +import Img from 'components/primitives/Img' +import { useMarketplaceChain } from 'hooks' +import useTopSellingCollections from 'hooks/useTopSellingCollections' +import Link from 'next/link' +import { FC, useMemo } from 'react' +import { useMediaQuery } from 'react-responsive' +import { formatNumber } from 'utils/numbers' +import optimizeImage from 'utils/optimizeImage' + +type FillType = 'any' | 'mint' | 'sale' + +type Props = { + topSellingCollections: NonNullable< + ReturnType['data'] + >['collections'] + collections: ReturnType['collections'] + loading?: boolean + fillType: FillType +} + +const fourTemplateColumns = '1.5fr 1fr 1fr 1.5fr' +const fiveTemplateColumns = '1.5fr 1fr 1fr 1.5fr' + +export const CollectionTopSellingTable: FC = ({ + topSellingCollections, + collections, + loading, + fillType, +}) => { + const isSmallDevice = useMediaQuery({ maxWidth: 900 }) + + if (loading) { + return null + } + + if ( + topSellingCollections?.length === 0 || + Object.entries(collections).length === 0 + ) { + return ( + + + + + No collections found + + ) + } + + return ( + + {isSmallDevice ? ( + + + Collection + + + Volume + + + ) : ( + + )} + + {topSellingCollections?.map((collection, i) => { + switch (fillType) { + case 'sale': + return ( + + ) + case 'mint': + return ( + + ) + case 'any': + default: + return ( + + ) + } + })} + + + ) +} + +const CollectionCell: FC<{ + topSellingCollection: NonNullable[0] + collection: NonNullable[0] + rank: number +}> = ({ collection, topSellingCollection, rank }) => { + const { routePrefix } = useMarketplaceChain() + const collectionImage = useMemo(() => { + return optimizeImage(topSellingCollection?.image as string, 250) + }, [topSellingCollection?.image]) + return ( + + + + + {rank} + + Collection Image + + + {topSellingCollection?.name} + + + + + + ) +} + +const RecentSalesCell: FC<{ + topSellingCollection: NonNullable[0] +}> = ({ topSellingCollection }) => { + const images = + useMemo( + () => + topSellingCollection?.recentSales?.reduce((images, sale) => { + if (sale?.token?.image && images.length < 5) { + images.push(optimizeImage(sale.token.image as string, 100)) + } + return images + }, [] as string[]), + [topSellingCollection] + ) || [] + + return ( + + + {images.map((image) => ( + Token Image + ))} + + + ) +} + +type CollectionTableRowProps = { + topSellingCollection: NonNullable< + NonNullable< + ReturnType['data'] + >['collections'] + >[0] + collection: ReturnType['collections'][0] + rank: number +} + +const AllSalesTableRow: FC = ({ + collection, + topSellingCollection, + rank, +}) => { + const mintData = collection?.mintStages?.find( + (stage) => stage.kind === 'public' + ) + const mintPrice = mintData?.price.amount?.native || 0 + const floorAsk = collection?.floorAsk?.price?.amount?.native || 0 + return ( + + + + {mintPrice < floorAsk ? ( + mintPrice === 0 ? ( + 'Free' + ) : ( + + ) + ) : ( + + )} + + + + {formatNumber(topSellingCollection.count)} + + + + + ) +} + +const SaleTableRow: FC = ({ + collection, + topSellingCollection, + rank, +}) => { + const { routePrefix } = useMarketplaceChain() + const isSmallDevice = useMediaQuery({ maxWidth: 900 }) + + const collectionImage = useMemo(() => { + return optimizeImage(topSellingCollection?.image as string, 250) + }, [topSellingCollection?.image]) + + if (isSmallDevice) { + return ( + + + + {rank} + + Collection Image + + + + {topSellingCollection?.name} + + + + + + Floor + + + + + + {/* + + {volumeKey !== 'allTime' && ( + + )} + */} + + + ) + } else { + return ( + + + + + + + + {formatNumber(topSellingCollection.count)} + + + + + ) + } +} + +const MintTableRow: FC = ({ + collection, + topSellingCollection, + rank, +}) => { + const mintData = collection?.mintStages?.find( + (stage) => stage.kind === 'public' + ) + const mintPrice = mintData?.price.amount?.native || 0 + return ( + + + + {mintData ? ( + mintPrice === 0 ? ( + 'Free' + ) : ( + + ) + ) : ( + '-' + )} + + + + {formatNumber(topSellingCollection.count)} + + + + + ) +} + +const anyHeadings = [ + 'Collection', + 'Floor Price (Including Mints)', + 'Sales', + 'Recent Sales', +] +const mintHeadings = ['Collection', 'Mint Price', 'Sales', 'Recent Sales'] +const saleHeadings = [ + 'Collection', + 'Volume', + 'Floor Price', + 'Sales', + 'Recent Sales', +] + +type CollectionTableHeadingProps = { + fillType: FillType +} + +const CollectionTableHeading: FC = ({ + fillType, +}) => { + let headings + let columns + + switch (fillType) { + case 'mint': + headings = mintHeadings + columns = fourTemplateColumns + break + case 'sale': + headings = saleHeadings + columns = fiveTemplateColumns + break + case 'any': + default: + headings = anyHeadings + columns = fourTemplateColumns + break + } + + return ( + + {headings.map((heading) => ( + + + {heading} + + + ))} + + ) +} diff --git a/hooks/index.ts b/hooks/index.ts index b64d99083..5a70417b4 100644 --- a/hooks/index.ts +++ b/hooks/index.ts @@ -4,3 +4,4 @@ export { default as useChainCurrency } from './useChainCurrency' export { default as useMarketplaceChain } from './useMarketplaceChain' export { default as useENSResolver } from './useENSResolver' export { default as useOpenseaFees } from './useOpenseaFees' +export { default as useChainStats } from './useChainStats' diff --git a/hooks/useChainStats.ts b/hooks/useChainStats.ts new file mode 100644 index 000000000..cdea61861 --- /dev/null +++ b/hooks/useChainStats.ts @@ -0,0 +1,18 @@ +import { useReservoirClient } from '@reservoir0x/reservoir-kit-ui' +import { paths } from '@reservoir0x/reservoir-sdk' +import { ChainContext } from 'context/ChainContextProvider' +import { useContext } from 'react' +import useSWR from 'swr' + +export default () => { + const client = useReservoirClient() + const { chain } = useContext(ChainContext) + + const path = `${chain?.reservoirBaseUrl}/chain/stats/v1` + + return useSWR( + path ? [path, chain?.apiKey, client?.version] : null, + null, + {} + ) +} diff --git a/hooks/useTopSellingCollections.ts b/hooks/useTopSellingCollections.ts new file mode 100644 index 000000000..48119ee4d --- /dev/null +++ b/hooks/useTopSellingCollections.ts @@ -0,0 +1,64 @@ +import { + useCollections, + useReservoirClient, +} from '@reservoir0x/reservoir-kit-ui' +import { paths } from '@reservoir0x/reservoir-sdk' +import useSWR, { SWRConfiguration } from 'swr' +import { setParams } from '@reservoir0x/reservoir-sdk' +import { useMemo } from 'react' + +type CollectionsTopSellingQuery = + paths['/collections/top-selling/v1']['get']['parameters']['query'] + +export default function ( + options?: CollectionsTopSellingQuery | false, + swrOptions: SWRConfiguration = {}, + chainId?: number +) { + const client = useReservoirClient() + const chain = + chainId !== undefined + ? client?.chains.find((chain) => chain.id === chainId) + : client?.currentChain() + + const path = new URL(`${chain?.baseApiUrl}/collections/top-selling/v1`) + + if (options) { + setParams(path, options) + } + + const { data: topSellingData, ...topSellingSwr } = useSWR< + paths['/collections/top-selling/v1']['get']['responses']['200']['schema'] + >( + path.href ? [path.href, chain?.apiKey, client?.version] : null, + null, + swrOptions + ) + + const ids = topSellingData?.collections?.map( + (collection) => collection.id as string + ) + + const { data: collections, isValidating: isValidatingCollections } = + useCollections( + ids && ids.length > 0 + ? { contract: ids, includeMintStages: true } + : false, + swrOptions + ) + const collectionsMap = useMemo(() => { + return collections.reduce((map, collection) => { + map[collection.id as string] = collection + return map + }, {} as Record) + }, [collections]) + return { + ...topSellingSwr, + collections: collectionsMap, + data: topSellingData, + isValidating: + isValidatingCollections || + (!ids?.length && !collections.length) || + topSellingSwr.isValidating, + } +} diff --git a/package.json b/package.json index cd3ab2958..ea0dcd747 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@radix-ui/react-toggle-group": "^1.0.1", "@radix-ui/react-tooltip": "^1.0.2", "@rainbow-me/rainbowkit": "^1.0.3", - "@reservoir0x/reservoir-kit-ui": "1.2.0", + "@reservoir0x/reservoir-kit-ui": "1.2.1", "@sentry/nextjs": "^7.53.1", "@types/uuid": "^9.0.1", "dayjs": "^1.11.6", diff --git a/pages/[chain]/index.tsx b/pages/[chain]/index.tsx index a8af8b484..18abadf38 100644 --- a/pages/[chain]/index.tsx +++ b/pages/[chain]/index.tsx @@ -4,75 +4,75 @@ import { InferGetStaticPropsType, NextPage, } from 'next' -import { Text, Flex, Box, Button } from 'components/primitives' +import { + Text, + Flex, + Box, + Button, + ToggleGroup, + ToggleGroupItem, +} from 'components/primitives' import Layout from 'components/Layout' -import { ComponentPropsWithoutRef, useContext, useState } from 'react' +import { useContext, useMemo, useState } from 'react' import { Footer } from 'components/home/Footer' import { useMediaQuery } from 'react-responsive' import { useMarketplaceChain, useMounted } from 'hooks' import { paths } from '@reservoir0x/reservoir-sdk' -import { useCollections } from '@reservoir0x/reservoir-kit-ui' import fetcher from 'utils/fetcher' import { NORMALIZE_ROYALTIES } from '../_app' import supportedChains from 'utils/chains' import Link from 'next/link' -import CollectionsTimeDropdown, { - CollectionsSortingOption, -} from 'components/common/CollectionsTimeDropdown' import { Head } from 'components/Head' -import { CollectionRankingsTable } from 'components/rankings/CollectionRankingsTable' import { ChainContext } from 'context/ChainContextProvider' import { Dropdown, DropdownMenuItem } from 'components/primitives/Dropdown' -import { faChevronDown, faSprout } from '@fortawesome/free-solid-svg-icons' +import { faChevronDown } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { useRouter } from 'next/router' +import { ChainStats } from 'components/home/ChainStats' +import useTopSellingCollections from 'hooks/useTopSellingCollections' +import { CollectionTopSellingTable } from 'components/home/CollectionTopSellingTable' type Props = InferGetStaticPropsType const IndexPage: NextPage = ({ ssr }) => { const isSSR = typeof window === 'undefined' const isMounted = useMounted() - const compactToggleNames = useMediaQuery({ query: '(max-width: 800px)' }) - const [sortByTime, setSortByTime] = - useState('1DayVolume') const marketplaceChain = useMarketplaceChain() const router = useRouter() - - let collectionQuery: Parameters['0'] = { - limit: 10, - sortBy: sortByTime, - includeTopBid: true, - } + const [fillType, setFillType] = useState<'mint' | 'sale' | 'any'>('any') + const [minutesFilter, setMinutesFilter] = useState(1440) const { chain, switchCurrentChain } = useContext(ChainContext) - if (chain.collectionSetId) { - collectionQuery.collectionsSetId = chain.collectionSetId - } else if (chain.community) { - collectionQuery.community = chain.community - } - - const { data, isValidating } = useCollections(collectionQuery, { - fallbackData: [ssr.collections[marketplaceChain.id]], - }) - - let collections = data || [] + // const { data, isValidating } = useCollections( + // {}, + // { + // fallbackData: [ssr.collections[marketplaceChain.id]], + // } + // ) - let volumeKey: ComponentPropsWithoutRef< - typeof CollectionRankingsTable - >['volumeKey'] = 'allTime' + const startTime = useMemo(() => { + const now = new Date() + const timestamp = Math.floor(now.getTime() / 1000) + return timestamp - minutesFilter * 60 + }, [minutesFilter]) - switch (sortByTime) { - case '1DayVolume': - volumeKey = '1day' - break - case '7DayVolume': - volumeKey = '7day' - break - case '30DayVolume': - volumeKey = '30day' - break - } + const { + data: topSellingCollections, + collections, + isValidating, + } = useTopSellingCollections( + { + startTime, + fillType, + limit: 20, + includeRecentSales: true, + }, + { + revalidateOnMount: true, + refreshInterval: 300000, + } + ) return ( @@ -186,31 +186,7 @@ const IndexPage: NextPage = ({ ssr }) => { Multi-Chain Explorer, powered by Reservoir - - - - - - 7d Mints - - 200,000 - - - + = ({ ssr }) => { }, }} > - - Popular Collections - - - { - setSortByTime(option) - }} - /> - + setFillType(value as typeof fillType)} + css={{ flexShrink: 0 }} + > + + All Sales + + + Mints + + + Trades + + + setMinutesFilter(+value)} + css={{ flexShrink: 0 }} + > + + 5m + + + 30m + + + 1h + + + 6h + + + 24h + + {isSSR || !isMounted ? null : ( - )} - - - - -