From 3dd31135e1a0e6161461b054ba191aadc7bbfd55 Mon Sep 17 00:00:00 2001 From: florian <> Date: Thu, 22 Feb 2024 23:10:22 +0100 Subject: [PATCH] feat: Experimental version based on ngine (WIP) --- TODO.md | 14 + package-lock.json | 4211 ----------------- package.json | 17 +- .../DetailsAuthor.tsx | 35 - .../GridDetails (deprecated)/DetailsView.css | 202 - .../GridDetails (deprecated)/DetailsView.tsx | 169 - src/components/Login/Login.css | 42 + src/components/Login/Login.tsx | 82 + src/components/Settings.tsx | 5 +- src/components/SlideShow.tsx | 102 +- src/components/SlideView/index.tsx | 4 + src/components/nostrImageDownload.ts | 2 +- src/mainInner.tsx | 25 +- src/ngine/context.tsx | 384 ++ src/ngine/filter.ts | 23 + src/ngine/format.ts | 48 + src/ngine/hooks/useAddress.tsx | 20 + src/ngine/hooks/useAddresses.tsx | 10 + src/ngine/hooks/useCopy.ts | 11 + src/ngine/hooks/useEvent.ts | 45 + src/ngine/hooks/useEvents.ts | 44 + src/ngine/hooks/useLatestEvent.tsx | 41 + src/ngine/hooks/useProfile.ts | 22 + src/ngine/hooks/useProfiles.ts | 31 + src/ngine/hooks/useRates.ts | 45 + src/ngine/hooks/useReactions.ts | 83 + src/ngine/lnurl.ts | 158 + src/ngine/money.ts | 11 + src/ngine/nostr/kinds.tsx | 10 + src/ngine/nostr/nip57.ts | 172 + src/ngine/state.ts | 68 + src/ngine/tags.ts | 5 + src/ngine/time.ts | 3 + src/ngine/types.ts | 83 + src/ngine/utils.ts | 63 + src/utils/nip05.ts | 71 + src/utils/useProfile.ts | 14 +- src/utils/useZapAndReaction.ts | 4 +- tsconfig.json | 6 +- tsconfig.tsbuildinfo | 2 +- 40 files changed, 1705 insertions(+), 4682 deletions(-) delete mode 100644 package-lock.json delete mode 100644 src/components/GridDetails (deprecated)/DetailsAuthor.tsx delete mode 100644 src/components/GridDetails (deprecated)/DetailsView.css delete mode 100644 src/components/GridDetails (deprecated)/DetailsView.tsx create mode 100644 src/components/Login/Login.css create mode 100644 src/components/Login/Login.tsx create mode 100644 src/ngine/context.tsx create mode 100644 src/ngine/filter.ts create mode 100644 src/ngine/format.ts create mode 100644 src/ngine/hooks/useAddress.tsx create mode 100644 src/ngine/hooks/useAddresses.tsx create mode 100644 src/ngine/hooks/useCopy.ts create mode 100644 src/ngine/hooks/useEvent.ts create mode 100644 src/ngine/hooks/useEvents.ts create mode 100644 src/ngine/hooks/useLatestEvent.tsx create mode 100644 src/ngine/hooks/useProfile.ts create mode 100644 src/ngine/hooks/useProfiles.ts create mode 100644 src/ngine/hooks/useRates.ts create mode 100644 src/ngine/hooks/useReactions.ts create mode 100644 src/ngine/lnurl.ts create mode 100644 src/ngine/money.ts create mode 100644 src/ngine/nostr/kinds.tsx create mode 100644 src/ngine/nostr/nip57.ts create mode 100644 src/ngine/state.ts create mode 100644 src/ngine/tags.ts create mode 100644 src/ngine/time.ts create mode 100644 src/ngine/types.ts create mode 100644 src/ngine/utils.ts create mode 100644 src/utils/nip05.ts diff --git a/TODO.md b/TODO.md index de0a779..bb6e501 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,19 @@ # TODO + +# delete the events when the filter changes + +- Improve Login dialog +- Fix key listeners when text input is opened +- Fix/Test zaps +- Reimplement Likes/Zaps based in ngine code +- Investigate profile caching +- fix build errors +- build masonary view for desktop +- move settings dialog to main start screen +- replace search icon with nav back button +- record demo explaination video + - hashtag view (single hasttag), header - masonry, mit subtitles (user displayname, tags (most imporant), desc?, date) (ggf. nur desktop) - NIP 46 diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 93a168b..0000000 --- a/package-lock.json +++ /dev/null @@ -1,4211 +0,0 @@ -{ - "name": "nostr-slideshow", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "nostr-slideshow", - "version": "0.0.0", - "dependencies": { - "@nostr-dev-kit/ndk": "^2.4.2", - "@nostr-dev-kit/ndk-cache-dexie": "^2.2.6", - "@nostr-dev-kit/ndk-react": "^0.1.1", - "lodash": "^4.17.21", - "nostr-tools": "^2.2.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-helmet": "^6.1.0", - "react-lazy-load": "^4.0.1", - "react-router-dom": "^6.22.0", - "react-swipeable": "^7.0.1" - }, - "devDependencies": { - "@types/lodash": "^4.14.202", - "@types/react": "^18.2.55", - "@types/react-dom": "^18.2.19", - "@types/react-helmet": "^6.1.11", - "@types/react-swipeable": "^5.2.0", - "@typescript-eslint/eslint-plugin": "^7.0.1", - "@typescript-eslint/parser": "^7.0.1", - "@vitejs/plugin-react": "^4.2.1", - "@webbtc/webln-types": "^3.0.0", - "eslint": "^8.56.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "prettier": "^3.2.5", - "typescript": "^5.3.3", - "vite": "^5.1.3", - "vite-bundle-visualizer": "^1.0.1" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", - "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", - "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", - "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", - "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", - "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", - "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", - "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", - "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", - "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", - "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", - "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", - "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", - "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", - "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", - "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", - "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", - "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", - "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", - "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", - "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", - "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", - "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", - "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", - "cpu": [ - "x64" - ], - "dev": true, - "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, - "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.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", - "dev": true, - "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, - "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/eslintrc/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, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.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, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "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==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@noble/ciphers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.2.0.tgz", - "integrity": "sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/secp256k1": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-2.0.0.tgz", - "integrity": "sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nostr-dev-kit/ndk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk/-/ndk-2.4.2.tgz", - "integrity": "sha512-78gHKyPVy2u6obnTmOU9dMJMi07LgzoTQtO1RjWkcwlQvPyjbpCQ4EXjDSM1pmdj7narwW+uJibnld6z8dT1Fg==", - "dependencies": { - "@noble/hashes": "^1.3.1", - "@noble/secp256k1": "^2.0.0", - "@scure/base": "^1.1.1", - "debug": "^4.3.4", - "light-bolt11-decoder": "^3.0.0", - "node-fetch": "^3.3.1", - "nostr-tools": "^1.15.0", - "tseep": "^1.1.1", - "typescript-lru-cache": "^2.0.0", - "utf8-buffer": "^1.0.0", - "websocket-polyfill": "^0.0.3" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-cache-dexie/-/ndk-cache-dexie-2.2.6.tgz", - "integrity": "sha512-wcWQQsodo33qD8a9f3uGUHcA9JhLirhMiv3QzQ1nEj1quAMugsX4389lYViIwVFzu8p8fYpX0AUaE4iuSwEg5g==", - "dependencies": { - "@nostr-dev-kit/ndk": "2.4.1", - "debug": "^4.3.4", - "dexie": "^3.2.4", - "nostr-tools": "^1.14.0", - "typescript-lru-cache": "^2.0.0" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", - "dependencies": { - "@noble/hashes": "1.3.1" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@nostr-dev-kit/ndk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk/-/ndk-2.4.1.tgz", - "integrity": "sha512-2rUJSlriESZ3rvXfmEepi8r+Ms1YM1z7+yr8ymyHbFF2OXi4XMc52hLmPDBK950dAHn4f8efkUKEnkvLF3hreg==", - "dependencies": { - "@noble/hashes": "^1.3.1", - "@noble/secp256k1": "^2.0.0", - "@scure/base": "^1.1.1", - "debug": "^4.3.4", - "light-bolt11-decoder": "^3.0.0", - "node-fetch": "^3.3.1", - "nostr-tools": "^1.15.0", - "tseep": "^1.1.1", - "typescript-lru-cache": "^2.0.0", - "utf8-buffer": "^1.0.0", - "websocket-polyfill": "^0.0.3" - } - }, - "node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/nostr-tools": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.17.0.tgz", - "integrity": "sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==", - "dependencies": { - "@noble/ciphers": "0.2.0", - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/base": "1.1.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@nostr-dev-kit/ndk-react": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-react/-/ndk-react-0.1.1.tgz", - "integrity": "sha512-iUDK2yYx3uo3epgZPPFAU11yQZppNioaOkQ4gkS2hNXoS2/H6dwvgSrVIWEZD2u41QyipDk+lD8juSIiYRNeTA==", - "dependencies": { - "ramda": "^0.29.0" - }, - "peerDependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - } - }, - "node_modules/@nostr-dev-kit/ndk/node_modules/@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", - "dependencies": { - "@noble/hashes": "1.3.1" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nostr-dev-kit/ndk/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.17.0.tgz", - "integrity": "sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==", - "dependencies": { - "@noble/ciphers": "0.2.0", - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/base": "1.1.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@remix-run/router": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", - "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.2.tgz", - "integrity": "sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.2.tgz", - "integrity": "sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.2.tgz", - "integrity": "sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.2.tgz", - "integrity": "sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.2.tgz", - "integrity": "sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.2.tgz", - "integrity": "sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.2.tgz", - "integrity": "sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.2.tgz", - "integrity": "sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.2.tgz", - "integrity": "sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.2.tgz", - "integrity": "sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.2.tgz", - "integrity": "sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.2.tgz", - "integrity": "sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.2.tgz", - "integrity": "sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip32": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", - "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", - "dependencies": { - "@noble/curves": "~1.1.0", - "@noble/hashes": "~1.3.1", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", - "dependencies": { - "@noble/hashes": "1.3.1" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", - "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-helmet": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.11.tgz", - "integrity": "sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-swipeable": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/react-swipeable/-/react-swipeable-5.2.0.tgz", - "integrity": "sha512-aQMubLpV45W8fTQufnm5j8yxYVEp/d3JJkqpPr9xcRPQ6Q6MSJUdNpsaR2uogILSIFzrAisC8AqdR1JlvjuZMA==", - "deprecated": "This is a stub types definition. react-swipeable provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "react-swipeable": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", - "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.1.tgz", - "integrity": "sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.0.1", - "@typescript-eslint/type-utils": "7.0.1", - "@typescript-eslint/utils": "7.0.1", - "@typescript-eslint/visitor-keys": "7.0.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "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" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.0.1.tgz", - "integrity": "sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.0.1", - "@typescript-eslint/types": "7.0.1", - "@typescript-eslint/typescript-estree": "7.0.1", - "@typescript-eslint/visitor-keys": "7.0.1", - "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.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.0.1.tgz", - "integrity": "sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.0.1", - "@typescript-eslint/visitor-keys": "7.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.0.1.tgz", - "integrity": "sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.0.1", - "@typescript-eslint/utils": "7.0.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "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/types": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.0.1.tgz", - "integrity": "sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==", - "dev": true, - "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.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.1.tgz", - "integrity": "sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.0.1", - "@typescript-eslint/visitor-keys": "7.0.1", - "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, - "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, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.0.1.tgz", - "integrity": "sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.0.1", - "@typescript-eslint/types": "7.0.1", - "@typescript-eslint/typescript-estree": "7.0.1", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.1.tgz", - "integrity": "sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.0.1", - "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 - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/@webbtc/webln-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@webbtc/webln-types/-/webln-types-3.0.0.tgz", - "integrity": "sha512-aXfTHLKz5lysd+6xTeWl+qHNh/p3qVYbeLo+yDN5cUDmhie2ZoGvkppfWxzbGkcFBzb6dJyQ2/i2cbmDHas+zQ==", - "dev": true, - "funding": { - "type": "lightning", - "url": "lightning:hello@getalby.com" - } - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "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, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "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, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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 - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true - }, - "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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001572", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz", - "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==", - "dev": true, - "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" - } - ] - }, - "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, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "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, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "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, - "dependencies": { - "color-name": "1.1.3" - } - }, - "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 - }, - "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 - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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 - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dexie": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.4.tgz", - "integrity": "sha512-VKoTQRSv7+RnffpOJ3Dh6ozknBqzWw/F3iqMdsZg958R0AS8AnY9x9d1lbwENr0gzeGJHXKcGhAMRaqys6SxqA==", - "engines": { - "node": ">=6.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, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.617", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.617.tgz", - "integrity": "sha512-sYNE3QxcDS4ANW1k4S/wWYMXjCVcFSOX3Bg8jpuMFaXt/x8JCmp0R1Xe1ZXDX4WXnSRBf+GJ/3eGWicUuQq5cg==", - "dev": true - }, - "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 - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@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-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "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-refresh": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", - "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "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, - "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, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/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, - "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/eslint/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==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/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==", - "dev": true - }, - "node_modules/eslint/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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "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/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "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, - "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, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "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 - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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 - }, - "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 - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "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, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "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, - "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.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "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 - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "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, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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/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==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "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/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "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, - "engines": { - "node": ">=4" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "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, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-from-esm": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.3.tgz", - "integrity": "sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": ">=16.20" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "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==", - "dev": true, - "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 - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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==" - }, - "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, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "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 - }, - "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 - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "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, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/light-bolt11-decoder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", - "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", - "dependencies": { - "@scure/base": "1.1.1" - } - }, - "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, - "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==" - }, - "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 - }, - "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==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "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 - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/nostr-tools": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.2.0.tgz", - "integrity": "sha512-Ci1Hzt1CRRQEUJStq71VoNIAVO5kENLlP/KAvOxhrpMCO7TMt9jVaHmsqcdMDI/S0qUUC+B5vv1HEvEKhAYA+g==", - "dependencies": { - "@noble/ciphers": "0.2.0", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.1", - "@scure/base": "1.1.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - }, - "optionalDependencies": { - "nostr-wasm": "v0.1.0" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/nostr-tools/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/nostr-wasm": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/nostr-wasm/-/nostr-wasm-0.1.0.tgz", - "integrity": "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==", - "optional": true - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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, - "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, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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, - "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, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "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" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "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, - "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==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "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==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/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==" - }, - "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, - "engines": { - "node": ">=6" - } - }, - "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==", - "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" - } - ] - }, - "node_modules/ramda": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", - "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-fast-compare": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" - }, - "node_modules/react-helmet": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", - "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", - "dependencies": { - "object-assign": "^4.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.1.1", - "react-side-effect": "^2.1.0" - }, - "peerDependencies": { - "react": ">=16.3.0" - } - }, - "node_modules/react-lazy-load": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/react-lazy-load/-/react-lazy-load-4.0.1.tgz", - "integrity": "sha512-TnXRr79X9rlC9UcmO6iyS28rOPHrgkHIP4+b8yZPfs1tw6k/Rp2DmFY8R20BqWR45ZWkpT+4dqV1f+yci+1ozg==", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-router": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.0.tgz", - "integrity": "sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==", - "dependencies": { - "@remix-run/router": "1.15.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.0.tgz", - "integrity": "sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==", - "dependencies": { - "@remix-run/router": "1.15.0", - "react-router": "6.22.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" - } - }, - "node_modules/react-side-effect": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz", - "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==", - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-swipeable": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-7.0.1.tgz", - "integrity": "sha512-RKB17JdQzvECfnVj9yDZsiYn3vH0eyva/ZbrCZXZR0qp66PBRhtg4F9yJcJTWYT5Adadi+x4NoG53BxKHwIYLQ==", - "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup-plugin-visualizer": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", - "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", - "dev": true, - "dependencies": { - "open": "^8.4.0", - "picomatch": "^2.3.1", - "source-map": "^0.7.4", - "yargs": "^17.5.1" - }, - "bin": { - "rollup-plugin-visualizer": "dist/bin/cli.js" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "rollup": "2.x || 3.x || 4.x" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "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==", - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "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, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/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, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/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 - }, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=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 - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tseep": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tseep/-/tseep-1.1.3.tgz", - "integrity": "sha512-deBIcIlXUMlr3xaN0UEochqjU/zXGaZGPqHPd1rxo4w6DklBdRM6WQQtsk7bekIF+qY6QTeen3nE6OA7BxL9rg==" - }, - "node_modules/tstl": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", - "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "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, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "devOptional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-lru-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/typescript-lru-cache/-/typescript-lru-cache-2.0.0.tgz", - "integrity": "sha512-Jp57Qyy8wXeMkdNuZiglE6v2Cypg13eDA1chHwDG6kq51X7gk4K7P7HaDdzZKCxkegXkVHNcPD0n5aW6OZH3aA==" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "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, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/utf8-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", - "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/vite": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.3.tgz", - "integrity": "sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-bundle-visualizer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vite-bundle-visualizer/-/vite-bundle-visualizer-1.0.1.tgz", - "integrity": "sha512-JdUu5viGyw7K1HMstqaAN7y1rnNz93srGeF7FJgFCzM7NL1nH/QlpywDA296qv/KjPPPsq60mOJhtXddikVKSA==", - "dev": true, - "dependencies": { - "cac": "^6.7.14", - "import-from-esm": "^1.3.3", - "rollup-plugin-visualizer": "^5.11.0", - "tmp": "^0.2.1" - }, - "bin": { - "vite-bundle-visualizer": "bin.js" - } - }, - "node_modules/vite/node_modules/rollup": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.2.tgz", - "integrity": "sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.2", - "@rollup/rollup-android-arm64": "4.9.2", - "@rollup/rollup-darwin-arm64": "4.9.2", - "@rollup/rollup-darwin-x64": "4.9.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.2", - "@rollup/rollup-linux-arm64-gnu": "4.9.2", - "@rollup/rollup-linux-arm64-musl": "4.9.2", - "@rollup/rollup-linux-riscv64-gnu": "4.9.2", - "@rollup/rollup-linux-x64-gnu": "4.9.2", - "@rollup/rollup-linux-x64-musl": "4.9.2", - "@rollup/rollup-win32-arm64-msvc": "4.9.2", - "@rollup/rollup-win32-ia32-msvc": "4.9.2", - "@rollup/rollup-win32-x64-msvc": "4.9.2", - "fsevents": "~2.3.2" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", - "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", - "dependencies": { - "tstl": "^2.0.7", - "websocket": "^1.0.28" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "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, - "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/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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/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==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/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==", - "dev": true - }, - "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 - }, - "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, - "engines": { - "node": ">=10" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "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, - "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, - "engines": { - "node": ">=12" - } - }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index 76557fb..8477822 100644 --- a/package.json +++ b/package.json @@ -14,25 +14,26 @@ "dependencies": { "@nostr-dev-kit/ndk": "^2.4.2", "@nostr-dev-kit/ndk-cache-dexie": "^2.2.6", - "@nostr-dev-kit/ndk-react": "^0.1.1", + "@tanstack/react-query": "^5.22.2", + "jotai": "^2.6.5", + "light-bolt11-decoder": "^3.0.0", "lodash": "^4.17.21", - "nostr-login": "^1.0.12", - "nostr-tools": "^2.2.0", + "nostr-tools": "^2.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-helmet": "^6.1.0", "react-lazy-load": "^4.0.1", - "react-router-dom": "^6.22.0", + "react-router-dom": "^6.22.1", "react-swipeable": "^7.0.1" }, "devDependencies": { "@types/lodash": "^4.14.202", - "@types/react": "^18.2.55", + "@types/react": "^18.2.57", "@types/react-dom": "^18.2.19", "@types/react-helmet": "^6.1.11", "@types/react-swipeable": "^5.2.0", - "@typescript-eslint/eslint-plugin": "^7.0.1", - "@typescript-eslint/parser": "^7.0.1", + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", "@vitejs/plugin-react": "^4.2.1", "@webbtc/webln-types": "^3.0.0", "eslint": "^8.56.0", @@ -40,7 +41,7 @@ "eslint-plugin-react-refresh": "^0.4.5", "prettier": "^3.2.5", "typescript": "^5.3.3", - "vite": "^5.1.3", + "vite": "^5.1.4", "vite-bundle-visualizer": "^1.0.1" } } diff --git a/src/components/GridDetails (deprecated)/DetailsAuthor.tsx b/src/components/GridDetails (deprecated)/DetailsAuthor.tsx deleted file mode 100644 index 490c08e..0000000 --- a/src/components/GridDetails (deprecated)/DetailsAuthor.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import useNav from '../../utils/useNav'; -import { createImgProxyUrl } from '../nostrImageDownload'; -import './DetailsView.css'; -import { NDKUserProfile } from '@nostr-dev-kit/ndk'; - -type DetailsAuthorProps = { - profile?: NDKUserProfile; - npub?: string; - setActiveImageIdx: (idx: number | undefined) => void; -}; - -const DetailsAuthor = ({ profile, npub, setActiveImageIdx }: DetailsAuthorProps) => { - const { nav, currentSettings } = useNav(); - - return ( -
{ - setActiveImageIdx(undefined); - npub && nav({ ...currentSettings, tags: [], npubs: [npub] }); - }} - > -
- -
{profile?.displayName || profile?.name}
-
- ); -}; - -export default DetailsAuthor; diff --git a/src/components/GridDetails (deprecated)/DetailsView.css b/src/components/GridDetails (deprecated)/DetailsView.css deleted file mode 100644 index 492d8eb..0000000 --- a/src/components/GridDetails (deprecated)/DetailsView.css +++ /dev/null @@ -1,202 +0,0 @@ -.details { - position: absolute; - z-index: 500; - background: rgba(0, 0, 0, 0.8); - backdrop-filter: blur(10px); - padding: 2em; - box-sizing: border-box; - display: flex; - align-items: center; - width: 100vw; - height: 100dvh; - justify-content: center; -} - -.details-contents { - display: grid; - grid-template-columns: max(60vw, 40vw) auto; - gap: 24px; - justify-items: center; -} - -.details-contents .tag { - display: inline; - padding: 0.2em 0.6em; - margin-right: 0.2em; - border-radius: 24px; - background-color: #444; - color: white; - line-height: 2.2em; - font-size: 1rem; - cursor: pointer; - overflow: visible; -} - -.details-contents .tag:hover { - background-color: #555; -} - -.details-contents .heart svg { - padding: 0.5em; - width: 1.5em; - height: 1.5em; - cursor: pointer; -} - -.details-actions > div { - display: inline; -} - -.details-contents .detail-image { - object-fit: contain; - max-width: 100%; - max-height: 90vh; - border-radius: 12px; - background-color: #444; -} - -.detail-description { - position: relative; - display: flex; - box-sizing: border-box; - flex-direction: column; - gap: 12px; - max-width: 30em; - width: 25em; - overflow-y: auto; - overflow-x: hidden; - max-height: 90vh; - padding-bottom: 1em; -} - -.details-author { - display: flex; - flex-direction: row; - gap: 12px; - align-items: flex-start; - cursor: pointer; -} - -.details-actions .more { - position: relative; -} - -.details-actions .more svg { - padding: 0.5em; - width: 1.5em; - height: 1.5em; - cursor: pointer; - color: white; -} - -.details-actions .more .more-menu { - display: none; - - flex-direction: column; - position: absolute; - top: 20px; - left: 0px; - background-color: #111; - padding: 1em; - border-radius: 12px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - gap: 6px; -} - -.details-actions .more .more-menu.show { - display: flex; -} - -.details-actions .more .more-action { - cursor: pointer; - display: flex; - align-items: center; - color: white; - line-height: 2em; - border-radius: 6px; - padding-right: 0.5em; - text-wrap: nowrap; -} -.details-actions .more .more-action:hover { - background-color: #333; -} - -.details-actions .more .more-action:hover { - background-color: #333; -} - -@media screen and (min-width: 769px) { - .details-contents { - background-image: none !important; - } -} - -@media screen and (max-width: 768px) { - .details { - overflow-y: scroll; - align-items: normal; - overflow-x: hidden; - padding: 0; - overscroll-behavior: none; - } - .details-author { - position: absolute; - top: -104px; - align-items: center; - } - .details-author .author-image { - margin: 0px; - } - .details-author .author-name { - display: none; - } - .details-actions { - position: fixed; - right: 2em; - bottom: 2em; - display: flex; - flex-direction: column-reverse; - gap: 0.5em; - } - .details-contents { - grid-template-columns: 1fr; - grid-template-rows: auto 1fr; - background-size: cover; - background-repeat: no-repeat; - background-position: center; - } - .details-contents .detail-image { - border-radius: 0px; - height: 100dvh; - width: 100vw; - backdrop-filter: blur(20px) brightness(0.5); - -webkit-backdrop-filter: blur(20px) brightness(0.5); - background-color: transparent; - max-height: none; - } - .detail-description { - max-width: 100%; - width: 100%; - overflow: visible; - padding-left: 2em; - padding-right: 2em; - padding-bottom: 3em; - } - .detail-description .details-text { - max-width: 90vw; - overflow: hidden; - text-overflow: ellipsis; - } - .details-actions .more .more-menu { - bottom: 50px; - right: 0px; - top: auto; - left: auto; - text-wrap: nowrap; - display: none; - } - - .details-actions .more .more-menu.show { - display: block; - } -} diff --git a/src/components/GridDetails (deprecated)/DetailsView.tsx b/src/components/GridDetails (deprecated)/DetailsView.tsx deleted file mode 100644 index 929a681..0000000 --- a/src/components/GridDetails (deprecated)/DetailsView.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import { NostrImage, createImgProxyUrl, isVideo } from '../nostrImageDownload'; -import './DetailsView.css'; -import { useNDK } from '@nostr-dev-kit/ndk-react'; -import DetailsAuthor from './DetailsAuthor'; -import { useEffect, useMemo, useState } from 'react'; -import uniq from 'lodash/uniq'; -import useNav from '../../utils/useNav'; -import CloseButton from '../CloseButton/CloseButton'; -import IconHeart from '../Icons/IconHeart'; -import { nip19 } from 'nostr-tools'; -import { useGlobalState } from '../../utils/globalState'; -import IconBolt from '../Icons/IconBolt'; -import useWindowSize from '../../utils/useWindowSize'; -import IconLink from '../Icons/IconLink'; -import IconDots from '../Icons/IconDots'; -import useZapsAndReations from '@/utils/useZapAndReaction'; - -type DetailsViewProps = { - images: NostrImage[]; - currentImage: number | undefined; - setCurrentImage: React.Dispatch>; -}; - -const DetailsView = ({ images, currentImage, setCurrentImage }: DetailsViewProps) => { - const { getProfile } = useNDK(); - const [state, setState] = useGlobalState(); - const [showMoreMenu, setShowMoreMenu] = useState(false); - const size = useWindowSize(); - - const currentImageData = useMemo( - () => (currentImage !== undefined ? images[currentImage] : undefined), - [images, currentImage] - ); - - const nextImageData = useMemo( - () => (currentImage !== undefined ? images[currentImage + 1] : undefined), - [images, currentImage] - ); - - const { zapClick, heartClick, zapState, heartState } = useZapsAndReations(currentImageData, state.userNPub); - - useEffect(() => { - setState({ ...state, showNavButtons: false }); - return () => setState({ ...state, showNavButtons: true }); - }, []); - - const activeProfile = currentImageData?.author !== undefined ? getProfile(currentImageData?.author) : undefined; - const { nav, currentSettings } = useNav(); - - const imageWidth = useMemo(() => (size.width && size.width > 1600 ? 1600 : 800), [size.width]); - const nextImageProxyUrl = nextImageData?.url && createImgProxyUrl(nextImageData?.url, imageWidth, -1); - const currentImageProxyUrl = currentImageData?.url && createImgProxyUrl(currentImageData?.url, imageWidth, -1); - - if (!currentImageData) return null; - - // TODO unmute video through icon - - return ( - <> - setCurrentImage(undefined)}> -
setShowMoreMenu(false)}> - {nextImageData && !isVideo(nextImageData.url) && ( - - )} - {nextImageData && isVideo(nextImageData.url) && ( -
- - ); -}; - -export default DetailsView; diff --git a/src/components/Login/Login.css b/src/components/Login/Login.css new file mode 100644 index 0000000..95b8e4d --- /dev/null +++ b/src/components/Login/Login.css @@ -0,0 +1,42 @@ +.login-dialog { + display: flex; + flex-direction: column; + padding: 2em; + border-radius: 20px; + background-color: #111; + z-index: 200; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + gap: 24px; +} + +.login-dialog input[type='text'] { + min-width: 20em; + display: block; + width: 100%; + background-color: #111; + border-radius: 8px; + border: 1px solid #222; + height: 3em; + font-family: unset; + font-size: unset; + padding: 0.1em; + padding-left: 0.5em; + box-sizing: border-box; +} + +.login-dialog .login-address { + display: flex; + flex-direction: row; + gap: 8px; +} + +.login-dialog .login-extension { + align-self: center; +} + +.login-dialog .login-extension button { + height: 3em; +} diff --git a/src/components/Login/Login.tsx b/src/components/Login/Login.tsx new file mode 100644 index 0000000..5959d78 --- /dev/null +++ b/src/components/Login/Login.tsx @@ -0,0 +1,82 @@ +import { useState } from 'react'; +import './Login.css'; +import { useBunkerLogin, useExtensionLogin } from '../../ngine/context'; +import { useGlobalState } from '../../utils/globalState'; + +type LoginProps = { + onClose: () => void; +}; + +const Login = ({ onClose }: LoginProps) => { + const [address, setAddress] = useState(''); + const [_, setState] = useGlobalState(); + const bunkerLogin = useBunkerLogin(); + const extensionLogin = useExtensionLogin(); + /* + + const onLogin = async () => { + const user = await bunkerLogin('florian@nsec.app'); ///bunker://b7c6f6915cfa9a62fff6a1f02604de88c23c6c6c6d1b8f62c7cc10749f307e81?relay=wss://relay.nsec.app'); //florian@nsec.app + //const user = await extensionLogin(); + if (user) { + + console.log(user.npub); + setState({ userNPub: user.npub, profile: user.profile }); + } + else { + console.error('Error loging in'); + } +/* + setAutoLogin(true); + + + + const result = await nip); + if (!result) { + console.error('Login failed.'); + return; + } + + setState({ userNPub: result.npub }); + +}; +*/ + const loginWithAddress = async () => { + const user = await bunkerLogin(address); + if (user) { + setState({ userNPub: user.npub, profile: user.profile }); + onClose(); + } else { + console.error('Error loging in'); + } + }; + + const loginWithExtension = async () => { + const user = await extensionLogin(); + if (user) { + setState({ userNPub: user.npub, profile: user.profile }); + onClose(); + } else { + console.error('Error loging in'); + } + }; + + return ( +
+

Login

+
+ setAddress(e.target.value)} + > + +
+
+ +
+
+ ); +}; + +export default Login; diff --git a/src/components/Settings.tsx b/src/components/Settings.tsx index 6b24088..d07efb1 100644 --- a/src/components/Settings.tsx +++ b/src/components/Settings.tsx @@ -4,10 +4,10 @@ import useNav from '../utils/useNav'; import CloseButton from './CloseButton/CloseButton'; import TagEditor, { Tag } from './TagEditor'; import { defaultHashTags } from './env'; -import { useNDK } from '@nostr-dev-kit/ndk-react'; import { createImgProxyUrl } from './nostrImageDownload'; import { useGlobalState } from '../utils/globalState'; import { ViewMode } from './SlideShow'; +import useProfile from '../ngine/hooks/useProfile'; type SettingsProps = { onClose: () => void; @@ -18,7 +18,6 @@ type Mode = 'all' | 'tags' | 'user'; const SettingsDialog = ({ onClose, setViewMode }: SettingsProps) => { const { nav, currentSettings } = useNav(); - const { getProfile } = useNDK(); const [state, setState] = useGlobalState(); const [showAdult, setShowAdult] = useState(currentSettings.showAdult || false); const [showReplies, setShowReplies] = useState(currentSettings.showReplies || false); @@ -66,7 +65,7 @@ const SettingsDialog = ({ onClose, setViewMode }: SettingsProps) => { onClose(); }; - const activeProfile = npubs.length > 0 ? getProfile(npubs[0]) : undefined; + const activeProfile = useProfile(npubs[0]); return ( <> diff --git a/src/components/SlideShow.tsx b/src/components/SlideShow.tsx index f551021..abbd7f3 100644 --- a/src/components/SlideShow.tsx +++ b/src/components/SlideShow.tsx @@ -1,4 +1,3 @@ -import { useNDK } from '@nostr-dev-kit/ndk-react'; import './SlideShow.css'; import React, { useEffect, useRef, useState } from 'react'; import { @@ -6,21 +5,20 @@ import { buildFilter, extractImageUrls, isImage, - isAdultRelated, - isReply, isVideo, prepareContent, Post, createImgProxyUrl, + isReply, + isAdultRelated, } from './nostrImageDownload'; -import { blockedPublicKeys, adultContentTags, adultNPubs, mixedAdultNPubs } from './env'; +import { adultContentTags, adultNPubs, blockedPublicKeys, mixedAdultNPubs } from './env'; import Settings from './Settings'; import SlideView from './SlideView'; import { nip19 } from 'nostr-tools'; import uniqBy from 'lodash/uniqBy'; import AdultContentInfo from './AdultContentInfo'; import useNav from '../utils/useNav'; -import { NDKEvent } from '@nostr-dev-kit/ndk'; import { useGlobalState } from '../utils/globalState'; import useAutoLogin from '../utils/useAutoLogin'; import IconUser from './Icons/IconUser'; @@ -33,6 +31,9 @@ import IconHeart from './Icons/IconHeart'; import IconBolt from './Icons/IconBolt'; import IconSearch from './Icons/IconSearch'; import GridView from './GridView'; +import useEvents from '../ngine/hooks/useEvents'; +import { NDKSubscriptionCacheUsage } from '@nostr-dev-kit/ndk'; +import Login from './Login/Login'; // type AlbyNostr = typeof window.nostr & { enabled: boolean }; @@ -72,30 +73,65 @@ FEATURES: export type ViewMode = 'grid' | 'slideshow' | 'scroll'; const SlideShow = () => { - const { ndk, loginWithNip07, getProfile } = useNDK(); const [posts, setPosts] = useState([]); const images = useRef([]); - const fetchTimeoutHandle = useRef(0); const [viewMode, setViewMode] = useState('grid'); const [showSettings, setShowSettings] = useState(false); + const [showLogin, setShowLogin] = useState(false); + const { currentSettings: settings } = useNav(); const [state, setState] = useGlobalState(); - const { autoLogin, setAutoLogin } = useAutoLogin(); - const currentSubId = useRef('1'); + const { setAutoLogin } = useAutoLogin(); const [imageIdx, setImageIdx] = useState(); - const { zapClick, heartClick, zapState, heartState } = useZapsAndReations(state.activeImage, state.userNPub); + const { events } = useEvents(buildFilter(settings.tags, settings.npubs, settings.showReposts), { + cacheUsage: NDKSubscriptionCacheUsage.PARALLEL, + }); + + + useEffect(() => { + setPosts( + events + .filter( + event => + !blockedPublicKeys.includes(event.pubkey.toLowerCase()) && // remove blocked authors + (settings.showReplies || !isReply(event)) && + (settings.showAdult || !isAdultRelated(event, settings.tags.length > 0)) + ) + .map(event => { + // Hack: Write URL in the content for file events + if (event.kind === 1063) { + const urlTag = event?.tags?.find(t => t[0] == 'url'); + if (urlTag) { + event.content = urlTag[1]; + } + } + + // Convert reposts to the original event + if (event.kind === 6 && event.content) { + try { + const repostedEvent = JSON.parse(event.content); + if (repostedEvent) { + event = repostedEvent; + //event.isRepost = true; + } + } catch (e) { + // ingore, the content is no valid json + } + } + + return { event }; + }) + ); + }, [events]); + /* useEffect(() => { const fetch = () => { - if (!ndk) { - console.error('NDK not available.'); - return; - } currentSubId.current = `${Math.floor(Math.random() * 10000000)}`; - const postSubscription = ndk.subscribe(buildFilter(settings.tags, settings.npubs, settings.showReposts), { + const postSubscription = ndk.subscribe(), { subId: currentSubId.current, }); @@ -155,6 +191,13 @@ const SlideShow = () => { fetch(); } }, [settings, ndk]); +*/ + + useEffect(() => { + // reset all + setPosts([]); + images.current = []; + }, [settings]); useEffect(() => { images.current = uniqBy( @@ -203,19 +246,13 @@ const SlideShow = () => { }; useEffect(() => { - setTimeout(() => { - if (autoLogin && window.nostr) { - // auto login when alby is available - onLogin(); - } - }, 100); - document.body.addEventListener('keydown', onKeyDown); return () => { document.body.removeEventListener('keydown', onKeyDown); }; }, []); + /* useEffect(() => { if (state.userNPub) { setState({ profile: getProfile(state.userNPub) }); @@ -223,7 +260,7 @@ const SlideShow = () => { setState({ profile: undefined }); } }, [state.userNPub, getProfile, setState]); - +*/ const fullScreen = document.fullscreenElement !== null; const showAdultContentWarning = @@ -236,29 +273,18 @@ const SlideShow = () => { return ; } - const onLogin = async () => { - setAutoLogin(true); - const result = await loginWithNip07(); - if (!result) { - console.error('Login failed.'); - return; - } - - setState({ userNPub: result.npub }); + const toggleViewMode = () => { + setViewMode(view => (view == 'grid' ? 'scroll' : 'grid')); }; const onLogout = () => { setAutoLogin(false); setState({ userNPub: undefined, profile: undefined }); }; - - const toggleViewMode = () => { - setViewMode(view => (view == 'grid' ? 'scroll' : 'grid')); - }; - return ( <> {showSettings && setShowSettings(false)} setViewMode={setViewMode}>} + {showLogin && setShowLogin(false)}/>}
{state.userNPub && state.profile ? ( @@ -266,7 +292,7 @@ const SlideShow = () => { ) ) : ( - )} diff --git a/src/components/SlideView/index.tsx b/src/components/SlideView/index.tsx index 226dc4e..a54c828 100644 --- a/src/components/SlideView/index.tsx +++ b/src/components/SlideView/index.tsx @@ -61,6 +61,10 @@ const SlideView = ({ settings, images, setViewMode }: SlideViewProps) => { } }; + + + + const swipeHandlers = useSwipeable({ onSwipedLeft: () => nextImage(), onSwipedRight: () => previousImage(), diff --git a/src/components/nostrImageDownload.ts b/src/components/nostrImageDownload.ts index 4860b86..f98387d 100644 --- a/src/components/nostrImageDownload.ts +++ b/src/components/nostrImageDownload.ts @@ -39,7 +39,7 @@ export const buildFilter = (tags: string[], npubs: string[], withReposts = false } } - console.log('filter', filter); + // console.log('filter', filter); return filter; }; diff --git a/src/mainInner.tsx b/src/mainInner.tsx index f22e593..1564e63 100644 --- a/src/mainInner.tsx +++ b/src/mainInner.tsx @@ -1,9 +1,21 @@ import App from './App'; import './index.css'; import { createBrowserRouter, RouterProvider } from 'react-router-dom'; -import { NDKProvider } from '@nostr-dev-kit/ndk-react'; import { defaultRelays } from './components/env'; import Home from './components/Home'; +import { NgineProvider } from './ngine/context'; +import NDK from '@nostr-dev-kit/ndk'; +import { useEffect } from 'react'; +import NDKCacheAdapterDexie from '@nostr-dev-kit/ndk-cache-dexie'; + +const cacheAdapterDexie = new NDKCacheAdapterDexie({ dbName: "slidestr" }); +const ndk = new NDK({ + explicitRelayUrls: defaultRelays, + outboxRelayUrls: ["wss://purplepag.es"], + enableOutboxModel: true, + //signer: new NDKNip07Signer(), + cacheAdapter: cacheAdapterDexie as any // types don't in the current version +}); const MainInner = () => { //const [state] = useGlobalState(); @@ -39,11 +51,14 @@ const MainInner = () => { }, ]); - return ( - + useEffect(() => { + ndk.connect(); + }, []); + + + return ( - - ); + ) }; export default MainInner; diff --git a/src/ngine/context.tsx b/src/ngine/context.tsx new file mode 100644 index 0000000..1257ee5 --- /dev/null +++ b/src/ngine/context.tsx @@ -0,0 +1,384 @@ +import { useEffect, createContext, useContext, ReactNode } from 'react'; +import { useAtom, Provider } from 'jotai'; + +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import NDK, { + NDKKind, + NDKNip07Signer, + NDKNip46Signer, + NDKPrivateKeySigner, + NDKUser, + NostrEvent, + NDKEvent, + NDKSigner, + NDKSubscriptionCacheUsage, +} from '@nostr-dev-kit/ndk'; +import useRates from './hooks/useRates'; +import useLatestEvent from './hooks/useLatestEvent'; +import { sessionAtom, relayListAtom, followsAtom, ratesAtom } from './state'; +import { Links } from './types'; +import { getNip05For } from '../utils/nip05'; + +const queryClient = new QueryClient(); + +interface NgineContextProps { + ndk: NDK; + nip07Login: () => Promise; + nip46Login: (url: string) => Promise; + nsecLogin: (nsec: string) => Promise; + npubLogin: (npub: string) => Promise; + sign: (ev: Omit, signer?: NDKSigner) => Promise; + logOut: () => void; + links?: Links; +} + +const NgineContext = createContext({ + ndk: new NDK({ explicitRelayUrls: [] }), + nip07Login: () => { + return Promise.reject(); + }, + nip46Login: () => { + return Promise.reject(); + }, + nsecLogin: () => { + return Promise.reject(); + }, + npubLogin: () => { + return Promise.reject(); + }, + sign: () => { + return Promise.reject(); + }, + logOut: () => {}, + links: {}, +}); + +interface NgineProviderProps { + ndk: NDK; + links?: Links; + children: ReactNode; + enableFiatRates?: boolean; + locale?: string; +} + +function SessionProvider({ pubkey, children }: { pubkey: string; children: ReactNode }) { + const [contactList, setContacts] = useAtom(followsAtom); + const [relayList, setRelayList] = useAtom(relayListAtom); + + // Contacts + + const contacts = useLatestEvent( + { + kinds: [NDKKind.Contacts], + authors: [pubkey], + }, + { + cacheUsage: NDKSubscriptionCacheUsage.PARALLEL, + closeOnEose: false, + } + ); + + useEffect(() => { + if (contacts) { + const lastSeen = contactList?.created_at ?? 0; + const createdAt = contacts.created_at ?? 0; + if (createdAt > lastSeen) { + setContacts(contacts.rawEvent()); + } + } + }, [contacts]); + + // Relays + + const relays = useLatestEvent( + { + kinds: [NDKKind.RelayList], + authors: [pubkey], + }, + { + cacheUsage: NDKSubscriptionCacheUsage.PARALLEL, + closeOnEose: false, + } + ); + + useEffect(() => { + if (relays) { + const lastSeen = relayList?.created_at ?? 0; + const createdAt = relays.created_at ?? 0; + if (createdAt > lastSeen) { + setRelayList(relays.rawEvent()); + } + } + }, [relays]); + + return children; +} + +export const NgineProvider = ({ ndk, links, children, enableFiatRates = false }: NgineProviderProps) => { + const [session, setSession] = useAtom(sessionAtom); + const [, setFollows] = useAtom(followsAtom); + const [, setRelays] = useAtom(relayListAtom); + const [, setRates] = useAtom(ratesAtom); + const rates = useRates(!enableFiatRates); + + useEffect(() => { + setRates(rates); + }, [rates]); + + useEffect(() => { + if (session?.method === 'nip07') { + const signer = new NDKNip07Signer(); + ndk.signer = signer; + } else if (session?.method === 'nsec') { + const signer = new NDKPrivateKeySigner(session.privkey); + ndk.signer = signer; + } else if (session?.method === 'nip46' && session.bunker) { + const { privkey, relays } = session.bunker; + const localSigner = new NDKPrivateKeySigner(privkey); + const bunkerNDK = new NDK({ explicitRelayUrls: relays }); + bunkerNDK.connect().then(() => { + const signer = new NDKNip46Signer(bunkerNDK, session.pubkey, localSigner); + signer.on('authUrl', url => { + window.open(url, 'auth', 'width=600,height=600'); + }); + ndk.signer = signer; + }); + } + // todo: nip05 + }, [session]); + + async function nip07Login() { + const signer = new NDKNip07Signer(); + const user = await signer.blockUntilReady(); + if (user) { + ndk.signer = signer; + user.ndk = ndk; + setSession({ + method: 'nip07', + pubkey: user.pubkey, + }); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const profile = await user.fetchProfile({ + cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, + }); + } + return user; + } + + async function getNostrConnectSettings(url: string) { + if (url.includes('bunker://')) { + const asURL = new URL(url); + const relays = asURL.searchParams.getAll('relay'); + const pubkey = asURL.pathname.replace(/^\/\//, ''); + return { relays, pubkey }; + } else { + console.log(url); + //const user = await NDKUser.fromNip05(url, ndk, true); // TODO needs PR FIX in NDK + const user = await getNip05For(url); + if (user) { + const pubkey = user.pubkey; + const relays = user.nip46 && user.nip46.length > 0 ? user.nip46 : ['wss://relay.nsecbunker.com']; + return { + pubkey, + relays, + }; + } + } + } + + async function nip46Login(url: string) { + const settings = await getNostrConnectSettings(url); + if (settings) { + console.log(settings); + const { pubkey, relays } = settings; + const bunkerNDK = new NDK({ + explicitRelayUrls: relays, + }); + await bunkerNDK.connect(); + const localSigner = NDKPrivateKeySigner.generate(); + console.log('localSigner', localSigner); + const signer = new NDKNip46Signer(bunkerNDK, pubkey, localSigner); + console.log('signer', signer); + signer.on('authUrl', url => { + window.open(url, 'auth', 'width=600,height=600'); + }); + const user = await signer.blockUntilReady(); + if (user) { + ndk.signer = signer; + user.ndk = ndk; + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const profile = await user.fetchProfile({ + cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, + }); + + setSession({ + method: 'nip46', + pubkey, + bunker: { + privkey: localSigner.privateKey as string, + relays, + }, + }); + } + return user; + } + } + + async function npubLogin(pubkey: string) { + const user = ndk.getUser({ hexpubkey: pubkey }); + setSession({ + method: 'npub', + pubkey: pubkey, + }); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const profile = await user.fetchProfile({ + cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, + }); + return user; + } + + async function nsecLogin(privkey: string) { + const signer = new NDKPrivateKeySigner(privkey); + const user = await signer.blockUntilReady(); + if (user) { + ndk.signer = signer; + setSession({ + method: 'nsec', + pubkey: user.pubkey, + privkey, + }); + } + return user; + } + + async function sign(ev: Omit, signer?: NDKSigner) { + if (signer) { + const user = await signer.user(); + const ndkEvent = new NDKEvent(ndk, { ...ev, pubkey: user.pubkey }); + await ndkEvent.sign(signer); + return ndkEvent; + } else if (session?.pubkey && session?.method !== 'npub') { + const ndkEvent = new NDKEvent(ndk, { ...ev, pubkey: session.pubkey }); + await ndkEvent.sign(); + return ndkEvent; + } else { + console.log('Could not sign event', ev); + } + } + + function logOut() { + ndk.signer = undefined; + setSession(null); + setFollows(null); + setRelays(null); + } + + return ( + + + + {session ? {children} : children} + + + + ); +}; + +export const useExtensionLogin = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.nip07Login; +}; + +export const usePubkeyLogin = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.npubLogin; +}; + +export const useBunkerLogin = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.nip46Login; +}; + +export const useNsecLogin = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.nsecLogin; +}; + +export const useSign = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.sign; +}; + +export const useNDK = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.ndk; +}; + +export const useSigner = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.ndk.signer; +}; + +type LinkType = keyof Links; + +export const useLink = (type: LinkType, value: string): string | null => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + if (context.links && context.links[type]) { + // @ts-expect-error maybe not defined + return context.links[type](value); + } + return null; +}; + +export const useLinks = (): Links | undefined => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.links; +}; + +export const useLogOut = () => { + const context = useContext(NgineContext); + if (context === undefined) { + throw new Error('Ngine context not found'); + } + return context.logOut; +}; diff --git a/src/ngine/filter.ts b/src/ngine/filter.ts new file mode 100644 index 0000000..d216753 --- /dev/null +++ b/src/ngine/filter.ts @@ -0,0 +1,23 @@ +import { NDKKind, NDKFilter } from "@nostr-dev-kit/ndk"; + +export function addressesToFilter(addresses: string[]): NDKFilter { + const filter = addresses.reduce( + (acc, a) => { + const [k, pubkey, d] = a.split(":"); + acc.kinds.add(Number(k)); + acc.authors.add(pubkey); + acc["#d"].add(d); + return acc; + }, + { + kinds: new Set(), + authors: new Set(), + "#d": new Set(), + }, + ); + return { + kinds: [...filter.kinds], + authors: [...filter.authors], + "#d": [...filter["#d"]], + }; +} diff --git a/src/ngine/format.ts b/src/ngine/format.ts new file mode 100644 index 0000000..93af848 --- /dev/null +++ b/src/ngine/format.ts @@ -0,0 +1,48 @@ +import type { Currency, Rates } from "./types"; + +export function formatSats(n: number) { + const intl = new Intl.NumberFormat("en", { + minimumFractionDigits: 0, + maximumFractionDigits: n < 1e8 ? 2 : 8, + }); + + if (n === 1) { + return `1`; + } else if (n < 2e3) { + return `${n}`; + } else if (n < 1e6) { + return `${intl.format(n / 1e3)}K`; + } else if (n < 1e9) { + return `${intl.format(n / 1e6)}M`; + } else { + return `${intl.format(n / 1e8)}BTC`; + } +} + +export function formatSatAmount(n: number, currency: Currency, rates: Rates) { + const intl = new Intl.NumberFormat("en", { + style: "currency", + currency, + maximumFractionDigits: 2, + }); + const amount = (n / 1e8) * rates.ask; + return intl.format(amount); +} + +export function formatRelativeTime(timestamp: number) { + const now = Math.floor(Date.now() / 1000); + const elapsed = now - timestamp; + + if (elapsed < 60) { + return `${elapsed} second${elapsed !== 1 ? "s" : ""} ago`; + } else if (elapsed < 3600) { + const minutes = Math.floor(elapsed / 60); + return `${minutes} minute${minutes !== 1 ? "s" : ""} ago`; + } else if (elapsed < 86400) { + const hours = Math.floor(elapsed / 3600); + return `${hours} hour${hours !== 1 ? "s" : ""} ago`; + } else { + const days = Math.floor(elapsed / 86400); + return `${days} day${days !== 1 ? "s" : ""} ago`; + } +} diff --git a/src/ngine/hooks/useAddress.tsx b/src/ngine/hooks/useAddress.tsx new file mode 100644 index 0000000..12f9ed5 --- /dev/null +++ b/src/ngine/hooks/useAddress.tsx @@ -0,0 +1,20 @@ +import { useMemo } from "react"; + +import useEvent from "./useEvent"; + +export default function useAddress(address: string, relays?: string[]) { + const { kind, pubkey, identifier } = useMemo(() => { + const [k, pubkey, identifier] = address.split(":"); + return { kind: Number(k), pubkey, identifier }; + }, [address]); + const event = useEvent( + { + kinds: [kind], + authors: [pubkey], + "#d": [identifier], + }, + {}, + relays, + ); + return event; +} diff --git a/src/ngine/hooks/useAddresses.tsx b/src/ngine/hooks/useAddresses.tsx new file mode 100644 index 0000000..eec690d --- /dev/null +++ b/src/ngine/hooks/useAddresses.tsx @@ -0,0 +1,10 @@ +import useEvents, { SubscriptionOptions } from "./useEvents"; +import { addressesToFilter } from "../filter"; + +export default function useAddresses( + addresses: string[], + opts?: SubscriptionOptions, + relays?: string[], +) { + return useEvents(addressesToFilter(addresses), opts, relays); +} diff --git a/src/ngine/hooks/useCopy.ts b/src/ngine/hooks/useCopy.ts new file mode 100644 index 0000000..cc4fe40 --- /dev/null +++ b/src/ngine/hooks/useCopy.ts @@ -0,0 +1,11 @@ +export default function useCopy() { + const copy = async (text: string) => { + if (typeof navigator === "undefined") { + return; + } + + await navigator.clipboard.writeText(text); + }; + + return copy; +} diff --git a/src/ngine/hooks/useEvent.ts b/src/ngine/hooks/useEvent.ts new file mode 100644 index 0000000..3684833 --- /dev/null +++ b/src/ngine/hooks/useEvent.ts @@ -0,0 +1,45 @@ +import { useMemo } from "react"; + +import { + NDKEvent, + NDKFilter, + NDKRelaySet, + NDKSubscriptionCacheUsage, +} from "@nostr-dev-kit/ndk"; +import { useQuery, UseQueryResult } from "@tanstack/react-query"; + +import { useNDK } from "../context"; +import { hashSha256 } from "../utils"; +import { SubscriptionOptions } from "./useEvents"; + +export default function useEvent( + filter: NDKFilter, + opts?: SubscriptionOptions, + relays?: string[], +) { + const ndk = useNDK(); + const id = useMemo(() => { + return hashSha256(filter); + }, [filter]); + + const query: UseQueryResult = useQuery({ + queryKey: ["use-event", id], + queryFn: () => { + const relaySet = + relays?.length ?? 0 > 0 + ? NDKRelaySet.fromRelayUrls(relays as string[], ndk) + : undefined; + return ndk.fetchEvent( + filter, + { + groupable: true, + cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, + ...(opts ? opts : {}), + }, + relaySet, + ); + }, + }); + + return query.data; +} diff --git a/src/ngine/hooks/useEvents.ts b/src/ngine/hooks/useEvents.ts new file mode 100644 index 0000000..b017ef6 --- /dev/null +++ b/src/ngine/hooks/useEvents.ts @@ -0,0 +1,44 @@ +import { useState, useEffect, useMemo } from 'react'; + +import { NDKEvent, NDKFilter, NDKRelaySet, NDKSubscriptionOptions } from '@nostr-dev-kit/ndk'; +import uniqBy from 'lodash/uniqBy'; + +import { useNDK } from '../context'; +import { hashSha256 } from '../utils'; + +export interface SubscriptionOptions extends NDKSubscriptionOptions { + disable?: boolean; +} + +export default function useEvents(filter: NDKFilter | NDKFilter[], opts?: SubscriptionOptions, relays?: string[]) { + const ndk = useNDK(); + const [eose, setEose] = useState(false); + const [events, setEvents] = useState([]); + const id = useMemo(() => { + return hashSha256(filter); + }, [filter]); + + useEffect(() => { + + if (filter && !opts?.disable) { + console.log('useEvents: new Subscription'); + setEvents([]); + const relaySet = relays?.length ?? 0 > 0 ? NDKRelaySet.fromRelayUrls(relays as string[], ndk) : undefined; + const sub = ndk.subscribe(filter, opts, relaySet); + sub.on('event', (ev: NDKEvent) => { + setEvents(evs => { + const newEvents = evs.concat([ev]).sort((a, b) => (b.created_at ?? 0) - (a.created_at ?? 0)); + return uniqBy(newEvents, (e: NDKEvent) => e.tagId()); + }); + }); + sub.on('eose', () => { + setEose(true); + }); + return () => { + sub.stop(); + }; + } + }, [id, opts?.disable]); + + return { id, eose, events }; +} diff --git a/src/ngine/hooks/useLatestEvent.tsx b/src/ngine/hooks/useLatestEvent.tsx new file mode 100644 index 0000000..3efc687 --- /dev/null +++ b/src/ngine/hooks/useLatestEvent.tsx @@ -0,0 +1,41 @@ +import { useState, useEffect } from "react"; + +import { + NDKEvent, + NDKFilter, + NDKRelaySet, +} from "@nostr-dev-kit/ndk"; + +import { useNDK } from "../context"; +import { SubscriptionOptions } from "./useEvents"; + +export default function useLatestEvent( + filter: NDKFilter | NDKFilter[], + opts?: SubscriptionOptions, + relays?: string[], +) { + const ndk = useNDK(); + const [event, setEvent] = useState(); + + useEffect(() => { + if (!opts?.disable) { + const relaySet = + relays?.length ?? 0 > 0 + ? NDKRelaySet.fromRelayUrls(relays as string[], ndk) + : undefined; + const sub = ndk.subscribe(filter, opts, relaySet); + sub.on("event", (ev: NDKEvent) => { + const lastSeen = event?.created_at ?? 0; + const createdAt = ev?.created_at ?? 0; + if (createdAt > lastSeen) { + setEvent(ev); + } + }); + return () => { + sub.stop(); + }; + } + }, [opts?.disable]); + + return event; +} diff --git a/src/ngine/hooks/useProfile.ts b/src/ngine/hooks/useProfile.ts new file mode 100644 index 0000000..c829f5f --- /dev/null +++ b/src/ngine/hooks/useProfile.ts @@ -0,0 +1,22 @@ +import { NDKUserProfile, NDKSubscriptionCacheUsage } from "@nostr-dev-kit/ndk"; +import { useQuery, UseQueryResult } from "@tanstack/react-query"; + +import { useNDK } from "../context"; + +export default function useProfile( + pubkey: string, + cacheUsage = NDKSubscriptionCacheUsage.CACHE_FIRST, +) { + const ndk = useNDK(); + const query: UseQueryResult = useQuery({ + queryKey: ["profile", pubkey], + queryFn: () => { + const user = ndk.getUser({ hexpubkey: pubkey }); + return user.fetchProfile({ + cacheUsage, + }); + }, + }); + + return query.data; +} diff --git a/src/ngine/hooks/useProfiles.ts b/src/ngine/hooks/useProfiles.ts new file mode 100644 index 0000000..6b8a50c --- /dev/null +++ b/src/ngine/hooks/useProfiles.ts @@ -0,0 +1,31 @@ +import { useState, useEffect } from "react"; +import { + NDKUserProfile, + NDKSubscriptionCacheUsage, + NDKKind, +} from "@nostr-dev-kit/ndk"; + +import { useNDK } from "../context"; + +export default function useProfiles(pubkeys: string[]) { + const ndk = useNDK(); + const [profiles, setProfiles] = useState([]); + + useEffect(() => { + ndk + .fetchEvents( + { + kinds: [NDKKind.Metadata], + authors: pubkeys, + }, + { + cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, + }, + ) + .then((profileSet) => { + return setProfiles([...profileSet].map((ev) => JSON.parse(ev.content))); + }); + }, [pubkeys]); + + return profiles; +} diff --git a/src/ngine/hooks/useRates.ts b/src/ngine/hooks/useRates.ts new file mode 100644 index 0000000..df21d7f --- /dev/null +++ b/src/ngine/hooks/useRates.ts @@ -0,0 +1,45 @@ +import { useMemo } from "react"; +import { NDKKind, NDKEvent } from "@nostr-dev-kit/ndk"; + +import useLatestEvent from "./useLatestEvent"; +import type { RateSymbol, Rates, FiatCurrency } from "../money"; + +const SNORT_PUBKEY = + "84de35e2584d2b144aae823c9ed0b0f3deda09648530b93d1a2a146d1dea9864"; + +export default function useRates(isDisabled = false): Rates[] { + const event = useLatestEvent( + { + kinds: [1009 as NDKKind], + authors: [SNORT_PUBKEY], + }, + { + disable: isDisabled, + groupable: false, + closeOnEose: false, + }, + ["wss://relay.snort.social"], + ); + function eventToRates(ev: NDKEvent): Rates[] { + const tags = ev.getMatchingTags("d"); + return tags.map((tag) => { + const symbol = tag[1]; + return { + time: ev.created_at ?? 0, + ask: Number(tag[2]) ?? 0, + bid: Number(tag[3]) ?? 0, + low: Number(tag[4]) ?? 0, + high: Number(tag[5]) ?? 0, + currency: symbol.replace("BTC", "") as FiatCurrency, + symbol: symbol as RateSymbol, + }; + }); + } + const rates = useMemo(() => { + if (event) { + return eventToRates(event); + } + return []; + }, [event]); + return rates; +} diff --git a/src/ngine/hooks/useReactions.ts b/src/ngine/hooks/useReactions.ts new file mode 100644 index 0000000..09fbb63 --- /dev/null +++ b/src/ngine/hooks/useReactions.ts @@ -0,0 +1,83 @@ +import { useMemo } from "react"; +import { + NDKEvent, + NDKFilter, + NDKKind, + NDKSubscriptionCacheUsage, +} from "@nostr-dev-kit/ndk"; + +import useEvents from "./useEvents"; +import { zapsSummary, ZapRequest } from "../nostr/nip57"; +import { ReactionKind } from "../types"; + +export type ReactionEvents = { + events: NDKEvent[]; + zaps: { + zapRequests: ZapRequest[]; + total: number; + }; + reactions: NDKEvent[]; + replies: NDKEvent[]; + reposts: NDKEvent[]; + bookmarks: NDKEvent[]; +}; + +export default function useReactions( + event: NDKEvent, + kinds: ReactionKind[], + live = true, +): ReactionEvents { + const filter = useMemo(() => { + return { + kinds, + ...event.filter(), + } as NDKFilter; + }, [event, kinds]); + const { events } = useEvents(filter, { + disable: !live, + closeOnEose: false, + cacheUsage: NDKSubscriptionCacheUsage.PARALLEL, + }); + const zaps = useMemo( + () => events.filter((e) => e.kind === NDKKind.Zap), + [events], + ); + const { zapRequests, total } = useMemo(() => zapsSummary(zaps), [zaps]); + const reactions = useMemo( + () => events.filter((e) => e.kind === NDKKind.Reaction), + [events], + ); + const replies = useMemo( + () => events.filter((e) => e.kind === NDKKind.Text), + [events], + ); + const reposts = useMemo( + () => + events.filter( + (e) => e.kind === NDKKind.Repost || e.kind === NDKKind.GenericRepost, + ), + [events], + ); + const bookmarks = useMemo( + () => + events.filter( + (e) => + e.kind === NDKKind.BookmarkList || + e.kind === NDKKind.CategorizedBookmarkList || + e.kind === NDKKind.RelayList || + e.kind === NDKKind.EmojiList, + ), + [events], + ); + return { + events, + zaps: { + zapRequests, + total, + }, + reactions, + replies, + reposts, + bookmarks, + }; +} diff --git a/src/ngine/lnurl.ts b/src/ngine/lnurl.ts new file mode 100644 index 0000000..196630b --- /dev/null +++ b/src/ngine/lnurl.ts @@ -0,0 +1,158 @@ +import { useState, useEffect } from "react"; +import { NostrEvent } from "@nostr-dev-kit/ndk"; +import { useQuery, useQueries } from "@tanstack/react-query"; +import { bech32 } from "bech32"; +import { NDKUserProfile } from "@nostr-dev-kit/ndk"; + +const BECH32_MAX_BYTES = 42000; + +interface LNURLService { + nostrPubkey?: string; + minSendable: number; + maxSendable: number; + metadata: string; + callback: string; + commentAllowed?: number; +} + +export function useLnurl(profile: NDKUserProfile | undefined) { + const key = profile?.lud16 ?? "none"; + const query = useQuery({ + queryKey: ["lnurl", key], + queryFn: async () => { + if (key === "none") { + return null; + } + return loadService(key); + }, + retry: false, + refetchOnMount: false, + }); + return query; +} + +export function useLnurlVerify(lnurlVerifyUrl?: string) { + const [isPaid, setIsPaid] = useState(false); + + useEffect(() => { + let pollingInterval: number | undefined; + + const pollLnurlPayment = async () => { + try { + if (lnurlVerifyUrl) { + const response = await fetch(lnurlVerifyUrl); + const data = await response.json(); + + if (data.settled) { + setIsPaid(true); + clearInterval(pollingInterval); + } + } + } catch (error) { + console.error("Error polling LNURL:", error); + } + }; + + if (lnurlVerifyUrl) { + pollingInterval = setInterval(pollLnurlPayment, 1000); + + return () => clearInterval(pollingInterval); + } + + return () => {}; + }, [lnurlVerifyUrl]); + + return isPaid; +} + +export function useLnurls(profiles: NDKUserProfile[]) { + const queries = profiles.map((profile) => { + return { + queryKey: ["lnurl", profile.lud16], + queryFn: async () => { + if (profile.lud16) { + return loadService(profile.lud16); + } + }, + }; + }); + return useQueries({ queries }); +} + +function bech32ToText(str: string) { + const decoded = bech32.decode(str, BECH32_MAX_BYTES); + const buf = bech32.fromWords(decoded.words); + return new TextDecoder().decode(Uint8Array.from(buf)); +} + +async function fetchJson(url: string) { + const rsp = await fetch(url); + if (rsp.ok) { + const data: T = await rsp.json(); + return data; + } + return null; +} + +export async function loadService( + service?: string, +): Promise { + if (service) { + const isServiceUrl = service.toLowerCase().startsWith("lnurl"); + if (isServiceUrl) { + const serviceUrl = bech32ToText(service); + return await fetchJson(serviceUrl); + } else { + const ns = service.split("@"); + return await fetchJson(`https://${ns[1]}/.well-known/lnurlp/${ns[0]}`); + } + } + return null; +} + +export async function loadInvoice( + payService: LNURLService, + amount: number, + comment?: string, + nostr?: NostrEvent, +) { + if (!amount || !payService) return null; + + const callback = new URL(payService.callback); + const query = new Map(); + if (callback.search.length > 0) { + callback.search + .slice(1) + .split("&") + .forEach((a) => { + const pSplit = a.split("="); + query.set(pSplit[0], pSplit[1]); + }); + } + query.set("amount", Math.floor(amount * 1000).toString()); + if (comment && payService?.commentAllowed) { + query.set("comment", comment); + } + if (payService.nostrPubkey && nostr) { + query.set("nostr", JSON.stringify(nostr)); + } + + const baseUrl = `${callback.protocol}//${callback.host}${callback.pathname}`; + // @ts-ignore + const queryJoined = [...query.entries()] + .map((v) => `${v[0]}=${encodeURIComponent(v[1])}`) + .join("&"); + try { + const rsp = await fetch(`${baseUrl}?${queryJoined}`); + if (rsp.ok) { + const data = await rsp.json(); + if (data.status === "ERROR") { + throw new Error(data.reason); + } else { + return data; + } + } + } catch (e) { + console.error(e); + } +} diff --git a/src/ngine/money.ts b/src/ngine/money.ts new file mode 100644 index 0000000..a821433 --- /dev/null +++ b/src/ngine/money.ts @@ -0,0 +1,11 @@ +import { Rates } from "./types"; + +export function convertSatsToFiat(amt: string, rates: Rates): string { + const inBtc = Number(amt) / 1e8; + return String((rates.ask * inBtc).toFixed(2)); +} + +export function convertFiatToSats(amt: string, rates: Rates): string { + const inFiat = Number(amt); + return String(((inFiat / rates.ask) * 1e8).toFixed(0)); +} diff --git a/src/ngine/nostr/kinds.tsx b/src/ngine/nostr/kinds.tsx new file mode 100644 index 0000000..e43a92f --- /dev/null +++ b/src/ngine/nostr/kinds.tsx @@ -0,0 +1,10 @@ +import { NDKKind } from "@nostr-dev-kit/ndk"; + +export const REPOSTS = [NDKKind.Repost, NDKKind.GenericRepost]; + +export const BOOKMARKS = [ + NDKKind.BookmarkList, + NDKKind.CategorizedBookmarkList, + NDKKind.RelayList, + NDKKind.EmojiList, +]; diff --git a/src/ngine/nostr/nip57.ts b/src/ngine/nostr/nip57.ts new file mode 100644 index 0000000..3f83a82 --- /dev/null +++ b/src/ngine/nostr/nip57.ts @@ -0,0 +1,172 @@ +import { useMemo } from "react"; +import { decode } from "light-bolt11-decoder"; +import { NDKKind } from "@nostr-dev-kit/ndk"; +import type { NDKEvent, NostrEvent } from "@nostr-dev-kit/ndk"; + +import { unixNow } from "../time"; + +export function makeZapRequest({ + p, + pubkey, + amount, + relays, + event, + comment, +}: { + p: string; + pubkey: string; + amount: number; + relays: string[]; + event?: NDKEvent; + comment?: string; +}): NostrEvent { + const msats = amount * 1000; + return { + pubkey, + kind: NDKKind.ZapRequest, + created_at: unixNow(), + content: comment || "", + tags: [ + ["p", p], + ...[event ? event.tagReference() : []], + ["amount", String(msats)], + ["relays", ...relays], + ], + }; +} + +export function getZapRequest(zap: NDKEvent): NostrEvent | undefined { + let zapRequest = zap.tagValue("description"); + if (zapRequest) { + try { + if (zapRequest.startsWith("%")) { + zapRequest = decodeURIComponent(zapRequest); + } + return JSON.parse(zapRequest); + } catch (e) { + console.warn("Invalid zap", zapRequest); + } + } +} + +export function getZapAmount(zap: NDKEvent): number { + try { + const invoice = zap.tagValue("bolt11"); + if (invoice) { + const decoded = decode(invoice); + const amount = decoded.sections.find(({ name }) => name === "amount"); + return amount ? Number(amount.value) / 1000 : 0; + } + return 0; + } catch (error) { + console.error(error); + return 0; + } +} + +export interface ZapRequest extends NostrEvent { + created_at: number; + amount: number; + e?: string; + p: string; + a?: string; + relays: string[]; +} + +export interface ZapsSummary { + zapRequests: ZapRequest[]; + total: number; +} + +export function parseZap(z: NDKEvent): ZapRequest | null { + const zr = getZapRequest(z); + if (!zr) { + return null; + } + const eTag = zr ? zr.tags.find((t) => t[0] === "e") : null; + const e = eTag ? eTag[1] : undefined; + const pTag = zr ? zr.tags.find((t) => t[0] === "p") : null; + const p = pTag ? pTag[1] : z.pubkey; + const aTag = zr ? zr.tags.find((t) => t[0] === "a") : null; + const a = aTag ? aTag[1] : undefined; + const relaysTag = zr ? zr.tags.find((t) => t[0] === "relays") || [] : []; + return { + ...getZapRequest(z), + amount: getZapAmount(z), + e, + p, + a, + relays: relaysTag.slice(1), + } as ZapRequest; +} + +export function zapsSummary(zaps: NDKEvent[]): ZapsSummary { + const zapRequests = zaps + .map(parseZap) + .filter((z) => z !== null) + // @ts-ignore + .sort((a, b) => b.amount - a.amount) as ZapRequest[]; + const total = zapRequests.reduce((acc, { amount }) => { + return acc + amount; + }, 0); + return { zapRequests, total }; +} + +export interface ZapSplit { + pubkey: string; + percentage: number; +} + +export function getZapSplits(ev: NDKEvent): ZapSplit[] { + const zapTags = ev.getMatchingTags("zap"); + return zapTagsToSplits(zapTags); +} + +export function zapTagsToSplits(zapTags: string[][]): ZapSplit[] { + const totalWeight = zapTags.reduce((acc, t) => { + return acc + Number(t[3] ?? ""); + }, 0); + return zapTags.map((t) => { + const [, pubkey, , weight] = t; + const percentage = (Number(weight) / totalWeight) * 100; + return { pubkey, percentage }; + }); +} + +interface Rank { + pubkey: string; + amount: number; +} + +export function useRanking(zaps: NDKEvent[]): Rank[] { + const { zapRequests } = useMemo(() => zapsSummary(zaps), [zaps]); + + const byAmount = useMemo(() => { + return zapRequests.reduce( + (result, element) => { + const pubkey = element.pubkey; + + if (!result[pubkey]) { + result[pubkey] = 0; + } + + result[pubkey] += element.amount; + + return result; + }, + {} as Record, + ); + }, [zapRequests]); + + const ranking = useMemo(() => { + return Object.entries(byAmount) + .sort((a, b) => { + return b[1] - a[1]; + }) + .map((e) => { + return { pubkey: e[0], amount: e[1] }; + }); + }, [byAmount]); + + return ranking; +} diff --git a/src/ngine/state.ts b/src/ngine/state.ts new file mode 100644 index 0000000..2876604 --- /dev/null +++ b/src/ngine/state.ts @@ -0,0 +1,68 @@ +import { atom, useAtomValue } from "jotai"; +import { atomWithStorage } from "jotai/utils"; +import type { NostrEvent } from "@nostr-dev-kit/ndk"; + +import type { Relay, Rates, Session, Currency } from "./types"; + +export const sessionAtom = atomWithStorage( + "ngine.session", + null, +); +export const relayListAtom = atomWithStorage( + "ngine.10002", + null, +); +export const relaysAtom = atom((get) => { + const relayList = get(relayListAtom); + return ( + relayList?.tags + .filter((t) => t[0] === "r") + .map((t) => { + const url = t[1].replace(/\/$/, ""); + const read = t.length === 2 || t[2] === "read"; + const write = t.length === 2 || t[2] === "write"; + return { url, read, write }; + }) || [] + ); +}); +export const followsAtom = atom(null); +export const contactsAtom = atom((get) => { + const follows = get(followsAtom); + return follows?.tags.filter((t) => t[0] === "p").map((t) => t[1]) ?? []; +}); +export const currencyAtom = atomWithStorage("ngine.currency", "BTC"); +export const ratesAtom = atomWithStorage("ngine.rates", []); + +export function useExchangeRate(currency: Currency): Rates | undefined { + const rates = useAtomValue(ratesAtom); + if (currency === "BTC") { + return; + } + return rates.find((r) => r.currency === currency); +} + +export function useCurrency() { + return useAtomValue(currencyAtom); +} + +export function useRates() { + const currency = useCurrency(); + return useExchangeRate(currency); +} + +export function useRelaySettings() { + return useAtomValue(relaysAtom); +} + +export function useRelays() { + const relays = useAtomValue(relaysAtom); + return relays.map((r) => r.url); +} + +export function useSession() { + return useAtomValue(sessionAtom); +} + +export function useContacts() { + return useAtomValue(contactsAtom); +} diff --git a/src/ngine/tags.ts b/src/ngine/tags.ts new file mode 100644 index 0000000..187d36c --- /dev/null +++ b/src/ngine/tags.ts @@ -0,0 +1,5 @@ +import { NDKEvent } from "@nostr-dev-kit/ndk"; + +export function tagValues(ev: NDKEvent, tag: string): string[] { + return ev.tags.filter((t) => t[0] === tag).map((t) => t[1]); +} diff --git a/src/ngine/time.ts b/src/ngine/time.ts new file mode 100644 index 0000000..3856838 --- /dev/null +++ b/src/ngine/time.ts @@ -0,0 +1,3 @@ +export function unixNow() { + return Math.round(Date.now() / 1000); +} diff --git a/src/ngine/types.ts b/src/ngine/types.ts new file mode 100644 index 0000000..66d610f --- /dev/null +++ b/src/ngine/types.ts @@ -0,0 +1,83 @@ +import type { ReactNode } from "react"; +import type { NDKKind, NDKEvent } from "@nostr-dev-kit/ndk"; + +// Reactions + +export type ReactionKind = + | NDKKind.Zap + | NDKKind.Text + | NDKKind.Reaction + | NDKKind.Repost + | NDKKind.GenericRepost + | NDKKind.BookmarkList + | NDKKind.CategorizedBookmarkList + | NDKKind.RelayList + | NDKKind.EmojiList; + +// Relays + +export interface Relay { + url: string; + read: boolean; + write: boolean; +} + +// Links + +export interface Links { + npub?: (npub: string) => string; + nrelay?: (nrelay: string) => string; + nprofile?: (nprofile: string) => string; + nevent?: (nevent: string) => string; + naddr?: (naddr: string) => string; + t?: (t: string) => string; +} + +// Sessions + +// todo: nip05 with nip46 +export type LoginMethod = "nip07" | "nip46" | "npub" | "nsec"; + +export interface Session { + method: LoginMethod; + pubkey: string; + privkey?: string; + bunker?: { + privkey: string; + relays: string[]; + }; +} + +// Components + +export type Fragment = string | ReactNode; + +export type EventComponent = (props: EventProps) => ReactNode; +export type Components = Record; + +export interface EventProps { + event: NDKEvent; + components?: Components; + reactionKinds?: ReactionKind[]; +} + +// Nostr + +export type Tag = string[]; +export type Tags = Tag[]; + +// Money + +export type RateSymbol = "BTCUSD" | "BTCEUR"; +export type FiatCurrency = "USD" | "EUR"; +export type Currency = "BTC" | "USD" | "EUR"; + +export interface Rates { + time: number; + ask: number; + bid: number; + low: number; + high: number; + currency: FiatCurrency; + symbol: RateSymbol; +} diff --git a/src/ngine/utils.ts b/src/ngine/utils.ts new file mode 100644 index 0000000..a0b5aeb --- /dev/null +++ b/src/ngine/utils.ts @@ -0,0 +1,63 @@ +import { sha256 } from "@noble/hashes/sha256"; + +interface HasPubkey { + pubkey: string; +} + +export function dedupeByPubkey(evs: T[]): T[] { + return evs.reduce( + (acc, ev) => { + if (acc.seen.has(ev.pubkey)) { + return acc; + } + acc.seen.add(ev.pubkey); + acc.result.push(ev); + return acc; + }, + { + seen: new Set([]) as Set, + result: [] as T[], + }, + ).result; +} + +export function dedupe(evs: T[]): T[] { + return evs.reduce( + (acc, ev) => { + if (acc.seen.has(ev)) { + return acc; + } + acc.seen.add(ev); + acc.result.push(ev); + return acc; + }, + { + seen: new Set([]) as Set, + result: [] as T[], + }, + ).result; +} + +export function parseJSON(raw: string, def: T) { + try { + return JSON.parse(raw); + } catch (e) { + return def; + } +} + +interface MyObject { + [key: string]: any; +} + +export function hashSha256(obj: MyObject): string { + const jsonString = JSON.stringify(obj); + + const hashBuffer = sha256(new TextEncoder().encode(jsonString)); + const hashArray = Array.from(new Uint8Array(hashBuffer)); + const hashHex = hashArray + .map((byte) => byte.toString(16).padStart(2, "0")) + .join(""); + + return hashHex; +} diff --git a/src/utils/nip05.ts b/src/utils/nip05.ts new file mode 100644 index 0000000..b647c85 --- /dev/null +++ b/src/utils/nip05.ts @@ -0,0 +1,71 @@ + +export const NIP05_REGEX = /^(?:([\w.+-]+)@)?([\w.-]+)$/; + +export async function getNip05For( + fullname: string, + _fetch: typeof fetch = fetch, + fetchOpts: RequestInit = {} +) { + const match = fullname.match(NIP05_REGEX); + if (!match) return null; + + const [_, name = "_", domain] = match; + + + const res = await _fetch( + `https://${domain}/.well-known/nostr.json?name=${name}`, + fetchOpts + ); + const { names, relays, nip46 } = parseNIP05Result(await res.json()); + + const pubkey = names[name]; + return pubkey + ? { + pubkey, + relays: relays?.[pubkey], + nip46: nip46?.[pubkey], + } + : null; +} + +export interface NIP05Result { + names: { + [name: string]: string; + }; + relays?: { [pubkey: string]: string[] }; + nip46?: { [pubkey: string]: string[] }; +} + +function parseNIP05Result(json: any): NIP05Result { + const result: NIP05Result = { + names: {}, + }; + + for (const [name, pubkey] of Object.entries(json.names)) { + if (typeof name === "string" && typeof pubkey === "string") { + result.names[name] = pubkey; + } + } + + if (json.relays) { + result.relays = {}; + for (const [pubkey, relays] of Object.entries(json.relays)) { + if (typeof pubkey === "string" && Array.isArray(relays)) { + result.relays[pubkey] = relays.filter( + (relay: unknown) => typeof relay === "string" + ); + } + } + } + + if (json.nip46) { + result.nip46 = {}; + for (const [pubkey, nip46] of Object.entries(json.nip46)) { + if (typeof pubkey === "string" && Array.isArray(nip46)) { + result.nip46[pubkey] = nip46.filter((relay: unknown) => typeof relay === "string"); + } + } + } + + return result; +} \ No newline at end of file diff --git a/src/utils/useProfile.ts b/src/utils/useProfile.ts index 9d8ed36..c87acbd 100644 --- a/src/utils/useProfile.ts +++ b/src/utils/useProfile.ts @@ -1,16 +1,22 @@ import { appName } from '../components/env'; -import { useNDK } from '@nostr-dev-kit/ndk-react'; import { useEffect, useState } from 'react'; import { Settings } from './useNav'; -import { NostrImage } from '@/components/nostrImageDownload'; +import { NostrImage } from '../components/nostrImageDownload'; +import useProfileNgine from '../ngine/hooks/useProfile'; +import { nip19 } from 'nostr-tools'; +import { NDKSubscriptionCacheUsage } from '@nostr-dev-kit/ndk'; + +// TODO maybe remove profile and only build title here?? useTitle? const useProfile = (settings: Settings, activeImage?: NostrImage) => { - const { getProfile } = useNDK(); const [title, setTitle] = useState(appName); const profileNpub = settings.npubs.length == 1 ? settings.npubs[0] : activeImage && activeImage?.author; - const activeProfile = profileNpub && getProfile(profileNpub); + const pubKeyHex = profileNpub ? (nip19.decode(profileNpub).data as string) : ''; + const activeProfile = useProfileNgine(pubKeyHex, NDKSubscriptionCacheUsage.ONLY_RELAY); + + // console.log({profileNpub, pubKeyHex, activeProfile}) useEffect(() => { if (settings.npubs.length > 0 && activeProfile && (activeProfile.displayName || activeProfile.name)) { diff --git a/src/utils/useZapAndReaction.ts b/src/utils/useZapAndReaction.ts index 09df5fa..1bb1fbf 100644 --- a/src/utils/useZapAndReaction.ts +++ b/src/utils/useZapAndReaction.ts @@ -1,6 +1,6 @@ +import { useNDK } from '../ngine/context'; import { NostrImage } from '../components/nostrImageDownload'; import { NDKEvent, NDKFilter } from '@nostr-dev-kit/ndk'; -import { useNDK } from '@nostr-dev-kit/ndk-react'; import { nip19 } from 'nostr-tools'; import { useEffect, useState } from 'react'; @@ -8,7 +8,7 @@ export type HeartState = 'none' | 'liked' | 'liking'; export type ZapState = 'none' | 'zapped' | 'zapping' | 'error'; const useZapsAndReations = (currentImageData?: NostrImage, userNPub?: string) => { - const { ndk } = useNDK(); + const ndk = useNDK(); const [zapState, setZapState] = useState('none'); const [heartState, setHeartState] = useState('none'); diff --git a/tsconfig.json b/tsconfig.json index 6d77916..ff78d85 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "target": "esnext", + "lib": ["dom", "dom.iterable", "ESNext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -20,4 +20,4 @@ }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] -} \ No newline at end of file +} diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 91e8e77..f6228a0 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/vite/node_modules/esbuild/lib/main.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@vitejs/plugin-react/dist/index.d.ts","./vite.config.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/types/importmeta.d.ts","./node_modules/vite/client.d.ts","./src/vite-env.d.ts","./node_modules/@webbtc/webln-types/types/index.d.ts","./src/webln-types.d.ts","./node_modules/nostr-tools/lib/keys.d.ts","./node_modules/nostr-tools/lib/event.d.ts","./node_modules/nostr-tools/lib/filter.d.ts","./node_modules/nostr-tools/lib/relay.d.ts","./node_modules/nostr-tools/lib/pool.d.ts","./node_modules/nostr-tools/lib/nip19.d.ts","./node_modules/nostr-tools/lib/references.d.ts","./node_modules/nostr-tools/lib/nip04.d.ts","./node_modules/nostr-tools/lib/nip05.d.ts","./node_modules/nostr-tools/lib/nip06.d.ts","./node_modules/nostr-tools/lib/nip10.d.ts","./node_modules/nostr-tools/lib/nip13.d.ts","./node_modules/nostr-tools/lib/nip18.d.ts","./node_modules/nostr-tools/lib/nip21.d.ts","./node_modules/nostr-tools/lib/nip25.d.ts","./node_modules/nostr-tools/lib/nip26.d.ts","./node_modules/nostr-tools/lib/nip27.d.ts","./node_modules/nostr-tools/lib/nip28.d.ts","./node_modules/nostr-tools/lib/nip39.d.ts","./node_modules/nostr-tools/lib/nip42.d.ts","./node_modules/nostr-tools/lib/nip44.d.ts","./node_modules/nostr-tools/lib/nip57.d.ts","./node_modules/nostr-tools/lib/nip98.d.ts","./node_modules/nostr-tools/lib/fakejson.d.ts","./node_modules/nostr-tools/lib/utils.d.ts","./node_modules/nostr-tools/lib/index.d.ts","./src/components/env.ts","./node_modules/eventemitter3/index.d.ts","./node_modules/typescript-lru-cache/dist/lrucache.d.ts","./node_modules/typescript-lru-cache/dist/index.d.ts","./node_modules/@nostr-dev-kit/ndk/dist/index.d.ts","./src/components/nostrimagedownload.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./src/utils/useautologin.ts","./src/utils/usedebouncedeffect.ts","./src/utils/usedisclaimerstate.ts","./src/utils/useimageloaded.ts","./node_modules/@remix-run/router/dist/history.d.ts","./node_modules/@remix-run/router/dist/utils.d.ts","./node_modules/@remix-run/router/dist/router.d.ts","./node_modules/@remix-run/router/dist/index.d.ts","./node_modules/react-router/dist/lib/context.d.ts","./node_modules/react-router/dist/lib/components.d.ts","./node_modules/react-router/dist/lib/hooks.d.ts","./node_modules/react-router/dist/index.d.ts","./node_modules/react-router-dom/dist/dom.d.ts","./node_modules/react-router-dom/dist/index.d.ts","./src/utils/usenav.ts","./src/utils/useusertags.ts","./src/utils/usewindowsize.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/@nostr-dev-kit/ndk-react/dist/context/index.d.ts","./node_modules/@nostr-dev-kit/ndk-react/dist/utils/notes.d.ts","./node_modules/@nostr-dev-kit/ndk-react/dist/utils/index.d.ts","./node_modules/@nostr-dev-kit/ndk-react/dist/index.d.ts","./src/components/closebutton/closebutton.tsx","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/lodash/uniq.d.ts","./src/components/tageditor.tsx","./src/utils/globalstate.tsx","./src/components/settings.tsx","./src/components/authorprofile.tsx","./src/components/slideview/slideimage.tsx","./src/components/slideview/slidevideo.tsx","./src/components/slideview/slide.tsx","./node_modules/react-swipeable/es/types.d.ts","./node_modules/react-swipeable/es/index.d.ts","./node_modules/@types/react-helmet/index.d.ts","./src/components/icons/iconpause.tsx","./src/components/icons/iconspinner.tsx","./src/components/slideview/index.tsx","./src/components/gridview/detailsauthor.tsx","./src/components/icons/iconheart.tsx","./src/components/icons/iconbolt.tsx","./src/components/icons/iconlink.tsx","./src/components/icons/icondots.tsx","./src/components/gridview/detailsview.tsx","./node_modules/react-lazy-load/dist/lazyload.d.ts","./node_modules/react-lazy-load/dist/index.d.ts","./src/components/gridview/gridimage.tsx","./src/components/gridview/index.tsx","./src/components/icons/iconfullscreen.tsx","./node_modules/@types/lodash/uniqby.d.ts","./src/components/adultcontentinfo.tsx","./src/components/icons/iconsettings.tsx","./src/components/icons/iconplay.tsx","./src/components/icons/icongrid.tsx","./src/components/icons/iconuser.tsx","./src/components/slideshow.tsx","./src/components/disclaimer.tsx","./src/app.tsx","./src/comp1.tsx","./node_modules/@types/react-dom/client.d.ts","./src/maininner.tsx","./src/main.tsx","./node_modules/@types/eslint/helpers.d.ts","./node_modules/@types/eslint/lib/rules/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/eslint/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/minimist/index.d.ts","./node_modules/@types/normalize-package-data/index.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/scheduler/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"bc496ef4377553e461efcf7cc5a5a57cf59f9962aea06b5e722d54a36bf66ea1","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"65be38e881453e16f128a12a8d36f8b012aa279381bf3d4dc4332a4905ceec83","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"e1913f656c156a9e4245aa111fbb436d357d9e1fe0379b9a802da7fe3f03d736","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"6145533764e3c4c562481e3c37919312da18245a1d53b6d03be656967e924862","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","bcb6ea18f23dae2c48459d7b86d3adccd6898f824fcbf9da08b935f559896580","1363ba7d52f2353d0c4306d0ecdaf171bf4509c0148842f9fd8d3986c098a2eb","3a24f4a428f24cad90b83fab329a620c4adbace083a8eda62c63365065b79e73","739c2c46edc112421fc023c24b4898b1f413f792bb6a02b40ba182c648e56c2f","858d0d831826c6eb563df02f7db71c90e26deadd0938652096bea3cc14899700","8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","18c04c22baee54d13b505fa6e8bcd4223f8ba32beee80ec70e6cac972d1cc9a6","5e92a2e8ba5cbcdfd9e51428f94f7bd0ab6e45c9805b1c9552b64abaffad3ce3","53ca39fe70232633759dd3006fc5f467ecda540252c0c819ab53e9f6ad97b226","e7174a839d4732630d904a8b488f22380e5bcf1d6405d1f59614e10795eca17d","7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","b9261ac3e9944d3d72c5ee4cf888ad35d9743a5563405c6963c4e43ee3708ca4","c84fd54e8400def0d1ef1569cafd02e9f39a622df9fa69b57ccc82128856b916","c7a38c1ef8d6ae4bf252be67bd9a8b012b2cdea65bd6225a3d1a726c4f0d52b6","e773630f8772a06e82d97046fc92da59ada8414c61689894fff0155dd08f102c","74f2815d9e1b8530120dcad409ed5f706df8513c4d93e99fc6213997aa4dd60e","9d1f36ccd354f2e286b909bf01d626a3a28dd6590770303a18afa7796fe50db9","c4bc6a572f9d763ac7fa0d839be3de80273a67660e2002e3225e00ef716b4f37","106e607866d6c3e9a497a696ac949c3e2ec46b6e7dda35aabe76100bf740833b","8a6c755dc994d16c4e072bba010830fa2500d98ff322c442c7c91488d160a10d","d4514d11e7d11c53da7d43b948654d6e608a3d93d666a36f8d01e18ece04c9bd","3d65182eff7bbb16de1a69e17651c51083f740af11a1a92359be6dab939e8bcf","bb53fe9074a25dfa9410e2ee1c4db8c71d02275f916d2019de7fd9cadd50c30b","5af924defa85825aa63f023b562727d5bc7f91e71363e3f7ae24392bede17066","f713064ca751dc588bc13832137c418cb70cf0446de92ade60ad631071558fca","dfefd34e8ab60f41d0c130527d5092d6ce662dc9fa85bc8c97682baf65830b51","96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","b0f4dd1a825912da8f12fd3388d839ef4aa51165ea0e60e4869b50b7ccb4f6fc","9cb7c5f710dc84d2e9500831a3e9a27afd3c3710f5a1b8744a50473e565b41fc","cf6b2edde490f303918809bfab1da8b6d059b50c160bec72005ff4c248bdd079","5703b31fda745d9fa29e5152918914a0fe4e75b14d1f6ae54ec965d63a86cfe0","2d8b8a9c0291a6635f5efef200ae0fae8bfd0f5d57b3e456125e71aea661be6a","4d5fb5d6b35f731b2ae4d9d7c592d48e91d6de531dd130628edf4eba16add893",{"version":"1e8e40859f6eab3234f9b357544eb8fba9176fbf135f62699721f9c9a86b4d80","affectsGlobalScope":true},{"version":"fbb727beaeaa67c6db66c2f06794cbe4fcafb97060e06c6a36c0dc6bdf8c478b","affectsGlobalScope":true},"65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5",{"version":"6c6bf56ce33ac50f5b4c45c46ddf05f0ef25032c7f3a6b3faa45b8c2c98c0ab7","affectsGlobalScope":true},"9ec23036157ae8e2fe25cd4fe1b6d6c553f51bdbf1a6b9d94f311c9b59f76113","a95ae8881851ae3e38125606ea1710dc0c684232db18fbfab632d274b58ef04a","29491500e2ca711dffe40ea9da826f46477351f9fae2a13d6a38a892e2aca633","783a10d49de78c7dfed9249dbab8a4ee2369814106d8e1edb520e64f6de9e1f8","8c6838dff4470de82b01c4d12aabd430be5c7d7905749a13b236ad2d0e652659","afc27742fea6e7e39ddc12d269ebfb38fc8b1ba66d5a404d9906cb23fbcac00b","c42fff53980c574d46adbf5bbe66b0311716fc60e017c322ebefd8ea8c5cf539","7cd0fe9fb71cf47b397f3e975cffb883a4d2af8df8afc6edda7459d27badc5a7","1d7576fda27eba5279dd28cffe2be414335fd2dffb894efd77b61fd30fe89cbd","d33625efbff4750ba1b07ed200ac07668061f78bdc4000a7ded410c65de13e71","e2cf12b2fa49e0fe1a8f251b5ff8b3bba8d98d26c0c591e3a0e39cf3120ead1e","98eaee56e0d8e2f2e35db1e86884412d932b8769baa9e56df1e0eae734e51b41","31b441f5221a488bf0cb5084d19ef47be51a3f20563d0119ae9ab1232ede72ae","ccb404c3e7ab71344c5fc9f74ee0b8068bf35420ebba2d001cc2d88ed1d7a77a","c8d3eeade078784593098758a9e475841479d6e1af37e55bf921a4b0b03f7b1b","da82db288f86fab2f24bd8f50a36ab63ce13745fbee9d5ec9fb3808ff0773799","4c313468990d16e22df62d09d497f1057b12aa0f3d43eccbc02725acd6c56299","78c1b66b92076f4068033a163f79d33908225e98e751202f6319ea8360462b27","47aa985cd0c04f7f5d35853f1bd75a7272f29c06113ec46060168fc5f8ecb01a","f508df907affd5310fdd509124e3092be35a039a04c8f06aa367d13782f23416","7cb9fd71a08a252699df85a614cdc981f9b22475ded5b42b48f0506c935572bd","c2a3c3c1dde859236d5ee4a1e278c65a76977e6e423e444bbeaddb56e26d201d","0d86c354dac870a7684531682002fe940a7efce4716ea9958004267cad75fc6f","4e0ae3303c21523f30b2d68035f88c76ea86a23b0677bc89de23441a2edc443e","7f56a105c7db5ba6b525c278a4c2e2a4e9bd67fa954e9bc523705f266a39eb53","29376f125fd4bcbfddfd96ea8433bed8e9b91d7e9dbd7561bd9be7eea3cd0552","e18bb440571465966f9858e2b508e5a4530caca2f5ea162ef69d815250bdeaec","7558e03843bb55ff9cecd762f220dc207427efbcd47ee6044fecd619550ecf9e","27679e96d1bd38c5938178aaf4abe8627493090b63d6bae2ce8436e6a87ebe4d","c7049a2bcd0c7a04f66bf3936cf02330281228d4b5303e136fc1c14b0fddc6a6","87880a6244c28fcceaad1d03cb09ff35fe218a7ed55aa553e2b1660ea1305e1c",{"version":"8163f160e404bd10b7ee8c5118fde4007ae81028941ad397b3788ab10f1d9b8f","affectsGlobalScope":true},{"version":"8c0b95ea60bad6c8f6ab20804ad878966fb097aaa0376e6fb8feb5dba7c5e36e","signature":"1eb3149630f34070099ed71fb27420726860c299d52015d3fde24fd9435893ba"},{"version":"549df62b64a71004aee17685b445a8289013daf96246ce4d9b087d13d7a27a61","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","eed8faaaf7fca8e854fbd710882e2a037b17009dad1a5e4d26186d236b8e91dd","5f8f00356f6a82e21493b2d57b2178f11b00cf8960df00bd37bdcae24c9333ca",{"version":"a6e6089d668ad148f1dc5435a06e6a4c0b06b0796eabad6e3a07328f57a94955","affectsGlobalScope":true},{"version":"7cfc7ecef9818c064fe1c567cbf8ad2551aa7c364fc0bac32bcc6a6f867325bd","affectsGlobalScope":true},"117774e243ac3d6744fdfa5875bdc061c297a3474a5ad63dfdcfb31ee3baec48",{"version":"f26f3da2e1b02184099bf548fea59a956850f261191939b03ec415b94446c723","affectsGlobalScope":true},"6dd3433d0594b2f5aaf14fa65e2d5aab882ddd4b2d7d5e94217624cfbdadbb39","5af7c35a9c5c4760fd084fedb6ba4c7059ac9598b410093e5312ac10616bf17b","39cb7b8c69bd2c8df0893dfc0b96ece6ff75836ea96c73699ea6d25904eec7d2","dd5e19d0e91b7f0b5a1e74f6a01e1a8d7b189f792bb3897636a3ae11b2fce1d2","cdfb21eaed3a55b6afef51ca5875efa6fb4b6b17a0bd087cb7aef6694594314a","36711334abb385e63ed522d617de7e128467d6a1c182d404f1b334c5797908ef","3b9081aa210098c8c2d7f19b8066163529e45d3b1b259de9074db93038281ddd","49cee9a84480e5b5ab9a65e36827f11fb5d363a479a40a6b3b2fbe7b109f72f0","8e055e6118fa55307fb61a65dde0706fd4fa50023ee55622554f75e1615035e7","6e6d56509e2fa1cfc3b1787fe651118dff18eaccfbd38baf0007550bb4ad3c20",{"version":"7353d4498977f32206a66eead670c4e40ef023d31a792f6af850375a14f9a03a","affectsGlobalScope":true},"28993fc31edfb1f44ff2fd2cd5faba4de349efa5ac53da67eabfc701f0f553b6",{"version":"55dab123a7e8286a3d45cf2b797a65171bd8d8e4b7d20108f987166d1a5d839b","affectsGlobalScope":true},"8124ca01f5571ca546fe82fb6b0aa9690a5d1e127cccee1ce85ad91df69851e3","de618fec44f70765cc7bbc30c9049b1c31f3cfb3824e7a7731121ca1785998e4","dec67e2896ab0ce14cc6819cbf78334c2bdb339727435ee7394037c521f0fa98","569b5aa11aa774af54fd85aa7bbaebe678eb02b0a12be8a12f19b13aed593d75","66ed052cd8132a961f00a93e02129258cacbc0f69e37a223e1f644ad5ff6ebe0","809e21ca873ee78c8b6cb7e41e7e8032540f20296884d06537b7d7de03397396","cc8fd19ed65ad9715dc3de5cca91dbf92825379e19ade79e8a38b102f20fca4e","32ab25b7b28b24a138d879ca371b18c8fdfdd564ad5107e1333c5aa5d5fea494","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","30abc554c7ad13063a02ddd06757929b34357aea1f6fcf4ca39114cb0fc19384","2c705ed6e0913da9d7f85665a5f402043def9de30a1595a5cd78cba2ad0f1113","91a4f636acce12b38a51cdad6e96a3e7123cd83863c3cf6aff9f2fc8020ef6f2","8ad112ed6a5ac3ea776c909c79738bfddf7a99ae66451cecf4feb59d3d4ed2fb","2482f2a0017364a66a466a076cb6021c0a0df8a16b0bb84b10e493b65c7b75d8","92ecbc077b72963edff172b2bb749fa386678c1a3d8922a7d7afcfb1389bc069","f25f420cdc1ac55a822ebbb2839e9a91d0578ec3cc2c3a4ad864eb087a2f2935","5cf4c2f57f8fc25b0b7526bc8a00d230e7444a19961039b3369efe0bf78d6760","fe821a61821c46e420a31540e73c900ac070e4e3149396183f75de5c685061ab","2aa28a84781cf1645c3ccfa78a35994c894afe38d08b9784bf6eb5670b028f13","427bcbdb5452271dd7968a9d6ca6b1d574212e64b6c2b1ecb68c9c22457f315f","f5686791fc970f7b1d9f834b69a88ffd7f6b4d438bb5f762d6749e9d8db1c8d9","c4622e0690a93b9fffb97701258ee4f8925c3f28e4a96f8a889719d9feb4b9b4","9186b188e0ae5718f9d86e9c256ff1fe85554abde2b88cc2cb1773e3a32692c2","19c41067dacd201c401fb0fd205463ff284670c650fa32c97f83922e2a73687c","5df129117aa3ffd75d2fb729f5b2fb0dfa5dae17eb03c0c28009be7aacb14386","48d702f37b9f8039b7bebf32453fb60a0d6c4167d200d8d3e77ebda5241729f9","e183b74646a3b8473e5371b4ea2e778268a9f75df2c687f9a85b0cf673f9084c","c25b651b2097321e9603fda5a8d0511a499fe45173fe63fc22aa3c853782c6c8","79248a23d4138eb259b2e507bfd7182c0734fc4b12b8af497b5ed488145ce488",{"version":"9f4a5ed5123eec99663e92c6779ee4bbadc0dad2ba063696033ec271d92fb361","signature":"60c3b03a7eb7bec1ad4795b17dacbb1f6604d2d3cd3fb43bb545cdd1f7eb5cf9"},"95e91f26a524f24c721be6948c7a7c5b6e4be09909a53938c8aeae50481fd5d4","747793245b86d8ff05a0c5df6fab6b5174fb16714c608860c1bfb80fe30f9e2b","19dc871fe789b3719e3fb4128dac4e686faefc08a203e7cff7f8ee5048c53ca8","12ee312100409bced03f854891229278d143c51eafad3737d7b6256f120ea196","e763cc8714d24905806a66e0f78cca0728d959dd2ac1f3bc96ac857ecdc0164a","991aace368326d6418dfe58b9176461fb73c8a4ae996f148339f91b0f08b341c","e260bc4f10519ad6f991d803ec07731d3424b703624398bafb7dcf20127b7800","3d3f69611092ea9d1e0e3a747d0234d35be251ff61252cda662392297ccce170","ab345984b7bc7e1b1fe0cd3e76b3bc06c854ca6d7155e05dcc03feaef35fc772","804cf303c44c902862c40dd26663583cebb73d432f0c8c609471a3653c2e6a97","225a764cccb7a34b96c71d63e68994d7b97a3b7b1cfa79d50df1e3686880d25c","82de3cdb40d0e4c96b5f898fedc2cb9f0f38ba9df6e6838c071fd7a56cf4d0cf","824f66397853f1813260cf4f229c9c0dc1a26c758c49cdc9e9d2d8e6092c4f78","9447b0b71acce3c6e9903be16780094cbef415f6c8ec9f3de6aca4fe7bd5ced5","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","f0255fc627076156b2d8daf73e118fb8ba22290e78d1217933ae228d92a9784d","bf75531ec0780284ef01bb1c90dbcacc92c81d543a45172952e1cedb29cdfa8f","c944ff6c7d4b3e7ef364e288f8f628ab699ce2c8ce53c0a945e9b159463b093d",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","874d84ca5699231d5af2868fef01fc63f948bd83be928881479db48508f92ca0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a95b76aef31395752eb5cb7b386be2e287fdc32dfdf7bdbbb666e333133b1ef7","4964ba28dd6c9d086735062e8f4c63f23dd14e20b9b6d2acdc5774760d47b132","cc0700b1b97e18a3d5d9184470502d8762ec85158819d662730c3a8c5d702584","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","f77ff4cd234d3fd18ddd5aeadb6f94374511931976d41f4b9f594cb71f7ce6f3","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","4f18b4e6081e5e980ef53ddf57b9c959d36cffe1eb153865f512a01aeffb5e1e","7f17d4846a88eca5fe71c4474ef687ee89c4acf9b5372ab9b2ee68644b7e0fe0","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","58e0cee50add50d4b6d47a935e26aeb0080d98c9cf729f8af389511cdfa10526"],"root":[99,103,105,132,137,[143,146],[157,159],165,[180,186],[190,198],[201,203],[205,213],215,216],"options":{"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":1},"fileIdsList":[[92],[136,142,160],[161,163],[162],[131,133,135],[147,148,149],[147,148],[147],[92,93,94,95,96],[92,94],[217,218,219,220],[221],[166,168,169,170,171,172,173,174,175,176,177,178],[166,167,169,170,171,172,173,174,175,176,177,178],[167,168,169,170,171,172,173,174,175,176,177,178],[166,167,168,170,171,172,173,174,175,176,177,178],[166,167,168,169,171,172,173,174,175,176,177,178],[166,167,168,169,170,172,173,174,175,176,177,178],[166,167,168,169,170,171,173,174,175,176,177,178],[166,167,168,169,170,171,172,174,175,176,177,178],[166,167,168,169,170,171,172,173,175,176,177,178],[166,167,168,169,170,171,172,173,174,176,177,178],[166,167,168,169,170,171,172,173,174,175,177,178],[166,167,168,169,170,171,172,173,174,175,176,178],[166,167,168,169,170,171,172,173,174,175,176,177],[178],[142],[138,139,140,141],[227,266],[227,251,266],[266],[227],[227,252,266],[227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265],[252,266],[91,97,98],[107],[106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130],[111],[107,111],[119],[107,109],[107,108,109],[107,108],[87],[85,87],[76,84,85,86,88],[74],[77,82,87,90],[73,90],[77,78,81,82,83,90],[77,78,79,81,82,90],[74,75,76,77,78,82,83,84,86,87,88,90],[72,74,75,76,77,78,79,81,82,83,84,85,86,87,88,89],[72,90],[77,79,80,82,83,90],[81,90],[82,83,87,90],[75,85],[199],[150],[142,150,154,155],[150,151,152,153],[142,150,151],[142,150],[187],[72],[134],[101],[66,67,68,69,70,71,90],[68],[69],[71,100],[70],[102,132,142,145,157,210,211],[102,142,157],[102,137,146,157],[102],[131],[102,136,137,157],[102,131,136,137,142,157,159,164,165,179,181,193,194,195,196,197],[137,142,200],[102,137,142,157,164,183,188,198,200,201],[131,132,136],[102,132,137,142,157,164,165,180,181],[102,131,132,136,137,142,143,157,164,181,182,192,202,203,204,205,206,207,208,209],[132,137,142,144,157,164,183,186,188,189,190,191],[142,184,185],[146],[102,132,142,157,158,179],[142,181,214,215],[102,132,156,164,212],[136,142],[142,156],[104],[91,98],[102,137,142],[136]],"referencedMap":[[94,1],[161,2],[164,3],[163,4],[136,5],[150,6],[149,7],[148,8],[97,9],[93,1],[95,10],[96,1],[221,11],[218,12],[167,13],[168,14],[166,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[176,23],[177,24],[178,25],[179,26],[204,26],[214,27],[225,27],[189,27],[142,28],[160,27],[251,29],[252,30],[227,31],[230,31],[249,29],[250,29],[240,29],[239,32],[237,29],[232,29],[245,29],[243,29],[247,29],[231,29],[244,29],[248,29],[233,29],[234,29],[246,29],[228,29],[235,29],[236,29],[238,29],[242,29],[253,33],[241,29],[229,29],[266,34],[260,33],[262,35],[261,33],[254,33],[255,33],[257,33],[259,33],[263,35],[264,35],[256,35],[258,35],[98,36],[108,37],[131,38],[114,39],[116,40],[118,40],[119,39],[120,40],[121,37],[122,41],[123,37],[125,42],[127,37],[128,37],[110,43],[112,40],[109,44],[130,37],[88,45],[86,46],[87,47],[75,48],[76,46],[83,49],[74,50],[79,51],[80,52],[85,53],[90,54],[73,55],[81,56],[82,57],[77,58],[84,45],[78,59],[200,60],[199,27],[155,61],[156,62],[154,63],[152,64],[151,65],[153,64],[188,66],[187,27],[72,67],[135,68],[102,69],[91,70],[69,71],[100,72],[101,73],[67,74],[212,75],[205,76],[183,77],[165,78],[211,78],[132,79],[193,80],[198,81],[201,82],[202,83],[137,84],[182,85],[210,86],[192,87],[186,88],[184,89],[180,90],[216,91],[215,92],[181,93],[143,27],[144,27],[145,27],[146,27],[157,94],[158,27],[159,27],[103,78],[105,95],[99,96]],"exportedModulesMap":[[94,1],[161,2],[164,3],[163,4],[136,5],[150,6],[149,7],[148,8],[97,9],[93,1],[95,10],[96,1],[221,11],[218,12],[167,13],[168,14],[166,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[176,23],[177,24],[178,25],[179,26],[204,26],[214,27],[225,27],[189,27],[142,28],[160,27],[251,29],[252,30],[227,31],[230,31],[249,29],[250,29],[240,29],[239,32],[237,29],[232,29],[245,29],[243,29],[247,29],[231,29],[244,29],[248,29],[233,29],[234,29],[246,29],[228,29],[235,29],[236,29],[238,29],[242,29],[253,33],[241,29],[229,29],[266,34],[260,33],[262,35],[261,33],[254,33],[255,33],[257,33],[259,33],[263,35],[264,35],[256,35],[258,35],[98,36],[108,37],[131,38],[114,39],[116,40],[118,40],[119,39],[120,40],[121,37],[122,41],[123,37],[125,42],[127,37],[128,37],[110,43],[112,40],[109,44],[130,37],[88,45],[86,46],[87,47],[75,48],[76,46],[83,49],[74,50],[79,51],[80,52],[85,53],[90,54],[73,55],[81,56],[82,57],[77,58],[84,45],[78,59],[200,60],[199,27],[155,61],[156,62],[154,63],[152,64],[151,65],[153,64],[188,66],[187,27],[72,67],[135,68],[102,69],[91,70],[69,71],[100,72],[101,73],[67,74],[212,75],[205,76],[183,77],[165,78],[211,78],[132,79],[193,80],[198,97],[201,82],[202,83],[137,98],[182,85],[210,86],[192,87],[186,88],[184,89],[180,90],[216,91],[215,92],[181,93],[143,27],[144,27],[145,27],[146,27],[157,94],[158,27],[159,27],[103,78],[105,95],[99,96]],"semanticDiagnosticsPerFile":[94,92,161,164,163,162,136,147,150,149,148,97,93,95,96,217,221,218,220,219,222,167,168,166,169,170,171,172,173,174,175,176,177,178,179,204,223,224,140,214,225,189,138,142,160,226,141,251,252,227,230,249,250,240,239,237,232,245,243,247,231,244,248,233,234,246,228,235,236,238,242,253,241,229,266,265,260,262,261,254,255,257,259,263,264,256,258,98,104,139,133,107,129,108,131,106,113,114,115,116,117,118,111,119,120,121,122,123,124,125,126,127,128,110,112,109,130,88,86,87,75,76,83,74,79,89,80,85,90,73,81,82,77,84,78,200,199,155,156,154,152,151,153,188,187,70,72,135,134,64,65,12,13,15,14,2,16,17,18,19,20,21,22,23,3,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,58,56,57,59,60,10,1,11,63,62,61,102,91,66,69,68,100,71,101,67,212,213,205,183,165,211,132,193,198,201,202,195,197,203,208,194,196,190,207,206,191,209,137,182,210,192,186,184,185,180,216,215,181,143,144,145,146,157,158,159,103,105,99],"affectedFilesPendingEmit":[212,213,205,183,165,211,132,193,198,201,202,195,197,203,208,194,196,190,207,206,191,209,137,182,210,192,186,184,185,180,216,215,181,143,144,145,146,157,158,159,99]},"version":"5.2.2"} \ No newline at end of file +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/types.d-jga8ss1a.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@vitejs/plugin-react/dist/index.d.ts","./vite.config.ts","./node_modules/vite/types/importmeta.d.ts","./node_modules/vite/client.d.ts","./src/vite-env.d.ts","./node_modules/@webbtc/webln-types/types/index.d.ts","./src/webln-types.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/nostr-tools/lib/types/core.d.ts","./node_modules/nostr-tools/lib/types/pure.d.ts","./node_modules/nostr-tools/lib/types/filter.d.ts","./node_modules/nostr-tools/lib/types/abstract-relay.d.ts","./node_modules/nostr-tools/lib/types/relay.d.ts","./node_modules/nostr-tools/lib/types/abstract-pool.d.ts","./node_modules/nostr-tools/lib/types/pool.d.ts","./node_modules/nostr-tools/lib/types/nip19.d.ts","./node_modules/nostr-tools/lib/types/references.d.ts","./node_modules/nostr-tools/lib/types/nip04.d.ts","./node_modules/nostr-tools/lib/types/nip05.d.ts","./node_modules/nostr-tools/lib/types/nip10.d.ts","./node_modules/nostr-tools/lib/types/nip11.d.ts","./node_modules/nostr-tools/lib/types/nip13.d.ts","./node_modules/nostr-tools/lib/types/nip18.d.ts","./node_modules/nostr-tools/lib/types/nip21.d.ts","./node_modules/nostr-tools/lib/types/nip25.d.ts","./node_modules/nostr-tools/lib/types/nip27.d.ts","./node_modules/nostr-tools/lib/types/nip28.d.ts","./node_modules/nostr-tools/lib/types/nip30.d.ts","./node_modules/nostr-tools/lib/types/nip39.d.ts","./node_modules/nostr-tools/lib/types/nip42.d.ts","./node_modules/nostr-tools/node_modules/@noble/hashes/utils.d.ts","./node_modules/nostr-tools/lib/types/nip44.d.ts","./node_modules/nostr-tools/lib/types/nip47.d.ts","./node_modules/nostr-tools/lib/types/nip57.d.ts","./node_modules/nostr-tools/lib/types/nip98.d.ts","./node_modules/nostr-tools/lib/types/kinds.d.ts","./node_modules/nostr-tools/lib/types/fakejson.d.ts","./node_modules/nostr-tools/lib/types/utils.d.ts","./node_modules/nostr-tools/lib/types/index.d.ts","./src/components/env.ts","./node_modules/tseep/lib/types.d.ts","./node_modules/tseep/lib/utils.d.ts","./node_modules/tseep/lib/task-collection/task-collection.d.ts","./node_modules/tseep/lib/task-collection/index.d.ts","./node_modules/tseep/lib/ee.d.ts","./node_modules/tseep/lib/index.d.ts","./node_modules/typescript-lru-cache/dist/lrucache.d.ts","./node_modules/typescript-lru-cache/dist/index.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/keys.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/event.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/filter.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/relay.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/pool.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip19.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/references.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip04.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip05.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip06.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip10.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip13.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip18.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip21.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip25.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip26.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip27.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip28.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip39.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip42.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip44.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip47.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip57.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/nip98.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/fakejson.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/utils.d.ts","./node_modules/@nostr-dev-kit/ndk/node_modules/nostr-tools/lib/types/index.d.ts","./node_modules/@nostr-dev-kit/ndk/dist/index.d.ts","./node_modules/@types/lodash/uniq.d.ts","./src/components/nostrimagedownload.ts","./src/ngine/filter.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./src/ngine/types.ts","./src/ngine/format.ts","./node_modules/@tanstack/query-core/build/legacy/removable.d.ts","./node_modules/@tanstack/query-core/build/legacy/subscribable.d.ts","./node_modules/@tanstack/query-core/build/legacy/queryclient-ho-z40sw.d.ts","./node_modules/@tanstack/query-core/build/legacy/queriesobserver.d.ts","./node_modules/@tanstack/query-core/build/legacy/infinitequeryobserver.d.ts","./node_modules/@tanstack/query-core/build/legacy/notifymanager.d.ts","./node_modules/@tanstack/query-core/build/legacy/focusmanager.d.ts","./node_modules/@tanstack/query-core/build/legacy/onlinemanager.d.ts","./node_modules/@tanstack/query-core/build/legacy/hydration.d.ts","./node_modules/@tanstack/query-core/build/legacy/index.d.ts","./node_modules/@tanstack/react-query/build/legacy/types.d.ts","./node_modules/@tanstack/react-query/build/legacy/usequeries.d.ts","./node_modules/@tanstack/react-query/build/legacy/queryoptions.d.ts","./node_modules/@tanstack/react-query/build/legacy/usequery.d.ts","./node_modules/@tanstack/react-query/build/legacy/usesuspensequery.d.ts","./node_modules/@tanstack/react-query/build/legacy/usesuspenseinfinitequery.d.ts","./node_modules/@tanstack/react-query/build/legacy/usesuspensequeries.d.ts","./node_modules/@tanstack/react-query/build/legacy/infinitequeryoptions.d.ts","./node_modules/@tanstack/react-query/build/legacy/queryclientprovider.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/@tanstack/react-query/build/legacy/queryerrorresetboundary.d.ts","./node_modules/@tanstack/react-query/build/legacy/hydrationboundary.d.ts","./node_modules/@tanstack/react-query/build/legacy/useisfetching.d.ts","./node_modules/@tanstack/react-query/build/legacy/usemutationstate.d.ts","./node_modules/@tanstack/react-query/build/legacy/usemutation.d.ts","./node_modules/@tanstack/react-query/build/legacy/useinfinitequery.d.ts","./node_modules/@tanstack/react-query/build/legacy/isrestoring.d.ts","./node_modules/@tanstack/react-query/build/legacy/index.d.ts","./src/ngine/lnurl.ts","./src/ngine/money.ts","./node_modules/jotai/vanilla/atom.d.ts","./node_modules/jotai/vanilla/store.d.ts","./node_modules/jotai/vanilla/typeutils.d.ts","./node_modules/jotai/vanilla.d.ts","./node_modules/jotai/react/provider.d.ts","./node_modules/jotai/react/useatomvalue.d.ts","./node_modules/jotai/react/usesetatom.d.ts","./node_modules/jotai/react/useatom.d.ts","./node_modules/jotai/react.d.ts","./node_modules/jotai/index.d.ts","./node_modules/jotai/vanilla/utils/constants.d.ts","./node_modules/jotai/vanilla/utils/atomwithreset.d.ts","./node_modules/jotai/vanilla/utils/atomwithreducer.d.ts","./node_modules/jotai/vanilla/utils/atomfamily.d.ts","./node_modules/jotai/vanilla/utils/selectatom.d.ts","./node_modules/jotai/vanilla/utils/freezeatom.d.ts","./node_modules/jotai/vanilla/utils/splitatom.d.ts","./node_modules/jotai/vanilla/utils/atomwithdefault.d.ts","./node_modules/jotai/vanilla/utils/atomwithstorage.d.ts","./node_modules/jotai/vanilla/utils/atomwithobservable.d.ts","./node_modules/jotai/vanilla/utils/loadable.d.ts","./node_modules/jotai/vanilla/utils/unwrap.d.ts","./node_modules/jotai/vanilla/utils.d.ts","./node_modules/jotai/react/utils/useresetatom.d.ts","./node_modules/jotai/react/utils/usereduceratom.d.ts","./node_modules/jotai/react/utils/useatomcallback.d.ts","./node_modules/jotai/react/utils/usehydrateatoms.d.ts","./node_modules/jotai/react/utils.d.ts","./node_modules/jotai/utils.d.ts","./src/ngine/state.ts","./src/ngine/tags.ts","./src/ngine/time.ts","./node_modules/@noble/hashes/utils.d.ts","./node_modules/@noble/hashes/_sha2.d.ts","./node_modules/@noble/hashes/sha256.d.ts","./src/ngine/utils.ts","./src/ngine/hooks/usecopy.ts","./node_modules/@types/lodash/uniqby.d.ts","./src/ngine/hooks/useevents.ts","./src/ngine/hooks/uselatestevent.tsx","./src/ngine/hooks/userates.ts","./src/utils/nip05.ts","./src/ngine/context.tsx","./src/ngine/hooks/useevent.ts","./src/ngine/hooks/useprofile.ts","./src/ngine/hooks/useprofiles.ts","./src/ngine/nostr/nip57.ts","./src/ngine/hooks/usereactions.ts","./src/utils/useautologin.ts","./src/utils/usedebouncedeffect.ts","./src/utils/usedisclaimerstate.ts","./src/utils/useimageloaded.ts","./node_modules/@remix-run/router/dist/history.d.ts","./node_modules/@remix-run/router/dist/utils.d.ts","./node_modules/@remix-run/router/dist/router.d.ts","./node_modules/@remix-run/router/dist/index.d.ts","./node_modules/react-router/dist/lib/context.d.ts","./node_modules/react-router/dist/lib/components.d.ts","./node_modules/react-router/dist/lib/hooks.d.ts","./node_modules/react-router/dist/index.d.ts","./node_modules/react-router-dom/dist/dom.d.ts","./node_modules/react-router-dom/dist/index.d.ts","./src/utils/usenav.ts","./src/utils/useprofile.ts","./src/utils/useusertags.ts","./src/utils/usewindowsize.ts","./src/utils/usezapandreaction.ts","./src/components/closebutton/closebutton.tsx","./src/components/tageditor.tsx","./src/utils/globalstate.tsx","./src/components/settings.tsx","./src/components/icons/iconlink.tsx","./src/components/authorprofile/authorprofile.tsx","./src/components/slideview/slideimage.tsx","./src/components/slideview/slidevideo.tsx","./src/components/slideview/slide.tsx","./node_modules/react-swipeable/es/types.d.ts","./node_modules/react-swipeable/es/index.d.ts","./node_modules/@types/react-helmet/index.d.ts","./src/components/icons/iconpause.tsx","./src/components/icons/iconspinner.tsx","./src/components/slideview/index.tsx","./src/components/adultcontentinfo.tsx","./src/components/icons/iconuser.tsx","./src/utils/useonscreen.tsx","./src/components/icons/iconmicmuted.tsx","./src/components/icons/iconmicon.tsx","./src/components/scrollview/scrollimage.tsx","./src/components/icons/iconchevronup.tsx","./src/components/icons/iconchevrondown.tsx","./src/components/infopanel/infopanel.tsx","./src/components/scrollview/scrollview.tsx","./src/components/icons/iconplay.tsx","./src/components/icons/icongrid.tsx","./src/components/icons/iconfullscreen.tsx","./src/components/icons/iconheart.tsx","./src/components/icons/iconbolt.tsx","./src/components/icons/iconsearch.tsx","./node_modules/react-lazy-load/dist/lazyload.d.ts","./node_modules/react-lazy-load/dist/index.d.ts","./src/components/gridview/gridimage.tsx","./src/components/gridview/index.tsx","./src/components/login/login.tsx","./src/components/slideshow.tsx","./src/components/disclaimer.tsx","./src/app.tsx","./node_modules/@types/react-dom/client.d.ts","./src/components/home/index.tsx","./node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/nostr-tools/lib/types/index.d.ts","./node_modules/@nostr-dev-kit/ndk-cache-dexie/node_modules/@nostr-dev-kit/ndk/dist/index.d.ts","./node_modules/dexie/dist/dexie.d.ts","./node_modules/@nostr-dev-kit/ndk-cache-dexie/dist/index.d.ts","./src/maininner.tsx","./src/main.tsx","./src/components/icons/icondots.tsx","./src/components/icons/iconsettings.tsx","./src/components/masonryview/masonryimage.tsx","./src/components/masonryview/masonryview.tsx","./src/ngine/hooks/useaddress.tsx","./src/ngine/hooks/useaddresses.tsx","./src/ngine/nostr/kinds.tsx","./node_modules/@types/cookie/index.d.ts","./node_modules/@types/cors/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/scheduler/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"4350e5922fecd4bedda2964d69c213a1436349d0b8d260dd902795f5b94dc74b","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"e2eb1ce13a9c0fa7ab62c63909d81973ef4b707292667c64f1e25e6e53fa7afa","affectsGlobalScope":true},"16d74fe4d8e183344d3beb15d48b123c5980ff32ff0cc8c3b96614ddcdf9b239","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"a1d2988ad9d2aef7b9915a22b5e52c165c83a878f2851c35621409046bbe3c05","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","8806ae97308ef26363bd7ec8071bca4d07fb575f905ee3d8a91aff226df6d618","af5bf1db6f1804fb0069039ae77a05d60133c77a2158d9635ea27b6bb2828a8f","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"7ae9dc7dbb58cd843065639707815df85c044babaa0947116f97bdb824d07204","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","313a0b063f5188037db113509de1b934a0e286f14e9479af24fada241435e707","f1ace2d2f98429e007d017c7a445efad2aaebf8233135abdb2c88b8c0fef91ab","87ef1a23caa071b07157c72077fa42b86d30568f9dc9e31eed24d5d14fc30ba8","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"0666f4c99b8688c7be5956df8fecf5d1779d3b22f8f2a88258ae7072c7b6026f","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7424817d5eb498771e6d1808d726ec38f75d2eaf3fa359edd5c0c540c52725c1","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","37dc027f781c75f0f546e329cfac7cf92a6b289f42458f47a9adc25e516b6839",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea",{"version":"ae900471ea16b852ce62c0cd17477ca332af7004045242d41b01a505c678950a","affectsGlobalScope":true},"33b93e364ac10a40943d436fc8e7b9f5386b3172a4309c3197b00250dac486dc","1363ba7d52f2353d0c4306d0ecdaf171bf4509c0148842f9fd8d3986c098a2eb","cbe726263ae9a7bf32352380f7e8ab66ee25b3457137e316929269c19e18a2be","a049298446462b5493e3dca4094dad35565049411afdbe937f7634bf1606e2f3","4ac282004b0038c107795523475e549e6b357a347831cc635eb08360d63c1468","858d0d831826c6eb563df02f7db71c90e26deadd0938652096bea3cc14899700","8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","18c04c22baee54d13b505fa6e8bcd4223f8ba32beee80ec70e6cac972d1cc9a6","5e92a2e8ba5cbcdfd9e51428f94f7bd0ab6e45c9805b1c9552b64abaffad3ce3","44fe135be91bc8edc495350f79cd7a2e5a8b7a7108b10b2599a321b9248657dc","1d51250438f2071d2803053d9aec7973ef22dfffd80685a9ec5fb3fa082f4347","7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","b9261ac3e9944d3d72c5ee4cf888ad35d9743a5563405c6963c4e43ee3708ca4","c84fd54e8400def0d1ef1569cafd02e9f39a622df9fa69b57ccc82128856b916","c7a38c1ef8d6ae4bf252be67bd9a8b012b2cdea65bd6225a3d1a726c4f0d52b6","e773630f8772a06e82d97046fc92da59ada8414c61689894fff0155dd08f102c","edf7cf322a3f3e6ebca77217a96ed4480f5a7d8d0084f8b82f1c281c92780f3a","e97321edbef59b6f68839bcdfd5ae1949fe80d554d2546e35484a8d044a04444","96aed8ec4d342ec6ac69f0dcdfb064fd17b10cb13825580451c2cebbd556e965","106e607866d6c3e9a497a696ac949c3e2ec46b6e7dda35aabe76100bf740833b","28ffc4e76ad54f4b34933d78ff3f95b763accf074e8630a6d926f3fd5bbd8908","304af95fcace2300674c969700b39bc0ee05be536880daa844c64dc8f90ef482","3d65182eff7bbb16de1a69e17651c51083f740af11a1a92359be6dab939e8bcf","670ddaf1f1b881abaa1cc28236430d86b691affbeaefd66b3ee1db31fdfb8dba","7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","0b442cfd87c3543d3f0139c685a1b980a4ff7ccb8d5125fad69197b2e230e93a","ddb0b9fcd2670bce028e60ca5768719c5d21508b00dc83acf6af25cbe1fcc5ec","2c8e55457aaf4902941dfdba4061935922e8ee6e120539c9801cd7b400fae050","8041cfce439ff29d339742389de04c136e3029d6b1817f07b2d7fcbfb7534990","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","9d38964b57191567a14b396422c87488cecd48f405c642daa734159875ee81d9","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","f5e8546cfe500116aba8a6cb7ee171774b14a6db30d4bcd6e0aa5073e919e739",{"version":"2d8b8a9c0291a6635f5efef200ae0fae8bfd0f5d57b3e456125e71aea661be6a","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"},{"version":"4025a454b1ca489b179ee8c684bdd70ff8c1967e382076ade53e7e4653e1daec","affectsGlobalScope":true},{"version":"c4baf2c38b00f29adfb4e60554de4152ebf4c17f3365c0f2ff34af7f3b35ef1d","affectsGlobalScope":true},"65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5",{"version":"8fab4c74c25a4a62a00ea213d9ebe3d598a91aff28f5d79e0aed10715c98237b","affectsGlobalScope":true},"9ec23036157ae8e2fe25cd4fe1b6d6c553f51bdbf1a6b9d94f311c9b59f76113","b8442e9db28157344d1bc5d8a5a256f1692de213f0c0ddeb84359834015a008c","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","68a0d0c508e1b6d8d23a519a8a0a3303dc5baa4849ca049f21e5bad41945e3fc","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","247bffcf579a0868bbc473be7ed92ac69a6f85d2865845a234617d4c473ad5e6","dc6767da0feb3a50b5aae66a5987671d4de64fd96eddd170ad09e66bc7e8ec9a","d108f671397b68c10f3a956afb1b5f9b2d49f42e6740f2ad6428efc686f633b1","cb262ec63f2e76b641fb43fcb2a1bfafa4703627b77dac5ac87973e3d8ccfa60","a553b2fd4b4c54d28de98da40368063afd49d607d6dbbf4e0ff36445edcbed5b","db645d5eb9cd9571ab2113efa7760b4701c81f5a607e2a8ddb58dc1794ba0e85","d9715d695fc2d8baa97bbda919852967f96b6e0d3ca53b843879f9fe207c947a","87f981e11d8444cc2b6a64d906059e768102e9be0dcc63ca2b9ecef2ecd1349c","4434679ae393dd96f3939fcd4270cfd7791f8ef629165d77db7f73005bd50258","1eb6f20cf83f6cdd27bfc0cc1c5b790647df8470c506e4b72942bdf497f13fe6","50b31d94fc2e7ec1fe87206598ec212000666caa7e1b4682ec9271a9f78eb6f3","fa0cfe30a4d6e280364994c146649da88037696faebf922b0611f95f8c5cd7d0","5e874247b76004eaf8a4bcc30301995b3842dcfc2eedbfd2f4e986314ad12f27","d973c5f11007d0e6713feded2f31836432d8e64010a971f7c9fdee284023df1d","84bf3638dedc41665a6db6f84628e42a6b4e9af18da595048a8271c79e4a5e49","c8d3eeade078784593098758a9e475841479d6e1af37e55bf921a4b0b03f7b1b","8a564588add5ffc7f2e2df1edb958f6731bee985969e34978667b5cc9234814b","78c1b66b92076f4068033a163f79d33908225e98e751202f6319ea8360462b27","f48a9b3608757000018740d1659e4b96c595033053fddead06916cab757b4c69","8d49db204eebd3b3575502934e0330640887e2639b8dfd3bfc190bf17127abbe","f508df907affd5310fdd509124e3092be35a039a04c8f06aa367d13782f23416","4d09dcb380fe028f4cc24595d23dd13516a87c13237119ca061e6594e932fe23","3c3ca314a2b01902ef19b499be6e052925a849f14e2d9185afb323df3d3a72b6","c9ff8970aea7f4f7dadd01db1e6891f94c34a85988963d2a6fc13d31b25515e5","e95d04cf9438516d383ee88d79cddb61f40ff8a2204f139d72393aaf470ecb53","b953332303f84b4b38bba283f896891ad940be8f925a2364c965311e8dfe1d2c","154cb314f4950d475c00f8c130b9396b77ea85cb6e514707e2aaeaf9cd676530","071a845de77dd6403311e32c73dd805331cf21cb35e47d2464a94dac0bf7d0c6","7f56a105c7db5ba6b525c278a4c2e2a4e9bd67fa954e9bc523705f266a39eb53","891ecd2a3d6506bd6a034ad6dac5d71fe2ed62ef4ad93da6975f9e6803f64ea5","3d2c1d6ec06967c69980f5846b5be6a3e5ea84545a5e09a90ae202cae7f6088c",{"version":"40553d4bc2e0f51a590e2e3fc5e1e70c95d925b2fd1de8201c21f8657e638c78","signature":"cde0ea98b53fcfd06cfacf26ea70759040078b6eb5f57744f3ac4585ffb64d62"},"f112b3d7b341981ddeb00bb136ff32844be0ae275dd5762b42e11a918f94d32c","d69640fa4e73ba6d42c009b615eda773830f6cba204345d06309ba8ca8b4dbe0","4aa1188ffde3897843928288e6e0eba3fd7d3d6cbf82d1db9da48914c5c58f00","533232ca3b8450f589aabccdc4ed74761b77bfd281f6350234ea92c68d909f29","c8b9be80333b9d30ba5b3ff5ee35d44650627d95fc1e472b5a3cfc7d5d136c4d","046e29d267d600545c9b8a1d9e6eef65a0fac72f38a33131c9443d2c6fed2a39","c7049a2bcd0c7a04f66bf3936cf02330281228d4b5303e136fc1c14b0fddc6a6","87880a6244c28fcceaad1d03cb09ff35fe218a7ed55aa553e2b1660ea1305e1c","a95ae8881851ae3e38125606ea1710dc0c684232db18fbfab632d274b58ef04a","723a4e9defae2be5eca2ff5dbad186c80559fd7f1b3723519e61dba4f58f7f24","783a10d49de78c7dfed9249dbab8a4ee2369814106d8e1edb520e64f6de9e1f8","8c6838dff4470de82b01c4d12aabd430be5c7d7905749a13b236ad2d0e652659","afc27742fea6e7e39ddc12d269ebfb38fc8b1ba66d5a404d9906cb23fbcac00b","d4ab87bf92bdb38ea1cb5c301761c905f760638ba5537eca48d806399481b097","7cd0fe9fb71cf47b397f3e975cffb883a4d2af8df8afc6edda7459d27badc5a7","1d7576fda27eba5279dd28cffe2be414335fd2dffb894efd77b61fd30fe89cbd","d33625efbff4750ba1b07ed200ac07668061f78bdc4000a7ded410c65de13e71","e2cf12b2fa49e0fe1a8f251b5ff8b3bba8d98d26c0c591e3a0e39cf3120ead1e","98eaee56e0d8e2f2e35db1e86884412d932b8769baa9e56df1e0eae734e51b41","283df7ce603d3ed6e7692480d5554664ec702fb1ceab0c0471575704d69ba4b8","ccb404c3e7ab71344c5fc9f74ee0b8068bf35420ebba2d001cc2d88ed1d7a77a","c8d3eeade078784593098758a9e475841479d6e1af37e55bf921a4b0b03f7b1b","da82db288f86fab2f24bd8f50a36ab63ce13745fbee9d5ec9fb3808ff0773799","4c313468990d16e22df62d09d497f1057b12aa0f3d43eccbc02725acd6c56299","78c1b66b92076f4068033a163f79d33908225e98e751202f6319ea8360462b27","47aa985cd0c04f7f5d35853f1bd75a7272f29c06113ec46060168fc5f8ecb01a","f508df907affd5310fdd509124e3092be35a039a04c8f06aa367d13782f23416","7cb9fd71a08a252699df85a614cdc981f9b22475ded5b42b48f0506c935572bd","e147edf42b3a95a390a4093b85bb89c9b985d42ef19a20c7086a481e0ec8a6a1","b456d13b43ba3333511ca83b57bdcab6bdf538ab1d8503bdd3500851f4300263","0d86c354dac870a7684531682002fe940a7efce4716ea9958004267cad75fc6f","4e0ae3303c21523f30b2d68035f88c76ea86a23b0677bc89de23441a2edc443e","7f56a105c7db5ba6b525c278a4c2e2a4e9bd67fa954e9bc523705f266a39eb53","29376f125fd4bcbfddfd96ea8433bed8e9b91d7e9dbd7561bd9be7eea3cd0552","49799a4fb18a9becd350842e36e0afeb1cf5eed58a89ea7b11ae5b57d2110942",{"version":"70aa59c07b6b922cf45b88392a97bbf98f1fcd89ab1ce88c8d094552a30797d7","affectsGlobalScope":true},"2c705ed6e0913da9d7f85665a5f402043def9de30a1595a5cd78cba2ad0f1113",{"version":"f01d5f95fa7a08e2f30905ca91898ce5ad5d9df354c70d580d9d274890fa08f8","signature":"1eb3149630f34070099ed71fb27420726860c299d52015d3fde24fd9435893ba"},{"version":"d93eeec7917ce85000d70b3efd75911e27dc47272964a33205aa8793b4c495e8","signature":"0f653a4b26b9725dc2988b9ba2bbb85a8eaefa2df87df5baa1091f66a023a5cf"},{"version":"55461596dc873b866911ef4e640fae4c39da7ac1fbc7ef5e649cb2f2fb42c349","affectsGlobalScope":true},"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","9ed09d4538e25fc79cefc5e7b5bfbae0464f06d2984f19da009f85d13656c211","b1bf87add0ccfb88472cd4c6013853d823a7efb791c10bb7a11679526be91eda",{"version":"b22150a452b3889ac3b9cfe1482a13f17567ac3475b473f00e45d26bd84bf47c","affectsGlobalScope":true},{"version":"e003407c4efcc6fc35a6c5c2c282a605dd747d61f7b7e6ed1c148e8ca74e1472","signature":"671252bcfa501e898d0d178ac3a4ca34d247ba508027d044e2d9e400712f921f"},{"version":"b756369e9bb3c3c8f90d14524ea36985901e8135cf4910efa0bbfac531f9f534","signature":"382c433a41724da15a04f536f8885b167a073c00ebf0e21352c42d6de5c20bc5"},"9971931daaf18158fc38266e838d56eb5d9d1f13360b1181bb4735a05f534c03","408ae1a99c21dd9f62fa113df3909ca9f84114110449adf967cd9ae9b809f7c6","dc112cd07d3ccfe5f6319ae82ebe75c27adcd972df9d49d486462b6242385f7a","f89ffe9c1f745b5c65126a6d8c558e4c7298b8d59b55daace5e439001c46655f","949b76c92841565d361f98171bcbc638dc153060a5c37935a621a794e2c8edf2","ba3910bc59a961a41e472b03a41619b52af09da77aa3ce374aaa3fa52e8878e6","fa5e8b1d74cad3bfd55476b25cb6d48acf466c32193277443bdd3dedff4d94bf","853b8bdb5da8c8e5d31e4d715a8057d8e96059d6774b13545c3616ed216b890c","870e6766d30448eac5dd4e6fae45d117f3ccfe771cf768f73af6b1ff7c301bc4","6106057ad2d78c9d1b3767e0b4a18b121168260c77211640abbec5aa324f5947","7ccbc656a4ab3c284ce4f594ad18fd35407883d82a82ffc7bcb0a2ab3c571a6d","0ea9c6aa6745232eae8eb0b8c8364e8eb22678a3655e79847021913cecc8abbf","4d23a91996d19986a5ad1350629026405aefe9af2d3893273f3faee9a99367cf","a29b97d7ba3d133826be2bbf36f72fbc78bc2fc03ba9f3c7d92314088d6367d0","4b3049a2c849f0217ff4def308637931661461c329e4cf36aeb31db34c4c0c64","174b64363af0d3d9788584094f0f5a4fac30c869b536bb6bad9e7c3c9dce4c1d","ac22510bc0c10f9526dd60e4c32a66668003dc222ae85bc69c8a2c0d678f6a69","f2262b21500c189c692adba77be32c9955fad569d72264ff9ccb7b2ac7a821a4","c2bb322d35d4edfdeb478906ad7f9cadc6e26f23ba746d518cae976f5f6c6ff5","2879a055439b6c0c0132a1467120a0f85b56b5d735c973ad235acd958b1b5345","6f728f0b2b0d9a9bf29c2a403431fcc39b0f6c8073b5b387dafc92d41cacbd5d","41ef0dfb6f473caf1d3bf85f49c4e4aa75cda9b1458b3f95ad8b36d648ffd88c","facde2bec0f59cf92f4635ece51b2c3fa2d0a3bbb67458d24af61e7e6b8f003c","1d4b3189bd500012b62bf7401c2e14cc5abb9b041b0c938240560cc94a78abe7","f919471289119d2e8f71aba81869b01f30f790e8322cf5aa7e7dee8c8dadd00a","96b49ae0ef88b7ae8953174e457770b3b83052d7f367c698a62fae10c8253a97","e9bc0db0144701fab1e98c4d595a293c7c840d209b389144142f0adbc36b5ec2","0d6a8503fbebd4eb886ba7963afa475bbf5b5d1efcfd389a896ea576d5804fb4",{"version":"feb8e82ecea14a13a616e335c8e4565a59275cdd67a491d3b325e8565d4625a0","signature":"ac0abf6c7250b061f3c5e2b95c6ee41dd6199e9ba64471aa4afc247af7df3851"},{"version":"da7489197f0380785c78c9f060a23f114b0c285ed85ded1a418a5135ba0d6434","signature":"0ba244ed92f0b3bfaa9afc322f8c6401c992137cd71c6b52321ea879e9033bd1"},"ca40981086e3664de6bed859fa3c7a38eae71885a039dff3655b1b60dc4382cd","c46b8328d3731b8d8f4cbdf309e66fa6d98a778ac2441ca870137adf7a3add41","8eaadbb1366859a31de47eb2993cea1d81eebf6f2fd8d681dc93c20016136682","06fb7e6b64ed070137eec66a079af0aabb592a8c9a895908f3e8b251b8cb9eec","7ff7915035506446afed265c79f8ef55cd91ae58867f68de1c845676a5fc639b","53e4ed9f4ec9e33caa6ca18463624136fdbc586b41b1539e7ce1b562ce2d7197","72555a371b758f3a8493ae327f52facf9c2e26f0669c1bce4237df3c73dd8f5e","f1f19df62a287cad51a13ad553b2c7ba163ac4b3692cb3131b8e454562c7bbeb","1199ed70775f218d4e309a98a7f6427b325d7a727b919a2b58487582e26c0922","867ecd736f6f31716faadf9a3574a6694f987128388edfa4e687eb5e89a67065","245a6d49a8c543c8224fc8e936e5cdfe9f8031397a0baca21df7875d3e1c0793","506b6e93ad7c11507d0e5d3097aced928f6a548d041b6198c6658d128e2fe939","a65e2b08014c58503f4736c4d2acf8bd0fa9bf8bb26594661e5589878fa12777","47c22a5bcbbbd607d9088385db8597ab07bdf199f43faeceb754859b148fe0c4","2807fc40508fbdd1d782ee558b121cef70a083dbec50216f1d2dc80079c1b738","2e4b7e4c4efc8aafdc1580a8b4ea5c27aa1c249826c2ced514515a77d60e1511","b659e5187910757fde10ae751a7daf1d5223b5ede3e7da4fd8a6802377a8c066","9f66c49ff8babaf8288c0c67e22348ae5d443dd1258d022a73325cc8a87c0fd0","4eaca4b0430fa91fc8e0b63a87d76b3c7fcd6e90fe45cf2aa96a7602fb984b97",{"version":"9ba8749a83e77279630de5ed1d5148062dc57f78062707ce8a14b1aeea46847e","affectsGlobalScope":true},"0a044cb626f8ca7f5150d9c545b92b67d1ce65a0f0c06af1c310bdfe79adf9ed","7a34bc48c16e36599d2557e0c3551c02c2d2c65786d636fa4642dddb7861ef01","ee4884cd3dcefbd6c57a4fe869080935888fcf1926fb7780a3341b1df5891d6c","110b49978925c464c96951e6c48a30cfd2db47a671d3d26bcc5abbfcc980b960","fadb604a8b1f5f5dea147a63879d1c109e35c5329f7f4955be00504f71a6e675","a3bd0fcb5f2725be426dd059489112c116078fab537ed46b0ef30240dd5fefa9","03f0166974794e7124663bd964c48e910855677e0d961798eb9e3aa95a1eeb30","16472ae323af18ff0e5f3164b0a018467f1bce85005a9169002f0cb637e19112","c9c5c1285ed64b9d73561bab43177b87dbff5d70763bf9a0a94fb5db6877ce00",{"version":"9283d676fca9dbd5098f4019e66633b79586fcec359dd22e166242fdc1d78a88","signature":"2d96c3a28a71456a7d1b202cd9b5ea1fd11e52a843dbcf474855769ae51d876d"},{"version":"84745c68bdfb3a2a36c75537c82b5bd0bf45a15ada7b4cb49c4cf2b5884d5833","signature":"e1de93c2700881210eb7630765564d5db714982cb0c014e3541769fc73643a5c"},{"version":"d17a376c23d2ac5a67fbed639dac8031b794da05826f0ac3e3780791740d208e","signature":"1294542bedfa29e9aec9ebe0cefbbf35e17cebd3446e1b0b688adf0150dde2b3"},"3c3ca314a2b01902ef19b499be6e052925a849f14e2d9185afb323df3d3a72b6","1e7146a407bf85762b80681cd4aa3b544000e30c9b24d04685dfa69f82a48fd9","a3c42863fed9b49c35144d60aa0b2865b5fede65ea0050a28f45381af6dae035",{"version":"341983cb2a6561691a065eedfc20b7c3cbb505652660baff31c7eab88e8288c0","signature":"40b6a4dfaf3c9afcdcd800b4b07ee1d18a91cb54186a6144715bce0192fef009"},{"version":"9986b0584dfe088f4b49105a29f776ae1328c456ddb3582c885c147250cf786d","signature":"af1f72154f7025856af0f72bdba0b8fee2bb2aa094f4fc2e79bfe051c8106d56"},"991aace368326d6418dfe58b9176461fb73c8a4ae996f148339f91b0f08b341c","c2b09e7be57dc37305ef5876229728c89b671b47f13d1b45aff1ee5021953b35","1c98cf4d669dfe128ea47dc3193137302f249cde904bdf94f4ea41c02e4570b6","ba5099c18f1edf764b81796991188ac4515b4eb0dba375c1f8c45fdc422f1950",{"version":"87f63575e2abc2b1030f20a0df00decb8f096f50e7c025f62e2c1509006aa19b","signature":"dc4eb3752d321f6745172e1dc75b86c95d6959949a2291c8ba3869781eb6c8c2"},{"version":"f690be2f4a648994e92140e5dff63d5851f50197581f4104f0918c19f62b8c98","signature":"53121c86d2e2d1fbbdf18f059201566c2fae8b345cae07b322b9a3b93e319918"},"e0c2854226d5e3db8cba5afb126edffc098419c3dceec129ad439c494e2268c8","7ff5d4e76faf75f51a0d878ae7ec83734a1c44de9bfabc0ca1a1432aeecb02e7","7172d9b9049c78a0611513ba8cf2e27f1e6c9ec59f0eb8030dc8212bbb151530",{"version":"6f6fc7facbde99f516a04508b0194ae10fabbc18b222a2c76e85ac658b58d17b","signature":"ef6f641275b4dbca56d3a4fbb46fb4b7e7a8fa6b40ae58d52093c83fb7291ffa"},"9428912b5e26dc615397f103c5427704c521b84bc33ea76493e4d92b5d7c06a2",{"version":"7cfc7ecef9818c064fe1c567cbf8ad2551aa7c364fc0bac32bcc6a6f867325bd","signature":"441001fd83be09af3591416a29f8c90244abeed82f450fbde17ce413bb094294","affectsGlobalScope":true},{"version":"117774e243ac3d6744fdfa5875bdc061c297a3474a5ad63dfdcfb31ee3baec48","signature":"da8d891ff525d68598fb2ee7d43d41027cd20da6f95fa4bcb8a231a206677181"},{"version":"f26f3da2e1b02184099bf548fea59a956850f261191939b03ec415b94446c723","signature":"fa4874f07fdf735674fa5125c8ddfe37d4b030f7413a7d9de545236dc914d494","affectsGlobalScope":true},{"version":"6dd3433d0594b2f5aaf14fa65e2d5aab882ddd4b2d7d5e94217624cfbdadbb39","signature":"51877167766c941e7401dda798589b89ea906a5fbf7e874a303ed6ed4820f133"},"5af7c35a9c5c4760fd084fedb6ba4c7059ac9598b410093e5312ac10616bf17b","982a0806921f6b5ad22b86a22eb559b5614ab109842318e2c233a98c7b5d8103","2c120215fdf90da24bf80ff18e7c1a0efd6c581587232d0a6fc0996ec67edd01","382ae2729b467d37323a50387e58aff537ccf68d0ea2d4be231aea78c8fa9a80","0607c362365f0d2f53fa84d64e9ca3550f3b7e8f1e24d692d8fc5b64d4b7706a","86645dd2134c0061c46c9c8959b664e47e897799cfd04b0b3f550956fcaddb26","62ea49d20b53246d9b798ae78b60cfd42ff2637ae490ab28cf370b5e64f58080","15a265c179d8c648bdc6eb12dcb9d3aa168d2b7d3198c248e7c55ee86116e262","7b2fda6cfa66c24d25aeda2f463b377c3b9d898d03450e283cfa2e134be9fdd7",{"version":"0fc853fca070b90c527484187f0737114c2b7260eb926c7f094ce1c131d29a9a","affectsGlobalScope":true},{"version":"28993fc31edfb1f44ff2fd2cd5faba4de349efa5ac53da67eabfc701f0f553b6","signature":"1ff4afc0aafa0e12bfbf571999c0e16a787ad935b471c6f788d48a512dc98ef7"},{"version":"c50e89dd9367eafda81eb71e790843866278ffded266f7dbb00fdb153316ef41","signature":"9a0f6b874fcd87e6daa6f510a35c4a0d3c27c0bb4ecf951e7ace9d4d299e2bb4"},{"version":"55dab123a7e8286a3d45cf2b797a65171bd8d8e4b7d20108f987166d1a5d839b","signature":"145507e105a4f35c1fc90d25ea31193028688b14f9e6d82b0dd11fba979606ec","affectsGlobalScope":true},{"version":"f2750971b8f4ccf77c2b679418c2f55f3b94520fb08ea6c62bed64556713838e","signature":"9212f42996fe67496d0c4044110e9f82aad563a8f80fccec57f930efee331912"},{"version":"11c8af99145cd322009631ec4280b519e37a9f1c1cf5fee3d774722de1091e3e","signature":"fd35f07229b46ce0cd81382f0ead53a062e8835afacd80c8dd99277718c55b27"},{"version":"cc8fd19ed65ad9715dc3de5cca91dbf92825379e19ade79e8a38b102f20fca4e","signature":"237787db904877821deefcb6d7bac50083be632b4d1465f4e3c18dbf9dc19df3"},{"version":"91a4f636acce12b38a51cdad6e96a3e7123cd83863c3cf6aff9f2fc8020ef6f2","signature":"d1b57203bd8d73fb8849a709a2001043f5c88a60546e79d328302f96345caa9f"},"31c520c39cb6e227cf35a529dc3587215192ea96c9e2c7ec19adcdacc2b249f9","94751d3622c6b703ed65c2d0239b16a38022a3b1fb2cc3476b3022ce459f85c5",{"version":"c25b651b2097321e9603fda5a8d0511a499fe45173fe63fc22aa3c853782c6c8","signature":"1df2f8acd2ef88784239b25a617c0d2c6d146eed21bcb7e2264ea23bdf686455"},"fcee16a7fb24ed6bf11ba33eaa998b584a0ba5b8e1f4f0870b05b266b2730aed",{"version":"f25f420cdc1ac55a822ebbb2839e9a91d0578ec3cc2c3a4ad864eb087a2f2935","signature":"fa58abbf4addc597585fb4890270228f5de2594cdb6e0a89593239bb34e9a0da"},{"version":"5cf4c2f57f8fc25b0b7526bc8a00d230e7444a19961039b3369efe0bf78d6760","signature":"1490f7537aa4c2554f2a92d0888602c2bc1b38e4068a199ee5e97addd54b91c2"},{"version":"fe821a61821c46e420a31540e73c900ac070e4e3149396183f75de5c685061ab","signature":"d827e8663c536c4929eb8257b7ad1b1ec9f4fd3ce62810f39ef92fe350370973"},"2aa28a84781cf1645c3ccfa78a35994c894afe38d08b9784bf6eb5670b028f13","427bcbdb5452271dd7968a9d6ca6b1d574212e64b6c2b1ecb68c9c22457f315f","f449ec339cbcac1c0d9089d936ddff65da0a963bd0d83505d787dcc0965d737a",{"version":"c4622e0690a93b9fffb97701258ee4f8925c3f28e4a96f8a889719d9feb4b9b4","signature":"8bde851e87461b7ab62de706eea3c41eebb0533f7efac043f6268604d4a51d52"},{"version":"9186b188e0ae5718f9d86e9c256ff1fe85554abde2b88cc2cb1773e3a32692c2","signature":"218706f952e736666ce33dd7edd880509be89f5a3eeec6ce1906c0e84d606f33"},{"version":"d6ce64a8bb654a78edd1b5caa072d6fc27b5d2acc8f05d79b6b1f11f64f18483","signature":"739b576d830d8b5cc21e4294437c1dd7689357bbfbb6df9fbb8fb9b89e2a73a5"},{"version":"373bd07dc2718bc91d81df2295c55fbeca959b9645f5f22be77df537cb900d08","signature":"86ac22525cd1087118b72144ad02d0bb73abe242bf6df38e38bdbe109c2e0007"},{"version":"46dabf6fc44bd023d13c6126e1d18136cb2992549586ce90efaf892b7066c640","signature":"a4cd24a1ecd79c13a8699aafac1ac77cbf2f1295983dae283c49d62b44776c47"},{"version":"1c4e85bf6f31b14f321a9288690fa0c02b76293bea7469233ec3d5e721ffd177","signature":"d764c88e4a415815f5654188cab5e23888420ca5cab140bf556e254a4a46d2d8"},{"version":"daa64642fd9ad985f5da450b8199625172b6726b9437b6a9f61ef5773818ec5a","signature":"b1f2ff675fe2cc66730c9ab5e4dcd0bd5dc43807e6c0a68bd0a1170844ef717d"},{"version":"31f403bd5a9661e52d8479ea0b1acf614b232d9022761e93ec979f17e8f90452","signature":"f74ac9655c1f953d50524711afb6aadbb575951064e51febaf70b64080f7d4a3"},"c3fe25a776bc38a4cf8065b0865fabadf04aef792263228f94e08cf48736adb5",{"version":"30d34f12a4fb053b216bedcdb60a86c9a5d99c7d6e7ee8639f66ef9937029ae8","signature":"f2c4cb6cc708b48dac69396b7c2d5e449fddf884c53faa0ab8ac59f348957cb3"},{"version":"2128d7c20bc4954cd14e3dafe0c8d72c06d64be65bd64c188b8658e62396c91c","signature":"1bf576af5cd586b6f95b424360abbe40968e5aa38b5d7138dfb49159b2e2a5ce"},"27362c4d59f5eae0988b6520d90ca82463f279d428643bf70bc11a247fe2ff94","4d2cec6238696706de36148c202da4237957fb4e0085bd0688049de65e4e8751",{"version":"860b41336e4ab2518d06ca0f680485826a3ad8dc5c9531ff9dceb8d23fb623e6","signature":"a1521a1b819768f006fcf927414e5f4627ba7f93256a1bf8aa8ca49b69689f9e"},{"version":"ddb5358b4fd7d3ea7d159cf7e170c4c8769b9aa52c02882a4423e2e6bb6a3977","signature":"ba21e217c2e0d764d6848d8666d9fef86ddee9dfde138da3f9c37b343ff02ed1"},{"version":"96304e94682170d2ac96cd344f23473be0a37cf732fafbdaaf00d2f0e3f96391","signature":"941f1c31c0829afaf5d47885b401b5692318c4d4ccfeae53dacc23c9fffdb388"},{"version":"74a552fe161f57e55ebc832df41f08be61a2818f99007f3625bdd4b0987c0547","signature":"b8fdab435ad1fe7381e0f470982f375367060d73be92edc69e1b8c0e3717c9ff"},{"version":"57c5668bb4bb5975e2ef082c9c7b6fad57dc7f84483a130057f3c68134a6e962","signature":"d1ac82fdc8335226b41d49e27ed7054b64492d5ecc5b52868fab5825ca0bcada"},{"version":"849c2d27a7002a80070821ee0e8a5b70b3659ec1f9da6a406a94c1c29e19c736","signature":"b5c662246b0e17b8caf5c77606d94275d0364a271581932faeda4470112c1840"},"95e91f26a524f24c721be6948c7a7c5b6e4be09909a53938c8aeae50481fd5d4","747793245b86d8ff05a0c5df6fab6b5174fb16714c608860c1bfb80fe30f9e2b","76da354af6f6438ca997ff27abb1864c7783d58065de6a26f9ec047acb6be0b4","fc733a62e3fcbb11a976884dfed70cc4e0116ea9bfecd1007e7d854bdaf7d664",{"version":"e0309c66b935f38878bfcde9b5c65424d48aa3af15b8d5dfdd065fe3f9c5b5e7","signature":"92711a57458713148b33981e8be096f1fcedb138c3737201266be20e6033d38e"},{"version":"31f2ee62ea40c2052e468f43629b7832f8738679212718b1ab13333f8058f5ff","signature":"de3a504cf5896c34571ede762a7b8af3006c65766661d724f78a6f47a6c1c31b"},{"version":"824f66397853f1813260cf4f229c9c0dc1a26c758c49cdc9e9d2d8e6092c4f78","signature":"d53f9377eeac27a54036e00fca0d654cc3eb166c1ce8d90ae4475d2dfb31d141"},"9447b0b71acce3c6e9903be16780094cbef415f6c8ec9f3de6aca4fe7bd5ced5","c83e65334a9dc08a338f994a34bd70328c626976881d71d6aaa8dc7d66b08d96",{"version":"d04dbda836118be8a472b18a1ff30ab430fd01a4623590c58c46d1588a07f3b9","signature":"99c1470c4e92761f992015da0569666dd761c774cf4ee146ecfbf72ba4100c61"},"49799a4fb18a9becd350842e36e0afeb1cf5eed58a89ea7b11ae5b57d2110942",{"version":"d3880f2a8c998f0108ce603c0b13287b4e38e98aefddc65e838ccd1668dea60a","affectsGlobalScope":true},{"version":"24e583b8f5a0a43c70046449b53304034ba753a9cd415162ba388c4707ff84a6","affectsGlobalScope":true},"41a51336660ea8505a3a12181c88302ea41d06d76e2b5a5e274f86ec171e62d9","0b49e6863a50c346d4614193d4d05a9a536180130f17fcc70152ad144d9069c8","c944ff6c7d4b3e7ef364e288f8f628ab699ce2c8ce53c0a945e9b159463b093d",{"version":"61767657398505ccd238e49f450ebc9de7ccd6189e58b87603f64cc65ddb9899","signature":"e4f5b76988e4a00ffbc443202390e1d53ee4677382e8d61761f0cd93cce81cd5"},{"version":"8ce514bd83a98140fef6cccf82ee2a35dbe991d15fd14e77885d3655f463b4f4","signature":"bd4da4ce4eee9e6600813b591af81eec6d3d772eba76c408ba5719ecfdcbdf59"},"a808dedaf39ac88a9a938e4916cce087b852f698b0c98f3f56a2e987f2f63121","fb23837ced2bdde6a41d8f4037b43f42fead2be3a2301d5654f13c907f5155c1","194ac7211af2dde987627b3ce2b9608b3e33e0af1256c7efae0f2b6f102f8758","c766d897aacf0651598e6da8b5b30c85300c063ffc1cac77131eba9377a4694f",{"version":"846fcda4f3e7559e865900bdd6cbfb3d9df63cb0e2c7f5ae729b38fb639f62e2","signature":"227aaa0402067bd96ac60d52e40a518c6336af097b4fa7600852f52e5e47da69"},"117ffeecf6c55e25b6446f449ad079029b5e7317399b0a693858faaaea5ca73e","3937b50a4de68f6d21614461e9d47af0d8421ca80fc2a72b667ca2151f492120","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","7ac7ef12f7ece6464d83d2d56fea727260fb954fdd51a967e94f97b8595b714b","4ef960df4f672e93b479f88211ed8b5cfa8a598b97aafa3396cacdc3341e3504","cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a"],"root":[188,191,193,238,276,277,283,284,313,314,[344,346],350,351,[353,366],[377,390],[394,412],[415,420],422,[427,435]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[181],[347],[347,348],[246,424,425],[244,246,273],[247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272],[248],[252],[248,252],[260],[248,250],[248,249,250],[248,249],[367,368,369],[367,368],[367],[286],[285,286,287],[285,286,287,288,289,290,291,292,293],[285,286],[282,294],[282,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311],[294,295],[282],[282,304],[294],[294,295,302],[294,295,297],[181,182,183,184,185],[181,183],[117,151],[194,196,197,198,199,200,201,202,203,204,205,206],[194,195,197,198,199,200,201,202,203,204,205,206],[195,196,197,198,199,200,201,202,203,204,205,206],[194,195,196,198,199,200,201,202,203,204,205,206],[194,195,196,197,199,200,201,202,203,204,205,206],[194,195,196,197,198,200,201,202,203,204,205,206],[194,195,196,197,198,199,201,202,203,204,205,206],[194,195,196,197,198,199,200,202,203,204,205,206],[194,195,196,197,198,199,200,201,203,204,205,206],[194,195,196,197,198,199,200,201,202,204,205,206],[194,195,196,197,198,199,200,201,202,203,205,206],[194,195,196,197,198,199,200,201,202,203,204,206],[194,195,196,197,198,199,200,201,202,203,204,205],[206],[66],[101],[102,107,135],[103,114,115,122,132,143],[103,104,114,122],[105,144],[106,107,115,123],[107,132,140],[108,110,114,122],[101,109],[110,111],[114],[112,114],[101,114],[114,115,116,132,143],[114,115,116,129,132,135],[99,102,148],[110,114,117,122,132,143],[114,115,117,118,122,132,140,143],[117,119,132,140,143],[66,67,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150],[114,120],[121,143,148],[110,114,122,132],[123],[124],[101,125],[126,142,148],[127],[128],[114,129,130],[129,131,144,146],[102,114,132,133,134,135],[102,132,134],[132,133],[135],[136],[101,132],[114,138,139],[138,139],[107,122,132,140],[141],[122,142],[102,117,128,143],[107,144],[132,145],[121,146],[147],[102,107,114,116,125,132,143,146,148],[132,149],[278,279,280,281],[441,480],[441,465,480],[480],[441],[441,466,480],[441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479],[466,480],[180,186],[318,323],[319,320,321,322],[282,318],[318,320],[318,319],[338,339,340,341],[318,323,337],[337,342],[315,316,317],[315],[325,326,327,328,329,330,331,332,333,334,335,336],[318],[318,325],[207,209,210],[207,209],[207],[208,209,211,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236],[214],[207,214],[208],[208,214],[222],[229],[212],[210],[174],[172,174],[163,171,172,173,175],[161],[164,169,174,177],[160,177],[164,165,168,169,170,177],[164,165,166,168,169,177],[161,162,163,164,165,169,170,171,173,174,175,177],[159,161,162,163,164,165,166,168,169,170,171,172,173,174,175,176],[159,177],[164,166,167,169,170,177],[168,177],[169,170,174,177],[162,172],[413],[370],[282,370,374,375],[370,371,372,373],[282,370,371],[282,370],[391],[152],[159],[240,242,244],[239,243],[241],[240],[245],[76,80,143],[76,132,143],[71],[73,76,140,143],[122,140],[151],[71,151],[73,76,122,143],[68,69,72,75,102,114,132,143],[68,74],[72,76,102,135,143,151],[102,151],[92,102,151],[70,71,151],[76],[70,71,72,73,74,75,76,77,78,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98],[76,83,84],[74,76,84,85],[75],[68,71,76],[76,80,84,85],[80],[74,76,79,143],[68,73,74,76,80,83],[102,132],[71,76,92,102,148,151],[189],[114,115,117,118,119,122,132,140,143,149,151,153,154,155,156,157,158,177,178,179],[154,155,156],[154],[155],[156,178],[153],[190,238,282,365,377,418,419],[190,282,377],[190,276,366,377,386,418],[190],[206,237],[276,282,414],[190,276,282,377,378,384,387,392,393,415,418],[190,238,377],[190,237,275,276,377,378,384,386,387,404,418],[190,282,357,384],[190,206,276,282,377,378,384,387,392,393,418],[237,238,274,275],[190,276,282,399,400,401],[276,282,377,378,384,387,393,402,403,405,418],[190,238,276,282,359,377,382,383,384,418],[190,237,238,274,276,282,352,353,363,377,381,384,385,396,397,398,406,407,408,409,410,411,412,416,417],[276,282,364,377,378,387,390,392,393,394,395,418],[282,388,389],[366],[190,238,275,282,377,379],[282,384,421,427],[190,238,274,282,357,376,420,422,426],[274,282,283,312,324,344,354,355,356],[274],[283],[282,358],[277,353],[274,282,312,350,353,357],[274,282,350,352,357],[274,282,353,357],[274,312,357],[274,282,357],[274,282,314,354],[274,282,283,353,361],[274,282,312],[274,282,346],[274,283,324,343],[274,282],[349],[274,276,282],[282,376],[237,238,274,276,282,359,377],[237,274,276,282,357],[192],[180,187],[229,348],[153,154,155,156,157,158,177,178,179],[190,282],[276,282,377,418],[274,282,283],[274,295],[274,276,377],[276],[180]],"referencedMap":[[183,1],[348,2],[349,3],[426,4],[424,5],[423,6],[274,5],[249,7],[273,6],[255,8],[257,9],[258,7],[259,9],[260,8],[261,9],[262,7],[263,10],[264,7],[266,11],[268,7],[269,7],[270,7],[251,12],[253,9],[250,13],[272,7],[370,14],[369,15],[368,16],[291,17],[293,18],[294,19],[289,18],[292,17],[288,18],[287,20],[306,21],[312,22],[302,23],[311,24],[303,21],[305,25],[297,23],[295,26],[310,27],[307,26],[309,23],[308,26],[296,23],[298,28],[300,23],[301,23],[299,23],[186,29],[182,1],[184,30],[185,1],[437,31],[195,32],[196,33],[194,34],[197,35],[198,36],[199,37],[200,38],[201,39],[202,40],[203,41],[204,42],[205,43],[206,44],[275,45],[352,45],[66,46],[67,46],[101,47],[102,48],[103,49],[104,50],[105,51],[106,52],[107,53],[108,54],[109,55],[110,56],[111,56],[113,57],[112,58],[114,59],[115,60],[116,61],[100,62],[117,63],[118,64],[119,65],[151,66],[120,67],[121,68],[122,69],[123,70],[124,71],[125,72],[126,73],[127,74],[128,75],[129,76],[130,76],[131,77],[132,78],[134,79],[133,80],[135,81],[136,82],[137,83],[138,84],[139,85],[140,86],[141,87],[142,88],[143,89],[144,90],[145,91],[146,92],[147,93],[148,94],[149,95],[421,24],[439,24],[393,24],[282,96],[304,24],[465,97],[466,98],[441,99],[444,99],[463,97],[464,97],[454,97],[453,100],[451,97],[446,97],[459,97],[457,97],[461,97],[445,97],[458,97],[462,97],[447,97],[448,97],[460,97],[442,97],[449,97],[450,97],[452,97],[456,97],[467,101],[455,97],[443,97],[480,102],[474,101],[476,103],[475,101],[468,101],[469,101],[471,101],[473,101],[477,103],[478,103],[470,103],[472,103],[187,104],[324,105],[323,106],[319,107],[322,108],[320,109],[321,109],[342,110],[340,105],[341,105],[339,105],[338,111],[343,112],[318,113],[316,114],[317,114],[337,115],[328,116],[332,117],[334,116],[327,116],[326,117],[333,117],[330,116],[335,116],[329,116],[331,116],[336,116],[212,118],[210,119],[209,120],[237,121],[217,122],[218,123],[220,124],[221,125],[222,122],[223,125],[224,126],[225,124],[228,120],[230,127],[231,120],[232,124],[233,124],[213,128],[208,120],[215,123],[211,129],[236,120],[175,130],[173,131],[174,132],[162,133],[163,131],[170,134],[161,135],[166,136],[167,137],[172,138],[177,139],[160,140],[168,141],[169,142],[164,143],[171,130],[165,144],[414,145],[413,24],[375,146],[376,147],[374,148],[372,149],[371,150],[373,149],[392,151],[391,24],[153,152],[159,153],[243,154],[244,155],[242,156],[241,157],[246,158],[83,159],[90,160],[82,159],[97,161],[74,162],[73,163],[96,164],[91,165],[94,166],[76,167],[75,168],[71,169],[70,170],[93,171],[72,172],[77,173],[81,173],[99,174],[98,173],[85,175],[86,176],[88,177],[84,178],[87,179],[92,164],[79,180],[80,181],[89,182],[69,183],[95,184],[190,185],[180,186],[157,187],[155,188],[156,189],[189,190],[179,191],[420,192],[397,193],[387,194],[382,195],[419,195],[238,196],[415,197],[416,198],[422,199],[405,200],[417,201],[431,197],[432,202],[276,203],[402,204],[406,205],[385,206],[418,207],[396,208],[390,209],[388,210],[383,211],[428,212],[427,213],[357,214],[277,215],[284,216],[433,217],[434,218],[358,219],[353,220],[354,221],[359,222],[360,223],[355,224],[362,225],[313,226],[314,216],[435,215],[361,227],[344,228],[345,215],[283,229],[350,230],[384,231],[363,24],[364,24],[365,24],[366,24],[377,232],[399,24],[378,233],[379,24],[380,24],[381,234],[191,195],[193,235],[188,236]],"exportedModulesMap":[[183,1],[348,127],[349,237],[426,4],[424,5],[423,6],[274,5],[249,7],[273,6],[255,8],[257,9],[258,7],[259,9],[260,8],[261,9],[262,7],[263,10],[264,7],[266,11],[268,7],[269,7],[270,7],[251,12],[253,9],[250,13],[272,7],[370,14],[369,15],[368,16],[291,17],[293,18],[294,19],[289,18],[292,17],[288,18],[287,20],[306,21],[312,22],[302,23],[311,24],[303,21],[305,25],[297,23],[295,26],[310,27],[307,26],[309,23],[308,26],[296,23],[298,28],[300,23],[301,23],[299,23],[186,29],[182,1],[184,30],[185,1],[437,31],[195,32],[196,33],[194,34],[197,35],[198,36],[199,37],[200,38],[201,39],[202,40],[203,41],[204,42],[205,43],[206,44],[275,45],[352,45],[66,46],[67,46],[101,47],[102,48],[103,49],[104,50],[105,51],[106,52],[107,53],[108,54],[109,55],[110,56],[111,56],[113,57],[112,58],[114,59],[115,60],[116,61],[100,62],[117,63],[118,64],[119,65],[151,66],[120,67],[121,68],[122,69],[123,70],[124,71],[125,72],[126,73],[127,74],[128,75],[129,76],[130,76],[131,77],[132,78],[134,79],[133,80],[135,81],[136,82],[137,83],[138,84],[139,85],[140,86],[141,87],[142,88],[143,89],[144,90],[145,91],[146,92],[147,93],[148,94],[149,95],[421,24],[439,24],[393,24],[282,96],[304,24],[465,97],[466,98],[441,99],[444,99],[463,97],[464,97],[454,97],[453,100],[451,97],[446,97],[459,97],[457,97],[461,97],[445,97],[458,97],[462,97],[447,97],[448,97],[460,97],[442,97],[449,97],[450,97],[452,97],[456,97],[467,101],[455,97],[443,97],[480,102],[474,101],[476,103],[475,101],[468,101],[469,101],[471,101],[473,101],[477,103],[478,103],[470,103],[472,103],[187,104],[324,105],[323,106],[319,107],[322,108],[320,109],[321,109],[342,110],[340,105],[341,105],[339,105],[338,111],[343,112],[318,113],[316,114],[317,114],[337,115],[328,116],[332,117],[334,116],[327,116],[326,117],[333,117],[330,116],[335,116],[329,116],[331,116],[336,116],[212,118],[210,119],[209,120],[237,121],[217,122],[218,123],[220,124],[221,125],[222,122],[223,125],[224,126],[225,124],[228,120],[230,127],[231,120],[232,124],[233,124],[213,128],[208,120],[215,123],[211,129],[236,120],[175,130],[173,131],[174,132],[162,133],[163,131],[170,134],[161,135],[166,136],[167,137],[172,138],[177,139],[160,140],[168,141],[169,142],[164,143],[171,130],[165,144],[414,145],[413,24],[375,146],[376,147],[374,148],[372,149],[371,150],[373,149],[392,151],[391,24],[153,152],[159,153],[243,154],[244,155],[242,156],[241,157],[246,158],[83,159],[90,160],[82,159],[97,161],[74,162],[73,163],[96,164],[91,165],[94,166],[76,167],[75,168],[71,169],[70,170],[93,171],[72,172],[77,173],[81,173],[99,174],[98,173],[85,175],[86,176],[88,177],[84,178],[87,179],[92,164],[79,180],[80,181],[89,182],[69,183],[95,184],[190,185],[180,238],[157,187],[155,188],[156,189],[189,190],[179,191],[420,192],[397,239],[387,194],[382,239],[419,239],[238,45],[415,197],[416,198],[422,239],[411,24],[404,24],[403,24],[429,24],[409,24],[408,24],[410,24],[386,24],[400,24],[401,24],[394,24],[407,24],[412,24],[430,24],[395,24],[398,24],[405,200],[417,239],[431,197],[432,202],[276,215],[402,204],[406,205],[385,206],[418,239],[396,240],[390,24],[388,24],[389,24],[383,239],[428,212],[427,213],[357,241],[277,215],[284,216],[433,217],[434,218],[358,219],[353,220],[354,221],[359,222],[360,223],[355,224],[362,225],[313,242],[314,216],[435,215],[361,215],[344,228],[345,215],[283,229],[384,231],[364,24],[399,24],[378,243],[381,244],[191,195],[193,235],[188,245]],"semanticDiagnosticsPerFile":[183,181,348,349,347,426,424,423,274,248,271,249,273,247,254,255,256,257,258,259,252,260,261,262,263,264,265,266,267,268,269,270,251,253,250,272,367,370,369,368,291,293,294,289,290,292,288,287,285,286,306,312,302,311,303,305,297,295,310,307,309,308,296,298,300,301,299,186,182,184,185,436,437,152,438,195,196,194,197,198,199,200,201,202,203,204,205,206,275,352,66,67,101,102,103,104,105,106,107,108,109,110,111,113,112,114,115,116,100,150,117,118,119,151,120,121,122,123,124,125,126,127,128,129,130,131,132,134,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,280,421,439,393,278,282,304,440,281,465,466,441,444,463,464,454,453,451,446,459,457,461,445,458,462,447,448,460,442,449,450,452,456,467,455,443,480,479,474,476,475,468,469,471,473,477,478,470,472,187,192,279,425,158,324,323,319,322,320,321,342,340,341,339,338,343,318,315,316,317,337,328,332,334,327,326,333,325,330,335,329,331,336,212,210,207,235,209,237,234,216,217,218,219,220,221,214,222,223,224,225,226,227,228,230,231,232,233,213,208,215,211,236,229,175,173,174,162,163,170,161,166,176,167,172,177,160,168,169,164,171,165,414,413,375,376,374,372,371,373,392,391,153,159,243,244,242,241,239,240,246,245,64,65,12,13,15,14,2,16,17,18,19,20,21,22,23,3,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,58,56,57,59,60,10,1,11,63,62,61,83,90,82,97,74,73,96,91,94,76,75,71,70,93,72,77,78,81,68,99,98,85,86,88,84,87,92,79,80,89,69,95,190,180,157,155,154,156,178,189,179,420,397,387,382,419,238,415,416,422,411,404,403,429,409,408,410,386,400,401,394,407,412,430,395,398,405,417,431,432,276,402,406,385,418,[396,[{"file":"./src/components/slideview/index.tsx","start":1495,"length":25,"code":2322,"category":1,"messageText":"Type 'Timeout' is not assignable to type 'number'."}]],390,388,389,383,428,427,357,277,284,433,434,351,358,353,354,359,360,[355,[{"file":"./src/ngine/hooks/userates.ts","start":151,"length":10,"messageText":"Module '\"../money\"' has no exported member 'RateSymbol'.","category":1,"code":2305},{"file":"./src/ngine/hooks/userates.ts","start":163,"length":5,"messageText":"Module '\"../money\"' declares 'Rates' locally, but it is not exported.","category":1,"code":2459,"relatedInformation":[{"file":"./src/ngine/money.ts","start":9,"length":5,"messageText":"'Rates' is declared here.","category":3,"code":2728}]},{"file":"./src/ngine/hooks/userates.ts","start":170,"length":12,"messageText":"Module '\"../money\"' has no exported member 'FiatCurrency'.","category":1,"code":2305}]],362,[313,[{"file":"./src/ngine/lnurl.ts","start":179,"length":8,"messageText":"Cannot find module 'bech32' or its corresponding type declarations.","category":1,"code":2307},{"file":"./src/ngine/lnurl.ts","start":1405,"length":15,"code":2322,"category":1,"messageText":"Type 'Timeout' is not assignable to type 'number'."}]],314,435,[361,[{"file":"./src/ngine/nostr/nip57.ts","start":56,"length":22,"code":7016,"category":1,"messageText":{"messageText":"Could not find a declaration file for module 'light-bolt11-decoder'. '/Users/f.maul/dev/nostr/nostr-slideshow/node_modules/light-bolt11-decoder/bolt11.js' implicitly has an 'any' type.","category":1,"code":7016,"next":[{"info":{"moduleReference":"light-bolt11-decoder"}}]}},{"file":"./src/ngine/nostr/nip57.ts","start":1311,"length":4,"messageText":"Binding element 'name' implicitly has an 'any' type.","category":1,"code":7031}]],344,345,346,283,350,384,356,363,364,365,366,377,399,378,379,380,381,191,193,188],"affectedFilesPendingEmit":[420,397,387,382,419,238,415,416,422,411,404,403,429,409,408,410,386,400,401,394,407,412,430,395,398,405,417,431,432,276,402,406,385,418,396,390,388,389,383,428,427,357,277,284,433,434,351,358,353,354,359,360,355,362,313,314,435,361,344,345,346,283,350,384,356,363,364,365,366,377,399,378,379,380,381,188]},"version":"5.3.3"} \ No newline at end of file