@capgo/capacitor-fast-sql 8.1.1 → 8.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -31
- package/android/build.gradle +2 -2
- package/android/src/main/java/app/capgo/capacitor/fastsql/CapgoCapacitorFastSqlPlugin.java +1 -1
- package/dist/esm/definitions.d.ts +23 -17
- package/dist/esm/definitions.d.ts.map +1 -1
- package/dist/esm/web.d.ts +9 -26
- package/dist/esm/web.d.ts.map +1 -1
- package/dist/esm/web.js +90 -144
- package/dist/plugin.cjs.js +90 -158
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +15878 -155
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/CapgoCapacitorFastSqlPlugin/CapgoCapacitorFastSqlPlugin.swift +1 -1
- package/package.json +7 -3
- package/dist/esm/performance-config.d.ts +0 -8
- package/dist/esm/performance-config.d.ts.map +0 -1
- package/dist/esm/performance-config.js +0 -14
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/plugin.js","esm/native-sql-connection.js","esm/web-sql-connection.js","esm/fast-sql.js","esm/key-value.js","esm/vector-store.js","esm/performance-config.js","esm/web.js"],"sourcesContent":["/**\n * Transaction isolation levels\n */\nexport var IsolationLevel;\n(function (IsolationLevel) {\n IsolationLevel[\"ReadUncommitted\"] = \"READ UNCOMMITTED\";\n IsolationLevel[\"ReadCommitted\"] = \"READ COMMITTED\";\n IsolationLevel[\"RepeatableRead\"] = \"REPEATABLE READ\";\n IsolationLevel[\"Serializable\"] = \"SERIALIZABLE\";\n})(IsolationLevel || (IsolationLevel = {}));\n","import { registerPlugin } from '@capacitor/core';\nexport const CapgoCapacitorFastSql = registerPlugin('CapgoCapacitorFastSql', {\n web: () => import('./web').then((m) => new m.CapgoCapacitorFastSqlWeb()),\n});\n","import { IsolationLevel } from './definitions';\n/**\n * SQL Connection class that uses HTTP protocol for efficient communication\n * with native SQLite databases, bypassing Capacitor's standard bridge.\n *\n * Inspired by capacitor-blob-writer's approach to avoid serialization overhead.\n */\nexport class NativeSQLConnection {\n constructor(database, port, token) {\n this.inTransaction = false;\n this.database = database;\n this.port = port;\n this.token = token;\n this.baseUrl = `http://localhost:${port}`;\n }\n /**\n * Get the database name\n */\n getDatabaseName() {\n return this.database;\n }\n /**\n * Execute a SQL query via HTTP protocol for optimal performance\n *\n * @param statement - SQL statement to execute\n * @param params - Parameters to bind to the statement\n * @returns Query results\n */\n async execute(statement, params) {\n const response = await fetch(`${this.baseUrl}/execute`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n statement,\n params: params ? this.serializeParams(params) : [],\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL execution failed: ${error}`);\n }\n const result = await response.json();\n return this.deserializeResult(result);\n }\n /**\n * Execute multiple SQL statements in a batch for better performance\n *\n * @param operations - Array of SQL operations to execute\n * @returns Array of results for each operation\n */\n async executeBatch(operations) {\n const response = await fetch(`${this.baseUrl}/batch`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n operations: operations.map((op) => ({\n statement: op.statement,\n params: op.params ? this.serializeParams(op.params) : [],\n })),\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL batch execution failed: ${error}`);\n }\n const results = await response.json();\n return results.map((r) => this.deserializeResult(r));\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/begin`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n isolationLevel: isolationLevel || IsolationLevel.Serializable,\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to begin transaction: ${error}`);\n }\n this.inTransaction = true;\n }\n /**\n * Commit the current transaction\n */\n async commit() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/commit`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to commit transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Rollback the current transaction\n */\n async rollback() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/rollback`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to rollback transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Execute operations within a transaction automatically\n *\n * @param callback - Function containing operations to execute\n * @param isolationLevel - Optional isolation level\n */\n async transaction(callback, isolationLevel) {\n await this.beginTransaction(isolationLevel);\n try {\n const result = await callback(this);\n await this.commit();\n return result;\n }\n catch (error) {\n await this.rollback();\n throw error;\n }\n }\n /**\n * Query helper for SELECT statements\n *\n * @param statement - SELECT statement\n * @param params - Query parameters\n * @returns Array of rows\n */\n async query(statement, params) {\n const result = await this.execute(statement, params);\n return result.rows;\n }\n /**\n * Execute helper for INSERT/UPDATE/DELETE statements\n *\n * @param statement - SQL statement\n * @param params - Statement parameters\n * @returns Number of affected rows and insert ID if applicable\n */\n async run(statement, params) {\n const result = await this.execute(statement, params);\n return {\n rowsAffected: result.rowsAffected,\n insertId: result.insertId,\n };\n }\n /**\n * Serialize parameters for transmission\n * Binary data (Uint8Array) is converted to base64 for JSON transport\n */\n serializeParams(params) {\n return params.map((param) => {\n if (param instanceof Uint8Array) {\n return {\n _type: 'binary',\n _data: this.uint8ArrayToBase64(param),\n };\n }\n return param;\n });\n }\n /**\n * Deserialize result from server\n * Base64-encoded binary data is converted back to Uint8Array\n */\n deserializeResult(result) {\n return {\n rows: result.rows.map((row) => {\n const deserializedRow = {};\n for (const [key, value] of Object.entries(row)) {\n if (value && typeof value === 'object' && value._type === 'binary') {\n deserializedRow[key] = this.base64ToUint8Array(value._data);\n }\n else {\n deserializedRow[key] = value;\n }\n }\n return deserializedRow;\n }),\n rowsAffected: result.rowsAffected || 0,\n insertId: result.insertId,\n };\n }\n /**\n * Convert Uint8Array to base64 string\n */\n uint8ArrayToBase64(bytes) {\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n /**\n * Convert base64 string to Uint8Array\n */\n base64ToUint8Array(base64) {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n}\n","/**\n * Web implementation of SQLConnection that calls the Capacitor plugin directly,\n * avoiding HTTP network requests which are not available on the web platform.\n */\nexport class WebSQLConnection {\n constructor(database, plugin) {\n this.inTransaction = false;\n this.database = database;\n this.plugin = plugin;\n }\n /**\n * Get the database name\n */\n getDatabaseName() {\n return this.database;\n }\n /**\n * Execute a SQL query via the Capacitor plugin\n *\n * @param statement - SQL statement to execute\n * @param params - Parameters to bind to the statement\n * @returns Query results\n */\n async execute(statement, params) {\n return this.plugin.execute({ database: this.database, statement, params });\n }\n /**\n * Execute multiple SQL statements in a batch, sequentially\n *\n * @param operations - Array of SQL operations to execute\n * @returns Array of results for each operation\n */\n async executeBatch(operations) {\n const results = [];\n for (const op of operations) {\n results.push(await this.execute(op.statement, op.params));\n }\n return results;\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n await this.plugin.beginTransaction({ database: this.database, isolationLevel });\n this.inTransaction = true;\n }\n /**\n * Commit the current transaction\n */\n async commit() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n await this.plugin.commitTransaction({ database: this.database });\n this.inTransaction = false;\n }\n /**\n * Rollback the current transaction\n */\n async rollback() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n await this.plugin.rollbackTransaction({ database: this.database });\n this.inTransaction = false;\n }\n /**\n * Execute operations within a transaction automatically\n *\n * @param callback - Function containing operations to execute\n * @param isolationLevel - Optional isolation level\n */\n async transaction(callback, isolationLevel) {\n await this.beginTransaction(isolationLevel);\n try {\n const result = await callback(this);\n await this.commit();\n return result;\n }\n catch (error) {\n if (this.inTransaction) {\n try {\n await this.rollback();\n }\n catch (rollbackError) {\n throw new Error(`Transaction failed and rollback failed: ${String(rollbackError)}; original error: ${String(error)}`);\n }\n }\n throw error;\n }\n }\n /**\n * Query helper for SELECT statements\n *\n * @param statement - SELECT statement\n * @param params - Query parameters\n * @returns Array of rows\n */\n async query(statement, params) {\n const result = await this.execute(statement, params);\n return result.rows;\n }\n /**\n * Execute helper for INSERT/UPDATE/DELETE statements\n *\n * @param statement - SQL statement\n * @param params - Statement parameters\n * @returns Number of affected rows and insert ID if applicable\n */\n async run(statement, params) {\n const result = await this.execute(statement, params);\n return {\n rowsAffected: result.rowsAffected,\n insertId: result.insertId,\n };\n }\n}\n","import { Capacitor } from '@capacitor/core';\nimport { NativeSQLConnection } from './native-sql-connection';\nimport { CapgoCapacitorFastSql } from './plugin';\nimport { WebSQLConnection } from './web-sql-connection';\n/**\n * FastSQL - High-level API for managing SQL connections\n *\n * This class provides a convenient interface for opening/closing database connections\n * and managing multiple databases simultaneously.\n */\nexport class FastSQL {\n /**\n * Open a database connection\n *\n * @param options - Connection options\n * @returns SQLConnection instance for executing queries\n */\n static async connect(options) {\n // Check if already connected\n const existing = this.connections.get(options.database);\n if (existing) {\n this.sharedConnections.add(options.database);\n return existing;\n }\n // Connect via native plugin\n const info = await CapgoCapacitorFastSql.connect(options);\n // Create connection instance appropriate for the current platform\n let connection;\n const platform = Capacitor.getPlatform();\n if (platform === 'android' || platform === 'ios') {\n connection = new NativeSQLConnection(info.database, info.port, info.token);\n }\n else {\n connection = new WebSQLConnection(info.database, CapgoCapacitorFastSql);\n }\n // Store connection\n this.connections.set(options.database, connection);\n return connection;\n }\n /**\n * Close a database connection\n *\n * @param database - Database name to close\n */\n static async disconnect(database) {\n var _a;\n const connection = this.connections.get(database);\n if (!connection) {\n throw new Error(`Database '${database}' is not connected`);\n }\n if (((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) > 0) {\n this.pendingDisconnects.add(database);\n return;\n }\n // Disconnect via native plugin\n await CapgoCapacitorFastSql.disconnect({ database });\n // Remove connection\n this.connections.delete(database);\n this.sharedConnections.delete(database);\n this.connectionRetainers.delete(database);\n this.pendingDisconnects.delete(database);\n }\n /**\n * Get an existing connection\n *\n * @param database - Database name\n * @returns SQLConnection instance or null if not connected\n */\n static getConnection(database) {\n return this.connections.get(database) || null;\n }\n /**\n * Check whether a connection has been handed out more than once.\n */\n static isConnectionShared(database) {\n return this.sharedConnections.has(database);\n }\n /**\n * Temporarily retain a connection for helpers that share cached connections.\n */\n static retainConnection(database) {\n var _a;\n if (!this.connections.has(database)) {\n throw new Error(`Database '${database}' is not connected`);\n }\n this.connectionRetainers.set(database, ((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n /**\n * Release a retained connection. Returns true when a pending disconnect closed it.\n */\n static async releaseConnection(database) {\n var _a;\n const retainers = (_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (retainers > 1) {\n this.connectionRetainers.set(database, retainers - 1);\n return false;\n }\n this.connectionRetainers.delete(database);\n if (this.pendingDisconnects.has(database)) {\n this.pendingDisconnects.delete(database);\n await this.disconnect(database);\n return true;\n }\n return false;\n }\n /**\n * Close all open connections\n */\n static async disconnectAll() {\n const databases = Array.from(this.connections.keys());\n await Promise.all(databases.map((db) => {\n this.connectionRetainers.delete(db);\n this.pendingDisconnects.delete(db);\n return this.disconnect(db);\n }));\n }\n /**\n * Get list of all open database connections\n *\n * @returns Array of database names\n */\n static getOpenDatabases() {\n return Array.from(this.connections.keys());\n }\n}\nFastSQL.connections = new Map();\nFastSQL.sharedConnections = new Set();\nFastSQL.connectionRetainers = new Map();\nFastSQL.pendingDisconnects = new Set();\n","import { FastSQL } from './fast-sql';\n/**\n * Key-value storage backed by the FastSQL database connection.\n *\n * This is a lightweight wrapper for mobile-focused secure storage use cases.\n */\nexport class KeyValueStore {\n constructor(connection, store) {\n this.initialized = false;\n this.ownsConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = store;\n }\n /**\n * Open (or create) a key-value store for the given database.\n */\n static async open(options) {\n var _a;\n const connection = await FastSQL.connect(options);\n const store = (_a = options.store) !== null && _a !== void 0 ? _a : 'default';\n const kv = new KeyValueStore(connection, store);\n kv.ownsConnection = true;\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Create a key-value store from an existing SQLConnection.\n * Note: The caller retains ownership and is responsible for closing the connection.\n */\n static async fromConnection(connection, store = 'default') {\n const kv = new KeyValueStore(connection, store);\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Close the key-value store and release resources.\n * Only disconnects the database if this store owns the connection (created via open()).\n */\n async close() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n if (this.ownsConnection) {\n try {\n await FastSQL.disconnect(this.connection.getDatabaseName());\n }\n catch (_a) {\n // Ignore disconnect errors during close.\n }\n }\n this.initialized = false;\n }\n /**\n * Store a value by key.\n */\n async set(key, value) {\n await this.ensureSchema();\n const encoded = this.encodeValue(value);\n await this.connection.run('INSERT OR REPLACE INTO __kv_store (s, k, t, v) VALUES (?, ?, ?, ?)', [\n this.store,\n key,\n encoded.type,\n encoded.value,\n ]);\n }\n /**\n * Retrieve a value by key. Returns null if the key is missing.\n */\n async get(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT t, v FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n if (!rows.length) {\n return null;\n }\n const row = rows[0];\n const type = row.t;\n const value = row.v;\n return this.decodeValue(type, value);\n }\n /**\n * Check if a key exists.\n */\n async has(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT 1 as existsFlag FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n return rows.length > 0;\n }\n /**\n * Remove a single key.\n */\n async remove(key) {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ? AND k = ?', [this.store, key]);\n }\n /**\n * Clear all keys for the current store.\n */\n async clear() {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ?', [this.store]);\n }\n /**\n * List all keys for the current store.\n */\n async keys() {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT k FROM __kv_store WHERE s = ? ORDER BY k', [this.store]);\n return rows.map((row) => String(row.k));\n }\n async ensureSchema() {\n if (this.initialized) {\n return;\n }\n await this.connection.run('CREATE TABLE IF NOT EXISTS __kv_store (s TEXT NOT NULL, k TEXT NOT NULL, t TEXT NOT NULL, v BLOB, PRIMARY KEY (s, k))');\n await this.connection.run('CREATE INDEX IF NOT EXISTS __kv_store_s_idx ON __kv_store (s)');\n this.initialized = true;\n }\n encodeValue(value) {\n if (value === null || value === undefined) {\n return { type: 'null', value: null };\n }\n if (value instanceof Uint8Array) {\n return { type: 'binary', value };\n }\n if (typeof value === 'string') {\n return { type: 'string', value };\n }\n if (typeof value === 'number') {\n return { type: 'number', value };\n }\n if (typeof value === 'boolean') {\n return { type: 'boolean', value: value ? 1 : 0 };\n }\n return { type: 'json', value: JSON.stringify(value) };\n }\n decodeValue(type, value) {\n switch (type) {\n case 'null':\n return null;\n case 'binary':\n return value instanceof Uint8Array ? value : null;\n case 'string':\n return value != null ? String(value) : '';\n case 'number':\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n case 'boolean':\n if (typeof value === 'number') {\n return value !== 0;\n }\n if (typeof value === 'string') {\n return value === '1' || value.toLowerCase() === 'true';\n }\n return Boolean(value);\n case 'json':\n if (typeof value === 'string') {\n try {\n return JSON.parse(value);\n }\n catch (_a) {\n return null;\n }\n }\n return null;\n default:\n return value;\n }\n }\n}\n","import { FastSQL } from './fast-sql';\nconst DEFAULT_STORE = 'default';\nconst VECTOR_TABLE = '__fast_sql_vector_store';\nconst VECTOR_META_TABLE = '__fast_sql_vector_store_meta';\n/**\n * SQLite-backed VectorStore for local RAG usage.\n *\n * The helper is optional and dependency-free: pass your own embeddings provider,\n * or use precomputed embeddings with `embeddingDimension`. Multiple stores can\n * share one database by choosing different `store` names.\n */\nexport class FastSQLVectorStore {\n constructor(connection, options = {}) {\n var _a;\n this.initialized = false;\n this.ownsConnection = false;\n this.shouldDisconnectConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = (_a = options.store) !== null && _a !== void 0 ? _a : DEFAULT_STORE;\n this.embeddings = options.embeddings;\n this.configuredEmbeddingDim = options.embeddingDimension;\n this.embeddingDim = options.embeddingDimension;\n }\n static retainConnection(database) {\n var _a;\n this.connectionRefs.set(database, ((_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n static releaseConnection(database) {\n var _a;\n const refs = (_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (refs > 1) {\n this.connectionRefs.set(database, refs - 1);\n return false;\n }\n this.connectionRefs.delete(database);\n this.ownedConnections.delete(database);\n return true;\n }\n /**\n * Open a vector store from database connection options.\n */\n static async open(options) {\n const existing = FastSQL.getConnection(options.database);\n const ownsExistingVectorConnection = existing && FastSQLVectorStore.connectionRefs.has(options.database);\n const connection = ownsExistingVectorConnection ? existing : await FastSQL.connect(options);\n const vectorStore = new FastSQLVectorStore(connection, options);\n vectorStore.ownsConnection = true;\n vectorStore.shouldDisconnectConnection = !existing || FastSQLVectorStore.ownedConnections.has(options.database);\n FastSQLVectorStore.retainConnection(connection.getDatabaseName());\n FastSQL.retainConnection(connection.getDatabaseName());\n if (vectorStore.shouldDisconnectConnection) {\n FastSQLVectorStore.ownedConnections.add(connection.getDatabaseName());\n }\n try {\n await vectorStore.load();\n return vectorStore;\n }\n catch (error) {\n await vectorStore.unload();\n throw error;\n }\n }\n /**\n * Create a vector store from an existing SQL connection.\n * The caller keeps ownership of the connection.\n */\n static async fromConnection(connection, options = {}) {\n const vectorStore = new FastSQLVectorStore(connection, options);\n await vectorStore.load();\n return vectorStore;\n }\n getStoreName() {\n return this.store;\n }\n getDatabaseName() {\n return this.connection.getDatabaseName();\n }\n async load() {\n var _a, _b;\n this.assertOpen();\n if (this.initialized) {\n return this;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.load) === null || _b === void 0 ? void 0 : _b.call(_a));\n await this.ensureSchema();\n await this.ensureStoreDimension();\n this.initialized = true;\n return this;\n }\n async unload() {\n var _a, _b;\n if (this.closed) {\n return;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.unload) === null || _b === void 0 ? void 0 : _b.call(_a));\n if (this.ownsConnection) {\n const database = this.connection.getDatabaseName();\n const releasedLastVectorStore = FastSQLVectorStore.releaseConnection(database);\n const closedFromPendingDisconnect = await FastSQL.releaseConnection(database);\n if (releasedLastVectorStore &&\n this.shouldDisconnectConnection &&\n !FastSQL.isConnectionShared(database) &&\n !closedFromPendingDisconnect) {\n await FastSQL.disconnect(database);\n }\n }\n this.initialized = false;\n this.closed = true;\n }\n async close() {\n await this.unload();\n }\n async add(params) {\n await this.ensureReady();\n const { id = this.createId(), document, embedding, metadata } = params;\n if (document === undefined && embedding === undefined) {\n throw new Error('document and embedding cannot both be undefined');\n }\n const existing = await this.connection.query(`SELECT 1 FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [\n this.store,\n id,\n ]);\n if (existing.length > 0) {\n throw new Error(`id already exists: ${id}`);\n }\n const resolvedEmbedding = embedding !== null && embedding !== void 0 ? embedding : (await this.embedDocument(document));\n await this.ensureEmbeddingDimension(resolvedEmbedding);\n const now = Date.now();\n await this.connection.run(`INSERT INTO ${VECTOR_TABLE} (store, id, document, embedding, metadata, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)`, [\n this.store,\n id,\n document !== null && document !== void 0 ? document : '',\n this.encodeEmbedding(resolvedEmbedding),\n this.encodeMetadata(metadata),\n now,\n now,\n ]);\n return id;\n }\n async update(params) {\n var _a, _b;\n await this.ensureReady();\n const rows = await this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [this.store, params.id]);\n if (rows.length === 0) {\n throw new Error(`id not found: ${params.id}`);\n }\n const current = this.rowToGetResult(rows[0]);\n const document = (_a = params.document) !== null && _a !== void 0 ? _a : current.document;\n const embedding = (_b = params.embedding) !== null && _b !== void 0 ? _b : (params.document !== undefined ? await this.embedDocument(params.document) : current.embedding);\n const metadata = params.metadata === undefined ? current.metadata : params.metadata;\n await this.ensureEmbeddingDimension(embedding);\n await this.connection.run(`UPDATE ${VECTOR_TABLE}\n SET document = ?, embedding = ?, metadata = ?, updated_at = ?\n WHERE store = ? AND id = ?`, [document, this.encodeEmbedding(embedding), this.encodeMetadata(metadata), Date.now(), this.store, params.id]);\n }\n async delete(params) {\n await this.ensureReady();\n const rows = await this.getStoreRows();\n const ids = rows\n .map((row) => this.rowToGetResult(row))\n .filter(params.predicate)\n .map((row) => row.id);\n for (const id of ids) {\n await this.connection.run(`DELETE FROM ${VECTOR_TABLE} WHERE store = ? AND id = ?`, [this.store, id]);\n }\n }\n async query(params) {\n await this.ensureReady();\n const { queryText, queryEmbedding, nResults, predicate } = params;\n if (queryText === undefined && queryEmbedding === undefined) {\n throw new Error('queryText and queryEmbedding cannot both be undefined');\n }\n if (nResults !== undefined && nResults < 0) {\n throw new Error('nResults cannot be negative');\n }\n const searchEmbedding = queryEmbedding !== null && queryEmbedding !== void 0 ? queryEmbedding : (await this.embedDocument(queryText));\n await this.ensureEmbeddingDimension(searchEmbedding);\n const results = (await this.getStoreRows())\n .map((row) => {\n const item = this.rowToGetResult(row);\n return Object.assign(Object.assign({}, item), { similarity: this.cosineSimilarity(item.embedding, searchEmbedding) });\n })\n .filter(predicate !== null && predicate !== void 0 ? predicate : (() => true))\n .sort((a, b) => b.similarity - a.similarity);\n return nResults === undefined ? results : results.slice(0, nResults);\n }\n /**\n * Delete only this logical vector store. Other stores in the same database stay intact.\n */\n async deleteVectorStore() {\n await this.ensureReady();\n await this.connection.run(`DELETE FROM ${VECTOR_TABLE} WHERE store = ?`, [this.store]);\n await this.connection.run(`DELETE FROM ${VECTOR_META_TABLE} WHERE store = ?`, [this.store]);\n this.embeddingDim = this.configuredEmbeddingDim;\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n async ensureReady() {\n this.assertOpen();\n if (!this.initialized) {\n await this.load();\n }\n }\n assertOpen() {\n if (this.closed) {\n throw new Error('Vector store is closed');\n }\n }\n async ensureSchema() {\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_TABLE} (\n store TEXT NOT NULL,\n id TEXT NOT NULL,\n document TEXT NOT NULL,\n embedding BLOB NOT NULL,\n metadata TEXT DEFAULT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n PRIMARY KEY (store, id)\n )`);\n await this.connection.run(`CREATE INDEX IF NOT EXISTS ${VECTOR_TABLE}_store_idx ON ${VECTOR_TABLE} (store)`);\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_META_TABLE} (\n store TEXT PRIMARY KEY,\n embedding_dim INTEGER NOT NULL\n )`);\n }\n async ensureStoreDimension() {\n const rows = await this.connection.query(`SELECT embedding_dim FROM ${VECTOR_META_TABLE} WHERE store = ? LIMIT 1`, [\n this.store,\n ]);\n const storedDim = this.parseStoredDimension(rows[0]);\n if (storedDim !== undefined && this.embeddingDim !== undefined && storedDim !== this.embeddingDim) {\n throw new Error(`embedding dimension ${this.embeddingDim} does not match existing store dimension ${storedDim}`);\n }\n if (this.embeddingDim === undefined) {\n this.embeddingDim = storedDim !== null && storedDim !== void 0 ? storedDim : (this.embeddings ? (await this.embedDocument('dummy')).length : undefined);\n }\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n parseStoredDimension(row) {\n if (!row) {\n return undefined;\n }\n const value = row.embedding_dim;\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n }\n async saveEmbeddingDimension() {\n if (this.embeddingDim === undefined) {\n return;\n }\n await this.connection.run(`INSERT OR REPLACE INTO ${VECTOR_META_TABLE} (store, embedding_dim) VALUES (?, ?)`, [\n this.store,\n this.embeddingDim,\n ]);\n }\n async ensureEmbeddingDimension(embedding) {\n this.validateEmbedding(embedding);\n if (this.embeddingDim === undefined) {\n this.embeddingDim = embedding.length;\n await this.saveEmbeddingDimension();\n return;\n }\n if (embedding.length !== this.embeddingDim) {\n throw new Error(`embedding dimension ${embedding.length} does not match vector store dimension ${this.embeddingDim}`);\n }\n }\n async embedDocument(document) {\n if (document === undefined) {\n throw new Error('document is required when embedding is not provided');\n }\n if (!this.embeddings) {\n throw new Error('embeddings provider is required for text operations');\n }\n return this.embeddings.embed(document);\n }\n validateEmbedding(embedding) {\n if (!Array.isArray(embedding) || embedding.length === 0) {\n throw new Error('embedding must be a non-empty number array');\n }\n for (const value of embedding) {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new Error('embedding values must be finite numbers');\n }\n }\n }\n async getStoreRows() {\n return this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? ORDER BY updated_at DESC`, [this.store]);\n }\n rowToGetResult(row) {\n const result = {\n id: String(row.id),\n document: row.document === null || row.document === undefined ? '' : String(row.document),\n embedding: this.decodeEmbedding(row.embedding),\n };\n const metadata = this.decodeMetadata(row.metadata);\n if (metadata !== undefined) {\n result.metadata = metadata;\n }\n return result;\n }\n encodeEmbedding(embedding) {\n const bytes = new Uint8Array(embedding.length * Float32Array.BYTES_PER_ELEMENT);\n const view = new DataView(bytes.buffer);\n embedding.forEach((value, index) => view.setFloat32(index * Float32Array.BYTES_PER_ELEMENT, value, true));\n return bytes;\n }\n decodeEmbedding(value) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('stored embedding is not binary data');\n }\n if (value.byteLength % Float32Array.BYTES_PER_ELEMENT !== 0) {\n throw new Error('stored embedding has invalid byte length');\n }\n const view = new DataView(value.buffer, value.byteOffset, value.byteLength);\n const embedding = [];\n for (let offset = 0; offset < value.byteLength; offset += Float32Array.BYTES_PER_ELEMENT) {\n embedding.push(view.getFloat32(offset, true));\n }\n return embedding;\n }\n encodeMetadata(metadata) {\n return metadata ? JSON.stringify(metadata) : null;\n }\n decodeMetadata(value) {\n if (typeof value !== 'string' || value.length === 0) {\n return undefined;\n }\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;\n }\n catch (_a) {\n return undefined;\n }\n }\n cosineSimilarity(a, b) {\n if (a.length !== b.length) {\n throw new Error(`embedding dimension ${b.length} does not match stored embedding dimension ${a.length}`);\n }\n let dot = 0;\n let normA = 0;\n let normB = 0;\n for (let i = 0; i < a.length; i++) {\n dot += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n if (normA === 0 || normB === 0) {\n return 0;\n }\n return dot / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n createId() {\n const cryptoApi = globalThis.crypto;\n if (typeof (cryptoApi === null || cryptoApi === void 0 ? void 0 : cryptoApi.randomUUID) === 'function') {\n return cryptoApi.randomUUID();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const value = Math.floor(Math.random() * 16);\n const nibble = char === 'x' ? value : (value & 0x3) | 0x8;\n return nibble.toString(16);\n });\n }\n}\nFastSQLVectorStore.connectionRefs = new Map();\nFastSQLVectorStore.ownedConnections = new Set();\n","/**\n * Apply optional SQLite performance PRAGMAs after opening a database.\n */\nexport function applyPerformanceConfig(db, options) {\n db.run('PRAGMA foreign_keys = ON');\n if (options.walMode) {\n db.run('PRAGMA journal_mode = WAL');\n }\n if (options.performancePresets) {\n db.run('PRAGMA synchronous = NORMAL');\n db.run('PRAGMA busy_timeout = 5000');\n db.run('PRAGMA cache_size = -2000');\n }\n}\n","import { WebPlugin } from '@capacitor/core';\nimport { applyPerformanceConfig } from './performance-config';\nconst DEFAULT_SQLJS_URL = 'https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js';\nconst DEFAULT_WASM_URL = 'https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.wasm';\n/**\n * Web implementation using sql.js (SQLite compiled to WebAssembly)\n *\n * This provides a compatible API on the web platform, storing databases\n * in IndexedDB for persistence.\n */\nexport class CapgoCapacitorFastSqlWeb extends WebPlugin {\n constructor() {\n super();\n this.databases = new Map();\n this.sqlPromise = null;\n this.nextPort = 9000;\n this.webConfig = {};\n }\n /**\n * Configure web-specific options (no-op on native platforms).\n * Must be called before connect() when using locally bundled sql.js files.\n */\n async configureWeb(config) {\n this.webConfig = config;\n // Reset any in-progress load so the next connect() uses the new config\n this.sqlPromise = null;\n }\n /**\n * Load sql.js library (lazy – called on first connect()).\n * Returns the cached promise so callers can await it directly.\n */\n loadSqlJs() {\n var _a, _b;\n if (!this.sqlPromise) {\n const jsUrl = (_a = this.webConfig.sqlJsUrl) !== null && _a !== void 0 ? _a : DEFAULT_SQLJS_URL;\n const wasmUrl = (_b = this.webConfig.wasmUrl) !== null && _b !== void 0 ? _b : DEFAULT_WASM_URL;\n this.sqlPromise = new Promise((resolve, reject) => {\n try {\n // Load sql.js from the configured URL (CDN or local bundle)\n const script = document.createElement('script');\n script.src = jsUrl;\n script.onload = async () => {\n const initSqlJs = window.initSqlJs;\n const SQL = await initSqlJs({\n locateFile: (file) => (file.endsWith('.wasm') ? wasmUrl : file),\n });\n resolve(SQL);\n };\n script.onerror = reject;\n document.head.appendChild(script);\n }\n catch (error) {\n reject(error);\n }\n });\n }\n return this.sqlPromise;\n }\n async connect(options) {\n const SQL = await this.loadSqlJs();\n // Check if database already exists in IndexedDB\n const savedData = await this.loadFromIndexedDB(options.database);\n let db;\n if (savedData) {\n db = new SQL.Database(savedData);\n }\n else {\n db = new SQL.Database();\n }\n applyPerformanceConfig(db, options);\n const token = this.generateToken();\n const port = this.nextPort++;\n this.databases.set(options.database, { db, token, port });\n return {\n port,\n token,\n database: options.database,\n };\n }\n async disconnect(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n // Save to IndexedDB before closing\n const data = dbInfo.db.export();\n await this.saveToIndexedDB(options.database, data);\n dbInfo.db.close();\n this.databases.delete(options.database);\n }\n async getServerInfo(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n return {\n port: dbInfo.port,\n token: dbInfo.token,\n };\n }\n async execute(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n try {\n const stmt = dbInfo.db.prepare(options.statement);\n if (options.params) {\n stmt.bind(options.params);\n }\n const rows = [];\n while (stmt.step()) {\n const row = stmt.getAsObject();\n rows.push(row);\n }\n stmt.free();\n // Get changes and last insert ID\n const changes = dbInfo.db.getRowsModified();\n const insertId = this.getLastInsertId(dbInfo.db);\n return {\n rows,\n rowsAffected: changes,\n insertId: insertId > 0 ? insertId : undefined,\n };\n }\n catch (error) {\n throw new Error(`SQL execution failed: ${error.message}`);\n }\n }\n async beginTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'BEGIN TRANSACTION',\n });\n }\n async commitTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'COMMIT',\n });\n }\n async rollbackTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'ROLLBACK',\n });\n }\n /**\n * Generate a random authentication token\n */\n generateToken() {\n return Array.from(crypto.getRandomValues(new Uint8Array(32)))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n }\n /**\n * Get last insert row ID\n */\n getLastInsertId(db) {\n try {\n const result = db.exec('SELECT last_insert_rowid()');\n if (result.length > 0 && result[0].values.length > 0) {\n return result[0].values[0][0];\n }\n }\n catch (_a) {\n // Ignore error\n }\n return -1;\n }\n /**\n * Save database to IndexedDB\n */\n async saveToIndexedDB(dbName, data) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('CapacitorNativeSQL', 1);\n request.onerror = () => reject(request.error);\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains('databases')) {\n db.createObjectStore('databases');\n }\n };\n request.onsuccess = () => {\n const db = request.result;\n const transaction = db.transaction(['databases'], 'readwrite');\n const store = transaction.objectStore('databases');\n const putRequest = store.put(data, dbName);\n putRequest.onsuccess = () => {\n db.close();\n resolve();\n };\n putRequest.onerror = () => {\n db.close();\n reject(putRequest.error);\n };\n };\n });\n }\n /**\n * Load database from IndexedDB\n */\n async loadFromIndexedDB(dbName) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('CapacitorNativeSQL', 1);\n request.onerror = () => reject(request.error);\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains('databases')) {\n db.createObjectStore('databases');\n }\n };\n request.onsuccess = () => {\n const db = request.result;\n const transaction = db.transaction(['databases'], 'readonly');\n const store = transaction.objectStore('databases');\n const getRequest = store.get(dbName);\n getRequest.onsuccess = () => {\n db.close();\n resolve(getRequest.result || null);\n };\n getRequest.onerror = () => {\n db.close();\n reject(getRequest.error);\n };\n };\n });\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n"],"names":["IsolationLevel","registerPlugin","Capacitor","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/plugin.js","esm/native-sql-connection.js","esm/web-sql-connection.js","esm/fast-sql.js","esm/key-value.js","esm/vector-store.js","../node_modules/@sqlite.org/sqlite-wasm/dist/index.mjs","esm/web.js"],"sourcesContent":["/**\n * Transaction isolation levels\n */\nexport var IsolationLevel;\n(function (IsolationLevel) {\n IsolationLevel[\"ReadUncommitted\"] = \"READ UNCOMMITTED\";\n IsolationLevel[\"ReadCommitted\"] = \"READ COMMITTED\";\n IsolationLevel[\"RepeatableRead\"] = \"REPEATABLE READ\";\n IsolationLevel[\"Serializable\"] = \"SERIALIZABLE\";\n})(IsolationLevel || (IsolationLevel = {}));\n","import { registerPlugin } from '@capacitor/core';\nexport const CapgoCapacitorFastSql = registerPlugin('CapgoCapacitorFastSql', {\n web: () => import('./web').then((m) => new m.CapgoCapacitorFastSqlWeb()),\n});\n","import { IsolationLevel } from './definitions';\n/**\n * SQL Connection class that uses HTTP protocol for efficient communication\n * with native SQLite databases, bypassing Capacitor's standard bridge.\n *\n * Inspired by capacitor-blob-writer's approach to avoid serialization overhead.\n */\nexport class NativeSQLConnection {\n constructor(database, port, token) {\n this.inTransaction = false;\n this.database = database;\n this.port = port;\n this.token = token;\n this.baseUrl = `http://localhost:${port}`;\n }\n /**\n * Get the database name\n */\n getDatabaseName() {\n return this.database;\n }\n /**\n * Execute a SQL query via HTTP protocol for optimal performance\n *\n * @param statement - SQL statement to execute\n * @param params - Parameters to bind to the statement\n * @returns Query results\n */\n async execute(statement, params) {\n const response = await fetch(`${this.baseUrl}/execute`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n statement,\n params: params ? this.serializeParams(params) : [],\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL execution failed: ${error}`);\n }\n const result = await response.json();\n return this.deserializeResult(result);\n }\n /**\n * Execute multiple SQL statements in a batch for better performance\n *\n * @param operations - Array of SQL operations to execute\n * @returns Array of results for each operation\n */\n async executeBatch(operations) {\n const response = await fetch(`${this.baseUrl}/batch`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n operations: operations.map((op) => ({\n statement: op.statement,\n params: op.params ? this.serializeParams(op.params) : [],\n })),\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL batch execution failed: ${error}`);\n }\n const results = await response.json();\n return results.map((r) => this.deserializeResult(r));\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/begin`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n isolationLevel: isolationLevel || IsolationLevel.Serializable,\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to begin transaction: ${error}`);\n }\n this.inTransaction = true;\n }\n /**\n * Commit the current transaction\n */\n async commit() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/commit`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to commit transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Rollback the current transaction\n */\n async rollback() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/rollback`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to rollback transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Execute operations within a transaction automatically\n *\n * @param callback - Function containing operations to execute\n * @param isolationLevel - Optional isolation level\n */\n async transaction(callback, isolationLevel) {\n await this.beginTransaction(isolationLevel);\n try {\n const result = await callback(this);\n await this.commit();\n return result;\n }\n catch (error) {\n await this.rollback();\n throw error;\n }\n }\n /**\n * Query helper for SELECT statements\n *\n * @param statement - SELECT statement\n * @param params - Query parameters\n * @returns Array of rows\n */\n async query(statement, params) {\n const result = await this.execute(statement, params);\n return result.rows;\n }\n /**\n * Execute helper for INSERT/UPDATE/DELETE statements\n *\n * @param statement - SQL statement\n * @param params - Statement parameters\n * @returns Number of affected rows and insert ID if applicable\n */\n async run(statement, params) {\n const result = await this.execute(statement, params);\n return {\n rowsAffected: result.rowsAffected,\n insertId: result.insertId,\n };\n }\n /**\n * Serialize parameters for transmission\n * Binary data (Uint8Array) is converted to base64 for JSON transport\n */\n serializeParams(params) {\n return params.map((param) => {\n if (param instanceof Uint8Array) {\n return {\n _type: 'binary',\n _data: this.uint8ArrayToBase64(param),\n };\n }\n return param;\n });\n }\n /**\n * Deserialize result from server\n * Base64-encoded binary data is converted back to Uint8Array\n */\n deserializeResult(result) {\n return {\n rows: result.rows.map((row) => {\n const deserializedRow = {};\n for (const [key, value] of Object.entries(row)) {\n if (value && typeof value === 'object' && value._type === 'binary') {\n deserializedRow[key] = this.base64ToUint8Array(value._data);\n }\n else {\n deserializedRow[key] = value;\n }\n }\n return deserializedRow;\n }),\n rowsAffected: result.rowsAffected || 0,\n insertId: result.insertId,\n };\n }\n /**\n * Convert Uint8Array to base64 string\n */\n uint8ArrayToBase64(bytes) {\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n /**\n * Convert base64 string to Uint8Array\n */\n base64ToUint8Array(base64) {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n}\n","/**\n * Web implementation of SQLConnection that calls the Capacitor plugin directly,\n * avoiding HTTP network requests which are not available on the web platform.\n */\nexport class WebSQLConnection {\n constructor(database, plugin) {\n this.inTransaction = false;\n this.database = database;\n this.plugin = plugin;\n }\n /**\n * Get the database name\n */\n getDatabaseName() {\n return this.database;\n }\n /**\n * Execute a SQL query via the Capacitor plugin\n *\n * @param statement - SQL statement to execute\n * @param params - Parameters to bind to the statement\n * @returns Query results\n */\n async execute(statement, params) {\n return this.plugin.execute({ database: this.database, statement, params });\n }\n /**\n * Execute multiple SQL statements in a batch, sequentially\n *\n * @param operations - Array of SQL operations to execute\n * @returns Array of results for each operation\n */\n async executeBatch(operations) {\n const results = [];\n for (const op of operations) {\n results.push(await this.execute(op.statement, op.params));\n }\n return results;\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n await this.plugin.beginTransaction({ database: this.database, isolationLevel });\n this.inTransaction = true;\n }\n /**\n * Commit the current transaction\n */\n async commit() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n await this.plugin.commitTransaction({ database: this.database });\n this.inTransaction = false;\n }\n /**\n * Rollback the current transaction\n */\n async rollback() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n await this.plugin.rollbackTransaction({ database: this.database });\n this.inTransaction = false;\n }\n /**\n * Execute operations within a transaction automatically\n *\n * @param callback - Function containing operations to execute\n * @param isolationLevel - Optional isolation level\n */\n async transaction(callback, isolationLevel) {\n await this.beginTransaction(isolationLevel);\n try {\n const result = await callback(this);\n await this.commit();\n return result;\n }\n catch (error) {\n if (this.inTransaction) {\n try {\n await this.rollback();\n }\n catch (rollbackError) {\n throw new Error(`Transaction failed and rollback failed: ${String(rollbackError)}; original error: ${String(error)}`);\n }\n }\n throw error;\n }\n }\n /**\n * Query helper for SELECT statements\n *\n * @param statement - SELECT statement\n * @param params - Query parameters\n * @returns Array of rows\n */\n async query(statement, params) {\n const result = await this.execute(statement, params);\n return result.rows;\n }\n /**\n * Execute helper for INSERT/UPDATE/DELETE statements\n *\n * @param statement - SQL statement\n * @param params - Statement parameters\n * @returns Number of affected rows and insert ID if applicable\n */\n async run(statement, params) {\n const result = await this.execute(statement, params);\n return {\n rowsAffected: result.rowsAffected,\n insertId: result.insertId,\n };\n }\n}\n","import { Capacitor } from '@capacitor/core';\nimport { NativeSQLConnection } from './native-sql-connection';\nimport { CapgoCapacitorFastSql } from './plugin';\nimport { WebSQLConnection } from './web-sql-connection';\n/**\n * FastSQL - High-level API for managing SQL connections\n *\n * This class provides a convenient interface for opening/closing database connections\n * and managing multiple databases simultaneously.\n */\nexport class FastSQL {\n /**\n * Open a database connection\n *\n * @param options - Connection options\n * @returns SQLConnection instance for executing queries\n */\n static async connect(options) {\n // Check if already connected\n const existing = this.connections.get(options.database);\n if (existing) {\n this.sharedConnections.add(options.database);\n return existing;\n }\n // Connect via native plugin\n const info = await CapgoCapacitorFastSql.connect(options);\n // Create connection instance appropriate for the current platform\n let connection;\n const platform = Capacitor.getPlatform();\n if (platform === 'android' || platform === 'ios') {\n connection = new NativeSQLConnection(info.database, info.port, info.token);\n }\n else {\n connection = new WebSQLConnection(info.database, CapgoCapacitorFastSql);\n }\n // Store connection\n this.connections.set(options.database, connection);\n return connection;\n }\n /**\n * Close a database connection\n *\n * @param database - Database name to close\n */\n static async disconnect(database) {\n var _a;\n const connection = this.connections.get(database);\n if (!connection) {\n throw new Error(`Database '${database}' is not connected`);\n }\n if (((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) > 0) {\n this.pendingDisconnects.add(database);\n return;\n }\n // Disconnect via native plugin\n await CapgoCapacitorFastSql.disconnect({ database });\n // Remove connection\n this.connections.delete(database);\n this.sharedConnections.delete(database);\n this.connectionRetainers.delete(database);\n this.pendingDisconnects.delete(database);\n }\n /**\n * Get an existing connection\n *\n * @param database - Database name\n * @returns SQLConnection instance or null if not connected\n */\n static getConnection(database) {\n return this.connections.get(database) || null;\n }\n /**\n * Check whether a connection has been handed out more than once.\n */\n static isConnectionShared(database) {\n return this.sharedConnections.has(database);\n }\n /**\n * Temporarily retain a connection for helpers that share cached connections.\n */\n static retainConnection(database) {\n var _a;\n if (!this.connections.has(database)) {\n throw new Error(`Database '${database}' is not connected`);\n }\n this.connectionRetainers.set(database, ((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n /**\n * Release a retained connection. Returns true when a pending disconnect closed it.\n */\n static async releaseConnection(database) {\n var _a;\n const retainers = (_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (retainers > 1) {\n this.connectionRetainers.set(database, retainers - 1);\n return false;\n }\n this.connectionRetainers.delete(database);\n if (this.pendingDisconnects.has(database)) {\n this.pendingDisconnects.delete(database);\n await this.disconnect(database);\n return true;\n }\n return false;\n }\n /**\n * Close all open connections\n */\n static async disconnectAll() {\n const databases = Array.from(this.connections.keys());\n await Promise.all(databases.map((db) => {\n this.connectionRetainers.delete(db);\n this.pendingDisconnects.delete(db);\n return this.disconnect(db);\n }));\n }\n /**\n * Get list of all open database connections\n *\n * @returns Array of database names\n */\n static getOpenDatabases() {\n return Array.from(this.connections.keys());\n }\n}\nFastSQL.connections = new Map();\nFastSQL.sharedConnections = new Set();\nFastSQL.connectionRetainers = new Map();\nFastSQL.pendingDisconnects = new Set();\n","import { FastSQL } from './fast-sql';\n/**\n * Key-value storage backed by the FastSQL database connection.\n *\n * This is a lightweight wrapper for mobile-focused secure storage use cases.\n */\nexport class KeyValueStore {\n constructor(connection, store) {\n this.initialized = false;\n this.ownsConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = store;\n }\n /**\n * Open (or create) a key-value store for the given database.\n */\n static async open(options) {\n var _a;\n const connection = await FastSQL.connect(options);\n const store = (_a = options.store) !== null && _a !== void 0 ? _a : 'default';\n const kv = new KeyValueStore(connection, store);\n kv.ownsConnection = true;\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Create a key-value store from an existing SQLConnection.\n * Note: The caller retains ownership and is responsible for closing the connection.\n */\n static async fromConnection(connection, store = 'default') {\n const kv = new KeyValueStore(connection, store);\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Close the key-value store and release resources.\n * Only disconnects the database if this store owns the connection (created via open()).\n */\n async close() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n if (this.ownsConnection) {\n try {\n await FastSQL.disconnect(this.connection.getDatabaseName());\n }\n catch (_a) {\n // Ignore disconnect errors during close.\n }\n }\n this.initialized = false;\n }\n /**\n * Store a value by key.\n */\n async set(key, value) {\n await this.ensureSchema();\n const encoded = this.encodeValue(value);\n await this.connection.run('INSERT OR REPLACE INTO __kv_store (s, k, t, v) VALUES (?, ?, ?, ?)', [\n this.store,\n key,\n encoded.type,\n encoded.value,\n ]);\n }\n /**\n * Retrieve a value by key. Returns null if the key is missing.\n */\n async get(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT t, v FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n if (!rows.length) {\n return null;\n }\n const row = rows[0];\n const type = row.t;\n const value = row.v;\n return this.decodeValue(type, value);\n }\n /**\n * Check if a key exists.\n */\n async has(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT 1 as existsFlag FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n return rows.length > 0;\n }\n /**\n * Remove a single key.\n */\n async remove(key) {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ? AND k = ?', [this.store, key]);\n }\n /**\n * Clear all keys for the current store.\n */\n async clear() {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ?', [this.store]);\n }\n /**\n * List all keys for the current store.\n */\n async keys() {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT k FROM __kv_store WHERE s = ? ORDER BY k', [this.store]);\n return rows.map((row) => String(row.k));\n }\n async ensureSchema() {\n if (this.initialized) {\n return;\n }\n await this.connection.run('CREATE TABLE IF NOT EXISTS __kv_store (s TEXT NOT NULL, k TEXT NOT NULL, t TEXT NOT NULL, v BLOB, PRIMARY KEY (s, k))');\n await this.connection.run('CREATE INDEX IF NOT EXISTS __kv_store_s_idx ON __kv_store (s)');\n this.initialized = true;\n }\n encodeValue(value) {\n if (value === null || value === undefined) {\n return { type: 'null', value: null };\n }\n if (value instanceof Uint8Array) {\n return { type: 'binary', value };\n }\n if (typeof value === 'string') {\n return { type: 'string', value };\n }\n if (typeof value === 'number') {\n return { type: 'number', value };\n }\n if (typeof value === 'boolean') {\n return { type: 'boolean', value: value ? 1 : 0 };\n }\n return { type: 'json', value: JSON.stringify(value) };\n }\n decodeValue(type, value) {\n switch (type) {\n case 'null':\n return null;\n case 'binary':\n return value instanceof Uint8Array ? value : null;\n case 'string':\n return value != null ? String(value) : '';\n case 'number':\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n case 'boolean':\n if (typeof value === 'number') {\n return value !== 0;\n }\n if (typeof value === 'string') {\n return value === '1' || value.toLowerCase() === 'true';\n }\n return Boolean(value);\n case 'json':\n if (typeof value === 'string') {\n try {\n return JSON.parse(value);\n }\n catch (_a) {\n return null;\n }\n }\n return null;\n default:\n return value;\n }\n }\n}\n","import { FastSQL } from './fast-sql';\nconst DEFAULT_STORE = 'default';\nconst VECTOR_TABLE = '__fast_sql_vector_store';\nconst VECTOR_META_TABLE = '__fast_sql_vector_store_meta';\n/**\n * SQLite-backed VectorStore for local RAG usage.\n *\n * The helper is optional and dependency-free: pass your own embeddings provider,\n * or use precomputed embeddings with `embeddingDimension`. Multiple stores can\n * share one database by choosing different `store` names.\n */\nexport class FastSQLVectorStore {\n constructor(connection, options = {}) {\n var _a;\n this.initialized = false;\n this.ownsConnection = false;\n this.shouldDisconnectConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = (_a = options.store) !== null && _a !== void 0 ? _a : DEFAULT_STORE;\n this.embeddings = options.embeddings;\n this.configuredEmbeddingDim = options.embeddingDimension;\n this.embeddingDim = options.embeddingDimension;\n }\n static retainConnection(database) {\n var _a;\n this.connectionRefs.set(database, ((_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n static releaseConnection(database) {\n var _a;\n const refs = (_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (refs > 1) {\n this.connectionRefs.set(database, refs - 1);\n return false;\n }\n this.connectionRefs.delete(database);\n this.ownedConnections.delete(database);\n return true;\n }\n /**\n * Open a vector store from database connection options.\n */\n static async open(options) {\n const existing = FastSQL.getConnection(options.database);\n const ownsExistingVectorConnection = existing && FastSQLVectorStore.connectionRefs.has(options.database);\n const connection = ownsExistingVectorConnection ? existing : await FastSQL.connect(options);\n const vectorStore = new FastSQLVectorStore(connection, options);\n vectorStore.ownsConnection = true;\n vectorStore.shouldDisconnectConnection = !existing || FastSQLVectorStore.ownedConnections.has(options.database);\n FastSQLVectorStore.retainConnection(connection.getDatabaseName());\n FastSQL.retainConnection(connection.getDatabaseName());\n if (vectorStore.shouldDisconnectConnection) {\n FastSQLVectorStore.ownedConnections.add(connection.getDatabaseName());\n }\n try {\n await vectorStore.load();\n return vectorStore;\n }\n catch (error) {\n await vectorStore.unload();\n throw error;\n }\n }\n /**\n * Create a vector store from an existing SQL connection.\n * The caller keeps ownership of the connection.\n */\n static async fromConnection(connection, options = {}) {\n const vectorStore = new FastSQLVectorStore(connection, options);\n await vectorStore.load();\n return vectorStore;\n }\n getStoreName() {\n return this.store;\n }\n getDatabaseName() {\n return this.connection.getDatabaseName();\n }\n async load() {\n var _a, _b;\n this.assertOpen();\n if (this.initialized) {\n return this;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.load) === null || _b === void 0 ? void 0 : _b.call(_a));\n await this.ensureSchema();\n await this.ensureStoreDimension();\n this.initialized = true;\n return this;\n }\n async unload() {\n var _a, _b;\n if (this.closed) {\n return;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.unload) === null || _b === void 0 ? void 0 : _b.call(_a));\n if (this.ownsConnection) {\n const database = this.connection.getDatabaseName();\n const releasedLastVectorStore = FastSQLVectorStore.releaseConnection(database);\n const closedFromPendingDisconnect = await FastSQL.releaseConnection(database);\n if (releasedLastVectorStore &&\n this.shouldDisconnectConnection &&\n !FastSQL.isConnectionShared(database) &&\n !closedFromPendingDisconnect) {\n await FastSQL.disconnect(database);\n }\n }\n this.initialized = false;\n this.closed = true;\n }\n async close() {\n await this.unload();\n }\n async add(params) {\n await this.ensureReady();\n const { id = this.createId(), document, embedding, metadata } = params;\n if (document === undefined && embedding === undefined) {\n throw new Error('document and embedding cannot both be undefined');\n }\n const existing = await this.connection.query(`SELECT 1 FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [\n this.store,\n id,\n ]);\n if (existing.length > 0) {\n throw new Error(`id already exists: ${id}`);\n }\n const resolvedEmbedding = embedding !== null && embedding !== void 0 ? embedding : (await this.embedDocument(document));\n await this.ensureEmbeddingDimension(resolvedEmbedding);\n const now = Date.now();\n await this.connection.run(`INSERT INTO ${VECTOR_TABLE} (store, id, document, embedding, metadata, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)`, [\n this.store,\n id,\n document !== null && document !== void 0 ? document : '',\n this.encodeEmbedding(resolvedEmbedding),\n this.encodeMetadata(metadata),\n now,\n now,\n ]);\n return id;\n }\n async update(params) {\n var _a, _b;\n await this.ensureReady();\n const rows = await this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [this.store, params.id]);\n if (rows.length === 0) {\n throw new Error(`id not found: ${params.id}`);\n }\n const current = this.rowToGetResult(rows[0]);\n const document = (_a = params.document) !== null && _a !== void 0 ? _a : current.document;\n const embedding = (_b = params.embedding) !== null && _b !== void 0 ? _b : (params.document !== undefined ? await this.embedDocument(params.document) : current.embedding);\n const metadata = params.metadata === undefined ? current.metadata : params.metadata;\n await this.ensureEmbeddingDimension(embedding);\n await this.connection.run(`UPDATE ${VECTOR_TABLE}\n SET document = ?, embedding = ?, metadata = ?, updated_at = ?\n WHERE store = ? AND id = ?`, [document, this.encodeEmbedding(embedding), this.encodeMetadata(metadata), Date.now(), this.store, params.id]);\n }\n async delete(params) {\n await this.ensureReady();\n const rows = await this.getStoreRows();\n const ids = rows\n .map((row) => this.rowToGetResult(row))\n .filter(params.predicate)\n .map((row) => row.id);\n for (const id of ids) {\n await this.connection.run(`DELETE FROM ${VECTOR_TABLE} WHERE store = ? AND id = ?`, [this.store, id]);\n }\n }\n async query(params) {\n await this.ensureReady();\n const { queryText, queryEmbedding, nResults, predicate } = params;\n if (queryText === undefined && queryEmbedding === undefined) {\n throw new Error('queryText and queryEmbedding cannot both be undefined');\n }\n if (nResults !== undefined && nResults < 0) {\n throw new Error('nResults cannot be negative');\n }\n const searchEmbedding = queryEmbedding !== null && queryEmbedding !== void 0 ? queryEmbedding : (await this.embedDocument(queryText));\n await this.ensureEmbeddingDimension(searchEmbedding);\n const results = (await this.getStoreRows())\n .map((row) => {\n const item = this.rowToGetResult(row);\n return Object.assign(Object.assign({}, item), { similarity: this.cosineSimilarity(item.embedding, searchEmbedding) });\n })\n .filter(predicate !== null && predicate !== void 0 ? predicate : (() => true))\n .sort((a, b) => b.similarity - a.similarity);\n return nResults === undefined ? results : results.slice(0, nResults);\n }\n /**\n * Delete only this logical vector store. Other stores in the same database stay intact.\n */\n async deleteVectorStore() {\n await this.ensureReady();\n await this.connection.run(`DELETE FROM ${VECTOR_TABLE} WHERE store = ?`, [this.store]);\n await this.connection.run(`DELETE FROM ${VECTOR_META_TABLE} WHERE store = ?`, [this.store]);\n this.embeddingDim = this.configuredEmbeddingDim;\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n async ensureReady() {\n this.assertOpen();\n if (!this.initialized) {\n await this.load();\n }\n }\n assertOpen() {\n if (this.closed) {\n throw new Error('Vector store is closed');\n }\n }\n async ensureSchema() {\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_TABLE} (\n store TEXT NOT NULL,\n id TEXT NOT NULL,\n document TEXT NOT NULL,\n embedding BLOB NOT NULL,\n metadata TEXT DEFAULT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n PRIMARY KEY (store, id)\n )`);\n await this.connection.run(`CREATE INDEX IF NOT EXISTS ${VECTOR_TABLE}_store_idx ON ${VECTOR_TABLE} (store)`);\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_META_TABLE} (\n store TEXT PRIMARY KEY,\n embedding_dim INTEGER NOT NULL\n )`);\n }\n async ensureStoreDimension() {\n const rows = await this.connection.query(`SELECT embedding_dim FROM ${VECTOR_META_TABLE} WHERE store = ? LIMIT 1`, [\n this.store,\n ]);\n const storedDim = this.parseStoredDimension(rows[0]);\n if (storedDim !== undefined && this.embeddingDim !== undefined && storedDim !== this.embeddingDim) {\n throw new Error(`embedding dimension ${this.embeddingDim} does not match existing store dimension ${storedDim}`);\n }\n if (this.embeddingDim === undefined) {\n this.embeddingDim = storedDim !== null && storedDim !== void 0 ? storedDim : (this.embeddings ? (await this.embedDocument('dummy')).length : undefined);\n }\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n parseStoredDimension(row) {\n if (!row) {\n return undefined;\n }\n const value = row.embedding_dim;\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n }\n async saveEmbeddingDimension() {\n if (this.embeddingDim === undefined) {\n return;\n }\n await this.connection.run(`INSERT OR REPLACE INTO ${VECTOR_META_TABLE} (store, embedding_dim) VALUES (?, ?)`, [\n this.store,\n this.embeddingDim,\n ]);\n }\n async ensureEmbeddingDimension(embedding) {\n this.validateEmbedding(embedding);\n if (this.embeddingDim === undefined) {\n this.embeddingDim = embedding.length;\n await this.saveEmbeddingDimension();\n return;\n }\n if (embedding.length !== this.embeddingDim) {\n throw new Error(`embedding dimension ${embedding.length} does not match vector store dimension ${this.embeddingDim}`);\n }\n }\n async embedDocument(document) {\n if (document === undefined) {\n throw new Error('document is required when embedding is not provided');\n }\n if (!this.embeddings) {\n throw new Error('embeddings provider is required for text operations');\n }\n return this.embeddings.embed(document);\n }\n validateEmbedding(embedding) {\n if (!Array.isArray(embedding) || embedding.length === 0) {\n throw new Error('embedding must be a non-empty number array');\n }\n for (const value of embedding) {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new Error('embedding values must be finite numbers');\n }\n }\n }\n async getStoreRows() {\n return this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? ORDER BY updated_at DESC`, [this.store]);\n }\n rowToGetResult(row) {\n const result = {\n id: String(row.id),\n document: row.document === null || row.document === undefined ? '' : String(row.document),\n embedding: this.decodeEmbedding(row.embedding),\n };\n const metadata = this.decodeMetadata(row.metadata);\n if (metadata !== undefined) {\n result.metadata = metadata;\n }\n return result;\n }\n encodeEmbedding(embedding) {\n const bytes = new Uint8Array(embedding.length * Float32Array.BYTES_PER_ELEMENT);\n const view = new DataView(bytes.buffer);\n embedding.forEach((value, index) => view.setFloat32(index * Float32Array.BYTES_PER_ELEMENT, value, true));\n return bytes;\n }\n decodeEmbedding(value) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('stored embedding is not binary data');\n }\n if (value.byteLength % Float32Array.BYTES_PER_ELEMENT !== 0) {\n throw new Error('stored embedding has invalid byte length');\n }\n const view = new DataView(value.buffer, value.byteOffset, value.byteLength);\n const embedding = [];\n for (let offset = 0; offset < value.byteLength; offset += Float32Array.BYTES_PER_ELEMENT) {\n embedding.push(view.getFloat32(offset, true));\n }\n return embedding;\n }\n encodeMetadata(metadata) {\n return metadata ? JSON.stringify(metadata) : null;\n }\n decodeMetadata(value) {\n if (typeof value !== 'string' || value.length === 0) {\n return undefined;\n }\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;\n }\n catch (_a) {\n return undefined;\n }\n }\n cosineSimilarity(a, b) {\n if (a.length !== b.length) {\n throw new Error(`embedding dimension ${b.length} does not match stored embedding dimension ${a.length}`);\n }\n let dot = 0;\n let normA = 0;\n let normB = 0;\n for (let i = 0; i < a.length; i++) {\n dot += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n if (normA === 0 || normB === 0) {\n return 0;\n }\n return dot / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n createId() {\n const cryptoApi = globalThis.crypto;\n if (typeof (cryptoApi === null || cryptoApi === void 0 ? void 0 : cryptoApi.randomUUID) === 'function') {\n return cryptoApi.randomUUID();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const value = Math.floor(Math.random() * 16);\n const nibble = char === 'x' ? value : (value & 0x3) | 0x8;\n return nibble.toString(16);\n });\n }\n}\nFastSQLVectorStore.connectionRefs = new Map();\nFastSQLVectorStore.ownedConnections = new Set();\n","//#region src/bin/sqlite3-worker1-promiser.mjs\n/**\nConfigures an sqlite3 Worker API #1 Worker such that it can be\nmanipulated via a Promise-based interface and returns a factory\nfunction which returns Promises for communicating with the worker.\nThis proxy has an _almost_ identical interface to the normal\nworker API, with any exceptions documented below.\n\nIt requires a configuration object with the following properties:\n\n- `worker` (required): a Worker instance which loads\n`sqlite3-worker1.js` or a functional equivalent. Note that the\npromiser factory replaces the worker.onmessage property. This\nconfig option may alternately be a function, in which case this\nfunction re-assigns this property with the result of calling that\nfunction, enabling delayed instantiation of a Worker.\n\n- `onready` (optional, but...): this callback is called with no\narguments when the worker fires its initial\n'sqlite3-api'/'worker1-ready' message, which it does when\nsqlite3.initWorker1API() completes its initialization. This is the\nsimplest way to tell the worker to kick off work at the earliest\nopportunity, and the only way to know when the worker module has\ncompleted loading. The irony of using a callback for this, instead\nof returning a promise from sqlite3Worker1Promiser() is not lost on\nthe developers: see sqlite3Worker1Promiser.v2() which uses a\nPromise instead.\n\n- `onunhandled` (optional): a callback which gets passed the\nmessage event object for any worker.onmessage() events which\nare not handled by this proxy. Ideally that \"should\" never\nhappen, as this proxy aims to handle all known message types.\n\n- `generateMessageId` (optional): a function which, when passed an\nabout-to-be-posted message object, generates a _unique_ message ID\nfor the message, which this API then assigns as the messageId\nproperty of the message. It _must_ generate unique IDs on each call\nso that dispatching can work. If not defined, a default generator\nis used (which should be sufficient for most or all cases).\n\n- `debug` (optional): a console.debug()-style function for logging\ninformation about messages.\n\nThis function returns a stateful factory function with the\nfollowing interfaces:\n\n- Promise function(messageType, messageArgs)\n- Promise function({message object})\n\nThe first form expects the \"type\" and \"args\" values for a Worker\nmessage. The second expects an object in the form {type:...,\nargs:...} plus any other properties the client cares to set. This\nfunction will always set the `messageId` property on the object,\neven if it's already set, and will set the `dbId` property to the\ncurrent database ID if it is _not_ set in the message object.\n\nThe function throws on error.\n\nThe function installs a temporary message listener, posts a\nmessage to the configured Worker, and handles the message's\nresponse via the temporary message listener. The then() callback\nof the returned Promise is passed the `message.data` property from\nthe resulting message, i.e. the payload from the worker, stripped\nof the lower-level event state which the onmessage() handler\nreceives.\n\nExample usage:\n\n```\nconst config = {...};\nconst sq3Promiser = sqlite3Worker1Promiser(config);\nsq3Promiser('open', {filename:\"/foo.db\"}).then(function(msg){\nconsole.log(\"open response\",msg); // => {type:'open', result: {filename:'/foo.db'}, ...}\n});\nsq3Promiser({type:'close'}).then((msg)=>{\nconsole.log(\"close response\",msg); // => {type:'close', result: {filename:'/foo.db'}, ...}\n});\n```\n\nDifferences from Worker API #1:\n\n- exec's {callback: STRING} option does not work via this\ninterface (it triggers an exception), but {callback: function}\ndoes and works exactly like the STRING form does in the Worker:\nthe callback is called one time for each row of the result set,\npassed the same worker message format as the worker API emits:\n\n{\ntype:typeString,\nrow:VALUE,\nrowNumber:1-based-#,\ncolumnNames: array\n}\n\nWhere `typeString` is an internally-synthesized message type string\nused temporarily for worker message dispatching. It can be ignored\nby all client code except that which tests this API. The `row`\nproperty contains the row result in the form implied by the\n`rowMode` option (defaulting to `'array'`). The `rowNumber` is a\n1-based integer value incremented by 1 on each call into the\ncallback.\n\nAt the end of the result set, the same event is fired with\n(row=undefined, rowNumber=null) to indicate that the end of the\nresult set has been reached. The rows arrive via worker-posted\nmessages, with all the implications of that.\n\nNotable shortcomings:\n\n- \"v1\" of this this API is not suitable for use as an ESM module\nbecause ESM worker modules were not widely supported when it was\ndeveloped. For use as an ESM module, see the \"v2\" interface later\non in this file.\n*/\nglobalThis.sqlite3Worker1Promiser = function callee(config = callee.defaultConfig) {\n\tif (1 === arguments.length && \"function\" === typeof arguments[0]) {\n\t\tconst f = config;\n\t\tconfig = Object.assign(Object.create(null), callee.defaultConfig);\n\t\tconfig.onready = f;\n\t} else config = Object.assign(Object.create(null), callee.defaultConfig, config);\n\tconst handlerMap = Object.create(null);\n\tconst noop = function() {};\n\tconst err = config.onerror || noop;\n\tconst debug = config.debug || noop;\n\tconst idTypeMap = config.generateMessageId ? void 0 : Object.create(null);\n\tconst genMsgId = config.generateMessageId || function(msg) {\n\t\treturn msg.type + \"#\" + (idTypeMap[msg.type] = (idTypeMap[msg.type] || 0) + 1);\n\t};\n\tconst toss = (...args) => {\n\t\tthrow new Error(args.join(\" \"));\n\t};\n\tif (!config.worker) config.worker = callee.defaultConfig.worker;\n\tif (\"function\" === typeof config.worker) config.worker = config.worker();\n\tlet dbId;\n\tlet promiserFunc;\n\tconfig.worker.onmessage = function(ev) {\n\t\tev = ev.data;\n\t\tdebug(\"worker1.onmessage\", ev);\n\t\tlet msgHandler = handlerMap[ev.messageId];\n\t\tif (!msgHandler) {\n\t\t\tif (ev && \"sqlite3-api\" === ev.type && \"worker1-ready\" === ev.result) {\n\t\t\t\tif (config.onready) config.onready(promiserFunc);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmsgHandler = handlerMap[ev.type];\n\t\t\tif (msgHandler && msgHandler.onrow) {\n\t\t\t\tmsgHandler.onrow(ev);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (config.onunhandled) config.onunhandled(arguments[0]);\n\t\t\telse err(\"sqlite3Worker1Promiser() unhandled worker message:\", ev);\n\t\t\treturn;\n\t\t}\n\t\tdelete handlerMap[ev.messageId];\n\t\tswitch (ev.type) {\n\t\t\tcase \"error\":\n\t\t\t\tmsgHandler.reject(ev);\n\t\t\t\treturn;\n\t\t\tcase \"open\":\n\t\t\t\tif (!dbId) dbId = ev.dbId;\n\t\t\t\tbreak;\n\t\t\tcase \"close\":\n\t\t\t\tif (ev.dbId === dbId) dbId = void 0;\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t\ttry {\n\t\t\tmsgHandler.resolve(ev);\n\t\t} catch (e) {\n\t\t\tmsgHandler.reject(e);\n\t\t}\n\t};\n\treturn promiserFunc = function() {\n\t\tlet msg;\n\t\tif (1 === arguments.length) msg = arguments[0];\n\t\telse if (2 === arguments.length) {\n\t\t\tmsg = Object.create(null);\n\t\t\tmsg.type = arguments[0];\n\t\t\tmsg.args = arguments[1];\n\t\t\tmsg.dbId = msg.args.dbId;\n\t\t} else toss(\"Invalid arguments for sqlite3Worker1Promiser()-created factory.\");\n\t\tif (!msg.dbId && msg.type !== \"open\") msg.dbId = dbId;\n\t\tmsg.messageId = genMsgId(msg);\n\t\tmsg.departureTime = performance.now();\n\t\tconst proxy = Object.create(null);\n\t\tproxy.message = msg;\n\t\tlet rowCallbackId;\n\t\tif (\"exec\" === msg.type && msg.args) {\n\t\t\tif (\"function\" === typeof msg.args.callback) {\n\t\t\t\trowCallbackId = msg.messageId + \":row\";\n\t\t\t\tproxy.onrow = msg.args.callback;\n\t\t\t\tmsg.args.callback = rowCallbackId;\n\t\t\t\thandlerMap[rowCallbackId] = proxy;\n\t\t\t} else if (\"string\" === typeof msg.args.callback) toss(\"exec callback may not be a string when using the Promise interface.\");\n\t\t}\n\t\tlet p = new Promise(function(resolve, reject) {\n\t\t\tproxy.resolve = resolve;\n\t\t\tproxy.reject = reject;\n\t\t\thandlerMap[msg.messageId] = proxy;\n\t\t\tdebug(\"Posting\", msg.type, \"message to Worker dbId=\" + (dbId || \"default\") + \":\", msg);\n\t\t\tconfig.worker.postMessage(msg);\n\t\t});\n\t\tif (rowCallbackId) p = p.finally(() => delete handlerMap[rowCallbackId]);\n\t\treturn p;\n\t};\n};\nglobalThis.sqlite3Worker1Promiser.defaultConfig = {\n\tworker: function() {\n\t\treturn new Worker(new URL(\"sqlite3-worker1.mjs\", import.meta.url), { type: \"module\" });\n\t},\n\tonerror: (...args) => console.error(\"sqlite3Worker1Promiser():\", ...args)\n};\n/**\nsqlite3Worker1Promiser.v2(), added in 3.46, works identically to\nsqlite3Worker1Promiser() except that it returns a Promise instead\nof relying an an onready callback in the config object. The Promise\nresolves to the same factory function which\nsqlite3Worker1Promiser() returns.\n\nIf config is-a function or is an object which contains an onready\nfunction, that function is replaced by a proxy which will resolve\nafter calling the original function and will reject if that\nfunction throws.\n*/\nglobalThis.sqlite3Worker1Promiser.v2 = function callee(config = callee.defaultConfig) {\n\tlet oldFunc;\n\tif (\"function\" == typeof config) {\n\t\toldFunc = config;\n\t\tconfig = {};\n\t} else if (\"function\" === typeof config?.onready) {\n\t\toldFunc = config.onready;\n\t\tdelete config.onready;\n\t}\n\tconst promiseProxy = Object.create(null);\n\tconfig = Object.assign(config || Object.create(null), { onready: async function(func) {\n\t\ttry {\n\t\t\tif (oldFunc) await oldFunc(func);\n\t\t\tpromiseProxy.resolve(func);\n\t\t} catch (e) {\n\t\t\tpromiseProxy.reject(e);\n\t\t}\n\t} });\n\tconst p = new Promise(function(resolve, reject) {\n\t\tpromiseProxy.resolve = resolve;\n\t\tpromiseProxy.reject = reject;\n\t});\n\ttry {\n\t\tthis.original(config);\n\t} catch (e) {\n\t\tpromiseProxy.reject(e);\n\t}\n\treturn p;\n}.bind({ original: sqlite3Worker1Promiser });\nglobalThis.sqlite3Worker1Promiser.v2.defaultConfig = globalThis.sqlite3Worker1Promiser.defaultConfig;\n/**\nWhen built as a module, we export sqlite3Worker1Promiser.v2()\ninstead of sqlite3Worker1Promise() because (A) its interface is more\nconventional for ESM usage and (B) the ESM export option for this\nAPI did not exist until v2 was created, so there's no backwards\nincompatibility.\n*/\nvar sqlite3_worker1_promiser_default = sqlite3Worker1Promiser.v2;\ndelete globalThis.sqlite3Worker1Promiser;\n//#endregion\n//#region src/bin/sqlite3-bundler-friendly.mjs\n/* @preserve\n**\n** LICENSE for the sqlite3 WebAssembly/JavaScript APIs.\n**\n** This bundle (typically released as sqlite3.js or sqlite3.mjs)\n** is an amalgamation of JavaScript source code from two projects:\n**\n** 1) https://emscripten.org: the Emscripten \"glue code\" is covered by\n** the terms of the MIT license and University of Illinois/NCSA\n** Open Source License, as described at:\n**\n** https://emscripten.org/docs/introducing_emscripten/emscripten_license.html\n**\n** 2) https://sqlite.org: all code and documentation labeled as being\n** from this source are released under the same terms as the sqlite3\n** C library:\n**\n** 2022-10-16\n**\n** The author disclaims copyright to this source code. In place of a\n** legal notice, here is a blessing:\n**\n** * May you do good and not evil.\n** * May you find forgiveness for yourself and forgive others.\n** * May you share freely, never taking more than you give.\n*/\n/* @preserve\n** This code was built from sqlite3 version...\n**\n** SQLITE_VERSION \"3.53.0\"\n** SQLITE_VERSION_NUMBER 3053000\n** SQLITE_SOURCE_ID \"2026-04-09 11:41:38 4525003a53a7fc63ca75c59b22c79608659ca12f0131f52c18637f829977f20b\"\n**\n** Emscripten SDK: 5.0.5\n*/\nasync function sqlite3InitModule(moduleArg = {}) {\n\tvar moduleRtn;\n\tvar Module = moduleArg;\n\tvar ENVIRONMENT_IS_WEB = !!globalThis.window;\n\tvar ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope;\n\tglobalThis.process?.versions?.node && globalThis.process?.type;\n\tvar thisProgram = \"./this.program\";\n\tvar _scriptName = import.meta.url;\n\tvar scriptDirectory = \"\";\n\tfunction locateFile(path) {\n\t\tif (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n\t\treturn scriptDirectory + path;\n\t}\n\tvar readAsync, readBinary;\n\tif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n\t\ttry {\n\t\t\tscriptDirectory = new URL(\".\", _scriptName).href;\n\t\t} catch {}\n\t\tif (ENVIRONMENT_IS_WORKER) readBinary = (url) => {\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open(\"GET\", url, false);\n\t\t\txhr.responseType = \"arraybuffer\";\n\t\t\txhr.send(null);\n\t\t\treturn new Uint8Array(xhr.response);\n\t\t};\n\t\treadAsync = async (url) => {\n\t\t\tvar response = await fetch(url, { credentials: \"same-origin\" });\n\t\t\tif (response.ok) return response.arrayBuffer();\n\t\t\tthrow new Error(response.status + \" : \" + response.url);\n\t\t};\n\t}\n\tvar out = console.log.bind(console);\n\tvar err = console.error.bind(console);\n\tvar wasmBinary;\n\tvar ABORT = false;\n\tvar readyPromiseResolve, readyPromiseReject;\n\tvar runtimeInitialized = false;\n\tfunction updateMemoryViews() {\n\t\tvar b = wasmMemory.buffer;\n\t\tHEAP8 = new Int8Array(b);\n\t\tHEAP16 = new Int16Array(b);\n\t\tHEAPU8 = new Uint8Array(b);\n\t\tHEAPU16 = new Uint16Array(b);\n\t\tHEAP32 = new Int32Array(b);\n\t\tHEAPU32 = new Uint32Array(b);\n\t\tHEAPF32 = new Float32Array(b);\n\t\tHEAPF64 = new Float64Array(b);\n\t\tHEAP64 = new BigInt64Array(b);\n\t\tHEAPU64 = new BigUint64Array(b);\n\t}\n\tfunction initMemory() {\n\t\tif (Module[\"wasmMemory\"]) wasmMemory = Module[\"wasmMemory\"];\n\t\telse {\n\t\t\tvar INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 8388608;\n\t\t\t/** @suppress {checkTypes} */\n\t\t\twasmMemory = new WebAssembly.Memory({\n\t\t\t\t\"initial\": INITIAL_MEMORY / 65536,\n\t\t\t\t\"maximum\": 32768\n\t\t\t});\n\t\t}\n\t\tupdateMemoryViews();\n\t}\n\tfunction preRun() {\n\t\tif (Module[\"preRun\"]) {\n\t\t\tif (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n\t\t\twhile (Module[\"preRun\"].length) addOnPreRun(Module[\"preRun\"].shift());\n\t\t}\n\t\tcallRuntimeCallbacks(onPreRuns);\n\t}\n\tfunction initRuntime() {\n\t\truntimeInitialized = true;\n\t\tif (!Module[\"noFSInit\"] && !FS.initialized) FS.init();\n\t\tTTY.init();\n\t\twasmExports[\"__wasm_call_ctors\"]();\n\t\tFS.ignorePermissions = false;\n\t}\n\tfunction postRun() {\n\t\tif (Module[\"postRun\"]) {\n\t\t\tif (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n\t\t\twhile (Module[\"postRun\"].length) addOnPostRun(Module[\"postRun\"].shift());\n\t\t}\n\t\tcallRuntimeCallbacks(onPostRuns);\n\t}\n\t/**\n\t* @param {string|number=} what\n\t* @noreturn\n\t*/\n\tfunction abort(what) {\n\t\tModule[\"onAbort\"]?.(what);\n\t\twhat = `Aborted(${what})`;\n\t\terr(what);\n\t\tABORT = true;\n\t\twhat += \". Build with -sASSERTIONS for more info.\";\n\t\t/** @suppress {checkTypes} */\n\t\tvar e = new WebAssembly.RuntimeError(what);\n\t\treadyPromiseReject?.(e);\n\t\tthrow e;\n\t}\n\tvar wasmBinaryFile;\n\tfunction findWasmBinary() {\n\t\tif (Module[\"locateFile\"]) return locateFile(\"sqlite3.wasm\");\n\t\treturn new URL(\"sqlite3.wasm\", import.meta.url).href;\n\t}\n\tfunction getBinarySync(file) {\n\t\tif (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n\t\tif (readBinary) return readBinary(file);\n\t\tthrow \"both async and sync fetching of the wasm failed\";\n\t}\n\tasync function getWasmBinary(binaryFile) {\n\t\tif (!wasmBinary) try {\n\t\t\tvar response = await readAsync(binaryFile);\n\t\t\treturn new Uint8Array(response);\n\t\t} catch {}\n\t\treturn getBinarySync(binaryFile);\n\t}\n\tasync function instantiateArrayBuffer(binaryFile, imports) {\n\t\ttry {\n\t\t\tvar binary = await getWasmBinary(binaryFile);\n\t\t\treturn await WebAssembly.instantiate(binary, imports);\n\t\t} catch (reason) {\n\t\t\terr(`failed to asynchronously prepare wasm: ${reason}`);\n\t\t\tabort(reason);\n\t\t}\n\t}\n\tasync function instantiateAsync(binary, binaryFile, imports) {\n\t\tif (!binary) try {\n\t\t\tvar response = fetch(binaryFile, { credentials: \"same-origin\" });\n\t\t\treturn await WebAssembly.instantiateStreaming(response, imports);\n\t\t} catch (reason) {\n\t\t\terr(`wasm streaming compile failed: ${reason}`);\n\t\t\terr(\"falling back to ArrayBuffer instantiation\");\n\t\t}\n\t\treturn instantiateArrayBuffer(binaryFile, imports);\n\t}\n\tfunction getWasmImports() {\n\t\treturn {\n\t\t\t\"env\": wasmImports,\n\t\t\t\"wasi_snapshot_preview1\": wasmImports\n\t\t};\n\t}\n\tasync function createWasm() {\n\t\t/** @param {WebAssembly.Module=} module*/\n\t\tfunction receiveInstance(instance, module) {\n\t\t\twasmExports = instance.exports;\n\t\t\tassignWasmExports(wasmExports);\n\t\t\treturn wasmExports;\n\t\t}\n\t\tfunction receiveInstantiationResult(result) {\n\t\t\treturn receiveInstance(result[\"instance\"]);\n\t\t}\n\t\tvar info = getWasmImports();\n\t\tif (Module[\"instantiateWasm\"]) return new Promise((resolve, reject) => {\n\t\t\tModule[\"instantiateWasm\"](info, (inst, mod) => {\n\t\t\t\tresolve(receiveInstance(inst, mod));\n\t\t\t});\n\t\t});\n\t\twasmBinaryFile ??= findWasmBinary();\n\t\treturn receiveInstantiationResult(await instantiateAsync(wasmBinary, wasmBinaryFile, info));\n\t}\n\t/** @type {!Int16Array} */\n\tvar HEAP16;\n\t/** @type {!Int32Array} */\n\tvar HEAP32;\n\t/** not-@type {!BigInt64Array} */\n\tvar HEAP64;\n\t/** @type {!Int8Array} */\n\tvar HEAP8;\n\t/** @type {!Float32Array} */\n\tvar HEAPF32;\n\t/** @type {!Float64Array} */\n\tvar HEAPF64;\n\t/** @type {!Uint16Array} */\n\tvar HEAPU16;\n\t/** @type {!Uint32Array} */\n\tvar HEAPU32;\n\t/** not-@type {!BigUint64Array} */\n\tvar HEAPU64;\n\t/** @type {!Uint8Array} */\n\tvar HEAPU8;\n\tvar callRuntimeCallbacks = (callbacks) => {\n\t\twhile (callbacks.length > 0) callbacks.shift()(Module);\n\t};\n\tvar onPostRuns = [];\n\tvar addOnPostRun = (cb) => onPostRuns.push(cb);\n\tvar onPreRuns = [];\n\tvar addOnPreRun = (cb) => onPreRuns.push(cb);\n\tvar wasmMemory;\n\tvar PATH = {\n\t\tisAbs: (path) => path.charAt(0) === \"/\",\n\t\tsplitPath: (filename) => {\n\t\t\treturn /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(filename).slice(1);\n\t\t},\n\t\tnormalizeArray: (parts, allowAboveRoot) => {\n\t\t\tvar up = 0;\n\t\t\tfor (var i = parts.length - 1; i >= 0; i--) {\n\t\t\t\tvar last = parts[i];\n\t\t\t\tif (last === \".\") parts.splice(i, 1);\n\t\t\t\telse if (last === \"..\") {\n\t\t\t\t\tparts.splice(i, 1);\n\t\t\t\t\tup++;\n\t\t\t\t} else if (up) {\n\t\t\t\t\tparts.splice(i, 1);\n\t\t\t\t\tup--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (allowAboveRoot) for (; up; up--) parts.unshift(\"..\");\n\t\t\treturn parts;\n\t\t},\n\t\tnormalize: (path) => {\n\t\t\tvar isAbsolute = PATH.isAbs(path), trailingSlash = path.slice(-1) === \"/\";\n\t\t\tpath = PATH.normalizeArray(path.split(\"/\").filter((p) => !!p), !isAbsolute).join(\"/\");\n\t\t\tif (!path && !isAbsolute) path = \".\";\n\t\t\tif (path && trailingSlash) path += \"/\";\n\t\t\treturn (isAbsolute ? \"/\" : \"\") + path;\n\t\t},\n\t\tdirname: (path) => {\n\t\t\tvar result = PATH.splitPath(path), root = result[0], dir = result[1];\n\t\t\tif (!root && !dir) return \".\";\n\t\t\tif (dir) dir = dir.slice(0, -1);\n\t\t\treturn root + dir;\n\t\t},\n\t\tbasename: (path) => path && path.match(/([^\\/]+|\\/)\\/*$/)[1],\n\t\tjoin: (...paths) => PATH.normalize(paths.join(\"/\")),\n\t\tjoin2: (l, r) => PATH.normalize(l + \"/\" + r)\n\t};\n\tvar initRandomFill = () => {\n\t\treturn (view) => (crypto.getRandomValues(view), 0);\n\t};\n\tvar randomFill = (view) => (randomFill = initRandomFill())(view);\n\tvar PATH_FS = {\n\t\tresolve: (...args) => {\n\t\t\tvar resolvedPath = \"\", resolvedAbsolute = false;\n\t\t\tfor (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n\t\t\t\tvar path = i >= 0 ? args[i] : FS.cwd();\n\t\t\t\tif (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n\t\t\t\telse if (!path) return \"\";\n\t\t\t\tresolvedPath = path + \"/\" + resolvedPath;\n\t\t\t\tresolvedAbsolute = PATH.isAbs(path);\n\t\t\t}\n\t\t\tresolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p) => !!p), !resolvedAbsolute).join(\"/\");\n\t\t\treturn (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n\t\t},\n\t\trelative: (from, to) => {\n\t\t\tfrom = PATH_FS.resolve(from).slice(1);\n\t\t\tto = PATH_FS.resolve(to).slice(1);\n\t\t\tfunction trim(arr) {\n\t\t\t\tvar start = 0;\n\t\t\t\tfor (; start < arr.length; start++) if (arr[start] !== \"\") break;\n\t\t\t\tvar end = arr.length - 1;\n\t\t\t\tfor (; end >= 0; end--) if (arr[end] !== \"\") break;\n\t\t\t\tif (start > end) return [];\n\t\t\t\treturn arr.slice(start, end - start + 1);\n\t\t\t}\n\t\t\tvar fromParts = trim(from.split(\"/\"));\n\t\t\tvar toParts = trim(to.split(\"/\"));\n\t\t\tvar length = Math.min(fromParts.length, toParts.length);\n\t\t\tvar samePartsLength = length;\n\t\t\tfor (var i = 0; i < length; i++) if (fromParts[i] !== toParts[i]) {\n\t\t\t\tsamePartsLength = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar outputParts = [];\n\t\t\tfor (var i = samePartsLength; i < fromParts.length; i++) outputParts.push(\"..\");\n\t\t\toutputParts = outputParts.concat(toParts.slice(samePartsLength));\n\t\t\treturn outputParts.join(\"/\");\n\t\t}\n\t};\n\tvar UTF8Decoder = new TextDecoder();\n\tvar findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => {\n\t\tvar maxIdx = idx + maxBytesToRead;\n\t\tif (ignoreNul) return maxIdx;\n\t\twhile (heapOrArray[idx] && !(idx >= maxIdx)) ++idx;\n\t\treturn idx;\n\t};\n\t/**\n\t* Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given\n\t* array that contains uint8 values, returns a copy of that string as a\n\t* Javascript String object.\n\t* heapOrArray is either a regular array, or a JavaScript typed array view.\n\t* @param {number=} idx\n\t* @param {number=} maxBytesToRead\n\t* @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.\n\t* @return {string}\n\t*/\n\tvar UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => {\n\t\tvar endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul);\n\t\treturn UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n\t};\n\tvar FS_stdin_getChar_buffer = [];\n\tvar lengthBytesUTF8 = (str) => {\n\t\tvar len = 0;\n\t\tfor (var i = 0; i < str.length; ++i) {\n\t\t\tvar c = str.charCodeAt(i);\n\t\t\tif (c <= 127) len++;\n\t\t\telse if (c <= 2047) len += 2;\n\t\t\telse if (c >= 55296 && c <= 57343) {\n\t\t\t\tlen += 4;\n\t\t\t\t++i;\n\t\t\t} else len += 3;\n\t\t}\n\t\treturn len;\n\t};\n\tvar stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n\t\tif (!(maxBytesToWrite > 0)) return 0;\n\t\tvar startIdx = outIdx;\n\t\tvar endIdx = outIdx + maxBytesToWrite - 1;\n\t\tfor (var i = 0; i < str.length; ++i) {\n\t\t\tvar u = str.codePointAt(i);\n\t\t\tif (u <= 127) {\n\t\t\t\tif (outIdx >= endIdx) break;\n\t\t\t\theap[outIdx++] = u;\n\t\t\t} else if (u <= 2047) {\n\t\t\t\tif (outIdx + 1 >= endIdx) break;\n\t\t\t\theap[outIdx++] = 192 | u >> 6;\n\t\t\t\theap[outIdx++] = 128 | u & 63;\n\t\t\t} else if (u <= 65535) {\n\t\t\t\tif (outIdx + 2 >= endIdx) break;\n\t\t\t\theap[outIdx++] = 224 | u >> 12;\n\t\t\t\theap[outIdx++] = 128 | u >> 6 & 63;\n\t\t\t\theap[outIdx++] = 128 | u & 63;\n\t\t\t} else {\n\t\t\t\tif (outIdx + 3 >= endIdx) break;\n\t\t\t\theap[outIdx++] = 240 | u >> 18;\n\t\t\t\theap[outIdx++] = 128 | u >> 12 & 63;\n\t\t\t\theap[outIdx++] = 128 | u >> 6 & 63;\n\t\t\t\theap[outIdx++] = 128 | u & 63;\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\theap[outIdx] = 0;\n\t\treturn outIdx - startIdx;\n\t};\n\t/** @type {function(string, boolean=, number=)} */\n\tvar intArrayFromString = (stringy, dontAddNull, length) => {\n\t\tvar len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n\t\tvar u8array = new Array(len);\n\t\tvar numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n\t\tif (dontAddNull) u8array.length = numBytesWritten;\n\t\treturn u8array;\n\t};\n\tvar FS_stdin_getChar = () => {\n\t\tif (!FS_stdin_getChar_buffer.length) {\n\t\t\tvar result = null;\n\t\t\tif (globalThis.window?.prompt) {\n\t\t\t\tresult = window.prompt(\"Input: \");\n\t\t\t\tif (result !== null) result += \"\\n\";\n\t\t\t}\n\t\t\tif (!result) return null;\n\t\t\tFS_stdin_getChar_buffer = intArrayFromString(result, true);\n\t\t}\n\t\treturn FS_stdin_getChar_buffer.shift();\n\t};\n\tvar TTY = {\n\t\tttys: [],\n\t\tinit() {},\n\t\tshutdown() {},\n\t\tregister(dev, ops) {\n\t\t\tTTY.ttys[dev] = {\n\t\t\t\tinput: [],\n\t\t\t\toutput: [],\n\t\t\t\tops\n\t\t\t};\n\t\t\tFS.registerDevice(dev, TTY.stream_ops);\n\t\t},\n\t\tstream_ops: {\n\t\t\topen(stream) {\n\t\t\t\tvar tty = TTY.ttys[stream.node.rdev];\n\t\t\t\tif (!tty) throw new FS.ErrnoError(43);\n\t\t\t\tstream.tty = tty;\n\t\t\t\tstream.seekable = false;\n\t\t\t},\n\t\t\tclose(stream) {\n\t\t\t\tstream.tty.ops.fsync(stream.tty);\n\t\t\t},\n\t\t\tfsync(stream) {\n\t\t\t\tstream.tty.ops.fsync(stream.tty);\n\t\t\t},\n\t\t\tread(stream, buffer, offset, length, pos) {\n\t\t\t\tif (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n\t\t\t\tvar bytesRead = 0;\n\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\tvar result;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresult = stream.tty.ops.get_char(stream.tty);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t\t}\n\t\t\t\t\tif (result === void 0 && bytesRead === 0) throw new FS.ErrnoError(6);\n\t\t\t\t\tif (result === null || result === void 0) break;\n\t\t\t\t\tbytesRead++;\n\t\t\t\t\tbuffer[offset + i] = result;\n\t\t\t\t}\n\t\t\t\tif (bytesRead) stream.node.atime = Date.now();\n\t\t\t\treturn bytesRead;\n\t\t\t},\n\t\t\twrite(stream, buffer, offset, length, pos) {\n\t\t\t\tif (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n\t\t\t\ttry {\n\t\t\t\t\tfor (var i = 0; i < length; i++) stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t}\n\t\t\t\tif (length) stream.node.mtime = stream.node.ctime = Date.now();\n\t\t\t\treturn i;\n\t\t\t}\n\t\t},\n\t\tdefault_tty_ops: {\n\t\t\tget_char(tty) {\n\t\t\t\treturn FS_stdin_getChar();\n\t\t\t},\n\t\t\tput_char(tty, val) {\n\t\t\t\tif (val === null || val === 10) {\n\t\t\t\t\tout(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t} else if (val != 0) tty.output.push(val);\n\t\t\t},\n\t\t\tfsync(tty) {\n\t\t\t\tif (tty.output?.length > 0) {\n\t\t\t\t\tout(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t}\n\t\t\t},\n\t\t\tioctl_tcgets(tty) {\n\t\t\t\treturn {\n\t\t\t\t\tc_iflag: 25856,\n\t\t\t\t\tc_oflag: 5,\n\t\t\t\t\tc_cflag: 191,\n\t\t\t\t\tc_lflag: 35387,\n\t\t\t\t\tc_cc: [\n\t\t\t\t\t\t3,\n\t\t\t\t\t\t28,\n\t\t\t\t\t\t127,\n\t\t\t\t\t\t21,\n\t\t\t\t\t\t4,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t17,\n\t\t\t\t\t\t19,\n\t\t\t\t\t\t26,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t18,\n\t\t\t\t\t\t15,\n\t\t\t\t\t\t23,\n\t\t\t\t\t\t22,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t\t]\n\t\t\t\t};\n\t\t\t},\n\t\t\tioctl_tcsets(tty, optional_actions, data) {\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\tioctl_tiocgwinsz(tty) {\n\t\t\t\treturn [24, 80];\n\t\t\t}\n\t\t},\n\t\tdefault_tty1_ops: {\n\t\t\tput_char(tty, val) {\n\t\t\t\tif (val === null || val === 10) {\n\t\t\t\t\terr(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t} else if (val != 0) tty.output.push(val);\n\t\t\t},\n\t\t\tfsync(tty) {\n\t\t\t\tif (tty.output?.length > 0) {\n\t\t\t\t\terr(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tvar zeroMemory = (ptr, size) => HEAPU8.fill(0, ptr, ptr + size);\n\tvar alignMemory = (size, alignment) => {\n\t\treturn Math.ceil(size / alignment) * alignment;\n\t};\n\tvar mmapAlloc = (size) => {\n\t\tsize = alignMemory(size, 65536);\n\t\tvar ptr = _emscripten_builtin_memalign(65536, size);\n\t\tif (ptr) zeroMemory(ptr, size);\n\t\treturn ptr;\n\t};\n\tvar MEMFS = {\n\t\tops_table: null,\n\t\tmount(mount) {\n\t\t\treturn MEMFS.createNode(null, \"/\", 16895, 0);\n\t\t},\n\t\tcreateNode(parent, name, mode, dev) {\n\t\t\tif (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n\t\t\tMEMFS.ops_table ||= {\n\t\t\t\tdir: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr,\n\t\t\t\t\t\tlookup: MEMFS.node_ops.lookup,\n\t\t\t\t\t\tmknod: MEMFS.node_ops.mknod,\n\t\t\t\t\t\trename: MEMFS.node_ops.rename,\n\t\t\t\t\t\tunlink: MEMFS.node_ops.unlink,\n\t\t\t\t\t\trmdir: MEMFS.node_ops.rmdir,\n\t\t\t\t\t\treaddir: MEMFS.node_ops.readdir,\n\t\t\t\t\t\tsymlink: MEMFS.node_ops.symlink\n\t\t\t\t\t},\n\t\t\t\t\tstream: { llseek: MEMFS.stream_ops.llseek }\n\t\t\t\t},\n\t\t\t\tfile: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr\n\t\t\t\t\t},\n\t\t\t\t\tstream: {\n\t\t\t\t\t\tllseek: MEMFS.stream_ops.llseek,\n\t\t\t\t\t\tread: MEMFS.stream_ops.read,\n\t\t\t\t\t\twrite: MEMFS.stream_ops.write,\n\t\t\t\t\t\tmmap: MEMFS.stream_ops.mmap,\n\t\t\t\t\t\tmsync: MEMFS.stream_ops.msync\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlink: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr,\n\t\t\t\t\t\treadlink: MEMFS.node_ops.readlink\n\t\t\t\t\t},\n\t\t\t\t\tstream: {}\n\t\t\t\t},\n\t\t\t\tchrdev: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr\n\t\t\t\t\t},\n\t\t\t\t\tstream: FS.chrdev_stream_ops\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar node = FS.createNode(parent, name, mode, dev);\n\t\t\tif (FS.isDir(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.dir.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.dir.stream;\n\t\t\t\tnode.contents = {};\n\t\t\t} else if (FS.isFile(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.file.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.file.stream;\n\t\t\t\tnode.usedBytes = 0;\n\t\t\t\tnode.contents = MEMFS.emptyFileContents ??= new Uint8Array(0);\n\t\t\t} else if (FS.isLink(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.link.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.link.stream;\n\t\t\t} else if (FS.isChrdev(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.chrdev.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.chrdev.stream;\n\t\t\t}\n\t\t\tnode.atime = node.mtime = node.ctime = Date.now();\n\t\t\tif (parent) {\n\t\t\t\tparent.contents[name] = node;\n\t\t\t\tparent.atime = parent.mtime = parent.ctime = node.atime;\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\t\tgetFileDataAsTypedArray(node) {\n\t\t\treturn node.contents.subarray(0, node.usedBytes);\n\t\t},\n\t\texpandFileStorage(node, newCapacity) {\n\t\t\tvar prevCapacity = node.contents.length;\n\t\t\tif (prevCapacity >= newCapacity) return;\n\t\t\tnewCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < 1024 * 1024 ? 2 : 1.125) >>> 0);\n\t\t\tif (prevCapacity) newCapacity = Math.max(newCapacity, 256);\n\t\t\tvar oldContents = MEMFS.getFileDataAsTypedArray(node);\n\t\t\tnode.contents = new Uint8Array(newCapacity);\n\t\t\tnode.contents.set(oldContents);\n\t\t},\n\t\tresizeFileStorage(node, newSize) {\n\t\t\tif (node.usedBytes == newSize) return;\n\t\t\tvar oldContents = node.contents;\n\t\t\tnode.contents = new Uint8Array(newSize);\n\t\t\tnode.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n\t\t\tnode.usedBytes = newSize;\n\t\t},\n\t\tnode_ops: {\n\t\t\tgetattr(node) {\n\t\t\t\tvar attr = {};\n\t\t\t\tattr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n\t\t\t\tattr.ino = node.id;\n\t\t\t\tattr.mode = node.mode;\n\t\t\t\tattr.nlink = 1;\n\t\t\t\tattr.uid = 0;\n\t\t\t\tattr.gid = 0;\n\t\t\t\tattr.rdev = node.rdev;\n\t\t\t\tif (FS.isDir(node.mode)) attr.size = 4096;\n\t\t\t\telse if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n\t\t\t\telse if (FS.isLink(node.mode)) attr.size = node.link.length;\n\t\t\t\telse attr.size = 0;\n\t\t\t\tattr.atime = new Date(node.atime);\n\t\t\t\tattr.mtime = new Date(node.mtime);\n\t\t\t\tattr.ctime = new Date(node.ctime);\n\t\t\t\tattr.blksize = 4096;\n\t\t\t\tattr.blocks = Math.ceil(attr.size / attr.blksize);\n\t\t\t\treturn attr;\n\t\t\t},\n\t\t\tsetattr(node, attr) {\n\t\t\t\tfor (const key of [\n\t\t\t\t\t\"mode\",\n\t\t\t\t\t\"atime\",\n\t\t\t\t\t\"mtime\",\n\t\t\t\t\t\"ctime\"\n\t\t\t\t]) if (attr[key] != null) node[key] = attr[key];\n\t\t\t\tif (attr.size !== void 0) MEMFS.resizeFileStorage(node, attr.size);\n\t\t\t},\n\t\t\tlookup(parent, name) {\n\t\t\t\tif (!MEMFS.doesNotExistError) {\n\t\t\t\t\tMEMFS.doesNotExistError = new FS.ErrnoError(44);\n\t\t\t\t\t/** @suppress {checkTypes} */\n\t\t\t\t\tMEMFS.doesNotExistError.stack = \"<generic error, no stack>\";\n\t\t\t\t}\n\t\t\t\tthrow MEMFS.doesNotExistError;\n\t\t\t},\n\t\t\tmknod(parent, name, mode, dev) {\n\t\t\t\treturn MEMFS.createNode(parent, name, mode, dev);\n\t\t\t},\n\t\t\trename(old_node, new_dir, new_name) {\n\t\t\t\tvar new_node;\n\t\t\t\ttry {\n\t\t\t\t\tnew_node = FS.lookupNode(new_dir, new_name);\n\t\t\t\t} catch (e) {}\n\t\t\t\tif (new_node) {\n\t\t\t\t\tif (FS.isDir(old_node.mode)) for (var i in new_node.contents) throw new FS.ErrnoError(55);\n\t\t\t\t\tFS.hashRemoveNode(new_node);\n\t\t\t\t}\n\t\t\t\tdelete old_node.parent.contents[old_node.name];\n\t\t\t\tnew_dir.contents[new_name] = old_node;\n\t\t\t\told_node.name = new_name;\n\t\t\t\tnew_dir.ctime = new_dir.mtime = old_node.parent.ctime = old_node.parent.mtime = Date.now();\n\t\t\t},\n\t\t\tunlink(parent, name) {\n\t\t\t\tdelete parent.contents[name];\n\t\t\t\tparent.ctime = parent.mtime = Date.now();\n\t\t\t},\n\t\t\trmdir(parent, name) {\n\t\t\t\tfor (var i in FS.lookupNode(parent, name).contents) throw new FS.ErrnoError(55);\n\t\t\t\tdelete parent.contents[name];\n\t\t\t\tparent.ctime = parent.mtime = Date.now();\n\t\t\t},\n\t\t\treaddir(node) {\n\t\t\t\treturn [\n\t\t\t\t\t\".\",\n\t\t\t\t\t\"..\",\n\t\t\t\t\t...Object.keys(node.contents)\n\t\t\t\t];\n\t\t\t},\n\t\t\tsymlink(parent, newname, oldpath) {\n\t\t\t\tvar node = MEMFS.createNode(parent, newname, 41471, 0);\n\t\t\t\tnode.link = oldpath;\n\t\t\t\treturn node;\n\t\t\t},\n\t\t\treadlink(node) {\n\t\t\t\tif (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n\t\t\t\treturn node.link;\n\t\t\t}\n\t\t},\n\t\tstream_ops: {\n\t\t\tread(stream, buffer, offset, length, position) {\n\t\t\t\tvar contents = stream.node.contents;\n\t\t\t\tif (position >= stream.node.usedBytes) return 0;\n\t\t\t\tvar size = Math.min(stream.node.usedBytes - position, length);\n\t\t\t\tbuffer.set(contents.subarray(position, position + size), offset);\n\t\t\t\treturn size;\n\t\t\t},\n\t\t\twrite(stream, buffer, offset, length, position, canOwn) {\n\t\t\t\tif (buffer.buffer === HEAP8.buffer) canOwn = false;\n\t\t\t\tif (!length) return 0;\n\t\t\t\tvar node = stream.node;\n\t\t\t\tnode.mtime = node.ctime = Date.now();\n\t\t\t\tif (canOwn) {\n\t\t\t\t\tnode.contents = buffer.subarray(offset, offset + length);\n\t\t\t\t\tnode.usedBytes = length;\n\t\t\t\t} else if (node.usedBytes === 0 && position === 0) {\n\t\t\t\t\tnode.contents = buffer.slice(offset, offset + length);\n\t\t\t\t\tnode.usedBytes = length;\n\t\t\t\t} else {\n\t\t\t\t\tMEMFS.expandFileStorage(node, position + length);\n\t\t\t\t\tnode.contents.set(buffer.subarray(offset, offset + length), position);\n\t\t\t\t\tnode.usedBytes = Math.max(node.usedBytes, position + length);\n\t\t\t\t}\n\t\t\t\treturn length;\n\t\t\t},\n\t\t\tllseek(stream, offset, whence) {\n\t\t\t\tvar position = offset;\n\t\t\t\tif (whence === 1) position += stream.position;\n\t\t\t\telse if (whence === 2) {\n\t\t\t\t\tif (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n\t\t\t\t}\n\t\t\t\tif (position < 0) throw new FS.ErrnoError(28);\n\t\t\t\treturn position;\n\t\t\t},\n\t\t\tmmap(stream, length, position, prot, flags) {\n\t\t\t\tif (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n\t\t\t\tvar ptr;\n\t\t\t\tvar allocated;\n\t\t\t\tvar contents = stream.node.contents;\n\t\t\t\tif (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n\t\t\t\t\tallocated = false;\n\t\t\t\t\tptr = contents.byteOffset;\n\t\t\t\t} else {\n\t\t\t\t\tallocated = true;\n\t\t\t\t\tptr = mmapAlloc(length);\n\t\t\t\t\tif (!ptr) throw new FS.ErrnoError(48);\n\t\t\t\t\tif (contents) {\n\t\t\t\t\t\tif (position > 0 || position + length < contents.length) if (contents.subarray) contents = contents.subarray(position, position + length);\n\t\t\t\t\t\telse contents = Array.prototype.slice.call(contents, position, position + length);\n\t\t\t\t\t\tHEAP8.set(contents, ptr);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tptr,\n\t\t\t\t\tallocated\n\t\t\t\t};\n\t\t\t},\n\t\t\tmsync(stream, buffer, offset, length, mmapFlags) {\n\t\t\t\tMEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t};\n\tvar FS_modeStringToFlags = (str) => {\n\t\tif (typeof str != \"string\") return str;\n\t\tvar flags = {\n\t\t\t\"r\": 0,\n\t\t\t\"r+\": 2,\n\t\t\t\"w\": 577,\n\t\t\t\"w+\": 578,\n\t\t\t\"a\": 1089,\n\t\t\t\"a+\": 1090\n\t\t}[str];\n\t\tif (typeof flags == \"undefined\") throw new Error(`Unknown file open mode: ${str}`);\n\t\treturn flags;\n\t};\n\tvar FS_fileDataToTypedArray = (data) => {\n\t\tif (typeof data == \"string\") data = intArrayFromString(data, true);\n\t\tif (!data.subarray) data = new Uint8Array(data);\n\t\treturn data;\n\t};\n\tvar FS_getMode = (canRead, canWrite) => {\n\t\tvar mode = 0;\n\t\tif (canRead) mode |= 365;\n\t\tif (canWrite) mode |= 146;\n\t\treturn mode;\n\t};\n\tvar asyncLoad = async (url) => {\n\t\tvar arrayBuffer = await readAsync(url);\n\t\treturn new Uint8Array(arrayBuffer);\n\t};\n\tvar FS_createDataFile = (...args) => FS.createDataFile(...args);\n\tvar getUniqueRunDependency = (id) => {\n\t\treturn id;\n\t};\n\tvar runDependencies = 0;\n\tvar dependenciesFulfilled = null;\n\tvar removeRunDependency = (id) => {\n\t\trunDependencies--;\n\t\tModule[\"monitorRunDependencies\"]?.(runDependencies);\n\t\tif (runDependencies == 0) {\n\t\t\tif (dependenciesFulfilled) {\n\t\t\t\tvar callback = dependenciesFulfilled;\n\t\t\t\tdependenciesFulfilled = null;\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n\tvar addRunDependency = (id) => {\n\t\trunDependencies++;\n\t\tModule[\"monitorRunDependencies\"]?.(runDependencies);\n\t};\n\tvar preloadPlugins = [];\n\tvar FS_handledByPreloadPlugin = async (byteArray, fullname) => {\n\t\tif (typeof Browser != \"undefined\") Browser.init();\n\t\tfor (var plugin of preloadPlugins) if (plugin[\"canHandle\"](fullname)) return plugin[\"handle\"](byteArray, fullname);\n\t\treturn byteArray;\n\t};\n\tvar FS_preloadFile = async (parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish) => {\n\t\tvar fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n\t\tvar dep = getUniqueRunDependency(`cp ${fullname}`);\n\t\taddRunDependency(dep);\n\t\ttry {\n\t\t\tvar byteArray = url;\n\t\t\tif (typeof url == \"string\") byteArray = await asyncLoad(url);\n\t\t\tbyteArray = await FS_handledByPreloadPlugin(byteArray, fullname);\n\t\t\tpreFinish?.();\n\t\t\tif (!dontCreateFile) FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n\t\t} finally {\n\t\t\tremoveRunDependency(dep);\n\t\t}\n\t};\n\tvar FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n\t\tFS_preloadFile(parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish).then(onload).catch(onerror);\n\t};\n\tvar FS = {\n\t\troot: null,\n\t\tmounts: [],\n\t\tdevices: {},\n\t\tstreams: [],\n\t\tnextInode: 1,\n\t\tnameTable: null,\n\t\tcurrentPath: \"/\",\n\t\tinitialized: false,\n\t\tignorePermissions: true,\n\t\tfilesystems: null,\n\t\tsyncFSRequests: 0,\n\t\tErrnoError: class {\n\t\t\tname = \"ErrnoError\";\n\t\t\tconstructor(errno) {\n\t\t\t\tthis.errno = errno;\n\t\t\t}\n\t\t},\n\t\tFSStream: class {\n\t\t\tshared = {};\n\t\t\tget object() {\n\t\t\t\treturn this.node;\n\t\t\t}\n\t\t\tset object(val) {\n\t\t\t\tthis.node = val;\n\t\t\t}\n\t\t\tget isRead() {\n\t\t\t\treturn (this.flags & 2097155) !== 1;\n\t\t\t}\n\t\t\tget isWrite() {\n\t\t\t\treturn (this.flags & 2097155) !== 0;\n\t\t\t}\n\t\t\tget isAppend() {\n\t\t\t\treturn this.flags & 1024;\n\t\t\t}\n\t\t\tget flags() {\n\t\t\t\treturn this.shared.flags;\n\t\t\t}\n\t\t\tset flags(val) {\n\t\t\t\tthis.shared.flags = val;\n\t\t\t}\n\t\t\tget position() {\n\t\t\t\treturn this.shared.position;\n\t\t\t}\n\t\t\tset position(val) {\n\t\t\t\tthis.shared.position = val;\n\t\t\t}\n\t\t},\n\t\tFSNode: class {\n\t\t\tnode_ops = {};\n\t\t\tstream_ops = {};\n\t\t\treadMode = 365;\n\t\t\twriteMode = 146;\n\t\t\tmounted = null;\n\t\t\tconstructor(parent, name, mode, rdev) {\n\t\t\t\tif (!parent) parent = this;\n\t\t\t\tthis.parent = parent;\n\t\t\t\tthis.mount = parent.mount;\n\t\t\t\tthis.id = FS.nextInode++;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.mode = mode;\n\t\t\t\tthis.rdev = rdev;\n\t\t\t\tthis.atime = this.mtime = this.ctime = Date.now();\n\t\t\t}\n\t\t\tget read() {\n\t\t\t\treturn (this.mode & this.readMode) === this.readMode;\n\t\t\t}\n\t\t\tset read(val) {\n\t\t\t\tval ? this.mode |= this.readMode : this.mode &= ~this.readMode;\n\t\t\t}\n\t\t\tget write() {\n\t\t\t\treturn (this.mode & this.writeMode) === this.writeMode;\n\t\t\t}\n\t\t\tset write(val) {\n\t\t\t\tval ? this.mode |= this.writeMode : this.mode &= ~this.writeMode;\n\t\t\t}\n\t\t\tget isFolder() {\n\t\t\t\treturn FS.isDir(this.mode);\n\t\t\t}\n\t\t\tget isDevice() {\n\t\t\t\treturn FS.isChrdev(this.mode);\n\t\t\t}\n\t\t},\n\t\tlookupPath(path, opts = {}) {\n\t\t\tif (!path) throw new FS.ErrnoError(44);\n\t\t\topts.follow_mount ??= true;\n\t\t\tif (!PATH.isAbs(path)) path = FS.cwd() + \"/\" + path;\n\t\t\tlinkloop: for (var nlinks = 0; nlinks < 40; nlinks++) {\n\t\t\t\tvar parts = path.split(\"/\").filter((p) => !!p);\n\t\t\t\tvar current = FS.root;\n\t\t\t\tvar current_path = \"/\";\n\t\t\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\t\t\tvar islast = i === parts.length - 1;\n\t\t\t\t\tif (islast && opts.parent) break;\n\t\t\t\t\tif (parts[i] === \".\") continue;\n\t\t\t\t\tif (parts[i] === \"..\") {\n\t\t\t\t\t\tcurrent_path = PATH.dirname(current_path);\n\t\t\t\t\t\tif (FS.isRoot(current)) {\n\t\t\t\t\t\t\tpath = current_path + \"/\" + parts.slice(i + 1).join(\"/\");\n\t\t\t\t\t\t\tnlinks--;\n\t\t\t\t\t\t\tcontinue linkloop;\n\t\t\t\t\t\t} else current = current.parent;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tcurrent_path = PATH.join2(current_path, parts[i]);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcurrent = FS.lookupNode(current, parts[i]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif (e?.errno === 44 && islast && opts.noent_okay) return { path: current_path };\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t\tif (FS.isMountpoint(current) && (!islast || opts.follow_mount)) current = current.mounted.root;\n\t\t\t\t\tif (FS.isLink(current.mode) && (!islast || opts.follow)) {\n\t\t\t\t\t\tif (!current.node_ops.readlink) throw new FS.ErrnoError(52);\n\t\t\t\t\t\tvar link = current.node_ops.readlink(current);\n\t\t\t\t\t\tif (!PATH.isAbs(link)) link = PATH.dirname(current_path) + \"/\" + link;\n\t\t\t\t\t\tpath = link + \"/\" + parts.slice(i + 1).join(\"/\");\n\t\t\t\t\t\tcontinue linkloop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tpath: current_path,\n\t\t\t\t\tnode: current\n\t\t\t\t};\n\t\t\t}\n\t\t\tthrow new FS.ErrnoError(32);\n\t\t},\n\t\tgetPath(node) {\n\t\t\tvar path;\n\t\t\twhile (true) {\n\t\t\t\tif (FS.isRoot(node)) {\n\t\t\t\t\tvar mount = node.mount.mountpoint;\n\t\t\t\t\tif (!path) return mount;\n\t\t\t\t\treturn mount[mount.length - 1] !== \"/\" ? `${mount}/${path}` : mount + path;\n\t\t\t\t}\n\t\t\t\tpath = path ? `${node.name}/${path}` : node.name;\n\t\t\t\tnode = node.parent;\n\t\t\t}\n\t\t},\n\t\thashName(parentid, name) {\n\t\t\tvar hash = 0;\n\t\t\tfor (var i = 0; i < name.length; i++) hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n\t\t\treturn (parentid + hash >>> 0) % FS.nameTable.length;\n\t\t},\n\t\thashAddNode(node) {\n\t\t\tvar hash = FS.hashName(node.parent.id, node.name);\n\t\t\tnode.name_next = FS.nameTable[hash];\n\t\t\tFS.nameTable[hash] = node;\n\t\t},\n\t\thashRemoveNode(node) {\n\t\t\tvar hash = FS.hashName(node.parent.id, node.name);\n\t\t\tif (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n\t\t\telse {\n\t\t\t\tvar current = FS.nameTable[hash];\n\t\t\t\twhile (current) {\n\t\t\t\t\tif (current.name_next === node) {\n\t\t\t\t\t\tcurrent.name_next = node.name_next;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcurrent = current.name_next;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlookupNode(parent, name) {\n\t\t\tvar errCode = FS.mayLookup(parent);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tvar hash = FS.hashName(parent.id, name);\n\t\t\tfor (var node = FS.nameTable[hash]; node; node = node.name_next) {\n\t\t\t\tvar nodeName = node.name;\n\t\t\t\tif (node.parent.id === parent.id && nodeName === name) return node;\n\t\t\t}\n\t\t\treturn FS.lookup(parent, name);\n\t\t},\n\t\tcreateNode(parent, name, mode, rdev) {\n\t\t\tvar node = new FS.FSNode(parent, name, mode, rdev);\n\t\t\tFS.hashAddNode(node);\n\t\t\treturn node;\n\t\t},\n\t\tdestroyNode(node) {\n\t\t\tFS.hashRemoveNode(node);\n\t\t},\n\t\tisRoot(node) {\n\t\t\treturn node === node.parent;\n\t\t},\n\t\tisMountpoint(node) {\n\t\t\treturn !!node.mounted;\n\t\t},\n\t\tisFile(mode) {\n\t\t\treturn (mode & 61440) === 32768;\n\t\t},\n\t\tisDir(mode) {\n\t\t\treturn (mode & 61440) === 16384;\n\t\t},\n\t\tisLink(mode) {\n\t\t\treturn (mode & 61440) === 40960;\n\t\t},\n\t\tisChrdev(mode) {\n\t\t\treturn (mode & 61440) === 8192;\n\t\t},\n\t\tisBlkdev(mode) {\n\t\t\treturn (mode & 61440) === 24576;\n\t\t},\n\t\tisFIFO(mode) {\n\t\t\treturn (mode & 61440) === 4096;\n\t\t},\n\t\tisSocket(mode) {\n\t\t\treturn (mode & 49152) === 49152;\n\t\t},\n\t\tflagsToPermissionString(flag) {\n\t\t\tvar perms = [\n\t\t\t\t\"r\",\n\t\t\t\t\"w\",\n\t\t\t\t\"rw\"\n\t\t\t][flag & 3];\n\t\t\tif (flag & 512) perms += \"w\";\n\t\t\treturn perms;\n\t\t},\n\t\tnodePermissions(node, perms) {\n\t\t\tif (FS.ignorePermissions) return 0;\n\t\t\tif (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n\t\t\tif (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n\t\t\tif (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n\t\t\treturn 0;\n\t\t},\n\t\tmayLookup(dir) {\n\t\t\tif (!FS.isDir(dir.mode)) return 54;\n\t\t\tvar errCode = FS.nodePermissions(dir, \"x\");\n\t\t\tif (errCode) return errCode;\n\t\t\tif (!dir.node_ops.lookup) return 2;\n\t\t\treturn 0;\n\t\t},\n\t\tmayCreate(dir, name) {\n\t\t\tif (!FS.isDir(dir.mode)) return 54;\n\t\t\ttry {\n\t\t\t\tFS.lookupNode(dir, name);\n\t\t\t\treturn 20;\n\t\t\t} catch (e) {}\n\t\t\treturn FS.nodePermissions(dir, \"wx\");\n\t\t},\n\t\tmayDelete(dir, name, isdir) {\n\t\t\tvar node;\n\t\t\ttry {\n\t\t\t\tnode = FS.lookupNode(dir, name);\n\t\t\t} catch (e) {\n\t\t\t\treturn e.errno;\n\t\t\t}\n\t\t\tvar errCode = FS.nodePermissions(dir, \"wx\");\n\t\t\tif (errCode) return errCode;\n\t\t\tif (isdir) {\n\t\t\t\tif (!FS.isDir(node.mode)) return 54;\n\t\t\t\tif (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n\t\t\t} else if (FS.isDir(node.mode)) return 31;\n\t\t\treturn 0;\n\t\t},\n\t\tmayOpen(node, flags) {\n\t\t\tif (!node) return 44;\n\t\t\tif (FS.isLink(node.mode)) return 32;\n\t\t\tvar mode = FS.flagsToPermissionString(flags);\n\t\t\tif (FS.isDir(node.mode)) {\n\t\t\t\tif (mode !== \"r\" || flags & 576) return 31;\n\t\t\t}\n\t\t\treturn FS.nodePermissions(node, mode);\n\t\t},\n\t\tcheckOpExists(op, err) {\n\t\t\tif (!op) throw new FS.ErrnoError(err);\n\t\t\treturn op;\n\t\t},\n\t\tMAX_OPEN_FDS: 4096,\n\t\tnextfd() {\n\t\t\tfor (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) if (!FS.streams[fd]) return fd;\n\t\t\tthrow new FS.ErrnoError(33);\n\t\t},\n\t\tgetStreamChecked(fd) {\n\t\t\tvar stream = FS.getStream(fd);\n\t\t\tif (!stream) throw new FS.ErrnoError(8);\n\t\t\treturn stream;\n\t\t},\n\t\tgetStream: (fd) => FS.streams[fd],\n\t\tcreateStream(stream, fd = -1) {\n\t\t\tstream = Object.assign(new FS.FSStream(), stream);\n\t\t\tif (fd == -1) fd = FS.nextfd();\n\t\t\tstream.fd = fd;\n\t\t\tFS.streams[fd] = stream;\n\t\t\treturn stream;\n\t\t},\n\t\tcloseStream(fd) {\n\t\t\tFS.streams[fd] = null;\n\t\t},\n\t\tdupStream(origStream, fd = -1) {\n\t\t\tvar stream = FS.createStream(origStream, fd);\n\t\t\tstream.stream_ops?.dup?.(stream);\n\t\t\treturn stream;\n\t\t},\n\t\tdoSetAttr(stream, node, attr) {\n\t\t\tvar setattr = stream?.stream_ops.setattr;\n\t\t\tvar arg = setattr ? stream : node;\n\t\t\tsetattr ??= node.node_ops.setattr;\n\t\t\tFS.checkOpExists(setattr, 63);\n\t\t\tsetattr(arg, attr);\n\t\t},\n\t\tchrdev_stream_ops: {\n\t\t\topen(stream) {\n\t\t\t\tstream.stream_ops = FS.getDevice(stream.node.rdev).stream_ops;\n\t\t\t\tstream.stream_ops.open?.(stream);\n\t\t\t},\n\t\t\tllseek() {\n\t\t\t\tthrow new FS.ErrnoError(70);\n\t\t\t}\n\t\t},\n\t\tmajor: (dev) => dev >> 8,\n\t\tminor: (dev) => dev & 255,\n\t\tmakedev: (ma, mi) => ma << 8 | mi,\n\t\tregisterDevice(dev, ops) {\n\t\t\tFS.devices[dev] = { stream_ops: ops };\n\t\t},\n\t\tgetDevice: (dev) => FS.devices[dev],\n\t\tgetMounts(mount) {\n\t\t\tvar mounts = [];\n\t\t\tvar check = [mount];\n\t\t\twhile (check.length) {\n\t\t\t\tvar m = check.pop();\n\t\t\t\tmounts.push(m);\n\t\t\t\tcheck.push(...m.mounts);\n\t\t\t}\n\t\t\treturn mounts;\n\t\t},\n\t\tsyncfs(populate, callback) {\n\t\t\tif (typeof populate == \"function\") {\n\t\t\t\tcallback = populate;\n\t\t\t\tpopulate = false;\n\t\t\t}\n\t\t\tFS.syncFSRequests++;\n\t\t\tif (FS.syncFSRequests > 1) err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);\n\t\t\tvar mounts = FS.getMounts(FS.root.mount);\n\t\t\tvar completed = 0;\n\t\t\tfunction doCallback(errCode) {\n\t\t\t\tFS.syncFSRequests--;\n\t\t\t\treturn callback(errCode);\n\t\t\t}\n\t\t\tfunction done(errCode) {\n\t\t\t\tif (errCode) {\n\t\t\t\t\tif (!done.errored) {\n\t\t\t\t\t\tdone.errored = true;\n\t\t\t\t\t\treturn doCallback(errCode);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (++completed >= mounts.length) doCallback(null);\n\t\t\t}\n\t\t\tfor (var mount of mounts) if (mount.type.syncfs) mount.type.syncfs(mount, populate, done);\n\t\t\telse done(null);\n\t\t},\n\t\tmount(type, opts, mountpoint) {\n\t\t\tvar root = mountpoint === \"/\";\n\t\t\tvar pseudo = !mountpoint;\n\t\t\tvar node;\n\t\t\tif (root && FS.root) throw new FS.ErrnoError(10);\n\t\t\telse if (!root && !pseudo) {\n\t\t\t\tvar lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n\t\t\t\tmountpoint = lookup.path;\n\t\t\t\tnode = lookup.node;\n\t\t\t\tif (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n\t\t\t\tif (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n\t\t\t}\n\t\t\tvar mount = {\n\t\t\t\ttype,\n\t\t\t\topts,\n\t\t\t\tmountpoint,\n\t\t\t\tmounts: []\n\t\t\t};\n\t\t\tvar mountRoot = type.mount(mount);\n\t\t\tmountRoot.mount = mount;\n\t\t\tmount.root = mountRoot;\n\t\t\tif (root) FS.root = mountRoot;\n\t\t\telse if (node) {\n\t\t\t\tnode.mounted = mount;\n\t\t\t\tif (node.mount) node.mount.mounts.push(mount);\n\t\t\t}\n\t\t\treturn mountRoot;\n\t\t},\n\t\tunmount(mountpoint) {\n\t\t\tvar lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n\t\t\tif (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n\t\t\tvar node = lookup.node;\n\t\t\tvar mount = node.mounted;\n\t\t\tvar mounts = FS.getMounts(mount);\n\t\t\tfor (var [hash, current] of Object.entries(FS.nameTable)) while (current) {\n\t\t\t\tvar next = current.name_next;\n\t\t\t\tif (mounts.includes(current.mount)) FS.destroyNode(current);\n\t\t\t\tcurrent = next;\n\t\t\t}\n\t\t\tnode.mounted = null;\n\t\t\tvar idx = node.mount.mounts.indexOf(mount);\n\t\t\tnode.mount.mounts.splice(idx, 1);\n\t\t},\n\t\tlookup(parent, name) {\n\t\t\treturn parent.node_ops.lookup(parent, name);\n\t\t},\n\t\tmknod(path, mode, dev) {\n\t\t\tvar parent = FS.lookupPath(path, { parent: true }).node;\n\t\t\tvar name = PATH.basename(path);\n\t\t\tif (!name) throw new FS.ErrnoError(28);\n\t\t\tif (name === \".\" || name === \"..\") throw new FS.ErrnoError(20);\n\t\t\tvar errCode = FS.mayCreate(parent, name);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n\t\t\treturn parent.node_ops.mknod(parent, name, mode, dev);\n\t\t},\n\t\tstatfs(path) {\n\t\t\treturn FS.statfsNode(FS.lookupPath(path, { follow: true }).node);\n\t\t},\n\t\tstatfsStream(stream) {\n\t\t\treturn FS.statfsNode(stream.node);\n\t\t},\n\t\tstatfsNode(node) {\n\t\t\tvar rtn = {\n\t\t\t\tbsize: 4096,\n\t\t\t\tfrsize: 4096,\n\t\t\t\tblocks: 1e6,\n\t\t\t\tbfree: 5e5,\n\t\t\t\tbavail: 5e5,\n\t\t\t\tfiles: FS.nextInode,\n\t\t\t\tffree: FS.nextInode - 1,\n\t\t\t\tfsid: 42,\n\t\t\t\tflags: 2,\n\t\t\t\tnamelen: 255\n\t\t\t};\n\t\t\tif (node.node_ops.statfs) Object.assign(rtn, node.node_ops.statfs(node.mount.opts.root));\n\t\t\treturn rtn;\n\t\t},\n\t\tcreate(path, mode = 438) {\n\t\t\tmode &= 4095;\n\t\t\tmode |= 32768;\n\t\t\treturn FS.mknod(path, mode, 0);\n\t\t},\n\t\tmkdir(path, mode = 511) {\n\t\t\tmode &= 1023;\n\t\t\tmode |= 16384;\n\t\t\treturn FS.mknod(path, mode, 0);\n\t\t},\n\t\tmkdirTree(path, mode) {\n\t\t\tvar dirs = path.split(\"/\");\n\t\t\tvar d = \"\";\n\t\t\tfor (var dir of dirs) {\n\t\t\t\tif (!dir) continue;\n\t\t\t\tif (d || PATH.isAbs(path)) d += \"/\";\n\t\t\t\td += dir;\n\t\t\t\ttry {\n\t\t\t\t\tFS.mkdir(d, mode);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e.errno != 20) throw e;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmkdev(path, mode, dev) {\n\t\t\tif (typeof dev == \"undefined\") {\n\t\t\t\tdev = mode;\n\t\t\t\tmode = 438;\n\t\t\t}\n\t\t\tmode |= 8192;\n\t\t\treturn FS.mknod(path, mode, dev);\n\t\t},\n\t\tsymlink(oldpath, newpath) {\n\t\t\tif (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n\t\t\tvar parent = FS.lookupPath(newpath, { parent: true }).node;\n\t\t\tif (!parent) throw new FS.ErrnoError(44);\n\t\t\tvar newname = PATH.basename(newpath);\n\t\t\tvar errCode = FS.mayCreate(parent, newname);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n\t\t\treturn parent.node_ops.symlink(parent, newname, oldpath);\n\t\t},\n\t\trename(old_path, new_path) {\n\t\t\tvar old_dirname = PATH.dirname(old_path);\n\t\t\tvar new_dirname = PATH.dirname(new_path);\n\t\t\tvar old_name = PATH.basename(old_path);\n\t\t\tvar new_name = PATH.basename(new_path);\n\t\t\tvar lookup = FS.lookupPath(old_path, { parent: true }), old_dir = lookup.node, new_dir;\n\t\t\tlookup = FS.lookupPath(new_path, { parent: true });\n\t\t\tnew_dir = lookup.node;\n\t\t\tif (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n\t\t\tif (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n\t\t\tvar old_node = FS.lookupNode(old_dir, old_name);\n\t\t\tvar relative = PATH_FS.relative(old_path, new_dirname);\n\t\t\tif (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n\t\t\trelative = PATH_FS.relative(new_path, old_dirname);\n\t\t\tif (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n\t\t\tvar new_node;\n\t\t\ttry {\n\t\t\t\tnew_node = FS.lookupNode(new_dir, new_name);\n\t\t\t} catch (e) {}\n\t\t\tif (old_node === new_node) return;\n\t\t\tvar isdir = FS.isDir(old_node.mode);\n\t\t\tvar errCode = FS.mayDelete(old_dir, old_name, isdir);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\terrCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n\t\t\tif (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n\t\t\tif (new_dir !== old_dir) {\n\t\t\t\terrCode = FS.nodePermissions(old_dir, \"w\");\n\t\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\t}\n\t\t\tFS.hashRemoveNode(old_node);\n\t\t\ttry {\n\t\t\t\told_dir.node_ops.rename(old_node, new_dir, new_name);\n\t\t\t\told_node.parent = new_dir;\n\t\t\t} catch (e) {\n\t\t\t\tthrow e;\n\t\t\t} finally {\n\t\t\t\tFS.hashAddNode(old_node);\n\t\t\t}\n\t\t},\n\t\trmdir(path) {\n\t\t\tvar parent = FS.lookupPath(path, { parent: true }).node;\n\t\t\tvar name = PATH.basename(path);\n\t\t\tvar node = FS.lookupNode(parent, name);\n\t\t\tvar errCode = FS.mayDelete(parent, name, true);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n\t\t\tif (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n\t\t\tparent.node_ops.rmdir(parent, name);\n\t\t\tFS.destroyNode(node);\n\t\t},\n\t\treaddir(path) {\n\t\t\tvar node = FS.lookupPath(path, { follow: true }).node;\n\t\t\treturn FS.checkOpExists(node.node_ops.readdir, 54)(node);\n\t\t},\n\t\tunlink(path) {\n\t\t\tvar parent = FS.lookupPath(path, { parent: true }).node;\n\t\t\tif (!parent) throw new FS.ErrnoError(44);\n\t\t\tvar name = PATH.basename(path);\n\t\t\tvar node = FS.lookupNode(parent, name);\n\t\t\tvar errCode = FS.mayDelete(parent, name, false);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n\t\t\tif (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n\t\t\tparent.node_ops.unlink(parent, name);\n\t\t\tFS.destroyNode(node);\n\t\t},\n\t\treadlink(path) {\n\t\t\tvar link = FS.lookupPath(path).node;\n\t\t\tif (!link) throw new FS.ErrnoError(44);\n\t\t\tif (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n\t\t\treturn link.node_ops.readlink(link);\n\t\t},\n\t\tstat(path, dontFollow) {\n\t\t\tvar node = FS.lookupPath(path, { follow: !dontFollow }).node;\n\t\t\treturn FS.checkOpExists(node.node_ops.getattr, 63)(node);\n\t\t},\n\t\tfstat(fd) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tvar node = stream.node;\n\t\t\tvar getattr = stream.stream_ops.getattr;\n\t\t\tvar arg = getattr ? stream : node;\n\t\t\tgetattr ??= node.node_ops.getattr;\n\t\t\tFS.checkOpExists(getattr, 63);\n\t\t\treturn getattr(arg);\n\t\t},\n\t\tlstat(path) {\n\t\t\treturn FS.stat(path, true);\n\t\t},\n\t\tdoChmod(stream, node, mode, dontFollow) {\n\t\t\tFS.doSetAttr(stream, node, {\n\t\t\t\tmode: mode & 4095 | node.mode & -4096,\n\t\t\t\tctime: Date.now(),\n\t\t\t\tdontFollow\n\t\t\t});\n\t\t},\n\t\tchmod(path, mode, dontFollow) {\n\t\t\tvar node;\n\t\t\tif (typeof path == \"string\") node = FS.lookupPath(path, { follow: !dontFollow }).node;\n\t\t\telse node = path;\n\t\t\tFS.doChmod(null, node, mode, dontFollow);\n\t\t},\n\t\tlchmod(path, mode) {\n\t\t\tFS.chmod(path, mode, true);\n\t\t},\n\t\tfchmod(fd, mode) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tFS.doChmod(stream, stream.node, mode, false);\n\t\t},\n\t\tdoChown(stream, node, dontFollow) {\n\t\t\tFS.doSetAttr(stream, node, {\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tdontFollow\n\t\t\t});\n\t\t},\n\t\tchown(path, uid, gid, dontFollow) {\n\t\t\tvar node;\n\t\t\tif (typeof path == \"string\") node = FS.lookupPath(path, { follow: !dontFollow }).node;\n\t\t\telse node = path;\n\t\t\tFS.doChown(null, node, dontFollow);\n\t\t},\n\t\tlchown(path, uid, gid) {\n\t\t\tFS.chown(path, uid, gid, true);\n\t\t},\n\t\tfchown(fd, uid, gid) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tFS.doChown(stream, stream.node, false);\n\t\t},\n\t\tdoTruncate(stream, node, len) {\n\t\t\tif (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n\t\t\tif (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n\t\t\tvar errCode = FS.nodePermissions(node, \"w\");\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tFS.doSetAttr(stream, node, {\n\t\t\t\tsize: len,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t});\n\t\t},\n\t\ttruncate(path, len) {\n\t\t\tif (len < 0) throw new FS.ErrnoError(28);\n\t\t\tvar node;\n\t\t\tif (typeof path == \"string\") node = FS.lookupPath(path, { follow: true }).node;\n\t\t\telse node = path;\n\t\t\tFS.doTruncate(null, node, len);\n\t\t},\n\t\tftruncate(fd, len) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tif (len < 0 || (stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n\t\t\tFS.doTruncate(stream, stream.node, len);\n\t\t},\n\t\tutime(path, atime, mtime) {\n\t\t\tvar node = FS.lookupPath(path, { follow: true }).node;\n\t\t\tFS.checkOpExists(node.node_ops.setattr, 63)(node, {\n\t\t\t\tatime,\n\t\t\t\tmtime\n\t\t\t});\n\t\t},\n\t\topen(path, flags, mode = 438) {\n\t\t\tif (path === \"\") throw new FS.ErrnoError(44);\n\t\t\tflags = FS_modeStringToFlags(flags);\n\t\t\tif (flags & 64) mode = mode & 4095 | 32768;\n\t\t\telse mode = 0;\n\t\t\tvar node;\n\t\t\tvar isDirPath;\n\t\t\tif (typeof path == \"object\") node = path;\n\t\t\telse {\n\t\t\t\tisDirPath = path.endsWith(\"/\");\n\t\t\t\tvar lookup = FS.lookupPath(path, {\n\t\t\t\t\tfollow: !(flags & 131072),\n\t\t\t\t\tnoent_okay: true\n\t\t\t\t});\n\t\t\t\tnode = lookup.node;\n\t\t\t\tpath = lookup.path;\n\t\t\t}\n\t\t\tvar created = false;\n\t\t\tif (flags & 64) if (node) {\n\t\t\t\tif (flags & 128) throw new FS.ErrnoError(20);\n\t\t\t} else if (isDirPath) throw new FS.ErrnoError(31);\n\t\t\telse {\n\t\t\t\tnode = FS.mknod(path, mode | 511, 0);\n\t\t\t\tcreated = true;\n\t\t\t}\n\t\t\tif (!node) throw new FS.ErrnoError(44);\n\t\t\tif (FS.isChrdev(node.mode)) flags &= -513;\n\t\t\tif (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n\t\t\tif (!created) {\n\t\t\t\tvar errCode = FS.mayOpen(node, flags);\n\t\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\t}\n\t\t\tif (flags & 512 && !created) FS.truncate(node, 0);\n\t\t\tflags &= -131713;\n\t\t\tvar stream = FS.createStream({\n\t\t\t\tnode,\n\t\t\t\tpath: FS.getPath(node),\n\t\t\t\tflags,\n\t\t\t\tseekable: true,\n\t\t\t\tposition: 0,\n\t\t\t\tstream_ops: node.stream_ops,\n\t\t\t\tungotten: [],\n\t\t\t\terror: false\n\t\t\t});\n\t\t\tif (stream.stream_ops.open) stream.stream_ops.open(stream);\n\t\t\tif (created) FS.chmod(node, mode & 511);\n\t\t\treturn stream;\n\t\t},\n\t\tclose(stream) {\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif (stream.getdents) stream.getdents = null;\n\t\t\ttry {\n\t\t\t\tif (stream.stream_ops.close) stream.stream_ops.close(stream);\n\t\t\t} catch (e) {\n\t\t\t\tthrow e;\n\t\t\t} finally {\n\t\t\t\tFS.closeStream(stream.fd);\n\t\t\t}\n\t\t\tstream.fd = null;\n\t\t},\n\t\tisClosed(stream) {\n\t\t\treturn stream.fd === null;\n\t\t},\n\t\tllseek(stream, offset, whence) {\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n\t\t\tif (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n\t\t\tstream.position = stream.stream_ops.llseek(stream, offset, whence);\n\t\t\tstream.ungotten = [];\n\t\t\treturn stream.position;\n\t\t},\n\t\tread(stream, buffer, offset, length, position) {\n\t\t\tif (length < 0 || position < 0) throw new FS.ErrnoError(28);\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n\t\t\tif (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n\t\t\tif (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n\t\t\tvar seeking = typeof position != \"undefined\";\n\t\t\tif (!seeking) position = stream.position;\n\t\t\telse if (!stream.seekable) throw new FS.ErrnoError(70);\n\t\t\tvar bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n\t\t\tif (!seeking) stream.position += bytesRead;\n\t\t\treturn bytesRead;\n\t\t},\n\t\twrite(stream, buffer, offset, length, position, canOwn) {\n\t\t\tif (length < 0 || position < 0) throw new FS.ErrnoError(28);\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n\t\t\tif (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n\t\t\tif (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n\t\t\tif (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n\t\t\tvar seeking = typeof position != \"undefined\";\n\t\t\tif (!seeking) position = stream.position;\n\t\t\telse if (!stream.seekable) throw new FS.ErrnoError(70);\n\t\t\tvar bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n\t\t\tif (!seeking) stream.position += bytesWritten;\n\t\t\treturn bytesWritten;\n\t\t},\n\t\tmmap(stream, length, position, prot, flags) {\n\t\t\tif ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n\t\t\tif ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n\t\t\tif (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n\t\t\tif (!length) throw new FS.ErrnoError(28);\n\t\t\treturn stream.stream_ops.mmap(stream, length, position, prot, flags);\n\t\t},\n\t\tmsync(stream, buffer, offset, length, mmapFlags) {\n\t\t\tif (!stream.stream_ops.msync) return 0;\n\t\t\treturn stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n\t\t},\n\t\tioctl(stream, cmd, arg) {\n\t\t\tif (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n\t\t\treturn stream.stream_ops.ioctl(stream, cmd, arg);\n\t\t},\n\t\treadFile(path, opts = {}) {\n\t\t\topts.flags = opts.flags || 0;\n\t\t\topts.encoding = opts.encoding || \"binary\";\n\t\t\tif (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") abort(`Invalid encoding type \"${opts.encoding}\"`);\n\t\t\tvar stream = FS.open(path, opts.flags);\n\t\t\tvar length = FS.stat(path).size;\n\t\t\tvar buf = new Uint8Array(length);\n\t\t\tFS.read(stream, buf, 0, length, 0);\n\t\t\tif (opts.encoding === \"utf8\") buf = UTF8ArrayToString(buf);\n\t\t\tFS.close(stream);\n\t\t\treturn buf;\n\t\t},\n\t\twriteFile(path, data, opts = {}) {\n\t\t\topts.flags = opts.flags || 577;\n\t\t\tvar stream = FS.open(path, opts.flags, opts.mode);\n\t\t\tdata = FS_fileDataToTypedArray(data);\n\t\t\tFS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);\n\t\t\tFS.close(stream);\n\t\t},\n\t\tcwd: () => FS.currentPath,\n\t\tchdir(path) {\n\t\t\tvar lookup = FS.lookupPath(path, { follow: true });\n\t\t\tif (lookup.node === null) throw new FS.ErrnoError(44);\n\t\t\tif (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n\t\t\tvar errCode = FS.nodePermissions(lookup.node, \"x\");\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tFS.currentPath = lookup.path;\n\t\t},\n\t\tcreateDefaultDirectories() {\n\t\t\tFS.mkdir(\"/tmp\");\n\t\t\tFS.mkdir(\"/home\");\n\t\t\tFS.mkdir(\"/home/web_user\");\n\t\t},\n\t\tcreateDefaultDevices() {\n\t\t\tFS.mkdir(\"/dev\");\n\t\t\tFS.registerDevice(FS.makedev(1, 3), {\n\t\t\t\tread: () => 0,\n\t\t\t\twrite: (stream, buffer, offset, length, pos) => length,\n\t\t\t\tllseek: () => 0\n\t\t\t});\n\t\t\tFS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n\t\t\tTTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n\t\t\tTTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n\t\t\tFS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n\t\t\tFS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n\t\t\tvar randomBuffer = new Uint8Array(1024), randomLeft = 0;\n\t\t\tvar randomByte = () => {\n\t\t\t\tif (randomLeft === 0) {\n\t\t\t\t\trandomFill(randomBuffer);\n\t\t\t\t\trandomLeft = randomBuffer.byteLength;\n\t\t\t\t}\n\t\t\t\treturn randomBuffer[--randomLeft];\n\t\t\t};\n\t\t\tFS.createDevice(\"/dev\", \"random\", randomByte);\n\t\t\tFS.createDevice(\"/dev\", \"urandom\", randomByte);\n\t\t\tFS.mkdir(\"/dev/shm\");\n\t\t\tFS.mkdir(\"/dev/shm/tmp\");\n\t\t},\n\t\tcreateSpecialDirectories() {\n\t\t\tFS.mkdir(\"/proc\");\n\t\t\tvar proc_self = FS.mkdir(\"/proc/self\");\n\t\t\tFS.mkdir(\"/proc/self/fd\");\n\t\t\tFS.mount({ mount() {\n\t\t\t\tvar node = FS.createNode(proc_self, \"fd\", 16895, 73);\n\t\t\t\tnode.stream_ops = { llseek: MEMFS.stream_ops.llseek };\n\t\t\t\tnode.node_ops = {\n\t\t\t\t\tlookup(parent, name) {\n\t\t\t\t\t\tvar fd = +name;\n\t\t\t\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\t\t\t\tvar ret = {\n\t\t\t\t\t\t\tparent: null,\n\t\t\t\t\t\t\tmount: { mountpoint: \"fake\" },\n\t\t\t\t\t\t\tnode_ops: { readlink: () => stream.path },\n\t\t\t\t\t\t\tid: fd + 1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tret.parent = ret;\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t},\n\t\t\t\t\treaddir() {\n\t\t\t\t\t\treturn Array.from(FS.streams.entries()).filter(([k, v]) => v).map(([k, v]) => k.toString());\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\treturn node;\n\t\t\t} }, {}, \"/proc/self/fd\");\n\t\t},\n\t\tcreateStandardStreams(input, output, error) {\n\t\t\tif (input) FS.createDevice(\"/dev\", \"stdin\", input);\n\t\t\telse FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n\t\t\tif (output) FS.createDevice(\"/dev\", \"stdout\", null, output);\n\t\t\telse FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n\t\t\tif (error) FS.createDevice(\"/dev\", \"stderr\", null, error);\n\t\t\telse FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n\t\t\tFS.open(\"/dev/stdin\", 0);\n\t\t\tFS.open(\"/dev/stdout\", 1);\n\t\t\tFS.open(\"/dev/stderr\", 1);\n\t\t},\n\t\tstaticInit() {\n\t\t\tFS.nameTable = new Array(4096);\n\t\t\tFS.mount(MEMFS, {}, \"/\");\n\t\t\tFS.createDefaultDirectories();\n\t\t\tFS.createDefaultDevices();\n\t\t\tFS.createSpecialDirectories();\n\t\t\tFS.filesystems = { \"MEMFS\": MEMFS };\n\t\t},\n\t\tinit(input, output, error) {\n\t\t\tFS.initialized = true;\n\t\t\tinput ??= Module[\"stdin\"];\n\t\t\toutput ??= Module[\"stdout\"];\n\t\t\terror ??= Module[\"stderr\"];\n\t\t\tFS.createStandardStreams(input, output, error);\n\t\t},\n\t\tquit() {\n\t\t\tFS.initialized = false;\n\t\t\tfor (var stream of FS.streams) if (stream) FS.close(stream);\n\t\t},\n\t\tfindObject(path, dontResolveLastLink) {\n\t\t\tvar ret = FS.analyzePath(path, dontResolveLastLink);\n\t\t\tif (!ret.exists) return null;\n\t\t\treturn ret.object;\n\t\t},\n\t\tanalyzePath(path, dontResolveLastLink) {\n\t\t\ttry {\n\t\t\t\tvar lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n\t\t\t\tpath = lookup.path;\n\t\t\t} catch (e) {}\n\t\t\tvar ret = {\n\t\t\t\tisRoot: false,\n\t\t\t\texists: false,\n\t\t\t\terror: 0,\n\t\t\t\tname: null,\n\t\t\t\tpath: null,\n\t\t\t\tobject: null,\n\t\t\t\tparentExists: false,\n\t\t\t\tparentPath: null,\n\t\t\t\tparentObject: null\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar lookup = FS.lookupPath(path, { parent: true });\n\t\t\t\tret.parentExists = true;\n\t\t\t\tret.parentPath = lookup.path;\n\t\t\t\tret.parentObject = lookup.node;\n\t\t\t\tret.name = PATH.basename(path);\n\t\t\t\tlookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n\t\t\t\tret.exists = true;\n\t\t\t\tret.path = lookup.path;\n\t\t\t\tret.object = lookup.node;\n\t\t\t\tret.name = lookup.node.name;\n\t\t\t\tret.isRoot = lookup.path === \"/\";\n\t\t\t} catch (e) {\n\t\t\t\tret.error = e.errno;\n\t\t\t}\n\t\t\treturn ret;\n\t\t},\n\t\tcreatePath(parent, path, canRead, canWrite) {\n\t\t\tparent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n\t\t\tvar parts = path.split(\"/\").reverse();\n\t\t\twhile (parts.length) {\n\t\t\t\tvar part = parts.pop();\n\t\t\t\tif (!part) continue;\n\t\t\t\tvar current = PATH.join2(parent, part);\n\t\t\t\ttry {\n\t\t\t\t\tFS.mkdir(current);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e.errno != 20) throw e;\n\t\t\t\t}\n\t\t\t\tparent = current;\n\t\t\t}\n\t\t\treturn current;\n\t\t},\n\t\tcreateFile(parent, name, properties, canRead, canWrite) {\n\t\t\tvar path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n\t\t\tvar mode = FS_getMode(canRead, canWrite);\n\t\t\treturn FS.create(path, mode);\n\t\t},\n\t\tcreateDataFile(parent, name, data, canRead, canWrite, canOwn) {\n\t\t\tvar path = name;\n\t\t\tif (parent) {\n\t\t\t\tparent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n\t\t\t\tpath = name ? PATH.join2(parent, name) : parent;\n\t\t\t}\n\t\t\tvar mode = FS_getMode(canRead, canWrite);\n\t\t\tvar node = FS.create(path, mode);\n\t\t\tif (data) {\n\t\t\t\tdata = FS_fileDataToTypedArray(data);\n\t\t\t\tFS.chmod(node, mode | 146);\n\t\t\t\tvar stream = FS.open(node, 577);\n\t\t\t\tFS.write(stream, data, 0, data.length, 0, canOwn);\n\t\t\t\tFS.close(stream);\n\t\t\t\tFS.chmod(node, mode);\n\t\t\t}\n\t\t},\n\t\tcreateDevice(parent, name, input, output) {\n\t\t\tvar path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n\t\t\tvar mode = FS_getMode(!!input, !!output);\n\t\t\tFS.createDevice.major ??= 64;\n\t\t\tvar dev = FS.makedev(FS.createDevice.major++, 0);\n\t\t\tFS.registerDevice(dev, {\n\t\t\t\topen(stream) {\n\t\t\t\t\tstream.seekable = false;\n\t\t\t\t},\n\t\t\t\tclose(stream) {\n\t\t\t\t\tif (output?.buffer?.length) output(10);\n\t\t\t\t},\n\t\t\t\tread(stream, buffer, offset, length, pos) {\n\t\t\t\t\tvar bytesRead = 0;\n\t\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\t\tvar result;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresult = input();\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result === void 0 && bytesRead === 0) throw new FS.ErrnoError(6);\n\t\t\t\t\t\tif (result === null || result === void 0) break;\n\t\t\t\t\t\tbytesRead++;\n\t\t\t\t\t\tbuffer[offset + i] = result;\n\t\t\t\t\t}\n\t\t\t\t\tif (bytesRead) stream.node.atime = Date.now();\n\t\t\t\t\treturn bytesRead;\n\t\t\t\t},\n\t\t\t\twrite(stream, buffer, offset, length, pos) {\n\t\t\t\t\tfor (var i = 0; i < length; i++) try {\n\t\t\t\t\t\toutput(buffer[offset + i]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t\t}\n\t\t\t\t\tif (length) stream.node.mtime = stream.node.ctime = Date.now();\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn FS.mkdev(path, mode, dev);\n\t\t},\n\t\tforceLoadFile(obj) {\n\t\t\tif (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n\t\t\tif (globalThis.XMLHttpRequest) abort(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n\t\t\telse try {\n\t\t\t\tobj.contents = readBinary(obj.url);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t}\n\t\t},\n\t\tcreateLazyFile(parent, name, url, canRead, canWrite) {\n\t\t\tclass LazyUint8Array {\n\t\t\t\tlengthKnown = false;\n\t\t\t\tchunks = [];\n\t\t\t\tget(idx) {\n\t\t\t\t\tif (idx > this.length - 1 || idx < 0) return;\n\t\t\t\t\tvar chunkOffset = idx % this.chunkSize;\n\t\t\t\t\tvar chunkNum = idx / this.chunkSize | 0;\n\t\t\t\t\treturn this.getter(chunkNum)[chunkOffset];\n\t\t\t\t}\n\t\t\t\tsetDataGetter(getter) {\n\t\t\t\t\tthis.getter = getter;\n\t\t\t\t}\n\t\t\t\tcacheLength() {\n\t\t\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\t\t\txhr.open(\"HEAD\", url, false);\n\t\t\t\t\txhr.send(null);\n\t\t\t\t\tif (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n\t\t\t\t\tvar datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n\t\t\t\t\tvar header;\n\t\t\t\t\tvar hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n\t\t\t\t\tvar usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n\t\t\t\t\tvar chunkSize = 1024 * 1024;\n\t\t\t\t\tif (!hasByteServing) chunkSize = datalength;\n\t\t\t\t\tvar doXHR = (from, to) => {\n\t\t\t\t\t\tif (from > to) abort(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n\t\t\t\t\t\tif (to > datalength - 1) abort(\"only \" + datalength + \" bytes available! programmer error!\");\n\t\t\t\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\t\t\t\txhr.open(\"GET\", url, false);\n\t\t\t\t\t\tif (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n\t\t\t\t\t\txhr.responseType = \"arraybuffer\";\n\t\t\t\t\t\tif (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\t\t\t\t\t\txhr.send(null);\n\t\t\t\t\t\tif (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n\t\t\t\t\t\tif (xhr.response !== void 0) return new Uint8Array(xhr.response || []);\n\t\t\t\t\t\treturn intArrayFromString(xhr.responseText || \"\", true);\n\t\t\t\t\t};\n\t\t\t\t\tvar lazyArray = this;\n\t\t\t\t\tlazyArray.setDataGetter((chunkNum) => {\n\t\t\t\t\t\tvar start = chunkNum * chunkSize;\n\t\t\t\t\t\tvar end = (chunkNum + 1) * chunkSize - 1;\n\t\t\t\t\t\tend = Math.min(end, datalength - 1);\n\t\t\t\t\t\tif (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n\t\t\t\t\t\tif (typeof lazyArray.chunks[chunkNum] == \"undefined\") abort(\"doXHR failed!\");\n\t\t\t\t\t\treturn lazyArray.chunks[chunkNum];\n\t\t\t\t\t});\n\t\t\t\t\tif (usesGzip || !datalength) {\n\t\t\t\t\t\tchunkSize = datalength = 1;\n\t\t\t\t\t\tdatalength = this.getter(0).length;\n\t\t\t\t\t\tchunkSize = datalength;\n\t\t\t\t\t\tout(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n\t\t\t\t\t}\n\t\t\t\t\tthis._length = datalength;\n\t\t\t\t\tthis._chunkSize = chunkSize;\n\t\t\t\t\tthis.lengthKnown = true;\n\t\t\t\t}\n\t\t\t\tget length() {\n\t\t\t\t\tif (!this.lengthKnown) this.cacheLength();\n\t\t\t\t\treturn this._length;\n\t\t\t\t}\n\t\t\t\tget chunkSize() {\n\t\t\t\t\tif (!this.lengthKnown) this.cacheLength();\n\t\t\t\t\treturn this._chunkSize;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (globalThis.XMLHttpRequest) {\n\t\t\t\tif (!ENVIRONMENT_IS_WORKER) abort(\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\");\n\t\t\t\tvar properties = {\n\t\t\t\t\tisDevice: false,\n\t\t\t\t\tcontents: new LazyUint8Array()\n\t\t\t\t};\n\t\t\t} else var properties = {\n\t\t\t\tisDevice: false,\n\t\t\t\turl\n\t\t\t};\n\t\t\tvar node = FS.createFile(parent, name, properties, canRead, canWrite);\n\t\t\tif (properties.contents) node.contents = properties.contents;\n\t\t\telse if (properties.url) {\n\t\t\t\tnode.contents = null;\n\t\t\t\tnode.url = properties.url;\n\t\t\t}\n\t\t\tObject.defineProperties(node, { usedBytes: { get: function() {\n\t\t\t\treturn this.contents.length;\n\t\t\t} } });\n\t\t\tvar stream_ops = {};\n\t\t\tfor (const [key, fn] of Object.entries(node.stream_ops)) stream_ops[key] = (...args) => {\n\t\t\t\tFS.forceLoadFile(node);\n\t\t\t\treturn fn(...args);\n\t\t\t};\n\t\t\tfunction writeChunks(stream, buffer, offset, length, position) {\n\t\t\t\tvar contents = stream.node.contents;\n\t\t\t\tif (position >= contents.length) return 0;\n\t\t\t\tvar size = Math.min(contents.length - position, length);\n\t\t\t\tif (contents.slice) for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n\t\t\t\telse for (var i = 0; i < size; i++) buffer[offset + i] = contents.get(position + i);\n\t\t\t\treturn size;\n\t\t\t}\n\t\t\tstream_ops.read = (stream, buffer, offset, length, position) => {\n\t\t\t\tFS.forceLoadFile(node);\n\t\t\t\treturn writeChunks(stream, buffer, offset, length, position);\n\t\t\t};\n\t\t\tstream_ops.mmap = (stream, length, position, prot, flags) => {\n\t\t\t\tFS.forceLoadFile(node);\n\t\t\t\tvar ptr = mmapAlloc(length);\n\t\t\t\tif (!ptr) throw new FS.ErrnoError(48);\n\t\t\t\twriteChunks(stream, HEAP8, ptr, length, position);\n\t\t\t\treturn {\n\t\t\t\t\tptr,\n\t\t\t\t\tallocated: true\n\t\t\t\t};\n\t\t\t};\n\t\t\tnode.stream_ops = stream_ops;\n\t\t\treturn node;\n\t\t}\n\t};\n\t/**\n\t* Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the\n\t* emscripten HEAP, returns a copy of that string as a Javascript String object.\n\t*\n\t* @param {number} ptr\n\t* @param {number=} maxBytesToRead - An optional length that specifies the\n\t* maximum number of bytes to read. You can omit this parameter to scan the\n\t* string until the first 0 byte. If maxBytesToRead is passed, and the string\n\t* at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the\n\t* string will cut short at that byte index.\n\t* @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.\n\t* @return {string}\n\t*/\n\tvar UTF8ToString = (ptr, maxBytesToRead, ignoreNul) => {\n\t\tif (!ptr) return \"\";\n\t\tvar end = findStringEnd(HEAPU8, ptr, maxBytesToRead, ignoreNul);\n\t\treturn UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n\t};\n\tvar SYSCALLS = {\n\t\tcalculateAt(dirfd, path, allowEmpty) {\n\t\t\tif (PATH.isAbs(path)) return path;\n\t\t\tvar dir;\n\t\t\tif (dirfd === -100) dir = FS.cwd();\n\t\t\telse dir = SYSCALLS.getStreamFromFD(dirfd).path;\n\t\t\tif (path.length == 0) {\n\t\t\t\tif (!allowEmpty) throw new FS.ErrnoError(44);\n\t\t\t\treturn dir;\n\t\t\t}\n\t\t\treturn dir + \"/\" + path;\n\t\t},\n\t\twriteStat(buf, stat) {\n\t\t\tHEAPU32[buf >> 2] = stat.dev;\n\t\t\tHEAPU32[buf + 4 >> 2] = stat.mode;\n\t\t\tHEAPU32[buf + 8 >> 2] = stat.nlink;\n\t\t\tHEAPU32[buf + 12 >> 2] = stat.uid;\n\t\t\tHEAPU32[buf + 16 >> 2] = stat.gid;\n\t\t\tHEAPU32[buf + 20 >> 2] = stat.rdev;\n\t\t\tHEAP64[buf + 24 >> 3] = BigInt(stat.size);\n\t\t\tHEAP32[buf + 32 >> 2] = 4096;\n\t\t\tHEAP32[buf + 36 >> 2] = stat.blocks;\n\t\t\tvar atime = stat.atime.getTime();\n\t\t\tvar mtime = stat.mtime.getTime();\n\t\t\tvar ctime = stat.ctime.getTime();\n\t\t\tHEAP64[buf + 40 >> 3] = BigInt(Math.floor(atime / 1e3));\n\t\t\tHEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3 * 1e3;\n\t\t\tHEAP64[buf + 56 >> 3] = BigInt(Math.floor(mtime / 1e3));\n\t\t\tHEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3 * 1e3;\n\t\t\tHEAP64[buf + 72 >> 3] = BigInt(Math.floor(ctime / 1e3));\n\t\t\tHEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3 * 1e3;\n\t\t\tHEAP64[buf + 88 >> 3] = BigInt(stat.ino);\n\t\t\treturn 0;\n\t\t},\n\t\twriteStatFs(buf, stats) {\n\t\t\tHEAPU32[buf + 4 >> 2] = stats.bsize;\n\t\t\tHEAPU32[buf + 60 >> 2] = stats.bsize;\n\t\t\tHEAP64[buf + 8 >> 3] = BigInt(stats.blocks);\n\t\t\tHEAP64[buf + 16 >> 3] = BigInt(stats.bfree);\n\t\t\tHEAP64[buf + 24 >> 3] = BigInt(stats.bavail);\n\t\t\tHEAP64[buf + 32 >> 3] = BigInt(stats.files);\n\t\t\tHEAP64[buf + 40 >> 3] = BigInt(stats.ffree);\n\t\t\tHEAPU32[buf + 48 >> 2] = stats.fsid;\n\t\t\tHEAPU32[buf + 64 >> 2] = stats.flags;\n\t\t\tHEAPU32[buf + 56 >> 2] = stats.namelen;\n\t\t},\n\t\tdoMsync(addr, stream, len, flags, offset) {\n\t\t\tif (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n\t\t\tif (flags & 2) return 0;\n\t\t\tvar buffer = HEAPU8.slice(addr, addr + len);\n\t\t\tFS.msync(stream, buffer, offset, len, flags);\n\t\t},\n\t\tgetStreamFromFD(fd) {\n\t\t\treturn FS.getStreamChecked(fd);\n\t\t},\n\t\tvarargs: void 0,\n\t\tgetStr(ptr) {\n\t\t\treturn UTF8ToString(ptr);\n\t\t}\n\t};\n\tfunction ___syscall_chmod(path, mode) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tFS.chmod(path, mode);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tif (amode & -8) return -28;\n\t\t\tvar node = FS.lookupPath(path, { follow: true }).node;\n\t\t\tif (!node) return -44;\n\t\t\tvar perms = \"\";\n\t\t\tif (amode & 4) perms += \"r\";\n\t\t\tif (amode & 2) perms += \"w\";\n\t\t\tif (amode & 1) perms += \"x\";\n\t\t\tif (perms && FS.nodePermissions(node, perms)) return -2;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_fchmod(fd, mode) {\n\t\ttry {\n\t\t\tFS.fchmod(fd, mode);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_fchown32(fd, owner, group) {\n\t\ttry {\n\t\t\tFS.fchown(fd, owner, group);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar syscallGetVarargI = () => {\n\t\tvar ret = HEAP32[+SYSCALLS.varargs >> 2];\n\t\tSYSCALLS.varargs += 4;\n\t\treturn ret;\n\t};\n\tvar syscallGetVarargP = syscallGetVarargI;\n\tfunction ___syscall_fcntl64(fd, cmd, varargs) {\n\t\tSYSCALLS.varargs = varargs;\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tswitch (cmd) {\n\t\t\t\tcase 0:\n\t\t\t\t\tvar arg = syscallGetVarargI();\n\t\t\t\t\tif (arg < 0) return -28;\n\t\t\t\t\twhile (FS.streams[arg]) arg++;\n\t\t\t\t\treturn FS.dupStream(stream, arg).fd;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2: return 0;\n\t\t\t\tcase 3: return stream.flags;\n\t\t\t\tcase 4:\n\t\t\t\t\tvar arg = syscallGetVarargI();\n\t\t\t\t\tstream.flags |= arg;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 12:\n\t\t\t\t\tvar arg = syscallGetVarargP();\n\t\t\t\t\tvar offset = 0;\n\t\t\t\t\tHEAP16[arg + offset >> 1] = 2;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 13:\n\t\t\t\tcase 14: return 0;\n\t\t\t}\n\t\t\treturn -28;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_fstat64(fd, buf) {\n\t\ttry {\n\t\t\treturn SYSCALLS.writeStat(buf, FS.fstat(fd));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar INT53_MAX = 9007199254740992;\n\tvar INT53_MIN = -9007199254740992;\n\tvar bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);\n\tfunction ___syscall_ftruncate64(fd, length) {\n\t\tlength = bigintToI53Checked(length);\n\t\ttry {\n\t\t\tif (isNaN(length)) return -61;\n\t\t\tFS.ftruncate(fd, length);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar stringToUTF8 = (str, outPtr, maxBytesToWrite) => {\n\t\treturn stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n\t};\n\tfunction ___syscall_getcwd(buf, size) {\n\t\ttry {\n\t\t\tif (size === 0) return -28;\n\t\t\tvar cwd = FS.cwd();\n\t\t\tvar cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n\t\t\tif (size < cwdLengthInBytes) return -68;\n\t\t\tstringToUTF8(cwd, buf, size);\n\t\t\treturn cwdLengthInBytes;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_ioctl(fd, op, varargs) {\n\t\tSYSCALLS.varargs = varargs;\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tswitch (op) {\n\t\t\t\tcase 21509:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21505:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tif (stream.tty.ops.ioctl_tcgets) {\n\t\t\t\t\t\tvar termios = stream.tty.ops.ioctl_tcgets(stream);\n\t\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\t\tHEAP32[argp >> 2] = termios.c_iflag || 0;\n\t\t\t\t\t\tHEAP32[argp + 4 >> 2] = termios.c_oflag || 0;\n\t\t\t\t\t\tHEAP32[argp + 8 >> 2] = termios.c_cflag || 0;\n\t\t\t\t\t\tHEAP32[argp + 12 >> 2] = termios.c_lflag || 0;\n\t\t\t\t\t\tfor (var i = 0; i < 32; i++) HEAP8[argp + i + 17] = termios.c_cc[i] || 0;\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21510:\n\t\t\t\tcase 21511:\n\t\t\t\tcase 21512:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21506:\n\t\t\t\tcase 21507:\n\t\t\t\tcase 21508:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tif (stream.tty.ops.ioctl_tcsets) {\n\t\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\t\tvar c_iflag = HEAP32[argp >> 2];\n\t\t\t\t\t\tvar c_oflag = HEAP32[argp + 4 >> 2];\n\t\t\t\t\t\tvar c_cflag = HEAP32[argp + 8 >> 2];\n\t\t\t\t\t\tvar c_lflag = HEAP32[argp + 12 >> 2];\n\t\t\t\t\t\tvar c_cc = [];\n\t\t\t\t\t\tfor (var i = 0; i < 32; i++) c_cc.push(HEAP8[argp + i + 17]);\n\t\t\t\t\t\treturn stream.tty.ops.ioctl_tcsets(stream.tty, op, {\n\t\t\t\t\t\t\tc_iflag,\n\t\t\t\t\t\t\tc_oflag,\n\t\t\t\t\t\t\tc_cflag,\n\t\t\t\t\t\t\tc_lflag,\n\t\t\t\t\t\t\tc_cc\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21519:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\tHEAP32[argp >> 2] = 0;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21520:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn -28;\n\t\t\t\tcase 21537:\n\t\t\t\tcase 21531:\n\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\treturn FS.ioctl(stream, op, argp);\n\t\t\t\tcase 21523:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tif (stream.tty.ops.ioctl_tiocgwinsz) {\n\t\t\t\t\t\tvar winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);\n\t\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\t\tHEAP16[argp >> 1] = winsize[0];\n\t\t\t\t\t\tHEAP16[argp + 2 >> 1] = winsize[1];\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21524:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21515:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tdefault: return -28;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_lstat64(path, buf) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\treturn SYSCALLS.writeStat(buf, FS.lstat(path));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_mkdirat(dirfd, path, mode) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tFS.mkdir(path, mode, 0);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_newfstatat(dirfd, path, buf, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tvar nofollow = flags & 256;\n\t\t\tvar allowEmpty = flags & 4096;\n\t\t\tflags = flags & -6401;\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n\t\t\treturn SYSCALLS.writeStat(buf, nofollow ? FS.lstat(path) : FS.stat(path));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_openat(dirfd, path, flags, varargs) {\n\t\tSYSCALLS.varargs = varargs;\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tvar mode = varargs ? syscallGetVarargI() : 0;\n\t\t\treturn FS.open(path, flags, mode).fd;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tif (bufsize <= 0) return -28;\n\t\t\tvar ret = FS.readlink(path);\n\t\t\tvar len = Math.min(bufsize, lengthBytesUTF8(ret));\n\t\t\tvar endChar = HEAP8[buf + len];\n\t\t\tstringToUTF8(ret, buf, bufsize + 1);\n\t\t\tHEAP8[buf + len] = endChar;\n\t\t\treturn len;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_rmdir(path) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tFS.rmdir(path);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_stat64(path, buf) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\treturn SYSCALLS.writeStat(buf, FS.stat(path));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_unlinkat(dirfd, path, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tif (!flags) FS.unlink(path);\n\t\t\telse if (flags === 512) FS.rmdir(path);\n\t\t\telse return -28;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar readI53FromI64 = (ptr) => {\n\t\treturn HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n\t};\n\tfunction ___syscall_utimensat(dirfd, path, times, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path, true);\n\t\t\tvar now = Date.now(), atime, mtime;\n\t\t\tif (!times) {\n\t\t\t\tatime = now;\n\t\t\t\tmtime = now;\n\t\t\t} else {\n\t\t\t\tvar seconds = readI53FromI64(times);\n\t\t\t\tvar nanoseconds = HEAP32[times + 8 >> 2];\n\t\t\t\tif (nanoseconds == 1073741823) atime = now;\n\t\t\t\telse if (nanoseconds == 1073741822) atime = null;\n\t\t\t\telse atime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n\t\t\t\ttimes += 16;\n\t\t\t\tseconds = readI53FromI64(times);\n\t\t\t\tnanoseconds = HEAP32[times + 8 >> 2];\n\t\t\t\tif (nanoseconds == 1073741823) mtime = now;\n\t\t\t\telse if (nanoseconds == 1073741822) mtime = null;\n\t\t\t\telse mtime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n\t\t\t}\n\t\t\tif ((mtime ?? atime) !== null) FS.utime(path, atime, mtime);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n\tvar MONTH_DAYS_LEAP_CUMULATIVE = [\n\t\t0,\n\t\t31,\n\t\t60,\n\t\t91,\n\t\t121,\n\t\t152,\n\t\t182,\n\t\t213,\n\t\t244,\n\t\t274,\n\t\t305,\n\t\t335\n\t];\n\tvar MONTH_DAYS_REGULAR_CUMULATIVE = [\n\t\t0,\n\t\t31,\n\t\t59,\n\t\t90,\n\t\t120,\n\t\t151,\n\t\t181,\n\t\t212,\n\t\t243,\n\t\t273,\n\t\t304,\n\t\t334\n\t];\n\tvar ydayFromDate = (date) => {\n\t\treturn (isLeapYear(date.getFullYear()) ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE)[date.getMonth()] + date.getDate() - 1;\n\t};\n\tfunction __localtime_js(time, tmPtr) {\n\t\ttime = bigintToI53Checked(time);\n\t\tvar date = /* @__PURE__ */ new Date(time * 1e3);\n\t\tHEAP32[tmPtr >> 2] = date.getSeconds();\n\t\tHEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n\t\tHEAP32[tmPtr + 8 >> 2] = date.getHours();\n\t\tHEAP32[tmPtr + 12 >> 2] = date.getDate();\n\t\tHEAP32[tmPtr + 16 >> 2] = date.getMonth();\n\t\tHEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n\t\tHEAP32[tmPtr + 24 >> 2] = date.getDay();\n\t\tvar yday = ydayFromDate(date) | 0;\n\t\tHEAP32[tmPtr + 28 >> 2] = yday;\n\t\tHEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n\t\tvar start = new Date(date.getFullYear(), 0, 1);\n\t\tvar summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n\t\tvar winterOffset = start.getTimezoneOffset();\n\t\tvar dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n\t\tHEAP32[tmPtr + 32 >> 2] = dst;\n\t}\n\tfunction __mmap_js(len, prot, flags, fd, offset, allocated, addr) {\n\t\toffset = bigintToI53Checked(offset);\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tvar res = FS.mmap(stream, len, offset, prot, flags);\n\t\t\tvar ptr = res.ptr;\n\t\t\tHEAP32[allocated >> 2] = res.allocated;\n\t\t\tHEAPU32[addr >> 2] = ptr;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction __munmap_js(addr, len, prot, flags, fd, offset) {\n\t\toffset = bigintToI53Checked(offset);\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tif (prot & 2) SYSCALLS.doMsync(addr, stream, len, flags, offset);\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar __tzset_js = (timezone, daylight, std_name, dst_name) => {\n\t\tvar currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n\t\tvar winter = new Date(currentYear, 0, 1);\n\t\tvar summer = new Date(currentYear, 6, 1);\n\t\tvar winterOffset = winter.getTimezoneOffset();\n\t\tvar summerOffset = summer.getTimezoneOffset();\n\t\tvar stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n\t\tHEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n\t\tHEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n\t\tvar extractZone = (timezoneOffset) => {\n\t\t\tvar sign = timezoneOffset >= 0 ? \"-\" : \"+\";\n\t\t\tvar absOffset = Math.abs(timezoneOffset);\n\t\t\treturn `UTC${sign}${String(Math.floor(absOffset / 60)).padStart(2, \"0\")}${String(absOffset % 60).padStart(2, \"0\")}`;\n\t\t};\n\t\tvar winterName = extractZone(winterOffset);\n\t\tvar summerName = extractZone(summerOffset);\n\t\tif (summerOffset < winterOffset) {\n\t\t\tstringToUTF8(winterName, std_name, 17);\n\t\t\tstringToUTF8(summerName, dst_name, 17);\n\t\t} else {\n\t\t\tstringToUTF8(winterName, dst_name, 17);\n\t\t\tstringToUTF8(summerName, std_name, 17);\n\t\t}\n\t};\n\tvar _emscripten_get_now = () => performance.now();\n\tvar _emscripten_date_now = () => Date.now();\n\tvar nowIsMonotonic = 1;\n\tvar checkWasiClock = (clock_id) => clock_id >= 0 && clock_id <= 3;\n\tfunction _clock_time_get(clk_id, ignored_precision, ptime) {\n\t\tignored_precision = bigintToI53Checked(ignored_precision);\n\t\tif (!checkWasiClock(clk_id)) return 28;\n\t\tvar now;\n\t\tif (clk_id === 0) now = _emscripten_date_now();\n\t\telse if (nowIsMonotonic) now = _emscripten_get_now();\n\t\telse return 52;\n\t\tvar nsec = Math.round(now * 1e3 * 1e3);\n\t\tHEAP64[ptime >> 3] = BigInt(nsec);\n\t\treturn 0;\n\t}\n\tvar getHeapMax = () => 2147483648;\n\tvar _emscripten_get_heap_max = () => getHeapMax();\n\tvar growMemory = (size) => {\n\t\tvar pages = (size - wasmMemory.buffer.byteLength + 65535) / 65536 | 0;\n\t\ttry {\n\t\t\twasmMemory.grow(pages);\n\t\t\tupdateMemoryViews();\n\t\t\treturn 1;\n\t\t} catch (e) {}\n\t};\n\tvar _emscripten_resize_heap = (requestedSize) => {\n\t\tvar oldSize = HEAPU8.length;\n\t\trequestedSize >>>= 0;\n\t\tvar maxHeapSize = getHeapMax();\n\t\tif (requestedSize > maxHeapSize) return false;\n\t\tfor (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n\t\t\tvar overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n\t\t\toverGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n\t\t\tif (growMemory(Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)))) return true;\n\t\t}\n\t\treturn false;\n\t};\n\tvar ENV = {};\n\tvar getExecutableName = () => thisProgram || \"./this.program\";\n\tvar getEnvStrings = () => {\n\t\tif (!getEnvStrings.strings) {\n\t\t\tvar env = {\n\t\t\t\t\"USER\": \"web_user\",\n\t\t\t\t\"LOGNAME\": \"web_user\",\n\t\t\t\t\"PATH\": \"/\",\n\t\t\t\t\"PWD\": \"/\",\n\t\t\t\t\"HOME\": \"/home/web_user\",\n\t\t\t\t\"LANG\": (globalThis.navigator?.language ?? \"C\").replace(\"-\", \"_\") + \".UTF-8\",\n\t\t\t\t\"_\": getExecutableName()\n\t\t\t};\n\t\t\tfor (var x in ENV) if (ENV[x] === void 0) delete env[x];\n\t\t\telse env[x] = ENV[x];\n\t\t\tvar strings = [];\n\t\t\tfor (var x in env) strings.push(`${x}=${env[x]}`);\n\t\t\tgetEnvStrings.strings = strings;\n\t\t}\n\t\treturn getEnvStrings.strings;\n\t};\n\tvar _environ_get = (__environ, environ_buf) => {\n\t\tvar bufSize = 0;\n\t\tvar envp = 0;\n\t\tfor (var string of getEnvStrings()) {\n\t\t\tvar ptr = environ_buf + bufSize;\n\t\t\tHEAPU32[__environ + envp >> 2] = ptr;\n\t\t\tbufSize += stringToUTF8(string, ptr, Infinity) + 1;\n\t\t\tenvp += 4;\n\t\t}\n\t\treturn 0;\n\t};\n\tvar _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n\t\tvar strings = getEnvStrings();\n\t\tHEAPU32[penviron_count >> 2] = strings.length;\n\t\tvar bufSize = 0;\n\t\tfor (var string of strings) bufSize += lengthBytesUTF8(string) + 1;\n\t\tHEAPU32[penviron_buf_size >> 2] = bufSize;\n\t\treturn 0;\n\t};\n\tfunction _fd_close(fd) {\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tFS.close(stream);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tfunction _fd_fdstat_get(fd, pbuf) {\n\t\ttry {\n\t\t\tvar rightsBase = 0;\n\t\t\tvar rightsInheriting = 0;\n\t\t\tvar flags = 0;\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tvar type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n\t\t\tHEAP8[pbuf] = type;\n\t\t\tHEAP16[pbuf + 2 >> 1] = flags;\n\t\t\tHEAP64[pbuf + 8 >> 3] = BigInt(rightsBase);\n\t\t\tHEAP64[pbuf + 16 >> 3] = BigInt(rightsInheriting);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\t/** @param {number=} offset */\n\tvar doReadv = (stream, iov, iovcnt, offset) => {\n\t\tvar ret = 0;\n\t\tfor (var i = 0; i < iovcnt; i++) {\n\t\t\tvar ptr = HEAPU32[iov >> 2];\n\t\t\tvar len = HEAPU32[iov + 4 >> 2];\n\t\t\tiov += 8;\n\t\t\tvar curr = FS.read(stream, HEAP8, ptr, len, offset);\n\t\t\tif (curr < 0) return -1;\n\t\t\tret += curr;\n\t\t\tif (curr < len) break;\n\t\t\tif (typeof offset != \"undefined\") offset += curr;\n\t\t}\n\t\treturn ret;\n\t};\n\tfunction _fd_read(fd, iov, iovcnt, pnum) {\n\t\ttry {\n\t\t\tvar num = doReadv(SYSCALLS.getStreamFromFD(fd), iov, iovcnt);\n\t\t\tHEAPU32[pnum >> 2] = num;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tfunction _fd_seek(fd, offset, whence, newOffset) {\n\t\toffset = bigintToI53Checked(offset);\n\t\ttry {\n\t\t\tif (isNaN(offset)) return 61;\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tFS.llseek(stream, offset, whence);\n\t\t\tHEAP64[newOffset >> 3] = BigInt(stream.position);\n\t\t\tif (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tfunction _fd_sync(fd) {\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\treturn stream.stream_ops?.fsync?.(stream);\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\t/** @param {number=} offset */\n\tvar doWritev = (stream, iov, iovcnt, offset) => {\n\t\tvar ret = 0;\n\t\tfor (var i = 0; i < iovcnt; i++) {\n\t\t\tvar ptr = HEAPU32[iov >> 2];\n\t\t\tvar len = HEAPU32[iov + 4 >> 2];\n\t\t\tiov += 8;\n\t\t\tvar curr = FS.write(stream, HEAP8, ptr, len, offset);\n\t\t\tif (curr < 0) return -1;\n\t\t\tret += curr;\n\t\t\tif (curr < len) break;\n\t\t\tif (typeof offset != \"undefined\") offset += curr;\n\t\t}\n\t\treturn ret;\n\t};\n\tfunction _fd_write(fd, iov, iovcnt, pnum) {\n\t\ttry {\n\t\t\tvar num = doWritev(SYSCALLS.getStreamFromFD(fd), iov, iovcnt);\n\t\t\tHEAPU32[pnum >> 2] = num;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tFS.createPreloadedFile = FS_createPreloadedFile;\n\tFS.preloadFile = FS_preloadFile;\n\tFS.staticInit();\n\tinitMemory();\n\tif (Module[\"noExitRuntime\"]) Module[\"noExitRuntime\"];\n\tif (Module[\"preloadPlugins\"]) preloadPlugins = Module[\"preloadPlugins\"];\n\tif (Module[\"print\"]) out = Module[\"print\"];\n\tif (Module[\"printErr\"]) err = Module[\"printErr\"];\n\tif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\tif (Module[\"arguments\"]) Module[\"arguments\"];\n\tif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\tif (Module[\"preInit\"]) {\n\t\tif (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n\t\twhile (Module[\"preInit\"].length > 0) Module[\"preInit\"].shift()();\n\t}\n\tModule[\"wasmMemory\"] = wasmMemory;\n\tvar _emscripten_builtin_memalign;\n\tfunction assignWasmExports(wasmExports) {\n\t\tModule[\"_sqlite3_status64\"] = wasmExports[\"sqlite3_status64\"];\n\t\tModule[\"_sqlite3_status\"] = wasmExports[\"sqlite3_status\"];\n\t\tModule[\"_sqlite3_db_status64\"] = wasmExports[\"sqlite3_db_status64\"];\n\t\tModule[\"_sqlite3_msize\"] = wasmExports[\"sqlite3_msize\"];\n\t\tModule[\"_sqlite3_db_status\"] = wasmExports[\"sqlite3_db_status\"];\n\t\tModule[\"_sqlite3_vfs_find\"] = wasmExports[\"sqlite3_vfs_find\"];\n\t\tModule[\"_sqlite3_initialize\"] = wasmExports[\"sqlite3_initialize\"];\n\t\tModule[\"_sqlite3_malloc\"] = wasmExports[\"sqlite3_malloc\"];\n\t\tModule[\"_sqlite3_free\"] = wasmExports[\"sqlite3_free\"];\n\t\tModule[\"_sqlite3_vfs_register\"] = wasmExports[\"sqlite3_vfs_register\"];\n\t\tModule[\"_sqlite3_vfs_unregister\"] = wasmExports[\"sqlite3_vfs_unregister\"];\n\t\tModule[\"_sqlite3_malloc64\"] = wasmExports[\"sqlite3_malloc64\"];\n\t\tModule[\"_sqlite3_realloc\"] = wasmExports[\"sqlite3_realloc\"];\n\t\tModule[\"_sqlite3_realloc64\"] = wasmExports[\"sqlite3_realloc64\"];\n\t\tModule[\"_sqlite3_value_text\"] = wasmExports[\"sqlite3_value_text\"];\n\t\tModule[\"_sqlite3_randomness\"] = wasmExports[\"sqlite3_randomness\"];\n\t\tModule[\"_sqlite3_stricmp\"] = wasmExports[\"sqlite3_stricmp\"];\n\t\tModule[\"_sqlite3_strnicmp\"] = wasmExports[\"sqlite3_strnicmp\"];\n\t\tModule[\"_sqlite3_uri_parameter\"] = wasmExports[\"sqlite3_uri_parameter\"];\n\t\tModule[\"_sqlite3_uri_boolean\"] = wasmExports[\"sqlite3_uri_boolean\"];\n\t\tModule[\"_sqlite3_serialize\"] = wasmExports[\"sqlite3_serialize\"];\n\t\tModule[\"_sqlite3_prepare_v2\"] = wasmExports[\"sqlite3_prepare_v2\"];\n\t\tModule[\"_sqlite3_step\"] = wasmExports[\"sqlite3_step\"];\n\t\tModule[\"_sqlite3_column_int64\"] = wasmExports[\"sqlite3_column_int64\"];\n\t\tModule[\"_sqlite3_reset\"] = wasmExports[\"sqlite3_reset\"];\n\t\tModule[\"_sqlite3_exec\"] = wasmExports[\"sqlite3_exec\"];\n\t\tModule[\"_sqlite3_column_int\"] = wasmExports[\"sqlite3_column_int\"];\n\t\tModule[\"_sqlite3_finalize\"] = wasmExports[\"sqlite3_finalize\"];\n\t\tModule[\"_sqlite3_file_control\"] = wasmExports[\"sqlite3_file_control\"];\n\t\tModule[\"_sqlite3_column_name\"] = wasmExports[\"sqlite3_column_name\"];\n\t\tModule[\"_sqlite3_column_text\"] = wasmExports[\"sqlite3_column_text\"];\n\t\tModule[\"_sqlite3_column_type\"] = wasmExports[\"sqlite3_column_type\"];\n\t\tModule[\"_sqlite3_errmsg\"] = wasmExports[\"sqlite3_errmsg\"];\n\t\tModule[\"_sqlite3_deserialize\"] = wasmExports[\"sqlite3_deserialize\"];\n\t\tModule[\"_sqlite3_clear_bindings\"] = wasmExports[\"sqlite3_clear_bindings\"];\n\t\tModule[\"_sqlite3_value_blob\"] = wasmExports[\"sqlite3_value_blob\"];\n\t\tModule[\"_sqlite3_value_bytes\"] = wasmExports[\"sqlite3_value_bytes\"];\n\t\tModule[\"_sqlite3_value_double\"] = wasmExports[\"sqlite3_value_double\"];\n\t\tModule[\"_sqlite3_value_int\"] = wasmExports[\"sqlite3_value_int\"];\n\t\tModule[\"_sqlite3_value_int64\"] = wasmExports[\"sqlite3_value_int64\"];\n\t\tModule[\"_sqlite3_value_subtype\"] = wasmExports[\"sqlite3_value_subtype\"];\n\t\tModule[\"_sqlite3_value_pointer\"] = wasmExports[\"sqlite3_value_pointer\"];\n\t\tModule[\"_sqlite3_value_type\"] = wasmExports[\"sqlite3_value_type\"];\n\t\tModule[\"_sqlite3_value_nochange\"] = wasmExports[\"sqlite3_value_nochange\"];\n\t\tModule[\"_sqlite3_value_frombind\"] = wasmExports[\"sqlite3_value_frombind\"];\n\t\tModule[\"_sqlite3_value_dup\"] = wasmExports[\"sqlite3_value_dup\"];\n\t\tModule[\"_sqlite3_value_free\"] = wasmExports[\"sqlite3_value_free\"];\n\t\tModule[\"_sqlite3_result_blob\"] = wasmExports[\"sqlite3_result_blob\"];\n\t\tModule[\"_sqlite3_result_error_toobig\"] = wasmExports[\"sqlite3_result_error_toobig\"];\n\t\tModule[\"_sqlite3_result_error_nomem\"] = wasmExports[\"sqlite3_result_error_nomem\"];\n\t\tModule[\"_sqlite3_result_double\"] = wasmExports[\"sqlite3_result_double\"];\n\t\tModule[\"_sqlite3_result_error\"] = wasmExports[\"sqlite3_result_error\"];\n\t\tModule[\"_sqlite3_result_int\"] = wasmExports[\"sqlite3_result_int\"];\n\t\tModule[\"_sqlite3_result_int64\"] = wasmExports[\"sqlite3_result_int64\"];\n\t\tModule[\"_sqlite3_result_null\"] = wasmExports[\"sqlite3_result_null\"];\n\t\tModule[\"_sqlite3_result_pointer\"] = wasmExports[\"sqlite3_result_pointer\"];\n\t\tModule[\"_sqlite3_result_subtype\"] = wasmExports[\"sqlite3_result_subtype\"];\n\t\tModule[\"_sqlite3_result_text\"] = wasmExports[\"sqlite3_result_text\"];\n\t\tModule[\"_sqlite3_result_zeroblob\"] = wasmExports[\"sqlite3_result_zeroblob\"];\n\t\tModule[\"_sqlite3_result_zeroblob64\"] = wasmExports[\"sqlite3_result_zeroblob64\"];\n\t\tModule[\"_sqlite3_result_error_code\"] = wasmExports[\"sqlite3_result_error_code\"];\n\t\tModule[\"_sqlite3_user_data\"] = wasmExports[\"sqlite3_user_data\"];\n\t\tModule[\"_sqlite3_context_db_handle\"] = wasmExports[\"sqlite3_context_db_handle\"];\n\t\tModule[\"_sqlite3_vtab_nochange\"] = wasmExports[\"sqlite3_vtab_nochange\"];\n\t\tModule[\"_sqlite3_vtab_in_first\"] = wasmExports[\"sqlite3_vtab_in_first\"];\n\t\tModule[\"_sqlite3_vtab_in_next\"] = wasmExports[\"sqlite3_vtab_in_next\"];\n\t\tModule[\"_sqlite3_aggregate_context\"] = wasmExports[\"sqlite3_aggregate_context\"];\n\t\tModule[\"_sqlite3_get_auxdata\"] = wasmExports[\"sqlite3_get_auxdata\"];\n\t\tModule[\"_sqlite3_set_auxdata\"] = wasmExports[\"sqlite3_set_auxdata\"];\n\t\tModule[\"_sqlite3_column_count\"] = wasmExports[\"sqlite3_column_count\"];\n\t\tModule[\"_sqlite3_data_count\"] = wasmExports[\"sqlite3_data_count\"];\n\t\tModule[\"_sqlite3_column_blob\"] = wasmExports[\"sqlite3_column_blob\"];\n\t\tModule[\"_sqlite3_column_bytes\"] = wasmExports[\"sqlite3_column_bytes\"];\n\t\tModule[\"_sqlite3_column_double\"] = wasmExports[\"sqlite3_column_double\"];\n\t\tModule[\"_sqlite3_column_value\"] = wasmExports[\"sqlite3_column_value\"];\n\t\tModule[\"_sqlite3_column_decltype\"] = wasmExports[\"sqlite3_column_decltype\"];\n\t\tModule[\"_sqlite3_column_database_name\"] = wasmExports[\"sqlite3_column_database_name\"];\n\t\tModule[\"_sqlite3_column_table_name\"] = wasmExports[\"sqlite3_column_table_name\"];\n\t\tModule[\"_sqlite3_column_origin_name\"] = wasmExports[\"sqlite3_column_origin_name\"];\n\t\tModule[\"_sqlite3_bind_blob\"] = wasmExports[\"sqlite3_bind_blob\"];\n\t\tModule[\"_sqlite3_bind_double\"] = wasmExports[\"sqlite3_bind_double\"];\n\t\tModule[\"_sqlite3_bind_int\"] = wasmExports[\"sqlite3_bind_int\"];\n\t\tModule[\"_sqlite3_bind_int64\"] = wasmExports[\"sqlite3_bind_int64\"];\n\t\tModule[\"_sqlite3_bind_null\"] = wasmExports[\"sqlite3_bind_null\"];\n\t\tModule[\"_sqlite3_bind_pointer\"] = wasmExports[\"sqlite3_bind_pointer\"];\n\t\tModule[\"_sqlite3_bind_text\"] = wasmExports[\"sqlite3_bind_text\"];\n\t\tModule[\"_sqlite3_bind_zeroblob\"] = wasmExports[\"sqlite3_bind_zeroblob\"];\n\t\tModule[\"_sqlite3_bind_parameter_count\"] = wasmExports[\"sqlite3_bind_parameter_count\"];\n\t\tModule[\"_sqlite3_bind_parameter_name\"] = wasmExports[\"sqlite3_bind_parameter_name\"];\n\t\tModule[\"_sqlite3_bind_parameter_index\"] = wasmExports[\"sqlite3_bind_parameter_index\"];\n\t\tModule[\"_sqlite3_db_handle\"] = wasmExports[\"sqlite3_db_handle\"];\n\t\tModule[\"_sqlite3_stmt_readonly\"] = wasmExports[\"sqlite3_stmt_readonly\"];\n\t\tModule[\"_sqlite3_stmt_isexplain\"] = wasmExports[\"sqlite3_stmt_isexplain\"];\n\t\tModule[\"_sqlite3_stmt_explain\"] = wasmExports[\"sqlite3_stmt_explain\"];\n\t\tModule[\"_sqlite3_stmt_busy\"] = wasmExports[\"sqlite3_stmt_busy\"];\n\t\tModule[\"_sqlite3_next_stmt\"] = wasmExports[\"sqlite3_next_stmt\"];\n\t\tModule[\"_sqlite3_stmt_status\"] = wasmExports[\"sqlite3_stmt_status\"];\n\t\tModule[\"_sqlite3_sql\"] = wasmExports[\"sqlite3_sql\"];\n\t\tModule[\"_sqlite3_expanded_sql\"] = wasmExports[\"sqlite3_expanded_sql\"];\n\t\tModule[\"_sqlite3_preupdate_old\"] = wasmExports[\"sqlite3_preupdate_old\"];\n\t\tModule[\"_sqlite3_preupdate_count\"] = wasmExports[\"sqlite3_preupdate_count\"];\n\t\tModule[\"_sqlite3_preupdate_depth\"] = wasmExports[\"sqlite3_preupdate_depth\"];\n\t\tModule[\"_sqlite3_preupdate_blobwrite\"] = wasmExports[\"sqlite3_preupdate_blobwrite\"];\n\t\tModule[\"_sqlite3_preupdate_new\"] = wasmExports[\"sqlite3_preupdate_new\"];\n\t\tModule[\"_sqlite3_value_numeric_type\"] = wasmExports[\"sqlite3_value_numeric_type\"];\n\t\tModule[\"_sqlite3_set_authorizer\"] = wasmExports[\"sqlite3_set_authorizer\"];\n\t\tModule[\"_sqlite3_strglob\"] = wasmExports[\"sqlite3_strglob\"];\n\t\tModule[\"_sqlite3_strlike\"] = wasmExports[\"sqlite3_strlike\"];\n\t\tModule[\"_sqlite3_auto_extension\"] = wasmExports[\"sqlite3_auto_extension\"];\n\t\tModule[\"_sqlite3_cancel_auto_extension\"] = wasmExports[\"sqlite3_cancel_auto_extension\"];\n\t\tModule[\"_sqlite3_reset_auto_extension\"] = wasmExports[\"sqlite3_reset_auto_extension\"];\n\t\tModule[\"_sqlite3_prepare_v3\"] = wasmExports[\"sqlite3_prepare_v3\"];\n\t\tModule[\"_sqlite3_create_module\"] = wasmExports[\"sqlite3_create_module\"];\n\t\tModule[\"_sqlite3_create_module_v2\"] = wasmExports[\"sqlite3_create_module_v2\"];\n\t\tModule[\"_sqlite3_drop_modules\"] = wasmExports[\"sqlite3_drop_modules\"];\n\t\tModule[\"_sqlite3_declare_vtab\"] = wasmExports[\"sqlite3_declare_vtab\"];\n\t\tModule[\"_sqlite3_vtab_on_conflict\"] = wasmExports[\"sqlite3_vtab_on_conflict\"];\n\t\tModule[\"_sqlite3_vtab_collation\"] = wasmExports[\"sqlite3_vtab_collation\"];\n\t\tModule[\"_sqlite3_vtab_in\"] = wasmExports[\"sqlite3_vtab_in\"];\n\t\tModule[\"_sqlite3_vtab_rhs_value\"] = wasmExports[\"sqlite3_vtab_rhs_value\"];\n\t\tModule[\"_sqlite3_vtab_distinct\"] = wasmExports[\"sqlite3_vtab_distinct\"];\n\t\tModule[\"_sqlite3_keyword_name\"] = wasmExports[\"sqlite3_keyword_name\"];\n\t\tModule[\"_sqlite3_keyword_count\"] = wasmExports[\"sqlite3_keyword_count\"];\n\t\tModule[\"_sqlite3_keyword_check\"] = wasmExports[\"sqlite3_keyword_check\"];\n\t\tModule[\"_sqlite3_complete\"] = wasmExports[\"sqlite3_complete\"];\n\t\tModule[\"_sqlite3_libversion\"] = wasmExports[\"sqlite3_libversion\"];\n\t\tModule[\"_sqlite3_libversion_number\"] = wasmExports[\"sqlite3_libversion_number\"];\n\t\tModule[\"_sqlite3_shutdown\"] = wasmExports[\"sqlite3_shutdown\"];\n\t\tModule[\"_sqlite3_last_insert_rowid\"] = wasmExports[\"sqlite3_last_insert_rowid\"];\n\t\tModule[\"_sqlite3_set_last_insert_rowid\"] = wasmExports[\"sqlite3_set_last_insert_rowid\"];\n\t\tModule[\"_sqlite3_changes64\"] = wasmExports[\"sqlite3_changes64\"];\n\t\tModule[\"_sqlite3_changes\"] = wasmExports[\"sqlite3_changes\"];\n\t\tModule[\"_sqlite3_total_changes64\"] = wasmExports[\"sqlite3_total_changes64\"];\n\t\tModule[\"_sqlite3_total_changes\"] = wasmExports[\"sqlite3_total_changes\"];\n\t\tModule[\"_sqlite3_txn_state\"] = wasmExports[\"sqlite3_txn_state\"];\n\t\tModule[\"_sqlite3_close_v2\"] = wasmExports[\"sqlite3_close_v2\"];\n\t\tModule[\"_sqlite3_busy_handler\"] = wasmExports[\"sqlite3_busy_handler\"];\n\t\tModule[\"_sqlite3_progress_handler\"] = wasmExports[\"sqlite3_progress_handler\"];\n\t\tModule[\"_sqlite3_busy_timeout\"] = wasmExports[\"sqlite3_busy_timeout\"];\n\t\tModule[\"_sqlite3_interrupt\"] = wasmExports[\"sqlite3_interrupt\"];\n\t\tModule[\"_sqlite3_is_interrupted\"] = wasmExports[\"sqlite3_is_interrupted\"];\n\t\tModule[\"_sqlite3_create_function\"] = wasmExports[\"sqlite3_create_function\"];\n\t\tModule[\"_sqlite3_create_function_v2\"] = wasmExports[\"sqlite3_create_function_v2\"];\n\t\tModule[\"_sqlite3_create_window_function\"] = wasmExports[\"sqlite3_create_window_function\"];\n\t\tModule[\"_sqlite3_overload_function\"] = wasmExports[\"sqlite3_overload_function\"];\n\t\tModule[\"_sqlite3_trace_v2\"] = wasmExports[\"sqlite3_trace_v2\"];\n\t\tModule[\"_sqlite3_commit_hook\"] = wasmExports[\"sqlite3_commit_hook\"];\n\t\tModule[\"_sqlite3_update_hook\"] = wasmExports[\"sqlite3_update_hook\"];\n\t\tModule[\"_sqlite3_rollback_hook\"] = wasmExports[\"sqlite3_rollback_hook\"];\n\t\tModule[\"_sqlite3_preupdate_hook\"] = wasmExports[\"sqlite3_preupdate_hook\"];\n\t\tModule[\"_sqlite3_set_errmsg\"] = wasmExports[\"sqlite3_set_errmsg\"];\n\t\tModule[\"_sqlite3_error_offset\"] = wasmExports[\"sqlite3_error_offset\"];\n\t\tModule[\"_sqlite3_errcode\"] = wasmExports[\"sqlite3_errcode\"];\n\t\tModule[\"_sqlite3_extended_errcode\"] = wasmExports[\"sqlite3_extended_errcode\"];\n\t\tModule[\"_sqlite3_errstr\"] = wasmExports[\"sqlite3_errstr\"];\n\t\tModule[\"_sqlite3_limit\"] = wasmExports[\"sqlite3_limit\"];\n\t\tModule[\"_sqlite3_open\"] = wasmExports[\"sqlite3_open\"];\n\t\tModule[\"_sqlite3_open_v2\"] = wasmExports[\"sqlite3_open_v2\"];\n\t\tModule[\"_sqlite3_create_collation\"] = wasmExports[\"sqlite3_create_collation\"];\n\t\tModule[\"_sqlite3_create_collation_v2\"] = wasmExports[\"sqlite3_create_collation_v2\"];\n\t\tModule[\"_sqlite3_collation_needed\"] = wasmExports[\"sqlite3_collation_needed\"];\n\t\tModule[\"_sqlite3_get_autocommit\"] = wasmExports[\"sqlite3_get_autocommit\"];\n\t\tModule[\"_sqlite3_table_column_metadata\"] = wasmExports[\"sqlite3_table_column_metadata\"];\n\t\tModule[\"_sqlite3_extended_result_codes\"] = wasmExports[\"sqlite3_extended_result_codes\"];\n\t\tModule[\"_sqlite3_uri_key\"] = wasmExports[\"sqlite3_uri_key\"];\n\t\tModule[\"_sqlite3_uri_int64\"] = wasmExports[\"sqlite3_uri_int64\"];\n\t\tModule[\"_sqlite3_db_name\"] = wasmExports[\"sqlite3_db_name\"];\n\t\tModule[\"_sqlite3_db_filename\"] = wasmExports[\"sqlite3_db_filename\"];\n\t\tModule[\"_sqlite3_db_readonly\"] = wasmExports[\"sqlite3_db_readonly\"];\n\t\tModule[\"_sqlite3_compileoption_used\"] = wasmExports[\"sqlite3_compileoption_used\"];\n\t\tModule[\"_sqlite3_compileoption_get\"] = wasmExports[\"sqlite3_compileoption_get\"];\n\t\tModule[\"_sqlite3session_diff\"] = wasmExports[\"sqlite3session_diff\"];\n\t\tModule[\"_sqlite3session_attach\"] = wasmExports[\"sqlite3session_attach\"];\n\t\tModule[\"_sqlite3session_create\"] = wasmExports[\"sqlite3session_create\"];\n\t\tModule[\"_sqlite3session_delete\"] = wasmExports[\"sqlite3session_delete\"];\n\t\tModule[\"_sqlite3session_table_filter\"] = wasmExports[\"sqlite3session_table_filter\"];\n\t\tModule[\"_sqlite3session_changeset\"] = wasmExports[\"sqlite3session_changeset\"];\n\t\tModule[\"_sqlite3session_changeset_strm\"] = wasmExports[\"sqlite3session_changeset_strm\"];\n\t\tModule[\"_sqlite3session_patchset_strm\"] = wasmExports[\"sqlite3session_patchset_strm\"];\n\t\tModule[\"_sqlite3session_patchset\"] = wasmExports[\"sqlite3session_patchset\"];\n\t\tModule[\"_sqlite3session_enable\"] = wasmExports[\"sqlite3session_enable\"];\n\t\tModule[\"_sqlite3session_indirect\"] = wasmExports[\"sqlite3session_indirect\"];\n\t\tModule[\"_sqlite3session_isempty\"] = wasmExports[\"sqlite3session_isempty\"];\n\t\tModule[\"_sqlite3session_memory_used\"] = wasmExports[\"sqlite3session_memory_used\"];\n\t\tModule[\"_sqlite3session_object_config\"] = wasmExports[\"sqlite3session_object_config\"];\n\t\tModule[\"_sqlite3session_changeset_size\"] = wasmExports[\"sqlite3session_changeset_size\"];\n\t\tModule[\"_sqlite3changeset_start\"] = wasmExports[\"sqlite3changeset_start\"];\n\t\tModule[\"_sqlite3changeset_start_v2\"] = wasmExports[\"sqlite3changeset_start_v2\"];\n\t\tModule[\"_sqlite3changeset_start_strm\"] = wasmExports[\"sqlite3changeset_start_strm\"];\n\t\tModule[\"_sqlite3changeset_start_v2_strm\"] = wasmExports[\"sqlite3changeset_start_v2_strm\"];\n\t\tModule[\"_sqlite3changeset_next\"] = wasmExports[\"sqlite3changeset_next\"];\n\t\tModule[\"_sqlite3changeset_op\"] = wasmExports[\"sqlite3changeset_op\"];\n\t\tModule[\"_sqlite3changeset_pk\"] = wasmExports[\"sqlite3changeset_pk\"];\n\t\tModule[\"_sqlite3changeset_old\"] = wasmExports[\"sqlite3changeset_old\"];\n\t\tModule[\"_sqlite3changeset_new\"] = wasmExports[\"sqlite3changeset_new\"];\n\t\tModule[\"_sqlite3changeset_conflict\"] = wasmExports[\"sqlite3changeset_conflict\"];\n\t\tModule[\"_sqlite3changeset_fk_conflicts\"] = wasmExports[\"sqlite3changeset_fk_conflicts\"];\n\t\tModule[\"_sqlite3changeset_finalize\"] = wasmExports[\"sqlite3changeset_finalize\"];\n\t\tModule[\"_sqlite3changeset_invert\"] = wasmExports[\"sqlite3changeset_invert\"];\n\t\tModule[\"_sqlite3changeset_invert_strm\"] = wasmExports[\"sqlite3changeset_invert_strm\"];\n\t\tModule[\"_sqlite3changeset_apply_v2\"] = wasmExports[\"sqlite3changeset_apply_v2\"];\n\t\tModule[\"_sqlite3changeset_apply_v3\"] = wasmExports[\"sqlite3changeset_apply_v3\"];\n\t\tModule[\"_sqlite3changeset_apply\"] = wasmExports[\"sqlite3changeset_apply\"];\n\t\tModule[\"_sqlite3changeset_apply_v3_strm\"] = wasmExports[\"sqlite3changeset_apply_v3_strm\"];\n\t\tModule[\"_sqlite3changeset_apply_v2_strm\"] = wasmExports[\"sqlite3changeset_apply_v2_strm\"];\n\t\tModule[\"_sqlite3changeset_apply_strm\"] = wasmExports[\"sqlite3changeset_apply_strm\"];\n\t\tModule[\"_sqlite3changegroup_new\"] = wasmExports[\"sqlite3changegroup_new\"];\n\t\tModule[\"_sqlite3changegroup_add\"] = wasmExports[\"sqlite3changegroup_add\"];\n\t\tModule[\"_sqlite3changegroup_output\"] = wasmExports[\"sqlite3changegroup_output\"];\n\t\tModule[\"_sqlite3changegroup_add_strm\"] = wasmExports[\"sqlite3changegroup_add_strm\"];\n\t\tModule[\"_sqlite3changegroup_output_strm\"] = wasmExports[\"sqlite3changegroup_output_strm\"];\n\t\tModule[\"_sqlite3changegroup_delete\"] = wasmExports[\"sqlite3changegroup_delete\"];\n\t\tModule[\"_sqlite3changeset_concat\"] = wasmExports[\"sqlite3changeset_concat\"];\n\t\tModule[\"_sqlite3changeset_concat_strm\"] = wasmExports[\"sqlite3changeset_concat_strm\"];\n\t\tModule[\"_sqlite3session_config\"] = wasmExports[\"sqlite3session_config\"];\n\t\tModule[\"_sqlite3_sourceid\"] = wasmExports[\"sqlite3_sourceid\"];\n\t\tModule[\"_sqlite3__wasm_pstack_ptr\"] = wasmExports[\"sqlite3__wasm_pstack_ptr\"];\n\t\tModule[\"_sqlite3__wasm_pstack_restore\"] = wasmExports[\"sqlite3__wasm_pstack_restore\"];\n\t\tModule[\"_sqlite3__wasm_pstack_alloc\"] = wasmExports[\"sqlite3__wasm_pstack_alloc\"];\n\t\tModule[\"_sqlite3__wasm_pstack_remaining\"] = wasmExports[\"sqlite3__wasm_pstack_remaining\"];\n\t\tModule[\"_sqlite3__wasm_pstack_quota\"] = wasmExports[\"sqlite3__wasm_pstack_quota\"];\n\t\tModule[\"_sqlite3__wasm_test_struct\"] = wasmExports[\"sqlite3__wasm_test_struct\"];\n\t\tModule[\"_sqlite3__wasm_enum_json\"] = wasmExports[\"sqlite3__wasm_enum_json\"];\n\t\tModule[\"_sqlite3__wasm_vfs_unlink\"] = wasmExports[\"sqlite3__wasm_vfs_unlink\"];\n\t\tModule[\"_sqlite3__wasm_db_vfs\"] = wasmExports[\"sqlite3__wasm_db_vfs\"];\n\t\tModule[\"_sqlite3__wasm_db_reset\"] = wasmExports[\"sqlite3__wasm_db_reset\"];\n\t\tModule[\"_sqlite3__wasm_db_export_chunked\"] = wasmExports[\"sqlite3__wasm_db_export_chunked\"];\n\t\tModule[\"_sqlite3__wasm_db_serialize\"] = wasmExports[\"sqlite3__wasm_db_serialize\"];\n\t\tModule[\"_sqlite3__wasm_vfs_create_file\"] = wasmExports[\"sqlite3__wasm_vfs_create_file\"];\n\t\tModule[\"_sqlite3__wasm_posix_create_file\"] = wasmExports[\"sqlite3__wasm_posix_create_file\"];\n\t\tModule[\"_sqlite3__wasm_kvvfsMakeKey\"] = wasmExports[\"sqlite3__wasm_kvvfsMakeKey\"];\n\t\tModule[\"_sqlite3__wasm_kvvfs_methods\"] = wasmExports[\"sqlite3__wasm_kvvfs_methods\"];\n\t\tModule[\"_sqlite3__wasm_vtab_config\"] = wasmExports[\"sqlite3__wasm_vtab_config\"];\n\t\tModule[\"_sqlite3__wasm_db_config_ip\"] = wasmExports[\"sqlite3__wasm_db_config_ip\"];\n\t\tModule[\"_sqlite3__wasm_db_config_pii\"] = wasmExports[\"sqlite3__wasm_db_config_pii\"];\n\t\tModule[\"_sqlite3__wasm_db_config_s\"] = wasmExports[\"sqlite3__wasm_db_config_s\"];\n\t\tModule[\"_sqlite3__wasm_config_i\"] = wasmExports[\"sqlite3__wasm_config_i\"];\n\t\tModule[\"_sqlite3__wasm_config_ii\"] = wasmExports[\"sqlite3__wasm_config_ii\"];\n\t\tModule[\"_sqlite3__wasm_config_j\"] = wasmExports[\"sqlite3__wasm_config_j\"];\n\t\tModule[\"_sqlite3__wasm_qfmt_token\"] = wasmExports[\"sqlite3__wasm_qfmt_token\"];\n\t\tModule[\"_sqlite3__wasm_kvvfs_decode\"] = wasmExports[\"sqlite3__wasm_kvvfs_decode\"];\n\t\tModule[\"_sqlite3__wasm_kvvfs_encode\"] = wasmExports[\"sqlite3__wasm_kvvfs_encode\"];\n\t\tModule[\"_sqlite3__wasm_init_wasmfs\"] = wasmExports[\"sqlite3__wasm_init_wasmfs\"];\n\t\tModule[\"_sqlite3__wasm_test_intptr\"] = wasmExports[\"sqlite3__wasm_test_intptr\"];\n\t\tModule[\"_sqlite3__wasm_test_voidptr\"] = wasmExports[\"sqlite3__wasm_test_voidptr\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_max\"] = wasmExports[\"sqlite3__wasm_test_int64_max\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_min\"] = wasmExports[\"sqlite3__wasm_test_int64_min\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_times2\"] = wasmExports[\"sqlite3__wasm_test_int64_times2\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_minmax\"] = wasmExports[\"sqlite3__wasm_test_int64_minmax\"];\n\t\tModule[\"_sqlite3__wasm_test_int64ptr\"] = wasmExports[\"sqlite3__wasm_test_int64ptr\"];\n\t\tModule[\"_sqlite3__wasm_test_stack_overflow\"] = wasmExports[\"sqlite3__wasm_test_stack_overflow\"];\n\t\tModule[\"_sqlite3__wasm_test_str_hello\"] = wasmExports[\"sqlite3__wasm_test_str_hello\"];\n\t\tModule[\"_sqlite3__wasm_SQLTester_strglob\"] = wasmExports[\"sqlite3__wasm_SQLTester_strglob\"];\n\t\tModule[\"_malloc\"] = wasmExports[\"malloc\"];\n\t\tModule[\"_free\"] = wasmExports[\"free\"];\n\t\tModule[\"_realloc\"] = wasmExports[\"realloc\"];\n\t\t_emscripten_builtin_memalign = wasmExports[\"emscripten_builtin_memalign\"];\n\t\twasmExports[\"_emscripten_stack_restore\"];\n\t\twasmExports[\"_emscripten_stack_alloc\"];\n\t\twasmExports[\"emscripten_stack_get_current\"];\n\t\twasmExports[\"__indirect_function_table\"];\n\t}\n\tvar wasmImports = {\n\t\t__syscall_chmod: ___syscall_chmod,\n\t\t__syscall_faccessat: ___syscall_faccessat,\n\t\t__syscall_fchmod: ___syscall_fchmod,\n\t\t__syscall_fchown32: ___syscall_fchown32,\n\t\t__syscall_fcntl64: ___syscall_fcntl64,\n\t\t__syscall_fstat64: ___syscall_fstat64,\n\t\t__syscall_ftruncate64: ___syscall_ftruncate64,\n\t\t__syscall_getcwd: ___syscall_getcwd,\n\t\t__syscall_ioctl: ___syscall_ioctl,\n\t\t__syscall_lstat64: ___syscall_lstat64,\n\t\t__syscall_mkdirat: ___syscall_mkdirat,\n\t\t__syscall_newfstatat: ___syscall_newfstatat,\n\t\t__syscall_openat: ___syscall_openat,\n\t\t__syscall_readlinkat: ___syscall_readlinkat,\n\t\t__syscall_rmdir: ___syscall_rmdir,\n\t\t__syscall_stat64: ___syscall_stat64,\n\t\t__syscall_unlinkat: ___syscall_unlinkat,\n\t\t__syscall_utimensat: ___syscall_utimensat,\n\t\t_localtime_js: __localtime_js,\n\t\t_mmap_js: __mmap_js,\n\t\t_munmap_js: __munmap_js,\n\t\t_tzset_js: __tzset_js,\n\t\tclock_time_get: _clock_time_get,\n\t\temscripten_date_now: _emscripten_date_now,\n\t\temscripten_get_heap_max: _emscripten_get_heap_max,\n\t\temscripten_get_now: _emscripten_get_now,\n\t\temscripten_resize_heap: _emscripten_resize_heap,\n\t\tenviron_get: _environ_get,\n\t\tenviron_sizes_get: _environ_sizes_get,\n\t\tfd_close: _fd_close,\n\t\tfd_fdstat_get: _fd_fdstat_get,\n\t\tfd_read: _fd_read,\n\t\tfd_seek: _fd_seek,\n\t\tfd_sync: _fd_sync,\n\t\tfd_write: _fd_write,\n\t\tmemory: wasmMemory\n\t};\n\tfunction run() {\n\t\tif (runDependencies > 0) {\n\t\t\tdependenciesFulfilled = run;\n\t\t\treturn;\n\t\t}\n\t\tpreRun();\n\t\tif (runDependencies > 0) {\n\t\t\tdependenciesFulfilled = run;\n\t\t\treturn;\n\t\t}\n\t\tfunction doRun() {\n\t\t\tModule[\"calledRun\"] = true;\n\t\t\tif (ABORT) return;\n\t\t\tinitRuntime();\n\t\t\treadyPromiseResolve?.(Module);\n\t\t\tModule[\"onRuntimeInitialized\"]?.();\n\t\t\tpostRun();\n\t\t}\n\t\tif (Module[\"setStatus\"]) {\n\t\t\tModule[\"setStatus\"](\"Running...\");\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetTimeout(() => Module[\"setStatus\"](\"\"), 1);\n\t\t\t\tdoRun();\n\t\t\t}, 1);\n\t\t} else doRun();\n\t}\n\tvar wasmExports = await createWasm();\n\trun();\n\t/**\n\tpost-js-header.js is to be prepended to other code to create\n\tpost-js.js for use with Emscripten's --post-js flag, so it gets\n\tinjected in the earliest stages of sqlite3InitModule().\n\t\n\tRunning this function will bootstrap the library and return\n\ta Promise to the sqlite3 namespace object.\n\t\n\tIn the canonical builds, this gets called by extern-post-js.c-pp.js\n\t*/\n\tModule.runSQLite3PostLoadInit = async function(sqlite3InitScriptInfo, EmscriptenModule, sqlite3IsUnderTest) {\n\t\t/** ^^^ Don't use Module.postRun, as that runs a different time\n\t\tdepending on whether this file is built with emcc 3.1.x or\n\t\t4.0.x. This function name is intentionally obnoxiously verbose to\n\t\tensure that we don't collide with current and future Emscripten\n\t\tsymbol names. */\n\t\t\"use strict\";\n\t\tdelete EmscriptenModule.runSQLite3PostLoadInit;\n\t\tglobalThis.sqlite3ApiBootstrap = async function sqlite3ApiBootstrap(apiConfig = globalThis.sqlite3ApiConfig || sqlite3ApiBootstrap.defaultConfig) {\n\t\t\tif (sqlite3ApiBootstrap.sqlite3) {\n\t\t\t\t(sqlite3ApiBootstrap.sqlite3.config || console).warn(\"sqlite3ApiBootstrap() called multiple times.\", \"Config and external initializers are ignored on calls after the first.\");\n\t\t\t\treturn sqlite3ApiBootstrap.sqlite3;\n\t\t\t}\n\t\t\tconst nu = (...obj) => Object.assign(Object.create(null), ...obj);\n\t\t\tconst config = nu({\n\t\t\t\texports: void 0,\n\t\t\t\tmemory: void 0,\n\t\t\t\tbigIntEnabled: !!globalThis.BigInt64Array,\n\t\t\t\tdebug: console.debug.bind(console),\n\t\t\t\twarn: console.warn.bind(console),\n\t\t\t\terror: console.error.bind(console),\n\t\t\t\tlog: console.log.bind(console),\n\t\t\t\twasmfsOpfsDir: \"/opfs\",\n\t\t\t\tuseStdAlloc: false\n\t\t\t}, apiConfig);\n\t\t\tObject.assign(config, {\n\t\t\t\tallocExportName: config.useStdAlloc ? \"malloc\" : \"sqlite3_malloc\",\n\t\t\t\tdeallocExportName: config.useStdAlloc ? \"free\" : \"sqlite3_free\",\n\t\t\t\treallocExportName: config.useStdAlloc ? \"realloc\" : \"sqlite3_realloc\"\n\t\t\t});\n\t\t\t[\n\t\t\t\t\"exports\",\n\t\t\t\t\"memory\",\n\t\t\t\t\"functionTable\",\n\t\t\t\t\"wasmfsOpfsDir\"\n\t\t\t].forEach((k) => {\n\t\t\t\tif (\"function\" === typeof config[k]) config[k] = config[k]();\n\t\t\t});\n\t\t\t/**\n\t\t\tThe main sqlite3 binding API gets installed into this object,\n\t\t\tmimicking the C API as closely as we can. The numerous members\n\t\t\tnames with prefixes 'sqlite3_' and 'SQLITE_' behave, insofar as\n\t\t\tpossible, identically to the C-native counterparts, as documented at:\n\t\t\t\n\t\t\thttps://sqlite.org/c3ref/intro.html\n\t\t\t\n\t\t\tA very few exceptions require an additional level of proxy\n\t\t\tfunction or may otherwise require special attention in the WASM\n\t\t\tenvironment, and all such cases are documented somewhere below\n\t\t\tin this file or in sqlite3-api-glue.js. capi members which are\n\t\t\tnot documented are installed as 1-to-1 proxies for their\n\t\t\tC-side counterparts.\n\t\t\t*/\n\t\t\tconst capi = nu();\n\t\t\t/**\n\t\t\tHolds state which are specific to the WASM-related\n\t\t\tinfrastructure and glue code.\n\t\t\t\n\t\t\tNote that a number of members of this object are injected\n\t\t\tdynamically after the api object is fully constructed, so\n\t\t\tnot all are documented in this file.\n\t\t\t*/\n\t\t\tconst wasm = nu();\n\t\t\t/** Internal helper for SQLite3Error ctor. */\n\t\t\tconst __rcStr = (rc) => {\n\t\t\t\treturn capi.sqlite3_js_rc_str && capi.sqlite3_js_rc_str(rc) || \"Unknown result code #\" + rc;\n\t\t\t};\n\t\t\t/** Internal helper for SQLite3Error ctor. */\n\t\t\tconst isInt32 = (n) => \"number\" === typeof n && n === (n | 0) && n <= 2147483647 && n >= -2147483648;\n\t\t\t/**\n\t\t\tAn Error subclass specifically for reporting DB-level errors and\n\t\t\tenabling clients to unambiguously identify such exceptions.\n\t\t\tThe C-level APIs never throw, but some of the higher-level\n\t\t\tC-style APIs do and the object-oriented APIs use exceptions\n\t\t\texclusively to report errors.\n\t\t\t*/\n\t\t\tclass SQLite3Error extends Error {\n\t\t\t\t/**\n\t\t\t\tConstructs this object with a message depending on its arguments:\n\t\t\t\t\n\t\t\t\tIf its first argument is an integer, it is assumed to be\n\t\t\t\tan SQLITE_... result code and it is passed to\n\t\t\t\tsqlite3.capi.sqlite3_js_rc_str() to stringify it.\n\t\t\t\t\n\t\t\t\tIf called with exactly 2 arguments and the 2nd is an object,\n\t\t\t\tthat object is treated as the 2nd argument to the parent\n\t\t\t\tconstructor.\n\t\t\t\t\n\t\t\t\tThe exception's message is created by concatenating its\n\t\t\t\targuments with a space between each, except for the\n\t\t\t\ttwo-args-with-an-object form and that the first argument will\n\t\t\t\tget coerced to a string, as described above, if it's an\n\t\t\t\tinteger.\n\t\t\t\t\n\t\t\t\tIf passed an integer first argument, the error object's\n\t\t\t\t`resultCode` member will be set to the given integer value,\n\t\t\t\telse it will be set to capi.SQLITE_ERROR.\n\t\t\t\t*/\n\t\t\t\tconstructor(...args) {\n\t\t\t\t\tlet rc;\n\t\t\t\t\tif (args.length) if (isInt32(args[0])) {\n\t\t\t\t\t\trc = args[0];\n\t\t\t\t\t\tif (1 === args.length) super(__rcStr(args[0]));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst rcStr = __rcStr(rc);\n\t\t\t\t\t\t\tif (\"object\" === typeof args[1]) super(rcStr, args[1]);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\targs[0] = rcStr + \":\";\n\t\t\t\t\t\t\t\tsuper(args.join(\" \"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (2 === args.length && \"object\" === typeof args[1]) super(...args);\n\t\t\t\t\telse super(args.join(\" \"));\n\t\t\t\t\tthis.resultCode = rc || capi.SQLITE_ERROR;\n\t\t\t\t\tthis.name = \"SQLite3Error\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tFunctionally equivalent to the SQLite3Error constructor but may\n\t\t\tbe used as part of an expression, e.g.:\n\t\t\t\n\t\t\t```\n\t\t\treturn someFunction(x) || SQLite3Error.toss(...);\n\t\t\t```\n\t\t\t*/\n\t\t\tSQLite3Error.toss = (...args) => {\n\t\t\t\tthrow new SQLite3Error(...args);\n\t\t\t};\n\t\t\tconst toss3 = SQLite3Error.toss;\n\t\t\tif (config.wasmfsOpfsDir && !/^\\/[^/]+$/.test(config.wasmfsOpfsDir)) toss3(\"config.wasmfsOpfsDir must be falsy or in the form '/dir-name'.\");\n\t\t\t/**\n\t\t\tReturns true if the given BigInt value is small enough to fit\n\t\t\tinto an int64 value, else false.\n\t\t\t*/\n\t\t\tconst bigIntFits64 = function f(b) {\n\t\t\t\tif (!f._max) {\n\t\t\t\t\tf._max = BigInt(\"0x7fffffffffffffff\");\n\t\t\t\t\tf._min = ~f._max;\n\t\t\t\t}\n\t\t\t\treturn b >= f._min && b <= f._max;\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns true if the given BigInt value is small enough to fit\n\t\t\tinto an int32, else false.\n\t\t\t*/\n\t\t\tconst bigIntFits32 = (b) => b >= -2147483647n - 1n && b <= 2147483647n;\n\t\t\t/**\n\t\t\tReturns true if the given BigInt value is small enough to fit\n\t\t\tinto a double value without loss of precision, else false.\n\t\t\t*/\n\t\t\tconst bigIntFitsDouble = function f(b) {\n\t\t\t\tif (!f._min) {\n\t\t\t\t\tf._min = Number.MIN_SAFE_INTEGER;\n\t\t\t\t\tf._max = Number.MAX_SAFE_INTEGER;\n\t\t\t\t}\n\t\t\t\treturn b >= f._min && b <= f._max;\n\t\t\t};\n\t\t\t/** Returns v if v appears to be a TypedArray, else false. */\n\t\t\tconst isTypedArray = (v) => {\n\t\t\t\treturn v && v.constructor && isInt32(v.constructor.BYTES_PER_ELEMENT) ? v : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns true if v appears to be one of our bind()-able TypedArray\n\t\t\ttypes: Uint8Array or Int8Array or ArrayBuffer. Support for\n\t\t\tTypedArrays with element sizes >1 is a potential TODO just\n\t\t\twaiting on a use case to justify them. Until then, their `buffer`\n\t\t\tproperty can be used to pass them as an ArrayBuffer. If it's not\n\t\t\ta bindable array type, a falsy value is returned.\n\t\t\t*/\n\t\t\tconst isBindableTypedArray = (v) => v && (v instanceof Uint8Array || v instanceof Int8Array || v instanceof ArrayBuffer);\n\t\t\t/**\n\t\t\tReturns true if v appears to be one of the TypedArray types\n\t\t\twhich is legal for holding SQL code (as opposed to binary blobs).\n\t\t\t\n\t\t\tCurrently this is the same as isBindableTypedArray() but it\n\t\t\tseems likely that we'll eventually want to add Uint32Array\n\t\t\tand friends to the isBindableTypedArray() list but not to the\n\t\t\tisSQLableTypedArray() list.\n\t\t\t*/\n\t\t\tconst isSQLableTypedArray = (v) => v && (v instanceof Uint8Array || v instanceof Int8Array || v instanceof ArrayBuffer);\n\t\t\t/** Returns true if isBindableTypedArray(v) does, else throws with a message\n\t\t\tthat v is not a supported TypedArray value. */\n\t\t\tconst affirmBindableTypedArray = (v) => isBindableTypedArray(v) || toss3(\"Value is not of a supported TypedArray type.\");\n\t\t\t/**\n\t\t\tIf v is-a Array, its join(\"\") result is returned. If\n\t\t\tisSQLableTypedArray(v) is true then wasm.typedArrayToString(v) is\n\t\t\treturned. If it looks like a WASM pointer, wasm.cstrToJs(v) is\n\t\t\treturned. Else v is returned as-is.\n\t\t\t\n\t\t\tReminder to self: the \"return as-is\" instead of returning ''+v is\n\t\t\targuably a design mistake but changing it is risky at this point.\n\t\t\t*/\n\t\t\tconst flexibleString = function(v) {\n\t\t\t\tif (isSQLableTypedArray(v)) return wasm.typedArrayToString(v instanceof ArrayBuffer ? new Uint8Array(v) : v, 0, v.length);\n\t\t\t\telse if (Array.isArray(v)) return v.join(\"\");\n\t\t\t\telse if (wasm.isPtr(v)) v = wasm.cstrToJs(v);\n\t\t\t\treturn v;\n\t\t\t};\n\t\t\t/**\n\t\t\tAn Error subclass specifically for reporting Wasm-level malloc()\n\t\t\tfailure and enabling clients to unambiguously identify such\n\t\t\texceptions.\n\t\t\t*/\n\t\t\tclass WasmAllocError extends Error {\n\t\t\t\t/**\n\t\t\t\tIf called with 2 arguments and the 2nd one is an object, it\n\t\t\t\tbehaves like the Error constructor, else it concatenates all\n\t\t\t\targuments together with a single space between each to\n\t\t\t\tconstruct an error message string. As a special case, if\n\t\t\t\tcalled with no arguments then it uses a default error\n\t\t\t\tmessage.\n\t\t\t\t*/\n\t\t\t\tconstructor(...args) {\n\t\t\t\t\tif (2 === args.length && \"object\" === typeof args[1]) super(...args);\n\t\t\t\t\telse if (args.length) super(args.join(\" \"));\n\t\t\t\t\telse super(\"Allocation failed.\");\n\t\t\t\t\tthis.resultCode = capi.SQLITE_NOMEM;\n\t\t\t\t\tthis.name = \"WasmAllocError\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tFunctionally equivalent to the WasmAllocError constructor but may\n\t\t\tbe used as part of an expression, e.g.:\n\t\t\t\n\t\t\t```\n\t\t\treturn someAllocatingFunction(x) || WasmAllocError.toss(...);\n\t\t\t```\n\t\t\t*/\n\t\t\tWasmAllocError.toss = (...args) => {\n\t\t\t\tthrow new WasmAllocError(...args);\n\t\t\t};\n\t\t\tObject.assign(capi, {\n\t\t\t\tsqlite3_bind_blob: void 0,\n\t\t\t\tsqlite3_bind_text: void 0,\n\t\t\t\tsqlite3_create_function_v2: (pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy) => {},\n\t\t\t\tsqlite3_create_function: (pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) => {},\n\t\t\t\tsqlite3_create_window_function: (pDb, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy) => {},\n\t\t\t\tsqlite3_prepare_v3: (dbPtr, sql, sqlByteLen, prepFlags, stmtPtrPtr, strPtrPtr) => {},\n\t\t\t\tsqlite3_prepare_v2: (dbPtr, sql, sqlByteLen, stmtPtrPtr, strPtrPtr) => {},\n\t\t\t\tsqlite3_exec: (pDb, sql, callback, pVoid, pErrMsg) => {},\n\t\t\t\tsqlite3_randomness: (n, outPtr) => {}\n\t\t\t});\n\t\t\t/**\n\t\t\tVarious internal-use utilities are added here as needed. They\n\t\t\tare bound to an object only so that we have access to them in\n\t\t\tthe differently-scoped steps of the API bootstrapping\n\t\t\tprocess. At the end of the API setup process, this object gets\n\t\t\tremoved. These are NOT part of the public API.\n\t\t\t*/\n\t\t\tconst util = {\n\t\t\t\taffirmBindableTypedArray,\n\t\t\t\tflexibleString,\n\t\t\t\tbigIntFits32,\n\t\t\t\tbigIntFits64,\n\t\t\t\tbigIntFitsDouble,\n\t\t\t\tisBindableTypedArray,\n\t\t\t\tisInt32,\n\t\t\t\tisSQLableTypedArray,\n\t\t\t\tisTypedArray,\n\t\t\t\tisUIThread: () => globalThis.window === globalThis && !!globalThis.document,\n\t\t\t\ttoss: function(...args) {\n\t\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t\t},\n\t\t\t\ttoss3,\n\t\t\t\ttypedArrayPart: wasm.typedArrayPart,\n\t\t\t\tnu,\n\t\t\t\tassert: function(arg, msg) {\n\t\t\t\t\tif (!arg) util.toss(\"Assertion failed:\", msg);\n\t\t\t\t},\n\t\t\t\taffirmDbHeader: function(bytes) {\n\t\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\t\tconst header = \"SQLite format 3\";\n\t\t\t\t\tif (15 > bytes.byteLength) toss3(\"Input does not contain an SQLite3 database header.\");\n\t\t\t\t\tfor (let i = 0; i < 15; ++i) if (header.charCodeAt(i) !== bytes[i]) toss3(\"Input does not contain an SQLite3 database header.\");\n\t\t\t\t},\n\t\t\t\taffirmIsDb: function(bytes) {\n\t\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\t\tconst n = bytes.byteLength;\n\t\t\t\t\tif (n < 512 || n % 512 !== 0) toss3(\"Byte array size\", n, \"is invalid for an SQLite3 db.\");\n\t\t\t\t\tutil.affirmDbHeader(bytes);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\twasm.X properties which are used for configuring the wasm\n\t\t\tenvironment via whwashutil.js. This object gets fleshed out with\n\t\t\ta number of WASM-specific utilities, in sqlite3-api-glue.c-pp.js.\n\t\t\t*/\n\t\t\tObject.assign(wasm, {\n\t\t\t\texports: config.exports || toss3(\"Missing API config.exports (WASM module exports).\"),\n\t\t\t\tmemory: config.memory || config.exports[\"memory\"] || toss3(\"API config object requires a WebAssembly.Memory object\", \"in either config.exports.memory (exported)\", \"or config.memory (imported).\"),\n\t\t\t\tpointerSize: \"number\" === typeof config.exports.sqlite3_libversion() ? 4 : 8,\n\t\t\t\tbigIntEnabled: !!config.bigIntEnabled,\n\t\t\t\tfunctionTable: config.functionTable,\n\t\t\t\talloc: void 0,\n\t\t\t\trealloc: void 0,\n\t\t\t\tdealloc: void 0\n\t\t\t});\n\t\t\t/**\n\t\t\twasm.alloc()'s srcTypedArray.byteLength bytes,\n\t\t\tpopulates them with the values from the source\n\t\t\tTypedArray, and returns the pointer to that memory. The\n\t\t\treturned pointer must eventually be passed to\n\t\t\twasm.dealloc() to clean it up.\n\t\t\t\n\t\t\tThe argument may be a Uint8Array, Int8Array, or ArrayBuffer,\n\t\t\tand it throws if passed any other type.\n\t\t\t\n\t\t\tAs a special case, to avoid further special cases where\n\t\t\tthis is used, if srcTypedArray.byteLength is 0, it\n\t\t\tallocates a single byte and sets it to the value\n\t\t\t0. Even in such cases, calls must behave as if the\n\t\t\tallocated memory has exactly srcTypedArray.byteLength\n\t\t\tbytes.\n\t\t\t*/\n\t\t\twasm.allocFromTypedArray = function(srcTypedArray) {\n\t\t\t\tif (srcTypedArray instanceof ArrayBuffer) srcTypedArray = new Uint8Array(srcTypedArray);\n\t\t\t\taffirmBindableTypedArray(srcTypedArray);\n\t\t\t\tconst pRet = wasm.alloc(srcTypedArray.byteLength || 1);\n\t\t\t\twasm.heapForSize(srcTypedArray.constructor).set(srcTypedArray.byteLength ? srcTypedArray : [0], Number(pRet));\n\t\t\t\treturn pRet;\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst keyAlloc = config.allocExportName, keyDealloc = config.deallocExportName, keyRealloc = config.reallocExportName;\n\t\t\t\tfor (const key of [\n\t\t\t\t\tkeyAlloc,\n\t\t\t\t\tkeyDealloc,\n\t\t\t\t\tkeyRealloc\n\t\t\t\t]) if (!(wasm.exports[key] instanceof Function)) toss3(\"Missing required exports[\", key, \"] function.\");\n\t\t\t\twasm.alloc = function f(n) {\n\t\t\t\t\treturn f.impl(n) || WasmAllocError.toss(\"Failed to allocate\", n, \" bytes.\");\n\t\t\t\t};\n\t\t\t\twasm.alloc.impl = wasm.exports[keyAlloc];\n\t\t\t\twasm.realloc = function f(m, n) {\n\t\t\t\t\tconst m2 = f.impl(wasm.ptr.coerce(m), n);\n\t\t\t\t\treturn n ? m2 || WasmAllocError.toss(\"Failed to reallocate\", n, \" bytes.\") : wasm.ptr.null;\n\t\t\t\t};\n\t\t\t\twasm.realloc.impl = wasm.exports[keyRealloc];\n\t\t\t\twasm.dealloc = function f(m) {\n\t\t\t\t\tf.impl(wasm.ptr.coerce(m));\n\t\t\t\t};\n\t\t\t\twasm.dealloc.impl = wasm.exports[keyDealloc];\n\t\t\t}\n\t\t\t/**\n\t\t\tReports info about compile-time options using\n\t\t\tsqlite3_compileoption_get() and sqlite3_compileoption_used(). It\n\t\t\thas several distinct uses:\n\t\t\t\n\t\t\tIf optName is an array then it is expected to be a list of\n\t\t\tcompilation options and this function returns an object\n\t\t\twhich maps each such option to true or false, indicating\n\t\t\twhether or not the given option was included in this\n\t\t\tbuild. That object is returned.\n\t\t\t\n\t\t\tIf optName is an object, its keys are expected to be compilation\n\t\t\toptions and this function sets each entry to true or false,\n\t\t\tindicating whether the compilation option was used or not. That\n\t\t\tobject is returned.\n\t\t\t\n\t\t\tIf passed no arguments then it returns an object mapping\n\t\t\tall known compilation options to their compile-time values,\n\t\t\tor boolean true if they are defined with no value. This\n\t\t\tresult, which is relatively expensive to compute, is cached\n\t\t\tand returned for future no-argument calls.\n\t\t\t\n\t\t\tIn all other cases it returns true if the given option was\n\t\t\tactive when when compiling the sqlite3 module, else false.\n\t\t\t\n\t\t\tCompile-time option names may optionally include their\n\t\t\t\"SQLITE_\" prefix. When it returns an object of all options,\n\t\t\tthe prefix is elided.\n\t\t\t*/\n\t\t\twasm.compileOptionUsed = function f(optName) {\n\t\t\t\tif (!arguments.length) {\n\t\t\t\t\tif (f._result) return f._result;\n\t\t\t\t\telse if (!f._opt) {\n\t\t\t\t\t\tf._rx = /^([^=]+)=(.+)/;\n\t\t\t\t\t\tf._rxInt = /^-?\\d+$/;\n\t\t\t\t\t\tf._opt = function(opt, rv) {\n\t\t\t\t\t\t\tconst m = f._rx.exec(opt);\n\t\t\t\t\t\t\trv[0] = m ? m[1] : opt;\n\t\t\t\t\t\t\trv[1] = m ? f._rxInt.test(m[2]) ? +m[2] : m[2] : true;\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst rc = nu(), ov = [0, 0];\n\t\t\t\t\tlet i = 0, k;\n\t\t\t\t\twhile (k = capi.sqlite3_compileoption_get(i++)) {\n\t\t\t\t\t\tf._opt(k, ov);\n\t\t\t\t\t\trc[ov[0]] = ov[1];\n\t\t\t\t\t}\n\t\t\t\t\treturn f._result = rc;\n\t\t\t\t} else if (Array.isArray(optName)) {\n\t\t\t\t\tconst rc = nu();\n\t\t\t\t\toptName.forEach((v) => {\n\t\t\t\t\t\trc[v] = capi.sqlite3_compileoption_used(v);\n\t\t\t\t\t});\n\t\t\t\t\treturn rc;\n\t\t\t\t} else if (\"object\" === typeof optName) {\n\t\t\t\t\tObject.keys(optName).forEach((k) => {\n\t\t\t\t\t\toptName[k] = capi.sqlite3_compileoption_used(k);\n\t\t\t\t\t});\n\t\t\t\t\treturn optName;\n\t\t\t\t}\n\t\t\t\treturn \"string\" === typeof optName ? !!capi.sqlite3_compileoption_used(optName) : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tsqlite3.wasm.pstack (pseudo-stack) holds a special-case allocator\n\t\t\tintended solely for short-lived, small data. In practice, it's\n\t\t\tprimarily used to allocate output pointers. It must not be used\n\t\t\tfor any memory which needs to outlive the scope in which it's\n\t\t\tobtained from pstack.\n\t\t\t\n\t\t\tThe library guarantees only that a minimum of 2kb are available\n\t\t\tin this allocator, and it may provide more (it's a build-time\n\t\t\tvalue). pstack.quota and pstack.remaining can be used to get the\n\t\t\ttotal resp. remaining amount of memory.\n\t\t\t\n\t\t\tIt has only a single intended usage pattern:\n\t\t\t\n\t\t\t```\n\t\t\tconst stackPos = pstack.pointer;\n\t\t\ttry{\n\t\t\tconst ptr = pstack.alloc(8);\n\t\t\t// ==> pstack.pointer === ptr\n\t\t\tconst otherPtr = pstack.alloc(8);\n\t\t\t// ==> pstack.pointer === otherPtr\n\t\t\t...\n\t\t\t}finally{\n\t\t\tpstack.restore(stackPos);\n\t\t\t// ==> pstack.pointer === stackPos\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tThis allocator is much faster than a general-purpose one but is\n\t\t\tlimited to usage patterns like the one shown above (which are\n\t\t\tpretty common when using sqlite3.capi).\n\t\t\t\n\t\t\tThe memory lives in the WASM heap and can be used with routines\n\t\t\tsuch as wasm.poke() and wasm.heap8u().slice().\n\t\t\t*/\n\t\t\twasm.pstack = nu({\n\t\t\t\trestore: wasm.exports.sqlite3__wasm_pstack_restore,\n\t\t\t\talloc: function(n) {\n\t\t\t\t\tif (\"string\" === typeof n && !(n = wasm.sizeofIR(n))) WasmAllocError.toss(\"Invalid value for pstack.alloc(\", arguments[0], \")\");\n\t\t\t\t\treturn wasm.exports.sqlite3__wasm_pstack_alloc(n) || WasmAllocError.toss(\"Could not allocate\", n, \"bytes from the pstack.\");\n\t\t\t\t},\n\t\t\t\tallocChunks: function(n, sz) {\n\t\t\t\t\tif (\"string\" === typeof sz && !(sz = wasm.sizeofIR(sz))) WasmAllocError.toss(\"Invalid size value for allocChunks(\", arguments[1], \")\");\n\t\t\t\t\tconst mem = wasm.pstack.alloc(n * sz);\n\t\t\t\t\tconst rc = [mem];\n\t\t\t\t\tlet i = 1, offset = sz;\n\t\t\t\t\tfor (; i < n; ++i, offset += sz) rc.push(wasm.ptr.add(mem, offset));\n\t\t\t\t\treturn rc;\n\t\t\t\t},\n\t\t\t\tallocPtr: (n = 1, safePtrSize = true) => {\n\t\t\t\t\treturn 1 === n ? wasm.pstack.alloc(safePtrSize ? 8 : wasm.ptr.size) : wasm.pstack.allocChunks(n, safePtrSize ? 8 : wasm.ptr.size);\n\t\t\t\t},\n\t\t\t\tcall: function(f) {\n\t\t\t\t\tconst stackPos = wasm.pstack.pointer;\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn f(sqlite3);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stackPos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperties(wasm.pstack, {\n\t\t\t\tpointer: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\titerable: true,\n\t\t\t\t\twriteable: false,\n\t\t\t\t\tget: wasm.exports.sqlite3__wasm_pstack_ptr\n\t\t\t\t},\n\t\t\t\tquota: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\titerable: true,\n\t\t\t\t\twriteable: false,\n\t\t\t\t\tget: wasm.exports.sqlite3__wasm_pstack_quota\n\t\t\t\t},\n\t\t\t\tremaining: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\titerable: true,\n\t\t\t\t\twriteable: false,\n\t\t\t\t\tget: wasm.exports.sqlite3__wasm_pstack_remaining\n\t\t\t\t}\n\t\t\t});\n\t\t\t/**\n\t\t\tDocs: https://sqlite.org/wasm/doc/trunk/api-c-style.md#sqlite3_randomness\n\t\t\t*/\n\t\t\tcapi.sqlite3_randomness = (...args) => {\n\t\t\t\tif (1 === args.length && util.isTypedArray(args[0]) && 1 === args[0].BYTES_PER_ELEMENT) {\n\t\t\t\t\tconst ta = args[0];\n\t\t\t\t\tif (0 === ta.byteLength) {\n\t\t\t\t\t\twasm.exports.sqlite3_randomness(0, wasm.ptr.null);\n\t\t\t\t\t\treturn ta;\n\t\t\t\t\t}\n\t\t\t\t\tconst stack = wasm.pstack.pointer;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet n = ta.byteLength, offset = 0;\n\t\t\t\t\t\tconst r = wasm.exports.sqlite3_randomness;\n\t\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\t\tconst nAlloc = n < 512 ? n : 512;\n\t\t\t\t\t\tconst ptr = wasm.pstack.alloc(nAlloc);\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tconst j = n > nAlloc ? nAlloc : n;\n\t\t\t\t\t\t\tr(j, ptr);\n\t\t\t\t\t\t\tta.set(wasm.typedArrayPart(heap, ptr, wasm.ptr.add(ptr, j)), offset);\n\t\t\t\t\t\t\tn -= j;\n\t\t\t\t\t\t\toffset += j;\n\t\t\t\t\t\t} while (n > 0);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconfig.error(\"Highly unexpected (and ignored!) exception in sqlite3_randomness():\", e);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stack);\n\t\t\t\t\t}\n\t\t\t\t\treturn ta;\n\t\t\t\t}\n\t\t\t\twasm.exports.sqlite3_randomness(...args);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf the wasm environment has a WASMFS/OPFS-backed persistent\n\t\t\tstorage directory, its path is returned by this function. If it\n\t\t\tdoes not then it returns \"\" (noting that \"\" is a falsy value).\n\t\t\t\n\t\t\tThe first time this is called, this function inspects the current\n\t\t\tenvironment to determine whether WASMFS persistence support is\n\t\t\tavailable and, if it is, enables it (if needed). After the first\n\t\t\tcall it always returns the cached result.\n\t\t\t\n\t\t\tIf the returned string is not empty, any files stored under the\n\t\t\treturned path (recursively) are housed in OPFS storage. If the\n\t\t\treturned string is empty, this particular persistent storage\n\t\t\toption is not available on the client.\n\t\t\t\n\t\t\tThough the mount point name returned by this function is intended\n\t\t\tto remain stable, clients should not hard-coded it anywhere.\n\t\t\tAlways call this function to get the path.\n\t\t\t\n\t\t\tThis function is a no-op in most builds of this library, as the\n\t\t\tWASMFS capability requires a custom build.\n\t\t\t*/\n\t\t\tcapi.sqlite3_wasmfs_opfs_dir = function() {\n\t\t\t\tif (void 0 !== this.dir) return this.dir;\n\t\t\t\tconst pdir = config.wasmfsOpfsDir;\n\t\t\t\tif (!pdir || !globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle || !wasm.exports.sqlite3__wasm_init_wasmfs) return this.dir = \"\";\n\t\t\t\ttry {\n\t\t\t\t\tif (pdir && 0 === wasm.xCallWrapped(\"sqlite3__wasm_init_wasmfs\", \"i32\", [\"string\"], pdir)) return this.dir = pdir;\n\t\t\t\t\telse return this.dir = \"\";\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn this.dir = \"\";\n\t\t\t\t}\n\t\t\t}.bind(nu());\n\t\t\t/**\n\t\t\tReturns true if sqlite3.capi.sqlite3_wasmfs_opfs_dir() is a\n\t\t\tnon-empty string and the given name starts with (that string +\n\t\t\t'/'), else returns false.\n\t\t\t*/\n\t\t\tcapi.sqlite3_wasmfs_filename_is_persistent = function(name) {\n\t\t\t\tconst p = capi.sqlite3_wasmfs_opfs_dir();\n\t\t\t\treturn p && name ? name.startsWith(p + \"/\") : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven an `sqlite3*`, an sqlite3_vfs name, and an optional db name\n\t\t\t(defaulting to \"main\"), returns a truthy value (see below) if\n\t\t\tthat db uses that VFS, else returns false. If pDb is falsy then\n\t\t\tthe 3rd argument is ignored and this function returns a truthy\n\t\t\tvalue if the default VFS name matches that of the 2nd argument.\n\t\t\tResults are undefined if pDb is truthy but refers to an invalid\n\t\t\tpointer. The 3rd argument specifies the database name of the\n\t\t\tgiven database connection to check, defaulting to the main db.\n\t\t\t\n\t\t\tThe 2nd and 3rd arguments may either be a JS string or a WASM\n\t\t\tC-string. If the 2nd argument is a NULL WASM pointer, the default\n\t\t\tVFS is assumed. If the 3rd is a NULL WASM pointer, \"main\" is\n\t\t\tassumed.\n\t\t\t\n\t\t\tThe truthy value it returns is a pointer to the `sqlite3_vfs`\n\t\t\tobject.\n\t\t\t\n\t\t\tTo permit safe use of this function from APIs which may be called\n\t\t\tvia C (like SQL UDFs), this function does not throw: if bad\n\t\t\targuments cause a conversion error when passing into wasm-space,\n\t\t\tfalse is returned.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_db_uses_vfs = function(pDb, vfsName, dbName = 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pK = capi.sqlite3_vfs_find(vfsName);\n\t\t\t\t\tif (!pK) return false;\n\t\t\t\t\telse if (!pDb) return pK === capi.sqlite3_vfs_find(0) ? pK : false;\n\t\t\t\t\telse return pK === capi.sqlite3_js_db_vfs(pDb, dbName) ? pK : false;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns an array of the names of all currently-registered sqlite3\n\t\t\tVFSes.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_vfs_list = function() {\n\t\t\t\tconst rc = [];\n\t\t\t\tlet pVfs = capi.sqlite3_vfs_find(wasm.ptr.null);\n\t\t\t\twhile (pVfs) {\n\t\t\t\t\tconst oVfs = new capi.sqlite3_vfs(pVfs);\n\t\t\t\t\trc.push(wasm.cstrToJs(oVfs.$zName));\n\t\t\t\t\tpVfs = oVfs.$pNext;\n\t\t\t\t\toVfs.dispose();\n\t\t\t\t}\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tA convenience wrapper around sqlite3_serialize() which serializes\n\t\t\tthe given `sqlite3*` pointer to a Uint8Array. The first argument\n\t\t\tmay be either an `sqlite3*` or an sqlite3.oo1.DB instance.\n\t\t\t\n\t\t\tOn success it returns a Uint8Array. If the schema is empty, an\n\t\t\tempty array is returned.\n\t\t\t\n\t\t\t`schema` is the schema to serialize. It may be a WASM C-string\n\t\t\tpointer or a JS string. If it is falsy, it defaults to `\"main\"`.\n\t\t\t\n\t\t\tOn error it throws with a description of the problem.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_db_export = function(pDb, schema = 0) {\n\t\t\t\tpDb = wasm.xWrap.testConvertArg(\"sqlite3*\", pDb);\n\t\t\t\tif (!pDb) toss3(\"Invalid sqlite3* argument.\");\n\t\t\t\tif (!wasm.bigIntEnabled) toss3(\"BigInt support is not enabled.\");\n\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\tlet pOut;\n\t\t\t\ttry {\n\t\t\t\t\tconst pSize = wasm.scopedAlloc(8 + wasm.ptr.size);\n\t\t\t\t\tconst ppOut = wasm.ptr.add(pSize, 8);\n\t\t\t\t\t/**\n\t\t\t\t\tMaintenance reminder, since this cost a full hour of grief\n\t\t\t\t\tand confusion: if the order of pSize/ppOut are reversed in\n\t\t\t\t\tthat memory block, fetching the value of pSize after the\n\t\t\t\t\texport reads a garbage size because it's not on an 8-byte\n\t\t\t\t\tmemory boundary!\n\t\t\t\t\t*/\n\t\t\t\t\tconst zSchema = schema ? wasm.isPtr(schema) ? schema : wasm.scopedAllocCString(\"\" + schema) : wasm.ptr.null;\n\t\t\t\t\tlet rc = wasm.exports.sqlite3__wasm_db_serialize(pDb, zSchema, ppOut, pSize, 0);\n\t\t\t\t\tif (rc) toss3(\"Database serialization failed with code\", sqlite3.capi.sqlite3_js_rc_str(rc));\n\t\t\t\t\tpOut = wasm.peekPtr(ppOut);\n\t\t\t\t\tconst nOut = wasm.peek(pSize, \"i64\");\n\t\t\t\t\trc = nOut ? wasm.heap8u().slice(Number(pOut), Number(pOut) + Number(nOut)) : new Uint8Array();\n\t\t\t\t\treturn rc;\n\t\t\t\t} finally {\n\t\t\t\t\tif (pOut) wasm.exports.sqlite3_free(pOut);\n\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a `sqlite3*` and a database name (JS string or WASM\n\t\t\tC-string pointer, which may be 0), returns a pointer to the\n\t\t\tsqlite3_vfs responsible for it. If the given db name is null/0,\n\t\t\tor not provided, then \"main\" is assumed.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_db_vfs = (dbPointer, dbName = wasm.ptr.null) => util.sqlite3__wasm_db_vfs(dbPointer, dbName);\n\t\t\t/**\n\t\t\tA thin wrapper around capi.sqlite3_aggregate_context() which\n\t\t\tbehaves the same except that it throws a WasmAllocError if that\n\t\t\tfunction returns 0. As a special case, if n is falsy it does\n\t\t\t_not_ throw if that function returns 0. That special case is\n\t\t\tintended for use with xFinal() implementations.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_aggregate_context = (pCtx, n) => {\n\t\t\t\treturn capi.sqlite3_aggregate_context(pCtx, n) || (n ? WasmAllocError.toss(\"Cannot allocate\", n, \"bytes for sqlite3_aggregate_context()\") : 0);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf the current environment supports the POSIX file APIs, this routine\n\t\t\tcreates (or overwrites) the given file using those APIs. This is\n\t\t\tprimarily intended for use in Emscripten-based builds where the POSIX\n\t\t\tAPIs are transparently proxied by an in-memory virtual filesystem.\n\t\t\tIt may behave differently in other environments.\n\t\t\t\n\t\t\tThe first argument must be either a JS string or WASM C-string\n\t\t\tholding the filename. This routine does _not_ create intermediary\n\t\t\tdirectories if the filename has a directory part.\n\t\t\t\n\t\t\tThe 2nd argument may either a valid WASM memory pointer, an\n\t\t\tArrayBuffer, or a Uint8Array. The 3rd must be the length, in\n\t\t\tbytes, of the data array to copy. If the 2nd argument is an\n\t\t\tArrayBuffer or Uint8Array and the 3rd is not a positive integer\n\t\t\tthen the 3rd defaults to the array's byteLength value.\n\t\t\t\n\t\t\tResults are undefined if data is a WASM pointer and dataLen is\n\t\t\texceeds data's bounds.\n\t\t\t\n\t\t\tThrows if any arguments are invalid or if creating or writing to\n\t\t\tthe file fails.\n\t\t\t\n\t\t\tAdded in 3.43 as an alternative for the deprecated\n\t\t\tsqlite3_js_vfs_create_file().\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_posix_create_file = function(filename, data, dataLen) {\n\t\t\t\tlet pData;\n\t\t\t\tif (data && wasm.isPtr(data)) pData = data;\n\t\t\t\telse if (data instanceof ArrayBuffer || data instanceof Uint8Array) {\n\t\t\t\t\tpData = wasm.allocFromTypedArray(data);\n\t\t\t\t\tif (arguments.length < 3 || !util.isInt32(dataLen) || dataLen < 0) dataLen = data.byteLength;\n\t\t\t\t} else SQLite3Error.toss(\"Invalid 2nd argument for sqlite3_js_posix_create_file().\");\n\t\t\t\ttry {\n\t\t\t\t\tif (!util.isInt32(dataLen) || dataLen < 0) SQLite3Error.toss(\"Invalid 3rd argument for sqlite3_js_posix_create_file().\");\n\t\t\t\t\tconst rc = util.sqlite3__wasm_posix_create_file(filename, pData, dataLen);\n\t\t\t\t\tif (rc) SQLite3Error.toss(\"Creation of file failed with sqlite3 result code\", capi.sqlite3_js_rc_str(rc));\n\t\t\t\t} finally {\n\t\t\t\t\tif (pData && pData !== data) wasm.dealloc(pData);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tDeprecation warning: this function does not work properly in\n\t\t\tdebug builds of sqlite3 because its out-of-scope use of the\n\t\t\tsqlite3_vfs API triggers assertions in the core library. That\n\t\t\twas unfortunately not discovered until 2023-08-11. This function\n\t\t\tis now deprecated. It should not be used in new code and should\n\t\t\tbe removed from existing code.\n\t\t\t\n\t\t\tAlternative options:\n\t\t\t\n\t\t\t- The \"unix\" VFS and its variants can get equivalent\n\t\t\tfunctionality with sqlite3_js_posix_create_file().\n\t\t\t\n\t\t\t- OPFS: use either sqlite3.oo1.OpfsDb.importDb(), for the \"opfs\"\n\t\t\tVFS, or the importDb() method of the PoolUtil object provided\n\t\t\tby the \"opfs-sahpool\" OPFS (noting that its VFS name may differ\n\t\t\tdepending on client-side configuration). We cannot proxy those\n\t\t\tfrom here because the former is necessarily asynchronous and\n\t\t\tthe latter requires information not available to this function.\n\t\t\t\n\t\t\tHistorical (deprecated) behaviour:\n\t\t\t\n\t\t\tCreates a file using the storage appropriate for the given\n\t\t\tsqlite3_vfs. The first argument may be a VFS name (JS string\n\t\t\tonly, NOT a WASM C-string), WASM-managed `sqlite3_vfs*`, or\n\t\t\ta capi.sqlite3_vfs instance. Pass 0 (a NULL pointer) to use the\n\t\t\tdefault VFS. If passed a string which does not resolve using\n\t\t\tsqlite3_vfs_find(), an exception is thrown. (Note that a WASM\n\t\t\tC-string is not accepted because it is impossible to\n\t\t\tdistinguish from a C-level `sqlite3_vfs*`.)\n\t\t\t\n\t\t\tThe second argument, the filename, must be a JS or WASM C-string.\n\t\t\t\n\t\t\tThe 3rd may either be falsy, a valid WASM memory pointer, an\n\t\t\tArrayBuffer, or a Uint8Array. The 4th must be the length, in\n\t\t\tbytes, of the data array to copy. If the 3rd argument is an\n\t\t\tArrayBuffer or Uint8Array and the 4th is not a positive integer\n\t\t\tthen the 4th defaults to the array's byteLength value.\n\t\t\t\n\t\t\tIf data is falsy then a file is created with dataLen bytes filled\n\t\t\twith uninitialized data (whatever truncate() leaves there). If\n\t\t\tdata is not falsy then a file is created or truncated and it is\n\t\t\tfilled with the first dataLen bytes of the data source.\n\t\t\t\n\t\t\tThrows if any arguments are invalid or if creating or writing to\n\t\t\tthe file fails.\n\t\t\t\n\t\t\tNote that most VFSes do _not_ automatically create directory\n\t\t\tparts of filenames, nor do all VFSes have a concept of\n\t\t\tdirectories. If the given filename is not valid for the given\n\t\t\tVFS, an exception will be thrown. This function exists primarily\n\t\t\tto assist in implementing file-upload capability, with the caveat\n\t\t\tthat clients must have some idea of the VFS into which they want\n\t\t\tto upload and that VFS must support the operation.\n\t\t\t\n\t\t\tVFS-specific notes:\n\t\t\t\n\t\t\t- \"memdb\": results are undefined.\n\t\t\t\n\t\t\t- \"kvvfs\": will fail with an I/O error due to strict internal\n\t\t\trequirements of that VFS's xTruncate().\n\t\t\t\n\t\t\t- \"unix\" and related: will use the WASM build's equivalent of the\n\t\t\tPOSIX I/O APIs. This will work so long as neither a specific\n\t\t\tVFS nor the WASM environment imposes requirements which break\n\t\t\tit. (Much later: it turns out that debug builds of the library\n\t\t\timpose such requirements, in that they assert() that dataLen is\n\t\t\tan even multiple of a valid db page size.)\n\t\t\t\n\t\t\t- \"opfs\": uses OPFS storage and creates directory parts of the\n\t\t\tfilename. It can only be used to import an SQLite3 database\n\t\t\tfile and will fail if given anything else.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_vfs_create_file = function(vfs, filename, data, dataLen) {\n\t\t\t\tconfig.warn(\"sqlite3_js_vfs_create_file() is deprecated and\", \"should be avoided because it can lead to C-level crashes.\", \"See its documentation for alternatives.\");\n\t\t\t\tlet pData;\n\t\t\t\tif (data) if (wasm.isPtr(data)) pData = data;\n\t\t\t\telse {\n\t\t\t\t\tif (data instanceof ArrayBuffer) data = new Uint8Array(data);\n\t\t\t\t\tif (data instanceof Uint8Array) {\n\t\t\t\t\t\tpData = wasm.allocFromTypedArray(data);\n\t\t\t\t\t\tif (arguments.length < 4 || !util.isInt32(dataLen) || dataLen < 0) dataLen = data.byteLength;\n\t\t\t\t\t} else SQLite3Error.toss(\"Invalid 3rd argument type for sqlite3_js_vfs_create_file().\");\n\t\t\t\t}\n\t\t\t\telse pData = 0;\n\t\t\t\tif (!util.isInt32(dataLen) || dataLen < 0) {\n\t\t\t\t\tif (pData && pData !== data) wasm.dealloc(pData);\n\t\t\t\t\tSQLite3Error.toss(\"Invalid 4th argument for sqlite3_js_vfs_create_file().\");\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst rc = util.sqlite3__wasm_vfs_create_file(vfs, filename, pData, dataLen);\n\t\t\t\t\tif (rc) SQLite3Error.toss(\"Creation of file failed with sqlite3 result code\", capi.sqlite3_js_rc_str(rc));\n\t\t\t\t} finally {\n\t\t\t\t\tif (pData && pData !== data) wasm.dealloc(pData);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tConverts SQL input from a variety of convenient formats\n\t\t\tto plain strings.\n\t\t\t\n\t\t\tIf v is a string, it is returned as-is. If it is-a Array, its\n\t\t\tjoin(\"\") result is returned. If is is a Uint8Array, Int8Array,\n\t\t\tor ArrayBuffer, it is assumed to hold UTF-8-encoded text and is\n\t\t\tdecoded to a string. If it looks like a WASM pointer,\n\t\t\twasm.cstrToJs(sql) is returned. Else undefined is returned.\n\t\t\t\n\t\t\tAdded in 3.44\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_sql_to_string = (sql) => {\n\t\t\t\tif (\"string\" === typeof sql) return sql;\n\t\t\t\tconst x = flexibleString(v);\n\t\t\t\treturn x === v ? void 0 : x;\n\t\t\t};\n\t\t\t/**\n\t\t\tWraps all known variants of the C-side variadic\n\t\t\tsqlite3_db_config().\n\t\t\t\n\t\t\tFull docs: https://sqlite.org/c3ref/db_config.html\n\t\t\t\n\t\t\tReturns capi.SQLITE_MISUSE if op is not a valid operation ID.\n\t\t\t\n\t\t\tThe variants which take `(int, int*)` arguments treat a\n\t\t\tmissing or falsy pointer argument as 0.\n\t\t\t*/\n\t\t\tcapi.sqlite3_db_config = function(pDb, op, ...args) {\n\t\t\t\tswitch (op) {\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_FKEY:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_TRIGGER:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_QPSG:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_TRIGGER_EQP:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_RESET_DATABASE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_DEFENSIVE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_WRITABLE_SCHEMA:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_LEGACY_ALTER_TABLE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_DQS_DML:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_DQS_DDL:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_VIEW:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_LEGACY_FILE_FORMAT:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_TRUSTED_SCHEMA:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_STMT_SCANSTATUS:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_REVERSE_SCANORDER:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_COMMENTS:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_FP_DIGITS:\n\t\t\t\t\t\tif (!this.ip) this.ip = wasm.xWrap(\"sqlite3__wasm_db_config_ip\", \"int\", [\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]);\n\t\t\t\t\t\treturn this.ip(pDb, op, args[0], args[1] || 0);\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_LOOKASIDE:\n\t\t\t\t\t\tif (!this.pii) this.pii = wasm.xWrap(\"sqlite3__wasm_db_config_pii\", \"int\", [\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"int\"\n\t\t\t\t\t\t]);\n\t\t\t\t\t\treturn this.pii(pDb, op, args[0], args[1], args[2]);\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_MAINDBNAME:\n\t\t\t\t\t\tif (!this.s) this.s = wasm.xWrap(\"sqlite3__wasm_db_config_s\", \"int\", [\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"string:static\"\n\t\t\t\t\t\t]);\n\t\t\t\t\t\treturn this.s(pDb, op, args[0]);\n\t\t\t\t\tdefault: return capi.SQLITE_MISUSE;\n\t\t\t\t}\n\t\t\t}.bind(nu());\n\t\t\t/**\n\t\t\tGiven a (sqlite3_value*), this function attempts to convert it\n\t\t\tto an equivalent JS value with as much fidelity as feasible and\n\t\t\treturn it.\n\t\t\t\n\t\t\tBy default it throws if it cannot determine any sensible\n\t\t\tconversion. If passed a falsy second argument, it instead returns\n\t\t\t`undefined` if no suitable conversion is found. Note that there\n\t\t\tis no conversion from SQL to JS which results in the `undefined`\n\t\t\tvalue, so `undefined` has an unambiguous meaning here. It will\n\t\t\talways throw a WasmAllocError if allocating memory for a\n\t\t\tconversion fails.\n\t\t\t\n\t\t\tCaveats:\n\t\t\t\n\t\t\t- It does not support sqlite3_value_to_pointer() conversions\n\t\t\tbecause those require a type name string which this function\n\t\t\tdoes not have and cannot sensibly be given at the level of the\n\t\t\tAPI where this is used (e.g. automatically converting UDF\n\t\t\targuments). Clients using sqlite3_value_to_pointer(), and its\n\t\t\trelated APIs, will need to manage those themselves.\n\t\t\t*/\n\t\t\tcapi.sqlite3_value_to_js = function(pVal, throwIfCannotConvert = true) {\n\t\t\t\tlet arg;\n\t\t\t\tconst valType = capi.sqlite3_value_type(pVal);\n\t\t\t\tswitch (valType) {\n\t\t\t\t\tcase capi.SQLITE_INTEGER:\n\t\t\t\t\t\tif (wasm.bigIntEnabled) {\n\t\t\t\t\t\t\targ = capi.sqlite3_value_int64(pVal);\n\t\t\t\t\t\t\tif (util.bigIntFitsDouble(arg)) arg = Number(arg);\n\t\t\t\t\t\t} else arg = capi.sqlite3_value_double(pVal);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase capi.SQLITE_FLOAT:\n\t\t\t\t\t\targ = capi.sqlite3_value_double(pVal);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase capi.SQLITE_TEXT:\n\t\t\t\t\t\targ = capi.sqlite3_value_text(pVal);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase capi.SQLITE_BLOB: {\n\t\t\t\t\t\tconst n = capi.sqlite3_value_bytes(pVal);\n\t\t\t\t\t\tconst pBlob = capi.sqlite3_value_blob(pVal);\n\t\t\t\t\t\tif (n && !pBlob) sqlite3.WasmAllocError.toss(\"Cannot allocate memory for blob argument of\", n, \"byte(s)\");\n\t\t\t\t\t\targ = n ? wasm.heap8u().slice(Number(pBlob), Number(pBlob) + Number(n)) : null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase capi.SQLITE_NULL:\n\t\t\t\t\t\targ = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (throwIfCannotConvert) toss3(capi.SQLITE_MISMATCH, \"Unhandled sqlite3_value_type():\", valType);\n\t\t\t\t\t\targ = void 0;\n\t\t\t\t}\n\t\t\t\treturn arg;\n\t\t\t};\n\t\t\t/**\n\t\t\tRequires a C-style array of `sqlite3_value*` objects and the\n\t\t\tnumber of entries in that array. Returns a JS array containing\n\t\t\tthe results of passing each C array entry to\n\t\t\tsqlite3_value_to_js(). The 3rd argument to this function is\n\t\t\tpassed on as the 2nd argument to that one.\n\t\t\t*/\n\t\t\tcapi.sqlite3_values_to_js = function(argc, pArgv, throwIfCannotConvert = true) {\n\t\t\t\tlet i;\n\t\t\t\tconst tgt = [];\n\t\t\t\tfor (i = 0; i < argc; ++i)\n /**\n\t\t\t\tCuriously: despite ostensibly requiring 8-byte\n\t\t\t\talignment, the pArgv array is parcelled into chunks of\n\t\t\t\t4 bytes (1 pointer each). The values those point to\n\t\t\t\thave 8-byte alignment but the individual argv entries\n\t\t\t\tdo not.\n\t\t\t\t*/\n\t\t\t\ttgt.push(capi.sqlite3_value_to_js(wasm.peekPtr(wasm.ptr.add(pArgv, wasm.ptr.size * i)), throwIfCannotConvert));\n\t\t\t\treturn tgt;\n\t\t\t};\n\t\t\t/**\n\t\t\tCalls either sqlite3_result_error_nomem(), if e is-a\n\t\t\tWasmAllocError, or sqlite3_result_error(). In the latter case,\n\t\t\tthe second argument is coerced to a string to create the error\n\t\t\tmessage.\n\t\t\t\n\t\t\tThe first argument is a (sqlite3_context*). Returns void.\n\t\t\tDoes not throw.\n\t\t\t*/\n\t\t\tcapi.sqlite3_result_error_js = function(pCtx, e) {\n\t\t\t\tif (e instanceof WasmAllocError) capi.sqlite3_result_error_nomem(pCtx);\n\t\t\t\telse capi.sqlite3_result_error(pCtx, \"\" + e, -1);\n\t\t\t};\n\t\t\t/**\n\t\t\tThis function passes its 2nd argument to one of the\n\t\t\tsqlite3_result_xyz() routines, depending on the type of that\n\t\t\targument:\n\t\t\t\n\t\t\t- If (val instanceof Error), this function passes it to\n\t\t\tsqlite3_result_error_js().\n\t\t\t- `null`: `sqlite3_result_null()`\n\t\t\t- `boolean`: `sqlite3_result_int()` with a value of 0 or 1.\n\t\t\t- `number`: `sqlite3_result_int()`, `sqlite3_result_int64()`, or\n\t\t\t`sqlite3_result_double()`, depending on the range of the number\n\t\t\tand whether or not int64 support is enabled.\n\t\t\t- `bigint`: similar to `number` but will trigger an error if the\n\t\t\tvalue is too big to store in an int64.\n\t\t\t- `string`: `sqlite3_result_text()`\n\t\t\t- Uint8Array or Int8Array or ArrayBuffer: `sqlite3_result_blob()`\n\t\t\t- `undefined`: is a no-op provided to simplify certain use cases.\n\t\t\t\n\t\t\tAnything else triggers `sqlite3_result_error()` with a\n\t\t\tdescription of the problem.\n\t\t\t\n\t\t\tThe first argument to this function is a `(sqlite3_context*)`.\n\t\t\tReturns void. Does not throw.\n\t\t\t*/\n\t\t\tcapi.sqlite3_result_js = function(pCtx, val) {\n\t\t\t\tif (val instanceof Error) {\n\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, val);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tswitch (typeof val) {\n\t\t\t\t\t\tcase \"undefined\": break;\n\t\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, val ? 1 : 0);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"bigint\":\n\t\t\t\t\t\t\tif (util.bigIntFits32(val)) capi.sqlite3_result_int(pCtx, Number(val));\n\t\t\t\t\t\t\telse if (util.bigIntFitsDouble(val)) capi.sqlite3_result_double(pCtx, Number(val));\n\t\t\t\t\t\t\telse if (wasm.bigIntEnabled) if (util.bigIntFits64(val)) capi.sqlite3_result_int64(pCtx, val);\n\t\t\t\t\t\t\telse toss3(\"BigInt value\", val.toString(), \"is too BigInt for int64.\");\n\t\t\t\t\t\t\telse toss3(\"BigInt value\", val.toString(), \"is too BigInt.\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"number\": {\n\t\t\t\t\t\t\tlet f;\n\t\t\t\t\t\t\tif (util.isInt32(val)) f = capi.sqlite3_result_int;\n\t\t\t\t\t\t\telse if (wasm.bigIntEnabled && Number.isInteger(val) && util.bigIntFits64(BigInt(val))) f = capi.sqlite3_result_int64;\n\t\t\t\t\t\t\telse f = capi.sqlite3_result_double;\n\t\t\t\t\t\t\tf(pCtx, val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"string\": {\n\t\t\t\t\t\t\tconst [p, n] = wasm.allocCString(val, true);\n\t\t\t\t\t\t\tcapi.sqlite3_result_text(pCtx, p, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"object\": if (null === val) {\n\t\t\t\t\t\t\tcapi.sqlite3_result_null(pCtx);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (util.isBindableTypedArray(val)) {\n\t\t\t\t\t\t\tconst pBlob = wasm.allocFromTypedArray(val);\n\t\t\t\t\t\t\tcapi.sqlite3_result_blob(pCtx, pBlob, val.byteLength, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: toss3(\"Don't not how to handle this UDF result value:\", typeof val, val);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns the result sqlite3_column_value(pStmt,iCol) passed to\n\t\t\tsqlite3_value_to_js(). The 3rd argument of this function is\n\t\t\tignored by this function except to pass it on as the second\n\t\t\targument of sqlite3_value_to_js(). If the sqlite3_column_value()\n\t\t\treturns NULL (e.g. because the column index is out of range),\n\t\t\tthis function returns `undefined`, regardless of the 3rd\n\t\t\targument. If the 3rd argument is falsy and conversion fails,\n\t\t\t`undefined` will be returned.\n\t\t\t\n\t\t\tNote that sqlite3_column_value() returns an \"unprotected\" value\n\t\t\tobject, but in a single-threaded environment (like this one)\n\t\t\tthere is no distinction between protected and unprotected values.\n\t\t\t*/\n\t\t\tcapi.sqlite3_column_js = function(pStmt, iCol, throwIfCannotConvert = true) {\n\t\t\t\tconst v = capi.sqlite3_column_value(pStmt, iCol);\n\t\t\t\treturn 0 === v ? void 0 : capi.sqlite3_value_to_js(v, throwIfCannotConvert);\n\t\t\t};\n\t\t\t{\n\t\t\t\t/**\n\t\t\t\tInternal impl of sqlite3_preupdate_new/old_js() and\n\t\t\t\tsqlite3changeset_new/old_js().\n\t\t\t\t*/\n\t\t\t\tconst __newOldValue = function(pObj, iCol, impl) {\n\t\t\t\t\timpl = capi[impl];\n\t\t\t\t\tif (!this.ptr) this.ptr = wasm.allocPtr();\n\t\t\t\t\telse wasm.pokePtr(this.ptr, 0);\n\t\t\t\t\tconst rc = impl(pObj, iCol, this.ptr);\n\t\t\t\t\tif (rc) return SQLite3Error.toss(rc, arguments[2] + \"() failed with code \" + rc);\n\t\t\t\t\tconst pv = wasm.peekPtr(this.ptr);\n\t\t\t\t\treturn pv ? capi.sqlite3_value_to_js(pv, true) : void 0;\n\t\t\t\t}.bind(nu());\n\t\t\t\t/**\n\t\t\t\tA wrapper around sqlite3_preupdate_new() which fetches the\n\t\t\t\tsqlite3_value at the given index and returns the result of\n\t\t\t\tpassing it to sqlite3_value_to_js(). Throws on error.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_preupdate_new_js = (pDb, iCol) => __newOldValue(pDb, iCol, \"sqlite3_preupdate_new\");\n\t\t\t\t/**\n\t\t\t\tThe sqlite3_preupdate_old() counterpart of\n\t\t\t\tsqlite3_preupdate_new_js(), with an identical interface.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_preupdate_old_js = (pDb, iCol) => __newOldValue(pDb, iCol, \"sqlite3_preupdate_old\");\n\t\t\t\t/**\n\t\t\t\tA wrapper around sqlite3changeset_new() which fetches the\n\t\t\t\tsqlite3_value at the given index and returns the result of\n\t\t\t\tpassing it to sqlite3_value_to_js(). Throws on error.\n\t\t\t\t\n\t\t\t\tIf sqlite3changeset_new() succeeds but has no value to report,\n\t\t\t\tthis function returns the undefined value, noting that\n\t\t\t\tundefined is not a valid conversion from an `sqlite3_value`, so\n\t\t\t\tis unambiguous.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3changeset_new_js = (pChangesetIter, iCol) => __newOldValue(pChangesetIter, iCol, \"sqlite3changeset_new\");\n\t\t\t\t/**\n\t\t\t\tThe sqlite3changeset_old() counterpart of\n\t\t\t\tsqlite3changeset_new_js(), with an identical interface.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3changeset_old_js = (pChangesetIter, iCol) => __newOldValue(pChangesetIter, iCol, \"sqlite3changeset_old\");\n\t\t\t}\n\t\t\t/**\n\t\t\tEXPERIMENTAL. For tentative addition in 3.53.0.\n\t\t\t\n\t\t\tsqlite3_js_retry_busy(maxTimes,callback[,beforeRetry])\n\t\t\t\n\t\t\tCalls the given _synchronous_ callback function. If that function\n\t\t\treturns sqlite3.capi.SQLITE_BUSY _or_ throws an SQLite3Error\n\t\t\twith a resultCode property of that value then it will suppress\n\t\t\tthat error and try again, up to the given maximum number of\n\t\t\ttimes. If the callback returns any other value than that,\n\t\t\tit is returned. If the maximum number of retries has been\n\t\t\treached, an SQLite3Error with a resultCode value of\n\t\t\tsqlite3.capi.SQLITE_BUSY is thrown. If the callback throws any\n\t\t\texception other than the aforementioned BUSY exception, it is\n\t\t\tpropagated. If it throws a BUSY exception on its final attempt,\n\t\t\tthat is propagated as well.\n\t\t\t\n\t\t\tIf the beforeRetry argument is given, it must be a _synchronous_\n\t\t\tfunction. It is called immediately before each retry of the\n\t\t\tcallback (not for the initial call), passed the attempt number\n\t\t\t(so it starts with 2, not 1). If it throws, the exception is\n\t\t\thandled as described above. Its result value is ignored.\n\t\t\t\n\t\t\tTo effectively retry \"forever\", pass a negative maxTimes value,\n\t\t\twith the caveat that there is no recovery from that unless the\n\t\t\tbeforeRetry() can figure out when to throw.\n\t\t\t\n\t\t\tTODO: an async variant of this.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_retry_busy = function(maxTimes, callback, beforeRetry) {\n\t\t\t\tfor (let n = 1; n <= maxTimes; ++n) try {\n\t\t\t\t\tif (beforeRetry && n > 1) beforeRetry(n);\n\t\t\t\t\tconst rc = callback();\n\t\t\t\t\tif (capi.SQLITE_BUSY === rc) {\n\t\t\t\t\t\tif (n === maxTimes) throw new SQLite3Error(rc, [\n\t\t\t\t\t\t\t\"sqlite3_js_retry_busy() max retry attempts (\",\n\t\t\t\t\t\t\tmaxTimes,\n\t\t\t\t\t\t\t\") reached.\"\n\t\t\t\t\t\t].join(\"\"));\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\treturn rc;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (n < maxTimes && e instanceof SQLite3Error && e.resultCode === capi.SQLITE_BUSY) continue;\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst sqlite3 = {\n\t\t\t\tWasmAllocError,\n\t\t\t\tSQLite3Error,\n\t\t\t\tcapi,\n\t\t\t\tutil,\n\t\t\t\twasm,\n\t\t\t\tconfig,\n\t\t\t\tversion: nu(),\n\t\t\t\tclient: void 0,\n\t\t\t\tasyncPostInit: async function ff() {\n\t\t\t\t\tif (ff.isReady instanceof Promise) return ff.isReady;\n\t\t\t\t\tlet lia = this.initializersAsync;\n\t\t\t\t\tdelete this.initializersAsync;\n\t\t\t\t\tconst postInit = async () => {\n\t\t\t\t\t\tif (!sqlite3.__isUnderTest) {\n\t\t\t\t\t\t\tdelete sqlite3.util;\n\t\t\t\t\t\t\tdelete sqlite3.StructBinder;\n\t\t\t\t\t\t\tdelete sqlite3.opfs;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn sqlite3;\n\t\t\t\t\t};\n\t\t\t\t\tconst catcher = (e) => {\n\t\t\t\t\t\tconfig.error(\"an async sqlite3 initializer failed:\", e);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t};\n\t\t\t\t\tif (!lia || !lia.length) return ff.isReady = postInit().catch(catcher);\n\t\t\t\t\tlia = lia.map((f) => {\n\t\t\t\t\t\treturn f instanceof Function ? async (x) => f(sqlite3) : f;\n\t\t\t\t\t});\n\t\t\t\t\tlia.push(postInit);\n\t\t\t\t\tlet p = Promise.resolve(sqlite3);\n\t\t\t\t\twhile (lia.length) p = p.then(lia.shift());\n\t\t\t\t\treturn ff.isReady = p.catch(catcher);\n\t\t\t\t}.bind(sqlite3ApiBootstrap),\n\t\t\t\tscriptInfo: void 0\n\t\t\t};\n\t\t\tif (\"undefined\" !== typeof sqlite3IsUnderTest) sqlite3.__isUnderTest = !!sqlite3IsUnderTest;\n\t\t\ttry {\n\t\t\t\tsqlite3ApiBootstrap.initializers.forEach((f) => {\n\t\t\t\t\tf(sqlite3);\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"sqlite3 bootstrap initializer threw:\", e);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\tdelete sqlite3ApiBootstrap.initializers;\n\t\t\tsqlite3ApiBootstrap.sqlite3 = sqlite3;\n\t\t\tif (\"undefined\" !== typeof sqlite3InitScriptInfo) {\n\t\t\t\tsqlite3InitScriptInfo.debugModule(\"sqlite3ApiBootstrap() complete\", sqlite3);\n\t\t\t\tsqlite3.scriptInfo = sqlite3InitScriptInfo;\n\t\t\t}\n\t\t\tif (sqlite3.__isUnderTest) {\n\t\t\t\tif (\"undefined\" !== typeof EmscriptenModule) sqlite3.config.emscripten = EmscriptenModule;\n\t\t\t\tconst iw = sqlite3.scriptInfo?.instantiateWasm;\n\t\t\t\tif (iw) {\n\t\t\t\t\tsqlite3.wasm.module = iw.module;\n\t\t\t\t\tsqlite3.wasm.instance = iw.instance;\n\t\t\t\t\tsqlite3.wasm.imports = iw.imports;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tEliminate any confusion about whether these config objects may\n\t\t\tbe used after library initialization by eliminating the outward-facing\n\t\t\tobjects...\n\t\t\t*/\n\t\t\tdelete globalThis.sqlite3ApiConfig;\n\t\t\tdelete globalThis.sqlite3ApiBootstrap;\n\t\t\tdelete sqlite3ApiBootstrap.defaultConfig;\n\t\t\treturn sqlite3.asyncPostInit().then((s) => {\n\t\t\t\tif (\"undefined\" !== typeof sqlite3InitScriptInfo) sqlite3InitScriptInfo.debugModule(\"sqlite3.asyncPostInit() complete\", s);\n\t\t\t\tdelete s.asyncPostInit;\n\t\t\t\tdelete s.scriptInfo;\n\t\t\t\tdelete s.emscripten;\n\t\t\t\treturn s;\n\t\t\t});\n\t\t};\n\t\t/**\n\t\tglobalThis.sqlite3ApiBootstrap.initializers is an internal detail\n\t\tused by the various pieces of the sqlite3 API's amalgamation\n\t\tprocess. It must not be modified by client code except when plugging\n\t\tsuch code into the amalgamation process.\n\t\t\n\t\tEach component of the amalgamation is expected to append a function\n\t\tto this array. When sqlite3ApiBootstrap() is called for the first\n\t\ttime, each such function will be called (in their appended order)\n\t\tand passed the sqlite3 namespace object, into which they can install\n\t\ttheir features. At the end of that process, this array is deleted.\n\t\t\n\t\tThe order of insertion into this array is significant for\n\t\tsome pieces. e.g. sqlite3.capi and sqlite3.wasm cannot be fully\n\t\tutilized until the whwasmutil.js part is plugged in via\n\t\tsqlite3-api-glue.js.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializers = [];\n\t\t/**\n\t\tglobalThis.sqlite3ApiBootstrap.initializersAsync is an internal detail\n\t\tused by the sqlite3 API's amalgamation process. It must not be\n\t\tmodified by client code except when plugging such code into the\n\t\tamalgamation process.\n\t\t\n\t\tThe counterpart of globalThis.sqlite3ApiBootstrap.initializers,\n\t\tspecifically for initializers which are asynchronous. All entries in\n\t\tthis list must be either async functions, non-async functions which\n\t\treturn a Promise, or a Promise. Each function in the list is called\n\t\twith the sqlite3 object as its only argument.\n\t\t\n\t\tThe resolved value of any Promise is ignored and rejection will kill\n\t\tthe asyncPostInit() process (at an indeterminate point because all\n\t\tof them are run asynchronously in parallel).\n\t\t\n\t\tThis list is not processed until the client calls\n\t\tsqlite3.asyncPostInit(). This means, for example, that intializers\n\t\tadded to globalThis.sqlite3ApiBootstrap.initializers may push entries to\n\t\tthis list.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializersAsync = [];\n\t\t/**\n\t\tClient code may assign sqlite3ApiBootstrap.defaultConfig an\n\t\tobject-type value before calling sqlite3ApiBootstrap() (without\n\t\targuments) in order to tell that call to use this object as its\n\t\tdefault config value. The intention of this is to provide\n\t\tdownstream clients with a reasonably flexible approach for plugging in\n\t\tan environment-suitable configuration without having to define a new\n\t\tglobal-scope symbol.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.defaultConfig = Object.create(null);\n\t\t/**\n\t\tPlaceholder: gets installed by the first call to\n\t\tglobalThis.sqlite3ApiBootstrap(). However, it is recommended that the\n\t\tcaller of sqlite3ApiBootstrap() capture its return value and delete\n\t\tglobalThis.sqlite3ApiBootstrap after calling it. It returns the same\n\t\tvalue which will be stored here.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.sqlite3 = void 0;\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tsqlite3.version = {\n\t\t\t\t\"libVersion\": \"3.53.0\",\n\t\t\t\t\"libVersionNumber\": 3053e3,\n\t\t\t\t\"sourceId\": \"2026-04-09 11:41:38 4525003a53a7fc63ca75c59b22c79608659ca12f0131f52c18637f829977f20b\",\n\t\t\t\t\"downloadVersion\": 353e4,\n\t\t\t\t\"scm\": {\n\t\t\t\t\t\"sha3-256\": \"4525003a53a7fc63ca75c59b22c79608659ca12f0131f52c18637f829977f20b\",\n\t\t\t\t\t\"branch\": \"trunk\",\n\t\t\t\t\t\"tags\": \"release major-release version-3.53.0\",\n\t\t\t\t\t\"datetime\": \"2026-04-09T11:41:38.498Z\"\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t\tglobalThis.WhWasmUtilInstaller = function WhWasmUtilInstaller(target) {\n\t\t\t\"use strict\";\n\t\t\tif (void 0 === target.bigIntEnabled) target.bigIntEnabled = !!globalThis[\"BigInt64Array\"];\n\t\t\t/** Throws a new Error, the message of which is the concatenation of\n\t\t\tall args with a space between each. */\n\t\t\tconst toss = (...args) => {\n\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t};\n\t\t\tif (!target.pointerSize && !target.pointerIR && target.alloc && target.dealloc) {\n\t\t\t\tconst ptr = target.alloc(1);\n\t\t\t\ttarget.pointerSize = \"bigint\" === typeof ptr ? 8 : 4;\n\t\t\t\ttarget.dealloc(ptr);\n\t\t\t}\n\t\t\t/**\n\t\t\tAs of 2025-09-21, this library works with 64-bit WASM modules\n\t\t\tbuilt with Emscripten's -sMEMORY64=1.\n\t\t\t*/\n\t\t\tif (target.pointerSize && !target.pointerIR) target.pointerIR = 4 === target.pointerSize ? \"i32\" : \"i64\";\n\t\t\tconst __ptrIR = target.pointerIR ??= \"i32\";\n\t\t\tconst __ptrSize = target.pointerSize ??= \"i32\" === __ptrIR ? 4 : \"i64\" === __ptrIR ? 8 : 0;\n\t\t\tdelete target.pointerSize;\n\t\t\tdelete target.pointerIR;\n\t\t\tif (\"i32\" !== __ptrIR && \"i64\" !== __ptrIR) toss(\"Invalid pointerIR:\", __ptrIR);\n\t\t\telse if (8 !== __ptrSize && 4 !== __ptrSize) toss(\"Invalid pointerSize:\", __ptrSize);\n\t\t\t/** Either BigInt or, if !target.bigIntEnabled, a function which\n\t\t\tthrows complaining that BigInt is not enabled. */\n\t\t\tconst __BigInt = target.bigIntEnabled ? (v) => BigInt(v || 0) : (v) => toss(\"BigInt support is disabled in this build.\");\n\t\t\tconst __Number = (v) => Number(v || 0);\n\t\t\t/**\n\t\t\tIf target.ptr.ir==='i32' then this is equivalent to\n\t\t\tNumber(v||0) else it's equivalent to BigInt(v||0), throwing\n\t\t\tif BigInt support is disabled.\n\t\t\t\n\t\t\tWhy? Because Number(null)===0, but BigInt(null) throws. We\n\t\t\tperform the same for Number to allow the undefined value to be\n\t\t\ttreated as a NULL WASM pointer, primarily to reduce friction in\n\t\t\tmany SQLite3 bindings which have long relied on that.\n\t\t\t*/\n\t\t\tconst __asPtrType = 4 === __ptrSize ? __Number : __BigInt;\n\t\t\t/**\n\t\t\tThe number 0 as either type Number or BigInt, depending on\n\t\t\ttarget.ptr.ir.\n\t\t\t*/\n\t\t\tconst __NullPtr = __asPtrType(0);\n\t\t\t/**\n\t\t\tExpects any number of numeric arguments, each one of either type\n\t\t\tNumber or BigInt. It sums them up (from an implicit starting\n\t\t\tpoint of 0 or 0n) and returns them as a number of the same type\n\t\t\twhich target.ptr.coerce() uses.\n\t\t\t\n\t\t\tThis is a workaround for not being able to mix Number/BigInt in\n\t\t\taddition/subtraction expressions (which we frequently need for\n\t\t\tcalculating pointer offsets).\n\t\t\t*/\n\t\t\tconst __ptrAdd = function(...args) {\n\t\t\t\tlet rc = __asPtrType(0);\n\t\t\t\tfor (const v of args) rc += __asPtrType(v);\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/** Set up target.ptr... */\n\t\t\t{\n\t\t\t\tconst __ptr = Object.create(null);\n\t\t\t\tObject.defineProperty(target, \"ptr\", {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: () => __ptr,\n\t\t\t\t\tset: () => toss(\"The ptr property is read-only.\")\n\t\t\t\t});\n\t\t\t\t(function f(name, val) {\n\t\t\t\t\tObject.defineProperty(__ptr, name, {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget: () => val,\n\t\t\t\t\t\tset: () => toss(\"ptr[\" + name + \"] is read-only.\")\n\t\t\t\t\t});\n\t\t\t\t\treturn f;\n\t\t\t\t})(\"null\", __NullPtr)(\"size\", __ptrSize)(\"ir\", __ptrIR)(\"coerce\", __asPtrType)(\"add\", __ptrAdd)(\"addn\", 4 === __ptrIR ? __ptrAdd : (...args) => Number(__ptrAdd(...args)));\n\t\t\t}\n\t\t\tif (!target.exports) Object.defineProperty(target, \"exports\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: () => target.instance?.exports\n\t\t\t});\n\t\t\t/** Stores various cached state. */\n\t\t\tconst cache = Object.create(null);\n\t\t\t/** Previously-recorded size of cache.memory.buffer, noted so that\n\t\t\twe can recreate the view objects if the heap grows. */\n\t\t\tcache.heapSize = 0;\n\t\t\t/** WebAssembly.Memory object extracted from target.memory or\n\t\t\ttarget.exports.memory the first time heapWrappers() is\n\t\t\tcalled. */\n\t\t\tcache.memory = null;\n\t\t\t/** uninstallFunction() puts table indexes in here for reuse and\n\t\t\tinstallFunction() extracts them. */\n\t\t\tcache.freeFuncIndexes = [];\n\t\t\t/**\n\t\t\tList-of-lists used by scopedAlloc() and friends.\n\t\t\t*/\n\t\t\tcache.scopedAlloc = [];\n\t\t\t/** Push the pointer ptr to the current cache.scopedAlloc list\n\t\t\t(which must already exist) and return ptr. */\n\t\t\tcache.scopedAlloc.pushPtr = (ptr) => {\n\t\t\t\tcache.scopedAlloc[cache.scopedAlloc.length - 1].push(ptr);\n\t\t\t\treturn ptr;\n\t\t\t};\n\t\t\tcache.utf8Decoder = new TextDecoder();\n\t\t\tcache.utf8Encoder = new TextEncoder(\"utf-8\");\n\t\t\t/**\n\t\t\tFor the given IR-like string in the set ('i8', 'i16', 'i32',\n\t\t\t'f32', 'float', 'i64', 'f64', 'double', '*'), or any string value\n\t\t\tending in '*', returns the sizeof for that value\n\t\t\t(target.ptr.size in the latter case). For any other value, it\n\t\t\treturns the undefined value.\n\t\t\t*/\n\t\t\ttarget.sizeofIR = (n) => {\n\t\t\t\tswitch (n) {\n\t\t\t\t\tcase \"i8\": return 1;\n\t\t\t\t\tcase \"i16\": return 2;\n\t\t\t\t\tcase \"i32\":\n\t\t\t\t\tcase \"f32\":\n\t\t\t\t\tcase \"float\": return 4;\n\t\t\t\t\tcase \"i64\":\n\t\t\t\t\tcase \"f64\":\n\t\t\t\t\tcase \"double\": return 8;\n\t\t\t\t\tcase \"*\": return __ptrSize;\n\t\t\t\t\tdefault: return (\"\" + n).endsWith(\"*\") ? __ptrSize : void 0;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tIf (cache.heapSize !== cache.memory.buffer.byteLength), i.e. if\n\t\t\tthe heap has grown since the last call, updates cache.HEAPxyz.\n\t\t\tReturns the cache object.\n\t\t\t*/\n\t\t\tconst heapWrappers = function() {\n\t\t\t\tif (!cache.memory) cache.memory = target.memory instanceof WebAssembly.Memory ? target.memory : target.exports.memory;\n\t\t\t\telse if (cache.heapSize === cache.memory.buffer.byteLength) return cache;\n\t\t\t\tconst b = cache.memory.buffer;\n\t\t\t\tcache.HEAP8 = new Int8Array(b);\n\t\t\t\tcache.HEAP8U = new Uint8Array(b);\n\t\t\t\tcache.HEAP16 = new Int16Array(b);\n\t\t\t\tcache.HEAP16U = new Uint16Array(b);\n\t\t\t\tcache.HEAP32 = new Int32Array(b);\n\t\t\t\tcache.HEAP32U = new Uint32Array(b);\n\t\t\t\tcache.HEAP32F = new Float32Array(b);\n\t\t\t\tcache.HEAP64F = new Float64Array(b);\n\t\t\t\tif (target.bigIntEnabled) if (\"undefined\" !== typeof BigInt64Array) {\n\t\t\t\t\tcache.HEAP64 = new BigInt64Array(b);\n\t\t\t\t\tcache.HEAP64U = new BigUint64Array(b);\n\t\t\t\t} else toss(\"BigInt support is enabled, but the BigInt64Array type is missing.\");\n\t\t\t\tcache.heapSize = b.byteLength;\n\t\t\t\treturn cache;\n\t\t\t};\n\t\t\t/** Convenience equivalent of this.heapForSize(8,false). */\n\t\t\ttarget.heap8 = () => heapWrappers().HEAP8;\n\t\t\t/** Convenience equivalent of this.heapForSize(8,true). */\n\t\t\ttarget.heap8u = () => heapWrappers().HEAP8U;\n\t\t\t/** Convenience equivalent of this.heapForSize(16,false). */\n\t\t\ttarget.heap16 = () => heapWrappers().HEAP16;\n\t\t\t/** Convenience equivalent of this.heapForSize(16,true). */\n\t\t\ttarget.heap16u = () => heapWrappers().HEAP16U;\n\t\t\t/** Convenience equivalent of this.heapForSize(32,false). */\n\t\t\ttarget.heap32 = () => heapWrappers().HEAP32;\n\t\t\t/** Convenience equivalent of this.heapForSize(32,true). */\n\t\t\ttarget.heap32u = () => heapWrappers().HEAP32U;\n\t\t\t/**\n\t\t\tRequires n to be one of:\n\t\t\t\n\t\t\t- integer 8, 16, or 32.\n\t\t\t- A integer-type TypedArray constructor: Int8Array, Int16Array,\n\t\t\tInt32Array, or their Uint counterparts.\n\t\t\t\n\t\t\tIf this.bigIntEnabled is true, it also accepts the value 64 or a\n\t\t\tBigInt64Array/BigUint64Array, else it throws if passed 64 or one\n\t\t\tof those constructors.\n\t\t\t\n\t\t\tReturns an integer-based TypedArray view of the WASM heap memory\n\t\t\tbuffer associated with the given block size. If passed an integer\n\t\t\tas the first argument and unsigned is truthy then the \"U\"\n\t\t\t(unsigned) variant of that view is returned, else the signed\n\t\t\tvariant is returned. If passed a TypedArray value, the 2nd\n\t\t\targument is ignored. Float32Array and Float64Array views are not\n\t\t\tsupported by this function.\n\t\t\t\n\t\t\tGrowth of the heap will invalidate any references to this heap,\n\t\t\tso do not hold a reference longer than needed and do not use a\n\t\t\treference after any operation which may allocate. Instead,\n\t\t\tre-fetch the reference by calling this function again.\n\t\t\t\n\t\t\tThrows if passed an invalid n.\n\t\t\t*/\n\t\t\ttarget.heapForSize = function(n, unsigned = true) {\n\t\t\t\tconst c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n\t\t\t\tswitch (n) {\n\t\t\t\t\tcase Int8Array: return c.HEAP8;\n\t\t\t\t\tcase Uint8Array: return c.HEAP8U;\n\t\t\t\t\tcase Int16Array: return c.HEAP16;\n\t\t\t\t\tcase Uint16Array: return c.HEAP16U;\n\t\t\t\t\tcase Int32Array: return c.HEAP32;\n\t\t\t\t\tcase Uint32Array: return c.HEAP32U;\n\t\t\t\t\tcase 8: return unsigned ? c.HEAP8U : c.HEAP8;\n\t\t\t\t\tcase 16: return unsigned ? c.HEAP16U : c.HEAP16;\n\t\t\t\t\tcase 32: return unsigned ? c.HEAP32U : c.HEAP32;\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\tif (c.HEAP64) return unsigned ? c.HEAP64U : c.HEAP64;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: if (target.bigIntEnabled) {\n\t\t\t\t\t\tif (n === globalThis[\"BigUint64Array\"]) return c.HEAP64U;\n\t\t\t\t\t\telse if (n === globalThis[\"BigInt64Array\"]) return c.HEAP64;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttoss(\"Invalid heapForSize() size: expecting 8, 16, 32,\", \"or (if BigInt is enabled) 64.\");\n\t\t\t};\n\t\t\tconst __funcTable = target.functionTable;\n\t\t\tdelete target.functionTable;\n\t\t\t/**\n\t\t\tReturns the WASM-exported \"indirect function table\".\n\t\t\t*/\n\t\t\ttarget.functionTable = __funcTable ? () => __funcTable : () => target.exports.__indirect_function_table;\n\t\t\t/**\n\t\t\tGiven a function pointer, returns the WASM function table entry\n\t\t\tif found, else returns a falsy value: undefined if fptr is out of\n\t\t\trange or null if it's in range but the table entry is empty.\n\t\t\t*/\n\t\t\ttarget.functionEntry = function(fptr) {\n\t\t\t\tconst ft = target.functionTable();\n\t\t\t\treturn fptr < ft.length ? ft.get(__asPtrType(fptr)) : void 0;\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates a WASM function which wraps the given JS function and\n\t\t\treturns the JS binding of that WASM function. The signature\n\t\t\tstring must be the Jaccwabyt-format or Emscripten\n\t\t\taddFunction()-format function signature string. In short: in may\n\t\t\thave one of the following formats:\n\t\t\t\n\t\t\t- Emscripten: `\"x...\"`, where the first x is a letter representing\n\t\t\tthe result type and subsequent letters represent the argument\n\t\t\ttypes. Functions with no arguments have only a single\n\t\t\tletter.\n\t\t\t\n\t\t\t- Jaccwabyt: `\"x(...)\"` where `x` is the letter representing the\n\t\t\tresult type and letters in the parens (if any) represent the\n\t\t\targument types. Functions with no arguments use `x()`.\n\t\t\t\n\t\t\tSupported letters:\n\t\t\t\n\t\t\t- `i` = int32\n\t\t\t- `p` = int32 or int64 (\"pointer\"), depending on target.ptr.size\n\t\t\t- `j` = int64\n\t\t\t- `f` = float32\n\t\t\t- `d` = float64\n\t\t\t- `v` = void, only legal for use as the result type\n\t\t\t\n\t\t\tIt throws if an invalid signature letter is used.\n\t\t\t\n\t\t\tJaccwabyt-format signatures support some additional letters which\n\t\t\thave no special meaning here but (in this context) act as aliases\n\t\t\tfor other letters:\n\t\t\t\n\t\t\t- `s`, `P`: same as `p`\n\t\t\t\n\t\t\tSidebar: this code is developed together with Jaccwabyt, thus the\n\t\t\tsupport for its signature format.\n\t\t\t\n\t\t\tThe arguments may be supplied in either order: (func,sig) or\n\t\t\t(sig,func).\n\t\t\t*/\n\t\t\ttarget.jsFuncToWasm = function f(func, sig) {\n\t\t\t\t/** Attribution: adapted up from Emscripten-generated glue code,\n\t\t\t\trefactored primarily for efficiency's sake, eliminating\n\t\t\t\tcall-local functions and superfluous temporary arrays. */\n\t\t\t\tif (!f._) f._ = {\n\t\t\t\t\tsigTypes: Object.assign(Object.create(null), {\n\t\t\t\t\t\ti: \"i32\",\n\t\t\t\t\t\tp: __ptrIR,\n\t\t\t\t\t\tP: __ptrIR,\n\t\t\t\t\t\ts: __ptrIR,\n\t\t\t\t\t\tj: \"i64\",\n\t\t\t\t\t\tf: \"f32\",\n\t\t\t\t\t\td: \"f64\"\n\t\t\t\t\t}),\n\t\t\t\t\ttypeCodes: Object.assign(Object.create(null), {\n\t\t\t\t\t\tf64: 124,\n\t\t\t\t\t\tf32: 125,\n\t\t\t\t\t\ti64: 126,\n\t\t\t\t\t\ti32: 127\n\t\t\t\t\t}),\n\t\t\t\t\tuleb128Encode: (tgt, method, n) => {\n\t\t\t\t\t\tif (n < 128) tgt[method](n);\n\t\t\t\t\t\telse tgt[method](n % 128 | 128, n >> 7);\n\t\t\t\t\t},\n\t\t\t\t\trxJSig: /^(\\w)\\((\\w*)\\)$/,\n\t\t\t\t\tsigParams: (sig) => {\n\t\t\t\t\t\tconst m = f._.rxJSig.exec(sig);\n\t\t\t\t\t\treturn m ? m[2] : sig.substr(1);\n\t\t\t\t\t},\n\t\t\t\t\tletterType: (x) => f._.sigTypes[x] || toss(\"Invalid signature letter:\", x),\n\t\t\t\t\tpushSigType: (dest, letter) => dest.push(f._.typeCodes[f._.letterType(letter)])\n\t\t\t\t};\n\t\t\t\tif (\"string\" === typeof func) {\n\t\t\t\t\tconst x = sig;\n\t\t\t\t\tsig = func;\n\t\t\t\t\tfunc = x;\n\t\t\t\t}\n\t\t\t\tconst _ = f._;\n\t\t\t\tconst sigParams = _.sigParams(sig);\n\t\t\t\tconst wasmCode = [1, 96];\n\t\t\t\t_.uleb128Encode(wasmCode, \"push\", sigParams.length);\n\t\t\t\tfor (const x of sigParams) _.pushSigType(wasmCode, x);\n\t\t\t\tif (\"v\" === sig[0]) wasmCode.push(0);\n\t\t\t\telse {\n\t\t\t\t\twasmCode.push(1);\n\t\t\t\t\t_.pushSigType(wasmCode, sig[0]);\n\t\t\t\t}\n\t\t\t\t_.uleb128Encode(wasmCode, \"unshift\", wasmCode.length);\n\t\t\t\twasmCode.unshift(0, 97, 115, 109, 1, 0, 0, 0, 1);\n\t\t\t\twasmCode.push(2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0);\n\t\t\t\treturn new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array(wasmCode)), { e: { f: func } }).exports[\"f\"];\n\t\t\t};\n\t\t\t/**\n\t\t\tDocumented as target.installFunction() except for the 3rd\n\t\t\targument: if truthy, the newly-created function pointer\n\t\t\tis stashed in the current scoped-alloc scope and will be\n\t\t\tcleaned up at the matching scopedAllocPop(), else it\n\t\t\tis not stashed there.\n\t\t\t*/\n\t\t\tconst __installFunction = function f(func, sig, scoped) {\n\t\t\t\tif (scoped && !cache.scopedAlloc.length) toss(\"No scopedAllocPush() scope is active.\");\n\t\t\t\tif (\"string\" === typeof func) {\n\t\t\t\t\tconst x = sig;\n\t\t\t\t\tsig = func;\n\t\t\t\t\tfunc = x;\n\t\t\t\t}\n\t\t\t\tif (\"string\" !== typeof sig || !(func instanceof Function)) toss(\"Invalid arguments: expecting (function,signature) or (signature,function).\");\n\t\t\t\tconst ft = target.functionTable();\n\t\t\t\tconst oldLen = __asPtrType(ft.length);\n\t\t\t\tlet ptr;\n\t\t\t\twhile (ptr = cache.freeFuncIndexes.pop()) if (ft.get(ptr)) {\n\t\t\t\t\tptr = null;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else break;\n\t\t\t\tif (!ptr) {\n\t\t\t\t\tptr = __asPtrType(oldLen);\n\t\t\t\t\tft.grow(__asPtrType(1));\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tft.set(ptr, func);\n\t\t\t\t\tif (scoped) cache.scopedAlloc.pushPtr(ptr);\n\t\t\t\t\treturn ptr;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (!(e instanceof TypeError)) {\n\t\t\t\t\t\tif (ptr === oldLen) cache.freeFuncIndexes.push(oldLen);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst fptr = target.jsFuncToWasm(func, sig);\n\t\t\t\t\tft.set(ptr, fptr);\n\t\t\t\t\tif (scoped) cache.scopedAlloc.pushPtr(ptr);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (ptr === oldLen) cache.freeFuncIndexes.push(oldLen);\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn ptr;\n\t\t\t};\n\t\t\t/**\n\t\t\tExpects a JS function and signature, exactly as for\n\t\t\tthis.jsFuncToWasm(). It uses that function to create a\n\t\t\tWASM-exported function, installs that function to the next\n\t\t\tavailable slot of this.functionTable(), and returns the\n\t\t\tfunction's index in that table (which acts as a pointer to that\n\t\t\tfunction). The returned pointer can be passed to\n\t\t\tuninstallFunction() to uninstall it and free up the table slot\n\t\t\tfor reuse.\n\t\t\t\n\t\t\tIf passed (string,function) arguments then it treats the first\n\t\t\targument as the signature and second as the function.\n\t\t\t\n\t\t\tAs a special case, if the passed-in function is a WASM-exported\n\t\t\tfunction then the signature argument is ignored and func is\n\t\t\tinstalled as-is, without requiring re-compilation/re-wrapping.\n\t\t\t\n\t\t\tThis function will propagate an exception if\n\t\t\tWebAssembly.Table.grow() throws or this.jsFuncToWasm() throws.\n\t\t\tThe former case can happen in an Emscripten-compiled environment\n\t\t\twhen building without Emscripten's `-sALLOW_TABLE_GROWTH` flag.\n\t\t\t\n\t\t\tSidebar: this function differs from Emscripten's addFunction()\n\t\t\t_primarily_ in that it does not share that function's\n\t\t\tundocumented behavior of reusing a function if it's passed to\n\t\t\taddFunction() more than once, which leads to uninstallFunction()\n\t\t\tbreaking clients which do not take care to avoid that case:\n\t\t\t\n\t\t\thttps://github.com/emscripten-core/emscripten/issues/17323\n\t\t\t*/\n\t\t\ttarget.installFunction = (func, sig) => __installFunction(func, sig, false);\n\t\t\t/**\n\t\t\tWorks exactly like installFunction() but requires that a\n\t\t\tscopedAllocPush() is active and uninstalls the given function\n\t\t\twhen that alloc scope is popped via scopedAllocPop().\n\t\t\tThis is used for implementing JS/WASM function bindings which\n\t\t\tshould only persist for the life of a call into a single\n\t\t\tC-side function.\n\t\t\t*/\n\t\t\ttarget.scopedInstallFunction = (func, sig) => __installFunction(func, sig, true);\n\t\t\t/**\n\t\t\tRequires a pointer value previously returned from\n\t\t\tthis.installFunction(). Removes that function from the WASM\n\t\t\tfunction table, marks its table slot as free for re-use, and\n\t\t\treturns that function. It is illegal to call this before\n\t\t\tinstallFunction() has been called and results are undefined if\n\t\t\tptr was not returned by that function. The returned function\n\t\t\tmay be passed back to installFunction() to reinstall it.\n\t\t\t\n\t\t\tTo simplify certain use cases, if passed a falsy non-0 value\n\t\t\t(noting that 0 is a valid function table index), this function\n\t\t\thas no side effects and returns undefined.\n\t\t\t*/\n\t\t\ttarget.uninstallFunction = function(ptr) {\n\t\t\t\tif (!ptr && __NullPtr !== ptr) return void 0;\n\t\t\t\tconst ft = target.functionTable();\n\t\t\t\tcache.freeFuncIndexes.push(ptr);\n\t\t\t\tconst rc = ft.get(ptr);\n\t\t\t\tft.set(ptr, null);\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a WASM heap memory address and a data type name in the form\n\t\t\t(i8, i16, i32, i64, float (or f32), double (or f64)), this\n\t\t\tfetches the numeric value from that address and returns it as a\n\t\t\tnumber or, for the case of type='i64', a BigInt (with the caveat\n\t\t\tBigInt will trigger an exception if this.bigIntEnabled is\n\t\t\tfalsy). Throws if given an invalid type.\n\t\t\t\n\t\t\tIf the first argument is an array, it is treated as an array of\n\t\t\taddresses and the result is an array of the values from each of\n\t\t\tthose address, using the same 2nd argument for determining the\n\t\t\tvalue type to fetch.\n\t\t\t\n\t\t\tAs a special case, if type ends with a `*`, it is considered to\n\t\t\tbe a pointer type and is treated as the WASM numeric type\n\t\t\tappropriate for the pointer size (==this.ptr.ir).\n\t\t\t\n\t\t\tWhile possibly not obvious, this routine and its poke()\n\t\t\tcounterpart are how pointer-to-value _output_ parameters in\n\t\t\tWASM-compiled C code can be interacted with:\n\t\t\t\n\t\t\t```\n\t\t\tconst ptr = alloc(4);\n\t\t\tpoke32(ptr, 0); // clear the ptr's value\n\t\t\taCFuncWithOutputPtrToInt32Arg(ptr); // e.g. void foo(int *x);\n\t\t\tconst result = peek32(ptr); // fetch ptr's value\n\t\t\tdealloc(ptr);\n\t\t\t```\n\t\t\t\n\t\t\tscopedAlloc() and friends can be used to make handling of\n\t\t\t`ptr` safe against leaks in the case of an exception:\n\t\t\t\n\t\t\t```\n\t\t\tlet result;\n\t\t\tconst scope = scopedAllocPush();\n\t\t\ttry{\n\t\t\tconst ptr = scopedAlloc(4);\n\t\t\tpoke32(ptr, 0);\n\t\t\taCFuncWithOutputPtrArg(ptr);\n\t\t\tresult = peek32(ptr);\n\t\t\t}finally{\n\t\t\tscopedAllocPop(scope);\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tAs a rule poke() must be called to set (typically zero out) the\n\t\t\tpointer's value, else it will contain an essentially random\n\t\t\tvalue.\n\t\t\t\n\t\t\tACHTUNG: calling this often, e.g. in a loop, can have a noticably\n\t\t\tpainful impact on performance. Rather than doing so, use\n\t\t\theapForSize() to fetch the heap object and read directly from it.\n\t\t\t\n\t\t\tACHTUNG #2: ptr may be a BigInt (and generally will be in 64-bit\n\t\t\tbuilds) but this function must coerce it into a Number in order\n\t\t\tto access the heap's contents. Ergo: BitInts outside of the\n\t\t\t(extrardinarily genereous) address range exposed to browser-side\n\t\t\tWASM may cause misbehavior.\n\t\t\t\n\t\t\tSee also: poke()\n\t\t\t*/\n\t\t\ttarget.peek = function f(ptr, type = \"i8\") {\n\t\t\t\tif (type.endsWith(\"*\")) type = __ptrIR;\n\t\t\t\tconst c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n\t\t\t\tconst list = Array.isArray(ptr) ? [] : void 0;\n\t\t\t\tlet rc;\n\t\t\t\tdo {\n\t\t\t\t\tif (list) ptr = arguments[0].shift();\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase \"i1\":\n\t\t\t\t\t\tcase \"i8\":\n\t\t\t\t\t\t\trc = c.HEAP8[Number(ptr) >> 0];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"i16\":\n\t\t\t\t\t\t\trc = c.HEAP16[Number(ptr) >> 1];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"i32\":\n\t\t\t\t\t\t\trc = c.HEAP32[Number(ptr) >> 2];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"float\":\n\t\t\t\t\t\tcase \"f32\":\n\t\t\t\t\t\t\trc = c.HEAP32F[Number(ptr) >> 2];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"double\":\n\t\t\t\t\t\tcase \"f64\":\n\t\t\t\t\t\t\trc = Number(c.HEAP64F[Number(ptr) >> 3]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"i64\": if (c.HEAP64) {\n\t\t\t\t\t\t\trc = __BigInt(c.HEAP64[Number(ptr) >> 3]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: toss(\"Invalid type for peek():\", type);\n\t\t\t\t\t}\n\t\t\t\t\tif (list) list.push(rc);\n\t\t\t\t} while (list && arguments[0].length);\n\t\t\t\treturn list || rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tThe counterpart of peek(), this sets a numeric value at the given\n\t\t\tWASM heap address, using the 3rd argument to define how many\n\t\t\tbytes are written. Throws if given an invalid type. See peek()\n\t\t\tfor details about the `type` argument. If the 3rd argument ends\n\t\t\twith `*` then it is treated as a pointer type and this function\n\t\t\tbehaves as if the 3rd argument were this.ptr.ir.\n\t\t\t\n\t\t\tIf the first argument is an array, it is treated like a list\n\t\t\tof pointers and the given value is written to each one.\n\t\t\t\n\t\t\tReturns `this`. (Prior to 2022-12-09 it returned this function.)\n\t\t\t\n\t\t\tACHTUNG #1: see peek()'s ACHTUNG #1.\n\t\t\t\n\t\t\tACHTUNG #2: see peek()'s ACHTUNG #2.\n\t\t\t*/\n\t\t\ttarget.poke = function(ptr, value, type = \"i8\") {\n\t\t\t\tif (type.endsWith(\"*\")) type = __ptrIR;\n\t\t\t\tconst c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n\t\t\t\tfor (const p of Array.isArray(ptr) ? ptr : [ptr]) switch (type) {\n\t\t\t\t\tcase \"i1\":\n\t\t\t\t\tcase \"i8\":\n\t\t\t\t\t\tc.HEAP8[Number(p) >> 0] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"i16\":\n\t\t\t\t\t\tc.HEAP16[Number(p) >> 1] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"i32\":\n\t\t\t\t\t\tc.HEAP32[Number(p) >> 2] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"float\":\n\t\t\t\t\tcase \"f32\":\n\t\t\t\t\t\tc.HEAP32F[Number(p) >> 2] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"double\":\n\t\t\t\t\tcase \"f64\":\n\t\t\t\t\t\tc.HEAP64F[Number(p) >> 3] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"i64\": if (c.HEAP64) {\n\t\t\t\t\t\tc.HEAP64[Number(p) >> 3] = __BigInt(value);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdefault: toss(\"Invalid type for poke(): \" + type);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\t/**\n\t\t\tConvenience form of peek() intended for fetching\n\t\t\tpointer-to-pointer values. If passed a single non-array argument\n\t\t\tit returns the value of that one pointer address. If passed\n\t\t\tmultiple arguments, or a single array of arguments, it returns an\n\t\t\tarray of their values.\n\t\t\t*/\n\t\t\ttarget.peekPtr = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, __ptrIR);\n\t\t\t/**\n\t\t\tA variant of poke() intended for setting pointer-to-pointer\n\t\t\tvalues. Its differences from poke() are that (1) it defaults to a\n\t\t\tvalue of 0 and (2) it always writes to the pointer-sized heap\n\t\t\tview.\n\t\t\t*/\n\t\t\ttarget.pokePtr = (ptr, value = 0) => target.poke(ptr, value, __ptrIR);\n\t\t\t/**\n\t\t\tConvenience form of peek() intended for fetching i8 values. If\n\t\t\tpassed a single non-array argument it returns the value of that\n\t\t\tone pointer address. If passed multiple arguments, or a single\n\t\t\tarray of arguments, it returns an array of their values.\n\t\t\t*/\n\t\t\ttarget.peek8 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i8\");\n\t\t\t/**\n\t\t\tConvenience form of poke() intended for setting individual bytes.\n\t\t\tIts difference from poke() is that it always writes to the\n\t\t\ti8-sized heap view.\n\t\t\t*/\n\t\t\ttarget.poke8 = (ptr, value) => target.poke(ptr, value, \"i8\");\n\t\t\t/** i16 variant of peek8(). */\n\t\t\ttarget.peek16 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i16\");\n\t\t\t/** i16 variant of poke8(). */\n\t\t\ttarget.poke16 = (ptr, value) => target.poke(ptr, value, \"i16\");\n\t\t\t/** i32 variant of peek8(). */\n\t\t\ttarget.peek32 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i32\");\n\t\t\t/** i32 variant of poke8(). */\n\t\t\ttarget.poke32 = (ptr, value) => target.poke(ptr, value, \"i32\");\n\t\t\t/** i64 variant of peek8(). Will throw if this build is not\n\t\t\tconfigured for BigInt support. */\n\t\t\ttarget.peek64 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i64\");\n\t\t\t/** i64 variant of poke8(). Will throw if this build is not\n\t\t\tconfigured for BigInt support. Note that this returns\n\t\t\ta BigInt-type value, not a Number-type value. */\n\t\t\ttarget.poke64 = (ptr, value) => target.poke(ptr, value, \"i64\");\n\t\t\t/** f32 variant of peek8(). */\n\t\t\ttarget.peek32f = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"f32\");\n\t\t\t/** f32 variant of poke8(). */\n\t\t\ttarget.poke32f = (ptr, value) => target.poke(ptr, value, \"f32\");\n\t\t\t/** f64 variant of peek8(). */\n\t\t\ttarget.peek64f = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"f64\");\n\t\t\t/** f64 variant of poke8(). */\n\t\t\ttarget.poke64f = (ptr, value) => target.poke(ptr, value, \"f64\");\n\t\t\t/** Deprecated alias for getMemValue() */\n\t\t\ttarget.getMemValue = target.peek;\n\t\t\t/** Deprecated alias for peekPtr() */\n\t\t\ttarget.getPtrValue = target.peekPtr;\n\t\t\t/** Deprecated alias for poke() */\n\t\t\ttarget.setMemValue = target.poke;\n\t\t\t/** Deprecated alias for pokePtr() */\n\t\t\ttarget.setPtrValue = target.pokePtr;\n\t\t\t/**\n\t\t\tReturns true if the given value appears to be legal for use as\n\t\t\ta WASM pointer value. Its _range_ of values is not (cannot be)\n\t\t\tvalidated except to ensure that it is a 32-bit integer with a\n\t\t\tvalue of 0 or greater. Likewise, it cannot verify whether the\n\t\t\tvalue actually refers to allocated memory in the WASM heap.\n\t\t\t\n\t\t\tWhether or not null or undefined are legal are context-dependent.\n\t\t\tThey generally are legal but this function does not treat them as\n\t\t\tsuch because they're not strictly legal for passing as-is as WASM\n\t\t\tinteger arguments.\n\t\t\t*/\n\t\t\ttarget.isPtr32 = (ptr) => \"number\" === typeof ptr && ptr >= 0 && ptr === (ptr | 0);\n\t\t\t/** 64-bit counterpart of isPtr32() and falls back to that function\n\t\t\tif ptr is not a BigInt. */\n\t\t\ttarget.isPtr64 = (ptr) => \"bigint\" === typeof ptr ? ptr >= 0 : target.isPtr32(ptr);\n\t\t\t/**\n\t\t\tisPtr() is an alias for isPtr32() or isPtr64(), depending on the\n\t\t\tvalue of target.ptr.size.\n\t\t\t*/\n\t\t\ttarget.isPtr = 4 === __ptrSize ? target.isPtr32 : target.isPtr64;\n\t\t\t/**\n\t\t\tExpects ptr to be a pointer into the WASM heap memory which\n\t\t\trefers to a NUL-terminated C-style string encoded as UTF-8.\n\t\t\tReturns the length, in bytes, of the string, as for `strlen(3)`.\n\t\t\tAs a special case, if !ptr or if it's not a pointer then it\n\t\t\treturns `null`. Throws if ptr is out of range for\n\t\t\ttarget.heap8u().\n\t\t\t*/\n\t\t\ttarget.cstrlen = function(ptr) {\n\t\t\t\tif (!ptr || !target.isPtr(ptr)) return null;\n\t\t\t\tptr = Number(ptr);\n\t\t\t\tconst h = heapWrappers().HEAP8U;\n\t\t\t\tlet pos = ptr;\n\t\t\t\tfor (; h[pos] !== 0; ++pos);\n\t\t\t\treturn pos - ptr;\n\t\t\t};\n\t\t\t/** Internal helper to use in operations which need to distinguish\n\t\t\tbetween TypedArrays which are backed by a SharedArrayBuffer\n\t\t\tfrom those which are not. */\n\t\t\tconst __SAB = \"undefined\" === typeof SharedArrayBuffer ? function() {} : SharedArrayBuffer;\n\t\t\t/** Returns true if the given TypedArray object is backed by a\n\t\t\tSharedArrayBuffer, else false. */\n\t\t\tconst isSharedTypedArray = (aTypedArray) => aTypedArray.buffer instanceof __SAB;\n\t\t\ttarget.isSharedTypedArray = isSharedTypedArray;\n\t\t\t/**\n\t\t\tReturns either aTypedArray.slice(begin,end) (if\n\t\t\taTypedArray.buffer is a SharedArrayBuffer) or\n\t\t\taTypedArray.subarray(begin,end) (if it's not).\n\t\t\t\n\t\t\tThis distinction is important for APIs which don't like to\n\t\t\twork on SABs, e.g. TextDecoder, and possibly for our\n\t\t\town APIs which work on memory ranges which \"might\" be\n\t\t\tmodified by other threads while they're working.\n\t\t\t\n\t\t\tbegin and end may be of type Number or (in 64-bit builds) BigInt\n\t\t\t(which get coerced to Numbers).\n\t\t\t*/\n\t\t\tconst typedArrayPart = (aTypedArray, begin, end) => {\n\t\t\t\tif (8 === __ptrSize) {\n\t\t\t\t\tif (\"bigint\" === typeof begin) begin = Number(begin);\n\t\t\t\t\tif (\"bigint\" === typeof end) end = Number(end);\n\t\t\t\t}\n\t\t\t\treturn isSharedTypedArray(aTypedArray) ? aTypedArray.slice(begin, end) : aTypedArray.subarray(begin, end);\n\t\t\t};\n\t\t\ttarget.typedArrayPart = typedArrayPart;\n\t\t\t/**\n\t\t\tUses TextDecoder to decode the given half-open range of the given\n\t\t\tTypedArray to a string. This differs from a simple call to\n\t\t\tTextDecoder in that it accounts for whether the first argument is\n\t\t\tbacked by a SharedArrayBuffer or not, and can work more\n\t\t\tefficiently if it's not (TextDecoder refuses to act upon an SAB).\n\t\t\t\n\t\t\tIf begin/end are not provided or are falsy then each defaults to\n\t\t\tthe start/end of the array.\n\t\t\t*/\n\t\t\tconst typedArrayToString = (typedArray, begin, end) => cache.utf8Decoder.decode(typedArrayPart(typedArray, begin, end));\n\t\t\ttarget.typedArrayToString = typedArrayToString;\n\t\t\t/**\n\t\t\tExpects ptr to be a pointer into the WASM heap memory which\n\t\t\trefers to a NUL-terminated C-style string encoded as UTF-8. This\n\t\t\tfunction counts its byte length using cstrlen() then returns a\n\t\t\tJS-format string representing its contents. As a special case, if\n\t\t\tptr is falsy or not a pointer, `null` is returned.\n\t\t\t*/\n\t\t\ttarget.cstrToJs = function(ptr) {\n\t\t\t\tconst n = target.cstrlen(ptr);\n\t\t\t\treturn n ? typedArrayToString(heapWrappers().HEAP8U, Number(ptr), Number(ptr) + n) : null === n ? n : \"\";\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a JS string, this function returns its UTF-8 length in\n\t\t\tbytes. Returns null if str is not a string.\n\t\t\t*/\n\t\t\ttarget.jstrlen = function(str) {\n\t\t\t\t/** Attribution: derived from Emscripten's lengthBytesUTF8() */\n\t\t\t\tif (\"string\" !== typeof str) return null;\n\t\t\t\tconst n = str.length;\n\t\t\t\tlet len = 0;\n\t\t\t\tfor (let i = 0; i < n; ++i) {\n\t\t\t\t\tlet u = str.charCodeAt(i);\n\t\t\t\t\tif (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n\t\t\t\t\tif (u <= 127) ++len;\n\t\t\t\t\telse if (u <= 2047) len += 2;\n\t\t\t\t\telse if (u <= 65535) len += 3;\n\t\t\t\t\telse len += 4;\n\t\t\t\t}\n\t\t\t\treturn len;\n\t\t\t};\n\t\t\t/**\n\t\t\tEncodes the given JS string as UTF8 into the given TypedArray\n\t\t\ttgt, starting at the given offset and writing, at most, maxBytes\n\t\t\tbytes (including the NUL terminator if addNul is true, else no\n\t\t\tNUL is added). If it writes any bytes at all and addNul is true,\n\t\t\tit always NUL-terminates the output, even if doing so means that\n\t\t\tthe NUL byte is all that it writes.\n\t\t\t\n\t\t\tIf maxBytes is negative (the default) then it is treated as the\n\t\t\tremaining length of tgt, starting at the given offset.\n\t\t\t\n\t\t\tIf writing the last character would surpass the maxBytes count\n\t\t\tbecause the character is multi-byte, that character will not be\n\t\t\twritten (as opposed to writing a truncated multi-byte character).\n\t\t\tThis can lead to it writing as many as 3 fewer bytes than\n\t\t\tmaxBytes specifies.\n\t\t\t\n\t\t\tReturns the number of bytes written to the target, _including_\n\t\t\tthe NUL terminator (if any). If it returns 0, it wrote nothing at\n\t\t\tall, which can happen if:\n\t\t\t\n\t\t\t- str is empty and addNul is false.\n\t\t\t- offset < 0.\n\t\t\t- maxBytes == 0.\n\t\t\t- maxBytes is less than the byte length of a multi-byte str[0].\n\t\t\t\n\t\t\tThrows if tgt is not an Int8Array or Uint8Array.\n\t\t\t\n\t\t\tDesign notes:\n\t\t\t\n\t\t\t- In C's strcpy(), the destination pointer is the first\n\t\t\targument. That is not the case here primarily because the 3rd+\n\t\t\targuments are all referring to the destination, so it seems to\n\t\t\tmake sense to have them grouped with it.\n\t\t\t\n\t\t\t- Emscripten's counterpart of this function (stringToUTF8Array())\n\t\t\treturns the number of bytes written sans NUL terminator. That\n\t\t\tis, however, ambiguous: str.length===0 or maxBytes===(0 or 1)\n\t\t\tall cause 0 to be returned.\n\t\t\t*/\n\t\t\ttarget.jstrcpy = function(jstr, tgt, offset = 0, maxBytes = -1, addNul = true) {\n\t\t\t\t/** Attribution: the encoding bits are taken from Emscripten's\n\t\t\t\tstringToUTF8Array(). */\n\t\t\t\tif (!tgt || !(tgt instanceof Int8Array) && !(tgt instanceof Uint8Array)) toss(\"jstrcpy() target must be an Int8Array or Uint8Array.\");\n\t\t\t\tmaxBytes = Number(maxBytes);\n\t\t\t\toffset = Number(offset);\n\t\t\t\tif (maxBytes < 0) maxBytes = tgt.length - offset;\n\t\t\t\tif (!(maxBytes > 0) || !(offset >= 0)) return 0;\n\t\t\t\tlet i = 0, max = jstr.length;\n\t\t\t\tconst begin = offset, end = offset + maxBytes - (addNul ? 1 : 0);\n\t\t\t\tfor (; i < max && offset < end; ++i) {\n\t\t\t\t\tlet u = jstr.charCodeAt(i);\n\t\t\t\t\tif (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | jstr.charCodeAt(++i) & 1023;\n\t\t\t\t\tif (u <= 127) {\n\t\t\t\t\t\tif (offset >= end) break;\n\t\t\t\t\t\ttgt[offset++] = u;\n\t\t\t\t\t} else if (u <= 2047) {\n\t\t\t\t\t\tif (offset + 1 >= end) break;\n\t\t\t\t\t\ttgt[offset++] = 192 | u >> 6;\n\t\t\t\t\t\ttgt[offset++] = 128 | u & 63;\n\t\t\t\t\t} else if (u <= 65535) {\n\t\t\t\t\t\tif (offset + 2 >= end) break;\n\t\t\t\t\t\ttgt[offset++] = 224 | u >> 12;\n\t\t\t\t\t\ttgt[offset++] = 128 | u >> 6 & 63;\n\t\t\t\t\t\ttgt[offset++] = 128 | u & 63;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (offset + 3 >= end) break;\n\t\t\t\t\t\ttgt[offset++] = 240 | u >> 18;\n\t\t\t\t\t\ttgt[offset++] = 128 | u >> 12 & 63;\n\t\t\t\t\t\ttgt[offset++] = 128 | u >> 6 & 63;\n\t\t\t\t\t\ttgt[offset++] = 128 | u & 63;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (addNul) tgt[offset++] = 0;\n\t\t\t\treturn offset - begin;\n\t\t\t};\n\t\t\t/**\n\t\t\tWorks similarly to C's strncpy(), copying, at most, n bytes (not\n\t\t\tcharacters) from srcPtr to tgtPtr. It copies until n bytes have\n\t\t\tbeen copied or a 0 byte is reached in src. _Unlike_ strncpy(), it\n\t\t\treturns the number of bytes it assigns in tgtPtr, _including_ the\n\t\t\tNUL byte (if any). If n is reached before a NUL byte in srcPtr,\n\t\t\ttgtPtr will _not_ be NULL-terminated. If a NUL byte is reached\n\t\t\tbefore n bytes are copied, tgtPtr will be NUL-terminated.\n\t\t\t\n\t\t\tIf n is negative, cstrlen(srcPtr)+1 is used to calculate it, the\n\t\t\t+1 being for the NUL byte.\n\t\t\t\n\t\t\tThrows if tgtPtr or srcPtr are falsy. Results are undefined if:\n\t\t\t\n\t\t\t- either is not a pointer into the WASM heap or\n\t\t\t\n\t\t\t- srcPtr is not NUL-terminated AND n is less than srcPtr's\n\t\t\tlogical length.\n\t\t\t\n\t\t\tACHTUNG: it is possible to copy partial multi-byte characters\n\t\t\tthis way, and converting such strings back to JS strings will\n\t\t\thave undefined results.\n\t\t\t*/\n\t\t\ttarget.cstrncpy = function(tgtPtr, srcPtr, n) {\n\t\t\t\tif (!tgtPtr || !srcPtr) toss(\"cstrncpy() does not accept NULL strings.\");\n\t\t\t\tif (n < 0) n = target.cstrlen(strPtr) + 1;\n\t\t\t\telse if (!(n > 0)) return 0;\n\t\t\t\tconst heap = target.heap8u();\n\t\t\t\tlet i = 0, ch;\n\t\t\t\tconst tgtNumber = Number(tgtPtr), srcNumber = Number(srcPtr);\n\t\t\t\tfor (; i < n && (ch = heap[srcNumber + i]); ++i) heap[tgtNumber + i] = ch;\n\t\t\t\tif (i < n) heap[tgtNumber + i++] = 0;\n\t\t\t\treturn i;\n\t\t\t};\n\t\t\t/**\n\t\t\tFor the given JS string, returns a Uint8Array of its contents\n\t\t\tencoded as UTF-8. If addNul is true, the returned array will have\n\t\t\ta trailing 0 entry, else it will not.\n\t\t\t*/\n\t\t\ttarget.jstrToUintArray = (str, addNul = false) => {\n\t\t\t\treturn cache.utf8Encoder.encode(addNul ? str + \"\\0\" : str);\n\t\t\t};\n\t\t\tconst __affirmAlloc = (obj, funcName) => {\n\t\t\t\tif (!(obj.alloc instanceof Function) || !(obj.dealloc instanceof Function)) toss(\"Object is missing alloc() and/or dealloc() function(s)\", \"required by\", funcName + \"().\");\n\t\t\t};\n\t\t\tconst __allocCStr = function(jstr, returnWithLength, allocator, funcName) {\n\t\t\t\t__affirmAlloc(target, funcName);\n\t\t\t\tif (\"string\" !== typeof jstr) return null;\n\t\t\t\tconst u = cache.utf8Encoder.encode(jstr), ptr = allocator(u.length + 1);\n\t\t\t\tlet toFree = ptr;\n\t\t\t\ttry {\n\t\t\t\t\tconst heap = heapWrappers().HEAP8U;\n\t\t\t\t\theap.set(u, Number(ptr));\n\t\t\t\t\theap[__ptrAdd(ptr, u.length)] = 0;\n\t\t\t\t\ttoFree = __NullPtr;\n\t\t\t\t\treturn returnWithLength ? [ptr, u.length] : ptr;\n\t\t\t\t} finally {\n\t\t\t\t\tif (toFree) target.dealloc(toFree);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tUses target.alloc() to allocate enough memory for jstrlen(jstr)+1\n\t\t\tbytes of memory, copies jstr to that memory using jstrcpy(),\n\t\t\tNUL-terminates it, and returns the pointer to that C-string.\n\t\t\tOwnership of the pointer is transfered to the caller, who must\n\t\t\teventually pass the pointer to dealloc() to free it.\n\t\t\t\n\t\t\tIf passed a truthy 2nd argument then its return semantics change:\n\t\t\tit returns [ptr,n], where ptr is the C-string's pointer and n is\n\t\t\tits cstrlen().\n\t\t\t\n\t\t\tThrows if `target.alloc` or `target.dealloc` are not functions.\n\t\t\t*/\n\t\t\ttarget.allocCString = (jstr, returnWithLength = false) => __allocCStr(jstr, returnWithLength, target.alloc, \"allocCString()\");\n\t\t\t/**\n\t\t\tStarts an \"allocation scope.\" All allocations made using\n\t\t\tscopedAlloc() are recorded in this scope and are freed when the\n\t\t\tvalue returned from this function is passed to\n\t\t\tscopedAllocPop().\n\t\t\t\n\t\t\tThis family of functions requires that the API's object have both\n\t\t\t`alloc()` and `dealloc()` methods, else this function will throw.\n\t\t\t\n\t\t\tIntended usage:\n\t\t\t\n\t\t\t```\n\t\t\tconst scope = scopedAllocPush();\n\t\t\ttry {\n\t\t\tconst ptr1 = scopedAlloc(100);\n\t\t\tconst ptr2 = scopedAlloc(200);\n\t\t\tconst ptr3 = scopedAlloc(300);\n\t\t\t...\n\t\t\t// Note that only allocations made via scopedAlloc()\n\t\t\t// are managed by this allocation scope.\n\t\t\t}finally{\n\t\t\tscopedAllocPop(scope);\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tThe value returned by this function must be treated as opaque by\n\t\t\tthe caller, suitable _only_ for passing to scopedAllocPop().\n\t\t\tIts type and value are not part of this function's API and may\n\t\t\tchange in any given version of this code.\n\t\t\t\n\t\t\t`scopedAlloc.level` can be used to determine how many scoped\n\t\t\talloc levels are currently active.\n\t\t\t*/\n\t\t\ttarget.scopedAllocPush = function() {\n\t\t\t\t__affirmAlloc(target, \"scopedAllocPush\");\n\t\t\t\tconst a = [];\n\t\t\t\tcache.scopedAlloc.push(a);\n\t\t\t\treturn a;\n\t\t\t};\n\t\t\t/**\n\t\t\tCleans up all allocations made using scopedAlloc() in the context\n\t\t\tof the given opaque state object, which must be a value returned\n\t\t\tby scopedAllocPush(). See that function for an example of how to\n\t\t\tuse this function. It also uninstalls any WASM functions\n\t\t\tinstalled with scopedInstallFunction().\n\t\t\t\n\t\t\tThough scoped allocations are managed like a stack, this API\n\t\t\tbehaves properly if allocation scopes are popped in an order\n\t\t\tother than the order they were pushed. The intent is that it\n\t\t\t_always_ be used in a stack-like manner.\n\t\t\t\n\t\t\tIf called with no arguments, it pops the most recent\n\t\t\tscopedAllocPush() result:\n\t\t\t\n\t\t\t```\n\t\t\tscopedAllocPush();\n\t\t\ttry{ ... } finally { scopedAllocPop(); }\n\t\t\t```\n\t\t\t\n\t\t\tIt's generally recommended that it be passed an explicit argument\n\t\t\tto help ensure that push/push are used in matching pairs, but in\n\t\t\ttrivial code that may be a non-issue.\n\t\t\t*/\n\t\t\ttarget.scopedAllocPop = function(state) {\n\t\t\t\t__affirmAlloc(target, \"scopedAllocPop\");\n\t\t\t\tconst n = arguments.length ? cache.scopedAlloc.indexOf(state) : cache.scopedAlloc.length - 1;\n\t\t\t\tif (n < 0) toss(\"Invalid state object for scopedAllocPop().\");\n\t\t\t\tif (0 === arguments.length) state = cache.scopedAlloc[n];\n\t\t\t\tcache.scopedAlloc.splice(n, 1);\n\t\t\t\tfor (let p; p = state.pop();) if (target.functionEntry(p)) target.uninstallFunction(p);\n\t\t\t\telse target.dealloc(p);\n\t\t\t};\n\t\t\t/**\n\t\t\tAllocates n bytes of memory using this.alloc() and records that\n\t\t\tfact in the state for the most recent call of scopedAllocPush().\n\t\t\tOwnership of the memory is given to scopedAllocPop(), which\n\t\t\twill clean it up when it is called. The memory _must not_ be\n\t\t\tpassed to this.dealloc(). Throws if this API object is missing\n\t\t\tthe required `alloc()` or `dealloc()` functions or no scoped\n\t\t\talloc is active.\n\t\t\t\n\t\t\tSee scopedAllocPush() for an example of how to use this function.\n\t\t\t\n\t\t\tThe `level` property of this function can be queried to query how\n\t\t\tmany scoped allocation levels are currently active.\n\t\t\t\n\t\t\tSee also: scopedAllocPtr(), scopedAllocCString()\n\t\t\t*/\n\t\t\ttarget.scopedAlloc = function(n) {\n\t\t\t\tif (!cache.scopedAlloc.length) toss(\"No scopedAllocPush() scope is active.\");\n\t\t\t\tconst p = __asPtrType(target.alloc(n));\n\t\t\t\treturn cache.scopedAlloc.pushPtr(p);\n\t\t\t};\n\t\t\tObject.defineProperty(target.scopedAlloc, \"level\", {\n\t\t\t\tconfigurable: false,\n\t\t\t\tenumerable: false,\n\t\t\t\tget: () => cache.scopedAlloc.length,\n\t\t\t\tset: () => toss(\"The 'active' property is read-only.\")\n\t\t\t});\n\t\t\t/**\n\t\t\tWorks identically to allocCString() except that it allocates the\n\t\t\tmemory using scopedAlloc().\n\t\t\t\n\t\t\tWill throw if no scopedAllocPush() call is active.\n\t\t\t*/\n\t\t\ttarget.scopedAllocCString = (jstr, returnWithLength = false) => __allocCStr(jstr, returnWithLength, target.scopedAlloc, \"scopedAllocCString()\");\n\t\t\tconst __allocMainArgv = function(isScoped, list) {\n\t\t\t\tconst pList = target[isScoped ? \"scopedAlloc\" : \"alloc\"]((list.length + 1) * target.ptr.size);\n\t\t\t\tlet i = 0;\n\t\t\t\tlist.forEach((e) => {\n\t\t\t\t\ttarget.pokePtr(__ptrAdd(pList, target.ptr.size * i++), target[isScoped ? \"scopedAllocCString\" : \"allocCString\"](\"\" + e));\n\t\t\t\t});\n\t\t\t\ttarget.pokePtr(__ptrAdd(pList, target.ptr.size * i), 0);\n\t\t\t\treturn pList;\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates an array, using scopedAlloc(), suitable for passing to a\n\t\t\tC-level main() routine. The input is a collection with a length\n\t\t\tproperty and a forEach() method. A block of memory\n\t\t\t(list.length+1) entries long is allocated and each pointer-sized\n\t\t\tblock of that memory is populated with a scopedAllocCString()\n\t\t\tconversion of the (\"\"+value) of each element, with the exception\n\t\t\tthat the final entry is a NULL pointer. Returns a pointer to the\n\t\t\tstart of the list, suitable for passing as the 2nd argument to a\n\t\t\tC-style main() function.\n\t\t\t\n\t\t\tThrows if scopedAllocPush() is not active.\n\t\t\t\n\t\t\tDesign note: the returned array is allocated with an extra NULL\n\t\t\tpointer entry to accommodate certain APIs, but client code which\n\t\t\tdoes not need that functionality should treat the returned array\n\t\t\tas list.length entries long.\n\t\t\t*/\n\t\t\ttarget.scopedAllocMainArgv = (list) => __allocMainArgv(true, list);\n\t\t\t/**\n\t\t\tIdentical to scopedAllocMainArgv() but uses alloc() instead of\n\t\t\tscopedAlloc().\n\t\t\t*/\n\t\t\ttarget.allocMainArgv = (list) => __allocMainArgv(false, list);\n\t\t\t/**\n\t\t\tExpects to be given a C-style string array and its length. It\n\t\t\treturns a JS array of strings and/or nulls: any entry in the\n\t\t\tpArgv array which is NULL results in a null entry in the result\n\t\t\tarray. If argc is 0 then an empty array is returned.\n\t\t\t\n\t\t\tResults are undefined if any entry in the first argc entries of\n\t\t\tpArgv are neither 0 (NULL) nor legal UTF-format C strings.\n\t\t\t\n\t\t\tTo be clear, the expected C-style arguments to be passed to this\n\t\t\tfunction are `(int, char **)` (optionally const-qualified).\n\t\t\t*/\n\t\t\ttarget.cArgvToJs = (argc, pArgv) => {\n\t\t\t\tconst list = [];\n\t\t\t\tfor (let i = 0; i < argc; ++i) {\n\t\t\t\t\tconst arg = target.peekPtr(__ptrAdd(pArgv, target.ptr.size * i));\n\t\t\t\t\tlist.push(arg ? target.cstrToJs(arg) : null);\n\t\t\t\t}\n\t\t\t\treturn list;\n\t\t\t};\n\t\t\t/**\n\t\t\tWraps function call func() in a scopedAllocPush() and\n\t\t\tscopedAllocPop() block, such that all calls to scopedAlloc() and\n\t\t\tfriends from within that call will have their memory freed\n\t\t\tautomatically when func() returns. If func throws or propagates\n\t\t\tan exception, the scope is still popped, otherwise it returns the\n\t\t\tresult of calling func().\n\t\t\t*/\n\t\t\ttarget.scopedAllocCall = function(func) {\n\t\t\t\ttarget.scopedAllocPush();\n\t\t\t\ttry {\n\t\t\t\t\treturn func();\n\t\t\t\t} finally {\n\t\t\t\t\ttarget.scopedAllocPop();\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** Internal impl for allocPtr() and scopedAllocPtr(). */\n\t\t\tconst __allocPtr = function(howMany, safePtrSize, method) {\n\t\t\t\t__affirmAlloc(target, method);\n\t\t\t\tconst pIr = safePtrSize ? \"i64\" : __ptrIR;\n\t\t\t\tlet m = target[method](howMany * (safePtrSize ? 8 : __ptrSize));\n\t\t\t\ttarget.poke(m, 0, pIr);\n\t\t\t\tif (1 === howMany) return m;\n\t\t\t\tconst a = [m];\n\t\t\t\tfor (let i = 1; i < howMany; ++i) {\n\t\t\t\t\tm = __ptrAdd(m, safePtrSize ? 8 : __ptrSize);\n\t\t\t\t\ta[i] = m;\n\t\t\t\t\ttarget.poke(m, 0, pIr);\n\t\t\t\t}\n\t\t\t\treturn a;\n\t\t\t};\n\t\t\t/**\n\t\t\tAllocates one or more pointers as a single chunk of memory and\n\t\t\tzeroes them out.\n\t\t\t\n\t\t\tThe first argument is the number of pointers to allocate. The\n\t\t\tsecond specifies whether they should use a \"safe\" pointer size (8\n\t\t\tbytes) or whether they may use the default pointer size\n\t\t\t(typically 4 but also possibly 8).\n\t\t\t\n\t\t\tHow the result is returned depends on its first argument: if\n\t\t\tpassed 1, it returns the allocated memory address. If passed more\n\t\t\tthan one then an array of pointer addresses is returned, which\n\t\t\tcan optionally be used with \"destructuring assignment\" like this:\n\t\t\t\n\t\t\t```\n\t\t\tconst [p1, p2, p3] = allocPtr(3);\n\t\t\t```\n\t\t\t\n\t\t\tACHTUNG: when freeing the memory, pass only the _first_ result\n\t\t\tvalue to dealloc(). The others are part of the same memory chunk\n\t\t\tand must not be freed separately.\n\t\t\t\n\t\t\tThe reason for the 2nd argument is...\n\t\t\t\n\t\t\tWhen one of the returned pointers will refer to a 64-bit value,\n\t\t\te.g. a double or int64, and that value must be written or fetched,\n\t\t\te.g. using poke() or peek(), it is important that\n\t\t\tthe pointer in question be aligned to an 8-byte boundary or else\n\t\t\tit will not be fetched or written properly and will corrupt or\n\t\t\tread neighboring memory. It is only safe to pass false when the\n\t\t\tclient code is certain that it will only get/fetch 4-byte values\n\t\t\t(or smaller).\n\t\t\t*/\n\t\t\ttarget.allocPtr = (howMany = 1, safePtrSize = true) => __allocPtr(howMany, safePtrSize, \"alloc\");\n\t\t\t/**\n\t\t\tIdentical to allocPtr() except that it allocates using scopedAlloc()\n\t\t\tinstead of alloc().\n\t\t\t*/\n\t\t\ttarget.scopedAllocPtr = (howMany = 1, safePtrSize = true) => __allocPtr(howMany, safePtrSize, \"scopedAlloc\");\n\t\t\t/**\n\t\t\tIf target.exports[name] exists, it is returned, else an\n\t\t\texception is thrown.\n\t\t\t*/\n\t\t\ttarget.xGet = function(name) {\n\t\t\t\treturn target.exports[name] || toss(\"Cannot find exported symbol:\", name);\n\t\t\t};\n\t\t\tconst __argcMismatch = (f, n) => toss(f + \"() requires\", n, \"argument(s).\");\n\t\t\t/**\n\t\t\tLooks up a WASM-exported function named fname from\n\t\t\ttarget.exports. If found, it is called, passed all remaining\n\t\t\targuments, and its return value is returned to xCall's caller. If\n\t\t\tnot found, an exception is thrown. This function does no\n\t\t\tconversion of argument or return types, but see xWrap() and\n\t\t\txCallWrapped() for variants which do.\n\t\t\t\n\t\t\tIf the first argument is a function is is assumed to be\n\t\t\ta WASM-bound function and is used as-is instead of looking up\n\t\t\tthe function via xGet().\n\t\t\t\n\t\t\tAs a special case, if passed only 1 argument after the name and\n\t\t\tthat argument in an Array, that array's entries become the\n\t\t\tfunction arguments. (This is not an ambiguous case because it's\n\t\t\tnot legal to pass an Array object to a WASM function.)\n\t\t\t*/\n\t\t\ttarget.xCall = function(fname, ...args) {\n\t\t\t\tconst f = fname instanceof Function ? fname : target.xGet(fname);\n\t\t\t\tif (!(f instanceof Function)) toss(\"Exported symbol\", fname, \"is not a function.\");\n\t\t\t\tif (f.length !== args.length) __argcMismatch(f === fname ? f.name : fname, f.length);\n\t\t\t\treturn 2 === arguments.length && Array.isArray(arguments[1]) ? f.apply(null, arguments[1]) : f.apply(null, args);\n\t\t\t};\n\t\t\t/**\n\t\t\tState for use with xWrap().\n\t\t\t*/\n\t\t\tcache.xWrap = Object.create(null);\n\t\t\tcache.xWrap.convert = Object.create(null);\n\t\t\t/** Map of type names to argument conversion functions. */\n\t\t\tcache.xWrap.convert.arg = /* @__PURE__ */ new Map();\n\t\t\t/** Map of type names to return result conversion functions. */\n\t\t\tcache.xWrap.convert.result = /* @__PURE__ */ new Map();\n\t\t\t/** Scope-local convenience aliases. */\n\t\t\tconst xArg = cache.xWrap.convert.arg, xResult = cache.xWrap.convert.result;\n\t\t\tconst __xArgPtr = __asPtrType;\n\t\t\txArg.set(\"i64\", __BigInt).set(\"i32\", (i) => i | 0).set(\"i16\", (i) => (i | 0) & 65535).set(\"i8\", (i) => (i | 0) & 255).set(\"f32\", (i) => Number(i).valueOf()).set(\"float\", xArg.get(\"f32\")).set(\"f64\", xArg.get(\"f32\")).set(\"double\", xArg.get(\"f64\")).set(\"int\", xArg.get(\"i32\")).set(\"null\", (i) => i).set(null, xArg.get(\"null\")).set(\"**\", __xArgPtr).set(\"*\", __xArgPtr);\n\t\t\txResult.set(\"*\", __xArgPtr).set(\"pointer\", __xArgPtr).set(\"number\", (v) => Number(v)).set(\"void\", (v) => void 0).set(void 0, xResult.get(\"void\")).set(\"null\", (v) => v).set(null, xResult.get(\"null\"));\n\t\t\tfor (const t of [\n\t\t\t\t\"i8\",\n\t\t\t\t\"i16\",\n\t\t\t\t\"i32\",\n\t\t\t\t\"i64\",\n\t\t\t\t\"int\",\n\t\t\t\t\"f32\",\n\t\t\t\t\"float\",\n\t\t\t\t\"f64\",\n\t\t\t\t\"double\"\n\t\t\t]) {\n\t\t\t\txArg.set(t + \"*\", __xArgPtr);\n\t\t\t\txResult.set(t + \"*\", __xArgPtr);\n\t\t\t\txResult.set(t, xArg.get(t) || toss(\"Maintenance required: missing arg converter for\", t));\n\t\t\t}\n\t\t\t/**\n\t\t\tIn order for args of type string to work in various contexts in\n\t\t\tthe sqlite3 API, we need to pass them on as, variably, a C-string\n\t\t\tor a pointer value. Thus for ARGs of type 'string' and\n\t\t\t'*'/'pointer' we behave differently depending on whether the\n\t\t\targument is a string or not:\n\t\t\t\n\t\t\t- If v is a string, scopeAlloc() a new C-string from it and return\n\t\t\tthat temp string's pointer.\n\t\t\t\n\t\t\t- Else return the value from the arg adapter defined for\n\t\t\ttarget.ptr.ir.\n\t\t\t\n\t\t\tTODO? Permit an Int8Array/Uint8Array and convert it to a string?\n\t\t\tWould that be too much magic concentrated in one place, ready to\n\t\t\tbackfire? We handle that at the client level in sqlite3 with a\n\t\t\tcustom argument converter.\n\t\t\t*/\n\t\t\tconst __xArgString = (v) => {\n\t\t\t\treturn \"string\" === typeof v ? target.scopedAllocCString(v) : __asPtrType(v);\n\t\t\t};\n\t\t\txArg.set(\"string\", __xArgString).set(\"utf8\", __xArgString);\n\t\t\txResult.set(\"string\", (i) => target.cstrToJs(i)).set(\"utf8\", xResult.get(\"string\")).set(\"string:dealloc\", (i) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn i ? target.cstrToJs(i) : null;\n\t\t\t\t} finally {\n\t\t\t\t\ttarget.dealloc(i);\n\t\t\t\t}\n\t\t\t}).set(\"utf8:dealloc\", xResult.get(\"string:dealloc\")).set(\"json\", (i) => JSON.parse(target.cstrToJs(i))).set(\"json:dealloc\", (i) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn i ? JSON.parse(target.cstrToJs(i)) : null;\n\t\t\t\t} finally {\n\t\t\t\t\ttarget.dealloc(i);\n\t\t\t\t}\n\t\t\t});\n\t\t\t/**\n\t\t\tInternal-use-only base class for FuncPtrAdapter and potentially\n\t\t\tadditional stateful argument adapter classes.\n\t\t\t\n\t\t\tIts main interface (convertArg()) is strictly internal, not to be\n\t\t\texposed to client code, as it may still need re-shaping. Only the\n\t\t\tconstructors of concrete subclasses should be exposed to clients,\n\t\t\tand those in such a way that does not hinder internal redesign of\n\t\t\tthe convertArg() interface.\n\t\t\t*/\n\t\t\tconst AbstractArgAdapter = class {\n\t\t\t\tconstructor(opt) {\n\t\t\t\t\tthis.name = opt.name || \"unnamed adapter\";\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGets called via xWrap() to \"convert\" v to whatever type\n\t\t\t\tthis specific class supports.\n\t\t\t\t\n\t\t\t\targIndex is the argv index of _this_ argument in the\n\t\t\t\tbeing-xWrap()'d call. argv is the current argument list\n\t\t\t\tundergoing xWrap() argument conversion. argv entries to the\n\t\t\t\tleft of argIndex will have already undergone transformation and\n\t\t\t\tthose to the right will not have (they will have the values the\n\t\t\t\tclient-level code passed in, awaiting conversion). The RHS\n\t\t\t\tindexes must never be relied upon for anything because their\n\t\t\t\ttypes are indeterminate, whereas the LHS values will be\n\t\t\t\tWASM-compatible values by the time this is called.\n\t\t\t\t\n\t\t\t\tThe reason for the argv and argIndex arguments is that we\n\t\t\t\tfrequently need more context than v for a specific conversion,\n\t\t\t\tand that context invariably lies in the LHS arguments of v.\n\t\t\t\tExamples of how this is useful can be found in FuncPtrAdapter.\n\t\t\t\t*/\n\t\t\t\tconvertArg(v, argv, argIndex) {\n\t\t\t\t\ttoss(\"AbstractArgAdapter must be subclassed.\");\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tThis type is recognized by xWrap() as a proxy for converting a JS\n\t\t\tfunction to a C-side function, either permanently, for the\n\t\t\tduration of a single call into the C layer, or semi-contextual,\n\t\t\twhere it may keep track of a single binding for a given context\n\t\t\tand uninstall the binding if it's replaced.\n\t\t\t\n\t\t\tThe constructor requires an options object with these properties:\n\t\t\t\n\t\t\t- name (optional): string describing the function binding. This\n\t\t\tis solely for debugging and error-reporting purposes. If not\n\t\t\tprovided, an empty string is assumed.\n\t\t\t\n\t\t\t- signature: a function signature string compatible with\n\t\t\tjsFuncToWasm().\n\t\t\t\n\t\t\t- bindScope (string): one of ('transient', 'context',\n\t\t\t'singleton', 'permanent'). Bind scopes are:\n\t\t\t\n\t\t\t- 'transient': it will convert JS functions to WASM only for\n\t\t\tthe duration of the xWrap()'d function call, using\n\t\t\tscopedInstallFunction(). Before that call returns, the\n\t\t\tWASM-side binding will be uninstalled.\n\t\t\t\n\t\t\t- 'singleton': holds one function-pointer binding for this\n\t\t\tinstance. If it's called with a different function pointer,\n\t\t\tit uninstalls the previous one after converting the new\n\t\t\tvalue. This is only useful for use with \"global\" functions\n\t\t\twhich do not rely on any state other than this function\n\t\t\tpointer. If the being-converted function pointer is intended\n\t\t\tto be mapped to some sort of state object (e.g. an\n\t\t\t`sqlite3*`) then \"context\" (see below) is the proper mode.\n\t\t\t\n\t\t\t- 'context': similar to singleton mode but for a given\n\t\t\t\"context\", where the context is a key provided by the user\n\t\t\tand possibly dependent on a small amount of call-time\n\t\t\tcontext. This mode is the default if bindScope is _not_ set\n\t\t\tbut a property named contextKey (described below) is.\n\t\t\t\n\t\t\t- 'permanent': the function is installed and left there\n\t\t\tforever. There is no way to recover its pointer address\n\t\t\tlater on for cleanup purposes. i.e. it effectively leaks.\n\t\t\t\n\t\t\t- callProxy (function): if set, this must be a function which\n\t\t\twill act as a proxy for any \"converted\" JS function. It is\n\t\t\tpassed the being-converted function value and must return\n\t\t\teither that function or a function which acts on its\n\t\t\tbehalf. The returned function will be the one which gets\n\t\t\tinstalled into the WASM function table. The proxy must perform\n\t\t\tany required argument conversion (it will be called from C\n\t\t\tcode, so will receive C-format arguments) before passing them\n\t\t\ton to the being-converted function. Whether or not the proxy\n\t\t\titself must return a value depends on the context. If it does,\n\t\t\tit must be a WASM-friendly value, as it will be returning from\n\t\t\ta call made from WASM code.\n\t\t\t\n\t\t\t- contextKey (function): is only used if bindScope is 'context'\n\t\t\tor if bindScope is not set and this function is, in which case\n\t\t\ta bindScope of 'context' is assumed. This function gets bound\n\t\t\tto this object, so its \"this\" is this object. It gets passed\n\t\t\t(argv,argIndex), where argIndex is the index of _this_ function\n\t\t\tin its _wrapping_ function's arguments, and argv is the\n\t\t\t_current_ still-being-xWrap()-processed args array. (Got all\n\t\t\tthat?) When thisFunc(argv,argIndex) is called by xWrap(), all\n\t\t\targuments in argv to the left of argIndex will have been\n\t\t\tprocessed by xWrap() by the time this is called. argv[argIndex]\n\t\t\twill be the value the user passed in to the xWrap()'d function\n\t\t\tfor the argument this FuncPtrAdapter is mapped to. Arguments to\n\t\t\tthe right of argv[argIndex] will not yet have been converted\n\t\t\tbefore this is called. The function must return a key which\n\t\t\tuniquely identifies this function mapping context for _this_\n\t\t\tFuncPtrAdapter instance (other instances are not considered),\n\t\t\ttaking into account that C functions often take some sort of\n\t\t\tstate object as one or more of their arguments. As an example,\n\t\t\tif the xWrap()'d function takes `(int,T*,functionPtr,X*)` then\n\t\t\tthis FuncPtrAdapter instance is argv[2], and contextKey(argv,2)\n\t\t\tmight return 'T@'+argv[1], or even just argv[1]. Note,\n\t\t\thowever, that the (`X*`) argument will not yet have been\n\t\t\tprocessed by the time this is called and should not be used as\n\t\t\tpart of that key because its pre-conversion data type might be\n\t\t\tunpredictable. Similarly, care must be taken with C-string-type\n\t\t\targuments: those to the left in argv will, when this is called,\n\t\t\tbe WASM pointers, whereas those to the right might (and likely\n\t\t\tdo) have another data type. When using C-strings in keys, never\n\t\t\tuse their pointers in the key because most C-strings in this\n\t\t\tconstellation are transient. Conversely, the pointer address\n\t\t\tmakes an ideal key for longer-lived native pointer types.\n\t\t\t\n\t\t\tYes, that ^^^ is quite awkward, but it's what we have. In\n\t\t\tcontext, as it were, it actually makes some sense, but one must\n\t\t\tlook under its hook a bit to understand why it's shaped the\n\t\t\tway it is.\n\t\t\t\n\t\t\tThe constructor only saves the above state for later, and does\n\t\t\tnot actually bind any functions. The conversion, if any, is\n\t\t\tperformed when its convertArg() method is called via xWrap().\n\t\t\t\n\t\t\tShortcomings:\n\t\t\t\n\t\t\t- These \"reverse\" bindings, i.e. calling into a JS-defined\n\t\t\tfunction from a WASM-defined function (the generated proxy\n\t\t\twrapper), lack all type conversion support. That means, for\n\t\t\texample, that...\n\t\t\t\n\t\t\t- Function pointers which include C-string arguments may still\n\t\t\tneed a level of hand-written wrappers around them, depending on\n\t\t\thow they're used, in order to provide the client with JS\n\t\t\tstrings. Alternately, clients will need to perform such\n\t\t\tconversions on their own, e.g. using cstrToJs(). The purpose of\n\t\t\tthe callProxy() method is to account for such cases.\n\t\t\t*/\n\t\t\txArg.FuncPtrAdapter = class FuncPtrAdapter extends AbstractArgAdapter {\n\t\t\t\tconstructor(opt) {\n\t\t\t\t\tsuper(opt);\n\t\t\t\t\tif (xArg.FuncPtrAdapter.warnOnUse) console.warn(\"xArg.FuncPtrAdapter is an internal-only API\", \"and is not intended to be invoked from\", \"client-level code. Invoked with:\", opt);\n\t\t\t\t\tthis.name = opt.name || \"unnamed\";\n\t\t\t\t\tthis.signature = opt.signature;\n\t\t\t\t\tif (opt.contextKey instanceof Function) {\n\t\t\t\t\t\tthis.contextKey = opt.contextKey;\n\t\t\t\t\t\tif (!opt.bindScope) opt.bindScope = \"context\";\n\t\t\t\t\t}\n\t\t\t\t\tthis.bindScope = opt.bindScope || toss(\"FuncPtrAdapter options requires a bindScope (explicit or implied).\");\n\t\t\t\t\tif (FuncPtrAdapter.bindScopes.indexOf(opt.bindScope) < 0) toss(\"Invalid options.bindScope (\" + opt.bindMod + \") for FuncPtrAdapter. Expecting one of: (\" + FuncPtrAdapter.bindScopes.join(\", \") + \")\");\n\t\t\t\t\tthis.isTransient = \"transient\" === this.bindScope;\n\t\t\t\t\tthis.isContext = \"context\" === this.bindScope;\n\t\t\t\t\tthis.isPermanent = \"permanent\" === this.bindScope;\n\t\t\t\t\tthis.singleton = \"singleton\" === this.bindScope ? [] : void 0;\n\t\t\t\t\tthis.callProxy = opt.callProxy instanceof Function ? opt.callProxy : void 0;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tThe static class members are defined outside of the class to\n\t\t\t\twork around an emcc toolchain build problem: one of the tools\n\t\t\t\tin emsdk v3.1.42 does not support the static keyword.\n\t\t\t\t*/\n\t\t\t\tcontextKey(argv, argIndex) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns this object's mapping for the given context key, in the\n\t\t\t\tform of an an array, creating the mapping if needed. The key\n\t\t\t\tmay be anything suitable for use in a Map.\n\t\t\t\t\n\t\t\t\tThe returned array is intended to be used as a pair of\n\t\t\t\t[JSValue, WasmFuncPtr], where the first element is one passed\n\t\t\t\tto this.convertArg() and the second is its WASM form.\n\t\t\t\t*/\n\t\t\t\tcontextMap(key) {\n\t\t\t\t\tconst cm = this.__cmap || (this.__cmap = /* @__PURE__ */ new Map());\n\t\t\t\t\tlet rc = cm.get(key);\n\t\t\t\t\tif (void 0 === rc) cm.set(key, rc = []);\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGets called via xWrap() to \"convert\" v to a WASM-bound function\n\t\t\t\tpointer. If v is one of (a WASM pointer, null, undefined) then\n\t\t\t\t(v||0) is returned and any earlier function installed by this\n\t\t\t\tmapping _might_, depending on how it's bound, be uninstalled.\n\t\t\t\tIf v is not one of those types, it must be a Function, for\n\t\t\t\twhich this method creates (if needed) a WASM function binding\n\t\t\t\tand returns the WASM pointer to that binding.\n\t\t\t\t\n\t\t\t\tIf this instance is not in 'transient' mode, it will remember\n\t\t\t\tthe binding for at least the next call, to avoid recreating the\n\t\t\t\tfunction binding unnecessarily.\n\t\t\t\t\n\t\t\t\tIf it's passed a pointer(ish) value for v, it assumes it's a\n\t\t\t\tWASM function pointer and does _not_ perform any function\n\t\t\t\tbinding, so this object's bindMode is irrelevant/ignored for\n\t\t\t\tsuch cases.\n\t\t\t\t\n\t\t\t\tSee the parent class's convertArg() docs for details on what\n\t\t\t\texactly the 2nd and 3rd arguments are.\n\t\t\t\t*/\n\t\t\t\tconvertArg(v, argv, argIndex) {\n\t\t\t\t\tlet pair = this.singleton;\n\t\t\t\t\tif (!pair && this.isContext) pair = this.contextMap(this.contextKey(argv, argIndex));\n\t\t\t\t\tif (pair && 2 === pair.length && pair[0] === v) return pair[1];\n\t\t\t\t\tif (v instanceof Function) {\n\t\t\t\t\t\tif (this.callProxy) v = this.callProxy(v);\n\t\t\t\t\t\tconst fp = __installFunction(v, this.signature, this.isTransient);\n\t\t\t\t\t\tif (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter installed\", this, this.contextKey(argv, argIndex), \"@\" + fp, v);\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair[1]) {\n\t\t\t\t\t\t\t\tif (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter uninstalling\", this, this.contextKey(argv, argIndex), \"@\" + pair[1], v);\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcache.scopedAlloc.pushPtr(pair[1]);\n\t\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpair[0] = arguments[0] || __NullPtr;\n\t\t\t\t\t\t\tpair[1] = fp;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fp;\n\t\t\t\t\t} else if (target.isPtr(v) || null === v || void 0 === v) {\n\t\t\t\t\t\tif (pair && pair[1] && pair[1] !== v) {\n\t\t\t\t\t\t\tif (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter uninstalling\", this, this.contextKey(argv, argIndex), \"@\" + pair[1], v);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcache.scopedAlloc.pushPtr(pair[1]);\n\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t\tpair[0] = pair[1] = v || __NullPtr;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn v || __NullPtr;\n\t\t\t\t\t} else throw new TypeError(\"Invalid FuncPtrAdapter argument type. Expecting a function pointer or a \" + (this.name ? this.name + \" \" : \"\") + \"function matching signature \" + this.signature + \".\");\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** If true, the constructor emits a warning. The intent is that\n\t\t\tthis be set to true after bootstrapping of the higher-level\n\t\t\tclient library is complete, to warn downstream clients that\n\t\t\tthey shouldn't be relying on this implementation detail which\n\t\t\tdoes not have a stable interface. */\n\t\t\txArg.FuncPtrAdapter.warnOnUse = false;\n\t\t\t/** If true, convertArg() will call FuncPtrAdapter.debugOut() when\n\t\t\tit (un)installs a function binding to/from WASM. Note that\n\t\t\tdeinstallation of bindScope=transient bindings happens via\n\t\t\tscopedAllocPop() so will not be output. */\n\t\t\txArg.FuncPtrAdapter.debugFuncInstall = false;\n\t\t\t/** Function used for debug output. */\n\t\t\txArg.FuncPtrAdapter.debugOut = console.debug.bind(console);\n\t\t\t/**\n\t\t\tList of legal values for the FuncPtrAdapter bindScope config\n\t\t\toption.\n\t\t\t*/\n\t\t\txArg.FuncPtrAdapter.bindScopes = [\n\t\t\t\t\"transient\",\n\t\t\t\t\"context\",\n\t\t\t\t\"singleton\",\n\t\t\t\t\"permanent\"\n\t\t\t];\n\t\t\t/** Throws if xArg.get(t) returns falsy. */\n\t\t\tconst __xArgAdapterCheck = (t) => xArg.get(t) || toss(\"Argument adapter not found:\", t);\n\t\t\t/** Throws if xResult.get(t) returns falsy. */\n\t\t\tconst __xResultAdapterCheck = (t) => xResult.get(t) || toss(\"Result adapter not found:\", t);\n\t\t\t/**\n\t\t\tFetches the xWrap() argument adapter mapped to t, calls it,\n\t\t\tpassing in all remaining arguments, and returns the result.\n\t\t\tThrows if t is not mapped to an argument converter.\n\t\t\t*/\n\t\t\tcache.xWrap.convertArg = (t, ...args) => __xArgAdapterCheck(t)(...args);\n\t\t\t/**\n\t\t\tIdentical to convertArg() except that it does not perform\n\t\t\tan is-defined check on the mapping to t before invoking it.\n\t\t\t*/\n\t\t\tcache.xWrap.convertArgNoCheck = (t, ...args) => xArg.get(t)(...args);\n\t\t\t/**\n\t\t\tFetches the xWrap() result adapter mapped to t, calls it, passing\n\t\t\tit v, and returns the result. Throws if t is not mapped to an\n\t\t\targument converter.\n\t\t\t*/\n\t\t\tcache.xWrap.convertResult = (t, v) => null === t ? v : t ? __xResultAdapterCheck(t)(v) : void 0;\n\t\t\t/**\n\t\t\tIdentical to convertResult() except that it does not perform an\n\t\t\tis-defined check on the mapping to t before invoking it.\n\t\t\t*/\n\t\t\tcache.xWrap.convertResultNoCheck = (t, v) => null === t ? v : t ? xResult.get(t)(v) : void 0;\n\t\t\t/**\n\t\t\tCreates a wrapper for another function which converts the arguments\n\t\t\tof the wrapper to argument types accepted by the wrapped function,\n\t\t\tthen converts the wrapped function's result to another form\n\t\t\tfor the wrapper.\n\t\t\t\n\t\t\tThe first argument must be one of:\n\t\t\t\n\t\t\t- A JavaScript function.\n\t\t\t- The name of a WASM-exported function. xGet() is used to fetch\n\t\t\tthe exported function, which throws if it's not found.\n\t\t\t- A pointer into the indirect function table. e.g. a pointer\n\t\t\treturned from target.installFunction().\n\t\t\t\n\t\t\tIt returns either the passed-in function or a wrapper for that\n\t\t\tfunction which converts the JS-side argument types into WASM-side\n\t\t\ttypes and converts the result type.\n\t\t\t\n\t\t\tThe second argument, `resultType`, describes the conversion for\n\t\t\tthe wrapped functions result. A literal `null` or the string\n\t\t\t`'null'` both mean to return the original function's value as-is\n\t\t\t(mnemonic: there is \"null\" conversion going on). Literal\n\t\t\t`undefined` or the string `\"void\"` both mean to ignore the\n\t\t\tfunction's result and return `undefined`. Aside from those two\n\t\t\tspecial cases, the `resultType` value may be one of the values\n\t\t\tdescribed below or any mapping installed by the client using\n\t\t\txWrap.resultAdapter().\n\t\t\t\n\t\t\tIf passed 3 arguments and the final one is an array, that array\n\t\t\tmust contain a list of type names (see below) for adapting the\n\t\t\targuments from JS to WASM. If passed 2 arguments, more than 3,\n\t\t\tor the 3rd is not an array, all arguments after the 2nd (if any)\n\t\t\tare treated as type names. i.e.:\n\t\t\t\n\t\t\t```\n\t\t\txWrap('funcname', 'i32', 'string', 'f64');\n\t\t\t// is equivalent to:\n\t\t\txWrap('funcname', 'i32', ['string', 'f64']);\n\t\t\t```\n\t\t\t\n\t\t\tThis function enforces that the given list of arguments has the\n\t\t\tsame arity as the being-wrapped function (as defined by its\n\t\t\t`length` property) and it will throw if that is not the case.\n\t\t\tSimilarly, the created wrapper will throw if passed a differing\n\t\t\targument count. The intent of that strictness is to help catch\n\t\t\tcoding errors in using JS-bound WASM functions earlier rather\n\t\t\tthan laer.\n\t\t\t\n\t\t\tType names are symbolic names which map the arguments to an\n\t\t\tadapter function to convert, if needed, the value before passing\n\t\t\tit on to WASM or to convert a return result from WASM. The list\n\t\t\tof pre-defined names:\n\t\t\t\n\t\t\t- `i8`, `i16`, `i32` (args and results): all integer conversions\n\t\t\twhich convert their argument to an integer and truncate it to\n\t\t\tthe given bit length.\n\t\t\t\n\t\t\t- `*`, `**`, and `pointer` (args): are assumed to be WASM pointer\n\t\t\tvalues and are returned coerced to an appropriately-sized\n\t\t\tpointer value (i32 or i64). Non-numeric values will coerce to 0\n\t\t\tand out-of-range values will have undefined results (just as\n\t\t\twith any pointer misuse).\n\t\t\t\n\t\t\t- `*` and `pointer` (results): aliases for the current\n\t\t\tWASM pointer numeric type.\n\t\t\t\n\t\t\t- `**` (args): is simply a descriptive alias for the WASM pointer\n\t\t\ttype. It's primarily intended to mark output-pointer arguments,\n\t\t\tnoting that JS's view of WASM does not distinguish between\n\t\t\tpointers and pointers-to-pointers, so all such interpretation\n\t\t\tof `**`, as distinct from `*`, necessarily happens at the\n\t\t\tclient level.\n\t\t\t\n\t\t\t- `NumType*` (args): a type name in this form, where T is\n\t\t\tthe name of a numeric mapping, e.g. 'int16' or 'double',\n\t\t\tis treated like `*`.\n\t\t\t\n\t\t\t- `i64` (args and results): passes the value to BigInt() to\n\t\t\tconvert it to an int64. This conversion will if bigIntEnabled\n\t\t\tis falsy.\n\t\t\t\n\t\t\t- `f32` (`float`), `f64` (`double`) (args and results): pass\n\t\t\ttheir argument to Number(). i.e. the adapter does not currently\n\t\t\tdistinguish between the two types of floating-point numbers.\n\t\t\t\n\t\t\t- `number` (results): converts the result to a JS Number using\n\t\t\tNumber(theValue). This is for result conversions only, as it's\n\t\t\tnot possible to generically know which type of number to\n\t\t\tconvert arguments to.\n\t\t\t\n\t\t\tNon-numeric conversions include:\n\t\t\t\n\t\t\t- `null` literal or `\"null\"` string (args and results): perform\n\t\t\tno translation and pass the arg on as-is. This is primarily\n\t\t\tuseful for results but may have a use or two for arguments.\n\t\t\t\n\t\t\t- `string` or `utf8` (args): has two different semantics in order\n\t\t\tto accommodate various uses of certain C APIs\n\t\t\t(e.g. output-style strings)...\n\t\t\t\n\t\t\t- If the arg is a JS string, it creates a _temporary_\n\t\t\tUTF-8-encoded C-string to pass to the exported function,\n\t\t\tcleaning it up before the wrapper returns. If a long-lived\n\t\t\tC-string pointer is required, that requires client-side code\n\t\t\tto create the string then pass its pointer to the function.\n\t\t\t\n\t\t\t- Else the arg is assumed to be a pointer to a string the\n\t\t\tclient has already allocated and it's passed on as\n\t\t\ta WASM pointer.\n\t\t\t\n\t\t\t- `string` or `utf8` (results): treats the result value as a\n\t\t\tconst C-string, encoded as UTF-8, copies it to a JS string,\n\t\t\tand returns that JS string.\n\t\t\t\n\t\t\t- `string:dealloc` or `utf8:dealloc` (results): treats the result\n\t\t\tvalue as a non-const UTF-8 C-string, ownership of which has\n\t\t\tjust been transfered to the caller. It copies the C-string to a\n\t\t\tJS string, frees the C-string using dealloc(), and returns the\n\t\t\tJS string. If such a result value is NULL, the JS result is\n\t\t\t`null`. Achtung: when using an API which returns results from a\n\t\t\tspecific allocator, e.g. `my_malloc()`, this conversion _is not\n\t\t\tlegal_. Instead, an equivalent conversion which uses the\n\t\t\tappropriate deallocator is required. For example:\n\t\t\t\n\t\t\t```js\n\t\t\ttarget.xWrap.resultAdapter('string:my_free',(i)=>{\n\t\t\ttry { return i ? target.cstrToJs(i) : null; }\n\t\t\tfinally{ target.exports.my_free(i); }\n\t\t\t};\n\t\t\t```\n\t\t\t\n\t\t\t- `json` (results): treats the result as a const C-string and\n\t\t\treturns the result of passing the converted-to-JS string to\n\t\t\tJSON.parse(). Returns `null` if the C-string is a NULL pointer.\n\t\t\t\n\t\t\t- `json:dealloc` (results): works exactly like `string:dealloc` but\n\t\t\treturns the same thing as the `json` adapter. Note the\n\t\t\twarning in `string:dealloc` regarding matching allocators and\n\t\t\tdeallocators.\n\t\t\t\n\t\t\tThe type names for results and arguments are validated when\n\t\t\txWrap() is called and any unknown names will trigger an\n\t\t\texception.\n\t\t\t\n\t\t\tClients may map their own result and argument adapters using\n\t\t\txWrap.resultAdapter() and xWrap.argAdapter(), noting that not all\n\t\t\ttype conversions are valid for both arguments _and_ result types\n\t\t\tas they often have different memory ownership requirements.\n\t\t\t\n\t\t\tDesign note: the ability to pass in a JS function as the first\n\t\t\targument is of relatively limited use, primarily for testing\n\t\t\targument and result converters. JS functions, by and large, will\n\t\t\tnot want to deal with C-type arguments.\n\t\t\t\n\t\t\tTODOs:\n\t\t\t\n\t\t\t- Figure out how/whether we can (semi-)transparently handle\n\t\t\tpointer-type _output_ arguments. Those currently require\n\t\t\texplicit handling by allocating pointers, assigning them before\n\t\t\tthe call using poke(), and fetching them with\n\t\t\tpeek() after the call. We may be able to automate some\n\t\t\tor all of that.\n\t\t\t\n\t\t\t- Figure out whether it makes sense to extend the arg adapter\n\t\t\tinterface such that each arg adapter gets an array containing\n\t\t\tthe results of the previous arguments in the current call. That\n\t\t\tmight allow some interesting type-conversion feature. Use case:\n\t\t\thandling of the final argument to sqlite3_prepare_v2() depends\n\t\t\ton the type (pointer vs JS string) of its 2nd\n\t\t\targument. Currently that distinction requires hand-writing a\n\t\t\twrapper for that function. That case is unusual enough that\n\t\t\tabstracting it into this API (and taking on the associated\n\t\t\tcosts) may well not make good sense.\n\t\t\t*/\n\t\t\ttarget.xWrap = function callee(fArg, resultType, ...argTypes) {\n\t\t\t\tif (3 === arguments.length && Array.isArray(arguments[2])) argTypes = arguments[2];\n\t\t\t\tif (target.isPtr(fArg)) fArg = target.functionEntry(fArg) || toss(\"Function pointer not found in WASM function table.\");\n\t\t\t\tconst fIsFunc = fArg instanceof Function;\n\t\t\t\tconst xf = fIsFunc ? fArg : target.xGet(fArg);\n\t\t\t\tif (fIsFunc) fArg = xf.name || \"unnamed function\";\n\t\t\t\tif (argTypes.length !== xf.length) __argcMismatch(fArg, xf.length);\n\t\t\t\tif (0 === xf.length && (null === resultType || \"null\" === resultType)) return xf;\n\t\t\t\t__xResultAdapterCheck(resultType);\n\t\t\t\tfor (const t of argTypes) if (t instanceof AbstractArgAdapter) xArg.set(t, (...args) => t.convertArg(...args));\n\t\t\t\telse __xArgAdapterCheck(t);\n\t\t\t\tconst cxw = cache.xWrap;\n\t\t\t\tif (0 === xf.length) return (...args) => args.length ? __argcMismatch(fArg, xf.length) : cxw.convertResult(resultType, xf.call(null));\n\t\t\t\treturn function(...args) {\n\t\t\t\t\tif (args.length !== xf.length) __argcMismatch(fArg, xf.length);\n\t\t\t\t\tconst scope = target.scopedAllocPush();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tif (callee.debug) console.debug(\"xWrap() preparing: resultType \", resultType, \"xf\", xf, \"argTypes\", argTypes, \"args\", args);\n\t\t\t\t\t\tfor (; i < args.length; ++i) args[i] = cxw.convertArgNoCheck(argTypes[i], args[i], args, i);\n\t\t\t\t\t\tif (callee.debug) console.debug(\"xWrap() calling: resultType \", resultType, \"xf\", xf, \"argTypes\", argTypes, \"args\", args);\n\t\t\t\t\t\treturn cxw.convertResultNoCheck(resultType, xf.apply(null, args));\n\t\t\t\t\t} finally {\n\t\t\t\t\t\ttarget.scopedAllocPop(scope);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal impl for xWrap.resultAdapter() and argAdapter().\n\t\t\t\n\t\t\tfunc = one of xWrap.resultAdapter or xWrap.argAdapter.\n\t\t\t\n\t\t\targc = the number of args in the wrapping call to this\n\t\t\tfunction.\n\t\t\t\n\t\t\ttypeName = the first arg to the wrapping function.\n\t\t\t\n\t\t\tadapter = the second arg to the wrapping function.\n\t\t\t\n\t\t\tmodeName = a descriptive name of the wrapping function for\n\t\t\terror-reporting purposes.\n\t\t\t\n\t\t\txcvPart = one of xResult or xArg.\n\t\t\t\n\t\t\tThis acts as either a getter (if 1===argc) or setter (if\n\t\t\t2===argc) for the given adapter. Returns func on success or\n\t\t\tthrows if (A) called with 2 args but adapter is-not-a Function or\n\t\t\t(B) typeName is not a string or (C) argc is not one of (1, 2).\n\t\t\t*/\n\t\t\tconst __xAdapter = function(func, argc, typeName, adapter, modeName, xcvPart) {\n\t\t\t\tif (\"string\" === typeof typeName) {\n\t\t\t\t\tif (1 === argc) return xcvPart.get(typeName);\n\t\t\t\t\telse if (2 === argc) {\n\t\t\t\t\t\tif (!adapter) {\n\t\t\t\t\t\t\txcvPart.delete(typeName);\n\t\t\t\t\t\t\treturn func;\n\t\t\t\t\t\t} else if (!(adapter instanceof Function)) toss(modeName, \"requires a function argument.\");\n\t\t\t\t\t\txcvPart.set(typeName, adapter);\n\t\t\t\t\t\treturn func;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttoss(\"Invalid arguments to\", modeName);\n\t\t\t};\n\t\t\t/**\n\t\t\tGets, sets, or removes a result value adapter for use with\n\t\t\txWrap(). If passed only 1 argument, the adapter function for the\n\t\t\tgiven type name is returned. If the second argument is explicit\n\t\t\tfalsy (as opposed to defaulted), the adapter named by the first\n\t\t\targument is removed. If the 2nd argument is not falsy, it must be\n\t\t\ta function which takes one value and returns a value appropriate\n\t\t\tfor the given type name. The adapter may throw if its argument is\n\t\t\tnot of a type it can work with. This function throws for invalid\n\t\t\targuments.\n\t\t\t\n\t\t\tExample:\n\t\t\t\n\t\t\t```\n\t\t\txWrap.resultAdapter('twice',(v)=>v+v);\n\t\t\t```\n\t\t\t\n\t\t\tResult adapters MUST NOT use the scopedAlloc() family of APIs to\n\t\t\tallocate a result value. xWrap()-generated wrappers run in the\n\t\t\tcontext of scopedAllocPush() so that argument adapters can easily\n\t\t\tconvert, e.g., to C-strings, and have them cleaned up\n\t\t\tautomatically before the wrapper returns to the caller. Likewise,\n\t\t\tif a _result_ adapter uses scoped allocation, the result will be\n\t\t\tfreed before the wrapper returns, leading to chaos and undefined\n\t\t\tbehavior.\n\t\t\t\n\t\t\tWhen called as a setter, this function returns itself.\n\t\t\t*/\n\t\t\ttarget.xWrap.resultAdapter = function f(typeName, adapter) {\n\t\t\t\treturn __xAdapter(f, arguments.length, typeName, adapter, \"resultAdapter()\", xResult);\n\t\t\t};\n\t\t\t/**\n\t\t\tFunctions identically to xWrap.resultAdapter() but applies to\n\t\t\tcall argument conversions instead of result value conversions.\n\t\t\t\n\t\t\txWrap()-generated wrappers perform argument conversion in the\n\t\t\tcontext of a scopedAllocPush(), so any memory allocation\n\t\t\tperformed by argument adapters really, really, really should be\n\t\t\tmade using the scopedAlloc() family of functions unless\n\t\t\tspecifically necessary. For example:\n\t\t\t\n\t\t\t```\n\t\t\txWrap.argAdapter('my-string', function(v){\n\t\t\treturn ('string'===typeof v)\n\t\t\t? myWasmObj.scopedAllocCString(v) : null;\n\t\t\t};\n\t\t\t```\n\t\t\t\n\t\t\tContrariwise, _result_ adapters _must not_ use scopedAlloc() to\n\t\t\tallocate results because they would be freed before the\n\t\t\txWrap()-created wrapper returns.\n\t\t\t\n\t\t\tIt is perfectly legitimate to use these adapters to perform\n\t\t\targument validation, as opposed (or in addition) to conversion.\n\t\t\tWhen used that way, they should throw for invalid arguments.\n\t\t\t*/\n\t\t\ttarget.xWrap.argAdapter = function f(typeName, adapter) {\n\t\t\t\treturn __xAdapter(f, arguments.length, typeName, adapter, \"argAdapter()\", xArg);\n\t\t\t};\n\t\t\ttarget.xWrap.FuncPtrAdapter = xArg.FuncPtrAdapter;\n\t\t\t/**\n\t\t\tFunctions like xCall() but performs argument and result type\n\t\t\tconversions as for xWrap(). The first, second, and third\n\t\t\targuments are as documented for xWrap(), except that the 3rd\n\t\t\targument may be either a falsy value or empty array to represent\n\t\t\tnullary functions. The 4th+ arguments are arguments for the call,\n\t\t\twith the special case that if the 4th argument is an array, it is\n\t\t\tused as the arguments for the call. Returns the converted result\n\t\t\tof the call.\n\t\t\t\n\t\t\tThis is just a thin wrapper around xWrap(). If the given function\n\t\t\tis to be called more than once, it's more efficient to use\n\t\t\txWrap() to create a wrapper, then to call that wrapper as many\n\t\t\ttimes as needed. For one-shot calls, however, this variant is\n\t\t\tsimpler.\n\t\t\t*/\n\t\t\ttarget.xCallWrapped = function(fArg, resultType, argTypes, ...args) {\n\t\t\t\tif (Array.isArray(arguments[3])) args = arguments[3];\n\t\t\t\treturn target.xWrap(fArg, resultType, argTypes || []).apply(null, args || []);\n\t\t\t};\n\t\t\t/**\n\t\t\tThis function is ONLY exposed in the public API to facilitate\n\t\t\ttesting. It should not be used in application-level code, only\n\t\t\tin test code.\n\t\t\t\n\t\t\tExpects to be given (typeName, value) and returns a conversion\n\t\t\tof that value as has been registered using argAdapter().\n\t\t\tIt throws if no adapter is found.\n\t\t\t\n\t\t\tACHTUNG: the adapter may require that a scopedAllocPush() is\n\t\t\tactive and it may allocate memory within that scope. It may also\n\t\t\trequire additional arguments, depending on the type of\n\t\t\tconversion.\n\t\t\t*/\n\t\t\ttarget.xWrap.testConvertArg = cache.xWrap.convertArg;\n\t\t\t/**\n\t\t\tThis function is ONLY exposed in the public API to facilitate\n\t\t\ttesting. It should not be used in application-level code, only\n\t\t\tin test code.\n\t\t\t\n\t\t\tExpects to be given (typeName, value) and returns a conversion\n\t\t\tof that value as has been registered using resultAdapter().\n\t\t\tIt throws if no adapter is found.\n\t\t\t\n\t\t\tACHTUNG: the adapter may allocate memory which the caller may need\n\t\t\tto know how to free.\n\t\t\t*/\n\t\t\ttarget.xWrap.testConvertResult = cache.xWrap.convertResult;\n\t\t\treturn target;\n\t\t};\n\t\t/**\n\t\tyawl (Yet Another Wasm Loader) provides very basic wasm loader.\n\t\tIt requires a config object:\n\t\t\n\t\t- `uri`: required URI of the WASM file to load.\n\t\t\n\t\t- `onload(loadResult)`: optional callback. Its argument is an\n\t\tobject described in more detail below.\n\t\t\n\t\t- `imports`: optional imports object for\n\t\tWebAssembly.instantiate[Streaming](). The default is an empty\n\t\tset of imports. If the module requires any imports, this object\n\t\tmust include them.\n\t\t\n\t\t- `wasmUtilTarget`: optional object suitable for passing to\n\t\tWhWasmUtilInstaller(). If set, it gets passed to that function\n\t\tbefore the returned promise resolves. This function sets several\n\t\tproperties on it before passing it on to that function (which\n\t\tsets many more):\n\t\t\n\t\t- `module`, `instance`: the properties from the\n\t\tinstantiate[Streaming]() result.\n\t\t\n\t\t- If `instance.exports.memory` is _not_ set then it requires that\n\t\t`config.imports.env.memory` be set (else it throws), and\n\t\tassigns that to `wasmUtilTarget.memory`.\n\t\t\n\t\t- If `wasmUtilTarget.alloc` is not set and\n\t\t`instance.exports.malloc` is, it installs\n\t\t`wasmUtilTarget.alloc()` and `wasmUtilTarget.dealloc()`\n\t\twrappers for the exports' `malloc` and `free` functions\n\t\tif exports.malloc exists.\n\t\t\n\t\tIt returns a function which, when called, initiates loading of the\n\t\tmodule and returns a Promise. When that Promise resolves, it calls\n\t\tthe `config.onload` callback (if set) and passes it `(loadResult)`,\n\t\twhere `loadResult` is derived from the result of\n\t\tWebAssembly.instantiate[Streaming](), an object in the form:\n\t\t\n\t\t```\n\t\t{\n\t\tmodule: a WebAssembly.Module,\n\t\tinstance: a WebAssembly.Instance,\n\t\tconfig: the config arg to this function\n\t\t}\n\t\t```\n\t\t\n\t\t(The initial `then()` attached to the promise gets only that\n\t\tobject, and not the `config` object, thus the potential need for a\n\t\t`config.onload` handler.)\n\t\t\n\t\tError handling is up to the caller, who may attach a `catch()` call\n\t\tto the promise.\n\t\t*/\n\t\tglobalThis.WhWasmUtilInstaller.yawl = function yawl(config) {\n\t\t\t\"use strict\";\n\t\t\tconst wfetch = () => fetch(config.uri, { credentials: \"same-origin\" });\n\t\t\tconst wui = this;\n\t\t\tconst finalThen = function(arg) {\n\t\t\t\tif (config.wasmUtilTarget) {\n\t\t\t\t\tconst toss = (...args) => {\n\t\t\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t\t\t};\n\t\t\t\t\tconst tgt = config.wasmUtilTarget;\n\t\t\t\t\ttgt.module = arg.module;\n\t\t\t\t\ttgt.instance = arg.instance;\n\t\t\t\t\tif (!tgt.instance.exports.memory)\n /**\n\t\t\t\t\tWhWasmUtilInstaller requires either tgt.exports.memory\n\t\t\t\t\t(exported from WASM) or tgt.memory (JS-provided memory\n\t\t\t\t\timported into WASM).\n\t\t\t\t\t*/\n\t\t\t\t\ttgt.memory = config?.imports?.env?.memory || toss(\"Missing 'memory' object!\");\n\t\t\t\t\tif (!tgt.alloc && arg.instance.exports.malloc) {\n\t\t\t\t\t\tconst exports = arg.instance.exports;\n\t\t\t\t\t\ttgt.alloc = function(n) {\n\t\t\t\t\t\t\treturn exports.malloc(n) || toss(\"Allocation of\", n, \"bytes failed.\");\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttgt.dealloc = function(m) {\n\t\t\t\t\t\t\tm && exports.free(m);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\twui(tgt);\n\t\t\t\t}\n\t\t\t\targ.config = config;\n\t\t\t\tif (config.onload) config.onload(arg);\n\t\t\t\treturn arg;\n\t\t\t};\n\t\t\treturn WebAssembly.instantiateStreaming ? () => WebAssembly.instantiateStreaming(wfetch(), config.imports || {}).then(finalThen) : () => wfetch().then((response) => response.arrayBuffer()).then((bytes) => WebAssembly.instantiate(bytes, config.imports || {})).then(finalThen);\n\t\t}.bind(globalThis.WhWasmUtilInstaller);\n\t\tglobalThis.Jaccwabyt = function StructBinderFactory(config) {\n\t\t\t\"use strict\";\n\t\t\t/** Throws a new Error, the message of which is the concatenation\n\t\t\tall args with a space between each. */\n\t\t\tconst toss = (...args) => {\n\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t};\n\t\t\t{\n\t\t\t\tlet h = config.heap;\n\t\t\t\tif (h instanceof WebAssembly.Memory) h = function() {\n\t\t\t\t\treturn new Uint8Array(this.buffer);\n\t\t\t\t}.bind(h);\n\t\t\t\telse if (!(h instanceof Function)) toss(\"config.heap must be WebAssembly.Memory instance or\", \"a function which returns one.\");\n\t\t\t\tconfig.heap = h;\n\t\t\t}\n\t\t\t[\"alloc\", \"dealloc\"].forEach(function(k) {\n\t\t\t\tconfig[k] instanceof Function || toss(\"Config option '\" + k + \"' must be a function.\");\n\t\t\t});\n\t\t\tconst SBF = StructBinderFactory, heap = config.heap, alloc = config.alloc, dealloc = config.dealloc;\n\t\t\tconfig.realloc;\n\t\t\tconst log = config.log || console.debug.bind(console), memberPrefix = config.memberPrefix || \"\", memberSuffix = config.memberSuffix || \"\", BigInt = globalThis[\"BigInt\"], BigInt64Array = globalThis[\"BigInt64Array\"], bigIntEnabled = config.bigIntEnabled ?? !!BigInt64Array;\n\t\t\tlet ptr;\n\t\t\tconst ptrSize = config.pointerSize || config.ptrSize || (\"bigint\" === typeof (ptr = alloc(1)) ? 8 : 4);\n\t\t\tconst ptrIR = config.pointerIR || config.ptrIR || (4 === ptrSize ? \"i32\" : \"i64\");\n\t\t\tif (ptr) {\n\t\t\t\tdealloc(ptr);\n\t\t\t\tptr = void 0;\n\t\t\t}\n\t\t\tif (ptrSize !== 4 && ptrSize !== 8) toss(\"Invalid pointer size:\", ptrSize);\n\t\t\tif (ptrIR !== \"i32\" && ptrIR !== \"i64\") toss(\"Invalid pointer representation:\", ptrIR);\n\t\t\t/** Either BigInt or, if !bigIntEnabled, a function which\n\t\t\tthrows complaining that BigInt is not enabled. */\n\t\t\tconst __BigInt = bigIntEnabled && BigInt ? (v) => BigInt(v || 0) : (v) => toss(\"BigInt support is disabled in this build.\");\n\t\t\tconst __asPtrType = \"i32\" == ptrIR ? Number : __BigInt;\n\t\t\tconst __NullPtr = __asPtrType(0);\n\t\t\t/**\n\t\t\tExpects any number of numeric arguments, each one of either type\n\t\t\tNumber or BigInt. It sums them up (from an implicit starting\n\t\t\tpoint of 0 or 0n) and returns them as a number of the same type\n\t\t\twhich target.asPtrType() uses.\n\t\t\t\n\t\t\tThis is a workaround for not being able to mix Number/BigInt in\n\t\t\taddition/subtraction expressions (which we frequently need for\n\t\t\tcalculating pointer offsets).\n\t\t\t*/\n\t\t\tconst __ptrAdd = function(...args) {\n\t\t\t\tlet rc = __NullPtr;\n\t\t\t\tfor (let i = 0; i < args.length; ++i) rc += __asPtrType(args[i]);\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\tconst __ptrAddSelf = function(...args) {\n\t\t\t\treturn __ptrAdd(this.pointer, ...args);\n\t\t\t};\n\t\t\tif (!SBF.debugFlags) {\n\t\t\t\tSBF.__makeDebugFlags = function(deriveFrom = null) {\n\t\t\t\t\tif (deriveFrom && deriveFrom.__flags) deriveFrom = deriveFrom.__flags;\n\t\t\t\t\tconst f = function f(flags) {\n\t\t\t\t\t\tif (0 === arguments.length) return f.__flags;\n\t\t\t\t\t\tif (flags < 0) {\n\t\t\t\t\t\t\tdelete f.__flags.getter;\n\t\t\t\t\t\t\tdelete f.__flags.setter;\n\t\t\t\t\t\t\tdelete f.__flags.alloc;\n\t\t\t\t\t\t\tdelete f.__flags.dealloc;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tf.__flags.getter = 0 !== (1 & flags);\n\t\t\t\t\t\t\tf.__flags.setter = 0 !== (2 & flags);\n\t\t\t\t\t\t\tf.__flags.alloc = 0 !== (4 & flags);\n\t\t\t\t\t\t\tf.__flags.dealloc = 0 !== (8 & flags);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn f._flags;\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(f, \"__flags\", {\n\t\t\t\t\t\titerable: false,\n\t\t\t\t\t\twritable: false,\n\t\t\t\t\t\tvalue: Object.create(deriveFrom)\n\t\t\t\t\t});\n\t\t\t\t\tif (!deriveFrom) f(0);\n\t\t\t\t\treturn f;\n\t\t\t\t};\n\t\t\t\tSBF.debugFlags = SBF.__makeDebugFlags();\n\t\t\t}\n\t\t\tconst isLittleEndian = true;\n\t\t\t/**\n\t\t\tSome terms used in the internal docs:\n\t\t\t\n\t\t\tStructType: a struct-wrapping class generated by this\n\t\t\tframework.\n\t\t\t\n\t\t\tDEF: struct description object.\n\t\t\t\n\t\t\tSIG: struct member signature string.\n\t\t\t*/\n\t\t\t/** True if SIG s looks like a function signature, else\n\t\t\tfalse. */\n\t\t\tconst isFuncSig = (s) => \"(\" === s[1];\n\t\t\t/** True if SIG s is-a pointer-type signature. */\n\t\t\tconst isPtrSig = (s) => \"p\" === s || \"P\" === s || \"s\" === s;\n\t\t\tconst isAutoPtrSig = (s) => \"P\" === s;\n\t\t\t/** Returns p if SIG s is a function SIG, else returns s[0]. */\n\t\t\tconst sigLetter = (s) => s ? isFuncSig(s) ? \"p\" : s[0] : void 0;\n\t\t\t/** Returns the WASM IR form of the letter at SIG s[0]. Throws for\n\t\t\tan unknown SIG. */\n\t\t\tconst sigIR = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"c\":\n\t\t\t\t\tcase \"C\": return \"i8\";\n\t\t\t\t\tcase \"i\": return \"i32\";\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\": return ptrIR;\n\t\t\t\t\tcase \"j\": return \"i64\";\n\t\t\t\t\tcase \"f\": return \"float\";\n\t\t\t\t\tcase \"d\": return \"double\";\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled signature IR:\", s);\n\t\t\t};\n\t\t\t/** Returns the WASM sizeof of the letter at SIG s[0]. Throws for an\n\t\t\tunknown SIG. */\n\t\t\tconst sigSize = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"c\":\n\t\t\t\t\tcase \"C\": return 1;\n\t\t\t\t\tcase \"i\": return 4;\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\": return ptrSize;\n\t\t\t\t\tcase \"j\": return 8;\n\t\t\t\t\tcase \"f\": return 4;\n\t\t\t\t\tcase \"d\": return 8;\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled signature sizeof:\", s);\n\t\t\t};\n\t\t\tconst affirmBigIntArray = BigInt64Array ? () => true : () => toss(\"BigInt64Array is not available.\");\n\t\t\t/** Returns the name of a DataView getter method corresponding\n\t\t\tto the given SIG. */\n\t\t\tconst sigDVGetter = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tswitch (ptrSize) {\n\t\t\t\t\t\t\tcase 4: return \"getInt32\";\n\t\t\t\t\t\t\tcase 8: return affirmBigIntArray() && \"getBigInt64\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"i\": return \"getInt32\";\n\t\t\t\t\tcase \"c\": return \"getInt8\";\n\t\t\t\t\tcase \"C\": return \"getUint8\";\n\t\t\t\t\tcase \"j\": return affirmBigIntArray() && \"getBigInt64\";\n\t\t\t\t\tcase \"f\": return \"getFloat32\";\n\t\t\t\t\tcase \"d\": return \"getFloat64\";\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled DataView getter for signature:\", s);\n\t\t\t};\n\t\t\t/** Returns the name of a DataView setter method corresponding\n\t\t\tto the given SIG. */\n\t\t\tconst sigDVSetter = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tswitch (ptrSize) {\n\t\t\t\t\t\t\tcase 4: return \"setInt32\";\n\t\t\t\t\t\t\tcase 8: return affirmBigIntArray() && \"setBigInt64\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"i\": return \"setInt32\";\n\t\t\t\t\tcase \"c\": return \"setInt8\";\n\t\t\t\t\tcase \"C\": return \"setUint8\";\n\t\t\t\t\tcase \"j\": return affirmBigIntArray() && \"setBigInt64\";\n\t\t\t\t\tcase \"f\": return \"setFloat32\";\n\t\t\t\t\tcase \"d\": return \"setFloat64\";\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled DataView setter for signature:\", s);\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns a factory for either Number or BigInt, depending on the\n\t\t\tgiven SIG. This constructor is used in property setters to coerce\n\t\t\tthe being-set value to the correct pointer size.\n\t\t\t*/\n\t\t\tconst sigDVSetWrapper = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"i\":\n\t\t\t\t\tcase \"f\":\n\t\t\t\t\tcase \"c\":\n\t\t\t\t\tcase \"C\":\n\t\t\t\t\tcase \"d\": return Number;\n\t\t\t\t\tcase \"j\": return __BigInt;\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tswitch (ptrSize) {\n\t\t\t\t\t\t\tcase 4: return Number;\n\t\t\t\t\t\t\tcase 8: return __BigInt;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled DataView set wrapper for signature:\", s);\n\t\t\t};\n\t\t\t/** Returns the given struct and member name in a form suitable for\n\t\t\tdebugging and error output. */\n\t\t\tconst sPropName = (s, k) => s + \"::\" + k;\n\t\t\tconst __propThrowOnSet = function(structName, propName) {\n\t\t\t\treturn () => toss(sPropName(structName, propName), \"is read-only.\");\n\t\t\t};\n\t\t\t/**\n\t\t\tIn order to completely hide StructBinder-bound struct pointers\n\t\t\tfrom JS code, we store them in a scope-local WeakMap which maps\n\t\t\tthe struct-bound objects to an object with their metadata:\n\t\t\t\n\t\t\t{\n\t\t\t.p = the native pointer,\n\t\t\t.o = self (for an eventual reverse-mapping),\n\t\t\t.xb = extra bytes allocated for p,\n\t\t\t.zod = zeroOnDispose,\n\t\t\t.ownsPointer = true if this object owns p\n\t\t\t}\n\t\t\t\n\t\t\tThe .p data are accessible via obj.pointer, which is gated behind\n\t\t\ta property interceptor, but are not exposed anywhere else in the\n\t\t\tpublic API.\n\t\t\t*/\n\t\t\tconst getInstanceHandle = function f(obj, create = true) {\n\t\t\t\tlet ii = f.map.get(obj);\n\t\t\t\tif (!ii && create) f.map.set(obj, ii = f.create(obj));\n\t\t\t\treturn ii;\n\t\t\t};\n\t\t\tgetInstanceHandle.map = /* @__PURE__ */ new WeakMap();\n\t\t\tgetInstanceHandle.create = (forObj) => {\n\t\t\t\treturn Object.assign(Object.create(null), {\n\t\t\t\t\to: forObj,\n\t\t\t\t\tp: void 0,\n\t\t\t\t\townsPointer: false,\n\t\t\t\t\tzod: false,\n\t\t\t\t\txb: 0\n\t\t\t\t});\n\t\t\t};\n\t\t\t/**\n\t\t\tRemove the getInstanceHandle() mapping for obj.\n\t\t\t*/\n\t\t\tconst rmInstanceHandle = (obj) => getInstanceHandle.map.delete(obj);\n\t\t\tconst __isPtr32 = (ptr) => \"number\" === typeof ptr && ptr === (ptr | 0) && ptr >= 0;\n\t\t\tconst __isPtr64 = (ptr) => \"bigint\" === typeof ptr && ptr >= 0 || __isPtr32(ptr);\n\t\t\t/**\n\t\t\tisPtr() is an alias for isPtr32() or isPtr64(), depending on\n\t\t\tptrSize.\n\t\t\t*/\n\t\t\tconst __isPtr = 4 === ptrSize ? __isPtr32 : __isPtr64;\n\t\t\tconst __isNonNullPtr = (v) => __isPtr(v) && v > 0;\n\t\t\t/** Frees the obj.pointer memory (a.k.a. m), handles obj.ondispose,\n\t\t\tand unmaps obj from its native resources. */\n\t\t\tconst __freeStruct = function(ctor, obj, m) {\n\t\t\t\tconst ii = getInstanceHandle(obj, false);\n\t\t\t\tif (!ii) return;\n\t\t\t\trmInstanceHandle(obj);\n\t\t\t\tif (!m && !(m = ii.p)) {\n\t\t\t\t\tconsole.warn(\"Cannot(?) happen: __freeStruct() found no instanceInfo\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(obj.ondispose)) {\n\t\t\t\t\tlet x;\n\t\t\t\t\twhile (x = obj.ondispose.pop()) try {\n\t\t\t\t\t\tif (x instanceof Function) x.call(obj);\n\t\t\t\t\t\telse if (x instanceof StructType) x.dispose();\n\t\t\t\t\t\telse if (__isPtr(x)) dealloc(x);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.warn(\"ondispose() for\", ctor.structName, \"@\", m, \"threw. NOT propagating it.\", e);\n\t\t\t\t\t}\n\t\t\t\t} else if (obj.ondispose instanceof Function) try {\n\t\t\t\t\tobj.ondispose();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.warn(\"ondispose() for\", ctor.structName, \"@\", m, \"threw. NOT propagating it.\", e);\n\t\t\t\t}\n\t\t\t\tdelete obj.ondispose;\n\t\t\t\tif (ctor.debugFlags.__flags.dealloc) log(\"debug.dealloc:\", ii.ownsPointer ? \"\" : \"EXTERNAL\", ctor.structName, \"instance:\", ctor.structInfo.sizeof, \"bytes @\" + m);\n\t\t\t\tif (ii.ownsPointer) {\n\t\t\t\t\tif (ii.zod || ctor.structInfo.zeroOnDispose) heap().fill(0, Number(m), Number(m) + ctor.structInfo.sizeof + ii.xb);\n\t\t\t\t\tdealloc(m);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** Returns a skeleton for a read-only, non-iterable property\n\t\t\t* descriptor. */\n\t\t\tconst rop0 = () => {\n\t\t\t\treturn {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\twritable: false,\n\t\t\t\t\titerable: false\n\t\t\t\t};\n\t\t\t};\n\t\t\t/** Returns a skeleton for a read-only property accessor wrapping\n\t\t\tvalue v. */\n\t\t\tconst rop = (v) => {\n\t\t\t\treturn {\n\t\t\t\t\t...rop0(),\n\t\t\t\t\tvalue: v\n\t\t\t\t};\n\t\t\t};\n\t\t\t/** Allocates obj's memory buffer based on the size defined in\n\t\t\tctor.structInfo.sizeof. */\n\t\t\tconst __allocStruct = function f(ctor, obj, xm) {\n\t\t\t\tlet opt;\n\t\t\t\tconst checkPtr = (ptr) => {\n\t\t\t\t\t__isNonNullPtr(ptr) || toss(\"Invalid pointer value\", arguments[0], \"for\", ctor.structName, \"constructor.\");\n\t\t\t\t};\n\t\t\t\tif (arguments.length >= 3) if (xm && \"object\" === typeof xm) {\n\t\t\t\t\topt = xm;\n\t\t\t\t\txm = opt?.wrap;\n\t\t\t\t} else {\n\t\t\t\t\tcheckPtr(xm);\n\t\t\t\t\topt = { wrap: xm };\n\t\t\t\t}\n\t\t\t\telse opt = {};\n\t\t\t\tconst fill = !xm;\n\t\t\t\tlet nAlloc = 0;\n\t\t\t\tlet ownsPointer = false;\n\t\t\t\tif (xm) {\n\t\t\t\t\tcheckPtr(xm);\n\t\t\t\t\townsPointer = !!opt?.takeOwnership;\n\t\t\t\t} else {\n\t\t\t\t\tconst nX = opt?.extraBytes ?? 0;\n\t\t\t\t\tif (nX < 0 || nX !== (nX | 0)) toss(\"Invalid extraBytes value:\", opt?.extraBytes);\n\t\t\t\t\tnAlloc = ctor.structInfo.sizeof + nX;\n\t\t\t\t\txm = alloc(nAlloc) || toss(\"Allocation of\", ctor.structName, \"structure failed.\");\n\t\t\t\t\townsPointer = true;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (opt?.debugFlags) obj.debugFlags(opt.debugFlags);\n\t\t\t\t\tif (ctor.debugFlags.__flags.alloc) log(\"debug.alloc:\", fill ? \"\" : \"EXTERNAL\", ctor.structName, \"instance:\", ctor.structInfo.sizeof, \"bytes @\" + xm);\n\t\t\t\t\tif (fill) heap().fill(0, Number(xm), Number(xm) + nAlloc);\n\t\t\t\t\tconst ii = getInstanceHandle(obj);\n\t\t\t\t\tii.p = xm;\n\t\t\t\t\tii.ownsPointer = ownsPointer;\n\t\t\t\t\tii.xb = nAlloc ? nAlloc - ctor.structInfo.sizeof : 0;\n\t\t\t\t\tii.zod = !!opt?.zeroOnDispose;\n\t\t\t\t\tif (opt?.ondispose && opt.ondispose !== xm) obj.addOnDispose(opt.ondispose);\n\t\t\t\t} catch (e) {\n\t\t\t\t\t__freeStruct(ctor, obj, xm);\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** True if sig looks like an emscripten/jaccwabyt\n\t\t\ttype signature, else false. */\n\t\t\tconst looksLikeASig = function f(sig) {\n\t\t\t\tf.rxSig1 ??= /^[ipPsjfdcC]$/;\n\t\t\t\tf.rxSig2 ??= /^[vipPsjfdcC]\\([ipPsjfdcC]*\\)$/;\n\t\t\t\treturn f.rxSig1.test(sig) || f.rxSig2.test(sig);\n\t\t\t};\n\t\t\t/** Returns a pair of adaptor maps (objects) in a length-3\n\t\t\tarray specific to the given object. */\n\t\t\tconst __adaptorsFor = function(who) {\n\t\t\t\tlet x = this.get(who);\n\t\t\t\tif (!x) {\n\t\t\t\t\tx = [\n\t\t\t\t\t\tObject.create(null),\n\t\t\t\t\t\tObject.create(null),\n\t\t\t\t\t\tObject.create(null)\n\t\t\t\t\t];\n\t\t\t\t\tthis.set(who, x);\n\t\t\t\t}\n\t\t\t\treturn x;\n\t\t\t}.bind(/* @__PURE__ */ new WeakMap());\n\t\t\t/** Code de-duplifier for __adaptGet(), __adaptSet(), and\n\t\t\t__adaptStruct(). */\n\t\t\tconst __adaptor = function(who, which, key, proxy) {\n\t\t\t\tconst a = __adaptorsFor(who)[which];\n\t\t\t\tif (3 === arguments.length) return a[key];\n\t\t\t\tif (proxy) return a[key] = proxy;\n\t\t\t\treturn delete a[key];\n\t\t\t};\n\t\t\tconst __adaptGet = function(key, ...args) {\n\t\t\t\treturn __adaptor(this, 0, key, ...args);\n\t\t\t};\n\t\t\tconst __affirmNotASig = function(ctx, key) {\n\t\t\t\tlooksLikeASig(key) && toss(ctx, \"(\", key, \") collides with a data type signature.\");\n\t\t\t};\n\t\t\tconst __adaptSet = function(key, ...args) {\n\t\t\t\t__affirmNotASig(\"Setter adaptor\", key);\n\t\t\t\treturn __adaptor(this, 1, key, ...args);\n\t\t\t};\n\t\t\tconst __adaptStruct = function(key, ...args) {\n\t\t\t\t__affirmNotASig(\"Struct adaptor\", key);\n\t\t\t\treturn __adaptor(this, 2, key, ...args);\n\t\t\t};\n\t\t\t/**\n\t\t\tAn internal counterpart of __adaptStruct(). If key is-a string,\n\t\t\tuses __adaptor(who) to fetch the struct-adaptor entry for key,\n\t\t\telse key is assumed to be a struct description object. If it\n\t\t\tresolves to an object, that's returned, else an exception is\n\t\t\tthrown.\n\t\t\t*/\n\t\t\tconst __adaptStruct2 = function(who, key) {\n\t\t\t\tconst si = \"string\" === typeof key ? __adaptor(who, 2, key) : key;\n\t\t\t\tif (\"object\" !== typeof si) toss(\"Invalid struct mapping object. Arg =\", key, JSON.stringify(si));\n\t\t\t\treturn si;\n\t\t\t};\n\t\t\tconst __memberKey = (k) => memberPrefix + k + memberSuffix;\n\t\t\tconst __memberKeyProp = rop(__memberKey);\n\t\t\t/**\n\t\t\tLooks up a struct member in structInfo.members. Throws if found\n\t\t\tif tossIfNotFound is true, else returns undefined if not\n\t\t\tfound. The given name may be either the name of the\n\t\t\tstructInfo.members key (faster) or the key as modified by the\n\t\t\tmemberPrefix and memberSuffix settings.\n\t\t\t*/\n\t\t\tconst __lookupMember = function(structInfo, memberName, tossIfNotFound = true) {\n\t\t\t\tlet m = structInfo.members[memberName];\n\t\t\t\tif (!m && (memberPrefix || memberSuffix)) {\n\t\t\t\t\tfor (const v of Object.values(structInfo.members)) if (v.key === memberName) {\n\t\t\t\t\t\tm = v;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (!m && tossIfNotFound) toss(sPropName(structInfo.name || structInfo.structName, memberName), \"is not a mapped struct member.\");\n\t\t\t\t}\n\t\t\t\treturn m;\n\t\t\t};\n\t\t\t/**\n\t\t\tUses __lookupMember(obj.structInfo,memberName) to find a member,\n\t\t\tthrowing if not found. Returns its signature, either in this\n\t\t\tframework's native format or in Emscripten format.\n\t\t\t*/\n\t\t\tconst __memberSignature = function f(obj, memberName, emscriptenFormat = false) {\n\t\t\t\tif (!f._) f._ = (x) => x.replace(/[^vipPsjrdcC]/g, \"\").replace(/[pPscC]/g, \"i\");\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, true);\n\t\t\t\treturn emscriptenFormat ? f._(m.signature) : m.signature;\n\t\t\t};\n\t\t\t/** Impl of X.memberKeys() for StructType and struct ctors. */\n\t\t\tconst __structMemberKeys = rop(function() {\n\t\t\t\tconst a = [];\n\t\t\t\tfor (const k of Object.keys(this.structInfo.members)) a.push(this.memberKey(k));\n\t\t\t\treturn a;\n\t\t\t});\n\t\t\tconst __utf8Decoder = new TextDecoder(\"utf-8\");\n\t\t\tconst __utf8Encoder = new TextEncoder();\n\t\t\t/** Internal helper to use in operations which need to distinguish\n\t\t\tbetween SharedArrayBuffer heap memory and non-shared heap. */\n\t\t\tconst __SAB = \"undefined\" === typeof SharedArrayBuffer ? function() {} : SharedArrayBuffer;\n\t\t\tconst __utf8Decode = function(arrayBuffer, begin, end) {\n\t\t\t\tif (8 === ptrSize) {\n\t\t\t\t\tbegin = Number(begin);\n\t\t\t\t\tend = Number(end);\n\t\t\t\t}\n\t\t\t\treturn __utf8Decoder.decode(arrayBuffer.buffer instanceof __SAB ? arrayBuffer.slice(begin, end) : arrayBuffer.subarray(begin, end));\n\t\t\t};\n\t\t\t/**\n\t\t\tUses __lookupMember() to find the given obj.structInfo key.\n\t\t\tReturns that member if it is a string, else returns false. If the\n\t\t\tmember is not found, throws if tossIfNotFound is true, else\n\t\t\treturns false.\n\t\t\t*/\n\t\t\tconst __memberIsString = function(obj, memberName, tossIfNotFound = false) {\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, tossIfNotFound);\n\t\t\t\treturn m && 1 === m.signature.length && \"s\" === m.signature[0] ? m : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a member description object, throws if member.signature is\n\t\t\tnot valid for assigning to or interpretation as a C-style string.\n\t\t\tIt optimistically assumes that any signature of (i,p,s) is\n\t\t\tC-string compatible.\n\t\t\t*/\n\t\t\tconst __affirmCStringSignature = function(member) {\n\t\t\t\tif (\"s\" === member.signature) return;\n\t\t\t\ttoss(\"Invalid member type signature for C-string value:\", JSON.stringify(member));\n\t\t\t};\n\t\t\t/**\n\t\t\tLooks up the given member in obj.structInfo. If it has a\n\t\t\tsignature of 's' then it is assumed to be a C-style UTF-8 string\n\t\t\tand a decoded copy of the string at its address is returned. If\n\t\t\tthe signature is of any other type, it throws. If an s-type\n\t\t\tmember's address is 0, `null` is returned.\n\t\t\t*/\n\t\t\tconst __memberToJsString = function f(obj, memberName) {\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, true);\n\t\t\t\t__affirmCStringSignature(m);\n\t\t\t\tconst addr = obj[m.key];\n\t\t\t\tif (!addr) return null;\n\t\t\t\tlet pos = addr;\n\t\t\t\tconst mem = heap();\n\t\t\t\tfor (; mem[pos] !== 0; ++pos);\n\t\t\t\treturn addr === pos ? \"\" : __utf8Decode(mem, addr, pos);\n\t\t\t};\n\t\t\t/**\n\t\t\tAdds value v to obj.ondispose, creating ondispose,\n\t\t\tor converting it to an array, if needed.\n\t\t\t*/\n\t\t\tconst __addOnDispose = function(obj, ...v) {\n\t\t\t\tif (obj.ondispose) {\n\t\t\t\t\tif (!Array.isArray(obj.ondispose)) obj.ondispose = [obj.ondispose];\n\t\t\t\t} else obj.ondispose = [];\n\t\t\t\tobj.ondispose.push(...v);\n\t\t\t};\n\t\t\t/**\n\t\t\tAllocates a new UTF-8-encoded, NUL-terminated copy of the given\n\t\t\tJS string and returns its address relative to heap(). If\n\t\t\tallocation returns 0 this function throws. Ownership of the\n\t\t\tmemory is transfered to the caller, who must eventually pass it\n\t\t\tto the configured dealloc() function.\n\t\t\t*/\n\t\t\tconst __allocCString = function(str) {\n\t\t\t\tconst u = __utf8Encoder.encode(str);\n\t\t\t\tconst mem = alloc(u.length + 1);\n\t\t\t\tif (!mem) toss(\"Allocation error while duplicating string:\", str);\n\t\t\t\tconst h = heap();\n\t\t\t\th.set(u, Number(mem));\n\t\t\t\th[__ptrAdd(mem, u.length)] = 0;\n\t\t\t\treturn mem;\n\t\t\t};\n\t\t\t/**\n\t\t\tSets the given struct member of obj to a dynamically-allocated,\n\t\t\tUTF-8-encoded, NUL-terminated copy of str. It is up to the caller\n\t\t\tto free any prior memory, if appropriate. The newly-allocated\n\t\t\tstring is added to obj.ondispose so will be freed when the object\n\t\t\tis disposed.\n\t\t\t\n\t\t\tThe given name may be either the name of the structInfo.members\n\t\t\tkey (faster) or the key as modified by the memberPrefix and\n\t\t\tmemberSuffix settings.\n\t\t\t*/\n\t\t\tconst __setMemberCString = function(obj, memberName, str) {\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, true);\n\t\t\t\t__affirmCStringSignature(m);\n\t\t\t\tconst mem = __allocCString(str);\n\t\t\t\tobj[m.key] = mem;\n\t\t\t\t__addOnDispose(obj, mem);\n\t\t\t\treturn obj;\n\t\t\t};\n\t\t\t/**\n\t\t\tPrototype for all StructFactory instances (the constructors\n\t\t\treturned from StructBinder).\n\t\t\t*/\n\t\t\tconst StructType = function StructType(structName, structInfo) {\n\t\t\t\tif (arguments[2] !== rop) toss(\"Do not call the StructType constructor\", \"from client-level code.\");\n\t\t\t\tObject.defineProperties(this, {\n\t\t\t\t\tstructName: rop(structName),\n\t\t\t\t\tstructInfo: rop(structInfo)\n\t\t\t\t});\n\t\t\t};\n\t\t\t/**\n\t\t\tProperties inherited by struct-type-specific StructType instances\n\t\t\tand (indirectly) concrete struct-type instances.\n\t\t\t*/\n\t\t\tStructType.prototype = Object.create(null, {\n\t\t\t\tdispose: rop(function() {\n\t\t\t\t\t__freeStruct(this.constructor, this);\n\t\t\t\t}),\n\t\t\t\tlookupMember: rop(function(memberName, tossIfNotFound = true) {\n\t\t\t\t\treturn __lookupMember(this.structInfo, memberName, tossIfNotFound);\n\t\t\t\t}),\n\t\t\t\tmemberToJsString: rop(function(memberName) {\n\t\t\t\t\treturn __memberToJsString(this, memberName);\n\t\t\t\t}),\n\t\t\t\tmemberIsString: rop(function(memberName, tossIfNotFound = true) {\n\t\t\t\t\treturn __memberIsString(this, memberName, tossIfNotFound);\n\t\t\t\t}),\n\t\t\t\tmemberKey: __memberKeyProp,\n\t\t\t\tmemberKeys: __structMemberKeys,\n\t\t\t\tmemberSignature: rop(function(memberName, emscriptenFormat = false) {\n\t\t\t\t\treturn __memberSignature(this, memberName, emscriptenFormat);\n\t\t\t\t}),\n\t\t\t\tmemoryDump: rop(function() {\n\t\t\t\t\tconst p = this.pointer;\n\t\t\t\t\treturn p ? new Uint8Array(heap().slice(Number(p), Number(p) + this.structInfo.sizeof)) : null;\n\t\t\t\t}),\n\t\t\t\textraBytes: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn getInstanceHandle(this, false)?.xb ?? 0;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tzeroOnDispose: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn getInstanceHandle(this, false)?.zod ?? !!this.structInfo.zeroOnDispose;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpointer: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn getInstanceHandle(this, false)?.p;\n\t\t\t\t\t},\n\t\t\t\t\tset: () => toss(\"Cannot assign the 'pointer' property of a struct.\")\n\t\t\t\t},\n\t\t\t\tsetMemberCString: rop(function(memberName, str) {\n\t\t\t\t\treturn __setMemberCString(this, memberName, str);\n\t\t\t\t})\n\t\t\t});\n\t\t\tObject.assign(StructType.prototype, { addOnDispose: function(...v) {\n\t\t\t\t__addOnDispose(this, ...v);\n\t\t\t\treturn this;\n\t\t\t} });\n\t\t\t/**\n\t\t\t\"Static\" properties for StructType.\n\t\t\t*/\n\t\t\tObject.defineProperties(StructType, {\n\t\t\t\tallocCString: rop(__allocCString),\n\t\t\t\tisA: rop((v) => v instanceof StructType),\n\t\t\t\thasExternalPointer: rop((v) => {\n\t\t\t\t\tconst ii = getInstanceHandle(v, false);\n\t\t\t\t\treturn !!(ii?.p && !ii?.ownsPointer);\n\t\t\t\t}),\n\t\t\t\tmemberKey: __memberKeyProp\n\t\t\t});\n\t\t\t/**\n\t\t\tIf struct description object si has a getter proxy, return it (a\n\t\t\tfunction), else return undefined.\n\t\t\t*/\n\t\t\tconst memberGetterProxy = function(si) {\n\t\t\t\treturn si.get || (si.adaptGet ? StructBinder.adaptGet(si.adaptGet) : void 0);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf struct description object si has a setter proxy, return it (a\n\t\t\tfunction), else return undefined.\n\t\t\t*/\n\t\t\tconst memberSetterProxy = function(si) {\n\t\t\t\treturn si.set || (si.adaptSet ? StructBinder.adaptSet(si.adaptSet) : void 0);\n\t\t\t};\n\t\t\t/**\n\t\t\tTo be called by makeMemberWrapper() when si has a 'members'\n\t\t\tmember, i.e. is an embedded struct. This function sets up that\n\t\t\tstruct like any other and also sets up property accessor for\n\t\t\tctor.memberKey(name) which returns an instance of that new\n\t\t\tStructType when the member is accessed. That instance wraps the\n\t\t\tmemory of the member's part of the containing C struct instance.\n\t\t\t\n\t\t\tThat is, if struct Foo has member bar which is an inner struct\n\t\t\tthen:\n\t\t\t\n\t\t\tconst f = new Foo;\n\t\t\tconst b = f.bar;\n\t\t\tassert( b is-a StructType object );\n\t\t\tassert( b.pointer === f.b.pointer );\n\t\t\t\n\t\t\tb will be disposed of when f() is. Calling b.dispose() will not\n\t\t\tdo any permanent harm, as the wrapper object will be recreated\n\t\t\twhen accessing f.bar, pointing to the same memory in f.\n\t\t\t\n\t\t\tThe si.zeroOnDispose flag has no effect on embedded structs because\n\t\t\tthey wrap \"external\" memory, so do not own it, and are thus never\n\t\t\tfreed, as such.\n\t\t\t*/\n\t\t\tconst makeMemberStructWrapper = function callee(ctor, name, si) {\n\t\t\t\t/**\n\t\t\t\tWhere we store inner-struct member proxies. Keys are a\n\t\t\t\tcombination of the parent object's pointer address and the\n\t\t\t\tproperty's name. The values are StructType instances.\n\t\t\t\t*/\n\t\t\t\tconst __innerStructs = callee.innerStructs ??= /* @__PURE__ */ new Map();\n\t\t\t\tconst key = ctor.memberKey(name);\n\t\t\t\tif (void 0 !== si.signature) toss(\"'signature' cannot be used on an embedded struct (\", ctor.structName, \".\", key, \").\");\n\t\t\t\tif (memberSetterProxy(si)) toss(\"'set' and 'adaptSet' are not permitted for nested struct members.\");\n\t\t\t\tsi.structName ??= ctor.structName + \"::\" + name;\n\t\t\t\tsi.key = key;\n\t\t\t\tsi.name = name;\n\t\t\t\tsi.constructor = this.call(this, si.structName, si);\n\t\t\t\tconst getterProxy = memberGetterProxy(si);\n\t\t\t\tconst prop = Object.assign(Object.create(null), {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tset: __propThrowOnSet(ctor.structName, key),\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\tconst dbg = this.debugFlags.__flags;\n\t\t\t\t\t\tconst p = this.pointer;\n\t\t\t\t\t\tconst k = p + \".\" + key;\n\t\t\t\t\t\tlet s = __innerStructs.get(k);\n\t\t\t\t\t\tif (dbg.getter) log(\"debug.getter: k =\", k);\n\t\t\t\t\t\tif (!s) {\n\t\t\t\t\t\t\ts = new si.constructor(__ptrAdd(p, si.offset));\n\t\t\t\t\t\t\t__innerStructs.set(k, s);\n\t\t\t\t\t\t\tthis.addOnDispose(() => s.dispose());\n\t\t\t\t\t\t\ts.addOnDispose(() => __innerStructs.delete(k));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (getterProxy) s = getterProxy.apply(this, [s, key]);\n\t\t\t\t\t\tif (dbg.getter) log(\"debug.getter: result =\", s);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tObject.defineProperty(ctor.prototype, key, prop);\n\t\t\t};\n\t\t\t/**\n\t\t\tThis is where most of the magic happens.\n\t\t\t\n\t\t\tPass this a StructBinderImpl-generated constructor, a member\n\t\t\tproperty name, and the struct member description object. It will\n\t\t\tdefine property accessors for proto[memberKey] which read\n\t\t\tfrom/write to memory in this.pointer. It modifies si to make\n\t\t\tcertain downstream operations simpler.\n\t\t\t*/\n\t\t\tconst makeMemberWrapper = function f(ctor, name, si) {\n\t\t\t\tsi = __adaptStruct2(this, si);\n\t\t\t\tif (si.members) return makeMemberStructWrapper.call(this, ctor, name, si);\n\t\t\t\tif (!f.cache) {\n\t\t\t\t\tf.cache = {\n\t\t\t\t\t\tgetters: {},\n\t\t\t\t\t\tsetters: {},\n\t\t\t\t\t\tsw: {}\n\t\t\t\t\t};\n\t\t\t\t\tconst a = [\n\t\t\t\t\t\t\"i\",\n\t\t\t\t\t\t\"c\",\n\t\t\t\t\t\t\"C\",\n\t\t\t\t\t\t\"p\",\n\t\t\t\t\t\t\"P\",\n\t\t\t\t\t\t\"s\",\n\t\t\t\t\t\t\"f\",\n\t\t\t\t\t\t\"d\",\n\t\t\t\t\t\t\"v()\"\n\t\t\t\t\t];\n\t\t\t\t\tif (bigIntEnabled) a.push(\"j\");\n\t\t\t\t\ta.forEach(function(v) {\n\t\t\t\t\t\tf.cache.getters[v] = sigDVGetter(v);\n\t\t\t\t\t\tf.cache.setters[v] = sigDVSetter(v);\n\t\t\t\t\t\tf.cache.sw[v] = sigDVSetWrapper(v);\n\t\t\t\t\t});\n\t\t\t\t\tf.sigCheck = function(obj, name, key, sig) {\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) toss(obj.structName, \"already has a property named\", key + \".\");\n\t\t\t\t\t\tlooksLikeASig(sig) || toss(\"Malformed signature for\", sPropName(obj.structName, name) + \":\", sig);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst key = ctor.memberKey(name);\n\t\t\t\tf.sigCheck(ctor.prototype, name, key, si.signature);\n\t\t\t\tsi.key = key;\n\t\t\t\tsi.name = name;\n\t\t\t\tconst sigGlyph = sigLetter(si.signature);\n\t\t\t\tconst xPropName = sPropName(ctor.structName, key);\n\t\t\t\tconst dbg = ctor.debugFlags.__flags;\n\t\t\t\tconst getterProxy = memberGetterProxy(si);\n\t\t\t\tconst prop = Object.create(null);\n\t\t\t\tprop.configurable = false;\n\t\t\t\tprop.enumerable = false;\n\t\t\t\tprop.get = function() {\n\t\t\t\t\t/**\n\t\t\t\t\tThis getter proxy reads its value from the appropriate pointer\n\t\t\t\t\taddress in the heap. It knows where and how much to read based on\n\t\t\t\t\tthis.pointer, si.offset, and si.sizeof.\n\t\t\t\t\t*/\n\t\t\t\t\tif (dbg.getter) log(\"debug.getter:\", f.cache.getters[sigGlyph], \"for\", sigIR(sigGlyph), xPropName, \"@\", this.pointer, \"+\", si.offset, \"sz\", si.sizeof);\n\t\t\t\t\tlet rc = new DataView(heap().buffer, Number(this.pointer) + si.offset, si.sizeof)[f.cache.getters[sigGlyph]](0, isLittleEndian);\n\t\t\t\t\tif (getterProxy) rc = getterProxy.apply(this, [key, rc]);\n\t\t\t\t\tif (dbg.getter) log(\"debug.getter:\", xPropName, \"result =\", rc);\n\t\t\t\t\treturn rc;\n\t\t\t\t};\n\t\t\t\tif (si.readOnly) prop.set = __propThrowOnSet(ctor.prototype.structName, key);\n\t\t\t\telse {\n\t\t\t\t\tconst setterProxy = memberSetterProxy(si);\n\t\t\t\t\tprop.set = function(v) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\tThe converse of prop.get(), this encodes v into the appropriate\n\t\t\t\t\t\tspot in the WASM heap.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tif (dbg.setter) log(\"debug.setter:\", f.cache.setters[sigGlyph], \"for\", sigIR(sigGlyph), xPropName, \"@\", this.pointer, \"+\", si.offset, \"sz\", si.sizeof, v);\n\t\t\t\t\t\tif (!this.pointer) toss(\"Cannot set native property on a disposed\", this.structName, \"instance.\");\n\t\t\t\t\t\tif (setterProxy) v = setterProxy.apply(this, [key, v]);\n\t\t\t\t\t\tif (null === v || void 0 === v) v = __NullPtr;\n\t\t\t\t\t\telse if (isPtrSig(si.signature) && !__isPtr(v)) if (isAutoPtrSig(si.signature) && v instanceof StructType) {\n\t\t\t\t\t\t\tv = v.pointer || __NullPtr;\n\t\t\t\t\t\t\tif (dbg.setter) log(\"debug.setter:\", xPropName, \"resolved to\", v);\n\t\t\t\t\t\t} else toss(\"Invalid value for pointer-type\", xPropName + \".\");\n\t\t\t\t\t\tnew DataView(heap().buffer, Number(this.pointer) + si.offset, si.sizeof)[f.cache.setters[sigGlyph]](0, f.cache.sw[sigGlyph](v), isLittleEndian);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(ctor.prototype, key, prop);\n\t\t\t};\n\t\t\t/**\n\t\t\tThe main factory function which will be returned to the\n\t\t\tcaller. The third argument is structly for internal use.\n\t\t\t\n\t\t\tThis level of indirection is to avoid that clients can pass a\n\t\t\tthird argument to this, as that's only for internal use.\n\t\t\t\n\t\t\tinternalOpt options:\n\t\t\t\n\t\t\t- None right now. This is for potential use in recursion.\n\t\t\t\n\t\t\tUsages:\n\t\t\t\n\t\t\tStructBinder(string, obj [,optObj]);\n\t\t\tStructBinder(obj);\n\t\t\t*/\n\t\t\tconst StructBinderImpl = function StructBinderImpl(structName, si, opt = Object.create(null)) {\n\t\t\t\t/**\n\t\t\t\tStructCtor is the eventual return value of this function. We\n\t\t\t\tneed to populate this early on so that we can do some trickery\n\t\t\t\tin feeding it through recursion.\n\t\t\t\t\n\t\t\t\tUses:\n\t\t\t\t\n\t\t\t\t// heap-allocated:\n\t\t\t\tconst x = new StructCtor;\n\t\t\t\t// externally-managed memory:\n\t\t\t\tconst y = new StructCtor( aPtrToACompatibleCStruct );\n\t\t\t\t\n\t\t\t\tor, more recently:\n\t\t\t\t\n\t\t\t\tconst z = new StructCtor({\n\t\t\t\textraBytes: [int=0] extra bytes to allocate after the struct\n\t\t\t\t\n\t\t\t\twrap: [aPtrToACompatibleCStruct=undefined]. If provided, this\n\t\t\t\tinstance waps, but does not (by default) own the memory, else\n\t\t\t\ta new instance is allocated from the WASM heap.\n\t\t\t\t\n\t\t\t\townsPointer: true if this object takes over ownership of\n\t\t\t\twrap.\n\t\t\t\t\n\t\t\t\tzeroOnDispose: [bool=StructCtor.structInfo.zeroOnDispose]\n\t\t\t\t\n\t\t\t\tautoCalcSizeOffset: [bool=false] Automatically calculate\n\t\t\t\tsizeof an offset. This is fine for pure-JS structs (which\n\t\t\t\tprobably aren't useful beyond testing of Jaccwabyt) but it's\n\t\t\t\tdangerous to use with actual WASM objects because we cannot\n\t\t\t\tbe guaranteed to have the same memory layout as an ostensibly\n\t\t\t\tmatching C struct. This applies recursively to all children\n\t\t\t\tof the struct description.\n\t\t\t\t\n\t\t\t\t// TODO? Per-instance overrides of the struct-level flags?\n\t\t\t\t\n\t\t\t\tget: (k,v)=>v,\n\t\t\t\tset: (k,v)=>v,\n\t\t\t\tadaptGet: string,\n\t\t\t\tadaptSet: string\n\t\t\t\t\n\t\t\t\t// That wouldn't fit really well right now, apparently.\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t*/\n\t\t\t\tconst StructCtor = function StructCtor(arg) {\n\t\t\t\t\tif (!(this instanceof StructCtor)) toss(\"The\", structName, \"constructor may only be called via 'new'.\");\n\t\t\t\t\t__allocStruct(StructCtor, this, ...arguments);\n\t\t\t\t};\n\t\t\t\tconst self = this;\n\t\t\t\t/**\n\t\t\t\t\"Convert\" struct description x to a struct description, if\n\t\t\t\tneeded. This expands adaptStruct() mappings and transforms\n\t\t\t\t{memberName:signatureString} signature syntax to object form.\n\t\t\t\t*/\n\t\t\t\tconst ads = (x) => {\n\t\t\t\t\treturn \"string\" === typeof x && looksLikeASig(x) ? { signature: x } : __adaptStruct2(self, x);\n\t\t\t\t};\n\t\t\t\tif (1 === arguments.length) {\n\t\t\t\t\tsi = ads(structName);\n\t\t\t\t\tstructName = si.structName || si.name;\n\t\t\t\t} else if (2 === arguments.length) {\n\t\t\t\t\tsi = ads(si);\n\t\t\t\t\tsi.name ??= structName;\n\t\t\t\t} else si = ads(si);\n\t\t\t\tstructName ??= si.structName;\n\t\t\t\tstructName ??= opt.structName;\n\t\t\t\tif (!structName) toss(\"One of 'name' or 'structName' are required.\");\n\t\t\t\tif (si.adapt) {\n\t\t\t\t\tObject.keys(si.adapt.struct || {}).forEach((k) => {\n\t\t\t\t\t\t__adaptStruct.call(StructBinderImpl, k, si.adapt.struct[k]);\n\t\t\t\t\t});\n\t\t\t\t\tObject.keys(si.adapt.set || {}).forEach((k) => {\n\t\t\t\t\t\t__adaptSet.call(StructBinderImpl, k, si.adapt.set[k]);\n\t\t\t\t\t});\n\t\t\t\t\tObject.keys(si.adapt.get || {}).forEach((k) => {\n\t\t\t\t\t\t__adaptGet.call(StructBinderImpl, k, si.adapt.get[k]);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!si.members && !si.sizeof) si.sizeof = sigSize(si.signature);\n\t\t\t\tconst debugFlags = rop(SBF.__makeDebugFlags(StructBinder.debugFlags));\n\t\t\t\tObject.defineProperties(StructCtor, {\n\t\t\t\t\tdebugFlags,\n\t\t\t\t\tisA: rop((v) => v instanceof StructCtor),\n\t\t\t\t\tmemberKey: __memberKeyProp,\n\t\t\t\t\tmemberKeys: __structMemberKeys,\n\t\t\t\t\tstructInfo: rop(si),\n\t\t\t\t\tstructName: rop(structName),\n\t\t\t\t\tptrAdd: rop(__ptrAdd)\n\t\t\t\t});\n\t\t\t\tStructCtor.prototype = new StructType(structName, si, rop);\n\t\t\t\tObject.defineProperties(StructCtor.prototype, {\n\t\t\t\t\tdebugFlags,\n\t\t\t\t\tconstructor: rop(StructCtor),\n\t\t\t\t\tptrAdd: rop(__ptrAddSelf)\n\t\t\t\t});\n\t\t\t\tlet lastMember = false;\n\t\t\t\tlet offset = 0;\n\t\t\t\tconst autoCalc = !!si.autoCalcSizeOffset;\n\t\t\t\tif (!autoCalc) {\n\t\t\t\t\tif (!si.sizeof) toss(structName, \"description is missing its sizeof property.\");\n\t\t\t\t\tsi.offset ??= 0;\n\t\t\t\t} else si.offset ??= 0;\n\t\t\t\tObject.keys(si.members || {}).forEach((k) => {\n\t\t\t\t\tlet m = ads(si.members[k]);\n\t\t\t\t\tif (!m.members && !m.sizeof) {\n\t\t\t\t\t\tm.sizeof = sigSize(m.signature);\n\t\t\t\t\t\tif (!m.sizeof) toss(sPropName(structName, k), \"is missing a sizeof property.\", m);\n\t\t\t\t\t}\n\t\t\t\t\tif (void 0 === m.offset) if (autoCalc) m.offset = offset;\n\t\t\t\t\telse toss(sPropName(structName, k), \"is missing its offset.\", JSON.stringify(m));\n\t\t\t\t\tsi.members[k] = m;\n\t\t\t\t\tif (!lastMember || lastMember.offset < m.offset) lastMember = m;\n\t\t\t\t\tconst oldAutoCalc = !!m.autoCalc;\n\t\t\t\t\tif (autoCalc) m.autoCalcSizeOffset = true;\n\t\t\t\t\tmakeMemberWrapper.call(self, StructCtor, k, m);\n\t\t\t\t\tif (oldAutoCalc) m.autoCalcSizeOffset = true;\n\t\t\t\t\telse delete m.autoCalcSizeOffset;\n\t\t\t\t\toffset += m.sizeof;\n\t\t\t\t});\n\t\t\t\tif (!lastMember) toss(\"No member property descriptions found.\");\n\t\t\t\tif (!si.sizeof) si.sizeof = offset;\n\t\t\t\tif (si.sizeof === 1) si.signature === \"c\" || si.signature === \"C\" || toss(\"Unexpected sizeof==1 member\", sPropName(structName, k), \"with signature\", si.signature);\n\t\t\t\telse {\n\t\t\t\t\tif (0 !== si.sizeof % 4) {\n\t\t\t\t\t\tconsole.warn(\"Invalid struct member description\", si);\n\t\t\t\t\t\ttoss(structName, \"sizeof is not aligned. sizeof=\" + si.sizeof);\n\t\t\t\t\t}\n\t\t\t\t\tif (0 !== si.offset % 4) {\n\t\t\t\t\t\tconsole.warn(\"Invalid struct member description\", si);\n\t\t\t\t\t\ttoss(structName, \"offset is not aligned. offset=\" + si.offset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (si.sizeof < offset) {\n\t\t\t\t\tconsole.warn(\"Suspect struct description:\", si, \"offset =\", offset);\n\t\t\t\t\ttoss(\"Mismatch in the calculated vs. the provided sizeof/offset info.\", \"Expected sizeof\", offset, \"but got\", si.sizeof, \"for\", si);\n\t\t\t\t}\n\t\t\t\tdelete si.autoCalcSizeOffset;\n\t\t\t\treturn StructCtor;\n\t\t\t};\n\t\t\tconst StructBinder = function StructBinder(structName, structInfo) {\n\t\t\t\treturn 1 == arguments.length ? StructBinderImpl.call(StructBinder, structName) : StructBinderImpl.call(StructBinder, structName, structInfo);\n\t\t\t};\n\t\t\tStructBinder.StructType = StructType;\n\t\t\tStructBinder.config = config;\n\t\t\tStructBinder.allocCString = __allocCString;\n\t\t\tStructBinder.adaptGet = __adaptGet;\n\t\t\tStructBinder.adaptSet = __adaptSet;\n\t\t\tStructBinder.adaptStruct = __adaptStruct;\n\t\t\tStructBinder.ptrAdd = __ptrAdd;\n\t\t\tif (!StructBinder.debugFlags) StructBinder.debugFlags = SBF.__makeDebugFlags(SBF.debugFlags);\n\t\t\treturn StructBinder;\n\t\t};\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\t\"use strict\";\n\t\t\tconst toss = (...args) => {\n\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t};\n\t\t\tconst capi = sqlite3.capi, wasm = sqlite3.wasm, util = sqlite3.util;\n\t\t\tglobalThis.WhWasmUtilInstaller(wasm);\n\t\t\tdelete globalThis.WhWasmUtilInstaller;\n\t\t\t/**\n\t\t\tSignatures for the WASM-exported C-side functions. Each entry\n\t\t\tis an array with 2+ elements:\n\t\t\t\n\t\t\t[ \"c-side name\",\n\t\t\t\"result type\" (wasm.xWrap() syntax),\n\t\t\t[arg types in xWrap() syntax]\n\t\t\t// ^^^ this needn't strictly be an array: it can be subsequent\n\t\t\t// elements instead: [x,y,z] is equivalent to x,y,z\n\t\t\t]\n\t\t\t\n\t\t\tSupport for the API-specific data types in the result/argument\n\t\t\ttype strings gets plugged in at a later phase in the API\n\t\t\tinitialization process.\n\t\t\t*/\n\t\t\tconst bindingSignatures = {\n\t\t\t\tcore: [\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_aggregate_context\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_double\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"f64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_null\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_parameter_count\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_parameter_index\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_parameter_name\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_pointer\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"string:static\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_zeroblob\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_busy_handler\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tsignature: \"i(pi)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_busy_timeout\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_clear_bindings\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_collation_needed\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_blob\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_bytes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_count\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_decltype\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_double\",\n\t\t\t\t\t\t\"f64\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_name\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_type\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_value\",\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_commit_hook\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_commit_hook\",\n\t\t\t\t\t\t\t\tsignature: \"i(p)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_compileoption_get\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_compileoption_used\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_complete\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string:flexible\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_context_db_handle\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_data_count\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_filename\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_handle\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_name\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_readonly\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_status\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_errcode\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_errmsg\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_error_offset\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_errstr\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_exec\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"string:flexible\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tsignature: \"i(pipp)\",\n\t\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\t\t\tlet aNames;\n\t\t\t\t\t\t\t\t\treturn (pVoid, nCols, pColVals, pColNames) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tconst aVals = wasm.cArgvToJs(nCols, pColVals);\n\t\t\t\t\t\t\t\t\t\t\tif (!aNames) aNames = wasm.cArgvToJs(nCols, pColNames);\n\t\t\t\t\t\t\t\t\t\t\treturn callback(aVals, aNames) | 0;\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\treturn e.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\t\"**\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_expanded_sql\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_extended_errcode\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_extended_result_codes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_file_control\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_finalize\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_free\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_get_autocommit\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_get_auxdata\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_initialize\", void 0],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_interrupt\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_is_interrupted\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_keyword_count\", \"int\"],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_keyword_name\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_keyword_check\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\"string\", \"int\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_libversion\", \"string\"],\n\t\t\t\t\t[\"sqlite3_libversion_number\", \"int\"],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_limit\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"int\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_malloc\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_next_stmt\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t[\"sqlite3*\", \"sqlite3_stmt*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_open\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_open_v2\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_realloc\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_reset\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_blob\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_double\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"f64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error_code\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error_nomem\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error_toobig\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_int\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_null\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_pointer\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"string:static\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_subtype\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_text\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_zeroblob\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_rollback_hook\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_rollback_hook\",\n\t\t\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_set_auxdata\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_set_errmsg\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_shutdown\", void 0],\n\t\t\t\t\t[\"sqlite3_sourceid\", \"string\"],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_sql\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_status\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_step\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stmt_busy\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stmt_readonly\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stmt_status\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_strglob\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stricmp\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_strlike\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_strnicmp\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_table_column_metadata\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_total_changes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_trace_v2\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_trace_v2::callback\",\n\t\t\t\t\t\t\t\tsignature: \"i(ippp)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_txn_state\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\"sqlite3*\", \"string\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_boolean\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_key\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_parameter\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_user_data\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_blob\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_bytes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_double\",\n\t\t\t\t\t\t\"f64\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_dup\",\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_free\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_frombind\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_nochange\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_numeric_type\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_pointer\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"string:static\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_subtype\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_type\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_vfs_find\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_vfs_register\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_vfs_unregister\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\"\n\t\t\t\t\t]\n\t\t\t\t],\n\t\t\t\tint64: [\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_int64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changes64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_int64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3_stmt*\", \"int\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_deserialize\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_last_insert_rowid\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_malloc64\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_msize\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_overload_function\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\t\"int\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_realloc64\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_int64\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_zeroblob64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_serialize\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_set_last_insert_rowid\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t[\"sqlite3*\", \"i64\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_status64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_status64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_total_changes64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_update_hook\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_update_hook::callback\",\n\t\t\t\t\t\t\t\tsignature: \"v(pippj)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv) => argv[0],\n\t\t\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\t\t\treturn (p, op, z0, z1, rowid) => {\n\t\t\t\t\t\t\t\t\t\tcallback(p, op, wasm.cstrToJs(z0), wasm.cstrToJs(z1), rowid);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_int64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_int64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t]\n\t\t\t\t],\n\t\t\t\twasmInternal: [\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_db_reset\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_db_vfs\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_vfs_create_file\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_posix_create_file\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_vfs_unlink\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_qfmt_token\",\n\t\t\t\t\t\t\"string:dealloc\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t]\n\t\t\t};\n\t\t\tif (!!wasm.exports.sqlite3_progress_handler) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_progress_handler\",\n\t\t\t\tvoid 0,\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xProgressHandler\",\n\t\t\t\t\t\tsignature: \"i(p)\",\n\t\t\t\t\t\tbindScope: \"context\",\n\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t}),\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t]);\n\t\t\tif (!!wasm.exports.sqlite3_stmt_explain) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_stmt_explain\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_stmt_isexplain\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t]);\n\t\t\tif (!!wasm.exports.sqlite3_set_authorizer) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_set_authorizer\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"sqlite3_set_authorizer::xAuth\",\n\t\t\t\t\t\tsignature: \"i(pissss)\",\n\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0],\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pV, iCode, s0, s1, s2, s3) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\ts0 = s0 && wasm.cstrToJs(s0);\n\t\t\t\t\t\t\t\t\ts1 = s1 && wasm.cstrToJs(s1);\n\t\t\t\t\t\t\t\t\ts2 = s2 && wasm.cstrToJs(s2);\n\t\t\t\t\t\t\t\t\ts3 = s3 && wasm.cstrToJs(s3);\n\t\t\t\t\t\t\t\t\treturn callback(pV, iCode, s0, s1, s2, s3) | 0;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treturn e.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t]);\n\t\t\tif (!!wasm.exports.sqlite3_column_origin_name) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_column_database_name\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_column_origin_name\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_column_table_name\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t]);\n\t\t\tif (wasm.bigIntEnabled && !!wasm.exports.sqlite3_declare_vtab) bindingSignatures.int64.push([\n\t\t\t\t\"sqlite3_create_module\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"sqlite3_module*\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_create_module_v2\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"sqlite3_module*\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_declare_vtab\",\n\t\t\t\t\"int\",\n\t\t\t\t[\"sqlite3*\", \"string:flexible\"]\n\t\t\t], [\n\t\t\t\t\"sqlite3_drop_modules\",\n\t\t\t\t\"int\",\n\t\t\t\t[\"sqlite3*\", \"**\"]\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_collation\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_index_info*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_distinct\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_index_info*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_in\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_index_info*\",\n\t\t\t\t\"int\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_in_first\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\"**\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_in_next\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\"**\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_nochange\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_context*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_on_conflict\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_rhs_value\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_index_info*\",\n\t\t\t\t\"int\",\n\t\t\t\t\"**\"\n\t\t\t]);\n\t\t\tif (wasm.bigIntEnabled && !!wasm.exports.sqlite3_preupdate_hook) bindingSignatures.int64.push([\n\t\t\t\t\"sqlite3_preupdate_blobwrite\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_count\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_depth\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_hook\",\n\t\t\t\t\"*\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"sqlite3_preupdate_hook\",\n\t\t\t\t\t\tsignature: \"v(ppippjj)\",\n\t\t\t\t\t\tcontextKey: (argv) => argv[0],\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (p, db, op, zDb, zTbl, iKey1, iKey2) => {\n\t\t\t\t\t\t\t\tcallback(p, db, op, wasm.cstrToJs(zDb), wasm.cstrToJs(zTbl), iKey1, iKey2);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_new\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"**\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_old\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"**\"\n\t\t\t\t]\n\t\t\t]);\n\t\t\tif (wasm.bigIntEnabled && !!wasm.exports.sqlite3changegroup_add && !!wasm.exports.sqlite3session_create && !!wasm.exports.sqlite3_preupdate_hook) {\n\t\t\t\t/**\n\t\t\t\tFuncPtrAdapter options for session-related callbacks with the\n\t\t\t\tnative signature \"i(ps)\". This proxy converts the 2nd argument\n\t\t\t\tfrom a C string to a JS string before passing the arguments on\n\t\t\t\tto the client-provided JS callback.\n\t\t\t\t*/\n\t\t\t\tconst __ipsProxy = {\n\t\t\t\t\tsignature: \"i(ps)\",\n\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\treturn (p, s) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn callback(p, wasm.cstrToJs(s)) | 0;\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn e.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tbindingSignatures.int64.push([\n\t\t\t\t\t\"sqlite3changegroup_add\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_add_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_delete\",\n\t\t\t\t\tvoid 0,\n\t\t\t\t\t[\"sqlite3_changegroup*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_new\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"**\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_output\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_output_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppi)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v2\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v2_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v3\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tsignature: \"i(pp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v3_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tsignature: \"i(pp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_concat\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_concat_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInputA\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInputB\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppi)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_conflict\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_finalize\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_changeset_iter*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_fk_conflicts\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_changeset_iter*\", \"int*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_invert\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_invert_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppi)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_new\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_next\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_changeset_iter*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_old\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_op\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_pk\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start_v2\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start_v2_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_attach\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\", \"string\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_changeset\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_changeset_size\",\n\t\t\t\t\t\"i64\",\n\t\t\t\t\t[\"sqlite3_session*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_changeset_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_config\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"int\", \"void*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_create\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_diff\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_enable\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\", \"int\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_indirect\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\", \"int\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_isempty\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_memory_used\",\n\t\t\t\t\t\"i64\",\n\t\t\t\t\t[\"sqlite3_session*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_object_config\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_patchset\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_patchset_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_table_filter\",\n\t\t\t\t\tvoid 0,\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\t...__ipsProxy,\n\t\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t]\n\t\t\t\t]);\n\t\t\t}\n\t\t\t/**\n\t\t\tPrepare JS<->C struct bindings for the non-opaque struct types we\n\t\t\tneed...\n\t\t\t*/\n\t\t\tsqlite3.StructBinder = globalThis.Jaccwabyt({\n\t\t\t\theap: wasm.heap8u,\n\t\t\t\talloc: wasm.alloc,\n\t\t\t\tdealloc: wasm.dealloc,\n\t\t\t\tbigIntEnabled: wasm.bigIntEnabled,\n\t\t\t\tpointerIR: wasm.ptr.ir,\n\t\t\t\tmemberPrefix: \"$\"\n\t\t\t});\n\t\t\tdelete globalThis.Jaccwabyt;\n\t\t\t{\n\t\t\t\tconst __xString = wasm.xWrap.argAdapter(\"string\");\n\t\t\t\twasm.xWrap.argAdapter(\"string:flexible\", (v) => __xString(util.flexibleString(v)));\n\t\t\t\t/**\n\t\t\t\tThe 'string:static' argument adapter treats its argument as\n\t\t\t\teither...\n\t\t\t\t\n\t\t\t\t- WASM pointer: assumed to be a long-lived C-string which gets\n\t\t\t\treturned as-is.\n\t\t\t\t\n\t\t\t\t- Anything else: gets coerced to a JS string for use as a map\n\t\t\t\tkey. If a matching entry is found (as described next), it is\n\t\t\t\treturned, else wasm.allocCString() is used to create a a new\n\t\t\t\tstring, map its pointer to a copy of (''+v) for the remainder\n\t\t\t\tof the application's life, and returns that pointer value for\n\t\t\t\tthis call and all future calls which are passed a\n\t\t\t\tstring-equivalent argument.\n\t\t\t\t\n\t\t\t\tUse case: sqlite3_bind_pointer(), sqlite3_result_pointer(), and\n\t\t\t\tsqlite3_value_pointer() call for \"a static string and\n\t\t\t\tpreferably a string literal\". This converter is used to ensure\n\t\t\t\tthat the string value seen by those functions is long-lived and\n\t\t\t\tbehaves as they need it to, at the cost of a one-time leak of\n\t\t\t\teach distinct key.\n\t\t\t\t*/\n\t\t\t\twasm.xWrap.argAdapter(\"string:static\", function(v) {\n\t\t\t\t\tif (wasm.isPtr(v)) return v;\n\t\t\t\t\tv = \"\" + v;\n\t\t\t\t\treturn this[v] || (this[v] = wasm.allocCString(v));\n\t\t\t\t}.bind(Object.create(null)));\n\t\t\t\t/**\n\t\t\t\tAdd some descriptive xWrap() aliases for '*' intended to (A)\n\t\t\t\timprove readability/correctness of bindingSignatures and (B)\n\t\t\t\tprovide automatic conversion from higher-level representations,\n\t\t\t\te.g. capi.sqlite3_vfs to `sqlite3_vfs*` via (capi.sqlite3_vfs\n\t\t\t\tinstance).pointer.\n\t\t\t\t*/\n\t\t\t\tconst __xArgPtr = wasm.xWrap.argAdapter(\"*\");\n\t\t\t\tconst nilType = function() {};\n\t\t\t\twasm.xWrap.argAdapter(\"sqlite3_filename\", __xArgPtr)(\"sqlite3_context*\", __xArgPtr)(\"sqlite3_value*\", __xArgPtr)(\"void*\", __xArgPtr)(\"sqlite3_changegroup*\", __xArgPtr)(\"sqlite3_changeset_iter*\", __xArgPtr)(\"sqlite3_session*\", __xArgPtr)(\"sqlite3_stmt*\", (v) => __xArgPtr(v instanceof (sqlite3?.oo1?.Stmt || nilType) ? v.pointer : v))(\"sqlite3*\", (v) => __xArgPtr(v instanceof (sqlite3?.oo1?.DB || nilType) ? v.pointer : v))(\"sqlite3_vfs*\", (v) => {\n\t\t\t\t\tif (\"string\" === typeof v) return capi.sqlite3_vfs_find(v) || sqlite3.SQLite3Error.toss(capi.SQLITE_NOTFOUND, \"Unknown sqlite3_vfs name:\", v);\n\t\t\t\t\treturn __xArgPtr(v instanceof (capi.sqlite3_vfs || nilType) ? v.pointer : v);\n\t\t\t\t});\n\t\t\t\tif (wasm.exports.sqlite3_declare_vtab) wasm.xWrap.argAdapter(\"sqlite3_index_info*\", (v) => __xArgPtr(v instanceof (capi.sqlite3_index_info || nilType) ? v.pointer : v))(\"sqlite3_module*\", (v) => __xArgPtr(v instanceof (capi.sqlite3_module || nilType) ? v.pointer : v));\n\t\t\t\t/**\n\t\t\t\tAlias `T*` to `*` for return type conversions for common T\n\t\t\t\ttypes, primarily to improve legibility of their binding\n\t\t\t\tsignatures.\n\t\t\t\t*/\n\t\t\t\tconst __xRcPtr = wasm.xWrap.resultAdapter(\"*\");\n\t\t\t\twasm.xWrap.resultAdapter(\"sqlite3*\", __xRcPtr)(\"sqlite3_context*\", __xRcPtr)(\"sqlite3_stmt*\", __xRcPtr)(\"sqlite3_value*\", __xRcPtr)(\"sqlite3_vfs*\", __xRcPtr)(\"void*\", __xRcPtr);\n\t\t\t\t/**\n\t\t\t\tPopulate api object with sqlite3_...() by binding the \"raw\" wasm\n\t\t\t\texports into type-converting proxies using wasm.xWrap().\n\t\t\t\t*/\n\t\t\t\tfor (const e of bindingSignatures.core) capi[e[0]] = wasm.xWrap.apply(null, e);\n\t\t\t\tfor (const e of bindingSignatures.wasmInternal) util[e[0]] = wasm.xWrap.apply(null, e);\n\t\t\t\tfor (const e of bindingSignatures.int64) capi[e[0]] = wasm.bigIntEnabled ? wasm.xWrap.apply(null, e) : () => toss(e[0] + \"() is unavailable due to lack\", \"of BigInt support in this build.\");\n\t\t\t\tdelete bindingSignatures.core;\n\t\t\t\tdelete bindingSignatures.int64;\n\t\t\t\tdelete bindingSignatures.wasmInternal;\n\t\t\t\t/**\n\t\t\t\tSets the given db's error state. Accepts:\n\t\t\t\t\n\t\t\t\t- (sqlite3*, int code, string msg)\n\t\t\t\t- (sqlite3*, Error e [,string msg = ''+e])\n\t\t\t\t\n\t\t\t\tIf passed a WasmAllocError, the message is ignored and the\n\t\t\t\tresult code is SQLITE_NOMEM. If passed any other Error type,\n\t\t\t\tthe result code defaults to SQLITE_ERROR unless the Error\n\t\t\t\tobject has a resultCode property, in which case that is used\n\t\t\t\t(e.g. SQLite3Error has that). If passed a non-WasmAllocError\n\t\t\t\texception, the message string defaults to ''+theError.\n\t\t\t\t\n\t\t\t\tReturns either the final result code, capi.SQLITE_NOMEM if\n\t\t\t\tsetting the message string triggers an OOM, or\n\t\t\t\tcapi.SQLITE_MISUSE if pDb is NULL or invalid (with the caveat\n\t\t\t\tthat behavior in the later case is undefined if pDb is not\n\t\t\t\t\"valid enough\").\n\t\t\t\t\n\t\t\t\tPass (pDb,0,0) to clear the error state.\n\t\t\t\t*/\n\t\t\t\tutil.sqlite3__wasm_db_error = function(pDb, resultCode, message) {\n\t\t\t\t\tif (!pDb) return capi.SQLITE_MISUSE;\n\t\t\t\t\tif (resultCode instanceof sqlite3.WasmAllocError) {\n\t\t\t\t\t\tresultCode = capi.SQLITE_NOMEM;\n\t\t\t\t\t\tmessage = 0;\n\t\t\t\t\t} else if (resultCode instanceof Error) {\n\t\t\t\t\t\tmessage = message || \"\" + resultCode;\n\t\t\t\t\t\tresultCode = resultCode.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t}\n\t\t\t\t\treturn capi.sqlite3_set_errmsg(pDb, resultCode, message) || resultCode;\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\tconst cJson = wasm.xCall(\"sqlite3__wasm_enum_json\");\n\t\t\t\tif (!cJson) toss(\"Maintenance required: increase sqlite3__wasm_enum_json()'s\", \"static buffer size!\");\n\t\t\t\twasm.ctype = JSON.parse(wasm.cstrToJs(cJson));\n\t\t\t\tconst defineGroups = [\n\t\t\t\t\t\"access\",\n\t\t\t\t\t\"authorizer\",\n\t\t\t\t\t\"blobFinalizers\",\n\t\t\t\t\t\"changeset\",\n\t\t\t\t\t\"config\",\n\t\t\t\t\t\"dataTypes\",\n\t\t\t\t\t\"dbConfig\",\n\t\t\t\t\t\"dbStatus\",\n\t\t\t\t\t\"encodings\",\n\t\t\t\t\t\"fcntl\",\n\t\t\t\t\t\"flock\",\n\t\t\t\t\t\"ioCap\",\n\t\t\t\t\t\"limits\",\n\t\t\t\t\t\"openFlags\",\n\t\t\t\t\t\"prepareFlags\",\n\t\t\t\t\t\"resultCodes\",\n\t\t\t\t\t\"sqlite3Status\",\n\t\t\t\t\t\"stmtStatus\",\n\t\t\t\t\t\"syncFlags\",\n\t\t\t\t\t\"trace\",\n\t\t\t\t\t\"txnState\",\n\t\t\t\t\t\"udfFlags\",\n\t\t\t\t\t\"version\"\n\t\t\t\t];\n\t\t\t\tif (wasm.bigIntEnabled) defineGroups.push(\"serialize\", \"session\", \"vtab\");\n\t\t\t\tfor (const t of defineGroups) for (const e of Object.entries(wasm.ctype[t])) capi[e[0]] = e[1];\n\t\t\t\tif (!wasm.functionEntry(capi.SQLITE_WASM_DEALLOC)) toss(\"Internal error: cannot resolve exported function\", \"entry SQLITE_WASM_DEALLOC (==\" + capi.SQLITE_WASM_DEALLOC + \").\");\n\t\t\t\tconst __rcMap = Object.create(null);\n\t\t\t\tfor (const e of Object.entries(wasm.ctype[\"resultCodes\"])) __rcMap[e[1]] = e[0];\n\t\t\t\t/**\n\t\t\t\tFor the given integer, returns the SQLITE_xxx result code as a\n\t\t\t\tstring, or undefined if no such mapping is found.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_js_rc_str = (rc) => __rcMap[rc];\n\t\t\t\tconst notThese = Object.assign(Object.create(null), {\n\t\t\t\t\tWasmTestStruct: true,\n\t\t\t\t\tsqlite3_index_info: !wasm.bigIntEnabled,\n\t\t\t\t\tsqlite3_index_constraint: !wasm.bigIntEnabled,\n\t\t\t\t\tsqlite3_index_orderby: !wasm.bigIntEnabled,\n\t\t\t\t\tsqlite3_index_constraint_usage: !wasm.bigIntEnabled\n\t\t\t\t});\n\t\t\t\tfor (const s of wasm.ctype.structs) if (!notThese[s.name]) capi[s.name] = sqlite3.StructBinder(s);\n\t\t\t\tif (capi.sqlite3_index_info) {\n\t\t\t\t\tfor (const k of [\n\t\t\t\t\t\t\"sqlite3_index_constraint\",\n\t\t\t\t\t\t\"sqlite3_index_orderby\",\n\t\t\t\t\t\t\"sqlite3_index_constraint_usage\"\n\t\t\t\t\t]) {\n\t\t\t\t\t\tcapi.sqlite3_index_info[k] = capi[k];\n\t\t\t\t\t\tdelete capi[k];\n\t\t\t\t\t}\n\t\t\t\t\tcapi.sqlite3_vtab_config = wasm.xWrap(\"sqlite3__wasm_vtab_config\", \"int\", [\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tInternal helper to assist in validating call argument counts in\n\t\t\tthe hand-written sqlite3_xyz() wrappers. We do this only for\n\t\t\tconsistency with non-special-case wrappings.\n\t\t\t*/\n\t\t\tconst __dbArgcMismatch = (pDb, f, n) => {\n\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, capi.SQLITE_MISUSE, f + \"() requires \" + n + \" argument\" + (1 === n ? \"\" : \"s\") + \".\");\n\t\t\t};\n\t\t\t/** Code duplication reducer for functions which take an encoding\n\t\t\targument and require SQLITE_UTF8. Sets the db error code to\n\t\t\tSQLITE_FORMAT, installs a descriptive error message,\n\t\t\tand returns SQLITE_FORMAT. */\n\t\t\tconst __errEncoding = (pDb) => {\n\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, capi.SQLITE_FORMAT, \"SQLITE_UTF8 is the only supported encoding.\");\n\t\t\t};\n\t\t\t/**\n\t\t\t__dbCleanupMap is infrastructure for recording registration of\n\t\t\tUDFs and collations so that sqlite3_close_v2() can clean up any\n\t\t\tautomated JS-to-WASM function conversions installed by those.\n\t\t\t*/\n\t\t\tconst __argPDb = (pDb) => wasm.xWrap.argAdapter(\"sqlite3*\")(pDb);\n\t\t\tconst __argStr = (str) => wasm.isPtr(str) ? wasm.cstrToJs(str) : str;\n\t\t\tconst __dbCleanupMap = function(pDb, mode) {\n\t\t\t\tpDb = __argPDb(pDb);\n\t\t\t\tlet m = this.dbMap.get(pDb);\n\t\t\t\tif (!mode) {\n\t\t\t\t\tthis.dbMap.delete(pDb);\n\t\t\t\t\treturn m;\n\t\t\t\t} else if (!m && mode > 0) this.dbMap.set(pDb, m = Object.create(null));\n\t\t\t\treturn m;\n\t\t\t}.bind(Object.assign(Object.create(null), { dbMap: /* @__PURE__ */ new Map() }));\n\t\t\t__dbCleanupMap.addCollation = function(pDb, name) {\n\t\t\t\tconst m = __dbCleanupMap(pDb, 1);\n\t\t\t\tif (!m.collation) m.collation = /* @__PURE__ */ new Set();\n\t\t\t\tm.collation.add(__argStr(name).toLowerCase());\n\t\t\t};\n\t\t\t__dbCleanupMap._addUDF = function(pDb, name, arity, map) {\n\t\t\t\tname = __argStr(name).toLowerCase();\n\t\t\t\tlet u = map.get(name);\n\t\t\t\tif (!u) map.set(name, u = /* @__PURE__ */ new Set());\n\t\t\t\tu.add(arity < 0 ? -1 : arity);\n\t\t\t};\n\t\t\t__dbCleanupMap.addFunction = function(pDb, name, arity) {\n\t\t\t\tconst m = __dbCleanupMap(pDb, 1);\n\t\t\t\tif (!m.udf) m.udf = /* @__PURE__ */ new Map();\n\t\t\t\tthis._addUDF(pDb, name, arity, m.udf);\n\t\t\t};\n\t\t\tif (wasm.exports.sqlite3_create_window_function) __dbCleanupMap.addWindowFunc = function(pDb, name, arity) {\n\t\t\t\tconst m = __dbCleanupMap(pDb, 1);\n\t\t\t\tif (!m.wudf) m.wudf = /* @__PURE__ */ new Map();\n\t\t\t\tthis._addUDF(pDb, name, arity, m.wudf);\n\t\t\t};\n\t\t\t/**\n\t\t\tIntended to be called _only_ from sqlite3_close_v2(),\n\t\t\tpassed its non-0 db argument.\n\t\t\t\n\t\t\tThis function frees up certain automatically-installed WASM\n\t\t\tfunction bindings which were installed on behalf of the given db,\n\t\t\tas those may otherwise leak.\n\t\t\t\n\t\t\tNotable caveat: this is only ever run via\n\t\t\tsqlite3.capi.sqlite3_close_v2(). If a client, for whatever\n\t\t\treason, uses sqlite3.wasm.exports.sqlite3_close_v2() (the\n\t\t\tfunction directly exported from WASM), this cleanup will not\n\t\t\thappen.\n\t\t\t\n\t\t\tThis is not a silver bullet for avoiding automation-related\n\t\t\tleaks but represents \"an honest effort.\"\n\t\t\t\n\t\t\tThe issue being addressed here is covered at:\n\t\t\t\n\t\t\thttps://sqlite.org/wasm/doc/trunk/api-c-style.md#convert-func-ptr\n\t\t\t*/\n\t\t\t__dbCleanupMap.cleanup = function(pDb) {\n\t\t\t\tpDb = __argPDb(pDb);\n\t\t\t\t/**\n\t\t\t\tInstalling NULL functions in the C API will remove those\n\t\t\t\tbindings. The FuncPtrAdapter which sits between us and the C\n\t\t\t\tAPI will also treat that as an opportunity to\n\t\t\t\twasm.uninstallFunction() any WASM function bindings it has\n\t\t\t\tinstalled for pDb.\n\t\t\t\t*/\n\t\t\t\tfor (const obj of [\n\t\t\t\t\t[\"sqlite3_busy_handler\", 3],\n\t\t\t\t\t[\"sqlite3_commit_hook\", 3],\n\t\t\t\t\t[\"sqlite3_preupdate_hook\", 3],\n\t\t\t\t\t[\"sqlite3_progress_handler\", 4],\n\t\t\t\t\t[\"sqlite3_rollback_hook\", 3],\n\t\t\t\t\t[\"sqlite3_set_authorizer\", 3],\n\t\t\t\t\t[\"sqlite3_trace_v2\", 4],\n\t\t\t\t\t[\"sqlite3_update_hook\", 3]\n\t\t\t\t]) {\n\t\t\t\t\tconst [name, arity] = obj;\n\t\t\t\t\tif (!wasm.exports[name]) continue;\n\t\t\t\t\tconst closeArgs = [pDb];\n\t\t\t\t\tcloseArgs.length = arity;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcapi[name](...closeArgs);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tsqlite3.config.warn(\"close-time call of\", name + \"(\", closeArgs, \") threw:\", e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst m = __dbCleanupMap(pDb, 0);\n\t\t\t\tif (!m) return;\n\t\t\t\tif (m.collation) {\n\t\t\t\t\tfor (const name of m.collation) try {\n\t\t\t\t\t\tcapi.sqlite3_create_collation_v2(pDb, name, capi.SQLITE_UTF8, 0, 0, 0);\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t\tdelete m.collation;\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tfor (i = 0; i < 2; ++i) {\n\t\t\t\t\tconst fmap = i ? m.wudf : m.udf;\n\t\t\t\t\tif (!fmap) continue;\n\t\t\t\t\tconst func = i ? capi.sqlite3_create_window_function : capi.sqlite3_create_function_v2;\n\t\t\t\t\tfor (const e of fmap) {\n\t\t\t\t\t\tconst name = e[0], arities = e[1];\n\t\t\t\t\t\tconst fargs = [\n\t\t\t\t\t\t\tpDb,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\tcapi.SQLITE_UTF8,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (i) fargs.push(0);\n\t\t\t\t\t\tfor (const arity of arities) try {\n\t\t\t\t\t\t\tfargs[2] = arity;\n\t\t\t\t\t\t\tfunc.apply(null, fargs);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tarities.clear();\n\t\t\t\t\t}\n\t\t\t\t\tfmap.clear();\n\t\t\t\t}\n\t\t\t\tdelete m.udf;\n\t\t\t\tdelete m.wudf;\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst __sqlite3CloseV2 = wasm.xWrap(\"sqlite3_close_v2\", \"int\", \"sqlite3*\");\n\t\t\t\tcapi.sqlite3_close_v2 = function(pDb) {\n\t\t\t\t\tif (1 !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_close_v2\", 1);\n\t\t\t\t\tif (pDb) try {\n\t\t\t\t\t\t__dbCleanupMap.cleanup(pDb);\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t\treturn __sqlite3CloseV2(pDb);\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (capi.sqlite3session_create) {\n\t\t\t\tconst __sqlite3SessionDelete = wasm.xWrap(\"sqlite3session_delete\", void 0, [\"sqlite3_session*\"]);\n\t\t\t\tcapi.sqlite3session_delete = function(pSession) {\n\t\t\t\t\tif (1 !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3session_delete\", 1);\n\t\t\t\t\telse if (pSession) capi.sqlite3session_table_filter(pSession, 0, 0);\n\t\t\t\t\t__sqlite3SessionDelete(pSession);\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\tconst contextKey = (argv, argIndex) => {\n\t\t\t\t\treturn \"argv[\" + argIndex + \"]:\" + argv[0] + \":\" + wasm.cstrToJs(argv[1]).toLowerCase();\n\t\t\t\t};\n\t\t\t\tconst __sqlite3CreateCollationV2 = wasm.xWrap(\"sqlite3_create_collation_v2\", \"int\", [\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xCompare\",\n\t\t\t\t\t\tsignature: \"i(pipip)\",\n\t\t\t\t\t\tcontextKey\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xDestroy\",\n\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\tcontextKey\n\t\t\t\t\t})\n\t\t\t\t]);\n\t\t\t\t/**\n\t\t\t\tWorks exactly like C's sqlite3_create_collation_v2() except that:\n\t\t\t\t\n\t\t\t\t1) It returns capi.SQLITE_FORMAT if the 3rd argument contains\n\t\t\t\tany encoding-related value other than capi.SQLITE_UTF8. No\n\t\t\t\tother encodings are supported. As a special case, if the\n\t\t\t\tbottom 4 bits of that argument are 0, SQLITE_UTF8 is\n\t\t\t\tassumed.\n\t\t\t\t\n\t\t\t\t2) It accepts JS functions for its function-pointer arguments,\n\t\t\t\tfor which it will install WASM-bound proxies. The bindings\n\t\t\t\tare \"permanent,\" in that they will stay in the WASM\n\t\t\t\tenvironment until it shuts down unless the client calls this\n\t\t\t\tagain with the same collation name and a value of 0 or null\n\t\t\t\tfor the the function pointer(s). sqlite3_close_v2() will\n\t\t\t\talso clean up such automatically-installed WASM functions.\n\t\t\t\t\n\t\t\t\tFor consistency with the C API, it requires the same number of\n\t\t\t\targuments. It returns capi.SQLITE_MISUSE if passed any other\n\t\t\t\targument count.\n\t\t\t\t\n\t\t\t\tReturns 0 on success, non-0 on error, in which case the error\n\t\t\t\tstate of pDb (of type `sqlite3*` or argument-convertible to it)\n\t\t\t\tmay contain more information.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_collation_v2 = function(pDb, zName, eTextRep, pArg, xCompare, xDestroy) {\n\t\t\t\t\tif (6 !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_create_collation_v2\", 6);\n\t\t\t\t\telse if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n\t\t\t\t\telse if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = __sqlite3CreateCollationV2(pDb, zName, eTextRep, pArg, xCompare, xDestroy);\n\t\t\t\t\t\tif (0 === rc && xCompare instanceof Function) __dbCleanupMap.addCollation(pDb, zName);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_create_collation = (pDb, zName, eTextRep, pArg, xCompare) => {\n\t\t\t\t\treturn 5 === arguments.length ? capi.sqlite3_create_collation_v2(pDb, zName, eTextRep, pArg, xCompare, 0) : __dbArgcMismatch(pDb, \"sqlite3_create_collation\", 5);\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\t/** FuncPtrAdapter for contextKey() for sqlite3_create_function()\n\t\t\t\tand friends. */\n\t\t\t\tconst contextKey = function(argv, argIndex) {\n\t\t\t\t\treturn argv[0] + \":\" + (argv[2] < 0 ? -1 : argv[2]) + \":\" + argIndex + \":\" + wasm.cstrToJs(argv[1]).toLowerCase();\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tJS proxies for the various sqlite3_create[_window]_function()\n\t\t\t\tcallbacks, structured in a form usable by wasm.xWrap.FuncPtrAdapter.\n\t\t\t\t*/\n\t\t\t\tconst __cfProxy = Object.assign(Object.create(null), {\n\t\t\t\t\txInverseAndStep: {\n\t\t\t\t\t\tsignature: \"v(pip)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pCtx, argc, pArgv) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcallback(pCtx, ...capi.sqlite3_values_to_js(argc, pArgv));\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txFinalAndValue: {\n\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pCtx) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_js(pCtx, callback(pCtx));\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txFunc: {\n\t\t\t\t\t\tsignature: \"v(pip)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pCtx, argc, pArgv) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_js(pCtx, callback(pCtx, ...capi.sqlite3_values_to_js(argc, pArgv)));\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txDestroy: {\n\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pVoid) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcallback(pVoid);\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tconsole.error(\"UDF xDestroy method threw:\", e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst __sqlite3CreateFunction = wasm.xWrap(\"sqlite3_create_function_v2\", \"int\", [\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xFunc\",\n\t\t\t\t\t\t...__cfProxy.xFunc\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xStep\",\n\t\t\t\t\t\t...__cfProxy.xInverseAndStep\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xFinal\",\n\t\t\t\t\t\t...__cfProxy.xFinalAndValue\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xDestroy\",\n\t\t\t\t\t\t...__cfProxy.xDestroy\n\t\t\t\t\t})\n\t\t\t\t]);\n\t\t\t\tconst __sqlite3CreateWindowFunction = wasm.exports.sqlite3_create_window_function ? wasm.xWrap(\"sqlite3_create_window_function\", \"int\", [\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xStep\",\n\t\t\t\t\t\t...__cfProxy.xInverseAndStep\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xFinal\",\n\t\t\t\t\t\t...__cfProxy.xFinalAndValue\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xValue\",\n\t\t\t\t\t\t...__cfProxy.xFinalAndValue\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xInverse\",\n\t\t\t\t\t\t...__cfProxy.xInverseAndStep\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xDestroy\",\n\t\t\t\t\t\t...__cfProxy.xDestroy\n\t\t\t\t\t})\n\t\t\t\t]) : void 0;\n\t\t\t\tcapi.sqlite3_create_function_v2 = function f(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_create_function_v2\", f.length);\n\t\t\t\t\telse if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n\t\t\t\t\telse if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = __sqlite3CreateFunction(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy);\n\t\t\t\t\t\tif (0 === rc && (xFunc instanceof Function || xStep instanceof Function || xFinal instanceof Function || xDestroy instanceof Function)) __dbCleanupMap.addFunction(pDb, funcName, nArg);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(\"sqlite3_create_function_v2() setup threw:\", e);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, e, \"Creation of UDF threw: \" + e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_create_function = function f(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) {\n\t\t\t\t\treturn f.length === arguments.length ? capi.sqlite3_create_function_v2(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, 0) : __dbArgcMismatch(pDb, \"sqlite3_create_function\", f.length);\n\t\t\t\t};\n\t\t\t\tif (__sqlite3CreateWindowFunction) capi.sqlite3_create_window_function = function f(pDb, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_create_window_function\", f.length);\n\t\t\t\t\telse if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n\t\t\t\t\telse if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = __sqlite3CreateWindowFunction(pDb, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy);\n\t\t\t\t\t\tif (0 === rc && (xStep instanceof Function || xFinal instanceof Function || xValue instanceof Function || xInverse instanceof Function || xDestroy instanceof Function)) __dbCleanupMap.addWindowFunc(pDb, funcName, nArg);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(\"sqlite3_create_window_function() setup threw:\", e);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, e, \"Creation of UDF threw: \" + e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\telse delete capi.sqlite3_create_window_function;\n\t\t\t\t/**\n\t\t\t\tA _deprecated_ alias for capi.sqlite3_result_js() which\n\t\t\t\tpredates the addition of that function in the public API.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_function_v2.udfSetResult = capi.sqlite3_create_function.udfSetResult = capi.sqlite3_result_js;\n\t\t\t\tif (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfSetResult = capi.sqlite3_result_js;\n\t\t\t\t/**\n\t\t\t\tA _deprecated_ alias for capi.sqlite3_values_to_js() which\n\t\t\t\tpredates the addition of that function in the public API.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_function_v2.udfConvertArgs = capi.sqlite3_create_function.udfConvertArgs = capi.sqlite3_values_to_js;\n\t\t\t\tif (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfConvertArgs = capi.sqlite3_values_to_js;\n\t\t\t\t/**\n\t\t\t\tA _deprecated_ alias for capi.sqlite3_result_error_js() which\n\t\t\t\tpredates the addition of that function in the public API.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_function_v2.udfSetError = capi.sqlite3_create_function.udfSetError = capi.sqlite3_result_error_js;\n\t\t\t\tif (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfSetError = capi.sqlite3_result_error_js;\n\t\t\t}\n\t\t\t{\n\t\t\t\t/**\n\t\t\t\tHelper for string:flexible conversions which requires a\n\t\t\t\tbyte-length counterpart argument. Passed a value and its\n\t\t\t\tostensible length, this function returns [V,N], where V is\n\t\t\t\teither v or a to-string transformed copy of v and N is either n\n\t\t\t\t(if v is a WASM pointer, in which case n might be a BigInt), -1\n\t\t\t\t(if v is a string or Array), or the byte length of v (if it's a\n\t\t\t\tbyte array or ArrayBuffer).\n\t\t\t\t*/\n\t\t\t\tconst __flexiString = (v, n) => {\n\t\t\t\t\tif (\"string\" === typeof v) n = -1;\n\t\t\t\t\telse if (util.isSQLableTypedArray(v)) {\n\t\t\t\t\t\tn = v.byteLength;\n\t\t\t\t\t\tv = wasm.typedArrayToString(v instanceof ArrayBuffer ? new Uint8Array(v) : v);\n\t\t\t\t\t} else if (Array.isArray(v)) {\n\t\t\t\t\t\tv = v.join(\"\");\n\t\t\t\t\t\tn = -1;\n\t\t\t\t\t}\n\t\t\t\t\treturn [v, n];\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tScope-local holder of the two impls of sqlite3_prepare_v2/v3().\n\t\t\t\t*/\n\t\t\t\tconst __prepare = {\n\t\t\t\t\tbasic: wasm.xWrap(\"sqlite3_prepare_v3\", \"int\", [\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]),\n\t\t\t\t\tfull: wasm.xWrap(\"sqlite3_prepare_v3\", \"int\", [\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t])\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_prepare_v3 = function f(pDb, sql, sqlLen, prepFlags, ppStmt, pzTail) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_prepare_v3\", f.length);\n\t\t\t\t\tconst [xSql, xSqlLen] = __flexiString(sql, Number(sqlLen));\n\t\t\t\t\tswitch (typeof xSql) {\n\t\t\t\t\t\tcase \"string\": return __prepare.basic(pDb, xSql, xSqlLen, prepFlags, ppStmt, null);\n\t\t\t\t\t\tcase typeof wasm.ptr.null: return __prepare.full(pDb, wasm.ptr.coerce(xSql), xSqlLen, prepFlags, ppStmt, pzTail);\n\t\t\t\t\t\tdefault: return util.sqlite3__wasm_db_error(pDb, capi.SQLITE_MISUSE, \"Invalid SQL argument type for sqlite3_prepare_v2/v3(). typeof=\" + typeof xSql);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_prepare_v2 = function f(pDb, sql, sqlLen, ppStmt, pzTail) {\n\t\t\t\t\treturn f.length === arguments.length ? capi.sqlite3_prepare_v3(pDb, sql, sqlLen, 0, ppStmt, pzTail) : __dbArgcMismatch(pDb, \"sqlite3_prepare_v2\", f.length);\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\tconst __bindText = wasm.xWrap(\"sqlite3_bind_text\", \"int\", [\n\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]);\n\t\t\t\tconst __bindBlob = wasm.xWrap(\"sqlite3_bind_blob\", \"int\", [\n\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]);\n\t\t\t\t/** Documented in the capi object's initializer. */\n\t\t\t\tcapi.sqlite3_bind_text = function f(pStmt, iCol, text, nText, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(capi.sqlite3_db_handle(pStmt), \"sqlite3_bind_text\", f.length);\n\t\t\t\t\telse if (wasm.isPtr(text) || null === text) return __bindText(pStmt, iCol, text, nText, xDestroy);\n\t\t\t\t\telse if (text instanceof ArrayBuffer) text = new Uint8Array(text);\n\t\t\t\t\telse if (Array.isArray(pMem)) text = pMem.join(\"\");\n\t\t\t\t\tlet p, n;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (util.isSQLableTypedArray(text)) {\n\t\t\t\t\t\t\tp = wasm.allocFromTypedArray(text);\n\t\t\t\t\t\t\tn = text.byteLength;\n\t\t\t\t\t\t} else if (\"string\" === typeof text) [p, n] = wasm.allocCString(text);\n\t\t\t\t\t\telse return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE, \"Invalid 3rd argument type for sqlite3_bind_text().\");\n\t\t\t\t\t\treturn __bindText(pStmt, iCol, p, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\twasm.dealloc(p);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t/** Documented in the capi object's initializer. */\n\t\t\t\tcapi.sqlite3_bind_blob = function f(pStmt, iCol, pMem, nMem, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(capi.sqlite3_db_handle(pStmt), \"sqlite3_bind_blob\", f.length);\n\t\t\t\t\telse if (wasm.isPtr(pMem) || null === pMem) return __bindBlob(pStmt, iCol, pMem, nMem, xDestroy);\n\t\t\t\t\telse if (pMem instanceof ArrayBuffer) pMem = new Uint8Array(pMem);\n\t\t\t\t\telse if (Array.isArray(pMem)) pMem = pMem.join(\"\");\n\t\t\t\t\tlet p, n;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (util.isBindableTypedArray(pMem)) {\n\t\t\t\t\t\t\tp = wasm.allocFromTypedArray(pMem);\n\t\t\t\t\t\t\tn = nMem >= 0 ? nMem : pMem.byteLength;\n\t\t\t\t\t\t} else if (\"string\" === typeof pMem) [p, n] = wasm.allocCString(pMem);\n\t\t\t\t\t\telse return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE, \"Invalid 3rd argument type for sqlite3_bind_blob().\");\n\t\t\t\t\t\treturn __bindBlob(pStmt, iCol, p, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\twasm.dealloc(p);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!capi.sqlite3_column_text) {\n\t\t\t\tconst argStmt = wasm.xWrap.argAdapter(\"sqlite3_stmt*\"), argInt = wasm.xWrap.argAdapter(\"int\"), argValue = wasm.xWrap.argAdapter(\"sqlite3_value*\"), newStr = (cstr, n) => wasm.typedArrayToString(wasm.heap8u(), Number(cstr), Number(cstr) + n);\n\t\t\t\tcapi.sqlite3_column_text = function(stmt, colIndex) {\n\t\t\t\t\tconst a0 = argStmt(stmt), a1 = argInt(colIndex);\n\t\t\t\t\tconst cstr = wasm.exports.sqlite3_column_text(a0, a1);\n\t\t\t\t\treturn cstr ? newStr(cstr, wasm.exports.sqlite3_column_bytes(a0, a1)) : null;\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_value_text = function(val) {\n\t\t\t\t\tconst a0 = argValue(val);\n\t\t\t\t\tconst cstr = wasm.exports.sqlite3_value_text(a0);\n\t\t\t\t\treturn cstr ? newStr(cstr, wasm.exports.sqlite3_value_bytes(a0)) : null;\n\t\t\t\t};\n\t\t\t}\n\t\t\t/**\n\t\t\tWraps a small subset of the C API's sqlite3_config() options.\n\t\t\tUnsupported options trigger the return of capi.SQLITE_NOTFOUND.\n\t\t\tPassing fewer than 2 arguments triggers return of\n\t\t\tcapi.SQLITE_MISUSE.\n\t\t\t*/\n\t\t\tcapi.sqlite3_config = function(op, ...args) {\n\t\t\t\tif (arguments.length < 2) return capi.SQLITE_MISUSE;\n\t\t\t\tswitch (op) {\n\t\t\t\t\tcase capi.SQLITE_CONFIG_COVERING_INDEX_SCAN:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MEMSTATUS:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SMALL_MALLOC:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SORTERREF_SIZE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_STMTJRNL_SPILL:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_URI: return wasm.exports.sqlite3__wasm_config_i(op, args[0]);\n\t\t\t\t\tcase capi.SQLITE_CONFIG_LOOKASIDE: return wasm.exports.sqlite3__wasm_config_ii(op, args[0], args[1]);\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MEMDB_MAXSIZE: return wasm.exports.sqlite3__wasm_config_j(op, args[0]);\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETMALLOC:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETMUTEX:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETPCACHE2:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETPCACHE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_HEAP:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_LOG:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MALLOC:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MMAP_SIZE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MULTITHREAD:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MUTEX:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PAGECACHE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PCACHE2:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PCACHE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PCACHE_HDRSZ:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PMASZ:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SERIALIZED:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SINGLETHREAD:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SQLLOG:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_WIN32_HEAPSIZE:\n\t\t\t\t\tdefault: return capi.SQLITE_NOTFOUND;\n\t\t\t\t}\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst __autoExtFptr = /* @__PURE__ */ new Set();\n\t\t\t\tcapi.sqlite3_auto_extension = function(fPtr) {\n\t\t\t\t\tif (fPtr instanceof Function) fPtr = wasm.installFunction(\"i(ppp)\", fPtr);\n\t\t\t\t\telse if (1 !== arguments.length || !wasm.isPtr(fPtr)) return capi.SQLITE_MISUSE;\n\t\t\t\t\tconst rc = wasm.exports.sqlite3_auto_extension(fPtr);\n\t\t\t\t\tif (fPtr !== arguments[0]) if (0 === rc) __autoExtFptr.add(fPtr);\n\t\t\t\t\telse wasm.uninstallFunction(fPtr);\n\t\t\t\t\treturn rc;\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_cancel_auto_extension = function(fPtr) {\n\t\t\t\t\tif (!fPtr || 1 !== arguments.length || !wasm.isPtr(fPtr)) return 0;\n\t\t\t\t\treturn wasm.exports.sqlite3_cancel_auto_extension(fPtr);\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_reset_auto_extension = function() {\n\t\t\t\t\twasm.exports.sqlite3_reset_auto_extension();\n\t\t\t\t\tfor (const fp of __autoExtFptr) wasm.uninstallFunction(fp);\n\t\t\t\t\t__autoExtFptr.clear();\n\t\t\t\t};\n\t\t\t}\n\t\t\twasm.xWrap.FuncPtrAdapter.warnOnUse = true;\n\t\t\tconst StructBinder = sqlite3.StructBinder;\n\t\t\t/**\n\t\t\tInstalls a StructBinder-bound function pointer member of the\n\t\t\tgiven name and function in the given StructBinder.StructType\n\t\t\ttarget object.\n\t\t\t\n\t\t\tIt creates a WASM proxy for the given function and arranges for\n\t\t\tthat proxy to be cleaned up when tgt.dispose() is called. Throws\n\t\t\ton the slightest hint of error, e.g. tgt is-not-a StructType,\n\t\t\tname does not map to a struct-bound member, etc.\n\t\t\t\n\t\t\tAs a special case, if the given function is a pointer, then\n\t\t\t`wasm.functionEntry()` is used to validate that it is a known\n\t\t\tfunction. If so, it is used as-is with no extra level of proxying\n\t\t\tor cleanup, else an exception is thrown. It is legal to pass a\n\t\t\tvalue of 0, indicating a NULL pointer, with the caveat that 0\n\t\t\t_is_ a legal function pointer in WASM but it will not be accepted\n\t\t\tas such _here_. (Justification: the function at address zero must\n\t\t\tbe one which initially came from the WASM module, not a method we\n\t\t\twant to bind to a virtual table or VFS.)\n\t\t\t\n\t\t\tThis function returns a proxy for itself which is bound to tgt\n\t\t\tand takes 2 args (name,func). That function returns the same\n\t\t\tthing as this one, permitting calls to be chained.\n\t\t\t\n\t\t\tIf called with only 1 arg, it has no side effects but returns a\n\t\t\tfunc with the same signature as described above.\n\t\t\t\n\t\t\tACHTUNG: because we cannot generically know how to transform JS\n\t\t\texceptions into result codes, the installed functions do no\n\t\t\tautomatic catching of exceptions. It is critical, to avoid\n\t\t\tundefined behavior in the C layer, that methods mapped via\n\t\t\tthis function do not throw. The exception, as it were, to that\n\t\t\trule is...\n\t\t\t\n\t\t\tIf applyArgcCheck is true then each JS function (as opposed to\n\t\t\tfunction pointers) gets wrapped in a proxy which asserts that it\n\t\t\tis passed the expected number of arguments, throwing if the\n\t\t\targument count does not match expectations. That is only intended\n\t\t\tfor dev-time usage for sanity checking, and may leave the C\n\t\t\tenvironment in an undefined state.\n\t\t\t*/\n\t\t\tconst installMethod = function callee(tgt, name, func, applyArgcCheck = callee.installMethodArgcCheck) {\n\t\t\t\tif (!(tgt instanceof StructBinder.StructType)) toss(\"Usage error: target object is-not-a StructType.\");\n\t\t\t\telse if (!(func instanceof Function) && !wasm.isPtr(func)) toss(\"Usage error: expecting a Function or WASM pointer to one.\");\n\t\t\t\tif (1 === arguments.length) return (n, f) => callee(tgt, n, f, applyArgcCheck);\n\t\t\t\tif (!callee.argcProxy) {\n\t\t\t\t\tcallee.argcProxy = function(tgt, funcName, func, sig) {\n\t\t\t\t\t\treturn function(...args) {\n\t\t\t\t\t\t\tif (func.length !== arguments.length) toss(\"Argument mismatch for\", tgt.structInfo.name + \"::\" + funcName + \": Native signature is:\", sig);\n\t\t\t\t\t\t\treturn func.apply(this, args);\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t\tcallee.removeFuncList = function() {\n\t\t\t\t\t\tif (this.ondispose.__removeFuncList) {\n\t\t\t\t\t\t\tthis.ondispose.__removeFuncList.forEach((v, ndx) => {\n\t\t\t\t\t\t\t\tif (wasm.isPtr(v)) try {\n\t\t\t\t\t\t\t\t\twasm.uninstallFunction(v);\n\t\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tdelete this.ondispose.__removeFuncList;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst sigN = tgt.memberSignature(name);\n\t\t\t\tif (sigN.length < 2) toss(\"Member\", name, \"does not have a function pointer signature:\", sigN);\n\t\t\t\tconst memKey = tgt.memberKey(name);\n\t\t\t\tconst fProxy = applyArgcCheck && !wasm.isPtr(func) ? callee.argcProxy(tgt, memKey, func, sigN) : func;\n\t\t\t\tif (wasm.isPtr(fProxy)) {\n\t\t\t\t\tif (fProxy && !wasm.functionEntry(fProxy)) toss(\"Pointer\", fProxy, \"is not a WASM function table entry.\");\n\t\t\t\t\ttgt[memKey] = fProxy;\n\t\t\t\t} else {\n\t\t\t\t\tconst pFunc = wasm.installFunction(fProxy, sigN);\n\t\t\t\t\ttgt[memKey] = pFunc;\n\t\t\t\t\tif (!tgt.ondispose || !tgt.ondispose.__removeFuncList) {\n\t\t\t\t\t\ttgt.addOnDispose(\"ondispose.__removeFuncList handler\", callee.removeFuncList);\n\t\t\t\t\t\ttgt.ondispose.__removeFuncList = [];\n\t\t\t\t\t}\n\t\t\t\t\ttgt.ondispose.__removeFuncList.push(memKey, pFunc);\n\t\t\t\t}\n\t\t\t\treturn (n, f) => callee(tgt, n, f, applyArgcCheck);\n\t\t\t};\n\t\t\tinstallMethod.installMethodArgcCheck = false;\n\t\t\t/**\n\t\t\tInstalls methods into the given StructBinder.StructType-type\n\t\t\tinstance. Each entry in the given methods object must map to a\n\t\t\tknown member of the given StructType, else an exception will be\n\t\t\ttriggered. See installMethod() for more details, including the\n\t\t\tsemantics of the 3rd argument.\n\t\t\t\n\t\t\tAs an exception to the above, if any two or more methods in the\n\t\t\t2nd argument are the exact same function, installMethod() is\n\t\t\t_not_ called for the 2nd and subsequent instances, and instead\n\t\t\tthose instances get assigned the same method pointer which is\n\t\t\tcreated for the first instance. This optimization is primarily to\n\t\t\taccommodate special handling of sqlite3_module::xConnect and\n\t\t\txCreate methods.\n\t\t\t\n\t\t\tOn success, returns its first argument. Throws on error.\n\t\t\t*/\n\t\t\tconst installMethods = function(structInstance, methods, applyArgcCheck = installMethod.installMethodArgcCheck) {\n\t\t\t\tconst seen = /* @__PURE__ */ new Map();\n\t\t\t\tfor (const k of Object.keys(methods)) {\n\t\t\t\t\tconst m = methods[k];\n\t\t\t\t\tconst prior = seen.get(m);\n\t\t\t\t\tif (prior) {\n\t\t\t\t\t\tconst mkey = structInstance.memberKey(k);\n\t\t\t\t\t\tstructInstance[mkey] = structInstance[structInstance.memberKey(prior)];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinstallMethod(structInstance, k, m, applyArgcCheck);\n\t\t\t\t\t\tseen.set(m, k);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn structInstance;\n\t\t\t};\n\t\t\t/**\n\t\t\tEquivalent to calling installMethod(this,...arguments) with a\n\t\t\tfirst argument of this object. If called with 1 or 2 arguments\n\t\t\tand the first is an object, it's instead equivalent to calling\n\t\t\tinstallMethods(this,...arguments).\n\t\t\t*/\n\t\t\tStructBinder.StructType.prototype.installMethod = function callee(name, func, applyArgcCheck = installMethod.installMethodArgcCheck) {\n\t\t\t\treturn arguments.length < 3 && name && \"object\" === typeof name ? installMethods(this, ...arguments) : installMethod(this, ...arguments);\n\t\t\t};\n\t\t\t/**\n\t\t\tEquivalent to calling installMethods() with a first argument\n\t\t\tof this object.\n\t\t\t*/\n\t\t\tStructBinder.StructType.prototype.installMethods = function(methods, applyArgcCheck = installMethod.installMethodArgcCheck) {\n\t\t\t\treturn installMethods(this, methods, applyArgcCheck);\n\t\t\t};\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tconst toss3 = (...args) => {\n\t\t\t\tthrow new sqlite3.SQLite3Error(...args);\n\t\t\t};\n\t\t\tconst capi = sqlite3.capi, wasm = sqlite3.wasm, util = sqlite3.util;\n\t\t\tconst outWrapper = function(f) {\n\t\t\t\treturn (...args) => f(\"sqlite3.oo1:\", ...args);\n\t\t\t};\n\t\t\tsqlite3.__isUnderTest ? outWrapper(console.debug.bind(console)) : outWrapper(sqlite3.config.debug);\n\t\t\tsqlite3.__isUnderTest ? outWrapper(console.warn.bind(console)) : outWrapper(sqlite3.config.warn);\n\t\t\tsqlite3.__isUnderTest ? outWrapper(console.error.bind(console)) : outWrapper(sqlite3.config.error);\n\t\t\t/**\n\t\t\tIn order to keep clients from manipulating, perhaps\n\t\t\tinadvertently, the underlying pointer values of DB and Stmt\n\t\t\tinstances, we'll gate access to them via the `pointer` property\n\t\t\taccessor and store their real values in this map. Keys = DB/Stmt\n\t\t\tobjects, values = pointer values. This also unifies how those are\n\t\t\taccessed, for potential use downstream via custom\n\t\t\twasm.xWrap() function signatures which know how to extract\n\t\t\tit.\n\t\t\t*/\n\t\t\tconst __ptrMap = /* @__PURE__ */ new WeakMap();\n\t\t\t/**\n\t\t\tA Set of oo1.DB or oo1.Stmt objects which are proxies for\n\t\t\t(sqlite3*) resp. (sqlite3_stmt*) pointers which themselves are\n\t\t\towned elsewhere. Objects in this Set do not own their underlying\n\t\t\thandle and that handle must be guaranteed (by the client) to\n\t\t\toutlive the proxy. DB.close()/Stmt.finalize() methods will remove\n\t\t\tthe object from this Set _instead_ of closing/finalizing the\n\t\t\tpointer. These proxies are primarily intended as a way to briefly\n\t\t\twrap an (sqlite3[_stmt]*) object as an oo1.DB/Stmt without taking\n\t\t\tover ownership, to take advantage of simplifies usage compared to\n\t\t\tthe C API while not imposing any change of ownership.\n\t\t\t\n\t\t\tSee DB.wrapHandle() and Stmt.wrapHandle().\n\t\t\t*/\n\t\t\tconst __doesNotOwnHandle = /* @__PURE__ */ new Set();\n\t\t\t/**\n\t\t\tMap of DB instances to objects, each object being a map of Stmt\n\t\t\twasm pointers to Stmt objects.\n\t\t\t*/\n\t\t\tconst __stmtMap = /* @__PURE__ */ new WeakMap();\n\t\t\t/** If object opts has _its own_ property named p then that\n\t\t\tproperty's value is returned, else dflt is returned. */\n\t\t\tconst getOwnOption = (opts, p, dflt) => {\n\t\t\t\tconst d = Object.getOwnPropertyDescriptor(opts, p);\n\t\t\t\treturn d ? d.value : dflt;\n\t\t\t};\n\t\t\tconst checkSqlite3Rc = function(dbPtr, sqliteResultCode) {\n\t\t\t\tif (sqliteResultCode) {\n\t\t\t\t\tif (dbPtr instanceof DB) dbPtr = dbPtr.pointer;\n\t\t\t\t\ttoss3(sqliteResultCode, \"sqlite3 result code\", sqliteResultCode + \":\", dbPtr ? capi.sqlite3_errmsg(dbPtr) : capi.sqlite3_errstr(sqliteResultCode));\n\t\t\t\t}\n\t\t\t\treturn arguments[0];\n\t\t\t};\n\t\t\t/**\n\t\t\tsqlite3_trace_v2() callback which gets installed by the DB ctor\n\t\t\tif its open-flags contain \"t\".\n\t\t\t*/\n\t\t\tconst __dbTraceToConsole = wasm.installFunction(\"i(ippp)\", function(t, c, p, x) {\n\t\t\t\tif (capi.SQLITE_TRACE_STMT === t) console.log(\"SQL TRACE #\" + ++this.counter, \"via sqlite3@\" + c + \"[\" + capi.sqlite3_db_filename(c, null) + \"]\", wasm.cstrToJs(x));\n\t\t\t}.bind({ counter: 0 }));\n\t\t\t/**\n\t\t\tA map of sqlite3_vfs pointers to SQL code or a callback function\n\t\t\tto run when the DB constructor opens a database with the given\n\t\t\tVFS. In the latter case, the call signature is\n\t\t\t(theDbObject,sqlite3Namespace) and the callback is expected to\n\t\t\tthrow on error.\n\t\t\t*/\n\t\t\tconst __vfsPostOpenCallback = Object.create(null);\n\t\t\t/**\n\t\t\tA proxy for DB class constructors. It must be called with the\n\t\t\tbeing-construct DB object as its \"this\". See the DB constructor\n\t\t\tfor the argument docs. This is split into a separate function\n\t\t\tin order to enable simple creation of special-case DB constructors,\n\t\t\te.g. JsStorageDb and OpfsDb.\n\t\t\t\n\t\t\tExpects to be passed a configuration object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t- `.filename`: the db filename. It may be a special name like \":memory:\"\n\t\t\tor \"\". It may also be a URI-style name.\n\t\t\t\n\t\t\t- `.flags`: as documented in the DB constructor.\n\t\t\t\n\t\t\t- `.vfs`: as documented in the DB constructor.\n\t\t\t\n\t\t\tIt also accepts those as the first 3 arguments.\n\t\t\t\n\t\t\tIn non-default builds it may accept additional configuration\n\t\t\toptions.\n\t\t\t*/\n\t\t\tconst dbCtorHelper = function ctor(...args) {\n\t\t\t\tconst opt = ctor.normalizeArgs(...args);\n\t\t\t\tlet pDb;\n\t\t\t\tif (pDb = opt[\"sqlite3*\"]) {\n\t\t\t\t\tif (!opt[\"sqlite3*:takeOwnership\"]) __doesNotOwnHandle.add(this);\n\t\t\t\t\tthis.filename = capi.sqlite3_db_filename(pDb, \"main\");\n\t\t\t\t} else {\n\t\t\t\t\tlet fn = opt.filename, vfsName = opt.vfs, flagsStr = opt.flags;\n\t\t\t\t\tif (\"string\" !== typeof fn && !wasm.isPtr(fn) || \"string\" !== typeof flagsStr || vfsName && \"string\" !== typeof vfsName && !wasm.isPtr(vfsName)) {\n\t\t\t\t\t\tsqlite3.config.error(\"Invalid DB ctor args\", opt, arguments);\n\t\t\t\t\t\ttoss3(\"Invalid arguments for DB constructor:\", arguments, \"opts:\", opt);\n\t\t\t\t\t}\n\t\t\t\t\tlet oflags = 0;\n\t\t\t\t\tif (flagsStr.indexOf(\"c\") >= 0) oflags |= capi.SQLITE_OPEN_CREATE | capi.SQLITE_OPEN_READWRITE;\n\t\t\t\t\tif (flagsStr.indexOf(\"w\") >= 0) oflags |= capi.SQLITE_OPEN_READWRITE;\n\t\t\t\t\tif (0 === oflags) oflags |= capi.SQLITE_OPEN_READONLY;\n\t\t\t\t\toflags |= capi.SQLITE_OPEN_EXRESCODE;\n\t\t\t\t\tconst stack = wasm.pstack.pointer;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst pPtr = wasm.pstack.allocPtr();\n\t\t\t\t\t\tlet rc = capi.sqlite3_open_v2(fn, pPtr, oflags, vfsName || wasm.ptr.null);\n\t\t\t\t\t\tpDb = wasm.peekPtr(pPtr);\n\t\t\t\t\t\tcheckSqlite3Rc(pDb, rc);\n\t\t\t\t\t\tcapi.sqlite3_extended_result_codes(pDb, 1);\n\t\t\t\t\t\tif (flagsStr.indexOf(\"t\") >= 0) capi.sqlite3_trace_v2(pDb, capi.SQLITE_TRACE_STMT, __dbTraceToConsole, pDb);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif (pDb) capi.sqlite3_close_v2(pDb);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stack);\n\t\t\t\t\t}\n\t\t\t\t\tthis.filename = wasm.isPtr(fn) ? wasm.cstrToJs(fn) : fn;\n\t\t\t\t}\n\t\t\t\t__ptrMap.set(this, pDb);\n\t\t\t\t__stmtMap.set(this, Object.create(null));\n\t\t\t\tif (!opt[\"sqlite3*\"]) try {\n\t\t\t\t\tconst postInitSql = __vfsPostOpenCallback[capi.sqlite3_js_db_vfs(pDb) || toss3(\"Internal error: cannot get VFS for new db handle.\")];\n\t\t\t\t\tif (postInitSql)\n /**\n\t\t\t\t\tReminder: if this db is encrypted and the client did _not_ pass\n\t\t\t\t\tin the key, any init code will fail, causing the ctor to throw.\n\t\t\t\t\tWe don't actually know whether the db is encrypted, so we cannot\n\t\t\t\t\tsensibly apply any heuristics which skip the init code only for\n\t\t\t\t\tencrypted databases for which no key has yet been supplied.\n\t\t\t\t\t*/\n\t\t\t\t\tif (postInitSql instanceof Function) postInitSql(this, sqlite3);\n\t\t\t\t\telse checkSqlite3Rc(pDb, capi.sqlite3_exec(pDb, postInitSql, 0, 0, 0));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tSets a callback which should be called after a db is opened with\n\t\t\tthe given sqlite3_vfs pointer. The 2nd argument must be a\n\t\t\tfunction, which gets called with\n\t\t\t(theOo1DbObject,sqlite3Namespace) at the end of the DB()\n\t\t\tconstructor. The function must throw on error, in which case the\n\t\t\tdb is closed and the exception is propagated. This function is\n\t\t\tintended only for use by DB subclasses or sqlite3_vfs\n\t\t\timplementations.\n\t\t\t\n\t\t\tPrior to 2024-07-22, it was legal to pass SQL code as the second\n\t\t\targument, but that can interfere with a client's ability to run\n\t\t\tpragmas which must be run before anything else, namely (pragma\n\t\t\tlocking_mode=exclusive) for use with WAL mode. That capability\n\t\t\thad only ever been used as an internal detail of the two OPFS\n\t\t\tVFSes, and they no longer use it that way.\n\t\t\t*/\n\t\t\tdbCtorHelper.setVfsPostOpenCallback = function(pVfs, callback) {\n\t\t\t\tif (!(callback instanceof Function)) toss3(\"dbCtorHelper.setVfsPostOpenCallback() should not be used with a non-function argument.\", arguments);\n\t\t\t\t__vfsPostOpenCallback[pVfs] = callback;\n\t\t\t};\n\t\t\t/**\n\t\t\tA helper for DB constructors. It accepts either a single\n\t\t\tconfig-style object or up to 3 arguments (filename, dbOpenFlags,\n\t\t\tdbVfsName). It returns a new object containing:\n\t\t\t\n\t\t\t{ filename: ..., flags: ..., vfs: ... }\n\t\t\t\n\t\t\tIf passed an object, any additional properties it has are copied\n\t\t\tas-is into the new object.\n\t\t\t*/\n\t\t\tdbCtorHelper.normalizeArgs = function(filename = \":memory:\", flags = \"c\", vfs = null) {\n\t\t\t\tconst arg = {};\n\t\t\t\tif (1 === arguments.length && arguments[0] && \"object\" === typeof arguments[0]) {\n\t\t\t\t\tObject.assign(arg, arguments[0]);\n\t\t\t\t\tif (void 0 === arg.flags) arg.flags = \"c\";\n\t\t\t\t\tif (void 0 === arg.vfs) arg.vfs = null;\n\t\t\t\t\tif (void 0 === arg.filename) arg.filename = \":memory:\";\n\t\t\t\t} else {\n\t\t\t\t\targ.filename = filename;\n\t\t\t\t\targ.flags = flags;\n\t\t\t\t\targ.vfs = vfs;\n\t\t\t\t}\n\t\t\t\treturn arg;\n\t\t\t};\n\t\t\t/**\n\t\t\tThe DB class provides a high-level OO wrapper around an sqlite3\n\t\t\tdb handle.\n\t\t\t\n\t\t\tThe given db filename must be resolvable using whatever\n\t\t\tfilesystem layer (virtual or otherwise) is set up for the default\n\t\t\tsqlite3 VFS or a VFS which can resolve it must be specified.\n\t\t\t\n\t\t\tThe special sqlite3 db names \":memory:\" and \"\" (temporary db)\n\t\t\thave their normal special meanings here and need not resolve to\n\t\t\treal filenames, but \"\" uses an on-storage temporary database and\n\t\t\trequires that the VFS support that.\n\t\t\t\n\t\t\tThe second argument specifies the open/create mode for the\n\t\t\tdatabase. It must be string containing a sequence of letters (in\n\t\t\tany order, but case sensitive) specifying the mode:\n\t\t\t\n\t\t\t- \"c\": create if it does not exist, else fail if it does not\n\t\t\texist. Implies the \"w\" flag.\n\t\t\t\n\t\t\t- \"w\": write. Implies \"r\": a db cannot be write-only.\n\t\t\t\n\t\t\t- \"r\": read-only if neither \"w\" nor \"c\" are provided, else it\n\t\t\tis ignored.\n\t\t\t\n\t\t\t- \"t\": enable tracing of SQL executed on this database handle,\n\t\t\tsending it to `console.log()`. To disable it later, call\n\t\t\t`sqlite3.capi.sqlite3_trace_v2(thisDb.pointer, 0, 0, 0)`.\n\t\t\t\n\t\t\tIf \"w\" is not provided, the db is implicitly read-only, noting\n\t\t\tthat \"rc\" is meaningless\n\t\t\t\n\t\t\tAny other letters are currently ignored. The default is\n\t\t\t\"c\". These modes are ignored for the special \":memory:\" and \"\"\n\t\t\tnames and _may_ be ignored altogether for certain VFSes.\n\t\t\t\n\t\t\tThe final argument is analogous to the final argument of\n\t\t\tsqlite3_open_v2(): the name of an sqlite3 VFS. Pass a falsy value,\n\t\t\tor none at all, to use the default. If passed a value, it must\n\t\t\tbe the string name of a VFS.\n\t\t\t\n\t\t\tThe constructor optionally (and preferably) takes its arguments\n\t\t\tin the form of a single configuration object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t- `filename`: database file name\n\t\t\t- `flags`: open-mode flags\n\t\t\t- `vfs`: the VFS fname\n\t\t\t\n\t\t\t\n\t\t\tThe `filename` and `vfs` arguments may be either JS strings or\n\t\t\tC-strings allocated via WASM. `flags` is required to be a JS\n\t\t\tstring (because it's specific to this API, which is specific\n\t\t\tto JS).\n\t\t\t\n\t\t\tFor purposes of passing a DB instance to C-style sqlite3\n\t\t\tfunctions, the DB object's read-only `pointer` property holds its\n\t\t\t`sqlite3*` pointer value. That property can also be used to check\n\t\t\twhether this DB instance is still open: it will evaluate to\n\t\t\t`undefined` after the DB object's close() method is called.\n\t\t\t\n\t\t\tIn the main window thread, the filenames `\":localStorage:\"` and\n\t\t\t`\":sessionStorage:\"` are special: they cause the db to use either\n\t\t\tlocalStorage or sessionStorage for storing the database using\n\t\t\tthe kvvfs. If one of these names are used, they trump\n\t\t\tany vfs name set in the arguments.\n\t\t\t*/\n\t\t\tconst DB = function(...args) {\n\t\t\t\tdbCtorHelper.apply(this, args);\n\t\t\t};\n\t\t\tDB.dbCtorHelper = dbCtorHelper;\n\t\t\t/**\n\t\t\tInternal-use enum for mapping JS types to DB-bindable types.\n\t\t\tThese do not (and need not) line up with the SQLITE_type\n\t\t\tvalues. All values in this enum must be truthy and (mostly)\n\t\t\tdistinct but they need not be numbers.\n\t\t\t*/\n\t\t\tconst BindTypes = {\n\t\t\t\tnull: 1,\n\t\t\t\tnumber: 2,\n\t\t\t\tstring: 3,\n\t\t\t\tboolean: 4,\n\t\t\t\tblob: 5\n\t\t\t};\n\t\t\tif (wasm.bigIntEnabled) BindTypes.bigint = BindTypes.number;\n\t\t\t/**\n\t\t\tThis class wraps sqlite3_stmt. Calling this constructor\n\t\t\tdirectly will trigger an exception. Use DB.prepare() to create\n\t\t\tnew instances.\n\t\t\t\n\t\t\tFor purposes of passing a Stmt instance to C-style sqlite3\n\t\t\tfunctions, its read-only `pointer` property holds its `sqlite3_stmt*`\n\t\t\tpointer value.\n\t\t\t\n\t\t\tOther non-function properties include:\n\t\t\t\n\t\t\t- `db`: the DB object which created the statement.\n\t\t\t\n\t\t\t- `columnCount`: the number of result columns in the query, or 0\n\t\t\tfor queries which cannot return results. This property is a\n\t\t\tread-only proxy for sqlite3_column_count() and its use in loops\n\t\t\tshould be avoided because of the call overhead associated with\n\t\t\tthat. The `columnCount` is not cached when the Stmt is created\n\t\t\tbecause a schema change made between this statement's preparation\n\t\t\tand when it is stepped may invalidate it.\n\t\t\t\n\t\t\t- `parameterCount`: the number of bindable parameters in the\n\t\t\tquery. Like `columnCount`, this property is ready-only and is a\n\t\t\tproxy for a C API call.\n\t\t\t\n\t\t\tAs a general rule, most methods of this class will throw if\n\t\t\tcalled on an instance which has been finalized. For brevity's\n\t\t\tsake, the method docs do not all repeat this warning.\n\t\t\t*/\n\t\t\tconst Stmt = function() {\n\t\t\t\tif (BindTypes !== arguments[2]) toss3(capi.SQLITE_MISUSE, \"Do not call the Stmt constructor directly. Use DB.prepare().\");\n\t\t\t\tthis.db = arguments[0];\n\t\t\t\t__ptrMap.set(this, arguments[1]);\n\t\t\t\tif (arguments.length > 3 && !arguments[3]) __doesNotOwnHandle.add(this);\n\t\t\t};\n\t\t\t/** Throws if the given DB has been closed, else it is returned. */\n\t\t\tconst affirmDbOpen = function(db) {\n\t\t\t\tif (!db.pointer) toss3(\"DB has been closed.\");\n\t\t\t\treturn db;\n\t\t\t};\n\t\t\t/** Throws if ndx is not an integer or if it is out of range\n\t\t\tfor stmt.columnCount, else returns stmt.\n\t\t\t\n\t\t\tReminder: this will also fail after the statement is finalized\n\t\t\tbut the resulting error will be about an out-of-bounds column\n\t\t\tindex rather than a statement-is-finalized error.\n\t\t\t*/\n\t\t\tconst affirmColIndex = function(stmt, ndx) {\n\t\t\t\tif (ndx !== (ndx | 0) || ndx < 0 || ndx >= stmt.columnCount) toss3(\"Column index\", ndx, \"is out of range.\");\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\t/**\n\t\t\tExpects to be passed the `arguments` object from DB.exec(). Does\n\t\t\tthe argument processing/validation, throws on error, and returns\n\t\t\ta new object on success:\n\t\t\t\n\t\t\t{ sql: the SQL, opt: optionsObj, cbArg: function}\n\t\t\t\n\t\t\tThe opt object is a normalized copy of any passed to this\n\t\t\tfunction. The sql will be converted to a string if it is provided\n\t\t\tin one of the supported non-string formats.\n\t\t\t\n\t\t\tcbArg is only set if the opt.callback or opt.resultRows are set,\n\t\t\tin which case it's a function which expects to be passed the\n\t\t\tcurrent Stmt and returns the callback argument of the type\n\t\t\tindicated by the input arguments.\n\t\t\t*/\n\t\t\tconst parseExecArgs = function(db, args) {\n\t\t\t\tconst out = Object.create(null);\n\t\t\t\tout.opt = Object.create(null);\n\t\t\t\tswitch (args.length) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tif (\"string\" === typeof args[0] || util.isSQLableTypedArray(args[0])) out.sql = args[0];\n\t\t\t\t\t\telse if (Array.isArray(args[0])) out.sql = args[0];\n\t\t\t\t\t\telse if (args[0] && \"object\" === typeof args[0]) {\n\t\t\t\t\t\t\tout.opt = args[0];\n\t\t\t\t\t\t\tout.sql = out.opt.sql;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tout.sql = args[0];\n\t\t\t\t\t\tout.opt = args[1];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: toss3(\"Invalid argument count for exec().\");\n\t\t\t\t}\n\t\t\t\tout.sql = util.flexibleString(out.sql);\n\t\t\t\tif (\"string\" !== typeof out.sql) toss3(\"Missing SQL argument or unsupported SQL value type.\");\n\t\t\t\tconst opt = out.opt;\n\t\t\t\tswitch (opt.returnValue) {\n\t\t\t\t\tcase \"resultRows\":\n\t\t\t\t\t\tif (!opt.resultRows) opt.resultRows = [];\n\t\t\t\t\t\tout.returnVal = () => opt.resultRows;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"saveSql\":\n\t\t\t\t\t\tif (!opt.saveSql) opt.saveSql = [];\n\t\t\t\t\t\tout.returnVal = () => opt.saveSql;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase void 0:\n\t\t\t\t\tcase \"this\":\n\t\t\t\t\t\tout.returnVal = () => db;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: toss3(\"Invalid returnValue value:\", opt.returnValue);\n\t\t\t\t}\n\t\t\t\tif (!opt.callback && !opt.returnValue && void 0 !== opt.rowMode) {\n\t\t\t\t\tif (!opt.resultRows) opt.resultRows = [];\n\t\t\t\t\tout.returnVal = () => opt.resultRows;\n\t\t\t\t}\n\t\t\t\tif (opt.callback || opt.resultRows) switch (void 0 === opt.rowMode ? \"array\" : opt.rowMode) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tout.cbArg = (stmt, cache) => {\n\t\t\t\t\t\t\tif (!cache.columnNames) cache.columnNames = stmt.getColumnNames([]);\n\t\t\t\t\t\t\tconst row = stmt.get([]);\n\t\t\t\t\t\t\tconst rv = Object.create(null);\n\t\t\t\t\t\t\tfor (const i in cache.columnNames) rv[cache.columnNames[i]] = row[i];\n\t\t\t\t\t\t\treturn rv;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\tout.cbArg = (stmt) => stmt.get([]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"stmt\":\n\t\t\t\t\t\tif (Array.isArray(opt.resultRows)) toss3(\"exec(): invalid rowMode for a resultRows array: must\", \"be one of 'array', 'object',\", \"a result column number, or column name reference.\");\n\t\t\t\t\t\tout.cbArg = (stmt) => stmt;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (util.isInt32(opt.rowMode)) {\n\t\t\t\t\t\t\tout.cbArg = (stmt) => stmt.get(opt.rowMode);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (\"string\" === typeof opt.rowMode && opt.rowMode.length > 1 && \"$\" === opt.rowMode[0]) {\n\t\t\t\t\t\t\tconst $colName = opt.rowMode.substr(1);\n\t\t\t\t\t\t\tout.cbArg = (stmt) => {\n\t\t\t\t\t\t\t\tconst rc = stmt.get(Object.create(null))[$colName];\n\t\t\t\t\t\t\t\treturn void 0 === rc ? toss3(capi.SQLITE_NOTFOUND, \"exec(): unknown result column:\", $colName) : rc;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoss3(\"Invalid rowMode:\", opt.rowMode);\n\t\t\t\t}\n\t\t\t\treturn out;\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal impl of the DB.selectValue(), selectArray(), and\n\t\t\tselectObject() methods.\n\t\t\t*/\n\t\t\tconst __selectFirstRow = (db, sql, bind, ...getArgs) => {\n\t\t\t\tconst stmt = db.prepare(sql);\n\t\t\t\ttry {\n\t\t\t\t\tconst rc = stmt.bind(bind).step() ? stmt.get(...getArgs) : void 0;\n\t\t\t\t\tstmt.reset();\n\t\t\t\t\treturn rc;\n\t\t\t\t} finally {\n\t\t\t\t\tstmt.finalize();\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal impl of the DB.selectArrays() and selectObjects()\n\t\t\tmethods.\n\t\t\t*/\n\t\t\tconst __selectAll = (db, sql, bind, rowMode) => db.exec({\n\t\t\t\tsql,\n\t\t\t\tbind,\n\t\t\t\trowMode,\n\t\t\t\treturnValue: \"resultRows\"\n\t\t\t});\n\t\t\t/**\n\t\t\tExpects to be given a DB instance or an `sqlite3*` pointer (may\n\t\t\tbe null) and an sqlite3 API result code. If the result code is\n\t\t\tnot falsy, this function throws an SQLite3Error with an error\n\t\t\tmessage from sqlite3_errmsg(), using db (or, if db is-a DB,\n\t\t\tdb.pointer) as the db handle, or sqlite3_errstr() if db is\n\t\t\tfalsy. Note that if it's passed a non-error code like SQLITE_ROW\n\t\t\tor SQLITE_DONE, it will still throw but the error string might be\n\t\t\t\"Not an error.\" The various non-0 non-error codes need to be\n\t\t\tchecked for in client code where they are expected.\n\t\t\t\n\t\t\tThe thrown exception's `resultCode` property will be the value of\n\t\t\tthe second argument to this function.\n\t\t\t\n\t\t\tIf it does not throw, it returns its first argument.\n\t\t\t*/\n\t\t\tDB.checkRc = (db, resultCode) => checkSqlite3Rc(db, resultCode);\n\t\t\tDB.prototype = {\n\t\t\t\tisOpen: function() {\n\t\t\t\t\treturn !!this.pointer;\n\t\t\t\t},\n\t\t\t\taffirmOpen: function() {\n\t\t\t\t\treturn affirmDbOpen(this);\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\tconst pDb = this.pointer;\n\t\t\t\t\tif (pDb) {\n\t\t\t\t\t\tif (this.onclose && this.onclose.before instanceof Function) try {\n\t\t\t\t\t\t\tthis.onclose.before(this);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tObject.keys(__stmtMap.get(this)).forEach((k, s) => {\n\t\t\t\t\t\t\tif (s && s.pointer) try {\n\t\t\t\t\t\t\t\ts.finalize();\n\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t__ptrMap.delete(this);\n\t\t\t\t\t\t__stmtMap.delete(this);\n\t\t\t\t\t\tif (!__doesNotOwnHandle.delete(this)) capi.sqlite3_close_v2(pDb);\n\t\t\t\t\t\tif (this.onclose && this.onclose.after instanceof Function) try {\n\t\t\t\t\t\t\tthis.onclose.after(this);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tdelete this.filename;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tchanges: function(total = false, sixtyFour = false) {\n\t\t\t\t\tconst p = affirmDbOpen(this).pointer;\n\t\t\t\t\tif (total) return sixtyFour ? capi.sqlite3_total_changes64(p) : capi.sqlite3_total_changes(p);\n\t\t\t\t\telse return sixtyFour ? capi.sqlite3_changes64(p) : capi.sqlite3_changes(p);\n\t\t\t\t},\n\t\t\t\tdbFilename: function(dbName = \"main\") {\n\t\t\t\t\treturn capi.sqlite3_db_filename(affirmDbOpen(this).pointer, dbName);\n\t\t\t\t},\n\t\t\t\tdbName: function(dbNumber = 0) {\n\t\t\t\t\treturn capi.sqlite3_db_name(affirmDbOpen(this).pointer, dbNumber);\n\t\t\t\t},\n\t\t\t\tdbVfsName: function(dbName = 0) {\n\t\t\t\t\tlet rc;\n\t\t\t\t\tconst pVfs = capi.sqlite3_js_db_vfs(affirmDbOpen(this).pointer, dbName);\n\t\t\t\t\tif (pVfs) {\n\t\t\t\t\t\tconst v = new capi.sqlite3_vfs(pVfs);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\trc = wasm.cstrToJs(v.$zName);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tv.dispose();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn rc;\n\t\t\t\t},\n\t\t\t\tprepare: function(sql) {\n\t\t\t\t\taffirmDbOpen(this);\n\t\t\t\t\tconst stack = wasm.pstack.pointer;\n\t\t\t\t\tlet ppStmt, pStmt;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tppStmt = wasm.pstack.alloc(8);\n\t\t\t\t\t\tDB.checkRc(this, capi.sqlite3_prepare_v2(this.pointer, sql, -1, ppStmt, null));\n\t\t\t\t\t\tpStmt = wasm.peekPtr(ppStmt);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stack);\n\t\t\t\t\t}\n\t\t\t\t\tif (!pStmt) toss3(\"Cannot prepare empty SQL.\");\n\t\t\t\t\tconst stmt = new Stmt(this, pStmt, BindTypes);\n\t\t\t\t\t__stmtMap.get(this)[pStmt] = stmt;\n\t\t\t\t\treturn stmt;\n\t\t\t\t},\n\t\t\t\texec: function() {\n\t\t\t\t\taffirmDbOpen(this);\n\t\t\t\t\tconst arg = parseExecArgs(this, arguments);\n\t\t\t\t\tif (!arg.sql) return toss3(\"exec() requires an SQL string.\");\n\t\t\t\t\tconst opt = arg.opt;\n\t\t\t\t\tconst callback = opt.callback;\n\t\t\t\t\tconst resultRows = Array.isArray(opt.resultRows) ? opt.resultRows : void 0;\n\t\t\t\t\tlet stmt;\n\t\t\t\t\tlet bind = opt.bind;\n\t\t\t\t\tlet evalFirstResult = !!(arg.cbArg || opt.columnNames || resultRows);\n\t\t\t\t\tconst stack = wasm.scopedAllocPush();\n\t\t\t\t\tconst saveSql = Array.isArray(opt.saveSql) ? opt.saveSql : void 0;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst isTA = util.isSQLableTypedArray(arg.sql);\n\t\t\t\t\t\tlet sqlByteLen = isTA ? arg.sql.byteLength : wasm.jstrlen(arg.sql);\n\t\t\t\t\t\tconst ppStmt = wasm.scopedAlloc(2 * wasm.ptr.size + (sqlByteLen + 1));\n\t\t\t\t\t\tconst pzTail = wasm.ptr.add(ppStmt, wasm.ptr.size);\n\t\t\t\t\t\tlet pSql = wasm.ptr.add(pzTail, wasm.ptr.size);\n\t\t\t\t\t\tconst pSqlEnd = wasm.ptr.add(pSql, sqlByteLen);\n\t\t\t\t\t\tif (isTA) wasm.heap8().set(arg.sql, pSql);\n\t\t\t\t\t\telse wasm.jstrcpy(arg.sql, wasm.heap8(), pSql, sqlByteLen, false);\n\t\t\t\t\t\twasm.poke8(wasm.ptr.add(pSql, sqlByteLen), 0);\n\t\t\t\t\t\twhile (pSql && wasm.peek8(pSql)) {\n\t\t\t\t\t\t\twasm.pokePtr([ppStmt, pzTail], 0);\n\t\t\t\t\t\t\tDB.checkRc(this, capi.sqlite3_prepare_v3(this.pointer, pSql, sqlByteLen, 0, ppStmt, pzTail));\n\t\t\t\t\t\t\tconst pStmt = wasm.peekPtr(ppStmt);\n\t\t\t\t\t\t\tpSql = wasm.peekPtr(pzTail);\n\t\t\t\t\t\t\tsqlByteLen = Number(wasm.ptr.add(pSqlEnd, -pSql));\n\t\t\t\t\t\t\tif (!pStmt) continue;\n\t\t\t\t\t\t\tif (saveSql) saveSql.push(capi.sqlite3_sql(pStmt).trim());\n\t\t\t\t\t\t\tstmt = new Stmt(this, pStmt, BindTypes);\n\t\t\t\t\t\t\tif (bind && stmt.parameterCount) {\n\t\t\t\t\t\t\t\tstmt.bind(bind);\n\t\t\t\t\t\t\t\tbind = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (evalFirstResult && stmt.columnCount) {\n\t\t\t\t\t\t\t\tlet gotColNames = Array.isArray(opt.columnNames) ? 0 : 1;\n\t\t\t\t\t\t\t\tevalFirstResult = false;\n\t\t\t\t\t\t\t\tif (arg.cbArg || resultRows) {\n\t\t\t\t\t\t\t\t\tconst cbArgCache = Object.create(null);\n\t\t\t\t\t\t\t\t\tfor (; stmt.step(); __execLock.delete(stmt)) {\n\t\t\t\t\t\t\t\t\t\tif (0 === gotColNames++) stmt.getColumnNames(cbArgCache.columnNames = opt.columnNames || []);\n\t\t\t\t\t\t\t\t\t\t__execLock.add(stmt);\n\t\t\t\t\t\t\t\t\t\tconst row = arg.cbArg(stmt, cbArgCache);\n\t\t\t\t\t\t\t\t\t\tif (resultRows) resultRows.push(row);\n\t\t\t\t\t\t\t\t\t\tif (callback && false === callback.call(opt, row, stmt)) break;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t__execLock.delete(stmt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (0 === gotColNames) stmt.getColumnNames(opt.columnNames);\n\t\t\t\t\t\t\t} else stmt.step();\n\t\t\t\t\t\t\tstmt.reset().finalize();\n\t\t\t\t\t\t\tstmt = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (stmt) {\n\t\t\t\t\t\t\t__execLock.delete(stmt);\n\t\t\t\t\t\t\tstmt.finalize();\n\t\t\t\t\t\t}\n\t\t\t\t\t\twasm.scopedAllocPop(stack);\n\t\t\t\t\t}\n\t\t\t\t\treturn arg.returnVal();\n\t\t\t\t},\n\t\t\t\tcreateFunction: function f(name, xFunc, opt) {\n\t\t\t\t\tconst isFunc = (f) => f instanceof Function;\n\t\t\t\t\tswitch (arguments.length) {\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\topt = name;\n\t\t\t\t\t\t\tname = opt.name;\n\t\t\t\t\t\t\txFunc = opt.xFunc || 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tif (!isFunc(xFunc)) {\n\t\t\t\t\t\t\t\topt = xFunc;\n\t\t\t\t\t\t\t\txFunc = opt.xFunc || 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3: break;\n\t\t\t\t\t\tdefault: break;\n\t\t\t\t\t}\n\t\t\t\t\tif (!opt) opt = {};\n\t\t\t\t\tif (\"string\" !== typeof name) toss3(\"Invalid arguments: missing function name.\");\n\t\t\t\t\tlet xStep = opt.xStep || 0;\n\t\t\t\t\tlet xFinal = opt.xFinal || 0;\n\t\t\t\t\tconst xValue = opt.xValue || 0;\n\t\t\t\t\tconst xInverse = opt.xInverse || 0;\n\t\t\t\t\tlet isWindow = void 0;\n\t\t\t\t\tif (isFunc(xFunc)) {\n\t\t\t\t\t\tisWindow = false;\n\t\t\t\t\t\tif (isFunc(xStep) || isFunc(xFinal)) toss3(\"Ambiguous arguments: scalar or aggregate?\");\n\t\t\t\t\t\txStep = xFinal = null;\n\t\t\t\t\t} else if (isFunc(xStep)) {\n\t\t\t\t\t\tif (!isFunc(xFinal)) toss3(\"Missing xFinal() callback for aggregate or window UDF.\");\n\t\t\t\t\t\txFunc = null;\n\t\t\t\t\t} else if (isFunc(xFinal)) toss3(\"Missing xStep() callback for aggregate or window UDF.\");\n\t\t\t\t\telse toss3(\"Missing function-type properties.\");\n\t\t\t\t\tif (false === isWindow) {\n\t\t\t\t\t\tif (isFunc(xValue) || isFunc(xInverse)) toss3(\"xValue and xInverse are not permitted for non-window UDFs.\");\n\t\t\t\t\t} else if (isFunc(xValue)) {\n\t\t\t\t\t\tif (!isFunc(xInverse)) toss3(\"xInverse must be provided if xValue is.\");\n\t\t\t\t\t\tisWindow = true;\n\t\t\t\t\t} else if (isFunc(xInverse)) toss3(\"xValue must be provided if xInverse is.\");\n\t\t\t\t\tconst pApp = opt.pApp;\n\t\t\t\t\tif (void 0 !== pApp && null !== pApp && !wasm.isPtr(pApp)) toss3(\"Invalid value for pApp property. Must be a legal WASM pointer value.\");\n\t\t\t\t\tconst xDestroy = opt.xDestroy || 0;\n\t\t\t\t\tif (xDestroy && !isFunc(xDestroy)) toss3(\"xDestroy property must be a function.\");\n\t\t\t\t\tlet fFlags = 0;\n\t\t\t\t\tif (getOwnOption(opt, \"deterministic\")) fFlags |= capi.SQLITE_DETERMINISTIC;\n\t\t\t\t\tif (getOwnOption(opt, \"directOnly\")) fFlags |= capi.SQLITE_DIRECTONLY;\n\t\t\t\t\tif (getOwnOption(opt, \"innocuous\")) fFlags |= capi.SQLITE_INNOCUOUS;\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t\tconst xArity = xFunc || xStep;\n\t\t\t\t\tconst arity = getOwnOption(opt, \"arity\");\n\t\t\t\t\tconst arityArg = \"number\" === typeof arity ? arity : xArity.length ? xArity.length - 1 : 0;\n\t\t\t\t\tlet rc;\n\t\t\t\t\tif (isWindow) rc = capi.sqlite3_create_window_function(this.pointer, name, arityArg, capi.SQLITE_UTF8 | fFlags, pApp || 0, xStep, xFinal, xValue, xInverse, xDestroy);\n\t\t\t\t\telse rc = capi.sqlite3_create_function_v2(this.pointer, name, arityArg, capi.SQLITE_UTF8 | fFlags, pApp || 0, xFunc, xStep, xFinal, xDestroy);\n\t\t\t\t\tDB.checkRc(this, rc);\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tselectValue: function(sql, bind, asType) {\n\t\t\t\t\treturn __selectFirstRow(this, sql, bind, 0, asType);\n\t\t\t\t},\n\t\t\t\tselectValues: function(sql, bind, asType) {\n\t\t\t\t\tconst stmt = this.prepare(sql), rc = [];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tstmt.bind(bind);\n\t\t\t\t\t\twhile (stmt.step()) rc.push(stmt.get(0, asType));\n\t\t\t\t\t\tstmt.reset();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tstmt.finalize();\n\t\t\t\t\t}\n\t\t\t\t\treturn rc;\n\t\t\t\t},\n\t\t\t\tselectArray: function(sql, bind) {\n\t\t\t\t\treturn __selectFirstRow(this, sql, bind, []);\n\t\t\t\t},\n\t\t\t\tselectObject: function(sql, bind) {\n\t\t\t\t\treturn __selectFirstRow(this, sql, bind, {});\n\t\t\t\t},\n\t\t\t\tselectArrays: function(sql, bind) {\n\t\t\t\t\treturn __selectAll(this, sql, bind, \"array\");\n\t\t\t\t},\n\t\t\t\tselectObjects: function(sql, bind) {\n\t\t\t\t\treturn __selectAll(this, sql, bind, \"object\");\n\t\t\t\t},\n\t\t\t\topenStatementCount: function() {\n\t\t\t\t\treturn this.pointer ? Object.keys(__stmtMap.get(this)).length : 0;\n\t\t\t\t},\n\t\t\t\ttransaction: function(callback) {\n\t\t\t\t\tlet opener = \"BEGIN\";\n\t\t\t\t\tif (arguments.length > 1) {\n\t\t\t\t\t\tif (/[^a-zA-Z]/.test(arguments[0])) toss3(capi.SQLITE_MISUSE, \"Invalid argument for BEGIN qualifier.\");\n\t\t\t\t\t\topener += \" \" + arguments[0];\n\t\t\t\t\t\tcallback = arguments[1];\n\t\t\t\t\t}\n\t\t\t\t\taffirmDbOpen(this).exec(opener);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = callback(this);\n\t\t\t\t\t\tthis.exec(\"COMMIT\");\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.exec(\"ROLLBACK\");\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsavepoint: function(callback) {\n\t\t\t\t\taffirmDbOpen(this).exec(\"SAVEPOINT oo1\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = callback(this);\n\t\t\t\t\t\tthis.exec(\"RELEASE oo1\");\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.exec(\"ROLLBACK to SAVEPOINT oo1; RELEASE SAVEPOINT oo1\");\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcheckRc: function(resultCode) {\n\t\t\t\t\treturn checkSqlite3Rc(this, resultCode);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns a new oo1.DB instance which wraps the given (sqlite3*)\n\t\t\tWASM pointer, optionally with or without taking over ownership of\n\t\t\tthat pointer.\n\t\t\t\n\t\t\tThe first argument must be either a non-NULL (sqlite3*) WASM\n\t\t\tpointer.\n\t\t\t\n\t\t\tThe second argument, defaulting to false, specifies ownership of\n\t\t\tthe first argument. If it is truthy, the returned object will\n\t\t\tpass that pointer to sqlite3_close() when its close() method is\n\t\t\tcalled, otherwise it will not.\n\t\t\t\n\t\t\tThrows if pDb is not a non-0 WASM pointer.\n\t\t\t\n\t\t\tThe caller MUST GUARANTEE that the passed-in handle will outlive\n\t\t\tthe returned object, i.e. that it will not be closed. If it is closed,\n\t\t\tthis object will hold a stale pointer and results are undefined.\n\t\t\t\n\t\t\tAside from its lifetime, the proxy is to be treated as any other\n\t\t\tDB instance, including the requirement of calling close() on\n\t\t\tit. close() will free up internal resources owned by the proxy\n\t\t\tand disassociate the proxy from that handle but will not\n\t\t\tactually close the proxied db handle unless this function is\n\t\t\tpassed a thruthy second argument.\n\t\t\t\n\t\t\tTo stress:\n\t\t\t\n\t\t\t- DO NOT call sqlite3_close() (or similar) on the being-proxied\n\t\t\tpointer while a proxy is active.\n\t\t\t\n\t\t\t- ALWAYS eventually call close() on the returned object. If the\n\t\t\tproxy does not own the underlying handle then its MUST be\n\t\t\tclosed BEFORE the being-proxied handle is closed.\n\t\t\t\n\t\t\tDesign notes:\n\t\t\t\n\t\t\t- wrapHandle() \"could\" accept a DB object instance as its first\n\t\t\targument and proxy thatDb.pointer but there is currently no use\n\t\t\tcase where doing so would be useful, so it does not allow\n\t\t\tthat. That restriction may be lifted in a future version.\n\t\t\t*/\n\t\t\tDB.wrapHandle = function(pDb, takeOwnership = false) {\n\t\t\t\tif (!pDb || !wasm.isPtr(pDb)) throw new sqlite3.SQLite3Error(capi.SQLITE_MISUSE, \"Argument must be a WASM sqlite3 pointer\");\n\t\t\t\treturn new DB({\n\t\t\t\t\t\"sqlite3*\": pDb,\n\t\t\t\t\t\"sqlite3*:takeOwnership\": !!takeOwnership\n\t\t\t\t});\n\t\t\t};\n\t\t\t/** Throws if the given Stmt has been finalized, else stmt is\n\t\t\treturned. */\n\t\t\tconst affirmStmtOpen = function(stmt) {\n\t\t\t\tif (!stmt.pointer) toss3(\"Stmt has been closed.\");\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\t/** Returns an opaque truthy value from the BindTypes\n\t\t\tenum if v's type is a valid bindable type, else\n\t\t\treturns a falsy value. As a special case, a value of\n\t\t\tundefined is treated as a bind type of null. */\n\t\t\tconst isSupportedBindType = function(v) {\n\t\t\t\tlet t = BindTypes[null === v || void 0 === v ? \"null\" : typeof v];\n\t\t\t\tswitch (t) {\n\t\t\t\t\tcase BindTypes.boolean:\n\t\t\t\t\tcase BindTypes.null:\n\t\t\t\t\tcase BindTypes.number:\n\t\t\t\t\tcase BindTypes.string: return t;\n\t\t\t\t\tcase BindTypes.bigint: return wasm.bigIntEnabled ? t : void 0;\n\t\t\t\t\tdefault: return util.isBindableTypedArray(v) ? BindTypes.blob : void 0;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tIf isSupportedBindType(v) returns a truthy value, this\n\t\t\tfunction returns that value, else it throws.\n\t\t\t*/\n\t\t\tconst affirmSupportedBindType = function(v) {\n\t\t\t\treturn isSupportedBindType(v) || toss3(\"Unsupported bind() argument type:\", typeof v);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf key is a number and within range of stmt's bound parameter\n\t\t\tcount, key is returned.\n\t\t\t\n\t\t\tIf key is not a number then it must be a JS string (not a WASM\n\t\t\tstring) and it is checked against named parameters. If a match is\n\t\t\tfound, its index is returned.\n\t\t\t\n\t\t\tElse it throws.\n\t\t\t*/\n\t\t\tconst affirmParamIndex = function(stmt, key) {\n\t\t\t\tconst n = \"number\" === typeof key ? key : capi.sqlite3_bind_parameter_index(stmt.pointer, key);\n\t\t\t\tif (0 === n || !util.isInt32(n)) toss3(\"Invalid bind() parameter name: \" + key);\n\t\t\t\telse if (n < 1 || n > stmt.parameterCount) toss3(\"Bind index\", key, \"is out of range.\");\n\t\t\t\treturn n;\n\t\t\t};\n\t\t\t/**\n\t\t\tEach Stmt object which is \"locked\" by DB.exec() gets an entry\n\t\t\there to note that \"lock\".\n\t\t\t\n\t\t\tThe reason this is in place is because exec({callback:...})'s\n\t\t\tcallback gets access to the Stmt objects created internally by\n\t\t\texec() but it must not use certain Stmt APIs.\n\t\t\t*/\n\t\t\tconst __execLock = /* @__PURE__ */ new Set();\n\t\t\t/**\n\t\t\tThis is a Stmt.get() counterpart of __execLock. Each time\n\t\t\tStmt.step() returns true, the statement is added to this set,\n\t\t\tindicating that Stmt.get() is legal. Stmt APIs which invalidate\n\t\t\tthat status remove the Stmt object from this set, which will\n\t\t\tcause Stmt.get() to throw with a descriptive error message\n\t\t\tinstead of a more generic \"API misuse\" if we were to allow that\n\t\t\tcall to reach the C API.\n\t\t\t*/\n\t\t\tconst __stmtMayGet = /* @__PURE__ */ new Set();\n\t\t\t/**\n\t\t\tStmt APIs which are prohibited on locked objects must call\n\t\t\taffirmNotLockedByExec() before doing any work.\n\t\t\t\n\t\t\tIf __execLock.has(stmt) is truthy, this throws an exception\n\t\t\tcomplaining that the 2nd argument (an operation name,\n\t\t\te.g. \"bind()\") is not legal while the statement is \"locked\".\n\t\t\tLocking happens before an exec()-like callback is passed a\n\t\t\tstatement, to ensure that the callback does not mutate or\n\t\t\tfinalize the statement. If it does not throw, it returns stmt.\n\t\t\t*/\n\t\t\tconst affirmNotLockedByExec = function(stmt, currentOpName) {\n\t\t\t\tif (__execLock.has(stmt)) toss3(\"Operation is illegal when statement is locked:\", currentOpName);\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\t/**\n\t\t\tBinds a single bound parameter value on the given stmt at the\n\t\t\tgiven index (numeric or named) using the given bindType (see\n\t\t\tthe BindTypes enum) and value. Throws on error. Returns stmt on\n\t\t\tsuccess.\n\t\t\t*/\n\t\t\tconst bindOne = function f(stmt, ndx, bindType, val) {\n\t\t\t\taffirmNotLockedByExec(affirmStmtOpen(stmt), \"bind()\");\n\t\t\t\tif (!f._) {\n\t\t\t\t\tf._tooBigInt = (v) => toss3(\"BigInt value is too big to store without precision loss:\", v);\n\t\t\t\t\tf._ = { string: function(stmt, ndx, val, asBlob) {\n\t\t\t\t\t\tconst [pStr, n] = wasm.allocCString(val, true);\n\t\t\t\t\t\treturn (asBlob ? capi.sqlite3_bind_blob : capi.sqlite3_bind_text)(stmt.pointer, ndx, pStr, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t} };\n\t\t\t\t}\n\t\t\t\taffirmSupportedBindType(val);\n\t\t\t\tndx = affirmParamIndex(stmt, ndx);\n\t\t\t\tlet rc = 0;\n\t\t\t\tswitch (null === val || void 0 === val ? BindTypes.null : bindType) {\n\t\t\t\t\tcase BindTypes.null:\n\t\t\t\t\t\trc = capi.sqlite3_bind_null(stmt.pointer, ndx);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BindTypes.string:\n\t\t\t\t\t\trc = f._.string(stmt, ndx, val, false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BindTypes.number: {\n\t\t\t\t\t\tlet m;\n\t\t\t\t\t\tif (util.isInt32(val)) m = capi.sqlite3_bind_int;\n\t\t\t\t\t\telse if (\"bigint\" === typeof val) if (!util.bigIntFits64(val)) f._tooBigInt(val);\n\t\t\t\t\t\telse if (wasm.bigIntEnabled) m = capi.sqlite3_bind_int64;\n\t\t\t\t\t\telse if (util.bigIntFitsDouble(val)) {\n\t\t\t\t\t\t\tval = Number(val);\n\t\t\t\t\t\t\tm = capi.sqlite3_bind_double;\n\t\t\t\t\t\t} else f._tooBigInt(val);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tval = Number(val);\n\t\t\t\t\t\t\tif (wasm.bigIntEnabled && Number.isInteger(val)) m = capi.sqlite3_bind_int64;\n\t\t\t\t\t\t\telse m = capi.sqlite3_bind_double;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trc = m(stmt.pointer, ndx, val);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase BindTypes.boolean:\n\t\t\t\t\t\trc = capi.sqlite3_bind_int(stmt.pointer, ndx, val ? 1 : 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BindTypes.blob: {\n\t\t\t\t\t\tif (\"string\" === typeof val) {\n\t\t\t\t\t\t\trc = f._.string(stmt, ndx, val, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (val instanceof ArrayBuffer) val = new Uint8Array(val);\n\t\t\t\t\t\telse if (!util.isBindableTypedArray(val)) toss3(\"Binding a value as a blob requires\", \"that it be a string, Uint8Array, Int8Array, or ArrayBuffer.\");\n\t\t\t\t\t\tconst pBlob = wasm.alloc(val.byteLength || 1);\n\t\t\t\t\t\twasm.heap8().set(val.byteLength ? val : [0], Number(pBlob));\n\t\t\t\t\t\trc = capi.sqlite3_bind_blob(stmt.pointer, ndx, pBlob, val.byteLength, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsqlite3.config.warn(\"Unsupported bind() argument type:\", val);\n\t\t\t\t\t\ttoss3(\"Unsupported bind() argument type: \" + typeof val);\n\t\t\t\t}\n\t\t\t\tif (rc) DB.checkRc(stmt.db.pointer, rc);\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\tStmt.prototype = {\n\t\t\t\tfinalize: function() {\n\t\t\t\t\tconst ptr = this.pointer;\n\t\t\t\t\tif (ptr) {\n\t\t\t\t\t\taffirmNotLockedByExec(this, \"finalize()\");\n\t\t\t\t\t\tconst rc = __doesNotOwnHandle.delete(this) ? 0 : capi.sqlite3_finalize(ptr);\n\t\t\t\t\t\tdelete __stmtMap.get(this.db)[ptr];\n\t\t\t\t\t\t__ptrMap.delete(this);\n\t\t\t\t\t\t__execLock.delete(this);\n\t\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\t\tdelete this.parameterCount;\n\t\t\t\t\t\tdelete this.db;\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclearBindings: function() {\n\t\t\t\t\taffirmNotLockedByExec(affirmStmtOpen(this), \"clearBindings()\");\n\t\t\t\t\tcapi.sqlite3_clear_bindings(this.pointer);\n\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\treset: function(alsoClearBinds) {\n\t\t\t\t\taffirmNotLockedByExec(this, \"reset()\");\n\t\t\t\t\tif (alsoClearBinds) this.clearBindings();\n\t\t\t\t\tconst rc = capi.sqlite3_reset(affirmStmtOpen(this).pointer);\n\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\tcheckSqlite3Rc(this.db, rc);\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tbind: function() {\n\t\t\t\t\taffirmStmtOpen(this);\n\t\t\t\t\tlet ndx, arg;\n\t\t\t\t\tswitch (arguments.length) {\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tndx = 1;\n\t\t\t\t\t\t\targ = arguments[0];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tndx = arguments[0];\n\t\t\t\t\t\t\targ = arguments[1];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: toss3(\"Invalid bind() arguments.\");\n\t\t\t\t\t}\n\t\t\t\t\tif (void 0 === arg) return this;\n\t\t\t\t\telse if (!this.parameterCount) toss3(\"This statement has no bindable parameters.\");\n\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\tif (null === arg) return bindOne(this, ndx, BindTypes.null, arg);\n\t\t\t\t\telse if (Array.isArray(arg)) {\n\t\t\t\t\t\tif (1 !== arguments.length) toss3(\"When binding an array, an index argument is not permitted.\");\n\t\t\t\t\t\targ.forEach((v, i) => bindOne(this, i + 1, affirmSupportedBindType(v), v));\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t} else if (arg instanceof ArrayBuffer) arg = new Uint8Array(arg);\n\t\t\t\t\tif (\"object\" === typeof arg && !util.isBindableTypedArray(arg)) {\n\t\t\t\t\t\tif (1 !== arguments.length) toss3(\"When binding an object, an index argument is not permitted.\");\n\t\t\t\t\t\tObject.keys(arg).forEach((k) => bindOne(this, k, affirmSupportedBindType(arg[k]), arg[k]));\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t} else return bindOne(this, ndx, affirmSupportedBindType(arg), arg);\n\t\t\t\t\ttoss3(\"Should not reach this point.\");\n\t\t\t\t},\n\t\t\t\tbindAsBlob: function(ndx, arg) {\n\t\t\t\t\taffirmStmtOpen(this);\n\t\t\t\t\tif (1 === arguments.length) {\n\t\t\t\t\t\targ = ndx;\n\t\t\t\t\t\tndx = 1;\n\t\t\t\t\t}\n\t\t\t\t\tconst t = affirmSupportedBindType(arg);\n\t\t\t\t\tif (BindTypes.string !== t && BindTypes.blob !== t && BindTypes.null !== t) toss3(\"Invalid value type for bindAsBlob()\");\n\t\t\t\t\treturn bindOne(this, ndx, BindTypes.blob, arg);\n\t\t\t\t},\n\t\t\t\tstep: function() {\n\t\t\t\t\taffirmNotLockedByExec(this, \"step()\");\n\t\t\t\t\tconst rc = capi.sqlite3_step(affirmStmtOpen(this).pointer);\n\t\t\t\t\tswitch (rc) {\n\t\t\t\t\t\tcase capi.SQLITE_DONE:\n\t\t\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\tcase capi.SQLITE_ROW:\n\t\t\t\t\t\t\t__stmtMayGet.add(this);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\t\t\tsqlite3.config.warn(\"sqlite3_step() rc=\", rc, capi.sqlite3_js_rc_str(rc), \"SQL =\", capi.sqlite3_sql(this.pointer));\n\t\t\t\t\t\t\tDB.checkRc(this.db.pointer, rc);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstepReset: function() {\n\t\t\t\t\tthis.step();\n\t\t\t\t\treturn this.reset();\n\t\t\t\t},\n\t\t\t\tstepFinalize: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = this.step();\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tthis.finalize();\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tget: function(ndx, asType) {\n\t\t\t\t\tif (!__stmtMayGet.has(affirmStmtOpen(this))) toss3(\"Stmt.step() has not (recently) returned true.\");\n\t\t\t\t\tif (Array.isArray(ndx)) {\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tconst n = this.columnCount;\n\t\t\t\t\t\twhile (i < n) ndx[i] = this.get(i++);\n\t\t\t\t\t\treturn ndx;\n\t\t\t\t\t} else if (ndx && \"object\" === typeof ndx) {\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tconst n = this.columnCount;\n\t\t\t\t\t\twhile (i < n) ndx[capi.sqlite3_column_name(this.pointer, i)] = this.get(i++);\n\t\t\t\t\t\treturn ndx;\n\t\t\t\t\t}\n\t\t\t\t\taffirmColIndex(this, ndx);\n\t\t\t\t\tswitch (void 0 === asType ? capi.sqlite3_column_type(this.pointer, ndx) : asType) {\n\t\t\t\t\t\tcase capi.SQLITE_NULL: return null;\n\t\t\t\t\t\tcase capi.SQLITE_INTEGER: if (wasm.bigIntEnabled) {\n\t\t\t\t\t\t\tconst rc = capi.sqlite3_column_int64(this.pointer, ndx);\n\t\t\t\t\t\t\tif (rc >= Number.MIN_SAFE_INTEGER && rc <= Number.MAX_SAFE_INTEGER) return Number(rc).valueOf();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst rc = capi.sqlite3_column_double(this.pointer, ndx);\n\t\t\t\t\t\t\tif (rc > Number.MAX_SAFE_INTEGER || rc < Number.MIN_SAFE_INTEGER) toss3(\"Integer is out of range for JS integer range: \" + rc);\n\t\t\t\t\t\t\treturn util.isInt32(rc) ? rc | 0 : rc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase capi.SQLITE_FLOAT: return capi.sqlite3_column_double(this.pointer, ndx);\n\t\t\t\t\t\tcase capi.SQLITE_TEXT: return capi.sqlite3_column_text(this.pointer, ndx);\n\t\t\t\t\t\tcase capi.SQLITE_BLOB: {\n\t\t\t\t\t\t\tconst n = capi.sqlite3_column_bytes(this.pointer, ndx), ptr = capi.sqlite3_column_blob(this.pointer, ndx), rc = new Uint8Array(n);\n\t\t\t\t\t\t\tif (n) {\n\t\t\t\t\t\t\t\trc.set(wasm.heap8u().slice(Number(ptr), Number(ptr) + n), 0);\n\t\t\t\t\t\t\t\tif (this.db._blobXfer instanceof Array) this.db._blobXfer.push(rc.buffer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: toss3(\"Don't know how to translate\", \"type of result column #\" + ndx + \".\");\n\t\t\t\t\t}\n\t\t\t\t\ttoss3(\"Not reached.\");\n\t\t\t\t},\n\t\t\t\tgetInt: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_INTEGER);\n\t\t\t\t},\n\t\t\t\tgetFloat: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_FLOAT);\n\t\t\t\t},\n\t\t\t\tgetString: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_TEXT);\n\t\t\t\t},\n\t\t\t\tgetBlob: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_BLOB);\n\t\t\t\t},\n\t\t\t\tgetJSON: function(ndx) {\n\t\t\t\t\tconst s = this.get(ndx, capi.SQLITE_STRING);\n\t\t\t\t\treturn null === s ? s : JSON.parse(s);\n\t\t\t\t},\n\t\t\t\tgetColumnName: function(ndx) {\n\t\t\t\t\treturn capi.sqlite3_column_name(affirmColIndex(affirmStmtOpen(this), ndx).pointer, ndx);\n\t\t\t\t},\n\t\t\t\tgetColumnNames: function(tgt = []) {\n\t\t\t\t\taffirmColIndex(affirmStmtOpen(this), 0);\n\t\t\t\t\tconst n = this.columnCount;\n\t\t\t\t\tfor (let i = 0; i < n; ++i) tgt.push(capi.sqlite3_column_name(this.pointer, i));\n\t\t\t\t\treturn tgt;\n\t\t\t\t},\n\t\t\t\tgetParamIndex: function(name) {\n\t\t\t\t\treturn affirmStmtOpen(this).parameterCount ? capi.sqlite3_bind_parameter_index(this.pointer, name) : void 0;\n\t\t\t\t},\n\t\t\t\tgetParamName: function(ndx) {\n\t\t\t\t\treturn affirmStmtOpen(this).parameterCount ? capi.sqlite3_bind_parameter_name(this.pointer, ndx) : void 0;\n\t\t\t\t},\n\t\t\t\tisBusy: function() {\n\t\t\t\t\treturn 0 !== capi.sqlite3_stmt_busy(affirmStmtOpen(this));\n\t\t\t\t},\n\t\t\t\tisReadOnly: function() {\n\t\t\t\t\treturn 0 !== capi.sqlite3_stmt_readonly(affirmStmtOpen(this));\n\t\t\t\t}\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst prop = {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn __ptrMap.get(this);\n\t\t\t\t\t},\n\t\t\t\t\tset: () => toss3(\"The pointer property is read-only.\")\n\t\t\t\t};\n\t\t\t\tObject.defineProperty(Stmt.prototype, \"pointer\", prop);\n\t\t\t\tObject.defineProperty(DB.prototype, \"pointer\", prop);\n\t\t\t}\n\t\t\t/**\n\t\t\tStmt.columnCount is an interceptor for sqlite3_column_count().\n\t\t\t\n\t\t\tThis requires an unfortunate performance hit compared to caching\n\t\t\tcolumnCount when the Stmt is created/prepared (as was done in\n\t\t\tSQLite <=3.42.0), but is necessary in order to handle certain\n\t\t\tcorner cases, as described in\n\t\t\thttps://sqlite.org/forum/forumpost/7774b773937cbe0a.\n\t\t\t*/\n\t\t\tObject.defineProperty(Stmt.prototype, \"columnCount\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: function() {\n\t\t\t\t\treturn capi.sqlite3_column_count(this.pointer);\n\t\t\t\t},\n\t\t\t\tset: () => toss3(\"The columnCount property is read-only.\")\n\t\t\t});\n\t\t\tObject.defineProperty(Stmt.prototype, \"parameterCount\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: function() {\n\t\t\t\t\treturn capi.sqlite3_bind_parameter_count(this.pointer);\n\t\t\t\t},\n\t\t\t\tset: () => toss3(\"The parameterCount property is read-only.\")\n\t\t\t});\n\t\t\t/**\n\t\t\tThe Stmt counterpart of oo1.DB.wrapHandle(), this creates a Stmt\n\t\t\tinstance which wraps a WASM (sqlite3_stmt*) in the oo1 API,\n\t\t\toptionally with or without taking over ownership of that pointer.\n\t\t\t\n\t\t\tThe first argument must be an oo1.DB instance[^1].\n\t\t\t\n\t\t\tThe second argument must be a valid WASM (sqlite3_stmt*), as\n\t\t\tproduced by sqlite3_prepare_v2() and sqlite3_prepare_v3().\n\t\t\t\n\t\t\tThe third argument, defaulting to false, specifies whether the\n\t\t\treturned Stmt object takes over ownership of the underlying\n\t\t\t(sqlite3_stmt*). If true, the returned object's finalize() method\n\t\t\twill finalize that handle, else it will not. If it is false,\n\t\t\townership of pStmt is unchanged and pStmt MUST outlive the\n\t\t\treturned object or results are undefined.\n\t\t\t\n\t\t\tThis function throws if the arguments are invalid. On success it\n\t\t\treturns a new Stmt object which wraps the given statement\n\t\t\tpointer.\n\t\t\t\n\t\t\tLike all Stmt objects, the finalize() method must eventually be\n\t\t\tcalled on the returned object to free up internal resources,\n\t\t\tregardless of whether this function's third argument is true or\n\t\t\tnot.\n\t\t\t\n\t\t\t[^1]: The first argument cannot be a (sqlite3*) because the\n\t\t\tresulting Stmt object requires a parent DB object. It is not yet\n\t\t\tdetermined whether it would be of general benefit to refactor the\n\t\t\tDB/Stmt pair internals to communicate in terms of the underlying\n\t\t\t(sqlite3*) rather than a DB object. If so, we could laxen the\n\t\t\tfirst argument's requirement and allow an (sqlite3*). Because\n\t\t\tDB.wrapHandle() enables multiple DB objects to proxy the same\n\t\t\t(sqlite3*), we cannot unambiguously translate the first arugment\n\t\t\tfrom (sqlite3*) to DB instances for us with this function's first\n\t\t\targument.\n\t\t\t*/\n\t\t\tStmt.wrapHandle = function(oo1db, pStmt, takeOwnership = false) {\n\t\t\t\tif (!(oo1db instanceof DB) || !oo1db.pointer) throw new sqlite3.SQLite3Error(sqlite3.SQLITE_MISUSE, \"First argument must be an opened sqlite3.oo1.DB instance\");\n\t\t\t\tif (!pStmt || !wasm.isPtr(pStmt)) throw new sqlite3.SQLite3Error(sqlite3.SQLITE_MISUSE, \"Second argument must be a WASM sqlite3_stmt pointer\");\n\t\t\t\treturn new Stmt(oo1db, pStmt, BindTypes, !!takeOwnership);\n\t\t\t};\n\t\t\t/** The OO API's public namespace. */\n\t\t\tsqlite3.oo1 = {\n\t\t\t\tDB,\n\t\t\t\tStmt\n\t\t\t};\n\t\t});\n\t\t/**\n\t\t2022-07-22\n\t\t\n\t\tThe author disclaims copyright to this source code. In place of a\n\t\tlegal notice, here is a blessing:\n\t\t\n\t\t* May you do good and not evil.\n\t\t* May you find forgiveness for yourself and forgive others.\n\t\t* May you share freely, never taking more than you give.\n\t\t\n\t\t***********************************************************************\n\t\t\n\t\tThis file implements the initializer for SQLite's \"Worker API #1\", a\n\t\tvery basic DB access API intended to be scripted from a main window\n\t\tthread via Worker-style messages. Because of limitations in that\n\t\ttype of communication, this API is minimalistic and only capable of\n\t\tserving relatively basic DB requests (e.g. it cannot process nested\n\t\tquery loops concurrently).\n\t\t\n\t\tThis file requires that the core C-style sqlite3 API and OO API #1\n\t\thave been loaded.\n\t\t*/\n\t\t/**\n\t\tsqlite3.initWorker1API() implements a Worker-based wrapper around\n\t\tSQLite3 OO API #1, colloquially known as \"Worker API #1\".\n\t\t\n\t\tIn order to permit this API to be loaded in worker threads without\n\t\tautomatically registering onmessage handlers, initializing the\n\t\tworker API requires calling initWorker1API(). If this function is\n\t\tcalled from a non-worker thread then it throws an exception. It\n\t\tmust only be called once per Worker.\n\t\t\n\t\tWhen initialized, it installs message listeners to receive Worker\n\t\tmessages and then it posts a message in the form:\n\t\t\n\t\t```\n\t\t{type:'sqlite3-api', result:'worker1-ready'}\n\t\t```\n\t\t\n\t\tto let the client know that it has been initialized. Clients may\n\t\toptionally depend on this function not returning until\n\t\tinitialization is complete, as the initialization is synchronous.\n\t\tIn some contexts, however, listening for the above message is\n\t\ta better fit.\n\t\t\n\t\tNote that the worker-based interface can be slightly quirky because\n\t\tof its async nature. In particular, any number of messages may be posted\n\t\tto the worker before it starts handling any of them. If, e.g., an\n\t\t\"open\" operation fails, any subsequent messages will fail. The\n\t\tPromise-based wrapper for this API (`sqlite3-worker1-promiser.js`)\n\t\tis more comfortable to use in that regard.\n\t\t\n\t\tThe documentation for the input and output worker messages for\n\t\tthis API follows...\n\t\t\n\t\t====================================================================\n\t\tCommon message format...\n\t\t\n\t\tEach message posted to the worker has an operation-independent\n\t\tenvelope and operation-dependent arguments:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: string, // one of: 'open', 'close', 'exec', 'export', 'config-get'\n\t\t\n\t\tmessageId: OPTIONAL arbitrary value. The worker will copy it as-is\n\t\tinto response messages to assist in client-side dispatching.\n\t\t\n\t\tdbId: a db identifier string (returned by 'open') which tells the\n\t\toperation which database instance to work on. If not provided, the\n\t\tfirst-opened db is used. This is an \"opaque\" value, with no\n\t\tinherently useful syntax or information. Its value is subject to\n\t\tchange with any given build of this API and cannot be used as a\n\t\tbasis for anything useful beyond its one intended purpose.\n\t\t\n\t\targs: ...operation-dependent arguments...\n\t\t\n\t\t// the framework may add other properties for testing or debugging\n\t\t// purposes.\n\t\t\n\t\t}\n\t\t```\n\t\t\n\t\tResponse messages, posted back to the main thread, look like:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: string. Same as above except for error responses, which have the type\n\t\t'error',\n\t\t\n\t\tmessageId: same value, if any, provided by the inbound message\n\t\t\n\t\tdbId: the id of the db which was operated on, if any, as returned\n\t\tby the corresponding 'open' operation.\n\t\t\n\t\tresult: ...operation-dependent result...\n\t\t\n\t\t}\n\t\t```\n\t\t\n\t\t====================================================================\n\t\tError responses\n\t\t\n\t\tErrors are reported messages in an operation-independent format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"error\",\n\t\t\n\t\tmessageId: ...as above...,\n\t\t\n\t\tdbId: ...as above...\n\t\t\n\t\tresult: {\n\t\t\n\t\toperation: type of the triggering operation: 'open', 'close', ...\n\t\t\n\t\tmessage: ...error message text...\n\t\t\n\t\terrorClass: string. The ErrorClass.name property from the thrown exception.\n\t\t\n\t\tinput: the message object which triggered the error.\n\t\t\n\t\tstack: _if available_, a stack trace array.\n\t\t\n\t\t}\n\t\t\n\t\t}\n\t\t```\n\t\t\n\t\t\n\t\t====================================================================\n\t\t\"config-get\"\n\t\t\n\t\tThis operation fetches the serializable parts of the sqlite3 API\n\t\tconfiguration.\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"config-get\",\n\t\tmessageId: ...as above...,\n\t\targs: currently ignored and may be elided.\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"config-get\",\n\t\tmessageId: ...as above...,\n\t\tresult: {\n\t\t\n\t\tversion: sqlite3.version object\n\t\t\n\t\tbigIntEnabled: bool. True if BigInt support is enabled.\n\t\t\n\t\tvfsList: result of sqlite3.capi.sqlite3_js_vfs_list()\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t\n\t\t====================================================================\n\t\t\"open\" a database\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"open\",\n\t\tmessageId: ...as above...,\n\t\targs:{\n\t\t\n\t\tfilename [=\":memory:\" or \"\" (unspecified)]: the db filename.\n\t\tSee the sqlite3.oo1.DB constructor for peculiarities and\n\t\ttransformations,\n\t\t\n\t\tvfs: sqlite3_vfs name. Ignored if filename is \":memory:\" or \"\".\n\t\tThis may change how the given filename is resolved.\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"open\",\n\t\tmessageId: ...as above...,\n\t\tresult: {\n\t\tfilename: db filename, possibly differing from the input.\n\t\t\n\t\tdbId: an opaque ID value which must be passed in the message\n\t\tenvelope to other calls in this API to tell them which db to\n\t\tuse. If it is not provided to future calls, they will default to\n\t\toperating on the least-recently-opened db. This property is, for\n\t\tAPI consistency's sake, also part of the containing message\n\t\tenvelope. Only the `open` operation includes it in the `result`\n\t\tproperty.\n\t\t\n\t\tpersistent: true if the given filename resides in the\n\t\tknown-persistent storage, else false.\n\t\t\n\t\tvfs: name of the VFS the \"main\" db is using.\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t====================================================================\n\t\t\"close\" a database\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"close\",\n\t\tmessageId: ...as above...\n\t\tdbId: ...as above...\n\t\targs: OPTIONAL {unlink: boolean}\n\t\t}\n\t\t```\n\t\t\n\t\tIf the `dbId` does not refer to an opened ID, this is a no-op. If\n\t\tthe `args` object contains a truthy `unlink` value then the database\n\t\twill be unlinked (deleted) after closing it. The inability to close a\n\t\tdb (because it's not opened) or delete its file does not trigger an\n\t\terror.\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"close\",\n\t\tmessageId: ...as above...,\n\t\tresult: {\n\t\t\n\t\tfilename: filename of closed db, or undefined if no db was closed\n\t\t\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t====================================================================\n\t\t\"exec\" SQL\n\t\t\n\t\tAll SQL execution is processed through the exec operation. It offers\n\t\tmost of the features of the oo1.DB.exec() method, with a few limitations\n\t\timposed by the state having to cross thread boundaries.\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"exec\",\n\t\tmessageId: ...as above...\n\t\tdbId: ...as above...\n\t\targs: string (SQL) or {... see below ...}\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"exec\",\n\t\tmessageId: ...as above...,\n\t\tdbId: ...as above...\n\t\tresult: {\n\t\tinput arguments, possibly modified. See below.\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\tThe arguments are in the same form accepted by oo1.DB.exec(), with\n\t\tthe exceptions noted below.\n\t\t\n\t\tIf `args.countChanges` (added in version 3.43) is truthy then the\n\t\t`result` property contained by the returned object will have a\n\t\t`changeCount` property which holds the number of changes made by the\n\t\tprovided SQL. Because the SQL may contain an arbitrary number of\n\t\tstatements, the `changeCount` is calculated by calling\n\t\t`sqlite3_total_changes()` before and after the SQL is evaluated. If\n\t\tthe value of `countChanges` is 64 then the `changeCount` property\n\t\twill be returned as a 64-bit integer in the form of a BigInt (noting\n\t\tthat that will trigger an exception if used in a BigInt-incapable\n\t\tbuild). In the latter case, the number of changes is calculated by\n\t\tcalling `sqlite3_total_changes64()` before and after the SQL is\n\t\tevaluated.\n\t\t\n\t\tIf the `args.lastInsertRowId` (added in version 3.50.0) is truthy\n\t\tthen the `result` property contained by the returned object will\n\t\thave a `lastInsertRowId` will hold a BigInt-type value corresponding\n\t\tto the result of sqlite3_last_insert_rowid(). This value is only\n\t\tfetched once, after the SQL is run, regardless of how many\n\t\tstatements the SQL contains. This API has no idea whether the SQL\n\t\tcontains any INSERTs, so it is up to the client to apply/rely on\n\t\tthis property only when it makes sense to do so.\n\t\t\n\t\tA function-type args.callback property cannot cross\n\t\tthe window/Worker boundary, so is not useful here. If\n\t\targs.callback is a string then it is assumed to be a\n\t\tmessage type key, in which case a callback function will be\n\t\tapplied which posts each row result via:\n\t\t\n\t\tpostMessage({type: thatKeyType,\n\t\trowNumber: 1-based-#,\n\t\trow: theRow,\n\t\tcolumnNames: anArray\n\t\t})\n\t\t\n\t\tAnd, at the end of the result set (whether or not any result rows\n\t\twere produced), it will post an identical message with\n\t\t(row=undefined, rowNumber=null) to alert the caller than the result\n\t\tset is completed. Note that a row value of `null` is a legal row\n\t\tresult for certain arg.rowMode values.\n\t\t\n\t\t(Design note: we don't use (row=undefined, rowNumber=undefined) to\n\t\tindicate end-of-results because fetching those would be\n\t\tindistinguishable from fetching from an empty object unless the\n\t\tclient used hasOwnProperty() (or similar) to distinguish \"missing\n\t\tproperty\" from \"property with the undefined value\". Similarly,\n\t\t`null` is a legal value for `row` in some case , whereas the db\n\t\tlayer won't emit a result value of `undefined`.)\n\t\t\n\t\tThe callback proxy must not recurse into this interface. An exec()\n\t\tcall will tie up the Worker thread, causing any recursion attempt\n\t\tto wait until the first exec() is completed.\n\t\t\n\t\tThe response is the input options object (or a synthesized one if\n\t\tpassed only a string), noting that options.resultRows and\n\t\toptions.columnNames may be populated by the call to db.exec().\n\t\t\n\t\t\n\t\t====================================================================\n\t\t\"export\" the current db\n\t\t\n\t\tTo export the underlying database as a byte array...\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"export\",\n\t\tmessageId: ...as above...,\n\t\tdbId: ...as above...\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"export\",\n\t\tmessageId: ...as above...,\n\t\tdbId: ...as above...\n\t\tresult: {\n\t\tbyteArray: Uint8Array (as per sqlite3_js_db_export()),\n\t\tfilename: the db filename,\n\t\tmimetype: \"application/x-sqlite3\"\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tconst util = sqlite3.util;\n\t\t\tsqlite3.initWorker1API = function() {\n\t\t\t\t\"use strict\";\n\t\t\t\tconst toss = (...args) => {\n\t\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t\t};\n\t\t\t\tif (!(globalThis.WorkerGlobalScope instanceof Function)) toss(\"initWorker1API() must be run from a Worker thread.\");\n\t\t\t\tconst sqlite3 = this.sqlite3 || toss(\"Missing this.sqlite3 object.\");\n\t\t\t\tconst DB = sqlite3.oo1.DB;\n\t\t\t\t/**\n\t\t\t\tReturns the app-wide unique ID for the given db, creating one if\n\t\t\t\tneeded.\n\t\t\t\t*/\n\t\t\t\tconst getDbId = function(db) {\n\t\t\t\t\tlet id = wState.idMap.get(db);\n\t\t\t\t\tif (id) return id;\n\t\t\t\t\tid = \"db#\" + ++wState.idSeq + \":\" + Math.floor(Math.random() * 1e8) + \":\" + Math.floor(Math.random() * 1e8);\n\t\t\t\t\t/** ^^^ can't simply use db.pointer b/c closing/opening may re-use\n\t\t\t\t\tthe same address, which could map pending messages to a wrong\n\t\t\t\t\tinstance.\n\t\t\t\t\t\n\t\t\t\t\t2025-07: https://github.com/sqlite/sqlite-wasm/issues/113\n\t\t\t\t\tdemonstrates that two Worker1s can end up with the same IDs,\n\t\t\t\t\tdespite using different instances of the library, so we need\n\t\t\t\t\tto add some randomness to the IDs instead of relying on the\n\t\t\t\t\tpointer addresses.\n\t\t\t\t\t*/\n\t\t\t\t\twState.idMap.set(db, id);\n\t\t\t\t\treturn id;\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tInternal helper for managing Worker-level state.\n\t\t\t\t*/\n\t\t\t\tconst wState = {\n\t\t\t\t\tdbList: [],\n\t\t\t\t\tidSeq: 0,\n\t\t\t\t\tidMap: /* @__PURE__ */ new WeakMap(),\n\t\t\t\t\txfer: [],\n\t\t\t\t\topen: function(opt) {\n\t\t\t\t\t\tconst db = new DB(opt);\n\t\t\t\t\t\tthis.dbs[getDbId(db)] = db;\n\t\t\t\t\t\tif (this.dbList.indexOf(db) < 0) this.dbList.push(db);\n\t\t\t\t\t\treturn db;\n\t\t\t\t\t},\n\t\t\t\t\tclose: function(db, alsoUnlink) {\n\t\t\t\t\t\tif (db) {\n\t\t\t\t\t\t\tdelete this.dbs[getDbId(db)];\n\t\t\t\t\t\t\tconst filename = db.filename;\n\t\t\t\t\t\t\tconst pVfs = util.sqlite3__wasm_db_vfs(db.pointer, 0);\n\t\t\t\t\t\t\tdb.close();\n\t\t\t\t\t\t\tconst ddNdx = this.dbList.indexOf(db);\n\t\t\t\t\t\t\tif (ddNdx >= 0) this.dbList.splice(ddNdx, 1);\n\t\t\t\t\t\t\tif (alsoUnlink && filename && pVfs) util.sqlite3__wasm_vfs_unlink(pVfs, filename);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpost: function(msg, xferList) {\n\t\t\t\t\t\tif (xferList && xferList.length) {\n\t\t\t\t\t\t\tglobalThis.postMessage(msg, Array.from(xferList));\n\t\t\t\t\t\t\txferList.length = 0;\n\t\t\t\t\t\t} else globalThis.postMessage(msg);\n\t\t\t\t\t},\n\t\t\t\t\tdbs: Object.create(null),\n\t\t\t\t\tgetDb: function(id, require = true) {\n\t\t\t\t\t\treturn this.dbs[id] || (require ? toss(\"Unknown (or closed) DB ID:\", id) : void 0);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t/** Throws if the given db is falsy or not opened, else returns its\n\t\t\t\targument. */\n\t\t\t\tconst affirmDbOpen = function(db = wState.dbList[0]) {\n\t\t\t\t\treturn db && db.pointer ? db : toss(\"DB is not opened.\");\n\t\t\t\t};\n\t\t\t\t/** Extract dbId from the given message payload. */\n\t\t\t\tconst getMsgDb = function(msgData, affirmExists = true) {\n\t\t\t\t\tconst db = wState.getDb(msgData.dbId, false) || wState.dbList[0];\n\t\t\t\t\treturn affirmExists ? affirmDbOpen(db) : db;\n\t\t\t\t};\n\t\t\t\tconst getDefaultDbId = function() {\n\t\t\t\t\treturn wState.dbList[0] && getDbId(wState.dbList[0]);\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tA level of \"organizational abstraction\" for the Worker1\n\t\t\t\tAPI. Each method in this object must map directly to a Worker1\n\t\t\t\tmessage type key. The onmessage() dispatcher attempts to\n\t\t\t\tdispatch all inbound messages to a method of this object,\n\t\t\t\tpassing it the event.data part of the inbound event object. All\n\t\t\t\tmethods must return a plain Object containing any result\n\t\t\t\tstate, which the dispatcher may amend. All methods must throw\n\t\t\t\ton error.\n\t\t\t\t*/\n\t\t\t\tconst wMsgHandler = {\n\t\t\t\t\topen: function(ev) {\n\t\t\t\t\t\tconst oargs = Object.create(null), args = ev.args || Object.create(null);\n\t\t\t\t\t\tif (args.simulateError) toss(\"Throwing because of simulateError flag.\");\n\t\t\t\t\t\tconst rc = Object.create(null);\n\t\t\t\t\t\toargs.vfs = args.vfs;\n\t\t\t\t\t\toargs.filename = args.filename || \"\";\n\t\t\t\t\t\tconst db = wState.open(oargs);\n\t\t\t\t\t\trc.filename = db.filename;\n\t\t\t\t\t\trc.persistent = !!sqlite3.capi.sqlite3_js_db_uses_vfs(db.pointer, \"opfs\");\n\t\t\t\t\t\trc.dbId = getDbId(db);\n\t\t\t\t\t\trc.vfs = db.dbVfsName();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\tclose: function(ev) {\n\t\t\t\t\t\tconst db = getMsgDb(ev, false);\n\t\t\t\t\t\tconst response = { filename: db && db.filename };\n\t\t\t\t\t\tif (db) {\n\t\t\t\t\t\t\tconst doUnlink = ev.args && \"object\" === typeof ev.args ? !!ev.args.unlink : false;\n\t\t\t\t\t\t\twState.close(db, doUnlink);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn response;\n\t\t\t\t\t},\n\t\t\t\t\texec: function(ev) {\n\t\t\t\t\t\tconst rc = \"string\" === typeof ev.args ? { sql: ev.args } : ev.args || Object.create(null);\n\t\t\t\t\t\tif (\"stmt\" === rc.rowMode) toss(\"Invalid rowMode for 'exec': stmt mode\", \"does not work in the Worker API.\");\n\t\t\t\t\t\telse if (!rc.sql) toss(\"'exec' requires input SQL.\");\n\t\t\t\t\t\tconst db = getMsgDb(ev);\n\t\t\t\t\t\tif (rc.callback || Array.isArray(rc.resultRows)) db._blobXfer = wState.xfer;\n\t\t\t\t\t\tconst theCallback = rc.callback;\n\t\t\t\t\t\tlet rowNumber = 0;\n\t\t\t\t\t\tconst hadColNames = !!rc.columnNames;\n\t\t\t\t\t\tif (\"string\" === typeof theCallback) {\n\t\t\t\t\t\t\tif (!hadColNames) rc.columnNames = [];\n\t\t\t\t\t\t\trc.callback = function(row, stmt) {\n\t\t\t\t\t\t\t\twState.post({\n\t\t\t\t\t\t\t\t\ttype: theCallback,\n\t\t\t\t\t\t\t\t\tcolumnNames: rc.columnNames,\n\t\t\t\t\t\t\t\t\trowNumber: ++rowNumber,\n\t\t\t\t\t\t\t\t\trow\n\t\t\t\t\t\t\t\t}, wState.xfer);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst changeCount = !!rc.countChanges ? db.changes(true, 64 === rc.countChanges) : void 0;\n\t\t\t\t\t\t\tdb.exec(rc);\n\t\t\t\t\t\t\tif (void 0 !== changeCount) rc.changeCount = db.changes(true, 64 === rc.countChanges) - changeCount;\n\t\t\t\t\t\t\tconst lastInsertRowId = !!rc.lastInsertRowId ? sqlite3.capi.sqlite3_last_insert_rowid(db) : void 0;\n\t\t\t\t\t\t\tif (void 0 !== lastInsertRowId) rc.lastInsertRowId = lastInsertRowId;\n\t\t\t\t\t\t\tif (rc.callback instanceof Function) {\n\t\t\t\t\t\t\t\trc.callback = theCallback;\n\t\t\t\t\t\t\t\twState.post({\n\t\t\t\t\t\t\t\t\ttype: theCallback,\n\t\t\t\t\t\t\t\t\tcolumnNames: rc.columnNames,\n\t\t\t\t\t\t\t\t\trowNumber: null,\n\t\t\t\t\t\t\t\t\trow: void 0\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tdelete db._blobXfer;\n\t\t\t\t\t\t\tif (rc.callback) rc.callback = theCallback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\t\"config-get\": function() {\n\t\t\t\t\t\tconst rc = Object.create(null), src = sqlite3.config;\n\t\t\t\t\t\t[\"bigIntEnabled\"].forEach(function(k) {\n\t\t\t\t\t\t\tif (Object.getOwnPropertyDescriptor(src, k)) rc[k] = src[k];\n\t\t\t\t\t\t});\n\t\t\t\t\t\trc.version = sqlite3.version;\n\t\t\t\t\t\trc.vfsList = sqlite3.capi.sqlite3_js_vfs_list();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\texport: function(ev) {\n\t\t\t\t\t\tconst db = getMsgDb(ev);\n\t\t\t\t\t\tconst response = {\n\t\t\t\t\t\t\tbyteArray: sqlite3.capi.sqlite3_js_db_export(db.pointer),\n\t\t\t\t\t\t\tfilename: db.filename,\n\t\t\t\t\t\t\tmimetype: \"application/x-sqlite3\"\n\t\t\t\t\t\t};\n\t\t\t\t\t\twState.xfer.push(response.byteArray.buffer);\n\t\t\t\t\t\treturn response;\n\t\t\t\t\t},\n\t\t\t\t\ttoss: function(ev) {\n\t\t\t\t\t\ttoss(\"Testing worker exception\");\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tglobalThis.onmessage = async function(ev) {\n\t\t\t\t\tev = ev.data;\n\t\t\t\t\tlet result, dbId = ev.dbId, evType = ev.type;\n\t\t\t\t\tconst arrivalTime = performance.now();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (wMsgHandler.hasOwnProperty(evType) && wMsgHandler[evType] instanceof Function) result = await wMsgHandler[evType](ev);\n\t\t\t\t\t\telse toss(\"Unknown db worker message type:\", ev.type);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tevType = \"error\";\n\t\t\t\t\t\tresult = {\n\t\t\t\t\t\t\toperation: ev.type,\n\t\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\t\terrorClass: err.name,\n\t\t\t\t\t\t\tinput: ev\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (err.stack) result.stack = \"string\" === typeof err.stack ? err.stack.split(/\\n\\s*/) : err.stack;\n\t\t\t\t\t}\n\t\t\t\t\tif (!dbId) dbId = result.dbId || getDefaultDbId();\n\t\t\t\t\twState.post({\n\t\t\t\t\t\ttype: evType,\n\t\t\t\t\t\tdbId,\n\t\t\t\t\t\tmessageId: ev.messageId,\n\t\t\t\t\t\tworkerReceivedTime: arrivalTime,\n\t\t\t\t\t\tworkerRespondTime: performance.now(),\n\t\t\t\t\t\tdepartureTime: ev.departureTime,\n\t\t\t\t\t\tresult\n\t\t\t\t\t}, wState.xfer);\n\t\t\t\t};\n\t\t\t\tglobalThis.postMessage({\n\t\t\t\t\ttype: \"sqlite3-api\",\n\t\t\t\t\tresult: \"worker1-ready\"\n\t\t\t\t});\n\t\t\t}.bind({ sqlite3 });\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tconst wasm = sqlite3.wasm, capi = sqlite3.capi, toss = sqlite3.util.toss3;\n\t\t\tconst vfs = Object.create(null);\n\t\t\tsqlite3.vfs = vfs;\n\t\t\t/**\n\t\t\tUses sqlite3_vfs_register() to register this\n\t\t\tsqlite3.capi.sqlite3_vfs instance. This object must have already\n\t\t\tbeen filled out properly. If the first argument is truthy, the\n\t\t\tVFS is registered as the default VFS, else it is not.\n\t\t\t\n\t\t\tOn success, returns this object. Throws on error.\n\t\t\t*/\n\t\t\tcapi.sqlite3_vfs.prototype.registerVfs = function(asDefault = false) {\n\t\t\t\tif (!(this instanceof sqlite3.capi.sqlite3_vfs)) toss(\"Expecting a sqlite3_vfs-type argument.\");\n\t\t\t\tconst rc = capi.sqlite3_vfs_register(this, asDefault ? 1 : 0);\n\t\t\t\tif (rc) toss(\"sqlite3_vfs_register(\", this, \") failed with rc\", rc);\n\t\t\t\tif (this.pointer !== capi.sqlite3_vfs_find(this.$zName)) toss(\"BUG: sqlite3_vfs_find(vfs.$zName) failed for just-installed VFS\", this);\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\t/**\n\t\t\tA wrapper for\n\t\t\tsqlite3.StructBinder.StructType.prototype.installMethods() or\n\t\t\tregisterVfs() to reduce installation of a VFS and/or its I/O\n\t\t\tmethods to a single call.\n\t\t\t\n\t\t\tAccepts an object which contains the properties \"io\" and/or\n\t\t\t\"vfs\", each of which is itself an object with following properties:\n\t\t\t\n\t\t\t- `struct`: an sqlite3.StructBinder.StructType-type struct. This\n\t\t\tmust be a populated (except for the methods) object of type\n\t\t\tsqlite3_io_methods (for the \"io\" entry) or sqlite3_vfs (for the\n\t\t\t\"vfs\" entry).\n\t\t\t\n\t\t\t- `methods`: an object mapping sqlite3_io_methods method names\n\t\t\t(e.g. 'xClose') to JS implementations of those methods. The JS\n\t\t\timplementations must be call-compatible with their native\n\t\t\tcounterparts.\n\t\t\t\n\t\t\tFor each of those object, this function passes its (`struct`,\n\t\t\t`methods`, (optional) `applyArgcCheck`) properties to\n\t\t\tinstallMethods().\n\t\t\t\n\t\t\tIf the `vfs` entry is set then:\n\t\t\t\n\t\t\t- Its `struct` property's registerVfs() is called. The\n\t\t\t`vfs` entry may optionally have an `asDefault` property, which\n\t\t\tgets passed as the argument to registerVfs().\n\t\t\t\n\t\t\t- If `struct.$zName` is falsy and the entry has a string-type\n\t\t\t`name` property, `struct.$zName` is set to the C-string form of\n\t\t\tthat `name` value before registerVfs() is called. That string\n\t\t\tgets added to the on-dispose state of the struct.\n\t\t\t\n\t\t\tOn success returns this object. Throws on error.\n\t\t\t*/\n\t\t\tvfs.installVfs = function(opt) {\n\t\t\t\tlet count = 0;\n\t\t\t\tconst propList = [\"io\", \"vfs\"];\n\t\t\t\tfor (const key of propList) {\n\t\t\t\t\tconst o = opt[key];\n\t\t\t\t\tif (o) {\n\t\t\t\t\t\t++count;\n\t\t\t\t\t\to.struct.installMethods(o.methods, !!o.applyArgcCheck);\n\t\t\t\t\t\tif (\"vfs\" === key) {\n\t\t\t\t\t\t\tif (!o.struct.$zName && \"string\" === typeof o.name) o.struct.addOnDispose(o.struct.$zName = wasm.allocCString(o.name));\n\t\t\t\t\t\t\to.struct.registerVfs(!!o.asDefault);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!count) toss(\"Misuse: installVfs() options object requires at least\", \"one of:\", propList);\n\t\t\t\treturn this;\n\t\t\t};\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tif (!sqlite3.wasm.exports.sqlite3_declare_vtab) return;\n\t\t\tconst wasm = sqlite3.wasm, capi = sqlite3.capi, toss = sqlite3.util.toss3;\n\t\t\tconst vtab = Object.create(null);\n\t\t\tsqlite3.vtab = vtab;\n\t\t\tconst sii = capi.sqlite3_index_info;\n\t\t\t/**\n\t\t\tIf n is >=0 and less than this.$nConstraint, this function\n\t\t\treturns either a WASM pointer to the 0-based nth entry of\n\t\t\tthis.$aConstraint (if passed a truthy 2nd argument) or an\n\t\t\tsqlite3_index_info.sqlite3_index_constraint object wrapping that\n\t\t\taddress (if passed a falsy value or no 2nd argument). Returns a\n\t\t\tfalsy value if n is out of range.\n\t\t\t*/\n\t\t\tsii.prototype.nthConstraint = function(n, asPtr = false) {\n\t\t\t\tif (n < 0 || n >= this.$nConstraint) return false;\n\t\t\t\tconst ptr = wasm.ptr.add(this.$aConstraint, sii.sqlite3_index_constraint.structInfo.sizeof * n);\n\t\t\t\treturn asPtr ? ptr : new sii.sqlite3_index_constraint(ptr);\n\t\t\t};\n\t\t\t/**\n\t\t\tWorks identically to nthConstraint() but returns state from\n\t\t\tthis.$aConstraintUsage, so returns an\n\t\t\tsqlite3_index_info.sqlite3_index_constraint_usage instance\n\t\t\tif passed no 2nd argument or a falsy 2nd argument.\n\t\t\t*/\n\t\t\tsii.prototype.nthConstraintUsage = function(n, asPtr = false) {\n\t\t\t\tif (n < 0 || n >= this.$nConstraint) return false;\n\t\t\t\tconst ptr = wasm.ptr.add(this.$aConstraintUsage, sii.sqlite3_index_constraint_usage.structInfo.sizeof * n);\n\t\t\t\treturn asPtr ? ptr : new sii.sqlite3_index_constraint_usage(ptr);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf n is >=0 and less than this.$nOrderBy, this function\n\t\t\treturns either a WASM pointer to the 0-based nth entry of\n\t\t\tthis.$aOrderBy (if passed a truthy 2nd argument) or an\n\t\t\tsqlite3_index_info.sqlite3_index_orderby object wrapping that\n\t\t\taddress (if passed a falsy value or no 2nd argument). Returns a\n\t\t\tfalsy value if n is out of range.\n\t\t\t*/\n\t\t\tsii.prototype.nthOrderBy = function(n, asPtr = false) {\n\t\t\t\tif (n < 0 || n >= this.$nOrderBy) return false;\n\t\t\t\tconst ptr = wasm.ptr.add(this.$aOrderBy, sii.sqlite3_index_orderby.structInfo.sizeof * n);\n\t\t\t\treturn asPtr ? ptr : new sii.sqlite3_index_orderby(ptr);\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal factory function for xVtab and xCursor impls.\n\t\t\t*/\n\t\t\tconst __xWrapFactory = function(methodName, StructType) {\n\t\t\t\treturn function(ptr, removeMapping = false) {\n\t\t\t\t\tif (0 === arguments.length) ptr = new StructType();\n\t\t\t\t\tif (ptr instanceof StructType) {\n\t\t\t\t\t\tthis.set(ptr.pointer, ptr);\n\t\t\t\t\t\treturn ptr;\n\t\t\t\t\t} else if (!wasm.isPtr(ptr)) sqlite3.SQLite3Error.toss(\"Invalid argument to\", methodName + \"()\");\n\t\t\t\t\tlet rc = this.get(ptr);\n\t\t\t\t\tif (removeMapping) this.delete(ptr);\n\t\t\t\t\treturn rc;\n\t\t\t\t}.bind(/* @__PURE__ */ new Map());\n\t\t\t};\n\t\t\t/**\n\t\t\tA factory function which implements a simple lifetime manager for\n\t\t\tmappings between C struct pointers and their JS-level wrappers.\n\t\t\tThe first argument must be the logical name of the manager\n\t\t\t(e.g. 'xVtab' or 'xCursor'), which is only used for error\n\t\t\treporting. The second must be the capi.XYZ struct-type value,\n\t\t\te.g. capi.sqlite3_vtab or capi.sqlite3_vtab_cursor.\n\t\t\t\n\t\t\tReturns an object with 4 methods: create(), get(), unget(), and\n\t\t\tdispose(), plus a StructType member with the value of the 2nd\n\t\t\targument. The methods are documented in the body of this\n\t\t\tfunction.\n\t\t\t*/\n\t\t\tconst StructPtrMapper = function(name, StructType) {\n\t\t\t\tconst __xWrap = __xWrapFactory(name, StructType);\n\t\t\t\t/**\n\t\t\t\tThis object houses a small API for managing mappings of (`T*`)\n\t\t\t\tto StructType<T> objects, specifically within the lifetime\n\t\t\t\trequirements of sqlite3_module methods.\n\t\t\t\t*/\n\t\t\t\treturn Object.assign(Object.create(null), {\n\t\t\t\t\tStructType,\n\t\t\t\t\tcreate: (ppOut) => {\n\t\t\t\t\t\tconst rc = __xWrap();\n\t\t\t\t\t\twasm.pokePtr(ppOut, rc.pointer);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\tget: (pCObj) => __xWrap(pCObj),\n\t\t\t\t\tunget: (pCObj) => __xWrap(pCObj, true),\n\t\t\t\t\tdispose: (pCObj) => __xWrap(pCObj, true)?.dispose?.()\n\t\t\t\t});\n\t\t\t};\n\t\t\t/**\n\t\t\tA lifetime-management object for mapping `sqlite3_vtab*`\n\t\t\tinstances in sqlite3_module methods to capi.sqlite3_vtab\n\t\t\tobjects.\n\t\t\t\n\t\t\tThe API docs are in the API-internal StructPtrMapper().\n\t\t\t*/\n\t\t\tvtab.xVtab = StructPtrMapper(\"xVtab\", capi.sqlite3_vtab);\n\t\t\t/**\n\t\t\tA lifetime-management object for mapping `sqlite3_vtab_cursor*`\n\t\t\tinstances in sqlite3_module methods to capi.sqlite3_vtab_cursor\n\t\t\tobjects.\n\t\t\t\n\t\t\tThe API docs are in the API-internal StructPtrMapper().\n\t\t\t*/\n\t\t\tvtab.xCursor = StructPtrMapper(\"xCursor\", capi.sqlite3_vtab_cursor);\n\t\t\t/**\n\t\t\tConvenience form of creating an sqlite3_index_info wrapper,\n\t\t\tintended for use in xBestIndex implementations. Note that the\n\t\t\tcaller is expected to call dispose() on the returned object\n\t\t\tbefore returning. Though not _strictly_ required, as that object\n\t\t\tdoes not own the pIdxInfo memory, it is nonetheless good form.\n\t\t\t*/\n\t\t\tvtab.xIndexInfo = (pIdxInfo) => new capi.sqlite3_index_info(pIdxInfo);\n\t\t\t/**\n\t\t\tGiven an sqlite3_module method name and error object, this\n\t\t\tfunction returns sqlite3.capi.SQLITE_NOMEM if (e instanceof\n\t\t\tsqlite3.WasmAllocError), else it returns its second argument. Its\n\t\t\tintended usage is in the methods of a sqlite3_vfs or\n\t\t\tsqlite3_module:\n\t\t\t\n\t\t\t```\n\t\t\ttry{\n\t\t\tlet rc = ...\n\t\t\treturn rc;\n\t\t\t}catch(e){\n\t\t\treturn sqlite3.vtab.xError(\n\t\t\t'xColumn', e, sqlite3.capi.SQLITE_XYZ);\n\t\t\t// where SQLITE_XYZ is some call-appropriate result code.\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tIf no 3rd argument is provided, its default depends on\n\t\t\tthe error type:\n\t\t\t\n\t\t\t- An sqlite3.WasmAllocError always resolves to capi.SQLITE_NOMEM.\n\t\t\t\n\t\t\t- If err is an SQLite3Error then its `resultCode` property\n\t\t\tis used.\n\t\t\t\n\t\t\t- If all else fails, capi.SQLITE_ERROR is used.\n\t\t\t\n\t\t\tIf xError.errorReporter is a function, it is called in\n\t\t\torder to report the error, else the error is not reported.\n\t\t\tIf that function throws, that exception is ignored.\n\t\t\t*/\n\t\t\tvtab.xError = function f(methodName, err, defaultRc) {\n\t\t\t\tif (f.errorReporter instanceof Function) try {\n\t\t\t\t\tf.errorReporter(\"sqlite3_module::\" + methodName + \"(): \" + err.message);\n\t\t\t\t} catch (e) {}\n\t\t\t\tlet rc;\n\t\t\t\tif (err instanceof sqlite3.WasmAllocError) rc = capi.SQLITE_NOMEM;\n\t\t\t\telse if (arguments.length > 2) rc = defaultRc;\n\t\t\t\telse if (err instanceof sqlite3.SQLite3Error) rc = err.resultCode;\n\t\t\t\treturn rc || capi.SQLITE_ERROR;\n\t\t\t};\n\t\t\tvtab.xError.errorReporter = sqlite3.config.error.bind(sqlite3.config);\n\t\t\t/**\n\t\t\tA helper for sqlite3_vtab::xRowid() and xUpdate()\n\t\t\timplementations. It must be passed the final argument to one of\n\t\t\tthose methods (an output pointer to an int64 row ID) and the\n\t\t\tvalue to store at the output pointer's address. Returns the same\n\t\t\tas wasm.poke() and will throw if the 1st or 2nd arguments\n\t\t\tare invalid for that function.\n\t\t\t\n\t\t\tExample xRowid impl:\n\t\t\t\n\t\t\t```\n\t\t\tconst xRowid = (pCursor, ppRowid64)=>{\n\t\t\tconst c = vtab.xCursor(pCursor);\n\t\t\tvtab.xRowid(ppRowid64, c.myRowId);\n\t\t\treturn 0;\n\t\t\t};\n\t\t\t```\n\t\t\t*/\n\t\t\tvtab.xRowid = (ppRowid64, value) => wasm.poke(ppRowid64, value, \"i64\");\n\t\t\t/**\n\t\t\tA helper to initialize and set up an sqlite3_module object for\n\t\t\tlater installation into individual databases using\n\t\t\tsqlite3_create_module(). Requires an object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t- `methods`: an object containing a mapping of properties with\n\t\t\tthe C-side names of the sqlite3_module methods, e.g. xCreate,\n\t\t\txBestIndex, etc., to JS implementations for those functions.\n\t\t\tCertain special-case handling is performed, as described below.\n\t\t\t\n\t\t\t- `catchExceptions` (default=false): if truthy, the given methods\n\t\t\tare not mapped as-is, but are instead wrapped inside wrappers\n\t\t\twhich translate exceptions into result codes of SQLITE_ERROR or\n\t\t\tSQLITE_NOMEM, depending on whether the exception is an\n\t\t\tsqlite3.WasmAllocError. In the case of the xConnect and xCreate\n\t\t\tmethods, the exception handler also sets the output error\n\t\t\tstring to the exception's error string.\n\t\t\t\n\t\t\t- OPTIONAL `struct`: a sqlite3.capi.sqlite3_module() instance. If\n\t\t\tnot set, one will be created automatically. If the current\n\t\t\t\"this\" is-a sqlite3_module then it is unconditionally used in\n\t\t\tplace of `struct`.\n\t\t\t\n\t\t\t- OPTIONAL `iVersion`: if set, it must be an integer value and it\n\t\t\tgets assigned to the `$iVersion` member of the struct object.\n\t\t\tIf it's _not_ set, and the passed-in `struct` object's `$iVersion`\n\t\t\tis 0 (the default) then this function attempts to define a value\n\t\t\tfor that property based on the list of methods it has.\n\t\t\t\n\t\t\tIf `catchExceptions` is false, it is up to the client to ensure\n\t\t\tthat no exceptions escape the methods, as doing so would move\n\t\t\tthem through the C API, leading to undefined\n\t\t\tbehavior. (vtab.xError() is intended to assist in reporting\n\t\t\tsuch exceptions.)\n\t\t\t\n\t\t\tCertain methods may refer to the same implementation. To simplify\n\t\t\tthe definition of such methods:\n\t\t\t\n\t\t\t- If `methods.xConnect` is `true` then the value of\n\t\t\t`methods.xCreate` is used in its place, and vice versa. sqlite\n\t\t\ttreats xConnect/xCreate functions specially if they are exactly\n\t\t\tthe same function (same pointer value).\n\t\t\t\n\t\t\t- If `methods.xDisconnect` is true then the value of\n\t\t\t`methods.xDestroy` is used in its place, and vice versa.\n\t\t\t\n\t\t\tThis is to facilitate creation of those methods inline in the\n\t\t\tpassed-in object without requiring the client to explicitly get a\n\t\t\treference to one of them in order to assign it to the other\n\t\t\tone.\n\t\t\t\n\t\t\tThe `catchExceptions`-installed handlers will account for\n\t\t\tidentical references to the above functions and will install the\n\t\t\tsame wrapper function for both.\n\t\t\t\n\t\t\tThe given methods are expected to return integer values, as\n\t\t\texpected by the C API. If `catchExceptions` is truthy, the return\n\t\t\tvalue of the wrapped function will be used as-is and will be\n\t\t\ttranslated to 0 if the function returns a falsy value (e.g. if it\n\t\t\tdoes not have an explicit return). If `catchExceptions` is _not_\n\t\t\tactive, the method implementations must explicitly return integer\n\t\t\tvalues.\n\t\t\t\n\t\t\tThrows on error. On success, returns the sqlite3_module object\n\t\t\t(`this` or `opt.struct` or a new sqlite3_module instance,\n\t\t\tdepending on how it's called).\n\t\t\t*/\n\t\t\tvtab.setupModule = function(opt) {\n\t\t\t\tlet createdMod = false;\n\t\t\t\tconst mod = this instanceof capi.sqlite3_module ? this : opt.struct || (createdMod = new capi.sqlite3_module());\n\t\t\t\ttry {\n\t\t\t\t\tconst methods = opt.methods || toss(\"Missing 'methods' object.\");\n\t\t\t\t\tfor (const e of Object.entries({\n\t\t\t\t\t\txConnect: \"xCreate\",\n\t\t\t\t\t\txDisconnect: \"xDestroy\"\n\t\t\t\t\t})) {\n\t\t\t\t\t\tconst k = e[0], v = e[1];\n\t\t\t\t\t\tif (true === methods[k]) methods[k] = methods[v];\n\t\t\t\t\t\telse if (true === methods[v]) methods[v] = methods[k];\n\t\t\t\t\t}\n\t\t\t\t\tif (opt.catchExceptions) {\n\t\t\t\t\t\tconst fwrap = function(methodName, func) {\n\t\t\t\t\t\t\tif ([\"xConnect\", \"xCreate\"].indexOf(methodName) >= 0) return function(pDb, pAux, argc, argv, ppVtab, pzErr) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\treturn func(...arguments) || 0;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tif (!(e instanceof sqlite3.WasmAllocError)) {\n\t\t\t\t\t\t\t\t\t\twasm.dealloc(wasm.peekPtr(pzErr));\n\t\t\t\t\t\t\t\t\t\twasm.pokePtr(pzErr, wasm.allocCString(e.message));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn vtab.xError(methodName, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telse return function(...args) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\treturn func(...args) || 0;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treturn vtab.xError(methodName, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst mnames = [\n\t\t\t\t\t\t\t\"xCreate\",\n\t\t\t\t\t\t\t\"xConnect\",\n\t\t\t\t\t\t\t\"xBestIndex\",\n\t\t\t\t\t\t\t\"xDisconnect\",\n\t\t\t\t\t\t\t\"xDestroy\",\n\t\t\t\t\t\t\t\"xOpen\",\n\t\t\t\t\t\t\t\"xClose\",\n\t\t\t\t\t\t\t\"xFilter\",\n\t\t\t\t\t\t\t\"xNext\",\n\t\t\t\t\t\t\t\"xEof\",\n\t\t\t\t\t\t\t\"xColumn\",\n\t\t\t\t\t\t\t\"xRowid\",\n\t\t\t\t\t\t\t\"xUpdate\",\n\t\t\t\t\t\t\t\"xBegin\",\n\t\t\t\t\t\t\t\"xSync\",\n\t\t\t\t\t\t\t\"xCommit\",\n\t\t\t\t\t\t\t\"xRollback\",\n\t\t\t\t\t\t\t\"xFindFunction\",\n\t\t\t\t\t\t\t\"xRename\",\n\t\t\t\t\t\t\t\"xSavepoint\",\n\t\t\t\t\t\t\t\"xRelease\",\n\t\t\t\t\t\t\t\"xRollbackTo\",\n\t\t\t\t\t\t\t\"xShadowName\"\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst remethods = Object.create(null);\n\t\t\t\t\t\tfor (const k of mnames) {\n\t\t\t\t\t\t\tconst m = methods[k];\n\t\t\t\t\t\t\tif (!(m instanceof Function)) continue;\n\t\t\t\t\t\t\telse if (\"xConnect\" === k && methods.xCreate === m) remethods[k] = methods.xCreate;\n\t\t\t\t\t\t\telse if (\"xCreate\" === k && methods.xConnect === m) remethods[k] = methods.xConnect;\n\t\t\t\t\t\t\telse remethods[k] = fwrap(k, m);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmod.installMethods(remethods, false);\n\t\t\t\t\t} else mod.installMethods(methods, !!opt.applyArgcCheck);\n\t\t\t\t\tif (0 === mod.$iVersion) {\n\t\t\t\t\t\tlet v;\n\t\t\t\t\t\tif (\"number\" === typeof opt.iVersion) v = opt.iVersion;\n\t\t\t\t\t\telse if (mod.$xIntegrity) v = 4;\n\t\t\t\t\t\telse if (mod.$xShadowName) v = 3;\n\t\t\t\t\t\telse if (mod.$xSavePoint || mod.$xRelease || mod.$xRollbackTo) v = 2;\n\t\t\t\t\t\telse v = 1;\n\t\t\t\t\t\tmod.$iVersion = v;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (createdMod) createdMod.dispose();\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn mod;\n\t\t\t};\n\t\t\t/**\n\t\t\tEquivalent to calling vtab.setupModule() with this sqlite3_module\n\t\t\tobject as the call's `this`.\n\t\t\t*/\n\t\t\tcapi.sqlite3_module.prototype.setupModule = function(opt) {\n\t\t\t\treturn vtab.setupModule.call(this, opt);\n\t\t\t};\n\t\t});\n\t\t/**\n\t\tkvvfs - the Key/Value VFS - is an SQLite3 VFS which delegates\n\t\tstorage of its pages and metadata to a key-value store.\n\t\t\n\t\tIt was conceived in order to support JS's localStorage and\n\t\tsessionStorage objects. Its native implementation uses files as\n\t\tkey/value storage (one file per record) but the JS implementation\n\t\treplaces a few methods so that it can use the aforementioned\n\t\tobjects as storage.\n\t\t\n\t\tIt uses a bespoke ASCII encoding to store each db page as a\n\t\tseparate record and stores some metadata, like the db's unencoded\n\t\tsize and its journal, as individual records.\n\t\t\n\t\tkvvfs is significantly less efficient than a plain in-memory db but\n\t\tit also, as a side effect of its design, offers a JSON-friendly\n\t\tinterchange format for exporting and importing databases.\n\t\t\n\t\tkvvfs is _not_ designed for heavy db loads. It is relatively\n\t\tmalloc()-heavy, having to de/allocate frequently, and it\n\t\tspends much of its time converting the raw db pages into and out of\n\t\tan ASCII encoding.\n\t\t\n\t\tBut it _does_ work and is \"performant enough\" for db work of the\n\t\tscale of a db which will fit within sessionStorage or localStorage\n\t\t(just 2-3mb).\n\t\t\n\t\t\"Version 2\" extends it to support using Storage-like objects as\n\t\tbacking storage, Storage being the JS class which localStorage and\n\t\tsessionStorage both derive from. This essentially moves the backing\n\t\tstore from whatever localStorage and sessionStorage use to an\n\t\tin-memory object.\n\t\t\n\t\tThis effort is primarily a stepping stone towards eliminating, if\n\t\tit proves possible, the POSIX I/O API dependencies in SQLite's WASM\n\t\tbuilds. That is: if this VFS works properly, it can be set as the\n\t\tdefault VFS and we can eliminate the \"unix\" VFS from the JS/WASM\n\t\tbuilds (as opposed to server-wise/WASI builds). That still, as of\n\t\t2025-11-23, a ways away, but it's the main driver for version 2 of\n\t\tkvvfs.\n\t\t\n\t\tVersion 2 remains compatible with version 1 databases and always\n\t\twrites localStorage/sessionStorage metadata in the v1 format, so\n\t\tsuch dbs can be manipulated freely by either version. For transient\n\t\tstorage objects (new in version 2), the format of its record keys\n\t\tis simpified, requiring less space than v1 keys by eliding\n\t\tredundant (in this context) info from the keys.\n\t\t\n\t\tAnother benefit of v2 is its ability to export dbs into a\n\t\tJSON-friendly (but not human-friendly) format.\n\t\t\n\t\tA potential, as-yet-unproven, benefit, would be the ability to plug\n\t\tarbitrary Storage-compatible objects in so that clients could,\n\t\te.g. asynchronously post updates to db pages to some back-end for\n\t\tbackups.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tif (sqlite3.config.disable?.vfs?.kvvfs) return;\n\t\t\tconst capi = sqlite3.capi, sqlite3_kvvfs_methods = capi.sqlite3_kvvfs_methods, KVVfsFile = capi.KVVfsFile, pKvvfs = sqlite3.capi.sqlite3_vfs_find(\"kvvfs\");\n\t\t\tdelete capi.sqlite3_kvvfs_methods;\n\t\t\tdelete capi.KVVfsFile;\n\t\t\tif (!pKvvfs) return;\n\t\t\tconst util = sqlite3.util, wasm = sqlite3.wasm, toss3 = util.toss3;\n\t\t\tconst kvvfsMethods = new sqlite3_kvvfs_methods(wasm.exports.sqlite3__wasm_kvvfs_methods());\n\t\t\tutil.assert(32 <= kvvfsMethods.$nKeySize, \"unexpected kvvfsMethods.$nKeySize: \" + kvvfsMethods.$nKeySize);\n\t\t\t/**\n\t\t\tMost of the VFS-internal state.\n\t\t\t*/\n\t\t\tconst cache = Object.assign(Object.create(null), {\n\t\t\t\trxJournalSuffix: /-journal$/,\n\t\t\t\tzKeyJrnl: wasm.allocCString(\"jrnl\"),\n\t\t\t\tzKeySz: wasm.allocCString(\"sz\"),\n\t\t\t\tkeySize: kvvfsMethods.$nKeySize,\n\t\t\t\tbuffer: Object.assign(Object.create(null), {\n\t\t\t\t\tn: kvvfsMethods.$nBufferSize,\n\t\t\t\t\tpool: Object.create(null)\n\t\t\t\t})\n\t\t\t});\n\t\t\t/**\n\t\t\tReturns a (cached) wasm.alloc()'d buffer of cache.buffer.n size,\n\t\t\tthrowing on OOM.\n\t\t\t\n\t\t\tWe leak this one-time alloc because we've no better option.\n\t\t\tsqlite3_vfs does not have a finalizer, so we've no place to hook\n\t\t\tin the cleanup. We \"could\" extend sqlite3_shutdown() to have a\n\t\t\tcleanup list for stuff like this but that function is never\n\t\t\tused in JS, so it's hardly worth it.\n\t\t\t*/\n\t\t\tcache.memBuffer = (id = 0) => cache.buffer.pool[id] ??= wasm.alloc(cache.buffer.n);\n\t\t\t/** Frees the buffer with the given id. */\n\t\t\tcache.memBufferFree = (id) => {\n\t\t\t\tconst b = cache.buffer.pool[id];\n\t\t\t\tif (b) {\n\t\t\t\t\twasm.dealloc(b);\n\t\t\t\t\tdelete cache.buffer.pool[id];\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst noop = () => {};\n\t\t\tconst debug = sqlite3.__isUnderTest ? (...args) => sqlite3.config.debug?.(\"kvvfs:\", ...args) : noop;\n\t\t\tconst warn = (...args) => sqlite3.config.warn?.(\"kvvfs:\", ...args);\n\t\t\tconst error = (...args) => sqlite3.config.error?.(\"kvvfs:\", ...args);\n\t\t\t/**\n\t\t\tImplementation of JS's Storage interface for use as backing store\n\t\t\tof the kvvfs. Storage is a native class and its constructor\n\t\t\tcannot be legally called from JS, making it impossible to\n\t\t\tdirectly subclass Storage. This class implements (only) the\n\t\t\tStorage interface, to make it a drop-in replacement for\n\t\t\tlocalStorage/sessionStorage. (Any behavioral discrepancies are to\n\t\t\tbe considered bugs.)\n\t\t\t\n\t\t\tThis impl simply proxies a plain, prototype-less Object, suitable\n\t\t\tfor JSON-ing.\n\t\t\t\n\t\t\tDesign note: Storage has a bit of an odd iteration-related\n\t\t\tinterface as does not (AFAIK) specify specific behavior regarding\n\t\t\tmodification during traversal. Because of that, this class does\n\t\t\tsome seemingly unnecessary things with its #keys member, deleting\n\t\t\tand recreating it whenever a property index might be invalidated.\n\t\t\t*/\n\t\t\tclass KVVfsStorage {\n\t\t\t\t#map = Object.create(null);\n\t\t\t\t#keys = null;\n\t\t\t\t#size = 0;\n\t\t\t\tconstructor() {\n\t\t\t\t\tthis.clear();\n\t\t\t\t}\n\t\t\t\t#getKeys() {\n\t\t\t\t\treturn this.#keys ??= Object.keys(this.#map);\n\t\t\t\t}\n\t\t\t\tkey(n) {\n\t\t\t\t\tif (n < 0 || n >= this.#size) return null;\n\t\t\t\t\treturn this.#getKeys()[n];\n\t\t\t\t}\n\t\t\t\tgetItem(k) {\n\t\t\t\t\treturn this.#map[k] ?? null;\n\t\t\t\t}\n\t\t\t\tsetItem(k, v) {\n\t\t\t\t\tif (!(k in this.#map)) {\n\t\t\t\t\t\t++this.#size;\n\t\t\t\t\t\tthis.#keys = null;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#map[k] = \"\" + v;\n\t\t\t\t}\n\t\t\t\tremoveItem(k) {\n\t\t\t\t\tif (k in this.#map) {\n\t\t\t\t\t\tdelete this.#map[k];\n\t\t\t\t\t\t--this.#size;\n\t\t\t\t\t\tthis.#keys = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclear() {\n\t\t\t\t\tthis.#map = Object.create(null);\n\t\t\t\t\tthis.#keys = null;\n\t\t\t\t\tthis.#size = 0;\n\t\t\t\t}\n\t\t\t\tget length() {\n\t\t\t\t\treturn this.#size;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/** True if v is the name of one of the special persistant Storage\n\t\t\tobjects. */\n\t\t\tconst kvvfsIsPersistentName = (v) => \"local\" === v || \"session\" === v;\n\t\t\t/**\n\t\t\tKeys in kvvfs have a prefix of \"kvvfs-NAME-\", where NAME is the\n\t\t\tdb name. This key is redundant in JS but it's how kvvfs works (it\n\t\t\tsaves each key to a separate file, so needs a distinct namespace\n\t\t\tper data source name). We retain this prefix in 'local' and\n\t\t\t'session' storage for backwards compatibility and so that they\n\t\t\tcan co-exist with client data in their storage, but we elide them\n\t\t\tfrom \"v2\" storage, where they're superfluous.\n\t\t\t*/\n\t\t\tconst kvvfsKeyPrefix = (v) => kvvfsIsPersistentName(v) ? \"kvvfs-\" + v + \"-\" : \"\";\n\t\t\t/**\n\t\t\tThrows if storage name n (JS string) is not valid for use as a\n\t\t\tstorage name. Much of this goes back to kvvfs having a fixed\n\t\t\tbuffer size for its keys, and the storage name needing to be\n\t\t\tencoded in the keys for local/session storage.\n\t\t\t\n\t\t\tThe second argument must only be true when called from xOpen() -\n\t\t\tit makes names with a \"-journal\" suffix legal.\n\t\t\t*/\n\t\t\tconst validateStorageName = function(n, mayBeJournal = false) {\n\t\t\t\tif (kvvfsIsPersistentName(n)) return;\n\t\t\t\tconst len = new Blob([n]).size;\n\t\t\t\tif (!len) toss3(capi.SQLITE_MISUSE, \"Empty name is not permitted.\");\n\t\t\t\tlet maxLen = cache.keySize - 1;\n\t\t\t\tif (cache.rxJournalSuffix.test(n)) {\n\t\t\t\t\tif (!mayBeJournal) toss3(capi.SQLITE_MISUSE, \"Storage names may not have a '-journal' suffix.\");\n\t\t\t\t} else if ([\"-wal\", \"-shm\"].filter((v) => n.endsWith(v)).length) toss3(capi.SQLITE_MISUSE, \"Storage names may not have a -wal or -shm suffix.\");\n\t\t\t\telse maxLen -= 8;\n\t\t\t\tif (len > maxLen) toss3(capi.SQLITE_RANGE, \"Storage name is too long. Limit =\", maxLen);\n\t\t\t\tlet i;\n\t\t\t\tfor (i = 0; i < len; ++i) {\n\t\t\t\t\tconst ch = n.codePointAt(i);\n\t\t\t\t\tif (ch < 32) toss3(capi.SQLITE_RANGE, \"Illegal character (\" + ch + \"d) in storage name:\", n);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tCreate a new instance of the objects which go into\n\t\t\tcache.storagePool, with a refcount of 1. If passed a Storage-like\n\t\t\tobject as its second argument, it is used for the storage,\n\t\t\totherwise it creates a new KVVfsStorage object.\n\t\t\t*/\n\t\t\tconst newStorageObj = (name, storage = void 0) => Object.assign(Object.create(null), {\n\t\t\t\tjzClass: name,\n\t\t\t\trefc: 1,\n\t\t\t\tdeleteAtRefc0: false,\n\t\t\t\tstorage: storage || new KVVfsStorage(),\n\t\t\t\tkeyPrefix: kvvfsKeyPrefix(name),\n\t\t\t\tfiles: [],\n\t\t\t\tlisteners: void 0\n\t\t\t});\n\t\t\t/**\n\t\t\tPublic interface for kvvfs v2. The capi.sqlite3_js_kvvfs_...()\n\t\t\troutines remain in place for v1. Some members of this class proxy\n\t\t\tto those functions but use different default argument values in\n\t\t\tsome cases.\n\t\t\t*/\n\t\t\tconst kvvfs = sqlite3.kvvfs = Object.create(null);\n\t\t\tif (sqlite3.__isUnderTest) kvvfs.log = Object.assign(Object.create(null), {\n\t\t\t\txOpen: false,\n\t\t\t\txClose: false,\n\t\t\t\txWrite: false,\n\t\t\t\txRead: false,\n\t\t\t\txSync: false,\n\t\t\t\txAccess: false,\n\t\t\t\txFileControl: false,\n\t\t\t\txRcrdRead: false,\n\t\t\t\txRcrdWrite: false,\n\t\t\t\txRcrdDelete: false\n\t\t\t});\n\t\t\t/**\n\t\t\tDeletes the cache.storagePool entries for store (a\n\t\t\tcache.storagePool entry) and its db/journal counterpart.\n\t\t\t*/\n\t\t\tconst deleteStorage = function(store) {\n\t\t\t\tconst other = cache.rxJournalSuffix.test(store.jzClass) ? store.jzClass.replace(cache.rxJournalSuffix, \"\") : store.jzClass + \"-journal\";\n\t\t\t\tkvvfs?.log?.xClose && debug(\"cleaning up storage handles [\", store.jzClass, other, \"]\", store);\n\t\t\t\tdelete cache.storagePool[store.jzClass];\n\t\t\t\tdelete cache.storagePool[other];\n\t\t\t\tif (!sqlite3.__isUnderTest) {\n\t\t\t\t\tdelete store.storage;\n\t\t\t\t\tdelete store.refc;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tAdd both store.jzClass and store.jzClass+\"-journal\"\n\t\t\tto cache,storagePool.\n\t\t\t*/\n\t\t\tconst installStorageAndJournal = (store) => cache.storagePool[store.jzClass] = cache.storagePool[store.jzClass + \"-journal\"] = store;\n\t\t\t/**\n\t\t\tThe public name of the current thread's transient storage\n\t\t\tobject. A storage object with this name gets preinstalled.\n\t\t\t*/\n\t\t\tconst nameOfThisThreadStorage = \".\";\n\t\t\t/**\n\t\t\tMap of JS-stringified KVVfsFile::zClass names to\n\t\t\treference-counted Storage objects. These objects are created in\n\t\t\txOpen(). Their refcount is decremented in xClose(), and the\n\t\t\trecord is destroyed if the refcount reaches 0. We refcount so\n\t\t\tthat concurrent active xOpen()s on a given name, and within a\n\t\t\tgiven thread, use the same storage object.\n\t\t\t*/\n\t\t\tcache.storagePool = Object.assign(Object.create(null), { [nameOfThisThreadStorage]: newStorageObj(nameOfThisThreadStorage) });\n\t\t\tif (globalThis.Storage) {\n\t\t\t\tif (globalThis.localStorage instanceof globalThis.Storage) cache.storagePool.local = newStorageObj(\"local\", globalThis.localStorage);\n\t\t\t\tif (globalThis.sessionStorage instanceof globalThis.Storage) cache.storagePool.session = newStorageObj(\"session\", globalThis.sessionStorage);\n\t\t\t}\n\t\t\tcache.builtinStorageNames = Object.keys(cache.storagePool);\n\t\t\tconst isBuiltinName = (n) => cache.builtinStorageNames.indexOf(n) > -1;\n\t\t\tfor (const k of Object.keys(cache.storagePool)) {\n\t\t\t\tconst orig = cache.storagePool[k];\n\t\t\t\tcache.storagePool[k + \"-journal\"] = orig;\n\t\t\t}\n\t\t\tcache.setError = (e = void 0, dfltErrCode = capi.SQLITE_ERROR) => {\n\t\t\t\tif (e) {\n\t\t\t\t\tcache.lastError = e;\n\t\t\t\t\treturn e.resultCode | 0 || dfltErrCode;\n\t\t\t\t}\n\t\t\t\tdelete cache.lastError;\n\t\t\t\treturn 0;\n\t\t\t};\n\t\t\tcache.popError = () => {\n\t\t\t\tconst e = cache.lastError;\n\t\t\t\tdelete cache.lastError;\n\t\t\t\treturn e;\n\t\t\t};\n\t\t\t/** Exception handler for notifyListeners(). */\n\t\t\tconst catchForNotify = (e) => {\n\t\t\t\twarn(\"kvvfs.listener handler threw:\", e);\n\t\t\t};\n\t\t\tconst kvvfsDecode = wasm.exports.sqlite3__wasm_kvvfs_decode;\n\t\t\tconst kvvfsEncode = wasm.exports.sqlite3__wasm_kvvfs_encode;\n\t\t\t/**\n\t\t\tListener events and their argument(s) (via the callback(ev)\n\t\t\tev.data member):\n\t\t\t\n\t\t\t'open': number of opened handles on this storage.\n\t\t\t\n\t\t\t'close': number of opened handles on this storage.\n\t\t\t\n\t\t\t'write': key, value\n\t\t\t\n\t\t\t'delete': key\n\t\t\t\n\t\t\t'sync': true if it's from xSync(), false if it's from\n\t\t\txFileControl().\n\t\t\t\n\t\t\tFor efficiency's sake, all calls to this function should\n\t\t\tbe in the form:\n\t\t\t\n\t\t\tstore.listeners && notifyListeners(...);\n\t\t\t\n\t\t\tFailing to do so will trigger an exceptin in this function (which\n\t\t\twill be ignored but may produce a console warning).\n\t\t\t*/\n\t\t\tconst notifyListeners = async function(eventName, store, ...args) {\n\t\t\t\ttry {\n\t\t\t\t\tif (store.keyPrefix && args[0]) args[0] = args[0].replace(store.keyPrefix, \"\");\n\t\t\t\t\tlet u8enc, z0, z1, wcache;\n\t\t\t\t\tfor (const ear of store.listeners) {\n\t\t\t\t\t\tconst ev = Object.create(null);\n\t\t\t\t\t\tev.storageName = store.jzClass;\n\t\t\t\t\t\tev.type = eventName;\n\t\t\t\t\t\tear.decodePages;\n\t\t\t\t\t\tconst f = ear.events[eventName];\n\t\t\t\t\t\tif (f) {\n\t\t\t\t\t\t\tif (!ear.includeJournal && args[0] === \"jrnl\") continue;\n\t\t\t\t\t\t\tif (\"write\" === eventName && ear.decodePages && +args[0] > 0) {\n\t\t\t\t\t\t\t\tev.data = [args[0]];\n\t\t\t\t\t\t\t\tif (wcache?.[args[0]]) {\n\t\t\t\t\t\t\t\t\tev.data[1] = wcache[args[0]];\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tu8enc ??= new TextEncoder(\"utf-8\");\n\t\t\t\t\t\t\t\tz0 ??= cache.memBuffer(10);\n\t\t\t\t\t\t\t\tz1 ??= cache.memBuffer(11);\n\t\t\t\t\t\t\t\tconst u = u8enc.encode(args[1]);\n\t\t\t\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\t\t\t\theap.set(u, Number(z0));\n\t\t\t\t\t\t\t\theap[wasm.ptr.addn(z0, u.length)] = 0;\n\t\t\t\t\t\t\t\tconst rc = kvvfsDecode(z0, z1, cache.buffer.n);\n\t\t\t\t\t\t\t\tif (rc > 0) {\n\t\t\t\t\t\t\t\t\twcache ??= Object.create(null);\n\t\t\t\t\t\t\t\t\twcache[args[0]] = ev.data[1] = heap.slice(Number(z1), wasm.ptr.addn(z1, rc));\n\t\t\t\t\t\t\t\t} else continue;\n\t\t\t\t\t\t\t} else ev.data = args.length ? args.length === 1 ? args[0] : args : void 0;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tf(ev)?.catch?.(catchForNotify);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\twarn(\"notifyListeners [\", store.jzClass, \"]\", eventName, e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcatchForNotify(e);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns the storage object mapped to the given string zClass\n\t\t\t(C-string pointer or JS string).\n\t\t\t*/\n\t\t\tconst storageForZClass = (zClass) => \"string\" === typeof zClass ? cache.storagePool[zClass] : cache.storagePool[wasm.cstrToJs(zClass)];\n\t\t\tconst kvvfsMakeKey = wasm.exports.sqlite3__wasm_kvvfsMakeKey;\n\t\t\t/**\n\t\t\tReturns a C string from kvvfsMakeKey() OR returns zKey. In the\n\t\t\tformer case the memory is static, so must be copied before a\n\t\t\tsecond call. zKey MUST be a pointer passed to a VFS/file method,\n\t\t\tto allow us to avoid an alloc and/or an snprintf(). It requires\n\t\t\tC-string arguments for zClass and zKey. zClass may be NULL but\n\t\t\tzKey may not.\n\t\t\t*/\n\t\t\tconst zKeyForStorage = (store, zClass, zKey) => {\n\t\t\t\treturn zClass && store.keyPrefix ? kvvfsMakeKey(zClass, zKey) : zKey;\n\t\t\t};\n\t\t\tconst jsKeyForStorage = (store, zClass, zKey) => wasm.cstrToJs(zKeyForStorage(store, zClass, zKey));\n\t\t\tconst storageGetDbSize = (store) => +store.storage.getItem(store.keyPrefix + \"sz\");\n\t\t\t/**\n\t\t\tsqlite3_file pointers => objects, each of which has:\n\t\t\t\n\t\t\t.file = KVVfsFile instance\n\t\t\t\n\t\t\t.jzClass = JS-string form of f.$zClass\n\t\t\t\n\t\t\t.storage = Storage object. It is shared between a db and its\n\t\t\tjournal.\n\t\t\t*/\n\t\t\tconst pFileHandles = /* @__PURE__ */ new Map();\n\t\t\t/**\n\t\t\tOriginal WASM functions for methods we partially override.\n\t\t\t*/\n\t\t\tconst originalMethods = {\n\t\t\t\tvfs: Object.create(null),\n\t\t\t\tioDb: Object.create(null),\n\t\t\t\tioJrnl: Object.create(null)\n\t\t\t};\n\t\t\tconst pVfs = new capi.sqlite3_vfs(kvvfsMethods.$pVfs);\n\t\t\tconst pIoDb = new capi.sqlite3_io_methods(kvvfsMethods.$pIoDb);\n\t\t\tconst pIoJrnl = new capi.sqlite3_io_methods(kvvfsMethods.$pIoJrnl);\n\t\t\tconst recordHandler = Object.create(null);\n\t\t\tconst kvvfsInternal = Object.assign(Object.create(null), {\n\t\t\t\tpFileHandles,\n\t\t\t\tcache,\n\t\t\t\tstorageForZClass,\n\t\t\t\tKVVfsStorage,\n\t\t\t\tdisablePageSizeChange: true\n\t\t\t});\n\t\t\tif (kvvfs.log) kvvfs.internal = kvvfsInternal;\n\t\t\t/**\n\t\t\tImplementations for members of the object referred to by\n\t\t\tsqlite3__wasm_kvvfs_methods(). We swap out some native\n\t\t\timplementations with these so that we can use JS Storage for\n\t\t\ttheir backing store.\n\t\t\t*/\n\t\t\tconst methodOverrides = {\n\t\t\t\trecordHandler: {\n\t\t\t\t\txRcrdRead: (zClass, zKey, zBuf, nBuf) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst jzClass = wasm.cstrToJs(zClass);\n\t\t\t\t\t\t\tconst store = storageForZClass(jzClass);\n\t\t\t\t\t\t\tif (!store) return -1;\n\t\t\t\t\t\t\tconst jXKey = jsKeyForStorage(store, zClass, zKey);\n\t\t\t\t\t\t\tkvvfs?.log?.xRcrdRead && warn(\"xRcrdRead\", jzClass, jXKey, nBuf, store);\n\t\t\t\t\t\t\tconst jV = store.storage.getItem(jXKey);\n\t\t\t\t\t\t\tif (null === jV) return -1;\n\t\t\t\t\t\t\tconst nV = jV.length;\n\t\t\t\t\t\t\tif (nBuf <= 0) return nV;\n\t\t\t\t\t\t\telse if (1 === nBuf) {\n\t\t\t\t\t\t\t\twasm.poke(zBuf, 0);\n\t\t\t\t\t\t\t\treturn nV;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (nBuf + 1 < nV) toss3(capi.SQLITE_RANGE, \"xRcrdRead()\", jzClass, jXKey, \"input buffer is too small: need\", nV, \"but have\", nBuf);\n\t\t\t\t\t\t\tconst zV = cache.memBuffer(0);\n\t\t\t\t\t\t\tconst heap = wasm.heap8();\n\t\t\t\t\t\t\tlet i;\n\t\t\t\t\t\t\tfor (i = 0; i < nV; ++i) heap[wasm.ptr.add(zV, i)] = jV.codePointAt(i) & 255;\n\t\t\t\t\t\t\theap.copyWithin(Number(zBuf), Number(zV), wasm.ptr.addn(zV, i));\n\t\t\t\t\t\t\theap[wasm.ptr.add(zBuf, nV)] = 0;\n\t\t\t\t\t\t\treturn nBuf;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"kvrecordRead()\", e);\n\t\t\t\t\t\t\tcache.setError(e);\n\t\t\t\t\t\t\treturn -2;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txRcrdWrite: (zClass, zKey, zData) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst store = storageForZClass(zClass);\n\t\t\t\t\t\t\tconst jxKey = jsKeyForStorage(store, zClass, zKey);\n\t\t\t\t\t\t\tconst jData = wasm.cstrToJs(zData);\n\t\t\t\t\t\t\tkvvfs?.log?.xRcrdWrite && warn(\"xRcrdWrite\", jxKey, store);\n\t\t\t\t\t\t\tstore.storage.setItem(jxKey, jData);\n\t\t\t\t\t\t\tstore.listeners && notifyListeners(\"write\", store, jxKey, jData);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"kvrecordWrite()\", e);\n\t\t\t\t\t\t\treturn cache.setError(e, capi.SQLITE_IOERR);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txRcrdDelete: (zClass, zKey) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst store = storageForZClass(zClass);\n\t\t\t\t\t\t\tconst jxKey = jsKeyForStorage(store, zClass, zKey);\n\t\t\t\t\t\t\tkvvfs?.log?.xRcrdDelete && warn(\"xRcrdDelete\", jxKey, store);\n\t\t\t\t\t\t\tstore.storage.removeItem(jxKey);\n\t\t\t\t\t\t\tstore.listeners && notifyListeners(\"delete\", store, jxKey);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"kvrecordDelete()\", e);\n\t\t\t\t\t\t\treturn cache.setError(e, capi.SQLITE_IOERR);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tvfs: {\n\t\t\t\t\txOpen: function(pProtoVfs, zName, pProtoFile, flags, pOutFlags) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\tlet zToFree;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (!zName) {\n\t\t\t\t\t\t\t\tzToFree = wasm.allocCString(\"\" + pProtoFile + \".\" + (Math.random() * 1e5 | 0));\n\t\t\t\t\t\t\t\tzName = zToFree;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst jzClass = wasm.cstrToJs(zName);\n\t\t\t\t\t\t\tkvvfs?.log?.xOpen && debug(\"xOpen\", jzClass, \"flags =\", flags);\n\t\t\t\t\t\t\tvalidateStorageName(jzClass, true);\n\t\t\t\t\t\t\tif (flags & (capi.SQLITE_OPEN_MAIN_DB | capi.SQLITE_OPEN_TEMP_DB | capi.SQLITE_OPEN_TRANSIENT_DB) && cache.rxJournalSuffix.test(jzClass)) toss3(capi.SQLITE_ERROR, \"DB files may not have a '-journal' suffix.\");\n\t\t\t\t\t\t\tlet s = storageForZClass(jzClass);\n\t\t\t\t\t\t\tif (!s && !(flags & capi.SQLITE_OPEN_CREATE)) toss3(capi.SQLITE_ERROR, \"Storage not found:\", jzClass);\n\t\t\t\t\t\t\tconst rc = originalMethods.vfs.xOpen(pProtoVfs, zName, pProtoFile, flags, pOutFlags);\n\t\t\t\t\t\t\tif (rc) return rc;\n\t\t\t\t\t\t\tlet deleteAt0 = !!(capi.SQLITE_OPEN_DELETEONCLOSE & flags);\n\t\t\t\t\t\t\tif (wasm.isPtr(arguments[1])) {\n\t\t\t\t\t\t\t\tif (capi.sqlite3_uri_boolean(zName, \"delete-on-close\", 0)) deleteAt0 = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst f = new KVVfsFile(pProtoFile);\n\t\t\t\t\t\t\tutil.assert(f.$zClass, \"Missing f.$zClass\");\n\t\t\t\t\t\t\tf.addOnDispose(zToFree);\n\t\t\t\t\t\t\tzToFree = void 0;\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\t++s.refc;\n\t\t\t\t\t\t\t\ts.files.push(f);\n\t\t\t\t\t\t\t\twasm.poke32(pOutFlags, flags);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twasm.poke32(pOutFlags, flags | capi.SQLITE_OPEN_CREATE);\n\t\t\t\t\t\t\t\tutil.assert(!f.$isJournal, \"Opening a journal before its db? \" + jzClass);\n\t\t\t\t\t\t\t\tconst nm = jzClass.replace(cache.rxJournalSuffix, \"\");\n\t\t\t\t\t\t\t\ts = newStorageObj(nm);\n\t\t\t\t\t\t\t\tinstallStorageAndJournal(s);\n\t\t\t\t\t\t\t\ts.files.push(f);\n\t\t\t\t\t\t\t\ts.deleteAtRefc0 = deleteAt0;\n\t\t\t\t\t\t\t\tkvvfs?.log?.xOpen && debug(\"xOpen installed storage handle [\", nm, nm + \"-journal\", \"]\", s);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpFileHandles.set(pProtoFile, {\n\t\t\t\t\t\t\t\tstore: s,\n\t\t\t\t\t\t\t\tfile: f,\n\t\t\t\t\t\t\t\tjzClass\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ts.listeners && notifyListeners(\"open\", s, s.files.length);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\twarn(\"xOpen:\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tzToFree && wasm.dealloc(zToFree);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txDelete: function(pVfs, zName, iSyncFlag) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst jzName = wasm.cstrToJs(zName);\n\t\t\t\t\t\t\tif (cache.rxJournalSuffix.test(jzName)) recordHandler.xRcrdDelete(zName, cache.zKeyJrnl);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\twarn(\"xDelete\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txAccess: function(pProtoVfs, zPath, flags, pResOut) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst s = storageForZClass(zPath);\n\t\t\t\t\t\t\tconst jzPath = s?.jzClass || wasm.cstrToJs(zPath);\n\t\t\t\t\t\t\tif (kvvfs?.log?.xAccess) debug(\"xAccess\", jzPath, \"flags =\", flags, \"*pResOut =\", wasm.peek32(pResOut), \"store =\", s);\n\t\t\t\t\t\t\tif (!s)\n /** The xAccess method returns [SQLITE_OK] on success or some\n\t\t\t\t\t\t\t** non-zero error code if there is an I/O error or if the name of\n\t\t\t\t\t\t\t** the file given in the second argument is illegal.\n\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tvalidateStorageName(jzPath);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\twasm.poke32(pResOut, 0);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\tconst key = s.keyPrefix + (cache.rxJournalSuffix.test(jzPath) ? \"jrnl\" : \"1\");\n\t\t\t\t\t\t\t\tconst res = s.storage.getItem(key) ? 0 : 1;\n\t\t\t\t\t\t\t\twasm.poke32(pResOut, res);\n\t\t\t\t\t\t\t} else wasm.poke32(pResOut, 0);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xAccess\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txRandomness: function(pVfs, nOut, pOut) {\n\t\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tconst npOut = Number(pOut);\n\t\t\t\t\t\tfor (; i < nOut; ++i) heap[npOut + i] = Math.random() * 255e3 & 255;\n\t\t\t\t\t\treturn nOut;\n\t\t\t\t\t},\n\t\t\t\t\txGetLastError: function(pVfs, nOut, pOut) {\n\t\t\t\t\t\tconst e = cache.popError();\n\t\t\t\t\t\tdebug(\"xGetLastError\", e);\n\t\t\t\t\t\tif (e) {\n\t\t\t\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst [cMsg, n] = wasm.scopedAllocCString(e.message, true);\n\t\t\t\t\t\t\t\twasm.cstrncpy(pOut, cMsg, nOut);\n\t\t\t\t\t\t\t\tif (n > nOut) wasm.poke8(wasm.ptr.add(pOut, nOut, -1), 0);\n\t\t\t\t\t\t\t\tdebug(\"set xGetLastError\", e.message);\n\t\t\t\t\t\t\t\treturn e.resultCode | 0 || capi.SQLITE_IOERR;\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn capi.SQLITE_NOMEM;\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tioDb: {\n\t\t\t\t\txClose: function(pFile) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\tkvvfs?.log?.xClose && debug(\"xClose\", pFile, h);\n\t\t\t\t\t\t\tif (h) {\n\t\t\t\t\t\t\t\tpFileHandles.delete(pFile);\n\t\t\t\t\t\t\t\tconst s = h.store;\n\t\t\t\t\t\t\t\ts.files = s.files.filter((v) => v !== h.file);\n\t\t\t\t\t\t\t\tif (--s.refc <= 0 && s.deleteAtRefc0) deleteStorage(s);\n\t\t\t\t\t\t\t\toriginalMethods.ioDb.xClose(pFile);\n\t\t\t\t\t\t\t\th.file.dispose();\n\t\t\t\t\t\t\t\ts.listeners && notifyListeners(\"close\", s, s.files.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xClose\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txFileControl: function(pFile, opId, pArg) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\tutil.assert(h, \"Missing KVVfsFile handle\");\n\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && debug(\"xFileControl\", h, \"op =\", opId);\n\t\t\t\t\t\t\tif (opId === capi.SQLITE_FCNTL_PRAGMA && kvvfsInternal.disablePageSizeChange) {\n\t\t\t\t\t\t\t\tconst zName = wasm.peekPtr(wasm.ptr.add(pArg, wasm.ptr.size));\n\t\t\t\t\t\t\t\tif (\"page_size\" === wasm.cstrToJs(zName)) {\n\t\t\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && debug(\"xFileControl pragma\", wasm.cstrToJs(zName));\n\t\t\t\t\t\t\t\t\tconst zVal = wasm.peekPtr(wasm.ptr.add(pArg, 2 * wasm.ptr.size));\n\t\t\t\t\t\t\t\t\tif (zVal) {\n\t\t\t\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && warn(\"xFileControl pragma\", h, \"NOT setting page size to\", wasm.cstrToJs(zVal));\n\t\t\t\t\t\t\t\t\t\th.file.$szPage = -1;\n\t\t\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t\t\t} else if (h.file.$szPage > 0) {\n\t\t\t\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && warn(\"xFileControl\", h, \"getting page size\", h.file.$szPage);\n\t\t\t\t\t\t\t\t\t\twasm.pokePtr(pArg, wasm.allocCString(\"\" + h.file.$szPage));\n\t\t\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst rc = originalMethods.ioDb.xFileControl(pFile, opId, pArg);\n\t\t\t\t\t\t\tif (0 == rc && capi.SQLITE_FCNTL_SYNC === opId) h.store.listeners && notifyListeners(\"sync\", h.store, false);\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xFileControl\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txSync: function(pFile, flags) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\tkvvfs?.log?.xSync && debug(\"xSync\", h);\n\t\t\t\t\t\t\tutil.assert(h, \"Missing KVVfsFile handle\");\n\t\t\t\t\t\t\tconst rc = originalMethods.ioDb.xSync(pFile, flags);\n\t\t\t\t\t\t\tif (0 == rc && h.store.listeners) notifyListeners(\"sync\", h.store, true);\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xSync\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tioJrnl: { xClose: true }\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tutil.assert(cache.buffer.n > 1024 * 129, \"Heap buffer is not large enough\");\n\t\t\t\tfor (const e of Object.entries(methodOverrides.recordHandler)) {\n\t\t\t\t\tconst k = e[0], f = e[1];\n\t\t\t\t\trecordHandler[k] = f;\n\t\t\t\t\tkvvfsMethods[kvvfsMethods.memberKey(k)] = wasm.installFunction(kvvfsMethods.memberSignature(k), f);\n\t\t\t\t}\n\t\t\t\tfor (const e of Object.entries(methodOverrides.vfs)) {\n\t\t\t\t\tconst k = e[0], f = e[1], km = pVfs.memberKey(k), member = pVfs.structInfo.members[k] || util.toss(\"Missing pVfs.structInfo[\", k, \"]\");\n\t\t\t\t\toriginalMethods.vfs[k] = wasm.functionEntry(pVfs[km]);\n\t\t\t\t\tpVfs[km] = wasm.installFunction(member.signature, f);\n\t\t\t\t}\n\t\t\t\tfor (const e of Object.entries(methodOverrides.ioDb)) {\n\t\t\t\t\tconst k = e[0], f = e[1], km = pIoDb.memberKey(k);\n\t\t\t\t\toriginalMethods.ioDb[k] = wasm.functionEntry(pIoDb[km]) || util.toss(\"Missing native pIoDb[\", km, \"]\");\n\t\t\t\t\tpIoDb[km] = wasm.installFunction(pIoDb.memberSignature(k), f);\n\t\t\t\t}\n\t\t\t\tfor (const e of Object.entries(methodOverrides.ioJrnl)) {\n\t\t\t\t\tconst k = e[0], f = e[1], km = pIoJrnl.memberKey(k);\n\t\t\t\t\toriginalMethods.ioJrnl[k] = wasm.functionEntry(pIoJrnl[km]) || util.toss(\"Missing native pIoJrnl[\", km, \"]\");\n\t\t\t\t\tif (true === f) pIoJrnl[km] = pIoDb[km] || util.toss(\"Missing copied pIoDb[\", km, \"]\");\n\t\t\t\t\telse pIoJrnl[km] = wasm.installFunction(pIoJrnl.memberSignature(k), f);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tkvvfsMethods.dispose();\n\t\t\t\tpVfs.dispose();\n\t\t\t\tpIoDb.dispose();\n\t\t\t\tpIoJrnl.dispose();\n\t\t\t}\n\t\t\t/**\n\t\t\tClears all storage used by the kvvfs DB backend, deleting any\n\t\t\tDB(s) stored there.\n\t\t\t\n\t\t\tIts argument must be the name of a kvvfs storage object:\n\t\t\t\n\t\t\t- 'session'\n\t\t\t- 'local'\n\t\t\t- '' - see below.\n\t\t\t- A transient kvvfs storage object name.\n\t\t\t\n\t\t\tIn the first two cases, only sessionStorage resp. localStorage is\n\t\t\tcleared. An empty string resolves to both 'local' and 'session'\n\t\t\tstorage.\n\t\t\t\n\t\t\tReturns the number of entries cleared.\n\t\t\t\n\t\t\tAs of kvvfs version 2:\n\t\t\t\n\t\t\tThis API is available in Worker threads but does not have access\n\t\t\tto localStorage or sessionStorage in them. Prior versions did not\n\t\t\tinclude this API in Worker threads.\n\t\t\t\n\t\t\tDifferences in this function in version 2:\n\t\t\t\n\t\t\t- It accepts an arbitrary storage name. In v1 this was a silent\n\t\t\tno-op for any names other than ('local','session','').\n\t\t\t\n\t\t\t- It throws if a db currently has the storage opened UNLESS the\n\t\t\tstorage object is localStorage or sessionStorage. That version 1\n\t\t\tdid not throw for this case was due to an architectural\n\t\t\tlimitation which has since been overcome, but removal of\n\t\t\tJsStorageDb.prototype.clearStorage() would be a backwards compatibility\n\t\t\tbreak, so this function permits wiping the storage for those two\n\t\t\tcases even if they are opened. Use with care.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_clear = function callee(which) {\n\t\t\t\tif (\"\" === which) return callee(\"local\") + callee(\"session\");\n\t\t\t\tconst store = storageForZClass(which);\n\t\t\t\tif (!store) return 0;\n\t\t\t\tif (store.files.length) if (globalThis.localStorage === store.storage || globalThis.sessionStorage === store.storage) {} else toss3(capi.SQLITE_ACCESS, \"Cannot clear in-use database storage.\");\n\t\t\t\tconst s = store.storage;\n\t\t\t\tconst toRm = [];\n\t\t\t\tlet i, n = s.length;\n\t\t\t\tfor (i = 0; i < n; ++i) {\n\t\t\t\t\tconst k = s.key(i);\n\t\t\t\t\tif (!store.keyPrefix || k.startsWith(store.keyPrefix)) toRm.push(k);\n\t\t\t\t}\n\t\t\t\ttoRm.forEach((kk) => s.removeItem(kk));\n\t\t\t\treturn toRm.length;\n\t\t\t};\n\t\t\t/**\n\t\t\tThis routine estimates the approximate amount of\n\t\t\tstorage used by the given kvvfs back-end.\n\t\t\t\n\t\t\tIts arguments are as documented for sqlite3_js_kvvfs_clear(),\n\t\t\tonly the operation this performs is different.\n\t\t\t\n\t\t\tThe returned value is twice the \"length\" value of every matching\n\t\t\tkey and value, noting that JavaScript stores each character in 2\n\t\t\tbytes.\n\t\t\t\n\t\t\tThe returned size is not authoritative from the perspective of\n\t\t\thow much data can fit into localStorage and sessionStorage, as\n\t\t\tthe precise algorithms for determining those limits are\n\t\t\tunspecified and may include per-entry overhead invisible to\n\t\t\tclients.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_size = function callee(which) {\n\t\t\t\tif (\"\" === which) return callee(\"local\") + callee(\"session\");\n\t\t\t\tconst store = storageForZClass(which);\n\t\t\t\tif (!store) return 0;\n\t\t\t\tconst s = store.storage;\n\t\t\t\tlet i, sz = 0;\n\t\t\t\tfor (i = 0; i < s.length; ++i) {\n\t\t\t\t\tconst k = s.key(i);\n\t\t\t\t\tif (!store.keyPrefix || k.startsWith(store.keyPrefix)) {\n\t\t\t\t\t\tsz += k.length;\n\t\t\t\t\t\tsz += s.getItem(k).length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn sz * 2;\n\t\t\t};\n\t\t\t/**\n\t\t\tExports a kvvfs storage object to an object, optionally\n\t\t\tJSON-friendly.\n\t\t\t\n\t\t\tUsages:\n\t\t\t\n\t\t\tthisfunc(storageName);\n\t\t\tthisfunc(options);\n\t\t\t\n\t\t\tIn the latter case, the options object must be an object with\n\t\t\tthe following properties:\n\t\t\t\n\t\t\t- \"name\" (string) required. The storage to export.\n\t\t\t\n\t\t\t- \"decodePages\" (bool=false). If true, the .pages result property\n\t\t\tholdes Uint8Array objects holding the raw binary-format db\n\t\t\tpages. The default is to use kvvfs-encoded string pages\n\t\t\t(JSON-friendly).\n\t\t\t\n\t\t\t- \"includeJournal\" (bool=false). If true and the db has a current\n\t\t\tjournal, it is exported as well. (Kvvfs journals are stored as a\n\t\t\tsingle record within the db's storage object.)\n\t\t\t\n\t\t\tThe returned object is structured as follows...\n\t\t\t\n\t\t\t- \"name\": the name of the storage. This is 'local' or 'session'\n\t\t\tfor localStorage resp. sessionStorage, and an arbitrary name for\n\t\t\ttransient storage. This propery may be changed before passing\n\t\t\tthis object to sqlite3_js_kvvfs_import() in order to\n\t\t\timport into a different storage object.\n\t\t\t\n\t\t\t- \"timestamp\": the time this function was called, in Unix\n\t\t\tepoch milliseconds.\n\t\t\t\n\t\t\t- \"size\": the unencoded db size.\n\t\t\t\n\t\t\t- \"journal\": if options.includeJournal is true and this db has a\n\t\t\tjournal, it is stored as a string here, otherwise this property\n\t\t\tis not set.\n\t\t\t\n\t\t\t- \"pages\": An array holding the raw encoded db pages in their\n\t\t\tproper order.\n\t\t\t\n\t\t\tThrows if this db is not opened.\n\t\t\t\n\t\t\tThe encoding of the underlying database is not part of this\n\t\t\tinterface - it is simply passed on as-is. Interested parties are\n\t\t\tdirected to src/os_kv.c in the SQLite source tree, with the\n\t\t\tcaveat that that code also does not offer a public interface.\n\t\t\ti.e. the encoding is a private implementation detail of kvvfs.\n\t\t\tThe format may be changed in the future but kvvfs will continue\n\t\t\tto support the current form.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_export = function callee(...args) {\n\t\t\t\tlet opt;\n\t\t\t\tif (1 === args.length && \"object\" === typeof args[0]) opt = args[0];\n\t\t\t\telse if (args.length) opt = Object.assign(Object.create(null), { name: args[0] });\n\t\t\t\tconst store = opt ? storageForZClass(opt.name) : null;\n\t\t\t\tif (!store) toss3(capi.SQLITE_NOTFOUND, \"There is no kvvfs storage named\", opt?.name);\n\t\t\t\tconst s = store.storage;\n\t\t\t\tconst rc = Object.assign(Object.create(null), {\n\t\t\t\t\tname: store.jzClass,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\tpages: []\n\t\t\t\t});\n\t\t\t\tconst pages = Object.create(null);\n\t\t\t\tconst keyPrefix = store.keyPrefix;\n\t\t\t\tconst rxTail = keyPrefix ? /^kvvfs-[^-]+-(\\w+)/ : void 0;\n\t\t\t\tlet i = 0, n = s.length;\n\t\t\t\tfor (; i < n; ++i) {\n\t\t\t\t\tconst k = s.key(i);\n\t\t\t\t\tif (!keyPrefix || k.startsWith(keyPrefix)) {\n\t\t\t\t\t\tlet kk = (keyPrefix ? rxTail.exec(k) : void 0)?.[1] ?? k;\n\t\t\t\t\t\tswitch (kk) {\n\t\t\t\t\t\t\tcase \"jrnl\":\n\t\t\t\t\t\t\t\tif (opt.includeJournal) rc.journal = s.getItem(k);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"sz\":\n\t\t\t\t\t\t\t\trc.size = +s.getItem(k);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tkk = +kk;\n\t\t\t\t\t\t\t\tif (!util.isInt32(kk) || kk <= 0) toss3(capi.SQLITE_RANGE, \"Malformed kvvfs key: \" + k);\n\t\t\t\t\t\t\t\tif (opt.decodePages) {\n\t\t\t\t\t\t\t\t\tconst spg = s.getItem(k), n = spg.length, z = cache.memBuffer(0), zDec = cache.memBuffer(1), heap = wasm.heap8u();\n\t\t\t\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\t\t\t\tfor (; i < n; ++i) heap[wasm.ptr.add(z, i)] = spg.codePointAt(i) & 255;\n\t\t\t\t\t\t\t\t\theap[wasm.ptr.add(z, i)] = 0;\n\t\t\t\t\t\t\t\t\tconst nDec = kvvfsDecode(z, zDec, cache.buffer.n);\n\t\t\t\t\t\t\t\t\tpages[kk] = heap.slice(Number(zDec), wasm.ptr.addn(zDec, nDec));\n\t\t\t\t\t\t\t\t} else pages[kk] = s.getItem(k);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (opt.decodePages) cache.memBufferFree(1);\n\t\t\t\tObject.keys(pages).map((v) => +v).sort().forEach((v) => rc.pages.push(pages[v]));\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tThe counterpart of sqlite3_js_kvvfs_export(). Its\n\t\t\targument must be the result of that function() or\n\t\t\ta compatible one.\n\t\t\t\n\t\t\tThis either replaces the contents of an existing transient\n\t\t\tstorage object or installs one named exp.name, setting\n\t\t\tthe storage's db contents to that of the exp object.\n\t\t\t\n\t\t\tThrows on error. Error conditions include:\n\t\t\t\n\t\t\t- The given storage object is currently opened by any db.\n\t\t\tPerforming this page-by-page import would invoke undefined\n\t\t\tbehavior on them.\n\t\t\t\n\t\t\t- Malformed input object.\n\t\t\t\n\t\t\tIf it throws after starting the import then it clears the storage\n\t\t\tbefore returning, to avoid leaving the db in an undefined\n\t\t\tstate. It may throw for any of the above-listed conditions before\n\t\t\treaching that step, in which case the db is not modified. If\n\t\t\texp.name refers to a new storage name then if it throws, the name\n\t\t\tdoes not get installed.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_import = function(exp, overwrite = false) {\n\t\t\t\tif (!exp?.timestamp || !exp.name || void 0 === exp.size || !Array.isArray(exp.pages)) toss3(capi.SQLITE_MISUSE, \"Malformed export object.\");\n\t\t\t\telse if (!exp.size || exp.size !== (exp.size | 0) || exp.size >= 2147483647) toss3(capi.SQLITE_RANGE, \"Invalid db size: \" + exp.size);\n\t\t\t\tvalidateStorageName(exp.name);\n\t\t\t\tlet store = storageForZClass(exp.name);\n\t\t\t\tconst isNew = !store;\n\t\t\t\tif (store) {\n\t\t\t\t\tif (!overwrite) toss3(capi.SQLITE_ACCESS, \"Storage '\" + exp.name + \"' already exists and\", \"overwrite was not specified.\");\n\t\t\t\t\telse if (!store.files || !store.jzClass) toss3(capi.SQLITE_ERROR, \"Internal storage object\", exp.name, \"seems to be malformed.\");\n\t\t\t\t\telse if (store.files.length) toss3(capi.SQLITE_IOERR_ACCESS, \"Cannot import db storage while it is in use.\");\n\t\t\t\t\tsqlite3_js_kvvfs_clear(exp.name);\n\t\t\t\t} else store = newStorageObj(exp.name);\n\t\t\t\tconst keyPrefix = kvvfsKeyPrefix(exp.name);\n\t\t\t\tlet zEnc;\n\t\t\t\ttry {\n\t\t\t\t\tconst s = store.storage;\n\t\t\t\t\ts.setItem(keyPrefix + \"sz\", exp.size);\n\t\t\t\t\tif (exp.journal) s.setItem(keyPrefix + \"jrnl\", exp.journal);\n\t\t\t\t\tif (exp.pages[0] instanceof Uint8Array) exp.pages.forEach((u, ndx) => {\n\t\t\t\t\t\tconst n = u.length;\n\t\t\t\t\t\tzEnc ??= cache.memBuffer(1);\n\t\t\t\t\t\tconst zBin = cache.memBuffer(0), heap = wasm.heap8u();\n\t\t\t\t\t\theap.set(u, Number(zBin));\n\t\t\t\t\t\theap[wasm.ptr.addn(zBin, n)] = 0;\n\t\t\t\t\t\tconst rc = kvvfsEncode(zBin, n, zEnc);\n\t\t\t\t\t\tutil.assert(rc < cache.buffer.n, \"Impossibly long output - possibly smashed the heap\");\n\t\t\t\t\t\tutil.assert(0 === wasm.peek8(wasm.ptr.add(zEnc, rc)), \"Expecting NUL-terminated encoded output\");\n\t\t\t\t\t\tconst jenc = wasm.cstrToJs(zEnc);\n\t\t\t\t\t\ts.setItem(keyPrefix + (ndx + 1), jenc);\n\t\t\t\t\t});\n\t\t\t\t\telse if (exp.pages[0]) exp.pages.forEach((v, ndx) => s.setItem(keyPrefix + (ndx + 1), v));\n\t\t\t\t\tif (isNew) installStorageAndJournal(store);\n\t\t\t\t} catch {\n\t\t\t\t\tif (!isNew) try {\n\t\t\t\t\t\tsqlite3_js_kvvfs_clear(exp.name);\n\t\t\t\t\t} catch (ee) {}\n\t\t\t\t} finally {\n\t\t\t\t\tif (zEnc) cache.memBufferFree(1);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\t/**\n\t\t\tIf no kvvfs storage exists with the given name, one is\n\t\t\tinstalled. If one exists, its reference count is increased so\n\t\t\tthat it won't be freed by the closing of a database or journal\n\t\t\tfile.\n\t\t\t\n\t\t\tThrows if the name is not valid for a new storage object.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_reserve = function(name) {\n\t\t\t\tlet store = storageForZClass(name);\n\t\t\t\tif (store) {\n\t\t\t\t\t++store.refc;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvalidateStorageName(name);\n\t\t\t\tinstallStorageAndJournal(newStorageObj(name));\n\t\t\t};\n\t\t\t/**\n\t\t\tConditionally \"unlinks\" a kvvfs storage object, reducing its\n\t\t\treference count by 1.\n\t\t\t\n\t\t\tThis is a no-op if name ends in \"-journal\" or refers to a\n\t\t\tbuilt-in storage object.\n\t\t\t\n\t\t\tIt will not lower the refcount below the number of\n\t\t\tcurrently-opened db/journal files for the storage (so that it\n\t\t\tcannot delete it out from under them).\n\t\t\t\n\t\t\tIf the refcount reaches 0 then the storage object is\n\t\t\tremoved.\n\t\t\t\n\t\t\tReturns true if it reduces the refcount, else false. A result of\n\t\t\ttrue does not necessarily mean that the storage unit was removed,\n\t\t\tjust that its refcount was lowered. Similarly, a result of false\n\t\t\tdoes not mean that the storage is removed - it may still have\n\t\t\topened handles.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_unlink = function(name) {\n\t\t\t\tconst store = storageForZClass(name);\n\t\t\t\tif (!store || kvvfsIsPersistentName(store.jzClass) || isBuiltinName(store.jzClass) || cache.rxJournalSuffix.test(name)) return false;\n\t\t\t\tif (store.refc > store.files.length || 0 === store.files.length) {\n\t\t\t\t\tif (--store.refc <= 0) deleteStorage(store);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\t/**\n\t\t\tAdds an event listener to a kvvfs storage object. The idea is\n\t\t\tthat this can be used to asynchronously back up one kvvfs storage\n\t\t\tobject to another or another channel entirely. (The caveat in the\n\t\t\tlatter case is that kvvfs's format is not readily consumable by\n\t\t\tdownstream code.)\n\t\t\t\n\t\t\tIts argument must be an object with the following properties:\n\t\t\t\n\t\t\t- storage: the name of the kvvfs storage object.\n\t\t\t\n\t\t\t- reserve [=false]: if true, sqlite3_js_kvvfs_reserve() is used\n\t\t\tto ensure that the storage exists if it does not already.\n\t\t\tIf this is false and the storage does not exist then an\n\t\t\texception is thrown.\n\t\t\t\n\t\t\t- events: an object which may have any of the following\n\t\t\tcallback function properties: open, close, write, delete.\n\t\t\t\n\t\t\t- decodePages [=false]: if true, write events will receive each\n\t\t\tdb page write in the form of a Uint8Array holding the raw binary\n\t\t\tdb page. The default is to emit the kvvfs-format page because it\n\t\t\trequires no extra work, we already have it in hand, and it's\n\t\t\toften smaller. It's not great for interchange, though.\n\t\t\t\n\t\t\t- includeJournal [=false]: if true, writes and deletes of\n\t\t\t\"jrnl\" records are included. If false, no events are sent\n\t\t\tfor journal updates.\n\t\t\t\n\t\t\tPassing the same object to sqlite3_js_kvvfs_unlisten() will\n\t\t\tremove the listener.\n\t\t\t\n\t\t\tEach one of the events callbacks will be called asynchronously\n\t\t\twhen the given storage performs those operations. They may be\n\t\t\tasynchronous functions but are not required to be (the events are\n\t\t\tfired async either way, but making the event callbacks async may\n\t\t\tbe advantageous when multiple listeners are involved). All\n\t\t\texceptions, including those via Promises, are ignored but may (or\n\t\t\tmay not) trigger warning output on the console.\n\t\t\t\n\t\t\tEach callback gets passed a single object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t.type = the same as the name of the callback\n\t\t\t\n\t\t\t.storageName = the name of the storage object\n\t\t\t\n\t\t\t.data = callback-dependent:\n\t\t\t\n\t\t\t- 'open' and 'close' get an integer, the number of\n\t\t\tcurrently-opened handles on the storage.\n\t\t\t\n\t\t\t- 'write' gets a length-two array holding the key and value which\n\t\t\twere written. The key is always a string, even if it's a db page\n\t\t\tnumber. For db-page records, the value's type depends on\n\t\t\topt.decodePages. All others, including the journal, are strings.\n\t\t\t(The journal, being a kvvfs-specific format, is delivered in\n\t\t\tthat same JSON-friendly format.) More details below.\n\t\t\t\n\t\t\t- 'delete' gets the string-type key of the deleted record.\n\t\t\t\n\t\t\t- 'sync' gets a boolean value: true if it was triggered by db\n\t\t\tfile's xSync(), false if it was triggered by xFileControl(). The\n\t\t\tlatter triggers before the xSync() and also triggers if the DB\n\t\t\thas PRAGMA SYNCHRONOUS=OFF (in which case xSync() is not\n\t\t\ttriggered).\n\t\t\t\n\t\t\tThe key/value arguments to 'write', and key argument to 'delete',\n\t\t\tare in one of the following forms:\n\t\t\t\n\t\t\t- 'sz' = the unencoded db size as a string. This specific key is\n\t\t\tkey is never deleted, so is only ever passed to 'write' events.\n\t\t\t\n\t\t\t- 'jrnl' = the current db journal as a kvvfs-encoded string. This\n\t\t\tjournal format is not useful anywhere except in the kvvfs\n\t\t\tinternals. These events are not fired if opt.includeJournal is\n\t\t\tfalse.\n\t\t\t\n\t\t\t- '[1-9][0-9]*' (a db page number) = Its type depends on\n\t\t\topt.decodePages. These may be written and deleted in arbitrary\n\t\t\torder.\n\t\t\t\n\t\t\tDesign note: JS has StorageEvents but only in the main thread,\n\t\t\twhich is why the listeners are not based on that.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_listen = function(opt) {\n\t\t\t\tif (!opt || \"object\" !== typeof opt) toss3(capi.SQLITE_MISUSE, \"Expecting a listener object.\");\n\t\t\t\tlet store = storageForZClass(opt.storage);\n\t\t\t\tif (!store) if (opt.storage && opt.reserve) {\n\t\t\t\t\tsqlite3_js_kvvfs_reserve(opt.storage);\n\t\t\t\t\tstore = storageForZClass(opt.storage);\n\t\t\t\t\tutil.assert(store, \"Unexpectedly cannot fetch reserved storage \" + opt.storage);\n\t\t\t\t} else toss3(capi.SQLITE_NOTFOUND, \"No such storage:\", opt.storage);\n\t\t\t\tif (opt.events) (store.listeners ??= []).push(opt);\n\t\t\t};\n\t\t\t/**\n\t\t\tRemoves the kvvfs event listeners for the given options\n\t\t\tobject. It must be passed the same object instance which was\n\t\t\tpassed to sqlite3_js_kvvfs_listen().\n\t\t\t\n\t\t\tThis has no side effects if opt is invalid or is not a match for\n\t\t\tany listeners.\n\t\t\t\n\t\t\tReturn true if it unregisters its argument, else false.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_unlisten = function(opt) {\n\t\t\t\tconst store = storageForZClass(opt?.storage);\n\t\t\t\tif (store?.listeners && opt.events) {\n\t\t\t\t\tconst n = store.listeners.length;\n\t\t\t\t\tstore.listeners = store.listeners.filter((v) => v !== opt);\n\t\t\t\t\tconst rc = n > store.listeners.length;\n\t\t\t\t\tif (!store.listeners.length) store.listeners = void 0;\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\tsqlite3.kvvfs.reserve = sqlite3_js_kvvfs_reserve;\n\t\t\tsqlite3.kvvfs.import = sqlite3_js_kvvfs_import;\n\t\t\tsqlite3.kvvfs.export = sqlite3_js_kvvfs_export;\n\t\t\tsqlite3.kvvfs.unlink = sqlite3_js_kvvfs_unlink;\n\t\t\tsqlite3.kvvfs.listen = sqlite3_js_kvvfs_listen;\n\t\t\tsqlite3.kvvfs.unlisten = sqlite3_js_kvvfs_unlisten;\n\t\t\tsqlite3.kvvfs.exists = (name) => !!storageForZClass(name);\n\t\t\tsqlite3.kvvfs.estimateSize = sqlite3_js_kvvfs_size;\n\t\t\tsqlite3.kvvfs.clear = sqlite3_js_kvvfs_clear;\n\t\t\tif (globalThis.Storage) {\n\t\t\t\t/**\n\t\t\t\tPrior to version 2, kvvfs was only available in the main\n\t\t\t\tthread. We retain that for the v1 APIs, exposing them only in\n\t\t\t\tthe main UI thread. As of version 2, kvvfs is available in all\n\t\t\t\tthreads but only via its v2 interface (sqlite3.kvvfs).\n\t\t\t\t\n\t\t\t\tThese versions have a default argument value of \"\" which the v2\n\t\t\t\tversions lack.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_js_kvvfs_size = (which = \"\") => sqlite3_js_kvvfs_size(which);\n\t\t\t\tcapi.sqlite3_js_kvvfs_clear = (which = \"\") => sqlite3_js_kvvfs_clear(which);\n\t\t\t}\n\t\t\tif (sqlite3.oo1?.DB) {\n\t\t\t\t/**\n\t\t\t\tFunctionally equivalent to DB(storageName,'c','kvvfs') except\n\t\t\t\tthat it throws if the given storage name is not one of 'local'\n\t\t\t\tor 'session'.\n\t\t\t\t\n\t\t\t\tAs of version 3.46, the argument may optionally be an options\n\t\t\t\tobject in the form:\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\tfilename: 'session'|'local',\n\t\t\t\t... etc. (all options supported by the DB ctor)\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnoting that the 'vfs' option supported by main DB\n\t\t\t\tconstructor is ignored here: the vfs is always 'kvvfs'.\n\t\t\t\t*/\n\t\t\t\tconst DB = sqlite3.oo1.DB;\n\t\t\t\tsqlite3.oo1.JsStorageDb = function(storageName = sqlite3.oo1.JsStorageDb.defaultStorageName) {\n\t\t\t\t\tconst opt = DB.dbCtorHelper.normalizeArgs(...arguments);\n\t\t\t\t\topt.vfs = \"kvvfs\";\n\t\t\t\t\tswitch (opt.filename) {\n\t\t\t\t\t\tcase \":sessionStorage:\":\n\t\t\t\t\t\t\topt.filename = \"session\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \":localStorage:\":\n\t\t\t\t\t\t\topt.filename = \"local\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst m = /(file:(\\/\\/)?)([^?]+)/.exec(opt.filename);\n\t\t\t\t\tvalidateStorageName(m ? m[3] : opt.filename);\n\t\t\t\t\tDB.dbCtorHelper.call(this, opt);\n\t\t\t\t};\n\t\t\t\tsqlite3.oo1.JsStorageDb.defaultStorageName = cache.storagePool.session ? \"session\" : nameOfThisThreadStorage;\n\t\t\t\tconst jdb = sqlite3.oo1.JsStorageDb;\n\t\t\t\tjdb.prototype = Object.create(DB.prototype);\n\t\t\t\tjdb.clearStorage = sqlite3_js_kvvfs_clear;\n\t\t\t\t/**\n\t\t\t\tDEPRECATED: the inherited method of this name (as opposed to\n\t\t\t\tthe \"static\" class method) is deprecated with version 2 of\n\t\t\t\tkvvfs. This function will, for backwards comaptibility,\n\t\t\t\tcontinue to work with localStorage and sessionStorage, but will\n\t\t\t\tthrow for all other storage because they are opened. Version 1\n\t\t\t\twas not capable of recognizing that the storage was opened so\n\t\t\t\tpermitted wiping it out at any time, but that was arguably a\n\t\t\t\tbug.\n\t\t\t\t\n\t\t\t\tClears this database instance's storage or throws if this\n\t\t\t\tinstance has been closed. Returns the number of\n\t\t\t\tdatabase pages which were cleaned up.\n\t\t\t\t*/\n\t\t\t\tjdb.prototype.clearStorage = function() {\n\t\t\t\t\treturn jdb.clearStorage(this.affirmOpen().dbFilename(), true);\n\t\t\t\t};\n\t\t\t\t/** Equivalent to sqlite3_js_kvvfs_size(). */\n\t\t\t\tjdb.storageSize = sqlite3_js_kvvfs_size;\n\t\t\t\t/**\n\t\t\t\tReturns the _approximate_ number of bytes this database takes\n\t\t\t\tup in its storage or throws if this instance has been closed.\n\t\t\t\t*/\n\t\t\t\tjdb.prototype.storageSize = function() {\n\t\t\t\t\treturn jdb.storageSize(this.affirmOpen().dbFilename(), true);\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (sqlite3.__isUnderTest && sqlite3.vtab) {\n\t\t\t\t/**\n\t\t\t\tAn eponymous vtab for inspecting the kvvfs state. This is only\n\t\t\t\tintended for use in testing and development, not part of the\n\t\t\t\tpublic API.\n\t\t\t\t*/\n\t\t\t\tconst cols = Object.assign(Object.create(null), {\n\t\t\t\t\trowid: { type: \"INTEGER\" },\n\t\t\t\t\tname: { type: \"TEXT\" },\n\t\t\t\t\tnRef: { type: \"INTEGER\" },\n\t\t\t\t\tnOpen: { type: \"INTEGER\" },\n\t\t\t\t\tisTransient: { type: \"INTEGER\" },\n\t\t\t\t\tdbSize: { type: \"INTEGER\" }\n\t\t\t\t});\n\t\t\t\tObject.keys(cols).forEach((v, i) => cols[v].colId = i);\n\t\t\t\tconst VT = sqlite3.vtab;\n\t\t\t\tconst ProtoCursor = Object.assign(Object.create(null), { row: function() {\n\t\t\t\t\treturn cache.storagePool[this.names[this.rowid]];\n\t\t\t\t} });\n\t\t\t\tObject.assign(Object.create(ProtoCursor), {\n\t\t\t\t\trowid: 0,\n\t\t\t\t\tnames: Object.keys(cache.storagePool).filter((v) => !cache.rxJournalSuffix.test(v))\n\t\t\t\t});\n\t\t\t\tconst cursorState = function(cursor, reset) {\n\t\t\t\t\tconst o = cursor instanceof capi.sqlite3_vtab_cursor ? cursor : VT.xCursor.get(cursor);\n\t\t\t\t\tif (reset || !o.vTabState) o.vTabState = Object.assign(Object.create(ProtoCursor), {\n\t\t\t\t\t\trowid: 0,\n\t\t\t\t\t\tnames: Object.keys(cache.storagePool).filter((v) => !cache.rxJournalSuffix.test(v))\n\t\t\t\t\t});\n\t\t\t\t\treturn o.vTabState;\n\t\t\t\t};\n\t\t\t\tconst dbg = () => {};\n\t\t\t\tconst theModule = function f() {\n\t\t\t\t\treturn f.mod ??= new sqlite3.capi.sqlite3_module().setupModule({\n\t\t\t\t\t\tcatchExceptions: true,\n\t\t\t\t\t\tmethods: {\n\t\t\t\t\t\t\txConnect: function(pDb, pAux, argc, argv, ppVtab, pzErr) {\n\t\t\t\t\t\t\t\tdbg(\"xConnect\");\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst xcol = [];\n\t\t\t\t\t\t\t\t\tObject.keys(cols).forEach((k) => {\n\t\t\t\t\t\t\t\t\t\txcol.push(k + \" \" + cols[k].type);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tconst rc = capi.sqlite3_declare_vtab(pDb, \"CREATE TABLE ignored(\" + xcol.join(\",\") + \")\");\n\t\t\t\t\t\t\t\t\tif (0 === rc) {\n\t\t\t\t\t\t\t\t\t\tconst t = VT.xVtab.create(ppVtab);\n\t\t\t\t\t\t\t\t\t\tutil.assert(t === VT.xVtab.get(wasm.peekPtr(ppVtab)), \"output pointer check failed\");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treturn VT.xError(\"xConnect\", e, capi.SQLITE_ERROR);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txCreate: wasm.ptr.null,\n\t\t\t\t\t\t\txDisconnect: function(pVtab) {\n\t\t\t\t\t\t\t\tdbg(\"xDisconnect\", ...arguments);\n\t\t\t\t\t\t\t\tVT.xVtab.dispose(pVtab);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txOpen: function(pVtab, ppCursor) {\n\t\t\t\t\t\t\t\tdbg(\"xOpen\", ...arguments);\n\t\t\t\t\t\t\t\tVT.xCursor.create(ppCursor);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txClose: function(pCursor) {\n\t\t\t\t\t\t\t\tdbg(\"xClose\", ...arguments);\n\t\t\t\t\t\t\t\tconst c = VT.xCursor.unget(pCursor);\n\t\t\t\t\t\t\t\tdelete c.vTabState;\n\t\t\t\t\t\t\t\tc.dispose();\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txNext: function(pCursor) {\n\t\t\t\t\t\t\t\tdbg(\"xNext\", ...arguments);\n\t\t\t\t\t\t\t\tconst c = VT.xCursor.get(pCursor);\n\t\t\t\t\t\t\t\t++cursorState(c).rowid;\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txColumn: function(pCursor, pCtx, iCol) {\n\t\t\t\t\t\t\t\tdbg(\"xColumn\", ...arguments);\n\t\t\t\t\t\t\t\tconst st = cursorState(pCursor);\n\t\t\t\t\t\t\t\tconst store = st.row();\n\t\t\t\t\t\t\t\tutil.assert(store, \"Unexpected xColumn call\");\n\t\t\t\t\t\t\t\tswitch (iCol) {\n\t\t\t\t\t\t\t\t\tcase cols.rowid.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, st.rowid);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.name.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_text(pCtx, store.jzClass, -1, capi.SQLITE_TRANSIENT);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.nRef.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, store.refc);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.nOpen.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, store.files.length);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.isTransient.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, !!store.deleteAtRefc0);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.dbSize.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, storageGetDbSize(store));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error(pCtx, \"Invalid column id: \" + iCol);\n\t\t\t\t\t\t\t\t\t\treturn capi.SQLITE_RANGE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txRowid: function(pCursor, ppRowid64) {\n\t\t\t\t\t\t\t\tdbg(\"xRowid\", ...arguments);\n\t\t\t\t\t\t\t\tconst st = cursorState(pCursor);\n\t\t\t\t\t\t\t\tVT.xRowid(ppRowid64, st.rowid);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txEof: function(pCursor) {\n\t\t\t\t\t\t\t\tconst st = cursorState(pCursor);\n\t\t\t\t\t\t\t\tdbg(\"xEof?=\" + !st.row(), ...arguments);\n\t\t\t\t\t\t\t\treturn !st.row();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txFilter: function(pCursor, idxNum, idxCStr, argc, argv) {\n\t\t\t\t\t\t\t\tdbg(\"xFilter\", ...arguments);\n\t\t\t\t\t\t\t\tcursorState(pCursor, true);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txBestIndex: function(pVtab, pIdxInfo) {\n\t\t\t\t\t\t\t\tdbg(\"xBestIndex\", ...arguments);\n\t\t\t\t\t\t\t\tconst pii = new capi.sqlite3_index_info(pIdxInfo);\n\t\t\t\t\t\t\t\tpii.$estimatedRows = cache.storagePool.size;\n\t\t\t\t\t\t\t\tpii.$estimatedCost = 1;\n\t\t\t\t\t\t\t\tpii.dispose();\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tsqlite3.kvvfs.create_module = function(pDb, name = \"sqlite_kvvfs\") {\n\t\t\t\t\treturn capi.sqlite3_create_module(pDb, name, theModule(), wasm.ptr.null);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\t\"use strict\";\n\t\t\tif (sqlite3.config.disable?.vfs?.opfs && sqlite3.config.disable.vfs[\"opfs-vfs\"]) return;\n\t\t\tconst toss = sqlite3.util.toss;\n\t\t\tsqlite3.capi;\n\t\t\tconst util = sqlite3.util;\n\t\t\tsqlite3.wasm;\n\t\t\t/**\n\t\t\tGeneric utilities for working with OPFS. This will get filled out\n\t\t\tby the Promise setup and, on success, installed as sqlite3.opfs.\n\t\t\t\n\t\t\tThis is an internal/private namespace intended for use solely by\n\t\t\tthe OPFS VFSes and test code for them. The library bootstrapping\n\t\t\tprocess removes this object in non-testing contexts.\n\t\t\t*/\n\t\t\tconst opfsUtil = sqlite3.opfs = Object.create(null);\n\t\t\t/**\n\t\t\tReturns true if _this_ thread has access to the OPFS APIs.\n\t\t\t*/\n\t\t\topfsUtil.thisThreadHasOPFS = () => {\n\t\t\t\treturn globalThis.FileSystemHandle && globalThis.FileSystemDirectoryHandle && globalThis.FileSystemFileHandle && globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle && navigator?.storage?.getDirectory;\n\t\t\t};\n\t\t\t/**\n\t\t\tMust be called by the OPFS VFSes immediately after they determine\n\t\t\twhether OPFS is available by calling\n\t\t\tthisThreadHasOPFS(). Resolves to the OPFS storage root directory\n\t\t\tand sets opfsUtil.rootDirectory to that value.\n\t\t\t*/\n\t\t\topfsUtil.getRootDir = async function f() {\n\t\t\t\treturn f.promise ??= navigator.storage.getDirectory().then((d) => {\n\t\t\t\t\topfsUtil.rootDirectory = d;\n\t\t\t\t\treturn d;\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tdelete f.promise;\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\t\t\t};\n\t\t\t/**\n\t\t\tExpects an OPFS file path. It gets resolved, such that \"..\"\n\t\t\tcomponents are properly expanded, and returned. If the 2nd arg\n\t\t\tis true, the result is returned as an array of path elements,\n\t\t\telse an absolute path string is returned.\n\t\t\t*/\n\t\t\topfsUtil.getResolvedPath = function(filename, splitIt) {\n\t\t\t\tconst p = new URL(filename, \"file://irrelevant\").pathname;\n\t\t\t\treturn splitIt ? p.split(\"/\").filter((v) => !!v) : p;\n\t\t\t};\n\t\t\t/**\n\t\t\tTakes the absolute path to a filesystem element. Returns an\n\t\t\tarray of [handleOfContainingDir, filename]. If the 2nd argument\n\t\t\tis truthy then each directory element leading to the file is\n\t\t\tcreated along the way. Throws if any creation or resolution\n\t\t\tfails.\n\t\t\t*/\n\t\t\topfsUtil.getDirForFilename = async function f(absFilename, createDirs = false) {\n\t\t\t\tconst path = opfsUtil.getResolvedPath(absFilename, true);\n\t\t\t\tconst filename = path.pop();\n\t\t\t\tlet dh = await opfsUtil.getRootDir();\n\t\t\t\tfor (const dirName of path) if (dirName) dh = await dh.getDirectoryHandle(dirName, { create: !!createDirs });\n\t\t\t\treturn [dh, filename];\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates the given directory name, recursively, in\n\t\t\tthe OPFS filesystem. Returns true if it succeeds or the\n\t\t\tdirectory already exists, else false.\n\t\t\t*/\n\t\t\topfsUtil.mkdir = async function(absDirName) {\n\t\t\t\ttry {\n\t\t\t\t\tawait opfsUtil.getDirForFilename(absDirName + \"/filepart\", true);\n\t\t\t\t\treturn true;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tChecks whether the given OPFS filesystem entry exists,\n\t\t\treturning true if it does, false if it doesn't or if an\n\t\t\texception is intercepted while trying to make the\n\t\t\tdetermination.\n\t\t\t*/\n\t\t\topfsUtil.entryExists = async function(fsEntryName) {\n\t\t\t\ttry {\n\t\t\t\t\tconst [dh, fn] = await opfsUtil.getDirForFilename(fsEntryName);\n\t\t\t\t\tawait dh.getFileHandle(fn);\n\t\t\t\t\treturn true;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tGenerates a random ASCII string len characters long, intended for\n\t\t\tuse as a temporary file name.\n\t\t\t*/\n\t\t\topfsUtil.randomFilename = function f(len = 16) {\n\t\t\t\tif (!f._chars) {\n\t\t\t\t\tf._chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012346789\";\n\t\t\t\t\tf._n = f._chars.length;\n\t\t\t\t}\n\t\t\t\tconst a = [];\n\t\t\t\tlet i = 0;\n\t\t\t\tfor (; i < len; ++i) {\n\t\t\t\t\tconst ndx = Math.random() * (f._n * 64) % f._n | 0;\n\t\t\t\t\ta[i] = f._chars[ndx];\n\t\t\t\t}\n\t\t\t\treturn a.join(\"\");\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns a promise which resolves to an object which represents\n\t\t\tall files and directories in the OPFS tree. The top-most object\n\t\t\thas two properties: `dirs` is an array of directory entries\n\t\t\t(described below) and `files` is a list of file names for all\n\t\t\tfiles in that directory.\n\t\t\t\n\t\t\tTraversal starts at sqlite3.opfs.rootDirectory.\n\t\t\t\n\t\t\tEach `dirs` entry is an object in this form:\n\t\t\t\n\t\t\t```\n\t\t\t{ name: directoryName,\n\t\t\tdirs: [...subdirs],\n\t\t\tfiles: [...file names]\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tThe `files` and `subdirs` entries are always set but may be\n\t\t\tempty arrays.\n\t\t\t\n\t\t\tThe returned object has the same structure but its `name` is\n\t\t\tan empty string. All returned objects are created with\n\t\t\tObject.create(null), so have no prototype.\n\t\t\t\n\t\t\tDesign note: the entries do not contain more information,\n\t\t\te.g. file sizes, because getting such info is not only\n\t\t\texpensive but is subject to locking-related errors.\n\t\t\t*/\n\t\t\topfsUtil.treeList = async function() {\n\t\t\t\tconst doDir = async function callee(dirHandle, tgt) {\n\t\t\t\t\ttgt.name = dirHandle.name;\n\t\t\t\t\ttgt.dirs = [];\n\t\t\t\t\ttgt.files = [];\n\t\t\t\t\tfor await (const handle of dirHandle.values()) if (\"directory\" === handle.kind) {\n\t\t\t\t\t\tconst subDir = Object.create(null);\n\t\t\t\t\t\ttgt.dirs.push(subDir);\n\t\t\t\t\t\tawait callee(handle, subDir);\n\t\t\t\t\t} else tgt.files.push(handle.name);\n\t\t\t\t};\n\t\t\t\tconst root = Object.create(null);\n\t\t\t\tawait doDir(await opfsUtil.getRootDir(), root);\n\t\t\t\treturn root;\n\t\t\t};\n\t\t\t/**\n\t\t\tIrrevocably deletes _all_ files in the current origin's OPFS.\n\t\t\tObviously, this must be used with great caution. It may throw\n\t\t\tan exception if removal of anything fails (e.g. a file is\n\t\t\tlocked), but the precise conditions under which the underlying\n\t\t\tAPIs will throw are not documented (so we cannot tell you what\n\t\t\tthey are).\n\t\t\t*/\n\t\t\topfsUtil.rmfr = async function() {\n\t\t\t\tconst dir = await opfsUtil.getRootDir(), opt = { recurse: true };\n\t\t\t\tfor await (const handle of dir.values()) dir.removeEntry(handle.name, opt);\n\t\t\t};\n\t\t\t/**\n\t\t\tDeletes the given OPFS filesystem entry. As this environment\n\t\t\thas no notion of \"current directory\", the given name must be an\n\t\t\tabsolute path. If the 2nd argument is truthy, deletion is\n\t\t\trecursive (use with caution!).\n\t\t\t\n\t\t\tThe returned Promise resolves to true if the deletion was\n\t\t\tsuccessful, else false (but...). The OPFS API reports the\n\t\t\treason for the failure only in human-readable form, not\n\t\t\texceptions which can be type-checked to determine the\n\t\t\tfailure. Because of that...\n\t\t\t\n\t\t\tIf the final argument is truthy then this function will\n\t\t\tpropagate any exception on error, rather than returning false.\n\t\t\t*/\n\t\t\topfsUtil.unlink = async function(fsEntryName, recursive = false, throwOnError = false) {\n\t\t\t\ttry {\n\t\t\t\t\tconst [hDir, filenamePart] = await opfsUtil.getDirForFilename(fsEntryName, false);\n\t\t\t\t\tawait hDir.removeEntry(filenamePart, { recursive });\n\t\t\t\t\treturn true;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (throwOnError) throw new Error(\"unlink(\", arguments[0], \") failed: \" + e.message, { cause: e });\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tTraverses the OPFS filesystem, calling a callback for each\n\t\t\tentry. The argument may be either a callback function or an\n\t\t\toptions object with any of the following properties:\n\t\t\t\n\t\t\t- `callback`: function which gets called for each filesystem\n\t\t\tentry. It gets passed 3 arguments: 1) the\n\t\t\tFileSystemFileHandle or FileSystemDirectoryHandle of each\n\t\t\tentry (noting that both are instanceof FileSystemHandle). 2)\n\t\t\tthe FileSystemDirectoryHandle of the parent directory. 3) the\n\t\t\tcurrent depth level, with 0 being at the top of the tree\n\t\t\trelative to the starting directory. If the callback returns a\n\t\t\tliteral false, as opposed to any other falsy value, traversal\n\t\t\tstops without an error. Any exceptions it throws are\n\t\t\tpropagated. Results are undefined if the callback manipulate\n\t\t\tthe filesystem (e.g. removing or adding entries) because the\n\t\t\thow OPFS iterators behave in the face of such changes is\n\t\t\tundocumented.\n\t\t\t\n\t\t\t- `recursive` [bool=true]: specifies whether to recurse into\n\t\t\tsubdirectories or not. Whether recursion is depth-first or\n\t\t\tbreadth-first is unspecified!\n\t\t\t\n\t\t\t- `directory` [FileSystemDirectoryEntry=sqlite3.opfs.rootDirectory]\n\t\t\tspecifies the starting directory.\n\t\t\t\n\t\t\tIf this function is passed a function, it is assumed to be the\n\t\t\tcallback.\n\t\t\t\n\t\t\tReturns a promise because it has to (by virtue of being async)\n\t\t\tbut that promise has no specific meaning: the traversal it\n\t\t\tperforms is synchronous. The promise must be used to catch any\n\t\t\texceptions propagated by the callback, however.\n\t\t\t*/\n\t\t\topfsUtil.traverse = async function(opt) {\n\t\t\t\tconst defaultOpt = {\n\t\t\t\t\trecursive: true,\n\t\t\t\t\tdirectory: await opfsUtil.getRootDir()\n\t\t\t\t};\n\t\t\t\tif (\"function\" === typeof opt) opt = { callback: opt };\n\t\t\t\topt = Object.assign(defaultOpt, opt || {});\n\t\t\t\t(async function callee(dirHandle, depth) {\n\t\t\t\t\tfor await (const handle of dirHandle.values()) if (false === opt.callback(handle, dirHandle, depth)) return false;\n\t\t\t\t\telse if (opt.recursive && \"directory\" === handle.kind) {\n\t\t\t\t\t\tif (false === await callee(handle, depth + 1)) break;\n\t\t\t\t\t}\n\t\t\t\t})(opt.directory, 0);\n\t\t\t};\n\t\t\t/**\n\t\t\tImpl of opfsUtil.importDb() when it's given a function as its\n\t\t\tsecond argument.\n\t\t\t*/\n\t\t\tconst importDbChunked = async function(filename, callback) {\n\t\t\t\tconst [hDir, fnamePart] = await opfsUtil.getDirForFilename(filename, true);\n\t\t\t\tlet sah = await (await hDir.getFileHandle(fnamePart, { create: true })).createSyncAccessHandle(), nWrote = 0, chunk, checkedHeader = false;\n\t\t\t\ttry {\n\t\t\t\t\tsah.truncate(0);\n\t\t\t\t\twhile (void 0 !== (chunk = await callback())) {\n\t\t\t\t\t\tif (chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);\n\t\t\t\t\t\tif (!checkedHeader && 0 === nWrote && chunk.byteLength >= 15) {\n\t\t\t\t\t\t\tutil.affirmDbHeader(chunk);\n\t\t\t\t\t\t\tcheckedHeader = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsah.write(chunk, { at: nWrote });\n\t\t\t\t\t\tnWrote += chunk.byteLength;\n\t\t\t\t\t}\n\t\t\t\t\tif (nWrote < 512 || 0 !== nWrote % 512) toss(\"Input size\", nWrote, \"is not correct for an SQLite database.\");\n\t\t\t\t\tif (!checkedHeader) {\n\t\t\t\t\t\tconst header = new Uint8Array(20);\n\t\t\t\t\t\tsah.read(header, { at: 0 });\n\t\t\t\t\t\tutil.affirmDbHeader(header);\n\t\t\t\t\t}\n\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: 18 });\n\t\t\t\t\treturn nWrote;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tawait sah.close();\n\t\t\t\t\tsah = void 0;\n\t\t\t\t\tawait hDir.removeEntry(fnamePart).catch(() => {});\n\t\t\t\t\tthrow e;\n\t\t\t\t} finally {\n\t\t\t\t\tif (sah) await sah.close();\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tAsynchronously imports the given bytes (a byte array or\n\t\t\tArrayBuffer) into the given database file.\n\t\t\t\n\t\t\tResults are undefined if the given db name refers to an opened\n\t\t\tdb.\n\t\t\t\n\t\t\tIf passed a function for its second argument, its behaviour\n\t\t\tchanges: imports its data in chunks fed to it by the given\n\t\t\tcallback function. It calls the callback (which may be async)\n\t\t\trepeatedly, expecting either a Uint8Array or ArrayBuffer (to\n\t\t\tdenote new input) or undefined (to denote EOF). For so long as\n\t\t\tthe callback continues to return non-undefined, it will append\n\t\t\tincoming data to the given VFS-hosted database file. When\n\t\t\tcalled this way, the resolved value of the returned Promise is\n\t\t\tthe number of bytes written to the target file.\n\t\t\t\n\t\t\tIt very specifically requires the input to be an SQLite3\n\t\t\tdatabase and throws if that's not the case. It does so in\n\t\t\torder to prevent this function from taking on a larger scope\n\t\t\tthan it is specifically intended to. i.e. we do not want it to\n\t\t\tbecome a convenience for importing arbitrary files into OPFS.\n\t\t\t\n\t\t\tThis routine rewrites the database header bytes in the output\n\t\t\tfile (not the input array) to force disabling of WAL mode.\n\t\t\t\n\t\t\tOn error this throws and the state of the input file is\n\t\t\tundefined (it depends on where the exception was triggered).\n\t\t\t\n\t\t\tOn success, resolves to the number of bytes written.\n\t\t\t*/\n\t\t\topfsUtil.importDb = async function(filename, bytes) {\n\t\t\t\tif (bytes instanceof Function) return importDbChunked(filename, bytes);\n\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\tutil.affirmIsDb(bytes);\n\t\t\t\tconst n = bytes.byteLength;\n\t\t\t\tconst [hDir, fnamePart] = await opfsUtil.getDirForFilename(filename, true);\n\t\t\t\tlet sah, nWrote = 0;\n\t\t\t\ttry {\n\t\t\t\t\tsah = await (await hDir.getFileHandle(fnamePart, { create: true })).createSyncAccessHandle();\n\t\t\t\t\tsah.truncate(0);\n\t\t\t\t\tnWrote = sah.write(bytes, { at: 0 });\n\t\t\t\t\tif (nWrote != n) toss(\"Expected to write \" + n + \" bytes but wrote \" + nWrote + \".\");\n\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: 18 });\n\t\t\t\t\treturn nWrote;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (sah) {\n\t\t\t\t\t\tawait sah.close();\n\t\t\t\t\t\tsah = void 0;\n\t\t\t\t\t}\n\t\t\t\t\tawait hDir.removeEntry(fnamePart).catch(() => {});\n\t\t\t\t\tthrow e;\n\t\t\t\t} finally {\n\t\t\t\t\tif (sah) await sah.close();\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tChecks for features required for OPFS VFSes and throws with a\n\t\t\tdescriptive error message if they're not found. This is intended\n\t\t\tto be run as part of async VFS installation steps.\n\t\t\t*/\n\t\t\topfsUtil.vfsInstallationFeatureCheck = function(vfsName) {\n\t\t\t\tif (!globalThis.SharedArrayBuffer || !globalThis.Atomics) toss(\"Cannot install OPFS: Missing SharedArrayBuffer and/or Atomics.\", \"The server must emit the COOP/COEP response headers to enable those.\", \"See https://sqlite.org/wasm/doc/trunk/persistence.md#coop-coep\");\n\t\t\t\telse if (\"undefined\" === typeof WorkerGlobalScope) toss(\"The OPFS sqlite3_vfs cannot run in the main thread\", \"because it requires Atomics.wait().\");\n\t\t\t\telse if (!globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle?.prototype?.createSyncAccessHandle || !navigator?.storage?.getDirectory) toss(\"Missing required OPFS APIs.\");\n\t\t\t\telse if (\"opfs-wl\" === vfsName && !globalThis.Atomics.waitAsync) toss(\"The\", vfsName, \"VFS requires Atomics.waitAsync(), which is not available.\");\n\t\t\t};\n\t\t\t/**\n\t\t\tMust be called by the VFS's main installation routine and passed\n\t\t\tthe options object that function receives and a reference to that\n\t\t\tfunction itself (we don't need this anymore).\n\t\t\t\n\t\t\tIt throws if OPFS is not available.\n\t\t\t\n\t\t\tIf it returns falsy, it detected that OPFS should be disabled, in\n\t\t\twhich case the callee should immediately return/resolve to the\n\t\t\tsqlite3 object.\n\t\t\t\n\t\t\tElse it returns a new copy of the options object, fleshed out\n\t\t\twith any missing defaults. The caller must:\n\t\t\t\n\t\t\t- Set up any local state they need.\n\t\t\t\n\t\t\t- Call opfsUtil.createVfsState(vfsName,opt), where opt is the\n\t\t\tobject returned by this function.\n\t\t\t\n\t\t\t- Set up any references they may need to state returned\n\t\t\tby the previous step.\n\t\t\t\n\t\t\t- Call opfvs.bindVfs()\n\t\t\t*/\n\t\t\topfsUtil.initOptions = function callee(vfsName, options) {\n\t\t\t\tconst urlParams = new URL(globalThis.location.href).searchParams;\n\t\t\t\tif (urlParams.has(vfsName + \"-disable\")) return;\n\t\t\t\ttry {\n\t\t\t\t\topfsUtil.vfsInstallationFeatureCheck(vfsName);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\toptions = util.nu(options);\n\t\t\t\toptions.vfsName = vfsName;\n\t\t\t\toptions.verbose ??= urlParams.has(\"opfs-verbose\") ? +urlParams.get(\"opfs-verbose\") : 1;\n\t\t\t\toptions.sanityChecks ??= urlParams.has(\"opfs-sanity-check\");\n\t\t\t\tif (!opfsUtil.proxyUri) {\n\t\t\t\t\topfsUtil.proxyUri = \"sqlite3-opfs-async-proxy.js\";\n\t\t\t\t\tif (sqlite3.scriptInfo?.sqlite3Dir) opfsUtil.proxyUri = sqlite3.scriptInfo.sqlite3Dir + opfsUtil.proxyUri;\n\t\t\t\t}\n\t\t\t\toptions.proxyUri ??= opfsUtil.proxyUri;\n\t\t\t\tif (\"function\" === typeof options.proxyUri) options.proxyUri = options.proxyUri();\n\t\t\t\treturn opfsUtil.options = options;\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates, populates, and returns the main state object used by the\n\t\t\t\"opfs\" and \"opfs-wl\" VFSes, and transfered from those to their\n\t\t\tasync counterparts.\n\t\t\t\n\t\t\tThe returned object's vfs property holds the fully-populated\n\t\t\tcapi.sqlite3_vfs instance, tagged with lots of extra state which\n\t\t\tthe current VFSes need to have exposed to them.\n\t\t\t\n\t\t\tAfter setting up any local state needed, the caller must call\n\t\t\ttheVfs.bindVfs(X,Y), where X is an object containing the\n\t\t\tsqlite3_io_methods to override and Y is a callback which gets\n\t\t\ttriggered if init succeeds, before the final Promise decides\n\t\t\twhether or not to reject.\n\t\t\t\n\t\t\tThis object must, when it's passed to the async part, contain\n\t\t\tonly cloneable or sharable objects. After the worker's \"inited\"\n\t\t\tmessage arrives, other types of data may be added to it.\n\t\t\t*/\n\t\t\topfsUtil.createVfsState = function() {\n\t\t\t\tconst state = util.nu();\n\t\t\t\tconst options = opfsUtil.options;\n\t\t\t\tstate.verbose = options.verbose;\n\t\t\t\tconst loggers = [\n\t\t\t\t\tsqlite3.config.error,\n\t\t\t\t\tsqlite3.config.warn,\n\t\t\t\t\tsqlite3.config.log\n\t\t\t\t];\n\t\t\t\tconst vfsName = options.vfsName || toss(\"Maintenance required: missing VFS name\");\n\t\t\t\tconst logImpl = (level, ...args) => {\n\t\t\t\t\tif (state.verbose > level) loggers[level](vfsName + \":\", ...args);\n\t\t\t\t};\n\t\t\t\tconst log = (...args) => logImpl(2, ...args), warn = (...args) => logImpl(1, ...args), error = (...args) => logImpl(0, ...args), capi = sqlite3.capi, wasm = sqlite3.wasm;\n\t\t\t\tconst opfsVfs = state.vfs = new capi.sqlite3_vfs();\n\t\t\t\tconst opfsIoMethods = opfsVfs.ioMethods = new capi.sqlite3_io_methods();\n\t\t\t\topfsIoMethods.$iVersion = 1;\n\t\t\t\topfsVfs.$iVersion = 2;\n\t\t\t\topfsVfs.$szOsFile = capi.sqlite3_file.structInfo.sizeof;\n\t\t\t\topfsVfs.$mxPathname = 1024;\n\t\t\t\topfsVfs.$zName = wasm.allocCString(vfsName);\n\t\t\t\topfsVfs.addOnDispose(\n\t\t\t\t\t\"$zName\",\n\t\t\t\t\topfsVfs.$zName,\n\t\t\t\t\topfsIoMethods\n\t\t\t\t\t/**\n\t\t\t\t\tPedantic sidebar: the entries in this array are items to\n\t\t\t\t\tclean up when opfsVfs.dispose() is called, but in this\n\t\t\t\t\tenvironment it will never be called. The VFS instance simply\n\t\t\t\t\thangs around until the WASM module instance is cleaned up. We\n\t\t\t\t\t\"could\" _hypothetically_ clean it up by \"importing\" an\n\t\t\t\t\tsqlite3_os_end() impl into the wasm build, but the shutdown\n\t\t\t\t\torder of the wasm engine and the JS one are undefined so\n\t\t\t\t\tthere is no guaranty that the opfsVfs instance would be\n\t\t\t\t\tavailable in one environment or the other when\n\t\t\t\t\tsqlite3_os_end() is called (_if_ it gets called at all in a\n\t\t\t\t\twasm build, which is undefined). i.e. addOnDispose() here is\n\t\t\t\t\ta matter of \"correctness\", not necessity. It just wouldn't do\n\t\t\t\t\tto leave the impression that we're blindly leaking memory.\n\t\t\t\t\t*/\n\t\t\t\t);\n\t\t\t\topfsVfs.metrics = util.nu({\n\t\t\t\t\tcounters: util.nu(),\n\t\t\t\t\tdump: function() {\n\t\t\t\t\t\tlet k, n = 0, t = 0, w = 0;\n\t\t\t\t\t\tfor (k in state.opIds) {\n\t\t\t\t\t\t\tconst m = metrics[k];\n\t\t\t\t\t\t\tn += m.count;\n\t\t\t\t\t\t\tt += m.time;\n\t\t\t\t\t\t\tw += m.wait;\n\t\t\t\t\t\t\tm.avgTime = m.count && m.time ? m.time / m.count : 0;\n\t\t\t\t\t\t\tm.avgWait = m.count && m.wait ? m.wait / m.count : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsqlite3.config.log(globalThis.location.href, \"metrics for\", globalThis.location.href, \":\", metrics, \"\\nTotal of\", n, \"op(s) for\", t, \"ms (incl. \" + w + \" ms of waiting on the async side)\");\n\t\t\t\t\t\tsqlite3.config.log(\"Serialization metrics:\", opfsVfs.metrics.counters.s11n);\n\t\t\t\t\t\topfsVfs.worker?.postMessage?.({ type: \"opfs-async-metrics\" });\n\t\t\t\t\t},\n\t\t\t\t\treset: function() {\n\t\t\t\t\t\tlet k;\n\t\t\t\t\t\tconst r = (m) => m.count = m.time = m.wait = 0;\n\t\t\t\t\t\tconst m = opfsVfs.metrics.counters;\n\t\t\t\t\t\tfor (k in state.opIds) r(m[k] = Object.create(null));\n\t\t\t\t\t\tlet s = m.s11n = Object.create(null);\n\t\t\t\t\t\ts = s.serialize = Object.create(null);\n\t\t\t\t\t\ts.count = s.time = 0;\n\t\t\t\t\t\ts = m.s11n.deserialize = Object.create(null);\n\t\t\t\t\t\ts.count = s.time = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t/**\n\t\t\t\tasyncIdleWaitTime is how long (ms) to wait, in the async proxy,\n\t\t\t\tfor each Atomics.wait() when waiting on inbound VFS API calls.\n\t\t\t\tWe need to wake up periodically to give the thread a chance to\n\t\t\t\tdo other things. If this is too high (e.g. 500ms) then even two\n\t\t\t\tworkers/tabs can easily run into locking errors. Some multiple\n\t\t\t\tof this value is also used for determining how long to wait on\n\t\t\t\tlock contention to free up.\n\t\t\t\t*/\n\t\t\t\tstate.asyncIdleWaitTime = 150;\n\t\t\t\t/**\n\t\t\t\tWhether the async counterpart should log exceptions to\n\t\t\t\tthe serialization channel. That produces a great deal of\n\t\t\t\tnoise for seemingly innocuous things like xAccess() checks\n\t\t\t\tfor missing files, so this option may have one of 3 values:\n\t\t\t\t\n\t\t\t\t0 = no exception logging.\n\t\t\t\t\n\t\t\t\t1 = only log exceptions for \"significant\" ops like xOpen(),\n\t\t\t\txRead(), and xWrite(). Exceptions related to, e.g., wait/retry\n\t\t\t\tloops in acquiring SyncAccessHandles are not logged.\n\t\t\t\t\n\t\t\t\t2 = log all exceptions.\n\t\t\t\t*/\n\t\t\t\tstate.asyncS11nExceptions = 1;\n\t\t\t\tstate.fileBufferSize = 1024 * 64;\n\t\t\t\tstate.sabS11nOffset = state.fileBufferSize;\n\t\t\t\t/**\n\t\t\t\tThe size of the block in our SAB for serializing arguments and\n\t\t\t\tresult values. Needs to be large enough to hold serialized\n\t\t\t\tvalues of any of the proxied APIs. Filenames are the largest\n\t\t\t\tpart but are limited to opfsVfs.$mxPathname bytes. We also\n\t\t\t\tstore exceptions there, so it needs to be long enough to hold\n\t\t\t\ta reasonably long exception string.\n\t\t\t\t*/\n\t\t\t\tstate.sabS11nSize = opfsVfs.$mxPathname * 2;\n\t\t\t\t/**\n\t\t\t\tThe SAB used for all data I/O between the synchronous and\n\t\t\t\tasync halves (file i/o and arg/result s11n).\n\t\t\t\t*/\n\t\t\t\tstate.sabIO = new SharedArrayBuffer(state.fileBufferSize + state.sabS11nSize);\n\t\t\t\t/**\n\t\t\t\tFor purposes of Atomics.wait() and Atomics.notify(), we use a\n\t\t\t\tSharedArrayBuffer with one slot reserved for each of the API\n\t\t\t\tproxy's methods. The sync side of the API uses Atomics.wait()\n\t\t\t\ton the corresponding slot and the async side uses\n\t\t\t\tAtomics.notify() on that slot. state.opIds holds the SAB slot\n\t\t\t\tIDs of each of those.\n\t\t\t\t*/\n\t\t\t\tstate.opIds = Object.create(null);\n\t\t\t\t{\n\t\t\t\t\tlet i = 0;\n\t\t\t\t\tstate.opIds.whichOp = i++;\n\t\t\t\t\tstate.opIds.rc = i++;\n\t\t\t\t\tstate.opIds.xAccess = i++;\n\t\t\t\t\tstate.opIds.xClose = i++;\n\t\t\t\t\tstate.opIds.xDelete = i++;\n\t\t\t\t\tstate.opIds.xDeleteNoWait = i++;\n\t\t\t\t\tstate.opIds.xFileSize = i++;\n\t\t\t\t\tstate.opIds.xLock = i++;\n\t\t\t\t\tstate.opIds.xOpen = i++;\n\t\t\t\t\tstate.opIds.xRead = i++;\n\t\t\t\t\tstate.opIds.xSleep = i++;\n\t\t\t\t\tstate.opIds.xSync = i++;\n\t\t\t\t\tstate.opIds.xTruncate = i++;\n\t\t\t\t\tstate.opIds.xUnlock = i++;\n\t\t\t\t\tstate.opIds.xWrite = i++;\n\t\t\t\t\tstate.opIds.mkdir = i++;\n\t\t\t\t\t/** Internal signals which are used only during development and\n\t\t\t\t\ttesting via the dev console. */\n\t\t\t\t\tstate.opIds[\"opfs-async-metrics\"] = i++;\n\t\t\t\t\tstate.opIds[\"opfs-async-shutdown\"] = i++;\n\t\t\t\t\tstate.opIds.retry = i++;\n\t\t\t\t\tstate.sabOP = new SharedArrayBuffer(i * 4);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tSQLITE_xxx constants to export to the async worker\n\t\t\t\tcounterpart...\n\t\t\t\t*/\n\t\t\t\tstate.sq3Codes = Object.create(null);\n\t\t\t\tfor (const k of [\n\t\t\t\t\t\"SQLITE_ACCESS_EXISTS\",\n\t\t\t\t\t\"SQLITE_ACCESS_READWRITE\",\n\t\t\t\t\t\"SQLITE_BUSY\",\n\t\t\t\t\t\"SQLITE_CANTOPEN\",\n\t\t\t\t\t\"SQLITE_ERROR\",\n\t\t\t\t\t\"SQLITE_IOERR\",\n\t\t\t\t\t\"SQLITE_IOERR_ACCESS\",\n\t\t\t\t\t\"SQLITE_IOERR_CLOSE\",\n\t\t\t\t\t\"SQLITE_IOERR_DELETE\",\n\t\t\t\t\t\"SQLITE_IOERR_FSYNC\",\n\t\t\t\t\t\"SQLITE_IOERR_LOCK\",\n\t\t\t\t\t\"SQLITE_IOERR_READ\",\n\t\t\t\t\t\"SQLITE_IOERR_SHORT_READ\",\n\t\t\t\t\t\"SQLITE_IOERR_TRUNCATE\",\n\t\t\t\t\t\"SQLITE_IOERR_UNLOCK\",\n\t\t\t\t\t\"SQLITE_IOERR_WRITE\",\n\t\t\t\t\t\"SQLITE_LOCK_EXCLUSIVE\",\n\t\t\t\t\t\"SQLITE_LOCK_NONE\",\n\t\t\t\t\t\"SQLITE_LOCK_PENDING\",\n\t\t\t\t\t\"SQLITE_LOCK_RESERVED\",\n\t\t\t\t\t\"SQLITE_LOCK_SHARED\",\n\t\t\t\t\t\"SQLITE_LOCKED\",\n\t\t\t\t\t\"SQLITE_MISUSE\",\n\t\t\t\t\t\"SQLITE_NOTFOUND\",\n\t\t\t\t\t\"SQLITE_OPEN_CREATE\",\n\t\t\t\t\t\"SQLITE_OPEN_DELETEONCLOSE\",\n\t\t\t\t\t\"SQLITE_OPEN_MAIN_DB\",\n\t\t\t\t\t\"SQLITE_OPEN_READONLY\",\n\t\t\t\t\t\"SQLITE_LOCK_NONE\",\n\t\t\t\t\t\"SQLITE_LOCK_SHARED\",\n\t\t\t\t\t\"SQLITE_LOCK_RESERVED\",\n\t\t\t\t\t\"SQLITE_LOCK_PENDING\",\n\t\t\t\t\t\"SQLITE_LOCK_EXCLUSIVE\"\n\t\t\t\t]) state.sq3Codes[k] = capi[k] ?? toss(\"Maintenance required: not found:\", k);\n\t\t\t\tstate.opfsFlags = Object.assign(Object.create(null), {\n\t\t\t\t\tOPFS_UNLOCK_ASAP: 1,\n\t\t\t\t\tOPFS_UNLINK_BEFORE_OPEN: 2,\n\t\t\t\t\tdefaultUnlockAsap: false\n\t\t\t\t});\n\t\t\t\topfsVfs.metrics.reset();\n\t\t\t\tconst metrics = opfsVfs.metrics.counters;\n\t\t\t\t/**\n\t\t\t\tRuns the given operation (by name) in the async worker\n\t\t\t\tcounterpart, waits for its response, and returns the result\n\t\t\t\twhich the async worker writes to SAB[state.opIds.rc]. The 2nd\n\t\t\t\tand subsequent arguments must be the arguments for the async op\n\t\t\t\t(see sqlite3-opfs-async-proxy.c-pp.js).\n\t\t\t\t*/\n\t\t\t\tconst opRun = opfsVfs.opRun = (op, ...args) => {\n\t\t\t\t\tconst opNdx = state.opIds[op] || toss(opfsVfs.vfsName + \": Invalid op ID:\", op);\n\t\t\t\t\tstate.s11n.serialize(...args);\n\t\t\t\t\tAtomics.store(state.sabOPView, state.opIds.rc, -1);\n\t\t\t\t\tAtomics.store(state.sabOPView, state.opIds.whichOp, opNdx);\n\t\t\t\t\tAtomics.notify(state.sabOPView, state.opIds.whichOp);\n\t\t\t\t\tconst t = performance.now();\n\t\t\t\t\twhile (\"not-equal\" !== Atomics.wait(state.sabOPView, state.opIds.rc, -1));\n\t\t\t\t\tconst rc = Atomics.load(state.sabOPView, state.opIds.rc);\n\t\t\t\t\tmetrics[op].wait += performance.now() - t;\n\t\t\t\t\tif (rc && state.asyncS11nExceptions) {\n\t\t\t\t\t\tconst err = state.s11n.deserialize();\n\t\t\t\t\t\tif (err) error(op + \"() async error:\", ...err);\n\t\t\t\t\t}\n\t\t\t\t\treturn rc;\n\t\t\t\t};\n\t\t\t\tconst opTimer = Object.create(null);\n\t\t\t\topTimer.op = void 0;\n\t\t\t\topTimer.start = void 0;\n\t\t\t\tconst mTimeStart = opfsVfs.mTimeStart = (op) => {\n\t\t\t\t\topTimer.start = performance.now();\n\t\t\t\t\topTimer.op = op;\n\t\t\t\t\t++metrics[op].count;\n\t\t\t\t};\n\t\t\t\tconst mTimeEnd = opfsVfs.mTimeEnd = () => metrics[opTimer.op].time += performance.now() - opTimer.start;\n\t\t\t\t/**\n\t\t\t\tMap of sqlite3_file pointers to objects constructed by xOpen().\n\t\t\t\t*/\n\t\t\t\tconst __openFiles = opfsVfs.__openFiles = Object.create(null);\n\t\t\t\topfsVfs.ioSyncWrappers = util.nu({\n\t\t\t\t\txCheckReservedLock: function(pFile, pOut) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\tAfter consultation with a topic expert: \"opfs-wl\" will\n\t\t\t\t\t\tcontinue to use the same no-op impl which \"opfs\" does\n\t\t\t\t\t\tbecause:\n\t\t\t\t\t\t\n\t\t\t\t\t\t- xCheckReservedLock() is just a hint. If SQLite needs to\n\t\t\t\t\t\tlock, it's still going to try to lock.\n\t\t\t\t\t\t\n\t\t\t\t\t\t- We cannot do this check synchronously in \"opfs-wl\",\n\t\t\t\t\t\tso would need to pass it to the async proxy. That would\n\t\t\t\t\t\tmake it inordinately expensive considering that it's\n\t\t\t\t\t\tjust a hint.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\twasm.poke(pOut, 0, \"i32\");\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\txClose: function(pFile) {\n\t\t\t\t\t\tmTimeStart(\"xClose\");\n\t\t\t\t\t\tlet rc = 0;\n\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\tif (f) {\n\t\t\t\t\t\t\tdelete __openFiles[pFile];\n\t\t\t\t\t\t\trc = opRun(\"xClose\", pFile);\n\t\t\t\t\t\t\tif (f.sq3File) f.sq3File.dispose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txDeviceCharacteristics: function(pFile) {\n\t\t\t\t\t\treturn capi.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n\t\t\t\t\t},\n\t\t\t\t\txFileControl: function(pFile, opId, pArg) {\n\t\t\t\t\t\treturn capi.SQLITE_NOTFOUND;\n\t\t\t\t\t},\n\t\t\t\t\txFileSize: function(pFile, pSz64) {\n\t\t\t\t\t\tmTimeStart(\"xFileSize\");\n\t\t\t\t\t\tlet rc = opRun(\"xFileSize\", pFile);\n\t\t\t\t\t\tif (0 == rc) try {\n\t\t\t\t\t\t\tconst sz = state.s11n.deserialize()[0];\n\t\t\t\t\t\t\twasm.poke(pSz64, sz, \"i64\");\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"Unexpected error reading xFileSize() result:\", e);\n\t\t\t\t\t\t\trc = state.sq3Codes.SQLITE_IOERR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txRead: function(pFile, pDest, n, offset64) {\n\t\t\t\t\t\tmTimeStart(\"xRead\");\n\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\tlet rc;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\trc = opRun(\"xRead\", pFile, n, Number(offset64));\n\t\t\t\t\t\t\tif (0 === rc || capi.SQLITE_IOERR_SHORT_READ === rc)\n /**\n\t\t\t\t\t\t\tResults get written to the SharedArrayBuffer f.sabView.\n\t\t\t\t\t\t\tBecause the heap is _not_ a SharedArrayBuffer, we have\n\t\t\t\t\t\t\tto copy the results. TypedArray.set() seems to be the\n\t\t\t\t\t\t\tfastest way to copy this. */\n\t\t\t\t\t\t\twasm.heap8u().set(f.sabView.subarray(0, n), Number(pDest));\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xRead(\", arguments, \") failed:\", e, f);\n\t\t\t\t\t\t\trc = capi.SQLITE_IOERR_READ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txSync: function(pFile, flags) {\n\t\t\t\t\t\tmTimeStart(\"xSync\");\n\t\t\t\t\t\tconst rc = opRun(\"xSync\", pFile, flags);\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txTruncate: function(pFile, sz64) {\n\t\t\t\t\t\tmTimeStart(\"xTruncate\");\n\t\t\t\t\t\tconst rc = opRun(\"xTruncate\", pFile, Number(sz64));\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txWrite: function(pFile, pSrc, n, offset64) {\n\t\t\t\t\t\tmTimeStart(\"xWrite\");\n\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\tlet rc;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tf.sabView.set(wasm.heap8u().subarray(Number(pSrc), Number(pSrc) + n));\n\t\t\t\t\t\t\trc = opRun(\"xWrite\", pFile, n, Number(offset64));\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xWrite(\", arguments, \") failed:\", e, f);\n\t\t\t\t\t\t\trc = capi.SQLITE_IOERR_WRITE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\topfsVfs.vfsSyncWrappers = {\n\t\t\t\t\txAccess: function(pVfs, zName, flags, pOut) {\n\t\t\t\t\t\tmTimeStart(\"xAccess\");\n\t\t\t\t\t\tconst rc = opRun(\"xAccess\", wasm.cstrToJs(zName));\n\t\t\t\t\t\twasm.poke(pOut, rc ? 0 : 1, \"i32\");\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\txCurrentTime: function(pVfs, pOut) {\n\t\t\t\t\t\twasm.poke(pOut, 2440587.5 + (/* @__PURE__ */ new Date()).getTime() / 864e5, \"double\");\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\txCurrentTimeInt64: function(pVfs, pOut) {\n\t\t\t\t\t\twasm.poke(pOut, 2440587.5 * 864e5 + (/* @__PURE__ */ new Date()).getTime(), \"i64\");\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\txDelete: function(pVfs, zName, doSyncDir) {\n\t\t\t\t\t\tmTimeStart(\"xDelete\");\n\t\t\t\t\t\tconst rc = opRun(\"xDelete\", wasm.cstrToJs(zName), doSyncDir, false);\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txFullPathname: function(pVfs, zName, nOut, pOut) {\n\t\t\t\t\t\treturn wasm.cstrncpy(pOut, zName, nOut) < nOut ? 0 : capi.SQLITE_CANTOPEN;\n\t\t\t\t\t},\n\t\t\t\t\txGetLastError: function(pVfs, nOut, pOut) {\n\t\t\t\t\t\tsqlite3.config.warn(\"OPFS xGetLastError() has nothing sensible to return.\");\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\txOpen: function f(pVfs, zName, pFile, flags, pOutFlags) {\n\t\t\t\t\t\tmTimeStart(\"xOpen\");\n\t\t\t\t\t\tlet opfsFlags = 0;\n\t\t\t\t\t\tlet jzName, zToFree;\n\t\t\t\t\t\tif (!zName) {\n\t\t\t\t\t\t\tjzName = opfsUtil.randomFilename();\n\t\t\t\t\t\t\tzName = zToFree = wasm.allocCString(jzName);\n\t\t\t\t\t\t} else if (wasm.isPtr(zName)) {\n\t\t\t\t\t\t\tif (capi.sqlite3_uri_boolean(zName, \"opfs-unlock-asap\", 0)) opfsFlags |= state.opfsFlags.OPFS_UNLOCK_ASAP;\n\t\t\t\t\t\t\tif (capi.sqlite3_uri_boolean(zName, \"delete-before-open\", 0)) opfsFlags |= state.opfsFlags.OPFS_UNLINK_BEFORE_OPEN;\n\t\t\t\t\t\t\tjzName = wasm.cstrToJs(zName);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsqlite3.config.error(\"Impossible zName value in xOpen?\", zName);\n\t\t\t\t\t\t\treturn capi.SQLITE_CANTOPEN;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst fh = util.nu({\n\t\t\t\t\t\t\tfid: pFile,\n\t\t\t\t\t\t\tfilename: jzName,\n\t\t\t\t\t\t\tsab: new SharedArrayBuffer(state.fileBufferSize),\n\t\t\t\t\t\t\tflags,\n\t\t\t\t\t\t\treadOnly: !(capi.SQLITE_OPEN_CREATE & flags) && !!(flags & capi.SQLITE_OPEN_READONLY)\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst rc = opRun(\"xOpen\", pFile, jzName, flags, opfsFlags);\n\t\t\t\t\t\tif (rc) {\n\t\t\t\t\t\t\tif (zToFree) wasm.dealloc(zToFree);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (fh.readOnly) wasm.poke(pOutFlags, capi.SQLITE_OPEN_READONLY, \"i32\");\n\t\t\t\t\t\t\t__openFiles[pFile] = fh;\n\t\t\t\t\t\t\tfh.sabView = state.sabFileBufView;\n\t\t\t\t\t\t\tfh.sq3File = new capi.sqlite3_file(pFile);\n\t\t\t\t\t\t\tif (zToFree) fh.sq3File.addOnDispose(zToFree);\n\t\t\t\t\t\t\tfh.sq3File.$pMethods = opfsIoMethods.pointer;\n\t\t\t\t\t\t\tfh.lockType = capi.SQLITE_LOCK_NONE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst pDVfs = capi.sqlite3_vfs_find(null);\n\t\t\t\tif (pDVfs) {\n\t\t\t\t\tconst dVfs = new capi.sqlite3_vfs(pDVfs);\n\t\t\t\t\topfsVfs.$xRandomness = dVfs.$xRandomness;\n\t\t\t\t\topfsVfs.$xSleep = dVfs.$xSleep;\n\t\t\t\t\tdVfs.dispose();\n\t\t\t\t}\n\t\t\t\tif (!opfsVfs.$xRandomness) opfsVfs.vfsSyncWrappers.xRandomness = function(pVfs, nOut, pOut) {\n\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\tlet i = 0;\n\t\t\t\t\tconst npOut = Number(pOut);\n\t\t\t\t\tfor (; i < nOut; ++i) heap[npOut + i] = Math.random() * 255e3 & 255;\n\t\t\t\t\treturn i;\n\t\t\t\t};\n\t\t\t\tif (!opfsVfs.$xSleep) opfsVfs.vfsSyncWrappers.xSleep = function(pVfs, ms) {\n\t\t\t\t\tmTimeStart(\"xSleep\");\n\t\t\t\t\tAtomics.wait(state.sabOPView, state.opIds.xSleep, 0, ms);\n\t\t\t\t\tmTimeEnd();\n\t\t\t\t\treturn 0;\n\t\t\t\t};\n\t\t\t\tconst initS11n = function() {\n\t\t\t\t\t/**\n\t\t\t\t\tThis proxy de/serializes cross-thread function arguments and\n\t\t\t\t\toutput-pointer values via the state.sabIO SharedArrayBuffer,\n\t\t\t\t\tusing the region defined by (state.sabS11nOffset,\n\t\t\t\t\tstate.sabS11nOffset + state.sabS11nSize]. Only one dataset is\n\t\t\t\t\trecorded at a time.\n\t\t\t\t\t\n\t\t\t\t\tThis is not a general-purpose format. It only supports the\n\t\t\t\t\trange of operations, and data sizes, needed by the\n\t\t\t\t\tsqlite3_vfs and sqlite3_io_methods operations. Serialized\n\t\t\t\t\tdata are transient and this serialization algorithm may\n\t\t\t\t\tchange at any time.\n\t\t\t\t\t\n\t\t\t\t\tThe data format can be succinctly summarized as:\n\t\t\t\t\t\n\t\t\t\t\tNt...Td...D\n\t\t\t\t\t\n\t\t\t\t\tWhere:\n\t\t\t\t\t\n\t\t\t\t\t- N = number of entries (1 byte)\n\t\t\t\t\t\n\t\t\t\t\t- t = type ID of first argument (1 byte)\n\t\t\t\t\t\n\t\t\t\t\t- ...T = type IDs of the 2nd and subsequent arguments (1 byte\n\t\t\t\t\teach).\n\t\t\t\t\t\n\t\t\t\t\t- d = raw bytes of first argument (per-type size).\n\t\t\t\t\t\n\t\t\t\t\t- ...D = raw bytes of the 2nd and subsequent arguments (per-type\n\t\t\t\t\tsize).\n\t\t\t\t\t\n\t\t\t\t\tAll types except strings have fixed sizes. Strings are stored\n\t\t\t\t\tusing their TextEncoder/TextDecoder representations. It would\n\t\t\t\t\targuably make more sense to store them as Int16Arrays of\n\t\t\t\t\ttheir JS character values, but how best/fastest to get that\n\t\t\t\t\tin and out of string form is an open point. Initial\n\t\t\t\t\texperimentation with that approach did not gain us any speed.\n\t\t\t\t\t\n\t\t\t\t\tHistorical note: this impl was initially about 1% this size by\n\t\t\t\t\tusing using JSON.stringify/parse(), but using fit-to-purpose\n\t\t\t\t\tserialization saves considerable runtime.\n\t\t\t\t\t*/\n\t\t\t\t\tif (state.s11n) return state.s11n;\n\t\t\t\t\tconst textDecoder = new TextDecoder(), textEncoder = new TextEncoder(\"utf-8\"), viewU8 = new Uint8Array(state.sabIO, state.sabS11nOffset, state.sabS11nSize), viewDV = new DataView(state.sabIO, state.sabS11nOffset, state.sabS11nSize);\n\t\t\t\t\tstate.s11n = Object.create(null);\n\t\t\t\t\tconst TypeIds = Object.create(null);\n\t\t\t\t\tTypeIds.number = {\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tgetter: \"getFloat64\",\n\t\t\t\t\t\tsetter: \"setFloat64\"\n\t\t\t\t\t};\n\t\t\t\t\tTypeIds.bigint = {\n\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tgetter: \"getBigInt64\",\n\t\t\t\t\t\tsetter: \"setBigInt64\"\n\t\t\t\t\t};\n\t\t\t\t\tTypeIds.boolean = {\n\t\t\t\t\t\tid: 3,\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tgetter: \"getInt32\",\n\t\t\t\t\t\tsetter: \"setInt32\"\n\t\t\t\t\t};\n\t\t\t\t\tTypeIds.string = { id: 4 };\n\t\t\t\t\tconst getTypeId = (v) => TypeIds[typeof v] || toss(\"Maintenance required: this value type cannot be serialized.\", v);\n\t\t\t\t\tconst getTypeIdById = (tid) => {\n\t\t\t\t\t\tswitch (tid) {\n\t\t\t\t\t\t\tcase TypeIds.number.id: return TypeIds.number;\n\t\t\t\t\t\t\tcase TypeIds.bigint.id: return TypeIds.bigint;\n\t\t\t\t\t\t\tcase TypeIds.boolean.id: return TypeIds.boolean;\n\t\t\t\t\t\t\tcase TypeIds.string.id: return TypeIds.string;\n\t\t\t\t\t\t\tdefault: toss(\"Invalid type ID:\", tid);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tReturns an array of the deserialized state stored by the most\n\t\t\t\t\trecent serialize() operation (from this thread or the\n\t\t\t\t\tcounterpart thread), or null if the serialization buffer is\n\t\t\t\t\tempty. If passed a truthy argument, the serialization buffer\n\t\t\t\t\tis cleared after deserialization.\n\t\t\t\t\t*/\n\t\t\t\t\tstate.s11n.deserialize = function(clear = false) {\n\t\t\t\t\t\tperformance.now();\n\t\t\t\t\t\tconst argc = viewU8[0];\n\t\t\t\t\t\tconst rc = argc ? [] : null;\n\t\t\t\t\t\tif (argc) {\n\t\t\t\t\t\t\tconst typeIds = [];\n\t\t\t\t\t\t\tlet offset = 1, i, n, v;\n\t\t\t\t\t\t\tfor (i = 0; i < argc; ++i, ++offset) typeIds.push(getTypeIdById(viewU8[offset]));\n\t\t\t\t\t\t\tfor (i = 0; i < argc; ++i) {\n\t\t\t\t\t\t\t\tconst t = typeIds[i];\n\t\t\t\t\t\t\t\tif (t.getter) {\n\t\t\t\t\t\t\t\t\tv = viewDV[t.getter](offset, state.littleEndian);\n\t\t\t\t\t\t\t\t\toffset += t.size;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tn = viewDV.getInt32(offset, state.littleEndian);\n\t\t\t\t\t\t\t\t\toffset += 4;\n\t\t\t\t\t\t\t\t\tv = textDecoder.decode(viewU8.slice(offset, offset + n));\n\t\t\t\t\t\t\t\t\toffset += n;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trc.push(v);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (clear) viewU8[0] = 0;\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tSerializes all arguments to the shared buffer for consumption\n\t\t\t\t\tby the counterpart thread.\n\t\t\t\t\t\n\t\t\t\t\tThis routine is only intended for serializing OPFS VFS\n\t\t\t\t\targuments and (in at least one special case) result values,\n\t\t\t\t\tand the buffer is sized to be able to comfortably handle\n\t\t\t\t\tthose.\n\t\t\t\t\t\n\t\t\t\t\tIf passed no arguments then it zeroes out the serialization\n\t\t\t\t\tstate.\n\t\t\t\t\t*/\n\t\t\t\t\tstate.s11n.serialize = function(...args) {\n\t\t\t\t\t\tperformance.now();\n\t\t\t\t\t\tif (args.length) {\n\t\t\t\t\t\t\tconst typeIds = [];\n\t\t\t\t\t\t\tlet i = 0, offset = 1;\n\t\t\t\t\t\t\tviewU8[0] = args.length & 255;\n\t\t\t\t\t\t\tfor (; i < args.length; ++i, ++offset) {\n\t\t\t\t\t\t\t\ttypeIds.push(getTypeId(args[i]));\n\t\t\t\t\t\t\t\tviewU8[offset] = typeIds[i].id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (i = 0; i < args.length; ++i) {\n\t\t\t\t\t\t\t\tconst t = typeIds[i];\n\t\t\t\t\t\t\t\tif (t.setter) {\n\t\t\t\t\t\t\t\t\tviewDV[t.setter](offset, args[i], state.littleEndian);\n\t\t\t\t\t\t\t\t\toffset += t.size;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst s = textEncoder.encode(args[i]);\n\t\t\t\t\t\t\t\t\tviewDV.setInt32(offset, s.byteLength, state.littleEndian);\n\t\t\t\t\t\t\t\t\toffset += 4;\n\t\t\t\t\t\t\t\t\tviewU8.set(s, offset);\n\t\t\t\t\t\t\t\t\toffset += s.byteLength;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else viewU8[0] = 0;\n\t\t\t\t\t};\n\t\t\t\t\treturn state.s11n;\n\t\t\t\t};\n\t\t\t\topfsVfs.initS11n = initS11n;\n\t\t\t\t/**\n\t\t\t\tTo be called by the VFS's main installation routine after it has\n\t\t\t\twired up enough state to provide its overridden io-method impls\n\t\t\t\t(which must be properties of the ioMethods argument). Returns a\n\t\t\t\tPromise which the installation routine must return. callback must\n\t\t\t\tbe a function which performs any post-bootstrap touchups, namely\n\t\t\t\tplugging in a sqlite3.oo1 wrapper. It is passed (sqlite3, opfsVfs),\n\t\t\t\twhere opfsVfs is the sqlite3_vfs object which was set up by\n\t\t\t\topfsUtil.createVfsState().\n\t\t\t\t*/\n\t\t\t\topfsVfs.bindVfs = function(ioMethods, callback) {\n\t\t\t\t\tObject.assign(opfsVfs.ioSyncWrappers, ioMethods);\n\t\t\t\t\treturn new Promise(function(promiseResolve_, promiseReject_) {\n\t\t\t\t\t\tlet promiseWasRejected = void 0;\n\t\t\t\t\t\tconst promiseReject = (err) => {\n\t\t\t\t\t\t\tpromiseWasRejected = true;\n\t\t\t\t\t\t\topfsVfs.dispose();\n\t\t\t\t\t\t\treturn promiseReject_(err);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst promiseResolve = () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcallback(sqlite3, opfsVfs);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn promiseReject(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpromiseWasRejected = false;\n\t\t\t\t\t\t\treturn promiseResolve_(sqlite3);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst options = opfsUtil.options;\n\t\t\t\t\t\toptions.proxyUri + (options.proxyUri.indexOf(\"?\") < 0 ? \"?\" : \"&\") + vfsName;\n\t\t\t\t\t\tconst opfsAsyncProxyUrl = new URL(\"sqlite3-opfs-async-proxy.js\", import.meta.url);\n\t\t\t\t\t\topfsAsyncProxyUrl.searchParams.set(\"vfs\", vfsName);\n\t\t\t\t\t\tconst W = opfsVfs.worker = new Worker(opfsAsyncProxyUrl.toString());\n\t\t\t\t\t\tlet zombieTimer = setTimeout(() => {\n\t\t\t\t\t\t\tif (void 0 === promiseWasRejected) promiseReject(/* @__PURE__ */ new Error(\"Timeout while waiting for OPFS async proxy worker.\"));\n\t\t\t\t\t\t}, 4e3);\n\t\t\t\t\t\tW._originalOnError = W.onerror;\n\t\t\t\t\t\tW.onerror = function(err) {\n\t\t\t\t\t\t\terror(\"Error initializing OPFS asyncer:\", err);\n\t\t\t\t\t\t\tpromiseReject(/* @__PURE__ */ new Error(\"Loading OPFS async Worker failed for unknown reasons.\"));\n\t\t\t\t\t\t};\n\t\t\t\t\t\topfsVfs.opRun;\n\t\t\t\t\t\tconst sanityCheck = function() {\n\t\t\t\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\t\t\t\tconst sq3File = new capi.sqlite3_file();\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst fid = sq3File.pointer;\n\t\t\t\t\t\t\t\tconst openFlags = capi.SQLITE_OPEN_CREATE | capi.SQLITE_OPEN_READWRITE | capi.SQLITE_OPEN_MAIN_DB;\n\t\t\t\t\t\t\t\tconst pOut = wasm.scopedAlloc(8);\n\t\t\t\t\t\t\t\tconst dbFile = \"/sanity/check/file\" + randomFilename(8);\n\t\t\t\t\t\t\t\tconst zDbFile = wasm.scopedAllocCString(dbFile);\n\t\t\t\t\t\t\t\tlet rc;\n\t\t\t\t\t\t\t\tstate.s11n.serialize(\"This is ä string.\");\n\t\t\t\t\t\t\t\trc = state.s11n.deserialize();\n\t\t\t\t\t\t\t\tlog(\"deserialize() says:\", rc);\n\t\t\t\t\t\t\t\tif (\"This is ä string.\" !== rc[0]) toss(\"String d13n error.\");\n\t\t\t\t\t\t\t\topfsVfs.vfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n\t\t\t\t\t\t\t\trc = wasm.peek(pOut, \"i32\");\n\t\t\t\t\t\t\t\tlog(\"xAccess(\", dbFile, \") exists ?=\", rc);\n\t\t\t\t\t\t\t\trc = opfsVfs.vfsSyncWrappers.xOpen(opfsVfs.pointer, zDbFile, fid, openFlags, pOut);\n\t\t\t\t\t\t\t\tlog(\"open rc =\", rc, \"state.sabOPView[xOpen] =\", state.sabOPView[state.opIds.xOpen]);\n\t\t\t\t\t\t\t\tif (0 !== rc) {\n\t\t\t\t\t\t\t\t\terror(\"open failed with code\", rc);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\topfsVfs.vfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n\t\t\t\t\t\t\t\trc = wasm.peek(pOut, \"i32\");\n\t\t\t\t\t\t\t\tif (!rc) toss(\"xAccess() failed to detect file.\");\n\t\t\t\t\t\t\t\trc = opfsVfs.ioSyncWrappers.xSync(sq3File.pointer, 0);\n\t\t\t\t\t\t\t\tif (rc) toss(\"sync failed w/ rc\", rc);\n\t\t\t\t\t\t\t\trc = opfsVfs.ioSyncWrappers.xTruncate(sq3File.pointer, 1024);\n\t\t\t\t\t\t\t\tif (rc) toss(\"truncate failed w/ rc\", rc);\n\t\t\t\t\t\t\t\twasm.poke(pOut, 0, \"i64\");\n\t\t\t\t\t\t\t\trc = opfsVfs.ioSyncWrappers.xFileSize(sq3File.pointer, pOut);\n\t\t\t\t\t\t\t\tif (rc) toss(\"xFileSize failed w/ rc\", rc);\n\t\t\t\t\t\t\t\tlog(\"xFileSize says:\", wasm.peek(pOut, \"i64\"));\n\t\t\t\t\t\t\t\trc = opfsVfs.ioSyncWrappers.xWrite(sq3File.pointer, zDbFile, 10, 1);\n\t\t\t\t\t\t\t\tif (rc) toss(\"xWrite() failed!\");\n\t\t\t\t\t\t\t\tconst readBuf = wasm.scopedAlloc(16);\n\t\t\t\t\t\t\t\trc = opfsVfs.ioSyncWrappers.xRead(sq3File.pointer, readBuf, 6, 2);\n\t\t\t\t\t\t\t\twasm.poke(readBuf + 6, 0);\n\t\t\t\t\t\t\t\tlet jRead = wasm.cstrToJs(readBuf);\n\t\t\t\t\t\t\t\tlog(\"xRead() got:\", jRead);\n\t\t\t\t\t\t\t\tif (\"sanity\" !== jRead) toss(\"Unexpected xRead() value.\");\n\t\t\t\t\t\t\t\tif (opfsVfs.vfsSyncWrappers.xSleep) {\n\t\t\t\t\t\t\t\t\tlog(\"xSleep()ing before close()ing...\");\n\t\t\t\t\t\t\t\t\topfsVfs.vfsSyncWrappers.xSleep(opfsVfs.pointer, 2e3);\n\t\t\t\t\t\t\t\t\tlog(\"waking up from xSleep()\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trc = opfsVfs.ioSyncWrappers.xClose(fid);\n\t\t\t\t\t\t\t\tlog(\"xClose rc =\", rc, \"sabOPView =\", state.sabOPView);\n\t\t\t\t\t\t\t\tlog(\"Deleting file:\", dbFile);\n\t\t\t\t\t\t\t\topfsVfs.vfsSyncWrappers.xDelete(opfsVfs.pointer, zDbFile, 4660);\n\t\t\t\t\t\t\t\topfsVfs.vfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n\t\t\t\t\t\t\t\trc = wasm.peek(pOut, \"i32\");\n\t\t\t\t\t\t\t\tif (rc) toss(\"Expecting 0 from xAccess(\", dbFile, \") after xDelete().\");\n\t\t\t\t\t\t\t\twarn(\"End of OPFS sanity checks.\");\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tsq3File.dispose();\n\t\t\t\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tW.onmessage = function({ data }) {\n\t\t\t\t\t\t\tswitch (data.type) {\n\t\t\t\t\t\t\t\tcase \"opfs-unavailable\":\n\t\t\t\t\t\t\t\t\tpromiseReject(new Error(data.payload.join(\" \")));\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"opfs-async-loaded\":\n\t\t\t\t\t\t\t\t\tdelete state.vfs;\n\t\t\t\t\t\t\t\t\tW.postMessage({\n\t\t\t\t\t\t\t\t\t\ttype: \"opfs-async-init\",\n\t\t\t\t\t\t\t\t\t\targs: util.nu(state)\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"opfs-async-inited\":\n\t\t\t\t\t\t\t\t\tif (true === promiseWasRejected) break;\n\t\t\t\t\t\t\t\t\tclearTimeout(zombieTimer);\n\t\t\t\t\t\t\t\t\tzombieTimer = null;\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tsqlite3.vfs.installVfs({\n\t\t\t\t\t\t\t\t\t\t\tio: {\n\t\t\t\t\t\t\t\t\t\t\t\tstruct: opfsVfs.ioMethods,\n\t\t\t\t\t\t\t\t\t\t\t\tmethods: opfsVfs.ioSyncWrappers\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tvfs: {\n\t\t\t\t\t\t\t\t\t\t\t\tstruct: opfsVfs,\n\t\t\t\t\t\t\t\t\t\t\t\tmethods: opfsVfs.vfsSyncWrappers\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tstate.sabOPView = new Int32Array(state.sabOP);\n\t\t\t\t\t\t\t\t\t\tstate.sabFileBufView = new Uint8Array(state.sabIO, 0, state.fileBufferSize);\n\t\t\t\t\t\t\t\t\t\tstate.sabS11nView = new Uint8Array(state.sabIO, state.sabS11nOffset, state.sabS11nSize);\n\t\t\t\t\t\t\t\t\t\topfsVfs.initS11n();\n\t\t\t\t\t\t\t\t\t\tdelete opfsVfs.initS11n;\n\t\t\t\t\t\t\t\t\t\tif (options.sanityChecks) {\n\t\t\t\t\t\t\t\t\t\t\twarn(\"Running sanity checks because of opfs-sanity-check URL arg...\");\n\t\t\t\t\t\t\t\t\t\t\tsanityCheck();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (opfsUtil.thisThreadHasOPFS()) opfsUtil.getRootDir().then((d) => {\n\t\t\t\t\t\t\t\t\t\t\tW.onerror = W._originalOnError;\n\t\t\t\t\t\t\t\t\t\t\tdelete W._originalOnError;\n\t\t\t\t\t\t\t\t\t\t\tlog(\"End of OPFS sqlite3_vfs setup.\", opfsVfs);\n\t\t\t\t\t\t\t\t\t\t\tpromiseResolve();\n\t\t\t\t\t\t\t\t\t\t}).catch(promiseReject);\n\t\t\t\t\t\t\t\t\t\telse promiseResolve();\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\terror(e);\n\t\t\t\t\t\t\t\t\t\tpromiseReject(e);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"debug\":\n\t\t\t\t\t\t\t\t\twarn(\"debug message from worker:\", data);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tconst errMsg = \"Unexpected message from the OPFS async worker: \" + JSON.stringify(data);\n\t\t\t\t\t\t\t\t\terror(errMsg);\n\t\t\t\t\t\t\t\t\tpromiseReject(new Error(errMsg));\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\treturn state;\n\t\t\t};\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tif (!sqlite3.opfs || sqlite3.config.disable?.vfs?.opfs) return;\n\t\t\tconst util = sqlite3.util, opfsUtil = sqlite3.opfs || sqlite3.util.toss(\"Missing sqlite3.opfs\");\n\t\t\t/**\n\t\t\tinstallOpfsVfs() returns a Promise which, on success, installs an\n\t\t\tsqlite3_vfs named \"opfs\", suitable for use with all sqlite3 APIs\n\t\t\twhich accept a VFS. It is intended to be called via\n\t\t\tsqlite3ApiBootstrap.initializers or an equivalent mechanism.\n\t\t\t\n\t\t\tThe installed VFS uses the Origin-Private FileSystem API for\n\t\t\tall file storage. On error it is rejected with an exception\n\t\t\texplaining the problem. Reasons for rejection include, but are\n\t\t\tnot limited to:\n\t\t\t\n\t\t\t- The counterpart Worker (see below) could not be loaded.\n\t\t\t\n\t\t\t- The environment does not support OPFS. That includes when\n\t\t\tthis function is called from the main window thread.\n\t\t\t\n\t\t\tSignificant notes and limitations:\n\t\t\t\n\t\t\t- The OPFS features used here are only available in dedicated Worker\n\t\t\tthreads. This file tries to detect that case, resulting in a\n\t\t\trejected Promise if those features do not seem to be available.\n\t\t\t\n\t\t\t- It requires the SharedArrayBuffer and Atomics classes, and the\n\t\t\tformer is only available if the HTTP server emits the so-called\n\t\t\tCOOP and COEP response headers. These features are required for\n\t\t\tproxying OPFS's synchronous API via the synchronous interface\n\t\t\trequired by the sqlite3_vfs API.\n\t\t\t\n\t\t\t- This function may only be called a single time. When called, this\n\t\t\tfunction removes itself from the sqlite3 object.\n\t\t\t\n\t\t\tAll arguments to this function are for internal/development purposes\n\t\t\tonly. They do not constitute a public API and may change at any\n\t\t\ttime.\n\t\t\t\n\t\t\tThe argument may optionally be a plain object with the following\n\t\t\tconfiguration options:\n\t\t\t\n\t\t\t- proxyUri: name of the async proxy JS file or a synchronous function\n\t\t\twhich, when called, returns such a name.\n\t\t\t\n\t\t\t- verbose (=2): an integer 0-3. 0 disables all logging, 1 enables\n\t\t\tlogging of errors. 2 enables logging of warnings and errors. 3\n\t\t\tadditionally enables debugging info. Logging is performed\n\t\t\tvia the sqlite3.config.{log|warn|error}() functions.\n\t\t\t\n\t\t\t- sanityChecks (=false): if true, some basic sanity tests are run on\n\t\t\tthe OPFS VFS API after it's initialized, before the returned\n\t\t\tPromise resolves. This is only intended for testing and\n\t\t\tdevelopment of the VFS, not client-side use.\n\t\t\t\n\t\t\tAdditionaly, the (officially undocumented) 'opfs-disable' URL\n\t\t\targument will disable OPFS, making this function a no-op.\n\t\t\t\n\t\t\tOn success, the Promise resolves to the top-most sqlite3 namespace\n\t\t\tobject. Success does not necessarily mean that it installs the VFS,\n\t\t\tas there are legitimate non-error reasons for OPFS not to be\n\t\t\tavailable.\n\t\t\t*/\n\t\t\tconst installOpfsVfs = async function(options) {\n\t\t\t\toptions = opfsUtil.initOptions(\"opfs\", options);\n\t\t\t\tif (!options) return sqlite3;\n\t\t\t\tconst capi = sqlite3.capi, opfsVfs = opfsUtil.createVfsState().vfs, metrics = opfsVfs.metrics.counters, mTimeStart = opfsVfs.mTimeStart, mTimeEnd = opfsVfs.mTimeEnd, opRun = opfsVfs.opRun, __openFiles = opfsVfs.__openFiles;\n\t\t\t\treturn opfsVfs.bindVfs(util.nu({\n\t\t\t\t\txLock: function(pFile, lockType) {\n\t\t\t\t\t\tmTimeStart(\"xLock\");\n\t\t\t\t\t\t++metrics.xLock.count;\n\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\tlet rc = 0;\n\t\t\t\t\t\tif (f.lockType) f.lockType = lockType;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\trc = opRun(\"xLock\", pFile, lockType);\n\t\t\t\t\t\t\tif (0 === rc) f.lockType = lockType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txUnlock: function(pFile, lockType) {\n\t\t\t\t\t\tmTimeStart(\"xUnlock\");\n\t\t\t\t\t\t++metrics.xUnlock.count;\n\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\tlet rc = 0;\n\t\t\t\t\t\tif (capi.SQLITE_LOCK_NONE === lockType && f.lockType) rc = opRun(\"xUnlock\", pFile, lockType);\n\t\t\t\t\t\tif (0 === rc) f.lockType = lockType;\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t}\n\t\t\t\t}), function(sqlite3, vfs) {\n\t\t\t\t\tif (sqlite3.oo1) {\n\t\t\t\t\t\tconst OpfsDb = function(...args) {\n\t\t\t\t\t\t\tconst opt = sqlite3.oo1.DB.dbCtorHelper.normalizeArgs(...args);\n\t\t\t\t\t\t\topt.vfs = vfs.$zName;\n\t\t\t\t\t\t\tsqlite3.oo1.DB.dbCtorHelper.call(this, opt);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tOpfsDb.prototype = Object.create(sqlite3.oo1.DB.prototype);\n\t\t\t\t\t\tsqlite3.oo1.OpfsDb = OpfsDb;\n\t\t\t\t\t\tOpfsDb.importDb = opfsUtil.importDb;\n\t\t\t\t\t\tsqlite3.oo1.DB.dbCtorHelper.setVfsPostOpenCallback(opfsVfs.pointer, function(oo1Db, sqlite3) {\n\t\t\t\t\t\t\tsqlite3.capi.sqlite3_busy_timeout(oo1Db, 1e4);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\tglobalThis.sqlite3ApiBootstrap.initializersAsync.push(async (sqlite3) => {\n\t\t\t\treturn installOpfsVfs().catch((e) => {\n\t\t\t\t\tsqlite3.config.warn(\"Ignoring inability to install 'opfs' sqlite3_vfs:\", e);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\t\"use strict\";\n\t\t\tif (sqlite3.config.disable?.vfs?.[\"opfs-sahpool\"]) return;\n\t\t\tconst toss = sqlite3.util.toss;\n\t\t\tconst toss3 = sqlite3.util.toss3;\n\t\t\tconst initPromises = Object.create(null);\n\t\t\tconst capi = sqlite3.capi;\n\t\t\tconst util = sqlite3.util;\n\t\t\tconst wasm = sqlite3.wasm;\n\t\t\tconst SECTOR_SIZE = 4096;\n\t\t\tconst HEADER_MAX_PATH_SIZE = 512;\n\t\t\tconst HEADER_FLAGS_SIZE = 4;\n\t\t\tconst HEADER_DIGEST_SIZE = 8;\n\t\t\tconst HEADER_CORPUS_SIZE = HEADER_MAX_PATH_SIZE + HEADER_FLAGS_SIZE;\n\t\t\tconst HEADER_OFFSET_FLAGS = HEADER_MAX_PATH_SIZE;\n\t\t\tconst HEADER_OFFSET_DIGEST = HEADER_CORPUS_SIZE;\n\t\t\tconst HEADER_OFFSET_DATA = SECTOR_SIZE;\n\t\t\tconst PERSISTENT_FILE_TYPES = capi.SQLITE_OPEN_MAIN_DB | capi.SQLITE_OPEN_MAIN_JOURNAL | capi.SQLITE_OPEN_SUPER_JOURNAL | capi.SQLITE_OPEN_WAL;\n\t\t\tconst FLAG_COMPUTE_DIGEST_V2 = capi.SQLITE_OPEN_MEMORY;\n\t\t\t/** Subdirectory of the VFS's space where \"opaque\" (randomly-named)\n\t\t\tfiles are stored. Changing this effectively invalidates the data\n\t\t\tstored under older names (orphaning it), so don't do that. */\n\t\t\tconst OPAQUE_DIR_NAME = \".opaque\";\n\t\t\t/**\n\t\t\tReturns short a string of random alphanumeric characters\n\t\t\tsuitable for use as a random filename.\n\t\t\t*/\n\t\t\tconst getRandomName = () => Math.random().toString(36).slice(2);\n\t\t\tconst textDecoder = new TextDecoder();\n\t\t\tconst textEncoder = new TextEncoder();\n\t\t\tconst optionDefaults = Object.assign(Object.create(null), {\n\t\t\t\tname: \"opfs-sahpool\",\n\t\t\t\tdirectory: void 0,\n\t\t\t\tinitialCapacity: 6,\n\t\t\t\tclearOnInit: false,\n\t\t\t\tverbosity: 2,\n\t\t\t\tforceReinitIfPreviouslyFailed: false\n\t\t\t});\n\t\t\t/** Logging routines, from most to least serious. */\n\t\t\tconst loggers = [\n\t\t\t\tsqlite3.config.error,\n\t\t\t\tsqlite3.config.warn,\n\t\t\t\tsqlite3.config.log\n\t\t\t];\n\t\t\tsqlite3.config.log;\n\t\t\tconst warn = sqlite3.config.warn;\n\t\t\tsqlite3.config.error;\n\t\t\tconst __mapVfsToPool = /* @__PURE__ */ new Map();\n\t\t\tconst getPoolForVfs = (pVfs) => __mapVfsToPool.get(pVfs);\n\t\t\tconst setPoolForVfs = (pVfs, pool) => {\n\t\t\t\tif (pool) __mapVfsToPool.set(pVfs, pool);\n\t\t\t\telse __mapVfsToPool.delete(pVfs);\n\t\t\t};\n\t\t\tconst __mapSqlite3File = /* @__PURE__ */ new Map();\n\t\t\tconst getPoolForPFile = (pFile) => __mapSqlite3File.get(pFile);\n\t\t\tconst setPoolForPFile = (pFile, pool) => {\n\t\t\t\tif (pool) __mapSqlite3File.set(pFile, pool);\n\t\t\t\telse __mapSqlite3File.delete(pFile);\n\t\t\t};\n\t\t\t/**\n\t\t\tImpls for the sqlite3_io_methods methods. Maintenance reminder:\n\t\t\tmembers are in alphabetical order to simplify finding them.\n\t\t\t*/\n\t\t\tconst ioMethods = {\n\t\t\t\txCheckReservedLock: function(pFile, pOut) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(\"xCheckReservedLock\");\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\twasm.poke32(pOut, 1);\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txClose: function(pFile) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tif (file) try {\n\t\t\t\t\t\tpool.log(`xClose ${file.path}`);\n\t\t\t\t\t\tpool.mapS3FileToOFile(pFile, false);\n\t\t\t\t\t\tfile.sah.flush();\n\t\t\t\t\t\tif (file.flags & capi.SQLITE_OPEN_DELETEONCLOSE) pool.deletePath(file.path);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txDeviceCharacteristics: function(pFile) {\n\t\t\t\t\treturn capi.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n\t\t\t\t},\n\t\t\t\txFileControl: function(pFile, opId, pArg) {\n\t\t\t\t\treturn capi.SQLITE_NOTFOUND;\n\t\t\t\t},\n\t\t\t\txFileSize: function(pFile, pSz64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xFileSize`);\n\t\t\t\t\tconst size = pool.getOFileForS3File(pFile).sah.getSize() - HEADER_OFFSET_DATA;\n\t\t\t\t\twasm.poke64(pSz64, BigInt(size));\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txLock: function(pFile, lockType) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xLock ${lockType}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tfile.lockType = lockType;\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txRead: function(pFile, pDest, n, offset64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tpool.log(`xRead ${file.path} ${n} @ ${offset64}`);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst nRead = file.sah.read(wasm.heap8u().subarray(Number(pDest), Number(pDest) + n), { at: HEADER_OFFSET_DATA + Number(offset64) });\n\t\t\t\t\t\tif (nRead < n) {\n\t\t\t\t\t\t\twasm.heap8u().fill(0, Number(pDest) + nRead, Number(pDest) + n);\n\t\t\t\t\t\t\treturn capi.SQLITE_IOERR_SHORT_READ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txSectorSize: function(pFile) {\n\t\t\t\t\treturn SECTOR_SIZE;\n\t\t\t\t},\n\t\t\t\txSync: function(pFile, flags) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xSync ${flags}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfile.sah.flush();\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txTruncate: function(pFile, sz64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xTruncate ${sz64}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfile.sah.truncate(HEADER_OFFSET_DATA + Number(sz64));\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txUnlock: function(pFile, lockType) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(\"xUnlock\");\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tfile.lockType = lockType;\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txWrite: function(pFile, pSrc, n, offset64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tpool.log(`xWrite ${file.path} ${n} ${offset64}`);\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn n === file.sah.write(wasm.heap8u().subarray(Number(pSrc), Number(pSrc) + n), { at: HEADER_OFFSET_DATA + Number(offset64) }) ? 0 : toss(\"Unknown write() failure.\");\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst opfsIoMethods = new capi.sqlite3_io_methods();\n\t\t\topfsIoMethods.$iVersion = 1;\n\t\t\tsqlite3.vfs.installVfs({ io: {\n\t\t\t\tstruct: opfsIoMethods,\n\t\t\t\tmethods: ioMethods\n\t\t\t} });\n\t\t\t/**\n\t\t\tImpls for the sqlite3_vfs methods. Maintenance reminder: members\n\t\t\tare in alphabetical order to simplify finding them.\n\t\t\t*/\n\t\t\tconst vfsMethods = {\n\t\t\t\txAccess: function(pVfs, zName, flags, pOut) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst name = pool.getPath(zName);\n\t\t\t\t\t\twasm.poke32(pOut, pool.hasFilename(name) ? 1 : 0);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\twasm.poke32(pOut, 0);\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txCurrentTime: function(pVfs, pOut) {\n\t\t\t\t\twasm.poke(pOut, 2440587.5 + (/* @__PURE__ */ new Date()).getTime() / 864e5, \"double\");\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txCurrentTimeInt64: function(pVfs, pOut) {\n\t\t\t\t\twasm.poke(pOut, 2440587.5 * 864e5 + (/* @__PURE__ */ new Date()).getTime(), \"i64\");\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txDelete: function(pVfs, zName, doSyncDir) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\tpool.log(`xDelete ${wasm.cstrToJs(zName)}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpool.deletePath(pool.getPath(zName));\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tpool.storeErr(e);\n\t\t\t\t\t\treturn capi.SQLITE_IOERR_DELETE;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txFullPathname: function(pVfs, zName, nOut, pOut) {\n\t\t\t\t\treturn wasm.cstrncpy(pOut, zName, nOut) < nOut ? 0 : capi.SQLITE_CANTOPEN;\n\t\t\t\t},\n\t\t\t\txGetLastError: function(pVfs, nOut, pOut) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\tconst e = pool.popErr();\n\t\t\t\t\tpool.log(`xGetLastError ${nOut} e =`, e);\n\t\t\t\t\tif (e) {\n\t\t\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst [cMsg, n] = wasm.scopedAllocCString(e.message, true);\n\t\t\t\t\t\t\twasm.cstrncpy(pOut, cMsg, nOut);\n\t\t\t\t\t\t\tif (n > nOut) wasm.poke8(wasm.ptr.add(pOut, nOut, -1), 0);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn capi.SQLITE_NOMEM;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn e ? e.sqlite3Rc || capi.SQLITE_IOERR : 0;\n\t\t\t\t},\n\t\t\t\txOpen: function f(pVfs, zName, pFile, flags, pOutFlags) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tflags &= ~FLAG_COMPUTE_DIGEST_V2;\n\t\t\t\t\t\tpool.log(`xOpen ${wasm.cstrToJs(zName)} ${flags}`);\n\t\t\t\t\t\tconst path = zName && wasm.peek8(zName) ? pool.getPath(zName) : getRandomName();\n\t\t\t\t\t\tlet sah = pool.getSAHForPath(path);\n\t\t\t\t\t\tif (!sah && flags & capi.SQLITE_OPEN_CREATE) if (pool.getFileCount() < pool.getCapacity()) {\n\t\t\t\t\t\t\tsah = pool.nextAvailableSAH();\n\t\t\t\t\t\t\tpool.setAssociatedPath(sah, path, flags);\n\t\t\t\t\t\t} else toss(\"SAH pool is full. Cannot create file\", path);\n\t\t\t\t\t\tif (!sah) toss(\"file not found:\", path);\n\t\t\t\t\t\tconst file = {\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tflags,\n\t\t\t\t\t\t\tsah\n\t\t\t\t\t\t};\n\t\t\t\t\t\tpool.mapS3FileToOFile(pFile, file);\n\t\t\t\t\t\tfile.lockType = capi.SQLITE_LOCK_NONE;\n\t\t\t\t\t\tconst sq3File = new capi.sqlite3_file(pFile);\n\t\t\t\t\t\tsq3File.$pMethods = opfsIoMethods.pointer;\n\t\t\t\t\t\tsq3File.dispose();\n\t\t\t\t\t\twasm.poke32(pOutFlags, flags);\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tpool.storeErr(e);\n\t\t\t\t\t\treturn capi.SQLITE_CANTOPEN;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates, initializes, and returns an sqlite3_vfs instance for an\n\t\t\tOpfsSAHPool. The argument is the VFS's name (JS string).\n\t\t\t\n\t\t\tThrows if the VFS name is already registered or if something\n\t\t\tgoes terribly wrong via sqlite3.vfs.installVfs().\n\t\t\t\n\t\t\tMaintenance reminder: the only detail about the returned object\n\t\t\twhich is specific to any given OpfsSAHPool instance is the $zName\n\t\t\tmember. All other state is identical.\n\t\t\t*/\n\t\t\tconst createOpfsVfs = function(vfsName) {\n\t\t\t\tif (sqlite3.capi.sqlite3_vfs_find(vfsName)) toss3(\"VFS name is already registered:\", vfsName);\n\t\t\t\tconst opfsVfs = new capi.sqlite3_vfs();\n\t\t\t\tconst pDVfs = capi.sqlite3_vfs_find(null);\n\t\t\t\tconst dVfs = pDVfs ? new capi.sqlite3_vfs(pDVfs) : null;\n\t\t\t\topfsVfs.$iVersion = 2;\n\t\t\t\topfsVfs.$szOsFile = capi.sqlite3_file.structInfo.sizeof;\n\t\t\t\topfsVfs.$mxPathname = HEADER_MAX_PATH_SIZE;\n\t\t\t\topfsVfs.addOnDispose(opfsVfs.$zName = wasm.allocCString(vfsName), () => setPoolForVfs(opfsVfs.pointer, 0));\n\t\t\t\tif (dVfs) {\n\t\t\t\t\topfsVfs.$xRandomness = dVfs.$xRandomness;\n\t\t\t\t\topfsVfs.$xSleep = dVfs.$xSleep;\n\t\t\t\t\tdVfs.dispose();\n\t\t\t\t}\n\t\t\t\tif (!opfsVfs.$xRandomness && !vfsMethods.xRandomness) vfsMethods.xRandomness = function(pVfs, nOut, pOut) {\n\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\tlet i = 0;\n\t\t\t\t\tconst npOut = Number(pOut);\n\t\t\t\t\tfor (; i < nOut; ++i) heap[npOut + i] = Math.random() * 255e3 & 255;\n\t\t\t\t\treturn i;\n\t\t\t\t};\n\t\t\t\tif (!opfsVfs.$xSleep && !vfsMethods.xSleep) vfsMethods.xSleep = (pVfs, ms) => 0;\n\t\t\t\tsqlite3.vfs.installVfs({ vfs: {\n\t\t\t\t\tstruct: opfsVfs,\n\t\t\t\t\tmethods: vfsMethods\n\t\t\t\t} });\n\t\t\t\treturn opfsVfs;\n\t\t\t};\n\t\t\t/**\n\t\t\tClass for managing OPFS-related state for the\n\t\t\tOPFS SharedAccessHandle Pool sqlite3_vfs.\n\t\t\t*/\n\t\t\tclass OpfsSAHPool {\n\t\t\t\tvfsDir;\n\t\t\t\t#dhVfsRoot;\n\t\t\t\t#dhOpaque;\n\t\t\t\t#dhVfsParent;\n\t\t\t\t#mapSAHToName = /* @__PURE__ */ new Map();\n\t\t\t\t#mapFilenameToSAH = /* @__PURE__ */ new Map();\n\t\t\t\t#availableSAH = /* @__PURE__ */ new Set();\n\t\t\t\t#mapS3FileToOFile_ = /* @__PURE__ */ new Map();\n\t\t\t\t/** Buffer used by [sg]etAssociatedPath(). */\n\t\t\t\t#apBody = new Uint8Array(HEADER_CORPUS_SIZE);\n\t\t\t\t#dvBody;\n\t\t\t\t#cVfs;\n\t\t\t\t#verbosity;\n\t\t\t\tconstructor(options = Object.create(null)) {\n\t\t\t\t\tthis.#verbosity = options.verbosity ?? optionDefaults.verbosity;\n\t\t\t\t\tthis.vfsName = options.name || optionDefaults.name;\n\t\t\t\t\tthis.#cVfs = createOpfsVfs(this.vfsName);\n\t\t\t\t\tsetPoolForVfs(this.#cVfs.pointer, this);\n\t\t\t\t\tthis.vfsDir = options.directory || \".\" + this.vfsName;\n\t\t\t\t\tthis.#dvBody = new DataView(this.#apBody.buffer, this.#apBody.byteOffset);\n\t\t\t\t\tthis.isReady = this.reset(!!(options.clearOnInit ?? optionDefaults.clearOnInit)).then(() => {\n\t\t\t\t\t\tif (this.$error) throw this.$error;\n\t\t\t\t\t\treturn this.getCapacity() ? Promise.resolve(void 0) : this.addCapacity(options.initialCapacity || optionDefaults.initialCapacity);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t#logImpl(level, ...args) {\n\t\t\t\t\tif (this.#verbosity > level) loggers[level](this.vfsName + \":\", ...args);\n\t\t\t\t}\n\t\t\t\tlog(...args) {\n\t\t\t\t\tthis.#logImpl(2, ...args);\n\t\t\t\t}\n\t\t\t\twarn(...args) {\n\t\t\t\t\tthis.#logImpl(1, ...args);\n\t\t\t\t}\n\t\t\t\terror(...args) {\n\t\t\t\t\tthis.#logImpl(0, ...args);\n\t\t\t\t}\n\t\t\t\tgetVfs() {\n\t\t\t\t\treturn this.#cVfs;\n\t\t\t\t}\n\t\t\t\tgetCapacity() {\n\t\t\t\t\treturn this.#mapSAHToName.size;\n\t\t\t\t}\n\t\t\t\tgetFileCount() {\n\t\t\t\t\treturn this.#mapFilenameToSAH.size;\n\t\t\t\t}\n\t\t\t\tgetFileNames() {\n\t\t\t\t\tconst rc = [];\n\t\t\t\t\tfor (const n of this.#mapFilenameToSAH.keys()) rc.push(n);\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tAdds n files to the pool's capacity. This change is\n\t\t\t\tpersistent across settings. Returns a Promise which resolves\n\t\t\t\tto the new capacity.\n\t\t\t\t*/\n\t\t\t\tasync addCapacity(n) {\n\t\t\t\t\tfor (let i = 0; i < n; ++i) {\n\t\t\t\t\t\tconst name = getRandomName();\n\t\t\t\t\t\tconst ah = await (await this.#dhOpaque.getFileHandle(name, { create: true })).createSyncAccessHandle();\n\t\t\t\t\t\tthis.#mapSAHToName.set(ah, name);\n\t\t\t\t\t\tthis.setAssociatedPath(ah, \"\", 0);\n\t\t\t\t\t}\n\t\t\t\t\treturn this.getCapacity();\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReduce capacity by n, but can only reduce up to the limit\n\t\t\t\tof currently-available SAHs. Returns a Promise which resolves\n\t\t\t\tto the number of slots really removed.\n\t\t\t\t*/\n\t\t\t\tasync reduceCapacity(n) {\n\t\t\t\t\tlet nRm = 0;\n\t\t\t\t\tfor (const ah of Array.from(this.#availableSAH)) {\n\t\t\t\t\t\tif (nRm === n || this.getFileCount() === this.getCapacity()) break;\n\t\t\t\t\t\tconst name = this.#mapSAHToName.get(ah);\n\t\t\t\t\t\tah.close();\n\t\t\t\t\t\tawait this.#dhOpaque.removeEntry(name);\n\t\t\t\t\t\tthis.#mapSAHToName.delete(ah);\n\t\t\t\t\t\tthis.#availableSAH.delete(ah);\n\t\t\t\t\t\t++nRm;\n\t\t\t\t\t}\n\t\t\t\t\treturn nRm;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReleases all currently-opened SAHs. The only legal operation\n\t\t\t\tafter this is acquireAccessHandles() or (if this is called from\n\t\t\t\tpauseVfs()) either of isPaused() or unpauseVfs().\n\t\t\t\t*/\n\t\t\t\treleaseAccessHandles() {\n\t\t\t\t\tfor (const ah of this.#mapSAHToName.keys()) ah.close();\n\t\t\t\t\tthis.#mapSAHToName.clear();\n\t\t\t\t\tthis.#mapFilenameToSAH.clear();\n\t\t\t\t\tthis.#availableSAH.clear();\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tOpens all files under this.vfsDir/this.#dhOpaque and acquires a\n\t\t\t\tSAH for each. Returns a Promise which resolves to no value but\n\t\t\t\tcompletes once all SAHs are acquired. If acquiring an SAH\n\t\t\t\tthrows, this.$error will contain the corresponding Error\n\t\t\t\tobject.\n\t\t\t\t\n\t\t\t\tIf it throws, it releases any SAHs which it may have\n\t\t\t\tacquired before the exception was thrown, leaving the VFS in a\n\t\t\t\twell-defined but unusable state.\n\t\t\t\t\n\t\t\t\tIf clearFiles is true, the client-stored state of each file is\n\t\t\t\tcleared when its handle is acquired, including its name, flags,\n\t\t\t\tand any data stored after the metadata block.\n\t\t\t\t*/\n\t\t\t\tasync acquireAccessHandles(clearFiles = false) {\n\t\t\t\t\tconst files = [];\n\t\t\t\t\tfor await (const [name, h] of this.#dhOpaque) if (\"file\" === h.kind) files.push([name, h]);\n\t\t\t\t\treturn Promise.all(files.map(async ([name, h]) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst ah = await h.createSyncAccessHandle();\n\t\t\t\t\t\t\tthis.#mapSAHToName.set(ah, name);\n\t\t\t\t\t\t\tif (clearFiles) {\n\t\t\t\t\t\t\t\tah.truncate(HEADER_OFFSET_DATA);\n\t\t\t\t\t\t\t\tthis.setAssociatedPath(ah, \"\", 0);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst path = this.getAssociatedPath(ah);\n\t\t\t\t\t\t\t\tif (path) this.#mapFilenameToSAH.set(path, ah);\n\t\t\t\t\t\t\t\telse this.#availableSAH.add(ah);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.storeErr(e);\n\t\t\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGiven an SAH, returns the client-specified name of\n\t\t\t\tthat file by extracting it from the SAH's header.\n\t\t\t\t\n\t\t\t\tOn error, it disassociates SAH from the pool and\n\t\t\t\treturns an empty string.\n\t\t\t\t*/\n\t\t\t\tgetAssociatedPath(sah) {\n\t\t\t\t\tsah.read(this.#apBody, { at: 0 });\n\t\t\t\t\tconst flags = this.#dvBody.getUint32(HEADER_OFFSET_FLAGS);\n\t\t\t\t\tif (this.#apBody[0] && (flags & capi.SQLITE_OPEN_DELETEONCLOSE || (flags & PERSISTENT_FILE_TYPES) === 0)) {\n\t\t\t\t\t\twarn(`Removing file with unexpected flags ${flags.toString(16)}`, this.#apBody);\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\t\t\t\t\tconst fileDigest = new Uint32Array(HEADER_DIGEST_SIZE / 4);\n\t\t\t\t\tsah.read(fileDigest, { at: HEADER_OFFSET_DIGEST });\n\t\t\t\t\tconst compDigest = this.computeDigest(this.#apBody, flags);\n\t\t\t\t\tif (fileDigest.every((v, i) => v === compDigest[i])) {\n\t\t\t\t\t\tconst pathBytes = this.#apBody.findIndex((v) => 0 === v);\n\t\t\t\t\t\tif (0 === pathBytes) sah.truncate(HEADER_OFFSET_DATA);\n\t\t\t\t\t\treturn pathBytes ? textDecoder.decode(this.#apBody.subarray(0, pathBytes)) : \"\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\twarn(\"Disassociating file with bad digest.\");\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tStores the given client-defined path and SQLITE_OPEN_xyz flags\n\t\t\t\tinto the given SAH. If path is an empty string then the file is\n\t\t\t\tdisassociated from the pool but its previous name is preserved\n\t\t\t\tin the metadata.\n\t\t\t\t*/\n\t\t\t\tsetAssociatedPath(sah, path, flags) {\n\t\t\t\t\tconst enc = textEncoder.encodeInto(path, this.#apBody);\n\t\t\t\t\tif (HEADER_MAX_PATH_SIZE <= enc.written + 1) toss(\"Path too long:\", path);\n\t\t\t\t\tif (path && flags) flags |= FLAG_COMPUTE_DIGEST_V2;\n\t\t\t\t\tthis.#apBody.fill(0, enc.written, HEADER_MAX_PATH_SIZE);\n\t\t\t\t\tthis.#dvBody.setUint32(HEADER_OFFSET_FLAGS, flags);\n\t\t\t\t\tconst digest = this.computeDigest(this.#apBody, flags);\n\t\t\t\t\tsah.write(this.#apBody, { at: 0 });\n\t\t\t\t\tsah.write(digest, { at: HEADER_OFFSET_DIGEST });\n\t\t\t\t\tsah.flush();\n\t\t\t\t\tif (path) {\n\t\t\t\t\t\tthis.#mapFilenameToSAH.set(path, sah);\n\t\t\t\t\t\tthis.#availableSAH.delete(sah);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsah.truncate(HEADER_OFFSET_DATA);\n\t\t\t\t\t\tthis.#availableSAH.add(sah);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tComputes a digest for the given byte array and returns it as a\n\t\t\t\ttwo-element Uint32Array. This digest gets stored in the\n\t\t\t\tmetadata for each file as a validation check. Changing this\n\t\t\t\talgorithm invalidates all existing databases for this VFS, so\n\t\t\t\tdon't do that.\n\t\t\t\t\n\t\t\t\tSee the docs for FLAG_COMPUTE_DIGEST_V2 for more details.\n\t\t\t\t*/\n\t\t\t\tcomputeDigest(byteArray, fileFlags) {\n\t\t\t\t\tif (fileFlags & FLAG_COMPUTE_DIGEST_V2) {\n\t\t\t\t\t\tlet h1 = 3735928559;\n\t\t\t\t\t\tlet h2 = 1103547991;\n\t\t\t\t\t\tfor (const v of byteArray) {\n\t\t\t\t\t\t\th1 = Math.imul(h1 ^ v, 2654435761);\n\t\t\t\t\t\t\th2 = Math.imul(h2 ^ v, 104729);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Uint32Array([h1 >>> 0, h2 >>> 0]);\n\t\t\t\t\t} else return new Uint32Array([0, 0]);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tRe-initializes the state of the SAH pool, releasing and\n\t\t\t\tre-acquiring all handles.\n\t\t\t\t\n\t\t\t\tSee acquireAccessHandles() for the specifics of the clearFiles\n\t\t\t\targument.\n\t\t\t\t*/\n\t\t\t\tasync reset(clearFiles) {\n\t\t\t\t\tawait this.isReady;\n\t\t\t\t\tlet h = await navigator.storage.getDirectory(), prev;\n\t\t\t\t\tfor (const d of this.vfsDir.split(\"/\")) if (d) {\n\t\t\t\t\t\tprev = h;\n\t\t\t\t\t\th = await h.getDirectoryHandle(d, { create: true });\n\t\t\t\t\t}\n\t\t\t\t\tthis.#dhVfsRoot = h;\n\t\t\t\t\tthis.#dhVfsParent = prev;\n\t\t\t\t\tthis.#dhOpaque = await this.#dhVfsRoot.getDirectoryHandle(OPAQUE_DIR_NAME, { create: true });\n\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\treturn this.acquireAccessHandles(clearFiles);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns the pathname part of the given argument,\n\t\t\t\twhich may be any of:\n\t\t\t\t\n\t\t\t\t- a URL object\n\t\t\t\t- A JS string representing a file name\n\t\t\t\t- Wasm C-string representing a file name\n\t\t\t\t\n\t\t\t\tAll \"../\" parts and duplicate slashes are resolve/removed from\n\t\t\t\tthe returned result.\n\t\t\t\t*/\n\t\t\t\tgetPath(arg) {\n\t\t\t\t\tif (wasm.isPtr(arg)) arg = wasm.cstrToJs(arg);\n\t\t\t\t\treturn (arg instanceof URL ? arg : new URL(arg, \"file://localhost/\")).pathname;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tRemoves the association of the given client-specified file\n\t\t\t\tname (JS string) from the pool. Returns true if a mapping\n\t\t\t\tis found, else false.\n\t\t\t\t*/\n\t\t\t\tdeletePath(path) {\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(path);\n\t\t\t\t\tif (sah) {\n\t\t\t\t\t\tthis.#mapFilenameToSAH.delete(path);\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t}\n\t\t\t\t\treturn !!sah;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tSets e (an Error object) as this object's current error. Pass a\n\t\t\t\tfalsy (or no) value to clear it. If code is truthy it is\n\t\t\t\tassumed to be an SQLITE_xxx result code, defaulting to\n\t\t\t\tSQLITE_IOERR if code is falsy.\n\t\t\t\t\n\t\t\t\tReturns the 2nd argument.\n\t\t\t\t*/\n\t\t\t\tstoreErr(e, code) {\n\t\t\t\t\tif (e) {\n\t\t\t\t\t\te.sqlite3Rc = code || capi.SQLITE_IOERR;\n\t\t\t\t\t\tthis.error(e);\n\t\t\t\t\t}\n\t\t\t\t\tthis.$error = e;\n\t\t\t\t\treturn code;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tPops this object's Error object and returns\n\t\t\t\tit (a falsy value if no error is set).\n\t\t\t\t*/\n\t\t\t\tpopErr() {\n\t\t\t\t\tconst rc = this.$error;\n\t\t\t\t\tthis.$error = void 0;\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns the next available SAH without removing\n\t\t\t\tit from the set.\n\t\t\t\t*/\n\t\t\t\tnextAvailableSAH() {\n\t\t\t\t\tconst [rc] = this.#availableSAH.keys();\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGiven an (sqlite3_file*), returns the mapped\n\t\t\t\txOpen file object.\n\t\t\t\t*/\n\t\t\t\tgetOFileForS3File(pFile) {\n\t\t\t\t\treturn this.#mapS3FileToOFile_.get(pFile);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tMaps or unmaps (if file is falsy) the given (sqlite3_file*)\n\t\t\t\tto an xOpen file object and to this pool object.\n\t\t\t\t*/\n\t\t\t\tmapS3FileToOFile(pFile, file) {\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tthis.#mapS3FileToOFile_.set(pFile, file);\n\t\t\t\t\t\tsetPoolForPFile(pFile, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#mapS3FileToOFile_.delete(pFile);\n\t\t\t\t\t\tsetPoolForPFile(pFile, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns true if the given client-defined file name is in this\n\t\t\t\tobject's name-to-SAH map.\n\t\t\t\t*/\n\t\t\t\thasFilename(name) {\n\t\t\t\t\treturn this.#mapFilenameToSAH.has(name);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns the SAH associated with the given\n\t\t\t\tclient-defined file name.\n\t\t\t\t*/\n\t\t\t\tgetSAHForPath(path) {\n\t\t\t\t\treturn this.#mapFilenameToSAH.get(path);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tRemoves this object's sqlite3_vfs registration and shuts down\n\t\t\t\tthis object, releasing all handles, mappings, and whatnot,\n\t\t\t\tincluding deleting its data directory. There is currently no\n\t\t\t\tway to \"revive\" the object and reaquire its\n\t\t\t\tresources. Similarly, there is no recovery strategy if removal\n\t\t\t\tof any given SAH fails, so such errors are ignored by this\n\t\t\t\tfunction.\n\t\t\t\t\n\t\t\t\tThis function is intended primarily for testing.\n\t\t\t\t\n\t\t\t\tResolves to true if it did its job, false if the\n\t\t\t\tVFS has already been shut down.\n\t\t\t\t\n\t\t\t\t@see pauseVfs()\n\t\t\t\t@see unpauseVfs()\n\t\t\t\t*/\n\t\t\t\tasync removeVfs() {\n\t\t\t\t\tif (!this.#cVfs.pointer || !this.#dhOpaque) return false;\n\t\t\t\t\tcapi.sqlite3_vfs_unregister(this.#cVfs.pointer);\n\t\t\t\t\tthis.#cVfs.dispose();\n\t\t\t\t\tdelete initPromises[this.vfsName];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\t\tawait this.#dhVfsRoot.removeEntry(OPAQUE_DIR_NAME, { recursive: true });\n\t\t\t\t\t\tthis.#dhOpaque = void 0;\n\t\t\t\t\t\tawait this.#dhVfsParent.removeEntry(this.#dhVfsRoot.name, { recursive: true });\n\t\t\t\t\t\tthis.#dhVfsRoot = this.#dhVfsParent = void 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tsqlite3.config.error(this.vfsName, \"removeVfs() failed with no recovery strategy:\", e);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t\"Pauses\" this VFS by unregistering it from SQLite and\n\t\t\t\trelinquishing all open SAHs, leaving the associated files\n\t\t\t\tintact. If this object is already paused, this is a\n\t\t\t\tno-op. Returns this object.\n\t\t\t\t\n\t\t\t\tThis function throws if SQLite has any opened file handles\n\t\t\t\thosted by this VFS, as the alternative would be to invoke\n\t\t\t\tUndefined Behavior by closing file handles out from under the\n\t\t\t\tlibrary. Similarly, automatically closing any database handles\n\t\t\t\topened by this VFS would invoke Undefined Behavior in\n\t\t\t\tdownstream code which is holding those pointers.\n\t\t\t\t\n\t\t\t\tIf this function throws due to open file handles then it has\n\t\t\t\tno side effects. If the OPFS API throws while closing handles\n\t\t\t\tthen the VFS is left in an undefined state.\n\t\t\t\t\n\t\t\t\t@see isPaused()\n\t\t\t\t@see unpauseVfs()\n\t\t\t\t*/\n\t\t\t\tpauseVfs() {\n\t\t\t\t\tif (this.#mapS3FileToOFile_.size > 0) sqlite3.SQLite3Error.toss(capi.SQLITE_MISUSE, \"Cannot pause VFS\", this.vfsName, \"because it has opened files.\");\n\t\t\t\t\tif (this.#mapSAHToName.size > 0) {\n\t\t\t\t\t\tcapi.sqlite3_vfs_unregister(this.vfsName);\n\t\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns true if this pool is currently paused else false.\n\t\t\t\t\n\t\t\t\t@see pauseVfs()\n\t\t\t\t@see unpauseVfs()\n\t\t\t\t*/\n\t\t\t\tisPaused() {\n\t\t\t\t\treturn 0 === this.#mapSAHToName.size;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t\"Unpauses\" this VFS, reacquiring all SAH's and (if successful)\n\t\t\t\tre-registering it with SQLite. This is a no-op if the VFS is\n\t\t\t\tnot currently paused.\n\t\t\t\t\n\t\t\t\tThe returned Promise resolves to this object. See\n\t\t\t\tacquireAccessHandles() for how it behaves if it throws due to\n\t\t\t\tSAH acquisition failure.\n\t\t\t\t\n\t\t\t\t@see isPaused()\n\t\t\t\t@see pauseVfs()\n\t\t\t\t*/\n\t\t\t\tasync unpauseVfs() {\n\t\t\t\t\tif (0 === this.#mapSAHToName.size) return this.acquireAccessHandles(false).then(() => capi.sqlite3_vfs_register(this.#cVfs, 0), this);\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\t//! Documented elsewhere in this file.\n\t\t\t\texportFile(name) {\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(name) || toss(\"File not found:\", name);\n\t\t\t\t\tconst n = sah.getSize() - HEADER_OFFSET_DATA;\n\t\t\t\t\tconst b = new Uint8Array(n > 0 ? n : 0);\n\t\t\t\t\tif (n > 0) {\n\t\t\t\t\t\tconst nRead = sah.read(b, { at: HEADER_OFFSET_DATA });\n\t\t\t\t\t\tif (nRead != n) toss(\"Expected to read \" + n + \" bytes but read \" + nRead + \".\");\n\t\t\t\t\t}\n\t\t\t\t\treturn b;\n\t\t\t\t}\n\t\t\t\t//! Impl for importDb() when its 2nd arg is a function.\n\t\t\t\tasync importDbChunked(name, callback) {\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(name) || this.nextAvailableSAH() || toss(\"No available handles to import to.\");\n\t\t\t\t\tsah.truncate(0);\n\t\t\t\t\tlet nWrote = 0, chunk, checkedHeader = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\twhile (void 0 !== (chunk = await callback())) {\n\t\t\t\t\t\t\tif (chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);\n\t\t\t\t\t\t\tif (!checkedHeader && 0 === nWrote && chunk.byteLength >= 15) {\n\t\t\t\t\t\t\t\tutil.affirmDbHeader(chunk);\n\t\t\t\t\t\t\t\tcheckedHeader = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsah.write(chunk, { at: HEADER_OFFSET_DATA + nWrote });\n\t\t\t\t\t\t\tnWrote += chunk.byteLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nWrote < 512 || 0 !== nWrote % 512) toss(\"Input size\", nWrote, \"is not correct for an SQLite database.\");\n\t\t\t\t\t\tif (!checkedHeader) {\n\t\t\t\t\t\t\tconst header = new Uint8Array(20);\n\t\t\t\t\t\t\tsah.read(header, { at: 0 });\n\t\t\t\t\t\t\tutil.affirmDbHeader(header);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: HEADER_OFFSET_DATA + 18 });\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t\tthis.setAssociatedPath(sah, name, capi.SQLITE_OPEN_MAIN_DB);\n\t\t\t\t\treturn nWrote;\n\t\t\t\t}\n\t\t\t\t//! Documented elsewhere in this file.\n\t\t\t\timportDb(name, bytes) {\n\t\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\t\telse if (bytes instanceof Function) return this.importDbChunked(name, bytes);\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(name) || this.nextAvailableSAH() || toss(\"No available handles to import to.\");\n\t\t\t\t\tconst n = bytes.byteLength;\n\t\t\t\t\tif (n < 512 || n % 512 != 0) toss(\"Byte array size is invalid for an SQLite db.\");\n\t\t\t\t\tconst header = \"SQLite format 3\";\n\t\t\t\t\tfor (let i = 0; i < 15; ++i) if (header.charCodeAt(i) !== bytes[i]) toss(\"Input does not contain an SQLite database header.\");\n\t\t\t\t\tconst nWrote = sah.write(bytes, { at: HEADER_OFFSET_DATA });\n\t\t\t\t\tif (nWrote != n) {\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\ttoss(\"Expected to write \" + n + \" bytes but wrote \" + nWrote + \".\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: HEADER_OFFSET_DATA + 18 });\n\t\t\t\t\t\tthis.setAssociatedPath(sah, name, capi.SQLITE_OPEN_MAIN_DB);\n\t\t\t\t\t}\n\t\t\t\t\treturn nWrote;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tA OpfsSAHPoolUtil instance is exposed to clients in order to\n\t\t\tmanipulate an OpfsSAHPool object without directly exposing that\n\t\t\tobject and allowing for some semantic changes compared to that\n\t\t\tclass.\n\t\t\t\n\t\t\tClass docs are in the client-level docs for\n\t\t\tinstallOpfsSAHPoolVfs().\n\t\t\t*/\n\t\t\tclass OpfsSAHPoolUtil {\n\t\t\t\t#p;\n\t\t\t\tconstructor(sahPool) {\n\t\t\t\t\tthis.#p = sahPool;\n\t\t\t\t\tthis.vfsName = sahPool.vfsName;\n\t\t\t\t}\n\t\t\t\tasync addCapacity(n) {\n\t\t\t\t\treturn this.#p.addCapacity(n);\n\t\t\t\t}\n\t\t\t\tasync reduceCapacity(n) {\n\t\t\t\t\treturn this.#p.reduceCapacity(n);\n\t\t\t\t}\n\t\t\t\tgetCapacity() {\n\t\t\t\t\treturn this.#p.getCapacity(this.#p);\n\t\t\t\t}\n\t\t\t\tgetFileCount() {\n\t\t\t\t\treturn this.#p.getFileCount();\n\t\t\t\t}\n\t\t\t\tgetFileNames() {\n\t\t\t\t\treturn this.#p.getFileNames();\n\t\t\t\t}\n\t\t\t\tasync reserveMinimumCapacity(min) {\n\t\t\t\t\tconst c = this.#p.getCapacity();\n\t\t\t\t\treturn c < min ? this.#p.addCapacity(min - c) : c;\n\t\t\t\t}\n\t\t\t\texportFile(name) {\n\t\t\t\t\treturn this.#p.exportFile(name);\n\t\t\t\t}\n\t\t\t\timportDb(name, bytes) {\n\t\t\t\t\treturn this.#p.importDb(name, bytes);\n\t\t\t\t}\n\t\t\t\tasync wipeFiles() {\n\t\t\t\t\treturn this.#p.reset(true);\n\t\t\t\t}\n\t\t\t\tunlink(filename) {\n\t\t\t\t\treturn this.#p.deletePath(filename);\n\t\t\t\t}\n\t\t\t\tasync removeVfs() {\n\t\t\t\t\treturn this.#p.removeVfs();\n\t\t\t\t}\n\t\t\t\tpauseVfs() {\n\t\t\t\t\tthis.#p.pauseVfs();\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tasync unpauseVfs() {\n\t\t\t\t\treturn this.#p.unpauseVfs().then(() => this);\n\t\t\t\t}\n\t\t\t\tisPaused() {\n\t\t\t\t\treturn this.#p.isPaused();\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tReturns a resolved Promise if the current environment\n\t\t\thas a \"fully-sync\" SAH impl, else a rejected Promise.\n\t\t\t*/\n\t\t\tconst apiVersionCheck = async () => {\n\t\t\t\tconst dh = await navigator.storage.getDirectory();\n\t\t\t\tconst fn = \".opfs-sahpool-sync-check-\" + getRandomName();\n\t\t\t\tconst close = (await (await dh.getFileHandle(fn, { create: true })).createSyncAccessHandle()).close();\n\t\t\t\tawait close;\n\t\t\t\tawait dh.removeEntry(fn);\n\t\t\t\tif (close?.then) toss(\"The local OPFS API is too old for opfs-sahpool:\", \"it has an async FileSystemSyncAccessHandle.close() method.\");\n\t\t\t\treturn true;\n\t\t\t};\n\t\t\t/**\n\t\t\tinstallOpfsSAHPoolVfs() asynchronously initializes the OPFS\n\t\t\tSyncAccessHandle (a.k.a. SAH) Pool VFS. It returns a Promise which\n\t\t\teither resolves to a utility object described below or rejects with\n\t\t\tan Error value.\n\t\t\t\n\t\t\tInitialization of this VFS is not automatic because its\n\t\t\tregistration requires that it lock all resources it\n\t\t\twill potentially use, even if client code does not want\n\t\t\tto use them. That, in turn, can lead to locking errors\n\t\t\twhen, for example, one page in a given origin has loaded\n\t\t\tthis VFS but does not use it, then another page in that\n\t\t\torigin tries to use the VFS. If the VFS were automatically\n\t\t\tregistered, the second page would fail to load the VFS\n\t\t\tdue to OPFS locking errors.\n\t\t\t\n\t\t\tIf this function is called more than once with a given \"name\"\n\t\t\toption (see below), it will return the same Promise. Calls for\n\t\t\tdifferent names will return different Promises which resolve to\n\t\t\tindependent objects and refer to different VFS registrations.\n\t\t\t\n\t\t\tOn success, the resulting Promise resolves to a utility object\n\t\t\twhich can be used to query and manipulate the pool. Its API is\n\t\t\tdescribed at the end of these docs.\n\t\t\t\n\t\t\tThis function accepts an options object to configure certain\n\t\t\tparts but it is only acknowledged for the very first call for\n\t\t\teach distinct name and ignored for all subsequent calls with that\n\t\t\tsame name.\n\t\t\t\n\t\t\tThe options, in alphabetical order:\n\t\t\t\n\t\t\t- `clearOnInit`: (default=false) if truthy, contents and filename\n\t\t\tmapping are removed from each SAH it is acquired during\n\t\t\tinitialization of the VFS, leaving the VFS's storage in a pristine\n\t\t\tstate. Use this only for databases which need not survive a page\n\t\t\treload.\n\t\t\t\n\t\t\t- `initialCapacity`: (default=6) Specifies the default capacity of\n\t\t\tthe VFS. This should not be set unduly high because the VFS has\n\t\t\tto open (and keep open) a file for each entry in the pool. This\n\t\t\tsetting only has an effect when the pool is initially empty. It\n\t\t\tdoes not have any effect if a pool already exists.\n\t\t\t\n\t\t\t- `directory`: (default=\".\"+`name`) Specifies the OPFS directory\n\t\t\tname in which to store metadata for the `\"opfs-sahpool\"`\n\t\t\tsqlite3_vfs. Only one instance of this VFS can be installed per\n\t\t\tJavaScript engine, and any two engines with the same storage\n\t\t\tdirectory name will collide with each other, leading to locking\n\t\t\terrors and the inability to register the VFS in the second and\n\t\t\tsubsequent engine. Using a different directory name for each\n\t\t\tapplication enables different engines in the same HTTP origin to\n\t\t\tco-exist, but their data are invisible to each other. Changing\n\t\t\tthis name will effectively orphan any databases stored under\n\t\t\tprevious names. The default is unspecified but descriptive. This\n\t\t\toption may contain multiple path elements, e.g. \"foo/bar/baz\",\n\t\t\tand they are created automatically. In practice there should be\n\t\t\tno driving need to change this. ACHTUNG: all files in this\n\t\t\tdirectory are assumed to be managed by the VFS. Do not place\n\t\t\tother files in that directory, as they may be deleted or\n\t\t\totherwise modified by the VFS.\n\t\t\t\n\t\t\t- `name`: (default=\"opfs-sahpool\") sets the name to register this\n\t\t\tVFS under. Normally this should not be changed, but it is\n\t\t\tpossible to register this VFS under multiple names so long as\n\t\t\teach has its own separate directory to work from. The storage for\n\t\t\teach is invisible to all others. The name must be a string\n\t\t\tcompatible with `sqlite3_vfs_register()` and friends and suitable\n\t\t\tfor use in URI-style database file names.\n\t\t\t\n\t\t\tAchtung: if a custom `name` is provided, a custom `directory`\n\t\t\tmust also be provided if any other instance is registered with\n\t\t\tthe default directory. If no directory is explicitly provided\n\t\t\tthen a directory name is synthesized from the `name` option.\n\t\t\t\n\t\t\t\n\t\t\t- `forceReinitIfPreviouslyFailed`: (default=`false`) Is a fallback option\n\t\t\tto assist in working around certain flaky environments which may\n\t\t\tmysteriously fail to permit access to OPFS sync access handles on\n\t\t\tan initial attempt but permit it on a second attemp. This option\n\t\t\tshould never be used but is provided for those who choose to\n\t\t\tthrow caution to the wind and trust such environments. If this\n\t\t\toption is truthy _and_ the previous attempt to initialize this\n\t\t\tVFS with the same `name` failed, the VFS will attempt to\n\t\t\tinitialize a second time instead of returning the cached\n\t\t\tfailure. See discussion at:\n\t\t\t<https://github.com/sqlite/sqlite-wasm/issues/79>\n\t\t\t\n\t\t\t\n\t\t\tPeculiarities of this VFS vis a vis other SQLite VFSes:\n\t\t\t\n\t\t\t- Paths given to it _must_ be absolute. Relative paths will not\n\t\t\tbe properly recognized. This is arguably a bug but correcting it\n\t\t\trequires some hoop-jumping in routines which have no business\n\t\t\tdoing such tricks. (2026-01-19 (2.5 years later): the specifics\n\t\t\tare lost to history, but this was a side effect of xOpen()\n\t\t\treceiving an immutable C-string filename, to which no implicit\n\t\t\t\"/\" can be prefixed without causing a discrepancy between what\n\t\t\tthe user provided and what the VFS stores. Its conceivable that\n\t\t\tthat quirk could be glossed over in xFullPathname(), but\n\t\t\tregressions when doing so cannot be ruled out, so there are no\n\t\t\tcurrent plans to change this behavior.)\n\t\t\t\n\t\t\t- It is possible to install multiple instances under different\n\t\t\tnames, each sandboxed from one another inside their own private\n\t\t\tdirectory. This feature exists primarily as a way for disparate\n\t\t\tapplications within a given HTTP origin to use this VFS without\n\t\t\tintroducing locking issues between them.\n\t\t\t\n\t\t\t\n\t\t\tThe API for the utility object passed on by this function's\n\t\t\tPromise, in alphabetical order...\n\t\t\t\n\t\t\t- [async] number addCapacity(n)\n\t\t\t\n\t\t\tAdds `n` entries to the current pool. This change is persistent\n\t\t\tacross sessions so should not be called automatically at each app\n\t\t\tstartup (but see `reserveMinimumCapacity()`). Its returned Promise\n\t\t\tresolves to the new capacity. Because this operation is necessarily\n\t\t\tasynchronous, the C-level VFS API cannot call this on its own as\n\t\t\tneeded.\n\t\t\t\n\t\t\t- byteArray exportFile(name)\n\t\t\t\n\t\t\tSynchronously reads the contents of the given file into a Uint8Array\n\t\t\tand returns it. This will throw if the given name is not currently\n\t\t\tin active use or on I/O error. Note that the given name is _not_\n\t\t\tvisible directly in OPFS (or, if it is, it's not from this VFS).\n\t\t\t\n\t\t\t- number getCapacity()\n\t\t\t\n\t\t\tReturns the number of files currently contained\n\t\t\tin the SAH pool. The default capacity is only large enough for one\n\t\t\tor two databases and their associated temp files.\n\t\t\t\n\t\t\t- number getFileCount()\n\t\t\t\n\t\t\tReturns the number of files from the pool currently allocated to\n\t\t\tslots. This is not the same as the files being \"opened\".\n\t\t\t\n\t\t\t- array getFileNames()\n\t\t\t\n\t\t\tReturns an array of the names of the files currently allocated to\n\t\t\tslots. This list is the same length as getFileCount().\n\t\t\t\n\t\t\t- void importDb(name, bytes)\n\t\t\t\n\t\t\tImports the contents of an SQLite database, provided as a byte\n\t\t\tarray or ArrayBuffer, under the given name, overwriting any\n\t\t\texisting content. Throws if the pool has no available file slots,\n\t\t\ton I/O error, or if the input does not appear to be a\n\t\t\tdatabase. In the latter case, only a cursory examination is made.\n\t\t\tResults are undefined if the given db name refers to an opened\n\t\t\tdb. Note that this routine is _only_ for importing database\n\t\t\tfiles, not arbitrary files, the reason being that this VFS will\n\t\t\tautomatically clean up any non-database files so importing them\n\t\t\tis pointless.\n\t\t\t\n\t\t\tIf passed a function for its second argument, its behavior\n\t\t\tchanges to asynchronous and it imports its data in chunks fed to\n\t\t\tit by the given callback function. It calls the callback (which\n\t\t\tmay be async) repeatedly, expecting either a Uint8Array or\n\t\t\tArrayBuffer (to denote new input) or undefined (to denote\n\t\t\tEOF). For so long as the callback continues to return\n\t\t\tnon-undefined, it will append incoming data to the given\n\t\t\tVFS-hosted database file. The result of the resolved Promise when\n\t\t\tcalled this way is the size of the resulting database.\n\t\t\t\n\t\t\tOn success this routine rewrites the database header bytes in the\n\t\t\toutput file (not the input array) to force disabling of WAL mode.\n\t\t\t\n\t\t\tOn a write error, the handle is removed from the pool and made\n\t\t\tavailable for re-use.\n\t\t\t\n\t\t\t- [async] number reduceCapacity(n)\n\t\t\t\n\t\t\tRemoves up to `n` entries from the pool, with the caveat that it can\n\t\t\tonly remove currently-unused entries. It returns a Promise which\n\t\t\tresolves to the number of entries actually removed.\n\t\t\t\n\t\t\t- [async] boolean removeVfs()\n\t\t\t\n\t\t\tUnregisters the opfs-sahpool VFS and removes its directory from OPFS\n\t\t\t(which means that _all client content_ is removed). After calling\n\t\t\tthis, the VFS may no longer be used and there is no way to re-add it\n\t\t\taside from reloading the current JavaScript context.\n\t\t\t\n\t\t\tResults are undefined if a database is currently in use with this\n\t\t\tVFS.\n\t\t\t\n\t\t\tThe returned Promise resolves to true if it performed the removal\n\t\t\tand false if the VFS was not installed.\n\t\t\t\n\t\t\tIf the VFS has a multi-level directory, e.g. \"/foo/bar/baz\", _only_\n\t\t\tthe bottom-most directory is removed because this VFS cannot know for\n\t\t\tcertain whether the higher-level directories contain data which\n\t\t\tshould be removed.\n\t\t\t\n\t\t\t- [async] number reserveMinimumCapacity(min)\n\t\t\t\n\t\t\tIf the current capacity is less than `min`, the capacity is\n\t\t\tincreased to `min`, else this returns with no side effects. The\n\t\t\tresulting Promise resolves to the new capacity.\n\t\t\t\n\t\t\t- boolean unlink(filename)\n\t\t\t\n\t\t\tIf a virtual file exists with the given name, disassociates it from\n\t\t\tthe pool and returns true, else returns false without side\n\t\t\teffects. Results are undefined if the file is currently in active\n\t\t\tuse.\n\t\t\t\n\t\t\t- string vfsName\n\t\t\t\n\t\t\tThe SQLite VFS name under which this pool's VFS is registered.\n\t\t\t\n\t\t\t- [async] void wipeFiles()\n\t\t\t\n\t\t\tClears all client-defined state of all SAHs and makes all of them\n\t\t\tavailable for re-use by the pool. Results are undefined if any such\n\t\t\thandles are currently in use, e.g. by an sqlite3 db.\n\t\t\t\n\t\t\tAPIs specific to the \"pause\" capability (added in version 3.49):\n\t\t\t\n\t\t\tSummary: \"pausing\" the VFS disassociates it from SQLite and\n\t\t\trelinquishes its SAHs so that they may be opened by another\n\t\t\tinstance of this VFS (running in a separate tab/page or Worker).\n\t\t\t\"Unpausing\" it takes back control, if able.\n\t\t\t\n\t\t\t- pauseVfs()\n\t\t\t\n\t\t\t\"Pauses\" this VFS by unregistering it from SQLite and\n\t\t\trelinquishing all open SAHs, leaving the associated files intact.\n\t\t\tThis enables pages/tabs to coordinate semi-concurrent usage of\n\t\t\tthis VFS. If this object is already paused, this is a\n\t\t\tno-op. Returns this object. Throws if SQLite has any opened file\n\t\t\thandles hosted by this VFS. If this function throws due to open\n\t\t\tfile handles then it has no side effects. If the OPFS API throws\n\t\t\twhile closing handles then the VFS is left in an undefined state.\n\t\t\t\n\t\t\t- isPaused()\n\t\t\t\n\t\t\tReturns true if this VFS is paused, else false.\n\t\t\t\n\t\t\t- [async] unpauseVfs()\n\t\t\t\n\t\t\tRestores the VFS to an active state after having called\n\t\t\tpauseVfs() on it. This is a no-op if the VFS is not paused. The\n\t\t\treturned Promise resolves to this object on success. A rejected\n\t\t\tPromise means there was a problem reacquiring the SAH handles\n\t\t\t(possibly because they're in use by another instance or have\n\t\t\tsince been removed). Generically speaking, there is no recovery\n\t\t\tstrategy for that type of error, but if the problem is simply\n\t\t\tthat the OPFS files are locked, then a later attempt to unpause\n\t\t\tit, made after the concurrent instance releases the SAHs, may\n\t\t\trecover from the situation.\n\t\t\t*/\n\t\t\tsqlite3.installOpfsSAHPoolVfs = async function(options = Object.create(null)) {\n\t\t\t\toptions = Object.assign(Object.create(null), optionDefaults, options || {});\n\t\t\t\tconst vfsName = options.name;\n\t\t\t\tif (options.$testThrowPhase1) throw options.$testThrowPhase1;\n\t\t\t\tif (initPromises[vfsName]) try {\n\t\t\t\t\treturn await initPromises[vfsName];\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (options.forceReinitIfPreviouslyFailed) delete initPromises[vfsName];\n\t\t\t\t\telse throw e;\n\t\t\t\t}\n\t\t\t\tif (!globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle || !globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle || !navigator?.storage?.getDirectory) return initPromises[vfsName] = Promise.reject(/* @__PURE__ */ new Error(\"Missing required OPFS APIs.\"));\n\t\t\t\t/**\n\t\t\t\tMaintenance reminder: the order of ASYNC ops in this function\n\t\t\t\tis significant. We need to have them all chained at the very\n\t\t\t\tend in order to be able to catch a race condition where\n\t\t\t\tinstallOpfsSAHPoolVfs() is called twice in rapid succession,\n\t\t\t\te.g.:\n\t\t\t\t\n\t\t\t\tinstallOpfsSAHPoolVfs().then(console.warn.bind(console));\n\t\t\t\tinstallOpfsSAHPoolVfs().then(console.warn.bind(console));\n\t\t\t\t\n\t\t\t\tIf the timing of the async calls is not \"just right\" then that\n\t\t\t\tsecond call can end up triggering the init a second time and chaos\n\t\t\t\tensues.\n\t\t\t\t*/\n\t\t\t\treturn initPromises[vfsName] = apiVersionCheck().then(async function() {\n\t\t\t\t\tif (options.$testThrowPhase2) throw options.$testThrowPhase2;\n\t\t\t\t\tconst thePool = new OpfsSAHPool(options);\n\t\t\t\t\treturn thePool.isReady.then(async () => {\n\t\t\t\t\t\t/** The poolUtil object will be the result of the\n\t\t\t\t\t\tresolved Promise. */\n\t\t\t\t\t\tconst poolUtil = new OpfsSAHPoolUtil(thePool);\n\t\t\t\t\t\tif (sqlite3.oo1) {\n\t\t\t\t\t\t\tconst oo1 = sqlite3.oo1;\n\t\t\t\t\t\t\tconst theVfs = thePool.getVfs();\n\t\t\t\t\t\t\tconst OpfsSAHPoolDb = function(...args) {\n\t\t\t\t\t\t\t\tconst opt = oo1.DB.dbCtorHelper.normalizeArgs(...args);\n\t\t\t\t\t\t\t\topt.vfs = theVfs.$zName;\n\t\t\t\t\t\t\t\too1.DB.dbCtorHelper.call(this, opt);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tOpfsSAHPoolDb.prototype = Object.create(oo1.DB.prototype);\n\t\t\t\t\t\t\tpoolUtil.OpfsSAHPoolDb = OpfsSAHPoolDb;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthePool.log(\"VFS initialized.\");\n\t\t\t\t\t\treturn poolUtil;\n\t\t\t\t\t}).catch(async (e) => {\n\t\t\t\t\t\tawait thePool.removeVfs().catch(() => {});\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\treturn initPromises[vfsName] = Promise.reject(err);\n\t\t\t\t});\n\t\t\t};\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tif (!sqlite3.opfs || sqlite3.config.disable?.vfs?.[\"opfs-wl\"]) return;\n\t\t\tconst util = sqlite3.util;\n\t\t\tsqlite3.util.toss;\n\t\t\tconst opfsUtil = sqlite3.opfs;\n\t\t\tconst vfsName = \"opfs-wl\";\n\t\t\t/**\n\t\t\tinstallOpfsWlVfs() returns a Promise which, on success, installs an\n\t\t\tsqlite3_vfs named \"opfs-wl\", suitable for use with all sqlite3 APIs\n\t\t\twhich accept a VFS. It is intended to be called via\n\t\t\tsqlite3ApiBootstrap.initializers or an equivalent mechanism.\n\t\t\t\n\t\t\tThis VFS is essentially identical to the \"opfs\" VFS but uses\n\t\t\tWebLocks for its xLock() and xUnlock() implementations.\n\t\t\t\n\t\t\tQuirks specific to this VFS:\n\t\t\t\n\t\t\t- The (officially undocumented) 'opfs-wl-disable' URL\n\t\t\targument will disable OPFS, making this function a no-op.\n\t\t\t\n\t\t\tAside from locking differences in the VFSes, this function\n\t\t\totherwise behaves the same as\n\t\t\tsqlite3-vfs-opfs.c-pp.js:installOpfsVfs().\n\t\t\t*/\n\t\t\tconst installOpfsWlVfs = async function(options) {\n\t\t\t\toptions = opfsUtil.initOptions(vfsName, options);\n\t\t\t\tif (!options) return sqlite3;\n\t\t\t\tsqlite3.capi;\n\t\t\t\tconst opfsVfs = opfsUtil.createVfsState().vfs;\n\t\t\t\topfsVfs.metrics.counters;\n\t\t\t\tconst mTimeStart = opfsVfs.mTimeStart, mTimeEnd = opfsVfs.mTimeEnd, opRun = opfsVfs.opRun, __openFiles = opfsVfs.__openFiles;\n\t\t\t\treturn opfsVfs.bindVfs(util.nu({\n\t\t\t\t\txLock: function(pFile, lockType) {\n\t\t\t\t\t\tmTimeStart(\"xLock\");\n\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\tconst rc = opRun(\"xLock\", pFile, lockType);\n\t\t\t\t\t\tif (!rc) f.lockType = lockType;\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\txUnlock: function(pFile, lockType) {\n\t\t\t\t\t\tmTimeStart(\"xUnlock\");\n\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\tconst rc = opRun(\"xUnlock\", pFile, lockType);\n\t\t\t\t\t\tif (!rc) f.lockType = lockType;\n\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t}\n\t\t\t\t}), function(sqlite3, vfs) {\n\t\t\t\t\tif (sqlite3.oo1) {\n\t\t\t\t\t\tconst OpfsWlDb = function(...args) {\n\t\t\t\t\t\t\tconst opt = sqlite3.oo1.DB.dbCtorHelper.normalizeArgs(...args);\n\t\t\t\t\t\t\topt.vfs = vfs.$zName;\n\t\t\t\t\t\t\tsqlite3.oo1.DB.dbCtorHelper.call(this, opt);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tOpfsWlDb.prototype = Object.create(sqlite3.oo1.DB.prototype);\n\t\t\t\t\t\tsqlite3.oo1.OpfsWlDb = OpfsWlDb;\n\t\t\t\t\t\tOpfsWlDb.importDb = opfsUtil.importDb;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\tglobalThis.sqlite3ApiBootstrap.initializersAsync.push(async (sqlite3) => {\n\t\t\t\treturn installOpfsWlVfs().catch((e) => {\n\t\t\t\t\tsqlite3.config.warn(\"Ignoring inability to install the\", vfsName, \"sqlite3_vfs:\", e);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tconst bootstrapConfig = Object.assign(\n\t\t\t\tObject.create(null),\n\t\t\t\t/** The WASM-environment-dependent configuration for sqlite3ApiBootstrap() */\n\t\t\t\t{\n\t\t\t\t\tmemory: \"undefined\" !== typeof wasmMemory ? wasmMemory : EmscriptenModule[\"wasmMemory\"],\n\t\t\t\t\texports: \"undefined\" !== typeof wasmExports ? wasmExports : Object.prototype.hasOwnProperty.call(EmscriptenModule, \"wasmExports\") ? EmscriptenModule[\"wasmExports\"] : EmscriptenModule[\"asm\"]\n\t\t\t\t},\n\t\t\t\tglobalThis.sqlite3ApiBootstrap.defaultConfig,\n\t\t\t\tglobalThis.sqlite3ApiConfig || {}\n\t\t\t);\n\t\t\tsqlite3InitScriptInfo.debugModule(\"Bootstrapping lib config\", bootstrapConfig);\n\t\t\t/**\n\t\t\tFor purposes of the Emscripten build, call sqlite3ApiBootstrap().\n\t\t\tIdeally clients should be able to inject their own config here,\n\t\t\tbut that's not practical in this particular build constellation\n\t\t\tbecause of the order everything happens in. Clients may either\n\t\t\tdefine globalThis.sqlite3ApiConfig or modify\n\t\t\tglobalThis.sqlite3ApiBootstrap.defaultConfig to tweak the default\n\t\t\tconfiguration used by a no-args call to sqlite3ApiBootstrap(),\n\t\t\tbut must have first loaded their WASM module in order to be able\n\t\t\tto provide the necessary configuration state.\n\t\t\t*/\n\t\t\tconst p = globalThis.sqlite3ApiBootstrap(bootstrapConfig);\n\t\t\tdelete globalThis.sqlite3ApiBootstrap;\n\t\t\treturn p;\n\t\t} catch (e) {\n\t\t\tconsole.error(\"sqlite3ApiBootstrap() error:\", e);\n\t\t\tthrow e;\n\t\t}\n\t};\n\tif (runtimeInitialized) moduleRtn = Module;\n\telse moduleRtn = new Promise((resolve, reject) => {\n\t\treadyPromiseResolve = resolve;\n\t\treadyPromiseReject = reject;\n\t});\n\treturn moduleRtn;\n}\nsqlite3InitModule = (function() {\n\t/**\n\tIn order to hide the sqlite3InitModule()'s resulting\n\tEmscripten module from downstream clients (and simplify our\n\tdocumentation by being able to elide those details), we hide that\n\tfunction and expose a hand-written sqlite3InitModule() to return\n\tthe sqlite3 object (most of the time).\n\t*/\n\tconst originalInit = sqlite3InitModule;\n\tif (!originalInit) throw new Error(\"Expecting sqlite3InitModule to be defined by the Emscripten build.\");\n\t/**\n\tWe need to add some state which our custom Module.locateFile()\n\tcan see, but an Emscripten limitation currently prevents us from\n\tattaching it to the sqlite3InitModule function object:\n\t\n\thttps://github.com/emscripten-core/emscripten/issues/18071\n\t\n\tThe only(?) current workaround is to temporarily stash this state\n\tinto the global scope and delete it when sqlite3InitModule()\n\tis called.\n\t*/\n\tconst sIMS = globalThis.sqlite3InitModuleState = Object.assign(Object.create(null), {\n\t\tmoduleScript: globalThis?.document?.currentScript,\n\t\tisWorker: \"undefined\" !== typeof WorkerGlobalScope,\n\t\tlocation: globalThis.location,\n\t\turlParams: globalThis?.location?.href ? new URL(globalThis.location.href).searchParams : new URLSearchParams(),\n\t\twasmFilename: \"sqlite3.wasm\"\n\t});\n\tsIMS.debugModule = sIMS.urlParams.has(\"sqlite3.debugModule\") ? (...args) => console.warn(\"sqlite3.debugModule:\", ...args) : () => {};\n\tif (sIMS.urlParams.has(\"sqlite3.dir\")) sIMS.sqlite3Dir = sIMS.urlParams.get(\"sqlite3.dir\") + \"/\";\n\telse if (sIMS.moduleScript) {\n\t\tconst li = sIMS.moduleScript.src.split(\"/\");\n\t\tli.pop();\n\t\tsIMS.sqlite3Dir = li.join(\"/\") + \"/\";\n\t}\n\tconst sIM = globalThis.sqlite3InitModule = function ff(...args) {\n\t\tsIMS.emscriptenLocateFile = args[0]?.locateFile;\n\t\tsIMS.emscriptenInstantiateWasm = args[0]?.instantiateWasm;\n\t\treturn originalInit(...args).then((EmscriptenModule) => {\n\t\t\tsIMS.debugModule(\"sqlite3InitModule() sIMS =\", sIMS);\n\t\t\tsIMS.debugModule(\"sqlite3InitModule() EmscriptenModule =\", EmscriptenModule);\n\t\t\tconst s = EmscriptenModule.runSQLite3PostLoadInit(sIMS, EmscriptenModule, !!ff.__isUnderTest);\n\t\t\tsIMS.debugModule(\"sqlite3InitModule() sqlite3 =\", s);\n\t\t\treturn s;\n\t\t}).catch((e) => {\n\t\t\tconsole.error(\"Exception loading sqlite3 module:\", e);\n\t\t\tthrow e;\n\t\t});\n\t};\n\tsIM.ready = originalInit.ready;\n\tif (sIMS.moduleScript) {\n\t\tlet src = sIMS.moduleScript.src.split(\"/\");\n\t\tsrc.pop();\n\t\tsIMS.scriptDir = src.join(\"/\") + \"/\";\n\t}\n\tsIMS.debugModule(\"extern-post-js.c-pp.js sqlite3InitModuleState =\", sIMS);\n\treturn sIM;\n})();\nvar sqlite3_bundler_friendly_default = sqlite3InitModule;\n//#endregion\nexport { sqlite3_bundler_friendly_default as default, sqlite3_worker1_promiser_default as sqlite3Worker1Promiser };\n","import { WebPlugin } from '@capacitor/core';\nimport { sqlite3Worker1Promiser } from '@sqlite.org/sqlite-wasm';\n/**\n * Web implementation using the official SQLite Wasm build with OPFS persistence.\n *\n * Databases are stored in the Origin Private File System when available (requires\n * Cross-Origin Isolation: COOP/COEP). No full-database copy is kept in RAM or\n * IndexedDB — SQLite reads/writes the OPFS file directly from a worker.\n */\nexport class CapgoCapacitorFastSqlWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.databases = new Map();\n this.promiserPromise = null;\n this.nextPort = 9000;\n this.webConfig = {};\n }\n /**\n * Configure web-specific options (no-op on native platforms).\n * Must be called before connect() when overriding the default worker.\n */\n async configureWeb(config) {\n this.webConfig = config;\n this.promiserPromise = null;\n }\n getPromiser() {\n if (!this.promiserPromise) {\n const config = this.webConfig.worker !== undefined ? { worker: this.webConfig.worker } : undefined;\n this.promiserPromise = sqlite3Worker1Promiser.v2(config);\n }\n return this.promiserPromise;\n }\n dbPath(database) {\n return `/capgo-fast-sql/${database}.sqlite3`;\n }\n async connect(options) {\n if (this.databases.has(options.database)) {\n const existing = this.databases.get(options.database);\n return {\n port: existing.port,\n token: existing.token,\n database: options.database,\n };\n }\n const promiser = await this.getPromiser();\n const path = this.dbPath(options.database);\n const useOpfs = this.webConfig.useOpfs !== false;\n let openResult;\n if (useOpfs) {\n try {\n openResult = await promiser('open', {\n filename: `file:${path}?vfs=opfs`,\n });\n }\n catch (opfsError) {\n console.warn('[CapgoCapacitorFastSql] OPFS unavailable; web database will not persist across reloads. ' +\n 'Serve with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp.', opfsError);\n openResult = await promiser('open', { filename: path });\n }\n }\n else {\n openResult = await promiser('open', { filename: path });\n }\n const dbId = openResult.result.dbId;\n const persistent = Boolean(openResult.result.persistent);\n if (!dbId) {\n throw new Error('Failed to open SQLite Wasm database: missing dbId');\n }\n await this.applyPerformanceConfig(promiser, dbId, options);\n const token = this.generateToken();\n const port = this.nextPort++;\n this.databases.set(options.database, { dbId, token, port, persistent });\n return {\n port,\n token,\n database: options.database,\n };\n }\n async disconnect(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n const promiser = await this.getPromiser();\n // OPFS-backed DBs persist automatically; no export/IndexedDB write needed.\n await promiser({ type: 'close', dbId: dbInfo.dbId, args: {} });\n this.databases.delete(options.database);\n }\n async getServerInfo(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n return {\n port: dbInfo.port,\n token: dbInfo.token,\n };\n }\n async execute(options) {\n var _a, _b, _c, _d;\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n try {\n const promiser = await this.getPromiser();\n const rows = [];\n // countChanges / lastInsertRowId are supported by Worker1 at runtime but\n // omitted from the published Worker1ExecArgs typings.\n const result = await promiser({\n type: 'exec',\n dbId: dbInfo.dbId,\n args: {\n sql: options.statement,\n bind: options.params,\n rowMode: 'object',\n countChanges: true,\n lastInsertRowId: true,\n callback: (msg) => {\n if (msg.rowNumber != null && msg.row && typeof msg.row === 'object' && !Array.isArray(msg.row)) {\n rows.push(msg.row);\n }\n },\n },\n });\n const execResult = result.result;\n const rowsAffected = Number((_a = execResult.changeCount) !== null && _a !== void 0 ? _a : 0);\n const rawInsertId = execResult.lastInsertRowId;\n const insertId = rawInsertId !== undefined && rawInsertId !== null ? Number(rawInsertId) : undefined;\n return {\n rows,\n rowsAffected,\n insertId: insertId !== undefined && insertId > 0 ? insertId : undefined,\n };\n }\n catch (error) {\n const message = (_d = (_c = (_b = error === null || error === void 0 ? void 0 : error.result) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : error === null || error === void 0 ? void 0 : error.message) !== null && _d !== void 0 ? _d : String(error);\n throw new Error(`SQL execution failed: ${message}`);\n }\n }\n async beginTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'BEGIN TRANSACTION',\n });\n }\n async commitTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'COMMIT',\n });\n }\n async rollbackTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'ROLLBACK',\n });\n }\n async applyPerformanceConfig(promiser, dbId, options) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA foreign_keys = ON' } });\n if (options.walMode) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA journal_mode = WAL' } });\n }\n if (options.performancePresets) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA synchronous = NORMAL' } });\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA busy_timeout = 5000' } });\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA cache_size = -2000' } });\n }\n }\n generateToken() {\n return Array.from(crypto.getRandomValues(new Uint8Array(32)))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n"],"names":["IsolationLevel","registerPlugin","Capacitor","WebPlugin","sqlite3Worker1Promiser"],"mappings":";;;;IAAA;IACA;IACA;AACWA;IACX,CAAC,UAAU,cAAc,EAAE;IAC3B,IAAI,cAAc,CAAC,iBAAiB,CAAC,GAAG,kBAAkB;IAC1D,IAAI,cAAc,CAAC,eAAe,CAAC,GAAG,gBAAgB;IACtD,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,iBAAiB;IACxD,IAAI,cAAc,CAAC,cAAc,CAAC,GAAG,cAAc;IACnD,CAAC,EAAEA,sBAAc,KAAKA,sBAAc,GAAG,EAAE,CAAC,CAAC;;ACR/B,UAAC,qBAAqB,GAAGC,mBAAc,CAAC,uBAAuB,EAAE;IAC7E,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;IAC5E,CAAC;;ICFD;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,mBAAmB,CAAC;IACjC,IAAI,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;IACvC,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;IAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;IACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI;IACJ;IACA;IACA;IACA,IAAI,eAAe,GAAG;IACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ;IAC5B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE;IACrC,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAChE,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,OAAO,EAAE;IACrB,gBAAgB,cAAc,EAAE,kBAAkB;IAClD,gBAAgB,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,gBAAgB,YAAY,EAAE,IAAI,CAAC,QAAQ;IAC3C,aAAa;IACb,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;IACjC,gBAAgB,SAAS;IACzB,gBAAgB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE;IAClE,aAAa,CAAC;IACd,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC1B,YAAY,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,QAAQ;IACR,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC5C,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;IAC7C,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,YAAY,CAAC,UAAU,EAAE;IACnC,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAC9D,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,OAAO,EAAE;IACrB,gBAAgB,cAAc,EAAE,kBAAkB;IAClD,gBAAgB,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,gBAAgB,YAAY,EAAE,IAAI,CAAC,QAAQ;IAC3C,aAAa;IACb,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;IACjC,gBAAgB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;IACpD,oBAAoB,SAAS,EAAE,EAAE,CAAC,SAAS;IAC3C,oBAAoB,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;IAC5E,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC;IACd,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC1B,YAAY,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,QAAQ;IACR,QAAQ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC7C,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,gBAAgB,CAAC,cAAc,EAAE;IAC3C,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;IAC9D,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;IAC1E,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,OAAO,EAAE;IACrB,gBAAgB,cAAc,EAAE,kBAAkB;IAClD,gBAAgB,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,gBAAgB,YAAY,EAAE,IAAI,CAAC,QAAQ;IAC3C,aAAa;IACb,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;IACjC,gBAAgB,cAAc,EAAE,cAAc,IAAID,sBAAc,CAAC,YAAY;IAC7E,aAAa,CAAC;IACd,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC1B,YAAY,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,QAAQ;IACR,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;IACjC,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,MAAM,GAAG;IACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACjC,YAAY,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IACzD,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;IAC3E,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,OAAO,EAAE;IACrB,gBAAgB,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,gBAAgB,YAAY,EAAE,IAAI,CAAC,QAAQ;IAC3C,aAAa;IACb,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC1B,YAAY,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,QAAQ;IACR,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;IAClC,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,QAAQ,GAAG;IACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACjC,YAAY,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IACzD,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;IAC7E,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,OAAO,EAAE;IACrB,gBAAgB,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,gBAAgB,YAAY,EAAE,IAAI,CAAC,QAAQ;IAC3C,aAAa;IACb,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC1B,YAAY,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,QAAQ;IACR,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;IAClC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE;IAChD,QAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;IACnD,QAAQ,IAAI;IACZ,YAAY,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;IAC/C,YAAY,MAAM,IAAI,CAAC,MAAM,EAAE;IAC/B,YAAY,OAAO,MAAM;IACzB,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,MAAM,IAAI,CAAC,QAAQ,EAAE;IACjC,YAAY,MAAM,KAAK;IACvB,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE;IACnC,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5D,QAAQ,OAAO,MAAM,CAAC,IAAI;IAC1B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE;IACjC,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5D,QAAQ,OAAO;IACf,YAAY,YAAY,EAAE,MAAM,CAAC,YAAY;IAC7C,YAAY,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACrC,SAAS;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,MAAM,EAAE;IAC5B,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;IACrC,YAAY,IAAI,KAAK,YAAY,UAAU,EAAE;IAC7C,gBAAgB,OAAO;IACvB,oBAAoB,KAAK,EAAE,QAAQ;IACnC,oBAAoB,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IACzD,iBAAiB;IACjB,YAAY;IACZ,YAAY,OAAO,KAAK;IACxB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,MAAM,EAAE;IAC9B,QAAQ,OAAO;IACf,YAAY,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;IAC3C,gBAAgB,MAAM,eAAe,GAAG,EAAE;IAC1C,gBAAgB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAChE,oBAAoB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;IACxF,wBAAwB,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC;IACnF,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK;IACpD,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,OAAO,eAAe;IACtC,YAAY,CAAC,CAAC;IACd,YAAY,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC;IAClD,YAAY,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACrC,SAAS;IACT,IAAI;IACJ;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;IAC9B,QAAQ,IAAI,MAAM,GAAG,EAAE;IACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;IACnD,YAAY,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnD,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,MAAM,EAAE;IAC/B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;IACnD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChD,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;;ICnPA;IACA;IACA;IACA;IACO,MAAM,gBAAgB,CAAC;IAC9B,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;IAClC,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;IAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;IAC5B,IAAI;IACJ;IACA;IACA;IACA,IAAI,eAAe,GAAG;IACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ;IAC5B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE;IACrC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAClF,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,YAAY,CAAC,UAAU,EAAE;IACnC,QAAQ,MAAM,OAAO,GAAG,EAAE;IAC1B,QAAQ,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;IACrC,YAAY,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACrE,QAAQ;IACR,QAAQ,OAAO,OAAO;IACtB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,gBAAgB,CAAC,cAAc,EAAE;IAC3C,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;IAC9D,QAAQ;IACR,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;IACvF,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;IACjC,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,MAAM,GAAG;IACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACjC,YAAY,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IACzD,QAAQ;IACR,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxE,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;IAClC,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,QAAQ,GAAG;IACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACjC,YAAY,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IACzD,QAAQ;IACR,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1E,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;IAClC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE;IAChD,QAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;IACnD,QAAQ,IAAI;IACZ,YAAY,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;IAC/C,YAAY,MAAM,IAAI,CAAC,MAAM,EAAE;IAC/B,YAAY,OAAO,MAAM;IACzB,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgB,IAAI;IACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,EAAE;IACzC,gBAAgB;IAChB,gBAAgB,OAAO,aAAa,EAAE;IACtC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,wCAAwC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzI,gBAAgB;IAChB,YAAY;IACZ,YAAY,MAAM,KAAK;IACvB,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE;IACnC,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5D,QAAQ,OAAO,MAAM,CAAC,IAAI;IAC1B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE;IACjC,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5D,QAAQ,OAAO;IACf,YAAY,YAAY,EAAE,MAAM,CAAC,YAAY;IAC7C,YAAY,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACrC,SAAS;IACT,IAAI;IACJ;;ICrHA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,OAAO,CAAC;IACrB;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,aAAa,OAAO,CAAC,OAAO,EAAE;IAClC;IACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/D,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAY,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxD,YAAY,OAAO,QAAQ;IAC3B,QAAQ;IACR;IACA,QAAQ,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC;IACjE;IACA,QAAQ,IAAI,UAAU;IACtB,QAAQ,MAAM,QAAQ,GAAGE,cAAS,CAAC,WAAW,EAAE;IAChD,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,KAAK,EAAE;IAC1D,YAAY,UAAU,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IACtF,QAAQ;IACR,aAAa;IACb,YAAY,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACnF,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC1D,QAAQ,OAAO,UAAU;IACzB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,aAAa,UAAU,CAAC,QAAQ,EAAE;IACtC,QAAQ,IAAI,EAAE;IACd,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;IACzD,QAAQ,IAAI,CAAC,UAAU,EAAE;IACzB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtE,QAAQ;IACR,QAAQ,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;IACpG,YAAY,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjD,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,MAAM,qBAAqB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5D;IACA,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC/C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC;IACjD,QAAQ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,aAAa,CAAC,QAAQ,EAAE;IACnC,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI;IACrD,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,kBAAkB,CAAC,QAAQ,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnD,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,gBAAgB,CAAC,QAAQ,EAAE;IACtC,QAAQ,IAAI,EAAE;IACd,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtE,QAAQ;IACR,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACtI,IAAI;IACJ;IACA;IACA;IACA,IAAI,aAAa,iBAAiB,CAAC,QAAQ,EAAE;IAC7C,QAAQ,IAAI,EAAE;IACd,QAAQ,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;IAC1G,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE;IAC3B,YAAY,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC;IACjE,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC;IACjD,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IACnD,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpD,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC3C,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA;IACA;IACA,IAAI,aAAa,aAAa,GAAG;IACjC,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC7D,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK;IAChD,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9C,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC,CAAC,CAAC;IACX,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,gBAAgB,GAAG;IAC9B,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI;IACJ;IACA,OAAO,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE;IAC/B,OAAO,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE;IACrC,OAAO,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE;IACvC,OAAO,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE;;IC/HtC;IACA;IACA;IACA;IACA;IACO,MAAM,aAAa,CAAC;IAC3B,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE;IACnC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK;IACnC,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;IAC3B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;IACpC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,IAAI;IACJ;IACA;IACA;IACA,IAAI,aAAa,IAAI,CAAC,OAAO,EAAE;IAC/B,QAAQ,IAAI,EAAE;IACd,QAAQ,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IACzD,QAAQ,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;IACrF,QAAQ,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;IACvD,QAAQ,EAAE,CAAC,cAAc,GAAG,IAAI;IAChC,QAAQ,MAAM,EAAE,CAAC,YAAY,EAAE;IAC/B,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,aAAa,cAAc,CAAC,UAAU,EAAE,KAAK,GAAG,SAAS,EAAE;IAC/D,QAAQ,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;IACvD,QAAQ,MAAM,EAAE,CAAC,YAAY,EAAE;IAC/B,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,MAAM,KAAK,GAAG;IAClB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;IACzB,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI;IAC1B,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;IACjC,YAAY,IAAI;IAChB,gBAAgB,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IAC3E,YAAY;IACZ,YAAY,OAAO,EAAE,EAAE;IACvB;IACA,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;IAC1B,QAAQ,MAAM,IAAI,CAAC,YAAY,EAAE;IACjC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAC/C,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oEAAoE,EAAE;IACxG,YAAY,IAAI,CAAC,KAAK;IACtB,YAAY,GAAG;IACf,YAAY,OAAO,CAAC,IAAI;IACxB,YAAY,OAAO,CAAC,KAAK;IACzB,SAAS,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;IACnB,QAAQ,MAAM,IAAI,CAAC,YAAY,EAAE;IACjC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,2DAA2D,EAAE;IAC9G,YAAY,IAAI,CAAC,KAAK;IACtB,YAAY,GAAG;IACf,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAC1B,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3B,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC;IAC1B,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC;IAC3B,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;IAC5C,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;IACnB,QAAQ,MAAM,IAAI,CAAC,YAAY,EAAE;IACjC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,sEAAsE,EAAE;IACzH,YAAY,IAAI,CAAC,KAAK;IACtB,YAAY,GAAG;IACf,SAAS,CAAC;IACV,QAAQ,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC;IAC9B,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,MAAM,CAAC,GAAG,EAAE;IACtB,QAAQ,MAAM,IAAI,CAAC,YAAY,EAAE;IACjC,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,8CAA8C,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpG,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,KAAK,GAAG;IAClB,QAAQ,MAAM,IAAI,CAAC,YAAY,EAAE;IACjC,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oCAAoC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrF,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,MAAM,IAAI,CAAC,YAAY,EAAE;IACjC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjH,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI;IACJ,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uHAAuH,CAAC;IAC1J,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,+DAA+D,CAAC;IAClG,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;IAC/B,IAAI;IACJ,IAAI,WAAW,CAAC,KAAK,EAAE;IACvB,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;IACnD,YAAY,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAChD,QAAQ;IACR,QAAQ,IAAI,KAAK,YAAY,UAAU,EAAE;IACzC,YAAY,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5C,QAAQ;IACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACvC,YAAY,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5C,QAAQ;IACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACvC,YAAY,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5C,QAAQ;IACR,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;IACxC,YAAY,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE;IAC5D,QAAQ;IACR,QAAQ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IAC7D,IAAI;IACJ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;IAC7B,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,MAAM;IACvB,gBAAgB,OAAO,IAAI;IAC3B,YAAY,KAAK,QAAQ;IACzB,gBAAgB,OAAO,KAAK,YAAY,UAAU,GAAG,KAAK,GAAG,IAAI;IACjE,YAAY,KAAK,QAAQ;IACzB,gBAAgB,OAAO,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;IACzD,YAAY,KAAK,QAAQ;IACzB,gBAAgB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC/C,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB,gBAAgB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC/C,oBAAoB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;IAChD,oBAAoB,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;IAC5D,gBAAgB;IAChB,gBAAgB,OAAO,CAAC;IACxB,YAAY,KAAK,SAAS;IAC1B,gBAAgB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC/C,oBAAoB,OAAO,KAAK,KAAK,CAAC;IACtC,gBAAgB;IAChB,gBAAgB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC/C,oBAAoB,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM;IAC1E,gBAAgB;IAChB,gBAAgB,OAAO,OAAO,CAAC,KAAK,CAAC;IACrC,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC/C,oBAAoB,IAAI;IACxB,wBAAwB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAChD,oBAAoB;IACpB,oBAAoB,OAAO,EAAE,EAAE;IAC/B,wBAAwB,OAAO,IAAI;IACnC,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,OAAO,IAAI;IAC3B,YAAY;IACZ,gBAAgB,OAAO,KAAK;IAC5B;IACA,IAAI;IACJ;;ICrLA,MAAM,aAAa,GAAG,SAAS;IAC/B,MAAM,YAAY,GAAG,yBAAyB;IAC9C,MAAM,iBAAiB,GAAG,8BAA8B;IACxD;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,kBAAkB,CAAC;IAChC,IAAI,WAAW,CAAC,UAAU,EAAE,OAAO,GAAG,EAAE,EAAE;IAC1C,QAAQ,IAAI,EAAE;IACd,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK;IACnC,QAAQ,IAAI,CAAC,0BAA0B,GAAG,KAAK;IAC/C,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;IAC3B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;IACpC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,aAAa;IACxF,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;IAC5C,QAAQ,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,kBAAkB;IAChE,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,kBAAkB;IACtD,IAAI;IACJ,IAAI,OAAO,gBAAgB,CAAC,QAAQ,EAAE;IACtC,QAAQ,IAAI,EAAE;IACd,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5H,IAAI;IACJ,IAAI,OAAO,iBAAiB,CAAC,QAAQ,EAAE;IACvC,QAAQ,IAAI,EAAE;IACd,QAAQ,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;IAChG,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;IACtB,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC;IACvD,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC5C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA,IAAI,aAAa,IAAI,CAAC,OAAO,EAAE;IAC/B,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChE,QAAQ,MAAM,4BAA4B,GAAG,QAAQ,IAAI,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChH,QAAQ,MAAM,UAAU,GAAG,4BAA4B,GAAG,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IACnG,QAAQ,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC;IACvE,QAAQ,WAAW,CAAC,cAAc,GAAG,IAAI;IACzC,QAAQ,WAAW,CAAC,0BAA0B,GAAG,CAAC,QAAQ,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvH,QAAQ,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IACzE,QAAQ,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IAC9D,QAAQ,IAAI,WAAW,CAAC,0BAA0B,EAAE;IACpD,YAAY,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IACjF,QAAQ;IACR,QAAQ,IAAI;IACZ,YAAY,MAAM,WAAW,CAAC,IAAI,EAAE;IACpC,YAAY,OAAO,WAAW;IAC9B,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,MAAM,WAAW,CAAC,MAAM,EAAE;IACtC,YAAY,MAAM,KAAK;IACvB,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,aAAa,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,EAAE,EAAE;IAC1D,QAAQ,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC;IACvE,QAAQ,MAAM,WAAW,CAAC,IAAI,EAAE;IAChC,QAAQ,OAAO,WAAW;IAC1B,IAAI;IACJ,IAAI,YAAY,GAAG;IACnB,QAAQ,OAAO,IAAI,CAAC,KAAK;IACzB,IAAI;IACJ,IAAI,eAAe,GAAG;IACtB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;IAChD,IAAI;IACJ,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,IAAI,EAAE,EAAE,EAAE;IAClB,QAAQ,IAAI,CAAC,UAAU,EAAE;IACzB,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3I,QAAQ,MAAM,IAAI,CAAC,YAAY,EAAE;IACjC,QAAQ,MAAM,IAAI,CAAC,oBAAoB,EAAE;IACzC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;IAC/B,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,MAAM,MAAM,GAAG;IACnB,QAAQ,IAAI,EAAE,EAAE,EAAE;IAClB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;IACzB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7I,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;IACjC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;IAC9D,YAAY,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,CAAC;IAC1F,YAAY,MAAM,2BAA2B,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC;IACzF,YAAY,IAAI,uBAAuB;IACvC,gBAAgB,IAAI,CAAC,0BAA0B;IAC/C,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACrD,gBAAgB,CAAC,2BAA2B,EAAE;IAC9C,gBAAgB,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClD,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI;IAC1B,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG;IAClB,QAAQ,MAAM,IAAI,CAAC,MAAM,EAAE;IAC3B,IAAI;IACJ,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE;IACtB,QAAQ,MAAM,IAAI,CAAC,WAAW,EAAE;IAChC,QAAQ,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM;IAC9E,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE;IAC/D,YAAY,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;IAC9E,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,mCAAmC,CAAC,EAAE;IACzH,YAAY,IAAI,CAAC,KAAK;IACtB,YAAY,EAAE;IACd,SAAS,CAAC;IACV,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;IACjC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;IACvD,QAAQ;IACR,QAAQ,MAAM,iBAAiB,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,SAAS,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/H,QAAQ,MAAM,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;IAC9D,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9B,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC;AAC9D,mCAAmC,CAAC,EAAE;IACtC,YAAY,IAAI,CAAC,KAAK;IACtB,YAAY,EAAE;IACd,YAAY,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,QAAQ,GAAG,EAAE;IACpE,YAAY,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;IACnD,YAAY,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;IACzC,YAAY,GAAG;IACf,YAAY,GAAG;IACf,SAAS,CAAC;IACV,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE;IACzB,QAAQ,IAAI,EAAE,EAAE,EAAE;IAClB,QAAQ,MAAM,IAAI,CAAC,WAAW,EAAE;IAChC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,8CAA8C,EAAE,YAAY,CAAC,mCAAmC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7K,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;IAC/B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,QAAQ;IACR,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,QAAQ,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,QAAQ;IACjG,QAAQ,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAClL,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAC3F,QAAQ,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;IACtD,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY;AACxD;AACA,iCAAiC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAClJ,IAAI;IACJ,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE;IACzB,QAAQ,MAAM,IAAI,CAAC,WAAW,EAAE;IAChC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;IAC9C,QAAQ,MAAM,GAAG,GAAG;IACpB,aAAa,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IAClD,aAAa,MAAM,CAAC,MAAM,CAAC,SAAS;IACpC,aAAa,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;IACjC,QAAQ,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;IAC9B,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,2BAA2B,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjH,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,KAAK,CAAC,MAAM,EAAE;IACxB,QAAQ,MAAM,IAAI,CAAC,WAAW,EAAE;IAChC,QAAQ,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM;IACzE,QAAQ,IAAI,SAAS,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE;IACrE,YAAY,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;IACpF,QAAQ;IACR,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,EAAE;IACpD,YAAY,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;IAC1D,QAAQ;IACR,QAAQ,MAAM,eAAe,GAAG,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,cAAc,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC7I,QAAQ,MAAM,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC;IAC5D,QAAQ,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;IAClD,aAAa,GAAG,CAAC,CAAC,GAAG,KAAK;IAC1B,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IACjD,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC;IACjI,QAAQ,CAAC;IACT,aAAa,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,SAAS,IAAI,MAAM,IAAI,CAAC;IACzF,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IACxD,QAAQ,OAAO,QAAQ,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;IAC5E,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,MAAM,IAAI,CAAC,WAAW,EAAE;IAChC,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9F,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnG,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB;IACvD,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;IAC7C,YAAY,MAAM,IAAI,CAAC,sBAAsB,EAAE;IAC/C,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,WAAW,GAAG;IACxB,QAAQ,IAAI,CAAC,UAAU,EAAE;IACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAC/B,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE;IAC7B,QAAQ;IACR,IAAI;IACJ,IAAI,UAAU,GAAG;IACjB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;IACzB,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;IACrD,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,2BAA2B,EAAE,YAAY,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC,CAAC;IACT,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,2BAA2B,EAAE,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpH,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,2BAA2B,EAAE,iBAAiB,CAAC;AAClF;AACA;AACA,OAAO,CAAC,CAAC;IACT,IAAI;IACJ,IAAI,MAAM,oBAAoB,GAAG;IACjC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,EAAE;IAC3H,YAAY,IAAI,CAAC,KAAK;IACtB,SAAS,CAAC;IACV,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,QAAQ,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE;IAC3G,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,yCAAyC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5H,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;IAC7C,YAAY,IAAI,CAAC,YAAY,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnK,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;IAC7C,YAAY,MAAM,IAAI,CAAC,sBAAsB,EAAE;IAC/C,QAAQ;IACR,IAAI;IACJ,IAAI,oBAAoB,CAAC,GAAG,EAAE;IAC9B,QAAQ,IAAI,CAAC,GAAG,EAAE;IAClB,YAAY,OAAO,SAAS;IAC5B,QAAQ;IACR,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa;IACvC,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACvC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACvC,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;IACxC,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS;IAC/D,QAAQ;IACR,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ,IAAI,MAAM,sBAAsB,GAAG;IACnC,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;IAC7C,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,qCAAqC,CAAC,EAAE;IACtH,YAAY,IAAI,CAAC,KAAK;IACtB,YAAY,IAAI,CAAC,YAAY;IAC7B,SAAS,CAAC;IACV,IAAI;IACJ,IAAI,MAAM,wBAAwB,CAAC,SAAS,EAAE;IAC9C,QAAQ,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;IACzC,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;IAC7C,YAAY,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM;IAChD,YAAY,MAAM,IAAI,CAAC,sBAAsB,EAAE;IAC/C,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE;IACpD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC,uCAAuC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACjI,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,aAAa,CAAC,QAAQ,EAAE;IAClC,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;IACpC,YAAY,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;IAClF,QAAQ;IACR,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;IAClF,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC9C,IAAI;IACJ,IAAI,iBAAiB,CAAC,SAAS,EAAE;IACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IACjE,YAAY,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;IACzE,QAAQ;IACR,QAAQ,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;IACvC,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IACtE,gBAAgB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAC1E,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,8CAA8C,EAAE,YAAY,CAAC,yCAAyC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5J,IAAI;IACJ,IAAI,cAAc,CAAC,GAAG,EAAE;IACxB,QAAQ,MAAM,MAAM,GAAG;IACvB,YAAY,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B,YAAY,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrG,YAAY,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;IAC1D,SAAS;IACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC1D,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;IACpC,YAAY,MAAM,CAAC,QAAQ,GAAG,QAAQ;IACtC,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,eAAe,CAAC,SAAS,EAAE;IAC/B,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC;IACvF,QAAQ,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/C,QAAQ,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjH,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,eAAe,CAAC,KAAK,EAAE;IAC3B,QAAQ,IAAI,EAAE,KAAK,YAAY,UAAU,CAAC,EAAE;IAC5C,YAAY,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;IAClE,QAAQ;IACR,QAAQ,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,iBAAiB,KAAK,CAAC,EAAE;IACrE,YAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;IACvE,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;IACnF,QAAQ,MAAM,SAAS,GAAG,EAAE;IAC5B,QAAQ,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE;IAClG,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,QAAQ;IACR,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ,IAAI,cAAc,CAAC,QAAQ,EAAE;IAC7B,QAAQ,OAAO,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI;IACzD,IAAI;IACJ,IAAI,cAAc,CAAC,KAAK,EAAE;IAC1B,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAC7D,YAAY,OAAO,SAAS;IAC5B,QAAQ;IACR,QAAQ,IAAI;IACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC5C,YAAY,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS;IACtG,QAAQ;IACR,QAAQ,OAAO,EAAE,EAAE;IACnB,YAAY,OAAO,SAAS;IAC5B,QAAQ;IACR,IAAI;IACJ,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;IAC3B,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;IACnC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,2CAA2C,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpH,QAAQ;IACR,QAAQ,IAAI,GAAG,GAAG,CAAC;IACnB,QAAQ,IAAI,KAAK,GAAG,CAAC;IACrB,QAAQ,IAAI,KAAK,GAAG,CAAC;IACrB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC3C,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9B,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChC,QAAQ;IACR,QAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;IACxC,YAAY,OAAO,CAAC;IACpB,QAAQ;IACR,QAAQ,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI;IACJ,IAAI,QAAQ,GAAG;IACf,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM;IAC3C,QAAQ,IAAI,QAAQ,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;IAChH,YAAY,OAAO,SAAS,CAAC,UAAU,EAAE;IACzC,QAAQ;IACR,QAAQ,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;IACjF,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IACxD,YAAY,MAAM,MAAM,GAAG,IAAI,KAAK,GAAG,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG;IACrE,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,kBAAkB,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE;IAC7C,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE;;ICxX/C;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;;IAEA;IACA;;IAEA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;;IAEA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,sBAAsB,GAAG,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE;IACnF,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,IAAI,UAAU,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE;IACnE,EAAE,MAAM,CAAC,GAAG,MAAM;IAClB,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC;IACnE,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC;IACpB,CAAC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;IACjF,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACvC,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC;IAC3B,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI;IACnC,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI;IACnC,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1E,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,IAAI,SAAS,GAAG,EAAE;IAC5D,EAAE,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC,CAAC;IACF,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK;IAC3B,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM;IAChE,CAAC,IAAI,UAAU,KAAK,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;IACzE,CAAC,IAAI,IAAI;IACT,CAAC,IAAI,YAAY;IACjB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,EAAE;IACxC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI;IACd,EAAE,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC;IAChC,EAAE,IAAI,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC;IAC3C,EAAE,IAAI,CAAC,UAAU,EAAE;IACnB,GAAG,IAAI,EAAE,IAAI,aAAa,KAAK,EAAE,CAAC,IAAI,IAAI,eAAe,KAAK,EAAE,CAAC,MAAM,EAAE;IACzE,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACpD,IAAI;IACJ,GAAG;IACH,GAAG,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC;IACnC,GAAG,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,EAAE;IACvC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IACxB,IAAI;IACJ,GAAG;IACH,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3D,QAAQ,GAAG,CAAC,oDAAoD,EAAE,EAAE,CAAC;IACrE,GAAG;IACH,EAAE;IACF,EAAE,OAAO,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC;IACjC,EAAE,QAAQ,EAAE,CAAC,IAAI;IACjB,GAAG,KAAK,OAAO;IACf,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,IAAI;IACJ,GAAG,KAAK,MAAM;IACd,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI;IAC7B,IAAI;IACJ,GAAG,KAAK,OAAO;IACf,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,GAAG,MAAM;IACvC,IAAI;IAEJ;IACA,EAAE,IAAI;IACN,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACvB,EAAE;IACF,CAAC,CAAC;IACF,CAAC,OAAO,YAAY,GAAG,WAAW;IAClC,EAAE,IAAI,GAAG;IACT,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE;IACnC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IAC1B,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IAC1B,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI;IAC3B,EAAE,CAAC,MAAM,IAAI,CAAC,iEAAiE,CAAC;IAChF,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI;IACvD,EAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC;IAC/B,EAAE,GAAG,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;IACvC,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC,EAAE,KAAK,CAAC,OAAO,GAAG,GAAG;IACrB,EAAE,IAAI,aAAa;IACnB,EAAE,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;IACvC,GAAG,IAAI,UAAU,KAAK,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;IAChD,IAAI,aAAa,GAAG,GAAG,CAAC,SAAS,GAAG,MAAM;IAC1C,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ;IACnC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa;IACrC,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,KAAK;IACrC,GAAG,CAAC,MAAM,IAAI,QAAQ,KAAK,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,qEAAqE,CAAC;IAChI,EAAE;IACF,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IAChD,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO;IAC1B,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM;IACxB,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK;IACpC,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,yBAAyB,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC;IACzF,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;IACjC,EAAE,CAAC,CAAC;IACJ,EAAE,IAAI,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1E,EAAE,OAAO,CAAC;IACV,CAAC,CAAC;IACF,CAAC;IACD,UAAU,CAAC,sBAAsB,CAAC,aAAa,GAAG;IAClD,CAAC,MAAM,EAAE,WAAW;IACpB,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,qBAAqB,EAAE,kKAAe,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACxF,CAAC,CAAC;IACF,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,IAAI;IACzE,CAAC;IACD;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,sBAAsB,CAAC,EAAE,GAAG,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE;IACtF,CAAC,IAAI,OAAO;IACZ,CAAC,IAAI,UAAU,IAAI,OAAO,MAAM,EAAE;IAClC,EAAE,OAAO,GAAG,MAAM;IAClB,EAAE,MAAM,GAAG,EAAE;IACb,CAAC,CAAC,MAAM,IAAI,UAAU,KAAK,OAAO,MAAM,EAAE,OAAO,EAAE;IACnD,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO;IAC1B,EAAE,OAAO,MAAM,CAAC,OAAO;IACvB,CAAC;IACD,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACzC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,IAAI,EAAE;IACvF,EAAE,IAAI;IACN,GAAG,IAAI,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IACnC,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACzB,EAAE;IACF,CAAC,CAAC,EAAE,CAAC;IACL,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACjD,EAAE,YAAY,CAAC,OAAO,GAAG,OAAO;IAChC,EAAE,YAAY,CAAC,MAAM,GAAG,MAAM;IAC9B,CAAC,CAAC,CAAC;IACH,CAAC,IAAI;IACL,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;IACb,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,CAAC,OAAO,CAAC;IACT,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IAC5C,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC,aAAa,GAAG,UAAU,CAAC,sBAAsB,CAAC,aAAa;IACpG;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,gCAAgC,GAAG,sBAAsB,CAAC,EAAE;IAChE,OAAO,UAAU,CAAC,sBAAsB;IACxC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,eAAe,iBAAiB,CAAC,SAAS,GAAG,EAAE,EAAE;IACjD,CAAC,IAAI,SAAS;IACd,CAAC,IAAI,MAAM,GAAG,SAAS;IACvB,CAAC,IAAI,kBAAkB,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM;IAC7C,CAAC,IAAI,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,iBAAiB;IAC3D,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI;IAC/D,CAAC,IAAI,WAAW,GAAG,gBAAgB;IACnC,CAAC,IAAI,WAAW,GAAG,kKAAe;IAClC,CAAC,IAAI,eAAe,GAAG,EAAE;IACzB,CAAC,SAAS,UAAU,CAAC,IAAI,EAAE;IAC3B,EAAE,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC;IAC9E,EAAE,OAAO,eAAe,GAAG,IAAI;IAC/B,CAAC;IACD,CAAC,IAAI,SAAS,EAAE,UAAU;IAC1B,CAAC,IAAI,kBAAkB,IAAI,qBAAqB,EAAE;IAClD,EAAE,IAAI;IACN,GAAG,eAAe,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI;IACnD,EAAE,CAAC,CAAC,MAAM,CAAC;IACX,EAAE,IAAI,qBAAqB,EAAE,UAAU,GAAG,CAAC,GAAG,KAAK;IACnD,GAAG,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;IACjC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;IAC9B,GAAG,GAAG,CAAC,YAAY,GAAG,aAAa;IACnC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,GAAG,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IACtC,EAAE,CAAC;IACH,EAAE,SAAS,GAAG,OAAO,GAAG,KAAK;IAC7B,GAAG,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;IAClE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,WAAW,EAAE;IACjD,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC;IAC1D,EAAE,CAAC;IACH,CAAC;IACD,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC,CAAC,IAAI,UAAU;IACf,CAAC,IAAI,KAAK,GAAG,KAAK;IAClB,CAAC,IAAI,mBAAmB,EAAE,kBAAkB;IAC5C,CAAC,IAAI,kBAAkB,GAAG,KAAK;IAC/B,CAAC,SAAS,iBAAiB,GAAG;IAC9B,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM;IAC3B,EAAE,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC;IAC1B,EAAE,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IAC5B,EAAE,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IAE5B,EAAE,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IAC5B,EAAE,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;IAG9B,EAAE,MAAM,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;IAC/B,EAAY,IAAI,cAAc,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,CAAC,SAAS,UAAU,GAAG;IACvB,EAAE,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;IAC7D,OAAO;IACP,GAAG,IAAI,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,OAAO;IAC3D;IACA,GAAG,UAAU,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC;IACvC,IAAI,SAAS,EAAE,cAAc,GAAG,KAAK;IACrC,IAAI,SAAS,EAAE;IACf,IAAI,CAAC;IACL,EAAE;IACF,EAAE,iBAAiB,EAAE;IACrB,CAAC;IACD,CAAC,SAAS,MAAM,GAAG;IACnB,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;IACxB,GAAG,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnF,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,EAAE;IACF,EAAE,oBAAoB,CAAC,SAAS,CAAC;IACjC,CAAC;IACD,CAAC,SAAS,WAAW,GAAG;IACxB,EAAE,kBAAkB,GAAG,IAAI;IAC3B,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE;IAEvD,EAAE,WAAW,CAAC,mBAAmB,CAAC,EAAE;IACpC,EAAE,EAAE,CAAC,iBAAiB,GAAG,KAAK;IAC9B,CAAC;IACD,CAAC,SAAS,OAAO,GAAG;IACpB,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;IACzB,GAAG,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtF,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3E,EAAE;IACF,EAAE,oBAAoB,CAAC,UAAU,CAAC;IAClC,CAAC;IACD;IACA;IACA;IACA;IACA,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE;IACtB,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC3B,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3B,EAAE,GAAG,CAAC,IAAI,CAAC;IACX,EAAE,KAAK,GAAG,IAAI;IACd,EAAE,IAAI,IAAI,0CAA0C;IACpD;IACA,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC;IAC5C,EAAE,kBAAkB,GAAG,CAAC,CAAC;IACzB,EAAE,MAAM,CAAC;IACT,CAAC;IACD,CAAC,IAAI,cAAc;IACnB,CAAC,SAAS,cAAc,GAAG;IAC3B,EAAE,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,UAAU,CAAC,cAAc,CAAC;IAC7D,EAAE,OAAO,IAAI,GAAG,CAAC,cAAc,EAAE,kKAAe,CAAC,CAAC,IAAI;IACtD,CAAC;IACD,CAAC,SAAS,aAAa,CAAC,IAAI,EAAE;IAC9B,EAAE,IAAI,IAAI,IAAI,cAAc,IAAI,UAAU,EAAE,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC;IAC7E,EAAE,IAAI,UAAU,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC;IACzC,EAAE,MAAM,iDAAiD;IACzD,CAAC;IACD,CAAC,eAAe,aAAa,CAAC,UAAU,EAAE;IAC1C,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI;IACvB,GAAG,IAAI,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC;IAC7C,GAAG,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC;IAClC,EAAE,CAAC,CAAC,MAAM,CAAC;IACX,EAAE,OAAO,aAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,CAAC,eAAe,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE;IAC5D,EAAE,IAAI;IACN,GAAG,IAAI,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC;IAC/C,GAAG,OAAO,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE;IACnB,GAAG,GAAG,CAAC,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,GAAG,KAAK,CAAC,MAAM,CAAC;IAChB,EAAE;IACF,CAAC;IACD,CAAC,eAAe,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;IAC9D,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;IACnB,GAAG,IAAI,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;IACnE,GAAG,OAAO,MAAM,WAAW,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnE,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE;IACnB,GAAG,GAAG,CAAC,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,GAAG,GAAG,CAAC,2CAA2C,CAAC;IACnD,EAAE;IACF,EAAE,OAAO,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC;IACpD,CAAC;IACD,CAAC,SAAS,cAAc,GAAG;IAC3B,EAAE,OAAO;IACT,GAAG,KAAK,EAAE,WAAW;IACrB,GAAG,wBAAwB,EAAE;IAC7B,GAAG;IACH,CAAC;IACD,CAAC,eAAe,UAAU,GAAG;IAC7B;IACA,EAAE,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC7C,GAAG,WAAW,GAAG,QAAQ,CAAC,OAAO;IACjC,GAAG,iBAAiB,CAAC,WAAW,CAAC;IACjC,GAAG,OAAO,WAAW;IACrB,EAAE;IACF,EAAE,SAAS,0BAA0B,CAAC,MAAM,EAAE;IAC9C,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,EAAE;IACF,EAAE,IAAI,IAAI,GAAG,cAAc,EAAE;IAC7B,EAAE,IAAI,MAAM,CAAC,iBAAiB,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IACzE,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;IAClD,IAAI,OAAO,CAAC,eAAe,CAAC,IAAS,CAAC,CAAC;IACvC,GAAG,CAAC,CAAC;IACL,EAAE,CAAC,CAAC;IACJ,EAAE,cAAc,KAAK,cAAc,EAAE;IACrC,EAAE,OAAO,0BAA0B,CAAC,MAAM,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC7F,CAAC;IACD;IACA,CAAC,IAAI,MAAM;IACX;IACA,CAAC,IAAI,MAAM;IACX;IACA,CAAC,IAAI,MAAM;IACX;IACA,CAAC,IAAI,KAAK;IAOV;IACA,CAAC,IAAI,OAAO;IAGZ;IACA,CAAC,IAAI,MAAM;IACX,CAAC,IAAI,oBAAoB,GAAG,CAAC,SAAS,KAAK;IAC3C,EAAE,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;IACxD,CAAC,CAAC;IACF,CAAC,IAAI,UAAU,GAAG,EAAE;IACpB,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC,IAAI,SAAS,GAAG,EAAE;IACnB,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7C,CAAC,IAAI,UAAU;IACf,CAAC,IAAI,IAAI,GAAG;IACZ,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;IACzC,EAAE,SAAS,EAAE,CAAC,QAAQ,KAAK;IAC3B,GAAG,OAAO,+DAA+D,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjG,EAAE,CAAC;IACH,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK;IAC7C,GAAG,IAAI,EAAE,GAAG,CAAC;IACb,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC/C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACxC,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;IAC5B,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACvB,KAAK,EAAE,EAAE;IACT,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE;IACnB,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACvB,KAAK,EAAE,EAAE;IACT,IAAI;IACJ,GAAG;IACH,GAAG,IAAI,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3D,GAAG,OAAO,KAAK;IACf,EAAE,CAAC;IACH,EAAE,SAAS,EAAE,CAAC,IAAI,KAAK;IACvB,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG;IAC5E,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACxF,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG;IACvC,GAAG,IAAI,IAAI,IAAI,aAAa,EAAE,IAAI,IAAI,GAAG;IACzC,GAAG,OAAO,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI;IACxC,EAAE,CAAC;IACH,EAAE,OAAO,EAAE,CAAC,IAAI,KAAK;IACrB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;IACvE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG;IAChC,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAClC,GAAG,OAAO,IAAI,GAAG,GAAG;IACpB,EAAE,CAAC;IACH,EAAE,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC9D,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;IAC7C,EAAE;IACF,CAAC,IAAI,cAAc,GAAG,MAAM;IAC5B,EAAE,OAAO,CAAC,IAAI,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,cAAc,EAAE,EAAE,IAAI,CAAC;IACjE,CAAC,IAAI,OAAO,GAAG;IACf,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,KAAK;IACxB,GAAG,IAAI,YAAY,GAAG,EAAE,EAAE,gBAAgB,GAAG,KAAK;IAClD,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE;IACpE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;IAC1C,IAAI,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC;IACjG,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;IAC7B,IAAI,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,YAAY;IAC5C,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACvC,GAAG;IACH,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9G,GAAG,OAAO,CAAC,gBAAgB,GAAG,GAAG,GAAG,EAAE,IAAI,YAAY,IAAI,GAAG;IAC7D,EAAE,CAAC;IACH,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK;IAC1B,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE;IACtB,IAAI,IAAI,KAAK,GAAG,CAAC;IACjB,IAAI,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE;IAC/D,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;IAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;IACjD,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE,OAAO,EAAE;IAC9B,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IAC5C,GAAG;IACH,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAC1D,GAAG,IAAI,eAAe,GAAG,MAAM;IAC/B,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;IACrE,IAAI,eAAe,GAAG,CAAC;IACvB,IAAI;IACJ,GAAG;IACH,GAAG,IAAI,WAAW,GAAG,EAAE;IACvB,GAAG,KAAK,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAClF,GAAG,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnE,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/B,EAAE;IACF,EAAE;IACF,CAAC,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE;IACpC,CAAC,IAAI,aAAa,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,KAAK;IACtE,EAAE,IAAI,MAAM,GAAG,GAAG,GAAG,cAAc;IAEnC,EAAE,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,GAAG;IACpD,EAAE,OAAO,GAAG;IACZ,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,CAAC,IAAI,iBAAiB,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,EAAE,cAAc,EAAE,SAAS,KAAK;IAC9E,EAAE,IAAI,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,cAAyB,CAAC;IACzE,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACpI,CAAC,CAAC;IACF,CAAC,IAAI,uBAAuB,GAAG,EAAE;IACjC,CAAC,IAAI,eAAe,GAAG,CAAC,GAAG,KAAK;IAChC,EAAE,IAAI,GAAG,GAAG,CAAC;IACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACvC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5B,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE;IACtB,QAAQ,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC;IAC/B,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;IACtC,IAAI,GAAG,IAAI,CAAC;IACZ,IAAI,EAAE,CAAC;IACP,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IAClB,EAAE;IACF,EAAE,OAAO,GAAG;IACZ,CAAC,CAAC;IACF,CAAC,IAAI,iBAAiB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,KAAK;IACjE,EAAE,IAAI,EAAE,eAAe,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;IACtC,EAAE,IAAI,QAAQ,GAAG,MAAM;IACvB,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,CAAC;IAC3C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACvC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7B,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE;IACjB,IAAI,IAAI,MAAM,IAAI,MAAM,EAAE;IAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IACtB,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;IACzB,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE;IAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE;IACjC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,EAAE;IAC1B,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE;IAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;IAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;IACtC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE;IACjC,GAAG,CAAC,MAAM;IACV,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE;IAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;IAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;IACvC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;IACtC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE;IACjC,IAAI,CAAC,EAAE;IACP,GAAG;IACH,EAAE;IACF,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAClB,EAAE,OAAO,MAAM,GAAG,QAAQ;IAC1B,CAAC,CAAC;IACF;IACA,CAAC,IAAI,kBAAkB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK;IAC5D,EAAE,IAAI,GAAG,GAAyB,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC;IAC9D,EAAE,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;IAC9B,EAAE,IAAI,eAAe,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IAC9E,EAAmB,OAAO,CAAC,MAAM,GAAG,eAAe;IACnD,EAAE,OAAO,OAAO;IAChB,CAAC,CAAC;IACF,CAAC,IAAI,gBAAgB,GAAG,MAAM;IAC9B,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE;IACvC,GAAG,IAAI,MAAM,GAAG,IAAI;IACpB,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;IAClC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,MAAM,IAAI,IAAI;IACvC,GAAG;IACH,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI;IAC3B,GAAG,uBAAuB,GAAG,kBAAkB,CAAC,MAAY,CAAC;IAC7D,EAAE;IACF,EAAE,OAAO,uBAAuB,CAAC,KAAK,EAAE;IACxC,CAAC,CAAC;IACF,CAAC,IAAI,GAAG,GAAG;IACX,EAAE,IAAI,EAAE,EAAE;IACV,EAAE,IAAI,GAAG,CAAC,CAAC;IACX,EAAE,QAAQ,GAAG,CAAC,CAAC;IACf,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;IACrB,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IACnB,IAAI,KAAK,EAAE,EAAE;IACb,IAAI,MAAM,EAAE,EAAE;IACd,IAAI;IACJ,IAAI;IACJ,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC;IACzC,EAAE,CAAC;IACH,EAAE,UAAU,EAAE;IACd,GAAG,IAAI,CAAC,MAAM,EAAE;IAChB,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxC,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG;IACpB,IAAI,MAAM,CAAC,QAAQ,GAAG,KAAK;IAC3B,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,MAAM,EAAE;IACjB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACpC,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,MAAM,EAAE;IACjB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACpC,GAAG,CAAC;IACJ,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5E,IAAI,IAAI,SAAS,GAAG,CAAC;IACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACrC,KAAK,IAAI,MAAM;IACf,KAAK,IAAI;IACT,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;IAClD,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;IACjB,MAAM,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjC,KAAK;IACL,KAAK,IAAI,MAAM,KAAK,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE;IAC/C,KAAK,SAAS,EAAE;IAChB,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM;IAChC,IAAI;IACJ,IAAI,IAAI,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IACjD,IAAI,OAAO,SAAS;IACpB,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5E,IAAI,IAAI;IACR,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAChC,IAAI;IACJ,IAAI,IAAI,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAClE,IAAI,OAAO,CAAC;IACZ,GAAG;IACH,GAAG;IACH,EAAE,eAAe,EAAE;IACnB,GAAG,QAAQ,CAAC,GAAG,EAAE;IACjB,IAAI,OAAO,gBAAgB,EAAE;IAC7B,GAAG,CAAC;IACJ,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;IACtB,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;IACpC,KAAK,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE;IACpB,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7C,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,GAAG,EAAE;IACd,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;IAChC,KAAK,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE;IACpB,IAAI;IACJ,GAAG,CAAC;IACJ,GAAG,YAAY,CAAC,GAAG,EAAE;IACrB,IAAI,OAAO;IACX,KAAK,OAAO,EAAE,KAAK;IACnB,KAAK,OAAO,EAAE,CAAC;IACf,KAAK,OAAO,EAAE,GAAG;IACjB,KAAK,OAAO,EAAE,KAAK;IACnB,KAAK,IAAI,EAAE;IACX,MAAM,CAAC;IACP,MAAM,EAAE;IACR,MAAM,GAAG;IACT,MAAM,EAAE;IACR,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,CAAC;IACP,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM,CAAC;IACP,MAAM;IACN;IACA,KAAK;IACL,GAAG,CAAC;IACJ,GAAG,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE;IAC7C,IAAI,OAAO,CAAC;IACZ,GAAG,CAAC;IACJ,GAAG,gBAAgB,CAAC,GAAG,EAAE;IACzB,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;IACnB,GAAG;IACH,GAAG;IACH,EAAE,gBAAgB,EAAE;IACpB,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;IACtB,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;IACpC,KAAK,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE;IACpB,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7C,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,GAAG,EAAE;IACd,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;IAChC,KAAK,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE;IACpB,IAAI;IACJ,GAAG;IACH;IACA,EAAE;IACF,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAChE,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK;IACxC,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS;IAChD,CAAC,CAAC;IACF,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK;IAC3B,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;IACjC,EAAE,IAAI,GAAG,GAAG,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC;IACrD,EAAE,IAAI,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;IAChC,EAAE,OAAO,GAAG;IACZ,CAAC,CAAC;IACF,CAAC,IAAI,KAAK,GAAG;IACb,EAAE,SAAS,EAAE,IAAI;IACjB,EAAE,KAAK,CAAC,KAAK,EAAE;IACf,GAAG,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IACtC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACxE,GAAG,KAAK,CAAC,SAAS,KAAK;IACvB,IAAI,GAAG,EAAE;IACT,KAAK,IAAI,EAAE;IACX,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;IACrC,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;IACrC,MAAM,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;IACnC,MAAM,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;IACjC,MAAM,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;IACnC,MAAM,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;IACnC,MAAM,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;IACjC,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;IACrC,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC9B,MAAM;IACN,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;IAC9C,KAAK;IACL,IAAI,IAAI,EAAE;IACV,KAAK,IAAI,EAAE;IACX,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;IACrC,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC9B,MAAM;IACN,KAAK,MAAM,EAAE;IACb,MAAM,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;IACrC,MAAM,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI;IACjC,MAAM,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK;IACnC,MAAM,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI;IACjC,MAAM,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;IAC9B;IACA,KAAK;IACL,IAAI,IAAI,EAAE;IACV,KAAK,IAAI,EAAE;IACX,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;IACrC,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;IACrC,MAAM,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC/B,MAAM;IACN,KAAK,MAAM,EAAE;IACb,KAAK;IACL,IAAI,MAAM,EAAE;IACZ,KAAK,IAAI,EAAE;IACX,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;IACrC,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC9B,MAAM;IACN,KAAK,MAAM,EAAE,EAAE,CAAC;IAChB;IACA,IAAI;IACJ,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IACpD,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;IAC5C,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM;IAChD,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;IAC7C,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IACjD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;IACtB,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,iBAAiB,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC;IACjE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;IAC7C,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IACjD,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;IAC/C,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;IACnD,GAAG;IACH,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IACpD,GAAG,IAAI,MAAM,EAAE;IACf,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI;IAChC,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;IAC3D,GAAG;IACH,GAAG,OAAO,IAAI;IACd,EAAE,CAAC;IACH,EAAE,uBAAuB,CAAC,IAAI,EAAE;IAChC,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;IACnD,EAAE,CAAC;IACH,EAAE,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE;IACvC,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;IAC1C,GAAG,IAAI,YAAY,IAAI,WAAW,EAAE;IACpC,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,IAAI,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACrG,GAAG,IAAI,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;IAC7D,GAAG,IAAI,WAAW,GAAG,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC;IACxD,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;IAC9C,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;IACjC,EAAE,CAAC;IACH,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;IACnC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE;IAClC,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ;IAClC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC;IAC1C,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO;IAC3B,EAAE,CAAC;IACH,EAAE,QAAQ,EAAE;IACZ,GAAG,OAAO,CAAC,IAAI,EAAE;IACjB,IAAI,IAAI,IAAI,GAAG,EAAE;IACjB,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;IACnD,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE;IACtB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IACzB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;IAClB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;IAChB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;IAChB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IACzB,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;IAC7C,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS;IAC7D,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;IAC/D,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;IACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;IACvB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;IACrD,IAAI,OAAO,IAAI;IACf,GAAG,CAAC;IACJ,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,MAAM,GAAG,IAAI;IACtB,KAAK,MAAM;IACX,KAAK,OAAO;IACZ,KAAK,OAAO;IACZ,KAAK;IACL,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IACnD,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;IACtE,GAAG,CAAC;IACJ,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;IACxB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;IAClC,KAAK,KAAK,CAAC,iBAAiB,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACpD;IACA,KAAK,KAAK,CAAC,iBAAiB,CAAC,KAAK,GAAG,2BAA2B;IAChE,IAAI;IACJ,IAAI,MAAM,KAAK,CAAC,iBAAiB;IACjC,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IAClC,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IACpD,GAAG,CAAC;IACJ,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;IACvC,IAAI,IAAI,QAAQ;IAChB,IAAI,IAAI;IACR,KAAK,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;IAChD,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjB,IAAI,IAAI,QAAQ,EAAE;IAClB,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9F,KAAK,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC;IAChC,IAAI;IACJ,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACzC,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ;IAC5B,IAAI,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9F,GAAG,CAAC;IACJ,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;IACxB,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChC,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAC5C,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACnF,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChC,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAC5C,GAAG,CAAC;IACJ,GAAG,OAAO,CAAC,IAAI,EAAE;IACjB,IAAI,OAAO;IACX,KAAK,GAAG;IACR,KAAK,IAAI;IACT,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;IACjC,KAAK;IACL,GAAG,CAAC;IACJ,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;IACrC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO;IACvB,IAAI,OAAO,IAAI;IACf,GAAG,CAAC;IACJ,GAAG,QAAQ,CAAC,IAAI,EAAE;IAClB,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,IAAI,OAAO,IAAI,CAAC,IAAI;IACpB,GAAG;IACH,GAAG;IACH,EAAE,UAAU,EAAE;IACd,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;IAClD,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ;IACvC,IAAI,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACnD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,EAAE,MAAM,CAAC;IACjE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IACpE,IAAI,OAAO,IAAI;IACf,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC3D,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IACtD,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;IAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IACxC,IAAI,IAAI,MAAM,EAAE;IAChB,KAAK,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7D,KAAK,IAAI,CAAC,SAAS,GAAG,MAAM;IAC5B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;IACvD,KAAK,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1D,KAAK,IAAI,CAAC,SAAS,GAAG,MAAM;IAC5B,IAAI,CAAC,MAAM;IACX,KAAK,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACrD,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC1E,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjE,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB,GAAG,CAAC;IACJ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAClC,IAAI,IAAI,QAAQ,GAAG,MAAM;IACzB,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ;IACjD,SAAS,IAAI,MAAM,KAAK,CAAC,EAAE;IAC3B,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;IACvE,IAAI;IACJ,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjD,IAAI,OAAO,QAAQ;IACnB,GAAG,CAAC;IACJ,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;IAC/C,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjE,IAAI,IAAI,GAAG;IACX,IAAI,IAAI,SAAS;IACjB,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ;IACvC,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;IAC1D,KAAK,SAAS,GAAG,KAAK;IACtB,KAAK,GAAG,GAAG,QAAQ,CAAC,UAAU;IAC9B,IAAI,CAAC,MAAM;IACX,KAAK,SAAS,GAAG,IAAI;IACrB,KAAK,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1C,KAAK,IAAI,QAAQ,EAAE;IACnB,MAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/I,WAAW,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IACvF,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC;IAC9B,KAAK;IACL,IAAI;IACJ,IAAI,OAAO;IACX,KAAK,GAAG;IACR,KAAK;IACL,KAAK;IACL,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;IACpD,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IACpE,IAAI,OAAO,CAAC;IACZ,GAAG;IACH;IACA,EAAE;IACF,CAAC,IAAI,oBAAoB,GAAG,CAAC,GAAG,KAAK;IACrC,EAAE,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE,OAAO,GAAG;IACxC,EAAE,IAAI,KAAK,GAAG;IACd,GAAG,GAAG,EAAE,CAAC;IACT,GAAG,IAAI,EAAE,CAAC;IACV,GAAG,GAAG,EAAE,GAAG;IACX,GAAG,IAAI,EAAE,GAAG;IACZ,GAAG,GAAG,EAAE,IAAI;IACZ,GAAG,IAAI,EAAE;IACT,GAAG,CAAC,GAAG,CAAC;IACR,EAAE,IAAI,OAAO,KAAK,IAAI,WAAW,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,CAAC;IACpF,EAAE,OAAO,KAAK;IACd,CAAC,CAAC;IACF,CAAC,IAAI,uBAAuB,GAAG,CAAC,IAAI,KAAK;IACzC,EAAE,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,IAAI,GAAG,kBAAkB,CAAC,IAAU,CAAC;IACpE,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;IACjD,EAAE,OAAO,IAAI;IACb,CAAC,CAAC;IACF,CAAC,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK;IACzC,EAAE,IAAI,IAAI,GAAG,CAAC;IACd,EAAE,IAAI,OAAO,EAAE,IAAI,IAAI,GAAG;IAC1B,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAI,GAAG;IAC3B,EAAE,OAAO,IAAI;IACb,CAAC,CAAC;IACF,CAAC,IAAI,SAAS,GAAG,OAAO,GAAG,KAAK;IAChC,EAAE,IAAI,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC;IACxC,EAAE,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC;IACpC,CAAC,CAAC;IACF,CAAC,IAAI,iBAAiB,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAIhE,CAAC,IAAI,eAAe,GAAG,CAAC;IACxB,CAAC,IAAI,qBAAqB,GAAG,IAAI;IACjC,CAAC,IAAI,mBAAmB,GAAG,CAAC,EAAE,KAAK;IACnC,EAAE,eAAe,EAAE;IACnB,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,eAAe,CAAC;IACrD,EAAE,IAAI,eAAe,IAAI,CAAC,EAAE;IAC5B,GAAG,IAAI,qBAAqB,EAAE;IAC9B,IAAI,IAAI,QAAQ,GAAG,qBAAqB;IACxC,IAAI,qBAAqB,GAAG,IAAI;IAChC,IAAI,QAAQ,EAAE;IACd,GAAG;IACH,EAAE;IACF,CAAC,CAAC;IACF,CAAC,IAAI,gBAAgB,GAAG,CAAC,EAAE,KAAK;IAChC,EAAE,eAAe,EAAE;IACnB,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,eAAe,CAAC;IACrD,CAAC,CAAC;IACF,CAAC,IAAI,cAAc,GAAG,EAAE;IACxB,CAAC,IAAI,yBAAyB,GAAG,OAAO,SAAS,EAAE,QAAQ,KAAK;IAChE,EAAE,IAAI,OAAO,OAAO,IAAI,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE;IACnD,EAAE,KAAK,IAAI,MAAM,IAAI,cAAc,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC;IACpH,EAAE,OAAO,SAAS;IAClB,CAAC,CAAC;IACF,CAAC,IAAI,cAAc,GAAG,OAAO,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,KAAK;IACzG,EAAE,IAAI,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM;IAE1E,EAAE,gBAAgB,CAAI,CAAC;IACvB,EAAE,IAAI;IACN,GAAG,IAAI,SAAS,GAAG,GAAG;IACtB,GAAG,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE,SAAS,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC;IAC/D,GAAG,SAAS,GAAG,MAAM,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC;IACnE,GAAG,SAAS,IAAI;IAChB,GAAG,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC7F,EAAE,CAAC,SAAS;IACZ,GAAG,mBAAmB,CAAI,CAAC;IAC3B,EAAE;IACF,CAAC,CAAC;IACF,CAAC,IAAI,sBAAsB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,KAAK;IAC5H,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACrH,CAAC,CAAC;IACF,CAAC,IAAI,EAAE,GAAG;IACV,EAAE,IAAI,EAAE,IAAI;IACZ,EAAE,MAAM,EAAE,EAAE;IACZ,EAAE,OAAO,EAAE,EAAE;IACb,EAAE,OAAO,EAAE,EAAE;IACb,EAAE,SAAS,EAAE,CAAC;IACd,EAAE,SAAS,EAAE,IAAI;IACjB,EAAE,WAAW,EAAE,GAAG;IAClB,EAAE,WAAW,EAAE,KAAK;IACpB,EAAE,iBAAiB,EAAE,IAAI;IACzB,EAAE,WAAW,EAAE,IAAI;IACnB,EAAE,cAAc,EAAE,CAAC;IACnB,EAAE,UAAU,EAAE,MAAM;IACpB,GAAG,IAAI,GAAG,YAAY;IACtB,GAAG,WAAW,CAAC,KAAK,EAAE;IACtB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB,GAAG;IACH,GAAG;IACH,EAAE,QAAQ,EAAE,MAAM;IAClB,GAAG,MAAM,GAAG,EAAE;IACd,GAAG,IAAI,MAAM,GAAG;IAChB,IAAI,OAAO,IAAI,CAAC,IAAI;IACpB,GAAG;IACH,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE;IACnB,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG;IACnB,GAAG;IACH,GAAG,IAAI,MAAM,GAAG;IAChB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC;IACvC,GAAG;IACH,GAAG,IAAI,OAAO,GAAG;IACjB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC;IACvC,GAAG;IACH,GAAG,IAAI,QAAQ,GAAG;IAClB,IAAI,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI;IAC5B,GAAG;IACH,GAAG,IAAI,KAAK,GAAG;IACf,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;IAC5B,GAAG;IACH,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;IAClB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG;IAC3B,GAAG;IACH,GAAG,IAAI,QAAQ,GAAG;IAClB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,GAAG;IACH,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE;IACrB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG;IAC9B,GAAG;IACH,GAAG;IACH,EAAE,MAAM,EAAE,MAAM;IAChB,GAAG,QAAQ,GAAG,EAAE;IAChB,GAAG,UAAU,GAAG,EAAE;IAClB,GAAG,QAAQ,GAAG,GAAG;IACjB,GAAG,SAAS,GAAG,GAAG;IAClB,GAAG,OAAO,GAAG,IAAI;IACjB,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IACzC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;IACxB,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;IAC7B,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;IAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IACrD,GAAG;IACH,GAAG,IAAI,IAAI,GAAG;IACd,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,QAAQ;IACxD,GAAG;IACH,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;IACjB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;IAClE,GAAG;IACH,GAAG,IAAI,KAAK,GAAG;IACf,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS;IAC1D,GAAG;IACH,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;IAClB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;IACpE,GAAG;IACH,GAAG,IAAI,QAAQ,GAAG;IAClB,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,GAAG;IACH,GAAG,IAAI,QAAQ,GAAG;IAClB,IAAI,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,GAAG;IACH,GAAG;IACH,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;IAC9B,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI;IAC7B,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;IACtD,GAAG,QAAQ,EAAE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE;IACzD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,IAAI;IACzB,IAAI,IAAI,YAAY,GAAG,GAAG;IAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC3C,KAAK,IAAI,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;IACxC,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;IAChC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAC3B,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;IAC/C,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9B,OAAO,IAAI,GAAG,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/D,OAAO,MAAM,EAAE;IACf,OAAO,SAAS,QAAQ;IACxB,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;IACrC,MAAM;IACN,KAAK;IACL,KAAK,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,IAAI;IACT,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;IACjB,MAAM,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;IACrF,MAAM,MAAM,CAAC;IACb,KAAK;IACL,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI;IACnG,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;IAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjE,MAAM,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;IACnD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,IAAI;IAC3E,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACtD,MAAM,SAAS,QAAQ;IACvB,KAAK;IACL,IAAI;IACJ,IAAI,OAAO;IACX,KAAK,IAAI,EAAE,YAAY;IACvB,KAAK,IAAI,EAAE;IACX,KAAK;IACL,GAAG;IACH,GAAG,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9B,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,IAAI,EAAE;IAChB,GAAG,IAAI,IAAI;IACX,GAAG,OAAO,IAAI,EAAE;IAChB,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACzB,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;IACtC,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;IAC5B,KAAK,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI;IAC/E,IAAI;IACJ,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI;IACpD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;IACtB,GAAG;IACH,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;IAC3B,GAAG,IAAI,IAAI,GAAG,CAAC;IACf,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3F,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM;IACvD,EAAE,CAAC;IACH,EAAE,WAAW,CAAC,IAAI,EAAE;IACpB,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;IACpD,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;IACtC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI;IAC5B,EAAE,CAAC;IACH,EAAE,cAAc,CAAC,IAAI,EAAE;IACvB,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;IACpD,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;IACvE,QAAQ;IACR,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;IACpC,IAAI,OAAO,OAAO,EAAE;IACpB,KAAK,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE;IACrC,MAAM,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;IACxC,MAAM;IACN,KAAK;IACL,KAAK,OAAO,GAAG,OAAO,CAAC,SAAS;IAChC,IAAI;IACJ,GAAG;IACH,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;IAC3B,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;IACrC,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;IAC1C,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;IACpE,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI;IAC5B,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,IAAI;IACtE,GAAG;IACH,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;IACjC,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IACvC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IACrD,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;IACvB,GAAG,OAAO,IAAI;IACd,EAAE,CAAC;IACH,EAAE,WAAW,CAAC,IAAI,EAAE;IACpB,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;IAC1B,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE;IACf,GAAG,OAAO,IAAI,KAAK,IAAI,CAAC,MAAM;IAC9B,EAAE,CAAC;IACH,EAAE,YAAY,CAAC,IAAI,EAAE;IACrB,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO;IACxB,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE;IACf,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK;IAClC,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE;IACd,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK;IAClC,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE;IACf,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK;IAClC,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,IAAI,EAAE;IACjB,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI;IACjC,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,IAAI,EAAE;IACjB,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK;IAClC,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE;IACf,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI;IACjC,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,IAAI,EAAE;IACjB,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK;IAClC,EAAE,CAAC;IACH,EAAE,uBAAuB,CAAC,IAAI,EAAE;IAChC,GAAG,IAAI,KAAK,GAAG;IACf,IAAI,GAAG;IACP,IAAI,GAAG;IACP,IAAI;IACJ,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACd,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG;IAC/B,GAAG,OAAO,KAAK;IACf,EAAE,CAAC;IACH,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE;IAC/B,GAAG,IAAI,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACrC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC;IAC1D,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC;IAC1D,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC;IACzD,GAAG,OAAO,CAAC;IACX,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,GAAG,EAAE;IACjB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;IACrC,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC;IAC7C,GAAG,IAAI,OAAO,EAAE,OAAO,OAAO;IAC9B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACrC,GAAG,OAAO,CAAC;IACX,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;IACvB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;IACrC,GAAG,IAAI;IACP,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;IAC5B,IAAI,OAAO,EAAE;IACb,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChB,GAAG,OAAO,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;IACvC,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9B,GAAG,IAAI,IAAI;IACX,GAAG,IAAI;IACP,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;IACnC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IACf,IAAI,OAAO,CAAC,CAAC,KAAK;IAClB,GAAG;IACH,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;IAC9C,GAAG,IAAI,OAAO,EAAE,OAAO,OAAO;IAC9B,GAAG,IAAI,KAAK,EAAE;IACd,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;IACvC,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE;IACnE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;IAC5C,GAAG,OAAO,CAAC;IACX,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;IACvB,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;IACvB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;IACtC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;IAC/C,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC5B,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,OAAO,EAAE;IAC9C,GAAG;IACH,GAAG,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;IACxC,EAAE,CAAC;IACH,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE;IACzB,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;IACxC,GAAG,OAAO,EAAE;IACZ,EAAE,CAAC;IACH,EAAE,YAAY,EAAE,IAAI;IACpB,EAAE,MAAM,GAAG;IACX,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IAC/E,GAAG,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9B,EAAE,CAAC;IACH,EAAE,gBAAgB,CAAC,EAAE,EAAE;IACvB,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;IAChC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1C,GAAG,OAAO,MAAM;IAChB,EAAE,CAAC;IACH,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;IAChC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;IACpD,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;IACjC,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE;IACjB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM;IAC1B,GAAG,OAAO,MAAM;IAChB,EAAE,CAAC;IACH,EAAE,WAAW,CAAC,EAAE,EAAE;IAClB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI;IACxB,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE;IACjC,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;IAC/C,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,MAAM,CAAC;IACnC,GAAG,OAAO,MAAM;IAChB,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,GAAG,IAAI,OAAO,GAAG,MAAM,EAAE,UAAU,CAAC,OAAO;IAC3C,GAAG,IAAI,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IACpC,GAAG,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO;IACpC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAChC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;IACrB,EAAE,CAAC;IACH,EAAE,iBAAiB,EAAE;IACrB,GAAG,IAAI,CAAC,MAAM,EAAE;IAChB,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU;IACjE,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;IACpC,GAAG,CAAC;IACJ,GAAG,MAAM,GAAG;IACZ,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/B,GAAG;IACH,GAAG;IACH,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1B,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG;IAC3B,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;IACnC,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;IAC3B,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC;IACH,EAAE,SAAS,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACrC,EAAE,SAAS,CAAC,KAAK,EAAE;IACnB,GAAG,IAAI,MAAM,GAAG,EAAE;IAClB,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;IACtB,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE;IACxB,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE;IACvB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,GAAG;IACH,GAAG,OAAO,MAAM;IAChB,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;IAC7B,GAAG,IAAI,OAAO,QAAQ,IAAI,UAAU,EAAE;IACtC,IAAI,QAAQ,GAAG,QAAQ;IACvB,IAAI,QAAQ,GAAG,KAAK;IACpB,GAAG;IACH,GAAG,EAAE,CAAC,cAAc,EAAE;IACtB,GAAG,IAAI,EAAE,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,uEAAuE,CAAC,CAAC;IACzI,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3C,GAAG,IAAI,SAAS,GAAG,CAAC;IACpB,GAAG,SAAS,UAAU,CAAC,OAAO,EAAE;IAChC,IAAI,EAAE,CAAC,cAAc,EAAE;IACvB,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,GAAG;IACH,GAAG,SAAS,IAAI,CAAC,OAAO,EAAE;IAC1B,IAAI,IAAI,OAAO,EAAE;IACjB,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IACxB,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI;IACzB,MAAM,OAAO,UAAU,CAAC,OAAO,CAAC;IAChC,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;IACtD,GAAG;IACH,GAAG,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;IAC5F,QAAQ,IAAI,CAAC,IAAI,CAAC;IAClB,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;IAChC,GAAG,IAAI,IAAI,GAAG,UAAU,KAAK,GAAG;IAChC,GAAG,IAAI,MAAM,GAAG,CAAC,UAAU;IAC3B,GAAG,IAAI,IAAI;IACX,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACnD,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;IAC9B,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACnE,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI;IAC5B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;IACtB,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzD,GAAG;IACH,GAAG,IAAI,KAAK,GAAG;IACf,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,UAAU;IACd,IAAI,MAAM,EAAE;IACZ,IAAI;IACJ,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACpC,GAAG,SAAS,CAAC,KAAK,GAAG,KAAK;IAC1B,GAAG,KAAK,CAAC,IAAI,GAAG,SAAS;IACzB,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS;IAChC,QAAQ,IAAI,IAAI,EAAE;IAClB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK;IACxB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACjD,GAAG;IACH,GAAG,OAAO,SAAS;IACnB,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,UAAU,EAAE;IACtB,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAClE,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjE,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;IACzB,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO;IAC3B,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IACnC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,OAAO,EAAE;IAC7E,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,SAAS;IAChC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;IAC/D,IAAI,OAAO,GAAG,IAAI;IAClB,GAAG;IACH,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;IACtB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;IACvB,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;IAC9C,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IACzB,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IAC1D,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjE,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;IAC3C,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IACxD,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE;IACf,GAAG,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACnE,EAAE,CAAC;IACH,EAAE,YAAY,CAAC,MAAM,EAAE;IACvB,GAAG,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;IACpC,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,IAAI,EAAE;IACnB,GAAG,IAAI,GAAG,GAAG;IACb,IAAI,KAAK,EAAE,IAAI;IACf,IAAI,MAAM,EAAE,IAAI;IAChB,IAAI,MAAM,EAAE,GAAG;IACf,IAAI,KAAK,EAAE,GAAG;IACd,IAAI,MAAM,EAAE,GAAG;IACf,IAAI,KAAK,EAAE,EAAE,CAAC,SAAS;IACvB,IAAI,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC;IAC3B,IAAI,IAAI,EAAE,EAAE;IACZ,IAAI,KAAK,EAAE,CAAC;IACZ,IAAI,OAAO,EAAE;IACb,IAAI;IACJ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3F,GAAG,OAAO,GAAG;IACb,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE;IAC3B,GAAG,IAAI,IAAI,IAAI;IACf,GAAG,IAAI,IAAI,KAAK;IAChB,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE;IAC1B,GAAG,IAAI,IAAI,IAAI;IACf,GAAG,IAAI,IAAI,KAAK;IAChB,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;IACxB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7B,GAAG,IAAI,CAAC,GAAG,EAAE;IACb,GAAG,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;IACzB,IAAI,IAAI,CAAC,GAAG,EAAE;IACd,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG;IACvC,IAAI,CAAC,IAAI,GAAG;IACZ,IAAI,IAAI;IACR,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;IACtB,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC;IAC/B,IAAI;IACJ,GAAG;IACH,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IACzB,GAAG,IAAI,OAAO,GAAG,IAAI,WAAW,EAAE;IAClC,IAAI,GAAG,GAAG,IAAI;IACd,IAAI,IAAI,GAAG,GAAG;IACd,GAAG;IACH,GAAG,IAAI,IAAI,IAAI;IACf,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IACnC,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE;IAC5B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC7D,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IAC7D,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3C,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACvC,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9C,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5D,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IAC3D,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;IAC7B,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3C,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3C,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO;IACzF,GAAG,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrD,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI;IACxB,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACxD,GAAG,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACnE,GAAG,IAAI,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;IAClD,GAAG,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IACzD,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9D,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IACrD,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9D,GAAG,IAAI,QAAQ;IACf,GAAG,IAAI;IACP,IAAI,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC/C,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChB,GAAG,IAAI,QAAQ,KAAK,QAAQ,EAAE;IAC9B,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,OAAO,GAAG,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;IAChG,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5D,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACtG,GAAG,IAAI,OAAO,KAAK,OAAO,EAAE;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC;IAC9C,IAAI,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IACjD,GAAG;IACH,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC;IAC9B,GAAG,IAAI;IACP,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IACxD,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO;IAC7B,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IACf,IAAI,MAAM,CAAC;IACX,GAAG,CAAC,SAAS;IACb,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC5B,GAAG;IACH,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE;IACd,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IAC1D,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IACzC,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;IACjD,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzD,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;IACtC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;IACvB,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,IAAI,EAAE;IAChB,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IACxD,GAAG,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;IAC3D,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE;IACf,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IAC1D,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3C,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IACzC,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;IAClD,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3D,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzD,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;IACvC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;IACvB,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,IAAI,EAAE;IACjB,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI;IACtC,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3D,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,EAAE,CAAC;IACH,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE;IACzB,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI;IAC/D,GAAG,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;IAC3D,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,EAAE,EAAE;IACZ,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACvC,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;IACzB,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO;IAC1C,GAAG,IAAI,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IACpC,GAAG,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO;IACpC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAChC,GAAG,OAAO,OAAO,CAAC,GAAG,CAAC;IACtB,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE;IACd,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;IAC7B,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;IAC1C,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;IAC9B,IAAI,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK;IACzC,IAAI,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;IACrB,IAAI;IACJ,IAAI,CAAC;IACL,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;IAChC,GAAG,IAAI,IAAI;IACX,GAAG,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI;IACxF,QAAQ,IAAI,GAAG,IAAI;IACnB,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;IAC3C,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;IACrB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC7B,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE;IACnB,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACvC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;IAC/C,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;IACpC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;IAC9B,IAAI,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;IACzB,IAAI;IACJ,IAAI,CAAC;IACL,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE;IACpC,GAAG,IAAI,IAAI;IACX,GAAG,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI;IACxF,QAAQ,IAAI,GAAG,IAAI;IACnB,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;IACrC,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;IACzB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;IACjC,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;IACvB,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACvC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IACzC,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;IAChC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACvD,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzD,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;IAC9C,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;IAC9B,IAAI,IAAI,EAAE,GAAG;IACb,IAAI,SAAS,EAAE,IAAI,CAAC,GAAG;IACvB,IAAI,CAAC;IACL,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IACtB,GAAG,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3C,GAAG,IAAI,IAAI;IACX,GAAG,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IACjF,QAAQ,IAAI,GAAG,IAAI;IACnB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IACjC,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE;IACrB,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACvC,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC7E,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;IAC1C,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;IAC5B,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IACxD,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACrD,IAAI,KAAK;IACT,IAAI;IACJ,IAAI,CAAC;IACL,EAAE,CAAC;IACH,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE;IAChC,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/C,GAAG,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC;IACtC,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;IAC7C,QAAQ,IAAI,GAAG,CAAC;IAChB,GAAG,IAAI,IAAI;IACX,GAAG,IAAI,SAAS;IAChB,GAAG,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,IAAI,GAAG,IAAI;IAC3C,QAAQ;IACR,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAClC,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE;IACrC,KAAK,MAAM,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,KAAK,UAAU,EAAE;IACjB,KAAK,CAAC;IACN,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;IACtB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;IACtB,GAAG;IACH,GAAG,IAAI,OAAO,GAAG,KAAK;IACtB,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,EAAE;IAC7B,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAChD,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACpD,QAAQ;IACR,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;IACxC,IAAI,OAAO,GAAG,IAAI;IAClB,GAAG;IACH,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI;IAC5C,GAAG,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzE,GAAG,IAAI,CAAC,OAAO,EAAE;IACjB,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;IACzC,IAAI,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IACjD,GAAG;IACH,GAAG,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,GAAG,KAAK,IAAI,OAAO;IACnB,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC;IAChC,IAAI,IAAI;IACR,IAAI,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,KAAK;IACT,IAAI,QAAQ,EAAE,IAAI;IAClB,IAAI,QAAQ,EAAE,CAAC;IACf,IAAI,UAAU,EAAE,IAAI,CAAC,UAAU;IAC/B,IAAI,QAAQ,EAAE,EAAE;IAChB,IAAI,KAAK,EAAE;IACX,IAAI,CAAC;IACL,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7D,GAAG,IAAI,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC;IAC1C,GAAG,OAAO,MAAM;IAChB,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,MAAM,EAAE;IAChB,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,IAAI;IAC9C,GAAG,IAAI;IACP,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IAChE,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IACf,IAAI,MAAM,CAAC;IACX,GAAG,CAAC,SAAS;IACb,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,GAAG;IACH,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IACnB,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,MAAM,EAAE;IACnB,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,IAAI;IAC5B,EAAE,CAAC;IACH,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IACjC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjF,GAAG,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC7E,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACrE,GAAG,MAAM,CAAC,QAAQ,GAAG,EAAE;IACvB,GAAG,OAAO,MAAM,CAAC,QAAQ;IACzB,EAAE,CAAC;IACH,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;IACjD,GAAG,IAAI,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9D,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9D,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3D,GAAG,IAAI,OAAO,GAAG,OAAO,QAAQ,IAAI,WAAW;IAC/C,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAC3C,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzD,GAAG,IAAI,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IACnF,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;IAC7C,GAAG,OAAO,SAAS;IACnB,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC1D,GAAG,IAAI,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9D,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9D,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5D,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,GAAG,IAAI,OAAO,GAAG,OAAO,QAAQ,IAAI,WAAW;IAC/C,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAC3C,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzD,GAAG,IAAI,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC/F,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,YAAY;IAChD,GAAG,OAAO,YAAY;IACtB,EAAE,CAAC;IACH,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9C,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1G,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3D,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3C,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;IACvE,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;IACnD,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;IACzC,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IAC5E,EAAE,CAAC;IACH,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;IAC1B,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5D,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACnD,EAAE,CAAC;IACH,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;IAC5B,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;IAC/B,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ;IAC5C,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,KAAK,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChH,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IACzC,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;IAClC,GAAG,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IACnC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC;IAC7D,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACnB,GAAG,OAAO,GAAG;IACb,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;IACnC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG;IACjC,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;IACpD,GAAG,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC;IACvC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAClE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACnB,EAAE,CAAC;IACH,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,WAAW;IAC3B,EAAE,KAAK,CAAC,IAAI,EAAE;IACd,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrD,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACxD,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/D,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;IACrD,GAAG,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,GAAG,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI;IAC/B,EAAE,CAAC;IACH,EAAE,wBAAwB,GAAG;IAC7B,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACnB,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IACpB,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAC7B,EAAE,CAAC;IACH,EAAE,oBAAoB,GAAG;IACzB,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACnB,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IACvC,IAAI,IAAI,EAAE,MAAM,CAAC;IACjB,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM;IAC1D,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,CAAC;IACL,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC;IACtD,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC;IACvD,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,GAAG,IAAI,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,CAAC;IAC1D,GAAG,IAAI,UAAU,GAAG,MAAM;IAC1B,IAAI,IAAI,UAAU,KAAK,CAAC,EAAE;IAC1B,KAAK,UAAU,CAAC,YAAY,CAAC;IAC7B,KAAK,UAAU,GAAG,YAAY,CAAC,UAAU;IACzC,IAAI;IACJ,IAAI,OAAO,YAAY,CAAC,EAAE,UAAU,CAAC;IACrC,GAAG,CAAC;IACJ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;IAChD,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;IACjD,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;IAC3B,EAAE,CAAC;IACH,EAAE,wBAAwB,GAAG;IAC7B,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IACpB,GAAG,IAAI,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;IACzC,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;IAC5B,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG;IACtB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;IACxD,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;IACzD,IAAI,IAAI,CAAC,QAAQ,GAAG;IACpB,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;IAC1B,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI;IACpB,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG;IAChB,OAAO,MAAM,EAAE,IAAI;IACnB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;IACpC,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE;IAChD,OAAO,EAAE,EAAE,EAAE,GAAG;IAChB,OAAO;IACP,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG;IACtB,MAAM,OAAO,GAAG;IAChB,KAAK,CAAC;IACN,KAAK,OAAO,GAAG;IACf,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjG,KAAK;IACL,KAAK;IACL,IAAI,OAAO,IAAI;IACf,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC;IAC5B,EAAE,CAAC;IACH,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IAC9C,GAAG,IAAI,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;IACrD,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;IAC5C,GAAG,IAAI,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;IAC9D,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC;IAC7C,GAAG,IAAI,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;IAC5D,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC;IAC9C,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5B,EAAE,CAAC;IACH,EAAE,UAAU,GAAG;IACf,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC;IACjC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC;IAC3B,GAAG,EAAE,CAAC,wBAAwB,EAAE;IAChC,GAAG,EAAE,CAAC,oBAAoB,EAAE;IAC5B,GAAG,EAAE,CAAC,wBAAwB,EAAE;IAChC,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IACtC,EAAE,CAAC;IACH,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IAC7B,GAAG,EAAE,CAAC,WAAW,GAAG,IAAI;IACxB,GAAG,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC;IAC5B,GAAG,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC;IAC9B,GAAG,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC;IAC7B,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IACjD,EAAE,CAAC;IACH,EAAE,IAAI,GAAG;IACT,GAAG,EAAE,CAAC,WAAW,GAAG,KAAK;IACzB,GAAG,KAAK,IAAI,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC9D,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,EAAE;IACxC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACtD,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI;IAC/B,GAAG,OAAO,GAAG,CAAC,MAAM;IACpB,EAAE,CAAC;IACH,EAAE,WAAW,CAAC,IAAI,EAAE,mBAAmB,EAAE;IACzC,GAAG,IAAI;IACP,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,mBAAmB,EAAE,CAAC;IACtE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;IACtB,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChB,GAAG,IAAI,GAAG,GAAG;IACb,IAAI,MAAM,EAAE,KAAK;IACjB,IAAI,MAAM,EAAE,KAAK;IACjB,IAAI,KAAK,EAAE,CAAC;IACZ,IAAI,IAAI,EAAE,IAAI;IACd,IAAI,IAAI,EAAE,IAAI;IACd,IAAI,MAAM,EAAE,IAAI;IAChB,IAAI,YAAY,EAAE,KAAK;IACvB,IAAI,UAAU,EAAE,IAAI;IACpB,IAAI,YAAY,EAAE;IAClB,IAAI;IACJ,GAAG,IAAI;IACP,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,GAAG,CAAC,YAAY,GAAG,IAAI;IAC3B,IAAI,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI;IAChC,IAAI,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI;IAClC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAClE,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI;IACrB,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;IAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI;IAC5B,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI;IAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG;IACpC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IACf,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;IACvB,GAAG;IACH,GAAG,OAAO,GAAG;IACb,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9C,GAAG,MAAM,GAAG,OAAO,MAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACnE,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;IACxC,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE;IACxB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE;IAC1B,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;IAC1C,IAAI,IAAI;IACR,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IACtB,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC;IAC/B,IAAI;IACJ,IAAI,MAAM,GAAG,OAAO;IACpB,GAAG;IACH,GAAG,OAAO,OAAO;IACjB,EAAE,CAAC;IACH,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC1D,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,MAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvF,GAAG,IAAI,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3C,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;IAC/B,EAAE,CAAC;IACH,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChE,GAAG,IAAI,IAAI,GAAG,IAAI;IAClB,GAAG,IAAI,MAAM,EAAE;IACf,IAAI,MAAM,GAAG,OAAO,MAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACpE,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM;IACnD,GAAG;IACH,GAAG,IAAI,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3C,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;IACnC,GAAG,IAAI,IAAI,EAAE;IACb,IAAI,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC;IAC9B,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;IACnC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;IACrD,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACpB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACxB,GAAG;IACH,EAAE,CAAC;IACH,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IAC5C,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,MAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvF,GAAG,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE;IAC/B,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnD,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE;IAC1B,IAAI,IAAI,CAAC,MAAM,EAAE;IACjB,KAAK,MAAM,CAAC,QAAQ,GAAG,KAAK;IAC5B,IAAI,CAAC;IACL,IAAI,KAAK,CAAC,MAAM,EAAE;IAClB,KAAK,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC3C,IAAI,CAAC;IACL,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IAC9C,KAAK,IAAI,SAAS,GAAG,CAAC;IACtB,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,MAAM,IAAI,MAAM;IAChB,MAAM,IAAI;IACV,OAAO,MAAM,GAAG,KAAK,EAAE;IACvB,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE;IAClB,OAAO,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAClC,MAAM;IACN,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE;IAChD,MAAM,SAAS,EAAE;IACjB,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM;IACjC,KAAK;IACL,KAAK,IAAI,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAClD,KAAK,OAAO,SAAS;IACrB,IAAI,CAAC;IACL,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/C,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI;IAC1C,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;IACjB,MAAM,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjC,KAAK;IACL,KAAK,IAAI,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IACnE,KAAK,OAAO,CAAC;IACb,IAAI;IACJ,IAAI,CAAC;IACL,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IACnC,EAAE,CAAC;IACH,EAAE,aAAa,CAAC,GAAG,EAAE;IACrB,GAAG,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI;IAC5E,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,kMAAkM,CAAC;IAC3O,QAAQ,IAAI;IACZ,IAAI,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IACf,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/B,GAAG;IACH,EAAE,CAAC;IACH,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;IACvD,GAAG,MAAM,cAAc,CAAC;IACxB,IAAI,WAAW,GAAG,KAAK;IACvB,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,GAAG,CAAC,GAAG,EAAE;IACb,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE;IAC3C,KAAK,IAAI,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS;IAC3C,KAAK,IAAI,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;IAC5C,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;IAC9C,IAAI;IACJ,IAAI,aAAa,CAAC,MAAM,EAAE;IAC1B,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM;IACzB,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,KAAK,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;IACnC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;IACjC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACnB,KAAK,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,gBAAgB,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;IAClI,KAAK,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACrE,KAAK,IAAI,MAAM;IACf,KAAK,IAAI,cAAc,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,MAAM,KAAK,OAAO;IACjG,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,MAAM,KAAK,MAAM;IAC7F,KAAK,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI;IAChC,KAAK,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,UAAU;IAChD,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK;IAC/B,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,0BAA0B,CAAC;IAC7F,MAAM,IAAI,EAAE,GAAG,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,qCAAqC,CAAC;IAClG,MAAM,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;IACpC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;IACjC,MAAM,IAAI,UAAU,KAAK,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;IAC7F,MAAM,GAAG,CAAC,YAAY,GAAG,aAAa;IACtC,MAAM,IAAI,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC,oCAAoC,CAAC;IAC1F,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACpB,MAAM,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,gBAAgB,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;IACnI,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC5E,MAAM,OAAO,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAQ,CAAC;IAC7D,KAAK,CAAC;IACN,KAAK,IAAI,SAAS,GAAG,IAAI;IACzB,KAAK,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,KAAK;IAC3C,MAAM,IAAI,KAAK,GAAG,QAAQ,GAAG,SAAS;IACtC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;IAC1G,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC;IAClF,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvC,KAAK,CAAC,CAAC;IACP,KAAK,IAAI,QAAQ,IAAI,CAAC,UAAU,EAAE;IAClC,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;IACxC,MAAM,SAAS,GAAG,UAAU;IAC5B,MAAM,GAAG,CAAC,6EAA6E,CAAC;IACxF,KAAK;IACL,KAAK,IAAI,CAAC,OAAO,GAAG,UAAU;IAC9B,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS;IAChC,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI;IAC5B,IAAI;IACJ,IAAI,IAAI,MAAM,GAAG;IACjB,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;IAC9C,KAAK,OAAO,IAAI,CAAC,OAAO;IACxB,IAAI;IACJ,IAAI,IAAI,SAAS,GAAG;IACpB,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;IAC9C,KAAK,OAAO,IAAI,CAAC,UAAU;IAC3B,IAAI;IACJ;IACA,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE;IAClC,IAAI,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,qHAAqH,CAAC;IAC5J,IAAI,IAAI,UAAU,GAAG;IACrB,KAAK,QAAQ,EAAE,KAAK;IACpB,KAAK,QAAQ,EAAE,IAAI,cAAc;IACjC,KAAK;IACL,GAAG,CAAC,MAAM,IAAI,UAAU,GAAG;IAC3B,IAAI,QAAQ,EAAE,KAAK;IACnB,IAAI;IACJ,IAAI;IACJ,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;IACxE,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;IAC/D,QAAQ,IAAI,UAAU,CAAC,GAAG,EAAE;IAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;IACxB,IAAI,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG;IAC7B,GAAG;IACH,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW;IAChE,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC;IACT,GAAG,IAAI,UAAU,GAAG,EAAE;IACtB,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK;IAC3F,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,IAAI,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC;IACJ,GAAG,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;IAClE,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ;IACvC,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7C,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;IAC3D,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;IAClG,SAAS,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvF,IAAI,OAAO,IAAI;IACf,GAAG;IACH,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK;IACnE,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAChE,GAAG,CAAC;IACJ,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,KAAK;IAChE,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,IAAI,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC;IACrD,IAAI,OAAO;IACX,KAAK,GAAG;IACR,KAAK,SAAS,EAAE;IAChB,KAAK;IACL,GAAG,CAAC;IACJ,GAAG,IAAI,CAAC,UAAU,GAAG,UAAU;IAC/B,GAAG,OAAO,IAAI;IACd,EAAE;IACF,EAAE;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,CAAC,IAAI,YAAY,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,KAAK;IACxD,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;IACrB,EAAE,IAAI,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,cAAyB,CAAC;IACjE,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC,CAAC;IACF,CAAC,IAAI,QAAQ,GAAG;IAChB,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;IACvC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;IACpC,GAAG,IAAI,GAAG;IACV,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE;IACrC,QAAQ,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI;IAClD,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;IACzB,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAChD,IAAI,OAAO,GAAG;IACd,GAAG;IACH,GAAG,OAAO,GAAG,GAAG,GAAG,GAAG,IAAI;IAC1B,EAAE,CAAC;IACH,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;IACvB,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG;IAC/B,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI;IACpC,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;IACrC,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG;IACpC,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG;IACpC,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI;IACrC,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5C,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;IAC/B,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM;IACtC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACnC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACnC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACnC,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAC1D,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IACnD,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAC1D,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IACnD,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAC1D,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IACnD,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3C,GAAG,OAAO,CAAC;IACX,EAAE,CAAC;IACH,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;IAC1B,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK;IACtC,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK;IACvC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAC9C,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9C,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/C,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9C,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9C,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI;IACtC,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK;IACvC,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO;IACzC,EAAE,CAAC;IACH,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;IAC5C,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAChE,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC;IAC9C,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;IAC/C,EAAE,CAAC;IACH,EAAE,eAAe,CAAC,EAAE,EAAE;IACtB,GAAG,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACjC,EAAE,CAAC;IACH,EAAE,OAAO,EAAE,MAAM;IACjB,EAAE,MAAM,CAAC,GAAG,EAAE;IACd,GAAG,OAAO,YAAY,CAAC,GAAG,CAAC;IAC3B,EAAE;IACF,EAAE;IACF,CAAC,SAAS,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE;IACvC,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACvB,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;IAC1D,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;IAC3C,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;IAC7B,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;IACxD,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;IACxB,GAAG,IAAI,KAAK,GAAG,EAAE;IACjB,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG;IAC9B,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG;IAC9B,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG;IAC9B,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE;IACtC,EAAE,IAAI;IACN,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;IACtB,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;IAChD,EAAE,IAAI;IACN,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC;IAC9B,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,IAAI,iBAAiB,GAAG,MAAM;IAC/B,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;IAC1C,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC;IACvB,EAAE,OAAO,GAAG;IACZ,CAAC,CAAC;IACF,CAAC,IAAI,iBAAiB,GAAG,iBAAiB;IAC1C,CAAC,SAAS,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;IAC/C,EAAE,QAAQ,CAAC,OAAO,GAAG,OAAO;IAC5B,EAAE,IAAI;IACN,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,QAAQ,GAAG;IACd,IAAI,KAAK,CAAC;IACV,KAAK,IAAI,GAAG,GAAG,iBAAiB,EAAE;IAClC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE;IAC5B,KAAK,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;IAClC,KAAK,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;IACxC,IAAI,KAAK,CAAC;IACV,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,KAAK;IAC/B,IAAI,KAAK,CAAC;IACV,KAAK,IAAI,GAAG,GAAG,iBAAiB,EAAE;IAClC,KAAK,MAAM,CAAC,KAAK,IAAI,GAAG;IACxB,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,EAAE;IACX,KAAK,IAAI,GAAG,GAAG,iBAAiB,EAAE;IAClC,KAAK,IAAI,MAAM,GAAG,CAAC;IACnB,KAAK,MAAM,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;IAClC,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,EAAE;IACX,IAAI,KAAK,EAAE,EAAE,OAAO,CAAC;IACrB;IACA,GAAG,OAAO,CAAC,EAAE;IACb,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE;IACtC,EAAE,IAAI;IACN,GAAG,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,IAAI,SAAS,GAAG,gBAAgB;IACjC,CAAC,IAAI,SAAS,GAAG,iBAAiB;IAClC,CAAC,IAAI,kBAAkB,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACzF,CAAC,SAAS,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE;IAC7C,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACrC,EAAE,IAAI;IACN,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE;IAChC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;IAC3B,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,IAAI,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,KAAK;IACtD,EAAE,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;IAChE,CAAC,CAAC;IACF,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE;IACvC,EAAE,IAAI;IACN,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE;IAC7B,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE;IACrB,GAAG,IAAI,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;IAClD,GAAG,IAAI,IAAI,GAAG,gBAAgB,EAAE,OAAO,CAAC,EAAE;IAC1C,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;IAC/B,GAAG,OAAO,gBAAgB;IAC1B,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;IAC5C,EAAE,QAAQ,CAAC,OAAO,GAAG,OAAO;IAC5B,EAAE,IAAI;IACN,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,QAAQ,EAAE;IACb,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE;IACtC,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;IACvD,MAAM,IAAI,IAAI,GAAG,iBAAiB,EAAE;IACpC,MAAM,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC;IAC9C,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC;IAClD,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC;IAClD,MAAM,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC;IACnD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,MAAM,OAAO,CAAC;IACd,KAAK;IACL,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,KAAK;IACd,IAAI,KAAK,KAAK;IACd,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,KAAK;IACd,IAAI,KAAK,KAAK;IACd,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE;IACtC,MAAM,IAAI,IAAI,GAAG,iBAAiB,EAAE;IACpC,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,IAAI,IAAI,GAAG,EAAE;IACnB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;IACzD,OAAO,OAAO;IACd,OAAO,OAAO;IACd,OAAO,OAAO;IACd,OAAO,OAAO;IACd,OAAO;IACP,OAAO,CAAC;IACR,KAAK;IACL,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,IAAI,IAAI,GAAG,iBAAiB,EAAE;IACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;IAC1B,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,OAAO,CAAC,EAAE;IACf,IAAI,KAAK,KAAK;IACd,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,IAAI,GAAG,iBAAiB,EAAE;IACnC,KAAK,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;IACtC,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE;IAC1C,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/D,MAAM,IAAI,IAAI,GAAG,iBAAiB,EAAE;IACpC,MAAM,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACxC,KAAK;IACL,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,OAAO,CAAC;IACb,IAAI,KAAK,KAAK;IACd,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IAChC,KAAK,OAAO,CAAC;IACb,IAAI,SAAS,OAAO,CAAC,EAAE;IACvB;IACA,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE;IACxC,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;IAC3C,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1B,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;IACzD,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,IAAI,QAAQ,GAAG,KAAK,GAAG,GAAG;IAC7B,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,IAAI;IAChC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,IAAI;IACxB,GAAG,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,GAAG,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;IACzD,EAAE,QAAQ,CAAC,OAAO,GAAG,OAAO;IAC5B,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;IAC3C,GAAG,IAAI,IAAI,GAAG,OAAO,GAAG,iBAAiB,EAAE,GAAG,CAAC;IAC/C,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;IACvC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE;IAC3D,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;IAC3C,GAAG,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE;IAC/B,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;IACpD,GAAG,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IACjC,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC;IACtC,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO;IAC7B,GAAG,OAAO,GAAG;IACb,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,gBAAgB,CAAC,IAAI,EAAE;IACjC,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IACjB,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;IACvC,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;IAC3C,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,QAAQ,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IACzC,QAAQ,OAAO,CAAC,EAAE;IAClB,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,KAAK;IAC/B,EAAE,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU;IAC9D,CAAC,CAAC;IACF,CAAC,SAAS,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;IAC1D,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,GAAG,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IACjD,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK;IACrC,GAAG,IAAI,CAAC,KAAK,EAAE;IACf,IAAI,KAAK,GAAG,GAAG;IACf,IAAI,KAAK,GAAG,GAAG;IACf,GAAG,CAAC,MAAM;IACV,IAAI,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;IACvC,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,WAAW,IAAI,UAAU,EAAE,KAAK,GAAG,GAAG;IAC9C,SAAS,IAAI,WAAW,IAAI,UAAU,EAAE,KAAK,GAAG,IAAI;IACpD,SAAS,KAAK,GAAG,OAAO,GAAG,GAAG,GAAG,WAAW,IAAI,GAAG,GAAG,GAAG,CAAC;IAC1D,IAAI,KAAK,IAAI,EAAE;IACf,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;IACnC,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,WAAW,IAAI,UAAU,EAAE,KAAK,GAAG,GAAG;IAC9C,SAAS,IAAI,WAAW,IAAI,UAAU,EAAE,KAAK,GAAG,IAAI;IACpD,SAAS,KAAK,GAAG,OAAO,GAAG,GAAG,GAAG,WAAW,IAAI,GAAG,GAAG,GAAG,CAAC;IAC1D,GAAG;IACH,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;IAC9D,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;IACpF,CAAC,IAAI,0BAA0B,GAAG;IAClC,EAAE,CAAC;IACH,EAAE,EAAE;IACJ,EAAE,EAAE;IACJ,EAAE,EAAE;IACJ,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE;IACF,EAAE;IACF,CAAC,IAAI,6BAA6B,GAAG;IACrC,EAAE,CAAC;IACH,EAAE,EAAE;IACJ,EAAE,EAAE;IACJ,EAAE,EAAE;IACJ,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE,GAAG;IACL,EAAE;IACF,EAAE;IACF,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,KAAK;IAC9B,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,0BAA0B,GAAG,6BAA6B,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;IAC5I,CAAC,CAAC;IACF,CAAC,SAAS,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;IACtC,EAAE,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACjC,EAAE,IAAI,IAAI,mBAAmB,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACjD,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;IACxC,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;IAC5C,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC1C,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;IAC1C,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC3C,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI;IACrD,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;IACzC,EAAE,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;IACnC,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;IAChC,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC;IAC5D,EAAE,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,EAAE,IAAI,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE;IAC3E,EAAE,IAAI,YAAY,GAAG,KAAK,CAAC,iBAAiB,EAAE;IAC9C,EAAE,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC;IAClH,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG;IAC/B,CAAC;IACD,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;IACnE,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACrC,EAAE,IAAI;IACN,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;IACtD,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG;IACpB,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS;IACzC,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE;IAC1D,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACrC,EAAE,IAAI;IACN,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;IACnE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK;IAClB,EAAE;IACF,CAAC;IACD,CAAC,IAAI,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAK;IAC9D,EAAE,IAAI,WAAW,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;IAC9D,EAAE,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,EAAE,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE;IAC/C,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE;IAC/C,EAAE,IAAI,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9D,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,iBAAiB,GAAG,EAAE;IACjD,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC;IAC9D,EAAE,IAAI,WAAW,GAAG,CAAC,cAAc,KAAK;IACxC,GAAG,IAAI,IAAI,GAAG,cAAc,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG;IAC7C,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3C,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtH,EAAE,CAAC;IACH,EAAE,IAAI,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC;IAC5C,EAAE,IAAI,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC;IAC5C,EAAE,IAAI,YAAY,GAAG,YAAY,EAAE;IACnC,GAAG,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC;IACzC,GAAG,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC;IACzC,EAAE,CAAC,MAAM;IACT,GAAG,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC;IACzC,GAAG,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC;IACzC,EAAE;IACF,CAAC,CAAC;IACF,CAAC,IAAI,mBAAmB,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE;IAClD,CAAC,IAAI,oBAAoB,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE;IAE5C,CAAC,IAAI,cAAc,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC;IAClE,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE;IAE5D,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;IACxC,EAAE,IAAI,GAAG;IACT,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE,GAAG,GAAG,oBAAoB,EAAE;IAChD,OAA2B,GAAG,GAAG,mBAAmB,EAAE;IAEtD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IACnC,EAAE,OAAO,CAAC;IACV,CAAC;IACD,CAAC,IAAI,UAAU,GAAG,MAAM,UAAU;IAClC,CAAC,IAAI,wBAAwB,GAAG,MAAM,UAAU,EAAE;IAClD,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,KAAK;IAC5B,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC;IACvE,EAAE,IAAI;IACN,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,GAAG,iBAAiB,EAAE;IACtB,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACf,CAAC,CAAC;IACF,CAAC,IAAI,uBAAuB,GAAG,CAAC,aAAa,KAAK;IAClD,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM;IAC7B,EAAE,aAAa,MAAM,CAAC;IACtB,EAAE,IAAI,WAAW,GAAG,UAAU,EAAE;IAChC,EAAE,IAAI,aAAa,GAAG,WAAW,EAAE,OAAO,KAAK;IAC/C,EAAE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE;IACpD,GAAG,IAAI,iBAAiB,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACvD,GAAG,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,GAAG,SAAS,CAAC;IAC7E,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI;IACrH,EAAE;IACF,EAAE,OAAO,KAAK;IACd,CAAC,CAAC;IACF,CAAC,IAAI,GAAG,GAAG,EAAE;IACb,CAAC,IAAI,iBAAiB,GAAG,MAAM,WAAW,IAAI,gBAAgB;IAC9D,CAAC,IAAI,aAAa,GAAG,MAAM;IAC3B,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;IAC9B,GAAG,IAAI,GAAG,GAAG;IACb,IAAI,MAAM,EAAE,UAAU;IACtB,IAAI,SAAS,EAAE,UAAU;IACzB,IAAI,MAAM,EAAE,GAAG;IACf,IAAI,KAAK,EAAE,GAAG;IACd,IAAI,MAAM,EAAE,gBAAgB;IAC5B,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,IAAI,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ;IAChF,IAAI,GAAG,EAAE,iBAAiB;IAC1B,IAAI;IACJ,GAAG,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAC1D,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,GAAG,IAAI,OAAO,GAAG,EAAE;IACnB,GAAG,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,GAAG,aAAa,CAAC,OAAO,GAAG,OAAO;IAClC,EAAE;IACF,EAAE,OAAO,aAAa,CAAC,OAAO;IAC9B,CAAC,CAAC;IACF,CAAC,IAAI,YAAY,GAAG,CAAC,SAAS,EAAE,WAAW,KAAK;IAChD,EAAE,IAAI,OAAO,GAAG,CAAC;IACjB,EAAE,IAAI,IAAI,GAAG,CAAC;IACd,EAAE,KAAK,IAAI,MAAM,IAAI,aAAa,EAAE,EAAE;IACtC,GAAG,IAAI,GAAG,GAAG,WAAW,GAAG,OAAO;IAClC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG;IACvC,GAAG,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;IACrD,GAAG,IAAI,IAAI,CAAC;IACZ,EAAE;IACF,EAAE,OAAO,CAAC;IACV,CAAC,CAAC;IACF,CAAC,IAAI,kBAAkB,GAAG,CAAC,cAAc,EAAE,iBAAiB,KAAK;IACjE,EAAE,IAAI,OAAO,GAAG,aAAa,EAAE;IAC/B,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM;IAC/C,EAAE,IAAI,OAAO,GAAG,CAAC;IACjB,EAAE,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;IACpE,EAAE,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,OAAO;IAC3C,EAAE,OAAO,CAAC;IACV,CAAC,CAAC;IACF,CAAC,SAAS,SAAS,CAAC,EAAE,EAAE;IACxB,EAAE,IAAI;IACN,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACnB,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,KAAK;IACjB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE;IACnC,EAAE,IAAI;IACN,GAAG,IAAI,UAAU,GAAG,CAAC;IACrB,GAAG,IAAI,gBAAgB,GAAG,CAAC;IAC3B,GAAG,IAAI,KAAK,GAAG,CAAC;IAChB,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACzF,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;IACrB,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IAChC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7C,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACpD,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,KAAK;IACjB,EAAE;IACF,CAAC;IACD;IACA,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK;IAChD,EAAE,IAAI,GAAG,GAAG,CAAC;IACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACnC,GAAG,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,GAAG,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,GAAG,GAAG,IAAI,CAAC;IACX,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC;IACtD,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE;IAC1B,GAAG,GAAG,IAAI,IAAI;IACd,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE;IAEnB,EAAE;IACF,EAAE,OAAO,GAAG;IACZ,CAAC,CAAC;IACF,CAAC,SAAS,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAC1C,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;IAC/D,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,KAAK;IACjB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;IAClD,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACrC,EAAE,IAAI;IACN,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;IAC/B,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACpC,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IACnD,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,IAAI;IAC9E,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,KAAK;IACjB,EAAE;IACF,CAAC;IACD,CAAC,SAAS,QAAQ,CAAC,EAAE,EAAE;IACvB,EAAE,IAAI;IACN,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5C,GAAG,OAAO,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC;IAC5C,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,KAAK;IACjB,EAAE;IACF,CAAC;IACD;IACA,CAAC,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK;IACjD,EAAE,IAAI,GAAG,GAAG,CAAC;IACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACnC,GAAG,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,GAAG,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,GAAG,GAAG,IAAI,CAAC;IACX,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC;IACvD,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE;IAC1B,GAAG,GAAG,IAAI,IAAI;IACd,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE;IAEnB,EAAE;IACF,EAAE,OAAO,GAAG;IACZ,CAAC,CAAC;IACF,CAAC,SAAS,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAC3C,EAAE,IAAI;IACN,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;IAChE,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,GAAG,OAAO,CAAC;IACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;IACd,GAAG,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,OAAO,CAAC,CAAC,KAAK;IACjB,EAAE;IACF,CAAC;IACD,CAAC,EAAE,CAAC,mBAAmB,GAAG,sBAAsB;IAChD,CAAC,EAAE,CAAC,WAAW,GAAG,cAAc;IAChC,CAAC,EAAE,CAAC,UAAU,EAAE;IAChB,CAAC,UAAU,EAAE;IACb,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;IACrD,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACxE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3C,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IACjD,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;IAC5D,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC7C,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;IAC/D,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;IACxB,EAAE,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrF,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IAClE,CAAC;IACD,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU;IAClC,CAAC,IAAI,4BAA4B;IACjC,CAAC,SAAS,iBAAiB,CAAC,WAAW,EAAE;IACzC,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC3D,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,eAAe,CAAC;IACzD,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC3D,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC;IACvD,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC;IACvD,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,eAAe,CAAC;IACzD,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC;IACvD,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC3D,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC;IACrD,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,WAAW,CAAC,gCAAgC,CAAC;IAC3F,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,oBAAoB,CAAC;IACnE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC3D,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,eAAe,CAAC;IACzD,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC;IACvD,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;IACjE,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAC7D,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,WAAW,CAAC,gCAAgC,CAAC;IAC3F,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;IACrE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,WAAW,CAAC,gCAAgC,CAAC;IAC3F,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,WAAW,CAAC,gCAAgC,CAAC;IAC3F,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,WAAW,CAAC,gCAAgC,CAAC;IAC3F,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACzE,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC/D,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,WAAW,CAAC,gCAAgC,CAAC;IAC3F,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,sBAAsB,CAAC;IACvE,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,kCAAkC,CAAC,GAAG,WAAW,CAAC,iCAAiC,CAAC;IAC7F,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,gCAAgC,CAAC,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACzF,EAAE,MAAM,CAAC,kCAAkC,CAAC,GAAG,WAAW,CAAC,iCAAiC,CAAC;IAC7F,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,0BAA0B,CAAC,GAAG,WAAW,CAAC,yBAAyB,CAAC;IAC7E,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAC3E,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC/E,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,2BAA2B,CAAC;IACjF,EAAE,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC;IACnF,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,kCAAkC,CAAC,GAAG,WAAW,CAAC,iCAAiC,CAAC;IAC7F,EAAE,MAAM,CAAC,kCAAkC,CAAC,GAAG,WAAW,CAAC,iCAAiC,CAAC;IAC7F,EAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,6BAA6B,CAAC;IACrF,EAAE,MAAM,CAAC,oCAAoC,CAAC,GAAG,WAAW,CAAC,mCAAmC,CAAC;IACjG,EAAE,MAAM,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,8BAA8B,CAAC;IACvF,EAAE,MAAM,CAAC,kCAAkC,CAAC,GAAG,WAAW,CAAC,iCAAiC,CAAC;IAC7F,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC;IAC3C,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;IACvC,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC;IAC7C,EAAE,4BAA4B,GAAG,WAAW,CAAC,6BAA6B,CAAC;IAC3E,EAAE,WAAW,CAAC,2BAA2B,CAAC;IAC1C,EAAE,WAAW,CAAC,yBAAyB,CAAC;IACxC,EAAE,WAAW,CAAC,8BAA8B,CAAC;IAC7C,EAAE,WAAW,CAAC,2BAA2B,CAAC;IAC1C,CAAC;IACD,CAAC,IAAI,WAAW,GAAG;IACnB,EAAE,eAAe,EAAE,gBAAgB;IACnC,EAAE,mBAAmB,EAAE,oBAAoB;IAC3C,EAAE,gBAAgB,EAAE,iBAAiB;IACrC,EAAE,kBAAkB,EAAE,mBAAmB;IACzC,EAAE,iBAAiB,EAAE,kBAAkB;IACvC,EAAE,iBAAiB,EAAE,kBAAkB;IACvC,EAAE,qBAAqB,EAAE,sBAAsB;IAC/C,EAAE,gBAAgB,EAAE,iBAAiB;IACrC,EAAE,eAAe,EAAE,gBAAgB;IACnC,EAAE,iBAAiB,EAAE,kBAAkB;IACvC,EAAE,iBAAiB,EAAE,kBAAkB;IACvC,EAAE,oBAAoB,EAAE,qBAAqB;IAC7C,EAAE,gBAAgB,EAAE,iBAAiB;IACrC,EAAE,oBAAoB,EAAE,qBAAqB;IAC7C,EAAE,eAAe,EAAE,gBAAgB;IACnC,EAAE,gBAAgB,EAAE,iBAAiB;IACrC,EAAE,kBAAkB,EAAE,mBAAmB;IACzC,EAAE,mBAAmB,EAAE,oBAAoB;IAC3C,EAAE,aAAa,EAAE,cAAc;IAC/B,EAAE,QAAQ,EAAE,SAAS;IACrB,EAAE,UAAU,EAAE,WAAW;IACzB,EAAE,SAAS,EAAE,UAAU;IACvB,EAAE,cAAc,EAAE,eAAe;IACjC,EAAE,mBAAmB,EAAE,oBAAoB;IAC3C,EAAE,uBAAuB,EAAE,wBAAwB;IACnD,EAAE,kBAAkB,EAAE,mBAAmB;IACzC,EAAE,sBAAsB,EAAE,uBAAuB;IACjD,EAAE,WAAW,EAAE,YAAY;IAC3B,EAAE,iBAAiB,EAAE,kBAAkB;IACvC,EAAE,QAAQ,EAAE,SAAS;IACrB,EAAE,aAAa,EAAE,cAAc;IAC/B,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,QAAQ,EAAE,SAAS;IACrB,EAAE,MAAM,EAAE;IACV,EAAE;IACF,CAAC,SAAS,GAAG,GAAG;IAChB,EAAE,IAAI,eAAe,GAAG,CAAC,EAAE;IAC3B,GAAG,qBAAqB,GAAG,GAAG;IAC9B,GAAG;IACH,EAAE;IACF,EAAE,MAAM,EAAE;IACV,EAAE,IAAI,eAAe,GAAG,CAAC,EAAE;IAC3B,GAAG,qBAAqB,GAAG,GAAG;IAC9B,GAAG;IACH,EAAE;IACF,EAAE,SAAS,KAAK,GAAG;IACnB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;IAC7B,GAAG,IAAI,KAAK,EAAE;IACd,GAAG,WAAW,EAAE;IAChB,GAAG,mBAAmB,GAAG,MAAM,CAAC;IAChC,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI;IACrC,GAAG,OAAO,EAAE;IACZ,EAAE;IACF,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;IAC3B,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;IACpC,GAAG,UAAU,CAAC,MAAM;IACpB,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,EAAE;IACX,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,EAAE,CAAC,MAAM,KAAK,EAAE;IAChB,CAAC;IACD,CAAC,IAAI,WAAW,GAAG,MAAM,UAAU,EAAE;IACrC,CAAC,GAAG,EAAE;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,CAAC,MAAM,CAAC,sBAAsB,GAAG,eAAe,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE;IAO7G,EAAE,OAAO,gBAAgB,CAAC,sBAAsB;IAChD,EAAE,UAAU,CAAC,mBAAmB,GAAG,eAAe,mBAAmB,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,aAAa,EAAE;IACpJ,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE;IACpC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,EAAE,IAAI,CAAC,8CAA8C,EAAE,wEAAwE,CAAC;IAClL,IAAI,OAAO,mBAAmB,CAAC,OAAO;IACtC,GAAG;IACH,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;IACpE,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,EAAE,MAAM;IACnB,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,aAAa;IAC7C,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC,IAAI,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;IAClC,IAAI,aAAa,EAAE,OAAO;IAC1B,IAAI,WAAW,EAAE;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IACzB,IAAI,eAAe,EAAE,MAAM,CAAC,WAAW,GAAG,QAAQ,GAAG,gBAAgB;IACrE,IAAI,iBAAiB,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,GAAG,cAAc;IACnE,IAAI,iBAAiB,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG;IACxD,IAAI,CAAC;IACL,GAAG;IACH,IAAI,SAAS;IACb,IAAI,QAAQ;IACZ,IAAI,eAAe;IACnB,IAAI;IACJ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;IACpB,IAAI,IAAI,UAAU,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;IAChE,GAAG,CAAC,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,IAAI,GAAG,EAAE,EAAE;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,IAAI,GAAG,EAAE,EAAE;IACpB;IACA,GAAG,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK;IAC3B,IAAI,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,uBAAuB,GAAG,EAAE;IAC/F,GAAG,CAAC;IACJ;IACA,GAAG,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,WAAW;IACvG;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,YAAY,SAAS,KAAK,CAAC;IACpC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;IACzB,KAAK,IAAI,EAAE;IACX,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClB,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,WAAW;IACX,OAAO,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,YAAY;IACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG;IAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO;IACP,MAAM;IACN,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAChF,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY;IAC9C,KAAK,IAAI,CAAC,IAAI,GAAG,cAAc;IAC/B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK;IACpC,IAAI,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC;IACnC,GAAG,CAAC;IACJ,GAAG,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI;IAClC,GAAG,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,gEAAgE,CAAC;IAC/I;IACA;IACA;IACA;IACA,GAAG,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;IACtC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;IACjB,KAAK,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAC1C,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI;IACrB,IAAI;IACJ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;IACrC,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA,GAAG,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,CAAC,IAAI,WAAW;IACzE;IACA;IACA;IACA;IACA,GAAG,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;IAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;IACjB,KAAK,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB;IACrC,KAAK,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB;IACrC,IAAI;IACJ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;IACrC,GAAG,CAAC;IACJ;IACA,GAAG,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK;IAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,KAAK;IACrF,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,UAAU,IAAI,CAAC,YAAY,SAAS,IAAI,CAAC,YAAY,WAAW,CAAC;IAC3H;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,UAAU,IAAI,CAAC,YAAY,SAAS,IAAI,CAAC,YAAY,WAAW,CAAC;IAC1H;IACA;IACA,GAAG,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC;IAC3H;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,cAAc,GAAG,SAAS,CAAC,EAAE;IACtC,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,YAAY,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAC7H,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAChD,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC;IACZ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,cAAc,SAAS,KAAK,CAAC;IACtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;IACzB,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IACzE,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,UAAU,KAAK,CAAC,oBAAoB,CAAC;IACrC,KAAK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY;IACxC,KAAK,IAAI,CAAC,IAAI,GAAG,gBAAgB;IACjC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,cAAc,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK;IACtC,IAAI,MAAM,IAAI,cAAc,CAAC,GAAG,IAAI,CAAC;IACrC,GAAG,CAAC;IACJ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;IACvB,IAAI,iBAAiB,EAAE,MAAM;IAC7B,IAAI,iBAAiB,EAAE,MAAM;IAC7B,IAAI,0BAA0B,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,KAAK,CAAC,CAAC;IAC3G,IAAI,uBAAuB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC;IAC9F,IAAI,8BAA8B,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,CAAC,CAAC;IAC1H,IAAI,kBAAkB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,KAAK,CAAC,CAAC;IACxF,IAAI,kBAAkB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,KAAK,CAAC,CAAC;IAC7E,IAAI,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;IAC5D,IAAI,kBAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC;IACxC,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,IAAI,GAAG;IAChB,IAAI,wBAAwB;IAC5B,IAAI,cAAc;IAClB,IAAI,YAAY;IAChB,IAAI,YAAY;IAChB,IAAI,gBAAgB;IACpB,IAAI,oBAAoB;IACxB,IAAI,OAAO;IACX,IAAI,mBAAmB;IACvB,IAAI,YAAY;IAChB,IAAI,UAAU,EAAE,MAAM,UAAU,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ;IAC/E,IAAI,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE;IAC5B,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC;IACL,IAAI,KAAK;IACT,IAAI,cAAc,EAAE,IAAI,CAAC,cAAc;IACvC,IAAI,EAAE;IACN,IAAI,MAAM,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;IAC/B,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAClD,IAAI,CAAC;IACL,IAAI,cAAc,EAAE,SAAS,KAAK,EAAE;IACpC,KAAK,IAAI,KAAK,YAAY,WAAW,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC;IACpE,KAAK,MAAM,MAAM,GAAG,iBAAiB;IACrC,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,oDAAoD,CAAC;IAC3F,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,oDAAoD,CAAC;IACpI,IAAI,CAAC;IACL,IAAI,UAAU,EAAE,SAAS,KAAK,EAAE;IAChC,KAAK,IAAI,KAAK,YAAY,WAAW,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC;IACpE,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU;IAC/B,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,+BAA+B,CAAC;IAC/F,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;IACvB,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,mDAAmD,CAAC;IACzF,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,wDAAwD,EAAE,4CAA4C,EAAE,8BAA8B,CAAC;IACtM,IAAI,WAAW,EAAE,QAAQ,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,GAAG,CAAC;IAChF,IAAI,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa;IACzC,IAAI,aAAa,EAAE,MAAM,CAAC,aAAa;IACvC,IAAI,KAAK,EAAE,MAAM;IACjB,IAAI,OAAO,EAAE,MAAM;IACnB,IAAI,OAAO,EAAE;IACb,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,mBAAmB,GAAG,SAAS,aAAa,EAAE;IACtD,IAAI,IAAI,aAAa,YAAY,WAAW,EAAE,aAAa,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC;IAC3F,IAAI,wBAAwB,CAAC,aAAa,CAAC;IAC3C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjH,IAAI,OAAO,IAAI;IACf,GAAG,CAAC;IACJ,GAAG;IACH,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,CAAC,iBAAiB,EAAE,UAAU,GAAG,MAAM,CAAC,iBAAiB;IACzH,IAAI,KAAK,MAAM,GAAG,IAAI;IACtB,KAAK,QAAQ;IACb,KAAK,UAAU;IACf,KAAK;IACL,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,EAAE,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE,aAAa,CAAC;IAC3G,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;IAC/B,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,SAAS,CAAC;IAChF,IAAI,CAAC;IACL,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5C,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IACpC,KAAK,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,KAAK,OAAO,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI;IAC/F,IAAI,CAAC;IACL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAChD,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;IACjC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC;IACL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAChD,GAAG;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE;IAChD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IAC3B,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO;IACpC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;IACvB,MAAM,CAAC,CAAC,GAAG,GAAG,eAAe;IAC7B,MAAM,CAAC,CAAC,MAAM,GAAG,SAAS;IAC1B,MAAM,CAAC,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,EAAE,EAAE;IACjC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;IAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAC5D,MAAM,CAAC;IACP,KAAK;IACL,KAAK,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACjB,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;IACrD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,KAAK;IACL,KAAK,OAAO,CAAC,CAAC,OAAO,GAAG,EAAE;IAC1B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACvC,KAAK,MAAM,EAAE,GAAG,EAAE,EAAE;IACpB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;IAC5B,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAChD,KAAK,CAAC,CAAC;IACP,KAAK,OAAO,EAAE;IACd,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,OAAO,OAAO,EAAE;IAC5C,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;IACzC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACrD,KAAK,CAAC,CAAC;IACP,KAAK,OAAO,OAAO;IACnB,IAAI;IACJ,IAAI,OAAO,QAAQ,KAAK,OAAO,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,GAAG,KAAK;IAC3F,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,4BAA4B;IACtD,IAAI,KAAK,EAAE,SAAS,CAAC,EAAE;IACvB,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACpI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,wBAAwB,CAAC;IAChI,IAAI,CAAC;IACL,IAAI,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE;IACjC,KAAK,IAAI,QAAQ,KAAK,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC3I,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1C,KAAK,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE;IAC3B,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxE,KAAK,OAAO,EAAE;IACd,IAAI,CAAC;IACL,IAAI,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,KAAK;IAC7C,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACtI,IAAI,CAAC;IACL,IAAI,IAAI,EAAE,SAAS,CAAC,EAAE;IACtB,KAAK,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;IACzC,KAAK,IAAI;IACT,MAAM,OAAO,CAAC,CAAC,OAAO,CAAC;IACvB,KAAK,CAAC,SAAS;IACf,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnC,KAAK;IACL,IAAI;IACJ,IAAI,CAAC;IACL,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;IACxC,IAAI,OAAO,EAAE;IACb,KAAK,YAAY,EAAE,KAAK;IACxB,KAAK,QAAQ,EAAE,IAAI;IACnB,KAAK,SAAS,EAAE,KAAK;IACrB,KAAK,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;IACvB,KAAK;IACL,IAAI,KAAK,EAAE;IACX,KAAK,YAAY,EAAE,KAAK;IACxB,KAAK,QAAQ,EAAE,IAAI;IACnB,KAAK,SAAS,EAAE,KAAK;IACrB,KAAK,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;IACvB,KAAK;IACL,IAAI,SAAS,EAAE;IACf,KAAK,YAAY,EAAE,KAAK;IACxB,KAAK,QAAQ,EAAE,IAAI;IACnB,KAAK,SAAS,EAAE,KAAK;IACrB,KAAK,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;IACvB;IACA,IAAI,CAAC;IACL;IACA;IACA;IACA,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,IAAI,KAAK;IAC1C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE;IAC5F,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;IAC9B,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvD,MAAM,OAAO,EAAE;IACf,KAAK;IACL,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;IACtC,KAAK,IAAI;IACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC;IACvC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB;IAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;IAChC,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;IACtC,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3C,MAAM,GAAG;IACT,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC;IACxC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAC3E,OAAO,CAAC,IAAI,CAAC;IACb,OAAO,MAAM,IAAI,CAAC;IAClB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;IACpB,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;IACjB,MAAM,MAAM,CAAC,KAAK,CAAC,qEAAqE,EAAE,CAAC,CAAC;IAC5F,KAAK,CAAC,SAAS;IACf,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IAChC,KAAK;IACL,KAAK,OAAO,EAAE;IACd,IAAI;IACJ,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IAC5C,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,uBAAuB,GAAG,WAAW;IAC7C,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG;IAC5C,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa;IACrC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,CAAC,UAAU,CAAC,yBAAyB,IAAI,CAAC,UAAU,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,EAAE;IAC3L,IAAI,IAAI;IACR,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI;IACtH,UAAU,OAAO,IAAI,CAAC,GAAG,GAAG,EAAE;IAC9B,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,OAAO,IAAI,CAAC,GAAG,GAAG,EAAE;IACzB,IAAI;IACJ,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACf;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,qCAAqC,GAAG,SAAS,IAAI,EAAE;IAC/D,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,uBAAuB,EAAE;IAC5C,IAAI,OAAO,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK;IACvD,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,sBAAsB,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE;IACpE,IAAI,IAAI;IACR,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC9C,KAAK,IAAI,CAAC,EAAE,EAAE,OAAO,KAAK;IAC1B,UAAU,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;IACvE,UAAU,OAAO,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK;IACxE,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,OAAO,KAAK;IACjB,IAAI;IACJ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,mBAAmB,GAAG,WAAW;IACzC,IAAI,MAAM,EAAE,GAAG,EAAE;IACjB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACnD,IAAI,OAAO,IAAI,EAAE;IACjB,KAAK,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC5C,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM;IACvB,KAAK,IAAI,CAAC,OAAO,EAAE;IACnB,IAAI;IACJ,IAAI,OAAO,EAAE;IACb,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,oBAAoB,GAAG,SAAS,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;IACzD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC;IACpD,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,4BAA4B,CAAC;IACjD,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,gCAAgC,CAAC;IACpE,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;IACxC,IAAI,IAAI,IAAI;IACZ,IAAI,IAAI;IACR,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACtD,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACzC;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KAAK,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI;IAChH,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,yCAAyC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACjG,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/B,KAAK,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;IACzC,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,EAAE;IAClG,KAAK,OAAO,EAAE;IACd,IAAI,CAAC,SAAS;IACd,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;IAC9C,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC;IAC/G;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,4BAA4B,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK;IACpD,IAAI,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,uCAAuC,CAAC,GAAG,CAAC,CAAC;IAClJ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,4BAA4B,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACzE,IAAI,IAAI,KAAK;IACb,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI;IAC9C,SAAS,IAAI,IAAI,YAAY,WAAW,IAAI,IAAI,YAAY,UAAU,EAAE;IACxE,KAAK,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC3C,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU;IACjG,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,0DAA0D,CAAC;IACxF,IAAI,IAAI;IACR,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,0DAA0D,CAAC;IAC7H,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;IAC9E,KAAK,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,kDAAkD,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC9G,IAAI,CAAC,SAAS;IACd,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACrD,IAAI;IACJ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,0BAA0B,GAAG,SAAS,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5E,IAAI,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE,2DAA2D,EAAE,yCAAyC,CAAC;IACzK,IAAI,IAAI,KAAK;IACb,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI;IAChD,SAAS;IACT,KAAK,IAAI,IAAI,YAAY,WAAW,EAAE,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;IACjE,KAAK,IAAI,IAAI,YAAY,UAAU,EAAE;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC5C,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU;IAClG,KAAK,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,6DAA6D,CAAC;IAC5F,IAAI;IACJ,SAAS,KAAK,GAAG,CAAC;IAClB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;IAC/C,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACrD,KAAK,YAAY,CAAC,IAAI,CAAC,wDAAwD,CAAC;IAChF,IAAI;IACJ,IAAI,IAAI;IACR,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;IACjF,KAAK,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,kDAAkD,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC9G,IAAI,CAAC,SAAS;IACd,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACrD,IAAI;IACJ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,GAAG,KAAK;IAC5C,IAAI,IAAI,QAAQ,KAAK,OAAO,GAAG,EAAE,OAAO,GAAG;IAC3C,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC;IAC/B,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE;IACvD,IAAI,QAAQ,EAAE;IACd,KAAK,KAAK,IAAI,CAAC,2BAA2B;IAC1C,KAAK,KAAK,IAAI,CAAC,8BAA8B;IAC7C,KAAK,KAAK,IAAI,CAAC,qCAAqC;IACpD,KAAK,KAAK,IAAI,CAAC,qCAAqC;IACpD,KAAK,KAAK,IAAI,CAAC,gCAAgC;IAC/C,KAAK,KAAK,IAAI,CAAC,2BAA2B;IAC1C,KAAK,KAAK,IAAI,CAAC,2BAA2B;IAC1C,KAAK,KAAK,IAAI,CAAC,8BAA8B;IAC7C,KAAK,KAAK,IAAI,CAAC,yBAAyB;IACxC,KAAK,KAAK,IAAI,CAAC,+BAA+B;IAC9C,KAAK,KAAK,IAAI,CAAC,kCAAkC;IACjD,KAAK,KAAK,IAAI,CAAC,uBAAuB;IACtC,KAAK,KAAK,IAAI,CAAC,uBAAuB;IACtC,KAAK,KAAK,IAAI,CAAC,2BAA2B;IAC1C,KAAK,KAAK,IAAI,CAAC,kCAAkC;IACjD,KAAK,KAAK,IAAI,CAAC,8BAA8B;IAC7C,KAAK,KAAK,IAAI,CAAC,+BAA+B;IAC9C,KAAK,KAAK,IAAI,CAAC,iCAAiC;IAChD,KAAK,KAAK,IAAI,CAAC,oCAAoC;IACnD,KAAK,KAAK,IAAI,CAAC,mCAAmC;IAClD,KAAK,KAAK,IAAI,CAAC,+BAA+B;IAC9C,KAAK,KAAK,IAAI,CAAC,yBAAyB;IACxC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,EAAE;IAC9E,OAAO,UAAU;IACjB,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,OAAO;IACP,OAAO,CAAC;IACR,MAAM,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpD,KAAK,KAAK,IAAI,CAAC,yBAAyB;IACxC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,EAAE;IACjF,OAAO,UAAU;IACjB,OAAO,KAAK;IACZ,OAAO,GAAG;IACV,OAAO,KAAK;IACZ,OAAO;IACP,OAAO,CAAC;IACR,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,KAAK,KAAK,IAAI,CAAC,0BAA0B;IACzC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,EAAE;IAC3E,OAAO,UAAU;IACjB,OAAO,KAAK;IACZ,OAAO;IACP,OAAO,CAAC;IACR,MAAM,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,KAAK,SAAS,OAAO,IAAI,CAAC,aAAa;IACvC;IACA,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACf;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,EAAE,oBAAoB,GAAG,IAAI,EAAE;IAC1E,IAAI,IAAI,GAAG;IACX,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACjD,IAAI,QAAQ,OAAO;IACnB,KAAK,KAAK,IAAI,CAAC,cAAc;IAC7B,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;IAC9B,OAAO,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC3C,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACxD,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAClD,MAAM;IACN,KAAK,KAAK,IAAI,CAAC,YAAY;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAC3C,MAAM;IACN,KAAK,KAAK,IAAI,CAAC,WAAW;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACzC,MAAM;IACN,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;IAC5B,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC9C,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACjD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,6CAA6C,EAAE,CAAC,EAAE,SAAS,CAAC;IAC/G,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IACpF,MAAM;IACN,KAAK;IACL,KAAK,KAAK,IAAI,CAAC,WAAW;IAC1B,MAAM,GAAG,GAAG,IAAI;IAChB,MAAM;IACN,KAAK;IACL,MAAM,IAAI,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,iCAAiC,EAAE,OAAO,CAAC;IACvG,MAAM,GAAG,GAAG,MAAM;IAClB;IACA,IAAI,OAAO,GAAG;IACd,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,oBAAoB,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,EAAE;IAClF,IAAI,IAAI,CAAC;IACT,IAAI,MAAM,GAAG,GAAG,EAAE;IAClB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;IAC7B;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAClH,IAAI,OAAO,GAAG;IACd,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,uBAAuB,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;IACpD,IAAI,IAAI,CAAC,YAAY,cAAc,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;IAC1E,SAAS,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACpD,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAChD,IAAI,IAAI,GAAG,YAAY,KAAK,EAAE;IAC9B,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC;IAC5C,KAAK;IACL,IAAI;IACJ,IAAI,IAAI;IACR,KAAK,QAAQ,OAAO,GAAG;IACvB,MAAM,KAAK,WAAW,EAAE;IACxB,MAAM,KAAK,SAAS;IACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACjD,OAAO;IACP,MAAM,KAAK,QAAQ;IACnB,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7E,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACzF,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC;IACpG,YAAY,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,0BAA0B,CAAC;IAC7E,YAAY,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC;IACnE,OAAO;IACP,MAAM,KAAK,QAAQ,EAAE;IACrB,OAAO,IAAI,CAAC;IACZ,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB;IACzD,YAAY,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB;IAC5H,YAAY,CAAC,GAAG,IAAI,CAAC,qBAAqB;IAC1C,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,OAAO;IACP,MAAM;IACN,MAAM,KAAK,QAAQ,EAAE;IACrB,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;IACrE,OAAO;IACP,MAAM;IACN,MAAM,KAAK,QAAQ,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE;IACvC,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IACrC,OAAO;IACP,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE;IACjD,OAAO,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;IAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC;IACtF,OAAO;IACP,MAAM;IACN,MAAM,SAAS,KAAK,CAAC,gDAAgD,EAAE,OAAO,GAAG,EAAE,GAAG,CAAC;IACvF;IACA,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI;IACJ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,EAAE;IAC/E,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,oBAAoB,CAAC;IAC/E,GAAG,CAAC;IACJ,GAAG;IACH;IACA;IACA;IACA;IACA,IAAI,MAAM,aAAa,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IACrD,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC9C,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IAC1C,KAAK,IAAI,EAAE,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,sBAAsB,GAAG,EAAE,CAAC;IACrF,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IACtC,KAAK,OAAO,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM;IAC5D,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAChB;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC;IACpG;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC;IACpG;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,cAAc,EAAE,IAAI,KAAK,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,sBAAsB,CAAC;IACxH;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,cAAc,EAAE,IAAI,KAAK,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,sBAAsB,CAAC;IACxH,GAAG;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,qBAAqB,GAAG,SAAS,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE;IAC1E,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI;IAC5C,KAAK,IAAI,WAAW,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7C,KAAK,MAAM,EAAE,GAAG,QAAQ,EAAE;IAC1B,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;IAClC,MAAM,IAAI,CAAC,KAAK,QAAQ,EAAE,MAAM,IAAI,YAAY,CAAC,EAAE,EAAE;IACrD,OAAO,8CAA8C;IACrD,OAAO,QAAQ;IACf,OAAO;IACP,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,MAAM;IACN,KAAK;IACL,KAAK,OAAO,EAAE;IACd,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE;IACzF,KAAK,MAAM,CAAC;IACZ,IAAI;IACJ,GAAG,CAAC;IACJ,GAAG,MAAM,OAAO,GAAG;IACnB,IAAI,cAAc;IAClB,IAAI,YAAY;IAChB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,MAAM;IACV,IAAI,OAAO,EAAE,EAAE,EAAE;IACjB,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,aAAa,EAAE,eAAe,EAAE,GAAG;IACvC,KAAK,IAAI,EAAE,CAAC,OAAO,YAAY,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO;IACzD,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,iBAAiB;IACrC,KAAK,OAAO,IAAI,CAAC,iBAAiB;IAClC,KAAK,MAAM,QAAQ,GAAG,YAAY;IAClC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;IAClC,OAAO,OAAO,OAAO,CAAC,IAAI;IAC1B,OAAO,OAAO,OAAO,CAAC,YAAY;IAClC,OAAO,OAAO,OAAO,CAAC,IAAI;IAC1B,MAAM;IACN,MAAM,OAAO,OAAO;IACpB,KAAK,CAAC;IACN,KAAK,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK;IAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,CAAC;IACb,KAAK,CAAC;IACN,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAC3E,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;IAC1B,MAAM,OAAO,CAAC,YAAY,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAChE,KAAK,CAAC,CAAC;IACP,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IACrC,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC/C,KAAK,OAAO,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACzC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC/B,IAAI,UAAU,EAAE;IAChB,IAAI;IACJ,GAAG,IAAI,WAAW,KAAK,OAAO,kBAAkB,EAAE,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,kBAAkB;IAC9F,GAAG,IAAI;IACP,IAAI,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;IACpD,KAAK,CAAC,CAAC,OAAO,CAAC;IACf,IAAI,CAAC,CAAC;IACN,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IACf,IAAI,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC;IACX,GAAG;IACH,GAAG,OAAO,mBAAmB,CAAC,YAAY;IAC1C,GAAG,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACxC,GAAG,IAAI,WAAW,KAAK,OAAO,qBAAqB,EAAE;IACrD,IAAI,qBAAqB,CAAC,WAAW,CAAC,gCAAgC,EAAE,OAAO,CAAC;IAChF,IAAI,OAAO,CAAC,UAAU,GAAG,qBAAqB;IAC9C,GAAG;IACH,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE;IAC9B,IAAI,IAAI,WAAW,KAAK,OAAO,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,gBAAgB;IAC7F,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,eAAe;IAClD,IAAI,IAAI,EAAE,EAAE;IACZ,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM;IACpC,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ;IACxC,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO;IACtC,IAAI;IACJ,GAAG;IACH;IACA;IACA;IACA;IACA;IACA,GAAG,OAAO,UAAU,CAAC,gBAAgB;IACrC,GAAG,OAAO,UAAU,CAAC,mBAAmB;IACxC,GAAG,OAAO,mBAAmB,CAAC,aAAa;IAC3C,GAAG,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;IAC9C,IAAI,IAAI,WAAW,KAAK,OAAO,qBAAqB,EAAE,qBAAqB,CAAC,WAAW,CAAC,kCAAkC,EAAE,CAAC,CAAC;IAC9H,IAAI,OAAO,CAAC,CAAC,aAAa;IAC1B,IAAI,OAAO,CAAC,CAAC,UAAU;IACvB,IAAI,OAAO,CAAC,CAAC,UAAU;IACvB,IAAI,OAAO,CAAC;IACZ,GAAG,CAAC,CAAC;IACL,EAAE,CAAC;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EAAE,UAAU,CAAC,mBAAmB,CAAC,YAAY,GAAG,EAAE;IAClD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EAAE,UAAU,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,EAAE;IACvD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EAAE,UAAU,CAAC,mBAAmB,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACpE;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EAAE,UAAU,CAAC,mBAAmB,CAAC,OAAO,GAAG,MAAM;IACjD,EAAE,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE;IACrE,GAAG,OAAO,CAAC,OAAO,GAAG;IACrB,IAAI,YAAY,EAAE,QAAQ;IAC1B,IAAI,kBAAkB,EAAE,MAAM;IAC9B,IAAI,UAAU,EAAE,sFAAsF;IACtG,IAAI,iBAAiB,EAAE,KAAK;IAC5B,IAAI,KAAK,EAAE;IACX,KAAK,UAAU,EAAE,kEAAkE;IACnF,KAAK,QAAQ,EAAE,OAAO;IACtB,KAAK,MAAM,EAAE,sCAAsC;IACnD,KAAK,UAAU,EAAE;IACjB;IACA,IAAI;IACJ,EAAE,CAAC,CAAC;IACJ,EAAE,UAAU,CAAC,mBAAmB,GAAG,SAAS,mBAAmB,CAAC,MAAM,EAAE;IAExE,GAAG,IAAI,MAAM,KAAK,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;IAC5F;IACA;IACA,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK;IAC7B,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,GAAG,CAAC;IACJ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE;IACnF,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,WAAW,GAAG,QAAQ,KAAK,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC;IACxD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;IACvB,GAAG;IACH;IACA;IACA;IACA;IACA,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,GAAG,KAAK,GAAG,KAAK;IAC3G,GAAG,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,KAAK,KAAK;IAC7C,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,KAAK,KAAK,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC;IAC7F,GAAG,OAAO,MAAM,CAAC,WAAW;IAC5B,GAAG,OAAO,MAAM,CAAC,SAAS;IAC1B,GAAG,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAClF,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACvF;IACA;IACA,GAAG,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,2CAA2C,CAAC;IAC3H,GAAG,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,WAAW,GAAG,CAAC,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ;IAC5D;IACA;IACA;IACA;IACA,GAAG,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,EAAE;IACtC,IAAI,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAC3B,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC;IAC9C,IAAI,OAAO,EAAE;IACb,GAAG,CAAC;IACJ;IACA,GAAG;IACH,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACrC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;IACzC,KAAK,UAAU,EAAE,IAAI;IACrB,KAAK,GAAG,EAAE,MAAM,KAAK;IACrB,KAAK,GAAG,EAAE,MAAM,IAAI,CAAC,gCAAgC;IACrD,KAAK,CAAC;IACN,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE;IAC3B,KAAK,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;IACxC,MAAM,UAAU,EAAE,IAAI;IACtB,MAAM,GAAG,EAAE,MAAM,GAAG;IACpB,MAAM,GAAG,EAAE,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,iBAAiB;IACvD,MAAM,CAAC;IACP,KAAK,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9K,GAAG;IACH,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;IACjE,IAAI,UAAU,EAAE,IAAI;IACpB,IAAI,YAAY,EAAE,IAAI;IACtB,IAAI,GAAG,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE;IAChC,IAAI,CAAC;IACL;IACA,GAAG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACpC;IACA;IACA,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC;IACrB;IACA;IACA;IACA,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI;IACtB;IACA;IACA,GAAG,KAAK,CAAC,eAAe,GAAG,EAAE;IAC7B;IACA;IACA;IACA,GAAG,KAAK,CAAC,WAAW,GAAG,EAAE;IACzB;IACA;IACA,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK;IACxC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7D,IAAI,OAAO,GAAG;IACd,GAAG,CAAC;IACJ,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;IACxC,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;IAC/C;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK;IAC5B,IAAI,QAAQ,CAAC;IACb,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC;IACxB,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC;IACzB,KAAK,KAAK,KAAK;IACf,KAAK,KAAK,KAAK;IACf,KAAK,KAAK,OAAO,EAAE,OAAO,CAAC;IAC3B,KAAK,KAAK,KAAK;IACf,KAAK,KAAK,KAAK;IACf,KAAK,KAAK,QAAQ,EAAE,OAAO,CAAC;IAC5B,KAAK,KAAK,GAAG,EAAE,OAAO,SAAS;IAC/B,KAAK,SAAS,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM;IAChE;IACA,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,YAAY,GAAG,WAAW;IACnC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,YAAY,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;IACzH,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,KAAK;IAC5E,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;IACjC,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,WAAW,KAAK,OAAO,aAAa,EAAE;IACxE,KAAK,KAAK,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;IACxC,KAAK,KAAK,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,mEAAmE,CAAC;IACpF,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,UAAU;IACjC,IAAI,OAAO,KAAK;IAChB,GAAG,CAAC;IACJ;IACA,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC,KAAK;IAC5C;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC,MAAM;IAC9C;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC,MAAM;IAC9C;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC,OAAO;IAChD;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC,MAAM;IAC9C;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC,OAAO;IAChD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE;IACrD,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,GAAG,YAAY,EAAE;IACxG,IAAI,QAAQ,CAAC;IACb,KAAK,KAAK,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK;IACnC,KAAK,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM;IACrC,KAAK,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM;IACrC,KAAK,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO;IACvC,KAAK,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM;IACrC,KAAK,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO;IACvC,KAAK,KAAK,CAAC,EAAE,OAAO,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;IACjD,KAAK,KAAK,EAAE,EAAE,OAAO,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM;IACpD,KAAK,KAAK,EAAE,EAAE,OAAO,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM;IACpD,KAAK,KAAK,EAAE;IACZ,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM;IAC1D,MAAM;IACN,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,EAAE;IACxC,MAAM,IAAI,CAAC,KAAK,UAAU,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO;IAC9D,WAAW,IAAI,CAAC,KAAK,UAAU,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM;IACjE,MAAM;IACN,KAAK;IACL;IACA,IAAI,IAAI,CAAC,kDAAkD,EAAE,+BAA+B,CAAC;IAC7F,GAAG,CAAC;IACJ,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa;IAC3C,GAAG,OAAO,MAAM,CAAC,aAAa;IAC9B;IACA;IACA;IACA,GAAG,MAAM,CAAC,aAAa,GAAG,WAAW,GAAG,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,yBAAyB;IAC1G;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE;IACzC,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE;IACrC,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;IAChE,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE;IAC/C;IACA;IACA;IACA,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;IACpB,KAAK,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAClD,MAAM,CAAC,EAAE,KAAK;IACd,MAAM,CAAC,EAAE,OAAO;IAChB,MAAM,CAAC,EAAE,OAAO;IAChB,MAAM,CAAC,EAAE,OAAO;IAChB,MAAM,CAAC,EAAE,KAAK;IACd,MAAM,CAAC,EAAE,KAAK;IACd,MAAM,CAAC,EAAE;IACT,MAAM,CAAC;IACP,KAAK,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACnD,MAAM,GAAG,EAAE,GAAG;IACd,MAAM,GAAG,EAAE,GAAG;IACd,MAAM,GAAG,EAAE,GAAG;IACd,MAAM,GAAG,EAAE;IACX,MAAM,CAAC;IACP,KAAK,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK;IACxC,MAAM,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,WAAW,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC;IACN,KAAK,MAAM,EAAE,iBAAiB;IAC9B,KAAK,SAAS,EAAE,CAAC,GAAG,KAAK;IACzB,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,KAAK,CAAC;IACN,KAAK,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAC/E,KAAK,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnF,KAAK;IACL,IAAI,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE;IAClC,KAAK,MAAM,CAAC,GAAG,GAAG;IAClB,KAAK,GAAG,GAAG,IAAI;IACf,KAAK,IAAI,GAAG,CAAC;IACb,IAAI;IACJ,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IACtC,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;IACvD,IAAI,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,SAAS;IACT,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI;IACJ,IAAI,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;IACzD,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACtH,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;IAC3D,IAAI,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,uCAAuC,CAAC;IAC1F,IAAI,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE;IAClC,KAAK,MAAM,CAAC,GAAG,GAAG;IAClB,KAAK,GAAG,GAAG,IAAI;IACf,KAAK,IAAI,GAAG,CAAC;IACb,IAAI;IACJ,IAAI,IAAI,QAAQ,KAAK,OAAO,GAAG,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,EAAE,IAAI,CAAC,4EAA4E,CAAC;IAClJ,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE;IACrC,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC;IACzC,IAAI,IAAI,GAAG;IACX,IAAI,OAAO,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAC/D,KAAK,GAAG,GAAG,IAAI;IACf,KAAK;IACL,IAAI,CAAC,MAAM;IACX,IAAI,IAAI,CAAC,GAAG,EAAE;IACd,KAAK,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI;IACJ,IAAI,IAAI;IACR,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;IACtB,KAAK,IAAI,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/C,KAAK,OAAO,GAAG;IACf,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,IAAI,EAAE,CAAC,YAAY,SAAS,CAAC,EAAE;IACpC,MAAM,IAAI,GAAG,KAAK,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5D,MAAM,MAAM,CAAC;IACb,KAAK;IACL,IAAI;IACJ,IAAI,IAAI;IACR,KAAK,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;IAChD,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;IACtB,KAAK,IAAI,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/C,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IAChB,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3D,KAAK,MAAM,CAAC;IACZ,IAAI;IACJ,IAAI,OAAO,GAAG;IACd,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;IAC9E;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,qBAAqB,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;IACnF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,iBAAiB,GAAG,SAAS,GAAG,EAAE;IAC5C,IAAI,IAAI,CAAC,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,OAAO,MAAM;IAChD,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE;IACrC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;IACnC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1B,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;IACrB,IAAI,OAAO,EAAE;IACb,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE;IAC9C,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO;IAC1C,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,GAAG,YAAY,EAAE;IACxG,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM;IACjD,IAAI,IAAI,EAAE;IACV,IAAI,GAAG;IACP,KAAK,IAAI,IAAI,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;IACzC,KAAK,QAAQ,IAAI;IACjB,MAAM,KAAK,IAAI;IACf,MAAM,KAAK,IAAI;IACf,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO;IACP,MAAM,KAAK,KAAK;IAChB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO;IACP,MAAM,KAAK,KAAK;IAChB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO;IACP,MAAM,KAAK,OAAO;IAClB,MAAM,KAAK,KAAK;IAChB,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO;IACP,MAAM,KAAK,QAAQ;IACnB,MAAM,KAAK,KAAK;IAChB,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,OAAO;IACP,MAAM,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE;IAChC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO;IACP,MAAM;IACN,MAAM,SAAS,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC;IACrD;IACA,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM;IACxC,IAAI,OAAO,IAAI,IAAI,EAAE;IACrB,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE;IACnD,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO;IAC1C,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,GAAG,YAAY,EAAE;IACxG,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI;IAClE,KAAK,KAAK,IAAI;IACd,KAAK,KAAK,IAAI;IACd,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IACrC,MAAM;IACN,KAAK,KAAK,KAAK;IACf,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IACtC,MAAM;IACN,KAAK,KAAK,KAAK;IACf,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IACtC,MAAM;IACN,KAAK,KAAK,OAAO;IACjB,KAAK,KAAK,KAAK;IACf,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IACvC,MAAM;IACN,KAAK,KAAK,QAAQ;IAClB,KAAK,KAAK,KAAK;IACf,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IACvC,MAAM;IACN,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE;IAC/B,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAChD,MAAM;IACN,KAAK;IACL,KAAK,SAAS,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;IACtD;IACA,IAAI,OAAO,IAAI;IACf,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC;IACrF;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;IACxE;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC;IAChF;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;IAC/D;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC;IAClF;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;IACjE;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC;IAClF;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;IACjE;IACA;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC;IAClF;IACA;IACA;IACA,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;IACjE;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC;IACnF;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;IAClE;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC;IACnF;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;IAClE;IACA,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI;IACnC;IACA,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO;IACtC;IACA,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI;IACnC;IACA,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO;IACtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;IACrF;IACA;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,KAAK,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;IACrF;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;IACnE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE;IAClC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;IAC/C,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACrB,IAAI,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,MAAM;IACnC,IAAI,IAAI,GAAG,GAAG,GAAG;IACjB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC;IAC/B,IAAI,OAAO,GAAG,GAAG,GAAG;IACpB,GAAG,CAAC;IACJ;IACA;IACA;IACA,GAAG,MAAM,KAAK,GAAG,WAAW,KAAK,OAAO,iBAAiB,GAAG,WAAW,CAAC,CAAC,GAAG,iBAAiB;IAC7F;IACA;IACA,GAAG,MAAM,kBAAkB,GAAG,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,YAAY,KAAK;IAClF,GAAG,MAAM,CAAC,kBAAkB,GAAG,kBAAkB;IACjD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK;IACvD,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;IACzB,KAAK,IAAI,QAAQ,KAAK,OAAO,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzD,KAAK,IAAI,QAAQ,KAAK,OAAO,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACnD,IAAI;IACJ,IAAI,OAAO,kBAAkB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAC7G,GAAG,CAAC;IACJ,GAAG,MAAM,CAAC,cAAc,GAAG,cAAc;IACzC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1H,GAAG,MAAM,CAAC,kBAAkB,GAAG,kBAAkB;IACjD;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS,GAAG,EAAE;IACnC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;IAC5G,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE;IAClC;IACA,IAAI,IAAI,QAAQ,KAAK,OAAO,GAAG,EAAE,OAAO,IAAI;IAC5C,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM;IACxB,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAChC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAC9F,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG;IACxB,UAAU,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC;IACjC,UAAU,IAAI,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC;IAClC,UAAU,GAAG,IAAI,CAAC;IAClB,IAAI;IACJ,IAAI,OAAO,GAAG;IACd,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE;IAClF;IACA;IACA,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,YAAY,SAAS,CAAC,IAAI,EAAE,GAAG,YAAY,UAAU,CAAC,EAAE,IAAI,CAAC,sDAAsD,CAAC;IACzI,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM;IACpD,IAAI,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;IACnD,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM;IAChC,IAAI,MAAM,KAAK,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,QAAQ,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IACzC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAC/F,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE;IACnB,MAAM,IAAI,MAAM,IAAI,GAAG,EAAE;IACzB,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IACvB,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;IAC3B,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE;IAC7B,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;IAClC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE;IAClC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,EAAE;IAC5B,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE;IAC7B,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;IACnC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;IACvC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE;IAClC,KAAK,CAAC,MAAM;IACZ,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE;IAC7B,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;IACnC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;IACxC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;IACvC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE;IAClC,KAAK;IACL,IAAI;IACJ,IAAI,IAAI,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IACjC,IAAI,OAAO,MAAM,GAAG,KAAK;IACzB,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;IACjD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,0CAA0C,CAAC;IAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7C,SAAS,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;IAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;IACjB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE;IAC7E,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;IACxC,IAAI,OAAO,CAAC;IACZ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,KAAK;IACrD,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;IAC9D,GAAG,CAAC;IACJ,GAAG,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,QAAQ,KAAK;IAC5C,IAAI,IAAI,EAAE,GAAG,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,YAAY,QAAQ,CAAC,EAAE,IAAI,CAAC,wDAAwD,EAAE,aAAa,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC/K,GAAG,CAAC;IACJ,GAAG,MAAM,WAAW,GAAG,SAAS,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE;IAC7E,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC;IACnC,IAAI,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,OAAO,IAAI;IAC7C,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,IAAI,IAAI,MAAM,GAAG,GAAG;IACpB,IAAI,IAAI;IACR,KAAK,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,MAAM;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;IACtC,KAAK,MAAM,GAAG,SAAS;IACvB,KAAK,OAAO,gBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG;IACpD,IAAI,CAAC,SAAS;IACd,KAAK,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,gBAAgB,GAAG,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAChI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,eAAe,GAAG,WAAW;IACvC,IAAI,aAAa,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC5C,IAAI,MAAM,CAAC,GAAG,EAAE;IAChB,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,IAAI,OAAO,CAAC;IACZ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE;IAC3C,IAAI,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAC3C,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;IAChG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,4CAA4C,CAAC;IACjE,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC1F,SAAS,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1B,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,uCAAuC,CAAC;IAChF,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,GAAG,CAAC;IACJ,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE;IACtD,IAAI,YAAY,EAAE,KAAK;IACvB,IAAI,UAAU,EAAE,KAAK;IACrB,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM;IACvC,IAAI,GAAG,EAAE,MAAM,IAAI,CAAC,qCAAqC;IACzD,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,gBAAgB,GAAG,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAClJ,GAAG,MAAM,eAAe,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE;IACpD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACjG,IAAI,IAAI,CAAC,GAAG,CAAC;IACb,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;IACxB,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7H,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK;IAChB,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,mBAAmB,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;IACrE;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;IAChE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;IACvC,IAAI,MAAM,IAAI,GAAG,EAAE;IACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IACnC,KAAK,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACrE,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACjD,IAAI;IACJ,IAAI,OAAO,IAAI;IACf,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE;IAC3C,IAAI,MAAM,CAAC,eAAe,EAAE;IAC5B,IAAI,IAAI;IACR,KAAK,OAAO,IAAI,EAAE;IAClB,IAAI,CAAC,SAAS;IACd,KAAK,MAAM,CAAC,cAAc,EAAE;IAC5B,IAAI;IACJ,GAAG,CAAC;IACJ;IACA,GAAG,MAAM,UAAU,GAAG,SAAS,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;IAC7D,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC,IAAI,MAAM,GAAG,GAAG,WAAW,GAAG,KAAK,GAAG,OAAO;IAC7C,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAC1B,IAAI,IAAI,CAAC,KAAK,OAAO,EAAE,OAAO,CAAC;IAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,EAAE;IACtC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC;IACjD,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAC3B,IAAI;IACJ,IAAI,OAAO,CAAC;IACZ,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;IACnG;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC;IAC/G;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;IAChC,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC;IAC7E,GAAG,CAAC;IACJ,GAAG,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,cAAc,CAAC;IAC9E;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,IAAI,EAAE;IAC3C,IAAI,MAAM,CAAC,GAAG,KAAK,YAAY,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACpE,IAAI,IAAI,EAAE,CAAC,YAAY,QAAQ,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,oBAAoB,CAAC;IACtF,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;IACxF,IAAI,OAAO,CAAC,KAAK,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACpH,GAAG,CAAC;IACJ;IACA;IACA;IACA,GAAG,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACpC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5C;IACA,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,mBAAmB,IAAI,GAAG,EAAE;IACtD;IACA,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,mBAAmB,IAAI,GAAG,EAAE;IACzD;IACA,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;IAC7E,GAAG,MAAM,SAAS,GAAG,WAAW;IAChC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC;IAC/W,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzM,GAAG,KAAK,MAAM,CAAC,IAAI;IACnB,IAAI,IAAI;IACR,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,OAAO;IACX,IAAI,KAAK;IACT,IAAI;IACJ,IAAI,EAAE;IACN,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAC;IAC7F,GAAG;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK;IAC/B,IAAI,OAAO,QAAQ,KAAK,OAAO,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC;IACJ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAC7D,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAK;IACpH,IAAI,IAAI;IACR,KAAK,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IACzC,IAAI,CAAC,SAAS;IACd,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtB,IAAI;IACJ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK;IACvI,IAAI,IAAI;IACR,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IACrD,IAAI,CAAC,SAAS;IACd,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtB,IAAI;IACJ,GAAG,CAAC,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,kBAAkB,GAAG,MAAM;IACpC,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,iBAAiB;IAC9C,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,KAAK,IAAI,CAAC,wCAAwC,CAAC;IACnD,IAAI;IACJ,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,cAAc,GAAG,MAAM,cAAc,SAAS,kBAAkB,CAAC;IACzE,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,KAAK,KAAK,CAAC,GAAG,CAAC;IACf,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,wCAAwC,EAAE,kCAAkC,EAAE,GAAG,CAAC;IACtL,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,SAAS;IACtC,KAAK,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;IACnC,KAAK,IAAI,GAAG,CAAC,UAAU,YAAY,QAAQ,EAAE;IAC7C,MAAM,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;IACtC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,SAAS;IACnD,KAAK;IACL,KAAK,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,oEAAoE,CAAC;IACjH,KAAK,IAAI,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,6BAA6B,GAAG,GAAG,CAAC,OAAO,GAAG,2CAA2C,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC3M,KAAK,IAAI,CAAC,WAAW,GAAG,WAAW,KAAK,IAAI,CAAC,SAAS;IACtD,KAAK,IAAI,CAAC,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC,SAAS;IAClD,KAAK,IAAI,CAAC,WAAW,GAAG,WAAW,KAAK,IAAI,CAAC,SAAS;IACtD,KAAK,IAAI,CAAC,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM;IAClE,KAAK,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,YAAY,QAAQ,GAAG,GAAG,CAAC,SAAS,GAAG,MAAM;IAChF,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE;IAC/B,KAAK,OAAO,IAAI;IAChB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,GAAG,EAAE;IACpB,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,mBAAmB,IAAI,GAAG,EAAE,CAAC;IACxE,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IACzB,KAAK,IAAI,MAAM,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC;IAC5C,KAAK,OAAO,EAAE;IACd,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS;IAC9B,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzF,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;IACnE,KAAK,IAAI,CAAC,YAAY,QAAQ,EAAE;IAChC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,EAAE,GAAG,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;IACvE,MAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,QAAQ,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAClJ,MAAM,IAAI,IAAI,EAAE;IAChB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;IACpB,QAAQ,IAAI,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,QAAQ,CAAC,6BAA6B,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5J,QAAQ,IAAI;IACZ,SAAS,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrB,OAAO;IACP,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;IACnB,MAAM;IACN,MAAM,OAAO,EAAE;IACf,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;IAC/D,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;IAC5C,OAAO,IAAI,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,QAAQ,CAAC,6BAA6B,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3J,OAAO,IAAI;IACX,QAAQ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACpB,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;IACzC,MAAM;IACN,MAAM,OAAO,CAAC,IAAI,SAAS;IAC3B,KAAK,CAAC,MAAM,MAAM,IAAI,SAAS,CAAC,0EAA0E,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,8BAA8B,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACxM,IAAI;IACJ,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK;IACxC;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,KAAK;IAC/C;IACA,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7D;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG;IACpC,IAAI,WAAW;IACf,IAAI,SAAS;IACb,IAAI,WAAW;IACf,IAAI;IACJ,IAAI;IACJ;IACA,GAAG,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAC1F;IACA,GAAG,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAC9F;IACA;IACA;IACA;IACA;IACA,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1E;IACA;IACA;IACA;IACA,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE;IACA;IACA;IACA;IACA;IACA,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM;IAClG;IACA;IACA;IACA;IACA,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM;IAC/F;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE;IACjE,IAAI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,EAAE,MAAM,KAAK,CAAC,2CAA2C;IAChE,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,aAAa,GAAG,KAAK,EAAE;IACnE,IAAI,IAAI,EAAE,KAAK,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,0DAA0D,CAAC;IACnK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,qDAAqD,CAAC;IAClJ,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC;IAC7D,GAAG,CAAC;IACJ;IACA,GAAG,OAAO,CAAC,GAAG,GAAG;IACjB,IAAI,EAAE;IACN,IAAI;IACJ,IAAI;IACJ,EAAE,CAAC,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IA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AK,CAAC,IAAI;IACjB,KAAK;IACL,IAAI;IACJ,IAAI,mBAAmB,CAAC,IAAI,CAAC;IAC7B,IAAI,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjD,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,uBAAuB,GAAG,SAAS,IAAI,EAAE;IAClD,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACxC,IAAI,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;IACxI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;IACrE,KAAK,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC;IAChD,KAAK,OAAO,IAAI;IAChB,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB,GAAG,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,MAAM,uBAAuB,GAAG,SAAS,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ACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG,OAAO,CAAC,qBAAqB,GAAG,eAAe,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACjF,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/E,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;IAChC,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,gBAAgB;IAChE,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI;IACnC,KAAK,OAAO,MAAM,YAAY,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,CAAC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","x_google_ignoreList":[7]}
|