From 6f260411a403dbd05fa36743b5f04d620bff8968 Mon Sep 17 00:00:00 2001 From: Captain Cool Date: Fri, 24 May 2024 08:40:18 +0530 Subject: [PATCH 1/8] Added gltf collision examples --- testbed3d/package.json | 4 +- testbed3d/pnpm-lock.yaml | 2464 ++++++++++++++++++++++++ testbed3d/src/demos/glbToTrimesh.ts | 61 + testbed3d/src/demos/glbtoConvexHull.ts | 56 + testbed3d/src/index.ts | 6 +- testbed3d/static/sage.glb | Bin 0 -> 191112 bytes 6 files changed, 2588 insertions(+), 3 deletions(-) create mode 100644 testbed3d/pnpm-lock.yaml create mode 100644 testbed3d/src/demos/glbToTrimesh.ts create mode 100644 testbed3d/src/demos/glbtoConvexHull.ts create mode 100644 testbed3d/static/sage.glb diff --git a/testbed3d/package.json b/testbed3d/package.json index a47dae51..b92bc44b 100644 --- a/testbed3d/package.json +++ b/testbed3d/package.json @@ -11,12 +11,12 @@ "test": "cargo test && wasm-pack test --headless" }, "dependencies": { - "@dimforge/rapier3d": "file:../rapier3d", + "@dimforge/rapier3d": "0.13.1", "lil-gui": "^0.17.0", "md5": "^2.3.0", "seedrandom": "^3.0.5", "stats.js": "^0.17.0", - "three": "^0.146.0" + "three": "0.146.0" }, "devDependencies": { "@types/md5": "^2.3.2", diff --git a/testbed3d/pnpm-lock.yaml b/testbed3d/pnpm-lock.yaml new file mode 100644 index 00000000..229681bb --- /dev/null +++ b/testbed3d/pnpm-lock.yaml @@ -0,0 +1,2464 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@dimforge/rapier3d': + specifier: 0.13.1 + version: 0.13.1 + lil-gui: + specifier: ^0.17.0 + version: 0.17.0 + md5: + specifier: ^2.3.0 + version: 2.3.0 + seedrandom: + specifier: ^3.0.5 + version: 3.0.5 + stats.js: + specifier: ^0.17.0 + version: 0.17.0 + three: + specifier: 0.146.0 + version: 0.146.0 + +devDependencies: + '@types/md5': + specifier: ^2.3.2 + version: 2.3.5 + '@types/seedrandom': + specifier: ^3.0.2 + version: 3.0.8 + '@types/stats.js': + specifier: ^0.17.0 + version: 0.17.3 + '@types/three': + specifier: ^0.144.0 + version: 0.144.0 + copy-webpack-plugin: + specifier: ^11.0.0 + version: 11.0.0(webpack@5.91.0) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + ts-loader: + specifier: ^9.4.1 + version: 9.5.1(typescript@4.9.5)(webpack@5.91.0) + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.74.0 + version: 5.91.0(webpack-cli@4.10.0) + webpack-cli: + specifier: ^4.10.0 + version: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) + webpack-dev-server: + specifier: ^4.11.1 + version: 4.15.2(webpack-cli@4.10.0)(webpack@5.91.0) + +packages: + + /@dimforge/rapier3d@0.13.1: + resolution: {integrity: sha512-ITCUCqks70njfFt7S+AEynMw4mpNJLmVWkWDzePhe74YLRWbe4Pu8VOyks2hqHBeTCj2Ts7SE5xoyvg9VsyNMg==} + dev: false + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@leichtgewicht/ip-codec@2.0.5: + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.12.12 + dev: true + + /@types/bonjour@3.5.13: + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + dependencies: + '@types/node': 20.12.12 + dev: true + + /@types/connect-history-api-fallback@1.5.4: + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + dependencies: + '@types/express-serve-static-core': 4.19.1 + '@types/node': 20.12.12 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 20.12.12 + dev: true + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.10 + '@types/estree': 1.0.5 + dev: true + + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/express-serve-static-core@4.19.1: + resolution: {integrity: sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==} + dependencies: + '@types/node': 20.12.12 + '@types/qs': 6.9.15 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.1 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 + dev: true + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + dependencies: + '@types/node': 20.12.12 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/md5@2.3.5: + resolution: {integrity: sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 20.12.12 + dev: true + + /@types/node@20.12.12: + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/qs@6.9.15: + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: true + + /@types/seedrandom@3.0.8: + resolution: {integrity: sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.12.12 + dev: true + + /@types/serve-index@1.9.4: + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + dependencies: + '@types/express': 4.17.21 + dev: true + + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 20.12.12 + '@types/send': 0.17.4 + dev: true + + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + dependencies: + '@types/node': 20.12.12 + dev: true + + /@types/stats.js@0.17.3: + resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} + dev: true + + /@types/three@0.144.0: + resolution: {integrity: sha512-psvEs6q5rLN50jUYZ3D4pZMfxTbdt3A243blt0my7/NcL6chaCZpHe2csbCtx0SOD9fI/XnF3wnVUAYZGqCSYg==} + dependencies: + '@types/webxr': 0.5.16 + dev: true + + /@types/webxr@0.5.16: + resolution: {integrity: sha512-0E0Cl84FECtzrB4qG19TNTqpunw0F1YF0QZZnFMF6pDw1kNKJtrlTKlVB34stGIsHbZsYQ7H0tNjPfZftkHHoA==} + dev: true + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.12.12 + dev: true + + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + dev: true + + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + dev: true + + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + dev: true + + /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.91.0): + resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} + peerDependencies: + webpack: 4.x.x || 5.x.x + webpack-cli: 4.x.x + dependencies: + webpack: 5.91.0(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) + dev: true + + /@webpack-cli/info@1.5.0(webpack-cli@4.10.0): + resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} + peerDependencies: + webpack-cli: 4.x.x + dependencies: + envinfo: 7.13.0 + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) + dev: true + + /@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2): + resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} + peerDependencies: + webpack-cli: 4.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + dependencies: + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) + webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.91.0) + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv-formats@2.1.1(ajv@8.13.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords@5.1.0(ajv@8.13.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.13.0 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001621 + electron-to-chromium: 1.4.781 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.0) + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: true + + /caniuse-lite@1.0.30001621: + resolution: {integrity: sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==} + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: false + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: true + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: true + + /copy-webpack-plugin@11.0.0(webpack@5.91.0): + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.91.0(webpack-cli@4.10.0) + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: false + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.4.781: + resolution: {integrity: sha512-aBI40ltvcWJQDW+V803FY6HjXAfi5xCWzpa3vSM/NGg7GfKEvI7ftzW4Gb2XKTRO4WsxDG7YG8ykrr/pG9bkKQ==} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-module-lexer@1.5.3: + resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: true + + /html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + dev: true + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: true + + /http-proxy-middleware@2.0.6(@types/express@4.17.21): + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.21 + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.7 + transitivePeerDependencies: + - debug + dev: true + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.6 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /interpret@2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: true + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.12.12 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + dependencies: + picocolors: 1.0.1 + shell-quote: 1.8.1 + dev: true + + /lil-gui@0.17.0: + resolution: {integrity: sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==} + dev: false + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + dev: false + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.6 + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + dev: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /rechoir@0.7.1: + resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.8 + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.13.0 + ajv-formats: 2.1.1(ajv@8.13.0) + ajv-keywords: 5.1.0(ajv@8.13.0) + dev: true + + /seedrandom@3.0.5: + resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} + dev: false + + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: true + + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /stats.js@0.17.0: + resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} + dev: false + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /terser-webpack-plugin@5.3.10(webpack@5.91.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.0 + webpack: 5.91.0(webpack-cli@4.10.0) + dev: true + + /terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /three@0.146.0: + resolution: {integrity: sha512-1lvNfLezN6OJ9NaFAhfX4sm5e9YCzHtaRgZ1+B4C+Hv6TibRMsuBAM5/wVKzxjpYIlMymvgsHEFrrigEfXnb2A==} + dev: false + + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /ts-loader@9.5.1(typescript@4.9.5)(webpack@5.91.0): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.16.1 + micromatch: 4.0.7 + semver: 7.6.2 + source-map: 0.7.4 + typescript: 4.9.5 + webpack: 5.91.0(webpack-cli@4.10.0) + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /update-browserslist-db@1.0.16(browserslist@4.23.0): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0): + resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + '@webpack-cli/migrate': '*' + webpack: 4.x.x || 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + '@webpack-cli/migrate': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.91.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2) + colorette: 2.0.20 + commander: 7.2.0 + cross-spawn: 7.0.3 + fastest-levenshtein: 1.0.16 + import-local: 3.1.0 + interpret: 2.2.0 + rechoir: 0.7.1 + webpack: 5.91.0(webpack-cli@4.10.0) + webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.91.0) + webpack-merge: 5.10.0 + dev: true + + /webpack-dev-middleware@5.3.4(webpack@5.91.0): + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.91.0(webpack-cli@4.10.0) + dev: true + + /webpack-dev-server@4.15.2(webpack-cli@4.10.0)(webpack@5.91.0): + resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.6.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.91.0(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) + webpack-dev-middleware: 5.3.4(webpack@5.91.0) + ws: 8.17.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack@5.91.0(webpack-cli@4.10.0): + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.16.1 + es-module-lexer: 1.5.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + watchpack: 2.4.1 + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true diff --git a/testbed3d/src/demos/glbToTrimesh.ts b/testbed3d/src/demos/glbToTrimesh.ts new file mode 100644 index 00000000..4b26e0b6 --- /dev/null +++ b/testbed3d/src/demos/glbToTrimesh.ts @@ -0,0 +1,61 @@ +import type { Testbed } from "../Testbed"; +import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute } from "three"; +import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' +type RAPIER_API = typeof import("@dimforge/rapier3d"); + +export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { + let gravity = new RAPIER.Vector3(0.0, -9.81, 0.0); + let world = new RAPIER.World(gravity); + + // Create Ground. + let bodyDesc = RAPIER.RigidBodyDesc.fixed(); + let groundBody = world.createRigidBody(bodyDesc); + let colliderDesc = RAPIER.ColliderDesc.cuboid(5.0, 0.1, 5.0); + world.createCollider(colliderDesc, groundBody); + + // Adding the 3d model + + let loader = new GLTFLoader() + + loader.load('./sage.glb', (gltf) => { + gltf.scene.position.set(0, 1.2, 0) + testbed.graphics.scene.add(gltf.scene) + gltf.scene.updateMatrixWorld(true); // ensure world matrix is up to date + gltf.scene.traverse((child: Object3D) => { + if ((child as Mesh).isMesh && (child as Mesh).geometry) { + const mesh = child as Mesh; + const geometry = mesh.geometry as BufferGeometry; + + const vertices: number[] = []; + const indices = new Uint32Array(geometry.index!.array); // assume index is non-null + const positionAttribute = geometry.getAttribute('position') as BufferAttribute; + + mesh.updateWorldMatrix(true, true); + + const v = new Vector3(); + + for (let i = 0, l = positionAttribute.count; i < l; i++) { + v.fromBufferAttribute(positionAttribute, i); + v.applyMatrix4(mesh.matrixWorld); + vertices.push(v.x, v.y, v.z); + } + + const verticesArray = new Float32Array(vertices); + + const rigidBodyDesc = RAPIER.RigidBodyDesc.fixed(); + const rigidBody = world.createRigidBody(rigidBodyDesc); + + const colliderDesc = RAPIER.ColliderDesc.trimesh(verticesArray, indices); + world.createCollider(colliderDesc, rigidBody); + } + }); + }); + + testbed.setWorld(world); + let cameraPosition = { + eye: { x: 10.0, y: 5.0, z: 10.0 }, + target: { x: 0.0, y: 0.0, z: 0.0 }, + }; + testbed.lookAt(cameraPosition); + +} diff --git a/testbed3d/src/demos/glbtoConvexHull.ts b/testbed3d/src/demos/glbtoConvexHull.ts new file mode 100644 index 00000000..7fe29bf2 --- /dev/null +++ b/testbed3d/src/demos/glbtoConvexHull.ts @@ -0,0 +1,56 @@ +import type { Testbed } from "../Testbed"; +import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute } from "three"; +import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' +type RAPIER_API = typeof import("@dimforge/rapier3d"); + +export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { + let gravity = new RAPIER.Vector3(0.0, -9.81, 0.0); + let world = new RAPIER.World(gravity); + + // Create Ground. + let bodyDesc = RAPIER.RigidBodyDesc.fixed(); + let groundBody = world.createRigidBody(bodyDesc); + let colliderDesc = RAPIER.ColliderDesc.cuboid(5.0, 0.1, 5.0); + world.createCollider(colliderDesc, groundBody); + + // Adding the 3d model + + let loader = new GLTFLoader() + + loader.load('./sage.glb', (gltf) => { + gltf.scene.position.set(0, 1.2, 0) + testbed.graphics.scene.add(gltf.scene) + gltf.scene.updateMatrixWorld(true); // ensure world matrix is up to date + + const v = new Vector3(); + const positions: number[] = []; + + gltf.scene.traverse((child: Object3D) => { + if ((child as Mesh).isMesh && (child as Mesh).geometry) { + const mesh = child as Mesh; + const geometry = mesh.geometry as BufferGeometry; + const positionAttribute = geometry.getAttribute('position') as BufferAttribute; + + for (let i = 0, l = positionAttribute.count; i < l; i++) { + v.fromBufferAttribute(positionAttribute, i); + v.applyMatrix4(mesh.matrixWorld); + positions.push(v.x, v.y, v.z); + } + } + }); + + const rigidBodyDesc = RAPIER.RigidBodyDesc.fixed(); + const rigidBody = world.createRigidBody(rigidBodyDesc); + + const colliderDesc = RAPIER.ColliderDesc.convexHull(new Float32Array(positions)); + world.createCollider(colliderDesc, rigidBody); + }); + + + testbed.setWorld(world); + let cameraPosition = { + eye: { x: 10.0, y: 5.0, z: 10.0 }, + target: { x: 0.0, y: 0.0, z: 0.0 }, + }; + testbed.lookAt(cameraPosition); +} diff --git a/testbed3d/src/index.ts b/testbed3d/src/index.ts index 6d00175f..a66a9286 100644 --- a/testbed3d/src/index.ts +++ b/testbed3d/src/index.ts @@ -12,6 +12,8 @@ import * as ConvexPolyhedron from "./demos/convexPolyhedron"; import * as CCD from "./demos/ccd"; import * as Platform from "./demos/platform"; import * as CharacterController from "./demos/characterController"; +import * as glbToTrimesh from './demos/glbToTrimesh' +import * as glbToConvexHull from './demos/glbtoConvexHull' import("@dimforge/rapier3d").then((RAPIER) => { let builders = new Map([ @@ -28,7 +30,9 @@ import("@dimforge/rapier3d").then((RAPIER) => { ["platform", Platform.initWorld], ["pyramid", Pyramid.initWorld], ["triangle mesh", Trimesh.initWorld], + ["GLTF to convexHull", glbToConvexHull.initWorld], + ["GLTF to trimesh", glbToTrimesh.initWorld], ]); let testbed = new Testbed(RAPIER, builders); testbed.run(); -}); +}); \ No newline at end of file diff --git a/testbed3d/static/sage.glb b/testbed3d/static/sage.glb new file mode 100644 index 0000000000000000000000000000000000000000..d0f6c12fb5418d5af612752b601515dca6204945 GIT binary patch literal 191112 zcmeF)2Y3`^zyJRry%#|`gwUm>7syWNO`3p;^Z=nrla3TaM+B)NA|fg(A}T7K>;w@M z5RfWG1XPqFA}Rt(`@g^I_x8CHjnSi?bAIQ)&vm`7&u3@voteF7c6QVxPp^J$8{QER z5HRih9RXEy1Ozl~)3U|rp!n|H6NU^KICw}<%?_i3x((~uGhy)keG*0l)eNl~)O}$8 zK?4UQ3>eyW)S!f*nh_zPk+N{ufT2M(!$U%2ss{CsAIS@Yt4BqL1V=?hM21C0hDJt) zM^_E59vT@H92FKE6CNEN9vu=LQZ=M{aCCHdbZ|&WcuZJibZB&BCsxpB04u1*8bX7k zLnEUj!$ZSEBO=10sTljfw^2hATK4QYBtiB%CW4*&3vVnYCMGH-IFz>@5fK~~5zZTvMPZ>a zAt4dbkx`K$5%R|Dck;_iLc&6W+0pO__S*NF$ncQxkZ2YKhlPa6JCPUt(XNO5wfzhY z3y+Qr31J_jL!)BYPj)UWG*qUJX^#ny`E?(Is|N>%u_tmAB0?gfB4VO~BY8nsaClfq zWN=7$a70LWSX6k5{R{og)Uto})P{uxhy8_fhWF1V!=pmOqCN;NP30h+j|Ah{%|zUnjXuy*kb6v<@1}CgO+q&W6!J2_uINj_2IxgD`Ap?}3AZ zY6ivk?w`=3cYOc;(SenE4;?yaNX;5GhCGxow0rNK@!hKPk*M*X5tW0g2KDRHJz>BQ zJ|02!>Q$@zV72h-!N0ta*L5G95I?lf@C07ff8c;2)dvplRYS)QsnKmz4aU}xbqpCe zY;bp3#qV!0tVgx}1A8R&8&ad+z!B934eU3n+K~8O3DtUVbbE$$i;Rp6>mD8z7Tql- zDm*?aJUF;#RAf&IYaZHXXg^tTvwX9qisdVWz*hLNOTm}$X{38Jbq}x;6CyF_>6{h z=@vgEq29oL0|!?hG@zI7%>Csk=n=4{J%kTWRFs_Cefo2R?L+j-tCY%oV@bWooGJrek;2FmFr>G> z9i9A^-TEeUAKFDu(m{j!^zS1duwV8(ekf-}w_!u&;pm_iEn7FQ(=4ba*Qr)5+cat0 zq-6`=N!GSOyLv5Kwyw__>hi{Cz>^I@|lV8y-q%YEFIfPc546+e%WaE z-hKM@7@QzqVA!q~=%oDm5$@u`)}DpRF8}h896WH~(9}=+F1vqy$L+T$Uugf89dFdE zZNn~YxP&IOX2)8{9Lp!w+IRULvS&3UID&fxzJ0lk2o4YZb>__cuqS-SMlvicDkdZ* zEF?UkT5yz1m+zI4G2Ea8^S}SRQuf_iYbf8Ca!`I*3)j_X`LYl7t;KA_B(MC>)Yco; zEy4G>l?&!*->K_6b5fqT;l2;@kof+C`f-irOkrevuZDg4@xc$O858BZuj(`4*99@r ze20w~96zWH=Q3xGK5DCv{t?&fQ?&nLPBD59u$j(Y^X* zRr;kA%o!gT7+Cw%9RYQlwBQahARq(eUNR#xAv3ZdE3zRwxWx>}iCoByJjjcD$d3ZJ z69rKSccCzfpeTx=I7*--N})6YQ3gRMi*hKB3aE%msEoT&1yxZE)lmb%2tg>q5RM2$ zA_~!nK~2;`EIe=!huWxvx~PZxXn=-jgvMxsrnm>q&>S*zEzt`1qBYu}E$+kpcmVD2 zAljn?I-(OgqYJts9^KF#J&=H&=!M?sgT8nO{m>r+Fc5?AFa~1?hGH0oV+2NG6du87 zjKNrp!=p&Vcuc@VOu}SL!BkAcW0;P|F#|L41ZH72=3p-7VLqP30z8FM>A zEWvYFis$hHUc@rIgqQIOmg7~dz-w5E*YO74#45anxA6{EV-40~9oAz5HewT!;Dw81 zY{t9Tg7>f$+weX4(+D1xFWhT4J2t*kKp)AUw zJSw0fDxos&Mio>=HB?6p1S15Y2tzm`5Q!*6BL+253$gIPK^$tM4(g&F>Z1V~q7fRS z37X;_G(&T=Kufg3y=aX#Xp8%BKOR6kJc#z_fR5;d&gg=!h(|YcM-L>RCwieb`k*f! zLO=A!01U(+JdD8@f}t3O;TVCD7==eL8e=dPI> zJb_u5jX9W$d6enDA)dw}JcGq}7EACPmg0H5fETe0FX3gpg5`J>EASdt;&r@% zH?azD;cdKw)mVeIScmo4fQ{IMBzWN>8JqDgw%|Q%#WuW;53n6OuoE9*7j|P0KEht? z!+spVK^(%zIE*7WievZ$$MGpn;3Q7rGklIOa2j9YE1bbuoWps1jSKh&7x67F;X8bf zA8;8z;tH8KuMHBX#}DSf>0LaP#zUf5tUFGccTibq8h5B27(cSP=p~I5r{+- zq7j3dsD)T~;2;jQQ3rKV5B1Ri@-NpKp)s1EDegftG)D`xL@V5j)@XyaxDWT^0kp$| zXpau)h)(E?F6fGQbVGOaKmvNA7kZ-)`r;wpqpieVUz5g3V4cm$&{ z24gV}k0KG{F#!`X36n7eQ!x#XVLBei49vt6n1$JxgSnW8`FIiw@Dvu}X)MAsSd3?} z1kYh9p2rJ#5zFurUdAg}j#se)uVE!##~XMPtMC@y#yePzHCT&vSdR_Zh)qa>7cP>q z8Si2X-osXG!~6IE+pz;X@ga6$H}>Eo?8QFp#{nF~A$*L(ID(@%hEH%DpW*~g;uJo^ z=lBAr@g=^(8JxvAoX6L=fNyXS-{KO!!}s_Bm+>R6;3}@+C;W`-xPhCvh1-yu{tUPS z8IcK@kp)?i4cUONJJqTF{p`Jh=m6Z;!qoPP#5)39}UnDjnEiP z&=mKe8JeR7TA~&1MQgM{Til2H@c`Q4L9|B)bVMg~Mi+ENJi4JfdLRKk(F?uN2YvAn z`k_AtU?2wJVGPC)48<@E#|VtXC_IAE7=y7Ghewf!@tA;#n1sogf~lB>$1oj_V+Lm8 z3CzN5%)wmD!+bo61$YVz@iZ3U87#)LSc2!U6wl)YyohCZ2`}RnEXS)@f!DASuj388 ziB)(DZ{r=T#u}`}I;_VAY{Vuc!3!73*o=3v1@B=iw&8tzfbH0Uo%j&Dup4{u5%yvq z_TvB!;t)Q@VI09x9K$C#j!$s{Cvgg&;d6X})A$l!;SA2=9M0owT);QDh;MNT-{E`w zfXnz1S8x^A@DqN8KuMHBX#}DSf>0LaP#zUf5tUFGccTibq8h5B27(cSP=p~I5r{+- zq7j3dsD)T~;2;jQQ3rKV5B1Ri4bcdV(F9F#51OGlTA(Fb;a;>x8??oJxE~Lo9Ueq` zbU;URLT7YASHzzL) zi*a}qi5QOwn21T3j47CkX?P6N@i=B+CZ517%*Gtd#XQW%lURVKun#+eFu}QmR z61;GctX*<5-o+NYr(JR@w&8tzpj~o1c3>wy)GoOTyRio!X_wrKeb|o!+9eO-5I)9X z?UF}u6vyz1cFE)T6en;}yW}Z+hR^YZcFEKD5?|qrcFD6ihx7PayW|CYgNyi9yW}N& zhwt%&cFD{55m#_kyW}lE%lM(vWBkQrH!Rl8(1WJeC< z)GnC|xseBXwM*theiXo++9eC35bi=@?UF@M6va?nyJQKJL@AWkE*Xe22trxylI2hy z6;M&TWF=I_-Ke5nvMQ>fI%;T_3`Ph-5vE--91(~_ly=Ez#Goc>X_t(J2M*%2OV&mm z)I~k*lJ(I54be!uWMeczQ{1CnvKgAA1zKvCY=wK#8f~;ow#9w89}j4kY=;NY9v!qx zc0?z1Mi=dpT@jCN=&oI|2NKW|y|hdAMj!OWL)s<#p+5#-pmxbYco>5*M7!ir48w4Y z&@MR=qwokuYnL2@u^5L(wM!;qJSJeGcF9SYj47C^U2+;8!*o2ZU2+Cy;t9;sE;$=> zFczw_+RK z#|PRaw_^u(;zR9{yRaL3@R4@Oz1WBSIG|nfAP(VU9M&#*1V?cUpJ7oyJTD3hx_q>cFA^l5be=HyJSanLT7Z*F4-0F=!WjvC3_$N zJ<&_MWN-9AUp%B;vLE_m00wH89E6847(=v64#hAG#|Z6`BQXk(V6=A0F&K++cvQP& zBF19^CTf?QgvpqKsoEu{;W13dU?!fxEbWrBF$Z%oPrKxNJc$K(O1tDjJdH(o zM!V!l*gNxNhcyl|1MU2-$t#TLA$U2-e7;eC9dU2;2iU?)D*F1ZW4u?HV% zm)whe*pCC+B@f~dKE`3~l1Fe9$MA`E$>aDGCvZ}`wV>Cfi+@oEx8JeR7T56YUg?rH&ZL~|a z#eKLR4``QchX>If9kfe!L??7c7wwW=5sz-@u3fSR63`R9v`h9zAN0jT+9ms;KL%i+ zcF93_7=tlHyW~&|!*GnyE;$mT@CZh0mmGt!7>7r-OD1AGCSam=$w`=uDVVBVavC1P zbUdzIat3DN3Cz+iIU92@7xT1B&c~BjfTy%eF2vJVglDu%F2=K1g6FhLF2(bB0WWHo zT!xqMGG5Uxxg4)z1zyuGxe~AA4ZNvcauwdf+jvL2P29q5?UM3?Xc=$^GHRF1gv`i-tlA~BAvNg>V-NYnLp7q9}&q+9gY%Bub&QcF91LK@iGnmn?_!sDO&v zB`cva?nV{ul2uU+)loycWH3SyiZJbx;fO#aqO?m!BL+25OS@z&Ja7=FU9vXnpf2iZ zm#mKlXoyDIB^#p&n&KYqlFiT@EznZCWGmc@)@Y+$vMuhz{dhpTWIH^F_UNEpvLia7 zGrDM(?234FLwD_xJ&=H&=%rn<1qmfwM$OIWK6+S?UK{*7^dTK?UFMv6Hj24cFEb8gSnWe zU2;C2!~#5}U2-9w#v(kUU2-v=#S%QHU2-X&#|wB-yW}#wgqQJ(cFE;<6)W(XcFC1^ z9dF=G?UJkT7T(4?+9g+G4c20vcFFbFfQ{IsT`~z?xJcG6xf$+K0eSc zxg9&O6CY}q+=boPgO9XJ?!`Xr#{un<2XP1=Gm2o$!XqT*tYN(DH+9iV# zf>4BMmkdV)A`zusG8!?ciCWqvW8r~=IPH?PQ3rKVPrGD&G(bZ%(k|H;P0$qgXqRk; z=4gSI+9g}zUbIFV?UHSAAMVEk+9liJL9|B)?UEhQ37yeJyJT0yqZ_(wm+XNA^h7W1 zlD*LfeesZX$$sdM0T`%Vau6QIU<}bNITXV%93!+#j>ITDg3;O~$6zeR;Zg09i5QOw zn5bQH5+-8`rfQd*hQ}}+k878lfth#$v$RXj#vIJWJnfS6@gx@DDeaOA@iZ3U8SRpb z@hq0$Iqi~5@jPC@i`pfZ;U&C`SF}qm$E#R@*R)Hn#OrtiZ)%rZg}3lF-q9|(8f&l? z>$FR*#|CV~Chd|*@WMs1cFE0n7hCY2cFC>ShWGJ-cFFD7ft~nJyW}qH#vXj6U2-q> zVLuLNmpq6=_!x(^OCG^d9K$EtC6D7%oWM!#lBe()KF1f@B~Rl^e1$XGCC}m<&f{zC zk{9p|F5+A5l9%uuzQ+&RB`@PgT)|cClGpGPe#Uj}k~eS@w{Tm#r2GO(2Hb&++9fj~ zGqND7cFAnWjvUCTT{0JPBM@@ieVUz5!xk3ViX?1Xzh|?Fc#zRsCLOjjK>5_)Gj#*lQ9KTwM$OJW0;P| zwM)*xOgw>E+9hXW4(4K>cFFm85)1H@cFBc!8jJ9ZcFDzf7EAD)cFCo99xvcU?UKvz z5?;nD+9j9cRjj~k+9g-wb-aN$wM(wTTX-AqXqQ}#HCT&v+9lUx12$rlcF81o;UZbP zgJhjKkU`kKibd z;S=qW$MGpn;G}lRQ}_&@;|uMQr|~7e!Wr$7XK@ba@wIlz3-|^X@vU~rOZX1o;|J}M zm+>R6;Hq}XYxoI2A>nG3m* z2YIzi=0koIz@6G93!)J2LSgNaMNkyQP+YrY36w-Bl-4d8h%yL5S?!YLP#zUfQM+U% zRL0$?qFu5os-Ze+XqOB|2tpC2T{0XIh(wfj$!Nr&CTeMyjD-gd;<3%+fA78*?xh^R!FO z$CFrqr?g8h#M4-WXS7Q$#M#q)RpFKU-uhL`X%UePYO9Is*pUehkQ60hS8 zys2Gs72d+zct^YBYOKLptkW*J9viR`o3u+N!3!73+9fyRU2MU7+9kJQ8{WqU+9kJR z2X^8^?UK8&8+-7PcFDcihy6I9UGg9f;bR=uE_nn;aSWemmpqP7aRMi`OP<1K_#9to zmpqLx@fFT!mpqGeIFGNjOJ2Y?xQK7HOJ2fv_#QuKm%NN0aRpbkOJ2iI_!-x=OWwdu z+`?_`lJbk^8E^+OYM0D}%*cYQ+9k6gJ8~eWcFA1GjXcP!T{0i?qX6#IE?E$Ta2E<| zmn?#!D2C$NB}0!D;vVgi&Cnbz z&{Df(E8L6LXro=SE$+kpctE>kJ3NT?=%8J)BRZiox@ec|ign$zEAX0j$(48=Z{SVslB@6*-o`uHC0An&)?%G@ z$@SQPjo74JG6`O|NY*a78Si2X-qS9*72EJWKF}_?9XqfSA8MD}h27YLkF-nf#XjuE z0qv3paR?vduy)BKIErKVM7!j1e2Nn|sa^6EKEvnuLc8Q?e2K4cM!V!$oWps1tzGg0 zzQIL&t6lOEzQgzULA&H-{D>>Ks$KFLe!|bVu3hp5ZsHbhYnPNiI+6i*AftB4OvsEZ z$f{j38?qw@a%z{%h1|%4yxJx6AwLS>PVJHfQ3!XTuy)BJD2iezu3fSON}?1>YnKc} z83duMcFA%mj|!-$U9u7?<8D;ZE?E`TP#rb2O9mqZp$OA18IA}Zye zOSZ#r+Fi^YXAUur0 z7@}QrC}dr-&SBamhhqdrVw85tM=%;=Fjl+dI6R6(jMpwX0TVF^leJ4u!BkAcW7;LB zL)Inhd|bQa49vt6n5A8EHs)Y1=4qFlk0-GJPidE22w9h`^J(ppi|`B<<5}&JOYj_) z;(6_oFW^Ni!%NyFUxutp);WgX3z9B58n4io<5ftPT!GiH60d8Qd;@P{72eV=`8M9c zYOK*NxfbiN9vievZp0=e!K+=;MKU(yUG0)v@E*2en|8_f@d37Dhjz)G_z=6WTf5{Q ze1yH&r(JSC4&WdTX_x#Mhj9c)wM!nuCpeBzwM(ABNu0uG+9f~77dVYCwM%}5GdPQL z+9l89Yh1uL+9faITU^3-+9kio54emUwM$;XRb0bQ+9iL+b=<&B?UJ`}8}f&$GC;cI z9mt4G$gEv53$h{`vTK*jft<*N+}b7cATRPEzjnz2xDy3YNW0`+D2yT~s$H@eilYQd zYL_g9(g;Ku?UF$#i*hKhU9tiyq7o`=m%JNQP!-j*OIAk>1S3SdWGKQAjtK3Nk%&Sx zVzf)vgse-}SxdWQEIe=!r(Lo(>Yy&_X_u^z255*z+9eyK37X;_?UK#V94*jNyJRce zi`HnPU9v6i!~J+byJR~&i1z59U9uxOp)I>JfU537G`4(=4zLmhxvFC3$#l z_zvG|m;3>j@guHim%NH=_z6F2m%NS}xQScZC2vFiSYZa-0qK$%kqMcRMZ08HWJ7l3 z&@P!1xsV%qv`gkiKIBIM?UHw*APV6w?UIF21VvFyyJT^cKuMI+E?F9ZD1#vFl4Vg2 zZ5_CJZ`96vJo1i37Trk<9n3!W@wHUXsIcWTPf-HYL{${ zHfW3cH0AOAO8Nt6hX>JKQyzEFF4+;C&>3Ac<#AUfJzl$HHzmD0dLRKkHRW+H?UKFG z2YvC7rabPaU9vw0U?2u*%HxN%OAf{m48<@_c|2T6AAyk=g-0~y@o4RmV=xxu@TjId zPE^vzV*(~(lBPVKtfWuDR7}HTn(}zMlKwbmU?!f>l*hA_^x2q$xtOOZkLN4tPhtU{ z!a_}X{Irt32+v?Kp4F7cOO*8IuoTbZ1xEGiAT*i-@^7x99eihg76Moi|$Jez>-oQ=V!fj1??EB-s`F?pW19=BBB9o>( z&a9+oK~`i#c1?MlL%U>7i)s)A@l=R}- zB}V>aTx9dzB1e5wD@*jEad z`c0;Oy;*Ni#j>8;w{JVC^RJFi{rW$8e2eWlQQ4g3>}Tps>vgHerT6%W9OL5F6gcku z*({xFOs$c*&N`_xt=Fd>_uuun)Tc!pIbM=-yiNX7+yAHD@170YV`cyTYf+rM3V6)N(mL<@`;3o~HFa&3>lNnVg^R{LcBAdR%&s|LS(r8lU?8 zn8#_2|F@T?_rCw`^Z)k#|J&<7Smf@wPEQ?oQfGSC#XtMJhwHO^kE9-NzBf$9@V%5| zeIJ?cA@jZTN8d;CJ!W2?dVS_`dYSt5X1qCn|0`*KzRmjntxW5>l-BwEZ;wxFyZ=+m z|LXfqYd_QaJeJh&{ZgsEN75Rf*7s9d=SN!m|4%KK^V>dO&H0|z{--rRY3)y1{(wy0{;J*&|uLJ(;fd4w+zYhG9*MSKgtHccrUgP-le`X$j@4q9MpPw>mey&RLuH*ZC zKR1i_pAT;|NI>JU%4;&v-6hT@%gVFck{aR*6)A*|Mqn~ zz4I`={rrD@e*W(FdV1&Y-@QKjU;o#B-}s-N zuk?;@dgo7iuTSs!^ww|wIXyXL>srb8Mnx8xPr?#KgfA>#s|I&N@-&${a+x0*H*Zw{J|JC{OU*G=t`u6|&{QTYT z&-BiFxxTK}pMx{`dp~FPcdx_#*Zz~Wb^7LN+Z$F>j zd7Iw*Pw)Bk*8g|^`6<2mN$>iY-u|Wc`qckDFZJW}_AkBX)7yS}^Y4HDkME<>n_vI) z|F`cy{_gQj{dxC4{&PR~VCLzMu7C3L1!?_U!#}nBkGB73e*VD!cRv1S{?3Pg-u?6L z|2sSWzcb{&4*0JF{_BAMI^e$!_^$*0>wy0{;J*(1@3;>9U;n$R>HXfs|MutqEC1d@ z{{J4$|Ib$H*PG?`&u9IWzjKp%ee(E^UZ39l%Ijr+Q?J+T=imMJerdfv_4d+xoYwzO zW?IYB+U|eX^7Q_DiFrP~_idj4Gyi?U{<|XP=Vt!t_iOeiy)^r4_Cp@q`)8j2r}r=Q z|KG9Mj!EB|J{35s^4=quluL+&%WP3yS+cVJ~J+@&r4d%&FlW@Oz-?j z{d`*cm)7!sdVl}w`t0-TkA99K_4`cgaeC*2{W-J$zRh3V@ASr}wSTFXr?;NJ`h0rt z|F1s(XSe@n*ZXJJXU3&<-lnxYz58{3N6Y^|{|xwNz&`{28Su}5e+K+B;GY5i4ESfj zKLh?5_=6dEuX;^Kp6<4>w=>N1yr=AoIenSo#mC7q&c3rR_#QuBeWUMj@W$S8GQLQs zp>Z<4ap6wBoL#-9Z~4f54SbK6KVIFJmtM%}TYjWLVc+9y0Rg@=>o@C_?c_QBu#=_6 zMvrWF3;QK0`y5=7TyJmax{$#n?uGyZvKUr?JYqt0B(0#u3%RIO7Jn!4Sq-=N9 zj2*tYm&fl_-{_H)?aFd_Kk`_%FDcuVyv20&bwkykJ9_4Xu-nXP|SC*TU{gKDA ze|e67_v>;q-aKy}o9&q8W;^nJWj(TeS&vz6_Q!r+_QSjnv)sH7nNL}dygylwS#I91 z{k*J4j=Q8;Zstjjm#jyQpRC6$H}h$pH;>J6Fw4zxkn=&-Bj<;#$1In}vR(Umd2Hs} zEH}s5%%6GQEH~$adEPuW^K6!z^T^DndEP8H=bL%nJT~)emYeg`%%^$YEH~$~dEPuW z^K6!z&w-gg`RvR4H_OfE#XSF?$G@EKX1V#CnfWxw!7MkQNAtXSZ06A{H}huZ!_1Fa zE|2B&Za*)NWnS#%X5P$vnE5fw<*|&npO?onFZOaXZ*o19&%c>Jv)o*-?C0h60Rf4= z^_b;m-pqWM`7z7Q_0T+T9?QJQ`pj}OZ|1x+^JkXJV;OHhFOSW2%Pg1qlof1mESGtbnu$HD&okmYhb?B~s6bG*#!+yg8{&K#U<6zEHGoR)-nC0etHqV>KW}eM*^Eoi*r#WBEa`SmH&;RGK|NGZ` zAIo*qe9xNem-${W%gwx*>yf!$nC0erXr4EZ&GpPIH`g_D-7(h%v)o*7?dSd9zh!*a zPnieveJAtd|Niy=^RKxMn(rs`y=bnp=KIfl&dm3x`F=HNzDNDvzrTDh$aPJ=x6OT! zeD372T+jUf{QIB#KJz_mzF+;{zy5#zmG33F?ns({zA=yGx+LFYX1UyV%Q*ATN9K96 zT&`>O^X9Q!_hdchb#i|wJIj#+Nsf5`gGKQEc(|J~oe@_F+A z&p!kH8Su}5e+K+B;GY5i4ESfjKLh?5@XvsM2K+PNp8@|2_-DXB1O6HC&wzgh{4?O6 z0sjp6XTU!L{u%JkfPV)3GvJ>A{|xwNz&`{28Su}5e+K+B;GY5i4ESfjKLh?5@XvsM z2K+PNp8@|2_-DXB1O6HC&wzgh{4?O60sjp6XTU!L{u%JkfPV)3GvJ>A{|xwNz&`{2 z8Su}5e+K+B;GY5i4ESfjKLh?5@XvsM2K+PNp8@|2_-DXB1ON66$lnW{eB*xK|4-4Z z-Sd9^{}+(I6DohlJoVohU&{aAz=xftID_~***8nX{+edF{JmpYk6G{c4GKG<_rB(2 z4G3^P&M@)U|K9`icl^!Y0hQOu-v!MTu-RE#D7RC&(`skX>Q29=S)Mf@k-rz*#K}*t zDKzufG|SC)%y$3n`SY*eKLh?5@XvsM2K+PNp8@|2{Qq?Z61PS;!{=A<-2GgkE1Sv$93ItC3e#%dpwsL-f(L#%jPuww2)`;)k4X#e14u7PnH!0Qmp^wJ_DS9 z{GOVbzB`>_TlVs7#S1#4vS0KryM5XXKHJnO`SC$-vwk;Sdq3^{mu*eF{f#H~l^@)# zrAIrD6`$>`J2GFg{o15GRh;tS=e%30+?m|+>+w$h%}c!XJ6un(e*3lYBPTfdA6x9n zRQQ&gujLr0=7MpaTTkatw&%y*XM4Oo#@?1a-rl!jm(Mzh@8qi)8?e_+dTocZbWcZ5 zvngBLp>H2{nqC~?i5uWWV$*NyOuES5QT zc+)$RkF;9m>38f_(ts9)k}rKW+4D%(0Iz#rkngwzdIs0JHKT0upohX09{i|m^*`8|Qp4>Ds`N+&KJ;&WBw|Ixi$u+!* z&f*52C0!gcGTC0|!GU9(q+6dRz0iM5a`>8V&gqGVlfHave2R6py>zd$viYH;AtNUw z&+C`yMDMuE6B*SyIdHzm*>F#JXTkUu$t#yU=)@h#<>cv8BYE@LLe8aEDmkSR?@93< zW5?g`xchTCL4&KM*nj(dRXWtbnVI(;w{-LIDfZufU(@!~b*A38*qvH+c8d36zejtX z?fJKli#_M|I*YWZ>}&{F=Dv7qcCz#xtCzSptItig_bp&v6{qOeo7@fg6O*MMe14OA zxWI(u;N&kni32v(l+U&O*|$IM$IlOTvMdSrMxLJ-mv4Cwr}|AXW1;=F~NvHN#;w?22o9rQ{Lr~HN_ z@9Df=w|+owXHug)M%G)vH7I#wiLQd@EVCVe)?#b=06?B%=ukLJ} z)G>L?XH}eP%R`+-S-T{6SywY|Y2kN0d(R|!hkaEiuGQ-NPT-n~-Un(%#D%_D#>toA zjTFmcCpU_VKbq|6`ecaroy(2lO3V*%PQ5b~p1h3G){R-w=opBEYPbB%KDlX)lj#_X&a?cGskYVx&nrJQon#oSBHW_V;wgMP1g z*RT1`*X!PMr+ewZB+sQYQ$6*AKS-+l(G=fnL(k>+MopRO>j4eFi1E~#n!NP0rJjTH zHh5CMUwa%V>7wy&8*=A7~DKU3Ble05@6<0a=j<%0Lc=9xS#E-~POr)&6-O&JT1 zj9dI{RwsYvAG{OlO^Tbn>zHR-j;FkGZriWjz9_SE;+_m{ofDH&jIm#9k6GP2lk@W% z+1zter=}QhuiqY1J8MQ~>G&e9`L4`*-){HvBCl&7UztyHOzmTx@2BmamCanY+_h~f zj=Q})F#B51y``RYcjeoZVod7gr^mePmME8$Vod8YBb_OqbntFzF)gnB#t}~S27|o| z>P?NaKjT-v8s&7YpCw85-@XUy$xD3mY_HRPt-VhB z+LG_)QBUVh-MnjZPfu}-?76kKHECIl(|_Iy-?r@S+T-mp_WJE^kFnP;$0h%;i=KXm zuDQMIL^yLFt>|$gizN4ZyRfrlMhQ=WK}C{pEYB8Kp+J3a@3B4H67B$hg6^zthK^`qnA-c3p2k zlSS^EHP1UW>-O|UpLo*!_)vkk@X1G$20eYhyKqdNxRvn>l5Uinq?Bx=9+uCju~TJbB`zQ-Q3qnH}`Ve zzj)I7>pkAoZQj!*Zg^%aKJD7;zc4+co7iV_&5q|!rdV$8PvdpLuDK7i`@x9ZuDRc9 zw{NA_+y~n0m;EvKd-nV7-QVMyd%w-m$Gzr$&t7Nkat&Q`?`My<$Mkj@x#r%_-sjbe z9oO6k+WTyev0rO%%U-|z+6%>Yy5`=m@zM3Jx!;?;e}!xA1MM+AhOBVS{ocXu>s@mn z7_h4U26OM1c;J;y=6)}6)r(2yJ}_xtWw+z8e4fO)t&;Oi{=#eSnR!hC+UNNv(X0N$FOkC96Ywigz6-e-! zd&R`2UnZIR!`iLedd)py!1VTBbFUb%y`F3C4@Y_(*W44@>pyZwdDq+@Uh@=m%{`&L zetREw1!Z&1y_~&2_C8c9k=Zr(a`yh%+qLJ%-cNh3>^ZUL%3lAVsKZ`!FDKpH`uRcc z4__5>4i4#(oERP9ntQ*~k>y--zqk6w3a+^i%+_m}*WCLhZhXUQ?)QpZS?)FWftAib z?KSs)T_axfn)|)I&n)qp`@ro@t0bHIy3M=GC!2e@Q=>wY%{`voOH7MSHurKb7l}?b z_jp|kge05$I(wb=7<)bTa(le}8Mm)F_BBC1JLbMly1ADNSo&FvxyNgDDTCMC*U1?3 zy`MNEkN4MmJbTU=WA5eT^Jwnz?DI#~WA5don|nO_+?M6$UQW8X#|s{~#cSW!nR_`I zWA5=1!?tg-@9WIHoQyH|cuRkHGRfT6+3#1zn0c_T=l1o`zE*E;*UoG1>t;vAd(FLE z;E;~qU+?igp6509b@upGA30ugk9TVCEU&q*OSHzPHO5}Ps^3hnxyQ4Y?|pT;*WAn5 zW8^)W`#S07nA*oW#qqVqtg2MpYwq#vZm(zQobyTM9?$Of80qF7@7jQxuDP$XKeGYZ zYP#kgZ((?>Ywqio_KkJTy_|gyV6Vr1ZScYv*WBaTsPmKT2jnw#<+EbXqpoeZR09IJa_&G4}G_arxc* ze)!fKkZO#*yj_h@H~Yy8zA^Ux*!yrQe>-KO5oh+!5!lV$8I<7rgt|mvT?>zAhck?)LaF%$4`DD(-vl(#RUV^^Cln$$dU{ zpI6@d`a3RqbA6V>@ohOF+9 zVOe}*3eE_0Z}v{|%9w0@v$&o3K9gs_VKmH+hgqOm_6QJZl4?Wm`c{Q(LTQR_!MKT>%TqTzTVo$+8$#c zQ~S8s$IBjLU+3-d_Hz5X!yaQFQ~S8s$1BAc>wCu@Z+{=z-(~g~`Fh!e{b4j>|<(wW>Xwr>wK{96YTN!a{GJS9%J8o z*vHo%Z;!F>TkP@na{Js!Ym9w-?eX?{?E5HtyuCcdxnZ44_89y4+T-mp_I;f_-d=8> z8}=A`p6$7^=g=Nw-;1UgZ{4Gs?+Cefwa3`|W1ma*zS(2!ZQ0}P<@R}Kk8z7kc55f( z-c)B;tBWsomzV6Hv@~Cn6l2!6S>y)f>J%He z|3Qzv9{aUpei-PE{HRXSLe^=Iv6nYqG15Ji_-w3f*B)apFS2`vn{WTCzA^Ux*!$4c zea;P7Fgs>*+=19kkyG5A;~RNppR+ZZ=jNGpm$x?inQPJ$ZjQuOUKtZOqm$cl8r+0PxhUM{%Y1gHnd%RjMkE|!UUuSpe<0X9W_wwRS?&jS`Vr4z; z!soihmfz(YlbC&yTOhHjN47Pn{0z6mjrtxLWAAf{{p|jXTcYBPq}2Ot?`OdxW89s~ z@Bhs{+xr>)Rax~6modt3Gx`+eEt?dA4d*<J zdyGBL_IP`_eeCQpcDIkUy)Ao;ecbKw_Hz4Nvd7rnK6duD>@oIvXpgs-+vkZr#y+?0 z<7d%V5eJ~!+!_GisLzV>)~jQu&a$J@*8bHg5EfA;O;Ymc|b*w+nvyuI8$ zH|#O?wa7lc_IP`YeI2vM+so~9!yc2#x;EO!*B+l@jCK9D$J^Ii`&ip!>|<&l7yEeG zW9;j^J>Fh!e|Okp>|<&l7yEdn7-N0!*yHW*Bm29|9%CO<`?%Q0%N}EY58C7H<@R^0 zJ;pw!_HnU~mp#V*Ube^E%kA$?dyIWd?ayqA<7=G{_I-jq-d=8hC)#7|dyf>y*ZSVK z$JqBR_IP`_eQu;R#y-CGczZqeeUv@kUY_FIu+AlWjD39V@%9+|zRn(RFSpMPdyGBL z_FUO>ZjZ6=MN^Eo?os7C!rZ&sW9@oJX?D6(;`#iMAObaaLPIx1~vw25* zPg1oA_eT93&eHQWJ*Nj2cRy_NwMY8M3XR>G1u{FEU)&LEj~Th3zWed&GEP9nuVd}? z*ssmE?Y6hn2U(p&)?<&cm$!R5n;Sa6qHnwQ7<+l`$11z+N>%oavG>Q`hrRs!$*xrk zIsxTY)-2eegj+A`R*&p+;Mhp_`NZQM+0SxUtGeZ4r7 z>9B9iv>#4+N4#;$H)ikRYu@SKM*80S?6t?edsmk9z2AT$pLloOtnS-Z(gWdci6>%w zWAfcm#4VO7&Nt?AOeMEO*#^Eb_CBZB&ovF*1oy0OTlPNN`x%%um%D99(r@Po?lq+H~VbwXR8nDxmz=b`NpjJKFU3F?1(3^^y;KtUp8=q zS7mk*UpSPs`IRc};yG76T`L89SM9&;{ovUHzA@S2O1L}T+V0uRn1kzbxUI%s_Km3> zam4$6(^8JCC-}aT-n*A)@U3T6gUHnR5)qE9CwN~G zx5PWud}GdTYv^8?8sr49p6I+`?({`bzV%G&9PXZevba;5_1N8ht(;ehoaalkwn{O^ zUXMNAUT*K3J;v_#d$G4=kFnpEJ>Fh!&y_vK?)Kc;+p@>l^K6f|m)pnA9%Fa=SlipO z$Joc+9&azV&n0_|-R)y%Z_6HIpNIB%d%1m{*kkN-+djVbczcZfxvXx5wC@(-h;a>x_MF*kkO^zI}Y{@%9+|x?zvEm)qxtJ;uHkr8vIUb-*5DU&rk6 z_Hz5&u*Vd%u8sEbwa43I?CYvM-d=7WYkQ1+Oj8^e>$+r*v9I&?czd~h9k$2V$J#zF z_VG$F#`@l|$J^gW_IH^*#y+O@aj}oDJ;weXw8z`a?e8gjjD1Y)<6<8#dyM_PY>&5> z+uxh^82gyopIQ6(+GFhd1be)_-2NW7$JqBC_VKmH+hgqe7JIzC+&(wb8e<<{d%V3K z`##DZZ!b@AZdm7%J;px1_IP`YeP3sfx0l=JhCRlfXM3*fIkd;v_n9fiTlc8)9bxWW z?J@TL*yobHZ}u2_TlRQ+xqTkmV*>YP@q`8!a`t}wiTBi&r(zc-M><_gEb=B!Y!bWv zL<#58$tS(Fb5u?$*SVCF?L>&X>gi`aEBlr3^-CFgdHTj*^~iF2jJ-VI-1=IHO@A3< zFE>4)YC$*gWbN1%4Rbkz3SRb_<+4tD`R}bqUc0nH7SCfN3p)A2PIyy{?-;!)?p#?X z@YV<1n>|?T@|iMD?K9tc?f2Vz&rDClwRby-kH3&&`PrBWo-BteI9(gP@7;WRQS8v! zkxszIuf2)6?~ZjIujyN-y&iiX%>K*1*<)I*e8|)JNL{D)b7Q@&CbspI_{sUrcJ1X| z+j~66i`Me(gS{SmxxJsk#TR*IY$)M09+}UzyS@MRYwhLsc>6fo$J$-O)1oR~hQssv;XD)ku19)!kwMO`LGO9)e)EKLsnI0e7~o#Ebx8L*`GSNfd?u&m#*HZRVjP0yLU_`XT`cW z@4}%~+{BybJ*|7z^Dgh(+FjWDE~m)#>amUUKj7NiviG55z2VN-Pj`4q=F1$nf7w)L zYn8*X(tDSx;OyA9*c)E&9pC;>i5%rM`=8@_4X^BT;N(iqlGS~@p>4i!WPF=q-+5&G z_IZ0fKh0b339RdNX7@Ym$yIQ@r`XjqzVXpte&><#!C$}SnRI(otc;QI11d#$&G@^n zW%SDU&Cl)jyL!4q4UiVzvS2V7`vB^&OM@M3%A8$X)S$*Q8*n`7L#~s|2 z=*+yn%_H63H+jEipXL1~J^O8vyvM|C6`gUn!oA)xS$*TpzS;ZS>gkJ~pI`TSI-kq# z8$agSPaYX>@0*M_`z+%xpP8Q|8ieT?32G{GsJ@2ux=xh!#Arq6N8o!lKOUFPSG>>0f> zC$jz*W`+8?tiN^M;a)R8eT&5Ux;=;X++GT9<1Aj{#_q}5BkpXi1m{Rh-=x>+&1T)< z+}QDxr`(#Uaf2Seon2eA_2BCCS{b z3@Yk`w(jkf`N=mklasjr zviG6Y?5{m<->l-9d3_+iQ(Vp&KCiSV|Nen-NBYM(5$!K}`hGDz?%Lem&dhdSd;UMh z-ZDIk<9+`Q?hxE5h2ZXz>`ZW{KyeKaAb9Wu4K&3iSkO}3Dem{q;O>PI+_ki5fl}nT zCSkt+GyIr`;YE*6b6hiX&FtR0=kCrqQ~Tn0K4Vc$HgQ@l*8Igdj`f#*_&s~Hc#)fX zS|5I(PX;#Z?KJnml0LEW$MNwrjKeae9Oy}SA~;t3SRZc|nsS+&vqxwwAKCkYdD(cs zNT+9$p}a?mxUB1eIZpBiL;2cW>6mz$jcrLZl9x_akmdBv#v)#Y@y3nnu}6(JxyieR z^5D6FEK~XTo?a&g#qw35UlPwfJSWFSHe##YRL;zmy?ODnE!l~9Q$3A;4UTmz@EBp= zv5(EKWMR3pZFc_|5X!NS7>{F!`D0m(Nj$OTGPP% zJgP$*R<)QnTikvWKTx?AJ9{9UHQM_#$DHwAfcFS>y?xiYsH?8AInVpBcL_t?!3T-nU83R1SDAK#hU-V$2P5#(OT_>oGUX zxh`FQf>XWPU35bhiN0O*^KQ5~j)g7Xvirq=%+a3Kj0Y#U%G0`~!S}3i_Y|Uk^}KAu z_T22>X)oRKrG8>>ckOVFHSg@^oir^LV+`hoIV;^&-~+vXCJpxLQ4aR&&c7Yy!`(n_ zjR}A1sJ6!L8pXul~1;&!&$dy!im__B^F~0jxCNkdUchb zSN9$Jn6q4@^Y-KfKh&P-upL1}iY@khoO9P>5nCNTfqfBC9*kue6x z95wcr`Djgk=DPrvJ{`@={9q>MwQScSqH!Vtk$@WSUn7yl`~=&6kL1 zF1|ZED|l(Dqw8GN=R!1NTbKiCd(`}@EnODt#AgS5roh}VXVrI|n~Kpn<5=Ms;#lDr zVx3qPW3VmE8T*cX#J*rztP{&(op^n~a|3h3objB;a}Uok{4J<+c<&zv-7n8=EQ@vG zb0X&RYb?7Bs{s+K-REZ}g0#Mn&C=nhLcm zY7f+MsM%1%AY%+_Mbu!Z;Zdt&ZkRLnapIEZtoZjCqWg;;dF(rCHf$F)Drz}=2Ek`5 z>^qJLJ{#hFe_{9EofC!r_UufVoY#E0+3^W^;HMa$L$NHzsIuKlU2;@>7_9k#`WDx4 zz%?K6nHQgJu`SF2&pkXRu`Je!&*1nj;>+h;{cMiEeY_^%I}Lm{g1=4t&0<@a1D3@) z3pdTeqRyu9JKrN*Y^W8VO@6<~2_HULWc%pNDok1J3_Z6|WV%y;ZAiP>H}LX0k*R%g zwx?Ks-x>ex7b_R#W}W}^Vq0b(iuJAr+rm24^>)b86He*>Mn}gV|NEhHx53(2ZGBm1 zkA%rt;j=O8T6jH5!e)eA6Znn`-({)#^_l?KM|?;0EbU8Y?~IYIr}`*?eXo(_H1n!F z(>L(HGAvM zO`lBSx+SM0-iOheFY8ZH|4*{8vKe;W z{quILb*pe}aSVIK^Wo!{x=yAQ-wUi0`+_-RTi8d;4RgT0pPaIfd2MRyyQS=wSnF$H zo!A!EgX4p1ZDIWwgKKtSA8~APOfVkT{=%FwAIur!F$e4m=85@Z{m2-DYm#8j_}jtX zRHiBkS@v3s-McH-#JXq2 z4~27Fp9k0Z!Q3!sj9I#%JB#|Gs}r?#M67oaSQghA!}WjgT@Aj&!5GX9bHK8=9u&5P zb;de&u$CRJv4-og;o5PyZXT|~hHK*CI&$jV^Q&{*@BZjC64&Vaa$P>J@x69mZjd|H zT71|R))_{1CcT!QZJJviPExNvxm#E$(}gfJn87Y@DSPjV_Y_3&Qs@O{^8Lv z8;)P|E%#w`bp0XEeApl92FZ}IFC4w@2bNVi>pC&dX9*KHlgA8l_a(~}du=gT0}$69 z44XX8`6*|Z`z}1K#Ijgt-O9z-?xQ8y@KJ5$iy2{T;hfpN)0%XOweDa4tGQUG&ufz4 znt@)0b~!EUR~8H8P&t;~6W1NkUbGuLGS*sxsxNxI3oMIk462w7FPn%Dt;R`g3)kht z^#*;WWM^$VW@NcC_Ls;Qvtdym<}>ZGr%L89IpenstjEEWtXGwgSd1~ahGGAfDcFK_ z@z`%ChDcvM9e2z@kOt~{BF-7C0U$TL%8mBko!-gXJwFRE>s5d9l}-*mJ1 zeetwdWpUhay+>>pbHKJpCyM*h;j>liq1#phGnr|DqiQT zxM05};zp^+==>k0T_n1em=UY*SXME{==G5>2h2_JPlpbOxod|-=ay>mNpY^s5Lzqs z|Me03u2`?3gk^DkKfKrDJssaU;5&J|KbG#>k+t&~=^P$5jBl9uBMaD}QUQF_<&z4b)fI7tA?l>c5-{k7qi6#~aR(F$QzS?{v5hA?h()zZBOz#AAxb z8rOl`(?2IGIyIR{c=czFj4}BB0pFis4%imfgSjDN4AzP7YOsFnJHG!xEvkMm`TY`! z_}j0>TCWw?aaA!*=f)Lv_n(V?&iy&+jk|X6p;&9T;+n21{`sB9uIGqH;PoG`rFhLm z4S>&{_}tWSU}^3*Wsj4o)OTX(u`)d3ePJh}&}$cC@R=(Uz1)uUPsoCMy>hWE{vG4L zPm+^Q9+-$d^Zv)3mMa(kqeN=f;8j$twPCN9_2)JJcRuutF!+YYpra22c_aehmCbtUThfsJ6cwHrh6dnD1pz>Dn{Q275m)oCe~euxxc?o z*inp&iqQu8-iP-=6|Z9yM+60keBm+LL*F0qJBx}L*=LHIe`mqyd~|M@Gk$Z#Zw;!f z{!XM=uk(iMIjg_xYlUKc4Z&;6mwne`qT=V|Kkb(8NbeKy-2yPiDAv~;ycXda)G9__ z>lEvEclb^ZHR_jZEaO^y`uPhrp{i4#1Byp?Y$uXV368baH)>9dQQYnASTXu>Xsq?p z@wrLGERH|SP5Sru(Hcgt^@ryqzI()P+4#;7-zDOAE>-`L+-ZdRmZ!MH*nQF82k|={ zGR7#@=MtV{_>CC9*Qj`0FY(cq#qQNaUJRcZRZN-5YupTXQb+e!_Z`Os&rcPv&qMr9 zgx{1^OxMbX+_GoW%F>S#vr506beYT~7uG4nW{HRHAN$frx8>e?dZz(v>8m>RIiq+>$VyTB zV<8#D7dWFv&J)LYY{nSHdd)ywFB+d0aD98MGkKslE70Sp$a}n`M8+7b6W6RpU5#yF zJ>?ty<1}k^Ml`xsTq0u()`{z8tA3%j*P6fi)uT@L+84#Zr!niF&#G`;ERRzp`dDkm zm@n7p)@wZCvjFx5^Tc|PF$QzSws5U%oCk;+72mnlOnlJ^3UA>zYRTwW>-OWjFFb#6 zUJZUn!#SBaSM$s7Zu*;@ivMjz%IGdoU@8^S#hor&OuV~ zdJZSf?ZoefSQcY2H_QS1j(x=3FbC`l=8U=F7~)vrnBdsr959?4hB;tvI7bV=A!2Tr zGk%lBZ?%{+_66sd;oLJELmXR-!SB&u_E(=9IHwE0tKzufaltzA+c%COwuRr6agG_D z8+guqxlawQbFS9~#WmjX9*Xx?yk8W5%vi*>C%Y@x$R2$?`DgnfH&?~fvO$j|>~!u^ zZr=PEV%=-hHA>%u6zgx7INuD{oL4bAH*5=Yz%<(e z?-+w+v5)aPreihZwfBslnmJaxm>Z6v>X-gzs#xE1v0qpx9y{y{_OXvwG9LAzq{q`P zQk;JtpYNDn#B+7mQW4NK5%>OKv~TOo>qMpQDfrFjHGI!!SRil>e_U4|*W1Un{c(;T z&W*u2FgV9-{>yi)_K(%wh@+EY<%4;a8Xu3B{jG)@c7C|=`z-DwfO`Z4XSphL{Xq>c zh|4E}-M|rJMbv{^VpEmg?%2)!MS0(cLf5axS^GP1{pT4&iwQlKOvU_9=X7i+w7(-f zdo7`T98sN03hnPW5ne%P--jxz{T+(6k0Us9xU2mgW798oweKUM60HyV+20Y;W22kt zvyUU9L_1geJ08xM}r1p_62h; zeyXIaeH4o-p;F#asInLGoj^;aey4uHa zv&3ds`#W~z{mIq7j~zRIcD27FsO%0``#55ig*tIfY+QpH*QUm`_pvYDHIBR5$D#7q z{tg@y99tEy=c_-980u<&2OguF)!Vq*-x0KRlB<0j3vX_7wZB8fYu`tvy^mb&?}(`K z+|@n~93SjE=1~6K30M0#iZ=^zwZ8*%8@fA=(Ebjrzx>mrLi;-w-Yh7z?_)#vBd+#$ z;P_zvXNGTdweMpO8{=w!2d*LC{O(d$`#Uh+|M?kL`#UyljB>S)W1;tNuJ(82+&0$L zzK^%RrV`rUf%_ofTI=2q^9t?zz;p8aPuYa_aTLCrPH2Azo~w9_urHW1_WfyN&s98!qsk>0+TVfaB-W3=5xllwTUaOlX7RU%#}WIB*Mz8s z#l-*o9gtg4L^7fM9YZ&KC$#Sa?-3DIPPy90p{}>u-|^+WL*K{oI*j)YyrRk}-i3byR4A+(P})v5g*N~dYx2gdAK z;xDw1L)EGM9at7)aBOi5u`KT2;Xl2pNBcOiUpOWhgIWmtj%6{oSnbl-YJUgrCxS7U zv#MWfFjfEm%EEEMF-MK3#zgx*{Qsyfw7(U8dv)}PQ*zdwC_V{ za(r*EeH^NO?eD<;s(9^{P^`Te3sdiLwZB8vue}wR18RHJ@R%FcsaQWd;4=cYrDAl> zigj+71NH^S5XTC~1jiQ3Vx3qP>%`nJXY4zU3D${aF$UYhV}ZG04tUPsxsB&Mo_lys zs&iF)F|aJg;5m=y9+t%z%m;s)_?yLR1ztn&w~u8p2Cq@E_T_;+fN;+j?_1|w?fXD2 ziW(KQ7HTlmB&bzT%b~`@7}Q#*39&3{b<7QOKn;(5!9L=?ImMr65!&~G+6*-tYFEq? zpEa=W*hhTk!e>VRinl%5$8jb_aaX@9MxB7qp(;lEIIt|%i5edF3_>l68Wo>yu`R3< zpLy||#IhKJ=PEvHqmIJoTzp4?*93eA66;+DyaU1CEVhMp;%^!2Tv>FIt9={`YwUEj zzXRI}o3-54{*Kw#kGtB(5!~jUtNk4z?W0`n`%u?d{SHU5_Hkfan1hPZbGa4kx!Kqj z=AdHq+-$}AT`2Cs6aafoVqdV2!EJlH+TVfijxtr+Ahf?Dps2UhK92Dj(n{^`z&)67 zpEBH=Oy!2}D)qNx-18ANBx=j|m4k)$eIR2D?njAxN8EnMruGS+gnzXRX(;d?^df6%-2aaa30@Lr7f+y;4b2<`j8cUky80pBy= zGd{j2iO74$)jp2d1CP1d-+}L@@EuF*0bWA;IIt|%iF@;5ZkPk^35bj_vEDg6DI&D* z1NR%ncQyD<2KNd?#u&^EbH-zV#|YcP9B}X2;`5^1%!!h-1^w$w+@luvU{&Xs_G?6+ zZ`zju`|8HpZJjfM5vyV}R0>ePM>EQ>L? ze=F|)i~YhqLvM!P@zXvI+#?vv#)_GLd$;y+;GVF!S1j&tJ9bbNp?w^<4=L`GyYN9f zSNk<`X8zBkeH^Nf+OH8kKA(LVxc4sBi8(~LCOmW{~EQ@VnJvb(~r!dA~Jvb&<7RPzz{e(jMCUEay-1``h z5$-{ZWwB0ETUaONkH0%SPw*JwzRB1w=7aknH+XQ#)jkVkjG0|_sjK}IXS|lX+Gl}` zG3wkyZ-VwR;J9IK*zT8mG3$MqF$UXx>$k$yJ_}@wQTgZ`6lZ$Lf_GRF6G5#I%#4*PhtP}f!Wlep-+%RVxXB_{=tI|pBzsMDlMrvOM z9t$jsG1y0BjKTV`kH{EYfZ+|LA&u>?(zvJLH0=!n>HAltkYms7o&A~Cj zXM7c-{TGV$SYZraqg0H(c41k(*5SJ~6{FvwDc09ayuO9e-}Up9V(q`cYZsmas54ca z+JB)~pBotSEKMi3 zVqdT<&fmj#U#N9)USG}{ATp?M?S9hS*UnD#~#16 z;T%hxQ;KsHvd7UqC`!9LXi6xx@8b4c)BkKP2OEA;$2WHmQT z&%wjFD_AG`H_@+wJ`UW^0{s-|o4|fy{`eiOL87xF%cjb%SFO3CYUoW7(JYB4DETIV z-}SuSXRmmt%FnLam&7anm|bUUor&h)3~`*$o+qL?EYoAZLSsk%pBNpl_GHoV$XKWP zyKXCb50}q%V*HmeI$qU-IcUauRE*9+@y$fToPLXrMCZKcL$FgjWXS*NmyTEU=y+tT z6Wda(>%{mkV|1RX9vzR2^?aH0v-5|YIS2Pe=iK1CHO}o%gQ8jIiSeo)9gqBFjLt#D z=sGc8F~(?C_2_tHtVjJ_=b-rgZ%Np&YLU@7uS{{>~G-HfrRgaEG#yYVr#kx+6 z|1t)1*72%N%~;QuIT!Cyj7`f^CpzcGKPP8__wReYjKQ3BysA?(#$#KGb)6XhWsJ^K z)uZE)u^#nzY&WF1!*XV56Pv+sZmBqhfyHWYdvbikSQSl3>rDE6rEfUQbgE_1C*%Ytp#IhKp+fp&QP93ky zVvOc5bHK7sqVllq2{%RO7BuFg)ADXaG-D2!n~L8?@v2=ci!oTgsvspEB7jM1#} z#2m0J{vF$$cqKJEQ23wdoI|SLb8<}D8_gJlIqP_pk7m`bDx00k;@=gUa=^B*EdCwq z51MwxiSSFoR9hQDH##NbT#C*UV>Cy%`#Bz2mn}hM@$ZUFIbd6gby@s7=7xKC;htp} zqgl0!dx2qDQ(IW4W>t?D?8}Dxso{QPxL;eWedv-@^dz~PkNH<#>S8^(Kbk+rTz*zD z@n{wuk8NRDFNneY@32lR8`l0G-^6!)nb)!2u2;2zzN0SXWI1aF#@a6r>%o|X9~OIl zzg~z1j1F@#PwXScgsr=>`&?M%=y=RCR#}L_++yVbee_B?e%HC{ocTA(?}qK2zq>B& zcM@xZ8Cmx?j3nH5~j6Z?oUUPnVc^M_QAj>o>lDhn~Oa>E?3j}r@f zn%1hy{NL~Q>}k}}li_rJ=D%^Z2lK>wFy`i18Yae zV_#yGg_tnN4RgS zen&bU8S7Mk*KI}f=Q=U||HMFUn1g1lN42GMP^_O3q8XkwFh;YgN5>;$o!C}%%;!2W z{>vDh=a)I?=L;1d_H36sG;B|_UfNSLk+@whUi6sX48QGOUNShEL*CAF7aaD9W{lCS z>e2DYs$GoHZK)VtC&nwr7|p649gmFlsK4tR6zg+Cu|Do!#^`uekB&#icx+3tt`p5_@8@hNNPvL961zM7|mbifMxaZRWW$HFn`QV$E$WVtFjn__3Jt@ z{>%Jvd~`hKqvE|jjdDAWJQ6*&3zHpiXUzXMngjY@b$i9x8qL9p#<@q1FaAFcGRW%2Kr^V_w5x|ueOh|byDf3|zFdaM7_ zFU(oTt9&%8vBDT^SJiof>csdj`-Qn-4pT2HVwjepwb{ zFgG2q#zeC!i~GHz9z&gm`_^9O_u)R79%U9OLJh3ds z1iV@59O+*&IzCpOu+J~XU~ZTLmd$zdC#Pf}>D!4LJ^AyDbf&%_Z9|NCVm%m>^V3A< zW+Z8qcGoF0QD$g}I=`JN)+c6`UH@wr{E=C=`hPDc6d;lKOg zp62PcRu`SbL&wW!ZAGu4twiG=HacDrn<~^y+Dsf7zTeq%@q`~T#$a2R!;W7Z`~zw7lZm+z4ygGG-*Cq4eZ&+?r4;3r0WI_@r9 zJ;H5XtfWYCd2V_#+ze8u$IQ#fD8057iBq{6=7w-Wq@g5P5Bn+tx6!EZE2LSBfxX{x$G!vcj@&W~bk z`$*4wpKyWSp|C8*JbV&I>M_K&@VnK@X?KO!=dr?^aosJ<8T%5}{aUT&HWx z#=nFfE9?u7GmaaMCyqasO*1!+Y&xxsJ9cXs!MetirGLKU37*q5*7)GwbGWu7t~q%( zMQ7IdpSsSxdqX*{V~_jD;M(uF#yjpAjqAzd9yjw-rDwy=9d!@<8Wn3@aa=1H_vlGp zFBLnueS_ON-o99SlYO~lOOi+!S(rZJaNr`+;bfFSW(||b2@!}KTgaY z{heL!HG})h;9fSk9x@&mTuT}E>cZoK`^ezlCAdck?uUYV(BNJwxDN}CIgS;MGae({ zD*^Wh#AAy4IpVszcuZrRW3cWtt}l&yNZ}q;;YrdnzgNZC<8vKj?J0x(#dYt8-YUe3 ztSrgqCTb@!f75w_dqd#w5&MGsAYi|64+UI*7}vWt<%a9|<67BabdKpc>yM$yC1p(_R(aKjqm2+Jmn6VNZe6qodF5V-?H0N53Bv%_SeDcFT<( zBXKVq+&2g30I1(cwH_TOy;CflOZWVf9ao%#+uHRgJFTgp> z=-~}0v&7Zce_Xo&{fsy_2IsNh99K1NU%N-(8fCan2(B9zv8lPMum9+s!7;=&$8g;b z9M5Nqa|wO@$1z0TP%J+YtkGv$lMua}=s!hIsOtOI?h80i8^;`d`gn|RjyL)r(W8o9 zNc2>qCk4Hk=C$Asu!kdLk?`ey zCSDY`&hC5}8}ZsT(nu43cl?Iat4AC@K2s}h;-QWYulVteh+i!eH}R@14V@a-TJVcU z6G#&mEB=uc^=~8JeYe~-@zlN7*o{6yv8b?_{W0vYc%P=FH1VOo+ws5# zFWB)W7hDr(Sn`8Bx#M54yWuis;`V!*^5XB3@D8u%IVN7$G=SGB5y1v!Il@fb{$Me_ zB}Z-<%r^@Y2YOZEm0FJzbN|i2P27D+T)rk$_v97Rw-afe&JiX~P`4{zb#t?DPPSqu9(AWHe_Z}IG2u){X5tU) zGKt>lhw>$Bb~q*;SG|~Qa&x}uRJQ;(ajyi$d8_A>SelcCxQW|rEFi-VEf*Ui3v&|( z{7^uy^ja-y7b(n5eEpPEcYfshOt-=OL(IfU zLyEXt4~*c|caQKjaq!K~Y(qo^=`PL7O?=Y*fkj+gERLk_DNQ`PZ#UPwVqQ5jcV%v3 zugr589;vt1h@8(ux{S8C-V zkBQ&QU>Py2zqoLDkTCJv%fWJ6p9Z4zrt!kW-4^$e$DJXfUzZNT#MxW*mCK5Z6$?{T z6eiw3uncSdq>Fri{Qxs@C>{6LcW1hX=(wA>Z^xeemjs#p9?X)=#0k9Th<+3L@s_{O zc1--~_n|yau?x=oQO{fxS9&pm5BW6R)2L7mkBN7#9Kny2tL^6NGQeZvj~h$7f7BW- z{~mJLHF2V@gXPhSkKKgBO9&IsOESqV(x^0_b)_^nai`v)PMS_Hnb-ONZsPlm7CS-7 z%Pis;@0u?AzfFO zbe)Okyc;MZB+`B+CcP&?`+b#nZfWRN|E&E?OnOf!?H501 zwD$Wdlim}c{l3b#^ozL>woJlGjWSwTgh&u4-b((H1V{PP2?idheb#qnt14_GI9{< z!?dIiO}xLtW^tAD;ak#&ChoAOsZ_eoL%Pny8=D5m`lRbxlCCpxz`be)NVmc*4SN!MK^U1ws_a#HEKgy*Am-B+2koTGGI%NSkvRnGCef?w9S zBlz7}n;a7dZSE<{koK!W+RwzK_atb)ukz?SUF8$few|7CnK-0+Fc#H?jZ50{l19b^A%znYhgl1^5KgbxlaunfTEuANH|w8=j7Ior!B;Z>DHk8yNO5DPbH=d9>y#58Rl!^K{q>#t)%O=ldd!IE%yg8jC9>` z(sd?Y-nW~hblnWnbtX=kIk7lLx~>H2Iuj>P+=TYVtx3OCN0O6u8WG%bzf!Da(r3e2IBI@XkGVJZn?M*-$lAEIH-d#F=;t|h;*G_jIR4C zpBz|5C|&oCbe)NZ&~bl5x=zq>H}SxZJ!OgbnfVe5>AI$*>r6~qPJ*uc zD)Sd3XEK9@z$+X z#E2Bh_@TNDxrs^d3DACD<(f%uh&-hI+LQJ(af{A7MS9YH`APekIA_Y_@+xV+kJpz9 z6R(KdSp3r?TpS(WhnqO)8JC4mb>5w_Qvq(`0qrZY%KYz{xUCS;@9(g z@{27ti*-xAn28r{%faVYtIj7;jES?4P9~3)ZOj`}jEMvHWRcA?-x2Qu3rG_mTOZ8Q zR4psxbSfZC9Q=&)p=&$)#-|t)mpj*$9X?llRm4&acaxN|CM>@x#*WwE}*tdeE8fPvHD6enTXmlagjMo#J&2PT}f@3`1Gyx zGD8g?v4Yw%@v-<^&hHoL2s$@R?94AOH{Qw0OXOcAOzh*6RQAu-h+oO%FHC&=<^=Ju zMi>4Y)nnq|p4(U|*^W=37!$wFot^(uzbapo*9-&gL=&rI7W(q{1&CcZe@pWpkGTDGNnOx*TfXLf2~H`$S5OkD4luj^NIh&)97 zGV%583q(-)Ksk`=G4ZVW^&VbzVg@m;o=${FBAVYt&iL`Vu7Cz)nnrR z`yA)e#$o*RQZHfR1Gjt~UUUeblG&e`_|x_UjQYh}(7nLKA*&0b7>X(VL+?v2H z*61RSP+KORxh;oWTCKV~N^P0=ZSL%HPW`I#5w&IF#x1JLj_;Gm-qeM?PPJz4ncOm|pbiZSuoTj}}T>OPFFhup-=<8wZ_Z>0MqumCr4 zt}|Kr^ddLK9f~n=sXeP%oGWqUTx!e2-KP1l%Y%I--M_er*9}P}EB^P96{Z*y@9UIW z-W=YFg;853UbT6F2%GuT*-!e=#Ocm;6=%+smC30s6HoQqCw47+A?Uu$P3+9dBlG6m zC%mX06Hh1o{PMGYHgPY~&o3Wz-kp%@G4aiSiYzPX=bh9q6L%#2T(JITN5zn+6A#$uxO5Gd$w)t&_%G7WDO+w9tEnCn&m;Z3fb{bXiZO9~ z($6pM6L_e;`d_;_alLA5>>TUk=ioxNz%`YNk6BcwoE*R^z*8Eo87I{ zmWdybem+p$N6eQBrU*7a}E0KO4Ky8`$4e94V($67O zkBMiJe*SRsqc})0CeBX!c`@ndIdr^C{3q#WIdp+vS*pjxzmk5wLi+hE=`j<(x#{aL z($9NHkD2%b>F2hjpQqEkz{Gt?Ker|Q971iGI5p|#KS)2{BmHdR2c)0N4_n}ANNt(e zdvr2>ne_7x(&{G8O!|2k>F0gamWfZ?oWSUum-DGD6Hg@lyo&U5?qy!W#CJ(QFDCum zGK)VmF+C^B#-yJ&P+KOZd!J0*ax)uAV`$1UrhUyy#DNo|?f zL;5+C^fTQnxrrI+=jx=N?^2A3&&k#7-Q_rPGqq*n(Nlfc9n#Nqo#!UrLHfB8>F1mj zW8$NvpEr_z9!71Mcqr-TqBEX4XGkBKn3H}cEg@4;TP9vW`uPg!=gHKTi8<+KU((P2 z()gG-g!J<(($Dm+iJMrxbMAKU|Gj_y8vjW8xd7>Bm+CQbMbgiu>HV{cF>%g;!~8mv zex`SN+{E2UKR>=Q(HTJJyom!pzkmLTVoXf$p!hn{&-C7gnK+E}b2ZY>TPViF5u~3F z();HT6l3CG($4{;pO=xQHL=pnbPbo+D8|I}tR4OSnV!3ui6@bMUPk)44(V_cCnNnF zMf$ll)nnpzq@SN=x+A_P{bS;{q@VATex~P2Y2s$2pBw$v*;mzL;^Sw#vIC@_>Gvf~ zoPzZ8FQlJel14Id0@BYjNIx$pJ!ayg^!_;o>E~6X$4tDL-anrs{hXchF>!Fb#w@sJ zI9p3?nYan*=kcVUcTrm=E>8OS&+qoJ9MqPHb8K0_w$FI#s^E~k9mWhwi`{(DRpXnQrG;uh+f2Q{>axb-I;(Mf@N0ENcPi>iaFX`uJ^!`~L zFB2am{d|h_^CoJ`#Pdi$U+NR-{72`8iBpn({)_Z;9@0@J&Pe)sFzM&`r2S0%klsH( zBK=GnNtk#z>F123pMRtn6JI6$yqWa#Dr(Eb9Z5g`Ncy=Q)nnq3q@T}Up6Di|7!&6u z{Y>xT#BgfM#8*i_|4aHg1=VBX{-mGjTbopR-o)kU{j=83CidE~Ky)Yl`~%fv;uWNy zZ;^hULNO*zLHhYT>E{;IFB2=x{3v9BUm2>$#Fsw5e~w4m&%~o{$LQzTq{mGBg7h;z z7w}PZFEH^S($9rSKhrlvVd9LWpI4K9eoUIy#E(foUmmf*Q;OO$aSGDUzmtAeI@82C zNIwrE{d|MkGVx8)&-BejE~K_h97+0_?mKc9wPoTbq@S0NewH+bCZ^{^*_!loe`?Fb z&qzO~BK=&H+A?uQ($5J`nTazOix>rz!i;?>gz{ z*`&uze3$eyeUIbneWrVeMf$lu>E|ibmWfA@ zeqJ^GsdJX}p@|cbem+F{IU}`Y;vuA;cawfzNNt(85b5W1q@Pv4O#Hf1V}7C*`3Ev5 z;U-q|%VPe8MSBQLe81GxGG1OWF<)b``ZqCZX|Spz%*07Un^zp!a)8X6V;VE@pIOiN zwL9EM7V}BXO&nTjpSZiPha9u%lE=jTzkAI*KLp4L+mksa?zX8J|7qS0_A+1*GjXlC z;jUAuh1?mKkej&F_FnQ)rm<{r-@(kpr75Ob=CN#ZpTW$;%}e<6oAdJXaUXwhOf0q* zXG&)DwF0ena6yTZg9(r@w`@%IQ`Zkdi^%V~rQtT*GJjhZR5a3QRx(uDaQq^#+yimy^N3sNxDBU2 z(S`Fl2U*jbrI`&M4jm*Vqjhb$>cnbc!-f7{ogbg1K zE8uJ$IhBG+Io&C#C^JKdMruya49%y9oldAN5s*M`@19K_q?@4&7-NhoYM zZhTfO=pQJPkEz0J_}$vRPKviQ8(uO~-%pyw-tu6-) z^kX)B^ujw)s&gax{^AT~!~ebuWj!i}@IDv2cx?E@>5**O;z2y{{l;B3ytVrT*8RtU zd||;ZyKFdt7$6HK?Iiqe7iKoRFzY~>C{8>j|TMTV)bN^Wy3|shBvpS`&^>2V&%c}jtxIJ*Pn0wud`TG zjR_n6r`jO-cgg^kb#)46!)cxkl*{vWW>YGsU^cAYkyLs8bSu5;i1z1wi(fPkm7)88 z6vGR;t_|PnH<0|zW5xF)>N__4J86yU@4Jgv=kK^S?00;GT-f=IU+TapKO2sDC#3!x z)8Cl?H*?!b3!H0>n#(=?5=k4b@~j&_RsD##)M}Dr!wnZc5@m&x5jt%G9 z)Rq6dvI?uSZ3naABl%jfniE5Lt50E$4gWN&Df{`?;=FV~32wtlmo{@E&vfDk{<$G+ z*z3DMUUT{tG3;$dX2ZwN?G)!~e<#;Rl;Acz>A@YR<YQR^nOC&v0f`ttia$bl#_v6TNZOd~Te)1_3PxFVr+z>fY*zlvE#Qet$+4-SD z>7@-PyqQuS`mGcnI_EaC;Upj5igh27@V6<7a~qaH33%Dr#bikQxYC9{O}!@u4v)(h zyz%8W+&IMz_RBslf1mJ4*zn?R%UFe;HTmyZ5=$Fi{Yzn4XK_MaetUdw!<$ZhU^Olj z;~7&YmNq=U(tl#$)#qYaPhW1sRfDq10ksp!IZrZj8*U)F@b63S5m}GaVK&^ddKg=j zWdN^uC=IjWc0GIXiMN-qv)f8A8-DU(xikCk;e7qUe69^2%{rLRz3IpHbiCr&@QW3p za?$H-Y)PBk%!d7Y1+r3YTFG+H{}MKwwtaKHrRrFgwd!BYh6^@MxI12}QLJ>tAZf$N zQgrrfSa}qCOz((ocwPR%yycAKtmr>^m<@L;9m==6*;%WmMT8A6e3x+7e@R~Z^}aoV z+pzc2b-s66z4Ci-E$*q~>rz#tS4d<%clHaTOgtdtrENr+#@+Lf6 z?g#9rQ%ji*Z#m_0)?Mz#=aoAoY&cK9A9#|EZ&;;mtAq{TOj(vUF8z{ST^C>4@WEl; zyj`;E?CR-K(uPA?df4u?+u2~zO4{(=OnG?5RM}X2VmSwBg0OU1MR7hcO#I z(zzv{aP_M&!>e{4Vhb_^$}F|} z2pfLBV7hqupt)on?g|?&e3tY0o=L2Aye!g&E0_nk#(uRj`Si$Cak7h}Nf}{=i{p&|LxbSTD z-^`c7hMSk(B_8$ug|*AlUfOWwP6PSKVq?W*(aN>qJ!R&LR(+eul(YX7He6xSVtTHt zD^t9QD{Xkpo3d%yPP76u;F-_x3WK{XO%A!l$ACdT>G?d zoL{Q*3_pD@ZTLm6V}8u3$d8RFCT;k;3V}RwG#521|1NAe^iUz5ZpSk5@nAt|!-em? zVAm@&=I7?m5;i<0O=7uf?@Vz%tPZ!~eOsr9IbxOw-`thkaKU;hWygn|#H@RDxebrz z30RpRUw*n+A!)Xnq`Pc9Sb|H{p6c;MavGV%3`&YGxjVZ*5x7Zw}i{3}`yX~k_g z+l>9J?Z0U~b*J~>HthA`0&`B+m01F=G8>-1AvY`BWT1S#pgptUBi&axPc{_d>v#J} z8_pWP7wcH05+9N=yR_k7k9B1CFNer+%V)bb+$qrvCm`J*9&sRy*|6{CS}b+VK5~79 z@yv$(KILNnJ?|@XH=e+3IQ`t(tkAw7Ib+gpX2Wr}7GU9d2FSGa`Y;<#m}I2yJf9If zfUR(B_^#Iuwjfhad9Tc4*M_sbn8Rk=87Wq@>dtL=`+)kaNxn~F(A8$#hHo#g#k~GG zB!YT%mNr~IFfm(m=aT4|yOXrxb6IDy)7jg}@BcX}Y`F114Q1Sn)x~#FNw^K)n|7TQ znbJb~O`R=lIPdjw;&7LNd|PmQ$A(`-#1$7VI`Yu`{L+R8G-=BYEgvK|&!Df}7Tm2s zUpC0Emz5Al}5-)t7f??^3L?wuveZFV*2l$`K7Lfm<>PAxnIm*+kpEHoT@=5chq3fz4-092?#gKN%0d)>IB{bJkK2kInX zHauv2E>>^Y5cw+UG1rEFjc}Oo8!T7XI_=nSWRYZi&f%tVh;ThNe6DIanu}3fE_-s= zvEdZ$hw`(l&w5VHEg)<->BbIn^5s3OQq>8}hW93pFAwBz!gr0U&usWa6`ET*zoYQ~ zJ~6Z59bUowakcfV4IAOuaQVK4+2E!_W#(hociZsFyzfPm!)@i7D-Aq0eDcHuws2)I z-$o%6vqU+$4c}{WhJD|$B#$hek=yX1O-=aQBKg>|1qrzgx680v zjG8`>9URbA+Hip_O?kgJ`NY^4@wp9;Ub#lpz7-*ICGRY4cq#24Gvl9yEb*<{(uQ|F z8O+;9RuS)xHFIrv(t{k%D>;Jug{||m;Uo2*uoD?O@?s?u`PuM<{xhAvCAx@y8$zTF zN1fm3)|kA6y^iQ3ZFoqU!F=K1rYy<6lCBLOA2LjyOO$}MsovPJ;a$nAJ7J4P$b#O| zW5bQ&HIU0E9C!XsoL1WK*}Sh=#NX9qs{_9a8(y?E5g%5fmYnkMVqwDxyWeLO$_L1L zZA&s6o;vj&`;@=FTrlI1u;KJGPqLbS{2)iiyCiIQ%Kl>_Tb7nGC}6#?;WR!wUFGj+ zK>iLJCQpY{{*Fg6{*G^QsXu~*@^>sGe}@hCKVL_FPyUXp%$XjeK`8&pvzr%*dj~&RTlfNSm`8#ZQ+A}|%iToWs$=_karEfJA z4e8sRANf0M_*v7qJed3)0Sm5pZ1};N5S}`?hnPnG4jVq%@`;#D{th4Vci3?2{B6ba zB9TrD@^{#9sv@tP{h$3EHk|H67peRm&B)(j!{q7U%HJVk{2kw9@^o-c{*Ey*{*G_* zn(U|Dpw%({4jWG5^`lV!jwteX*l^bi3z+hEWFUWs4M$EHz~io-B2EuW=Gd_J_&2*l z$=^|#{2exYGV--Y`8!IJzr%*#Eg9o!{Mp}O!_(Vm=PAkG;Ya=s8y;{Yhz}-z$FJn? zu;Dy?GCBju-!Xyw9X3p!4ypVd^Q1$lc`cxDey-_$E(_+mr7le@7(wJ8byH zhci8Z!p9Q^_iSc*X@UGbf-SXt`aLM0c!^N}p5U9-m@9-mkhYdUNnb=1Dj^X6* zu;TkEd3y49T#oT~e3Qx3A?uUB<9dw0gE|b5*hDV=|@~cMvju7&9*zmA?vxM?@)Ga%Irwtcue3mJHM=J7n*zm`-ecdAD z@9-jjhYiPDm4%lie@6)UJ8byug?Fq3`8(o7&0sc6o(`e>9n)g`9pB`Wr$-9q?^yC~ z<1QQC(tUzZ{*Drby6m!HddtO?zoTM|zvG)so(``39s6Va9p7Z~bg)U}?>HUf@AxK@ zr-Lbf$B-C*$2Zx%wMXP3f5%4hci8Z??0sbf`8!UNzr%)o8Vr{c&@+PPX3OG4jaBg{_!#7?MzvG*ncT-n6 znEV|@$lqbZXY;iZHOSx5g8UseJZ@G~q5T~;oNj3|SNS`RlE1@-$nr`odXm3mG5I@exKU76K8XAsiLJCQpYPNB)izG5(Hk@|zFKUFGlCN&XHSCQpY{ z{*HAq{*G_*KPy7{MDlk8k-x)+EA$E!4*5GWlfT1;)3rR#PV`t0wpVe)kFUgYm+9pmr#CXbx+qfBt)4>l(89%jQm_s5qd$*=K}{2De~ z>1Mcidbkh&zJGmY!+*~G=x!jt#%=Oz*zopbd)*r3*XT}u4I7@`;jI|)*{@;4a&86r zJ^3}>lV8Jzmkw(s2b}oC9v1oF+Hg>E+Mo8bU&Dr@PI=r_=1&1FXNQ#>X=g$>Vm(nb~{KSd|BefqXx6# zpb>$x>Bvo@anLko!@g-#$j9WTXik0#8=g3El2Cq%b>ye8;hXWgih<;(C`Nt?8xC#a zEiaOvq6qmZZ1`=}u_8P9De91)!iF34A0(8Yq7V5gYL!F2Y9{1oNLPhrEQDfhp2Phu^} zPhrEI%dZj3$xre2P$y}_hl@4mbI4CIgZvaWd^Bhmt4V%}uH>h%;k-Zi%R=O**iU{6 z8=kjeg;+;^ia6w_u;Ffh{mA>1pCWzaOJT!eQk#`6;rJpTdS8 zweKeDke{Ls`6+BTLvAiY$xrc+{1i6av|1g}g!~j4$xmU!x5l-S-L}Q$OMf2j*l^d4 z|G8P?4Cfu4RUR8omwBsrLH>(}#uY;C*gf zbl9bEVZ;9}qIJH=f6{)^1yzp&v&8*+;xEyq#;jW2hxE;uUF_rum zHe7ylEus7uYsi0L!~UOg3FW`YL;edJ{(f$4QGomxGs%Bp!-=;R5TnU|k&^ruHhiLI zE3s|&Ab$R7B4)#Xd+iW&$$#;I{1-Ny=fxZ`m;4vY$bVtO?tuEDE%`6{lmEho?<}t+ zUcZX*U)Zo;U}CYJ{1-jQe__Mtv(6OCf03R17dG7LpN8Cv{1=(Ye__M_PP;Dhk^iDB z`7dm^;Pr9r5cw~bk^jPm??=RC56FM9k^C1nJfulmq5T&&99*EU7)bt$U&()A!-Xr2 z;OAD(a?6wd!iE#(Il-oq|KdFPFKqZ@&i!mQ`7d^n|H6jJb0NWh@l7Vrg{(;ai+M5r zi*NGg_{pU5UsNOig$4A^$~n@?Y5Sj>Pf#aq?d* zBmadBljnjf|3&2(|HU_%JQwmV`7i3n_%FW6yfALLTwy7TLK>mv;@?Y5S z$M%gyLh@f^C;x>F$D3Dy_ay(tWAb0v@Qo&CL{{=&{7U`{8=kqTiA+#5AKOI!3mfi` zVKr+;{)$kCl>8Tk$bVtOD~=}MGs%AupZpg#y#2{w z8A|?(e~&kFZMgG;9Io|KgimKVAdAg!~t; z$bVtOQ}ezSzmWf80QoO$c>T}k#pyns<>KUtm<@mIc3=3C|Dpl;FKl?*&*#}ms((J! zZ^L1M)_2o+PYuIqQnI}a(@@w=bzlIH~xfyE)-`b+*Z+wdjU+&>FpEe?TuNE8r zTz@I5UzJg9{r~dm!auw928>W^qlVeAs&m-sfYLhuZ}IwJgPo>7$K-Frs{Y?bPE_L) zo&UEuXxLzv>W|LfhE@GB|Lo?^G|auk*;_0oe;d}d>-;~r72TJwab&&Z?!-$m`P;Cn zqso$!|2u!a#YdjUp}k03tMJPWL!~PZui6rGv1t#BRITbakobd8(sQD!N#5?_Q_aY*b>DQm$)4VwZKv zIU7P~2sO{s7E*DtZfA#-EJfv#jxt@e-`}K;-Pg%HzgIhdOz(a@^L>5iJHPqNyr!Ao zaP<##)K|=3nd7Th(%%+tLzz{s5*Bmyx7h#8&4;_rNQZ>WB0=qi>E!z`73j4 z%^bROqZYR|j>R24a_4{C|Gl*r<2#Nm$YrFrgvB4!QS{mId-pS6puL#ha%>^1g9=Po z%+>q5`_EnbxiUX%oR9A|!t2ttl@b@{~ zq*p}%-SbPk8H=sQ*ixyTCRY9DCBowSb%o^Xv{0&RC(dQD%>!Fn5LS(R=hqV!-z>7k zgJQ?wpJXEmld(5`r%@~IZK{rMGT5%qZE{WxK7-zDEn%@c^nU~TH-P?GY~SZLI;$3f zAFT+Ku-HG!52tV4FZJA1jaY08{bxh}rw5ftSZoLV6X@R$`e*St=sy?wPsxtSVsURT zAG}xYC%xoVk61h!`jUAdvm zDF&aB$v>@8<_dHgawc-v6!zXn-4`eY{U;0UASO3bK;iy9PH;5GdvzV*D zFi&bb?Sup z-|6EO{j->>KT5uktIu6VscXt?sM*{v6#cWfqvnII`Hzx++&QV9@E+9xivC&5)$cg{ z@p(w+*3RqIx#mUQ8Y&bUAonPGhQ-|Fbp0-O&0m>~@2tTVDWixaRh-4*?)psnYAqGl zHV7NgGYN}7sKebh?@!%7kIK8Z3fuHvOkiOgi#sd+d7j;EUunFY-a3$hZ1>EOu=s;I zO#SyST7y$AjV8J#DdsHZ>c8An&h3ZXzNOUKBO+I7#(Z4dQkBG!$ z>$egI`EoNBbM+n1ly}`vm04~SNyEdoqWRIMOKe8&vdSUk--0@BC%8KcjR@( zXXY%{({!d6Oo!s29DUTCPsEyG%~ksFeH!Npi;uzjUa&qD*0VT&y9Tb%_NEuTWw|WY zo%Si6lQ)q%Wac3jdlfIE+O3HwmG40;J_PgEfcc+=`Lj3_`o9AG8`ZW-SbQWWklfAILjD?2n8ikY zKS7t&HPOSo7|h~2k3!N|?m;T=1Yj1+1|A_%Ma%KdAA+q}%-vsTzCqVxhcZW|+(VW> z`cu`50}+e4`u|cn-j!*}T;5E{7LTP|{>8DFtA9x4cvt_*{7SS9J$ST|4jrOy!Q$m( zHSod83A8|_hFNS1-+}np?~%0E(;&>^n3)08wJA<$ZBVzG`UBl@B4IBDKXER}O)fHnJ_t2DnwHOl?JD&HY zqR^+rG3%<3#o6gHG(c}A)p}Y=SUgVFjGCHf(9ODM35(Ue)$kH82RhMAN?80hrUseM za-@ML?-Ld$CgmgR0B`DAm_u0Xc2$P{yM7+cZvCFH_)5BrXu*7j!hBdfN7hVKT4qoK zm=BAE-fDCf%%{v$N?2SNQ$w6#KF%;77P}|qlW8!Y`7j?Ae|uF%Uc!8K!+co0v7i_k zz%jmD;22*lK5!O3>kG#;`w@<5#^PA#Rk-rDvGwai!Gy1!tcrwcb_;NRF9Gg}zg-rL z7yBG1{ddQro;Y9NM)n>4Rhr`hpIhpIca-W$=i}K}$3utm^)KY_JrZ-7H0@w4@xw_ z)pjy8Qg<-r>mq*}`l7xU_B(f-@b#ee+176YMY#4XdY^|n za*Q5>>n7PzzHYD#Lg&=>krNeRl&{|!)sdS~-qd+y0^;i{5m88VJOzn0mQudHHX(wB zj$e>-SM4C_&LyzsAF$@mN7kfYb|xzljtDpQjiEj9YUfpOY$juC^R!^X*EcPTr2QcO zPecCq#NR9nri&o|jUfMf;;RBTRQ^8yd*W@SdO}~we^tnTzAlRorALL0!XF_2`Fh{* z$GHO`|05v(d*b@RH>49G|4ShM`8wcpEjV8OCK3zz&)1F);lv&CpF;lsRo-xLIB|yj zPlWvE>tBb7a4Y1$0pvelk2VaYTOt1sL;myi)I<}y9Ws0XWH?_-{cW(}>t4A1>~+G| zX&&l?%hKnNrF{LyGKgeCmL7*JsiDlEHky&~++!x=Rvo{Mj_ z%k#&#T<~g5Pu_k%NT!g_dM?Vs${nvN7ttvbv&}Z;f=^SBPFIK zRNr-PRcS!%$lQomGo!Bu3;Sj6t(iF~H7qPPd~@=mqff1@yw>`UN%l*d@r`SMr0-^N zP@vg<`>9z|Onhet6pZx>nduvfR<5-6n(iERa*TP5vHfH>=e~;qhRkzG7_ra=ja_DF zh%6jT%{)yeO|kzH8yQS&YI-tXAW+eEnr7=2eed~Q6E{2Cp^5JPf17l7Y_P3kTvA(R z;upmQ8k&h#4~I;?lpk>q8#g3XK3RRw?L|(aeDpQ3&)Pl>)yALZw+gS(lIn`qdU@`8 z`5bv`NZX7(bXNtoj&9%bx;64ib*2x|ZV>Ge`@HjhM>34@?%J0nZP!a$EK*x$G({{t ziBn%55Wjw>U)-Qy++G^G3O#R$YJAwTv$4tZMXaTY;GMpTK%goR41m{rVEpQEbHESS l1~-ij=;ME4U4F2sZ}>YiJI?_L Date: Thu, 11 Jul 2024 15:50:32 +0530 Subject: [PATCH 2/8] initial commit --- testbed3d/src/demos/glbToTrimesh.ts | 5 ++++- testbed3d/src/demos/glbtoConvexHull.ts | 6 ++++-- testbed3d/static/sage.glb | Bin 191112 -> 0 bytes testbed3d/static/sword.glb | Bin 0 -> 57860 bytes 4 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 testbed3d/static/sage.glb create mode 100644 testbed3d/static/sword.glb diff --git a/testbed3d/src/demos/glbToTrimesh.ts b/testbed3d/src/demos/glbToTrimesh.ts index 4b26e0b6..5c3fc40e 100644 --- a/testbed3d/src/demos/glbToTrimesh.ts +++ b/testbed3d/src/demos/glbToTrimesh.ts @@ -7,6 +7,8 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { let gravity = new RAPIER.Vector3(0.0, -9.81, 0.0); let world = new RAPIER.World(gravity); + testbed.parameters.debugRender = true; + // Create Ground. let bodyDesc = RAPIER.RigidBodyDesc.fixed(); let groundBody = world.createRigidBody(bodyDesc); @@ -17,8 +19,9 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { let loader = new GLTFLoader() - loader.load('./sage.glb', (gltf) => { + loader.load('./sword.glb', (gltf) => { gltf.scene.position.set(0, 1.2, 0) + gltf.scene.scale.set(3, 3, 3) testbed.graphics.scene.add(gltf.scene) gltf.scene.updateMatrixWorld(true); // ensure world matrix is up to date gltf.scene.traverse((child: Object3D) => { diff --git a/testbed3d/src/demos/glbtoConvexHull.ts b/testbed3d/src/demos/glbtoConvexHull.ts index 7fe29bf2..fad8f40c 100644 --- a/testbed3d/src/demos/glbtoConvexHull.ts +++ b/testbed3d/src/demos/glbtoConvexHull.ts @@ -1,5 +1,5 @@ import type { Testbed } from "../Testbed"; -import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute } from "three"; +import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute, TriangleStripDrawMode } from "three"; import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' type RAPIER_API = typeof import("@dimforge/rapier3d"); @@ -17,9 +17,11 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { let loader = new GLTFLoader() - loader.load('./sage.glb', (gltf) => { + loader.load('./sword.glb', (gltf) => { gltf.scene.position.set(0, 1.2, 0) + gltf.scene.scale.set(3, 3, 3) testbed.graphics.scene.add(gltf.scene) + testbed.parameters.debugRender = true; gltf.scene.updateMatrixWorld(true); // ensure world matrix is up to date const v = new Vector3(); diff --git a/testbed3d/static/sage.glb b/testbed3d/static/sage.glb deleted file mode 100644 index d0f6c12fb5418d5af612752b601515dca6204945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191112 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 literal 0 HcmV?d00001 From 3fd965d32bc4799130402e944b138acd46710eca Mon Sep 17 00:00:00 2001 From: Captain Cool <69457423+Capta1nCool@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:56:26 +0530 Subject: [PATCH 3/8] Delete testbed3d/pnpm-lock.yaml --- testbed3d/pnpm-lock.yaml | 2464 -------------------------------------- 1 file changed, 2464 deletions(-) delete mode 100644 testbed3d/pnpm-lock.yaml diff --git a/testbed3d/pnpm-lock.yaml b/testbed3d/pnpm-lock.yaml deleted file mode 100644 index 229681bb..00000000 --- a/testbed3d/pnpm-lock.yaml +++ /dev/null @@ -1,2464 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - '@dimforge/rapier3d': - specifier: 0.13.1 - version: 0.13.1 - lil-gui: - specifier: ^0.17.0 - version: 0.17.0 - md5: - specifier: ^2.3.0 - version: 2.3.0 - seedrandom: - specifier: ^3.0.5 - version: 3.0.5 - stats.js: - specifier: ^0.17.0 - version: 0.17.0 - three: - specifier: 0.146.0 - version: 0.146.0 - -devDependencies: - '@types/md5': - specifier: ^2.3.2 - version: 2.3.5 - '@types/seedrandom': - specifier: ^3.0.2 - version: 3.0.8 - '@types/stats.js': - specifier: ^0.17.0 - version: 0.17.3 - '@types/three': - specifier: ^0.144.0 - version: 0.144.0 - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.91.0) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - ts-loader: - specifier: ^9.4.1 - version: 9.5.1(typescript@4.9.5)(webpack@5.91.0) - typescript: - specifier: ^4.8.4 - version: 4.9.5 - webpack: - specifier: ^5.74.0 - version: 5.91.0(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) - webpack-dev-server: - specifier: ^4.11.1 - version: 4.15.2(webpack-cli@4.10.0)(webpack@5.91.0) - -packages: - - /@dimforge/rapier3d@0.13.1: - resolution: {integrity: sha512-ITCUCqks70njfFt7S+AEynMw4mpNJLmVWkWDzePhe74YLRWbe4Pu8VOyks2hqHBeTCj2Ts7SE5xoyvg9VsyNMg==} - dev: false - - /@discoveryjs/json-ext@0.5.7: - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - dev: true - - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@leichtgewicht/ip-codec@2.0.5: - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - dev: true - - /@types/body-parser@1.19.5: - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - dependencies: - '@types/connect': 3.4.38 - '@types/node': 20.12.12 - dev: true - - /@types/bonjour@3.5.13: - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - dependencies: - '@types/node': 20.12.12 - dev: true - - /@types/connect-history-api-fallback@1.5.4: - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - dependencies: - '@types/express-serve-static-core': 4.19.1 - '@types/node': 20.12.12 - dev: true - - /@types/connect@3.4.38: - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - dependencies: - '@types/node': 20.12.12 - dev: true - - /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - dependencies: - '@types/eslint': 8.56.10 - '@types/estree': 1.0.5 - dev: true - - /@types/eslint@8.56.10: - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - dev: true - - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true - - /@types/express-serve-static-core@4.19.1: - resolution: {integrity: sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==} - dependencies: - '@types/node': 20.12.12 - '@types/qs': 6.9.15 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - dev: true - - /@types/express@4.17.21: - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.1 - '@types/qs': 6.9.15 - '@types/serve-static': 1.15.7 - dev: true - - /@types/http-errors@2.0.4: - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - dev: true - - /@types/http-proxy@1.17.14: - resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} - dependencies: - '@types/node': 20.12.12 - dev: true - - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true - - /@types/md5@2.3.5: - resolution: {integrity: sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw==} - dev: true - - /@types/mime@1.3.5: - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - dev: true - - /@types/node-forge@1.3.11: - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - dependencies: - '@types/node': 20.12.12 - dev: true - - /@types/node@20.12.12: - resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} - dependencies: - undici-types: 5.26.5 - dev: true - - /@types/qs@6.9.15: - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - dev: true - - /@types/range-parser@1.2.7: - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - dev: true - - /@types/retry@0.12.0: - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - dev: true - - /@types/seedrandom@3.0.8: - resolution: {integrity: sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==} - dev: true - - /@types/send@0.17.4: - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - dependencies: - '@types/mime': 1.3.5 - '@types/node': 20.12.12 - dev: true - - /@types/serve-index@1.9.4: - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - dependencies: - '@types/express': 4.17.21 - dev: true - - /@types/serve-static@1.15.7: - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 20.12.12 - '@types/send': 0.17.4 - dev: true - - /@types/sockjs@0.3.36: - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - dependencies: - '@types/node': 20.12.12 - dev: true - - /@types/stats.js@0.17.3: - resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} - dev: true - - /@types/three@0.144.0: - resolution: {integrity: sha512-psvEs6q5rLN50jUYZ3D4pZMfxTbdt3A243blt0my7/NcL6chaCZpHe2csbCtx0SOD9fI/XnF3wnVUAYZGqCSYg==} - dependencies: - '@types/webxr': 0.5.16 - dev: true - - /@types/webxr@0.5.16: - resolution: {integrity: sha512-0E0Cl84FECtzrB4qG19TNTqpunw0F1YF0QZZnFMF6pDw1kNKJtrlTKlVB34stGIsHbZsYQ7H0tNjPfZftkHHoA==} - dev: true - - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - dependencies: - '@types/node': 20.12.12 - dev: true - - /@webassemblyjs/ast@1.12.1: - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true - - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true - - /@webassemblyjs/helper-buffer@1.12.1: - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - dev: true - - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true - - /@webassemblyjs/helper-wasm-section@1.12.1: - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 - dev: true - - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: true - - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - dependencies: - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true - - /@webassemblyjs/wasm-edit@1.12.1: - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 - dev: true - - /@webassemblyjs/wasm-gen@1.12.1: - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wasm-opt@1.12.1: - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - dev: true - - /@webassemblyjs/wasm-parser@1.12.1: - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wast-printer@1.12.1: - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@xtuc/long': 4.2.2 - dev: true - - /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.91.0): - resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} - peerDependencies: - webpack: 4.x.x || 5.x.x - webpack-cli: 4.x.x - dependencies: - webpack: 5.91.0(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) - dev: true - - /@webpack-cli/info@1.5.0(webpack-cli@4.10.0): - resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} - peerDependencies: - webpack-cli: 4.x.x - dependencies: - envinfo: 7.13.0 - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) - dev: true - - /@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2): - resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} - peerDependencies: - webpack-cli: 4.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - dependencies: - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) - webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.91.0) - dev: true - - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true - - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true - - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: true - - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.11.3 - dev: true - - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv-formats@2.1.1(ajv@8.13.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.13.0 - dev: true - - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: true - - /ajv-keywords@5.1.0(ajv@8.13.0): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - dependencies: - ajv: 8.13.0 - fast-deep-equal: 3.1.3 - dev: true - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - dev: true - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - dev: true - - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: true - - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /bonjour-service@1.2.1: - resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} - dependencies: - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - dev: true - - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001621 - electron-to-chromium: 1.4.781 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.0) - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: true - - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true - - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - dev: true - - /caniuse-lite@1.0.30001621: - resolution: {integrity: sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==} - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dev: false - - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: true - - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: true - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true - - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true - - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - dev: true - - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: true - - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: true - - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - dev: true - - /copy-webpack-plugin@11.0.0(webpack@5.91.0): - resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.1.0 - dependencies: - fast-glob: 3.3.2 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.91.0(webpack-cli@4.10.0) - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - dev: false - - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - dependencies: - execa: 5.1.1 - dev: true - - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: true - - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: true - - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: true - - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true - - /detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - dev: true - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - dev: true - - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true - - /electron-to-chromium@1.4.781: - resolution: {integrity: sha512-aBI40ltvcWJQDW+V803FY6HjXAfi5xCWzpa3vSM/NGg7GfKEvI7ftzW4Gb2XKTRO4WsxDG7YG8ykrr/pG9bkKQ==} - dev: true - - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true - - /enhanced-resolve@5.16.1: - resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - - /envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - dev: true - - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: true - - /es-module-lexer@1.5.3: - resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} - dev: true - - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - dev: true - - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true - - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true - - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: true - - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.2 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.6.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - dev: true - - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - dependencies: - reusify: 1.0.4 - dev: true - - /faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - dependencies: - websocket-driver: 0.7.4 - dev: true - - /fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true - - /follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: true - - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: true - - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - - /fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true - - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 4.0.0 - dev: true - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.4 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - - /handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - dev: true - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.0 - dev: true - - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true - - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: true - - /hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - dev: true - - /html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - dev: true - - /http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - dev: true - - /http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - dev: true - - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: true - - /http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - dev: true - - /http-proxy-middleware@2.0.6(@types/express@4.17.21): - resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - dependencies: - '@types/express': 4.17.21 - '@types/http-proxy': 1.17.14 - http-proxy: 1.18.1 - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.7 - transitivePeerDependencies: - - debug - dev: true - - /http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.6 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - dev: true - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - dev: true - - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /interpret@2.2.0: - resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} - engines: {node: '>= 0.10'} - dev: true - - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: true - - /ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - dev: true - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: true - - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false - - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.2 - dev: true - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - dev: true - - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true - - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 20.12.12 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /launch-editor@2.6.1: - resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} - dependencies: - picocolors: 1.0.1 - shell-quote: 1.8.1 - dev: true - - /lil-gui@0.17.0: - resolution: {integrity: sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==} - dev: false - - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - dev: false - - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: true - - /memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - dependencies: - fs-monkey: 1.0.6 - dev: true - - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true - - /micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: true - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - - /multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - dev: true - - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true - - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - - /node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - dev: true - - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true - - /obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - dev: true - - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: true - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - dev: true - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - dev: true - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - dev: true - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: true - - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: true - - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.6 - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true - - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: true - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /rechoir@0.7.1: - resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.8 - dev: true - - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true - - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.13.0 - ajv-formats: 2.1.1(ajv@8.13.0) - ajv-keywords: 5.1.0(ajv@8.13.0) - dev: true - - /seedrandom@3.0.5: - resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} - dev: false - - /select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - dev: true - - /selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - dev: true - - /semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - dependencies: - randombytes: 2.1.0 - dev: true - - /serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - dev: true - - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: true - - /setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - dev: true - - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true - - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: true - - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - dev: true - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: true - - /sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - dev: true - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: true - - /spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - dependencies: - debug: 4.3.4 - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - dev: true - - /spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - dependencies: - debug: 4.3.4 - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /stats.js@0.17.0: - resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} - dev: false - - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: true - - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - - /terser-webpack-plugin@5.3.10(webpack@5.91.0): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.0 - webpack: 5.91.0(webpack-cli@4.10.0) - dev: true - - /terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - - /three@0.146.0: - resolution: {integrity: sha512-1lvNfLezN6OJ9NaFAhfX4sm5e9YCzHtaRgZ1+B4C+Hv6TibRMsuBAM5/wVKzxjpYIlMymvgsHEFrrigEfXnb2A==} - dev: false - - /thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - dev: true - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: true - - /ts-loader@9.5.1(typescript@4.9.5)(webpack@5.91.0): - resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} - engines: {node: '>=12.0.0'} - peerDependencies: - typescript: '*' - webpack: ^5.0.0 - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.16.1 - micromatch: 4.0.7 - semver: 7.6.2 - source-map: 0.7.4 - typescript: 4.9.5 - webpack: 5.91.0(webpack-cli@4.10.0) - dev: true - - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: true - - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true - - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true - - /update-browserslist-db@1.0.16(browserslist@4.23.0): - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.1 - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - dev: true - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true - - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: true - - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: true - - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true - - /watchpack@2.4.1: - resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: true - - /wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - dependencies: - minimalistic-assert: 1.0.1 - dev: true - - /webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0): - resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - '@webpack-cli/generators': '*' - '@webpack-cli/migrate': '*' - webpack: 4.x.x || 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - '@webpack-cli/migrate': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.91.0) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2) - colorette: 2.0.20 - commander: 7.2.0 - cross-spawn: 7.0.3 - fastest-levenshtein: 1.0.16 - import-local: 3.1.0 - interpret: 2.2.0 - rechoir: 0.7.1 - webpack: 5.91.0(webpack-cli@4.10.0) - webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.91.0) - webpack-merge: 5.10.0 - dev: true - - /webpack-dev-middleware@5.3.4(webpack@5.91.0): - resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - webpack: 5.91.0(webpack-cli@4.10.0) - dev: true - - /webpack-dev-server@4.15.2(webpack-cli@4.10.0)(webpack@5.91.0): - resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} - engines: {node: '>= 12.13.0'} - hasBin: true - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.4 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.19.2 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.6.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack: 5.91.0(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) - webpack-dev-middleware: 5.3.4(webpack@5.91.0) - ws: 8.17.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - dev: true - - /webpack-merge@5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - dev: true - - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true - - /webpack@5.91.0(webpack-cli@4.10.0): - resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.1 - es-module-lexer: 1.5.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.91.0) - watchpack: 2.4.1 - webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.91.0) - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - - /websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - dev: true - - /websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true From a343ad49d2019f8d3b42a21b6ac9978eedad4410 Mon Sep 17 00:00:00 2001 From: Captain Cool <69457423+Capta1nCool@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:56:38 +0530 Subject: [PATCH 4/8] Update package.json --- testbed3d/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testbed3d/package.json b/testbed3d/package.json index b92bc44b..a47dae51 100644 --- a/testbed3d/package.json +++ b/testbed3d/package.json @@ -11,12 +11,12 @@ "test": "cargo test && wasm-pack test --headless" }, "dependencies": { - "@dimforge/rapier3d": "0.13.1", + "@dimforge/rapier3d": "file:../rapier3d", "lil-gui": "^0.17.0", "md5": "^2.3.0", "seedrandom": "^3.0.5", "stats.js": "^0.17.0", - "three": "0.146.0" + "three": "^0.146.0" }, "devDependencies": { "@types/md5": "^2.3.2", From d0ce628bac0ab195b8d85526f6a54506a0addd0b Mon Sep 17 00:00:00 2001 From: Captain Cool <69457423+Capta1nCool@users.noreply.github.com> Date: Fri, 12 Jul 2024 09:13:35 +0530 Subject: [PATCH 5/8] Update glbToTrimesh.ts --- testbed3d/src/demos/glbToTrimesh.ts | 30 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/testbed3d/src/demos/glbToTrimesh.ts b/testbed3d/src/demos/glbToTrimesh.ts index 5c3fc40e..1d4d00b0 100644 --- a/testbed3d/src/demos/glbToTrimesh.ts +++ b/testbed3d/src/demos/glbToTrimesh.ts @@ -1,6 +1,6 @@ -import type { Testbed } from "../Testbed"; -import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute } from "three"; -import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' +import type {Testbed} from "../Testbed"; +import {Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute} from "three"; +import {GLTFLoader} from "three/examples/jsm/loaders/GLTFLoader"; type RAPIER_API = typeof import("@dimforge/rapier3d"); export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { @@ -17,12 +17,12 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { // Adding the 3d model - let loader = new GLTFLoader() + let loader = new GLTFLoader(); - loader.load('./sword.glb', (gltf) => { - gltf.scene.position.set(0, 1.2, 0) - gltf.scene.scale.set(3, 3, 3) - testbed.graphics.scene.add(gltf.scene) + loader.load("./sword.glb", (gltf) => { + gltf.scene.position.set(0, 1.2, 0); + gltf.scene.scale.set(3, 3, 3); + testbed.graphics.scene.add(gltf.scene); gltf.scene.updateMatrixWorld(true); // ensure world matrix is up to date gltf.scene.traverse((child: Object3D) => { if ((child as Mesh).isMesh && (child as Mesh).geometry) { @@ -31,7 +31,9 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { const vertices: number[] = []; const indices = new Uint32Array(geometry.index!.array); // assume index is non-null - const positionAttribute = geometry.getAttribute('position') as BufferAttribute; + const positionAttribute = geometry.getAttribute( + "position", + ) as BufferAttribute; mesh.updateWorldMatrix(true, true); @@ -48,7 +50,10 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { const rigidBodyDesc = RAPIER.RigidBodyDesc.fixed(); const rigidBody = world.createRigidBody(rigidBodyDesc); - const colliderDesc = RAPIER.ColliderDesc.trimesh(verticesArray, indices); + const colliderDesc = RAPIER.ColliderDesc.trimesh( + verticesArray, + indices, + ); world.createCollider(colliderDesc, rigidBody); } }); @@ -56,9 +61,8 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { testbed.setWorld(world); let cameraPosition = { - eye: { x: 10.0, y: 5.0, z: 10.0 }, - target: { x: 0.0, y: 0.0, z: 0.0 }, + eye: {x: 10.0, y: 5.0, z: 10.0}, + target: {x: 0.0, y: 0.0, z: 0.0}, }; testbed.lookAt(cameraPosition); - } From a0bca64b7b7ee8330954590ed797fb28dce8315d Mon Sep 17 00:00:00 2001 From: Captain Cool <69457423+Capta1nCool@users.noreply.github.com> Date: Fri, 12 Jul 2024 09:13:50 +0530 Subject: [PATCH 6/8] Update glbtoConvexHull.ts --- testbed3d/src/demos/glbtoConvexHull.ts | 36 ++++++++++++++++---------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/testbed3d/src/demos/glbtoConvexHull.ts b/testbed3d/src/demos/glbtoConvexHull.ts index fad8f40c..75c4d923 100644 --- a/testbed3d/src/demos/glbtoConvexHull.ts +++ b/testbed3d/src/demos/glbtoConvexHull.ts @@ -1,6 +1,13 @@ -import type { Testbed } from "../Testbed"; -import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute, TriangleStripDrawMode } from "three"; -import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' +import type {Testbed} from "../Testbed"; +import { + Vector3, + Object3D, + Mesh, + BufferGeometry, + BufferAttribute, + TriangleStripDrawMode, +} from "three"; +import {GLTFLoader} from "three/examples/jsm/loaders/GLTFLoader"; type RAPIER_API = typeof import("@dimforge/rapier3d"); export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { @@ -15,12 +22,12 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { // Adding the 3d model - let loader = new GLTFLoader() + let loader = new GLTFLoader(); - loader.load('./sword.glb', (gltf) => { - gltf.scene.position.set(0, 1.2, 0) - gltf.scene.scale.set(3, 3, 3) - testbed.graphics.scene.add(gltf.scene) + loader.load("./sword.glb", (gltf) => { + gltf.scene.position.set(0, 1.2, 0); + gltf.scene.scale.set(3, 3, 3); + testbed.graphics.scene.add(gltf.scene); testbed.parameters.debugRender = true; gltf.scene.updateMatrixWorld(true); // ensure world matrix is up to date @@ -31,7 +38,9 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { if ((child as Mesh).isMesh && (child as Mesh).geometry) { const mesh = child as Mesh; const geometry = mesh.geometry as BufferGeometry; - const positionAttribute = geometry.getAttribute('position') as BufferAttribute; + const positionAttribute = geometry.getAttribute( + "position", + ) as BufferAttribute; for (let i = 0, l = positionAttribute.count; i < l; i++) { v.fromBufferAttribute(positionAttribute, i); @@ -44,15 +53,16 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { const rigidBodyDesc = RAPIER.RigidBodyDesc.fixed(); const rigidBody = world.createRigidBody(rigidBodyDesc); - const colliderDesc = RAPIER.ColliderDesc.convexHull(new Float32Array(positions)); + const colliderDesc = RAPIER.ColliderDesc.convexHull( + new Float32Array(positions), + ); world.createCollider(colliderDesc, rigidBody); }); - testbed.setWorld(world); let cameraPosition = { - eye: { x: 10.0, y: 5.0, z: 10.0 }, - target: { x: 0.0, y: 0.0, z: 0.0 }, + eye: {x: 10.0, y: 5.0, z: 10.0}, + target: {x: 0.0, y: 0.0, z: 0.0}, }; testbed.lookAt(cameraPosition); } From 0e94ba7e83c243cfb3cc3c8e8544145e9e61b1e7 Mon Sep 17 00:00:00 2001 From: Thierry Berger Date: Tue, 23 Jul 2024 09:51:12 +0200 Subject: [PATCH 7/8] changed model for suzanne --- rapier3d/build_typescript.sh | 2 ++ testbed3d/package-lock.json | 1 + testbed3d/src/demos/glbToTrimesh.ts | 12 ++++++------ testbed3d/src/demos/glbtoConvexHull.ts | 10 +++++----- testbed3d/static/suzanne_blender_monkey.glb | Bin 0 -> 60820 bytes testbed3d/static/sword.glb | Bin 57860 -> 0 bytes 6 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 testbed3d/static/suzanne_blender_monkey.glb delete mode 100644 testbed3d/static/sword.glb diff --git a/rapier3d/build_typescript.sh b/rapier3d/build_typescript.sh index 25e06159..89d0da22 100755 --- a/rapier3d/build_typescript.sh +++ b/rapier3d/build_typescript.sh @@ -1,3 +1,5 @@ +#! /bin/sh + mkdir -p ./pkg/src cp -r ../src.ts/* pkg/src/. rm -f ./pkg/raw.ts diff --git a/testbed3d/package-lock.json b/testbed3d/package-lock.json index f110096f..952b7089 100644 --- a/testbed3d/package-lock.json +++ b/testbed3d/package-lock.json @@ -31,6 +31,7 @@ } }, "../rapier3d": { + "name": "@dimforge/rapier3d", "dependencies": { "wasm-pack": "^0.12.1" }, diff --git a/testbed3d/src/demos/glbToTrimesh.ts b/testbed3d/src/demos/glbToTrimesh.ts index 1d4d00b0..724aabf0 100644 --- a/testbed3d/src/demos/glbToTrimesh.ts +++ b/testbed3d/src/demos/glbToTrimesh.ts @@ -1,6 +1,6 @@ -import type {Testbed} from "../Testbed"; -import {Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute} from "three"; -import {GLTFLoader} from "three/examples/jsm/loaders/GLTFLoader"; +import type { Testbed } from "../Testbed"; +import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute } from "three"; +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; type RAPIER_API = typeof import("@dimforge/rapier3d"); export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { @@ -19,7 +19,7 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { let loader = new GLTFLoader(); - loader.load("./sword.glb", (gltf) => { + loader.load("./suzanne_blender_monkey.glb", (gltf) => { gltf.scene.position.set(0, 1.2, 0); gltf.scene.scale.set(3, 3, 3); testbed.graphics.scene.add(gltf.scene); @@ -61,8 +61,8 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { testbed.setWorld(world); let cameraPosition = { - eye: {x: 10.0, y: 5.0, z: 10.0}, - target: {x: 0.0, y: 0.0, z: 0.0}, + eye: { x: 10.0, y: 5.0, z: 10.0 }, + target: { x: 0.0, y: 0.0, z: 0.0 }, }; testbed.lookAt(cameraPosition); } diff --git a/testbed3d/src/demos/glbtoConvexHull.ts b/testbed3d/src/demos/glbtoConvexHull.ts index 75c4d923..8b14aff4 100644 --- a/testbed3d/src/demos/glbtoConvexHull.ts +++ b/testbed3d/src/demos/glbtoConvexHull.ts @@ -1,4 +1,4 @@ -import type {Testbed} from "../Testbed"; +import type { Testbed } from "../Testbed"; import { Vector3, Object3D, @@ -7,7 +7,7 @@ import { BufferAttribute, TriangleStripDrawMode, } from "three"; -import {GLTFLoader} from "three/examples/jsm/loaders/GLTFLoader"; +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; type RAPIER_API = typeof import("@dimforge/rapier3d"); export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { @@ -24,7 +24,7 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { let loader = new GLTFLoader(); - loader.load("./sword.glb", (gltf) => { + loader.load("./suzanne_blender_monkey.glb", (gltf) => { gltf.scene.position.set(0, 1.2, 0); gltf.scene.scale.set(3, 3, 3); testbed.graphics.scene.add(gltf.scene); @@ -61,8 +61,8 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { testbed.setWorld(world); let cameraPosition = { - eye: {x: 10.0, y: 5.0, z: 10.0}, - target: {x: 0.0, y: 0.0, z: 0.0}, + eye: { x: 10.0, y: 5.0, z: 10.0 }, + target: { x: 0.0, y: 0.0, z: 0.0 }, }; testbed.lookAt(cameraPosition); } diff --git a/testbed3d/static/suzanne_blender_monkey.glb b/testbed3d/static/suzanne_blender_monkey.glb new file mode 100644 index 0000000000000000000000000000000000000000..6b8819b0e9103c3192b0ec5991642c3900f09231 GIT binary patch literal 60820 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 From 8771181854ba445d39ad73bdd2abe1eedfda69ad Mon Sep 17 00:00:00 2001 From: Thierry Berger Date: Tue, 23 Jul 2024 10:05:44 +0200 Subject: [PATCH 8/8] run prettier --- testbed3d/src/demos/glbToTrimesh.ts | 10 +++++----- testbed3d/src/demos/glbtoConvexHull.ts | 8 ++++---- testbed3d/src/index.ts | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/testbed3d/src/demos/glbToTrimesh.ts b/testbed3d/src/demos/glbToTrimesh.ts index 724aabf0..fa65a7cd 100644 --- a/testbed3d/src/demos/glbToTrimesh.ts +++ b/testbed3d/src/demos/glbToTrimesh.ts @@ -1,6 +1,6 @@ -import type { Testbed } from "../Testbed"; -import { Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute } from "three"; -import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; +import type {Testbed} from "../Testbed"; +import {Vector3, Object3D, Mesh, BufferGeometry, BufferAttribute} from "three"; +import {GLTFLoader} from "three/examples/jsm/loaders/GLTFLoader"; type RAPIER_API = typeof import("@dimforge/rapier3d"); export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { @@ -61,8 +61,8 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { testbed.setWorld(world); let cameraPosition = { - eye: { x: 10.0, y: 5.0, z: 10.0 }, - target: { x: 0.0, y: 0.0, z: 0.0 }, + eye: {x: 10.0, y: 5.0, z: 10.0}, + target: {x: 0.0, y: 0.0, z: 0.0}, }; testbed.lookAt(cameraPosition); } diff --git a/testbed3d/src/demos/glbtoConvexHull.ts b/testbed3d/src/demos/glbtoConvexHull.ts index 8b14aff4..a4d2619e 100644 --- a/testbed3d/src/demos/glbtoConvexHull.ts +++ b/testbed3d/src/demos/glbtoConvexHull.ts @@ -1,4 +1,4 @@ -import type { Testbed } from "../Testbed"; +import type {Testbed} from "../Testbed"; import { Vector3, Object3D, @@ -7,7 +7,7 @@ import { BufferAttribute, TriangleStripDrawMode, } from "three"; -import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; +import {GLTFLoader} from "three/examples/jsm/loaders/GLTFLoader"; type RAPIER_API = typeof import("@dimforge/rapier3d"); export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { @@ -61,8 +61,8 @@ export function initWorld(RAPIER: RAPIER_API, testbed: Testbed) { testbed.setWorld(world); let cameraPosition = { - eye: { x: 10.0, y: 5.0, z: 10.0 }, - target: { x: 0.0, y: 0.0, z: 0.0 }, + eye: {x: 10.0, y: 5.0, z: 10.0}, + target: {x: 0.0, y: 0.0, z: 0.0}, }; testbed.lookAt(cameraPosition); } diff --git a/testbed3d/src/index.ts b/testbed3d/src/index.ts index a66a9286..d72a0528 100644 --- a/testbed3d/src/index.ts +++ b/testbed3d/src/index.ts @@ -12,8 +12,8 @@ import * as ConvexPolyhedron from "./demos/convexPolyhedron"; import * as CCD from "./demos/ccd"; import * as Platform from "./demos/platform"; import * as CharacterController from "./demos/characterController"; -import * as glbToTrimesh from './demos/glbToTrimesh' -import * as glbToConvexHull from './demos/glbtoConvexHull' +import * as glbToTrimesh from "./demos/glbToTrimesh"; +import * as glbToConvexHull from "./demos/glbtoConvexHull"; import("@dimforge/rapier3d").then((RAPIER) => { let builders = new Map([ @@ -35,4 +35,4 @@ import("@dimforge/rapier3d").then((RAPIER) => { ]); let testbed = new Testbed(RAPIER, builders); testbed.run(); -}); \ No newline at end of file +});