@agent-fuel/sdk 0.1.1 → 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.
- package/CHANGELOG.md +16 -0
- package/dist/idl/credit-vault.cjs +475 -1
- package/dist/idl/credit-vault.cjs.map +1 -1
- package/dist/idl/credit-vault.d.cts +477 -1
- package/dist/idl/credit-vault.d.ts +477 -1
- package/dist/idl/credit-vault.js +475 -1
- package/dist/idl/credit-vault.js.map +1 -1
- package/dist/index.cjs +723 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +87 -1
- package/dist/index.d.ts +87 -1
- package/dist/index.js +722 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/decoders.ts","../src/errors.ts","../src/guardrails.ts","../src/live.ts","../src/idl/reputation.json","../src/idl/credit-vault.json","../src/program-ids.ts","../src/pda.ts","../src/programs.ts","../src/client.ts","../src/record-payment.ts","../src/x402.ts"],"names":["PublicKey","TransactionInstruction","SystemProgram","AnchorProvider","Wallet","Program","Connection","BN","AnchorError"],"mappings":"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","file":"index.cjs","sourcesContent":["import { PublicKey, SystemProgram, TransactionInstruction } from \"@solana/web3.js\";\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\",\n);\n\n// Rolling hourly window in slots, at Solana's nominal 400 ms slot time.\n// Mirrors `SLOTS_PER_HOUR` in programs/credit_vault/src/state.rs.\nexport const SLOTS_PER_HOUR = 9_000;\n\nexport function getAssociatedTokenAddress(mint: PublicKey, owner: PublicKey): PublicKey {\n const [ata] = PublicKey.findProgramAddressSync(\n [owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n ASSOCIATED_TOKEN_PROGRAM_ID,\n );\n return ata;\n}\n\n// Variant 1 (`CreateIdempotent`) of the Associated Token Account program: a\n// no-op when the ATA already exists, otherwise creates it and assigns the\n// payer's lamports for rent. Safe to always prepend before a spend so callers\n// don't have to pre-flight whether the service has ever received USDC.\nexport function createAssociatedTokenAccountIdempotentInstruction(\n payer: PublicKey,\n ata: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n): TransactionInstruction {\n return new TransactionInstruction({\n programId: ASSOCIATED_TOKEN_PROGRAM_ID,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: ata, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n ],\n data: Buffer.from([1]),\n });\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport type BN from \"bn.js\";\nimport type { RawCreditVault, RawServiceRegistry, RawSpendPolicy } from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n ServiceCategory,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n} from \"./types.js\";\n\n// Anchor returns u64 fields as BN. `.toNumber()` throws above 2^53-1, which is\n// the safe behaviour for token amounts and slot numbers under realistic bounds.\nfunction bnToNum(bn: BN): number {\n return bn.toNumber();\n}\n\nfunction nameFromBytes(bytes: number[]): string {\n const buf = Buffer.from(bytes);\n const end = buf.indexOf(0);\n return (end === -1 ? buf : buf.subarray(0, end)).toString(\"utf8\");\n}\n\nfunction categoryFromRaw(raw: RawServiceRegistry[\"category\"]): ServiceCategory {\n if (\"dataFeed\" in raw) return \"DataFeed\";\n if (\"compute\" in raw) return \"Compute\";\n if (\"swap\" in raw) return \"Swap\";\n if (\"rpc\" in raw) return \"Rpc\";\n return \"Other\";\n}\n\nexport function decodeCreditVault(pubkey: PublicKey, raw: RawCreditVault): CreditVaultAccount {\n const total_deposited = bnToNum(raw.totalDeposited);\n const total_withdrawn = bnToNum(raw.totalWithdrawn);\n const total_spent = bnToNum(raw.totalSpent);\n const total_claimed = bnToNum(raw.totalClaimed);\n return {\n pubkey,\n owner: raw.owner,\n agent: raw.agent,\n usdc_mint: raw.usdcMint,\n vault_token_account: raw.vaultTokenAccount,\n total_deposited,\n total_withdrawn,\n total_spent,\n total_claimed,\n balance: total_deposited - total_withdrawn - total_spent + total_claimed,\n frozen: raw.frozen,\n created_slot: bnToNum(raw.createdSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n };\n}\n\nconst DEFAULT_PUBKEY = PublicKey.default.toBase58();\n\nexport function decodeSpendPolicy(pubkey: PublicKey, raw: RawSpendPolicy): SpendPolicyAccount {\n return {\n pubkey,\n vault: raw.vault,\n whitelist: raw.whitelist.filter((pk) => pk.toBase58() !== DEFAULT_PUBKEY),\n per_tx_limit_usdc: bnToNum(raw.perTxLimitUsdc),\n hourly_limit_usdc: bnToNum(raw.hourlyLimitUsdc),\n lifetime_limit_usdc: bnToNum(raw.lifetimeLimitUsdc),\n hourly_window_start_slot: bnToNum(raw.hourlyWindowStartSlot),\n hourly_window_spent_usdc: bnToNum(raw.hourlyWindowSpentUsdc),\n allow_post_pay: raw.allowPostPay,\n };\n}\n\nexport function decodeServiceRegistry(\n pubkey: PublicKey,\n raw: RawServiceRegistry,\n): ServiceRegistryAccount {\n return {\n pubkey,\n authority: raw.authority,\n name: nameFromBytes(raw.name),\n category: categoryFromRaw(raw.category),\n total_agents_served: bnToNum(raw.totalAgentsServed),\n total_volume_received_usdc: bnToNum(raw.totalVolumeReceivedUsdc),\n active: raw.active,\n first_active_slot: bnToNum(raw.firstActiveSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n };\n}\n","export class AgentFuelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AgentFuelError\";\n }\n}\n\n// Thrown when a method needs the vault owner but neither the constructor nor\n// the call site supplied one. The fix is to pass `owner` to `new AgentFuel`\n// or to the method itself.\nexport class OwnerNotConfiguredError extends AgentFuelError {\n constructor() {\n super(\"vault owner is not configured: pass `owner` to `new AgentFuel({...})` or to the method\");\n this.name = \"OwnerNotConfiguredError\";\n }\n}\n\nexport class AccountNotFoundError extends AgentFuelError {\n readonly account: string;\n constructor(account: string) {\n super(`account not found: ${account}`);\n this.name = \"AccountNotFoundError\";\n this.account = account;\n }\n}\n\nexport class HttpError extends AgentFuelError {\n readonly status: number;\n readonly url: string;\n readonly body: string | undefined;\n constructor(status: number, url: string, body?: string) {\n super(`HTTP ${status} from ${url}`);\n this.name = \"HttpError\";\n this.status = status;\n this.url = url;\n this.body = body;\n }\n}\n\n// Local spend guardrails — mirror `check_and_record_spend` in\n// programs/credit_vault/src/policy.rs. Thrown before the SDK constructs the\n// on-chain `spend` instruction so callers see a typed error instead of an\n// opaque simulation failure.\n\nexport class SpendPolicyError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"SpendPolicyError\";\n }\n}\n\nexport class VaultFrozenError extends SpendPolicyError {\n constructor() {\n super(\"vault is frozen\");\n this.name = \"VaultFrozenError\";\n }\n}\n\nexport class ZeroAmountError extends SpendPolicyError {\n constructor() {\n super(\"amount must be > 0\");\n this.name = \"ZeroAmountError\";\n }\n}\n\nexport class PerTxLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly amount: number;\n constructor(amount: number, limit: number) {\n super(`per-tx limit exceeded: ${amount} > ${limit}`);\n this.name = \"PerTxLimitExceededError\";\n this.amount = amount;\n this.limit = limit;\n }\n}\n\nexport class HourlyLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly windowSpent: number;\n readonly amount: number;\n constructor(amount: number, windowSpent: number, limit: number) {\n super(`hourly limit exceeded: ${windowSpent} + ${amount} > ${limit}`);\n this.name = \"HourlyLimitExceededError\";\n this.amount = amount;\n this.windowSpent = windowSpent;\n this.limit = limit;\n }\n}\n\nexport class LifetimeLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly totalSpent: number;\n readonly amount: number;\n constructor(amount: number, totalSpent: number, limit: number) {\n super(`lifetime limit exceeded: ${totalSpent} + ${amount} > ${limit}`);\n this.name = \"LifetimeLimitExceededError\";\n this.amount = amount;\n this.totalSpent = totalSpent;\n this.limit = limit;\n }\n}\n\nexport class NotWhitelistedError extends SpendPolicyError {\n readonly service: string;\n constructor(service: string) {\n super(`service ${service} is not in the vault's whitelist`);\n this.name = \"NotWhitelistedError\";\n this.service = service;\n }\n}\n\n// Reputation program errors — distinct hierarchy from SpendPolicyError because\n// these come from `record_payment`, not the credit vault.\n\nexport class RecordPaymentError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"RecordPaymentError\";\n }\n}\n\n/// The (service, receipt_hash) pair was already recorded on chain. Idempotent\n/// recorders can catch this and treat it as success — the underlying payment\n/// is already attested. Surfaces from the `init` constraint on the ReceiptUsed\n/// PDA (SystemProgram error 0x0, \"account already in use\").\nexport class ReceiptAlreadyRecordedError extends RecordPaymentError {\n readonly receiptHash: Uint8Array;\n constructor(receiptHash: Uint8Array) {\n super(\"payment receipt was already recorded on chain\");\n this.name = \"ReceiptAlreadyRecordedError\";\n this.receiptHash = receiptHash;\n }\n}\n\nexport class ServiceInactiveError extends RecordPaymentError {\n readonly service: string;\n constructor(service: string) {\n super(`service ${service} is paused; record_payment rejected`);\n this.name = \"ServiceInactiveError\";\n this.service = service;\n }\n}\n","import type { PublicKey } from \"@solana/web3.js\";\nimport { SLOTS_PER_HOUR } from \"./constants.js\";\nimport {\n HourlyLimitExceededError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport type { CreditVaultAccount, SpendPolicyAccount } from \"./types.js\";\n\n// Mirrors `check_and_record_spend` in programs/credit_vault/src/policy.rs.\n// This is a best-effort pre-flight: a concurrent spend, a window roll-over, or\n// any other on-chain state change between this check and the transaction\n// landing can still cause the chain to reject. The SDK surfaces the on-chain\n// error in that case — the local check just avoids the network round-trip for\n// the obvious failures.\nexport function guardSpend(args: {\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n service: PublicKey;\n amountUsdc: number;\n currentSlot: number;\n}): void {\n const { vault, policy, service, amountUsdc, currentSlot } = args;\n\n if (vault.frozen) throw new VaultFrozenError();\n if (amountUsdc <= 0) throw new ZeroAmountError();\n\n if (policy.whitelist.length > 0) {\n const allowed = policy.whitelist.some((pk) => pk.equals(service));\n if (!allowed) throw new NotWhitelistedError(service.toBase58());\n }\n\n if (policy.per_tx_limit_usdc > 0 && amountUsdc > policy.per_tx_limit_usdc) {\n throw new PerTxLimitExceededError(amountUsdc, policy.per_tx_limit_usdc);\n }\n\n if (policy.hourly_limit_usdc > 0) {\n const windowElapsed = currentSlot - policy.hourly_window_start_slot >= SLOTS_PER_HOUR;\n const windowSpent = windowElapsed ? 0 : policy.hourly_window_spent_usdc;\n const newWindowTotal = windowSpent + amountUsdc;\n if (newWindowTotal > policy.hourly_limit_usdc) {\n throw new HourlyLimitExceededError(amountUsdc, windowSpent, policy.hourly_limit_usdc);\n }\n }\n\n if (policy.lifetime_limit_usdc > 0) {\n const newTotalSpent = vault.total_spent + amountUsdc;\n if (newTotalSpent > policy.lifetime_limit_usdc) {\n throw new LifetimeLimitExceededError(amountUsdc, vault.total_spent, policy.lifetime_limit_usdc);\n }\n }\n}\n","import type { LiveEventFrame, LiveStatus, Subscription } from \"./types.js\";\n\n// Isomorphic WebSocket: prefer the runtime global (browsers, Node 22+), fall\n// back to the `ws` package for Node 18-21. The fallback is resolved lazily so\n// browser bundlers don't pull in `ws`.\ntype AnyWebSocket = {\n readyState: number;\n close(code?: number, reason?: string): void;\n addEventListener(type: string, listener: (ev: { data: unknown }) => void): void;\n};\ntype WebSocketCtor = new (url: string) => AnyWebSocket;\n\nlet cachedCtor: WebSocketCtor | Promise<WebSocketCtor> | null = null;\n\nasync function getWebSocketCtor(): Promise<WebSocketCtor> {\n if (cachedCtor) return cachedCtor;\n const globalCtor = (globalThis as { WebSocket?: WebSocketCtor }).WebSocket;\n if (globalCtor) {\n cachedCtor = globalCtor;\n return globalCtor;\n }\n cachedCtor = (async () => {\n const mod = await import(\"ws\");\n return mod.WebSocket as unknown as WebSocketCtor;\n })();\n return cachedCtor;\n}\n\nconst WS_OPEN = 1;\nconst MAX_BACKOFF_MS = 30_000;\n\nexport type SubscribeOptions = {\n onFrame: (frame: LiveEventFrame) => void;\n onStatus?: (status: LiveStatus) => void;\n};\n\nexport function subscribe(url: string, opts: SubscribeOptions): Subscription {\n let socket: AnyWebSocket | null = null;\n let alive = true;\n let attempts = 0;\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n let currentStatus: LiveStatus = \"connecting\";\n\n function setStatus(next: LiveStatus): void {\n currentStatus = next;\n opts.onStatus?.(next);\n }\n\n async function connect(): Promise<void> {\n if (!alive) return;\n setStatus(attempts === 0 ? \"connecting\" : \"reconnecting\");\n const WS = await getWebSocketCtor();\n if (!alive) return;\n socket = new WS(url);\n\n socket.addEventListener(\"open\", () => {\n attempts = 0;\n setStatus(\"open\");\n });\n\n socket.addEventListener(\"message\", (ev) => {\n if (typeof ev.data !== \"string\" || ev.data.length === 0) return;\n try {\n const parsed = JSON.parse(ev.data) as LiveEventFrame;\n if (parsed.type === \"event\") opts.onFrame(parsed);\n } catch {\n // Future backend versions may emit ping/keepalive frames — ignore.\n }\n });\n\n socket.addEventListener(\"close\", () => {\n if (!alive) return;\n attempts += 1;\n const delay = Math.min(MAX_BACKOFF_MS, 1_000 * 2 ** (attempts - 1));\n setStatus(\"reconnecting\");\n reconnectTimer = setTimeout(() => {\n void connect();\n }, delay);\n });\n\n // `error` events are followed by `close`; nothing extra to do here.\n socket.addEventListener(\"error\", () => {});\n }\n\n void connect();\n\n return {\n close(): void {\n alive = false;\n if (reconnectTimer !== null) clearTimeout(reconnectTimer);\n if (socket && socket.readyState === WS_OPEN) {\n socket.close(1000, \"client close\");\n }\n socket = null;\n setStatus(\"closed\");\n },\n get status(): LiveStatus {\n return currentStatus;\n },\n };\n}\n\n// Translate the SDK's apiBase (an HTTP URL) into the matching WebSocket URL.\nexport function wsUrl(apiBase: string, path: string): string {\n if (apiBase.startsWith(\"https://\")) return apiBase.replace(/^https/, \"wss\") + path;\n if (apiBase.startsWith(\"http://\")) return apiBase.replace(/^http/, \"ws\") + path;\n return apiBase + path;\n}\n\n// Public entity-scoped subscriptions. `AgentFuel.onEvent()` covers the agent\n// channel; these mirror it for the other two entity types so callers without\n// an agent keypair (e.g. a service-side recorder) can also tap the stream.\n\nexport function subscribeService(\n apiBase: string,\n servicePubkey: string,\n opts: SubscribeOptions,\n): Subscription {\n return subscribe(wsUrl(apiBase, `/ws/services/${servicePubkey}`), opts);\n}\n\nexport function subscribeVault(\n apiBase: string,\n vaultPubkey: string,\n opts: SubscribeOptions,\n): Subscription {\n return subscribe(wsUrl(apiBase, `/ws/vaults/${vaultPubkey}`), opts);\n}\n","{\n \"address\": \"4GjB4xdm1VTPVM6KSiEEfJpD4u7BfY1qDx77StiFShvQ\",\n \"metadata\": {\n \"name\": \"reputation\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — On-chain reputation primitive for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"append_response\",\n \"discriminator\": [\n 162,\n 210,\n 186,\n 50,\n 180,\n 4,\n 47,\n 104\n ],\n \"accounts\": [\n {\n \"name\": \"responder\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"compute_score\",\n \"discriminator\": [\n 161,\n 101,\n 4,\n 93,\n 120,\n 62,\n 41,\n 20\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"give_feedback\",\n \"discriminator\": [\n 145,\n 136,\n 123,\n 3,\n 215,\n 165,\n 98,\n 41\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"initialize_agent\",\n \"discriminator\": [\n 212,\n 81,\n 156,\n 211,\n 212,\n 110,\n 21,\n 28\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"record_payment\",\n \"discriminator\": [\n 226,\n 154,\n 10,\n 27,\n 9,\n 14,\n 148,\n 137\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"register_service\",\n \"discriminator\": [\n 11,\n 133,\n 158,\n 232,\n 193,\n 19,\n 229,\n 73\n ],\n \"accounts\": [\n {\n \"name\": \"sponsor\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"service_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n }\n ]\n },\n {\n \"name\": \"revoke_feedback\",\n \"discriminator\": [\n 211,\n 37,\n 230,\n 82,\n 118,\n 216,\n 137,\n 206\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"set_service_active\",\n \"discriminator\": [\n 221,\n 172,\n 149,\n 49,\n 212,\n 184,\n 77,\n 101\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"relations\": [\n \"service_registry\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AgentProfile\",\n \"discriminator\": [\n 60,\n 227,\n 42,\n 24,\n 0,\n 87,\n 86,\n 205\n ]\n },\n {\n \"name\": \"AgentServiceLink\",\n \"discriminator\": [\n 123,\n 74,\n 215,\n 240,\n 42,\n 88,\n 217,\n 216\n ]\n },\n {\n \"name\": \"FeedbackRecord\",\n \"discriminator\": [\n 15,\n 45,\n 246,\n 217,\n 63,\n 251,\n 69,\n 100\n ]\n },\n {\n \"name\": \"ReceiptUsed\",\n \"discriminator\": [\n 143,\n 21,\n 251,\n 75,\n 166,\n 7,\n 163,\n 137\n ]\n },\n {\n \"name\": \"ServiceRegistry\",\n \"discriminator\": [\n 105,\n 133,\n 96,\n 79,\n 207,\n 176,\n 202,\n 71\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AgentInitialized\",\n \"discriminator\": [\n 124,\n 252,\n 85,\n 27,\n 146,\n 101,\n 64,\n 160\n ]\n },\n {\n \"name\": \"FeedbackGiven\",\n \"discriminator\": [\n 64,\n 65,\n 2,\n 152,\n 174,\n 215,\n 156,\n 194\n ]\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"discriminator\": [\n 205,\n 16,\n 31,\n 94,\n 54,\n 101,\n 16,\n 199\n ]\n },\n {\n \"name\": \"PaymentRecorded\",\n \"discriminator\": [\n 214,\n 3,\n 212,\n 116,\n 135,\n 35,\n 104,\n 98\n ]\n },\n {\n \"name\": \"ResponseAppended\",\n \"discriminator\": [\n 168,\n 169,\n 214,\n 193,\n 171,\n 1,\n 232,\n 123\n ]\n },\n {\n \"name\": \"ScoreComputed\",\n \"discriminator\": [\n 52,\n 76,\n 80,\n 33,\n 2,\n 43,\n 75,\n 109\n ]\n },\n {\n \"name\": \"ServiceActiveSet\",\n \"discriminator\": [\n 151,\n 122,\n 7,\n 40,\n 191,\n 139,\n 237,\n 52\n ]\n },\n {\n \"name\": \"ServiceRegistered\",\n \"discriminator\": [\n 25,\n 219,\n 76,\n 223,\n 57,\n 191,\n 117,\n 38\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ServiceInactive\",\n \"msg\": \"Service is not active\"\n },\n {\n \"code\": 6002,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Payment amount must be greater than zero\"\n },\n {\n \"code\": 6003,\n \"name\": \"SelfRating\",\n \"msg\": \"A service may not rate itself or the agent owner\"\n },\n {\n \"code\": 6004,\n \"name\": \"ReceiptMismatch\",\n \"msg\": \"Receipt does not belong to this (agent, service) pair\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidFeedbackValue\",\n \"msg\": \"Feedback value is outside the allowed range\"\n },\n {\n \"code\": 6006,\n \"name\": \"UnauthorizedResponder\",\n \"msg\": \"Responder must be the agent or its owner\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyHasResponse\",\n \"msg\": \"Feedback already has a response\"\n },\n {\n \"code\": 6008,\n \"name\": \"AlreadyRevoked\",\n \"msg\": \"Feedback has already been revoked\"\n },\n {\n \"code\": 6009,\n \"name\": \"FeedbackRateLimited\",\n \"msg\": \"Feedback rate limit not yet expired for this (service, agent) pair\"\n },\n {\n \"code\": 6010,\n \"name\": \"UnauthorizedService\",\n \"msg\": \"Only the service authority may perform this action\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AgentInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentProfile\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"consecutive_success\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"active_negative_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"services_used\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reputation_score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"AgentServiceLink\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"first_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_feedback_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"has_received_feedback\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackGiven\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent_profile\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service_registry\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"has_response\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"revoked\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_modified_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"was_negative\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PaymentRecorded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"was_new_pair\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiptUsed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"recorded_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ResponseAppended\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"responder\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ScoreComputed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceActiveSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceCategory\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"DataFeed\"\n },\n {\n \"name\": \"Compute\"\n },\n {\n \"name\": \"Swap\"\n },\n {\n \"name\": \"Rpc\"\n },\n {\n \"name\": \"Other\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sponsor\",\n \"docs\": [\n \"Wallet that paid rent. Lets us answer \\\"who registered this service?\\\"\",\n \"without an extra column on the on-chain account.\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"service_uri\",\n \"docs\": [\n \"Off-chain metadata URI (pricing, docs, endpoint, logo). Padded to 128 bytes;\",\n \"trailing NULs are trimmed when read. Mirrors `AgentProfile::agent_uri`.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"total_agents_served\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_received_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"EsykPsafhHUeN7jA9DGqBiGuBsTBaFynLDVVpE4jFXDg\",\n \"metadata\": {\n \"name\": \"credit_vault\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — Budget-bound USDC spending vault for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"create_vault\",\n \"discriminator\": [\n 29,\n 237,\n 247,\n 208,\n 193,\n 82,\n 54,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"docs\": [\n \"account need not exist on chain; we never read or write its data.\"\n ]\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"freeze_vault\",\n \"discriminator\": [\n 144,\n 211,\n 63,\n 236,\n 97,\n 31,\n 170,\n 175\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"spend\",\n \"discriminator\": [\n 242,\n 205,\n 255,\n 87,\n 101,\n 217,\n 245,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"unfreeze_vault\",\n \"discriminator\": [\n 145,\n 244,\n 206,\n 234,\n 251,\n 250,\n 116,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"update_policy\",\n \"discriminator\": [\n 212,\n 245,\n 246,\n 7,\n 163,\n 151,\n 18,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"new_whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"CreditVault\",\n \"discriminator\": [\n 143,\n 180,\n 135,\n 248,\n 84,\n 85,\n 183,\n 70\n ]\n },\n {\n \"name\": \"SpendPolicy\",\n \"discriminator\": [\n 139,\n 90,\n 209,\n 31,\n 205,\n 15,\n 68,\n 243\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deposited\",\n \"discriminator\": [\n 111,\n 141,\n 26,\n 45,\n 161,\n 35,\n 100,\n 57\n ]\n },\n {\n \"name\": \"PolicyUpdated\",\n \"discriminator\": [\n 225,\n 112,\n 112,\n 67,\n 95,\n 236,\n 245,\n 161\n ]\n },\n {\n \"name\": \"Spent\",\n \"discriminator\": [\n 43,\n 51,\n 164,\n 100,\n 191,\n 244,\n 174,\n 98\n ]\n },\n {\n \"name\": \"VaultCreated\",\n \"discriminator\": [\n 117,\n 25,\n 120,\n 254,\n 75,\n 236,\n 78,\n 115\n ]\n },\n {\n \"name\": \"VaultFrozen\",\n \"discriminator\": [\n 13,\n 199,\n 172,\n 111,\n 88,\n 10,\n 151,\n 247\n ]\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"discriminator\": [\n 128,\n 194,\n 79,\n 155,\n 85,\n 31,\n 226,\n 170\n ]\n },\n {\n \"name\": \"Withdrawn\",\n \"discriminator\": [\n 20,\n 89,\n 223,\n 198,\n 194,\n 124,\n 219,\n 13\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Amount must be greater than zero\"\n },\n {\n \"code\": 6002,\n \"name\": \"Frozen\",\n \"msg\": \"Vault is frozen\"\n },\n {\n \"code\": 6003,\n \"name\": \"NotWhitelisted\",\n \"msg\": \"Service is not on the vault's whitelist\"\n },\n {\n \"code\": 6004,\n \"name\": \"PerTxLimitExceeded\",\n \"msg\": \"Amount exceeds the per-transaction limit\"\n },\n {\n \"code\": 6005,\n \"name\": \"HourlyLimitExceeded\",\n \"msg\": \"Amount exceeds the hourly rolling-window limit\"\n },\n {\n \"code\": 6006,\n \"name\": \"LifetimeLimitExceeded\",\n \"msg\": \"Amount would exceed the lifetime spend ceiling\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyFrozen\",\n \"msg\": \"Vault is already frozen\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotFrozen\",\n \"msg\": \"Vault is not frozen\"\n },\n {\n \"code\": 6009,\n \"name\": \"PostPayDisabled\",\n \"msg\": \"Post-pay claims are disabled for this vault\"\n }\n ],\n \"types\": [\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreditVault\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"frozen\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Deposited\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PolicyUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SpendPolicy\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_start_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_spent_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Spent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultFrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Withdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n }\n ]\n}","import { PublicKey } from \"@solana/web3.js\";\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\n\nexport const PROGRAM_IDS = {\n reputation: new PublicKey(reputationIdl.address),\n creditVault: new PublicKey(creditVaultIdl.address),\n} as const;\n","import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_IDS } from \"./program-ids.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport function toPubkey(value: Pubkeyish): PublicKey {\n return value instanceof PublicKey ? value : new PublicKey(value);\n}\n\nexport function vaultPda(owner: Pubkeyish, agent: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"vault\"), toPubkey(owner).toBuffer(), toPubkey(agent).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function policyPda(vault: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"policy\"), toPubkey(vault).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function serviceRegistryPda(serviceAuthority: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"service\"), toPubkey(serviceAuthority).toBuffer()],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\nexport function agentProfilePda(agent: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"agent\"), toPubkey(agent).toBuffer()],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\n/** PDA used by `record_payment` to track the agent ↔ service pair. The seeds\n * are the *PDAs* of the agent profile and service registry, not the raw\n * authority pubkeys — match the on-chain Anchor account constraint. */\nexport function agentServiceLinkPda(\n agentProfile: Pubkeyish,\n serviceRegistry: Pubkeyish,\n): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [\n Buffer.from(\"link\"),\n toPubkey(agentProfile).toBuffer(),\n toPubkey(serviceRegistry).toBuffer(),\n ],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\n/** Existence-as-signal: a `ReceiptUsed` PDA at `[b\"receipt\", hash]` proves\n * the receipt has been recorded. `record_payment`'s `init` constraint (not\n * `init_if_needed`) means a duplicate hash fails with `AccountAlreadyInUse`,\n * which is the chain-side replay defence. */\nexport function receiptUsedPda(receiptHash: Uint8Array): PublicKey {\n if (receiptHash.length !== 32) {\n throw new Error(`receiptUsedPda expects a 32-byte hash, got ${receiptHash.length}`);\n }\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"receipt\"), Buffer.from(receiptHash)],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n","import { AnchorProvider, Program, Wallet, type Idl } from \"@coral-xyz/anchor\";\nimport {\n type ConfirmOptions,\n type Connection,\n type Keypair,\n type PublicKey,\n type TransactionInstruction,\n} from \"@solana/web3.js\";\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport type BN from \"bn.js\";\n\nexport type RawCreditVault = {\n owner: PublicKey;\n agent: PublicKey;\n usdcMint: PublicKey;\n vaultTokenAccount: PublicKey;\n totalDeposited: BN;\n totalWithdrawn: BN;\n totalSpent: BN;\n totalClaimed: BN;\n frozen: boolean;\n createdSlot: BN;\n lastActiveSlot: BN;\n};\n\nexport type RawSpendPolicy = {\n vault: PublicKey;\n whitelist: PublicKey[];\n perTxLimitUsdc: BN;\n hourlyLimitUsdc: BN;\n lifetimeLimitUsdc: BN;\n hourlyWindowStartSlot: BN;\n hourlyWindowSpentUsdc: BN;\n allowPostPay: boolean;\n};\n\nexport type RawServiceRegistry = {\n authority: PublicKey;\n name: number[];\n category:\n | { dataFeed: Record<string, never> }\n | { compute: Record<string, never> }\n | { swap: Record<string, never> }\n | { rpc: Record<string, never> }\n | { other: Record<string, never> };\n totalAgentsServed: BN;\n totalVolumeReceivedUsdc: BN;\n active: boolean;\n firstActiveSlot: BN;\n lastActiveSlot: BN;\n};\n\ntype Fetchable<T> = {\n fetchNullable(address: PublicKey): Promise<T | null>;\n};\n\nexport type SpendAccounts = {\n agent: PublicKey;\n vault: PublicKey;\n policy: PublicKey;\n vaultTokenAccount: PublicKey;\n serviceTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n};\n\ntype SpendBuilder = {\n accounts(accounts: SpendAccounts): {\n preInstructions(instructions: readonly TransactionInstruction[]): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type CreditVaultProgram = {\n account: {\n creditVault: Fetchable<RawCreditVault>;\n spendPolicy: Fetchable<RawSpendPolicy>;\n };\n methods: {\n spend(amountUsdc: BN): SpendBuilder;\n };\n};\n\nexport type ComputeScoreAccounts = {\n caller: PublicKey;\n agentProfile: PublicKey;\n};\n\ntype ComputeScoreBuilder = {\n accounts(accounts: ComputeScoreAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type RecordPaymentAccounts = {\n service: PublicKey;\n agentProfile: PublicKey;\n serviceRegistry: PublicKey;\n agentServiceLink: PublicKey;\n receiptUsed: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RecordPaymentBuilder = {\n accounts(accounts: RecordPaymentAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type ReputationProgram = {\n account: {\n serviceRegistry: Fetchable<RawServiceRegistry>;\n };\n methods: {\n computeScore(): ComputeScoreBuilder;\n recordPayment(\n amountUsdc: BN,\n paymentReceiptHash: number[] | Uint8Array,\n ): RecordPaymentBuilder;\n };\n};\n\nexport function buildProvider(connection: Connection, keypair: Keypair): AnchorProvider {\n return new AnchorProvider(connection, new Wallet(keypair), AnchorProvider.defaultOptions());\n}\n\nexport function creditVaultProgram(provider: AnchorProvider): CreditVaultProgram {\n return new Program(creditVaultIdl as unknown as Idl, provider) as unknown as CreditVaultProgram;\n}\n\nexport function reputationProgram(provider: AnchorProvider): ReputationProgram {\n return new Program(reputationIdl as unknown as Idl, provider) as unknown as ReputationProgram;\n}\n","import { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport { Connection, PublicKey, type Keypair } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountIdempotentInstruction,\n getAssociatedTokenAddress,\n} from \"./constants.js\";\nimport {\n decodeCreditVault,\n decodeServiceRegistry,\n decodeSpendPolicy,\n} from \"./decoders.js\";\nimport {\n AccountNotFoundError,\n HourlyLimitExceededError,\n HttpError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n OwnerNotConfiguredError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport { guardSpend } from \"./guardrails.js\";\nimport { subscribe, wsUrl } from \"./live.js\";\nimport {\n agentProfilePda,\n policyPda,\n serviceRegistryPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport {\n buildProvider,\n creditVaultProgram,\n reputationProgram,\n type CreditVaultProgram,\n type ReputationProgram,\n} from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n LiveEventFrame,\n LiveStatus,\n Pubkeyish,\n ReputationLookup,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n Subscription,\n} from \"./types.js\";\n\nexport type Cluster = \"mainnet-beta\" | \"devnet\" | \"testnet\" | \"localnet\";\n\nexport type AgentFuelOptions = {\n agent: Keypair;\n cluster: Cluster;\n rpc: string | Connection;\n // Optional vault owner. When set, `getVaultBalance()`, `getPolicy()`, and\n // `spend()` default to this owner so callers don't have to pass it on every\n // call. Per-method overrides still work for the \"inspect someone else's\n // vault\" case.\n owner?: Pubkeyish;\n apiBase?: string;\n};\n\nexport type VaultRef = {\n owner?: Pubkeyish;\n agent?: Pubkeyish;\n};\n\nexport type SpendArgs = {\n service: Pubkeyish;\n amountUsdc: number;\n owner?: Pubkeyish;\n};\n\nexport type SpendResult = {\n signature: string;\n};\n\nexport type OnEventOptions = {\n agent?: Pubkeyish;\n onStatus?: (status: LiveStatus) => void;\n};\n\nconst DEFAULT_API_BASE = \"http://localhost:8080\";\n\nexport class AgentFuel {\n readonly agent: Keypair;\n readonly cluster: Cluster;\n readonly connection: Connection;\n readonly apiBase: string;\n readonly owner: PublicKey | undefined;\n\n private _creditVault: CreditVaultProgram | undefined;\n private _reputation: ReputationProgram | undefined;\n\n constructor(opts: AgentFuelOptions) {\n this.agent = opts.agent;\n this.cluster = opts.cluster;\n this.connection =\n typeof opts.rpc === \"string\" ? new Connection(opts.rpc, \"confirmed\") : opts.rpc;\n this.apiBase = opts.apiBase ?? DEFAULT_API_BASE;\n this.owner = opts.owner ? toPubkey(opts.owner) : undefined;\n }\n\n get agentPubkey(): PublicKey {\n return this.agent.publicKey;\n }\n\n private get creditVault(): CreditVaultProgram {\n if (!this._creditVault) {\n this._creditVault = creditVaultProgram(buildProvider(this.connection, this.agent));\n }\n return this._creditVault;\n }\n\n private get reputation(): ReputationProgram {\n if (!this._reputation) {\n this._reputation = reputationProgram(buildProvider(this.connection, this.agent));\n }\n return this._reputation;\n }\n\n private resolveOwner(override?: Pubkeyish): PublicKey {\n const value = override ?? this.owner;\n if (!value) throw new OwnerNotConfiguredError();\n return toPubkey(value);\n }\n\n async getScore(agent?: Pubkeyish): Promise<ReputationLookup> {\n const target = agent ? toPubkey(agent) : this.agentPubkey;\n const agentStr = target.toBase58();\n const url = `${this.apiBase.replace(/\\/$/, \"\")}/reputation/${agentStr}`;\n const res = await fetch(url);\n if (res.status === 404) throw new AccountNotFoundError(agentStr);\n if (!res.ok) throw new HttpError(res.status, url, await safeText(res));\n return (await res.json()) as ReputationLookup;\n }\n\n async getVaultBalance(ref?: VaultRef): Promise<CreditVaultAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const pda = vaultPda(owner, agent);\n const raw = await this.creditVault.account.creditVault.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeCreditVault(pda, raw);\n }\n\n async getPolicy(ref?: VaultRef): Promise<SpendPolicyAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const vault = vaultPda(owner, agent);\n const pda = policyPda(vault);\n const raw = await this.creditVault.account.spendPolicy.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeSpendPolicy(pda, raw);\n }\n\n async checkService(serviceAuthority: Pubkeyish): Promise<ServiceRegistryAccount> {\n const pda = serviceRegistryPda(serviceAuthority);\n const raw = await this.reputation.account.serviceRegistry.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeServiceRegistry(pda, raw);\n }\n\n async spend(args: SpendArgs): Promise<SpendResult> {\n const owner = this.resolveOwner(args.owner);\n const service = toPubkey(args.service);\n const amountUsdc = args.amountUsdc;\n\n const vault = await this.getVaultBalance({ owner, agent: this.agentPubkey });\n const policy = await this.getPolicy({ owner, agent: this.agentPubkey });\n const currentSlot = await this.connection.getSlot();\n\n guardSpend({ vault, policy, service, amountUsdc, currentSlot });\n\n const serviceTokenAccount = getAssociatedTokenAddress(vault.usdc_mint, service);\n const createAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n this.agentPubkey,\n serviceTokenAccount,\n service,\n vault.usdc_mint,\n );\n\n try {\n const signature = await this.creditVault.methods\n .spend(new BN(amountUsdc))\n .accounts({\n agent: this.agentPubkey,\n vault: vault.pubkey,\n policy: policy.pubkey,\n vaultTokenAccount: vault.vault_token_account,\n serviceTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .preInstructions([createAtaIx])\n .signers([this.agent])\n .rpc();\n return { signature };\n } catch (err) {\n throw mapSpendError(err, { service, amountUsdc, vault, policy });\n }\n }\n\n /// Triggers an on-chain recomputation of the agent's reputation score.\n /// Permissionless — any signer can call it; we use the agent itself since\n /// the SDK already has its keypair available and it already pays tx fees\n /// for spends. The instruction reads the agent's already-public counters\n /// (volume, diversity, streak, tenure, feedback), recalculates the score\n /// to a single u16 ≤ 1000, and emits a `ScoreComputed` event. The webhook\n /// picks that up; the next `getScore()` returns the fresh value.\n async computeScore(): Promise<{ signature: string }> {\n const profile = agentProfilePda(this.agentPubkey);\n const signature = await this.reputation.methods\n .computeScore()\n .accounts({\n caller: this.agentPubkey,\n agentProfile: profile,\n })\n .signers([this.agent])\n .rpc();\n return { signature };\n }\n\n onEvent(\n callback: (frame: LiveEventFrame) => void,\n options?: OnEventOptions,\n ): Subscription {\n const target = options?.agent ? toPubkey(options.agent) : this.agentPubkey;\n const url = wsUrl(this.apiBase, `/ws/agents/${target.toBase58()}`);\n const subOpts: { onFrame: (frame: LiveEventFrame) => void; onStatus?: (status: LiveStatus) => void } = {\n onFrame: callback,\n };\n if (options?.onStatus) subOpts.onStatus = options.onStatus;\n return subscribe(url, subOpts);\n }\n}\n\n// Re-throws Anchor `VaultError` codes as the same typed exceptions the local\n// guardrail uses, so callers can `instanceof`-match without caring whether the\n// rejection happened in the pre-flight or on-chain. Codes mirror\n// `programs/credit_vault/src/errors.rs` (Anchor starts custom errors at 6000).\nfunction mapSpendError(\n err: unknown,\n ctx: {\n service: PublicKey;\n amountUsdc: number;\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n },\n): unknown {\n if (!(err instanceof AnchorError)) return err;\n switch (err.error.errorCode.number) {\n case 6001:\n return new ZeroAmountError();\n case 6002:\n return new VaultFrozenError();\n case 6003:\n return new NotWhitelistedError(ctx.service.toBase58());\n case 6004:\n return new PerTxLimitExceededError(ctx.amountUsdc, ctx.policy.per_tx_limit_usdc);\n case 6005:\n return new HourlyLimitExceededError(\n ctx.amountUsdc,\n ctx.policy.hourly_window_spent_usdc,\n ctx.policy.hourly_limit_usdc,\n );\n case 6006:\n return new LifetimeLimitExceededError(\n ctx.amountUsdc,\n ctx.vault.total_spent,\n ctx.policy.lifetime_limit_usdc,\n );\n default:\n return err;\n }\n}\n\nasync function safeText(res: Response): Promise<string | undefined> {\n try {\n return await res.text();\n } catch {\n return undefined;\n }\n}\n","// Service-side attestation that an agent paid them. Distinct from the\n// agent's `af.spend()` — that one runs on credit_vault and moves USDC;\n// this one runs on reputation and updates the agent ↔ service counters\n// that ultimately feed `compute_score`.\n//\n// The two are deliberately separate so a service can attest only payments\n// it actually received (an agent can't unilaterally inflate its own counters\n// by emitting fake payment events).\n\nimport { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport { Connection, type Keypair, SystemProgram } from \"@solana/web3.js\";\nimport {\n ReceiptAlreadyRecordedError,\n RecordPaymentError,\n ServiceInactiveError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport {\n agentProfilePda,\n agentServiceLinkPda,\n receiptUsedPda,\n serviceRegistryPda,\n toPubkey,\n} from \"./pda.js\";\nimport { buildProvider, reputationProgram } from \"./programs.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport type RecordPaymentArgs = {\n /** Service authority keypair. Signs the tx and pays the fee. Must match\n * the same keypair that was registered on chain as the service authority. */\n service: Keypair;\n /** Agent identity pubkey (NOT the AgentProfile PDA — we derive that). */\n agent: Pubkeyish;\n /** Amount in micro-USDC (1_000_000 = 1 USDC). */\n amountUsdc: number;\n /** 32-byte hash that uniquely identifies this payment. Common choice:\n * `sha256(spendTxSignature)` — the spend signature is unique on chain,\n * so its hash is too. The chain enforces single-use via `init` on the\n * ReceiptUsed PDA; resubmitting the same hash fails with AccountAlreadyInUse. */\n receiptHash: Uint8Array;\n connection: Connection;\n};\n\nexport type RecordPaymentResult = {\n signature: string;\n};\n\nexport async function recordPayment(\n args: RecordPaymentArgs,\n): Promise<RecordPaymentResult> {\n const { service, connection, amountUsdc } = args;\n const agentPubkey = toPubkey(args.agent);\n\n if (amountUsdc <= 0) {\n throw new Error(\"recordPayment: amountUsdc must be > 0\");\n }\n if (args.receiptHash.length !== 32) {\n throw new Error(\n `recordPayment: receiptHash must be 32 bytes, got ${args.receiptHash.length}`,\n );\n }\n\n const provider = buildProvider(connection, service);\n const program = reputationProgram(provider);\n\n const agentProfile = agentProfilePda(agentPubkey);\n const serviceRegistry = serviceRegistryPda(service.publicKey);\n const link = agentServiceLinkPda(agentProfile, serviceRegistry);\n const receipt = receiptUsedPda(args.receiptHash);\n\n try {\n const signature = await program.methods\n .recordPayment(new BN(amountUsdc), args.receiptHash)\n .accounts({\n service: service.publicKey,\n agentProfile,\n serviceRegistry,\n agentServiceLink: link,\n receiptUsed: receipt,\n systemProgram: SystemProgram.programId,\n })\n .signers([service])\n .rpc();\n return { signature };\n } catch (err) {\n throw mapRecordPaymentError(err, args.receiptHash);\n }\n}\n\n// Anchor custom errors for the reputation program start at 6000; the order\n// matches `programs/reputation/src/errors.rs::ReputationError`. The\n// \"AccountAlreadyInUse\" case isn't a custom error — it's the system program's\n// 0x0, fired by Anchor's `init` constraint on ReceiptUsed when the same hash\n// has already been recorded.\nfunction mapRecordPaymentError(err: unknown, receiptHash: Uint8Array): unknown {\n // System program rejects duplicate inits with logs containing\n // \"already in use\" — surface this as a typed, idempotent-friendly error.\n const message = err instanceof Error ? err.message : String(err);\n if (/already in use/i.test(message)) {\n return new ReceiptAlreadyRecordedError(receiptHash);\n }\n if (!(err instanceof AnchorError)) return err;\n switch (err.error.errorCode.number) {\n case 6000:\n return new RecordPaymentError(\"counter overflow on chain\");\n case 6001:\n return new ServiceInactiveError(\n err.error.origin?.toString() ?? \"<unknown service>\",\n );\n case 6002:\n return new ZeroAmountError();\n default:\n return err;\n }\n}\n","import { AgentFuelError } from \"./errors.js\";\nimport type { AgentFuel } from \"./client.js\";\n\n// Wire shape of the payment requirement. Servers may send the requirement\n// either in an `X-Payment-Required` header (preferred — works with streams)\n// or as a JSON body on the 402 response (closer to the official x402 spec).\n//\n// The parser accepts both `recipient`/`amountUsdc` (the SDK's natural naming)\n// and `payTo`/`maxAmountRequired` (closer to the x402 spec) so servers using\n// either vocabulary work without configuration.\nexport type PaymentRequirement = {\n recipient: string;\n amountUsdc: number;\n network?: string;\n resource?: string;\n};\n\nexport type FetchLike = (\n input: string | URL | Request,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport type PaymentRequiredOptions = {\n // Custom fetch implementation (defaults to global). Use this to plug in\n // node-fetch on legacy runtimes or to inject a mock for tests.\n fetch?: FetchLike;\n // Fires after a 402 is parsed, before `spend()` is called. Useful for\n // user-confirmation prompts.\n onPaymentRequired?: (req: PaymentRequirement) => void | Promise<void>;\n // Fires after the on-chain spend lands. Receives the tx signature.\n onPaid?: (signature: string, req: PaymentRequirement) => void | Promise<void>;\n};\n\nconst HEADER = \"X-Payment-Required\";\nconst PAYMENT_HEADER = \"X-Payment\";\n\nexport class PaymentParseError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"PaymentParseError\";\n }\n}\n\n// Returns a fetch-shaped function that transparently handles HTTP 402:\n// 1. Call the wrapped fetch.\n// 2. If status !== 402, return the response unchanged.\n// 3. Otherwise parse the payment requirement, call `fuel.spend()`, then\n// retry the original request with `X-Payment: <signature>` set.\n//\n// The retry is a single attempt — a second 402 propagates to the caller so a\n// misbehaving server can't drain the vault in a loop.\nexport function paymentRequired(\n fuel: AgentFuel,\n opts: PaymentRequiredOptions = {},\n): FetchLike {\n const baseFetch: FetchLike = opts.fetch ?? ((input, init) => fetch(input, init));\n\n return async (input, init) => {\n const first = await baseFetch(input, init);\n if (first.status !== 402) return first;\n\n const req = await parseRequirement(first);\n if (opts.onPaymentRequired) await opts.onPaymentRequired(req);\n\n const { signature } = await fuel.spend({\n service: req.recipient,\n amountUsdc: req.amountUsdc,\n });\n if (opts.onPaid) await opts.onPaid(signature, req);\n\n const headers = new Headers(init?.headers);\n headers.set(PAYMENT_HEADER, signature);\n return baseFetch(input, { ...init, headers });\n };\n}\n\nasync function parseRequirement(res: Response): Promise<PaymentRequirement> {\n const header = res.headers.get(HEADER);\n if (header) return parseJson(header);\n\n let bodyText: string;\n try {\n bodyText = await res.clone().text();\n } catch {\n throw new PaymentParseError(`402 response has no ${HEADER} header and the body is unreadable`);\n }\n if (!bodyText.trim()) {\n throw new PaymentParseError(`402 response has no ${HEADER} header and an empty body`);\n }\n return parseJson(bodyText);\n}\n\nfunction parseJson(text: string): PaymentRequirement {\n let obj: unknown;\n try {\n obj = JSON.parse(text);\n } catch {\n throw new PaymentParseError(`payment payload is not valid JSON: ${truncate(text)}`);\n }\n if (typeof obj !== \"object\" || obj === null) {\n throw new PaymentParseError(`payment payload is not an object`);\n }\n const r = obj as Record<string, unknown>;\n\n const recipient = stringField(r, \"recipient\") ?? stringField(r, \"payTo\");\n if (!recipient) {\n throw new PaymentParseError(`payment payload missing 'recipient' or 'payTo'`);\n }\n\n const amount =\n numericField(r, \"amountUsdc\") ?? numericField(r, \"maxAmountRequired\");\n if (amount === null || amount <= 0) {\n throw new PaymentParseError(\n `payment payload missing positive 'amountUsdc' or 'maxAmountRequired'`,\n );\n }\n\n const out: PaymentRequirement = { recipient, amountUsdc: amount };\n const network = stringField(r, \"network\");\n if (network) out.network = network;\n const resource = stringField(r, \"resource\");\n if (resource) out.resource = resource;\n return out;\n}\n\nfunction stringField(r: Record<string, unknown>, key: string): string | undefined {\n const v = r[key];\n return typeof v === \"string\" && v.length > 0 ? v : undefined;\n}\n\nfunction numericField(r: Record<string, unknown>, key: string): number | null {\n const v = r[key];\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return null;\n}\n\nfunction truncate(s: string): string {\n return s.length > 80 ? `${s.slice(0, 80)}…` : s;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/decoders.ts","../src/errors.ts","../src/guardrails.ts","../src/live.ts","../src/idl/reputation.json","../src/idl/credit-vault.json","../src/program-ids.ts","../src/pda.ts","../src/programs.ts","../src/pay.ts","../src/request-spend.ts","../src/register-service.ts","../src/client.ts","../src/record-payment.ts","../src/x402.ts"],"names":["PublicKey","TransactionInstruction","SystemProgram","AnchorProvider","Wallet","Program","BN","Transaction","sendAndConfirmTransaction","AnchorError","Connection"],"mappings":";;;;;;AAEO,IAAM,gBAAA,GAAmB,IAAIA,iBAAA,CAAU,6CAA6C;AAEpF,IAAM,8BAA8B,IAAIA,iBAAA;AAAA,EAC7C;AACF;AAIO,IAAM,cAAA,GAAiB;AAEvB,SAAS,yBAAA,CAA0B,MAAiB,KAAA,EAA6B;AACtF,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAA,CAAU,sBAAA;AAAA,IACtB,CAAC,MAAM,QAAA,EAAS,EAAG,iBAAiB,QAAA,EAAS,EAAG,IAAA,CAAK,QAAA,EAAU,CAAA;AAAA,IAC/D;AAAA,GACF;AACA,EAAA,OAAO,GAAA;AACT;AAMO,SAAS,iDAAA,CACd,KAAA,EACA,GAAA,EACA,KAAA,EACA,IAAA,EACwB;AACxB,EAAA,OAAO,IAAIC,8BAAA,CAAuB;AAAA,IAChC,SAAA,EAAW,2BAAA;AAAA,IACX,IAAA,EAAM;AAAA,MACJ,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,MAClD,EAAE,MAAA,EAAQ,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,YAAY,IAAA,EAAK;AAAA,MACjD,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,YAAY,KAAA,EAAM;AAAA,MACpD,EAAE,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,YAAY,KAAA,EAAM;AAAA,MACnD,EAAE,MAAA,EAAQC,qBAAA,CAAc,WAAW,QAAA,EAAU,KAAA,EAAO,YAAY,KAAA,EAAM;AAAA,MACtE,EAAE,MAAA,EAAQ,gBAAA,EAAkB,QAAA,EAAU,KAAA,EAAO,YAAY,KAAA;AAAM,KACjE;AAAA,IACA,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,CAAC,CAAC,CAAC;AAAA,GACtB,CAAA;AACH;ACxBA,SAAS,QAAQ,EAAA,EAAgB;AAC/B,EAAA,OAAO,GAAG,QAAA,EAAS;AACrB;AAEA,SAAS,cAAc,KAAA,EAAyB;AAC9C,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAC7B,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA;AACzB,EAAA,OAAA,CAAQ,GAAA,KAAQ,KAAK,GAAA,GAAM,GAAA,CAAI,SAAS,CAAA,EAAG,GAAG,CAAA,EAAG,QAAA,CAAS,MAAM,CAAA;AAClE;AAEA,SAAS,gBAAgB,GAAA,EAAsD;AAC7E,EAAA,IAAI,UAAA,IAAc,KAAK,OAAO,UAAA;AAC9B,EAAA,IAAI,SAAA,IAAa,KAAK,OAAO,SAAA;AAC7B,EAAA,IAAI,MAAA,IAAU,KAAK,OAAO,MAAA;AAC1B,EAAA,IAAI,KAAA,IAAS,KAAK,OAAO,KAAA;AACzB,EAAA,OAAO,OAAA;AACT;AAEO,SAAS,iBAAA,CAAkB,QAAmB,GAAA,EAAyC;AAC5F,EAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AAClD,EAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AAClD,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA;AAC9C,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,WAAW,GAAA,CAAI,QAAA;AAAA,IACf,qBAAqB,GAAA,CAAI,iBAAA;AAAA,IACzB,eAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAA,EAAS,eAAA,GAAkB,eAAA,GAAkB,WAAA,GAAc,aAAA;AAAA,IAC3D,QAAQ,GAAA,CAAI,MAAA;AAAA,IACZ,YAAA,EAAc,OAAA,CAAQ,GAAA,CAAI,WAAW,CAAA;AAAA,IACrC,gBAAA,EAAkB,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AAAA,IAC5C,aAAA,EAAe,OAAA,CAAQ,GAAA,CAAI,YAAY;AAAA,GACzC;AACF;AAiBA,IAAM,cAAA,GAAiBF,iBAAAA,CAAU,OAAA,CAAQ,QAAA,EAAS;AAE3C,SAAS,iBAAA,CAAkB,QAAmB,GAAA,EAAyC;AAC5F,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,SAAA,EAAW,IAAI,SAAA,CAAU,MAAA,CAAO,CAAC,EAAA,KAAO,EAAA,CAAG,QAAA,EAAS,KAAM,cAAc,CAAA;AAAA,IACxE,iBAAA,EAAmB,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AAAA,IAC7C,iBAAA,EAAmB,OAAA,CAAQ,GAAA,CAAI,eAAe,CAAA;AAAA,IAC9C,mBAAA,EAAqB,OAAA,CAAQ,GAAA,CAAI,iBAAiB,CAAA;AAAA,IAClD,wBAAA,EAA0B,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA;AAAA,IAC3D,wBAAA,EAA0B,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA;AAAA,IAC3D,gBAAgB,GAAA,CAAI;AAAA,GACtB;AACF;AAEO,SAAS,qBAAA,CACd,QACA,GAAA,EACwB;AACxB,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,WAAW,GAAA,CAAI,SAAA;AAAA,IACf,IAAA,EAAM,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAAA,IAC5B,QAAA,EAAU,eAAA,CAAgB,GAAA,CAAI,QAAQ,CAAA;AAAA,IACtC,mBAAA,EAAqB,OAAA,CAAQ,GAAA,CAAI,iBAAiB,CAAA;AAAA,IAClD,0BAAA,EAA4B,OAAA,CAAQ,GAAA,CAAI,uBAAuB,CAAA;AAAA,IAC/D,QAAQ,GAAA,CAAI,MAAA;AAAA,IACZ,iBAAA,EAAmB,OAAA,CAAQ,GAAA,CAAI,eAAe,CAAA;AAAA,IAC9C,gBAAA,EAAkB,OAAA,CAAQ,GAAA,CAAI,cAAc;AAAA,GAC9C;AACF;;;ACzGO,IAAM,cAAA,GAAN,cAA6B,KAAA,CAAM;AAAA,EACxC,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,gBAAA;AAAA,EACd;AACF;AAKO,IAAM,uBAAA,GAAN,cAAsC,cAAA,CAAe;AAAA,EAC1D,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,wFAAwF,CAAA;AAC9F,IAAA,IAAA,CAAK,IAAA,GAAO,yBAAA;AAAA,EACd;AACF;AAEO,IAAM,oBAAA,GAAN,cAAmC,cAAA,CAAe;AAAA,EAC9C,OAAA;AAAA,EACT,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAE,CAAA;AACrC,IAAA,IAAA,CAAK,IAAA,GAAO,sBAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF;AAEO,IAAM,SAAA,GAAN,cAAwB,cAAA,CAAe;AAAA,EACnC,MAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACT,WAAA,CAAY,MAAA,EAAgB,GAAA,EAAa,IAAA,EAAe;AACtD,IAAA,KAAA,CAAM,CAAA,KAAA,EAAQ,MAAM,CAAA,MAAA,EAAS,GAAG,CAAA,CAAE,CAAA;AAClC,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AACF;AAOO,IAAM,gBAAA,GAAN,cAA+B,cAAA,CAAe;AAAA,EACnD,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA,EACd;AACF;AAEO,IAAM,gBAAA,GAAN,cAA+B,gBAAA,CAAiB;AAAA,EACrD,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,iBAAiB,CAAA;AACvB,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA,EACd;AACF;AAEO,IAAM,eAAA,GAAN,cAA8B,gBAAA,CAAiB;AAAA,EACpD,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,oBAAoB,CAAA;AAC1B,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AAAA,EACd;AACF;AAEO,IAAM,uBAAA,GAAN,cAAsC,gBAAA,CAAiB;AAAA,EACnD,KAAA;AAAA,EACA,MAAA;AAAA,EACT,WAAA,CAAY,QAAgB,KAAA,EAAe;AACzC,IAAA,KAAA,CAAM,CAAA,uBAAA,EAA0B,MAAM,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAA;AACnD,IAAA,IAAA,CAAK,IAAA,GAAO,yBAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AACF;AAEO,IAAM,wBAAA,GAAN,cAAuC,gBAAA,CAAiB;AAAA,EACpD,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACT,WAAA,CAAY,MAAA,EAAgB,WAAA,EAAqB,KAAA,EAAe;AAC9D,IAAA,KAAA,CAAM,0BAA0B,WAAW,CAAA,GAAA,EAAM,MAAM,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAA;AACpE,IAAA,IAAA,CAAK,IAAA,GAAO,0BAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AACF;AAEO,IAAM,0BAAA,GAAN,cAAyC,gBAAA,CAAiB;AAAA,EACtD,KAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACT,WAAA,CAAY,MAAA,EAAgB,UAAA,EAAoB,KAAA,EAAe;AAC7D,IAAA,KAAA,CAAM,4BAA4B,UAAU,CAAA,GAAA,EAAM,MAAM,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAA;AACrE,IAAA,IAAA,CAAK,IAAA,GAAO,4BAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AACF;AAEO,IAAM,mBAAA,GAAN,cAAkC,gBAAA,CAAiB;AAAA,EAC/C,OAAA;AAAA,EACT,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,QAAA,EAAW,OAAO,CAAA,gCAAA,CAAkC,CAAA;AAC1D,IAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF;AAKO,IAAM,kBAAA,GAAN,cAAiC,cAAA,CAAe;AAAA,EACrD,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;AAMO,IAAM,2BAAA,GAAN,cAA0C,kBAAA,CAAmB;AAAA,EACzD,WAAA;AAAA,EACT,YAAY,WAAA,EAAyB;AACnC,IAAA,KAAA,CAAM,+CAA+C,CAAA;AACrD,IAAA,IAAA,CAAK,IAAA,GAAO,6BAAA;AACZ,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAAA,EACrB;AACF;AAEO,IAAM,oBAAA,GAAN,cAAmC,kBAAA,CAAmB;AAAA,EAClD,OAAA;AAAA,EACT,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,QAAA,EAAW,OAAO,CAAA,mCAAA,CAAqC,CAAA;AAC7D,IAAA,IAAA,CAAK,IAAA,GAAO,sBAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF;;;AC3HO,SAAS,WAAW,IAAA,EAMlB;AACP,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAY,aAAY,GAAI,IAAA;AAE5D,EAAA,IAAI,KAAA,CAAM,MAAA,EAAQ,MAAM,IAAI,gBAAA,EAAiB;AAC7C,EAAA,IAAI,UAAA,IAAc,CAAA,EAAG,MAAM,IAAI,eAAA,EAAgB;AAE/C,EAAA,IAAI,MAAA,CAAO,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG;AAC/B,IAAA,MAAM,OAAA,GAAU,OAAO,SAAA,CAAU,IAAA,CAAK,CAAC,EAAA,KAAO,EAAA,CAAG,MAAA,CAAO,OAAO,CAAC,CAAA;AAChE,IAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,mBAAA,CAAoB,OAAA,CAAQ,UAAU,CAAA;AAAA,EAChE;AAEA,EAAA,IAAI,MAAA,CAAO,iBAAA,GAAoB,CAAA,IAAK,UAAA,GAAa,OAAO,iBAAA,EAAmB;AACzE,IAAA,MAAM,IAAI,uBAAA,CAAwB,UAAA,EAAY,MAAA,CAAO,iBAAiB,CAAA;AAAA,EACxE;AAEA,EAAA,IAAI,MAAA,CAAO,oBAAoB,CAAA,EAAG;AAChC,IAAA,MAAM,aAAA,GAAgB,WAAA,GAAc,MAAA,CAAO,wBAAA,IAA4B,cAAA;AACvE,IAAA,MAAM,WAAA,GAAc,aAAA,GAAgB,CAAA,GAAI,MAAA,CAAO,wBAAA;AAC/C,IAAA,MAAM,iBAAiB,WAAA,GAAc,UAAA;AACrC,IAAA,IAAI,cAAA,GAAiB,OAAO,iBAAA,EAAmB;AAC7C,MAAA,MAAM,IAAI,wBAAA,CAAyB,UAAA,EAAY,WAAA,EAAa,OAAO,iBAAiB,CAAA;AAAA,IACtF;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,sBAAsB,CAAA,EAAG;AAClC,IAAA,MAAM,aAAA,GAAgB,MAAM,WAAA,GAAc,UAAA;AAC1C,IAAA,IAAI,aAAA,GAAgB,OAAO,mBAAA,EAAqB;AAC9C,MAAA,MAAM,IAAI,0BAAA,CAA2B,UAAA,EAAY,KAAA,CAAM,WAAA,EAAa,OAAO,mBAAmB,CAAA;AAAA,IAChG;AAAA,EACF;AACF;;;AC1CA,IAAI,UAAA,GAA4D,IAAA;AAEhE,eAAe,gBAAA,GAA2C;AACxD,EAAA,IAAI,YAAY,OAAO,UAAA;AACvB,EAAA,MAAM,aAAc,UAAA,CAA6C,SAAA;AACjE,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,UAAA,GAAa,UAAA;AACb,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,UAAA,GAAA,CAAc,YAAY;AACxB,IAAA,MAAM,GAAA,GAAM,MAAM,OAAO,IAAI,CAAA;AAC7B,IAAA,OAAO,GAAA,CAAI,SAAA;AAAA,EACb,CAAA,GAAG;AACH,EAAA,OAAO,UAAA;AACT;AAEA,IAAM,OAAA,GAAU,CAAA;AAChB,IAAM,cAAA,GAAiB,GAAA;AAOhB,SAAS,SAAA,CAAU,KAAa,IAAA,EAAsC;AAC3E,EAAA,IAAI,MAAA,GAA8B,IAAA;AAClC,EAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,cAAA,GAAuD,IAAA;AAC3D,EAAA,IAAI,aAAA,GAA4B,YAAA;AAEhC,EAAA,SAAS,UAAU,IAAA,EAAwB;AACzC,IAAA,aAAA,GAAgB,IAAA;AAChB,IAAA,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,EACtB;AAEA,EAAA,eAAe,OAAA,GAAyB;AACtC,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,SAAA,CAAU,QAAA,KAAa,CAAA,GAAI,YAAA,GAAe,cAAc,CAAA;AACxD,IAAA,MAAM,EAAA,GAAK,MAAM,gBAAA,EAAiB;AAClC,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,MAAA,GAAS,IAAI,GAAG,GAAG,CAAA;AAEnB,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAQ,MAAM;AACpC,MAAA,QAAA,GAAW,CAAA;AACX,MAAA,SAAA,CAAU,MAAM,CAAA;AAAA,IAClB,CAAC,CAAA;AAED,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAA,EAAW,CAAC,EAAA,KAAO;AACzC,MAAA,IAAI,OAAO,EAAA,CAAG,IAAA,KAAS,YAAY,EAAA,CAAG,IAAA,CAAK,WAAW,CAAA,EAAG;AACzD,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA;AACjC,QAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA,MAClD,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,MAAM;AACrC,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,QAAA,IAAY,CAAA;AACZ,MAAA,MAAM,QAAQ,IAAA,CAAK,GAAA,CAAI,gBAAgB,GAAA,GAAQ,CAAA,KAAM,WAAW,CAAA,CAAE,CAAA;AAClE,MAAA,SAAA,CAAU,cAAc,CAAA;AACxB,MAAA,cAAA,GAAiB,WAAW,MAAM;AAChC,QAAA,KAAK,OAAA,EAAQ;AAAA,MACf,GAAG,KAAK,CAAA;AAAA,IACV,CAAC,CAAA;AAGD,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,MAAM;AAAA,IAAC,CAAC,CAAA;AAAA,EAC3C;AAEA,EAAA,KAAK,OAAA,EAAQ;AAEb,EAAA,OAAO;AAAA,IACL,KAAA,GAAc;AACZ,MAAA,KAAA,GAAQ,KAAA;AACR,MAAA,IAAI,cAAA,KAAmB,IAAA,EAAM,YAAA,CAAa,cAAc,CAAA;AACxD,MAAA,IAAI,MAAA,IAAU,MAAA,CAAO,UAAA,KAAe,OAAA,EAAS;AAC3C,QAAA,MAAA,CAAO,KAAA,CAAM,KAAM,cAAc,CAAA;AAAA,MACnC;AACA,MAAA,MAAA,GAAS,IAAA;AACT,MAAA,SAAA,CAAU,QAAQ,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,IAAI,MAAA,GAAqB;AACvB,MAAA,OAAO,aAAA;AAAA,IACT;AAAA,GACF;AACF;AAGO,SAAS,KAAA,CAAM,SAAiB,IAAA,EAAsB;AAC3D,EAAA,IAAI,OAAA,CAAQ,WAAW,UAAU,CAAA,SAAU,OAAA,CAAQ,OAAA,CAAQ,QAAA,EAAU,KAAK,CAAA,GAAI,IAAA;AAC9E,EAAA,IAAI,OAAA,CAAQ,WAAW,SAAS,CAAA,SAAU,OAAA,CAAQ,OAAA,CAAQ,OAAA,EAAS,IAAI,CAAA,GAAI,IAAA;AAC3E,EAAA,OAAO,OAAA,GAAU,IAAA;AACnB;AAMO,SAAS,gBAAA,CACd,OAAA,EACA,aAAA,EACA,IAAA,EACc;AACd,EAAA,OAAO,UAAU,KAAA,CAAM,OAAA,EAAS,gBAAgB,aAAa,CAAA,CAAE,GAAG,IAAI,CAAA;AACxE;AAEO,SAAS,cAAA,CACd,OAAA,EACA,WAAA,EACA,IAAA,EACc;AACd,EAAA,OAAO,UAAU,KAAA,CAAM,OAAA,EAAS,cAAc,WAAW,CAAA,CAAE,GAAG,IAAI,CAAA;AACpE;;;AC/HA,IAAA,kBAAA,GAAA;AAAA,EACE,OAAA,EAAW,8CAAA;AAAA,EACX,QAAA,EAAY;AAAA,IACV,IAAA,EAAQ,YAAA;AAAA,IACR,OAAA,EAAW,OAAA;AAAA,IACX,IAAA,EAAQ,OAAA;AAAA,IACR,WAAA,EAAe,yEAAA;AAAA,IACf,UAAA,EAAc;AAAA,GAChB;AAAA,EACA,YAAA,EAAgB;AAAA,IACd;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,CAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,WAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,yBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF,WACF;AAAA,UACA,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,iBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,KAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,sBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,cAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,CAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,yBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF;AACF,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,yBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,kBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,oBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,cAAA;AAAA,UACR,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,KAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,iBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,KAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,sBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,cAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,WAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,mBAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,gBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,CAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,yBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,kBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,oBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,cAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,KAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,aAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,sBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,SAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,kBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,UAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,OAAA,EAAW;AAAA,cACT,IAAA,EAAQ;AAAA;AACV;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,aAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,yBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF,WACF;AAAA,UACA,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,kBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF,WACF;AAAA,UACA,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,iBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,KAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,sBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,IAAA;AAAA,cACA;AAAA;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,oBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,SAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,kBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,WAAA;AAAA,UACR,SAAA,EAAa;AAAA,YACX;AAAA;AACF;AACF,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,GACF;AAAA,EACA,QAAA,EAAY;AAAA,IACV;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,CAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,gBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF;AACF,GACF;AAAA,EACA,MAAA,EAAU;AAAA,IACR;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,EAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,CAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,CAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,mBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF;AACF,GACF;AAAA,EACA,MAAA,EAAU;AAAA,IACR;AAAA,MACE,IAAA,EAAQ,GAAA;AAAA,MACR,IAAA,EAAQ,UAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,iBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,YAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,YAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,iBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,uBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,oBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,gBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,qBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,qBAAA;AAAA,MACR,GAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,KAAA,EAAS;AAAA,IACP;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,oBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,sBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,gCAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,oBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,oBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,oBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,uBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,sBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,gBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,sBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,oBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,sBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,oBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,kBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,MAAA;AAAA,QACR,QAAA,EAAY;AAAA,UACV;AAAA,YACE,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,mBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,sEAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,OAAA,EAAW;AAAA,gBACT,IAAA,EAAQ;AAAA;AACV;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,iBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,8EAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,OAAA,EAAW;AAAA,gBACT,IAAA,EAAQ;AAAA;AACV;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,4BAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF;AACF;AAEJ,CAAA;;;AChlDA,IAAA,oBAAA,GAAA;AAAA,EACE,OAAA,EAAW,8CAAA;AAAA,EACX,QAAA,EAAY;AAAA,IACV,IAAA,EAAQ,cAAA;AAAA,IACR,OAAA,EAAW,OAAA;AAAA,IACX,IAAA,EAAQ,OAAA;AAAA,IACR,WAAA,EAAe,4EAAA;AAAA,IACf,UAAA,EAAc;AAAA,GAChB;AAAA,EACA,YAAA,EAAgB;AAAA,IACd;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,qBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,uBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,qBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF;AACF,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,OAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,SAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,uBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,aAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,CAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,CAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV,aACF;AAAA,YACA,OAAA,EAAW;AAAA,cACT,IAAA,EAAQ,OAAA;AAAA,cACR,KAAA,EAAS;AAAA,gBACP,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,EAAA;AAAA,gBACA,GAAA;AAAA,gBACA,EAAA;AAAA,gBACA,EAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,EAAA;AAAA,gBACA,EAAA;AAAA,gBACA,EAAA;AAAA,gBACA,EAAA;AAAA,gBACA,GAAA;AAAA,gBACA,EAAA;AAAA,gBACA,GAAA;AAAA,gBACA,EAAA;AAAA,gBACA,EAAA;AAAA,gBACA,EAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,EAAA;AAAA,gBACA,GAAA;AAAA,gBACA,CAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA,GAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,OAAA,EAAW;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,0BAAA;AAAA,UACR,OAAA,EAAW;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,mBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,mBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,SAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,aAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF;AACF,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,uBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,oEAAA;AAAA,YACA,oEAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA,eACV;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,qBAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,gBAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,aAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,OAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,uBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,aAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,gBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF;AACF,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF;AACF,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,uBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,uBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,yBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,oBAAA;AAAA,UACR,IAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,IAAA,EAAQ;AAAA,YACN,KAAA,EAAS;AAAA,cACP,QAAA;AAAA,cACA;AAAA;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,UAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY;AAAA,QACV;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,MAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAa;AAAA,YACX;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAO;AAAA,YACL,KAAA,EAAS;AAAA,cACP;AAAA,gBACE,IAAA,EAAQ,OAAA;AAAA,gBACR,KAAA,EAAS;AAAA,kBACP,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAQ,aAAA;AAAA,gBACR,OAAA,EAAW;AAAA;AACb;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,qBAAA;AAAA,UACR,QAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,UACE,IAAA,EAAQ,eAAA;AAAA,UACR,OAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAQ,aAAA;AAAA,UACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,GACF;AAAA,EACA,QAAA,EAAY;AAAA,IACV;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,CAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF;AACF,GACF;AAAA,EACA,MAAA,EAAU;AAAA,IACR;AAAA,MACE,IAAA,EAAQ,SAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,WAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,gBAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,OAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,WAAA;AAAA,MACR,aAAA,EAAiB;AAAA,QACf,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF;AACF,GACF;AAAA,EACA,MAAA,EAAU;AAAA,IACR;AAAA,MACE,IAAA,EAAQ,GAAA;AAAA,MACR,IAAA,EAAQ,UAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,YAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,QAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,gBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,oBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,qBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,uBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,eAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,WAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,iBAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,2BAAA;AAAA,MACR,GAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,KAAA,EAAS;AAAA,IACP;AAAA,MACE,IAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,mEAAA;AAAA,cACA,6DAAA;AAAA,cACA,mEAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,0EAAA;AAAA,QACA,yEAAA;AAAA,QACA,wEAAA;AAAA,QACA,4EAAA;AAAA,QACA,EAAA;AAAA,QACA,wEAAA;AAAA,QACA,qEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,qEAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,gBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,gBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,QAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,QAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,0BAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,0BAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,gBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ;AAAA,cACN,KAAA,EAAS;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,gBAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,aAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,eAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,qBAAA;AAAA,YACR,IAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ;AAAA;AACV;AACF;AACF;AACF;AAEJ,CAAA;;;ACjtDO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,IAAIA,iBAAAA,CAAU,kBAAA,CAAc,OAAO,CAAA;AAAA,EAC/C,WAAA,EAAa,IAAIA,iBAAAA,CAAU,oBAAA,CAAe,OAAO;AACnD;;;ACHO,SAAS,SAAS,KAAA,EAA6B;AACpD,EAAA,OAAO,KAAA,YAAiBA,iBAAAA,GAAY,KAAA,GAAQ,IAAIA,kBAAU,KAAK,CAAA;AACjE;AAEO,SAAS,QAAA,CAAS,OAAkB,KAAA,EAA6B;AACtE,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAAA,CAAU,sBAAA;AAAA,IACtB,CAAC,MAAA,CAAO,IAAA,CAAK,OAAO,GAAG,QAAA,CAAS,KAAK,CAAA,CAAE,QAAA,EAAS,EAAG,QAAA,CAAS,KAAK,CAAA,CAAE,UAAU,CAAA;AAAA,IAC7E,WAAA,CAAY;AAAA,GACd;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAAA,CAAU,sBAAA;AAAA,IACtB,CAAC,OAAO,IAAA,CAAK,QAAQ,GAAG,QAAA,CAAS,KAAK,CAAA,CAAE,QAAA,EAAU,CAAA;AAAA,IAClD,WAAA,CAAY;AAAA,GACd;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,mBAAmB,gBAAA,EAAwC;AACzE,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAAA,CAAU,sBAAA;AAAA,IACtB,CAAC,OAAO,IAAA,CAAK,SAAS,GAAG,QAAA,CAAS,gBAAgB,CAAA,CAAE,QAAA,EAAU,CAAA;AAAA,IAC9D,WAAA,CAAY;AAAA,GACd;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,gBAAgB,KAAA,EAA6B;AAC3D,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAAA,CAAU,sBAAA;AAAA,IACtB,CAAC,OAAO,IAAA,CAAK,OAAO,GAAG,QAAA,CAAS,KAAK,CAAA,CAAE,QAAA,EAAU,CAAA;AAAA,IACjD,WAAA,CAAY;AAAA,GACd;AACA,EAAA,OAAO,GAAA;AACT;AAKO,SAAS,mBAAA,CACd,cACA,eAAA,EACW;AACX,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAAA,CAAU,sBAAA;AAAA,IACtB;AAAA,MACE,MAAA,CAAO,KAAK,MAAM,CAAA;AAAA,MAClB,QAAA,CAAS,YAAY,CAAA,CAAE,QAAA,EAAS;AAAA,MAChC,QAAA,CAAS,eAAe,CAAA,CAAE,QAAA;AAAS,KACrC;AAAA,IACA,WAAA,CAAY;AAAA,GACd;AACA,EAAA,OAAO,GAAA;AACT;AAMO,SAAS,eAAA,CAAgB,OAAkB,KAAA,EAAmC;AACnF,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA;AAE/B,EAAA,QAAA,CAAS,iBAAiB,OAAO,KAAA,KAAU,WAAW,KAAA,GAAQ,MAAA,CAAO,KAAK,CAAC,CAAA;AAC3E,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAAA,CAAU,sBAAA;AAAA,IACtB,CAAC,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,EAAG,SAAS,KAAK,CAAA,CAAE,QAAA,EAAS,EAAG,QAAQ,CAAA;AAAA,IAC7D,WAAA,CAAY;AAAA,GACd;AACA,EAAA,OAAO,GAAA;AACT;AAMO,SAAS,eAAe,WAAA,EAAoC;AACjE,EAAA,IAAI,WAAA,CAAY,WAAW,EAAA,EAAI;AAC7B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2CAAA,EAA8C,WAAA,CAAY,MAAM,CAAA,CAAE,CAAA;AAAA,EACpF;AACA,EAAA,MAAM,CAAC,GAAG,CAAA,GAAIA,iBAAAA,CAAU,sBAAA;AAAA,IACtB,CAAC,OAAO,IAAA,CAAK,SAAS,GAAG,MAAA,CAAO,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,IACjD,WAAA,CAAY;AAAA,GACd;AACA,EAAA,OAAO,GAAA;AACT;ACyIO,SAAS,aAAA,CAAc,YAAwB,OAAA,EAAkC;AACtF,EAAA,OAAO,IAAIG,sBAAe,UAAA,EAAY,IAAIC,cAAO,OAAO,CAAA,EAAGD,qBAAA,CAAe,cAAA,EAAgB,CAAA;AAC5F;AAEO,SAAS,mBAAmB,QAAA,EAA8C;AAC/E,EAAA,OAAO,IAAIE,cAAA,CAAQ,oBAAA,EAAkC,QAAQ,CAAA;AAC/D;AAEO,SAAS,kBAAkB,QAAA,EAA6C;AAC7E,EAAA,OAAO,IAAIA,cAAA,CAAQ,kBAAA,EAAiC,QAAQ,CAAA;AAC9D;;;AC5JA,eAAsB,IAAI,IAAA,EAAmC;AAC3D,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,UAAA,EAAY,YAAW,GAAI,IAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAEjC,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,MAAM,IAAI,eAAA,EAAgB;AAAA,EAC5B;AACA,EAAA,IAAI,IAAA,CAAK,WAAA,CAAY,MAAA,KAAW,EAAA,EAAI;AAClC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,uCAAA,EAA0C,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA;AAAA,KACnE;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,KAAA,EAAO,KAAA,CAAM,SAAS,CAAA;AACjD,EAAA,MAAM,UAAA,GAAa,UAAU,SAAS,CAAA;AAItC,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,UAAA,EAAY,KAAK,CAAA;AAChD,EAAA,MAAM,EAAA,GAAK,mBAAmB,QAAQ,CAAA;AACtC,EAAA,MAAM,GAAA,GAAM,kBAAkB,QAAQ,CAAA;AAEtC,EAAA,MAAM,CAAC,QAAA,EAAU,SAAA,EAAW,WAAW,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IAC3D,EAAA,CAAG,OAAA,CAAQ,WAAA,CAAY,aAAA,CAAc,SAAS,CAAA;AAAA,IAC9C,EAAA,CAAG,OAAA,CAAQ,WAAA,CAAY,aAAA,CAAc,UAAU,CAAA;AAAA,IAC/C,WAAW,OAAA;AAAQ,GACpB,CAAA;AACD,EAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,oBAAA,CAAqB,SAAA,CAAU,UAAU,CAAA;AAClE,EAAA,IAAI,CAAC,SAAA,EAAW,MAAM,IAAI,oBAAA,CAAqB,UAAA,CAAW,UAAU,CAAA;AACpE,EAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,SAAA,EAAW,QAAQ,CAAA;AACnD,EAAA,MAAM,MAAA,GAAS,iBAAA,CAAkB,UAAA,EAAY,SAAS,CAAA;AACtD,EAAA,UAAA,CAAW;AAAA,IACT,KAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAS,OAAA,CAAQ,SAAA;AAAA,IACjB,UAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,mBAAA,GAAsB,yBAAA;AAAA,IAC1B,KAAA,CAAM,SAAA;AAAA,IACN,OAAA,CAAQ;AAAA,GACV;AACA,EAAA,MAAM,WAAA,GAAc,iDAAA;AAAA,IAClB,KAAA,CAAM,SAAA;AAAA,IACN,mBAAA;AAAA,IACA,OAAA,CAAQ,SAAA;AAAA,IACR,KAAA,CAAM;AAAA,GACR;AAEA,EAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,KAAA,CAAM,SAAS,CAAA;AACpD,EAAA,MAAM,eAAA,GAAkB,kBAAA,CAAmB,OAAA,CAAQ,SAAS,CAAA;AAC5D,EAAA,MAAM,IAAA,GAAO,mBAAA,CAAoB,YAAA,EAAc,eAAe,CAAA;AAC9D,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,IAAA,CAAK,WAAW,CAAA;AAQ/C,EAAA,MAAM,YAAA,GAAe,GAAG,OAAA,CAAQ,KAAA,CAAM,IAAIC,SAAA,CAAG,UAAU,CAAC,CAAA,CAAE,QAAA,CAAS;AAAA,IACjE,OAAO,KAAA,CAAM,SAAA;AAAA,IACb,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,UAAA;AAAA,IACR,mBAAmB,KAAA,CAAM,mBAAA;AAAA,IACzB,mBAAA;AAAA,IACA,YAAA,EAAc;AAAA,GACf,CAAA;AACD,EAAA,MAAM,aAAA,GAAgB,GAAA,CAAI,OAAA,CACvB,aAAA,CAAc,IAAIA,SAAA,CAAG,UAAU,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,CAClD,QAAA,CAAS;AAAA,IACR,SAAS,OAAA,CAAQ,SAAA;AAAA,IACjB,YAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA,EAAkB,IAAA;AAAA,IAClB,WAAA,EAAa,OAAA;AAAA,IACb,eAAeJ,qBAAAA,CAAc;AAAA,GAC9B,CAAA;AACH,EAAA,MAAM,OAAA,GAAU,MAAM,YAAA,CAAa,WAAA,EAAY;AAC/C,EAAA,MAAM,QAAA,GAAW,MAAM,aAAA,CAAc,WAAA,EAAY;AAEjD,EAAA,MAAM,KAAK,IAAIK,mBAAA,GAAc,GAAA,CAAI,WAAA,EAAa,SAAS,QAAQ,CAAA;AAC/D,EAAA,IAAI;AACF,IAAA,MAAM,YAAY,MAAMC,iCAAA;AAAA,MACtB,UAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAC,OAAO,OAAO,CAAA;AAAA,MACf,EAAE,YAAY,WAAA;AAAY,KAC5B;AACA,IAAA,OAAO,EAAE,SAAA,EAAU;AAAA,EACrB,SAAS,GAAA,EAAK;AACZ,IAAA,MAAM,YAAY,GAAA,EAAK;AAAA,MACrB,SAAS,OAAA,CAAQ,SAAA;AAAA,MACjB,UAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAa,IAAA,CAAK;AAAA,KACnB,CAAA;AAAA,EACH;AACF;AAEA,SAAS,WAAA,CACP,KACA,GAAA,EAOS;AACT,EAAA,MAAM,UAAU,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,OAAO,GAAG,CAAA;AAC/D,EAAA,IAAI,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA,EAAG;AACnC,IAAA,OAAO,IAAI,2BAAA,CAA4B,GAAA,CAAI,WAAW,CAAA;AAAA,EACxD;AACA,EAAA,IAAI,EAAE,GAAA,YAAeC,kBAAA,CAAA,EAAc,OAAO,GAAA;AAI1C,EAAA,QAAQ,GAAA,CAAI,KAAA,CAAM,SAAA,CAAU,MAAA;AAAQ,IAClC,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,eAAA,EAAgB;AAAA,IAC7B,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,gBAAA,EAAiB;AAAA,IAC9B,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,mBAAA,CAAoB,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AAAA,IACvD,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,uBAAA,CAAwB,GAAA,CAAI,UAAA,EAAY,GAAA,CAAI,OAAO,iBAAiB,CAAA;AAAA,IACjF,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,wBAAA;AAAA,QACT,GAAA,CAAI,UAAA;AAAA,QACJ,IAAI,MAAA,CAAO,wBAAA;AAAA,QACX,IAAI,MAAA,CAAO;AAAA,OACb;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,0BAAA;AAAA,QACT,GAAA,CAAI,UAAA;AAAA,QACJ,IAAI,KAAA,CAAM,WAAA;AAAA,QACV,IAAI,MAAA,CAAO;AAAA,OACb;AAAA;AAAA,IAEF,KAAK,GAAA;AACH,MAAA,OAAO,IAAI,mBAAmB,2BAA2B,CAAA;AAAA,IAC3D,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,oBAAA,CAAqB,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AAAA,IACxD;AACE,MAAA,OAAO,GAAA;AAAA;AAEb;AC3LA,eAAsB,aACpB,IAAA,EAC6B;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,UAAA,EAAW,GAAI,IAAA;AAC1C,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AACjC,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA;AAErC,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,EACxD;AAEA,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,KAAA,EAAO,KAAA,CAAM,SAAS,CAAA;AACjD,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,UAAA,EAAY,KAAK,CAAA;AAChD,EAAA,MAAM,EAAA,GAAK,mBAAmB,QAAQ,CAAA;AAItC,EAAA,MAAM,WAAW,MAAM,EAAA,CAAG,OAAA,CAAQ,WAAA,CAAY,cAAc,SAAS,CAAA;AACrE,EAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,oBAAA,CAAqB,SAAA,CAAU,UAAU,CAAA;AAClE,EAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,SAAA,EAAW,QAAQ,CAAA;AACnD,EAAA,MAAM,QAAQ,KAAA,CAAM,aAAA;AACpB,EAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,SAAA,EAAW,KAAK,CAAA;AACrD,EAAA,MAAM,mBAAA,GAAsB,yBAAA;AAAA,IAC1B,KAAA,CAAM,SAAA;AAAA,IACN;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GAAY,MAAM,EAAA,CAAG,OAAA,CACxB,YAAA,CAAa,IAAIH,SAAAA,CAAG,UAAU,CAAC,CAAA,CAC/B,QAAA,CAAS;AAAA,IACR,OAAO,KAAA,CAAM,SAAA;AAAA,IACb,KAAA,EAAO,SAAA;AAAA,IACP,mBAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAeJ,qBAAAA,CAAc;AAAA,GAC9B,CAAA,CACA,OAAA,CAAQ,CAAC,KAAK,CAAC,EACf,GAAA,EAAI;AAEP,EAAA,OAAO,EAAE,SAAA,EAAW,YAAA,EAAc,KAAA,EAAM;AAC1C;AChEA,IAAM,UAAA,GAAa,EAAA;AACnB,IAAM,SAAA,GAAY,GAAA;AAuBlB,eAAsB,gBACpB,IAAA,EACgC;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,UAAA,EAAW,GAAI,IAAA;AAEzC,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,EAC3D;AACA,EAAA,IAAI,OAAO,UAAA,CAAW,IAAA,CAAK,IAAA,EAAM,MAAM,IAAI,UAAA,EAAY;AACrD,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,8BAAA,EAAiC,UAAU,CAAA,YAAA,EAAe,MAAA,CAAO,WAAW,IAAA,CAAK,IAAA,EAAM,MAAM,CAAC,CAAA,CAAA;AAAA,KAChG;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,KAAK,UAAA,IAAc,EAAA;AAC/B,EAAA,IAAI,MAAA,CAAO,UAAA,CAAW,GAAA,EAAK,MAAM,IAAI,SAAA,EAAW;AAC9C,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,uCAAuC,SAAS,CAAA,YAAA,EAAe,OAAO,UAAA,CAAW,GAAA,EAAK,MAAM,CAAC,CAAA,CAAA;AAAA,KAC/F;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,OAAA,CAAQ,SAAS,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,UAAA,EAAY,OAAO,CAAA;AAClD,EAAA,MAAM,GAAA,GAAM,kBAAkB,QAAQ,CAAA;AAEtC,EAAA,MAAM,SAAA,GAAY,MAAM,GAAA,CAAI,OAAA,CACzB,eAAA;AAAA,IACC,SAAA,CAAU,IAAA,CAAK,IAAA,EAAM,UAAU,CAAA;AAAA,IAC/B,WAAA,CAAY,KAAK,QAAQ,CAAA;AAAA,IACzB,SAAA,CAAU,KAAK,SAAS;AAAA,IAEzB,QAAA,CAAS;AAAA,IACR,SAAS,OAAA,CAAQ,SAAA;AAAA,IACjB,SAAS,OAAA,CAAQ,SAAA;AAAA,IACjB,eAAA,EAAiB,QAAA;AAAA,IACjB,eAAeA,qBAAAA,CAAc;AAAA,GAC9B,EACA,OAAA,CAAQ,CAAC,SAAS,OAAO,CAAC,EAC1B,GAAA,EAAI;AAEP,EAAA,OAAO,EAAE,SAAA,EAAU;AACrB;AAEA,SAAS,SAAA,CAAU,GAAW,MAAA,EAA0B;AACtD,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAC/B,EAAA,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,MAAM,CAAA;AACtB,EAAA,OAAO,KAAA,CAAM,KAAK,GAAG,CAAA;AACvB;AAEA,SAAS,YAAY,CAAA,EAAwC;AAE3D,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,UAAA;AACH,MAAA,OAAO,EAAE,QAAA,EAAU,EAAC,EAAE;AAAA,IACxB,KAAK,SAAA;AACH,MAAA,OAAO,EAAE,OAAA,EAAS,EAAC,EAAE;AAAA,IACvB,KAAK,MAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,EAAC,EAAE;AAAA,IACpB,KAAK,KAAA;AACH,MAAA,OAAO,EAAE,GAAA,EAAK,EAAC,EAAE;AAAA,IACnB,KAAK,OAAA;AACH,MAAA,OAAO,EAAE,KAAA,EAAO,EAAC,EAAE;AAAA;AAEzB;;;ACNA,IAAM,gBAAA,GAAmB,uBAAA;AAElB,IAAM,YAAN,MAAgB;AAAA,EACZ,KAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EAED,YAAA;AAAA,EACA,WAAA;AAAA,EAER,YAAY,IAAA,EAAwB;AAClC,IAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AAClB,IAAA,IAAA,CAAK,UAAU,IAAA,CAAK,OAAA;AACpB,IAAA,IAAA,CAAK,UAAA,GACH,OAAO,IAAA,CAAK,GAAA,KAAQ,QAAA,GAAW,IAAIQ,kBAAAA,CAAW,IAAA,CAAK,GAAA,EAAK,WAAW,CAAA,GAAI,IAAA,CAAK,GAAA;AAC9E,IAAA,IAAA,CAAK,OAAA,GAAU,KAAK,OAAA,IAAW,gBAAA;AAC/B,IAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA,GAAI,MAAA;AAAA,EACnD;AAAA,EAEA,IAAI,WAAA,GAAyB;AAC3B,IAAA,OAAO,KAAK,KAAA,CAAM,SAAA;AAAA,EACpB;AAAA,EAEA,IAAY,WAAA,GAAkC;AAC5C,IAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACtB,MAAA,IAAA,CAAK,eAAe,kBAAA,CAAmB,aAAA,CAAc,KAAK,UAAA,EAAY,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,IACnF;AACA,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA,EAEA,IAAY,UAAA,GAAgC;AAC1C,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,MAAA,IAAA,CAAK,cAAc,iBAAA,CAAkB,aAAA,CAAc,KAAK,UAAA,EAAY,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AAAA,EAEQ,aAAa,QAAA,EAAiC;AACpD,IAAA,MAAM,KAAA,GAAQ,YAAY,IAAA,CAAK,KAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,uBAAA,EAAwB;AAC9C,IAAA,OAAO,SAAS,KAAK,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,SAAS,KAAA,EAA8C;AAC3D,IAAA,MAAM,MAAA,GAAS,KAAA,GAAQ,QAAA,CAAS,KAAK,IAAI,IAAA,CAAK,WAAA;AAC9C,IAAA,MAAM,QAAA,GAAW,OAAO,QAAA,EAAS;AACjC,IAAA,MAAM,GAAA,GAAM,GAAG,IAAA,CAAK,OAAA,CAAQ,QAAQ,KAAA,EAAO,EAAE,CAAC,CAAA,YAAA,EAAe,QAAQ,CAAA,CAAA;AACrE,IAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,GAAG,CAAA;AAC3B,IAAA,IAAI,IAAI,MAAA,KAAW,GAAA,EAAK,MAAM,IAAI,qBAAqB,QAAQ,CAAA;AAC/D,IAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,MAAM,IAAI,SAAA,CAAU,GAAA,CAAI,MAAA,EAAQ,GAAA,EAAK,MAAM,QAAA,CAAS,GAAG,CAAC,CAAA;AACrE,IAAA,OAAQ,MAAM,IAAI,IAAA,EAAK;AAAA,EACzB;AAAA,EAEA,MAAM,gBAAgB,GAAA,EAA6C;AACjE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,KAAK,CAAA;AAC1C,IAAA,MAAM,QAAQ,GAAA,EAAK,KAAA,GAAQ,SAAS,GAAA,CAAI,KAAK,IAAI,IAAA,CAAK,WAAA;AACtD,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,KAAA,EAAO,KAAK,CAAA;AACjC,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,YAAY,OAAA,CAAQ,WAAA,CAAY,cAAc,GAAG,CAAA;AACxE,IAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,oBAAA,CAAqB,GAAA,CAAI,UAAU,CAAA;AACvD,IAAA,OAAO,iBAAA,CAAkB,KAAK,GAAG,CAAA;AAAA,EACnC;AAAA,EAEA,MAAM,UAAU,GAAA,EAA6C;AAC3D,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,KAAK,CAAA;AAC1C,IAAA,MAAM,QAAQ,GAAA,EAAK,KAAA,GAAQ,SAAS,GAAA,CAAI,KAAK,IAAI,IAAA,CAAK,WAAA;AACtD,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,EAAO,KAAK,CAAA;AACnC,IAAA,MAAM,GAAA,GAAM,UAAU,KAAK,CAAA;AAC3B,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,YAAY,OAAA,CAAQ,WAAA,CAAY,cAAc,GAAG,CAAA;AACxE,IAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,oBAAA,CAAqB,GAAA,CAAI,UAAU,CAAA;AACvD,IAAA,OAAO,iBAAA,CAAkB,KAAK,GAAG,CAAA;AAAA,EACnC;AAAA,EAEA,MAAM,aAAa,gBAAA,EAA8D;AAC/E,IAAA,MAAM,GAAA,GAAM,mBAAmB,gBAAgB,CAAA;AAC/C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,WAAW,OAAA,CAAQ,eAAA,CAAgB,cAAc,GAAG,CAAA;AAC3E,IAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,oBAAA,CAAqB,GAAA,CAAI,UAAU,CAAA;AACvD,IAAA,OAAO,qBAAA,CAAsB,KAAK,GAAG,CAAA;AAAA,EACvC;AAAA,EAEA,MAAM,MAAM,IAAA,EAAuC;AACjD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA;AAC1C,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA;AACrC,IAAA,MAAM,aAAa,IAAA,CAAK,UAAA;AAExB,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,eAAA,CAAgB,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,WAAA,EAAa,CAAA;AAC3E,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,WAAA,EAAa,CAAA;AACtE,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,UAAA,CAAW,OAAA,EAAQ;AAElD,IAAA,UAAA,CAAW,EAAE,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAY,aAAa,CAAA;AAE9D,IAAA,MAAM,mBAAA,GAAsB,yBAAA,CAA0B,KAAA,CAAM,SAAA,EAAW,OAAO,CAAA;AAC9E,IAAA,MAAM,WAAA,GAAc,iDAAA;AAAA,MAClB,IAAA,CAAK,WAAA;AAAA,MACL,mBAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA,CAAM;AAAA,KACR;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,WAAA,CAAY,OAAA,CACtC,KAAA,CAAM,IAAIJ,SAAAA,CAAG,UAAU,CAAC,CAAA,CACxB,QAAA,CAAS;AAAA,QACR,OAAO,IAAA,CAAK,WAAA;AAAA,QACZ,OAAO,KAAA,CAAM,MAAA;AAAA,QACb,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,mBAAmB,KAAA,CAAM,mBAAA;AAAA,QACzB,mBAAA;AAAA,QACA,YAAA,EAAc;AAAA,OACf,CAAA,CACA,eAAA,CAAgB,CAAC,WAAW,CAAC,CAAA,CAC7B,OAAA,CAAQ,CAAC,IAAA,CAAK,KAAK,CAAC,EACpB,GAAA,EAAI;AACP,MAAA,OAAO,EAAE,SAAA,EAAU;AAAA,IACrB,SAAS,GAAA,EAAK;AACZ,MAAA,MAAM,cAAc,GAAA,EAAK,EAAE,SAAS,UAAA,EAAY,KAAA,EAAO,QAAQ,CAAA;AAAA,IACjE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,IACJ,IAAA,EACoB;AACpB,IAAA,OAAO,GAAA,CAAc;AAAA,MACnB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,KAAA,EAAO,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA;AAAA,MACnC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,YAAY,IAAA,CAAK;AAAA,KAClB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aACJ,IAAA,EAC6B;AAC7B,IAAA,OAAO,YAAA,CAAuB;AAAA,MAC5B,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,KAAA,EAAO,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA;AAAA,MACnC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,YAAY,IAAA,CAAK;AAAA,KAClB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBACJ,IAAA,EACgC;AAChC,IAAA,OAAO,gBAA0B,EAAE,GAAG,MAAM,UAAA,EAAY,IAAA,CAAK,YAAY,CAAA;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,YAAA,GAA+C;AACnD,IAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,IAAA,CAAK,WAAW,CAAA;AAChD,IAAA,MAAM,YAAY,MAAM,IAAA,CAAK,WAAW,OAAA,CACrC,YAAA,GACA,QAAA,CAAS;AAAA,MACR,QAAQ,IAAA,CAAK,WAAA;AAAA,MACb,YAAA,EAAc;AAAA,KACf,EACA,OAAA,CAAQ,CAAC,KAAK,KAAK,CAAC,EACpB,GAAA,EAAI;AACP,IAAA,OAAO,EAAE,SAAA,EAAU;AAAA,EACrB;AAAA,EAEA,OAAA,CACE,UACA,OAAA,EACc;AACd,IAAA,MAAM,SAAS,OAAA,EAAS,KAAA,GAAQ,SAAS,OAAA,CAAQ,KAAK,IAAI,IAAA,CAAK,WAAA;AAC/D,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,OAAA,EAAS,cAAc,MAAA,CAAO,QAAA,EAAU,CAAA,CAAE,CAAA;AACjE,IAAA,MAAM,OAAA,GAAiG;AAAA,MACrG,OAAA,EAAS;AAAA,KACX;AACA,IAAA,IAAI,OAAA,EAAS,QAAA,EAAU,OAAA,CAAQ,QAAA,GAAW,OAAA,CAAQ,QAAA;AAClD,IAAA,OAAO,SAAA,CAAU,KAAK,OAAO,CAAA;AAAA,EAC/B;AACF;AAMA,SAAS,aAAA,CACP,KACA,GAAA,EAMS;AACT,EAAA,IAAI,EAAE,GAAA,YAAeG,kBAAAA,CAAAA,EAAc,OAAO,GAAA;AAC1C,EAAA,QAAQ,GAAA,CAAI,KAAA,CAAM,SAAA,CAAU,MAAA;AAAQ,IAClC,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,eAAA,EAAgB;AAAA,IAC7B,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,gBAAA,EAAiB;AAAA,IAC9B,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,mBAAA,CAAoB,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AAAA,IACvD,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,uBAAA,CAAwB,GAAA,CAAI,UAAA,EAAY,GAAA,CAAI,OAAO,iBAAiB,CAAA;AAAA,IACjF,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,wBAAA;AAAA,QACT,GAAA,CAAI,UAAA;AAAA,QACJ,IAAI,MAAA,CAAO,wBAAA;AAAA,QACX,IAAI,MAAA,CAAO;AAAA,OACb;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,0BAAA;AAAA,QACT,GAAA,CAAI,UAAA;AAAA,QACJ,IAAI,KAAA,CAAM,WAAA;AAAA,QACV,IAAI,MAAA,CAAO;AAAA,OACb;AAAA,IACF;AACE,MAAA,OAAO,GAAA;AAAA;AAEb;AAEA,eAAe,SAAS,GAAA,EAA4C;AAClE,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,IAAI,IAAA,EAAK;AAAA,EACxB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;ACjSA,eAAsB,cACpB,IAAA,EAC8B;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,UAAA,EAAW,GAAI,IAAA;AAC5C,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAEvC,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,EACzD;AACA,EAAA,IAAI,IAAA,CAAK,WAAA,CAAY,MAAA,KAAW,EAAA,EAAI;AAClC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,iDAAA,EAAoD,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA;AAAA,KAC7E;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,UAAA,EAAY,OAAO,CAAA;AAClD,EAAA,MAAM,OAAA,GAAU,kBAAkB,QAAQ,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAe,gBAAgB,WAAW,CAAA;AAChD,EAAA,MAAM,eAAA,GAAkB,kBAAA,CAAmB,OAAA,CAAQ,SAAS,CAAA;AAC5D,EAAA,MAAM,IAAA,GAAO,mBAAA,CAAoB,YAAA,EAAc,eAAe,CAAA;AAC9D,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,IAAA,CAAK,WAAW,CAAA;AAE/C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,MAAM,OAAA,CAAQ,OAAA,CAC7B,aAAA,CAAc,IAAIH,SAAAA,CAAG,UAAU,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,CAClD,QAAA,CAAS;AAAA,MACR,SAAS,OAAA,CAAQ,SAAA;AAAA,MACjB,YAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA,EAAkB,IAAA;AAAA,MAClB,WAAA,EAAa,OAAA;AAAA,MACb,eAAeJ,qBAAAA,CAAc;AAAA,KAC9B,CAAA,CACA,OAAA,CAAQ,CAAC,OAAO,CAAC,EACjB,GAAA,EAAI;AACP,IAAA,OAAO,EAAE,SAAA,EAAU;AAAA,EACrB,SAAS,GAAA,EAAK;AACZ,IAAA,MAAM,qBAAA,CAAsB,GAAA,EAAK,IAAA,CAAK,WAAW,CAAA;AAAA,EACnD;AACF;AAOA,SAAS,qBAAA,CAAsB,KAAc,WAAA,EAAkC;AAG7E,EAAA,MAAM,UAAU,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,OAAO,GAAG,CAAA;AAC/D,EAAA,IAAI,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA,EAAG;AACnC,IAAA,OAAO,IAAI,4BAA4B,WAAW,CAAA;AAAA,EACpD;AACA,EAAA,IAAI,EAAE,GAAA,YAAeO,kBAAAA,CAAAA,EAAc,OAAO,GAAA;AAC1C,EAAA,QAAQ,GAAA,CAAI,KAAA,CAAM,SAAA,CAAU,MAAA;AAAQ,IAClC,KAAK,GAAA;AACH,MAAA,OAAO,IAAI,mBAAmB,2BAA2B,CAAA;AAAA,IAC3D,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,oBAAA;AAAA,QACT,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,QAAA,EAAS,IAAK;AAAA,OAClC;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,IAAI,eAAA,EAAgB;AAAA,IAC7B;AACE,MAAA,OAAO,GAAA;AAAA;AAEb;;;ACjFA,IAAM,MAAA,GAAS,oBAAA;AACf,IAAM,cAAA,GAAiB,WAAA;AAEhB,IAAM,iBAAA,GAAN,cAAgC,cAAA,CAAe;AAAA,EACpD,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,mBAAA;AAAA,EACd;AACF;AAUO,SAAS,eAAA,CACd,IAAA,EACA,IAAA,GAA+B,EAAC,EACrB;AACX,EAAA,MAAM,SAAA,GAAuB,KAAK,KAAA,KAAU,CAAC,OAAO,IAAA,KAAS,KAAA,CAAM,OAAO,IAAI,CAAA,CAAA;AAE9E,EAAA,OAAO,OAAO,OAAO,IAAA,KAAS;AAC5B,IAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,CAAU,KAAA,EAAO,IAAI,CAAA;AACzC,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,GAAA,EAAK,OAAO,KAAA;AAEjC,IAAA,MAAM,GAAA,GAAM,MAAM,gBAAA,CAAiB,KAAK,CAAA;AACxC,IAAA,IAAI,IAAA,CAAK,iBAAA,EAAmB,MAAM,IAAA,CAAK,kBAAkB,GAAG,CAAA;AAE5D,IAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAM,KAAK,KAAA,CAAM;AAAA,MACrC,SAAS,GAAA,CAAI,SAAA;AAAA,MACb,YAAY,GAAA,CAAI;AAAA,KACjB,CAAA;AACD,IAAA,IAAI,KAAK,MAAA,EAAQ,MAAM,IAAA,CAAK,MAAA,CAAO,WAAW,GAAG,CAAA;AAEjD,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA;AACzC,IAAA,OAAA,CAAQ,GAAA,CAAI,gBAAgB,SAAS,CAAA;AACrC,IAAA,OAAO,UAAU,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,SAAS,CAAA;AAAA,EAC9C,CAAA;AACF;AAEA,eAAe,iBAAiB,GAAA,EAA4C;AAC1E,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA;AACrC,EAAA,IAAI,MAAA,EAAQ,OAAO,SAAA,CAAU,MAAM,CAAA;AAEnC,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI;AACF,IAAA,QAAA,GAAW,MAAM,GAAA,CAAI,KAAA,EAAM,CAAE,IAAA,EAAK;AAAA,EACpC,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,iBAAA,CAAkB,CAAA,oBAAA,EAAuB,MAAM,CAAA,kCAAA,CAAoC,CAAA;AAAA,EAC/F;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,IAAA,EAAK,EAAG;AACpB,IAAA,MAAM,IAAI,iBAAA,CAAkB,CAAA,oBAAA,EAAuB,MAAM,CAAA,yBAAA,CAA2B,CAAA;AAAA,EACtF;AACA,EAAA,OAAO,UAAU,QAAQ,CAAA;AAC3B;AAEA,SAAS,UAAU,IAAA,EAAkC;AACnD,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI;AACF,IAAA,GAAA,GAAM,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EACvB,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,iBAAA,CAAkB,CAAA,mCAAA,EAAsC,QAAA,CAAS,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACpF;AACA,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,KAAQ,IAAA,EAAM;AAC3C,IAAA,MAAM,IAAI,kBAAkB,CAAA,gCAAA,CAAkC,CAAA;AAAA,EAChE;AACA,EAAA,MAAM,CAAA,GAAI,GAAA;AAEV,EAAA,MAAM,YAAY,WAAA,CAAY,CAAA,EAAG,WAAW,CAAA,IAAK,WAAA,CAAY,GAAG,OAAO,CAAA;AACvE,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,MAAM,IAAI,kBAAkB,CAAA,8CAAA,CAAgD,CAAA;AAAA,EAC9E;AAEA,EAAA,MAAM,SACJ,YAAA,CAAa,CAAA,EAAG,YAAY,CAAA,IAAK,YAAA,CAAa,GAAG,mBAAmB,CAAA;AACtE,EAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,MAAA,IAAU,CAAA,EAAG;AAClC,IAAA,MAAM,IAAI,iBAAA;AAAA,MACR,CAAA,oEAAA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,GAAA,GAA0B,EAAE,SAAA,EAAW,UAAA,EAAY,MAAA,EAAO;AAChE,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,CAAA,EAAG,SAAS,CAAA;AACxC,EAAA,IAAI,OAAA,MAAa,OAAA,GAAU,OAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,CAAA,EAAG,UAAU,CAAA;AAC1C,EAAA,IAAI,QAAA,MAAc,QAAA,GAAW,QAAA;AAC7B,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,WAAA,CAAY,GAA4B,GAAA,EAAiC;AAChF,EAAA,MAAM,CAAA,GAAI,EAAE,GAAG,CAAA;AACf,EAAA,OAAO,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,MAAA,GAAS,IAAI,CAAA,GAAI,MAAA;AACrD;AAEA,SAAS,YAAA,CAAa,GAA4B,GAAA,EAA4B;AAC5E,EAAA,MAAM,CAAA,GAAI,EAAE,GAAG,CAAA;AACf,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,QAAA,CAAS,CAAC,GAAG,OAAO,CAAA;AACxD,EAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,IAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,SAAS,CAAA,EAAmB;AACnC,EAAA,OAAO,CAAA,CAAE,SAAS,EAAA,GAAK,CAAA,EAAG,EAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA,MAAA,CAAA,GAAM,CAAA;AAChD","file":"index.cjs","sourcesContent":["import { PublicKey, SystemProgram, TransactionInstruction } from \"@solana/web3.js\";\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\",\n);\n\n// Rolling hourly window in slots, at Solana's nominal 400 ms slot time.\n// Mirrors `SLOTS_PER_HOUR` in programs/credit_vault/src/state.rs.\nexport const SLOTS_PER_HOUR = 9_000;\n\nexport function getAssociatedTokenAddress(mint: PublicKey, owner: PublicKey): PublicKey {\n const [ata] = PublicKey.findProgramAddressSync(\n [owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n ASSOCIATED_TOKEN_PROGRAM_ID,\n );\n return ata;\n}\n\n// Variant 1 (`CreateIdempotent`) of the Associated Token Account program: a\n// no-op when the ATA already exists, otherwise creates it and assigns the\n// payer's lamports for rent. Safe to always prepend before a spend so callers\n// don't have to pre-flight whether the service has ever received USDC.\nexport function createAssociatedTokenAccountIdempotentInstruction(\n payer: PublicKey,\n ata: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n): TransactionInstruction {\n return new TransactionInstruction({\n programId: ASSOCIATED_TOKEN_PROGRAM_ID,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: ata, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n ],\n data: Buffer.from([1]),\n });\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport type BN from \"bn.js\";\nimport type {\n RawCreditVault,\n RawPendingSpend,\n RawServiceRegistry,\n RawSpendPolicy,\n} from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n PendingSpendAccount,\n ServiceCategory,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n} from \"./types.js\";\n\n// Anchor returns u64 fields as BN. `.toNumber()` throws above 2^53-1, which is\n// the safe behaviour for token amounts and slot numbers under realistic bounds.\nfunction bnToNum(bn: BN): number {\n return bn.toNumber();\n}\n\nfunction nameFromBytes(bytes: number[]): string {\n const buf = Buffer.from(bytes);\n const end = buf.indexOf(0);\n return (end === -1 ? buf : buf.subarray(0, end)).toString(\"utf8\");\n}\n\nfunction categoryFromRaw(raw: RawServiceRegistry[\"category\"]): ServiceCategory {\n if (\"dataFeed\" in raw) return \"DataFeed\";\n if (\"compute\" in raw) return \"Compute\";\n if (\"swap\" in raw) return \"Swap\";\n if (\"rpc\" in raw) return \"Rpc\";\n return \"Other\";\n}\n\nexport function decodeCreditVault(pubkey: PublicKey, raw: RawCreditVault): CreditVaultAccount {\n const total_deposited = bnToNum(raw.totalDeposited);\n const total_withdrawn = bnToNum(raw.totalWithdrawn);\n const total_spent = bnToNum(raw.totalSpent);\n const total_claimed = bnToNum(raw.totalClaimed);\n return {\n pubkey,\n owner: raw.owner,\n agent: raw.agent,\n usdc_mint: raw.usdcMint,\n vault_token_account: raw.vaultTokenAccount,\n total_deposited,\n total_withdrawn,\n total_spent,\n total_claimed,\n balance: total_deposited - total_withdrawn - total_spent + total_claimed,\n frozen: raw.frozen,\n created_slot: bnToNum(raw.createdSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n pending_count: bnToNum(raw.pendingCount),\n };\n}\n\nexport function decodePendingSpend(\n pubkey: PublicKey,\n raw: RawPendingSpend,\n): PendingSpendAccount {\n return {\n pubkey,\n vault: raw.vault,\n agent: raw.agent,\n service: raw.service,\n amount_usdc: bnToNum(raw.amountUsdc),\n nonce: bnToNum(raw.nonce),\n requested_slot: bnToNum(raw.requestedSlot),\n };\n}\n\nconst DEFAULT_PUBKEY = PublicKey.default.toBase58();\n\nexport function decodeSpendPolicy(pubkey: PublicKey, raw: RawSpendPolicy): SpendPolicyAccount {\n return {\n pubkey,\n vault: raw.vault,\n whitelist: raw.whitelist.filter((pk) => pk.toBase58() !== DEFAULT_PUBKEY),\n per_tx_limit_usdc: bnToNum(raw.perTxLimitUsdc),\n hourly_limit_usdc: bnToNum(raw.hourlyLimitUsdc),\n lifetime_limit_usdc: bnToNum(raw.lifetimeLimitUsdc),\n hourly_window_start_slot: bnToNum(raw.hourlyWindowStartSlot),\n hourly_window_spent_usdc: bnToNum(raw.hourlyWindowSpentUsdc),\n allow_post_pay: raw.allowPostPay,\n };\n}\n\nexport function decodeServiceRegistry(\n pubkey: PublicKey,\n raw: RawServiceRegistry,\n): ServiceRegistryAccount {\n return {\n pubkey,\n authority: raw.authority,\n name: nameFromBytes(raw.name),\n category: categoryFromRaw(raw.category),\n total_agents_served: bnToNum(raw.totalAgentsServed),\n total_volume_received_usdc: bnToNum(raw.totalVolumeReceivedUsdc),\n active: raw.active,\n first_active_slot: bnToNum(raw.firstActiveSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n };\n}\n","export class AgentFuelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AgentFuelError\";\n }\n}\n\n// Thrown when a method needs the vault owner but neither the constructor nor\n// the call site supplied one. The fix is to pass `owner` to `new AgentFuel`\n// or to the method itself.\nexport class OwnerNotConfiguredError extends AgentFuelError {\n constructor() {\n super(\"vault owner is not configured: pass `owner` to `new AgentFuel({...})` or to the method\");\n this.name = \"OwnerNotConfiguredError\";\n }\n}\n\nexport class AccountNotFoundError extends AgentFuelError {\n readonly account: string;\n constructor(account: string) {\n super(`account not found: ${account}`);\n this.name = \"AccountNotFoundError\";\n this.account = account;\n }\n}\n\nexport class HttpError extends AgentFuelError {\n readonly status: number;\n readonly url: string;\n readonly body: string | undefined;\n constructor(status: number, url: string, body?: string) {\n super(`HTTP ${status} from ${url}`);\n this.name = \"HttpError\";\n this.status = status;\n this.url = url;\n this.body = body;\n }\n}\n\n// Local spend guardrails — mirror `check_and_record_spend` in\n// programs/credit_vault/src/policy.rs. Thrown before the SDK constructs the\n// on-chain `spend` instruction so callers see a typed error instead of an\n// opaque simulation failure.\n\nexport class SpendPolicyError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"SpendPolicyError\";\n }\n}\n\nexport class VaultFrozenError extends SpendPolicyError {\n constructor() {\n super(\"vault is frozen\");\n this.name = \"VaultFrozenError\";\n }\n}\n\nexport class ZeroAmountError extends SpendPolicyError {\n constructor() {\n super(\"amount must be > 0\");\n this.name = \"ZeroAmountError\";\n }\n}\n\nexport class PerTxLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly amount: number;\n constructor(amount: number, limit: number) {\n super(`per-tx limit exceeded: ${amount} > ${limit}`);\n this.name = \"PerTxLimitExceededError\";\n this.amount = amount;\n this.limit = limit;\n }\n}\n\nexport class HourlyLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly windowSpent: number;\n readonly amount: number;\n constructor(amount: number, windowSpent: number, limit: number) {\n super(`hourly limit exceeded: ${windowSpent} + ${amount} > ${limit}`);\n this.name = \"HourlyLimitExceededError\";\n this.amount = amount;\n this.windowSpent = windowSpent;\n this.limit = limit;\n }\n}\n\nexport class LifetimeLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly totalSpent: number;\n readonly amount: number;\n constructor(amount: number, totalSpent: number, limit: number) {\n super(`lifetime limit exceeded: ${totalSpent} + ${amount} > ${limit}`);\n this.name = \"LifetimeLimitExceededError\";\n this.amount = amount;\n this.totalSpent = totalSpent;\n this.limit = limit;\n }\n}\n\nexport class NotWhitelistedError extends SpendPolicyError {\n readonly service: string;\n constructor(service: string) {\n super(`service ${service} is not in the vault's whitelist`);\n this.name = \"NotWhitelistedError\";\n this.service = service;\n }\n}\n\n// Reputation program errors — distinct hierarchy from SpendPolicyError because\n// these come from `record_payment`, not the credit vault.\n\nexport class RecordPaymentError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"RecordPaymentError\";\n }\n}\n\n/// The (service, receipt_hash) pair was already recorded on chain. Idempotent\n/// recorders can catch this and treat it as success — the underlying payment\n/// is already attested. Surfaces from the `init` constraint on the ReceiptUsed\n/// PDA (SystemProgram error 0x0, \"account already in use\").\nexport class ReceiptAlreadyRecordedError extends RecordPaymentError {\n readonly receiptHash: Uint8Array;\n constructor(receiptHash: Uint8Array) {\n super(\"payment receipt was already recorded on chain\");\n this.name = \"ReceiptAlreadyRecordedError\";\n this.receiptHash = receiptHash;\n }\n}\n\nexport class ServiceInactiveError extends RecordPaymentError {\n readonly service: string;\n constructor(service: string) {\n super(`service ${service} is paused; record_payment rejected`);\n this.name = \"ServiceInactiveError\";\n this.service = service;\n }\n}\n","import type { PublicKey } from \"@solana/web3.js\";\nimport { SLOTS_PER_HOUR } from \"./constants.js\";\nimport {\n HourlyLimitExceededError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport type { CreditVaultAccount, SpendPolicyAccount } from \"./types.js\";\n\n// Mirrors `check_and_record_spend` in programs/credit_vault/src/policy.rs.\n// This is a best-effort pre-flight: a concurrent spend, a window roll-over, or\n// any other on-chain state change between this check and the transaction\n// landing can still cause the chain to reject. The SDK surfaces the on-chain\n// error in that case — the local check just avoids the network round-trip for\n// the obvious failures.\nexport function guardSpend(args: {\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n service: PublicKey;\n amountUsdc: number;\n currentSlot: number;\n}): void {\n const { vault, policy, service, amountUsdc, currentSlot } = args;\n\n if (vault.frozen) throw new VaultFrozenError();\n if (amountUsdc <= 0) throw new ZeroAmountError();\n\n if (policy.whitelist.length > 0) {\n const allowed = policy.whitelist.some((pk) => pk.equals(service));\n if (!allowed) throw new NotWhitelistedError(service.toBase58());\n }\n\n if (policy.per_tx_limit_usdc > 0 && amountUsdc > policy.per_tx_limit_usdc) {\n throw new PerTxLimitExceededError(amountUsdc, policy.per_tx_limit_usdc);\n }\n\n if (policy.hourly_limit_usdc > 0) {\n const windowElapsed = currentSlot - policy.hourly_window_start_slot >= SLOTS_PER_HOUR;\n const windowSpent = windowElapsed ? 0 : policy.hourly_window_spent_usdc;\n const newWindowTotal = windowSpent + amountUsdc;\n if (newWindowTotal > policy.hourly_limit_usdc) {\n throw new HourlyLimitExceededError(amountUsdc, windowSpent, policy.hourly_limit_usdc);\n }\n }\n\n if (policy.lifetime_limit_usdc > 0) {\n const newTotalSpent = vault.total_spent + amountUsdc;\n if (newTotalSpent > policy.lifetime_limit_usdc) {\n throw new LifetimeLimitExceededError(amountUsdc, vault.total_spent, policy.lifetime_limit_usdc);\n }\n }\n}\n","import type { LiveEventFrame, LiveStatus, Subscription } from \"./types.js\";\n\n// Isomorphic WebSocket: prefer the runtime global (browsers, Node 22+), fall\n// back to the `ws` package for Node 18-21. The fallback is resolved lazily so\n// browser bundlers don't pull in `ws`.\ntype AnyWebSocket = {\n readyState: number;\n close(code?: number, reason?: string): void;\n addEventListener(type: string, listener: (ev: { data: unknown }) => void): void;\n};\ntype WebSocketCtor = new (url: string) => AnyWebSocket;\n\nlet cachedCtor: WebSocketCtor | Promise<WebSocketCtor> | null = null;\n\nasync function getWebSocketCtor(): Promise<WebSocketCtor> {\n if (cachedCtor) return cachedCtor;\n const globalCtor = (globalThis as { WebSocket?: WebSocketCtor }).WebSocket;\n if (globalCtor) {\n cachedCtor = globalCtor;\n return globalCtor;\n }\n cachedCtor = (async () => {\n const mod = await import(\"ws\");\n return mod.WebSocket as unknown as WebSocketCtor;\n })();\n return cachedCtor;\n}\n\nconst WS_OPEN = 1;\nconst MAX_BACKOFF_MS = 30_000;\n\nexport type SubscribeOptions = {\n onFrame: (frame: LiveEventFrame) => void;\n onStatus?: (status: LiveStatus) => void;\n};\n\nexport function subscribe(url: string, opts: SubscribeOptions): Subscription {\n let socket: AnyWebSocket | null = null;\n let alive = true;\n let attempts = 0;\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n let currentStatus: LiveStatus = \"connecting\";\n\n function setStatus(next: LiveStatus): void {\n currentStatus = next;\n opts.onStatus?.(next);\n }\n\n async function connect(): Promise<void> {\n if (!alive) return;\n setStatus(attempts === 0 ? \"connecting\" : \"reconnecting\");\n const WS = await getWebSocketCtor();\n if (!alive) return;\n socket = new WS(url);\n\n socket.addEventListener(\"open\", () => {\n attempts = 0;\n setStatus(\"open\");\n });\n\n socket.addEventListener(\"message\", (ev) => {\n if (typeof ev.data !== \"string\" || ev.data.length === 0) return;\n try {\n const parsed = JSON.parse(ev.data) as LiveEventFrame;\n if (parsed.type === \"event\") opts.onFrame(parsed);\n } catch {\n // Future backend versions may emit ping/keepalive frames — ignore.\n }\n });\n\n socket.addEventListener(\"close\", () => {\n if (!alive) return;\n attempts += 1;\n const delay = Math.min(MAX_BACKOFF_MS, 1_000 * 2 ** (attempts - 1));\n setStatus(\"reconnecting\");\n reconnectTimer = setTimeout(() => {\n void connect();\n }, delay);\n });\n\n // `error` events are followed by `close`; nothing extra to do here.\n socket.addEventListener(\"error\", () => {});\n }\n\n void connect();\n\n return {\n close(): void {\n alive = false;\n if (reconnectTimer !== null) clearTimeout(reconnectTimer);\n if (socket && socket.readyState === WS_OPEN) {\n socket.close(1000, \"client close\");\n }\n socket = null;\n setStatus(\"closed\");\n },\n get status(): LiveStatus {\n return currentStatus;\n },\n };\n}\n\n// Translate the SDK's apiBase (an HTTP URL) into the matching WebSocket URL.\nexport function wsUrl(apiBase: string, path: string): string {\n if (apiBase.startsWith(\"https://\")) return apiBase.replace(/^https/, \"wss\") + path;\n if (apiBase.startsWith(\"http://\")) return apiBase.replace(/^http/, \"ws\") + path;\n return apiBase + path;\n}\n\n// Public entity-scoped subscriptions. `AgentFuel.onEvent()` covers the agent\n// channel; these mirror it for the other two entity types so callers without\n// an agent keypair (e.g. a service-side recorder) can also tap the stream.\n\nexport function subscribeService(\n apiBase: string,\n servicePubkey: string,\n opts: SubscribeOptions,\n): Subscription {\n return subscribe(wsUrl(apiBase, `/ws/services/${servicePubkey}`), opts);\n}\n\nexport function subscribeVault(\n apiBase: string,\n vaultPubkey: string,\n opts: SubscribeOptions,\n): Subscription {\n return subscribe(wsUrl(apiBase, `/ws/vaults/${vaultPubkey}`), opts);\n}\n","{\n \"address\": \"4GjB4xdm1VTPVM6KSiEEfJpD4u7BfY1qDx77StiFShvQ\",\n \"metadata\": {\n \"name\": \"reputation\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — On-chain reputation primitive for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"append_response\",\n \"discriminator\": [\n 162,\n 210,\n 186,\n 50,\n 180,\n 4,\n 47,\n 104\n ],\n \"accounts\": [\n {\n \"name\": \"responder\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"compute_score\",\n \"discriminator\": [\n 161,\n 101,\n 4,\n 93,\n 120,\n 62,\n 41,\n 20\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"give_feedback\",\n \"discriminator\": [\n 145,\n 136,\n 123,\n 3,\n 215,\n 165,\n 98,\n 41\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"initialize_agent\",\n \"discriminator\": [\n 212,\n 81,\n 156,\n 211,\n 212,\n 110,\n 21,\n 28\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"record_payment\",\n \"discriminator\": [\n 226,\n 154,\n 10,\n 27,\n 9,\n 14,\n 148,\n 137\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"register_service\",\n \"discriminator\": [\n 11,\n 133,\n 158,\n 232,\n 193,\n 19,\n 229,\n 73\n ],\n \"accounts\": [\n {\n \"name\": \"sponsor\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"service_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n }\n ]\n },\n {\n \"name\": \"revoke_feedback\",\n \"discriminator\": [\n 211,\n 37,\n 230,\n 82,\n 118,\n 216,\n 137,\n 206\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"set_service_active\",\n \"discriminator\": [\n 221,\n 172,\n 149,\n 49,\n 212,\n 184,\n 77,\n 101\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"relations\": [\n \"service_registry\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AgentProfile\",\n \"discriminator\": [\n 60,\n 227,\n 42,\n 24,\n 0,\n 87,\n 86,\n 205\n ]\n },\n {\n \"name\": \"AgentServiceLink\",\n \"discriminator\": [\n 123,\n 74,\n 215,\n 240,\n 42,\n 88,\n 217,\n 216\n ]\n },\n {\n \"name\": \"FeedbackRecord\",\n \"discriminator\": [\n 15,\n 45,\n 246,\n 217,\n 63,\n 251,\n 69,\n 100\n ]\n },\n {\n \"name\": \"ReceiptUsed\",\n \"discriminator\": [\n 143,\n 21,\n 251,\n 75,\n 166,\n 7,\n 163,\n 137\n ]\n },\n {\n \"name\": \"ServiceRegistry\",\n \"discriminator\": [\n 105,\n 133,\n 96,\n 79,\n 207,\n 176,\n 202,\n 71\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AgentInitialized\",\n \"discriminator\": [\n 124,\n 252,\n 85,\n 27,\n 146,\n 101,\n 64,\n 160\n ]\n },\n {\n \"name\": \"FeedbackGiven\",\n \"discriminator\": [\n 64,\n 65,\n 2,\n 152,\n 174,\n 215,\n 156,\n 194\n ]\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"discriminator\": [\n 205,\n 16,\n 31,\n 94,\n 54,\n 101,\n 16,\n 199\n ]\n },\n {\n \"name\": \"PaymentRecorded\",\n \"discriminator\": [\n 214,\n 3,\n 212,\n 116,\n 135,\n 35,\n 104,\n 98\n ]\n },\n {\n \"name\": \"ResponseAppended\",\n \"discriminator\": [\n 168,\n 169,\n 214,\n 193,\n 171,\n 1,\n 232,\n 123\n ]\n },\n {\n \"name\": \"ScoreComputed\",\n \"discriminator\": [\n 52,\n 76,\n 80,\n 33,\n 2,\n 43,\n 75,\n 109\n ]\n },\n {\n \"name\": \"ServiceActiveSet\",\n \"discriminator\": [\n 151,\n 122,\n 7,\n 40,\n 191,\n 139,\n 237,\n 52\n ]\n },\n {\n \"name\": \"ServiceRegistered\",\n \"discriminator\": [\n 25,\n 219,\n 76,\n 223,\n 57,\n 191,\n 117,\n 38\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ServiceInactive\",\n \"msg\": \"Service is not active\"\n },\n {\n \"code\": 6002,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Payment amount must be greater than zero\"\n },\n {\n \"code\": 6003,\n \"name\": \"SelfRating\",\n \"msg\": \"A service may not rate itself or the agent owner\"\n },\n {\n \"code\": 6004,\n \"name\": \"ReceiptMismatch\",\n \"msg\": \"Receipt does not belong to this (agent, service) pair\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidFeedbackValue\",\n \"msg\": \"Feedback value is outside the allowed range\"\n },\n {\n \"code\": 6006,\n \"name\": \"UnauthorizedResponder\",\n \"msg\": \"Responder must be the agent or its owner\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyHasResponse\",\n \"msg\": \"Feedback already has a response\"\n },\n {\n \"code\": 6008,\n \"name\": \"AlreadyRevoked\",\n \"msg\": \"Feedback has already been revoked\"\n },\n {\n \"code\": 6009,\n \"name\": \"FeedbackRateLimited\",\n \"msg\": \"Feedback rate limit not yet expired for this (service, agent) pair\"\n },\n {\n \"code\": 6010,\n \"name\": \"UnauthorizedService\",\n \"msg\": \"Only the service authority may perform this action\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AgentInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentProfile\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"consecutive_success\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"active_negative_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"services_used\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reputation_score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"AgentServiceLink\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"first_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_feedback_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"has_received_feedback\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackGiven\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent_profile\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service_registry\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"has_response\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"revoked\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_modified_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"was_negative\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PaymentRecorded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"was_new_pair\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiptUsed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"recorded_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ResponseAppended\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"responder\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ScoreComputed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceActiveSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceCategory\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"DataFeed\"\n },\n {\n \"name\": \"Compute\"\n },\n {\n \"name\": \"Swap\"\n },\n {\n \"name\": \"Rpc\"\n },\n {\n \"name\": \"Other\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sponsor\",\n \"docs\": [\n \"Wallet that paid rent. Lets us answer \\\"who registered this service?\\\"\",\n \"without an extra column on the on-chain account.\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"service_uri\",\n \"docs\": [\n \"Off-chain metadata URI (pricing, docs, endpoint, logo). Padded to 128 bytes;\",\n \"trailing NULs are trimmed when read. Mirrors `AgentProfile::agent_uri`.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"total_agents_served\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_received_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"EsykPsafhHUeN7jA9DGqBiGuBsTBaFynLDVVpE4jFXDg\",\n \"metadata\": {\n \"name\": \"credit_vault\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — Budget-bound USDC spending vault for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"approve_spend\",\n \"discriminator\": [\n 248,\n 201,\n 151,\n 15,\n 28,\n 162,\n 112,\n 90\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"pending_spend.nonce\",\n \"account\": \"PendingSpend\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"cancel_spend\",\n \"discriminator\": [\n 122,\n 254,\n 101,\n 132,\n 241,\n 232,\n 205,\n 179\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"pending_spend.nonce\",\n \"account\": \"PendingSpend\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"create_vault\",\n \"discriminator\": [\n 29,\n 237,\n 247,\n 208,\n 193,\n 82,\n 54,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"docs\": [\n \"account need not exist on chain; we never read or write its data.\"\n ]\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"freeze_vault\",\n \"discriminator\": [\n 144,\n 211,\n 63,\n 236,\n 97,\n 31,\n 170,\n 175\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"request_spend\",\n \"discriminator\": [\n 127,\n 12,\n 23,\n 75,\n 137,\n 178,\n 148,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"service_token_account\",\n \"docs\": [\n \"The recipient token account. We only need it for its `owner` field\",\n \"(the service pubkey we record in PendingSpend); mint constraint is\",\n \"belt-and-suspenders since `approve_spend` re-checks both.\"\n ]\n },\n {\n \"name\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.pending_count\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"spend\",\n \"discriminator\": [\n 242,\n 205,\n 255,\n 87,\n 101,\n 217,\n 245,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"unfreeze_vault\",\n \"discriminator\": [\n 145,\n 244,\n 206,\n 234,\n 251,\n 250,\n 116,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"update_policy\",\n \"discriminator\": [\n 212,\n 245,\n 246,\n 7,\n 163,\n 151,\n 18,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"new_whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"CreditVault\",\n \"discriminator\": [\n 143,\n 180,\n 135,\n 248,\n 84,\n 85,\n 183,\n 70\n ]\n },\n {\n \"name\": \"PendingSpend\",\n \"discriminator\": [\n 193,\n 205,\n 85,\n 66,\n 25,\n 3,\n 67,\n 134\n ]\n },\n {\n \"name\": \"SpendPolicy\",\n \"discriminator\": [\n 139,\n 90,\n 209,\n 31,\n 205,\n 15,\n 68,\n 243\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deposited\",\n \"discriminator\": [\n 111,\n 141,\n 26,\n 45,\n 161,\n 35,\n 100,\n 57\n ]\n },\n {\n \"name\": \"PolicyUpdated\",\n \"discriminator\": [\n 225,\n 112,\n 112,\n 67,\n 95,\n 236,\n 245,\n 161\n ]\n },\n {\n \"name\": \"SpendRejected\",\n \"discriminator\": [\n 22,\n 233,\n 208,\n 109,\n 202,\n 231,\n 175,\n 22\n ]\n },\n {\n \"name\": \"SpendRequested\",\n \"discriminator\": [\n 144,\n 207,\n 254,\n 247,\n 81,\n 146,\n 84,\n 87\n ]\n },\n {\n \"name\": \"Spent\",\n \"discriminator\": [\n 43,\n 51,\n 164,\n 100,\n 191,\n 244,\n 174,\n 98\n ]\n },\n {\n \"name\": \"VaultCreated\",\n \"discriminator\": [\n 117,\n 25,\n 120,\n 254,\n 75,\n 236,\n 78,\n 115\n ]\n },\n {\n \"name\": \"VaultFrozen\",\n \"discriminator\": [\n 13,\n 199,\n 172,\n 111,\n 88,\n 10,\n 151,\n 247\n ]\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"discriminator\": [\n 128,\n 194,\n 79,\n 155,\n 85,\n 31,\n 226,\n 170\n ]\n },\n {\n \"name\": \"Withdrawn\",\n \"discriminator\": [\n 20,\n 89,\n 223,\n 198,\n 194,\n 124,\n 219,\n 13\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Amount must be greater than zero\"\n },\n {\n \"code\": 6002,\n \"name\": \"Frozen\",\n \"msg\": \"Vault is frozen\"\n },\n {\n \"code\": 6003,\n \"name\": \"NotWhitelisted\",\n \"msg\": \"Service is not on the vault's whitelist\"\n },\n {\n \"code\": 6004,\n \"name\": \"PerTxLimitExceeded\",\n \"msg\": \"Amount exceeds the per-transaction limit\"\n },\n {\n \"code\": 6005,\n \"name\": \"HourlyLimitExceeded\",\n \"msg\": \"Amount exceeds the hourly rolling-window limit\"\n },\n {\n \"code\": 6006,\n \"name\": \"LifetimeLimitExceeded\",\n \"msg\": \"Amount would exceed the lifetime spend ceiling\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyFrozen\",\n \"msg\": \"Vault is already frozen\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotFrozen\",\n \"msg\": \"Vault is not frozen\"\n },\n {\n \"code\": 6009,\n \"name\": \"PostPayDisabled\",\n \"msg\": \"Post-pay claims are disabled for this vault\"\n },\n {\n \"code\": 6010,\n \"name\": \"PendingSpendVaultMismatch\",\n \"msg\": \"Pending spend belongs to a different vault\"\n },\n {\n \"code\": 6011,\n \"name\": \"PendingNonceOverflow\",\n \"msg\": \"Pending spend counter would overflow\"\n }\n ],\n \"types\": [\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreditVault\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"frozen\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"pending_count\",\n \"docs\": [\n \"Monotonic counter used as a PDA seed for PendingSpend accounts so\",\n \"every approval request gets a unique deterministic address.\",\n \"Borrowed 8 bytes from the original 64-byte padding so the account\",\n \"size stays at `ACCOUNT_SIZE` and existing vaults need no migration.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 56\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Deposited\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PendingSpend\",\n \"docs\": [\n \"A spend request that exceeded one of the policy's rate limits. The agent\",\n \"creates this account by calling `request_spend`; the owner reviews from\",\n \"the mobile Alerts tab and either calls `approve_spend` (PDA-signed CPI\",\n \"transfer, account closed) or `cancel_spend` (account closed, no transfer).\",\n \"\",\n \"Seeded by `[\\\"pending\\\", vault, nonce_le]` where `nonce` is the value of\",\n \"`vault.pending_count` at request time, so each request has a unique\",\n \"deterministic address that both the agent and the owner can derive.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"docs\": [\n \"Owner of the destination token account (mirrors how `Spent` records\",\n \"service: `service_token_account.owner`).\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"requested_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 31\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"PolicyUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SpendPolicy\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_start_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_spent_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"SpendRejected\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pending_spend\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SpendRequested\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pending_spend\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Spent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultFrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Withdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n }\n ]\n}","import { PublicKey } from \"@solana/web3.js\";\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\n\nexport const PROGRAM_IDS = {\n reputation: new PublicKey(reputationIdl.address),\n creditVault: new PublicKey(creditVaultIdl.address),\n} as const;\n","import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_IDS } from \"./program-ids.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport function toPubkey(value: Pubkeyish): PublicKey {\n return value instanceof PublicKey ? value : new PublicKey(value);\n}\n\nexport function vaultPda(owner: Pubkeyish, agent: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"vault\"), toPubkey(owner).toBuffer(), toPubkey(agent).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function policyPda(vault: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"policy\"), toPubkey(vault).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function serviceRegistryPda(serviceAuthority: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"service\"), toPubkey(serviceAuthority).toBuffer()],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\nexport function agentProfilePda(agent: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"agent\"), toPubkey(agent).toBuffer()],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\n/** PDA used by `record_payment` to track the agent ↔ service pair. The seeds\n * are the *PDAs* of the agent profile and service registry, not the raw\n * authority pubkeys — match the on-chain Anchor account constraint. */\nexport function agentServiceLinkPda(\n agentProfile: Pubkeyish,\n serviceRegistry: Pubkeyish,\n): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [\n Buffer.from(\"link\"),\n toPubkey(agentProfile).toBuffer(),\n toPubkey(serviceRegistry).toBuffer(),\n ],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\n/** PendingSpend PDA — created by `request_spend`, consumed (and closed) by\n * either `approve_spend` (CPIs into `spend`, transfers USDC) or\n * `cancel_spend` (closes without transfer). Nonce is the vault's\n * `pending_count` at request time, so every request gets a fresh PDA. */\nexport function pendingSpendPda(vault: Pubkeyish, nonce: number | bigint): PublicKey {\n const nonceBuf = Buffer.alloc(8);\n // u64 little-endian — matches Rust `nonce.to_le_bytes()`.\n nonceBuf.writeBigUInt64LE(typeof nonce === \"bigint\" ? nonce : BigInt(nonce));\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"pending\"), toPubkey(vault).toBuffer(), nonceBuf],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\n/** Existence-as-signal: a `ReceiptUsed` PDA at `[b\"receipt\", hash]` proves\n * the receipt has been recorded. `record_payment`'s `init` constraint (not\n * `init_if_needed`) means a duplicate hash fails with `AccountAlreadyInUse`,\n * which is the chain-side replay defence. */\nexport function receiptUsedPda(receiptHash: Uint8Array): PublicKey {\n if (receiptHash.length !== 32) {\n throw new Error(`receiptUsedPda expects a 32-byte hash, got ${receiptHash.length}`);\n }\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"receipt\"), Buffer.from(receiptHash)],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n","import { AnchorProvider, Program, Wallet, type Idl } from \"@coral-xyz/anchor\";\nimport {\n type ConfirmOptions,\n type Connection,\n type Keypair,\n type PublicKey,\n type TransactionInstruction,\n} from \"@solana/web3.js\";\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport type BN from \"bn.js\";\n\nexport type RawCreditVault = {\n owner: PublicKey;\n agent: PublicKey;\n usdcMint: PublicKey;\n vaultTokenAccount: PublicKey;\n totalDeposited: BN;\n totalWithdrawn: BN;\n totalSpent: BN;\n totalClaimed: BN;\n frozen: boolean;\n createdSlot: BN;\n lastActiveSlot: BN;\n pendingCount: BN;\n};\n\nexport type RawPendingSpend = {\n vault: PublicKey;\n agent: PublicKey;\n service: PublicKey;\n amountUsdc: BN;\n nonce: BN;\n requestedSlot: BN;\n};\n\nexport type RawSpendPolicy = {\n vault: PublicKey;\n whitelist: PublicKey[];\n perTxLimitUsdc: BN;\n hourlyLimitUsdc: BN;\n lifetimeLimitUsdc: BN;\n hourlyWindowStartSlot: BN;\n hourlyWindowSpentUsdc: BN;\n allowPostPay: boolean;\n};\n\nexport type RawServiceRegistry = {\n authority: PublicKey;\n name: number[];\n category:\n | { dataFeed: Record<string, never> }\n | { compute: Record<string, never> }\n | { swap: Record<string, never> }\n | { rpc: Record<string, never> }\n | { other: Record<string, never> };\n totalAgentsServed: BN;\n totalVolumeReceivedUsdc: BN;\n active: boolean;\n firstActiveSlot: BN;\n lastActiveSlot: BN;\n};\n\ntype Fetchable<T> = {\n fetchNullable(address: PublicKey): Promise<T | null>;\n};\n\nexport type SpendAccounts = {\n agent: PublicKey;\n vault: PublicKey;\n policy: PublicKey;\n vaultTokenAccount: PublicKey;\n serviceTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n};\n\ntype SpendBuilder = {\n accounts(accounts: SpendAccounts): {\n preInstructions(instructions: readonly TransactionInstruction[]): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type RequestSpendAccounts = {\n agent: PublicKey;\n vault: PublicKey;\n serviceTokenAccount: PublicKey;\n pendingSpend: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RequestSpendBuilder = {\n accounts(accounts: RequestSpendAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type ApproveSpendAccounts = {\n owner: PublicKey;\n vault: PublicKey;\n policy: PublicKey;\n pendingSpend: PublicKey;\n vaultTokenAccount: PublicKey;\n serviceTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n};\n\ntype ApproveSpendBuilder = {\n accounts(accounts: ApproveSpendAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type CancelSpendAccounts = {\n owner: PublicKey;\n vault: PublicKey;\n pendingSpend: PublicKey;\n};\n\ntype CancelSpendBuilder = {\n accounts(accounts: CancelSpendAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type CreditVaultProgram = {\n account: {\n creditVault: Fetchable<RawCreditVault>;\n spendPolicy: Fetchable<RawSpendPolicy>;\n pendingSpend: Fetchable<RawPendingSpend>;\n };\n methods: {\n spend(amountUsdc: BN): SpendBuilder;\n requestSpend(amountUsdc: BN): RequestSpendBuilder;\n approveSpend(): ApproveSpendBuilder;\n cancelSpend(): CancelSpendBuilder;\n };\n};\n\nexport type ComputeScoreAccounts = {\n caller: PublicKey;\n agentProfile: PublicKey;\n};\n\ntype ComputeScoreBuilder = {\n accounts(accounts: ComputeScoreAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type RecordPaymentAccounts = {\n service: PublicKey;\n agentProfile: PublicKey;\n serviceRegistry: PublicKey;\n agentServiceLink: PublicKey;\n receiptUsed: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RecordPaymentBuilder = {\n accounts(accounts: RecordPaymentAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type RegisterServiceAccounts = {\n sponsor: PublicKey;\n service: PublicKey;\n serviceRegistry: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RegisterServiceBuilder = {\n accounts(accounts: RegisterServiceAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\n// Anchor's IDL serializes Rust enum variants as objects with a snake_case\n// field set to an empty struct. The TS client expects the same shape.\nexport type ServiceCategoryArg =\n | { dataFeed: Record<string, never> }\n | { compute: Record<string, never> }\n | { swap: Record<string, never> }\n | { rpc: Record<string, never> }\n | { other: Record<string, never> };\n\nexport type ReputationProgram = {\n account: {\n serviceRegistry: Fetchable<RawServiceRegistry>;\n };\n methods: {\n computeScore(): ComputeScoreBuilder;\n recordPayment(\n amountUsdc: BN,\n paymentReceiptHash: number[] | Uint8Array,\n ): RecordPaymentBuilder;\n registerService(\n name: number[] | Uint8Array,\n category: ServiceCategoryArg,\n serviceUri: number[] | Uint8Array,\n ): RegisterServiceBuilder;\n };\n};\n\nexport function buildProvider(connection: Connection, keypair: Keypair): AnchorProvider {\n return new AnchorProvider(connection, new Wallet(keypair), AnchorProvider.defaultOptions());\n}\n\nexport function creditVaultProgram(provider: AnchorProvider): CreditVaultProgram {\n return new Program(creditVaultIdl as unknown as Idl, provider) as unknown as CreditVaultProgram;\n}\n\nexport function reputationProgram(provider: AnchorProvider): ReputationProgram {\n return new Program(reputationIdl as unknown as Idl, provider) as unknown as ReputationProgram;\n}\n","// Atomic spend + record_payment in one transaction. The agent signs the\n// spend half (credit_vault), the service keypair signs the reputation\n// half (record_payment). Both land or neither does — no half-states\n// where USDC moved but reputation didn't.\n//\n// Mirrors `Spender::pay()` in `clients/runtime/src/lib.rs`.\n\nimport { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport {\n Connection,\n type Keypair,\n PublicKey,\n sendAndConfirmTransaction,\n SystemProgram,\n Transaction,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountIdempotentInstruction,\n getAssociatedTokenAddress,\n} from \"./constants.js\";\nimport { decodeCreditVault, decodeSpendPolicy } from \"./decoders.js\";\nimport {\n AccountNotFoundError,\n HourlyLimitExceededError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n PerTxLimitExceededError,\n ReceiptAlreadyRecordedError,\n RecordPaymentError,\n ServiceInactiveError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport { guardSpend } from \"./guardrails.js\";\nimport {\n agentProfilePda,\n agentServiceLinkPda,\n policyPda,\n receiptUsedPda,\n serviceRegistryPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport {\n buildProvider,\n creditVaultProgram,\n reputationProgram,\n} from \"./programs.js\";\nimport type { CreditVaultAccount, Pubkeyish, SpendPolicyAccount } from \"./types.js\";\n\nexport type PayArgs = {\n /** Agent keypair — spends from the vault and pays tx fees. */\n agent: Keypair;\n /** Service keypair — co-signs the reputation half. Its pubkey must\n * match the service registered on chain. */\n service: Keypair;\n /** Vault owner. */\n owner: Pubkeyish;\n /** Amount in micro-USDC. */\n amountUsdc: number;\n /** 32-byte receipt hash. Common: `sha256(agent|service|tick|...)`. */\n receiptHash: Uint8Array;\n connection: Connection;\n};\n\nexport type PayResult = {\n signature: string;\n};\n\n/**\n * Atomic spend + record_payment. The vault burn and reputation accrual\n * happen in one transaction — without this, a service could mirror only\n * payments it actually received, but the agent's score wouldn't reflect\n * its own spending. Both sides of the SDK need this primitive to keep\n * reputation honest.\n */\nexport async function pay(args: PayArgs): Promise<PayResult> {\n const { agent, service, connection, amountUsdc } = args;\n const owner = toPubkey(args.owner);\n\n if (amountUsdc <= 0) {\n throw new ZeroAmountError();\n }\n if (args.receiptHash.length !== 32) {\n throw new Error(\n `pay: receiptHash must be 32 bytes, got ${args.receiptHash.length}`,\n );\n }\n\n const vaultAddr = vaultPda(owner, agent.publicKey);\n const policyAddr = policyPda(vaultAddr);\n\n // Pre-flight against the local guardrail — bails on obvious policy\n // violations before we burn a tx slot. Mirrors `spend()` in client.ts.\n const provider = buildProvider(connection, agent);\n const cv = creditVaultProgram(provider);\n const rep = reputationProgram(provider);\n\n const [rawVault, rawPolicy, currentSlot] = await Promise.all([\n cv.account.creditVault.fetchNullable(vaultAddr),\n cv.account.spendPolicy.fetchNullable(policyAddr),\n connection.getSlot(),\n ]);\n if (!rawVault) throw new AccountNotFoundError(vaultAddr.toBase58());\n if (!rawPolicy) throw new AccountNotFoundError(policyAddr.toBase58());\n const vault = decodeCreditVault(vaultAddr, rawVault);\n const policy = decodeSpendPolicy(policyAddr, rawPolicy);\n guardSpend({\n vault,\n policy,\n service: service.publicKey,\n amountUsdc,\n currentSlot,\n });\n\n const serviceTokenAccount = getAssociatedTokenAddress(\n vault.usdc_mint,\n service.publicKey,\n );\n const createAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n agent.publicKey,\n serviceTokenAccount,\n service.publicKey,\n vault.usdc_mint,\n );\n\n const agentProfile = agentProfilePda(agent.publicKey);\n const serviceRegistry = serviceRegistryPda(service.publicKey);\n const link = agentServiceLinkPda(agentProfile, serviceRegistry);\n const receipt = receiptUsedPda(args.receiptHash);\n\n // `.instruction()` is a stable Anchor API but isn't on our typed\n // builder wrappers (which only expose `.rpc()` for the typical happy\n // path). Cast at the boundary to compose multi-program txs ourselves.\n type InstructionBuilder = {\n instruction(): Promise<import(\"@solana/web3.js\").TransactionInstruction>;\n };\n const spendBuilder = cv.methods.spend(new BN(amountUsdc)).accounts({\n agent: agent.publicKey,\n vault: vaultAddr,\n policy: policyAddr,\n vaultTokenAccount: vault.vault_token_account,\n serviceTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n }) as unknown as InstructionBuilder;\n const recordBuilder = rep.methods\n .recordPayment(new BN(amountUsdc), args.receiptHash)\n .accounts({\n service: service.publicKey,\n agentProfile,\n serviceRegistry,\n agentServiceLink: link,\n receiptUsed: receipt,\n systemProgram: SystemProgram.programId,\n }) as unknown as InstructionBuilder;\n const spendIx = await spendBuilder.instruction();\n const recordIx = await recordBuilder.instruction();\n\n const tx = new Transaction().add(createAtaIx, spendIx, recordIx);\n try {\n const signature = await sendAndConfirmTransaction(\n connection,\n tx,\n [agent, service],\n { commitment: \"confirmed\" },\n );\n return { signature };\n } catch (err) {\n throw mapPayError(err, {\n service: service.publicKey,\n amountUsdc,\n vault,\n policy,\n receiptHash: args.receiptHash,\n });\n }\n}\n\nfunction mapPayError(\n err: unknown,\n ctx: {\n service: PublicKey;\n amountUsdc: number;\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n receiptHash: Uint8Array;\n },\n): unknown {\n const message = err instanceof Error ? err.message : String(err);\n if (/already in use/i.test(message)) {\n return new ReceiptAlreadyRecordedError(ctx.receiptHash);\n }\n if (!(err instanceof AnchorError)) return err;\n // Credit vault errors are 6000-range; reputation errors overlap but\n // come from a different program — the AnchorError's program field\n // tells us which is throwing.\n switch (err.error.errorCode.number) {\n case 6001:\n return new ZeroAmountError();\n case 6002:\n return new VaultFrozenError();\n case 6003:\n return new NotWhitelistedError(ctx.service.toBase58());\n case 6004:\n return new PerTxLimitExceededError(ctx.amountUsdc, ctx.policy.per_tx_limit_usdc);\n case 6005:\n return new HourlyLimitExceededError(\n ctx.amountUsdc,\n ctx.policy.hourly_window_spent_usdc,\n ctx.policy.hourly_limit_usdc,\n );\n case 6006:\n return new LifetimeLimitExceededError(\n ctx.amountUsdc,\n ctx.vault.total_spent,\n ctx.policy.lifetime_limit_usdc,\n );\n // Reputation errors:\n case 6000:\n return new RecordPaymentError(\"counter overflow on chain\");\n case 6011: // ServiceInactive in reputation program\n return new ServiceInactiveError(ctx.service.toBase58());\n default:\n return err;\n }\n}\n","// Agent-initiated half of the over-limit approval flow. Creates a\n// PendingSpend account the owner can later approve via mobile / CLI.\n// The returned `pendingSpend` pubkey is what callers poll for resolution.\n\nimport { BN } from \"@coral-xyz/anchor\";\nimport {\n Connection,\n type Keypair,\n PublicKey,\n SystemProgram,\n} from \"@solana/web3.js\";\nimport { getAssociatedTokenAddress } from \"./constants.js\";\nimport { decodeCreditVault } from \"./decoders.js\";\nimport { AccountNotFoundError } from \"./errors.js\";\nimport {\n pendingSpendPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport { buildProvider, creditVaultProgram } from \"./programs.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport type RequestSpendArgs = {\n agent: Keypair;\n owner: Pubkeyish;\n service: Pubkeyish;\n amountUsdc: number;\n connection: Connection;\n};\n\nexport type RequestSpendResult = {\n signature: string;\n /** The PendingSpend account the owner approves / cancels and the bot\n * polls for resolution. */\n pendingSpend: PublicKey;\n /** Vault nonce burned by this request. */\n nonce: number;\n};\n\nexport async function requestSpend(\n args: RequestSpendArgs,\n): Promise<RequestSpendResult> {\n const { agent, connection, amountUsdc } = args;\n const owner = toPubkey(args.owner);\n const service = toPubkey(args.service);\n\n if (amountUsdc <= 0) {\n throw new Error(\"requestSpend: amountUsdc must be > 0\");\n }\n\n const vaultAddr = vaultPda(owner, agent.publicKey);\n const provider = buildProvider(connection, agent);\n const cv = creditVaultProgram(provider);\n\n // Read current pending_count off the vault so we derive the correct\n // PendingSpend PDA seed without an extra account write.\n const rawVault = await cv.account.creditVault.fetchNullable(vaultAddr);\n if (!rawVault) throw new AccountNotFoundError(vaultAddr.toBase58());\n const vault = decodeCreditVault(vaultAddr, rawVault);\n const nonce = vault.pending_count;\n const pendingSpend = pendingSpendPda(vaultAddr, nonce);\n const serviceTokenAccount = getAssociatedTokenAddress(\n vault.usdc_mint,\n service,\n );\n\n const signature = await cv.methods\n .requestSpend(new BN(amountUsdc))\n .accounts({\n agent: agent.publicKey,\n vault: vaultAddr,\n serviceTokenAccount,\n pendingSpend,\n systemProgram: SystemProgram.programId,\n })\n .signers([agent])\n .rpc();\n\n return { signature, pendingSpend, nonce };\n}\n","// Register a service on chain so agents can pay against it and accrue\n// reputation. Two signers: sponsor (pays rent, submits tx) and service\n// (long-lived signing identity — its keypair will co-sign every future\n// `record_payment`). Idempotent only at the keypair level — re-running\n// with the same key fails because the registry PDA already exists.\n\nimport { SystemProgram, type Connection, type Keypair } from \"@solana/web3.js\";\nimport { serviceRegistryPda } from \"./pda.js\";\nimport {\n buildProvider,\n reputationProgram,\n type ServiceCategoryArg,\n} from \"./programs.js\";\nimport type { ServiceCategory } from \"./types.js\";\n\nconst NAME_BYTES = 32;\nconst URI_BYTES = 128;\n\nexport type RegisterServiceArgs = {\n /** Pays rent for the registry PDA and submits the tx. Typically the\n * same wallet that owns the service brand. */\n sponsor: Keypair;\n /** Long-lived service identity. Co-signs registration to prevent\n * someone else from squatting on the keypair. Must hold ~0.05 SOL\n * for downstream `record_payment` receipt PDAs to be fundable from\n * the service side. */\n service: Keypair;\n name: string;\n category: ServiceCategory;\n /** Off-chain metadata URI (pricing, docs, endpoint). Empty string is\n * allowed; chain just stores zero-padded bytes. */\n serviceUri?: string;\n connection: Connection;\n};\n\nexport type RegisterServiceResult = {\n signature: string;\n};\n\nexport async function registerService(\n args: RegisterServiceArgs,\n): Promise<RegisterServiceResult> {\n const { sponsor, service, connection } = args;\n\n if (args.name.length === 0) {\n throw new Error(\"registerService: name must not be empty\");\n }\n if (Buffer.byteLength(args.name, \"utf8\") > NAME_BYTES) {\n throw new Error(\n `registerService: name exceeds ${NAME_BYTES} bytes (got ${Buffer.byteLength(args.name, \"utf8\")})`,\n );\n }\n const uri = args.serviceUri ?? \"\";\n if (Buffer.byteLength(uri, \"utf8\") > URI_BYTES) {\n throw new Error(\n `registerService: serviceUri exceeds ${URI_BYTES} bytes (got ${Buffer.byteLength(uri, \"utf8\")})`,\n );\n }\n\n const registry = serviceRegistryPda(service.publicKey);\n const provider = buildProvider(connection, sponsor);\n const rep = reputationProgram(provider);\n\n const signature = await rep.methods\n .registerService(\n packFixed(args.name, NAME_BYTES),\n categoryArg(args.category),\n packFixed(uri, URI_BYTES),\n )\n .accounts({\n sponsor: sponsor.publicKey,\n service: service.publicKey,\n serviceRegistry: registry,\n systemProgram: SystemProgram.programId,\n })\n .signers([sponsor, service])\n .rpc();\n\n return { signature };\n}\n\nfunction packFixed(s: string, length: number): number[] {\n const buf = Buffer.alloc(length);\n buf.write(s, 0, \"utf8\");\n return Array.from(buf);\n}\n\nfunction categoryArg(c: ServiceCategory): ServiceCategoryArg {\n // Borsh wire format: empty-struct variants, snake_case keys.\n switch (c) {\n case \"DataFeed\":\n return { dataFeed: {} };\n case \"Compute\":\n return { compute: {} };\n case \"Swap\":\n return { swap: {} };\n case \"Rpc\":\n return { rpc: {} };\n case \"Other\":\n return { other: {} };\n }\n}\n","import { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport { Connection, PublicKey, type Keypair } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountIdempotentInstruction,\n getAssociatedTokenAddress,\n} from \"./constants.js\";\nimport {\n decodeCreditVault,\n decodeServiceRegistry,\n decodeSpendPolicy,\n} from \"./decoders.js\";\nimport {\n AccountNotFoundError,\n HourlyLimitExceededError,\n HttpError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n OwnerNotConfiguredError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport { guardSpend } from \"./guardrails.js\";\nimport { subscribe, wsUrl } from \"./live.js\";\nimport { pay as payStandalone, type PayArgs, type PayResult } from \"./pay.js\";\nimport {\n requestSpend as requestSpendStandalone,\n type RequestSpendArgs,\n type RequestSpendResult,\n} from \"./request-spend.js\";\nimport {\n registerService as registerServiceStandalone,\n type RegisterServiceArgs,\n type RegisterServiceResult,\n} from \"./register-service.js\";\nimport {\n agentProfilePda,\n policyPda,\n serviceRegistryPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport {\n buildProvider,\n creditVaultProgram,\n reputationProgram,\n type CreditVaultProgram,\n type ReputationProgram,\n} from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n LiveEventFrame,\n LiveStatus,\n Pubkeyish,\n ReputationLookup,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n Subscription,\n} from \"./types.js\";\n\nexport type Cluster = \"mainnet-beta\" | \"devnet\" | \"testnet\" | \"localnet\";\n\nexport type AgentFuelOptions = {\n agent: Keypair;\n cluster: Cluster;\n rpc: string | Connection;\n // Optional vault owner. When set, `getVaultBalance()`, `getPolicy()`, and\n // `spend()` default to this owner so callers don't have to pass it on every\n // call. Per-method overrides still work for the \"inspect someone else's\n // vault\" case.\n owner?: Pubkeyish;\n apiBase?: string;\n};\n\nexport type VaultRef = {\n owner?: Pubkeyish;\n agent?: Pubkeyish;\n};\n\nexport type SpendArgs = {\n service: Pubkeyish;\n amountUsdc: number;\n owner?: Pubkeyish;\n};\n\nexport type SpendResult = {\n signature: string;\n};\n\nexport type OnEventOptions = {\n agent?: Pubkeyish;\n onStatus?: (status: LiveStatus) => void;\n};\n\nconst DEFAULT_API_BASE = \"http://localhost:8080\";\n\nexport class AgentFuel {\n readonly agent: Keypair;\n readonly cluster: Cluster;\n readonly connection: Connection;\n readonly apiBase: string;\n readonly owner: PublicKey | undefined;\n\n private _creditVault: CreditVaultProgram | undefined;\n private _reputation: ReputationProgram | undefined;\n\n constructor(opts: AgentFuelOptions) {\n this.agent = opts.agent;\n this.cluster = opts.cluster;\n this.connection =\n typeof opts.rpc === \"string\" ? new Connection(opts.rpc, \"confirmed\") : opts.rpc;\n this.apiBase = opts.apiBase ?? DEFAULT_API_BASE;\n this.owner = opts.owner ? toPubkey(opts.owner) : undefined;\n }\n\n get agentPubkey(): PublicKey {\n return this.agent.publicKey;\n }\n\n private get creditVault(): CreditVaultProgram {\n if (!this._creditVault) {\n this._creditVault = creditVaultProgram(buildProvider(this.connection, this.agent));\n }\n return this._creditVault;\n }\n\n private get reputation(): ReputationProgram {\n if (!this._reputation) {\n this._reputation = reputationProgram(buildProvider(this.connection, this.agent));\n }\n return this._reputation;\n }\n\n private resolveOwner(override?: Pubkeyish): PublicKey {\n const value = override ?? this.owner;\n if (!value) throw new OwnerNotConfiguredError();\n return toPubkey(value);\n }\n\n async getScore(agent?: Pubkeyish): Promise<ReputationLookup> {\n const target = agent ? toPubkey(agent) : this.agentPubkey;\n const agentStr = target.toBase58();\n const url = `${this.apiBase.replace(/\\/$/, \"\")}/reputation/${agentStr}`;\n const res = await fetch(url);\n if (res.status === 404) throw new AccountNotFoundError(agentStr);\n if (!res.ok) throw new HttpError(res.status, url, await safeText(res));\n return (await res.json()) as ReputationLookup;\n }\n\n async getVaultBalance(ref?: VaultRef): Promise<CreditVaultAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const pda = vaultPda(owner, agent);\n const raw = await this.creditVault.account.creditVault.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeCreditVault(pda, raw);\n }\n\n async getPolicy(ref?: VaultRef): Promise<SpendPolicyAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const vault = vaultPda(owner, agent);\n const pda = policyPda(vault);\n const raw = await this.creditVault.account.spendPolicy.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeSpendPolicy(pda, raw);\n }\n\n async checkService(serviceAuthority: Pubkeyish): Promise<ServiceRegistryAccount> {\n const pda = serviceRegistryPda(serviceAuthority);\n const raw = await this.reputation.account.serviceRegistry.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeServiceRegistry(pda, raw);\n }\n\n async spend(args: SpendArgs): Promise<SpendResult> {\n const owner = this.resolveOwner(args.owner);\n const service = toPubkey(args.service);\n const amountUsdc = args.amountUsdc;\n\n const vault = await this.getVaultBalance({ owner, agent: this.agentPubkey });\n const policy = await this.getPolicy({ owner, agent: this.agentPubkey });\n const currentSlot = await this.connection.getSlot();\n\n guardSpend({ vault, policy, service, amountUsdc, currentSlot });\n\n const serviceTokenAccount = getAssociatedTokenAddress(vault.usdc_mint, service);\n const createAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n this.agentPubkey,\n serviceTokenAccount,\n service,\n vault.usdc_mint,\n );\n\n try {\n const signature = await this.creditVault.methods\n .spend(new BN(amountUsdc))\n .accounts({\n agent: this.agentPubkey,\n vault: vault.pubkey,\n policy: policy.pubkey,\n vaultTokenAccount: vault.vault_token_account,\n serviceTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .preInstructions([createAtaIx])\n .signers([this.agent])\n .rpc();\n return { signature };\n } catch (err) {\n throw mapSpendError(err, { service, amountUsdc, vault, policy });\n }\n }\n\n /// Atomic spend + record_payment in one transaction. Use this instead\n /// of `spend()` + `recordPayment()` when you want the vault burn and\n /// the reputation accrual to be all-or-nothing. The service keypair\n /// co-signs.\n async pay(\n args: Omit<PayArgs, \"connection\" | \"agent\" | \"owner\"> & { owner?: Pubkeyish },\n ): Promise<PayResult> {\n return payStandalone({\n agent: this.agent,\n owner: this.resolveOwner(args.owner),\n service: args.service,\n amountUsdc: args.amountUsdc,\n receiptHash: args.receiptHash,\n connection: this.connection,\n });\n }\n\n /// Submit an over-limit spend request the owner can approve from the\n /// mobile app. Returns the `pendingSpend` PDA so the bot can poll for\n /// resolution.\n async requestSpend(\n args: Omit<RequestSpendArgs, \"connection\" | \"agent\" | \"owner\"> & { owner?: Pubkeyish },\n ): Promise<RequestSpendResult> {\n return requestSpendStandalone({\n agent: this.agent,\n owner: this.resolveOwner(args.owner),\n service: args.service,\n amountUsdc: args.amountUsdc,\n connection: this.connection,\n });\n }\n\n /// Register a service on chain. The `sponsor` (typically `this.agent`'s\n /// owner wallet) pays rent; the `service` keypair is the long-lived\n /// identity that will co-sign every future `record_payment`.\n async registerService(\n args: Omit<RegisterServiceArgs, \"connection\">,\n ): Promise<RegisterServiceResult> {\n return registerServiceStandalone({ ...args, connection: this.connection });\n }\n\n /// Triggers an on-chain recomputation of the agent's reputation score.\n /// Permissionless — any signer can call it; we use the agent itself since\n /// the SDK already has its keypair available and it already pays tx fees\n /// for spends. The instruction reads the agent's already-public counters\n /// (volume, diversity, streak, tenure, feedback), recalculates the score\n /// to a single u16 ≤ 1000, and emits a `ScoreComputed` event. The webhook\n /// picks that up; the next `getScore()` returns the fresh value.\n async computeScore(): Promise<{ signature: string }> {\n const profile = agentProfilePda(this.agentPubkey);\n const signature = await this.reputation.methods\n .computeScore()\n .accounts({\n caller: this.agentPubkey,\n agentProfile: profile,\n })\n .signers([this.agent])\n .rpc();\n return { signature };\n }\n\n onEvent(\n callback: (frame: LiveEventFrame) => void,\n options?: OnEventOptions,\n ): Subscription {\n const target = options?.agent ? toPubkey(options.agent) : this.agentPubkey;\n const url = wsUrl(this.apiBase, `/ws/agents/${target.toBase58()}`);\n const subOpts: { onFrame: (frame: LiveEventFrame) => void; onStatus?: (status: LiveStatus) => void } = {\n onFrame: callback,\n };\n if (options?.onStatus) subOpts.onStatus = options.onStatus;\n return subscribe(url, subOpts);\n }\n}\n\n// Re-throws Anchor `VaultError` codes as the same typed exceptions the local\n// guardrail uses, so callers can `instanceof`-match without caring whether the\n// rejection happened in the pre-flight or on-chain. Codes mirror\n// `programs/credit_vault/src/errors.rs` (Anchor starts custom errors at 6000).\nfunction mapSpendError(\n err: unknown,\n ctx: {\n service: PublicKey;\n amountUsdc: number;\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n },\n): unknown {\n if (!(err instanceof AnchorError)) return err;\n switch (err.error.errorCode.number) {\n case 6001:\n return new ZeroAmountError();\n case 6002:\n return new VaultFrozenError();\n case 6003:\n return new NotWhitelistedError(ctx.service.toBase58());\n case 6004:\n return new PerTxLimitExceededError(ctx.amountUsdc, ctx.policy.per_tx_limit_usdc);\n case 6005:\n return new HourlyLimitExceededError(\n ctx.amountUsdc,\n ctx.policy.hourly_window_spent_usdc,\n ctx.policy.hourly_limit_usdc,\n );\n case 6006:\n return new LifetimeLimitExceededError(\n ctx.amountUsdc,\n ctx.vault.total_spent,\n ctx.policy.lifetime_limit_usdc,\n );\n default:\n return err;\n }\n}\n\nasync function safeText(res: Response): Promise<string | undefined> {\n try {\n return await res.text();\n } catch {\n return undefined;\n }\n}\n","// Service-side attestation that an agent paid them. Distinct from the\n// agent's `af.spend()` — that one runs on credit_vault and moves USDC;\n// this one runs on reputation and updates the agent ↔ service counters\n// that ultimately feed `compute_score`.\n//\n// The two are deliberately separate so a service can attest only payments\n// it actually received (an agent can't unilaterally inflate its own counters\n// by emitting fake payment events).\n\nimport { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport { Connection, type Keypair, SystemProgram } from \"@solana/web3.js\";\nimport {\n ReceiptAlreadyRecordedError,\n RecordPaymentError,\n ServiceInactiveError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport {\n agentProfilePda,\n agentServiceLinkPda,\n receiptUsedPda,\n serviceRegistryPda,\n toPubkey,\n} from \"./pda.js\";\nimport { buildProvider, reputationProgram } from \"./programs.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport type RecordPaymentArgs = {\n /** Service authority keypair. Signs the tx and pays the fee. Must match\n * the same keypair that was registered on chain as the service authority. */\n service: Keypair;\n /** Agent identity pubkey (NOT the AgentProfile PDA — we derive that). */\n agent: Pubkeyish;\n /** Amount in micro-USDC (1_000_000 = 1 USDC). */\n amountUsdc: number;\n /** 32-byte hash that uniquely identifies this payment. Common choice:\n * `sha256(spendTxSignature)` — the spend signature is unique on chain,\n * so its hash is too. The chain enforces single-use via `init` on the\n * ReceiptUsed PDA; resubmitting the same hash fails with AccountAlreadyInUse. */\n receiptHash: Uint8Array;\n connection: Connection;\n};\n\nexport type RecordPaymentResult = {\n signature: string;\n};\n\nexport async function recordPayment(\n args: RecordPaymentArgs,\n): Promise<RecordPaymentResult> {\n const { service, connection, amountUsdc } = args;\n const agentPubkey = toPubkey(args.agent);\n\n if (amountUsdc <= 0) {\n throw new Error(\"recordPayment: amountUsdc must be > 0\");\n }\n if (args.receiptHash.length !== 32) {\n throw new Error(\n `recordPayment: receiptHash must be 32 bytes, got ${args.receiptHash.length}`,\n );\n }\n\n const provider = buildProvider(connection, service);\n const program = reputationProgram(provider);\n\n const agentProfile = agentProfilePda(agentPubkey);\n const serviceRegistry = serviceRegistryPda(service.publicKey);\n const link = agentServiceLinkPda(agentProfile, serviceRegistry);\n const receipt = receiptUsedPda(args.receiptHash);\n\n try {\n const signature = await program.methods\n .recordPayment(new BN(amountUsdc), args.receiptHash)\n .accounts({\n service: service.publicKey,\n agentProfile,\n serviceRegistry,\n agentServiceLink: link,\n receiptUsed: receipt,\n systemProgram: SystemProgram.programId,\n })\n .signers([service])\n .rpc();\n return { signature };\n } catch (err) {\n throw mapRecordPaymentError(err, args.receiptHash);\n }\n}\n\n// Anchor custom errors for the reputation program start at 6000; the order\n// matches `programs/reputation/src/errors.rs::ReputationError`. The\n// \"AccountAlreadyInUse\" case isn't a custom error — it's the system program's\n// 0x0, fired by Anchor's `init` constraint on ReceiptUsed when the same hash\n// has already been recorded.\nfunction mapRecordPaymentError(err: unknown, receiptHash: Uint8Array): unknown {\n // System program rejects duplicate inits with logs containing\n // \"already in use\" — surface this as a typed, idempotent-friendly error.\n const message = err instanceof Error ? err.message : String(err);\n if (/already in use/i.test(message)) {\n return new ReceiptAlreadyRecordedError(receiptHash);\n }\n if (!(err instanceof AnchorError)) return err;\n switch (err.error.errorCode.number) {\n case 6000:\n return new RecordPaymentError(\"counter overflow on chain\");\n case 6001:\n return new ServiceInactiveError(\n err.error.origin?.toString() ?? \"<unknown service>\",\n );\n case 6002:\n return new ZeroAmountError();\n default:\n return err;\n }\n}\n","import { AgentFuelError } from \"./errors.js\";\nimport type { AgentFuel } from \"./client.js\";\n\n// Wire shape of the payment requirement. Servers may send the requirement\n// either in an `X-Payment-Required` header (preferred — works with streams)\n// or as a JSON body on the 402 response (closer to the official x402 spec).\n//\n// The parser accepts both `recipient`/`amountUsdc` (the SDK's natural naming)\n// and `payTo`/`maxAmountRequired` (closer to the x402 spec) so servers using\n// either vocabulary work without configuration.\nexport type PaymentRequirement = {\n recipient: string;\n amountUsdc: number;\n network?: string;\n resource?: string;\n};\n\nexport type FetchLike = (\n input: string | URL | Request,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport type PaymentRequiredOptions = {\n // Custom fetch implementation (defaults to global). Use this to plug in\n // node-fetch on legacy runtimes or to inject a mock for tests.\n fetch?: FetchLike;\n // Fires after a 402 is parsed, before `spend()` is called. Useful for\n // user-confirmation prompts.\n onPaymentRequired?: (req: PaymentRequirement) => void | Promise<void>;\n // Fires after the on-chain spend lands. Receives the tx signature.\n onPaid?: (signature: string, req: PaymentRequirement) => void | Promise<void>;\n};\n\nconst HEADER = \"X-Payment-Required\";\nconst PAYMENT_HEADER = \"X-Payment\";\n\nexport class PaymentParseError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"PaymentParseError\";\n }\n}\n\n// Returns a fetch-shaped function that transparently handles HTTP 402:\n// 1. Call the wrapped fetch.\n// 2. If status !== 402, return the response unchanged.\n// 3. Otherwise parse the payment requirement, call `fuel.spend()`, then\n// retry the original request with `X-Payment: <signature>` set.\n//\n// The retry is a single attempt — a second 402 propagates to the caller so a\n// misbehaving server can't drain the vault in a loop.\nexport function paymentRequired(\n fuel: AgentFuel,\n opts: PaymentRequiredOptions = {},\n): FetchLike {\n const baseFetch: FetchLike = opts.fetch ?? ((input, init) => fetch(input, init));\n\n return async (input, init) => {\n const first = await baseFetch(input, init);\n if (first.status !== 402) return first;\n\n const req = await parseRequirement(first);\n if (opts.onPaymentRequired) await opts.onPaymentRequired(req);\n\n const { signature } = await fuel.spend({\n service: req.recipient,\n amountUsdc: req.amountUsdc,\n });\n if (opts.onPaid) await opts.onPaid(signature, req);\n\n const headers = new Headers(init?.headers);\n headers.set(PAYMENT_HEADER, signature);\n return baseFetch(input, { ...init, headers });\n };\n}\n\nasync function parseRequirement(res: Response): Promise<PaymentRequirement> {\n const header = res.headers.get(HEADER);\n if (header) return parseJson(header);\n\n let bodyText: string;\n try {\n bodyText = await res.clone().text();\n } catch {\n throw new PaymentParseError(`402 response has no ${HEADER} header and the body is unreadable`);\n }\n if (!bodyText.trim()) {\n throw new PaymentParseError(`402 response has no ${HEADER} header and an empty body`);\n }\n return parseJson(bodyText);\n}\n\nfunction parseJson(text: string): PaymentRequirement {\n let obj: unknown;\n try {\n obj = JSON.parse(text);\n } catch {\n throw new PaymentParseError(`payment payload is not valid JSON: ${truncate(text)}`);\n }\n if (typeof obj !== \"object\" || obj === null) {\n throw new PaymentParseError(`payment payload is not an object`);\n }\n const r = obj as Record<string, unknown>;\n\n const recipient = stringField(r, \"recipient\") ?? stringField(r, \"payTo\");\n if (!recipient) {\n throw new PaymentParseError(`payment payload missing 'recipient' or 'payTo'`);\n }\n\n const amount =\n numericField(r, \"amountUsdc\") ?? numericField(r, \"maxAmountRequired\");\n if (amount === null || amount <= 0) {\n throw new PaymentParseError(\n `payment payload missing positive 'amountUsdc' or 'maxAmountRequired'`,\n );\n }\n\n const out: PaymentRequirement = { recipient, amountUsdc: amount };\n const network = stringField(r, \"network\");\n if (network) out.network = network;\n const resource = stringField(r, \"resource\");\n if (resource) out.resource = resource;\n return out;\n}\n\nfunction stringField(r: Record<string, unknown>, key: string): string | undefined {\n const v = r[key];\n return typeof v === \"string\" && v.length > 0 ? v : undefined;\n}\n\nfunction numericField(r: Record<string, unknown>, key: string): number | null {\n const v = r[key];\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return null;\n}\n\nfunction truncate(s: string): string {\n return s.length > 80 ? `${s.slice(0, 80)}…` : s;\n}\n"]}
|