@arcanetech/privacy-sdk-stellar 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transact/pool/service.ts","../../src/transact/merkle/field-decimal.ts","../../src/transact/private-address/codec.ts","../../src/transact/proofs/withdraw/transact-proof.ts","../../src/transact/proofs/transaction-input.ts","../../src/transact/stellar/token-contract.ts","../../src/transact/proofs/confidential/helpers.ts","../../src/transact/encoding/priv-key-scalar-from-recipient-hex.ts","../../src/transact/audit/parameters.ts","../../src/transact/proofs/withdraw/helpers.ts","../../src/transact/stellar/account.ts","../../src/transact/encoding/ephemeral-key.ts","../../src/transact/pool/aligned-deposit.ts","../../src/transact/pool/singleton.ts","../../src/transact/assets/load-browser.ts","../../src/transact/onboarding/build-payload.ts","../../src/transact/encoding/fr-decimal-to-bytes.ts","../../src/transact/onboarding/recipient.ts","../../src/transact/kyt/inspect-error.ts","../../src/contracts/contract-context.ts","../../src/transact/kyt/passage/poll.ts","../../src/transact/kyt/passage/submit.ts","../../src/transact/kyt/passage/inspect.ts","../../src/transact/submit/ttl-preflight.ts","../../src/transact/submit/pool-transact.ts","../../src/transact/submit/soroban-deposit.ts","../../src/transact/submit/soroban-confidential-transfer.ts","../../src/transact/onboarding/recipient-change-deposits.ts","../../src/transact/proofs/confidential/shared.ts","../../src/transact/proofs/confidential/dual.ts","../../src/transact/proofs/confidential/single.ts","../../src/transact/merkle/fetch-contract.ts","../../src/transact/merkle/encoding.ts","../../src/transact/merkle/state-port.ts","../../src/state/foundation/paths.ts","../../src/state/schemas/shared.ts","../../src/state/foundation/coerce.ts","../../src/state/read/normalize/assets.ts","../../src/state/read/normalize/claims.ts","../../src/state/read/normalize/deliveries.ts","../../src/state/read/normalize/pool.ts","../../src/state/read/normalize/registry.ts","../../src/state/read/normalize/records.ts","../../src/state/read/normalize/wallet.ts","../../src/state/filters/register-schemas.ts","../../src/state/filters/ops.ts","../../src/state/bridge/call-types.ts","../../src/state/schemas/assets/catalog.ts","../../src/state/definitions/assets.ts","../../src/state/schemas/assets/balances.ts","../../src/state/foundation/keys.ts","../../src/state/definitions/balances.ts","../../src/state/schemas/claims/write.ts","../../src/state/schemas/claims/page.ts","../../src/state/definitions/claims.ts","../../src/state/schemas/claims/deliveries.ts","../../src/state/definitions/deliveries.ts","../../src/state/schemas/pool/merkle.ts","../../src/state/definitions/pool.ts","../../src/state/schemas/records/private.ts","../../src/state/schemas/records/transactions.ts","../../src/state/definitions/records.ts","../../src/state/schemas/registry/lookup.ts","../../src/state/definitions/registry.ts","../../src/state/definitions/transactions.ts","../../src/state/schemas/wallet/scalar.ts","../../src/state/schemas/wallet/private-address.ts","../../src/state/definitions/wallet.ts","../../src/state/definitions/index.ts","../../src/state/service/base.ts","../../src/state/service/assets/balance-methods.ts","../../src/state/service/assets/upsert-methods.ts","../../src/state/service/assets/catalog-methods.ts","../../src/state/service/assets/index.ts","../../src/state/service/claims/read-methods.ts","../../src/state/service/claims/write-methods.ts","../../src/state/service/claims/index.ts","../../src/state/service/deliveries/incoming-methods.ts","../../src/state/service/deliveries/sync-methods.ts","../../src/state/service/deliveries/index.ts","../../src/state/service/pool/ephemeral.ts","../../src/state/service/pool/merkle.ts","../../src/state/service/records/private-record-upsert.ts","../../src/state/service/records/private-methods.ts","../../src/state/service/records/transaction-methods.ts","../../src/state/service/records/index.ts","../../src/state/service/registry/lookup-read.ts","../../src/state/service/registry/lookup-write.ts","../../src/state/service/registry/lookup.ts","../../src/state/service/registry/wallet-record-methods.ts","../../src/state/service/registry/wallet-scalar-methods.ts","../../src/state/service/registry/wallet-address.ts","../../src/state/service/compose.ts","../../src/state/service/index.ts","../../src/transact/merkle/attach-state-ports.ts"],"sourcesContent":["import {\n PrivacyPoolSDK,\n decodeDecodedEphemeralKey,\n randomFrDecimal253,\n scalarHexToFrDecimal,\n} from '@auditable/privacy-pool-zk-sdk';\nimport type { CoinData, StateFile } from '@auditable/privacy-pool-zk-sdk';\nimport { merkleRootBufferToFrDecimal } from '../merkle/field-decimal.js';\nimport {\n privateAddressSdk,\n recipientPublicKeysDecimalFromPrivateAddress,\n} from '../private-address/codec.js';\nimport {\n proveWithdrawTransact,\n proveWithdrawTransactDual,\n} from '../proofs/withdraw/transact-proof.js';\nimport { Buffer } from 'buffer';\nimport {\n buildPublicDepositLegs,\n withTokenAddressPublicInputs,\n} from '../proofs/transaction-input.js';\nimport {\n buildPoolTransactionAuditParameters,\n resolvePoolApplicationId,\n} from '../audit/parameters.js';\nimport type { StellarBrowserAssets } from '../../types.js';\nimport { PrivacyPoolSDK as PrivacyPoolSdkClass } from '@auditable/privacy-pool-zk-sdk';\nimport type {\n AlignedDepositSlot,\n KytApplicationIdHints,\n ProofResult,\n ProofWithChange,\n} from '../pool/proof-types.js';\nimport { buildAlignedDepositSlotForSdk } from '../pool/aligned-deposit.js';\n\nexport class PrivacyPoolService {\n private sdk: PrivacyPoolSDK | undefined = undefined;\n private initPromise: Promise<void> | undefined = undefined;\n\n constructor(\n private readonly assets?: StellarBrowserAssets,\n private readonly applicationId?: string,\n private readonly auditPublicKey?: [string, string],\n ) {}\n\n private async ensureInit(): Promise<void> {\n if (this.sdk) {\n return;\n }\n if (this.initPromise) {\n return this.initPromise;\n }\n this.initPromise = (async () => {\n if (!this.assets) {\n throw new Error(\n 'PrivacyPoolService requires browser ZK assets before initialization.',\n );\n }\n this.sdk = await PrivacyPoolSdkClass.init({\n wasmBinary: this.assets.sdkWasm,\n circuitWasm: this.assets.circuitWasm,\n zkey: this.assets.provingKey,\n });\n })();\n return this.initPromise;\n }\n\n async getInitializedSdk(): Promise<PrivacyPoolSDK> {\n await this.ensureInit();\n if (!this.sdk) {\n throw new Error('SDK not initialized');\n }\n return this.sdk;\n }\n\n getAuditPublicKey(): [string, string] | undefined {\n return this.auditPublicKey;\n }\n\n getApplicationId(): string {\n return resolvePoolApplicationId(this.applicationId);\n }\n\n async generatePrivateAddressFromStellarSignature(signature: string): Promise<string> {\n await this.ensureInit();\n if (!this.sdk) {\n throw new Error('SDK not initialized');\n }\n return privateAddressSdk(this.sdk).generatePrivateAddressFromStellarSignature(\n signature,\n );\n }\n\n async sharedSecretX(\n recipientScalarHex: string,\n ephemeralKeyEncoded: string,\n ): Promise<string> {\n await this.ensureInit();\n if (!this.sdk) {\n throw new Error('SDK not initialized');\n }\n const ephemeralKey = decodeDecodedEphemeralKey(ephemeralKeyEncoded);\n const shared = this.sdk.sharedSecretFromRecipientPreimage({\n recipientScalar: recipientScalarHex,\n ephemeralKey,\n });\n return shared.x;\n }\n\n async buildAlignedDepositSlot(parameters: {\n privateAddressStpl1: string;\n amountStroops: bigint;\n tokenAddress: string;\n }) {\n const sdk = await this.getInitializedSdk();\n return buildAlignedDepositSlotForSdk(sdk, this.getApplicationId(), parameters);\n }\n\n async createAlignedShieldCoinData(parameters: {\n privateAddressStpl1: string;\n amountStroops: bigint;\n tokenAddress: string;\n }): Promise<Omit<AlignedDepositSlot, 'deposit'>> {\n const { commitment_hex, coin, depositScalarHex, precommitementHex } =\n await this.buildAlignedDepositSlot(parameters);\n return { commitment_hex, coin, depositScalarHex, precommitementHex };\n }\n\n async prepareDepositTransactProof(parameters: {\n privateAddressStpl1: string;\n coin: CoinData;\n depositScalarHex: string;\n merkleRootBytes: Buffer;\n tokenAddress: string;\n }): Promise<ProofResult> {\n const sdk = await this.getInitializedSdk();\n const stateRoot = merkleRootBufferToFrDecimal(parameters.merkleRootBytes);\n const recipientPublicKeys = recipientPublicKeysDecimalFromPrivateAddress(\n parameters.privateAddressStpl1,\n ) as [string, string];\n const applicationId = this.getApplicationId();\n const audit = buildPoolTransactionAuditParameters({\n applicationId,\n ...(this.auditPublicKey ? { auditPublicKey: this.auditPublicKey } : {}),\n });\n const deposit = {\n value: parameters.coin.value,\n nullifier: parameters.coin.nullifier,\n ephemeralKeyScalar: scalarHexToFrDecimal(parameters.depositScalarHex),\n asset: [parameters.coin.asset_hi, parameters.coin.asset_lo] as [string, string],\n applicationId,\n recipientPublicKeys,\n };\n const publicInput = withTokenAddressPublicInputs(\n {\n stateRoot,\n withdrawAddressHi: '0',\n withdrawAddressLo: '0',\n privKeyScalar: randomFrDecimal253(),\n },\n parameters.tokenAddress,\n );\n const proof = await sdk.proveTransaction(\n publicInput as unknown as Parameters<typeof sdk.proveTransaction>[0],\n buildPublicDepositLegs(parameters.tokenAddress, parameters.coin.value),\n ['dummy', 'dummy'],\n [deposit, 'dummy'],\n audit,\n );\n const applicationIdsPlaintext: KytApplicationIdHints = [\n '0',\n '0',\n applicationId,\n '0',\n ];\n return { ...proof, applicationIdsPlaintext };\n }\n\n async calculateNullifierHash(nullifier: string): Promise<string> {\n const sdk = await this.getInitializedSdk();\n return sdk.calculateNullifierHash(nullifier);\n }\n async prepareWithdrawTransactProof(parameters: {\n coin: CoinData;\n state: StateFile;\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n depositorEphemeralKey: string;\n withdrawAmountStroops: bigint;\n changePrivateAddressStpl1: string | undefined;\n tokenAddress: string;\n }): Promise<ProofWithChange> {\n await this.ensureInit();\n if (!this.sdk) {\n throw new Error('SDK not initialized');\n }\n return proveWithdrawTransact({\n sdk: this.sdk,\n applicationId: this.getApplicationId(),\n buildAlignedDepositSlot: (input) => this.buildAlignedDepositSlot(input),\n ...(this.auditPublicKey ? { auditPublicKey: this.auditPublicKey } : {}),\n ...parameters,\n });\n }\n async prepareWithdrawTransactProofDual(parameters: {\n coinA: CoinData;\n coinB: CoinData;\n state: StateFile;\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n depositorEphemeralAKey: string;\n depositorEphemeralBKey: string;\n withdrawAmountStroops: bigint;\n changePrivateAddressStpl1: string | undefined;\n tokenAddress: string;\n }): Promise<ProofWithChange> {\n await this.ensureInit();\n if (!this.sdk) {\n throw new Error('SDK not initialized');\n }\n return proveWithdrawTransactDual({\n sdk: this.sdk,\n applicationId: this.getApplicationId(),\n buildAlignedDepositSlot: (input) => this.buildAlignedDepositSlot(input),\n ...(this.auditPublicKey ? { auditPublicKey: this.auditPublicKey } : {}),\n coinA: parameters.coinA,\n coinB: parameters.coinB,\n state: parameters.state,\n destinationStellarAddress: parameters.destinationStellarAddress,\n privKeyScalarHex: parameters.privKeyScalarHex,\n ephemeralAKey: parameters.depositorEphemeralAKey,\n ephemeralBKey: parameters.depositorEphemeralBKey,\n withdrawAmountStroops: parameters.withdrawAmountStroops,\n changePrivateAddressStpl1: parameters.changePrivateAddressStpl1,\n tokenAddress: parameters.tokenAddress,\n });\n }\n}\n","import { Buffer } from 'buffer';\n\nconst BN254 =\n 21_888_242_871_839_275_222_246_405_745_257_275_088_548_364_400_416_034_343_698_204_186_575_808_495_617n;\nconst MERKLE_ROOT_BYTE_LENGTH = 32;\nconst DECIMAL_STRING_RADIX = 10;\n\nexport function merkleRootBufferToFrDecimal(root: Buffer): string {\n if (root.length !== MERKLE_ROOT_BYTE_LENGTH) {\n throw new Error(\n `expected ${MERKLE_ROOT_BYTE_LENGTH}-byte merkle root, got ${root.length}`,\n );\n }\n const hex = Buffer.from(root).toString('hex');\n return (BigInt(`0x${hex}`) % BN254).toString(DECIMAL_STRING_RADIX);\n}\n","import {\n buildStealthAddressSignMessage,\n decodeStealthAddress,\n encodeStealthAddress,\n recipientPublicKeysDecimalFromStealthAddress,\n} from '@auditable/privacy-pool-zk-sdk';\nimport type { PrivacyPoolSDK } from '@auditable/privacy-pool-zk-sdk';\nexport { DEFAULT_STEALTH_SIGN_NONCE as DEFAULT_PRIVATE_ADDRESS_SIGN_NONCE } from '@auditable/privacy-pool-zk-sdk';\n\ntype DecodedPrivateAddress = { x: string; y: string };\ntype PrivateAddressDecoder = (value: string) => DecodedPrivateAddress;\ntype PrivateAddressEncoder = (decoded: DecodedPrivateAddress) => string;\ntype PrivateAddressPublicKeyReader = (value: string) => unknown;\ntype PrivateAddressMessageBuilder = (publicKey: string, nonce: string) => string;\ntype PrivateAddressGenerator = (signature: string) => string | Promise<string>;\n\ntype PrivateAddressSdk = {\n generatePrivateAddressFromStellarSignature: PrivateAddressGenerator;\n};\n\ntype PrivacyPoolSdkPrivateAddressMethods = {\n generateStealthAddressFromStellarSignature?: PrivateAddressGenerator;\n};\n\nexport function buildPrivateAddressSignMessage(\n publicKey: string,\n nonce: string,\n): string {\n const buildMessage: PrivateAddressMessageBuilder = buildStealthAddressSignMessage;\n return buildMessage(publicKey, nonce);\n}\n\nexport function decodePrivateAddress(value: string): DecodedPrivateAddress {\n const decodeAddress: PrivateAddressDecoder = decodeStealthAddress;\n return decodeAddress(value);\n}\n\nexport function encodePrivateAddress(decoded: DecodedPrivateAddress): string {\n const encodeAddress: PrivateAddressEncoder = encodeStealthAddress;\n return encodeAddress(decoded);\n}\n\nexport function encodePrivateAddressFromHexCoordinates(\n publicKeyXHex: string,\n publicKeyYHex: string,\n): string {\n return encodePrivateAddress(\n Object.fromEntries([\n ['x', publicKeyXHex],\n ['y', publicKeyYHex],\n ]) as DecodedPrivateAddress,\n );\n}\n\nexport function recipientPublicKeysDecimalFromPrivateAddress(value: string): unknown {\n const readPublicKeys: PrivateAddressPublicKeyReader =\n recipientPublicKeysDecimalFromStealthAddress;\n return readPublicKeys(value);\n}\n\nexport function privateAddressSdk(sdk: PrivacyPoolSDK): PrivateAddressSdk {\n const generator = (sdk as unknown as PrivacyPoolSdkPrivateAddressMethods)\n .generateStealthAddressFromStellarSignature;\n if (typeof generator !== 'function') {\n throw new TypeError(\n 'Missing privacy pool SDK method: generateStealthAddressFromStellarSignature',\n );\n }\n return {\n generatePrivateAddressFromStellarSignature: (signature) =>\n generator.call(sdk, signature),\n };\n}\n","import { withdrawObjectFromMerkleWitness } from '@auditable/privacy-pool-zk-sdk';\nimport type {\n CoinData,\n PrivacyPoolSDK,\n StateFile,\n} from '@auditable/privacy-pool-zk-sdk';\nimport { buildPublicWithdrawLegs } from '../../proofs/transaction-input.js';\nimport {\n leafEphemeralCoords,\n MIN_CONFIDENTIAL_TRANSFER_STROOPS,\n} from '../../proofs/confidential/helpers.js';\nimport { buildPoolTransactionAuditParameters } from '../../audit/parameters.js';\nimport {\n buildWithdrawPublicInput,\n prepareDualWithdrawProofInputs,\n resolveWithdrawChangeDeposits,\n type AlignedDepositSlotBuilder,\n type DualWithdrawProofParameters,\n type WithdrawChangeCoin,\n} from '../../proofs/withdraw/helpers.js';\nimport type { KytApplicationIdHints } from '../../pool/proof-types.js';\nimport { parseEphemeralKeyString } from '../../encoding/ephemeral-key.js';\n\nfunction validateSingleWithdrawAmounts(\n withdrawAmountStroops: bigint,\n noteStroops: bigint,\n): bigint {\n if (withdrawAmountStroops < MIN_CONFIDENTIAL_TRANSFER_STROOPS) {\n throw new Error('Withdraw amount must be positive');\n }\n if (withdrawAmountStroops > noteStroops) {\n throw new Error('Withdraw amount exceeds note value');\n }\n return noteStroops - withdrawAmountStroops;\n}\n\nasync function proveSingleWithdrawTransaction(parameters: {\n sdk: PrivacyPoolSDK;\n publicInput: ReturnType<typeof buildWithdrawPublicInput>;\n audit: ReturnType<typeof buildPoolTransactionAuditParameters>;\n primaryWithdraw: ReturnType<typeof withdrawObjectFromMerkleWitness>;\n deposits: Awaited<ReturnType<typeof resolveWithdrawChangeDeposits>>['deposits'];\n tokenAddress: string;\n withdrawAmountStroops: bigint;\n}) {\n return parameters.sdk.proveTransaction(\n parameters.publicInput as unknown as Parameters<\n typeof parameters.sdk.proveTransaction\n >[0],\n buildPublicWithdrawLegs(\n parameters.tokenAddress,\n parameters.withdrawAmountStroops.toString(),\n ),\n [parameters.primaryWithdraw, 'dummy'],\n parameters.deposits,\n parameters.audit,\n );\n}\n\nfunction buildPrimaryWithdrawForCoin(parameters: {\n sdk: PrivacyPoolSDK;\n applicationId: string;\n coin: CoinData;\n state: StateFile;\n depositorEphemeralKey: string;\n}) {\n const ephemeralPoint = parseEphemeralKeyString(parameters.depositorEphemeralKey);\n const witness = parameters.sdk.buildWithdrawMerkleWitness(\n parameters.coin,\n parameters.state,\n );\n const primaryWithdraw = withdrawObjectFromMerkleWitness(\n witness,\n leafEphemeralCoords(ephemeralPoint.xHex, ephemeralPoint.yHex),\n parameters.applicationId,\n );\n return { witness, primaryWithdraw };\n}\n\nasync function prepareSingleWithdrawProofInputs(parameters: {\n sdk: PrivacyPoolSDK;\n applicationId: string;\n buildAlignedDepositSlot: AlignedDepositSlotBuilder;\n coin: CoinData;\n state: StateFile;\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n depositorEphemeralKey: string;\n withdrawAmountStroops: bigint;\n changePrivateAddressStpl1: string | undefined;\n tokenAddress: string;\n auditPublicKey?: [string, string];\n}) {\n const noteStroops = BigInt(parameters.coin.value);\n const changeStroops = validateSingleWithdrawAmounts(\n parameters.withdrawAmountStroops,\n noteStroops,\n );\n const { witness, primaryWithdraw } = buildPrimaryWithdrawForCoin(parameters);\n const { deposits, changeCoin } = await resolveWithdrawChangeDeposits({\n changeStroops,\n changePrivateAddressStpl1: parameters.changePrivateAddressStpl1,\n buildAlignedDepositSlot: parameters.buildAlignedDepositSlot,\n tokenAddress: parameters.tokenAddress,\n });\n const publicInput = buildWithdrawPublicInput({\n stateRoot: witness.stateRoot,\n destinationStellarAddress: parameters.destinationStellarAddress,\n privKeyScalarHex: parameters.privKeyScalarHex,\n tokenAddress: parameters.tokenAddress,\n });\n const audit = buildPoolTransactionAuditParameters({\n applicationId: parameters.applicationId,\n ...(parameters.auditPublicKey ? { auditPublicKey: parameters.auditPublicKey } : {}),\n });\n return {\n primaryWithdraw,\n deposits,\n changeCoin,\n publicInput,\n audit,\n };\n}\n\nexport async function proveWithdrawTransact(parameters: {\n sdk: PrivacyPoolSDK;\n applicationId: string;\n buildAlignedDepositSlot: AlignedDepositSlotBuilder;\n coin: CoinData;\n state: StateFile;\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n depositorEphemeralKey: string;\n withdrawAmountStroops: bigint;\n changePrivateAddressStpl1: string | undefined;\n tokenAddress: string;\n auditPublicKey?: [string, string];\n}): Promise<{\n proof_hex: string;\n public_hex: string;\n applicationIdsPlaintext: KytApplicationIdHints;\n changeCoin?: WithdrawChangeCoin;\n}> {\n const { primaryWithdraw, deposits, changeCoin, publicInput, audit } =\n await prepareSingleWithdrawProofInputs(parameters);\n const proof = await proveSingleWithdrawTransaction({\n sdk: parameters.sdk,\n publicInput,\n audit,\n primaryWithdraw,\n deposits,\n tokenAddress: parameters.tokenAddress,\n withdrawAmountStroops: parameters.withdrawAmountStroops,\n });\n return {\n ...proof,\n applicationIdsPlaintext: [\n parameters.applicationId,\n '0',\n changeCoin ? parameters.applicationId : '0',\n '0',\n ],\n ...(changeCoin ? { changeCoin } : {}),\n };\n}\n\nexport async function proveWithdrawTransactDual(\n parameters: DualWithdrawProofParameters & { applicationId: string },\n): Promise<{\n proof_hex: string;\n public_hex: string;\n applicationIdsPlaintext: KytApplicationIdHints;\n changeCoin?: WithdrawChangeCoin;\n}> {\n const { publicInput, audit, withdrawLegs, deposits, changeCoin } =\n await prepareDualWithdrawProofInputs(parameters);\n const proof = await parameters.sdk.proveTransaction(\n publicInput as unknown as Parameters<typeof parameters.sdk.proveTransaction>[0],\n buildPublicWithdrawLegs(\n parameters.tokenAddress,\n parameters.withdrawAmountStroops.toString(),\n ),\n withdrawLegs,\n deposits,\n audit,\n );\n return {\n ...proof,\n applicationIdsPlaintext: [\n audit.applicationId,\n audit.applicationId,\n changeCoin ? audit.applicationId : '0',\n '0',\n ],\n ...(changeCoin ? { changeCoin } : {}),\n };\n}\n\nexport { type AlignedDepositSlotBuilder } from '../../proofs/withdraw/helpers.js';\n","import { Buffer } from 'buffer';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport { resolveTokenContractId } from '../stellar/token-contract.js';\n\nexport interface TransactionPublicLegParameters {\n publicWithdrawnAssets: Array<[string, string]>;\n publicDepositedAssets: Array<[string, string]>;\n publicDeposits: string[];\n publicWithdrawals: string[];\n}\n\ntype BasePublicInput = {\n stateRoot: string;\n withdrawAddressHi: string;\n withdrawAddressLo: string;\n privKeyScalar: string;\n};\n\nconst CONTRACT_ADDRESS_HALF_BYTES = 16;\nconst CONTRACT_ADDRESS_BYTES = 32;\n\nfunction bytes16ToDecimal(bytes: Uint8Array): string {\n return BigInt(`0x${Buffer.from(bytes).toString('hex')}`).toString();\n}\n\nfunction decimalToBytes16(value: string): Buffer {\n const hex = BigInt(value)\n .toString(16)\n .padStart(CONTRACT_ADDRESS_HALF_BYTES * 2, '0');\n if (hex.length > CONTRACT_ADDRESS_HALF_BYTES * 2) {\n throw new Error('Asset leg does not fit into 16 bytes.');\n }\n return Buffer.from(hex, 'hex');\n}\n\nfunction tokenAddressFrParts(tokenAddress: string): { hi: string; lo: string } {\n const normalized = resolveTokenContractId(tokenAddress);\n const payload = StrKey.decodeContract(normalized);\n const hi = bytes16ToDecimal(payload.subarray(0, CONTRACT_ADDRESS_HALF_BYTES));\n const lo = bytes16ToDecimal(\n payload.subarray(CONTRACT_ADDRESS_HALF_BYTES, CONTRACT_ADDRESS_BYTES),\n );\n return { hi, lo };\n}\n\nexport function withTokenAddressPublicInputs(\n base: BasePublicInput,\n tokenAddress: string,\n): Record<string, string> {\n const { hi, lo } = tokenAddressFrParts(tokenAddress);\n return {\n ...base,\n tokenAddressHi: hi,\n tokenAddressLo: lo,\n };\n}\n\nexport function tokenAddressToAssetLeg(tokenAddress: string): [string, string] {\n const { hi, lo } = tokenAddressFrParts(tokenAddress);\n return [hi, lo];\n}\n\nexport function assetLegToTokenAddress(assetHi: string, assetLo: string): string {\n const payload = Buffer.concat([decimalToBytes16(assetHi), decimalToBytes16(assetLo)]);\n return StrKey.encodeContract(payload);\n}\n\nexport function buildZeroPublicLegs(): TransactionPublicLegParameters {\n return {\n publicWithdrawnAssets: [['0', '0']],\n publicDepositedAssets: [['0', '0']],\n publicDeposits: ['0'],\n publicWithdrawals: ['0'],\n };\n}\n\nexport function buildPublicDepositLegs(\n tokenAddress: string,\n amount: string,\n): TransactionPublicLegParameters {\n const legs = buildZeroPublicLegs();\n return {\n ...legs,\n publicDepositedAssets: [tokenAddressToAssetLeg(tokenAddress)],\n publicDeposits: [amount],\n };\n}\n\nexport function buildPublicWithdrawLegs(\n tokenAddress: string,\n amount: string,\n): TransactionPublicLegParameters {\n const legs = buildZeroPublicLegs();\n return {\n ...legs,\n publicWithdrawnAssets: [tokenAddressToAssetLeg(tokenAddress)],\n publicWithdrawals: [amount],\n };\n}\n","import { Buffer } from 'buffer';\nimport { StrKey } from '@stellar/stellar-sdk';\n\nconst CONTRACT_ID_BYTE_LENGTH = 32;\nconst HEX_CHARS_PER_BYTE = 2;\nconst CONTRACT_ID_HEX_CHAR_LENGTH = CONTRACT_ID_BYTE_LENGTH * HEX_CHARS_PER_BYTE;\nconst CONTRACT_ID_HEX = /^(?:0x)?([0-9a-f]{64})$/i;\n\nfunction encodeContractFromHex(hexPayload: string): string {\n return StrKey.encodeContract(Buffer.from(hexPayload, 'hex'));\n}\n\nfunction normalizeSorobanContractId(raw: string): string {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n throw new Error('Contract ID is empty');\n }\n if (StrKey.isValidContract(trimmed)) {\n return trimmed;\n }\n const hexMatch = CONTRACT_ID_HEX.exec(trimmed);\n const hexPayload = hexMatch?.[1];\n if (hexPayload !== undefined && hexPayload.length === CONTRACT_ID_HEX_CHAR_LENGTH) {\n return encodeContractFromHex(hexPayload);\n }\n throw new Error(`Invalid Soroban contract address: ${trimmed}`);\n}\n\nexport function resolveTokenContractId(\n tokenContractRaw: string | null | undefined,\n): string {\n const raw = tokenContractRaw?.trim();\n if (!raw) {\n throw new Error('Selected asset has no client contract');\n }\n return normalizeSorobanContractId(raw);\n}\n","import {\n ed25519PubkeyPayloadHexToWithdrawFrDecimals,\n withdrawObjectFromMerkleWitness,\n} from '@auditable/privacy-pool-zk-sdk';\nimport type {\n CoinData,\n PrivacyPoolSDK,\n StateFile,\n} from '@auditable/privacy-pool-zk-sdk';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport { Buffer } from 'buffer';\nimport { privKeyScalarDecimalFromRecipientScalarHex } from '../../encoding/priv-key-scalar-from-recipient-hex.js';\n\nexport const MIN_CONFIDENTIAL_TRANSFER_STROOPS = 1n;\nexport const ZERO_STROOPS = 0n;\n\ntype LeafEphemeralCoords = { x: string; y: string };\n\nexport function leafEphemeralCoords(xHex: string, yHex: string): LeafEphemeralCoords {\n const coords = {} as LeafEphemeralCoords;\n Object.defineProperty(coords, 'x', {\n value: xHex,\n enumerable: true,\n writable: true,\n });\n Object.defineProperty(coords, 'y', {\n value: yHex,\n enumerable: true,\n writable: true,\n });\n return coords;\n}\n\nexport function withdrawWitnessForCoin(parameters: {\n sdk: PrivacyPoolSDK;\n coin: CoinData;\n state: StateFile;\n xHex: string;\n yHex: string;\n applicationId: string;\n}) {\n const { sdk, coin, state, xHex, yHex } = parameters;\n const witness = sdk.buildWithdrawMerkleWitness(coin, state);\n const withdrawApplicationId = coin.application_id ?? parameters.applicationId;\n const withdrawObject = withdrawObjectFromMerkleWitness(\n witness,\n leafEphemeralCoords(xHex, yHex),\n withdrawApplicationId,\n );\n return { witness, withdrawObject };\n}\n\nexport function dualWithdrawLegsWithSharedRoot(parameters: {\n sdk: PrivacyPoolSDK;\n coinA: CoinData;\n coinB: CoinData;\n state: StateFile;\n ephemeralA: { xHex: string; yHex: string };\n ephemeralB: { xHex: string; yHex: string };\n applicationId: string;\n}) {\n const legA = withdrawWitnessForCoin({\n sdk: parameters.sdk,\n coin: parameters.coinA,\n state: parameters.state,\n xHex: parameters.ephemeralA.xHex,\n yHex: parameters.ephemeralA.yHex,\n applicationId: parameters.applicationId,\n });\n const legB = withdrawWitnessForCoin({\n sdk: parameters.sdk,\n coin: parameters.coinB,\n state: parameters.state,\n xHex: parameters.ephemeralB.xHex,\n yHex: parameters.ephemeralB.yHex,\n applicationId: parameters.applicationId,\n });\n if (legA.witness.stateRoot !== legB.witness.stateRoot) {\n throw new Error('Merkle state root mismatch between input coins');\n }\n return { legA, legB };\n}\n\nexport function senderWithdrawFrAndScalar(parameters: {\n senderGAddress: string;\n senderPrivKeyScalarHex: string;\n}): {\n hi: string;\n lo: string;\n privKeyScalar: string;\n} {\n const pkRaw = StrKey.decodeEd25519PublicKey(parameters.senderGAddress);\n const pkHex = Buffer.from(pkRaw).toString('hex');\n const { hi, lo } = ed25519PubkeyPayloadHexToWithdrawFrDecimals(pkHex);\n const privKeyScalar = privKeyScalarDecimalFromRecipientScalarHex(\n parameters.senderPrivKeyScalarHex,\n );\n return { hi, lo, privKeyScalar };\n}\n\nexport function requireChangeRecipientWhenPartial(\n changeStroops: bigint,\n selfPrivateAddressStpl1ForChange: string | undefined,\n): void {\n if (changeStroops > ZERO_STROOPS) {\n const stpl1 = selfPrivateAddressStpl1ForChange?.trim() ?? '';\n if (!stpl1) {\n throw new Error(\n 'Private address is required to receive the remaining balance after a partial transfer',\n );\n }\n }\n}\n\nexport function changeStroopsAfterDualTransfer(\n transferStroops: bigint,\n totalNotes: bigint,\n): bigint {\n if (transferStroops < MIN_CONFIDENTIAL_TRANSFER_STROOPS) {\n throw new Error('Transfer amount must be positive');\n }\n if (transferStroops > totalNotes) {\n throw new Error('Transfer amount exceeds combined note value');\n }\n return totalNotes - transferStroops;\n}\n","import { BN254_BABYJUB_SCALAR_MAX_EXCLUSIVE } from '@auditable/privacy-pool-zk-sdk';\n\nconst SCALAR_HEX_CHAR_LENGTH = 64;\nconst DECIMAL_RADIX = 10;\nconst BIGINT_ONE = 1n;\n\nfunction normalizeRecipientScalarHex(hexInput: string): string {\n const trimmed = hexInput.trim().replace(/^0x/iu, '');\n if (!/^[0-9a-f]*$/iu.test(trimmed)) {\n throw new Error('recipient scalar hex must be hexadecimal');\n }\n const withLeadingNibble = trimmed.length % 2 === 0 ? trimmed : `0${trimmed}`;\n const lower = withLeadingNibble.toLowerCase();\n const padded = lower\n .padStart(SCALAR_HEX_CHAR_LENGTH, '0')\n .slice(-SCALAR_HEX_CHAR_LENGTH);\n if (padded.length !== SCALAR_HEX_CHAR_LENGTH) {\n throw new Error(\n `recipient scalar hex must fit 32 bytes (${SCALAR_HEX_CHAR_LENGTH} hex chars)`,\n );\n }\n return padded;\n}\n\nexport function privKeyScalarDecimalFromRecipientScalarHex(hexInput: string): string {\n const hex = normalizeRecipientScalarHex(hexInput);\n const value = BigInt(`0x${hex}`);\n const mask = BN254_BABYJUB_SCALAR_MAX_EXCLUSIVE - BIGINT_ONE;\n return (value & mask).toString(DECIMAL_RADIX);\n}\n","import {\n DEMO_AUDIT_PUBLIC_KEY,\n resolveTransactionAuditParams,\n type AuditPublicKey,\n type TransactionAuditParams,\n} from '@auditable/privacy-pool-zk-sdk';\nimport { Buffer } from 'buffer';\n\nconst UNCOMPRESSED_PREFIX = '04';\nconst UNCOMPRESSED_HEX_LENGTH = 130;\nconst XY_HEX_LENGTH = 128;\nconst X_OFFSET_END = 32;\nconst Y_OFFSET_START = 32;\nconst Y_OFFSET_END = 64;\nconst DECIMAL_RADIX = 10;\nconst BN254_FR_MODULUS =\n 21_888_242_871_839_275_222_246_405_745_257_275_088_548_364_400_416_034_343_698_204_186_575_808_495_617n;\nconst BABYJUBJUB_A = 168_700n;\nconst BABYJUBJUB_D = 168_696n;\nconst BABYJUB_CURVE_ONE = 1n;\n\nfunction passesBabyJubCurveCheck(coordinateX: bigint, coordinateY: bigint): boolean {\n const xSquared = (coordinateX * coordinateX) % BN254_FR_MODULUS;\n const ySquared = (coordinateY * coordinateY) % BN254_FR_MODULUS;\n const lhs = (BABYJUBJUB_A * xSquared + ySquared) % BN254_FR_MODULUS;\n const rhs =\n (BABYJUB_CURVE_ONE + BABYJUBJUB_D * xSquared * ySquared) % BN254_FR_MODULUS;\n return lhs === rhs;\n}\n\nexport function parseAuditPublicKeyFromEnvHex(raw: string): AuditPublicKey {\n const normalized = raw.replace(/^0x/i, '');\n const payload =\n normalized.length === UNCOMPRESSED_HEX_LENGTH &&\n normalized.startsWith(UNCOMPRESSED_PREFIX)\n ? normalized.slice(UNCOMPRESSED_PREFIX.length)\n : normalized;\n if (payload.length !== XY_HEX_LENGTH || !/^[\\da-fA-F]+$/.test(payload)) {\n throw new Error(\n 'Audit public key must be uncompressed 65-byte hex (04 + X + Y) or 64-byte X+Y hex',\n );\n }\n const bytes = Buffer.from(payload, 'hex');\n const auditPublicKeyXDecimal = BigInt(\n `0x${bytes.subarray(0, X_OFFSET_END).toString('hex')}`,\n ).toString(DECIMAL_RADIX);\n const auditPublicKeyYDecimal = BigInt(\n `0x${bytes.subarray(Y_OFFSET_START, Y_OFFSET_END).toString('hex')}`,\n ).toString(DECIMAL_RADIX);\n if (\n !passesBabyJubCurveCheck(\n BigInt(auditPublicKeyXDecimal),\n BigInt(auditPublicKeyYDecimal),\n )\n ) {\n throw new Error('Audit public key is not a valid BabyJubJub point.');\n }\n return [auditPublicKeyXDecimal, auditPublicKeyYDecimal];\n}\n\nexport function buildPoolTransactionAuditParameters(input: {\n applicationId: string;\n auditPublicKey?: AuditPublicKey;\n}): TransactionAuditParams {\n return resolveTransactionAuditParams(\n input.applicationId,\n input.auditPublicKey ?? DEMO_AUDIT_PUBLIC_KEY,\n );\n}\n\nexport function resolvePoolApplicationId(applicationId: string | undefined): string {\n const trimmed = applicationId?.trim();\n if (!trimmed) {\n throw new Error(\n 'Privacy pool applicationId is required. Pass it in client factory config.',\n );\n }\n return trimmed;\n}\n","import { ed25519PubkeyPayloadHexToWithdrawFrDecimals } from '@auditable/privacy-pool-zk-sdk';\nimport type {\n CoinData,\n DepositObject,\n DepositSlot,\n PrivacyPoolSDK,\n StateFile,\n WithdrawObject,\n} from '@auditable/privacy-pool-zk-sdk';\nimport {\n dualWithdrawLegsWithSharedRoot,\n MIN_CONFIDENTIAL_TRANSFER_STROOPS,\n requireChangeRecipientWhenPartial,\n ZERO_STROOPS,\n} from '../../proofs/confidential/helpers.js';\nimport { ed25519PublicKeyHexFromStellarAccount } from '../../stellar/account.js';\nimport { privKeyScalarDecimalFromRecipientScalarHex } from '../../encoding/priv-key-scalar-from-recipient-hex.js';\nimport { withTokenAddressPublicInputs } from '../../proofs/transaction-input.js';\nimport { buildPoolTransactionAuditParameters } from '../../audit/parameters.js';\nimport type { TransactionAuditParams } from '@auditable/privacy-pool-zk-sdk';\nimport { parseEphemeralKeyString } from '../../encoding/ephemeral-key.js';\n\nexport type AlignedDepositSlotBuilder = (parameters: {\n privateAddressStpl1: string;\n amountStroops: bigint;\n tokenAddress: string;\n}) => Promise<{\n deposit: DepositObject;\n commitment_hex: string;\n coin: CoinData;\n depositScalarHex: string;\n precommitementHex: string;\n}>;\n\nexport type WithdrawChangeCoin = {\n commitment_hex: string;\n coin: CoinData;\n depositScalarHex: string;\n precommitementHex: string;\n};\n\nexport type DualWithdrawProofParameters = {\n sdk: PrivacyPoolSDK;\n buildAlignedDepositSlot: AlignedDepositSlotBuilder;\n coinA: CoinData;\n coinB: CoinData;\n state: StateFile;\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n ephemeralAKey: string;\n ephemeralBKey: string;\n withdrawAmountStroops: bigint;\n changePrivateAddressStpl1: string | undefined;\n tokenAddress: string;\n auditPublicKey?: [string, string];\n};\n\nfunction destinationWithdrawFrAndScalar(parameters: {\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n}): {\n hi: string;\n lo: string;\n privKeyScalar: string;\n} {\n const pkHex = ed25519PublicKeyHexFromStellarAccount(\n parameters.destinationStellarAddress,\n );\n const { hi, lo } = ed25519PubkeyPayloadHexToWithdrawFrDecimals(pkHex);\n const privKeyScalar = privKeyScalarDecimalFromRecipientScalarHex(\n parameters.privKeyScalarHex,\n );\n return { hi, lo, privKeyScalar };\n}\n\nexport function buildWithdrawPublicInput(parameters: {\n stateRoot: string;\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n tokenAddress: string;\n}): ReturnType<typeof withTokenAddressPublicInputs> {\n const { hi, lo, privKeyScalar } = destinationWithdrawFrAndScalar({\n destinationStellarAddress: parameters.destinationStellarAddress,\n privKeyScalarHex: parameters.privKeyScalarHex,\n });\n return withTokenAddressPublicInputs(\n {\n stateRoot: parameters.stateRoot,\n withdrawAddressHi: hi,\n withdrawAddressLo: lo,\n privKeyScalar,\n },\n parameters.tokenAddress,\n );\n}\n\nexport async function resolveWithdrawChangeDeposits(parameters: {\n changeStroops: bigint;\n changePrivateAddressStpl1: string | undefined;\n buildAlignedDepositSlot: AlignedDepositSlotBuilder;\n tokenAddress: string;\n}): Promise<{\n deposits: [DepositSlot, DepositSlot];\n changeCoin?: WithdrawChangeCoin;\n}> {\n if (parameters.changeStroops <= ZERO_STROOPS) {\n return { deposits: ['dummy', 'dummy'] };\n }\n const stpl1 = parameters.changePrivateAddressStpl1?.trim() ?? '';\n if (!stpl1) {\n throw new Error(\n 'Private address is required to return the unused balance to the pool (partial withdraw)',\n );\n }\n const slot = await parameters.buildAlignedDepositSlot({\n privateAddressStpl1: stpl1,\n amountStroops: parameters.changeStroops,\n tokenAddress: parameters.tokenAddress,\n });\n return {\n deposits: [slot.deposit, 'dummy'],\n changeCoin: {\n commitment_hex: slot.commitment_hex,\n coin: slot.coin,\n depositScalarHex: slot.depositScalarHex,\n precommitementHex: slot.precommitementHex,\n },\n };\n}\n\nfunction validateDualWithdrawAmounts(\n withdrawAmountStroops: bigint,\n totalNotes: bigint,\n changePrivateAddressStpl1: string | undefined,\n): bigint {\n if (withdrawAmountStroops < MIN_CONFIDENTIAL_TRANSFER_STROOPS) {\n throw new Error('Withdraw amount must be positive');\n }\n if (withdrawAmountStroops > totalNotes) {\n throw new Error('Withdraw amount exceeds combined note value');\n }\n const changeStroops = totalNotes - withdrawAmountStroops;\n requireChangeRecipientWhenPartial(changeStroops, changePrivateAddressStpl1);\n return changeStroops;\n}\n\nfunction buildDualWithdrawPublicInput(parameters: {\n destinationStellarAddress: string;\n privKeyScalarHex: string;\n tokenAddress: string;\n stateRoot: string;\n}): ReturnType<typeof withTokenAddressPublicInputs> {\n return buildWithdrawPublicInput({\n stateRoot: parameters.stateRoot,\n destinationStellarAddress: parameters.destinationStellarAddress,\n privKeyScalarHex: parameters.privKeyScalarHex,\n tokenAddress: parameters.tokenAddress,\n });\n}\n\nexport async function prepareDualWithdrawProofInputs(\n parameters: DualWithdrawProofParameters & { applicationId: string },\n): Promise<{\n publicInput: ReturnType<typeof withTokenAddressPublicInputs>;\n audit: TransactionAuditParams;\n withdrawLegs: [WithdrawObject, WithdrawObject];\n deposits: [DepositSlot, DepositSlot];\n changeCoin?: WithdrawChangeCoin;\n}> {\n const totalNotes = BigInt(parameters.coinA.value) + BigInt(parameters.coinB.value);\n const changeStroops = validateDualWithdrawAmounts(\n parameters.withdrawAmountStroops,\n totalNotes,\n parameters.changePrivateAddressStpl1,\n );\n const { legA, legB } = dualWithdrawLegsWithSharedRoot({\n sdk: parameters.sdk,\n coinA: parameters.coinA,\n coinB: parameters.coinB,\n state: parameters.state,\n ephemeralA: parseEphemeralKeyString(parameters.ephemeralAKey),\n ephemeralB: parseEphemeralKeyString(parameters.ephemeralBKey),\n applicationId: parameters.applicationId,\n });\n const { deposits, changeCoin } = await resolveWithdrawChangeDeposits({\n changeStroops,\n changePrivateAddressStpl1: parameters.changePrivateAddressStpl1,\n buildAlignedDepositSlot: parameters.buildAlignedDepositSlot,\n tokenAddress: parameters.tokenAddress,\n });\n const publicInput = buildDualWithdrawPublicInput({\n destinationStellarAddress: parameters.destinationStellarAddress,\n privKeyScalarHex: parameters.privKeyScalarHex,\n tokenAddress: parameters.tokenAddress,\n stateRoot: legA.witness.stateRoot,\n });\n const audit = buildPoolTransactionAuditParameters({\n applicationId: parameters.applicationId,\n ...(parameters.auditPublicKey ? { auditPublicKey: parameters.auditPublicKey } : {}),\n });\n return {\n publicInput,\n audit,\n withdrawLegs: [legA.withdrawObject, legB.withdrawObject],\n deposits,\n ...(changeCoin ? { changeCoin } : {}),\n };\n}\n","import { StrKey } from '@stellar/stellar-sdk';\nimport { Buffer } from 'buffer';\n\nconst MUXED_ACCOUNT_ID_BYTE_LENGTH = 8;\nconst ED25519_PUBLIC_KEY_BYTE_LENGTH = 32;\n\nfunction ed25519HexFromGAddress(trimmed: string): string | undefined {\n try {\n const raw = StrKey.decodeEd25519PublicKey(trimmed);\n return Buffer.from(raw).toString('hex');\n } catch {\n return undefined;\n }\n}\n\nfunction ed25519HexFromMuxedAddress(trimmed: string): string | undefined {\n try {\n const raw = StrKey.decodeMed25519PublicKey(trimmed);\n if (raw.length === MUXED_ACCOUNT_ID_BYTE_LENGTH + ED25519_PUBLIC_KEY_BYTE_LENGTH) {\n return raw.subarray(MUXED_ACCOUNT_ID_BYTE_LENGTH).toString('hex');\n }\n if (raw.length === ED25519_PUBLIC_KEY_BYTE_LENGTH) {\n return raw.toString('hex');\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function ed25519PublicKeyHexFromStellarAccount(address: string): string {\n const trimmed = address.trim();\n const fromG = ed25519HexFromGAddress(trimmed);\n if (fromG !== undefined) {\n return fromG;\n }\n const fromMuxed = ed25519HexFromMuxedAddress(trimmed);\n if (fromMuxed !== undefined) {\n return fromMuxed;\n }\n throw new Error('Invalid destination Stellar address');\n}\n","export type EphemeralPointHex = { xHex: string; yHex: string };\n\nconst HEX_64_RE = /^[\\da-f]{64}$/iu;\n\nfunction normalizeCoordinate(value: string): string {\n const hex = value.trim().replace(/^0x/iu, '').toLowerCase();\n if (!HEX_64_RE.test(hex)) {\n throw new Error('Ephemeral key coordinate must be a 32-byte hex string.');\n }\n return hex;\n}\n\nexport function parseEphemeralKeyString(input: string): EphemeralPointHex {\n const [xRaw, yRaw, extra] = input.split(':');\n if (!xRaw || !yRaw || extra !== undefined) {\n throw new Error(\n 'Ephemeral key must be a string in \"xHex:yHex\" format (32-byte hex each).',\n );\n }\n return {\n xHex: normalizeCoordinate(xRaw),\n yHex: normalizeCoordinate(yRaw),\n };\n}\n\nexport function serializeEphemeralKeyString(point: EphemeralPointHex): string {\n return `${normalizeCoordinate(point.xHex)}:${normalizeCoordinate(point.yHex)}`;\n}\n","import { PrivacyPoolSDK, scalarHexToFrDecimal } from '@auditable/privacy-pool-zk-sdk';\nimport type { DepositObject } from '@auditable/privacy-pool-zk-sdk';\nimport {\n decodePrivateAddress,\n recipientPublicKeysDecimalFromPrivateAddress,\n} from '../private-address/codec.js';\nimport { tokenAddressToAssetLeg } from '../proofs/transaction-input.js';\nimport { resolvePoolApplicationId } from '../audit/parameters.js';\nimport type { AlignedDepositSlot } from '../pool/proof-types.js';\n\nconst SAMPLE_SCALAR_ATTEMPTS = 10;\n\nfunction sampleValidDepositScalarHex(): string {\n for (let index = 0; index < SAMPLE_SCALAR_ATTEMPTS; index++) {\n const candidate = PrivacyPoolSDK.generateRandomScalarHex32();\n try {\n scalarHexToFrDecimal(candidate);\n return candidate;\n } catch {\n continue;\n }\n }\n throw new Error('could not sample valid depositor ephemeral scalar');\n}\n\nexport async function buildAlignedDepositSlotForSdk(\n sdk: PrivacyPoolSDK,\n applicationId: string,\n parameters: {\n privateAddressStpl1: string;\n amountStroops: bigint;\n tokenAddress: string;\n },\n): Promise<AlignedDepositSlot> {\n const privateAddressPoint = decodePrivateAddress(parameters.privateAddressStpl1);\n const scalarHex = sampleValidDepositScalarHex();\n const shared = sdk.ecdhSharedKey(\n scalarHex,\n privateAddressPoint.x,\n privateAddressPoint.y,\n );\n const [assetHi, assetLo] = tokenAddressToAssetLeg(parameters.tokenAddress);\n const resolvedApplicationId = resolvePoolApplicationId(applicationId);\n const generated = sdk.generateCoinForDepositWithSharedHex(\n scalarHex,\n shared.x,\n shared.y,\n parameters.amountStroops,\n assetHi,\n assetLo,\n resolvedApplicationId,\n );\n const recipientPublicKeys = recipientPublicKeysDecimalFromPrivateAddress(\n parameters.privateAddressStpl1,\n ) as [string, string];\n const deposit: DepositObject = {\n value: generated.coin.value,\n nullifier: generated.coin.nullifier,\n ephemeralKeyScalar: scalarHexToFrDecimal(scalarHex),\n asset: [generated.coin.asset_hi, generated.coin.asset_lo],\n applicationId: resolvedApplicationId,\n recipientPublicKeys,\n };\n return {\n deposit,\n commitment_hex: generated.commitment_hex,\n coin: generated.coin,\n depositScalarHex: scalarHex,\n precommitementHex: generated.precommitement_hex,\n };\n}\n","import type { StellarBrowserAssets } from '../../types.js';\nimport { PrivacyPoolService } from '../pool/service.js';\n\nexport function createPrivacyPoolService(input?: {\n assets?: StellarBrowserAssets;\n applicationId?: string;\n auditPublicKey?: [string, string];\n}): PrivacyPoolService {\n return new PrivacyPoolService(\n input?.assets,\n input?.applicationId,\n input?.auditPublicKey,\n );\n}\n\nlet configuredPrivacyPoolService: PrivacyPoolService | undefined;\n\nexport function configurePrivacyPoolService(service: PrivacyPoolService): void {\n configuredPrivacyPoolService = service;\n}\n\nexport function getPrivacyPoolService(): PrivacyPoolService {\n if (!configuredPrivacyPoolService) {\n throw new Error(\n 'PrivacyPoolService is not configured. Call configurePrivacyPoolService first.',\n );\n }\n return configuredPrivacyPoolService;\n}\n","import type { StellarBrowserAssets } from '../../types.js';\n\nexport interface LoadBrowserAssetsInput {\n sdkWasmUrl: string;\n circuitWasmUrl: string;\n provingKeyUrl: string;\n cacheBust?: boolean;\n}\n\nexport async function loadStellarBrowserAssets(\n input: LoadBrowserAssetsInput,\n): Promise<StellarBrowserAssets> {\n const cacheKey = input.cacheBust ? `?v=${Date.now()}` : '';\n const [sdkWasm, circuitWasm, provingKey] = await Promise.all([\n fetch(`${input.sdkWasmUrl}${cacheKey}`).then((response) => response.arrayBuffer()),\n fetch(input.circuitWasmUrl).then((response) => response.arrayBuffer()),\n fetch(input.provingKeyUrl).then((response) => response.arrayBuffer()),\n ]);\n return { sdkWasm, circuitWasm, provingKey };\n}\n\nexport async function loadDefaultStellarBrowserAssets(options?: {\n cacheBust?: boolean;\n}): Promise<StellarBrowserAssets> {\n await import('@auditable/privacy-pool-zk-sdk');\n const sdkWasmUrl = new URL('@auditable/privacy-pool-zk-sdk/sdk.wasm', import.meta.url)\n .href;\n const circuitWasmUrl = new URL(\n '@auditable/privacy-pool-zk-sdk/witness.wasm',\n import.meta.url,\n ).href;\n const provingKeyUrl = new URL(\n '@auditable/privacy-pool-zk-sdk/main.zkey',\n import.meta.url,\n ).href;\n return loadStellarBrowserAssets({\n sdkWasmUrl,\n circuitWasmUrl,\n provingKeyUrl,\n ...(options?.cacheBust ? { cacheBust: true } : {}),\n });\n}\n","import { Buffer } from 'buffer';\nimport type {\n OnboardingPayload,\n OptionalPrivateAddressRegistration,\n PlaintextNote,\n PrivateAddressRegistration,\n} from 'contract';\nimport { PrivacyPoolSDK } from '@auditable/privacy-pool-zk-sdk';\nimport { frDecimalToPaddedBytes32 } from '../encoding/fr-decimal-to-bytes.js';\nimport { getPrivacyPoolService } from '../pool/singleton.js';\nimport { tokenAddressToAssetLeg } from '../proofs/transaction-input.js';\nimport { decodePrivateAddress } from '../private-address/codec.js';\n\nexport { generateTemporaryRecipientPrivateAddress } from './recipient.js';\n\nconst COORDINATE_HEX_LENGTH = 64;\n\ntype TransferOnboardingRecipientNoteInput = {\n tokenAddress: string;\n nullifier: string;\n secret: string;\n value: string;\n};\n\nexport type TemporaryRecipientKeyMaterial = {\n temporaryScalarHex: string;\n temporaryPrivateAddressStpl1: string;\n};\n\nfunction noneOptionalRegistration(): OptionalPrivateAddressRegistration {\n return { tag: 'None', values: undefined };\n}\n\nfunction coinToPlaintextNote(\n coin: TransferOnboardingRecipientNoteInput,\n): PlaintextNote {\n const [assetHi, assetLo] = tokenAddressToAssetLeg(coin.tokenAddress);\n return {\n asset_hi: frDecimalToPaddedBytes32(assetHi),\n asset_lo: frDecimalToPaddedBytes32(assetLo),\n deposited_ephemeral_scalar: undefined,\n nullifier: frDecimalToPaddedBytes32(coin.nullifier),\n secret: frDecimalToPaddedBytes32(coin.secret),\n value: BigInt(coin.value),\n };\n}\n\nexport async function generateRandomDepositScalarHex(): Promise<string> {\n await getPrivacyPoolService().getInitializedSdk();\n return PrivacyPoolSDK.generateRandomScalarHex32();\n}\n\nexport function buildOnboardingPayload(parameters: {\n ownerStellarAddress: string;\n temporaryKey: TemporaryRecipientKeyMaterial;\n recipientNotes: TransferOnboardingRecipientNoteInput[];\n permanentPrivateAddressStpl1?: string;\n}): OnboardingPayload {\n const notes = parameters.recipientNotes.map((coin) => coinToPlaintextNote(coin));\n const temporaryDecoded = decodePrivateAddress(\n parameters.temporaryKey.temporaryPrivateAddressStpl1.trim(),\n );\n let privateAddressRegistration = noneOptionalRegistration();\n if (parameters.permanentPrivateAddressStpl1?.trim()) {\n const decoded = decodePrivateAddress(\n parameters.permanentPrivateAddressStpl1.trim(),\n );\n const registration: PrivateAddressRegistration = {\n owner: parameters.ownerStellarAddress.trim(),\n public_key_x: Buffer.from(decoded.x.padStart(COORDINATE_HEX_LENGTH, '0'), 'hex'),\n public_key_y: Buffer.from(decoded.y.padStart(COORDINATE_HEX_LENGTH, '0'), 'hex'),\n };\n privateAddressRegistration = { tag: 'Some', values: [registration] };\n }\n return {\n owner: parameters.ownerStellarAddress.trim(),\n temp_public_key_x: Buffer.from(\n temporaryDecoded.x.padStart(COORDINATE_HEX_LENGTH, '0'),\n 'hex',\n ),\n temp_public_key_y: Buffer.from(\n temporaryDecoded.y.padStart(COORDINATE_HEX_LENGTH, '0'),\n 'hex',\n ),\n encrypted_private_key: Buffer.from(\n parameters.temporaryKey.temporaryScalarHex,\n 'utf8',\n ),\n notes: { notes },\n private_address_registration: privateAddressRegistration,\n };\n}\n\nexport async function buildTransferOnboardingAtExecute(\n input: import('../environment/types.js').BuildTransferOnboardingAtExecuteInput,\n): Promise<OnboardingPayload> {\n return buildOnboardingPayload({\n ownerStellarAddress: input.ownerStellarAddress,\n temporaryKey: {\n temporaryScalarHex: input.temporaryRecipientKey.temporaryScalarHex,\n temporaryPrivateAddressStpl1:\n input.temporaryRecipientKey.temporaryPrivateAddressStpl1,\n },\n recipientNotes: [input.recipientNote],\n });\n}\n","const BN254_SCALAR_MOD =\n 21_888_242_871_839_275_222_246_405_745_257_275_088_548_364_400_416_034_343_698_204_186_575_808_495_617n;\nconst FIELD_BYTE_LENGTH = 32;\nconst BYTE_MASK = 0xffn;\nconst BITS_PER_BYTE = 8n;\n\nexport function frDecimalToPaddedBytes32(decimal: string): Buffer {\n let value = BigInt(decimal.trim());\n value = ((value % BN254_SCALAR_MOD) + BN254_SCALAR_MOD) % BN254_SCALAR_MOD;\n const bytes = Buffer.alloc(FIELD_BYTE_LENGTH);\n for (let index = FIELD_BYTE_LENGTH - 1; index >= 0; index -= 1) {\n bytes[index] = Number(value & BYTE_MASK);\n value >>= BITS_PER_BYTE;\n }\n return bytes;\n}\n","import { PrivacyPoolSDK } from '@auditable/privacy-pool-zk-sdk';\nimport { getPrivacyPoolService } from '../pool/singleton.js';\nimport { encodePrivateAddressFromHexCoordinates } from '../private-address/codec.js';\n\nconst COORDINATE_HEX_LENGTH = 64;\n\nexport async function generateTemporaryRecipientPrivateAddress(): Promise<{\n temporaryScalarHex: string;\n temporaryPrivateAddressStpl1: string;\n}> {\n await getPrivacyPoolService().getInitializedSdk();\n const temporaryScalarHex = PrivacyPoolSDK.generateRandomScalarHex32();\n const sdk = await getPrivacyPoolService().getInitializedSdk();\n const point = sdk.ecdhEphemeralPublicKeyFromScalarHex(temporaryScalarHex);\n const publicKeyXHex = point.x.padStart(COORDINATE_HEX_LENGTH, '0');\n const publicKeyYHex = point.y.padStart(COORDINATE_HEX_LENGTH, '0');\n return {\n temporaryScalarHex,\n temporaryPrivateAddressStpl1: encodePrivateAddressFromHexCoordinates(\n publicKeyXHex,\n publicKeyYHex,\n ),\n };\n}\n","export class KytInspectError extends Error {\n readonly reasonCode: string;\n readonly decisionId?: string;\n readonly detailAddress?: string;\n\n constructor(parameters: {\n message: string;\n reasonCode: string;\n decisionId?: string;\n detailAddress?: string;\n }) {\n super(parameters.message);\n this.name = 'KytInspectError';\n this.reasonCode = parameters.reasonCode;\n if (parameters.decisionId !== undefined) {\n this.decisionId = parameters.decisionId;\n }\n if (parameters.detailAddress !== undefined) {\n this.detailAddress = parameters.detailAddress;\n }\n }\n}\n\nexport function parseKytReasonCode(reasonCode: string): {\n code: string;\n address?: string;\n} {\n const separatorIndex = reasonCode.indexOf(':');\n if (separatorIndex === -1) {\n return { code: reasonCode };\n }\n return {\n code: reasonCode.slice(0, separatorIndex),\n address: reasonCode.slice(separatorIndex + 1),\n };\n}\n","import type { StellarNetworkConfig } from '../types.js';\nimport type { PoolClientFactory } from '../transact/pool/types.js';\nimport { createStellarRpcServer, type StellarRpcServer } from '../rpc/server.js';\nimport { createInternalPoolContractClient } from './pool/create-pool-client.js';\nimport {\n createInternalRegistryContractClient,\n type RegistryContractWriteClient,\n} from './registry/create-registry-client.js';\nimport type { StellarSignTransaction } from './signing.js';\n\nexport type RegistryClientFactory = (input: {\n contractId: string;\n walletPublicKey: string;\n networkPassphrase: string;\n sorobanRpcUrl: string;\n}) => RegistryContractWriteClient;\n\nexport type StellarContractContext = {\n network: StellarNetworkConfig;\n signTransaction: StellarSignTransaction;\n rpcServer: StellarRpcServer;\n createPoolClient: PoolClientFactory;\n createRegistryClient: RegistryClientFactory;\n};\n\nfunction composeStellarContractContext(input: {\n network: StellarNetworkConfig;\n signTransaction: StellarSignTransaction;\n}): StellarContractContext {\n const rpcServer = createStellarRpcServer(input.network.rpcUrl);\n return {\n network: input.network,\n signTransaction: input.signTransaction,\n rpcServer,\n createPoolClient: (parameters) =>\n createInternalPoolContractClient({\n ...parameters,\n signTransaction: input.signTransaction,\n }),\n createRegistryClient: (parameters) =>\n createInternalRegistryContractClient({\n ...parameters,\n signTransaction: input.signTransaction,\n }),\n };\n}\n\nexport type ResolvedStellarTransactEnvironment =\n import('../transact/environment/types.js').StellarTransactEnvironment & {\n contractContext: StellarContractContext;\n };\n\nexport function attachContractContext(\n environment: import('../transact/environment/types.js').StellarTransactEnvironment,\n): ResolvedStellarTransactEnvironment {\n if (!environment.signTransaction) {\n throw new Error(\n 'Stellar transact environment requires signTransaction for on-chain contract access.',\n );\n }\n return {\n ...environment,\n contractContext: composeStellarContractContext({\n network: environment.network,\n signTransaction: environment.signTransaction,\n }),\n };\n}\n\nexport function requireContractContext(\n environment:\n import('../transact/environment/types.js').StellarTransactEnvironment | undefined,\n): StellarContractContext {\n if (!environment || !('contractContext' in environment)) {\n throw new Error('Contract context is not configured on the transact environment.');\n }\n const resolved = environment as ResolvedStellarTransactEnvironment;\n return resolved.contractContext;\n}\n\nexport function readPoolClientFactory(\n environment: import('../transact/environment/types.js').StellarTransactEnvironment,\n): PoolClientFactory {\n return requireContractContext(environment).createPoolClient;\n}\n","import { rpc } from '@stellar/stellar-sdk';\n\nconst KYT_REGISTER_MAX_POLLS = 60;\nconst KYT_REGISTER_POLL_INTERVAL_MS = 1000;\n\ntype LatestLedgerRpcResponse = {\n result?: {\n sequence?: number | string;\n latestLedger?: number | string;\n };\n error?: {\n message?: string;\n };\n};\n\nfunction parseLedgerSequence(value: number | string | undefined): number | undefined {\n if (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) {\n return value;\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n const parsed = Number(value);\n if (Number.isSafeInteger(parsed) && parsed >= 0) {\n return parsed;\n }\n }\n return undefined;\n}\n\nexport async function fetchCurrentLedger(sorobanRpcUrl: string): Promise<number> {\n const response = await fetch(sorobanRpcUrl, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: 'getLatestLedger',\n }),\n });\n const body = (await response.json()) as LatestLedgerRpcResponse;\n if (!response.ok || body.error) {\n const details = body.error?.message ?? response.statusText;\n throw new Error(`Failed to fetch current ledger from Soroban RPC: ${details}`);\n }\n const sequence =\n parseLedgerSequence(body.result?.sequence) ??\n parseLedgerSequence(body.result?.latestLedger);\n if (sequence === undefined) {\n throw new Error('Failed to fetch current ledger from Soroban RPC: invalid payload');\n }\n return sequence;\n}\n\nexport async function waitForKytRegistration(parameters: {\n server: rpc.Server;\n hash: string;\n}): Promise<void> {\n for (let attempt = 0; attempt < KYT_REGISTER_MAX_POLLS; attempt += 1) {\n const response = await parameters.server.getTransaction(parameters.hash);\n if (response.status === 'SUCCESS') {\n return;\n }\n if (response.status === 'FAILED') {\n throw new Error('KYT passage registration failed on-chain');\n }\n await new Promise((resolve) => {\n setTimeout(resolve, KYT_REGISTER_POLL_INTERVAL_MS);\n });\n }\n throw new Error('KYT passage registration was not confirmed in time');\n}\n","import type { InspectKytPassageApproved } from '@auditable/privacy-pool-zk-sdk';\nimport { Buffer } from 'buffer';\nimport { Operation, TransactionBuilder, rpc, xdr } from '@stellar/stellar-sdk';\nimport type { StellarTransactEnvironment } from '../../environment/types.js';\nimport { waitForKytRegistration } from './poll.js';\n\nconst KYT_REGISTER_FEE_STROOPS = '1000000';\nconst KYT_REGISTER_TIMEOUT_SECONDS = 300;\n\nfunction passageIdToScValue(passageId: string): xdr.ScVal {\n return xdr.ScVal.scvBytes(Buffer.from(passageId.replace(/^0x/, ''), 'hex'));\n}\n\nexport function approvalSignatureToBytes(signature: string): Buffer {\n const clean = signature.trim();\n return /^(0x)?[0-9a-fA-F]{128}$/.test(clean)\n ? Buffer.from(clean.replace(/^0x/i, ''), 'hex')\n : Buffer.from(clean, 'base64');\n}\n\nfunction signatureToScValue(signature: string): xdr.ScVal {\n const bytes = approvalSignatureToBytes(signature);\n return xdr.ScVal.scvBytes(bytes);\n}\n\nexport async function registerKytPassage(parameters: {\n approval: InspectKytPassageApproved;\n owner: string;\n networkPassphrase: string;\n sorobanRpcUrl: string;\n transactEnvironment: StellarTransactEnvironment;\n}): Promise<void> {\n const signTransaction = parameters.transactEnvironment.signTransaction;\n if (!signTransaction) {\n throw new Error(\n 'KYT passage registration requires a wallet signTransaction adapter.',\n );\n }\n const kytRegistry = parameters.transactEnvironment.kyt.kytPassageRegistryContract;\n const server = new rpc.Server(parameters.sorobanRpcUrl, { allowHttp: true });\n const sourceAccount = await server.getAccount(parameters.owner);\n const transaction = new TransactionBuilder(sourceAccount, {\n fee: KYT_REGISTER_FEE_STROOPS,\n networkPassphrase: parameters.networkPassphrase,\n })\n .addOperation(\n Operation.invokeContractFunction({\n contract: kytRegistry,\n function: 'register_passage',\n args: [\n passageIdToScValue(parameters.approval.passageId),\n xdr.ScVal.scvU32(parameters.approval.expiresAtLedger),\n signatureToScValue(parameters.approval.signature),\n ],\n }),\n )\n .setTimeout(KYT_REGISTER_TIMEOUT_SECONDS)\n .build();\n const preparedTransaction = await server.prepareTransaction(transaction);\n const { signedTxXdr } = await signTransaction({\n xdr: preparedTransaction.toXDR(),\n networkPassphrase: parameters.networkPassphrase,\n address: parameters.owner,\n });\n const signedTransaction = TransactionBuilder.fromXDR(\n signedTxXdr,\n parameters.networkPassphrase,\n );\n const result = await server.sendTransaction(signedTransaction);\n const status = String(result.status);\n if (status !== 'PENDING' && status !== 'SUCCESS') {\n throw new Error(`KYT passage registration submit failed: ${status}`);\n }\n await waitForKytRegistration({ server, hash: result.hash });\n}\n","import type { OnboardingPayload } from '../../onboarding/payload.js';\nimport type { InspectKytPassageApproved } from '@auditable/privacy-pool-zk-sdk';\nimport { resolvePoolApplicationId } from '../../audit/parameters.js';\nimport type { KytApplicationIdHints } from '../../pool/proof-types.js';\nimport { KytInspectError, parseKytReasonCode } from '../inspect-error.js';\nimport type { StellarTransactEnvironment } from '../../environment/types.js';\nimport { fetchCurrentLedger } from './poll.js';\nimport { registerKytPassage } from './submit.js';\n\ntype KytInspectResponse =\n | InspectKytPassageApproved\n | {\n status: 'rejected' | 'needs_review';\n reasonCode?: string;\n decisionId?: string;\n };\n\nexport interface DecryptedKytAuditSlot {\n slot: number;\n decryptOk: boolean;\n auditTagValid: boolean;\n noteAuditPublicKey?: [string, string];\n expectedAuditPublicKey?: [string, string];\n plaintext?: string[];\n}\n\nexport interface RequestKytPassageForPoolInteractionInput {\n owner: string;\n poolContract: string;\n proofHex: string;\n publicHex: string;\n onboarding?: OnboardingPayload;\n decryptedAuditSlots?: DecryptedKytAuditSlot[];\n applicationIdsPlaintext?: KytApplicationIdHints;\n networkPassphrase: string;\n sorobanRpcUrl: string;\n transactEnvironment: StellarTransactEnvironment;\n}\n\nfunction buildApplicationIdHints(\n applicationId: string,\n): [string, string, string, string] {\n return [applicationId, applicationId, applicationId, applicationId];\n}\n\nfunction buildNonce(): string {\n return globalThis.crypto?.randomUUID?.() ?? `${Date.now()}`;\n}\n\nfunction kytJsonReplacer(_key: string, value: unknown): unknown {\n if (typeof value === 'bigint') {\n return value.toString();\n }\n return value;\n}\n\nasync function parseInspectResponse(response: Response): Promise<KytInspectResponse> {\n const body = (await response.json()) as KytInspectResponse;\n if (!response.ok) {\n throw new Error(`KYT inspect failed: ${JSON.stringify(body)}`);\n }\n return body;\n}\n\nfunction throwKytInspectRejected(\n body: Exclude<KytInspectResponse, InspectKytPassageApproved>,\n): never {\n const reasonCode = body.reasonCode ?? body.status;\n const parsed = parseKytReasonCode(reasonCode);\n throw new KytInspectError({\n message: reasonCode,\n reasonCode,\n ...(body.decisionId ? { decisionId: body.decisionId } : {}),\n ...(parsed.address ? { detailAddress: parsed.address } : {}),\n });\n}\n\nexport async function requestKytPassageForPoolInteraction(\n input: RequestKytPassageForPoolInteractionInput,\n): Promise<InspectKytPassageApproved> {\n const applicationId = resolvePoolApplicationId(\n input.transactEnvironment.network.applicationId,\n );\n const applicationIdsPlaintext =\n input.applicationIdsPlaintext ?? buildApplicationIdHints(applicationId);\n const kytRegistry = input.transactEnvironment.kyt.kytPassageRegistryContract;\n const currentLedger = await fetchCurrentLedger(input.sorobanRpcUrl);\n const response = await fetch(\n `${input.transactEnvironment.kyt.apiBaseUrl}/kyt/passages/inspect`,\n {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(\n {\n owner: input.owner,\n poolContract: input.poolContract,\n kytRegistry,\n proofBytes: input.proofHex,\n publicSignalsBytes: input.publicHex,\n applicationIdsPlaintext,\n decryptedAuditSlots: input.decryptedAuditSlots,\n onboarding: input.onboarding,\n nonce: buildNonce(),\n currentLedger,\n },\n kytJsonReplacer,\n ),\n },\n );\n const body = await parseInspectResponse(response);\n if (body.status !== 'approved') {\n throwKytInspectRejected(body);\n }\n if (input.transactEnvironment.kyt.registerPassageOnChain) {\n await registerKytPassage({\n approval: body,\n owner: input.owner,\n networkPassphrase: input.networkPassphrase,\n sorobanRpcUrl: input.sorobanRpcUrl,\n transactEnvironment: input.transactEnvironment,\n });\n }\n return body;\n}\n","type UnknownRecord = Record<string, unknown>;\n\nfunction getNested(source: unknown, path: string[]): unknown {\n let cursor: unknown = source;\n for (const key of path) {\n if (typeof cursor !== 'object' || cursor === null) {\n return undefined;\n }\n cursor = (cursor as UnknownRecord)[key];\n }\n return cursor;\n}\n\nfunction needsRestore(simulation: unknown): boolean {\n const restorePreamble =\n getNested(simulation, ['restorePreamble']) ??\n getNested(simulation, ['result', 'restorePreamble']) ??\n getNested(simulation, ['simulation', 'restorePreamble']);\n if (restorePreamble && typeof restorePreamble === 'object') {\n return true;\n }\n const isSimulationError = getNested(simulation, ['error']);\n if (typeof isSimulationError === 'string') {\n return isSimulationError.toLowerCase().includes('restore');\n }\n return false;\n}\n\nasync function maybeCallFunction(\n target: unknown,\n methodName: string,\n): Promise<unknown | undefined> {\n if (typeof target !== 'object' || target === null) {\n return undefined;\n }\n const method = (target as UnknownRecord)[methodName];\n if (typeof method !== 'function') {\n return undefined;\n }\n return (method as () => Promise<unknown>)();\n}\n\nexport async function runTtlPreflight(assembledTransaction: unknown): Promise<void> {\n const simulation = await maybeCallFunction(assembledTransaction, 'simulate');\n if (!simulation || !needsRestore(simulation)) {\n return;\n }\n const restoreResult =\n (await maybeCallFunction(assembledTransaction, 'restoreFootprint')) ??\n (await maybeCallFunction(assembledTransaction, 'restore'));\n if (!restoreResult) {\n return;\n }\n await maybeCallFunction(assembledTransaction, 'simulate');\n}\n","import type { OnboardingPayload } from '../onboarding/payload.js';\nimport { approvalSignatureToBytes } from '../kyt/passage-inspect.js';\nimport { runTtlPreflight } from '../submit/ttl-preflight.js';\nimport type { PoolTransactClient } from '../pool/types.js';\nimport type { InspectKytPassageApproved } from '@auditable/privacy-pool-zk-sdk';\nimport { Buffer } from 'buffer';\n\nexport async function submitPoolTransact(parameters: {\n contractClient: PoolTransactClient;\n from: string;\n proofHex: string;\n publicHex: string;\n onboarding?: OnboardingPayload;\n approval: InspectKytPassageApproved;\n}): Promise<string> {\n const assembledTransaction = await parameters.contractClient.transact({\n from: parameters.from,\n proof_bytes: Buffer.from(parameters.proofHex.replace(/^0x/iu, ''), 'hex'),\n pub_signals_bytes: Buffer.from(parameters.publicHex.replace(/^0x/iu, ''), 'hex'),\n onboarding: parameters.onboarding,\n kyt_authorization: {\n expiration_ledger: parameters.approval.expiresAtLedger,\n signature: approvalSignatureToBytes(parameters.approval.signature),\n },\n });\n await runTtlPreflight(assembledTransaction);\n const sentTransaction = await assembledTransaction.signAndSend();\n const transactionHash = sentTransaction.sendTransactionResponse?.hash ?? '';\n if (!transactionHash) {\n throw new Error('Transaction failed');\n }\n return transactionHash;\n}\n","import type { CoinData } from '@auditable/privacy-pool-zk-sdk';\nimport { readPoolClientFactory } from '../../contracts/contract-context.js';\nimport type { PrivacyPoolService } from '../pool/service.js';\nimport { requestKytPassageForPoolInteraction } from '../kyt/passage-inspect.js';\nimport { submitPoolTransact } from './pool-transact.js';\nimport type { StellarTransactEnvironment } from '../environment/types.js';\n\nexport interface SubmitSorobanDepositInput {\n contractId: string;\n walletPublicKey: string;\n privateAddressStpl1: string;\n coin: CoinData;\n depositScalarHex: string;\n tokenAddress: string;\n networkPassphrase: string;\n sorobanRpcUrl: string;\n privacyPoolService: PrivacyPoolService;\n transactEnvironment: StellarTransactEnvironment;\n}\n\nexport async function submitSorobanDeposit(\n input: SubmitSorobanDepositInput,\n): Promise<string> {\n const poolClient = readPoolClientFactory(input.transactEnvironment)({\n contractId: input.contractId,\n walletPublicKey: input.walletPublicKey,\n networkPassphrase: input.networkPassphrase,\n sorobanRpcUrl: input.sorobanRpcUrl,\n });\n const merkleTx = await poolClient.get_merkle_root();\n const merkleRootBuffer = merkleTx.result;\n\n const { applicationIdsPlaintext, proof_hex, public_hex } =\n await input.privacyPoolService.prepareDepositTransactProof({\n privateAddressStpl1: input.privateAddressStpl1,\n coin: input.coin,\n depositScalarHex: input.depositScalarHex,\n merkleRootBytes: merkleRootBuffer,\n tokenAddress: input.tokenAddress,\n });\n\n const approval = await requestKytPassageForPoolInteraction({\n owner: input.walletPublicKey,\n poolContract: input.contractId,\n proofHex: proof_hex,\n publicHex: public_hex,\n applicationIdsPlaintext,\n networkPassphrase: input.networkPassphrase,\n sorobanRpcUrl: input.sorobanRpcUrl,\n transactEnvironment: input.transactEnvironment,\n });\n return submitPoolTransact({\n contractClient: poolClient,\n from: input.walletPublicKey,\n proofHex: proof_hex,\n publicHex: public_hex,\n approval,\n });\n}\n","import type { OnboardingPayload } from '../onboarding/payload.js';\nimport { readPoolClientFactory } from '../../contracts/contract-context.js';\nimport { requestKytPassageForPoolInteraction } from '../kyt/passage-inspect.js';\nimport type { KytApplicationIdHints } from '../pool/proof-types.js';\nimport { submitPoolTransact } from './pool-transact.js';\nimport type { StellarTransactEnvironment } from '../environment/types.js';\n\nexport interface SubmitSorobanConfidentialTransferInput {\n contractId: string;\n walletPublicKey: string;\n proofHex: string;\n publicHex: string;\n onboarding?: OnboardingPayload;\n applicationIdsPlaintext?: KytApplicationIdHints;\n networkPassphrase: string;\n sorobanRpcUrl: string;\n transactEnvironment: StellarTransactEnvironment;\n}\n\nexport async function submitSorobanConfidentialTransfer(\n input: SubmitSorobanConfidentialTransferInput,\n): Promise<string> {\n const poolClient = readPoolClientFactory(input.transactEnvironment)({\n contractId: input.contractId,\n walletPublicKey: input.walletPublicKey,\n networkPassphrase: input.networkPassphrase,\n sorobanRpcUrl: input.sorobanRpcUrl,\n });\n const approval = await requestKytPassageForPoolInteraction({\n owner: input.walletPublicKey,\n poolContract: input.contractId,\n proofHex: input.proofHex,\n publicHex: input.publicHex,\n ...(input.onboarding ? { onboarding: input.onboarding } : {}),\n ...(input.applicationIdsPlaintext\n ? { applicationIdsPlaintext: input.applicationIdsPlaintext }\n : {}),\n networkPassphrase: input.networkPassphrase,\n sorobanRpcUrl: input.sorobanRpcUrl,\n transactEnvironment: input.transactEnvironment,\n });\n return submitPoolTransact({\n contractClient: poolClient,\n from: input.walletPublicKey,\n proofHex: input.proofHex,\n publicHex: input.publicHex,\n ...(input.onboarding ? { onboarding: input.onboarding } : {}),\n approval,\n });\n}\n","import type { CoinData, DepositSlot } from '@auditable/privacy-pool-zk-sdk';\nimport { getPrivacyPoolService } from '../pool/singleton.js';\nimport { ZERO_STROOPS } from '../proofs/confidential/helpers.js';\nimport type { AlignedDepositSlot } from '../pool/proof-types.js';\n\ntype ChangeCoin = {\n commitment_hex: string;\n coin: CoinData;\n depositScalarHex: string;\n precommitementHex: string;\n};\n\nasync function buildPaddingDepositPair(\n recipientPrivateAddressStpl1: string,\n tokenAddress: string,\n recipientDeposit: DepositSlot,\n): Promise<[DepositSlot, DepositSlot]> {\n const paddingSlot = await getPrivacyPoolService().buildAlignedDepositSlot({\n privateAddressStpl1: recipientPrivateAddressStpl1,\n amountStroops: ZERO_STROOPS,\n tokenAddress,\n });\n return [recipientDeposit, paddingSlot.deposit];\n}\n\nasync function buildChangeDepositPair(parameters: {\n recipientPrivateAddressStpl1: string;\n selfPrivateAddressStpl1ForChange: string;\n changeStroops: bigint;\n tokenAddress: string;\n recipientDeposit: DepositSlot;\n}): Promise<{ deposits: [DepositSlot, DepositSlot]; changeCoin: ChangeCoin }> {\n const changeSlot = await getPrivacyPoolService().buildAlignedDepositSlot({\n privateAddressStpl1: parameters.selfPrivateAddressStpl1ForChange.trim(),\n amountStroops: parameters.changeStroops,\n tokenAddress: parameters.tokenAddress,\n });\n return {\n deposits: [parameters.recipientDeposit, changeSlot.deposit],\n changeCoin: {\n commitment_hex: changeSlot.commitment_hex,\n coin: changeSlot.coin,\n depositScalarHex: changeSlot.depositScalarHex,\n precommitementHex: changeSlot.precommitementHex,\n },\n };\n}\n\nexport async function buildRecipientAndOptionalChangeDeposits(parameters: {\n recipientPrivateAddressStpl1: string;\n transferStroops: bigint;\n changeStroops: bigint;\n selfPrivateAddressStpl1ForChange: string | undefined;\n tokenAddress: string;\n}): Promise<{\n recipientSlot: AlignedDepositSlot;\n deposits: [DepositSlot, DepositSlot];\n changeCoin?: ChangeCoin;\n}> {\n const recipientPrivateAddress = parameters.recipientPrivateAddressStpl1.trim();\n const recipientSlot = await getPrivacyPoolService().buildAlignedDepositSlot({\n privateAddressStpl1: recipientPrivateAddress,\n amountStroops: parameters.transferStroops,\n tokenAddress: parameters.tokenAddress,\n });\n if (parameters.changeStroops <= ZERO_STROOPS) {\n return {\n recipientSlot,\n deposits: await buildPaddingDepositPair(\n recipientPrivateAddress,\n parameters.tokenAddress,\n recipientSlot.deposit,\n ),\n };\n }\n const changeResult = await buildChangeDepositPair({\n recipientPrivateAddressStpl1: recipientPrivateAddress,\n selfPrivateAddressStpl1ForChange: parameters.selfPrivateAddressStpl1ForChange!,\n changeStroops: parameters.changeStroops,\n tokenAddress: parameters.tokenAddress,\n recipientDeposit: recipientSlot.deposit,\n });\n return {\n recipientSlot,\n deposits: changeResult.deposits,\n changeCoin: changeResult.changeCoin,\n };\n}\n","import type { CoinData, DepositSlot } from '@auditable/privacy-pool-zk-sdk';\nimport { buildRecipientAndOptionalChangeDeposits } from '../../onboarding/recipient-change-deposits.js';\nimport { withTokenAddressPublicInputs } from '../../proofs/transaction-input.js';\nimport { senderWithdrawFrAndScalar } from '../../proofs/confidential/helpers.js';\n\nexport type GeneratedOutputCoin = {\n commitment_hex: string;\n coin: CoinData;\n depositScalarHex: string;\n precommitementHex: string;\n};\n\nexport function generatedOutputCoinFromSlot(\n slot: GeneratedOutputCoin,\n): GeneratedOutputCoin {\n return {\n commitment_hex: slot.commitment_hex,\n coin: slot.coin,\n depositScalarHex: slot.depositScalarHex,\n precommitementHex: slot.precommitementHex,\n };\n}\n\nasync function buildTransferDepositsAndPublicInput(parameters: {\n recipientPrivateAddressStpl1: string;\n transferStroops: bigint;\n changeStroops: bigint;\n selfPrivateAddressStpl1ForChange: string | undefined;\n tokenAddress: string;\n stateRoot: string;\n withdrawAddressHi: string;\n withdrawAddressLo: string;\n privKeyScalar: string;\n}): Promise<{\n recipientSlot: GeneratedOutputCoin;\n deposits: [DepositSlot, DepositSlot];\n changeCoin?: GeneratedOutputCoin;\n publicInput: ReturnType<typeof withTokenAddressPublicInputs>;\n}> {\n const { recipientSlot, deposits, changeCoin } =\n await buildRecipientAndOptionalChangeDeposits({\n recipientPrivateAddressStpl1: parameters.recipientPrivateAddressStpl1,\n transferStroops: parameters.transferStroops,\n changeStroops: parameters.changeStroops,\n selfPrivateAddressStpl1ForChange: parameters.selfPrivateAddressStpl1ForChange,\n tokenAddress: parameters.tokenAddress,\n });\n const publicInput = withTokenAddressPublicInputs(\n {\n stateRoot: parameters.stateRoot,\n withdrawAddressHi: parameters.withdrawAddressHi,\n withdrawAddressLo: parameters.withdrawAddressLo,\n privKeyScalar: parameters.privKeyScalar,\n },\n parameters.tokenAddress,\n );\n return {\n recipientSlot,\n deposits,\n ...(changeCoin ? { changeCoin } : {}),\n publicInput,\n };\n}\n\nexport async function buildSenderTransferDepositsAndPublicInput(parameters: {\n senderGAddress: string;\n senderPrivKeyScalarHex: string;\n recipientPrivateAddressStpl1: string;\n transferStroops: bigint;\n changeStroops: bigint;\n selfPrivateAddressStpl1ForChange: string | undefined;\n tokenAddress: string;\n stateRoot: string;\n}): ReturnType<typeof buildTransferDepositsAndPublicInput> {\n const { hi, lo, privKeyScalar } = senderWithdrawFrAndScalar({\n senderGAddress: parameters.senderGAddress,\n senderPrivKeyScalarHex: parameters.senderPrivKeyScalarHex,\n });\n return buildTransferDepositsAndPublicInput({\n recipientPrivateAddressStpl1: parameters.recipientPrivateAddressStpl1,\n transferStroops: parameters.transferStroops,\n changeStroops: parameters.changeStroops,\n selfPrivateAddressStpl1ForChange: parameters.selfPrivateAddressStpl1ForChange,\n tokenAddress: parameters.tokenAddress,\n stateRoot: parameters.stateRoot,\n withdrawAddressHi: hi,\n withdrawAddressLo: lo,\n privKeyScalar,\n });\n}\n","import type { CoinData, StateFile } from '@auditable/privacy-pool-zk-sdk';\nimport { getPrivacyPoolService } from '../../pool/singleton.js';\nimport { buildZeroPublicLegs } from '../../proofs/transaction-input.js';\nimport {\n changeStroopsAfterDualTransfer,\n dualWithdrawLegsWithSharedRoot,\n requireChangeRecipientWhenPartial,\n} from '../../proofs/confidential/helpers.js';\nimport { buildPoolTransactionAuditParameters } from '../../audit/parameters.js';\nimport type { KytApplicationIdHints } from '../../pool/proof-types.js';\nimport {\n buildSenderTransferDepositsAndPublicInput,\n generatedOutputCoinFromSlot,\n type GeneratedOutputCoin,\n} from './shared.js';\nimport { parseEphemeralKeyString } from '../../encoding/ephemeral-key.js';\n\ntype PrepareConfidentialTransferProofDualParameters = {\n coinA: CoinData;\n coinB: CoinData;\n state: StateFile;\n senderGAddress: string;\n senderPrivKeyScalarHex: string;\n ephemeralAKey: string;\n ephemeralBKey: string;\n transferStroops: bigint;\n recipientPrivateAddressStpl1: string;\n selfPrivateAddressStpl1ForChange: string | undefined;\n tokenAddress: string;\n};\n\ntype PrepareConfidentialTransferProofDualResult = {\n proof_hex: string;\n public_hex: string;\n applicationIdsPlaintext: KytApplicationIdHints;\n recipientCoin: GeneratedOutputCoin;\n changeCoin?: GeneratedOutputCoin;\n};\n\nfunction buildDualTransferApplicationIds(\n applicationId: string,\n changeCoin?: GeneratedOutputCoin,\n): KytApplicationIdHints {\n return [\n applicationId,\n applicationId,\n applicationId,\n changeCoin ? applicationId : '0',\n ];\n}\n\nasync function proveDualConfidentialTransfer(parameters: {\n sdk: Awaited<\n ReturnType<ReturnType<typeof getPrivacyPoolService>['getInitializedSdk']>\n >;\n publicInput: Awaited<\n ReturnType<typeof buildSenderTransferDepositsAndPublicInput>\n >['publicInput'];\n legA: Awaited<ReturnType<typeof dualWithdrawLegsWithSharedRoot>>['legA'];\n legB: Awaited<ReturnType<typeof dualWithdrawLegsWithSharedRoot>>['legB'];\n deposits: Awaited<\n ReturnType<typeof buildSenderTransferDepositsAndPublicInput>\n >['deposits'];\n applicationId: string;\n auditPublicKey?: [string, string];\n}) {\n const audit = buildPoolTransactionAuditParameters({\n applicationId: parameters.applicationId,\n ...(parameters.auditPublicKey ? { auditPublicKey: parameters.auditPublicKey } : {}),\n });\n return parameters.sdk.proveTransaction(\n parameters.publicInput as unknown as Parameters<\n typeof parameters.sdk.proveTransaction\n >[0],\n buildZeroPublicLegs(),\n [parameters.legA.withdrawObject, parameters.legB.withdrawObject],\n parameters.deposits,\n audit,\n );\n}\n\nasync function buildDualTransferProofContext(\n parameters: PrepareConfidentialTransferProofDualParameters,\n applicationId: string,\n sdk: Awaited<\n ReturnType<ReturnType<typeof getPrivacyPoolService>['getInitializedSdk']>\n >,\n) {\n const totalNotes = BigInt(parameters.coinA.value) + BigInt(parameters.coinB.value);\n const changeStroops = changeStroopsAfterDualTransfer(\n parameters.transferStroops,\n totalNotes,\n );\n requireChangeRecipientWhenPartial(\n changeStroops,\n parameters.selfPrivateAddressStpl1ForChange,\n );\n const { legA, legB } = dualWithdrawLegsWithSharedRoot({\n sdk,\n coinA: parameters.coinA,\n coinB: parameters.coinB,\n state: parameters.state,\n ephemeralA: parseEphemeralKeyString(parameters.ephemeralAKey),\n ephemeralB: parseEphemeralKeyString(parameters.ephemeralBKey),\n applicationId,\n });\n const transferInputs = await buildSenderTransferDepositsAndPublicInput({\n senderGAddress: parameters.senderGAddress,\n senderPrivKeyScalarHex: parameters.senderPrivKeyScalarHex,\n recipientPrivateAddressStpl1: parameters.recipientPrivateAddressStpl1,\n transferStroops: parameters.transferStroops,\n changeStroops,\n selfPrivateAddressStpl1ForChange: parameters.selfPrivateAddressStpl1ForChange,\n tokenAddress: parameters.tokenAddress,\n stateRoot: legA.witness.stateRoot,\n });\n return { legA, legB, applicationId, ...transferInputs };\n}\n\nexport async function prepareConfidentialTransferProofDual(\n parameters: PrepareConfidentialTransferProofDualParameters,\n): Promise<PrepareConfidentialTransferProofDualResult> {\n const poolService = getPrivacyPoolService();\n const sdk = await poolService.getInitializedSdk();\n const applicationId = poolService.getApplicationId();\n const { legA, legB, recipientSlot, deposits, changeCoin, publicInput } =\n await buildDualTransferProofContext(parameters, applicationId, sdk);\n const auditPublicKey = poolService.getAuditPublicKey();\n const proof = await (auditPublicKey\n ? proveDualConfidentialTransfer({\n sdk,\n publicInput,\n legA,\n legB,\n deposits,\n applicationId,\n auditPublicKey,\n })\n : proveDualConfidentialTransfer({\n sdk,\n publicInput,\n legA,\n legB,\n deposits,\n applicationId,\n }));\n return {\n ...proof,\n applicationIdsPlaintext: buildDualTransferApplicationIds(applicationId, changeCoin),\n recipientCoin: generatedOutputCoinFromSlot(recipientSlot),\n ...(changeCoin ? { changeCoin } : {}),\n };\n}\n","import type { CoinData, StateFile } from '@auditable/privacy-pool-zk-sdk';\nimport { getPrivacyPoolService } from '../../pool/singleton.js';\nimport { buildZeroPublicLegs } from '../../proofs/transaction-input.js';\nimport {\n MIN_CONFIDENTIAL_TRANSFER_STROOPS,\n requireChangeRecipientWhenPartial,\n withdrawWitnessForCoin,\n} from '../../proofs/confidential/helpers.js';\nimport { buildPoolTransactionAuditParameters } from '../../audit/parameters.js';\nimport type { KytApplicationIdHints } from '../../pool/proof-types.js';\nimport {\n buildSenderTransferDepositsAndPublicInput,\n generatedOutputCoinFromSlot,\n type GeneratedOutputCoin,\n} from './shared.js';\nimport { parseEphemeralKeyString } from '../../encoding/ephemeral-key.js';\n\ntype PrepareConfidentialTransferProofParameters = {\n coin: CoinData;\n state: StateFile;\n senderGAddress: string;\n senderPrivKeyScalarHex: string;\n depositorEphemeralKey: string;\n transferStroops: bigint;\n recipientPrivateAddressStpl1: string;\n selfPrivateAddressStpl1ForChange: string | undefined;\n tokenAddress: string;\n};\n\ntype PrepareConfidentialTransferProofResult = {\n proof_hex: string;\n public_hex: string;\n applicationIdsPlaintext: KytApplicationIdHints;\n recipientCoin: GeneratedOutputCoin;\n changeCoin?: GeneratedOutputCoin;\n};\ntype SenderTransferBuild = Awaited<\n ReturnType<typeof buildSenderTransferDepositsAndPublicInput>\n>;\ntype InitializedPrivacySdk = Awaited<\n ReturnType<ReturnType<typeof getPrivacyPoolService>['getInitializedSdk']>\n>;\n\nfunction validateSingleCoinTransferAmounts(\n transferStroops: bigint,\n noteStroops: bigint,\n selfPrivateAddressStpl1ForChange: string | undefined,\n): bigint {\n if (transferStroops < MIN_CONFIDENTIAL_TRANSFER_STROOPS) {\n throw new Error('Transfer amount must be positive');\n }\n if (transferStroops > noteStroops) {\n throw new Error('Transfer amount exceeds note value');\n }\n const changeStroops = noteStroops - transferStroops;\n requireChangeRecipientWhenPartial(changeStroops, selfPrivateAddressStpl1ForChange);\n return changeStroops;\n}\n\nfunction buildSingleTransferApplicationIds(\n applicationId: string,\n changeCoin?: GeneratedOutputCoin,\n): KytApplicationIdHints {\n return [applicationId, '0', applicationId, changeCoin ? applicationId : '0'];\n}\n\nfunction buildTransferAuditParameters(parameters: {\n poolService: ReturnType<typeof getPrivacyPoolService>;\n applicationId: string;\n}) {\n const auditPublicKey = parameters.poolService.getAuditPublicKey();\n return buildPoolTransactionAuditParameters({\n applicationId: parameters.applicationId,\n ...(auditPublicKey ? { auditPublicKey } : {}),\n });\n}\n\nasync function proveTransaction(parameters: {\n sdk: InitializedPrivacySdk;\n publicInput: SenderTransferBuild['publicInput'];\n withdrawObject: ReturnType<typeof withdrawWitnessForCoin>['withdrawObject'];\n deposits: SenderTransferBuild['deposits'];\n audit: ReturnType<typeof buildTransferAuditParameters>;\n}) {\n return parameters.sdk.proveTransaction(\n parameters.publicInput as unknown as Parameters<\n typeof parameters.sdk.proveTransaction\n >[0],\n buildZeroPublicLegs(),\n [parameters.withdrawObject, 'dummy'],\n parameters.deposits,\n parameters.audit,\n );\n}\n\nasync function buildTransferProofInputs(parameters: {\n sdk: InitializedPrivacySdk;\n applicationId: string;\n input: PrepareConfidentialTransferProofParameters;\n noteStroops: bigint;\n}): Promise<{\n witness: ReturnType<typeof withdrawWitnessForCoin>['witness'];\n withdrawObject: ReturnType<typeof withdrawWitnessForCoin>['withdrawObject'];\n recipientSlot: SenderTransferBuild['recipientSlot'];\n deposits: SenderTransferBuild['deposits'];\n changeCoin: SenderTransferBuild['changeCoin'];\n publicInput: SenderTransferBuild['publicInput'];\n}> {\n const changeStroops = validateSingleCoinTransferAmounts(\n parameters.input.transferStroops,\n parameters.noteStroops,\n parameters.input.selfPrivateAddressStpl1ForChange,\n );\n const { witness, withdrawObject } = withdrawWitnessForCoin({\n sdk: parameters.sdk,\n coin: parameters.input.coin,\n state: parameters.input.state,\n ...parseEphemeralKeyString(parameters.input.depositorEphemeralKey),\n applicationId: parameters.applicationId,\n });\n const { recipientSlot, deposits, changeCoin, publicInput } =\n await buildSenderTransferDepositsAndPublicInput({\n senderGAddress: parameters.input.senderGAddress,\n senderPrivKeyScalarHex: parameters.input.senderPrivKeyScalarHex,\n recipientPrivateAddressStpl1: parameters.input.recipientPrivateAddressStpl1,\n transferStroops: parameters.input.transferStroops,\n changeStroops,\n selfPrivateAddressStpl1ForChange:\n parameters.input.selfPrivateAddressStpl1ForChange,\n tokenAddress: parameters.input.tokenAddress,\n stateRoot: witness.stateRoot,\n });\n return {\n witness,\n withdrawObject,\n recipientSlot,\n deposits,\n changeCoin,\n publicInput,\n };\n}\n\nexport async function prepareConfidentialTransferProof(\n parameters: PrepareConfidentialTransferProofParameters,\n): Promise<PrepareConfidentialTransferProofResult> {\n const poolService = getPrivacyPoolService();\n const sdk = await poolService.getInitializedSdk();\n const applicationId = poolService.getApplicationId();\n const noteStroops = BigInt(parameters.coin.value);\n const { withdrawObject, recipientSlot, deposits, changeCoin, publicInput } =\n await buildTransferProofInputs({\n sdk,\n applicationId,\n input: parameters,\n noteStroops,\n });\n const audit = buildTransferAuditParameters({ poolService, applicationId });\n const proof = await proveTransaction({\n sdk,\n publicInput,\n withdrawObject,\n deposits,\n audit,\n });\n return {\n ...proof,\n applicationIdsPlaintext: buildSingleTransferApplicationIds(\n applicationId,\n changeCoin,\n ),\n recipientCoin: generatedOutputCoinFromSlot(recipientSlot),\n ...(changeCoin ? { changeCoin } : {}),\n };\n}\n\nexport { prepareConfidentialTransferProofDual } from '../../proofs/confidential/dual.js';\n","import { Buffer } from 'buffer';\nimport { commitmentsBuffersToDecimal } from './encoding.js';\nimport type {\n CachedPoolMerkleView,\n PoolMerkleStatePort,\n LeafEphemeralStatePort,\n} from '../merkle/state-port.js';\nimport { poolMerkleStateToCachedView } from '../merkle/state-port.js';\nimport { readPoolClientFactory } from '../../contracts/contract-context.js';\nimport type { StellarTransactEnvironment } from '../environment/types.js';\n\nexport interface FetchContractMerkleResult {\n commitmentCount: number;\n commitments: string[];\n merkleRootHex: string;\n updatedAt: number;\n}\n\nfunction normalizeCommitmentBuffers(rawBuffers: Buffer[]): Buffer[] {\n return rawBuffers.map((bufferRow) =>\n Buffer.isBuffer(bufferRow) ? bufferRow : Buffer.from(bufferRow),\n );\n}\n\nfunction mergeContractMerkleWithCache(parameters: {\n poolContractId: string;\n contractCommitments: string[];\n contractCount: number;\n merkleRootHex: string;\n cachedState: CachedPoolMerkleView | undefined;\n poolMerkleState?: PoolMerkleStatePort;\n}): FetchContractMerkleResult {\n const cachedCount = parameters.cachedState?.commitments.length ?? 0;\n const shouldPreferContract =\n parameters.contractCount > cachedCount ||\n !parameters.cachedState ||\n cachedCount === 0;\n if (shouldPreferContract) {\n const updatedAt = Date.now();\n void parameters.poolMerkleState?.set({\n poolContract: parameters.poolContractId,\n commitments: parameters.contractCommitments,\n commitmentCount: parameters.contractCount,\n merkleRootHex: parameters.merkleRootHex,\n updatedAt,\n });\n return {\n commitments: parameters.contractCommitments,\n updatedAt,\n merkleRootHex: parameters.merkleRootHex,\n commitmentCount: parameters.contractCount,\n };\n }\n return {\n commitments: parameters.cachedState!.commitments,\n updatedAt: parameters.cachedState!.updatedAt,\n merkleRootHex: parameters.cachedState!.merkleRootHex ?? parameters.merkleRootHex,\n commitmentCount: parameters.cachedState!.commitments.length,\n };\n}\n\nasync function readCachedPoolMerkleView(\n poolMerkleState: PoolMerkleStatePort | undefined,\n poolContractId: string,\n): Promise<CachedPoolMerkleView | undefined> {\n if (!poolMerkleState) {\n return undefined;\n }\n const cached = await poolMerkleState.get(poolContractId);\n return cached ? poolMerkleStateToCachedView(cached) : undefined;\n}\n\nexport async function fetchAndMergeMerkleState(parameters: {\n poolContractId: string;\n walletPublicKey: string;\n transactEnvironment: StellarTransactEnvironment;\n poolMerkleState?: PoolMerkleStatePort;\n}): Promise<FetchContractMerkleResult> {\n const client = readPoolClientFactory(parameters.transactEnvironment)({\n contractId: parameters.poolContractId,\n walletPublicKey: parameters.walletPublicKey,\n networkPassphrase: parameters.transactEnvironment.network.networkPassphrase,\n sorobanRpcUrl: parameters.transactEnvironment.network.rpcUrl,\n });\n\n const commitmentsRead = await client.get_commitments();\n const rawBuffers = commitmentsRead.result as Buffer[];\n const buffers = normalizeCommitmentBuffers(rawBuffers);\n const contractCommitments = commitmentsBuffersToDecimal(buffers);\n const contractCount = contractCommitments.length;\n\n const rootRead = await client.get_merkle_root();\n const merkleRootBuffer = rootRead.result as Buffer;\n const merkleRootHex = Buffer.from(merkleRootBuffer).toString('hex');\n\n const cachedState = await readCachedPoolMerkleView(\n parameters.poolMerkleState,\n parameters.poolContractId,\n );\n return mergeContractMerkleWithCache({\n poolContractId: parameters.poolContractId,\n contractCommitments,\n contractCount,\n merkleRootHex,\n cachedState,\n ...(parameters.poolMerkleState\n ? { poolMerkleState: parameters.poolMerkleState }\n : {}),\n });\n}\n\nexport async function readLeafEphemeralHex(parameters: {\n poolContractId: string;\n walletPublicKey: string;\n leafIndex: number;\n transactEnvironment: StellarTransactEnvironment;\n leafEphemeral?: LeafEphemeralStatePort;\n}): Promise<{ xHex: string; yHex: string }> {\n const cached = await parameters.leafEphemeral?.get({\n poolContract: parameters.poolContractId,\n leafIndex: parameters.leafIndex,\n });\n if (cached?.xHex && cached.yHex) {\n return { xHex: cached.xHex, yHex: cached.yHex };\n }\n const client = readPoolClientFactory(parameters.transactEnvironment)({\n contractId: parameters.poolContractId,\n walletPublicKey: parameters.walletPublicKey,\n networkPassphrase: parameters.transactEnvironment.network.networkPassphrase,\n sorobanRpcUrl: parameters.transactEnvironment.network.rpcUrl,\n });\n const read = await client.get_leaf_ephemeral({ leaf_index: parameters.leafIndex });\n const coords = read.result;\n if (!coords?.x || !coords?.y) {\n throw new Error('Missing leaf ephemeral key on contract');\n }\n const xHex = Buffer.from(coords.x).toString('hex');\n const yHex = Buffer.from(coords.y).toString('hex');\n await parameters.leafEphemeral?.set({\n poolContract: parameters.poolContractId,\n leafIndex: parameters.leafIndex,\n xHex,\n yHex,\n cachedAt: new Date().toISOString(),\n });\n return { xHex, yHex };\n}\n","import { Buffer } from 'buffer';\n\nconst FR_ORDER =\n 0x73_ed_a7_53_29_9d_7d_48_33_39_d8_08_09_a1_d8_05_53_bd_a4_02_ff_fe_5b_fe_ff_ff_ff_ff_00_00_00_01n;\n\nfunction bufferToDecimal(buf: Buffer): string {\n const hex = buf.toString('hex');\n const bigintFromHex = BigInt(`0x${hex}`);\n const reduced = bigintFromHex % FR_ORDER;\n return reduced.toString();\n}\n\nexport function commitmentsBuffersToDecimal(buffers: Buffer[]): string[] {\n return buffers.map((bufferRow) => bufferToDecimal(bufferRow));\n}\n","import type {\n StellarLeafEphemeral,\n StellarPoolMerkleState,\n} from '../../state/domain/types.js';\n\nexport interface PoolMerkleStatePort {\n get(poolContract: string): Promise<StellarPoolMerkleState | undefined>;\n set(state: StellarPoolMerkleState): Promise<void>;\n}\n\nexport interface LeafEphemeralStatePort {\n get(input: {\n poolContract: string;\n leafIndex: number;\n }): Promise<StellarLeafEphemeral | undefined>;\n set(ephemeral: StellarLeafEphemeral): Promise<void>;\n}\n\nexport interface CachedPoolMerkleView {\n commitments: string[];\n updatedAt: number;\n merkleRootHex?: string;\n}\n\nexport function poolMerkleStateToCachedView(\n state: StellarPoolMerkleState,\n): CachedPoolMerkleView {\n return {\n commitments: state.commitments,\n updatedAt: state.updatedAt,\n merkleRootHex: state.merkleRootHex,\n };\n}\n","export const STELLAR_STATE_PATHS = {\n privateRecords: '$.privateRecords',\n pendingClaimsItems: '$.pendingClaims.items',\n pendingClaimsPagination: '$.pendingClaims.pagination',\n pendingClaimsCountByOwner: '$.pendingClaims.countByOwner',\n registryPrivateAddresses: '$.registry.privateAddresses',\n registryRegisteredAddresses: '$.registry.registeredAddresses',\n registryLookups: '$.registry.lookups',\n assets: '$.assets',\n assetsById: '$.assets.byId',\n assetsListOrder: '$.assets.listOrder',\n publicBalances: '$.balances.publicByOwnerAsset',\n poolsByContract: '$.pools.byContract',\n poolsLeafEphemeral: '$.pools.leafEphemeralByContractAndIndex',\n deliveriesIncomingById: '$.deliveries.incomingById',\n deliveriesSync: '$.deliveries.syncByPrivateAddressAsset',\n transactionsByHash: '$.transactions.byHash',\n walletPrivateAddressScalars: '$.wallet.privateAddressScalars',\n walletPrivateAddressRecords: '$.wallet.privateAddressRecords',\n walletDefaultPrivateAddressNonce: '$.wallet.defaultPrivateAddressNonce',\n} as const;\n","import { z } from 'zod';\n\nexport const pendingClaimSchema = z.object({\n id: z.string().min(1),\n owner: z.string().min(1),\n asset: z.string().min(1),\n amount: z.coerce.bigint(),\n createdAt: z.string().min(1),\n poolTxId: z.string().optional(),\n commitmentHex: z.string().optional(),\n nullifierHex: z.string().optional(),\n futureNullifierHashHex: z.string().optional(),\n assetHiHex: z.string().optional(),\n assetLoHex: z.string().optional(),\n nullifierFieldHex: z.string().optional(),\n secretHex: z.string().optional(),\n tempPublicKeyXHex: z.string().optional(),\n tempPublicKeyYHex: z.string().optional(),\n encryptedRecoveryBase64: z.string().optional(),\n createdAtLedger: z.number().int().optional(),\n});\n\nexport const paginationSchema = z.object({\n total: z.number().int().nonnegative(),\n page: z.number().int().positive(),\n pageSize: z.number().int().positive(),\n hasMore: z.boolean(),\n});\n\nconst stellarPrivateCoinNoteSchema = z.object({\n value: z.string(),\n nullifier: z.string(),\n secret: z.string(),\n commitment: z.string(),\n asset_hi: z.string(),\n asset_lo: z.string(),\n application_id: z.string().optional(),\n});\n\nexport const privateRecordSchema = z.object({\n id: z.string().min(1),\n owner: z.string().min(1),\n asset: z.string().min(1),\n amount: z.coerce.bigint(),\n consumed: z.boolean(),\n status: z.enum(['pending', 'finalized', 'spent']).optional(),\n poolContract: z.string().optional(),\n commitmentHex: z.string().optional(),\n nullifierHex: z.string().optional(),\n amountDisplay: z.number().optional(),\n deliveryId: z.number().int().optional(),\n privateAddress: z.string().optional(),\n txHash: z.string().optional(),\n coinNote: stellarPrivateCoinNoteSchema.optional(),\n depositScalarHex: z.string().optional(),\n precommitementHex: z.string().optional(),\n});\n\nexport const assetSchema = z.object({\n id: z.number().int(),\n assetId: z.string().min(1),\n name: z.string().min(1),\n logoUrl: z.string().nullable(),\n issuerAddress: z.string().nullable(),\n clientContract: z.string().nullable(),\n poolContracts: z.array(z.string()),\n poolContract: z.string().min(1),\n mintable: z.boolean(),\n mintAmount: z.string().nullable(),\n decimals: z.number().int().nullable().optional(),\n});\n\nexport const publicBalanceSchema = z.object({\n owner: z.string().min(1),\n asset: z.string().min(1),\n balance: z.string(),\n trustlineStatus: z.enum(['active', 'inactive', 'none']),\n});\n\nexport const registryLookupSchema = z.object({\n owner: z.string().min(1),\n status: z.enum(['registered', 'unregistered']),\n privateAddressStpl1: z.string().optional(),\n publicKeyXHex: z.string().optional(),\n publicKeyYHex: z.string().optional(),\n updatedAtLedger: z.number().int().optional(),\n cachedAt: z.string().optional(),\n});\n\nexport const walletPrivateAddressScalarSchema = z.object({\n owner: z.string().min(1),\n nonce: z.string().min(1),\n scalarHex: z.string().min(1),\n updatedAt: z.string().optional(),\n});\n\nexport const walletPrivateAddressRecordSchema = z.object({\n owner: z.string().min(1),\n nonce: z.string().min(1),\n privateAddress: z.string().min(1),\n createdAt: z.number(),\n});\n\nexport const poolMerkleStateSchema = z.object({\n poolContract: z.string().min(1),\n commitments: z.array(z.string()),\n commitmentCount: z.number().int().nonnegative(),\n merkleRootHex: z.string().min(1),\n updatedAt: z.number(),\n syncedLedger: z.number().int().optional(),\n});\n\nexport const leafEphemeralSchema = z.object({\n poolContract: z.string().min(1),\n leafIndex: z.number().int().nonnegative(),\n xHex: z.string().min(1),\n yHex: z.string().min(1),\n cachedAt: z.string().optional(),\n});\n\nexport const incomingDeliverySchema = z.object({\n id: z.number().int(),\n privateAddress: z.string().min(1),\n asset: z.string().min(1),\n ciphertextBase64: z.string().min(1),\n ephemeralKey: z.string().min(1),\n tagBase64: z.string().min(1),\n createdAt: z.string().min(1),\n processed: z.boolean().optional(),\n});\n\nexport const deliverySyncStateSchema = z.object({\n privateAddress: z.string().min(1),\n asset: z.string().min(1),\n bloomM: z.number().int().positive(),\n bloomK: z.number().int().positive(),\n bloomBitsBase64: z.string().optional(),\n lastPage: z.number().int().positive().optional(),\n lastPolledAt: z.string().optional(),\n});\n\nexport const transactionStatusSchema = z.object({\n txHash: z.string().min(1),\n status: z.enum(['pending', 'success', 'failed']),\n ledger: z.number().int().optional(),\n createdAt: z.string().optional(),\n});\n","export function withoutUndefinedFields<T extends Record<string, unknown>>(value: T): T {\n const next = {} as T;\n for (const [key, fieldValue] of Object.entries(value)) {\n if (fieldValue !== undefined) {\n Reflect.set(next, key, fieldValue);\n }\n }\n return next;\n}\n","import { assetSchema, publicBalanceSchema } from '../../schemas/shared.js';\nimport type {\n StellarAsset,\n StellarAssetsCatalog,\n StellarPublicBalance,\n} from '../../domain/types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport function normalizeAssetsCatalog(value: unknown): StellarAssetsCatalog {\n if (typeof value !== 'object' || value === null) {\n return { byId: {}, listOrder: [] };\n }\n const record = value as Record<string, unknown>;\n const byIdRaw = record.byId;\n const listOrderRaw = record.listOrder;\n const byId: Record<string, StellarAsset> = {};\n if (typeof byIdRaw === 'object' && byIdRaw !== null) {\n for (const [key, entry] of Object.entries(byIdRaw)) {\n const parsed = assetSchema.safeParse(entry);\n if (parsed.success) {\n byId[key] = withoutUndefinedFields(parsed.data) as StellarAsset;\n }\n }\n }\n const listOrder = Array.isArray(listOrderRaw)\n ? listOrderRaw.filter((item): item is string => typeof item === 'string')\n : [];\n return { byId, listOrder };\n}\n\nexport function normalizeAsset(value: unknown): StellarAsset | undefined {\n const parsed = assetSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarAsset)\n : undefined;\n}\n\nexport function normalizePublicBalance(\n value: unknown,\n): StellarPublicBalance | undefined {\n const parsed = publicBalanceSchema.safeParse(value);\n return parsed.success ? parsed.data : undefined;\n}\n\nexport function normalizePublicBalancesFromEntries(\n value: unknown,\n owner: string,\n): StellarPublicBalance[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .map((entry) => {\n if (!Array.isArray(entry) || entry.length < 2) {\n return;\n }\n const [key, balanceValue] = entry;\n if (typeof key !== 'string' || !key.startsWith(`${owner}:`)) {\n return;\n }\n return normalizePublicBalance(balanceValue);\n })\n .filter((balance): balance is StellarPublicBalance => balance !== undefined);\n}\n","import { paginationSchema, pendingClaimSchema } from '../../schemas/shared.js';\nimport type {\n StellarPendingClaim,\n StellarPendingClaimsState,\n} from '../../domain/types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport function normalizePendingClaimsState(value: unknown): StellarPendingClaimsState {\n if (typeof value !== 'object' || value === null) {\n return { items: [] };\n }\n\n const record = value as Record<string, unknown>;\n const items = Array.isArray(record.items)\n ? record.items.flatMap((item) => {\n const parsed = pendingClaimSchema.safeParse(item);\n return parsed.success\n ? [withoutUndefinedFields(parsed.data) as StellarPendingClaim]\n : [];\n })\n : [];\n\n const paginationResult = paginationSchema.safeParse(record.pagination);\n if (paginationResult.success) {\n return { items, pagination: paginationResult.data };\n }\n return { items };\n}\n\nexport function normalizePendingClaimsCount(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isInteger(value) && value >= 0\n ? value\n : undefined;\n}\n","import {\n deliverySyncStateSchema,\n incomingDeliverySchema,\n} from '../../schemas/shared.js';\nimport type {\n StellarDeliverySyncState,\n StellarIncomingDelivery,\n} from '../../domain/types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport function normalizeIncomingDeliveries(value: unknown): StellarIncomingDelivery[] {\n const entries =\n typeof value === 'object' && value !== null && !Array.isArray(value)\n ? Object.values(value)\n : value;\n if (!Array.isArray(entries)) {\n return [];\n }\n return entries.flatMap((entry) => {\n const parsed = incomingDeliverySchema.safeParse(entry);\n return parsed.success\n ? [withoutUndefinedFields(parsed.data) as StellarIncomingDelivery]\n : [];\n });\n}\n\nexport function normalizeDeliverySyncState(\n value: unknown,\n): StellarDeliverySyncState | undefined {\n const parsed = deliverySyncStateSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarDeliverySyncState)\n : undefined;\n}\n","import { leafEphemeralSchema, poolMerkleStateSchema } from '../../schemas/shared.js';\nimport type {\n StellarLeafEphemeral,\n StellarPoolMerkleState,\n} from '../../domain/types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport function normalizePoolMerkleState(\n value: unknown,\n): StellarPoolMerkleState | undefined {\n const parsed = poolMerkleStateSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarPoolMerkleState)\n : undefined;\n}\n\nexport function normalizeLeafEphemeral(\n value: unknown,\n): StellarLeafEphemeral | undefined {\n const parsed = leafEphemeralSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarLeafEphemeral)\n : undefined;\n}\n","import { registryLookupSchema } from '../../schemas/shared.js';\nimport type { StellarRegistryLookup } from '../../domain/types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport function normalizeCachedPrivateAddress(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nexport function normalizeRegistryLookup(\n value: unknown,\n): StellarRegistryLookup | undefined {\n const parsed = registryLookupSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarRegistryLookup)\n : undefined;\n}\n\nexport function normalizeRegistryLookupFromLegacy(input: {\n address: string;\n registered: unknown;\n privateAddress: unknown;\n}): StellarRegistryLookup | undefined {\n const lookup = normalizeRegistryLookup(\n typeof input.registered === 'object' && input.registered !== null\n ? input.registered\n : undefined,\n );\n if (lookup) {\n return lookup;\n }\n if (input.registered === undefined && input.privateAddress === undefined) {\n return undefined;\n }\n const registered = Boolean(input.registered);\n const privateAddressStpl1 = normalizeCachedPrivateAddress(input.privateAddress);\n if (!registered && privateAddressStpl1 === undefined) {\n return { owner: input.address, status: 'unregistered' };\n }\n return withoutUndefinedFields({\n owner: input.address,\n status: registered ? 'registered' : 'unregistered',\n ...(privateAddressStpl1 === undefined ? {} : { privateAddressStpl1 }),\n }) as StellarRegistryLookup;\n}\n","import { z } from 'zod';\nimport { privateRecordSchema, transactionStatusSchema } from '../../schemas/shared.js';\nimport type {\n StellarPrivateRecord,\n StellarTransactionStatus,\n} from '../../domain/types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport function normalizePrivateRecords(value: unknown): StellarPrivateRecord[] {\n if (!Array.isArray(value)) {\n return [];\n }\n const records = value.flatMap((item) => {\n const parsed = privateRecordSchema.safeParse(item);\n return parsed.success ? [normalizePrivateRecordFields(parsed.data)] : [];\n });\n return deduplicatePrivateRecords(records);\n}\n\nexport function normalizeTransactionStatus(\n value: unknown,\n): StellarTransactionStatus | undefined {\n const parsed = transactionStatusSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarTransactionStatus)\n : undefined;\n}\n\nfunction privateRecordCommitmentKey(record: StellarPrivateRecord): string {\n return (\n record.commitmentHex?.trim() ||\n record.coinNote?.commitment.trim() ||\n record.id.trim()\n )\n .replace(/^0x/iu, '')\n .toLowerCase();\n}\n\nfunction normalizePrivateRecordFields(\n record: z.infer<typeof privateRecordSchema>,\n): StellarPrivateRecord {\n const normalized = withoutUndefinedFields(record) as StellarPrivateRecord;\n if (!normalized.privateAddress && normalized.owner.trim().startsWith('stpl')) {\n return { ...normalized, privateAddress: normalized.owner.trim() };\n }\n return normalized;\n}\n\nfunction preferPrivateRecord(\n current: StellarPrivateRecord,\n incoming: StellarPrivateRecord,\n key: string,\n): StellarPrivateRecord {\n if (privateRecordIdKey(incoming) === key) {\n return incoming;\n }\n if (privateRecordIdKey(current) === key) {\n return current;\n }\n return incoming;\n}\n\nfunction privateRecordIdKey(record: StellarPrivateRecord): string {\n return record.id.trim().replace(/^0x/iu, '').toLowerCase();\n}\n\nfunction deduplicatePrivateRecords(\n records: StellarPrivateRecord[],\n): StellarPrivateRecord[] {\n const byCommitment = new Map<string, StellarPrivateRecord>();\n for (const record of records) {\n const key = privateRecordCommitmentKey(record);\n const current = byCommitment.get(key);\n byCommitment.set(key, current ? preferPrivateRecord(current, record, key) : record);\n }\n return [...byCommitment.values()];\n}\n","import {\n walletPrivateAddressScalarSchema,\n walletPrivateAddressRecordSchema,\n} from '../../schemas/shared.js';\nimport type {\n StellarWalletPrivateAddressScalar,\n StellarWalletPrivateAddressRecord,\n} from '../../domain/types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport function normalizeWalletPrivateAddressScalar(\n value: unknown,\n): StellarWalletPrivateAddressScalar | undefined {\n const parsed = walletPrivateAddressScalarSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarWalletPrivateAddressScalar)\n : undefined;\n}\n\nexport function normalizeWalletPrivateAddressRecord(\n value: unknown,\n): StellarWalletPrivateAddressRecord | undefined {\n const parsed = walletPrivateAddressRecordSchema.safeParse(value);\n return parsed.success\n ? (withoutUndefinedFields(parsed.data) as StellarWalletPrivateAddressRecord)\n : undefined;\n}\n\nexport function normalizeWalletDefaultPrivateAddressNonce(\n value: unknown,\n): string | undefined {\n return typeof value === 'string' ? value.trim() || undefined : undefined;\n}\n","import { registerArrayFilterItemSchema } from '@arcanetech/privacy-sdk-core/state';\nimport { pendingClaimSchema, privateRecordSchema } from '../schemas/shared.js';\nimport { stellarArrayFilterSchemaKeys } from './ops.js';\n\nlet registered = false;\n\nexport function registerStellarArrayFilterSchemas(): void {\n if (registered) {\n return;\n }\n registerArrayFilterItemSchema(\n stellarArrayFilterSchemaKeys.privateRecord,\n privateRecordSchema,\n );\n registerArrayFilterItemSchema(\n stellarArrayFilterSchemaKeys.pendingClaim,\n pendingClaimSchema,\n );\n registered = true;\n}\n","import type { ArrayFilterRejectMatch } from '@arcanetech/privacy-sdk-core/state';\nimport { STELLAR_STATE_PATHS } from '../foundation/paths.js';\n\nexport const stellarArrayFilterSchemaKeys = {\n privateRecord: 'privateRecord',\n pendingClaim: 'pendingClaim',\n} as const;\n\nexport function rejectPrivateRecordsByIds(ids: string[]) {\n return {\n opType: 'arrayFilter' as const,\n jsonPath: STELLAR_STATE_PATHS.privateRecords,\n itemSchemaKey: stellarArrayFilterSchemaKeys.privateRecord,\n rejectWhen: {\n op: 'fieldIn' as const,\n field: 'id',\n values: ids,\n },\n };\n}\n\nexport function rejectConsumedPrivateRecords() {\n return {\n opType: 'arrayFilter' as const,\n jsonPath: STELLAR_STATE_PATHS.privateRecords,\n itemSchemaKey: stellarArrayFilterSchemaKeys.privateRecord,\n rejectWhen: {\n op: 'fieldEquals' as const,\n field: 'consumed',\n value: true,\n },\n };\n}\n\nexport function rejectPendingClaimsByOwner(owner: string) {\n return {\n opType: 'arrayFilter' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsItems,\n itemSchemaKey: stellarArrayFilterSchemaKeys.pendingClaim,\n rejectWhen: {\n op: 'fieldEquals' as const,\n field: 'owner',\n value: owner,\n },\n };\n}\n\nexport function rejectPendingClaimsByIds(ids: string[]) {\n return {\n opType: 'arrayFilter' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsItems,\n itemSchemaKey: stellarArrayFilterSchemaKeys.pendingClaim,\n rejectWhen: {\n op: 'fieldIn' as const,\n field: 'id',\n values: ids,\n },\n };\n}\n\nexport function rejectPendingClaimsByOwnerAndAsset(input: {\n owner?: string | undefined;\n asset?: string | undefined;\n}) {\n const matches: ArrayFilterRejectMatch[] = [];\n if (input.owner !== undefined) {\n matches.push({\n op: 'fieldEquals',\n field: 'owner',\n value: input.owner,\n });\n }\n if (input.asset !== undefined) {\n matches.push({\n op: 'fieldEquals',\n field: 'asset',\n value: input.asset,\n });\n }\n\n return {\n opType: 'arrayFilter' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsItems,\n itemSchemaKey: stellarArrayFilterSchemaKeys.pendingClaim,\n rejectWhen: {\n op: 'and' as const,\n matches,\n },\n };\n}\n","import { type StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport type { StellarAddress, StellarAssetId } from '../../types.js';\n\nexport const stellarStateCallTypes = {\n pendingClaims: 'pendingClaims',\n clearPendingClaims: 'clearPendingClaims',\n readPendingClaims: 'readPendingClaims',\n replacePendingClaimsPage: 'replacePendingClaimsPage',\n upsertPendingClaims: 'upsertPendingClaims',\n removePendingClaims: 'removePendingClaims',\n setPendingClaimsCount: 'setPendingClaimsCount',\n readPendingClaimsCount: 'readPendingClaimsCount',\n readStellarAddressRegistered: 'readStellarAddressRegistered',\n readCachedPrivateAddress: 'readCachedPrivateAddress',\n readRegistryLookup: 'readRegistryLookup',\n saveRegisteredPrivateAddress: 'saveRegisteredPrivateAddress',\n saveRegistryLookup: 'saveRegistryLookup',\n invalidateRegisteredAddress: 'invalidateRegisteredAddress',\n invalidateRegistryLookup: 'invalidateRegistryLookup',\n readAssetsCatalog: 'readAssetsCatalog',\n readAsset: 'readAsset',\n replaceAssets: 'replaceAssets',\n upsertAssets: 'upsertAssets',\n readPublicBalance: 'readPublicBalance',\n readPublicBalances: 'readPublicBalances',\n setPublicBalance: 'setPublicBalance',\n setPublicBalances: 'setPublicBalances',\n readPoolMerkleState: 'readPoolMerkleState',\n setPoolMerkleState: 'setPoolMerkleState',\n readLeafEphemeral: 'readLeafEphemeral',\n setLeafEphemeral: 'setLeafEphemeral',\n listPrivateRecords: 'listPrivateRecords',\n savePrivateRecords: 'savePrivateRecords',\n replacePrivateRecords: 'replacePrivateRecords',\n upsertPrivateRecords: 'upsertPrivateRecords',\n pruneConsumedPrivateRecords: 'pruneConsumedPrivateRecords',\n readIncomingDeliveries: 'readIncomingDeliveries',\n upsertIncomingDeliveries: 'upsertIncomingDeliveries',\n readDeliverySyncState: 'readDeliverySyncState',\n setDeliverySyncState: 'setDeliverySyncState',\n readTransactionStatus: 'readTransactionStatus',\n setTransactionStatus: 'setTransactionStatus',\n clearTransactionStatus: 'clearTransactionStatus',\n saveWalletPrivateAddressScalar: 'saveWalletPrivateAddressScalar',\n readWalletPrivateAddressScalar: 'readWalletPrivateAddressScalar',\n saveWalletPrivateAddressRecord: 'saveWalletPrivateAddressRecord',\n readWalletPrivateAddressRecord: 'readWalletPrivateAddressRecord',\n setWalletDefaultPrivateAddressNonce: 'setWalletDefaultPrivateAddressNonce',\n readWalletDefaultPrivateAddressNonce: 'readWalletDefaultPrivateAddressNonce',\n deleteWalletPrivateAddressScalar: 'deleteWalletPrivateAddressScalar',\n} as const;\n\nexport type StellarStateDefinition = StateBridgeDefinition;\n\nexport interface StellarPublicBalanceInput {\n owner: StellarAddress;\n asset: StellarAssetId;\n balance: string;\n trustlineStatus: 'active' | 'inactive' | 'none';\n}\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { assetSchema } from '../shared.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\n\nexport const readAssetsCatalogSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readAssetsCatalog),\n })\n .transform(({ type }) => ({\n type,\n operations: [\n {\n opType: 'primitiveGet' as const,\n jsonPath: STELLAR_STATE_PATHS.assets,\n },\n ],\n }));\n\nexport const readAssetSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readAsset),\n assetId: z.string().min(1),\n })\n .transform(({ type, assetId }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.assetsById,\n key: assetId,\n },\n ],\n }));\n\nexport const replaceAssetsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.replaceAssets),\n assets: z.array(assetSchema),\n })\n .transform(({ type, assets }) => {\n const byId: Record<string, unknown> = {};\n const listOrder: string[] = [];\n for (const asset of assets) {\n Reflect.set(byId, asset.assetId, withoutUndefinedFields(asset));\n listOrder.push(asset.assetId);\n }\n return {\n type,\n operations: [\n {\n opType: 'primitiveSet' as const,\n jsonPath: STELLAR_STATE_PATHS.assets,\n value: { byId, listOrder },\n },\n ],\n };\n });\n\nexport const upsertAssetsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.upsertAssets),\n assets: z.array(assetSchema),\n })\n .transform(({ type, assets }) => ({\n type,\n operations: assets.map((asset) => ({\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.assetsById,\n key: asset.assetId,\n value: asset,\n })),\n }));\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\nimport {\n readAssetsCatalogSchema,\n readAssetSchema,\n replaceAssetsSchema,\n upsertAssetsSchema,\n} from '../schemas/assets/catalog.js';\n\nexport const stellarAssetsStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.readAssetsCatalog,\n mode: 'read',\n schema: readAssetsCatalogSchema,\n },\n {\n type: stellarStateCallTypes.readAsset,\n mode: 'read',\n schema: readAssetSchema,\n },\n {\n type: stellarStateCallTypes.replaceAssets,\n mode: 'write',\n schema: replaceAssetsSchema,\n },\n {\n type: stellarStateCallTypes.upsertAssets,\n mode: 'write',\n schema: upsertAssetsSchema,\n },\n];\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { ownerAssetKey } from '../../foundation/keys.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { publicBalanceSchema } from '../shared.js';\n\nexport const readPublicBalanceSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readPublicBalance),\n owner: z.string().min(1),\n asset: z.string().min(1),\n })\n .transform(({ type, owner, asset }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.publicBalances,\n key: ownerAssetKey(owner, asset),\n },\n ],\n }));\n\nexport const readPublicBalancesSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readPublicBalances),\n owner: z.string().min(1),\n })\n .transform(({ type }) => ({\n type,\n operations: [\n {\n opType: 'recordEntries' as const,\n jsonPath: STELLAR_STATE_PATHS.publicBalances,\n },\n ],\n }));\n\nexport const setPublicBalanceSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setPublicBalance),\n balance: publicBalanceSchema,\n })\n .transform(({ type, balance }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.publicBalances,\n key: ownerAssetKey(balance.owner, balance.asset),\n value: balance,\n },\n ],\n }));\n\nexport const setPublicBalancesSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setPublicBalances),\n owner: z.string().min(1),\n balances: z.array(publicBalanceSchema),\n })\n .transform(({ type, owner, balances }) => ({\n type,\n operations: balances.map((balance) => ({\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.publicBalances,\n key: ownerAssetKey(owner, balance.asset),\n value: { ...balance, owner },\n })),\n }));\n","import type { StellarAddress, StellarAssetId } from '../../types.js';\n\nexport function ownerAssetKey(owner: StellarAddress, asset: StellarAssetId): string {\n return `${owner}:${asset}`;\n}\n\nexport function readRecordValue<T>(\n record: Record<string, T>,\n key: string,\n): T | undefined {\n if (!Object.hasOwn(record, key)) {\n return undefined;\n }\n return Reflect.get(record, key) as T | undefined;\n}\n\nexport function poolLeafKey(poolContract: string, leafIndex: number): string {\n return `${poolContract}:${leafIndex}`;\n}\n\nexport function privateAddressAssetKey(\n privateAddress: string,\n asset: StellarAssetId,\n): string {\n return `${privateAddress}:${asset}`;\n}\n\nexport function walletOwnerNonceKey(owner: StellarAddress, nonce: string): string {\n return `${owner}:${nonce}`;\n}\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\nimport {\n readPublicBalanceSchema,\n readPublicBalancesSchema,\n setPublicBalanceSchema,\n setPublicBalancesSchema,\n} from '../schemas/assets/balances.js';\n\nexport const stellarBalancesStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.readPublicBalance,\n mode: 'read',\n schema: readPublicBalanceSchema,\n },\n {\n type: stellarStateCallTypes.readPublicBalances,\n mode: 'read',\n schema: readPublicBalancesSchema,\n },\n {\n type: stellarStateCallTypes.setPublicBalance,\n mode: 'write',\n schema: setPublicBalanceSchema,\n },\n {\n type: stellarStateCallTypes.setPublicBalances,\n mode: 'write',\n schema: setPublicBalancesSchema,\n },\n];\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { rejectPendingClaimsByOwnerAndAsset } from '../../filters/ops.js';\nimport { paginationSchema, pendingClaimSchema } from '../shared.js';\n\nexport const pendingClaimsWriteSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.pendingClaims),\n claims: z.array(pendingClaimSchema),\n paginationInfo: paginationSchema,\n })\n .transform(({ type, claims, paginationInfo }) => ({\n type,\n operations: [\n {\n opType: 'arrayPush' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsItems,\n items: claims,\n },\n {\n opType: 'primitiveSet' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsPagination,\n value: paginationInfo,\n },\n ],\n }));\n\nexport const clearPendingClaimsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.clearPendingClaims),\n owner: z.string().optional(),\n asset: z.string().optional(),\n })\n .transform(({ type, owner, asset }) => {\n if (owner === undefined && asset === undefined) {\n return {\n type,\n operations: [\n {\n opType: 'arrayClean' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsItems,\n },\n ],\n };\n }\n\n return {\n type,\n operations: [rejectPendingClaimsByOwnerAndAsset({ owner, asset })],\n };\n });\n\nexport const readPendingClaimsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readPendingClaims),\n })\n .transform(({ type }) => ({\n type,\n operations: [\n {\n opType: 'primitiveGet' as const,\n jsonPath: '$.pendingClaims',\n },\n ],\n }));\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport {\n rejectPendingClaimsByIds,\n rejectPendingClaimsByOwner,\n} from '../../filters/ops.js';\nimport { pendingClaimSchema } from '../shared.js';\n\nconst pendingClaimBridgeItemSchema = pendingClaimSchema;\n\nexport const replacePendingClaimsPageSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.replacePendingClaimsPage),\n owner: z.string().min(1),\n claims: z.array(pendingClaimBridgeItemSchema),\n paginationInfo: z.object({\n total: z.number().int().nonnegative(),\n page: z.number().int().positive(),\n pageSize: z.number().int().positive(),\n hasMore: z.boolean(),\n }),\n count: z.number().int().nonnegative().optional(),\n })\n .transform(({ type, owner, claims, paginationInfo, count }) => ({\n type,\n operations: [\n rejectPendingClaimsByOwner(owner),\n {\n opType: 'arrayPush' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsItems,\n items: claims,\n },\n {\n opType: 'primitiveSet' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsPagination,\n value: paginationInfo,\n },\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsCountByOwner,\n key: owner,\n value: count ?? paginationInfo.total,\n },\n ],\n }));\n\nexport const upsertPendingClaimsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.upsertPendingClaims),\n claims: z.array(pendingClaimBridgeItemSchema),\n })\n .transform(({ type, claims }) => ({\n type,\n operations: [\n rejectPendingClaimsByIds(claims.map((claim) => claim.id)),\n {\n opType: 'arrayPush' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsItems,\n items: claims,\n },\n ],\n }));\n\nexport const removePendingClaimsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.removePendingClaims),\n ids: z.array(z.string().min(1)),\n })\n .transform(({ type, ids }) => ({\n type,\n operations: [rejectPendingClaimsByIds(ids)],\n }));\n\nexport const readPendingClaimsCountSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readPendingClaimsCount),\n owner: z.string().min(1),\n })\n .transform(({ type, owner }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsCountByOwner,\n key: owner,\n },\n ],\n }));\n\nexport const setPendingClaimsCountSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setPendingClaimsCount),\n owner: z.string().min(1),\n count: z.number().int().nonnegative(),\n })\n .transform(({ type, owner, count }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.pendingClaimsCountByOwner,\n key: owner,\n value: count,\n },\n ],\n }));\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\nimport {\n clearPendingClaimsSchema,\n pendingClaimsWriteSchema,\n readPendingClaimsSchema,\n} from '../schemas/claims/write.js';\nimport {\n readPendingClaimsCountSchema,\n removePendingClaimsSchema,\n replacePendingClaimsPageSchema,\n setPendingClaimsCountSchema,\n upsertPendingClaimsSchema,\n} from '../schemas/claims/page.js';\n\nexport const stellarClaimsStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.pendingClaims,\n mode: 'write',\n schema: pendingClaimsWriteSchema,\n },\n {\n type: stellarStateCallTypes.clearPendingClaims,\n mode: 'write',\n schema: clearPendingClaimsSchema,\n },\n {\n type: stellarStateCallTypes.readPendingClaims,\n mode: 'read',\n schema: readPendingClaimsSchema,\n },\n {\n type: stellarStateCallTypes.replacePendingClaimsPage,\n mode: 'write',\n schema: replacePendingClaimsPageSchema,\n },\n {\n type: stellarStateCallTypes.upsertPendingClaims,\n mode: 'write',\n schema: upsertPendingClaimsSchema,\n },\n {\n type: stellarStateCallTypes.removePendingClaims,\n mode: 'write',\n schema: removePendingClaimsSchema,\n },\n {\n type: stellarStateCallTypes.readPendingClaimsCount,\n mode: 'read',\n schema: readPendingClaimsCountSchema,\n },\n {\n type: stellarStateCallTypes.setPendingClaimsCount,\n mode: 'write',\n schema: setPendingClaimsCountSchema,\n },\n];\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { privateAddressAssetKey } from '../../foundation/keys.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { deliverySyncStateSchema, incomingDeliverySchema } from '../shared.js';\n\nexport const readIncomingDeliveriesSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readIncomingDeliveries),\n })\n .transform(({ type }) => ({\n type,\n operations: [\n {\n opType: 'primitiveGet' as const,\n jsonPath: STELLAR_STATE_PATHS.deliveriesIncomingById,\n },\n ],\n }));\n\nexport const upsertIncomingDeliveriesSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.upsertIncomingDeliveries),\n deliveries: z.array(incomingDeliverySchema),\n })\n .transform(({ type, deliveries }) => ({\n type,\n operations: deliveries.map((delivery) => ({\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.deliveriesIncomingById,\n key: String(delivery.id),\n value: delivery,\n })),\n }));\n\nexport const readDeliverySyncStateSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readDeliverySyncState),\n privateAddress: z.string().min(1),\n asset: z.string().min(1),\n })\n .transform(({ type, privateAddress, asset }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.deliveriesSync,\n key: privateAddressAssetKey(privateAddress, asset),\n },\n ],\n }));\n\nexport const setDeliverySyncStateSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setDeliverySyncState),\n syncState: deliverySyncStateSchema,\n })\n .transform(({ type, syncState }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.deliveriesSync,\n key: privateAddressAssetKey(syncState.privateAddress, syncState.asset),\n value: syncState,\n },\n ],\n }));\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\nimport {\n readDeliverySyncStateSchema,\n readIncomingDeliveriesSchema,\n setDeliverySyncStateSchema,\n upsertIncomingDeliveriesSchema,\n} from '../schemas/claims/deliveries.js';\n\nexport const stellarDeliveriesStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.readIncomingDeliveries,\n mode: 'read',\n schema: readIncomingDeliveriesSchema,\n },\n {\n type: stellarStateCallTypes.upsertIncomingDeliveries,\n mode: 'write',\n schema: upsertIncomingDeliveriesSchema,\n },\n {\n type: stellarStateCallTypes.readDeliverySyncState,\n mode: 'read',\n schema: readDeliverySyncStateSchema,\n },\n {\n type: stellarStateCallTypes.setDeliverySyncState,\n mode: 'write',\n schema: setDeliverySyncStateSchema,\n },\n];\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { poolLeafKey } from '../../foundation/keys.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { leafEphemeralSchema, poolMerkleStateSchema } from '../shared.js';\n\nexport const readPoolMerkleStateSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readPoolMerkleState),\n poolContract: z.string().min(1),\n })\n .transform(({ type, poolContract }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.poolsByContract,\n key: poolContract,\n },\n ],\n }));\n\nexport const setPoolMerkleStateSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setPoolMerkleState),\n state: poolMerkleStateSchema,\n })\n .transform(({ type, state }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.poolsByContract,\n key: state.poolContract,\n value: state,\n },\n ],\n }));\n\nexport const readLeafEphemeralSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readLeafEphemeral),\n poolContract: z.string().min(1),\n leafIndex: z.number().int().nonnegative(),\n })\n .transform(({ type, poolContract, leafIndex }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.poolsLeafEphemeral,\n key: poolLeafKey(poolContract, leafIndex),\n },\n ],\n }));\n\nexport const setLeafEphemeralSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setLeafEphemeral),\n ephemeral: leafEphemeralSchema,\n })\n .transform(({ type, ephemeral }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.poolsLeafEphemeral,\n key: poolLeafKey(ephemeral.poolContract, ephemeral.leafIndex),\n value: ephemeral,\n },\n ],\n }));\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\nimport {\n readLeafEphemeralSchema,\n readPoolMerkleStateSchema,\n setLeafEphemeralSchema,\n setPoolMerkleStateSchema,\n} from '../schemas/pool/merkle.js';\n\nexport const stellarPoolStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.readPoolMerkleState,\n mode: 'read',\n schema: readPoolMerkleStateSchema,\n },\n {\n type: stellarStateCallTypes.setPoolMerkleState,\n mode: 'write',\n schema: setPoolMerkleStateSchema,\n },\n {\n type: stellarStateCallTypes.readLeafEphemeral,\n mode: 'read',\n schema: readLeafEphemeralSchema,\n },\n {\n type: stellarStateCallTypes.setLeafEphemeral,\n mode: 'write',\n schema: setLeafEphemeralSchema,\n },\n];\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { rejectConsumedPrivateRecords } from '../../filters/ops.js';\nimport { privateRecordSchema } from '../shared.js';\n\nexport const listPrivateRecordsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.listPrivateRecords),\n })\n .transform(({ type }) => ({\n type,\n operations: [\n {\n opType: 'primitiveGet' as const,\n jsonPath: STELLAR_STATE_PATHS.privateRecords,\n },\n ],\n }));\n\nexport const savePrivateRecordsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.savePrivateRecords),\n records: z.array(privateRecordSchema),\n })\n .transform(({ type, records }) => ({\n type,\n operations: [\n {\n opType: 'arrayPush' as const,\n jsonPath: STELLAR_STATE_PATHS.privateRecords,\n items: records,\n },\n ],\n }));\n\nexport const replacePrivateRecordsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.replacePrivateRecords),\n records: z.array(privateRecordSchema),\n })\n .transform(({ type, records }) => ({\n type,\n operations: [\n {\n opType: 'arrayClean' as const,\n jsonPath: STELLAR_STATE_PATHS.privateRecords,\n },\n {\n opType: 'arrayPush' as const,\n jsonPath: STELLAR_STATE_PATHS.privateRecords,\n items: records,\n },\n ],\n }));\n\nexport const pruneConsumedPrivateRecordsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.pruneConsumedPrivateRecords),\n })\n .transform(({ type }) => ({\n type,\n operations: [rejectConsumedPrivateRecords()],\n }));\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { rejectPrivateRecordsByIds } from '../../filters/ops.js';\nimport { privateRecordSchema, transactionStatusSchema } from '../shared.js';\n\nexport const upsertPrivateRecordsSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.upsertPrivateRecords),\n records: z.array(privateRecordSchema),\n })\n .transform(({ type, records }) => ({\n type,\n operations: [\n rejectPrivateRecordsByIds(records.map((record) => record.id)),\n {\n opType: 'arrayPush' as const,\n jsonPath: STELLAR_STATE_PATHS.privateRecords,\n items: records,\n },\n ],\n }));\n\nexport const readTransactionStatusSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readTransactionStatus),\n txHash: z.string().min(1),\n })\n .transform(({ type, txHash }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.transactionsByHash,\n key: txHash,\n },\n ],\n }));\n\nexport const setTransactionStatusSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setTransactionStatus),\n status: transactionStatusSchema,\n })\n .transform(({ type, status }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.transactionsByHash,\n key: status.txHash,\n value: status,\n },\n ],\n }));\n\nexport const clearTransactionStatusSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.clearTransactionStatus),\n txHash: z.string().min(1),\n })\n .transform(({ type, txHash }) => ({\n type,\n operations: [\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.transactionsByHash,\n key: txHash,\n },\n ],\n }));\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\nimport {\n listPrivateRecordsSchema,\n pruneConsumedPrivateRecordsSchema,\n replacePrivateRecordsSchema,\n savePrivateRecordsSchema,\n} from '../schemas/records/private.js';\nimport { upsertPrivateRecordsSchema } from '../schemas/records/transactions.js';\n\nexport const stellarRecordsStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.listPrivateRecords,\n mode: 'read',\n schema: listPrivateRecordsSchema,\n },\n {\n type: stellarStateCallTypes.savePrivateRecords,\n mode: 'write',\n schema: savePrivateRecordsSchema,\n },\n {\n type: stellarStateCallTypes.replacePrivateRecords,\n mode: 'write',\n schema: replacePrivateRecordsSchema,\n },\n {\n type: stellarStateCallTypes.upsertPrivateRecords,\n mode: 'write',\n schema: upsertPrivateRecordsSchema,\n },\n {\n type: stellarStateCallTypes.pruneConsumedPrivateRecords,\n mode: 'write',\n schema: pruneConsumedPrivateRecordsSchema,\n },\n];\n","import { z } from 'zod';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { registryLookupSchema } from '../shared.js';\n\nexport const readStellarAddressRegisteredSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readStellarAddressRegistered),\n address: z.string().min(1),\n })\n .transform(({ type, address }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.registryRegisteredAddresses,\n key: address,\n },\n ],\n }));\n\nexport const readCachedPrivateAddressSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readCachedPrivateAddress),\n address: z.string().min(1),\n })\n .transform(({ type, address }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.registryPrivateAddresses,\n key: address,\n },\n ],\n }));\n\nexport const saveRegisteredPrivateAddressSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.saveRegisteredPrivateAddress),\n address: z.string().min(1),\n privateAddress: z.string().min(1),\n registered: z.boolean(),\n })\n .transform(({ type, address, privateAddress, registered }) => {\n const lookup = registryLookupSchema.parse({\n owner: address,\n status: registered ? 'registered' : 'unregistered',\n privateAddressStpl1: registered ? privateAddress : undefined,\n cachedAt: new Date().toISOString(),\n });\n return {\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.registryPrivateAddresses,\n key: address,\n value: privateAddress,\n },\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.registryRegisteredAddresses,\n key: address,\n value: registered,\n },\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.registryLookups,\n key: address,\n value: lookup,\n },\n ],\n };\n });\n\nexport const invalidateRegisteredAddressSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.invalidateRegisteredAddress),\n address: z.string().min(1),\n })\n .transform(({ type, address }) => ({\n type,\n operations: [\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.registryPrivateAddresses,\n key: address,\n },\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.registryRegisteredAddresses,\n key: address,\n },\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.registryLookups,\n key: address,\n },\n ],\n }));\n\nexport const readRegistryLookupSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readRegistryLookup),\n address: z.string().min(1),\n })\n .transform(({ type, address }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.registryLookups,\n key: address,\n },\n ],\n }));\n\nexport const saveRegistryLookupSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.saveRegistryLookup),\n lookup: registryLookupSchema,\n })\n .transform(({ type, lookup }) => {\n const operations: Array<{\n opType: 'recordSet';\n jsonPath: string;\n key: string;\n value: unknown;\n }> = [\n {\n opType: 'recordSet',\n jsonPath: STELLAR_STATE_PATHS.registryLookups,\n key: lookup.owner,\n value: lookup,\n },\n ];\n if (lookup.status === 'registered' && lookup.privateAddressStpl1) {\n operations.push(\n {\n opType: 'recordSet',\n jsonPath: STELLAR_STATE_PATHS.registryPrivateAddresses,\n key: lookup.owner,\n value: lookup.privateAddressStpl1,\n },\n {\n opType: 'recordSet',\n jsonPath: STELLAR_STATE_PATHS.registryRegisteredAddresses,\n key: lookup.owner,\n value: true,\n },\n );\n } else {\n operations.push({\n opType: 'recordSet',\n jsonPath: STELLAR_STATE_PATHS.registryRegisteredAddresses,\n key: lookup.owner,\n value: false,\n });\n }\n return { type, operations };\n });\n\nexport const invalidateRegistryLookupSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.invalidateRegistryLookup),\n address: z.string().min(1),\n })\n .transform(({ type, address }) => ({\n type,\n operations: [\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.registryLookups,\n key: address,\n },\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.registryPrivateAddresses,\n key: address,\n },\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.registryRegisteredAddresses,\n key: address,\n },\n ],\n }));\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\nimport {\n invalidateRegisteredAddressSchema,\n invalidateRegistryLookupSchema,\n readCachedPrivateAddressSchema,\n readRegistryLookupSchema,\n readStellarAddressRegisteredSchema,\n saveRegisteredPrivateAddressSchema,\n saveRegistryLookupSchema,\n} from '../schemas/registry/lookup.js';\n\nexport const stellarRegistryStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.readStellarAddressRegistered,\n mode: 'read',\n schema: readStellarAddressRegisteredSchema,\n },\n {\n type: stellarStateCallTypes.readCachedPrivateAddress,\n mode: 'read',\n schema: readCachedPrivateAddressSchema,\n },\n {\n type: stellarStateCallTypes.readRegistryLookup,\n mode: 'read',\n schema: readRegistryLookupSchema,\n },\n {\n type: stellarStateCallTypes.saveRegisteredPrivateAddress,\n mode: 'write',\n schema: saveRegisteredPrivateAddressSchema,\n },\n {\n type: stellarStateCallTypes.saveRegistryLookup,\n mode: 'write',\n schema: saveRegistryLookupSchema,\n },\n {\n type: stellarStateCallTypes.invalidateRegisteredAddress,\n mode: 'write',\n schema: invalidateRegisteredAddressSchema,\n },\n {\n type: stellarStateCallTypes.invalidateRegistryLookup,\n mode: 'write',\n schema: invalidateRegistryLookupSchema,\n },\n];\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport {\n clearTransactionStatusSchema,\n readTransactionStatusSchema,\n setTransactionStatusSchema,\n} from '../schemas/records/transactions.js';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\n\nexport const stellarTransactionStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.readTransactionStatus,\n mode: 'read',\n schema: readTransactionStatusSchema,\n },\n {\n type: stellarStateCallTypes.setTransactionStatus,\n mode: 'write',\n schema: setTransactionStatusSchema,\n },\n {\n type: stellarStateCallTypes.clearTransactionStatus,\n mode: 'write',\n schema: clearTransactionStatusSchema,\n },\n];\n","import { z } from 'zod';\nimport { walletOwnerNonceKey } from '../../foundation/keys.js';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { walletPrivateAddressScalarSchema } from '../shared.js';\n\nexport const saveWalletPrivateAddressScalarSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.saveWalletPrivateAddressScalar),\n scalar: walletPrivateAddressScalarSchema,\n })\n .transform(({ type, scalar }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.walletPrivateAddressScalars,\n key: walletOwnerNonceKey(scalar.owner, scalar.nonce),\n value: scalar,\n },\n ],\n }));\n\nexport const readWalletPrivateAddressScalarSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readWalletPrivateAddressScalar),\n owner: z.string().min(1),\n nonce: z.string().min(1),\n })\n .transform(({ type, owner, nonce }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.walletPrivateAddressScalars,\n key: walletOwnerNonceKey(owner, nonce),\n },\n ],\n }));\n","import { z } from 'zod';\nimport { walletOwnerNonceKey } from '../../foundation/keys.js';\nimport { STELLAR_STATE_PATHS } from '../../foundation/paths.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport { walletPrivateAddressRecordSchema } from '../shared.js';\n\nexport const saveWalletPrivateAddressRecordSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.saveWalletPrivateAddressRecord),\n record: walletPrivateAddressRecordSchema,\n })\n .transform(({ type, record }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.walletPrivateAddressRecords,\n key: walletOwnerNonceKey(record.owner, record.nonce),\n value: record,\n },\n ],\n }));\n\nexport const readWalletPrivateAddressRecordSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readWalletPrivateAddressRecord),\n owner: z.string().min(1),\n nonce: z.string().min(1),\n })\n .transform(({ type, owner, nonce }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.walletPrivateAddressRecords,\n key: walletOwnerNonceKey(owner, nonce),\n },\n ],\n }));\n\nexport const setWalletDefaultPrivateAddressNonceSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.setWalletDefaultPrivateAddressNonce),\n owner: z.string().min(1),\n nonce: z.string().min(1),\n })\n .transform(({ type, owner, nonce }) => ({\n type,\n operations: [\n {\n opType: 'recordSet' as const,\n jsonPath: STELLAR_STATE_PATHS.walletDefaultPrivateAddressNonce,\n key: owner,\n value: nonce,\n },\n ],\n }));\n\nexport const readWalletDefaultPrivateAddressNonceSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.readWalletDefaultPrivateAddressNonce),\n owner: z.string().min(1),\n })\n .transform(({ type, owner }) => ({\n type,\n operations: [\n {\n opType: 'recordGet' as const,\n jsonPath: STELLAR_STATE_PATHS.walletDefaultPrivateAddressNonce,\n key: owner,\n },\n ],\n }));\n\nexport const deleteWalletPrivateAddressScalarSchema = z\n .object({\n type: z.literal(stellarStateCallTypes.deleteWalletPrivateAddressScalar),\n owner: z.string().min(1),\n nonce: z.string().min(1),\n })\n .transform(({ type, owner, nonce }) => ({\n type,\n operations: [\n {\n opType: 'recordDelete' as const,\n jsonPath: STELLAR_STATE_PATHS.walletPrivateAddressScalars,\n key: walletOwnerNonceKey(owner, nonce),\n },\n ],\n }));\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport {\n readWalletPrivateAddressScalarSchema,\n saveWalletPrivateAddressScalarSchema,\n} from '../schemas/wallet/scalar.js';\nimport {\n deleteWalletPrivateAddressScalarSchema,\n readWalletDefaultPrivateAddressNonceSchema,\n readWalletPrivateAddressRecordSchema,\n saveWalletPrivateAddressRecordSchema,\n setWalletDefaultPrivateAddressNonceSchema,\n} from '../schemas/wallet/private-address.js';\nimport { stellarStateCallTypes } from '../bridge/call-types.js';\n\nexport const stellarWalletStateDefinitions: StateBridgeDefinition[] = [\n {\n type: stellarStateCallTypes.saveWalletPrivateAddressScalar,\n mode: 'write',\n schema: saveWalletPrivateAddressScalarSchema,\n },\n {\n type: stellarStateCallTypes.readWalletPrivateAddressScalar,\n mode: 'read',\n schema: readWalletPrivateAddressScalarSchema,\n },\n {\n type: stellarStateCallTypes.saveWalletPrivateAddressRecord,\n mode: 'write',\n schema: saveWalletPrivateAddressRecordSchema,\n },\n {\n type: stellarStateCallTypes.readWalletPrivateAddressRecord,\n mode: 'read',\n schema: readWalletPrivateAddressRecordSchema,\n },\n {\n type: stellarStateCallTypes.setWalletDefaultPrivateAddressNonce,\n mode: 'write',\n schema: setWalletDefaultPrivateAddressNonceSchema,\n },\n {\n type: stellarStateCallTypes.readWalletDefaultPrivateAddressNonce,\n mode: 'read',\n schema: readWalletDefaultPrivateAddressNonceSchema,\n },\n {\n type: stellarStateCallTypes.deleteWalletPrivateAddressScalar,\n mode: 'write',\n schema: deleteWalletPrivateAddressScalarSchema,\n },\n];\n","import type { StateBridgeDefinition } from '@arcanetech/privacy-sdk-core/state';\nimport { registerStellarArrayFilterSchemas } from '../filters/register-schemas.js';\nimport { stellarAssetsStateDefinitions } from './assets.js';\nimport { stellarBalancesStateDefinitions } from './balances.js';\nimport { stellarClaimsStateDefinitions } from './claims.js';\nimport { stellarDeliveriesStateDefinitions } from './deliveries.js';\nimport { stellarPoolStateDefinitions } from './pool.js';\nimport { stellarRecordsStateDefinitions } from './records.js';\nimport { stellarRegistryStateDefinitions } from './registry.js';\nimport { stellarTransactionStateDefinitions } from './transactions.js';\nimport { stellarWalletStateDefinitions } from './wallet.js';\n\nregisterStellarArrayFilterSchemas();\n\nexport const stellarStateDefinitions: StateBridgeDefinition[] = [\n ...stellarClaimsStateDefinitions,\n ...stellarRegistryStateDefinitions,\n ...stellarAssetsStateDefinitions,\n ...stellarBalancesStateDefinitions,\n ...stellarPoolStateDefinitions,\n ...stellarRecordsStateDefinitions,\n ...stellarDeliveriesStateDefinitions,\n ...stellarWalletStateDefinitions,\n ...stellarTransactionStateDefinitions,\n];\n","import {\n createStateBridge,\n type StateBridge,\n type StateBridgeAdapter,\n} from '@arcanetech/privacy-sdk-core/state';\nimport { stellarStateDefinitions } from '../definitions/index.js';\n\nexport class StellarStateServiceBase {\n readonly bridge: StateBridge;\n\n constructor(adapter: StateBridgeAdapter) {\n this.bridge = createStateBridge(adapter);\n this.bridge.init(stellarStateDefinitions);\n }\n}\n","import type {\n StellarAddress,\n StellarAssetId,\n StellarPublicBalance,\n} from '../../../types.js';\nimport {\n normalizePublicBalance,\n normalizePublicBalancesFromEntries,\n} from '../../read/normalize.js';\nimport {\n stellarStateCallTypes,\n type StellarPublicBalanceInput,\n} from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createPublicBalanceMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n async getPublicBalance(input: {\n owner: StellarAddress;\n asset: StellarAssetId;\n }): Promise<StellarPublicBalance | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readPublicBalance,\n owner: input.owner,\n asset: input.asset,\n });\n return normalizePublicBalance(value);\n },\n\n async getPublicBalances(owner: StellarAddress): Promise<StellarPublicBalance[]> {\n const entries = await bridge.read<unknown>({\n type: stellarStateCallTypes.readPublicBalances,\n owner,\n });\n return normalizePublicBalancesFromEntries(entries, owner);\n },\n\n setPublicBalance(balance: StellarPublicBalanceInput): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setPublicBalance,\n balance,\n });\n },\n\n setPublicBalances(input: {\n owner: StellarAddress;\n balances: StellarPublicBalanceInput[];\n }): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setPublicBalances,\n owner: input.owner,\n balances: input.balances,\n });\n },\n };\n}\n","import type { StellarAsset } from '../../../types.js';\nimport { readRecordValue } from '../../foundation/keys.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\ntype AssetsCatalogDeps = {\n getAssetsCatalog: () => Promise<{\n byId: Record<string, StellarAsset>;\n listOrder: string[];\n }>;\n replaceAssets: (assets: StellarAsset[]) => Promise<void>;\n};\n\nexport function createAssetsUpsertMethods(\n _context: StellarStateServiceBase,\n deps: AssetsCatalogDeps,\n) {\n return {\n async upsertAssets(assets: StellarAsset[]): Promise<void> {\n if (assets.length === 0) {\n return;\n }\n const catalog = await deps.getAssetsCatalog();\n const byId = { ...catalog.byId };\n const listOrder = [...catalog.listOrder];\n for (const asset of assets) {\n byId[asset.assetId] = asset;\n if (!listOrder.includes(asset.assetId)) {\n listOrder.push(asset.assetId);\n }\n }\n const merged = listOrder\n .map((assetId) => readRecordValue(byId, assetId))\n .filter((asset): asset is StellarAsset => asset !== undefined);\n await deps.replaceAssets(merged);\n },\n };\n}\n","import type {\n StellarAsset,\n StellarAssetId,\n StellarAssetsCatalog,\n} from '../../../types.js';\nimport { readRecordValue } from '../../foundation/keys.js';\nimport { normalizeAsset, normalizeAssetsCatalog } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\nimport { createAssetsUpsertMethods } from './upsert-methods.js';\n\nexport function createAssetsCatalogMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n async function getAssetsCatalog(): Promise<StellarAssetsCatalog> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readAssetsCatalog,\n });\n return normalizeAssetsCatalog(value);\n }\n\n function replaceAssets(assets: StellarAsset[]): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.replaceAssets,\n assets,\n });\n }\n\n const coreMethods = {\n getAssetsCatalog,\n\n async getAsset(assetId: StellarAssetId): Promise<StellarAsset | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readAsset,\n assetId,\n });\n return normalizeAsset(value);\n },\n\n async getAssets(): Promise<StellarAsset[]> {\n const catalog = await getAssetsCatalog();\n return catalog.listOrder\n .map((assetId) => readRecordValue(catalog.byId, assetId))\n .filter((asset): asset is StellarAsset => asset !== undefined);\n },\n\n async getAssetsForPool(poolContract: string): Promise<StellarAsset[]> {\n const assets = await coreMethods.getAssets();\n return assets.filter((asset) => asset.poolContracts.includes(poolContract));\n },\n\n replaceAssets,\n };\n\n return {\n ...coreMethods,\n ...createAssetsUpsertMethods(context, {\n getAssetsCatalog,\n replaceAssets,\n }),\n };\n}\n","import type { StellarStateServiceBase } from '../base.js';\nimport { createPublicBalanceMethods } from './balance-methods.js';\nimport { createAssetsCatalogMethods } from './catalog-methods.js';\n\nexport function createAssetsService(context: StellarStateServiceBase) {\n return {\n ...createAssetsCatalogMethods(context),\n ...createPublicBalanceMethods(context),\n };\n}\n","import type {\n StellarAddress,\n StellarPendingClaim,\n StellarPendingClaimsFilter,\n StellarPendingClaimsState,\n} from '../../../types.js';\nimport {\n normalizePendingClaimsCount,\n normalizePendingClaimsState,\n} from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createClaimsReadMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n async function getPendingClaims(\n filter: StellarPendingClaimsFilter = {},\n ): Promise<StellarPendingClaimsState> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readPendingClaims,\n });\n const state = normalizePendingClaimsState(value);\n const items = state.items.filter((claim: StellarPendingClaim) => {\n if (filter.owner !== undefined && claim.owner !== filter.owner) {\n return false;\n }\n if (filter.asset !== undefined && claim.asset !== filter.asset) {\n return false;\n }\n return true;\n });\n if (state.pagination !== undefined) {\n return { items, pagination: state.pagination };\n }\n return { items };\n }\n\n return {\n getPendingClaims,\n\n async getPendingClaimsCount(owner: StellarAddress): Promise<number | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readPendingClaimsCount,\n owner,\n });\n const count = normalizePendingClaimsCount(value);\n if (count !== undefined) {\n return count;\n }\n const claims = await getPendingClaims({ owner });\n return claims.items.length;\n },\n };\n}\n","import type {\n StellarAddress,\n StellarAssetId,\n StellarPendingClaim,\n StellarPendingClaimsPagination,\n} from '../../../types.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\ntype ClaimsWriteBridge = StellarStateServiceBase['bridge'];\n\nfunction appendPendingClaims(\n bridge: ClaimsWriteBridge,\n claims: StellarPendingClaim[],\n paginationInfo: StellarPendingClaimsPagination,\n): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.pendingClaims,\n claims,\n paginationInfo,\n });\n}\n\nfunction replacePendingClaimsPage(\n bridge: ClaimsWriteBridge,\n input: {\n owner: StellarAddress;\n claims: StellarPendingClaim[];\n paginationInfo: StellarPendingClaimsPagination;\n count?: number;\n },\n): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.replacePendingClaimsPage,\n owner: input.owner,\n claims: input.claims,\n paginationInfo: input.paginationInfo,\n ...(input.count === undefined ? {} : { count: input.count }),\n });\n}\n\nfunction upsertPendingClaims(\n bridge: ClaimsWriteBridge,\n claims: StellarPendingClaim[],\n): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.upsertPendingClaims,\n claims,\n });\n}\n\nfunction removePendingClaims(bridge: ClaimsWriteBridge, ids: string[]): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.removePendingClaims,\n ids,\n });\n}\n\nfunction clearPendingClaims(\n bridge: ClaimsWriteBridge,\n input: {\n owner?: StellarAddress;\n asset?: StellarAssetId;\n } = {},\n): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.clearPendingClaims,\n ...(input.owner === undefined ? {} : { owner: input.owner }),\n ...(input.asset === undefined ? {} : { asset: input.asset }),\n });\n}\n\nfunction setPendingClaimsCount(\n bridge: ClaimsWriteBridge,\n owner: StellarAddress,\n count: number,\n): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setPendingClaimsCount,\n owner,\n count,\n });\n}\n\nexport function createClaimsWriteMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n appendPendingClaims: (\n claims: StellarPendingClaim[],\n paginationInfo: StellarPendingClaimsPagination,\n ) => appendPendingClaims(bridge, claims, paginationInfo),\n replacePendingClaimsPage: (input: {\n owner: StellarAddress;\n claims: StellarPendingClaim[];\n paginationInfo: StellarPendingClaimsPagination;\n count?: number;\n }) => replacePendingClaimsPage(bridge, input),\n upsertPendingClaims: (claims: StellarPendingClaim[]) =>\n upsertPendingClaims(bridge, claims),\n removePendingClaims: (ids: string[]) => removePendingClaims(bridge, ids),\n clearPendingClaims: (\n input: { owner?: StellarAddress; asset?: StellarAssetId } = {},\n ) => clearPendingClaims(bridge, input),\n setPendingClaimsCount: (owner: StellarAddress, count: number) =>\n setPendingClaimsCount(bridge, owner, count),\n };\n}\n","import type { StellarStateServiceBase } from '../base.js';\nimport { createClaimsReadMethods } from './read-methods.js';\nimport { createClaimsWriteMethods } from './write-methods.js';\n\nexport function createClaimsService(context: StellarStateServiceBase) {\n return {\n ...createClaimsWriteMethods(context),\n ...createClaimsReadMethods(context),\n };\n}\n","import type {\n StellarIncomingDeliveriesFilter,\n StellarIncomingDelivery,\n} from '../../../types.js';\nimport { normalizeIncomingDeliveries } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createIncomingDeliveryMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n async function getIncomingDeliveries(\n filter: StellarIncomingDeliveriesFilter,\n ): Promise<StellarIncomingDelivery[]> {\n const values = await bridge.read<unknown>({\n type: stellarStateCallTypes.readIncomingDeliveries,\n });\n const deliveries = normalizeIncomingDeliveries(values);\n return deliveries.filter((delivery: StellarIncomingDelivery) => {\n if (delivery.privateAddress !== filter.privateAddress) {\n return false;\n }\n if (filter.asset !== undefined && delivery.asset !== filter.asset) {\n return false;\n }\n if (!filter.includeProcessed && delivery.processed) {\n return false;\n }\n return true;\n });\n }\n\n function upsertIncomingDeliveries(\n deliveries: StellarIncomingDelivery[],\n ): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.upsertIncomingDeliveries,\n deliveries,\n });\n }\n\n return {\n getIncomingDeliveries,\n upsertIncomingDeliveries,\n\n async markDeliveryProcessed(id: number): Promise<void> {\n const deliveries = await bridge.read<unknown>({\n type: stellarStateCallTypes.readIncomingDeliveries,\n });\n const match = normalizeIncomingDeliveries(deliveries).find(\n (delivery: StellarIncomingDelivery) => delivery.id === id,\n );\n if (!match) {\n return;\n }\n await upsertIncomingDeliveries([{ ...match, processed: true }]);\n },\n };\n}\n","import type { StellarAssetId, StellarDeliverySyncState } from '../../../types.js';\nimport { normalizeDeliverySyncState } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createDeliverySyncMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n async getDeliverySyncState(input: {\n privateAddress: string;\n asset: StellarAssetId;\n }): Promise<StellarDeliverySyncState | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readDeliverySyncState,\n privateAddress: input.privateAddress,\n asset: input.asset,\n });\n return normalizeDeliverySyncState(value);\n },\n\n setDeliverySyncState(syncState: StellarDeliverySyncState): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setDeliverySyncState,\n syncState,\n });\n },\n };\n}\n","import type { StellarStateServiceBase } from '../base.js';\nimport { createIncomingDeliveryMethods } from './incoming-methods.js';\nimport { createDeliverySyncMethods } from './sync-methods.js';\n\nexport function createDeliveriesService(context: StellarStateServiceBase) {\n return {\n ...createIncomingDeliveryMethods(context),\n ...createDeliverySyncMethods(context),\n };\n}\n","import type { StellarLeafEphemeral } from '../../../types.js';\nimport { normalizeLeafEphemeral } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nfunction isMissingStatePathError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n return (\n error.message.includes('Record path not found:') ||\n error.message.includes('JSONPath segment not found:')\n );\n}\n\nexport function createPoolEphemeralService(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n async getLeafEphemeral(input: {\n poolContract: string;\n leafIndex: number;\n }): Promise<StellarLeafEphemeral | undefined> {\n try {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readLeafEphemeral,\n poolContract: input.poolContract,\n leafIndex: input.leafIndex,\n });\n return normalizeLeafEphemeral(value);\n } catch (error) {\n if (isMissingStatePathError(error)) {\n return undefined;\n }\n throw error;\n }\n },\n\n setLeafEphemeral(ephemeral: StellarLeafEphemeral): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setLeafEphemeral,\n ephemeral,\n });\n },\n };\n}\n","import type { StellarPoolMerkleState } from '../../../types.js';\nimport { withoutUndefinedFields } from '../../foundation/coerce.js';\nimport { normalizePoolMerkleState } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nfunction isMissingStatePathError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n return (\n error.message.includes('Record path not found:') ||\n error.message.includes('JSONPath segment not found:')\n );\n}\n\nexport function createPoolMerkleService(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n async getPoolMerkleState(\n poolContract: string,\n ): Promise<StellarPoolMerkleState | undefined> {\n try {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readPoolMerkleState,\n poolContract,\n });\n return normalizePoolMerkleState(value);\n } catch (error) {\n if (isMissingStatePathError(error)) {\n return undefined;\n }\n throw error;\n }\n },\n\n setPoolMerkleState(state: StellarPoolMerkleState): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setPoolMerkleState,\n state,\n });\n },\n\n async appendPoolCommitments(input: {\n poolContract: string;\n commitments: string[];\n merkleRootHex: string;\n syncedLedger?: number;\n }): Promise<void> {\n const current = await this.getPoolMerkleState(input.poolContract);\n const mergedCommitments = [...(current?.commitments ?? []), ...input.commitments];\n await this.setPoolMerkleState(\n withoutUndefinedFields({\n poolContract: input.poolContract,\n commitments: mergedCommitments,\n commitmentCount: mergedCommitments.length,\n merkleRootHex: input.merkleRootHex,\n updatedAt: Date.now(),\n syncedLedger: input.syncedLedger ?? current?.syncedLedger,\n }) as StellarPoolMerkleState,\n );\n },\n };\n}\n","import type { StellarPrivateRecord } from '../../../types.js';\n\nfunction privateCoinNotesEqual(\n left: StellarPrivateRecord['coinNote'],\n right: StellarPrivateRecord['coinNote'],\n): boolean {\n if (left === undefined || right === undefined) {\n return left === right;\n }\n return (\n left.value === right.value &&\n left.nullifier === right.nullifier &&\n left.secret === right.secret &&\n left.commitment === right.commitment &&\n left.asset_hi === right.asset_hi &&\n left.asset_lo === right.asset_lo &&\n left.application_id === right.application_id\n );\n}\n\nfunction privateRecordCoreFieldsEqual(\n left: StellarPrivateRecord,\n right: StellarPrivateRecord,\n): boolean {\n return (\n left.id === right.id &&\n left.owner === right.owner &&\n left.asset === right.asset &&\n left.amount === right.amount &&\n left.consumed === right.consumed &&\n left.status === right.status &&\n left.poolContract === right.poolContract &&\n left.amountDisplay === right.amountDisplay\n );\n}\n\nfunction privateRecordChainFieldsEqual(\n left: StellarPrivateRecord,\n right: StellarPrivateRecord,\n): boolean {\n return (\n left.commitmentHex === right.commitmentHex &&\n left.nullifierHex === right.nullifierHex &&\n left.deliveryId === right.deliveryId &&\n left.privateAddress === right.privateAddress &&\n left.txHash === right.txHash\n );\n}\n\nfunction privateRecordSecretFieldsEqual(\n left: StellarPrivateRecord,\n right: StellarPrivateRecord,\n): boolean {\n return (\n left.depositScalarHex === right.depositScalarHex &&\n left.precommitementHex === right.precommitementHex &&\n privateCoinNotesEqual(left.coinNote, right.coinNote)\n );\n}\n\nfunction privateRecordsEqual(\n left: StellarPrivateRecord,\n right: StellarPrivateRecord,\n): boolean {\n return (\n privateRecordCoreFieldsEqual(left, right) &&\n privateRecordChainFieldsEqual(left, right) &&\n privateRecordSecretFieldsEqual(left, right)\n );\n}\n\nexport function privateRecordArraysEqual(\n left: StellarPrivateRecord[],\n right: StellarPrivateRecord[],\n): boolean {\n return (\n left.length === right.length &&\n left.every((record, index) => {\n const rightRecord = right.at(index);\n return rightRecord !== undefined && privateRecordsEqual(record, rightRecord);\n })\n );\n}\n\nexport function mergePrivateRecords(\n current: StellarPrivateRecord[],\n records: StellarPrivateRecord[],\n): StellarPrivateRecord[] {\n const ids = new Set(records.map((record) => record.id));\n return [...current.filter((record) => !ids.has(record.id)), ...records];\n}\n","import type {\n StellarAddress,\n StellarAssetId,\n StellarPrivateAssetRow,\n StellarPrivateRecord,\n StellarPrivateRecordStatus,\n} from '../../../types.js';\nimport { normalizePrivateRecords } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarAvailablePrivateRecordsFilter } from '../../domain/types.js';\nimport type { StellarStateServiceBase } from '../base.js';\nimport {\n mergePrivateRecords,\n privateRecordArraysEqual,\n} from './private-record-upsert.js';\n\ntype PrivateRecordBridge = StellarStateServiceBase['bridge'];\n\nasync function readPrivateRecords(\n bridge: PrivateRecordBridge,\n): Promise<StellarPrivateRecord[]> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.listPrivateRecords,\n });\n return normalizePrivateRecords(value);\n}\n\nfunction writeReplacePrivateRecords(\n bridge: PrivateRecordBridge,\n records: StellarPrivateRecord[],\n): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.replacePrivateRecords,\n records,\n });\n}\n\nasync function readAvailablePrivateRecords(\n bridge: PrivateRecordBridge,\n filter: StellarAvailablePrivateRecordsFilter,\n): Promise<StellarPrivateRecord[]> {\n const records = await readPrivateRecords(bridge);\n return records.filter((record) => matchesPrivateRecordFilter(record, filter, false));\n}\n\nasync function applyPrivateRecordsStatus(\n bridge: PrivateRecordBridge,\n records: StellarPrivateRecord[],\n status: StellarPrivateRecordStatus,\n): Promise<void> {\n const current = await readPrivateRecords(bridge);\n const ids = new Set(records.map((record) => record.id));\n const next = current.map((record) =>\n ids.has(record.id)\n ? {\n ...record,\n status,\n consumed: status === 'spent' ? true : record.consumed,\n }\n : record,\n );\n await writeReplacePrivateRecords(bridge, next);\n}\n\nfunction aggregatePrivateAssetRows(\n records: StellarPrivateRecord[],\n owner: StellarAddress,\n): StellarPrivateAssetRow[] {\n const available = records.filter(\n (record) => record.owner === owner && !record.consumed && record.status !== 'spent',\n );\n const byAsset = new Map<string, StellarPrivateAssetRow>();\n for (const record of available) {\n const existing = byAsset.get(record.asset);\n const amountDisplay = record.amountDisplay ?? Number(record.amount);\n if (existing) {\n existing.totalAmount += record.amount;\n existing.totalAmountDisplay += amountDisplay;\n } else {\n byAsset.set(record.asset, {\n assetId: record.asset,\n poolContract: record.poolContract ?? '',\n totalAmount: record.amount,\n totalAmountDisplay: amountDisplay,\n });\n }\n }\n return [...byAsset.values()].toSorted((left, right) =>\n left.assetId.localeCompare(right.assetId),\n );\n}\n\nfunction pruneConsumedPrivateRecords(bridge: PrivateRecordBridge): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.pruneConsumedPrivateRecords,\n });\n}\n\nfunction savePrivateRecords(\n bridge: PrivateRecordBridge,\n records: StellarPrivateRecord[],\n): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.savePrivateRecords,\n records,\n });\n}\n\nasync function upsertPrivateRecords(\n bridge: PrivateRecordBridge,\n records: StellarPrivateRecord[],\n): Promise<void> {\n if (records.length === 0) {\n return;\n }\n const current = await readPrivateRecords(bridge);\n const next = mergePrivateRecords(current, records);\n if (privateRecordArraysEqual(current, next)) {\n return;\n }\n return bridge.write({\n type: stellarStateCallTypes.upsertPrivateRecords,\n records,\n });\n}\n\nasync function readPrivateBalance(\n bridge: PrivateRecordBridge,\n input: { owner: StellarAddress; asset: StellarAssetId },\n): Promise<bigint> {\n const records = await readAvailablePrivateRecords(bridge, {\n owner: input.owner,\n asset: input.asset,\n });\n return records.reduce((total, record) => total + record.amount, 0n);\n}\n\nasync function readPrivateAssetRows(\n bridge: PrivateRecordBridge,\n owner: StellarAddress,\n): Promise<StellarPrivateAssetRow[]> {\n const records = await readPrivateRecords(bridge);\n return aggregatePrivateAssetRows(records, owner);\n}\n\nexport function createPrivateRecordMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n pruneConsumedPrivateRecords: () => pruneConsumedPrivateRecords(bridge),\n getPrivateRecords: () => readPrivateRecords(bridge),\n getAvailablePrivateRecords: (filter: StellarAvailablePrivateRecordsFilter) =>\n readAvailablePrivateRecords(bridge, filter),\n listPrivateRecords: (filter: {\n owner?: StellarAddress;\n privateAddress?: string;\n asset?: StellarAssetId;\n amount?: bigint;\n }) => readAvailablePrivateRecords(bridge, filter),\n savePrivateRecords: (records: StellarPrivateRecord[]) =>\n savePrivateRecords(bridge, records),\n upsertPrivateRecords: (records: StellarPrivateRecord[]) =>\n upsertPrivateRecords(bridge, records),\n markPrivateRecordsUsed: (records: StellarPrivateRecord[]) =>\n applyPrivateRecordsStatus(bridge, records, 'spent'),\n markPrivateRecordsStatus: (\n records: StellarPrivateRecord[],\n status: StellarPrivateRecordStatus,\n ) => applyPrivateRecordsStatus(bridge, records, status),\n getPrivateBalance: (input: { owner: StellarAddress; asset: StellarAssetId }) =>\n readPrivateBalance(bridge, input),\n getPrivateAssetRows: (owner: StellarAddress) => readPrivateAssetRows(bridge, owner),\n };\n}\n\nfunction matchesPrivateRecordFilter(\n record: StellarPrivateRecord,\n filter: StellarAvailablePrivateRecordsFilter,\n includeConsumed: boolean,\n): boolean {\n if (filter.owner !== undefined && record.owner !== filter.owner) {\n return false;\n }\n if (\n filter.privateAddress !== undefined &&\n record.privateAddress !== filter.privateAddress\n ) {\n return false;\n }\n if (filter.owner === undefined && filter.privateAddress === undefined) {\n return false;\n }\n if (filter.asset !== undefined && record.asset !== filter.asset) {\n return false;\n }\n if (!includeConsumed && (record.consumed || record.status === 'spent')) {\n return false;\n }\n return true;\n}\n","import type { StellarTransactionStatus } from '../../../types.js';\nimport { normalizeTransactionStatus } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createTransactionRecordMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n async getTransactionStatus(\n txHash: string,\n ): Promise<StellarTransactionStatus | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readTransactionStatus,\n txHash,\n });\n return normalizeTransactionStatus(value);\n },\n\n setTransactionStatus(status: StellarTransactionStatus): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setTransactionStatus,\n status,\n });\n },\n\n clearTransactionStatus(txHash: string): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.clearTransactionStatus,\n txHash,\n });\n },\n };\n}\n","import type { StellarStateServiceBase } from '../base.js';\nimport { createPrivateRecordMethods } from './private-methods.js';\nimport { createTransactionRecordMethods } from './transaction-methods.js';\n\nexport function createRecordsService(context: StellarStateServiceBase) {\n return {\n ...createPrivateRecordMethods(context),\n ...createTransactionRecordMethods(context),\n };\n}\n","import type { StellarAddress, StellarRegistryLookup } from '../../../types.js';\nimport {\n normalizeCachedPrivateAddress,\n normalizeRegistryLookup,\n normalizeRegistryLookupFromLegacy,\n} from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\ntype RegistryLookupBridge = StellarStateServiceBase['bridge'];\n\nasync function readRegistryLookup(\n bridge: RegistryLookupBridge,\n address: StellarAddress,\n): Promise<StellarRegistryLookup | undefined> {\n try {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readRegistryLookup,\n address,\n });\n const lookup = normalizeRegistryLookup(value);\n if (lookup) {\n return lookup;\n }\n } catch {\n // Legacy states may not have $.registry.lookups yet.\n }\n let registered: unknown;\n let privateAddress: unknown;\n try {\n registered = await bridge.read<unknown>({\n type: stellarStateCallTypes.readStellarAddressRegistered,\n address,\n });\n } catch {\n registered = undefined;\n }\n try {\n privateAddress = await bridge.read<unknown>({\n type: stellarStateCallTypes.readCachedPrivateAddress,\n address,\n });\n } catch {\n privateAddress = undefined;\n }\n return normalizeRegistryLookupFromLegacy({\n address,\n registered,\n privateAddress,\n });\n}\n\nasync function readCachedPrivateAddress(\n bridge: RegistryLookupBridge,\n address: StellarAddress,\n): Promise<string | undefined> {\n const lookup = await readRegistryLookup(bridge, address);\n if (lookup?.privateAddressStpl1) {\n return lookup.privateAddressStpl1;\n }\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readCachedPrivateAddress,\n address,\n });\n return normalizeCachedPrivateAddress(value);\n}\n\nexport function createRegistryLookupReadMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n getRegistryLookup: (address: StellarAddress) => readRegistryLookup(bridge, address),\n\n async isStellarAddressRegistered(\n address: StellarAddress,\n ): Promise<boolean | undefined> {\n const lookup = await readRegistryLookup(bridge, address);\n if (lookup === undefined) {\n return undefined;\n }\n return lookup.status === 'registered';\n },\n\n getCachedPrivateAddress: (address: StellarAddress) =>\n readCachedPrivateAddress(bridge, address),\n };\n}\n","import type { StellarAddress, StellarRegistryLookup } from '../../../types.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createRegistryLookupWriteMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n async function invalidateRegistryLookup(address: StellarAddress): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.invalidateRegistryLookup,\n address,\n });\n }\n\n return {\n saveRegistryLookup(lookup: StellarRegistryLookup): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.saveRegistryLookup,\n lookup,\n });\n },\n\n saveRegisteredPrivateAddress(input: {\n address: StellarAddress;\n privateAddress: string;\n registered: boolean;\n }): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.saveRegisteredPrivateAddress,\n address: input.address,\n privateAddress: input.privateAddress,\n registered: input.registered,\n });\n },\n\n invalidateRegistryLookup,\n\n invalidateRegisteredAddress(address: StellarAddress): Promise<void> {\n return invalidateRegistryLookup(address);\n },\n };\n}\n","import type { StellarStateServiceBase } from '../base.js';\nimport { createRegistryLookupReadMethods } from './lookup-read.js';\nimport { createRegistryLookupWriteMethods } from './lookup-write.js';\n\nexport function createRegistryLookupService(context: StellarStateServiceBase) {\n return {\n ...createRegistryLookupReadMethods(context),\n ...createRegistryLookupWriteMethods(context),\n };\n}\n","import type {\n StellarAddress,\n StellarWalletPrivateAddressRecord,\n} from '../../../types.js';\nimport {\n normalizeWalletDefaultPrivateAddressNonce,\n normalizeWalletPrivateAddressRecord,\n} from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createWalletRecordMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n async getWalletPrivateAddressRecord(input: {\n owner: StellarAddress;\n nonce: string;\n }): Promise<StellarWalletPrivateAddressRecord | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readWalletPrivateAddressRecord,\n owner: input.owner,\n nonce: input.nonce,\n });\n return normalizeWalletPrivateAddressRecord(value);\n },\n\n saveWalletPrivateAddressRecord(\n record: StellarWalletPrivateAddressRecord,\n ): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.saveWalletPrivateAddressRecord,\n record,\n });\n },\n\n async getWalletDefaultPrivateAddressNonce(\n owner: StellarAddress,\n ): Promise<string | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readWalletDefaultPrivateAddressNonce,\n owner,\n });\n return normalizeWalletDefaultPrivateAddressNonce(value);\n },\n\n setWalletDefaultPrivateAddressNonce(input: {\n owner: StellarAddress;\n nonce: string;\n }): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.setWalletDefaultPrivateAddressNonce,\n owner: input.owner,\n nonce: input.nonce,\n });\n },\n };\n}\n","import type {\n StellarAddress,\n StellarWalletPrivateAddressScalar,\n} from '../../../types.js';\nimport { normalizeWalletPrivateAddressScalar } from '../../read/normalize.js';\nimport { stellarStateCallTypes } from '../../bridge/call-types.js';\nimport type { StellarStateServiceBase } from '../base.js';\n\nexport function createWalletScalarMethods(context: StellarStateServiceBase) {\n const { bridge } = context;\n\n return {\n async getWalletPrivateAddressScalar(input: {\n owner: StellarAddress;\n nonce: string;\n }): Promise<StellarWalletPrivateAddressScalar | undefined> {\n const value = await bridge.read<unknown>({\n type: stellarStateCallTypes.readWalletPrivateAddressScalar,\n owner: input.owner,\n nonce: input.nonce,\n });\n return normalizeWalletPrivateAddressScalar(value);\n },\n\n saveWalletPrivateAddressScalar(\n scalar: StellarWalletPrivateAddressScalar,\n ): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.saveWalletPrivateAddressScalar,\n scalar,\n });\n },\n\n deleteWalletPrivateAddressScalar(input: {\n owner: StellarAddress;\n nonce: string;\n }): Promise<void> {\n return bridge.write({\n type: stellarStateCallTypes.deleteWalletPrivateAddressScalar,\n owner: input.owner,\n nonce: input.nonce,\n });\n },\n };\n}\n","import type { StellarStateServiceBase } from '../base.js';\nimport { createWalletRecordMethods } from './wallet-record-methods.js';\nimport { createWalletScalarMethods } from './wallet-scalar-methods.js';\n\nexport function createWalletAddressService(context: StellarStateServiceBase) {\n return {\n ...createWalletScalarMethods(context),\n ...createWalletRecordMethods(context),\n };\n}\n","import type { StateBridgeAdapter } from '@arcanetech/privacy-sdk-core/state';\nimport { StellarStateServiceBase } from './base.js';\nimport { createAssetsService } from './assets/index.js';\nimport { createClaimsService } from './claims/index.js';\nimport { createDeliveriesService } from './deliveries/index.js';\nimport { createPoolEphemeralService } from './pool/ephemeral.js';\nimport { createPoolMerkleService } from './pool/merkle.js';\nimport { createRecordsService } from './records/index.js';\nimport { createRegistryLookupService } from './registry/lookup.js';\nimport { createWalletAddressService } from './registry/wallet-address.js';\n\nexport function composeStellarStateService(adapter: StateBridgeAdapter) {\n const base = new StellarStateServiceBase(adapter);\n\n return {\n bridge: base.bridge,\n ...createAssetsService(base),\n ...createRegistryLookupService(base),\n ...createWalletAddressService(base),\n ...createPoolMerkleService(base),\n ...createPoolEphemeralService(base),\n ...createClaimsService(base),\n ...createDeliveriesService(base),\n ...createRecordsService(base),\n };\n}\n\nexport type ComposedStellarStateService = ReturnType<typeof composeStellarStateService>;\n","import type { StateBridgeAdapter } from '@arcanetech/privacy-sdk-core/state';\nimport type { StellarStorageAdapter } from '../../types.js';\nimport {\n composeStellarStateService,\n type ComposedStellarStateService,\n} from './compose.js';\n\nexport type StellarStateService = ComposedStellarStateService;\n\nexport function createStellarStateService(\n adapter: StateBridgeAdapter,\n): StellarStateService {\n return composeStellarStateService(adapter);\n}\n\nexport function createStellarStorageAdapterFromState(\n state: StellarStateService,\n): StellarStorageAdapter {\n return {\n listPrivateRecords: (filter) => state.listPrivateRecords(filter),\n savePrivateRecords: (records) => state.savePrivateRecords(records),\n markPrivateRecordsUsed: (records) => state.markPrivateRecordsUsed(records),\n };\n}\n","import type { StateBridgeAdapter } from '@arcanetech/privacy-sdk-core/state';\nimport { createStellarStateService } from '../../state/index.js';\nimport type {\n LeafEphemeralStatePort,\n PoolMerkleStatePort,\n} from '../merkle/state-port.js';\nimport type { StellarTransactEnvironment } from '../environment/types.js';\n\nfunction createPoolMerkleStatePort(state: StateBridgeAdapter): PoolMerkleStatePort {\n const stateService = createStellarStateService(state);\n return {\n get: (poolContract) => stateService.getPoolMerkleState(poolContract),\n set: (merkleState) => stateService.setPoolMerkleState(merkleState),\n };\n}\n\nfunction createLeafEphemeralStatePort(\n state: StateBridgeAdapter,\n): LeafEphemeralStatePort {\n const stateService = createStellarStateService(state);\n return {\n get: (input) => stateService.getLeafEphemeral(input),\n set: (ephemeral) => stateService.setLeafEphemeral(ephemeral),\n };\n}\n\nfunction createSenderScalarStateResolver(state: StateBridgeAdapter) {\n const stateService = createStellarStateService(state);\n return async (input: {\n owner: string;\n privateAddressStpl1: string;\n }): Promise<string | undefined> => {\n const owner = input.owner.trim();\n if (!owner) {\n return;\n }\n const defaultNonce = await stateService.getWalletDefaultPrivateAddressNonce(owner);\n if (!defaultNonce) {\n return;\n }\n const requestedAddress = input.privateAddressStpl1.trim();\n const record = await stateService.getWalletPrivateAddressRecord({\n owner,\n nonce: defaultNonce,\n });\n const recordAddress = record?.privateAddress?.trim();\n if (recordAddress !== requestedAddress) {\n return;\n }\n const scalar = await stateService.getWalletPrivateAddressScalar({\n owner,\n nonce: defaultNonce,\n });\n const normalized = scalar?.scalarHex?.trim() ?? '';\n return normalized.length > 0 ? normalized : undefined;\n };\n}\n\nexport function attachPoolStatePorts(\n transactEnvironment: StellarTransactEnvironment | undefined,\n state: StateBridgeAdapter,\n): StellarTransactEnvironment | undefined {\n if (!transactEnvironment) {\n return undefined;\n }\n return {\n ...transactEnvironment,\n poolMerkleState: createPoolMerkleStatePort(state),\n leafEphemeral: createLeafEphemeralStatePort(state),\n resolveSenderPrivKeyScalarFromState: createSenderScalarStateResolver(state),\n };\n}\n"],"mappings":";AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA,wBAAAA;AAAA,OACK;;;ACLP,SAAS,UAAAC,eAAc;AAEvB,IAAM,QACJ;AACF,IAAM,0BAA0B;AAChC,IAAM,uBAAuB;AAEtB,SAAS,4BAA4B,MAAsB;AAChE,MAAI,KAAK,WAAW,yBAAyB;AAC3C,UAAM,IAAI;AAAA,MACR,YAAY,uBAAuB,0BAA0B,KAAK,MAAM;AAAA,IAC1E;AAAA,EACF;AACA,QAAM,MAAMA,QAAO,KAAK,IAAI,EAAE,SAAS,KAAK;AAC5C,UAAQ,OAAO,KAAK,GAAG,EAAE,IAAI,OAAO,SAAS,oBAAoB;AACnE;;;ACfA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAuC,kCAA0C;AAiB1E,SAAS,+BACd,WACA,OACQ;AACR,QAAM,eAA6C;AACnD,SAAO,aAAa,WAAW,KAAK;AACtC;AAEO,SAAS,qBAAqB,OAAsC;AACzE,QAAM,gBAAuC;AAC7C,SAAO,cAAc,KAAK;AAC5B;AAEO,SAAS,qBAAqB,SAAwC;AAC3E,QAAM,gBAAuC;AAC7C,SAAO,cAAc,OAAO;AAC9B;AAEO,SAAS,uCACd,eACA,eACQ;AACR,SAAO;AAAA,IACL,OAAO,YAAY;AAAA,MACjB,CAAC,KAAK,aAAa;AAAA,MACnB,CAAC,KAAK,aAAa;AAAA,IACrB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,6CAA6C,OAAwB;AACnF,QAAM,iBACJ;AACF,SAAO,eAAe,KAAK;AAC7B;AAEO,SAAS,kBAAkB,KAAwC;AACxE,QAAM,YAAa,IAChB;AACH,MAAI,OAAO,cAAc,YAAY;AACnC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL,4CAA4C,CAAC,cAC3C,UAAU,KAAK,KAAK,SAAS;AAAA,EACjC;AACF;;;ACxEA,SAAS,mCAAAC,wCAAuC;;;ACAhD,SAAS,UAAAC,eAAc;AACvB,SAAS,UAAAC,eAAc;;;ACDvB,SAAS,UAAAC,eAAc;AACvB,SAAS,cAAc;AAEvB,IAAM,0BAA0B;AAChC,IAAM,qBAAqB;AAC3B,IAAM,8BAA8B,0BAA0B;AAC9D,IAAM,kBAAkB;AAExB,SAAS,sBAAsB,YAA4B;AACzD,SAAO,OAAO,eAAeA,QAAO,KAAK,YAAY,KAAK,CAAC;AAC7D;AAEA,SAAS,2BAA2B,KAAqB;AACvD,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AACA,MAAI,OAAO,gBAAgB,OAAO,GAAG;AACnC,WAAO;AAAA,EACT;AACA,QAAM,WAAW,gBAAgB,KAAK,OAAO;AAC7C,QAAM,aAAa,WAAW,CAAC;AAC/B,MAAI,eAAe,UAAa,WAAW,WAAW,6BAA6B;AACjF,WAAO,sBAAsB,UAAU;AAAA,EACzC;AACA,QAAM,IAAI,MAAM,qCAAqC,OAAO,EAAE;AAChE;AAEO,SAAS,uBACd,kBACQ;AACR,QAAM,MAAM,kBAAkB,KAAK;AACnC,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AACA,SAAO,2BAA2B,GAAG;AACvC;;;ADlBA,IAAM,8BAA8B;AACpC,IAAM,yBAAyB;AAE/B,SAAS,iBAAiB,OAA2B;AACnD,SAAO,OAAO,KAAKC,QAAO,KAAK,KAAK,EAAE,SAAS,KAAK,CAAC,EAAE,EAAE,SAAS;AACpE;AAEA,SAAS,iBAAiB,OAAuB;AAC/C,QAAM,MAAM,OAAO,KAAK,EACrB,SAAS,EAAE,EACX,SAAS,8BAA8B,GAAG,GAAG;AAChD,MAAI,IAAI,SAAS,8BAA8B,GAAG;AAChD,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AACA,SAAOA,QAAO,KAAK,KAAK,KAAK;AAC/B;AAEA,SAAS,oBAAoB,cAAkD;AAC7E,QAAM,aAAa,uBAAuB,YAAY;AACtD,QAAM,UAAUC,QAAO,eAAe,UAAU;AAChD,QAAM,KAAK,iBAAiB,QAAQ,SAAS,GAAG,2BAA2B,CAAC;AAC5E,QAAM,KAAK;AAAA,IACT,QAAQ,SAAS,6BAA6B,sBAAsB;AAAA,EACtE;AACA,SAAO,EAAE,IAAI,GAAG;AAClB;AAEO,SAAS,6BACd,MACA,cACwB;AACxB,QAAM,EAAE,IAAI,GAAG,IAAI,oBAAoB,YAAY;AACnD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AACF;AAEO,SAAS,uBAAuB,cAAwC;AAC7E,QAAM,EAAE,IAAI,GAAG,IAAI,oBAAoB,YAAY;AACnD,SAAO,CAAC,IAAI,EAAE;AAChB;AAEO,SAAS,uBAAuB,SAAiB,SAAyB;AAC/E,QAAM,UAAUD,QAAO,OAAO,CAAC,iBAAiB,OAAO,GAAG,iBAAiB,OAAO,CAAC,CAAC;AACpF,SAAOC,QAAO,eAAe,OAAO;AACtC;AAEO,SAAS,sBAAsD;AACpE,SAAO;AAAA,IACL,uBAAuB,CAAC,CAAC,KAAK,GAAG,CAAC;AAAA,IAClC,uBAAuB,CAAC,CAAC,KAAK,GAAG,CAAC;AAAA,IAClC,gBAAgB,CAAC,GAAG;AAAA,IACpB,mBAAmB,CAAC,GAAG;AAAA,EACzB;AACF;AAEO,SAAS,uBACd,cACA,QACgC;AAChC,QAAM,OAAO,oBAAoB;AACjC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,uBAAuB,CAAC,uBAAuB,YAAY,CAAC;AAAA,IAC5D,gBAAgB,CAAC,MAAM;AAAA,EACzB;AACF;AAEO,SAAS,wBACd,cACA,QACgC;AAChC,QAAM,OAAO,oBAAoB;AACjC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,uBAAuB,CAAC,uBAAuB,YAAY,CAAC;AAAA,IAC5D,mBAAmB,CAAC,MAAM;AAAA,EAC5B;AACF;;;AElGA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMP,SAAS,UAAAC,eAAc;AACvB,SAAS,UAAAC,eAAc;;;ACVvB,SAAS,0CAA0C;AAEnD,IAAM,yBAAyB;AAC/B,IAAM,gBAAgB;AACtB,IAAM,aAAa;AAEnB,SAAS,4BAA4B,UAA0B;AAC7D,QAAM,UAAU,SAAS,KAAK,EAAE,QAAQ,SAAS,EAAE;AACnD,MAAI,CAAC,gBAAgB,KAAK,OAAO,GAAG;AAClC,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AACA,QAAM,oBAAoB,QAAQ,SAAS,MAAM,IAAI,UAAU,IAAI,OAAO;AAC1E,QAAM,QAAQ,kBAAkB,YAAY;AAC5C,QAAM,SAAS,MACZ,SAAS,wBAAwB,GAAG,EACpC,MAAM,CAAC,sBAAsB;AAChC,MAAI,OAAO,WAAW,wBAAwB;AAC5C,UAAM,IAAI;AAAA,MACR,2CAA2C,sBAAsB;AAAA,IACnE;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,2CAA2C,UAA0B;AACnF,QAAM,MAAM,4BAA4B,QAAQ;AAChD,QAAM,QAAQ,OAAO,KAAK,GAAG,EAAE;AAC/B,QAAM,OAAO,qCAAqC;AAClD,UAAQ,QAAQ,MAAM,SAAS,aAAa;AAC9C;;;ADhBO,IAAM,oCAAoC;AAC1C,IAAM,eAAe;AAIrB,SAAS,oBAAoB,MAAc,MAAmC;AACnF,QAAM,SAAS,CAAC;AAChB,SAAO,eAAe,QAAQ,KAAK;AAAA,IACjC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ,CAAC;AACD,SAAO,eAAe,QAAQ,KAAK;AAAA,IACjC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ,CAAC;AACD,SAAO;AACT;AAEO,SAAS,uBAAuB,YAOpC;AACD,QAAM,EAAE,KAAK,MAAM,OAAO,MAAM,KAAK,IAAI;AACzC,QAAM,UAAU,IAAI,2BAA2B,MAAM,KAAK;AAC1D,QAAM,wBAAwB,KAAK,kBAAkB,WAAW;AAChE,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA,oBAAoB,MAAM,IAAI;AAAA,IAC9B;AAAA,EACF;AACA,SAAO,EAAE,SAAS,eAAe;AACnC;AAEO,SAAS,+BAA+B,YAQ5C;AACD,QAAM,OAAO,uBAAuB;AAAA,IAClC,KAAK,WAAW;AAAA,IAChB,MAAM,WAAW;AAAA,IACjB,OAAO,WAAW;AAAA,IAClB,MAAM,WAAW,WAAW;AAAA,IAC5B,MAAM,WAAW,WAAW;AAAA,IAC5B,eAAe,WAAW;AAAA,EAC5B,CAAC;AACD,QAAM,OAAO,uBAAuB;AAAA,IAClC,KAAK,WAAW;AAAA,IAChB,MAAM,WAAW;AAAA,IACjB,OAAO,WAAW;AAAA,IAClB,MAAM,WAAW,WAAW;AAAA,IAC5B,MAAM,WAAW,WAAW;AAAA,IAC5B,eAAe,WAAW;AAAA,EAC5B,CAAC;AACD,MAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW;AACrD,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO,EAAE,MAAM,KAAK;AACtB;AAEO,SAAS,0BAA0B,YAOxC;AACA,QAAM,QAAQC,QAAO,uBAAuB,WAAW,cAAc;AACrE,QAAM,QAAQC,QAAO,KAAK,KAAK,EAAE,SAAS,KAAK;AAC/C,QAAM,EAAE,IAAI,GAAG,IAAI,4CAA4C,KAAK;AACpE,QAAM,gBAAgB;AAAA,IACpB,WAAW;AAAA,EACb;AACA,SAAO,EAAE,IAAI,IAAI,cAAc;AACjC;AAEO,SAAS,kCACd,eACA,kCACM;AACN,MAAI,gBAAgB,cAAc;AAChC,UAAM,QAAQ,kCAAkC,KAAK,KAAK;AAC1D,QAAI,CAAC,OAAO;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,+BACd,iBACA,YACQ;AACR,MAAI,kBAAkB,mCAAmC;AACvD,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,MAAI,kBAAkB,YAAY;AAChC,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AACA,SAAO,aAAa;AACtB;;;AE7HA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,UAAAC,eAAc;AAEvB,IAAM,sBAAsB;AAC5B,IAAM,0BAA0B;AAChC,IAAM,gBAAgB;AACtB,IAAM,eAAe;AACrB,IAAM,iBAAiB;AACvB,IAAM,eAAe;AACrB,IAAMC,iBAAgB;AACtB,IAAM,mBACJ;AACF,IAAM,eAAe;AACrB,IAAM,eAAe;AACrB,IAAM,oBAAoB;AAE1B,SAAS,wBAAwB,aAAqB,aAA8B;AAClF,QAAM,WAAY,cAAc,cAAe;AAC/C,QAAM,WAAY,cAAc,cAAe;AAC/C,QAAM,OAAO,eAAe,WAAW,YAAY;AACnD,QAAM,OACH,oBAAoB,eAAe,WAAW,YAAY;AAC7D,SAAO,QAAQ;AACjB;AAEO,SAAS,8BAA8B,KAA6B;AACzE,QAAM,aAAa,IAAI,QAAQ,QAAQ,EAAE;AACzC,QAAM,UACJ,WAAW,WAAW,2BACtB,WAAW,WAAW,mBAAmB,IACrC,WAAW,MAAM,oBAAoB,MAAM,IAC3C;AACN,MAAI,QAAQ,WAAW,iBAAiB,CAAC,gBAAgB,KAAK,OAAO,GAAG;AACtE,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAQD,QAAO,KAAK,SAAS,KAAK;AACxC,QAAM,yBAAyB;AAAA,IAC7B,KAAK,MAAM,SAAS,GAAG,YAAY,EAAE,SAAS,KAAK,CAAC;AAAA,EACtD,EAAE,SAASC,cAAa;AACxB,QAAM,yBAAyB;AAAA,IAC7B,KAAK,MAAM,SAAS,gBAAgB,YAAY,EAAE,SAAS,KAAK,CAAC;AAAA,EACnE,EAAE,SAASA,cAAa;AACxB,MACE,CAAC;AAAA,IACC,OAAO,sBAAsB;AAAA,IAC7B,OAAO,sBAAsB;AAAA,EAC/B,GACA;AACA,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,SAAO,CAAC,wBAAwB,sBAAsB;AACxD;AAEO,SAAS,oCAAoC,OAGzB;AACzB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,kBAAkB;AAAA,EAC1B;AACF;AAEO,SAAS,yBAAyB,eAA2C;AAClF,QAAM,UAAU,eAAe,KAAK;AACpC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;AC9EA,SAAS,+CAAAC,oDAAmD;;;ACA5D,SAAS,UAAAC,eAAc;AACvB,SAAS,UAAAC,eAAc;AAEvB,IAAM,+BAA+B;AACrC,IAAM,iCAAiC;AAEvC,SAAS,uBAAuB,SAAqC;AACnE,MAAI;AACF,UAAM,MAAMD,QAAO,uBAAuB,OAAO;AACjD,WAAOC,QAAO,KAAK,GAAG,EAAE,SAAS,KAAK;AAAA,EACxC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,2BAA2B,SAAqC;AACvE,MAAI;AACF,UAAM,MAAMD,QAAO,wBAAwB,OAAO;AAClD,QAAI,IAAI,WAAW,+BAA+B,gCAAgC;AAChF,aAAO,IAAI,SAAS,4BAA4B,EAAE,SAAS,KAAK;AAAA,IAClE;AACA,QAAI,IAAI,WAAW,gCAAgC;AACjD,aAAO,IAAI,SAAS,KAAK;AAAA,IAC3B;AACA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,sCAAsC,SAAyB;AAC7E,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,QAAQ,uBAAuB,OAAO;AAC5C,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,QAAM,YAAY,2BAA2B,OAAO;AACpD,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,qCAAqC;AACvD;;;ACvCA,IAAM,YAAY;AAElB,SAAS,oBAAoB,OAAuB;AAClD,QAAM,MAAM,MAAM,KAAK,EAAE,QAAQ,SAAS,EAAE,EAAE,YAAY;AAC1D,MAAI,CAAC,UAAU,KAAK,GAAG,GAAG;AACxB,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB,OAAkC;AACxE,QAAM,CAAC,MAAM,MAAM,KAAK,IAAI,MAAM,MAAM,GAAG;AAC3C,MAAI,CAAC,QAAQ,CAAC,QAAQ,UAAU,QAAW;AACzC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAM,oBAAoB,IAAI;AAAA,IAC9B,MAAM,oBAAoB,IAAI;AAAA,EAChC;AACF;;;AFkCA,SAAS,+BAA+B,YAOtC;AACA,QAAM,QAAQ;AAAA,IACZ,WAAW;AAAA,EACb;AACA,QAAM,EAAE,IAAI,GAAG,IAAIE,6CAA4C,KAAK;AACpE,QAAM,gBAAgB;AAAA,IACpB,WAAW;AAAA,EACb;AACA,SAAO,EAAE,IAAI,IAAI,cAAc;AACjC;AAEO,SAAS,yBAAyB,YAKW;AAClD,QAAM,EAAE,IAAI,IAAI,cAAc,IAAI,+BAA+B;AAAA,IAC/D,2BAA2B,WAAW;AAAA,IACtC,kBAAkB,WAAW;AAAA,EAC/B,CAAC;AACD,SAAO;AAAA,IACL;AAAA,MACE,WAAW,WAAW;AAAA,MACtB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,EACb;AACF;AAEA,eAAsB,8BAA8B,YAQjD;AACD,MAAI,WAAW,iBAAiB,cAAc;AAC5C,WAAO,EAAE,UAAU,CAAC,SAAS,OAAO,EAAE;AAAA,EACxC;AACA,QAAM,QAAQ,WAAW,2BAA2B,KAAK,KAAK;AAC9D,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,OAAO,MAAM,WAAW,wBAAwB;AAAA,IACpD,qBAAqB;AAAA,IACrB,eAAe,WAAW;AAAA,IAC1B,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,SAAO;AAAA,IACL,UAAU,CAAC,KAAK,SAAS,OAAO;AAAA,IAChC,YAAY;AAAA,MACV,gBAAgB,KAAK;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,kBAAkB,KAAK;AAAA,MACvB,mBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,SAAS,4BACP,uBACA,YACA,2BACQ;AACR,MAAI,wBAAwB,mCAAmC;AAC7D,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,MAAI,wBAAwB,YAAY;AACtC,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AACA,QAAM,gBAAgB,aAAa;AACnC,oCAAkC,eAAe,yBAAyB;AAC1E,SAAO;AACT;AAEA,SAAS,6BAA6B,YAKc;AAClD,SAAO,yBAAyB;AAAA,IAC9B,WAAW,WAAW;AAAA,IACtB,2BAA2B,WAAW;AAAA,IACtC,kBAAkB,WAAW;AAAA,IAC7B,cAAc,WAAW;AAAA,EAC3B,CAAC;AACH;AAEA,eAAsB,+BACpB,YAOC;AACD,QAAM,aAAa,OAAO,WAAW,MAAM,KAAK,IAAI,OAAO,WAAW,MAAM,KAAK;AACjF,QAAM,gBAAgB;AAAA,IACpB,WAAW;AAAA,IACX;AAAA,IACA,WAAW;AAAA,EACb;AACA,QAAM,EAAE,MAAM,KAAK,IAAI,+BAA+B;AAAA,IACpD,KAAK,WAAW;AAAA,IAChB,OAAO,WAAW;AAAA,IAClB,OAAO,WAAW;AAAA,IAClB,OAAO,WAAW;AAAA,IAClB,YAAY,wBAAwB,WAAW,aAAa;AAAA,IAC5D,YAAY,wBAAwB,WAAW,aAAa;AAAA,IAC5D,eAAe,WAAW;AAAA,EAC5B,CAAC;AACD,QAAM,EAAE,UAAU,WAAW,IAAI,MAAM,8BAA8B;AAAA,IACnE;AAAA,IACA,2BAA2B,WAAW;AAAA,IACtC,yBAAyB,WAAW;AAAA,IACpC,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,QAAM,cAAc,6BAA6B;AAAA,IAC/C,2BAA2B,WAAW;AAAA,IACtC,kBAAkB,WAAW;AAAA,IAC7B,cAAc,WAAW;AAAA,IACzB,WAAW,KAAK,QAAQ;AAAA,EAC1B,CAAC;AACD,QAAM,QAAQ,oCAAoC;AAAA,IAChD,eAAe,WAAW;AAAA,IAC1B,GAAI,WAAW,iBAAiB,EAAE,gBAAgB,WAAW,eAAe,IAAI,CAAC;AAAA,EACnF,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,cAAc,CAAC,KAAK,gBAAgB,KAAK,cAAc;AAAA,IACvD;AAAA,IACA,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,EACrC;AACF;;;ANxLA,SAAS,8BACP,uBACA,aACQ;AACR,MAAI,wBAAwB,mCAAmC;AAC7D,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,MAAI,wBAAwB,aAAa;AACvC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AACA,SAAO,cAAc;AACvB;AAEA,eAAe,+BAA+B,YAQ3C;AACD,SAAO,WAAW,IAAI;AAAA,IACpB,WAAW;AAAA,IAGX;AAAA,MACE,WAAW;AAAA,MACX,WAAW,sBAAsB,SAAS;AAAA,IAC5C;AAAA,IACA,CAAC,WAAW,iBAAiB,OAAO;AAAA,IACpC,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF;AAEA,SAAS,4BAA4B,YAMlC;AACD,QAAM,iBAAiB,wBAAwB,WAAW,qBAAqB;AAC/E,QAAM,UAAU,WAAW,IAAI;AAAA,IAC7B,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACA,QAAM,kBAAkBC;AAAA,IACtB;AAAA,IACA,oBAAoB,eAAe,MAAM,eAAe,IAAI;AAAA,IAC5D,WAAW;AAAA,EACb;AACA,SAAO,EAAE,SAAS,gBAAgB;AACpC;AAEA,eAAe,iCAAiC,YAa7C;AACD,QAAM,cAAc,OAAO,WAAW,KAAK,KAAK;AAChD,QAAM,gBAAgB;AAAA,IACpB,WAAW;AAAA,IACX;AAAA,EACF;AACA,QAAM,EAAE,SAAS,gBAAgB,IAAI,4BAA4B,UAAU;AAC3E,QAAM,EAAE,UAAU,WAAW,IAAI,MAAM,8BAA8B;AAAA,IACnE;AAAA,IACA,2BAA2B,WAAW;AAAA,IACtC,yBAAyB,WAAW;AAAA,IACpC,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,QAAM,cAAc,yBAAyB;AAAA,IAC3C,WAAW,QAAQ;AAAA,IACnB,2BAA2B,WAAW;AAAA,IACtC,kBAAkB,WAAW;AAAA,IAC7B,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,QAAM,QAAQ,oCAAoC;AAAA,IAChD,eAAe,WAAW;AAAA,IAC1B,GAAI,WAAW,iBAAiB,EAAE,gBAAgB,WAAW,eAAe,IAAI,CAAC;AAAA,EACnF,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,sBAAsB,YAkBzC;AACD,QAAM,EAAE,iBAAiB,UAAU,YAAY,aAAa,MAAM,IAChE,MAAM,iCAAiC,UAAU;AACnD,QAAM,QAAQ,MAAM,+BAA+B;AAAA,IACjD,KAAK,WAAW;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,WAAW;AAAA,IACzB,uBAAuB,WAAW;AAAA,EACpC,CAAC;AACD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,yBAAyB;AAAA,MACvB,WAAW;AAAA,MACX;AAAA,MACA,aAAa,WAAW,gBAAgB;AAAA,MACxC;AAAA,IACF;AAAA,IACA,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,EACrC;AACF;AAEA,eAAsB,0BACpB,YAMC;AACD,QAAM,EAAE,aAAa,OAAO,cAAc,UAAU,WAAW,IAC7D,MAAM,+BAA+B,UAAU;AACjD,QAAM,QAAQ,MAAM,WAAW,IAAI;AAAA,IACjC;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,WAAW,sBAAsB,SAAS;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,yBAAyB;AAAA,MACvB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,aAAa,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF;AAAA,IACA,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,EACrC;AACF;;;AHpLA,OAAuB;AAUvB,SAAS,kBAAkB,2BAA2B;;;AY1BtD,SAAS,gBAAgB,4BAA4B;AAUrD,IAAM,yBAAyB;AAE/B,SAAS,8BAAsC;AAC7C,WAAS,QAAQ,GAAG,QAAQ,wBAAwB,SAAS;AAC3D,UAAM,YAAY,eAAe,0BAA0B;AAC3D,QAAI;AACF,2BAAqB,SAAS;AAC9B,aAAO;AAAA,IACT,QAAQ;AACN;AAAA,IACF;AAAA,EACF;AACA,QAAM,IAAI,MAAM,mDAAmD;AACrE;AAEA,eAAsB,8BACpB,KACA,eACA,YAK6B;AAC7B,QAAM,sBAAsB,qBAAqB,WAAW,mBAAmB;AAC/E,QAAM,YAAY,4BAA4B;AAC9C,QAAM,SAAS,IAAI;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,EACtB;AACA,QAAM,CAAC,SAAS,OAAO,IAAI,uBAAuB,WAAW,YAAY;AACzE,QAAM,wBAAwB,yBAAyB,aAAa;AACpE,QAAM,YAAY,IAAI;AAAA,IACpB;AAAA,IACA,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,sBAAsB;AAAA,IAC1B,WAAW;AAAA,EACb;AACA,QAAM,UAAyB;AAAA,IAC7B,OAAO,UAAU,KAAK;AAAA,IACtB,WAAW,UAAU,KAAK;AAAA,IAC1B,oBAAoB,qBAAqB,SAAS;AAAA,IAClD,OAAO,CAAC,UAAU,KAAK,UAAU,UAAU,KAAK,QAAQ;AAAA,IACxD,eAAe;AAAA,IACf;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,gBAAgB,UAAU;AAAA,IAC1B,MAAM,UAAU;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB,UAAU;AAAA,EAC/B;AACF;;;AZnCO,IAAM,qBAAN,MAAyB;AAAA,EAI9B,YACmB,QACA,eACA,gBACjB;AAHiB;AACA;AACA;AAAA,EAChB;AAAA,EAHgB;AAAA,EACA;AAAA,EACA;AAAA,EANX,MAAkC;AAAA,EAClC,cAAyC;AAAA,EAQjD,MAAc,aAA4B;AACxC,QAAI,KAAK,KAAK;AACZ;AAAA,IACF;AACA,QAAI,KAAK,aAAa;AACpB,aAAO,KAAK;AAAA,IACd;AACA,SAAK,eAAe,YAAY;AAC9B,UAAI,CAAC,KAAK,QAAQ;AAChB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,WAAK,MAAM,MAAM,oBAAoB,KAAK;AAAA,QACxC,YAAY,KAAK,OAAO;AAAA,QACxB,aAAa,KAAK,OAAO;AAAA,QACzB,MAAM,KAAK,OAAO;AAAA,MACpB,CAAC;AAAA,IACH,GAAG;AACH,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,oBAA6C;AACjD,UAAM,KAAK,WAAW;AACtB,QAAI,CAAC,KAAK,KAAK;AACb,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,oBAAkD;AAChD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,mBAA2B;AACzB,WAAO,yBAAyB,KAAK,aAAa;AAAA,EACpD;AAAA,EAEA,MAAM,2CAA2C,WAAoC;AACnF,UAAM,KAAK,WAAW;AACtB,QAAI,CAAC,KAAK,KAAK;AACb,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,WAAO,kBAAkB,KAAK,GAAG,EAAE;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,oBACA,qBACiB;AACjB,UAAM,KAAK,WAAW;AACtB,QAAI,CAAC,KAAK,KAAK;AACb,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,UAAM,eAAe,0BAA0B,mBAAmB;AAClE,UAAM,SAAS,KAAK,IAAI,kCAAkC;AAAA,MACxD,iBAAiB;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,wBAAwB,YAI3B;AACD,UAAM,MAAM,MAAM,KAAK,kBAAkB;AACzC,WAAO,8BAA8B,KAAK,KAAK,iBAAiB,GAAG,UAAU;AAAA,EAC/E;AAAA,EAEA,MAAM,4BAA4B,YAIe;AAC/C,UAAM,EAAE,gBAAgB,MAAM,kBAAkB,kBAAkB,IAChE,MAAM,KAAK,wBAAwB,UAAU;AAC/C,WAAO,EAAE,gBAAgB,MAAM,kBAAkB,kBAAkB;AAAA,EACrE;AAAA,EAEA,MAAM,4BAA4B,YAMT;AACvB,UAAM,MAAM,MAAM,KAAK,kBAAkB;AACzC,UAAM,YAAY,4BAA4B,WAAW,eAAe;AACxE,UAAM,sBAAsB;AAAA,MAC1B,WAAW;AAAA,IACb;AACA,UAAM,gBAAgB,KAAK,iBAAiB;AAC5C,UAAM,QAAQ,oCAAoC;AAAA,MAChD;AAAA,MACA,GAAI,KAAK,iBAAiB,EAAE,gBAAgB,KAAK,eAAe,IAAI,CAAC;AAAA,IACvE,CAAC;AACD,UAAM,UAAU;AAAA,MACd,OAAO,WAAW,KAAK;AAAA,MACvB,WAAW,WAAW,KAAK;AAAA,MAC3B,oBAAoBC,sBAAqB,WAAW,gBAAgB;AAAA,MACpE,OAAO,CAAC,WAAW,KAAK,UAAU,WAAW,KAAK,QAAQ;AAAA,MAC1D;AAAA,MACA;AAAA,IACF;AACA,UAAM,cAAc;AAAA,MAClB;AAAA,QACE;AAAA,QACA,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,eAAe,mBAAmB;AAAA,MACpC;AAAA,MACA,WAAW;AAAA,IACb;AACA,UAAM,QAAQ,MAAM,IAAI;AAAA,MACtB;AAAA,MACA,uBAAuB,WAAW,cAAc,WAAW,KAAK,KAAK;AAAA,MACrE,CAAC,SAAS,OAAO;AAAA,MACjB,CAAC,SAAS,OAAO;AAAA,MACjB;AAAA,IACF;AACA,UAAM,0BAAiD;AAAA,MACrD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO,EAAE,GAAG,OAAO,wBAAwB;AAAA,EAC7C;AAAA,EAEA,MAAM,uBAAuB,WAAoC;AAC/D,UAAM,MAAM,MAAM,KAAK,kBAAkB;AACzC,WAAO,IAAI,uBAAuB,SAAS;AAAA,EAC7C;AAAA,EACA,MAAM,6BAA6B,YASN;AAC3B,UAAM,KAAK,WAAW;AACtB,QAAI,CAAC,KAAK,KAAK;AACb,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,WAAO,sBAAsB;AAAA,MAC3B,KAAK,KAAK;AAAA,MACV,eAAe,KAAK,iBAAiB;AAAA,MACrC,yBAAyB,CAAC,UAAU,KAAK,wBAAwB,KAAK;AAAA,MACtE,GAAI,KAAK,iBAAiB,EAAE,gBAAgB,KAAK,eAAe,IAAI,CAAC;AAAA,MACrE,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AAAA,EACA,MAAM,iCAAiC,YAWV;AAC3B,UAAM,KAAK,WAAW;AACtB,QAAI,CAAC,KAAK,KAAK;AACb,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,WAAO,0BAA0B;AAAA,MAC/B,KAAK,KAAK;AAAA,MACV,eAAe,KAAK,iBAAiB;AAAA,MACrC,yBAAyB,CAAC,UAAU,KAAK,wBAAwB,KAAK;AAAA,MACtE,GAAI,KAAK,iBAAiB,EAAE,gBAAgB,KAAK,eAAe,IAAI,CAAC;AAAA,MACrE,OAAO,WAAW;AAAA,MAClB,OAAO,WAAW;AAAA,MAClB,OAAO,WAAW;AAAA,MAClB,2BAA2B,WAAW;AAAA,MACtC,kBAAkB,WAAW;AAAA,MAC7B,eAAe,WAAW;AAAA,MAC1B,eAAe,WAAW;AAAA,MAC1B,uBAAuB,WAAW;AAAA,MAClC,2BAA2B,WAAW;AAAA,MACtC,cAAc,WAAW;AAAA,IAC3B,CAAC;AAAA,EACH;AACF;;;Aa1OO,SAAS,yBAAyB,OAIlB;AACrB,SAAO,IAAI;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACF;AAEA,IAAI;AAEG,SAAS,4BAA4B,SAAmC;AAC7E,iCAA+B;AACjC;AAEO,SAAS,wBAA4C;AAC1D,MAAI,CAAC,8BAA8B;AACjC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ACnBA,eAAsB,yBACpB,OAC+B;AAC/B,QAAM,WAAW,MAAM,YAAY,MAAM,KAAK,IAAI,CAAC,KAAK;AACxD,QAAM,CAAC,SAAS,aAAa,UAAU,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3D,MAAM,GAAG,MAAM,UAAU,GAAG,QAAQ,EAAE,EAAE,KAAK,CAAC,aAAa,SAAS,YAAY,CAAC;AAAA,IACjF,MAAM,MAAM,cAAc,EAAE,KAAK,CAAC,aAAa,SAAS,YAAY,CAAC;AAAA,IACrE,MAAM,MAAM,aAAa,EAAE,KAAK,CAAC,aAAa,SAAS,YAAY,CAAC;AAAA,EACtE,CAAC;AACD,SAAO,EAAE,SAAS,aAAa,WAAW;AAC5C;AAEA,eAAsB,gCAAgC,SAEpB;AAChC,QAAM,OAAO,gCAAgC;AAC7C,QAAM,aAAa,IAAI,IAAI,2CAA2C,YAAY,GAAG,EAClF;AACH,QAAM,iBAAiB,IAAI;AAAA,IACzB;AAAA,IACA,YAAY;AAAA,EACd,EAAE;AACF,QAAM,gBAAgB,IAAI;AAAA,IACxB;AAAA,IACA,YAAY;AAAA,EACd,EAAE;AACF,SAAO,yBAAyB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,SAAS,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;AAAA,EAClD,CAAC;AACH;;;ACzCA,SAAS,UAAAC,eAAc;AAOvB,SAAS,kBAAAC,uBAAsB;;;ACP/B,IAAM,mBACJ;AACF,IAAM,oBAAoB;AAC1B,IAAM,YAAY;AAClB,IAAM,gBAAgB;AAEf,SAAS,yBAAyB,SAAyB;AAChE,MAAI,QAAQ,OAAO,QAAQ,KAAK,CAAC;AACjC,WAAU,QAAQ,mBAAoB,oBAAoB;AAC1D,QAAM,QAAQ,OAAO,MAAM,iBAAiB;AAC5C,WAAS,QAAQ,oBAAoB,GAAG,SAAS,GAAG,SAAS,GAAG;AAC9D,UAAM,KAAK,IAAI,OAAO,QAAQ,SAAS;AACvC,cAAU;AAAA,EACZ;AACA,SAAO;AACT;;;ACfA,SAAS,kBAAAC,uBAAsB;AAI/B,IAAM,wBAAwB;AAE9B,eAAsB,2CAGnB;AACD,QAAM,sBAAsB,EAAE,kBAAkB;AAChD,QAAM,qBAAqBC,gBAAe,0BAA0B;AACpE,QAAM,MAAM,MAAM,sBAAsB,EAAE,kBAAkB;AAC5D,QAAM,QAAQ,IAAI,oCAAoC,kBAAkB;AACxE,QAAM,gBAAgB,MAAM,EAAE,SAAS,uBAAuB,GAAG;AACjE,QAAM,gBAAgB,MAAM,EAAE,SAAS,uBAAuB,GAAG;AACjE,SAAO;AAAA,IACL;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AFRA,IAAMC,yBAAwB;AAc9B,SAAS,2BAA+D;AACtE,SAAO,EAAE,KAAK,QAAQ,QAAQ,OAAU;AAC1C;AAEA,SAAS,oBACP,MACe;AACf,QAAM,CAAC,SAAS,OAAO,IAAI,uBAAuB,KAAK,YAAY;AACnE,SAAO;AAAA,IACL,UAAU,yBAAyB,OAAO;AAAA,IAC1C,UAAU,yBAAyB,OAAO;AAAA,IAC1C,4BAA4B;AAAA,IAC5B,WAAW,yBAAyB,KAAK,SAAS;AAAA,IAClD,QAAQ,yBAAyB,KAAK,MAAM;AAAA,IAC5C,OAAO,OAAO,KAAK,KAAK;AAAA,EAC1B;AACF;AAEA,eAAsB,iCAAkD;AACtE,QAAM,sBAAsB,EAAE,kBAAkB;AAChD,SAAOC,gBAAe,0BAA0B;AAClD;AAEO,SAAS,uBAAuB,YAKjB;AACpB,QAAM,QAAQ,WAAW,eAAe,IAAI,CAAC,SAAS,oBAAoB,IAAI,CAAC;AAC/E,QAAM,mBAAmB;AAAA,IACvB,WAAW,aAAa,6BAA6B,KAAK;AAAA,EAC5D;AACA,MAAI,6BAA6B,yBAAyB;AAC1D,MAAI,WAAW,8BAA8B,KAAK,GAAG;AACnD,UAAM,UAAU;AAAA,MACd,WAAW,6BAA6B,KAAK;AAAA,IAC/C;AACA,UAAM,eAA2C;AAAA,MAC/C,OAAO,WAAW,oBAAoB,KAAK;AAAA,MAC3C,cAAcC,QAAO,KAAK,QAAQ,EAAE,SAASF,wBAAuB,GAAG,GAAG,KAAK;AAAA,MAC/E,cAAcE,QAAO,KAAK,QAAQ,EAAE,SAASF,wBAAuB,GAAG,GAAG,KAAK;AAAA,IACjF;AACA,iCAA6B,EAAE,KAAK,QAAQ,QAAQ,CAAC,YAAY,EAAE;AAAA,EACrE;AACA,SAAO;AAAA,IACL,OAAO,WAAW,oBAAoB,KAAK;AAAA,IAC3C,mBAAmBE,QAAO;AAAA,MACxB,iBAAiB,EAAE,SAASF,wBAAuB,GAAG;AAAA,MACtD;AAAA,IACF;AAAA,IACA,mBAAmBE,QAAO;AAAA,MACxB,iBAAiB,EAAE,SAASF,wBAAuB,GAAG;AAAA,MACtD;AAAA,IACF;AAAA,IACA,uBAAuBE,QAAO;AAAA,MAC5B,WAAW,aAAa;AAAA,MACxB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,MAAM;AAAA,IACf,8BAA8B;AAAA,EAChC;AACF;AAEA,eAAsB,iCACpB,OAC4B;AAC5B,SAAO,uBAAuB;AAAA,IAC5B,qBAAqB,MAAM;AAAA,IAC3B,cAAc;AAAA,MACZ,oBAAoB,MAAM,sBAAsB;AAAA,MAChD,8BACE,MAAM,sBAAsB;AAAA,IAChC;AAAA,IACA,gBAAgB,CAAC,MAAM,aAAa;AAAA,EACtC,CAAC;AACH;;;AGzGO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,YAKT;AACD,UAAM,WAAW,OAAO;AACxB,SAAK,OAAO;AACZ,SAAK,aAAa,WAAW;AAC7B,QAAI,WAAW,eAAe,QAAW;AACvC,WAAK,aAAa,WAAW;AAAA,IAC/B;AACA,QAAI,WAAW,kBAAkB,QAAW;AAC1C,WAAK,gBAAgB,WAAW;AAAA,IAClC;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,YAGjC;AACA,QAAM,iBAAiB,WAAW,QAAQ,GAAG;AAC7C,MAAI,mBAAmB,IAAI;AACzB,WAAO,EAAE,MAAM,WAAW;AAAA,EAC5B;AACA,SAAO;AAAA,IACL,MAAM,WAAW,MAAM,GAAG,cAAc;AAAA,IACxC,SAAS,WAAW,MAAM,iBAAiB,CAAC;AAAA,EAC9C;AACF;;;ACkCO,SAAS,uBACd,aAEwB;AACxB,MAAI,CAAC,eAAe,EAAE,qBAAqB,cAAc;AACvD,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AACA,QAAM,WAAW;AACjB,SAAO,SAAS;AAClB;AAEO,SAAS,sBACd,aACmB;AACnB,SAAO,uBAAuB,WAAW,EAAE;AAC7C;;;ACpFA,OAAoB;AAEpB,IAAM,yBAAyB;AAC/B,IAAM,gCAAgC;AAYtC,SAAS,oBAAoB,OAAwD;AACnF,MAAI,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK,KAAK,SAAS,GAAG;AAC1E,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,GAAG;AACxD,UAAM,SAAS,OAAO,KAAK;AAC3B,QAAI,OAAO,cAAc,MAAM,KAAK,UAAU,GAAG;AAC/C,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,mBAAmB,eAAwC;AAC/E,QAAM,WAAW,MAAM,MAAM,eAAe;AAAA,IAC1C,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU;AAAA,MACnB,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,QAAQ;AAAA,IACV,CAAC;AAAA,EACH,CAAC;AACD,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,MAAI,CAAC,SAAS,MAAM,KAAK,OAAO;AAC9B,UAAM,UAAU,KAAK,OAAO,WAAW,SAAS;AAChD,UAAM,IAAI,MAAM,oDAAoD,OAAO,EAAE;AAAA,EAC/E;AACA,QAAM,WACJ,oBAAoB,KAAK,QAAQ,QAAQ,KACzC,oBAAoB,KAAK,QAAQ,YAAY;AAC/C,MAAI,aAAa,QAAW;AAC1B,UAAM,IAAI,MAAM,kEAAkE;AAAA,EACpF;AACA,SAAO;AACT;AAEA,eAAsB,uBAAuB,YAG3B;AAChB,WAAS,UAAU,GAAG,UAAU,wBAAwB,WAAW,GAAG;AACpE,UAAM,WAAW,MAAM,WAAW,OAAO,eAAe,WAAW,IAAI;AACvE,QAAI,SAAS,WAAW,WAAW;AACjC;AAAA,IACF;AACA,QAAI,SAAS,WAAW,UAAU;AAChC,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AACA,UAAM,IAAI,QAAQ,CAAC,YAAY;AAC7B,iBAAW,SAAS,6BAA6B;AAAA,IACnD,CAAC;AAAA,EACH;AACA,QAAM,IAAI,MAAM,oDAAoD;AACtE;;;ACpEA,SAAS,UAAAC,gBAAc;AACvB,SAAS,WAAW,oBAAoB,OAAAC,MAAK,WAAW;AAIxD,IAAM,2BAA2B;AACjC,IAAM,+BAA+B;AAErC,SAAS,mBAAmB,WAA8B;AACxD,SAAO,IAAI,MAAM,SAASC,SAAO,KAAK,UAAU,QAAQ,OAAO,EAAE,GAAG,KAAK,CAAC;AAC5E;AAEO,SAAS,yBAAyB,WAA2B;AAClE,QAAM,QAAQ,UAAU,KAAK;AAC7B,SAAO,0BAA0B,KAAK,KAAK,IACvCA,SAAO,KAAK,MAAM,QAAQ,QAAQ,EAAE,GAAG,KAAK,IAC5CA,SAAO,KAAK,OAAO,QAAQ;AACjC;AAEA,SAAS,mBAAmB,WAA8B;AACxD,QAAM,QAAQ,yBAAyB,SAAS;AAChD,SAAO,IAAI,MAAM,SAAS,KAAK;AACjC;AAEA,eAAsB,mBAAmB,YAMvB;AAChB,QAAM,kBAAkB,WAAW,oBAAoB;AACvD,MAAI,CAAC,iBAAiB;AACpB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,cAAc,WAAW,oBAAoB,IAAI;AACvD,QAAM,SAAS,IAAIC,KAAI,OAAO,WAAW,eAAe,EAAE,WAAW,KAAK,CAAC;AAC3E,QAAM,gBAAgB,MAAM,OAAO,WAAW,WAAW,KAAK;AAC9D,QAAM,cAAc,IAAI,mBAAmB,eAAe;AAAA,IACxD,KAAK;AAAA,IACL,mBAAmB,WAAW;AAAA,EAChC,CAAC,EACE;AAAA,IACC,UAAU,uBAAuB;AAAA,MAC/B,UAAU;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,mBAAmB,WAAW,SAAS,SAAS;AAAA,QAChD,IAAI,MAAM,OAAO,WAAW,SAAS,eAAe;AAAA,QACpD,mBAAmB,WAAW,SAAS,SAAS;AAAA,MAClD;AAAA,IACF,CAAC;AAAA,EACH,EACC,WAAW,4BAA4B,EACvC,MAAM;AACT,QAAM,sBAAsB,MAAM,OAAO,mBAAmB,WAAW;AACvE,QAAM,EAAE,YAAY,IAAI,MAAM,gBAAgB;AAAA,IAC5C,KAAK,oBAAoB,MAAM;AAAA,IAC/B,mBAAmB,WAAW;AAAA,IAC9B,SAAS,WAAW;AAAA,EACtB,CAAC;AACD,QAAM,oBAAoB,mBAAmB;AAAA,IAC3C;AAAA,IACA,WAAW;AAAA,EACb;AACA,QAAM,SAAS,MAAM,OAAO,gBAAgB,iBAAiB;AAC7D,QAAM,SAAS,OAAO,OAAO,MAAM;AACnC,MAAI,WAAW,aAAa,WAAW,WAAW;AAChD,UAAM,IAAI,MAAM,2CAA2C,MAAM,EAAE;AAAA,EACrE;AACA,QAAM,uBAAuB,EAAE,QAAQ,MAAM,OAAO,KAAK,CAAC;AAC5D;;;ACnCA,SAAS,wBACP,eACkC;AAClC,SAAO,CAAC,eAAe,eAAe,eAAe,aAAa;AACpE;AAEA,SAAS,aAAqB;AAC5B,SAAO,WAAW,QAAQ,aAAa,KAAK,GAAG,KAAK,IAAI,CAAC;AAC3D;AAEA,SAAS,gBAAgB,MAAc,OAAyB;AAC9D,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,MAAM,SAAS;AAAA,EACxB;AACA,SAAO;AACT;AAEA,eAAe,qBAAqB,UAAiD;AACnF,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,uBAAuB,KAAK,UAAU,IAAI,CAAC,EAAE;AAAA,EAC/D;AACA,SAAO;AACT;AAEA,SAAS,wBACP,MACO;AACP,QAAM,aAAa,KAAK,cAAc,KAAK;AAC3C,QAAM,SAAS,mBAAmB,UAAU;AAC5C,QAAM,IAAI,gBAAgB;AAAA,IACxB,SAAS;AAAA,IACT;AAAA,IACA,GAAI,KAAK,aAAa,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;AAAA,IACzD,GAAI,OAAO,UAAU,EAAE,eAAe,OAAO,QAAQ,IAAI,CAAC;AAAA,EAC5D,CAAC;AACH;AAEA,eAAsB,oCACpB,OACoC;AACpC,QAAM,gBAAgB;AAAA,IACpB,MAAM,oBAAoB,QAAQ;AAAA,EACpC;AACA,QAAM,0BACJ,MAAM,2BAA2B,wBAAwB,aAAa;AACxE,QAAM,cAAc,MAAM,oBAAoB,IAAI;AAClD,QAAM,gBAAgB,MAAM,mBAAmB,MAAM,aAAa;AAClE,QAAM,WAAW,MAAM;AAAA,IACrB,GAAG,MAAM,oBAAoB,IAAI,UAAU;AAAA,IAC3C;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC9C,MAAM,KAAK;AAAA,QACT;AAAA,UACE,OAAO,MAAM;AAAA,UACb,cAAc,MAAM;AAAA,UACpB;AAAA,UACA,YAAY,MAAM;AAAA,UAClB,oBAAoB,MAAM;AAAA,UAC1B;AAAA,UACA,qBAAqB,MAAM;AAAA,UAC3B,YAAY,MAAM;AAAA,UAClB,OAAO,WAAW;AAAA,UAClB;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,OAAO,MAAM,qBAAqB,QAAQ;AAChD,MAAI,KAAK,WAAW,YAAY;AAC9B,4BAAwB,IAAI;AAAA,EAC9B;AACA,MAAI,MAAM,oBAAoB,IAAI,wBAAwB;AACxD,UAAM,mBAAmB;AAAA,MACvB,UAAU;AAAA,MACV,OAAO,MAAM;AAAA,MACb,mBAAmB,MAAM;AAAA,MACzB,eAAe,MAAM;AAAA,MACrB,qBAAqB,MAAM;AAAA,IAC7B,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ACzHA,SAAS,UAAU,QAAiB,MAAyB;AAC3D,MAAI,SAAkB;AACtB,aAAW,OAAO,MAAM;AACtB,QAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,aAAO;AAAA,IACT;AACA,aAAU,OAAyB,GAAG;AAAA,EACxC;AACA,SAAO;AACT;AAEA,SAAS,aAAa,YAA8B;AAClD,QAAM,kBACJ,UAAU,YAAY,CAAC,iBAAiB,CAAC,KACzC,UAAU,YAAY,CAAC,UAAU,iBAAiB,CAAC,KACnD,UAAU,YAAY,CAAC,cAAc,iBAAiB,CAAC;AACzD,MAAI,mBAAmB,OAAO,oBAAoB,UAAU;AAC1D,WAAO;AAAA,EACT;AACA,QAAM,oBAAoB,UAAU,YAAY,CAAC,OAAO,CAAC;AACzD,MAAI,OAAO,sBAAsB,UAAU;AACzC,WAAO,kBAAkB,YAAY,EAAE,SAAS,SAAS;AAAA,EAC3D;AACA,SAAO;AACT;AAEA,eAAe,kBACb,QACA,YAC8B;AAC9B,MAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,WAAO;AAAA,EACT;AACA,QAAM,SAAU,OAAyB,UAAU;AACnD,MAAI,OAAO,WAAW,YAAY;AAChC,WAAO;AAAA,EACT;AACA,SAAQ,OAAkC;AAC5C;AAEA,eAAsB,gBAAgB,sBAA8C;AAClF,QAAM,aAAa,MAAM,kBAAkB,sBAAsB,UAAU;AAC3E,MAAI,CAAC,cAAc,CAAC,aAAa,UAAU,GAAG;AAC5C;AAAA,EACF;AACA,QAAM,gBACH,MAAM,kBAAkB,sBAAsB,kBAAkB,KAChE,MAAM,kBAAkB,sBAAsB,SAAS;AAC1D,MAAI,CAAC,eAAe;AAClB;AAAA,EACF;AACA,QAAM,kBAAkB,sBAAsB,UAAU;AAC1D;;;ACjDA,SAAS,UAAAC,gBAAc;AAEvB,eAAsB,mBAAmB,YAOrB;AAClB,QAAM,uBAAuB,MAAM,WAAW,eAAe,SAAS;AAAA,IACpE,MAAM,WAAW;AAAA,IACjB,aAAaA,SAAO,KAAK,WAAW,SAAS,QAAQ,SAAS,EAAE,GAAG,KAAK;AAAA,IACxE,mBAAmBA,SAAO,KAAK,WAAW,UAAU,QAAQ,SAAS,EAAE,GAAG,KAAK;AAAA,IAC/E,YAAY,WAAW;AAAA,IACvB,mBAAmB;AAAA,MACjB,mBAAmB,WAAW,SAAS;AAAA,MACvC,WAAW,yBAAyB,WAAW,SAAS,SAAS;AAAA,IACnE;AAAA,EACF,CAAC;AACD,QAAM,gBAAgB,oBAAoB;AAC1C,QAAM,kBAAkB,MAAM,qBAAqB,YAAY;AAC/D,QAAM,kBAAkB,gBAAgB,yBAAyB,QAAQ;AACzE,MAAI,CAAC,iBAAiB;AACpB,UAAM,IAAI,MAAM,oBAAoB;AAAA,EACtC;AACA,SAAO;AACT;;;ACZA,eAAsB,qBACpB,OACiB;AACjB,QAAM,aAAa,sBAAsB,MAAM,mBAAmB,EAAE;AAAA,IAClE,YAAY,MAAM;AAAA,IAClB,iBAAiB,MAAM;AAAA,IACvB,mBAAmB,MAAM;AAAA,IACzB,eAAe,MAAM;AAAA,EACvB,CAAC;AACD,QAAM,WAAW,MAAM,WAAW,gBAAgB;AAClD,QAAM,mBAAmB,SAAS;AAElC,QAAM,EAAE,yBAAyB,WAAW,WAAW,IACrD,MAAM,MAAM,mBAAmB,4BAA4B;AAAA,IACzD,qBAAqB,MAAM;AAAA,IAC3B,MAAM,MAAM;AAAA,IACZ,kBAAkB,MAAM;AAAA,IACxB,iBAAiB;AAAA,IACjB,cAAc,MAAM;AAAA,EACtB,CAAC;AAEH,QAAM,WAAW,MAAM,oCAAoC;AAAA,IACzD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM;AAAA,IACpB,UAAU;AAAA,IACV,WAAW;AAAA,IACX;AAAA,IACA,mBAAmB,MAAM;AAAA,IACzB,eAAe,MAAM;AAAA,IACrB,qBAAqB,MAAM;AAAA,EAC7B,CAAC;AACD,SAAO,mBAAmB;AAAA,IACxB,gBAAgB;AAAA,IAChB,MAAM,MAAM;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,IACX;AAAA,EACF,CAAC;AACH;;;ACvCA,eAAsB,kCACpB,OACiB;AACjB,QAAM,aAAa,sBAAsB,MAAM,mBAAmB,EAAE;AAAA,IAClE,YAAY,MAAM;AAAA,IAClB,iBAAiB,MAAM;AAAA,IACvB,mBAAmB,MAAM;AAAA,IACzB,eAAe,MAAM;AAAA,EACvB,CAAC;AACD,QAAM,WAAW,MAAM,oCAAoC;AAAA,IACzD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM;AAAA,IACpB,UAAU,MAAM;AAAA,IAChB,WAAW,MAAM;AAAA,IACjB,GAAI,MAAM,aAAa,EAAE,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,IAC3D,GAAI,MAAM,0BACN,EAAE,yBAAyB,MAAM,wBAAwB,IACzD,CAAC;AAAA,IACL,mBAAmB,MAAM;AAAA,IACzB,eAAe,MAAM;AAAA,IACrB,qBAAqB,MAAM;AAAA,EAC7B,CAAC;AACD,SAAO,mBAAmB;AAAA,IACxB,gBAAgB;AAAA,IAChB,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,WAAW,MAAM;AAAA,IACjB,GAAI,MAAM,aAAa,EAAE,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,IAC3D;AAAA,EACF,CAAC;AACH;;;ACrCA,eAAe,wBACb,8BACA,cACA,kBACqC;AACrC,QAAM,cAAc,MAAM,sBAAsB,EAAE,wBAAwB;AAAA,IACxE,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf;AAAA,EACF,CAAC;AACD,SAAO,CAAC,kBAAkB,YAAY,OAAO;AAC/C;AAEA,eAAe,uBAAuB,YAMwC;AAC5E,QAAM,aAAa,MAAM,sBAAsB,EAAE,wBAAwB;AAAA,IACvE,qBAAqB,WAAW,iCAAiC,KAAK;AAAA,IACtE,eAAe,WAAW;AAAA,IAC1B,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,SAAO;AAAA,IACL,UAAU,CAAC,WAAW,kBAAkB,WAAW,OAAO;AAAA,IAC1D,YAAY;AAAA,MACV,gBAAgB,WAAW;AAAA,MAC3B,MAAM,WAAW;AAAA,MACjB,kBAAkB,WAAW;AAAA,MAC7B,mBAAmB,WAAW;AAAA,IAChC;AAAA,EACF;AACF;AAEA,eAAsB,wCAAwC,YAU3D;AACD,QAAM,0BAA0B,WAAW,6BAA6B,KAAK;AAC7E,QAAM,gBAAgB,MAAM,sBAAsB,EAAE,wBAAwB;AAAA,IAC1E,qBAAqB;AAAA,IACrB,eAAe,WAAW;AAAA,IAC1B,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,MAAI,WAAW,iBAAiB,cAAc;AAC5C,WAAO;AAAA,MACL;AAAA,MACA,UAAU,MAAM;AAAA,QACd;AAAA,QACA,WAAW;AAAA,QACX,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACA,QAAM,eAAe,MAAM,uBAAuB;AAAA,IAChD,8BAA8B;AAAA,IAC9B,kCAAkC,WAAW;AAAA,IAC7C,eAAe,WAAW;AAAA,IAC1B,cAAc,WAAW;AAAA,IACzB,kBAAkB,cAAc;AAAA,EAClC,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA,UAAU,aAAa;AAAA,IACvB,YAAY,aAAa;AAAA,EAC3B;AACF;;;AC3EO,SAAS,4BACd,MACqB;AACrB,SAAO;AAAA,IACL,gBAAgB,KAAK;AAAA,IACrB,MAAM,KAAK;AAAA,IACX,kBAAkB,KAAK;AAAA,IACvB,mBAAmB,KAAK;AAAA,EAC1B;AACF;AAEA,eAAe,oCAAoC,YAehD;AACD,QAAM,EAAE,eAAe,UAAU,WAAW,IAC1C,MAAM,wCAAwC;AAAA,IAC5C,8BAA8B,WAAW;AAAA,IACzC,iBAAiB,WAAW;AAAA,IAC5B,eAAe,WAAW;AAAA,IAC1B,kCAAkC,WAAW;AAAA,IAC7C,cAAc,WAAW;AAAA,EAC3B,CAAC;AACH,QAAM,cAAc;AAAA,IAClB;AAAA,MACE,WAAW,WAAW;AAAA,MACtB,mBAAmB,WAAW;AAAA,MAC9B,mBAAmB,WAAW;AAAA,MAC9B,eAAe,WAAW;AAAA,IAC5B;AAAA,IACA,WAAW;AAAA,EACb;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,IACnC;AAAA,EACF;AACF;AAEA,eAAsB,0CAA0C,YASL;AACzD,QAAM,EAAE,IAAI,IAAI,cAAc,IAAI,0BAA0B;AAAA,IAC1D,gBAAgB,WAAW;AAAA,IAC3B,wBAAwB,WAAW;AAAA,EACrC,CAAC;AACD,SAAO,oCAAoC;AAAA,IACzC,8BAA8B,WAAW;AAAA,IACzC,iBAAiB,WAAW;AAAA,IAC5B,eAAe,WAAW;AAAA,IAC1B,kCAAkC,WAAW;AAAA,IAC7C,cAAc,WAAW;AAAA,IACzB,WAAW,WAAW;AAAA,IACtB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB;AAAA,EACF,CAAC;AACH;;;AClDA,SAAS,gCACP,eACA,YACuB;AACvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,gBAAgB;AAAA,EAC/B;AACF;AAEA,eAAe,8BAA8B,YAc1C;AACD,QAAM,QAAQ,oCAAoC;AAAA,IAChD,eAAe,WAAW;AAAA,IAC1B,GAAI,WAAW,iBAAiB,EAAE,gBAAgB,WAAW,eAAe,IAAI,CAAC;AAAA,EACnF,CAAC;AACD,SAAO,WAAW,IAAI;AAAA,IACpB,WAAW;AAAA,IAGX,oBAAoB;AAAA,IACpB,CAAC,WAAW,KAAK,gBAAgB,WAAW,KAAK,cAAc;AAAA,IAC/D,WAAW;AAAA,IACX;AAAA,EACF;AACF;AAEA,eAAe,8BACb,YACA,eACA,KAGA;AACA,QAAM,aAAa,OAAO,WAAW,MAAM,KAAK,IAAI,OAAO,WAAW,MAAM,KAAK;AACjF,QAAM,gBAAgB;AAAA,IACpB,WAAW;AAAA,IACX;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA,WAAW;AAAA,EACb;AACA,QAAM,EAAE,MAAM,KAAK,IAAI,+BAA+B;AAAA,IACpD;AAAA,IACA,OAAO,WAAW;AAAA,IAClB,OAAO,WAAW;AAAA,IAClB,OAAO,WAAW;AAAA,IAClB,YAAY,wBAAwB,WAAW,aAAa;AAAA,IAC5D,YAAY,wBAAwB,WAAW,aAAa;AAAA,IAC5D;AAAA,EACF,CAAC;AACD,QAAM,iBAAiB,MAAM,0CAA0C;AAAA,IACrE,gBAAgB,WAAW;AAAA,IAC3B,wBAAwB,WAAW;AAAA,IACnC,8BAA8B,WAAW;AAAA,IACzC,iBAAiB,WAAW;AAAA,IAC5B;AAAA,IACA,kCAAkC,WAAW;AAAA,IAC7C,cAAc,WAAW;AAAA,IACzB,WAAW,KAAK,QAAQ;AAAA,EAC1B,CAAC;AACD,SAAO,EAAE,MAAM,MAAM,eAAe,GAAG,eAAe;AACxD;AAEA,eAAsB,qCACpB,YACqD;AACrD,QAAM,cAAc,sBAAsB;AAC1C,QAAM,MAAM,MAAM,YAAY,kBAAkB;AAChD,QAAM,gBAAgB,YAAY,iBAAiB;AACnD,QAAM,EAAE,MAAM,MAAM,eAAe,UAAU,YAAY,YAAY,IACnE,MAAM,8BAA8B,YAAY,eAAe,GAAG;AACpE,QAAM,iBAAiB,YAAY,kBAAkB;AACrD,QAAM,QAAQ,OAAO,iBACjB,8BAA8B;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,IACD,8BAA8B;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACL,SAAO;AAAA,IACL,GAAG;AAAA,IACH,yBAAyB,gCAAgC,eAAe,UAAU;AAAA,IAClF,eAAe,4BAA4B,aAAa;AAAA,IACxD,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,EACrC;AACF;;;AC7GA,SAAS,kCACP,iBACA,aACA,kCACQ;AACR,MAAI,kBAAkB,mCAAmC;AACvD,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,MAAI,kBAAkB,aAAa;AACjC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AACA,QAAM,gBAAgB,cAAc;AACpC,oCAAkC,eAAe,gCAAgC;AACjF,SAAO;AACT;AAEA,SAAS,kCACP,eACA,YACuB;AACvB,SAAO,CAAC,eAAe,KAAK,eAAe,aAAa,gBAAgB,GAAG;AAC7E;AAEA,SAAS,6BAA6B,YAGnC;AACD,QAAM,iBAAiB,WAAW,YAAY,kBAAkB;AAChE,SAAO,oCAAoC;AAAA,IACzC,eAAe,WAAW;AAAA,IAC1B,GAAI,iBAAiB,EAAE,eAAe,IAAI,CAAC;AAAA,EAC7C,CAAC;AACH;AAEA,eAAe,iBAAiB,YAM7B;AACD,SAAO,WAAW,IAAI;AAAA,IACpB,WAAW;AAAA,IAGX,oBAAoB;AAAA,IACpB,CAAC,WAAW,gBAAgB,OAAO;AAAA,IACnC,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF;AAEA,eAAe,yBAAyB,YAYrC;AACD,QAAM,gBAAgB;AAAA,IACpB,WAAW,MAAM;AAAA,IACjB,WAAW;AAAA,IACX,WAAW,MAAM;AAAA,EACnB;AACA,QAAM,EAAE,SAAS,eAAe,IAAI,uBAAuB;AAAA,IACzD,KAAK,WAAW;AAAA,IAChB,MAAM,WAAW,MAAM;AAAA,IACvB,OAAO,WAAW,MAAM;AAAA,IACxB,GAAG,wBAAwB,WAAW,MAAM,qBAAqB;AAAA,IACjE,eAAe,WAAW;AAAA,EAC5B,CAAC;AACD,QAAM,EAAE,eAAe,UAAU,YAAY,YAAY,IACvD,MAAM,0CAA0C;AAAA,IAC9C,gBAAgB,WAAW,MAAM;AAAA,IACjC,wBAAwB,WAAW,MAAM;AAAA,IACzC,8BAA8B,WAAW,MAAM;AAAA,IAC/C,iBAAiB,WAAW,MAAM;AAAA,IAClC;AAAA,IACA,kCACE,WAAW,MAAM;AAAA,IACnB,cAAc,WAAW,MAAM;AAAA,IAC/B,WAAW,QAAQ;AAAA,EACrB,CAAC;AACH,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,iCACpB,YACiD;AACjD,QAAM,cAAc,sBAAsB;AAC1C,QAAM,MAAM,MAAM,YAAY,kBAAkB;AAChD,QAAM,gBAAgB,YAAY,iBAAiB;AACnD,QAAM,cAAc,OAAO,WAAW,KAAK,KAAK;AAChD,QAAM,EAAE,gBAAgB,eAAe,UAAU,YAAY,YAAY,IACvE,MAAM,yBAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EACF,CAAC;AACH,QAAM,QAAQ,6BAA6B,EAAE,aAAa,cAAc,CAAC;AACzE,QAAM,QAAQ,MAAM,iBAAiB;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,yBAAyB;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,IACA,eAAe,4BAA4B,aAAa;AAAA,IACxD,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,EACrC;AACF;;;AC7KA,SAAS,UAAAC,gBAAc;;;ACAvB,OAAuB;AAEvB,IAAM,WACJ;AAEF,SAAS,gBAAgB,KAAqB;AAC5C,QAAM,MAAM,IAAI,SAAS,KAAK;AAC9B,QAAM,gBAAgB,OAAO,KAAK,GAAG,EAAE;AACvC,QAAM,UAAU,gBAAgB;AAChC,SAAO,QAAQ,SAAS;AAC1B;AAEO,SAAS,4BAA4B,SAA6B;AACvE,SAAO,QAAQ,IAAI,CAAC,cAAc,gBAAgB,SAAS,CAAC;AAC9D;;;ACUO,SAAS,4BACd,OACsB;AACtB,SAAO;AAAA,IACL,aAAa,MAAM;AAAA,IACnB,WAAW,MAAM;AAAA,IACjB,eAAe,MAAM;AAAA,EACvB;AACF;;;AFdA,SAAS,2BAA2B,YAAgC;AAClE,SAAO,WAAW;AAAA,IAAI,CAAC,cACrBC,SAAO,SAAS,SAAS,IAAI,YAAYA,SAAO,KAAK,SAAS;AAAA,EAChE;AACF;AAEA,SAAS,6BAA6B,YAOR;AAC5B,QAAM,cAAc,WAAW,aAAa,YAAY,UAAU;AAClE,QAAM,uBACJ,WAAW,gBAAgB,eAC3B,CAAC,WAAW,eACZ,gBAAgB;AAClB,MAAI,sBAAsB;AACxB,UAAM,YAAY,KAAK,IAAI;AAC3B,SAAK,WAAW,iBAAiB,IAAI;AAAA,MACnC,cAAc,WAAW;AAAA,MACzB,aAAa,WAAW;AAAA,MACxB,iBAAiB,WAAW;AAAA,MAC5B,eAAe,WAAW;AAAA,MAC1B;AAAA,IACF,CAAC;AACD,WAAO;AAAA,MACL,aAAa,WAAW;AAAA,MACxB;AAAA,MACA,eAAe,WAAW;AAAA,MAC1B,iBAAiB,WAAW;AAAA,IAC9B;AAAA,EACF;AACA,SAAO;AAAA,IACL,aAAa,WAAW,YAAa;AAAA,IACrC,WAAW,WAAW,YAAa;AAAA,IACnC,eAAe,WAAW,YAAa,iBAAiB,WAAW;AAAA,IACnE,iBAAiB,WAAW,YAAa,YAAY;AAAA,EACvD;AACF;AAEA,eAAe,yBACb,iBACA,gBAC2C;AAC3C,MAAI,CAAC,iBAAiB;AACpB,WAAO;AAAA,EACT;AACA,QAAM,SAAS,MAAM,gBAAgB,IAAI,cAAc;AACvD,SAAO,SAAS,4BAA4B,MAAM,IAAI;AACxD;AAEA,eAAsB,yBAAyB,YAKR;AACrC,QAAM,SAAS,sBAAsB,WAAW,mBAAmB,EAAE;AAAA,IACnE,YAAY,WAAW;AAAA,IACvB,iBAAiB,WAAW;AAAA,IAC5B,mBAAmB,WAAW,oBAAoB,QAAQ;AAAA,IAC1D,eAAe,WAAW,oBAAoB,QAAQ;AAAA,EACxD,CAAC;AAED,QAAM,kBAAkB,MAAM,OAAO,gBAAgB;AACrD,QAAM,aAAa,gBAAgB;AACnC,QAAM,UAAU,2BAA2B,UAAU;AACrD,QAAM,sBAAsB,4BAA4B,OAAO;AAC/D,QAAM,gBAAgB,oBAAoB;AAE1C,QAAM,WAAW,MAAM,OAAO,gBAAgB;AAC9C,QAAM,mBAAmB,SAAS;AAClC,QAAM,gBAAgBA,SAAO,KAAK,gBAAgB,EAAE,SAAS,KAAK;AAElE,QAAM,cAAc,MAAM;AAAA,IACxB,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACA,SAAO,6BAA6B;AAAA,IAClC,gBAAgB,WAAW;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,WAAW,kBACX,EAAE,iBAAiB,WAAW,gBAAgB,IAC9C,CAAC;AAAA,EACP,CAAC;AACH;AAEA,eAAsB,qBAAqB,YAMC;AAC1C,QAAM,SAAS,MAAM,WAAW,eAAe,IAAI;AAAA,IACjD,cAAc,WAAW;AAAA,IACzB,WAAW,WAAW;AAAA,EACxB,CAAC;AACD,MAAI,QAAQ,QAAQ,OAAO,MAAM;AAC/B,WAAO,EAAE,MAAM,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,EAChD;AACA,QAAM,SAAS,sBAAsB,WAAW,mBAAmB,EAAE;AAAA,IACnE,YAAY,WAAW;AAAA,IACvB,iBAAiB,WAAW;AAAA,IAC5B,mBAAmB,WAAW,oBAAoB,QAAQ;AAAA,IAC1D,eAAe,WAAW,oBAAoB,QAAQ;AAAA,EACxD,CAAC;AACD,QAAM,OAAO,MAAM,OAAO,mBAAmB,EAAE,YAAY,WAAW,UAAU,CAAC;AACjF,QAAM,SAAS,KAAK;AACpB,MAAI,CAAC,QAAQ,KAAK,CAAC,QAAQ,GAAG;AAC5B,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AACA,QAAM,OAAOA,SAAO,KAAK,OAAO,CAAC,EAAE,SAAS,KAAK;AACjD,QAAM,OAAOA,SAAO,KAAK,OAAO,CAAC,EAAE,SAAS,KAAK;AACjD,QAAM,WAAW,eAAe,IAAI;AAAA,IAClC,cAAc,WAAW;AAAA,IACzB,WAAW,WAAW;AAAA,IACtB;AAAA,IACA;AAAA,IACA,WAAU,oBAAI,KAAK,GAAE,YAAY;AAAA,EACnC,CAAC;AACD,SAAO,EAAE,MAAM,KAAK;AACtB;;;AGlJO,IAAM,sBAAsB;AAAA,EACjC,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,6BAA6B;AAAA,EAC7B,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,kCAAkC;AACpC;;;ACpBA,SAAS,SAAS;AAEX,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACpB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,QAAQ,EAAE,OAAO,OAAO;AAAA,EACxB,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,EACnC,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,wBAAwB,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,yBAAyB,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7C,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAC7C,CAAC;AAEM,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACpC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAChC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,SAAS,EAAE,QAAQ;AACrB,CAAC;AAED,IAAM,+BAA+B,EAAE,OAAO;AAAA,EAC5C,OAAO,EAAE,OAAO;AAAA,EAChB,WAAW,EAAE,OAAO;AAAA,EACpB,QAAQ,EAAE,OAAO;AAAA,EACjB,YAAY,EAAE,OAAO;AAAA,EACrB,UAAU,EAAE,OAAO;AAAA,EACnB,UAAU,EAAE,OAAO;AAAA,EACnB,gBAAgB,EAAE,OAAO,EAAE,SAAS;AACtC,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACpB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,QAAQ,EAAE,OAAO,OAAO;AAAA,EACxB,UAAU,EAAE,QAAQ;AAAA,EACpB,QAAQ,EAAE,KAAK,CAAC,WAAW,aAAa,OAAO,CAAC,EAAE,SAAS;AAAA,EAC3D,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,EACnC,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,EACnC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACtC,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAU,6BAA6B,SAAS;AAAA,EAChD,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,EACtC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,cAAc,EAAE,OAAO;AAAA,EAClC,IAAI,EAAE,OAAO,EAAE,IAAI;AAAA,EACnB,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,EACnC,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EACjC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC9B,UAAU,EAAE,QAAQ;AAAA,EACpB,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AACjD,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,SAAS,EAAE,OAAO;AAAA,EAClB,iBAAiB,EAAE,KAAK,CAAC,UAAU,YAAY,MAAM,CAAC;AACxD,CAAC;AAEM,IAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,QAAQ,EAAE,KAAK,CAAC,cAAc,cAAc,CAAC;AAAA,EAC7C,qBAAqB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,EACnC,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,EACnC,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAC3C,UAAU,EAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,mCAAmC,EAAE,OAAO;AAAA,EACvD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,mCAAmC,EAAE,OAAO;AAAA,EACvD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChC,WAAW,EAAE,OAAO;AACtB,CAAC;AAEM,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC9B,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EAC/B,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EAC9C,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC/B,WAAW,EAAE,OAAO;AAAA,EACpB,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAC1C,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC9B,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,UAAU,EAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,IAAI,EAAE,OAAO,EAAE,IAAI;AAAA,EACnB,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAClC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC9B,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,WAAW,EAAE,QAAQ,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAClC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAClC,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,EACrC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,cAAc,EAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,QAAQ,EAAE,KAAK,CAAC,WAAW,WAAW,QAAQ,CAAC;AAAA,EAC/C,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAClC,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;;;AClJM,SAAS,uBAA0D,OAAa;AACrF,QAAM,OAAO,CAAC;AACd,aAAW,CAAC,KAAK,UAAU,KAAK,OAAO,QAAQ,KAAK,GAAG;AACrD,QAAI,eAAe,QAAW;AAC5B,cAAQ,IAAI,MAAM,KAAK,UAAU;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;;;ACAO,SAAS,uBAAuB,OAAsC;AAC3E,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,WAAO,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE;AAAA,EACnC;AACA,QAAM,SAAS;AACf,QAAM,UAAU,OAAO;AACvB,QAAM,eAAe,OAAO;AAC5B,QAAM,OAAqC,CAAC;AAC5C,MAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AACnD,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,YAAM,SAAS,YAAY,UAAU,KAAK;AAC1C,UAAI,OAAO,SAAS;AAClB,aAAK,GAAG,IAAI,uBAAuB,OAAO,IAAI;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,QAAM,YAAY,MAAM,QAAQ,YAAY,IACxC,aAAa,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACtE,CAAC;AACL,SAAO,EAAE,MAAM,UAAU;AAC3B;AAEO,SAAS,eAAe,OAA0C;AACvE,QAAM,SAAS,YAAY,UAAU,KAAK;AAC1C,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;AAEO,SAAS,uBACd,OACkC;AAClC,QAAM,SAAS,oBAAoB,UAAU,KAAK;AAClD,SAAO,OAAO,UAAU,OAAO,OAAO;AACxC;AAEO,SAAS,mCACd,OACA,OACwB;AACxB,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,CAAC;AAAA,EACV;AACA,SAAO,MACJ,IAAI,CAAC,UAAU;AACd,QAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,GAAG;AAC7C;AAAA,IACF;AACA,UAAM,CAAC,KAAK,YAAY,IAAI;AAC5B,QAAI,OAAO,QAAQ,YAAY,CAAC,IAAI,WAAW,GAAG,KAAK,GAAG,GAAG;AAC3D;AAAA,IACF;AACA,WAAO,uBAAuB,YAAY;AAAA,EAC5C,CAAC,EACA,OAAO,CAAC,YAA6C,YAAY,MAAS;AAC/E;;;ACxDO,SAAS,4BAA4B,OAA2C;AACrF,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,WAAO,EAAE,OAAO,CAAC,EAAE;AAAA,EACrB;AAEA,QAAM,SAAS;AACf,QAAM,QAAQ,MAAM,QAAQ,OAAO,KAAK,IACpC,OAAO,MAAM,QAAQ,CAAC,SAAS;AAC7B,UAAM,SAAS,mBAAmB,UAAU,IAAI;AAChD,WAAO,OAAO,UACV,CAAC,uBAAuB,OAAO,IAAI,CAAwB,IAC3D,CAAC;AAAA,EACP,CAAC,IACD,CAAC;AAEL,QAAM,mBAAmB,iBAAiB,UAAU,OAAO,UAAU;AACrE,MAAI,iBAAiB,SAAS;AAC5B,WAAO,EAAE,OAAO,YAAY,iBAAiB,KAAK;AAAA,EACpD;AACA,SAAO,EAAE,MAAM;AACjB;AAEO,SAAS,4BAA4B,OAAoC;AAC9E,SAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,SAAS,IACpE,QACA;AACN;;;ACvBO,SAAS,4BAA4B,OAA2C;AACrF,QAAM,UACJ,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IAC/D,OAAO,OAAO,KAAK,IACnB;AACN,MAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,WAAO,CAAC;AAAA,EACV;AACA,SAAO,QAAQ,QAAQ,CAAC,UAAU;AAChC,UAAM,SAAS,uBAAuB,UAAU,KAAK;AACrD,WAAO,OAAO,UACV,CAAC,uBAAuB,OAAO,IAAI,CAA4B,IAC/D,CAAC;AAAA,EACP,CAAC;AACH;AAEO,SAAS,2BACd,OACsC;AACtC,QAAM,SAAS,wBAAwB,UAAU,KAAK;AACtD,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;;;AC1BO,SAAS,yBACd,OACoC;AACpC,QAAM,SAAS,sBAAsB,UAAU,KAAK;AACpD,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;AAEO,SAAS,uBACd,OACkC;AAClC,QAAM,SAAS,oBAAoB,UAAU,KAAK;AAClD,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;;;ACnBO,SAAS,8BAA8B,OAAoC;AAChF,SAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;AACjE;AAEO,SAAS,wBACd,OACmC;AACnC,QAAM,SAAS,qBAAqB,UAAU,KAAK;AACnD,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;AAEO,SAAS,kCAAkC,OAIZ;AACpC,QAAM,SAAS;AAAA,IACb,OAAO,MAAM,eAAe,YAAY,MAAM,eAAe,OACzD,MAAM,aACN;AAAA,EACN;AACA,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AACA,MAAI,MAAM,eAAe,UAAa,MAAM,mBAAmB,QAAW;AACxE,WAAO;AAAA,EACT;AACA,QAAMC,cAAa,QAAQ,MAAM,UAAU;AAC3C,QAAM,sBAAsB,8BAA8B,MAAM,cAAc;AAC9E,MAAI,CAACA,eAAc,wBAAwB,QAAW;AACpD,WAAO,EAAE,OAAO,MAAM,SAAS,QAAQ,eAAe;AAAA,EACxD;AACA,SAAO,uBAAuB;AAAA,IAC5B,OAAO,MAAM;AAAA,IACb,QAAQA,cAAa,eAAe;AAAA,IACpC,GAAI,wBAAwB,SAAY,CAAC,IAAI,EAAE,oBAAoB;AAAA,EACrE,CAAC;AACH;;;AC3CA,OAAkB;AAQX,SAAS,wBAAwB,OAAwC;AAC9E,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,CAAC;AAAA,EACV;AACA,QAAM,UAAU,MAAM,QAAQ,CAAC,SAAS;AACtC,UAAM,SAAS,oBAAoB,UAAU,IAAI;AACjD,WAAO,OAAO,UAAU,CAAC,6BAA6B,OAAO,IAAI,CAAC,IAAI,CAAC;AAAA,EACzE,CAAC;AACD,SAAO,0BAA0B,OAAO;AAC1C;AAEO,SAAS,2BACd,OACsC;AACtC,QAAM,SAAS,wBAAwB,UAAU,KAAK;AACtD,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;AAEA,SAAS,2BAA2B,QAAsC;AACxE,UACE,OAAO,eAAe,KAAK,KAC3B,OAAO,UAAU,WAAW,KAAK,KACjC,OAAO,GAAG,KAAK,GAEd,QAAQ,SAAS,EAAE,EACnB,YAAY;AACjB;AAEA,SAAS,6BACP,QACsB;AACtB,QAAM,aAAa,uBAAuB,MAAM;AAChD,MAAI,CAAC,WAAW,kBAAkB,WAAW,MAAM,KAAK,EAAE,WAAW,MAAM,GAAG;AAC5E,WAAO,EAAE,GAAG,YAAY,gBAAgB,WAAW,MAAM,KAAK,EAAE;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,oBACP,SACA,UACA,KACsB;AACtB,MAAI,mBAAmB,QAAQ,MAAM,KAAK;AACxC,WAAO;AAAA,EACT;AACA,MAAI,mBAAmB,OAAO,MAAM,KAAK;AACvC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,QAAsC;AAChE,SAAO,OAAO,GAAG,KAAK,EAAE,QAAQ,SAAS,EAAE,EAAE,YAAY;AAC3D;AAEA,SAAS,0BACP,SACwB;AACxB,QAAM,eAAe,oBAAI,IAAkC;AAC3D,aAAW,UAAU,SAAS;AAC5B,UAAM,MAAM,2BAA2B,MAAM;AAC7C,UAAM,UAAU,aAAa,IAAI,GAAG;AACpC,iBAAa,IAAI,KAAK,UAAU,oBAAoB,SAAS,QAAQ,GAAG,IAAI,MAAM;AAAA,EACpF;AACA,SAAO,CAAC,GAAG,aAAa,OAAO,CAAC;AAClC;;;AClEO,SAAS,oCACd,OAC+C;AAC/C,QAAM,SAAS,iCAAiC,UAAU,KAAK;AAC/D,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;AAEO,SAAS,oCACd,OAC+C;AAC/C,QAAM,SAAS,iCAAiC,UAAU,KAAK;AAC/D,SAAO,OAAO,UACT,uBAAuB,OAAO,IAAI,IACnC;AACN;AAEO,SAAS,0CACd,OACoB;AACpB,SAAO,OAAO,UAAU,WAAW,MAAM,KAAK,KAAK,SAAY;AACjE;;;AChCA,SAAS,qCAAqC;;;ACGvC,IAAM,+BAA+B;AAAA,EAC1C,eAAe;AAAA,EACf,cAAc;AAChB;AAEO,SAAS,0BAA0B,KAAe;AACvD,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,eAAe,6BAA6B;AAAA,IAC5C,YAAY;AAAA,MACV,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAEO,SAAS,+BAA+B;AAC7C,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,eAAe,6BAA6B;AAAA,IAC5C,YAAY;AAAA,MACV,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,SAAS,2BAA2B,OAAe;AACxD,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,eAAe,6BAA6B;AAAA,IAC5C,YAAY;AAAA,MACV,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,SAAS,yBAAyB,KAAe;AACtD,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,eAAe,6BAA6B;AAAA,IAC5C,YAAY;AAAA,MACV,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAEO,SAAS,mCAAmC,OAGhD;AACD,QAAM,UAAoC,CAAC;AAC3C,MAAI,MAAM,UAAU,QAAW;AAC7B,YAAQ,KAAK;AAAA,MACX,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AACA,MAAI,MAAM,UAAU,QAAW;AAC7B,YAAQ,KAAK;AAAA,MACX,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,eAAe,6BAA6B;AAAA,IAC5C,YAAY;AAAA,MACV,IAAI;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;;;ADrFA,IAAI,aAAa;AAEV,SAAS,oCAA0C;AACxD,MAAI,YAAY;AACd;AAAA,EACF;AACA;AAAA,IACE,6BAA6B;AAAA,IAC7B;AAAA,EACF;AACA;AAAA,IACE,6BAA6B;AAAA,IAC7B;AAAA,EACF;AACA,eAAa;AACf;;;AEnBA,OAA2C;AAGpC,IAAM,wBAAwB;AAAA,EACnC,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,8BAA8B;AAAA,EAC9B,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,eAAe;AAAA,EACf,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,6BAA6B;AAAA,EAC7B,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,gCAAgC;AAAA,EAChC,gCAAgC;AAAA,EAChC,gCAAgC;AAAA,EAChC,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,sCAAsC;AAAA,EACtC,kCAAkC;AACpC;;;AClDA,SAAS,KAAAC,UAAS;AAMX,IAAM,0BAA0BC,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,iBAAiB;AACzD,CAAC,EACA,UAAU,CAAC,EAAE,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,IAChC;AAAA,EACF;AACF,EAAE;AAEG,IAAM,kBAAkBA,GAC5B,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,SAAS;AAAA,EAC/C,SAASA,GAAE,OAAO,EAAE,IAAI,CAAC;AAC3B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,aAAa;AAAA,EACnD,QAAQA,GAAE,MAAM,WAAW;AAC7B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM;AAC/B,QAAM,OAAgC,CAAC;AACvC,QAAM,YAAsB,CAAC;AAC7B,aAAW,SAAS,QAAQ;AAC1B,YAAQ,IAAI,MAAM,MAAM,SAAS,uBAAuB,KAAK,CAAC;AAC9D,cAAU,KAAK,MAAM,OAAO;AAAA,EAC9B;AACA,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACV;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,oBAAoB;AAAA,QAC9B,OAAO,EAAE,MAAM,UAAU;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAEI,IAAM,qBAAqBA,GAC/B,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,YAAY;AAAA,EAClD,QAAQA,GAAE,MAAM,WAAW;AAC7B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA,EACA,YAAY,OAAO,IAAI,CAAC,WAAW;AAAA,IACjC,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,KAAK,MAAM;AAAA,IACX,OAAO;AAAA,EACT,EAAE;AACJ,EAAE;;;AChEG,IAAM,gCAAyD;AAAA,EACpE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;AC9BA,SAAS,KAAAC,UAAS;;;ACEX,SAAS,cAAc,OAAuB,OAA+B;AAClF,SAAO,GAAG,KAAK,IAAI,KAAK;AAC1B;AAEO,SAAS,gBACd,QACA,KACe;AACf,MAAI,CAAC,OAAO,OAAO,QAAQ,GAAG,GAAG;AAC/B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,IAAI,QAAQ,GAAG;AAChC;AAEO,SAAS,YAAY,cAAsB,WAA2B;AAC3E,SAAO,GAAG,YAAY,IAAI,SAAS;AACrC;AAEO,SAAS,uBACd,gBACA,OACQ;AACR,SAAO,GAAG,cAAc,IAAI,KAAK;AACnC;AAEO,SAAS,oBAAoB,OAAuB,OAAuB;AAChF,SAAO,GAAG,KAAK,IAAI,KAAK;AAC1B;;;ADvBO,IAAM,0BAA0BC,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,iBAAiB;AAAA,EACvD,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,cAAc,OAAO,KAAK;AAAA,IACjC;AAAA,EACF;AACF,EAAE;AAEG,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,kBAAkB;AAAA,EACxD,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,IAChC;AAAA,EACF;AACF,EAAE;AAEG,IAAM,yBAAyBA,GACnC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,gBAAgB;AAAA,EACtD,SAAS;AACX,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,cAAc,QAAQ,OAAO,QAAQ,KAAK;AAAA,MAC/C,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,iBAAiB;AAAA,EACvD,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,UAAUA,GAAE,MAAM,mBAAmB;AACvC,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,SAAS,OAAO;AAAA,EACzC;AAAA,EACA,YAAY,SAAS,IAAI,CAAC,aAAa;AAAA,IACrC,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,KAAK,cAAc,OAAO,QAAQ,KAAK;AAAA,IACvC,OAAO,EAAE,GAAG,SAAS,MAAM;AAAA,EAC7B,EAAE;AACJ,EAAE;;;AE5DG,IAAM,kCAA2D;AAAA,EACtE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;AC9BA,SAAS,KAAAC,UAAS;AAMX,IAAM,2BAA2BC,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,aAAa;AAAA,EACnD,QAAQA,GAAE,MAAM,kBAAkB;AAAA,EAClC,gBAAgB;AAClB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,eAAe,OAAO;AAAA,EAChD;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,kBAAkB;AAAA,EACxD,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM,MAAM;AACrC,MAAI,UAAU,UAAa,UAAU,QAAW;AAC9C,WAAO;AAAA,MACL;AAAA,MACA,YAAY;AAAA,QACV;AAAA,UACE,QAAQ;AAAA,UACR,UAAU,oBAAoB;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,YAAY,CAAC,mCAAmC,EAAE,OAAO,MAAM,CAAC,CAAC;AAAA,EACnE;AACF,CAAC;AAEI,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,iBAAiB;AACzD,CAAC,EACA,UAAU,CAAC,EAAE,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AACF,EAAE;;;ACjEJ,SAAS,KAAAC,UAAS;AASlB,IAAM,+BAA+B;AAE9B,IAAM,iCAAiCC,GAC3C,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,wBAAwB;AAAA,EAC9D,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,QAAQA,GAAE,MAAM,4BAA4B;AAAA,EAC5C,gBAAgBA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IACpC,MAAMA,GAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IAChC,UAAUA,GAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACpC,SAASA,GAAE,QAAQ;AAAA,EACrB,CAAC;AAAA,EACD,OAAOA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AACjD,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,QAAQ,gBAAgB,MAAM,OAAO;AAAA,EAC9D;AAAA,EACA,YAAY;AAAA,IACV,2BAA2B,KAAK;AAAA,IAChC;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,MACL,OAAO,SAAS,eAAe;AAAA,IACjC;AAAA,EACF;AACF,EAAE;AAEG,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,mBAAmB;AAAA,EACzD,QAAQA,GAAE,MAAM,4BAA4B;AAC9C,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA,EACA,YAAY;AAAA,IACV,yBAAyB,OAAO,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC;AAAA,IACxD;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,mBAAmB;AAAA,EACzD,KAAKA,GAAE,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,IAAI,OAAO;AAAA,EAC7B;AAAA,EACA,YAAY,CAAC,yBAAyB,GAAG,CAAC;AAC5C,EAAE;AAEG,IAAM,+BAA+BA,GACzC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,sBAAsB;AAAA,EAC5D,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,MAAM,OAAO;AAAA,EAC/B;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,8BAA8BA,GACxC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,qBAAqB;AAAA,EAC3D,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAOA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AACtC,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;;;AC3FG,IAAM,gCAAyD;AAAA,EACpE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;ACxDA,SAAS,KAAAC,UAAS;AAMX,IAAM,+BAA+BC,GACzC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,sBAAsB;AAC9D,CAAC,EACA,UAAU,CAAC,EAAE,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,IAChC;AAAA,EACF;AACF,EAAE;AAEG,IAAM,iCAAiCA,GAC3C,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,wBAAwB;AAAA,EAC9D,YAAYA,GAAE,MAAM,sBAAsB;AAC5C,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,WAAW,OAAO;AAAA,EACpC;AAAA,EACA,YAAY,WAAW,IAAI,CAAC,cAAc;AAAA,IACxC,QAAQ;AAAA,IACR,UAAU,oBAAoB;AAAA,IAC9B,KAAK,OAAO,SAAS,EAAE;AAAA,IACvB,OAAO;AAAA,EACT,EAAE;AACJ,EAAE;AAEG,IAAM,8BAA8BA,GACxC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,qBAAqB;AAAA,EAC3D,gBAAgBA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChC,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,gBAAgB,MAAM,OAAO;AAAA,EAC/C;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,uBAAuB,gBAAgB,KAAK;AAAA,IACnD;AAAA,EACF;AACF,EAAE;AAEG,IAAM,6BAA6BA,GACvC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,oBAAoB;AAAA,EAC1D,WAAW;AACb,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,UAAU,OAAO;AAAA,EACnC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,uBAAuB,UAAU,gBAAgB,UAAU,KAAK;AAAA,MACrE,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;;;AC1DG,IAAM,oCAA6D;AAAA,EACxE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;AC9BA,SAAS,KAAAC,UAAS;AAMX,IAAM,4BAA4BC,GACtC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,mBAAmB;AAAA,EACzD,cAAcA,GAAE,OAAO,EAAE,IAAI,CAAC;AAChC,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,aAAa,OAAO;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,kBAAkB;AAAA,EACxD,OAAO;AACT,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,MAAM,OAAO;AAAA,EAC/B;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,MAAM;AAAA,MACX,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,iBAAiB;AAAA,EACvD,cAAcA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC9B,WAAWA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAC1C,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,cAAc,UAAU,OAAO;AAAA,EACjD;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,YAAY,cAAc,SAAS;AAAA,IAC1C;AAAA,EACF;AACF,EAAE;AAEG,IAAM,yBAAyBA,GACnC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,gBAAgB;AAAA,EACtD,WAAW;AACb,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,UAAU,OAAO;AAAA,EACnC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,YAAY,UAAU,cAAc,UAAU,SAAS;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;;;AC9DG,IAAM,8BAAuD;AAAA,EAClE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;AC9BA,SAAS,KAAAC,UAAS;AAMX,IAAM,2BAA2BC,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,kBAAkB;AAC1D,CAAC,EACA,UAAU,CAAC,EAAE,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,IAChC;AAAA,EACF;AACF,EAAE;AAEG,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,kBAAkB;AAAA,EACxD,SAASA,GAAE,MAAM,mBAAmB;AACtC,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,8BAA8BA,GACxC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,qBAAqB;AAAA,EAC3D,SAASA,GAAE,MAAM,mBAAmB;AACtC,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,IAChC;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,oCAAoCA,GAC9C,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,sBAAsB,2BAA2B;AACnE,CAAC,EACA,UAAU,CAAC,EAAE,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,YAAY,CAAC,6BAA6B,CAAC;AAC7C,EAAE;;;AC/DJ,SAAS,KAAAC,WAAS;AAMX,IAAM,6BAA6BC,IACvC,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,oBAAoB;AAAA,EAC1D,SAASA,IAAE,MAAM,mBAAmB;AACtC,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV,0BAA0B,QAAQ,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC;AAAA,IAC5D;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,8BAA8BA,IACxC,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,qBAAqB;AAAA,EAC3D,QAAQA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC1B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,6BAA6BA,IACvC,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,oBAAoB;AAAA,EAC1D,QAAQ;AACV,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,+BAA+BA,IACzC,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,sBAAsB;AAAA,EAC5D,QAAQA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC1B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;;;AC5DG,IAAM,iCAA0D;AAAA,EACrE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;ACpCA,SAAS,KAAAC,WAAS;AAKX,IAAM,qCAAqCC,IAC/C,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,4BAA4B;AAAA,EAClE,SAASA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC3B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,iCAAiCA,IAC3C,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,wBAAwB;AAAA,EAC9D,SAASA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC3B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,qCAAqCA,IAC/C,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,4BAA4B;AAAA,EAClE,SAASA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,gBAAgBA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChC,YAAYA,IAAE,QAAQ;AACxB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,SAAS,gBAAgB,YAAAC,YAAW,MAAM;AAC5D,QAAM,SAAS,qBAAqB,MAAM;AAAA,IACxC,OAAO;AAAA,IACP,QAAQA,cAAa,eAAe;AAAA,IACpC,qBAAqBA,cAAa,iBAAiB;AAAA,IACnD,WAAU,oBAAI,KAAK,GAAE,YAAY;AAAA,EACnC,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACV;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,oBAAoB;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,oBAAoB;AAAA,QAC9B,KAAK;AAAA,QACL,OAAOA;AAAA,MACT;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,oBAAoB;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAEI,IAAM,oCAAoCD,IAC9C,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,2BAA2B;AAAA,EACjE,SAASA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC3B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,2BAA2BA,IACrC,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,kBAAkB;AAAA,EACxD,SAASA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC3B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,2BAA2BA,IACrC,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,kBAAkB;AAAA,EACxD,QAAQ;AACV,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM;AAC/B,QAAM,aAKD;AAAA,IACH;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,OAAO,WAAW,gBAAgB,OAAO,qBAAqB;AAChE,eAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,oBAAoB;AAAA,QAC9B,KAAK,OAAO;AAAA,QACZ,OAAO,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,oBAAoB;AAAA,QAC9B,KAAK,OAAO;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,OAAO;AACL,eAAW,KAAK;AAAA,MACd,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,SAAO,EAAE,MAAM,WAAW;AAC5B,CAAC;AAEI,IAAM,iCAAiCA,IAC3C,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,wBAAwB;AAAA,EAC9D,SAASA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC3B,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;;;AC/KG,IAAM,kCAA2D;AAAA,EACtE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;ACxCO,IAAM,qCAA8D;AAAA,EACzE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;ACxBA,SAAS,KAAAE,WAAS;AAMX,IAAM,uCAAuCC,IACjD,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,8BAA8B;AAAA,EACpE,QAAQ;AACV,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,oBAAoB,OAAO,OAAO,OAAO,KAAK;AAAA,MACnD,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,uCAAuCA,IACjD,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,8BAA8B;AAAA,EACpE,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,oBAAoB,OAAO,KAAK;AAAA,IACvC;AAAA,EACF;AACF,EAAE;;;ACtCJ,SAAS,KAAAC,WAAS;AAMX,IAAM,uCAAuCC,IACjD,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,8BAA8B;AAAA,EACpE,QAAQ;AACV,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,oBAAoB,OAAO,OAAO,OAAO,KAAK;AAAA,MACnD,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,uCAAuCA,IACjD,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,8BAA8B;AAAA,EACpE,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,oBAAoB,OAAO,KAAK;AAAA,IACvC;AAAA,EACF;AACF,EAAE;AAEG,IAAM,4CAA4CA,IACtD,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,mCAAmC;AAAA,EACzE,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AACF,EAAE;AAEG,IAAM,6CAA6CA,IACvD,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,oCAAoC;AAAA,EAC1E,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,MAAM,OAAO;AAAA,EAC/B;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK;AAAA,IACP;AAAA,EACF;AACF,EAAE;AAEG,IAAM,yCAAyCA,IACnD,OAAO;AAAA,EACN,MAAMA,IAAE,QAAQ,sBAAsB,gCAAgC;AAAA,EACtE,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC,EACA,UAAU,CAAC,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,QAAQ;AAAA,MACR,UAAU,oBAAoB;AAAA,MAC9B,KAAK,oBAAoB,OAAO,KAAK;AAAA,IACvC;AAAA,EACF;AACF,EAAE;;;AC3EG,IAAM,gCAAyD;AAAA,EACpE;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM,sBAAsB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;;;ACtCA,kCAAkC;AAE3B,IAAM,0BAAmD;AAAA,EAC9D,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;;;ACxBA;AAAA,EACE;AAAA,OAGK;AAGA,IAAM,0BAAN,MAA8B;AAAA,EAC1B;AAAA,EAET,YAAY,SAA6B;AACvC,SAAK,SAAS,kBAAkB,OAAO;AACvC,SAAK,OAAO,KAAK,uBAAuB;AAAA,EAC1C;AACF;;;ACCO,SAAS,2BAA2B,SAAkC;AAC3E,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,MAAM,iBAAiB,OAGuB;AAC5C,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B,OAAO,MAAM;AAAA,QACb,OAAO,MAAM;AAAA,MACf,CAAC;AACD,aAAO,uBAAuB,KAAK;AAAA,IACrC;AAAA,IAEA,MAAM,kBAAkB,OAAwD;AAC9E,YAAM,UAAU,MAAM,OAAO,KAAc;AAAA,QACzC,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AACD,aAAO,mCAAmC,SAAS,KAAK;AAAA,IAC1D;AAAA,IAEA,iBAAiB,SAAmD;AAClE,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB,OAGA;AAChB,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B,OAAO,MAAM;AAAA,QACb,UAAU,MAAM;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC7CO,SAAS,0BACd,UACA,MACA;AACA,SAAO;AAAA,IACL,MAAM,aAAa,QAAuC;AACxD,UAAI,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AACA,YAAM,UAAU,MAAM,KAAK,iBAAiB;AAC5C,YAAM,OAAO,EAAE,GAAG,QAAQ,KAAK;AAC/B,YAAM,YAAY,CAAC,GAAG,QAAQ,SAAS;AACvC,iBAAW,SAAS,QAAQ;AAC1B,aAAK,MAAM,OAAO,IAAI;AACtB,YAAI,CAAC,UAAU,SAAS,MAAM,OAAO,GAAG;AACtC,oBAAU,KAAK,MAAM,OAAO;AAAA,QAC9B;AAAA,MACF;AACA,YAAM,SAAS,UACZ,IAAI,CAAC,YAAY,gBAAgB,MAAM,OAAO,CAAC,EAC/C,OAAO,CAAC,UAAiC,UAAU,MAAS;AAC/D,YAAM,KAAK,cAAc,MAAM;AAAA,IACjC;AAAA,EACF;AACF;;;ACzBO,SAAS,2BAA2B,SAAkC;AAC3E,QAAM,EAAE,OAAO,IAAI;AAEnB,iBAAe,mBAAkD;AAC/D,UAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,MACvC,MAAM,sBAAsB;AAAA,IAC9B,CAAC;AACD,WAAO,uBAAuB,KAAK;AAAA,EACrC;AAEA,WAAS,cAAc,QAAuC;AAC5D,WAAO,OAAO,MAAM;AAAA,MAClB,MAAM,sBAAsB;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,cAAc;AAAA,IAClB;AAAA,IAEA,MAAM,SAAS,SAA4D;AACzE,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AACD,aAAO,eAAe,KAAK;AAAA,IAC7B;AAAA,IAEA,MAAM,YAAqC;AACzC,YAAM,UAAU,MAAM,iBAAiB;AACvC,aAAO,QAAQ,UACZ,IAAI,CAAC,YAAY,gBAAgB,QAAQ,MAAM,OAAO,CAAC,EACvD,OAAO,CAAC,UAAiC,UAAU,MAAS;AAAA,IACjE;AAAA,IAEA,MAAM,iBAAiB,cAA+C;AACpE,YAAM,SAAS,MAAM,YAAY,UAAU;AAC3C,aAAO,OAAO,OAAO,CAAC,UAAU,MAAM,cAAc,SAAS,YAAY,CAAC;AAAA,IAC5E;AAAA,IAEA;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,0BAA0B,SAAS;AAAA,MACpC;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACzDO,SAAS,oBAAoB,SAAkC;AACpE,SAAO;AAAA,IACL,GAAG,2BAA2B,OAAO;AAAA,IACrC,GAAG,2BAA2B,OAAO;AAAA,EACvC;AACF;;;ACIO,SAAS,wBAAwB,SAAkC;AACxE,QAAM,EAAE,OAAO,IAAI;AAEnB,iBAAe,iBACb,SAAqC,CAAC,GACF;AACpC,UAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,MACvC,MAAM,sBAAsB;AAAA,IAC9B,CAAC;AACD,UAAM,QAAQ,4BAA4B,KAAK;AAC/C,UAAM,QAAQ,MAAM,MAAM,OAAO,CAAC,UAA+B;AAC/D,UAAI,OAAO,UAAU,UAAa,MAAM,UAAU,OAAO,OAAO;AAC9D,eAAO;AAAA,MACT;AACA,UAAI,OAAO,UAAU,UAAa,MAAM,UAAU,OAAO,OAAO;AAC9D,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AACD,QAAI,MAAM,eAAe,QAAW;AAClC,aAAO,EAAE,OAAO,YAAY,MAAM,WAAW;AAAA,IAC/C;AACA,WAAO,EAAE,MAAM;AAAA,EACjB;AAEA,SAAO;AAAA,IACL;AAAA,IAEA,MAAM,sBAAsB,OAAoD;AAC9E,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AACD,YAAM,QAAQ,4BAA4B,KAAK;AAC/C,UAAI,UAAU,QAAW;AACvB,eAAO;AAAA,MACT;AACA,YAAM,SAAS,MAAM,iBAAiB,EAAE,MAAM,CAAC;AAC/C,aAAO,OAAO,MAAM;AAAA,IACtB;AAAA,EACF;AACF;;;AC3CA,SAAS,oBACP,QACA,QACA,gBACe;AACf,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,yBACP,QACA,OAMe;AACf,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,IACd,gBAAgB,MAAM;AAAA,IACtB,GAAI,MAAM,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;AAAA,EAC5D,CAAC;AACH;AAEA,SAAS,oBACP,QACA,QACe;AACf,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,oBAAoB,QAA2B,KAA8B;AACpF,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,mBACP,QACA,QAGI,CAAC,GACU;AACf,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B,GAAI,MAAM,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;AAAA,IAC1D,GAAI,MAAM,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;AAAA,EAC5D,CAAC;AACH;AAEA,SAAS,sBACP,QACA,OACA,OACe;AACf,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEO,SAAS,yBAAyB,SAAkC;AACzE,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,qBAAqB,CACnB,QACA,mBACG,oBAAoB,QAAQ,QAAQ,cAAc;AAAA,IACvD,0BAA0B,CAAC,UAKrB,yBAAyB,QAAQ,KAAK;AAAA,IAC5C,qBAAqB,CAAC,WACpB,oBAAoB,QAAQ,MAAM;AAAA,IACpC,qBAAqB,CAAC,QAAkB,oBAAoB,QAAQ,GAAG;AAAA,IACvE,oBAAoB,CAClB,QAA4D,CAAC,MAC1D,mBAAmB,QAAQ,KAAK;AAAA,IACrC,uBAAuB,CAAC,OAAuB,UAC7C,sBAAsB,QAAQ,OAAO,KAAK;AAAA,EAC9C;AACF;;;ACvGO,SAAS,oBAAoB,SAAkC;AACpE,SAAO;AAAA,IACL,GAAG,yBAAyB,OAAO;AAAA,IACnC,GAAG,wBAAwB,OAAO;AAAA,EACpC;AACF;;;ACDO,SAAS,8BAA8B,SAAkC;AAC9E,QAAM,EAAE,OAAO,IAAI;AAEnB,iBAAe,sBACb,QACoC;AACpC,UAAM,SAAS,MAAM,OAAO,KAAc;AAAA,MACxC,MAAM,sBAAsB;AAAA,IAC9B,CAAC;AACD,UAAM,aAAa,4BAA4B,MAAM;AACrD,WAAO,WAAW,OAAO,CAAC,aAAsC;AAC9D,UAAI,SAAS,mBAAmB,OAAO,gBAAgB;AACrD,eAAO;AAAA,MACT;AACA,UAAI,OAAO,UAAU,UAAa,SAAS,UAAU,OAAO,OAAO;AACjE,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,oBAAoB,SAAS,WAAW;AAClD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,WAAS,yBACP,YACe;AACf,WAAO,OAAO,MAAM;AAAA,MAClB,MAAM,sBAAsB;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IAEA,MAAM,sBAAsB,IAA2B;AACrD,YAAM,aAAa,MAAM,OAAO,KAAc;AAAA,QAC5C,MAAM,sBAAsB;AAAA,MAC9B,CAAC;AACD,YAAM,QAAQ,4BAA4B,UAAU,EAAE;AAAA,QACpD,CAAC,aAAsC,SAAS,OAAO;AAAA,MACzD;AACA,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AACA,YAAM,yBAAyB,CAAC,EAAE,GAAG,OAAO,WAAW,KAAK,CAAC,CAAC;AAAA,IAChE;AAAA,EACF;AACF;;;ACrDO,SAAS,0BAA0B,SAAkC;AAC1E,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,MAAM,qBAAqB,OAGuB;AAChD,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B,gBAAgB,MAAM;AAAA,QACtB,OAAO,MAAM;AAAA,MACf,CAAC;AACD,aAAO,2BAA2B,KAAK;AAAA,IACzC;AAAA,IAEA,qBAAqB,WAAoD;AACvE,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACxBO,SAAS,wBAAwB,SAAkC;AACxE,SAAO;AAAA,IACL,GAAG,8BAA8B,OAAO;AAAA,IACxC,GAAG,0BAA0B,OAAO;AAAA,EACtC;AACF;;;ACJA,SAAS,wBAAwB,OAAyB;AACxD,MAAI,EAAE,iBAAiB,QAAQ;AAC7B,WAAO;AAAA,EACT;AACA,SACE,MAAM,QAAQ,SAAS,wBAAwB,KAC/C,MAAM,QAAQ,SAAS,6BAA6B;AAExD;AAEO,SAAS,2BAA2B,SAAkC;AAC3E,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,MAAM,iBAAiB,OAGuB;AAC5C,UAAI;AACF,cAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,UACvC,MAAM,sBAAsB;AAAA,UAC5B,cAAc,MAAM;AAAA,UACpB,WAAW,MAAM;AAAA,QACnB,CAAC;AACD,eAAO,uBAAuB,KAAK;AAAA,MACrC,SAAS,OAAO;AACd,YAAI,wBAAwB,KAAK,GAAG;AAClC,iBAAO;AAAA,QACT;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IAEA,iBAAiB,WAAgD;AAC/D,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACvCA,SAASC,yBAAwB,OAAyB;AACxD,MAAI,EAAE,iBAAiB,QAAQ;AAC7B,WAAO;AAAA,EACT;AACA,SACE,MAAM,QAAQ,SAAS,wBAAwB,KAC/C,MAAM,QAAQ,SAAS,6BAA6B;AAExD;AAEO,SAAS,wBAAwB,SAAkC;AACxE,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,MAAM,mBACJ,cAC6C;AAC7C,UAAI;AACF,cAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,UACvC,MAAM,sBAAsB;AAAA,UAC5B;AAAA,QACF,CAAC;AACD,eAAO,yBAAyB,KAAK;AAAA,MACvC,SAAS,OAAO;AACd,YAAIA,yBAAwB,KAAK,GAAG;AAClC,iBAAO;AAAA,QACT;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IAEA,mBAAmB,OAA8C;AAC/D,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,sBAAsB,OAKV;AAChB,YAAM,UAAU,MAAM,KAAK,mBAAmB,MAAM,YAAY;AAChE,YAAM,oBAAoB,CAAC,GAAI,SAAS,eAAe,CAAC,GAAI,GAAG,MAAM,WAAW;AAChF,YAAM,KAAK;AAAA,QACT,uBAAuB;AAAA,UACrB,cAAc,MAAM;AAAA,UACpB,aAAa;AAAA,UACb,iBAAiB,kBAAkB;AAAA,UACnC,eAAe,MAAM;AAAA,UACrB,WAAW,KAAK,IAAI;AAAA,UACpB,cAAc,MAAM,gBAAgB,SAAS;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;;;AC9DA,SAAS,sBACP,MACA,OACS;AACT,MAAI,SAAS,UAAa,UAAU,QAAW;AAC7C,WAAO,SAAS;AAAA,EAClB;AACA,SACE,KAAK,UAAU,MAAM,SACrB,KAAK,cAAc,MAAM,aACzB,KAAK,WAAW,MAAM,UACtB,KAAK,eAAe,MAAM,cAC1B,KAAK,aAAa,MAAM,YACxB,KAAK,aAAa,MAAM,YACxB,KAAK,mBAAmB,MAAM;AAElC;AAEA,SAAS,6BACP,MACA,OACS;AACT,SACE,KAAK,OAAO,MAAM,MAClB,KAAK,UAAU,MAAM,SACrB,KAAK,UAAU,MAAM,SACrB,KAAK,WAAW,MAAM,UACtB,KAAK,aAAa,MAAM,YACxB,KAAK,WAAW,MAAM,UACtB,KAAK,iBAAiB,MAAM,gBAC5B,KAAK,kBAAkB,MAAM;AAEjC;AAEA,SAAS,8BACP,MACA,OACS;AACT,SACE,KAAK,kBAAkB,MAAM,iBAC7B,KAAK,iBAAiB,MAAM,gBAC5B,KAAK,eAAe,MAAM,cAC1B,KAAK,mBAAmB,MAAM,kBAC9B,KAAK,WAAW,MAAM;AAE1B;AAEA,SAAS,+BACP,MACA,OACS;AACT,SACE,KAAK,qBAAqB,MAAM,oBAChC,KAAK,sBAAsB,MAAM,qBACjC,sBAAsB,KAAK,UAAU,MAAM,QAAQ;AAEvD;AAEA,SAAS,oBACP,MACA,OACS;AACT,SACE,6BAA6B,MAAM,KAAK,KACxC,8BAA8B,MAAM,KAAK,KACzC,+BAA+B,MAAM,KAAK;AAE9C;AAEO,SAAS,yBACd,MACA,OACS;AACT,SACE,KAAK,WAAW,MAAM,UACtB,KAAK,MAAM,CAAC,QAAQ,UAAU;AAC5B,UAAM,cAAc,MAAM,GAAG,KAAK;AAClC,WAAO,gBAAgB,UAAa,oBAAoB,QAAQ,WAAW;AAAA,EAC7E,CAAC;AAEL;AAEO,SAAS,oBACd,SACA,SACwB;AACxB,QAAM,MAAM,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC;AACtD,SAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,GAAG,GAAG,OAAO;AACxE;;;ACxEA,eAAe,mBACb,QACiC;AACjC,QAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,IACvC,MAAM,sBAAsB;AAAA,EAC9B,CAAC;AACD,SAAO,wBAAwB,KAAK;AACtC;AAEA,SAAS,2BACP,QACA,SACe;AACf,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEA,eAAe,4BACb,QACA,QACiC;AACjC,QAAM,UAAU,MAAM,mBAAmB,MAAM;AAC/C,SAAO,QAAQ,OAAO,CAAC,WAAW,2BAA2B,QAAQ,QAAQ,KAAK,CAAC;AACrF;AAEA,eAAe,0BACb,QACA,SACA,QACe;AACf,QAAM,UAAU,MAAM,mBAAmB,MAAM;AAC/C,QAAM,MAAM,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC;AACtD,QAAM,OAAO,QAAQ;AAAA,IAAI,CAAC,WACxB,IAAI,IAAI,OAAO,EAAE,IACb;AAAA,MACE,GAAG;AAAA,MACH;AAAA,MACA,UAAU,WAAW,UAAU,OAAO,OAAO;AAAA,IAC/C,IACA;AAAA,EACN;AACA,QAAM,2BAA2B,QAAQ,IAAI;AAC/C;AAEA,SAAS,0BACP,SACA,OAC0B;AAC1B,QAAM,YAAY,QAAQ;AAAA,IACxB,CAAC,WAAW,OAAO,UAAU,SAAS,CAAC,OAAO,YAAY,OAAO,WAAW;AAAA,EAC9E;AACA,QAAM,UAAU,oBAAI,IAAoC;AACxD,aAAW,UAAU,WAAW;AAC9B,UAAM,WAAW,QAAQ,IAAI,OAAO,KAAK;AACzC,UAAM,gBAAgB,OAAO,iBAAiB,OAAO,OAAO,MAAM;AAClE,QAAI,UAAU;AACZ,eAAS,eAAe,OAAO;AAC/B,eAAS,sBAAsB;AAAA,IACjC,OAAO;AACL,cAAQ,IAAI,OAAO,OAAO;AAAA,QACxB,SAAS,OAAO;AAAA,QAChB,cAAc,OAAO,gBAAgB;AAAA,QACrC,aAAa,OAAO;AAAA,QACpB,oBAAoB;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE;AAAA,IAAS,CAAC,MAAM,UAC3C,KAAK,QAAQ,cAAc,MAAM,OAAO;AAAA,EAC1C;AACF;AAEA,SAAS,4BAA4B,QAA4C;AAC/E,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,EAC9B,CAAC;AACH;AAEA,SAAS,mBACP,QACA,SACe;AACf,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEA,eAAe,qBACb,QACA,SACe;AACf,MAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,EACF;AACA,QAAM,UAAU,MAAM,mBAAmB,MAAM;AAC/C,QAAM,OAAO,oBAAoB,SAAS,OAAO;AACjD,MAAI,yBAAyB,SAAS,IAAI,GAAG;AAC3C;AAAA,EACF;AACA,SAAO,OAAO,MAAM;AAAA,IAClB,MAAM,sBAAsB;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEA,eAAe,mBACb,QACA,OACiB;AACjB,QAAM,UAAU,MAAM,4BAA4B,QAAQ;AAAA,IACxD,OAAO,MAAM;AAAA,IACb,OAAO,MAAM;AAAA,EACf,CAAC;AACD,SAAO,QAAQ,OAAO,CAAC,OAAO,WAAW,QAAQ,OAAO,QAAQ,EAAE;AACpE;AAEA,eAAe,qBACb,QACA,OACmC;AACnC,QAAM,UAAU,MAAM,mBAAmB,MAAM;AAC/C,SAAO,0BAA0B,SAAS,KAAK;AACjD;AAEO,SAAS,2BAA2B,SAAkC;AAC3E,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,6BAA6B,MAAM,4BAA4B,MAAM;AAAA,IACrE,mBAAmB,MAAM,mBAAmB,MAAM;AAAA,IAClD,4BAA4B,CAAC,WAC3B,4BAA4B,QAAQ,MAAM;AAAA,IAC5C,oBAAoB,CAAC,WAKf,4BAA4B,QAAQ,MAAM;AAAA,IAChD,oBAAoB,CAAC,YACnB,mBAAmB,QAAQ,OAAO;AAAA,IACpC,sBAAsB,CAAC,YACrB,qBAAqB,QAAQ,OAAO;AAAA,IACtC,wBAAwB,CAAC,YACvB,0BAA0B,QAAQ,SAAS,OAAO;AAAA,IACpD,0BAA0B,CACxB,SACA,WACG,0BAA0B,QAAQ,SAAS,MAAM;AAAA,IACtD,mBAAmB,CAAC,UAClB,mBAAmB,QAAQ,KAAK;AAAA,IAClC,qBAAqB,CAAC,UAA0B,qBAAqB,QAAQ,KAAK;AAAA,EACpF;AACF;AAEA,SAAS,2BACP,QACA,QACA,iBACS;AACT,MAAI,OAAO,UAAU,UAAa,OAAO,UAAU,OAAO,OAAO;AAC/D,WAAO;AAAA,EACT;AACA,MACE,OAAO,mBAAmB,UAC1B,OAAO,mBAAmB,OAAO,gBACjC;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,UAAa,OAAO,mBAAmB,QAAW;AACrE,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,UAAa,OAAO,UAAU,OAAO,OAAO;AAC/D,WAAO;AAAA,EACT;AACA,MAAI,CAAC,oBAAoB,OAAO,YAAY,OAAO,WAAW,UAAU;AACtE,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;AClMO,SAAS,+BAA+B,SAAkC;AAC/E,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,MAAM,qBACJ,QAC+C;AAC/C,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AACD,aAAO,2BAA2B,KAAK;AAAA,IACzC;AAAA,IAEA,qBAAqB,QAAiD;AACpE,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,uBAAuB,QAA+B;AACpD,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC7BO,SAAS,qBAAqB,SAAkC;AACrE,SAAO;AAAA,IACL,GAAG,2BAA2B,OAAO;AAAA,IACrC,GAAG,+BAA+B,OAAO;AAAA,EAC3C;AACF;;;ACEA,eAAe,mBACb,QACA,SAC4C;AAC5C,MAAI;AACF,UAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,MACvC,MAAM,sBAAsB;AAAA,MAC5B;AAAA,IACF,CAAC;AACD,UAAM,SAAS,wBAAwB,KAAK;AAC5C,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAAA,EACF,QAAQ;AAAA,EAER;AACA,MAAIC;AACJ,MAAI;AACJ,MAAI;AACF,IAAAA,cAAa,MAAM,OAAO,KAAc;AAAA,MACtC,MAAM,sBAAsB;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH,QAAQ;AACN,IAAAA,cAAa;AAAA,EACf;AACA,MAAI;AACF,qBAAiB,MAAM,OAAO,KAAc;AAAA,MAC1C,MAAM,sBAAsB;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH,QAAQ;AACN,qBAAiB;AAAA,EACnB;AACA,SAAO,kCAAkC;AAAA,IACvC;AAAA,IACA,YAAAA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,eAAe,yBACb,QACA,SAC6B;AAC7B,QAAM,SAAS,MAAM,mBAAmB,QAAQ,OAAO;AACvD,MAAI,QAAQ,qBAAqB;AAC/B,WAAO,OAAO;AAAA,EAChB;AACA,QAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,IACvC,MAAM,sBAAsB;AAAA,IAC5B;AAAA,EACF,CAAC;AACD,SAAO,8BAA8B,KAAK;AAC5C;AAEO,SAAS,gCAAgC,SAAkC;AAChF,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,mBAAmB,CAAC,YAA4B,mBAAmB,QAAQ,OAAO;AAAA,IAElF,MAAM,2BACJ,SAC8B;AAC9B,YAAM,SAAS,MAAM,mBAAmB,QAAQ,OAAO;AACvD,UAAI,WAAW,QAAW;AACxB,eAAO;AAAA,MACT;AACA,aAAO,OAAO,WAAW;AAAA,IAC3B;AAAA,IAEA,yBAAyB,CAAC,YACxB,yBAAyB,QAAQ,OAAO;AAAA,EAC5C;AACF;;;AClFO,SAAS,iCAAiC,SAAkC;AACjF,QAAM,EAAE,OAAO,IAAI;AAEnB,iBAAe,yBAAyB,SAAwC;AAC9E,WAAO,OAAO,MAAM;AAAA,MAClB,MAAM,sBAAsB;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,mBAAmB,QAA8C;AAC/D,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,6BAA6B,OAIX;AAChB,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B,SAAS,MAAM;AAAA,QACf,gBAAgB,MAAM;AAAA,QACtB,YAAY,MAAM;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,IAEA;AAAA,IAEA,4BAA4B,SAAwC;AAClE,aAAO,yBAAyB,OAAO;AAAA,IACzC;AAAA,EACF;AACF;;;ACrCO,SAAS,4BAA4B,SAAkC;AAC5E,SAAO;AAAA,IACL,GAAG,gCAAgC,OAAO;AAAA,IAC1C,GAAG,iCAAiC,OAAO;AAAA,EAC7C;AACF;;;ACEO,SAAS,0BAA0B,SAAkC;AAC1E,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,MAAM,8BAA8B,OAGuB;AACzD,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B,OAAO,MAAM;AAAA,QACb,OAAO,MAAM;AAAA,MACf,CAAC;AACD,aAAO,oCAAoC,KAAK;AAAA,IAClD;AAAA,IAEA,+BACE,QACe;AACf,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,oCACJ,OAC6B;AAC7B,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AACD,aAAO,0CAA0C,KAAK;AAAA,IACxD;AAAA,IAEA,oCAAoC,OAGlB;AAChB,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B,OAAO,MAAM;AAAA,QACb,OAAO,MAAM;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACjDO,SAAS,0BAA0B,SAAkC;AAC1E,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO;AAAA,IACL,MAAM,8BAA8B,OAGuB;AACzD,YAAM,QAAQ,MAAM,OAAO,KAAc;AAAA,QACvC,MAAM,sBAAsB;AAAA,QAC5B,OAAO,MAAM;AAAA,QACb,OAAO,MAAM;AAAA,MACf,CAAC;AACD,aAAO,oCAAoC,KAAK;AAAA,IAClD;AAAA,IAEA,+BACE,QACe;AACf,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,iCAAiC,OAGf;AAChB,aAAO,OAAO,MAAM;AAAA,QAClB,MAAM,sBAAsB;AAAA,QAC5B,OAAO,MAAM;AAAA,QACb,OAAO,MAAM;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACxCO,SAAS,2BAA2B,SAAkC;AAC3E,SAAO;AAAA,IACL,GAAG,0BAA0B,OAAO;AAAA,IACpC,GAAG,0BAA0B,OAAO;AAAA,EACtC;AACF;;;ACEO,SAAS,2BAA2B,SAA6B;AACtE,QAAM,OAAO,IAAI,wBAAwB,OAAO;AAEhD,SAAO;AAAA,IACL,QAAQ,KAAK;AAAA,IACb,GAAG,oBAAoB,IAAI;AAAA,IAC3B,GAAG,4BAA4B,IAAI;AAAA,IACnC,GAAG,2BAA2B,IAAI;AAAA,IAClC,GAAG,wBAAwB,IAAI;AAAA,IAC/B,GAAG,2BAA2B,IAAI;AAAA,IAClC,GAAG,oBAAoB,IAAI;AAAA,IAC3B,GAAG,wBAAwB,IAAI;AAAA,IAC/B,GAAG,qBAAqB,IAAI;AAAA,EAC9B;AACF;;;AChBO,SAAS,0BACd,SACqB;AACrB,SAAO,2BAA2B,OAAO;AAC3C;;;ACLA,SAAS,0BAA0B,OAAgD;AACjF,QAAM,eAAe,0BAA0B,KAAK;AACpD,SAAO;AAAA,IACL,KAAK,CAAC,iBAAiB,aAAa,mBAAmB,YAAY;AAAA,IACnE,KAAK,CAAC,gBAAgB,aAAa,mBAAmB,WAAW;AAAA,EACnE;AACF;AAEA,SAAS,6BACP,OACwB;AACxB,QAAM,eAAe,0BAA0B,KAAK;AACpD,SAAO;AAAA,IACL,KAAK,CAAC,UAAU,aAAa,iBAAiB,KAAK;AAAA,IACnD,KAAK,CAAC,cAAc,aAAa,iBAAiB,SAAS;AAAA,EAC7D;AACF;AAEA,SAAS,gCAAgC,OAA2B;AAClE,QAAM,eAAe,0BAA0B,KAAK;AACpD,SAAO,OAAO,UAGqB;AACjC,UAAM,QAAQ,MAAM,MAAM,KAAK;AAC/B,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AACA,UAAM,eAAe,MAAM,aAAa,oCAAoC,KAAK;AACjF,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AACA,UAAM,mBAAmB,MAAM,oBAAoB,KAAK;AACxD,UAAM,SAAS,MAAM,aAAa,8BAA8B;AAAA,MAC9D;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AACD,UAAM,gBAAgB,QAAQ,gBAAgB,KAAK;AACnD,QAAI,kBAAkB,kBAAkB;AACtC;AAAA,IACF;AACA,UAAM,SAAS,MAAM,aAAa,8BAA8B;AAAA,MAC9D;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AACD,UAAM,aAAa,QAAQ,WAAW,KAAK,KAAK;AAChD,WAAO,WAAW,SAAS,IAAI,aAAa;AAAA,EAC9C;AACF;AAEO,SAAS,qBACd,qBACA,OACwC;AACxC,MAAI,CAAC,qBAAqB;AACxB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,iBAAiB,0BAA0B,KAAK;AAAA,IAChD,eAAe,6BAA6B,KAAK;AAAA,IACjD,qCAAqC,gCAAgC,KAAK;AAAA,EAC5E;AACF;","names":["scalarHexToFrDecimal","Buffer","withdrawObjectFromMerkleWitness","Buffer","StrKey","Buffer","Buffer","StrKey","StrKey","Buffer","StrKey","Buffer","Buffer","DECIMAL_RADIX","ed25519PubkeyPayloadHexToWithdrawFrDecimals","StrKey","Buffer","ed25519PubkeyPayloadHexToWithdrawFrDecimals","withdrawObjectFromMerkleWitness","scalarHexToFrDecimal","Buffer","PrivacyPoolSDK","PrivacyPoolSDK","PrivacyPoolSDK","COORDINATE_HEX_LENGTH","PrivacyPoolSDK","Buffer","Buffer","rpc","Buffer","rpc","Buffer","Buffer","Buffer","registered","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","registered","z","z","z","z","isMissingStatePathError","registered"]}