diff --git a/bundler-packages/mud/.depcheckrc b/bundler-packages/mud/.depcheckrc new file mode 100644 index 0000000000..daf381d93e --- /dev/null +++ b/bundler-packages/mud/.depcheckrc @@ -0,0 +1,4 @@ +ignores: [ + "@tevm/config" +] +skip-missing: true diff --git a/bundler-packages/mud/.gitignore b/bundler-packages/mud/.gitignore new file mode 100644 index 0000000000..f788c233f1 --- /dev/null +++ b/bundler-packages/mud/.gitignore @@ -0,0 +1,50 @@ +.env + +cache +forge-artifacts +broadcast +types + +# compiled output +dist +packages/*/dist +tmp +/out-tsc +**/tsconfig.tsbuildinfo + +# dependencies +node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +**/lcov.info + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +# My personal files +.zshrc diff --git a/bundler-packages/mud/CHANGELOG.md b/bundler-packages/mud/CHANGELOG.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/bundler-packages/mud/LICENSE b/bundler-packages/mud/LICENSE new file mode 100644 index 0000000000..b5a4fa7a69 --- /dev/null +++ b/bundler-packages/mud/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright 2020-2022 + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bundler-packages/mud/README.md b/bundler-packages/mud/README.md new file mode 100644 index 0000000000..a063ef45a3 --- /dev/null +++ b/bundler-packages/mud/README.md @@ -0,0 +1,3 @@ +# @tevm/mud + +MUD plugin for optimistic updates with Tevm diff --git a/bundler-packages/mud/biome.json b/bundler-packages/mud/biome.json new file mode 100644 index 0000000000..5fece99d72 --- /dev/null +++ b/bundler-packages/mud/biome.json @@ -0,0 +1,77 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "organizeImports": { + "enabled": true + }, + "files": { + "ignore": [ + ".nx", + "node_modules", + "package.json", + "**/package.json", + "**/coverage", + "**/node_modules", + "**/dist", + "**/types", + "**/artifacts", + "**/lib", + "**/fixtures", + "**/.next", + "**/.vitepress/cache", + "**/.vitepress/dist", + "scaffold-tevm", + "docs/**/*", + "tevm/**/*", + "bundler/**/*", + ".vscode", + ".changeset", + ".devcontainer", + "examples/svelte-ethers/.svelte-kit", + "examples/next", + "bundler-packages/cli", + "experimental/viem-effect", + "bundler-packages/config/src/fixtures", + "bundler-packages/cli/fixtures" + ] + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "tab", + "indentWidth": 2, + "lineWidth": 120 + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "useImportType": "off" + }, + "performance": { + "noDelete": "off", + "noAccumulatingSpread": "off" + }, + "complexity": { + "noForEach": "off", + "noBannedTypes": "off", + "useLiteralKeys": "off" + }, + "suspicious": { + "noExplicitAny": "off", + "noGlobalAssign": "off", + "noArrayIndexKey": "off", + "noConfusingVoidType": "off", + "noAssignInExpressions": "off", + "noRedeclare": "off" + } + } + }, + "javascript": { + "formatter": { + "quoteStyle": "single", + "trailingCommas": "all", + "semicolons": "asNeeded" + } + } +} diff --git a/bundler-packages/mud/package.json b/bundler-packages/mud/package.json new file mode 100644 index 0000000000..4ec1cdef1b --- /dev/null +++ b/bundler-packages/mud/package.json @@ -0,0 +1,119 @@ +{ + "name": "@tevm/mud", + "version": "1.0.0-next.142", + "private": true, + "description": "MUD plugin for optimistic updates with Tevm", + "keywords": [ + "solidity", + "mud", + "typescript", + "web3", + "blockchain" + ], + "repository": { + "type": "git", + "url": "https://github.com/evmts/tevm-monorepo.git", + "directory": "bundler-packages/mud" + }, + "license": "MIT", + "contributors": [ + "Will Cory ", + "polarzero <0xpolarzero@gmail.com>" + ], + "sideEffects": false, + "type": "module", + "exports": { + "./package.json": "./package.json", + ".": { + "import": { + "types": "./types/src/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./react": { + "import": { + "types": "./types/src/react/index.d.ts", + "default": "./dist/react/index.js" + }, + "require": { + "types": "./dist/react/index.d.cts", + "default": "./dist/react/index.cjs" + } + } + }, + "main": "dist/index.cjs", + "module": "dist/index.js", + "types": "types/src/index.d.ts", + "files": [ + "dist", + "types", + "src" + ], + "scripts": { + "lint:package": "bunx publint --strict && attw --pack", + "test": "vitest --coverage", + "test:coverage": "vitest run --coverage", + "test:run": "vitest run", + "test:ui": "vitest --ui", + "all": "pnpm i && bun run build && bun run lint && bun run lint:check && bun run format:check && bun run format && bun run test:coverage && bun run generate:docs", + "build": "nx run-many --targets=build:dist,build:types --projects=@tevm/mud", + "build:dist": "tsup", + "build:types": "tsup --dts-only && tsc --emitDeclarationOnly --declaration", + "clean": "rm -rf node_modules && rm -rf artifacts && rm -rf dist && rm -rf cache", + "format": "biome format . --write", + "format:check": "biome format .", + "generate:docs": "typedoc", + "lint": "biome check . --write --unsafe", + "lint:check": "biome check . --verbose", + "lint:deps": "bunx depcheck" + }, + "dependencies": { + "@latticexyz/common": "2.2.21", + "@latticexyz/config": "^2.2.21", + "@latticexyz/protocol-parser": "^2.2.21", + "@latticexyz/schema-type": "^2.2.21", + "@latticexyz/stash": "^2.2.21", + "@latticexyz/store": "^2.2.21", + "@latticexyz/store-sync": "^2.2.21", + "@tevm/common": "workspace:^", + "@tevm/logger": "workspace:^", + "@tevm/memory-client": "workspace:^", + "@tevm/txpool": "workspace:^", + "@tevm/utils": "workspace:^", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "viem": "^2.23.10" + }, + "devDependencies": { + "@testing-library/react": "^16.2.0", + "@tevm/config": "workspace:^", + "@tevm/decorators": "workspace:^", + "@tevm/node": "workspace:^", + "@tevm/test-utils": "workspace:^", + "@tevm/tsconfig": "workspace:^", + "@tevm/tsupconfig": "workspace:^", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "jsdom": "^26.1.0" + }, + "peerDependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "viem": "^2.23.10" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + }, + "publishConfig": { + "access": "public" + } +} \ No newline at end of file diff --git a/bundler-packages/mud/src/createOptimisticHandler.spec.ts b/bundler-packages/mud/src/createOptimisticHandler.spec.ts new file mode 100644 index 0000000000..d52cdaeefb --- /dev/null +++ b/bundler-packages/mud/src/createOptimisticHandler.spec.ts @@ -0,0 +1,251 @@ +import { createTevmTransport } from '@tevm/memory-client' +import { createClient } from 'viem' +import { beforeEach, describe, expect, it } from 'vitest' +import { config } from '../test/config.js' +import { prepare, sessionClient, stash, testContract } from '../test/prepare.js' +import { state } from '../test/state.js' +import { createOptimisticHandler } from './createOptimisticHandler.js' +import type { TxStatus } from './subscribeTx.js' + +describe('createOptimisticHandler', () => { + beforeEach(async () => { + await prepare({ count: 10 }) + }) + + it('should create handler with all required methods', () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + }) + + expect(handler).toHaveProperty('getOptimisticState') + expect(handler).toHaveProperty('getOptimisticRecord') + expect(handler).toHaveProperty('getOptimisticRecords') + expect(handler).toHaveProperty('subscribeOptimisticState') + expect(handler).toHaveProperty('subscribeTx') + expect(handler).toHaveProperty('_') + + expect(typeof handler.getOptimisticState).toBe('function') + expect(typeof handler.getOptimisticRecord).toBe('function') + expect(typeof handler.getOptimisticRecords).toBe('function') + expect(typeof handler.subscribeOptimisticState).toBe('function') + expect(typeof handler.subscribeTx).toBe('function') + + // Check internal properties + expect(handler._).toHaveProperty('optimisticClient') + expect(handler._).toHaveProperty('internalClient') + expect(handler._).toHaveProperty('cleanup') + }) + + it('should return canonical state when no pending transactions', async () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + }) + + expect(handler.getOptimisticState()).toMatchObject(stash.get()) + }) + + // TODO: when eth_getProof is supported on tevm node + it.todo('should handle optimistic state with pending transactions', async () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + loggingLevel: 'debug', + }) + + const optimisticClient = handler._.optimisticClient + const txPool = await optimisticClient.transport.tevm.getTxPool() + + // Add a pending transaction to the optimistic client + const newRecord = Object.values(state.records.app.TestTable)[10]! + await optimisticClient.tevmContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(newRecord)), + addToMempool: true, + }) + + expect(txPool.txsInPool).toBe(1) + + // Get optimistic state - should include pending changes + const optimisticState = handler.getOptimisticState() + const canonicalState = stash.get() + + // States should be different due to pending transaction + expect(optimisticState).not.toEqual(canonicalState) + expect(optimisticState.config).toEqual(canonicalState.config) + }) + + // TODO: when eth_getProof is supported on tevm node + it.todo('should handle subscription to optimistic state changes', async () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + }) + + let notificationCount = 0 + const unsubscribe = handler.subscribeOptimisticState({ + subscriber: () => { + notificationCount++ + }, + }) + + // Add a pending transaction to trigger notification + const optimisticClient = handler._.optimisticClient + const newRecord = Object.values(state.records.app.TestTable)[10]! + + await optimisticClient.tevmContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(newRecord)), + addToMempool: true, + }) + + // Give some time for async notification + await new Promise((resolve) => setTimeout(resolve, 10)) + expect(notificationCount).toBeGreaterThan(0) + + // Cleanup + unsubscribe() + }) + + // TODO: when eth_getProof is supported on tevm node + it.todo('should handle transaction status subscriptions', async () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + }) + + const statusUpdates: TxStatus[] = [] + const unsubscribe = handler.subscribeTx({ + subscriber: (status) => { + statusUpdates.push(status) + }, + }) + + expect(typeof unsubscribe).toBe('function') + expect(statusUpdates).toHaveLength(0) + + const optimisticClient = handler._.optimisticClient + const newRecord = Object.values(state.records.app.TestTable)[10]! + await optimisticClient.tevmContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(newRecord)), + addToMempool: true, + }) + + await new Promise((resolve) => setTimeout(resolve, 10)) + expect(statusUpdates).toHaveLength(1) + expect(statusUpdates[0]?.status).toBe('optimistic') + + // Cleanup + unsubscribe() + }) + + // TODO: when eth_getProof is supported on tevm node + it.todo('should handle transaction removal from pool', async () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + }) + + const optimisticClient = handler._.optimisticClient + const txPool = await optimisticClient.transport.tevm.getTxPool() + + // Add transaction + const newRecord = Object.values(state.records.app.TestTable)[10]! + await optimisticClient.tevmContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(newRecord)), + addToMempool: true, + }) + + expect(txPool.txsInPool).toBe(1) + + // Mine the transaction (removes from pool) + await optimisticClient.tevmMine() + + expect(txPool.txsInPool).toBe(0) + + // Optimistic state should now match canonical state + const optimisticState = handler.getOptimisticState() + const canonicalState = stash.get() + expect(optimisticState).toEqual(canonicalState) + }) + + it('should cleanup properly', async () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + }) + + // Should not throw + await expect(handler._.cleanup()).resolves.toBeUndefined() + }) + + // TODO: when eth_getProof is supported on tevm node + it.todo('should handle multiple pending transactions in order', async () => { + const handler = createOptimisticHandler({ + client: sessionClient, + storeAddress: testContract.address, + stash, + config, + }) + + const optimisticClient = handler._.optimisticClient + const newRecord = Object.values(state.records.app.TestTable)[10]! + + // Add multiple transactions modifying the same record + const tx1Values = { ...newRecord, val1: newRecord.val1 + 100n } + const tx2Values = { ...newRecord, val1: newRecord.val1 + 200n } + + await optimisticClient.tevmContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(tx1Values)), + addToMempool: true, + }) + + await optimisticClient.tevmContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(tx2Values)), + addToMempool: true, + }) + + const txPool = await optimisticClient.transport.tevm.getTxPool() + expect(txPool.txsInPool).toBe(2) + + // Get optimistic record - should reflect the last transaction + const optimisticRecord = handler.getOptimisticRecord({ + table: config.tables.app__TestTable, + key: { key1: newRecord.key1, key2: newRecord.key2 }, + }) + + expect(optimisticRecord?.val1).toBe(tx2Values.val1) + }) + + it('should throw error when client has no chain', () => { + const clientWithoutChain = createClient({ transport: createTevmTransport() }) + + expect(() => { + createOptimisticHandler({ + client: clientWithoutChain, + storeAddress: testContract.address, + stash, + config, + }) + }).toThrow('Client must be connected to a chain') + }) +}) diff --git a/bundler-packages/mud/src/createOptimisticHandler.ts b/bundler-packages/mud/src/createOptimisticHandler.ts new file mode 100644 index 0000000000..61aa3f8a54 --- /dev/null +++ b/bundler-packages/mud/src/createOptimisticHandler.ts @@ -0,0 +1,357 @@ +import { + type GetRecordArgs, + type GetRecordResult, + type GetRecordsArgs, + type GetRecordsResult, + type Key, + type MutableState, + type Stash, + type State, + type StoreConfig, + type StoreSubscribers, + type StoreUpdatesSubscriber, + type TableRecord, + type TableSubscribers, + type Unsubscribe, + getRecord, + getRecords, + subscribeStash, +} from '@latticexyz/stash/internal' +import { storeEventsAbi } from '@latticexyz/store' +import type { SyncAdapter } from '@latticexyz/store-sync' +import { type Table } from '@latticexyz/store/internal' +import { createCommon } from '@tevm/common' +import { createLogger } from '@tevm/logger' +import { type MemoryClient, createMemoryClient } from '@tevm/memory-client' +import { type Address, createAddressFromString } from '@tevm/utils' +import { type Client, type Hex, bytesToHex, parseEventLogs } from 'viem' +import { getTransaction } from 'viem/actions' +import { mudStoreGetStorageAtOverride } from './internal/decorators/mudStoreGetStorageAtOverride.js' +import { mudStoreWriteRequestOverride } from './internal/decorators/mudStoreWriteRequestOverride.js' +import { ethjsLogToAbiLog } from './internal/ethjsLogToAbiLog.js' +import { type PendingStashUpdate, applyStashUpdates, notifyStashSubscribers } from './internal/mud/applyUpdates.js' +import { createStorageAdapter } from './internal/mud/createStorageAdapter.js' +import { createSyncAdapter } from './internal/mud/createSyncAdapter.js' +import { stateUpdateCoordinator } from './internal/stateUpdateCoordinator.js' +import { matchOptimisticTxCounterpart } from './internal/txIdentifier.js' +import { type TxStatusSubscriber, subscribeTxStatus } from './subscribeTx.js' +import type { SessionClient } from './types.js' + +export type CreateOptimisticHandlerOptions = { + /** A base viem client */ + client: Client | SessionClient + /** The address of the store contract */ + storeAddress: Address + /** The state manager (here stash) */ + stash: Stash + /** Sync options */ + sync?: + | { + /** Whether to enable sync (default: true) */ + enabled?: boolean + /** The block number to start syncing from (default: 0n) */ + startBlock?: bigint + } + | undefined + /** The store config */ + config?: TConfig | undefined // for typing + /** The logging level for Tevm clients */ + loggingLevel?: 'debug' | 'error' | 'fatal' | 'info' | 'trace' | 'warn' | undefined +} + +export type CreateOptimisticHandlerResult = { + getOptimisticState: () => State + getOptimisticRecord: < + TTable extends Table, + TDefaultValue extends Omit, keyof Key> | undefined = undefined, + >( + args: Omit, 'stash'>, + ) => GetRecordResult + getOptimisticRecords: (args: Omit, 'stash'>) => GetRecordsResult + subscribeOptimisticState: (args: { subscriber: StoreUpdatesSubscriber }) => Unsubscribe + subscribeTx: (args: { subscriber: TxStatusSubscriber }) => Unsubscribe + syncAdapter: SyncAdapter + _: { + optimisticClient: MemoryClient + internalClient: MemoryClient + optimisticStoreSubscribers: StoreSubscribers + optimisticTableSubscribers: TableSubscribers + cleanup: () => Promise + } +} + +/** + * Initializes the optimistic handlers (storage and send transaction interceptors), and returns optimistic methods. + */ +export const createOptimisticHandler = ({ + client, + storeAddress, + stash, + loggingLevel, +}: CreateOptimisticHandlerOptions): CreateOptimisticHandlerResult => { + if (!client.chain) throw new Error('Client must be connected to a chain') + const transport = 'client' in client ? client.client : client + const logger = createLogger({ name: '@tevm/mud', level: loggingLevel ?? 'warn' }) + logger.debug('Creating optimistic handler') + + // Create optimistic subscribers + const optimisticTableSubscribers: TableSubscribers = {} + const optimisticStoreSubscribers: StoreSubscribers = new Set() + // Create tx status subscribers + const txStatusSubscribers: Set = new Set() + + // View-only optimistic logs + let optimisticLogs: PendingStashUpdate[] = [] + // Internal logs that build up during execution for the internal client to read the current state as it runs the txs + let internalLogs: PendingStashUpdate[] = [] + + // Optimistic hashes of transactions already handled while syncing their incoming canonical counterpart + const syncedOptimisticHashes: Set = new Set() + + // View function that applies optimistic or internal logs on top of the canonical state + function getStateView(logs: PendingStashUpdate[]): State { + const localState: MutableState = { + config: stash.get().config, + records: structuredClone(stash.get().records), + } + + const localStash = { + get: () => localState, + _: { + state: localState, + tableSubscribers: {}, + storeSubscribers: new Set(), + }, + } satisfies Stash + + // Apply provided logs without notifications + applyStashUpdates({ stash: localStash, updates: logs }) + + return { + config: localState.config, + records: localState.records, + } as State + } + + // Get the optimistic state + const getOptimisticView = () => getStateView(optimisticLogs) + // Get the internal optimistic state at the latest applied tx + const getInternalView = () => getStateView(internalLogs) + + // Function that processes transactions and updates logs + // we want to execute this function serially so there won't be multiple invocations modifying the same internalLogs variable + async function processTransactionsAndUpdateLogs(): Promise { + const vm = await internalClient.transport.tevm.getVm() + const txPool = await optimisticClient.transport.tevm.getTxPool() + + if (txPool.txsInPool === 0) { + logger.debug('No txs in pool, clearing logs and returning canonical state.') + return + } + + logger.debug({ txsInPool: txPool.txsInPool }, 'Processing transactions.') + + const orderedTxs = await txPool.txsByPriceAndNonce() + const vmCopy = await vm.deepCopy() + + // Reset internal logs for this execution + internalLogs = [] + + // Create adapter that reads from internal view + const internalState = getInternalView() + const internalStash = { + get: () => internalState, + _: { + state: internalState, + tableSubscribers: {}, + storeSubscribers: new Set(), + }, + } satisfies Stash + + const adapter = createStorageAdapter({ stash: internalStash }) + + // Process each transaction, building up internal logs + for (const tx of orderedTxs) { + logger.debug( + { tx, hash: bytesToHex(tx.hash()) }, + `Running tx ${orderedTxs.indexOf(tx) + 1}/${orderedTxs.length}.`, + ) + + // clear cache to force the fork request to not hit cache and go through our `getStorageAt` interceptor + // TODO: we absolutely don't want to do this, also it clears some non-data-related slots that could have stayed cached + vmCopy.stateManager._baseState.forkCache.storage.clearStorage(createAddressFromString(storeAddress)) + const txResult = await vmCopy.runTx({ + tx, + skipBalance: true, + skipNonce: true, + skipHardForkValidation: true, + skipBlockGasLimitValidation: true, + }) + + if (txResult.execResult.exceptionError) throw txResult.execResult.exceptionError + + const storeEventsLogs = parseEventLogs({ + abi: storeEventsAbi, + logs: txResult.receipt.logs.map((log) => ethjsLogToAbiLog(storeEventsAbi, log)), + }) + + // Get updates and add to internal logs (builds up incrementally) + const updates = await adapter({ logs: storeEventsLogs, blockNumber: 0n }) + internalLogs.push(...updates) + } + + // When finished, update optimistic logs + optimisticLogs = [...internalLogs] + + // Notify subscribers if requested + if (optimisticLogs.length > 0) { + const optimisticState = getOptimisticView() + const notificationStash = { + get: () => optimisticState, + _: { + state: optimisticState, + tableSubscribers: optimisticTableSubscribers, + storeSubscribers: optimisticStoreSubscribers, + }, + } satisfies Stash + + notifyStashSubscribers({ stash: notificationStash, updates: optimisticLogs }) + } + + logger.debug({ txsInPool: txPool.txsInPool }, 'Finished processing transactions and notified subscribers.') + } + + // TODO: we don't want to have two clients but that's a workaround because we apply different getStorageAt interceptors: + // - internalClient: used during _optimisticStateView:runTx and uses a mudStoreGetStorageAtOverride that builds up the optimistic state + // as the pool txs are executed (so the getStorageAt override reads the current optimistic state SO FAR, at each tx) + // - optimisticClient: used for the write interceptor, and uses a mudStoreGetStorageAtOverride that always reads the optimistic state + // from the _optimisticStateView + // const internalClient = createForkRequestOverrideClient(getInternalView, 'internal') + // const optimisticClient = createForkRequestOverrideClient(getOptimisticView, 'optimistic') + const internalClient = createMemoryClient({ + fork: { + transport: { + request: mudStoreGetStorageAtOverride( + transport, + 'internal', + logger, + )({ getState: getInternalView, storeAddress }), + }, + blockTag: 'latest', + }, + common: createCommon(client.chain), + ...(loggingLevel ? { loggingLevel } : {}), + }) + const optimisticClient = createMemoryClient({ + fork: { + transport: { + request: mudStoreGetStorageAtOverride( + transport, + 'optimistic', + logger, + )({ getState: getOptimisticView, storeAddress }), + }, + blockTag: 'latest', + }, + common: createCommon(client.chain), + ...(loggingLevel ? { loggingLevel } : {}), + }) + + mudStoreWriteRequestOverride( + client, + logger, + )({ + memoryClient: optimisticClient, + storeAddress, + txStatusSubscribers, + }) + + // Update subscribers when the optimistic state changes or when the canonical state changes (and it's been synced to the optimistic state) + const _subscribeToOptimisticState = async () => { + logger.debug('Subscribing to optimistic state') + const txPool = await optimisticClient.transport.tevm.getTxPool() + + const unsubscribeTxAdded = txPool.on('txadded', () => { + logger.debug('Tx added, updating optimistic state.') + stateUpdateCoordinator.queueOptimisticUpdate(() => processTransactionsAndUpdateLogs()) + }) + + const unsubscribeTxRemoved = txPool.on('txremoved', (hash) => { + logger.debug('Tx removed, updating optimistic state.') + if (!syncedOptimisticHashes.has(hash as Hex)) + stateUpdateCoordinator.queueOptimisticUpdate(() => processTransactionsAndUpdateLogs()) + else { + logger.debug( + { optimisticTxHash: hash }, + 'Skipping txremoved update for tx that is being handled by the canonical sync.', + ) + syncedOptimisticHashes.delete(hash as Hex) // cleanup + } + }) + + const unsubscribeStash = subscribeStash({ + stash, + subscriber: () => { + logger.debug('Stash updated, updating optimistic state.') + processTransactionsAndUpdateLogs() // this listener is triggered during a queued canonical update already + }, + }) + + return () => { + unsubscribeTxAdded() + unsubscribeTxRemoved() + unsubscribeStash() + } + } + + const unsubscribe = _subscribeToOptimisticState() + + return { + getOptimisticState: () => getOptimisticView(), + getOptimisticRecord: ({ state, ...args }) => getRecord({ ...args, state: state ?? getOptimisticView() }), + getOptimisticRecords: ({ state, ...args }) => getRecords({ ...args, state: state ?? getOptimisticView() }), + subscribeOptimisticState: ({ subscriber }) => { + // Subscribe both to the canonical and the optimistic state + stash._.storeSubscribers.add(subscriber) + optimisticStoreSubscribers.add(subscriber) + return () => { + stash._.storeSubscribers.delete(subscriber) + optimisticStoreSubscribers.delete(subscriber) + } + }, + subscribeTx: ({ subscriber }) => subscribeTxStatus(txStatusSubscribers)(subscriber), + syncAdapter: createSyncAdapter({ + stash, + onTx: async ({ hash }) => { + if (!hash) return + const txPool = await optimisticClient.transport.tevm.getTxPool() + + const tx = await getTransaction(transport, { hash }) + const data = tx?.input + if (!data) return + + const optimisticTxHash = await matchOptimisticTxCounterpart(txPool, data) + if (optimisticTxHash) { + logger.debug({ hash, optimisticTxHash }, 'Marking optimistic tx as being handled during canonical sync.') + syncedOptimisticHashes.add(optimisticTxHash) + if (txPool.getByHash(optimisticTxHash)) txPool.removeByHash(optimisticTxHash) + } + }, + }), + _: { + optimisticClient, + internalClient, + optimisticStoreSubscribers, + optimisticTableSubscribers, + cleanup: async () => { + try { + logger.debug('Cleaning up optimistic handler') + ;(await unsubscribe)() + // TODO: how do we completely get rid of a client? + } catch (error) { + console.error('Error cleaning up optimistic handler', error) + } + }, + }, + } +} diff --git a/bundler-packages/mud/src/index.ts b/bundler-packages/mud/src/index.ts new file mode 100644 index 0000000000..bc05d1738a --- /dev/null +++ b/bundler-packages/mud/src/index.ts @@ -0,0 +1,7 @@ +export { + createOptimisticHandler, + type CreateOptimisticHandlerOptions, + type CreateOptimisticHandlerResult, +} from './createOptimisticHandler.js' +export { subscribeTxStatus, type TxStatusSubscriber, type TxStatus } from './subscribeTx.js' +export * from './types.js' diff --git a/bundler-packages/mud/src/internal/FieldLayout.spec.ts b/bundler-packages/mud/src/internal/FieldLayout.spec.ts new file mode 100644 index 0000000000..0bbd4ee74e --- /dev/null +++ b/bundler-packages/mud/src/internal/FieldLayout.spec.ts @@ -0,0 +1,153 @@ +import { + encodeKey, + encodeValueArgs, + getKeySchema, + getSchemaTypes, + getValueSchema, +} from '@latticexyz/protocol-parser/internal' +import { type TableRecord } from '@latticexyz/stash/internal' +import { type Hex, concatHex, hexToBigInt, keccak256, numberToHex } from 'viem' +import { describe, expect, it } from 'vitest' +import { config } from '../../test/config.js' +import { state } from '../../test/state.js' +import { FieldLayout } from './FieldLayout.js' + +describe('FieldLayout', () => { + const table = config.tables.app__TestTable + const fieldLayout = new FieldLayout(table) + const sampleRecord = Object.values(state.records.app.TestTable)[0]! + + describe('getTableId', () => { + it('should return the correct table ID', () => { + expect(fieldLayout.getTableId()).toBe(table.tableId) + }) + }) + + describe('getSlotInfo', () => { + it('should return null for non-existent slots', () => { + const randomSlot = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' as Hex + const slotInfo = fieldLayout.getSlotInfo(sampleRecord, randomSlot) + expect(slotInfo).toBeNull() + }) + + it('should identify static slot type', () => { + // Calculate static slot manually + const recordHash = calculateRecordHash(sampleRecord) + const staticBaseSlot = + hexToBigInt(/* keccak256("mud.store") */ '0x86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9') ^ + hexToBigInt(recordHash) + const staticSlot = numberToHex(staticBaseSlot, { size: 32 }) + + expect(fieldLayout.getSlotInfo(sampleRecord, staticSlot)).toMatchObject({ + type: 'static', + slotIndex: 0, + slot: staticSlot, + }) + }) + + it('should identify encodedLengths slot type', () => { + const recordHash = calculateRecordHash(sampleRecord) + const encodedLengthsSlot = numberToHex( + hexToBigInt( + /* keccak256("mud.store.dynamicDataLength") */ '0x14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569', + ) ^ hexToBigInt(recordHash), + { size: 32 }, + ) + + expect(fieldLayout.getSlotInfo(sampleRecord, encodedLengthsSlot)).toMatchObject({ + type: 'encodedLengths', + slot: encodedLengthsSlot, + }) + }) + + it('should identify dynamic slot type', () => { + const recordHash = calculateRecordHash(sampleRecord) + const fieldIndex = 0 // First dynamic field (dyn1) + const baseSlot = + hexToBigInt( + /* keccak256("mud.store.dynamicData") */ '0x3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1', + ) ^ + (BigInt(fieldIndex) << 248n) ^ + hexToBigInt(recordHash) + const dynamicSlot = numberToHex(baseSlot, { size: 32 }) + + expect(fieldLayout.getSlotInfo(sampleRecord, dynamicSlot)).toMatchObject({ + type: 'dynamic', + fieldName: 'dyn1', + slotIndex: 0, + slot: dynamicSlot, + encodedData: encodeValueArgs({ dyn1: getSchemaTypes(getValueSchema(table)).dyn1 }, sampleRecord).dynamicData, + }) + }) + }) + + describe('encodeValueAtSlot', () => { + const sample = { + key1: 11n, + key2: 22, + val1: 33n, + val2: 44, + val3: 55n, + val4: true, + val5: '0x1231231231231231231231231231231231231231' as Hex, + dyn1: 'Hello World', + dyn2: `0x${'97'.repeat(50)}` as Hex, + dyn3: [-1, 10, 30], + } + + it('should encode static slot values', () => { + expect(fieldLayout.encodeValueAtSlot(sample, { type: 'static', slotIndex: 0, slot: '0x' })).toEqual( + '0x000000000000000000000000000000000000000000000000212c003701123123', + ) + expect(fieldLayout.encodeValueAtSlot(sample, { type: 'static', slotIndex: 1, slot: '0x' })).toEqual( + '0x1231231231231231231231231231231231000000000000000000000000000000', + ) + }) + + it('should encode encodedLengths slot values', () => { + expect(fieldLayout.encodeValueAtSlot(sample, { type: 'encodedLengths', slot: '0x' })).toEqual( + '0x0000000000000000000000000000060000000032000000000b00000000000043', + ) + }) + + it('should encode dynamic slot values', () => { + expect( + fieldLayout.encodeValueAtSlot(sample, { + type: 'dynamic', + fieldName: 'dyn1', + slotIndex: 0, + slot: '0x', + encodedData: encodeValueArgs({ dyn1: getSchemaTypes(getValueSchema(table)).dyn1 }, sample).dynamicData, + }), + ).toEqual('0x48656c6c6f20576f726c64000000000000000000000000000000000000000000') + expect( + fieldLayout.encodeValueAtSlot(sample, { + type: 'dynamic', + fieldName: 'dyn2', + slotIndex: 0, + slot: '0x', + encodedData: encodeValueArgs({ dyn2: getSchemaTypes(getValueSchema(table)).dyn2 }, sample).dynamicData, + }), + ).toEqual('0x9797979797979797979797979797979797979797979797979797979797979797') + expect( + fieldLayout.encodeValueAtSlot(sample, { + type: 'dynamic', + fieldName: 'dyn3', + slotIndex: 0, + slot: '0x', + encodedData: encodeValueArgs({ dyn3: getSchemaTypes(getValueSchema(table)).dyn3 }, sample).dynamicData, + }), + ).toEqual('0xffff000a001e0000000000000000000000000000000000000000000000000000') + }) + }) +}) + +// Helper to calculate record hash (minimal implementation for testing) +function calculateRecordHash(record: TableRecord): Hex { + const table = config.tables.app__TestTable + const keySchema = getSchemaTypes(getKeySchema(table)) + const keys = { key1: record['key1'], key2: record['key2'] } + const keyTuple = encodeKey(keySchema, keys) + + return keccak256(concatHex([table.tableId, ...keyTuple])) +} diff --git a/bundler-packages/mud/src/internal/FieldLayout.ts b/bundler-packages/mud/src/internal/FieldLayout.ts new file mode 100644 index 0000000000..34fd4616d1 --- /dev/null +++ b/bundler-packages/mud/src/internal/FieldLayout.ts @@ -0,0 +1,226 @@ +import { type TableRecord } from '@latticexyz/stash/internal' +import { type Hex } from '@tevm/utils' +import { bytesToHex, concatHex, encodePacked, hexToBigInt, hexToBytes, keccak256, numberToHex, pad, toHex } from 'viem' + +import { type Table } from '@latticexyz/config' +import { + type SchemaToPrimitives, + encodeKey, + encodeValueArgs, + getKeySchema, + getSchemaTypes, + getValueSchema, +} from '@latticexyz/protocol-parser/internal' // Assuming internal exports are usable +import { + type DynamicAbiType, + type StaticAbiType, + type StaticAbiTypeToPrimitiveType, + isDynamicAbiType, + isStaticAbiType, + staticAbiTypeToByteLength, + staticAbiTypeToDefaultValue, +} from '@latticexyz/schema-type/internal' + +// Unified slot info types +type StaticSlotInfo = { + type: 'static' + slotIndex: number + slot: Hex +} + +type EncodedLengthsSlotInfo = { + type: 'encodedLengths' + slot: Hex +} + +type DynamicSlotInfo = { + type: 'dynamic' + fieldName: string + slotIndex: number + slot: Hex + encodedData: Hex +} + +type SlotInfo = StaticSlotInfo | EncodedLengthsSlotInfo | DynamicSlotInfo + +export class FieldLayout { + private static readonly STORE_SLOT: Hex = keccak256(toHex('mud.store')) + private static readonly STORE_DYNAMIC_DATA_SLOT: Hex = keccak256(toHex('mud.store.dynamicData')) + private static readonly STORE_DYNAMIC_DATA_LENGTH_SLOT: Hex = keccak256(toHex('mud.store.dynamicDataLength')) + + private readonly tableId: Hex + private readonly keySchema: getSchemaTypes> + private readonly valueSchema: getSchemaTypes> + + private readonly staticFieldsInfo: { + fields: Array<{ name: string; type: StaticAbiType }> + totalBytes: number + numSlots: number + } + + private readonly dynamicFieldsInfo: Array<{ + name: string + type: DynamicAbiType + fieldIndex: number + }> + + constructor(table: TTable) { + this.tableId = table.tableId + this.keySchema = getSchemaTypes(getKeySchema(table)) + this.valueSchema = getSchemaTypes(getValueSchema(table)) + + // Process static fields + const staticEntries = Object.entries(this.valueSchema) + .filter(([, abiType]) => isStaticAbiType(abiType)) + .map(([name, abiType]) => ({ name, type: abiType as StaticAbiType })) + + const totalBytes = staticEntries.reduce((sum, { type }) => sum + staticAbiTypeToByteLength[type], 0) + + this.staticFieldsInfo = { + fields: staticEntries, + totalBytes, + numSlots: Math.ceil(totalBytes / 32), + } + + // Process dynamic fields with pre-computed indices + this.dynamicFieldsInfo = Object.entries(this.valueSchema) + .filter(([, abiType]) => isDynamicAbiType(abiType)) + .map(([name, abiType], index) => ({ + name, + type: abiType as DynamicAbiType, + fieldIndex: index, + })) + } + + public getTableId() { + return this.tableId + } + + /* ----------------------------- UNIFIED SLOT API ----------------------------- */ + + /** + * Get slot information for a requested position. Returns null if the position doesn't match any known slot. + * This is the main entry point that avoids redundant computations. + */ + public getSlotInfo(record: TableRecord, requestedPosition: Hex): SlotInfo | null { + const recordHash = this.encodeRecordHash(record) + const requestedLower = requestedPosition.toLowerCase() + + // Check static slots first + const staticBaseSlot = hexToBigInt(FieldLayout.STORE_SLOT) ^ hexToBigInt(recordHash) + for (let slotIndex = 0; slotIndex < this.staticFieldsInfo.numSlots; slotIndex++) { + const slot = numberToHex(staticBaseSlot + BigInt(slotIndex), { size: 32 }) + if (slot.toLowerCase() === requestedLower) { + return { + type: 'static', + slotIndex, + slot, + } + } + } + + // Check encoded lengths slot + if (this.dynamicFieldsInfo.length > 0) { + const encodedLengthsSlot = numberToHex( + hexToBigInt(FieldLayout.STORE_DYNAMIC_DATA_LENGTH_SLOT) ^ hexToBigInt(recordHash), + { size: 32 }, + ) + if (encodedLengthsSlot.toLowerCase() === requestedLower) { + return { + type: 'encodedLengths', + slot: encodedLengthsSlot, + } + } + } + + // Check dynamic slots + for (const { name, fieldIndex } of this.dynamicFieldsInfo) { + // Encode the field to get its packed data + const { dynamicData } = encodeValueArgs( + { [name]: this.valueSchema[name as keyof typeof this.valueSchema] }, + record as SchemaToPrimitives, + ) + + const dataBytes = hexToBytes(dynamicData) + const numSlots = Math.ceil(dataBytes.length / 32) + + // Calculate base slot for this field + const baseSlot = + hexToBigInt(FieldLayout.STORE_DYNAMIC_DATA_SLOT) ^ (BigInt(fieldIndex) << 248n) ^ hexToBigInt(recordHash) + + // Check each slot for this field + for (let slotIndex = 0; slotIndex < numSlots; slotIndex++) { + const slot = numberToHex(baseSlot + BigInt(slotIndex), { size: 32 }) + if (slot.toLowerCase() === requestedLower) { + return { + type: 'dynamic', + fieldName: name, + slotIndex, + slot, + encodedData: dynamicData, + } + } + } + } + + return null + } + + /** + * Encode the value at a specific slot based on slot info. + * This method uses the slot info to avoid recomputing the same data. + */ + public encodeValueAtSlot(record: TableRecord, slotInfo: SlotInfo): Hex { + switch (slotInfo.type) { + case 'static': + return this.encodeStaticValueAtSlot(record, slotInfo.slotIndex) + case 'encodedLengths': + return this.encodeEncodedLengthsValue(record) + case 'dynamic': + return this.encodeDynamicValueAtSlot(slotInfo.slotIndex, slotInfo.encodedData) + } + } + + /* ----------------------------- PRIVATE ENCODING METHODS ----------------------------- */ + + private encodeStaticValueAtSlot(record: TableRecord, slotIndex: number): Hex { + const staticValues = this.staticFieldsInfo.fields.map(({ name, type }) => + record[name] === undefined ? staticAbiTypeToDefaultValue[type] : record[name], + ) as Array + const staticTypes = this.staticFieldsInfo.fields.map(({ type }) => type) + + const packedData = encodePacked(staticTypes, staticValues) + return this.extractSlotData(packedData, slotIndex) + } + + private encodeEncodedLengthsValue(record: TableRecord): Hex { + const { encodedLengths } = encodeValueArgs(this.valueSchema, record as SchemaToPrimitives) + return encodedLengths + } + + private encodeDynamicValueAtSlot(slotIndex: number, encodedData: Hex): Hex { + return this.extractSlotData(encodedData, slotIndex) + } + + /* ---------------------------------- UTILS --------------------------------- */ + private encodeRecordHash(record: TableRecord) { + const keys = Object.fromEntries( + Object.entries(record).filter(([key]) => Object.keys(this.keySchema).includes(key)), + ) as SchemaToPrimitives + const keyTuple = encodeKey(this.keySchema, keys) + + return keccak256(concatHex([this.tableId, ...keyTuple])) + } + + private extractSlotData(encodedData: Hex, slotIndex: number) { + const dataBytes = hexToBytes(encodedData) + + // Extract the 32-byte chunk for this specific slot + const startByte = slotIndex * 32 + const endByte = Math.min(startByte + 32, dataBytes.length) + const slotData = dataBytes.slice(startByte, endByte) + + // Pad to 32 bytes if needed (right-pad with zeros) + return pad(bytesToHex(slotData), { size: 32, dir: 'right' }) + } +} diff --git a/bundler-packages/mud/src/internal/decorators/mudStoreGetStorageAtOverride.spec.ts b/bundler-packages/mud/src/internal/decorators/mudStoreGetStorageAtOverride.spec.ts new file mode 100644 index 0000000000..26b19ce5a8 --- /dev/null +++ b/bundler-packages/mud/src/internal/decorators/mudStoreGetStorageAtOverride.spec.ts @@ -0,0 +1,65 @@ +import { createLogger } from '@tevm/logger' +import { createMemoryClient } from '@tevm/memory-client' +import { MUDTestSystem } from '@tevm/test-utils' +import { type Address, type EIP1193RequestFn, pad } from 'viem' +import { beforeEach, describe, expect, it } from 'vitest' +import { state } from '../../../test/state.js' +import { mudStoreGetStorageAtOverride } from './mudStoreGetStorageAtOverride.js' + +const testContract = MUDTestSystem.withAddress('0x5FbDB2315678afecb367f032d93F642f64180aa3') +const getState = () => state +const client = createMemoryClient() +const mudStoreRequestOverride = mudStoreGetStorageAtOverride( + { request: (async () => {}) as EIP1193RequestFn }, + 'internal', + createLogger({ name: '@tevm/mud', level: 'debug' }), +)({ + getState, + storeAddress: testContract.address, +}) + +describe('mudStoreGetStorageAtOverride', () => { + beforeEach(async () => { + await client.tevmDeploy({ + abi: testContract.abi, + bytecode: testContract.bytecode, + addToBlockchain: true, + }) + + for (const values of Object.values(state.records.app.TestTable)) { + await client.tevmContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(values)), + addToBlockchain: true, + }) + } + }) + + it('should calculate and return the correct value for any data slot from the client override', async () => { + for (const { key1, key2 } of Object.values(state.records.app.TestTable)) { + const { accessList } = await client.tevmContract({ + ...testContract.read.get(key1, key2), + addToBlockchain: true, + createAccessList: true, + }) + + const slots = [...(accessList?.[testContract.address.toLowerCase() as Address] ?? [])] + for (const slot of slots) { + const value = await client.getStorageAt({ address: testContract.address, slot }) + if (!value) return + // skip the storeAddress slot + if (value.toLowerCase() === testContract.address.toLowerCase()) continue + + const actualStorage = pad(value, { size: 32 }) + const overrideStorage = await mudStoreRequestOverride({ + method: 'eth_getStorageAt', + params: [testContract.address, slot], + id: 1, + jsonrpc: '2.0', + }) + + expect(actualStorage).toEqual(overrideStorage) + } + } + }) +}) diff --git a/bundler-packages/mud/src/internal/decorators/mudStoreGetStorageAtOverride.ts b/bundler-packages/mud/src/internal/decorators/mudStoreGetStorageAtOverride.ts new file mode 100644 index 0000000000..3888d19299 --- /dev/null +++ b/bundler-packages/mud/src/internal/decorators/mudStoreGetStorageAtOverride.ts @@ -0,0 +1,81 @@ +import { type Table } from '@latticexyz/config' +import { type State, getRecords } from '@latticexyz/stash/internal' +import type { Logger } from '@tevm/logger' +import type { Address, Hex } from '@tevm/utils' +import { type EIP1193RequestFn } from 'viem' +import { FieldLayout } from '../FieldLayout.js' + +const getTablesWithRecords = async (getState: () => State, logger: Logger) => { + // This can throw in getRecords:encodeKey - https://github.com/latticexyz/mud/blob/main/packages/stash/src/actions/encodeKey.ts#L15 + try { + const state = getState() + return Object.values(state.config) + .flatMap((namespace) => Object.values(namespace) as readonly Table[]) + .map((table) => ({ + table, + records: Object.values(getRecords({ state, table })), + })) + } catch (error) { + logger.error({ error }, 'Error in MUD getRecords.') + return [] + } +} + +export const mudStoreGetStorageAtOverride = + (transport: { request: EIP1193RequestFn }, clientType: 'internal' | 'optimistic', logger: Logger) => + ({ getState, storeAddress }: { getState: () => State; storeAddress: Address }): EIP1193RequestFn => { + const tableIdToFieldLayout = new Map() + const { config } = getState() + for (const namespace of Object.values(config)) { + for (const table of Object.values(namespace)) { + tableIdToFieldLayout.set(table.tableId, new FieldLayout(table)) + } + } + + const originalRequest = transport.request + // @ts-expect-error - Type 'unknown' is not assignable to type '_returnType'. + return async function interceptedRequest(requestArgs: any, options: any): ReturnType { + if ( + requestArgs.method !== 'eth_getStorageAt' || + !requestArgs.params || + !Array.isArray(requestArgs.params) || + requestArgs.params[0]?.toLowerCase() !== storeAddress.toLowerCase() + ) { + return originalRequest(requestArgs, options) + } + + const requestedPosition = requestArgs.params[1] as Hex + logger.debug( + { clientType, storeAddress, requestedPosition }, + 'MUD Intercept: eth_getStorageAt. Getting optimistic state.', + ) + + const tablesWithRecords = await getTablesWithRecords(getState, logger) + + for (const { table, records } of tablesWithRecords) { + let fieldLayout = tableIdToFieldLayout.get(table.tableId) + // If a table was not registered during initial sync + if (!fieldLayout) { + fieldLayout = new FieldLayout(table) + tableIdToFieldLayout.set(table.tableId, fieldLayout) + } + + // Try to find a matching slot for any record + for (const record of records) { + try { + const slotInfo = fieldLayout.getSlotInfo(record, requestedPosition) + if (slotInfo) { + const encodedValueHex = fieldLayout.encodeValueAtSlot(record, slotInfo) + logger.debug({ clientType, requestedPosition, slotInfo, encodedValueHex }, 'Returning optimistic data') + return encodedValueHex + } + } catch (error) { + logger.error({ error, clientType, table, record }, 'Error trying to get a matching slot for a record.') + } + } + } + + logger.debug({ clientType, requestedPosition }, 'No MUD data in stash for requested position. Fallback to fork.') + return await originalRequest(requestArgs, options) + } + } diff --git a/bundler-packages/mud/src/internal/decorators/mudStoreWriteRequestOverride.spec.ts b/bundler-packages/mud/src/internal/decorators/mudStoreWriteRequestOverride.spec.ts new file mode 100644 index 0000000000..8596471c64 --- /dev/null +++ b/bundler-packages/mud/src/internal/decorators/mudStoreWriteRequestOverride.spec.ts @@ -0,0 +1,50 @@ +import { createLogger } from '@tevm/logger' +import { createMemoryClient } from '@tevm/memory-client' +import { PREFUNDED_ACCOUNTS } from '@tevm/utils' +import { describe, expect, it } from 'vitest' +import { sessionClient, testContract } from '../../../test/prepare.js' +import { state } from '../../../test/state.js' +import { mudStoreWriteRequestOverride } from './mudStoreWriteRequestOverride.js' + +describe('mudStoreWriteRequestOverride', () => { + // TODO: when eth_getProof is supported on tevm node + it.todo('should correctly wrap writeContract calls with a bundler client', async () => { + const optimisticClient = createMemoryClient({ fork: { transport: sessionClient } }) + const record = Object.values(state.records.app.TestTable)[0]! + mudStoreWriteRequestOverride( + sessionClient, + createLogger({ name: '@tevm/mud', level: 'debug' }), + )({ + memoryClient: optimisticClient, + storeAddress: testContract.address, + txStatusSubscribers: new Set(), + }) + + const txPool = await optimisticClient.transport.tevm.getTxPool() + expect(txPool.txsInPool).toEqual(0) + + await sessionClient.writeContract({ + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(record)), + account: PREFUNDED_ACCOUNTS[0].address, + }) + + // Pending block in the optimistic client should include that tx + expect(txPool.txsInPool).toEqual(1) + const { key1, key2, ...values } = record + expect( + ( + await optimisticClient.tevmContract({ + ...testContract.read.get(key1, key2), + blockTag: 'pending', + }) + ).data, + ).toEqual(values) + + // await viemClient.mine({ blocks: 1 }) // this will resolve awaiting for the tx inside the override + // expect(txPool.txsInPool).toEqual(0) + }) + + it.todo('should correctly wrap eth_sendTransaction requests with a vanilla client') + it.todo('should notify the tx status subscribers with the correct updates') +}) diff --git a/bundler-packages/mud/src/internal/decorators/mudStoreWriteRequestOverride.ts b/bundler-packages/mud/src/internal/decorators/mudStoreWriteRequestOverride.ts new file mode 100644 index 0000000000..a13e62878f --- /dev/null +++ b/bundler-packages/mud/src/internal/decorators/mudStoreWriteRequestOverride.ts @@ -0,0 +1,131 @@ +import type { Logger } from '@tevm/logger' +import type { MemoryClient } from '@tevm/memory-client' +import { type Address, createAddressFromString } from '@tevm/utils' +import { type Client, concatHex, encodeFunctionData } from 'viem' +import { waitForTransactionReceipt } from 'viem/actions' +import { type TxStatusSubscriber, notifyTxStatus } from '../../subscribeTx.js' +import type { SessionClient } from '../../types.js' +import { generateTxIdentifier } from '../txIdentifier.js' + +export const mudStoreWriteRequestOverride = + (client: Client | SessionClient, logger: Logger) => + ({ + memoryClient, + storeAddress, + txStatusSubscribers, + }: { memoryClient: MemoryClient; storeAddress: Address; txStatusSubscribers: Set }) => { + // Only methods we can intercept on the entrykit session client are writeContract and signUserOperation + if (client.type === 'bundlerClient' && 'writeContract' in client) { + overrideSessionClient(client, logger)({ memoryClient, storeAddress, txStatusSubscribers }) + } + + // TODO: see how it's done when not using entrykit and implement; might able to just be intercept and copy eth_sendRawTransaction + // ... + } + +const overrideSessionClient = + (client: SessionClient, logger: Logger) => + ({ + memoryClient, + storeAddress, + txStatusSubscribers, + }: { memoryClient: MemoryClient; storeAddress: Address; txStatusSubscribers: Set }) => { + const publicClient = client.client + const originalWriteContract = client.writeContract.bind(client) + + client.writeContract = async function interceptedWriteContract(args) { + const txIdentifier = generateTxIdentifier() + + const originalRes = originalWriteContract({ ...args, dataSuffix: txIdentifier }) + logger.debug( + { functionName: args.functionName, args: args.args, response: originalRes }, + 'Intercepted writeContract', + ) + + const simulateTx = async () => { + notifyTxStatus(txStatusSubscribers)({ + id: txIdentifier, + status: 'simulating', + timestamp: Date.now(), + }) + + // TODO: this should definitely be avoided + // clear the fork cache so it doesn't try to read `getStorageAt` from it, + // which would bypass the request we're intercepting in the mudStoreGetStorageAtOverride + // by fetching the initial never-modified fork cache + ;(await memoryClient.transport.tevm.getVm()).stateManager._baseState.forkCache.storage.clearStorage( + createAddressFromString(storeAddress), + ) + + logger.debug({ functionName: args.functionName, args: args.args }, 'Simulating MUD tx with tevmContract') + try { + const { txHash: optimisticTxHash, errors } = await memoryClient.tevmCall({ + to: args.address, + data: concatHex([ + encodeFunctionData({ + abi: args.abi, + functionName: args.functionName, + args: args.args, + }), + txIdentifier, + ]), + caller: client.userAddress, + throwOnFail: false, + skipBalance: true, + addToMempool: true, + blockTag: 'pending', + }) + + // TODO: should we throw or should we still attempt to broadcast? + if (errors) { + logger.warn( + { functionName: args.functionName, args: args.args, errors }, + 'Errors during tevmContract call.', + ) + } else { + logger.debug( + { functionName: args.functionName, args: args.args, optimisticTxHash }, + 'Optimistic tx executed successfully.', + ) + } + + notifyTxStatus(txStatusSubscribers)({ + id: txIdentifier, + status: 'optimistic', + timestamp: Date.now(), + }) + + const txHash = await originalRes + notifyTxStatus(txStatusSubscribers)({ + id: txIdentifier, + hash: txHash, + status: 'optimistic', + timestamp: Date.now(), + }) + // Whenever the tx is mined on the actual network, remove it from the pending block + // if we didn't intercept getStorageAt requests we would want to mine the tx to update the fork state additionally + // const receipt = (await publicClient.waitForTransactionReceipt({ hash: txHash })) as TransactionReceipt + const receipt = await waitForTransactionReceipt(publicClient, { hash: txHash }) + notifyTxStatus(txStatusSubscribers)({ + id: txIdentifier, + hash: txHash, + status: receipt.status === 'success' ? 'confirmed' : 'reverted', + timestamp: Date.now(), + }) + + logger.debug({ functionName: args.functionName, args: args.args, txHash }, 'Method completed successfully.') + if (optimisticTxHash && receipt.status === 'reverted') { + memoryClient.transport.tevm.getTxPool().then((pool) => { + if (pool.getByHash(optimisticTxHash)) pool.removeByHash(optimisticTxHash) + }) + } + } catch (error) { + logger.error({ functionName: args.functionName, args: args.args, error }, 'Method failed with error.') + throw error + } + } + + simulateTx() + return originalRes + } + } diff --git a/bundler-packages/mud/src/internal/ethjsLogToAbiLog.spec.ts b/bundler-packages/mud/src/internal/ethjsLogToAbiLog.spec.ts new file mode 100644 index 0000000000..68c96cd4d4 --- /dev/null +++ b/bundler-packages/mud/src/internal/ethjsLogToAbiLog.spec.ts @@ -0,0 +1,57 @@ +import { MUDTestSystem } from '@tevm/test-utils' +import { type EthjsLog, hexToBytes } from '@tevm/utils' +import { assert, describe, expect, it } from 'vitest' +import { ethjsLogToAbiLog } from './ethjsLogToAbiLog.js' + +describe('ethjsLogToAbiLog', () => { + it('should convert EthjsLog to viem Log format', () => { + const ethjsLog = [ + hexToBytes('0x1234567890123456789012345678901234567890'), + [ + hexToBytes('0x8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9'), // Store_SetRecord event signature + hexToBytes('0x7462617070000000000000000000000054657374546162656c65000000000000'), // tableId + ], + hexToBytes( + '0x0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + ), + ] satisfies EthjsLog + + expect(ethjsLogToAbiLog(MUDTestSystem.abi, ethjsLog)).toMatchObject({ + eventName: 'Store_SetRecord', + address: '0x1234567890123456789012345678901234567890', + topics: [ + '0x8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9', + '0x7462617070000000000000000000000054657374546162656c65000000000000', + ], + data: '0x0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + args: { + tableId: '0x7462617070000000000000000000000054657374546162656c65000000000000', + keyTuple: [ + '0x0000000000000000000000000000000000000000000000000000000000000001', + '0x0000000000000000000000000000000000000000000000000000000000000002', + ], + staticData: + '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002', + encodedLengths: '0x00000000000000000000000000000000000000000000000000000000000000c0', + dynamicData: '0x', + }, + }) + }) + + it('should error when the log does not match an event', () => { + const ethjsLog = [ + hexToBytes('0x1234567890123456789012345678901234567890'), + [hexToBytes('0x1111111111111111111111111111111111111111111111111111111111111111')], + hexToBytes('0x'), + ] satisfies EthjsLog + + try { + ethjsLogToAbiLog(MUDTestSystem.abi, ethjsLog) + } catch (error) { + assert(error instanceof Error) + expect(error.message).toContain( + 'Encoded event signature "0x1111111111111111111111111111111111111111111111111111111111111111" not found on ABI.', + ) + } + }) +}) diff --git a/bundler-packages/mud/src/internal/ethjsLogToAbiLog.ts b/bundler-packages/mud/src/internal/ethjsLogToAbiLog.ts new file mode 100644 index 0000000000..645f30116e --- /dev/null +++ b/bundler-packages/mud/src/internal/ethjsLogToAbiLog.ts @@ -0,0 +1,26 @@ +import { type Abi, type EthjsLog, bytesToHex, decodeEventLog } from '@tevm/utils' +import type { Log } from 'viem' + +/** + * Converts ethjs log format back to structured log arguments + */ +export const ethjsLogToAbiLog = (abi: TAbi, ethjsLog: EthjsLog): Log => { + const [addressBytes, topicsBytes, dataBytes] = ethjsLog + + const addressHex = bytesToHex(addressBytes) + const topicsHex = topicsBytes.map((topic) => bytesToHex(topic)) + const dataHex = bytesToHex(dataBytes) + + return { + ...decodeEventLog({ + abi, + data: dataHex, + // @ts-expect-error - Source provides no match for required element at position 0 in target. + topics: topicsHex, + }), + address: addressHex, + data: dataHex, + // @ts-expect-error - Source provides no match for required element at position 0 in target. + topics: topicsHex, + } +} diff --git a/bundler-packages/mud/src/internal/mud/applyUpdates.ts b/bundler-packages/mud/src/internal/mud/applyUpdates.ts new file mode 100644 index 0000000000..d57bdb06db --- /dev/null +++ b/bundler-packages/mud/src/internal/mud/applyUpdates.ts @@ -0,0 +1,107 @@ +import { type Table } from '@latticexyz/config' +import { schemaAbiTypeToDefaultValue } from '@latticexyz/schema-type/internal' +import { type Key, type Stash, type TableRecord, type TableUpdates } from '@latticexyz/stash/internal' +import { encodeKey } from '@latticexyz/stash/internal' +import { registerTable } from '@latticexyz/stash/internal' + +export type PendingStashUpdate = { + table: table + key: Key
+ value: undefined | Partial> +} + +export type ApplyUpdatesArgs = { + stash: Stash + updates: PendingStashUpdate[] +} + +type PendingUpdates = { + [namespaceLabel: string]: { + [tableLabel: string]: TableUpdates + } +} + +/** + * Applies updates to the stash without notifying subscribers. + * + * This is a copy of the original, with the only modification being that it does not call `notifySubscribers`. + */ +export function applyStashUpdates({ stash, updates }: ApplyUpdatesArgs): void { + for (const { table, key, value } of updates) { + if (stash.get().config[table.namespaceLabel]?.[table.label] == null) { + registerTable({ stash, table }) + } + + const { tableState, encodedKey, nextRecord } = getUpdatedRecords(stash, { table, key, value }) + + // apply update to state + if (nextRecord != null) { + tableState[encodedKey] = nextRecord + } else { + delete tableState[encodedKey] + } + } +} + +/** + * Notifies all subscribers of the provided updates. + * + * The only difference with the original is that it takes the updates as an argument. + */ +export function notifyStashSubscribers({ stash, updates: _updates }: ApplyUpdatesArgs): void { + if (_updates.length === 0) return + + const pendingUpdates: PendingUpdates = {} + + // Group updates by namespace and table for notification + for (const { table, key, value } of _updates) { + const tableUpdates = ((pendingUpdates[table.namespaceLabel] ??= {})[table.label] ??= []) + + const { prevRecord, nextRecord } = getUpdatedRecords(stash, { table, key, value }) + + // push update to table updates + tableUpdates.push({ + table, + key, + previous: prevRecord, + current: nextRecord, + }) + } + + // Notify table subscribers + for (const [namespaceLabel, namespaceUpdates] of Object.entries(pendingUpdates)) { + for (const [tableLabel, tableUpdates] of Object.entries(namespaceUpdates)) { + stash._.tableSubscribers[namespaceLabel]?.[tableLabel]?.forEach((subscriber) => subscriber(tableUpdates)) + } + } + + // Notify stash subscribers + const updates = Object.values(pendingUpdates) + .map((namespaceUpdates) => Object.values(namespaceUpdates)) + .flat(2) + stash._.storeSubscribers.forEach((subscriber) => subscriber({ type: 'records', updates })) +} + +function getUpdatedRecords(stash: Stash, update: PendingStashUpdate) { + const { table, key, value } = update + + const tableState = ((stash._.state.records[table.namespaceLabel] ??= {})[table.label] ??= {}) + const encodedKey = encodeKey({ table, key }) + const prevRecord = tableState[encodedKey] + + // create new record, preserving field order + const nextRecord = + value == null + ? undefined + : Object.fromEntries( + Object.entries(table.schema).map(([fieldName, { type }]) => [ + fieldName, + key[fieldName] ?? // Use provided key fields + value[fieldName] ?? // Or provided value fields + prevRecord?.[fieldName] ?? // Keep existing non-overridden fields + schemaAbiTypeToDefaultValue[type], // Default values for new fields + ]), + ) + + return { tableState, encodedKey, prevRecord, nextRecord } +} diff --git a/bundler-packages/mud/src/internal/mud/createStorageAdapter.ts b/bundler-packages/mud/src/internal/mud/createStorageAdapter.ts new file mode 100644 index 0000000000..09ae3e5b44 --- /dev/null +++ b/bundler-packages/mud/src/internal/mud/createStorageAdapter.ts @@ -0,0 +1,100 @@ +import { spliceHex } from '@latticexyz/common' +import { type Table } from '@latticexyz/config' +import { + decodeKey, + decodeValueArgs, + encodeValueArgs, + getKeySchema, + getSchemaTypes, + getValueSchema, +} from '@latticexyz/protocol-parser/internal' +import { type PendingStashUpdate, type Stash, type TableRecord, getRecord } from '@latticexyz/stash/internal' +import { type StorageAdapterBlock, emptyValueArgs } from '@latticexyz/store-sync' +import { type Hex, concatHex, size } from 'viem' + +export type CreateStorageAdapter = { + stash: Stash +} + +/** + * Creates a storage adapter that returns updates instead of applying them directly. + * + * It is a copy of the original, with the only modification being that it returns updates instead of `applyUpdates`. + * @see https://github.com/latticexyz/mud/blob/091ece6264dd4cdbdc21ea3d22347a6f1043a6a3/packages/store-sync/src/stash/createStorageAdapter.ts + */ +export function createStorageAdapter({ + stash, +}: CreateStorageAdapter): (block: StorageAdapterBlock) => Promise { + const tablesById = Object.fromEntries( + Object.values(stash.get().config) + .flatMap((namespace) => Object.values(namespace) as readonly Table[]) + .map((table) => [table.tableId, table]), + ) + + function getRecordId(tableId: Hex, keyTuple: readonly Hex[]): string { + return `${tableId}:${concatHex(keyTuple)}` + } + + return async function storageAdapter({ logs }: StorageAdapterBlock): Promise { + const pendingRecords: Record = {} + const updates: PendingStashUpdate[] = [] + + for (const log of logs) { + const table = tablesById[log.args.tableId] + if (!table) continue + + const id = getRecordId(log.args.tableId, log.args.keyTuple) + + const valueSchema = getSchemaTypes(getValueSchema(table)) + const keySchema = getSchemaTypes(getKeySchema(table)) + const key = decodeKey(keySchema, log.args.keyTuple) + + if (log.eventName === 'Store_SetRecord') { + const value = decodeValueArgs(valueSchema, log.args) + updates.push((pendingRecords[id] = { table, key, value })) + } else if (log.eventName === 'Store_SpliceStaticData') { + const previousValue = pendingRecords[id] + ? pendingRecords[id].value + ? ({ ...pendingRecords[id].key, ...pendingRecords[id].value } as TableRecord) + : undefined + : getRecord({ stash, table, key }) + + const { + staticData: previousStaticData, + encodedLengths, + dynamicData, + } = previousValue ? encodeValueArgs(valueSchema, previousValue) : emptyValueArgs + + const staticData = spliceHex(previousStaticData, log.args.start, size(log.args.data), log.args.data) + const value = decodeValueArgs(valueSchema, { + staticData, + encodedLengths, + dynamicData, + }) + + updates.push((pendingRecords[id] = { table, key, value })) + } else if (log.eventName === 'Store_SpliceDynamicData') { + const previousValue = pendingRecords[id] + ? ({ ...pendingRecords[id].key, ...pendingRecords[id].value } as TableRecord) + : getRecord({ stash, table, key }) + + const { staticData, dynamicData: previousDynamicData } = previousValue + ? encodeValueArgs(valueSchema, previousValue) + : emptyValueArgs + + const dynamicData = spliceHex(previousDynamicData, log.args.start, log.args.deleteCount, log.args.data) + const value = decodeValueArgs(valueSchema, { + staticData, + encodedLengths: log.args.encodedLengths, + dynamicData, + }) + + updates.push((pendingRecords[id] = { table, key, value })) + } else if (log.eventName === 'Store_DeleteRecord') { + updates.push((pendingRecords[id] = { table, key, value: undefined })) + } + } + + return updates + } +} diff --git a/bundler-packages/mud/src/internal/mud/createSyncAdapter.ts b/bundler-packages/mud/src/internal/mud/createSyncAdapter.ts new file mode 100644 index 0000000000..d82d8a131f --- /dev/null +++ b/bundler-packages/mud/src/internal/mud/createSyncAdapter.ts @@ -0,0 +1,49 @@ +import { type Stash, getRecord, registerTable, setRecord } from '@latticexyz/stash/internal' +import { type SyncAdapter, SyncStep, createStoreSync } from '@latticexyz/store-sync' +import { SyncProgress } from '@latticexyz/store-sync/internal' +import type { Hex } from 'viem' +import { stateUpdateCoordinator } from '../stateUpdateCoordinator.js' +import { applyStashUpdates, notifyStashSubscribers } from './applyUpdates.js' +import { createStorageAdapter } from './createStorageAdapter.js' + +export type CreateSyncAdapterOptions = { + stash: Stash + onTx?: ((tx: { hash: Hex | undefined }) => Promise) | undefined +} + +export function createSyncAdapter({ stash, onTx }: CreateSyncAdapterOptions): SyncAdapter { + return (opts) => { + // TODO: clear stash? + + registerTable({ stash, table: SyncProgress }) + + const storageAdapter = createStorageAdapter({ stash }) + + return createStoreSync({ + ...opts, + storageAdapter: async (block) => { + return new Promise((resolve) => { + stateUpdateCoordinator.queueCanonicalUpdate(async () => { + const updates = await storageAdapter(block) + if (onTx) + await Promise.all( + block.logs.map(({ transactionHash }) => + transactionHash ? onTx({ hash: transactionHash }) : Promise.resolve(), + ), + ) + applyStashUpdates({ stash, updates }) + notifyStashSubscribers({ stash, updates }) + resolve() + }) + }) + }, + onProgress: (nextValue) => { + const currentValue = getRecord({ stash, table: SyncProgress, key: {} }) + // update sync progress until we're caught up and live + if (currentValue?.step !== SyncStep.LIVE) { + setRecord({ stash, table: SyncProgress, key: {}, value: nextValue }) + } + }, + }) + } +} diff --git a/bundler-packages/mud/src/internal/stateUpdateCoordinator.ts b/bundler-packages/mud/src/internal/stateUpdateCoordinator.ts new file mode 100644 index 0000000000..e9491c8c11 --- /dev/null +++ b/bundler-packages/mud/src/internal/stateUpdateCoordinator.ts @@ -0,0 +1,52 @@ +type QueuedUpdate = { type: 'optimistic'; fn: () => Promise } | { type: 'canonical'; fn: () => Promise } + +/** + * Coordinates state updates to prevent race conditions between optimistic and canonical updates. + * + * Race condition: when canonical sync removes optimistic txs from the pool (in createSyncAdapter:storageAdapter:onTx) but before applying + * the canonical state to stash (in createSyncAdapter:storageAdapter:applyStashUpdates), a pending optimistic update could run and see empty pool + + * old canonical state, causing UI to briefly flash to incorrect intermediate state. + * + * Solution: queue all updates and let canonical updates clear pending optimistic ones since + * canonical updates naturally trigger fresh optimistic calculations via stash subscribers. + */ +class StateUpdateCoordinator { + private isRunning = false + private queue: QueuedUpdate[] = [] + + queueOptimisticUpdate(fn: () => Promise): void { + this.enqueue({ type: 'optimistic', fn }) + } + + queueCanonicalUpdate(fn: () => Promise): void { + this.enqueue({ type: 'canonical', fn }) + } + + private enqueue(update: QueuedUpdate): void { + // If queueing canonical update, clear pending optimistic updates + // since canonical will trigger fresh optimistic updates anyway + if (update.type === 'canonical') { + this.queue = this.queue.filter((op) => op.type !== 'optimistic') + } + + this.queue.push(update) + this.processQueue() + } + + private async processQueue(): Promise { + if (this.isRunning || this.queue.length === 0) return + + this.isRunning = true + + try { + while (this.queue.length > 0) { + const update = this.queue.shift()! + await update.fn() + } + } finally { + this.isRunning = false + } + } +} + +export const stateUpdateCoordinator = new StateUpdateCoordinator() diff --git a/bundler-packages/mud/src/internal/txIdentifier.ts b/bundler-packages/mud/src/internal/txIdentifier.ts new file mode 100644 index 0000000000..e7d9f2cef9 --- /dev/null +++ b/bundler-packages/mud/src/internal/txIdentifier.ts @@ -0,0 +1,28 @@ +import type { TxPool } from '@tevm/txpool' +import { type Hex, bytesToHex } from 'viem' + +export const matchOptimisticTxCounterpart = async (txPool: TxPool, data: Hex) => { + const matchingTx = [...txPool.txsByHash.values()].find((tx) => { + const identifier = extractTxIdentifier(bytesToHex(tx.data)) + if (!identifier) return false + return data.includes(identifier.slice(2)) + }) + + return matchingTx ? bytesToHex(matchingTx.hash()) : null +} + +// Helper to generate 8-byte random identifier +export const generateTxIdentifier = () => { + const randomBytes = new Uint8Array(8) + crypto.getRandomValues(randomBytes) + return `0x${Array.from(randomBytes) + .map((b) => b.toString(16).padStart(2, '0')) + .join('')}` as Hex +} + +// Helper to extract appended identifier from transaction data +const extractTxIdentifier = (data: Hex): Hex | null => { + if (data.length < 18) return null // Must have at least 8 bytes for identifier + const identifierHex = data.slice(-16) // Last 8 bytes (16 hex chars) + return `0x${identifierHex}` +} diff --git a/bundler-packages/mud/src/internal/utils/deepEqual.spec.ts b/bundler-packages/mud/src/internal/utils/deepEqual.spec.ts new file mode 100644 index 0000000000..c6326c97d1 --- /dev/null +++ b/bundler-packages/mud/src/internal/utils/deepEqual.spec.ts @@ -0,0 +1,188 @@ +import { describe, expect, it } from 'vitest' +import { deepEqual } from './deepEqual.js' + +describe('deepEqual', () => { + it('should return true for identical references', () => { + const obj = { a: 1 } + expect(deepEqual(obj, obj)).toBe(true) + }) + + it('should return true for primitive values that are equal', () => { + expect(deepEqual(1, 1)).toBe(true) + expect(deepEqual('hello', 'hello')).toBe(true) + expect(deepEqual(true, true)).toBe(true) + expect(deepEqual(null, null)).toBe(true) + expect(deepEqual(undefined, undefined)).toBe(true) + }) + + it('should return false for primitive values that are not equal', () => { + expect(deepEqual(1, 2)).toBe(false) + expect(deepEqual('hello', 'world')).toBe(false) + expect(deepEqual(true, false)).toBe(false) + expect(deepEqual(null, undefined)).toBe(false) + }) + + it('should return false when comparing primitive with object', () => { + expect(deepEqual(1, { a: 1 })).toBe(false) + expect(deepEqual('hello', { b: 'hello' })).toBe(false) + expect(deepEqual(true, { c: true })).toBe(false) + }) + + it('should return false when one value is null', () => { + expect(deepEqual(null, { a: 1 })).toBe(false) + expect(deepEqual({ a: 1 }, null)).toBe(false) + }) + + it('should return true for empty objects', () => { + expect(deepEqual({}, {})).toBe(true) + }) + + it('should return true for objects with same properties and values', () => { + expect(deepEqual({ a: 1, b: 2 }, { a: 1, b: 2 })).toBe(true) + expect(deepEqual({ name: 'John', age: 30 }, { name: 'John', age: 30 })).toBe(true) + }) + + it('should return false for objects with different property values', () => { + expect(deepEqual({ a: 1, b: 2 }, { a: 1, b: 3 })).toBe(false) + expect(deepEqual({ name: 'John', age: 30 }, { name: 'John', age: 31 })).toBe(false) + }) + + it('should return false for objects with different number of properties', () => { + expect(deepEqual({ a: 1 }, { a: 1, b: 2 })).toBe(false) + expect(deepEqual({ a: 1, b: 2 }, { a: 1 })).toBe(false) + }) + + it('should return false for objects with different property names', () => { + expect(deepEqual({ a: 1 }, { b: 1 })).toBe(false) + expect(deepEqual({ name: 'John' }, { username: 'John' })).toBe(false) + }) + + it('should handle nested objects', () => { + const obj1 = { user: { name: 'John', age: 30 } } + const obj2 = { user: { name: 'John', age: 30 } } + const obj3 = { user: { name: 'John', age: 31 } } + + expect(deepEqual(obj1, obj2)).toBe(true) + expect(deepEqual(obj1, obj3)).toBe(false) + }) + + it('should handle deeply nested objects', () => { + const deep1 = { + level1: { + level2: { + level3: { + value: 'deep', + }, + }, + }, + } + const deep2 = { + level1: { + level2: { + level3: { + value: 'deep', + }, + }, + }, + } + const deep3 = { + level1: { + level2: { + level3: { + value: 'different', + }, + }, + }, + } + + expect(deepEqual(deep1, deep2)).toBe(true) + expect(deepEqual(deep1, deep3)).toBe(false) + }) + + it('should handle objects with array properties', () => { + const obj1 = { items: [1, 2, 3], name: 'test' } + const obj2 = { items: [1, 2, 3], name: 'test' } + const obj3 = { items: [1, 2, 4], name: 'test' } + + expect(deepEqual(obj1, obj2)).toBe(true) + expect(deepEqual(obj1, obj3)).toBe(false) + }) + + it('should handle objects with null and undefined values', () => { + expect(deepEqual({ a: null }, { a: null })).toBe(true) + expect(deepEqual({ a: undefined }, { a: undefined })).toBe(true) + expect(deepEqual({ a: null }, { a: undefined })).toBe(false) + }) + + it('should handle complex mixed objects', () => { + const complex1 = { + id: 1, + user: { + name: 'John', + profile: { + age: 30, + hobbies: ['reading', 'coding'], + }, + }, + settings: { + theme: 'dark', + notifications: true, + }, + metadata: null, + } + + const complex2 = { + id: 1, + user: { + name: 'John', + profile: { + age: 30, + hobbies: ['reading', 'coding'], + }, + }, + settings: { + theme: 'dark', + notifications: true, + }, + metadata: null, + } + + const complex3 = { + id: 1, + user: { + name: 'John', + profile: { + age: 30, + hobbies: ['reading', 'gaming'], // different hobby + }, + }, + settings: { + theme: 'dark', + notifications: true, + }, + metadata: null, + } + + expect(deepEqual(complex1, complex2)).toBe(true) + expect(deepEqual(complex1, complex3)).toBe(false) + }) + + it('should handle objects with different property order', () => { + const obj1 = { a: 1, b: 2, c: 3 } + const obj2 = { c: 3, a: 1, b: 2 } + + expect(deepEqual(obj1, obj2)).toBe(true) + }) + + it('should handle arrays as objects', () => { + expect(deepEqual([1, 2, 3], [1, 2, 3])).toBe(true) + expect(deepEqual([1, 2, 3], [1, 2, 4])).toBe(false) + expect(deepEqual([], [])).toBe(true) + }) + + it('should handle edge cases with special values', () => { + expect(deepEqual({ a: Number.NaN }, { a: Number.NaN })).toBe(false) // NaN !== NaN + expect(deepEqual({ a: 0 }, { a: -0 })).toBe(true) // 0 === -0 + expect(deepEqual({ a: Number.POSITIVE_INFINITY }, { a: Number.POSITIVE_INFINITY })).toBe(true) + }) +}) diff --git a/bundler-packages/mud/src/internal/utils/deepEqual.ts b/bundler-packages/mud/src/internal/utils/deepEqual.ts new file mode 100644 index 0000000000..661c544d9a --- /dev/null +++ b/bundler-packages/mud/src/internal/utils/deepEqual.ts @@ -0,0 +1,17 @@ +// React +export const deepEqual = (obj1: any, obj2: any): boolean => { + if (obj1 === obj2) return true + + if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) return false + + const keys1 = Object.keys(obj1) + const keys2 = Object.keys(obj2) + + if (keys1.length !== keys2.length) return false + + for (const key of keys1) { + if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) return false + } + + return true +} diff --git a/bundler-packages/mud/src/internal/utils/memoize.spec.ts b/bundler-packages/mud/src/internal/utils/memoize.spec.ts new file mode 100644 index 0000000000..87c6e5d505 --- /dev/null +++ b/bundler-packages/mud/src/internal/utils/memoize.spec.ts @@ -0,0 +1,83 @@ +import { describe, expect, it, vi } from 'vitest' +import { memoize } from './memoize.js' + +describe('memoize', () => { + it('should call function only once when result is equal', () => { + const fn = vi.fn(() => ({ value: 42 })) + const isEqual = (a: any, b: any) => a.value === b.value + const memoized = memoize(fn, isEqual) + + const result1 = memoized() + const result2 = memoized() + const result3 = memoized() + + expect(fn).toHaveBeenCalledTimes(3) // Called each time but returns cached result + expect(result1).toBe(result2) // Same reference + expect(result2).toBe(result3) // Same reference + expect(result1.value).toBe(42) + }) + + it('should update cache when result changes', () => { + let counter = 0 + const fn = vi.fn(() => ({ value: ++counter })) + const isEqual = (a: any, b: any) => a.value === b.value + const memoized = memoize(fn, isEqual) + + const result1 = memoized() // value: 1 + const result2 = memoized() // value: 2, different from cached + const result3 = memoized() // value: 3, different from cached + + expect(fn).toHaveBeenCalledTimes(3) + expect(result1.value).toBe(1) + expect(result2.value).toBe(2) + expect(result3.value).toBe(3) + expect(result1).not.toBe(result2) + expect(result2).not.toBe(result3) + }) + + it('should work with primitive values', () => { + let value = 'hello' + const fn = vi.fn(() => value) + const isEqual = (a: string, b: string) => a === b + const memoized = memoize(fn, isEqual) + + const result1 = memoized() + const result2 = memoized() + + value = 'world' + const result3 = memoized() + const result4 = memoized() + + expect(fn).toHaveBeenCalledTimes(4) + expect(result1).toBe('hello') + expect(result2).toBe('hello') + expect(result3).toBe('world') + expect(result4).toBe('world') + }) + + it('should handle null/undefined values', () => { + const fn = vi.fn(() => null) + const isEqual = (a: any, b: any) => a === b + const memoized = memoize(fn, isEqual) + + const result1 = memoized() + const result2 = memoized() + + expect(fn).toHaveBeenCalledTimes(2) + expect(result1).toBe(null) + expect(result2).toBe(null) + }) + + it('should use custom equality function', () => { + const fn = vi.fn(() => ({ id: 1, timestamp: Date.now() })) + const isEqual = (a: any, b: any) => a.id === b.id // Ignore timestamp + const memoized = memoize(fn, isEqual) + + const result1 = memoized() + const result2 = memoized() + + expect(fn).toHaveBeenCalledTimes(2) + expect(result1).toBe(result2) // Same reference due to custom equality + expect(result1.id).toBe(1) + }) +}) diff --git a/bundler-packages/mud/src/internal/utils/memoize.ts b/bundler-packages/mud/src/internal/utils/memoize.ts new file mode 100644 index 0000000000..c065bbc21c --- /dev/null +++ b/bundler-packages/mud/src/internal/utils/memoize.ts @@ -0,0 +1,13 @@ +// React +export const memoize = (fn: () => T, isEqual: (a: T, b: T) => boolean): (() => T) => { + let ref: { current: T } | null = null + return () => { + const current = fn() + if (ref == null) { + ref = { current } + } else if (!isEqual(ref.current, current)) { + ref.current = current + } + return ref.current + } +} diff --git a/bundler-packages/mud/src/react/index.ts b/bundler-packages/mud/src/react/index.ts new file mode 100644 index 0000000000..9343f33751 --- /dev/null +++ b/bundler-packages/mud/src/react/index.ts @@ -0,0 +1,4 @@ +export * from './useOptimisticWrapper.js' +export { useOptimisticState } from './useOptimisticState.js' +export { useOptimisticRecord, type UseOptimisticRecordResult } from './useOptimisticRecord.js' +export { useOptimisticRecords, type UseOptimisticRecordsResult } from './useOptimisticRecords.js' diff --git a/bundler-packages/mud/src/react/useOptimisticRecord.spec.tsx b/bundler-packages/mud/src/react/useOptimisticRecord.spec.tsx new file mode 100644 index 0000000000..32e3700efc --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticRecord.spec.tsx @@ -0,0 +1,315 @@ +// @vitest-environment jsdom +import { renderHook, waitFor } from '@testing-library/react' +import React from 'react' +import { type Hex } from 'viem' +import { beforeAll, describe, expect, it } from 'vitest' +import { config } from '../../test/config.js' +import { prepare, sessionClient, stash, testContract, writeRecords } from '../../test/prepare.js' +import { randomRecord } from '../../test/state.js' +import { useOptimisticRecord } from './useOptimisticRecord.js' +import { OptimisticWrapperProvider } from './useOptimisticWrapper.js' + +describe('useOptimisticRecord', () => { + beforeAll(async () => { + await prepare({ count: 10 }) + }) + + const createWrapper = ({ children }: { children: React.ReactNode }) => ( + + {children} + + ) + + it('should return record when it exists', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const firstRecord = records[0]! + const firstRecordKey = { key1: firstRecord.key1, key2: firstRecord.key2 } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: firstRecordKey, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toBeDefined() + expect(result.current).toEqual(firstRecord) + }) + }) + + it('should return undefined when record does not exist', async () => { + const nonExistentKey = { key1: 999999n, key2: 999 } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: nonExistentKey, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toBeUndefined() + }) + }) + + it('should return record with correct schema structure', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const firstRecord = records[0]! + const firstRecordKey = { key1: firstRecord.key1, key2: firstRecord.key2 } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: firstRecordKey, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + const record = result.current! + const schemaKeys = Object.keys(config.tables.app__TestTable.schema) + + schemaKeys.forEach((key) => { + expect(record).toHaveProperty(key) + }) + + // Verify types match schema + expect(typeof record.key1).toBe('bigint') // uint200 + expect(typeof record.key2).toBe('number') // uint8 + expect(typeof record.val1).toBe('bigint') // uint200 + expect(typeof record.val2).toBe('number') // uint8 + expect(typeof record.val3).toBe('number') // uint16 + expect(typeof record.val4).toBe('boolean') // bool + expect(typeof record.val5).toBe('string') // address + expect(typeof record.dyn1).toBe('string') // string + expect(typeof record.dyn2).toBe('string') // bytes + expect(Array.isArray(record.dyn3)).toBe(true) // int16[] + }) + + it('should update when record changes', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const firstRecord = records[0]! + const firstRecordKey = { key1: firstRecord.key1, key2: firstRecord.key2 } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: firstRecordKey, + }), + { wrapper: createWrapper }, + ) + + // Initial state + await waitFor(() => { + expect(result.current).toEqual(firstRecord) + }) + + // Update the record + const updatedRecord = { ...firstRecord, val1: firstRecord.val1 + 100n } + await writeRecords([updatedRecord]) + + // Should update with new value + await waitFor(() => { + expect(result.current?.val1).toBe(firstRecord.val1 + 100n) + }) + }) + + it('should handle different key combinations', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const secondRecord = records[1]! + const secondRecordKey = { key1: secondRecord.key1, key2: secondRecord.key2 } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: secondRecordKey, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toEqual(secondRecord) + }) + }) + + it('should return default value when record does not exist and default is provided', async () => { + const nonExistentKey = { key1: 999999n, key2: 999 } + const defaultValue = { + val1: 123n, + val2: 45, + val3: 67, + val4: true, + val5: '0x0000000000000000000000000000000000000000' as Hex, + dyn1: 'default string', + dyn2: '0x1234' as Hex, + dyn3: [1, 2, 3], + } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: nonExistentKey, + defaultValue, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + // Should include both key and default value + expect(result.current).toEqual(defaultValue) + }) + + it('should handle multiple hooks with different keys', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const firstRecord = records[0]! + const secondRecord = records[1]! + const firstRecordKey = { key1: firstRecord.key1, key2: firstRecord.key2 } + const secondRecordKey = { key1: secondRecord.key1, key2: secondRecord.key2 } + + const { result: result1 } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: firstRecordKey, + }), + { wrapper: createWrapper }, + ) + + const { result: result2 } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: secondRecordKey, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result1.current).toEqual(firstRecord) + expect(result2.current).toEqual(secondRecord) + }) + }) + + it('should handle new record being added', async () => { + const [, newRecord] = randomRecord() + const newKey = { key1: newRecord.key1, key2: newRecord.key2 } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: newKey, + }), + { wrapper: createWrapper }, + ) + + // Initially should be undefined + await waitFor(() => { + expect(result.current).toBeUndefined() + }) + + // Add the record + await writeRecords([newRecord]) + + // Should now return the new record + await waitFor(() => { + expect({ ...result.current, val5: result.current?.val5.toLowerCase() }).toEqual({ + ...newRecord, + val5: newRecord.val5.toLowerCase(), + }) + }) + }) + + it('should work when wrapper is undefined initially', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const firstRecord = records[0]! + const firstRecordKey = { key1: firstRecord.key1, key2: firstRecord.key2 } + + // Render without wrapper + const { result } = renderHook(() => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: firstRecordKey, + }), + ) + + // Should return undefined when no wrapper + expect(result.current).toBeUndefined() + }) + + it('should cleanup subscription on unmount', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const firstRecord = records[0]! + const firstRecordKey = { key1: firstRecord.key1, key2: firstRecord.key2 } + + const { unmount } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key: firstRecordKey, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + // Hook is mounted and working + }) + + // Should not throw when unmounting + expect(() => unmount()).not.toThrow() + }) + + it('should handle records with all schema field types', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const testRecord = records[0]! + const key = { key1: testRecord.key1, key2: testRecord.key2 } + + const { result } = renderHook( + () => + useOptimisticRecord({ + table: config.tables.app__TestTable, + key, + }), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + const record = result.current! + + // Test each field type from the schema + expect(record.key1).toBeDefined() // uint200 + expect(record.key2).toBeDefined() // uint8 + expect(record.val1).toBeDefined() // uint200 + expect(record.val2).toBeDefined() // uint8 + expect(record.val3).toBeDefined() // uint16 + expect(record.val4).toBeDefined() // bool + expect(record.val5).toBeDefined() // address + expect(record.dyn1).toBeDefined() // string + expect(record.dyn2).toBeDefined() // bytes + expect(record.dyn3).toBeDefined() // int16[] + }) +}) diff --git a/bundler-packages/mud/src/react/useOptimisticRecord.tsx b/bundler-packages/mud/src/react/useOptimisticRecord.tsx new file mode 100644 index 0000000000..a3358913c2 --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticRecord.tsx @@ -0,0 +1,21 @@ +import { type GetRecordArgs, type Key, type TableRecord, getRecord } from '@latticexyz/stash/internal' +import type { Table } from '@latticexyz/store/internal' +import { useOptimisticState } from './useOptimisticState.js' +import { useOptimisticWrapper } from './useOptimisticWrapper.js' + +export type UseOptimisticRecordResult< + TTable extends Table = Table, + TDefaultValue extends Omit, keyof Key> | undefined = undefined, +> = TDefaultValue extends undefined ? TableRecord | undefined : TableRecord + +export const useOptimisticRecord = < + const TTable extends Table, + const TDefaultValue extends Omit, keyof Key> | undefined = undefined, +>( + args: Omit, 'stash' | 'state'>, +): UseOptimisticRecordResult => { + const wrapper = useOptimisticWrapper() + return useOptimisticState((state) => + wrapper ? wrapper.getOptimisticRecord({ state, ...args }) : getRecord({ state, ...args }), + ) as UseOptimisticRecordResult +} diff --git a/bundler-packages/mud/src/react/useOptimisticRecords.spec.tsx b/bundler-packages/mud/src/react/useOptimisticRecords.spec.tsx new file mode 100644 index 0000000000..b7fdf077e2 --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticRecords.spec.tsx @@ -0,0 +1,192 @@ +// @vitest-environment jsdom +import { renderHook, waitFor } from '@testing-library/react' +import React from 'react' +import { beforeAll, describe, expect, it } from 'vitest' +import { config } from '../../test/config.js' +import { prepare, sessionClient, stash, testContract, writeRecords } from '../../test/prepare.js' +import { randomRecord } from '../../test/state.js' +import { useOptimisticRecords } from './useOptimisticRecords.js' +import { OptimisticWrapperProvider } from './useOptimisticWrapper.js' + +describe('useOptimisticRecords', () => { + beforeAll(async () => { + await prepare({ count: 10 }) + }) + + const createWrapper = ({ children }: { children: React.ReactNode }) => ( + + {children} + + ) + + it('should return all records as array', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const recordCount = records.length + + const { result } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable }), { + wrapper: createWrapper, + }) + + await waitFor(() => { + expect(result.current).toBeDefined() + expect(Array.isArray(result.current)).toBe(true) + expect(result.current).toHaveLength(recordCount) + }) + }) + + it('should return records with correct structure', async () => { + const { result } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable }), { + wrapper: createWrapper, + }) + + await waitFor(() => { + expect(result.current).toBeDefined() + expect(result.current.length).toBeGreaterThan(0) + }) + + const firstRecord = result.current[0] + const schemaKeys = Object.keys(config.tables.app__TestTable.schema) + + schemaKeys.forEach((key) => { + expect(firstRecord).toHaveProperty(key) + }) + }) + + it('should update when records are added', async () => { + const initialLength = Object.values(stash.get().records.app.TestTable).length + + const { result } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable }), { + wrapper: createWrapper, + }) + + // Initial state + await waitFor(() => { + expect(result.current).toHaveLength(initialLength) + }) + + // Add a new record + const [, newRecord] = randomRecord() + await writeRecords([newRecord]) + + // Should update with new record + await waitFor(() => { + expect(result.current).toHaveLength(initialLength + 1) + }) + }) + + it('should maintain referential stability when data unchanged', async () => { + const results: any[] = [] + + const { rerender } = renderHook( + () => { + const result = useOptimisticRecords({ table: config.tables.app__TestTable }) + results.push(result) + return result + }, + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(results[results.length - 1]).toBeDefined() + }) + + const initialResult = results[results.length - 1] + + // Re-render without changing data + rerender() + + await waitFor(() => { + expect(results.length).toBeGreaterThan(1) + }) + + // Should maintain same reference due to deep equality + expect(results[results.length - 1]).toStrictEqual(initialResult) + }) + + it('should work when wrapper is undefined initially', async () => { + // Render without wrapper + const { result } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable })) + + // Should return empty array when no wrapper + expect(result.current).toEqual([]) + }) + + it('should handle record updates correctly', async () => { + const records = Object.values(stash.get().records.app.TestTable) + const recordToUpdate = records[0]! + + const { result } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable }), { + wrapper: createWrapper, + }) + + // Initial state + await waitFor(() => { + expect(result.current.length).toBe(records.length) + }) + + // Update an existing record + const updatedRecord = { ...recordToUpdate, val1: recordToUpdate.val1 + 100n } + await writeRecords([updatedRecord]) + + // Should still have same number of records but with updated data + await waitFor(() => { + expect(result.current.length).toBe(records.length) + const updatedInResult = result.current.find((r) => r.key1 === updatedRecord.key1 && r.key2 === updatedRecord.key2) + expect(updatedInResult?.val1).toBe(recordToUpdate.val1 + 100n) + }) + }) + + it('should return readonly array type', async () => { + const { result } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable }), { + wrapper: createWrapper, + }) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + // The array should be readonly (TypeScript compile-time check) + // This is more of a type safety test + expect(Array.isArray(result.current)).toBe(true) + }) + + it('should cleanup subscription on unmount', async () => { + const { unmount } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable }), { + wrapper: createWrapper, + }) + + await waitFor(() => { + // Hook is mounted and working + }) + + // Should not throw when unmounting + expect(() => unmount()).not.toThrow() + }) + + it('should handle concurrent updates from multiple sources', async () => { + const initialLength = Object.values(stash.get().records.app.TestTable).length + + const { result } = renderHook(() => useOptimisticRecords({ table: config.tables.app__TestTable }), { + wrapper: createWrapper, + }) + + await waitFor(() => { + expect(result.current).toHaveLength(initialLength) + }) + + // Add multiple records concurrently + const [, record1] = randomRecord() + const [, record2] = randomRecord() + await writeRecords([record1, record2]) + + await waitFor(() => { + expect(result.current).toHaveLength(initialLength + 2) + }) + }) +}) diff --git a/bundler-packages/mud/src/react/useOptimisticRecords.tsx b/bundler-packages/mud/src/react/useOptimisticRecords.tsx new file mode 100644 index 0000000000..415364ed7e --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticRecords.tsx @@ -0,0 +1,24 @@ +import { type GetRecordsArgs, type TableRecord, getRecords } from '@latticexyz/stash/internal' +import type { Table } from '@latticexyz/store/internal' +import { deepEqual } from '../internal/utils/deepEqual.js' +import { useOptimisticState } from './useOptimisticState.js' +import { useOptimisticWrapper } from './useOptimisticWrapper.js' + +export type UseOptimisticRecordsResult
= readonly TableRecord
[] + +export const useOptimisticRecords = ( + args: Omit, 'stash' | 'state'>, +): UseOptimisticRecordsResult => { + const wrapper = useOptimisticWrapper() + return ( + useOptimisticState( + (state) => { + const records = wrapper ? wrapper.getOptimisticRecords({ state, ...args }) : getRecords({ state, ...args }) + return Object.values(records) + }, + { + isEqual: deepEqual, + }, + ) ?? [] + ) +} diff --git a/bundler-packages/mud/src/react/useOptimisticState.spec.tsx b/bundler-packages/mud/src/react/useOptimisticState.spec.tsx new file mode 100644 index 0000000000..6f9696489e --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticState.spec.tsx @@ -0,0 +1,188 @@ +import { type State } from '@latticexyz/stash/internal' +// @vitest-environment jsdom +import { renderHook, waitFor } from '@testing-library/react' +import React from 'react' +import { beforeAll, describe, expect, it } from 'vitest' +import { config } from '../../test/config.js' +import { prepare, sessionClient, stash, testContract, writeRecords } from '../../test/prepare.js' +import { randomRecord } from '../../test/state.js' +import { deepEqual } from '../internal/utils/deepEqual.js' +import { useOptimisticState } from './useOptimisticState.js' +import { OptimisticWrapperProvider } from './useOptimisticWrapper.js' + +describe('useOptimisticState', () => { + beforeAll(async () => { + await prepare({ count: 10 }) + }) + + const createWrapper = ({ children }: { children: React.ReactNode }) => ( + + {children} + + ) + + it('should call selector with optimistic state and return result', async () => { + const length = Object.keys(stash.get().records.app.TestTable).length + const { result } = renderHook( + () => useOptimisticState((state: State) => state.records.app.TestTable), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toBeDefined() + expect(Object.keys(result.current ?? {})).toHaveLength(length) + }) + }) + + it('should return undefined when selector returns undefined', async () => { + const { result } = renderHook(() => useOptimisticState(() => undefined), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result.current).toBeUndefined() + }) + }) + + it('should update when stash state changes', async () => { + const length = Object.keys(stash.get().records.app.TestTable).length + const { result } = renderHook( + () => useOptimisticState((state: State) => Object.keys(state.records.app.TestTable).length), + { wrapper: createWrapper }, + ) + + // Initial state + await waitFor(() => { + expect(result.current).toBe(length) + }) + + // Add a record to stash (simulating canonical update) + const [_, record] = randomRecord() + await writeRecords([record]) + + // Should update with new count + await waitFor(() => { + expect(result.current).toBe(length + 1) + }) + }) + + it('should use custom isEqual function', async () => { + const length = Object.keys(stash.get().records.app.TestTable).length + + let callCount = 0 + const customIsEqual = (a: unknown, b: unknown) => { + callCount++ + return deepEqual(a, b) + } + + const { result } = renderHook(() => useOptimisticState(() => ({ count: length }), { isEqual: customIsEqual }), { + wrapper: createWrapper, + }) + + await waitFor(() => { + expect(result.current).toEqual({ count: length }) + }) + + // Custom isEqual should have been called + expect(callCount).toBeGreaterThan(0) + }) + + it('should not re-render when selector returns same reference', async () => { + const stableObject = { value: 'stable' } + const selector = () => stableObject + let renderCount = 0 + + const { result } = renderHook( + () => { + renderCount++ + return useOptimisticState(selector) + }, + { wrapper: createWrapper }, + ) + + await waitFor(() => { + expect(result.current).toBe(stableObject) + }) + + const initialRenderCount = renderCount + + // Force a re-render by triggering stash update (but selector returns same object) + stash._.storeSubscribers.forEach((subscriber) => subscriber({ type: 'records', updates: [] })) + await new Promise((resolve) => setTimeout(resolve, 50)) + + // Should not have caused additional renders due to stable reference + expect(renderCount).toBe(initialRenderCount) + }) + + it('should cleanup subscription on unmount', async () => { + const { unmount } = renderHook( + () => useOptimisticState((state: State) => Object.keys(state.records.app.TestTable).length), + { wrapper: createWrapper }, + ) + + await waitFor(() => { + // Hook is mounted and working + }) + + // Should not throw when unmounting + expect(() => unmount()).not.toThrow() + }) + + it('should work when wrapper is undefined initially', async () => { + // Render without wrapper first + const { result } = renderHook(() => + useOptimisticState((state: State) => state.records.app.TestTable), + ) + + // Should return undefined when no wrapper + expect(result.current).toBeUndefined() + }) + + it('should handle multiple hooks with same selector', async () => { + const length = Object.keys(stash.get().records.app.TestTable).length + const selector = (state: State) => Object.keys(state.records.app.TestTable).length + + const { result: result1 } = renderHook(() => useOptimisticState(selector), { wrapper: createWrapper }) + const { result: result2 } = renderHook(() => useOptimisticState(selector), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result1.current).toBe(length) + expect(result2.current).toBe(length) + }) + + // Both should update when state changes + const [, newRecord] = randomRecord() + await writeRecords([newRecord]) + + await waitFor(() => { + expect(result1.current).toBe(length + 1) + expect(result2.current).toBe(length + 1) + }) + }) + + it('should provide correct state structure to selector', async () => { + let receivedState: State | undefined = undefined + const selector = (state: State) => { + receivedState = state + return 'test' + } + + const { result } = renderHook(() => useOptimisticState(selector), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result.current).toBe('test') + }) + + // Verify the state structure passed to selector + expect(receivedState).toBeDefined() + const _state = receivedState as unknown as State + expect(_state.config).toBeDefined() + expect(_state.records).toBeDefined() + expect(_state.records.app).toBeDefined() + expect(_state.records.app.TestTable).toBeDefined() + }) +}) diff --git a/bundler-packages/mud/src/react/useOptimisticState.tsx b/bundler-packages/mud/src/react/useOptimisticState.tsx new file mode 100644 index 0000000000..7b1995b028 --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticState.tsx @@ -0,0 +1,40 @@ +import type { State, StoreConfig } from '@latticexyz/stash/internal' +import { useDebugValue, useSyncExternalStore } from 'react' +import { deepEqual } from '../internal/utils/deepEqual.js' +import { memoize } from '../internal/utils/memoize.js' +import { useOptimisticWrapper } from './useOptimisticWrapper.js' + +export type UseOptimisticStateOptions = { + /** + * Optional equality function. + * Must be a stable function, otherwise you may end up with this hook rerendering infinitely. + * @default deepEqual + */ + isEqual?: (a: T, b: T) => boolean +} + +export const useOptimisticState = ( + /** + * Selector to pick values from state. + * Be aware of the stability of both the `selector` and the return value, otherwise you may end up with unnecessary re-renders. + */ + selector: (state: State) => T, + /** + * Optional equality function. + */ + opts: UseOptimisticStateOptions = {}, +): T | undefined => { + const { isEqual = deepEqual } = opts + const wrapper = useOptimisticWrapper() + + const slice = useSyncExternalStore( + (subscriber) => { + if (!wrapper) return () => {} + return wrapper.subscribeOptimisticState({ subscriber }) + }, + wrapper ? memoize(() => selector(wrapper.getOptimisticState()), isEqual) : () => undefined, + ) + + useDebugValue(slice) + return slice +} diff --git a/bundler-packages/mud/src/react/useOptimisticWrapper.spec.tsx b/bundler-packages/mud/src/react/useOptimisticWrapper.spec.tsx new file mode 100644 index 0000000000..008701f333 --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticWrapper.spec.tsx @@ -0,0 +1,211 @@ +// @vitest-environment jsdom +import { renderHook, waitFor } from '@testing-library/react' +import { PREFUNDED_ACCOUNTS } from '@tevm/utils' +import React from 'react' +import { assert, beforeAll, describe, expect, it } from 'vitest' +import { config } from '../../test/config.js' +import { prepare, sessionClient, stash, testContract } from '../../test/prepare.js' +import { randomRecord } from '../../test/state.js' +import { OptimisticWrapperProvider, useOptimisticWrapper } from './useOptimisticWrapper.js' + +describe('useOptimisticWrapper', () => { + beforeAll(async () => { + await prepare({ count: 10 }) + }) + + const createWrapper = ({ children }: { children: React.ReactNode }) => ( + + {children} + + ) + + it('should return undefined when used outside of provider', () => { + const { result } = renderHook(() => useOptimisticWrapper()) + expect(result.current).toBeUndefined() + }) + + it('should return optimistic handler when used inside provider', () => { + const { result } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + expect(result.current).toBeDefined() + expect(result.current).toHaveProperty('getOptimisticState') + expect(result.current).toHaveProperty('getOptimisticRecord') + expect(result.current).toHaveProperty('getOptimisticRecords') + expect(result.current).toHaveProperty('subscribeOptimisticState') + expect(result.current).toHaveProperty('subscribeTx') + expect(result.current).toHaveProperty('syncAdapter') + expect(result.current).toHaveProperty('_') + }) + + it('should provide the canonical state with no pending transactions', async () => { + const { result } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + const optimisticState = result.current.getOptimisticState() + const currentState = stash.get() + + expect(optimisticState.config).toEqual(currentState.config) + expect(optimisticState.records).toEqual(currentState.records) + }) + + // TODO: not working until eth_getProof supported + it.todo('should update the optimistic state when a transaction is pending', async () => { + const { result } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + const optimisticState = result.current.getOptimisticState() + const currentState = stash.get() + + expect(optimisticState.config).toEqual(currentState.config) + expect(optimisticState.records).toEqual(currentState.records) + + const [, record] = randomRecord() + await sessionClient.writeContract({ + account: PREFUNDED_ACCOUNTS[0], + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(record)), + }) + + await waitFor(() => { + expect(result.current.getOptimisticState().records).not.toEqual(currentState.records) + }) + + // Optimistic state should be updated with the new record + expect( + result.current.getOptimisticRecord({ + table: config.tables.app__TestTable, + key: { key1: record.key1, key2: record.key2 }, + }), + ).toEqual(record) + }) + + it('should provide all handler methods with correct types', () => { + const { result } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + assert(result.current, 'result.current is undefined') + expect(typeof result.current.getOptimisticState).toBe('function') + expect(typeof result.current.getOptimisticRecord).toBe('function') + expect(typeof result.current.getOptimisticRecords).toBe('function') + expect(typeof result.current.subscribeOptimisticState).toBe('function') + expect(typeof result.current.subscribeTx).toBe('function') + expect(typeof result.current.syncAdapter).toBe('function') + }) + + // TODO: not working until eth_getProof supported + it.todo('should handle subscription to optimistic state', async () => { + const { result } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + let notificationCount = 0 + const unsubscribe = result.current.subscribeOptimisticState({ + subscriber: () => { + notificationCount++ + }, + }) + + expect(typeof unsubscribe).toBe('function') + expect(notificationCount).toBe(0) + + const [, record] = randomRecord() + await sessionClient.writeContract({ + account: PREFUNDED_ACCOUNTS[0], + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(record)), + }) + + await waitFor(() => { + expect(notificationCount).toBe(1) + }) + + // Cleanup + unsubscribe() + }) + + // TODO: not working until eth_getProof supported + it.todo('should handle transaction subscription', async () => { + const { result } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + const txStatuses: any[] = [] + const unsubscribe = result.current?.subscribeTx({ + subscriber: (status) => { + txStatuses.push(status) + }, + }) + + expect(typeof unsubscribe).toBe('function') + expect(txStatuses.length).toBe(0) + + const [, record] = randomRecord() + await sessionClient.writeContract({ + account: PREFUNDED_ACCOUNTS[0], + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(record)), + }) + + await waitFor(() => { + expect(txStatuses.length).toBe(4) + }) + + // Cleanup + unsubscribe() + }) + + it('should provide access to internal properties', async () => { + const { result } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + const internal = result.current?._ + expect(internal).toHaveProperty('optimisticClient') + expect(internal).toHaveProperty('internalClient') + expect(internal).toHaveProperty('cleanup') + expect(typeof internal.cleanup).toBe('function') + }) + + it('should cleanup properly when provider unmounts', async () => { + const { unmount } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + await waitFor(() => { + // Hook is mounted and working + }) + + // Should not throw when unmounting + expect(() => unmount()).not.toThrow() + }) + + it('should provide consistent state across multiple hook calls', async () => { + const { result: result1 } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + const { result: result2 } = renderHook(() => useOptimisticWrapper(), { wrapper: createWrapper }) + + await waitFor(() => { + expect(result1.current).toBeDefined() + expect(result2.current).toBeDefined() + }) + + const state1 = result1.current?.getOptimisticState() + const state2 = result2.current?.getOptimisticState() + + expect(state1).toEqual(state2) + }) +}) diff --git a/bundler-packages/mud/src/react/useOptimisticWrapper.tsx b/bundler-packages/mud/src/react/useOptimisticWrapper.tsx new file mode 100644 index 0000000000..d8c28222e8 --- /dev/null +++ b/bundler-packages/mud/src/react/useOptimisticWrapper.tsx @@ -0,0 +1,72 @@ +import type { StoreConfig } from '@latticexyz/stash/internal' +import { SyncProvider } from '@latticexyz/store-sync/react' +import React, { createContext, useContext, useEffect, type ReactNode } from 'react' +import type { Client } from 'viem' +import { + type CreateOptimisticHandlerOptions, + type CreateOptimisticHandlerResult, + createOptimisticHandler, +} from '../createOptimisticHandler.js' +import type { SessionClient } from '../types.js' + +interface OptimisticWrapperContextType extends CreateOptimisticHandlerResult {} +const OptimisticWrapperContext = createContext | undefined>(undefined) + +interface OptimisticWrapperProviderProps extends CreateOptimisticHandlerOptions { + children: ReactNode +} + +// Create a global registry for handlers by key +// We need to do that work now as otherwise we get both multiple writeContract wrappers (next one will wrap the previous wrapper itself) and multiple txPool subscriptions +// that apply the same txs inconsistently +// This is awful and obviously needs to be fixed as soon as there is a better solution +const handlerRegistry = new WeakMap>() + +/** + * Provider component that initializes the optimistic handler and makes its utilities available + * to child components via the OptimisticWrapperContext. + */ +export const OptimisticWrapperProvider: React.FC> = ({ + children, + ...options +}) => { + const { client, storeAddress, stash, sync, config, loggingLevel } = options + + // Get or create handler from registry + let handlerResult = handlerRegistry.get(client) + if (!handlerResult) { + handlerResult = createOptimisticHandler({ client, storeAddress, stash, sync, config, loggingLevel }) + handlerRegistry.set(client, handlerResult) + } + + useEffect(() => { + return () => { + handlerResult._.cleanup().catch(console.error) + } + }, []) + + if (sync && (sync.enabled === undefined || sync.enabled) && client.chain) { + return ( + + + {children} + + + ) + } + + return {children} +} + +/** + * Custom hook to access the optimistic handler utilities from the OptimisticContext. + */ +export const useOptimisticWrapper = (): OptimisticWrapperContextType => { + const context = useContext(OptimisticWrapperContext) as OptimisticWrapperContextType + return context +} diff --git a/bundler-packages/mud/src/subscribeTx.spec.ts b/bundler-packages/mud/src/subscribeTx.spec.ts new file mode 100644 index 0000000000..0e772f1afe --- /dev/null +++ b/bundler-packages/mud/src/subscribeTx.spec.ts @@ -0,0 +1,225 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { type TxStatus, type TxStatusSubscriber, notifyTxStatus, subscribeTxStatus } from './subscribeTx.js' + +describe('subscribeTx', () => { + let subscribers: Set + let mockSubscriber1: TxStatusSubscriber + let mockSubscriber2: TxStatusSubscriber + + beforeEach(() => { + subscribers = new Set() + mockSubscriber1 = vi.fn() + mockSubscriber2 = vi.fn() + }) + + describe('subscribeTxStatus', () => { + it('should add subscriber to the set', () => { + const subscribe = subscribeTxStatus(subscribers) + + expect(subscribers.size).toBe(0) + + subscribe(mockSubscriber1) + + expect(subscribers.size).toBe(1) + expect(subscribers.has(mockSubscriber1)).toBe(true) + }) + + it('should return unsubscribe function', () => { + const subscribe = subscribeTxStatus(subscribers) + const unsubscribe = subscribe(mockSubscriber1) + + expect(typeof unsubscribe).toBe('function') + expect(subscribers.has(mockSubscriber1)).toBe(true) + + unsubscribe() + + expect(subscribers.has(mockSubscriber1)).toBe(false) + expect(subscribers.size).toBe(0) + }) + + it('should handle multiple subscribers', () => { + const subscribe = subscribeTxStatus(subscribers) + + const unsubscribe1 = subscribe(mockSubscriber1) + const unsubscribe2 = subscribe(mockSubscriber2) + + expect(subscribers.size).toBe(2) + expect(subscribers.has(mockSubscriber1)).toBe(true) + expect(subscribers.has(mockSubscriber2)).toBe(true) + + unsubscribe1() + + expect(subscribers.size).toBe(1) + expect(subscribers.has(mockSubscriber1)).toBe(false) + expect(subscribers.has(mockSubscriber2)).toBe(true) + + unsubscribe2() + + expect(subscribers.size).toBe(0) + }) + }) + + describe('notifyTxStatus', () => { + it('should notify all subscribers with simulating status', () => { + subscribers.add(mockSubscriber1) + subscribers.add(mockSubscriber2) + + const notify = notifyTxStatus(subscribers) + const status: TxStatus = { + id: crypto.randomUUID(), + timestamp: Date.now(), + status: 'simulating', + } + + notify(status) + + expect(mockSubscriber1).toHaveBeenCalledWith(status) + expect(mockSubscriber2).toHaveBeenCalledWith(status) + }) + + it('should notify all subscribers with optimistic status', () => { + subscribers.add(mockSubscriber1) + subscribers.add(mockSubscriber2) + + const notify = notifyTxStatus(subscribers) + const status: TxStatus = { + id: crypto.randomUUID(), + timestamp: Date.now(), + status: 'optimistic', + } + + notify(status) + + expect(mockSubscriber1).toHaveBeenCalledWith(status) + expect(mockSubscriber2).toHaveBeenCalledWith(status) + }) + + it('should notify all subscribers with confirmed status and hash', () => { + subscribers.add(mockSubscriber1) + subscribers.add(mockSubscriber2) + + const notify = notifyTxStatus(subscribers) + const status: TxStatus = { + id: crypto.randomUUID(), + timestamp: Date.now(), + status: 'confirmed', + hash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', + } + + notify(status) + + expect(mockSubscriber1).toHaveBeenCalledWith(status) + expect(mockSubscriber2).toHaveBeenCalledWith(status) + }) + + it('should notify all subscribers with reverted status and hash', () => { + subscribers.add(mockSubscriber1) + subscribers.add(mockSubscriber2) + + const notify = notifyTxStatus(subscribers) + const status: TxStatus = { + id: crypto.randomUUID(), + timestamp: Date.now(), + status: 'reverted', + hash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', + } + + notify(status) + + expect(mockSubscriber1).toHaveBeenCalledWith(status) + expect(mockSubscriber2).toHaveBeenCalledWith(status) + }) + + it('should handle empty subscriber set', () => { + const notify = notifyTxStatus(subscribers) + const status: TxStatus = { + id: crypto.randomUUID(), + timestamp: Date.now(), + status: 'simulating', + } + + // Should not throw + expect(() => notify(status)).not.toThrow() + }) + + it('should handle subscriber errors gracefully', () => { + const errorSubscriber = vi.fn().mockImplementation(() => { + throw new Error('Subscriber error') + }) + const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}) + + subscribers.add(errorSubscriber) + subscribers.add(mockSubscriber1) + + const notify = notifyTxStatus(subscribers) + const status: TxStatus = { + id: crypto.randomUUID(), + timestamp: Date.now(), + status: 'simulating', + } + + // Should not throw and should continue notifying other subscribers + expect(() => notify(status)).not.toThrow() + + expect(errorSubscriber).toHaveBeenCalledWith(status) + expect(mockSubscriber1).toHaveBeenCalledWith(status) + expect(consoleSpy).toHaveBeenCalledWith('TxStatus subscriber failed:', expect.any(Error)) + + consoleSpy.mockRestore() + }) + }) + + describe('integration', () => { + it('should work together for complete subscription lifecycle', () => { + const subscribe = subscribeTxStatus(subscribers) + const notify = notifyTxStatus(subscribers) + + // Subscribe + const unsubscribe1 = subscribe(mockSubscriber1) + const unsubscribe2 = subscribe(mockSubscriber2) + + // Notify simulating + const simulatingStatus: TxStatus = { + id: crypto.randomUUID(), + timestamp: Date.now(), + status: 'simulating', + } + notify(simulatingStatus) + + expect(mockSubscriber1).toHaveBeenCalledWith(simulatingStatus) + expect(mockSubscriber2).toHaveBeenCalledWith(simulatingStatus) + + // Notify optimistic with hash + const optimisticStatus: TxStatus = { + id: simulatingStatus.id, // Same transaction + timestamp: Date.now(), + status: 'optimistic', + hash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', + } + notify(optimisticStatus) + + expect(mockSubscriber1).toHaveBeenCalledWith(optimisticStatus) + expect(mockSubscriber2).toHaveBeenCalledWith(optimisticStatus) + + // Unsubscribe one + unsubscribe1() + + // Notify confirmed + const confirmedStatus: TxStatus = { + id: simulatingStatus.id, // Same transaction + timestamp: Date.now(), + status: 'confirmed', + hash: optimisticStatus.hash, + } + notify(confirmedStatus) + + expect(mockSubscriber1).toHaveBeenCalledTimes(2) // Not called again + expect(mockSubscriber2).toHaveBeenCalledWith(confirmedStatus) + expect(mockSubscriber2).toHaveBeenCalledTimes(3) + + // Cleanup + unsubscribe2() + expect(subscribers.size).toBe(0) + }) + }) +}) diff --git a/bundler-packages/mud/src/subscribeTx.ts b/bundler-packages/mud/src/subscribeTx.ts new file mode 100644 index 0000000000..7fc9476c2f --- /dev/null +++ b/bundler-packages/mud/src/subscribeTx.ts @@ -0,0 +1,38 @@ +import type { Hex } from 'viem' + +export type TxStatus = { + id: string + timestamp: number +} & ( + | { + status: + | 'simulating' // optimistic tx running + | 'optimistic' // optimistic tx mined + } + | { + status: + | 'optimistic' // in this case tx has been broadcast as well as we have a tx hash + | 'confirmed' // tx mined and confirmed + | 'reverted' // tx reverted + hash: Hex + } +) + +export type TxStatusSubscriber = (status: TxStatus) => void + +export const subscribeTxStatus = (subscribers: Set) => (subscriber: TxStatusSubscriber) => { + subscribers.add(subscriber) + return () => { + subscribers.delete(subscriber) + } +} + +export const notifyTxStatus = (subscribers: Set) => (status: TxStatus) => { + subscribers.forEach((subscriber) => { + try { + subscriber(status) + } catch (error) { + console.warn('TxStatus subscriber failed:', error) + } + }) +} diff --git a/bundler-packages/mud/src/types.ts b/bundler-packages/mud/src/types.ts new file mode 100644 index 0000000000..0e83362cf9 --- /dev/null +++ b/bundler-packages/mud/src/types.ts @@ -0,0 +1,7 @@ +import type { Address, Chain, Client, Transport, WriteContractParameters, WriteContractReturnType } from 'viem' +import type { BundlerClient, SmartAccount } from 'viem/account-abstraction' + +export type SessionClient = BundlerClient & { + readonly userAddress: Address + writeContract: (args: WriteContractParameters) => Promise +} diff --git a/bundler-packages/mud/test/config.ts b/bundler-packages/mud/test/config.ts new file mode 100644 index 0000000000..be8589c4fd --- /dev/null +++ b/bundler-packages/mud/test/config.ts @@ -0,0 +1,23 @@ +import { defineStore } from '@latticexyz/store' + +// Copied from https://github.com/latticexyz/mud/blob/582f7187/packages/cli/scripts/generate-test-tables.ts#L11 +export const config = defineStore({ + namespace: 'app', + tables: { + TestTable: { + schema: { + key1: 'uint200', + key2: 'uint8', + val1: 'uint200', + val2: 'uint8', + val3: 'uint16', + val4: 'bool', + val5: 'address', + dyn1: 'string', + dyn2: 'bytes', + dyn3: 'int16[]', + }, + key: ['key1', 'key2'], + }, + }, +}) diff --git a/bundler-packages/mud/test/prepare.ts b/bundler-packages/mud/test/prepare.ts new file mode 100644 index 0000000000..aaf5300bd8 --- /dev/null +++ b/bundler-packages/mud/test/prepare.ts @@ -0,0 +1,71 @@ +import { type TableRecord, createStash } from '@latticexyz/stash/internal' +import { storeEventsAbi } from '@latticexyz/store' +import { createStorageAdapter } from '@latticexyz/store-sync/internal' +import { tevmDefault } from '@tevm/common' +import { createTevmTransport, tevmContract, tevmDeploy } from '@tevm/memory-client' +import { MUDTestSystem } from '@tevm/test-utils' +import { PREFUNDED_ACCOUNTS } from '@tevm/utils' +import { type Log, createClient, decodeEventLog } from 'viem' +import { createBundlerClient } from 'viem/account-abstraction' +import { writeContract } from 'viem/actions' +import { config } from './config.js' +import { state } from './state.js' + +export const testContract = MUDTestSystem.withAddress('0x5FbDB2315678afecb367f032d93F642f64180aa3') +export const stash = createStash(config) + +export const client = createClient({ + chain: tevmDefault, + transport: createTevmTransport({ common: tevmDefault, miningConfig: { type: 'manual' } }), + account: PREFUNDED_ACCOUNTS[0], +}) +export const sessionClient = createBundlerClient({ + client, + chain: tevmDefault, + transport: createTevmTransport({ common: tevmDefault }), +}).extend(() => ({ + writeContract: (args) => writeContract(client, args), +})) + +const adapter = createStorageAdapter({ stash }) + +export const writeRecords = async (records: TableRecord[]) => { + const storeEventLogs: Log[] = [] + + for (const values of records) { + const { logs } = await tevmContract(client, { + // @ts-expect-error - cannot type args + ...testContract.write.set(...Object.values(values)), + addToBlockchain: true, + }) + + logs?.forEach( + (log) => + log.address.toLowerCase() === testContract.address.toLowerCase() && + storeEventLogs.push({ + // @ts-expect-error - Source provides no match for required element at position 0 in target. + ...decodeEventLog({ abi: storeEventsAbi, data: log.data, topics: log.topics }), + address: testContract.address, + data: log.data, + // @ts-expect-error - Source provides no match for required element at position 0 in target. + topics: log.topics, + }), + ) + } + + // @ts-expect-error - Log -> StorageAdapterLog type + await adapter({ logs: storeEventLogs, blockNumber: 1n }) + + return { records } +} + +export const prepare = async ({ count = 10 }: { count?: number } = {}) => { + await tevmDeploy(client, { + abi: testContract.abi, + bytecode: testContract.bytecode, + addToBlockchain: true, + }) + + const records = Object.values(state.records.app.TestTable).slice(0, count) + return await writeRecords(records) +} diff --git a/bundler-packages/mud/test/state.ts b/bundler-packages/mud/test/state.ts new file mode 100644 index 0000000000..12f5b1bde6 --- /dev/null +++ b/bundler-packages/mud/test/state.ts @@ -0,0 +1,62 @@ +import { encodeKey, getKeySchema, getSchemaTypes } from '@latticexyz/protocol-parser/internal' +import type { State, TableRecord, TableRecords } from '@latticexyz/stash/internal' +import { bytesToHex, concatHex } from 'viem' +import { config } from './config.js' + +const randomKey = () => { + const key1 = BigInt(Math.floor(Math.random() * 1000)) + const key2 = Math.floor(Math.random() * 100) + return { + key: concatHex( + encodeKey(getSchemaTypes(getKeySchema(config.tables.app__TestTable)), { + key1, + key2, + }), + ), + key1, + key2, + } +} + +export const randomRecord = (): [string, TableRecord] => { + const { key, key1, key2 } = randomKey() + return [ + key, + { + key1, + key2, + val1: BigInt(Math.floor(Math.random() * 1000)), + val2: Math.floor(Math.random() * 100), + val3: Math.floor(Math.random() * 100), + val4: Math.random() > 0.5, + val5: bytesToHex(new Uint8Array(20).map(() => Math.floor(Math.random() * 256))), + dyn1: Array.from({ length: Math.floor(Math.random() * 100) }, (_, i) => String.fromCharCode(i)).join(''), + dyn2: bytesToHex(new Uint8Array(Math.floor(Math.random() * 100) + 1).map(() => Math.floor(Math.random() * 256))), + dyn3: Array.from({ length: Math.floor(Math.random() * 100) }, () => Math.floor(Math.random() * 100) - 50), + }, + ] +} + +// TODO: function that returns n random records with unique keys +const getRandomRecords = (n: number): TableRecords => { + const records = new Map>() + const usedKeys = new Set() + + while (records.size < n) { + const record = randomRecord() + if (!usedKeys.has(record[0])) { + usedKeys.add(record[0]) + records.set(record[0], record[1]) + } + } + + return Object.fromEntries(records) +} +export const state = { + config: { app: { TestTable: config.tables.app__TestTable } }, + records: { + app: { + TestTable: getRandomRecords(100), + }, + }, +} as const satisfies State diff --git a/bundler-packages/mud/tsconfig.json b/bundler-packages/mud/tsconfig.json new file mode 100644 index 0000000000..bab82acb21 --- /dev/null +++ b/bundler-packages/mud/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@tevm/tsconfig/base.json", + "compilerOptions": { + "outDir": "types", + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "jsx": "react-jsx" + }, + "include": ["src", "src/**/*.json", "package.json"] +} diff --git a/bundler-packages/mud/tsup.config.ts b/bundler-packages/mud/tsup.config.ts new file mode 100644 index 0000000000..0216316ac8 --- /dev/null +++ b/bundler-packages/mud/tsup.config.ts @@ -0,0 +1,5 @@ +import { createTsUpOptions } from '@tevm/tsupconfig' +export default createTsUpOptions({ + entry: ['src/index.ts', 'src/react/index.ts'], + target: 'browser', +}) diff --git a/bundler-packages/mud/typedoc.json b/bundler-packages/mud/typedoc.json new file mode 100644 index 0000000000..93f5d67354 --- /dev/null +++ b/bundler-packages/mud/typedoc.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "out": "./docs", + "entryPoints": ["./src/index.ts"], + "plugin": ["typedoc-plugin-markdown"], + "gitRevision": "main" +} diff --git a/bundler-packages/mud/vitest.config.ts b/bundler-packages/mud/vitest.config.ts new file mode 100644 index 0000000000..9937835add --- /dev/null +++ b/bundler-packages/mud/vitest.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vitest/config' + +// https://vitest.dev/config/ - for docs +export default defineConfig({ + test: { + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + environment: 'node', + testTimeout: 20_000, + coverage: { + reporter: ['text', 'json-summary', 'json'], + thresholds: { + autoUpdate: true, + lines: 59.82, + functions: 70.49, + branches: 89.78, + statements: 59.82, + }, + }, + }, +}) diff --git a/examples/mud/package.json b/examples/mud/package.json index a2d36f0ba2..3309a704dc 100644 --- a/examples/mud/package.json +++ b/examples/mud/package.json @@ -1,5 +1,5 @@ { - "name": "mud-template-react", + "name": "@tevm/example-mud", "private": true, "scripts": { "build": "pnpm recursive run build", diff --git a/examples/mud/packages/client/package.json b/examples/mud/packages/client/package.json index 2e95d0fc96..aeffdb08e1 100644 --- a/examples/mud/packages/client/package.json +++ b/examples/mud/packages/client/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@latticexyz/common": "2.2.21", + "@latticexyz/config": "^2.2.21", "@latticexyz/entrykit": "2.2.21", "@latticexyz/explorer": "2.2.21", "@latticexyz/react": "2.2.21", @@ -21,12 +22,14 @@ "@latticexyz/utils": "2.2.21", "@latticexyz/world": "2.2.21", "@tanstack/react-query": "^5.63.0", + "@tevm/mud": "link:../../bundler-packages/mud", "contracts": "workspace:*", "react": "18.2.0", "react-dom": "18.2.0", "react-error-boundary": "5.0.0", + "sonner": "^2.0.3", "tailwind-merge": "^2.6.0", - "viem": "2.23.2", + "viem": "2.29.2", "wagmi": "2.12.11" }, "devDependencies": { diff --git a/examples/mud/packages/client/src/App.tsx b/examples/mud/packages/client/src/App.tsx index ddc7bae21c..40ddd12c47 100644 --- a/examples/mud/packages/client/src/App.tsx +++ b/examples/mud/packages/client/src/App.tsx @@ -8,12 +8,16 @@ import { GameMap } from "./game/GameMap"; import { useWorldContract } from "./mud/useWorldContract"; import { Synced } from "./mud/Synced"; import { useSync } from "@latticexyz/store-sync/react"; +import { useTransactionToasts } from "./ui/useTransactionToasts"; +import { useOptimisticRecords } from "@tevm/mud/react"; export function App() { - const players = useRecords({ stash, table: mudConfig.tables.app__Position }); + const players = useOptimisticRecords({ table: mudConfig.tables.app__Position }); + useTransactionToasts(); const sync = useSync(); const worldContract = useWorldContract(); + const onMove = useMemo( () => sync.data && worldContract diff --git a/examples/mud/packages/client/src/Providers.tsx b/examples/mud/packages/client/src/Providers.tsx index ed96171dbb..7c87921436 100644 --- a/examples/mud/packages/client/src/Providers.tsx +++ b/examples/mud/packages/client/src/Providers.tsx @@ -1,12 +1,13 @@ -import { WagmiProvider } from "wagmi"; +import { useClient, WagmiProvider } from "wagmi"; import { QueryClientProvider, QueryClient } from "@tanstack/react-query"; import { ReactNode } from "react"; -import { createSyncAdapter } from "@latticexyz/store-sync/internal"; -import { SyncProvider } from "@latticexyz/store-sync/react"; import { stash } from "./mud/stash"; -import { defineConfig, EntryKitProvider } from "@latticexyz/entrykit/internal"; +import { defineConfig, useSessionClient, EntryKitProvider } from "@latticexyz/entrykit/internal"; import { wagmiConfig } from "./wagmiConfig"; import { chainId, getWorldAddress, startBlock } from "./common"; +import { Toaster } from "sonner"; +import { OptimisticWrapperProvider } from "@tevm/mud/react"; +import { SessionClient } from "@tevm/mud"; const queryClient = new QueryClient(); @@ -14,20 +15,34 @@ export type Props = { children: ReactNode; }; +function OptimisticEntryKitProvider({ children }: { children: ReactNode }) { + const worldAddress = getWorldAddress(); + const publicClient = useClient() + const { data: sessionClient } = useSessionClient(); + + return + {/* @ts-expect-error - react versions mismatch */} + {children} + +} + export function Providers({ children }: Props) { const worldAddress = getWorldAddress(); + return ( - - {children} - + + + {children} + diff --git a/examples/mud/packages/client/src/mud/useSyncStatus.ts b/examples/mud/packages/client/src/mud/useSyncStatus.ts index 378801064b..260a96ac4f 100644 --- a/examples/mud/packages/client/src/mud/useSyncStatus.ts +++ b/examples/mud/packages/client/src/mud/useSyncStatus.ts @@ -1,8 +1,8 @@ import { stash } from "./stash"; import { initialProgress, SyncProgress } from "@latticexyz/store-sync/internal"; +import { useRecord } from "@latticexyz/stash/react" import { SyncStep } from "@latticexyz/store-sync"; import { useMemo } from "react"; -import { useRecord } from "@latticexyz/stash/react"; export function useSyncStatus() { const progress = useRecord({ diff --git a/examples/mud/packages/client/src/ui/useTransactionToasts.tsx b/examples/mud/packages/client/src/ui/useTransactionToasts.tsx new file mode 100644 index 0000000000..7a5bbc3e8c --- /dev/null +++ b/examples/mud/packages/client/src/ui/useTransactionToasts.tsx @@ -0,0 +1,85 @@ +import { useEffect, useRef } from 'react' +import { toast } from 'sonner' // or whatever toast library you're using +import type { TxStatus } from '@tevm/mud' +import { useOptimisticWrapper } from '@tevm/mud/react'; + +export const useTransactionToasts = () => { + const optimisticWrapper = useOptimisticWrapper(); + const activeToasts = useRef>(new Map()) // txId -> toastId + + useEffect(() => { + if (!optimisticWrapper?.subscribeTx) return + const { subscribeTx } = optimisticWrapper + + const unsubscribe = subscribeTx({ + subscriber: (progress: TxStatus) => { + const { id, status} = progress + const existingToastId = activeToasts.current.get(id) + + switch (status) { + case 'simulating': { + const toastId = toast.loading('Simulating transaction...', { + id: existingToastId, + }) + activeToasts.current.set(id, toastId) + break + } + + case 'optimistic': { + if (existingToastId) { + const description = 'hash' in progress + ? `Waiting for confirmation... (${progress.hash.slice(0, 8)}...)` + : 'Waiting for confirmation...' + + toast.success('Updated optimistic state.', { + id: existingToastId, + description, + duration: Infinity, + }) + } + break + } + + case 'confirmed': { + if (existingToastId) { + toast.success('Transaction confirmed!', { + id: existingToastId, + description: progress.hash, + style: { + backgroundColor: '#f7decd', + borderColor: '#f7decd', + } + }) + + setTimeout(() => { + toast.dismiss(existingToastId) + activeToasts.current.delete(id) + }, 3000) + } + break + } + + case 'reverted': { + if (existingToastId) { + const toastId = toast.error(`Transaction reverted (${progress.hash.slice(0, 8)}...)`, { + id: existingToastId, + }) + + setTimeout(() => { + toast.dismiss(toastId) + activeToasts.current.delete(id) + }, 5000) + } + break + } + } + } + }) + + return () => { + unsubscribe() + activeToasts.current.forEach((toastId) => toast.dismiss(toastId)) + activeToasts.current.clear() + } + }, [optimisticWrapper?.subscribeTx]) +} \ No newline at end of file diff --git a/examples/mud/packages/client/tsconfig.json b/examples/mud/packages/client/tsconfig.json index cb627bbf2c..fc6bb3ff7f 100644 --- a/examples/mud/packages/client/tsconfig.json +++ b/examples/mud/packages/client/tsconfig.json @@ -5,7 +5,12 @@ "target": "ESNext", "lib": ["ESNext", "DOM"], "jsx": "react-jsx", - "jsxImportSource": "react" + "jsxImportSource": "react", + "baseUrl": ".", + "paths": { + "@tevm/mud/react": ["../../../../bundler-packages/mud/src/react/index.ts"], + "@tevm/mud": ["../../../../bundler-packages/mud/src/index.ts"] + } }, "include": ["src"] } diff --git a/examples/mud/packages/client/vite.config.ts b/examples/mud/packages/client/vite.config.ts index fe402740c2..3f43c4f8a2 100644 --- a/examples/mud/packages/client/vite.config.ts +++ b/examples/mud/packages/client/vite.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import { mud } from "vite-plugin-mud"; +import path from "path"; export default defineConfig({ plugins: [react(), mud({ worldsFile: "../contracts/worlds.json" })], @@ -9,4 +10,13 @@ export default defineConfig({ minify: true, sourcemap: true, }, + resolve: { + alias: { + "@tevm/mud/react": path.resolve(__dirname, "../../../../bundler-packages/mud/src/react/index.ts"), + "@tevm/mud": path.resolve(__dirname, "../../../../bundler-packages/mud/src/index.ts"), + }, + }, + optimizeDeps: { + exclude: ["@tevm/mud", "@tevm/mud/react"], + }, }); diff --git a/examples/mud/pnpm-lock.yaml b/examples/mud/pnpm-lock.yaml new file mode 100644 index 0000000000..f43b1cdc00 --- /dev/null +++ b/examples/mud/pnpm-lock.yaml @@ -0,0 +1,14740 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@latticexyz/cli': + specifier: 2.2.21 + version: 2.2.21(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(better-sqlite3@8.7.0)(bufferutil@4.0.9)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/common': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/explorer': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(@tanstack/query-core@5.76.0)(@types/react-dom@18.2.7)(@types/react@18.2.22)(asn1.js@5.4.1)(bufferutil@4.0.9)(kysely@0.26.3)(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(rollup@4.40.2)(sql.js@1.13.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@latticexyz/store-indexer': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(kysely@0.26.3)(react@18.2.0)(sql.js@1.13.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@types/debug': + specifier: 4.1.7 + version: 4.1.7 + '@typescript-eslint/eslint-plugin': + specifier: 7.1.1 + version: 7.1.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/parser': + specifier: 7.1.1 + version: 7.1.1(eslint@8.57.0)(typescript@5.4.2) + eslint: + specifier: 8.57.0 + version: 8.57.0 + mprocs: + specifier: ^0.7.1 + version: 0.7.2 + shx: + specifier: ^0.3.4 + version: 0.3.4 + typescript: + specifier: 5.4.2 + version: 5.4.2 + + packages/client: + dependencies: + '@latticexyz/common': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/entrykit': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react-dom@18.2.7)(@types/react@18.2.22)(asn1.js@5.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(zod@3.23.8) + '@latticexyz/explorer': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(@tanstack/query-core@5.76.0)(@types/react-dom@18.2.7)(@types/react@18.2.22)(asn1.js@5.4.1)(bufferutil@4.0.9)(kysely@0.26.3)(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(rollup@4.40.2)(sql.js@1.13.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@latticexyz/react': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': + specifier: 2.2.21 + version: 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/stash': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store-sync': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/utils': + specifier: 2.2.21 + version: 2.2.21 + '@latticexyz/world': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@tanstack/react-query': + specifier: ^5.63.0 + version: 5.76.1(react@18.2.0) + '@tevm/mud': + specifier: link:../../bundler-packages/mud + version: link:../../bundler-packages/mud + contracts: + specifier: workspace:* + version: link:../contracts + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-error-boundary: + specifier: 5.0.0 + version: 5.0.0(react@18.2.0) + sonner: + specifier: ^2.0.3 + version: 2.0.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + viem: + specifier: 2.29.2 + version: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: + specifier: 2.12.11 + version: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + devDependencies: + '@types/react': + specifier: 18.2.22 + version: 18.2.22 + '@types/react-dom': + specifier: 18.2.7 + version: 18.2.7 + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.4.1(vite@6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1)) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.21(postcss@8.5.3) + eslint-plugin-react: + specifier: 7.31.11 + version: 7.31.11(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: 4.6.0 + version: 4.6.0(eslint@8.57.0) + postcss: + specifier: ^8.4.49 + version: 8.5.3 + tailwindcss: + specifier: ^3.4.17 + version: 3.4.17 + vite: + specifier: ^6.0.7 + version: 6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1) + vite-plugin-mud: + specifier: 2.2.21 + version: 2.2.21(vite@6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1)) + + packages/contracts: + dependencies: + '@latticexyz/cli': + specifier: 2.2.21 + version: 2.2.21(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(better-sqlite3@8.7.0)(bufferutil@4.0.9)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/entrykit': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react-dom@18.2.7)(@types/react@18.2.22)(asn1.js@5.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': + specifier: 2.2.21 + version: 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world-modules': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)) + devDependencies: + ds-test: + specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + forge-std: + specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + prettier: + specifier: 3.2.5 + version: 3.2.5 + prettier-plugin-solidity: + specifier: 1.3.1 + version: 1.3.1(prettier@3.2.5) + solhint: + specifier: ^3.3.7 + version: 3.6.2(typescript@5.4.2) + solhint-config-mud: + specifier: 2.2.21 + version: 2.2.21 + solhint-plugin-mud: + specifier: 2.2.21 + version: 2.2.21 + +packages: + + '@account-abstraction/contracts@0.7.0': + resolution: {integrity: sha512-Bt/66ilu3u8I9+vFZ9fTd+cWs55fdb9J5YKfrhsrFafH1drkzwuCSL/xEot1GGyXXNJLQuXbMRztQPyelNbY1A==} + + '@adraffy/ens-normalize@1.11.0': + resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@ark/schema@0.3.3': + resolution: {integrity: sha512-SA4QggzaKHxkNB+faWmhSJbCPMHmGBCpb6dNG3VIt5VOMZhZJJSD76/tOUzQvvJNzztHkTakrTZea+iKsEDcRQ==} + + '@ark/util@0.2.2': + resolution: {integrity: sha512-ryZ4+f3SlReQRH9nTFLK5EeU1Pan5ZfS+ACPSk0ir5uujJouFmvOdnkVfeAJAgeOb3kKmUM9kjelv1cwH2ScZg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-kms@3.808.0': + resolution: {integrity: sha512-XWuy1JIXTO3IOMPvdROSU7kQ758kFVAZUcvYgUmvleWQMguG21sxRHnX+WDuWm4Q8sP/c/1AFK8qKE2Ws0HKVw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.808.0': + resolution: {integrity: sha512-NxGomD0x9q30LPOXf4x7haOm6l2BJdLEzpiC/bPEXUkf2+4XudMQumMA/hDfErY5hCE19mFAouoO465m3Gl3JQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.808.0': + resolution: {integrity: sha512-+nTmxJVIPtAarGq9Fd/uU2qU/Ngfb9EntT0/kwXdKKMI0wU9fQNWi10xSTVeqOtzWERbQpOJgBAdta+v3W7cng==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.808.0': + resolution: {integrity: sha512-snPRQnwG9PV4kYHQimo1tenf7P974RcdxkHUThzWSxPEV7HpjxTFYNWGlKbOKBhL4AcgeCVeiZ/j+zveF2lEPA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.808.0': + resolution: {integrity: sha512-gNXjlx3BIUeX7QpVqxbjBxG6zm45lC39QvUIo92WzEJd2OTPcR8TU0OTTsgq/lpn2FrKcISj5qXvhWykd41+CA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.808.0': + resolution: {integrity: sha512-Y53CW0pCvFQQEvtVFwExCCMbTg+6NOl8b3YOuZVzPmVmDoW7M1JIn9IScesqoGERXL3VoXny6nYTsZj+vfpp7Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.808.0': + resolution: {integrity: sha512-lASHlXJ6U5Cpnt9Gs+mWaaSmWcEibr1AFGhp+5UNvfyd+UU2Oiwgbo7rYXygmaVDGkbfXEiTkgYtoNOBSddnWQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.808.0': + resolution: {integrity: sha512-ZLqp+xsQUatoo8pMozcfLwf/pwfXeIk0w3n0Lo/rWBgT3RcdECmmPCRcnkYBqxHQyE66aS9HiJezZUwMYPqh6w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.808.0': + resolution: {integrity: sha512-gWZByAokHX+aps1+syIW/hbKUBrjE2RpPRd/RGQvrBbVVgwsJzsHKsW0zy1B6mgARPG6IahmSUMjNkBCVsiAgw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.808.0': + resolution: {integrity: sha512-SsGa1Gfa05aJM/qYOtHmfg0OKKW6Fl6kyMCcai63jWDVDYy0QSHcesnqRayJolISkdsVK6bqoWoFcPxiopcFcg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.804.0': + resolution: {integrity: sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.804.0': + resolution: {integrity: sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.804.0': + resolution: {integrity: sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.808.0': + resolution: {integrity: sha512-VckV6l5cf/rL3EtgzSHVTTD4mI0gd8UxDDWbKJsxbQ2bpNPDQG2L1wWGLaolTSzjEJ5f3ijDwQrNDbY9l85Mmg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.808.0': + resolution: {integrity: sha512-NparPojwoBul7XPCasy4psFMJbw7Ys4bz8lVB93ljEUD4VV7mM7zwK27Uhz20B8mBFGmFEoAprPsVymJcK9Vcw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.808.0': + resolution: {integrity: sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.808.0': + resolution: {integrity: sha512-PsfKanHmnyO7FxowXqxbLQ+QjURCdSGxyhUiSdZbfvlvme/wqaMyIoMV/i4jppndksoSdPbW2kZXjzOqhQF+ew==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.804.0': + resolution: {integrity: sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.808.0': + resolution: {integrity: sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.804.0': + resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.804.0': + resolution: {integrity: sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==} + + '@aws-sdk/util-user-agent-node@3.808.0': + resolution: {integrity: sha512-5UmB6u7RBSinXZAVP2iDgqyeVA/odO2SLEcrXaeTCw8ICXEoqF0K+GL36T4iDbzCBOAIugOZ6OcQX5vH3ck5UA==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.27.1': + resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@coinbase/wallet-sdk@3.9.3': + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + + '@coinbase/wallet-sdk@4.0.4': + resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ethereumjs/common@3.2.0': + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/tx@4.2.0': + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@floating-ui/core@1.7.0': + resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} + + '@floating-ui/dom@1.7.0': + resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@hookform/resolvers@3.10.0': + resolution: {integrity: sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==} + peerDependencies: + react-hook-form: ^7.0.0 + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@koa/cors@4.0.0': + resolution: {integrity: sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==} + engines: {node: '>= 14.0.0'} + + '@koa/router@12.0.2': + resolution: {integrity: sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==} + engines: {node: '>= 12'} + + '@latticexyz/abi-ts@2.2.21': + resolution: {integrity: sha512-STJQwbNvs6Xdu22MNxweTeponkfxBSmGFd0s944cAybc5UTmOkhUHfcPiChKoPRWtdKsh1lveWOJE+QPuHlehQ==} + hasBin: true + + '@latticexyz/block-logs-stream@2.2.21': + resolution: {integrity: sha512-jWtuanTzvAmVhtf/HwIYLHRuBJpejy2G/d9NMb3iArI8QOE+S5S0M1l1GVpZ0U8A8nTyCAbeRS3BaNxGb2wwXQ==} + peerDependencies: + viem: 2.x + + '@latticexyz/cli@2.2.21': + resolution: {integrity: sha512-lAm+lB3Fo3X6U7WGK3b+Wjw+FGf2U124CJzGbpopCTp+9r042ozxDAbsDRnBD19X7vQ23NXLZu/KbAJyS0n34A==} + hasBin: true + + '@latticexyz/common@2.2.21': + resolution: {integrity: sha512-4nGNuxn1w4W0m0qM6qpcrAoWKcAv2cmP9fKbXzC8BFI+82tdccddgebMlqPVlSwYPtiYjjSLHehBDUF3Ezj58w==} + peerDependencies: + '@aws-sdk/client-kms': 3.x + asn1.js: 5.x + viem: 2.x + peerDependenciesMeta: + '@aws-sdk/client-kms': + optional: true + asn1.js: + optional: true + + '@latticexyz/config@2.2.21': + resolution: {integrity: sha512-xwS697Wfl7FwIQzdCJNd0IS+yeDEbe9XvpYsFaeVgmGtxGQDBvKyW0CSNUS7u5SKORTCc2MDgxNvTeJkIiRE1w==} + peerDependencies: + viem: 2.x + + '@latticexyz/entrykit@2.2.21': + resolution: {integrity: sha512-9VF5uX9RtDipCYOI8fGg1mdb4XvSlmDzao33iXbr0vvv2T1bg9738rno6pKf6GYgUO/aqNb7qSl0ZANcEmkUpg==} + hasBin: true + peerDependencies: + '@tanstack/react-query': 5.x + react: 18.x || 19.x + react-dom: 18.x || 19.x + viem: 2.x + wagmi: 2.x + + '@latticexyz/explorer@2.2.21': + resolution: {integrity: sha512-ocVEsoaA7f/AnCwxA9jJwz8QsoR1SBtNrYs/4zkRzXKA33wul6LRscB1+bnNrzSni/NuUSe5rqMh4xlODIY23g==} + engines: {node: 20.x, pnpm: ^9} + hasBin: true + peerDependencies: + viem: 2.x + + '@latticexyz/gas-report@2.2.21': + resolution: {integrity: sha512-XrWlACYfTEB51trFRn0z5Sp4+TzbDLnJE0Hjc2T9/4AQo2izu7nvF9Q7RgeeTRgOiOe3S+C0/I0G9kFNaDSZvg==} + hasBin: true + + '@latticexyz/paymaster@2.2.21': + resolution: {integrity: sha512-nLCBaWg4d4CQfTB3+FSoSfJg/YOJkhqRBiGWiiMTMUI1i2chL1lBc/kS8+vaFlQ61eUZW46h4LtzPAiaQxUitQ==} + + '@latticexyz/protocol-parser@2.2.21': + resolution: {integrity: sha512-e+aCpNIvMAbnUflYKl+ahKTle4SX8Ssp+nG0ggaEsdFZGDUQKxqsW5FyPGgHvjzOiPQXDFaLeXM99v0h+zamNw==} + peerDependencies: + viem: 2.x + + '@latticexyz/react@2.2.21': + resolution: {integrity: sha512-PZe8GKDtRd+VGgramdju9IfpbhFScxTbY0kl+djaFfv7raf4akKKh0nf3LumTL1qE7VzqaS80MMHbvIUBhopgQ==} + + '@latticexyz/recs@2.2.21': + resolution: {integrity: sha512-okAT3jIwhqgL1JesQGlq3IdjvnTqLe0RJ86xeQcrcJw9w4rY01BKjIbx1rMjP9omkv1JEZ3nFAIm9Lcum6zaQA==} + + '@latticexyz/schema-type@2.2.21': + resolution: {integrity: sha512-vFf8lPr5jCcOZ94pc9l2w7NzfKKUIK+LkTvHFgtTkCwOzBt5AGjt36c38Gw9G1Y3F3XewMn8iPd2psaU2SVhRA==} + peerDependencies: + viem: 2.x + + '@latticexyz/stash@2.2.21': + resolution: {integrity: sha512-YR49f25khgkIJh2QWP6zIo6jmWoRQoZ05roBi+d5vylkctOF7eWNXxWhG+hABoi9UuI+mDOMXplfcXcKej8B3g==} + peerDependencies: + react: 18.x + viem: 2.x + + '@latticexyz/store-indexer@2.2.21': + resolution: {integrity: sha512-orTcwud84wHTygcFBuaNY9DpFeOOjN8/erb36FicyA+1OP65zF7WyeH/fUb+OflJ0aT/aZfki6qJmSEvYD3OcA==} + hasBin: true + peerDependencies: + viem: 2.x + + '@latticexyz/store-sync@2.2.21': + resolution: {integrity: sha512-SlTsrpplgRkl2gOnxbXE6Ea7nTgaOO1+lReSOqcdi3E9S4U2J/LPjGTowKv6Co3Z5Yf6X9+0I47AyHPcul5t1g==} + peerDependencies: + '@tanstack/react-query': 5.x + react: 18.x + viem: 2.x + wagmi: 2.x + peerDependenciesMeta: + '@tanstack/react-query': + optional: true + react: + optional: true + wagmi: + optional: true + + '@latticexyz/store@2.2.21': + resolution: {integrity: sha512-DrLh9kGrvtGh4oxSf7VhecvuSaFmBv6HWuTpvsx7/ZeORtz0ncHlv35ZSVcOvETIxVdJZkw0k2EthIAjrOSMpg==} + peerDependencies: + viem: 2.x + peerDependenciesMeta: + viem: + optional: true + + '@latticexyz/utils@2.2.21': + resolution: {integrity: sha512-wQMBIxwrt3vuUF7xkvwZuLuptTSnl8K1y5J1cdfKJPip4fEtbxVT0m9q5bECprvYptRZu619aaOyXdKFwm4aEA==} + + '@latticexyz/world-module-callwithsignature@2.2.21': + resolution: {integrity: sha512-wK+rg0qBs9lk3A+sWRB2OC7j0uMlYbkq63WDi4IMZ9JfC7Zh3PUYoEHCG8nv9rqUEhjSQ1SLN0zBfjaMkUffqg==} + + '@latticexyz/world-module-metadata@2.2.21': + resolution: {integrity: sha512-h/hvsri9pHzf3cZoPG+Zoq/gcjqc1cwbvuboZW9KNqvPaSxVnqsFI3LQH2QvY0UzqJkXw7zGFsLvCx2UwG35og==} + + '@latticexyz/world-modules@2.2.21': + resolution: {integrity: sha512-9anCeDzSJmpNZFlM0hFMTOiUNA64fvPuRtWI592gHwddihAARzaH4QFE/eDDs4lB1IT0v/Qp6x82/DwTdN0Maw==} + + '@latticexyz/world@2.2.21': + resolution: {integrity: sha512-bBBYvbveYH9f3ddGp3YLVirr9R/pr22BvsHYXn8W4YCBi8NyM1ERS2Kd4zlfb27HgfVNTYZ7XgGv637F6rbSeA==} + peerDependencies: + viem: 2.x + peerDependenciesMeta: + viem: + optional: true + + '@lit-labs/ssr-dom-shim@1.3.0': + resolution: {integrity: sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==} + + '@lit/reactive-element@1.6.3': + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + + '@metamask/eth-json-rpc-provider@1.0.1': + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + + '@metamask/json-rpc-engine@7.3.3': + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-engine@8.0.2': + resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-middleware-stream@7.0.2': + resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} + engines: {node: '>=16.0.0'} + + '@metamask/object-multiplex@2.1.0': + resolution: {integrity: sha512-4vKIiv0DQxljcXwfpnbsXcfa5glMj5Zg9mqn4xpIWqkv6uJ2ma5/GtUfLFSxhlxnR8asRMv8dDmWya1Tc1sDFA==} + engines: {node: ^16.20 || ^18.16 || >=20} + + '@metamask/onboarding@1.0.1': + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + + '@metamask/providers@16.1.0': + resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} + engines: {node: ^18.18 || >=20} + + '@metamask/rpc-errors@6.4.0': + resolution: {integrity: sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==} + engines: {node: '>=16.0.0'} + + '@metamask/safe-event-emitter@2.0.0': + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + + '@metamask/safe-event-emitter@3.1.2': + resolution: {integrity: sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==} + engines: {node: '>=12.0.0'} + + '@metamask/sdk-communication-layer@0.28.2': + resolution: {integrity: sha512-kGx6qgP482DecPILnIS38bgxIjNransR3/Jh5Lfg9BXJLaXpq/MEGrjHGnJHAqCyfRymnd5cgexHtXJvQtRWQA==} + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + + '@metamask/sdk-install-modal-web@0.28.1': + resolution: {integrity: sha512-mHkIjWTpYQMPDMtLEEtTVXhae4pEjy7jDBfV7497L0U3VCPQrBl/giZBwA6AgKEX1emYcM2d1WRHWR9N4YhyJA==} + peerDependencies: + i18next: 23.11.5 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + + '@metamask/sdk@0.28.2': + resolution: {integrity: sha512-pylk1uJAZYyO3HcNW/TNfII3+T+Yx6qrFYaC/HmuSIuRJeXsdZuExSbNQ236iQocIy3L7JjI+GQKbv3TbN+HQQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@metamask/superstruct@3.2.1': + resolution: {integrity: sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@5.0.2': + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} + + '@metamask/utils@8.5.0': + resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@9.3.0': + resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} + engines: {node: '>=16.0.0'} + + '@monaco-editor/loader@1.5.0': + resolution: {integrity: sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==} + + '@monaco-editor/react@4.7.0': + resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@motionone/animation@10.18.0': + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + + '@motionone/dom@10.18.0': + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + + '@motionone/easing@10.18.0': + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + + '@motionone/generators@10.18.0': + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + + '@motionone/svelte@10.16.4': + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + + '@motionone/types@10.17.1': + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + + '@motionone/utils@10.18.0': + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + + '@motionone/vue@10.16.4': + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + + '@next/env@14.2.5': + resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} + + '@next/swc-darwin-arm64@14.2.5': + resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@14.2.5': + resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@14.2.5': + resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@14.2.5': + resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@14.2.5': + resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@14.2.5': + resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@14.2.5': + resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@14.2.5': + resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@14.2.5': + resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/curves@1.8.1': + resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.8.2': + resolution: {integrity: sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.0': + resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.7.1': + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.7.2': + resolution: {integrity: sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@openzeppelin/contracts@3.4.2-solc-0.7': + resolution: {integrity: sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==} + + '@openzeppelin/contracts@5.3.0': + resolution: {integrity: sha512-zj/KGoW7zxWUE8qOI++rUM18v+VeLTTzKs/DJFkSzHpQFPD/jKKF0TrMxBfGLl3kpdELCNccvB3zmofSzm4nlA==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.0.1': + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-accessible-icon@1.1.6': + resolution: {integrity: sha512-Eh+3JK1ApmX7DYGMquj6gctxmbLX4JD+5kn1Pi/VlFGdHvod+dtoFoAGEkz3Muy/E+MVC7P77MPC5zqAaxrHxg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-accordion@1.2.10': + resolution: {integrity: sha512-x+URzV1siKmeXPSUIQ22L81qp2eOhjpy3tgteF+zOr4d1u0qJnFuyBF4MoQRhmKP6ivDxlvDAvqaF77gh7DOIw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.13': + resolution: {integrity: sha512-/uPs78OwxGxslYOG5TKeUsv9fZC0vo376cXSADdKirTmsLJU2au6L3n34c3p6W26rFDDDze/hwy4fYeNd0qdGA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.6': + resolution: {integrity: sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.6': + resolution: {integrity: sha512-cZvNiIKqWQjf3DsQk1+wktF3DD73kUbWQ2E/XSh8m2IcpFGwg4IiIvGlVNdovxuozK/9+4QXd2zVlzUMiexSDg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.9': + resolution: {integrity: sha512-10tQokfvZdFvnvDkcOJPjm2pWiP8A0R4T83MoD7tb15bC/k2GU7B1YBuzJi8lNQ8V1QqhP8ocNqp27ByZaNagQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.3.1': + resolution: {integrity: sha512-xTaLKAO+XXMPK/BpVTSaAAhlefmvMSACjIhK9mGsImvX2ljcTDm8VGR1CuS1uYcNdR5J+oiOhoJZc5un6bh3VQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collapsible@1.1.10': + resolution: {integrity: sha512-O2mcG3gZNkJ/Ena34HurA3llPOEA/M4dJtIRMa6y/cknRDC8XY5UZBInKTsUwW5cUue9A4k0wi1XU5fKBzKe1w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.6': + resolution: {integrity: sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.0.1': + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.14': + resolution: {integrity: sha512-RUHvrJE2qKAd9pQ50HZZsePio4SMWEh8v6FWQwg/4t6K1fuxfb4Ec40VEVvni6V7nFxmj9srU4UZc7aYp8x0LQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.0.1': + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.0.5': + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dialog@1.1.13': + resolution: {integrity: sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.0.5': + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.9': + resolution: {integrity: sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.14': + resolution: {integrity: sha512-lzuyNjoWOoaMFE/VC5FnAAYM16JmQA8ZmucOXtlhm2kKR5TSU95YLAueQ4JYuRmUJmBvSqXaVFGIfuukybwZJQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.0.1': + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.0.4': + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-scope@1.1.6': + resolution: {integrity: sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-form@0.1.6': + resolution: {integrity: sha512-7AMSeVvepeJU8dIUSDlR92Pm8mScmqWBaiYw0oIAcN8wU/H5muJGcZdU/sYRHNws3b7eCoHyq4FTLrstVtCacQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.13': + resolution: {integrity: sha512-Wtjvx0d/6Bgd/jAYS1mW6IPSUQ25y0hkUSOS1z5/4+U8+DJPwKroqJlM/AlVFl3LywGoruiPmcvB9Aks9mSOQw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.0.1': + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.6': + resolution: {integrity: sha512-S/hv1mTlgcPX2gCTJrWuTjSXf7ER3Zf7zWGtOprxhIIY93Qin3n5VgNA0Ez9AgrK/lEtlYgzLd4f5x6AVar4Yw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menu@2.1.14': + resolution: {integrity: sha512-0zSiBAIFq9GSKoSH5PdEaQeRB3RnEGxC+H2P0egtnKoKKLNBH8VBHyVO6/jskhjAezhOIplyRUj7U2lds9A+Yg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menubar@1.1.14': + resolution: {integrity: sha512-nWLOS7EG3iYhT/zlE/Pbip17rrMnV/0AS7ueb3pKHTSAnpA6/N9rXQYowulZw4owZ9P+qSilHsFzSx/kU7yplQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.12': + resolution: {integrity: sha512-iExvawdu7n6DidDJRU5pMTdi+Z3DaVPN4UZbAGuTs7nJA8P4RvvkEz+XYI2UJjb/Hh23RrH19DakgZNLdaq9Bw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-one-time-password-field@0.1.6': + resolution: {integrity: sha512-hLjEmrZ7Ld++eL/hUOqfmBA4pEk78Sf7iXvEWs9t3aAuvWmtI24FuEfiMYbiXVJuUjzpo3vND6eUTAPFvG44Gg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-password-toggle-field@0.1.1': + resolution: {integrity: sha512-p5IJUTuyknUMv5VPGEa3fZvjb77cPzCK9w+Em/xHLaTqCVfIhykvdzAe8+X5BmboE9NwxDEBmbWnceFVw4tDdg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.13': + resolution: {integrity: sha512-84uqQV3omKDR076izYgcha6gdpN8m3z6w/AeJ83MSBJYVG/AbOHdLjAgsPZkeC/kt+k64moXFCnio8BbqXszlw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.6': + resolution: {integrity: sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.0.4': + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.8': + resolution: {integrity: sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.0.1': + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@1.0.3': + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.2': + resolution: {integrity: sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.6': + resolution: {integrity: sha512-QzN9a36nKk2eZKMf9EBCia35x3TT+SOgZuzQBVIHyRrmYYi73VYBRK3zKwdJ6az/F5IZ6QlacGJBg7zfB85liA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.3.6': + resolution: {integrity: sha512-1tfTAqnYZNVwSpFhCT273nzK8qGBReeYnNTPspCggqk1fvIrfVxJekIuBFidNivzpdiMqDwVGnQvHqXrRPM4Og==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.9': + resolution: {integrity: sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.8': + resolution: {integrity: sha512-K5h1RkYA6M0Sn61BV5LQs686zqBsSC0sGzL4/Gw4mNnjzrQcGSc6YXfC6CRFNaGydSdv5+M8cb0eNsOGo0OXtQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.2.4': + resolution: {integrity: sha512-/OOm58Gil4Ev5zT8LyVzqfBcij4dTHYdeyuF5lMHZ2bIp0Lk9oETocYiJ5QC0dHekEQnK6L/FNJCceeb4AkZ6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-separator@1.1.6': + resolution: {integrity: sha512-Izof3lPpbCfTM7WDta+LRkz31jem890VjEvpVRoWQNKpDUMMVffuyq854XPGP1KYGWWmjmYvHvPFeocWhFCy1w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.3.4': + resolution: {integrity: sha512-Cp6hEmQtRJFci285vkdIJ+HCDLTRDk+25VhFwa1fcubywjMUE3PynBgtN5RLudOgSCYMlT4jizCXdmV+8J7Y2w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.0.2': + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.2': + resolution: {integrity: sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.2.4': + resolution: {integrity: sha512-yZCky6XZFnR7pcGonJkr9VyNRu46KcYAbyg1v/gVVCZUr8UJ4x+RpncC27hHtiZ15jC+3WS8Yg/JSgyIHnYYsQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.11': + resolution: {integrity: sha512-4FiKSVoXqPP/KfzlB7lwwqoFV6EPwkrrqGp9cUYXjwDYHhvpnqq79P+EPHKcdoTE7Rl8w/+6s9rTlsfXHES9GA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toast@1.2.13': + resolution: {integrity: sha512-e/e43mQAwgYs8BY4y9l99xTK6ig1bK2uXsFLOMn9IZ16lAgulSTsotcPHVT2ZlSb/ye6Sllq7IgyDB8dGhpeXQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.9': + resolution: {integrity: sha512-HJ6gXdYVN38q/5KDdCcd+JTuXUyFZBMJbwXaU/82/Gi+V2ps6KpiZ2sQecAeZCV80POGRfkUBdUIj6hIdF6/MQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.8': + resolution: {integrity: sha512-hrpa59m3zDnsa35LrTOH5s/a3iGv/VD+KKQjjiCTo/W4r0XwPpiWQvAv6Xl1nupSoaZeNNxW6sJH9ZydsjKdYQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toolbar@1.1.9': + resolution: {integrity: sha512-qqGkE9h018CSbpO4ag4rR6ZuOc/A9wM3dUv2jHrkfwUqspuvZmPegBPElVimH0FPWrYn4Alt4QTOptRjbwJnKw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.2.6': + resolution: {integrity: sha512-zYb+9dc9tkoN2JjBDIIPLQtk3gGyz8FMKoqYTb8EMVQ5a5hBcdHPECrsZVI4NpPAUOixhkoqg7Hj5ry5USowfA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-is-hydrated@0.1.0': + resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.2': + resolution: {integrity: sha512-ORCmRUbNiZIv6uV5mhFrhsIKw4UX/N3syZtyqvry61tbGm4JlgQuSn0hk5TwCARsCjkcnuRkSdCE3xfb+ADHew==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@radix-ui/themes@3.2.1': + resolution: {integrity: sha512-WJL2YKAGItkunwm3O4cLTFKCGJTfAfF6Hmq7f5bCo1ggqC9qJQ/wfg/25AAN72aoEM1yqXZQ+pslsw48AFR0Xg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@rainbow-me/rainbowkit@2.1.7': + resolution: {integrity: sha512-xaviD0sE+/Nk1/2UK/C79QNnhIDLd5jn4ODNjb9ErEVJIDtuLwDLkgZ8BWkpfxLBTOn00fuxKkfIijxwQrfKMg==} + engines: {node: '>=12.4'} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + react-dom: '>=18' + viem: 2.x + wagmi: ^2.9.0 + + '@rainbow-me/rainbowkit@2.2.4': + resolution: {integrity: sha512-LUYBcB5bzLf6/BMdnW3dEFHVqoPkTGcFN3u6WamaIHXuqD9HT+HVAeNlcYvKENBXldN2zNBs1Bt3k8Oy7y5bTw==} + engines: {node: '>=12.4'} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + react-dom: '>=18' + viem: 2.x + wagmi: ^2.9.0 + + '@react-native/assets-registry@0.79.2': + resolution: {integrity: sha512-5h2Z7/+/HL/0h88s0JHOdRCW4CXMCJoROxqzHqxdrjGL6EBD1DdaB4ZqkCOEVSW4Vjhir5Qb97C8i/MPWEYPtg==} + engines: {node: '>=18'} + + '@react-native/codegen@0.79.2': + resolution: {integrity: sha512-8JTlGLuLi1p8Jx2N/enwwEd7/2CfrqJpv90Cp77QLRX3VHF2hdyavRIxAmXMwN95k+Me7CUuPtqn2X3IBXOWYg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/community-cli-plugin@0.79.2': + resolution: {integrity: sha512-E+YEY2dL+68HyR2iahsZdyBKBUi9QyPyaN9vsnda1jNgCjNpSPk2yAF5cXsho+zKK5ZQna3JSeE1Kbi2IfGJbw==} + engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli': '*' + peerDependenciesMeta: + '@react-native-community/cli': + optional: true + + '@react-native/debugger-frontend@0.79.2': + resolution: {integrity: sha512-cGmC7X6kju76DopSBNc+PRAEetbd7TWF9J9o84hOp/xL3ahxR2kuxJy0oJX8Eg8oehhGGEXTuMKHzNa3rDBeSg==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.79.2': + resolution: {integrity: sha512-9q4CpkklsAs1L0Bw8XYCoqqyBSrfRALGEw4/r0EkR38Y/6fVfNfdsjSns0pTLO6h0VpxswK34L/hm4uK3MoLHw==} + engines: {node: '>=18'} + + '@react-native/gradle-plugin@0.79.2': + resolution: {integrity: sha512-6MJFemrwR0bOT0QM+2BxX9k3/pvZQNmJ3Js5pF/6owsA0cUDiCO57otiEU8Fz+UywWEzn1FoQfOfQ8vt2GYmoA==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.79.2': + resolution: {integrity: sha512-IaY87Ckd4GTPMkO1/Fe8fC1IgIx3vc3q9Tyt/6qS3Mtk9nC0x9q4kSR5t+HHq0/MuvGtu8HpdxXGy5wLaM+zUw==} + engines: {node: '>=18'} + + '@react-native/normalize-colors@0.79.2': + resolution: {integrity: sha512-+b+GNrupWrWw1okHnEENz63j7NSMqhKeFMOyzYLBwKcprG8fqJQhDIGXfizKdxeIa5NnGSAevKL1Ev1zJ56X8w==} + + '@react-native/virtualized-lists@0.79.2': + resolution: {integrity: sha512-9G6ROJeP+rdw9Bvr5ruOlag11ET7j1z/En1riFFNo6W3xZvJY+alCuH1ttm12y9+zBm4n8jwCk4lGhjYaV4dKw==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^19.0.0 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + cpu: [x64] + os: [win32] + + '@safe-global/safe-apps-provider@0.18.3': + resolution: {integrity: sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ==} + + '@safe-global/safe-apps-sdk@9.1.0': + resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} + + '@safe-global/safe-gateway-typescript-sdk@3.23.1': + resolution: {integrity: sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==} + engines: {node: '>=16'} + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/base@1.2.5': + resolution: {integrity: sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip32@1.6.2': + resolution: {integrity: sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@scure/bip39@1.5.4': + resolution: {integrity: sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==} + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@sentry-internal/tracing@7.120.3': + resolution: {integrity: sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==} + engines: {node: '>=8'} + + '@sentry/core@7.120.3': + resolution: {integrity: sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==} + engines: {node: '>=8'} + + '@sentry/integrations@7.120.3': + resolution: {integrity: sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==} + engines: {node: '>=8'} + + '@sentry/node@7.120.3': + resolution: {integrity: sha512-t+QtekZedEfiZjbkRAk1QWJPnJlFBH/ti96tQhEq7wmlk3VszDXraZvLWZA0P2vXyglKzbWRGkT31aD3/kX+5Q==} + engines: {node: '>=8'} + + '@sentry/profiling-node@1.3.5': + resolution: {integrity: sha512-n2bfEbtLW3WuIMQGyxKJKzBNZOb1JYfMeJQ2WQn/42F++69m+u7T0S3EDGRN0Y//fbt5+r0any+4r3kChRXZkQ==} + engines: {node: '>=8.0.0'} + hasBin: true + peerDependencies: + '@sentry/node': ^7.44.1 + + '@sentry/types@7.120.3': + resolution: {integrity: sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==} + engines: {node: '>=8'} + + '@sentry/utils@7.120.3': + resolution: {integrity: sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==} + engines: {node: '>=8'} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@smithy/abort-controller@4.0.2': + resolution: {integrity: sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.1.2': + resolution: {integrity: sha512-7r6mZGwb5LmLJ+zPtkLoznf2EtwEuSWdtid10pjGl/7HefCE4mueOkrfki8JCUm99W6UfP47/r3tbxx9CfBN5A==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.3.2': + resolution: {integrity: sha512-GlLv+syoWolhtjX12XplL9BXBu10cjjD8iQC69fiKTrVNOB3Fjt8CVI9ccm6G3bLbMNe1gzrLD7yyMkYo4hchw==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.0.4': + resolution: {integrity: sha512-jN6M6zaGVyB8FmNGG+xOPQB4N89M1x97MMdMnm1ESjljLS3Qju/IegQizKujaNcy2vXAvrz0en8bobe6E55FEA==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.0.2': + resolution: {integrity: sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.0.2': + resolution: {integrity: sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.0.2': + resolution: {integrity: sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.0.2': + resolution: {integrity: sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.1.5': + resolution: {integrity: sha512-WlpC9KVkajQf7RaGwi3n6lhHZzYTgm2PyX/2JjcwSHG417gFloNmYqN8rzDRXjT527/ZxZuvCsqq1gWZPW8lag==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.1.6': + resolution: {integrity: sha512-bl8q95nvCf7d22spxsBfs2giUDFf7prWLAxF5tmfgGBYHbUNW+OfnwMnabC15GMLA2AoE4HOtQR18a59lx6Blw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.0.4': + resolution: {integrity: sha512-CaLvBtz+Xgs7eOwoinTXhZ02/9u8b28RT8lQAaDh7Q59nygeYYp1UiJjwl6zsay+lp0qVT/S7qLVI5RgcxjyfQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.0.2': + resolution: {integrity: sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.1.1': + resolution: {integrity: sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.0.4': + resolution: {integrity: sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.0.2': + resolution: {integrity: sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.1.0': + resolution: {integrity: sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.0.2': + resolution: {integrity: sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.0.2': + resolution: {integrity: sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.0.3': + resolution: {integrity: sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.0.2': + resolution: {integrity: sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.1.0': + resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.2.5': + resolution: {integrity: sha512-T3gA/TShe52Ln0ywWGVoDiqRvaxqvrU0CKRRmzT71/I1rRBD8mY85rvMMME6vw5RpBLJC9ADmXSLmpohF7RRhA==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.2.0': + resolution: {integrity: sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.0.2': + resolution: {integrity: sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.0.13': + resolution: {integrity: sha512-HCLfXAyTEpVWLuyxDABg8UQukeRwChL1UErpSQ4KJK2ZoadmXuQY68pTL9KcuEtasTkIjnzyLUL9vhLdJ3VFHQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.0.13': + resolution: {integrity: sha512-lu8E2RyzKzzFbNu4ICmY/2HltMZlJxMNg3saJ+r8I9vWbWbwdX7GOWUJdP4fbjEOm6aa52mnnd+uIRrT3dNEyA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.0.4': + resolution: {integrity: sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.0.2': + resolution: {integrity: sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.0.3': + resolution: {integrity: sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.2.0': + resolution: {integrity: sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@solidity-parser/parser@0.16.2': + resolution: {integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==} + + '@solidity-parser/parser@0.17.0': + resolution: {integrity: sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==} + + '@stablelib/aead@1.0.1': + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/chacha20poly1305@1.0.1': + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + + '@stablelib/chacha@1.0.1': + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hkdf@1.0.1': + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/sha256@1.0.1': + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@tanstack/query-core@5.76.0': + resolution: {integrity: sha512-FN375hb8ctzfNAlex5gHI6+WDXTNpe0nbxp/d2YJtnP+IBM6OUm7zcaoCW6T63BawGOYZBbKC0iPvr41TteNVg==} + + '@tanstack/react-query@5.76.1': + resolution: {integrity: sha512-YxdLZVGN4QkT5YT1HKZQWiIlcgauIXEIsMOTSjvyD5wLYK8YVvKZUPAysMqossFJJfDpJW3pFn7WNZuPOqq+fw==} + peerDependencies: + react: ^18 || ^19 + + '@tanstack/react-table@8.21.3': + resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@trpc/client@10.34.0': + resolution: {integrity: sha512-nqtDTIqSY/9syo2EjSy4WWWXPU9GsamEh9Tsg698gLAh1nhgFc5+/YYeb+Ne1pbvWGZ5/3t9Dcz3h4wMyyJ9gQ==} + peerDependencies: + '@trpc/server': 10.34.0 + + '@trpc/server@10.34.0': + resolution: {integrity: sha512-2VMW44Fpaoyqb50dBtzdSWMhqt8lmoJiocEyBBeDb03R0W+XrzbVD5kU/wqKPlcp1DWeNCkOEIMtetMZCfo1hA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/debug@4.1.7': + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + + '@types/dom-screen-wake-lock@1.0.3': + resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@22.15.18': + resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} + + '@types/pegjs@0.10.6': + resolution: {integrity: sha512-eLYXDbZWXh2uxf+w8sXS8d6KSoXTswfps6fvCUuVAGN8eRpfe7h9eSRydxiSJvo9Bf+GzifsDOr9TMQlmJdmkw==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.2.7': + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + + '@types/react@18.2.22': + resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} + + '@types/retry@0.12.1': + resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} + + '@types/scheduler@0.26.0': + resolution: {integrity: sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==} + + '@types/semver@7.7.0': + resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@7.1.1': + resolution: {integrity: sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.1.1': + resolution: {integrity: sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.1.1': + resolution: {integrity: sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@7.1.1': + resolution: {integrity: sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.1.1': + resolution: {integrity: sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@7.1.1': + resolution: {integrity: sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.1.1': + resolution: {integrity: sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.1.1': + resolution: {integrity: sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@uniswap/lib@4.0.1-alpha': + resolution: {integrity: sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==} + engines: {node: '>=10'} + + '@uniswap/v2-core@1.0.1': + resolution: {integrity: sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==} + engines: {node: '>=10'} + + '@uniswap/v3-core@1.0.1': + resolution: {integrity: sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ==} + engines: {node: '>=10'} + + '@uniswap/v3-periphery@1.4.4': + resolution: {integrity: sha512-S4+m+wh8HbWSO3DKk4LwUCPZJTpCugIsHrWR86m/OrUyvSqGDTXKFfc2sMuGXCZrD1ZqO3rhQsKgdWg3Hbb2Kw==} + engines: {node: '>=10'} + + '@vanilla-extract/css@1.15.5': + resolution: {integrity: sha512-N1nQebRWnXvlcmu9fXKVUs145EVwmWtMD95bpiEKtvehHDpUhmO1l2bauS7FGYKbi3dU1IurJbGpQhBclTr1ng==} + + '@vanilla-extract/dynamic@2.1.2': + resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} + + '@vanilla-extract/private@1.0.7': + resolution: {integrity: sha512-v9Yb0bZ5H5Kr8ciwPXyEToOFD7J/fKKH93BYP7NCSZg02VYsA/pNFrLeVDJM2OO/vsygduPKuiEI6ORGQ4IcBw==} + + '@vanilla-extract/sprinkles@1.6.3': + resolution: {integrity: sha512-oCHlQeYOBIJIA2yWy2GnY5wE2A7hGHDyJplJo4lb+KEIBcJWRnDJDg8ywDwQS5VfWJrBBO3drzYZPFpWQjAMiQ==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@vitejs/plugin-react@4.4.1': + resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + + '@wagmi/connectors@5.1.10': + resolution: {integrity: sha512-ybgKV09PIhgUgQ4atXTs2KOy4Hevd6f972SXfx6HTgsnFXlzxzN6o0aWjhavZOYjvx5tjuL3+8Mgqo0R7uP5Cg==} + peerDependencies: + '@wagmi/core': 2.13.5 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/core@2.13.5': + resolution: {integrity: sha512-lvX/hApJTSA/H2kOklokjIYiUpnT8CpBH80GeOiKxU0CGK1wNHTu20GRTCy0GF1t7jkNwPSG3m0SmnXmgYMmHw==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + + '@walletconnect/core@2.16.1': + resolution: {integrity: sha512-UlsnEMT5wwFvmxEjX8s4oju7R3zadxNbZgsFeHEsjh7uknY2zgmUe1Lfc5XU6zyPb1Jx7Nqpdx1KN485ee8ogw==} + engines: {node: '>=18'} + + '@walletconnect/environment@1.0.1': + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + + '@walletconnect/ethereum-provider@2.16.1': + resolution: {integrity: sha512-oD7DNCssUX3plS5gGUZ9JQ63muQB/vxO68X6RzD2wd8gBsYtSPw4BqYFc7KTO6dUizD6gfPirw32yW2pTvy92w==} + + '@walletconnect/events@1.0.1': + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + + '@walletconnect/heartbeat@1.2.2': + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + + '@walletconnect/jsonrpc-http-connection@1.0.8': + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + + '@walletconnect/jsonrpc-provider@1.0.14': + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + + '@walletconnect/jsonrpc-utils@1.0.8': + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + + '@walletconnect/jsonrpc-ws-connection@1.0.14': + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + + '@walletconnect/keyvaluestorage@1.1.1': + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@walletconnect/logger@2.1.2': + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + + '@walletconnect/modal-core@2.6.2': + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + + '@walletconnect/modal-ui@2.6.2': + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + + '@walletconnect/modal@2.6.2': + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + + '@walletconnect/relay-api@1.0.11': + resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} + + '@walletconnect/relay-auth@1.0.4': + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + + '@walletconnect/safe-json@1.0.2': + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + + '@walletconnect/sign-client@2.16.1': + resolution: {integrity: sha512-s2Tx2n2duxt+sHtuWXrN9yZVaHaYqcEcjwlTD+55/vs5NUPlISf+fFmZLwSeX1kUlrSBrAuxPUcqQuRTKcjLOA==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/time@1.0.2': + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + + '@walletconnect/types@2.16.1': + resolution: {integrity: sha512-9P4RG4VoDEF+yBF/n2TF12gsvT/aTaeZTVDb/AOayafqiPnmrQZMKmNCJJjq1sfdsDcHXFcZWMGsuCeSJCmrXA==} + + '@walletconnect/universal-provider@2.16.1': + resolution: {integrity: sha512-q/tyWUVNenizuClEiaekx9FZj/STU1F3wpDK4PUIh3xh+OmUI5fw2dY3MaNDjyb5AyrS0M8BuQDeuoSuOR/Q7w==} + + '@walletconnect/utils@2.16.1': + resolution: {integrity: sha512-aoQirVoDoiiEtYeYDtNtQxFzwO/oCrz9zqeEEXYJaAwXlGVTS34KFe7W3/Rxd/pldTYKFOZsku2EzpISfH8Wsw==} + + '@walletconnect/window-getters@1.0.1': + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + + '@walletconnect/window-metadata@1.0.1': + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + + abitype@1.0.6: + resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.8: + resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + antlr4-c3@1.1.16: + resolution: {integrity: sha512-3CZQ54JPyo6lkZYDOXaKUsy5KNFucveocvRy+03R7zJQbYOUr4Z6lFeBWzkxJXLitc7yQYe7OHbB6snyp7IJvQ==} + + antlr4@4.13.2: + resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==} + engines: {node: '>=16'} + + antlr4ts-sql@1.1.0: + resolution: {integrity: sha512-94+8/+hsPI/OLG0WRGqW88/gqz+xxrSLSz/jGqS8Xl7tYWwUj/cBB4D/QRmNezYLqEaUzMHhTeQn5hzrpC2wNQ==} + + antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + arktype@2.0.0-beta.6: + resolution: {integrity: sha512-tbH5/h0z371sgrJIAhZhH2BcrErWv8uQIPVcLmknJ8ffov5/ZbMNufrQ3hG9avGKTcVnVmdQoPhl1WuKuagqXA==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + + ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async-mutex@0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-syntax-hermes-parser@0.25.1: + resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64-sol@1.0.1: + resolution: {integrity: sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==} + + better-sqlite3@8.7.0: + resolution: {integrity: sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bintrees@1.0.2: + resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + + bn.js@5.2.2: + resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.9: + resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} + engines: {node: '>=6.14.2'} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.0.0: + resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decode-uri-component@0.4.1: + resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} + engines: {node: '>=14.16'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + + drizzle-orm@0.28.6: + resolution: {integrity: sha512-yBe+F9htrlYER7uXgDJUQsTHFoIrI5yMm5A0bg0GiZ/kY5jNXTWoEy4KQtg35cE27sw1VbgzoMWHAgCckUUUww==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@vercel/postgres': '*' + better-sqlite3: '>=7' + bun-types: '*' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: + resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + version: 1.0.0 + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + eciesjs@0.3.21: + resolution: {integrity: sha512-6FiThm7KlTihph8ROhq/BHEglGCJSwq6c8KVgcCcJiNJFNlbrFtfnTqZobVmWIB764mzhZTOBFyinADSXXvTLg==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.152: + resolution: {integrity: sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + engine.io-client@6.6.3: + resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.31.11: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + + eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + + eth-query@2.1.2: + resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + + eth-rpc-errors@4.0.3: + resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@9.5.3: + resolution: {integrity: sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==} + engines: {node: ^18.19.0 || >=20.5.0} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + exponential-backoff@3.1.2: + resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + + extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} + version: 1.6.0 + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + futoin-hkdf@1.5.3: + resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} + engines: {node: '>=8'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + h3@1.15.3: + resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-estree@0.28.1: + resolution: {integrity: sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + hermes-parser@0.28.1: + resolution: {integrity: sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + + i18next@23.11.5: + resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} + + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} + hasBin: true + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + 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. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isows@1.0.6: + resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} + + json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} + + koa@2.16.1: + resolution: {integrity: sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + + kysely@0.26.3: + resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} + engines: {node: '>=14.0.0'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-react@0.408.0: + resolution: {integrity: sha512-8kETAAeWmOvtGIr7HPHm51DXoxlfkNncQ5FZWXR+abX8saQwMYXANWIkUstaYtcKSo/imOe/q+tVFA8ANzdSVA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + marky@1.3.0: + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + metro-babel-transformer@0.82.3: + resolution: {integrity: sha512-eC0f1MSA8rg7VoNDCYMIAIe5AEgYBskh5W8rIa4RGRdmEOsGlXbAV0AWMYoA7NlIALW/S9b10AcdIwD3n1e50w==} + engines: {node: '>=18.18'} + + metro-cache-key@0.82.3: + resolution: {integrity: sha512-dDLTUOJ7YYqGog9kR55InchwnkkHuxBXD765J3hQVWWPCy6xO9uZXZYGX1Y/tIMV8U7Ho1Sve0V13n5rFajrRQ==} + engines: {node: '>=18.18'} + + metro-cache@0.82.3: + resolution: {integrity: sha512-9zKhicA5GENROeP+iXku1NrI8FegtwEg3iPXHGixkm1Yppkbwsy/3lSHSiJZoT6GkZmxUDjN6sQ5QQ+/p72Msw==} + engines: {node: '>=18.18'} + + metro-config@0.82.3: + resolution: {integrity: sha512-GRG9sBkPvrGXD/Wu3RdEDuWg5NDixF9t0c6Zz9kZ9Aa/aQY+m85JgaCI5HYEV+UzVC/IUFFSpJiMfzQRicppLw==} + engines: {node: '>=18.18'} + + metro-core@0.82.3: + resolution: {integrity: sha512-JQZDdXo3hyLl1pqVT4IKEwcBK+3f11qFXeCjQ1hjVpjMwQLOqSM02J7NC/4DNSBt+qWBxWj6R5Jphcc7+9AEWw==} + engines: {node: '>=18.18'} + + metro-file-map@0.82.3: + resolution: {integrity: sha512-o4wtloAge85MZl85F87FT59R/4tn5GvCvLfYcnzzDB20o2YX9AMxZqswrGMaei/GbD/Win5FrLF/Iq8oetcByA==} + engines: {node: '>=18.18'} + + metro-minify-terser@0.82.3: + resolution: {integrity: sha512-/3FasOULfHq1P0KPNFy5y28Th5oknPSwEbt9JELVBMAPhUnLqQkCLr4M+RQzKG3aEQN1/mEqenWApFCkk6Nm/Q==} + engines: {node: '>=18.18'} + + metro-resolver@0.82.3: + resolution: {integrity: sha512-pdib7UrOM04j/RjWmaqmjjWRiuCbpA8BdUSuXzvBaK0QlNzHkRRDv6kiOGxgQ+UgG+KdbPcJktsW9olqiDhf9w==} + engines: {node: '>=18.18'} + + metro-runtime@0.82.3: + resolution: {integrity: sha512-J4SrUUsBy9ire8I2sFuXN5MzPmuBHlx1bjvAjdoo1ecpH2mtS3ubRqVnMotBxuK5+GhrbW0mtg5/46PVXy26cw==} + engines: {node: '>=18.18'} + + metro-source-map@0.82.3: + resolution: {integrity: sha512-gz7wfjz23rit6ePQ7NKE9x+VOWGKm54vli4wbphR9W+3y0bh6Ad7T0BGH9DUzRAnOnOorewrVEqFmT24mia5sg==} + engines: {node: '>=18.18'} + + metro-symbolicate@0.82.3: + resolution: {integrity: sha512-WZKhR+QGbwkOLWP1z58Y7BFWUqLVDEEPsSQ5UI5+OWQDAwdtsPU9+sSNoJtD5qRU9qrB2XewQE3lJ2EQRRFJew==} + engines: {node: '>=18.18'} + hasBin: true + + metro-transform-plugins@0.82.3: + resolution: {integrity: sha512-s1gVrkhczwMbxZLRSLCJ16K/4Sqx5IhO4sWlL6j0jlIEs1/Drn3JrkUUdQTtgmJS8SBpxmmB66cw7wnz751dVg==} + engines: {node: '>=18.18'} + + metro-transform-worker@0.82.3: + resolution: {integrity: sha512-z5Y7nYlSlLAEhjFi73uEJh69G5IC6HFZmXFcrxnY+JNlsjT2r0GgsDF4WaQGtarAIt5NP88V8983/PedwNfEcw==} + engines: {node: '>=18.18'} + + metro@0.82.3: + resolution: {integrity: sha512-EfSLtuUmfsGk3znJ+zoN8cRLniQo3W1wyA+nJMfpTLdENfbbPnGRTwmKhzRcJIUh9jgkrrF4oRQ5shLtQ2DsUw==} + engines: {node: '>=18.18'} + hasBin: true + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mipd@0.0.7: + resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mobx@6.13.7: + resolution: {integrity: sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g==} + + modern-ahocorasick@1.1.0: + resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} + + monaco-editor@0.52.2: + resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==} + + motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + + mprocs@0.7.2: + resolution: {integrity: sha512-EtHuUzkNMmw0ltswa4vHfulbl34l2e5RLgB59Kd9A1WKYDAZ/zmQbjk1q5lTFWNlsYh9rHTylM4u94Ho+NglIw==} + engines: {node: '>=0.10.0'} + hasBin: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + next@14.2.5: + resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + node-abi@3.75.0: + resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} + engines: {node: '>=10'} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-mock-http@1.0.0: + resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + node-sql-parser@5.3.9: + resolution: {integrity: sha512-yJuCNCUWqS296krMKooLIJcZy+Q0OL6ZsNDxrwqj+HdGMHVT0ChPIFF1vqCexDe51VWKEwhU65OgvKyiyRcQLg==} + engines: {node: '>=8'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + nuqs@1.20.0: + resolution: {integrity: sha512-nGVfv7eWMNxAzOJ9n8ARTo6ObqeEr1ETYZ+dIMCg/VfGUoZoPrqyTOndIvQIgUzK3pIC41mTXg10JJxh9ziEhw==} + peerDependencies: + next: '>=13.4 <14.0.2 || ^14.0.3' + + ob1@0.82.3: + resolution: {integrity: sha512-8/SeymYlPMVODpCATHqm+X8eiuvD1GsKVa11n688V4GGgjrM3CRvrbtrYBs4t89LJDkv5CwGYPdqayuY0DmTTA==} + engines: {node: '>=18.18'} + + obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openurl@1.1.1: + resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + ox@0.6.7: + resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.6.9: + resolution: {integrity: sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-queue@7.4.1: + resolution: {integrity: sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==} + engines: {node: '>=12'} + + p-retry@5.1.2: + resolution: {integrity: sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-timeout@5.1.0: + resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} + engines: {node: '>=12'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + + permissionless@0.2.30: + resolution: {integrity: sha512-9Uzd8vAK6CXuhKrkDPG2aUyXtYXxAdOVnnvaCCCh4jFA1JTwrJcs4vJ930Plva0J74f9LVGfuZxYJrObCM1f3A==} + peerDependencies: + viem: ^2.21.54 + webauthn-p256: 0.0.10 + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + postgres@3.3.5: + resolution: {integrity: sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw==} + + postgres@3.4.5: + resolution: {integrity: sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==} + engines: {node: '>=12'} + + preact@10.26.6: + resolution: {integrity: sha512-5SRRBinwpwkaD+OqlBDeITlRgvd8I8QlxHJw9AxSdMNV6O+LodN9nUyYGpSF7sadHjs6RzeFShMexC6DbtWr9g==} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + hasBin: true + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-solidity@1.3.1: + resolution: {integrity: sha512-MN4OP5I2gHAzHZG1wcuJl0FsLS3c4Cc5494bbg+6oQWBPuEamjwDvmGfFMZ6NFzsh3Efd9UUxeT7ImgjNH4ozA==} + engines: {node: '>=16'} + peerDependencies: + prettier: '>=2.3.0' + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prom-client@15.1.3: + resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} + engines: {node: ^16 || ^18 || >=20} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + + proxy-deep@3.1.1: + resolution: {integrity: sha512-kppbvLUNJ4IOMZds9/4gz/rtT5OFiesy3XosLsgMKlF3vb6GA5Y3ptyDlzKLcOcUBW+zaY+RiMINTsgE+O6e+Q==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qr-code-styling@1.9.2: + resolution: {integrity: sha512-RgJaZJ1/RrXJ6N0j7a+pdw3zMBmzZU4VN2dtAZf8ZggCfRB5stEQ3IoDNGaNhYY3nnZKYlYSLl5YkfWN5dPutg==} + engines: {node: '>=18.18.0'} + + qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + + qrcode-terminal-nooctal@0.12.1: + resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} + hasBin: true + + qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + query-string@9.1.2: + resolution: {integrity: sha512-s3UlTyjxRux4KjwWaJsjh1Mp8zoCkSGKirbD9H89pEM9UOZsfpRZpdfzvsy2/mGlLfC3NnYVpy2gk7jXITHEtA==} + engines: {node: '>=18'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + radix-ui@1.4.1: + resolution: {integrity: sha512-xG1aeAgvAiVglxHXMpHyk7RqLGnc8VnDUZvzpE8rZ8GAhuGeNm/+7YbIwCV+rKKRpsSgxdnvfUObQidK2EnTzw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-devtools-core@6.1.2: + resolution: {integrity: sha512-ldFwzufLletzCikNJVYaxlxMLu7swJ3T2VrGfzXlMsVhZhPDKXA38DEROidaYZVgMAmQnIjymrmqto5pyfrwPA==} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-error-boundary@5.0.0: + resolution: {integrity: sha512-tnjAxG+IkpLephNcePNA7v6F/QpWLH8He65+DmedchDwg162JZqx4NmbXj0mlAYVVEd81OW7aFhmbsScYfiAFQ==} + peerDependencies: + react: '>=16.13.1' + + react-hook-form@7.56.3: + resolution: {integrity: sha512-IK18V6GVbab4TAo1/cz3kqajxbDPGofdF0w7VHdCo0Nt8PrPlOZcuuDq9YYIV1BtjcX78x0XsldbQRQnQXWXmw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-merge-refs@2.1.1: + resolution: {integrity: sha512-jLQXJ/URln51zskhgppGJ2ub7b2WFKGq3cl3NYKtlHoTG+dN2q7EzWrn3hN3EgPsTMvpR9tpq5ijdp7YwFZkag==} + + react-native-webview@11.26.1: + resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} + peerDependencies: + react: '*' + react-native: '*' + + react-native@0.79.2: + resolution: {integrity: sha512-AnGzb56JvU5YCL7cAwg10+ewDquzvmgrMddiBM0GAWLwQM/6DJfGd2ZKrMuKKehHerpDDZgG+EY64gk3x3dEkw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^19.0.0 + react: ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.2: + resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react18-json-view@0.2.9: + resolution: {integrity: sha512-z3JQgCwZRKbmWh54U94loCU6vE0ZoDBK7C8ZpcMYQB8jYMi+mR/fcgMI9jKgATeF0I6+OAF025PD+UKkXIqueQ==} + peerDependencies: + react: '>=16.8.0' + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + + secp256k1@5.0.1: + resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==} + engines: {node: '>=18.0.0'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + shx@0.3.4: + resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} + engines: {node: '>=6'} + hasBin: true + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + socket.io-client@4.8.1: + resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + solhint-config-mud@2.2.21: + resolution: {integrity: sha512-SsRm+PbNGKanYrsNqSFV0hBF3YWQdOVSLDzsTgO6DftBb3Lqam1xAtSazaEO5btfCb1jPkEVMdUZeCOaCzdvbg==} + + solhint-plugin-mud@2.2.21: + resolution: {integrity: sha512-n2CQZ0qNh59++7Mbl5KbIy2jW2j/CyBjnQRg6P1wdLSyfGKAgOF/VgRDS8i8+omDCLxbicGS3taNPmYF/pXuyQ==} + + solhint@3.6.2: + resolution: {integrity: sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==} + hasBin: true + + solidity-comments-extractor@0.0.8: + resolution: {integrity: sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==} + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + sonner@1.7.4: + resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + sonner@2.0.3: + resolution: {integrity: sha512-njQ4Hht92m0sMqqHVDL32V2Oun9W1+PHO9NDv9FHfJjT3JT22IG4Jpo3FPQy+mouRKCXFWO+r67v6MrHX2zeIA==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sql-autocomplete@1.1.1: + resolution: {integrity: sha512-0Fz1utcPC5m6qQiFDhIgyqNk8J0DyGBtv59++uUjkjM9vOdv6ugGuM+ZcjY0qyG9ofLmT6wLHSpx+2h6jm0t6Q==} + + sql.js@1.13.0: + resolution: {integrity: sha512-RJbVP1HRDlUUXahJ7VMTcu9Rm1Nzw+EBpoPr94vnbD4LwR715F3CcxE2G2k45PewcaZ57pjetYa+LoSJLAASgA==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-parser@0.1.11: + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} + + state-local@1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + stream-to-array@2.3.0: + resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superjson@1.13.3: + resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==} + engines: {node: '>=10'} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tailwind-merge@1.14.0: + resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} + + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar-fs@2.1.2: + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tdigest@0.1.2: + resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + + terser@5.39.1: + resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + throttle-debounce@5.0.2: + resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} + engines: {node: '>=12.22'} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trpc-koa-adapter@1.2.2: + resolution: {integrity: sha512-8kzRE8XU9X0PxL4fvCdIrPjGy/Fsd6v/GY0u1jv9D45W0mv+o+KiikR7s23wnfSutU8MIuxvXNqmSDYARqg93g==} + peerDependencies: + '@trpc/server': ^10.0.0-rc.4 + koa: '>=2.13.0' + + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + engines: {node: '>=18.0.0'} + hasBin: true + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.40: + resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unstorage@1.16.0: + resolution: {integrity: sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 || ^7.0.0 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + usehooks-ts@3.1.1: + resolution: {integrity: sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA==} + engines: {node: '>=16.15.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + valtio@1.11.2: + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + viem@2.23.2: + resolution: {integrity: sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.29.2: + resolution: {integrity: sha512-cukRxab90jvQ+TDD84sU3qB3UmejYqgCw4cX8SfWzvh7JPfZXI3kAMUaT5OSR2As1Mgvx1EJawccwPjGqkSSwA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vite-plugin-mud@2.2.21: + resolution: {integrity: sha512-t/Lmf25BInCYUEB8KbzqwXfxhqDnWEHPFQaFQYevjjBzI0VPl4UFsbdqLyMOZGw1U0NOCtS9VbM63RG1fLvnWg==} + peerDependencies: + vite: ^6.0.7 + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + + wagmi@2.12.11: + resolution: {integrity: sha512-CtK05Hl5nKVskiwvNEtxMIAMJwI8RF+6qwVqlhypDs+Y1c30gVnNnF7ivAuVs4xzJbAsZ5LUmsrVVxUMIC0KDg==} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webauthn-p256@0.0.10: + resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} + + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + 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 + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + 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 + + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + 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 + + xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} + engines: {node: '>=0.4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + + zod-validation-error@1.5.0: + resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==} + engines: {node: '>=16.0.0'} + peerDependencies: + zod: ^3.18.0 + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zustand@4.4.1: + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + + zustand@4.5.6: + resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@account-abstraction/contracts@0.7.0': + dependencies: + '@openzeppelin/contracts': 5.3.0 + '@uniswap/v3-periphery': 1.4.4 + + '@adraffy/ens-normalize@1.11.0': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@ark/schema@0.3.3': + dependencies: + '@ark/util': 0.2.2 + + '@ark/util@0.2.2': {} + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.804.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-kms@3.808.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/credential-provider-node': 3.808.0 + '@aws-sdk/middleware-host-header': 3.804.0 + '@aws-sdk/middleware-logger': 3.804.0 + '@aws-sdk/middleware-recursion-detection': 3.804.0 + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/region-config-resolver': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@aws-sdk/util-user-agent-browser': 3.804.0 + '@aws-sdk/util-user-agent-node': 3.808.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.2 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.5 + '@smithy/middleware-retry': 4.1.6 + '@smithy/middleware-serde': 4.0.4 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.13 + '@smithy/util-defaults-mode-node': 4.0.13 + '@smithy/util-endpoints': 3.0.4 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.808.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/middleware-host-header': 3.804.0 + '@aws-sdk/middleware-logger': 3.804.0 + '@aws-sdk/middleware-recursion-detection': 3.804.0 + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/region-config-resolver': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@aws-sdk/util-user-agent-browser': 3.804.0 + '@aws-sdk/util-user-agent-node': 3.808.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.2 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.5 + '@smithy/middleware-retry': 4.1.6 + '@smithy/middleware-serde': 4.0.4 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.13 + '@smithy/util-defaults-mode-node': 4.0.13 + '@smithy/util-endpoints': 3.0.4 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.808.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/core': 3.3.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/property-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/signature-v4': 5.1.0 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + '@smithy/util-middleware': 4.0.2 + fast-xml-parser: 4.4.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/property-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + '@smithy/util-stream': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/credential-provider-env': 3.808.0 + '@aws-sdk/credential-provider-http': 3.808.0 + '@aws-sdk/credential-provider-process': 3.808.0 + '@aws-sdk/credential-provider-sso': 3.808.0 + '@aws-sdk/credential-provider-web-identity': 3.808.0 + '@aws-sdk/nested-clients': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/credential-provider-imds': 4.0.4 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.808.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.808.0 + '@aws-sdk/credential-provider-http': 3.808.0 + '@aws-sdk/credential-provider-ini': 3.808.0 + '@aws-sdk/credential-provider-process': 3.808.0 + '@aws-sdk/credential-provider-sso': 3.808.0 + '@aws-sdk/credential-provider-web-identity': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/credential-provider-imds': 4.0.4 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.808.0': + dependencies: + '@aws-sdk/client-sso': 3.808.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/token-providers': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/nested-clients': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/middleware-host-header@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@smithy/core': 3.3.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.808.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/middleware-host-header': 3.804.0 + '@aws-sdk/middleware-logger': 3.804.0 + '@aws-sdk/middleware-recursion-detection': 3.804.0 + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/region-config-resolver': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@aws-sdk/util-user-agent-browser': 3.804.0 + '@aws-sdk/util-user-agent-node': 3.808.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.2 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.5 + '@smithy/middleware-retry': 4.1.6 + '@smithy/middleware-serde': 4.0.4 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.13 + '@smithy/util-defaults-mode-node': 4.0.13 + '@smithy/util-endpoints': 3.0.4 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.808.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.808.0': + dependencies: + '@aws-sdk/nested-clients': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.804.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.808.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/types': 4.2.0 + '@smithy/util-endpoints': 3.0.4 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.804.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/types': 4.2.0 + bowser: 2.11.0 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.808.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.2': {} + + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.27.1': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@coinbase/wallet-sdk@3.9.3': + dependencies: + bn.js: 5.2.2 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 7.1.0 + eth-json-rpc-filters: 6.0.1 + eventemitter3: 5.0.1 + keccak: 3.0.4 + preact: 10.26.6 + sha.js: 2.4.11 + transitivePeerDependencies: + - supports-color + + '@coinbase/wallet-sdk@4.0.4': + dependencies: + buffer: 6.0.3 + clsx: 1.2.1 + eventemitter3: 5.0.1 + keccak: 3.0.4 + preact: 10.26.6 + sha.js: 2.4.11 + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.25.4': + optional: true + + '@esbuild/android-arm64@0.25.4': + optional: true + + '@esbuild/android-arm@0.25.4': + optional: true + + '@esbuild/android-x64@0.25.4': + optional: true + + '@esbuild/darwin-arm64@0.25.4': + optional: true + + '@esbuild/darwin-x64@0.25.4': + optional: true + + '@esbuild/freebsd-arm64@0.25.4': + optional: true + + '@esbuild/freebsd-x64@0.25.4': + optional: true + + '@esbuild/linux-arm64@0.25.4': + optional: true + + '@esbuild/linux-arm@0.25.4': + optional: true + + '@esbuild/linux-ia32@0.25.4': + optional: true + + '@esbuild/linux-loong64@0.25.4': + optional: true + + '@esbuild/linux-mips64el@0.25.4': + optional: true + + '@esbuild/linux-ppc64@0.25.4': + optional: true + + '@esbuild/linux-riscv64@0.25.4': + optional: true + + '@esbuild/linux-s390x@0.25.4': + optional: true + + '@esbuild/linux-x64@0.25.4': + optional: true + + '@esbuild/netbsd-arm64@0.25.4': + optional: true + + '@esbuild/netbsd-x64@0.25.4': + optional: true + + '@esbuild/openbsd-arm64@0.25.4': + optional: true + + '@esbuild/openbsd-x64@0.25.4': + optional: true + + '@esbuild/sunos-x64@0.25.4': + optional: true + + '@esbuild/win32-arm64@0.25.4': + optional: true + + '@esbuild/win32-ia32@0.25.4': + optional: true + + '@esbuild/win32-x64@0.25.4': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@ethereumjs/common@3.2.0': + dependencies: + '@ethereumjs/util': 8.1.0 + crc-32: 1.2.2 + + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/tx@4.2.0': + dependencies: + '@ethereumjs/common': 3.2.0 + '@ethereumjs/rlp': 4.0.1 + '@ethereumjs/util': 8.1.0 + ethereum-cryptography: 2.2.1 + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + + '@floating-ui/core@1.7.0': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.7.0': + dependencies: + '@floating-ui/core': 1.7.0 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.7.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/utils@0.2.9': {} + + '@hookform/resolvers@3.10.0(react-hook-form@7.56.3(react@18.2.0))': + dependencies: + react-hook-form: 7.56.3(react@18.2.0) + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/ttlcache@1.4.1': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/create-cache-key-function@29.7.0': + dependencies: + '@jest/types': 29.6.3 + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.18 + jest-mock: 29.7.0 + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.15.18 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.27.1 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.15.18 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@koa/cors@4.0.0': + dependencies: + vary: 1.1.2 + + '@koa/router@12.0.2': + dependencies: + debug: 4.4.1 + http-errors: 2.0.0 + koa-compose: 4.1.0 + methods: 1.1.2 + path-to-regexp: 6.3.0 + transitivePeerDependencies: + - supports-color + + '@latticexyz/abi-ts@2.2.21': + dependencies: + chalk: 5.4.1 + debug: 4.4.1 + glob: 10.4.5 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + '@latticexyz/block-logs-stream@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + debug: 4.4.1 + rxjs: 7.5.5 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/block-logs-stream@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + debug: 4.4.1 + rxjs: 7.5.5 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/cli@2.2.21(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(better-sqlite3@8.7.0)(bufferutil@4.0.9)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@ark/util': 0.2.2 + '@aws-sdk/client-kms': 3.808.0 + '@latticexyz/abi-ts': 2.2.21 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/gas-report': 2.2.21 + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store-sync': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/utils': 2.2.21 + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world-module-callwithsignature': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world-module-metadata': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + asn1.js: 5.4.1 + chalk: 5.4.1 + chokidar: 3.6.0 + debug: 4.4.1 + dotenv: 16.5.0 + execa: 9.5.3 + find-up: 6.3.0 + glob: 10.4.5 + openurl: 1.1.1 + p-queue: 7.4.1 + p-retry: 5.1.2 + path: 0.12.7 + rxjs: 7.5.5 + throttle-debounce: 5.0.2 + toposort: 2.0.2 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + yargs: 17.7.2 + zod: 3.23.8 + zod-validation-error: 1.5.0(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@tanstack/react-query' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - aws-crt + - better-sqlite3 + - bufferutil + - bun-types + - immer + - knex + - mysql2 + - pg + - react + - sqlite3 + - supports-color + - typescript + - utf-8-validate + - wagmi + + '@latticexyz/cli@2.2.21(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(better-sqlite3@8.7.0)(bufferutil@4.0.9)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@ark/util': 0.2.2 + '@aws-sdk/client-kms': 3.808.0 + '@latticexyz/abi-ts': 2.2.21 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/gas-report': 2.2.21 + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store-sync': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/utils': 2.2.21 + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world-module-callwithsignature': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world-module-metadata': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + asn1.js: 5.4.1 + chalk: 5.4.1 + chokidar: 3.6.0 + debug: 4.4.1 + dotenv: 16.5.0 + execa: 9.5.3 + find-up: 6.3.0 + glob: 10.4.5 + openurl: 1.1.1 + p-queue: 7.4.1 + p-retry: 5.1.2 + path: 0.12.7 + rxjs: 7.5.5 + throttle-debounce: 5.0.2 + toposort: 2.0.2 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + yargs: 17.7.2 + zod: 3.23.8 + zod-validation-error: 1.5.0(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@tanstack/react-query' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - aws-crt + - better-sqlite3 + - bufferutil + - bun-types + - immer + - knex + - mysql2 + - pg + - react + - sqlite3 + - supports-color + - typescript + - utf-8-validate + - wagmi + + '@latticexyz/common@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@solidity-parser/parser': 0.16.2 + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + debug: 4.4.1 + execa: 9.5.3 + p-queue: 7.4.1 + p-retry: 5.1.2 + prettier: 3.2.5 + prettier-plugin-solidity: 1.3.1(prettier@3.2.5) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + '@aws-sdk/client-kms': 3.808.0 + asn1.js: 5.4.1 + transitivePeerDependencies: + - supports-color + - typescript + - zod + + '@latticexyz/common@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@solidity-parser/parser': 0.16.2 + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + debug: 4.4.1 + execa: 9.5.3 + p-queue: 7.4.1 + p-retry: 5.1.2 + prettier: 3.2.5 + prettier-plugin-solidity: 1.3.1(prettier@3.2.5) + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + '@aws-sdk/client-kms': 3.808.0 + asn1.js: 5.4.1 + transitivePeerDependencies: + - supports-color + - typescript + - zod + + '@latticexyz/config@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + find-up: 6.3.0 + tsx: 4.19.4 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/config@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + find-up: 6.3.0 + tsx: 4.19.4 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/entrykit@2.2.21(@aws-sdk/client-kms@3.808.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react-dom@18.2.7)(@types/react@18.2.22)(asn1.js@5.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@account-abstraction/contracts': 0.7.0 + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/paymaster': 2.2.21 + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world-module-callwithsignature': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@rainbow-me/rainbowkit': 2.1.7(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@tanstack/react-query': 5.76.1(react@18.2.0) + debug: 4.4.1 + dotenv: 16.5.0 + permissionless: 0.2.30(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(webauthn-p256@0.0.10) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-error-boundary: 5.0.0(react@18.2.0) + react-merge-refs: 2.1.1 + tailwind-merge: 1.14.0 + usehooks-ts: 3.1.1(react@18.2.0) + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + webauthn-p256: 0.0.10 + zustand: 4.5.6(@types/react@18.2.22)(react@18.2.0) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@types/react' + - '@types/react-dom' + - asn1.js + - babel-plugin-macros + - immer + - supports-color + - typescript + - zod + + '@latticexyz/explorer@2.2.21(@aws-sdk/client-kms@3.808.0)(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(@tanstack/query-core@5.76.0)(@types/react-dom@18.2.7)(@types/react@18.2.22)(asn1.js@5.4.1)(bufferutil@4.0.9)(kysely@0.26.3)(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(rollup@4.40.2)(sql.js@1.13.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + '@hookform/resolvers': 3.10.0(react-hook-form@7.56.3(react@18.2.0)) + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store-indexer': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(kysely@0.26.3)(react@18.2.0)(sql.js@1.13.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/store-sync': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@monaco-editor/react': 4.7.0(monaco-editor@0.52.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-checkbox': 1.3.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dropdown-menu': 2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-label': 2.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-select': 2.2.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-separator': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-tooltip': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/themes': 3.2.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@rainbow-me/rainbowkit': 2.2.4(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@tanstack/react-query': 5.76.1(react@18.2.0) + '@tanstack/react-table': 8.21.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + better-sqlite3: 8.7.0 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + cmdk: 1.0.0(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + debug: 4.4.1 + lucide-react: 0.408.0(react@18.2.0) + monaco-editor: 0.52.2 + next: 14.2.5(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + node-sql-parser: 5.3.9 + nuqs: 1.20.0(next@14.2.5(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + query-string: 9.1.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-hook-form: 7.56.3(react@18.2.0) + react18-json-view: 0.2.9(react@18.2.0) + sonner: 1.7.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + sql-autocomplete: 1.1.1 + tailwind-merge: 1.14.0 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + yargs: 17.7.2 + zod: 3.23.8 + zustand: 4.5.6(@types/react@18.2.22)(react@18.2.0) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/core' + - '@capacitor/preferences' + - '@cloudflare/workers-types' + - '@deno/kv' + - '@libsql/client' + - '@neondatabase/serverless' + - '@netlify/blobs' + - '@opentelemetry/api' + - '@planetscale/database' + - '@playwright/test' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - '@vercel/postgres' + - asn1.js + - aws4fetch + - babel-plugin-macros + - bufferutil + - bun-types + - db0 + - encoding + - immer + - ioredis + - knex + - kysely + - mysql2 + - pg + - react-native + - rolldown + - rollup + - sass + - sql.js + - sqlite3 + - supports-color + - typescript + - uploadthing + - utf-8-validate + + '@latticexyz/explorer@2.2.21(@aws-sdk/client-kms@3.808.0)(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(@tanstack/query-core@5.76.0)(@types/react-dom@18.2.7)(@types/react@18.2.22)(asn1.js@5.4.1)(bufferutil@4.0.9)(kysely@0.26.3)(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(rollup@4.40.2)(sql.js@1.13.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + '@hookform/resolvers': 3.10.0(react-hook-form@7.56.3(react@18.2.0)) + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store-indexer': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(kysely@0.26.3)(react@18.2.0)(sql.js@1.13.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/store-sync': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@monaco-editor/react': 4.7.0(monaco-editor@0.52.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-checkbox': 1.3.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dropdown-menu': 2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-label': 2.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-select': 2.2.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-separator': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-tooltip': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/themes': 3.2.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@rainbow-me/rainbowkit': 2.2.4(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@tanstack/react-query': 5.76.1(react@18.2.0) + '@tanstack/react-table': 8.21.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + better-sqlite3: 8.7.0 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + cmdk: 1.0.0(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + debug: 4.4.1 + lucide-react: 0.408.0(react@18.2.0) + monaco-editor: 0.52.2 + next: 14.2.5(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + node-sql-parser: 5.3.9 + nuqs: 1.20.0(next@14.2.5(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + query-string: 9.1.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-hook-form: 7.56.3(react@18.2.0) + react18-json-view: 0.2.9(react@18.2.0) + sonner: 1.7.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + sql-autocomplete: 1.1.1 + tailwind-merge: 1.14.0 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + yargs: 17.7.2 + zod: 3.23.8 + zustand: 4.5.6(@types/react@18.2.22)(react@18.2.0) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/core' + - '@capacitor/preferences' + - '@cloudflare/workers-types' + - '@deno/kv' + - '@libsql/client' + - '@neondatabase/serverless' + - '@netlify/blobs' + - '@opentelemetry/api' + - '@planetscale/database' + - '@playwright/test' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - '@vercel/postgres' + - asn1.js + - aws4fetch + - babel-plugin-macros + - bufferutil + - bun-types + - db0 + - encoding + - immer + - ioredis + - knex + - kysely + - mysql2 + - pg + - react-native + - rolldown + - rollup + - sass + - sql.js + - sqlite3 + - supports-color + - typescript + - uploadthing + - utf-8-validate + + '@latticexyz/gas-report@2.2.21': + dependencies: + chalk: 5.4.1 + dotenv: 16.5.0 + execa: 9.5.3 + stream-to-array: 2.3.0 + strip-ansi: 7.1.0 + table: 6.9.0 + yargs: 17.7.2 + + '@latticexyz/paymaster@2.2.21': {} + + '@latticexyz/protocol-parser@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/protocol-parser@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/react@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/recs': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + fast-deep-equal: 3.1.3 + mobx: 6.13.7 + react: 18.2.0 + rxjs: 7.5.5 + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - viem + - zod + + '@latticexyz/recs@2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/utils': 2.2.21 + mobx: 6.13.7 + rxjs: 7.5.5 + transitivePeerDependencies: + - typescript + - viem + - zod + + '@latticexyz/recs@2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/utils': 2.2.21 + mobx: 6.13.7 + rxjs: 7.5.5 + transitivePeerDependencies: + - typescript + - viem + - zod + + '@latticexyz/schema-type@2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - typescript + - zod + + '@latticexyz/schema-type@2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - typescript + - zod + + '@latticexyz/stash@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + react: 18.2.0 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/stash@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + react: 18.2.0 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/store-indexer@2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(kysely@0.26.3)(react@18.2.0)(sql.js@1.13.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@koa/cors': 4.0.0 + '@koa/router': 12.0.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store-sync': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@sentry/node': 7.120.3 + '@sentry/profiling-node': 1.3.5(@sentry/node@7.120.3) + '@sentry/utils': 7.120.3 + '@trpc/client': 10.34.0(@trpc/server@10.34.0) + '@trpc/server': 10.34.0 + accepts: 1.3.8 + better-sqlite3: 8.7.0 + debug: 4.4.1 + dotenv: 16.5.0 + drizzle-orm: 0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.13.0) + koa: 2.16.1 + koa-compose: 4.1.0 + postgres: 3.3.5 + prom-client: 15.1.3 + rxjs: 7.5.5 + superjson: 1.13.3 + trpc-koa-adapter: 1.2.2(@trpc/server@10.34.0)(koa@2.16.1) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: 3.23.8 + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@tanstack/react-query' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - asn1.js + - bun-types + - immer + - knex + - kysely + - mysql2 + - pg + - react + - sql.js + - sqlite3 + - supports-color + - typescript + - wagmi + + '@latticexyz/store-indexer@2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(kysely@0.26.3)(react@18.2.0)(sql.js@1.13.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@koa/cors': 4.0.0 + '@koa/router': 12.0.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store-sync': 2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + '@sentry/node': 7.120.3 + '@sentry/profiling-node': 1.3.5(@sentry/node@7.120.3) + '@sentry/utils': 7.120.3 + '@trpc/client': 10.34.0(@trpc/server@10.34.0) + '@trpc/server': 10.34.0 + accepts: 1.3.8 + better-sqlite3: 8.7.0 + debug: 4.4.1 + dotenv: 16.5.0 + drizzle-orm: 0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.13.0) + koa: 2.16.1 + koa-compose: 4.1.0 + postgres: 3.3.5 + prom-client: 15.1.3 + rxjs: 7.5.5 + superjson: 1.13.3 + trpc-koa-adapter: 1.2.2(@trpc/server@10.34.0)(koa@2.16.1) + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: 3.23.8 + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@tanstack/react-query' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - asn1.js + - bun-types + - immer + - knex + - kysely + - mysql2 + - pg + - react + - sql.js + - sqlite3 + - supports-color + - typescript + - wagmi + + '@latticexyz/store-sync@2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/recs': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/stash': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@trpc/client': 10.34.0(@trpc/server@10.34.0) + '@trpc/server': 10.34.0 + change-case: 5.4.4 + debug: 4.4.1 + drizzle-orm: 0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(kysely@0.26.3)(postgres@3.4.5)(sql.js@1.13.0) + fast-deep-equal: 3.1.3 + kysely: 0.26.3 + postgres: 3.4.5 + rxjs: 7.5.5 + sql.js: 1.13.0 + superjson: 1.13.3 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: 3.23.8 + zustand: 4.5.6(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + react: 18.2.0 + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - asn1.js + - better-sqlite3 + - bun-types + - immer + - knex + - mysql2 + - pg + - sqlite3 + - supports-color + - typescript + + '@latticexyz/store-sync@2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/recs': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/stash': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@trpc/client': 10.34.0(@trpc/server@10.34.0) + '@trpc/server': 10.34.0 + change-case: 5.4.4 + debug: 4.4.1 + drizzle-orm: 0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(kysely@0.26.3)(postgres@3.4.5)(sql.js@1.13.0) + fast-deep-equal: 3.1.3 + kysely: 0.26.3 + postgres: 3.4.5 + rxjs: 7.5.5 + sql.js: 1.13.0 + superjson: 1.13.3 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: 3.23.8 + zustand: 4.5.6(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + react: 18.2.0 + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - asn1.js + - better-sqlite3 + - bun-types + - immer + - knex + - mysql2 + - pg + - sqlite3 + - supports-color + - typescript + + '@latticexyz/store-sync@2.2.21(@aws-sdk/client-kms@3.808.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/recs': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/stash': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@trpc/client': 10.34.0(@trpc/server@10.34.0) + '@trpc/server': 10.34.0 + change-case: 5.4.4 + debug: 4.4.1 + drizzle-orm: 0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(kysely@0.26.3)(postgres@3.4.5)(sql.js@1.13.0) + fast-deep-equal: 3.1.3 + kysely: 0.26.3 + postgres: 3.4.5 + rxjs: 7.5.5 + sql.js: 1.13.0 + superjson: 1.13.3 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: 3.23.8 + zustand: 4.5.6(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + react: 18.2.0 + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - asn1.js + - better-sqlite3 + - bun-types + - immer + - knex + - mysql2 + - pg + - sqlite3 + - supports-color + - typescript + + '@latticexyz/store@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + arktype: 2.0.0-beta.6 + debug: 4.4.1 + optionalDependencies: + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/store@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + arktype: 2.0.0-beta.6 + debug: 4.4.1 + optionalDependencies: + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/utils@2.2.21': + dependencies: + mobx: 6.13.7 + proxy-deep: 3.1.1 + rxjs: 7.5.5 + + '@latticexyz/world-module-callwithsignature@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - viem + - zod + + '@latticexyz/world-module-callwithsignature@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - viem + - zod + + '@latticexyz/world-module-metadata@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - viem + - zod + + '@latticexyz/world-modules@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + zod: 3.23.8 + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - viem + + '@latticexyz/world@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + arktype: 2.0.0-beta.6 + debug: 4.4.1 + optionalDependencies: + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/world@2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.808.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) + arktype: 2.0.0-beta.6 + debug: 4.4.1 + optionalDependencies: + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@lit-labs/ssr-dom-shim@1.3.0': {} + + '@lit/reactive-element@1.6.3': + dependencies: + '@lit-labs/ssr-dom-shim': 1.3.0 + + '@metamask/eth-json-rpc-provider@1.0.1': + dependencies: + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 5.0.2 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-engine@7.3.3': + dependencies: + '@metamask/rpc-errors': 6.4.0 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-engine@8.0.2': + dependencies: + '@metamask/rpc-errors': 6.4.0 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-middleware-stream@7.0.2': + dependencies: + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + readable-stream: 3.6.2 + transitivePeerDependencies: + - supports-color + + '@metamask/object-multiplex@2.1.0': + dependencies: + once: 1.4.0 + readable-stream: 3.6.2 + + '@metamask/onboarding@1.0.1': + dependencies: + bowser: 2.11.0 + + '@metamask/providers@16.1.0': + dependencies: + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/json-rpc-middleware-stream': 7.0.2 + '@metamask/object-multiplex': 2.1.0 + '@metamask/rpc-errors': 6.4.0 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + detect-browser: 5.3.0 + extension-port-stream: 3.0.0 + fast-deep-equal: 3.1.3 + is-stream: 2.0.1 + readable-stream: 3.6.2 + webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - supports-color + + '@metamask/rpc-errors@6.4.0': + dependencies: + '@metamask/utils': 9.3.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + + '@metamask/safe-event-emitter@2.0.0': {} + + '@metamask/safe-event-emitter@3.1.2': {} + + '@metamask/sdk-communication-layer@0.28.2(cross-fetch@4.1.0)(eciesjs@0.3.21)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + bufferutil: 4.0.9 + cross-fetch: 4.1.0 + date-fns: 2.30.0 + debug: 4.4.1 + eciesjs: 0.3.21 + eventemitter2: 6.4.9 + readable-stream: 3.6.2 + socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + utf-8-validate: 5.0.10 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + + '@metamask/sdk-install-modal-web@0.28.1(i18next@23.11.5)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)': + dependencies: + i18next: 23.11.5 + qr-code-styling: 1.9.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-native: 0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10) + + '@metamask/sdk@0.28.2(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(utf-8-validate@5.0.10)': + dependencies: + '@metamask/onboarding': 1.0.1 + '@metamask/providers': 16.1.0 + '@metamask/sdk-communication-layer': 0.28.2(cross-fetch@4.1.0)(eciesjs@0.3.21)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@metamask/sdk-install-modal-web': 0.28.1(i18next@23.11.5)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) + '@types/dom-screen-wake-lock': 1.0.3 + '@types/uuid': 10.0.0 + bowser: 2.11.0 + cross-fetch: 4.1.0 + debug: 4.4.1 + eciesjs: 0.3.21 + eth-rpc-errors: 4.0.3 + eventemitter2: 6.4.9 + i18next: 23.11.5 + i18next-browser-languagedetector: 7.1.0 + obj-multiplex: 1.0.0 + pump: 3.0.2 + qrcode-terminal-nooctal: 0.12.1 + react-native-webview: 11.26.1(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) + readable-stream: 3.6.2 + rollup-plugin-visualizer: 5.14.0(rollup@4.40.2) + socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + util: 0.12.5 + uuid: 8.3.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - bufferutil + - encoding + - react-native + - rolldown + - rollup + - supports-color + - utf-8-validate + + '@metamask/superstruct@3.2.1': {} + + '@metamask/utils@5.0.2': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@types/debug': 4.1.7 + debug: 4.4.1 + semver: 7.7.2 + superstruct: 1.0.4 + transitivePeerDependencies: + - supports-color + + '@metamask/utils@8.5.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.2.1 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + '@types/debug': 4.1.7 + debug: 4.4.1 + pony-cause: 2.1.11 + semver: 7.7.2 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + '@metamask/utils@9.3.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.2.1 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + '@types/debug': 4.1.7 + debug: 4.4.1 + pony-cause: 2.1.11 + semver: 7.7.2 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + '@monaco-editor/loader@1.5.0': + dependencies: + state-local: 1.0.7 + + '@monaco-editor/react@4.7.0(monaco-editor@0.52.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@monaco-editor/loader': 1.5.0 + monaco-editor: 0.52.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@motionone/animation@10.18.0': + dependencies: + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.8.1 + + '@motionone/dom@10.18.0': + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + hey-listen: 1.0.8 + tslib: 2.8.1 + + '@motionone/easing@10.18.0': + dependencies: + '@motionone/utils': 10.18.0 + tslib: 2.8.1 + + '@motionone/generators@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.8.1 + + '@motionone/svelte@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.8.1 + + '@motionone/types@10.17.1': {} + + '@motionone/utils@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + hey-listen: 1.0.8 + tslib: 2.8.1 + + '@motionone/vue@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.8.1 + + '@next/env@14.2.5': {} + + '@next/swc-darwin-arm64@14.2.5': + optional: true + + '@next/swc-darwin-x64@14.2.5': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.5': + optional: true + + '@next/swc-linux-arm64-musl@14.2.5': + optional: true + + '@next/swc-linux-x64-gnu@14.2.5': + optional: true + + '@next/swc-linux-x64-musl@14.2.5': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.5': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.5': + optional: true + + '@next/swc-win32-x64-msvc@14.2.5': + optional: true + + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/curves@1.8.1': + dependencies: + '@noble/hashes': 1.7.1 + + '@noble/curves@1.8.2': + dependencies: + '@noble/hashes': 1.7.2 + + '@noble/curves@1.9.0': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.7.1': {} + + '@noble/hashes@1.7.2': {} + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@opentelemetry/api@1.9.0': {} + + '@openzeppelin/contracts@3.4.2-solc-0.7': {} + + '@openzeppelin/contracts@5.3.0': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.27.1 + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-accessible-icon@1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-accordion@1.2.10(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collapsible': 1.1.10(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-alert-dialog@1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-arrow@1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-aspect-ratio@1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-avatar@1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-checkbox@1.3.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-collapsible@1.1.10(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-collection@1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-context-menu@2.2.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-menu': 2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-context@1.0.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-context@1.1.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-dialog@1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.6.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-direction@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-dismissable-layer@1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-dropdown-menu@2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-menu': 2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-focus-guards@1.1.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-focus-scope@1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-form@0.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-label': 2.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-hover-card@1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-id@1.0.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-id@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-label@2.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-menu@2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.6.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-menubar@1.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-menu': 2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-navigation-menu@1.2.12(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-one-time-password-field@0.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-password-toggle-field@0.1.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-popover@1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.6.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-popper@1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/rect': 1.1.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-portal@1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-presence@1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-primitive@2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-progress@1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-radio-group@1.3.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-roving-focus@1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-scroll-area@1.2.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-select@2.2.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.6.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-separator@1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-slider@1.3.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-slot@1.0.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-slot@1.2.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-switch@1.2.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-tabs@1.1.11(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-toast@1.2.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-toggle-group@1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-toggle@1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-toolbar@1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-separator': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle-group': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-tooltip@1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + use-sync-external-store: 1.5.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.27.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-previous@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-rect@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-use-size@1.1.1(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.22 + + '@radix-ui/react-visually-hidden@1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@radix-ui/rect@1.1.1': {} + + '@radix-ui/themes@3.2.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/colors': 3.0.0 + classnames: 2.5.1 + radix-ui: 1.4.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll-bar: 2.3.8(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + '@rainbow-me/rainbowkit@2.1.7(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + '@vanilla-extract/css': 1.15.5 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/sprinkles': 1.6.3(@vanilla-extract/css@1.15.5) + clsx: 2.1.1 + qrcode: 1.5.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.6.0(@types/react@18.2.22)(react@18.2.0) + ua-parser-js: 1.0.40 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@types/react' + - babel-plugin-macros + + '@rainbow-me/rainbowkit@2.2.4(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + '@vanilla-extract/css': 1.15.5 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/sprinkles': 1.6.3(@vanilla-extract/css@1.15.5) + clsx: 2.1.1 + qrcode: 1.5.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.6.2(@types/react@18.2.22)(react@18.2.0) + ua-parser-js: 1.0.40 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@types/react' + - babel-plugin-macros + + '@rainbow-me/rainbowkit@2.2.4(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + dependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + '@vanilla-extract/css': 1.15.5 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/sprinkles': 1.6.3(@vanilla-extract/css@1.15.5) + clsx: 2.1.1 + qrcode: 1.5.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.6.2(@types/react@18.2.22)(react@18.2.0) + ua-parser-js: 1.0.40 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: 2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@types/react' + - babel-plugin-macros + + '@react-native/assets-registry@0.79.2': {} + + '@react-native/codegen@0.79.2(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + glob: 7.2.3 + hermes-parser: 0.25.1 + invariant: 2.2.4 + nullthrows: 1.1.1 + yargs: 17.7.2 + + '@react-native/community-cli-plugin@0.79.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@react-native/dev-middleware': 0.79.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + chalk: 4.1.2 + debug: 2.6.9 + invariant: 2.2.4 + metro: 0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-config: 0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-core: 0.82.3 + semver: 7.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@react-native/debugger-frontend@0.79.2': {} + + '@react-native/dev-middleware@0.79.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.79.2 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 + connect: 3.7.0 + debug: 2.6.9 + invariant: 2.2.4 + nullthrows: 1.1.1 + open: 7.4.2 + serve-static: 1.16.2 + ws: 6.2.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@react-native/gradle-plugin@0.79.2': {} + + '@react-native/js-polyfills@0.79.2': {} + + '@react-native/normalize-colors@0.79.2': {} + + '@react-native/virtualized-lists@0.79.2(@types/react@18.2.22)(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 18.2.0 + react-native: 0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10) + optionalDependencies: + '@types/react': 18.2.22 + + '@rollup/rollup-android-arm-eabi@4.40.2': + optional: true + + '@rollup/rollup-android-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-x64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + + '@safe-global/safe-apps-provider@0.18.3(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)': + dependencies: + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)': + dependencies: + '@safe-global/safe-gateway-typescript-sdk': 3.23.1 + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-gateway-typescript-sdk@3.23.1': {} + + '@scure/base@1.1.9': {} + + '@scure/base@1.2.5': {} + + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip32@1.6.2': + dependencies: + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 + '@scure/base': 1.2.5 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.5.4': + dependencies: + '@noble/hashes': 1.7.2 + '@scure/base': 1.2.5 + + '@sec-ant/readable-stream@0.4.1': {} + + '@sentry-internal/tracing@7.120.3': + dependencies: + '@sentry/core': 7.120.3 + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + + '@sentry/core@7.120.3': + dependencies: + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + + '@sentry/integrations@7.120.3': + dependencies: + '@sentry/core': 7.120.3 + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + localforage: 1.10.0 + + '@sentry/node@7.120.3': + dependencies: + '@sentry-internal/tracing': 7.120.3 + '@sentry/core': 7.120.3 + '@sentry/integrations': 7.120.3 + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + + '@sentry/profiling-node@1.3.5(@sentry/node@7.120.3)': + dependencies: + '@sentry/node': 7.120.3 + detect-libc: 2.0.4 + node-abi: 3.75.0 + + '@sentry/types@7.120.3': {} + + '@sentry/utils@7.120.3': + dependencies: + '@sentry/types': 7.120.3 + + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@smithy/abort-controller@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/config-resolver@4.1.2': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@smithy/core@3.3.2': + dependencies: + '@smithy/middleware-serde': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.0.4': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.0.2': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/querystring-builder': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.0.2': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.1.5': + dependencies: + '@smithy/core': 3.3.2 + '@smithy/middleware-serde': 4.0.4 + '@smithy/node-config-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.1.6': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/protocol-http': 5.1.0 + '@smithy/service-error-classification': 4.0.3 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/middleware-serde@4.0.4': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.1.1': + dependencies: + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.0.4': + dependencies: + '@smithy/abort-controller': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/querystring-builder': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/property-provider@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.1.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.0.3': + dependencies: + '@smithy/types': 4.2.0 + + '@smithy/shared-ini-file-loader@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.1.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.2.5': + dependencies: + '@smithy/core': 3.3.2 + '@smithy/middleware-endpoint': 4.1.5 + '@smithy/middleware-stack': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-stream': 4.2.0 + tslib: 2.8.1 + + '@smithy/types@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.0.2': + dependencies: + '@smithy/querystring-parser': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.0.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.0.13': + dependencies: + '@smithy/property-provider': 4.0.2 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + bowser: 2.11.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.0.13': + dependencies: + '@smithy/config-resolver': 4.1.2 + '@smithy/credential-provider-imds': 4.0.4 + '@smithy/node-config-provider': 4.1.1 + '@smithy/property-provider': 4.0.2 + '@smithy/smithy-client': 4.2.5 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.0.4': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.0.3': + dependencies: + '@smithy/service-error-classification': 4.0.3 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.2.0': + dependencies: + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/types': 4.2.0 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + tslib: 2.8.1 + + '@socket.io/component-emitter@3.1.2': {} + + '@solidity-parser/parser@0.16.2': + dependencies: + antlr4ts: 0.5.0-alpha.4 + + '@solidity-parser/parser@0.17.0': {} + + '@stablelib/aead@1.0.1': {} + + '@stablelib/binary@1.0.1': + dependencies: + '@stablelib/int': 1.0.1 + + '@stablelib/bytes@1.0.1': {} + + '@stablelib/chacha20poly1305@1.0.1': + dependencies: + '@stablelib/aead': 1.0.1 + '@stablelib/binary': 1.0.1 + '@stablelib/chacha': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/poly1305': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/chacha@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/constant-time@1.0.1': {} + + '@stablelib/ed25519@1.0.3': + dependencies: + '@stablelib/random': 1.0.2 + '@stablelib/sha512': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hash@1.0.1': {} + + '@stablelib/hkdf@1.0.1': + dependencies: + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hmac@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/int@1.0.1': {} + + '@stablelib/keyagreement@1.0.1': + dependencies: + '@stablelib/bytes': 1.0.1 + + '@stablelib/poly1305@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/random@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha256@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha512@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/wipe@1.0.1': {} + + '@stablelib/x25519@1.0.3': + dependencies: + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.5': + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.8.1 + + '@tanstack/query-core@5.76.0': {} + + '@tanstack/react-query@5.76.1(react@18.2.0)': + dependencies: + '@tanstack/query-core': 5.76.0 + react: 18.2.0 + + '@tanstack/react-table@8.21.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@tanstack/table-core': 8.21.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@tanstack/table-core@8.21.3': {} + + '@trpc/client@10.34.0(@trpc/server@10.34.0)': + dependencies: + '@trpc/server': 10.34.0 + + '@trpc/server@10.34.0': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.1 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.1 + + '@types/debug@4.1.7': + dependencies: + '@types/ms': 2.1.0 + + '@types/dom-screen-wake-lock@1.0.3': {} + + '@types/estree@1.0.7': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.15.18 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/ms@2.1.0': {} + + '@types/node@22.15.18': + dependencies: + undici-types: 6.21.0 + + '@types/pegjs@0.10.6': {} + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.2.7': + dependencies: + '@types/react': 18.2.22 + + '@types/react@18.2.22': + dependencies: + '@types/prop-types': 15.7.14 + '@types/scheduler': 0.26.0 + csstype: 3.1.3 + + '@types/retry@0.12.1': {} + + '@types/scheduler@0.26.0': {} + + '@types/semver@7.7.0': {} + + '@types/stack-utils@2.0.3': {} + + '@types/trusted-types@2.0.7': {} + + '@types/uuid@10.0.0': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@7.1.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/scope-manager': 7.1.1 + '@typescript-eslint/type-utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/visitor-keys': 7.1.1 + debug: 4.4.1 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.7.2 + ts-api-utils: 1.4.3(typescript@5.4.2) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2)': + dependencies: + '@typescript-eslint/scope-manager': 7.1.1 + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.4.2) + '@typescript-eslint/visitor-keys': 7.1.1 + debug: 4.4.1 + eslint: 8.57.0 + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.1.1': + dependencies: + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/visitor-keys': 7.1.1 + + '@typescript-eslint/type-utils@7.1.1(eslint@8.57.0)(typescript@5.4.2)': + dependencies: + '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.4.2) + '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) + debug: 4.4.1 + eslint: 8.57.0 + ts-api-utils: 1.4.3(typescript@5.4.2) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.1.1': {} + + '@typescript-eslint/typescript-estree@7.1.1(typescript@5.4.2)': + dependencies: + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/visitor-keys': 7.1.1 + debug: 4.4.1 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.7.2 + ts-api-utils: 1.4.3(typescript@5.4.2) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.1.1(eslint@8.57.0)(typescript@5.4.2)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.0 + '@typescript-eslint/scope-manager': 7.1.1 + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.4.2) + eslint: 8.57.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.1.1': + dependencies: + '@typescript-eslint/types': 7.1.1 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.3.0': {} + + '@uniswap/lib@4.0.1-alpha': {} + + '@uniswap/v2-core@1.0.1': {} + + '@uniswap/v3-core@1.0.1': {} + + '@uniswap/v3-periphery@1.4.4': + dependencies: + '@openzeppelin/contracts': 3.4.2-solc-0.7 + '@uniswap/lib': 4.0.1-alpha + '@uniswap/v2-core': 1.0.1 + '@uniswap/v3-core': 1.0.1 + base64-sol: 1.0.1 + + '@vanilla-extract/css@1.15.5': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.7 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.6.0 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.2': + dependencies: + '@vanilla-extract/private': 1.0.7 + + '@vanilla-extract/private@1.0.7': {} + + '@vanilla-extract/sprinkles@1.6.3(@vanilla-extract/css@1.15.5)': + dependencies: + '@vanilla-extract/css': 1.15.5 + + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1))': + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1) + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1) + transitivePeerDependencies: + - supports-color + + '@wagmi/connectors@5.1.10(@types/react@18.2.22)(@wagmi/core@2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@coinbase/wallet-sdk': 4.0.4 + '@metamask/sdk': 0.28.2(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.3(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + '@wagmi/core': 2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@walletconnect/ethereum-provider': 2.16.1(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10) + '@walletconnect/modal': 2.6.2(@types/react@18.2.22)(react@18.2.0) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - react-dom + - react-native + - rolldown + - rollup + - supports-color + - uploadthing + - utf-8-validate + - zod + + '@wagmi/connectors@5.1.10(@types/react@18.2.22)(@wagmi/core@2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@coinbase/wallet-sdk': 4.0.4 + '@metamask/sdk': 0.28.2(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.3(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + '@wagmi/core': 2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@walletconnect/ethereum-provider': 2.16.1(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10) + '@walletconnect/modal': 2.6.2(@types/react@18.2.22)(react@18.2.0) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - react-dom + - react-native + - rolldown + - rollup + - supports-color + - uploadthing + - utf-8-validate + - zod + + '@wagmi/core@2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.4.2) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + zustand: 4.4.1(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@tanstack/query-core': 5.76.0 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/react' + - immer + - react + + '@wagmi/core@2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.4.2) + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + zustand: 4.4.1(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@tanstack/query-core': 5.76.0 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/react' + - immer + - react + + '@walletconnect/core@2.16.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.16.1 + '@walletconnect/utils': 2.16.1 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/environment@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/ethereum-provider@2.16.1(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.6.2(@types/react@18.2.22)(react@18.2.0) + '@walletconnect/sign-client': 2.16.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.16.1 + '@walletconnect/universal-provider': 2.16.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.16.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - uploadthing + - utf-8-validate + + '@walletconnect/events@1.0.1': + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + + '@walletconnect/heartbeat@1.2.2': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + events: 3.3.0 + + '@walletconnect/jsonrpc-http-connection@1.0.8': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.2.0 + events: 3.3.0 + transitivePeerDependencies: + - encoding + + '@walletconnect/jsonrpc-provider@1.0.14': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + + '@walletconnect/jsonrpc-types@1.0.4': + dependencies: + events: 3.3.0 + keyvaluestorage-interface: 1.0.0 + + '@walletconnect/jsonrpc-utils@1.0.8': + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.4 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@walletconnect/keyvaluestorage@1.1.1': + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.2 + unstorage: 1.16.0(idb-keyval@6.2.2) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/logger@2.1.2': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + + '@walletconnect/modal-core@2.6.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + valtio: 1.11.2(@types/react@18.2.22)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/modal-ui@2.6.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.22)(react@18.2.0) + lit: 2.8.0 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/modal@2.6.2(@types/react@18.2.22)(react@18.2.0)': + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.22)(react@18.2.0) + '@walletconnect/modal-ui': 2.6.2(@types/react@18.2.22)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/relay-api@1.0.11': + dependencies: + '@walletconnect/jsonrpc-types': 1.0.4 + + '@walletconnect/relay-auth@1.0.4': + dependencies: + '@stablelib/ed25519': 1.0.3 + '@stablelib/random': 1.0.2 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + uint8arrays: 3.1.0 + + '@walletconnect/safe-json@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/sign-client@2.16.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.16.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.16.1 + '@walletconnect/utils': 2.16.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/time@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/types@2.16.1': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/universal-provider@2.16.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.16.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.16.1 + '@walletconnect/utils': 2.16.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/utils@2.16.1': + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.16.1 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + elliptic: 6.6.1 + query-string: 7.1.3 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/window-getters@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/window-metadata@1.0.1': + dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 + + abitype@1.0.6(typescript@5.4.2)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.2 + zod: 3.23.8 + + abitype@1.0.8(typescript@5.4.2)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.2 + zod: 3.23.8 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + agent-base@7.1.3: {} + + ajv@6.12.6: + 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 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + anser@1.4.10: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + antlr4-c3@1.1.16: + dependencies: + antlr4ts: 0.5.0-alpha.4 + + antlr4@4.13.2: {} + + antlr4ts-sql@1.1.0: + dependencies: + antlr4ts: 0.5.0-alpha.4 + + antlr4ts@0.5.0-alpha.4: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + arktype@2.0.0-beta.6: + dependencies: + '@ark/schema': 0.3.3 + '@ark/util': 0.2.2 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + + array-union@2.1.0: {} + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + asap@2.0.6: {} + + asn1.js@5.4.1: + dependencies: + bn.js: 4.12.2 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + + ast-parents@0.0.1: {} + + astral-regex@2.0.0: {} + + async-function@1.0.0: {} + + async-limiter@1.0.1: {} + + async-mutex@0.2.6: + dependencies: + tslib: 2.8.1 + + atomic-sleep@1.0.0: {} + + autoprefixer@10.4.21(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-lite: 1.0.30001718 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + babel-jest@29.7.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.27.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-plugin-syntax-hermes-parser@0.25.1: + dependencies: + hermes-parser: 0.25.1 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) + + babel-preset-jest@29.6.3(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base64-sol@1.0.1: {} + + better-sqlite3@8.7.0: + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.3 + + big-integer@1.6.52: {} + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bintrees@1.0.2: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bn.js@4.12.2: {} + + bn.js@5.2.2: {} + + bowser@2.11.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.152 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufferutil@4.0.9: + dependencies: + node-gyp-build: 4.8.4 + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + cache-content-type@1.0.1: + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caller-callsite@2.0.0: + dependencies: + callsites: 2.0.0 + + caller-path@2.0.0: + dependencies: + caller-callsite: 2.0.0 + + callsites@2.0.0: {} + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001718: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + change-case@5.4.4: {} + + chokidar@3.6.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 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@1.1.4: {} + + chrome-launcher@0.15.2: + dependencies: + '@types/node': 22.15.18 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + + chromium-edge-launcher@0.2.0: + dependencies: + '@types/node': 22.15.18 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + + ci-info@2.0.0: {} + + ci-info@3.9.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + classnames@2.5.1: {} + + client-only@0.0.1: {} + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@1.2.1: {} + + clsx@2.1.1: {} + + cmdk@1.0.0(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + co@4.6.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@10.0.1: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + concat-map@0.0.1: {} + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-es@1.2.2: {} + + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + + core-util-is@1.0.3: {} + + cosmiconfig@5.2.1: + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + + cosmiconfig@8.3.6(typescript@5.4.2): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.4.2 + + crc-32@1.2.2: {} + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-fetch@4.1.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.27.1 + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + decode-uri-component@0.4.1: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent@1.6.0: {} + + deep-equal@1.0.1: {} + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + defu@6.1.4: {} + + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-browser@5.3.0: {} + + detect-libc@2.0.4: {} + + detect-node-es@1.1.0: {} + + didyoumean@1.2.2: {} + + dijkstrajs@1.0.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dotenv@16.5.0: {} + + drizzle-orm@0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.13.0): + optionalDependencies: + '@opentelemetry/api': 1.9.0 + better-sqlite3: 8.7.0 + kysely: 0.26.3 + postgres: 3.3.5 + sql.js: 1.13.0 + + drizzle-orm@0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(kysely@0.26.3)(postgres@3.4.5)(sql.js@1.13.0): + optionalDependencies: + '@opentelemetry/api': 1.9.0 + better-sqlite3: 8.7.0 + kysely: 0.26.3 + postgres: 3.4.5 + sql.js: 1.13.0 + + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} + + eciesjs@0.3.21: + dependencies: + futoin-hkdf: 1.5.3 + secp256k1: 5.0.1 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.152: {} + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encode-utf8@1.0.3: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + xmlhttprequest-ssl: 2.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.3: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-plugin-react@7.31.11(eslint@8.57.0): + dependencies: + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + eslint: 8.57.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.0: + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eth-block-tracker@7.1.0: + dependencies: + '@metamask/eth-json-rpc-provider': 1.0.1 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 5.0.2 + json-rpc-random-id: 1.0.1 + pify: 3.0.0 + transitivePeerDependencies: + - supports-color + + eth-json-rpc-filters@6.0.1: + dependencies: + '@metamask/safe-event-emitter': 3.1.2 + async-mutex: 0.2.6 + eth-query: 2.1.2 + json-rpc-engine: 6.1.0 + pify: 5.0.0 + + eth-query@2.1.2: + dependencies: + json-rpc-random-id: 1.0.1 + xtend: 4.0.2 + + eth-rpc-errors@4.0.3: + dependencies: + fast-safe-stringify: 2.1.1 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + event-target-shim@5.0.1: {} + + eventemitter2@6.4.9: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + execa@9.5.3: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + + expand-template@2.0.3: {} + + exponential-backoff@3.1.2: {} + + extension-port-stream@3.0.0: + dependencies: + readable-stream: 3.6.2 + webextension-polyfill: 0.10.0 + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + 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.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + + fast-uri@3.0.6: {} + + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.1.2 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-uri-to-path@1.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + filter-obj@5.1.0: {} + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + flow-enums-runtime@0.0.6: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-constants@1.0.0: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + futoin-hkdf@1.5.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + github-from-package@0.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + 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 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + h3@1.15.3: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.5 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.0 + radix3: 1.1.2 + ufo: 1.6.1 + uncrypto: 0.1.3 + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hermes-estree@0.25.1: {} + + hermes-estree@0.28.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + hermes-parser@0.28.1: + dependencies: + hermes-estree: 0.28.1 + + hey-listen@1.0.8: {} + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@8.0.1: {} + + i18next-browser-languagedetector@7.1.0: + dependencies: + '@babel/runtime': 7.27.1 + + i18next@23.11.5: + dependencies: + '@babel/runtime': 7.27.1 + + idb-keyval@6.2.2: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + image-size@1.2.1: + dependencies: + queue: 6.0.2 + + immediate@3.0.6: {} + + import-fresh@2.0.0: + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + interpret@1.4.0: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + iron-webcrypto@1.2.1: {} + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-directory@0.3.1: {} + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@4.1.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-stream@4.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-unicode-supported@2.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-what@4.1.16: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + + isows@1.0.6(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.18 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.15.18 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.18 + jest-util: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.18 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.15.18 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.7: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsc-safe-url@0.2.4: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-rpc-engine@6.1.0: + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + eth-rpc-errors: 4.0.3 + + json-rpc-random-id@1.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + keyvaluestorage-interface@1.0.0: {} + + koa-compose@4.1.0: {} + + koa-convert@2.0.0: + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + + koa@2.16.1: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.4.1 + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.1.0 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + kysely@0.26.3: {} + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + lighthouse-logger@1.4.2: + dependencies: + debug: 2.6.9 + marky: 1.3.0 + transitivePeerDependencies: + - supports-color + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lit-element@3.3.3: + dependencies: + '@lit-labs/ssr-dom-shim': 1.3.0 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 + + lit-html@2.8.0: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@2.8.0: + dependencies: + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.debounce@4.0.8: {} + + lodash.isequal@4.5.0: {} + + lodash.merge@4.6.2: {} + + lodash.throttle@4.1.1: {} + + lodash.truncate@4.4.2: {} + + lodash@4.17.21: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-react@0.408.0(react@18.2.0): + dependencies: + react: 18.2.0 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + marky@1.3.0: {} + + math-intrinsics@1.1.0: {} + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.27.1 + + media-typer@0.3.0: {} + + memoize-one@5.2.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + metro-babel-transformer@0.82.3: + dependencies: + '@babel/core': 7.27.1 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.28.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-cache-key@0.82.3: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-cache@0.82.3: + dependencies: + exponential-backoff: 3.1.2 + flow-enums-runtime: 0.0.6 + https-proxy-agent: 7.0.6 + metro-core: 0.82.3 + transitivePeerDependencies: + - supports-color + + metro-config@0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-cache: 0.82.3 + metro-core: 0.82.3 + metro-runtime: 0.82.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro-core@0.82.3: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.82.3 + + metro-file-map@0.82.3: + dependencies: + debug: 4.4.1 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + + metro-minify-terser@0.82.3: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.39.1 + + metro-resolver@0.82.3: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-runtime@0.82.3: + dependencies: + '@babel/runtime': 7.27.1 + flow-enums-runtime: 0.0.6 + + metro-source-map@0.82.3: + dependencies: + '@babel/traverse': 7.27.1 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.27.1' + '@babel/types': 7.27.1 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.82.3 + nullthrows: 1.1.1 + ob1: 0.82.3 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-symbolicate@0.82.3: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.82.3 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-transform-plugins@0.82.3: + dependencies: + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-transform-worker@0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + flow-enums-runtime: 0.0.6 + metro: 0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-babel-transformer: 0.82.3 + metro-cache: 0.82.3 + metro-cache-key: 0.82.3 + metro-minify-terser: 0.82.3 + metro-source-map: 0.82.3 + metro-transform-plugins: 0.82.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro@0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 4.4.1 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.28.1 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.82.3 + metro-cache: 0.82.3 + metro-cache-key: 0.82.3 + metro-config: 0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-core: 0.82.3 + metro-file-map: 0.82.3 + metro-resolver: 0.82.3 + metro-runtime: 0.82.3 + metro-source-map: 0.82.3 + metro-symbolicate: 0.82.3 + metro-transform-plugins: 0.82.3 + metro-transform-worker: 0.82.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + mime-types: 2.1.35 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + micro-ftch@0.3.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-response@3.1.0: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mipd@0.0.7(typescript@5.4.2): + optionalDependencies: + typescript: 5.4.2 + + mitt@3.0.1: {} + + mkdirp-classic@0.5.3: {} + + mkdirp@1.0.4: {} + + mobx@6.13.7: {} + + modern-ahocorasick@1.1.0: {} + + monaco-editor@0.52.2: {} + + motion@10.16.2: + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/dom': 10.18.0 + '@motionone/svelte': 10.16.4 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + '@motionone/vue': 10.16.4 + + mprocs@0.7.2: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + multiformats@9.9.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.11: {} + + napi-build-utils@2.0.0: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + next@14.2.5(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@next/env': 14.2.5 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001718 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.27.1)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.5 + '@next/swc-darwin-x64': 14.2.5 + '@next/swc-linux-arm64-gnu': 14.2.5 + '@next/swc-linux-arm64-musl': 14.2.5 + '@next/swc-linux-x64-gnu': 14.2.5 + '@next/swc-linux-x64-musl': 14.2.5 + '@next/swc-win32-arm64-msvc': 14.2.5 + '@next/swc-win32-ia32-msvc': 14.2.5 + '@next/swc-win32-x64-msvc': 14.2.5 + '@opentelemetry/api': 1.9.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-abi@3.75.0: + dependencies: + semver: 7.7.2 + + node-addon-api@2.0.2: {} + + node-addon-api@5.1.0: {} + + node-fetch-native@1.6.6: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.4: {} + + node-int64@0.4.0: {} + + node-mock-http@1.0.0: {} + + node-releases@2.0.19: {} + + node-sql-parser@5.3.9: + dependencies: + '@types/pegjs': 0.10.6 + big-integer: 1.6.52 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nullthrows@1.1.1: {} + + nuqs@1.20.0(next@14.2.5(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)): + dependencies: + mitt: 3.0.1 + next: 14.2.5(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + ob1@0.82.3: + dependencies: + flow-enums-runtime: 0.0.6 + + obj-multiplex@1.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + readable-stream: 2.3.8 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.hasown@1.1.4: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.6 + ufo: 1.6.1 + + on-exit-leak-free@0.2.0: {} + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + only@0.0.2: {} + + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openurl@1.1.1: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + ox@0.6.7(typescript@5.4.2)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.6.2 + '@scure/bip39': 1.5.4 + abitype: 1.0.8(typescript@5.4.2)(zod@3.23.8) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - zod + + ox@0.6.9(typescript@5.4.2)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.6.2 + '@scure/bip39': 1.5.4 + abitype: 1.0.8(typescript@5.4.2)(zod@3.23.8) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - zod + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-queue@7.4.1: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 5.1.0 + + p-retry@5.1.2: + dependencies: + '@types/retry': 0.12.1 + retry: 0.13.1 + + p-timeout@5.1.0: {} + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + path@0.12.7: + dependencies: + process: 0.11.10 + util: 0.10.4 + + permissionless@0.2.30(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(webauthn-p256@0.0.10): + dependencies: + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + webauthn-p256: 0.0.10 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pify@5.0.0: {} + + pino-abstract-transport@0.5.0: + dependencies: + duplexify: 4.1.3 + split2: 4.2.0 + + pino-std-serializers@4.0.0: {} + + pino@7.11.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + + pirates@4.0.7: {} + + pluralize@8.0.0: {} + + pngjs@5.0.0: {} + + pony-cause@2.1.11: {} + + possible-typed-array-names@1.1.0: {} + + postcss-import@15.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.5.3): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.3 + + postcss-load-config@4.0.2(postcss@8.5.3): + dependencies: + lilconfig: 3.1.3 + yaml: 2.7.1 + optionalDependencies: + postcss: 8.5.3 + + postcss-nested@6.2.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postgres@3.3.5: {} + + postgres@3.4.5: {} + + preact@10.26.6: {} + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.0.4 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.75.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.2 + tunnel-agent: 0.6.0 + + prelude-ls@1.2.1: {} + + prettier-plugin-solidity@1.3.1(prettier@3.2.5): + dependencies: + '@solidity-parser/parser': 0.17.0 + prettier: 3.2.5 + semver: 7.7.2 + solidity-comments-extractor: 0.0.8 + + prettier@2.8.8: + optional: true + + prettier@3.2.5: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + + process-nextick-args@2.0.1: {} + + process-warning@1.0.0: {} + + process@0.11.10: {} + + prom-client@15.1.3: + dependencies: + '@opentelemetry/api': 1.9.0 + tdigest: 0.1.2 + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-compare@2.5.1: {} + + proxy-deep@3.1.1: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + qr-code-styling@1.9.2: + dependencies: + qrcode-generator: 1.4.4 + + qrcode-generator@1.4.4: {} + + qrcode-terminal-nooctal@0.12.1: {} + + qrcode@1.5.3: + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + query-string@9.1.2: + dependencies: + decode-uri-component: 0.4.1 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + + queue-microtask@1.2.3: {} + + queue@6.0.2: + dependencies: + inherits: 2.0.4 + + quick-format-unescaped@4.0.4: {} + + radix-ui@1.4.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-accessible-icon': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-accordion': 1.2.10(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-alert-dialog': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-aspect-ratio': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-avatar': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-checkbox': 1.3.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-collapsible': 1.1.10(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context-menu': 2.2.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dropdown-menu': 2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-form': 0.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-hover-card': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-label': 2.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-menu': 2.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-menubar': 1.1.14(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-navigation-menu': 1.2.12(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-one-time-password-field': 0.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-password-toggle-field': 0.1.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': 1.1.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-progress': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-radio-group': 1.3.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-scroll-area': 1.2.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-select': 2.2.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-separator': 1.1.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slider': 1.3.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-switch': 1.2.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tabs': 1.1.11(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toast': 1.2.13(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle': 1.1.8(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle-group': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toolbar': 1.1.9(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tooltip': 1.2.6(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + '@types/react-dom': 18.2.7 + + radix3@1.1.2: {} + + range-parser@1.2.1: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-devtools-core@6.1.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + shell-quote: 1.8.2 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + react-dom@18.2.0(react@18.2.0): + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.2 + + react-error-boundary@5.0.0(react@18.2.0): + dependencies: + '@babel/runtime': 7.27.1 + react: 18.2.0 + + react-hook-form@7.56.3(react@18.2.0): + dependencies: + react: 18.2.0 + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-merge-refs@2.1.1: {} + + react-native-webview@11.26.1(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0): + dependencies: + escape-string-regexp: 2.0.0 + invariant: 2.2.4 + react: 18.2.0 + react-native: 0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10) + + react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.79.2 + '@react-native/codegen': 0.79.2(@babel/core@7.27.1) + '@react-native/community-cli-plugin': 0.79.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@react-native/gradle-plugin': 0.79.2 + '@react-native/js-polyfills': 0.79.2 + '@react-native/normalize-colors': 0.79.2 + '@react-native/virtualized-lists': 0.79.2(@types/react@18.2.22)(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.27.1) + babel-plugin-syntax-hermes-parser: 0.25.1 + base64-js: 1.5.1 + chalk: 4.1.2 + commander: 12.1.0 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + memoize-one: 5.2.1 + metro-runtime: 0.82.3 + metro-source-map: 0.82.3 + nullthrows: 1.1.1 + pretty-format: 29.7.0 + promise: 8.3.0 + react: 18.2.0 + react-devtools-core: 6.1.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + react-refresh: 0.14.2 + regenerator-runtime: 0.13.11 + scheduler: 0.25.0 + semver: 7.7.2 + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + ws: 6.2.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + yargs: 17.7.2 + optionalDependencies: + '@types/react': 18.2.22 + transitivePeerDependencies: + - '@babel/core' + - '@react-native-community/cli' + - bufferutil + - supports-color + - utf-8-validate + + react-refresh@0.14.2: {} + + react-refresh@0.17.0: {} + + react-remove-scroll-bar@2.3.8(@types/react@18.2.22)(react@18.2.0): + dependencies: + react: 18.2.0 + react-style-singleton: 2.2.3(@types/react@18.2.22)(react@18.2.0) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.22 + + react-remove-scroll@2.5.5(@types/react@18.2.22)(react@18.2.0): + dependencies: + react: 18.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@18.2.22)(react@18.2.0) + react-style-singleton: 2.2.3(@types/react@18.2.22)(react@18.2.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.2.22)(react@18.2.0) + use-sidecar: 1.1.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + + react-remove-scroll@2.6.0(@types/react@18.2.22)(react@18.2.0): + dependencies: + react: 18.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@18.2.22)(react@18.2.0) + react-style-singleton: 2.2.3(@types/react@18.2.22)(react@18.2.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.2.22)(react@18.2.0) + use-sidecar: 1.1.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + + react-remove-scroll@2.6.2(@types/react@18.2.22)(react@18.2.0): + dependencies: + react: 18.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@18.2.22)(react@18.2.0) + react-style-singleton: 2.2.3(@types/react@18.2.22)(react@18.2.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.2.22)(react@18.2.0) + use-sidecar: 1.1.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + + react-remove-scroll@2.6.3(@types/react@18.2.22)(react@18.2.0): + dependencies: + react: 18.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@18.2.22)(react@18.2.0) + react-style-singleton: 2.2.3(@types/react@18.2.22)(react@18.2.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.2.22)(react@18.2.0) + use-sidecar: 1.1.3(@types/react@18.2.22)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + + react-style-singleton@2.2.3(@types/react@18.2.22)(react@18.2.0): + dependencies: + get-nonce: 1.0.1 + react: 18.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.22 + + react18-json-view@0.2.9(react@18.2.0): + dependencies: + copy-to-clipboard: 3.3.3 + react: 18.2.0 + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@2.3.8: + 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 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + real-require@0.1.0: {} + + rechoir@0.6.2: + dependencies: + resolve: 1.22.10 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerator-runtime@0.13.11: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-main-filename@2.0.0: {} + + resolve-from@3.0.0: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + retry@0.13.1: {} + + reusify@1.1.0: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-visualizer@5.14.0(rollup@4.40.2): + dependencies: + open: 8.4.2 + picomatch: 4.0.2 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 4.40.2 + + rollup@4.40.2: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.5.5: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + scheduler@0.25.0: {} + + secp256k1@5.0.1: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + + semver@6.3.1: {} + + semver@7.7.2: {} + + send@0.19.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 + + serialize-error@2.1.0: {} + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setprototypeof@1.2.0: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.2: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shx@0.3.4: + dependencies: + minimist: 1.2.8 + shelljs: 0.8.5 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + slash@3.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-client: 6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + solhint-config-mud@2.2.21: {} + + solhint-plugin-mud@2.2.21: + dependencies: + '@solidity-parser/parser': 0.16.2 + + solhint@3.6.2(typescript@5.4.2): + dependencies: + '@solidity-parser/parser': 0.16.2 + ajv: 6.12.6 + antlr4: 4.13.2 + ast-parents: 0.0.1 + chalk: 4.1.2 + commander: 10.0.1 + cosmiconfig: 8.3.6(typescript@5.4.2) + fast-diff: 1.3.0 + glob: 8.1.0 + ignore: 5.3.2 + js-yaml: 4.1.0 + lodash: 4.17.21 + pluralize: 8.0.0 + semver: 7.7.2 + strip-ansi: 6.0.1 + table: 6.9.0 + text-table: 0.2.0 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - typescript + + solidity-comments-extractor@0.0.8: {} + + sonic-boom@2.8.0: + dependencies: + atomic-sleep: 1.0.0 + + sonner@1.7.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + sonner@2.0.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + split-on-first@1.1.0: {} + + split-on-first@3.0.0: {} + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + sql-autocomplete@1.1.1: + dependencies: + antlr4-c3: 1.1.16 + antlr4ts-sql: 1.1.0 + + sql.js@1.13.0: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackframe@1.3.4: {} + + stacktrace-parser@0.1.11: + dependencies: + type-fest: 0.7.1 + + state-local@1.0.7: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + stream-shift@1.0.3: {} + + stream-to-array@2.3.0: + dependencies: + any-promise: 1.3.0 + + streamsearch@1.1.0: {} + + strict-uri-encode@2.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-final-newline@4.0.0: {} + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + strnum@1.1.2: {} + + styled-jsx@5.1.1(@babel/core@7.27.1)(react@18.2.0): + dependencies: + client-only: 0.0.1 + react: 18.2.0 + optionalDependencies: + '@babel/core': 7.27.1 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + + superjson@1.13.3: + dependencies: + copy-anything: 3.0.5 + + superstruct@1.0.4: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwind-merge@1.14.0: {} + + tailwind-merge@2.6.0: {} + + tailwindcss@3.4.17: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3) + postcss-nested: 6.2.0(postcss@8.5.3) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tar-fs@2.1.2: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tdigest@0.1.2: + dependencies: + bintrees: 1.0.2 + + terser@5.39.1: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thread-stream@0.15.2: + dependencies: + real-require: 0.1.0 + + throat@5.0.0: {} + + throttle-debounce@5.0.2: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toggle-selection@1.0.6: {} + + toidentifier@1.0.1: {} + + toposort@2.0.2: {} + + tr46@0.0.3: {} + + trpc-koa-adapter@1.2.2(@trpc/server@10.34.0)(koa@2.16.1): + dependencies: + '@trpc/server': 10.34.0 + koa: 2.16.1 + + ts-api-utils@1.4.3(typescript@5.4.2): + dependencies: + typescript: 5.4.2 + + ts-interface-checker@0.1.13: {} + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tsscmp@1.0.6: {} + + tsx@4.19.4: + dependencies: + esbuild: 0.25.4 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.20.2: {} + + type-fest@0.7.1: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.4.2: {} + + ua-parser-js@1.0.40: {} + + ufo@1.6.1: {} + + uint8arrays@3.1.0: + dependencies: + multiformats: 9.9.0 + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + uncrypto@0.1.3: {} + + undici-types@6.21.0: {} + + unicorn-magic@0.3.0: {} + + unpipe@1.0.0: {} + + unstorage@1.16.0(idb-keyval@6.2.2): + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.5 + h3: 1.15.3 + lru-cache: 10.4.3 + node-fetch-native: 1.6.6 + ofetch: 1.4.1 + ufo: 1.6.1 + optionalDependencies: + idb-keyval: 6.2.2 + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.3(@types/react@18.2.22)(react@18.2.0): + dependencies: + react: 18.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.22 + + use-sidecar@1.1.3(@types/react@18.2.22)(react@18.2.0): + dependencies: + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.22 + + use-sync-external-store@1.2.0(react@18.2.0): + dependencies: + react: 18.2.0 + + use-sync-external-store@1.5.0(react@18.2.0): + dependencies: + react: 18.2.0 + + usehooks-ts@3.1.1(react@18.2.0): + dependencies: + lodash.debounce: 4.0.8 + react: 18.2.0 + + utf-8-validate@5.0.10: + dependencies: + node-gyp-build: 4.8.4 + + util-deprecate@1.0.2: {} + + util@0.10.4: + dependencies: + inherits: 2.0.3 + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.0 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + valtio@1.11.2(@types/react@18.2.22)(react@18.2.0): + dependencies: + proxy-compare: 2.5.1 + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + react: 18.2.0 + + vary@1.1.2: {} + + viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8): + dependencies: + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@scure/bip32': 1.6.2 + '@scure/bip39': 1.5.4 + abitype: 1.0.8(typescript@5.4.2)(zod@3.23.8) + isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.6.7(typescript@5.4.2)(zod@3.23.8) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8): + dependencies: + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 + '@scure/bip32': 1.6.2 + '@scure/bip39': 1.5.4 + abitype: 1.0.8(typescript@5.4.2)(zod@3.23.8) + isows: 1.0.6(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.6.9(typescript@5.4.2)(zod@3.23.8) + ws: 8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + vite-plugin-mud@2.2.21(vite@6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1)): + dependencies: + vite: 6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1) + + vite@6.3.5(@types/node@22.15.18)(jiti@1.21.7)(terser@5.39.1)(tsx@4.19.4)(yaml@2.7.1): + dependencies: + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.2 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 22.15.18 + fsevents: 2.3.3 + jiti: 1.21.7 + terser: 5.39.1 + tsx: 4.19.4 + yaml: 2.7.1 + + vlq@1.0.1: {} + + wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): + dependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + '@wagmi/connectors': 5.1.10(@types/react@18.2.22)(@wagmi/core@2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@wagmi/core': 2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)) + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - immer + - ioredis + - react-dom + - react-native + - rolldown + - rollup + - supports-color + - uploadthing + - utf-8-validate + - zod + + wagmi@2.12.11(@tanstack/query-core@5.76.0)(@tanstack/react-query@5.76.1(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): + dependencies: + '@tanstack/react-query': 5.76.1(react@18.2.0) + '@wagmi/connectors': 5.1.10(@types/react@18.2.22)(@wagmi/core@2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.9)(react-dom@18.2.0(react@18.2.0))(react-native@0.79.2(@babel/core@7.27.1)(@types/react@18.2.22)(bufferutil@4.0.9)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.40.2)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@wagmi/core': 2.13.5(@tanstack/query-core@5.76.0)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(viem@2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)) + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + viem: 2.29.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - immer + - ioredis + - react-dom + - react-native + - rolldown + - rollup + - supports-color + - uploadthing + - utf-8-validate + - zod + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webauthn-p256@0.0.10: + dependencies: + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + + webextension-polyfill@0.10.0: {} + + webidl-conversions@3.0.1: {} + + whatwg-fetch@3.6.20: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-module@2.0.1: {} + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@6.2.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + async-limiter: 1.0.1 + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + xmlhttprequest-ssl@2.1.2: {} + + xtend@4.0.2: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml@2.7.1: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + ylru@1.4.0: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.1: {} + + yoctocolors@2.1.1: {} + + zod-validation-error@1.5.0(zod@3.23.8): + dependencies: + zod: 3.23.8 + + zod@3.23.8: {} + + zustand@4.4.1(@types/react@18.2.22)(react@18.2.0): + dependencies: + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + react: 18.2.0 + + zustand@4.5.6(@types/react@18.2.22)(react@18.2.0): + dependencies: + use-sync-external-store: 1.5.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + react: 18.2.0 diff --git a/packages/txpool/src/TxPool.ts b/packages/txpool/src/TxPool.ts index dd9aa6b933..aacd9a002b 100644 --- a/packages/txpool/src/TxPool.ts +++ b/packages/txpool/src/TxPool.ts @@ -614,12 +614,17 @@ export class TxPool { * Register an event handler * @param event Event name ('txadded' or 'txremoved') * @param callback Handler function + * @returns Unsubscribe function */ on(event: 'txadded' | 'txremoved', callback: (hash: string) => void) { if (!this.events[event]) { this.events[event] = [] } this.events[event].push(callback) + + return () => { + this.events[event] = this.events[event]?.filter((cb) => cb !== callback) ?? [] + } } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0606fa53d..dce06385cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -119,7 +119,7 @@ importers: version: 6.3.5(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) vocs: specifier: 1.0.12 version: 1.0.12(@types/node@22.15.21)(@types/react-dom@19.1.5(@types/react@19.1.6))(@types/react@19.1.6)(acorn@8.14.1)(jiti@2.4.2)(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.41.1)(terser@5.39.2)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0) @@ -220,7 +220,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) bundler-packages/compiler: dependencies: @@ -300,6 +300,85 @@ importers: specifier: workspace:^ version: link:../../configs/tsupconfig + bundler-packages/mud: + dependencies: + '@latticexyz/common': + specifier: 2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/config': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/protocol-parser': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/schema-type': + specifier: ^2.2.21 + version: 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/stash': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(react@18.3.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/store': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/store-sync': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.77.2(react@18.3.1))(@types/react@18.3.23)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(bun-types@1.2.14)(react@18.3.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(wagmi@2.15.4(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.77.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)) + '@tevm/common': + specifier: workspace:^ + version: link:../../packages/common + '@tevm/logger': + specifier: workspace:^ + version: link:../../packages/logger + '@tevm/memory-client': + specifier: workspace:^ + version: link:../../packages/memory-client + '@tevm/txpool': + specifier: workspace:^ + version: link:../../packages/txpool + '@tevm/utils': + specifier: workspace:^ + version: link:../../packages/utils + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + viem: + specifier: ^2.23.10 + version: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + devDependencies: + '@testing-library/react': + specifier: ^16.2.0 + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tevm/config': + specifier: workspace:^ + version: link:../config + '@tevm/decorators': + specifier: workspace:^ + version: link:../../packages/decorators + '@tevm/node': + specifier: workspace:^ + version: link:../../packages/node + '@tevm/test-utils': + specifier: workspace:^ + version: link:../../test/test-utils + '@tevm/tsconfig': + specifier: workspace:^ + version: link:../../configs/tsconfig + '@tevm/tsupconfig': + specifier: workspace:^ + version: link:../../configs/tsupconfig + '@types/react': + specifier: ^18.2.0 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.2.0 + version: 18.3.7(@types/react@18.3.23) + jsdom: + specifier: ^26.1.0 + version: 26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + bundler-packages/resolutions: dependencies: '@tevm/tsconfig': @@ -369,7 +448,7 @@ importers: version: link:../../configs/tsupconfig vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) bundler-packages/rspack: dependencies: @@ -385,7 +464,7 @@ importers: version: link:../../configs/tsupconfig vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) bundler-packages/runtime: dependencies: @@ -449,7 +528,7 @@ importers: version: 0.8.30 vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) bundler-packages/solc-rs: devDependencies: @@ -742,7 +821,7 @@ importers: version: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) vocs: specifier: 1.0.12 version: 1.0.12(@types/node@22.15.21)(@types/react-dom@19.1.5(@types/react@19.1.6))(@types/react@19.1.6)(acorn@8.14.1)(jiti@2.4.2)(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.41.1)(terser@5.39.2)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0) @@ -795,7 +874,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) examples/esbuild: dependencies: @@ -1068,7 +1147,7 @@ importers: version: 1.5.0(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0)) vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) examples/vite: dependencies: @@ -1192,7 +1271,7 @@ importers: version: 1.5.0(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0)) vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) extensions/ethers: dependencies: @@ -1253,7 +1332,7 @@ importers: version: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) devDependencies: '@tevm/common': specifier: workspace:^ @@ -1379,7 +1458,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) lsp/ts-plugin: dependencies: @@ -1741,7 +1820,7 @@ importers: version: link:../../configs/tsupconfig vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) packages/evm: dependencies: @@ -1883,7 +1962,7 @@ importers: version: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) devDependencies: '@tevm/test-utils': specifier: workspace:^ @@ -2324,7 +2403,7 @@ importers: version: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) vitest: specifier: ^3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) src/ui: dependencies: @@ -2445,6 +2524,15 @@ importers: test/test-utils: dependencies: + '@latticexyz/schema-type': + specifier: ^2.2.21 + version: 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/store': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/world': + specifier: ^2.2.21 + version: 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) '@openzeppelin/contracts': specifier: 5.3.0 version: 5.3.0 @@ -2664,6 +2752,9 @@ packages: '@ark/util@0.2.2': resolution: {integrity: sha512-ryZ4+f3SlReQRH9nTFLK5EeU1Pan5ZfS+ACPSk0ir5uujJouFmvOdnkVfeAJAgeOb3kKmUM9kjelv1cwH2ScZg==} + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@astrojs/compiler@2.12.0': resolution: {integrity: sha512-7bCjW6tVDpUurQLeKBUN9tZ5kSv5qYrGmcn0sG0IwacL7isR2ZbyyA3AdZ4uxsuUFOS2SlgReTH7wkxO6zpqWA==} @@ -3252,6 +3343,34 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-color-parser@3.0.10': + resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + '@ctrl/tinycolor@4.1.0': resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} @@ -8312,17 +8431,28 @@ packages: '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + '@types/react-dom@19.1.5': resolution: {integrity: sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==} peerDependencies: '@types/react': ^19.0.0 + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + '@types/react@19.1.6': resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} @@ -10288,6 +10418,10 @@ packages: engines: {node: '>=4'} hasBin: true + cssstyle@4.3.1: + resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==} + engines: {node: '>=18'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -10459,6 +10593,10 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -10535,6 +10673,9 @@ packages: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decode-named-character-reference@1.1.0: resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} @@ -12159,6 +12300,10 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} @@ -12683,6 +12828,9 @@ packages: resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -12961,6 +13109,15 @@ packages: '@babel/preset-env': optional: true + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -14213,6 +14370,9 @@ packages: peerDependencies: next: '>=13.4 <14.0.2 || ^14.0.3' + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nx@21.1.2: resolution: {integrity: sha512-oczAEOOkQHElxCXs2g2jXDRabDRsmub/h5SAgqAUDSJ2CRnYGVVlgZX7l+o+A9kSqfONyLy5FlJ1pSWlvPuG4w==} hasBin: true @@ -15689,6 +15849,9 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} @@ -15751,6 +15914,10 @@ packages: sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -16469,6 +16636,9 @@ packages: resolution: {integrity: sha512-NOw+amc+BLyAx1DbMKPY76lvuS2TKJxX5n+1c4Qva+fpAGuCXe+GJmTM5MoTtgoXT1uzZBsLgp0GVvW5RY+k+A==} engines: {node: '>=18'} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.11.6: resolution: {integrity: sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -16638,6 +16808,13 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -16690,12 +16867,20 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -17520,6 +17705,10 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + wagmi@2.12.11: resolution: {integrity: sha512-CtK05Hl5nKVskiwvNEtxMIAMJwI8RF+6qwVqlhypDs+Y1c30gVnNnF7ivAuVs4xzJbAsZ5LUmsrVVxUMIC0KDg==} peerDependencies: @@ -17575,6 +17764,10 @@ packages: webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + webpack-sources@3.3.0: resolution: {integrity: sha512-77R0RDmJfj9dyv5p3bM5pOHa+X8/ZkO9c7kpDstigkC4nIDobadsfSGCwB4bKhMVxqAok8tajaoR8rirM7+VFQ==} engines: {node: '>=10.13.0'} @@ -17615,6 +17808,10 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -17791,6 +17988,10 @@ packages: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + xml2js@0.4.23: resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} engines: {node: '>=4.0.0'} @@ -17799,6 +18000,9 @@ packages: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + xmlhttprequest-ssl@2.1.2: resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} @@ -18073,6 +18277,14 @@ snapshots: '@ark/util@0.2.2': {} + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + '@astrojs/compiler@2.12.0': {} '@astrojs/internal-helpers@0.6.1': {} @@ -19153,6 +19365,26 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + '@ctrl/tinycolor@4.1.0': {} '@ecies/ciphers@0.2.3(@noble/ciphers@1.3.0)': @@ -20519,6 +20751,32 @@ snapshots: - typescript - zod + '@latticexyz/block-logs-stream@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + debug: 4.4.1(supports-color@8.1.1) + rxjs: 7.5.5 + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/block-logs-stream@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + debug: 4.4.1(supports-color@8.1.1) + rxjs: 7.5.5 + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + '@latticexyz/cli@2.2.21(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.74.4(react@18.3.1))(@types/react@19.1.6)(better-sqlite3@8.7.0)(bufferutil@4.0.9)(bun-types@1.2.14)(react@18.3.1)(typescript@5.4.2)(utf-8-validate@5.0.10)(wagmi@2.12.11(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.74.4(react@18.3.1))(@types/react@19.1.6)(bufferutil@4.0.9)(react-dom@18.3.1(react@18.3.1))(react-native@0.79.2(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(rollup@4.41.1)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': dependencies: '@ark/util': 0.2.2 @@ -20604,6 +20862,46 @@ snapshots: - typescript - zod + '@latticexyz/common@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@solidity-parser/parser': 0.16.2 + abitype: 1.0.6(typescript@5.8.3)(zod@3.23.8) + debug: 4.4.1(supports-color@8.1.1) + execa: 9.6.0 + p-queue: 7.4.1 + p-retry: 5.1.2 + prettier: 3.2.5 + prettier-plugin-solidity: 1.3.1(prettier@3.2.5) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + optionalDependencies: + '@aws-sdk/client-kms': 3.817.0 + asn1.js: 5.4.1 + transitivePeerDependencies: + - supports-color + - typescript + - zod + + '@latticexyz/common@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@solidity-parser/parser': 0.16.2 + abitype: 1.0.6(typescript@5.8.3)(zod@3.25.30) + debug: 4.4.1(supports-color@8.1.1) + execa: 9.6.0 + p-queue: 7.4.1 + p-retry: 5.1.2 + prettier: 3.2.5 + prettier-plugin-solidity: 1.3.1(prettier@3.2.5) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + optionalDependencies: + '@aws-sdk/client-kms': 3.817.0 + asn1.js: 5.4.1 + transitivePeerDependencies: + - supports-color + - typescript + - zod + '@latticexyz/config@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: '@ark/util': 0.2.2 @@ -20619,6 +20917,36 @@ snapshots: - typescript - zod + '@latticexyz/config@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + find-up: 6.3.0 + tsx: 4.19.4 + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/config@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + find-up: 6.3.0 + tsx: 4.19.4 + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + '@latticexyz/explorer@2.2.21(@aws-sdk/client-kms@3.817.0)(@babel/core@7.27.3)(@opentelemetry/api@1.9.0)(@tanstack/query-core@5.77.2)(@types/react-dom@19.1.5(@types/react@19.1.6))(@types/react@19.1.6)(asn1.js@5.4.1)(bufferutil@4.0.9)(bun-types@1.2.14)(kysely@0.26.3)(react-native@0.79.2(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(rollup@4.41.1)(sql.js@1.13.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: '@hookform/resolvers': 3.10.0(react-hook-form@7.56.4(react@18.3.1)) @@ -20746,6 +21074,34 @@ snapshots: - typescript - zod + '@latticexyz/protocol-parser@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + abitype: 1.0.6(typescript@5.8.3)(zod@3.23.8) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/protocol-parser@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + abitype: 1.0.6(typescript@5.8.3)(zod@3.25.30) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + '@latticexyz/recs@2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: '@latticexyz/schema-type': 2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) @@ -20757,6 +21113,17 @@ snapshots: - viem - zod + '@latticexyz/recs@2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/utils': 2.2.21 + mobx: 6.13.7 + rxjs: 7.5.5 + transitivePeerDependencies: + - typescript + - viem + - zod + '@latticexyz/schema-type@2.2.21(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: abitype: 1.0.6(typescript@5.4.2)(zod@3.23.8) @@ -20765,6 +21132,22 @@ snapshots: - typescript - zod + '@latticexyz/schema-type@2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + abitype: 1.0.6(typescript@5.8.3)(zod@3.23.8) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - typescript + - zod + + '@latticexyz/schema-type@2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + abitype: 1.0.6(typescript@5.8.3)(zod@3.25.30) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - typescript + - zod + '@latticexyz/stash@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(react@18.3.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: '@ark/util': 0.2.2 @@ -20782,6 +21165,40 @@ snapshots: - typescript - zod + '@latticexyz/stash@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(react@18.3.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + react: 18.3.1 + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/stash@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(react@18.3.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + react: 18.3.1 + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + '@latticexyz/store-indexer@2.2.21(@aws-sdk/client-kms@3.817.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.74.4(react@18.3.1))(@types/react@19.1.6)(asn1.js@5.4.1)(bun-types@1.2.14)(kysely@0.26.3)(react@18.3.1)(sql.js@1.13.0)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.11(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.74.4(react@18.3.1))(@types/react@19.1.6)(bufferutil@4.0.9)(react-dom@18.3.1(react@18.3.1))(react-native@0.79.2(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(rollup@4.41.1)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': dependencies: '@koa/cors': 4.0.0 @@ -20892,6 +21309,60 @@ snapshots: - supports-color - typescript + '@latticexyz/store-sync@2.2.21(@aws-sdk/client-kms@3.817.0)(@opentelemetry/api@1.9.0)(@tanstack/react-query@5.77.2(react@18.3.1))(@types/react@18.3.23)(asn1.js@5.4.1)(better-sqlite3@8.7.0)(bun-types@1.2.14)(react@18.3.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(wagmi@2.15.4(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.77.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30))': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/recs': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/stash': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(react@18.3.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/world': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@trpc/client': 10.34.0(@trpc/server@10.34.0) + '@trpc/server': 10.34.0 + change-case: 5.4.4 + debug: 4.4.1(supports-color@8.1.1) + drizzle-orm: 0.28.6(@opentelemetry/api@1.9.0)(better-sqlite3@8.7.0)(bun-types@1.2.14)(kysely@0.26.3)(postgres@3.4.7)(sql.js@1.13.0) + fast-deep-equal: 3.1.3 + kysely: 0.26.3 + postgres: 3.4.7 + rxjs: 7.5.5 + sql.js: 1.13.0 + superjson: 1.13.3 + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + zod: 3.23.8 + zustand: 4.5.7(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@tanstack/react-query': 5.77.2(react@18.3.1) + react: 18.3.1 + wagmi: 2.15.4(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.77.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@libsql/client' + - '@neondatabase/serverless' + - '@opentelemetry/api' + - '@planetscale/database' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - asn1.js + - better-sqlite3 + - bun-types + - immer + - knex + - mysql2 + - pg + - sqlite3 + - supports-color + - typescript + '@latticexyz/store@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.4.2)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: '@ark/util': 0.2.2 @@ -20911,6 +21382,44 @@ snapshots: - typescript - zod + '@latticexyz/store@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + abitype: 1.0.6(typescript@5.8.3)(zod@3.23.8) + arktype: 2.0.0-beta.6 + debug: 4.4.1(supports-color@8.1.1) + optionalDependencies: + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/store@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + abitype: 1.0.6(typescript@5.8.3)(zod@3.25.30) + arktype: 2.0.0-beta.6 + debug: 4.4.1(supports-color@8.1.1) + optionalDependencies: + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + '@latticexyz/utils@2.2.21': dependencies: mobx: 6.13.7 @@ -20964,6 +21473,48 @@ snapshots: - typescript - zod + '@latticexyz/world@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.23.8) + abitype: 1.0.6(typescript@5.8.3)(zod@3.23.8) + arktype: 2.0.0-beta.6 + debug: 4.4.1(supports-color@8.1.1) + optionalDependencies: + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + + '@latticexyz/world@2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@ark/util': 0.2.2 + '@latticexyz/block-logs-stream': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/common': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/config': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/protocol-parser': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/schema-type': 2.2.21(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@latticexyz/store': 2.2.21(@aws-sdk/client-kms@3.817.0)(asn1.js@5.4.1)(typescript@5.8.3)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + abitype: 1.0.6(typescript@5.8.3)(zod@3.25.30) + arktype: 2.0.0-beta.6 + debug: 4.4.1(supports-color@8.1.1) + optionalDependencies: + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@aws-sdk/client-kms' + - asn1.js + - supports-color + - typescript + - zod + '@leichtgewicht/ip-codec@2.0.5': {} '@lit-labs/ssr-dom-shim@1.3.0': {} @@ -23791,6 +24342,41 @@ snapshots: - utf-8-validate - zod + '@reown/appkit-controllers@1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': + dependencies: + '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + valtio: 1.13.2(@types/react@18.3.23)(react@18.3.1) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + optional: true + '@reown/appkit-controllers@1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) @@ -23829,6 +24415,43 @@ snapshots: dependencies: buffer: 6.0.3 + '@reown/appkit-scaffold-ui@1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.23)(react@18.3.1))(zod@3.25.30)': + dependencies: + '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-controllers': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-ui': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-utils': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.23)(react@18.3.1))(zod@3.25.30) + '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) + lit: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - valtio + - zod + optional: true + '@reown/appkit-scaffold-ui@1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.1.6)(react@19.1.0))(zod@3.25.30)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) @@ -23862,16 +24485,88 @@ snapshots: - typescript - uploadthing - utf-8-validate - - valtio + - valtio + - zod + + '@reown/appkit-ui@1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': + dependencies: + '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-controllers': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) + lit: 3.1.0 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + optional: true + + '@reown/appkit-ui@1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': + dependencies: + '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-controllers': 1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) + lit: 3.1.0 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate - zod - '@reown/appkit-ui@1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': + '@reown/appkit-utils@1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.23)(react@18.3.1))(zod@3.25.30)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) - '@reown/appkit-controllers': 1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-controllers': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-polyfills': 1.7.3 '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - lit: 3.1.0 - qrcode: 1.5.3 + '@walletconnect/logger': 2.1.2 + '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + valtio: 1.13.2(@types/react@18.3.23)(react@18.3.1) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -23898,6 +24593,7 @@ snapshots: - uploadthing - utf-8-validate - zod + optional: true '@reown/appkit-utils@1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.1.6)(react@19.1.0))(zod@3.25.30)': dependencies: @@ -23947,6 +24643,48 @@ snapshots: - typescript - utf-8-validate + '@reown/appkit@1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': + dependencies: + '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-controllers': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-polyfills': 1.7.3 + '@reown/appkit-scaffold-ui': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.23)(react@18.3.1))(zod@3.25.30) + '@reown/appkit-ui': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@reown/appkit-utils': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.23)(react@18.3.1))(zod@3.25.30) + '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.19.2 + '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + bs58: 6.0.0 + valtio: 1.13.2(@types/react@18.3.23)(react@18.3.1) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + optional: true + '@reown/appkit@1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) @@ -25083,6 +25821,12 @@ snapshots: '@tanstack/query-core': 5.74.4 react: 18.3.1 + '@tanstack/react-query@5.77.2(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.77.2 + react: 18.3.1 + optional: true + '@tanstack/react-query@5.77.2(react@19.1.0)': dependencies: '@tanstack/query-core': 5.77.2 @@ -25120,6 +25864,16 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.3 + '@testing-library/dom': 10.4.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.5(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@babel/runtime': 7.27.3 @@ -25469,14 +26223,25 @@ snapshots: '@types/prismjs@1.26.5': {} + '@types/prop-types@15.7.14': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} + '@types/react-dom@18.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + '@types/react-dom@19.1.5(@types/react@19.1.6)': dependencies: '@types/react': 19.1.6 + '@types/react@18.3.23': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + '@types/react@19.1.6': dependencies: csstype: 3.1.3 @@ -25936,7 +26701,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -25984,7 +26749,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) + vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) '@vitest/utils@3.1.4': dependencies: @@ -26115,6 +26880,46 @@ snapshots: - utf-8-validate - zod + '@wagmi/connectors@5.8.3(@types/react@18.3.23)(@wagmi/core@2.17.2(@tanstack/query-core@5.77.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': + dependencies: + '@coinbase/wallet-sdk': 4.3.0 + '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@wagmi/core': 2.17.2(@tanstack/query-core@5.77.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)) + '@walletconnect/ethereum-provider': 2.20.2(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - supports-color + - uploadthing + - utf-8-validate + - zod + optional: true + '@wagmi/connectors@5.8.3(@types/react@19.1.6)(@wagmi/core@2.17.2(@tanstack/query-core@5.77.2)(@types/react@19.1.6)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)))(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30)': dependencies: '@coinbase/wallet-sdk': 4.3.0 @@ -26168,6 +26973,22 @@ snapshots: - immer - react + '@wagmi/core@2.17.2(@tanstack/query-core@5.77.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.8.3) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + zustand: 5.0.0(@types/react@18.3.23)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/query-core': 5.77.2 + typescript: 5.8.3 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + optional: true + '@wagmi/core@2.17.2(@tanstack/query-core@5.77.2)(@types/react@19.1.6)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))': dependencies: eventemitter3: 5.0.1 @@ -26350,6 +27171,47 @@ snapshots: - uploadthing - utf-8-validate + '@walletconnect/ethereum-provider@2.20.2(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': + dependencies: + '@reown/appkit': 1.7.3(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/sign-client': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@walletconnect/types': 2.20.2 + '@walletconnect/universal-provider': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + '@walletconnect/utils': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + optional: true + '@walletconnect/ethereum-provider@2.20.2(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)': dependencies: '@reown/appkit': 1.7.3(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) @@ -27069,6 +27931,16 @@ snapshots: typescript: 5.4.2 zod: 3.23.8 + abitype@1.0.6(typescript@5.8.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.8.3 + zod: 3.23.8 + + abitype@1.0.6(typescript@5.8.3)(zod@3.25.30): + optionalDependencies: + typescript: 5.8.3 + zod: 3.25.30 + abitype@1.0.8(typescript@5.4.2)(zod@3.23.8): optionalDependencies: typescript: 5.4.2 @@ -28690,6 +29562,11 @@ snapshots: cssesc@3.0.0: {} + cssstyle@4.3.1: + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + csstype@3.1.3: {} currently-unhandled@0.4.1: @@ -28884,6 +29761,11 @@ snapshots: data-uri-to-buffer@6.0.2: {} + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -28942,6 +29824,8 @@ snapshots: decamelize@6.0.0: {} + decimal.js@10.5.0: {} + decode-named-character-reference@1.1.0: dependencies: character-entities: 2.0.2 @@ -29060,6 +29944,11 @@ snapshots: dequal@2.0.3: {} + derive-valtio@0.1.0(valtio@1.13.2(@types/react@18.3.23)(react@18.3.1)): + dependencies: + valtio: 1.13.2(@types/react@18.3.23)(react@18.3.1) + optional: true + derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.1.6)(react@19.1.0)): dependencies: valtio: 1.13.2(@types/react@19.1.6)(react@19.1.0) @@ -31093,6 +31982,10 @@ snapshots: dependencies: lru-cache: 10.4.3 + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + html-entities@2.3.3: {} html-escaper@2.0.2: {} @@ -31602,6 +32495,8 @@ snapshots: is-port-reachable@4.0.0: {} + is-potential-custom-element-name@1.0.1: {} + is-promise@4.0.0: {} is-proto-prop@3.0.1: @@ -31935,6 +32830,33 @@ snapshots: transitivePeerDependencies: - supports-color + jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + cssstyle: 4.3.1 + data-urls: 5.0.0 + decimal.js: 10.5.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jsesc@3.0.2: {} jsesc@3.1.0: {} @@ -33646,6 +34568,8 @@ snapshots: mitt: 3.0.1 next: 14.2.5(@babel/core@7.27.3)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + nwsapi@2.2.20: {} + nx@21.1.2(@swc/core@1.11.29): dependencies: '@napi-rs/wasm-runtime': 0.2.4 @@ -35583,6 +36507,8 @@ snapshots: transitivePeerDependencies: - supports-color + rrweb-cssom@0.8.0: {} + rtl-css-js@1.16.1: dependencies: '@babel/runtime': 7.27.3 @@ -35644,6 +36570,10 @@ snapshots: sax@1.4.1: {} + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -36623,6 +37553,8 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 + symbol-tree@3.2.4: {} + synckit@0.11.6: dependencies: '@pkgr/core': 0.2.4 @@ -36790,6 +37722,12 @@ snapshots: tinyspy@3.0.2: {} + tldts-core@6.1.86: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -36837,12 +37775,20 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + tr46@0.0.3: {} tr46@1.0.1: dependencies: punycode: 2.3.1 + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + tree-kill@1.2.2: {} trim-lines@3.0.1: {} @@ -37341,6 +38287,11 @@ snapshots: dependencies: react: 19.1.0 + use-sync-external-store@1.4.0(react@18.3.1): + dependencies: + react: 18.3.1 + optional: true + use-sync-external-store@1.4.0(react@19.1.0): dependencies: react: 19.1.0 @@ -37406,6 +38357,16 @@ snapshots: '@types/react': 19.1.6 react: 18.3.1 + valtio@1.13.2(@types/react@18.3.23)(react@18.3.1): + dependencies: + derive-valtio: 0.1.0(valtio@1.13.2(@types/react@18.3.23)(react@18.3.1)) + proxy-compare: 2.6.0 + use-sync-external-store: 1.2.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + react: 18.3.1 + optional: true + valtio@1.13.2(@types/react@19.1.6)(react@19.1.0): dependencies: derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.1.6)(react@19.1.0)) @@ -37620,7 +38581,7 @@ snapshots: optionalDependencies: vite: 6.3.5(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0) - vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0): + vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(@vitest/ui@3.1.4)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0): dependencies: '@vitest/expect': 3.1.4 '@vitest/mocker': 3.1.4(msw@2.8.4(@types/node@22.15.21)(typescript@5.8.3))(vite@6.3.5(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.0)) @@ -37647,6 +38608,7 @@ snapshots: '@types/debug': 4.1.12 '@types/node': 22.15.21 '@vitest/ui': 3.1.4(vitest@3.1.4) + jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - jiti - less @@ -37857,6 +38819,10 @@ snapshots: vscode-uri@3.1.0: {} + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + wagmi@2.12.11(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.74.4(react@18.3.1))(@types/react@19.1.6)(bufferutil@4.0.9)(react-dom@18.3.1(react@18.3.1))(react-native@0.79.2(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(rollup@4.41.1)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.23.2(bufferutil@4.0.9)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): dependencies: '@tanstack/react-query': 5.74.4(react@18.3.1) @@ -37899,6 +38865,45 @@ snapshots: - utf-8-validate - zod + wagmi@2.15.4(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.77.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30): + dependencies: + '@tanstack/react-query': 5.77.2(react@18.3.1) + '@wagmi/connectors': 5.8.3(@types/react@18.3.23)(@wagmi/core@2.17.2(@tanstack/query-core@5.77.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30) + '@wagmi/core': 2.17.2(@tanstack/query-core@5.77.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30)) + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + viem: 2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - immer + - ioredis + - supports-color + - uploadthing + - utf-8-validate + - zod + optional: true + wagmi@2.15.4(@tanstack/query-core@5.77.2)(@tanstack/react-query@5.77.2(react@19.1.0))(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.30))(zod@3.25.30): dependencies: '@tanstack/react-query': 5.77.2(react@19.1.0) @@ -37964,6 +38969,8 @@ snapshots: webidl-conversions@4.0.2: {} + webidl-conversions@7.0.0: {} + webpack-sources@3.3.0: {} webpack-virtual-modules@0.6.2: {} @@ -38016,6 +39023,11 @@ snapshots: whatwg-mimetype@4.0.0: {} + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -38183,6 +39195,8 @@ snapshots: xdg-basedir@5.1.0: {} + xml-name-validator@5.0.0: {} + xml2js@0.4.23: dependencies: sax: 1.4.1 @@ -38190,6 +39204,8 @@ snapshots: xmlbuilder@11.0.1: {} + xmlchars@2.2.0: {} + xmlhttprequest-ssl@2.1.2: {} xo@1.0.0(@types/eslint@9.6.1)(jiti@2.4.2)(typescript@5.8.3)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.5)): @@ -38360,6 +39376,13 @@ snapshots: '@types/react': 19.1.6 react: 18.3.1 + zustand@4.5.7(@types/react@18.3.23)(react@18.3.1): + dependencies: + use-sync-external-store: 1.5.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + react: 18.3.1 + zustand@4.5.7(@types/react@19.1.6)(react@18.3.1): dependencies: use-sync-external-store: 1.5.0(react@18.3.1) @@ -38367,6 +39390,13 @@ snapshots: '@types/react': 19.1.6 react: 18.3.1 + zustand@5.0.0(@types/react@18.3.23)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): + optionalDependencies: + '@types/react': 18.3.23 + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + optional: true + zustand@5.0.0(@types/react@19.1.6)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): optionalDependencies: '@types/react': 19.1.6 diff --git a/test/test-utils/package.json b/test/test-utils/package.json index 54f6b8efbb..877ccb8644 100644 --- a/test/test-utils/package.json +++ b/test/test-utils/package.json @@ -70,6 +70,9 @@ "access": "public" }, "dependencies": { + "@latticexyz/schema-type": "^2.2.21", + "@latticexyz/store": "^2.2.21", + "@latticexyz/world": "^2.2.21", "@openzeppelin/contracts": "5.3.0", "@ponder/utils": "^0.2.7", "@tevm/contract": "workspace:^", diff --git a/test/test-utils/src/MUDTestSystem.s.sol b/test/test-utils/src/MUDTestSystem.s.sol new file mode 100644 index 0000000000..34365241d8 --- /dev/null +++ b/test/test-utils/src/MUDTestSystem.s.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { System } from "@latticexyz/world/src/System.sol"; +import { StoreCore } from "@latticexyz/store/src/StoreCore.sol"; + +import { TestTable, TestTableData } from "./MUDTestTable.sol"; + +contract TestSystem is System { + constructor() { + StoreCore.initialize(); + TestTable.register(); + } + + function get(uint200 key1, uint8 key2) public view returns (TestTableData memory _table) { + return TestTable.get(key1, key2); + } + + function set( + uint200 key1, + uint8 key2, + uint200 val1, + uint8 val2, + uint16 val3, + bool val4, + address val5, + string memory dyn1, + bytes memory dyn2, + int16[] memory dyn3 + ) public { + TestTable.set(key1, key2, val1, val2, val3, val4, val5, dyn1, dyn2, dyn3); + } +} diff --git a/test/test-utils/src/MUDTestSystem.s.sol.ts b/test/test-utils/src/MUDTestSystem.s.sol.ts new file mode 100644 index 0000000000..b9927cdd92 --- /dev/null +++ b/test/test-utils/src/MUDTestSystem.s.sol.ts @@ -0,0 +1,687 @@ +import { createContract } from '@tevm/contract' +const _TestSystem = { + "name": "TestSystem", + "humanReadableAbi": [ + "constructor()", + "error FieldLayout_Empty()", + "error FieldLayout_InvalidStaticDataLength(uint256 staticDataLength, uint256 computedStaticDataLength)", + "error FieldLayout_StaticLengthDoesNotFitInAWord(uint256 index)", + "error FieldLayout_StaticLengthIsNotZero(uint256 index)", + "error FieldLayout_StaticLengthIsZero(uint256 index)", + "error FieldLayout_TooManyDynamicFields(uint256 numFields, uint256 maxFields)", + "error FieldLayout_TooManyFields(uint256 numFields, uint256 maxFields)", + "error Schema_InvalidLength(uint256 length)", + "error Schema_StaticTypeAfterDynamicType()", + "error Slice_OutOfBounds(bytes data, uint256 start, uint256 end)", + "error Store_InvalidFieldNamesLength(uint256 expected, uint256 received)", + "error Store_InvalidKeyNamesLength(uint256 expected, uint256 received)", + "error Store_InvalidResourceType(bytes2 expected, bytes32 resourceId, string resourceIdString)", + "error Store_InvalidStaticDataLength(uint256 expected, uint256 received)", + "error Store_InvalidValueSchemaDynamicLength(uint256 expected, uint256 received)", + "error Store_InvalidValueSchemaLength(uint256 expected, uint256 received)", + "error Store_InvalidValueSchemaStaticLength(uint256 expected, uint256 received)", + "error Store_TableAlreadyExists(bytes32 tableId, string tableIdString)", + "event Store_SetRecord(bytes32 indexed tableId, bytes32[] keyTuple, bytes staticData, bytes32 encodedLengths, bytes dynamicData)", + "event Store_SpliceStaticData(bytes32 indexed tableId, bytes32[] keyTuple, uint48 start, bytes data)", + "function _msgSender() view returns (address sender)", + "function _msgValue() view returns (uint256 value)", + "function _world() view returns (address)", + "function get(uint200 key1, uint8 key2) view returns ((uint200 val1, uint8 val2, uint16 val3, bool val4, address val5, string dyn1, bytes dyn2, int16[] dyn3) _table)", + "function set(uint200 key1, uint8 key2, uint200 val1, uint8 val2, uint16 val3, bool val4, address val5, string dyn1, bytes dyn2, int16[] dyn3)", + "function supportsInterface(bytes4 interfaceId) pure returns (bool)" + ], + "bytecode": "0x608060405234801561000f575f5ffd5b5061001e61003160201b60201c565b61002c61004260201b60201c565b61327b565b610040306100f760201b60201c565b565b6100f57f74626170700000000000000000000000546573745461626c65000000000000005f1b7e310503190102011400000000000000000000000000000000000000000000005f1b7e1a0200180000000000000000000000000000000000000000000000000000005f1b7e3105031800016061c5c48300000000000000000000000000000000000000005f1b6100dc61014860201b60201c565b6100ea61024760201b60201c565b61054460201b60201c565b565b8061010661061b60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600267ffffffffffffffff81111561016557610164612863565b5b60405190808252806020026020018201604052801561019857816020015b60608152602001906001900390816101835790505b5090506040518060400160405280600481526020017f6b65793100000000000000000000000000000000000000000000000000000000815250815f815181106101e4576101e3612890565b5b60200260200101819052506040518060400160405280600481526020017f6b657932000000000000000000000000000000000000000000000000000000008152508160018151811061023957610238612890565b5b602002602001018190525090565b6060600867ffffffffffffffff81111561026457610263612863565b5b60405190808252806020026020018201604052801561029757816020015b60608152602001906001900390816102825790505b5090506040518060400160405280600481526020017f76616c3100000000000000000000000000000000000000000000000000000000815250815f815181106102e3576102e2612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c32000000000000000000000000000000000000000000000000000000008152508160018151811061033857610337612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c33000000000000000000000000000000000000000000000000000000008152508160028151811061038d5761038c612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c3400000000000000000000000000000000000000000000000000000000815250816003815181106103e2576103e1612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c35000000000000000000000000000000000000000000000000000000008152508160048151811061043757610436612890565b5b60200260200101819052506040518060400160405280600481526020017f64796e31000000000000000000000000000000000000000000000000000000008152508160058151811061048c5761048b612890565b5b60200260200101819052506040518060400160405280600481526020017f64796e3200000000000000000000000000000000000000000000000000000000815250816006815181106104e1576104e0612890565b5b60200260200101819052506040518060400160405280600481526020017f64796e33000000000000000000000000000000000000000000000000000000008152508160078151811061053657610535612890565b5b602002602001018190525090565b5f61055361064760201b60201c565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105a15761059c8787878787876106bf60201b60201c565b610612565b8073ffffffffffffffffffffffffffffffffffffffff16630ba51f498888888888886040518763ffffffff1660e01b81526004016105e496959493929190612a2f565b5f604051808303815f87803b1580156105fb575f5ffd5b505af115801561060d573d5f5f3e3d5ffd5b505050505b50505050505050565b5f5f7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17590508091505090565b5f5f61065761061b60201b60201c565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b757339150506106bc565b809150505b90565b7f74620000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661071087610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141580156107af57507f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661078b87610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15610834577f746200000000000000000000000000000000000000000000000000000000000086876040516020016107e79190612abc565b6040516020818303038152906040526040517f31b4668300000000000000000000000000000000000000000000000000000000815260040161082b93929190612b58565b60405180910390fd5b61084385610d2060201b60201c565b610857600185610fd360201b90919060201c565b61086a5f84610fd360201b90919060201c565b6108798461127860201b60201c565b8251146108ce5761088f8461127860201b60201c565b82516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004016108c5929190612bac565b60405180910390fd5b6108dd856112c260201b60201c565b815114610932576108f3856112c260201b60201c565b81516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600401610929929190612bac565b60405180910390fd5b610941856112c260201b60201c565b6109508461127860201b60201c565b146109b057610964856112c260201b60201c565b6109738461127860201b60201c565b6040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004016109a7929190612bac565b60405180910390fd5b6109bf8561130c60201b60201c565b6109ce8461135060201b60201c565b14610a2e576109e28561130c60201b60201c565b6109f18461135060201b60201c565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600401610a25929190612bac565b60405180910390fd5b610a3d8561139460201b60201c565b610a4c846113e360201b60201c565b14610aac57610a608561139460201b60201c565b610a6f846113e360201b60201c565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600401610aa3929190612bac565b60405180910390fd5b5f5b610abd8661130c60201b60201c565b811015610b9f57610af7610ada828661143260201b90919060201c565b60c5811115610aec57610aeb612bd3565b5b61146d60201b60201c565b610b0a82886114df60201b90919060201c565b14610b9257610b2281876114df60201b90919060201c565b610b55610b38838761143260201b90919060201c565b60c5811115610b4a57610b49612bd3565b5b61146d60201b60201c565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600401610b89929190612bac565b60405180910390fd5b8080600101915050610aae565b505f610bdf7f7462000000000000000000000000000000000000000000000000000000000000610bd48961150860201b60201c565b61151560201b60201c565b90505f610c207f6f74000000000000000000000000000000000000000000000000000000000000610c158a61150860201b60201c565b61151560201b60201c565b9050610c318261154b60201b60201c565b80610c475750610c468161154b60201b60201c565b5b15610caa578788604051602001610c5e9190612abc565b6040516020818303038152906040526040517fdfaaf9cf000000000000000000000000000000000000000000000000000000008152600401610ca1929190612c00565b60405180910390fd5b610cfc8888888888604051602001610cc29190612c2e565b60405160208183030381529060405288604051602001610ce29190612c2e565b60405160208183030381529060405261162c60201b60201c565b610d0d88600161173660201b60201c565b5050505050505050565b5f819050919050565b610d2f8161181d60201b60201c565b15610d66576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d768261139460201b60201c565b90506005811115610dc1578060056040517f6793df62000000000000000000000000000000000000000000000000000000008152600401610db8929190612bac565b60405180910390fd5b5f610dd18361130c60201b60201c565b90505f8282610de09190612c7b565b9050601c811115610e2b5780601c6040517fecd893b9000000000000000000000000000000000000000000000000000000008152600401610e22929190612bac565b60405180910390fd5b5f5f5b83811015610ef2575f610e4a82886114df60201b90919060201c565b90505f8103610e9057816040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600401610e879190612cae565b60405180910390fd5b6020811115610ed657816040517f7237f237000000000000000000000000000000000000000000000000000000008152600401610ecd9190612cae565b60405180910390fd5b8083610ee29190612c7b565b9250818060010192505050610e2e565b50610f028561182a60201b60201c565b8114610f5557610f178561182a60201b60201c565b816040517feba964de000000000000000000000000000000000000000000000000000000008152600401610f4c929190612bac565b60405180910390fd5b5f8390505b601c811015610fcb575f610f7782886114df60201b90919060201c565b90505f8114610fbd57816040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600401610fb49190612cae565b60405180910390fd5b508080600101915050610f5a565b505050505050565b80158015610fec5750610feb8261185160201b60201c565b5b1561102e575f6040517fd49861590000000000000000000000000000000000000000000000000000000081526004016110259190612d09565b60405180910390fd5b5f61103e836113e360201b60201c565b9050600581111561108657806040517fd498615900000000000000000000000000000000000000000000000000000000815260040161107d9190612cae565b60405180910390fd5b5f6110968461135060201b60201c565b90505f82826110a59190612c7b565b9050601c8111156110ed57806040517fd49861590000000000000000000000000000000000000000000000000000000081526004016110e49190612cae565b60405180910390fd5b5f5f5b83811015611183575f61112c61110f838a61143260201b90919060201c565b60c581111561112157611120612bd3565b5b61146d60201b60201c565b90505f8103611167576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80836111739190612c7b565b92508180600101925050506110f0565b506111938661185e60201b60201c565b81146111e4576111a88661185e60201b60201c565b6040517fd49861590000000000000000000000000000000000000000000000000000000081526004016111db9190612cae565b60405180910390fd5b5f8390505b8281101561126f575f611225611208838a61143260201b90919060201c565b60c581111561121a57611219612bd3565b5b61146d60201b60201c565b90505f811115611261576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8180600101925050506111e9565b50505050505050565b5f600860018060026020030303026112958361188560201b60201c565b5f1c901c60086001600260200303026112b38461188560201b60201c565b5f1c901c0160ff169050919050565b5f600860018060026020030303026112df8361188e60201b60201c565b5f1c901c60086001600260200303026112fd8461188e60201b60201c565b5f1c901c0160ff169050919050565b5f600860016002602061131f9190612d22565b6113299190612d22565b6113339190612d55565b6113428361188e60201b60201c565b5f1c901c60ff169050919050565b5f60086001600260206113639190612d22565b61136d9190612d22565b6113779190612d55565b6113868361188560201b60201c565b5f1c901c60ff169050919050565b5f6008600180600260206113a89190612d22565b6113b29190612d22565b6113bc9190612d22565b6113c69190612d55565b6113d58361188e60201b60201c565b5f1c901c60ff169050919050565b5f6008600180600260206113f79190612d22565b6114019190612d22565b61140b9190612d22565b6114159190612d55565b6114248361188560201b60201c565b5f1c901c60ff169050919050565b5f6008826004601f03030261144c8461188560201b60201c565b5f1c901c60ff1660c581111561146557611464612bd3565b5b905092915050565b5f5f8260c581111561148257611481612bd3565b5b60ff169050606181101561149f576001601f8216019150506114da565b606160c58111156114b3576114b2612bd3565b5b8360c58111156114c6576114c5612bd3565b5b036114d55760149150506114da565b5f9150505b919050565b5f6008826004601f0303026114f98461188e60201b60201c565b5f1c901c60ff16905092915050565b5f601082901b9050919050565b5f60108261ffff1916901c837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191617905092915050565b5f5f600167ffffffffffffffff81111561156857611567612863565b5b6040519080825280602002602001820160405280156115965781602001602082028036833780820191505090505b50905082815f815181106115ad576115ac612890565b5b6020026020010181815250505f61160f7f746273746f72650000000000000000005265736f7572636549647300000000005f1b835f7e010100010000000000000000000000000000000000000000000000000000005f1b61189760201b60201c565b90506116238160f81c6118e660201b60201c565b92505050919050565b5f61163e8686866118ef60201b60201c565b90505f611651848461191e60201b60201c565b90505f611664858561193960201b60201c565b90505f600167ffffffffffffffff81111561168257611681612863565b5b6040519080825280602002602001820160405280156116b05781602001602082028036833780820191505090505b50905089815f815181106116c7576116c6612890565b5b60200260200101818152505061172a7f746273746f72650000000000000000005461626c6573000000000000000000005f1b828686867e600302202020000000000000000000000000000000000000000000000000005f1b61196560201b60201c565b50505050505050505050565b5f600167ffffffffffffffff81111561175257611751612863565b5b6040519080825280602002602001820160405280156117805781602001602082028036833780820191505090505b50905082815f8151811061179757611796612890565b5b6020026020010181815250506118187f746273746f72650000000000000000005265736f7572636549647300000000005f1b825f856040516020016117dc9190612de6565b6040516020818303038152906040527e010100010000000000000000000000000000000000000000000000000000005f1b611d5a60201b60201c565b505050565b5f5f5f1b82149050919050565b5f60086002602061183b9190612d22565b6118459190612d55565b825f1c901c9050919050565b5f5f5f1b82149050919050565b5f60086002602061186f9190612d22565b6118799190612d55565b825f1c901c9050919050565b5f819050919050565b5f819050919050565b5f6118dc6118ab8686611d8260201b60201c565b6118c18560ff16856114df60201b90919060201c565b6118d18587611dd860201b60201c565b611e2260201b60201c565b9050949350505050565b5f819050919050565b606083838360405160200161190693929190612e2e565b60405160208183030381529060405290509392505050565b5f61193183518351611e8560201b60201c565b905092915050565b6060828260405160200161194e929190612eae565b604051602081830303815290604052905092915050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166119b687610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603611a1f57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611a129493929190612fdf565b60405180910390a2611d52565b5f611a2f87611ec160201b60201c565b90505f5b8151811015611b1c575f828281518110611a5057611a4f612890565b5b60200260200101519050611a7c6001826affffffffffffffffffffff1916611f8f60201b90919060201c565b15611b0e57611a9e816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166357066c9c8a8a8a8a8a8a6040518763ffffffff1660e01b8152600401611ae096959493929190613037565b5f604051808303815f87803b158015611af7575f5ffd5b505af1158015611b09573d5f5f3e3d5ffd5b505050505b508080600101915050611a33565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611b539493929190612fdf565b60405180910390a25f611b6c8888611d8260201b60201c565b90505f611b7e87611fbd60201b60201c565b9050611b93825f895184611fc960201b60201c565b5f611ba38561139460201b60201c565b1115611c62575f611bba8a8a6120b560201b60201c565b9050611bda81611bcf8961210b60201b60201c565b61211460201b60201c565b611be986611fbd60201b60201c565b91505f5f5f5b611bfe8861139460201b60201c565b8160ff161015611c5d57611c198d8d8361211b60201b60201c565b9250611c2e818b61219960201b90919060201c565b9150611c42835f8488611fc960201b60201c565b8185611c4e9190612c7b565b94508080600101915050611bef565b505050505b5f5b8351811015611d4d575f848281518110611c8157611c80612890565b5b60200260200101519050611cad6002826affffffffffffffffffffff1916611f8f60201b90919060201c565b15611d3f57611ccf816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16635b28cdaf8c8c8c8c8c8c6040518763ffffffff1660e01b8152600401611d1196959493929190613037565b5f604051808303815f87803b158015611d28575f5ffd5b505af1158015611d3a573d5f5f3e3d5ffd5b505050505b508080600101915050611c64565b505050505b505050505050565b611d7b8585611d6f8487611dd860201b60201c565b856121be60201b60201c565b5050505050565b5f8282604051602001611d96929190613137565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b5f5f5f90505f5b8360ff16811015611e1757611dfd81866114df60201b90919060201c565b82611e089190612c7b565b91508080600101915050611ddf565b508091505092915050565b5f60208210611e565760208281611e3c57611e3b61315e565b5b048401935060208281611e5257611e5161315e565b5b0691505b8354600883021b90505f82602003905080841115611e7d576001850154600882021c821791505b509392505050565b5f5f82840190505f60086005020260086007020184901b81179050600160086005020260086007020183901b81179050805f1b91505092915050565b60605f600167ffffffffffffffff811115611edf57611ede612863565b5b604051908082528060200260200182016040528015611f0d5781602001602082028036833780820191505090505b50905082815f81518110611f2457611f23612890565b5b6020026020010181815250505f611f647f746273746f726500000000000000000053746f7265486f6f6b730000000000005f1b835f6124c960201b60201c565b9050611f86611f7b825f845161251660201b60201c565b6125b560201b60201c565b92505050919050565b5f8160ff1682611fa4856125d560201b60201c565b1660ff1614905092915050565b5f8160601c9050919050565b5f602082019050919050565b5f83111561206257602083106120045760208381611fea57611fe961315e565b5b04840193506020838161200057611fff61315e565b5b0692505b5f831115612061575f8360200390505f612023846125e160201b60201c565b1990506008850281811c91508351811c8219885416838216178855505081841161204e5750506120af565b6001860195508183019250818403935050505b5b5b602082106120865780518455600184019350602081019050602082039150612063565b5f8211156120ae575f61209e836125e160201b60201c565b9050808554168119835116178555505b5b50505050565b5f82826040516020016120c9929190613137565b604051602081830303815290604052805190602001207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569185f1c905092915050565b5f819050919050565b8082555050565b5f838360405160200161212f929190613137565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b5f8160ff1660086005020260086007020183901c5f1c64ffffffffff16905092915050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661220f85610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361227657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051612269939291906131ab565b60405180910390a26124c3565b5f6122878585611d8260201b60201c565b90505f61229986611ec160201b60201c565b90505f5b8151811015612382575f8282815181106122ba576122b9612890565b5b602002602001015190506122e66004826affffffffffffffffffffff1916611f8f60201b90919060201c565b1561237457612308816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1663964f667d898989896040518563ffffffff1660e01b815260040161234694939291906131ee565b5f604051808303815f87803b15801561235d575f5ffd5b505af115801561236f573d5f5f3e3d5ffd5b505050505b50808060010191505061229d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516123b7939291906131ab565b60405180910390a26123d8828565ffffffffffff168561261060201b60201c565b5f5b81518110156124bf575f8282815181106123f7576123f6612890565b5b602002602001015190506124236008826affffffffffffffffffffff1916611f8f60201b90919060201c565b156124b157612445816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1663a8ba8721898989896040518563ffffffff1660e01b815260040161248394939291906131ee565b5f604051808303815f87803b15801561249a575f5ffd5b505af11580156124ac573d5f5f3e3d5ffd5b505050505b5080806001019150506123da565b5050505b50505050565b606061250d6124df85858561211b60201b60201c565b5f612502856124f4898961263660201b60201c565b61219960201b90919060201c565b61265d60201b60201c565b90509392505050565b5f818311806125255750835182115b1561256b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016125629392919061323f565b60405180910390fd5b5f602085019050838161257e9190612c7b565b90505f848461258d9190612d22565b90506fffffffffffffffffffffffffffffffff80168116608083901b17925050509392505050565b60605f6125ca8360155f6126ab60201b60201c565b905080915050919050565b5f8160581c9050919050565b5f600882027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff901c9050919050565b6126318383835161262685611fbd60201b60201c565b611fc960201b60201c565b505050565b5f61265561264a84846120b560201b60201c565b61272c60201b60201c565b905092915050565b60605f612675565b5f601f19601f8301169050919050565b604051915060208201905061268b838201612665565b6040528282526126a38585858461273660201b60201c565b509392505050565b60605f6126bd8561283960201b60201c565b90505f6126cf8661284660201b60201c565b90505f8582816126e2576126e161315e565b5b0490506040519350602084016020820281016040528185525f5b82811015612720578451871c825260018101905060208201915087850194506126fc565b50505050509392505050565b5f81549050919050565b5f8311156127e6576020831061277157602083816127575761275661315e565b5b04840193506020838161276d5761276c61315e565b5b0692505b5f8311156127e5575f8360200390505f8184101561279f57612798846125e160201b60201c565b90506127b1565b6127ae826125e160201b60201c565b90505b8554600886021b8184511682198216178452508184116127d2575050612833565b6001860195508183019250818403935050505b5b5b6020821061280a57835481526001840193506020810190506020820391506127e7565b5f821115612832575f612822836125e160201b60201c565b9050808251168119865416178252505b5b50505050565b5f608082901c9050919050565b5f6fffffffffffffffffffffffffffffffff801682169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6128d0826128bd565b9050919050565b6128e0816128c6565b82525050565b6128ef816128c6565b82525050565b6128fe816128c6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61296f8261292d565b6129798185612937565b9350612989818560208601612947565b61299281612955565b840191505092915050565b5f6129a88383612965565b905092915050565b5f602082019050919050565b5f6129c682612904565b6129d0818561290e565b9350836020820285016129e28561291e565b805f5b85811015612a1d57848403895281516129fe858261299d565b9450612a09836129b0565b925060208a019950506001810190506129e5565b50829750879550505050505092915050565b5f60c082019050612a425f8301896128d7565b612a4f60208301886128e6565b612a5c60408301876128f5565b612a6960608301866128f5565b8181036080830152612a7b81856129bc565b905081810360a0830152612a8f81846129bc565b9050979650505050505050565b5f819050919050565b612ab6612ab1826128c6565b612a9c565b82525050565b5f612ac78284612aa5565b60208201915081905092915050565b5f7fffff00000000000000000000000000000000000000000000000000000000000082169050919050565b612b0a81612ad6565b82525050565b5f82825260208201905092915050565b5f612b2a8261292d565b612b348185612b10565b9350612b44818560208601612947565b612b4d81612955565b840191505092915050565b5f606082019050612b6b5f830186612b01565b612b7860208301856128d7565b8181036040830152612b8a8184612b20565b9050949350505050565b5f819050919050565b612ba681612b94565b82525050565b5f604082019050612bbf5f830185612b9d565b612bcc6020830184612b9d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f604082019050612c135f8301856128d7565b8181036020830152612c258184612b20565b90509392505050565b5f6020820190508181035f830152612c4681846129bc565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c8582612b94565b9150612c9083612b94565b9250828201905080821115612ca857612ca7612c4e565b5b92915050565b5f602082019050612cc15f830184612b9d565b92915050565b5f819050919050565b5f819050919050565b5f612cf3612cee612ce984612cc7565b612cd0565b612b94565b9050919050565b612d0381612cd9565b82525050565b5f602082019050612d1c5f830184612cfa565b92915050565b5f612d2c82612b94565b9150612d3783612b94565b9250828203905081811115612d4f57612d4e612c4e565b5b92915050565b5f612d5f82612b94565b9150612d6a83612b94565b9250828202612d7881612b94565b91508282048414831517612d8f57612d8e612c4e565b5b5092915050565b5f8115159050919050565b5f8160f81b9050919050565b5f612db782612da1565b9050919050565b5f612dc882612dad565b9050919050565b612de0612ddb82612d96565b612dbe565b82525050565b5f612df18284612dcf565b60018201915081905092915050565b612e11612e0c826128c6565b612a9c565b82525050565b612e28612e23826128c6565b612a9c565b82525050565b5f612e398286612e00565b602082019150612e498285612e17565b602082019150612e598284612e17565b602082019150819050949350505050565b5f81519050919050565b5f81905092915050565b5f612e8882612e6a565b612e928185612e74565b9350612ea2818560208601612947565b80840191505092915050565b5f612eb98285612e7e565b9150612ec58284612e7e565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f03816128bd565b82525050565b5f612f148383612efa565b60208301905092915050565b5f602082019050919050565b5f612f3682612ed1565b612f408185612edb565b9350612f4b83612eeb565b805f5b83811015612f7b578151612f628882612f09565b9750612f6d83612f20565b925050600181019050612f4e565b5085935050505092915050565b5f82825260208201905092915050565b5f612fa282612e6a565b612fac8185612f88565b9350612fbc818560208601612947565b612fc581612955565b840191505092915050565b612fd9816128c6565b82525050565b5f6080820190508181035f830152612ff78187612f2c565b9050818103602083015261300b8186612f98565b905061301a6040830185612fd0565b818103606083015261302c8184612f98565b905095945050505050565b5f60c08201905061304a5f8301896128d7565b818103602083015261305c8188612f2c565b905081810360408301526130708187612f98565b905061307f6060830186612fd0565b81810360808301526130918185612f98565b90506130a060a08301846128e6565b979650505050505050565b5f81905092915050565b6130be816128bd565b82525050565b5f6130cf83836130b5565b60208301905092915050565b5f6130e582612ed1565b6130ef81856130ab565b93506130fa83612eeb565b805f5b8381101561312a57815161311188826130c4565b975061311c83612f20565b9250506001810190506130fd565b5085935050505092915050565b5f6131428285612aa5565b60208201915061315282846130db565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f65ffffffffffff82169050919050565b6131a58161318b565b82525050565b5f6060820190508181035f8301526131c38186612f2c565b90506131d2602083018561319c565b81810360408301526131e48184612f98565b9050949350505050565b5f6080820190506132015f8301876128d7565b81810360208301526132138186612f2c565b9050613222604083018561319c565b81810360608301526132348184612f98565b905095945050505050565b5f6060820190508181035f8301526132578186612f98565b90506132666020830185612b9d565b6132736040830184612b9d565b949350505050565b612b43806132885f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063119df25f146100945780631e166c57146100b257806345ec9354146100e2578063d597351114610100578063e1af802c1461011c575b5f5ffd5b61007e600480360381019061007991906119fd565b61013a565b60405161008b9190611a42565b60405180910390f35b61009c61020b565b6040516100a99190611a9a565b60405180910390f35b6100cc60048036038101906100c79190611b37565b610219565b6040516100d99190611e0d565b60405180910390f35b6100ea610233565b6040516100f79190611e45565b60405180910390f35b61011a60048036038101906101159190612194565b610241565b005b61012461025f565b6040516101319190611a9a565b60405180910390f35b5f7fb5dee127000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061020457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f61021461026d565b905090565b61022161191d565b61022b83836102b2565b905092915050565b5f61023c6103d8565b905090565b6102538a8a8a8a8a8a8a8a8a8a6103e3565b50505050505050505050565b5f6102686104fe565b905090565b5f603436033560601c90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102af573390505b90565b6102ba61191d565b5f600267ffffffffffffffff8111156102d6576102d5611ee4565b5b6040519080825280602002602001820160405280156103045781602001602082028036833780820191505090505b5090508378ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f81518110610338576103376122c1565b5b6020026020010181815250508260ff165f1b8160018151811061035e5761035d6122c1565b5b6020026020010181815250505f5f5f6103bb7f74626170700000000000000000000000546573745461626c65000000000000005f1b857e310503190102011400000000000000000000000000000000000000000000005f1b61050c565b9250925092506103cc8383836105f6565b94505050505092915050565b5f6020360335905090565b5f6103f189898989896106d0565b90505f6103ff858585610705565b90505f61040d868686610720565b90505f600267ffffffffffffffff81111561042b5761042a611ee4565b5b6040519080825280602002602001820160405280156104595781602001602082028036833780820191505090505b5090508d78ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f8151811061048d5761048c6122c1565b5b6020026020010181815250508c60ff165f1b816001815181106104b3576104b26122c1565b5b6020026020010181815250506104ee7f74626170700000000000000000000000546573745461626c65000000000000005f1b82868686610757565b5050505050505050505050505050565b5f61050761081e565b905090565b60605f60605f61051a61081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105665761055a878787610890565b935093509350506105ed565b8073ffffffffffffffffffffffffffffffffffffffff1663419b58fd8888886040518463ffffffff1660e01b81526004016105a3939291906123dd565b5f60405180830381865afa1580156105bd573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105e591906124b1565b935093509350505b93509350939050565b6105fe61191d565b6106078461099f565b855f01866020018760400188606001896080018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525085151515158152508561ffff1661ffff168152508560ff1660ff168152508578ffffffffffffffffffffffffffffffffffffffffffffffffff1678ffffffffffffffffffffffffffffffffffffffffffffffffff1681525050505050506106b18383610a04565b8360a0018460c0018560e0018390528390528390525050509392505050565b606085858585856040516020016106eb959493929190612642565b604051602081830303815290604052905095945050505050565b5f610717845184516002855102610a9e565b90509392505050565b6060838361072d84610af2565b60405160200161073f939291906126da565b60405160208183030381529060405290509392505050565b5f61076061081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107a7576107a28686868686610b0d565b610816565b8073ffffffffffffffffffffffffffffffffffffffff1663298314fb87878787876040518663ffffffff1660e01b81526004016107e8959493929190612761565b5f604051808303815f87803b1580156107ff575f5ffd5b505af1158015610811573d5f5f3e3d5ffd5b505050505b505050505050565b5f5f610828610b2a565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610888573391505061088d565b809150505b90565b60605f60605f61089f85610b56565b90506108ac878783610b7d565b93505f6108b886610bbf565b90505f811115610994576108cc8888610c08565b93506108d784610c23565b67ffffffffffffffff8111156108f0576108ef611ee4565b5b6040519080825280601f01601f1916602001820160405280156109225781602001600182028036833780820191505090505b5092505f61092f84610c37565b90505f5b828160ff161015610991575f61094a8b8b84610c43565b90505f6109608389610cc190919063ffffffff16565b905061096e825f8387610ce6565b808461097a91906127f4565b93505050808061098990612827565b915050610933565b50505b505093509350939050565b5f5f5f5f5f6109ae865f610dd7565b60381c94506109be866019610de7565b60f81c93506109ce86601a610df7565b60f01c92506109e96109e187601c610de7565b60f81c610e07565b91506109f686601d610e10565b60601c905091939590929450565b60608060605f5f610a1e5f88610cc190919063ffffffff16565b9050610a33610a2e878484610e20565b610ebf565b9450809150610a4c600188610cc190919063ffffffff16565b81019050610a63610a5e878484610e20565b610ebf565b9350809150610a7c600288610cc190919063ffffffff16565b81019050610a93610a8e878484610e20565b610f42565b925050509250925092565b5f5f828486010190505f60086005020260086007020185901b81179050600160086005020260086007020184901b81179050600260086005020260086007020183901b81179050805f1b9150509392505050565b606080829050610b0581600260f0610f5d565b915050919050565b610b238585858585610b1e8b610fd9565b61106b565b5050505050565b5f5f7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17590508091505090565b5f600860026020610b67919061284f565b610b719190612882565b825f1c901c9050919050565b60605f8203610b9c5760405180602001604052805f8152509050610bb8565b5f610ba78585611406565b9050610bb4815f8561145c565b9150505b9392505050565b5f600860018060026020610bd3919061284f565b610bdd919061284f565b610be7919061284f565b610bf19190612882565b610bfa836114a4565b5f1c901c60ff169050919050565b5f610c1b610c1684846114ad565b611503565b905092915050565b5f815f1c66ffffffffffffff169050919050565b5f602082019050919050565b5f8383604051602001610c5792919061296f565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b5f8160ff1660086005020260086007020183901c5f1c64ffffffffff16905092915050565b5f831115610d8a5760208310610d215760208381610d0757610d06612996565b5b048401935060208381610d1d57610d1c612996565b5b0692505b5f831115610d89575f8360200390505f81841015610d4957610d428461150d565b9050610d55565b610d528261150d565b90505b8554600886021b818451168219821617845250818411610d76575050610dd1565b6001860195508183019250818403935050505b5b5b60208210610dae5783548152600184019350602081019050602082039150610d8b565b5f821115610dd0575f610dc08361150d565b9050808251168119865416178252505b5b50505050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f819050919050565b5f81602084010151905092915050565b5f81831180610e2f5750835182115b15610e75578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610e6c939291906129c3565b60405180910390fd5b5f6020850190508381610e8891906127f4565b90505f8484610e97919061284f565b90506fffffffffffffffffffffffffffffffff80168116608083901b17925050509392505050565b60605f610ecb8361153c565b90505f610ed784611549565b90508067ffffffffffffffff811115610ef357610ef2611ee4565b5b6040519080825280601f01601f191660200182016040528015610f255781602001600182028036833780820191505090505b5092505f602084019050610f3a838284611566565b505050919050565b60605f610f5283600260f06115b1565b905080915050919050565b60605f845190505f848651610f729190612882565b9050610f89565b5f601f19601f8301169050919050565b604051925060208301610f9d828201610f79565b6040528184525f602088015b84821015610fcd578051871b83526001820191506020810190508783019250610fa9565b50505050509392505050565b5f7f746273746f72650000000000000000005461626c6573000000000000000000005f1b820361102c577e600302202020000000000000000000000000000000000000000000000000005f1b9050611066565b61106361105b7f746273746f72650000000000000000005461626c6573000000000000000000005f1b84611626565b60205f61167c565b90505b919050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166110b6876116df565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361111f57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161111294939291906129ff565b60405180910390a26113fe565b5f611129876116e8565b90505f5b8151811015611210575f82828151811061114a576111496122c1565b5b602002602001015190506111766001826affffffffffffffffffffff19166117a490919063ffffffff16565b1561120257611192816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff166357066c9c8a8a8a8a8a8a6040518763ffffffff1660e01b81526004016111d496959493929190612a57565b5f604051808303815f87803b1580156111eb575f5ffd5b505af11580156111fd573d5f5f3e3d5ffd5b505050505b50808060010191505061112d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98787878760405161124794939291906129ff565b60405180910390a25f61125a8888611406565b90505f61126687610c37565b9050611275825f8951846117cc565b5f61127f85610bbf565b1115611314575f6112908a8a6114ad565b90506112a48161129f896118ac565b6118b5565b6112ad86610c37565b91505f5f5f5b6112bc88610bbf565b8160ff16101561130f576112d18d8d83610c43565b92506112e6818b610cc190919063ffffffff16565b91506112f4835f84886117cc565b818561130091906127f4565b945080806001019150506112b3565b505050505b5f5b83518110156113f9575f848281518110611333576113326122c1565b5b6020026020010151905061135f6002826affffffffffffffffffffff19166117a490919063ffffffff16565b156113eb5761137b816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff16635b28cdaf8c8c8c8c8c8c6040518763ffffffff1660e01b81526004016113bd96959493929190612a57565b5f604051808303815f87803b1580156113d4575f5ffd5b505af11580156113e6573d5f5f3e3d5ffd5b505050505b508080600101915050611316565b505050505b505050505050565b5f828260405160200161141a92919061296f565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b60605f611474565b5f601f19601f8301169050919050565b604051915060208201905061148a838201611464565b60405282825261149c85858584610ce6565b509392505050565b5f819050919050565b5f82826040516020016114c192919061296f565b604051602081830303815290604052805190602001207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569185f1c905092915050565b5f81549050919050565b5f600882027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff901c9050919050565b5f608082901c9050919050565b5f6fffffffffffffffffffffffffffffffff801682169050919050565b5b6020811061158a5782518252602082019150602083019250602081039050611567565b5f8103156115ac575f61159c8261150d565b9050808351168119855116178352505b505050565b60605f6115bd8561153c565b90505f6115c986611549565b90505f8582816115dc576115db612996565b5b0490506040519350602084016020820281016040528185525f5b8281101561161a578451871c825260018101905060208201915087850194506115f6565b50505050509392505050565b5f828260405160200161163a929190612ae2565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b5f602082106116b0576020828161169657611695612996565b5b0484019350602082816116ac576116ab612996565b5b0691505b8354600883021b90505f826020039050808411156116d7576001850154600882021c821791505b509392505050565b5f819050919050565b60605f600167ffffffffffffffff81111561170657611705611ee4565b5b6040519080825280602002602001820160405280156117345781602001602082028036833780820191505090505b50905082815f8151811061174b5761174a6122c1565b5b6020026020010181815250505f6117857f746273746f726500000000000000000053746f7265486f6f6b730000000000005f1b835f6118bc565b905061179b611796825f8451610e20565b6118f7565b92505050919050565b5f8160ff16826117b385611911565b1660ff1614905092915050565b5f8160601c9050919050565b5f83111561185f576020831061180757602083816117ed576117ec612996565b5b04840193506020838161180357611802612996565b5b0692505b5f83111561185e575f8360200390505f6118208461150d565b1990506008850281811c91508351811c8219885416838216178855505081841161184b5750506118a6565b6001860195508183019250818403935050505b5b5b602082106118835780518455600184019350602081019050602082039150611860565b5f8211156118a5575f6118958361150d565b9050808554168119835116178555505b5b50505050565b5f819050919050565b8082555050565b60606118ee6118cc858585610c43565b5f6118e9856118db8989610c08565b610cc190919063ffffffff16565b61145c565b90509392505050565b60605f6119068360155f6115b1565b905080915050919050565b5f8160581c9050919050565b6040518061010001604052805f78ffffffffffffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020015f61ffff1681526020015f151581526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119dc816119a8565b81146119e6575f5ffd5b50565b5f813590506119f7816119d3565b92915050565b5f60208284031215611a1257611a116119a0565b5b5f611a1f848285016119e9565b91505092915050565b5f8115159050919050565b611a3c81611a28565b82525050565b5f602082019050611a555f830184611a33565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a8482611a5b565b9050919050565b611a9481611a7a565b82525050565b5f602082019050611aad5f830184611a8b565b92915050565b5f78ffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b611ae081611ab3565b8114611aea575f5ffd5b50565b5f81359050611afb81611ad7565b92915050565b5f60ff82169050919050565b611b1681611b01565b8114611b20575f5ffd5b50565b5f81359050611b3181611b0d565b92915050565b5f5f60408385031215611b4d57611b4c6119a0565b5b5f611b5a85828601611aed565b9250506020611b6b85828601611b23565b9150509250929050565b611b7e81611ab3565b82525050565b611b8d81611b01565b82525050565b5f61ffff82169050919050565b611ba981611b93565b82525050565b611bb881611a28565b82525050565b611bc781611a7a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c0f82611bcd565b611c198185611bd7565b9350611c29818560208601611be7565b611c3281611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f611c6182611c3d565b611c6b8185611c47565b9350611c7b818560208601611be7565b611c8481611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f8160010b9050919050565b611ccd81611cb8565b82525050565b5f611cde8383611cc4565b60208301905092915050565b5f602082019050919050565b5f611d0082611c8f565b611d0a8185611c99565b9350611d1583611ca9565b805f5b83811015611d45578151611d2c8882611cd3565b9750611d3783611cea565b925050600181019050611d18565b5085935050505092915050565b5f61010083015f830151611d685f860182611b75565b506020830151611d7b6020860182611b84565b506040830151611d8e6040860182611ba0565b506060830151611da16060860182611baf565b506080830151611db46080860182611bbe565b5060a083015184820360a0860152611dcc8282611c05565b91505060c083015184820360c0860152611de68282611c57565b91505060e083015184820360e0860152611e008282611cf6565b9150508091505092915050565b5f6020820190508181035f830152611e258184611d52565b905092915050565b5f819050919050565b611e3f81611e2d565b82525050565b5f602082019050611e585f830184611e36565b92915050565b611e6781611b93565b8114611e71575f5ffd5b50565b5f81359050611e8281611e5e565b92915050565b611e9181611a28565b8114611e9b575f5ffd5b50565b5f81359050611eac81611e88565b92915050565b611ebb81611a7a565b8114611ec5575f5ffd5b50565b5f81359050611ed681611eb2565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f1a82611bf5565b810181811067ffffffffffffffff82111715611f3957611f38611ee4565b5b80604052505050565b5f611f4b611997565b9050611f578282611f11565b919050565b5f67ffffffffffffffff821115611f7657611f75611ee4565b5b611f7f82611bf5565b9050602081019050919050565b828183375f83830152505050565b5f611fac611fa784611f5c565b611f42565b905082815260208101848484011115611fc857611fc7611ee0565b5b611fd3848285611f8c565b509392505050565b5f82601f830112611fef57611fee611edc565b5b8135611fff848260208601611f9a565b91505092915050565b5f67ffffffffffffffff82111561202257612021611ee4565b5b61202b82611bf5565b9050602081019050919050565b5f61204a61204584612008565b611f42565b90508281526020810184848401111561206657612065611ee0565b5b612071848285611f8c565b509392505050565b5f82601f83011261208d5761208c611edc565b5b813561209d848260208601612038565b91505092915050565b5f67ffffffffffffffff8211156120c0576120bf611ee4565b5b602082029050602081019050919050565b5f5ffd5b6120de81611cb8565b81146120e8575f5ffd5b50565b5f813590506120f9816120d5565b92915050565b5f61211161210c846120a6565b611f42565b90508083825260208201905060208402830185811115612134576121336120d1565b5b835b8181101561215d578061214988826120eb565b845260208401935050602081019050612136565b5050509392505050565b5f82601f83011261217b5761217a611edc565b5b813561218b8482602086016120ff565b91505092915050565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156121b3576121b26119a0565b5b5f6121c08d828e01611aed565b9a505060206121d18d828e01611b23565b99505060406121e28d828e01611aed565b98505060606121f38d828e01611b23565b97505060806122048d828e01611e74565b96505060a06122158d828e01611e9e565b95505060c06122268d828e01611ec8565b94505060e08b013567ffffffffffffffff811115612247576122466119a4565b5b6122538d828e01611fdb565b9350506101008b013567ffffffffffffffff811115612275576122746119a4565b5b6122818d828e01612079565b9250506101208b013567ffffffffffffffff8111156122a3576122a26119a4565b5b6122af8d828e01612167565b9150509295989b9194979a5092959850565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612301826122ee565b9050919050565b612311816122f7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612349816122ee565b82525050565b5f61235a8383612340565b60208301905092915050565b5f602082019050919050565b5f61237c82612317565b6123868185612321565b935061239183612331565b805f5b838110156123c15781516123a8888261234f565b97506123b383612366565b925050600181019050612394565b5085935050505092915050565b6123d7816122f7565b82525050565b5f6060820190506123f05f830186612308565b81810360208301526124028185612372565b905061241160408301846123ce565b949350505050565b5f61242b61242684612008565b611f42565b90508281526020810184848401111561244757612446611ee0565b5b612452848285611be7565b509392505050565b5f82601f83011261246e5761246d611edc565b5b815161247e848260208601612419565b91505092915050565b612490816122ee565b811461249a575f5ffd5b50565b5f815190506124ab81612487565b92915050565b5f5f5f606084860312156124c8576124c76119a0565b5b5f84015167ffffffffffffffff8111156124e5576124e46119a4565b5b6124f18682870161245a565b93505060206125028682870161249d565b925050604084015167ffffffffffffffff811115612523576125226119a4565b5b61252f8682870161245a565b9150509250925092565b5f8160381b9050919050565b5f61254f82612539565b9050919050565b61256761256282611ab3565b612545565b82525050565b5f8160f81b9050919050565b5f6125838261256d565b9050919050565b61259b61259682611b01565b612579565b82525050565b5f8160f01b9050919050565b5f6125b7826125a1565b9050919050565b6125cf6125ca82611b93565b6125ad565b82525050565b5f6125df82612579565b9050919050565b6125f76125f282611a28565b6125d5565b82525050565b5f8160601b9050919050565b5f612613826125fd565b9050919050565b5f61262482612609565b9050919050565b61263c61263782611a7a565b61261a565b82525050565b5f61264d8288612556565b60198201915061265d828761258a565b60018201915061266d82866125be565b60028201915061267d82856125e6565b60018201915061268d828461262b565b6014820191508190509695505050505050565b5f81905092915050565b5f6126b482611c3d565b6126be81856126a0565b93506126ce818560208601611be7565b80840191505092915050565b5f6126e582866126aa565b91506126f182856126aa565b91506126fd82846126aa565b9150819050949350505050565b5f82825260208201905092915050565b5f61272482611c3d565b61272e818561270a565b935061273e818560208601611be7565b61274781611bf5565b840191505092915050565b61275b816122f7565b82525050565b5f60a0820190506127745f830188612308565b81810360208301526127868187612372565b9050818103604083015261279a818661271a565b90506127a96060830185612752565b81810360808301526127bb818461271a565b90509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127fe82611e2d565b915061280983611e2d565b9250828201905080821115612821576128206127c7565b5b92915050565b5f61283182611b01565b915060ff8203612844576128436127c7565b5b600182019050919050565b5f61285982611e2d565b915061286483611e2d565b925082820390508181111561287c5761287b6127c7565b5b92915050565b5f61288c82611e2d565b915061289783611e2d565b92508282026128a581611e2d565b915082820484148315176128bc576128bb6127c7565b5b5092915050565b5f819050919050565b6128dd6128d8826122f7565b6128c3565b82525050565b5f81905092915050565b6128f6816122ee565b82525050565b5f61290783836128ed565b60208301905092915050565b5f61291d82612317565b61292781856128e3565b935061293283612331565b805f5b8381101561296257815161294988826128fc565b975061295483612366565b925050600181019050612935565b5085935050505092915050565b5f61297a82856128cc565b60208201915061298a8284612913565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6060820190508181035f8301526129db818661271a565b90506129ea6020830185611e36565b6129f76040830184611e36565b949350505050565b5f6080820190508181035f830152612a178187612372565b90508181036020830152612a2b818661271a565b9050612a3a6040830185612752565b8181036060830152612a4c818461271a565b905095945050505050565b5f60c082019050612a6a5f830189612308565b8181036020830152612a7c8188612372565b90508181036040830152612a90818761271a565b9050612a9f6060830186612752565b8181036080830152612ab1818561271a565b9050612ac060a08301846123ce565b979650505050505050565b612adc612ad7826122ee565b6128c3565b82525050565b5f612aed82856128cc565b602082019150612afd8284612acb565b602082019150819050939250505056fea26469706673582212204d49b1c04d595430cd1560d747e911e3b7cbe59c2547cffe7cc6b2b046e2285064736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063119df25f146100945780631e166c57146100b257806345ec9354146100e2578063d597351114610100578063e1af802c1461011c575b5f5ffd5b61007e600480360381019061007991906119fd565b61013a565b60405161008b9190611a42565b60405180910390f35b61009c61020b565b6040516100a99190611a9a565b60405180910390f35b6100cc60048036038101906100c79190611b37565b610219565b6040516100d99190611e0d565b60405180910390f35b6100ea610233565b6040516100f79190611e45565b60405180910390f35b61011a60048036038101906101159190612194565b610241565b005b61012461025f565b6040516101319190611a9a565b60405180910390f35b5f7fb5dee127000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061020457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f61021461026d565b905090565b61022161191d565b61022b83836102b2565b905092915050565b5f61023c6103d8565b905090565b6102538a8a8a8a8a8a8a8a8a8a6103e3565b50505050505050505050565b5f6102686104fe565b905090565b5f603436033560601c90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102af573390505b90565b6102ba61191d565b5f600267ffffffffffffffff8111156102d6576102d5611ee4565b5b6040519080825280602002602001820160405280156103045781602001602082028036833780820191505090505b5090508378ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f81518110610338576103376122c1565b5b6020026020010181815250508260ff165f1b8160018151811061035e5761035d6122c1565b5b6020026020010181815250505f5f5f6103bb7f74626170700000000000000000000000546573745461626c65000000000000005f1b857e310503190102011400000000000000000000000000000000000000000000005f1b61050c565b9250925092506103cc8383836105f6565b94505050505092915050565b5f6020360335905090565b5f6103f189898989896106d0565b90505f6103ff858585610705565b90505f61040d868686610720565b90505f600267ffffffffffffffff81111561042b5761042a611ee4565b5b6040519080825280602002602001820160405280156104595781602001602082028036833780820191505090505b5090508d78ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f8151811061048d5761048c6122c1565b5b6020026020010181815250508c60ff165f1b816001815181106104b3576104b26122c1565b5b6020026020010181815250506104ee7f74626170700000000000000000000000546573745461626c65000000000000005f1b82868686610757565b5050505050505050505050505050565b5f61050761081e565b905090565b60605f60605f61051a61081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105665761055a878787610890565b935093509350506105ed565b8073ffffffffffffffffffffffffffffffffffffffff1663419b58fd8888886040518463ffffffff1660e01b81526004016105a3939291906123dd565b5f60405180830381865afa1580156105bd573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105e591906124b1565b935093509350505b93509350939050565b6105fe61191d565b6106078461099f565b855f01866020018760400188606001896080018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525085151515158152508561ffff1661ffff168152508560ff1660ff168152508578ffffffffffffffffffffffffffffffffffffffffffffffffff1678ffffffffffffffffffffffffffffffffffffffffffffffffff1681525050505050506106b18383610a04565b8360a0018460c0018560e0018390528390528390525050509392505050565b606085858585856040516020016106eb959493929190612642565b604051602081830303815290604052905095945050505050565b5f610717845184516002855102610a9e565b90509392505050565b6060838361072d84610af2565b60405160200161073f939291906126da565b60405160208183030381529060405290509392505050565b5f61076061081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107a7576107a28686868686610b0d565b610816565b8073ffffffffffffffffffffffffffffffffffffffff1663298314fb87878787876040518663ffffffff1660e01b81526004016107e8959493929190612761565b5f604051808303815f87803b1580156107ff575f5ffd5b505af1158015610811573d5f5f3e3d5ffd5b505050505b505050505050565b5f5f610828610b2a565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610888573391505061088d565b809150505b90565b60605f60605f61089f85610b56565b90506108ac878783610b7d565b93505f6108b886610bbf565b90505f811115610994576108cc8888610c08565b93506108d784610c23565b67ffffffffffffffff8111156108f0576108ef611ee4565b5b6040519080825280601f01601f1916602001820160405280156109225781602001600182028036833780820191505090505b5092505f61092f84610c37565b90505f5b828160ff161015610991575f61094a8b8b84610c43565b90505f6109608389610cc190919063ffffffff16565b905061096e825f8387610ce6565b808461097a91906127f4565b93505050808061098990612827565b915050610933565b50505b505093509350939050565b5f5f5f5f5f6109ae865f610dd7565b60381c94506109be866019610de7565b60f81c93506109ce86601a610df7565b60f01c92506109e96109e187601c610de7565b60f81c610e07565b91506109f686601d610e10565b60601c905091939590929450565b60608060605f5f610a1e5f88610cc190919063ffffffff16565b9050610a33610a2e878484610e20565b610ebf565b9450809150610a4c600188610cc190919063ffffffff16565b81019050610a63610a5e878484610e20565b610ebf565b9350809150610a7c600288610cc190919063ffffffff16565b81019050610a93610a8e878484610e20565b610f42565b925050509250925092565b5f5f828486010190505f60086005020260086007020185901b81179050600160086005020260086007020184901b81179050600260086005020260086007020183901b81179050805f1b9150509392505050565b606080829050610b0581600260f0610f5d565b915050919050565b610b238585858585610b1e8b610fd9565b61106b565b5050505050565b5f5f7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17590508091505090565b5f600860026020610b67919061284f565b610b719190612882565b825f1c901c9050919050565b60605f8203610b9c5760405180602001604052805f8152509050610bb8565b5f610ba78585611406565b9050610bb4815f8561145c565b9150505b9392505050565b5f600860018060026020610bd3919061284f565b610bdd919061284f565b610be7919061284f565b610bf19190612882565b610bfa836114a4565b5f1c901c60ff169050919050565b5f610c1b610c1684846114ad565b611503565b905092915050565b5f815f1c66ffffffffffffff169050919050565b5f602082019050919050565b5f8383604051602001610c5792919061296f565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b5f8160ff1660086005020260086007020183901c5f1c64ffffffffff16905092915050565b5f831115610d8a5760208310610d215760208381610d0757610d06612996565b5b048401935060208381610d1d57610d1c612996565b5b0692505b5f831115610d89575f8360200390505f81841015610d4957610d428461150d565b9050610d55565b610d528261150d565b90505b8554600886021b818451168219821617845250818411610d76575050610dd1565b6001860195508183019250818403935050505b5b5b60208210610dae5783548152600184019350602081019050602082039150610d8b565b5f821115610dd0575f610dc08361150d565b9050808251168119865416178252505b5b50505050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f819050919050565b5f81602084010151905092915050565b5f81831180610e2f5750835182115b15610e75578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610e6c939291906129c3565b60405180910390fd5b5f6020850190508381610e8891906127f4565b90505f8484610e97919061284f565b90506fffffffffffffffffffffffffffffffff80168116608083901b17925050509392505050565b60605f610ecb8361153c565b90505f610ed784611549565b90508067ffffffffffffffff811115610ef357610ef2611ee4565b5b6040519080825280601f01601f191660200182016040528015610f255781602001600182028036833780820191505090505b5092505f602084019050610f3a838284611566565b505050919050565b60605f610f5283600260f06115b1565b905080915050919050565b60605f845190505f848651610f729190612882565b9050610f89565b5f601f19601f8301169050919050565b604051925060208301610f9d828201610f79565b6040528184525f602088015b84821015610fcd578051871b83526001820191506020810190508783019250610fa9565b50505050509392505050565b5f7f746273746f72650000000000000000005461626c6573000000000000000000005f1b820361102c577e600302202020000000000000000000000000000000000000000000000000005f1b9050611066565b61106361105b7f746273746f72650000000000000000005461626c6573000000000000000000005f1b84611626565b60205f61167c565b90505b919050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166110b6876116df565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361111f57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161111294939291906129ff565b60405180910390a26113fe565b5f611129876116e8565b90505f5b8151811015611210575f82828151811061114a576111496122c1565b5b602002602001015190506111766001826affffffffffffffffffffff19166117a490919063ffffffff16565b1561120257611192816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff166357066c9c8a8a8a8a8a8a6040518763ffffffff1660e01b81526004016111d496959493929190612a57565b5f604051808303815f87803b1580156111eb575f5ffd5b505af11580156111fd573d5f5f3e3d5ffd5b505050505b50808060010191505061112d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98787878760405161124794939291906129ff565b60405180910390a25f61125a8888611406565b90505f61126687610c37565b9050611275825f8951846117cc565b5f61127f85610bbf565b1115611314575f6112908a8a6114ad565b90506112a48161129f896118ac565b6118b5565b6112ad86610c37565b91505f5f5f5b6112bc88610bbf565b8160ff16101561130f576112d18d8d83610c43565b92506112e6818b610cc190919063ffffffff16565b91506112f4835f84886117cc565b818561130091906127f4565b945080806001019150506112b3565b505050505b5f5b83518110156113f9575f848281518110611333576113326122c1565b5b6020026020010151905061135f6002826affffffffffffffffffffff19166117a490919063ffffffff16565b156113eb5761137b816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff16635b28cdaf8c8c8c8c8c8c6040518763ffffffff1660e01b81526004016113bd96959493929190612a57565b5f604051808303815f87803b1580156113d4575f5ffd5b505af11580156113e6573d5f5f3e3d5ffd5b505050505b508080600101915050611316565b505050505b505050505050565b5f828260405160200161141a92919061296f565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b60605f611474565b5f601f19601f8301169050919050565b604051915060208201905061148a838201611464565b60405282825261149c85858584610ce6565b509392505050565b5f819050919050565b5f82826040516020016114c192919061296f565b604051602081830303815290604052805190602001207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569185f1c905092915050565b5f81549050919050565b5f600882027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff901c9050919050565b5f608082901c9050919050565b5f6fffffffffffffffffffffffffffffffff801682169050919050565b5b6020811061158a5782518252602082019150602083019250602081039050611567565b5f8103156115ac575f61159c8261150d565b9050808351168119855116178352505b505050565b60605f6115bd8561153c565b90505f6115c986611549565b90505f8582816115dc576115db612996565b5b0490506040519350602084016020820281016040528185525f5b8281101561161a578451871c825260018101905060208201915087850194506115f6565b50505050509392505050565b5f828260405160200161163a929190612ae2565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b5f602082106116b0576020828161169657611695612996565b5b0484019350602082816116ac576116ab612996565b5b0691505b8354600883021b90505f826020039050808411156116d7576001850154600882021c821791505b509392505050565b5f819050919050565b60605f600167ffffffffffffffff81111561170657611705611ee4565b5b6040519080825280602002602001820160405280156117345781602001602082028036833780820191505090505b50905082815f8151811061174b5761174a6122c1565b5b6020026020010181815250505f6117857f746273746f726500000000000000000053746f7265486f6f6b730000000000005f1b835f6118bc565b905061179b611796825f8451610e20565b6118f7565b92505050919050565b5f8160ff16826117b385611911565b1660ff1614905092915050565b5f8160601c9050919050565b5f83111561185f576020831061180757602083816117ed576117ec612996565b5b04840193506020838161180357611802612996565b5b0692505b5f83111561185e575f8360200390505f6118208461150d565b1990506008850281811c91508351811c8219885416838216178855505081841161184b5750506118a6565b6001860195508183019250818403935050505b5b5b602082106118835780518455600184019350602081019050602082039150611860565b5f8211156118a5575f6118958361150d565b9050808554168119835116178555505b5b50505050565b5f819050919050565b8082555050565b60606118ee6118cc858585610c43565b5f6118e9856118db8989610c08565b610cc190919063ffffffff16565b61145c565b90509392505050565b60605f6119068360155f6115b1565b905080915050919050565b5f8160581c9050919050565b6040518061010001604052805f78ffffffffffffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020015f61ffff1681526020015f151581526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119dc816119a8565b81146119e6575f5ffd5b50565b5f813590506119f7816119d3565b92915050565b5f60208284031215611a1257611a116119a0565b5b5f611a1f848285016119e9565b91505092915050565b5f8115159050919050565b611a3c81611a28565b82525050565b5f602082019050611a555f830184611a33565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a8482611a5b565b9050919050565b611a9481611a7a565b82525050565b5f602082019050611aad5f830184611a8b565b92915050565b5f78ffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b611ae081611ab3565b8114611aea575f5ffd5b50565b5f81359050611afb81611ad7565b92915050565b5f60ff82169050919050565b611b1681611b01565b8114611b20575f5ffd5b50565b5f81359050611b3181611b0d565b92915050565b5f5f60408385031215611b4d57611b4c6119a0565b5b5f611b5a85828601611aed565b9250506020611b6b85828601611b23565b9150509250929050565b611b7e81611ab3565b82525050565b611b8d81611b01565b82525050565b5f61ffff82169050919050565b611ba981611b93565b82525050565b611bb881611a28565b82525050565b611bc781611a7a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c0f82611bcd565b611c198185611bd7565b9350611c29818560208601611be7565b611c3281611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f611c6182611c3d565b611c6b8185611c47565b9350611c7b818560208601611be7565b611c8481611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f8160010b9050919050565b611ccd81611cb8565b82525050565b5f611cde8383611cc4565b60208301905092915050565b5f602082019050919050565b5f611d0082611c8f565b611d0a8185611c99565b9350611d1583611ca9565b805f5b83811015611d45578151611d2c8882611cd3565b9750611d3783611cea565b925050600181019050611d18565b5085935050505092915050565b5f61010083015f830151611d685f860182611b75565b506020830151611d7b6020860182611b84565b506040830151611d8e6040860182611ba0565b506060830151611da16060860182611baf565b506080830151611db46080860182611bbe565b5060a083015184820360a0860152611dcc8282611c05565b91505060c083015184820360c0860152611de68282611c57565b91505060e083015184820360e0860152611e008282611cf6565b9150508091505092915050565b5f6020820190508181035f830152611e258184611d52565b905092915050565b5f819050919050565b611e3f81611e2d565b82525050565b5f602082019050611e585f830184611e36565b92915050565b611e6781611b93565b8114611e71575f5ffd5b50565b5f81359050611e8281611e5e565b92915050565b611e9181611a28565b8114611e9b575f5ffd5b50565b5f81359050611eac81611e88565b92915050565b611ebb81611a7a565b8114611ec5575f5ffd5b50565b5f81359050611ed681611eb2565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f1a82611bf5565b810181811067ffffffffffffffff82111715611f3957611f38611ee4565b5b80604052505050565b5f611f4b611997565b9050611f578282611f11565b919050565b5f67ffffffffffffffff821115611f7657611f75611ee4565b5b611f7f82611bf5565b9050602081019050919050565b828183375f83830152505050565b5f611fac611fa784611f5c565b611f42565b905082815260208101848484011115611fc857611fc7611ee0565b5b611fd3848285611f8c565b509392505050565b5f82601f830112611fef57611fee611edc565b5b8135611fff848260208601611f9a565b91505092915050565b5f67ffffffffffffffff82111561202257612021611ee4565b5b61202b82611bf5565b9050602081019050919050565b5f61204a61204584612008565b611f42565b90508281526020810184848401111561206657612065611ee0565b5b612071848285611f8c565b509392505050565b5f82601f83011261208d5761208c611edc565b5b813561209d848260208601612038565b91505092915050565b5f67ffffffffffffffff8211156120c0576120bf611ee4565b5b602082029050602081019050919050565b5f5ffd5b6120de81611cb8565b81146120e8575f5ffd5b50565b5f813590506120f9816120d5565b92915050565b5f61211161210c846120a6565b611f42565b90508083825260208201905060208402830185811115612134576121336120d1565b5b835b8181101561215d578061214988826120eb565b845260208401935050602081019050612136565b5050509392505050565b5f82601f83011261217b5761217a611edc565b5b813561218b8482602086016120ff565b91505092915050565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156121b3576121b26119a0565b5b5f6121c08d828e01611aed565b9a505060206121d18d828e01611b23565b99505060406121e28d828e01611aed565b98505060606121f38d828e01611b23565b97505060806122048d828e01611e74565b96505060a06122158d828e01611e9e565b95505060c06122268d828e01611ec8565b94505060e08b013567ffffffffffffffff811115612247576122466119a4565b5b6122538d828e01611fdb565b9350506101008b013567ffffffffffffffff811115612275576122746119a4565b5b6122818d828e01612079565b9250506101208b013567ffffffffffffffff8111156122a3576122a26119a4565b5b6122af8d828e01612167565b9150509295989b9194979a5092959850565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612301826122ee565b9050919050565b612311816122f7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612349816122ee565b82525050565b5f61235a8383612340565b60208301905092915050565b5f602082019050919050565b5f61237c82612317565b6123868185612321565b935061239183612331565b805f5b838110156123c15781516123a8888261234f565b97506123b383612366565b925050600181019050612394565b5085935050505092915050565b6123d7816122f7565b82525050565b5f6060820190506123f05f830186612308565b81810360208301526124028185612372565b905061241160408301846123ce565b949350505050565b5f61242b61242684612008565b611f42565b90508281526020810184848401111561244757612446611ee0565b5b612452848285611be7565b509392505050565b5f82601f83011261246e5761246d611edc565b5b815161247e848260208601612419565b91505092915050565b612490816122ee565b811461249a575f5ffd5b50565b5f815190506124ab81612487565b92915050565b5f5f5f606084860312156124c8576124c76119a0565b5b5f84015167ffffffffffffffff8111156124e5576124e46119a4565b5b6124f18682870161245a565b93505060206125028682870161249d565b925050604084015167ffffffffffffffff811115612523576125226119a4565b5b61252f8682870161245a565b9150509250925092565b5f8160381b9050919050565b5f61254f82612539565b9050919050565b61256761256282611ab3565b612545565b82525050565b5f8160f81b9050919050565b5f6125838261256d565b9050919050565b61259b61259682611b01565b612579565b82525050565b5f8160f01b9050919050565b5f6125b7826125a1565b9050919050565b6125cf6125ca82611b93565b6125ad565b82525050565b5f6125df82612579565b9050919050565b6125f76125f282611a28565b6125d5565b82525050565b5f8160601b9050919050565b5f612613826125fd565b9050919050565b5f61262482612609565b9050919050565b61263c61263782611a7a565b61261a565b82525050565b5f61264d8288612556565b60198201915061265d828761258a565b60018201915061266d82866125be565b60028201915061267d82856125e6565b60018201915061268d828461262b565b6014820191508190509695505050505050565b5f81905092915050565b5f6126b482611c3d565b6126be81856126a0565b93506126ce818560208601611be7565b80840191505092915050565b5f6126e582866126aa565b91506126f182856126aa565b91506126fd82846126aa565b9150819050949350505050565b5f82825260208201905092915050565b5f61272482611c3d565b61272e818561270a565b935061273e818560208601611be7565b61274781611bf5565b840191505092915050565b61275b816122f7565b82525050565b5f60a0820190506127745f830188612308565b81810360208301526127868187612372565b9050818103604083015261279a818661271a565b90506127a96060830185612752565b81810360808301526127bb818461271a565b90509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127fe82611e2d565b915061280983611e2d565b9250828201905080821115612821576128206127c7565b5b92915050565b5f61283182611b01565b915060ff8203612844576128436127c7565b5b600182019050919050565b5f61285982611e2d565b915061286483611e2d565b925082820390508181111561287c5761287b6127c7565b5b92915050565b5f61288c82611e2d565b915061289783611e2d565b92508282026128a581611e2d565b915082820484148315176128bc576128bb6127c7565b5b5092915050565b5f819050919050565b6128dd6128d8826122f7565b6128c3565b82525050565b5f81905092915050565b6128f6816122ee565b82525050565b5f61290783836128ed565b60208301905092915050565b5f61291d82612317565b61292781856128e3565b935061293283612331565b805f5b8381101561296257815161294988826128fc565b975061295483612366565b925050600181019050612935565b5085935050505092915050565b5f61297a82856128cc565b60208201915061298a8284612913565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6060820190508181035f8301526129db818661271a565b90506129ea6020830185611e36565b6129f76040830184611e36565b949350505050565b5f6080820190508181035f830152612a178187612372565b90508181036020830152612a2b818661271a565b9050612a3a6040830185612752565b8181036060830152612a4c818461271a565b905095945050505050565b5f60c082019050612a6a5f830189612308565b8181036020830152612a7c8188612372565b90508181036040830152612a90818761271a565b9050612a9f6060830186612752565b8181036080830152612ab1818561271a565b9050612ac060a08301846123ce565b979650505050505050565b612adc612ad7826122ee565b6128c3565b82525050565b5f612aed82856128cc565b602082019150612afd8284612acb565b602082019150819050939250505056fea26469706673582212204d49b1c04d595430cd1560d747e911e3b7cbe59c2547cffe7cc6b2b046e2285064736f6c634300081c0033" +} as const +/** + * @property _msgSender() Extract the `msg.sender` from the context appended to the calldata. + * @property _msgValue() Extract the `msg.value` from the context appended to the calldata. + * @property _world() Get the address of the World contract that routed the call to this WorldContextConsumer. + * @property supportsInterface(bytes4) Checks if an interface is supported by the contract. using ERC-165 supportsInterface (see https://eips.ethereum.org/EIPS/eip-165) + * @see [contract docs](https://tevm.sh/learn/contracts/) for more documentation + */ +export const TestSystem = createContract(_TestSystem); +export const artifacts = { + "TestSystem": { + "contractName": "TestSystem", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "FieldLayout_Empty", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "staticDataLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "computedStaticDataLength", + "type": "uint256" + } + ], + "name": "FieldLayout_InvalidStaticDataLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "FieldLayout_StaticLengthDoesNotFitInAWord", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "FieldLayout_StaticLengthIsNotZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "FieldLayout_StaticLengthIsZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numFields", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFields", + "type": "uint256" + } + ], + "name": "FieldLayout_TooManyDynamicFields", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numFields", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFields", + "type": "uint256" + } + ], + "name": "FieldLayout_TooManyFields", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "Schema_InvalidLength", + "type": "error" + }, + { + "inputs": [], + "name": "Schema_StaticTypeAfterDynamicType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "end", + "type": "uint256" + } + ], + "name": "Slice_OutOfBounds", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "received", + "type": "uint256" + } + ], + "name": "Store_InvalidFieldNamesLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "received", + "type": "uint256" + } + ], + "name": "Store_InvalidKeyNamesLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes2", + "name": "expected", + "type": "bytes2" + }, + { + "internalType": "ResourceId", + "name": "resourceId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "resourceIdString", + "type": "string" + } + ], + "name": "Store_InvalidResourceType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "received", + "type": "uint256" + } + ], + "name": "Store_InvalidStaticDataLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "received", + "type": "uint256" + } + ], + "name": "Store_InvalidValueSchemaDynamicLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "received", + "type": "uint256" + } + ], + "name": "Store_InvalidValueSchemaLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "received", + "type": "uint256" + } + ], + "name": "Store_InvalidValueSchemaStaticLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "ResourceId", + "name": "tableId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "tableIdString", + "type": "string" + } + ], + "name": "Store_TableAlreadyExists", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "ResourceId", + "name": "tableId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "keyTuple", + "type": "bytes32[]" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "staticData", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "EncodedLengths", + "name": "encodedLengths", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "dynamicData", + "type": "bytes" + } + ], + "name": "Store_SetRecord", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "ResourceId", + "name": "tableId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "keyTuple", + "type": "bytes32[]" + }, + { + "indexed": false, + "internalType": "uint48", + "name": "start", + "type": "uint48" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "Store_SpliceStaticData", + "type": "event" + }, + { + "inputs": [], + "name": "_msgSender", + "outputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_msgValue", + "outputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_world", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint200", + "name": "key1", + "type": "uint200" + }, + { + "internalType": "uint8", + "name": "key2", + "type": "uint8" + } + ], + "name": "get", + "outputs": [ + { + "components": [ + { + "internalType": "uint200", + "name": "val1", + "type": "uint200" + }, + { + "internalType": "uint8", + "name": "val2", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "val3", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "val4", + "type": "bool" + }, + { + "internalType": "address", + "name": "val5", + "type": "address" + }, + { + "internalType": "string", + "name": "dyn1", + "type": "string" + }, + { + "internalType": "bytes", + "name": "dyn2", + "type": "bytes" + }, + { + "internalType": "int16[]", + "name": "dyn3", + "type": "int16[]" + } + ], + "internalType": "struct TestTableData", + "name": "_table", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint200", + "name": "key1", + "type": "uint200" + }, + { + "internalType": "uint8", + "name": "key2", + "type": "uint8" + }, + { + "internalType": "uint200", + "name": "val1", + "type": "uint200" + }, + { + "internalType": "uint8", + "name": "val2", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "val3", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "val4", + "type": "bool" + }, + { + "internalType": "address", + "name": "val5", + "type": "address" + }, + { + "internalType": "string", + "name": "dyn1", + "type": "string" + }, + { + "internalType": "bytes", + "name": "dyn2", + "type": "bytes" + }, + { + "internalType": "int16[]", + "name": "dyn3", + "type": "int16[]" + } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "userdoc": { + "errors": { + "FieldLayout_Empty()": [ + { + "notice": "Error raised when the provided field layout is empty." + } + ], + "FieldLayout_InvalidStaticDataLength(uint256,uint256)": [ + { + "notice": "Error raised when the provided field layout has an invalid static data length." + } + ], + "FieldLayout_StaticLengthDoesNotFitInAWord(uint256)": [ + { + "notice": "Error raised when the provided field layout has a static data length that does not fit in a word (32 bytes)." + } + ], + "FieldLayout_StaticLengthIsNotZero(uint256)": [ + { + "notice": "Error raised when the provided field layout has a nonzero static data length." + } + ], + "FieldLayout_StaticLengthIsZero(uint256)": [ + { + "notice": "Error raised when the provided field layout has a static data length of zero." + } + ], + "FieldLayout_TooManyDynamicFields(uint256,uint256)": [ + { + "notice": "Error raised when the provided field layout has too many dynamic fields." + } + ], + "FieldLayout_TooManyFields(uint256,uint256)": [ + { + "notice": "Error raised when the provided field layout has too many fields." + } + ], + "Schema_InvalidLength(uint256)": [ + { + "notice": "Error raised when the provided schema has an invalid length." + } + ], + "Schema_StaticTypeAfterDynamicType()": [ + { + "notice": "Error raised when a static type is placed after a dynamic type in a schema." + } + ], + "Slice_OutOfBounds(bytes,uint256,uint256)": [ + { + "notice": "Error raised when the provided slice is out of bounds." + } + ], + "Store_InvalidFieldNamesLength(uint256,uint256)": [ + { + "notice": "Error raised if the provided field names length is invalid." + } + ], + "Store_InvalidKeyNamesLength(uint256,uint256)": [ + { + "notice": "Error raised if the provided key names length is invalid." + } + ], + "Store_InvalidResourceType(bytes2,bytes32,string)": [ + { + "notice": "Error raised if the provided resource ID cannot be found." + } + ], + "Store_InvalidStaticDataLength(uint256,uint256)": [ + { + "notice": "Error raised if the provided static data length is invalid." + } + ], + "Store_InvalidValueSchemaDynamicLength(uint256,uint256)": [ + { + "notice": "Error raised if the provided schema dynamic length is invalid." + } + ], + "Store_InvalidValueSchemaLength(uint256,uint256)": [ + { + "notice": "Error raised if the provided value schema length is invalid." + } + ], + "Store_InvalidValueSchemaStaticLength(uint256,uint256)": [ + { + "notice": "Error raised if the provided schema static length is invalid." + } + ], + "Store_TableAlreadyExists(bytes32,string)": [ + { + "notice": "Error raised if the provided table already exists." + } + ] + }, + "events": { + "Store_SetRecord(bytes32,bytes32[],bytes,bytes32,bytes)": { + "notice": "Emitted when a new record is set in the store." + }, + "Store_SpliceStaticData(bytes32,bytes32[],uint48,bytes)": { + "notice": "Emitted when static data in the store is spliced." + } + }, + "kind": "user", + "methods": { + "_msgSender()": { + "notice": "Extract the `msg.sender` from the context appended to the calldata." + }, + "_msgValue()": { + "notice": "Extract the `msg.value` from the context appended to the calldata." + }, + "_world()": { + "notice": "Get the address of the World contract that routed the call to this WorldContextConsumer." + }, + "supportsInterface(bytes4)": { + "notice": "Checks if an interface is supported by the contract. using ERC-165 supportsInterface (see https://eips.ethereum.org/EIPS/eip-165)" + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "object": "608060405234801561000f575f5ffd5b5061001e61003160201b60201c565b61002c61004260201b60201c565b61327b565b610040306100f760201b60201c565b565b6100f57f74626170700000000000000000000000546573745461626c65000000000000005f1b7e310503190102011400000000000000000000000000000000000000000000005f1b7e1a0200180000000000000000000000000000000000000000000000000000005f1b7e3105031800016061c5c48300000000000000000000000000000000000000005f1b6100dc61014860201b60201c565b6100ea61024760201b60201c565b61054460201b60201c565b565b8061010661061b60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600267ffffffffffffffff81111561016557610164612863565b5b60405190808252806020026020018201604052801561019857816020015b60608152602001906001900390816101835790505b5090506040518060400160405280600481526020017f6b65793100000000000000000000000000000000000000000000000000000000815250815f815181106101e4576101e3612890565b5b60200260200101819052506040518060400160405280600481526020017f6b657932000000000000000000000000000000000000000000000000000000008152508160018151811061023957610238612890565b5b602002602001018190525090565b6060600867ffffffffffffffff81111561026457610263612863565b5b60405190808252806020026020018201604052801561029757816020015b60608152602001906001900390816102825790505b5090506040518060400160405280600481526020017f76616c3100000000000000000000000000000000000000000000000000000000815250815f815181106102e3576102e2612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c32000000000000000000000000000000000000000000000000000000008152508160018151811061033857610337612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c33000000000000000000000000000000000000000000000000000000008152508160028151811061038d5761038c612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c3400000000000000000000000000000000000000000000000000000000815250816003815181106103e2576103e1612890565b5b60200260200101819052506040518060400160405280600481526020017f76616c35000000000000000000000000000000000000000000000000000000008152508160048151811061043757610436612890565b5b60200260200101819052506040518060400160405280600481526020017f64796e31000000000000000000000000000000000000000000000000000000008152508160058151811061048c5761048b612890565b5b60200260200101819052506040518060400160405280600481526020017f64796e3200000000000000000000000000000000000000000000000000000000815250816006815181106104e1576104e0612890565b5b60200260200101819052506040518060400160405280600481526020017f64796e33000000000000000000000000000000000000000000000000000000008152508160078151811061053657610535612890565b5b602002602001018190525090565b5f61055361064760201b60201c565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105a15761059c8787878787876106bf60201b60201c565b610612565b8073ffffffffffffffffffffffffffffffffffffffff16630ba51f498888888888886040518763ffffffff1660e01b81526004016105e496959493929190612a2f565b5f604051808303815f87803b1580156105fb575f5ffd5b505af115801561060d573d5f5f3e3d5ffd5b505050505b50505050505050565b5f5f7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17590508091505090565b5f5f61065761061b60201b60201c565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b757339150506106bc565b809150505b90565b7f74620000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661071087610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141580156107af57507f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661078b87610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15610834577f746200000000000000000000000000000000000000000000000000000000000086876040516020016107e79190612abc565b6040516020818303038152906040526040517f31b4668300000000000000000000000000000000000000000000000000000000815260040161082b93929190612b58565b60405180910390fd5b61084385610d2060201b60201c565b610857600185610fd360201b90919060201c565b61086a5f84610fd360201b90919060201c565b6108798461127860201b60201c565b8251146108ce5761088f8461127860201b60201c565b82516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004016108c5929190612bac565b60405180910390fd5b6108dd856112c260201b60201c565b815114610932576108f3856112c260201b60201c565b81516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600401610929929190612bac565b60405180910390fd5b610941856112c260201b60201c565b6109508461127860201b60201c565b146109b057610964856112c260201b60201c565b6109738461127860201b60201c565b6040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004016109a7929190612bac565b60405180910390fd5b6109bf8561130c60201b60201c565b6109ce8461135060201b60201c565b14610a2e576109e28561130c60201b60201c565b6109f18461135060201b60201c565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600401610a25929190612bac565b60405180910390fd5b610a3d8561139460201b60201c565b610a4c846113e360201b60201c565b14610aac57610a608561139460201b60201c565b610a6f846113e360201b60201c565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600401610aa3929190612bac565b60405180910390fd5b5f5b610abd8661130c60201b60201c565b811015610b9f57610af7610ada828661143260201b90919060201c565b60c5811115610aec57610aeb612bd3565b5b61146d60201b60201c565b610b0a82886114df60201b90919060201c565b14610b9257610b2281876114df60201b90919060201c565b610b55610b38838761143260201b90919060201c565b60c5811115610b4a57610b49612bd3565b5b61146d60201b60201c565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600401610b89929190612bac565b60405180910390fd5b8080600101915050610aae565b505f610bdf7f7462000000000000000000000000000000000000000000000000000000000000610bd48961150860201b60201c565b61151560201b60201c565b90505f610c207f6f74000000000000000000000000000000000000000000000000000000000000610c158a61150860201b60201c565b61151560201b60201c565b9050610c318261154b60201b60201c565b80610c475750610c468161154b60201b60201c565b5b15610caa578788604051602001610c5e9190612abc565b6040516020818303038152906040526040517fdfaaf9cf000000000000000000000000000000000000000000000000000000008152600401610ca1929190612c00565b60405180910390fd5b610cfc8888888888604051602001610cc29190612c2e565b60405160208183030381529060405288604051602001610ce29190612c2e565b60405160208183030381529060405261162c60201b60201c565b610d0d88600161173660201b60201c565b5050505050505050565b5f819050919050565b610d2f8161181d60201b60201c565b15610d66576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d768261139460201b60201c565b90506005811115610dc1578060056040517f6793df62000000000000000000000000000000000000000000000000000000008152600401610db8929190612bac565b60405180910390fd5b5f610dd18361130c60201b60201c565b90505f8282610de09190612c7b565b9050601c811115610e2b5780601c6040517fecd893b9000000000000000000000000000000000000000000000000000000008152600401610e22929190612bac565b60405180910390fd5b5f5f5b83811015610ef2575f610e4a82886114df60201b90919060201c565b90505f8103610e9057816040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600401610e879190612cae565b60405180910390fd5b6020811115610ed657816040517f7237f237000000000000000000000000000000000000000000000000000000008152600401610ecd9190612cae565b60405180910390fd5b8083610ee29190612c7b565b9250818060010192505050610e2e565b50610f028561182a60201b60201c565b8114610f5557610f178561182a60201b60201c565b816040517feba964de000000000000000000000000000000000000000000000000000000008152600401610f4c929190612bac565b60405180910390fd5b5f8390505b601c811015610fcb575f610f7782886114df60201b90919060201c565b90505f8114610fbd57816040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600401610fb49190612cae565b60405180910390fd5b508080600101915050610f5a565b505050505050565b80158015610fec5750610feb8261185160201b60201c565b5b1561102e575f6040517fd49861590000000000000000000000000000000000000000000000000000000081526004016110259190612d09565b60405180910390fd5b5f61103e836113e360201b60201c565b9050600581111561108657806040517fd498615900000000000000000000000000000000000000000000000000000000815260040161107d9190612cae565b60405180910390fd5b5f6110968461135060201b60201c565b90505f82826110a59190612c7b565b9050601c8111156110ed57806040517fd49861590000000000000000000000000000000000000000000000000000000081526004016110e49190612cae565b60405180910390fd5b5f5f5b83811015611183575f61112c61110f838a61143260201b90919060201c565b60c581111561112157611120612bd3565b5b61146d60201b60201c565b90505f8103611167576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80836111739190612c7b565b92508180600101925050506110f0565b506111938661185e60201b60201c565b81146111e4576111a88661185e60201b60201c565b6040517fd49861590000000000000000000000000000000000000000000000000000000081526004016111db9190612cae565b60405180910390fd5b5f8390505b8281101561126f575f611225611208838a61143260201b90919060201c565b60c581111561121a57611219612bd3565b5b61146d60201b60201c565b90505f811115611261576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8180600101925050506111e9565b50505050505050565b5f600860018060026020030303026112958361188560201b60201c565b5f1c901c60086001600260200303026112b38461188560201b60201c565b5f1c901c0160ff169050919050565b5f600860018060026020030303026112df8361188e60201b60201c565b5f1c901c60086001600260200303026112fd8461188e60201b60201c565b5f1c901c0160ff169050919050565b5f600860016002602061131f9190612d22565b6113299190612d22565b6113339190612d55565b6113428361188e60201b60201c565b5f1c901c60ff169050919050565b5f60086001600260206113639190612d22565b61136d9190612d22565b6113779190612d55565b6113868361188560201b60201c565b5f1c901c60ff169050919050565b5f6008600180600260206113a89190612d22565b6113b29190612d22565b6113bc9190612d22565b6113c69190612d55565b6113d58361188e60201b60201c565b5f1c901c60ff169050919050565b5f6008600180600260206113f79190612d22565b6114019190612d22565b61140b9190612d22565b6114159190612d55565b6114248361188560201b60201c565b5f1c901c60ff169050919050565b5f6008826004601f03030261144c8461188560201b60201c565b5f1c901c60ff1660c581111561146557611464612bd3565b5b905092915050565b5f5f8260c581111561148257611481612bd3565b5b60ff169050606181101561149f576001601f8216019150506114da565b606160c58111156114b3576114b2612bd3565b5b8360c58111156114c6576114c5612bd3565b5b036114d55760149150506114da565b5f9150505b919050565b5f6008826004601f0303026114f98461188e60201b60201c565b5f1c901c60ff16905092915050565b5f601082901b9050919050565b5f60108261ffff1916901c837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191617905092915050565b5f5f600167ffffffffffffffff81111561156857611567612863565b5b6040519080825280602002602001820160405280156115965781602001602082028036833780820191505090505b50905082815f815181106115ad576115ac612890565b5b6020026020010181815250505f61160f7f746273746f72650000000000000000005265736f7572636549647300000000005f1b835f7e010100010000000000000000000000000000000000000000000000000000005f1b61189760201b60201c565b90506116238160f81c6118e660201b60201c565b92505050919050565b5f61163e8686866118ef60201b60201c565b90505f611651848461191e60201b60201c565b90505f611664858561193960201b60201c565b90505f600167ffffffffffffffff81111561168257611681612863565b5b6040519080825280602002602001820160405280156116b05781602001602082028036833780820191505090505b50905089815f815181106116c7576116c6612890565b5b60200260200101818152505061172a7f746273746f72650000000000000000005461626c6573000000000000000000005f1b828686867e600302202020000000000000000000000000000000000000000000000000005f1b61196560201b60201c565b50505050505050505050565b5f600167ffffffffffffffff81111561175257611751612863565b5b6040519080825280602002602001820160405280156117805781602001602082028036833780820191505090505b50905082815f8151811061179757611796612890565b5b6020026020010181815250506118187f746273746f72650000000000000000005265736f7572636549647300000000005f1b825f856040516020016117dc9190612de6565b6040516020818303038152906040527e010100010000000000000000000000000000000000000000000000000000005f1b611d5a60201b60201c565b505050565b5f5f5f1b82149050919050565b5f60086002602061183b9190612d22565b6118459190612d55565b825f1c901c9050919050565b5f5f5f1b82149050919050565b5f60086002602061186f9190612d22565b6118799190612d55565b825f1c901c9050919050565b5f819050919050565b5f819050919050565b5f6118dc6118ab8686611d8260201b60201c565b6118c18560ff16856114df60201b90919060201c565b6118d18587611dd860201b60201c565b611e2260201b60201c565b9050949350505050565b5f819050919050565b606083838360405160200161190693929190612e2e565b60405160208183030381529060405290509392505050565b5f61193183518351611e8560201b60201c565b905092915050565b6060828260405160200161194e929190612eae565b604051602081830303815290604052905092915050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166119b687610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603611a1f57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611a129493929190612fdf565b60405180910390a2611d52565b5f611a2f87611ec160201b60201c565b90505f5b8151811015611b1c575f828281518110611a5057611a4f612890565b5b60200260200101519050611a7c6001826affffffffffffffffffffff1916611f8f60201b90919060201c565b15611b0e57611a9e816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166357066c9c8a8a8a8a8a8a6040518763ffffffff1660e01b8152600401611ae096959493929190613037565b5f604051808303815f87803b158015611af7575f5ffd5b505af1158015611b09573d5f5f3e3d5ffd5b505050505b508080600101915050611a33565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611b539493929190612fdf565b60405180910390a25f611b6c8888611d8260201b60201c565b90505f611b7e87611fbd60201b60201c565b9050611b93825f895184611fc960201b60201c565b5f611ba38561139460201b60201c565b1115611c62575f611bba8a8a6120b560201b60201c565b9050611bda81611bcf8961210b60201b60201c565b61211460201b60201c565b611be986611fbd60201b60201c565b91505f5f5f5b611bfe8861139460201b60201c565b8160ff161015611c5d57611c198d8d8361211b60201b60201c565b9250611c2e818b61219960201b90919060201c565b9150611c42835f8488611fc960201b60201c565b8185611c4e9190612c7b565b94508080600101915050611bef565b505050505b5f5b8351811015611d4d575f848281518110611c8157611c80612890565b5b60200260200101519050611cad6002826affffffffffffffffffffff1916611f8f60201b90919060201c565b15611d3f57611ccf816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16635b28cdaf8c8c8c8c8c8c6040518763ffffffff1660e01b8152600401611d1196959493929190613037565b5f604051808303815f87803b158015611d28575f5ffd5b505af1158015611d3a573d5f5f3e3d5ffd5b505050505b508080600101915050611c64565b505050505b505050505050565b611d7b8585611d6f8487611dd860201b60201c565b856121be60201b60201c565b5050505050565b5f8282604051602001611d96929190613137565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b5f5f5f90505f5b8360ff16811015611e1757611dfd81866114df60201b90919060201c565b82611e089190612c7b565b91508080600101915050611ddf565b508091505092915050565b5f60208210611e565760208281611e3c57611e3b61315e565b5b048401935060208281611e5257611e5161315e565b5b0691505b8354600883021b90505f82602003905080841115611e7d576001850154600882021c821791505b509392505050565b5f5f82840190505f60086005020260086007020184901b81179050600160086005020260086007020183901b81179050805f1b91505092915050565b60605f600167ffffffffffffffff811115611edf57611ede612863565b5b604051908082528060200260200182016040528015611f0d5781602001602082028036833780820191505090505b50905082815f81518110611f2457611f23612890565b5b6020026020010181815250505f611f647f746273746f726500000000000000000053746f7265486f6f6b730000000000005f1b835f6124c960201b60201c565b9050611f86611f7b825f845161251660201b60201c565b6125b560201b60201c565b92505050919050565b5f8160ff1682611fa4856125d560201b60201c565b1660ff1614905092915050565b5f8160601c9050919050565b5f602082019050919050565b5f83111561206257602083106120045760208381611fea57611fe961315e565b5b04840193506020838161200057611fff61315e565b5b0692505b5f831115612061575f8360200390505f612023846125e160201b60201c565b1990506008850281811c91508351811c8219885416838216178855505081841161204e5750506120af565b6001860195508183019250818403935050505b5b5b602082106120865780518455600184019350602081019050602082039150612063565b5f8211156120ae575f61209e836125e160201b60201c565b9050808554168119835116178555505b5b50505050565b5f82826040516020016120c9929190613137565b604051602081830303815290604052805190602001207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569185f1c905092915050565b5f819050919050565b8082555050565b5f838360405160200161212f929190613137565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b5f8160ff1660086005020260086007020183901c5f1c64ffffffffff16905092915050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661220f85610d1760201b60201c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361227657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051612269939291906131ab565b60405180910390a26124c3565b5f6122878585611d8260201b60201c565b90505f61229986611ec160201b60201c565b90505f5b8151811015612382575f8282815181106122ba576122b9612890565b5b602002602001015190506122e66004826affffffffffffffffffffff1916611f8f60201b90919060201c565b1561237457612308816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1663964f667d898989896040518563ffffffff1660e01b815260040161234694939291906131ee565b5f604051808303815f87803b15801561235d575f5ffd5b505af115801561236f573d5f5f3e3d5ffd5b505050505b50808060010191505061229d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516123b7939291906131ab565b60405180910390a26123d8828565ffffffffffff168561261060201b60201c565b5f5b81518110156124bf575f8282815181106123f7576123f6612890565b5b602002602001015190506124236008826affffffffffffffffffffff1916611f8f60201b90919060201c565b156124b157612445816affffffffffffffffffffff1916611fb160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1663a8ba8721898989896040518563ffffffff1660e01b815260040161248394939291906131ee565b5f604051808303815f87803b15801561249a575f5ffd5b505af11580156124ac573d5f5f3e3d5ffd5b505050505b5080806001019150506123da565b5050505b50505050565b606061250d6124df85858561211b60201b60201c565b5f612502856124f4898961263660201b60201c565b61219960201b90919060201c565b61265d60201b60201c565b90509392505050565b5f818311806125255750835182115b1561256b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016125629392919061323f565b60405180910390fd5b5f602085019050838161257e9190612c7b565b90505f848461258d9190612d22565b90506fffffffffffffffffffffffffffffffff80168116608083901b17925050509392505050565b60605f6125ca8360155f6126ab60201b60201c565b905080915050919050565b5f8160581c9050919050565b5f600882027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff901c9050919050565b6126318383835161262685611fbd60201b60201c565b611fc960201b60201c565b505050565b5f61265561264a84846120b560201b60201c565b61272c60201b60201c565b905092915050565b60605f612675565b5f601f19601f8301169050919050565b604051915060208201905061268b838201612665565b6040528282526126a38585858461273660201b60201c565b509392505050565b60605f6126bd8561283960201b60201c565b90505f6126cf8661284660201b60201c565b90505f8582816126e2576126e161315e565b5b0490506040519350602084016020820281016040528185525f5b82811015612720578451871c825260018101905060208201915087850194506126fc565b50505050509392505050565b5f81549050919050565b5f8311156127e6576020831061277157602083816127575761275661315e565b5b04840193506020838161276d5761276c61315e565b5b0692505b5f8311156127e5575f8360200390505f8184101561279f57612798846125e160201b60201c565b90506127b1565b6127ae826125e160201b60201c565b90505b8554600886021b8184511682198216178452508184116127d2575050612833565b6001860195508183019250818403935050505b5b5b6020821061280a57835481526001840193506020810190506020820391506127e7565b5f821115612832575f612822836125e160201b60201c565b9050808251168119865416178252505b5b50505050565b5f608082901c9050919050565b5f6fffffffffffffffffffffffffffffffff801682169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6128d0826128bd565b9050919050565b6128e0816128c6565b82525050565b6128ef816128c6565b82525050565b6128fe816128c6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61296f8261292d565b6129798185612937565b9350612989818560208601612947565b61299281612955565b840191505092915050565b5f6129a88383612965565b905092915050565b5f602082019050919050565b5f6129c682612904565b6129d0818561290e565b9350836020820285016129e28561291e565b805f5b85811015612a1d57848403895281516129fe858261299d565b9450612a09836129b0565b925060208a019950506001810190506129e5565b50829750879550505050505092915050565b5f60c082019050612a425f8301896128d7565b612a4f60208301886128e6565b612a5c60408301876128f5565b612a6960608301866128f5565b8181036080830152612a7b81856129bc565b905081810360a0830152612a8f81846129bc565b9050979650505050505050565b5f819050919050565b612ab6612ab1826128c6565b612a9c565b82525050565b5f612ac78284612aa5565b60208201915081905092915050565b5f7fffff00000000000000000000000000000000000000000000000000000000000082169050919050565b612b0a81612ad6565b82525050565b5f82825260208201905092915050565b5f612b2a8261292d565b612b348185612b10565b9350612b44818560208601612947565b612b4d81612955565b840191505092915050565b5f606082019050612b6b5f830186612b01565b612b7860208301856128d7565b8181036040830152612b8a8184612b20565b9050949350505050565b5f819050919050565b612ba681612b94565b82525050565b5f604082019050612bbf5f830185612b9d565b612bcc6020830184612b9d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f604082019050612c135f8301856128d7565b8181036020830152612c258184612b20565b90509392505050565b5f6020820190508181035f830152612c4681846129bc565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c8582612b94565b9150612c9083612b94565b9250828201905080821115612ca857612ca7612c4e565b5b92915050565b5f602082019050612cc15f830184612b9d565b92915050565b5f819050919050565b5f819050919050565b5f612cf3612cee612ce984612cc7565b612cd0565b612b94565b9050919050565b612d0381612cd9565b82525050565b5f602082019050612d1c5f830184612cfa565b92915050565b5f612d2c82612b94565b9150612d3783612b94565b9250828203905081811115612d4f57612d4e612c4e565b5b92915050565b5f612d5f82612b94565b9150612d6a83612b94565b9250828202612d7881612b94565b91508282048414831517612d8f57612d8e612c4e565b5b5092915050565b5f8115159050919050565b5f8160f81b9050919050565b5f612db782612da1565b9050919050565b5f612dc882612dad565b9050919050565b612de0612ddb82612d96565b612dbe565b82525050565b5f612df18284612dcf565b60018201915081905092915050565b612e11612e0c826128c6565b612a9c565b82525050565b612e28612e23826128c6565b612a9c565b82525050565b5f612e398286612e00565b602082019150612e498285612e17565b602082019150612e598284612e17565b602082019150819050949350505050565b5f81519050919050565b5f81905092915050565b5f612e8882612e6a565b612e928185612e74565b9350612ea2818560208601612947565b80840191505092915050565b5f612eb98285612e7e565b9150612ec58284612e7e565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f03816128bd565b82525050565b5f612f148383612efa565b60208301905092915050565b5f602082019050919050565b5f612f3682612ed1565b612f408185612edb565b9350612f4b83612eeb565b805f5b83811015612f7b578151612f628882612f09565b9750612f6d83612f20565b925050600181019050612f4e565b5085935050505092915050565b5f82825260208201905092915050565b5f612fa282612e6a565b612fac8185612f88565b9350612fbc818560208601612947565b612fc581612955565b840191505092915050565b612fd9816128c6565b82525050565b5f6080820190508181035f830152612ff78187612f2c565b9050818103602083015261300b8186612f98565b905061301a6040830185612fd0565b818103606083015261302c8184612f98565b905095945050505050565b5f60c08201905061304a5f8301896128d7565b818103602083015261305c8188612f2c565b905081810360408301526130708187612f98565b905061307f6060830186612fd0565b81810360808301526130918185612f98565b90506130a060a08301846128e6565b979650505050505050565b5f81905092915050565b6130be816128bd565b82525050565b5f6130cf83836130b5565b60208301905092915050565b5f6130e582612ed1565b6130ef81856130ab565b93506130fa83612eeb565b805f5b8381101561312a57815161311188826130c4565b975061311c83612f20565b9250506001810190506130fd565b5085935050505092915050565b5f6131428285612aa5565b60208201915061315282846130db565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f65ffffffffffff82169050919050565b6131a58161318b565b82525050565b5f6060820190508181035f8301526131c38186612f2c565b90506131d2602083018561319c565b81810360408301526131e48184612f98565b9050949350505050565b5f6080820190506132015f8301876128d7565b81810360208301526132138186612f2c565b9050613222604083018561319c565b81810360608301526132348184612f98565b905095945050505050565b5f6060820190508181035f8301526132578186612f98565b90506132666020830185612b9d565b6132736040830184612b9d565b949350505050565b612b43806132885f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063119df25f146100945780631e166c57146100b257806345ec9354146100e2578063d597351114610100578063e1af802c1461011c575b5f5ffd5b61007e600480360381019061007991906119fd565b61013a565b60405161008b9190611a42565b60405180910390f35b61009c61020b565b6040516100a99190611a9a565b60405180910390f35b6100cc60048036038101906100c79190611b37565b610219565b6040516100d99190611e0d565b60405180910390f35b6100ea610233565b6040516100f79190611e45565b60405180910390f35b61011a60048036038101906101159190612194565b610241565b005b61012461025f565b6040516101319190611a9a565b60405180910390f35b5f7fb5dee127000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061020457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f61021461026d565b905090565b61022161191d565b61022b83836102b2565b905092915050565b5f61023c6103d8565b905090565b6102538a8a8a8a8a8a8a8a8a8a6103e3565b50505050505050505050565b5f6102686104fe565b905090565b5f603436033560601c90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102af573390505b90565b6102ba61191d565b5f600267ffffffffffffffff8111156102d6576102d5611ee4565b5b6040519080825280602002602001820160405280156103045781602001602082028036833780820191505090505b5090508378ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f81518110610338576103376122c1565b5b6020026020010181815250508260ff165f1b8160018151811061035e5761035d6122c1565b5b6020026020010181815250505f5f5f6103bb7f74626170700000000000000000000000546573745461626c65000000000000005f1b857e310503190102011400000000000000000000000000000000000000000000005f1b61050c565b9250925092506103cc8383836105f6565b94505050505092915050565b5f6020360335905090565b5f6103f189898989896106d0565b90505f6103ff858585610705565b90505f61040d868686610720565b90505f600267ffffffffffffffff81111561042b5761042a611ee4565b5b6040519080825280602002602001820160405280156104595781602001602082028036833780820191505090505b5090508d78ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f8151811061048d5761048c6122c1565b5b6020026020010181815250508c60ff165f1b816001815181106104b3576104b26122c1565b5b6020026020010181815250506104ee7f74626170700000000000000000000000546573745461626c65000000000000005f1b82868686610757565b5050505050505050505050505050565b5f61050761081e565b905090565b60605f60605f61051a61081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105665761055a878787610890565b935093509350506105ed565b8073ffffffffffffffffffffffffffffffffffffffff1663419b58fd8888886040518463ffffffff1660e01b81526004016105a3939291906123dd565b5f60405180830381865afa1580156105bd573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105e591906124b1565b935093509350505b93509350939050565b6105fe61191d565b6106078461099f565b855f01866020018760400188606001896080018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525085151515158152508561ffff1661ffff168152508560ff1660ff168152508578ffffffffffffffffffffffffffffffffffffffffffffffffff1678ffffffffffffffffffffffffffffffffffffffffffffffffff1681525050505050506106b18383610a04565b8360a0018460c0018560e0018390528390528390525050509392505050565b606085858585856040516020016106eb959493929190612642565b604051602081830303815290604052905095945050505050565b5f610717845184516002855102610a9e565b90509392505050565b6060838361072d84610af2565b60405160200161073f939291906126da565b60405160208183030381529060405290509392505050565b5f61076061081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107a7576107a28686868686610b0d565b610816565b8073ffffffffffffffffffffffffffffffffffffffff1663298314fb87878787876040518663ffffffff1660e01b81526004016107e8959493929190612761565b5f604051808303815f87803b1580156107ff575f5ffd5b505af1158015610811573d5f5f3e3d5ffd5b505050505b505050505050565b5f5f610828610b2a565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610888573391505061088d565b809150505b90565b60605f60605f61089f85610b56565b90506108ac878783610b7d565b93505f6108b886610bbf565b90505f811115610994576108cc8888610c08565b93506108d784610c23565b67ffffffffffffffff8111156108f0576108ef611ee4565b5b6040519080825280601f01601f1916602001820160405280156109225781602001600182028036833780820191505090505b5092505f61092f84610c37565b90505f5b828160ff161015610991575f61094a8b8b84610c43565b90505f6109608389610cc190919063ffffffff16565b905061096e825f8387610ce6565b808461097a91906127f4565b93505050808061098990612827565b915050610933565b50505b505093509350939050565b5f5f5f5f5f6109ae865f610dd7565b60381c94506109be866019610de7565b60f81c93506109ce86601a610df7565b60f01c92506109e96109e187601c610de7565b60f81c610e07565b91506109f686601d610e10565b60601c905091939590929450565b60608060605f5f610a1e5f88610cc190919063ffffffff16565b9050610a33610a2e878484610e20565b610ebf565b9450809150610a4c600188610cc190919063ffffffff16565b81019050610a63610a5e878484610e20565b610ebf565b9350809150610a7c600288610cc190919063ffffffff16565b81019050610a93610a8e878484610e20565b610f42565b925050509250925092565b5f5f828486010190505f60086005020260086007020185901b81179050600160086005020260086007020184901b81179050600260086005020260086007020183901b81179050805f1b9150509392505050565b606080829050610b0581600260f0610f5d565b915050919050565b610b238585858585610b1e8b610fd9565b61106b565b5050505050565b5f5f7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17590508091505090565b5f600860026020610b67919061284f565b610b719190612882565b825f1c901c9050919050565b60605f8203610b9c5760405180602001604052805f8152509050610bb8565b5f610ba78585611406565b9050610bb4815f8561145c565b9150505b9392505050565b5f600860018060026020610bd3919061284f565b610bdd919061284f565b610be7919061284f565b610bf19190612882565b610bfa836114a4565b5f1c901c60ff169050919050565b5f610c1b610c1684846114ad565b611503565b905092915050565b5f815f1c66ffffffffffffff169050919050565b5f602082019050919050565b5f8383604051602001610c5792919061296f565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b5f8160ff1660086005020260086007020183901c5f1c64ffffffffff16905092915050565b5f831115610d8a5760208310610d215760208381610d0757610d06612996565b5b048401935060208381610d1d57610d1c612996565b5b0692505b5f831115610d89575f8360200390505f81841015610d4957610d428461150d565b9050610d55565b610d528261150d565b90505b8554600886021b818451168219821617845250818411610d76575050610dd1565b6001860195508183019250818403935050505b5b5b60208210610dae5783548152600184019350602081019050602082039150610d8b565b5f821115610dd0575f610dc08361150d565b9050808251168119865416178252505b5b50505050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f819050919050565b5f81602084010151905092915050565b5f81831180610e2f5750835182115b15610e75578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610e6c939291906129c3565b60405180910390fd5b5f6020850190508381610e8891906127f4565b90505f8484610e97919061284f565b90506fffffffffffffffffffffffffffffffff80168116608083901b17925050509392505050565b60605f610ecb8361153c565b90505f610ed784611549565b90508067ffffffffffffffff811115610ef357610ef2611ee4565b5b6040519080825280601f01601f191660200182016040528015610f255781602001600182028036833780820191505090505b5092505f602084019050610f3a838284611566565b505050919050565b60605f610f5283600260f06115b1565b905080915050919050565b60605f845190505f848651610f729190612882565b9050610f89565b5f601f19601f8301169050919050565b604051925060208301610f9d828201610f79565b6040528184525f602088015b84821015610fcd578051871b83526001820191506020810190508783019250610fa9565b50505050509392505050565b5f7f746273746f72650000000000000000005461626c6573000000000000000000005f1b820361102c577e600302202020000000000000000000000000000000000000000000000000005f1b9050611066565b61106361105b7f746273746f72650000000000000000005461626c6573000000000000000000005f1b84611626565b60205f61167c565b90505b919050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166110b6876116df565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361111f57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161111294939291906129ff565b60405180910390a26113fe565b5f611129876116e8565b90505f5b8151811015611210575f82828151811061114a576111496122c1565b5b602002602001015190506111766001826affffffffffffffffffffff19166117a490919063ffffffff16565b1561120257611192816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff166357066c9c8a8a8a8a8a8a6040518763ffffffff1660e01b81526004016111d496959493929190612a57565b5f604051808303815f87803b1580156111eb575f5ffd5b505af11580156111fd573d5f5f3e3d5ffd5b505050505b50808060010191505061112d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98787878760405161124794939291906129ff565b60405180910390a25f61125a8888611406565b90505f61126687610c37565b9050611275825f8951846117cc565b5f61127f85610bbf565b1115611314575f6112908a8a6114ad565b90506112a48161129f896118ac565b6118b5565b6112ad86610c37565b91505f5f5f5b6112bc88610bbf565b8160ff16101561130f576112d18d8d83610c43565b92506112e6818b610cc190919063ffffffff16565b91506112f4835f84886117cc565b818561130091906127f4565b945080806001019150506112b3565b505050505b5f5b83518110156113f9575f848281518110611333576113326122c1565b5b6020026020010151905061135f6002826affffffffffffffffffffff19166117a490919063ffffffff16565b156113eb5761137b816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff16635b28cdaf8c8c8c8c8c8c6040518763ffffffff1660e01b81526004016113bd96959493929190612a57565b5f604051808303815f87803b1580156113d4575f5ffd5b505af11580156113e6573d5f5f3e3d5ffd5b505050505b508080600101915050611316565b505050505b505050505050565b5f828260405160200161141a92919061296f565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b60605f611474565b5f601f19601f8301169050919050565b604051915060208201905061148a838201611464565b60405282825261149c85858584610ce6565b509392505050565b5f819050919050565b5f82826040516020016114c192919061296f565b604051602081830303815290604052805190602001207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569185f1c905092915050565b5f81549050919050565b5f600882027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff901c9050919050565b5f608082901c9050919050565b5f6fffffffffffffffffffffffffffffffff801682169050919050565b5b6020811061158a5782518252602082019150602083019250602081039050611567565b5f8103156115ac575f61159c8261150d565b9050808351168119855116178352505b505050565b60605f6115bd8561153c565b90505f6115c986611549565b90505f8582816115dc576115db612996565b5b0490506040519350602084016020820281016040528185525f5b8281101561161a578451871c825260018101905060208201915087850194506115f6565b50505050509392505050565b5f828260405160200161163a929190612ae2565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b5f602082106116b0576020828161169657611695612996565b5b0484019350602082816116ac576116ab612996565b5b0691505b8354600883021b90505f826020039050808411156116d7576001850154600882021c821791505b509392505050565b5f819050919050565b60605f600167ffffffffffffffff81111561170657611705611ee4565b5b6040519080825280602002602001820160405280156117345781602001602082028036833780820191505090505b50905082815f8151811061174b5761174a6122c1565b5b6020026020010181815250505f6117857f746273746f726500000000000000000053746f7265486f6f6b730000000000005f1b835f6118bc565b905061179b611796825f8451610e20565b6118f7565b92505050919050565b5f8160ff16826117b385611911565b1660ff1614905092915050565b5f8160601c9050919050565b5f83111561185f576020831061180757602083816117ed576117ec612996565b5b04840193506020838161180357611802612996565b5b0692505b5f83111561185e575f8360200390505f6118208461150d565b1990506008850281811c91508351811c8219885416838216178855505081841161184b5750506118a6565b6001860195508183019250818403935050505b5b5b602082106118835780518455600184019350602081019050602082039150611860565b5f8211156118a5575f6118958361150d565b9050808554168119835116178555505b5b50505050565b5f819050919050565b8082555050565b60606118ee6118cc858585610c43565b5f6118e9856118db8989610c08565b610cc190919063ffffffff16565b61145c565b90509392505050565b60605f6119068360155f6115b1565b905080915050919050565b5f8160581c9050919050565b6040518061010001604052805f78ffffffffffffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020015f61ffff1681526020015f151581526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119dc816119a8565b81146119e6575f5ffd5b50565b5f813590506119f7816119d3565b92915050565b5f60208284031215611a1257611a116119a0565b5b5f611a1f848285016119e9565b91505092915050565b5f8115159050919050565b611a3c81611a28565b82525050565b5f602082019050611a555f830184611a33565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a8482611a5b565b9050919050565b611a9481611a7a565b82525050565b5f602082019050611aad5f830184611a8b565b92915050565b5f78ffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b611ae081611ab3565b8114611aea575f5ffd5b50565b5f81359050611afb81611ad7565b92915050565b5f60ff82169050919050565b611b1681611b01565b8114611b20575f5ffd5b50565b5f81359050611b3181611b0d565b92915050565b5f5f60408385031215611b4d57611b4c6119a0565b5b5f611b5a85828601611aed565b9250506020611b6b85828601611b23565b9150509250929050565b611b7e81611ab3565b82525050565b611b8d81611b01565b82525050565b5f61ffff82169050919050565b611ba981611b93565b82525050565b611bb881611a28565b82525050565b611bc781611a7a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c0f82611bcd565b611c198185611bd7565b9350611c29818560208601611be7565b611c3281611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f611c6182611c3d565b611c6b8185611c47565b9350611c7b818560208601611be7565b611c8481611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f8160010b9050919050565b611ccd81611cb8565b82525050565b5f611cde8383611cc4565b60208301905092915050565b5f602082019050919050565b5f611d0082611c8f565b611d0a8185611c99565b9350611d1583611ca9565b805f5b83811015611d45578151611d2c8882611cd3565b9750611d3783611cea565b925050600181019050611d18565b5085935050505092915050565b5f61010083015f830151611d685f860182611b75565b506020830151611d7b6020860182611b84565b506040830151611d8e6040860182611ba0565b506060830151611da16060860182611baf565b506080830151611db46080860182611bbe565b5060a083015184820360a0860152611dcc8282611c05565b91505060c083015184820360c0860152611de68282611c57565b91505060e083015184820360e0860152611e008282611cf6565b9150508091505092915050565b5f6020820190508181035f830152611e258184611d52565b905092915050565b5f819050919050565b611e3f81611e2d565b82525050565b5f602082019050611e585f830184611e36565b92915050565b611e6781611b93565b8114611e71575f5ffd5b50565b5f81359050611e8281611e5e565b92915050565b611e9181611a28565b8114611e9b575f5ffd5b50565b5f81359050611eac81611e88565b92915050565b611ebb81611a7a565b8114611ec5575f5ffd5b50565b5f81359050611ed681611eb2565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f1a82611bf5565b810181811067ffffffffffffffff82111715611f3957611f38611ee4565b5b80604052505050565b5f611f4b611997565b9050611f578282611f11565b919050565b5f67ffffffffffffffff821115611f7657611f75611ee4565b5b611f7f82611bf5565b9050602081019050919050565b828183375f83830152505050565b5f611fac611fa784611f5c565b611f42565b905082815260208101848484011115611fc857611fc7611ee0565b5b611fd3848285611f8c565b509392505050565b5f82601f830112611fef57611fee611edc565b5b8135611fff848260208601611f9a565b91505092915050565b5f67ffffffffffffffff82111561202257612021611ee4565b5b61202b82611bf5565b9050602081019050919050565b5f61204a61204584612008565b611f42565b90508281526020810184848401111561206657612065611ee0565b5b612071848285611f8c565b509392505050565b5f82601f83011261208d5761208c611edc565b5b813561209d848260208601612038565b91505092915050565b5f67ffffffffffffffff8211156120c0576120bf611ee4565b5b602082029050602081019050919050565b5f5ffd5b6120de81611cb8565b81146120e8575f5ffd5b50565b5f813590506120f9816120d5565b92915050565b5f61211161210c846120a6565b611f42565b90508083825260208201905060208402830185811115612134576121336120d1565b5b835b8181101561215d578061214988826120eb565b845260208401935050602081019050612136565b5050509392505050565b5f82601f83011261217b5761217a611edc565b5b813561218b8482602086016120ff565b91505092915050565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156121b3576121b26119a0565b5b5f6121c08d828e01611aed565b9a505060206121d18d828e01611b23565b99505060406121e28d828e01611aed565b98505060606121f38d828e01611b23565b97505060806122048d828e01611e74565b96505060a06122158d828e01611e9e565b95505060c06122268d828e01611ec8565b94505060e08b013567ffffffffffffffff811115612247576122466119a4565b5b6122538d828e01611fdb565b9350506101008b013567ffffffffffffffff811115612275576122746119a4565b5b6122818d828e01612079565b9250506101208b013567ffffffffffffffff8111156122a3576122a26119a4565b5b6122af8d828e01612167565b9150509295989b9194979a5092959850565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612301826122ee565b9050919050565b612311816122f7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612349816122ee565b82525050565b5f61235a8383612340565b60208301905092915050565b5f602082019050919050565b5f61237c82612317565b6123868185612321565b935061239183612331565b805f5b838110156123c15781516123a8888261234f565b97506123b383612366565b925050600181019050612394565b5085935050505092915050565b6123d7816122f7565b82525050565b5f6060820190506123f05f830186612308565b81810360208301526124028185612372565b905061241160408301846123ce565b949350505050565b5f61242b61242684612008565b611f42565b90508281526020810184848401111561244757612446611ee0565b5b612452848285611be7565b509392505050565b5f82601f83011261246e5761246d611edc565b5b815161247e848260208601612419565b91505092915050565b612490816122ee565b811461249a575f5ffd5b50565b5f815190506124ab81612487565b92915050565b5f5f5f606084860312156124c8576124c76119a0565b5b5f84015167ffffffffffffffff8111156124e5576124e46119a4565b5b6124f18682870161245a565b93505060206125028682870161249d565b925050604084015167ffffffffffffffff811115612523576125226119a4565b5b61252f8682870161245a565b9150509250925092565b5f8160381b9050919050565b5f61254f82612539565b9050919050565b61256761256282611ab3565b612545565b82525050565b5f8160f81b9050919050565b5f6125838261256d565b9050919050565b61259b61259682611b01565b612579565b82525050565b5f8160f01b9050919050565b5f6125b7826125a1565b9050919050565b6125cf6125ca82611b93565b6125ad565b82525050565b5f6125df82612579565b9050919050565b6125f76125f282611a28565b6125d5565b82525050565b5f8160601b9050919050565b5f612613826125fd565b9050919050565b5f61262482612609565b9050919050565b61263c61263782611a7a565b61261a565b82525050565b5f61264d8288612556565b60198201915061265d828761258a565b60018201915061266d82866125be565b60028201915061267d82856125e6565b60018201915061268d828461262b565b6014820191508190509695505050505050565b5f81905092915050565b5f6126b482611c3d565b6126be81856126a0565b93506126ce818560208601611be7565b80840191505092915050565b5f6126e582866126aa565b91506126f182856126aa565b91506126fd82846126aa565b9150819050949350505050565b5f82825260208201905092915050565b5f61272482611c3d565b61272e818561270a565b935061273e818560208601611be7565b61274781611bf5565b840191505092915050565b61275b816122f7565b82525050565b5f60a0820190506127745f830188612308565b81810360208301526127868187612372565b9050818103604083015261279a818661271a565b90506127a96060830185612752565b81810360808301526127bb818461271a565b90509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127fe82611e2d565b915061280983611e2d565b9250828201905080821115612821576128206127c7565b5b92915050565b5f61283182611b01565b915060ff8203612844576128436127c7565b5b600182019050919050565b5f61285982611e2d565b915061286483611e2d565b925082820390508181111561287c5761287b6127c7565b5b92915050565b5f61288c82611e2d565b915061289783611e2d565b92508282026128a581611e2d565b915082820484148315176128bc576128bb6127c7565b5b5092915050565b5f819050919050565b6128dd6128d8826122f7565b6128c3565b82525050565b5f81905092915050565b6128f6816122ee565b82525050565b5f61290783836128ed565b60208301905092915050565b5f61291d82612317565b61292781856128e3565b935061293283612331565b805f5b8381101561296257815161294988826128fc565b975061295483612366565b925050600181019050612935565b5085935050505092915050565b5f61297a82856128cc565b60208201915061298a8284612913565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6060820190508181035f8301526129db818661271a565b90506129ea6020830185611e36565b6129f76040830184611e36565b949350505050565b5f6080820190508181035f830152612a178187612372565b90508181036020830152612a2b818661271a565b9050612a3a6040830185612752565b8181036060830152612a4c818461271a565b905095945050505050565b5f60c082019050612a6a5f830189612308565b8181036020830152612a7c8188612372565b90508181036040830152612a90818761271a565b9050612a9f6060830186612752565b8181036080830152612ab1818561271a565b9050612ac060a08301846123ce565b979650505050505050565b612adc612ad7826122ee565b6128c3565b82525050565b5f612aed82856128cc565b602082019150612afd8284612acb565b602082019150819050939250505056fea26469706673582212204d49b1c04d595430cd1560d747e911e3b7cbe59c2547cffe7cc6b2b046e2285064736f6c634300081c0033" + }, + "deployedBytecode": { + "object": "608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063119df25f146100945780631e166c57146100b257806345ec9354146100e2578063d597351114610100578063e1af802c1461011c575b5f5ffd5b61007e600480360381019061007991906119fd565b61013a565b60405161008b9190611a42565b60405180910390f35b61009c61020b565b6040516100a99190611a9a565b60405180910390f35b6100cc60048036038101906100c79190611b37565b610219565b6040516100d99190611e0d565b60405180910390f35b6100ea610233565b6040516100f79190611e45565b60405180910390f35b61011a60048036038101906101159190612194565b610241565b005b61012461025f565b6040516101319190611a9a565b60405180910390f35b5f7fb5dee127000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061020457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f61021461026d565b905090565b61022161191d565b61022b83836102b2565b905092915050565b5f61023c6103d8565b905090565b6102538a8a8a8a8a8a8a8a8a8a6103e3565b50505050505050505050565b5f6102686104fe565b905090565b5f603436033560601c90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102af573390505b90565b6102ba61191d565b5f600267ffffffffffffffff8111156102d6576102d5611ee4565b5b6040519080825280602002602001820160405280156103045781602001602082028036833780820191505090505b5090508378ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f81518110610338576103376122c1565b5b6020026020010181815250508260ff165f1b8160018151811061035e5761035d6122c1565b5b6020026020010181815250505f5f5f6103bb7f74626170700000000000000000000000546573745461626c65000000000000005f1b857e310503190102011400000000000000000000000000000000000000000000005f1b61050c565b9250925092506103cc8383836105f6565b94505050505092915050565b5f6020360335905090565b5f6103f189898989896106d0565b90505f6103ff858585610705565b90505f61040d868686610720565b90505f600267ffffffffffffffff81111561042b5761042a611ee4565b5b6040519080825280602002602001820160405280156104595781602001602082028036833780820191505090505b5090508d78ffffffffffffffffffffffffffffffffffffffffffffffffff165f1b815f8151811061048d5761048c6122c1565b5b6020026020010181815250508c60ff165f1b816001815181106104b3576104b26122c1565b5b6020026020010181815250506104ee7f74626170700000000000000000000000546573745461626c65000000000000005f1b82868686610757565b5050505050505050505050505050565b5f61050761081e565b905090565b60605f60605f61051a61081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105665761055a878787610890565b935093509350506105ed565b8073ffffffffffffffffffffffffffffffffffffffff1663419b58fd8888886040518463ffffffff1660e01b81526004016105a3939291906123dd565b5f60405180830381865afa1580156105bd573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105e591906124b1565b935093509350505b93509350939050565b6105fe61191d565b6106078461099f565b855f01866020018760400188606001896080018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525085151515158152508561ffff1661ffff168152508560ff1660ff168152508578ffffffffffffffffffffffffffffffffffffffffffffffffff1678ffffffffffffffffffffffffffffffffffffffffffffffffff1681525050505050506106b18383610a04565b8360a0018460c0018560e0018390528390528390525050509392505050565b606085858585856040516020016106eb959493929190612642565b604051602081830303815290604052905095945050505050565b5f610717845184516002855102610a9e565b90509392505050565b6060838361072d84610af2565b60405160200161073f939291906126da565b60405160208183030381529060405290509392505050565b5f61076061081e565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107a7576107a28686868686610b0d565b610816565b8073ffffffffffffffffffffffffffffffffffffffff1663298314fb87878787876040518663ffffffff1660e01b81526004016107e8959493929190612761565b5f604051808303815f87803b1580156107ff575f5ffd5b505af1158015610811573d5f5f3e3d5ffd5b505050505b505050505050565b5f5f610828610b2a565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610888573391505061088d565b809150505b90565b60605f60605f61089f85610b56565b90506108ac878783610b7d565b93505f6108b886610bbf565b90505f811115610994576108cc8888610c08565b93506108d784610c23565b67ffffffffffffffff8111156108f0576108ef611ee4565b5b6040519080825280601f01601f1916602001820160405280156109225781602001600182028036833780820191505090505b5092505f61092f84610c37565b90505f5b828160ff161015610991575f61094a8b8b84610c43565b90505f6109608389610cc190919063ffffffff16565b905061096e825f8387610ce6565b808461097a91906127f4565b93505050808061098990612827565b915050610933565b50505b505093509350939050565b5f5f5f5f5f6109ae865f610dd7565b60381c94506109be866019610de7565b60f81c93506109ce86601a610df7565b60f01c92506109e96109e187601c610de7565b60f81c610e07565b91506109f686601d610e10565b60601c905091939590929450565b60608060605f5f610a1e5f88610cc190919063ffffffff16565b9050610a33610a2e878484610e20565b610ebf565b9450809150610a4c600188610cc190919063ffffffff16565b81019050610a63610a5e878484610e20565b610ebf565b9350809150610a7c600288610cc190919063ffffffff16565b81019050610a93610a8e878484610e20565b610f42565b925050509250925092565b5f5f828486010190505f60086005020260086007020185901b81179050600160086005020260086007020184901b81179050600260086005020260086007020183901b81179050805f1b9150509392505050565b606080829050610b0581600260f0610f5d565b915050919050565b610b238585858585610b1e8b610fd9565b61106b565b5050505050565b5f5f7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17590508091505090565b5f600860026020610b67919061284f565b610b719190612882565b825f1c901c9050919050565b60605f8203610b9c5760405180602001604052805f8152509050610bb8565b5f610ba78585611406565b9050610bb4815f8561145c565b9150505b9392505050565b5f600860018060026020610bd3919061284f565b610bdd919061284f565b610be7919061284f565b610bf19190612882565b610bfa836114a4565b5f1c901c60ff169050919050565b5f610c1b610c1684846114ad565b611503565b905092915050565b5f815f1c66ffffffffffffff169050919050565b5f602082019050919050565b5f8383604051602001610c5792919061296f565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b5f8160ff1660086005020260086007020183901c5f1c64ffffffffff16905092915050565b5f831115610d8a5760208310610d215760208381610d0757610d06612996565b5b048401935060208381610d1d57610d1c612996565b5b0692505b5f831115610d89575f8360200390505f81841015610d4957610d428461150d565b9050610d55565b610d528261150d565b90505b8554600886021b818451168219821617845250818411610d76575050610dd1565b6001860195508183019250818403935050505b5b5b60208210610dae5783548152600184019350602081019050602082039150610d8b565b5f821115610dd0575f610dc08361150d565b9050808251168119865416178252505b5b50505050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f81602084010151905092915050565b5f819050919050565b5f81602084010151905092915050565b5f81831180610e2f5750835182115b15610e75578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610e6c939291906129c3565b60405180910390fd5b5f6020850190508381610e8891906127f4565b90505f8484610e97919061284f565b90506fffffffffffffffffffffffffffffffff80168116608083901b17925050509392505050565b60605f610ecb8361153c565b90505f610ed784611549565b90508067ffffffffffffffff811115610ef357610ef2611ee4565b5b6040519080825280601f01601f191660200182016040528015610f255781602001600182028036833780820191505090505b5092505f602084019050610f3a838284611566565b505050919050565b60605f610f5283600260f06115b1565b905080915050919050565b60605f845190505f848651610f729190612882565b9050610f89565b5f601f19601f8301169050919050565b604051925060208301610f9d828201610f79565b6040528184525f602088015b84821015610fcd578051871b83526001820191506020810190508783019250610fa9565b50505050509392505050565b5f7f746273746f72650000000000000000005461626c6573000000000000000000005f1b820361102c577e600302202020000000000000000000000000000000000000000000000000005f1b9050611066565b61106361105b7f746273746f72650000000000000000005461626c6573000000000000000000005f1b84611626565b60205f61167c565b90505b919050565b7f6f740000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166110b6876116df565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361111f57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161111294939291906129ff565b60405180910390a26113fe565b5f611129876116e8565b90505f5b8151811015611210575f82828151811061114a576111496122c1565b5b602002602001015190506111766001826affffffffffffffffffffff19166117a490919063ffffffff16565b1561120257611192816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff166357066c9c8a8a8a8a8a8a6040518763ffffffff1660e01b81526004016111d496959493929190612a57565b5f604051808303815f87803b1580156111eb575f5ffd5b505af11580156111fd573d5f5f3e3d5ffd5b505050505b50808060010191505061112d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98787878760405161124794939291906129ff565b60405180910390a25f61125a8888611406565b90505f61126687610c37565b9050611275825f8951846117cc565b5f61127f85610bbf565b1115611314575f6112908a8a6114ad565b90506112a48161129f896118ac565b6118b5565b6112ad86610c37565b91505f5f5f5b6112bc88610bbf565b8160ff16101561130f576112d18d8d83610c43565b92506112e6818b610cc190919063ffffffff16565b91506112f4835f84886117cc565b818561130091906127f4565b945080806001019150506112b3565b505050505b5f5b83518110156113f9575f848281518110611333576113326122c1565b5b6020026020010151905061135f6002826affffffffffffffffffffff19166117a490919063ffffffff16565b156113eb5761137b816affffffffffffffffffffff19166117c0565b73ffffffffffffffffffffffffffffffffffffffff16635b28cdaf8c8c8c8c8c8c6040518763ffffffff1660e01b81526004016113bd96959493929190612a57565b5f604051808303815f87803b1580156113d4575f5ffd5b505af11580156113e6573d5f5f3e3d5ffd5b505050505b508080600101915050611316565b505050505b505050505050565b5f828260405160200161141a92919061296f565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b60605f611474565b5f601f19601f8301169050919050565b604051915060208201905061148a838201611464565b60405282825261149c85858584610ce6565b509392505050565b5f819050919050565b5f82826040516020016114c192919061296f565b604051602081830303815290604052805190602001207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569185f1c905092915050565b5f81549050919050565b5f600882027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff901c9050919050565b5f608082901c9050919050565b5f6fffffffffffffffffffffffffffffffff801682169050919050565b5b6020811061158a5782518252602082019150602083019250602081039050611567565b5f8103156115ac575f61159c8261150d565b9050808351168119855116178352505b505050565b60605f6115bd8561153c565b90505f6115c986611549565b90505f8582816115dc576115db612996565b5b0490506040519350602084016020820281016040528185525f5b8281101561161a578451871c825260018101905060208201915087850194506115f6565b50505050509392505050565b5f828260405160200161163a929190612ae2565b604051602081830303815290604052805190602001207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9185f1c905092915050565b5f602082106116b0576020828161169657611695612996565b5b0484019350602082816116ac576116ab612996565b5b0691505b8354600883021b90505f826020039050808411156116d7576001850154600882021c821791505b509392505050565b5f819050919050565b60605f600167ffffffffffffffff81111561170657611705611ee4565b5b6040519080825280602002602001820160405280156117345781602001602082028036833780820191505090505b50905082815f8151811061174b5761174a6122c1565b5b6020026020010181815250505f6117857f746273746f726500000000000000000053746f7265486f6f6b730000000000005f1b835f6118bc565b905061179b611796825f8451610e20565b6118f7565b92505050919050565b5f8160ff16826117b385611911565b1660ff1614905092915050565b5f8160601c9050919050565b5f83111561185f576020831061180757602083816117ed576117ec612996565b5b04840193506020838161180357611802612996565b5b0692505b5f83111561185e575f8360200390505f6118208461150d565b1990506008850281811c91508351811c8219885416838216178855505081841161184b5750506118a6565b6001860195508183019250818403935050505b5b5b602082106118835780518455600184019350602081019050602082039150611860565b5f8211156118a5575f6118958361150d565b9050808554168119835116178555505b5b50505050565b5f819050919050565b8082555050565b60606118ee6118cc858585610c43565b5f6118e9856118db8989610c08565b610cc190919063ffffffff16565b61145c565b90509392505050565b60605f6119068360155f6115b1565b905080915050919050565b5f8160581c9050919050565b6040518061010001604052805f78ffffffffffffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020015f61ffff1681526020015f151581526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119dc816119a8565b81146119e6575f5ffd5b50565b5f813590506119f7816119d3565b92915050565b5f60208284031215611a1257611a116119a0565b5b5f611a1f848285016119e9565b91505092915050565b5f8115159050919050565b611a3c81611a28565b82525050565b5f602082019050611a555f830184611a33565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a8482611a5b565b9050919050565b611a9481611a7a565b82525050565b5f602082019050611aad5f830184611a8b565b92915050565b5f78ffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b611ae081611ab3565b8114611aea575f5ffd5b50565b5f81359050611afb81611ad7565b92915050565b5f60ff82169050919050565b611b1681611b01565b8114611b20575f5ffd5b50565b5f81359050611b3181611b0d565b92915050565b5f5f60408385031215611b4d57611b4c6119a0565b5b5f611b5a85828601611aed565b9250506020611b6b85828601611b23565b9150509250929050565b611b7e81611ab3565b82525050565b611b8d81611b01565b82525050565b5f61ffff82169050919050565b611ba981611b93565b82525050565b611bb881611a28565b82525050565b611bc781611a7a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c0f82611bcd565b611c198185611bd7565b9350611c29818560208601611be7565b611c3281611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f611c6182611c3d565b611c6b8185611c47565b9350611c7b818560208601611be7565b611c8481611bf5565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f8160010b9050919050565b611ccd81611cb8565b82525050565b5f611cde8383611cc4565b60208301905092915050565b5f602082019050919050565b5f611d0082611c8f565b611d0a8185611c99565b9350611d1583611ca9565b805f5b83811015611d45578151611d2c8882611cd3565b9750611d3783611cea565b925050600181019050611d18565b5085935050505092915050565b5f61010083015f830151611d685f860182611b75565b506020830151611d7b6020860182611b84565b506040830151611d8e6040860182611ba0565b506060830151611da16060860182611baf565b506080830151611db46080860182611bbe565b5060a083015184820360a0860152611dcc8282611c05565b91505060c083015184820360c0860152611de68282611c57565b91505060e083015184820360e0860152611e008282611cf6565b9150508091505092915050565b5f6020820190508181035f830152611e258184611d52565b905092915050565b5f819050919050565b611e3f81611e2d565b82525050565b5f602082019050611e585f830184611e36565b92915050565b611e6781611b93565b8114611e71575f5ffd5b50565b5f81359050611e8281611e5e565b92915050565b611e9181611a28565b8114611e9b575f5ffd5b50565b5f81359050611eac81611e88565b92915050565b611ebb81611a7a565b8114611ec5575f5ffd5b50565b5f81359050611ed681611eb2565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f1a82611bf5565b810181811067ffffffffffffffff82111715611f3957611f38611ee4565b5b80604052505050565b5f611f4b611997565b9050611f578282611f11565b919050565b5f67ffffffffffffffff821115611f7657611f75611ee4565b5b611f7f82611bf5565b9050602081019050919050565b828183375f83830152505050565b5f611fac611fa784611f5c565b611f42565b905082815260208101848484011115611fc857611fc7611ee0565b5b611fd3848285611f8c565b509392505050565b5f82601f830112611fef57611fee611edc565b5b8135611fff848260208601611f9a565b91505092915050565b5f67ffffffffffffffff82111561202257612021611ee4565b5b61202b82611bf5565b9050602081019050919050565b5f61204a61204584612008565b611f42565b90508281526020810184848401111561206657612065611ee0565b5b612071848285611f8c565b509392505050565b5f82601f83011261208d5761208c611edc565b5b813561209d848260208601612038565b91505092915050565b5f67ffffffffffffffff8211156120c0576120bf611ee4565b5b602082029050602081019050919050565b5f5ffd5b6120de81611cb8565b81146120e8575f5ffd5b50565b5f813590506120f9816120d5565b92915050565b5f61211161210c846120a6565b611f42565b90508083825260208201905060208402830185811115612134576121336120d1565b5b835b8181101561215d578061214988826120eb565b845260208401935050602081019050612136565b5050509392505050565b5f82601f83011261217b5761217a611edc565b5b813561218b8482602086016120ff565b91505092915050565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156121b3576121b26119a0565b5b5f6121c08d828e01611aed565b9a505060206121d18d828e01611b23565b99505060406121e28d828e01611aed565b98505060606121f38d828e01611b23565b97505060806122048d828e01611e74565b96505060a06122158d828e01611e9e565b95505060c06122268d828e01611ec8565b94505060e08b013567ffffffffffffffff811115612247576122466119a4565b5b6122538d828e01611fdb565b9350506101008b013567ffffffffffffffff811115612275576122746119a4565b5b6122818d828e01612079565b9250506101208b013567ffffffffffffffff8111156122a3576122a26119a4565b5b6122af8d828e01612167565b9150509295989b9194979a5092959850565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612301826122ee565b9050919050565b612311816122f7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612349816122ee565b82525050565b5f61235a8383612340565b60208301905092915050565b5f602082019050919050565b5f61237c82612317565b6123868185612321565b935061239183612331565b805f5b838110156123c15781516123a8888261234f565b97506123b383612366565b925050600181019050612394565b5085935050505092915050565b6123d7816122f7565b82525050565b5f6060820190506123f05f830186612308565b81810360208301526124028185612372565b905061241160408301846123ce565b949350505050565b5f61242b61242684612008565b611f42565b90508281526020810184848401111561244757612446611ee0565b5b612452848285611be7565b509392505050565b5f82601f83011261246e5761246d611edc565b5b815161247e848260208601612419565b91505092915050565b612490816122ee565b811461249a575f5ffd5b50565b5f815190506124ab81612487565b92915050565b5f5f5f606084860312156124c8576124c76119a0565b5b5f84015167ffffffffffffffff8111156124e5576124e46119a4565b5b6124f18682870161245a565b93505060206125028682870161249d565b925050604084015167ffffffffffffffff811115612523576125226119a4565b5b61252f8682870161245a565b9150509250925092565b5f8160381b9050919050565b5f61254f82612539565b9050919050565b61256761256282611ab3565b612545565b82525050565b5f8160f81b9050919050565b5f6125838261256d565b9050919050565b61259b61259682611b01565b612579565b82525050565b5f8160f01b9050919050565b5f6125b7826125a1565b9050919050565b6125cf6125ca82611b93565b6125ad565b82525050565b5f6125df82612579565b9050919050565b6125f76125f282611a28565b6125d5565b82525050565b5f8160601b9050919050565b5f612613826125fd565b9050919050565b5f61262482612609565b9050919050565b61263c61263782611a7a565b61261a565b82525050565b5f61264d8288612556565b60198201915061265d828761258a565b60018201915061266d82866125be565b60028201915061267d82856125e6565b60018201915061268d828461262b565b6014820191508190509695505050505050565b5f81905092915050565b5f6126b482611c3d565b6126be81856126a0565b93506126ce818560208601611be7565b80840191505092915050565b5f6126e582866126aa565b91506126f182856126aa565b91506126fd82846126aa565b9150819050949350505050565b5f82825260208201905092915050565b5f61272482611c3d565b61272e818561270a565b935061273e818560208601611be7565b61274781611bf5565b840191505092915050565b61275b816122f7565b82525050565b5f60a0820190506127745f830188612308565b81810360208301526127868187612372565b9050818103604083015261279a818661271a565b90506127a96060830185612752565b81810360808301526127bb818461271a565b90509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127fe82611e2d565b915061280983611e2d565b9250828201905080821115612821576128206127c7565b5b92915050565b5f61283182611b01565b915060ff8203612844576128436127c7565b5b600182019050919050565b5f61285982611e2d565b915061286483611e2d565b925082820390508181111561287c5761287b6127c7565b5b92915050565b5f61288c82611e2d565b915061289783611e2d565b92508282026128a581611e2d565b915082820484148315176128bc576128bb6127c7565b5b5092915050565b5f819050919050565b6128dd6128d8826122f7565b6128c3565b82525050565b5f81905092915050565b6128f6816122ee565b82525050565b5f61290783836128ed565b60208301905092915050565b5f61291d82612317565b61292781856128e3565b935061293283612331565b805f5b8381101561296257815161294988826128fc565b975061295483612366565b925050600181019050612935565b5085935050505092915050565b5f61297a82856128cc565b60208201915061298a8284612913565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6060820190508181035f8301526129db818661271a565b90506129ea6020830185611e36565b6129f76040830184611e36565b949350505050565b5f6080820190508181035f830152612a178187612372565b90508181036020830152612a2b818661271a565b9050612a3a6040830185612752565b8181036060830152612a4c818461271a565b905095945050505050565b5f60c082019050612a6a5f830189612308565b8181036020830152612a7c8188612372565b90508181036040830152612a90818761271a565b9050612a9f6060830186612752565b8181036080830152612ab1818561271a565b9050612ac060a08301846123ce565b979650505050505050565b612adc612ad7826122ee565b6128c3565b82525050565b5f612aed82856128cc565b602082019150612afd8284612acb565b602082019150819050939250505056fea26469706673582212204d49b1c04d595430cd1560d747e911e3b7cbe59c2547cffe7cc6b2b046e2285064736f6c634300081c0033" + } + } + } +}; \ No newline at end of file diff --git a/test/test-utils/src/MUDTestTable.sol b/test/test-utils/src/MUDTestTable.sol new file mode 100644 index 0000000000..288b1d42e1 --- /dev/null +++ b/test/test-utils/src/MUDTestTable.sol @@ -0,0 +1,1127 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +/* Autogenerated file. Do not edit manually. */ + +// Import store internals +import { IStore } from "@latticexyz/store/src/IStore.sol"; +import { StoreSwitch } from "@latticexyz/store/src/StoreSwitch.sol"; +import { StoreCore } from "@latticexyz/store/src/StoreCore.sol"; +import { Bytes } from "@latticexyz/store/src/Bytes.sol"; +import { Memory } from "@latticexyz/store/src/Memory.sol"; +import { SliceLib } from "@latticexyz/store/src/Slice.sol"; +import { EncodeArray } from "@latticexyz/store/src/tightcoder/EncodeArray.sol"; +import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol"; +import { Schema } from "@latticexyz/store/src/Schema.sol"; +import { EncodedLengths, EncodedLengthsLib } from "@latticexyz/store/src/EncodedLengths.sol"; +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; + +struct TestTableData { + uint200 val1; + uint8 val2; + uint16 val3; + bool val4; + address val5; + string dyn1; + bytes dyn2; + int16[] dyn3; +} + +library TestTable { + // Hex below is the result of `WorldResourceIdLib.encode({ namespace: "app", name: "TestTable", typeId: RESOURCE_TABLE });` + ResourceId constant _tableId = ResourceId.wrap(0x74626170700000000000000000000000546573745461626c6500000000000000); + + FieldLayout constant _fieldLayout = + FieldLayout.wrap(0x0031050319010201140000000000000000000000000000000000000000000000); + + // Hex-encoded key schema of (uint200, uint8) + Schema constant _keySchema = Schema.wrap(0x001a020018000000000000000000000000000000000000000000000000000000); + // Hex-encoded value schema of (uint200, uint8, uint16, bool, address, string, bytes, int16[]) + Schema constant _valueSchema = Schema.wrap(0x003105031800016061c5c4830000000000000000000000000000000000000000); + + /** + * @notice Get the table's key field names. + * @return keyNames An array of strings with the names of key fields. + */ + function getKeyNames() internal pure returns (string[] memory keyNames) { + keyNames = new string[](2); + keyNames[0] = "key1"; + keyNames[1] = "key2"; + } + + /** + * @notice Get the table's value field names. + * @return fieldNames An array of strings with the names of value fields. + */ + function getFieldNames() internal pure returns (string[] memory fieldNames) { + fieldNames = new string[](8); + fieldNames[0] = "val1"; + fieldNames[1] = "val2"; + fieldNames[2] = "val3"; + fieldNames[3] = "val4"; + fieldNames[4] = "val5"; + fieldNames[5] = "dyn1"; + fieldNames[6] = "dyn2"; + fieldNames[7] = "dyn3"; + } + + /** + * @notice Register the table with its config. + */ + function register() internal { + StoreSwitch.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); + } + + /** + * @notice Register the table with its config. + */ + function _register() internal { + StoreCore.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); + } + + /** + * @notice Get val1. + */ + function getVal1(uint200 key1, uint8 key2) internal view returns (uint200 val1) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (uint200(bytes25(_blob))); + } + + /** + * @notice Get val1. + */ + function _getVal1(uint200 key1, uint8 key2) internal view returns (uint200 val1) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (uint200(bytes25(_blob))); + } + + /** + * @notice Set val1. + */ + function setVal1(uint200 key1, uint8 key2, uint200 val1) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((val1)), _fieldLayout); + } + + /** + * @notice Set val1. + */ + function _setVal1(uint200 key1, uint8 key2, uint200 val1) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((val1)), _fieldLayout); + } + + /** + * @notice Get val2. + */ + function getVal2(uint200 key1, uint8 key2) internal view returns (uint8 val2) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 1, _fieldLayout); + return (uint8(bytes1(_blob))); + } + + /** + * @notice Get val2. + */ + function _getVal2(uint200 key1, uint8 key2) internal view returns (uint8 val2) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 1, _fieldLayout); + return (uint8(bytes1(_blob))); + } + + /** + * @notice Set val2. + */ + function setVal2(uint200 key1, uint8 key2, uint8 val2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setStaticField(_tableId, _keyTuple, 1, abi.encodePacked((val2)), _fieldLayout); + } + + /** + * @notice Set val2. + */ + function _setVal2(uint200 key1, uint8 key2, uint8 val2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setStaticField(_tableId, _keyTuple, 1, abi.encodePacked((val2)), _fieldLayout); + } + + /** + * @notice Get val3. + */ + function getVal3(uint200 key1, uint8 key2) internal view returns (uint16 val3) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 2, _fieldLayout); + return (uint16(bytes2(_blob))); + } + + /** + * @notice Get val3. + */ + function _getVal3(uint200 key1, uint8 key2) internal view returns (uint16 val3) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 2, _fieldLayout); + return (uint16(bytes2(_blob))); + } + + /** + * @notice Set val3. + */ + function setVal3(uint200 key1, uint8 key2, uint16 val3) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setStaticField(_tableId, _keyTuple, 2, abi.encodePacked((val3)), _fieldLayout); + } + + /** + * @notice Set val3. + */ + function _setVal3(uint200 key1, uint8 key2, uint16 val3) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setStaticField(_tableId, _keyTuple, 2, abi.encodePacked((val3)), _fieldLayout); + } + + /** + * @notice Get val4. + */ + function getVal4(uint200 key1, uint8 key2) internal view returns (bool val4) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 3, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Get val4. + */ + function _getVal4(uint200 key1, uint8 key2) internal view returns (bool val4) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 3, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Set val4. + */ + function setVal4(uint200 key1, uint8 key2, bool val4) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setStaticField(_tableId, _keyTuple, 3, abi.encodePacked((val4)), _fieldLayout); + } + + /** + * @notice Set val4. + */ + function _setVal4(uint200 key1, uint8 key2, bool val4) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setStaticField(_tableId, _keyTuple, 3, abi.encodePacked((val4)), _fieldLayout); + } + + /** + * @notice Get val5. + */ + function getVal5(uint200 key1, uint8 key2) internal view returns (address val5) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 4, _fieldLayout); + return (address(bytes20(_blob))); + } + + /** + * @notice Get val5. + */ + function _getVal5(uint200 key1, uint8 key2) internal view returns (address val5) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 4, _fieldLayout); + return (address(bytes20(_blob))); + } + + /** + * @notice Set val5. + */ + function setVal5(uint200 key1, uint8 key2, address val5) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setStaticField(_tableId, _keyTuple, 4, abi.encodePacked((val5)), _fieldLayout); + } + + /** + * @notice Set val5. + */ + function _setVal5(uint200 key1, uint8 key2, address val5) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setStaticField(_tableId, _keyTuple, 4, abi.encodePacked((val5)), _fieldLayout); + } + + /** + * @notice Get dyn1. + */ + function getDyn1(uint200 key1, uint8 key2) internal view returns (string memory dyn1) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes memory _blob = StoreSwitch.getDynamicField(_tableId, _keyTuple, 0); + return (string(_blob)); + } + + /** + * @notice Get dyn1. + */ + function _getDyn1(uint200 key1, uint8 key2) internal view returns (string memory dyn1) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes memory _blob = StoreCore.getDynamicField(_tableId, _keyTuple, 0); + return (string(_blob)); + } + + /** + * @notice Set dyn1. + */ + function setDyn1(uint200 key1, uint8 key2, string memory dyn1) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setDynamicField(_tableId, _keyTuple, 0, bytes((dyn1))); + } + + /** + * @notice Set dyn1. + */ + function _setDyn1(uint200 key1, uint8 key2, string memory dyn1) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setDynamicField(_tableId, _keyTuple, 0, bytes((dyn1))); + } + + /** + * @notice Get the length of dyn1. + */ + function lengthDyn1(uint200 key1, uint8 key2) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + uint256 _byteLength = StoreSwitch.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 1; + } + } + + /** + * @notice Get the length of dyn1. + */ + function _lengthDyn1(uint200 key1, uint8 key2) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + uint256 _byteLength = StoreCore.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 1; + } + } + + /** + * @notice Get an item of dyn1. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function getItemDyn1(uint200 key1, uint8 key2, uint256 _index) internal view returns (string memory) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _blob = StoreSwitch.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 1, (_index + 1) * 1); + return (string(_blob)); + } + } + + /** + * @notice Get an item of dyn1. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function _getItemDyn1(uint200 key1, uint8 key2, uint256 _index) internal view returns (string memory) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _blob = StoreCore.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 1, (_index + 1) * 1); + return (string(_blob)); + } + } + + /** + * @notice Push a slice to dyn1. + */ + function pushDyn1(uint200 key1, uint8 key2, string memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.pushToDynamicField(_tableId, _keyTuple, 0, bytes((_slice))); + } + + /** + * @notice Push a slice to dyn1. + */ + function _pushDyn1(uint200 key1, uint8 key2, string memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.pushToDynamicField(_tableId, _keyTuple, 0, bytes((_slice))); + } + + /** + * @notice Pop a slice from dyn1. + */ + function popDyn1(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.popFromDynamicField(_tableId, _keyTuple, 0, 1); + } + + /** + * @notice Pop a slice from dyn1. + */ + function _popDyn1(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.popFromDynamicField(_tableId, _keyTuple, 0, 1); + } + + /** + * @notice Update a slice of dyn1 at `_index`. + */ + function updateDyn1(uint200 key1, uint8 key2, uint256 _index, string memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _encoded = bytes((_slice)); + StoreSwitch.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 1), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Update a slice of dyn1 at `_index`. + */ + function _updateDyn1(uint200 key1, uint8 key2, uint256 _index, string memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _encoded = bytes((_slice)); + StoreCore.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 1), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Get dyn2. + */ + function getDyn2(uint200 key1, uint8 key2) internal view returns (bytes memory dyn2) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes memory _blob = StoreSwitch.getDynamicField(_tableId, _keyTuple, 1); + return (bytes(_blob)); + } + + /** + * @notice Get dyn2. + */ + function _getDyn2(uint200 key1, uint8 key2) internal view returns (bytes memory dyn2) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes memory _blob = StoreCore.getDynamicField(_tableId, _keyTuple, 1); + return (bytes(_blob)); + } + + /** + * @notice Set dyn2. + */ + function setDyn2(uint200 key1, uint8 key2, bytes memory dyn2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setDynamicField(_tableId, _keyTuple, 1, bytes((dyn2))); + } + + /** + * @notice Set dyn2. + */ + function _setDyn2(uint200 key1, uint8 key2, bytes memory dyn2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setDynamicField(_tableId, _keyTuple, 1, bytes((dyn2))); + } + + /** + * @notice Get the length of dyn2. + */ + function lengthDyn2(uint200 key1, uint8 key2) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + uint256 _byteLength = StoreSwitch.getDynamicFieldLength(_tableId, _keyTuple, 1); + unchecked { + return _byteLength / 1; + } + } + + /** + * @notice Get the length of dyn2. + */ + function _lengthDyn2(uint200 key1, uint8 key2) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + uint256 _byteLength = StoreCore.getDynamicFieldLength(_tableId, _keyTuple, 1); + unchecked { + return _byteLength / 1; + } + } + + /** + * @notice Get an item of dyn2. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function getItemDyn2(uint200 key1, uint8 key2, uint256 _index) internal view returns (bytes memory) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _blob = StoreSwitch.getDynamicFieldSlice(_tableId, _keyTuple, 1, _index * 1, (_index + 1) * 1); + return (bytes(_blob)); + } + } + + /** + * @notice Get an item of dyn2. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function _getItemDyn2(uint200 key1, uint8 key2, uint256 _index) internal view returns (bytes memory) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _blob = StoreCore.getDynamicFieldSlice(_tableId, _keyTuple, 1, _index * 1, (_index + 1) * 1); + return (bytes(_blob)); + } + } + + /** + * @notice Push a slice to dyn2. + */ + function pushDyn2(uint200 key1, uint8 key2, bytes memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.pushToDynamicField(_tableId, _keyTuple, 1, bytes((_slice))); + } + + /** + * @notice Push a slice to dyn2. + */ + function _pushDyn2(uint200 key1, uint8 key2, bytes memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.pushToDynamicField(_tableId, _keyTuple, 1, bytes((_slice))); + } + + /** + * @notice Pop a slice from dyn2. + */ + function popDyn2(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.popFromDynamicField(_tableId, _keyTuple, 1, 1); + } + + /** + * @notice Pop a slice from dyn2. + */ + function _popDyn2(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.popFromDynamicField(_tableId, _keyTuple, 1, 1); + } + + /** + * @notice Update a slice of dyn2 at `_index`. + */ + function updateDyn2(uint200 key1, uint8 key2, uint256 _index, bytes memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _encoded = bytes((_slice)); + StoreSwitch.spliceDynamicData(_tableId, _keyTuple, 1, uint40(_index * 1), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Update a slice of dyn2 at `_index`. + */ + function _updateDyn2(uint200 key1, uint8 key2, uint256 _index, bytes memory _slice) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _encoded = bytes((_slice)); + StoreCore.spliceDynamicData(_tableId, _keyTuple, 1, uint40(_index * 1), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Get dyn3. + */ + function getDyn3(uint200 key1, uint8 key2) internal view returns (int16[] memory dyn3) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes memory _blob = StoreSwitch.getDynamicField(_tableId, _keyTuple, 2); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_int16()); + } + + /** + * @notice Get dyn3. + */ + function _getDyn3(uint200 key1, uint8 key2) internal view returns (int16[] memory dyn3) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + bytes memory _blob = StoreCore.getDynamicField(_tableId, _keyTuple, 2); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_int16()); + } + + /** + * @notice Set dyn3. + */ + function setDyn3(uint200 key1, uint8 key2, int16[] memory dyn3) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setDynamicField(_tableId, _keyTuple, 2, EncodeArray.encode((dyn3))); + } + + /** + * @notice Set dyn3. + */ + function _setDyn3(uint200 key1, uint8 key2, int16[] memory dyn3) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setDynamicField(_tableId, _keyTuple, 2, EncodeArray.encode((dyn3))); + } + + /** + * @notice Get the length of dyn3. + */ + function lengthDyn3(uint200 key1, uint8 key2) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + uint256 _byteLength = StoreSwitch.getDynamicFieldLength(_tableId, _keyTuple, 2); + unchecked { + return _byteLength / 2; + } + } + + /** + * @notice Get the length of dyn3. + */ + function _lengthDyn3(uint200 key1, uint8 key2) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + uint256 _byteLength = StoreCore.getDynamicFieldLength(_tableId, _keyTuple, 2); + unchecked { + return _byteLength / 2; + } + } + + /** + * @notice Get an item of dyn3. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function getItemDyn3(uint200 key1, uint8 key2, uint256 _index) internal view returns (int16) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _blob = StoreSwitch.getDynamicFieldSlice(_tableId, _keyTuple, 2, _index * 2, (_index + 1) * 2); + return (int16(uint16(bytes2(_blob)))); + } + } + + /** + * @notice Get an item of dyn3. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function _getItemDyn3(uint200 key1, uint8 key2, uint256 _index) internal view returns (int16) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _blob = StoreCore.getDynamicFieldSlice(_tableId, _keyTuple, 2, _index * 2, (_index + 1) * 2); + return (int16(uint16(bytes2(_blob)))); + } + } + + /** + * @notice Push an element to dyn3. + */ + function pushDyn3(uint200 key1, uint8 key2, int16 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.pushToDynamicField(_tableId, _keyTuple, 2, abi.encodePacked((_element))); + } + + /** + * @notice Push an element to dyn3. + */ + function _pushDyn3(uint200 key1, uint8 key2, int16 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.pushToDynamicField(_tableId, _keyTuple, 2, abi.encodePacked((_element))); + } + + /** + * @notice Pop an element from dyn3. + */ + function popDyn3(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.popFromDynamicField(_tableId, _keyTuple, 2, 2); + } + + /** + * @notice Pop an element from dyn3. + */ + function _popDyn3(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.popFromDynamicField(_tableId, _keyTuple, 2, 2); + } + + /** + * @notice Update an element of dyn3 at `_index`. + */ + function updateDyn3(uint200 key1, uint8 key2, uint256 _index, int16 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + StoreSwitch.spliceDynamicData(_tableId, _keyTuple, 2, uint40(_index * 2), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Update an element of dyn3 at `_index`. + */ + function _updateDyn3(uint200 key1, uint8 key2, uint256 _index, int16 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + StoreCore.spliceDynamicData(_tableId, _keyTuple, 2, uint40(_index * 2), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Get the full data. + */ + function get(uint200 key1, uint8 key2) internal view returns (TestTableData memory _table) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + (bytes memory _staticData, EncodedLengths _encodedLengths, bytes memory _dynamicData) = StoreSwitch.getRecord( + _tableId, + _keyTuple, + _fieldLayout + ); + return decode(_staticData, _encodedLengths, _dynamicData); + } + + /** + * @notice Get the full data. + */ + function _get(uint200 key1, uint8 key2) internal view returns (TestTableData memory _table) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + (bytes memory _staticData, EncodedLengths _encodedLengths, bytes memory _dynamicData) = StoreCore.getRecord( + _tableId, + _keyTuple, + _fieldLayout + ); + return decode(_staticData, _encodedLengths, _dynamicData); + } + + /** + * @notice Set the full data using individual values. + */ + function set( + uint200 key1, + uint8 key2, + uint200 val1, + uint8 val2, + uint16 val3, + bool val4, + address val5, + string memory dyn1, + bytes memory dyn2, + int16[] memory dyn3 + ) internal { + bytes memory _staticData = encodeStatic(val1, val2, val3, val4, val5); + + EncodedLengths _encodedLengths = encodeLengths(dyn1, dyn2, dyn3); + bytes memory _dynamicData = encodeDynamic(dyn1, dyn2, dyn3); + + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setRecord(_tableId, _keyTuple, _staticData, _encodedLengths, _dynamicData); + } + + /** + * @notice Set the full data using individual values. + */ + function _set( + uint200 key1, + uint8 key2, + uint200 val1, + uint8 val2, + uint16 val3, + bool val4, + address val5, + string memory dyn1, + bytes memory dyn2, + int16[] memory dyn3 + ) internal { + bytes memory _staticData = encodeStatic(val1, val2, val3, val4, val5); + + EncodedLengths _encodedLengths = encodeLengths(dyn1, dyn2, dyn3); + bytes memory _dynamicData = encodeDynamic(dyn1, dyn2, dyn3); + + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setRecord(_tableId, _keyTuple, _staticData, _encodedLengths, _dynamicData, _fieldLayout); + } + + /** + * @notice Set the full data using the data struct. + */ + function set(uint200 key1, uint8 key2, TestTableData memory _table) internal { + bytes memory _staticData = encodeStatic(_table.val1, _table.val2, _table.val3, _table.val4, _table.val5); + + EncodedLengths _encodedLengths = encodeLengths(_table.dyn1, _table.dyn2, _table.dyn3); + bytes memory _dynamicData = encodeDynamic(_table.dyn1, _table.dyn2, _table.dyn3); + + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.setRecord(_tableId, _keyTuple, _staticData, _encodedLengths, _dynamicData); + } + + /** + * @notice Set the full data using the data struct. + */ + function _set(uint200 key1, uint8 key2, TestTableData memory _table) internal { + bytes memory _staticData = encodeStatic(_table.val1, _table.val2, _table.val3, _table.val4, _table.val5); + + EncodedLengths _encodedLengths = encodeLengths(_table.dyn1, _table.dyn2, _table.dyn3); + bytes memory _dynamicData = encodeDynamic(_table.dyn1, _table.dyn2, _table.dyn3); + + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.setRecord(_tableId, _keyTuple, _staticData, _encodedLengths, _dynamicData, _fieldLayout); + } + + /** + * @notice Decode the tightly packed blob of static data using this table's field layout. + */ + function decodeStatic( + bytes memory _blob + ) internal pure returns (uint200 val1, uint8 val2, uint16 val3, bool val4, address val5) { + val1 = (uint200(Bytes.getBytes25(_blob, 0))); + + val2 = (uint8(Bytes.getBytes1(_blob, 25))); + + val3 = (uint16(Bytes.getBytes2(_blob, 26))); + + val4 = (_toBool(uint8(Bytes.getBytes1(_blob, 28)))); + + val5 = (address(Bytes.getBytes20(_blob, 29))); + } + + /** + * @notice Decode the tightly packed blob of dynamic data using the encoded lengths. + */ + function decodeDynamic( + EncodedLengths _encodedLengths, + bytes memory _blob + ) internal pure returns (string memory dyn1, bytes memory dyn2, int16[] memory dyn3) { + uint256 _start; + uint256 _end; + unchecked { + _end = _encodedLengths.atIndex(0); + } + dyn1 = (string(SliceLib.getSubslice(_blob, _start, _end).toBytes())); + + _start = _end; + unchecked { + _end += _encodedLengths.atIndex(1); + } + dyn2 = (bytes(SliceLib.getSubslice(_blob, _start, _end).toBytes())); + + _start = _end; + unchecked { + _end += _encodedLengths.atIndex(2); + } + dyn3 = (SliceLib.getSubslice(_blob, _start, _end).decodeArray_int16()); + } + + /** + * @notice Decode the tightly packed blobs using this table's field layout. + * @param _staticData Tightly packed static fields. + * @param _encodedLengths Encoded lengths of dynamic fields. + * @param _dynamicData Tightly packed dynamic fields. + */ + function decode( + bytes memory _staticData, + EncodedLengths _encodedLengths, + bytes memory _dynamicData + ) internal pure returns (TestTableData memory _table) { + (_table.val1, _table.val2, _table.val3, _table.val4, _table.val5) = decodeStatic(_staticData); + + (_table.dyn1, _table.dyn2, _table.dyn3) = decodeDynamic(_encodedLengths, _dynamicData); + } + + /** + * @notice Delete all data for given keys. + */ + function deleteRecord(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreSwitch.deleteRecord(_tableId, _keyTuple); + } + + /** + * @notice Delete all data for given keys. + */ + function _deleteRecord(uint200 key1, uint8 key2) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + StoreCore.deleteRecord(_tableId, _keyTuple, _fieldLayout); + } + + /** + * @notice Tightly pack static (fixed length) data using this table's schema. + * @return The static data, encoded into a sequence of bytes. + */ + function encodeStatic( + uint200 val1, + uint8 val2, + uint16 val3, + bool val4, + address val5 + ) internal pure returns (bytes memory) { + return abi.encodePacked(val1, val2, val3, val4, val5); + } + + /** + * @notice Tightly pack dynamic data lengths using this table's schema. + * @return _encodedLengths The lengths of the dynamic fields (packed into a single bytes32 value). + */ + function encodeLengths( + string memory dyn1, + bytes memory dyn2, + int16[] memory dyn3 + ) internal pure returns (EncodedLengths _encodedLengths) { + // Lengths are effectively checked during copy by 2**40 bytes exceeding gas limits + unchecked { + _encodedLengths = EncodedLengthsLib.pack(bytes(dyn1).length, bytes(dyn2).length, dyn3.length * 2); + } + } + + /** + * @notice Tightly pack dynamic (variable length) data using this table's schema. + * @return The dynamic data, encoded into a sequence of bytes. + */ + function encodeDynamic( + string memory dyn1, + bytes memory dyn2, + int16[] memory dyn3 + ) internal pure returns (bytes memory) { + return abi.encodePacked(bytes((dyn1)), bytes((dyn2)), EncodeArray.encode((dyn3))); + } + + /** + * @notice Encode all of a record's fields. + * @return The static (fixed length) data, encoded into a sequence of bytes. + * @return The lengths of the dynamic fields (packed into a single bytes32 value). + * @return The dynamic (variable length) data, encoded into a sequence of bytes. + */ + function encode( + uint200 val1, + uint8 val2, + uint16 val3, + bool val4, + address val5, + string memory dyn1, + bytes memory dyn2, + int16[] memory dyn3 + ) internal pure returns (bytes memory, EncodedLengths, bytes memory) { + bytes memory _staticData = encodeStatic(val1, val2, val3, val4, val5); + + EncodedLengths _encodedLengths = encodeLengths(dyn1, dyn2, dyn3); + bytes memory _dynamicData = encodeDynamic(dyn1, dyn2, dyn3); + + return (_staticData, _encodedLengths, _dynamicData); + } + + /** + * @notice Encode keys as a bytes32 array using this table's field layout. + */ + function encodeKeyTuple(uint200 key1, uint8 key2) internal pure returns (bytes32[] memory) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(key1)); + _keyTuple[1] = bytes32(uint256(key2)); + + return _keyTuple; + } +} + +/** + * @notice Cast a value to a bool. + * @dev Boolean values are encoded as uint8 (1 = true, 0 = false), but Solidity doesn't allow casting between uint8 and bool. + * @param value The uint8 value to convert. + * @return result The boolean value. + */ +function _toBool(uint8 value) pure returns (bool result) { + assembly { + result := value + } +} diff --git a/test/test-utils/src/MUDTestTable.sol.ts b/test/test-utils/src/MUDTestTable.sol.ts new file mode 100644 index 0000000000..1ff518ccc7 --- /dev/null +++ b/test/test-utils/src/MUDTestTable.sol.ts @@ -0,0 +1,30 @@ +import { createContract } from '@tevm/contract' +const _TestTable = { + "name": "TestTable", + "humanReadableAbi": [], + "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f510955552e8c65f9f41c4867b6cf471b26a6b42ca60256cc049f5b8c5c511c464736f6c634300081c0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f510955552e8c65f9f41c4867b6cf471b26a6b42ca60256cc049f5b8c5c511c464736f6c634300081c0033" +} as const +/** + * @see [contract docs](https://tevm.sh/learn/contracts/) for more documentation + */ +export const TestTable = createContract(_TestTable); +export const artifacts = { + "TestTable": { + "contractName": "TestTable", + "abi": [], + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f510955552e8c65f9f41c4867b6cf471b26a6b42ca60256cc049f5b8c5c511c464736f6c634300081c0033" + }, + "deployedBytecode": { + "object": "730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f510955552e8c65f9f41c4867b6cf471b26a6b42ca60256cc049f5b8c5c511c464736f6c634300081c0033" + } + } + } +}; \ No newline at end of file diff --git a/test/test-utils/src/index.ts b/test/test-utils/src/index.ts index f3f91dbad6..450b6d990c 100644 --- a/test/test-utils/src/index.ts +++ b/test/test-utils/src/index.ts @@ -3,4 +3,5 @@ export { transports } from './transports.js' export { SimpleContract } from './SimpleContract.s.sol.js' export { BlockReader } from './BlockReader.s.sol.js' export { TestERC20, TestERC721 } from './OZ.s.sol.js' +export { TestSystem as MUDTestSystem } from './MUDTestSystem.s.sol.js' export { ErrorContract } from './ErrorContract.s.sol.js'