├── .gitignore ├── .prettierrc.json ├── README.md ├── eslint.config.js ├── index.html ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── bath3.1.glb └── fav.ico ├── src ├── App.tsx ├── components │ ├── Bath.jsx │ ├── CameraStuff.tsx │ ├── CanvasWrapper.tsx │ ├── Lights.tsx │ ├── Loader.tsx │ └── Spinner.tsx ├── index.css ├── index.tsx ├── lib │ ├── enums.ts │ └── utils.ts ├── store.ts └── vite-env.d.ts ├── tailwind.config.js ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "singleQuote": true, 4 | "tabWidth": 2, 5 | "trailingComma": "none", 6 | "jsxBracketSameLine": true, 7 | "arrowParens": "always", 8 | "bracketSpacing": true, 9 | "plugins": ["prettier-plugin-tailwindcss"] 10 | } 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | r3f ts boiler 2 | 3 | `pnpm i` 4 | `pnpm dev` 5 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js'; 2 | import globals from 'globals'; 3 | import reactHooks from 'eslint-plugin-react-hooks'; 4 | import reactRefresh from 'eslint-plugin-react-refresh'; 5 | import tseslint from 'typescript-eslint'; 6 | import importPlugin from 'eslint-plugin-import'; 7 | 8 | export default tseslint.config({ 9 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 10 | files: ['**/*.{ts,tsx}'], 11 | ignores: ['dist'], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser 15 | }, 16 | plugins: { 17 | 'react-hooks': reactHooks, 18 | 'react-refresh': reactRefresh, 19 | import: importPlugin 20 | }, 21 | rules: { 22 | ...reactHooks.configs.recommended.rules, 23 | 'react-refresh/only-export-components': ['off'] 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "r3f-ts-boiler", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "lint": "eslint .", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@react-three/drei": "^9.112.0", 14 | "@react-three/fiber": "^8.16.8", 15 | "framer-motion": "^11.5.5", 16 | "react": "^18.3.1", 17 | "react-dom": "^18.3.1", 18 | "three": "^0.167.1", 19 | "three-custom-shader-material": "^5.4.0", 20 | "zustand": "^4.5.4" 21 | }, 22 | "devDependencies": { 23 | "@eslint/js": "^9.8.0", 24 | "@types/node": "^22.5.0", 25 | "@types/react": "^18.3.3", 26 | "@types/react-dom": "^18.3.0", 27 | "@types/three": "^0.167.1", 28 | "@types/uuid": "^10.0.0", 29 | "@vitejs/plugin-react": "^4.3.1", 30 | "autoprefixer": "^10.4.20", 31 | "eslint": "^8.57.0", 32 | "eslint-plugin-import": "^2.29.1", 33 | "eslint-plugin-react-hooks": "^5.1.0-rc.0", 34 | "eslint-plugin-react-refresh": "^0.4.9", 35 | "globals": "^15.9.0", 36 | "leva": "^0.10.0", 37 | "postcss": "^8.4.41", 38 | "prettier": "^3.3.3", 39 | "prettier-plugin-tailwindcss": "^0.6.5", 40 | "r3f-perf": "^7.2.1", 41 | "tailwindcss": "^3.4.9", 42 | "tailwindcss-animate": "^1.0.7", 43 | "typescript": "^5.5.3", 44 | "typescript-eslint": "^8.0.0", 45 | "vite": "^5.4.0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@react-three/drei': 12 | specifier: ^9.112.0 13 | version: 9.112.0(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(@types/react@18.3.8)(@types/three@0.167.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 14 | '@react-three/fiber': 15 | specifier: ^8.16.8 16 | version: 8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 17 | framer-motion: 18 | specifier: ^11.5.5 19 | version: 11.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 20 | react: 21 | specifier: ^18.3.1 22 | version: 18.3.1 23 | react-dom: 24 | specifier: ^18.3.1 25 | version: 18.3.1(react@18.3.1) 26 | three: 27 | specifier: ^0.167.1 28 | version: 0.167.1 29 | three-custom-shader-material: 30 | specifier: ^5.4.0 31 | version: 5.4.0(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(react@18.3.1)(three@0.167.1) 32 | zustand: 33 | specifier: ^4.5.4 34 | version: 4.5.5(@types/react@18.3.8)(react@18.3.1) 35 | devDependencies: 36 | '@eslint/js': 37 | specifier: ^9.8.0 38 | version: 9.10.0 39 | '@types/node': 40 | specifier: ^22.5.0 41 | version: 22.5.5 42 | '@types/react': 43 | specifier: ^18.3.3 44 | version: 18.3.8 45 | '@types/react-dom': 46 | specifier: ^18.3.0 47 | version: 18.3.0 48 | '@types/three': 49 | specifier: ^0.167.1 50 | version: 0.167.2 51 | '@types/uuid': 52 | specifier: ^10.0.0 53 | version: 10.0.0 54 | '@vitejs/plugin-react': 55 | specifier: ^4.3.1 56 | version: 4.3.1(vite@5.4.6(@types/node@22.5.5)) 57 | autoprefixer: 58 | specifier: ^10.4.20 59 | version: 10.4.20(postcss@8.4.47) 60 | eslint: 61 | specifier: ^8.57.0 62 | version: 8.57.1 63 | eslint-plugin-import: 64 | specifier: ^2.29.1 65 | version: 2.30.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1) 66 | eslint-plugin-react-hooks: 67 | specifier: ^5.1.0-rc.0 68 | version: 5.1.0-rc-fb9a90fa48-20240614(eslint@8.57.1) 69 | eslint-plugin-react-refresh: 70 | specifier: ^0.4.9 71 | version: 0.4.12(eslint@8.57.1) 72 | globals: 73 | specifier: ^15.9.0 74 | version: 15.9.0 75 | leva: 76 | specifier: ^0.10.0 77 | version: 0.10.0(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 78 | postcss: 79 | specifier: ^8.4.41 80 | version: 8.4.47 81 | prettier: 82 | specifier: ^3.3.3 83 | version: 3.3.3 84 | prettier-plugin-tailwindcss: 85 | specifier: ^0.6.5 86 | version: 0.6.6(prettier@3.3.3) 87 | r3f-perf: 88 | specifier: ^7.2.1 89 | version: 7.2.1(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(@types/react@18.3.8)(@types/three@0.167.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 90 | tailwindcss: 91 | specifier: ^3.4.9 92 | version: 3.4.12 93 | tailwindcss-animate: 94 | specifier: ^1.0.7 95 | version: 1.0.7(tailwindcss@3.4.12) 96 | typescript: 97 | specifier: ^5.5.3 98 | version: 5.6.2 99 | typescript-eslint: 100 | specifier: ^8.0.0 101 | version: 8.6.0(eslint@8.57.1)(typescript@5.6.2) 102 | vite: 103 | specifier: ^5.4.0 104 | version: 5.4.6(@types/node@22.5.5) 105 | 106 | packages: 107 | 108 | '@alloc/quick-lru@5.2.0': 109 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 110 | engines: {node: '>=10'} 111 | 112 | '@ampproject/remapping@2.3.0': 113 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 114 | engines: {node: '>=6.0.0'} 115 | 116 | '@babel/code-frame@7.24.7': 117 | resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} 118 | engines: {node: '>=6.9.0'} 119 | 120 | '@babel/compat-data@7.25.4': 121 | resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} 122 | engines: {node: '>=6.9.0'} 123 | 124 | '@babel/core@7.25.2': 125 | resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} 126 | engines: {node: '>=6.9.0'} 127 | 128 | '@babel/generator@7.25.6': 129 | resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} 130 | engines: {node: '>=6.9.0'} 131 | 132 | '@babel/helper-compilation-targets@7.25.2': 133 | resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} 134 | engines: {node: '>=6.9.0'} 135 | 136 | '@babel/helper-module-imports@7.24.7': 137 | resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} 138 | engines: {node: '>=6.9.0'} 139 | 140 | '@babel/helper-module-transforms@7.25.2': 141 | resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} 142 | engines: {node: '>=6.9.0'} 143 | peerDependencies: 144 | '@babel/core': ^7.0.0 145 | 146 | '@babel/helper-plugin-utils@7.24.8': 147 | resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} 148 | engines: {node: '>=6.9.0'} 149 | 150 | '@babel/helper-simple-access@7.24.7': 151 | resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} 152 | engines: {node: '>=6.9.0'} 153 | 154 | '@babel/helper-string-parser@7.24.8': 155 | resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} 156 | engines: {node: '>=6.9.0'} 157 | 158 | '@babel/helper-validator-identifier@7.24.7': 159 | resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} 160 | engines: {node: '>=6.9.0'} 161 | 162 | '@babel/helper-validator-option@7.24.8': 163 | resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} 164 | engines: {node: '>=6.9.0'} 165 | 166 | '@babel/helpers@7.25.6': 167 | resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} 168 | engines: {node: '>=6.9.0'} 169 | 170 | '@babel/highlight@7.24.7': 171 | resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} 172 | engines: {node: '>=6.9.0'} 173 | 174 | '@babel/parser@7.25.6': 175 | resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} 176 | engines: {node: '>=6.0.0'} 177 | hasBin: true 178 | 179 | '@babel/plugin-transform-react-jsx-self@7.24.7': 180 | resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} 181 | engines: {node: '>=6.9.0'} 182 | peerDependencies: 183 | '@babel/core': ^7.0.0-0 184 | 185 | '@babel/plugin-transform-react-jsx-source@7.24.7': 186 | resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} 187 | engines: {node: '>=6.9.0'} 188 | peerDependencies: 189 | '@babel/core': ^7.0.0-0 190 | 191 | '@babel/runtime@7.25.6': 192 | resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} 193 | engines: {node: '>=6.9.0'} 194 | 195 | '@babel/template@7.25.0': 196 | resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} 197 | engines: {node: '>=6.9.0'} 198 | 199 | '@babel/traverse@7.25.6': 200 | resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} 201 | engines: {node: '>=6.9.0'} 202 | 203 | '@babel/types@7.25.6': 204 | resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} 205 | engines: {node: '>=6.9.0'} 206 | 207 | '@esbuild/aix-ppc64@0.21.5': 208 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 209 | engines: {node: '>=12'} 210 | cpu: [ppc64] 211 | os: [aix] 212 | 213 | '@esbuild/android-arm64@0.21.5': 214 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 215 | engines: {node: '>=12'} 216 | cpu: [arm64] 217 | os: [android] 218 | 219 | '@esbuild/android-arm@0.21.5': 220 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 221 | engines: {node: '>=12'} 222 | cpu: [arm] 223 | os: [android] 224 | 225 | '@esbuild/android-x64@0.21.5': 226 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 227 | engines: {node: '>=12'} 228 | cpu: [x64] 229 | os: [android] 230 | 231 | '@esbuild/darwin-arm64@0.21.5': 232 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 233 | engines: {node: '>=12'} 234 | cpu: [arm64] 235 | os: [darwin] 236 | 237 | '@esbuild/darwin-x64@0.21.5': 238 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 239 | engines: {node: '>=12'} 240 | cpu: [x64] 241 | os: [darwin] 242 | 243 | '@esbuild/freebsd-arm64@0.21.5': 244 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 245 | engines: {node: '>=12'} 246 | cpu: [arm64] 247 | os: [freebsd] 248 | 249 | '@esbuild/freebsd-x64@0.21.5': 250 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 251 | engines: {node: '>=12'} 252 | cpu: [x64] 253 | os: [freebsd] 254 | 255 | '@esbuild/linux-arm64@0.21.5': 256 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 257 | engines: {node: '>=12'} 258 | cpu: [arm64] 259 | os: [linux] 260 | 261 | '@esbuild/linux-arm@0.21.5': 262 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 263 | engines: {node: '>=12'} 264 | cpu: [arm] 265 | os: [linux] 266 | 267 | '@esbuild/linux-ia32@0.21.5': 268 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 269 | engines: {node: '>=12'} 270 | cpu: [ia32] 271 | os: [linux] 272 | 273 | '@esbuild/linux-loong64@0.21.5': 274 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 275 | engines: {node: '>=12'} 276 | cpu: [loong64] 277 | os: [linux] 278 | 279 | '@esbuild/linux-mips64el@0.21.5': 280 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 281 | engines: {node: '>=12'} 282 | cpu: [mips64el] 283 | os: [linux] 284 | 285 | '@esbuild/linux-ppc64@0.21.5': 286 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 287 | engines: {node: '>=12'} 288 | cpu: [ppc64] 289 | os: [linux] 290 | 291 | '@esbuild/linux-riscv64@0.21.5': 292 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 293 | engines: {node: '>=12'} 294 | cpu: [riscv64] 295 | os: [linux] 296 | 297 | '@esbuild/linux-s390x@0.21.5': 298 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 299 | engines: {node: '>=12'} 300 | cpu: [s390x] 301 | os: [linux] 302 | 303 | '@esbuild/linux-x64@0.21.5': 304 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 305 | engines: {node: '>=12'} 306 | cpu: [x64] 307 | os: [linux] 308 | 309 | '@esbuild/netbsd-x64@0.21.5': 310 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 311 | engines: {node: '>=12'} 312 | cpu: [x64] 313 | os: [netbsd] 314 | 315 | '@esbuild/openbsd-x64@0.21.5': 316 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 317 | engines: {node: '>=12'} 318 | cpu: [x64] 319 | os: [openbsd] 320 | 321 | '@esbuild/sunos-x64@0.21.5': 322 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 323 | engines: {node: '>=12'} 324 | cpu: [x64] 325 | os: [sunos] 326 | 327 | '@esbuild/win32-arm64@0.21.5': 328 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 329 | engines: {node: '>=12'} 330 | cpu: [arm64] 331 | os: [win32] 332 | 333 | '@esbuild/win32-ia32@0.21.5': 334 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 335 | engines: {node: '>=12'} 336 | cpu: [ia32] 337 | os: [win32] 338 | 339 | '@esbuild/win32-x64@0.21.5': 340 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 341 | engines: {node: '>=12'} 342 | cpu: [x64] 343 | os: [win32] 344 | 345 | '@eslint-community/eslint-utils@4.4.0': 346 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 347 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 348 | peerDependencies: 349 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 350 | 351 | '@eslint-community/regexpp@4.11.1': 352 | resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} 353 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 354 | 355 | '@eslint/eslintrc@2.1.4': 356 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 357 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 358 | 359 | '@eslint/js@8.57.1': 360 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} 361 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 362 | 363 | '@eslint/js@9.10.0': 364 | resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} 365 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 366 | 367 | '@floating-ui/core@0.7.3': 368 | resolution: {integrity: sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==} 369 | 370 | '@floating-ui/dom@0.5.4': 371 | resolution: {integrity: sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==} 372 | 373 | '@floating-ui/react-dom@0.7.2': 374 | resolution: {integrity: sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==} 375 | peerDependencies: 376 | react: '>=16.8.0' 377 | react-dom: '>=16.8.0' 378 | 379 | '@humanwhocodes/config-array@0.13.0': 380 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 381 | engines: {node: '>=10.10.0'} 382 | deprecated: Use @eslint/config-array instead 383 | 384 | '@humanwhocodes/module-importer@1.0.1': 385 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 386 | engines: {node: '>=12.22'} 387 | 388 | '@humanwhocodes/object-schema@2.0.3': 389 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 390 | deprecated: Use @eslint/object-schema instead 391 | 392 | '@isaacs/cliui@8.0.2': 393 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 394 | engines: {node: '>=12'} 395 | 396 | '@jridgewell/gen-mapping@0.3.5': 397 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 398 | engines: {node: '>=6.0.0'} 399 | 400 | '@jridgewell/resolve-uri@3.1.2': 401 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 402 | engines: {node: '>=6.0.0'} 403 | 404 | '@jridgewell/set-array@1.2.1': 405 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 406 | engines: {node: '>=6.0.0'} 407 | 408 | '@jridgewell/sourcemap-codec@1.5.0': 409 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 410 | 411 | '@jridgewell/trace-mapping@0.3.25': 412 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 413 | 414 | '@mediapipe/tasks-vision@0.10.8': 415 | resolution: {integrity: sha512-Rp7ll8BHrKB3wXaRFKhrltwZl1CiXGdibPxuWXvqGnKTnv8fqa/nvftYNuSbf+pbJWKYCXdBtYTITdAUTGGh0Q==} 416 | 417 | '@monogrid/gainmap-js@3.0.6': 418 | resolution: {integrity: sha512-ireqJg7cw0tUn/JePDG8rAL7RyXgUKSDbjYdiygkrnye1WuKGLAWDBwF/ICwCwJ9iZBAF5caU8gSu+c34HLGdQ==} 419 | peerDependencies: 420 | three: '>= 0.159.0' 421 | 422 | '@nodelib/fs.scandir@2.1.5': 423 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 424 | engines: {node: '>= 8'} 425 | 426 | '@nodelib/fs.stat@2.0.5': 427 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 428 | engines: {node: '>= 8'} 429 | 430 | '@nodelib/fs.walk@1.2.8': 431 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 432 | engines: {node: '>= 8'} 433 | 434 | '@pkgjs/parseargs@0.11.0': 435 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 436 | engines: {node: '>=14'} 437 | 438 | '@radix-ui/primitive@1.0.0': 439 | resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} 440 | 441 | '@radix-ui/react-arrow@1.0.2': 442 | resolution: {integrity: sha512-fqYwhhI9IarZ0ll2cUSfKuXHlJK0qE4AfnRrPBbRwEH/4mGQn04/QFGomLi8TXWIdv9WJk//KgGm+aDxVIr1wA==} 443 | peerDependencies: 444 | react: ^16.8 || ^17.0 || ^18.0 445 | react-dom: ^16.8 || ^17.0 || ^18.0 446 | 447 | '@radix-ui/react-compose-refs@1.0.0': 448 | resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} 449 | peerDependencies: 450 | react: ^16.8 || ^17.0 || ^18.0 451 | 452 | '@radix-ui/react-context@1.0.0': 453 | resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} 454 | peerDependencies: 455 | react: ^16.8 || ^17.0 || ^18.0 456 | 457 | '@radix-ui/react-dismissable-layer@1.0.3': 458 | resolution: {integrity: sha512-nXZOvFjOuHS1ovumntGV7NNoLaEp9JEvTht3MBjP44NSW5hUKj/8OnfN3+8WmB+CEhN44XaGhpHoSsUIEl5P7Q==} 459 | peerDependencies: 460 | react: ^16.8 || ^17.0 || ^18.0 461 | react-dom: ^16.8 || ^17.0 || ^18.0 462 | 463 | '@radix-ui/react-icons@1.3.0': 464 | resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} 465 | peerDependencies: 466 | react: ^16.x || ^17.x || ^18.x 467 | 468 | '@radix-ui/react-id@1.0.0': 469 | resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} 470 | peerDependencies: 471 | react: ^16.8 || ^17.0 || ^18.0 472 | 473 | '@radix-ui/react-popper@1.1.1': 474 | resolution: {integrity: sha512-keYDcdMPNMjSC8zTsZ8wezUMiWM9Yj14wtF3s0PTIs9srnEPC9Kt2Gny1T3T81mmSeyDjZxsD9N5WCwNNb712w==} 475 | peerDependencies: 476 | react: ^16.8 || ^17.0 || ^18.0 477 | react-dom: ^16.8 || ^17.0 || ^18.0 478 | 479 | '@radix-ui/react-portal@1.0.2': 480 | resolution: {integrity: sha512-swu32idoCW7KA2VEiUZGBSu9nB6qwGdV6k6HYhUoOo3M1FFpD+VgLzUqtt3mwL1ssz7r2x8MggpLSQach2Xy/Q==} 481 | peerDependencies: 482 | react: ^16.8 || ^17.0 || ^18.0 483 | react-dom: ^16.8 || ^17.0 || ^18.0 484 | 485 | '@radix-ui/react-presence@1.0.0': 486 | resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} 487 | peerDependencies: 488 | react: ^16.8 || ^17.0 || ^18.0 489 | react-dom: ^16.8 || ^17.0 || ^18.0 490 | 491 | '@radix-ui/react-primitive@1.0.2': 492 | resolution: {integrity: sha512-zY6G5Qq4R8diFPNwtyoLRZBxzu1Z+SXMlfYpChN7Dv8gvmx9X3qhDqiLWvKseKVJMuedFeU/Sa0Sy/Ia+t06Dw==} 493 | peerDependencies: 494 | react: ^16.8 || ^17.0 || ^18.0 495 | react-dom: ^16.8 || ^17.0 || ^18.0 496 | 497 | '@radix-ui/react-slot@1.0.1': 498 | resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} 499 | peerDependencies: 500 | react: ^16.8 || ^17.0 || ^18.0 501 | 502 | '@radix-ui/react-tooltip@1.0.5': 503 | resolution: {integrity: sha512-cDKVcfzyO6PpckZekODJZDe5ZxZ2fCZlzKzTmPhe4mX9qTHRfLcKgqb0OKf22xLwDequ2tVleim+ZYx3rabD5w==} 504 | peerDependencies: 505 | react: ^16.8 || ^17.0 || ^18.0 506 | react-dom: ^16.8 || ^17.0 || ^18.0 507 | 508 | '@radix-ui/react-use-callback-ref@1.0.0': 509 | resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} 510 | peerDependencies: 511 | react: ^16.8 || ^17.0 || ^18.0 512 | 513 | '@radix-ui/react-use-controllable-state@1.0.0': 514 | resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} 515 | peerDependencies: 516 | react: ^16.8 || ^17.0 || ^18.0 517 | 518 | '@radix-ui/react-use-escape-keydown@1.0.2': 519 | resolution: {integrity: sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==} 520 | peerDependencies: 521 | react: ^16.8 || ^17.0 || ^18.0 522 | 523 | '@radix-ui/react-use-layout-effect@1.0.0': 524 | resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} 525 | peerDependencies: 526 | react: ^16.8 || ^17.0 || ^18.0 527 | 528 | '@radix-ui/react-use-rect@1.0.0': 529 | resolution: {integrity: sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==} 530 | peerDependencies: 531 | react: ^16.8 || ^17.0 || ^18.0 532 | 533 | '@radix-ui/react-use-size@1.0.0': 534 | resolution: {integrity: sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==} 535 | peerDependencies: 536 | react: ^16.8 || ^17.0 || ^18.0 537 | 538 | '@radix-ui/react-visually-hidden@1.0.2': 539 | resolution: {integrity: sha512-qirnJxtYn73HEk1rXL12/mXnu2rwsNHDID10th2JGtdK25T9wX+mxRmGt7iPSahw512GbZOc0syZX1nLQGoEOg==} 540 | peerDependencies: 541 | react: ^16.8 || ^17.0 || ^18.0 542 | react-dom: ^16.8 || ^17.0 || ^18.0 543 | 544 | '@radix-ui/rect@1.0.0': 545 | resolution: {integrity: sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==} 546 | 547 | '@react-spring/animated@9.6.1': 548 | resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==} 549 | peerDependencies: 550 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 551 | 552 | '@react-spring/core@9.6.1': 553 | resolution: {integrity: sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==} 554 | peerDependencies: 555 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 556 | 557 | '@react-spring/rafz@9.6.1': 558 | resolution: {integrity: sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==} 559 | 560 | '@react-spring/shared@9.6.1': 561 | resolution: {integrity: sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==} 562 | peerDependencies: 563 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 564 | 565 | '@react-spring/three@9.6.1': 566 | resolution: {integrity: sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==} 567 | peerDependencies: 568 | '@react-three/fiber': '>=6.0' 569 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 570 | three: '>=0.126' 571 | 572 | '@react-spring/types@9.6.1': 573 | resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==} 574 | 575 | '@react-three/drei@9.112.0': 576 | resolution: {integrity: sha512-te+4tcNiRv3QizD04cg25oX51uUMVG5Y3iUaIX8tKi8aW3j7UM6XCFSKVYNOiT6P+d5h/ruSd5naX7oFvp3QOQ==} 577 | peerDependencies: 578 | '@react-three/fiber': '>=8.0' 579 | react: '>=18.0' 580 | react-dom: '>=18.0' 581 | three: '>=0.137' 582 | peerDependenciesMeta: 583 | react-dom: 584 | optional: true 585 | 586 | '@react-three/fiber@8.17.7': 587 | resolution: {integrity: sha512-52/TZ0pGdEtjs1bSCePrJe8+5hzYzC8/O4bwx0NXc3GZ3uRCr5Eu+CVsr7BUn2uxd825Zjbup0OXKSDRQ70qiQ==} 588 | peerDependencies: 589 | expo: '>=43.0' 590 | expo-asset: '>=8.4' 591 | expo-file-system: '>=11.0' 592 | expo-gl: '>=11.0' 593 | react: '>=18.0' 594 | react-dom: '>=18.0' 595 | react-native: '>=0.64' 596 | three: '>=0.133' 597 | peerDependenciesMeta: 598 | expo: 599 | optional: true 600 | expo-asset: 601 | optional: true 602 | expo-file-system: 603 | optional: true 604 | expo-gl: 605 | optional: true 606 | react-dom: 607 | optional: true 608 | react-native: 609 | optional: true 610 | 611 | '@rollup/rollup-android-arm-eabi@4.22.1': 612 | resolution: {integrity: sha512-GrXxNVBes13Q3wSBjdZlmu4VulFhfNs1eP2/pX5dmx6cE1XgfV2/BfqdGt4d2Z7Zqp+qnYSf7zvIB4buc+2DwA==} 613 | cpu: [arm] 614 | os: [android] 615 | 616 | '@rollup/rollup-android-arm64@4.22.1': 617 | resolution: {integrity: sha512-Cr/dpKRc4tjK13SCZJrSDXSaKjL/fekn04BWMCJ+Pj4vPCp8rixvtArrnWUYycOdRNi7kx3MSClcvEP7C2nvCw==} 618 | cpu: [arm64] 619 | os: [android] 620 | 621 | '@rollup/rollup-darwin-arm64@4.22.1': 622 | resolution: {integrity: sha512-IwEyoeCZoO1lpY5Er5t3UK/Aq5q2W/ubLmu3pYW4as0htn4NbJagBaVNr1aVhRTXUxrYvcPhxQCqodShnocLdA==} 623 | cpu: [arm64] 624 | os: [darwin] 625 | 626 | '@rollup/rollup-darwin-x64@4.22.1': 627 | resolution: {integrity: sha512-LSbJhEOTz557VBcJOWspdGyiFbMTNgLxbWnup7bDj1elpNTK04E3M1qLlvGzPKPmk+uG6XlbT8xAUSKkyn0g8w==} 628 | cpu: [x64] 629 | os: [darwin] 630 | 631 | '@rollup/rollup-linux-arm-gnueabihf@4.22.1': 632 | resolution: {integrity: sha512-F4DgRk//u604Np1eFoGUzE9TgGE6LMvjnX2tM24ePB34JlED9utc4T3iK5x8CWC/agH+zuN7q/hJF5AtWR+JOA==} 633 | cpu: [arm] 634 | os: [linux] 635 | 636 | '@rollup/rollup-linux-arm-musleabihf@4.22.1': 637 | resolution: {integrity: sha512-Gl5pbijcb6QOJRvHkmU/O1G65ZnKxwSHhPQRuGdmcxmX/mBM+wNHoai7wvpCoPVsdhkc+KUqgu/MydP8wovGAA==} 638 | cpu: [arm] 639 | os: [linux] 640 | 641 | '@rollup/rollup-linux-arm64-gnu@4.22.1': 642 | resolution: {integrity: sha512-GsvZqPloVOrh3G2nmZmwNSNGqWLf3L3a0nFDO1zecwucAYxEFgZkrvqQrVMT+zUjChaHPBp0eoTOQMWSKFcV8w==} 643 | cpu: [arm64] 644 | os: [linux] 645 | 646 | '@rollup/rollup-linux-arm64-musl@4.22.1': 647 | resolution: {integrity: sha512-+vZ1jrJeEEYLbMqeKDfgcl8v7zjymdAGTr7xUdQL6c4nC+S+BZHo3Mrp/9ij2qpAveC0Iaz9DIiFplcO0joapQ==} 648 | cpu: [arm64] 649 | os: [linux] 650 | 651 | '@rollup/rollup-linux-powerpc64le-gnu@4.22.1': 652 | resolution: {integrity: sha512-6psD9nKw+wLj9bMhArTkzKt5etA6kb+cBJQws4MovI9gQSRkdX4nyYZofBfgTtaZtymQl7uRfe1I75guePal5A==} 653 | cpu: [ppc64] 654 | os: [linux] 655 | 656 | '@rollup/rollup-linux-riscv64-gnu@4.22.1': 657 | resolution: {integrity: sha512-xzbqImk1h5abj0bPU5XQVrqBhLHl2zTygG6+vES2TrgmNSiaPzn39aqI8QtdqmGYz507ZVI2qocTTfVwW23SmQ==} 658 | cpu: [riscv64] 659 | os: [linux] 660 | 661 | '@rollup/rollup-linux-s390x-gnu@4.22.1': 662 | resolution: {integrity: sha512-Hz5iwqYv08PpEC75z0GAgLlOY+cLAb0PVx578mLW0naugNfG0WQqoDzQoJWiivmtTdgmwoH5YXDnjZJb7MDlhA==} 663 | cpu: [s390x] 664 | os: [linux] 665 | 666 | '@rollup/rollup-linux-x64-gnu@4.22.1': 667 | resolution: {integrity: sha512-ot1DPlQZGGiZYNyE/PF3jbT6juuG0W5oiguHQEvjoZZ3+FSxMfdJnBz1P71QeqICSOlSFG9Z31oA/uXyuxDEVw==} 668 | cpu: [x64] 669 | os: [linux] 670 | 671 | '@rollup/rollup-linux-x64-musl@4.22.1': 672 | resolution: {integrity: sha512-euksHNkKlXS9RKKHSBBPtloSEUGPg1eRVGfOkXSSIj5W9LdkMfOefsTlVf2g8kuayZW/98nIJ83Fnou9OaZNXA==} 673 | cpu: [x64] 674 | os: [linux] 675 | 676 | '@rollup/rollup-win32-arm64-msvc@4.22.1': 677 | resolution: {integrity: sha512-jDS/ShZxlA3HKtgm25CcbApOVsr/0Zkdu/E+3xK4UO0PT912yqyh7jNpTmZZJAiPDQoSDI9FOqrjSbnlpW6IFg==} 678 | cpu: [arm64] 679 | os: [win32] 680 | 681 | '@rollup/rollup-win32-ia32-msvc@4.22.1': 682 | resolution: {integrity: sha512-yNEeuvH2b+susSgUCfpRelIRjB1CmErHyqA7KsQ/NCjY401rpChVqw5df/H5AUPCKNDqgBMbtrtl9F6z7N9LTg==} 683 | cpu: [ia32] 684 | os: [win32] 685 | 686 | '@rollup/rollup-win32-x64-msvc@4.22.1': 687 | resolution: {integrity: sha512-UgdylcqjcgJSNMhrjMJpJ4T3zriTmiUd2COh1mJHwDShrhhMkpZ/j4M5e4GsvBFviaxtrJtufr0FnKfm2UfOSw==} 688 | cpu: [x64] 689 | os: [win32] 690 | 691 | '@rtsao/scc@1.1.0': 692 | resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} 693 | 694 | '@stitches/react@1.2.8': 695 | resolution: {integrity: sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==} 696 | peerDependencies: 697 | react: '>= 16.3.0' 698 | 699 | '@tweenjs/tween.js@23.1.3': 700 | resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==} 701 | 702 | '@types/babel__core@7.20.5': 703 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 704 | 705 | '@types/babel__generator@7.6.8': 706 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 707 | 708 | '@types/babel__template@7.4.4': 709 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 710 | 711 | '@types/babel__traverse@7.20.6': 712 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 713 | 714 | '@types/debounce@1.2.4': 715 | resolution: {integrity: sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==} 716 | 717 | '@types/draco3d@1.4.10': 718 | resolution: {integrity: sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==} 719 | 720 | '@types/estree@1.0.5': 721 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 722 | 723 | '@types/json5@0.0.29': 724 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 725 | 726 | '@types/node@22.5.5': 727 | resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} 728 | 729 | '@types/offscreencanvas@2019.7.3': 730 | resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} 731 | 732 | '@types/prop-types@15.7.13': 733 | resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} 734 | 735 | '@types/react-dom@18.3.0': 736 | resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} 737 | 738 | '@types/react-reconciler@0.26.7': 739 | resolution: {integrity: sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==} 740 | 741 | '@types/react-reconciler@0.28.8': 742 | resolution: {integrity: sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==} 743 | 744 | '@types/react@18.3.8': 745 | resolution: {integrity: sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==} 746 | 747 | '@types/stats.js@0.17.3': 748 | resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} 749 | 750 | '@types/three@0.163.0': 751 | resolution: {integrity: sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==} 752 | 753 | '@types/three@0.167.2': 754 | resolution: {integrity: sha512-onxnIUNYpXcZJ5DTiIsxfnr4F9kAWkkxAUWx5yqzz/u0a4IygCLCjMuOl2DEeCxyJdJ2nOJZvKpu48sBMqfmkQ==} 755 | 756 | '@types/uuid@10.0.0': 757 | resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} 758 | 759 | '@types/webxr@0.5.20': 760 | resolution: {integrity: sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==} 761 | 762 | '@typescript-eslint/eslint-plugin@8.6.0': 763 | resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==} 764 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 765 | peerDependencies: 766 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 767 | eslint: ^8.57.0 || ^9.0.0 768 | typescript: '*' 769 | peerDependenciesMeta: 770 | typescript: 771 | optional: true 772 | 773 | '@typescript-eslint/parser@8.6.0': 774 | resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==} 775 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 776 | peerDependencies: 777 | eslint: ^8.57.0 || ^9.0.0 778 | typescript: '*' 779 | peerDependenciesMeta: 780 | typescript: 781 | optional: true 782 | 783 | '@typescript-eslint/scope-manager@8.6.0': 784 | resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} 785 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 786 | 787 | '@typescript-eslint/type-utils@8.6.0': 788 | resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==} 789 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 790 | peerDependencies: 791 | typescript: '*' 792 | peerDependenciesMeta: 793 | typescript: 794 | optional: true 795 | 796 | '@typescript-eslint/types@8.6.0': 797 | resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} 798 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 799 | 800 | '@typescript-eslint/typescript-estree@8.6.0': 801 | resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} 802 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 803 | peerDependencies: 804 | typescript: '*' 805 | peerDependenciesMeta: 806 | typescript: 807 | optional: true 808 | 809 | '@typescript-eslint/utils@8.6.0': 810 | resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} 811 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 812 | peerDependencies: 813 | eslint: ^8.57.0 || ^9.0.0 814 | 815 | '@typescript-eslint/visitor-keys@8.6.0': 816 | resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} 817 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 818 | 819 | '@ungap/structured-clone@1.2.0': 820 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 821 | 822 | '@use-gesture/core@10.3.1': 823 | resolution: {integrity: sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==} 824 | 825 | '@use-gesture/react@10.3.1': 826 | resolution: {integrity: sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==} 827 | peerDependencies: 828 | react: '>= 16.8.0' 829 | 830 | '@utsubo/events@0.1.7': 831 | resolution: {integrity: sha512-WB/GEj/0h27Bz8rJ0+CBtNz5mLT79ne1OjB7PUM4n0qLBqEDwm6yBzZC3j6tasHjlBPJDYZiBVIA1glaMlgZ5g==} 832 | peerDependencies: 833 | react: '>=16.8.0' 834 | peerDependenciesMeta: 835 | react: 836 | optional: true 837 | 838 | '@vitejs/plugin-react@4.3.1': 839 | resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} 840 | engines: {node: ^14.18.0 || >=16.0.0} 841 | peerDependencies: 842 | vite: ^4.2.0 || ^5.0.0 843 | 844 | acorn-jsx@5.3.2: 845 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 846 | peerDependencies: 847 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 848 | 849 | acorn@8.12.1: 850 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 851 | engines: {node: '>=0.4.0'} 852 | hasBin: true 853 | 854 | ajv@6.12.6: 855 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 856 | 857 | ansi-regex@5.0.1: 858 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 859 | engines: {node: '>=8'} 860 | 861 | ansi-regex@6.1.0: 862 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 863 | engines: {node: '>=12'} 864 | 865 | ansi-styles@3.2.1: 866 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 867 | engines: {node: '>=4'} 868 | 869 | ansi-styles@4.3.0: 870 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 871 | engines: {node: '>=8'} 872 | 873 | ansi-styles@6.2.1: 874 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 875 | engines: {node: '>=12'} 876 | 877 | any-promise@1.3.0: 878 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 879 | 880 | anymatch@3.1.3: 881 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 882 | engines: {node: '>= 8'} 883 | 884 | arg@5.0.2: 885 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 886 | 887 | argparse@2.0.1: 888 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 889 | 890 | array-buffer-byte-length@1.0.1: 891 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 892 | engines: {node: '>= 0.4'} 893 | 894 | array-includes@3.1.8: 895 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 896 | engines: {node: '>= 0.4'} 897 | 898 | array.prototype.findlastindex@1.2.5: 899 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} 900 | engines: {node: '>= 0.4'} 901 | 902 | array.prototype.flat@1.3.2: 903 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 904 | engines: {node: '>= 0.4'} 905 | 906 | array.prototype.flatmap@1.3.2: 907 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 908 | engines: {node: '>= 0.4'} 909 | 910 | arraybuffer.prototype.slice@1.0.3: 911 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} 912 | engines: {node: '>= 0.4'} 913 | 914 | assign-symbols@1.0.0: 915 | resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} 916 | engines: {node: '>=0.10.0'} 917 | 918 | attr-accept@2.2.5: 919 | resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==} 920 | engines: {node: '>=4'} 921 | 922 | autoprefixer@10.4.20: 923 | resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} 924 | engines: {node: ^10 || ^12 || >=14} 925 | hasBin: true 926 | peerDependencies: 927 | postcss: ^8.1.0 928 | 929 | available-typed-arrays@1.0.7: 930 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 931 | engines: {node: '>= 0.4'} 932 | 933 | balanced-match@1.0.2: 934 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 935 | 936 | base64-js@1.5.1: 937 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 938 | 939 | bidi-js@1.0.3: 940 | resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} 941 | 942 | binary-extensions@2.3.0: 943 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 944 | engines: {node: '>=8'} 945 | 946 | brace-expansion@1.1.11: 947 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 948 | 949 | brace-expansion@2.0.1: 950 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 951 | 952 | braces@3.0.3: 953 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 954 | engines: {node: '>=8'} 955 | 956 | browserslist@4.23.3: 957 | resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} 958 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 959 | hasBin: true 960 | 961 | buffer@6.0.3: 962 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 963 | 964 | call-bind@1.0.7: 965 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 966 | engines: {node: '>= 0.4'} 967 | 968 | callsites@3.1.0: 969 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 970 | engines: {node: '>=6'} 971 | 972 | camelcase-css@2.0.1: 973 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 974 | engines: {node: '>= 6'} 975 | 976 | camera-controls@2.9.0: 977 | resolution: {integrity: sha512-TpCujnP0vqPppTXXJRYpvIy0xq9Tro6jQf2iYUxlDpPCNxkvE/XGaTuwIxnhINOkVP/ob2CRYXtY3iVYXeMEzA==} 978 | peerDependencies: 979 | three: '>=0.126.1' 980 | 981 | caniuse-lite@1.0.30001662: 982 | resolution: {integrity: sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==} 983 | 984 | chalk@2.4.2: 985 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 986 | engines: {node: '>=4'} 987 | 988 | chalk@4.1.2: 989 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 990 | engines: {node: '>=10'} 991 | 992 | chokidar@3.6.0: 993 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 994 | engines: {node: '>= 8.10.0'} 995 | 996 | color-convert@1.9.3: 997 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 998 | 999 | color-convert@2.0.1: 1000 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1001 | engines: {node: '>=7.0.0'} 1002 | 1003 | color-name@1.1.3: 1004 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1005 | 1006 | color-name@1.1.4: 1007 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1008 | 1009 | colord@2.9.3: 1010 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 1011 | 1012 | commander@4.1.1: 1013 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1014 | engines: {node: '>= 6'} 1015 | 1016 | concat-map@0.0.1: 1017 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1018 | 1019 | convert-source-map@2.0.0: 1020 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1021 | 1022 | core-util-is@1.0.3: 1023 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 1024 | 1025 | cross-env@7.0.3: 1026 | resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} 1027 | engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} 1028 | hasBin: true 1029 | 1030 | cross-spawn@7.0.3: 1031 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1032 | engines: {node: '>= 8'} 1033 | 1034 | cssesc@3.0.0: 1035 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1036 | engines: {node: '>=4'} 1037 | hasBin: true 1038 | 1039 | csstype@3.1.3: 1040 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1041 | 1042 | data-view-buffer@1.0.1: 1043 | resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} 1044 | engines: {node: '>= 0.4'} 1045 | 1046 | data-view-byte-length@1.0.1: 1047 | resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} 1048 | engines: {node: '>= 0.4'} 1049 | 1050 | data-view-byte-offset@1.0.0: 1051 | resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} 1052 | engines: {node: '>= 0.4'} 1053 | 1054 | debounce@1.2.1: 1055 | resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} 1056 | 1057 | debug@3.2.7: 1058 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1059 | peerDependencies: 1060 | supports-color: '*' 1061 | peerDependenciesMeta: 1062 | supports-color: 1063 | optional: true 1064 | 1065 | debug@4.3.7: 1066 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 1067 | engines: {node: '>=6.0'} 1068 | peerDependencies: 1069 | supports-color: '*' 1070 | peerDependenciesMeta: 1071 | supports-color: 1072 | optional: true 1073 | 1074 | deep-is@0.1.4: 1075 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1076 | 1077 | define-data-property@1.1.4: 1078 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 1079 | engines: {node: '>= 0.4'} 1080 | 1081 | define-properties@1.2.1: 1082 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1083 | engines: {node: '>= 0.4'} 1084 | 1085 | dequal@2.0.3: 1086 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1087 | engines: {node: '>=6'} 1088 | 1089 | detect-gpu@5.0.48: 1090 | resolution: {integrity: sha512-AdG8ur7loIIIzG8XBjNiLk6Seq4jGp7GAL2TEsjq7etgK8ia6ha3rTbBCRCHsnwYiLqYn4uWJfS7hVwZz7DKNQ==} 1091 | 1092 | didyoumean@1.2.2: 1093 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1094 | 1095 | dlv@1.1.3: 1096 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1097 | 1098 | doctrine@2.1.0: 1099 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1100 | engines: {node: '>=0.10.0'} 1101 | 1102 | doctrine@3.0.0: 1103 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1104 | engines: {node: '>=6.0.0'} 1105 | 1106 | draco3d@1.5.7: 1107 | resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==} 1108 | 1109 | eastasianwidth@0.2.0: 1110 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1111 | 1112 | electron-to-chromium@1.5.26: 1113 | resolution: {integrity: sha512-Z+OMe9M/V6Ep9n/52+b7lkvYEps26z4Yz3vjWL1V61W0q+VLF1pOHhMY17sa4roz4AWmULSI8E6SAojZA5L0YQ==} 1114 | 1115 | emoji-regex@8.0.0: 1116 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1117 | 1118 | emoji-regex@9.2.2: 1119 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1120 | 1121 | es-abstract@1.23.3: 1122 | resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} 1123 | engines: {node: '>= 0.4'} 1124 | 1125 | es-define-property@1.0.0: 1126 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 1127 | engines: {node: '>= 0.4'} 1128 | 1129 | es-errors@1.3.0: 1130 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1131 | engines: {node: '>= 0.4'} 1132 | 1133 | es-object-atoms@1.0.0: 1134 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} 1135 | engines: {node: '>= 0.4'} 1136 | 1137 | es-set-tostringtag@2.0.3: 1138 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} 1139 | engines: {node: '>= 0.4'} 1140 | 1141 | es-shim-unscopables@1.0.2: 1142 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1143 | 1144 | es-to-primitive@1.2.1: 1145 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1146 | engines: {node: '>= 0.4'} 1147 | 1148 | esbuild@0.21.5: 1149 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 1150 | engines: {node: '>=12'} 1151 | hasBin: true 1152 | 1153 | escalade@3.2.0: 1154 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1155 | engines: {node: '>=6'} 1156 | 1157 | escape-string-regexp@1.0.5: 1158 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1159 | engines: {node: '>=0.8.0'} 1160 | 1161 | escape-string-regexp@4.0.0: 1162 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1163 | engines: {node: '>=10'} 1164 | 1165 | eslint-import-resolver-node@0.3.9: 1166 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1167 | 1168 | eslint-module-utils@2.11.0: 1169 | resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} 1170 | engines: {node: '>=4'} 1171 | peerDependencies: 1172 | '@typescript-eslint/parser': '*' 1173 | eslint: '*' 1174 | eslint-import-resolver-node: '*' 1175 | eslint-import-resolver-typescript: '*' 1176 | eslint-import-resolver-webpack: '*' 1177 | peerDependenciesMeta: 1178 | '@typescript-eslint/parser': 1179 | optional: true 1180 | eslint: 1181 | optional: true 1182 | eslint-import-resolver-node: 1183 | optional: true 1184 | eslint-import-resolver-typescript: 1185 | optional: true 1186 | eslint-import-resolver-webpack: 1187 | optional: true 1188 | 1189 | eslint-plugin-import@2.30.0: 1190 | resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} 1191 | engines: {node: '>=4'} 1192 | peerDependencies: 1193 | '@typescript-eslint/parser': '*' 1194 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1195 | peerDependenciesMeta: 1196 | '@typescript-eslint/parser': 1197 | optional: true 1198 | 1199 | eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614: 1200 | resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==} 1201 | engines: {node: '>=10'} 1202 | peerDependencies: 1203 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 1204 | 1205 | eslint-plugin-react-refresh@0.4.12: 1206 | resolution: {integrity: sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==} 1207 | peerDependencies: 1208 | eslint: '>=7' 1209 | 1210 | eslint-scope@7.2.2: 1211 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1212 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1213 | 1214 | eslint-visitor-keys@3.4.3: 1215 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1216 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1217 | 1218 | eslint@8.57.1: 1219 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} 1220 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1221 | hasBin: true 1222 | 1223 | espree@9.6.1: 1224 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1225 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1226 | 1227 | esquery@1.6.0: 1228 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1229 | engines: {node: '>=0.10'} 1230 | 1231 | esrecurse@4.3.0: 1232 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1233 | engines: {node: '>=4.0'} 1234 | 1235 | estraverse@5.3.0: 1236 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1237 | engines: {node: '>=4.0'} 1238 | 1239 | esutils@2.0.3: 1240 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1241 | engines: {node: '>=0.10.0'} 1242 | 1243 | eventemitter3@4.0.7: 1244 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 1245 | 1246 | extend-shallow@2.0.1: 1247 | resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} 1248 | engines: {node: '>=0.10.0'} 1249 | 1250 | extend-shallow@3.0.2: 1251 | resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} 1252 | engines: {node: '>=0.10.0'} 1253 | 1254 | fast-deep-equal@3.1.3: 1255 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1256 | 1257 | fast-glob@3.3.2: 1258 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1259 | engines: {node: '>=8.6.0'} 1260 | 1261 | fast-json-stable-stringify@2.1.0: 1262 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1263 | 1264 | fast-levenshtein@2.0.6: 1265 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1266 | 1267 | fastq@1.17.1: 1268 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1269 | 1270 | fflate@0.6.10: 1271 | resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} 1272 | 1273 | fflate@0.8.2: 1274 | resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} 1275 | 1276 | file-entry-cache@6.0.1: 1277 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1278 | engines: {node: ^10.12.0 || >=12.0.0} 1279 | 1280 | file-selector@0.5.0: 1281 | resolution: {integrity: sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==} 1282 | engines: {node: '>= 10'} 1283 | 1284 | fill-range@7.1.1: 1285 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1286 | engines: {node: '>=8'} 1287 | 1288 | find-up@5.0.0: 1289 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1290 | engines: {node: '>=10'} 1291 | 1292 | flat-cache@3.2.0: 1293 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1294 | engines: {node: ^10.12.0 || >=12.0.0} 1295 | 1296 | flatted@3.3.1: 1297 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1298 | 1299 | for-each@0.3.3: 1300 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1301 | 1302 | for-in@1.0.2: 1303 | resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} 1304 | engines: {node: '>=0.10.0'} 1305 | 1306 | foreground-child@3.3.0: 1307 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1308 | engines: {node: '>=14'} 1309 | 1310 | fraction.js@4.3.7: 1311 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1312 | 1313 | framer-motion@11.5.5: 1314 | resolution: {integrity: sha512-4srkT940jYA3bdQRglxod0KoqDvcghYri1A6bTjT02IXvq/EAd6A0tgUnJc5Q2ahhf8n959aLD3yO+XmLmE8OQ==} 1315 | peerDependencies: 1316 | '@emotion/is-prop-valid': '*' 1317 | react: ^18.0.0 1318 | react-dom: ^18.0.0 1319 | peerDependenciesMeta: 1320 | '@emotion/is-prop-valid': 1321 | optional: true 1322 | react: 1323 | optional: true 1324 | react-dom: 1325 | optional: true 1326 | 1327 | fs.realpath@1.0.0: 1328 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1329 | 1330 | fsevents@2.3.3: 1331 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1332 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1333 | os: [darwin] 1334 | 1335 | function-bind@1.1.2: 1336 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1337 | 1338 | function.prototype.name@1.1.6: 1339 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1340 | engines: {node: '>= 0.4'} 1341 | 1342 | functions-have-names@1.2.3: 1343 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1344 | 1345 | gensync@1.0.0-beta.2: 1346 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1347 | engines: {node: '>=6.9.0'} 1348 | 1349 | get-intrinsic@1.2.4: 1350 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 1351 | engines: {node: '>= 0.4'} 1352 | 1353 | get-symbol-description@1.0.2: 1354 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 1355 | engines: {node: '>= 0.4'} 1356 | 1357 | get-value@2.0.6: 1358 | resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} 1359 | engines: {node: '>=0.10.0'} 1360 | 1361 | glob-parent@5.1.2: 1362 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1363 | engines: {node: '>= 6'} 1364 | 1365 | glob-parent@6.0.2: 1366 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1367 | engines: {node: '>=10.13.0'} 1368 | 1369 | glob@10.4.5: 1370 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1371 | hasBin: true 1372 | 1373 | glob@7.2.3: 1374 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1375 | deprecated: Glob versions prior to v9 are no longer supported 1376 | 1377 | globals@11.12.0: 1378 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1379 | engines: {node: '>=4'} 1380 | 1381 | globals@13.24.0: 1382 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1383 | engines: {node: '>=8'} 1384 | 1385 | globals@15.9.0: 1386 | resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} 1387 | engines: {node: '>=18'} 1388 | 1389 | globalthis@1.0.4: 1390 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 1391 | engines: {node: '>= 0.4'} 1392 | 1393 | glsl-noise@0.0.0: 1394 | resolution: {integrity: sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==} 1395 | 1396 | glsl-token-functions@1.0.1: 1397 | resolution: {integrity: sha512-EigGhp1g+aUVeUNY7H1o5tL/bnwIB3/FcRREPr2E7Du+/UDXN24hDkaZ3e4aWHDjHr9lJ6YHXMISkwhUYg9UOg==} 1398 | 1399 | glsl-token-string@1.0.1: 1400 | resolution: {integrity: sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==} 1401 | 1402 | glsl-tokenizer@2.1.5: 1403 | resolution: {integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==} 1404 | 1405 | gopd@1.0.1: 1406 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1407 | 1408 | graphemer@1.4.0: 1409 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1410 | 1411 | has-bigints@1.0.2: 1412 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1413 | 1414 | has-flag@3.0.0: 1415 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1416 | engines: {node: '>=4'} 1417 | 1418 | has-flag@4.0.0: 1419 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1420 | engines: {node: '>=8'} 1421 | 1422 | has-property-descriptors@1.0.2: 1423 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 1424 | 1425 | has-proto@1.0.3: 1426 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 1427 | engines: {node: '>= 0.4'} 1428 | 1429 | has-symbols@1.0.3: 1430 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1431 | engines: {node: '>= 0.4'} 1432 | 1433 | has-tostringtag@1.0.2: 1434 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 1435 | engines: {node: '>= 0.4'} 1436 | 1437 | hasown@2.0.2: 1438 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1439 | engines: {node: '>= 0.4'} 1440 | 1441 | hls.js@1.3.5: 1442 | resolution: {integrity: sha512-uybAvKS6uDe0MnWNEPnO0krWVr+8m2R0hJ/viql8H3MVK+itq8gGQuIYoFHL3rECkIpNH98Lw8YuuWMKZxp3Ew==} 1443 | 1444 | ieee754@1.2.1: 1445 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1446 | 1447 | ignore@5.3.2: 1448 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1449 | engines: {node: '>= 4'} 1450 | 1451 | immediate@3.0.6: 1452 | resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} 1453 | 1454 | import-fresh@3.3.0: 1455 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1456 | engines: {node: '>=6'} 1457 | 1458 | imurmurhash@0.1.4: 1459 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1460 | engines: {node: '>=0.8.19'} 1461 | 1462 | inflight@1.0.6: 1463 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1464 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1465 | 1466 | inherits@2.0.4: 1467 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1468 | 1469 | internal-slot@1.0.7: 1470 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} 1471 | engines: {node: '>= 0.4'} 1472 | 1473 | is-array-buffer@3.0.4: 1474 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 1475 | engines: {node: '>= 0.4'} 1476 | 1477 | is-bigint@1.0.4: 1478 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1479 | 1480 | is-binary-path@2.1.0: 1481 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1482 | engines: {node: '>=8'} 1483 | 1484 | is-boolean-object@1.1.2: 1485 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1486 | engines: {node: '>= 0.4'} 1487 | 1488 | is-callable@1.2.7: 1489 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1490 | engines: {node: '>= 0.4'} 1491 | 1492 | is-core-module@2.15.1: 1493 | resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} 1494 | engines: {node: '>= 0.4'} 1495 | 1496 | is-data-view@1.0.1: 1497 | resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} 1498 | engines: {node: '>= 0.4'} 1499 | 1500 | is-date-object@1.0.5: 1501 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1502 | engines: {node: '>= 0.4'} 1503 | 1504 | is-extendable@0.1.1: 1505 | resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} 1506 | engines: {node: '>=0.10.0'} 1507 | 1508 | is-extendable@1.0.1: 1509 | resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} 1510 | engines: {node: '>=0.10.0'} 1511 | 1512 | is-extglob@2.1.1: 1513 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1514 | engines: {node: '>=0.10.0'} 1515 | 1516 | is-fullwidth-code-point@3.0.0: 1517 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1518 | engines: {node: '>=8'} 1519 | 1520 | is-glob@4.0.3: 1521 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1522 | engines: {node: '>=0.10.0'} 1523 | 1524 | is-negative-zero@2.0.3: 1525 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 1526 | engines: {node: '>= 0.4'} 1527 | 1528 | is-number-object@1.0.7: 1529 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1530 | engines: {node: '>= 0.4'} 1531 | 1532 | is-number@7.0.0: 1533 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1534 | engines: {node: '>=0.12.0'} 1535 | 1536 | is-path-inside@3.0.3: 1537 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1538 | engines: {node: '>=8'} 1539 | 1540 | is-plain-object@2.0.4: 1541 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} 1542 | engines: {node: '>=0.10.0'} 1543 | 1544 | is-promise@2.2.2: 1545 | resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} 1546 | 1547 | is-regex@1.1.4: 1548 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1549 | engines: {node: '>= 0.4'} 1550 | 1551 | is-shared-array-buffer@1.0.3: 1552 | resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} 1553 | engines: {node: '>= 0.4'} 1554 | 1555 | is-string@1.0.7: 1556 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1557 | engines: {node: '>= 0.4'} 1558 | 1559 | is-symbol@1.0.4: 1560 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1561 | engines: {node: '>= 0.4'} 1562 | 1563 | is-typed-array@1.1.13: 1564 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 1565 | engines: {node: '>= 0.4'} 1566 | 1567 | is-weakref@1.0.2: 1568 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1569 | 1570 | isarray@0.0.1: 1571 | resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} 1572 | 1573 | isarray@2.0.5: 1574 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1575 | 1576 | isexe@2.0.0: 1577 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1578 | 1579 | isobject@3.0.1: 1580 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} 1581 | engines: {node: '>=0.10.0'} 1582 | 1583 | its-fine@1.2.5: 1584 | resolution: {integrity: sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==} 1585 | peerDependencies: 1586 | react: '>=18.0' 1587 | 1588 | jackspeak@3.4.3: 1589 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1590 | 1591 | jiti@1.21.6: 1592 | resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} 1593 | hasBin: true 1594 | 1595 | js-tokens@4.0.0: 1596 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1597 | 1598 | js-yaml@4.1.0: 1599 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1600 | hasBin: true 1601 | 1602 | jsesc@2.5.2: 1603 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1604 | engines: {node: '>=4'} 1605 | hasBin: true 1606 | 1607 | json-buffer@3.0.1: 1608 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1609 | 1610 | json-schema-traverse@0.4.1: 1611 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1612 | 1613 | json-stable-stringify-without-jsonify@1.0.1: 1614 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1615 | 1616 | json5@1.0.2: 1617 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1618 | hasBin: true 1619 | 1620 | json5@2.2.3: 1621 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1622 | engines: {node: '>=6'} 1623 | hasBin: true 1624 | 1625 | keyv@4.5.4: 1626 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1627 | 1628 | leva@0.10.0: 1629 | resolution: {integrity: sha512-RiNJWmeqQdKIeHuVXgshmxIHu144a2AMYtLxKf8Nm1j93pisDPexuQDHKNdQlbo37wdyDQibLjY9JKGIiD7gaw==} 1630 | peerDependencies: 1631 | react: ^18.0.0 || ^19.0.0 1632 | react-dom: ^18.0.0 || ^19.0.0 1633 | 1634 | levn@0.4.1: 1635 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1636 | engines: {node: '>= 0.8.0'} 1637 | 1638 | lie@3.3.0: 1639 | resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} 1640 | 1641 | lilconfig@2.1.0: 1642 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1643 | engines: {node: '>=10'} 1644 | 1645 | lilconfig@3.1.2: 1646 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 1647 | engines: {node: '>=14'} 1648 | 1649 | lines-and-columns@1.2.4: 1650 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1651 | 1652 | locate-path@6.0.0: 1653 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1654 | engines: {node: '>=10'} 1655 | 1656 | lodash.merge@4.6.2: 1657 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1658 | 1659 | loose-envify@1.4.0: 1660 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1661 | hasBin: true 1662 | 1663 | lru-cache@10.4.3: 1664 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1665 | 1666 | lru-cache@5.1.1: 1667 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1668 | 1669 | maath@0.10.8: 1670 | resolution: {integrity: sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==} 1671 | peerDependencies: 1672 | '@types/three': '>=0.134.0' 1673 | three: '>=0.134.0' 1674 | 1675 | merge-value@1.0.0: 1676 | resolution: {integrity: sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==} 1677 | engines: {node: '>=0.10.0'} 1678 | 1679 | merge2@1.4.1: 1680 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1681 | engines: {node: '>= 8'} 1682 | 1683 | meshline@3.3.1: 1684 | resolution: {integrity: sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==} 1685 | peerDependencies: 1686 | three: '>=0.137' 1687 | 1688 | meshoptimizer@0.18.1: 1689 | resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} 1690 | 1691 | micromatch@4.0.8: 1692 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1693 | engines: {node: '>=8.6'} 1694 | 1695 | minimatch@3.1.2: 1696 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1697 | 1698 | minimatch@9.0.5: 1699 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1700 | engines: {node: '>=16 || 14 >=14.17'} 1701 | 1702 | minimist@1.2.8: 1703 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1704 | 1705 | minipass@7.1.2: 1706 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1707 | engines: {node: '>=16 || 14 >=14.17'} 1708 | 1709 | mixin-deep@1.3.2: 1710 | resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} 1711 | engines: {node: '>=0.10.0'} 1712 | 1713 | ms@2.1.3: 1714 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1715 | 1716 | mz@2.7.0: 1717 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1718 | 1719 | nanoid@3.3.7: 1720 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1721 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1722 | hasBin: true 1723 | 1724 | natural-compare@1.4.0: 1725 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1726 | 1727 | node-releases@2.0.18: 1728 | resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} 1729 | 1730 | normalize-path@3.0.0: 1731 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1732 | engines: {node: '>=0.10.0'} 1733 | 1734 | normalize-range@0.1.2: 1735 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1736 | engines: {node: '>=0.10.0'} 1737 | 1738 | object-assign@4.1.1: 1739 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1740 | engines: {node: '>=0.10.0'} 1741 | 1742 | object-hash@3.0.0: 1743 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1744 | engines: {node: '>= 6'} 1745 | 1746 | object-inspect@1.13.2: 1747 | resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} 1748 | engines: {node: '>= 0.4'} 1749 | 1750 | object-keys@1.1.1: 1751 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1752 | engines: {node: '>= 0.4'} 1753 | 1754 | object.assign@4.1.5: 1755 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 1756 | engines: {node: '>= 0.4'} 1757 | 1758 | object.fromentries@2.0.8: 1759 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 1760 | engines: {node: '>= 0.4'} 1761 | 1762 | object.groupby@1.0.3: 1763 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} 1764 | engines: {node: '>= 0.4'} 1765 | 1766 | object.values@1.2.0: 1767 | resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} 1768 | engines: {node: '>= 0.4'} 1769 | 1770 | once@1.4.0: 1771 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1772 | 1773 | optionator@0.9.4: 1774 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1775 | engines: {node: '>= 0.8.0'} 1776 | 1777 | p-limit@3.1.0: 1778 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1779 | engines: {node: '>=10'} 1780 | 1781 | p-locate@5.0.0: 1782 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1783 | engines: {node: '>=10'} 1784 | 1785 | package-json-from-dist@1.0.0: 1786 | resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} 1787 | 1788 | parent-module@1.0.1: 1789 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1790 | engines: {node: '>=6'} 1791 | 1792 | path-exists@4.0.0: 1793 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1794 | engines: {node: '>=8'} 1795 | 1796 | path-is-absolute@1.0.1: 1797 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1798 | engines: {node: '>=0.10.0'} 1799 | 1800 | path-key@3.1.1: 1801 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1802 | engines: {node: '>=8'} 1803 | 1804 | path-parse@1.0.7: 1805 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1806 | 1807 | path-scurry@1.11.1: 1808 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1809 | engines: {node: '>=16 || 14 >=14.18'} 1810 | 1811 | picocolors@1.1.0: 1812 | resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} 1813 | 1814 | picomatch@2.3.1: 1815 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1816 | engines: {node: '>=8.6'} 1817 | 1818 | pify@2.3.0: 1819 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1820 | engines: {node: '>=0.10.0'} 1821 | 1822 | pirates@4.0.6: 1823 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1824 | engines: {node: '>= 6'} 1825 | 1826 | possible-typed-array-names@1.0.0: 1827 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 1828 | engines: {node: '>= 0.4'} 1829 | 1830 | postcss-import@15.1.0: 1831 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1832 | engines: {node: '>=14.0.0'} 1833 | peerDependencies: 1834 | postcss: ^8.0.0 1835 | 1836 | postcss-js@4.0.1: 1837 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1838 | engines: {node: ^12 || ^14 || >= 16} 1839 | peerDependencies: 1840 | postcss: ^8.4.21 1841 | 1842 | postcss-load-config@4.0.2: 1843 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 1844 | engines: {node: '>= 14'} 1845 | peerDependencies: 1846 | postcss: '>=8.0.9' 1847 | ts-node: '>=9.0.0' 1848 | peerDependenciesMeta: 1849 | postcss: 1850 | optional: true 1851 | ts-node: 1852 | optional: true 1853 | 1854 | postcss-nested@6.2.0: 1855 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 1856 | engines: {node: '>=12.0'} 1857 | peerDependencies: 1858 | postcss: ^8.2.14 1859 | 1860 | postcss-selector-parser@6.1.2: 1861 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1862 | engines: {node: '>=4'} 1863 | 1864 | postcss-value-parser@4.2.0: 1865 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1866 | 1867 | postcss@8.4.47: 1868 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 1869 | engines: {node: ^10 || ^12 || >=14} 1870 | 1871 | potpack@1.0.2: 1872 | resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} 1873 | 1874 | prelude-ls@1.2.1: 1875 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1876 | engines: {node: '>= 0.8.0'} 1877 | 1878 | prettier-plugin-tailwindcss@0.6.6: 1879 | resolution: {integrity: sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==} 1880 | engines: {node: '>=14.21.3'} 1881 | peerDependencies: 1882 | '@ianvs/prettier-plugin-sort-imports': '*' 1883 | '@prettier/plugin-pug': '*' 1884 | '@shopify/prettier-plugin-liquid': '*' 1885 | '@trivago/prettier-plugin-sort-imports': '*' 1886 | '@zackad/prettier-plugin-twig-melody': '*' 1887 | prettier: ^3.0 1888 | prettier-plugin-astro: '*' 1889 | prettier-plugin-css-order: '*' 1890 | prettier-plugin-import-sort: '*' 1891 | prettier-plugin-jsdoc: '*' 1892 | prettier-plugin-marko: '*' 1893 | prettier-plugin-multiline-arrays: '*' 1894 | prettier-plugin-organize-attributes: '*' 1895 | prettier-plugin-organize-imports: '*' 1896 | prettier-plugin-sort-imports: '*' 1897 | prettier-plugin-style-order: '*' 1898 | prettier-plugin-svelte: '*' 1899 | peerDependenciesMeta: 1900 | '@ianvs/prettier-plugin-sort-imports': 1901 | optional: true 1902 | '@prettier/plugin-pug': 1903 | optional: true 1904 | '@shopify/prettier-plugin-liquid': 1905 | optional: true 1906 | '@trivago/prettier-plugin-sort-imports': 1907 | optional: true 1908 | '@zackad/prettier-plugin-twig-melody': 1909 | optional: true 1910 | prettier-plugin-astro: 1911 | optional: true 1912 | prettier-plugin-css-order: 1913 | optional: true 1914 | prettier-plugin-import-sort: 1915 | optional: true 1916 | prettier-plugin-jsdoc: 1917 | optional: true 1918 | prettier-plugin-marko: 1919 | optional: true 1920 | prettier-plugin-multiline-arrays: 1921 | optional: true 1922 | prettier-plugin-organize-attributes: 1923 | optional: true 1924 | prettier-plugin-organize-imports: 1925 | optional: true 1926 | prettier-plugin-sort-imports: 1927 | optional: true 1928 | prettier-plugin-style-order: 1929 | optional: true 1930 | prettier-plugin-svelte: 1931 | optional: true 1932 | 1933 | prettier@3.3.3: 1934 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1935 | engines: {node: '>=14'} 1936 | hasBin: true 1937 | 1938 | promise-worker-transferable@1.0.4: 1939 | resolution: {integrity: sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==} 1940 | 1941 | prop-types@15.8.1: 1942 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1943 | 1944 | punycode@2.3.1: 1945 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1946 | engines: {node: '>=6'} 1947 | 1948 | queue-microtask@1.2.3: 1949 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1950 | 1951 | r3f-perf@7.2.1: 1952 | resolution: {integrity: sha512-asMr55SqotdT7qtd4gCHGdISGUOL5D3W62LnSm/9lkDIaC/eYg0oh8Vdu3LuyT19tS/O6x1nbPZ11UGdrDJKkA==} 1953 | peerDependencies: 1954 | '@react-three/fiber': '>=8.0' 1955 | dom: '*' 1956 | react: '>=18.0' 1957 | react-dom: '>=18.0' 1958 | three: '>=0.133' 1959 | peerDependenciesMeta: 1960 | '@react-three/fiber': 1961 | optional: true 1962 | dom: 1963 | optional: true 1964 | react-dom: 1965 | optional: true 1966 | 1967 | react-colorful@5.6.1: 1968 | resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} 1969 | peerDependencies: 1970 | react: '>=16.8.0' 1971 | react-dom: '>=16.8.0' 1972 | 1973 | react-composer@5.0.3: 1974 | resolution: {integrity: sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==} 1975 | peerDependencies: 1976 | react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 1977 | 1978 | react-dom@18.3.1: 1979 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 1980 | peerDependencies: 1981 | react: ^18.3.1 1982 | 1983 | react-dropzone@12.1.0: 1984 | resolution: {integrity: sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog==} 1985 | engines: {node: '>= 10.13'} 1986 | peerDependencies: 1987 | react: '>= 16.8' 1988 | 1989 | react-is@16.13.1: 1990 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1991 | 1992 | react-reconciler@0.27.0: 1993 | resolution: {integrity: sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==} 1994 | engines: {node: '>=0.10.0'} 1995 | peerDependencies: 1996 | react: ^18.0.0 1997 | 1998 | react-refresh@0.14.2: 1999 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 2000 | engines: {node: '>=0.10.0'} 2001 | 2002 | react@18.3.1: 2003 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 2004 | engines: {node: '>=0.10.0'} 2005 | 2006 | read-cache@1.0.0: 2007 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2008 | 2009 | readable-stream@1.0.34: 2010 | resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} 2011 | 2012 | readdirp@3.6.0: 2013 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2014 | engines: {node: '>=8.10.0'} 2015 | 2016 | regenerator-runtime@0.14.1: 2017 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 2018 | 2019 | regexp.prototype.flags@1.5.2: 2020 | resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} 2021 | engines: {node: '>= 0.4'} 2022 | 2023 | require-from-string@2.0.2: 2024 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2025 | engines: {node: '>=0.10.0'} 2026 | 2027 | resolve-from@4.0.0: 2028 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2029 | engines: {node: '>=4'} 2030 | 2031 | resolve@1.22.8: 2032 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2033 | hasBin: true 2034 | 2035 | reusify@1.0.4: 2036 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2037 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2038 | 2039 | rimraf@3.0.2: 2040 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2041 | deprecated: Rimraf versions prior to v4 are no longer supported 2042 | hasBin: true 2043 | 2044 | rollup@4.22.1: 2045 | resolution: {integrity: sha512-rit4zY5uPX0jrzTidez3rFr0MD30Rpu3S8VxwXFDfBVAzkk9U28s5MF3/R6u5bIHN6CQnf7zbiwVQbqBkyrU/A==} 2046 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2047 | hasBin: true 2048 | 2049 | run-parallel@1.2.0: 2050 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2051 | 2052 | safe-array-concat@1.1.2: 2053 | resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} 2054 | engines: {node: '>=0.4'} 2055 | 2056 | safe-regex-test@1.0.3: 2057 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} 2058 | engines: {node: '>= 0.4'} 2059 | 2060 | scheduler@0.21.0: 2061 | resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} 2062 | 2063 | scheduler@0.23.2: 2064 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 2065 | 2066 | semver@6.3.1: 2067 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2068 | hasBin: true 2069 | 2070 | semver@7.6.3: 2071 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 2072 | engines: {node: '>=10'} 2073 | hasBin: true 2074 | 2075 | set-function-length@1.2.2: 2076 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 2077 | engines: {node: '>= 0.4'} 2078 | 2079 | set-function-name@2.0.2: 2080 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 2081 | engines: {node: '>= 0.4'} 2082 | 2083 | set-value@2.0.1: 2084 | resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} 2085 | engines: {node: '>=0.10.0'} 2086 | 2087 | shebang-command@2.0.0: 2088 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2089 | engines: {node: '>=8'} 2090 | 2091 | shebang-regex@3.0.0: 2092 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2093 | engines: {node: '>=8'} 2094 | 2095 | side-channel@1.0.6: 2096 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 2097 | engines: {node: '>= 0.4'} 2098 | 2099 | signal-exit@4.1.0: 2100 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2101 | engines: {node: '>=14'} 2102 | 2103 | source-map-js@1.2.1: 2104 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 2105 | engines: {node: '>=0.10.0'} 2106 | 2107 | split-string@3.1.0: 2108 | resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} 2109 | engines: {node: '>=0.10.0'} 2110 | 2111 | stats-gl@2.2.8: 2112 | resolution: {integrity: sha512-94G5nZvduDmzxBS7K0lYnynYwreZpkknD8g5dZmU6mpwIhy3caCrjAm11Qm1cbyx7mqix7Fp00RkbsonzKWnoQ==} 2113 | 2114 | stats.js@0.17.0: 2115 | resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} 2116 | 2117 | string-width@4.2.3: 2118 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2119 | engines: {node: '>=8'} 2120 | 2121 | string-width@5.1.2: 2122 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2123 | engines: {node: '>=12'} 2124 | 2125 | string.prototype.trim@1.2.9: 2126 | resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} 2127 | engines: {node: '>= 0.4'} 2128 | 2129 | string.prototype.trimend@1.0.8: 2130 | resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} 2131 | 2132 | string.prototype.trimstart@1.0.8: 2133 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 2134 | engines: {node: '>= 0.4'} 2135 | 2136 | string_decoder@0.10.31: 2137 | resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} 2138 | 2139 | strip-ansi@6.0.1: 2140 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2141 | engines: {node: '>=8'} 2142 | 2143 | strip-ansi@7.1.0: 2144 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2145 | engines: {node: '>=12'} 2146 | 2147 | strip-bom@3.0.0: 2148 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2149 | engines: {node: '>=4'} 2150 | 2151 | strip-json-comments@3.1.1: 2152 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2153 | engines: {node: '>=8'} 2154 | 2155 | sucrase@3.35.0: 2156 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 2157 | engines: {node: '>=16 || 14 >=14.17'} 2158 | hasBin: true 2159 | 2160 | supports-color@5.5.0: 2161 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2162 | engines: {node: '>=4'} 2163 | 2164 | supports-color@7.2.0: 2165 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2166 | engines: {node: '>=8'} 2167 | 2168 | supports-preserve-symlinks-flag@1.0.0: 2169 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2170 | engines: {node: '>= 0.4'} 2171 | 2172 | suspend-react@0.1.3: 2173 | resolution: {integrity: sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==} 2174 | peerDependencies: 2175 | react: '>=17.0' 2176 | 2177 | tailwindcss-animate@1.0.7: 2178 | resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} 2179 | peerDependencies: 2180 | tailwindcss: '>=3.0.0 || insiders' 2181 | 2182 | tailwindcss@3.4.12: 2183 | resolution: {integrity: sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==} 2184 | engines: {node: '>=14.0.0'} 2185 | hasBin: true 2186 | 2187 | text-table@0.2.0: 2188 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2189 | 2190 | thenify-all@1.6.0: 2191 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2192 | engines: {node: '>=0.8'} 2193 | 2194 | thenify@3.3.1: 2195 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2196 | 2197 | three-custom-shader-material@5.4.0: 2198 | resolution: {integrity: sha512-Yn1lFlKOk3Vul3npEGAmbbFUZ5S2+yjPgM2XqJEZEYRSUUH2vk+WVYrtTB6Bcq15wa7hLUXAKoctAvbRmBmbYA==} 2199 | peerDependencies: 2200 | '@react-three/fiber': '>=8.0' 2201 | react: '>=18.0' 2202 | three: '>=0.154' 2203 | peerDependenciesMeta: 2204 | '@react-three/fiber': 2205 | optional: true 2206 | react: 2207 | optional: true 2208 | 2209 | three-mesh-bvh@0.7.6: 2210 | resolution: {integrity: sha512-rCjsnxEqR9r1/C/lCqzGLS67NDty/S/eT6rAJfDvsanrIctTWdNoR4ZOGWewCB13h1QkVo2BpmC0wakj1+0m8A==} 2211 | peerDependencies: 2212 | three: '>= 0.151.0' 2213 | 2214 | three-stdlib@2.33.0: 2215 | resolution: {integrity: sha512-V/uycBuqQOP/3Z+FBtpMdj2Ds5PyfJ3VDfMzktEmG4niOIzv7q1y5uMSbMcng0+057m1l0N147FQxsodQo9zBg==} 2216 | peerDependencies: 2217 | three: '>=0.128.0' 2218 | 2219 | three@0.167.1: 2220 | resolution: {integrity: sha512-gYTLJA/UQip6J/tJvl91YYqlZF47+D/kxiWrbTon35ZHlXEN0VOo+Qke2walF1/x92v55H6enomymg4Dak52kw==} 2221 | 2222 | through2@0.6.5: 2223 | resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==} 2224 | 2225 | to-fast-properties@2.0.0: 2226 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2227 | engines: {node: '>=4'} 2228 | 2229 | to-regex-range@5.0.1: 2230 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2231 | engines: {node: '>=8.0'} 2232 | 2233 | troika-three-text@0.49.1: 2234 | resolution: {integrity: sha512-lXGWxgjJP9kw4i4Wh+0k0Q/7cRfS6iOME4knKht/KozPu9GcFA9NnNpRvehIhrUawq9B0ZRw+0oiFHgRO+4Wig==} 2235 | peerDependencies: 2236 | three: '>=0.125.0' 2237 | 2238 | troika-three-utils@0.49.0: 2239 | resolution: {integrity: sha512-umitFL4cT+Fm/uONmaQEq4oZlyRHWwVClaS6ZrdcueRvwc2w+cpNQ47LlJKJswpqtMFWbEhOLy0TekmcPZOdYA==} 2240 | peerDependencies: 2241 | three: '>=0.125.0' 2242 | 2243 | troika-worker-utils@0.49.0: 2244 | resolution: {integrity: sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg==} 2245 | 2246 | ts-api-utils@1.3.0: 2247 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 2248 | engines: {node: '>=16'} 2249 | peerDependencies: 2250 | typescript: '>=4.2.0' 2251 | 2252 | ts-interface-checker@0.1.13: 2253 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2254 | 2255 | tsconfig-paths@3.15.0: 2256 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 2257 | 2258 | tslib@2.7.0: 2259 | resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} 2260 | 2261 | tunnel-rat@0.1.2: 2262 | resolution: {integrity: sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==} 2263 | 2264 | type-check@0.4.0: 2265 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2266 | engines: {node: '>= 0.8.0'} 2267 | 2268 | type-fest@0.20.2: 2269 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2270 | engines: {node: '>=10'} 2271 | 2272 | typed-array-buffer@1.0.2: 2273 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} 2274 | engines: {node: '>= 0.4'} 2275 | 2276 | typed-array-byte-length@1.0.1: 2277 | resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} 2278 | engines: {node: '>= 0.4'} 2279 | 2280 | typed-array-byte-offset@1.0.2: 2281 | resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} 2282 | engines: {node: '>= 0.4'} 2283 | 2284 | typed-array-length@1.0.6: 2285 | resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} 2286 | engines: {node: '>= 0.4'} 2287 | 2288 | typescript-eslint@8.6.0: 2289 | resolution: {integrity: sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==} 2290 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2291 | peerDependencies: 2292 | typescript: '*' 2293 | peerDependenciesMeta: 2294 | typescript: 2295 | optional: true 2296 | 2297 | typescript@5.6.2: 2298 | resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} 2299 | engines: {node: '>=14.17'} 2300 | hasBin: true 2301 | 2302 | unbox-primitive@1.0.2: 2303 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2304 | 2305 | undici-types@6.19.8: 2306 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 2307 | 2308 | update-browserslist-db@1.1.0: 2309 | resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} 2310 | hasBin: true 2311 | peerDependencies: 2312 | browserslist: '>= 4.21.0' 2313 | 2314 | uri-js@4.4.1: 2315 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2316 | 2317 | use-isomorphic-layout-effect@1.2.0: 2318 | resolution: {integrity: sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==} 2319 | peerDependencies: 2320 | '@types/react': '*' 2321 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 2322 | peerDependenciesMeta: 2323 | '@types/react': 2324 | optional: true 2325 | 2326 | use-sync-external-store@1.2.2: 2327 | resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} 2328 | peerDependencies: 2329 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 2330 | 2331 | util-deprecate@1.0.2: 2332 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2333 | 2334 | utility-types@3.11.0: 2335 | resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} 2336 | engines: {node: '>= 4'} 2337 | 2338 | uuid@9.0.1: 2339 | resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} 2340 | hasBin: true 2341 | 2342 | v8n@1.5.1: 2343 | resolution: {integrity: sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==} 2344 | 2345 | vite@5.4.6: 2346 | resolution: {integrity: sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==} 2347 | engines: {node: ^18.0.0 || >=20.0.0} 2348 | hasBin: true 2349 | peerDependencies: 2350 | '@types/node': ^18.0.0 || >=20.0.0 2351 | less: '*' 2352 | lightningcss: ^1.21.0 2353 | sass: '*' 2354 | sass-embedded: '*' 2355 | stylus: '*' 2356 | sugarss: '*' 2357 | terser: ^5.4.0 2358 | peerDependenciesMeta: 2359 | '@types/node': 2360 | optional: true 2361 | less: 2362 | optional: true 2363 | lightningcss: 2364 | optional: true 2365 | sass: 2366 | optional: true 2367 | sass-embedded: 2368 | optional: true 2369 | stylus: 2370 | optional: true 2371 | sugarss: 2372 | optional: true 2373 | terser: 2374 | optional: true 2375 | 2376 | webgl-constants@1.1.1: 2377 | resolution: {integrity: sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==} 2378 | 2379 | webgl-sdf-generator@1.1.1: 2380 | resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} 2381 | 2382 | which-boxed-primitive@1.0.2: 2383 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2384 | 2385 | which-typed-array@1.1.15: 2386 | resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} 2387 | engines: {node: '>= 0.4'} 2388 | 2389 | which@2.0.2: 2390 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2391 | engines: {node: '>= 8'} 2392 | hasBin: true 2393 | 2394 | word-wrap@1.2.5: 2395 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2396 | engines: {node: '>=0.10.0'} 2397 | 2398 | wrap-ansi@7.0.0: 2399 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2400 | engines: {node: '>=10'} 2401 | 2402 | wrap-ansi@8.1.0: 2403 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 2404 | engines: {node: '>=12'} 2405 | 2406 | wrappy@1.0.2: 2407 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2408 | 2409 | xtend@4.0.2: 2410 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2411 | engines: {node: '>=0.4'} 2412 | 2413 | yallist@3.1.1: 2414 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2415 | 2416 | yaml@2.5.1: 2417 | resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} 2418 | engines: {node: '>= 14'} 2419 | hasBin: true 2420 | 2421 | yocto-queue@0.1.0: 2422 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2423 | engines: {node: '>=10'} 2424 | 2425 | zustand@3.7.2: 2426 | resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} 2427 | engines: {node: '>=12.7.0'} 2428 | peerDependencies: 2429 | react: '>=16.8' 2430 | peerDependenciesMeta: 2431 | react: 2432 | optional: true 2433 | 2434 | zustand@4.5.5: 2435 | resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==} 2436 | engines: {node: '>=12.7.0'} 2437 | peerDependencies: 2438 | '@types/react': '>=16.8' 2439 | immer: '>=9.0.6' 2440 | react: '>=16.8' 2441 | peerDependenciesMeta: 2442 | '@types/react': 2443 | optional: true 2444 | immer: 2445 | optional: true 2446 | react: 2447 | optional: true 2448 | 2449 | snapshots: 2450 | 2451 | '@alloc/quick-lru@5.2.0': {} 2452 | 2453 | '@ampproject/remapping@2.3.0': 2454 | dependencies: 2455 | '@jridgewell/gen-mapping': 0.3.5 2456 | '@jridgewell/trace-mapping': 0.3.25 2457 | 2458 | '@babel/code-frame@7.24.7': 2459 | dependencies: 2460 | '@babel/highlight': 7.24.7 2461 | picocolors: 1.1.0 2462 | 2463 | '@babel/compat-data@7.25.4': {} 2464 | 2465 | '@babel/core@7.25.2': 2466 | dependencies: 2467 | '@ampproject/remapping': 2.3.0 2468 | '@babel/code-frame': 7.24.7 2469 | '@babel/generator': 7.25.6 2470 | '@babel/helper-compilation-targets': 7.25.2 2471 | '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) 2472 | '@babel/helpers': 7.25.6 2473 | '@babel/parser': 7.25.6 2474 | '@babel/template': 7.25.0 2475 | '@babel/traverse': 7.25.6 2476 | '@babel/types': 7.25.6 2477 | convert-source-map: 2.0.0 2478 | debug: 4.3.7 2479 | gensync: 1.0.0-beta.2 2480 | json5: 2.2.3 2481 | semver: 6.3.1 2482 | transitivePeerDependencies: 2483 | - supports-color 2484 | 2485 | '@babel/generator@7.25.6': 2486 | dependencies: 2487 | '@babel/types': 7.25.6 2488 | '@jridgewell/gen-mapping': 0.3.5 2489 | '@jridgewell/trace-mapping': 0.3.25 2490 | jsesc: 2.5.2 2491 | 2492 | '@babel/helper-compilation-targets@7.25.2': 2493 | dependencies: 2494 | '@babel/compat-data': 7.25.4 2495 | '@babel/helper-validator-option': 7.24.8 2496 | browserslist: 4.23.3 2497 | lru-cache: 5.1.1 2498 | semver: 6.3.1 2499 | 2500 | '@babel/helper-module-imports@7.24.7': 2501 | dependencies: 2502 | '@babel/traverse': 7.25.6 2503 | '@babel/types': 7.25.6 2504 | transitivePeerDependencies: 2505 | - supports-color 2506 | 2507 | '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': 2508 | dependencies: 2509 | '@babel/core': 7.25.2 2510 | '@babel/helper-module-imports': 7.24.7 2511 | '@babel/helper-simple-access': 7.24.7 2512 | '@babel/helper-validator-identifier': 7.24.7 2513 | '@babel/traverse': 7.25.6 2514 | transitivePeerDependencies: 2515 | - supports-color 2516 | 2517 | '@babel/helper-plugin-utils@7.24.8': {} 2518 | 2519 | '@babel/helper-simple-access@7.24.7': 2520 | dependencies: 2521 | '@babel/traverse': 7.25.6 2522 | '@babel/types': 7.25.6 2523 | transitivePeerDependencies: 2524 | - supports-color 2525 | 2526 | '@babel/helper-string-parser@7.24.8': {} 2527 | 2528 | '@babel/helper-validator-identifier@7.24.7': {} 2529 | 2530 | '@babel/helper-validator-option@7.24.8': {} 2531 | 2532 | '@babel/helpers@7.25.6': 2533 | dependencies: 2534 | '@babel/template': 7.25.0 2535 | '@babel/types': 7.25.6 2536 | 2537 | '@babel/highlight@7.24.7': 2538 | dependencies: 2539 | '@babel/helper-validator-identifier': 7.24.7 2540 | chalk: 2.4.2 2541 | js-tokens: 4.0.0 2542 | picocolors: 1.1.0 2543 | 2544 | '@babel/parser@7.25.6': 2545 | dependencies: 2546 | '@babel/types': 7.25.6 2547 | 2548 | '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': 2549 | dependencies: 2550 | '@babel/core': 7.25.2 2551 | '@babel/helper-plugin-utils': 7.24.8 2552 | 2553 | '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': 2554 | dependencies: 2555 | '@babel/core': 7.25.2 2556 | '@babel/helper-plugin-utils': 7.24.8 2557 | 2558 | '@babel/runtime@7.25.6': 2559 | dependencies: 2560 | regenerator-runtime: 0.14.1 2561 | 2562 | '@babel/template@7.25.0': 2563 | dependencies: 2564 | '@babel/code-frame': 7.24.7 2565 | '@babel/parser': 7.25.6 2566 | '@babel/types': 7.25.6 2567 | 2568 | '@babel/traverse@7.25.6': 2569 | dependencies: 2570 | '@babel/code-frame': 7.24.7 2571 | '@babel/generator': 7.25.6 2572 | '@babel/parser': 7.25.6 2573 | '@babel/template': 7.25.0 2574 | '@babel/types': 7.25.6 2575 | debug: 4.3.7 2576 | globals: 11.12.0 2577 | transitivePeerDependencies: 2578 | - supports-color 2579 | 2580 | '@babel/types@7.25.6': 2581 | dependencies: 2582 | '@babel/helper-string-parser': 7.24.8 2583 | '@babel/helper-validator-identifier': 7.24.7 2584 | to-fast-properties: 2.0.0 2585 | 2586 | '@esbuild/aix-ppc64@0.21.5': 2587 | optional: true 2588 | 2589 | '@esbuild/android-arm64@0.21.5': 2590 | optional: true 2591 | 2592 | '@esbuild/android-arm@0.21.5': 2593 | optional: true 2594 | 2595 | '@esbuild/android-x64@0.21.5': 2596 | optional: true 2597 | 2598 | '@esbuild/darwin-arm64@0.21.5': 2599 | optional: true 2600 | 2601 | '@esbuild/darwin-x64@0.21.5': 2602 | optional: true 2603 | 2604 | '@esbuild/freebsd-arm64@0.21.5': 2605 | optional: true 2606 | 2607 | '@esbuild/freebsd-x64@0.21.5': 2608 | optional: true 2609 | 2610 | '@esbuild/linux-arm64@0.21.5': 2611 | optional: true 2612 | 2613 | '@esbuild/linux-arm@0.21.5': 2614 | optional: true 2615 | 2616 | '@esbuild/linux-ia32@0.21.5': 2617 | optional: true 2618 | 2619 | '@esbuild/linux-loong64@0.21.5': 2620 | optional: true 2621 | 2622 | '@esbuild/linux-mips64el@0.21.5': 2623 | optional: true 2624 | 2625 | '@esbuild/linux-ppc64@0.21.5': 2626 | optional: true 2627 | 2628 | '@esbuild/linux-riscv64@0.21.5': 2629 | optional: true 2630 | 2631 | '@esbuild/linux-s390x@0.21.5': 2632 | optional: true 2633 | 2634 | '@esbuild/linux-x64@0.21.5': 2635 | optional: true 2636 | 2637 | '@esbuild/netbsd-x64@0.21.5': 2638 | optional: true 2639 | 2640 | '@esbuild/openbsd-x64@0.21.5': 2641 | optional: true 2642 | 2643 | '@esbuild/sunos-x64@0.21.5': 2644 | optional: true 2645 | 2646 | '@esbuild/win32-arm64@0.21.5': 2647 | optional: true 2648 | 2649 | '@esbuild/win32-ia32@0.21.5': 2650 | optional: true 2651 | 2652 | '@esbuild/win32-x64@0.21.5': 2653 | optional: true 2654 | 2655 | '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': 2656 | dependencies: 2657 | eslint: 8.57.1 2658 | eslint-visitor-keys: 3.4.3 2659 | 2660 | '@eslint-community/regexpp@4.11.1': {} 2661 | 2662 | '@eslint/eslintrc@2.1.4': 2663 | dependencies: 2664 | ajv: 6.12.6 2665 | debug: 4.3.7 2666 | espree: 9.6.1 2667 | globals: 13.24.0 2668 | ignore: 5.3.2 2669 | import-fresh: 3.3.0 2670 | js-yaml: 4.1.0 2671 | minimatch: 3.1.2 2672 | strip-json-comments: 3.1.1 2673 | transitivePeerDependencies: 2674 | - supports-color 2675 | 2676 | '@eslint/js@8.57.1': {} 2677 | 2678 | '@eslint/js@9.10.0': {} 2679 | 2680 | '@floating-ui/core@0.7.3': {} 2681 | 2682 | '@floating-ui/dom@0.5.4': 2683 | dependencies: 2684 | '@floating-ui/core': 0.7.3 2685 | 2686 | '@floating-ui/react-dom@0.7.2(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2687 | dependencies: 2688 | '@floating-ui/dom': 0.5.4 2689 | react: 18.3.1 2690 | react-dom: 18.3.1(react@18.3.1) 2691 | use-isomorphic-layout-effect: 1.2.0(@types/react@18.3.8)(react@18.3.1) 2692 | transitivePeerDependencies: 2693 | - '@types/react' 2694 | 2695 | '@humanwhocodes/config-array@0.13.0': 2696 | dependencies: 2697 | '@humanwhocodes/object-schema': 2.0.3 2698 | debug: 4.3.7 2699 | minimatch: 3.1.2 2700 | transitivePeerDependencies: 2701 | - supports-color 2702 | 2703 | '@humanwhocodes/module-importer@1.0.1': {} 2704 | 2705 | '@humanwhocodes/object-schema@2.0.3': {} 2706 | 2707 | '@isaacs/cliui@8.0.2': 2708 | dependencies: 2709 | string-width: 5.1.2 2710 | string-width-cjs: string-width@4.2.3 2711 | strip-ansi: 7.1.0 2712 | strip-ansi-cjs: strip-ansi@6.0.1 2713 | wrap-ansi: 8.1.0 2714 | wrap-ansi-cjs: wrap-ansi@7.0.0 2715 | 2716 | '@jridgewell/gen-mapping@0.3.5': 2717 | dependencies: 2718 | '@jridgewell/set-array': 1.2.1 2719 | '@jridgewell/sourcemap-codec': 1.5.0 2720 | '@jridgewell/trace-mapping': 0.3.25 2721 | 2722 | '@jridgewell/resolve-uri@3.1.2': {} 2723 | 2724 | '@jridgewell/set-array@1.2.1': {} 2725 | 2726 | '@jridgewell/sourcemap-codec@1.5.0': {} 2727 | 2728 | '@jridgewell/trace-mapping@0.3.25': 2729 | dependencies: 2730 | '@jridgewell/resolve-uri': 3.1.2 2731 | '@jridgewell/sourcemap-codec': 1.5.0 2732 | 2733 | '@mediapipe/tasks-vision@0.10.8': {} 2734 | 2735 | '@monogrid/gainmap-js@3.0.6(three@0.167.1)': 2736 | dependencies: 2737 | promise-worker-transferable: 1.0.4 2738 | three: 0.167.1 2739 | 2740 | '@nodelib/fs.scandir@2.1.5': 2741 | dependencies: 2742 | '@nodelib/fs.stat': 2.0.5 2743 | run-parallel: 1.2.0 2744 | 2745 | '@nodelib/fs.stat@2.0.5': {} 2746 | 2747 | '@nodelib/fs.walk@1.2.8': 2748 | dependencies: 2749 | '@nodelib/fs.scandir': 2.1.5 2750 | fastq: 1.17.1 2751 | 2752 | '@pkgjs/parseargs@0.11.0': 2753 | optional: true 2754 | 2755 | '@radix-ui/primitive@1.0.0': 2756 | dependencies: 2757 | '@babel/runtime': 7.25.6 2758 | 2759 | '@radix-ui/react-arrow@1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2760 | dependencies: 2761 | '@babel/runtime': 7.25.6 2762 | '@radix-ui/react-primitive': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2763 | react: 18.3.1 2764 | react-dom: 18.3.1(react@18.3.1) 2765 | 2766 | '@radix-ui/react-compose-refs@1.0.0(react@18.3.1)': 2767 | dependencies: 2768 | '@babel/runtime': 7.25.6 2769 | react: 18.3.1 2770 | 2771 | '@radix-ui/react-context@1.0.0(react@18.3.1)': 2772 | dependencies: 2773 | '@babel/runtime': 7.25.6 2774 | react: 18.3.1 2775 | 2776 | '@radix-ui/react-dismissable-layer@1.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2777 | dependencies: 2778 | '@babel/runtime': 7.25.6 2779 | '@radix-ui/primitive': 1.0.0 2780 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1) 2781 | '@radix-ui/react-primitive': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2782 | '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.1) 2783 | '@radix-ui/react-use-escape-keydown': 1.0.2(react@18.3.1) 2784 | react: 18.3.1 2785 | react-dom: 18.3.1(react@18.3.1) 2786 | 2787 | '@radix-ui/react-icons@1.3.0(react@18.3.1)': 2788 | dependencies: 2789 | react: 18.3.1 2790 | 2791 | '@radix-ui/react-id@1.0.0(react@18.3.1)': 2792 | dependencies: 2793 | '@babel/runtime': 7.25.6 2794 | '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.1) 2795 | react: 18.3.1 2796 | 2797 | '@radix-ui/react-popper@1.1.1(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2798 | dependencies: 2799 | '@babel/runtime': 7.25.6 2800 | '@floating-ui/react-dom': 0.7.2(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2801 | '@radix-ui/react-arrow': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2802 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1) 2803 | '@radix-ui/react-context': 1.0.0(react@18.3.1) 2804 | '@radix-ui/react-primitive': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2805 | '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.1) 2806 | '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.1) 2807 | '@radix-ui/react-use-rect': 1.0.0(react@18.3.1) 2808 | '@radix-ui/react-use-size': 1.0.0(react@18.3.1) 2809 | '@radix-ui/rect': 1.0.0 2810 | react: 18.3.1 2811 | react-dom: 18.3.1(react@18.3.1) 2812 | transitivePeerDependencies: 2813 | - '@types/react' 2814 | 2815 | '@radix-ui/react-portal@1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2816 | dependencies: 2817 | '@babel/runtime': 7.25.6 2818 | '@radix-ui/react-primitive': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2819 | react: 18.3.1 2820 | react-dom: 18.3.1(react@18.3.1) 2821 | 2822 | '@radix-ui/react-presence@1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2823 | dependencies: 2824 | '@babel/runtime': 7.25.6 2825 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1) 2826 | '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.1) 2827 | react: 18.3.1 2828 | react-dom: 18.3.1(react@18.3.1) 2829 | 2830 | '@radix-ui/react-primitive@1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2831 | dependencies: 2832 | '@babel/runtime': 7.25.6 2833 | '@radix-ui/react-slot': 1.0.1(react@18.3.1) 2834 | react: 18.3.1 2835 | react-dom: 18.3.1(react@18.3.1) 2836 | 2837 | '@radix-ui/react-slot@1.0.1(react@18.3.1)': 2838 | dependencies: 2839 | '@babel/runtime': 7.25.6 2840 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1) 2841 | react: 18.3.1 2842 | 2843 | '@radix-ui/react-tooltip@1.0.5(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2844 | dependencies: 2845 | '@babel/runtime': 7.25.6 2846 | '@radix-ui/primitive': 1.0.0 2847 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1) 2848 | '@radix-ui/react-context': 1.0.0(react@18.3.1) 2849 | '@radix-ui/react-dismissable-layer': 1.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2850 | '@radix-ui/react-id': 1.0.0(react@18.3.1) 2851 | '@radix-ui/react-popper': 1.1.1(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2852 | '@radix-ui/react-portal': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2853 | '@radix-ui/react-presence': 1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2854 | '@radix-ui/react-primitive': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2855 | '@radix-ui/react-slot': 1.0.1(react@18.3.1) 2856 | '@radix-ui/react-use-controllable-state': 1.0.0(react@18.3.1) 2857 | '@radix-ui/react-visually-hidden': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2858 | react: 18.3.1 2859 | react-dom: 18.3.1(react@18.3.1) 2860 | transitivePeerDependencies: 2861 | - '@types/react' 2862 | 2863 | '@radix-ui/react-use-callback-ref@1.0.0(react@18.3.1)': 2864 | dependencies: 2865 | '@babel/runtime': 7.25.6 2866 | react: 18.3.1 2867 | 2868 | '@radix-ui/react-use-controllable-state@1.0.0(react@18.3.1)': 2869 | dependencies: 2870 | '@babel/runtime': 7.25.6 2871 | '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.1) 2872 | react: 18.3.1 2873 | 2874 | '@radix-ui/react-use-escape-keydown@1.0.2(react@18.3.1)': 2875 | dependencies: 2876 | '@babel/runtime': 7.25.6 2877 | '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.1) 2878 | react: 18.3.1 2879 | 2880 | '@radix-ui/react-use-layout-effect@1.0.0(react@18.3.1)': 2881 | dependencies: 2882 | '@babel/runtime': 7.25.6 2883 | react: 18.3.1 2884 | 2885 | '@radix-ui/react-use-rect@1.0.0(react@18.3.1)': 2886 | dependencies: 2887 | '@babel/runtime': 7.25.6 2888 | '@radix-ui/rect': 1.0.0 2889 | react: 18.3.1 2890 | 2891 | '@radix-ui/react-use-size@1.0.0(react@18.3.1)': 2892 | dependencies: 2893 | '@babel/runtime': 7.25.6 2894 | '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.1) 2895 | react: 18.3.1 2896 | 2897 | '@radix-ui/react-visually-hidden@1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2898 | dependencies: 2899 | '@babel/runtime': 7.25.6 2900 | '@radix-ui/react-primitive': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2901 | react: 18.3.1 2902 | react-dom: 18.3.1(react@18.3.1) 2903 | 2904 | '@radix-ui/rect@1.0.0': 2905 | dependencies: 2906 | '@babel/runtime': 7.25.6 2907 | 2908 | '@react-spring/animated@9.6.1(react@18.3.1)': 2909 | dependencies: 2910 | '@react-spring/shared': 9.6.1(react@18.3.1) 2911 | '@react-spring/types': 9.6.1 2912 | react: 18.3.1 2913 | 2914 | '@react-spring/core@9.6.1(react@18.3.1)': 2915 | dependencies: 2916 | '@react-spring/animated': 9.6.1(react@18.3.1) 2917 | '@react-spring/rafz': 9.6.1 2918 | '@react-spring/shared': 9.6.1(react@18.3.1) 2919 | '@react-spring/types': 9.6.1 2920 | react: 18.3.1 2921 | 2922 | '@react-spring/rafz@9.6.1': {} 2923 | 2924 | '@react-spring/shared@9.6.1(react@18.3.1)': 2925 | dependencies: 2926 | '@react-spring/rafz': 9.6.1 2927 | '@react-spring/types': 9.6.1 2928 | react: 18.3.1 2929 | 2930 | '@react-spring/three@9.6.1(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(react@18.3.1)(three@0.167.1)': 2931 | dependencies: 2932 | '@react-spring/animated': 9.6.1(react@18.3.1) 2933 | '@react-spring/core': 9.6.1(react@18.3.1) 2934 | '@react-spring/shared': 9.6.1(react@18.3.1) 2935 | '@react-spring/types': 9.6.1 2936 | '@react-three/fiber': 8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 2937 | react: 18.3.1 2938 | three: 0.167.1 2939 | 2940 | '@react-spring/types@9.6.1': {} 2941 | 2942 | '@react-three/drei@9.112.0(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(@types/react@18.3.8)(@types/three@0.167.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1)': 2943 | dependencies: 2944 | '@babel/runtime': 7.25.6 2945 | '@mediapipe/tasks-vision': 0.10.8 2946 | '@monogrid/gainmap-js': 3.0.6(three@0.167.1) 2947 | '@react-spring/three': 9.6.1(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(react@18.3.1)(three@0.167.1) 2948 | '@react-three/fiber': 8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 2949 | '@use-gesture/react': 10.3.1(react@18.3.1) 2950 | camera-controls: 2.9.0(three@0.167.1) 2951 | cross-env: 7.0.3 2952 | detect-gpu: 5.0.48 2953 | glsl-noise: 0.0.0 2954 | hls.js: 1.3.5 2955 | maath: 0.10.8(@types/three@0.167.2)(three@0.167.1) 2956 | meshline: 3.3.1(three@0.167.1) 2957 | react: 18.3.1 2958 | react-composer: 5.0.3(react@18.3.1) 2959 | stats-gl: 2.2.8 2960 | stats.js: 0.17.0 2961 | suspend-react: 0.1.3(react@18.3.1) 2962 | three: 0.167.1 2963 | three-mesh-bvh: 0.7.6(three@0.167.1) 2964 | three-stdlib: 2.33.0(three@0.167.1) 2965 | troika-three-text: 0.49.1(three@0.167.1) 2966 | tunnel-rat: 0.1.2(@types/react@18.3.8)(react@18.3.1) 2967 | utility-types: 3.11.0 2968 | uuid: 9.0.1 2969 | zustand: 3.7.2(react@18.3.1) 2970 | optionalDependencies: 2971 | react-dom: 18.3.1(react@18.3.1) 2972 | transitivePeerDependencies: 2973 | - '@types/react' 2974 | - '@types/three' 2975 | - immer 2976 | 2977 | '@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1)': 2978 | dependencies: 2979 | '@babel/runtime': 7.25.6 2980 | '@types/debounce': 1.2.4 2981 | '@types/react-reconciler': 0.26.7 2982 | '@types/webxr': 0.5.20 2983 | base64-js: 1.5.1 2984 | buffer: 6.0.3 2985 | debounce: 1.2.1 2986 | its-fine: 1.2.5(react@18.3.1) 2987 | react: 18.3.1 2988 | react-reconciler: 0.27.0(react@18.3.1) 2989 | scheduler: 0.21.0 2990 | suspend-react: 0.1.3(react@18.3.1) 2991 | three: 0.167.1 2992 | zustand: 3.7.2(react@18.3.1) 2993 | optionalDependencies: 2994 | react-dom: 18.3.1(react@18.3.1) 2995 | 2996 | '@rollup/rollup-android-arm-eabi@4.22.1': 2997 | optional: true 2998 | 2999 | '@rollup/rollup-android-arm64@4.22.1': 3000 | optional: true 3001 | 3002 | '@rollup/rollup-darwin-arm64@4.22.1': 3003 | optional: true 3004 | 3005 | '@rollup/rollup-darwin-x64@4.22.1': 3006 | optional: true 3007 | 3008 | '@rollup/rollup-linux-arm-gnueabihf@4.22.1': 3009 | optional: true 3010 | 3011 | '@rollup/rollup-linux-arm-musleabihf@4.22.1': 3012 | optional: true 3013 | 3014 | '@rollup/rollup-linux-arm64-gnu@4.22.1': 3015 | optional: true 3016 | 3017 | '@rollup/rollup-linux-arm64-musl@4.22.1': 3018 | optional: true 3019 | 3020 | '@rollup/rollup-linux-powerpc64le-gnu@4.22.1': 3021 | optional: true 3022 | 3023 | '@rollup/rollup-linux-riscv64-gnu@4.22.1': 3024 | optional: true 3025 | 3026 | '@rollup/rollup-linux-s390x-gnu@4.22.1': 3027 | optional: true 3028 | 3029 | '@rollup/rollup-linux-x64-gnu@4.22.1': 3030 | optional: true 3031 | 3032 | '@rollup/rollup-linux-x64-musl@4.22.1': 3033 | optional: true 3034 | 3035 | '@rollup/rollup-win32-arm64-msvc@4.22.1': 3036 | optional: true 3037 | 3038 | '@rollup/rollup-win32-ia32-msvc@4.22.1': 3039 | optional: true 3040 | 3041 | '@rollup/rollup-win32-x64-msvc@4.22.1': 3042 | optional: true 3043 | 3044 | '@rtsao/scc@1.1.0': {} 3045 | 3046 | '@stitches/react@1.2.8(react@18.3.1)': 3047 | dependencies: 3048 | react: 18.3.1 3049 | 3050 | '@tweenjs/tween.js@23.1.3': {} 3051 | 3052 | '@types/babel__core@7.20.5': 3053 | dependencies: 3054 | '@babel/parser': 7.25.6 3055 | '@babel/types': 7.25.6 3056 | '@types/babel__generator': 7.6.8 3057 | '@types/babel__template': 7.4.4 3058 | '@types/babel__traverse': 7.20.6 3059 | 3060 | '@types/babel__generator@7.6.8': 3061 | dependencies: 3062 | '@babel/types': 7.25.6 3063 | 3064 | '@types/babel__template@7.4.4': 3065 | dependencies: 3066 | '@babel/parser': 7.25.6 3067 | '@babel/types': 7.25.6 3068 | 3069 | '@types/babel__traverse@7.20.6': 3070 | dependencies: 3071 | '@babel/types': 7.25.6 3072 | 3073 | '@types/debounce@1.2.4': {} 3074 | 3075 | '@types/draco3d@1.4.10': {} 3076 | 3077 | '@types/estree@1.0.5': {} 3078 | 3079 | '@types/json5@0.0.29': {} 3080 | 3081 | '@types/node@22.5.5': 3082 | dependencies: 3083 | undici-types: 6.19.8 3084 | 3085 | '@types/offscreencanvas@2019.7.3': {} 3086 | 3087 | '@types/prop-types@15.7.13': {} 3088 | 3089 | '@types/react-dom@18.3.0': 3090 | dependencies: 3091 | '@types/react': 18.3.8 3092 | 3093 | '@types/react-reconciler@0.26.7': 3094 | dependencies: 3095 | '@types/react': 18.3.8 3096 | 3097 | '@types/react-reconciler@0.28.8': 3098 | dependencies: 3099 | '@types/react': 18.3.8 3100 | 3101 | '@types/react@18.3.8': 3102 | dependencies: 3103 | '@types/prop-types': 15.7.13 3104 | csstype: 3.1.3 3105 | 3106 | '@types/stats.js@0.17.3': {} 3107 | 3108 | '@types/three@0.163.0': 3109 | dependencies: 3110 | '@tweenjs/tween.js': 23.1.3 3111 | '@types/stats.js': 0.17.3 3112 | '@types/webxr': 0.5.20 3113 | fflate: 0.8.2 3114 | meshoptimizer: 0.18.1 3115 | 3116 | '@types/three@0.167.2': 3117 | dependencies: 3118 | '@tweenjs/tween.js': 23.1.3 3119 | '@types/stats.js': 0.17.3 3120 | '@types/webxr': 0.5.20 3121 | fflate: 0.8.2 3122 | meshoptimizer: 0.18.1 3123 | 3124 | '@types/uuid@10.0.0': {} 3125 | 3126 | '@types/webxr@0.5.20': {} 3127 | 3128 | '@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2)': 3129 | dependencies: 3130 | '@eslint-community/regexpp': 4.11.1 3131 | '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 3132 | '@typescript-eslint/scope-manager': 8.6.0 3133 | '@typescript-eslint/type-utils': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 3134 | '@typescript-eslint/utils': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 3135 | '@typescript-eslint/visitor-keys': 8.6.0 3136 | eslint: 8.57.1 3137 | graphemer: 1.4.0 3138 | ignore: 5.3.2 3139 | natural-compare: 1.4.0 3140 | ts-api-utils: 1.3.0(typescript@5.6.2) 3141 | optionalDependencies: 3142 | typescript: 5.6.2 3143 | transitivePeerDependencies: 3144 | - supports-color 3145 | 3146 | '@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2)': 3147 | dependencies: 3148 | '@typescript-eslint/scope-manager': 8.6.0 3149 | '@typescript-eslint/types': 8.6.0 3150 | '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) 3151 | '@typescript-eslint/visitor-keys': 8.6.0 3152 | debug: 4.3.7 3153 | eslint: 8.57.1 3154 | optionalDependencies: 3155 | typescript: 5.6.2 3156 | transitivePeerDependencies: 3157 | - supports-color 3158 | 3159 | '@typescript-eslint/scope-manager@8.6.0': 3160 | dependencies: 3161 | '@typescript-eslint/types': 8.6.0 3162 | '@typescript-eslint/visitor-keys': 8.6.0 3163 | 3164 | '@typescript-eslint/type-utils@8.6.0(eslint@8.57.1)(typescript@5.6.2)': 3165 | dependencies: 3166 | '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) 3167 | '@typescript-eslint/utils': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 3168 | debug: 4.3.7 3169 | ts-api-utils: 1.3.0(typescript@5.6.2) 3170 | optionalDependencies: 3171 | typescript: 5.6.2 3172 | transitivePeerDependencies: 3173 | - eslint 3174 | - supports-color 3175 | 3176 | '@typescript-eslint/types@8.6.0': {} 3177 | 3178 | '@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2)': 3179 | dependencies: 3180 | '@typescript-eslint/types': 8.6.0 3181 | '@typescript-eslint/visitor-keys': 8.6.0 3182 | debug: 4.3.7 3183 | fast-glob: 3.3.2 3184 | is-glob: 4.0.3 3185 | minimatch: 9.0.5 3186 | semver: 7.6.3 3187 | ts-api-utils: 1.3.0(typescript@5.6.2) 3188 | optionalDependencies: 3189 | typescript: 5.6.2 3190 | transitivePeerDependencies: 3191 | - supports-color 3192 | 3193 | '@typescript-eslint/utils@8.6.0(eslint@8.57.1)(typescript@5.6.2)': 3194 | dependencies: 3195 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) 3196 | '@typescript-eslint/scope-manager': 8.6.0 3197 | '@typescript-eslint/types': 8.6.0 3198 | '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) 3199 | eslint: 8.57.1 3200 | transitivePeerDependencies: 3201 | - supports-color 3202 | - typescript 3203 | 3204 | '@typescript-eslint/visitor-keys@8.6.0': 3205 | dependencies: 3206 | '@typescript-eslint/types': 8.6.0 3207 | eslint-visitor-keys: 3.4.3 3208 | 3209 | '@ungap/structured-clone@1.2.0': {} 3210 | 3211 | '@use-gesture/core@10.3.1': {} 3212 | 3213 | '@use-gesture/react@10.3.1(react@18.3.1)': 3214 | dependencies: 3215 | '@use-gesture/core': 10.3.1 3216 | react: 18.3.1 3217 | 3218 | '@utsubo/events@0.1.7(react@18.3.1)': 3219 | dependencies: 3220 | eventemitter3: 4.0.7 3221 | optionalDependencies: 3222 | react: 18.3.1 3223 | 3224 | '@vitejs/plugin-react@4.3.1(vite@5.4.6(@types/node@22.5.5))': 3225 | dependencies: 3226 | '@babel/core': 7.25.2 3227 | '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) 3228 | '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) 3229 | '@types/babel__core': 7.20.5 3230 | react-refresh: 0.14.2 3231 | vite: 5.4.6(@types/node@22.5.5) 3232 | transitivePeerDependencies: 3233 | - supports-color 3234 | 3235 | acorn-jsx@5.3.2(acorn@8.12.1): 3236 | dependencies: 3237 | acorn: 8.12.1 3238 | 3239 | acorn@8.12.1: {} 3240 | 3241 | ajv@6.12.6: 3242 | dependencies: 3243 | fast-deep-equal: 3.1.3 3244 | fast-json-stable-stringify: 2.1.0 3245 | json-schema-traverse: 0.4.1 3246 | uri-js: 4.4.1 3247 | 3248 | ansi-regex@5.0.1: {} 3249 | 3250 | ansi-regex@6.1.0: {} 3251 | 3252 | ansi-styles@3.2.1: 3253 | dependencies: 3254 | color-convert: 1.9.3 3255 | 3256 | ansi-styles@4.3.0: 3257 | dependencies: 3258 | color-convert: 2.0.1 3259 | 3260 | ansi-styles@6.2.1: {} 3261 | 3262 | any-promise@1.3.0: {} 3263 | 3264 | anymatch@3.1.3: 3265 | dependencies: 3266 | normalize-path: 3.0.0 3267 | picomatch: 2.3.1 3268 | 3269 | arg@5.0.2: {} 3270 | 3271 | argparse@2.0.1: {} 3272 | 3273 | array-buffer-byte-length@1.0.1: 3274 | dependencies: 3275 | call-bind: 1.0.7 3276 | is-array-buffer: 3.0.4 3277 | 3278 | array-includes@3.1.8: 3279 | dependencies: 3280 | call-bind: 1.0.7 3281 | define-properties: 1.2.1 3282 | es-abstract: 1.23.3 3283 | es-object-atoms: 1.0.0 3284 | get-intrinsic: 1.2.4 3285 | is-string: 1.0.7 3286 | 3287 | array.prototype.findlastindex@1.2.5: 3288 | dependencies: 3289 | call-bind: 1.0.7 3290 | define-properties: 1.2.1 3291 | es-abstract: 1.23.3 3292 | es-errors: 1.3.0 3293 | es-object-atoms: 1.0.0 3294 | es-shim-unscopables: 1.0.2 3295 | 3296 | array.prototype.flat@1.3.2: 3297 | dependencies: 3298 | call-bind: 1.0.7 3299 | define-properties: 1.2.1 3300 | es-abstract: 1.23.3 3301 | es-shim-unscopables: 1.0.2 3302 | 3303 | array.prototype.flatmap@1.3.2: 3304 | dependencies: 3305 | call-bind: 1.0.7 3306 | define-properties: 1.2.1 3307 | es-abstract: 1.23.3 3308 | es-shim-unscopables: 1.0.2 3309 | 3310 | arraybuffer.prototype.slice@1.0.3: 3311 | dependencies: 3312 | array-buffer-byte-length: 1.0.1 3313 | call-bind: 1.0.7 3314 | define-properties: 1.2.1 3315 | es-abstract: 1.23.3 3316 | es-errors: 1.3.0 3317 | get-intrinsic: 1.2.4 3318 | is-array-buffer: 3.0.4 3319 | is-shared-array-buffer: 1.0.3 3320 | 3321 | assign-symbols@1.0.0: {} 3322 | 3323 | attr-accept@2.2.5: {} 3324 | 3325 | autoprefixer@10.4.20(postcss@8.4.47): 3326 | dependencies: 3327 | browserslist: 4.23.3 3328 | caniuse-lite: 1.0.30001662 3329 | fraction.js: 4.3.7 3330 | normalize-range: 0.1.2 3331 | picocolors: 1.1.0 3332 | postcss: 8.4.47 3333 | postcss-value-parser: 4.2.0 3334 | 3335 | available-typed-arrays@1.0.7: 3336 | dependencies: 3337 | possible-typed-array-names: 1.0.0 3338 | 3339 | balanced-match@1.0.2: {} 3340 | 3341 | base64-js@1.5.1: {} 3342 | 3343 | bidi-js@1.0.3: 3344 | dependencies: 3345 | require-from-string: 2.0.2 3346 | 3347 | binary-extensions@2.3.0: {} 3348 | 3349 | brace-expansion@1.1.11: 3350 | dependencies: 3351 | balanced-match: 1.0.2 3352 | concat-map: 0.0.1 3353 | 3354 | brace-expansion@2.0.1: 3355 | dependencies: 3356 | balanced-match: 1.0.2 3357 | 3358 | braces@3.0.3: 3359 | dependencies: 3360 | fill-range: 7.1.1 3361 | 3362 | browserslist@4.23.3: 3363 | dependencies: 3364 | caniuse-lite: 1.0.30001662 3365 | electron-to-chromium: 1.5.26 3366 | node-releases: 2.0.18 3367 | update-browserslist-db: 1.1.0(browserslist@4.23.3) 3368 | 3369 | buffer@6.0.3: 3370 | dependencies: 3371 | base64-js: 1.5.1 3372 | ieee754: 1.2.1 3373 | 3374 | call-bind@1.0.7: 3375 | dependencies: 3376 | es-define-property: 1.0.0 3377 | es-errors: 1.3.0 3378 | function-bind: 1.1.2 3379 | get-intrinsic: 1.2.4 3380 | set-function-length: 1.2.2 3381 | 3382 | callsites@3.1.0: {} 3383 | 3384 | camelcase-css@2.0.1: {} 3385 | 3386 | camera-controls@2.9.0(three@0.167.1): 3387 | dependencies: 3388 | three: 0.167.1 3389 | 3390 | caniuse-lite@1.0.30001662: {} 3391 | 3392 | chalk@2.4.2: 3393 | dependencies: 3394 | ansi-styles: 3.2.1 3395 | escape-string-regexp: 1.0.5 3396 | supports-color: 5.5.0 3397 | 3398 | chalk@4.1.2: 3399 | dependencies: 3400 | ansi-styles: 4.3.0 3401 | supports-color: 7.2.0 3402 | 3403 | chokidar@3.6.0: 3404 | dependencies: 3405 | anymatch: 3.1.3 3406 | braces: 3.0.3 3407 | glob-parent: 5.1.2 3408 | is-binary-path: 2.1.0 3409 | is-glob: 4.0.3 3410 | normalize-path: 3.0.0 3411 | readdirp: 3.6.0 3412 | optionalDependencies: 3413 | fsevents: 2.3.3 3414 | 3415 | color-convert@1.9.3: 3416 | dependencies: 3417 | color-name: 1.1.3 3418 | 3419 | color-convert@2.0.1: 3420 | dependencies: 3421 | color-name: 1.1.4 3422 | 3423 | color-name@1.1.3: {} 3424 | 3425 | color-name@1.1.4: {} 3426 | 3427 | colord@2.9.3: {} 3428 | 3429 | commander@4.1.1: {} 3430 | 3431 | concat-map@0.0.1: {} 3432 | 3433 | convert-source-map@2.0.0: {} 3434 | 3435 | core-util-is@1.0.3: {} 3436 | 3437 | cross-env@7.0.3: 3438 | dependencies: 3439 | cross-spawn: 7.0.3 3440 | 3441 | cross-spawn@7.0.3: 3442 | dependencies: 3443 | path-key: 3.1.1 3444 | shebang-command: 2.0.0 3445 | which: 2.0.2 3446 | 3447 | cssesc@3.0.0: {} 3448 | 3449 | csstype@3.1.3: {} 3450 | 3451 | data-view-buffer@1.0.1: 3452 | dependencies: 3453 | call-bind: 1.0.7 3454 | es-errors: 1.3.0 3455 | is-data-view: 1.0.1 3456 | 3457 | data-view-byte-length@1.0.1: 3458 | dependencies: 3459 | call-bind: 1.0.7 3460 | es-errors: 1.3.0 3461 | is-data-view: 1.0.1 3462 | 3463 | data-view-byte-offset@1.0.0: 3464 | dependencies: 3465 | call-bind: 1.0.7 3466 | es-errors: 1.3.0 3467 | is-data-view: 1.0.1 3468 | 3469 | debounce@1.2.1: {} 3470 | 3471 | debug@3.2.7: 3472 | dependencies: 3473 | ms: 2.1.3 3474 | 3475 | debug@4.3.7: 3476 | dependencies: 3477 | ms: 2.1.3 3478 | 3479 | deep-is@0.1.4: {} 3480 | 3481 | define-data-property@1.1.4: 3482 | dependencies: 3483 | es-define-property: 1.0.0 3484 | es-errors: 1.3.0 3485 | gopd: 1.0.1 3486 | 3487 | define-properties@1.2.1: 3488 | dependencies: 3489 | define-data-property: 1.1.4 3490 | has-property-descriptors: 1.0.2 3491 | object-keys: 1.1.1 3492 | 3493 | dequal@2.0.3: {} 3494 | 3495 | detect-gpu@5.0.48: 3496 | dependencies: 3497 | webgl-constants: 1.1.1 3498 | 3499 | didyoumean@1.2.2: {} 3500 | 3501 | dlv@1.1.3: {} 3502 | 3503 | doctrine@2.1.0: 3504 | dependencies: 3505 | esutils: 2.0.3 3506 | 3507 | doctrine@3.0.0: 3508 | dependencies: 3509 | esutils: 2.0.3 3510 | 3511 | draco3d@1.5.7: {} 3512 | 3513 | eastasianwidth@0.2.0: {} 3514 | 3515 | electron-to-chromium@1.5.26: {} 3516 | 3517 | emoji-regex@8.0.0: {} 3518 | 3519 | emoji-regex@9.2.2: {} 3520 | 3521 | es-abstract@1.23.3: 3522 | dependencies: 3523 | array-buffer-byte-length: 1.0.1 3524 | arraybuffer.prototype.slice: 1.0.3 3525 | available-typed-arrays: 1.0.7 3526 | call-bind: 1.0.7 3527 | data-view-buffer: 1.0.1 3528 | data-view-byte-length: 1.0.1 3529 | data-view-byte-offset: 1.0.0 3530 | es-define-property: 1.0.0 3531 | es-errors: 1.3.0 3532 | es-object-atoms: 1.0.0 3533 | es-set-tostringtag: 2.0.3 3534 | es-to-primitive: 1.2.1 3535 | function.prototype.name: 1.1.6 3536 | get-intrinsic: 1.2.4 3537 | get-symbol-description: 1.0.2 3538 | globalthis: 1.0.4 3539 | gopd: 1.0.1 3540 | has-property-descriptors: 1.0.2 3541 | has-proto: 1.0.3 3542 | has-symbols: 1.0.3 3543 | hasown: 2.0.2 3544 | internal-slot: 1.0.7 3545 | is-array-buffer: 3.0.4 3546 | is-callable: 1.2.7 3547 | is-data-view: 1.0.1 3548 | is-negative-zero: 2.0.3 3549 | is-regex: 1.1.4 3550 | is-shared-array-buffer: 1.0.3 3551 | is-string: 1.0.7 3552 | is-typed-array: 1.1.13 3553 | is-weakref: 1.0.2 3554 | object-inspect: 1.13.2 3555 | object-keys: 1.1.1 3556 | object.assign: 4.1.5 3557 | regexp.prototype.flags: 1.5.2 3558 | safe-array-concat: 1.1.2 3559 | safe-regex-test: 1.0.3 3560 | string.prototype.trim: 1.2.9 3561 | string.prototype.trimend: 1.0.8 3562 | string.prototype.trimstart: 1.0.8 3563 | typed-array-buffer: 1.0.2 3564 | typed-array-byte-length: 1.0.1 3565 | typed-array-byte-offset: 1.0.2 3566 | typed-array-length: 1.0.6 3567 | unbox-primitive: 1.0.2 3568 | which-typed-array: 1.1.15 3569 | 3570 | es-define-property@1.0.0: 3571 | dependencies: 3572 | get-intrinsic: 1.2.4 3573 | 3574 | es-errors@1.3.0: {} 3575 | 3576 | es-object-atoms@1.0.0: 3577 | dependencies: 3578 | es-errors: 1.3.0 3579 | 3580 | es-set-tostringtag@2.0.3: 3581 | dependencies: 3582 | get-intrinsic: 1.2.4 3583 | has-tostringtag: 1.0.2 3584 | hasown: 2.0.2 3585 | 3586 | es-shim-unscopables@1.0.2: 3587 | dependencies: 3588 | hasown: 2.0.2 3589 | 3590 | es-to-primitive@1.2.1: 3591 | dependencies: 3592 | is-callable: 1.2.7 3593 | is-date-object: 1.0.5 3594 | is-symbol: 1.0.4 3595 | 3596 | esbuild@0.21.5: 3597 | optionalDependencies: 3598 | '@esbuild/aix-ppc64': 0.21.5 3599 | '@esbuild/android-arm': 0.21.5 3600 | '@esbuild/android-arm64': 0.21.5 3601 | '@esbuild/android-x64': 0.21.5 3602 | '@esbuild/darwin-arm64': 0.21.5 3603 | '@esbuild/darwin-x64': 0.21.5 3604 | '@esbuild/freebsd-arm64': 0.21.5 3605 | '@esbuild/freebsd-x64': 0.21.5 3606 | '@esbuild/linux-arm': 0.21.5 3607 | '@esbuild/linux-arm64': 0.21.5 3608 | '@esbuild/linux-ia32': 0.21.5 3609 | '@esbuild/linux-loong64': 0.21.5 3610 | '@esbuild/linux-mips64el': 0.21.5 3611 | '@esbuild/linux-ppc64': 0.21.5 3612 | '@esbuild/linux-riscv64': 0.21.5 3613 | '@esbuild/linux-s390x': 0.21.5 3614 | '@esbuild/linux-x64': 0.21.5 3615 | '@esbuild/netbsd-x64': 0.21.5 3616 | '@esbuild/openbsd-x64': 0.21.5 3617 | '@esbuild/sunos-x64': 0.21.5 3618 | '@esbuild/win32-arm64': 0.21.5 3619 | '@esbuild/win32-ia32': 0.21.5 3620 | '@esbuild/win32-x64': 0.21.5 3621 | 3622 | escalade@3.2.0: {} 3623 | 3624 | escape-string-regexp@1.0.5: {} 3625 | 3626 | escape-string-regexp@4.0.0: {} 3627 | 3628 | eslint-import-resolver-node@0.3.9: 3629 | dependencies: 3630 | debug: 3.2.7 3631 | is-core-module: 2.15.1 3632 | resolve: 1.22.8 3633 | transitivePeerDependencies: 3634 | - supports-color 3635 | 3636 | eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): 3637 | dependencies: 3638 | debug: 3.2.7 3639 | optionalDependencies: 3640 | '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 3641 | eslint: 8.57.1 3642 | eslint-import-resolver-node: 0.3.9 3643 | transitivePeerDependencies: 3644 | - supports-color 3645 | 3646 | eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1): 3647 | dependencies: 3648 | '@rtsao/scc': 1.1.0 3649 | array-includes: 3.1.8 3650 | array.prototype.findlastindex: 1.2.5 3651 | array.prototype.flat: 1.3.2 3652 | array.prototype.flatmap: 1.3.2 3653 | debug: 3.2.7 3654 | doctrine: 2.1.0 3655 | eslint: 8.57.1 3656 | eslint-import-resolver-node: 0.3.9 3657 | eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) 3658 | hasown: 2.0.2 3659 | is-core-module: 2.15.1 3660 | is-glob: 4.0.3 3661 | minimatch: 3.1.2 3662 | object.fromentries: 2.0.8 3663 | object.groupby: 1.0.3 3664 | object.values: 1.2.0 3665 | semver: 6.3.1 3666 | tsconfig-paths: 3.15.0 3667 | optionalDependencies: 3668 | '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 3669 | transitivePeerDependencies: 3670 | - eslint-import-resolver-typescript 3671 | - eslint-import-resolver-webpack 3672 | - supports-color 3673 | 3674 | eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@8.57.1): 3675 | dependencies: 3676 | eslint: 8.57.1 3677 | 3678 | eslint-plugin-react-refresh@0.4.12(eslint@8.57.1): 3679 | dependencies: 3680 | eslint: 8.57.1 3681 | 3682 | eslint-scope@7.2.2: 3683 | dependencies: 3684 | esrecurse: 4.3.0 3685 | estraverse: 5.3.0 3686 | 3687 | eslint-visitor-keys@3.4.3: {} 3688 | 3689 | eslint@8.57.1: 3690 | dependencies: 3691 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) 3692 | '@eslint-community/regexpp': 4.11.1 3693 | '@eslint/eslintrc': 2.1.4 3694 | '@eslint/js': 8.57.1 3695 | '@humanwhocodes/config-array': 0.13.0 3696 | '@humanwhocodes/module-importer': 1.0.1 3697 | '@nodelib/fs.walk': 1.2.8 3698 | '@ungap/structured-clone': 1.2.0 3699 | ajv: 6.12.6 3700 | chalk: 4.1.2 3701 | cross-spawn: 7.0.3 3702 | debug: 4.3.7 3703 | doctrine: 3.0.0 3704 | escape-string-regexp: 4.0.0 3705 | eslint-scope: 7.2.2 3706 | eslint-visitor-keys: 3.4.3 3707 | espree: 9.6.1 3708 | esquery: 1.6.0 3709 | esutils: 2.0.3 3710 | fast-deep-equal: 3.1.3 3711 | file-entry-cache: 6.0.1 3712 | find-up: 5.0.0 3713 | glob-parent: 6.0.2 3714 | globals: 13.24.0 3715 | graphemer: 1.4.0 3716 | ignore: 5.3.2 3717 | imurmurhash: 0.1.4 3718 | is-glob: 4.0.3 3719 | is-path-inside: 3.0.3 3720 | js-yaml: 4.1.0 3721 | json-stable-stringify-without-jsonify: 1.0.1 3722 | levn: 0.4.1 3723 | lodash.merge: 4.6.2 3724 | minimatch: 3.1.2 3725 | natural-compare: 1.4.0 3726 | optionator: 0.9.4 3727 | strip-ansi: 6.0.1 3728 | text-table: 0.2.0 3729 | transitivePeerDependencies: 3730 | - supports-color 3731 | 3732 | espree@9.6.1: 3733 | dependencies: 3734 | acorn: 8.12.1 3735 | acorn-jsx: 5.3.2(acorn@8.12.1) 3736 | eslint-visitor-keys: 3.4.3 3737 | 3738 | esquery@1.6.0: 3739 | dependencies: 3740 | estraverse: 5.3.0 3741 | 3742 | esrecurse@4.3.0: 3743 | dependencies: 3744 | estraverse: 5.3.0 3745 | 3746 | estraverse@5.3.0: {} 3747 | 3748 | esutils@2.0.3: {} 3749 | 3750 | eventemitter3@4.0.7: {} 3751 | 3752 | extend-shallow@2.0.1: 3753 | dependencies: 3754 | is-extendable: 0.1.1 3755 | 3756 | extend-shallow@3.0.2: 3757 | dependencies: 3758 | assign-symbols: 1.0.0 3759 | is-extendable: 1.0.1 3760 | 3761 | fast-deep-equal@3.1.3: {} 3762 | 3763 | fast-glob@3.3.2: 3764 | dependencies: 3765 | '@nodelib/fs.stat': 2.0.5 3766 | '@nodelib/fs.walk': 1.2.8 3767 | glob-parent: 5.1.2 3768 | merge2: 1.4.1 3769 | micromatch: 4.0.8 3770 | 3771 | fast-json-stable-stringify@2.1.0: {} 3772 | 3773 | fast-levenshtein@2.0.6: {} 3774 | 3775 | fastq@1.17.1: 3776 | dependencies: 3777 | reusify: 1.0.4 3778 | 3779 | fflate@0.6.10: {} 3780 | 3781 | fflate@0.8.2: {} 3782 | 3783 | file-entry-cache@6.0.1: 3784 | dependencies: 3785 | flat-cache: 3.2.0 3786 | 3787 | file-selector@0.5.0: 3788 | dependencies: 3789 | tslib: 2.7.0 3790 | 3791 | fill-range@7.1.1: 3792 | dependencies: 3793 | to-regex-range: 5.0.1 3794 | 3795 | find-up@5.0.0: 3796 | dependencies: 3797 | locate-path: 6.0.0 3798 | path-exists: 4.0.0 3799 | 3800 | flat-cache@3.2.0: 3801 | dependencies: 3802 | flatted: 3.3.1 3803 | keyv: 4.5.4 3804 | rimraf: 3.0.2 3805 | 3806 | flatted@3.3.1: {} 3807 | 3808 | for-each@0.3.3: 3809 | dependencies: 3810 | is-callable: 1.2.7 3811 | 3812 | for-in@1.0.2: {} 3813 | 3814 | foreground-child@3.3.0: 3815 | dependencies: 3816 | cross-spawn: 7.0.3 3817 | signal-exit: 4.1.0 3818 | 3819 | fraction.js@4.3.7: {} 3820 | 3821 | framer-motion@11.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 3822 | dependencies: 3823 | tslib: 2.7.0 3824 | optionalDependencies: 3825 | react: 18.3.1 3826 | react-dom: 18.3.1(react@18.3.1) 3827 | 3828 | fs.realpath@1.0.0: {} 3829 | 3830 | fsevents@2.3.3: 3831 | optional: true 3832 | 3833 | function-bind@1.1.2: {} 3834 | 3835 | function.prototype.name@1.1.6: 3836 | dependencies: 3837 | call-bind: 1.0.7 3838 | define-properties: 1.2.1 3839 | es-abstract: 1.23.3 3840 | functions-have-names: 1.2.3 3841 | 3842 | functions-have-names@1.2.3: {} 3843 | 3844 | gensync@1.0.0-beta.2: {} 3845 | 3846 | get-intrinsic@1.2.4: 3847 | dependencies: 3848 | es-errors: 1.3.0 3849 | function-bind: 1.1.2 3850 | has-proto: 1.0.3 3851 | has-symbols: 1.0.3 3852 | hasown: 2.0.2 3853 | 3854 | get-symbol-description@1.0.2: 3855 | dependencies: 3856 | call-bind: 1.0.7 3857 | es-errors: 1.3.0 3858 | get-intrinsic: 1.2.4 3859 | 3860 | get-value@2.0.6: {} 3861 | 3862 | glob-parent@5.1.2: 3863 | dependencies: 3864 | is-glob: 4.0.3 3865 | 3866 | glob-parent@6.0.2: 3867 | dependencies: 3868 | is-glob: 4.0.3 3869 | 3870 | glob@10.4.5: 3871 | dependencies: 3872 | foreground-child: 3.3.0 3873 | jackspeak: 3.4.3 3874 | minimatch: 9.0.5 3875 | minipass: 7.1.2 3876 | package-json-from-dist: 1.0.0 3877 | path-scurry: 1.11.1 3878 | 3879 | glob@7.2.3: 3880 | dependencies: 3881 | fs.realpath: 1.0.0 3882 | inflight: 1.0.6 3883 | inherits: 2.0.4 3884 | minimatch: 3.1.2 3885 | once: 1.4.0 3886 | path-is-absolute: 1.0.1 3887 | 3888 | globals@11.12.0: {} 3889 | 3890 | globals@13.24.0: 3891 | dependencies: 3892 | type-fest: 0.20.2 3893 | 3894 | globals@15.9.0: {} 3895 | 3896 | globalthis@1.0.4: 3897 | dependencies: 3898 | define-properties: 1.2.1 3899 | gopd: 1.0.1 3900 | 3901 | glsl-noise@0.0.0: {} 3902 | 3903 | glsl-token-functions@1.0.1: {} 3904 | 3905 | glsl-token-string@1.0.1: {} 3906 | 3907 | glsl-tokenizer@2.1.5: 3908 | dependencies: 3909 | through2: 0.6.5 3910 | 3911 | gopd@1.0.1: 3912 | dependencies: 3913 | get-intrinsic: 1.2.4 3914 | 3915 | graphemer@1.4.0: {} 3916 | 3917 | has-bigints@1.0.2: {} 3918 | 3919 | has-flag@3.0.0: {} 3920 | 3921 | has-flag@4.0.0: {} 3922 | 3923 | has-property-descriptors@1.0.2: 3924 | dependencies: 3925 | es-define-property: 1.0.0 3926 | 3927 | has-proto@1.0.3: {} 3928 | 3929 | has-symbols@1.0.3: {} 3930 | 3931 | has-tostringtag@1.0.2: 3932 | dependencies: 3933 | has-symbols: 1.0.3 3934 | 3935 | hasown@2.0.2: 3936 | dependencies: 3937 | function-bind: 1.1.2 3938 | 3939 | hls.js@1.3.5: {} 3940 | 3941 | ieee754@1.2.1: {} 3942 | 3943 | ignore@5.3.2: {} 3944 | 3945 | immediate@3.0.6: {} 3946 | 3947 | import-fresh@3.3.0: 3948 | dependencies: 3949 | parent-module: 1.0.1 3950 | resolve-from: 4.0.0 3951 | 3952 | imurmurhash@0.1.4: {} 3953 | 3954 | inflight@1.0.6: 3955 | dependencies: 3956 | once: 1.4.0 3957 | wrappy: 1.0.2 3958 | 3959 | inherits@2.0.4: {} 3960 | 3961 | internal-slot@1.0.7: 3962 | dependencies: 3963 | es-errors: 1.3.0 3964 | hasown: 2.0.2 3965 | side-channel: 1.0.6 3966 | 3967 | is-array-buffer@3.0.4: 3968 | dependencies: 3969 | call-bind: 1.0.7 3970 | get-intrinsic: 1.2.4 3971 | 3972 | is-bigint@1.0.4: 3973 | dependencies: 3974 | has-bigints: 1.0.2 3975 | 3976 | is-binary-path@2.1.0: 3977 | dependencies: 3978 | binary-extensions: 2.3.0 3979 | 3980 | is-boolean-object@1.1.2: 3981 | dependencies: 3982 | call-bind: 1.0.7 3983 | has-tostringtag: 1.0.2 3984 | 3985 | is-callable@1.2.7: {} 3986 | 3987 | is-core-module@2.15.1: 3988 | dependencies: 3989 | hasown: 2.0.2 3990 | 3991 | is-data-view@1.0.1: 3992 | dependencies: 3993 | is-typed-array: 1.1.13 3994 | 3995 | is-date-object@1.0.5: 3996 | dependencies: 3997 | has-tostringtag: 1.0.2 3998 | 3999 | is-extendable@0.1.1: {} 4000 | 4001 | is-extendable@1.0.1: 4002 | dependencies: 4003 | is-plain-object: 2.0.4 4004 | 4005 | is-extglob@2.1.1: {} 4006 | 4007 | is-fullwidth-code-point@3.0.0: {} 4008 | 4009 | is-glob@4.0.3: 4010 | dependencies: 4011 | is-extglob: 2.1.1 4012 | 4013 | is-negative-zero@2.0.3: {} 4014 | 4015 | is-number-object@1.0.7: 4016 | dependencies: 4017 | has-tostringtag: 1.0.2 4018 | 4019 | is-number@7.0.0: {} 4020 | 4021 | is-path-inside@3.0.3: {} 4022 | 4023 | is-plain-object@2.0.4: 4024 | dependencies: 4025 | isobject: 3.0.1 4026 | 4027 | is-promise@2.2.2: {} 4028 | 4029 | is-regex@1.1.4: 4030 | dependencies: 4031 | call-bind: 1.0.7 4032 | has-tostringtag: 1.0.2 4033 | 4034 | is-shared-array-buffer@1.0.3: 4035 | dependencies: 4036 | call-bind: 1.0.7 4037 | 4038 | is-string@1.0.7: 4039 | dependencies: 4040 | has-tostringtag: 1.0.2 4041 | 4042 | is-symbol@1.0.4: 4043 | dependencies: 4044 | has-symbols: 1.0.3 4045 | 4046 | is-typed-array@1.1.13: 4047 | dependencies: 4048 | which-typed-array: 1.1.15 4049 | 4050 | is-weakref@1.0.2: 4051 | dependencies: 4052 | call-bind: 1.0.7 4053 | 4054 | isarray@0.0.1: {} 4055 | 4056 | isarray@2.0.5: {} 4057 | 4058 | isexe@2.0.0: {} 4059 | 4060 | isobject@3.0.1: {} 4061 | 4062 | its-fine@1.2.5(react@18.3.1): 4063 | dependencies: 4064 | '@types/react-reconciler': 0.28.8 4065 | react: 18.3.1 4066 | 4067 | jackspeak@3.4.3: 4068 | dependencies: 4069 | '@isaacs/cliui': 8.0.2 4070 | optionalDependencies: 4071 | '@pkgjs/parseargs': 0.11.0 4072 | 4073 | jiti@1.21.6: {} 4074 | 4075 | js-tokens@4.0.0: {} 4076 | 4077 | js-yaml@4.1.0: 4078 | dependencies: 4079 | argparse: 2.0.1 4080 | 4081 | jsesc@2.5.2: {} 4082 | 4083 | json-buffer@3.0.1: {} 4084 | 4085 | json-schema-traverse@0.4.1: {} 4086 | 4087 | json-stable-stringify-without-jsonify@1.0.1: {} 4088 | 4089 | json5@1.0.2: 4090 | dependencies: 4091 | minimist: 1.2.8 4092 | 4093 | json5@2.2.3: {} 4094 | 4095 | keyv@4.5.4: 4096 | dependencies: 4097 | json-buffer: 3.0.1 4098 | 4099 | leva@0.10.0(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 4100 | dependencies: 4101 | '@radix-ui/react-portal': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 4102 | '@radix-ui/react-tooltip': 1.0.5(@types/react@18.3.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 4103 | '@stitches/react': 1.2.8(react@18.3.1) 4104 | '@use-gesture/react': 10.3.1(react@18.3.1) 4105 | colord: 2.9.3 4106 | dequal: 2.0.3 4107 | merge-value: 1.0.0 4108 | react: 18.3.1 4109 | react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 4110 | react-dom: 18.3.1(react@18.3.1) 4111 | react-dropzone: 12.1.0(react@18.3.1) 4112 | v8n: 1.5.1 4113 | zustand: 3.7.2(react@18.3.1) 4114 | transitivePeerDependencies: 4115 | - '@types/react' 4116 | 4117 | levn@0.4.1: 4118 | dependencies: 4119 | prelude-ls: 1.2.1 4120 | type-check: 0.4.0 4121 | 4122 | lie@3.3.0: 4123 | dependencies: 4124 | immediate: 3.0.6 4125 | 4126 | lilconfig@2.1.0: {} 4127 | 4128 | lilconfig@3.1.2: {} 4129 | 4130 | lines-and-columns@1.2.4: {} 4131 | 4132 | locate-path@6.0.0: 4133 | dependencies: 4134 | p-locate: 5.0.0 4135 | 4136 | lodash.merge@4.6.2: {} 4137 | 4138 | loose-envify@1.4.0: 4139 | dependencies: 4140 | js-tokens: 4.0.0 4141 | 4142 | lru-cache@10.4.3: {} 4143 | 4144 | lru-cache@5.1.1: 4145 | dependencies: 4146 | yallist: 3.1.1 4147 | 4148 | maath@0.10.8(@types/three@0.167.2)(three@0.167.1): 4149 | dependencies: 4150 | '@types/three': 0.167.2 4151 | three: 0.167.1 4152 | 4153 | merge-value@1.0.0: 4154 | dependencies: 4155 | get-value: 2.0.6 4156 | is-extendable: 1.0.1 4157 | mixin-deep: 1.3.2 4158 | set-value: 2.0.1 4159 | 4160 | merge2@1.4.1: {} 4161 | 4162 | meshline@3.3.1(three@0.167.1): 4163 | dependencies: 4164 | three: 0.167.1 4165 | 4166 | meshoptimizer@0.18.1: {} 4167 | 4168 | micromatch@4.0.8: 4169 | dependencies: 4170 | braces: 3.0.3 4171 | picomatch: 2.3.1 4172 | 4173 | minimatch@3.1.2: 4174 | dependencies: 4175 | brace-expansion: 1.1.11 4176 | 4177 | minimatch@9.0.5: 4178 | dependencies: 4179 | brace-expansion: 2.0.1 4180 | 4181 | minimist@1.2.8: {} 4182 | 4183 | minipass@7.1.2: {} 4184 | 4185 | mixin-deep@1.3.2: 4186 | dependencies: 4187 | for-in: 1.0.2 4188 | is-extendable: 1.0.1 4189 | 4190 | ms@2.1.3: {} 4191 | 4192 | mz@2.7.0: 4193 | dependencies: 4194 | any-promise: 1.3.0 4195 | object-assign: 4.1.1 4196 | thenify-all: 1.6.0 4197 | 4198 | nanoid@3.3.7: {} 4199 | 4200 | natural-compare@1.4.0: {} 4201 | 4202 | node-releases@2.0.18: {} 4203 | 4204 | normalize-path@3.0.0: {} 4205 | 4206 | normalize-range@0.1.2: {} 4207 | 4208 | object-assign@4.1.1: {} 4209 | 4210 | object-hash@3.0.0: {} 4211 | 4212 | object-inspect@1.13.2: {} 4213 | 4214 | object-keys@1.1.1: {} 4215 | 4216 | object.assign@4.1.5: 4217 | dependencies: 4218 | call-bind: 1.0.7 4219 | define-properties: 1.2.1 4220 | has-symbols: 1.0.3 4221 | object-keys: 1.1.1 4222 | 4223 | object.fromentries@2.0.8: 4224 | dependencies: 4225 | call-bind: 1.0.7 4226 | define-properties: 1.2.1 4227 | es-abstract: 1.23.3 4228 | es-object-atoms: 1.0.0 4229 | 4230 | object.groupby@1.0.3: 4231 | dependencies: 4232 | call-bind: 1.0.7 4233 | define-properties: 1.2.1 4234 | es-abstract: 1.23.3 4235 | 4236 | object.values@1.2.0: 4237 | dependencies: 4238 | call-bind: 1.0.7 4239 | define-properties: 1.2.1 4240 | es-object-atoms: 1.0.0 4241 | 4242 | once@1.4.0: 4243 | dependencies: 4244 | wrappy: 1.0.2 4245 | 4246 | optionator@0.9.4: 4247 | dependencies: 4248 | deep-is: 0.1.4 4249 | fast-levenshtein: 2.0.6 4250 | levn: 0.4.1 4251 | prelude-ls: 1.2.1 4252 | type-check: 0.4.0 4253 | word-wrap: 1.2.5 4254 | 4255 | p-limit@3.1.0: 4256 | dependencies: 4257 | yocto-queue: 0.1.0 4258 | 4259 | p-locate@5.0.0: 4260 | dependencies: 4261 | p-limit: 3.1.0 4262 | 4263 | package-json-from-dist@1.0.0: {} 4264 | 4265 | parent-module@1.0.1: 4266 | dependencies: 4267 | callsites: 3.1.0 4268 | 4269 | path-exists@4.0.0: {} 4270 | 4271 | path-is-absolute@1.0.1: {} 4272 | 4273 | path-key@3.1.1: {} 4274 | 4275 | path-parse@1.0.7: {} 4276 | 4277 | path-scurry@1.11.1: 4278 | dependencies: 4279 | lru-cache: 10.4.3 4280 | minipass: 7.1.2 4281 | 4282 | picocolors@1.1.0: {} 4283 | 4284 | picomatch@2.3.1: {} 4285 | 4286 | pify@2.3.0: {} 4287 | 4288 | pirates@4.0.6: {} 4289 | 4290 | possible-typed-array-names@1.0.0: {} 4291 | 4292 | postcss-import@15.1.0(postcss@8.4.47): 4293 | dependencies: 4294 | postcss: 8.4.47 4295 | postcss-value-parser: 4.2.0 4296 | read-cache: 1.0.0 4297 | resolve: 1.22.8 4298 | 4299 | postcss-js@4.0.1(postcss@8.4.47): 4300 | dependencies: 4301 | camelcase-css: 2.0.1 4302 | postcss: 8.4.47 4303 | 4304 | postcss-load-config@4.0.2(postcss@8.4.47): 4305 | dependencies: 4306 | lilconfig: 3.1.2 4307 | yaml: 2.5.1 4308 | optionalDependencies: 4309 | postcss: 8.4.47 4310 | 4311 | postcss-nested@6.2.0(postcss@8.4.47): 4312 | dependencies: 4313 | postcss: 8.4.47 4314 | postcss-selector-parser: 6.1.2 4315 | 4316 | postcss-selector-parser@6.1.2: 4317 | dependencies: 4318 | cssesc: 3.0.0 4319 | util-deprecate: 1.0.2 4320 | 4321 | postcss-value-parser@4.2.0: {} 4322 | 4323 | postcss@8.4.47: 4324 | dependencies: 4325 | nanoid: 3.3.7 4326 | picocolors: 1.1.0 4327 | source-map-js: 1.2.1 4328 | 4329 | potpack@1.0.2: {} 4330 | 4331 | prelude-ls@1.2.1: {} 4332 | 4333 | prettier-plugin-tailwindcss@0.6.6(prettier@3.3.3): 4334 | dependencies: 4335 | prettier: 3.3.3 4336 | 4337 | prettier@3.3.3: {} 4338 | 4339 | promise-worker-transferable@1.0.4: 4340 | dependencies: 4341 | is-promise: 2.2.2 4342 | lie: 3.3.0 4343 | 4344 | prop-types@15.8.1: 4345 | dependencies: 4346 | loose-envify: 1.4.0 4347 | object-assign: 4.1.1 4348 | react-is: 16.13.1 4349 | 4350 | punycode@2.3.1: {} 4351 | 4352 | queue-microtask@1.2.3: {} 4353 | 4354 | r3f-perf@7.2.1(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(@types/react@18.3.8)(@types/three@0.167.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1): 4355 | dependencies: 4356 | '@radix-ui/react-icons': 1.3.0(react@18.3.1) 4357 | '@react-three/drei': 9.112.0(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(@types/react@18.3.8)(@types/three@0.167.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 4358 | '@stitches/react': 1.2.8(react@18.3.1) 4359 | '@utsubo/events': 0.1.7(react@18.3.1) 4360 | react: 18.3.1 4361 | three: 0.167.1 4362 | zustand: 4.5.5(@types/react@18.3.8)(react@18.3.1) 4363 | optionalDependencies: 4364 | '@react-three/fiber': 8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 4365 | react-dom: 18.3.1(react@18.3.1) 4366 | transitivePeerDependencies: 4367 | - '@types/react' 4368 | - '@types/three' 4369 | - immer 4370 | 4371 | react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 4372 | dependencies: 4373 | react: 18.3.1 4374 | react-dom: 18.3.1(react@18.3.1) 4375 | 4376 | react-composer@5.0.3(react@18.3.1): 4377 | dependencies: 4378 | prop-types: 15.8.1 4379 | react: 18.3.1 4380 | 4381 | react-dom@18.3.1(react@18.3.1): 4382 | dependencies: 4383 | loose-envify: 1.4.0 4384 | react: 18.3.1 4385 | scheduler: 0.23.2 4386 | 4387 | react-dropzone@12.1.0(react@18.3.1): 4388 | dependencies: 4389 | attr-accept: 2.2.5 4390 | file-selector: 0.5.0 4391 | prop-types: 15.8.1 4392 | react: 18.3.1 4393 | 4394 | react-is@16.13.1: {} 4395 | 4396 | react-reconciler@0.27.0(react@18.3.1): 4397 | dependencies: 4398 | loose-envify: 1.4.0 4399 | react: 18.3.1 4400 | scheduler: 0.21.0 4401 | 4402 | react-refresh@0.14.2: {} 4403 | 4404 | react@18.3.1: 4405 | dependencies: 4406 | loose-envify: 1.4.0 4407 | 4408 | read-cache@1.0.0: 4409 | dependencies: 4410 | pify: 2.3.0 4411 | 4412 | readable-stream@1.0.34: 4413 | dependencies: 4414 | core-util-is: 1.0.3 4415 | inherits: 2.0.4 4416 | isarray: 0.0.1 4417 | string_decoder: 0.10.31 4418 | 4419 | readdirp@3.6.0: 4420 | dependencies: 4421 | picomatch: 2.3.1 4422 | 4423 | regenerator-runtime@0.14.1: {} 4424 | 4425 | regexp.prototype.flags@1.5.2: 4426 | dependencies: 4427 | call-bind: 1.0.7 4428 | define-properties: 1.2.1 4429 | es-errors: 1.3.0 4430 | set-function-name: 2.0.2 4431 | 4432 | require-from-string@2.0.2: {} 4433 | 4434 | resolve-from@4.0.0: {} 4435 | 4436 | resolve@1.22.8: 4437 | dependencies: 4438 | is-core-module: 2.15.1 4439 | path-parse: 1.0.7 4440 | supports-preserve-symlinks-flag: 1.0.0 4441 | 4442 | reusify@1.0.4: {} 4443 | 4444 | rimraf@3.0.2: 4445 | dependencies: 4446 | glob: 7.2.3 4447 | 4448 | rollup@4.22.1: 4449 | dependencies: 4450 | '@types/estree': 1.0.5 4451 | optionalDependencies: 4452 | '@rollup/rollup-android-arm-eabi': 4.22.1 4453 | '@rollup/rollup-android-arm64': 4.22.1 4454 | '@rollup/rollup-darwin-arm64': 4.22.1 4455 | '@rollup/rollup-darwin-x64': 4.22.1 4456 | '@rollup/rollup-linux-arm-gnueabihf': 4.22.1 4457 | '@rollup/rollup-linux-arm-musleabihf': 4.22.1 4458 | '@rollup/rollup-linux-arm64-gnu': 4.22.1 4459 | '@rollup/rollup-linux-arm64-musl': 4.22.1 4460 | '@rollup/rollup-linux-powerpc64le-gnu': 4.22.1 4461 | '@rollup/rollup-linux-riscv64-gnu': 4.22.1 4462 | '@rollup/rollup-linux-s390x-gnu': 4.22.1 4463 | '@rollup/rollup-linux-x64-gnu': 4.22.1 4464 | '@rollup/rollup-linux-x64-musl': 4.22.1 4465 | '@rollup/rollup-win32-arm64-msvc': 4.22.1 4466 | '@rollup/rollup-win32-ia32-msvc': 4.22.1 4467 | '@rollup/rollup-win32-x64-msvc': 4.22.1 4468 | fsevents: 2.3.3 4469 | 4470 | run-parallel@1.2.0: 4471 | dependencies: 4472 | queue-microtask: 1.2.3 4473 | 4474 | safe-array-concat@1.1.2: 4475 | dependencies: 4476 | call-bind: 1.0.7 4477 | get-intrinsic: 1.2.4 4478 | has-symbols: 1.0.3 4479 | isarray: 2.0.5 4480 | 4481 | safe-regex-test@1.0.3: 4482 | dependencies: 4483 | call-bind: 1.0.7 4484 | es-errors: 1.3.0 4485 | is-regex: 1.1.4 4486 | 4487 | scheduler@0.21.0: 4488 | dependencies: 4489 | loose-envify: 1.4.0 4490 | 4491 | scheduler@0.23.2: 4492 | dependencies: 4493 | loose-envify: 1.4.0 4494 | 4495 | semver@6.3.1: {} 4496 | 4497 | semver@7.6.3: {} 4498 | 4499 | set-function-length@1.2.2: 4500 | dependencies: 4501 | define-data-property: 1.1.4 4502 | es-errors: 1.3.0 4503 | function-bind: 1.1.2 4504 | get-intrinsic: 1.2.4 4505 | gopd: 1.0.1 4506 | has-property-descriptors: 1.0.2 4507 | 4508 | set-function-name@2.0.2: 4509 | dependencies: 4510 | define-data-property: 1.1.4 4511 | es-errors: 1.3.0 4512 | functions-have-names: 1.2.3 4513 | has-property-descriptors: 1.0.2 4514 | 4515 | set-value@2.0.1: 4516 | dependencies: 4517 | extend-shallow: 2.0.1 4518 | is-extendable: 0.1.1 4519 | is-plain-object: 2.0.4 4520 | split-string: 3.1.0 4521 | 4522 | shebang-command@2.0.0: 4523 | dependencies: 4524 | shebang-regex: 3.0.0 4525 | 4526 | shebang-regex@3.0.0: {} 4527 | 4528 | side-channel@1.0.6: 4529 | dependencies: 4530 | call-bind: 1.0.7 4531 | es-errors: 1.3.0 4532 | get-intrinsic: 1.2.4 4533 | object-inspect: 1.13.2 4534 | 4535 | signal-exit@4.1.0: {} 4536 | 4537 | source-map-js@1.2.1: {} 4538 | 4539 | split-string@3.1.0: 4540 | dependencies: 4541 | extend-shallow: 3.0.2 4542 | 4543 | stats-gl@2.2.8: 4544 | dependencies: 4545 | '@types/three': 0.163.0 4546 | 4547 | stats.js@0.17.0: {} 4548 | 4549 | string-width@4.2.3: 4550 | dependencies: 4551 | emoji-regex: 8.0.0 4552 | is-fullwidth-code-point: 3.0.0 4553 | strip-ansi: 6.0.1 4554 | 4555 | string-width@5.1.2: 4556 | dependencies: 4557 | eastasianwidth: 0.2.0 4558 | emoji-regex: 9.2.2 4559 | strip-ansi: 7.1.0 4560 | 4561 | string.prototype.trim@1.2.9: 4562 | dependencies: 4563 | call-bind: 1.0.7 4564 | define-properties: 1.2.1 4565 | es-abstract: 1.23.3 4566 | es-object-atoms: 1.0.0 4567 | 4568 | string.prototype.trimend@1.0.8: 4569 | dependencies: 4570 | call-bind: 1.0.7 4571 | define-properties: 1.2.1 4572 | es-object-atoms: 1.0.0 4573 | 4574 | string.prototype.trimstart@1.0.8: 4575 | dependencies: 4576 | call-bind: 1.0.7 4577 | define-properties: 1.2.1 4578 | es-object-atoms: 1.0.0 4579 | 4580 | string_decoder@0.10.31: {} 4581 | 4582 | strip-ansi@6.0.1: 4583 | dependencies: 4584 | ansi-regex: 5.0.1 4585 | 4586 | strip-ansi@7.1.0: 4587 | dependencies: 4588 | ansi-regex: 6.1.0 4589 | 4590 | strip-bom@3.0.0: {} 4591 | 4592 | strip-json-comments@3.1.1: {} 4593 | 4594 | sucrase@3.35.0: 4595 | dependencies: 4596 | '@jridgewell/gen-mapping': 0.3.5 4597 | commander: 4.1.1 4598 | glob: 10.4.5 4599 | lines-and-columns: 1.2.4 4600 | mz: 2.7.0 4601 | pirates: 4.0.6 4602 | ts-interface-checker: 0.1.13 4603 | 4604 | supports-color@5.5.0: 4605 | dependencies: 4606 | has-flag: 3.0.0 4607 | 4608 | supports-color@7.2.0: 4609 | dependencies: 4610 | has-flag: 4.0.0 4611 | 4612 | supports-preserve-symlinks-flag@1.0.0: {} 4613 | 4614 | suspend-react@0.1.3(react@18.3.1): 4615 | dependencies: 4616 | react: 18.3.1 4617 | 4618 | tailwindcss-animate@1.0.7(tailwindcss@3.4.12): 4619 | dependencies: 4620 | tailwindcss: 3.4.12 4621 | 4622 | tailwindcss@3.4.12: 4623 | dependencies: 4624 | '@alloc/quick-lru': 5.2.0 4625 | arg: 5.0.2 4626 | chokidar: 3.6.0 4627 | didyoumean: 1.2.2 4628 | dlv: 1.1.3 4629 | fast-glob: 3.3.2 4630 | glob-parent: 6.0.2 4631 | is-glob: 4.0.3 4632 | jiti: 1.21.6 4633 | lilconfig: 2.1.0 4634 | micromatch: 4.0.8 4635 | normalize-path: 3.0.0 4636 | object-hash: 3.0.0 4637 | picocolors: 1.1.0 4638 | postcss: 8.4.47 4639 | postcss-import: 15.1.0(postcss@8.4.47) 4640 | postcss-js: 4.0.1(postcss@8.4.47) 4641 | postcss-load-config: 4.0.2(postcss@8.4.47) 4642 | postcss-nested: 6.2.0(postcss@8.4.47) 4643 | postcss-selector-parser: 6.1.2 4644 | resolve: 1.22.8 4645 | sucrase: 3.35.0 4646 | transitivePeerDependencies: 4647 | - ts-node 4648 | 4649 | text-table@0.2.0: {} 4650 | 4651 | thenify-all@1.6.0: 4652 | dependencies: 4653 | thenify: 3.3.1 4654 | 4655 | thenify@3.3.1: 4656 | dependencies: 4657 | any-promise: 1.3.0 4658 | 4659 | three-custom-shader-material@5.4.0(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1))(react@18.3.1)(three@0.167.1): 4660 | dependencies: 4661 | glsl-token-functions: 1.0.1 4662 | glsl-token-string: 1.0.1 4663 | glsl-tokenizer: 2.1.5 4664 | object-hash: 3.0.0 4665 | three: 0.167.1 4666 | optionalDependencies: 4667 | '@react-three/fiber': 8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.167.1) 4668 | react: 18.3.1 4669 | 4670 | three-mesh-bvh@0.7.6(three@0.167.1): 4671 | dependencies: 4672 | three: 0.167.1 4673 | 4674 | three-stdlib@2.33.0(three@0.167.1): 4675 | dependencies: 4676 | '@types/draco3d': 1.4.10 4677 | '@types/offscreencanvas': 2019.7.3 4678 | '@types/webxr': 0.5.20 4679 | draco3d: 1.5.7 4680 | fflate: 0.6.10 4681 | potpack: 1.0.2 4682 | three: 0.167.1 4683 | 4684 | three@0.167.1: {} 4685 | 4686 | through2@0.6.5: 4687 | dependencies: 4688 | readable-stream: 1.0.34 4689 | xtend: 4.0.2 4690 | 4691 | to-fast-properties@2.0.0: {} 4692 | 4693 | to-regex-range@5.0.1: 4694 | dependencies: 4695 | is-number: 7.0.0 4696 | 4697 | troika-three-text@0.49.1(three@0.167.1): 4698 | dependencies: 4699 | bidi-js: 1.0.3 4700 | three: 0.167.1 4701 | troika-three-utils: 0.49.0(three@0.167.1) 4702 | troika-worker-utils: 0.49.0 4703 | webgl-sdf-generator: 1.1.1 4704 | 4705 | troika-three-utils@0.49.0(three@0.167.1): 4706 | dependencies: 4707 | three: 0.167.1 4708 | 4709 | troika-worker-utils@0.49.0: {} 4710 | 4711 | ts-api-utils@1.3.0(typescript@5.6.2): 4712 | dependencies: 4713 | typescript: 5.6.2 4714 | 4715 | ts-interface-checker@0.1.13: {} 4716 | 4717 | tsconfig-paths@3.15.0: 4718 | dependencies: 4719 | '@types/json5': 0.0.29 4720 | json5: 1.0.2 4721 | minimist: 1.2.8 4722 | strip-bom: 3.0.0 4723 | 4724 | tslib@2.7.0: {} 4725 | 4726 | tunnel-rat@0.1.2(@types/react@18.3.8)(react@18.3.1): 4727 | dependencies: 4728 | zustand: 4.5.5(@types/react@18.3.8)(react@18.3.1) 4729 | transitivePeerDependencies: 4730 | - '@types/react' 4731 | - immer 4732 | - react 4733 | 4734 | type-check@0.4.0: 4735 | dependencies: 4736 | prelude-ls: 1.2.1 4737 | 4738 | type-fest@0.20.2: {} 4739 | 4740 | typed-array-buffer@1.0.2: 4741 | dependencies: 4742 | call-bind: 1.0.7 4743 | es-errors: 1.3.0 4744 | is-typed-array: 1.1.13 4745 | 4746 | typed-array-byte-length@1.0.1: 4747 | dependencies: 4748 | call-bind: 1.0.7 4749 | for-each: 0.3.3 4750 | gopd: 1.0.1 4751 | has-proto: 1.0.3 4752 | is-typed-array: 1.1.13 4753 | 4754 | typed-array-byte-offset@1.0.2: 4755 | dependencies: 4756 | available-typed-arrays: 1.0.7 4757 | call-bind: 1.0.7 4758 | for-each: 0.3.3 4759 | gopd: 1.0.1 4760 | has-proto: 1.0.3 4761 | is-typed-array: 1.1.13 4762 | 4763 | typed-array-length@1.0.6: 4764 | dependencies: 4765 | call-bind: 1.0.7 4766 | for-each: 0.3.3 4767 | gopd: 1.0.1 4768 | has-proto: 1.0.3 4769 | is-typed-array: 1.1.13 4770 | possible-typed-array-names: 1.0.0 4771 | 4772 | typescript-eslint@8.6.0(eslint@8.57.1)(typescript@5.6.2): 4773 | dependencies: 4774 | '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2) 4775 | '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 4776 | '@typescript-eslint/utils': 8.6.0(eslint@8.57.1)(typescript@5.6.2) 4777 | optionalDependencies: 4778 | typescript: 5.6.2 4779 | transitivePeerDependencies: 4780 | - eslint 4781 | - supports-color 4782 | 4783 | typescript@5.6.2: {} 4784 | 4785 | unbox-primitive@1.0.2: 4786 | dependencies: 4787 | call-bind: 1.0.7 4788 | has-bigints: 1.0.2 4789 | has-symbols: 1.0.3 4790 | which-boxed-primitive: 1.0.2 4791 | 4792 | undici-types@6.19.8: {} 4793 | 4794 | update-browserslist-db@1.1.0(browserslist@4.23.3): 4795 | dependencies: 4796 | browserslist: 4.23.3 4797 | escalade: 3.2.0 4798 | picocolors: 1.1.0 4799 | 4800 | uri-js@4.4.1: 4801 | dependencies: 4802 | punycode: 2.3.1 4803 | 4804 | use-isomorphic-layout-effect@1.2.0(@types/react@18.3.8)(react@18.3.1): 4805 | dependencies: 4806 | react: 18.3.1 4807 | optionalDependencies: 4808 | '@types/react': 18.3.8 4809 | 4810 | use-sync-external-store@1.2.2(react@18.3.1): 4811 | dependencies: 4812 | react: 18.3.1 4813 | 4814 | util-deprecate@1.0.2: {} 4815 | 4816 | utility-types@3.11.0: {} 4817 | 4818 | uuid@9.0.1: {} 4819 | 4820 | v8n@1.5.1: {} 4821 | 4822 | vite@5.4.6(@types/node@22.5.5): 4823 | dependencies: 4824 | esbuild: 0.21.5 4825 | postcss: 8.4.47 4826 | rollup: 4.22.1 4827 | optionalDependencies: 4828 | '@types/node': 22.5.5 4829 | fsevents: 2.3.3 4830 | 4831 | webgl-constants@1.1.1: {} 4832 | 4833 | webgl-sdf-generator@1.1.1: {} 4834 | 4835 | which-boxed-primitive@1.0.2: 4836 | dependencies: 4837 | is-bigint: 1.0.4 4838 | is-boolean-object: 1.1.2 4839 | is-number-object: 1.0.7 4840 | is-string: 1.0.7 4841 | is-symbol: 1.0.4 4842 | 4843 | which-typed-array@1.1.15: 4844 | dependencies: 4845 | available-typed-arrays: 1.0.7 4846 | call-bind: 1.0.7 4847 | for-each: 0.3.3 4848 | gopd: 1.0.1 4849 | has-tostringtag: 1.0.2 4850 | 4851 | which@2.0.2: 4852 | dependencies: 4853 | isexe: 2.0.0 4854 | 4855 | word-wrap@1.2.5: {} 4856 | 4857 | wrap-ansi@7.0.0: 4858 | dependencies: 4859 | ansi-styles: 4.3.0 4860 | string-width: 4.2.3 4861 | strip-ansi: 6.0.1 4862 | 4863 | wrap-ansi@8.1.0: 4864 | dependencies: 4865 | ansi-styles: 6.2.1 4866 | string-width: 5.1.2 4867 | strip-ansi: 7.1.0 4868 | 4869 | wrappy@1.0.2: {} 4870 | 4871 | xtend@4.0.2: {} 4872 | 4873 | yallist@3.1.1: {} 4874 | 4875 | yaml@2.5.1: {} 4876 | 4877 | yocto-queue@0.1.0: {} 4878 | 4879 | zustand@3.7.2(react@18.3.1): 4880 | optionalDependencies: 4881 | react: 18.3.1 4882 | 4883 | zustand@4.5.5(@types/react@18.3.8)(react@18.3.1): 4884 | dependencies: 4885 | use-sync-external-store: 1.2.2(react@18.3.1) 4886 | optionalDependencies: 4887 | '@types/react': 18.3.8 4888 | react: 18.3.1 4889 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/bath3.1.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seantai/greentub/1bab46382dcec5852dbc9ac5b7a606ce0fa2fcae/public/bath3.1.glb -------------------------------------------------------------------------------- /public/fav.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seantai/greentub/1bab46382dcec5852dbc9ac5b7a606ce0fa2fcae/public/fav.ico -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { Suspense } from 'react'; 2 | import { CanvasWrapper } from './components/CanvasWrapper'; 3 | import { CameraStuff } from './components/CameraStuff'; 4 | import { Loader } from './components/Loader'; 5 | // @ts-ignore 6 | import { Bath } from './components/Bath'; 7 | // @ts-ignore 8 | import { Lights } from './components/Lights'; 9 | import { Spinner } from './components/Spinner'; 10 | 11 | const Scene = () => { 12 | return ( 13 | <> 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default function App() { 27 | return ( 28 |
29 |
30 |
31 |

32 | Green Baths 33 |

34 | 35 | 36 | 37 | 38 |
39 |
40 | 41 |
42 | ); 43 | } 44 | -------------------------------------------------------------------------------- /src/components/Bath.jsx: -------------------------------------------------------------------------------- 1 | import { ContactShadows, useGLTF } from '@react-three/drei'; 2 | import { useFrame } from '@react-three/fiber'; 3 | import React, { useCallback, useRef, useState } from 'react'; 4 | import * as THREE from 'three'; 5 | 6 | export function Bath() { 7 | const { nodes, materials } = useGLTF('bath3.1.glb'); 8 | 9 | const [targetMousePos] = useState(new THREE.Vector3(0, 0, 0)); 10 | const [currentMousePos] = useState(new THREE.Vector3(0, 0, 0)); 11 | 12 | const uniformsRef = useRef({ 13 | time: { value: 0 }, 14 | mousePos: { value: [0, 0, 0] } 15 | }); 16 | 17 | const meshRef = useRef(null); 18 | 19 | const easeSpeed = 0.075; 20 | const returnSpeed = 0.02; 21 | const returnDelayRef = useRef(0); 22 | const returnDelayAmount = 60; 23 | 24 | const modifyShader = useCallback((shader) => { 25 | shader.uniforms.time = uniformsRef.current.time; 26 | shader.uniforms.mousePos = uniformsRef.current.mousePos; 27 | 28 | shader.vertexShader = shader.vertexShader.replace( 29 | 'void main() {', 30 | ` 31 | uniform float time; 32 | uniform vec3 mousePos; 33 | 34 | void main() { 35 | ` 36 | ); 37 | 38 | // Replace the position calculation - start with scale 0, grow on hover 39 | shader.vertexShader = shader.vertexShader.replace( 40 | '#include ', 41 | ` 42 | #include 43 | 44 | vec3 instancePos = vec3(instanceMatrix[3][0], instanceMatrix[3][1], instanceMatrix[3][2]); 45 | 46 | float distance = length(instancePos - mousePos); 47 | 48 | float strength = 1.0 - smoothstep(0.0, 1., distance); 49 | 50 | // Start at scale 0, grow to full size on hover 51 | float scaleFactor = strength; 52 | transformed *= scaleFactor * 1.5; 53 | ` 54 | ); 55 | 56 | return shader; 57 | }, []); 58 | 59 | const dummyVector = new THREE.Vector3(0, 0, 0); 60 | useFrame((state) => { 61 | if (!meshRef.current) return; 62 | 63 | uniformsRef.current.time.value = state.clock.elapsedTime; 64 | 65 | const { raycaster } = state; 66 | 67 | const intersects = raycaster.intersectObject(meshRef.current, true); 68 | const point = intersects[0]?.point || dummyVector; 69 | 70 | // Update hover state and delay 71 | const intersections = intersects.length > 0; 72 | returnDelayRef.current = intersections 73 | ? returnDelayAmount 74 | : Math.max(0, returnDelayRef.current - 1); 75 | 76 | // Update target position based on hover state and delay 77 | if (intersections) { 78 | targetMousePos.lerp(point, 0.2); 79 | } else if (returnDelayRef.current === 0) { 80 | targetMousePos.set(0, 0, 0); 81 | } 82 | 83 | // Smooth movement with dynamic speed 84 | const speed = intersections ? easeSpeed : returnSpeed; 85 | currentMousePos.lerp(targetMousePos, speed); 86 | 87 | uniformsRef.current.mousePos.value = [ 88 | currentMousePos.x, 89 | currentMousePos.y, 90 | currentMousePos.z 91 | ]; 92 | }); 93 | 94 | return ( 95 | 96 | 103 | 112 | {/* null} 114 | geometry={nodes.Plane001_1.geometry} 115 | material={materials.Chrome} 116 | /> */} 117 | 120 | { 126 | modifyShader(shader); 127 | }} 128 | /> 129 | 130 | 133 | { 139 | modifyShader(shader); 140 | }} 141 | /> 142 | 143 | 146 | { 152 | modifyShader(shader); 153 | }} 154 | /> 155 | 156 | 159 | { 165 | modifyShader(shader); 166 | }} 167 | /> 168 | 169 | 172 | { 176 | modifyShader(shader); 177 | }} 178 | /> 179 | 180 | 181 | ); 182 | } 183 | -------------------------------------------------------------------------------- /src/components/CameraStuff.tsx: -------------------------------------------------------------------------------- 1 | import { CameraControls, PerspectiveCamera } from '@react-three/drei'; 2 | import { useThree } from '@react-three/fiber'; 3 | import { useEffect } from 'react'; 4 | export const CameraStuff = () => { 5 | const controls = useThree((state) => state.controls); 6 | 7 | useEffect(() => { 8 | if (controls) { 9 | //@ts-ignore 10 | controls.dollyTo(2, true); 11 | } 12 | }, [controls]); 13 | 14 | return ( 15 | <> 16 | 22 | 40 | 41 | ); 42 | }; 43 | -------------------------------------------------------------------------------- /src/components/CanvasWrapper.tsx: -------------------------------------------------------------------------------- 1 | import { Canvas, CanvasProps } from '@react-three/fiber'; 2 | import { Bvh } from '@react-three/drei'; 3 | import { motion as fm } from 'framer-motion'; 4 | import { useSceneLoadedStore } from '../store'; 5 | 6 | export const CanvasWrapper = ({ 7 | children, 8 | canvasProps = {} 9 | }: { 10 | children: React.ReactNode; 11 | canvasProps?: Partial; 12 | }) => { 13 | const { isSceneLoaded } = useSceneLoadedStore(); 14 | 15 | return ( 16 | 21 | 25 | {children} 26 | 27 | 28 | ); 29 | }; 30 | -------------------------------------------------------------------------------- /src/components/Lights.tsx: -------------------------------------------------------------------------------- 1 | import { ContactShadows } from '@react-three/drei'; 2 | 3 | export const Lights = () => { 4 | // const directionalLightRef = useRef(null!); 5 | 6 | // useHelper(directionalLightRef, DirectionalLightHelper, 1, 'red'); 7 | 8 | // const { 9 | // ambientIntensity, 10 | // directionalLightIntensity, 11 | // directionalLightPosition, 12 | // environmentIntensity 13 | // } = useControls('Lights', { 14 | // ambientIntensity: { value: 2, min: 0, max: 10, step: 0.1 }, 15 | // directionalLightIntensity: { value: 2.5, min: 0, max: 10, step: 0.1 }, 16 | // directionalLightPosition: { 17 | // // value: [3, 8, -2], 18 | // value: [-5, 3, -1], 19 | // min: -50, 20 | // max: 50, 21 | // step: 0.1 22 | // }, 23 | // environmentIntensity: { value: 0, min: 0, max: 1, step: 0.01 } 24 | // }); 25 | 26 | return ( 27 | <> 28 | {/* */} 32 | 36 | 52 | 53 | 62 | 63 | ); 64 | }; 65 | -------------------------------------------------------------------------------- /src/components/Loader.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | import { useSceneLoadedStore } from '../store'; 3 | 4 | export const Loader = () => { 5 | const { setSceneLoaded } = useSceneLoadedStore(); 6 | 7 | useEffect(() => { 8 | setSceneLoaded(true); 9 | }, [setSceneLoaded]); 10 | 11 | return null; 12 | }; 13 | -------------------------------------------------------------------------------- /src/components/Spinner.tsx: -------------------------------------------------------------------------------- 1 | import { useSceneLoadedStore } from '../store'; 2 | 3 | export const Spinner = () => { 4 | const { isSceneLoaded } = useSceneLoadedStore(); 5 | 6 | return ( 7 | <> 8 | {!isSceneLoaded && ( 9 |
10 |
11 |
12 | )} 13 | 14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | html, 7 | body, 8 | #root, 9 | canvas { 10 | overflow: hidden; 11 | width: 100%; 12 | height: 100%; 13 | } 14 | } 15 | 16 | body, 17 | html { 18 | background-color: #e2dbc9; 19 | } 20 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import { createRoot } from 'react-dom/client'; 2 | 3 | import App from './App.tsx'; 4 | import './index.css'; 5 | 6 | createRoot(document.getElementById('root')!).render(); 7 | -------------------------------------------------------------------------------- /src/lib/enums.ts: -------------------------------------------------------------------------------- 1 | export enum CONTROLS_ACTION { 2 | NONE = 0, 3 | ROTATE = 1, 4 | TRUCK = 2, 5 | OFFSET = 4, 6 | DOLLY = 8, 7 | ZOOM = 16, 8 | TOUCH_ROTATE = 32, 9 | TOUCH_TRUCK = 64, 10 | TOUCH_OFFSET = 128, 11 | TOUCH_DOLLY = 256, 12 | TOUCH_ZOOM = 512, 13 | TOUCH_DOLLY_TRUCK = 1024, 14 | TOUCH_DOLLY_OFFSET = 2048, 15 | TOUCH_DOLLY_ROTATE = 4096, 16 | TOUCH_ZOOM_TRUCK = 8192, 17 | TOUCH_ZOOM_OFFSET = 16384, 18 | TOUCH_ZOOM_ROTATE = 32768 19 | } 20 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | 3 | export function useResponsiveScale( 4 | baseWidth = 1300, 5 | minScale = 0.5, 6 | maxScale = 1.2 7 | ) { 8 | const [size, setSize] = useState([window.innerWidth, window.innerHeight]); 9 | 10 | useEffect(() => { 11 | function updateSize() { 12 | setSize([window.innerWidth, window.innerHeight]); 13 | } 14 | 15 | let timeoutId: ReturnType; 16 | function handleResize() { 17 | clearTimeout(timeoutId); 18 | timeoutId = setTimeout(updateSize, 50); 19 | } 20 | 21 | window.addEventListener('resize', handleResize); 22 | updateSize(); 23 | return () => window.removeEventListener('resize', handleResize); 24 | }, []); 25 | 26 | const scale = Math.min(Math.max(size[0] / baseWidth, minScale), maxScale); 27 | 28 | return { scale }; 29 | } 30 | 31 | export const usePreventEventsOnElements = ( 32 | eventTypes: string[], 33 | elementIds: string[] 34 | ) => { 35 | useEffect(() => { 36 | const elements = elementIds 37 | .map((id) => document.getElementById(id)) 38 | .filter((el): el is HTMLElement => el !== null); 39 | if (elements.length === 0) return; 40 | 41 | const preventEvent = (e: Event) => { 42 | e.stopPropagation(); 43 | }; 44 | 45 | const addedListeners: { element: HTMLElement; eventType: string }[] = []; 46 | 47 | elements.forEach((element) => { 48 | eventTypes.forEach((eventType) => { 49 | element.addEventListener(eventType, preventEvent, { capture: true }); 50 | addedListeners.push({ element, eventType }); 51 | }); 52 | }); 53 | 54 | return () => { 55 | addedListeners.forEach(({ element, eventType }) => { 56 | element.removeEventListener(eventType, preventEvent, { 57 | capture: true 58 | }); 59 | }); 60 | }; 61 | }, [elementIds, eventTypes]); 62 | }; 63 | -------------------------------------------------------------------------------- /src/store.ts: -------------------------------------------------------------------------------- 1 | import { create } from 'zustand'; 2 | 3 | type SceneLoadedStore = { 4 | isSceneLoaded: boolean; 5 | setSceneLoaded: (loaded: boolean) => void; 6 | }; 7 | 8 | export const useSceneLoadedStore = create((set) => ({ 9 | isSceneLoaded: false, 10 | setSceneLoaded: (loaded) => set({ isSceneLoaded: loaded }) 11 | })); 12 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | darkMode: ['class'], 4 | content: [ 5 | './pages/**/*.{ts,tsx}', 6 | './components/**/*.{ts,tsx}', 7 | './app/**/*.{ts,tsx}', 8 | './src/**/*.{ts,tsx}', 9 | './index.html' 10 | ], 11 | theme: { 12 | container: { 13 | center: true, 14 | padding: '2rem', 15 | screens: { 16 | '2xl': '1400px' 17 | } 18 | }, 19 | extend: { 20 | fontFamily: { 21 | inter: ['Inter var', 'sans-serif'] 22 | }, 23 | colors: { 24 | lumored: { 25 | 50: '#fdf4f3', 26 | 100: '#fce6e4', 27 | 200: '#fad2ce', 28 | 300: '#f5b3ac', 29 | 400: '#ed877c', 30 | 500: '#e26254', 31 | 600: '#ce4334', 32 | 700: '#ad3528', 33 | 800: '#8f2f25', 34 | 900: '#772d25' 35 | }, 36 | lumobeige: { 37 | 50: '#FAF4F0', 38 | 100: '#eeeae8', 39 | 200: '#d9d2ce', 40 | 300: '#c1b5ae', 41 | 400: '#a79790', 42 | 500: '#94817a', 43 | 600: '#87736e', 44 | 700: '#6f5f5d', 45 | 800: '#5a5453', 46 | 900: '#484747' 47 | } 48 | }, 49 | padding: { 50 | '1/3': '33.333333%' 51 | } 52 | } 53 | }, 54 | plugins: [require('tailwindcss-animate')] 55 | }; 56 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "lib": ["ES2023", "DOM", "DOM.Iterable"], 5 | "module": "ESNext", 6 | "skipLibCheck": true, 7 | 8 | /* Bundler mode */ 9 | "moduleResolution": "bundler", 10 | "allowImportingTsExtensions": true, 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "noEmit": true, 14 | "jsx": "react-jsx", 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": false, 19 | "noUnusedParameters": false, 20 | "noFallthroughCasesInSwitch": true, 21 | 22 | /* Paths */ 23 | "baseUrl": ".", 24 | "paths": { 25 | "@/*": ["./src/*"] 26 | } 27 | }, 28 | "include": ["src/**/*", "vite.config.ts"] 29 | } 30 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | 3 | import react from '@vitejs/plugin-react'; 4 | import { defineConfig } from 'vite'; 5 | 6 | export default defineConfig({ 7 | plugins: [react()], 8 | resolve: { 9 | alias: { 10 | '@': path.resolve(__dirname, './src') 11 | } 12 | } 13 | }); 14 | --------------------------------------------------------------------------------