From ad4f403893aea7bf7c10f29985430bc4ef769307 Mon Sep 17 00:00:00 2001 From: shubham yadav <126192924+yadavshubham01@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:20:42 +0530 Subject: [PATCH] first commit --- .eslintrc.json | 3 + .gitignore | 36 + README.md | 36 + app/(auth)/layout.tsx | 11 + app/(auth)/sign-in/[[...sign-in]]/page.tsx | 10 + app/(auth)/sign-up/[[...sign-up]]/page.tsx | 10 + .../build-resume/[id]/(edit)/layout.tsx | 209 + .../[id]/(edit)/section/custom/page.tsx | 43 + .../[id]/(edit)/section/education/page.tsx | 45 + .../[id]/(edit)/section/experience/page.tsx | 46 + .../[id]/(edit)/section/final/layout.tsx | 7 + .../[id]/(edit)/section/final/page.tsx | 330 + .../[id]/(edit)/section/header/page.tsx | 49 + .../[id]/(edit)/section/projects/page.tsx | 52 + .../[id]/(edit)/section/skills/page.tsx | 49 + .../build-resume/[id]/(edit)/tips/page.tsx | 70 + .../build-resume/[id]/download/page.tsx | 198 + app/(resume)/build-resume/steps/page.tsx | 116 + app/(resume)/build-resume/templates/page.tsx | 29 + app/(resume)/my-resumes/page.tsx | 30 + app/api/generateJD/route.ts | 55 + app/api/generatePD/route.ts | 69 + app/favicon.ico | Bin 0 -> 25931 bytes app/globals.css | 129 + app/layout.tsx | 39 + app/page.tsx | 142 + components.json | 17 + components/ChooseTemplates.tsx | 148 + components/ContineBtn.tsx | 47 + components/HeaderSkeleton.tsx | 24 + components/LiveResumePreview.tsx | 147 + components/MobilePreviewButton.tsx | 35 + components/Navbar.tsx | 147 + components/PreviewModal.tsx | 48 + components/QuillEditors/QuillEditor.tsx | 57 + components/QuillEditors/QuillExp.tsx | 178 + components/QuillEditors/QuillProject.tsx | 171 + components/SectionInfo.tsx | 29 + components/SocialLinkField.tsx | 74 + components/TipsSkeleton.tsx | 29 + components/VerticalTimeline.tsx | 169 + components/forms/CustomForm.tsx | 138 + components/forms/CustomSectionForm.tsx | 111 + components/forms/EducationForm.tsx | 329 + components/forms/ExperienceForm.tsx | 330 + components/forms/HeaderForm.tsx | 300 + components/forms/ProjectForm.tsx | 215 + components/forms/SkillsForm.tsx | 153 + components/ui/button.tsx | 58 + components/ui/checkbox.tsx | 30 + components/ui/dialog.tsx | 122 + components/ui/input.tsx | 25 + components/ui/label.tsx | 26 + components/ui/select.tsx | 160 + components/ui/skeleton.tsx | 15 + components/ui/tabs.tsx | 55 + components/ui/tooltip.tsx | 30 + convex/README.md | 90 + convex/_generated/api.d.ts | 37 + convex/_generated/api.js | 23 + convex/_generated/dataModel.d.ts | 61 + convex/_generated/server.d.ts | 143 + convex/_generated/server.js | 90 + convex/auth.config.ts | 8 + convex/resume.ts | 700 ++ convex/schema.ts | 128 + convex/tsconfig.json | 25 + lib/documents.jsonl | 37 + lib/font.ts | 17 + lib/migrateResumes.js | 15 + lib/motion.js | 15 + lib/tipsData.tsx | 64 + lib/use-preview.ts | 18 + lib/useMobile.tsx | 22 + lib/utils.ts | 6 + next.config.mjs | 4 + package-lock.json | 8834 +++++++++++++++++ package.json | 62 + postcss.config.mjs | 8 + providers/ConvexAndClerk.tsx | 21 + providers/NextLoader.tsx | 22 + providers/ScreenProvider.tsx | 41 + providers/TemplateWrapper.tsx | 35 + public/image.png | Bin 0 -> 168586 bytes public/next.svg | 1 + public/vercel.svg | 1 + tailwind.config.ts | 82 + templates/template1/Temp1Types.tsx | 61 + templates/template1/Template1.tsx | 354 + templates/template1/temp1obj.tsx | 152 + templates/template2/Template2.tsx | 341 + templates/template2/temp2Types.tsx | 59 + templates/template2/temp2obj.tsx | 138 + templates/template3/Template3.tsx | 360 + templates/template3/temp3obj.tsx | 152 + templates/template3/temp3types.tsx | 0 templates/templateStructures.tsx | 154 + tsconfig.json | 26 + types/templateTypes.tsx | 135 + vercel.json | 8 + 100 files changed, 17780 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/(auth)/layout.tsx create mode 100644 app/(auth)/sign-in/[[...sign-in]]/page.tsx create mode 100644 app/(auth)/sign-up/[[...sign-up]]/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/layout.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/custom/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/education/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/experience/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/final/layout.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/final/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/header/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/projects/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/section/skills/page.tsx create mode 100644 app/(resume)/build-resume/[id]/(edit)/tips/page.tsx create mode 100644 app/(resume)/build-resume/[id]/download/page.tsx create mode 100644 app/(resume)/build-resume/steps/page.tsx create mode 100644 app/(resume)/build-resume/templates/page.tsx create mode 100644 app/(resume)/my-resumes/page.tsx create mode 100644 app/api/generateJD/route.ts create mode 100644 app/api/generatePD/route.ts create mode 100644 app/favicon.ico create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/page.tsx create mode 100644 components.json create mode 100644 components/ChooseTemplates.tsx create mode 100644 components/ContineBtn.tsx create mode 100644 components/HeaderSkeleton.tsx create mode 100644 components/LiveResumePreview.tsx create mode 100644 components/MobilePreviewButton.tsx create mode 100644 components/Navbar.tsx create mode 100644 components/PreviewModal.tsx create mode 100644 components/QuillEditors/QuillEditor.tsx create mode 100644 components/QuillEditors/QuillExp.tsx create mode 100644 components/QuillEditors/QuillProject.tsx create mode 100644 components/SectionInfo.tsx create mode 100644 components/SocialLinkField.tsx create mode 100644 components/TipsSkeleton.tsx create mode 100644 components/VerticalTimeline.tsx create mode 100644 components/forms/CustomForm.tsx create mode 100644 components/forms/CustomSectionForm.tsx create mode 100644 components/forms/EducationForm.tsx create mode 100644 components/forms/ExperienceForm.tsx create mode 100644 components/forms/HeaderForm.tsx create mode 100644 components/forms/ProjectForm.tsx create mode 100644 components/forms/SkillsForm.tsx create mode 100644 components/ui/button.tsx create mode 100644 components/ui/checkbox.tsx create mode 100644 components/ui/dialog.tsx create mode 100644 components/ui/input.tsx create mode 100644 components/ui/label.tsx create mode 100644 components/ui/select.tsx create mode 100644 components/ui/skeleton.tsx create mode 100644 components/ui/tabs.tsx create mode 100644 components/ui/tooltip.tsx create mode 100644 convex/README.md create mode 100644 convex/_generated/api.d.ts create mode 100644 convex/_generated/api.js create mode 100644 convex/_generated/dataModel.d.ts create mode 100644 convex/_generated/server.d.ts create mode 100644 convex/_generated/server.js create mode 100644 convex/auth.config.ts create mode 100644 convex/resume.ts create mode 100644 convex/schema.ts create mode 100644 convex/tsconfig.json create mode 100644 lib/documents.jsonl create mode 100644 lib/font.ts create mode 100644 lib/migrateResumes.js create mode 100644 lib/motion.js create mode 100644 lib/tipsData.tsx create mode 100644 lib/use-preview.ts create mode 100644 lib/useMobile.tsx create mode 100644 lib/utils.ts create mode 100644 next.config.mjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 providers/ConvexAndClerk.tsx create mode 100644 providers/NextLoader.tsx create mode 100644 providers/ScreenProvider.tsx create mode 100644 providers/TemplateWrapper.tsx create mode 100644 public/image.png create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 tailwind.config.ts create mode 100644 templates/template1/Temp1Types.tsx create mode 100644 templates/template1/Template1.tsx create mode 100644 templates/template1/temp1obj.tsx create mode 100644 templates/template2/Template2.tsx create mode 100644 templates/template2/temp2Types.tsx create mode 100644 templates/template2/temp2obj.tsx create mode 100644 templates/template3/Template3.tsx create mode 100644 templates/template3/temp3obj.tsx create mode 100644 templates/template3/temp3types.tsx create mode 100644 templates/templateStructures.tsx create mode 100644 tsconfig.json create mode 100644 types/templateTypes.tsx create mode 100644 vercel.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e1e047 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local +.env +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/README.md b/README.md new file mode 100644 index 0000000..c403366 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/app/(auth)/layout.tsx b/app/(auth)/layout.tsx new file mode 100644 index 0000000..dc75d69 --- /dev/null +++ b/app/(auth)/layout.tsx @@ -0,0 +1,11 @@ +import React, { ReactNode } from 'react' + +const AuthLayout = ({children} : {children : ReactNode}) => { + return ( +
+ Change the theme color and font of your resume if you want... +
+Reorder the sections if you want...
++ This is for all the title text that you can see in the resume.. +
++ This is for all the borders or designs that you can see in the + resume. +
++ Choose a font style for your resume... +
++ {currentTips?.bottomText} +
+Template not found
+Error: Template not found
++ Your resume has been professionally formatted and is ready for + download. +
++ When downloading, select 'Save as Pdf' and Paper + Size 'ISO A4' to ensure the resume text remains + selectable, allowing easy copy-pasting by recruiters. +
++ Take a moment to review your resume one last time before + sharing it with potential employers. +
++ Downloading may take few seconds so kindly be patient... +
+ )} ++ Say hello to ResumeCraft +
++ Resume Craft gives you the tools and guidance you need to create a + truly professional resume that highlights your skills and + experience. +
++ Choose from our collection of pre-designed templates tailored + for various industries and career levels. +
++ Utilize our AI-powered content suggestions to effectively + describe your skills, experience, and achievements. +
++ Fine-tune your resume's layout, style, and content to make + it uniquely yours and stand out to employers. +
++ Start with a solid foundation — select a template and build your + perfect resume. +
++ Select a template and contine building your perfect resume. +
+dAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJw b z_^v8bbg` SAn{I*4bH$u(RZ6*x UhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=p C^ S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk( $?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU ^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvh CL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c 70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397* _cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111a H}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*I cmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU &68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-= A= yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v #ix45EVrcEhr>!NMhprl $InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~ &^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7< 4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}sc Zlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+ 9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2 `1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M =hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S( O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..5ff4475 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,129 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + img { + @apply inline-block; + } +} +@layer base { + :root { + --background: 345 83% 97%; + --foreground: 240 10% 3.9%; + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + --primary: 346.8 77.2% 49.8%; + --primary-foreground: 355.7 100% 97.3%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + --ring: 346.8 77.2% 49.8%; + --radius: 0.5rem; + } + + .dark { + --background: 20 14.3% 4.1%; + --foreground: 0 0% 95%; + --card: 24 9.8% 10%; + --card-foreground: 0 0% 95%; + --popover: 0 0% 9%; + --popover-foreground: 0 0% 95%; + --primary: 346.8 77.2% 49.8%; + --primary-foreground: 355.7 100% 97.3%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 15%; + --muted-foreground: 240 5% 64.9%; + --accent: 12 6.5% 15.1%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 85.7% 97.3%; + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + --ring: 346.8 77.2% 49.8%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground !overflow-x-hidden; + } +} + +.quill-content ul { + list-style-type: disc; + padding-left: 1em; +} + +.quill-content ol { + list-style-type: decimal; + padding-left: 1em; +} + +.quill-content li { + margin-bottom: 0.3em; +} + +body { + padding: 0px; + margin: 0px; +} + +@layer utilities { + /* Hide scrollbar for Chrome, Safari and Opera */ + .no-scrollbar::-webkit-scrollbar { + display: none; + } + /* Hide scrollbar for IE, Edge and Firefox */ + .no-scrollbar { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + } +} + +@media print { + #no-print { + display: none; + } + + #pdf { + display: block; + } + + body { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + #hello { + transform: none !important; /* Reset any transforms */ + position: absolute !important; + top: 0 !important; + left: 0 !important; + width: 100% !important; + height: 100% !important; + border-radius: 0 !important; + } +} + +@page { + size: auto; + margin: 0mm; +} +.radial { + background: radial-gradient(circle, #fff, #ffe4e6); +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..be2bf11 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,39 @@ +import type { Metadata } from "next"; +import "./globals.css"; +import ConvexAndClerk from "@/providers/ConvexAndClerk"; +import { Toaster } from "react-hot-toast"; +import { poppinsFont } from "@/lib/font"; +import React from "react"; +import { Analytics } from "@vercel/analytics/react"; +import { SpeedInsights } from "@vercel/speed-insights/next"; +import NextTopLoader from "nextjs-toploader"; +import { useRouter } from "next/navigation"; +import NextLoader from "@/providers/NextLoader"; + +export const metadata: Metadata = { + title: "Resume Craft", + description: "Craft a winning resume in minutes", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + + return ( + + + + {/* + + + ); +} diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..c90c730 --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,142 @@ +"use client"; +import Navbar from "@/components/Navbar"; +import { Button } from "@/components/ui/button"; +import { motion } from "framer-motion"; +import { container, item } from "@/lib/motion"; +import { geologicaFont, poppinsFont } from "@/lib/font"; +import { ArrowRight, Check } from "lucide-react"; +import React, { useEffect, useRef, useState } from "react"; +import { temp2Obj } from "@/templates/template2/temp2obj"; +import Template2 from "@/templates/template2/Template2"; +import { useRouter } from "next/navigation"; +import Template1 from "@/templates/template1/Template1"; +import temp1Obj from "@/templates/template1/temp1obj"; +import useMobile from "@/lib/useMobile"; + +export default function Home() { + + const router = useRouter(); + const isMobile = useMobile(); + + // const oneTimeRef = useRef(false); + // const migration = useMutation(api.resume.migrateResumes); + + // useEffect(() => { + // if (!oneTimeRef.current) { + // const promise = migration() + // .then((res) => { + // console.log(res, "yes"); + // }) + // .catch((err) => { + // console.log(err, "no"); + // }); + // oneTimeRef.current = true; + // } + // }, []); + + return ( +*/} + */} ++ + + + {children} + {/* ++ ); +} diff --git a/components.json b/components.json new file mode 100644 index 0000000..15f2b02 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "app/globals.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} \ No newline at end of file diff --git a/components/ChooseTemplates.tsx b/components/ChooseTemplates.tsx new file mode 100644 index 0000000..e5dfb54 --- /dev/null +++ b/components/ChooseTemplates.tsx @@ -0,0 +1,148 @@ +"use client"; +import { Button } from "./ui/button"; +import { Edit, Eye } from "lucide-react"; +import { useUser } from "@clerk/nextjs"; +import { useMutation, useQuery } from "convex/react"; +import { api } from "@/convex/_generated/api"; +import { redirect } from "next/navigation"; +import toast from "react-hot-toast"; +import { Id } from "@/convex/_generated/dataModel"; +import { Skeleton } from "./ui/skeleton"; +import { + templateComponents, + TemplateComponentType, +} from "@/templates/templateStructures"; +import { ResumeTemplate } from "@/types/templateTypes"; +import { usePreview } from "@/lib/use-preview"; +import PreviewModal from "./PreviewModal"; +import { cn } from "@/lib/utils"; +import React from "react"; +import { useRouter } from "nextjs-toploader/app"; +import Template3 from "@/templates/template3/Template3"; +import temp1Obj from "@/templates/template1/temp1obj"; +import temp3obj from "@/templates/template3/temp3obj"; + +const ChooseTemplates = ({ myResumes = false }: { myResumes?: boolean }) => { + const { user } = useUser(); + const createUserResume = useMutation(api.resume.createUserResume); + const router = useRouter(); + const templates = useQuery(api.resume.getTemplates); + const myResumeTemplates = useQuery(api.resume.getUserResumes, { + userId: user?.id || "", + }); + const preview = usePreview(); + + const finalTemplates = myResumes ? myResumeTemplates : templates; + + if (finalTemplates === undefined) { + return+ +++ {/* Content Section */} +++ + + {/* Template Preview */} ++ {/* Heading */} +++ Transform Your Experience into an Impactful Resume + + + {/* Description */} ++ {!isMobile && ( + Create standout resumes and impress employers. + )} + Our user-friendly builder offers customizable templates to + ensure your resume is job-ready. + + + {/* Features List */} ++ {[ + "ATS-optimized resumes", + "Professional templates tto industry standards", + "Customizable layouts for personal branding", + "Real-time preview to ensure perfection", + "Save hours with easy-to-use tools", + ].map((feature, index) => ( + + + {/* CTA Button */} ++ + ))} ++ {feature} + + + ++ + ++ + ++ ; + } + if (finalTemplates.length === 0) { + return ( + ++ ); + } + if (!user) { + return redirect("/sign-up"); + } + + const selectResume = async (id: Id<"resumes">, templateName: string) => { + createUserResume({ + id: id, + userId: user?.id, + templateName: templateName, + }) + .then((res) => { + return router.push(`/build-resume/${res}/tips?sec=header`); + }) + .catch((err) => { + console.log(err); + toast.error("Something went wrong..."); + }); + }; + + const editResume = (resumeId: Id<"resumes">) => { + router.push(`/build-resume/${resumeId}/tips?sec=header`); + }; + + return ( ++ {myResumes ? "No resumes found" : "No templates found"} +
++ {finalTemplates?.map((item, index) => { + const TemplateComponent: TemplateComponentType = + templateComponents[item.templateName]; + + if (!TemplateComponent) { + console.error( + `No component found for template: ${item.templateName}` + ); + return null; + } + + return ( ++ ); +}; + +const ChooseSkeleton = () => { + return ( +++ ); + })} + {/*++ ++ + + ++*/} + +++ + {[1, 2, 3, 4, 5, 6, 7, 8].map((item) => ( ++ ); +}; + +export default ChooseTemplates; diff --git a/components/ContineBtn.tsx b/components/ContineBtn.tsx new file mode 100644 index 0000000..0c34570 --- /dev/null +++ b/components/ContineBtn.tsx @@ -0,0 +1,47 @@ +"use client"; +import { cn } from "@/lib/utils"; +import { Button } from "./ui/button"; +import { motion } from "framer-motion"; +import { useRouter } from "nextjs-toploader/app"; +import useMobile from "@/lib/useMobile"; +import { ArrowLeft, ArrowRight } from "lucide-react"; + +const ContineBtn = ({ + path, + type, + text, +}: { + path: string; + type: string; + text: string; +}) => { + const router = useRouter(); + const isMobile = useMobile(); + + return ( +++ ))} ++ + + + ); +}; + +export default ContineBtn; diff --git a/components/HeaderSkeleton.tsx b/components/HeaderSkeleton.tsx new file mode 100644 index 0000000..993bada --- /dev/null +++ b/components/HeaderSkeleton.tsx @@ -0,0 +1,24 @@ +import React from "react"; +import { Skeleton } from "./ui/skeleton"; + +const HeaderSkeleton = () => { + return ( +++ ); +}; + +export default HeaderSkeleton; diff --git a/components/LiveResumePreview.tsx b/components/LiveResumePreview.tsx new file mode 100644 index 0000000..ceb7f9e --- /dev/null +++ b/components/LiveResumePreview.tsx @@ -0,0 +1,147 @@ +"use client"; +import { useParams, usePathname } from "next/navigation"; +import React from "react"; +import { useQuery } from "convex/react"; +import { api } from "@/convex/_generated/api"; +import { Id } from "@/convex/_generated/dataModel"; +import { motion } from "framer-motion"; +import ContineBtn from "./ContineBtn"; +import { Skeleton } from "./ui/skeleton"; +import { ResumeTemplate } from "@/types/templateTypes"; +import Template1 from "@/templates/template1/Template1"; +import Template2 from "@/templates/template2/Template2"; +import { cn } from "@/lib/utils"; +import { + geologicaFont, + interFont, + montserratFont, + openSansFont, + poppinsFont, + ralewayFont, +} from "@/lib/font"; + +type TemplateComponentType = React.ComponentType<{ + obj: ResumeTemplate; + isPreview: boolean; + isLive?: boolean; + size: "sm" | "md" | "lg"; +}>; + +const templateComponents: Record+++ + +++ + + + + + + = { + Template1: Template1, + Template2: Template2, +}; + +const LiveResumePreview = () => { + const params = useParams(); + const templateDetails = useQuery(api.resume.getTemplateDetails, { + id: params.id as Id<"resumes">, + }); + const pathname = usePathname(); + const sectionType = pathname.split("/section/")[1]; + + let sectionArray: string[] = []; + templateDetails?.sections?.map((item) => sectionArray.push(item.type)); + let currentIndex = sectionArray.findIndex((item) => item === sectionType); + + if (templateDetails === null) { + return Template not found; + } + + if (templateDetails === undefined) { + return; + } + const backLocation = `/build-resume/${params.id}/tips?sec=${sectionArray[currentIndex]}`; + const nextLocation = + sectionType === "custom" + ? `/build-resume/${params.id}/section/final` + : sectionArray[currentIndex + 1] + ? `/build-resume/${params.id}/tips?sec=${sectionArray[currentIndex + 1]}` + : `/build-resume/${params.id}/section/custom`; + + const TemplateComponent = templateComponents[templateDetails.templateName]; + + if (!TemplateComponent) { + console.error( + `No component found for template: ${templateDetails.templateName}` + ); + return Error: Template not found; + } + + return ( + <> +++ + {sectionType && ( ++ ++ + + )} + > + ); +}; + +const ResumeSkeleton = () => { + return ( ++++ + ++ ); +}; + +export default LiveResumePreview; diff --git a/components/MobilePreviewButton.tsx b/components/MobilePreviewButton.tsx new file mode 100644 index 0000000..b22e120 --- /dev/null +++ b/components/MobilePreviewButton.tsx @@ -0,0 +1,35 @@ +"use client"; +import React from "react"; +import { Button } from "@/components/ui/button"; +import { Eye } from "lucide-react"; +import { motion } from "framer-motion"; +import { usePreview } from "@/lib/use-preview"; +import temp1Obj from "@/templates/template1/temp1obj"; +import { ResumeTemplate } from "@/types/templateTypes"; + +const MobilePreviewButton = ({ item }: { item: ResumeTemplate }) => { + const preview = usePreview(); + const handlePreview = () => { + if (preview) { + preview.onOpen(item); + } + }; + + return ( ++ + {!preview.isOpen && } + + ); +}; + +export default MobilePreviewButton; diff --git a/components/Navbar.tsx b/components/Navbar.tsx new file mode 100644 index 0000000..6cea058 --- /dev/null +++ b/components/Navbar.tsx @@ -0,0 +1,147 @@ +"use client"; +import { ChevronDown, File, Menu, X } from "lucide-react"; +import { Button } from "./ui/button"; +import { SignInButton, SignUpButton, UserButton, useUser } from "@clerk/nextjs"; +import Link from "next/link"; +import { poppinsFont } from "@/lib/font"; +import { Skeleton } from "./ui/skeleton"; +import { useRouter } from "nextjs-toploader/app"; +import { useState } from "react"; +import { cn } from "@/lib/utils"; + +const Navbar = () => { + const { user, isLoaded, isSignedIn } = useUser(); + const router = useRouter(); + const [isMenuOpen, setIsMenuOpen] = useState(false); + + const toggleMenu = () => { + setIsMenuOpen(!isMenuOpen); + }; + + return ( + <> + {/* Backdrop */} + {isMenuOpen && ( +setIsMenuOpen(false)} + /> + )} + +++ > + ); +}; + +export default Navbar; diff --git a/components/PreviewModal.tsx b/components/PreviewModal.tsx new file mode 100644 index 0000000..04529a7 --- /dev/null +++ b/components/PreviewModal.tsx @@ -0,0 +1,48 @@ +import { usePreview } from "@/lib/use-preview"; +import React from "react"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "./ui/dialog"; +import { ResumeTemplate } from "@/types/templateTypes"; +import { + templateComponents, + TemplateComponentType, +} from "@/templates/templateStructures"; + +const PreviewModal = () => { + const preview = usePreview(); + + const TemplateComponent: TemplateComponentType | null = + preview?.currentTemplate + ? templateComponents[preview?.currentTemplate.templateName] + : null; + + if (!TemplateComponent) return null; + + return ( + + ); +}; + +export default PreviewModal; diff --git a/components/QuillEditors/QuillEditor.tsx b/components/QuillEditors/QuillEditor.tsx new file mode 100644 index 0000000..f2db708 --- /dev/null +++ b/components/QuillEditors/QuillEditor.tsx @@ -0,0 +1,57 @@ +"use client"; +import React, { useState } from "react"; +import dynamic from "next/dynamic"; +import "react-quill/dist/quill.snow.css"; +import { motion } from "framer-motion"; +import axios from "axios"; +import toast from "react-hot-toast"; +import { poppinsFont } from "@/lib/font"; +import { Label } from "../ui/label"; + +const QuillEditor = dynamic(() => import("react-quill"), { ssr: false }); + +interface QuillEditorComponentProps { + value: string; + onChange: (content: string) => void; + label: string; + currentFormat?: string; + placeholder?: string; +} + +export default function QuillEditorComponent({ + value, + onChange, + label, + currentFormat, + placeholder +}: QuillEditorComponentProps) { + + + const quillModules = { + toolbar: [ + ["bold", "italic", "underline"], + [{ list: "ordered" }, { list: "bullet" }, { list: "check" }], + ["link"], + ], + }; + + const quillFormats = ["bold", "italic", "underline", "list", "bullet","link"]; + + return ( ++ {/* Logo Section */} ++ +++ + {/* Mobile Menu Button */} + + + {/* Loading State */} + {!isLoaded && ( ++ + + ResumeCraft +
+ +++ )} + + {/* Desktop Navigation */} + {isSignedIn && ( ++ + + + ++ )} + + {!isSignedIn && isLoaded && ( +{user?.firstName}
++ + ++ )} ++ +++++ {isSignedIn ? ( + <> ++++ + > + ) : ( + isLoaded && ( ++ {user?.firstName}
++ ++ ) + )} ++ +++ + + ); +} diff --git a/components/QuillEditors/QuillExp.tsx b/components/QuillEditors/QuillExp.tsx new file mode 100644 index 0000000..5d583f8 --- /dev/null +++ b/components/QuillEditors/QuillExp.tsx @@ -0,0 +1,178 @@ +"use client"; +import React, { useState } from "react"; +import dynamic from "next/dynamic"; +import "react-quill/dist/quill.snow.css"; +import { motion } from "framer-motion"; +import { LinkIcon, Loader2, WandSparkles } from "lucide-react"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import axios from "axios"; +import { Button } from "../ui/button"; +import { Label } from "../ui/label"; +import toast from "react-hot-toast"; + +const QuillEditor = dynamic(() => import("react-quill"), { ssr: false }); + +interface QuillEditorComponentProps { + value: string; + onChange: (content: string) => void; + label: string; + companyName: string; + role: string; +} + +export default function QuillExpEditor({ + value, + onChange, + label, + companyName, + role, +}: QuillEditorComponentProps) { + const [generatedContent, setGeneratedContent] = useState(""); + const [tempValue, setTempValue] = useState(""); + const [loading, setLoading] = useState(false); + const [dialogIsOpen, setDialogIsOpen] = useState(false); + + const quillModules = { + toolbar: [ + ["bold", "italic", "underline"], + [{ list: "ordered" }, { list: "bullet" }], + ["link"], // Add link button to toolbar + ], + }; + + const quillFormats = ["bold", "italic", "underline", "list", "bullet","link"]; + + const handleGenerate = async () => { + try { + setLoading(true); + const response = await axios.post( + `${process.env.NEXT_PUBLIC_WEBSITE_URL}/api/generateJD`, + { companyName: companyName, role: role, jobDescription: tempValue } + ); + const listItems = response.data.textArray + .map((item: string) => `+ ${item} `) + .join(""); + const generatedHtml = `${listItems}
`; + setGeneratedContent(generatedHtml); + setLoading(false); + } catch (error) { + console.log(error); + toast.error("Something went wrong Quill Experience"); + } + }; + + const continueData = () => { + onChange(generatedContent); + setTempValue(""); + setGeneratedContent(""); + setDialogIsOpen(false); + }; + + const cancelData = () => { + setDialogIsOpen(false); + setGeneratedContent(""); + }; + + return ( ++ + ); +} diff --git a/components/QuillEditors/QuillProject.tsx b/components/QuillEditors/QuillProject.tsx new file mode 100644 index 0000000..fd7c86c --- /dev/null +++ b/components/QuillEditors/QuillProject.tsx @@ -0,0 +1,171 @@ +"use client"; +import React, { useState } from "react"; +import dynamic from "next/dynamic"; +import "react-quill/dist/quill.snow.css"; +import { motion } from "framer-motion"; +import { Loader2, WandSparkles } from "lucide-react"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import axios from "axios"; +import { Button } from "../ui/button"; +import { Label } from "../ui/label"; +import toast from "react-hot-toast"; + +const QuillEditor = dynamic(() => import("react-quill"), { ssr: false }); + +interface QuillEditorComponentProps { + value: string; + onChange: (content: string) => void; + label: string; + projectTitle: string; +} + +export default function QuillProjectEditor({ + value, + onChange, + label, + projectTitle, +}: QuillEditorComponentProps) { + const [generatedContent, setGeneratedContent] = useState(""); + const [loading, setLoading] = useState(false); + const [dialogIsOpen, setDialogIsOpen] = useState(false); + const [tempValue, setTempValue] = useState(""); + + const quillModules = { + toolbar: [ + ["bold", "italic", "underline"], + [{ list: "ordered" }, { list: "bullet" }], + ["link"], + ], + }; + + const quillFormats = ["bold", "italic", "underline", "list", "bullet","link"]; + + const handleGenerate = async () => { + try { + setLoading(true); + const response = await axios.post( + `${process.env.NEXT_PUBLIC_WEBSITE_URL}/api/generatePD`, + { projectTitle: projectTitle, projectDescription: tempValue } + ); + const listItems = response.data.textArray + .map((item: string) => `+ + + +++ + ++ + ++ ${item} `) + .join(""); + const generatedHtml = `${listItems}
`; + setGeneratedContent(generatedHtml); + setLoading(false); + } catch (error) { + toast.error("Something went wrong Quill Project"); + } + }; + + const continueData = () => { + onChange(generatedContent); + setTempValue(""); + setGeneratedContent(""); + setDialogIsOpen(false); + }; + + const cancelData = () => { + setDialogIsOpen(false); + setGeneratedContent(""); + }; + + return ( ++ + ); +} diff --git a/components/SectionInfo.tsx b/components/SectionInfo.tsx new file mode 100644 index 0000000..4033d0e --- /dev/null +++ b/components/SectionInfo.tsx @@ -0,0 +1,29 @@ +"use client"; +import { cn } from "@/lib/utils"; +import React from "react"; +import { motion } from "framer-motion"; +import { item } from "@/lib/motion"; +import { poppinsFont } from "@/lib/font"; + +interface SectionInfoTypes { + heading: string; + text: string; +} + +const SectionInfo = ({ heading, text }: SectionInfoTypes) => { + return ( ++ + + + + +++ + + ); +}; + +export default SectionInfo; diff --git a/components/SocialLinkField.tsx b/components/SocialLinkField.tsx new file mode 100644 index 0000000..811e3ba --- /dev/null +++ b/components/SocialLinkField.tsx @@ -0,0 +1,74 @@ +import React from 'react'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Github, Linkedin, Globe, Twitter, Instagram, Link } from 'lucide-react'; + +interface SocialLinkFieldProps { + value: { type: string; url: string }; + onChange: (value: { type: string; url: string }) => void; + onRemove: () => void; +} + +const socialOptions = [ + { value: 'github', label: 'GitHub', icon: Github }, + { value: 'linkedin', label: 'LinkedIn', icon: Linkedin }, + { value: 'portfolio', label: 'Portfolio', icon: Globe }, + { value: 'twitter', label: 'Twitter', icon: Twitter }, + { value: 'instagram', label: 'Instagram', icon: Instagram }, + { value: 'other', label: 'Other', icon: Link }, +]; + +const SocialLinkField: React.FC+ {heading} +
+{text}
+= ({ value, onChange, onRemove }) => { + const handleTypeChange = (newType: string) => { + onChange({ ...value, type: newType }); + }; + + const handleUrlChange = (e: React.ChangeEvent ) => { + onChange({ ...value, url: e.target.value }); + }; + + const selectedOption = socialOptions.find(option => option.value === value.type) || socialOptions[socialOptions.length - 1]; + const Icon = selectedOption.icon; + + return ( + ++ ); +}; + +export default SocialLinkField; \ No newline at end of file diff --git a/components/TipsSkeleton.tsx b/components/TipsSkeleton.tsx new file mode 100644 index 0000000..c4a8a26 --- /dev/null +++ b/components/TipsSkeleton.tsx @@ -0,0 +1,29 @@ +import React from "react"; +import { Skeleton } from "./ui/skeleton"; + +const TipsSkeleton = () => { + return ( ++ + +++ ++ ++++ + ++ ); +}; + +export default TipsSkeleton; diff --git a/components/VerticalTimeline.tsx b/components/VerticalTimeline.tsx new file mode 100644 index 0000000..712d775 --- /dev/null +++ b/components/VerticalTimeline.tsx @@ -0,0 +1,169 @@ +import React, { useEffect, useState } from "react"; +import { api } from "@/convex/_generated/api"; +import { Id } from "@/convex/_generated/dataModel"; +import { useQuery } from "convex/react"; +import { + Baseline, + Brain, + FolderKanban, + GraduationCap, + LineChart, + PenToolIcon, + User, +} from "lucide-react"; +import { + redirect, + useParams, + usePathname, + useSearchParams, +} from "next/navigation"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "./ui/tooltip"; +import Link from "next/link"; +import { Button } from "./ui/button"; +import { useRouter } from "nextjs-toploader/app"; + +const Timeline = () => { + const params = useParams(); + const router = useRouter(); + const resumeId = params.id; + const [isMobile, setIsMobile] = useState(false); + + const resume = useQuery(api.resume.getTemplateDetails, { + id: resumeId as Id<"resumes">, + }); + + const pathname = usePathname(); + const currentSec = pathname.split("section/")[1]; + + const searchParams = useSearchParams(); + const sec = searchParams.get("sec"); + + useEffect(() => { + const checkMobile = () => { + setIsMobile(window.innerWidth <= 768); + }; + + checkMobile(); + window.addEventListener("resize", checkMobile); + return () => window.removeEventListener("resize", checkMobile); + }, []); + + let sectionArray: string[] = []; + resume?.sections?.map((item) => { + item.type !== "custom" && sectionArray.push(item.type); + }); + sectionArray.push("custom"); + sectionArray.push("final"); + + const sectionIconMap: any = { + header: User, + experience: LineChart, + education: GraduationCap, + skills: Brain, + projects: FolderKanban, + final: Baseline, + custom: PenToolIcon, + }; + + const TimelineItem = ({ + section, + index, + total, + }: { + section: string; + index: number; + total: number; + }) => { + const SectionIcon = sectionIconMap[section]; + + return ( +++++ + {/* BUTTONS DIV */} ++ +++ +++ + +++ + ++ ); + }; + + return ( +++ ++ ++ ++ + +++ ++++ + +{section}
++ ++ ); +}; + +export default Timeline; \ No newline at end of file diff --git a/components/forms/CustomForm.tsx b/components/forms/CustomForm.tsx new file mode 100644 index 0000000..1909752 --- /dev/null +++ b/components/forms/CustomForm.tsx @@ -0,0 +1,138 @@ +import { Id } from "@/convex/_generated/dataModel"; +import React, { useEffect, useMemo, useRef, useState } from "react"; +import { Label } from "../ui/label"; +import { Input } from "../ui/input"; +import QuillEditorComponent from "../QuillEditors/QuillEditor"; +import { Button } from "../ui/button"; +import { debounce } from "lodash"; +import { useMutation, useQuery } from "convex/react"; +import { api } from "@/convex/_generated/api"; +import { XIcon } from "lucide-react"; + +const CustomForm = ({ + resumeId, + styles, + item, +}: { + resumeId: Id<"resumes">; + styles: string; + item: string; +}) => { + interface SectionItem { + sectionTitle: string; + sectionDescription: string; + sectionNumber: number; + } + + const [sectionsContent, setSectionsContent] = useState+ +++ {sectionArray.map((section, index) => ( +++ ))} + ([ + { sectionTitle: "", sectionDescription: "", sectionNumber: 1 }, + ]); + const update = useMutation(api.resume.updateCustomSection); + const removeSectionUpdate = useMutation(api.resume.removeCustomSection); + const pendingChangesRef = useRef(false); + + const handleAddSection = () => { + setSectionsContent([ + ...sectionsContent, + { + sectionTitle: "", + sectionDescription: "", + sectionNumber: sectionsContent.length + 1, + }, + ]); + }; + + const debouncedUpdate = useMemo(() => { + return debounce((newSection: SectionItem[], index: number) => { + update({ id: resumeId, content: newSection[index] }); + pendingChangesRef.current = false; + }, 400); + }, [update, resumeId]); + + const handleTitleChange = (index: number, value: string) => { + pendingChangesRef.current = true; + setSectionsContent((prev) => { + const updatedSections = [...prev]; + updatedSections[index].sectionTitle = value; + debouncedUpdate(updatedSections, index); + return updatedSections; + }); + }; + + const handleDescriptionChange = (index: number, value: string) => { + pendingChangesRef.current = true; + setSectionsContent((prev) => { + const updatedSections = [...prev]; + updatedSections[index].sectionDescription = value; + debouncedUpdate(updatedSections, index); + return updatedSections; + }); + }; + + const initialData = useQuery(api.resume.getCustomSections, { id: resumeId }); + useEffect(() => { + if (initialData && initialData.length > 0 && !pendingChangesRef.current) { + const modified: any[] = initialData.map((item) => item.content); + setSectionsContent(modified); + } + }, [initialData]); + + const debouncedRemoveUpdate = useMemo(() => { + return debounce((toRemoveSectionNumber: number) => { + removeSectionUpdate({ + id: resumeId, + sectionNumber: toRemoveSectionNumber, + }); + }, 400); + }, [removeSectionUpdate, resumeId]); + + const removeSection = (index: number) => { + const removedSection = sectionsContent.find( + (section) => section.sectionNumber === index + ); + const toRemoveSectionNumber = removedSection?.sectionNumber; + const filteredContent = sectionsContent.filter((_, i) => i + 1 !== index); + debouncedRemoveUpdate(toRemoveSectionNumber || 0); + setSectionsContent(filteredContent); + }; + + return ( + + {sectionsContent.map((section, index) => ( ++ ); +}; + +export default CustomForm; diff --git a/components/forms/CustomSectionForm.tsx b/components/forms/CustomSectionForm.tsx new file mode 100644 index 0000000..3c2c021 --- /dev/null +++ b/components/forms/CustomSectionForm.tsx @@ -0,0 +1,111 @@ +import React, { + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import { Id } from "@/convex/_generated/dataModel"; +import { debounce } from "lodash"; +import { useMutation } from "convex/react"; +import { api } from "@/convex/_generated/api"; +import QuillEditorComponent from "../QuillEditors/QuillEditor"; +import { Input } from "../ui/input"; +import { Label } from "../ui/label"; +import { Button } from "../ui/button"; +import { XIcon } from "lucide-react"; + +interface SectionItem { + sectionTitle: string; + sectionDescription: string; + sectionNumber: number; +} + +interface SkillsFormProps { + item: any; + resumeId: Id<"resumes">; + styles: any; +} + +const SkillsForm: React.FC++ ))} + ++ + {index !== 0 && ( ++ handleTitleChange(index, e.target.value)} + /> +removeSection(index + 1)} + className="mr-4 cursor-pointer" + width={16} + /> + )} + ++handleDescriptionChange(index, value)} + label="Section Description" + /> + = ({ item, resumeId, styles }) => { + const initialSection: SectionItem = { + sectionTitle: "", + sectionDescription: "", + sectionNumber: 0, + }; + + const [sectionContent, setSectionContent] = useState ([initialSection]); + const pendingChangesRef = useRef(false); + const update = useMutation(api.resume.updateCustomSection); + + const debouncedUpdate = useMemo(() => { + return debounce((newSection: SectionItem[], index: number) => { + update({ id: resumeId, content: newSection[index] }); + pendingChangesRef.current = false; + }, 400); + }, [update, resumeId]); + + const handleChange = useCallback( + (index: number, field: keyof SectionItem, value: string | boolean) => { + pendingChangesRef.current = true; + setSectionContent((prev) => { + const newSectionContent = prev.map((section, i) => + i === index ? { ...section, [field]: value } : section + ); + debouncedUpdate(newSectionContent, index); + return newSectionContent; + }); + }, + [debouncedUpdate] + ); + + useEffect(() => { + if (!pendingChangesRef.current && item?.content) { + setSectionContent(item.content.length > 0 ? item.content : [initialSection]); + } + }, [item?.content]); + + const addNewSection = () => { + setSectionContent((prev) => [...prev, { ...initialSection, sectionNumber: prev.length }]); + }; + + const removeSection = useCallback((index: number) => { + setSectionContent((prev) => { + const newContent = prev.filter((_, i) => i !== index).map((section, i) => ({ + ...section, + sectionNumber: i, + })); + debouncedUpdate(newContent, index); + return newContent; + }); + }, [debouncedUpdate]); + + return ( + + {sectionContent.map((section, index) => ( ++ ); +}; + +export default SkillsForm; \ No newline at end of file diff --git a/components/forms/EducationForm.tsx b/components/forms/EducationForm.tsx new file mode 100644 index 0000000..9ac732d --- /dev/null +++ b/components/forms/EducationForm.tsx @@ -0,0 +1,329 @@ +"use client"; + +import React, { + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import { Label } from "../ui/label"; +import { Input } from "../ui/input"; +import debounce from "lodash/debounce"; +import { useMutation } from "convex/react"; +import { api } from "@/convex/_generated/api"; +import { Id } from "@/convex/_generated/dataModel"; +import { Button } from "../ui/button"; +import { motion } from "framer-motion"; +import "react-date-picker/dist/DatePicker.css"; +import "react-calendar/dist/Calendar.css"; +import { EducationSection } from "@/types/templateTypes"; +import { Checkbox } from "../ui/checkbox"; +import { XIcon } from "lucide-react"; + +interface EducationItem { + courseName: string; + instituteName: string; + location: string; + grade: string; + startMonth: string; + startYear: string; + endMonth: string; + endYear: string; + studyingHere: boolean; +} + +interface EducationContent { + education: EducationItem[]; +} + +interface EducationFormProps { + item: EducationSection; + resumeId: Id<"resumes">; +} + +const EducationForm: React.FC++ ))} + ++ + {index !== 0 &&+ handleChange(index, "sectionTitle", e.target.value)} + value={section.sectionTitle} + placeholder="Section Title" + className="w-full mt-2 border border-muted-foreground" + /> +removeSection(index)} className="mr-4 cursor-pointer" width={16}/>} + ++handleChange(index, "sectionDescription", content)} + label="Section Description" + /> + = ({ item, resumeId }) => { + const emptyEducation: EducationItem = { + courseName: "", + instituteName: "", + location: "", + grade: "", + startMonth: "", + startYear: "", + endMonth: "", + endYear: "", + studyingHere: false, + }; + + const [education, setEducation] = useState ({ + education: [], + }); + const pendingChangesRef = useRef(false); + const update = useMutation(api.resume.updateEducation); + + useEffect(() => { + if (!pendingChangesRef.current) { + setEducation(item?.content as EducationContent); + } + }, [item?.content, pendingChangesRef]); + + const debouncedUpdate = useMemo(() => { + return debounce((newEducation: EducationContent) => { + update({ id: resumeId, content: newEducation }); + pendingChangesRef.current = false; + }, 400); + }, [update, resumeId]); + + const handleChange = useCallback( + (index: number) => (name: keyof EducationItem, value: string | boolean) => { + pendingChangesRef.current = true; + setEducation((prevEducation) => { + const newEducation = { ...prevEducation }; + const updatedItem = { ...newEducation.education[index] }; + + if (name === "studyingHere") { + updatedItem.studyingHere = value as boolean; + if (updatedItem.studyingHere) { + updatedItem.endMonth = ""; + updatedItem.endYear = "Present"; + } + } else { + updatedItem[name] = value as string; + } + + newEducation.education[index] = updatedItem; + debouncedUpdate(newEducation); + return newEducation; + }); + }, + [debouncedUpdate] + ); + + const addEducation = () => { + setEducation((prev) => ({ + education: [...prev.education, emptyEducation], + })); + }; + + const removeEducation = useCallback( + (index: number) => { + setEducation((prev) => { + const newEducation = { + ...prev, + education: prev.education.filter((_, i) => i !== index), + }; + debouncedUpdate(newEducation); + return newEducation; + }); + }, + [debouncedUpdate] + ); + + const months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ]; + const currentYear = new Date().getFullYear(); + const years = Array.from({ length: 30 }, (_, i) => + (currentYear - i).toString() + ); + + return ( + + {education?.education?.map((item, index) => ( ++ ); +}; + +interface InputFieldProps { + label: string; + name: keyof EducationItem; + value: string; + onChange: (name: keyof EducationItem, value: string) => void; + placeholder: string; + type?: "text" | "select"; + options?: string[]; + disabled?: boolean; +} + +const InputField: React.FC+ {index !== 0 && ( + + ))} +removeEducation(index)} + className="right-8 top-4 absolute cursor-pointer" + /> + )} + +++ + + + + + + + + ++ handleChange(index)("studyingHere", checked) + } + /> + + + + += ({ + label, + name, + value, + onChange, + placeholder, + type = "text", + options, + disabled = false, +}) => ( + + + {type === "select" ? ( + + ) : ( + onChange(name, e.target.value)} + placeholder={placeholder} + className="border bg-[#FFF5F5] border-muted-foreground" + disabled={disabled} + /> + )} + +); + +export default EducationForm; diff --git a/components/forms/ExperienceForm.tsx b/components/forms/ExperienceForm.tsx new file mode 100644 index 0000000..220bbd2 --- /dev/null +++ b/components/forms/ExperienceForm.tsx @@ -0,0 +1,330 @@ +import { api } from "@/convex/_generated/api"; +import { Id } from "@/convex/_generated/dataModel"; +import { useMutation } from "convex/react"; +import { debounce } from "lodash"; +import React, { + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import { Label } from "../ui/label"; +import { Input } from "../ui/input"; +import QuillExpEditor from "../QuillEditors/QuillExp"; +import { motion } from "framer-motion"; +import { Button } from "../ui/button"; +import { Checkbox } from "../ui/checkbox"; +import { XIcon } from "lucide-react"; + +interface ExperienceItem { + companyName: string; + role: string; + jobDescription: string; + location: string; + startMonth: string; + startYear: string; + endMonth: string; + endYear: string; + workingHere: boolean; +} + +interface ExperienceContent { + experience: ExperienceItem[]; +} + +const emptyExperienceItem: ExperienceItem = { + companyName: "", + role: "", + jobDescription: "", + location: "", + startMonth: "", + startYear: "", + endMonth: "", + endYear: "", + workingHere: false, +}; + +const ExperienceForm = ({ + resumeId, + item, +}: { + resumeId: Id<"resumes">; + item: any; +}) => { + const pendingChangesRef = useRef(false); + const [experience, setExperience] = useState({ + experience: [], + }); + const update = useMutation(api.resume.updateExperience); + + useEffect(() => { + if (!pendingChangesRef.current) { + setExperience(item?.content); + } + }, [item?.content, pendingChangesRef]); + + const debouncedUpdate = useMemo(() => { + return debounce((newExperience: ExperienceContent) => { + update({ id: resumeId, content: newExperience }); + pendingChangesRef.current = false; + }, 400); + }, [update, resumeId]); + + const handleChange = useCallback( + (index: number) => + (name: keyof ExperienceItem, value: string | boolean) => { + pendingChangesRef.current = true; + setExperience((prevExperience) => { + const newExperience = { ...prevExperience }; + const updatedItem = { ...newExperience.experience[index] }; + + if (name === "workingHere") { + updatedItem.workingHere = value as boolean; + if (updatedItem.workingHere) { + updatedItem.endMonth = ""; + updatedItem.endYear = "Present"; + } + } else { + updatedItem[name] = value as string; + } + newExperience.experience[index] = updatedItem; + debouncedUpdate(newExperience); + return newExperience; + }); + }, + [debouncedUpdate] + ); + + const addExperience = () => { + setExperience((prev) => ({ + experience: [...prev.experience, emptyExperienceItem], + })); + }; + + const removeEducation = useCallback( + (index: number) => { + setExperience((prev) => { + const newExperience = { + ...prev, + experience: prev.experience.filter((_, i) => i !== index), + }; + debouncedUpdate(newExperience); + return newExperience; + }); + }, + [debouncedUpdate] + ); + + const months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "July", + "Aug", + "Sept", + "Oct", + "Nov", + "Dec", + ]; + const currentYear = new Date().getFullYear(); + const years = Array.from({ length: 30 }, (_, i) => + (currentYear - i).toString() + ); + + return ( + <> + {experience.experience.map((exp, index) => ( + + {index !== 0 && ( + + ))} +removeEducation(index)} + className="right-8 top-4 absolute cursor-pointer" + /> + )} + +++ + + + + + + + ++ handleChange(index)("workingHere", checked) + } + /> + + +++ handleChange(index)("jobDescription", content) + } + /> + + + + > + ); +}; + +interface InputFieldProps { + label: string; + name: keyof ExperienceItem; + value: string; + onChange: (name: keyof ExperienceItem, value: string) => void; + placeholder: string; + type?: string; + options?: string[]; + disabled?: boolean; +} + +const InputField: React.FC= ({ + label, + name, + value, + onChange, + placeholder, + type = "text", + options, + disabled = false, +}) => ( + + + {type === "select" ? ( + + ) : ( + onChange(name, e.target.value)} + placeholder={placeholder} + className="border bg-[#FFF5F5] border-muted-foreground" + disabled={disabled} + /> + )} + +); + +export default ExperienceForm; diff --git a/components/forms/HeaderForm.tsx b/components/forms/HeaderForm.tsx new file mode 100644 index 0000000..1b16ebf --- /dev/null +++ b/components/forms/HeaderForm.tsx @@ -0,0 +1,300 @@ +import { api } from "@/convex/_generated/api"; +import { Doc, Id } from "@/convex/_generated/dataModel"; +import { useMutation, useQuery } from "convex/react"; +import { debounce } from "lodash"; +import React, { + ChangeEvent, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import QuillEditorComponent from "../QuillEditors/QuillEditor"; +import { motion } from "framer-motion"; +import { Label } from "../ui/label"; +import { Input } from "../ui/input"; +import { HeaderSection } from "@/types/templateTypes"; +import { + Github, + Globe, + Link, + Linkedin, + Plus, + Twitter, + XIcon, +} from "lucide-react"; + +interface SocialLink { + type: string; + name: string; + url: string; +} + +interface HeaderContent { + firstName: string; + lastName: string; + email: string; + phone: string; + location: string; + summary: string; + socialLinks: SocialLink[]; +} + +const initialHeader: HeaderContent = { + firstName: "", + lastName: "", + email: "", + phone: "", + location: "", + summary: "", + socialLinks: [], +}; + +const HeaderForm = ({ + resumeId, + item, +}: { + resumeId: Id<"resumes">; + item: HeaderSection; +}) => { + const [header, setHeader] = useState(initialHeader); + const [activeLink, setActiveLink] = useState(""); + const [activeLinkValue, setActiveLinkValue] = useState(""); + + const update = useMutation(api.resume.updateHeader); + const pendingChangesRef = useRef(false); + + useEffect(() => { + if (item?.content && !pendingChangesRef.current) { + setHeader(item.content as HeaderContent); + console.log(item.content); + } + }, [item?.content, pendingChangesRef]); + + const debouncedUpdate = useMemo(() => { + return debounce((newHeader: HeaderContent) => { + update({ id: resumeId, content: newHeader }); + pendingChangesRef.current = false; + }, 400); + }, [update, resumeId]); + + const handleChange = useCallback( + (e: ChangeEvent | string) => { + pendingChangesRef.current = true; + setHeader((prevHeader) => { + let newHeader; + if (typeof e === "string") { + newHeader = { ...prevHeader, summary: e }; + } else { + newHeader = { ...prevHeader, [e.target.name]: e.target.value }; + } + debouncedUpdate(newHeader); + return newHeader; + }); + }, + [debouncedUpdate] + ); + + const handleSocialChange = useCallback( + (index: number, name: string, value: string) => { + pendingChangesRef.current = true; + setHeader((prevHeader) => { + const newSocialLinks = [...prevHeader.socialLinks]; + newSocialLinks[index] = { ...newSocialLinks[index], [name]: value }; + const newHeader = { ...prevHeader, socialLinks: newSocialLinks }; + debouncedUpdate(newHeader); + return newHeader; + }); + }, + [debouncedUpdate] + ); + + const handleAddSocialLink = useCallback( + (type: string) => { + pendingChangesRef.current = true; + setHeader((prevHeader) => { + const existingLink = prevHeader.socialLinks.find( + (link) => link.type === type && link.type !== "other" + ); + if (existingLink) { + return prevHeader; + } + const newSocialLinks = [ + ...prevHeader.socialLinks, + { type, name: "", url: "" }, + ]; + const newHeader = { ...prevHeader, socialLinks: newSocialLinks }; + debouncedUpdate(newHeader); + return newHeader; + }); + }, + [debouncedUpdate] + ); + + const handleRemoveSocialLink = useCallback( + (index: number) => { + pendingChangesRef.current = true; + setHeader((prevHeader) => { + const newSocialLinks = [...prevHeader.socialLinks]; + const filteredArray = newSocialLinks.filter((_, i) => i !== index); + const newHeader = { ...prevHeader, socialLinks: filteredArray }; + debouncedUpdate(newHeader); + return newHeader; + }); + }, + [debouncedUpdate] + ); + + const socialOptions = [ + { value: "github", label: "GitHub", icon: Github }, + { value: "linkedin", label: "LinkedIn", icon: Linkedin }, + { value: "portfolio", label: "Portfolio", icon: Globe }, + { value: "twitter", label: "Twitter", icon: Twitter }, + { value: "other", label: "Other", icon: Link }, + ]; + + return ( + <> + + + > + ); +}; + +interface InputFieldProps { + label: string; + name: keyof HeaderContent; + value: string; + onChange: (e: ChangeEvent++ ++ + + + ++ +Social Links
+ {header?.socialLinks?.map((link, index) => ( +++ ))} ++ handleSocialChange(index, "name", e.target.value) + } + placeholder={`Enter ${link.type}`} + /> + + handleSocialChange(index, "url", e.target.value) + } + placeholder={`Enter your ${link.type} URL`} + /> + + + {socialOptions.map((option) => ( + handleAddSocialLink(option.value)} + className={`flex items-center gap-2 bg-[#FFF5F5] shadow-sm shadow-primary/40 cursor-pointer border-2 ${ + header?.socialLinks?.some((link) => link.type === option.value) + ? "border-primary/60" + : "border-transparent hover:border-primary/60" + } transition duration-300 ease rounded-lg p-2`} + > ++ + {item?.content?.summary !== undefined && ( +{option.label} + + ))} + ++ )} +handleChange(content)} + /> + ) => void; + placeholder: string; + type?: string; + required?: boolean; +} + +const InputField: React.FC = ({ + label, + name, + value, + onChange, + placeholder, + type = "text", + required, +}) => ( + + + + +); + +export default HeaderForm; diff --git a/components/forms/ProjectForm.tsx b/components/forms/ProjectForm.tsx new file mode 100644 index 0000000..76343f7 --- /dev/null +++ b/components/forms/ProjectForm.tsx @@ -0,0 +1,215 @@ +import { Id } from "@/convex/_generated/dataModel"; +import React, { + ChangeEvent, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import { Label } from "../ui/label"; +import { Input } from "../ui/input"; +import { useMutation } from "convex/react"; +import { api } from "@/convex/_generated/api"; +import { debounce } from "lodash"; +import { Button } from "../ui/button"; +import { motion } from "framer-motion"; +import QuillProjectEditor from "../QuillEditors/QuillProject"; +import { ProjectSection } from "@/types/templateTypes"; +import { XIcon } from "lucide-react"; + +interface ProjectType { + name: string; + description: string; + githuburl: string; + liveurl: string; +} + +interface ProjectContent { + projects: ProjectType[]; +} + +const ProjectForm = ({ + resumeId, + item, +}: { + resumeId: Id<"resumes">; + item: ProjectSection; +}) => { + const emptyProject: ProjectType = { + name: "", + description: "", + githuburl: "", + liveurl: "", + }; + + const [projects, setProjects] = useState({ projects: [] }); + const pendingChangesRef = useRef(false); + const update = useMutation(api.resume.updateProjects); + + useEffect(() => { + if (!pendingChangesRef.current) { + setProjects(item?.content as ProjectContent); + } + }, [item?.content, pendingChangesRef]); + + const debouncedUpdate = useMemo(() => { + return debounce((newProject: ProjectContent) => { + update({ id: resumeId, content: newProject }); + pendingChangesRef.current = false; + }, 400); + }, [update, resumeId]); + + const handleChange = useCallback( + (index: number) => + ( + e: ChangeEvent | string, + field?: keyof ProjectType + ) => { + pendingChangesRef.current = true; + setProjects((prevProjects) => { + const newProject = { ...prevProjects }; + if (typeof e === "string" && field) { + newProject.projects[index][field] = e; + } else if (typeof e !== "string") { + newProject.projects[index][e.target.name as keyof ProjectType] = + e.target.value; + } + debouncedUpdate(newProject); + return newProject; + }); + }, + [debouncedUpdate] + ); + + const addProject = () => { + setProjects((prev) => ({ + ...prev, + projects: [...prev.projects, emptyProject], + })); + }; + + const removeProject = useCallback( + (index: number) => { + setProjects((prev) => { + const newProjects = { + ...prev, + projects: prev.projects.filter((_, i) => i !== index), + }; + debouncedUpdate(newProjects); + return newProjects; + }); + }, + [debouncedUpdate] + ); + + return ( + <> + {projects?.projects.map((item, index) => { + return ( + + ++ ); + })} + > + ); +}; + +interface InputFieldProps { + label: string; + name: string; + value: string; + onChange: (e: ChangeEvent+ + +) => void; + placeholder: string; +} + +const InputField: React.FC = ({ + label, + name, + value, + onChange, + placeholder, +}) => { + return ( + + + + + ); +}; + +export default ProjectForm; diff --git a/components/forms/SkillsForm.tsx b/components/forms/SkillsForm.tsx new file mode 100644 index 0000000..7dc3d47 --- /dev/null +++ b/components/forms/SkillsForm.tsx @@ -0,0 +1,153 @@ +import React, { + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import { Id } from "@/convex/_generated/dataModel"; +import { debounce, set } from "lodash"; +import { useMutation } from "convex/react"; +import { api } from "@/convex/_generated/api"; +import QuillEditorComponent from "../QuillEditors/QuillEditor"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { Button } from "../ui/button"; + +const SkillsForm = ({ + item, + resumeId, + styles, +}: { + item: any; + resumeId: Id<"resumes">; + styles: any; +}) => { + const [skillDescription, setSkillDescription] = useState(""); + const [currentFormat, setCurrentFormat] = useState("paragraph"); + const pendingChangesRef = useRef(false); + const update = useMutation(api.resume.updateSkills); + + useEffect(() => { + if (!pendingChangesRef.current) { + setSkillDescription(item?.content?.description || ""); + } + }, [item?.content?.description]); + + const debouncedUpdate = useMemo( + () => + debounce((newSkills: string) => { + update({ id: resumeId, content: { description: newSkills } }); + pendingChangesRef.current = false; + }, 400), + [update, resumeId] + ); + + const handleChange = useCallback( + (description: string) => { + pendingChangesRef.current = true; + setSkillDescription(description); + debouncedUpdate(description); + }, + [debouncedUpdate] + ); + + const descriptionObj = [ + { + heading: "Full Stack Web Developer", + allDescriptions: [ + `Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.`, + `Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.`, + `DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.`, + `Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.`, + ], + }, + { + heading: "Data Scientist", + allDescriptions: [ + `Programming Languages: Python, R, SQL, Java.`, + `Data Analysis Tools: Pandas, NumPy, Scikit-learn, TensorFlow, PyTorch, Matplotlib, Seaborn.`, + `Databases: MySQL, PostgreSQL, MongoDB, Redis.`, + `Machine Learning: Regression, Classification, Clustering, Neural Networks, Natural Language Processing.`, + `Version Control & Tools: Git, GitHub, Jupyter, Anaconda, Docker. Testing: PyTest, Unittest.`, + ], + }, + { + heading: "DevOps Engineer", + allDescriptions: [ + `Tools & Platforms: Jenkins, Docker, Kubernetes, GitHub Actions, CircleCI, TravisCI.`, + `Cloud Services: AWS (EC2, S3, Lambda, CloudFormation), Azure, GCP.`, + `Automation & Monitoring: Terraform, Ansible, Nagios, Prometheus, Grafana.`, + `Version Control & Tools: Git, GitLab, GitHub, Bitbucket.`, + `Networking & Security: VPN, SSL, Firewalls, Load Balancing, AWS IAM.`, + ], + }, + { + heading: "Mobile App Developer", + allDescriptions: [ + `Languages & Frameworks: Swift, Kotlin, Java, React Native, Flutter, Dart.`, + `Mobile Development Tools: Xcode, Android Studio, Firebase, Realm, SQLite.`, + `Backend: REST APIs, GraphQL, Node.js, Express.js.`, + `Version Control & Tools: Git, GitHub, Bitbucket, Postman. Testing: Jest, Detox, Espresso.`, + `Deployment: App Store, Google Play, Fastlane.`, + ], + }, + ]; + + const handleSetDescription = (descriptions: string[]) => { + const combinedDescription = descriptions.join("
"); + setSkillDescription(combinedDescription); + }; + + return ( + <> +++ > + ); +}; + +export default SkillsForm; diff --git a/components/ui/button.tsx b/components/ui/button.tsx new file mode 100644 index 0000000..d27984d --- /dev/null +++ b/components/ui/button.tsx @@ -0,0 +1,58 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + big_icon: + "bg-primary text-primary-foreground hover:bg-primary/90 !py-[25px] md:!py-[34px] px-8 text-sm md:text-base flex items-center gap-2 hover:gap-4 active:scale-[0.97] transition-all duration-300 ease-out", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes+ + Tailor Your Skillset
++ We recommend you take this only as a reference and personalize it by + adding your own unique skills. +
+ + {descriptionObj.map((item, index) => { + return ( + <> +++ > + ); + })} +++handleSetDescription(item.allDescriptions)} + className="group-hover:flex items-center justify-center h-full hidden" + > + ++++{item.heading}
++ {item.allDescriptions.map((desc, index) => { + return ( +
+ ); + })} + +, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef ( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + } +); +Button.displayName = "Button"; + +export { Button, buttonVariants }; diff --git a/components/ui/checkbox.tsx b/components/ui/checkbox.tsx new file mode 100644 index 0000000..df61a13 --- /dev/null +++ b/components/ui/checkbox.tsx @@ -0,0 +1,30 @@ +"use client" + +import * as React from "react" +import * as CheckboxPrimitive from "@radix-ui/react-checkbox" +import { Check } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Checkbox = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + +)) +Checkbox.displayName = CheckboxPrimitive.Root.displayName + +export { Checkbox } diff --git a/components/ui/dialog.tsx b/components/ui/dialog.tsx new file mode 100644 index 0000000..d3ae524 --- /dev/null +++ b/components/ui/dialog.tsx @@ -0,0 +1,122 @@ +"use client"; + +import * as React from "react"; +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { X } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = DialogPrimitive.Portal; + +const DialogClose = DialogPrimitive.Close; + +const DialogOverlay = React.forwardRef< + React.ElementRef+ ++ , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes+ + {children} + ++ ++ Close + ) => ( + +); +DialogHeader.displayName = "DialogHeader"; + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes ) => ( + +); +DialogFooter.displayName = "DialogFooter"; + +const DialogTitle = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/components/ui/input.tsx b/components/ui/input.tsx new file mode 100644 index 0000000..4cc8e02 --- /dev/null +++ b/components/ui/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef ( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/components/ui/label.tsx b/components/ui/label.tsx new file mode 100644 index 0000000..5341821 --- /dev/null +++ b/components/ui/label.tsx @@ -0,0 +1,26 @@ +"use client" + +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const labelVariants = cva( + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" +) + +const Label = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)) +Label.displayName = LabelPrimitive.Root.displayName + +export { Label } diff --git a/components/ui/select.tsx b/components/ui/select.tsx new file mode 100644 index 0000000..d296850 --- /dev/null +++ b/components/ui/select.tsx @@ -0,0 +1,160 @@ +"use client" + +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { Check, ChevronDown, ChevronUp } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Select = SelectPrimitive.Root + +const SelectGroup = SelectPrimitive.Group + +const SelectValue = SelectPrimitive.Value + +const SelectTrigger = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + span]:line-clamp-1", + className + )} + {...props} + > + {children} + +)) +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef+ ++ , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + +)) +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef+ , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + +)) +SelectScrollDownButton.displayName = + SelectPrimitive.ScrollDownButton.displayName + +const SelectContent = React.forwardRef< + React.ElementRef+ , + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + +)) +SelectContent.displayName = SelectPrimitive.Content.displayName + +const SelectLabel = React.forwardRef< + React.ElementRef+ ++ + {children} + ++ , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + +)) +SelectItem.displayName = SelectPrimitive.Item.displayName + +const SelectSeparator = React.forwardRef< + React.ElementRef+ + + ++ {children} +, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectSeparator.displayName = SelectPrimitive.Separator.displayName + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, +} diff --git a/components/ui/skeleton.tsx b/components/ui/skeleton.tsx new file mode 100644 index 0000000..01b8b6d --- /dev/null +++ b/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes ) { + return ( + + ) +} + +export { Skeleton } diff --git a/components/ui/tabs.tsx b/components/ui/tabs.tsx new file mode 100644 index 0000000..236e353 --- /dev/null +++ b/components/ui/tabs.tsx @@ -0,0 +1,55 @@ +"use client"; + +import * as React from "react"; +import * as TabsPrimitive from "@radix-ui/react-tabs"; + +import { cn } from "@/lib/utils"; + +const Tabs = TabsPrimitive.Root; + +const TabsList = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +TabsList.displayName = TabsPrimitive.List.displayName; + +const TabsTrigger = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +TabsTrigger.displayName = TabsPrimitive.Trigger.displayName; + +const TabsContent = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +TabsContent.displayName = TabsPrimitive.Content.displayName; + +export { Tabs, TabsList, TabsTrigger, TabsContent }; diff --git a/components/ui/tooltip.tsx b/components/ui/tooltip.tsx new file mode 100644 index 0000000..c3f4c7d --- /dev/null +++ b/components/ui/tooltip.tsx @@ -0,0 +1,30 @@ +"use client" + +import * as React from "react" +import * as TooltipPrimitive from "@radix-ui/react-tooltip" + +import { cn } from "@/lib/utils" + +const TooltipProvider = TooltipPrimitive.Provider + +const Tooltip = TooltipPrimitive.Root + +const TooltipTrigger = TooltipPrimitive.Trigger + +const TooltipContent = React.forwardRef< + React.ElementRef , + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)) +TooltipContent.displayName = TooltipPrimitive.Content.displayName + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/convex/README.md b/convex/README.md new file mode 100644 index 0000000..4d82e13 --- /dev/null +++ b/convex/README.md @@ -0,0 +1,90 @@ +# Welcome to your Convex functions directory! + +Write your Convex functions here. +See https://docs.convex.dev/functions for more. + +A query function that takes two arguments looks like: + +```ts +// functions.js +import { query } from "./_generated/server"; +import { v } from "convex/values"; + +export const myQueryFunction = query({ + // Validators for arguments. + args: { + first: v.number(), + second: v.string(), + }, + + // Function implementation. + handler: async (ctx, args) => { + // Read the database as many times as you need here. + // See https://docs.convex.dev/database/reading-data. + const documents = await ctx.db.query("tablename").collect(); + + // Arguments passed from the client are properties of the args object. + console.log(args.first, args.second); + + // Write arbitrary JavaScript here: filter, aggregate, build derived data, + // remove non-public properties, or create new objects. + return documents; + }, +}); +``` + +Using this query function in a React component looks like: + +```ts +const data = useQuery(api.functions.myQueryFunction, { + first: 10, + second: "hello", +}); +``` + +A mutation function looks like: + +```ts +// functions.js +import { mutation } from "./_generated/server"; +import { v } from "convex/values"; + +export const myMutationFunction = mutation({ + // Validators for arguments. + args: { + first: v.string(), + second: v.string(), + }, + + // Function implementation. + handler: async (ctx, args) => { + // Insert or modify documents in the database here. + // Mutations can also read from the database like queries. + // See https://docs.convex.dev/database/writing-data. + const message = { body: args.first, author: args.second }; + const id = await ctx.db.insert("messages", message); + + // Optionally, return a value from your mutation. + return await ctx.db.get(id); + }, +}); +``` + +Using this mutation function in a React component looks like: + +```ts +const mutation = useMutation(api.functions.myMutationFunction); +function handleButtonPress() { + // fire and forget, the most common way to use mutations + mutation({ first: "Hello!", second: "me" }); + // OR + // use the result once the mutation has completed + mutation({ first: "Hello!", second: "me" }).then((result) => + console.log(result), + ); +} +``` + +Use the Convex CLI to push your functions to a deployment. See everything +the Convex CLI can do by running `npx convex -h` in your project root +directory. To learn more, launch the docs with `npx convex docs`. diff --git a/convex/_generated/api.d.ts b/convex/_generated/api.d.ts new file mode 100644 index 0000000..0b46fe9 --- /dev/null +++ b/convex/_generated/api.d.ts @@ -0,0 +1,37 @@ +/* eslint-disable */ +/** + * Generated `api` utility. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * Generated by convex@1.12.2. + * To regenerate, run `npx convex dev`. + * @module + */ + +import type { + ApiFromModules, + FilterApi, + FunctionReference, +} from "convex/server"; +import type * as resume from "../resume.js"; + +/** + * A utility for referencing Convex functions in your app's API. + * + * Usage: + * ```js + * const myFunctionReference = api.myModule.myFunction; + * ``` + */ +declare const fullApi: ApiFromModules<{ + resume: typeof resume; +}>; +export declare const api: FilterApi< + typeof fullApi, + FunctionReference +>; +export declare const internal: FilterApi< + typeof fullApi, + FunctionReference +>; diff --git a/convex/_generated/api.js b/convex/_generated/api.js new file mode 100644 index 0000000..ad3dfd2 --- /dev/null +++ b/convex/_generated/api.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +/** + * Generated `api` utility. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * Generated by convex@1.12.2. + * To regenerate, run `npx convex dev`. + * @module + */ + +import { anyApi } from "convex/server"; + +/** + * A utility for referencing Convex functions in your app's API. + * + * Usage: + * ```js + * const myFunctionReference = api.myModule.myFunction; + * ``` + */ +export const api = anyApi; +export const internal = anyApi; diff --git a/convex/_generated/dataModel.d.ts b/convex/_generated/dataModel.d.ts new file mode 100644 index 0000000..a935214 --- /dev/null +++ b/convex/_generated/dataModel.d.ts @@ -0,0 +1,61 @@ +/* eslint-disable */ +/** + * Generated data model types. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * Generated by convex@1.12.2. + * To regenerate, run `npx convex dev`. + * @module + */ + +import type { + DataModelFromSchemaDefinition, + DocumentByName, + TableNamesInDataModel, + SystemTableNames, +} from "convex/server"; +import type { GenericId } from "convex/values"; +import schema from "../schema.js"; + +/** + * The names of all of your Convex tables. + */ +export type TableNames = TableNamesInDataModel ; + +/** + * The type of a document stored in Convex. + * + * @typeParam TableName - A string literal type of the table name (like "users"). + */ +export type Doc = DocumentByName< + DataModel, + TableName +>; + +/** + * An identifier for a document in Convex. + * + * Convex documents are uniquely identified by their `Id`, which is accessible + * on the `_id` field. To learn more, see [Document IDs](https://docs.convex.dev/using/document-ids). + * + * Documents can be loaded using `db.get(id)` in query and mutation functions. + * + * IDs are just strings at runtime, but this type can be used to distinguish them from other + * strings when type checking. + * + * @typeParam TableName - A string literal type of the table name (like "users"). + */ +export type Id = + GenericId ; + +/** + * A type describing your Convex data model. + * + * This type includes information about what tables you have, the type of + * documents stored in those tables, and the indexes defined on them. + * + * This type is used to parameterize methods like `queryGeneric` and + * `mutationGeneric` to make them type-safe. + */ +export type DataModel = DataModelFromSchemaDefinition ; diff --git a/convex/_generated/server.d.ts b/convex/_generated/server.d.ts new file mode 100644 index 0000000..3c75725 --- /dev/null +++ b/convex/_generated/server.d.ts @@ -0,0 +1,143 @@ +/* eslint-disable */ +/** + * Generated utilities for implementing server-side Convex query and mutation functions. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * Generated by convex@1.12.2. + * To regenerate, run `npx convex dev`. + * @module + */ + +import { + ActionBuilder, + HttpActionBuilder, + MutationBuilder, + QueryBuilder, + GenericActionCtx, + GenericMutationCtx, + GenericQueryCtx, + GenericDatabaseReader, + GenericDatabaseWriter, +} from "convex/server"; +import type { DataModel } from "./dataModel.js"; + +/** + * Define a query in this Convex app's public API. + * + * This function will be allowed to read your Convex database and will be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export declare const query: QueryBuilder ; + +/** + * Define a query that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to read from your Convex database. It will not be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export declare const internalQuery: QueryBuilder ; + +/** + * Define a mutation in this Convex app's public API. + * + * This function will be allowed to modify your Convex database and will be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export declare const mutation: MutationBuilder ; + +/** + * Define a mutation that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to modify your Convex database. It will not be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export declare const internalMutation: MutationBuilder ; + +/** + * Define an action in this Convex app's public API. + * + * An action is a function which can execute any JavaScript code, including non-deterministic + * code and code with side-effects, like calling third-party services. + * They can be run in Convex's JavaScript environment or in Node.js using the "use node" directive. + * They can interact with the database indirectly by calling queries and mutations using the {@link ActionCtx}. + * + * @param func - The action. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped action. Include this as an `export` to name it and make it accessible. + */ +export declare const action: ActionBuilder ; + +/** + * Define an action that is only accessible from other Convex functions (but not from the client). + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped function. Include this as an `export` to name it and make it accessible. + */ +export declare const internalAction: ActionBuilder ; + +/** + * Define an HTTP action. + * + * This function will be used to respond to HTTP requests received by a Convex + * deployment if the requests matches the path and method where this action + * is routed. Be sure to route your action in `convex/http.js`. + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped function. Import this function from `convex/http.js` and route it to hook it up. + */ +export declare const httpAction: HttpActionBuilder; + +/** + * A set of services for use within Convex query functions. + * + * The query context is passed as the first argument to any Convex query + * function run on the server. + * + * This differs from the {@link MutationCtx} because all of the services are + * read-only. + */ +export type QueryCtx = GenericQueryCtx ; + +/** + * A set of services for use within Convex mutation functions. + * + * The mutation context is passed as the first argument to any Convex mutation + * function run on the server. + */ +export type MutationCtx = GenericMutationCtx ; + +/** + * A set of services for use within Convex action functions. + * + * The action context is passed as the first argument to any Convex action + * function run on the server. + */ +export type ActionCtx = GenericActionCtx ; + +/** + * An interface to read from the database within Convex query functions. + * + * The two entry points are {@link DatabaseReader.get}, which fetches a single + * document by its {@link Id}, or {@link DatabaseReader.query}, which starts + * building a query. + */ +export type DatabaseReader = GenericDatabaseReader ; + +/** + * An interface to read from and write to the database within Convex mutation + * functions. + * + * Convex guarantees that all writes within a single mutation are + * executed atomically, so you never have to worry about partial writes leaving + * your data in an inconsistent state. See [the Convex Guide](https://docs.convex.dev/understanding/convex-fundamentals/functions#atomicity-and-optimistic-concurrency-control) + * for the guarantees Convex provides your functions. + */ +export type DatabaseWriter = GenericDatabaseWriter ; diff --git a/convex/_generated/server.js b/convex/_generated/server.js new file mode 100644 index 0000000..d76b05a --- /dev/null +++ b/convex/_generated/server.js @@ -0,0 +1,90 @@ +/* eslint-disable */ +/** + * Generated utilities for implementing server-side Convex query and mutation functions. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * Generated by convex@1.12.2. + * To regenerate, run `npx convex dev`. + * @module + */ + +import { + actionGeneric, + httpActionGeneric, + queryGeneric, + mutationGeneric, + internalActionGeneric, + internalMutationGeneric, + internalQueryGeneric, +} from "convex/server"; + +/** + * Define a query in this Convex app's public API. + * + * This function will be allowed to read your Convex database and will be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export const query = queryGeneric; + +/** + * Define a query that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to read from your Convex database. It will not be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export const internalQuery = internalQueryGeneric; + +/** + * Define a mutation in this Convex app's public API. + * + * This function will be allowed to modify your Convex database and will be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export const mutation = mutationGeneric; + +/** + * Define a mutation that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to modify your Convex database. It will not be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export const internalMutation = internalMutationGeneric; + +/** + * Define an action in this Convex app's public API. + * + * An action is a function which can execute any JavaScript code, including non-deterministic + * code and code with side-effects, like calling third-party services. + * They can be run in Convex's JavaScript environment or in Node.js using the "use node" directive. + * They can interact with the database indirectly by calling queries and mutations using the {@link ActionCtx}. + * + * @param func - The action. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped action. Include this as an `export` to name it and make it accessible. + */ +export const action = actionGeneric; + +/** + * Define an action that is only accessible from other Convex functions (but not from the client). + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped function. Include this as an `export` to name it and make it accessible. + */ +export const internalAction = internalActionGeneric; + +/** + * Define a Convex HTTP action. + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument, and a `Request` object + * as its second. + * @returns The wrapped endpoint function. Route a URL path to this function in `convex/http.js`. + */ +export const httpAction = httpActionGeneric; diff --git a/convex/auth.config.ts b/convex/auth.config.ts new file mode 100644 index 0000000..e712076 --- /dev/null +++ b/convex/auth.config.ts @@ -0,0 +1,8 @@ +export default { + providers: [ + { + domain: "https://sound-crab-61.clerk.accounts.dev/", + applicationID: "convex", + }, + ] + }; \ No newline at end of file diff --git a/convex/resume.ts b/convex/resume.ts new file mode 100644 index 0000000..8f486ce --- /dev/null +++ b/convex/resume.ts @@ -0,0 +1,700 @@ +import { v } from "convex/values"; +import { mutation, query } from "./_generated/server"; +import { + createSection, + templateStructures, +} from "../templates/templateStructures"; +import { ResumeTemplate, SocialLink } from "../types/templateTypes"; + +export const getTemplates = query({ + args: {}, + handler: async (ctx, args) => { + const resumes = await ctx.db + .query("resumes") + .filter((q) => q.eq(q.field("isTemplate"), true)) + .collect(); + + return resumes; + }, +}); + +export const getTemplateDetails = query({ + args: { + id: v.id("resumes"), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + return resume; + }, +}); + +export const updateHeader = mutation({ + args: { + id: v.id("resumes"), + content: v.object({ + firstName: v.string(), + lastName: v.optional(v.string()), + email: v.string(), + phone: v.optional(v.string()), + socialLinks: v.optional( + v.array( + v.object({ + name: v.string(), + url: v.string(), + type: v.string(), + }) + ) + ), + location: v.optional(v.string()), + summary: v.optional(v.string()), + }), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + const resumeSections = resume?.sections; + let index = resumeSections.findIndex((obj) => obj.type === "header"); + + if (index === -1) { + throw new Error("Somethign went wrong index"); + } else { + resumeSections[index].content = { + ...resumeSections[index].content, + ...args.content, + }; + } + + const newResume = await ctx.db.patch(args.id, { + sections: resumeSections, + }); + + return resumeSections; + }, +}); + +export const createUserResume = mutation({ + args: { + id: v.id("resumes"), + userId: v.string(), + templateName: v.string(), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + + if (!args.userId) { + throw new Error("Something went wrong...no userId"); + } + + if (!resume) { + throw new Error("Something went wrong"); + } + + const templateSections: any = templateStructures[args.templateName]; + if (!templateSections) { + throw new Error("Invalid template name"); + } + + const initialSections = templateSections.map((section: any) => + createSection( + section.type, + section.fields, + section.orderNumber, + section.isVisible + ) + ); + + const newResume = await ctx.db.insert("resumes", { + isTemplate: false, + userId: args.userId, + globalStyles: resume?.globalStyles!, + templateName: args?.templateName, + sections: initialSections, + }); + + return newResume; + }, +}); + +export const updateExperience = mutation({ + args: { + id: v.id("resumes"), + content: v.object({ + experience: v.array( + v.object({ + companyName: v.string(), + role: v.string(), + jobDescription: v.string(), + location: v.optional(v.string()), + startMonth: v.optional(v.string()), + startYear: v.string(), + endMonth: v.optional(v.string()), + endYear: v.string(), + workingHere: v.boolean(), + }) + ), + }), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + const resumeSections = resume?.sections; + let index = resumeSections.findIndex((item) => item.type === "experience"); + if (index === -1) { + throw new Error("Something went wrong index"); + } else { + resumeSections[index].content = { + ...resumeSections[index]?.content, + ...args.content, + }; + } + + const newResume = await ctx.db.patch(args.id, { + sections: resumeSections, + }); + return newResume; + }, +}); + +export const updateEducation = mutation({ + args: { + id: v.id("resumes"), + content: v.object({ + education: v.array( + v.object({ + courseName: v.string(), + instituteName: v.string(), + startMonth: v.optional(v.string()), + startYear: v.optional(v.string()), + endMonth: v.optional(v.string()), + endYear: v.optional(v.string()), + location: v.string(), + grade: v.optional(v.string()), + studyingHere: v.boolean(), + }) + ), + }), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + const resumeSections = resume?.sections; + let index = resumeSections.findIndex((item) => item.type === "education"); + if (index === -1) { + throw new Error("Something went wrong index"); + } else { + resumeSections[index].content = { + ...resumeSections[index]?.content, + ...args.content, + }; + } + await ctx.db.patch(args.id, { + sections: resumeSections, + }); + }, +}); + +export const updateCustomSection = mutation({ + args: { + id: v.id("resumes"), + content: v.object({ + sectionTitle: v.string(), + sectionDescription: v.string(), + sectionNumber: v.number(), + }), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + const resumeSections = resume?.sections; + const customSection = resumeSections.filter( + (item) => item.type === "custom" + ); + + const currentCustomSectionIndex = customSection.findIndex( + (item) => item.content.sectionNumber === args.content.sectionNumber + ); + + const allOrderNumbers: any = + resumeSections?.map((item) => item.orderNumber) || []; + const maxNumber = Math.max(...allOrderNumbers); + + if ( + args.content.sectionTitle.trim() === "" && + (args.content.sectionDescription.trim() === " " || + args.content.sectionDescription.trim() === "") + ) { + const updatedSections = resumeSections.filter( + (item) => + !( + item.type === "custom" && + item.content.sectionNumber === args.content.sectionNumber + ) + ); + return await ctx.db.patch(args.id, { + sections: updatedSections, + }); + } + + if (currentCustomSectionIndex === -1) { + resumeSections.push({ + type: "custom", + content: { + sectionTitle: args.content.sectionTitle, + sectionDescription: args.content.sectionDescription, + sectionNumber: args.content.sectionNumber, + }, + orderNumber: maxNumber + 1, + isVisible: true, + }); + await ctx.db.patch(args.id, { + sections: resumeSections, + }); + } else { + customSection[currentCustomSectionIndex].content = args.content; + await ctx.db.patch(args.id, { + sections: resumeSections, + }); + } + }, +}); + +export const removeCustomSection = mutation({ + args: { + id: v.id("resumes"), + sectionNumber: v.number(), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + + const resumeSections = resume?.sections; + const customSection = resumeSections.filter( + (item) => item.type === "custom" + ); + const currentCustomSection = customSection.find( + (item) => item.content.sectionNumber === args.sectionNumber + ); + + const orderNumberRemoved = currentCustomSection?.orderNumber; + + if (!orderNumberRemoved) { + throw new Error("Something went wrong"); + } + + const updatedCustomSections = resumeSections.filter( + (item) => item.orderNumber !== orderNumberRemoved + ); + + await ctx.db.patch(args.id, { + sections: updatedCustomSections, + }); + }, +}); + +export const updateSkills = mutation({ + args: { + id: v.id("resumes"), + content: v.object({ + description: v.string(), + }), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + const resumeSections = resume?.sections; + let index = resumeSections.findIndex((item) => item.type === "skills"); + if (index === -1) { + throw new Error("Something went wrong index"); + } else { + resumeSections[index].content = { + ...resumeSections[index].content, + ...args.content, + }; + } + const newResume = await ctx.db.patch(args.id, { + sections: resumeSections, + }); + + return newResume; + }, +}); + +export const updateProjects = mutation({ + args: { + id: v.id("resumes"), + content: v.object({ + projects: v.array( + v.object({ + name: v.string(), + description: v.string(), + githuburl: v.optional(v.string()), + liveurl: v.optional(v.string()), + }) + ), + }), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + const resumeSections = resume?.sections; + let projectsIndex = resumeSections.findIndex( + (item) => item.type === "projects" + ); + if (projectsIndex === -1) { + throw new Error("Projects section not found in resume"); + } else { + resumeSections[projectsIndex].content = { + ...resumeSections[projectsIndex].content, + ...args.content, + }; + } + + const newResume = await ctx.db.patch(args.id, { + sections: resumeSections, + }); + return newResume; + }, +}); + +export const updateColor = mutation({ + args: { + id: v.id("resumes"), + color: v.string(), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + const newGlobalStyles = { + ...resume.globalStyles, + primaryTextColor: args.color, + }; + const newResume = await ctx.db.patch(args.id, { + globalStyles: newGlobalStyles, + }); + return newResume; + }, +}); + +export const updateColorPC = mutation({ + args: { + id: v.id("resumes"), + color: v.string(), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + + const newGlobalStyles = { + ...resume.globalStyles, + primaryColor: args.color, + }; + const newResume = await ctx.db.patch(args.id, { + globalStyles: newGlobalStyles, + }); + return newResume; + }, +}); + +export const updateFont = mutation({ + args: { + id: v.id("resumes"), + font: v.string(), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Something went wrong"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + + const updatedResume = await ctx.db.patch(args.id, { + globalStyles: { + ...resume.globalStyles, + fontFamily: args.font, + }, + }); + + return updatedResume; + }, +}); + +export const getUserResumes = query({ + args: { + userId: v.string(), + }, + handler: async (ctx, args) => { + const resumes = await ctx.db + .query("resumes") + .filter((q) => q.eq(q.field("userId"), args.userId)) + .collect(); + + return resumes; + }, +}); + +export const getCustomSections = query({ + args: { + id: v.id("resumes"), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Resume not found"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + + const resumeSections = resume?.sections; + + const customSection = resumeSections.filter( + (item) => item.type === "custom" + ); + + return customSection; + }, +}); + +const SectionType = v.union( + v.literal("header"), + v.literal("skills"), + v.literal("projects"), + v.literal("experience"), + v.literal("education"), + v.literal("custom") +); + +export const reorderSections = mutation({ + args: { + id: v.id("resumes"), + updatedSections: v.any(), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Resume not found"); + } + + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + + const updatedResume = await ctx.db.patch(args.id, { + sections: args.updatedSections, + }); + return updatedResume; + }, +}); + +export const migrateResumes = mutation({ + args: {}, + handler: async (ctx, args) => { + const resumes = await ctx.db.query("resumes").collect(); + + for (const resume of resumes) { + const oldHeader: any = resume.sections.find( + (section) => section.type === "header" + ); + + if (oldHeader) { + const socialLinks: SocialLink[] = []; + + if (oldHeader.content.github) { + socialLinks.push({ + name: "GitHub", + type: "github", + url: `https://github.com/${oldHeader.content.github}`, + }); + } + + if (oldHeader.content.linkedin) { + socialLinks.push({ + name: "LinkedIn", + type: "linkedin", + url: oldHeader.content.linkedin, + }); + } + + const newHeader = { + ...oldHeader, + content: { + email: oldHeader.content.email, + firstName: oldHeader.content.firstName, + lastName: oldHeader.content.lastName, + phone: oldHeader.content.phone, + socialLinks, + }, + }; + + if (oldHeader.content.summary) { + newHeader.content.summary = oldHeader.content.summary; + } + + resume.sections = resume.sections.map((section) => + section.type === "header" ? newHeader : section + ); + + await ctx.db.patch(resume._id, { + sections: resume.sections, + }); + } + } + + return resumes; + }, +}); + + +export const hideSection = mutation({ + args: { + id: v.id("resumes"), + sectionId: v.string(), + }, + handler: async (ctx, args) => { + const resume = await ctx.db.get(args.id); + if (!resume) { + throw new Error("Resume not found"); + } + const identity = await ctx.auth.getUserIdentity(); + if (!identity) { + throw new Error("Not authenticated"); + } + + if (identity.subject !== resume.userId) { + throw new Error("Unauthorized"); + } + + const resumeSections = resume?.sections; + let index = resumeSections.findIndex((item) => item.type === args.sectionId); + if (index === -1) { + throw new Error("Something went wrong index"); + } else { + resumeSections[index].isVisible = !resumeSections[index].isVisible; + } + + const updatedResume = await ctx.db.patch(args.id, { + sections: resumeSections, + }); + + return updatedResume; + }, +}); \ No newline at end of file diff --git a/convex/schema.ts b/convex/schema.ts new file mode 100644 index 0000000..0dab9f8 --- /dev/null +++ b/convex/schema.ts @@ -0,0 +1,128 @@ + import { defineSchema, defineTable } from "convex/server"; + import { v } from "convex/values"; + + const sectionContentSchema = v.union( + v.object({ + type: v.literal("header"), + content: v.object({ + firstName: v.string(), + lastName: v.optional(v.string()), + email: v.string(), + phone: v.optional(v.string()), + location: v.optional(v.string()), + summary: v.optional(v.string()), + photo: v.optional(v.string()), + socialLinks : v.array( + v.object({ + type : v.string(), + name: v.string(), + url: v.string(), + }) + ) + }), + isVisible : v.boolean(), + orderNumber: v.optional(v.number()), + style: v.optional(v.any()), + }), + + v.object({ + type: v.literal("skills"), + content: v.object({ + description: v.string(), + }), + isVisible : v.boolean(), + orderNumber: v.optional(v.number()), + style: v.optional(v.any()), + }), + + v.object({ + type: v.literal("projects"), + content: v.object({ + projects: v.array( + v.object({ + name: v.string(), + description: v.string(), + githuburl: v.optional(v.string()), + liveurl: v.optional(v.string()), + }) + ), + }), + isVisible : v.boolean(), + orderNumber: v.optional(v.number()), + style: v.optional(v.any()), + }), + + v.object({ + type: v.literal("experience"), + content: v.object({ + experience: v.array( + v.object({ + companyName: v.string(), + role: v.string(), + jobDescription: v.string(), + location: v.optional(v.string()), + startMonth: v.optional(v.string()), + startYear: v.string(), + endMonth: v.optional(v.string()), + endYear: v.string(), + workingHere: v.boolean(), + }) + ), + }), + isVisible : v.boolean(), + orderNumber: v.optional(v.number()), + style: v.optional(v.any()), + }), + + v.object({ + type: v.literal("education"), + content: v.object({ + education: v.array( + v.object({ + courseName: v.string(), + instituteName: v.string(), + location: v.optional(v.string()), + startMonth: v.optional(v.string()), + startYear: v.optional(v.string()), + endMonth: v.optional(v.string()), + endYear: v.optional(v.string()), + studyingHere: v.boolean(), + grade: v.optional(v.string()), + }) + ), + }), + isVisible : v.boolean(), + orderNumber: v.optional(v.number()), + style: v.optional(v.any()), + }), + + v.object({ + type: v.literal("custom"), + content: v.object({ + sectionTitle: v.optional(v.string()), + sectionDescription: v.optional(v.string()), + sectionNumber : v.optional(v.number()), + }), + isVisible : v.boolean(), + orderNumber: v.optional(v.number()), + style: v.optional(v.any()), + }) + ); + + export default defineSchema({ + resumes: defineTable({ + isTemplate: v.boolean(), + userId: v.string(), + templateName: v.string(), + sections: v.array(sectionContentSchema), + globalStyles: v.object({ + fontFamily: v.string(), + primaryTextColor: v.string(), + primaryColor: v.string(), + photo: v.boolean(), + columns: v.number(), + }), + }), + }); + + diff --git a/convex/tsconfig.json b/convex/tsconfig.json new file mode 100644 index 0000000..6fa874e --- /dev/null +++ b/convex/tsconfig.json @@ -0,0 +1,25 @@ +{ + /* This TypeScript project config describes the environment that + * Convex functions run in and is used to typecheck them. + * You can modify it, but some settings required to use Convex. + */ + "compilerOptions": { + /* These settings are not required by Convex and can be modified. */ + "allowJs": true, + "strict": true, + "moduleResolution": "Bundler", + "jsx": "react-jsx", + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + + /* These compiler options are required by Convex */ + "target": "ESNext", + "lib": ["ES2021", "dom"], + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "isolatedModules": true, + "noEmit": true + }, + "include": ["./**/*"], + "exclude": ["./_generated"] +} diff --git a/lib/documents.jsonl b/lib/documents.jsonl new file mode 100644 index 0000000..c950a0b --- /dev/null +++ b/lib/documents.jsonl @@ -0,0 +1,37 @@ +{"_creationTime":1727527326415.1604,"_id":"j5702s1k3dqqqfymh6a0z5r65x71mvyr","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"Microsoft","endMonth":"","endYear":"","jobDescription":"
","location":"","role":"Software Developer","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mfPvdV0LAJkDOnZ5QYsAzougsK"} +{"_creationTime":1727738980381.7708,"_id":"j570x1aenyeqjssf2dcwqg4t9n71rrzy","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"parisottohoracio@gmail.com","firstName":"Horacio","github":"johndoe676","lastName":"Parisotto","linkedin":"linkedin.com/johndoe","phone":"01140817173"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2moNS73zQ5ODONPRbBo2GlGGqzI"} +{"_creationTime":1727420986563.1978,"_id":"j5717p3w5r3x1a766285s861j971jkv7","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":true,"sections":[{"content":{"email":"john.doe@example.com","firstName":"JOHN","github":"johndoe","lastName":"DOE","linkedin":"john-doe","location":"New York, NY","phone":"+1-555-123-4567"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"Bachelor of Science in Computer Science","endMonth":"March","endYear":"2023","grade":"8.2 CGPA","instituteName":"University of California, Berkeley","location":"Berkeley, CA","startMonth":"Feb","startYear":"2022","studyingHere":false},{"courseName":"Master of Science in Software Engineering","endMonth":"Dec","endYear":"2022","grade":"8.2 CGPA","instituteName":"Stanford University","location":"Stanford, CA","startMonth":"Jan","startYear":"2020","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"projects":[{"description":"
- Developed and maintained key features for Microsoft's Azure platform, contributing to a 10% increase in user engagement and a 5% reduction in support tickets.
- Collaborated with cross-functional teams to design and implement new software solutions, resulting in a 20% improvement in application performance and a 15% reduction in development time.
- Leveraged expertise in cloud technologies and software development best practices to deliver high-quality, scalable applications, achieving a 99.9% uptime SLA for critical services.
Developed a full-featured eCommerce platform with user authentication, product management, and secure payment processing using MongoDB, Express.js, React, and Node.js, resulting in a 40% increase in user engagement.
Integrated advanced search and filtering capabilities, enhancing the user experience by reducing product search time by 50%, and implemented a real-time order tracking system.
","githuburl":"https://github.com/johndoe/ecommerce","liveurl":"https://johndoe.com","name":"E-commerce Website Using MERN Stack"},{"description":"Built a dynamic currency converter application in React, leveraging third-party APIs to provide real-time exchange rates for over 150 currencies, resulting in a 25% increase in user satisfaction.
Implemented a responsive and intuitive user interface, ensuring seamless performance across various devices and improving usability scores by 30%.
","githuburl":"https://github.com/johndoe/ecommerce","liveurl":"https://ecommerce.johndoe.com","name":"Currency Converter in React"}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"experience":[{"companyName":"Tech Solutions Inc.","endMonth":"","endYear":"2024","jobDescription":"Led a team of 5 developers in designing and implementing scalable web applications using microservices architecture.
Developed and maintained 8 web applications using modern JavaScript frameworks and RESTful APIs, ensuring high performance and user-centric design.
Contributed to 12 successful software releases, including 3 major feature enhancements, achieving a 20% improvement in application efficiency.
","location":"San Francisco, CA","role":"Senior Software Engineer","startMonth":"","startYear":"2024","workingHere":false},{"companyName":"Web Innovations LLC","endMonth":"","endYear":"2024","jobDescription":"Spearheaded the development of 6 end-to-end web applications from concept to deployment, leveraging React and Node.js, resulting in a 30% reduction in time-to-market.
Implemented robust authentication systems and RESTful APIs for 10+ web projects, ensuring data security and seamless integration with external services.
Collaborated with cross-functional teams on 15+ sprints, delivering scalable solutions that improved performance metrics by 25% across multiple client projects.
","location":"Austin, TX","role":"Full Stack Developer","startMonth":"","startYear":"2024","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"description":"Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm."},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"admin"} +{"_creationTime":1727724673627.9053,"_id":"j571gmb1xm2025ysd1vvzbjp2n71sb38","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#00f6ff"},"isTemplate":false,"sections":[{"content":{"email":"nigga@gmail.com","firstName":"Asaf","github":"AsafCN","lastName":"Cohen","linkedin":"","phone":"1234567896","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"GaryOnTop","endMonth":"","endYear":"Present","jobDescription":"
","location":"somewhere","role":"Owner","startMonth":"May","startYear":"2024","workingHere":true}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":"
- Successfully led the development and implementation of innovative strategies that increased GaryOnTop's customer base by 20% within the past year.
- Proven ability to manage and motivate a team of 10+ developers, consistently exceeding project deadlines by an average of 10%.
- Developed and executed a comprehensive marketing plan that resulted in a 15% increase in website traffic and a 5% rise in lead generation.
Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":"Chinchilla GANG"}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mnuSio6cRJPrKBDm4yoLGPE1up"} +{"_creationTime":1727551760988.2375,"_id":"j573jsnbb55sf3fhrpxckvjwf971mnqk","globalStyles":{"columns":2.0,"fontFamily":"Raleway","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"zuberkhan034@gmail.com","firstName":"Zuber","github":"dsyucgyuds","lastName":"Khan","linkedin":"dvcudsfcdus","phone":"8171584000"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"dibcdsibf","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"
- Developed a FiveM server, 'Chinchilla GANG,' using C# and Lua, attracting over 500 active players and generating 200,000+ hours of gameplay, showcasing a robust and engaging server experience.
- Implemented custom scripts and game mechanics, enhancing player interaction and immersion by 30%, resulting in a thriving community with active roleplay and social interactions.
- Utilized server optimization techniques, ensuring smooth gameplay with minimal lag for over 90% of players, contributing to a positive and enjoyable experience.
","githuburl":"sajvdgas","liveurl":"sbjsdash","name":"sadisadias"}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2miFre5HAWwyFKZpjonJCmIPznT"} +{"_creationTime":1727949037431.0198,"_id":"j573kpev81n6hxc8mpjzvc7jh171yeef","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2meJqQdYkaYUlbXpPPB7sTppxxt"} +{"_creationTime":1727549194415.8567,"_id":"j5743yqwz4aysvdg7st3jxahhd71mmbb","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"Present","grade":"","instituteName":"","location":"","startMonth":"","startYear":"2024","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2miAnDAwMyNaxTNd50uNMZTT7VE"} +{"_creationTime":1727530304224.0742,"_id":"j5745bhs6xnrh2ksk790k48rv171n4jb","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"Neo","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mhYU2Phyi4uWWORAf2mb4FMwKR"} +{"_creationTime":1727805571863.8352,"_id":"j574v8v1jymq2f6z2c630k5w1n71vjr4","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mqYQrJtBNCmJftysFa8qWHT3Kb"} +{"_creationTime":1727724326702.2046,"_id":"j575743r1t24v6xye1mcb76w6d71r924","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":"
- Developed a foundational project, **sadisadias**, demonstrating core programming principles and showcasing proficiency in basic web development concepts.
- Successfully implemented the classic \\\"Hello World\\\" output, validating the project's functionality and providing a clear starting point for further development.
- Utilized fundamental web technologies, including HTML, CSS, and JavaScript, to establish a basic web structure and interaction.
Automation
"},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mntiGoZF4JIsy0M5tFPEFiMI3B"} +{"_creationTime":1727461599029.3206,"_id":"j5758q2epvr123kqt1cgx7jdj171jche","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"None@ofYour.business","firstName":"Jon","github":"Certainly None Of Yours","lastName":"Doe","linkedin":"Definetly None Of yours","phone":"12301112321","summary":"Software engineer
"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"Imaginary","endMonth":"","endYear":"Present","jobDescription":"","location":"Moon","role":"Maker","startMonth":"Apr","startYear":"2018","workingHere":true}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mfJCKfZlYoAJAFgfAxWb6OZFj4"} +{"_creationTime":1727420960206.5225,"_id":"j576ws9av39d0ksq9wnfwmcsrd71jsy5","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":true,"sections":[{"content":{"email":"john.doe@example.com","firstName":"John","github":"johndoe","lastName":"Doe","linkedin":"john-doe","location":"New York, NY","phone":"+1-555-123-456","photo":"","summary":"Experienced software developer with a strong background in full-stack development and a passion for creating innovative solutions."},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"description":"Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
- Developed innovative and engaging interactive experiences for Imaginary's clients, consistently exceeding client satisfaction ratings by 10%.
- Collaborated with cross-functional teams to create compelling and user-friendly prototypes, achieving a 95% success rate in user testing.
- Leveraged cutting-edge technologies and frameworks to build high-performance, scalable applications, resulting in a 20% improvement in application performance.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium."},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"Developed a full-featured eCommerce platform with user authentication, product management, and secure payment processing using MongoDB, Express.js, React, and Node.js, resulting in a 40% increase in user engagement.
Integrated advanced search and filtering capabilities, enhancing the user experience by reducing product search time by 50%, and implemented a real-time order tracking system.
","githuburl":"https://github.com/johndoe/ecommerce","liveurl":"https://johndoe.com","name":"E-commerce Website Using MERN Stack"},{"description":"Built a dynamic currency converter application in React, leveraging third-party APIs to provide real-time exchange rates for over 150 currencies, resulting in a 25% increase in user satisfaction.
Implemented a responsive and intuitive user interface, ensuring seamless performance across various devices and improving usability scores by 30%.
","githuburl":"https://github.com/johndoe/ecommerce","liveurl":"https://ecommerce.johndoe.com","name":"Currency Converter in React"}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"experience":[{"companyName":"Tech Solutions Inc.","endMonth":"Dec","endYear":"2024","jobDescription":"Led a team of 5 developers in designing and implementing scalable web applications using microservices architecture.
Developed and maintained 8 web applications using modern JavaScript frameworks and RESTful APIs, ensuring high performance and user-centric design.
Contributed to 12 successful software releases, including 3 major feature enhancements, achieving a 20% improvement in application efficiency.
","location":"San Francisco, CA","role":"Senior Software Engineer","startMonth":"Feb","startYear":"2024","workingHere":false},{"companyName":"Web Innovations LLC","endMonth":"Dec","endYear":"2024","jobDescription":"Spearheaded the development of 6 end-to-end web applications from concept to deployment, leveraging React and Node.js, resulting in a 30% reduction in time-to-market.
Implemented robust authentication systems and RESTful APIs for 10+ web projects, ensuring data security and seamless integration with external services.
","location":"Austin, TX","role":"Full Stack Developer","startMonth":"Feb","startYear":"2024","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"education":[{"courseName":"Bachelor of Science in Computer Science","endMonth":"March","endYear":"2023","grade":"8.2 CGPA","instituteName":"University of California, Berkeley","location":"Berkeley, CA","startMonth":"Feb","startYear":"2022","studyingHere":false},{"courseName":"Master of Science in Software Engineering","endMonth":"March","endYear":"2023","grade":"8.2 CGPA","instituteName":"Stanford University","location":"Stanford, CA","startMonth":"Feb","startYear":"2022","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"admin"} +{"_creationTime":1727753717673.132,"_id":"j577120tgb24qc3gn7bbpvmbk171vp7e","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"subhajit@letraz.app","firstName":"Subhajit","github":"pingSubhajit","lastName":"Kundu","linkedin":"","phone":"9239202525"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"Master of Computer Application","endMonth":"Dec","endYear":"2024","grade":"8.2 CGPA","instituteName":"Amity University","location":"Noida, India","startMonth":"Jan","startYear":"2023","studyingHere":false},{"courseName":"Bachelor of Commerce","endMonth":"Jul","endYear":"2022","grade":"9.2 CGPA","instituteName":"Kalyani Mahavidyalaya","location":"Kolkata, India","startMonth":"Jun","startYear":"2019","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"Stacks","endMonth":"","endYear":"Present","jobDescription":"","location":"Mumbai, India","role":"Software Engineer","startMonth":"Apr","startYear":"2024","workingHere":true}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":"
- Developed and maintained core features of Stacks, a leading blockchain infrastructure, ensuring 99.9% uptime and contributing to the successful launch of over 100 decentralized applications.
- Collaborated with a team of engineers to implement performance optimizations, resulting in a 15% reduction in transaction latency and a 20% increase in block throughput.
- Proactively identified and addressed security vulnerabilities, contributing to the robust security posture of Stacks and securing over $1 billion in user funds.
Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2morLCT7RFbmOwnQrPUCSnZNEKI"} +{"_creationTime":1727526772978.4604,"_id":"j577bnmnxk1djy18qa2eyjecf171m250","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"rojinchhetri07@gmail.com","firstName":"Roshan","github":"RojinXChhetri","lastName":"Bhandari Chhetri","linkedin":"linkedin.com/in/rojinchhetri","phone":"0468957055"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"Bachelor of Information Technology","endMonth":"","endYear":"Present","grade":"","instituteName":"Torrens University Australia","location":"Sydney, Australia","startMonth":"Jun","startYear":"2023","studyingHere":true}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"Tech Sanjal PVT. LTD.","endMonth":"Mar","endYear":"2022","jobDescription":"","location":"Birtamode, Nepal","role":"FullStack Developer","startMonth":"Feb","startYear":"2020","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"
- Developed and maintained high-performance web applications for Tech Sanjal PVT. LTD., achieving an average 98% uptime and exceeding customer satisfaction expectations.
- Implemented efficient database management strategies and optimized code for improved performance, resulting in a 20% reduction in application loading times.
- Collaborated with cross-functional teams to integrate third-party APIs and streamline user workflows, leading to a 15% increase in user engagement and data accuracy.
","githuburl":"","liveurl":"","name":"FullStack Blog Site"},{"description":"
- Developed a fully functional blog website using React.js for the frontend and Node.js/Express.js for the backend, featuring user authentication, dynamic content rendering, and CRUD operations for blog posts, achieving a 99.9% uptime and 100% API success rate.
- Implemented a robust content management system (CMS) allowing users to create, edit, and publish blog posts with rich text formatting, image uploads, and SEO optimization, resulting in a 20% increase in user-generated content.
- Integrated a responsive design framework, ensuring seamless user experience across various devices and screen sizes, leading to a 30% increase in mobile web traffic and improved overall engagement.
","githuburl":"","liveurl":"","name":"Cold Email Sender"}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":"
- Developed a Python-based Cold Email Sender application with features like personalized email composition, automated scheduling, and tracking, achieving a 20% increase in email open rates.
- Implemented a robust email verification system to ensure deliverability and reduce bounce rates, resulting in a 15% decrease in undelivered emails.
- Integrated with popular email marketing platforms like Mailchimp and SendGrid, allowing for seamless integration and enhanced campaign management, increasing email click-through rates by 10%.
Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mhRKC6j9TcoCGSqBfrE5xrFRWx"} +{"_creationTime":1727464933836.1113,"_id":"j577dp3fck1av8bwqd3p48h6z171k5xf","globalStyles":{"columns":2.0,"fontFamily":"Poppins","photo":false,"primaryColor":"#ebb5b5","primaryTextColor":"#9d161d"},"isTemplate":false,"sections":[{"content":{"email":"jankowalski@gmail.com","firstName":"Jan","github":"JanKowalski69","lastName":"Kowalski","linkedin":"linkedin.com/Jano666","phone":"+48 123 456 789","summary":"Bardzo fajnie lubie lody etc lololoo
"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"description":"Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"experience":[{"companyName":"Microsoft","endMonth":"","endYear":"Present","jobDescription":"i did there so much
","location":"New York","role":"Peanut Eater","startMonth":"Jan","startYear":"2024","workingHere":true}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mfPvdV0LAJkDOnZ5QYsAzougsK"} +{"_creationTime":1727647040839.4119,"_id":"j577kqamz0x5gwesbj046p1z7x71qexr","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"vinhwin1810@gmail.com","firstName":"Vinh","github":"","lastName":"Pham","linkedin":"","phone":"5189829436","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mlN6MPqRQQe48KPQKgeR3ix711"} +{"_creationTime":1727699704391.0244,"_id":"j5788gj1kcnfkyy84m98bwheqs71rtwm","globalStyles":{"columns":2.0,"fontFamily":"Raleway","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"vishal909781@gmail.com","firstName":"Vishal","github":"iamvkr","lastName":"Kumar","linkedin":"https://www.linkedin.com/in/vishal-kumar047","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"description":"Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
Version Control & Tools: Git, GitHub, GitLab, Postman
"},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"Full Stack Shop management Project.
Tech Stack
","githuburl":"https://github.com/iamvkr/shop-inventory-management-MERN","liveurl":"","name":"Shop Inventory Management System -MERN"},{"description":"
- Frontend: React js
- Tailwind css With Daisy ui
- Backend: Node js Express
- Database: MongoDB
An eCommerce shopping project. Made with React.
","githuburl":"https://github.com/iamvkr/cart-flix-reactjs","liveurl":"","name":"Cart Flix E-commerce React Js"},{"description":"
- React js
- Redux Toolkit for state management
- Tailwind css with Daisy UI Tailwind components
A school website made with react js.
Visit School Website. Made using javascript, HTML, CSS, React js and tailwind css
","githuburl":"https://github.com/iamvkr/school-website-project","liveurl":"https://iamvkr.github.io/school-website-project/","name":"School Website - React js"},{"description":"A Quote app, Explore quotes and create Quotes. Made with Node js and mongodb with authentication.
","githuburl":"https://github.com/iamvkr/quote-x","liveurl":"","name":"Quote X"}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"experience":[{"companyName":"Freelancer ","endMonth":"","endYear":"Present","jobDescription":"
- Express js Node js
- Ejs
- Mongoose
","location":"Remote","role":"Full stack developer ","startMonth":"","startYear":"2023","workingHere":true}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"education":[{"courseName":"Master of computer Application","endMonth":"","endYear":"Present","grade":"7.8","instituteName":"Vinoba Bhave University Hazaribagh ","location":"Hazribagh, Jharkhand ","startMonth":"Oct","startYear":"2022","studyingHere":true},{"courseName":"Bachelor of computer Application","endMonth":"Oct","endYear":"2021","grade":"","instituteName":"Vinoba Bhave University Hazaribagh ","location":"Hazaribagh, Jharkhand ","startMonth":"Oct","startYear":"2018","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template2","userId":"user_2mn5pa3q0YU3BYkHNHOucHeiFlv"} +{"_creationTime":1727637634747.6304,"_id":"j578stcdbjej5dg4hw7x1m6rhs71qgyd","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2ml3uz7DuPO3HCS6mXdj1tu3JbW"} +{"_creationTime":1727684786279.126,"_id":"j57915pp2b9050ckw8ztp6m40n71sbgf","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mmbcRUYxnCiJkku0IxgrYLOvN7"} +{"_creationTime":1727719065418.8596,"_id":"j57a32b6hycp18twvagcyjc0kn71r3st","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#9d161d"},"isTemplate":false,"sections":[{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":0.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":3.0,"style":{},"type":"skills"},{"content":{"email":"worklikeakshay@gmail.com","firstName":"Akshay","github":"https://github.com/AkshayPratapSingh09","lastName":"Pratap Singh","linkedin":"https://www.linkedin.com/in/akshaypratap09/","phone":"9045304479"},"isVisible":true,"orderNumber":4.0,"style":{},"type":"header"}],"templateName":"Template2","userId":"user_2mnj51Qk7QTmbaPiDQ8BIRdLg3n"} +{"_creationTime":1727456283051.6255,"_id":"j57a7j6pv0x2qd0epz4941c3b171jxw9","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2me4Ag84YC4XLG3zpoA1Caxtcid"} +{"_creationTime":1727466709587.6462,"_id":"j57asjwn5xde80y6rgcgh41tz971jc80","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"Srivardhan","github":"","lastName":"Veeramalli","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"aaa","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":"
- Developed and maintained web applications using Reactjs, Nextjs ensuring a high level of performance and scalability.
- Integrated front-end and back-end components seamlessly, delivering a unified and user-friendly experience.
Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mfTbQCDNKQktp9mkYZuifwrV4G"} +{"_creationTime":1727467623140.439,"_id":"j57c0pgpt1cgzy8fkya4pfqg6n71k5wc","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mfVSaKWBLuluUwafHRyqKhMlSp"} +{"_creationTime":1727527154025.5825,"_id":"j57cegdnxc5t6pjhwdt80msrcs71m401","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":"Frontend : JavaScript (ES6+),HTML5, CSS3, TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"wa","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mfPvdV0LAJkDOnZ5QYsAzougsK"} +{"_creationTime":1727461885635.5159,"_id":"j57cjyb9emcx7yfw4n7mmk0r5h71k5db","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"chandrasekharchadalawada7@gmail.com","firstName":"Chandrasekhar","github":"","lastName":"Chadalawada","linkedin":"","phone":"09553394020"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mfJmAqCc0eYjKPY2iCtasXYtZr"} +{"_creationTime":1727551605619.587,"_id":"j57cpr5wsva1syfze5p1s1amhn71mgxd","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2miFgArCN8w2jAZNmbIJnnbtzbF"} +{"_creationTime":1727567540231.9194,"_id":"j57cs2exq027n72pwrp1sdmjds71n183","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2milvvPrNQG22TGmk4Vul3lAC1n"} +{"_creationTime":1727805872452.2234,"_id":"j57d3ba8yz8fky01ragfkrfmx971vrsc","globalStyles":{"columns":2.0,"fontFamily":"Inter","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"work.devanshsk@gmail.com","firstName":"Devansh","github":"DevanshSK","lastName":"Singh Kushwah","linkedin":"https://www.linkedin.com/in/devanshsk/","phone":"8103008804"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"B.Tech in Infrormation Technology","endMonth":"","endYear":"Present","grade":"8.0","instituteName":"Institute of Technology and Management","location":"Gwalior, Madhya Pradesh","startMonth":"Oct","startYear":"2021","studyingHere":true}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"TechieShubDeep IT Solutions Pvt Ltd","endMonth":"Apr","endYear":"2023","jobDescription":"","location":"Gwalior, Madhya Pradesh","role":"Fullstack Web/App Developer","startMonth":"Nov","startYear":"2022","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"
- Developed and launched 10+ web applications using MERN stack, achieving seamless user experiences and a 99.9% uptime for the real-time video conferencing platform.
- Delivered 7+ high-performing mobile applications using Flutter, Dart, Android Studio, Java, and Firebase, resulting in smooth user experiences and increased engagement.
- Engineered a cross-platform e-commerce app, leveraging Flutter, Dart, Django, and Python, leading to a 30% increase in user engagement through intuitive design and efficient functionality.
","githuburl":"https://github.com/DevanshSK/add-learn","liveurl":"https://add-learn.vercel.app/","name":"ADD Learn"}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":"
- Developed a modern, user-friendly web application using React, Next.js, Redux, RTK-Query, Cloudinary, Python, FastAPI, and PostgreSQL, resulting in a 20% improvement in page load times and a 15% increase in user engagement.
- Implemented a robust backend using FastAPI and integrated it with the frontend through Redux and RTK Query, improving API response time by 20% and enhancing overall application performance.
- Utilized Shadcn-UI and Tailwind CSS to create a visually appealing and consistent user interface, resulting in a 25% increase in user retention and a 30% reduction in unauthorized access through role-based authentication using JWT tokens.
Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mqYpQjIvgyANms9yU8gDERrbQR"} +{"_creationTime":1727865327934.768,"_id":"j57dvt2440s119v1qhzk1f6a1h71xet2","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2msVYCrmtV4JsymnpAg33GdH705"} +{"_creationTime":1727637633768.1616,"_id":"j57e5v33sxynkv0w0zt520t3t171q21g","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2ml3uz7DuPO3HCS6mXdj1tu3JbW"} +{"_creationTime":1727516865649.3936,"_id":"j57eb5yvrr8xsbb2y611d4ydxx71me1n","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":"","summary":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"description":""},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2mh7FsoZ3jjvD7uQOF2svMOZNQz"} +{"_creationTime":1727462961008.936,"_id":"j57emykcv2e9rkn5wxs6sxf2th71k2a3","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"zuberkhan034@gmail.com","firstName":"Zuber","github":"","lastName":"Khan","linkedin":"","phone":"8171584000"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"Present","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"WayRabbit","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":"
- Developed and maintained key components of WayRabbit's platform, resulting in a 15% increase in user engagement and a 10% reduction in support tickets.
- Collaborated with cross-functional teams to design and implement new features, achieving a 98% on-time delivery rate for critical project milestones.
- Utilized agile methodologies and continuous integration/continuous deployment practices, leading to a 20% reduction in development time and a 5% increase in code quality.
Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mfLyIEaIgxe6GBmOfQBGzB85GW"} +{"_creationTime":1727942863323.6228,"_id":"j57ewr0pbkjkz23zjbstyz8fgx71yzj4","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"ys30371@gmail.com","firstName":"Yogesh","github":"yogesh616","lastName":"Saini","linkedin":"https://www.linkedin.com/in/yogesh-saini-678563170/","phone":"6367365117","summary":"Passionate front-end developer with hands-on experience in HTML, CSS, JavaScript, and React, dedicated to creating responsive and user-centric web applications. Skilled in leveraging tools like Axios and Cheerio for efficient data management and web scraping in projects such as IntelliChat. Eager to embrace new technologies and continuously enhance my skill set, with a strong commitment to delivering innovative solutions and contributing to collaborative team environments.
"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"projects":[{"description":"","githuburl":"https://github.com/yogesh616/Ripple","liveurl":"https://ripple-steel.vercel.app/","name":"Ripple | React, Firebase, Bootstrap"},{"description":"
- Ripple is a dynamic social media web application designed to faster engagement and interaction among users.
- User Authentication: Integrates Firebase for secure and streamlined user authentication.
- Post Creation and Interaction: Allows users to create and share posts, comment on them, and engage in real-time conversations through integrated chat features.
- Responsive UI: Designed with Bootstrap for consistent and intuitive user experience across devices.
","githuburl":"https://github.com/yogesh616/IntelliChat","liveurl":"https://intelli-chat-two.vercel.app/","name":"IntelliChat | React, Node.js, Cheerio"},{"description":"
- IntelliChat is a web scraping tool designed to extract data from websites based on user prompts.
- Custom Web Scraping: Utilizes Node.js and Cheerio to scrape and collect data from multiple websites according to user-defined queries.
- User-Friendly Interface: Built with React and Bootstrap for a responsive and intuitive interface.
- Data Readability: Future enhancements include AI integration to convert raw scraped data into more readable formats.
","githuburl":"https://github.com/yogesh616/Syncy","liveurl":"https://syncy.vercel.app/","name":"Syncy | React, Tailwind"}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"projects"},{"content":{"description":"
- Syncy is a music streaming web app where users can search and listen to music, and add songs to their favorites.
- Features: Search for songs, play music, and manage favorite tracks.
- Responsive Design: Built with Tailwind CSS for a smooth and visually appealing user experience across devices.
Frontend : HTML5, CSS3, JavaScript (ES6+), React.js, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid.
Backend : Node.js, Express.js, REST APIs, Mongoose, Firebase, Cheerio.
"},"isVisible":true,"orderNumber":2.0,"style":{},"type":"skills"},{"content":{"sectionDescription":"M.J.F. Sr. Sec. School Deeg, 12th PCM 71%
","sectionNumber":1.0,"sectionTitle":"EDUCATION"},"isVisible":true,"orderNumber":3.0,"type":"custom"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":5.0,"style":{},"type":"experience"}],"templateName":"Template1","userId":"user_2mv2idPITGQRh9Rih1ItJMYcLwC"} +{"_creationTime":1727578499619.3809,"_id":"j57ezwshczc2ftm9q3pswb653d71q0rz","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"","firstName":"","github":"","lastName":"","linkedin":"","phone":""},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":"E-learning"}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mj89hARzHDse7AZ46xgEFAuazs"} +{"_creationTime":1727745292327.6963,"_id":"j57fff4sfzm064v7e1x479greh71vp8y","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"jatinsharma4586@gmail.com","firstName":"Jatin","github":"github.com/softartinc","lastName":"Sharma","linkedin":"https://www.linkedin.com/in/jatinsharma4586/","phone":"7906957815"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"","githuburl":"","liveurl":"","name":""}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":""},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2moaG05oJH5DtxJKPjsnLTrYlK9"} +{"_creationTime":1727493093777.6614,"_id":"j57fhk2nzcdmamk2bceba1yjed71nsve","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#000","primaryTextColor":"#000"},"isTemplate":false,"sections":[{"content":{"email":"majorvidosa@gmail.com","firstName":"Major","github":"AlanGacihi","lastName":"Vidosa","linkedin":"linkedin.com/alan-gacihi","phone":"+154112557830"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"education":[{"courseName":"Software Engineering","endMonth":"Mar","endYear":"2023","grade":"86","instituteName":"ALX Holberton School","location":"Nairobi","startMonth":"Feb","startYear":"2022","studyingHere":false}]},"isVisible":true,"orderNumber":1.0,"style":{},"type":"education"},{"content":{"experience":[{"companyName":"Next Technologies","endMonth":"Aug","endYear":"2023","jobDescription":"
- Developed an E-learning platform utilizing React, Redux, and Node.js, facilitating online learning with interactive content, achieving a 20% increase in user engagement and a 15% reduction in course completion time.
- Implemented a robust course management system with features like personalized learning paths, progress tracking, and interactive quizzes, resulting in a 10% improvement in student performance and a 5% increase in course completion rates.
- Integrated a secure payment gateway and analytics dashboard, enabling seamless transactions and providing valuable insights into user behavior, leading to a 15% rise in revenue and a 20% increase in course enrollment.
","location":"Nairobi, Kenya","role":"Systems Engineer","startMonth":"Jun","startYear":"2023","workingHere":false}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"experience"},{"content":{"projects":[{"description":"
- Streamlined software delivery processes by implementing CI/CD pipelines, leading to a 15% reduction in deployment time and a 20% increase in release frequency.
- Collaborated with cross-functional teams to optimize development workflows, resulting in a 10% improvement in developer productivity and a 5% decrease in time to market.
- Contributed to infrastructure design and deployment, ensuring high availability and scalability for critical applications, leading to a 99.9% uptime.
","githuburl":"https://github.com/AlanGacihi/SudokuSolver","liveurl":"","name":"SudokuSolver"}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"projects"},{"content":{"description":"
- Developed a Sudoku Solver application using Python, implementing backtracking algorithms to efficiently solve Sudoku puzzles of varying difficulty levels.
- Utilized constraint satisfaction techniques to optimize the solver's performance, achieving a 95% success rate in solving complex Sudoku puzzles within a reasonable timeframe.
- Implemented a user-friendly interface for puzzle input and solution display, enhancing user experience and allowing for easy interaction with the solver.
Frontend : HTML5, CSS3, JavaScript (ES6+), TypeScript, React.js, Next.js, Redux, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid, Webpack, Babel.
Backend : Node.js, Express.js, REST APIs, GraphQL, Authentication (JWT, OAuth), MongoDB, Mongoose, PostgreSQL, WebSockets (Socket.io), Real-Time Data.
DevOps: Docker, Kubernetes, AWS (S3, EC2, Lambda), DigitalOcean, CI/CD Pipelines (GitHub Actions, Jenkins), Nginx, Apache, PM2.
Version Control & Tools: Git, GitHub, GitLab, Postman, Insomnia, Swagger, VS Code, WebStorm. Testing: Jest, Mocha, Chai, Cypress, Selenium.
"},"isVisible":true,"orderNumber":4.0,"style":{},"type":"skills"}],"templateName":"Template2","userId":"user_2mgKzWp5GUOmJggZMoinXCzSVo5"} +{"_creationTime":1727940490063.4783,"_id":"j57ft0kv6zmp5ndbpqemp9kt8n71z2qf","globalStyles":{"columns":2.0,"fontFamily":"Geologica","photo":false,"primaryColor":"#C026D3","primaryTextColor":"#C026D3"},"isTemplate":false,"sections":[{"content":{"email":"ys30371@gmail.com","firstName":"Yogesh","github":"yogesh616","lastName":"Saini","linkedin":"https://in.linkedin.com/in/yogesh-saini-678563170","phone":"6367365117","summary":"Passionate front-end developer with hands-on experience in HTML, CSS, JavaScript, and React, dedicated to creating responsive and user-centric web applications. Skilled in leveraging tools like Axios and Cheerio for efficient data management and web scraping in projects such as IntelliChat. Eager to embrace new technologies and continuously enhance my skill set, with a strong commitment to delivering innovative solutions and contributing to collaborative team environments.
"},"isVisible":true,"orderNumber":0.0,"style":{},"type":"header"},{"content":{"experience":[{"companyName":"","endMonth":"","endYear":"","jobDescription":"","location":"","role":"","startMonth":"","startYear":"","workingHere":false}]},"isVisible":true,"orderNumber":3.0,"style":{},"type":"experience"},{"content":{"description":"Frontend : HTML5, CSS3, JavaScript (ES6+), React.js, Tailwind CSS, Bootstrap, Responsive Design, Flexbox, CSS Grid.
Backend : Node.js, Express.js, REST APIs, GraphQL, Mongoose, Firebase, Cheerio.
"},"isVisible":true,"orderNumber":1.0,"style":{},"type":"skills"},{"content":{"projects":[{"description":"
","githuburl":"https://github.com/yogesh616/Ripple","liveurl":"https://ripple-steel.vercel.app/","name":"Ripple"}]},"isVisible":true,"orderNumber":2.0,"style":{},"type":"projects"},{"content":{"education":[{"courseName":"","endMonth":"","endYear":"","grade":"","instituteName":"","location":"","startMonth":"","startYear":"","studyingHere":false}]},"isVisible":true,"orderNumber":4.0,"style":{},"type":"education"}],"templateName":"Template1","userId":"user_2muxrfMacIHWVZBxZBIMO0yWyto"} diff --git a/lib/font.ts b/lib/font.ts new file mode 100644 index 0000000..c46776c --- /dev/null +++ b/lib/font.ts @@ -0,0 +1,17 @@ +import { Inter, Montserrat, Open_Sans, Poppins, Raleway, Geologica } from 'next/font/google'; + +export type FontName = 'Inter' | 'Montserrat' | 'OpenSans' | 'Poppins' | 'Raleway' | 'Geologica'; + +export const interFont = Inter({ subsets: ["latin"] }); +export const montserratFont = Montserrat({ subsets: ["latin"] }); +export const openSansFont = Open_Sans({ subsets: ["latin"] }); +export const poppinsFont = Poppins({ + subsets: ["latin"], + weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"], +}); +export const ralewayFont = Raleway({ subsets: ["latin"] }); +export const geologicaFont = Geologica({ + subsets: ["latin"], + weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"], +}); + diff --git a/lib/migrateResumes.js b/lib/migrateResumes.js new file mode 100644 index 0000000..ef876b3 --- /dev/null +++ b/lib/migrateResumes.js @@ -0,0 +1,15 @@ +import { query } from "@/convex/_generated/server"; + +const migrateResumes = query({ + args: {}, + handler: async (ctx, args) => { + const resumes = await ctx.db + .query("resumes") + .filter((q) => q.eq(q.field("isTemplate"), true)) + .collect(); + + console.log(resumes); + }, +}); + +export { migrateResumes }; diff --git a/lib/motion.js b/lib/motion.js new file mode 100644 index 0000000..558caf7 --- /dev/null +++ b/lib/motion.js @@ -0,0 +1,15 @@ +export const container = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + delayChildren: 0.3, + staggerChildren: 0.4, + }, + }, + }; + + export const item = { + hidden: { y: 20, opacity: 0 }, + visible: { y: 0, opacity: 1 }, + }; \ No newline at end of file diff --git a/lib/tipsData.tsx b/lib/tipsData.tsx new file mode 100644 index 0000000..49d413d --- /dev/null +++ b/lib/tipsData.tsx @@ -0,0 +1,64 @@ +interface TipsType { + sec: string; + topText: string; + mainText: string; + bottomMainText?: string; + bottomText?: string; +} + +export const tipsData: TipsType[] = [ + { + sec: "introduction", + topText: "Ready to begin?", + mainText: "Craft your standout resume", + bottomMainText: "Our AI-powered tools streamline the writing process!", + }, + { + sec: "header", + topText: "Welcome aboard! Let's dive in", + mainText: "Your journey to a stellar resume starts now", + bottomMainText: "Our intuitive tools will navigate you through each phase.", + bottomText: + "Begin with your core details, and let our AI assistant enhance your content along the way.", + }, + { + sec: "experience", + topText: "Excellent progress! Next stop → Work Experience", + mainText: "Showcase your professional journey", + bottomMainText: "Our AI simplifies the writing process!", + bottomText: + "Leverage our writing assistance to refine and tailor your experience descriptions for maximum impact.", + }, + { + sec: "education", + topText: "Well done! Moving on to → Education", + mainText: "Time to highlight your academic path", + bottomMainText: "Showcase your educational milestones!", + bottomText: + "Feature your degrees, certifications, and any standout academic achievements.", + }, + { + sec: "skills", + topText: "Fantastic progress! Next up → Skills", + mainText: "Let's spotlight your unique abilities", + bottomMainText: "Craft a skills section that truly stands out.", + bottomText: + "Utilize our curated suggestions to emphasize your strengths and boost your resume's visibility to potential employers.", + }, + { + sec: "projects", + topText: "Final stretch! Last stop → Projects", + mainText: "Showcase projects that define your expertise", + bottomMainText: + "Featuring projects demonstrates your hands-on experience.", + bottomText: + "Include personal, academic, or professional projects to illustrate your skills in real-world scenarios.", + }, + { + sec: "custom", + topText: "Tailor your resume with a custom section", + mainText: "Add any additional details to personalize your resume", + bottomMainText: "Whether it's achievements, hackathons, certifications, or any unique experience—make your resume truly yours.", + bottomText: "Highlight what sets you apart by adding specialized sections that showcase your unique qualifications." + } +]; \ No newline at end of file diff --git a/lib/use-preview.ts b/lib/use-preview.ts new file mode 100644 index 0000000..539db10 --- /dev/null +++ b/lib/use-preview.ts @@ -0,0 +1,18 @@ +import { ResumeTemplate } from '@/types/templateTypes'; +import {create} from 'zustand' + +type previewStore = { + isOpen : boolean; + currentTemplate: ResumeTemplate | null; + onOpen : (template : ResumeTemplate)=>void; + onClose: ()=>void; + toggle : ()=>void; +} + +export const usePreview = create
- Ripple is a dynamic social media web application designed to faster engagement and interaction among users.
- User Authentication: Integrates Firebase for secure and streamlined user authentication.
- Post Creation and Interaction: Allows users to create and share posts, comment on them, and engage in real-time conversations through integrated chat features. - Responsive UI: Designed with Bootstrap for consistent and intuitive user experience across devices.
((set,get)=>({ + isOpen: false, + currentTemplate : null, + onOpen: (template)=>set({isOpen : true,currentTemplate: template}), + onClose: ()=>set({isOpen : false,currentTemplate: null}), + toggle : ()=>set({isOpen: !get().isOpen}), +})) \ No newline at end of file diff --git a/lib/useMobile.tsx b/lib/useMobile.tsx new file mode 100644 index 0000000..bdeac71 --- /dev/null +++ b/lib/useMobile.tsx @@ -0,0 +1,22 @@ +"use client"; +import React, { useEffect, useState } from "react"; + +const useMobile = () => { + const [isMobile, setIsMobile] = useState(false); + + useEffect(() => { + const handleResize = () => { + setIsMobile(window.innerWidth < 768); + }; + + handleResize(); + + window.addEventListener("resize", handleResize); + + return () => window.removeEventListener("resize", handleResize); + }, []); + + return isMobile; +}; + +export default useMobile; diff --git a/lib/utils.ts b/lib/utils.ts new file mode 100644 index 0000000..d084cca --- /dev/null +++ b/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..4678774 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4426a1b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8834 @@ +{ + "name": "resume-craft", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "resume-craft", + "version": "0.1.0", + "dependencies": { + "@clerk/nextjs": "^5.1.6", + "@google/generative-ai": "^0.14.0", + "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.1", + "@types/lodash": "^4.17.5", + "@vercel/analytics": "^1.3.1", + "@vercel/speed-insights": "^1.0.12", + "array-move": "^4.0.0", + "axios": "^1.7.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "convex": "^1.12.2", + "framer-motion": "^11.2.12", + "fs": "^0.0.1-security", + "lodash": "^4.17.21", + "lucide-react": "^0.396.0", + "next": "^14.2.4", + "nextjs-toploader": "^3.7.15", + "nprogress": "^0.2.0", + "quill": "^2.0.2", + "react": "^18", + "react-color-palette": "^7.1.1", + "react-color-pallete": "^1.0.1", + "react-date-picker": "^11.0.0", + "react-dom": "^18", + "react-easy-sort": "^1.6.0", + "react-hot-toast": "^2.4.1", + "react-quill": "^2.0.0", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7", + "zustand": "^4.5.4" + }, + "devDependencies": { + "@types/node": "^20", + "@types/nprogress": "^0.2.3", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.4", + "ignore-loader": "^0.1.2", + "postcss": "^8", + "puppeteer": "^22.12.1", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@clerk/backend": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-1.2.4.tgz", + "integrity": "sha512-H6K1kHPaDFM6pBdwDAHh1jWSZxCWhGPzDmqgc7LByjqKS6RZUf3cs5mJkIXyopUpHY7wvwj50vSF0xJ46MEzNA==", + "license": "MIT", + "dependencies": { + "@clerk/shared": "2.3.1", + "@clerk/types": "4.6.1", + "cookie": "0.5.0", + "snakecase-keys": "5.4.4", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "node_modules/@clerk/backend/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@clerk/clerk-react": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.2.5.tgz", + "integrity": "sha512-Ihf1t2LdWTagW3U5BH5KRwQ8i+ECaZGEUymhJ89eZA+Ux5iXwLfOIBdwCIs45gbVuFiQ8WK0W00eaDgsNaf1mw==", + "license": "MIT", + "dependencies": { + "@clerk/shared": "2.3.1", + "@clerk/types": "4.6.1", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-beta", + "react-dom": ">=18 || >=19.0.0-beta" + } + }, + "node_modules/@clerk/clerk-react/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@clerk/nextjs": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-5.1.6.tgz", + "integrity": "sha512-HAxDzvVJ6EM99NbxNYOvMfGSSFEXyz+yPo1ER7RoV95sTH61PZ4ugsg+Ml0AhjQ60j3xUU/BPhQEYogGxvQzEA==", + "license": "MIT", + "dependencies": { + "@clerk/backend": "1.2.4", + "@clerk/clerk-react": "5.2.5", + "@clerk/shared": "2.3.1", + "@clerk/types": "4.6.1", + "crypto-js": "4.2.0", + "path-to-regexp": "6.2.2", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "next": "^13.5.4 || ^14.0.3 || >=15.0.0-rc", + "react": ">=18 || >=19.0.0-beta", + "react-dom": ">=18 || >=19.0.0-beta" + } + }, + "node_modules/@clerk/nextjs/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@clerk/shared": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-2.3.1.tgz", + "integrity": "sha512-WX7cCViYqkNMnbFfT2B93ykNcSseoYM1obMUynO60VBl9Zi6Epde5tn9VRamhuOdojgPR+DyYkH9AzBpXFYnSg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@clerk/types": "4.6.1", + "glob-to-regexp": "0.4.1", + "js-cookie": "3.0.5", + "std-env": "^3.7.0", + "swr": "^2.2.0" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-beta", + "react-dom": ">=18 || >=19.0.0-beta" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@clerk/types": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.6.1.tgz", + "integrity": "sha512-QFeNKPYDmTJ88l5QYG0SPwbABk42wRMalW3M/wAtr+wnQxBCXyX2XRZe9h4g2rH1VF+wG4Xe56abeeD+xE4iEw==", + "license": "MIT", + "dependencies": { + "csstype": "3.1.1" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "node_modules/@clerk/types/node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "license": "MIT" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", + "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==", + "license": "MIT" + }, + "node_modules/@google/generative-ai": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.14.0.tgz", + "integrity": "sha512-wNgIGEpInlVd98SapqvnQX8HQz0zM43U9NMvrbIMKQzz2pQm60pJTeHHlICTDcy/yZNLsvFQ/RfD+Ck9H8K7vw==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", + "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.4.tgz", + "integrity": "sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", + "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", + "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", + "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", + "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", + "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", + "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", + "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", + "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", + "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz", + "integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.4.0", + "semver": "7.6.0", + "tar-fs": "3.0.5", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@puppeteer/browsers/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.1.tgz", + "integrity": "sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", + "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", + "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", + "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", + "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", + "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", + "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", + "integrity": "sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.0.tgz", + "integrity": "sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.1.tgz", + "integrity": "sha512-LLE8nzNE4MzPMw3O2zlVlkLFid3y9hMUs7uCbSHyKSo+tCN4yMCf+ZCCcfrYgsOC0TiHBPQ1mtpJ2liY3ZT3SQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", + "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.14.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz", + "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/nprogress": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.3.tgz", + "integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/quill": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@types/quill/-/quill-1.3.10.tgz", + "integrity": "sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw==", + "license": "MIT", + "dependencies": { + "parchment": "^1.1.2" + } + }, + "node_modules/@types/quill/node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", + "license": "BSD-3-Clause" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vercel/analytics": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.3.1.tgz", + "integrity": "sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==", + "license": "MPL-2.0", + "dependencies": { + "server-only": "^0.0.1" + }, + "peerDependencies": { + "next": ">= 13", + "react": "^18 || ^19" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@vercel/speed-insights": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.0.12.tgz", + "integrity": "sha512-ZGQ+a7bcfWJD2VYEp2R1LHvRAMyyaFBYytZXsfnbOMkeOvzGNVxUL7aVUvisIrTZjXTSsxG45DKX7yiw6nq2Jw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "peerDependencies": { + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "react": "^18 || ^19", + "svelte": "^4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } + } + }, + "node_modules/@wojtekmaj/date-utils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.5.1.tgz", + "integrity": "sha512-+i7+JmNiE/3c9FKxzWFi2IjRJ+KzZl1QPu6QNrsgaa2MuBgXvUy4gA1TVzf/JMdIIloB76xSKikTWuyYAIVLww==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/date-utils?sponsor=1" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-move": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/array-move/-/array-move-4.0.0.tgz", + "integrity": "sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", + "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz", + "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "node_modules/bare-os": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz", + "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/bare-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz", + "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.18.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chromium-bidi": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.24.tgz", + "integrity": "sha512-5xQNN2SVBdZv4TxeMLaI+PelrnZsHDhn8h2JtyriLr+0qHcZS8BMuo93qN6J1VmtmrgYP+rmcLHcbpnA8QJh+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convex": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/convex/-/convex-1.12.2.tgz", + "integrity": "sha512-LQb5o2eritXTObYA/HqkUzHky60qTVU4pLefqTh09PU5xfBBAi0ObF9EmYvD657jKsWGjU5MVjdg8aZ5XhVl2A==", + "license": "Apache-2.0", + "dependencies": { + "esbuild": "^0.17.5", + "jwt-decode": "^3.1.2", + "node-fetch": "^2.6.1", + "prettier": "3.2.5" + }, + "bin": { + "convex": "bin/main.js" + }, + "engines": { + "node": ">=16.15.1", + "npm": ">=7.0.0" + }, + "peerDependencies": { + "@auth0/auth0-react": "^2.0.1", + "@clerk/clerk-react": "^4.12.8 || ^5.0.0", + "react": "^17.0.2 || ^18.0.0", + "react-dom": "^17.0.2 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@auth0/auth0-react": { + "optional": true + }, + "@clerk/clerk-react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-element-overflow": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/detect-element-overflow/-/detect-element-overflow-1.4.2.tgz", + "integrity": "sha512-4m6cVOtvm/GJLjo7WFkPfwXoEIIbM7GQwIh4WEa4g7IsNi1YzwUsGL5ApNLrrHL29bHeNeQ+/iZhw+YHqgE2Fw==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/detect-element-overflow?sponsor=1" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/devtools-protocol": { + "version": "0.0.1299070", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1299070.tgz", + "integrity": "sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.4.tgz", + "integrity": "sha512-Qr0wMgG9m6m4uYy2jrYJmyuNlYZzPRQq5Kvb9IDlYwn+7yq6W6sfMNFgb+9guM1KYwuIo6TIaiFhZJ6SnQ/Efw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "14.2.4", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz", + "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/framer-motion": { + "version": "11.2.12", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.12.tgz", + "integrity": "sha512-lCjkV4nA9rWOy2bhR4RZzkp2xpB++kFmUZ6D44V9VQaxk+JDmbDd5lq+u58DjJIIllE8AZEXp9OG/TyDN4FB/w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", + "license": "ISC" + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-user-locale": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-2.3.2.tgz", + "integrity": "sha512-O2GWvQkhnbDoWFUJfaBlDIKUEdND8ATpBXD6KXcbhxlfktyD/d8w6mkzM/IlQEqGZAMz/PW6j6Hv53BiigKLUQ==", + "license": "MIT", + "dependencies": { + "mem": "^8.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/get-user-locale?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/goober": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.14.tgz", + "integrity": "sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==", + "license": "MIT", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-loader": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ignore-loader/-/ignore-loader-0.1.2.tgz", + "integrity": "sha512-yOJQEKrNwoYqrWLS4DcnzM7SEQhRKis5mB+LdKKh4cPmGYlLPR0ozRzHV5jmEk2IxptqJNQA5Cc0gw8Fj12bXA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/lucide-react": { + "version": "0.396.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.396.0.tgz", + "integrity": "sha512-N/zP+9vEfEYHiMWMpjwH/M5diaV0e4UFe07BpgdzaRYce5QvXi87hixf7F0Xqdr3zuX/9u7H/2D4MVXIK22O0A==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/make-event-props": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", + "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/next": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz", + "integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==", + "license": "MIT", + "dependencies": { + "@next/env": "14.2.4", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.4", + "@next/swc-darwin-x64": "14.2.4", + "@next/swc-linux-arm64-gnu": "14.2.4", + "@next/swc-linux-arm64-musl": "14.2.4", + "@next/swc-linux-x64-gnu": "14.2.4", + "@next/swc-linux-x64-musl": "14.2.4", + "@next/swc-win32-arm64-msvc": "14.2.4", + "@next/swc-win32-ia32-msvc": "14.2.4", + "@next/swc-win32-x64-msvc": "14.2.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/nextjs-toploader": { + "version": "3.7.15", + "resolved": "https://registry.npmjs.org/nextjs-toploader/-/nextjs-toploader-3.7.15.tgz", + "integrity": "sha512-DvvXEJVRPfE2j1HVXgFhmPl8pRcLb/4mvyVBDuYdMdkbEY7KJghp0fG5iOZ002cV6awbBw9j/Di7vQL8LRazxQ==", + "license": "MIT", + "dependencies": { + "nprogress": "^0.2.0", + "prop-types": "^15.8.1" + }, + "funding": { + "url": "https://buymeacoffee.com/thesgj" + }, + "peerDependencies": { + "next": ">= 6.0.0", + "react": ">= 16.0.0", + "react-dom": ">= 16.0.0" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parchment": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==", + "license": "BSD-3-Clause" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "22.12.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.12.1.tgz", + "integrity": "sha512-1GxY8dnEnHr1SLzdSDr0FCjM6JQfAh2E2I/EqzeF8a58DbGVk9oVjj4lFdqNoVbpgFSpAbz7VER9St7S1wDpNg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.2.3", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1299070", + "puppeteer-core": "22.12.1" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/puppeteer-core": { + "version": "22.12.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.12.1.tgz", + "integrity": "sha512-XmqeDPVdC5/3nGJys1jbgeoZ02wP0WV1GBlPtr/ULRbGXJFuqgXMcKQ3eeNtFpBzGRbpeoCGWHge1ZWKWl0Exw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.2.3", + "chromium-bidi": "0.5.24", + "debug": "^4.3.5", + "devtools-protocol": "0.0.1299070", + "ws": "^8.17.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "license": "MIT" + }, + "node_modules/quill": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.2.tgz", + "integrity": "sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==", + "license": "BSD-3-Clause", + "dependencies": { + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" + }, + "engines": { + "npm": ">=8.2.3" + } + }, + "node_modules/quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "license": "MIT", + "dependencies": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-calendar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-5.0.0.tgz", + "integrity": "sha512-bHcE5e5f+VUKLd4R19BGkcSQLpuwjKBVG0fKz74cwPW5xDfNsReHdDbfd4z3mdjuUuZzVtw4Q920mkwK5/ZOEg==", + "license": "MIT", + "dependencies": { + "@wojtekmaj/date-utils": "^1.1.3", + "clsx": "^2.0.0", + "get-user-locale": "^2.2.1", + "warning": "^4.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-calendar?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-color-palette": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/react-color-palette/-/react-color-palette-7.1.1.tgz", + "integrity": "sha512-fBmTRWmTCrH08yZwU+5647pUKABRM6h4TS/43Q/mt/TLH1hyTfWopCc6wm2L9IoynPcOT7SaOm3Xmdz+goFEDw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-color-pallete": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-color-pallete/-/react-color-pallete-1.0.1.tgz", + "integrity": "sha512-j4Yh6K8lh3LWP0ExYV2qQPp1KT/y4fTkTJH/UsBWByr+q74zcNcszwHz062wbxqux+kK76e4OUfDgMolW9zzXg==" + }, + "node_modules/react-date-picker": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/react-date-picker/-/react-date-picker-11.0.0.tgz", + "integrity": "sha512-l+siu5HSZ/ciGL1293KCAHl4o9aD5rw16V4tB0C43h7QbMv2dWGgj7Dxgt8iztLaPVtEfOt/+sxNiTYw4WVq6A==", + "license": "MIT", + "dependencies": { + "@wojtekmaj/date-utils": "^1.1.3", + "clsx": "^2.0.0", + "get-user-locale": "^2.2.1", + "make-event-props": "^1.6.0", + "react-calendar": "^5.0.0", + "react-fit": "^2.0.0", + "update-input-width": "^1.4.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-date-picker?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-easy-sort": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/react-easy-sort/-/react-easy-sort-1.6.0.tgz", + "integrity": "sha512-zd9Nn90wVlZPEwJrpqElN87sf9GZnFR1StfjgNQVbSpR5QTSzCHjEYK6REuwq49Ip+76KOMSln9tg/ST2KLelg==", + "license": "MIT", + "dependencies": { + "array-move": "^3.0.1", + "tslib": "2.0.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": ">=16.4.0", + "react-dom": ">=16.4.0" + } + }, + "node_modules/react-easy-sort/node_modules/array-move": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-move/-/array-move-3.0.1.tgz", + "integrity": "sha512-H3Of6NIn2nNU1gsVDqDnYKY/LCdWvCMMOWifNGhKcVQgiZ6nOek39aESOvro6zmueP07exSl93YLvkN4fZOkSg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-easy-sort/node_modules/tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "license": "0BSD" + }, + "node_modules/react-fit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-fit/-/react-fit-2.0.1.tgz", + "integrity": "sha512-Eip6ALs/+6Jv82Si0I9UnfysdwVlAhkkZRycgmMdnj7jwUg69SVFp84ICxwB8zszkfvJJ2MGAAo9KAYM8ZUykQ==", + "license": "MIT", + "dependencies": { + "detect-element-overflow": "^1.4.0", + "warning": "^4.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-fit?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/react-hot-toast": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz", + "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==", + "license": "MIT", + "dependencies": { + "goober": "^2.1.10" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-quill": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-quill/-/react-quill-2.0.0.tgz", + "integrity": "sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg==", + "license": "MIT", + "dependencies": { + "@types/quill": "^1.3.10", + "lodash": "^4.17.4", + "quill": "^1.3.7" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/react-quill/node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/react-quill/node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", + "license": "MIT" + }, + "node_modules/react-quill/node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "license": "Apache-2.0" + }, + "node_modules/react-quill/node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", + "license": "BSD-3-Clause" + }, + "node_modules/react-quill/node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "license": "BSD-3-Clause", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/react-quill/node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "license": "MIT", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", + "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.4", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/snakecase-keys": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.4.4.tgz", + "integrity": "sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==", + "license": "MIT", + "dependencies": { + "map-obj": "^4.1.0", + "snake-case": "^3.0.4", + "type-fest": "^2.5.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/snakecase-keys/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/streamx": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", + "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swr": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.5.tgz", + "integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==", + "license": "MIT", + "dependencies": { + "client-only": "^0.0.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz", + "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", + "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-input-width": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/update-input-width/-/update-input-width-1.4.2.tgz", + "integrity": "sha512-/p0XLhrQQQ4bMWD7bL9duYObwYCO1qGr8R19xcMmoMSmXuQ7/1//veUnCObQ7/iW6E2pGS6rFkS4TfH4ur7e/g==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/update-input-width?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true, + "license": "MIT" + }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zustand": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.4.tgz", + "integrity": "sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/zustand/node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..811b8d3 --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "name": "resume-craft", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@clerk/nextjs": "^5.1.6", + "@google/generative-ai": "^0.14.0", + "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.1", + "@types/lodash": "^4.17.5", + "@vercel/analytics": "^1.3.1", + "@vercel/speed-insights": "^1.0.12", + "array-move": "^4.0.0", + "axios": "^1.7.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "convex": "^1.12.2", + "framer-motion": "^11.2.12", + "fs": "^0.0.1-security", + "lodash": "^4.17.21", + "lucide-react": "^0.396.0", + "next": "^14.2.4", + "nextjs-toploader": "^3.7.15", + "nprogress": "^0.2.0", + "quill": "^2.0.2", + "react": "^18", + "react-color-palette": "^7.1.1", + "react-color-pallete": "^1.0.1", + "react-date-picker": "^11.0.0", + "react-dom": "^18", + "react-easy-sort": "^1.6.0", + "react-hot-toast": "^2.4.1", + "react-quill": "^2.0.0", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7", + "zustand": "^4.5.4" + }, + "devDependencies": { + "@types/node": "^20", + "@types/nprogress": "^0.2.3", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.4", + "ignore-loader": "^0.1.2", + "postcss": "^8", + "puppeteer": "^22.12.1", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/providers/ConvexAndClerk.tsx b/providers/ConvexAndClerk.tsx new file mode 100644 index 0000000..10d36d8 --- /dev/null +++ b/providers/ConvexAndClerk.tsx @@ -0,0 +1,21 @@ +"use client" +import { ClerkProvider, useAuth } from "@clerk/nextjs"; +import { ConvexReactClient } from "convex/react"; +import { ConvexProviderWithClerk } from "convex/react-clerk"; +import React from "react"; + +const ConvexAndClerk = ({ children }: { children: React.ReactNode }) => { + const convex = new ConvexReactClient(process.env.NEXT_PUBLIC_CONVEX_URL as string); + + return ( + <> + + + > + ); +}; + +export default ConvexAndClerk; diff --git a/providers/NextLoader.tsx b/providers/NextLoader.tsx new file mode 100644 index 0000000..c2e0b4e --- /dev/null +++ b/providers/NextLoader.tsx @@ -0,0 +1,22 @@ +"use client"; +import useMobile from "@/lib/useMobile"; +import { usePathname } from "next/navigation"; +import NextTopLoader from "nextjs-toploader"; +import React from "react"; +const NextLoader = () => { + const pathname = usePathname(); + const isInBuildResume = pathname.includes("build-resume"); + const isMobile = useMobile(); + + return ( ++ {children} + ++ ); +}; + +export default NextLoader; diff --git a/providers/ScreenProvider.tsx b/providers/ScreenProvider.tsx new file mode 100644 index 0000000..7eb2449 --- /dev/null +++ b/providers/ScreenProvider.tsx @@ -0,0 +1,41 @@ +"use client"; +import { useState, useEffect } from "react"; + +export default function ScreenProvider({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + const [isMobile, setIsMobile] = useState(false); + + useEffect(() => { + const checkIfMobile = () => { + setIsMobile(window.innerWidth < 768); + }; + + checkIfMobile(); + window.addEventListener("resize", checkIfMobile); + + return () => window.removeEventListener("resize", checkIfMobile); + }, []); + + return ( + + {isMobile ? ( ++ ); +} diff --git a/providers/TemplateWrapper.tsx b/providers/TemplateWrapper.tsx new file mode 100644 index 0000000..8d2e4ed --- /dev/null +++ b/providers/TemplateWrapper.tsx @@ -0,0 +1,35 @@ +import useMobile from "@/lib/useMobile"; +import { cn } from "@/lib/utils"; + +const TemplateWrapper = ({ + children, + size, +}: { + children: React.ReactNode; + size: "sm" | "md" | "lg"; +}) => { + const isMobile = useMobile(); + + return ( +++ ) : ( + children + )} ++++ Best Experience on Larger Screens +
++ For the best experience, please open this website on a laptop or + PC. +
++ {children} ++ ); +}; + +export default TemplateWrapper; diff --git a/public/image.png b/public/image.png new file mode 100644 index 0000000000000000000000000000000000000000..88998ff907ac057da7b44bf5e6b99f394f72e250 GIT binary patch literal 168586 zcmeEtcT`i`_O4P?;2=s7K>-_GM5)pd6$GS6?-7w2nm|Bm07aClNRi&8Ljr`*Ap!zQ zZz1#`NK5DtYJj&9&;6bIxaXet-rsMWF*pub*;#Y0IluYMZ_WKqT~&dal9}?vi4)X{ zj~-~8IC0wN#0k5 zW$C6x!_zlKoDYjX)3a*~l~|=lJm66-rEQ5mrxDrpjQc8|!RNm8p6gSJL$*^NB9h*F zUkVv4+dW9ew$(UWj>J|VuoatYcwsox=DyF2TgPsKrvrSuL#)|BZSRuZgzOguGMvM1 zmx6(k;Ca~-C&|wJ-48FtFX7{un9BH4TB5+Izg_n057ke6$1#^YqeP~7WS3jV|L&1T z4_TH!=?`+4*B*MX+ EE&= EcWul3 zkN>`OD-u|$1`!Q4Z~DjW{%M&ejD!sJ$JxJ+vBQ9Hpue(3XfnxAAwz}ySBITAnM?~T z%~{MWYWv6S{>!o!ZQt>jI={b-o5MehhXVT?8^|kpHy(56??dd@QcYl~G 3BLC|N2$wY zei90W4r*wcE31C!>G`Q!kw(Itobe^wW|fNi1B$|L?JnicX+3f&RHRrC!Iccv*rI5f zbPFgSb5alXj;Ft$Kh;mh3GtXu*owJn#%@kE-tEm%C9JcoA2pu)XHf7@P=-bwZxh4s z`t%+yyOX2G?z0)J;kNJ*`bwPA#-o&&s}l{ChFWRAmo2+8Gi_)}Bkebic_k5;%YZsj z=dcp5aqW1{t4EV;lUH;=TJc6}34B)-b54hGO*Pw5+6?Ml)ip7SR+$_-`p&Hc*@?3F zsA@ 6p&icKGyY_i oB&Oj7z-0D#MU^p_Z~9>-2rPWAU+Fj~@O zYYXAS6LeA4b8Z=IlDRE=OOeD@dp1ybL#Eu(cSUB(R;pw%-i(1RFjH23&LP&z *#*klMFKm d{FEIN^NX1z{rl7NK@UF4*e (@D5b{3*2J;z1ztYP&-3E>Pk zy7<0TB-sMIP;HR~r!x;! E5eu+5Euo|Z%F5{rAqDjna)rNQ-(86Uz zf0IwYG^&JzVp&tt#YoW8ey7e3zXAzUM|&jTX^#VS5|Rucg$;2(N6sCmCtSt85_Jyu z C1~GQ_<;QY5_#@g&HW= zNk0unVCxVk`~Lua^ol9jsqhN-QuZV}kvwUNCGVV;8u3$dkwCgI1@MDSW&uHmxO&VPGVuACS(y(f&7AY-KR}QucMt zK^KR!BtNL@9%Z1H$@tfjMoK)U(W&q>vLXN#5KF)t*}H!|+y=&?Iuo%7 VPJ0}GSx zYhB&0hXo8HX~o26KA0R{h1os|PgB3u@Syk5sdL-03~9ZZ=D|`0C9kiLKOj?{Q&c*b zdD-vO&cMTyB5%GOK>ocm|E5_-xJ*IGtE{M^$+tIj>l^|c$@_95-BrQ_My+FLlI}0# zUnQ!3Jk~6xj8M=EuM1Omh&71Ln61F!Pn#SnE-`6cJj{|W81l!>6 zljtm2#DB(TbdJGuc^Ab`=tLtBu Hr~V9_wKz=O7MyatF}*~)c!K4qP^11n(H!E zL77d@WjOyLgIKMT1 2IzRuY1D2wp^gUcEJ2$RZa0j zZa_ |- XgA3MT|kO2}YmDJDXh=;rn z{IX(s!9ZCmzJaWG@z(Y{Pc=le3$iJxHhb3} ^ULog zwXe~Pir4<|Y?H^Q!-jqM6?Q;|zN$8tXY3q%;y_+`jvDPwWp7|CV8w+K!J5Z1>4cvK zJ(umW;itjc>A2Sc$+suV=yzibkE~F?Ov15+?A&U%%bA%-A}B8#UY43sG#_|{)jS=! zJZYlPPQ;1obh)4JDeZ)$Ewu(oh(AUiRNP~5d9>mtlWiszW5Rk{h0tWo1>Fq+H9ww! zh>z?uu}`5bJeT96uNlgcZ)YTH^i*d-URFAn&nsFb=`;F+I_DW}0*+CDGxV0rcpGcW z>$a?AG78JBpYH!UkrX1uz$=iZv#y}e=;$WKr$z#(#*180S l_|ohksh`udN|$l5|hlLdUkNoSjE0AfsZ fGrLvBs{FXWahd7#4ZY<*FG&mU0KhX$GHFiK@h0 zDXhZPC*PHPoFmVMVpElzqqB$FV^ik`VuSYhv_;6j!5j8+@1)j{yozKX;yAPqtl!t$ zDCdA`bJIKRKeRvIrMAlEp_0#=sL B+5&tYu zwKs>*yq0ulURA<-{IWlYZT5NGae6YPaRmi%e1td4$->wrfN8$?k=3@v7jr#8>H1+2 z-75Z4lmoYH+ae&Ifr9I$CozfUNyY)?+vHW-QcH?^_kgPF0Hnt2iy5q8oz>UW_aWD& z;14pEu%9)hGI8rC5yUk@(Ct*)$(GeMHSL{~bl=`^r^vszU5S7`c&oY0OHKn-`mhPg z_RYOo%pKMR2Z6=`#s$7O(e#NFwX@XVusm|HN0=3ug4a8>$bbA>s9LIuRQMn0HBQ z^r-k{QPkp%t#-AyGyfsSi_ddeE#nt$v9^Lf<_KnmWkV6~Hshm(T)Do^%itC#x9>A) zZ9D8+d^T|RAwsxJ#*k>AI6}voTS=zy{tCP%t(PMK$!52t^|gV8!3b4Myif96IZSgW zi6v+^oZi)qZo7G*Ywi|;KHlBO@!&_U6PS)%{>^uO^ LdB zVz---c1xO}D@=&Dc2yYsgM+fjpVqFdI&A(R8vME3SI6`JIpt4=! *dRI=$FMZ`@cDkdKlT` VaO _~2XA}K7Iw)P zm!GkTCH_q>AzMMm^$38cQn+;?G7zo^aUL8N#f$l4okV4`ZyyoBh=f-l(q|wbI|@b1 zVr#`3jDSdFGC|LTXa}q@M+W!H%ZTYJ%GmKSLiqBOXo=BLlA8~YR~;utt^)HULH{2i zzIUy=fe1BMKWc5%I}WX0A1{bScpy%r!mbQFKHc$0fU&omPum#r7m=;bx?S81&srxV za50?p$7+~PbNq!C{s~TgWR$eTY01OzZl~>>2I#zcnWMmw5v-i!JX^w1B})V_jn$gr z;$S6*;FXSTM4mhy(PKnCMefWaKuRS!j*4H_$SAAY5Y~z?WeEws?fL35xVPBs&&Gpi zP4F3Na+}w`4qP^gL?PK^Txb%*KWu^$yAPUyR#Cduyr{6WAg+?E{(XZu^&q9N4xZPA zVLc@QR0l)VQzYmIznpi4?XWBFFm>oSH;{N`pn?bRnANp$KcGyo4sdHx9D_P9gOn?+ zlEe3nB|cTPN?Imbf)>Th!m-&aG}|Rop+`M;N;O3}rO(1u`+G5-x4wmdcBLdogPBlC zWB2>udVsVZ9QCpOKWHx3D1I{T#MQ42_hPm$?+SEmH0ML(58B)eb!Nf)cF`WULdQk< z_*4SVvS=tN1vT(oxgskJ?vLDFBqnUTJ$Ue%MrPjI?5ta7WM%P6N*X C!dxVXW}%1W+wUNi|QX;eZ&enTLQ z;ijYX 3u?9jpEhqe|!GAR*nXH zvopt2VLzNO#wZ;Rt5QYh>0-Wr ^+&0@l zBhy!EH=GXzxel7^R4|&nOofC}BwBVR6(mFV^*g0D6PQJ8vuivzZKm5|`=vIPunwc0 zeQfoMAs&IY(UUEb|`= zm)X}_s$L6A^4YN#w(j}5ld;njdWq1&3%Bae*U!}{h?_YpZ}a9b#MSM|Mkst#%;r-I z_bhd>iEORg&L&rqE(85@bbRXLhr$0v2&$A-1oB#T;33f6G-g&86>C`#
nZNd?>Sd`zPU(OPXp@<^eg=g)x?L zgRT51Bfu3EnJV#_wcfk9>3D}yxdApPv77Swg6Rs(xN3biJsdY)_ljBECEJ65GjIPx z1mULQP9wGcUOw!yHM+Cy+E|Te8RYQmKkpFmhNeY1!;|4MFpKs$eL|89w02{DFg-^z z%iu>Lg|~_r$7c};Tq7f>9}aRL|28cq2#!6Hy!_HAFUPLN2~T3YqATN8z%6b`)V2p@ zc}pGPQ$#Vi2OuvX87o-*o*l}49FKzj)Rg`bRzY0qv~}>c`9tm{(i!Et4EERZ1YFf0 z$3Jtf%zJkudKNG(Re{z0E2VRL+i {~3Ct6pA1G=#PmE*w%CVd%Xc@-9F&sWHpcl$2WzZfkib=Wms>EeZ zgU_Jkn+?W$b2JNZoq=Eog-`I7+z+S2Jpv-##<=LNMyJJ~ wb0H!c6r5g%4BY znU`+?wK&j)4E 7OpV; z#X+wr24a7Kp)Tp^vwdrwGW>KTRpM>6RU9cb3#G&Pv0pQ7*UY0|i75Eg!S#m*$(lK~ zgq1ZV*c@uNGfQm;pOJrWjppmEgy8#XJl*g{hzH2QP0Y=`wh&M tMf_{GEn@H=zo z0r;Idn?!L){!F`5Yk>jMN$j?W?LbPAS+mVZ`HOz u9V9@hp30GkfsW6F|NQMh_4*K7nu>$7-!|7b@gMJmS zfBTVe^-yan)341O7qr+JdNppeu_-(ga~PBu*M%Xm%WY$?ySuylY1=nuXzAz(y=pT0 zf>xFt2{}NT>F-WUZ;ijI1a?~ha*FqcwD+`Fa1;QC(l#cH@ZMdYGi(1Qj0zE%`XqAd z^l31VV>(vg4SEp;1A{o^>k ~1O&J=ENvPyfEYeO|NxhKE)k;VyGM~Fjk zpR1N?hbi4umL }HPa mnkZpFT}-T^cI@YMDV@;UNFO&C{cqDwptM9B)~KZ6d|p7V}x9Jnq)d0JY4}^F(}u z*p^*i_J<4nCi(E%otE5>vF5fdTl0v{d@!e4l5P79*RwwN@82(APuV5lEzuvw%RZS1 z(f=Z!S7ydB?#Uo1R1lBpq+Jy}*f#gp4 GNxEy8HHCBo5Xs_gPcq0PXrcEbf6duq+8%CFlV9Wg%HKbK z4XA&n?P5U%a> Bt<0O1=-N4YW~;Y~Jx(a>IIOS@&k@+f5xoQA##R1v!f8p2PHNhiV 0zHI2c^ zvbT@JT2*A@ 4S`34zv{wzm0%gjgmcT2!QnvSj>VEysW`==TUkWa(ihdSK_D zg@gP-y^QlKhC|mQcB68D>!sLLXXn45|8MO1a#dZY4o>l?y{6T0xwY%hGNBJBG2@$U zQa%*Gf9?TW2>{}DLd2+#iNq&q7yvm0@0IA?Y0~?^Eyjami_mrQ9`fk%j`t5~CPR?L z;w~7a(%}tVnE9z28lk6s9pzcMD+y>2Q4^AI;F^RGWdHg6F>XChPLctn1}Vr>FQM|M zAUff8%2)P}A3rJ+Sx0^|eYJCiOKPA9h?wNIHu)HK@ce{D@^<_#D=Jf!48=Yu7#S+d zbmkl}`lNW-5x@Pn4#DUQz3>(!=?6HdQ*0N*VK{B30myC%h6Z&@4yZl(gI|s8m2o-} zplI>0xK>j7AnLL6bq*bcqBDPhEQrxB-CmHADd_;``P`fPxITH#Q8(qYKS<$90u!KL z4U>-NFL9g^@gzn!grLi96qk zmS=bWIK0rB$%r4-ZyHQ=R=RvG=2Bsw^FLzhd(d+Hn!B!`mrAPT`~ny;y(7-bj~|bL z{dpBOLH7*+ez)R4Q~-s~0%k_r%pW^}S5uNpc?1ythZB>}j)zRj0GZPDE#zQvv~MXt zxm|6{bO`ntY5JAlE7eWv9OS!{m%(NUSH^jPr_}cJme3swbxGrte1Fic4=MxMhsfF_ zCH&T>BmsR2C^6oGF>a-DKoA2gUoAbh@`66#<8QC&|ARbF9}Gly(QS=0N04$j0~GJ( zMn~M~YxQgTn|Y|t! ;Rn-;7S!ifoQ)CghAw5)tZ?Y)b-(0)EKGz zSKtP0o&l%z4DbrOymH;KfcKU4BWt;~g$%5n9s_bWWpU#9kyj< YC0V(zUAfD zKo?AJ)xi~9u13kGYyp58+!+yZj7yyGO9KM`!ozUzk#4c90+gWY-9#o-?RMqzpbp?5 zTTHLxvGZNN?N|JVPkS47y{uNfoq|;IaRBbmR@Vg3HwmaEj_uuDLuHX+)NqWGNS>IX zjNoL9-)rAZz;hl@wqCho&*WkQES^eF&SpP4qof;$XXJ2u67x}>7sCAl*cmP7^r_?i z@HGTJXn*Gg?a}90`QArIXWkDy%gxUI@UUN_qT=n|p(O&%!0d_i {WK#%qlQ3U185I5Nydq&=4jUuq>BlV6UU~o@)XLK-P%0r2dxaH@@wCXX zG<>&lBH;S?JzyWKeN0-vFHrwtp_jqogilp+(^0^va~-;QP!Ct3-VhYr0t}ZqxG#v| zLjR5J9Qt#N1E5fLQc9jjC&%UfD+D9h%tum34iPIJmX>zRA>&gd8B9cR{ 5v;+g;SUBK0N@5>ArJFq{)`Y-h1$J}zJoEz{92mSAK^7REa z95WshLrQY?a4L%QC=mYYm~kfHY?8WZ`bd6(jNd8{T!8eR)Wi$nGd+x~Q<*RSva3G} zACL}z)ow2X4 HpSrni9j&RS72R@MVR@U 9Y6nR zvO~N6IQ1Xw7d&KQ>1^5LM;@I5NC}|!Nrvj;4C;Z;u>bLR<*!~o+Np0mNi8igGb3ZJ zEA_sTqT-8hWMpL7K=Ufl$s*%pBy7{C?&w%ZAOan1 j?HA9}(?3siz|oyQpW4->j^EExOYZ0g zPgg82JK`()`n2!{z)TN5;nSy!3VTE%F)}F$M#rhDx2de8RE*Q9@qlRO=`4io#N&B& zVYW!W-<@(jaG=u#(`8xvp{4a-oTy2rfC<<#$qi=6aW>;XzZ^A=d7TC*K4tzxg@w2C zcvZH zF9!oVl|;mkvlI26c0n9I8zNvcsi!vUT7l1p!oy23HFy^xHRqMiw^_ z%-^3R a)qAO>FCV%1XrR1C V`$@g1pVi zTR3hk_7}thR5|OA`ahxZbQ~!%Qy}2bt(O9Y?Bos^4;T3%Dt(~vQ8qp2MAZrOVT6R* zl;djV`0(NR#_1#eM }yyX1zx_*8quQ z0$8>qo9FzUypS(nWVLfN8Y@xUyMO{$xM*i_1@xkkK_}am#z&=`h|7c9)cKS5_n^gS zG-(9EgOO$}w^I=nDDMq;47GLKuXanF639{a>%dS~{gs~=lCA@oDdv4o p zrz^+{^ox7ruV`>Pc(~hqEEpyOoOM24dT(75tY}Gh4rqoHPt&mW(WyzAwlB7eO=2XW z?ZOznO(9P*z;g>>OsLG{$6R(et7xx%Am%UEEmga(0s29^tvSNsMMpzl!|QsB4R~yk zt^b_FQg!c;%%^`#T6y52^+}`f)FHthab;onO k>h2an~MTJ;9>y2Ksv-` z^km{|pzYGN@aol|Tjk> $2Xr*9)dRNOhLg*{KkGkpa}0}u{Ot<#cgMu3TCjX@0kwx*geiokdw>j}N- zq1HD-?Z3+9|4mk2AckEMRRsXT*`?CEViIWo8{_Us*bdzG29#EvyAn2iTwrdinLU^G z5YS8m8H$4*fS^+0R*cUlN3_o GK%aI7X%KCQoMb?+ zxVi#FM8Sva3OrY@*2PuW`eO-rjG-S=tdp#ggD5N*VrFJ$zQGK1FXH^#b}eNw3&ZKj z{l9XF9ylLS2jKdqKI|rpHwK8zsp8>mp<|``WvVZn9A#YPsts(TAW0|{7ONc}5s{|& zk>d~~kQPgE842xeBX`W2^px*PEM?(=%M;8W7jMe~V1{TBPJPjvsY0kb&2~51Ok{U6 zZnbS5>$A7Ree2d@NJi4;;wX55*H(sE)ZTVs5Pz8%HzR#Obf#vN959F&B164<_f8 6(@na0Liu-lDqRxDnV!S|#HF5o9 zWj#!>JI41O9#64maxeBRDfiXS4ApUiMH>xmVTpIl-kiOBH>EL{5sd502?`2|xN`>q zQE?P^o!8r&kvS;Zm|>CfC_!o!uN8T2+Jh-91lKS=B@S2PZSTNION@C&s$vg*8iXWF^<_3z)`tw0_l<~2( z7K%94L~(s(b%%k%y2_ZfJI}wJQ*f8wr%l=ZRn`LlBGP^-biC}`t03hTI6zak7bI-L zj`6WE_Ho`ixEsM>u|N?hv(bJqy`r?%Js zAAJ$PY8c&asr+v9UIWMsR3j^^C${duO9g!4HS&qaE@J=ZwTq+Yu>%MWFuUUGAw8{8 zz>X_$FxrBAJ}Kk5eikCbcrt{ydD3T}a+$ZANBu7Fk#QtRMNPAZ-7DoZQ<3-{TMb_s zHhK0s<=EfE24IdrwM)ADqF(Sz&Tk&Xep4L~OKEFgJy?zxy#uuBTjzeBI_y^r*T)`( zN~P^_(ysAmYeX_@QGGwC77)9xt*}pgSf#2QWCLr(1zPl9ySFR4m+2i*-&y%c1xyyL zxKM5_M*m1MRZ5}VH-e-AoMRuA;&ti6%Lz7?Fkz^tx}q@t0oRQ(+vX>(Z?AzBa%dX_ zK!!_VS084bW$F7)uV^alqVqi4h?>r@{>7g2%?=yaMjSy~s&7hP>29sA!UTK3gKU#f zB}%S4*&}0SR6h5Yw%WK~Rz+RNyMM5oypa%{)?uH9xPISg!~3ezH0_^M@Jl)w5Vppp zwy_EonoLK(RZ>bZEVF0VE=e~6=)ybTfV|E)k*XcuA$T}kHW5}G1q~)Z@0F=wh5`+y zp(e2jFCHvyqGY}I*{%DO8bhr<>IYNDncy#|M7!)(AJ|x9vITMydm `DMgSXEiUBvpx> z ^c4^M| z-tTd7t_yy^mB0mMF?R;J!`P{Fct>;3eq0gAiHA#}4Qw*m&ZoR@<>cBVGQh@1g62`` z!@G3E3rfT;3%>1X8bu`fM`<2JwNWmr{$U39a%*c)<%)HzSj^&n_ZKxmFfMLJfM>9{ z^P2bFeG4>1Skt-pruMv~N>95%iFr{a=2rU~#h~E=;bb3&_SX&`gqq3{9mP=@6DYJs z4u4kJ#;IlzRW7eMnr#$SHCZ6hXaCcKUH*^m7Ct%`0+U1KyB!M+-cbSmAsgMFDds!Q z6H(%3H36R;gkjpE?O|s%I~(KIhg8n9H&i!F9c+>HR&L<&3)t`g^fAv~AZv>v(Vb z#?hx;y!Ed}P}2B|u0Kd^=`=3z7plm*198+|RR#=%_gZDb9$o;VN+7k^AA4G8GkDP^ z+VI2qnH-f@5%Fp|CDAXpLa@bWcY@yF<8_yObjy$|nZf~o_+(sQE?-uW^42sCm`<2A z=%4&Cu25NqzT$n&y52HScqbwPH!(p)rJVc5Tw@V f0#`ATiLcbX=*9lnp(iUAH7g6xAiUi&wKr>P*TXs!>O&Gp z4P>COv2EqbpGkLc!$X=fYE-= 0W~S3e}$jc0tQ#MADgi~vRCLd|Zm z4~2|8h>aQ6y2{s+S>j?it?xs*+*xE_)Sf96zvm7mFV`DIM@M9D(IfWr#E9BgZ#<|d zAc ^Js)8YsBPO%lxa7=j_k>(dgCM z4!aMa6gfHne35C$Pq$FMQ4Unw%9HV(yWt; WQvDOqycdN>xs|6L^M9#EICyh}0j9!c> zb;%e6*=+c@E*7r4fW<7qM!Vasoe2*6FUGHrVm#h55W^1EQ{+os#hVk&zpV+ngbX+A zjHd?oIZPdN3b1a!d-eu|d)Z#)0eX)Pf7kMoJFfP72F;XEtsp3vyg~$9R!%GP1Lcv^ z5XxL7sBOn_pa7C`sZA(zR~=ig9&$}eWr?~@AIn-W`2t2VLBA)oW@EfIq8czFscXnM znj`3hz4mfQgN`BDwkA#>CaY6otKGx9YU}a0ANmH#VqxM8<{{=CbkvdbH{^2hAC||A ztZdGsa(2kt Z!I5zVs4*@-{SRoRpD1h))vChSA5m(*;!x4fi;x;ca{uT` z9;!SjAsF?Ewf7Yo=tM+D)2EvShR=S%qQLlj&S7Fac^%s-5R=ikT;ud&e*v{J_U74d zsh4NoU^H6gL$$J0?a=x2lFBg0ItK%}lCzgb@<=7zaN)Dh^F-=^)Ki=svQf_}y(X8S zi6>jYuE!%K?YH##T%xh(_x4a&!Z5ZuD$?C}Ez>f`bb(8|I5#@?I&?qHI5T#53?rP5 zjqJNOc_F+T*{{ HAsSW>CQB&S@I+GC|hRPR+eah*nLS zvvJ}g3#9f|zKfFQ!APcxjxi~EJ+2Cp;|&_@d&wf>rG7BKt1KZfoHqU_5o&)OodZ&U zT$6(|T_~J;7bIN{@^muk{p`mhk(fZw2wUUNNmsWF_QGiv`ou&!8Ju=q=!&*8T*vp5 z1_>L^_uIj!3`P3g3Aj9yf-?aY{okV WXuIZsKiD1b2Ixj<=D1E9> z`&Ac4BMt;A!!nW#AsU$V&>alCJGW=jydd5whWW0^^@vqq#G5sSLIH_ik`j;L;?Ay( z6V1y}ay?ilW7(b*T@c{!ea|d@P<@J0yyS^t_#^REHWl|}G4Ja+OY5C|h=)yI@-Ux~ zxM@L(ZoY=QyX8_a;a(3gPFztc3y=2{bf8BY#h_{0nHNg68WZp4lX}wNIuG`8%%;gR zu4v25v`M#>bAi1AlhGQ~q~SJ8GGcJM+_g)6+BMm^l(&8q1bj3*JNN0DHm78B+o%yX z>Ers^JlKU$g8CdLi1fBr6L##oqm4qj<{79B yCQr!2 zEJa+hOefDn^p=0tnx~;Nx{L)4V?o)hNv}<7>*|jAL@~daVkL4Ui>I(aS=6iL7@m~* zF=JXh&qZ}usy=CcR7smgW0Tx^$2}T{fo0mV(S&W{T5JaLVYUjJvz-U~xhS(X%7X=n zZu6;JF3XwVzLGa<@zC>&nCe=W=P|B(`<~M?pWGLOw1eMJYf0or_&bH&kAauvch(|o zFgl-m1<37DYz%u)1+J67YjgGC8!XD=5f;A{&Y(jUZw9dViKjnx%=r(Aob $*lB>6jelYOn z`bRK$iW_9{fHKe1aacdfvdCQ=NQb=2#8f`~$ZjlST2#5{qyKU2;C_)`CdG= lGnC z(m#T1P8r-OtaqaJwoZKf`lfJKq_7P5fiqoPlhr|VRGi?NdrkR PEJd(vDA?@!>S6Iz>jsSUpX8$ZD<#Vz06tj2RoTjS|_o;amUnOx|C zfLY7;YvDWe)mS !&>jWo-?w;xzHI{gEH`Aeyb>xf9>C5ly{> zkI}gO$u%Kd1{ sY0e;%$Z9?9=p|4ny7u1OekV=Y-TK3 zNHnqe#5A9^;Gs|kl9t1giFB_+p?QHU;C03(L43_ZrXm%jp;Roc*cK6HNLWmzDecsm zIfGd$vZ#hZ%|0(eEebU7F8zhNNj=%FvC7OppBafKi#=qz&MgjE7WH1i^)jQZf@vFg zbDrtFe+~sz5YJ1A)}rifaYC@m@Hsqz2*%7|+ &6#xz8;wIlIcx{=TfmCsp6x=QEt{p@VoW=@b|xtawP!UXI>& zzm~z#$eT0W?qT2E%Ist+{}Pn4nf}a6 !Ej<(I01&U$QE1 dav*K&`xw#)+BZ_H=R5bONLq(`+zIvZ>;-e(+Kn*giA@6L^*IPo20R7l~H zH 7<70l&Zb}BVFrE)hv=7WY5 AW-E;oqb zglku%xf;HS*?m3r`s26i&mZ{Prb7Cv&6}h$p0jLOr 9gn>Ok#$TQvZsKPgibK>pG-Q&-)I(KYz+8{h;7p`{KvgtVD+^af1OJ zbxT+(aeT6S86IYB=#oDH@%T~Wj_VZ=l _uc&O-s_hMW&g907>pjlEaG&2vk z&DN8f 2<;QasMJzDE#Ff? zGF5lQ#d_KtfQm1i$R3kzpBKdmDqQlgY};1}*}vx;Na)^z(`nbZvLJ1ob8xTqNmZZ@ zTPmm}Y?fIn#=0d!%%fZd-6kXZjalu(`SapYm$MNzWnCE?n~{La_xiC&hXV?BA$*=2 zHZEltXHgxbJbgDsTaBhaEwW0uatUIig{aK^DcXM5wWbN=6ljqY!TQoHaC*dQU;LgE zS!JE5&5uoG7d3xxneh&T!a2yOAx5bYvh~qV-0}-$&dLpMlzqyrHe0 =ia`lwa<{lN`#N5jjR vaDx2>&B?m}&yc<72$?Lf?&Sn5tw1zIYd{Djax44y9#6W7R%g^q%P+7rb z<)M|#9hdkN1_j!_&zsl0iF%(*7G8v#j3fy++;%R8(;j$fN>zpQ<$gM2Ea~`W>~g<8 zb)pVw=qOS}0gO~{Q2)4@-<>_YgeKO^fS3K<2wqw9_v-hB)n@yXsF2swg2#-c)Z7g2 zJ*xA^ew6`XjCI3$MYSFJ=4qz0p~^EEiXTfLrZS_q7qLOsB64}Civ_Maa)|_GPi^ZQ zQ-1z#Erro%NJ6NBOY5i30)3}f(ThDH;Kv?O?&Zj=yx>|FBTF58&BOE=)$Z)Gs;os4 zgpJ5L=9=eus`4(~Y5X(Up57mMB;3g?KB4x%L2NYG_4+yBCnNamYnnzq0!>Ct^!b*U z^O!#F=GOGuG&MsFvQ0^ox)lPSp?&6Uyd_IAcy<&Oq*+ql&=kBE@9a*dT52hUTlGxq z<6PE+>_RSPY8y7^zA|I)CE_)+ecakwyk*(;_w(&@r>ip^@?94cbsA2^h7L(8YuhJf z_LZuECr|J7_0?vUo2p5q7zbWM7s9+N9X9rF87+GT+HlzRj`(a^)yJh%;)N91YI}5J z;`DJ9A%XRwtv424S{B-SIAxsW6w<+xD-#|>HR3!rM+6T}G)R9 5z)b8y|owvV#!+FMZC3* zT@Ie}F=LHY5=@$QG3`CsbqM5yRhofxr5q@{#z-|-+0wI!{qpYpsxXF?8X?p83(_JF zTK%iQ16|UUYpWJE>V%Mou8H=vd1y70&$r;oI={si$`_O_q{FJ1PF_}Zy4XEmc<(@> zMw#wGUSpZUcQsBz =L6G z)=W*(C0gVrQ!1-wt%esthxzWFcIeW`m2}qa%NZ-Nnp<}wvSmO^89Hh(%?DX?JGP6Y zEgLKE3su&3A>C$R)x4> =g?W}Px0dYHfQwT059{UVc|IP zSIFgpcTA=QV$a%@PK>V4##l7Hknvtc n;%82oPrI7_DUkXnL3G^ zF6~H07E`&mu!N1M+Lz;P(p@=7W@ml38ZV8?oyK;9!5Vwl@TTj8b`%>XL##~=#++M8 zQ_Ziv2y?^Kd>)=p_0u%pfJ&+tobt{uf4gt6KiOM($7siVaoa{_`}O)ar^JhH4@>v1 z+f~Knf`@+?u)GW$8xl}+yK5mRK~TFz;MPJZz|qUDQiP%JYr>BGF4R_+GL)it@}4yY z< Ga!p~sAI z>cF5?dUEq@tX<^CQvPmIH?_X3W;w{@mMC&IRV23 Bgys>~ zm8|+7j;85Y4GtaVTDO1wDHM=qoLf>z1Jbzlp5fg5-3vZ>+lj_)7e)_?7Ew+q(jmcJ z@7;WQoH1`K*|6HDaUYX8<|=tCH#);a7uBoo;G?Ye&;7s@;oi4is1A$m+ID-fX!)6Q zc3@0O{QSiXap6ljlivp8JUw4YDogG+Ubop8KOJNzB$tN?(Wy$I+p+z*UAem;E1bBV zA#(OM;=#xD$q*{YLI|A(ybK9#BIL%c7c?PpnS Ln-TNa7vNMWpa$}cNrMbc z7UC9Y#08jt^u@eloWl~N(UWTVT{;1?aalUJ20zAfhMl+wrF}t81#c<=d7_B5L36zD z6o1Z4K9bojK=CnxZ5MSh9nYEnfjP9d40{&MK0R5tV#1PHHC=#-fWa)JtIqhe=aN6H z1esIo?*u1RaqQN%D9Whz4jNl<%d0NkY1YB{UGPRej)H6w9gyY9CJ03Es*hGABQ56l z$dj)qFzw)RpTFn#$cK{d;nkdjKemS@e54@cSN@y?@`o)QPD9;k9*!MZL})5|U~}sZ zq(8XJnUCIHpsLxGou=&+BYoAZ!(;#1+d&OuE?$p#d&=fxQRWI$a}i1utXtyp<1>7H z&zFkwB2k?DBE&FT#ZDKo8i9mPih$KdPC6|1wW)I0I_+fa@m@l%!*;}QQQGz^r%{af z3M9zt+cr$-83A4H45`xB-~15{!F_k7bUACyy8Wnoawz$H%iV;kTA0j?7~hL|ui()o zTxn@TiF~LqA#X`2KY+f 2_Npt9LUDi8caWPe}hg}i3{ZB)Mz zIf|ovc&F*gsPvp5i{fkw_ko8o%`Tq~(lAr8BQ?Z1nZe4)q93?IhivjStPd*gDzAvw z6gqu4HIy|fp^E}0WGOyTJ^!S(j6c&_i7Nn2 U(p$GvP9U@7qO+?MIuX%%9b6psihtaN>L;<5n8Pt9AqS(k!ff3Q*Nv zY9Ikjp&8SA<&SGRUCGC )s{k+8(VmpN<69{V`*x!3X^h zXPGw#uSxkRPMc)*rz@=2-DjMwQ#+8Udr1TZc@s4l5xj_@A7?rfHp$vEVpZN$!^)~+ z^$W>kSK=Y|FB9c+85i}!2d0cGrPgBQk%HfY@Ow;%TRh*#H*MOn%SnsQQO#W1_@sio zOQ1-X8T^iAM?p{<`g&feOlNLhURIXUed+#pD+|T#Baj5-66q*<=e+mTEPc451ai6C zB(Bn CK u4pw%N1i8M+s0_BaPH3;FQ7DrU`7+`2dIaReT9H_+x_CP`+?SQWzt8Wq zc0Lz%$bIK}k1(>Xy|xZ?;0%k?Z10Rl1^Hl1=NCmmxcFE{;Jc3NXQgG2lGxd|)W0*J z>7%$Noa^?RHd+tvM7E61Ie++B5$^^xI5W)mD;{j)5U_5Y_DYNp_3y?YT(hhGqNDZy z(}3r03A8b))7A$4GYtJ!HuHgoJO*gU&4ZP-44`FF-TJT@;QEEK?(Ahk<_>>GwF%|A z3f3Uwe@Gb#Ual~>ds0zgj1r%Ey1Kzqqbrs_vW;}hbW1Aq!v)2P9Zv!tMJ;oAtRZ?2 z4;tPzt>W_+s?(dda?1S|s!1otpDOEYmOJV2D7qF{`B5N-QO}V$nN-B?)Qe6VG+M^R zQDySS=2F-V1cM(KEyKRjJ6%3lO_n>E3|o6)p1N6On*NFS;Y?40B!z2QrV649VVWCP zzdeRL(YOM^klW;}YuiDD>9mh|YQFgiHn&iiYFP!2JRc;V74=q+8{Rd67q4ckr^7Iu zHVAI7rVR@2&n;=x4heR-M){X{?&Wo9`%n=wNj5JU5~i-EtF9a;#p{nxN#7Js2uVO( z6{~9FZMNDE%#n-030V+qJ?c{vo-kW#xujZB ))6((c+>Q&$#)Eg{Y4RLY5L4y6@ zk6Ch57|Qj9gbFC2`>v0gx2=$qu|^3+n)URv)aQ^hm}>nP8OS|@Hnuja9H%_zm-cZm zNVbegd$-bapLzAF@W-99uUYJ|#~frhT~T_~Hoj1M-kCS3FXks$VP?wD*s(v41K&Ao z?$W5R1|tQ0jQjNZ{x*INZY#s$&9UT=23E=AnW}Ak?j<%P#huBH@^h!im5Z}e))RKM zBxFz;{(f6-m+$0Ol|zhhA<~}{RcVC)gx%PAr?{M&aEBEk+{2;IQtWO4Fmvw(!EeN5 zd+zo(S}ewM3ttbrN<2afD5YHRc7r2bj)&IW; 8nt*n2sli&j?X0ho== Wx!xAd=1x_GQyTCC$DqDUbTdeEdDJv>|m7{<%fRS*3D_W+ybTCPNZ6V)N#@A{%R z#73-(;WhL9;`RHp`NLe--f+idcbp&s4h41T%-q{fOf`=5f?PxIC)f9<#Z$;?nHvWH z2YZ_}T3}?O_@cZB!C1j~hT)A&Uha=Y%+e^dLQa*Q=#T+sxk${FI?rqxMGG?N9*7#V z7cjygdO)?S;uunhe;Ooh 5u7V)ztT!? zKc(E8_t&*{qYydTxS+KiX_1(>LTC1>pu{>MB%)@$EC~t!!9gj6k?Y{~a_*nr!Zf#X z=mndGm#_t5>T8?1wTVM+%W4~gc2UMBn9LtZ*qBy|GpG(n@C%&RxM%OzXceoE*j 7o&Rn1q)ZgLrd)QU)7JykSM|G{Fk@LqSUn&EQ1qr}tN{fbL&&}Ru#gNq-t zOuv@wWRPfmyFp(*`tp91Q#18fgvuNC#6rr^7JYE0V#|s4N%JV{m*!wzsS9U_uy(xa ze#9_G@qV#%CNxENE^*)C|dtIygOShQkeHOs-e^oE|(Rb7LgRYirml zRjEyAtNpMj_uh|U>wc-oU)nU!f`Deow}+^VuEojT%Tb$+x92{j{`g7Jq4WI(_N0d> z;aR5bh#7@YueN&H*&MN)Q^*9T0WjJr5|D}^R4|oiJc7s{h^U8hcYi(lMbNU(Nm@EM zaNkO^FzPt}{P@HE>%R5+eOTW6-gEjzP@diOeF2;^Qa^^~t0nfz>Ih*nF}Q^q`2HDC zlUk+94jU@=!elYDum*y+)&A+kToFvEK8uqZUAy4(Cc}Qc_jbqa3Dgzz;C@nTTEgRi z*DjRf8(wpmOMCNQJfB~D>PX)ou+n|PI35#3w0{mBN{WTqT|6^>pUsZgks6Sy5~}{w zVH)eUN~3uNmmqO+t9BTA)zMT$G&Ggm_8QAf?H(mBq>w+rO}pK`s_kSoXLk}S!~v3o z%9#3taizC+cHq;6*#`tFB T7SPd>FGdlQmRMt14AZ@6 z=B6eZN2V~qWd>eu4W+)FiLb$BQ|~<5YGtdd7EwE2;ygdjYB0AqfAtFL87d~47h+Qr zJ%U?;B$LGato#kB%kBL&S_9GAo)PA{#+bd!^qPoQe`&o$4(=;Yg&xPW)m9HUi+m5i z*GkR3>@UbZxblL8*!-TW1c=#KQfR+jUZs!(&%VLOPHM^35cwHm5@KAv`^of$p!f5p z{S%IS1Tb`n8D=Q^8dg;8?N>Pnmq3beIDLwpDMptG5>*ePFCv1-1(kOEj3Y*{na4qa z!VdO+ji2@h9`D6n$4{4$h~)E5Fr<|fUU*Ss#qXU0ii>3hKR~=@Yn|n+M6n~Pf|+%u zR(xR&ot%(xU70XMh`y=`uzqg8pA&-NSffKGlRyGpXpyQk4ly!yR}nltABzm_8AE)P zCUCg3#z%b?<6AIJy?D}VzoRj^Ip3+do2n@PY9Hs~jU)J2NH&x-hAkZy7o!IT6pkZU zhuk=Sy_THR!RN^l< BECS zuT|pOB1tIM&{M8!I-V1>l)L(T&r+xQ*lUWQ4w8r=eDSUb{8{rJE5>;azrIf9ldY+f z=lpbFN?B5x>pBd1VlNB}ivhi#Uu&MB4}C$~ll%a3FI5QsH;EFvZPdGSaqHbZ_XIkG z Li0hDon7B=J^^<`7}zCcr8j>5%)DC;|3zu$?o%WH|@rWid5Km zA{iaEfW8<
0noxsrX>>bb 9-u|;#%j<)qhkGOYY}Z{wXi?DHx+}2P<0x)sKakJ$vkn*~XstC* zIM
D0kXBE9qO<5T9AG8yw<8JTSqd#W&K>6AvwT5w=G*K9K1tk7!{c(idqdd~=m%VO znEk()TJFlmR4R1{xAdM7nt|Jk-I)%1ka#X2mV#aWs|y-K7!BiQ%WKtf_WFh)!o%k} zs>>52xg7r5sKjLJpGMw-@f^?a?$)YhyQ=Zxt%Mi5gYte}kE07tV~X5k)-sffn;`3% zS_*nxw9(|7&LawhaJS`k-m{(0pTUJghF;!YYmr8XwCpo2ZuxB=AkYgWT0(!i-hnE- zfXW;@Gw;?yXo>3Qs|qWzQhcYTkL%h&@6aflU%lg#^)$sdirK<3s21C00c?PfWilyS zHqS`Cd9i BoiST>m1^Xs4(EuywOiQcc+h6n zL*|#DK-KC68U4%HfR7>-{`%h$LM-+s &t|K~+Cf!br@m6j0tLT0igqCiy+@ zS9G=#2@jsu)xyExy!mm(GfUPV{w_=q7rLQB2gSB%-929Gc>Ms(pA7e$Y{u0> -87L?WoSZ57E> zR?s19i2=EPBg8fC?%RCX6HmeQZ&q!1_Acj8d(bh2WohW8E~5n7Yu28}*U`jFJ6S~# zA%rBWiThRpx;Fv$Rc=zhzLS8YBg~kf^MuDPMZc5Yb{YM|r==_O&Rqsmy-{P;`W7G& zM@m1ht}>QRdX @zRO2^K$JlfcwD>^#WV>7kxpXf$CM9n %odD(YyiwfzDETY*`aP#SfXnAljCk)o0E zsw$DSU#UXin8#j#*mpbH^^O@M@JL8PnUb*){djnI5j+S8PD!rfuXwf0tt~B^<5 _OmA1- )4>8)$&g47`%6sNhoTtK&%^IcgO!g;{67>d_ zNT=w@kYM?1yO*Uc3AMDXsXvG47of%*96!yai1_*=imb#1(lfD&1QXf}rh-Jua})0& zRx}xV&DAP)3;2n`B5w)Rpd@;Aq9{-rjE7$Aaxn8{obx$9onS4bm tw)6g5C2Cdo3NnIs9F(@)2J~G@FOlL-c*hBH(-y7+^L|`I z-Ngy;>k7@xxijb*>fYCz3%2TgtB$4Ess=ZoIO6s}2T`H-NqG