diff --git a/packages/taikoon-ui/.env.example b/packages/taikoon-ui/.env.example index b6f13b2a3cb..eb45e513c7d 100644 --- a/packages/taikoon-ui/.env.example +++ b/packages/taikoon-ui/.env.example @@ -1,3 +1,3 @@ PUBLIC_WALLETCONNECT_PROJECT_ID=fake -PUBLIC_IPFS_GATEWAY=https://taikoons-fake-ipfs-gateway.vercel.app/ipfs/ +PUBLIC_IPFS_GATEWAY=https://taikoons.4everland.link/ipfs/ PUBLIC_LAUNCH_DATE=2024-05-26T00:00:00 diff --git a/packages/taikoon/.env.example b/packages/taikoon/.env.example index 6ec6170c7d7..2898b8b004c 100644 --- a/packages/taikoon/.env.example +++ b/packages/taikoon/.env.example @@ -9,3 +9,6 @@ SEPOLIA_ADDRESS= KATLA_PRIVATE_KEY= KATLA_ADDRESS= IPFS_BASE_URI= +OWNER= +4EVERLAND_ACCESS_KEY= +4EVERLAND_SECRET_KEY= diff --git a/packages/taikoon/README.md b/packages/taikoon/README.md index 03f2b8ca48f..8f8b9216f50 100644 --- a/packages/taikoon/README.md +++ b/packages/taikoon/README.md @@ -1 +1,51 @@ -# Taikoon NFT +# Taikoon MFT + +## Setup + +To run in localhost, first, start an Anvil node: + +```shell +$ pnpm node +``` + +Copy the default `.env.example` file to `.env`, and fill in the required values + +Then, deploy the contracts: + +```shell +$ pnpm install # installs the workspace's dependencies +``` + +--- + +## Deploying the Taikoons + +In order to deploy the token, the images for the NFTs must be placed under `data/original/`. The following script will re-size them and upload them to IPFS: + +```shell +$ pnpm deploy:ipfs +``` + +After a lot of information about the resize and upload process, the `/data/metadata` folder will be populated with the metadata files. Upload the folder to IPFS. + +4EverLand's web panel works just fine. + +Copy over the root CID to the `.env` file. + +```shell +$ pnpm deploy:localhost # For the local Anvil node +$ pnpm deploy:holesky # For Holesky's Devnet +$ pnpm deploy:devnet # For Taiko's Devnet +``` + +## Minters + +Used to add minters to the whitelist. The source addresses and amounts must be added under the corresponding network CSV file in `data/whitelist/` + +As with the Fetch script, there's a version available for each network: + +```shell +$ pnpm minters:localhost +$ pnpm minters:holesky +$ pnpm minters:devnet +``` diff --git a/packages/taikoon/package.json b/packages/taikoon/package.json index 7e4c2402ba9..baf2991748f 100644 --- a/packages/taikoon/package.json +++ b/packages/taikoon/package.json @@ -5,7 +5,7 @@ "scripts": { "clean": "rm -rf abis cache* && forge clean", "compile": "forge build --build-info --extra-output storage-layout", - "eslint": "pnpm exec eslint --ignore-path .eslintignore --ext .js,.ts .", + "eslint": "pnpm exec eslint --ignore-path .eslintignore --ext .js,.ts . --fix", "fmt:sol": "forge fmt", "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol'", "test": "pnpm clean && pnpm compile && forge test --match-path 'test/*.t.sol' -vvv", @@ -13,8 +13,8 @@ "merkle": "node script/js/generate-merkle-tree.js", "deploy:localhost": "forge clean && pnpm compile && forge script script/sol/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", "deploy:holesky": "forge clean && pnpm compile && forge script script/sol/Deploy.s.sol --rpc-url https://l1rpc.hekla.taiko.xyz/ --broadcast --gas-estimate-multiplier 200", - "deploy:devnet": "forge clean && pnpm compile && forge script script/sol/Deploy.s.sol --rpc-url https://rpc.internal.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "deploy:ipfs": "rm -rf data/metadata/* && node script/js/resize-images.js && node script/js/add-images-ipfs.js && echo 'IPFS Base URI:' && ipfs add -r ./data/metadata/ && echo 'Update your .env file with the new IPFS URI'" + "deploy:ipfs": "rm -rf data/metadata/* && node script/js/resize-images.js && node script/js/4everland.js", + "deploy:devnet": "forge clean && pnpm compile && forge script script/sol/Deploy.s.sol --rpc-url https://rpc.internal.taiko.xyz --broadcast --gas-estimate-multiplier 200" }, "devDependencies": { "@types/node": "^20.11.30", @@ -34,10 +34,13 @@ "typescript": "^5.2.2" }, "dependencies": { + "@aws-sdk/client-s3": "^3.574.0", + "@aws-sdk/lib-storage": "^3.574.0", "@openzeppelin/contracts": "5.0.2", "@openzeppelin/contracts-upgradeable": "5.0.2", "@openzeppelin/merkle-tree": "^1.0.6", "convert-csv-to-json": "^2.46.0", + "dotenv": "^16.4.5", "ds-test": "github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0", "forge-std": "github:foundry-rs/forge-std", "ipfs-http-client": "^60.0.1", diff --git a/packages/taikoon/script/js/4everland.js b/packages/taikoon/script/js/4everland.js new file mode 100644 index 00000000000..9a09a6cd685 --- /dev/null +++ b/packages/taikoon/script/js/4everland.js @@ -0,0 +1,168 @@ +const { S3 } = require("@aws-sdk/client-s3"); +const { Upload } = require("@aws-sdk/lib-storage"); +const fs = require("fs"); +const fsPromises = fs.promises; +const path = require("path"); +const dotenv = require('dotenv') +dotenv.config() + +async function uploadFile(s3, params) { + try { + const task = new Upload({ + client: s3, + queueSize: 3, // 3 MiB + params, + }); + + const res = await task.done(); + return res.ETag.split('"').join(""); + } catch (error) { + if (error) { + console.log("task", error.message); + } + } +} + +// Helper function to form the metadata JSON object +function populateNFTMetadata(name, description, CID) { + return { + name, + description, + image: CID, + }; +} + +async function main() { + const s3Params = { + accessKey: process.env["4EVERLAND_ACCESS_KEY"], + secretKey: process.env["4EVERLAND_SECRET_KEY"], + }; + const { accessKey, secretKey } = s3Params; + const s3 = new S3({ + endpoint: "https://endpoint.4everland.co", + credentials: { + accessKeyId: accessKey, + secretAccessKey: secretKey, + }, + region: "4EVERLAND", + }); + + // Get the images to upload from the local filesystem (/images) + console.log(`Importing images from the images/ directory...`); + const imgDirPath = path.join(path.resolve(__dirname, "../../data"), "images"); + const filesName = await fsPromises.readdir(imgDirPath, (err) => { + if (err) { + console.log("Import from directory failed: ", err); + } + }); + + // Uploading images to IPFS + console.log(`Uploading image data to IPFS...`); + const imageCIDs = []; + const imagesSummary = []; + let imageCount = 1; + const imagesName = filesName.filter((fileName) => fileName.includes(".png")); + for await (const imageName of imagesName) { + const imageFilePath = path.join( + path.resolve(__dirname, "../../data"), + "images", + imageName, + ); + const params = { + Bucket: "taikoons-testbucket", + Key: imageName, + ContentType: "image/png", + Body: fs.readFileSync(imageFilePath), + }; + + const imageCID = await uploadFile(s3, params); + + imageCIDs.push(imageCID); + imagesSummary.push({ imageCID, imageCount }); + console.log(`Image ${imageCount} added to IPFS with CID of ${imageCID}`); + imageCount++; + } + console.log(` `); + + // Add the metadata to IPFS + console.log(`Adding metadata to IPFS...`); + let taikoonId = 0; + for await (const imageCID of imageCIDs) { + taikoonId++; + + // write into a file + fs.writeFileSync( + path.join( + path.resolve(__dirname, "../../data"), + "metadata", + `${taikoonId}.json`, + ), + JSON.stringify( + populateNFTMetadata( + `Taikoon ${taikoonId}`, + "A Taikoon", + imageCID.toString(), + ), + ), + ); + + console.log( + path.join( + path.resolve(__dirname, "../../data"), + "metadata", + `${taikoonId}.json`, + ), + ); + /* + metadataCIDs.push(metadataCID); + for (let i = 0; i < imagesSummary.length; i++) { + if (imagesSummary[i].imageCID == imageCID) { + imagesSummary[i].metadataCID = metadataCID; + } + } */ + // console.log(`Metadata with image CID ${imageCID} added to IPFS with CID of ${metadataCID}`); + } + console.log(` `); + /* + fs.writeFileSync( + path.join( + path.resolve(__dirname, "../../data"), + "metadata", + "summary.json", + ), + JSON.stringify({ imagesSummary }), + ); +*/ + /* + const putObjectOutput = await s3.putObject({ + Bucket: "bucketname", + Key: "key", + Body: "data content", + }); + + // multipart upload + const params = { + Bucket, + Key: file.name, + Body: file, + ContentType: file.type, + }; + try { + const task = new Upload({ + client: s3, + queueSize: 3, // 3 MiB + params, + }); + task.on("httpUploadProgress", (e) => { + const progress = ((e.loaded / e.total) * 100) | 0; + console.log(progress, e); + }); + await task.done(); + } catch (error) { + if (error) { + console.log("task", error.message); + } + } */ +} + +main(); diff --git a/packages/taikoon/script/js/add-images-ipfs.js b/packages/taikoon/script/js/add-images-ipfs.js index 620de6725e9..85d14a8d8d1 100644 --- a/packages/taikoon/script/js/add-images-ipfs.js +++ b/packages/taikoon/script/js/add-images-ipfs.js @@ -1,95 +1,120 @@ -const path = require('path') -const fs = require('fs') -const fsPromises = fs.promises +const path = require("path"); +const fs = require("fs"); +const fsPromises = fs.promises; // Helper function to form the metadata JSON object function populateNFTMetadata(name, description, CID) { - return { - name, - description, - image: CID, - } + return { + name, + description, + image: CID, + }; } async function main() { - console.log(`Configuring the IPFS instance...`) - const { create } = await import('ipfs-http-client') - const ipfs = create() - const endpointConfig = await ipfs.getEndpointConfig() - console.log(`IPFS configured to connect via: `) - console.debug(endpointConfig) - console.log(` `) - - // Get the images to upload from the local filesystem (/images) - console.log(`Importing images from the images/ directory...`) - const imgDirPath = path.join(path.resolve(__dirname, '../../data'), 'images') - const filesName = await fsPromises.readdir(imgDirPath, (err) => { - if (err) { - console.log('Import from directory failed: ', err) - } - }) - const imagesName = filesName.filter((fileName) => fileName.includes('.png')) - let imagesData = [] - for await (const imageName of imagesName) { - let imageFilePath = path.join(path.resolve(__dirname, '../../data'), 'images', imageName) - let imageData = await fsPromises.readFile(imageFilePath) - imagesData.push(imageData) - } - console.log(`Imported images as buffered data\n`) + console.log(`Configuring the IPFS instance...`); + const { create } = await import("ipfs-http-client"); + const ipfs = create(); + const endpointConfig = await ipfs.getEndpointConfig(); + console.log(`IPFS configured to connect via: `); + console.debug(endpointConfig); + console.log(` `); - // Uploading images to IPFS - console.log(`Uploading image data to IPFS...`) - let imageCIDs = [] - let imagesSummary = [] - let imageCount = 1 - for await (const imageData of imagesData) { - let { cid: imageCID } = await ipfs.add({ - content: imageData, - }) - imageCIDs.push(imageCID) - imagesSummary.push({ imageCID, imageCount }) - console.log(`Image added to IPFS with CID of ${imageCID}`) - imageCount++ + // Get the images to upload from the local filesystem (/images) + console.log(`Importing images from the images/ directory...`); + const imgDirPath = path.join(path.resolve(__dirname, "../../data"), "images"); + const filesName = await fsPromises.readdir(imgDirPath, (err) => { + if (err) { + console.log("Import from directory failed: ", err); } - console.log(` `) - - + }); + const imagesName = filesName.filter((fileName) => fileName.includes(".png")); + const imagesData = []; + for await (const imageName of imagesName) { + const imageFilePath = path.join( + path.resolve(__dirname, "../../data"), + "images", + imageName, + ); + const imageData = await fsPromises.readFile(imageFilePath); + imagesData.push(imageData); + } + console.log(`Imported images as buffered data\n`); - // Add the metadata to IPFS - console.log(`Adding metadata to IPFS...`); - let metadataCIDs = []; - let taikoonId = 0 - for await (const imageCID of imageCIDs) { - taikoonId++ - const {cid: metadataCID} = await ipfs.add({ - // NOTE: You can implement different name & descriptions for each metadata - content: JSON.stringify(populateNFTMetadata(`Taikoon ${taikoonId}`, "A Taikoon", imageCID.toString())) - }) + // Uploading images to IPFS + console.log(`Uploading image data to IPFS...`); + const imageCIDs = []; + const imagesSummary = []; + let imageCount = 1; + for await (const imageData of imagesData) { + const { cid: imageCID } = await ipfs.add({ + content: imageData, + }); + imageCIDs.push(imageCID); + imagesSummary.push({ imageCID, imageCount }); + console.log(`Image added to IPFS with CID of ${imageCID}`); + imageCount++; + } + console.log(` `); - // write into a file - fs.writeFileSync( - path.join(path.resolve(__dirname, '../../data'), 'metadata', `${taikoonId}.json`), - JSON.stringify(populateNFTMetadata(`Taikoon ${taikoonId}`, "A Taikoon", imageCID.toString())) - ) - - - console.log(path.join(path.resolve(__dirname, '../../data'), 'metadata', `${taikoonId}.json`)) - metadataCIDs.push(metadataCID); - for (let i = 0; i < imagesSummary.length; i ++) { - if (imagesSummary[i].imageCID == imageCID) { - imagesSummary[i].metadataCID = metadataCID - } - }; - //console.log(`Metadata with image CID ${imageCID} added to IPFS with CID of ${metadataCID}`); - } - console.log(` `); + // Add the metadata to IPFS + console.log(`Adding metadata to IPFS...`); + const metadataCIDs = []; + let taikoonId = 0; + for await (const imageCID of imageCIDs) { + taikoonId++; + const { cid: metadataCID } = await ipfs.add({ + // NOTE: You can implement different name & descriptions for each metadata + content: JSON.stringify( + populateNFTMetadata( + `Taikoon ${taikoonId}`, + "A Taikoon", + imageCID.toString(), + ), + ), + }); + // write into a file fs.writeFileSync( - path.join(path.resolve(__dirname, '../../data'), 'metadata', 'summary.json'), - JSON.stringify({imagesSummary}) - ) + path.join( + path.resolve(__dirname, "../../data"), + "metadata", + `${taikoonId}.json`, + ), + JSON.stringify( + populateNFTMetadata( + `Taikoon ${taikoonId}`, + "A Taikoon", + imageCID.toString(), + ), + ), + ); + console.log( + path.join( + path.resolve(__dirname, "../../data"), + "metadata", + `${taikoonId}.json`, + ), + ); + metadataCIDs.push(metadataCID); + for (let i = 0; i < imagesSummary.length; i++) { + if (imagesSummary[i].imageCID == imageCID) { + imagesSummary[i].metadataCID = metadataCID; + } + } + // console.log(`Metadata with image CID ${imageCID} added to IPFS with CID of ${metadataCID}`); + } + console.log(` `); + fs.writeFileSync( + path.join( + path.resolve(__dirname, "../../data"), + "metadata", + "summary.json", + ), + JSON.stringify({ imagesSummary }), + ); } -main() +main(); diff --git a/packages/taikoon/script/js/generate-merkle-tree.js b/packages/taikoon/script/js/generate-merkle-tree.js index 0fc6eb0752b..3c963295fe8 100644 --- a/packages/taikoon/script/js/generate-merkle-tree.js +++ b/packages/taikoon/script/js/generate-merkle-tree.js @@ -1,32 +1,27 @@ -const { StandardMerkleTree } = require('@openzeppelin/merkle-tree') -const path = require('path') -const fs = require('fs') -const ConvertCsvToJson = require('convert-csv-to-json'); +const { StandardMerkleTree } = require("@openzeppelin/merkle-tree"); +const path = require("path"); +const fs = require("fs"); +const ConvertCsvToJson = require("convert-csv-to-json"); async function main(network) { - const inputFile = path.join(__dirname, `../../data/whitelist/${network}.csv`) - const outputFile = path.join(__dirname, `../../data/whitelist/${network}.json`) - const rawJson = ConvertCsvToJson.fieldDelimiter(',').getJsonFromCsv(inputFile); + const inputFile = path.join(__dirname, `../../data/whitelist/${network}.csv`); + const outputFile = path.join( + __dirname, + `../../data/whitelist/${network}.json`, + ); + const rawJson = + ConvertCsvToJson.fieldDelimiter(",").getJsonFromCsv(inputFile); - const values = rawJson.map((entry) => { - return [ - entry.address, - entry.freeMints, - ] - }) + const values = rawJson.map((entry) => { + return [entry.address, entry.freeMints]; + }); - const tree = StandardMerkleTree.of( - values, - ["address", "uint256"] - ) + const tree = StandardMerkleTree.of(values, ["address", "uint256"]); - fs.writeFileSync( - outputFile, - JSON.stringify( - {...tree.dump(), - root: tree.root - }, null, 2) - ) + fs.writeFileSync( + outputFile, + JSON.stringify({ ...tree.dump(), root: tree.root }, null, 2), + ); console.log(`Merkle Root for network ${network}`, tree.root) } diff --git a/packages/taikoon/script/js/resize-images.js b/packages/taikoon/script/js/resize-images.js index 578281607a0..e13d171bf8d 100644 --- a/packages/taikoon/script/js/resize-images.js +++ b/packages/taikoon/script/js/resize-images.js @@ -1,59 +1,56 @@ -const fs = require('fs') -const path = require('path') -const sharp = require('sharp'); +const fs = require("fs"); +const path = require("path"); +const sharp = require("sharp"); function shuffleArray(array) { - return array /* + return array; /* for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } - return array;*/ - } - -async function main(){ - const taikoonsDir = path.join(__dirname, '../../data/original/') - - const blobs = [] - // iterate over files in the directory - fs.readdir(taikoonsDir, async (err, rawFiles) => { - if (err) { - console.error(err) - return - } - - const files = shuffleArray(rawFiles) - - const finalImageSize = 32 + return array; */ +} - for (const file of files) { - if (!file.endsWith('.png')) continue - const fileIndex = file.split('.')[0] - const sourceFilePath = path.join(taikoonsDir, file) - const destinationFilePath = path.join(__dirname, '../../data/images/', file) +async function main() { + const taikoonsDir = path.join(__dirname, "../../data/original/"); - const sharpImage = sharp(sourceFilePath).resize( - finalImageSize, - finalImageSize, - { - kernel: sharp.kernel.nearest - } - ).png({compressionLevel: 9}) + const blobs = []; + // iterate over files in the directory + fs.readdir(taikoonsDir, async (err, rawFiles) => { + if (err) { + console.error(err); + return; + } + const files = shuffleArray(rawFiles); - const contents = await sharpImage.toBuffer() - await sharpImage.toFile(destinationFilePath) + const finalImageSize = 32; - console.log(`Converted ${file} to 32x32 PNG.`) + for (const file of files) { + if (!file.endsWith(".png")) continue; + const fileIndex = file.split(".")[0]; + const sourceFilePath = path.join(taikoonsDir, file); + const destinationFilePath = path.join( + __dirname, + "../../data/images/", + file, + ); - } - console.log(`Converted ${blobs.length} Taikoon PNG files to 32x32 base64.`) + const sharpImage = sharp(sourceFilePath) + .resize(finalImageSize, finalImageSize, { + kernel: sharp.kernel.nearest, + }) + .png({ compressionLevel: 9 }); - // fs.writeFileSync(path.join(__dirname, '../../data/taikoons-32.json'), JSON.stringify({blobs}, null, 2)) + const contents = await sharpImage.toBuffer(); + await sharpImage.toFile(destinationFilePath); - }) + console.log(`Converted ${file} to 32x32 PNG.`); + } + console.log(`Converted ${blobs.length} Taikoon PNG files to 32x32 base64.`); + // fs.writeFileSync(path.join(__dirname, '../../data/taikoons-32.json'), JSON.stringify({blobs}, null, 2)) + }); } - -main() +main(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc023c7cd69..8638711424b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -449,6 +449,12 @@ importers: packages/taikoon: dependencies: + '@aws-sdk/client-s3': + specifier: ^3.574.0 + version: 3.575.0 + '@aws-sdk/lib-storage': + specifier: ^3.574.0 + version: 3.575.0(@aws-sdk/client-s3@3.575.0) '@openzeppelin/contracts': specifier: 5.0.2 version: 5.0.2 @@ -461,6 +467,9 @@ importers: convert-csv-to-json: specifier: ^2.46.0 version: 2.46.0 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 @@ -755,6 +764,181 @@ packages: resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@aws-crypto/crc32@3.0.0': + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} + + '@aws-crypto/crc32c@3.0.0': + resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} + + '@aws-crypto/ie11-detection@3.0.0': + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + + '@aws-crypto/sha1-browser@3.0.0': + resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} + + '@aws-crypto/sha256-browser@3.0.0': + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + + '@aws-crypto/sha256-js@3.0.0': + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + + '@aws-crypto/supports-web-crypto@3.0.0': + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + + '@aws-crypto/util@3.0.0': + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + + '@aws-sdk/client-s3@3.575.0': + resolution: {integrity: sha512-4h0YIvLNcKNqwPbxWqwHCH3KWMpRdKhfQPq7kZcZXzFRi3yVAVaAsZcH8eXZsKPlitxkfWNgvfcTXOjStL1uHA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso-oidc@3.575.0': + resolution: {integrity: sha512-YCstVaW5tAvXs+v4LR9gNAO+VRhIObjk1/knCdVQ5QQRTevtVQtdJWeNrDZYo4ATo0OHGyqGCj5Z09TWMv+e1Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso@3.575.0': + resolution: {integrity: sha512-elFWpAtktD3XBy47etG80GKXK9Lh3sNCMXLjcSs0NS0fdRIQJS2zKxC8qK22UQmdFKpXxthND5FKk7fNEqrR+g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sts@3.575.0': + resolution: {integrity: sha512-8MrT4J2dRiskf0JFMGL5VNBqPvc6igNa218LGBJzHXmLsm1WfGCGnce84R7U2USr8oPOenu0XzSCLvMQyZbGWQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/core@3.575.0': + resolution: {integrity: sha512-117U+kQki2XoKcYQfepmlRcNxn6rELGlOFOBQ8Z2JTBXEYHblW2ke067a0CLmxFwp/zCWuc7IGjd3in3x4Q3rg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-env@3.575.0': + resolution: {integrity: sha512-YTgpq3rvYBXzW6OTDB00cE79evQtss/lz2GlJXgqqVXD0m7i77hGA8zb44VevP/WxtDaiSW7SSjuu8VCBGsg4g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.575.0': + resolution: {integrity: sha512-xQfVmYI+9KqRvhWY8fyElnpcVUBBUgi/Hoji3oU6WLrUjrX98k93He7gKDQSyHf7ykMLUAJYWwsV4AjQ2j6njA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.575.0': + resolution: {integrity: sha512-BdM6a/5VUuNge3c6yRuxvO+4srLoSfqHfkQGfUDfhTdTJpljlpfnc9h3z2Ni1+aueOHPZMNFWIktHDcX5wUGBg==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': 3.575.0 + + '@aws-sdk/credential-provider-node@3.575.0': + resolution: {integrity: sha512-rEdNpqW2jEc5kwbf/s9XQywMLQlIkMjuCK6mw9sF2OVRGHGVnh+6eh/1JFx8Kj+eU51ctifQ7KaHe8dGco8HYQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-process@3.575.0': + resolution: {integrity: sha512-2/5NJV7MZysKglqJSQ/O8OELNcwLcH3xknabL9NagtzB7RNB2p1AUXR0UlTey9sSDLL4oCmNa/+unYuglW/Ahg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-sso@3.575.0': + resolution: {integrity: sha512-NtXA9OPIKsqavs2F7hhLT/t2ZDjwJsvQevj31ov1NpmTNYMc7OWFWDptOG7rppsWMsk5KKmfiL2qViQJnezXNA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.575.0': + resolution: {integrity: sha512-QcvVH7wpvpFRXGAGgCBfQeiF/ptD0NJ+Hrc8dDYfPGhFeZ0EoVQBYNphLi25xe7JZ+XbaqCKrURHZtr4fAEOJw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': 3.575.0 + + '@aws-sdk/lib-storage@3.575.0': + resolution: {integrity: sha512-Ejk449EDqrJ1rSKP3T8nIn7n6jVxRTmomY0tmgsbCE0d17b2PzK4J2hjbbIT7AAi4E3kiRYptyIVG8y5Ga1gnw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.575.0 + + '@aws-sdk/middleware-bucket-endpoint@3.575.0': + resolution: {integrity: sha512-ytsp7xcmbpkVk4TLoi91YyXQh/vwSIGdJ2Awo/pi6ac5Fqe6OntPijh5GHSVj5ZrxW4haPWb6HdBmKMo4liGEw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-expect-continue@3.575.0': + resolution: {integrity: sha512-8Nq4UtEi63MJPoYBACW5YoMKQdbrkLNGIdTyrolNRNwVS+6nQqDMvBplakCzQ1nL1rHOEEsKKc8e2BlG9SkR5A==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.575.0': + resolution: {integrity: sha512-UbyqN39v6s+olyuVKwX778w6J2ZuYpxb1j+KdhFtZwpMSLd/UIQ0+A71U2vB6TrC52OEW0jIXEEBv6PcMBz9nw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-host-header@3.575.0': + resolution: {integrity: sha512-V2WoLBiXNCc4rIWZt6FUcP4TN0Vk02A9PPCBWkTfyOooiqfq+WZmZjRRBpwl1+5UsvARslrKWF0VzheMRXPJLQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-location-constraint@3.575.0': + resolution: {integrity: sha512-MtQsLsEjSSSfm0OlQqg9PEzS1nxJDdApGoeCYLTbCzIp6hChdLZCCsDXwGg9S++24rjQsUglMhXh4WGXQ9FDnw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-logger@3.575.0': + resolution: {integrity: sha512-7DEKx9Z11Maaye7FfhYtC8rjbM/PcFcMO2N4QEAfypcgWCj+w4gseE2OGdfAH9OFDoFc6YvLp53v16vbPjzQSg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.575.0': + resolution: {integrity: sha512-ri89ldRFos6KZDGaknWPS2XPO9qr+gZ7+mPaoU8YkSM1W4uKqtnUSONyc+O3CFGJrqReuGHhRq0l2Sld0bjwOw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.575.0': + resolution: {integrity: sha512-8cBG8/tap4F6+UigTpKu8D2bvsLgqRTmn1K86qo3LqRX0Wc5X8TVjdKA2PmG0onOOr7rqTLcP9Q02LCh3usU6Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-signing@3.575.0': + resolution: {integrity: sha512-frpGG7i3YngWwrYIeDq8/nbat3Gfl803qasaS112rmlPU0ezmYS1SPxpXjpIKxUUYofbzaFtRBAOHU1u7GnWew==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-ssec@3.575.0': + resolution: {integrity: sha512-rEFt2w3DdlmPsHRvVXOW6rNDIPE7UaEZ5a4LAkn78XilQYuQdhm5wtw5Ao0pJpDSVYNCZDVZaAvdHKQ1dnfwCA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-user-agent@3.575.0': + resolution: {integrity: sha512-fWlr4RfrUNS2R3PgP+WsoMYORAgv/47Lp0J0fb3dXO1YvdczNWddRbFSUX2MQxM/y9XFfQPLpLgzluhoL3Cjeg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/region-config-resolver@3.575.0': + resolution: {integrity: sha512-sBJKwTWKCWu9y8FzXIijYGwkKr3tDkPXM7BylToe6W+tGkp4OirV4iXrWA9zReNwTTepoxHufofqjGK9BtcI8g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.575.0': + resolution: {integrity: sha512-QMwuLuNwnEQ51RCZX8H/lXnOJgBcJJOCgClB9usW/XujNJVq8GnpZ5E7TsQLN88G6fifmcjQWonLKummuh/zVA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/token-providers@3.575.0': + resolution: {integrity: sha512-EPNDPQoQkjKqn4D2t70qVzbfdtlaAy9KBdG58qD1yNWVxq8Rh/lXdwmB+aE2PSahtyfVikZdCRoZiFzxDh5IUA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': 3.575.0 + + '@aws-sdk/types@3.575.0': + resolution: {integrity: sha512-XrnolQGs0wXxdgNudirR14OgNOarH7WUif38+2Pd4onZH+L7XoILem0EgA1tRpgFpw2pFHlZCNaAHDNSBEal7g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-arn-parser@3.568.0': + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-endpoints@3.575.0': + resolution: {integrity: sha512-wC5x+V6w3kRlR6X6XVINsAPDYG+Tzs3Wthlw+YLtjuPODUNZIQAqsABHahxnekFyAvse+1929Hwo+CaL+BHZGA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-locate-window@3.568.0': + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-user-agent-browser@3.575.0': + resolution: {integrity: sha512-iADonXyaXgwvC4T0qRuDWCdKInz82GX2cyezq/oqVlL8bPY7HD8jwZZruuJdq5tkaJi1EhbO4+f1ksZqOiZKvQ==} + + '@aws-sdk/util-user-agent-node@3.575.0': + resolution: {integrity: sha512-kwzvBfA0LoILDOFS6BV8uOkksBHrYulP6kNXegB5eZnDSNia5DbBsXqxQ/HknNF5a429SWQw2aaQJEgQvZB1VA==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@aws-sdk/xml-builder@3.575.0': + resolution: {integrity: sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ==} + engines: {node: '>=16.0.0'} + '@babel/code-frame@7.24.2': resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} @@ -3127,6 +3311,197 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@smithy/abort-controller@3.0.0': + resolution: {integrity: sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==} + engines: {node: '>=16.0.0'} + + '@smithy/chunked-blob-reader-native@3.0.0': + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + + '@smithy/chunked-blob-reader@3.0.0': + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + + '@smithy/config-resolver@3.0.0': + resolution: {integrity: sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==} + engines: {node: '>=16.0.0'} + + '@smithy/core@2.0.0': + resolution: {integrity: sha512-y1VuiOpU8nL0KlL0pvYpOddKGK+8xpD4Jvg9NN42Bl6gHWAr46LpAzWi4I78WxcFIMN1vw1+RUVOlcqR/vfs5g==} + engines: {node: '>=16.0.0'} + + '@smithy/credential-provider-imds@3.0.0': + resolution: {integrity: sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@3.0.0': + resolution: {integrity: sha512-PUtyEA0Oik50SaEFCZ0WPVtF9tz/teze2fDptW6WRXl+RrEenH8UbEjudOz8iakiMl3lE3lCVqYf2Y+znL8QFQ==} + + '@smithy/eventstream-serde-browser@3.0.0': + resolution: {integrity: sha512-NB7AFiPN4NxP/YCAnrvYR18z2/ZsiHiF7VtG30gshO9GbFrIb1rC8ep4NGpJSWrz6P64uhPXeo4M0UsCLnZKqw==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.0': + resolution: {integrity: sha512-RUQG3vQ3LX7peqqHAbmayhgrF5aTilPnazinaSGF1P0+tgM3vvIRWPHmlLIz2qFqB9LqFIxditxc8O2Z6psrRw==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.0': + resolution: {integrity: sha512-baRPdMBDMBExZXIUAoPGm/hntixjt/VFpU6+VmCyiYJYzRHRxoaI1MN+5XE+hIS8AJ2GCHLMFEIOLzq9xx1EgQ==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-universal@3.0.0': + resolution: {integrity: sha512-HNFfShmotWGeAoW4ujP8meV9BZavcpmerDbPIjkJbxKbN8RsUcpRQ/2OyIxWNxXNH2GWCAxuSB7ynmIGJlQ3Dw==} + engines: {node: '>=16.0.0'} + + '@smithy/fetch-http-handler@3.0.0': + resolution: {integrity: sha512-gP1MlOpIB/onIbh4g9eSG3XdI/G31cAvd9Lo11192eL4mxks3xpkPaa+RIcZaX2Vmb8I8HzxBddPSXviY1iq0w==} + + '@smithy/hash-blob-browser@3.0.0': + resolution: {integrity: sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ==} + + '@smithy/hash-node@3.0.0': + resolution: {integrity: sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==} + engines: {node: '>=16.0.0'} + + '@smithy/hash-stream-node@3.0.0': + resolution: {integrity: sha512-J0i7de+EgXDEGITD4fxzmMX8CyCNETTIRXlxjMiNUvvu76Xn3GJ31wQR85ynlPk2wI1lqoknAFJaD1fiNDlbIA==} + engines: {node: '>=16.0.0'} + + '@smithy/invalid-dependency@3.0.0': + resolution: {integrity: sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/md5-js@3.0.0': + resolution: {integrity: sha512-Tm0vrrVzjlD+6RCQTx7D3Ls58S3FUH1ZCtU1MIh/qQmaOo1H9lMN2as6CikcEwgattnA9SURSdoJJ27xMcEfMA==} + + '@smithy/middleware-content-length@3.0.0': + resolution: {integrity: sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.0.0': + resolution: {integrity: sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.0': + resolution: {integrity: sha512-kFaBiTa50y0iwhrOjX5UISo1SfiXPrE1EsMtZJAVF7Oci3AUpVzaMzRxzQJFGnxioSyCwSmzqiE9x4X3dW+7VQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.0': + resolution: {integrity: sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.0': + resolution: {integrity: sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.0.0': + resolution: {integrity: sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@3.0.0': + resolution: {integrity: sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==} + engines: {node: '>=16.0.0'} + + '@smithy/property-provider@3.0.0': + resolution: {integrity: sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==} + engines: {node: '>=16.0.0'} + + '@smithy/protocol-http@4.0.0': + resolution: {integrity: sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@3.0.0': + resolution: {integrity: sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-parser@3.0.0': + resolution: {integrity: sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==} + engines: {node: '>=16.0.0'} + + '@smithy/service-error-classification@3.0.0': + resolution: {integrity: sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==} + engines: {node: '>=16.0.0'} + + '@smithy/shared-ini-file-loader@3.0.0': + resolution: {integrity: sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@3.0.0': + resolution: {integrity: sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==} + engines: {node: '>=16.0.0'} + + '@smithy/smithy-client@3.0.0': + resolution: {integrity: sha512-HTLlEOPOoPxyVCoqzwRGJuRh4hyAAo+eveRcEPi7UpIaq2PCAmdFZM76jabUuzlPPR9ge+OQlKzZre+LT1nXzA==} + engines: {node: '>=16.0.0'} + + '@smithy/types@3.0.0': + resolution: {integrity: sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.0': + resolution: {integrity: sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==} + + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-defaults-mode-browser@3.0.0': + resolution: {integrity: sha512-/ChTQXFZVK/92dLR9RLW2fOG03ghgUYZnRfrs9d9T3L7UxtsGx9QitF7Ppu64A8xcUHqA30kV7TUayFRBd7YQw==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@3.0.0': + resolution: {integrity: sha512-gfABCXswcMgDUcVO+16e4BgTFnouaXNCowp9mVxV8dgaOCpUT9eEWIC+PK3ZoEm26QwlwT7WgfuN1Y22HKX36g==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@2.0.0': + resolution: {integrity: sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@3.0.0': + resolution: {integrity: sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-retry@3.0.0': + resolution: {integrity: sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==} + engines: {node: '>=16.0.0'} + + '@smithy/util-stream@3.0.0': + resolution: {integrity: sha512-AYQeeAxBi3yee9SXC0HgrbeIchQeo6EAkpiwwmmCK6Z7uq8GnMGe8AxRZT3O4wyMNRNK2qfjZSvx6+wKfuMajg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.0.0': + resolution: {integrity: sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==} + engines: {node: '>=16.0.0'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -4088,6 +4463,9 @@ packages: buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -5222,6 +5600,10 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + fast-xml-parser@4.3.6: resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} hasBin: true @@ -8136,6 +8518,9 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -9478,6 +9863,521 @@ snapshots: transitivePeerDependencies: - supports-color + '@aws-crypto/crc32@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.575.0 + tslib: 1.14.1 + + '@aws-crypto/crc32c@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.575.0 + tslib: 1.14.1 + + '@aws-crypto/ie11-detection@3.0.0': + dependencies: + tslib: 1.14.1 + + '@aws-crypto/sha1-browser@3.0.0': + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-browser@3.0.0': + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-js@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.575.0 + tslib: 1.14.1 + + '@aws-crypto/supports-web-crypto@3.0.0': + dependencies: + tslib: 1.14.1 + + '@aws-crypto/util@3.0.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-sdk/client-s3@3.575.0': + dependencies: + '@aws-crypto/sha1-browser': 3.0.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/core': 3.575.0 + '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/middleware-bucket-endpoint': 3.575.0 + '@aws-sdk/middleware-expect-continue': 3.575.0 + '@aws-sdk/middleware-flexible-checksums': 3.575.0 + '@aws-sdk/middleware-host-header': 3.575.0 + '@aws-sdk/middleware-location-constraint': 3.575.0 + '@aws-sdk/middleware-logger': 3.575.0 + '@aws-sdk/middleware-recursion-detection': 3.575.0 + '@aws-sdk/middleware-sdk-s3': 3.575.0 + '@aws-sdk/middleware-signing': 3.575.0 + '@aws-sdk/middleware-ssec': 3.575.0 + '@aws-sdk/middleware-user-agent': 3.575.0 + '@aws-sdk/region-config-resolver': 3.575.0 + '@aws-sdk/signature-v4-multi-region': 3.575.0 + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-endpoints': 3.575.0 + '@aws-sdk/util-user-agent-browser': 3.575.0 + '@aws-sdk/util-user-agent-node': 3.575.0 + '@aws-sdk/xml-builder': 3.575.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.0 + '@smithy/eventstream-serde-browser': 3.0.0 + '@smithy/eventstream-serde-config-resolver': 3.0.0 + '@smithy/eventstream-serde-node': 3.0.0 + '@smithy/fetch-http-handler': 3.0.0 + '@smithy/hash-blob-browser': 3.0.0 + '@smithy/hash-node': 3.0.0 + '@smithy/hash-stream-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/md5-js': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.0 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.0 + '@smithy/util-defaults-mode-node': 3.0.0 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-stream': 3.0.0 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.575.0(@aws-sdk/client-sts@3.575.0)': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/core': 3.575.0 + '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/middleware-host-header': 3.575.0 + '@aws-sdk/middleware-logger': 3.575.0 + '@aws-sdk/middleware-recursion-detection': 3.575.0 + '@aws-sdk/middleware-user-agent': 3.575.0 + '@aws-sdk/region-config-resolver': 3.575.0 + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-endpoints': 3.575.0 + '@aws-sdk/util-user-agent-browser': 3.575.0 + '@aws-sdk/util-user-agent-node': 3.575.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.0 + '@smithy/fetch-http-handler': 3.0.0 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.0 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.0 + '@smithy/util-defaults-mode-node': 3.0.0 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/client-sso@3.575.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.575.0 + '@aws-sdk/middleware-host-header': 3.575.0 + '@aws-sdk/middleware-logger': 3.575.0 + '@aws-sdk/middleware-recursion-detection': 3.575.0 + '@aws-sdk/middleware-user-agent': 3.575.0 + '@aws-sdk/region-config-resolver': 3.575.0 + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-endpoints': 3.575.0 + '@aws-sdk/util-user-agent-browser': 3.575.0 + '@aws-sdk/util-user-agent-node': 3.575.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.0 + '@smithy/fetch-http-handler': 3.0.0 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.0 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.0 + '@smithy/util-defaults-mode-node': 3.0.0 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.575.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/core': 3.575.0 + '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/middleware-host-header': 3.575.0 + '@aws-sdk/middleware-logger': 3.575.0 + '@aws-sdk/middleware-recursion-detection': 3.575.0 + '@aws-sdk/middleware-user-agent': 3.575.0 + '@aws-sdk/region-config-resolver': 3.575.0 + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-endpoints': 3.575.0 + '@aws-sdk/util-user-agent-browser': 3.575.0 + '@aws-sdk/util-user-agent-node': 3.575.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.0 + '@smithy/fetch-http-handler': 3.0.0 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.0 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.0 + '@smithy/util-defaults-mode-node': 3.0.0 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.575.0': + dependencies: + '@smithy/core': 2.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-env@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-http@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/fetch-http-handler': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-stream': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-ini@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0)': + dependencies: + '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/credential-provider-env': 3.575.0 + '@aws-sdk/credential-provider-process': 3.575.0 + '@aws-sdk/credential-provider-sso': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) + '@aws-sdk/credential-provider-web-identity': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/types': 3.575.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-node@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.575.0 + '@aws-sdk/credential-provider-http': 3.575.0 + '@aws-sdk/credential-provider-ini': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/credential-provider-process': 3.575.0 + '@aws-sdk/credential-provider-sso': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) + '@aws-sdk/credential-provider-web-identity': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/types': 3.575.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/credential-provider-process@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-sso@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)': + dependencies: + '@aws-sdk/client-sso': 3.575.0 + '@aws-sdk/token-providers': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) + '@aws-sdk/types': 3.575.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.575.0(@aws-sdk/client-sts@3.575.0)': + dependencies: + '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/types': 3.575.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/lib-storage@3.575.0(@aws-sdk/client-s3@3.575.0)': + dependencies: + '@aws-sdk/client-s3': 3.575.0 + '@smithy/abort-controller': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/smithy-client': 3.0.0 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-bucket-endpoint@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-expect-continue@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-flexible-checksums@3.575.0': + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@aws-crypto/crc32c': 3.0.0 + '@aws-sdk/types': 3.575.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-host-header@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-location-constraint@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-logger@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-recursion-detection@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-sdk-s3@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-signing@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/property-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-ssec@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-user-agent@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@aws-sdk/util-endpoints': 3.575.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/region-config-resolver@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/signature-v4-multi-region@3.575.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.575.0 + '@aws-sdk/types': 3.575.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/token-providers@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)': + dependencies: + '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/types': 3.575.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/types@3.575.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/util-arn-parser@3.568.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/util-endpoints@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/types': 3.0.0 + '@smithy/util-endpoints': 2.0.0 + tslib: 2.6.2 + + '@aws-sdk/util-locate-window@3.568.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-browser@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/types': 3.0.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-node@3.575.0': + dependencies: + '@aws-sdk/types': 3.575.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/util-utf8-browser@3.259.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/xml-builder@3.575.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 @@ -12289,6 +13189,320 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@smithy/abort-controller@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader-native@3.0.0': + dependencies: + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/config-resolver@3.0.0': + dependencies: + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + + '@smithy/core@2.0.0': + dependencies: + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.0 + '@smithy/middleware-serde': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + + '@smithy/credential-provider-imds@3.0.0': + dependencies: + '@smithy/node-config-provider': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-codec@3.0.0': + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-browser@3.0.0': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-config-resolver@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-node@3.0.0': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-universal@3.0.0': + dependencies: + '@smithy/eventstream-codec': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/fetch-http-handler@3.0.0': + dependencies: + '@smithy/protocol-http': 4.0.0 + '@smithy/querystring-builder': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + + '@smithy/hash-blob-browser@3.0.0': + dependencies: + '@smithy/chunked-blob-reader': 3.0.0 + '@smithy/chunked-blob-reader-native': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/hash-node@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/hash-stream-node@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/invalid-dependency@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/is-array-buffer@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/md5-js@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/middleware-content-length@3.0.0': + dependencies: + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/middleware-endpoint@3.0.0': + dependencies: + '@smithy/middleware-serde': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + + '@smithy/middleware-retry@3.0.0': + dependencies: + '@smithy/node-config-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/service-error-classification': 3.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + tslib: 2.6.2 + uuid: 9.0.1 + + '@smithy/middleware-serde@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/middleware-stack@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/node-config-provider@3.0.0': + dependencies: + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/node-http-handler@3.0.0': + dependencies: + '@smithy/abort-controller': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/querystring-builder': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/property-provider@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/protocol-http@4.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/querystring-builder@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.6.2 + + '@smithy/querystring-parser@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/service-error-classification@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + + '@smithy/shared-ini-file-loader@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/signature-v4@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/smithy-client@3.0.0': + dependencies: + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-stream': 3.0.0 + tslib: 2.6.2 + + '@smithy/types@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/url-parser@3.0.0': + dependencies: + '@smithy/querystring-parser': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-base64@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-body-length-browser@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-body-length-node@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-config-provider@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-defaults-mode-browser@3.0.0': + dependencies: + '@smithy/property-provider': 3.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@smithy/util-defaults-mode-node@3.0.0': + dependencies: + '@smithy/config-resolver': 3.0.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/smithy-client': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-endpoints@2.0.0': + dependencies: + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-middleware@3.0.0': + dependencies: + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-retry@3.0.0': + dependencies: + '@smithy/service-error-classification': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-stream@3.0.0': + dependencies: + '@smithy/fetch-http-handler': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-uri-escape@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-utf8@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-waiter@3.0.0': + dependencies: + '@smithy/abort-controller': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + '@socket.io/component-emitter@3.1.2': {} '@solidity-parser/parser@0.18.0': {} @@ -13843,6 +15057,11 @@ snapshots: buffer-xor@1.0.3: {} + buffer@5.6.0: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -15265,6 +16484,10 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-xml-parser@4.2.5: + dependencies: + strnum: 1.0.5 + fast-xml-parser@4.3.6: dependencies: strnum: 1.0.5 @@ -19001,6 +20224,11 @@ snapshots: stdin-discarder@0.2.2: {} + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-replace-string@2.0.0: {} stream-shift@1.0.3: {}