From 3944be9a03e681babe079f8a7c913f5894987945 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 18 Jan 2026 10:52:29 -0800 Subject: [PATCH 01/74] refactor: grid-cols auto-fill/fit custom tw classes --- app/[locale]/assets/_components/assets.tsx | 5 +---- .../collectibles/_components/CollectiblesCurrentYear.tsx | 2 +- .../collectibles/_components/CollectiblesPreviousYears.tsx | 2 +- app/[locale]/community/events/_components/FilterEvents.tsx | 2 +- .../community/events/meetups/_components/FilterMeetups.tsx | 2 +- app/[locale]/community/events/search/page.tsx | 2 +- app/[locale]/founders/page.tsx | 2 +- app/[locale]/learn/page.tsx | 4 +--- app/[locale]/run-a-node/_components/run-a-node.tsx | 2 +- app/[locale]/stablecoins/page.tsx | 2 +- src/components/LearningToolsCardGrid.tsx | 2 +- src/components/Staking/StakingProductsCardGrid/index.tsx | 6 +----- src/layouts/md/Staking.tsx | 5 +---- src/layouts/md/Translatathon.tsx | 2 +- src/layouts/md/UseCases.tsx | 5 +---- tailwind.config.ts | 5 +++++ 16 files changed, 20 insertions(+), 30 deletions(-) diff --git a/app/[locale]/assets/_components/assets.tsx b/app/[locale]/assets/_components/assets.tsx index b6802faef41..208e12ae169 100644 --- a/app/[locale]/assets/_components/assets.tsx +++ b/app/[locale]/assets/_components/assets.tsx @@ -76,10 +76,7 @@ import wallet from "@/public/images/wallet.png" import whatIsEthereum from "@/public/images/what-is-ethereum.png" const Row = (props: ChildOnlyProp) => ( -
+ ) const H2 = (props: HTMLAttributes{deviceLabelsText}
++ {list.slice(0, max).join(` ${delimiter} `)} +
+ ) + } +) + +TagsInlineText.displayName = "TagsInlineText" + +export { Tag, TagButton, TagsInlineText } From 34378174c60146332e0a2b0c654f4cafb4753052 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:20:52 -0800 Subject: [PATCH 03/74] feat: add developer apps data fetching - Adds fetcher for developer tooling data including data-layer setup - Adds image domains from API to next config allow-list --- next.config.js | 67 +- src/data-layer/fetchers/fetchDeveloperApps.ts | 23 + src/data-layer/index.ts | 2 + .../mocks/fetch-developer-apps.json | 4097 +++++++++++++++++ src/data-layer/tasks.ts | 3 + src/lib/data/index.ts | 6 + src/lib/types.ts | 18 + 7 files changed, 4164 insertions(+), 52 deletions(-) create mode 100644 src/data-layer/fetchers/fetchDeveloperApps.ts create mode 100644 src/data-layer/mocks/fetch-developer-apps.json diff --git a/next.config.js b/next.config.js index 89f04de2d25..087a337fcdc 100644 --- a/next.config.js +++ b/next.config.js @@ -96,58 +96,21 @@ module.exports = (phase, { defaultConfig }) => { protocol: "https", hostname: "crowdin-static.cf-downloads.crowdin.com", }, - { - protocol: "https", - hostname: "pvvrtckedmrkyzfxubkk.supabase.co", - }, - { - protocol: "https", - hostname: "avatars.githubusercontent.com", - }, - { - protocol: "https", - hostname: "github.com", - }, - { - protocol: "https", - hostname: "coin-images.coingecko.com", - }, - { - protocol: "https", - hostname: "i.imgur.com", - }, - { - protocol: "https", - hostname: "cdn.galxe.com", - }, - { - protocol: "https", - hostname: "assets.poap.xyz", - }, - { - protocol: "https", - hostname: "unavatar.io", - }, - { - protocol: "https", - hostname: "secure.meetupstatic.com", - }, - { - protocol: "https", - hostname: "pbs.twimg.com", - }, - { - protocol: "https", - hostname: "images.lumacdn.com", - }, - { - protocol: "https", - hostname: "framerusercontent.com", - }, - { - protocol: "https", - hostname: "img.evbuc.com", - }, + { protocol: "https", hostname: "pvvrtckedmrkyzfxubkk.supabase.co" }, + { protocol: "https", hostname: "avatars.githubusercontent.com" }, + { protocol: "https", hostname: "github.com" }, + { protocol: "https", hostname: "coin-images.coingecko.com" }, + { protocol: "https", hostname: "i.imgur.com" }, + { protocol: "https", hostname: "cdn.galxe.com" }, + { protocol: "https", hostname: "assets.poap.xyz" }, + { protocol: "https", hostname: "unavatar.io" }, + { protocol: "https", hostname: "secure.meetupstatic.com" }, + { protocol: "https", hostname: "pbs.twimg.com" }, + { protocol: "https", hostname: "images.lumacdn.com" }, + { protocol: "https", hostname: "framerusercontent.com" }, + { protocol: "https", hostname: "img.evbuc.com" }, + { protocol: "https", hostname: "storage.googleapis.com" }, + { protocol: "https", hostname: "cdn.charmverse.io" }, ], }, async headers() { diff --git a/src/data-layer/fetchers/fetchDeveloperApps.ts b/src/data-layer/fetchers/fetchDeveloperApps.ts new file mode 100644 index 00000000000..2057a84bcfc --- /dev/null +++ b/src/data-layer/fetchers/fetchDeveloperApps.ts @@ -0,0 +1,23 @@ +import { DeveloperAppsResponse } from "@/lib/types" + +export async function fetchDeveloperApps(): Promise{app.name}
+{app.name}
+{app.description}
+{t("page-developers-apps-modal-links")}
+- {text} + {children}
{app.name}
{app.name}
{app.description}
-+ {app.description} +
+{t("page-developers-apps-modal-links")}
+ {labels.showing} ({count}) +
++ {children} +
+ ), + h2: ({ children, className, ...props }: ComponentProps) => ( ++ {children} +
+ ), + h3: ({ children, className, ...props }: ComponentProps) => ( ++ {children} +
+ ), + h4: ({ children, className, ...props }: ComponentProps) => ( ++ {children} +
+ ), + h5: ({ children, className, ...props }: ComponentProps) => ( ++ {children} +
+ ), + h6: ({ children, className, ...props }: ComponentProps) => ( ++ {children} +
+ ), + + // Basic paragraph + p: ({ children, className, ...props }: ComponentProps) => ( ++ {children} +
+ ), + + // Lists + ul: (props: ComponentProps) =>
+ {children}
+
+ ),
+
+ // Links
+ a: (props: React.AnchorHTMLAttributes+ {children} ++ ), + + // Horizontal rule + hr: () =>
- {app.description} -
+{t("page-developers-apps-modal-links")}
-
-
-
Wv_+4NYx8{nFs(=iWs(`=Hm}XrOWaH&4o%^+&RYIW}Hip}~z^gkruoULB>? z)l0+~;*9_KQOTWx)$85(5{wo%IXCgYCLzcO#C@kWVoZ#AUk`~^T@lq9i;ed2d-Ud2 zMcf{Drv|?TDkyOKJZHZXJX k^-R QKc{#clE8AVEe^=l)MRGDCV `YY*=GTd;y6(`RPEupGBWR|Gp&Etg?N<(PEv43F)#N_s_feL)pBRLmf%?qP z`&QSSGH6bu)c#9J;ON_-_Sr0@>c*{ZhEw@u2Y@3<{!{5+@d{n1si~5wdRVUtrS0qp ztc}>&?+a`=PmtWB*GE=-jKiAO7Fb7k329o_k+L&@bz+=w&%oZ31{(*aWB0VY@GrcU zU8{ATC86>hq%SR3o#Km5v472ur*}lA)SiJ4yYIgDEcs2juwB8*Wzw#@Oo`Hth7NUy zhCOY%+|AEP+{$S7j9n^UBa!H?aIqbq(ND`EqOKN A=tg*k{QXMqj;3MlJTkWE6>|kue?F6c&5^(R!7r!(*t{BX~B3Wf}tsK`+ zgvvc(7_?$?A+O9 qb7jOx)LNZ!SB;KG{rqKLD zBF1%fXWE}`{S8OA{o`H7wY9`&>3=C7DCaXwKs5i^ZNkvO4T5J_$;qptk%%Ou%cNAf zYKo*}8w@(*tWLm@x?KIs9$&og)faMH9H+d+eM;_VvAKuoNcD@`qf5XmN4zzmfaINz z(r0>s^C^VBZHuEHMdH^I!`|x~Oh@jy>U$ed1pT(9P`12&IjcuU^-X|%#&!^I)f(lU z!sZQ%Wj5z~SUysD=)zb^H01teRy!~Yp7u2082CH+QsWJJqyRFxCmPxol=2`LDs1q! zwdZM8C*nVy{ q+;e)chXeq2a6&S|>=Xb4}5Lj0j^1l8{4kud=>@ zGke5zkKplM5>0--q@=|pXeT1`M;pa@n+H#{Ve%vqlwVHQw-yr$wY2hnV2 zSMD}F%u|H!BezH*aGH)G9Kt}50S8H@tfj%C)v+a8o8H-%W0x2~Q7FSJ3i*&|n)no4 zXT%que32tefe&D-%9DFyFh4N*x;p?U{sYco3=~dX6-~nB5)@hZ)CK4 QrT2 zpx8}@@Z6SrS^G0?gOD2|aheN0RNYGn)Vq{vI=1t}TIsy76sXO(ky*R0mu{4u-B(_i z?P$93RC_h}Vhti>YuWrL_rr{%pAffz8v35tgt VRU&So8T$yLVP}g;$X0S6@njzamYyxc-y2bc;6->+XUvufH!o zch2lMndzk#0 K*7* uSU6ycSyMs>!!`1Vg{M`5O3(Y-7 zZGdX%F3%4jC-v6#;qEIu)SE}wb<@Jrv>2*)_j6R+^DnrS>rbU?mn}YI4bBc&a^Y zc;z{rg9L>A!e^782N!rLExsctW7TTF!>Bpk4Q$37f&}|ciBW33a%KkiJxg_r=k=q- zK rbvI!!#V`mddrZEDq^wrD_ezoP&uG(T7<(SymOYwhO2TsxN7N zZEb{UF=AL*bn9dkx<+s&Y>RU|T%9dq`1f#B!W~cjyTx+tS%O*XB*&m0!!Kum0J(v_ zs$9@hechhtJ!75&W0Ngzm|vJ{pM%6g o6_flH9?6qA5PvkT3 z1&9x>gkBR?)NQ*0Rf=MOyI)-tfA)j9y+n0UC0V=Z=v39`LtI#H);wdjQg2Y3`gad+ zGX*5~>bAcJ$$0?FG@2Tln?2{})M$+(Dni;P+@EI*hGZLOhejEG6c24$Et$|H6nXNr&OP;AMaCLdmC_P#J~jf#Y2%8UXS2~uQOLC8|_^X zPs8nNsh#XyYaxA&Dz5Js!F@*~@RARM@6jufR+$pW^K q1v2Zjmzyw9+38uc1{zO`FsLKiscH*-(XjENuK z=0n`>Y`%5<29<9qD>(m_7EeT)&ufc&&}=)##XrWERIU*J=r=v?(OTBJ6NzHguA}3_ zEN5(o#!l>OaIAlWM4L-_+5rr^*j+(uQ9{A-x}#Use)NKVQ!Jva+W0kY%7^KnA9#($ z{kNmd5k$N{9QZSuD@yLT9g}^hP|ratO0~Pg$lm!4Zr*D~aTYU|a}%P}Iw!co(Z8B_ z>hC7<$!u_@QG^}Lln`J;cmA nTC>Xe$^{_|1}wEX2RRZu=PxBI{6lj YRAm?2`=CJCDQmPG6w*PPwZ@ z`+31Q{k;9D&b`Z6dYs&AM2J-t>ba`E`m}gti$D@90i`CB_xj$$lw*c@zhFm! mvzrlfyLVqEo z1=56X2%@f-osaZ9h^3b!<4~=OLFro)Ml8wotz!MIfdz>>%phX!^U5$OZL~L*-tz(| zKsF&qBMsf>cu(_es9dEzy>_O&bv9vGC$uG0Y$}4~G@kx9|Lf%Ro+6qffXVXoF1E8) z8synXXF#`Cu8W1)LnjT--nZ1B7NaQ(nNIK&$)6YMoGE&@$T}`JTCu$D{6|D#xM~yp zH^i|d`!TU(x!j)aMGku~*}v<+u@KR*I+l7=$Gz2kGLCj(QHY%p)gX_`EQCi04WBWO zy&H{tg}Fd1tiN;N!M9KI%cg3{Wnb}2Tyb)Y%_MMQa1VA0LF(>e4%%#uYUNGOaB=hB z{qwAbLy~uAJ~LMyz5atJ=Bej>ZLrJRhPqwDzZ4)jsU>>{mE=0=-A51Vp_UI*?VZ3( zr8e_!U_2!GyZd5MXu2cB6IfCkB^#^U`re)V7UU*xj?Y@^2>&7S&Ao8hJiPALa~{y8 zlE9b&CyOl9)tU Ed%iuRi zMeNO|X4lg!APVXqELuGYW_fgQNUbHdVPgYp!wC25U;StmkOd=}`HJV2J8{Y5! v0a(SQYt-*MIsFm>tSW9r%|y#piJYM^I)O zt>I_+%BPA-T0;@K0xzZ|Nny&7O>2h`{t_^aL`8o>E`=RWqJn>X{=%-$N jBca;%0?| zNt)Ga=H2@Ds|{rXqysbQM>lKh-GbR;WAQ)41A34x_etfWZ%qHOgj@ch0_4 %GfR*+T)kY%9FY;@IU|dH4Ak z@^otfnikJpp3`tSs*@iDOQ Y`&TijvoEGG<@&yFa3 z!K_H$P^5fpGVeoLfJ*ps=&wx>Xt;Tus!1LXN_J9d%P^||nd`-z*E?4nHt>RI+O2QD zgzkoB`D_GFIvDbDLNm-RbAcUP0Y=S93Oi1y?ax`nVPuWV)sr{Ge~kW1&l@I5vqAan z%Z#>Q?=Li2R%^Juv2o)-UK(k@VoUqhLJM#=0MvRq|c zr3C7}HZ6DI2$qUdQ#5zRa!Xo})%*c#&b+29r3qnHV;bBmq_)c$Ut!x V4~z64>LvWwMBlxAMH^Nx z_ax)zM36rK+NN*C`a;j=voDp{ e|AN^cQ29?72#O3`27;&dO(|W5f3fx8yo&Bf# zu&BT3w`jdIVFI=6fYKW9YBIjVvU`%Ml*B2#O9gc64;!S&61yLdHpbYoY&bmwEnznn z5W~7t2HH~whov3kca?@ cxz;9A!MA{eoec*AjxCk6UH_?y0Up z7%`u`MWxxJRuw<*k3Ph)+kpU;Mxi1h)BWQcr&h&b&r{=0FrrcAE68A=>TdDp;=v!h zpJvaMs(b-c>r9UzyUHa>xXG&l6sQ`_eU}IM1#ZcarvWtqCd^;lm>8=t+V+*mQNvf0 z;59G>G{zj8k)++pTRdkqv;Dbrn%u8~CDm2|#VSIXoiv%&*?H4z9Nq{3<+Z*7t0s!| zDsG_y#5@(-KDocx3nJ%T-M(gK?-4&QjWU0FKaQ0UBp1uYk5HKo92EmkPTThJOl}1s z4u1_GCSXW(udFRQM+4>E*(PnAr4)oi;2mBwPFbEc-5ocJ0`jEDg@kdzIIijy*?q2V z-lH9AXiPpv9MsP}MN0*w0 >krbld0e 0kB(9zNmke2h zt|B-0)Dc_yRlnlRg!wNYC&iQ8N5M&JgGHbIktElJA_V`^GjG 5Fio(;q;sU}NQeh5A3LMIq$mOY?bufeauIXuW_>3}75r)Cvs({*I$S-nYa<2tvYf zSErxqI_`|FZ@ze-{trx(g=w^1eRnCg>QU0L7X8g642fbS6WC8AA{H~Pc~bI!{~HV1 z7D{e=f_< w-U WE*Gj#5-L zc+w* 32w`D@e;W9*B}Y$gG;}n Kb3*-Ya(DlE<2}z!T1gx158dDzgReK;v9wjQy++>fGC~?=rN5N_ zlIr4ns23=*a(D>*5#ByyqjJv5aAUR~Be9Ay%a-l>=FxaD%G<0(Dyz^_2l3axRDTYX zzxM#q7b)`AP$~b)E1k7py85qD)pK7BIbA3)^^~Gwh0TV@uS?Cxf7z`>QW)&5oA jyZnk&Q}n`{Of4sJA$MwPV`NSnU?DK1Kwu)(#f6u@O`;N6zCLLp4Iz| zZxx$H($N2a6=hGl%Ax6F$52Njrow-YNLJN#0mlh<71q(|l3xtt;l=F0pndG-<|Sk& zn0Djtqszu?Jt9PR4rL5XPYnQ-3HsOnho}#KEBcmG3udZ0K37yRMx$lWNJ9hF9+M{0 z23=}M+!$l%(`nK~V>u>Z3!z9u7^CJ;J!lTU4Z>g`oe#-`NCcM^6~UXl$u`Wv9YY>$ zdr2&jjSaVsf164T8JTnZwo!0{^@!lUk3H;D%-f2GP|Fo3VNcMKZHg4=NXwAc_Gqzi zWkKExJ%9&zl+f*MK&LS$#(soQu$yM)WGvbioE`}X5nf01+M*y%N59f=6Jy_W!y6b0 zNE)&5>aF$9XatJ!ira;*d!SJ8lH5p4NakXP?EkX>H%}vC8n93*Rng2W -&Y~AZM z`2-*yxTt^OE9C27JrL#GGYdhLb#RW6I-ma%U6!PGu %%cE zmlUC7SQoMrcnXoaM6Ii5CqPOJKA8)u#Tt-I02uDlh-&70%g%#^Q#ua&siq{(sNfqj zK1aBaQeq2AB17^a5)3yp1a7RBw!%4|@)GU3hQ2D5a=GB5b9XHeeS!6=`_l3uSgUGh z2n2|YE3Z{MZukcN?*4fkNq2U|a3?ssIqs*+Rk >GYfubp2xq9DT{mTRy;OsYl8tS_?vMv}13VeD ze<7S*hxJN|`0Fe*wU@+pJ&nu51MeS*+)x51CRtreZfe(rnb!0L^401-4h5fwvu1c< zh3tBP# sNQ)bHX(f5aRvxqj8rt@IRC0PI61O0cQKSt* zrVf?m`RP4S_JV;Dutkcg@Q0CzYZr?)Bnd@jd4E6fGyFfd(BK10gS~8x2OtdItXu+f zXjl8~Byb3;Er-FBk0Kk`;fkOeEx<})132tF?H2GI;$0`CbA!-|@ik)mEP*s r=9|d89O^X-JnJx&RD3ROz3hr(#ZN|j~#SRs^Z(*u)D`e zj~PUC2|9gqQE^kr0tg*H(UW4hfRqeSMBV_sBx4JcyW*I*)nrr06v=~lipIXwF+`y- z$nwZK)YX}y*PU#3*a_$yMiLv^T*;>GKWVh;1VqBNfBB*d&eovd>;}ovqW4A9tI;T@ zt?GyYAnubWQ*9A)mDw6{KcB5-%$mC990|JqrQX)5H#MH>k-un_DtXgzBJm4klQ>Vj zO>7x!Va=sJ)P&u>k%O;-&1+Lx8{)1^@gg=eS9?J+F)rj>!)^B?Y+EId?B0LH9T9Nu zK8Le4*;sc117H0ksYqm wK%3}by&Af4|A1*R1oJE2w3X-E!48#B!%@DjlHn5g01Tg=8rp)^C_ z5#L#-*E#&Jb?8kSJN}+lo#^5mZI#UBQ$=Ndw~DMyhr4jsK ENx1H--+N z0hG3JTn4T;a%O91ff3qV>qE!p`26H4VZ)YD=%Gsbzm_r&V0XZFCjcka8ursb&cQP~ z*1@u_Q90Y=gK1Y2(^uH&vUdE1OIDfbFLMfy Aa7KX~l$_Y_yXW$V($sv5_)Z6cZ=ziXd-`P>im zb$I_#G4{ zgMC$1e->^Av?qkL3&Iw3T9K0v+RtRoUouB;3a?8J-Tkmij$9i&r>L%vRVZ~!E}gQ_ zF=sCUN-;Z2%1P>JYJ$qrBjn`;O>!Hesm0J4DbIm90x49`Hgda?0>PoXjc9f(?eyG2 z=#0~1R&HP0g74$iQhAXs 1HX3?D%pjB> z6SOwN82Hy3w;J-;XlempJ+)lY>u%qRTeP9N?X1jt-7RUYD0{F7t?)Pjt;T({kOQlT zJ2%+#RM%-?5u@YIIuCC{x2S4(y4N%eQT?x8>QE#C(w;rvv5g?WbbnkxeZIhvngNr) zuc&%(QDES)^}G>g#XB##@n#84-tD-nXBy3Px^J32W8XP#4jmNI;t}H&K;(oC(Nu$P zAbMIc7))v?vD2LOpe2R!g&kAMAB|Q^rHRp7(p#nrtbnhgbS}toZs%i97CFsaNV1C{ zv)sv *Lib%2*oU@7Up#jR zpC%)aI;&MG05$bV!7Vzo;a?7JqqkXr@s}n37}OLufP_PICHRV-l&Zcbs;Z`H9Y713 z2Y>g4HZhor< Om;UZ&pLmQtQ#-UMz)H4eYGrtpmUk7~jgT`vnAMPnUBfT(S$w0b+R{2h>E6$i4u zC3VBUQ~o{i#Abk0-y8@FtUU_a9~waaJ)*49Q+S&AY0BI12M_%MQFQFpjllmdgaJBL z_awJ4)6 RL0VfI-X@MuwPBZJx_aK7I `GuV&SaqtgR)Z>gpez!5BcBF2T1i8!Q{m9bgI z$AdVCg1MrDU89(@8!{AEreo56)vS*ZFnww+=Vuj79Eb{*gBtFrdSL{w6bD^WUEm2H z`CY{Gc?g=)wo+H**m~ru5mF1|w#6IqRn-^`y{y4ZmhA!33a;cKdn2xEBah9>v-(1+ z$T|z|n41M=v^&f+6cKj4;7W7+1%KKx@_MokS8=CtU42e)@yZ>|o!>H=pS0{uMb`E- z{+bizZLZk{3DdGNS7=%~FC9c^&~5K{>Vqdcc*eF{<9*$<#7FoxkOI-FRl|jtNG^HC zI!^ic^jK5C<59Et;|bJ^J*N^TW}_rtO(Rv)h_QfB=N`5jxKe$SH+6s#EBmEu84_Fb z n#4MQ!oZ2^bAOwt{Ap8S)z`Q*Rh-jGLo75o*zWWgh_Sv=F-;L}(&^mT# zX7Q5O*ehJ{02cibmQFfk&@}$N?l@jNz|?>wVM^0VB)L2a6{GpjWlNyS;lo<23grcr zVSEc_ey&hF^$xzu|NJvVL&;Rfek^D4V+Me7@zm72uZ@knS4Et447@fxzG^CPfe{X$ z!lJLfS_&={{v%^Zil(POHvz7GzJxK_zhMS=4MGM8Ftnr5KM-LxtaC@kc6Hefdwn5E zd)4?G%<+k{j1$Dx;2fImyNzC vYT*-z1 aVzs(P!7P1ZPvjmE SqKpo&EMdoyTTGi4~odh+MI&E-%&?+)|KS!E&m+94xD0I&$nyHaj ztO92&+5t-QA`;+X!A)GzQNW}eqctXZ$Ra?AH)*CYDcg1vW9e!o5%@u;r#JEKF!4@m z7MH$kQ16(6W{{gO)2XANkvP_+#MW&mf#L6l 2W5kt_8Bx2V z=E!R;T)aH2hn1T03%Ide^3i08VZTFp(bBAR3>BQG 43gTh(l6w%+!E4$0e| z > $0i6)*r@)LGUw^QZkOUta_tth$#|qd3m5>R#Erl-_r{P zEmuu6D+<2lPoU24Y0)lF{8?R5XD`xQ2}N(u6gR%r))rt{xvGvTlC5n74fN&VWjyH% zMJFoXamq))fBu=HUbP5eylP6j?!8!;N(?XPmRm8|U)k$+6sb&PLTk_-%R{HJ09PQG z+n*1(Bg0M~T8({|t!M)L1JXZ86i;xr847bDM8h!d&r@iY>M%HmM3Z0IB9HwEnf3kX z`*SJBZrH1^Fyh+_0rmxs^%LRI!HYVM-OM{|T?&zmYN{|lKyB!P!*}Xr$W8b+n;s9p zOz{1RD1m)`{A`g~x|^M=$OyuH`h>3F U&t9uD?22!zqmI6oI-gaJ{gV! zmjQu@!>b*8#YY6s!fuv($I-2ziFEFJ()qry=!Jjf;Vm 8unX>Y3qgaQA@q*AD*!#9B#0hA6-V=e_+pF=<)OVw-8heiW)ZZ*i zbvi5 !VJ5x&u?w2suuK=HZbbRglv6^`6(iiLI3x-+P zQV%H*V#Ukm=qaY!tD=V}BJxfbkalhc{W{ySu`spacia0`MHab3u;mY|5Y`SY xT-B$k!wbXM+o@i!CzCrf^I-xP_N9uB4&?ob&xd+I@o@!u_#`pPq`BHD4Rcwz- zLpu!YS|2H$P}6`|BekqD1RC`rKX{q8pHi|CV1cZsbR(wqz#CI*-nh7;xVH^#;RROb zA6w#3czN@J^W )kT-!Ge$LLubW&^*)||! zcFy%IZv9ReU5jVp#%=ARF0O+EgT|=ik(8QW|KlX{JpB{kGBa5P#$09gUiSKyPL^)W zf7%9Zeyz>wS^cYfCM{{InOCnTuPNX}>9^o2sdRc}$(auL`{P=uhMJQIbo5t4&9T2K zMN*i6D`mcc^_5*SkUPIj#C3dzNyzoApia6v>%(4e(1*?WbCoMPH@ nM*Bb!j8IP~@ZWGP`<=~^cnz`q5A%pi;9R2N-?-w>zkeOyeg;vVi=Q=RBz zQ~HL@Kg%>BNLW64)$hS0v7XqIxV_g1u|H_>;9HREsewnI(E%6cek~CpS#8KFXc@!> z(-R$ ogBOX}RcESe$r4!fU_GyUp z@6+oIkDe~t7wkRq6P}gT3+Sv%0ThAtk^oV%U>Cn3ExYjs6EQ{nLs31N8bYO$0S7G> zlJ6V8l)r`!QzK$_+9*+fJNDZ!Z?bLZ8<&n=i-}zG{@J+}Y2`F;NAB>=6apH^71oc# z(5wU&%TkWz#zvoR6@~wX5LDHW iMis{udgd^|zUqV9n2#i$p}+ z7!`{AoA)hs;a}4m{GeNZ8vK&J;7vh^e&{Gilwi ZM2%u%G2S>t}vH~BJe z@lqYLRHNcptNa}yEPkR@_idYed&wg)Dn^)bo;)pAqk*}) A)MP`hu~zfYRBf8k2wGMV0}pR1+548S#5woMXy74}TkK zxwN*8buO%HQ^;%q4i5O` ZkCIaUzRKnnDCvVJ}h`UESmfmOWmBY9pd-(FK zw`E6=Ew;yA@)MNp#7a;a>*N{}W?lGf=YoQ?dFRu13n*V$H;a8cH+s<<`P|Qo^@-fE zdO>9< >>Wc#6naNxDtlMr14@i?np~7M=mw 2TxMq++q}=Nm2_R7wsZepP>6weeZ7n8}QN5#sje!OqL#;El0cwSD_8 zi(VvQX=hbR8|cbUmQ4L~ZC64>XcQyqR-Oh=NS)XvIbJ|>nRp~Tp7!q9Ri`VZY;yGc zar|vxt+pBs>FBVY=@~$Ck158jE_&|misVN1pL_J+UwfXmKSPJzj>=88yYQ{C1oF4c zlv)EgzcClaNZ!3{Gl&{|lp|M+C`W}9K>1KfO!iQ|(F|snth=n2W(eT}em`fVyks9V z!`2c2Ey4K6=lO+$^|wBKVYh}vOK80Ybn!Rz5^N+SBlu9Y_b$B@LMhX16 Gk^5@m!0=t#l-Ih_Zi(5)JJ^+Pi};-A6cK?3ei2!@W}*yKzC_2m@*96bC(&b zFW 1)2Ft8-?m+WTl `V;JsX9$LyQ!)Lu?z;g`K;?lbC^x6ZWNv z`8|uZECY;ilA?(ccWpfPznk=7&d~s4fw@x@NBJ`t{Gyu-P}d;fi^x6N*GQUSHfNLd zLV`VNzLRwT^1T=kKa|aKc=&u0trVVztpuu4^0^DH5sqy<$B2-M6#=gDYL+X~@!RIv zvy*L!U!ZvYs3L$YR-Ygz5*8l`jcBYDV||0a2$nJ|%+%O$-+uW1Fl>HP9S)wgYqVdV z`<@b_Pg!!wGhaXTR7d_wabby84gdI~%k0e2LP=|*MT2=?Ne7hs8^f9KruZn-lcBof zj9;)nT
&yJ*LU`_Lvj0QWA?{4|1dWDx zo!Y*w@XPgk>`LNPZ)_E)Y*~8o&kS&HLN?fTWkV_d-vP_?X5Qm^L=kI!zkNoM<7{y6 zWFX 6r&Yf}QoPyvOP}GbP)on-wOD zng%5+xs38hItz-@lz%ZYmi(r=3T7v?c&fl04Nj^o1gHNmBuVI#Uh9mQR{bF)|NS3w zgf5D0art$WF6Mqn^~GhAop%pSonHiT`Ps*f8R3Ez*)1=Y#u#kG(FlDLR LoBm8fzT*w;n%8iU*6(FH&O1>iIii$zUgFM z d#qv2;K zf7oG2j(Y~5Tr_z0&@*kYQm@tM(9 BGJlScBL=7HmS9^ z(81k@=Y_=YA$)!ZH%0IN
y`sgml}(YO!F$@->Vrh6Z*-wQ9oc>W;Sd1Vvin&3KyGSY_r)_ z0^I2rN7yN**F~L&Tg_W409;nn|F Z7PFH|-yL7o-~H9ay#<=x zuil$5y}5AlEgh1isvvm=o!a)yPrq$5ts0BP%FA_>uK6YAYi&d` K(6uxZx f154En+5pD4XtkTBhmb5?L zRk~48wDX-8a=NFfl9G%k`MbjhbUNrA2-*>hJBrvFQnT8%q}8X$+A1GGTv{_BOC>@R z!Y+qpJ^Q$$Hx%?+?-)KUpu#AdWGS#1#rGU>k5 A-|Agq*phMsPi4=_ zTodIC7AkAOzziGK<%9Fo6__^SEj&Er bJY?`l*umqHoYenN=Yf?Dn>c!{Z-Z z*7E0R>|RxBY|dazY0TOsO_N2~RnG};5{*`8a;4or#x{x6?XmXTC}6 1 z`z_26aWGsC^|b-0D7UybG9EOvnw_N3bI$&Tn* jQ@%c$zO{#w*9r=^kw4Fwgo7Q z#5l2K%eNt &)dl78}}G4ZE1V9SIQG{?SK~|*}Hk$jLcZX={pZ&V-0dDnISC8;R3gn z*U+yP6xjmy{kTrRwpJF~d?%fJl$$heC c02lb7{n6>E;Aio-RI%+YjGuiU<|EB+W^Y$p zXW*eiUtEV8+Z!?*r+pH?c+O>W-4A%kbk;L$$EP3WH-D9W l-<#`-$a7xujS zF`=jP_T Ir5y$fT;wUqr+A zq;KhOU*1r-(=qt9?Fjso?*!Tpj~mKxp7IOy%{KWN@i_E_KmY& }I#6_0Q_3sE6g>HSB|s(=H{l8|}H{ zM>Kt dzYAqQknxbyC{DaSd)~Z|~A(m96%-Z!Wj3`qvwmI=`cp zuhy%~|C00*-j~F7wlXu!-Z^|u`AnZjwM>>F>}Ywm!$)1wVTT_eek#`=efGdFVUD!B z!rzL2*la@kL(#sLeu!Vu*TQG|#M_h`j_#Sh(R=4oMVgDvrV8`{U+~i;o^+DI%x9Pd zpNmay&QN~X+w$p?>xUUO2{(=D8{5GtZ$|v*t^&@Ozp4P<43qFH`2)W2XZVzD@U$<+ z!}NJe!&&sviB&~?rM{1kjhlv)OEsqAcXP9&&2TD-8C8*DJ>L$kyfV6y(br1lcvL^v zW6!6I?Vp^Ov&}z#_^9YB@nbhY<2+2>T0d*Q(F6=m_0(r;zx)z?olSnBG~LJ6<)!l- zmt_#?ucn(^S}&I!Y$k5WkQr8a)p>%RZsN2bMEhPh*WxGmIN{TnkML*dO9im@&Hmru zZ=9dgolg6l=_KuUv$XH~en{WCJC!}|*iwA&oM-#6xoBG2#r5@d#67l?n<4#FKR0Xk ztSe?bH?=v#o3u~=iy0l=l=KDt3E-d16u-$Q@J_s*^Shvj0)7kMq W_;hK^bvEa90N7Hl2}e9*j8VquWbj#GoIIToSyc%(bdWQprac|pW*Lo{DJtj z@f+vYJub(e#ZT Kw>F6%)r%NtHiInT@R zlVA?ptMs$-3_+Vq@urG+1U{du%EjV0@J)})iC@}X#s9#eC)c;R2CuvI3%xBndanDo zLZ4=?5q)wY$}*rdTdOjQBt!TaIi7%i`k u{ZNwwe7vmB9zV=g5 zk8Fo*;UD-hr=%K?=h4Gk{&Yg#GhRE7*1k7sMDm%AzUgGO8h&c?GL_c{cy4jMJvh_! z1L>EI^SFKRvq#mV*R`K>+Mj9rPWsu_L)v%F@2MZ?51jN(o=v6Ml -w(8(l76Q3oGItG^jmzvbq>h*CFG$r59c_8fnCwQ!e4%q_9^7qPDh;E zeV1M!`t?gc+~M4^$}a~~IMdoMdGNgv_5VQM!#^|PJekGcM4ca%_c-@4!z>4_16cln zPI1;vq9G-H>-&D{_66 BBOcG3>{dM~39Ggup z`@SEbcRk*e_yzv~oQL;hXZcH$YdX3zmr(a~&C*>Paq8SYy=BwizCkA6OkS|`kx{<% zrZB9pUiN(WzV_eX`z51&J*Yc#8t1F6?o9mJdNQ;h@Yl{S>Ze>YoaX?KCa&XV^H_Si zb)Dk$15UkuBJ&r?rf*_=p-* QfI&Us|knx#*H{`zXGkq$PU z`J|GZY2zscy0`RSpU0Usi||d_&uDkEV}8&24~RbxrXMs(_>JbV1pAy~OZRjO8OD=A z-?glmwQ%D;uV3~(pZDghRhouA$zD}}lRi~IX}0Z`gN33d?woO|z56Gt!g(IOW+fQe zdQJO5hu2RxfIp9OQE9R7fIo%$GL_Kp=!S#3D&)zCc`kpowD4$MI_(qp*(tVEz^P{t zmQ(bzbDT4zAFf)NseO}Z@GBsr$Cb%n9YsLCbKE#?43DYJHI1&F!5=J~)6!4 (tb2U`7?a~r5tC5@nngA zhV@9)KeF(p!98vsHyVxOhK#GIHPcybZZK6K%(BgJp7rhZ%R%ToF1fHI&ciJ(IS;#i z(8rQ@#XppOIqf_t_VEk0pP_wE{C=V*+k7&_FAXm$V03VbLkRfXAIu+bkoE^WsMxK` zfV!3btfh114DHi0M4L 6qUo+l2q&=^?bw2N7WIKEdZfEhqgMD@Hld;Qu;aZ%avkJ)_m-Fu!+c$FjKS zh*S5ovi!!M#-@@C n3PqQu3TX0ziSa?-bg@96Q~FW?mu~C9)zu<=C)B=Wk7vQv zg`P=LepUOaDKOb{8q%4D#n+OYDe(vGu2}ye#Lvp7Lplh5qcK3FzhYB7!PI@{JA4$o zrzM}h*8b(X=liyQTW@*FU#%S}>1TvH*6HPwQom0>Nozl#pSeATU9p%-HKb>hyo^6R z#&{OSJ%_mX&>!~v;{p0v12KJX`gj=e_?y_jNMA+}C6|c-EMxW!45z5XTB9Y~{kl0M z9(#sgR5g%fP9RLwHk=ug*|HC}oT>eA8Yj;v30vKlvOPN4IXW9%6MJ$VKJSN4yJ`%E zgT_j|OWLn>u|HDPWcI@(L+Vz3fqtExM;cle^Q< vtRTym4GTBj`yx|HqG*R%qum1O5o7&d_mVm@-};bO(-oX!>5f>Ex8k c?#J=}1FnLB?F_1b9{>OV07*qoM6N<$f*F^&CjbBd diff --git a/public/images/dev-tools/atlas.png b/public/images/dev-tools/atlas.png deleted file mode 100644 index 7ab520169c1c1d9cb50feef9f99077d175654434..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43881 zcmYg%cRZEv|NniAG9r5 x7ds5~0kjB96U|k$n`|qzE}D2PI_0v3Hq?bB-c= zWF47ttm7EpyZ7h!$FIl3!z0&yUe|TK?$><2o+sY;o-Px^1qJ{BnC|G^z7GJ@ AMigk@SBD=0iZIK@#rxv z0F<2ExqZ|0DP(Pmc2dmg_+-mH(qC>0{UaG!O{bS29EU_+qKmsEbpO6E!~JLPZk zqtoB(1%dz8WGQW}{cE{Xi>gK_1tO{euCY0?8Z!00im?f=pg=sq**>QMfL6t@gTM5X z=Wq&X3Xk8>ZwJ0QB1-VA6MGQd0o}Y(TX;uR$0gpadHHS0Q{wbF{`H=Y?ZAajJd>{m zLIXdMc1r$vBX@z9+#|S1Ry^GmfiKuY=i0V>pAaxN?dbqOQBe;7hLDNNmDk +COQ^&RRG5pPXdxB#8Ye5UZzL~gC1Nt4>0UkU`4%Agn=o)klDxUVqw4W?OHoyy^ z;iKUPIcWd@NqPoP0A|rppTghNMm#be)7y=kYPPzS+}c^bDiU}vvc2Kz*KuzER`*Y$ znz&p^W}vx07h=iJ8F69+lXrlVGEoxfSX2&*&o-=07y#6wwfF!6mq=OJ$&0G|5Hlwz zGW9Zs ;&8I{GaLZs({d*S z#@$daFfni*btS`)UC;s`G~-cxsMjb)TmSRy0A~K59vN*O;b)!s;S%tB5ZIOgBE?5G z@XK)t0Px=eugE_)cX&E!u)emmHk%{{EGKnrH*e&J)&qd2_P^y>;ZQH-9@V>Q>~w(I zrXx`RuE0HE#0U_S!1EEr$#i>-eL5AH>>{H;pHK>Q(;zvKaf3tyNL~c*$04J6s+K}L zticumm}UWgX1|kxtw(_IMbL^Q;~3ZIr^0$vJ9v$Nmnr8_>*=1LwE@7DJW#V-4ecp# zR}Y`sM1>DeYpL`ec)a3*`v}fooO?z=fMHt;&H}t$pbGt*W3OVZf@J_o=7Wj;#H*n0 z7=Wvnz_VS2$$pkVVB<-A@Cy)FK+8uDru}T$dVA2k?Ek4Hcl-J%pQ=OxQ34slyR!Bh z)mi8Y5R}yt077gS(;lu*E&Bljup;%#r)}}bs`U36q#YPCVAQgodjhdFRfx|-R^U L?98O99{!5a2?*;m^6Dn7g( I;Z{|k z2MG3fRn0)JpfBpT0b>OCS&Urbnq(>7?~Q*q8}JC@z(Br*+qd!16ak7VPuYQ?EXFln zw8BwG56Ve9jR_b?u)4{pYIM*LlA@3aU$4ywYDJ zu1QUzq;x95 BBdgV(*qNaDPPd5kP&muAosP&=Iu2Yk<{jzp@5I}8S9B!NH)g}Tg z18NO`TDSI|xYvg75(i!ofDvVglZ*Jg8c=XMD7Y5U<9tIo(kGAw&kw-%J5?trYPzBR z6h{awhwz)0U@lt)M M%~1dED@*DW`5|Y z@8qY-NG*^1Ja=y_`L^bj>YXiFVuFjzB#tlu3_74ppN;;WqR}nfQlHuuEWzRSp?0|0 z4bAmtOex}IDQ@WTVe#f49 18+<(bbQ8FmVNbxiAJu} 6`0QvPrx?vtvt;s^lYcMYP_K19&cJ zlmd!f=-HY{n@feE`QiCbQ@*MdhV{7Y&Y&WjenM{-iD?Eo`(kTIj!qBojtpw6&4c%R zaeKnJ#AX8ZRTfbFXGCX4B~!HGcSkwKTw*Onf*TPps$6F`8=q5(k*M5TCN{cx>Mhtx zYzAncdvQekQUo&^G2Ne|91nbkH0 zuXzYSQAUy&l`VtA*SUsmT)+-B==>4i@I4xL$8@w|mmQ=JsQU_^+b^W7M$&Th;y=kx zg^gI*TWzVQW;vud*erN_bxs5h!6F7@LDn !cn(;Gu1InoU#Sk|??%yp8Z2mV$5gv&w3%DyBExCexq-M!2xASJ-gr1sa_foQ_@ zh FggYt&vsFCP-vg*+2V-(a7%$J}>>|f{F^YO 8?RZ0C;R*MXZB{4(jw-Me_ z%GPR^q1Z$XwnK>&zM~8TmF{^e9$rCVK<77ZiNkBd&zX&YwL~13BZ^7ZL9)4=#zMh^ z#}ZB=(`$AqCvmGzMw;g}xq&z>zIMHBbXP?{A^YC|`4E1%b < zc?KLS?i^J}P Qrrs180_@Gu3= skY`ex+e`a`k1r{*AkfXtfMU;2HaMkn)3@YS&IlwVKjvqzP zV9b{vQD2`=c~shwV&Z}8EzkXZuavjBSGAwNO_>(s6M^e)T(_5oW`=4%g>@a+^A6 zF Q5SrPa)ni0XDlu=1hDn^b-i$|+&i41BFIN Co8r7)EjY6<8IMRN6A*cgrT3&~4y=xAm~p^w8(Yyjy*Exsa^Ah0MQ z*;mRN@!wcK>QEi!uTQ1Lq#xM`{2XY-8FkSG*>-&=%p6!9#{;HdLty-Pqrc17FbMiQ zrX*qN>rCKY;Jqj7f-h6T^n+0V>uP-u*UHjnU!W-5>b&ty@J!l^+Iy!c*XWXvFJrg{ z9DhwJ%_Y?c^PV%VzA~d@xF1^R&cwk{jK8hjE2`m+jZ7GA!@SbRoE+^mTeE#ApX!Vc zaqWJB$0b|e7cHdb$ogh%WfiweQ7q5jhu<3rxfARRun$-BnM{*3OSuCOiCHf!wfEI@ z8y}nmL9VB#o^-!m%0?BVMr~vY?R#8ip?!N&_0R+hvA)Qj_{odw9?MA*LtR!leE52+ z9FPI#HPbk#3u9x$Pu{yl36eb1ezm@5*R&wl!A?{D2X~ID*Po-#?8elYz}KYpp&);p z{ad?IkB6!&LMe`uSyR1HZlIM*e??cRG_I<_@8?P9x2Iem&8$jPS?R=M>C {&VZQ&eUYCNBGum-pV`DztOUnCHe@evoC|Yom6yKr!v;O7HpxyD?M!_nYc) zK_}v)wkw!3+nF(%{^ovfe7a3Z4&uF&tc=eA9bH&rC!2iMi&s3>esA`@$E5YZ$p zK0OrlF=JDMVd=N>XFOjtZlTH&F7z_?KD|@_tcvuW+pMy7JAB8&EV|8ZOL*55&IB5c zT*|ssZInOgb@YfHcMatr)p mb`3}@!VD}m>7eyY@s5^`(8S=Fv zk8IZArg1!4!`hYna!D^3V1A$h-)`u*o|t1jyx$FzteeQ-AKta;gNjjyZz;IjDW8ST z_=!KDP%fFE4E|77Y|ZpE*k^NaoVeRs8C{Co*l;Fq8Q>dO8?!B>m~)KC+lDy{neD4m zR5R<@uN%M^j|}1*%kvK&wr87+rCDt8o<@;gk%|zR6*U&aH%}1SH(MI8QP}#2) TFnJj2xS{!45nGIs6Vhe!N8V`qMV89=lf{YkQX(_Be7dZ&5zV!_%Cj})Jq zKaXUxehl>Cocol%uNbjXFo-lnO% D)2@ z)~X8S5>I>LBfEa8KcFSB&D|RYgD@);Unr@hoS2*)@r}c``YS#PY