@creatornader/agent-bridge 0.5.2 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -1
- package/README.md +59 -34
- package/ROADMAP.md +74 -17
- package/SECURITY.md +6 -5
- package/SKILL.md +4 -1
- package/dist/archive.d.ts +2 -2
- package/dist/{bridge-service-CNBKdYXh.d.ts → bridge-service-DjSYfjKt.d.ts} +4 -2
- package/dist/{bridge-store-ByJ6CaJk.d.ts → bridge-store-Bi_LCX8e.d.ts} +5 -1
- package/dist/bridge.d.ts +9 -37
- package/dist/bridge.js +6 -10
- package/dist/chunk-23UDQZMT.js +54 -0
- package/dist/chunk-23UDQZMT.js.map +1 -0
- package/dist/{chunk-AWE3DFZV.js → chunk-4V2PFJEF.js} +11 -4
- package/dist/chunk-4V2PFJEF.js.map +1 -0
- package/dist/{chunk-E4OWHGUE.js → chunk-63JKCBC6.js} +10 -8
- package/dist/chunk-63JKCBC6.js.map +1 -0
- package/dist/chunk-6ZOLE3E3.js +242 -0
- package/dist/chunk-6ZOLE3E3.js.map +1 -0
- package/dist/chunk-7B3XRRNI.js +27 -0
- package/dist/chunk-7B3XRRNI.js.map +1 -0
- package/dist/{chunk-7VJI2MXI.js → chunk-IF5OKPBK.js} +32 -14
- package/dist/chunk-IF5OKPBK.js.map +1 -0
- package/dist/{chunk-QPC6JHA3.js → chunk-IXNQG4SB.js} +12 -16
- package/dist/chunk-IXNQG4SB.js.map +1 -0
- package/dist/{chunk-HUHG7XTB.js → chunk-JIRNR75D.js} +30 -193
- package/dist/chunk-JIRNR75D.js.map +1 -0
- package/dist/{chunk-JUTJRAMA.js → chunk-LF37B6KL.js} +6 -4
- package/dist/chunk-LF37B6KL.js.map +1 -0
- package/dist/{chunk-2EVLG3YA.js → chunk-UKFRCP6X.js} +10 -7
- package/dist/chunk-UKFRCP6X.js.map +1 -0
- package/dist/{chunk-SN7PIVDF.js → chunk-ZUZ7TCIH.js} +13 -1
- package/dist/{chunk-SN7PIVDF.js.map → chunk-ZUZ7TCIH.js.map} +1 -1
- package/dist/cli.js +45 -40
- package/dist/cli.js.map +1 -1
- package/dist/client-config.d.ts +1 -1
- package/dist/client-config.js +1 -1
- package/dist/client-runtime.d.ts +3 -3
- package/dist/client-runtime.js +5 -5
- package/dist/contracts/generate.js +3 -3
- package/dist/contracts/generate.js.map +1 -1
- package/dist/dr.d.ts +8 -0
- package/dist/dr.js +1 -1
- package/dist/{gateway-CW-61lvs.d.ts → gateway-DWZ3pX48.d.ts} +7 -2
- package/dist/gateway-main.js +12 -3
- package/dist/gateway-main.js.map +1 -1
- package/dist/gateway.d.ts +3 -3
- package/dist/gateway.js +3 -3
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/{postgres-bridge-store-C9KG9Z69.d.ts → postgres-bridge-store-ChoOuFEY.d.ts} +1 -1
- package/dist/server.d.ts +0 -2
- package/dist/server.js +8 -7
- package/dist/{sqlite-edge-store-CdMIOrho.d.ts → sqlite-edge-store-BAFUeysk.d.ts} +1 -1
- package/dist/sqlite.d.ts +7 -3
- package/dist/sqlite.js +1 -1
- package/docs/architecture-v2.md +26 -14
- package/docs/decisions/0001-protocol-layers-and-acknowledgment-semantics.md +2 -1
- package/docs/decisions/0002-canonical-operation-contract-registry.md +11 -1
- package/docs/decisions/0005-retire-direct-supabase-runtime.md +52 -0
- package/docs/deployment.md +41 -17
- package/docs/ecosystem.md +6 -4
- package/docs/troubleshooting.md +15 -0
- package/llms.txt +4 -4
- package/openapi/agent-bridge-v2.openapi.json +11 -6
- package/package.json +5 -3
- package/schemas/agent-bridge-v2.capabilities.json +11 -5
- package/schemas/agent-bridge-v2.mcp.json +13 -12
- package/schemas/agent-bridge-v2.schema.json +26 -24
- package/scripts/gateway-release-check.mjs +92 -0
- package/dist/chunk-2EVLG3YA.js.map +0 -1
- package/dist/chunk-7VJI2MXI.js.map +0 -1
- package/dist/chunk-AWE3DFZV.js.map +0 -1
- package/dist/chunk-E4OWHGUE.js.map +0 -1
- package/dist/chunk-HUHG7XTB.js.map +0 -1
- package/dist/chunk-JUTJRAMA.js.map +0 -1
- package/dist/chunk-QPC6JHA3.js.map +0 -1
- package/dist/chunk-Z6JP6MYD.js +0 -584
- package/dist/chunk-Z6JP6MYD.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/legacy-compat.ts","../src/legacy-supabase-store.ts","../src/http-bridge-store.ts"],"sourcesContent":["import type { BridgeMessage, JsonValue } from \"./bridge-domain.js\";\n\nexport function legacyMessageIdFromSequence(value: string | number): string {\n const text = String(value);\n if (!/^-?\\d+$/.test(text)) throw new Error(\"legacy message ID must be an integer\");\n if (typeof value === \"number\" && !Number.isSafeInteger(value)) {\n throw new Error(\"legacy message ID must be decoded without precision loss\");\n }\n const numeric = BigInt(text);\n if (numeric >= 0n && numeric <= 0xffffffffffffn) {\n return `00000000-0000-8000-8000-${numeric.toString(16).padStart(12, \"0\")}`;\n }\n if (numeric < -0x8000000000000000n || numeric > 0x7fffffffffffffffn) {\n throw new Error(\"legacy message ID exceeds bigint range\");\n }\n const unsigned = numeric < 0 ? numeric + 0x10000000000000000n : numeric;\n const encoded = unsigned.toString(16).padStart(16, \"0\").padStart(18, \"0\");\n return `00000000-0000-8${encoded.slice(0, 3)}-9${encoded.slice(3, 6)}-${encoded.slice(6)}`;\n}\n\nexport function legacySequenceFromMessageId(value: string): string | undefined {\n const small = value.match(/^00000000-0000-8000-8000-([0-9a-f]{12})$/i);\n if (small) return BigInt(`0x${small[1]}`).toString();\n const large = value.match(/^00000000-0000-8([0-9a-f]{3})-9([0-9a-f]{3})-([0-9a-f]{12})$/i);\n if (!large) return undefined;\n const encoded = `${large[1]}${large[2]}${large[3]}`;\n if (!encoded.startsWith(\"00\")) return undefined;\n const unsigned = BigInt(`0x${encoded.slice(2)}`);\n return (unsigned >= 0x8000000000000000n\n ? unsigned - 0x10000000000000000n\n : unsigned).toString();\n}\n\nexport function legacyNumericMessageId(value: string | number): string {\n const text = String(value);\n return /^-?\\d+$/.test(text) ? legacyMessageIdFromSequence(value) : text;\n}\n\nexport function legacyContextMetadata(message: BridgeMessage): Record<string, JsonValue> {\n const metadata = message.metadata &&\n typeof message.metadata === \"object\" &&\n !Array.isArray(message.metadata)\n ? message.metadata\n : {};\n const existingEnvelope = metadata.message_envelope &&\n typeof metadata.message_envelope === \"object\" &&\n !Array.isArray(metadata.message_envelope)\n ? metadata.message_envelope\n : {};\n const envelope: Record<string, JsonValue> = {\n ...existingEnvelope,\n schema: \"agent-bridge.message-envelope.v1\",\n message_id: message.id,\n source_agent: message.source,\n kind: message.type,\n priority: message.priority,\n target_agents: message.targets,\n payload_mime: message.contentType,\n };\n if (message.project) envelope.project = message.project;\n if (message.threadId) envelope.thread_id = message.threadId;\n if (message.replyToId) envelope.reply_to_id = message.replyToId;\n if (message.correlationId) envelope.correlation_id = message.correlationId;\n if (message.causationId) envelope.causation_id = message.causationId;\n if (message.data !== undefined) envelope.payload = message.data;\n if (message.expiresAt) envelope.expires_at = message.expiresAt;\n if (message.atribReceiptId) envelope.atrib_receipt_id = message.atribReceiptId;\n if (message.informedBy?.length) envelope.informed_by = message.informedBy;\n return { ...metadata, message_envelope: envelope };\n}\n","import { cursorScope, decodeCursor, encodeCursor, type BridgeDelivery, type BridgeMessage, type BridgePrincipal } from \"./bridge-domain.js\";\nimport type {\n BridgeStore,\n BridgeDiagnostics,\n ClaimOptions,\n InsertMessageResult,\n MessagePage,\n MessageQuery,\n} from \"./bridge-store.js\";\nimport { legacyMessageIdFromSequence, legacySequenceFromMessageId } from \"./legacy-compat.js\";\nimport { assertIdempotentReplay } from \"./idempotency.js\";\n\ntype LegacyRow = Record<string, any>;\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport class LegacySupabaseError extends Error {\n constructor(readonly status: number, readonly code: string) {\n super(`Legacy Supabase request failed: ${code}`);\n }\n}\n\nfunction messageId(row: LegacyRow): string {\n const envelopeId = row.metadata?.message_envelope?.message_id;\n return typeof envelopeId === \"string\" && UUID_RE.test(envelopeId)\n ? envelopeId\n : legacyMessageIdFromSequence(String(row.id));\n}\n\nfunction isVisible(row: LegacyRow, principal: BridgePrincipal, query: MessageQuery): boolean {\n const envelope = row.metadata?.message_envelope;\n const targets = Array.isArray(envelope?.target_agents) ? envelope.target_agents : [];\n const inbox = !targets.length || targets.includes(principal.agent);\n const sent = row.source === principal.agent;\n const mailbox = query.mailbox ?? \"inbox\";\n if (mailbox === \"inbox\" && !inbox) return false;\n if (query.mailbox === \"sent\" && !sent) return false;\n if (query.mailbox === \"all\" && !inbox && !sent) return false;\n if (![\"inbox\", \"sent\", \"all\"].includes(mailbox) && !inbox) return false;\n\n const type = envelope?.kind ?? row.category;\n if (query.types?.length && !query.types.includes(type)) return false;\n if (query.threadId && envelope?.thread_id !== query.threadId) return false;\n\n const expiresAt = envelope?.expires_at;\n if (!query.includeExpired && expiresAt && new Date(expiresAt).getTime() <= Date.now()) return false;\n return true;\n}\n\nfunction asMessage(row: LegacyRow, principal: BridgePrincipal): BridgeMessage {\n const envelope = row.metadata?.message_envelope;\n return {\n id: messageId(row),\n sequence: String(row.id),\n workspace: principal.workspace,\n project: row.project ?? undefined,\n source: row.source,\n type: envelope?.kind ?? row.category,\n content: row.content,\n contentType: envelope?.payload_mime ?? \"text/plain\",\n data: envelope?.payload,\n targets: envelope?.target_agents ?? [],\n threadId: envelope?.thread_id,\n replyToId: envelope?.reply_to_id,\n correlationId: envelope?.correlation_id,\n causationId: envelope?.causation_id,\n priority: row.priority ?? \"info\",\n expiresAt: envelope?.expires_at,\n idempotencyKey: envelope?.idempotency_key,\n atribReceiptId: row.atrib_receipt_id ?? envelope?.atrib_receipt_id,\n informedBy: envelope?.informed_by,\n metadata: row.metadata,\n deliveryPolicy: { mode: \"mailbox\" },\n createdAt: row.created_at,\n };\n}\n\nexport class LegacySupabaseRestStore implements BridgeStore {\n private readonly legacyIds = new Map<string, string>();\n private initialized = false;\n\n constructor(\n private readonly url: string,\n private readonly key: string,\n private readonly fetchImpl: typeof fetch = fetch,\n private readonly timeoutMs = 10_000,\n ) {\n const parsed = new URL(url);\n const loopback = parsed.hostname === \"localhost\" || parsed.hostname === \"127.0.0.1\" || parsed.hostname === \"[::1]\";\n if (parsed.protocol !== \"https:\" && !(parsed.protocol === \"http:\" && loopback)) {\n throw new Error(\"Agent Bridge requires HTTPS for non-loopback legacy providers\");\n }\n }\n\n async initialize(options: { mode?: \"active\" | \"passive\" } = {}): Promise<void> {\n if (options.mode === \"passive\") return;\n if (this.initialized) return;\n await this.request(\"/shared_context?select=id&limit=1\");\n this.initialized = true;\n }\n\n private async request(path: string, init: RequestInit = {}): Promise<any> {\n try {\n const response = await this.fetchImpl(`${this.url.replace(/\\/$/, \"\")}/rest/v1${path}`, {\n ...init,\n signal: init.signal ?? AbortSignal.timeout(this.timeoutMs),\n headers: {\n apikey: this.key,\n Authorization: `Bearer ${this.key}`,\n \"Content-Type\": \"application/json\",\n Prefer: \"return=representation\",\n ...(init.headers ?? {}),\n },\n });\n if (!response.ok) {\n throw new LegacySupabaseError(response.status, \"provider_error\");\n }\n const text = await response.text();\n return text ? JSON.parse(text) : null;\n } catch (error) {\n if (error instanceof LegacySupabaseError) throw error;\n if (error instanceof Error && (error.name === \"TimeoutError\" || error.name === \"AbortError\")) {\n throw new LegacySupabaseError(504, \"request_timeout\");\n }\n throw new LegacySupabaseError(0, \"network_error\");\n }\n }\n\n private async visibleReceiptIds(\n entryIds: string[],\n principal: BridgePrincipal,\n ): Promise<string[]> {\n if (!entryIds.length || entryIds.length > 200) {\n throw new Error(\"legacy receipt IDs must contain between 1 and 200 entries\");\n }\n const uniqueIds = [...new Set(entryIds)];\n const rows = await this.request(\n `/shared_context?select=id,source,metadata&id=in.(${uniqueIds.join(\",\")})`,\n );\n const visible = new Set(\n Array.isArray(rows)\n ? rows\n .filter((row) => isVisible(row as LegacyRow, principal, { mailbox: \"inbox\" }))\n .map((row) => String((row as LegacyRow).id))\n : [],\n );\n return entryIds.filter((entryId) => visible.has(entryId));\n }\n\n async insertMessage(\n input: Omit<BridgeMessage, \"sequence\" | \"createdAt\">,\n ): Promise<InsertMessageResult> {\n if (input.idempotencyKey) {\n throw new Error(\n \"legacy Supabase mode cannot enforce idempotency keys; migrate to shared mode\",\n );\n }\n if (input.deliveryPolicy?.mode === \"leased\") {\n throw Object.assign(new Error(\"leased delivery policy is not supported in legacy mode\"), { code: \"delivery_not_supported\", status: 400 });\n }\n const existingMetadata = input.metadata &&\n typeof input.metadata === \"object\" &&\n !Array.isArray(input.metadata)\n ? input.metadata\n : {};\n const existingEnvelope = existingMetadata.message_envelope &&\n typeof existingMetadata.message_envelope === \"object\"\n ? existingMetadata.message_envelope as Record<string, unknown>\n : {};\n const storedMetadata = JSON.parse(JSON.stringify({\n ...existingMetadata,\n message_envelope: {\n ...existingEnvelope,\n schema: \"agent-bridge.message-envelope.v1\",\n message_id: input.id,\n source_agent: input.source,\n kind: input.type,\n payload_mime: input.contentType,\n payload: input.data,\n target_agents: input.targets,\n thread_id: input.threadId,\n reply_to_id: input.replyToId,\n correlation_id: input.correlationId,\n causation_id: input.causationId,\n expires_at: input.expiresAt,\n informed_by: input.informedBy,\n },\n }));\n const body = {\n source: input.source,\n category: input.type,\n content: input.content,\n priority: input.priority,\n project: input.project ?? null,\n metadata: storedMetadata,\n atrib_receipt_id: input.atribReceiptId,\n };\n const lookup = encodeURIComponent(\n JSON.stringify({ message_envelope: { message_id: input.id } }),\n );\n const existing = await this.request(\n `/shared_context?metadata=cs.${lookup}&order=id.asc&limit=1`,\n );\n if (existing[0]) {\n const message = asMessage(existing[0], { workspace: input.workspace, agent: input.source });\n assertIdempotentReplay(message, { ...input, metadata: storedMetadata });\n this.legacyIds.set(message.id, String(existing[0].id));\n return { created: false, message };\n }\n const rows = await this.request(\"/shared_context\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n const row = rows[0];\n this.legacyIds.set(input.id, String(row.id));\n return {\n created: true,\n message: { ...input, sequence: String(row.id), createdAt: row.created_at },\n };\n }\n\n async listMessages(\n principal: BridgePrincipal,\n query: MessageQuery = {},\n ): Promise<MessagePage> {\n const limit = query.limit ?? 50;\n const scope = cursorScope(principal, query);\n let after = decodeCursor(query.cursor, scope) ?? \"0\";\n let before: string | undefined;\n let latestCursor: string | undefined;\n const messages: BridgeMessage[] = [];\n\n while (messages.length < limit) {\n const batchLimit = Math.min(Math.max(limit * 2, 50), 200);\n const workspaceFilter = query.project\n ? `&project=eq.${encodeURIComponent(query.project)}`\n : \"\";\n const effectiveSource = query.source ?? (query.mailbox === \"sent\" ? principal.agent : undefined);\n const sourceFilter = effectiveSource\n ? `&source=eq.${encodeURIComponent(effectiveSource)}`\n : \"\";\n const sinceFilter = query.since\n ? `&created_at=gte.${encodeURIComponent(query.since)}`\n : \"\";\n const receiptFilter = query.receiptState === \"unread\"\n ? `&acked_by=not.cs.%7B${encodeURIComponent(principal.agent)}%7D`\n : query.receiptState === \"read\" ? `&acked_by=cs.%7B${encodeURIComponent(principal.agent)}%7D` : \"\";\n const cursorFilter = query.latest\n ? before ? `&id=lt.${encodeURIComponent(before)}` : \"\"\n : `&id=gt.${encodeURIComponent(after)}`;\n const rows = (await this.request(\n `/shared_context?select=*${cursorFilter}` +\n `${workspaceFilter}${sourceFilter}${sinceFilter}${receiptFilter}` +\n `&order=id.${query.latest ? \"desc\" : \"asc\"}&limit=${batchLimit}`,\n )) as LegacyRow[];\n if (!rows.length) break;\n if (query.latest && latestCursor === undefined) latestCursor = String(rows[0].id);\n\n for (const row of rows) {\n after = String(row.id);\n const id = messageId(row);\n this.legacyIds.set(id, after);\n if (isVisible(row, principal, query)) messages.push(asMessage(row, principal));\n if (messages.length === limit) break;\n }\n if (query.latest) before = String(rows[rows.length - 1]!.id);\n if (rows.length < batchLimit || messages.length === limit) break;\n }\n\n const next = query.latest ? latestCursor : after === \"0\" ? undefined : after;\n return { messages, cursor: next ? encodeCursor(next, scope) : query.cursor };\n }\n\n async recordReceipt(principal: BridgePrincipal, ids: string[]): Promise<number> {\n if (!ids.length || ids.length > 200) {\n throw new Error(\"message IDs must contain between 1 and 200 entries\");\n }\n const entryIds = await Promise.all(ids.map(async (id) => {\n const mapped = this.legacyIds.get(id);\n if (mapped) return mapped;\n const lookup = encodeURIComponent(JSON.stringify({ message_envelope: { message_id: id } }));\n const rows = await this.request(`/shared_context?select=id,metadata&metadata=cs.${lookup}&limit=2`);\n if (Array.isArray(rows) && rows.length === 1) {\n const sequence = String(rows[0].id);\n this.legacyIds.set(id, sequence);\n return sequence;\n }\n if (Array.isArray(rows) && rows.length > 1) {\n throw new LegacySupabaseError(409, \"ambiguous_message_id\");\n }\n const decodedSequence = legacySequenceFromMessageId(id);\n if (decodedSequence !== undefined) return decodedSequence;\n throw new LegacySupabaseError(404, \"message_not_found\");\n }));\n const visibleIds = await this.visibleReceiptIds(entryIds, principal);\n if (!visibleIds.length) return 0;\n return this.request(\"/rpc/ack_context\", {\n method: \"POST\",\n body: JSON.stringify({ entry_ids: visibleIds, agent_name: principal.agent }),\n });\n }\n\n async recordLegacyReceipt(ids: string[], principal: string): Promise<number> {\n if (!ids.length || ids.length > 200) {\n throw new Error(\"legacy receipt IDs must contain between 1 and 200 entries\");\n }\n const entryIds = ids.map((id) => {\n if (!/^\\d+$/.test(id)) throw new Error(\"legacy receipt IDs must be numeric\");\n const value = BigInt(id);\n if (value > 0x7fffffffffffffffn) throw new Error(\"legacy receipt ID exceeds bigint range\");\n return value.toString();\n });\n const visibleIds = await this.visibleReceiptIds(entryIds, {\n workspace: \"*\",\n agent: principal,\n });\n if (!visibleIds.length) return 0;\n return this.request(\"/rpc/ack_context\", {\n method: \"POST\",\n body: JSON.stringify({ entry_ids: visibleIds, agent_name: principal }),\n });\n }\n\n async claimDelivery(\n _principal: BridgePrincipal,\n _options: ClaimOptions,\n ): Promise<BridgeDelivery | null> {\n throw new Error(\"legacy Supabase adapter does not support deliveries\");\n }\n\n async renewDelivery(\n _principal: BridgePrincipal,\n _deliveryId: string,\n _leaseToken: string,\n _leaseMs: number,\n ): Promise<BridgeDelivery | null> {\n throw new Error(\"legacy Supabase adapter does not support deliveries\");\n }\n\n async settleDelivery(\n _principal: BridgePrincipal,\n _deliveryId: string,\n _leaseToken: string,\n _state: \"acked\" | \"retrying\" | \"dead\",\n _error?: string,\n _retryPolicy?: import(\"./bridge-domain.js\").RetryPolicy,\n ): Promise<BridgeDelivery | null> {\n throw new Error(\"legacy Supabase adapter does not support deliveries\");\n }\n\n async diagnostics(_principal: BridgePrincipal): Promise<BridgeDiagnostics> {\n return { schemaVersion: \"legacy-v1\", deliverySupported: false, pending: null, claimed: null, retrying: null, dead: null };\n }\n}\n","import type { AgentPresence, BridgeDelivery, BridgeMessage, BridgePrincipal } from \"./bridge-domain.js\";\nimport type { BridgeDiagnostics, BridgeStore, ClaimOptions, InsertMessageResult, MessagePage, MessageQuery } from \"./bridge-store.js\";\nimport {\n ContractResponseError,\n parseResponse,\n PROTOCOL_HEADER,\n PROTOCOL_VERSION,\n SUPPORTED_PROTOCOL_HEADER,\n SUPPORTED_PROTOCOL_VERSIONS,\n type OperationId,\n} from \"./contracts/registry.js\";\n\nexport interface HttpBridgeStoreOptions {\n baseUrl: string;\n token: string;\n principal: BridgePrincipal;\n timeoutMs?: number;\n allowInsecureRemoteHttp?: boolean;\n fetch?: typeof fetch;\n}\n\nexport class BridgeHttpError extends Error {\n constructor(\n readonly status: number,\n readonly code: string,\n readonly requestId?: string,\n readonly details?: unknown,\n message = `Agent Bridge request failed: ${code}`,\n ) {\n super(message);\n }\n}\n\nexport class HttpBridgeStore implements BridgeStore {\n private readonly fetchImpl: typeof fetch;\n private readonly closeController = new AbortController();\n private closed = false;\n private selectedProtocolVersion?: string;\n private protocolProbe?: Promise<string>;\n constructor(private readonly options: HttpBridgeStoreOptions) {\n const url = new URL(options.baseUrl);\n const loopback = url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\" || url.hostname === \"[::1]\";\n if (url.protocol !== \"https:\" && !(url.protocol === \"http:\" && loopback) && !options.allowInsecureRemoteHttp) {\n throw new Error(\"Agent Bridge requires HTTPS for non-loopback gateways\");\n }\n this.fetchImpl = options.fetch ?? fetch;\n }\n async initialize(options: { signal?: AbortSignal; mode?: \"active\" | \"passive\" } = {}): Promise<void> {\n if (options.mode === \"passive\") return;\n await this.request(undefined, \"/readyz\", { authenticated: false, signal: options.signal });\n const status = await this.request(\"status\", \"/v2/status\", { signal: options.signal });\n this.assertBoundPrincipal(status);\n }\n\n private assertBoundPrincipal(status: any): void {\n const principal = status?.principal;\n if (\n !principal ||\n principal.workspace !== this.options.principal.workspace ||\n principal.agent !== this.options.principal.agent\n ) {\n throw new BridgeHttpError(403, \"principal_mismatch\");\n }\n }\n\n private async request(operationId: OperationId | undefined, path: string, options: { method?: string; body?: unknown; authenticated?: boolean; signal?: AbortSignal; skipProtocolProbe?: boolean } = {}): Promise<any> {\n if (options.method === \"POST\" && !options.skipProtocolProbe) await this.ensureProtocol(options.signal);\n if (this.closed) throw new BridgeHttpError(0, \"store_closed\");\n if (options.signal?.aborted) throw new BridgeHttpError(0, \"request_cancelled\");\n const requestController = new AbortController();\n const abort = () => requestController.abort(this.closeController.signal.reason);\n const abortRequest = () => requestController.abort(options.signal?.reason);\n this.closeController.signal.addEventListener(\"abort\", abort, { once: true });\n options.signal?.addEventListener(\"abort\", abortRequest, { once: true });\n let timedOut = false;\n const timeout = setTimeout(() => {\n timedOut = true;\n requestController.abort(new Error(\"request timeout\"));\n }, this.options.timeoutMs ?? 10_000);\n timeout.unref?.();\n try {\n const response = await this.fetchImpl(`${this.options.baseUrl.replace(/\\/$/, \"\")}${path}`, {\n method: options.method ?? \"GET\", signal: requestController.signal,\n headers: {\n [PROTOCOL_HEADER]: this.selectedProtocolVersion ?? PROTOCOL_VERSION,\n ...(options.authenticated === false ? {} : { authorization: `Bearer ${this.options.token}` }),\n ...(this.options.principal.instance ? { \"x-agent-bridge-instance\": this.options.principal.instance } : {}),\n ...(options.body === undefined ? {} : { \"content-type\": \"application/json\" }),\n },\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n });\n const requestId = response.headers.get(\"x-request-id\") ?? undefined;\n const selectedHeader = response.headers.get(PROTOCOL_HEADER);\n const supportedHeader = response.headers.get(SUPPORTED_PROTOCOL_HEADER);\n const supportedProtocols = supportedHeader?.split(\",\").map((value) => value.trim()).filter(Boolean) ?? [];\n const inconsistentProtocol = (\n selectedHeader === null || supportedHeader === null ||\n !(SUPPORTED_PROTOCOL_VERSIONS as readonly string[]).includes(selectedHeader) ||\n !supportedProtocols.includes(selectedHeader) ||\n selectedHeader !== PROTOCOL_VERSION\n );\n if (operationId && inconsistentProtocol) {\n throw new BridgeHttpError(502, \"protocol_mismatch\", requestId, {\n expected: PROTOCOL_VERSION,\n selected: selectedHeader,\n supported: supportedHeader,\n });\n }\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const payload = contentType.startsWith(\"application/json\")\n ? await response.json().catch(() => ({}))\n : await response.text();\n if (!response.ok) {\n const envelope = payload && typeof payload === \"object\" ? (payload as any).error : undefined;\n throw new BridgeHttpError(\n response.status,\n envelope?.code ?? \"request_failed\",\n envelope?.requestId ?? requestId,\n envelope?.details ?? envelope,\n envelope?.message ?? `Agent Bridge request failed: ${envelope?.code ?? \"request_failed\"}`,\n );\n }\n if (operationId) this.selectedProtocolVersion = PROTOCOL_VERSION;\n if (!operationId) return payload;\n return parseResponse(operationId, payload);\n } catch (error) {\n if (error instanceof BridgeHttpError) throw error;\n if (error instanceof ContractResponseError) {\n throw new BridgeHttpError(error.status, error.code, undefined, {\n operation: error.operation,\n issues: error.issues,\n }, error.message);\n }\n if (this.closed) throw new BridgeHttpError(0, \"store_closed\");\n if (options.signal?.aborted) throw new BridgeHttpError(0, \"request_cancelled\");\n if (timedOut) throw new BridgeHttpError(504, \"request_timeout\");\n if (error instanceof Error && (error.name === \"TimeoutError\" || error.name === \"AbortError\")) {\n throw new BridgeHttpError(504, \"request_timeout\");\n }\n throw new BridgeHttpError(0, \"network_error\");\n } finally {\n clearTimeout(timeout);\n this.closeController.signal.removeEventListener(\"abort\", abort);\n options.signal?.removeEventListener(\"abort\", abortRequest);\n }\n }\n\n private ensureProtocol(signal?: AbortSignal): Promise<string> {\n if (this.selectedProtocolVersion) return Promise.resolve(this.selectedProtocolVersion);\n if (!this.protocolProbe) {\n this.protocolProbe = this.request(\"status\", \"/v2/status\", { signal, skipProtocolProbe: true })\n .then(() => this.selectedProtocolVersion!)\n .finally(() => { this.protocolProbe = undefined; });\n }\n return this.protocolProbe;\n }\n async capabilities(): Promise<unknown> { return this.request(\"capabilities\", \"/v2/capabilities\"); }\n\n private assertPrincipal(principal: BridgePrincipal, includeInstance = true): void {\n const expected = this.options.principal;\n if (\n principal.workspace !== expected.workspace ||\n principal.agent !== expected.agent ||\n (includeInstance && principal.instance !== expected.instance)\n ) {\n throw new BridgeHttpError(403, \"principal_mismatch\");\n }\n }\n\n async insertMessage(message: Omit<BridgeMessage, \"sequence\" | \"createdAt\">, options: { signal?: AbortSignal } = {}): Promise<InsertMessageResult> {\n this.assertPrincipal({ workspace: message.workspace, agent: message.source }, false);\n await this.ensureProtocol(options.signal);\n const { workspace: _workspace, source: _source, ...draft } = message;\n return this.request(\"publish_message\", \"/v2/messages\", { method: \"POST\", body: draft, signal: options.signal });\n }\n async listMessages(principal: BridgePrincipal, query: MessageQuery = {}, options: { signal?: AbortSignal } = {}): Promise<MessagePage> {\n this.assertPrincipal(principal);\n const requestQuery = query;\n const params = new URLSearchParams();\n if (requestQuery.cursor) params.set(\"cursor\", requestQuery.cursor);\n if (requestQuery.mailbox) params.set(\"mailbox\", requestQuery.mailbox);\n if (requestQuery.receiptState) params.set(\"receiptState\", requestQuery.receiptState);\n if (requestQuery.limit) params.set(\"limit\", String(requestQuery.limit));\n if (requestQuery.includeExpired) params.set(\"includeExpired\", \"true\");\n if (requestQuery.source) params.set(\"source\", requestQuery.source);\n if (requestQuery.project) params.set(\"project\", requestQuery.project);\n if (requestQuery.since) params.set(\"since\", requestQuery.since);\n if (requestQuery.threadId) params.set(\"threadId\", requestQuery.threadId);\n if (requestQuery.latest) params.set(\"latest\", \"true\");\n for (const type of requestQuery.types ?? []) params.append(\"type\", type);\n return this.request(\"history\", `/v2/history${params.size ? `?${params}` : \"\"}`, { signal: options.signal });\n }\n async recordReceipt(principal: BridgePrincipal, ids: string[]): Promise<number> {\n this.assertPrincipal(principal, false);\n return (await this.request(\"record_receipt\", \"/v2/receipts\", { method: \"POST\", body: { messageIds: ids } })).recorded;\n }\n async diagnostics(principal: BridgePrincipal): Promise<BridgeDiagnostics> {\n this.assertPrincipal(principal);\n const status = await this.request(\"status\", \"/v2/status\");\n this.assertBoundPrincipal(status);\n return status;\n }\n async claimDelivery(principal: BridgePrincipal, options: ClaimOptions): Promise<BridgeDelivery | null> {\n this.assertPrincipal(principal);\n return (await this.request(\"claim_delivery\", \"/v2/deliveries/claim\", { method: \"POST\", body: options }))?.delivery ?? null;\n }\n async listDeliveries(principal: BridgePrincipal, query: import(\"./bridge-store.js\").DeliveryQuery = {}) {\n this.assertPrincipal(principal); const params=new URLSearchParams(); if(query.cursor)params.set(\"cursor\",query.cursor);if(query.limit)params.set(\"limit\",String(query.limit));if(query.role)params.set(\"role\",query.role);if(query.messageId)params.set(\"messageId\",query.messageId);if(query.recipient)params.set(\"recipient\",query.recipient);for(const state of query.states??[])params.append(\"state\",state);return this.request(\"list_deliveries\",`/v2/deliveries${params.size?`?${params}`:\"\"}`);\n }\n async listDeliveryEvents(principal: BridgePrincipal,id:string,query:{cursor?:string;limit?:number}={}) { this.assertPrincipal(principal);const params=new URLSearchParams();if(query.cursor)params.set(\"cursor\",query.cursor);if(query.limit)params.set(\"limit\",String(query.limit));return this.request(\"list_delivery_events\",`/v2/deliveries/${id}/events${params.size?`?${params}`:\"\"}`); }\n async cancelDelivery(principal:BridgePrincipal,id:string){this.assertPrincipal(principal);return (await this.request(\"cancel_delivery\",`/v2/deliveries/${id}/cancel`,{method:\"POST\",body:{}})).delivery;}\n async requeueDelivery(principal:BridgePrincipal,id:string){this.assertPrincipal(principal);return (await this.request(\"requeue_delivery\",`/v2/deliveries/${id}/requeue`,{method:\"POST\",body:{}})).delivery;}\n async renewDelivery(principal: BridgePrincipal, id: string, token: string, leaseMs: number): Promise<BridgeDelivery | null> {\n this.assertPrincipal(principal);\n try {\n return (await this.request(\"extend_delivery\", `/v2/deliveries/${id}/extend`, { method: \"POST\", body: { leaseToken: token, leaseMs } })).delivery;\n } catch (error) {\n if (error instanceof BridgeHttpError && error.status === 409) return null;\n throw error;\n }\n }\n async settleDelivery(principal: BridgePrincipal, id: string, token: string, state: \"acked\" | \"retrying\" | \"dead\", error?: string, _retryPolicy?: import(\"./bridge-domain.js\").RetryPolicy): Promise<BridgeDelivery | null> {\n this.assertPrincipal(principal);\n await this.ensureProtocol();\n const action = state === \"acked\" ? \"ack\" : \"nack\";\n try {\n const operationId = action === \"ack\" ? \"acknowledge_delivery\" : \"negative_acknowledge_delivery\";\n const nackBody = { leaseToken: token, error, disposition: state === \"dead\" ? \"dead\" : \"retry\" };\n return (await this.request(operationId, `/v2/deliveries/${id}/${action}`, { method: \"POST\", body: action === \"ack\" ? { leaseToken: token } : nackBody })).delivery;\n } catch (caught) {\n if (caught instanceof BridgeHttpError && caught.status === 409) return null;\n throw caught;\n }\n }\n async heartbeat(principal: BridgePrincipal, leaseMs: number, runtimeType?: string, capabilities: string[] = []): Promise<AgentPresence> {\n this.assertPrincipal(principal);\n return this.request(\"heartbeat\", \"/v2/presence/heartbeat\", { method: \"POST\", body: { leaseMs, runtimeType, capabilities } });\n }\n async listPresence(principal: BridgePrincipal): Promise<AgentPresence[]> {\n this.assertPrincipal(principal);\n return (await this.request(\"presence\", \"/v2/presence\")).agents;\n }\n async close(): Promise<void> {\n if (this.closed) return;\n this.closed = true;\n this.closeController.abort(new Error(\"store closed\"));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEO,SAAS,4BAA4B,OAAgC;AAC1E,QAAM,OAAO,OAAO,KAAK;AACzB,MAAI,CAAC,UAAU,KAAK,IAAI,EAAG,OAAM,IAAI,MAAM,sCAAsC;AACjF,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,KAAK,GAAG;AAC7D,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,QAAM,UAAU,OAAO,IAAI;AAC3B,MAAI,WAAW,MAAM,WAAW,iBAAiB;AAC/C,WAAO,2BAA2B,QAAQ,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG,CAAC;AAAA,EAC1E;AACA,MAAI,UAAU,CAAC,uBAAuB,UAAU,qBAAqB;AACnE,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AACA,QAAM,WAAW,UAAU,IAAI,UAAU,uBAAuB;AAChE,QAAM,UAAU,SAAS,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG,EAAE,SAAS,IAAI,GAAG;AACxE,SAAO,kBAAkB,QAAQ,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,MAAM,CAAC,CAAC;AAC1F;AAEO,SAAS,4BAA4B,OAAmC;AAC7E,QAAM,QAAQ,MAAM,MAAM,2CAA2C;AACrE,MAAI,MAAO,QAAO,OAAO,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS;AACnD,QAAM,QAAQ,MAAM,MAAM,+DAA+D;AACzF,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACjD,MAAI,CAAC,QAAQ,WAAW,IAAI,EAAG,QAAO;AACtC,QAAM,WAAW,OAAO,KAAK,QAAQ,MAAM,CAAC,CAAC,EAAE;AAC/C,UAAQ,YAAY,sBAChB,WAAW,uBACX,UAAU,SAAS;AACzB;AAEO,SAAS,uBAAuB,OAAgC;AACrE,QAAM,OAAO,OAAO,KAAK;AACzB,SAAO,UAAU,KAAK,IAAI,IAAI,4BAA4B,KAAK,IAAI;AACrE;AAEO,SAAS,sBAAsB,SAAmD;AACvF,QAAM,WAAW,QAAQ,YACvB,OAAO,QAAQ,aAAa,YAC5B,CAAC,MAAM,QAAQ,QAAQ,QAAQ,IAC7B,QAAQ,WACR,CAAC;AACL,QAAM,mBAAmB,SAAS,oBAChC,OAAO,SAAS,qBAAqB,YACrC,CAAC,MAAM,QAAQ,SAAS,gBAAgB,IACtC,SAAS,mBACT,CAAC;AACL,QAAM,WAAsC;AAAA,IAC1C,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,YAAY,QAAQ;AAAA,IACpB,cAAc,QAAQ;AAAA,IACtB,MAAM,QAAQ;AAAA,IACd,UAAU,QAAQ;AAAA,IAClB,eAAe,QAAQ;AAAA,IACvB,cAAc,QAAQ;AAAA,EACxB;AACA,MAAI,QAAQ,QAAS,UAAS,UAAU,QAAQ;AAChD,MAAI,QAAQ,SAAU,UAAS,YAAY,QAAQ;AACnD,MAAI,QAAQ,UAAW,UAAS,cAAc,QAAQ;AACtD,MAAI,QAAQ,cAAe,UAAS,iBAAiB,QAAQ;AAC7D,MAAI,QAAQ,YAAa,UAAS,eAAe,QAAQ;AACzD,MAAI,QAAQ,SAAS,OAAW,UAAS,UAAU,QAAQ;AAC3D,MAAI,QAAQ,UAAW,UAAS,aAAa,QAAQ;AACrD,MAAI,QAAQ,eAAgB,UAAS,mBAAmB,QAAQ;AAChE,MAAI,QAAQ,YAAY,OAAQ,UAAS,cAAc,QAAQ;AAC/D,SAAO,EAAE,GAAG,UAAU,kBAAkB,SAAS;AACnD;;;ACxDA,IAAM,UAAU;AAET,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAC7C,YAAqB,QAAyB,MAAc;AAC1D,UAAM,mCAAmC,IAAI,EAAE;AAD5B;AAAyB;AAAA,EAE9C;AACF;AAEA,SAAS,UAAU,KAAwB;AACzC,QAAM,aAAa,IAAI,UAAU,kBAAkB;AACnD,SAAO,OAAO,eAAe,YAAY,QAAQ,KAAK,UAAU,IAC5D,aACA,4BAA4B,OAAO,IAAI,EAAE,CAAC;AAChD;AAEA,SAAS,UAAU,KAAgB,WAA4B,OAA8B;AAC3F,QAAM,WAAW,IAAI,UAAU;AAC/B,QAAM,UAAU,MAAM,QAAQ,UAAU,aAAa,IAAI,SAAS,gBAAgB,CAAC;AACnF,QAAM,QAAQ,CAAC,QAAQ,UAAU,QAAQ,SAAS,UAAU,KAAK;AACjE,QAAM,OAAO,IAAI,WAAW,UAAU;AACtC,QAAM,UAAU,MAAM,WAAW;AACjC,MAAI,YAAY,WAAW,CAAC,MAAO,QAAO;AAC1C,MAAI,MAAM,YAAY,UAAU,CAAC,KAAM,QAAO;AAC9C,MAAI,MAAM,YAAY,SAAS,CAAC,SAAS,CAAC,KAAM,QAAO;AACvD,MAAI,CAAC,CAAC,SAAS,QAAQ,KAAK,EAAE,SAAS,OAAO,KAAK,CAAC,MAAO,QAAO;AAElE,QAAM,OAAO,UAAU,QAAQ,IAAI;AACnC,MAAI,MAAM,OAAO,UAAU,CAAC,MAAM,MAAM,SAAS,IAAI,EAAG,QAAO;AAC/D,MAAI,MAAM,YAAY,UAAU,cAAc,MAAM,SAAU,QAAO;AAErE,QAAM,YAAY,UAAU;AAC5B,MAAI,CAAC,MAAM,kBAAkB,aAAa,IAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,KAAK,IAAI,EAAG,QAAO;AAC9F,SAAO;AACT;AAEA,SAAS,UAAU,KAAgB,WAA2C;AAC5E,QAAM,WAAW,IAAI,UAAU;AAC/B,SAAO;AAAA,IACL,IAAI,UAAU,GAAG;AAAA,IACjB,UAAU,OAAO,IAAI,EAAE;AAAA,IACvB,WAAW,UAAU;AAAA,IACrB,SAAS,IAAI,WAAW;AAAA,IACxB,QAAQ,IAAI;AAAA,IACZ,MAAM,UAAU,QAAQ,IAAI;AAAA,IAC5B,SAAS,IAAI;AAAA,IACb,aAAa,UAAU,gBAAgB;AAAA,IACvC,MAAM,UAAU;AAAA,IAChB,SAAS,UAAU,iBAAiB,CAAC;AAAA,IACrC,UAAU,UAAU;AAAA,IACpB,WAAW,UAAU;AAAA,IACrB,eAAe,UAAU;AAAA,IACzB,aAAa,UAAU;AAAA,IACvB,UAAU,IAAI,YAAY;AAAA,IAC1B,WAAW,UAAU;AAAA,IACrB,gBAAgB,UAAU;AAAA,IAC1B,gBAAgB,IAAI,oBAAoB,UAAU;AAAA,IAClD,YAAY,UAAU;AAAA,IACtB,UAAU,IAAI;AAAA,IACd,gBAAgB,EAAE,MAAM,UAAU;AAAA,IAClC,WAAW,IAAI;AAAA,EACjB;AACF;AAEO,IAAM,0BAAN,MAAqD;AAAA,EAI1D,YACmB,KACA,KACA,YAA0B,OAC1B,YAAY,KAC7B;AAJiB;AACA;AACA;AACA;AAPnB,SAAiB,YAAY,oBAAI,IAAoB;AACrD,SAAQ,cAAc;AAQpB,UAAM,SAAS,IAAI,IAAI,GAAG;AAC1B,UAAM,WAAW,OAAO,aAAa,eAAe,OAAO,aAAa,eAAe,OAAO,aAAa;AAC3G,QAAI,OAAO,aAAa,YAAY,EAAE,OAAO,aAAa,WAAW,WAAW;AAC9E,YAAM,IAAI,MAAM,+DAA+D;AAAA,IACjF;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,UAA2C,CAAC,GAAkB;AAC7E,QAAI,QAAQ,SAAS,UAAW;AAChC,QAAI,KAAK,YAAa;AACtB,UAAM,KAAK,QAAQ,mCAAmC;AACtD,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAc,QAAQ,MAAc,OAAoB,CAAC,GAAiB;AACxE,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,UAAU,GAAG,KAAK,IAAI,QAAQ,OAAO,EAAE,CAAC,WAAW,IAAI,IAAI;AAAA,QACrF,GAAG;AAAA,QACH,QAAQ,KAAK,UAAU,YAAY,QAAQ,KAAK,SAAS;AAAA,QACzD,SAAS;AAAA,UACP,QAAQ,KAAK;AAAA,UACb,eAAe,UAAU,KAAK,GAAG;AAAA,UACjC,gBAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,GAAI,KAAK,WAAW,CAAC;AAAA,QACvB;AAAA,MACF,CAAC;AACD,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,oBAAoB,SAAS,QAAQ,gBAAgB;AAAA,MACjE;AACA,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,aAAO,OAAO,KAAK,MAAM,IAAI,IAAI;AAAA,IACnC,SAAS,OAAO;AACd,UAAI,iBAAiB,oBAAqB,OAAM;AAChD,UAAI,iBAAiB,UAAU,MAAM,SAAS,kBAAkB,MAAM,SAAS,eAAe;AAC5F,cAAM,IAAI,oBAAoB,KAAK,iBAAiB;AAAA,MACtD;AACA,YAAM,IAAI,oBAAoB,GAAG,eAAe;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,MAAc,kBACZ,UACA,WACmB;AACnB,QAAI,CAAC,SAAS,UAAU,SAAS,SAAS,KAAK;AAC7C,YAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AACA,UAAM,YAAY,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC;AACvC,UAAM,OAAO,MAAM,KAAK;AAAA,MACtB,oDAAoD,UAAU,KAAK,GAAG,CAAC;AAAA,IACzE;AACA,UAAM,UAAU,IAAI;AAAA,MAClB,MAAM,QAAQ,IAAI,IACd,KACC,OAAO,CAAC,QAAQ,UAAU,KAAkB,WAAW,EAAE,SAAS,QAAQ,CAAC,CAAC,EAC5E,IAAI,CAAC,QAAQ,OAAQ,IAAkB,EAAE,CAAC,IAC3C,CAAC;AAAA,IACP;AACA,WAAO,SAAS,OAAO,CAAC,YAAY,QAAQ,IAAI,OAAO,CAAC;AAAA,EAC1D;AAAA,EAEA,MAAM,cACJ,OAC8B;AAC9B,QAAI,MAAM,gBAAgB;AACxB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,QAAI,MAAM,gBAAgB,SAAS,UAAU;AAC3C,YAAM,OAAO,OAAO,IAAI,MAAM,wDAAwD,GAAG,EAAE,MAAM,0BAA0B,QAAQ,IAAI,CAAC;AAAA,IAC1I;AACA,UAAM,mBAAmB,MAAM,YAC7B,OAAO,MAAM,aAAa,YAC1B,CAAC,MAAM,QAAQ,MAAM,QAAQ,IAC3B,MAAM,WACN,CAAC;AACL,UAAM,mBAAmB,iBAAiB,oBACxC,OAAO,iBAAiB,qBAAqB,WAC3C,iBAAiB,mBACjB,CAAC;AACL,UAAM,iBAAiB,KAAK,MAAM,KAAK,UAAU;AAAA,MAC/C,GAAG;AAAA,MACH,kBAAkB;AAAA,QAChB,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,YAAY,MAAM;AAAA,QAClB,cAAc,MAAM;AAAA,QACpB,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM;AAAA,QACpB,SAAS,MAAM;AAAA,QACf,eAAe,MAAM;AAAA,QACrB,WAAW,MAAM;AAAA,QACjB,aAAa,MAAM;AAAA,QACnB,gBAAgB,MAAM;AAAA,QACtB,cAAc,MAAM;AAAA,QACpB,YAAY,MAAM;AAAA,QAClB,aAAa,MAAM;AAAA,MACrB;AAAA,IACF,CAAC,CAAC;AACF,UAAM,OAAO;AAAA,MACX,QAAQ,MAAM;AAAA,MACd,UAAU,MAAM;AAAA,MAChB,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,SAAS,MAAM,WAAW;AAAA,MAC1B,UAAU;AAAA,MACV,kBAAkB,MAAM;AAAA,IAC1B;AACA,UAAM,SAAS;AAAA,MACb,KAAK,UAAU,EAAE,kBAAkB,EAAE,YAAY,MAAM,GAAG,EAAE,CAAC;AAAA,IAC/D;AACA,UAAM,WAAW,MAAM,KAAK;AAAA,MAC1B,+BAA+B,MAAM;AAAA,IACvC;AACA,QAAI,SAAS,CAAC,GAAG;AACf,YAAM,UAAU,UAAU,SAAS,CAAC,GAAG,EAAE,WAAW,MAAM,WAAW,OAAO,MAAM,OAAO,CAAC;AAC1F,6BAAuB,SAAS,EAAE,GAAG,OAAO,UAAU,eAAe,CAAC;AACtE,WAAK,UAAU,IAAI,QAAQ,IAAI,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC;AACrD,aAAO,EAAE,SAAS,OAAO,QAAQ;AAAA,IACnC;AACA,UAAM,OAAO,MAAM,KAAK,QAAQ,mBAAmB;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AACD,UAAM,MAAM,KAAK,CAAC;AAClB,SAAK,UAAU,IAAI,MAAM,IAAI,OAAO,IAAI,EAAE,CAAC;AAC3C,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,EAAE,GAAG,OAAO,UAAU,OAAO,IAAI,EAAE,GAAG,WAAW,IAAI,WAAW;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,WACA,QAAsB,CAAC,GACD;AACtB,UAAM,QAAQ,MAAM,SAAS;AAC7B,UAAM,QAAQ,YAAY,WAAW,KAAK;AAC1C,QAAI,QAAQ,aAAa,MAAM,QAAQ,KAAK,KAAK;AACjD,QAAI;AACJ,QAAI;AACJ,UAAM,WAA4B,CAAC;AAEnC,WAAO,SAAS,SAAS,OAAO;AAC9B,YAAM,aAAa,KAAK,IAAI,KAAK,IAAI,QAAQ,GAAG,EAAE,GAAG,GAAG;AACxD,YAAM,kBAAkB,MAAM,UAC1B,eAAe,mBAAmB,MAAM,OAAO,CAAC,KAChD;AACJ,YAAM,kBAAkB,MAAM,WAAW,MAAM,YAAY,SAAS,UAAU,QAAQ;AACtF,YAAM,eAAe,kBACjB,cAAc,mBAAmB,eAAe,CAAC,KACjD;AACJ,YAAM,cAAc,MAAM,QACtB,mBAAmB,mBAAmB,MAAM,KAAK,CAAC,KAClD;AACJ,YAAM,gBAAgB,MAAM,iBAAiB,WACzC,uBAAuB,mBAAmB,UAAU,KAAK,CAAC,QAC1D,MAAM,iBAAiB,SAAS,mBAAmB,mBAAmB,UAAU,KAAK,CAAC,QAAQ;AAClG,YAAM,eAAe,MAAM,SACvB,SAAS,UAAU,mBAAmB,MAAM,CAAC,KAAK,KAClD,UAAU,mBAAmB,KAAK,CAAC;AACvC,YAAM,OAAQ,MAAM,KAAK;AAAA,QACvB,2BAA2B,YAAY,GAClC,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,aAAa,aAClD,MAAM,SAAS,SAAS,KAAK,UAAU,UAAU;AAAA,MAClE;AACA,UAAI,CAAC,KAAK,OAAQ;AAClB,UAAI,MAAM,UAAU,iBAAiB,OAAW,gBAAe,OAAO,KAAK,CAAC,EAAE,EAAE;AAEhF,iBAAW,OAAO,MAAM;AACtB,gBAAQ,OAAO,IAAI,EAAE;AACrB,cAAM,KAAK,UAAU,GAAG;AACxB,aAAK,UAAU,IAAI,IAAI,KAAK;AAC5B,YAAI,UAAU,KAAK,WAAW,KAAK,EAAG,UAAS,KAAK,UAAU,KAAK,SAAS,CAAC;AAC7E,YAAI,SAAS,WAAW,MAAO;AAAA,MACjC;AACA,UAAI,MAAM,OAAQ,UAAS,OAAO,KAAK,KAAK,SAAS,CAAC,EAAG,EAAE;AAC3D,UAAI,KAAK,SAAS,cAAc,SAAS,WAAW,MAAO;AAAA,IAC7D;AAEA,UAAM,OAAO,MAAM,SAAS,eAAe,UAAU,MAAM,SAAY;AACvE,WAAO,EAAE,UAAU,QAAQ,OAAO,aAAa,MAAM,KAAK,IAAI,MAAM,OAAO;AAAA,EAC7E;AAAA,EAEA,MAAM,cAAc,WAA4B,KAAgC;AAC9E,QAAI,CAAC,IAAI,UAAU,IAAI,SAAS,KAAK;AACnC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,UAAM,WAAW,MAAM,QAAQ,IAAI,IAAI,IAAI,OAAO,OAAO;AACvD,YAAM,SAAS,KAAK,UAAU,IAAI,EAAE;AACpC,UAAI,OAAQ,QAAO;AACnB,YAAM,SAAS,mBAAmB,KAAK,UAAU,EAAE,kBAAkB,EAAE,YAAY,GAAG,EAAE,CAAC,CAAC;AAC1F,YAAM,OAAO,MAAM,KAAK,QAAQ,kDAAkD,MAAM,UAAU;AAClG,UAAI,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAC5C,cAAM,WAAW,OAAO,KAAK,CAAC,EAAE,EAAE;AAClC,aAAK,UAAU,IAAI,IAAI,QAAQ;AAC/B,eAAO;AAAA,MACT;AACA,UAAI,MAAM,QAAQ,IAAI,KAAK,KAAK,SAAS,GAAG;AAC1C,cAAM,IAAI,oBAAoB,KAAK,sBAAsB;AAAA,MAC3D;AACA,YAAM,kBAAkB,4BAA4B,EAAE;AACtD,UAAI,oBAAoB,OAAW,QAAO;AAC1C,YAAM,IAAI,oBAAoB,KAAK,mBAAmB;AAAA,IACxD,CAAC,CAAC;AACF,UAAM,aAAa,MAAM,KAAK,kBAAkB,UAAU,SAAS;AACnE,QAAI,CAAC,WAAW,OAAQ,QAAO;AAC/B,WAAO,KAAK,QAAQ,oBAAoB;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU,EAAE,WAAW,YAAY,YAAY,UAAU,MAAM,CAAC;AAAA,IAC7E,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,oBAAoB,KAAe,WAAoC;AAC3E,QAAI,CAAC,IAAI,UAAU,IAAI,SAAS,KAAK;AACnC,YAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AACA,UAAM,WAAW,IAAI,IAAI,CAAC,OAAO;AAC/B,UAAI,CAAC,QAAQ,KAAK,EAAE,EAAG,OAAM,IAAI,MAAM,oCAAoC;AAC3E,YAAM,QAAQ,OAAO,EAAE;AACvB,UAAI,QAAQ,oBAAqB,OAAM,IAAI,MAAM,wCAAwC;AACzF,aAAO,MAAM,SAAS;AAAA,IACxB,CAAC;AACD,UAAM,aAAa,MAAM,KAAK,kBAAkB,UAAU;AAAA,MACxD,WAAW;AAAA,MACX,OAAO;AAAA,IACT,CAAC;AACD,QAAI,CAAC,WAAW,OAAQ,QAAO;AAC/B,WAAO,KAAK,QAAQ,oBAAoB;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU,EAAE,WAAW,YAAY,YAAY,UAAU,CAAC;AAAA,IACvE,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,cACJ,YACA,UACgC;AAChC,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAAA,EAEA,MAAM,cACJ,YACA,aACA,aACA,UACgC;AAChC,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAAA,EAEA,MAAM,eACJ,YACA,aACA,aACA,QACA,QACA,cACgC;AAChC,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAAA,EAEA,MAAM,YAAY,YAAyD;AACzE,WAAO,EAAE,eAAe,aAAa,mBAAmB,OAAO,SAAS,MAAM,SAAS,MAAM,UAAU,MAAM,MAAM,KAAK;AAAA,EAC1H;AACF;;;AC3UO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACzC,YACW,QACA,MACA,WACA,SACT,UAAU,gCAAgC,IAAI,IAC9C;AACA,UAAM,OAAO;AANJ;AACA;AACA;AACA;AAAA,EAIX;AACF;AAEO,IAAM,kBAAN,MAA6C;AAAA,EAMlD,YAA6B,SAAiC;AAAjC;AAJ7B,SAAiB,kBAAkB,IAAI,gBAAgB;AACvD,SAAQ,SAAS;AAIf,UAAM,MAAM,IAAI,IAAI,QAAQ,OAAO;AACnC,UAAM,WAAW,IAAI,aAAa,eAAe,IAAI,aAAa,eAAe,IAAI,aAAa;AAClG,QAAI,IAAI,aAAa,YAAY,EAAE,IAAI,aAAa,WAAW,aAAa,CAAC,QAAQ,yBAAyB;AAC5G,YAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AACA,SAAK,YAAY,QAAQ,SAAS;AAAA,EACpC;AAAA,EACA,MAAM,WAAW,UAAiE,CAAC,GAAkB;AACnG,QAAI,QAAQ,SAAS,UAAW;AAChC,UAAM,KAAK,QAAQ,QAAW,WAAW,EAAE,eAAe,OAAO,QAAQ,QAAQ,OAAO,CAAC;AACzF,UAAM,SAAS,MAAM,KAAK,QAAQ,UAAU,cAAc,EAAE,QAAQ,QAAQ,OAAO,CAAC;AACpF,SAAK,qBAAqB,MAAM;AAAA,EAClC;AAAA,EAEQ,qBAAqB,QAAmB;AAC9C,UAAM,YAAY,QAAQ;AAC1B,QACE,CAAC,aACD,UAAU,cAAc,KAAK,QAAQ,UAAU,aAC/C,UAAU,UAAU,KAAK,QAAQ,UAAU,OAC3C;AACA,YAAM,IAAI,gBAAgB,KAAK,oBAAoB;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,MAAc,QAAQ,aAAsC,MAAc,UAA2H,CAAC,GAAiB;AACrN,QAAI,QAAQ,WAAW,UAAU,CAAC,QAAQ,kBAAmB,OAAM,KAAK,eAAe,QAAQ,MAAM;AACrG,QAAI,KAAK,OAAQ,OAAM,IAAI,gBAAgB,GAAG,cAAc;AAC5D,QAAI,QAAQ,QAAQ,QAAS,OAAM,IAAI,gBAAgB,GAAG,mBAAmB;AAC7E,UAAM,oBAAoB,IAAI,gBAAgB;AAC9C,UAAM,QAAQ,MAAM,kBAAkB,MAAM,KAAK,gBAAgB,OAAO,MAAM;AAC9E,UAAM,eAAe,MAAM,kBAAkB,MAAM,QAAQ,QAAQ,MAAM;AACzE,SAAK,gBAAgB,OAAO,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AAC3E,YAAQ,QAAQ,iBAAiB,SAAS,cAAc,EAAE,MAAM,KAAK,CAAC;AACtE,QAAI,WAAW;AACf,UAAM,UAAU,WAAW,MAAM;AAC/B,iBAAW;AACX,wBAAkB,MAAM,IAAI,MAAM,iBAAiB,CAAC;AAAA,IACtD,GAAG,KAAK,QAAQ,aAAa,GAAM;AACnC,YAAQ,QAAQ;AAChB,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,UAAU,GAAG,KAAK,QAAQ,QAAQ,QAAQ,OAAO,EAAE,CAAC,GAAG,IAAI,IAAI;AAAA,QACzF,QAAQ,QAAQ,UAAU;AAAA,QAAO,QAAQ,kBAAkB;AAAA,QAC3D,SAAS;AAAA,UACP,CAAC,eAAe,GAAG,KAAK,2BAA2B;AAAA,UACnD,GAAI,QAAQ,kBAAkB,QAAQ,CAAC,IAAI,EAAE,eAAe,UAAU,KAAK,QAAQ,KAAK,GAAG;AAAA,UAC3F,GAAI,KAAK,QAAQ,UAAU,WAAW,EAAE,2BAA2B,KAAK,QAAQ,UAAU,SAAS,IAAI,CAAC;AAAA,UACxG,GAAI,QAAQ,SAAS,SAAY,CAAC,IAAI,EAAE,gBAAgB,mBAAmB;AAAA,QAC7E;AAAA,QACA,MAAM,QAAQ,SAAS,SAAY,SAAY,KAAK,UAAU,QAAQ,IAAI;AAAA,MAC5E,CAAC;AACD,YAAM,YAAY,SAAS,QAAQ,IAAI,cAAc,KAAK;AAC1D,YAAM,iBAAiB,SAAS,QAAQ,IAAI,eAAe;AAC3D,YAAM,kBAAkB,SAAS,QAAQ,IAAI,yBAAyB;AACtE,YAAM,qBAAqB,iBAAiB,MAAM,GAAG,EAAE,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,EAAE,OAAO,OAAO,KAAK,CAAC;AACxG,YAAM,uBACJ,mBAAmB,QAAQ,oBAAoB,QAC/C,CAAE,4BAAkD,SAAS,cAAc,KAC3E,CAAC,mBAAmB,SAAS,cAAc,KAC3C,mBAAmB;AAErB,UAAI,eAAe,sBAAsB;AACvC,cAAM,IAAI,gBAAgB,KAAK,qBAAqB,WAAW;AAAA,UAC7D,UAAU;AAAA,UACV,UAAU;AAAA,UACV,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AACA,YAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,KAAK;AAC5D,YAAM,UAAU,YAAY,WAAW,kBAAkB,IACrD,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE,IACtC,MAAM,SAAS,KAAK;AACxB,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,WAAW,WAAW,OAAO,YAAY,WAAY,QAAgB,QAAQ;AACnF,cAAM,IAAI;AAAA,UACR,SAAS;AAAA,UACT,UAAU,QAAQ;AAAA,UAClB,UAAU,aAAa;AAAA,UACvB,UAAU,WAAW;AAAA,UACrB,UAAU,WAAW,gCAAgC,UAAU,QAAQ,gBAAgB;AAAA,QACzF;AAAA,MACF;AACA,UAAI,YAAa,MAAK,0BAA0B;AAChD,UAAI,CAAC,YAAa,QAAO;AACzB,aAAO,cAAc,aAAa,OAAO;AAAA,IAC3C,SAAS,OAAO;AACd,UAAI,iBAAiB,gBAAiB,OAAM;AAC5C,UAAI,iBAAiB,uBAAuB;AAC1C,cAAM,IAAI,gBAAgB,MAAM,QAAQ,MAAM,MAAM,QAAW;AAAA,UAC7D,WAAW,MAAM;AAAA,UACjB,QAAQ,MAAM;AAAA,QAChB,GAAG,MAAM,OAAO;AAAA,MAClB;AACA,UAAI,KAAK,OAAQ,OAAM,IAAI,gBAAgB,GAAG,cAAc;AAC5D,UAAI,QAAQ,QAAQ,QAAS,OAAM,IAAI,gBAAgB,GAAG,mBAAmB;AAC7E,UAAI,SAAU,OAAM,IAAI,gBAAgB,KAAK,iBAAiB;AAC9D,UAAI,iBAAiB,UAAU,MAAM,SAAS,kBAAkB,MAAM,SAAS,eAAe;AAC5F,cAAM,IAAI,gBAAgB,KAAK,iBAAiB;AAAA,MAClD;AACA,YAAM,IAAI,gBAAgB,GAAG,eAAe;AAAA,IAC9C,UAAE;AACA,mBAAa,OAAO;AACpB,WAAK,gBAAgB,OAAO,oBAAoB,SAAS,KAAK;AAC9D,cAAQ,QAAQ,oBAAoB,SAAS,YAAY;AAAA,IAC3D;AAAA,EACF;AAAA,EAEQ,eAAe,QAAuC;AAC5D,QAAI,KAAK,wBAAyB,QAAO,QAAQ,QAAQ,KAAK,uBAAuB;AACrF,QAAI,CAAC,KAAK,eAAe;AACvB,WAAK,gBAAgB,KAAK,QAAQ,UAAU,cAAc,EAAE,QAAQ,mBAAmB,KAAK,CAAC,EAC1F,KAAK,MAAM,KAAK,uBAAwB,EACxC,QAAQ,MAAM;AAAE,aAAK,gBAAgB;AAAA,MAAW,CAAC;AAAA,IACtD;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,eAAiC;AAAE,WAAO,KAAK,QAAQ,gBAAgB,kBAAkB;AAAA,EAAG;AAAA,EAE1F,gBAAgB,WAA4B,kBAAkB,MAAY;AAChF,UAAM,WAAW,KAAK,QAAQ;AAC9B,QACE,UAAU,cAAc,SAAS,aACjC,UAAU,UAAU,SAAS,SAC5B,mBAAmB,UAAU,aAAa,SAAS,UACpD;AACA,YAAM,IAAI,gBAAgB,KAAK,oBAAoB;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,SAAwD,UAAoC,CAAC,GAAiC;AAChJ,SAAK,gBAAgB,EAAE,WAAW,QAAQ,WAAW,OAAO,QAAQ,OAAO,GAAG,KAAK;AACnF,UAAM,KAAK,eAAe,QAAQ,MAAM;AACxC,UAAM,EAAE,WAAW,YAAY,QAAQ,SAAS,GAAG,MAAM,IAAI;AAC7D,WAAO,KAAK,QAAQ,mBAAmB,gBAAgB,EAAE,QAAQ,QAAQ,MAAM,OAAO,QAAQ,QAAQ,OAAO,CAAC;AAAA,EAChH;AAAA,EACA,MAAM,aAAa,WAA4B,QAAsB,CAAC,GAAG,UAAoC,CAAC,GAAyB;AACrI,SAAK,gBAAgB,SAAS;AAC9B,UAAM,eAAe;AACrB,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,aAAa,OAAQ,QAAO,IAAI,UAAU,aAAa,MAAM;AACjE,QAAI,aAAa,QAAS,QAAO,IAAI,WAAW,aAAa,OAAO;AACpE,QAAI,aAAa,aAAc,QAAO,IAAI,gBAAgB,aAAa,YAAY;AACnF,QAAI,aAAa,MAAO,QAAO,IAAI,SAAS,OAAO,aAAa,KAAK,CAAC;AACtE,QAAI,aAAa,eAAgB,QAAO,IAAI,kBAAkB,MAAM;AACpE,QAAI,aAAa,OAAQ,QAAO,IAAI,UAAU,aAAa,MAAM;AACjE,QAAI,aAAa,QAAS,QAAO,IAAI,WAAW,aAAa,OAAO;AACpE,QAAI,aAAa,MAAO,QAAO,IAAI,SAAS,aAAa,KAAK;AAC9D,QAAI,aAAa,SAAU,QAAO,IAAI,YAAY,aAAa,QAAQ;AACvE,QAAI,aAAa,OAAQ,QAAO,IAAI,UAAU,MAAM;AACpD,eAAW,QAAQ,aAAa,SAAS,CAAC,EAAG,QAAO,OAAO,QAAQ,IAAI;AACvE,WAAO,KAAK,QAAQ,WAAW,cAAc,OAAO,OAAO,IAAI,MAAM,KAAK,EAAE,IAAI,EAAE,QAAQ,QAAQ,OAAO,CAAC;AAAA,EAC5G;AAAA,EACA,MAAM,cAAc,WAA4B,KAAgC;AAC9E,SAAK,gBAAgB,WAAW,KAAK;AACrC,YAAQ,MAAM,KAAK,QAAQ,kBAAkB,gBAAgB,EAAE,QAAQ,QAAQ,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC,GAAG;AAAA,EAC/G;AAAA,EACA,MAAM,YAAY,WAAwD;AACxE,SAAK,gBAAgB,SAAS;AAC9B,UAAM,SAAS,MAAM,KAAK,QAAQ,UAAU,YAAY;AACxD,SAAK,qBAAqB,MAAM;AAChC,WAAO;AAAA,EACT;AAAA,EACA,MAAM,cAAc,WAA4B,SAAuD;AACrG,SAAK,gBAAgB,SAAS;AAC9B,YAAQ,MAAM,KAAK,QAAQ,kBAAkB,wBAAwB,EAAE,QAAQ,QAAQ,MAAM,QAAQ,CAAC,IAAI,YAAY;AAAA,EACxH;AAAA,EACA,MAAM,eAAe,WAA4B,QAAmD,CAAC,GAAG;AACtG,SAAK,gBAAgB,SAAS;AAAG,UAAM,SAAO,IAAI,gBAAgB;AAAG,QAAG,MAAM,OAAO,QAAO,IAAI,UAAS,MAAM,MAAM;AAAE,QAAG,MAAM,MAAM,QAAO,IAAI,SAAQ,OAAO,MAAM,KAAK,CAAC;AAAE,QAAG,MAAM,KAAK,QAAO,IAAI,QAAO,MAAM,IAAI;AAAE,QAAG,MAAM,UAAU,QAAO,IAAI,aAAY,MAAM,SAAS;AAAE,QAAG,MAAM,UAAU,QAAO,IAAI,aAAY,MAAM,SAAS;AAAE,eAAU,SAAS,MAAM,UAAQ,CAAC,EAAE,QAAO,OAAO,SAAQ,KAAK;AAAE,WAAO,KAAK,QAAQ,mBAAkB,iBAAiB,OAAO,OAAK,IAAI,MAAM,KAAG,EAAE,EAAE;AAAA,EACve;AAAA,EACA,MAAM,mBAAmB,WAA2B,IAAU,QAAqC,CAAC,GAAG;AAAE,SAAK,gBAAgB,SAAS;AAAE,UAAM,SAAO,IAAI,gBAAgB;AAAE,QAAG,MAAM,OAAO,QAAO,IAAI,UAAS,MAAM,MAAM;AAAE,QAAG,MAAM,MAAM,QAAO,IAAI,SAAQ,OAAO,MAAM,KAAK,CAAC;AAAE,WAAO,KAAK,QAAQ,wBAAuB,kBAAkB,EAAE,UAAU,OAAO,OAAK,IAAI,MAAM,KAAG,EAAE,EAAE;AAAA,EAAG;AAAA,EAC9X,MAAM,eAAe,WAA0B,IAAU;AAAC,SAAK,gBAAgB,SAAS;AAAE,YAAQ,MAAM,KAAK,QAAQ,mBAAkB,kBAAkB,EAAE,WAAU,EAAC,QAAO,QAAO,MAAK,CAAC,EAAC,CAAC,GAAG;AAAA,EAAS;AAAA,EACxM,MAAM,gBAAgB,WAA0B,IAAU;AAAC,SAAK,gBAAgB,SAAS;AAAE,YAAQ,MAAM,KAAK,QAAQ,oBAAmB,kBAAkB,EAAE,YAAW,EAAC,QAAO,QAAO,MAAK,CAAC,EAAC,CAAC,GAAG;AAAA,EAAS;AAAA,EAC3M,MAAM,cAAc,WAA4B,IAAY,OAAe,SAAiD;AAC1H,SAAK,gBAAgB,SAAS;AAC9B,QAAI;AACF,cAAQ,MAAM,KAAK,QAAQ,mBAAmB,kBAAkB,EAAE,WAAW,EAAE,QAAQ,QAAQ,MAAM,EAAE,YAAY,OAAO,QAAQ,EAAE,CAAC,GAAG;AAAA,IAC1I,SAAS,OAAO;AACd,UAAI,iBAAiB,mBAAmB,MAAM,WAAW,IAAK,QAAO;AACrE,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM,eAAe,WAA4B,IAAY,OAAe,OAAsC,OAAgB,cAAyF;AACzN,SAAK,gBAAgB,SAAS;AAC9B,UAAM,KAAK,eAAe;AAC1B,UAAM,SAAS,UAAU,UAAU,QAAQ;AAC3C,QAAI;AACF,YAAM,cAAc,WAAW,QAAQ,yBAAyB;AAChE,YAAM,WAAW,EAAE,YAAY,OAAO,OAAO,aAAa,UAAU,SAAS,SAAS,QAAQ;AAC9F,cAAQ,MAAM,KAAK,QAAQ,aAAa,kBAAkB,EAAE,IAAI,MAAM,IAAI,EAAE,QAAQ,QAAQ,MAAM,WAAW,QAAQ,EAAE,YAAY,MAAM,IAAI,SAAS,CAAC,GAAG;AAAA,IAC5J,SAAS,QAAQ;AACf,UAAI,kBAAkB,mBAAmB,OAAO,WAAW,IAAK,QAAO;AACvE,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM,UAAU,WAA4B,SAAiB,aAAsB,eAAyB,CAAC,GAA2B;AACtI,SAAK,gBAAgB,SAAS;AAC9B,WAAO,KAAK,QAAQ,aAAa,0BAA0B,EAAE,QAAQ,QAAQ,MAAM,EAAE,SAAS,aAAa,aAAa,EAAE,CAAC;AAAA,EAC7H;AAAA,EACA,MAAM,aAAa,WAAsD;AACvE,SAAK,gBAAgB,SAAS;AAC9B,YAAQ,MAAM,KAAK,QAAQ,YAAY,cAAc,GAAG;AAAA,EAC1D;AAAA,EACA,MAAM,QAAuB;AAC3B,QAAI,KAAK,OAAQ;AACjB,SAAK,SAAS;AACd,SAAK,gBAAgB,MAAM,IAAI,MAAM,cAAc,CAAC;AAAA,EACtD;AACF;","names":[]}
|